From c29361f16a56fe9a6fedee5fdd7ac2762455e202 Mon Sep 17 00:00:00 2001 From: admin Date: Tue, 3 Sep 2024 19:43:37 +0300 Subject: [PATCH] feat: product select --- src/components/ProductSelect/ProductSelect.tsx | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/components/ProductSelect/ProductSelect.tsx b/src/components/ProductSelect/ProductSelect.tsx index cb78eda..5fce96c 100644 --- a/src/components/ProductSelect/ProductSelect.tsx +++ b/src/components/ProductSelect/ProductSelect.tsx @@ -3,15 +3,16 @@ import {FC} from "react"; import useProductsList from "../../pages/ProductsPage/hooks/useProductsList.tsx"; import {omit} from "lodash"; import ObjectSelect, {ObjectSelectProps} from "../ObjectSelect/ObjectSelect.tsx"; -import {ComboboxItem, OptionsFilter, SelectProps, Text, Tooltip, Image, rem} from "@mantine/core"; +import {ComboboxItem, Image, Loader, OptionsFilter, rem, SelectProps, Text, Tooltip} from "@mantine/core"; import {getProductFields} from "../../types/utils.ts"; type RestProps = { clientId: number; } +const MAX_PRODUCTS = 200; type Props = Omit, 'data'> & RestProps; const ProductSelect: FC = (props: Props) => { - const {products} = useProductsList({ + const {products, isLoading} = useProductsList({ clientId: props.clientId, searchInput: "" }); @@ -62,11 +63,17 @@ const ProductSelect: FC = (props: Props) => { ); filtered.sort((a, b) => a.label.localeCompare(b.label)); - return filtered; + + return filtered.length > MAX_PRODUCTS ? filtered.slice(0, MAX_PRODUCTS) : filtered; }; return ( 500 ? 500 : Infinity} + disabled={isLoading} + rightSection={ + isLoading ? + : null + } + limit={products.length > MAX_PRODUCTS ? MAX_PRODUCTS : Infinity} renderOption={renderOption} searchable {...restProps}