diff --git a/src/components/NewSelect.tsx b/src/components/NewSelect.tsx index 45dedb0..6243074 100644 --- a/src/components/NewSelect.tsx +++ b/src/components/NewSelect.tsx @@ -4,18 +4,25 @@ import ChevronUpIcon from "./icons/ChevronUpIcon"; import clsx from "clsx"; import CloseIcon from "./icons/CloseIcon"; import Button from "./Button"; +import CheckIcon from "./icons/CheckIcon"; +import { useClickAway } from "@uidotdev/usehooks"; function NewSelect({ data, isGrid, placeholder, + resetTitle, }: { data: T[]; isGrid: boolean; placeholder: string; + resetTitle: string; }) { const [selectedValues, setSelectedValues] = useState([]); const [isSelectVisible, setIsSelectVisible] = useState(false); + const selectRef = useClickAway(() => { + setIsSelectVisible(false); + }); const handleSelectClick = (item: T) => { const isItemSelected = selectedValues.some((val) => val.name === item.name); @@ -33,16 +40,11 @@ function NewSelect({ console.log(selectedValues); }, [selectedValues]); - return isGrid ? ( -
-
- {data.map((item) => ( -
{item.name}
- ))} -
-
- ) : ( -
+ return ( +
({ )} onClick={() => setIsSelectVisible(!isSelectVisible)} > -
+
{selectedValues.length > 0 ? selectedValues.map(({ name }) => name).join(", ") : placeholder}
@@ -73,33 +75,69 @@ function NewSelect({ )} >
-
+
-
- {data.map((item, index) => ( -
handleSelectClick(item)} - > - {item.name} +
+ {isGrid ? ( +
+ {data.map((item) => ( +
handleSelectClick(item)} + > +
+ {selectedValues + .map((value) => value.name) + .includes(item.name) && ( + +
+ +
+
+ )} +
+

{item.name}

+
+ ))}
- ))} + ) : ( + <> + {data.map((item, index) => ( +
handleSelectClick(item)} + > +
+ {selectedValues + .map((value) => value.name) + .includes(item.name) && ( + + + + )} +
+ {item.name} +
+ ))} + + )}
diff --git a/src/pages/DashboardPage.tsx b/src/pages/DashboardPage.tsx index 038ad86..d71bc5b 100644 --- a/src/pages/DashboardPage.tsx +++ b/src/pages/DashboardPage.tsx @@ -61,22 +61,43 @@ function DashboardPage() {
- +
+ + +
+

Последние сеансы