From f7a5aaf90e15446a65f1d92081cad0f96bca3c37 Mon Sep 17 00:00:00 2001 From: filantrop <filantrop83@gmail.com> Date: Wed, 7 Sep 2022 15:30:31 +0300 Subject: [PATCH] fix props in component --- src/components/MainSection.tsx | 105 +++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 src/components/MainSection.tsx diff --git a/src/components/MainSection.tsx b/src/components/MainSection.tsx new file mode 100644 index 0000000..3bc0ad1 --- /dev/null +++ b/src/components/MainSection.tsx @@ -0,0 +1,105 @@ +/* -------------------------------------------------------------------------- */ +/* Imports */ +/* -------------------------------------------------------------------------- */ +import classNames from "classnames"; +import React from "react"; +import Inputgroup from "./Inputgroup"; +import Select from "./Select"; +import { useState } from "react"; +import { Button } from "./Button/Button"; +import { SVGSearch } from "../components/icons"; +import SearchBar from "components/SearchBar"; + +type Props<T, H> = { + className?: string; + options: T[]; + hintsValues: H[]; + displayValueResolver?: (element: T) => any; +}; + +/* -------------------------------------------------------------------------- */ +/* Component implementation */ +/* -------------------------------------------------------------------------- */ + +export default function MainSection<T, H>({ + className, + options, + hintsValues, + displayValueResolver, + ...props +}: Props<T, H>) { + const [value, setValue] = useState(options[0]); // Category + + const [hints, setHints] = useState<any[]>([]); //Response list + const [onSelected, setOnSelected] = useState(""); // Selected item from response list + const [query, setQuery] = useState(""); // Query + + const onChange = (query: string) => { + //console.log(query) + setQuery(query); + setHints(hintsValues); + }; + const onClick = () => { + console.log(displayValueResolver ? displayValueResolver(value) : value); + console.log(onSelected); + console.log(query); + }; + const searchResolver = (item: any) => { + setOnSelected(item.caption); + console.log(onSelected); + }; + //empty items message + const IsEmptyItems = () => { + return <p className="tex-blue-500">Nothing Found</p>; + }; + + return ( + <div className="bg-main bg-center bg-cover bg-origin-border bg-no-repeat h-full py-32 px-2 sm:px-6 md:px-6 lg:px-0"> + <div className="m-auto text-center font-bold text-4xl "> + Scientific Library with Free Access + </div> + <div className="flex flex-row items-center justify-center space-x-3 pt-2"> + <div className=" text-2xl text-gray-400">Search</div> + <div className=" text-3xl text-blue-500">320 455</div> + <div className=" text-2xl text-gray-400">Items</div> + </div> + <div className="max-w-xl m-auto pt-16"> + <Inputgroup className="m-0 p-0"> + <div className="flex items-center w-full divide-x-2 divide-solid divide-gray-200"> + <div className="flex w-1/3"> + <Select + inGroup={true} + className="w-full top-0" + options={options} + value={value} + onChange={setValue} + displayValueResolver={(value: any) => value?.name ?? ""} + /> + </div> + <div className="w-full"> + <SearchBar + className="w-full" + hints={hints} + onChange={onChange} + onSelected={searchResolver} + inGroup={true} + IsEmptyItems={IsEmptyItems} + displayValueResolver={(value: any) => value.caption} + /> + </div> + </div> + <div className="pr-0.5"> + <Button onClick={onClick}> + <Button.Icon> + <SVGSearch className="fill-white stroke-white w-4 "></SVGSearch> + </Button.Icon> + </Button> + </div> + </Inputgroup> + <div className="mt-7 pr-1 text-right font-semibold text-sm"> + Advanced Search + </div> + </div> + </div> + ); +}