@activecollab/components 2.0.322 → 2.0.324

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"Autocomplete.js","names":["React","useCallback","useState","useMemo","useEffect","useRef","useVirtualizer","handleKeyboardMovement","StyledAutocompleteBody","StyledAutocompleteNewItem","StyledAutocompleteScrollShadow","highlightText","Option","StyledOption","OptionGroup","isOptionGroup","item","options","undefined","collectLeafIds","opts","reduce","acc","opt","map","o","id","insertAmongSameState","list","isChecked","checked","index","findIndex","name","localeCompare","i","length","slice","reconcileFlat","prev","next","frozen","nextById","Map","base","filter","has","get","toPlace","reconcileOrder","every","prevGroupById","group","_prevGroupById$get$op","_prevGroupById$get","_extends","Autocomplete","_ref","type","_ref$options","optionsProp","inputEl","_ref$selected","selected","emptyValue","noResultText","_ref$renderOption","renderOption","option","defaultValue","_ref$sortDirection","sortDirection","handleChange","optionClassName","handleEmptyAction","disabledInternalSort","AutocompleteClassName","handleDefaultOptionChange","preselectDefaultValue","_ref$keepSameOptionsO","keepSameOptionsOrder","_ref$autoHeightMax","autoHeightMax","clearInputOnSelect","_ref$mixedOptions","mixedOptions","filterCriteria","disableVirtualization","listContainerRef","itemRef","Boolean","selectedOptions","Array","isArray","frozenRef","Set","handleSort","_opts$","isGrouped","sortOptions","a","b","aSelected","includes","bSelected","aMixed","bMixed","sort","sortList","_options$","alphaSort","sortedOptions","_useState","sortedList","setSortedList","isInitialSortRef","selectedKey","join","current","nextFrozen","forEach","add","_useState2","by","hover","setHover","_useState3","setFilter","handleEmpty","e","button","_inputEl$current","focus","onAddNewMouseEnter","showAddNew","trim","v","toLowerCase","filterOptions","trimmedFilter","matchesFilter","hidden","nameMatch","hovered","groupedOption","filteredOptions","showDefaultOption","flatOptions","showNoResultCondition","virtualItems","items","push","shouldUseVirtualization","rowVirtualizer","count","getScrollElement","estimateSize","overscan","gap","handleInputChange","target","key","value","handleHoverCallback","toggleSelected","result","_id","dispatchEvent","Event","bubbles","handleMouseEnter","handleClick","preventDefault","handleRenderOption","createElement","tooltip","renderOptions","onChange","ref","onMouseEnter","onClick","className","handleOnMouseLeave","scrollToIndex","align","handleOnKeyDown","listenerTarget","addEventListener","removeEventListener","isDefaultOptionSelected","renderVirtualItem","virtualItem","String","_StyledStyledOption","onMouseDown","$isHidden","_ref2","onScroll","onMouseLeave","style","height","Math","min","getTotalSize","overflow","width","position","getVirtualItems","virtualRow","top","left","transform","start","Fragment","displayName","_styled","withConfig","componentId"],"sources":["../../../../src/components/Autocomplete/Autocomplete.tsx"],"sourcesContent":["import React, {\n type FC,\n useCallback,\n useState,\n useMemo,\n useEffect,\n useRef,\n type ReactNode,\n type ReactElement,\n type MutableRefObject,\n} from \"react\";\n\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\n\nimport { handleKeyboardMovement } from \"./HandleKeyboard\";\nimport {\n StyledAutocompleteBody,\n StyledAutocompleteNewItem,\n StyledAutocompleteScrollShadow,\n} from \"./Styles\";\nimport highlightText from \"../../hooks/useHighlightText\";\nimport { type IOptionItemProps, Option } from \"../Select/Option\";\nimport { StyledOption } from \"../Select/Option/Styles\";\nimport { type IOptionGroupProps, OptionGroup } from \"../Select/OptionGroup\";\n\nexport function isOptionGroup(\n item: IOptionGroupProps | IOptionItemProps\n): item is IOptionGroupProps {\n return (item as IOptionGroupProps).options !== undefined;\n}\n\nconst collectLeafIds = (\n opts: (IOptionGroupProps | IOptionItemProps)[]\n): (string | number)[] =>\n opts.reduce<(string | number)[]>(\n (acc, opt) =>\n isOptionGroup(opt)\n ? [...acc, ...opt.options.map((o) => o.id)]\n : [...acc, opt.id],\n []\n );\n\n// Inserts an option at its alphabetical position among the options that share\n// its checked state (checked items live at the top, so a checked option lands\n// among the checked ones, sorted).\nconst insertAmongSameState = (\n list: IOptionItemProps[],\n item: IOptionItemProps,\n isChecked: (id: string | number) => boolean\n): IOptionItemProps[] => {\n const checked = isChecked(item.id);\n let index = list.findIndex(\n (o) => isChecked(o.id) === checked && o.name.localeCompare(item.name) > 0\n );\n if (index === -1) {\n index = checked\n ? list.reduce((acc, o, i) => (isChecked(o.id) ? i + 1 : acc), 0)\n : list.length;\n }\n return [...list.slice(0, index), item, ...list.slice(index)];\n};\n\n// Frozen options keep their order (checking/unchecking never moves them).\n// Options that aren't frozen yet are slotted in among the checked items,\n// alphabetically — that's how a freshly added option finds its place.\nconst reconcileFlat = (\n prev: IOptionItemProps[],\n next: IOptionItemProps[],\n frozen: Set<string | number>,\n isChecked: (id: string | number) => boolean\n): IOptionItemProps[] => {\n const nextById = new Map(next.map((o) => [o.id, o]));\n const base = prev\n .filter((o) => frozen.has(o.id) && nextById.has(o.id))\n .map((o) => nextById.get(o.id) as IOptionItemProps);\n const toPlace = next.filter((o) => !frozen.has(o.id));\n\n return toPlace.reduce(\n (acc, item) => insertAmongSameState(acc, item, isChecked),\n base\n );\n};\n\nconst reconcileOrder = (\n prev: (IOptionGroupProps | IOptionItemProps)[],\n next: (IOptionGroupProps | IOptionItemProps)[],\n frozen: Set<string | number>,\n isChecked: (id: string | number) => boolean\n): (IOptionGroupProps | IOptionItemProps)[] => {\n if (!next.every(isOptionGroup) || !prev.every(isOptionGroup)) {\n return reconcileFlat(\n prev as IOptionItemProps[],\n next as IOptionItemProps[],\n frozen,\n isChecked\n );\n }\n\n const prevGroupById = new Map(prev.map((group) => [group.id, group]));\n\n return next.map((group) => ({\n ...group,\n options: reconcileFlat(\n prevGroupById.get(group.id)?.options ?? [],\n group.options,\n frozen,\n isChecked\n ),\n }));\n};\n\nexport interface IAutocompleteProps {\n /** Select type: single or multiple */\n type?: \"single\" | \"multiple\";\n /** List of options or group options */\n options?: (IOptionGroupProps | IOptionItemProps)[];\n /** Selected values */\n selected?: (string | number)[] | string | number;\n /** Mixed options values */\n mixedOptions?: (string | number)[];\n /** Input Element. */\n inputEl?: MutableRefObject<HTMLInputElement | null | undefined>;\n /** Text for empty value */\n emptyValue?: string;\n /** Text for No result */\n noResultText?: string;\n /** Render option */\n renderOption?: (\n option: Record<string, ReactNode>,\n data: Record<string, unknown>\n ) => string | ReactElement;\n /** Default value that renders on top of list */\n defaultValue?: string;\n /** Sort direction for labels */\n sortDirection?: \"asc\" | \"desc\";\n /** handleChange callback */\n handleChange?: (\n e: (string | number)[] | string | number | null | undefined\n ) => void;\n /** ClassName for single option */\n optionClassName?: string;\n /** handleEmptyAction */\n handleEmptyAction?: (e: string | number) => void;\n /** Disable sorting options */\n disabledInternalSort?: boolean;\n /** ClassName for Autocomplete component */\n AutocompleteClassName?: string;\n /** handleDefaultOptionChange callback */\n handleDefaultOptionChange?: () => void;\n /** Should default value be selected */\n preselectDefaultValue?: boolean;\n /** Should order stay the same after choosing an option */\n keepSameOptionsOrder?: boolean;\n /** Set max height property for scrollbars */\n autoHeightMax?: number;\n /** Clear input on select - works in single mode */\n clearInputOnSelect?: boolean;\n /** Custom filter function for additional filtering criteria */\n filterCriteria?: (option: IOptionItemProps, filter: string) => boolean;\n disableVirtualization?: boolean;\n}\n\ninterface IHover {\n item: number | string | undefined | null;\n by: \"mouse\" | \"keyboard\" | undefined;\n}\n\ninterface VirtualItem {\n type: \"default\" | \"option\" | \"group\" | \"addNew\" | \"noResult\";\n id: string | number;\n item?: IOptionItemProps | IOptionGroupProps;\n index?: number;\n}\n\nexport const Autocomplete: FC<IAutocompleteProps> = ({\n type,\n options: optionsProp = [],\n inputEl,\n selected = [],\n emptyValue,\n noResultText,\n renderOption = (option) => option?.name,\n defaultValue,\n sortDirection = \"asc\",\n handleChange,\n optionClassName,\n handleEmptyAction,\n disabledInternalSort,\n AutocompleteClassName,\n handleDefaultOptionChange,\n preselectDefaultValue,\n keepSameOptionsOrder = false,\n autoHeightMax = 340,\n clearInputOnSelect,\n mixedOptions = [],\n filterCriteria,\n disableVirtualization,\n}) => {\n const listContainerRef = useRef<HTMLDivElement>(null);\n const itemRef = useRef<HTMLLIElement>(null);\n\n // Tolerate sparse/holey option arrays (some callers build them via index\n // assignment): drop holes and nullish entries so sorting never hits undefined.\n const options = useMemo(() => optionsProp.filter(Boolean), [optionsProp]);\n\n const selectedOptions = useMemo(() => {\n if (Array.isArray(selected)) {\n return selected;\n }\n return [selected];\n }, [selected]);\n\n // Ids whose position is fixed. Starts with everything present on open; a\n // freshly added option joins this set once it becomes checked, so unchecking\n // it later won't move it. Everything frozen keeps its order on every re-sort.\n const frozenRef = useRef(new Set(collectLeafIds(options)));\n\n const handleSort = useCallback(\n (opts) => {\n if (keepSameOptionsOrder) {\n return opts;\n }\n\n const isGrouped = Array.isArray(opts[0]?.options);\n\n const sortOptions = (a, b) => {\n const aSelected = selectedOptions.includes(a.id);\n const bSelected = selectedOptions.includes(b.id);\n const aMixed = mixedOptions.includes(a.id);\n const bMixed = mixedOptions.includes(b.id);\n\n if (aSelected && !bSelected) {\n return -1;\n }\n if (!aSelected && bSelected) {\n return 1;\n }\n if (aMixed && !bMixed) {\n return -1;\n }\n if (!aMixed && bMixed) {\n return 1;\n }\n return 0;\n };\n\n if (isGrouped) {\n return opts.map((group) => ({\n ...group,\n options: [...group.options].sort(sortOptions),\n }));\n } else {\n return [...opts].sort(sortOptions);\n }\n },\n [keepSameOptionsOrder, selectedOptions, mixedOptions]\n );\n\n const sortList = useCallback(\n (options) => {\n if (disabledInternalSort) {\n return handleSort(options);\n }\n\n const alphaSort = (a, b) =>\n sortDirection === \"asc\"\n ? a.name.localeCompare(b.name)\n : b.name.localeCompare(a.name);\n\n const isGrouped = Array.isArray(options[0]?.options);\n\n if (isGrouped) {\n const sortedOptions = options.map((group) => ({\n ...group,\n options: handleSort([...group.options].sort(alphaSort)),\n }));\n\n return handleSort(sortedOptions);\n } else {\n return handleSort([...options].sort(alphaSort));\n }\n },\n [sortDirection, disabledInternalSort, handleSort]\n );\n\n const [sortedList, setSortedList] = useState(() => sortList(options));\n\n // The order is established on open. Options present then keep their place for\n // the whole session — checking/unchecking never reorders them. Options added\n // afterwards are slotted in among the checked items, alphabetically. The\n // selection key is a primitive so a fresh `selected = []` default can't loop.\n const isInitialSortRef = useRef(true);\n const selectedKey = selectedOptions.join(\",\");\n\n useEffect(() => {\n if (isInitialSortRef.current) {\n isInitialSortRef.current = false;\n return;\n }\n\n if (keepSameOptionsOrder) {\n setSortedList(sortList(options));\n return;\n }\n\n if (sortedList.length === 0) {\n frozenRef.current = new Set(collectLeafIds(options));\n setSortedList(sortList(options));\n return;\n }\n\n const isChecked = (id: string | number) => selectedOptions.includes(id);\n const frozen = frozenRef.current;\n\n const nextFrozen = new Set(frozen);\n collectLeafIds(options).forEach((id) => {\n if (!frozen.has(id) && isChecked(id)) {\n nextFrozen.add(id);\n }\n });\n frozenRef.current = nextFrozen;\n\n setSortedList(reconcileOrder(sortedList, options, frozen, isChecked));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [options, selectedKey]);\n\n const [hover, setHover] = useState<IHover>({\n item: undefined,\n by: undefined,\n });\n const [filter, setFilter] = useState(\"\");\n\n const handleEmpty = useCallback(\n (e) => {\n if (e && e.button !== 0) {\n return;\n }\n if (handleEmptyAction) {\n inputEl?.current?.focus();\n setFilter(\"\");\n handleEmptyAction(filter);\n }\n },\n [filter, handleEmptyAction, inputEl]\n );\n\n const onAddNewMouseEnter = useCallback(\n () => setHover({ item: \"addNew\", by: \"mouse\" }),\n []\n );\n\n const showAddNew = useMemo(() => {\n return !!(\n emptyValue &&\n filter.trim() &&\n options.every((option) => {\n if (isOptionGroup(option)) {\n return option.options.every(\n (v) => v.name.toLowerCase() !== filter.trim().toLowerCase()\n );\n }\n return option.name.toLowerCase() !== filter.trim().toLowerCase();\n })\n );\n }, [emptyValue, filter, options]);\n\n const filterOptions = useCallback(\n (options, filter) => {\n const trimmedFilter = filter.trim();\n const isGrouped = options[0] && isOptionGroup(options[0]);\n\n const matchesFilter = (option: IOptionItemProps) => {\n if (option.hidden) {\n return false;\n }\n\n const nameMatch = option.name\n .toLowerCase()\n .includes(trimmedFilter.toLowerCase());\n\n if (filterCriteria && trimmedFilter) {\n return nameMatch || filterCriteria(option, trimmedFilter);\n }\n\n return nameMatch;\n };\n\n if (isGrouped) {\n let hovered = false;\n return options.reduce((acc, groupedOption) => {\n const filteredOptions = groupedOption.options.filter(matchesFilter);\n\n if (filteredOptions.length > 0) {\n if (!hovered && filter) {\n setHover({ item: filteredOptions[0].id, by: \"keyboard\" });\n }\n hovered = true;\n return [...acc, { ...groupedOption, options: filteredOptions }];\n }\n return [...acc];\n }, []);\n } else {\n const filteredOptions = options.filter(matchesFilter);\n\n if (filter && filteredOptions.length > 0) {\n setHover({ item: filteredOptions[0].id, by: \"keyboard\" });\n }\n if (filteredOptions.length === 0 && emptyValue) {\n setHover({ item: \"addNew\", by: \"keyboard\" });\n }\n return filteredOptions;\n }\n },\n [emptyValue, filterCriteria]\n );\n\n const list = useMemo(\n () => filterOptions(sortedList, filter),\n [filter, filterOptions, sortedList]\n );\n\n const showDefaultOption = useMemo(\n () => !!defaultValue && !filter,\n [defaultValue, filter]\n );\n\n const flatOptions = useMemo(() => {\n const options = list.reduce(\n (\n acc: (IOptionItemProps | IOptionGroupProps | [])[],\n option: IOptionItemProps | IOptionGroupProps\n ) => {\n if (!isOptionGroup(option)) {\n return [...acc, option];\n }\n return [...acc, ...option.options];\n },\n []\n );\n return filterOptions(options, filter);\n }, [filter, filterOptions, list]);\n\n const showNoResultCondition = useMemo(\n () =>\n noResultText &&\n !showAddNew &&\n list.length < 1 &&\n ((defaultValue && filter) || !defaultValue),\n [noResultText, showAddNew, list.length, defaultValue, filter]\n );\n\n const virtualItems = useMemo(() => {\n const items: VirtualItem[] = [];\n\n if (showDefaultOption) {\n items.push({\n type: \"default\",\n id: \"default\",\n });\n }\n\n list.forEach((item, index) => {\n if (isOptionGroup(item)) {\n items.push({\n type: \"group\",\n id: item.id,\n item,\n });\n\n item.options.forEach((option) => {\n items.push({\n type: \"option\",\n id: option.id,\n item: option,\n index,\n });\n });\n } else {\n items.push({\n type: \"option\",\n id: item.id,\n item,\n index,\n });\n }\n });\n\n if (showNoResultCondition) {\n items.push({\n type: \"noResult\",\n id: \"noResult\",\n });\n }\n\n if (showAddNew) {\n items.push({\n type: \"addNew\",\n id: \"addNew\",\n });\n }\n\n return items;\n }, [list, showDefaultOption, showNoResultCondition, showAddNew]);\n\n const shouldUseVirtualization =\n !disableVirtualization && virtualItems.length > 40;\n\n const rowVirtualizer = useVirtualizer({\n count: virtualItems.length,\n getScrollElement: () => listContainerRef.current,\n estimateSize: () => 28,\n overscan: 5,\n gap: 4,\n });\n\n const handleInputChange = useCallback((e) => {\n if (\n e.target &&\n !(e.key === \"ArrowDown\") &&\n !(e.key === \"ArrowUp\") &&\n !(e.key === \"Enter\")\n ) {\n setFilter(e.target.value);\n }\n }, []);\n\n const handleHoverCallback = useCallback(\n (e: number | string | undefined): void => {\n setHover({ item: e, by: \"mouse\" });\n },\n []\n );\n\n const toggleSelected = useCallback(\n (id) => {\n let result;\n\n if (id !== null) {\n if (type === \"multiple\") {\n if (selectedOptions.includes(id)) {\n result = selectedOptions.filter((_id) => _id !== id);\n } else {\n result = [...selectedOptions, id];\n }\n } else {\n result = id;\n }\n if (clearInputOnSelect && inputEl?.current) {\n inputEl.current.value = \"\";\n inputEl.current.dispatchEvent(new Event(\"change\", { bubbles: true }));\n }\n setFilter(\"\");\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n return;\n }\n }\n\n if (typeof handleChange === \"function\") {\n handleChange(result);\n }\n },\n [\n clearInputOnSelect,\n handleChange,\n handleDefaultOptionChange,\n inputEl,\n selectedOptions,\n type,\n ]\n );\n\n const handleMouseEnter = useCallback((e) => {\n if (e === undefined || e === null) {\n return setHover({ item: null, by: \"mouse\" });\n }\n setHover({ item: e, by: \"mouse\" });\n }, []);\n\n const handleClick = useCallback(\n (e) => {\n e.preventDefault();\n toggleSelected(hover.item);\n },\n [toggleSelected, hover]\n );\n\n const handleRenderOption = useCallback(\n (item: IOptionItemProps | IOptionGroupProps, index) => {\n if (isOptionGroup(item)) {\n return (\n <OptionGroup\n checked={selectedOptions}\n name={item.name}\n tooltip={item.tooltip}\n key={item.id}\n setHover={handleHoverCallback}\n id={item.id}\n hover={hover.item}\n options={item.options}\n renderOptions={handleRenderOption}\n type={type}\n onChange={handleChange}\n filter={filter}\n mixedOptions={mixedOptions}\n />\n );\n }\n return (\n <Option\n name={item.name}\n ref={hover.item === item.id ? itemRef : null}\n key={index}\n tooltip={item.tooltip}\n onMouseEnter={handleMouseEnter}\n onClick={handleClick}\n id={item.id}\n hover={item.id === hover.item}\n className={optionClassName}\n renderOption={renderOption(\n { ...item, name: highlightText(item.name, filter) },\n {\n id: `option_${item.id}`,\n checked: selectedOptions && selectedOptions.includes(item.id),\n hover: hover.item === item.id,\n onChange: () => null,\n }\n )}\n />\n );\n },\n [\n handleClick,\n handleMouseEnter,\n hover.item,\n optionClassName,\n renderOption,\n filter,\n selectedOptions,\n handleHoverCallback,\n type,\n handleChange,\n mixedOptions,\n ]\n );\n\n const handleOnMouseLeave = useCallback(() => {\n setHover({ item: undefined, by: \"mouse\" });\n }, []);\n\n useEffect(() => {\n if (hover.by === \"keyboard\" && hover.item !== undefined) {\n const index = virtualItems.findIndex((item) => item.id === hover.item);\n if (index !== -1) {\n rowVirtualizer.scrollToIndex(index, { align: \"center\" });\n }\n }\n }, [hover, rowVirtualizer, virtualItems]);\n\n const handleOnKeyDown = useCallback(\n (e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n\n if (hover.item === undefined && filter === \"\") {\n return;\n }\n if (hover.item === \"addNew\") {\n handleEmpty(null);\n return;\n }\n if (hover.item === null && handleDefaultOptionChange) {\n handleDefaultOptionChange();\n return;\n }\n\n if (typeof hover.item !== \"undefined\" || hover.item !== null) {\n toggleSelected(hover.item);\n setFilter(\"\");\n }\n return;\n }\n setHover({\n item: handleKeyboardMovement(\n e,\n hover.item,\n flatOptions,\n showAddNew,\n showDefaultOption\n ),\n by: \"keyboard\",\n });\n },\n [\n filter,\n flatOptions,\n toggleSelected,\n handleDefaultOptionChange,\n handleEmpty,\n hover,\n showAddNew,\n showDefaultOption,\n ]\n );\n\n useEffect(() => {\n const listenerTarget = inputEl?.current;\n if (!listenerTarget) return;\n\n listenerTarget.addEventListener(\"input\", handleInputChange);\n listenerTarget.addEventListener(\"keydown\", handleOnKeyDown);\n return () => {\n listenerTarget.removeEventListener(\"input\", handleInputChange);\n listenerTarget.removeEventListener(\"keydown\", handleOnKeyDown);\n };\n }, [handleInputChange, handleOnKeyDown, inputEl]);\n\n const isDefaultOptionSelected = useCallback(() => {\n if (preselectDefaultValue) {\n return selectedOptions.length < 1 || selectedOptions[0] === \"\";\n } else {\n return (\n selectedOptions[0] === null ||\n selectedOptions.length === flatOptions.length\n );\n }\n }, [flatOptions.length, preselectDefaultValue, selectedOptions]);\n\n const renderVirtualItem = useCallback(\n (virtualItem: VirtualItem, index: number) => {\n switch (virtualItem.type) {\n case \"default\":\n return (\n <Option\n name={String(defaultValue)}\n ref={hover.item === null ? itemRef : null}\n hover={hover.item === null}\n onMouseEnter={handleMouseEnter}\n onClick={(e) => {\n e.preventDefault();\n toggleSelected(null);\n }}\n renderOption={renderOption(\n { name: defaultValue, id: null },\n {\n checked: isDefaultOptionSelected(),\n hover: hover.item === null,\n onChange: () => null,\n }\n )}\n />\n );\n\n case \"group\":\n if (!virtualItem.item || !isOptionGroup(virtualItem.item))\n return null;\n return (\n <OptionGroup\n checked={selectedOptions}\n name={virtualItem.item.name}\n tooltip={virtualItem.item.tooltip}\n key={virtualItem.item.id}\n setHover={handleHoverCallback}\n id={virtualItem.item.id}\n hover={hover.item}\n options={virtualItem.item.options}\n renderOptions={handleRenderOption}\n type={type}\n onChange={handleChange}\n filter={filter}\n mixedOptions={mixedOptions}\n />\n );\n\n case \"option\":\n if (!virtualItem.item || isOptionGroup(virtualItem.item)) return null;\n return (\n <Option\n name={(virtualItem.item as IOptionItemProps).name}\n ref={hover.item === virtualItem.id ? itemRef : null}\n key={index}\n tooltip={(virtualItem.item as IOptionItemProps).tooltip}\n onMouseEnter={() => handleMouseEnter(virtualItem.id)}\n onClick={handleClick}\n id={virtualItem.id}\n hover={virtualItem.id === hover.item}\n className={optionClassName}\n renderOption={renderOption(\n {\n ...(virtualItem.item as IOptionItemProps),\n name: highlightText(\n (virtualItem.item as IOptionItemProps).name,\n filter\n ),\n },\n {\n id: `option_${virtualItem.id}`,\n checked:\n selectedOptions && selectedOptions.includes(virtualItem.id),\n hover: hover.item === virtualItem.id,\n onChange: () => null,\n }\n )}\n />\n );\n\n case \"noResult\":\n return <StyledOption css=\"cursor: auto\">{noResultText}</StyledOption>;\n\n case \"addNew\":\n return (\n <StyledAutocompleteNewItem\n ref={hover.item === \"addNew\" ? itemRef : null}\n key=\"emptyValue\"\n hover={hover.item === \"addNew\"}\n onMouseDown={handleEmpty}\n onMouseEnter={onAddNewMouseEnter}\n >\n {emptyValue}\n </StyledAutocompleteNewItem>\n );\n\n default:\n return null;\n }\n },\n [\n defaultValue,\n hover.item,\n handleMouseEnter,\n renderOption,\n isDefaultOptionSelected,\n selectedOptions,\n handleHoverCallback,\n handleRenderOption,\n type,\n handleChange,\n filter,\n mixedOptions,\n handleClick,\n optionClassName,\n noResultText,\n handleEmpty,\n onAddNewMouseEnter,\n emptyValue,\n toggleSelected,\n ]\n );\n\n return (\n <StyledAutocompleteScrollShadow\n className={AutocompleteClassName}\n $isHidden={\n !defaultValue && !emptyValue && !noResultText && list.length < 1\n }\n >\n {({ onScroll }) => (\n <StyledAutocompleteBody key=\"body\" onMouseLeave={handleOnMouseLeave}>\n <div\n ref={listContainerRef}\n style={{\n height: `${Math.min(\n rowVirtualizer.getTotalSize() + 12,\n autoHeightMax\n )}px`,\n overflow: \"auto\",\n }}\n onScroll={(e) => {\n if (onScroll) onScroll(e);\n }}\n >\n <div\n style={{\n height: `${rowVirtualizer.getTotalSize()}px`,\n width: \"100%\",\n position: \"relative\",\n }}\n >\n {shouldUseVirtualization\n ? rowVirtualizer.getVirtualItems().map((virtualRow) => {\n const item = virtualItems[virtualRow.index];\n return (\n <div\n key={virtualRow.index}\n data-index={virtualRow.index}\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n width: \"100%\",\n transform: `translateY(${virtualRow.start}px)`,\n }}\n >\n {renderVirtualItem(item, virtualRow.index)}\n </div>\n );\n })\n : virtualItems.map((item, index) => (\n <React.Fragment key={index}>\n {renderVirtualItem(item, index)}\n </React.Fragment>\n ))}\n </div>\n </div>\n </StyledAutocompleteBody>\n )}\n </StyledAutocompleteScrollShadow>\n );\n};\n\nAutocomplete.displayName = \"Autocomplete\";\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Autocomplete.js","names":["React","useCallback","useState","useMemo","useEffect","useRef","useVirtualizer","handleKeyboardMovement","StyledAutocompleteBody","StyledAutocompleteNewItem","StyledAutocompleteScrollShadow","highlightText","Option","StyledOption","OptionGroup","isOptionGroup","item","options","undefined","collectLeafIds","opts","reduce","acc","opt","map","o","id","insertAmongSameState","list","isChecked","checked","index","findIndex","name","localeCompare","i","length","slice","reconcileFlat","prev","next","frozen","nextById","Map","base","filter","has","get","baseIds","Set","toPlace","reconcileOrder","every","prevGroupById","group","_prevGroupById$get$op","_prevGroupById$get","_extends","Autocomplete","_ref","type","_ref$options","optionsProp","inputEl","_ref$selected","selected","emptyValue","noResultText","_ref$renderOption","renderOption","option","defaultValue","_ref$sortDirection","sortDirection","handleChange","optionClassName","handleEmptyAction","disabledInternalSort","AutocompleteClassName","handleDefaultOptionChange","preselectDefaultValue","_ref$keepSameOptionsO","keepSameOptionsOrder","_ref$autoHeightMax","autoHeightMax","clearInputOnSelect","_ref$mixedOptions","mixedOptions","filterCriteria","disableVirtualization","listContainerRef","itemRef","Boolean","selectedOptions","Array","isArray","frozenRef","handleSort","_opts$","isGrouped","sortOptions","a","b","aSelected","includes","bSelected","aMixed","bMixed","sort","sortList","_options$","alphaSort","sortedOptions","_useState","sortedList","setSortedList","isInitialSortRef","selectedKey","join","current","nextFrozen","forEach","add","_useState2","by","hover","setHover","_useState3","setFilter","handleEmpty","e","button","_inputEl$current","focus","onAddNewMouseEnter","showAddNew","trim","v","toLowerCase","filterOptions","trimmedFilter","matchesFilter","hidden","nameMatch","hovered","groupedOption","filteredOptions","showDefaultOption","flatOptions","showNoResultCondition","virtualItems","items","push","shouldUseVirtualization","rowVirtualizer","count","getScrollElement","estimateSize","overscan","gap","handleInputChange","target","key","value","handleHoverCallback","toggleSelected","result","_id","dispatchEvent","Event","bubbles","handleMouseEnter","handleClick","preventDefault","handleRenderOption","createElement","tooltip","renderOptions","onChange","ref","onMouseEnter","onClick","className","handleOnMouseLeave","scrollToIndex","align","handleOnKeyDown","listenerTarget","addEventListener","removeEventListener","isDefaultOptionSelected","renderVirtualItem","virtualItem","String","_StyledStyledOption","onMouseDown","$isHidden","_ref2","onScroll","onMouseLeave","style","height","Math","min","getTotalSize","overflow","width","position","getVirtualItems","virtualRow","top","left","transform","start","Fragment","displayName","_styled","withConfig","componentId"],"sources":["../../../../src/components/Autocomplete/Autocomplete.tsx"],"sourcesContent":["import React, {\n type FC,\n useCallback,\n useState,\n useMemo,\n useEffect,\n useRef,\n type ReactNode,\n type ReactElement,\n type MutableRefObject,\n} from \"react\";\n\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\n\nimport { handleKeyboardMovement } from \"./HandleKeyboard\";\nimport {\n StyledAutocompleteBody,\n StyledAutocompleteNewItem,\n StyledAutocompleteScrollShadow,\n} from \"./Styles\";\nimport highlightText from \"../../hooks/useHighlightText\";\nimport { type IOptionItemProps, Option } from \"../Select/Option\";\nimport { StyledOption } from \"../Select/Option/Styles\";\nimport { type IOptionGroupProps, OptionGroup } from \"../Select/OptionGroup\";\n\nexport function isOptionGroup(\n item: IOptionGroupProps | IOptionItemProps\n): item is IOptionGroupProps {\n return (item as IOptionGroupProps).options !== undefined;\n}\n\nconst collectLeafIds = (\n opts: (IOptionGroupProps | IOptionItemProps)[]\n): (string | number)[] =>\n opts.reduce<(string | number)[]>(\n (acc, opt) =>\n isOptionGroup(opt)\n ? [...acc, ...opt.options.map((o) => o.id)]\n : [...acc, opt.id],\n []\n );\n\n// Inserts an option at its alphabetical position among the options that share\n// its checked state (checked items live at the top, so a checked option lands\n// among the checked ones, sorted).\nconst insertAmongSameState = (\n list: IOptionItemProps[],\n item: IOptionItemProps,\n isChecked: (id: string | number) => boolean\n): IOptionItemProps[] => {\n const checked = isChecked(item.id);\n let index = list.findIndex(\n (o) => isChecked(o.id) === checked && o.name.localeCompare(item.name) > 0\n );\n if (index === -1) {\n index = checked\n ? list.reduce((acc, o, i) => (isChecked(o.id) ? i + 1 : acc), 0)\n : list.length;\n }\n return [...list.slice(0, index), item, ...list.slice(index)];\n};\n\n// Frozen options that are still present keep their order (checking/unchecking\n// never moves them). Everything else — newly added options, or frozen options\n// that moved here (e.g. when the list is regrouped) — is slotted in among the\n// checked items, alphabetically.\nconst reconcileFlat = (\n prev: IOptionItemProps[],\n next: IOptionItemProps[],\n frozen: Set<string | number>,\n isChecked: (id: string | number) => boolean\n): IOptionItemProps[] => {\n const nextById = new Map(next.map((o) => [o.id, o]));\n const base = prev\n .filter((o) => frozen.has(o.id) && nextById.has(o.id))\n .map((o) => nextById.get(o.id) as IOptionItemProps);\n const baseIds = new Set(base.map((o) => o.id));\n const toPlace = next.filter((o) => !baseIds.has(o.id));\n\n return toPlace.reduce(\n (acc, item) => insertAmongSameState(acc, item, isChecked),\n base\n );\n};\n\nconst reconcileOrder = (\n prev: (IOptionGroupProps | IOptionItemProps)[],\n next: (IOptionGroupProps | IOptionItemProps)[],\n frozen: Set<string | number>,\n isChecked: (id: string | number) => boolean\n): (IOptionGroupProps | IOptionItemProps)[] => {\n if (!next.every(isOptionGroup) || !prev.every(isOptionGroup)) {\n return reconcileFlat(\n prev as IOptionItemProps[],\n next as IOptionItemProps[],\n frozen,\n isChecked\n );\n }\n\n const prevGroupById = new Map(prev.map((group) => [group.id, group]));\n\n return next.map((group) => ({\n ...group,\n options: reconcileFlat(\n prevGroupById.get(group.id)?.options ?? [],\n group.options,\n frozen,\n isChecked\n ),\n }));\n};\n\nexport interface IAutocompleteProps {\n /** Select type: single or multiple */\n type?: \"single\" | \"multiple\";\n /** List of options or group options */\n options?: (IOptionGroupProps | IOptionItemProps)[];\n /** Selected values */\n selected?: (string | number)[] | string | number;\n /** Mixed options values */\n mixedOptions?: (string | number)[];\n /** Input Element. */\n inputEl?: MutableRefObject<HTMLInputElement | null | undefined>;\n /** Text for empty value */\n emptyValue?: string;\n /** Text for No result */\n noResultText?: string;\n /** Render option */\n renderOption?: (\n option: Record<string, ReactNode>,\n data: Record<string, unknown>\n ) => string | ReactElement;\n /** Default value that renders on top of list */\n defaultValue?: string;\n /** Sort direction for labels */\n sortDirection?: \"asc\" | \"desc\";\n /** handleChange callback */\n handleChange?: (\n e: (string | number)[] | string | number | null | undefined\n ) => void;\n /** ClassName for single option */\n optionClassName?: string;\n /** handleEmptyAction */\n handleEmptyAction?: (e: string | number) => void;\n /** Disable sorting options */\n disabledInternalSort?: boolean;\n /** ClassName for Autocomplete component */\n AutocompleteClassName?: string;\n /** handleDefaultOptionChange callback */\n handleDefaultOptionChange?: () => void;\n /** Should default value be selected */\n preselectDefaultValue?: boolean;\n /** Should order stay the same after choosing an option */\n keepSameOptionsOrder?: boolean;\n /** Set max height property for scrollbars */\n autoHeightMax?: number;\n /** Clear input on select - works in single mode */\n clearInputOnSelect?: boolean;\n /** Custom filter function for additional filtering criteria */\n filterCriteria?: (option: IOptionItemProps, filter: string) => boolean;\n disableVirtualization?: boolean;\n}\n\ninterface IHover {\n item: number | string | undefined | null;\n by: \"mouse\" | \"keyboard\" | undefined;\n}\n\ninterface VirtualItem {\n type: \"default\" | \"option\" | \"group\" | \"addNew\" | \"noResult\";\n id: string | number;\n item?: IOptionItemProps | IOptionGroupProps;\n index?: number;\n}\n\nexport const Autocomplete: FC<IAutocompleteProps> = ({\n type,\n options: optionsProp = [],\n inputEl,\n selected = [],\n emptyValue,\n noResultText,\n renderOption = (option) => option?.name,\n defaultValue,\n sortDirection = \"asc\",\n handleChange,\n optionClassName,\n handleEmptyAction,\n disabledInternalSort,\n AutocompleteClassName,\n handleDefaultOptionChange,\n preselectDefaultValue,\n keepSameOptionsOrder = false,\n autoHeightMax = 340,\n clearInputOnSelect,\n mixedOptions = [],\n filterCriteria,\n disableVirtualization,\n}) => {\n const listContainerRef = useRef<HTMLDivElement>(null);\n const itemRef = useRef<HTMLLIElement>(null);\n\n // Tolerate sparse/holey option arrays (some callers build them via index\n // assignment): drop holes and nullish entries so sorting never hits undefined.\n const options = useMemo(() => optionsProp.filter(Boolean), [optionsProp]);\n\n const selectedOptions = useMemo(() => {\n if (Array.isArray(selected)) {\n return selected;\n }\n return [selected];\n }, [selected]);\n\n // Ids whose position is fixed. Starts with everything present on open; a\n // freshly added option joins this set once it becomes checked, so unchecking\n // it later won't move it. Everything frozen keeps its order on every re-sort.\n const frozenRef = useRef(new Set(collectLeafIds(options)));\n\n const handleSort = useCallback(\n (opts) => {\n if (keepSameOptionsOrder) {\n return opts;\n }\n\n const isGrouped = Array.isArray(opts[0]?.options);\n\n const sortOptions = (a, b) => {\n const aSelected = selectedOptions.includes(a.id);\n const bSelected = selectedOptions.includes(b.id);\n const aMixed = mixedOptions.includes(a.id);\n const bMixed = mixedOptions.includes(b.id);\n\n if (aSelected && !bSelected) {\n return -1;\n }\n if (!aSelected && bSelected) {\n return 1;\n }\n if (aMixed && !bMixed) {\n return -1;\n }\n if (!aMixed && bMixed) {\n return 1;\n }\n return 0;\n };\n\n if (isGrouped) {\n return opts.map((group) => ({\n ...group,\n options: [...group.options].sort(sortOptions),\n }));\n } else {\n return [...opts].sort(sortOptions);\n }\n },\n [keepSameOptionsOrder, selectedOptions, mixedOptions]\n );\n\n const sortList = useCallback(\n (options) => {\n if (disabledInternalSort) {\n return handleSort(options);\n }\n\n const alphaSort = (a, b) =>\n sortDirection === \"asc\"\n ? a.name.localeCompare(b.name)\n : b.name.localeCompare(a.name);\n\n const isGrouped = Array.isArray(options[0]?.options);\n\n if (isGrouped) {\n const sortedOptions = options.map((group) => ({\n ...group,\n options: handleSort([...group.options].sort(alphaSort)),\n }));\n\n return handleSort(sortedOptions);\n } else {\n return handleSort([...options].sort(alphaSort));\n }\n },\n [sortDirection, disabledInternalSort, handleSort]\n );\n\n const [sortedList, setSortedList] = useState(() => sortList(options));\n\n // The order is established on open. Options present then keep their place for\n // the whole session — checking/unchecking never reorders them. Options added\n // afterwards are slotted in among the checked items, alphabetically. The\n // selection key is a primitive so a fresh `selected = []` default can't loop.\n const isInitialSortRef = useRef(true);\n const selectedKey = selectedOptions.join(\",\");\n\n useEffect(() => {\n if (isInitialSortRef.current) {\n isInitialSortRef.current = false;\n return;\n }\n\n if (keepSameOptionsOrder) {\n setSortedList(sortList(options));\n return;\n }\n\n if (sortedList.length === 0) {\n frozenRef.current = new Set(collectLeafIds(options));\n setSortedList(sortList(options));\n return;\n }\n\n const isChecked = (id: string | number) => selectedOptions.includes(id);\n const frozen = frozenRef.current;\n\n const nextFrozen = new Set(frozen);\n collectLeafIds(options).forEach((id) => {\n if (!frozen.has(id) && isChecked(id)) {\n nextFrozen.add(id);\n }\n });\n frozenRef.current = nextFrozen;\n\n setSortedList(reconcileOrder(sortedList, options, frozen, isChecked));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [options, selectedKey]);\n\n const [hover, setHover] = useState<IHover>({\n item: undefined,\n by: undefined,\n });\n const [filter, setFilter] = useState(\"\");\n\n const handleEmpty = useCallback(\n (e) => {\n if (e && e.button !== 0) {\n return;\n }\n if (handleEmptyAction) {\n inputEl?.current?.focus();\n setFilter(\"\");\n handleEmptyAction(filter);\n }\n },\n [filter, handleEmptyAction, inputEl]\n );\n\n const onAddNewMouseEnter = useCallback(\n () => setHover({ item: \"addNew\", by: \"mouse\" }),\n []\n );\n\n const showAddNew = useMemo(() => {\n return !!(\n emptyValue &&\n filter.trim() &&\n options.every((option) => {\n if (isOptionGroup(option)) {\n return option.options.every(\n (v) => v.name.toLowerCase() !== filter.trim().toLowerCase()\n );\n }\n return option.name.toLowerCase() !== filter.trim().toLowerCase();\n })\n );\n }, [emptyValue, filter, options]);\n\n const filterOptions = useCallback(\n (options, filter) => {\n const trimmedFilter = filter.trim();\n const isGrouped = options[0] && isOptionGroup(options[0]);\n\n const matchesFilter = (option: IOptionItemProps) => {\n if (option.hidden) {\n return false;\n }\n\n const nameMatch = option.name\n .toLowerCase()\n .includes(trimmedFilter.toLowerCase());\n\n if (filterCriteria && trimmedFilter) {\n return nameMatch || filterCriteria(option, trimmedFilter);\n }\n\n return nameMatch;\n };\n\n if (isGrouped) {\n let hovered = false;\n return options.reduce((acc, groupedOption) => {\n const filteredOptions = groupedOption.options.filter(matchesFilter);\n\n if (filteredOptions.length > 0) {\n if (!hovered && filter) {\n setHover({ item: filteredOptions[0].id, by: \"keyboard\" });\n }\n hovered = true;\n return [...acc, { ...groupedOption, options: filteredOptions }];\n }\n return [...acc];\n }, []);\n } else {\n const filteredOptions = options.filter(matchesFilter);\n\n if (filter && filteredOptions.length > 0) {\n setHover({ item: filteredOptions[0].id, by: \"keyboard\" });\n }\n if (filteredOptions.length === 0 && emptyValue) {\n setHover({ item: \"addNew\", by: \"keyboard\" });\n }\n return filteredOptions;\n }\n },\n [emptyValue, filterCriteria]\n );\n\n const list = useMemo(\n () => filterOptions(sortedList, filter),\n [filter, filterOptions, sortedList]\n );\n\n const showDefaultOption = useMemo(\n () => !!defaultValue && !filter,\n [defaultValue, filter]\n );\n\n const flatOptions = useMemo(() => {\n const options = list.reduce(\n (\n acc: (IOptionItemProps | IOptionGroupProps | [])[],\n option: IOptionItemProps | IOptionGroupProps\n ) => {\n if (!isOptionGroup(option)) {\n return [...acc, option];\n }\n return [...acc, ...option.options];\n },\n []\n );\n return filterOptions(options, filter);\n }, [filter, filterOptions, list]);\n\n const showNoResultCondition = useMemo(\n () =>\n noResultText &&\n !showAddNew &&\n list.length < 1 &&\n ((defaultValue && filter) || !defaultValue),\n [noResultText, showAddNew, list.length, defaultValue, filter]\n );\n\n const virtualItems = useMemo(() => {\n const items: VirtualItem[] = [];\n\n if (showDefaultOption) {\n items.push({\n type: \"default\",\n id: \"default\",\n });\n }\n\n list.forEach((item, index) => {\n if (isOptionGroup(item)) {\n items.push({\n type: \"group\",\n id: item.id,\n item,\n });\n\n item.options.forEach((option) => {\n items.push({\n type: \"option\",\n id: option.id,\n item: option,\n index,\n });\n });\n } else {\n items.push({\n type: \"option\",\n id: item.id,\n item,\n index,\n });\n }\n });\n\n if (showNoResultCondition) {\n items.push({\n type: \"noResult\",\n id: \"noResult\",\n });\n }\n\n if (showAddNew) {\n items.push({\n type: \"addNew\",\n id: \"addNew\",\n });\n }\n\n return items;\n }, [list, showDefaultOption, showNoResultCondition, showAddNew]);\n\n const shouldUseVirtualization =\n !disableVirtualization && virtualItems.length > 40;\n\n const rowVirtualizer = useVirtualizer({\n count: virtualItems.length,\n getScrollElement: () => listContainerRef.current,\n estimateSize: () => 28,\n overscan: 5,\n gap: 4,\n });\n\n const handleInputChange = useCallback((e) => {\n if (\n e.target &&\n !(e.key === \"ArrowDown\") &&\n !(e.key === \"ArrowUp\") &&\n !(e.key === \"Enter\")\n ) {\n setFilter(e.target.value);\n }\n }, []);\n\n const handleHoverCallback = useCallback(\n (e: number | string | undefined): void => {\n setHover({ item: e, by: \"mouse\" });\n },\n []\n );\n\n const toggleSelected = useCallback(\n (id) => {\n let result;\n\n if (id !== null) {\n if (type === \"multiple\") {\n if (selectedOptions.includes(id)) {\n result = selectedOptions.filter((_id) => _id !== id);\n } else {\n result = [...selectedOptions, id];\n }\n } else {\n result = id;\n }\n if (clearInputOnSelect && inputEl?.current) {\n inputEl.current.value = \"\";\n inputEl.current.dispatchEvent(new Event(\"change\", { bubbles: true }));\n }\n setFilter(\"\");\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n return;\n }\n }\n\n if (typeof handleChange === \"function\") {\n handleChange(result);\n }\n },\n [\n clearInputOnSelect,\n handleChange,\n handleDefaultOptionChange,\n inputEl,\n selectedOptions,\n type,\n ]\n );\n\n const handleMouseEnter = useCallback((e) => {\n if (e === undefined || e === null) {\n return setHover({ item: null, by: \"mouse\" });\n }\n setHover({ item: e, by: \"mouse\" });\n }, []);\n\n const handleClick = useCallback(\n (e) => {\n e.preventDefault();\n toggleSelected(hover.item);\n },\n [toggleSelected, hover]\n );\n\n const handleRenderOption = useCallback(\n (item: IOptionItemProps | IOptionGroupProps, index) => {\n if (isOptionGroup(item)) {\n return (\n <OptionGroup\n checked={selectedOptions}\n name={item.name}\n tooltip={item.tooltip}\n key={item.id}\n setHover={handleHoverCallback}\n id={item.id}\n hover={hover.item}\n options={item.options}\n renderOptions={handleRenderOption}\n type={type}\n onChange={handleChange}\n filter={filter}\n mixedOptions={mixedOptions}\n />\n );\n }\n return (\n <Option\n name={item.name}\n ref={hover.item === item.id ? itemRef : null}\n key={index}\n tooltip={item.tooltip}\n onMouseEnter={handleMouseEnter}\n onClick={handleClick}\n id={item.id}\n hover={item.id === hover.item}\n className={optionClassName}\n renderOption={renderOption(\n { ...item, name: highlightText(item.name, filter) },\n {\n id: `option_${item.id}`,\n checked: selectedOptions && selectedOptions.includes(item.id),\n hover: hover.item === item.id,\n onChange: () => null,\n }\n )}\n />\n );\n },\n [\n handleClick,\n handleMouseEnter,\n hover.item,\n optionClassName,\n renderOption,\n filter,\n selectedOptions,\n handleHoverCallback,\n type,\n handleChange,\n mixedOptions,\n ]\n );\n\n const handleOnMouseLeave = useCallback(() => {\n setHover({ item: undefined, by: \"mouse\" });\n }, []);\n\n useEffect(() => {\n if (hover.by === \"keyboard\" && hover.item !== undefined) {\n const index = virtualItems.findIndex((item) => item.id === hover.item);\n if (index !== -1) {\n rowVirtualizer.scrollToIndex(index, { align: \"center\" });\n }\n }\n }, [hover, rowVirtualizer, virtualItems]);\n\n const handleOnKeyDown = useCallback(\n (e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n\n if (hover.item === undefined && filter === \"\") {\n return;\n }\n if (hover.item === \"addNew\") {\n handleEmpty(null);\n return;\n }\n if (hover.item === null && handleDefaultOptionChange) {\n handleDefaultOptionChange();\n return;\n }\n\n if (typeof hover.item !== \"undefined\" || hover.item !== null) {\n toggleSelected(hover.item);\n setFilter(\"\");\n }\n return;\n }\n setHover({\n item: handleKeyboardMovement(\n e,\n hover.item,\n flatOptions,\n showAddNew,\n showDefaultOption\n ),\n by: \"keyboard\",\n });\n },\n [\n filter,\n flatOptions,\n toggleSelected,\n handleDefaultOptionChange,\n handleEmpty,\n hover,\n showAddNew,\n showDefaultOption,\n ]\n );\n\n useEffect(() => {\n const listenerTarget = inputEl?.current;\n if (!listenerTarget) return;\n\n listenerTarget.addEventListener(\"input\", handleInputChange);\n listenerTarget.addEventListener(\"keydown\", handleOnKeyDown);\n return () => {\n listenerTarget.removeEventListener(\"input\", handleInputChange);\n listenerTarget.removeEventListener(\"keydown\", handleOnKeyDown);\n };\n }, [handleInputChange, handleOnKeyDown, inputEl]);\n\n const isDefaultOptionSelected = useCallback(() => {\n if (preselectDefaultValue) {\n return selectedOptions.length < 1 || selectedOptions[0] === \"\";\n } else {\n return (\n selectedOptions[0] === null ||\n selectedOptions.length === flatOptions.length\n );\n }\n }, [flatOptions.length, preselectDefaultValue, selectedOptions]);\n\n const renderVirtualItem = useCallback(\n (virtualItem: VirtualItem, index: number) => {\n switch (virtualItem.type) {\n case \"default\":\n return (\n <Option\n name={String(defaultValue)}\n ref={hover.item === null ? itemRef : null}\n hover={hover.item === null}\n onMouseEnter={handleMouseEnter}\n onClick={(e) => {\n e.preventDefault();\n toggleSelected(null);\n }}\n renderOption={renderOption(\n { name: defaultValue, id: null },\n {\n checked: isDefaultOptionSelected(),\n hover: hover.item === null,\n onChange: () => null,\n }\n )}\n />\n );\n\n case \"group\":\n if (!virtualItem.item || !isOptionGroup(virtualItem.item))\n return null;\n return (\n <OptionGroup\n checked={selectedOptions}\n name={virtualItem.item.name}\n tooltip={virtualItem.item.tooltip}\n key={virtualItem.item.id}\n setHover={handleHoverCallback}\n id={virtualItem.item.id}\n hover={hover.item}\n options={virtualItem.item.options}\n renderOptions={handleRenderOption}\n type={type}\n onChange={handleChange}\n filter={filter}\n mixedOptions={mixedOptions}\n />\n );\n\n case \"option\":\n if (!virtualItem.item || isOptionGroup(virtualItem.item)) return null;\n return (\n <Option\n name={(virtualItem.item as IOptionItemProps).name}\n ref={hover.item === virtualItem.id ? itemRef : null}\n key={index}\n tooltip={(virtualItem.item as IOptionItemProps).tooltip}\n onMouseEnter={() => handleMouseEnter(virtualItem.id)}\n onClick={handleClick}\n id={virtualItem.id}\n hover={virtualItem.id === hover.item}\n className={optionClassName}\n renderOption={renderOption(\n {\n ...(virtualItem.item as IOptionItemProps),\n name: highlightText(\n (virtualItem.item as IOptionItemProps).name,\n filter\n ),\n },\n {\n id: `option_${virtualItem.id}`,\n checked:\n selectedOptions && selectedOptions.includes(virtualItem.id),\n hover: hover.item === virtualItem.id,\n onChange: () => null,\n }\n )}\n />\n );\n\n case \"noResult\":\n return <StyledOption css=\"cursor: auto\">{noResultText}</StyledOption>;\n\n case \"addNew\":\n return (\n <StyledAutocompleteNewItem\n ref={hover.item === \"addNew\" ? itemRef : null}\n key=\"emptyValue\"\n hover={hover.item === \"addNew\"}\n onMouseDown={handleEmpty}\n onMouseEnter={onAddNewMouseEnter}\n >\n {emptyValue}\n </StyledAutocompleteNewItem>\n );\n\n default:\n return null;\n }\n },\n [\n defaultValue,\n hover.item,\n handleMouseEnter,\n renderOption,\n isDefaultOptionSelected,\n selectedOptions,\n handleHoverCallback,\n handleRenderOption,\n type,\n handleChange,\n filter,\n mixedOptions,\n handleClick,\n optionClassName,\n noResultText,\n handleEmpty,\n onAddNewMouseEnter,\n emptyValue,\n toggleSelected,\n ]\n );\n\n return (\n <StyledAutocompleteScrollShadow\n className={AutocompleteClassName}\n $isHidden={\n !defaultValue && !emptyValue && !noResultText && list.length < 1\n }\n >\n {({ onScroll }) => (\n <StyledAutocompleteBody key=\"body\" onMouseLeave={handleOnMouseLeave}>\n <div\n ref={listContainerRef}\n style={{\n height: `${Math.min(\n rowVirtualizer.getTotalSize() + 12,\n autoHeightMax\n )}px`,\n overflow: \"auto\",\n }}\n onScroll={(e) => {\n if (onScroll) onScroll(e);\n }}\n >\n <div\n style={{\n height: `${rowVirtualizer.getTotalSize()}px`,\n width: \"100%\",\n position: \"relative\",\n }}\n >\n {shouldUseVirtualization\n ? rowVirtualizer.getVirtualItems().map((virtualRow) => {\n const item = virtualItems[virtualRow.index];\n return (\n <div\n key={virtualRow.index}\n data-index={virtualRow.index}\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n width: \"100%\",\n transform: `translateY(${virtualRow.start}px)`,\n }}\n >\n {renderVirtualItem(item, virtualRow.index)}\n </div>\n );\n })\n : virtualItems.map((item, index) => (\n <React.Fragment key={index}>\n {renderVirtualItem(item, index)}\n </React.Fragment>\n ))}\n </div>\n </div>\n </StyledAutocompleteBody>\n )}\n </StyledAutocompleteScrollShadow>\n );\n};\n\nAutocomplete.displayName = \"Autocomplete\";\n"],"mappings":"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","ignoreList":[]}
package/dist/index.js CHANGED
@@ -17999,9 +17999,10 @@
17999
17999
  return [...list.slice(0, index), item, ...list.slice(index)];
18000
18000
  };
18001
18001
 
18002
- // Frozen options keep their order (checking/unchecking never moves them).
18003
- // Options that aren't frozen yet are slotted in among the checked items,
18004
- // alphabetically that's how a freshly added option finds its place.
18002
+ // Frozen options that are still present keep their order (checking/unchecking
18003
+ // never moves them). Everything else newly added options, or frozen options
18004
+ // that moved here (e.g. when the list is regrouped) is slotted in among the
18005
+ // checked items, alphabetically.
18005
18006
  var reconcileFlat = function reconcileFlat(prev, next, frozen, isChecked) {
18006
18007
  var nextById = new Map(next.map(function (o) {
18007
18008
  return [o.id, o];
@@ -18011,8 +18012,11 @@
18011
18012
  }).map(function (o) {
18012
18013
  return nextById.get(o.id);
18013
18014
  });
18015
+ var baseIds = new Set(base.map(function (o) {
18016
+ return o.id;
18017
+ }));
18014
18018
  var toPlace = next.filter(function (o) {
18015
- return !frozen.has(o.id);
18019
+ return !baseIds.has(o.id);
18016
18020
  });
18017
18021
  return toPlace.reduce(function (acc, item) {
18018
18022
  return insertAmongSameState(acc, item, isChecked);