From 737fa915c4c2a1d532d1bbb179a51647ceabc707 Mon Sep 17 00:00:00 2001 From: indaviande Date: Mon, 9 Dec 2024 17:39:51 +0100 Subject: [PATCH] fix lint --- src/components/extenders/Select.tsx | 103 ++++++++++------------------ 1 file changed, 35 insertions(+), 68 deletions(-) diff --git a/src/components/extenders/Select.tsx b/src/components/extenders/Select.tsx index 62d8ed109..8c0b0fdd3 100644 --- a/src/components/extenders/Select.tsx +++ b/src/components/extenders/Select.tsx @@ -17,8 +17,7 @@ export const selectStyles = tv({ "text-main-11 rounded-sm flex items-center dim focus-visible:outline-main-12 !leading-none justify-between text-nowrap font-text font-semibold", ], slots: { - dropdown: - "outline-0 z-50 origin-top animate-drop animate-stretch mt-sm min-w-[var(--popover-anchor-width)]", + dropdown: "outline-0 z-50 origin-top animate-drop animate-stretch mt-sm min-w-[var(--popover-anchor-width)]", item: "rounded-sm flex justify-between items-center gap-lg cursor-pointer select-none p-sm outline-offset-0 outline-0 text-nowrap focus-visible:outline-main-12", icon: "flex items-center", value: "flex gap-sm items-center", @@ -138,14 +137,12 @@ export type SelectProps = Component<{ }> & RadixSelect.SelectProps; -type MaybeArray = IsArray extends true - ? T[] - : T; +type MaybeArray = IsArray extends true ? T[] : T; export default function Select< T extends string | number, Multiple extends undefined | boolean, - Value extends MaybeArray + Value extends MaybeArray, >({ look, size, @@ -177,45 +174,35 @@ export default function Select< }); const value = useMemo(() => getter ?? internal, [getter, internal]); - const setValue = useCallback( - (v: Value) => setter?.(v) ?? setInternal(v), - [setter] - ); + const setValue = useCallback((v: Value) => setter?.(v) ?? setInternal(v), [setter]); const [searchInput, setSearch] = useState(); const matches = useMemo(() => { if (!search) return Object.keys(options ?? {}); // const textToMatch = Object.keys(options ?? {}).map(option => `${option}_${options[option]?.props?.children?.filter(a => typeof a !== "object").join(" ")}`) - const textToMatch = Object.keys(options ?? {}).reduce((matches, option) => { - const opt = options?.[option]; - const key = - typeof opt === "string" - ? opt - : ( - options?.[option] as Exclude< - ReactNode, - string | number | boolean | Iterable - > - )?.props?.children - ?.filter?.((a: unknown) => typeof a !== "object") - ?.join(" "); + const textToMatch = Object.keys(options ?? {}).reduce( + (matches, option) => { + const opt = options?.[option]; + const key = + typeof opt === "string" + ? opt + : ( + options?.[option] as Exclude> + )?.props?.children + ?.filter?.((a: unknown) => typeof a !== "object") + ?.join(" "); - return Object.assign( - matches, - { [`${option}`]: option }, - { [`${key}`]: option } - ); - }, {} as { [key: string]: keyof typeof options }); - const searchMatches = matchSorter( - Object.keys(textToMatch), - searchInput ?? "" - ).map((key) => textToMatch[key]); + return Object.assign(matches, { [`${option}`]: option }, { [`${key}`]: option }); + }, + {} as { [key: string]: keyof typeof options }, + ); + const searchMatches = matchSorter(Object.keys(textToMatch), searchInput ?? "").map(key => textToMatch[key]); const uniqueOptionMatches = Array.from( searchMatches.reduce((set, option) => { set.add(option); return set; - }, new Set()) + }, new Set()), ) as (typeof value)[]; return uniqueOptionMatches; @@ -224,9 +211,7 @@ export default function Select< const label = useMemo(() => { if ( value && - (typeof value === "number" || - typeof value === "string" || - typeof value === "symbol") && + (typeof value === "number" || typeof value === "string" || typeof value === "symbol") && options?.[value] ) return options?.[value]; @@ -236,9 +221,8 @@ export default function Select< + "w-[1.2em] h-[1.2em] flex items-center justify-center rounded-full bg-main-6 text-main-12", + )}> {value.length} {" "} {placeholder} @@ -250,23 +234,17 @@ export default function Select< return ( { + setValue={value => { setSearch(value); - }} - > + }}> setValue(v as Value)} + setValue={v => setValue(v as Value)} value={value as string} - defaultValue={multiple ? [] : undefined} - > + defaultValue={multiple ? [] : undefined}>
{label}
- {loading ? ( - - ) : ( - - )} + {loading ? : }
@@ -276,11 +254,7 @@ export default function Select< )} @@ -289,8 +263,8 @@ export default function Select< {allOption && !searchInput && ( + // biome-ignore lint/suspicious/noExplicitAny: template makes this typing difficult even tough it works setValue((!!multiple ? [] : undefined) as any as Value) } render={ @@ -303,11 +277,7 @@ export default function Select< key="select" className={mergeClass( check(), - !( - (typeof value === "object" && - value?.length > 0) || - value === undefined - ) && "opacity-0" + !((typeof value === "object" && value?.length > 0) || value === undefined) && "opacity-0", )} size="sm" remix="RiCheckFill" @@ -317,7 +287,7 @@ export default function Select< } /> )} - {matches?.map((_value) => ( + {matches?.map(_value => (