@activecollab/components 1.0.147 → 1.0.148

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.
Files changed (54) hide show
  1. package/dist/cjs/components/Autocomplete/Autocomplete.js +9 -9
  2. package/dist/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
  3. package/dist/cjs/components/Chip/Chip.js +4 -2
  4. package/dist/cjs/components/Chip/Chip.js.map +1 -1
  5. package/dist/cjs/components/Chip/Styles.js +2 -6
  6. package/dist/cjs/components/Chip/Styles.js.map +1 -1
  7. package/dist/cjs/components/ComboBox/ComboBox.js +199 -18
  8. package/dist/cjs/components/ComboBox/ComboBox.js.map +1 -1
  9. package/dist/cjs/components/ComboBox/Styles.js +4 -4
  10. package/dist/cjs/components/ComboBox/Styles.js.map +1 -1
  11. package/dist/cjs/components/Input/Styles.js +3 -1
  12. package/dist/cjs/components/Input/Styles.js.map +1 -1
  13. package/dist/cjs/components/Loaders/Spinner/Styles.js +1 -1
  14. package/dist/cjs/components/Loaders/Spinner/Styles.js.map +1 -1
  15. package/dist/cjs/components/Select/Select.js +1 -5
  16. package/dist/cjs/components/Select/Select.js.map +1 -1
  17. package/dist/cjs/hooks/useOnClickOutside.js +35 -0
  18. package/dist/cjs/hooks/useOnClickOutside.js.map +1 -0
  19. package/dist/esm/components/Autocomplete/Autocomplete.d.ts +1 -0
  20. package/dist/esm/components/Autocomplete/Autocomplete.d.ts.map +1 -1
  21. package/dist/esm/components/Autocomplete/Autocomplete.js +7 -9
  22. package/dist/esm/components/Autocomplete/Autocomplete.js.map +1 -1
  23. package/dist/esm/components/Chip/Chip.d.ts.map +1 -1
  24. package/dist/esm/components/Chip/Chip.js +4 -2
  25. package/dist/esm/components/Chip/Chip.js.map +1 -1
  26. package/dist/esm/components/Chip/Styles.d.ts.map +1 -1
  27. package/dist/esm/components/Chip/Styles.js +2 -6
  28. package/dist/esm/components/Chip/Styles.js.map +1 -1
  29. package/dist/esm/components/ComboBox/ComboBox.d.ts +8 -4
  30. package/dist/esm/components/ComboBox/ComboBox.d.ts.map +1 -1
  31. package/dist/esm/components/ComboBox/ComboBox.js +191 -19
  32. package/dist/esm/components/ComboBox/ComboBox.js.map +1 -1
  33. package/dist/esm/components/ComboBox/Styles.d.ts.map +1 -1
  34. package/dist/esm/components/ComboBox/Styles.js +3 -4
  35. package/dist/esm/components/ComboBox/Styles.js.map +1 -1
  36. package/dist/esm/components/Input/Styles.d.ts +1 -0
  37. package/dist/esm/components/Input/Styles.d.ts.map +1 -1
  38. package/dist/esm/components/Input/Styles.js +3 -1
  39. package/dist/esm/components/Input/Styles.js.map +1 -1
  40. package/dist/esm/components/Loaders/Spinner/Styles.d.ts.map +1 -1
  41. package/dist/esm/components/Loaders/Spinner/Styles.js +1 -1
  42. package/dist/esm/components/Loaders/Spinner/Styles.js.map +1 -1
  43. package/dist/esm/components/Select/Select.d.ts.map +1 -1
  44. package/dist/esm/components/Select/Select.js +2 -6
  45. package/dist/esm/components/Select/Select.js.map +1 -1
  46. package/dist/esm/hooks/useOnClickOutside.d.ts +3 -0
  47. package/dist/esm/hooks/useOnClickOutside.d.ts.map +1 -0
  48. package/dist/esm/hooks/useOnClickOutside.js +27 -0
  49. package/dist/esm/hooks/useOnClickOutside.js.map +1 -0
  50. package/dist/index.js +420 -238
  51. package/dist/index.js.map +1 -1
  52. package/dist/index.min.js +1 -1
  53. package/dist/index.min.js.map +1 -1
  54. package/package.json +1 -1
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.Autocomplete = void 0;
9
+ exports.isOptionGroup = isOptionGroup;
9
10
 
10
11
  var _react = _interopRequireWildcard(require("react"));
11
12
 
@@ -53,6 +54,10 @@ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToAr
53
54
 
54
55
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
55
56
 
57
+ function isOptionGroup(item) {
58
+ return item.options !== undefined;
59
+ }
60
+
56
61
  var Autocomplete = function Autocomplete(_ref) {
57
62
  var type = _ref.type,
58
63
  _ref$options = _ref.options,
@@ -149,14 +154,9 @@ var Autocomplete = function Autocomplete(_ref) {
149
154
  by: "mouse"
150
155
  });
151
156
  }, []);
152
-
153
- function isGroup(item) {
154
- return item.options !== undefined;
155
- }
156
-
157
157
  var showAddNew = (0, _react.useMemo)(function () {
158
158
  return !!(emptyValue && filter.trim() && options.every(function (option) {
159
- if (isGroup(option)) {
159
+ if (isOptionGroup(option)) {
160
160
  return option.options.every(function (v) {
161
161
  return v.name.toLowerCase() !== filter.trim().toLowerCase();
162
162
  });
@@ -176,7 +176,7 @@ var Autocomplete = function Autocomplete(_ref) {
176
176
  }, [emptyValue, handleEmpty, hover, onAddNewMouseEnter]);
177
177
  var filterOptions = (0, _react.useCallback)(function (options, filter) {
178
178
  var trimmedFilter = filter.trim();
179
- var isGrouped = options[0] && isGroup(options[0]);
179
+ var isGrouped = options[0] && isOptionGroup(options[0]);
180
180
 
181
181
  if (isGrouped) {
182
182
  var hovered = false;
@@ -231,7 +231,7 @@ var Autocomplete = function Autocomplete(_ref) {
231
231
  }, [defaultValue, filter]);
232
232
  var flatOptions = (0, _react.useMemo)(function () {
233
233
  var options = list.reduce(function (acc, option) {
234
- if (!isGroup(option)) {
234
+ if (!isOptionGroup(option)) {
235
235
  return [].concat(_toConsumableArray(acc), [option]);
236
236
  }
237
237
 
@@ -300,7 +300,7 @@ var Autocomplete = function Autocomplete(_ref) {
300
300
  toggleSelected(hover.item);
301
301
  }, [toggleSelected, hover]);
302
302
  var handleRenderOption = (0, _react.useCallback)(function (item, index) {
303
- if (isGroup(item)) {
303
+ if (isOptionGroup(item)) {
304
304
  return /*#__PURE__*/_react.default.createElement(_OptionGroup.OptionGroup, {
305
305
  checked: selectedOptions,
306
306
  name: item.name,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/Autocomplete/Autocomplete.tsx"],"names":["Autocomplete","type","options","inputEl","selected","emptyValue","noResultText","renderOption","option","name","defaultValue","sortDirection","handleChange","optionClassName","handleEmptyAction","disabledInternalSort","AutocompleteClassName","handleDefaultOptionChange","preselectDefaultValue","keepSameOptionsOrder","autoHeightMax","itemRef","listRef","selectedOptions","Array","isArray","handleSort","opts","sort","a","b","includes","id","sortList","localeCompare","sortedList","item","undefined","by","hover","setHover","filter","setFilter","handleEmpty","e","button","focus","onAddNewMouseEnter","isGroup","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","checked","onChange","handleOnMouseLeave","handleScroll","itemOffset","getClientHeight","getScrollTop","scrollTop","current","offsetTop","handleOnKeyDown","onkeydown","onkeyup","isDefaultOptionSelected","showNoResult","renderNoResult","onScroll","map","displayName"],"mappings":"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","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 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 function isGroup(\n item: IOptionGroupProps | IOptionItemProps\n ): item is IOptionGroupProps {\n return (item as IOptionGroupProps).options !== undefined;\n }\n\n const showAddNew = useMemo(() => {\n return !!(\n emptyValue &&\n filter.trim() &&\n options.every((option) => {\n if (isGroup(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] && isGroup(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 (!isGroup(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 (isGroup(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"],"file":"Autocomplete.js"}
1
+ {"version":3,"sources":["../../../../src/components/Autocomplete/Autocomplete.tsx"],"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","listRef","selectedOptions","Array","isArray","handleSort","opts","sort","a","b","includes","id","sortList","localeCompare","sortedList","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","checked","onChange","handleOnMouseLeave","handleScroll","itemOffset","getClientHeight","getScrollTop","scrollTop","current","offsetTop","handleOnKeyDown","onkeydown","onkeyup","isDefaultOptionSelected","showNoResult","renderNoResult","onScroll","map","displayName"],"mappings":"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","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"],"file":"Autocomplete.js"}
@@ -51,10 +51,12 @@ var Chip = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
51
51
  $size: size,
52
52
  $showClose: showClose
53
53
  }), leftAdornment, /*#__PURE__*/_react.default.createElement(_Typography.Typography, {
54
- variant: variant
54
+ variant: variant,
55
+ className: "tw-flex-1 tw-truncate"
55
56
  }, label), showClose ? /*#__PURE__*/_react.default.createElement(_Styles.ChipTrigger, {
56
57
  $size: size,
57
- onClick: onClose
58
+ onClick: onClose,
59
+ className: "tw-ml-0.5"
58
60
  }, /*#__PURE__*/_react.default.createElement(_Styles.ChipCloseIcon, {
59
61
  fill: "currentColor"
60
62
  })) : null);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/Chip/Chip.tsx"],"names":["Chip","React","forwardRef","ref","leftAdornment","label","onClose","size","rest","showClose","variant","displayName"],"mappings":";;;;;;;;;AAAA;;AACA;;AAEA;;;;;;;;;;;;;;AASO,IAAMA,IAAI,gBAAGC,eAAMC,UAAN,CAGlB,gBAA+DC,GAA/D,EAAuE;AAAA,MAApEC,aAAoE,QAApEA,aAAoE;AAAA,MAArDC,KAAqD,QAArDA,KAAqD;AAAA,MAA9CC,OAA8C,QAA9CA,OAA8C;AAAA,uBAArCC,IAAqC;AAAA,MAArCA,IAAqC,0BAA9B,SAA8B;AAAA,MAAhBC,IAAgB;;AACvE,MAAMC,SAAS,GAAG,OAAOH,OAAP,KAAmB,UAArC;AACA,MAAMI,OAAO,GAAG,oBAAQ,YAAM;AAC5B,YAAQH,IAAR;AACE,WAAK,SAAL;AACE,eAAO,QAAP;;AACF,WAAK,KAAL;AACE,eAAO,QAAP;;AACF;AACE,eAAO,WAAP;AANJ;AAQD,GATe,EASb,CAACA,IAAD,CATa,CAAhB;AAUA,sBACE,6BAAC,qBAAD,eAAmBC,IAAnB;AAAyB,IAAA,GAAG,EAAEL,GAA9B;AAAmC,IAAA,KAAK,EAAEI,IAA1C;AAAgD,IAAA,UAAU,EAAEE;AAA5D,MACGL,aADH,eAEE,6BAAC,sBAAD;AAAY,IAAA,OAAO,EAAEM;AAArB,KAA+BL,KAA/B,CAFF,EAGGI,SAAS,gBACR,6BAAC,mBAAD;AAAa,IAAA,KAAK,EAAEF,IAApB;AAA0B,IAAA,OAAO,EAAED;AAAnC,kBACE,6BAAC,qBAAD;AAAe,IAAA,IAAI,EAAC;AAApB,IADF,CADQ,GAIN,IAPN,CADF;AAWD,CA1BmB,CAAb;;;AA4BPN,IAAI,CAACW,WAAL,GAAmB,MAAnB","sourcesContent":["import React, { ReactNode, useMemo } from \"react\";\nimport { ChipCloseIcon, ChipContainer, ChipTrigger } from \"./Styles\";\nimport { InputSize } from \"../Input/types\";\nimport { Typography } from \"../Typography/Typography\";\n\nexport interface ChipProps {\n label: string;\n onClose?: React.MouseEventHandler<HTMLButtonElement>;\n leftAdornment?: ReactNode;\n size?: InputSize;\n}\n\nexport const Chip = React.forwardRef<\n HTMLDivElement,\n ChipProps & Omit<React.ComponentPropsWithoutRef<\"div\">, keyof ChipProps>\n>(({ leftAdornment, label, onClose, size = \"regular\", ...rest }, ref) => {\n const showClose = typeof onClose === \"function\";\n const variant = useMemo(() => {\n switch (size) {\n case \"regular\":\n return \"Body 2\";\n case \"big\":\n return \"Body 1\";\n default:\n return \"Caption 1\";\n }\n }, [size]);\n return (\n <ChipContainer {...rest} ref={ref} $size={size} $showClose={showClose}>\n {leftAdornment}\n <Typography variant={variant}>{label}</Typography>\n {showClose ? (\n <ChipTrigger $size={size} onClick={onClose}>\n <ChipCloseIcon fill=\"currentColor\" />\n </ChipTrigger>\n ) : null}\n </ChipContainer>\n );\n});\n\nChip.displayName = \"Chip\";\n"],"file":"Chip.js"}
1
+ {"version":3,"sources":["../../../../src/components/Chip/Chip.tsx"],"names":["Chip","React","forwardRef","ref","leftAdornment","label","onClose","size","rest","showClose","variant","displayName"],"mappings":";;;;;;;;;AAAA;;AACA;;AAEA;;;;;;;;;;;;;;AASO,IAAMA,IAAI,gBAAGC,eAAMC,UAAN,CAGlB,gBAA+DC,GAA/D,EAAuE;AAAA,MAApEC,aAAoE,QAApEA,aAAoE;AAAA,MAArDC,KAAqD,QAArDA,KAAqD;AAAA,MAA9CC,OAA8C,QAA9CA,OAA8C;AAAA,uBAArCC,IAAqC;AAAA,MAArCA,IAAqC,0BAA9B,SAA8B;AAAA,MAAhBC,IAAgB;;AACvE,MAAMC,SAAS,GAAG,OAAOH,OAAP,KAAmB,UAArC;AACA,MAAMI,OAAO,GAAG,oBAAQ,YAAM;AAC5B,YAAQH,IAAR;AACE,WAAK,SAAL;AACE,eAAO,QAAP;;AACF,WAAK,KAAL;AACE,eAAO,QAAP;;AACF;AACE,eAAO,WAAP;AANJ;AAQD,GATe,EASb,CAACA,IAAD,CATa,CAAhB;AAUA,sBACE,6BAAC,qBAAD,eAAmBC,IAAnB;AAAyB,IAAA,GAAG,EAAEL,GAA9B;AAAmC,IAAA,KAAK,EAAEI,IAA1C;AAAgD,IAAA,UAAU,EAAEE;AAA5D,MACGL,aADH,eAEE,6BAAC,sBAAD;AAAY,IAAA,OAAO,EAAEM,OAArB;AAA8B,IAAA,SAAS,EAAE;AAAzC,KACGL,KADH,CAFF,EAKGI,SAAS,gBACR,6BAAC,mBAAD;AAAa,IAAA,KAAK,EAAEF,IAApB;AAA0B,IAAA,OAAO,EAAED,OAAnC;AAA4C,IAAA,SAAS,EAAE;AAAvD,kBACE,6BAAC,qBAAD;AAAe,IAAA,IAAI,EAAC;AAApB,IADF,CADQ,GAIN,IATN,CADF;AAaD,CA5BmB,CAAb;;;AA8BPN,IAAI,CAACW,WAAL,GAAmB,MAAnB","sourcesContent":["import React, { ReactNode, useMemo } from \"react\";\nimport { ChipCloseIcon, ChipContainer, ChipTrigger } from \"./Styles\";\nimport { InputSize } from \"../Input/types\";\nimport { Typography } from \"../Typography/Typography\";\n\nexport interface ChipProps {\n label: string;\n onClose?: React.MouseEventHandler<HTMLButtonElement>;\n leftAdornment?: ReactNode;\n size?: InputSize;\n}\n\nexport const Chip = React.forwardRef<\n HTMLDivElement,\n ChipProps & Omit<React.ComponentPropsWithoutRef<\"div\">, keyof ChipProps>\n>(({ leftAdornment, label, onClose, size = \"regular\", ...rest }, ref) => {\n const showClose = typeof onClose === \"function\";\n const variant = useMemo(() => {\n switch (size) {\n case \"regular\":\n return \"Body 2\";\n case \"big\":\n return \"Body 1\";\n default:\n return \"Caption 1\";\n }\n }, [size]);\n return (\n <ChipContainer {...rest} ref={ref} $size={size} $showClose={showClose}>\n {leftAdornment}\n <Typography variant={variant} className={\"tw-flex-1 tw-truncate\"}>\n {label}\n </Typography>\n {showClose ? (\n <ChipTrigger $size={size} onClick={onClose} className={\"tw-ml-0.5\"}>\n <ChipCloseIcon fill=\"currentColor\" />\n </ChipTrigger>\n ) : null}\n </ChipContainer>\n );\n});\n\nChip.displayName = \"Chip\";\n"],"file":"Chip.js"}
@@ -24,18 +24,14 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
24
24
  var ChipContainer = _styledComponents.default.div.withConfig({
25
25
  displayName: "Styles__ChipContainer",
26
26
  componentId: "sc-7s0bd1-0"
27
- })(["min-width:80px;max-width:220px;", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", ""], {
27
+ })(["min-width:44px;max-width:220px;", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", ""], {
28
28
  "height": "1.5rem"
29
29
  }, {
30
30
  "borderRadius": "0.25rem"
31
31
  }, {
32
- "display": "inline-flex"
32
+ "display": "flex"
33
33
  }, {
34
34
  "alignItems": "center"
35
- }, {
36
- "justifyContent": "center"
37
- }, {
38
- "gap": "0.25rem"
39
35
  }, {
40
36
  "paddingLeft": "0.375rem"
41
37
  }, {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/Chip/Styles.ts"],"names":["ChipContainer","styled","div","FontStyle","BoxSizingStyle","props","$showClose","css","$size","displayName","ChipLabel","span","ChipTrigger","Trigger","ChipCloseIcon","CloseSmallIcon"],"mappings":";;;;;;;;;AAAA;;AAEA;;AACA;;AACA;;AACA;;;;;;AAEO,IAAMA,aAAa,GAAGC,0BAAOC,GAAV;AAAA;AAAA;AAAA,2IAMpB;AAAA;AAAA,CANoB,EAOpB;AAAA;AAAA,CAPoB,EAQpB;AAAA;AAAA,CARoB,EASpB;AAAA;AAAA,CAToB,EAUpB;AAAA;AAAA,CAVoB,EAWpB;AAAA;AAAA,CAXoB,EAYpB;AAAA;AAAA,CAZoB,EAapB;AAAA;AAAA,CAboB,EAetBC,oBAfsB,EAgBtBC,8BAhBsB,EAmBpB;AAAA;AAAA,CAnBoB,EAoBpB;AAAA;AAAA,CApBoB,EAqBpB;AAAA;AAAA,CArBoB,EAsBpB;AAAA;AAAA,CAtBoB,EAuBpB;AAAA;AAAA,CAvBoB,EA0BpB;AAAA;AAAA,CA1BoB,EA4BtB,UAACC,KAAD;AAAA,SACAA,KAAK,CAACC,UAAN,GACI,IADJ,OAEIC,qBAFJ,YAGU;AAAA;AAAA,GAHV,CADA;AAAA,CA5BsB,EAmCtB,UAACF,KAAD;AAAA,SACAA,KAAK,CAACG,KAAN,KAAgB,SAAhB,QACAD,qBADA,mBADA;AAAA,CAnCsB,EAyCtB,UAACF,KAAD;AAAA,SACAA,KAAK,CAACG,KAAN,KAAgB,OAAhB,QACAD,qBADA,mBADA;AAAA,CAzCsB,EA+CtB,UAACF,KAAD;AAAA,SACAA,KAAK,CAACG,KAAN,KAAgB,KAAhB,QACAD,qBADA,mBADA;AAAA,CA/CsB,CAAnB;;;AAsDPP,aAAa,CAACS,WAAd,GAA4B,eAA5B;;AAEO,IAAMC,SAAS,GAAGT,0BAAOU,IAAV;AAAA;AAAA;AAAA,kBAChB;AAAA;AAAA,CADgB,EAEhB;AAAA;AAAA;AAAA;AAAA,CAFgB,CAAf;;;AAKPD,SAAS,CAACD,WAAV,GAAwB,WAAxB;AAEO,IAAMG,WAAW,GAAG,+BAAOC,gBAAP,CAAH;AAAA;AAAA;AAAA,mDAClB;AAAA;AAAA,CADkB,EAElB;AAAA;AAAA,CAFkB,EAGlB;AAAA;AAAA,CAHkB,EAMhB;AAAA;AAAA,CANgB,EASpB,UAACR,KAAD;AAAA,SACAA,KAAK,CAACG,KAAN,KAAgB,SAAhB,QACAD,qBADA,8BADA;AAAA,CAToB,EAgBpB,UAACF,KAAD;AAAA,SACAA,KAAK,CAACG,KAAN,KAAgB,OAAhB,QACAD,qBADA,8BADA;AAAA,CAhBoB,EAuBpB,UAACF,KAAD;AAAA,SACAA,KAAK,CAACG,KAAN,KAAgB,KAAhB,QACAD,qBADA,8BADA;AAAA,CAvBoB,CAAjB;;AA+BPK,WAAW,CAACH,WAAZ,GAA0B,aAA1B;AAEO,IAAMK,aAAa,GAAG,+BAAOC,qBAAP,CAAH;AAAA;AAAA;AAAA,aACpB;AAAA;AAAA,CADoB,CAAnB;;AAIPD,aAAa,CAACL,WAAd,GAA4B,eAA5B","sourcesContent":["import styled, { css } from \"styled-components\";\nimport tw from \"twin.macro\";\nimport { CloseSmallIcon } from \"../Icons\";\nimport { BoxSizingStyle } from \"../BoxSizingStyle\";\nimport { Trigger } from \"../Trigger\";\nimport { FontStyle } from \"../FontStyle\";\n\nexport const ChipContainer = styled.div<{\n $showClose?: boolean;\n $size?: string;\n}>`\n min-width: 80px;\n max-width: 220px;\n ${tw`tw-h-6`}\n ${tw`tw-rounded`}\n ${tw`tw-inline-flex`}\n ${tw`tw-items-center`}\n ${tw`tw-justify-center`}\n ${tw`tw-gap-1`}\n ${tw`tw-pl-1.5`}\n ${tw`tw-overflow-hidden`}\n\n ${FontStyle}\n ${BoxSizingStyle}\n\n // font\n ${tw`tw-text-body-2`}\n ${tw`tw-text-theme-900`}\n ${tw`tw-leading-regular`}\n ${tw`tw-tracking-regular`}\n ${tw`tw-font-regular`}\n\n // background\n ${tw`tw-bg-theme-400`}\n\n ${(props) =>\n props.$showClose\n ? null\n : css`\n ${tw`tw-pr-1.5`}\n `}\n\n ${(props) =>\n props.$size === \"regular\" &&\n css`\n height: 24px;\n `}\n\n ${(props) =>\n props.$size === \"small\" &&\n css`\n height: 18px;\n `}\n\n ${(props) =>\n props.$size === \"big\" &&\n css`\n height: 30px;\n `}\n`;\n\nChipContainer.displayName = \"ChipContainer\";\n\nexport const ChipLabel = styled.span`\n ${tw`tw-w-full`}\n ${tw`tw-truncate`}\n`;\n\nChipLabel.displayName = \"ChipLabel\";\n\nexport const ChipTrigger = styled(Trigger)<{ $size?: string }>`\n ${tw`tw-flex`}\n ${tw`tw-items-center`}\n ${tw`tw-justify-center`}\n\n &:hover {\n ${tw`tw-bg-theme-transparent-400`}\n }\n\n ${(props) =>\n props.$size === \"regular\" &&\n css`\n height: 24px;\n width: 24px;\n `}\n\n ${(props) =>\n props.$size === \"small\" &&\n css`\n height: 18px;\n width: 18px;\n `}\n\n ${(props) =>\n props.$size === \"big\" &&\n css`\n height: 30px;\n width: 30px;\n `}\n`;\n\nChipTrigger.displayName = \"ChipTrigger\";\n\nexport const ChipCloseIcon = styled(CloseSmallIcon)`\n ${tw`tw-text-theme-700`}\n`;\n\nChipCloseIcon.displayName = \"ChipCloseIcon\";\n"],"file":"Styles.js"}
1
+ {"version":3,"sources":["../../../../src/components/Chip/Styles.ts"],"names":["ChipContainer","styled","div","FontStyle","BoxSizingStyle","props","$showClose","css","$size","displayName","ChipLabel","span","ChipTrigger","Trigger","ChipCloseIcon","CloseSmallIcon"],"mappings":";;;;;;;;;AAAA;;AAEA;;AACA;;AACA;;AACA;;;;;;AAEO,IAAMA,aAAa,GAAGC,0BAAOC,GAAV;AAAA;AAAA;AAAA,iIAMpB;AAAA;AAAA,CANoB,EAOpB;AAAA;AAAA,CAPoB,EAQpB;AAAA;AAAA,CARoB,EASpB;AAAA;AAAA,CAToB,EAUpB;AAAA;AAAA,CAVoB,EAWpB;AAAA;AAAA,CAXoB,EAatBC,oBAbsB,EActBC,8BAdsB,EAiBpB;AAAA;AAAA,CAjBoB,EAkBpB;AAAA;AAAA,CAlBoB,EAmBpB;AAAA;AAAA,CAnBoB,EAoBpB;AAAA;AAAA,CApBoB,EAqBpB;AAAA;AAAA,CArBoB,EAwBpB;AAAA;AAAA,CAxBoB,EA0BtB,UAACC,KAAD;AAAA,SACAA,KAAK,CAACC,UAAN,GACI,IADJ,OAEIC,qBAFJ,YAGU;AAAA;AAAA,GAHV,CADA;AAAA,CA1BsB,EAiCtB,UAACF,KAAD;AAAA,SACAA,KAAK,CAACG,KAAN,KAAgB,SAAhB,QACAD,qBADA,mBADA;AAAA,CAjCsB,EAuCtB,UAACF,KAAD;AAAA,SACAA,KAAK,CAACG,KAAN,KAAgB,OAAhB,QACAD,qBADA,mBADA;AAAA,CAvCsB,EA6CtB,UAACF,KAAD;AAAA,SACAA,KAAK,CAACG,KAAN,KAAgB,KAAhB,QACAD,qBADA,mBADA;AAAA,CA7CsB,CAAnB;;;AAoDPP,aAAa,CAACS,WAAd,GAA4B,eAA5B;;AAEO,IAAMC,SAAS,GAAGT,0BAAOU,IAAV;AAAA;AAAA;AAAA,kBAChB;AAAA;AAAA,CADgB,EAEhB;AAAA;AAAA;AAAA;AAAA,CAFgB,CAAf;;;AAKPD,SAAS,CAACD,WAAV,GAAwB,WAAxB;AAEO,IAAMG,WAAW,GAAG,+BAAOC,gBAAP,CAAH;AAAA;AAAA;AAAA,mDAClB;AAAA;AAAA,CADkB,EAElB;AAAA;AAAA,CAFkB,EAGlB;AAAA;AAAA,CAHkB,EAMhB;AAAA;AAAA,CANgB,EASpB,UAACR,KAAD;AAAA,SACAA,KAAK,CAACG,KAAN,KAAgB,SAAhB,QACAD,qBADA,8BADA;AAAA,CAToB,EAgBpB,UAACF,KAAD;AAAA,SACAA,KAAK,CAACG,KAAN,KAAgB,OAAhB,QACAD,qBADA,8BADA;AAAA,CAhBoB,EAuBpB,UAACF,KAAD;AAAA,SACAA,KAAK,CAACG,KAAN,KAAgB,KAAhB,QACAD,qBADA,8BADA;AAAA,CAvBoB,CAAjB;;AA+BPK,WAAW,CAACH,WAAZ,GAA0B,aAA1B;AAEO,IAAMK,aAAa,GAAG,+BAAOC,qBAAP,CAAH;AAAA;AAAA;AAAA,aACpB;AAAA;AAAA,CADoB,CAAnB;;AAIPD,aAAa,CAACL,WAAd,GAA4B,eAA5B","sourcesContent":["import styled, { css } from \"styled-components\";\nimport tw from \"twin.macro\";\nimport { CloseSmallIcon } from \"../Icons\";\nimport { BoxSizingStyle } from \"../BoxSizingStyle\";\nimport { Trigger } from \"../Trigger\";\nimport { FontStyle } from \"../FontStyle\";\n\nexport const ChipContainer = styled.div<{\n $showClose?: boolean;\n $size?: string;\n}>`\n min-width: 44px;\n max-width: 220px;\n ${tw`tw-h-6`}\n ${tw`tw-rounded`}\n ${tw`tw-flex`}\n ${tw`tw-items-center`}\n ${tw`tw-pl-1.5`}\n ${tw`tw-overflow-hidden`}\n\n ${FontStyle}\n ${BoxSizingStyle}\n\n // font\n ${tw`tw-text-body-2`}\n ${tw`tw-text-theme-900`}\n ${tw`tw-leading-regular`}\n ${tw`tw-tracking-regular`}\n ${tw`tw-font-regular`}\n\n // background\n ${tw`tw-bg-theme-400`}\n\n ${(props) =>\n props.$showClose\n ? null\n : css`\n ${tw`tw-pr-1.5`}\n `}\n\n ${(props) =>\n props.$size === \"regular\" &&\n css`\n height: 24px;\n `}\n\n ${(props) =>\n props.$size === \"small\" &&\n css`\n height: 18px;\n `}\n\n ${(props) =>\n props.$size === \"big\" &&\n css`\n height: 30px;\n `}\n`;\n\nChipContainer.displayName = \"ChipContainer\";\n\nexport const ChipLabel = styled.span`\n ${tw`tw-w-full`}\n ${tw`tw-truncate`}\n`;\n\nChipLabel.displayName = \"ChipLabel\";\n\nexport const ChipTrigger = styled(Trigger)<{ $size?: string }>`\n ${tw`tw-flex`}\n ${tw`tw-items-center`}\n ${tw`tw-justify-center`}\n\n &:hover {\n ${tw`tw-bg-theme-transparent-400`}\n }\n\n ${(props) =>\n props.$size === \"regular\" &&\n css`\n height: 24px;\n width: 24px;\n `}\n\n ${(props) =>\n props.$size === \"small\" &&\n css`\n height: 18px;\n width: 18px;\n `}\n\n ${(props) =>\n props.$size === \"big\" &&\n css`\n height: 30px;\n width: 30px;\n `}\n`;\n\nChipTrigger.displayName = \"ChipTrigger\";\n\nexport const ChipCloseIcon = styled(CloseSmallIcon)`\n ${tw`tw-text-theme-700`}\n`;\n\nChipCloseIcon.displayName = \"ChipCloseIcon\";\n"],"file":"Styles.js"}
@@ -15,6 +15,8 @@ var _Autocomplete = require("../Autocomplete");
15
15
 
16
16
  var _Button = require("../Button/Button");
17
17
 
18
+ var _Autocomplete2 = require("../Autocomplete/Autocomplete");
19
+
18
20
  var _useForkRef = _interopRequireDefault(require("../../utils/useForkRef"));
19
21
 
20
22
  var _Popper = require("../Popper");
@@ -29,7 +31,23 @@ var _Styles = require("./Styles");
29
31
 
30
32
  var _InputAdornment = require("../Input/InputAdornment");
31
33
 
32
- var _excluded = ["options", "selected", "loading", "loadingText", "onChange", "placeholder", "handleEmptyAction", "disabled", "size", "invalid"];
34
+ var _Checkbox = require("../Checkbox");
35
+
36
+ var _Chip = require("../Chip");
37
+
38
+ var _Styles2 = require("../Input/Styles");
39
+
40
+ var _classnames = _interopRequireDefault(require("classnames"));
41
+
42
+ var _Typography = require("../Typography/Typography");
43
+
44
+ var _Trigger = require("../Trigger");
45
+
46
+ var _useOnClickOutside = require("../../hooks/useOnClickOutside");
47
+
48
+ var _Avatar = require("../Avatar");
49
+
50
+ var _excluded = ["options", "selected", "loading", "loadingText", "onChange", "placeholder", "handleEmptyAction", "disabled", "size", "invalid", "type", "renderChip", "forceCloseMenu", "renderOption", "limitChips", "hiddenNumberText"];
33
51
 
34
52
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
35
53
 
@@ -73,9 +91,17 @@ var ComboBox = function ComboBox(_ref) {
73
91
  size = _ref$size === void 0 ? "regular" : _ref$size,
74
92
  _ref$invalid = _ref.invalid,
75
93
  invalid = _ref$invalid === void 0 ? false : _ref$invalid,
94
+ _ref$type = _ref.type,
95
+ type = _ref$type === void 0 ? "single" : _ref$type,
96
+ renderChip = _ref.renderChip,
97
+ _ref$forceCloseMenu = _ref.forceCloseMenu,
98
+ forceCloseMenu = _ref$forceCloseMenu === void 0 ? type === "single" : _ref$forceCloseMenu,
99
+ renderOption = _ref.renderOption,
100
+ _ref$limitChips = _ref.limitChips,
101
+ limitChips = _ref$limitChips === void 0 ? 2 : _ref$limitChips,
102
+ hiddenNumberText = _ref.hiddenNumberText,
76
103
  prop = _objectWithoutProperties(_ref, _excluded);
77
104
 
78
- var timeoutRef = (0, _react.useRef)();
79
105
  var selectedName = (0, _react.useMemo)(function () {
80
106
  var value = "";
81
107
 
@@ -117,19 +143,28 @@ var ComboBox = function ComboBox(_ref) {
117
143
 
118
144
  var elementRef = (0, _react.useRef)(null);
119
145
  var handleRef = (0, _useForkRef.default)(setChildNode, elementRef);
146
+ var wrapperRef = (0, _react.useRef)(null);
147
+ var chipWrapper = (0, _react.useRef)(null);
120
148
 
121
149
  var _useState5 = (0, _react.useState)(false),
122
150
  _useState6 = _slicedToArray(_useState5, 2),
123
151
  open = _useState6[0],
124
152
  setOpen = _useState6[1];
125
153
 
154
+ (0, _useOnClickOutside.useOnClickOutside)(wrapperRef, function () {
155
+ return setOpen(false);
156
+ });
126
157
  var handleOnKeyDown = (0, _react.useCallback)(function (e) {
127
158
  if (e.key === "Escape" && open) {
128
159
  setOpen(false);
129
160
  setValue(selectedName);
130
161
  e.stopPropagation();
131
162
  }
132
- }, [open, selectedName]);
163
+
164
+ if (e.key === "Enter" && type === "multiple") {
165
+ setValue("");
166
+ }
167
+ }, [open, selectedName, type]);
133
168
  (0, _react.useEffect)(function () {
134
169
  open && (childNode === null || childNode === void 0 ? void 0 : childNode.focus());
135
170
  !open && (childNode === null || childNode === void 0 ? void 0 : childNode.blur());
@@ -142,46 +177,191 @@ var ComboBox = function ComboBox(_ref) {
142
177
  setOpen(false);
143
178
  }, [handleEmptyAction]);
144
179
  var handleChange = (0, _react.useCallback)(function (selectedValue) {
145
- if (selectedValue) {
146
- onChange === null || onChange === void 0 ? void 0 : onChange(selectedValue);
180
+ onChange === null || onChange === void 0 ? void 0 : onChange(selectedValue);
181
+
182
+ if (forceCloseMenu) {
147
183
  setOpen(false);
148
184
  }
149
- }, [onChange]);
185
+ }, [forceCloseMenu, onChange]);
150
186
  var onOpen = (0, _react.useCallback)(function () {
151
187
  if (!disabled) {
152
188
  setOpen(true);
153
189
  }
154
190
  }, [disabled]);
155
191
  var handleRenderOption = (0, _react.useCallback)(function (option, props) {
192
+ if (typeof renderOption === "function") {
193
+ return renderOption(option, props);
194
+ }
195
+
196
+ if (type === "multiple") {
197
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_OptionContent.OptionContent, {
198
+ imageUrl: option.image,
199
+ color: option.color,
200
+ textColor: option.textColor,
201
+ name: option.name
202
+ }), /*#__PURE__*/_react.default.createElement(_Checkbox.Checkbox, props));
203
+ }
204
+
156
205
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_OptionContent.OptionContent, {
157
206
  imageUrl: option.image,
158
207
  color: option.color,
159
208
  textColor: option.textColor,
160
209
  name: option.name
161
210
  }), /*#__PURE__*/_react.default.createElement(_RadioButton.RadioButton, props));
162
- }, []);
211
+ }, [type, renderOption]);
163
212
  var handleDeselect = (0, _react.useCallback)(function (e) {
164
213
  e.stopPropagation();
165
- onChange === null || onChange === void 0 ? void 0 : onChange("");
214
+
215
+ if (type === "multiple") {
216
+ onChange === null || onChange === void 0 ? void 0 : onChange([]);
217
+ } else {
218
+ onChange === null || onChange === void 0 ? void 0 : onChange("");
219
+ }
220
+
166
221
  setOpen(false);
167
- }, [onChange]);
222
+ }, [type, onChange]);
168
223
  var handleMouseDown = (0, _react.useCallback)(function (e) {
169
224
  e.preventDefault();
170
225
  }, []);
171
226
  var comboBoxRef = (0, _react.useRef)(null);
172
227
  var handleBlur = (0, _react.useCallback)(function () {
173
228
  setValue(selectedName);
174
- timeoutRef.current = setTimeout(function () {
175
- setOpen(false);
176
- }, 200);
177
229
  }, [selectedName]);
178
- (0, _react.useEffect)(function () {
179
- return function () {
180
- timeoutRef.current && clearTimeout(timeoutRef.current);
230
+ var renderChipAdornment = (0, _react.useCallback)(function (option, index) {
231
+ if (typeof renderChip === "function") {
232
+ return renderChip(option, index);
233
+ }
234
+
235
+ var avatarProps = {
236
+ className: "tw-my-0.5 tw-mr-0.5",
237
+ size: 18
181
238
  };
182
- }, []);
183
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Styles.StyledComboBoxInput, {
239
+
240
+ switch (size) {
241
+ case "big":
242
+ avatarProps.size = 22;
243
+ break;
244
+
245
+ case "small":
246
+ avatarProps.size = 14;
247
+ break;
248
+ }
249
+
250
+ var leftAdornment = option.image ? /*#__PURE__*/_react.default.createElement(_Avatar.Avatar, _extends({
251
+ url: option.image
252
+ }, avatarProps)) : undefined;
253
+ return /*#__PURE__*/_react.default.createElement(_Chip.Chip, {
254
+ className: "c-combo-box-chip",
255
+ leftAdornment: leftAdornment,
256
+ label: option.name,
257
+ key: index,
258
+ onClose: !disabled ? function (e) {
259
+ e.preventDefault();
260
+ e.stopPropagation();
261
+
262
+ if (Array.isArray(selected) && selected.includes(option.id)) {
263
+ if (typeof onChange === "function") {
264
+ var newSelected = selected.filter(function (item) {
265
+ return item !== option.id;
266
+ });
267
+ onChange(newSelected);
268
+ }
269
+ }
270
+ } : undefined,
271
+ size: size
272
+ });
273
+ }, [disabled, onChange, renderChip, selected, size]);
274
+ var autoSize = (0, _react.useMemo)(function () {
275
+ if (type === "multiple" && open && Array.isArray(selected) && selected.length > 1) {
276
+ return "auto";
277
+ }
278
+
279
+ return size;
280
+ }, [open, selected, size, type]);
281
+ var startAdornment = (0, _react.useMemo)(function () {
282
+ if (type === "multiple" && Array.isArray(selected) && selected.length > 0) {
283
+ var elements = [];
284
+ var total = 0;
285
+ options.forEach(function (option, index) {
286
+ var isGrouped = (0, _Autocomplete2.isOptionGroup)(option);
287
+
288
+ if (selected.includes(option.id) && !isGrouped) {
289
+ total = total + 1;
290
+ elements.push(renderChipAdornment(option, index));
291
+ } else if (isGrouped) {
292
+ var groupedOptions = option.options.filter(function (o) {
293
+ return selected.includes(o.id);
294
+ });
295
+ total = total + groupedOptions.length;
296
+
297
+ if (groupedOptions.length > 0) {
298
+ groupedOptions.forEach(function (o, _index) {
299
+ elements.push(renderChipAdornment(o, "".concat(index, "_").concat(_index)));
300
+ });
301
+ }
302
+ }
303
+ });
304
+ var _hidden = 0;
305
+
306
+ if (!open && limitChips > 0 && elements.length > limitChips) {
307
+ _hidden = elements.splice(limitChips, elements.length - limitChips).length;
308
+ }
309
+
310
+ return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, elements, _hidden > 0 && /*#__PURE__*/_react.default.createElement(_Typography.Typography, {
311
+ variant: size === "small" ? "Caption 1" : size === "regular" ? "Body 2" : "Body 1",
312
+ className: "tw-flex tw-items-center tw-shrink-0",
313
+ key: "hidden"
314
+ }, typeof hiddenNumberText === "function" ? hiddenNumberText(_hidden) : "+".concat(_hidden)));
315
+ }
316
+
317
+ return undefined;
318
+ }, [type, selected, options, open, limitChips, hiddenNumberText, renderChipAdornment, size]);
319
+ var showXIcon = Array.isArray(selected) && type === "multiple" && selected.length > 0;
320
+ var hasSelected = type === "multiple" && Array.isArray(selected) && selected.length > 0;
321
+ return /*#__PURE__*/_react.default.createElement("div", {
184
322
  className: "c-combo-box",
323
+ ref: wrapperRef
324
+ }, type === "multiple" ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Styles2.StyledInputWrapper, {
325
+ $size: size,
326
+ $invalid: invalid,
327
+ className: (0, _classnames.default)("tw-flex tw-space-between tw-flex-1", {
328
+ "tw-h-auto": autoSize === "auto"
329
+ }),
330
+ onClick: function onClick() {
331
+ var _elementRef$current;
332
+
333
+ (_elementRef$current = elementRef.current) === null || _elementRef$current === void 0 ? void 0 : _elementRef$current.focus();
334
+ }
335
+ }, /*#__PURE__*/_react.default.createElement("div", {
336
+ className: (0, _classnames.default)("tw-flex tw-gap-1 tw-flex-1", {
337
+ "tw-flex-wrap tw-w-full": autoSize === "auto",
338
+ "tw-items-center": autoSize !== "auto",
339
+ "tw-overflow-hidden": !open
340
+ }),
341
+ ref: chipWrapper
342
+ }, startAdornment, /*#__PURE__*/_react.default.createElement(_Styles2.StyledInput, {
343
+ className: (0, _classnames.default)("tw-flex tw-flex-1 tw-self-center tw-m-0", {
344
+ "tw-w-full": !selected || Array.isArray(selected) && selected.length === 0,
345
+ "tw-w-auto": autoSize === "auto"
346
+ }),
347
+ onBlur: handleBlur,
348
+ onFocus: onOpen,
349
+ ref: handleRef,
350
+ value: loading && loadingText ? loadingText : value,
351
+ onKeyDown: handleOnKeyDown,
352
+ onChange: handleOnChange,
353
+ placeholder: !hasSelected ? placeholder : undefined,
354
+ disabled: disabled,
355
+ $size: size,
356
+ $loading: loading
357
+ })), !disabled && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, loading ? /*#__PURE__*/_react.default.createElement(_SpinnerLoader.SpinnerLoader, null) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, showXIcon && /*#__PURE__*/_react.default.createElement(_Trigger.Trigger, {
358
+ onMouseDown: handleMouseDown,
359
+ onClick: handleDeselect,
360
+ className: "tw-flex tw-justify-content-center",
361
+ "data-testid": "deselect-all"
362
+ }, /*#__PURE__*/_react.default.createElement(_Styles.StyledComboBoxCloseSmallIcon, null)), /*#__PURE__*/_react.default.createElement(_Styles.StyledComboBoxCollapseExpandSingleIcon, {
363
+ $open: open
364
+ }))))) : /*#__PURE__*/_react.default.createElement(_Styles.StyledComboBoxInput, {
185
365
  onBlur: handleBlur,
186
366
  onFocus: onOpen,
187
367
  wrapRef: comboBoxRef,
@@ -194,6 +374,7 @@ var ComboBox = function ComboBox(_ref) {
194
374
  size: size,
195
375
  invalid: invalid,
196
376
  $loading: loading,
377
+ startAdornment: startAdornment,
197
378
  endAdornment: !disabled ? /*#__PURE__*/_react.default.createElement(_InputAdornment.InputAdornment, {
198
379
  disablePointerEvents: disabled
199
380
  }, loading ? /*#__PURE__*/_react.default.createElement(_SpinnerLoader.SpinnerLoader, null) : selected ? /*#__PURE__*/_react.default.createElement(_Button.Button, {
@@ -223,7 +404,7 @@ var ComboBox = function ComboBox(_ref) {
223
404
  handleChange: handleChange,
224
405
  renderOption: handleRenderOption,
225
406
  options: options,
226
- type: "single",
407
+ type: type,
227
408
  handleEmptyAction: emptyAction
228
409
  }))))) : null);
229
410
  };