reza added SCH

master
Reza_ashrafi 3 years ago
parent d3c7962a15
commit 0b27064f81
  1. 6
      src/components/Checkbox/index.js
  2. 2
      src/components/Search/index.js
  3. 31
      src/components/SidebarCategoryHover/Col.js
  4. 125
      src/components/SidebarCategoryHover/data.js
  5. 46
      src/components/SidebarCategoryHover/index.js
  6. 122
      src/components/SidebarCategoryHover/list.js

@ -8,9 +8,9 @@ export default function Checkbox(props) {
<symbol id="check" viewBox="0 0 12 10"> <symbol id="check" viewBox="0 0 12 10">
<polyline <polyline
points="1.5 6 4.5 9 10.5 1" points="1.5 6 4.5 9 10.5 1"
stroke-linecap="round" strokeLinecap="round"
stroke-linejoin="round" strokeLinejoin="round"
stroke-width="2" strokeWidth="2"
></polyline> ></polyline>
</symbol> </symbol>
</svg> </svg>

@ -23,7 +23,7 @@ export default function Search(props) {
name="q" name="q"
className="w-full py-2 text-sm text-white border rounded-sm pr-5 outline-none focus:ring-1 focus:text-gray-900" className="w-full py-2 text-sm text-white border rounded-sm pr-5 outline-none focus:ring-1 focus:text-gray-900"
placeholder={_.join([langDetector(props.lang , "جستجو...", "Search...")], " ")} placeholder={_.join([langDetector(props.lang , "جستجو...", "Search...")], " ")}
autocomplete="off" autoComplete="off"
/> />
</div> </div>
</div> </div>

@ -1,9 +1,28 @@
import React from 'react' import React from "react";
export default function Col() { export default function Col({ data, colLength }) {
const length = data?.length;
return ( return (
<div> <li className="h-full w-40 flex flex-col px-2">
{data?.map((product, i) => (
</div> <>
) <li
className="flex items-center text-right w-full cursor-pointer text-md"
style={{ minHeight: `calc(100% / ${colLength})` }}
>
{product.name}
</li>
{product.list.map((item1, i) => (
<li
key={i}
className="w-full text-normal justify-center cursor-pointer flex items-center text-sm font-normal text-gray-400 hover:bg-blue-50"
style={{ minHeight: "calc(100% / 9)" }}
>
{item1.name}
</li>
))}
</>
))}
</li>
);
} }

@ -1,7 +1,7 @@
const category = [ const category = [
{ {
name: "کالای دیجیتال", name: "کالای دیجیتال",
id : 0, id: 0,
categories: [ categories: [
{ {
name: "سخت افزار کامپیوتر", name: "سخت افزار کامپیوتر",
@ -60,6 +60,9 @@ const category = [
{ {
name: "زیر لینک آزمایشی", name: "زیر لینک آزمایشی",
}, },
{
name: "زیر لینک آزمایشی",
},
], ],
}, },
{ {
@ -93,12 +96,6 @@ const category = [
{ {
name: "زیر لینک آزمایشی", name: "زیر لینک آزمایشی",
}, },
{
name: "زیر لینک آزمایشی",
},
{
name: "زیر لینک آزمایشی",
},
], ],
}, },
{ {
@ -169,7 +166,7 @@ const category = [
}, },
{ {
name: "کالای دیجیتالوسایل آشپزخانه", name: "کالای دیجیتالوسایل آشپزخانه",
id : 1, id: 1,
categories: [ categories: [
{ {
name: "سخت افزار کامپیوتر", name: "سخت افزار کامپیوتر",
@ -186,6 +183,9 @@ const category = [
{ {
name: "زیر لینک آزمایشی", name: "زیر لینک آزمایشی",
}, },
{
name: "زیر لینک آزمایشی",
},
], ],
}, },
{ {
@ -225,6 +225,9 @@ const category = [
{ {
name: "زیر لینک آزمایشی", name: "زیر لینک آزمایشی",
}, },
{
name: "زیر لینک آزمایشی",
},
], ],
}, },
{ {
@ -258,12 +261,6 @@ const category = [
{ {
name: "زیر لینک آزمایشی", name: "زیر لینک آزمایشی",
}, },
{
name: "زیر لینک آزمایشی",
},
{
name: "زیر لینک آزمایشی",
},
], ],
}, },
{ {
@ -334,7 +331,7 @@ const category = [
}, },
{ {
name: "ماشین و موتور سیکلت", name: "ماشین و موتور سیکلت",
id : 2, id: 2,
categories: [ categories: [
{ {
name: "سخت افزار کامپیوتر", name: "سخت افزار کامپیوتر",
@ -351,6 +348,9 @@ const category = [
{ {
name: "زیر لینک آزمایشی", name: "زیر لینک آزمایشی",
}, },
{
name: "زیر لینک آزمایشی",
},
], ],
}, },
{ {
@ -390,6 +390,9 @@ const category = [
{ {
name: "زیر لینک آزمایشی", name: "زیر لینک آزمایشی",
}, },
{
name: "زیر لینک آزمایشی",
},
], ],
}, },
{ {
@ -423,12 +426,6 @@ const category = [
{ {
name: "زیر لینک آزمایشی", name: "زیر لینک آزمایشی",
}, },
{
name: "زیر لینک آزمایشی",
},
{
name: "زیر لینک آزمایشی",
},
], ],
}, },
{ {
@ -499,7 +496,7 @@ const category = [
}, },
{ {
name: "اتاق خواب", name: "اتاق خواب",
id : 3, id: 3,
categories: [ categories: [
{ {
name: "سخت افزار کامپیوتر", name: "سخت افزار کامپیوتر",
@ -516,6 +513,9 @@ const category = [
{ {
name: "زیر لینک آزمایشی", name: "زیر لینک آزمایشی",
}, },
{
name: "زیر لینک آزمایشی",
},
], ],
}, },
{ {
@ -555,6 +555,9 @@ const category = [
{ {
name: "زیر لینک آزمایشی", name: "زیر لینک آزمایشی",
}, },
{
name: "زیر لینک آزمایشی",
},
], ],
}, },
{ {
@ -588,12 +591,6 @@ const category = [
{ {
name: "زیر لینک آزمایشی", name: "زیر لینک آزمایشی",
}, },
{
name: "زیر لینک آزمایشی",
},
{
name: "زیر لینک آزمایشی",
},
], ],
}, },
{ {
@ -664,7 +661,7 @@ const category = [
}, },
{ {
name: "دکوراسیون و چیدمان", name: "دکوراسیون و چیدمان",
id : 4, id: 4,
categories: [ categories: [
{ {
name: "سخت افزار کامپیوتر", name: "سخت افزار کامپیوتر",
@ -681,6 +678,9 @@ const category = [
{ {
name: "زیر لینک آزمایشی", name: "زیر لینک آزمایشی",
}, },
{
name: "زیر لینک آزمایشی",
},
], ],
}, },
{ {
@ -720,6 +720,9 @@ const category = [
{ {
name: "زیر لینک آزمایشی", name: "زیر لینک آزمایشی",
}, },
{
name: "زیر لینک آزمایشی",
},
], ],
}, },
{ {
@ -753,12 +756,6 @@ const category = [
{ {
name: "زیر لینک آزمایشی", name: "زیر لینک آزمایشی",
}, },
{
name: "زیر لینک آزمایشی",
},
{
name: "زیر لینک آزمایشی",
},
], ],
}, },
{ {
@ -829,7 +826,7 @@ const category = [
}, },
{ {
name: "وسایل بهداشت شخصی", name: "وسایل بهداشت شخصی",
id : 5, id: 5,
categories: [ categories: [
{ {
name: "سخت افزار کامپیوتر", name: "سخت افزار کامپیوتر",
@ -846,6 +843,9 @@ const category = [
{ {
name: "زیر لینک آزمایشی", name: "زیر لینک آزمایشی",
}, },
{
name: "زیر لینک آزمایشی",
},
], ],
}, },
{ {
@ -885,6 +885,9 @@ const category = [
{ {
name: "زیر لینک آزمایشی", name: "زیر لینک آزمایشی",
}, },
{
name: "زیر لینک آزمایشی",
},
], ],
}, },
{ {
@ -918,12 +921,6 @@ const category = [
{ {
name: "زیر لینک آزمایشی", name: "زیر لینک آزمایشی",
}, },
{
name: "زیر لینک آزمایشی",
},
{
name: "زیر لینک آزمایشی",
},
], ],
}, },
{ {
@ -994,7 +991,7 @@ const category = [
}, },
{ {
name: "وسایل بهداشت شخصدارو و تقویتی", name: "وسایل بهداشت شخصدارو و تقویتی",
id : 6, id: 6,
categories: [ categories: [
{ {
name: "سخت افزار کامپیوتر", name: "سخت افزار کامپیوتر",
@ -1011,6 +1008,9 @@ const category = [
{ {
name: "زیر لینک آزمایشی", name: "زیر لینک آزمایشی",
}, },
{
name: "زیر لینک آزمایشی",
},
], ],
}, },
{ {
@ -1050,6 +1050,9 @@ const category = [
{ {
name: "زیر لینک آزمایشی", name: "زیر لینک آزمایشی",
}, },
{
name: "زیر لینک آزمایشی",
},
], ],
}, },
{ {
@ -1083,12 +1086,6 @@ const category = [
{ {
name: "زیر لینک آزمایشی", name: "زیر لینک آزمایشی",
}, },
{
name: "زیر لینک آزمایشی",
},
{
name: "زیر لینک آزمایشی",
},
], ],
}, },
{ {
@ -1159,7 +1156,7 @@ const category = [
}, },
{ {
name: "موبایل و تبلت", name: "موبایل و تبلت",
id : 7, id: 7,
categories: [ categories: [
{ {
name: "سخت افزار کامپیوتر", name: "سخت افزار کامپیوتر",
@ -1176,6 +1173,9 @@ const category = [
{ {
name: "زیر لینک آزمایشی", name: "زیر لینک آزمایشی",
}, },
{
name: "زیر لینک آزمایشی",
},
], ],
}, },
{ {
@ -1215,6 +1215,9 @@ const category = [
{ {
name: "زیر لینک آزمایشی", name: "زیر لینک آزمایشی",
}, },
{
name: "زیر لینک آزمایشی",
},
], ],
}, },
{ {
@ -1248,12 +1251,6 @@ const category = [
{ {
name: "زیر لینک آزمایشی", name: "زیر لینک آزمایشی",
}, },
{
name: "زیر لینک آزمایشی",
},
{
name: "زیر لینک آزمایشی",
},
], ],
}, },
{ {
@ -1324,7 +1321,7 @@ const category = [
}, },
{ {
name: "هارد و ذخیره سازی", name: "هارد و ذخیره سازی",
id : 8, id: 8,
categories: [ categories: [
{ {
name: "سخت افزار کامپیوتر", name: "سخت افزار کامپیوتر",
@ -1341,6 +1338,9 @@ const category = [
{ {
name: "زیر لینک آزمایشی", name: "زیر لینک آزمایشی",
}, },
{
name: "زیر لینک آزمایشی",
},
], ],
}, },
{ {
@ -1380,6 +1380,9 @@ const category = [
{ {
name: "زیر لینک آزمایشی", name: "زیر لینک آزمایشی",
}, },
{
name: "زیر لینک آزمایشی",
},
], ],
}, },
{ {
@ -1413,12 +1416,6 @@ const category = [
{ {
name: "زیر لینک آزمایشی", name: "زیر لینک آزمایشی",
}, },
{
name: "زیر لینک آزمایشی",
},
{
name: "زیر لینک آزمایشی",
},
], ],
}, },
{ {

@ -1,5 +1,6 @@
import React, { useState } from "react"; import React, { useState } from "react";
import category from "./data"; import category from "./data";
import List from "./list";
import _ from "lodash"; import _ from "lodash";
export default function SidebarCategoryHover() { export default function SidebarCategoryHover() {
@ -8,7 +9,10 @@ export default function SidebarCategoryHover() {
const arrayLength = category.length; const arrayLength = category.length;
return ( return (
<div className="flex flex-col w-60 relative" onMouseOut={() => setActiveItem(null)}> <div
className="flex flex-col w-60 relative"
onMouseOut={() => setActiveItem(null)}
>
<ul className="list-none w-full divide-y border divide-gray-200"> <ul className="list-none w-full divide-y border divide-gray-200">
{category.map((item, i) => ( {category.map((item, i) => (
<> <>
@ -19,45 +23,7 @@ export default function SidebarCategoryHover() {
> >
{item.name} {item.name}
</li> </li>
<ul <List activeItem={activeItem} item={item} setActiveItem={setActiveItem} colLength={9} />
className={_.join(
[
"absolute right-60 top-0 h-full border flex-row divide-x divide-gray-200",
activeItem === item.id ? "flex" : "hidden",
],
" "
)}
onMouseOver={() => setActiveItem(item.id)}
// style={{width : 1000}}
>
<li className="h-full w-52 bg-red-50 flex flex-col text-right">
<li className="flex items-center" style={{ minHeight: "calc(100% / 9)" }}>
{item.categories[0].name}
</li>
{item.categories[0].list.map((item1, i) => (
<li
key={i}
className="text-normal flex text-sm items-center"
style={{ minHeight: "calc(100% / 9)" }}
>
{item1.name}
</li>
))}
<li className="flex items-center" style={{ minHeight: "calc(100% / 9)" }}>
{item.categories[1].name}
</li>
{item.categories[1].list.map((item1, i) => (
<li key={i} className="flex items-center" style={{ minHeight: "calc(100% / 9)" }}>
{item1.name}
</li>
))}
</li>
<li className="h-full w-52 bg-green-50"></li>
<li className="h-full w-52 bg-blue-50"></li>
<li className="h-full w-52 bg-red-50"></li>
<li className="h-full w-52 bg-green-50"></li>
<li className="h-full w-52 bg-blue-50"></li>
</ul>
</> </>
))} ))}
</ul> </ul>

@ -0,0 +1,122 @@
import React, { useState, useEffect } from "react";
import _, { set } from "lodash";
import Col from "./col";
export default function List({ activeItem, item, setActiveItem, colLength }) {
const [cols, setCols] = useState(null);
const [disable, setDisable] = useState(false);
useEffect(() => {
let vCols = {
col1: [],
col2: [],
col3: [],
col4: [],
col5: [],
col6: [],
};
let index = 1;
for (let category of item.categories) {
if (index === 1) {
let col1 = vCols.col1;
let col1Length = col1.length;
col1.forEach((colsItem) => {
col1Length = col1Length + colsItem.list.length;
});
if (col1Length === colLength) {
index = 2;
} else {
col1 = [...col1, category];
vCols = { ...vCols, col1: col1 };
}
}
if (index === 2) {
let col2 = vCols.col2;
let col2Length = col2.length;
col2.forEach((colsItem) => {
col2Length = col2Length + colsItem.list.length;
});
if (col2Length === colLength) {
index = 3;
} else {
col2 = [...col2, category];
vCols = { ...vCols, col2: col2 };
}
}
if (index === 3) {
let col3 = vCols.col3;
let col3Length = col3.length;
col3.forEach((colsItem) => {
col3Length = col3Length + colsItem.list.length;
});
if (col3Length === colLength) {
index = 4;
} else {
col3 = [...col3, category];
vCols = { ...vCols, col3: col3 };
}
}
if (index === 4) {
let col4 = vCols.col4;
let col4Length = col4.length;
col4.forEach((colsItem) => {
col4Length = col4Length + colsItem.list.length;
});
if (col4Length === colLength) {
index = 5;
} else {
col4 = [...col4, category];
vCols = { ...vCols, col4: col4 };
}
}
if (index === 5) {
let col5 = vCols.col5;
let col5Length = col5.length;
col5.forEach((colsItem) => {
col5Length = col5Length + colsItem.list.length;
});
if (col5Length === colLength) {
index = 6;
} else {
col5 = [...col5, category];
vCols = { ...vCols, col5: col5 };
}
}
if (index === 6) {
let col6 = vCols.col6;
let col6Length = col6.length;
col6.forEach((colsItem) => {
col6Length = col6Length + colsItem.list.length;
});
if (col6Length === colLength) {
index = 7;
} else {
col6 = [...col6, category];
vCols = { ...vCols, col6: col6 };
}
} else {
setCols(() => vCols);
}
}
}, []);
return (
<ul
className={_.join(
[
"absolute right-60 top-0 h-full border flex-row",
activeItem === item.id ? "flex" : "hidden",
],
" "
)}
onMouseOver={() => setActiveItem(item.id)}
>
{cols?.col1.length > 0 && <Col data={cols?.col1} colLength={colLength} />}
{cols?.col2.length > 0 && <Col data={cols?.col2} colLength={colLength} />}
{cols?.col3.length > 0 && <Col data={cols?.col3} colLength={colLength} />}
{cols?.col4.length > 0 && <Col data={cols?.col4} colLength={colLength} />}
{cols?.col5.length > 0 && <Col data={cols?.col5} colLength={colLength} />}
{cols?.col6.length > 0 && <Col data={cols?.col6} colLength={colLength} />}
</ul>
);
}
Loading…
Cancel
Save