@activecollab/components 1.0.238 → 1.0.240

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.
@@ -58,7 +58,8 @@ var Autocomplete = function Autocomplete(_ref) {
58
58
  _ref$keepSameOptionsO = _ref.keepSameOptionsOrder,
59
59
  keepSameOptionsOrder = _ref$keepSameOptionsO === void 0 ? false : _ref$keepSameOptionsO,
60
60
  _ref$autoHeightMax = _ref.autoHeightMax,
61
- autoHeightMax = _ref$autoHeightMax === void 0 ? 340 : _ref$autoHeightMax;
61
+ autoHeightMax = _ref$autoHeightMax === void 0 ? 340 : _ref$autoHeightMax,
62
+ clearInputOnSelect = _ref.clearInputOnSelect;
62
63
  var itemRef = (0, _react.useRef)(null);
63
64
  var listRef = (0, _react.useRef)(null);
64
65
  var selectedOptions = (0, _react.useMemo)(function () {
@@ -219,11 +220,13 @@ var Autocomplete = function Autocomplete(_ref) {
219
220
  result = [].concat(_toConsumableArray(selectedOptions), [id]);
220
221
  }
221
222
  } else {
222
- if (selectedOptions.includes(id)) {
223
- result = null;
224
- } else {
225
- result = id;
223
+ if (clearInputOnSelect && inputEl) {
224
+ inputEl.value = "";
225
+ inputEl.dispatchEvent(new Event("change", {
226
+ bubbles: true
227
+ }));
226
228
  }
229
+ result = id;
227
230
  }
228
231
  setFilter("");
229
232
  } else {
@@ -235,7 +238,7 @@ var Autocomplete = function Autocomplete(_ref) {
235
238
  if (typeof handleChange === "function") {
236
239
  handleChange(result);
237
240
  }
238
- }, [handleChange, handleDefaultOptionChange, selectedOptions, type]);
241
+ }, [clearInputOnSelect, handleChange, handleDefaultOptionChange, inputEl, selectedOptions, type]);
239
242
  var handleMouseEnter = (0, _react.useCallback)(function (e) {
240
243
  if (e === undefined || e === null) {
241
244
  return setHover({
@@ -326,7 +329,7 @@ var Autocomplete = function Autocomplete(_ref) {
326
329
  handleDefaultOptionChange();
327
330
  return;
328
331
  }
329
- if (hover.item) {
332
+ if (typeof hover.item !== "undefined" || hover.item !== null) {
330
333
  toggleSelected(hover.item);
331
334
  setFilter("");
332
335
  }
@@ -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","itemRef","useRef","listRef","selectedOptions","useMemo","Array","isArray","handleSort","useCallback","opts","sort","a","b","includes","id","sortList","localeCompare","sortedList","useState","by","hover","setHover","filter","setFilter","handleEmpty","e","button","focus","onAddNewMouseEnter","showAddNew","trim","every","v","toLowerCase","renderAddNew","filterOptions","trimmedFilter","isGrouped","hovered","reduce","acc","groupedOption","filteredOptions","length","list","showDefaultOption","flatOptions","handleInputChange","target","key","value","handleHoverCallback","toggleSelected","result","_id","handleMouseEnter","handleClick","preventDefault","handleRenderOption","index","highlightText","checked","onChange","handleOnMouseLeave","handleScroll","itemOffset","getClientHeight","getScrollTop","scrollTop","useEffect","current","offsetTop","handleOnKeyDown","handleKeyboardMovement","onkeydown","onkeyup","isDefaultOptionSelected","showNoResult","renderNoResult","onScroll","map","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} from \"react\";\nimport { Scrollbars } from \"react-custom-scrollbars\";\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 StyledAutocompleteNoResult,\n StyledAutocompleteScrollShadow,\n} from \"./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?: HTMLInputElement | null;\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}\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}) => {\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 return opts.sort((a: IOptionItemProps, b: IOptionItemProps) => {\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 // 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?.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 if (selectedOptions.includes(id)) {\n result = null;\n } else {\n result = id;\n }\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 [handleChange, handleDefaultOptionChange, selectedOptions, type]\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 (hover.item) {\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 if (inputEl) {\n inputEl.onkeydown = handleOnKeyDown;\n inputEl.onkeyup = handleInputChange;\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 () => (\n <StyledAutocompleteNoResult>{noResultText}</StyledAutocompleteNoResult>\n ),\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","sort","a","b","includes","id","sortList","localeCompare","sortedList","useState","by","hover","setHover","filter","setFilter","handleEmpty","e","button","focus","onAddNewMouseEnter","showAddNew","trim","every","v","toLowerCase","renderAddNew","filterOptions","trimmedFilter","isGrouped","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","current","offsetTop","handleOnKeyDown","handleKeyboardMovement","onkeydown","onkeyup","isDefaultOptionSelected","showNoResult","renderNoResult","onScroll","map","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} from \"react\";\nimport { Scrollbars } from \"react-custom-scrollbars\";\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 StyledAutocompleteNoResult,\n StyledAutocompleteScrollShadow,\n} from \"./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?: HTMLInputElement | null;\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 return opts.sort((a: IOptionItemProps, b: IOptionItemProps) => {\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 // 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?.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 if (clearInputOnSelect && inputEl) {\n inputEl.value = \"\";\n inputEl.dispatchEvent(new Event(\"change\", { bubbles: true }));\n }\n result = id;\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 if (inputEl) {\n inputEl.onkeydown = handleOnKeyDown;\n inputEl.onkeyup = handleInputChange;\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 () => (\n <StyledAutocompleteNoResult>{noResultText}</StyledAutocompleteNoResult>\n ),\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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"}
@@ -143,11 +143,13 @@ var ComboBox = function ComboBox(_ref) {
143
143
  setOpen(false);
144
144
  }, [handleEmptyAction]);
145
145
  var handleChange = (0, _react.useCallback)(function (selectedValue) {
146
- onChange === null || onChange === void 0 ? void 0 : onChange(selectedValue);
146
+ if (selectedValue !== selected && typeof onChange === "function") {
147
+ onChange(selectedValue);
148
+ }
147
149
  if (forceCloseMenu) {
148
150
  setOpen(false);
149
151
  }
150
- }, [forceCloseMenu, onChange]);
152
+ }, [forceCloseMenu, onChange, selected]);
151
153
  var onOpen = (0, _react.useCallback)(function () {
152
154
  if (!disabled) {
153
155
  setOpen(true);
@@ -1 +1 @@
1
- {"version":3,"file":"ComboBox.js","names":["ComboBox","options","selected","loading","loadingText","onChange","placeholder","handleEmptyAction","disabled","size","invalid","type","renderChip","forceCloseMenu","renderOption","limitChips","hiddenNumberText","inPortal","inputWrapperClassName","scrollWrapper","prop","selectedName","useMemo","value","map","v","find","q","id","name","useState","setValue","handleOnChange","useCallback","e","target","childNode","setChildNode","elementRef","useRef","handleRef","useForkRef","wrapperRef","chipWrapper","comboBoxRef","open","setOpen","useOnClickOutside","current","contains","handleOnKeyDown","key","stopPropagation","useEffect","focus","blur","emptyAction","handleChange","selectedValue","onOpen","handleRenderOption","option","props","image","color","textColor","handleDeselect","handleMouseDown","preventDefault","handleBlur","renderChipAdornment","index","avatarProps","leftAdornment","undefined","onClose","Array","isArray","includes","newSelected","filter","item","showOnClose","autoSize","length","startAdornment","elements","total","forEach","isGrouped","isOptionGroup","push","groupedOptions","o","_index","hidden","splice","showXIcon","hasSelected","classNames","display","flex","alignSelf","width","children","zIndex","clientWidth","displayName"],"sources":["../../../../src/components/ComboBox/ComboBox.tsx"],"sourcesContent":["import React, {\n FC,\n useCallback,\n useState,\n useEffect,\n useRef,\n useMemo,\n Fragment,\n} from \"react\";\nimport { RadioButton } from \"../RadioButton\";\nimport { Autocomplete } from \"../Autocomplete\";\nimport { IconButton } from \"../IconButton\";\nimport {\n IAutocompleteProps,\n isOptionGroup,\n} from \"../Autocomplete/Autocomplete\";\nimport useForkRef from \"../../utils/useForkRef\";\nimport { Popper } from \"../Popper\";\nimport { IOptionGroupProps, IOptionItemProps } from \"../Select\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { SpinnerLoader } from \"../Loaders/Spinner/SpinnerLoader\";\nimport { OptionContent } from \"../Select/OptionContent/OptionContent\";\nimport {\n StyledComboBoxCloseSmallIcon,\n StyledComboBoxCollapseExpandSingleIcon,\n StyledComboBoxInput,\n StyledComboBoxList,\n StyledChipWrapper,\n} from \"./Styles\";\nimport { InputSize } from \"../Input/types\";\nimport { InputAdornment } from \"../Input/InputAdornment\";\nimport { Checkbox } from \"../Checkbox\";\nimport { Chip } from \"../Chip\";\nimport { StyledInput, StyledInputWrapper } from \"../Input/Styles\";\nimport { useOnClickOutside } from \"../../hooks/useOnClickOutside\";\nimport { Avatar, IAvatar } from \"../Avatar\";\nimport { Trigger } from \"../Trigger\";\nimport { Typography } from \"../Typography/Typography\";\nimport tw from \"twin.macro\";\nimport { Portal } from \"../../helpers\";\nimport { ConditionalWrapper } from \"../../helpers/ConditionWrapper/ConditionWrapper\";\nimport classNames from \"classnames\";\n\nexport interface IComboBoxProps\n extends Omit<IAutocompleteProps, \"handleChange\" | \"inputEl\"> {\n /** Set combobox in to loading state */\n loading?: boolean;\n /** Text to display while in loading state */\n loadingText?: string;\n /** onChange callback */\n onChange?: (\n e: (string | number)[] | string | number | null | undefined\n ) => void;\n /** Placeholder for Select input */\n placeholder?: string;\n /** disable Input element */\n disabled?: boolean;\n /** Combobox size */\n size?: InputSize;\n /** Invalid state */\n invalid?: boolean;\n /** Render Chip */\n renderChip?: <T extends IOptionItemProps>(\n item: T,\n key?: string | number\n ) => JSX.Element;\n /** Close menu on change */\n forceCloseMenu?: boolean;\n /** Limit chips */\n limitChips?: number;\n /** Hidden number text */\n hiddenNumberText?: (hidden: number) => string;\n /** Render Autocomplete in <Portal> */\n inPortal?: boolean;\n /** inputWrapperClassName */\n inputWrapperClassName?: string;\n /** scrollWrapper */\n scrollWrapper?: boolean;\n}\n\nexport const ComboBox: FC<IComboBoxProps> = ({\n options = [],\n selected,\n loading = false,\n loadingText,\n onChange,\n placeholder,\n handleEmptyAction,\n disabled = false,\n size = \"regular\",\n invalid = false,\n type = \"single\",\n renderChip,\n forceCloseMenu = type === \"single\",\n renderOption,\n limitChips = 2,\n hiddenNumberText,\n inPortal = false,\n inputWrapperClassName,\n scrollWrapper,\n ...prop\n}) => {\n const selectedName = useMemo(() => {\n let value = \"\";\n if (!selected) {\n return value;\n }\n options.map((v) => {\n if ((v as IOptionGroupProps)?.options) {\n return (v as IOptionGroupProps).options.find((q) => {\n if (q.id === selected) {\n value = q.name;\n return;\n }\n });\n } else {\n if (v.id === selected) {\n value = v.name;\n return;\n }\n }\n });\n return value;\n }, [options, selected]);\n const [value, setValue] = useState(selectedName);\n const handleOnChange = useCallback((e) => setValue(e.target.value), []);\n const [childNode, setChildNode] = useState<HTMLInputElement | null>();\n const elementRef = useRef<HTMLInputElement | null>(null);\n const handleRef = useForkRef(setChildNode, elementRef);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const chipWrapper = useRef<HTMLDivElement>(null);\n const comboBoxRef = useRef<HTMLDivElement | null>(null);\n\n const [open, setOpen] = useState(false);\n\n useOnClickOutside(wrapperRef, (e) => {\n if (e.target && comboBoxRef.current?.contains(e.target as Node)) {\n return;\n }\n setOpen(false);\n });\n\n const handleOnKeyDown = useCallback(\n (e) => {\n if (e.key === \"Escape\" && open) {\n setOpen(false);\n setValue(selectedName);\n e.stopPropagation();\n }\n if (e.key === \"Enter\" && type === \"multiple\") {\n setValue(\"\");\n }\n },\n [open, selectedName, type]\n );\n\n useEffect(() => {\n open && childNode?.focus();\n !open && childNode?.blur();\n }, [childNode, open]);\n\n useEffect(() => {\n setValue(selectedName);\n }, [selectedName]);\n\n const emptyAction = useCallback(\n (v) => {\n handleEmptyAction?.(v);\n setOpen(false);\n },\n [handleEmptyAction]\n );\n\n const handleChange = useCallback(\n (selectedValue) => {\n onChange?.(selectedValue);\n if (forceCloseMenu) {\n setOpen(false);\n }\n },\n [forceCloseMenu, onChange]\n );\n\n const onOpen = useCallback(() => {\n if (!disabled) {\n setOpen(true);\n }\n }, [disabled]);\n\n const handleRenderOption = useCallback(\n (option, props) => {\n if (typeof renderOption === \"function\") {\n return renderOption(option, props);\n }\n if (type === \"multiple\") {\n return (\n <>\n <OptionContent\n imageUrl={option.image}\n color={option.color}\n textColor={option.textColor}\n name={option.name}\n />\n <Checkbox {...props} />\n </>\n );\n }\n return (\n <>\n <OptionContent\n imageUrl={option.image}\n color={option.color}\n textColor={option.textColor}\n name={option.name}\n />\n <RadioButton {...props} />\n </>\n );\n },\n [type, renderOption]\n );\n\n const handleDeselect = useCallback(\n (e) => {\n e.stopPropagation();\n if (type === \"multiple\") {\n onChange?.([]);\n } else {\n onChange?.(\"\");\n }\n\n setOpen(false);\n },\n [type, onChange]\n );\n\n const handleMouseDown = useCallback((e) => {\n e.preventDefault();\n }, []);\n\n const handleBlur = useCallback(() => {\n setValue(selectedName);\n }, [selectedName]);\n\n const renderChipAdornment = useCallback(\n (option, index) => {\n if (typeof renderChip === \"function\") {\n return renderChip(option, index);\n }\n const avatarProps: Partial<IAvatar> = {\n size: 18,\n };\n switch (size) {\n case \"big\":\n avatarProps.size = 22;\n break;\n case \"small\":\n avatarProps.size = 14;\n break;\n }\n const leftAdornment = option.image ? (\n <Avatar\n css={`\n ${tw`tw-my-0.5`}\n ${tw`tw-mr-0.5`}\n `}\n url={option.image}\n {...avatarProps}\n />\n ) : undefined;\n\n const onClose = (e) => {\n e.preventDefault();\n e.stopPropagation();\n if (Array.isArray(selected) && selected.includes(option.id)) {\n if (typeof onChange === \"function\") {\n const newSelected = selected.filter((item) => item !== option.id);\n onChange(newSelected);\n }\n }\n };\n\n let showOnClose = true;\n if (disabled) {\n showOnClose = false;\n }\n if (option.color) {\n showOnClose = false;\n }\n\n return (\n <Chip\n className=\"c-combo-box-chip\"\n leftAdornment={leftAdornment}\n label={option.name}\n key={index}\n backgroundColor={option.color}\n color=\"#303037\"\n onClose={showOnClose ? onClose : undefined}\n size={size}\n variant=\"Caption 2\"\n />\n );\n },\n [disabled, onChange, renderChip, selected, size]\n );\n\n const autoSize = useMemo(() => {\n if (\n type === \"multiple\" &&\n open &&\n Array.isArray(selected) &&\n selected.length > 1\n ) {\n return \"auto\";\n }\n return size;\n }, [open, selected, size, type]);\n\n const startAdornment = useMemo(() => {\n if (type === \"multiple\" && Array.isArray(selected) && selected.length > 0) {\n const elements: JSX.Element[] = [];\n let total = 0;\n options.forEach((option, index) => {\n const isGrouped = isOptionGroup(option);\n if (selected.includes(option.id) && !isGrouped) {\n total = total + 1;\n elements.push(renderChipAdornment(option, index));\n } else if (isGrouped) {\n const groupedOptions = option.options.filter((o) =>\n selected.includes(o.id)\n );\n total = total + groupedOptions.length;\n if (groupedOptions.length > 0) {\n groupedOptions.forEach((o, _index) => {\n elements.push(renderChipAdornment(o, `${index}_${_index}`));\n });\n }\n }\n });\n let hidden = 0;\n if (!open && limitChips > 0 && elements.length > limitChips) {\n hidden = elements.splice(\n limitChips,\n elements.length - limitChips\n ).length;\n }\n\n return (\n <Fragment>\n {elements}\n {hidden > 0 && (\n <Typography\n variant={\n size === \"small\"\n ? \"Caption 1\"\n : size === \"regular\"\n ? \"Body 2\"\n : \"Body 1\"\n }\n css={`\n display: flex;\n flex-shrink: 0;\n align-items: center;\n `}\n >\n {typeof hiddenNumberText === \"function\"\n ? hiddenNumberText(hidden)\n : `+${hidden}`}\n </Typography>\n )}\n </Fragment>\n );\n }\n return undefined;\n }, [\n type,\n selected,\n options,\n open,\n limitChips,\n hiddenNumberText,\n renderChipAdornment,\n size,\n ]);\n\n const showXIcon =\n Array.isArray(selected) && type === \"multiple\" && selected.length > 0;\n\n const hasSelected =\n type === \"multiple\" && Array.isArray(selected) && selected.length > 0;\n\n return (\n <div className=\"c-combo-box\">\n {type === \"multiple\" ? (\n <>\n <StyledInputWrapper\n $disabled={disabled}\n $size={size}\n $invalid={invalid}\n ref={comboBoxRef}\n css={`\n display: flex;\n justify-content: space-between;\n flex: 1;\n height: ${autoSize === \"auto\" ? \"auto\" : undefined};\n overflow-y: ${autoSize === \"auto\" && scrollWrapper\n ? \"scroll\"\n : undefined};\n max-height: ${autoSize === \"auto\" && scrollWrapper\n ? \"80px\"\n : undefined};\n `}\n className={classNames(\n \"c-combo-box-input-wrapper\",\n inputWrapperClassName\n )}\n onClick={() => {\n elementRef.current?.focus();\n }}\n >\n <StyledChipWrapper\n $autoSize={autoSize}\n $open={open}\n ref={chipWrapper}\n >\n {startAdornment}\n <StyledInput\n className=\"c-combo-box-input\"\n onBlur={handleBlur}\n onFocus={onOpen}\n ref={handleRef}\n value={loading && loadingText ? loadingText : value}\n onKeyDown={handleOnKeyDown}\n onChange={handleOnChange}\n placeholder={!hasSelected ? placeholder : undefined}\n disabled={disabled}\n $size={size}\n $loading={loading}\n style={{\n display: \"flex\",\n flex: 1,\n alignSelf: \"center\",\n width: autoSize === \"auto\" ? \"auto\" : \"100%\",\n }}\n />\n </StyledChipWrapper>\n {!disabled && (\n <>\n {loading ? (\n <SpinnerLoader />\n ) : (\n <>\n {showXIcon && (\n <Trigger\n onMouseDown={handleMouseDown}\n onClick={handleDeselect}\n data-testid=\"deselect-all\"\n css={`\n display: flex;\n justify-content: center;\n `}\n >\n <StyledComboBoxCloseSmallIcon />\n </Trigger>\n )}\n <StyledComboBoxCollapseExpandSingleIcon $open={open} />\n </>\n )}\n </>\n )}\n </StyledInputWrapper>\n </>\n ) : (\n <StyledComboBoxInput\n className={classNames(\"c-combo-box-input\", inputWrapperClassName)}\n onBlur={handleBlur}\n onFocus={onOpen}\n wrapRef={comboBoxRef}\n ref={handleRef}\n value={loading && loadingText ? loadingText : value}\n onKeyDown={handleOnKeyDown}\n onChange={handleOnChange}\n placeholder={placeholder}\n disabled={disabled}\n size={size}\n invalid={invalid}\n $loading={loading}\n startAdornment={startAdornment}\n endAdornment={\n !disabled ? (\n <InputAdornment disablePointerEvents={disabled}>\n {loading ? (\n <SpinnerLoader />\n ) : selected ? (\n <IconButton\n onMouseDown={handleMouseDown}\n onClick={handleDeselect}\n variant=\"text gray\"\n size=\"small\"\n >\n <StyledComboBoxCloseSmallIcon />\n </IconButton>\n ) : null}\n <StyledComboBoxCollapseExpandSingleIcon $open={open} />\n </InputAdornment>\n ) : null\n }\n />\n )}\n\n {!disabled ? (\n <ConditionalWrapper\n condition={inPortal}\n wrap={(children) => <Portal>{children}</Portal>}\n >\n <Popper\n anchorEl={comboBoxRef.current}\n open={open}\n placement=\"bottom\"\n style={{\n zIndex: 10,\n width: comboBoxRef.current?.clientWidth,\n }}\n ref={wrapperRef}\n strategy=\"fixed\"\n >\n <RemoveScroll noIsolation allowPinchZoom>\n <StyledComboBoxList $width={comboBoxRef.current?.clientWidth}>\n <Autocomplete\n {...prop}\n inputEl={childNode}\n selected={selected}\n handleChange={handleChange}\n renderOption={handleRenderOption}\n options={options}\n type={type}\n handleEmptyAction={emptyAction}\n />\n </StyledComboBoxList>\n </RemoveScroll>\n </Popper>\n </ConditionalWrapper>\n ) : null}\n </div>\n );\n};\n\nComboBox.displayName = \"ComboBox\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"ComboBox.js","names":["ComboBox","options","selected","loading","loadingText","onChange","placeholder","handleEmptyAction","disabled","size","invalid","type","renderChip","forceCloseMenu","renderOption","limitChips","hiddenNumberText","inPortal","inputWrapperClassName","scrollWrapper","prop","selectedName","useMemo","value","map","v","find","q","id","name","useState","setValue","handleOnChange","useCallback","e","target","childNode","setChildNode","elementRef","useRef","handleRef","useForkRef","wrapperRef","chipWrapper","comboBoxRef","open","setOpen","useOnClickOutside","current","contains","handleOnKeyDown","key","stopPropagation","useEffect","focus","blur","emptyAction","handleChange","selectedValue","onOpen","handleRenderOption","option","props","image","color","textColor","handleDeselect","handleMouseDown","preventDefault","handleBlur","renderChipAdornment","index","avatarProps","leftAdornment","undefined","onClose","Array","isArray","includes","newSelected","filter","item","showOnClose","autoSize","length","startAdornment","elements","total","forEach","isGrouped","isOptionGroup","push","groupedOptions","o","_index","hidden","splice","showXIcon","hasSelected","classNames","display","flex","alignSelf","width","children","zIndex","clientWidth","displayName"],"sources":["../../../../src/components/ComboBox/ComboBox.tsx"],"sourcesContent":["import React, {\n FC,\n useCallback,\n useState,\n useEffect,\n useRef,\n useMemo,\n Fragment,\n} from \"react\";\nimport { RadioButton } from \"../RadioButton\";\nimport { Autocomplete } from \"../Autocomplete\";\nimport { IconButton } from \"../IconButton\";\nimport {\n IAutocompleteProps,\n isOptionGroup,\n} from \"../Autocomplete/Autocomplete\";\nimport useForkRef from \"../../utils/useForkRef\";\nimport { Popper } from \"../Popper\";\nimport { IOptionGroupProps, IOptionItemProps } from \"../Select\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { SpinnerLoader } from \"../Loaders/Spinner/SpinnerLoader\";\nimport { OptionContent } from \"../Select/OptionContent/OptionContent\";\nimport {\n StyledComboBoxCloseSmallIcon,\n StyledComboBoxCollapseExpandSingleIcon,\n StyledComboBoxInput,\n StyledComboBoxList,\n StyledChipWrapper,\n} from \"./Styles\";\nimport { InputSize } from \"../Input/types\";\nimport { InputAdornment } from \"../Input/InputAdornment\";\nimport { Checkbox } from \"../Checkbox\";\nimport { Chip } from \"../Chip\";\nimport { StyledInput, StyledInputWrapper } from \"../Input/Styles\";\nimport { useOnClickOutside } from \"../../hooks/useOnClickOutside\";\nimport { Avatar, IAvatar } from \"../Avatar\";\nimport { Trigger } from \"../Trigger\";\nimport { Typography } from \"../Typography/Typography\";\nimport tw from \"twin.macro\";\nimport { Portal } from \"../../helpers\";\nimport { ConditionalWrapper } from \"../../helpers/ConditionWrapper/ConditionWrapper\";\nimport classNames from \"classnames\";\n\nexport interface IComboBoxProps\n extends Omit<\n IAutocompleteProps,\n \"handleChange\" | \"inputEl\" | \"clearInputOnSelect\"\n > {\n /** Set combobox in to loading state */\n loading?: boolean;\n /** Text to display while in loading state */\n loadingText?: string;\n /** onChange callback */\n onChange?: (\n e: (string | number)[] | string | number | null | undefined\n ) => void;\n /** Placeholder for Select input */\n placeholder?: string;\n /** disable Input element */\n disabled?: boolean;\n /** Combobox size */\n size?: InputSize;\n /** Invalid state */\n invalid?: boolean;\n /** Render Chip */\n renderChip?: <T extends IOptionItemProps>(\n item: T,\n key?: string | number\n ) => JSX.Element;\n /** Close menu on change */\n forceCloseMenu?: boolean;\n /** Limit chips */\n limitChips?: number;\n /** Hidden number text */\n hiddenNumberText?: (hidden: number) => string;\n /** Render Autocomplete in <Portal> */\n inPortal?: boolean;\n /** inputWrapperClassName */\n inputWrapperClassName?: string;\n /** scrollWrapper */\n scrollWrapper?: boolean;\n}\n\nexport const ComboBox: FC<IComboBoxProps> = ({\n options = [],\n selected,\n loading = false,\n loadingText,\n onChange,\n placeholder,\n handleEmptyAction,\n disabled = false,\n size = \"regular\",\n invalid = false,\n type = \"single\",\n renderChip,\n forceCloseMenu = type === \"single\",\n renderOption,\n limitChips = 2,\n hiddenNumberText,\n inPortal = false,\n inputWrapperClassName,\n scrollWrapper,\n ...prop\n}) => {\n const selectedName = useMemo(() => {\n let value = \"\";\n if (!selected) {\n return value;\n }\n options.map((v) => {\n if ((v as IOptionGroupProps)?.options) {\n return (v as IOptionGroupProps).options.find((q) => {\n if (q.id === selected) {\n value = q.name;\n return;\n }\n });\n } else {\n if (v.id === selected) {\n value = v.name;\n return;\n }\n }\n });\n return value;\n }, [options, selected]);\n const [value, setValue] = useState(selectedName);\n const handleOnChange = useCallback((e) => setValue(e.target.value), []);\n const [childNode, setChildNode] = useState<HTMLInputElement | null>();\n const elementRef = useRef<HTMLInputElement | null>(null);\n const handleRef = useForkRef(setChildNode, elementRef);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const chipWrapper = useRef<HTMLDivElement>(null);\n const comboBoxRef = useRef<HTMLDivElement | null>(null);\n\n const [open, setOpen] = useState(false);\n\n useOnClickOutside(wrapperRef, (e) => {\n if (e.target && comboBoxRef.current?.contains(e.target as Node)) {\n return;\n }\n setOpen(false);\n });\n\n const handleOnKeyDown = useCallback(\n (e) => {\n if (e.key === \"Escape\" && open) {\n setOpen(false);\n setValue(selectedName);\n e.stopPropagation();\n }\n if (e.key === \"Enter\" && type === \"multiple\") {\n setValue(\"\");\n }\n },\n [open, selectedName, type]\n );\n\n useEffect(() => {\n open && childNode?.focus();\n !open && childNode?.blur();\n }, [childNode, open]);\n\n useEffect(() => {\n setValue(selectedName);\n }, [selectedName]);\n\n const emptyAction = useCallback(\n (v) => {\n handleEmptyAction?.(v);\n setOpen(false);\n },\n [handleEmptyAction]\n );\n\n const handleChange = useCallback(\n (selectedValue) => {\n if (selectedValue !== selected && typeof onChange === \"function\") {\n onChange(selectedValue);\n }\n if (forceCloseMenu) {\n setOpen(false);\n }\n },\n [forceCloseMenu, onChange, selected]\n );\n\n const onOpen = useCallback(() => {\n if (!disabled) {\n setOpen(true);\n }\n }, [disabled]);\n\n const handleRenderOption = useCallback(\n (option, props) => {\n if (typeof renderOption === \"function\") {\n return renderOption(option, props);\n }\n if (type === \"multiple\") {\n return (\n <>\n <OptionContent\n imageUrl={option.image}\n color={option.color}\n textColor={option.textColor}\n name={option.name}\n />\n <Checkbox {...props} />\n </>\n );\n }\n return (\n <>\n <OptionContent\n imageUrl={option.image}\n color={option.color}\n textColor={option.textColor}\n name={option.name}\n />\n <RadioButton {...props} />\n </>\n );\n },\n [type, renderOption]\n );\n\n const handleDeselect = useCallback(\n (e) => {\n e.stopPropagation();\n if (type === \"multiple\") {\n onChange?.([]);\n } else {\n onChange?.(\"\");\n }\n\n setOpen(false);\n },\n [type, onChange]\n );\n\n const handleMouseDown = useCallback((e) => {\n e.preventDefault();\n }, []);\n\n const handleBlur = useCallback(() => {\n setValue(selectedName);\n }, [selectedName]);\n\n const renderChipAdornment = useCallback(\n (option, index) => {\n if (typeof renderChip === \"function\") {\n return renderChip(option, index);\n }\n const avatarProps: Partial<IAvatar> = {\n size: 18,\n };\n switch (size) {\n case \"big\":\n avatarProps.size = 22;\n break;\n case \"small\":\n avatarProps.size = 14;\n break;\n }\n const leftAdornment = option.image ? (\n <Avatar\n css={`\n ${tw`tw-my-0.5`}\n ${tw`tw-mr-0.5`}\n `}\n url={option.image}\n {...avatarProps}\n />\n ) : undefined;\n\n const onClose = (e) => {\n e.preventDefault();\n e.stopPropagation();\n if (Array.isArray(selected) && selected.includes(option.id)) {\n if (typeof onChange === \"function\") {\n const newSelected = selected.filter((item) => item !== option.id);\n onChange(newSelected);\n }\n }\n };\n\n let showOnClose = true;\n if (disabled) {\n showOnClose = false;\n }\n if (option.color) {\n showOnClose = false;\n }\n\n return (\n <Chip\n className=\"c-combo-box-chip\"\n leftAdornment={leftAdornment}\n label={option.name}\n key={index}\n backgroundColor={option.color}\n color=\"#303037\"\n onClose={showOnClose ? onClose : undefined}\n size={size}\n variant=\"Caption 2\"\n />\n );\n },\n [disabled, onChange, renderChip, selected, size]\n );\n\n const autoSize = useMemo(() => {\n if (\n type === \"multiple\" &&\n open &&\n Array.isArray(selected) &&\n selected.length > 1\n ) {\n return \"auto\";\n }\n return size;\n }, [open, selected, size, type]);\n\n const startAdornment = useMemo(() => {\n if (type === \"multiple\" && Array.isArray(selected) && selected.length > 0) {\n const elements: JSX.Element[] = [];\n let total = 0;\n options.forEach((option, index) => {\n const isGrouped = isOptionGroup(option);\n if (selected.includes(option.id) && !isGrouped) {\n total = total + 1;\n elements.push(renderChipAdornment(option, index));\n } else if (isGrouped) {\n const groupedOptions = option.options.filter((o) =>\n selected.includes(o.id)\n );\n total = total + groupedOptions.length;\n if (groupedOptions.length > 0) {\n groupedOptions.forEach((o, _index) => {\n elements.push(renderChipAdornment(o, `${index}_${_index}`));\n });\n }\n }\n });\n let hidden = 0;\n if (!open && limitChips > 0 && elements.length > limitChips) {\n hidden = elements.splice(\n limitChips,\n elements.length - limitChips\n ).length;\n }\n\n return (\n <Fragment>\n {elements}\n {hidden > 0 && (\n <Typography\n variant={\n size === \"small\"\n ? \"Caption 1\"\n : size === \"regular\"\n ? \"Body 2\"\n : \"Body 1\"\n }\n css={`\n display: flex;\n flex-shrink: 0;\n align-items: center;\n `}\n >\n {typeof hiddenNumberText === \"function\"\n ? hiddenNumberText(hidden)\n : `+${hidden}`}\n </Typography>\n )}\n </Fragment>\n );\n }\n return undefined;\n }, [\n type,\n selected,\n options,\n open,\n limitChips,\n hiddenNumberText,\n renderChipAdornment,\n size,\n ]);\n\n const showXIcon =\n Array.isArray(selected) && type === \"multiple\" && selected.length > 0;\n\n const hasSelected =\n type === \"multiple\" && Array.isArray(selected) && selected.length > 0;\n\n return (\n <div className=\"c-combo-box\">\n {type === \"multiple\" ? (\n <>\n <StyledInputWrapper\n $disabled={disabled}\n $size={size}\n $invalid={invalid}\n ref={comboBoxRef}\n css={`\n display: flex;\n justify-content: space-between;\n flex: 1;\n height: ${autoSize === \"auto\" ? \"auto\" : undefined};\n overflow-y: ${autoSize === \"auto\" && scrollWrapper\n ? \"scroll\"\n : undefined};\n max-height: ${autoSize === \"auto\" && scrollWrapper\n ? \"80px\"\n : undefined};\n `}\n className={classNames(\n \"c-combo-box-input-wrapper\",\n inputWrapperClassName\n )}\n onClick={() => {\n elementRef.current?.focus();\n }}\n >\n <StyledChipWrapper\n $autoSize={autoSize}\n $open={open}\n ref={chipWrapper}\n >\n {startAdornment}\n <StyledInput\n className=\"c-combo-box-input\"\n onBlur={handleBlur}\n onFocus={onOpen}\n ref={handleRef}\n value={loading && loadingText ? loadingText : value}\n onKeyDown={handleOnKeyDown}\n onChange={handleOnChange}\n placeholder={!hasSelected ? placeholder : undefined}\n disabled={disabled}\n $size={size}\n $loading={loading}\n style={{\n display: \"flex\",\n flex: 1,\n alignSelf: \"center\",\n width: autoSize === \"auto\" ? \"auto\" : \"100%\",\n }}\n />\n </StyledChipWrapper>\n {!disabled && (\n <>\n {loading ? (\n <SpinnerLoader />\n ) : (\n <>\n {showXIcon && (\n <Trigger\n onMouseDown={handleMouseDown}\n onClick={handleDeselect}\n data-testid=\"deselect-all\"\n css={`\n display: flex;\n justify-content: center;\n `}\n >\n <StyledComboBoxCloseSmallIcon />\n </Trigger>\n )}\n <StyledComboBoxCollapseExpandSingleIcon $open={open} />\n </>\n )}\n </>\n )}\n </StyledInputWrapper>\n </>\n ) : (\n <StyledComboBoxInput\n className={classNames(\"c-combo-box-input\", inputWrapperClassName)}\n onBlur={handleBlur}\n onFocus={onOpen}\n wrapRef={comboBoxRef}\n ref={handleRef}\n value={loading && loadingText ? loadingText : value}\n onKeyDown={handleOnKeyDown}\n onChange={handleOnChange}\n placeholder={placeholder}\n disabled={disabled}\n size={size}\n invalid={invalid}\n $loading={loading}\n startAdornment={startAdornment}\n endAdornment={\n !disabled ? (\n <InputAdornment disablePointerEvents={disabled}>\n {loading ? (\n <SpinnerLoader />\n ) : selected ? (\n <IconButton\n onMouseDown={handleMouseDown}\n onClick={handleDeselect}\n variant=\"text gray\"\n size=\"small\"\n >\n <StyledComboBoxCloseSmallIcon />\n </IconButton>\n ) : null}\n <StyledComboBoxCollapseExpandSingleIcon $open={open} />\n </InputAdornment>\n ) : null\n }\n />\n )}\n\n {!disabled ? (\n <ConditionalWrapper\n condition={inPortal}\n wrap={(children) => <Portal>{children}</Portal>}\n >\n <Popper\n anchorEl={comboBoxRef.current}\n open={open}\n placement=\"bottom\"\n style={{\n zIndex: 10,\n width: comboBoxRef.current?.clientWidth,\n }}\n ref={wrapperRef}\n strategy=\"fixed\"\n >\n <RemoveScroll noIsolation allowPinchZoom>\n <StyledComboBoxList $width={comboBoxRef.current?.clientWidth}>\n <Autocomplete\n {...prop}\n inputEl={childNode}\n selected={selected}\n handleChange={handleChange}\n renderOption={handleRenderOption}\n options={options}\n type={type}\n handleEmptyAction={emptyAction}\n />\n </StyledComboBoxList>\n </RemoveScroll>\n </Popper>\n </ConditionalWrapper>\n ) : null}\n </div>\n );\n};\n\nComboBox.displayName = \"ComboBox\";\n"],"mappings":";;;;;;;;AAAA;AASA;AACA;AACA;AACA;AAIA;AACA;AAEA;AACA;AACA;AACA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAoC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA0C7B,IAAMA,QAA4B,GAAG,SAA/BA,QAA4B,OAqBnC;EAAA;EAAA,wBApBJC,OAAO;IAAPA,OAAO,6BAAG,EAAE;IACZC,QAAQ,QAARA,QAAQ;IAAA,oBACRC,OAAO;IAAPA,OAAO,6BAAG,KAAK;IACfC,WAAW,QAAXA,WAAW;IACXC,QAAQ,QAARA,QAAQ;IACRC,WAAW,QAAXA,WAAW;IACXC,iBAAiB,QAAjBA,iBAAiB;IAAA,qBACjBC,QAAQ;IAARA,QAAQ,8BAAG,KAAK;IAAA,iBAChBC,IAAI;IAAJA,IAAI,0BAAG,SAAS;IAAA,oBAChBC,OAAO;IAAPA,OAAO,6BAAG,KAAK;IAAA,iBACfC,IAAI;IAAJA,IAAI,0BAAG,QAAQ;IACfC,UAAU,QAAVA,UAAU;IAAA,2BACVC,cAAc;IAAdA,cAAc,oCAAGF,IAAI,KAAK,QAAQ;IAClCG,YAAY,QAAZA,YAAY;IAAA,uBACZC,UAAU;IAAVA,UAAU,gCAAG,CAAC;IACdC,gBAAgB,QAAhBA,gBAAgB;IAAA,qBAChBC,QAAQ;IAARA,QAAQ,8BAAG,KAAK;IAChBC,qBAAqB,QAArBA,qBAAqB;IACrBC,aAAa,QAAbA,aAAa;IACVC,IAAI;EAEP,IAAMC,YAAY,GAAG,IAAAC,cAAO,EAAC,YAAM;IACjC,IAAIC,KAAK,GAAG,EAAE;IACd,IAAI,CAACrB,QAAQ,EAAE;MACb,OAAOqB,KAAK;IACd;IACAtB,OAAO,CAACuB,GAAG,CAAC,UAACC,CAAC,EAAK;MACjB,IAAKA,CAAC,aAADA,CAAC,eAADA,CAAC,CAAwBxB,OAAO,EAAE;QACrC,OAAQwB,CAAC,CAAuBxB,OAAO,CAACyB,IAAI,CAAC,UAACC,CAAC,EAAK;UAClD,IAAIA,CAAC,CAACC,EAAE,KAAK1B,QAAQ,EAAE;YACrBqB,KAAK,GAAGI,CAAC,CAACE,IAAI;YACd;UACF;QACF,CAAC,CAAC;MACJ,CAAC,MAAM;QACL,IAAIJ,CAAC,CAACG,EAAE,KAAK1B,QAAQ,EAAE;UACrBqB,KAAK,GAAGE,CAAC,CAACI,IAAI;UACd;QACF;MACF;IACF,CAAC,CAAC;IACF,OAAON,KAAK;EACd,CAAC,EAAE,CAACtB,OAAO,EAAEC,QAAQ,CAAC,CAAC;EACvB,gBAA0B,IAAA4B,eAAQ,EAACT,YAAY,CAAC;IAAA;IAAzCE,KAAK;IAAEQ,QAAQ;EACtB,IAAMC,cAAc,GAAG,IAAAC,kBAAW,EAAC,UAACC,CAAC;IAAA,OAAKH,QAAQ,CAACG,CAAC,CAACC,MAAM,CAACZ,KAAK,CAAC;EAAA,GAAE,EAAE,CAAC;EACvE,iBAAkC,IAAAO,eAAQ,GAA2B;IAAA;IAA9DM,SAAS;IAAEC,YAAY;EAC9B,IAAMC,UAAU,GAAG,IAAAC,aAAM,EAA0B,IAAI,CAAC;EACxD,IAAMC,SAAS,GAAG,IAAAC,mBAAU,EAACJ,YAAY,EAAEC,UAAU,CAAC;EACtD,IAAMI,UAAU,GAAG,IAAAH,aAAM,EAAiB,IAAI,CAAC;EAC/C,IAAMI,WAAW,GAAG,IAAAJ,aAAM,EAAiB,IAAI,CAAC;EAChD,IAAMK,WAAW,GAAG,IAAAL,aAAM,EAAwB,IAAI,CAAC;EAEvD,iBAAwB,IAAAT,eAAQ,EAAC,KAAK,CAAC;IAAA;IAAhCe,IAAI;IAAEC,OAAO;EAEpB,IAAAC,oCAAiB,EAACL,UAAU,EAAE,UAACR,CAAC,EAAK;IAAA;IACnC,IAAIA,CAAC,CAACC,MAAM,4BAAIS,WAAW,CAACI,OAAO,iDAAnB,qBAAqBC,QAAQ,CAACf,CAAC,CAACC,MAAM,CAAS,EAAE;MAC/D;IACF;IACAW,OAAO,CAAC,KAAK,CAAC;EAChB,CAAC,CAAC;EAEF,IAAMI,eAAe,GAAG,IAAAjB,kBAAW,EACjC,UAACC,CAAC,EAAK;IACL,IAAIA,CAAC,CAACiB,GAAG,KAAK,QAAQ,IAAIN,IAAI,EAAE;MAC9BC,OAAO,CAAC,KAAK,CAAC;MACdf,QAAQ,CAACV,YAAY,CAAC;MACtBa,CAAC,CAACkB,eAAe,EAAE;IACrB;IACA,IAAIlB,CAAC,CAACiB,GAAG,KAAK,OAAO,IAAIxC,IAAI,KAAK,UAAU,EAAE;MAC5CoB,QAAQ,CAAC,EAAE,CAAC;IACd;EACF,CAAC,EACD,CAACc,IAAI,EAAExB,YAAY,EAAEV,IAAI,CAAC,CAC3B;EAED,IAAA0C,gBAAS,EAAC,YAAM;IACdR,IAAI,KAAIT,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAEkB,KAAK,EAAE;IAC1B,CAACT,IAAI,KAAIT,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAEmB,IAAI,EAAE;EAC5B,CAAC,EAAE,CAACnB,SAAS,EAAES,IAAI,CAAC,CAAC;EAErB,IAAAQ,gBAAS,EAAC,YAAM;IACdtB,QAAQ,CAACV,YAAY,CAAC;EACxB,CAAC,EAAE,CAACA,YAAY,CAAC,CAAC;EAElB,IAAMmC,WAAW,GAAG,IAAAvB,kBAAW,EAC7B,UAACR,CAAC,EAAK;IACLlB,iBAAiB,aAAjBA,iBAAiB,uBAAjBA,iBAAiB,CAAGkB,CAAC,CAAC;IACtBqB,OAAO,CAAC,KAAK,CAAC;EAChB,CAAC,EACD,CAACvC,iBAAiB,CAAC,CACpB;EAED,IAAMkD,YAAY,GAAG,IAAAxB,kBAAW,EAC9B,UAACyB,aAAa,EAAK;IACjB,IAAIA,aAAa,KAAKxD,QAAQ,IAAI,OAAOG,QAAQ,KAAK,UAAU,EAAE;MAChEA,QAAQ,CAACqD,aAAa,CAAC;IACzB;IACA,IAAI7C,cAAc,EAAE;MAClBiC,OAAO,CAAC,KAAK,CAAC;IAChB;EACF,CAAC,EACD,CAACjC,cAAc,EAAER,QAAQ,EAAEH,QAAQ,CAAC,CACrC;EAED,IAAMyD,MAAM,GAAG,IAAA1B,kBAAW,EAAC,YAAM;IAC/B,IAAI,CAACzB,QAAQ,EAAE;MACbsC,OAAO,CAAC,IAAI,CAAC;IACf;EACF,CAAC,EAAE,CAACtC,QAAQ,CAAC,CAAC;EAEd,IAAMoD,kBAAkB,GAAG,IAAA3B,kBAAW,EACpC,UAAC4B,MAAM,EAAEC,KAAK,EAAK;IACjB,IAAI,OAAOhD,YAAY,KAAK,UAAU,EAAE;MACtC,OAAOA,YAAY,CAAC+C,MAAM,EAAEC,KAAK,CAAC;IACpC;IACA,IAAInD,IAAI,KAAK,UAAU,EAAE;MACvB,oBACE,yEACE,6BAAC,4BAAa;QACZ,QAAQ,EAAEkD,MAAM,CAACE,KAAM;QACvB,KAAK,EAAEF,MAAM,CAACG,KAAM;QACpB,SAAS,EAAEH,MAAM,CAACI,SAAU;QAC5B,IAAI,EAAEJ,MAAM,CAAChC;MAAK,EAClB,eACF,6BAAC,kBAAQ,EAAKiC,KAAK,CAAI,CACtB;IAEP;IACA,oBACE,yEACE,6BAAC,4BAAa;MACZ,QAAQ,EAAED,MAAM,CAACE,KAAM;MACvB,KAAK,EAAEF,MAAM,CAACG,KAAM;MACpB,SAAS,EAAEH,MAAM,CAACI,SAAU;MAC5B,IAAI,EAAEJ,MAAM,CAAChC;IAAK,EAClB,eACF,6BAAC,wBAAW,EAAKiC,KAAK,CAAI,CACzB;EAEP,CAAC,EACD,CAACnD,IAAI,EAAEG,YAAY,CAAC,CACrB;EAED,IAAMoD,cAAc,GAAG,IAAAjC,kBAAW,EAChC,UAACC,CAAC,EAAK;IACLA,CAAC,CAACkB,eAAe,EAAE;IACnB,IAAIzC,IAAI,KAAK,UAAU,EAAE;MACvBN,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAG,EAAE,CAAC;IAChB,CAAC,MAAM;MACLA,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAG,EAAE,CAAC;IAChB;IAEAyC,OAAO,CAAC,KAAK,CAAC;EAChB,CAAC,EACD,CAACnC,IAAI,EAAEN,QAAQ,CAAC,CACjB;EAED,IAAM8D,eAAe,GAAG,IAAAlC,kBAAW,EAAC,UAACC,CAAC,EAAK;IACzCA,CAAC,CAACkC,cAAc,EAAE;EACpB,CAAC,EAAE,EAAE,CAAC;EAEN,IAAMC,UAAU,GAAG,IAAApC,kBAAW,EAAC,YAAM;IACnCF,QAAQ,CAACV,YAAY,CAAC;EACxB,CAAC,EAAE,CAACA,YAAY,CAAC,CAAC;EAElB,IAAMiD,mBAAmB,GAAG,IAAArC,kBAAW,EACrC,UAAC4B,MAAM,EAAEU,KAAK,EAAK;IACjB,IAAI,OAAO3D,UAAU,KAAK,UAAU,EAAE;MACpC,OAAOA,UAAU,CAACiD,MAAM,EAAEU,KAAK,CAAC;IAClC;IACA,IAAMC,WAA6B,GAAG;MACpC/D,IAAI,EAAE;IACR,CAAC;IACD,QAAQA,IAAI;MACV,KAAK,KAAK;QACR+D,WAAW,CAAC/D,IAAI,GAAG,EAAE;QACrB;MACF,KAAK,OAAO;QACV+D,WAAW,CAAC/D,IAAI,GAAG,EAAE;QACrB;IAAM;IAEV,IAAMgE,aAAa,GAAGZ,MAAM,CAACE,KAAK,gBAChC;MAKE,GAAG,EAAEF,MAAM,CAACE;IAAM,GACdS,WAAW;MAAA,OAJT;QAAA;QAAA;MAAU,CAAC;MAAA,QACX;QAAA;MAAU;IAAC,GAIjB,GACAE,SAAS;IAEb,IAAMC,OAAO,GAAG,SAAVA,OAAO,CAAIzC,CAAC,EAAK;MACrBA,CAAC,CAACkC,cAAc,EAAE;MAClBlC,CAAC,CAACkB,eAAe,EAAE;MACnB,IAAIwB,KAAK,CAACC,OAAO,CAAC3E,QAAQ,CAAC,IAAIA,QAAQ,CAAC4E,QAAQ,CAACjB,MAAM,CAACjC,EAAE,CAAC,EAAE;QAC3D,IAAI,OAAOvB,QAAQ,KAAK,UAAU,EAAE;UAClC,IAAM0E,WAAW,GAAG7E,QAAQ,CAAC8E,MAAM,CAAC,UAACC,IAAI;YAAA,OAAKA,IAAI,KAAKpB,MAAM,CAACjC,EAAE;UAAA,EAAC;UACjEvB,QAAQ,CAAC0E,WAAW,CAAC;QACvB;MACF;IACF,CAAC;IAED,IAAIG,WAAW,GAAG,IAAI;IACtB,IAAI1E,QAAQ,EAAE;MACZ0E,WAAW,GAAG,KAAK;IACrB;IACA,IAAIrB,MAAM,CAACG,KAAK,EAAE;MAChBkB,WAAW,GAAG,KAAK;IACrB;IAEA,oBACE,6BAAC,UAAI;MACH,SAAS,EAAC,kBAAkB;MAC5B,aAAa,EAAET,aAAc;MAC7B,KAAK,EAAEZ,MAAM,CAAChC,IAAK;MACnB,GAAG,EAAE0C,KAAM;MACX,eAAe,EAAEV,MAAM,CAACG,KAAM;MAC9B,KAAK,EAAC,SAAS;MACf,OAAO,EAAEkB,WAAW,GAAGP,OAAO,GAAGD,SAAU;MAC3C,IAAI,EAAEjE,IAAK;MACX,OAAO,EAAC;IAAW,EACnB;EAEN,CAAC,EACD,CAACD,QAAQ,EAAEH,QAAQ,EAAEO,UAAU,EAAEV,QAAQ,EAAEO,IAAI,CAAC,CACjD;EAED,IAAM0E,QAAQ,GAAG,IAAA7D,cAAO,EAAC,YAAM;IAC7B,IACEX,IAAI,KAAK,UAAU,IACnBkC,IAAI,IACJ+B,KAAK,CAACC,OAAO,CAAC3E,QAAQ,CAAC,IACvBA,QAAQ,CAACkF,MAAM,GAAG,CAAC,EACnB;MACA,OAAO,MAAM;IACf;IACA,OAAO3E,IAAI;EACb,CAAC,EAAE,CAACoC,IAAI,EAAE3C,QAAQ,EAAEO,IAAI,EAAEE,IAAI,CAAC,CAAC;EAEhC,IAAM0E,cAAc,GAAG,IAAA/D,cAAO,EAAC,YAAM;IACnC,IAAIX,IAAI,KAAK,UAAU,IAAIiE,KAAK,CAACC,OAAO,CAAC3E,QAAQ,CAAC,IAAIA,QAAQ,CAACkF,MAAM,GAAG,CAAC,EAAE;MACzE,IAAME,QAAuB,GAAG,EAAE;MAClC,IAAIC,KAAK,GAAG,CAAC;MACbtF,OAAO,CAACuF,OAAO,CAAC,UAAC3B,MAAM,EAAEU,KAAK,EAAK;QACjC,IAAMkB,SAAS,GAAG,IAAAC,4BAAa,EAAC7B,MAAM,CAAC;QACvC,IAAI3D,QAAQ,CAAC4E,QAAQ,CAACjB,MAAM,CAACjC,EAAE,CAAC,IAAI,CAAC6D,SAAS,EAAE;UAC9CF,KAAK,GAAGA,KAAK,GAAG,CAAC;UACjBD,QAAQ,CAACK,IAAI,CAACrB,mBAAmB,CAACT,MAAM,EAAEU,KAAK,CAAC,CAAC;QACnD,CAAC,MAAM,IAAIkB,SAAS,EAAE;UACpB,IAAMG,cAAc,GAAG/B,MAAM,CAAC5D,OAAO,CAAC+E,MAAM,CAAC,UAACa,CAAC;YAAA,OAC7C3F,QAAQ,CAAC4E,QAAQ,CAACe,CAAC,CAACjE,EAAE,CAAC;UAAA,EACxB;UACD2D,KAAK,GAAGA,KAAK,GAAGK,cAAc,CAACR,MAAM;UACrC,IAAIQ,cAAc,CAACR,MAAM,GAAG,CAAC,EAAE;YAC7BQ,cAAc,CAACJ,OAAO,CAAC,UAACK,CAAC,EAAEC,MAAM,EAAK;cACpCR,QAAQ,CAACK,IAAI,CAACrB,mBAAmB,CAACuB,CAAC,YAAKtB,KAAK,cAAIuB,MAAM,EAAG,CAAC;YAC7D,CAAC,CAAC;UACJ;QACF;MACF,CAAC,CAAC;MACF,IAAIC,OAAM,GAAG,CAAC;MACd,IAAI,CAAClD,IAAI,IAAI9B,UAAU,GAAG,CAAC,IAAIuE,QAAQ,CAACF,MAAM,GAAGrE,UAAU,EAAE;QAC3DgF,OAAM,GAAGT,QAAQ,CAACU,MAAM,CACtBjF,UAAU,EACVuE,QAAQ,CAACF,MAAM,GAAGrE,UAAU,CAC7B,CAACqE,MAAM;MACV;MAEA,oBACE,6BAAC,eAAQ,QACNE,QAAQ,EACRS,OAAM,GAAG,CAAC,iBACT;QACE,OAAO,EACLtF,IAAI,KAAK,OAAO,GACZ,WAAW,GACXA,IAAI,KAAK,SAAS,GAClB,QAAQ,GACR;MACL,GAOA,OAAOO,gBAAgB,KAAK,UAAU,GACnCA,gBAAgB,CAAC+E,OAAM,CAAC,cACpBA,OAAM,CAAE,CAEnB,CACQ;IAEf;IACA,OAAOrB,SAAS;EAClB,CAAC,EAAE,CACD/D,IAAI,EACJT,QAAQ,EACRD,OAAO,EACP4C,IAAI,EACJ9B,UAAU,EACVC,gBAAgB,EAChBsD,mBAAmB,EACnB7D,IAAI,CACL,CAAC;EAEF,IAAMwF,SAAS,GACbrB,KAAK,CAACC,OAAO,CAAC3E,QAAQ,CAAC,IAAIS,IAAI,KAAK,UAAU,IAAIT,QAAQ,CAACkF,MAAM,GAAG,CAAC;EAEvE,IAAMc,WAAW,GACfvF,IAAI,KAAK,UAAU,IAAIiE,KAAK,CAACC,OAAO,CAAC3E,QAAQ,CAAC,IAAIA,QAAQ,CAACkF,MAAM,GAAG,CAAC;EAEvE,oBACE;IAAK,SAAS,EAAC;EAAa,GACzBzE,IAAI,KAAK,UAAU,gBAClB,yEACE;IACE,SAAS,EAAEH,QAAS;IACpB,KAAK,EAAEC,IAAK;IACZ,QAAQ,EAAEC,OAAQ;IAClB,GAAG,EAAEkC,WAAY;IAajB,SAAS,EAAE,IAAAuD,mBAAU,EACnB,2BAA2B,EAC3BjF,qBAAqB,CACrB;IACF,OAAO,EAAE,mBAAM;MAAA;MACb,uBAAAoB,UAAU,CAACU,OAAO,wDAAlB,oBAAoBM,KAAK,EAAE;IAC7B,CAAE;IAAA,QAdU6B,QAAQ,KAAK,MAAM,GAAG,MAAM,GAAGT,SAAS;IAAA,QACpCS,QAAQ,KAAK,MAAM,IAAIhE,aAAa,GAC9C,QAAQ,GACRuD,SAAS;IAAA,QACCS,QAAQ,KAAK,MAAM,IAAIhE,aAAa,GAC9C,MAAM,GACNuD;EAAS,gBAUf,6BAAC,yBAAiB;IAChB,SAAS,EAAES,QAAS;IACpB,KAAK,EAAEtC,IAAK;IACZ,GAAG,EAAEF;EAAY,GAEhB0C,cAAc,eACf,6BAAC,oBAAW;IACV,SAAS,EAAC,mBAAmB;IAC7B,MAAM,EAAEhB,UAAW;IACnB,OAAO,EAAEV,MAAO;IAChB,GAAG,EAAEnB,SAAU;IACf,KAAK,EAAErC,OAAO,IAAIC,WAAW,GAAGA,WAAW,GAAGmB,KAAM;IACpD,SAAS,EAAE2B,eAAgB;IAC3B,QAAQ,EAAElB,cAAe;IACzB,WAAW,EAAE,CAACkE,WAAW,GAAG5F,WAAW,GAAGoE,SAAU;IACpD,QAAQ,EAAElE,QAAS;IACnB,KAAK,EAAEC,IAAK;IACZ,QAAQ,EAAEN,OAAQ;IAClB,KAAK,EAAE;MACLiG,OAAO,EAAE,MAAM;MACfC,IAAI,EAAE,CAAC;MACPC,SAAS,EAAE,QAAQ;MACnBC,KAAK,EAAEpB,QAAQ,KAAK,MAAM,GAAG,MAAM,GAAG;IACxC;EAAE,EACF,CACgB,EACnB,CAAC3E,QAAQ,iBACR,4DACGL,OAAO,gBACN,6BAAC,4BAAa,OAAG,gBAEjB,4DACG8F,SAAS,iBACR;IACE,WAAW,EAAE9B,eAAgB;IAC7B,OAAO,EAAED,cAAe;IACxB,eAAY;EAAc,gBAM1B,6BAAC,oCAA4B,OAAG,CAEnC,eACD,6BAAC,8CAAsC;IAAC,KAAK,EAAErB;EAAK,EAAG,CAE1D,CAEJ,CACkB,CACpB,gBAEH,6BAAC,2BAAmB;IAClB,SAAS,EAAE,IAAAsD,mBAAU,EAAC,mBAAmB,EAAEjF,qBAAqB,CAAE;IAClE,MAAM,EAAEmD,UAAW;IACnB,OAAO,EAAEV,MAAO;IAChB,OAAO,EAAEf,WAAY;IACrB,GAAG,EAAEJ,SAAU;IACf,KAAK,EAAErC,OAAO,IAAIC,WAAW,GAAGA,WAAW,GAAGmB,KAAM;IACpD,SAAS,EAAE2B,eAAgB;IAC3B,QAAQ,EAAElB,cAAe;IACzB,WAAW,EAAE1B,WAAY;IACzB,QAAQ,EAAEE,QAAS;IACnB,IAAI,EAAEC,IAAK;IACX,OAAO,EAAEC,OAAQ;IACjB,QAAQ,EAAEP,OAAQ;IAClB,cAAc,EAAEkF,cAAe;IAC/B,YAAY,EACV,CAAC7E,QAAQ,gBACP,6BAAC,8BAAc;MAAC,oBAAoB,EAAEA;IAAS,GAC5CL,OAAO,gBACN,6BAAC,4BAAa,OAAG,GACfD,QAAQ,gBACV,6BAAC,sBAAU;MACT,WAAW,EAAEiE,eAAgB;MAC7B,OAAO,EAAED,cAAe;MACxB,OAAO,EAAC,WAAW;MACnB,IAAI,EAAC;IAAO,gBAEZ,6BAAC,oCAA4B,OAAG,CACrB,GACX,IAAI,eACR,6BAAC,8CAAsC;MAAC,KAAK,EAAErB;IAAK,EAAG,CACxC,GACf;EACL,EAEJ,EAEA,CAACrC,QAAQ,gBACR,6BAAC,oCAAkB;IACjB,SAAS,EAAES,QAAS;IACpB,IAAI,EAAE,cAACuF,QAAQ;MAAA,oBAAK,6BAAC,eAAM,QAAEA,QAAQ,CAAU;IAAA;EAAC,gBAEhD,6BAAC,cAAM;IACL,QAAQ,EAAE5D,WAAW,CAACI,OAAQ;IAC9B,IAAI,EAAEH,IAAK;IACX,SAAS,EAAC,QAAQ;IAClB,KAAK,EAAE;MACL4D,MAAM,EAAE,EAAE;MACVF,KAAK,2BAAE3D,WAAW,CAACI,OAAO,0DAAnB,sBAAqB0D;IAC9B,CAAE;IACF,GAAG,EAAEhE,UAAW;IAChB,QAAQ,EAAC;EAAO,gBAEhB,6BAAC,+BAAY;IAAC,WAAW;IAAC,cAAc;EAAA,gBACtC,6BAAC,0BAAkB;IAAC,MAAM,2BAAEE,WAAW,CAACI,OAAO,0DAAnB,sBAAqB0D;EAAY,gBAC3D,6BAAC,0BAAY,eACPtF,IAAI;IACR,OAAO,EAAEgB,SAAU;IACnB,QAAQ,EAAElC,QAAS;IACnB,YAAY,EAAEuD,YAAa;IAC3B,YAAY,EAAEG,kBAAmB;IACjC,OAAO,EAAE3D,OAAQ;IACjB,IAAI,EAAEU,IAAK;IACX,iBAAiB,EAAE6C;EAAY,GAC/B,CACiB,CACR,CACR,CACU,GACnB,IAAI,CACJ;AAEV,CAAC;AAAC;AAEFxD,QAAQ,CAAC2G,WAAW,GAAG,UAAU;AAAC;EAAA;EAAA;AAAA;EAAA;AAAA;EAAA;AAAA;AAAA;EAAA;EAAA;AAAA;AAAA;EAAA;EAAA;AAAA;EAAA;AAAA;EAAA;AAAA;EAAA;AAAA;AAAA;EAAA;EAAA;AAAA"}
@@ -108,8 +108,10 @@ var Select = function Select(_ref) {
108
108
  if (forceCloseMenu) {
109
109
  setOpen(false);
110
110
  }
111
- onChange(selectedValue);
112
- }, [onChange, forceCloseMenu]);
111
+ if (selectedValue !== selected) {
112
+ onChange(selectedValue);
113
+ }
114
+ }, [forceCloseMenu, selected, onChange]);
113
115
  var onClose = (0, _react.useCallback)(function () {
114
116
  setOpen(false);
115
117
  if (onSelectClose) {
@@ -200,6 +202,7 @@ var Select = function Select(_ref) {
200
202
  },
201
203
  title: actionLabel
202
204
  }, /*#__PURE__*/_react.default.createElement("div", null, actionIcon)), actionIcon && !actionLabel && actionIcon) : null, /*#__PURE__*/_react.default.createElement(_Autocomplete.Autocomplete, _extends({}, prop, {
205
+ clearInputOnSelect: true,
203
206
  inputEl: childNode,
204
207
  handleEmptyAction: handleEmptyAction,
205
208
  selected: selected,
@@ -1 +1 @@
1
- {"version":3,"file":"Select.js","names":["Select","type","mode","target","options","selected","position","onChange","actionIcon","actionLabel","placeholder","emptyAction","disableSearch","forceCloseMenu","selectClassName","keepSameOptionsOrder","onSelectOpen","onSelectClose","renderOption","handleDefaultOptionChange","preselectDefaultValue","prop","useState","childNode","setChildNode","elementRef","useRef","handleRef","useForkRef","Tag","Menu","formRef","open","setOpen","selectedOptions","useMemo","Array","selectOptions","allOptionValues","reduce","acc","option","isOptionGroup","id","allGroupOptions","map","isAllOptionsChecked","every","includes","useEffect","focus","handleChange","useCallback","selectedValue","onClose","onOpen","props","menuClassName","classNames","className","handleEmptyAction","value","current","reset","handleDefaultOptionChangeCallback","length","handleRenderOption","image","color","textColor","name","additionalInfo","zIndex","displayName"],"sources":["../../../../src/components/Select/Select.tsx"],"sourcesContent":["import React, {\n FC,\n useCallback,\n useState,\n ReactElement,\n useMemo,\n useEffect,\n useRef,\n Ref,\n} from \"react\";\nimport { Autocomplete, isOptionGroup } from \"../Autocomplete\";\nimport { Tooltip } from \"../Tooltip\";\nimport { Menu } from \"../Menu/Menu\";\nimport { IOptionItemProps } from \"../Select/Option\";\nimport { IOptionGroupProps } from \"../Select/OptionGroup\";\nimport classNames from \"classnames\";\nimport { Placement } from \"@popperjs/core\";\nimport { IAutocompleteProps } from \"../Autocomplete/Autocomplete\";\nimport useForkRef from \"../../utils/useForkRef\";\nimport {\n StyledSelectForm,\n StyledSelectInput,\n StyledCheckbox,\n StyledRadioButton,\n} from \"./Styles\";\nimport { OptionContent } from \"./OptionContent/OptionContent\";\n\ninterface ElementWithRef<T> extends ReactElement {\n ref?: Ref<T>;\n}\n\nexport interface ISelectProps\n extends Omit<IAutocompleteProps, \"handleChange\" | \"inputEl\"> {\n /** Menu width mode */\n mode?: \"normal\" | \"wider\" | \"tiny\";\n /** Set select target element */\n target?: ElementWithRef<Element>;\n /** Set Select position */\n position?: Placement;\n /** onChange callback */\n onChange?: (e: (string | number)[] | string | number) => void;\n /** Set action icon in select */\n actionIcon?: ReactElement;\n /** Set label for action icon */\n actionLabel?: string;\n /** Placeholder for Select input */\n placeholder?: string;\n /** Function that triggers when empty is clicked */\n emptyAction?: (e: string | undefined) => void;\n /** Removes input from Select */\n disableSearch?: boolean;\n /** Close menu on select */\n forceCloseMenu?: boolean;\n /** Set select classNames */\n selectClassName?: string;\n /** Callback called when the Select menu is opened */\n onSelectOpen?: () => void;\n /** Callback called when the Select menu is closed */\n onSelectClose?: () => void;\n}\n\nexport const Select: FC<ISelectProps> = ({\n type = \"single\",\n mode,\n target,\n options,\n selected = [],\n position = \"bottom-start\",\n onChange = () => null,\n actionIcon,\n actionLabel,\n placeholder,\n emptyAction = (): null => null,\n disableSearch = false,\n forceCloseMenu,\n selectClassName,\n keepSameOptionsOrder = false,\n onSelectOpen,\n onSelectClose,\n renderOption,\n handleDefaultOptionChange,\n preselectDefaultValue = type === \"single\",\n ...prop\n}) => {\n const [childNode, setChildNode] = useState<HTMLInputElement | null>();\n const elementRef = useRef<HTMLInputElement | null>(null);\n\n const handleRef = useForkRef(setChildNode, elementRef);\n\n const Tag = !target ? \"div\" : Menu;\n const formRef = useRef<HTMLFormElement | null>(null);\n\n const [open, setOpen] = useState(false);\n\n const selectedOptions = useMemo(\n () => (selected instanceof Array ? selected : [selected]),\n [selected]\n );\n\n const selectOptions = useMemo(() => {\n if (!options) {\n return [];\n }\n return options;\n }, [options]);\n\n const allOptionValues = useMemo(() => {\n return selectOptions.reduce(\n (\n acc: (string | number)[],\n option: IOptionGroupProps | IOptionItemProps\n ) => {\n if (!isOptionGroup(option)) {\n return [...acc, option.id];\n }\n const allGroupOptions = option.options.map((option) => option.id);\n return [...acc, ...allGroupOptions];\n },\n []\n );\n }, [selectOptions]);\n\n const isAllOptionsChecked = useMemo(\n () => allOptionValues.every((option) => selectedOptions.includes(option)),\n [allOptionValues, selectedOptions]\n );\n\n useEffect(() => {\n open && childNode?.focus();\n }, [childNode, open]);\n\n const handleChange = useCallback(\n (selectedValue) => {\n if (forceCloseMenu) {\n setOpen(false);\n }\n onChange(selectedValue);\n },\n [onChange, forceCloseMenu]\n );\n\n const onClose = useCallback(() => {\n setOpen(false);\n if (onSelectClose) {\n onSelectClose();\n }\n }, [onSelectClose]);\n\n const onOpen = useCallback(() => {\n setOpen(true);\n if (onSelectOpen) {\n onSelectOpen();\n }\n }, [onSelectOpen]);\n\n const props = useMemo(() => {\n if (target) {\n return {\n menuClassName: classNames(\"c-select\", selectClassName),\n onClose,\n onOpen,\n target,\n mode,\n open,\n position,\n };\n }\n return { className: classNames(\"c-select\", selectClassName) };\n }, [target, selectClassName, onClose, onOpen, mode, open, position]);\n\n const handleEmptyAction = useCallback(\n (value) => {\n emptyAction(value);\n if (forceCloseMenu) {\n setOpen(false);\n }\n formRef.current?.reset();\n },\n [emptyAction, forceCloseMenu]\n );\n\n const handleDefaultOptionChangeCallback = useCallback(() => {\n if (type === \"multiple\") {\n if (selectedOptions.length === allOptionValues.length) {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange([]);\n }\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange(allOptionValues);\n }\n }\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange(\"\");\n }\n }\n if (forceCloseMenu) {\n setOpen(false);\n }\n }, [\n onChange,\n type,\n forceCloseMenu,\n selectedOptions.length,\n allOptionValues,\n handleDefaultOptionChange,\n ]);\n\n const handleRenderOption = useCallback(\n (option, props) => {\n if (typeof renderOption === \"function\") {\n return renderOption(option, props);\n }\n return (\n <>\n <OptionContent\n imageUrl={option.image}\n color={option.color}\n textColor={option.textColor}\n name={option.name}\n additionalInfo={option.additionalInfo}\n />\n {option.id === null ? (\n type === \"multiple\" ? (\n <StyledCheckbox checked={isAllOptionsChecked} {...props} />\n ) : (\n <StyledRadioButton\n checked={selectedOptions.length < 1 || !selectedOptions[0]}\n {...props}\n />\n )\n ) : type === \"multiple\" ? (\n <StyledCheckbox {...props} />\n ) : (\n <StyledRadioButton {...props} />\n )}\n </>\n );\n },\n [isAllOptionsChecked, renderOption, selectedOptions, type]\n );\n\n return (\n <Tag {...props}>\n <div>\n {!disableSearch ? (\n <StyledSelectForm ref={formRef}>\n <StyledSelectInput\n ref={handleRef}\n autoFocus\n placeholder={placeholder}\n />\n {actionIcon && actionLabel && (\n <Tooltip\n popperTooltipStyle={{ zIndex: 1301 }}\n title={actionLabel}\n >\n <div>{actionIcon}</div>\n </Tooltip>\n )}\n {actionIcon && !actionLabel && actionIcon}\n </StyledSelectForm>\n ) : null}\n <Autocomplete\n {...prop}\n inputEl={childNode}\n handleEmptyAction={handleEmptyAction}\n selected={selected}\n handleChange={handleChange}\n renderOption={handleRenderOption}\n options={options}\n handleDefaultOptionChange={handleDefaultOptionChangeCallback}\n type={type}\n preselectDefaultValue={preselectDefaultValue}\n keepSameOptionsOrder={keepSameOptionsOrder}\n />\n </div>\n </Tag>\n );\n};\n\nSelect.displayName = \"Select\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"Select.js","names":["Select","type","mode","target","options","selected","position","onChange","actionIcon","actionLabel","placeholder","emptyAction","disableSearch","forceCloseMenu","selectClassName","keepSameOptionsOrder","onSelectOpen","onSelectClose","renderOption","handleDefaultOptionChange","preselectDefaultValue","prop","useState","childNode","setChildNode","elementRef","useRef","handleRef","useForkRef","Tag","Menu","formRef","open","setOpen","selectedOptions","useMemo","Array","selectOptions","allOptionValues","reduce","acc","option","isOptionGroup","id","allGroupOptions","map","isAllOptionsChecked","every","includes","useEffect","focus","handleChange","useCallback","selectedValue","onClose","onOpen","props","menuClassName","classNames","className","handleEmptyAction","value","current","reset","handleDefaultOptionChangeCallback","length","handleRenderOption","image","color","textColor","name","additionalInfo","zIndex","displayName"],"sources":["../../../../src/components/Select/Select.tsx"],"sourcesContent":["import React, {\n FC,\n useCallback,\n useState,\n ReactElement,\n useMemo,\n useEffect,\n useRef,\n Ref,\n} from \"react\";\nimport { Autocomplete, isOptionGroup } from \"../Autocomplete\";\nimport { Tooltip } from \"../Tooltip\";\nimport { Menu } from \"../Menu/Menu\";\nimport { IOptionItemProps } from \"../Select/Option\";\nimport { IOptionGroupProps } from \"../Select/OptionGroup\";\nimport classNames from \"classnames\";\nimport { Placement } from \"@popperjs/core\";\nimport { IAutocompleteProps } from \"../Autocomplete/Autocomplete\";\nimport useForkRef from \"../../utils/useForkRef\";\nimport {\n StyledSelectForm,\n StyledSelectInput,\n StyledCheckbox,\n StyledRadioButton,\n} from \"./Styles\";\nimport { OptionContent } from \"./OptionContent/OptionContent\";\n\ninterface ElementWithRef<T> extends ReactElement {\n ref?: Ref<T>;\n}\n\nexport interface ISelectProps\n extends Omit<\n IAutocompleteProps,\n \"handleChange\" | \"inputEl\" | \"handleEmptyAction\" | \"clearInputOnSelect\"\n > {\n /** Menu width mode */\n mode?: \"normal\" | \"wider\" | \"tiny\";\n /** Set select target element */\n target?: ElementWithRef<Element>;\n /** Set Select position */\n position?: Placement;\n /** onChange callback */\n onChange?: (e: (string | number)[] | string | number) => void;\n /** Set action icon in select */\n actionIcon?: ReactElement;\n /** Set label for action icon */\n actionLabel?: string;\n /** Placeholder for Select input */\n placeholder?: string;\n /** Function that triggers when empty is clicked */\n emptyAction?: (e: string | undefined) => void;\n /** Removes input from Select */\n disableSearch?: boolean;\n /** Close menu on select */\n forceCloseMenu?: boolean;\n /** Set select classNames */\n selectClassName?: string;\n /** Callback called when the Select menu is opened */\n onSelectOpen?: () => void;\n /** Callback called when the Select menu is closed */\n onSelectClose?: () => void;\n}\n\nexport const Select: FC<ISelectProps> = ({\n type = \"single\",\n mode,\n target,\n options,\n selected = [],\n position = \"bottom-start\",\n onChange = () => null,\n actionIcon,\n actionLabel,\n placeholder,\n emptyAction = (): null => null,\n disableSearch = false,\n forceCloseMenu,\n selectClassName,\n keepSameOptionsOrder = false,\n onSelectOpen,\n onSelectClose,\n renderOption,\n handleDefaultOptionChange,\n preselectDefaultValue = type === \"single\",\n ...prop\n}) => {\n const [childNode, setChildNode] = useState<HTMLInputElement | null>();\n const elementRef = useRef<HTMLInputElement | null>(null);\n\n const handleRef = useForkRef(setChildNode, elementRef);\n\n const Tag = !target ? \"div\" : Menu;\n const formRef = useRef<HTMLFormElement | null>(null);\n\n const [open, setOpen] = useState(false);\n\n const selectedOptions = useMemo(\n () => (selected instanceof Array ? selected : [selected]),\n [selected]\n );\n\n const selectOptions = useMemo(() => {\n if (!options) {\n return [];\n }\n return options;\n }, [options]);\n\n const allOptionValues = useMemo(() => {\n return selectOptions.reduce(\n (\n acc: (string | number)[],\n option: IOptionGroupProps | IOptionItemProps\n ) => {\n if (!isOptionGroup(option)) {\n return [...acc, option.id];\n }\n const allGroupOptions = option.options.map((option) => option.id);\n return [...acc, ...allGroupOptions];\n },\n []\n );\n }, [selectOptions]);\n\n const isAllOptionsChecked = useMemo(\n () => allOptionValues.every((option) => selectedOptions.includes(option)),\n [allOptionValues, selectedOptions]\n );\n\n useEffect(() => {\n open && childNode?.focus();\n }, [childNode, open]);\n\n const handleChange = useCallback(\n (selectedValue) => {\n if (forceCloseMenu) {\n setOpen(false);\n }\n if (selectedValue !== selected) {\n onChange(selectedValue);\n }\n },\n [forceCloseMenu, selected, onChange]\n );\n\n const onClose = useCallback(() => {\n setOpen(false);\n if (onSelectClose) {\n onSelectClose();\n }\n }, [onSelectClose]);\n\n const onOpen = useCallback(() => {\n setOpen(true);\n if (onSelectOpen) {\n onSelectOpen();\n }\n }, [onSelectOpen]);\n\n const props = useMemo(() => {\n if (target) {\n return {\n menuClassName: classNames(\"c-select\", selectClassName),\n onClose,\n onOpen,\n target,\n mode,\n open,\n position,\n };\n }\n return { className: classNames(\"c-select\", selectClassName) };\n }, [target, selectClassName, onClose, onOpen, mode, open, position]);\n\n const handleEmptyAction = useCallback(\n (value) => {\n emptyAction(value);\n if (forceCloseMenu) {\n setOpen(false);\n }\n formRef.current?.reset();\n },\n [emptyAction, forceCloseMenu]\n );\n\n const handleDefaultOptionChangeCallback = useCallback(() => {\n if (type === \"multiple\") {\n if (selectedOptions.length === allOptionValues.length) {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange([]);\n }\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange(allOptionValues);\n }\n }\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange(\"\");\n }\n }\n if (forceCloseMenu) {\n setOpen(false);\n }\n }, [\n onChange,\n type,\n forceCloseMenu,\n selectedOptions.length,\n allOptionValues,\n handleDefaultOptionChange,\n ]);\n\n const handleRenderOption = useCallback(\n (option, props) => {\n if (typeof renderOption === \"function\") {\n return renderOption(option, props);\n }\n return (\n <>\n <OptionContent\n imageUrl={option.image}\n color={option.color}\n textColor={option.textColor}\n name={option.name}\n additionalInfo={option.additionalInfo}\n />\n {option.id === null ? (\n type === \"multiple\" ? (\n <StyledCheckbox checked={isAllOptionsChecked} {...props} />\n ) : (\n <StyledRadioButton\n checked={selectedOptions.length < 1 || !selectedOptions[0]}\n {...props}\n />\n )\n ) : type === \"multiple\" ? (\n <StyledCheckbox {...props} />\n ) : (\n <StyledRadioButton {...props} />\n )}\n </>\n );\n },\n [isAllOptionsChecked, renderOption, selectedOptions, type]\n );\n\n return (\n <Tag {...props}>\n <div>\n {!disableSearch ? (\n <StyledSelectForm ref={formRef}>\n <StyledSelectInput\n ref={handleRef}\n autoFocus\n placeholder={placeholder}\n />\n {actionIcon && actionLabel && (\n <Tooltip\n popperTooltipStyle={{ zIndex: 1301 }}\n title={actionLabel}\n >\n <div>{actionIcon}</div>\n </Tooltip>\n )}\n {actionIcon && !actionLabel && actionIcon}\n </StyledSelectForm>\n ) : null}\n <Autocomplete\n {...prop}\n clearInputOnSelect\n inputEl={childNode}\n handleEmptyAction={handleEmptyAction}\n selected={selected}\n handleChange={handleChange}\n renderOption={handleRenderOption}\n options={options}\n handleDefaultOptionChange={handleDefaultOptionChangeCallback}\n type={type}\n preselectDefaultValue={preselectDefaultValue}\n keepSameOptionsOrder={keepSameOptionsOrder}\n />\n </div>\n </Tag>\n );\n};\n\nSelect.displayName = \"Select\";\n"],"mappings":"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"}
@@ -39,6 +39,8 @@ export interface IAutocompleteProps {
39
39
  keepSameOptionsOrder?: boolean;
40
40
  /** Set max height property for scrollbars */
41
41
  autoHeightMax?: number;
42
+ /** Clear input on select - works in single mode */
43
+ clearInputOnSelect?: boolean;
42
44
  }
43
45
  export declare const Autocomplete: FC<IAutocompleteProps>;
44
46
  //# sourceMappingURL=Autocomplete.d.ts.map
@@ -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,EACb,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,GAAG,IAAI,CAAC;IAClC,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;CACxB;AAOD,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,kBAAkB,CA6b/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,EACb,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,GAAG,IAAI,CAAC;IAClC,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,CAqc/C,CAAC"}
@@ -35,7 +35,8 @@ export var Autocomplete = function Autocomplete(_ref) {
35
35
  _ref$keepSameOptionsO = _ref.keepSameOptionsOrder,
36
36
  keepSameOptionsOrder = _ref$keepSameOptionsO === void 0 ? false : _ref$keepSameOptionsO,
37
37
  _ref$autoHeightMax = _ref.autoHeightMax,
38
- autoHeightMax = _ref$autoHeightMax === void 0 ? 340 : _ref$autoHeightMax;
38
+ autoHeightMax = _ref$autoHeightMax === void 0 ? 340 : _ref$autoHeightMax,
39
+ clearInputOnSelect = _ref.clearInputOnSelect;
39
40
  var itemRef = useRef(null);
40
41
  var listRef = useRef(null);
41
42
  var selectedOptions = useMemo(function () {
@@ -194,11 +195,13 @@ export var Autocomplete = function Autocomplete(_ref) {
194
195
  result = [].concat(selectedOptions, [id]);
195
196
  }
196
197
  } else {
197
- if (selectedOptions.includes(id)) {
198
- result = null;
199
- } else {
200
- result = id;
198
+ if (clearInputOnSelect && inputEl) {
199
+ inputEl.value = "";
200
+ inputEl.dispatchEvent(new Event("change", {
201
+ bubbles: true
202
+ }));
201
203
  }
204
+ result = id;
202
205
  }
203
206
  setFilter("");
204
207
  } else {
@@ -210,7 +213,7 @@ export var Autocomplete = function Autocomplete(_ref) {
210
213
  if (typeof handleChange === "function") {
211
214
  handleChange(result);
212
215
  }
213
- }, [handleChange, handleDefaultOptionChange, selectedOptions, type]);
216
+ }, [clearInputOnSelect, handleChange, handleDefaultOptionChange, inputEl, selectedOptions, type]);
214
217
  var handleMouseEnter = useCallback(function (e) {
215
218
  if (e === undefined || e === null) {
216
219
  return setHover({
@@ -301,7 +304,7 @@ export var Autocomplete = function Autocomplete(_ref) {
301
304
  handleDefaultOptionChange();
302
305
  return;
303
306
  }
304
- if (hover.item) {
307
+ if (typeof hover.item !== "undefined" || hover.item !== null) {
305
308
  toggleSelected(hover.item);
306
309
  setFilter("");
307
310
  }