@activecollab/components 1.0.304 → 1.0.305

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.
@@ -71,51 +71,61 @@ var Autocomplete = function Autocomplete(_ref) {
71
71
  return [selected];
72
72
  }, [selected]);
73
73
  var handleSort = (0, _react.useCallback)(function (opts) {
74
+ var _opts$;
74
75
  if (keepSameOptionsOrder) {
75
76
  return opts;
76
77
  }
77
- var selectedIdsSet = new Set(selectedOptions);
78
- if (opts.every(function (opt) {
79
- return !opt.options;
80
- })) {
81
- var sortedOptions = opts.filter(function (opt) {
82
- return selectedIdsSet.has(opt.id);
83
- }).concat(opts.filter(function (opt) {
84
- return !selectedIdsSet.has(opt.id);
85
- }));
86
- var selectedOptionsInOrder = sortedOptions.filter(function (opt) {
87
- return selectedIdsSet.has(opt.id);
88
- }).sort(function (a, b) {
89
- return selectedOptions.indexOf(a.id) - selectedOptions.indexOf(b.id);
90
- });
91
- return selectedOptionsInOrder.concat(sortedOptions.filter(function (opt) {
92
- return !selectedIdsSet.has(opt.id);
93
- }));
94
- }
95
- return opts.map(function (group) {
96
- var groupSelectedOptions = group.options.filter(function (opt) {
97
- return selectedIdsSet.has(opt.id);
98
- });
99
- var groupUnselectedOptions = group.options.filter(function (opt) {
100
- return !selectedIdsSet.has(opt.id);
101
- });
102
- var selectedOptionsInOrder = groupSelectedOptions.sort(function (a, b) {
103
- return selectedOptions.indexOf(a.id) - selectedOptions.indexOf(b.id);
78
+ var isGrouped = Array.isArray((_opts$ = opts[0]) === null || _opts$ === void 0 ? void 0 : _opts$.options);
79
+ if (isGrouped) {
80
+ return opts.map(function (group) {
81
+ var sortedGroupOptions = group.options.sort(function (a, b) {
82
+ if (selectedOptions.includes(b.id) && !selectedOptions.includes(a.id)) {
83
+ return 1;
84
+ }
85
+ if (selectedOptions.includes(a.id) && !selectedOptions.includes(b.id)) {
86
+ return -1;
87
+ }
88
+ return 0;
89
+ });
90
+ return _objectSpread(_objectSpread({}, group), {}, {
91
+ options: sortedGroupOptions
92
+ });
104
93
  });
105
- var finalOptionsInGroup = selectedOptionsInOrder.concat(groupUnselectedOptions);
106
- return _objectSpread(_objectSpread({}, group), {}, {
107
- options: finalOptionsInGroup
94
+ } else {
95
+ return opts.sort(function (a, b) {
96
+ if (selectedOptions.includes(b.id) && !selectedOptions.includes(a.id)) {
97
+ return 1;
98
+ }
99
+ if (selectedOptions.includes(a.id) && !selectedOptions.includes(b.id)) {
100
+ return -1;
101
+ }
102
+ return 0;
108
103
  });
109
- });
104
+ }
110
105
  // eslint-disable-next-line react-hooks/exhaustive-deps
111
106
  }, []);
112
107
  var sortList = (0, _react.useCallback)(function (options) {
108
+ var _options$;
113
109
  if (disabledInternalSort) {
114
110
  return handleSort(_toConsumableArray(options));
115
111
  }
116
- return handleSort(_toConsumableArray(options).sort(function (a, b) {
117
- return sortDirection === "asc" ? a.name.localeCompare(b.name) : b.name.localeCompare(a.name);
118
- }));
112
+ var isGrouped = Array.isArray((_options$ = options[0]) === null || _options$ === void 0 ? void 0 : _options$.options);
113
+ if (isGrouped) {
114
+ var sortedOptions = options.map(function (group) {
115
+ var sortedGroupOptions = group.options.sort(function (a, b) {
116
+ return sortDirection === "asc" ? a.name.localeCompare(b.name) : b.name.localeCompare(a.name);
117
+ });
118
+ return _objectSpread(_objectSpread({}, group), {}, {
119
+ options: handleSort(sortedGroupOptions)
120
+ });
121
+ });
122
+ return handleSort(sortedOptions);
123
+ } else {
124
+ var _sortedOptions = options.sort(function (a, b) {
125
+ return sortDirection === "asc" ? a.name.localeCompare(b.name) : b.name.localeCompare(a.name);
126
+ });
127
+ return handleSort(_sortedOptions);
128
+ }
119
129
  }, [sortDirection, disabledInternalSort, handleSort]);
120
130
  var sortedList = (0, _react.useMemo)(function () {
121
131
  return sortList(options);
@@ -1 +1 @@
1
- {"version":3,"file":"Autocomplete.js","names":["isOptionGroup","item","options","undefined","Autocomplete","type","inputEl","selected","emptyValue","noResultText","renderOption","option","name","defaultValue","sortDirection","handleChange","optionClassName","handleEmptyAction","disabledInternalSort","AutocompleteClassName","handleDefaultOptionChange","preselectDefaultValue","keepSameOptionsOrder","autoHeightMax","clearInputOnSelect","itemRef","useRef","listRef","selectedOptions","useMemo","Array","isArray","handleSort","useCallback","opts","selectedIdsSet","Set","every","opt","sortedOptions","filter","has","id","concat","selectedOptionsInOrder","sort","a","b","indexOf","map","group","groupSelectedOptions","groupUnselectedOptions","finalOptionsInGroup","sortList","localeCompare","sortedList","useState","by","hover","setHover","setFilter","handleEmpty","e","button","current","focus","onAddNewMouseEnter","showAddNew","trim","v","toLowerCase","renderAddNew","filterOptions","trimmedFilter","isGrouped","hovered","reduce","acc","groupedOption","filteredOptions","includes","length","list","showDefaultOption","flatOptions","handleInputChange","target","key","value","handleHoverCallback","toggleSelected","result","_id","dispatchEvent","Event","bubbles","handleMouseEnter","handleClick","preventDefault","handleRenderOption","index","highlightText","checked","onChange","handleOnMouseLeave","handleScroll","itemOffset","getClientHeight","getScrollTop","scrollTop","useEffect","offsetTop","handleOnKeyDown","handleKeyboardMovement","inputRef","addEventListener","removeEventListener","isDefaultOptionSelected","showNoResult","renderNoResult","onScroll","displayName"],"sources":["../../../../src/components/Autocomplete/Autocomplete.tsx"],"sourcesContent":["import React, {\n FC,\n useCallback,\n useState,\n useMemo,\n useEffect,\n useRef,\n ReactNode,\n ReactElement,\n MutableRefObject,\n} from \"react\";\nimport { Scrollbars } from \"react-custom-scrollbars-2\";\nimport highlightText from \"../../hooks/useHighlightText\";\nimport { handleKeyboardMovement } from \"./HandleKeyboard\";\nimport { IOptionItemProps, Option } from \"../Select/Option\";\nimport { IOptionGroupProps, OptionGroup } from \"../Select/OptionGroup\";\nimport {\n StyledAutocompleteBody,\n StyledAutocompleteNewItem,\n StyledAutocompleteScrollShadow,\n} from \"./Styles\";\nimport { StyledOption } from \"../Select/Option/Styles\";\n\nexport function isOptionGroup(\n item: IOptionGroupProps | IOptionItemProps\n): item is IOptionGroupProps {\n return (item as IOptionGroupProps).options !== undefined;\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 /** 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}\n\ninterface IHover {\n item: number | string | undefined | null;\n by: \"mouse\" | \"keyboard\" | undefined;\n}\n\nexport const Autocomplete: FC<IAutocompleteProps> = ({\n type,\n options = [],\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}) => {\n const itemRef = useRef<HTMLLIElement>(null);\n const listRef = useRef<Scrollbars>(null);\n\n const selectedOptions = useMemo(() => {\n if (Array.isArray(selected)) {\n return selected;\n }\n return [selected];\n }, [selected]);\n\n const handleSort = useCallback((opts) => {\n if (keepSameOptionsOrder) {\n return opts;\n }\n\n const selectedIdsSet = new Set(selectedOptions);\n\n if (opts.every((opt) => !opt.options)) {\n const sortedOptions = opts\n .filter((opt) => selectedIdsSet.has(opt.id))\n .concat(opts.filter((opt) => !selectedIdsSet.has(opt.id)));\n\n const selectedOptionsInOrder = sortedOptions\n .filter((opt) => selectedIdsSet.has(opt.id))\n .sort((a, b) => {\n return selectedOptions.indexOf(a.id) - selectedOptions.indexOf(b.id);\n });\n\n return selectedOptionsInOrder.concat(\n sortedOptions.filter((opt) => !selectedIdsSet.has(opt.id))\n );\n }\n\n return opts.map((group) => {\n const groupSelectedOptions = group.options.filter((opt) =>\n selectedIdsSet.has(opt.id)\n );\n const groupUnselectedOptions = group.options.filter(\n (opt) => !selectedIdsSet.has(opt.id)\n );\n\n const selectedOptionsInOrder = groupSelectedOptions.sort((a, b) => {\n return selectedOptions.indexOf(a.id) - selectedOptions.indexOf(b.id);\n });\n\n const finalOptionsInGroup = selectedOptionsInOrder.concat(\n groupUnselectedOptions\n );\n\n return {\n ...group,\n options: finalOptionsInGroup,\n };\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const sortList = useCallback(\n (options) => {\n if (disabledInternalSort) {\n return handleSort([...options]);\n }\n return handleSort(\n [...options].sort((a: IOptionItemProps, b: IOptionItemProps) =>\n sortDirection === \"asc\"\n ? a.name.localeCompare(b.name)\n : b.name.localeCompare(a.name)\n )\n );\n },\n [sortDirection, disabledInternalSort, handleSort]\n );\n\n const sortedList = useMemo(() => sortList(options), [options, sortList]);\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 renderAddNew = useMemo(() => {\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 }, [emptyValue, handleEmpty, hover, onAddNewMouseEnter]);\n\n const filterOptions = useCallback(\n (options, filter) => {\n const trimmedFilter = filter.trim();\n const isGrouped = options[0] && isOptionGroup(options[0]);\n if (isGrouped) {\n let hovered = false;\n return options.reduce((acc, groupedOption) => {\n const filteredOptions = groupedOption.options.filter((v) =>\n v.name.toLowerCase().includes(trimmedFilter.toLowerCase())\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((v) =>\n v.name.toLowerCase().includes(trimmedFilter.toLowerCase())\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]\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 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 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 />\n );\n }\n return (\n <Option\n name={item.name}\n ref={itemRef}\n key={index}\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 ]\n );\n\n const handleOnMouseLeave = useCallback(() => {\n setHover({ item: undefined, by: \"mouse\" });\n }, []);\n\n const handleScroll = useCallback((list: Scrollbars, itemOffset: number) => {\n if (list.getClientHeight() + list.getScrollTop() < itemOffset + 40) {\n return list.scrollTop(itemOffset - list.getClientHeight() + 30);\n }\n if (list.getScrollTop() > itemOffset) {\n return list.scrollTop(itemOffset);\n }\n }, []);\n\n useEffect(() => {\n if (hover.by === \"keyboard\" && hover.item !== undefined) {\n const item: HTMLLIElement | null = itemRef.current;\n const list = listRef.current;\n if (itemRef && item && list) {\n handleScroll(list, item.offsetTop);\n }\n }\n }, [handleScroll, hover]);\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 inputRef = inputEl?.current;\n if (inputRef) {\n inputRef.addEventListener(\"input\", handleInputChange);\n inputRef.addEventListener(\"keydown\", handleOnKeyDown);\n }\n return () => {\n if (inputRef) {\n inputRef.removeEventListener(\"input\", handleInputChange);\n inputRef.removeEventListener(\"keydown\", handleOnKeyDown);\n }\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 showNoResult = useMemo(\n () => noResultText && !showAddNew && list.length < 1,\n [list.length, noResultText, showAddNew]\n );\n\n const renderNoResult = useMemo(\n () => <StyledOption css=\"cursor: auto\">{noResultText}</StyledOption>,\n [noResultText]\n );\n\n return (\n <StyledAutocompleteScrollShadow\n className={AutocompleteClassName}\n $isHidden={\n !defaultValue && !emptyValue && !noResultText && list.length < 1\n }\n >\n {({ onScroll }): JSX.Element => (\n <StyledAutocompleteBody key=\"body\" onMouseLeave={handleOnMouseLeave}>\n <Scrollbars\n ref={listRef}\n key=\"scrollBar\"\n autoHeight\n autoHeightMax={autoHeightMax}\n onScroll={onScroll}\n >\n {defaultValue && !filter && (\n <Option\n name={defaultValue}\n ref={itemRef}\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 {list.map((item: IOptionItemProps, index) =>\n handleRenderOption(item, index)\n )}\n {showNoResult && renderNoResult}\n {showAddNew && renderAddNew}\n </Scrollbars>\n </StyledAutocompleteBody>\n )}\n </StyledAutocompleteScrollShadow>\n );\n};\n\nAutocomplete.displayName = \"Autocomplete\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"Autocomplete.js","names":["isOptionGroup","item","options","undefined","Autocomplete","type","inputEl","selected","emptyValue","noResultText","renderOption","option","name","defaultValue","sortDirection","handleChange","optionClassName","handleEmptyAction","disabledInternalSort","AutocompleteClassName","handleDefaultOptionChange","preselectDefaultValue","keepSameOptionsOrder","autoHeightMax","clearInputOnSelect","itemRef","useRef","listRef","selectedOptions","useMemo","Array","isArray","handleSort","useCallback","opts","isGrouped","map","group","sortedGroupOptions","sort","a","b","includes","id","sortList","sortedOptions","localeCompare","sortedList","useState","by","hover","setHover","filter","setFilter","handleEmpty","e","button","current","focus","onAddNewMouseEnter","showAddNew","trim","every","v","toLowerCase","renderAddNew","filterOptions","trimmedFilter","hovered","reduce","acc","groupedOption","filteredOptions","length","list","showDefaultOption","flatOptions","handleInputChange","target","key","value","handleHoverCallback","toggleSelected","result","_id","dispatchEvent","Event","bubbles","handleMouseEnter","handleClick","preventDefault","handleRenderOption","index","highlightText","checked","onChange","handleOnMouseLeave","handleScroll","itemOffset","getClientHeight","getScrollTop","scrollTop","useEffect","offsetTop","handleOnKeyDown","handleKeyboardMovement","inputRef","addEventListener","removeEventListener","isDefaultOptionSelected","showNoResult","renderNoResult","onScroll","displayName"],"sources":["../../../../src/components/Autocomplete/Autocomplete.tsx"],"sourcesContent":["import React, {\n FC,\n useCallback,\n useState,\n useMemo,\n useEffect,\n useRef,\n ReactNode,\n ReactElement,\n MutableRefObject,\n} from \"react\";\nimport { Scrollbars } from \"react-custom-scrollbars-2\";\nimport highlightText from \"../../hooks/useHighlightText\";\nimport { handleKeyboardMovement } from \"./HandleKeyboard\";\nimport { IOptionItemProps, Option } from \"../Select/Option\";\nimport { IOptionGroupProps, OptionGroup } from \"../Select/OptionGroup\";\nimport {\n StyledAutocompleteBody,\n StyledAutocompleteNewItem,\n StyledAutocompleteScrollShadow,\n} from \"./Styles\";\nimport { StyledOption } from \"../Select/Option/Styles\";\n\nexport function isOptionGroup(\n item: IOptionGroupProps | IOptionItemProps\n): item is IOptionGroupProps {\n return (item as IOptionGroupProps).options !== undefined;\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 /** 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}\n\ninterface IHover {\n item: number | string | undefined | null;\n by: \"mouse\" | \"keyboard\" | undefined;\n}\n\nexport const Autocomplete: FC<IAutocompleteProps> = ({\n type,\n options = [],\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}) => {\n const itemRef = useRef<HTMLLIElement>(null);\n const listRef = useRef<Scrollbars>(null);\n\n const selectedOptions = useMemo(() => {\n if (Array.isArray(selected)) {\n return selected;\n }\n return [selected];\n }, [selected]);\n\n const handleSort = useCallback((opts) => {\n if (keepSameOptionsOrder) {\n return opts;\n }\n\n const isGrouped = Array.isArray(opts[0]?.options);\n\n if (isGrouped) {\n return opts.map((group) => {\n const sortedGroupOptions = group.options.sort((a, b) => {\n if (\n selectedOptions.includes(b.id) &&\n !selectedOptions.includes(a.id)\n ) {\n return 1;\n }\n if (\n selectedOptions.includes(a.id) &&\n !selectedOptions.includes(b.id)\n ) {\n return -1;\n }\n return 0;\n });\n\n return {\n ...group,\n options: sortedGroupOptions,\n };\n });\n } else {\n return opts.sort((a, b) => {\n if (selectedOptions.includes(b.id) && !selectedOptions.includes(a.id)) {\n return 1;\n }\n if (selectedOptions.includes(a.id) && !selectedOptions.includes(b.id)) {\n return -1;\n }\n return 0;\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const sortList = useCallback(\n (options) => {\n if (disabledInternalSort) {\n return handleSort([...options]);\n }\n\n const isGrouped = Array.isArray(options[0]?.options);\n\n if (isGrouped) {\n const sortedOptions = options.map((group) => {\n const sortedGroupOptions = group.options.sort((a, b) =>\n sortDirection === \"asc\"\n ? a.name.localeCompare(b.name)\n : b.name.localeCompare(a.name)\n );\n\n return {\n ...group,\n options: handleSort(sortedGroupOptions),\n };\n });\n\n return handleSort(sortedOptions);\n } else {\n const sortedOptions = options.sort((a, b) =>\n sortDirection === \"asc\"\n ? a.name.localeCompare(b.name)\n : b.name.localeCompare(a.name)\n );\n\n return handleSort(sortedOptions);\n }\n },\n [sortDirection, disabledInternalSort, handleSort]\n );\n\n const sortedList = useMemo(() => sortList(options), [options, sortList]);\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 renderAddNew = useMemo(() => {\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 }, [emptyValue, handleEmpty, hover, onAddNewMouseEnter]);\n\n const filterOptions = useCallback(\n (options, filter) => {\n const trimmedFilter = filter.trim();\n const isGrouped = options[0] && isOptionGroup(options[0]);\n if (isGrouped) {\n let hovered = false;\n return options.reduce((acc, groupedOption) => {\n const filteredOptions = groupedOption.options.filter((v) =>\n v.name.toLowerCase().includes(trimmedFilter.toLowerCase())\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((v) =>\n v.name.toLowerCase().includes(trimmedFilter.toLowerCase())\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]\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 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 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 />\n );\n }\n return (\n <Option\n name={item.name}\n ref={itemRef}\n key={index}\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 ]\n );\n\n const handleOnMouseLeave = useCallback(() => {\n setHover({ item: undefined, by: \"mouse\" });\n }, []);\n\n const handleScroll = useCallback((list: Scrollbars, itemOffset: number) => {\n if (list.getClientHeight() + list.getScrollTop() < itemOffset + 40) {\n return list.scrollTop(itemOffset - list.getClientHeight() + 30);\n }\n if (list.getScrollTop() > itemOffset) {\n return list.scrollTop(itemOffset);\n }\n }, []);\n\n useEffect(() => {\n if (hover.by === \"keyboard\" && hover.item !== undefined) {\n const item: HTMLLIElement | null = itemRef.current;\n const list = listRef.current;\n if (itemRef && item && list) {\n handleScroll(list, item.offsetTop);\n }\n }\n }, [handleScroll, hover]);\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 inputRef = inputEl?.current;\n if (inputRef) {\n inputRef.addEventListener(\"input\", handleInputChange);\n inputRef.addEventListener(\"keydown\", handleOnKeyDown);\n }\n return () => {\n if (inputRef) {\n inputRef.removeEventListener(\"input\", handleInputChange);\n inputRef.removeEventListener(\"keydown\", handleOnKeyDown);\n }\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 showNoResult = useMemo(\n () => noResultText && !showAddNew && list.length < 1,\n [list.length, noResultText, showAddNew]\n );\n\n const renderNoResult = useMemo(\n () => <StyledOption css=\"cursor: auto\">{noResultText}</StyledOption>,\n [noResultText]\n );\n\n return (\n <StyledAutocompleteScrollShadow\n className={AutocompleteClassName}\n $isHidden={\n !defaultValue && !emptyValue && !noResultText && list.length < 1\n }\n >\n {({ onScroll }): JSX.Element => (\n <StyledAutocompleteBody key=\"body\" onMouseLeave={handleOnMouseLeave}>\n <Scrollbars\n ref={listRef}\n key=\"scrollBar\"\n autoHeight\n autoHeightMax={autoHeightMax}\n onScroll={onScroll}\n >\n {defaultValue && !filter && (\n <Option\n name={defaultValue}\n ref={itemRef}\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 {list.map((item: IOptionItemProps, index) =>\n handleRenderOption(item, index)\n )}\n {showNoResult && renderNoResult}\n {showAddNew && renderAddNew}\n </Scrollbars>\n </StyledAutocompleteBody>\n )}\n </StyledAutocompleteScrollShadow>\n );\n};\n\nAutocomplete.displayName = \"Autocomplete\";\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Autocomplete.d.ts","sourceRoot":"","sources":["../../../../src/components/Autocomplete/Autocomplete.tsx"],"names":[],"mappings":"AAAA,OAAc,EACZ,EAAE,EAMF,SAAS,EACT,YAAY,EACZ,gBAAgB,EACjB,MAAM,OAAO,CAAC;AAIf,OAAO,EAAE,gBAAgB,EAAU,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAe,MAAM,uBAAuB,CAAC;AAQvE,wBAAgB,aAAa,CAC3B,IAAI,EAAE,iBAAiB,GAAG,gBAAgB,GACzC,IAAI,IAAI,iBAAiB,CAE3B;AAED,MAAM,WAAW,kBAAkB;IACjC,sCAAsC;IACtC,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC7B,uCAAuC;IACvC,OAAO,CAAC,EAAE,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,EAAE,CAAC;IACnD,sBAAsB;IACtB,QAAQ,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,GAAG,MAAM,CAAC;IACjD,qBAAqB;IACrB,OAAO,CAAC,EAAE,gBAAgB,CAAC,gBAAgB,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IAChE,2BAA2B;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB;IACpB,YAAY,CAAC,EAAE,CACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EACjC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC1B,MAAM,GAAG,YAAY,CAAC;IAC3B,gDAAgD;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gCAAgC;IAChC,aAAa,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAC/B,4BAA4B;IAC5B,YAAY,CAAC,EAAE,CACb,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,KACxD,IAAI,CAAC;IACV,kCAAkC;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wBAAwB;IACxB,iBAAiB,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IACjD,8BAA8B;IAC9B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,2CAA2C;IAC3C,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,yCAAyC;IACzC,yBAAyB,CAAC,EAAE,MAAM,IAAI,CAAC;IACvC,uCAAuC;IACvC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,0DAA0D;IAC1D,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,6CAA6C;IAC7C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAOD,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,kBAAkB,CAye/C,CAAC"}
1
+ {"version":3,"file":"Autocomplete.d.ts","sourceRoot":"","sources":["../../../../src/components/Autocomplete/Autocomplete.tsx"],"names":[],"mappings":"AAAA,OAAc,EACZ,EAAE,EAMF,SAAS,EACT,YAAY,EACZ,gBAAgB,EACjB,MAAM,OAAO,CAAC;AAIf,OAAO,EAAE,gBAAgB,EAAU,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAe,MAAM,uBAAuB,CAAC;AAQvE,wBAAgB,aAAa,CAC3B,IAAI,EAAE,iBAAiB,GAAG,gBAAgB,GACzC,IAAI,IAAI,iBAAiB,CAE3B;AAED,MAAM,WAAW,kBAAkB;IACjC,sCAAsC;IACtC,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC7B,uCAAuC;IACvC,OAAO,CAAC,EAAE,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,EAAE,CAAC;IACnD,sBAAsB;IACtB,QAAQ,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,GAAG,MAAM,CAAC;IACjD,qBAAqB;IACrB,OAAO,CAAC,EAAE,gBAAgB,CAAC,gBAAgB,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IAChE,2BAA2B;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB;IACpB,YAAY,CAAC,EAAE,CACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EACjC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC1B,MAAM,GAAG,YAAY,CAAC;IAC3B,gDAAgD;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gCAAgC;IAChC,aAAa,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAC/B,4BAA4B;IAC5B,YAAY,CAAC,EAAE,CACb,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,KACxD,IAAI,CAAC;IACV,kCAAkC;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wBAAwB;IACxB,iBAAiB,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IACjD,8BAA8B;IAC9B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,2CAA2C;IAC3C,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,yCAAyC;IACzC,yBAAyB,CAAC,EAAE,MAAM,IAAI,CAAC;IACvC,uCAAuC;IACvC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,0DAA0D;IAC1D,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,6CAA6C;IAC7C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAOD,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,kBAAkB,CA0f/C,CAAC"}
@@ -48,51 +48,61 @@ export var Autocomplete = function Autocomplete(_ref) {
48
48
  return [selected];
49
49
  }, [selected]);
50
50
  var handleSort = useCallback(function (opts) {
51
+ var _opts$;
51
52
  if (keepSameOptionsOrder) {
52
53
  return opts;
53
54
  }
54
- var selectedIdsSet = new Set(selectedOptions);
55
- if (opts.every(function (opt) {
56
- return !opt.options;
57
- })) {
58
- var sortedOptions = opts.filter(function (opt) {
59
- return selectedIdsSet.has(opt.id);
60
- }).concat(opts.filter(function (opt) {
61
- return !selectedIdsSet.has(opt.id);
62
- }));
63
- var selectedOptionsInOrder = sortedOptions.filter(function (opt) {
64
- return selectedIdsSet.has(opt.id);
65
- }).sort(function (a, b) {
66
- return selectedOptions.indexOf(a.id) - selectedOptions.indexOf(b.id);
67
- });
68
- return selectedOptionsInOrder.concat(sortedOptions.filter(function (opt) {
69
- return !selectedIdsSet.has(opt.id);
70
- }));
71
- }
72
- return opts.map(function (group) {
73
- var groupSelectedOptions = group.options.filter(function (opt) {
74
- return selectedIdsSet.has(opt.id);
75
- });
76
- var groupUnselectedOptions = group.options.filter(function (opt) {
77
- return !selectedIdsSet.has(opt.id);
78
- });
79
- var selectedOptionsInOrder = groupSelectedOptions.sort(function (a, b) {
80
- return selectedOptions.indexOf(a.id) - selectedOptions.indexOf(b.id);
55
+ var isGrouped = Array.isArray((_opts$ = opts[0]) == null ? void 0 : _opts$.options);
56
+ if (isGrouped) {
57
+ return opts.map(function (group) {
58
+ var sortedGroupOptions = group.options.sort(function (a, b) {
59
+ if (selectedOptions.includes(b.id) && !selectedOptions.includes(a.id)) {
60
+ return 1;
61
+ }
62
+ if (selectedOptions.includes(a.id) && !selectedOptions.includes(b.id)) {
63
+ return -1;
64
+ }
65
+ return 0;
66
+ });
67
+ return _extends({}, group, {
68
+ options: sortedGroupOptions
69
+ });
81
70
  });
82
- var finalOptionsInGroup = selectedOptionsInOrder.concat(groupUnselectedOptions);
83
- return _extends({}, group, {
84
- options: finalOptionsInGroup
71
+ } else {
72
+ return opts.sort(function (a, b) {
73
+ if (selectedOptions.includes(b.id) && !selectedOptions.includes(a.id)) {
74
+ return 1;
75
+ }
76
+ if (selectedOptions.includes(a.id) && !selectedOptions.includes(b.id)) {
77
+ return -1;
78
+ }
79
+ return 0;
85
80
  });
86
- });
81
+ }
87
82
  // eslint-disable-next-line react-hooks/exhaustive-deps
88
83
  }, []);
89
84
  var sortList = useCallback(function (options) {
85
+ var _options$;
90
86
  if (disabledInternalSort) {
91
87
  return handleSort([].concat(options));
92
88
  }
93
- return handleSort([].concat(options).sort(function (a, b) {
94
- return sortDirection === "asc" ? a.name.localeCompare(b.name) : b.name.localeCompare(a.name);
95
- }));
89
+ var isGrouped = Array.isArray((_options$ = options[0]) == null ? void 0 : _options$.options);
90
+ if (isGrouped) {
91
+ var sortedOptions = options.map(function (group) {
92
+ var sortedGroupOptions = group.options.sort(function (a, b) {
93
+ return sortDirection === "asc" ? a.name.localeCompare(b.name) : b.name.localeCompare(a.name);
94
+ });
95
+ return _extends({}, group, {
96
+ options: handleSort(sortedGroupOptions)
97
+ });
98
+ });
99
+ return handleSort(sortedOptions);
100
+ } else {
101
+ var _sortedOptions = options.sort(function (a, b) {
102
+ return sortDirection === "asc" ? a.name.localeCompare(b.name) : b.name.localeCompare(a.name);
103
+ });
104
+ return handleSort(_sortedOptions);
105
+ }
96
106
  }, [sortDirection, disabledInternalSort, handleSort]);
97
107
  var sortedList = useMemo(function () {
98
108
  return sortList(options);
@@ -1 +1 @@
1
- {"version":3,"file":"Autocomplete.js","names":["React","useCallback","useState","useMemo","useEffect","useRef","Scrollbars","highlightText","handleKeyboardMovement","Option","OptionGroup","StyledAutocompleteBody","StyledAutocompleteNewItem","StyledAutocompleteScrollShadow","StyledOption","isOptionGroup","item","options","undefined","Autocomplete","type","inputEl","selected","emptyValue","noResultText","renderOption","option","name","defaultValue","sortDirection","handleChange","optionClassName","handleEmptyAction","disabledInternalSort","AutocompleteClassName","handleDefaultOptionChange","preselectDefaultValue","keepSameOptionsOrder","autoHeightMax","clearInputOnSelect","itemRef","listRef","selectedOptions","Array","isArray","handleSort","opts","selectedIdsSet","Set","every","opt","sortedOptions","filter","has","id","concat","selectedOptionsInOrder","sort","a","b","indexOf","map","group","groupSelectedOptions","groupUnselectedOptions","finalOptionsInGroup","sortList","localeCompare","sortedList","by","hover","setHover","setFilter","handleEmpty","e","button","current","focus","onAddNewMouseEnter","showAddNew","trim","v","toLowerCase","renderAddNew","filterOptions","trimmedFilter","isGrouped","hovered","reduce","acc","groupedOption","filteredOptions","includes","length","list","showDefaultOption","flatOptions","handleInputChange","target","key","value","handleHoverCallback","toggleSelected","result","_id","dispatchEvent","Event","bubbles","handleMouseEnter","handleClick","preventDefault","handleRenderOption","index","checked","onChange","handleOnMouseLeave","handleScroll","itemOffset","getClientHeight","getScrollTop","scrollTop","offsetTop","handleOnKeyDown","inputRef","addEventListener","removeEventListener","isDefaultOptionSelected","showNoResult","renderNoResult","onScroll","displayName"],"sources":["../../../../src/components/Autocomplete/Autocomplete.tsx"],"sourcesContent":["import React, {\n FC,\n useCallback,\n useState,\n useMemo,\n useEffect,\n useRef,\n ReactNode,\n ReactElement,\n MutableRefObject,\n} from \"react\";\nimport { Scrollbars } from \"react-custom-scrollbars-2\";\nimport highlightText from \"../../hooks/useHighlightText\";\nimport { handleKeyboardMovement } from \"./HandleKeyboard\";\nimport { IOptionItemProps, Option } from \"../Select/Option\";\nimport { IOptionGroupProps, OptionGroup } from \"../Select/OptionGroup\";\nimport {\n StyledAutocompleteBody,\n StyledAutocompleteNewItem,\n StyledAutocompleteScrollShadow,\n} from \"./Styles\";\nimport { StyledOption } from \"../Select/Option/Styles\";\n\nexport function isOptionGroup(\n item: IOptionGroupProps | IOptionItemProps\n): item is IOptionGroupProps {\n return (item as IOptionGroupProps).options !== undefined;\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 /** 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}\n\ninterface IHover {\n item: number | string | undefined | null;\n by: \"mouse\" | \"keyboard\" | undefined;\n}\n\nexport const Autocomplete: FC<IAutocompleteProps> = ({\n type,\n options = [],\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}) => {\n const itemRef = useRef<HTMLLIElement>(null);\n const listRef = useRef<Scrollbars>(null);\n\n const selectedOptions = useMemo(() => {\n if (Array.isArray(selected)) {\n return selected;\n }\n return [selected];\n }, [selected]);\n\n const handleSort = useCallback((opts) => {\n if (keepSameOptionsOrder) {\n return opts;\n }\n\n const selectedIdsSet = new Set(selectedOptions);\n\n if (opts.every((opt) => !opt.options)) {\n const sortedOptions = opts\n .filter((opt) => selectedIdsSet.has(opt.id))\n .concat(opts.filter((opt) => !selectedIdsSet.has(opt.id)));\n\n const selectedOptionsInOrder = sortedOptions\n .filter((opt) => selectedIdsSet.has(opt.id))\n .sort((a, b) => {\n return selectedOptions.indexOf(a.id) - selectedOptions.indexOf(b.id);\n });\n\n return selectedOptionsInOrder.concat(\n sortedOptions.filter((opt) => !selectedIdsSet.has(opt.id))\n );\n }\n\n return opts.map((group) => {\n const groupSelectedOptions = group.options.filter((opt) =>\n selectedIdsSet.has(opt.id)\n );\n const groupUnselectedOptions = group.options.filter(\n (opt) => !selectedIdsSet.has(opt.id)\n );\n\n const selectedOptionsInOrder = groupSelectedOptions.sort((a, b) => {\n return selectedOptions.indexOf(a.id) - selectedOptions.indexOf(b.id);\n });\n\n const finalOptionsInGroup = selectedOptionsInOrder.concat(\n groupUnselectedOptions\n );\n\n return {\n ...group,\n options: finalOptionsInGroup,\n };\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const sortList = useCallback(\n (options) => {\n if (disabledInternalSort) {\n return handleSort([...options]);\n }\n return handleSort(\n [...options].sort((a: IOptionItemProps, b: IOptionItemProps) =>\n sortDirection === \"asc\"\n ? a.name.localeCompare(b.name)\n : b.name.localeCompare(a.name)\n )\n );\n },\n [sortDirection, disabledInternalSort, handleSort]\n );\n\n const sortedList = useMemo(() => sortList(options), [options, sortList]);\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 renderAddNew = useMemo(() => {\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 }, [emptyValue, handleEmpty, hover, onAddNewMouseEnter]);\n\n const filterOptions = useCallback(\n (options, filter) => {\n const trimmedFilter = filter.trim();\n const isGrouped = options[0] && isOptionGroup(options[0]);\n if (isGrouped) {\n let hovered = false;\n return options.reduce((acc, groupedOption) => {\n const filteredOptions = groupedOption.options.filter((v) =>\n v.name.toLowerCase().includes(trimmedFilter.toLowerCase())\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((v) =>\n v.name.toLowerCase().includes(trimmedFilter.toLowerCase())\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]\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 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 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 />\n );\n }\n return (\n <Option\n name={item.name}\n ref={itemRef}\n key={index}\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 ]\n );\n\n const handleOnMouseLeave = useCallback(() => {\n setHover({ item: undefined, by: \"mouse\" });\n }, []);\n\n const handleScroll = useCallback((list: Scrollbars, itemOffset: number) => {\n if (list.getClientHeight() + list.getScrollTop() < itemOffset + 40) {\n return list.scrollTop(itemOffset - list.getClientHeight() + 30);\n }\n if (list.getScrollTop() > itemOffset) {\n return list.scrollTop(itemOffset);\n }\n }, []);\n\n useEffect(() => {\n if (hover.by === \"keyboard\" && hover.item !== undefined) {\n const item: HTMLLIElement | null = itemRef.current;\n const list = listRef.current;\n if (itemRef && item && list) {\n handleScroll(list, item.offsetTop);\n }\n }\n }, [handleScroll, hover]);\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 inputRef = inputEl?.current;\n if (inputRef) {\n inputRef.addEventListener(\"input\", handleInputChange);\n inputRef.addEventListener(\"keydown\", handleOnKeyDown);\n }\n return () => {\n if (inputRef) {\n inputRef.removeEventListener(\"input\", handleInputChange);\n inputRef.removeEventListener(\"keydown\", handleOnKeyDown);\n }\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 showNoResult = useMemo(\n () => noResultText && !showAddNew && list.length < 1,\n [list.length, noResultText, showAddNew]\n );\n\n const renderNoResult = useMemo(\n () => <StyledOption css=\"cursor: auto\">{noResultText}</StyledOption>,\n [noResultText]\n );\n\n return (\n <StyledAutocompleteScrollShadow\n className={AutocompleteClassName}\n $isHidden={\n !defaultValue && !emptyValue && !noResultText && list.length < 1\n }\n >\n {({ onScroll }): JSX.Element => (\n <StyledAutocompleteBody key=\"body\" onMouseLeave={handleOnMouseLeave}>\n <Scrollbars\n ref={listRef}\n key=\"scrollBar\"\n autoHeight\n autoHeightMax={autoHeightMax}\n onScroll={onScroll}\n >\n {defaultValue && !filter && (\n <Option\n name={defaultValue}\n ref={itemRef}\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 {list.map((item: IOptionItemProps, index) =>\n handleRenderOption(item, index)\n )}\n {showNoResult && renderNoResult}\n {showAddNew && renderAddNew}\n </Scrollbars>\n </StyledAutocompleteBody>\n )}\n </StyledAutocompleteScrollShadow>\n );\n};\n\nAutocomplete.displayName = \"Autocomplete\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"Autocomplete.js","names":["React","useCallback","useState","useMemo","useEffect","useRef","Scrollbars","highlightText","handleKeyboardMovement","Option","OptionGroup","StyledAutocompleteBody","StyledAutocompleteNewItem","StyledAutocompleteScrollShadow","StyledOption","isOptionGroup","item","options","undefined","Autocomplete","type","inputEl","selected","emptyValue","noResultText","renderOption","option","name","defaultValue","sortDirection","handleChange","optionClassName","handleEmptyAction","disabledInternalSort","AutocompleteClassName","handleDefaultOptionChange","preselectDefaultValue","keepSameOptionsOrder","autoHeightMax","clearInputOnSelect","itemRef","listRef","selectedOptions","Array","isArray","handleSort","opts","isGrouped","map","group","sortedGroupOptions","sort","a","b","includes","id","sortList","sortedOptions","localeCompare","sortedList","by","hover","setHover","filter","setFilter","handleEmpty","e","button","current","focus","onAddNewMouseEnter","showAddNew","trim","every","v","toLowerCase","renderAddNew","filterOptions","trimmedFilter","hovered","reduce","acc","groupedOption","filteredOptions","length","list","showDefaultOption","flatOptions","handleInputChange","target","key","value","handleHoverCallback","toggleSelected","result","_id","dispatchEvent","Event","bubbles","handleMouseEnter","handleClick","preventDefault","handleRenderOption","index","checked","onChange","handleOnMouseLeave","handleScroll","itemOffset","getClientHeight","getScrollTop","scrollTop","offsetTop","handleOnKeyDown","inputRef","addEventListener","removeEventListener","isDefaultOptionSelected","showNoResult","renderNoResult","onScroll","displayName"],"sources":["../../../../src/components/Autocomplete/Autocomplete.tsx"],"sourcesContent":["import React, {\n FC,\n useCallback,\n useState,\n useMemo,\n useEffect,\n useRef,\n ReactNode,\n ReactElement,\n MutableRefObject,\n} from \"react\";\nimport { Scrollbars } from \"react-custom-scrollbars-2\";\nimport highlightText from \"../../hooks/useHighlightText\";\nimport { handleKeyboardMovement } from \"./HandleKeyboard\";\nimport { IOptionItemProps, Option } from \"../Select/Option\";\nimport { IOptionGroupProps, OptionGroup } from \"../Select/OptionGroup\";\nimport {\n StyledAutocompleteBody,\n StyledAutocompleteNewItem,\n StyledAutocompleteScrollShadow,\n} from \"./Styles\";\nimport { StyledOption } from \"../Select/Option/Styles\";\n\nexport function isOptionGroup(\n item: IOptionGroupProps | IOptionItemProps\n): item is IOptionGroupProps {\n return (item as IOptionGroupProps).options !== undefined;\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 /** 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}\n\ninterface IHover {\n item: number | string | undefined | null;\n by: \"mouse\" | \"keyboard\" | undefined;\n}\n\nexport const Autocomplete: FC<IAutocompleteProps> = ({\n type,\n options = [],\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}) => {\n const itemRef = useRef<HTMLLIElement>(null);\n const listRef = useRef<Scrollbars>(null);\n\n const selectedOptions = useMemo(() => {\n if (Array.isArray(selected)) {\n return selected;\n }\n return [selected];\n }, [selected]);\n\n const handleSort = useCallback((opts) => {\n if (keepSameOptionsOrder) {\n return opts;\n }\n\n const isGrouped = Array.isArray(opts[0]?.options);\n\n if (isGrouped) {\n return opts.map((group) => {\n const sortedGroupOptions = group.options.sort((a, b) => {\n if (\n selectedOptions.includes(b.id) &&\n !selectedOptions.includes(a.id)\n ) {\n return 1;\n }\n if (\n selectedOptions.includes(a.id) &&\n !selectedOptions.includes(b.id)\n ) {\n return -1;\n }\n return 0;\n });\n\n return {\n ...group,\n options: sortedGroupOptions,\n };\n });\n } else {\n return opts.sort((a, b) => {\n if (selectedOptions.includes(b.id) && !selectedOptions.includes(a.id)) {\n return 1;\n }\n if (selectedOptions.includes(a.id) && !selectedOptions.includes(b.id)) {\n return -1;\n }\n return 0;\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const sortList = useCallback(\n (options) => {\n if (disabledInternalSort) {\n return handleSort([...options]);\n }\n\n const isGrouped = Array.isArray(options[0]?.options);\n\n if (isGrouped) {\n const sortedOptions = options.map((group) => {\n const sortedGroupOptions = group.options.sort((a, b) =>\n sortDirection === \"asc\"\n ? a.name.localeCompare(b.name)\n : b.name.localeCompare(a.name)\n );\n\n return {\n ...group,\n options: handleSort(sortedGroupOptions),\n };\n });\n\n return handleSort(sortedOptions);\n } else {\n const sortedOptions = options.sort((a, b) =>\n sortDirection === \"asc\"\n ? a.name.localeCompare(b.name)\n : b.name.localeCompare(a.name)\n );\n\n return handleSort(sortedOptions);\n }\n },\n [sortDirection, disabledInternalSort, handleSort]\n );\n\n const sortedList = useMemo(() => sortList(options), [options, sortList]);\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 renderAddNew = useMemo(() => {\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 }, [emptyValue, handleEmpty, hover, onAddNewMouseEnter]);\n\n const filterOptions = useCallback(\n (options, filter) => {\n const trimmedFilter = filter.trim();\n const isGrouped = options[0] && isOptionGroup(options[0]);\n if (isGrouped) {\n let hovered = false;\n return options.reduce((acc, groupedOption) => {\n const filteredOptions = groupedOption.options.filter((v) =>\n v.name.toLowerCase().includes(trimmedFilter.toLowerCase())\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((v) =>\n v.name.toLowerCase().includes(trimmedFilter.toLowerCase())\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]\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 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 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 />\n );\n }\n return (\n <Option\n name={item.name}\n ref={itemRef}\n key={index}\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 ]\n );\n\n const handleOnMouseLeave = useCallback(() => {\n setHover({ item: undefined, by: \"mouse\" });\n }, []);\n\n const handleScroll = useCallback((list: Scrollbars, itemOffset: number) => {\n if (list.getClientHeight() + list.getScrollTop() < itemOffset + 40) {\n return list.scrollTop(itemOffset - list.getClientHeight() + 30);\n }\n if (list.getScrollTop() > itemOffset) {\n return list.scrollTop(itemOffset);\n }\n }, []);\n\n useEffect(() => {\n if (hover.by === \"keyboard\" && hover.item !== undefined) {\n const item: HTMLLIElement | null = itemRef.current;\n const list = listRef.current;\n if (itemRef && item && list) {\n handleScroll(list, item.offsetTop);\n }\n }\n }, [handleScroll, hover]);\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 inputRef = inputEl?.current;\n if (inputRef) {\n inputRef.addEventListener(\"input\", handleInputChange);\n inputRef.addEventListener(\"keydown\", handleOnKeyDown);\n }\n return () => {\n if (inputRef) {\n inputRef.removeEventListener(\"input\", handleInputChange);\n inputRef.removeEventListener(\"keydown\", handleOnKeyDown);\n }\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 showNoResult = useMemo(\n () => noResultText && !showAddNew && list.length < 1,\n [list.length, noResultText, showAddNew]\n );\n\n const renderNoResult = useMemo(\n () => <StyledOption css=\"cursor: auto\">{noResultText}</StyledOption>,\n [noResultText]\n );\n\n return (\n <StyledAutocompleteScrollShadow\n className={AutocompleteClassName}\n $isHidden={\n !defaultValue && !emptyValue && !noResultText && list.length < 1\n }\n >\n {({ onScroll }): JSX.Element => (\n <StyledAutocompleteBody key=\"body\" onMouseLeave={handleOnMouseLeave}>\n <Scrollbars\n ref={listRef}\n key=\"scrollBar\"\n autoHeight\n autoHeightMax={autoHeightMax}\n onScroll={onScroll}\n >\n {defaultValue && !filter && (\n <Option\n name={defaultValue}\n ref={itemRef}\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 {list.map((item: IOptionItemProps, index) =>\n handleRenderOption(item, index)\n )}\n {showNoResult && renderNoResult}\n {showAddNew && renderAddNew}\n </Scrollbars>\n </StyledAutocompleteBody>\n )}\n </StyledAutocompleteScrollShadow>\n );\n};\n\nAutocomplete.displayName = \"Autocomplete\";\n"],"mappings":"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"}