@chayns-components/core 5.4.13 → 5.4.14

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.
@@ -21,6 +21,7 @@ var _DropdownBodyWrapper = _interopRequireDefault(require("../dropdown-body-wrap
21
21
  var _TagInput = _interopRequireDefault(require("../tag-input/TagInput"));
22
22
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
23
23
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
24
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
24
25
  const filterSearchBoxItems = ({
25
26
  customFilter,
26
27
  items,
@@ -54,6 +55,7 @@ const SearchBox = /*#__PURE__*/(0, _react.forwardRef)(({
54
55
  container,
55
56
  customFilter,
56
57
  dropdownDirection,
58
+ inputProps,
57
59
  isInvalid = false,
58
60
  leftIcons,
59
61
  lists,
@@ -78,7 +80,14 @@ const SearchBox = /*#__PURE__*/(0, _react.forwardRef)(({
78
80
  }, ref) => {
79
81
  const [matchingListsItems, setMatchingListsItems] = (0, _react.useState)(lists);
80
82
  const [selectedImage, setSelectedImage] = (0, _react.useState)();
81
- const [value, setValue] = (0, _react.useState)(typeof presetValue === 'string' && presetValue !== '' ? presetValue : '');
83
+ const [internalValue, setInternalValue] = (0, _react.useState)(typeof presetValue === 'string' && presetValue !== '' ? presetValue : '');
84
+ const inputValue = inputProps === null || inputProps === void 0 ? void 0 : inputProps.value;
85
+ const value = inputValue ?? internalValue;
86
+ const setValue = (0, _react.useCallback)(nextValue => {
87
+ if (typeof inputValue !== 'string') {
88
+ setInternalValue(nextValue);
89
+ }
90
+ }, [inputValue]);
82
91
  const [height, setHeight] = (0, _react.useState)(0);
83
92
  const [focusedIndex, setFocusedIndex] = (0, _react.useState)(null);
84
93
  const [hasMultipleGroups, setHasMultipleGroups] = (0, _react.useState)(lists.length > 1);
@@ -256,8 +265,11 @@ const SearchBox = /*#__PURE__*/(0, _react.forwardRef)(({
256
265
  * This function handles the focus event of the input and opens the dropdown if the input
257
266
  * should show content on an empty input
258
267
  */
259
- const handleFocus = (0, _react.useCallback)(() => {
268
+ const handleFocus = (0, _react.useCallback)(event => {
260
269
  hasFocusRef.current = true;
270
+ if (typeof (inputProps === null || inputProps === void 0 ? void 0 : inputProps.onFocus) === 'function') {
271
+ inputProps.onFocus(event);
272
+ }
261
273
  if (shouldShowContentOnEmptyInput) {
262
274
  const newMatchingItems = [];
263
275
  activeList.forEach(({
@@ -300,7 +312,15 @@ const SearchBox = /*#__PURE__*/(0, _react.forwardRef)(({
300
312
  handleOpen();
301
313
  }
302
314
  }
303
- }, [shouldShowContentOnEmptyInput, activeList, shouldAddInputToList, hintText, dropdownSearchString, customFilter, shouldUseCustomFilterOnly, handleOpen]);
315
+ }, [shouldShowContentOnEmptyInput, activeList, shouldAddInputToList, hintText, dropdownSearchString, customFilter, shouldUseCustomFilterOnly, handleOpen, inputProps]);
316
+ const handleKeyDown = (0, _react.useCallback)(event => {
317
+ if (typeof onKeyDown === 'function') {
318
+ onKeyDown(event);
319
+ }
320
+ if (typeof (inputProps === null || inputProps === void 0 ? void 0 : inputProps.onKeyDown) === 'function') {
321
+ inputProps.onKeyDown(event);
322
+ }
323
+ }, [inputProps, onKeyDown]);
304
324
 
305
325
  /**
306
326
  * This function filters the lists by input
@@ -410,7 +430,10 @@ const SearchBox = /*#__PURE__*/(0, _react.forwardRef)(({
410
430
  if (typeof onChange === 'function') {
411
431
  onChange(event);
412
432
  }
413
- }, [activeList, customFilter, handleOpen, onChange, shouldAddInputToList, shouldShowContentOnEmptyInput, shouldUseCustomFilterOnly]);
433
+ if (typeof (inputProps === null || inputProps === void 0 ? void 0 : inputProps.onChange) === 'function') {
434
+ inputProps.onChange(event);
435
+ }
436
+ }, [activeList, customFilter, handleOpen, inputProps, onChange, shouldAddInputToList, shouldShowContentOnEmptyInput, shouldUseCustomFilterOnly]);
414
437
 
415
438
  /**
416
439
  * This function handles the blur event of the input
@@ -420,7 +443,10 @@ const SearchBox = /*#__PURE__*/(0, _react.forwardRef)(({
420
443
  if (typeof onBlur === 'function') {
421
444
  onBlur(event);
422
445
  }
423
- }, [onBlur]);
446
+ if (typeof (inputProps === null || inputProps === void 0 ? void 0 : inputProps.onBlur) === 'function') {
447
+ inputProps.onBlur(event);
448
+ }
449
+ }, [inputProps, onBlur]);
424
450
  const handleDropdownOutsideClick = (0, _react.useCallback)(() => {
425
451
  var _tagInputRef$current;
426
452
  (_tagInputRef$current = tagInputRef.current) === null || _tagInputRef$current === void 0 || _tagInputRef$current.blur();
@@ -577,7 +603,7 @@ const SearchBox = /*#__PURE__*/(0, _react.forwardRef)(({
577
603
  }, []);
578
604
  (0, _react.useImperativeHandle)(ref, () => ({
579
605
  clear: () => setValue('')
580
- }), []);
606
+ }), [setValue]);
581
607
  (0, _react.useEffect)(() => {
582
608
  document.addEventListener('keydown', handleKeyPress);
583
609
  return () => {
@@ -592,7 +618,7 @@ const SearchBox = /*#__PURE__*/(0, _react.forwardRef)(({
592
618
  if (presetValue) {
593
619
  setValue(presetValue);
594
620
  }
595
- }, [presetValue]);
621
+ }, [presetValue, setValue]);
596
622
  const shouldShowDropdown = shouldShowBody && (matchingListsItems.length !== 0 || !!hintText) && (value.trim() !== '' || shouldShowContentOnEmptyInput);
597
623
  return (0, _react.useMemo)(() => /*#__PURE__*/_react.default.createElement(_SearchBox.StyledSearchBox, {
598
624
  ref: boxRef,
@@ -611,18 +637,19 @@ const SearchBox = /*#__PURE__*/(0, _react.forwardRef)(({
611
637
  shouldAllowMultiple: tagInputSettings.shouldAllowMultiple,
612
638
  shouldPreventEnter: true,
613
639
  tags: tagInputSettings.tags
614
- }) : /*#__PURE__*/_react.default.createElement(_Input.default, {
640
+ }) : /*#__PURE__*/_react.default.createElement(_Input.default
641
+ /* eslint-disable-next-line react/jsx-props-no-spreading */, _extends({}, inputProps, {
615
642
  isInvalid: isInvalid,
616
643
  leftElement: leftElement,
617
644
  onBlur: handleBlur,
618
645
  onChange: handleChange,
619
646
  onFocus: handleFocus,
620
- onKeyDown: onKeyDown,
647
+ onKeyDown: handleKeyDown,
621
648
  placeholder: placeholder,
622
649
  ref: inputRef,
623
650
  rightElement: rightElement,
624
651
  value: value
625
- })), boxRef.current && /*#__PURE__*/_react.default.createElement(_DropdownBodyWrapper.default, {
652
+ }))), boxRef.current && /*#__PURE__*/_react.default.createElement(_DropdownBodyWrapper.default, {
626
653
  anchorElement: boxRef.current,
627
654
  container: container,
628
655
  direction: dropdownDirection,
@@ -639,7 +666,7 @@ const SearchBox = /*#__PURE__*/(0, _react.forwardRef)(({
639
666
  ref: contentRef,
640
667
  selectedGroups: groups,
641
668
  shouldHideFilterButtons: shouldHideFilterButtons
642
- }, content))), [container, content, dropdownDirection, filterButtons, groups, handleBlur, handleChange, handleClose, handleDropdownOutsideClick, handleFocus, height, isInvalid, leftElement, maxHeight, onKeyDown, placeholder, rightElement, shouldHideFilterButtons, shouldShowDropdown, tagInputSettings, uuid, value]);
669
+ }, content))), [container, content, dropdownDirection, filterButtons, groups, handleBlur, handleChange, handleClose, handleDropdownOutsideClick, handleFocus, handleKeyDown, height, inputProps, isInvalid, leftElement, maxHeight, onKeyDown, placeholder, rightElement, shouldHideFilterButtons, shouldShowDropdown, tagInputSettings, uuid, value]);
643
670
  });
644
671
  SearchBox.displayName = 'SearchBox';
645
672
  var _default = exports.default = SearchBox;
@@ -1 +1 @@
1
- {"version":3,"file":"SearchBox.js","names":["_chaynsApi","require","_react","_interopRequireWildcard","_styledComponents","_calculate","_searchBox","_Icon","_interopRequireDefault","_Input","_GroupName","_SearchBoxBody","_SearchBoxItem","_SearchBoxItem2","_SearchBox","_uuid","_DropdownBodyWrapper","_TagInput","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","filterSearchBoxItems","customFilter","items","searchString","shouldUseCustomFilterOnly","searchList","filteredItems","filter","sortSearchBoxItems","getDropdownSearchString","selectedId","shouldKeepSelectedItemPosition","value","SearchBox","forwardRef","container","dropdownDirection","isInvalid","leftIcons","lists","maxHeight","onBlur","onChange","onKeyDown","onSelect","placeholder","presetValue","hintText","shouldAddInputToList","shouldHideFilterButtons","shouldShowContentOnEmptyInput","shouldShowSmallItems","shouldShowRoundImage","shouldShowToggleIcon","tagInputSettings","ref","matchingListsItems","setMatchingListsItems","useState","selectedImage","setSelectedImage","setValue","height","setHeight","focusedIndex","setFocusedIndex","hasMultipleGroups","setHasMultipleGroups","length","filteredChildrenArray","setFilteredChildrenArray","inputToListValue","setInputToListValue","groups","setGroups","shouldShowBody","setShouldShowBody","uuid","useUuid","boxRef","useRef","contentRef","inputRef","tagInputRef","hasFocusRef","isAnimatingRef","shouldShowPresetValue","theme","useTheme","dropdownSearchString","isTouch","useDevice","useEffect","filterButtons","useMemo","forEach","groupName","push","id","text","activeList","newLists","list","includes","newMatchingItems","newList","undefined","filteredMatchingListItems","map","item","handleOpen","useCallback","handleClose","handleFilterButtonsGroupSelect","keys","textArray","calculateContentHeight","selectedItem","find","imageUrl","createElement","StyledSearchBoxItemImage","src","$shouldShowRoundImage","current","handleFocus","toLowerCase","handleClick","rightElement","StyledSearchBoxIcon","onClick","icons","color","leftElement","StyledSearchBoxLeftWrapper","handleChange","event","filteredLists","target","handleBlur","handleDropdownOutsideClick","_tagInputRef$current","blur","handleSelect","newItem","replace","_tagInputRef$current2","resetValue","content","StyledSearchBoxHintText","index","key","name","listIndex","tabIndex","handleKeyDown","_contentRef$current","_childrenArray$find","children","childrenArray","Array","from","newChildren","child","startsWith","filteredChildren","dataset","isgroupname","preventDefault","newIndex","prevElement","newElement","stopPropagation","_element$children$","element","textContent","attributes","_element$children$2","nodeValue","newId","document","addEventListener","removeEventListener","handleKeyPress","keyCode","useImperativeHandle","clear","shouldShowDropdown","trim","StyledSearchBox","onAdd","onFocus","onRemove","shouldAllowMultiple","shouldPreventEnter","tags","anchorElement","direction","onClose","onOutsideClick","shouldShow","onGroupSelect","selectedGroups","displayName","_default","exports"],"sources":["../../../../src/components/search-box/SearchBox.tsx"],"sourcesContent":["import { useDevice } from 'chayns-api';\nimport React, {\n ChangeEvent,\n ChangeEventHandler,\n FC,\n FocusEvent,\n FocusEventHandler,\n forwardRef,\n KeyboardEventHandler,\n ReactElement,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useTheme } from 'styled-components';\nimport type { IFilterButtonItem } from '../../types/filterButtons';\nimport type { ISearchBoxItem, ISearchBoxItems } from '../../types/searchBox';\nimport { calculateContentHeight } from '../../utils/calculate';\nimport { searchList, sortSearchBoxItems } from '../../utils/searchBox';\nimport type { Theme } from '../color-scheme-provider/ColorSchemeProvider';\nimport Icon from '../icon/Icon';\nimport Input from '../input/Input';\nimport GroupName from './group-name/GroupName';\nimport SearchBoxBody from './search-box-body/SearchBoxBody';\nimport SearchBoxItem from './search-box-item/SearchBoxItem';\nimport { StyledSearchBoxItemImage } from './search-box-item/SearchBoxItem.styles';\nimport {\n StyledSearchBox,\n StyledSearchBoxHintText,\n StyledSearchBoxIcon,\n StyledSearchBoxLeftWrapper,\n} from './SearchBox.styles';\nimport { useUuid } from '../../hooks/uuid';\nimport DropdownBodyWrapper from '../dropdown-body-wrapper/DropdownBodyWrapper';\nimport TagInput, { TagInputProps, TagInputRef } from '../tag-input/TagInput';\nimport type { DropdownDirection } from '../../types/dropdown';\n\nexport interface SearchBoxRef {\n clear: VoidFunction;\n}\n\nexport interface TagInputSettings {\n onAdd?: TagInputProps['onAdd'];\n onRemove?: TagInputProps['onRemove'];\n shouldAllowMultiple?: TagInputProps['shouldAllowMultiple'];\n tags?: TagInputProps['tags'];\n}\n\nconst filterSearchBoxItems = ({\n customFilter,\n items,\n searchString,\n shouldUseCustomFilterOnly,\n}: {\n customFilter?: (item: ISearchBoxItem) => boolean;\n items: ISearchBoxItem[];\n searchString: string;\n shouldUseCustomFilterOnly?: boolean;\n}) => {\n if (typeof customFilter !== 'function') {\n return searchList({ items, searchString });\n }\n\n if (shouldUseCustomFilterOnly) {\n const filteredItems = items.filter(customFilter);\n\n return sortSearchBoxItems({ items: filteredItems, searchString });\n }\n\n return searchList({ items, searchString }).filter(customFilter);\n};\n\nconst getDropdownSearchString = ({\n selectedId,\n shouldKeepSelectedItemPosition,\n value,\n}: {\n selectedId?: string;\n shouldKeepSelectedItemPosition?: boolean;\n value: string;\n}) => (shouldKeepSelectedItemPosition && selectedId ? '' : value);\n\nexport type SearchBoxProps = {\n /**\n * The element where the content of the `ComboBox` should be rendered via React Portal.\n */\n container?: Element;\n /**\n * An optional callback function to filter the elements to be displayed\n */\n customFilter?: (item: ISearchBoxItem) => boolean;\n /**\n * If true, the custom filter replaces the built-in text search instead of narrowing its results.\n */\n shouldUseCustomFilterOnly?: boolean;\n /**\n * The direction in which the dropdown should be displayed. By default, it is displayed below the input.\n */\n dropdownDirection?: DropdownDirection;\n /**\n * If true, the input field is marked as invalid\n */\n isInvalid?: boolean;\n /**\n * An optional icon that is displayed inside the left side of the input.\n */\n leftIcons?: string[];\n /**\n * List of groups with items that can be searched. It is possible to give only one list; if multiple lists are provided, the 'group name' parameter becomes mandatory.\n */\n lists: ISearchBoxItems[];\n /**\n * The maximum height of the dropdown body in pixels.\n */\n maxHeight?: number;\n /**\n * Function to be executed when the input lost focus.\n */\n onBlur?: FocusEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when the input is changed.\n */\n onChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * Function that is executed when a letter is pressed\n */\n onKeyDown?: KeyboardEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when an item is selected.\n */\n onSelect?: (item: ISearchBoxItem) => void;\n /**\n * The placeholder that should be displayed.\n */\n placeholder?: string;\n /**\n * Set an input for the search box - it is not an item of a list, just a string.\n */\n presetValue?: string;\n /**\n * Control the selected item. If you use this prop, make sure to update it when the user selects an item.\n */\n selectedId?: string;\n /**\n * If true, the selected item keeps its original position in the dropdown list.\n */\n shouldKeepSelectedItemPosition?: boolean;\n /**\n * If true, the value in the Input is displayed in the list.\n */\n shouldAddInputToList: boolean;\n /**\n * If true, the filter buttons are hidden.\n */\n shouldHideFilterButtons?: boolean;\n /**\n * Whether the full list of items should be displayed if the input is empty.\n */\n shouldShowContentOnEmptyInput?: boolean;\n /**\n * If true, the dropdown items are displayed more compactly.\n */\n shouldShowSmallItems?: boolean;\n /**\n * If true, the images of the items are displayed in a round shape.\n */\n shouldShowRoundImage?: boolean;\n /**\n * Whether the icon to open and close the list should be displayed.\n */\n shouldShowToggleIcon?: boolean;\n /**\n * Settings for the TagInput.\n */\n tagInputSettings?: TagInputSettings;\n /**\n * A text that should be displayed if no results are found.\n */\n hintText?: string;\n};\n\nconst SearchBox: FC<SearchBoxProps> = forwardRef<SearchBoxRef, SearchBoxProps>(\n (\n {\n container,\n customFilter,\n dropdownDirection,\n isInvalid = false,\n leftIcons,\n lists,\n maxHeight = 300,\n onBlur,\n onChange,\n onKeyDown,\n onSelect,\n placeholder,\n presetValue,\n hintText,\n selectedId,\n shouldAddInputToList = true,\n shouldKeepSelectedItemPosition = false,\n shouldUseCustomFilterOnly = false,\n shouldHideFilterButtons = false,\n shouldShowContentOnEmptyInput = true,\n shouldShowSmallItems = false,\n shouldShowRoundImage,\n shouldShowToggleIcon = false,\n tagInputSettings,\n },\n ref,\n ) => {\n const [matchingListsItems, setMatchingListsItems] = useState<ISearchBoxItems[]>(lists);\n const [selectedImage, setSelectedImage] = useState<ReactElement>();\n const [value, setValue] = useState(\n typeof presetValue === 'string' && presetValue !== '' ? presetValue : '',\n );\n const [height, setHeight] = useState<number>(0);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n const [hasMultipleGroups, setHasMultipleGroups] = useState<boolean>(lists.length > 1);\n const [filteredChildrenArray, setFilteredChildrenArray] = useState<Element[]>();\n const [inputToListValue, setInputToListValue] = useState<string>('');\n const [groups, setGroups] = useState<string[]>(['all']);\n const [shouldShowBody, setShouldShowBody] = useState(false);\n\n const uuid = useUuid();\n\n const boxRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement | null>(null);\n const tagInputRef = useRef<TagInputRef>(null);\n\n const hasFocusRef = useRef<boolean>(false);\n const isAnimatingRef = useRef<boolean>(false);\n const shouldShowPresetValue = useRef<boolean>(\n typeof presetValue === 'string' && presetValue !== '',\n );\n\n const theme = useTheme() as Theme;\n const dropdownSearchString = getDropdownSearchString({\n selectedId,\n shouldKeepSelectedItemPosition,\n value,\n });\n\n const { isTouch } = useDevice();\n\n /**\n * Checks if there are multiple groups in the lists\n */\n useEffect(() => {\n setHasMultipleGroups(lists.length > 1);\n }, [lists]);\n\n const filterButtons = useMemo(() => {\n const items: IFilterButtonItem[] = [];\n\n if (lists.length <= 1) {\n return items;\n }\n\n lists.forEach(({ groupName }) => {\n if (groupName) {\n items.push({\n id: groupName,\n text: groupName,\n });\n }\n });\n\n return items;\n }, [lists]);\n\n /**\n * Filters the lists by the FilterButtons\n */\n const activeList = useMemo(() => {\n let newLists: ISearchBoxItems[] = [];\n\n if (groups[0] === 'all') {\n newLists = lists;\n } else {\n lists.forEach((list) => {\n if (list.groupName && groups.includes(list.groupName)) {\n newLists.push(list);\n }\n });\n }\n\n const newMatchingItems: ISearchBoxItems[] = [];\n\n newLists.forEach(({ list, groupName }) => {\n const newList = filterSearchBoxItems({\n customFilter,\n items: list,\n searchString: dropdownSearchString,\n shouldUseCustomFilterOnly,\n });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n const filteredMatchingListItems = newMatchingItems.map(({ list, groupName }) => ({\n groupName,\n list: list.filter((item) => {\n if (typeof customFilter === 'function' && shouldUseCustomFilterOnly) {\n return true;\n }\n\n return !(newMatchingItems.length === 1 && item.text === dropdownSearchString);\n }),\n }));\n\n setMatchingListsItems(filteredMatchingListItems);\n\n return newLists;\n }, [\n groups,\n lists,\n customFilter,\n dropdownSearchString,\n shouldAddInputToList,\n shouldUseCustomFilterOnly,\n ]);\n\n const handleOpen = useCallback(() => {\n setShouldShowBody(true);\n }, []);\n\n const handleClose = useCallback(() => {\n setShouldShowBody(false);\n }, []);\n\n const handleFilterButtonsGroupSelect = (keys: string[]) => {\n setGroups(keys.length === 0 ? ['all'] : keys);\n };\n\n /**\n * This hook calculates the height\n */\n useEffect(() => {\n const textArray: string[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n list.forEach(({ text }) => textArray.push(text));\n if (!groupName) {\n return;\n }\n textArray.push(groupName);\n });\n\n if (shouldAddInputToList && inputToListValue !== '') {\n textArray.push(inputToListValue);\n }\n\n setHeight(calculateContentHeight(textArray));\n }, [inputToListValue, activeList, placeholder, shouldAddInputToList]);\n\n useEffect(() => {\n if (selectedId) {\n activeList.forEach(({ list }) => {\n const selectedItem = list.find(({ id }) => id === selectedId);\n if (selectedItem) {\n setValue(selectedItem.text);\n\n if (selectedItem.imageUrl) {\n setSelectedImage(\n <StyledSearchBoxItemImage\n src={selectedItem.imageUrl}\n $shouldShowRoundImage={shouldShowRoundImage}\n />,\n );\n }\n }\n });\n }\n }, [activeList, selectedId, shouldShowRoundImage]);\n\n /**\n * This hook resets the value if the selectedId changes to undefined. This is an own useEffect because the value\n * should not be reset if the list changes and the selectedId is still undefined.\n */\n useEffect(() => {\n if (!selectedId && !shouldShowPresetValue.current) {\n setValue('');\n }\n }, [selectedId]);\n\n useEffect(() => {\n isAnimatingRef.current = shouldShowBody;\n }, [shouldShowBody]);\n\n useEffect(() => {\n if (\n (matchingListsItems.length !== 0 || hintText) &&\n !isAnimatingRef.current &&\n hasFocusRef.current\n ) {\n handleOpen();\n }\n }, [handleOpen, hintText, matchingListsItems.length]);\n\n /**\n * This function handles the focus event of the input and opens the dropdown if the input\n * should show content on an empty input\n */\n const handleFocus = useCallback(() => {\n hasFocusRef.current = true;\n\n if (shouldShowContentOnEmptyInput) {\n const newMatchingItems: ISearchBoxItems[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n const newList = filterSearchBoxItems({\n customFilter,\n items: list,\n searchString: dropdownSearchString,\n shouldUseCustomFilterOnly,\n });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n const filteredMatchingListItems = newMatchingItems.map(({ list, groupName }) => ({\n groupName,\n list: list.filter((item) => {\n if (typeof customFilter === 'function' && shouldUseCustomFilterOnly) {\n return true;\n }\n\n return !(\n newMatchingItems.length === 1 && item.text === dropdownSearchString\n );\n }),\n }));\n\n setMatchingListsItems(filteredMatchingListItems);\n\n if (filteredMatchingListItems.length !== 0 || hintText) {\n handleOpen();\n }\n }\n }, [\n shouldShowContentOnEmptyInput,\n activeList,\n shouldAddInputToList,\n hintText,\n dropdownSearchString,\n customFilter,\n shouldUseCustomFilterOnly,\n handleOpen,\n ]);\n\n /**\n * This function filters the lists by input\n */\n\n useEffect(() => {\n const newMatchingItems: ISearchBoxItems[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n const newList = filterSearchBoxItems({\n customFilter,\n items: list,\n searchString: dropdownSearchString,\n shouldUseCustomFilterOnly,\n });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n if (shouldAddInputToList && inputToListValue !== '') {\n newMatchingItems.forEach(({ list }) => {\n list.forEach(({ text }) => {\n if (text.toLowerCase() === inputToListValue.toLowerCase()) {\n setInputToListValue('');\n }\n });\n });\n }\n }, [\n inputToListValue,\n activeList,\n shouldAddInputToList,\n shouldShowContentOnEmptyInput,\n dropdownSearchString,\n customFilter,\n shouldUseCustomFilterOnly,\n ]);\n\n const handleClick = useCallback(() => {\n if (shouldShowBody) {\n handleClose();\n } else {\n handleOpen();\n }\n }, [handleClose, handleOpen, shouldShowBody]);\n\n const rightElement = useMemo(() => {\n if (!shouldShowToggleIcon) {\n return undefined;\n }\n\n return (\n <StyledSearchBoxIcon onClick={handleClick}>\n <Icon icons={['fa fa-chevron-down']} color={theme['006'] as string} />\n </StyledSearchBoxIcon>\n );\n }, [handleClick, shouldShowToggleIcon, theme]);\n\n const leftElement = useMemo(\n () =>\n (leftIcons || selectedImage) && (\n <StyledSearchBoxLeftWrapper>\n {leftIcons && <Icon icons={leftIcons} />}\n {selectedImage && selectedImage}\n </StyledSearchBoxLeftWrapper>\n ),\n [leftIcons, selectedImage],\n );\n\n /**\n * This function handles changes of the input\n */\n const handleChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const filteredLists: ISearchBoxItems[] = [];\n shouldShowPresetValue.current = false;\n\n activeList.forEach(({ list, groupName }) => {\n const newList = filterSearchBoxItems({\n customFilter,\n items: list,\n searchString: event.target.value,\n shouldUseCustomFilterOnly,\n });\n\n if (newList.length > 0) {\n filteredLists.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (filteredLists.length === 0 && shouldAddInputToList) {\n filteredLists.push({\n groupName: undefined,\n list: [],\n });\n }\n\n setSelectedImage(undefined);\n\n if (!shouldShowContentOnEmptyInput && !event.target.value) {\n setMatchingListsItems([]);\n } else {\n setMatchingListsItems(filteredLists);\n }\n\n if (filteredLists.length !== 0) {\n handleOpen();\n }\n\n setValue(event.target.value);\n setInputToListValue(event.target.value);\n\n if (typeof onChange === 'function') {\n onChange(event);\n }\n },\n [\n activeList,\n customFilter,\n handleOpen,\n onChange,\n shouldAddInputToList,\n shouldShowContentOnEmptyInput,\n shouldUseCustomFilterOnly,\n ],\n );\n\n /**\n * This function handles the blur event of the input\n */\n const handleBlur = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n hasFocusRef.current = false;\n\n if (typeof onBlur === 'function') {\n onBlur(event);\n }\n },\n [onBlur],\n );\n\n const handleDropdownOutsideClick = useCallback(() => {\n tagInputRef.current?.blur();\n\n return hasFocusRef.current && isTouch;\n }, [isTouch]);\n\n /**\n * This function handles the item selection\n */\n const handleSelect = useCallback(\n (item: ISearchBoxItem) => {\n const newItem = {\n ...item,\n text: item.text.replace('<b>', '').replace('</b>', '').replace('</b', ''),\n };\n\n if (tagInputSettings) {\n setValue('');\n setInputToListValue('');\n tagInputRef.current?.resetValue();\n } else {\n setValue(newItem.text);\n }\n\n handleClose();\n\n setSelectedImage(\n newItem.imageUrl ? (\n <StyledSearchBoxItemImage\n src={newItem.imageUrl}\n $shouldShowRoundImage={shouldShowRoundImage}\n />\n ) : undefined,\n );\n\n setMatchingListsItems([]);\n\n if (typeof onSelect === 'function') {\n onSelect(newItem);\n }\n },\n [handleClose, onSelect, shouldShowRoundImage, tagInputSettings],\n );\n\n const content = useMemo(() => {\n if (hintText && matchingListsItems.length === 0) {\n return (\n <StyledSearchBoxHintText>\n {hintText.replace('##value##', value)}\n </StyledSearchBoxHintText>\n );\n }\n\n const items: ReactElement[] = [];\n\n matchingListsItems.forEach(({ groupName, list }, index) => {\n if (hasMultipleGroups) {\n if (list.length <= 0) {\n return;\n }\n\n if (index !== 0) {\n items.push(<GroupName key={groupName} name={groupName ?? ''} />);\n }\n }\n\n list.forEach(({ id, text, imageUrl }, listIndex) => {\n items.push(\n <SearchBoxItem\n key={`${id}_${groupName ?? ''}`}\n id={id}\n text={text}\n imageUrl={imageUrl}\n shouldShowSmallItems={shouldShowSmallItems}\n shouldShowRoundImage={shouldShowRoundImage}\n onSelect={handleSelect}\n groupName={groupName}\n tabIndex={index === 0 && listIndex === 0 ? 0 : -1}\n />,\n );\n });\n });\n\n if (shouldAddInputToList && inputToListValue !== '') {\n items.push(\n <SearchBoxItem\n id=\"input-value\"\n onSelect={handleSelect}\n shouldShowSmallItems={shouldShowSmallItems}\n text={`<b>${inputToListValue}</b`}\n tabIndex={items.length === 0 ? 0 : -1}\n />,\n );\n }\n\n return items;\n }, [\n hintText,\n matchingListsItems,\n shouldAddInputToList,\n inputToListValue,\n value,\n hasMultipleGroups,\n shouldShowSmallItems,\n shouldShowRoundImage,\n handleSelect,\n ]);\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (!shouldShowBody || matchingListsItems.length === 0) {\n return;\n }\n\n const children = contentRef.current?.children;\n\n if (!children) {\n return;\n }\n\n const childrenArray = Array.from(children);\n\n const newChildren = childrenArray.find((child) =>\n child.id.startsWith('searchBoxContent__'),\n )?.children;\n\n if (!(newChildren && newChildren.length > 0)) {\n return;\n }\n\n const filteredChildren = Array.from(newChildren).filter(\n (child) => (child as HTMLElement).dataset.isgroupname !== 'true',\n );\n\n setFilteredChildrenArray(filteredChildren);\n\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n\n if (newChildren && newChildren.length > 0) {\n const newIndex =\n focusedIndex !== null\n ? (focusedIndex +\n (e.key === 'ArrowUp' ? -1 : 1) +\n filteredChildren.length) %\n filteredChildren.length\n : 0;\n\n if (focusedIndex !== null) {\n const prevElement = filteredChildren[focusedIndex] as HTMLDivElement;\n prevElement.tabIndex = -1;\n }\n\n setFocusedIndex(newIndex);\n\n const newElement = filteredChildren[newIndex] as HTMLDivElement;\n\n newElement.tabIndex = 0;\n }\n } else if (e.key === 'Enter') {\n e.preventDefault();\n e.stopPropagation();\n\n if (filteredChildren) {\n const element = filteredChildren[focusedIndex ?? 0];\n\n if (!element) {\n return;\n }\n\n const { id, textContent } = element;\n\n let imageUrl: string | undefined;\n\n // Just Ignore, it works\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (element.children[0]?.attributes.src) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n imageUrl = element.children[0]?.attributes.src.nodeValue as string;\n }\n\n const newId = id.replace('search-box-item__', '');\n\n handleSelect({\n id: newId === 'input-value' ? textContent : newId,\n text: textContent ?? '',\n imageUrl,\n });\n }\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [\n filteredChildrenArray,\n focusedIndex,\n handleSelect,\n matchingListsItems.length,\n shouldShowBody,\n ]);\n\n const handleKeyPress = useCallback((event: KeyboardEvent) => {\n if (event.keyCode === 27) {\n setMatchingListsItems([]);\n }\n }, []);\n\n useImperativeHandle(\n ref,\n () => ({\n clear: () => setValue(''),\n }),\n [],\n );\n\n useEffect(() => {\n document.addEventListener('keydown', handleKeyPress);\n\n return () => {\n document.addEventListener('keydown', handleKeyPress);\n };\n }, [handleKeyPress]);\n\n /**\n * Update the value if preset value changes\n */\n useEffect(() => {\n if (presetValue) {\n setValue(presetValue);\n }\n }, [presetValue]);\n\n const shouldShowDropdown =\n shouldShowBody &&\n (matchingListsItems.length !== 0 || !!hintText) &&\n (value.trim() !== '' || shouldShowContentOnEmptyInput);\n\n return useMemo(\n () => (\n <StyledSearchBox ref={boxRef} key={`search-box-${uuid}`}>\n <div id={`search_box_input${uuid}`}>\n {tagInputSettings ? (\n <TagInput\n leftElement={leftElement}\n onAdd={tagInputSettings.onAdd}\n onBlur={handleBlur}\n onChange={handleChange}\n onFocus={handleFocus}\n onRemove={tagInputSettings.onRemove}\n placeholder={placeholder}\n ref={tagInputRef}\n shouldAllowMultiple={tagInputSettings.shouldAllowMultiple}\n shouldPreventEnter\n tags={tagInputSettings.tags}\n />\n ) : (\n <Input\n isInvalid={isInvalid}\n leftElement={leftElement}\n onBlur={handleBlur}\n onChange={handleChange}\n onFocus={handleFocus}\n onKeyDown={onKeyDown}\n placeholder={placeholder}\n ref={inputRef}\n rightElement={rightElement}\n value={value}\n />\n )}\n </div>\n {boxRef.current && (\n <DropdownBodyWrapper\n anchorElement={boxRef.current}\n container={container}\n direction={dropdownDirection}\n onClose={handleClose}\n onOutsideClick={handleDropdownOutsideClick}\n shouldShowDropdown={shouldShowDropdown}\n >\n <SearchBoxBody\n filterButtons={filterButtons}\n height={height}\n maxHeight={maxHeight}\n shouldShow={shouldShowDropdown}\n key={`search-box-body-${uuid}`}\n onGroupSelect={handleFilterButtonsGroupSelect}\n ref={contentRef}\n selectedGroups={groups}\n shouldHideFilterButtons={shouldHideFilterButtons}\n >\n {content}\n </SearchBoxBody>\n </DropdownBodyWrapper>\n )}\n </StyledSearchBox>\n ),\n [\n container,\n content,\n dropdownDirection,\n filterButtons,\n groups,\n handleBlur,\n handleChange,\n handleClose,\n handleDropdownOutsideClick,\n handleFocus,\n height,\n isInvalid,\n leftElement,\n maxHeight,\n onKeyDown,\n placeholder,\n rightElement,\n shouldHideFilterButtons,\n shouldShowDropdown,\n tagInputSettings,\n uuid,\n value,\n ],\n );\n },\n);\n\nSearchBox.displayName = 'SearchBox';\n\nexport default SearchBox;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"SearchBox.js","names":["_chaynsApi","require","_react","_interopRequireWildcard","_styledComponents","_calculate","_searchBox","_Icon","_interopRequireDefault","_Input","_GroupName","_SearchBoxBody","_SearchBoxItem","_SearchBoxItem2","_SearchBox","_uuid","_DropdownBodyWrapper","_TagInput","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_extends","assign","bind","arguments","length","apply","filterSearchBoxItems","customFilter","items","searchString","shouldUseCustomFilterOnly","searchList","filteredItems","filter","sortSearchBoxItems","getDropdownSearchString","selectedId","shouldKeepSelectedItemPosition","value","SearchBox","forwardRef","container","dropdownDirection","inputProps","isInvalid","leftIcons","lists","maxHeight","onBlur","onChange","onKeyDown","onSelect","placeholder","presetValue","hintText","shouldAddInputToList","shouldHideFilterButtons","shouldShowContentOnEmptyInput","shouldShowSmallItems","shouldShowRoundImage","shouldShowToggleIcon","tagInputSettings","ref","matchingListsItems","setMatchingListsItems","useState","selectedImage","setSelectedImage","internalValue","setInternalValue","inputValue","setValue","useCallback","nextValue","height","setHeight","focusedIndex","setFocusedIndex","hasMultipleGroups","setHasMultipleGroups","filteredChildrenArray","setFilteredChildrenArray","inputToListValue","setInputToListValue","groups","setGroups","shouldShowBody","setShouldShowBody","uuid","useUuid","boxRef","useRef","contentRef","inputRef","tagInputRef","hasFocusRef","isAnimatingRef","shouldShowPresetValue","theme","useTheme","dropdownSearchString","isTouch","useDevice","useEffect","filterButtons","useMemo","forEach","groupName","push","id","text","activeList","newLists","list","includes","newMatchingItems","newList","undefined","filteredMatchingListItems","map","item","handleOpen","handleClose","handleFilterButtonsGroupSelect","keys","textArray","calculateContentHeight","selectedItem","find","imageUrl","createElement","StyledSearchBoxItemImage","src","$shouldShowRoundImage","current","handleFocus","event","onFocus","handleKeyDown","toLowerCase","handleClick","rightElement","StyledSearchBoxIcon","onClick","icons","color","leftElement","StyledSearchBoxLeftWrapper","handleChange","filteredLists","target","handleBlur","handleDropdownOutsideClick","_tagInputRef$current","blur","handleSelect","newItem","replace","_tagInputRef$current2","resetValue","content","StyledSearchBoxHintText","index","key","name","listIndex","tabIndex","_contentRef$current","_childrenArray$find","children","childrenArray","Array","from","newChildren","child","startsWith","filteredChildren","dataset","isgroupname","preventDefault","newIndex","prevElement","newElement","stopPropagation","_element$children$","element","textContent","attributes","_element$children$2","nodeValue","newId","document","addEventListener","removeEventListener","handleKeyPress","keyCode","useImperativeHandle","clear","shouldShowDropdown","trim","StyledSearchBox","onAdd","onRemove","shouldAllowMultiple","shouldPreventEnter","tags","anchorElement","direction","onClose","onOutsideClick","shouldShow","onGroupSelect","selectedGroups","displayName","_default","exports"],"sources":["../../../../src/components/search-box/SearchBox.tsx"],"sourcesContent":["import { useDevice } from 'chayns-api';\nimport React, {\n ChangeEvent,\n ChangeEventHandler,\n FC,\n FocusEvent,\n FocusEventHandler,\n forwardRef,\n KeyboardEventHandler,\n ReactElement,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useTheme } from 'styled-components';\nimport type { IFilterButtonItem } from '../../types/filterButtons';\nimport type { ISearchBoxItem, ISearchBoxItems } from '../../types/searchBox';\nimport { calculateContentHeight } from '../../utils/calculate';\nimport { searchList, sortSearchBoxItems } from '../../utils/searchBox';\nimport type { Theme } from '../color-scheme-provider/ColorSchemeProvider';\nimport Icon from '../icon/Icon';\nimport Input, { type InputProps } from '../input/Input';\nimport GroupName from './group-name/GroupName';\nimport SearchBoxBody from './search-box-body/SearchBoxBody';\nimport SearchBoxItem from './search-box-item/SearchBoxItem';\nimport { StyledSearchBoxItemImage } from './search-box-item/SearchBoxItem.styles';\nimport {\n StyledSearchBox,\n StyledSearchBoxHintText,\n StyledSearchBoxIcon,\n StyledSearchBoxLeftWrapper,\n} from './SearchBox.styles';\nimport { useUuid } from '../../hooks/uuid';\nimport DropdownBodyWrapper from '../dropdown-body-wrapper/DropdownBodyWrapper';\nimport TagInput, { TagInputProps, TagInputRef } from '../tag-input/TagInput';\nimport type { DropdownDirection } from '../../types/dropdown';\n\nexport interface SearchBoxRef {\n clear: VoidFunction;\n}\n\nexport interface TagInputSettings {\n onAdd?: TagInputProps['onAdd'];\n onRemove?: TagInputProps['onRemove'];\n shouldAllowMultiple?: TagInputProps['shouldAllowMultiple'];\n tags?: TagInputProps['tags'];\n}\n\nconst filterSearchBoxItems = ({\n customFilter,\n items,\n searchString,\n shouldUseCustomFilterOnly,\n}: {\n customFilter?: (item: ISearchBoxItem) => boolean;\n items: ISearchBoxItem[];\n searchString: string;\n shouldUseCustomFilterOnly?: boolean;\n}) => {\n if (typeof customFilter !== 'function') {\n return searchList({ items, searchString });\n }\n\n if (shouldUseCustomFilterOnly) {\n const filteredItems = items.filter(customFilter);\n\n return sortSearchBoxItems({ items: filteredItems, searchString });\n }\n\n return searchList({ items, searchString }).filter(customFilter);\n};\n\nconst getDropdownSearchString = ({\n selectedId,\n shouldKeepSelectedItemPosition,\n value,\n}: {\n selectedId?: string;\n shouldKeepSelectedItemPosition?: boolean;\n value: string;\n}) => (shouldKeepSelectedItemPosition && selectedId ? '' : value);\n\nexport type SearchBoxProps = {\n /**\n * The element where the content of the `ComboBox` should be rendered via React Portal.\n */\n container?: Element;\n /**\n * An optional callback function to filter the elements to be displayed\n */\n customFilter?: (item: ISearchBoxItem) => boolean;\n /**\n * If true, the custom filter replaces the built-in text search instead of narrowing its results.\n */\n shouldUseCustomFilterOnly?: boolean;\n /**\n * The direction in which the dropdown should be displayed. By default, it is displayed below the input.\n */\n dropdownDirection?: DropdownDirection;\n /**\n * If true, the input field is marked as invalid\n */\n isInvalid?: boolean;\n /**\n * An optional icon that is displayed inside the left side of the input.\n */\n leftIcons?: string[];\n /**\n * Props that are passed to the underlying Input component.\n */\n inputProps?: InputProps;\n /**\n * List of groups with items that can be searched. It is possible to give only one list; if multiple lists are provided, the 'group name' parameter becomes mandatory.\n */\n lists: ISearchBoxItems[];\n /**\n * The maximum height of the dropdown body in pixels.\n */\n maxHeight?: number;\n /**\n * Function to be executed when the input lost focus.\n */\n onBlur?: FocusEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when the input is changed.\n */\n onChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * Function that is executed when a letter is pressed\n */\n onKeyDown?: KeyboardEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when an item is selected.\n */\n onSelect?: (item: ISearchBoxItem) => void;\n /**\n * The placeholder that should be displayed.\n */\n placeholder?: string;\n /**\n * Set an input for the search box - it is not an item of a list, just a string.\n */\n presetValue?: string;\n /**\n * Control the selected item. If you use this prop, make sure to update it when the user selects an item.\n */\n selectedId?: string;\n /**\n * If true, the selected item keeps its original position in the dropdown list.\n */\n shouldKeepSelectedItemPosition?: boolean;\n /**\n * If true, the value in the Input is displayed in the list.\n */\n shouldAddInputToList: boolean;\n /**\n * If true, the filter buttons are hidden.\n */\n shouldHideFilterButtons?: boolean;\n /**\n * Whether the full list of items should be displayed if the input is empty.\n */\n shouldShowContentOnEmptyInput?: boolean;\n /**\n * If true, the dropdown items are displayed more compactly.\n */\n shouldShowSmallItems?: boolean;\n /**\n * If true, the images of the items are displayed in a round shape.\n */\n shouldShowRoundImage?: boolean;\n /**\n * Whether the icon to open and close the list should be displayed.\n */\n shouldShowToggleIcon?: boolean;\n /**\n * Settings for the TagInput.\n */\n tagInputSettings?: TagInputSettings;\n /**\n * A text that should be displayed if no results are found.\n */\n hintText?: string;\n};\n\nconst SearchBox: FC<SearchBoxProps> = forwardRef<SearchBoxRef, SearchBoxProps>(\n (\n {\n container,\n customFilter,\n dropdownDirection,\n inputProps,\n isInvalid = false,\n leftIcons,\n lists,\n maxHeight = 300,\n onBlur,\n onChange,\n onKeyDown,\n onSelect,\n placeholder,\n presetValue,\n hintText,\n selectedId,\n shouldAddInputToList = true,\n shouldKeepSelectedItemPosition = false,\n shouldUseCustomFilterOnly = false,\n shouldHideFilterButtons = false,\n shouldShowContentOnEmptyInput = true,\n shouldShowSmallItems = false,\n shouldShowRoundImage,\n shouldShowToggleIcon = false,\n tagInputSettings,\n },\n ref,\n ) => {\n const [matchingListsItems, setMatchingListsItems] = useState<ISearchBoxItems[]>(lists);\n const [selectedImage, setSelectedImage] = useState<ReactElement>();\n const [internalValue, setInternalValue] = useState(\n typeof presetValue === 'string' && presetValue !== '' ? presetValue : '',\n );\n const inputValue = inputProps?.value;\n const value = inputValue ?? internalValue;\n const setValue = useCallback(\n (nextValue: string) => {\n if (typeof inputValue !== 'string') {\n setInternalValue(nextValue);\n }\n },\n [inputValue],\n );\n const [height, setHeight] = useState<number>(0);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n const [hasMultipleGroups, setHasMultipleGroups] = useState<boolean>(lists.length > 1);\n const [filteredChildrenArray, setFilteredChildrenArray] = useState<Element[]>();\n const [inputToListValue, setInputToListValue] = useState<string>('');\n const [groups, setGroups] = useState<string[]>(['all']);\n const [shouldShowBody, setShouldShowBody] = useState(false);\n\n const uuid = useUuid();\n\n const boxRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement | null>(null);\n const tagInputRef = useRef<TagInputRef>(null);\n\n const hasFocusRef = useRef<boolean>(false);\n const isAnimatingRef = useRef<boolean>(false);\n const shouldShowPresetValue = useRef<boolean>(\n typeof presetValue === 'string' && presetValue !== '',\n );\n\n const theme = useTheme() as Theme;\n const dropdownSearchString = getDropdownSearchString({\n selectedId,\n shouldKeepSelectedItemPosition,\n value,\n });\n\n const { isTouch } = useDevice();\n\n /**\n * Checks if there are multiple groups in the lists\n */\n useEffect(() => {\n setHasMultipleGroups(lists.length > 1);\n }, [lists]);\n\n const filterButtons = useMemo(() => {\n const items: IFilterButtonItem[] = [];\n\n if (lists.length <= 1) {\n return items;\n }\n\n lists.forEach(({ groupName }) => {\n if (groupName) {\n items.push({\n id: groupName,\n text: groupName,\n });\n }\n });\n\n return items;\n }, [lists]);\n\n /**\n * Filters the lists by the FilterButtons\n */\n const activeList = useMemo(() => {\n let newLists: ISearchBoxItems[] = [];\n\n if (groups[0] === 'all') {\n newLists = lists;\n } else {\n lists.forEach((list) => {\n if (list.groupName && groups.includes(list.groupName)) {\n newLists.push(list);\n }\n });\n }\n\n const newMatchingItems: ISearchBoxItems[] = [];\n\n newLists.forEach(({ list, groupName }) => {\n const newList = filterSearchBoxItems({\n customFilter,\n items: list,\n searchString: dropdownSearchString,\n shouldUseCustomFilterOnly,\n });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n const filteredMatchingListItems = newMatchingItems.map(({ list, groupName }) => ({\n groupName,\n list: list.filter((item) => {\n if (typeof customFilter === 'function' && shouldUseCustomFilterOnly) {\n return true;\n }\n\n return !(newMatchingItems.length === 1 && item.text === dropdownSearchString);\n }),\n }));\n\n setMatchingListsItems(filteredMatchingListItems);\n\n return newLists;\n }, [\n groups,\n lists,\n customFilter,\n dropdownSearchString,\n shouldAddInputToList,\n shouldUseCustomFilterOnly,\n ]);\n\n const handleOpen = useCallback(() => {\n setShouldShowBody(true);\n }, []);\n\n const handleClose = useCallback(() => {\n setShouldShowBody(false);\n }, []);\n\n const handleFilterButtonsGroupSelect = (keys: string[]) => {\n setGroups(keys.length === 0 ? ['all'] : keys);\n };\n\n /**\n * This hook calculates the height\n */\n useEffect(() => {\n const textArray: string[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n list.forEach(({ text }) => textArray.push(text));\n if (!groupName) {\n return;\n }\n textArray.push(groupName);\n });\n\n if (shouldAddInputToList && inputToListValue !== '') {\n textArray.push(inputToListValue);\n }\n\n setHeight(calculateContentHeight(textArray));\n }, [inputToListValue, activeList, placeholder, shouldAddInputToList]);\n\n useEffect(() => {\n if (selectedId) {\n activeList.forEach(({ list }) => {\n const selectedItem = list.find(({ id }) => id === selectedId);\n if (selectedItem) {\n setValue(selectedItem.text);\n\n if (selectedItem.imageUrl) {\n setSelectedImage(\n <StyledSearchBoxItemImage\n src={selectedItem.imageUrl}\n $shouldShowRoundImage={shouldShowRoundImage}\n />,\n );\n }\n }\n });\n }\n }, [activeList, selectedId, shouldShowRoundImage]);\n\n /**\n * This hook resets the value if the selectedId changes to undefined. This is an own useEffect because the value\n * should not be reset if the list changes and the selectedId is still undefined.\n */\n useEffect(() => {\n if (!selectedId && !shouldShowPresetValue.current) {\n setValue('');\n }\n }, [selectedId]);\n\n useEffect(() => {\n isAnimatingRef.current = shouldShowBody;\n }, [shouldShowBody]);\n\n useEffect(() => {\n if (\n (matchingListsItems.length !== 0 || hintText) &&\n !isAnimatingRef.current &&\n hasFocusRef.current\n ) {\n handleOpen();\n }\n }, [handleOpen, hintText, matchingListsItems.length]);\n\n /**\n * This function handles the focus event of the input and opens the dropdown if the input\n * should show content on an empty input\n */\n const handleFocus = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n hasFocusRef.current = true;\n\n if (typeof inputProps?.onFocus === 'function') {\n inputProps.onFocus(event);\n }\n\n if (shouldShowContentOnEmptyInput) {\n const newMatchingItems: ISearchBoxItems[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n const newList = filterSearchBoxItems({\n customFilter,\n items: list,\n searchString: dropdownSearchString,\n shouldUseCustomFilterOnly,\n });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n const filteredMatchingListItems = newMatchingItems.map(\n ({ list, groupName }) => ({\n groupName,\n list: list.filter((item) => {\n if (\n typeof customFilter === 'function' &&\n shouldUseCustomFilterOnly\n ) {\n return true;\n }\n\n return !(\n newMatchingItems.length === 1 &&\n item.text === dropdownSearchString\n );\n }),\n }),\n );\n\n setMatchingListsItems(filteredMatchingListItems);\n\n if (filteredMatchingListItems.length !== 0 || hintText) {\n handleOpen();\n }\n }\n },\n [\n shouldShowContentOnEmptyInput,\n activeList,\n shouldAddInputToList,\n hintText,\n dropdownSearchString,\n customFilter,\n shouldUseCustomFilterOnly,\n handleOpen,\n inputProps,\n ],\n );\n\n const handleKeyDown = useCallback<KeyboardEventHandler<HTMLInputElement>>(\n (event) => {\n if (typeof onKeyDown === 'function') {\n onKeyDown(event);\n }\n\n if (typeof inputProps?.onKeyDown === 'function') {\n inputProps.onKeyDown(event);\n }\n },\n [inputProps, onKeyDown],\n );\n\n /**\n * This function filters the lists by input\n */\n\n useEffect(() => {\n const newMatchingItems: ISearchBoxItems[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n const newList = filterSearchBoxItems({\n customFilter,\n items: list,\n searchString: dropdownSearchString,\n shouldUseCustomFilterOnly,\n });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n if (shouldAddInputToList && inputToListValue !== '') {\n newMatchingItems.forEach(({ list }) => {\n list.forEach(({ text }) => {\n if (text.toLowerCase() === inputToListValue.toLowerCase()) {\n setInputToListValue('');\n }\n });\n });\n }\n }, [\n inputToListValue,\n activeList,\n shouldAddInputToList,\n shouldShowContentOnEmptyInput,\n dropdownSearchString,\n customFilter,\n shouldUseCustomFilterOnly,\n ]);\n\n const handleClick = useCallback(() => {\n if (shouldShowBody) {\n handleClose();\n } else {\n handleOpen();\n }\n }, [handleClose, handleOpen, shouldShowBody]);\n\n const rightElement = useMemo(() => {\n if (!shouldShowToggleIcon) {\n return undefined;\n }\n\n return (\n <StyledSearchBoxIcon onClick={handleClick}>\n <Icon icons={['fa fa-chevron-down']} color={theme['006'] as string} />\n </StyledSearchBoxIcon>\n );\n }, [handleClick, shouldShowToggleIcon, theme]);\n\n const leftElement = useMemo(\n () =>\n (leftIcons || selectedImage) && (\n <StyledSearchBoxLeftWrapper>\n {leftIcons && <Icon icons={leftIcons} />}\n {selectedImage && selectedImage}\n </StyledSearchBoxLeftWrapper>\n ),\n [leftIcons, selectedImage],\n );\n\n /**\n * This function handles changes of the input\n */\n const handleChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const filteredLists: ISearchBoxItems[] = [];\n shouldShowPresetValue.current = false;\n\n activeList.forEach(({ list, groupName }) => {\n const newList = filterSearchBoxItems({\n customFilter,\n items: list,\n searchString: event.target.value,\n shouldUseCustomFilterOnly,\n });\n\n if (newList.length > 0) {\n filteredLists.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (filteredLists.length === 0 && shouldAddInputToList) {\n filteredLists.push({\n groupName: undefined,\n list: [],\n });\n }\n\n setSelectedImage(undefined);\n\n if (!shouldShowContentOnEmptyInput && !event.target.value) {\n setMatchingListsItems([]);\n } else {\n setMatchingListsItems(filteredLists);\n }\n\n if (filteredLists.length !== 0) {\n handleOpen();\n }\n\n setValue(event.target.value);\n setInputToListValue(event.target.value);\n\n if (typeof onChange === 'function') {\n onChange(event);\n }\n\n if (typeof inputProps?.onChange === 'function') {\n inputProps.onChange(event);\n }\n },\n [\n activeList,\n customFilter,\n handleOpen,\n inputProps,\n onChange,\n shouldAddInputToList,\n shouldShowContentOnEmptyInput,\n shouldUseCustomFilterOnly,\n ],\n );\n\n /**\n * This function handles the blur event of the input\n */\n const handleBlur = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n hasFocusRef.current = false;\n\n if (typeof onBlur === 'function') {\n onBlur(event);\n }\n\n if (typeof inputProps?.onBlur === 'function') {\n inputProps.onBlur(event);\n }\n },\n [inputProps, onBlur],\n );\n\n const handleDropdownOutsideClick = useCallback(() => {\n tagInputRef.current?.blur();\n\n return hasFocusRef.current && isTouch;\n }, [isTouch]);\n\n /**\n * This function handles the item selection\n */\n const handleSelect = useCallback(\n (item: ISearchBoxItem) => {\n const newItem = {\n ...item,\n text: item.text.replace('<b>', '').replace('</b>', '').replace('</b', ''),\n };\n\n if (tagInputSettings) {\n setValue('');\n setInputToListValue('');\n tagInputRef.current?.resetValue();\n } else {\n setValue(newItem.text);\n }\n\n handleClose();\n\n setSelectedImage(\n newItem.imageUrl ? (\n <StyledSearchBoxItemImage\n src={newItem.imageUrl}\n $shouldShowRoundImage={shouldShowRoundImage}\n />\n ) : undefined,\n );\n\n setMatchingListsItems([]);\n\n if (typeof onSelect === 'function') {\n onSelect(newItem);\n }\n },\n [handleClose, onSelect, shouldShowRoundImage, tagInputSettings],\n );\n\n const content = useMemo(() => {\n if (hintText && matchingListsItems.length === 0) {\n return (\n <StyledSearchBoxHintText>\n {hintText.replace('##value##', value)}\n </StyledSearchBoxHintText>\n );\n }\n\n const items: ReactElement[] = [];\n\n matchingListsItems.forEach(({ groupName, list }, index) => {\n if (hasMultipleGroups) {\n if (list.length <= 0) {\n return;\n }\n\n if (index !== 0) {\n items.push(<GroupName key={groupName} name={groupName ?? ''} />);\n }\n }\n\n list.forEach(({ id, text, imageUrl }, listIndex) => {\n items.push(\n <SearchBoxItem\n key={`${id}_${groupName ?? ''}`}\n id={id}\n text={text}\n imageUrl={imageUrl}\n shouldShowSmallItems={shouldShowSmallItems}\n shouldShowRoundImage={shouldShowRoundImage}\n onSelect={handleSelect}\n groupName={groupName}\n tabIndex={index === 0 && listIndex === 0 ? 0 : -1}\n />,\n );\n });\n });\n\n if (shouldAddInputToList && inputToListValue !== '') {\n items.push(\n <SearchBoxItem\n id=\"input-value\"\n onSelect={handleSelect}\n shouldShowSmallItems={shouldShowSmallItems}\n text={`<b>${inputToListValue}</b`}\n tabIndex={items.length === 0 ? 0 : -1}\n />,\n );\n }\n\n return items;\n }, [\n hintText,\n matchingListsItems,\n shouldAddInputToList,\n inputToListValue,\n value,\n hasMultipleGroups,\n shouldShowSmallItems,\n shouldShowRoundImage,\n handleSelect,\n ]);\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (!shouldShowBody || matchingListsItems.length === 0) {\n return;\n }\n\n const children = contentRef.current?.children;\n\n if (!children) {\n return;\n }\n\n const childrenArray = Array.from(children);\n\n const newChildren = childrenArray.find((child) =>\n child.id.startsWith('searchBoxContent__'),\n )?.children;\n\n if (!(newChildren && newChildren.length > 0)) {\n return;\n }\n\n const filteredChildren = Array.from(newChildren).filter(\n (child) => (child as HTMLElement).dataset.isgroupname !== 'true',\n );\n\n setFilteredChildrenArray(filteredChildren);\n\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n\n if (newChildren && newChildren.length > 0) {\n const newIndex =\n focusedIndex !== null\n ? (focusedIndex +\n (e.key === 'ArrowUp' ? -1 : 1) +\n filteredChildren.length) %\n filteredChildren.length\n : 0;\n\n if (focusedIndex !== null) {\n const prevElement = filteredChildren[focusedIndex] as HTMLDivElement;\n prevElement.tabIndex = -1;\n }\n\n setFocusedIndex(newIndex);\n\n const newElement = filteredChildren[newIndex] as HTMLDivElement;\n\n newElement.tabIndex = 0;\n }\n } else if (e.key === 'Enter') {\n e.preventDefault();\n e.stopPropagation();\n\n if (filteredChildren) {\n const element = filteredChildren[focusedIndex ?? 0];\n\n if (!element) {\n return;\n }\n\n const { id, textContent } = element;\n\n let imageUrl: string | undefined;\n\n // Just Ignore, it works\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (element.children[0]?.attributes.src) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n imageUrl = element.children[0]?.attributes.src.nodeValue as string;\n }\n\n const newId = id.replace('search-box-item__', '');\n\n handleSelect({\n id: newId === 'input-value' ? textContent : newId,\n text: textContent ?? '',\n imageUrl,\n });\n }\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [\n filteredChildrenArray,\n focusedIndex,\n handleSelect,\n matchingListsItems.length,\n shouldShowBody,\n ]);\n\n const handleKeyPress = useCallback((event: KeyboardEvent) => {\n if (event.keyCode === 27) {\n setMatchingListsItems([]);\n }\n }, []);\n\n useImperativeHandle(\n ref,\n () => ({\n clear: () => setValue(''),\n }),\n [setValue],\n );\n\n useEffect(() => {\n document.addEventListener('keydown', handleKeyPress);\n\n return () => {\n document.addEventListener('keydown', handleKeyPress);\n };\n }, [handleKeyPress]);\n\n /**\n * Update the value if preset value changes\n */\n useEffect(() => {\n if (presetValue) {\n setValue(presetValue);\n }\n }, [presetValue, setValue]);\n\n const shouldShowDropdown =\n shouldShowBody &&\n (matchingListsItems.length !== 0 || !!hintText) &&\n (value.trim() !== '' || shouldShowContentOnEmptyInput);\n\n return useMemo(\n () => (\n <StyledSearchBox ref={boxRef} key={`search-box-${uuid}`}>\n <div id={`search_box_input${uuid}`}>\n {tagInputSettings ? (\n <TagInput\n leftElement={leftElement}\n onAdd={tagInputSettings.onAdd}\n onBlur={handleBlur}\n onChange={handleChange}\n onFocus={handleFocus}\n onRemove={tagInputSettings.onRemove}\n placeholder={placeholder}\n ref={tagInputRef}\n shouldAllowMultiple={tagInputSettings.shouldAllowMultiple}\n shouldPreventEnter\n tags={tagInputSettings.tags}\n />\n ) : (\n <Input\n /* eslint-disable-next-line react/jsx-props-no-spreading */\n {...inputProps}\n isInvalid={isInvalid}\n leftElement={leftElement}\n onBlur={handleBlur}\n onChange={handleChange}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n ref={inputRef}\n rightElement={rightElement}\n value={value}\n />\n )}\n </div>\n {boxRef.current && (\n <DropdownBodyWrapper\n anchorElement={boxRef.current}\n container={container}\n direction={dropdownDirection}\n onClose={handleClose}\n onOutsideClick={handleDropdownOutsideClick}\n shouldShowDropdown={shouldShowDropdown}\n >\n <SearchBoxBody\n filterButtons={filterButtons}\n height={height}\n maxHeight={maxHeight}\n shouldShow={shouldShowDropdown}\n key={`search-box-body-${uuid}`}\n onGroupSelect={handleFilterButtonsGroupSelect}\n ref={contentRef}\n selectedGroups={groups}\n shouldHideFilterButtons={shouldHideFilterButtons}\n >\n {content}\n </SearchBoxBody>\n </DropdownBodyWrapper>\n )}\n </StyledSearchBox>\n ),\n [\n container,\n content,\n dropdownDirection,\n filterButtons,\n groups,\n handleBlur,\n handleChange,\n handleClose,\n handleDropdownOutsideClick,\n handleFocus,\n handleKeyDown,\n height,\n inputProps,\n isInvalid,\n leftElement,\n maxHeight,\n onKeyDown,\n placeholder,\n rightElement,\n shouldHideFilterButtons,\n shouldShowDropdown,\n tagInputSettings,\n uuid,\n value,\n ],\n );\n },\n);\n\nSearchBox.displayName = 'SearchBox';\n\nexport default SearchBox;\n"],"mappings":"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","ignoreList":[]}
@@ -1,3 +1,4 @@
1
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
1
2
  import { useDevice } from 'chayns-api';
2
3
  import React, { forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';
3
4
  import { useTheme } from 'styled-components';
@@ -46,6 +47,7 @@ const SearchBox = /*#__PURE__*/forwardRef(({
46
47
  container,
47
48
  customFilter,
48
49
  dropdownDirection,
50
+ inputProps,
49
51
  isInvalid = false,
50
52
  leftIcons,
51
53
  lists,
@@ -70,7 +72,14 @@ const SearchBox = /*#__PURE__*/forwardRef(({
70
72
  }, ref) => {
71
73
  const [matchingListsItems, setMatchingListsItems] = useState(lists);
72
74
  const [selectedImage, setSelectedImage] = useState();
73
- const [value, setValue] = useState(typeof presetValue === 'string' && presetValue !== '' ? presetValue : '');
75
+ const [internalValue, setInternalValue] = useState(typeof presetValue === 'string' && presetValue !== '' ? presetValue : '');
76
+ const inputValue = inputProps?.value;
77
+ const value = inputValue ?? internalValue;
78
+ const setValue = useCallback(nextValue => {
79
+ if (typeof inputValue !== 'string') {
80
+ setInternalValue(nextValue);
81
+ }
82
+ }, [inputValue]);
74
83
  const [height, setHeight] = useState(0);
75
84
  const [focusedIndex, setFocusedIndex] = useState(null);
76
85
  const [hasMultipleGroups, setHasMultipleGroups] = useState(lists.length > 1);
@@ -248,8 +257,11 @@ const SearchBox = /*#__PURE__*/forwardRef(({
248
257
  * This function handles the focus event of the input and opens the dropdown if the input
249
258
  * should show content on an empty input
250
259
  */
251
- const handleFocus = useCallback(() => {
260
+ const handleFocus = useCallback(event => {
252
261
  hasFocusRef.current = true;
262
+ if (typeof inputProps?.onFocus === 'function') {
263
+ inputProps.onFocus(event);
264
+ }
253
265
  if (shouldShowContentOnEmptyInput) {
254
266
  const newMatchingItems = [];
255
267
  activeList.forEach(({
@@ -292,7 +304,15 @@ const SearchBox = /*#__PURE__*/forwardRef(({
292
304
  handleOpen();
293
305
  }
294
306
  }
295
- }, [shouldShowContentOnEmptyInput, activeList, shouldAddInputToList, hintText, dropdownSearchString, customFilter, shouldUseCustomFilterOnly, handleOpen]);
307
+ }, [shouldShowContentOnEmptyInput, activeList, shouldAddInputToList, hintText, dropdownSearchString, customFilter, shouldUseCustomFilterOnly, handleOpen, inputProps]);
308
+ const handleKeyDown = useCallback(event => {
309
+ if (typeof onKeyDown === 'function') {
310
+ onKeyDown(event);
311
+ }
312
+ if (typeof inputProps?.onKeyDown === 'function') {
313
+ inputProps.onKeyDown(event);
314
+ }
315
+ }, [inputProps, onKeyDown]);
296
316
 
297
317
  /**
298
318
  * This function filters the lists by input
@@ -402,7 +422,10 @@ const SearchBox = /*#__PURE__*/forwardRef(({
402
422
  if (typeof onChange === 'function') {
403
423
  onChange(event);
404
424
  }
405
- }, [activeList, customFilter, handleOpen, onChange, shouldAddInputToList, shouldShowContentOnEmptyInput, shouldUseCustomFilterOnly]);
425
+ if (typeof inputProps?.onChange === 'function') {
426
+ inputProps.onChange(event);
427
+ }
428
+ }, [activeList, customFilter, handleOpen, inputProps, onChange, shouldAddInputToList, shouldShowContentOnEmptyInput, shouldUseCustomFilterOnly]);
406
429
 
407
430
  /**
408
431
  * This function handles the blur event of the input
@@ -412,7 +435,10 @@ const SearchBox = /*#__PURE__*/forwardRef(({
412
435
  if (typeof onBlur === 'function') {
413
436
  onBlur(event);
414
437
  }
415
- }, [onBlur]);
438
+ if (typeof inputProps?.onBlur === 'function') {
439
+ inputProps.onBlur(event);
440
+ }
441
+ }, [inputProps, onBlur]);
416
442
  const handleDropdownOutsideClick = useCallback(() => {
417
443
  tagInputRef.current?.blur();
418
444
  return hasFocusRef.current && isTouch;
@@ -564,7 +590,7 @@ const SearchBox = /*#__PURE__*/forwardRef(({
564
590
  }, []);
565
591
  useImperativeHandle(ref, () => ({
566
592
  clear: () => setValue('')
567
- }), []);
593
+ }), [setValue]);
568
594
  useEffect(() => {
569
595
  document.addEventListener('keydown', handleKeyPress);
570
596
  return () => {
@@ -579,7 +605,7 @@ const SearchBox = /*#__PURE__*/forwardRef(({
579
605
  if (presetValue) {
580
606
  setValue(presetValue);
581
607
  }
582
- }, [presetValue]);
608
+ }, [presetValue, setValue]);
583
609
  const shouldShowDropdown = shouldShowBody && (matchingListsItems.length !== 0 || !!hintText) && (value.trim() !== '' || shouldShowContentOnEmptyInput);
584
610
  return useMemo(() => /*#__PURE__*/React.createElement(StyledSearchBox, {
585
611
  ref: boxRef,
@@ -598,18 +624,19 @@ const SearchBox = /*#__PURE__*/forwardRef(({
598
624
  shouldAllowMultiple: tagInputSettings.shouldAllowMultiple,
599
625
  shouldPreventEnter: true,
600
626
  tags: tagInputSettings.tags
601
- }) : /*#__PURE__*/React.createElement(Input, {
627
+ }) : /*#__PURE__*/React.createElement(Input
628
+ /* eslint-disable-next-line react/jsx-props-no-spreading */, _extends({}, inputProps, {
602
629
  isInvalid: isInvalid,
603
630
  leftElement: leftElement,
604
631
  onBlur: handleBlur,
605
632
  onChange: handleChange,
606
633
  onFocus: handleFocus,
607
- onKeyDown: onKeyDown,
634
+ onKeyDown: handleKeyDown,
608
635
  placeholder: placeholder,
609
636
  ref: inputRef,
610
637
  rightElement: rightElement,
611
638
  value: value
612
- })), boxRef.current && /*#__PURE__*/React.createElement(DropdownBodyWrapper, {
639
+ }))), boxRef.current && /*#__PURE__*/React.createElement(DropdownBodyWrapper, {
613
640
  anchorElement: boxRef.current,
614
641
  container: container,
615
642
  direction: dropdownDirection,
@@ -626,7 +653,7 @@ const SearchBox = /*#__PURE__*/forwardRef(({
626
653
  ref: contentRef,
627
654
  selectedGroups: groups,
628
655
  shouldHideFilterButtons: shouldHideFilterButtons
629
- }, content))), [container, content, dropdownDirection, filterButtons, groups, handleBlur, handleChange, handleClose, handleDropdownOutsideClick, handleFocus, height, isInvalid, leftElement, maxHeight, onKeyDown, placeholder, rightElement, shouldHideFilterButtons, shouldShowDropdown, tagInputSettings, uuid, value]);
656
+ }, content))), [container, content, dropdownDirection, filterButtons, groups, handleBlur, handleChange, handleClose, handleDropdownOutsideClick, handleFocus, handleKeyDown, height, inputProps, isInvalid, leftElement, maxHeight, onKeyDown, placeholder, rightElement, shouldHideFilterButtons, shouldShowDropdown, tagInputSettings, uuid, value]);
630
657
  });
631
658
  SearchBox.displayName = 'SearchBox';
632
659
  export default SearchBox;
@@ -1 +1 @@
1
- {"version":3,"file":"SearchBox.js","names":["useDevice","React","forwardRef","useCallback","useEffect","useImperativeHandle","useMemo","useRef","useState","useTheme","calculateContentHeight","searchList","sortSearchBoxItems","Icon","Input","GroupName","SearchBoxBody","SearchBoxItem","StyledSearchBoxItemImage","StyledSearchBox","StyledSearchBoxHintText","StyledSearchBoxIcon","StyledSearchBoxLeftWrapper","useUuid","DropdownBodyWrapper","TagInput","filterSearchBoxItems","customFilter","items","searchString","shouldUseCustomFilterOnly","filteredItems","filter","getDropdownSearchString","selectedId","shouldKeepSelectedItemPosition","value","SearchBox","container","dropdownDirection","isInvalid","leftIcons","lists","maxHeight","onBlur","onChange","onKeyDown","onSelect","placeholder","presetValue","hintText","shouldAddInputToList","shouldHideFilterButtons","shouldShowContentOnEmptyInput","shouldShowSmallItems","shouldShowRoundImage","shouldShowToggleIcon","tagInputSettings","ref","matchingListsItems","setMatchingListsItems","selectedImage","setSelectedImage","setValue","height","setHeight","focusedIndex","setFocusedIndex","hasMultipleGroups","setHasMultipleGroups","length","filteredChildrenArray","setFilteredChildrenArray","inputToListValue","setInputToListValue","groups","setGroups","shouldShowBody","setShouldShowBody","uuid","boxRef","contentRef","inputRef","tagInputRef","hasFocusRef","isAnimatingRef","shouldShowPresetValue","theme","dropdownSearchString","isTouch","filterButtons","forEach","groupName","push","id","text","activeList","newLists","list","includes","newMatchingItems","newList","undefined","filteredMatchingListItems","map","item","handleOpen","handleClose","handleFilterButtonsGroupSelect","keys","textArray","selectedItem","find","imageUrl","createElement","src","$shouldShowRoundImage","current","handleFocus","toLowerCase","handleClick","rightElement","onClick","icons","color","leftElement","handleChange","event","filteredLists","target","handleBlur","handleDropdownOutsideClick","blur","handleSelect","newItem","replace","resetValue","content","index","key","name","listIndex","tabIndex","handleKeyDown","e","children","childrenArray","Array","from","newChildren","child","startsWith","filteredChildren","dataset","isgroupname","preventDefault","newIndex","prevElement","newElement","stopPropagation","element","textContent","attributes","nodeValue","newId","document","addEventListener","removeEventListener","handleKeyPress","keyCode","clear","shouldShowDropdown","trim","onAdd","onFocus","onRemove","shouldAllowMultiple","shouldPreventEnter","tags","anchorElement","direction","onClose","onOutsideClick","shouldShow","onGroupSelect","selectedGroups","displayName"],"sources":["../../../../src/components/search-box/SearchBox.tsx"],"sourcesContent":["import { useDevice } from 'chayns-api';\nimport React, {\n ChangeEvent,\n ChangeEventHandler,\n FC,\n FocusEvent,\n FocusEventHandler,\n forwardRef,\n KeyboardEventHandler,\n ReactElement,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useTheme } from 'styled-components';\nimport type { IFilterButtonItem } from '../../types/filterButtons';\nimport type { ISearchBoxItem, ISearchBoxItems } from '../../types/searchBox';\nimport { calculateContentHeight } from '../../utils/calculate';\nimport { searchList, sortSearchBoxItems } from '../../utils/searchBox';\nimport type { Theme } from '../color-scheme-provider/ColorSchemeProvider';\nimport Icon from '../icon/Icon';\nimport Input from '../input/Input';\nimport GroupName from './group-name/GroupName';\nimport SearchBoxBody from './search-box-body/SearchBoxBody';\nimport SearchBoxItem from './search-box-item/SearchBoxItem';\nimport { StyledSearchBoxItemImage } from './search-box-item/SearchBoxItem.styles';\nimport {\n StyledSearchBox,\n StyledSearchBoxHintText,\n StyledSearchBoxIcon,\n StyledSearchBoxLeftWrapper,\n} from './SearchBox.styles';\nimport { useUuid } from '../../hooks/uuid';\nimport DropdownBodyWrapper from '../dropdown-body-wrapper/DropdownBodyWrapper';\nimport TagInput, { TagInputProps, TagInputRef } from '../tag-input/TagInput';\nimport type { DropdownDirection } from '../../types/dropdown';\n\nexport interface SearchBoxRef {\n clear: VoidFunction;\n}\n\nexport interface TagInputSettings {\n onAdd?: TagInputProps['onAdd'];\n onRemove?: TagInputProps['onRemove'];\n shouldAllowMultiple?: TagInputProps['shouldAllowMultiple'];\n tags?: TagInputProps['tags'];\n}\n\nconst filterSearchBoxItems = ({\n customFilter,\n items,\n searchString,\n shouldUseCustomFilterOnly,\n}: {\n customFilter?: (item: ISearchBoxItem) => boolean;\n items: ISearchBoxItem[];\n searchString: string;\n shouldUseCustomFilterOnly?: boolean;\n}) => {\n if (typeof customFilter !== 'function') {\n return searchList({ items, searchString });\n }\n\n if (shouldUseCustomFilterOnly) {\n const filteredItems = items.filter(customFilter);\n\n return sortSearchBoxItems({ items: filteredItems, searchString });\n }\n\n return searchList({ items, searchString }).filter(customFilter);\n};\n\nconst getDropdownSearchString = ({\n selectedId,\n shouldKeepSelectedItemPosition,\n value,\n}: {\n selectedId?: string;\n shouldKeepSelectedItemPosition?: boolean;\n value: string;\n}) => (shouldKeepSelectedItemPosition && selectedId ? '' : value);\n\nexport type SearchBoxProps = {\n /**\n * The element where the content of the `ComboBox` should be rendered via React Portal.\n */\n container?: Element;\n /**\n * An optional callback function to filter the elements to be displayed\n */\n customFilter?: (item: ISearchBoxItem) => boolean;\n /**\n * If true, the custom filter replaces the built-in text search instead of narrowing its results.\n */\n shouldUseCustomFilterOnly?: boolean;\n /**\n * The direction in which the dropdown should be displayed. By default, it is displayed below the input.\n */\n dropdownDirection?: DropdownDirection;\n /**\n * If true, the input field is marked as invalid\n */\n isInvalid?: boolean;\n /**\n * An optional icon that is displayed inside the left side of the input.\n */\n leftIcons?: string[];\n /**\n * List of groups with items that can be searched. It is possible to give only one list; if multiple lists are provided, the 'group name' parameter becomes mandatory.\n */\n lists: ISearchBoxItems[];\n /**\n * The maximum height of the dropdown body in pixels.\n */\n maxHeight?: number;\n /**\n * Function to be executed when the input lost focus.\n */\n onBlur?: FocusEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when the input is changed.\n */\n onChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * Function that is executed when a letter is pressed\n */\n onKeyDown?: KeyboardEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when an item is selected.\n */\n onSelect?: (item: ISearchBoxItem) => void;\n /**\n * The placeholder that should be displayed.\n */\n placeholder?: string;\n /**\n * Set an input for the search box - it is not an item of a list, just a string.\n */\n presetValue?: string;\n /**\n * Control the selected item. If you use this prop, make sure to update it when the user selects an item.\n */\n selectedId?: string;\n /**\n * If true, the selected item keeps its original position in the dropdown list.\n */\n shouldKeepSelectedItemPosition?: boolean;\n /**\n * If true, the value in the Input is displayed in the list.\n */\n shouldAddInputToList: boolean;\n /**\n * If true, the filter buttons are hidden.\n */\n shouldHideFilterButtons?: boolean;\n /**\n * Whether the full list of items should be displayed if the input is empty.\n */\n shouldShowContentOnEmptyInput?: boolean;\n /**\n * If true, the dropdown items are displayed more compactly.\n */\n shouldShowSmallItems?: boolean;\n /**\n * If true, the images of the items are displayed in a round shape.\n */\n shouldShowRoundImage?: boolean;\n /**\n * Whether the icon to open and close the list should be displayed.\n */\n shouldShowToggleIcon?: boolean;\n /**\n * Settings for the TagInput.\n */\n tagInputSettings?: TagInputSettings;\n /**\n * A text that should be displayed if no results are found.\n */\n hintText?: string;\n};\n\nconst SearchBox: FC<SearchBoxProps> = forwardRef<SearchBoxRef, SearchBoxProps>(\n (\n {\n container,\n customFilter,\n dropdownDirection,\n isInvalid = false,\n leftIcons,\n lists,\n maxHeight = 300,\n onBlur,\n onChange,\n onKeyDown,\n onSelect,\n placeholder,\n presetValue,\n hintText,\n selectedId,\n shouldAddInputToList = true,\n shouldKeepSelectedItemPosition = false,\n shouldUseCustomFilterOnly = false,\n shouldHideFilterButtons = false,\n shouldShowContentOnEmptyInput = true,\n shouldShowSmallItems = false,\n shouldShowRoundImage,\n shouldShowToggleIcon = false,\n tagInputSettings,\n },\n ref,\n ) => {\n const [matchingListsItems, setMatchingListsItems] = useState<ISearchBoxItems[]>(lists);\n const [selectedImage, setSelectedImage] = useState<ReactElement>();\n const [value, setValue] = useState(\n typeof presetValue === 'string' && presetValue !== '' ? presetValue : '',\n );\n const [height, setHeight] = useState<number>(0);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n const [hasMultipleGroups, setHasMultipleGroups] = useState<boolean>(lists.length > 1);\n const [filteredChildrenArray, setFilteredChildrenArray] = useState<Element[]>();\n const [inputToListValue, setInputToListValue] = useState<string>('');\n const [groups, setGroups] = useState<string[]>(['all']);\n const [shouldShowBody, setShouldShowBody] = useState(false);\n\n const uuid = useUuid();\n\n const boxRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement | null>(null);\n const tagInputRef = useRef<TagInputRef>(null);\n\n const hasFocusRef = useRef<boolean>(false);\n const isAnimatingRef = useRef<boolean>(false);\n const shouldShowPresetValue = useRef<boolean>(\n typeof presetValue === 'string' && presetValue !== '',\n );\n\n const theme = useTheme() as Theme;\n const dropdownSearchString = getDropdownSearchString({\n selectedId,\n shouldKeepSelectedItemPosition,\n value,\n });\n\n const { isTouch } = useDevice();\n\n /**\n * Checks if there are multiple groups in the lists\n */\n useEffect(() => {\n setHasMultipleGroups(lists.length > 1);\n }, [lists]);\n\n const filterButtons = useMemo(() => {\n const items: IFilterButtonItem[] = [];\n\n if (lists.length <= 1) {\n return items;\n }\n\n lists.forEach(({ groupName }) => {\n if (groupName) {\n items.push({\n id: groupName,\n text: groupName,\n });\n }\n });\n\n return items;\n }, [lists]);\n\n /**\n * Filters the lists by the FilterButtons\n */\n const activeList = useMemo(() => {\n let newLists: ISearchBoxItems[] = [];\n\n if (groups[0] === 'all') {\n newLists = lists;\n } else {\n lists.forEach((list) => {\n if (list.groupName && groups.includes(list.groupName)) {\n newLists.push(list);\n }\n });\n }\n\n const newMatchingItems: ISearchBoxItems[] = [];\n\n newLists.forEach(({ list, groupName }) => {\n const newList = filterSearchBoxItems({\n customFilter,\n items: list,\n searchString: dropdownSearchString,\n shouldUseCustomFilterOnly,\n });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n const filteredMatchingListItems = newMatchingItems.map(({ list, groupName }) => ({\n groupName,\n list: list.filter((item) => {\n if (typeof customFilter === 'function' && shouldUseCustomFilterOnly) {\n return true;\n }\n\n return !(newMatchingItems.length === 1 && item.text === dropdownSearchString);\n }),\n }));\n\n setMatchingListsItems(filteredMatchingListItems);\n\n return newLists;\n }, [\n groups,\n lists,\n customFilter,\n dropdownSearchString,\n shouldAddInputToList,\n shouldUseCustomFilterOnly,\n ]);\n\n const handleOpen = useCallback(() => {\n setShouldShowBody(true);\n }, []);\n\n const handleClose = useCallback(() => {\n setShouldShowBody(false);\n }, []);\n\n const handleFilterButtonsGroupSelect = (keys: string[]) => {\n setGroups(keys.length === 0 ? ['all'] : keys);\n };\n\n /**\n * This hook calculates the height\n */\n useEffect(() => {\n const textArray: string[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n list.forEach(({ text }) => textArray.push(text));\n if (!groupName) {\n return;\n }\n textArray.push(groupName);\n });\n\n if (shouldAddInputToList && inputToListValue !== '') {\n textArray.push(inputToListValue);\n }\n\n setHeight(calculateContentHeight(textArray));\n }, [inputToListValue, activeList, placeholder, shouldAddInputToList]);\n\n useEffect(() => {\n if (selectedId) {\n activeList.forEach(({ list }) => {\n const selectedItem = list.find(({ id }) => id === selectedId);\n if (selectedItem) {\n setValue(selectedItem.text);\n\n if (selectedItem.imageUrl) {\n setSelectedImage(\n <StyledSearchBoxItemImage\n src={selectedItem.imageUrl}\n $shouldShowRoundImage={shouldShowRoundImage}\n />,\n );\n }\n }\n });\n }\n }, [activeList, selectedId, shouldShowRoundImage]);\n\n /**\n * This hook resets the value if the selectedId changes to undefined. This is an own useEffect because the value\n * should not be reset if the list changes and the selectedId is still undefined.\n */\n useEffect(() => {\n if (!selectedId && !shouldShowPresetValue.current) {\n setValue('');\n }\n }, [selectedId]);\n\n useEffect(() => {\n isAnimatingRef.current = shouldShowBody;\n }, [shouldShowBody]);\n\n useEffect(() => {\n if (\n (matchingListsItems.length !== 0 || hintText) &&\n !isAnimatingRef.current &&\n hasFocusRef.current\n ) {\n handleOpen();\n }\n }, [handleOpen, hintText, matchingListsItems.length]);\n\n /**\n * This function handles the focus event of the input and opens the dropdown if the input\n * should show content on an empty input\n */\n const handleFocus = useCallback(() => {\n hasFocusRef.current = true;\n\n if (shouldShowContentOnEmptyInput) {\n const newMatchingItems: ISearchBoxItems[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n const newList = filterSearchBoxItems({\n customFilter,\n items: list,\n searchString: dropdownSearchString,\n shouldUseCustomFilterOnly,\n });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n const filteredMatchingListItems = newMatchingItems.map(({ list, groupName }) => ({\n groupName,\n list: list.filter((item) => {\n if (typeof customFilter === 'function' && shouldUseCustomFilterOnly) {\n return true;\n }\n\n return !(\n newMatchingItems.length === 1 && item.text === dropdownSearchString\n );\n }),\n }));\n\n setMatchingListsItems(filteredMatchingListItems);\n\n if (filteredMatchingListItems.length !== 0 || hintText) {\n handleOpen();\n }\n }\n }, [\n shouldShowContentOnEmptyInput,\n activeList,\n shouldAddInputToList,\n hintText,\n dropdownSearchString,\n customFilter,\n shouldUseCustomFilterOnly,\n handleOpen,\n ]);\n\n /**\n * This function filters the lists by input\n */\n\n useEffect(() => {\n const newMatchingItems: ISearchBoxItems[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n const newList = filterSearchBoxItems({\n customFilter,\n items: list,\n searchString: dropdownSearchString,\n shouldUseCustomFilterOnly,\n });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n if (shouldAddInputToList && inputToListValue !== '') {\n newMatchingItems.forEach(({ list }) => {\n list.forEach(({ text }) => {\n if (text.toLowerCase() === inputToListValue.toLowerCase()) {\n setInputToListValue('');\n }\n });\n });\n }\n }, [\n inputToListValue,\n activeList,\n shouldAddInputToList,\n shouldShowContentOnEmptyInput,\n dropdownSearchString,\n customFilter,\n shouldUseCustomFilterOnly,\n ]);\n\n const handleClick = useCallback(() => {\n if (shouldShowBody) {\n handleClose();\n } else {\n handleOpen();\n }\n }, [handleClose, handleOpen, shouldShowBody]);\n\n const rightElement = useMemo(() => {\n if (!shouldShowToggleIcon) {\n return undefined;\n }\n\n return (\n <StyledSearchBoxIcon onClick={handleClick}>\n <Icon icons={['fa fa-chevron-down']} color={theme['006'] as string} />\n </StyledSearchBoxIcon>\n );\n }, [handleClick, shouldShowToggleIcon, theme]);\n\n const leftElement = useMemo(\n () =>\n (leftIcons || selectedImage) && (\n <StyledSearchBoxLeftWrapper>\n {leftIcons && <Icon icons={leftIcons} />}\n {selectedImage && selectedImage}\n </StyledSearchBoxLeftWrapper>\n ),\n [leftIcons, selectedImage],\n );\n\n /**\n * This function handles changes of the input\n */\n const handleChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const filteredLists: ISearchBoxItems[] = [];\n shouldShowPresetValue.current = false;\n\n activeList.forEach(({ list, groupName }) => {\n const newList = filterSearchBoxItems({\n customFilter,\n items: list,\n searchString: event.target.value,\n shouldUseCustomFilterOnly,\n });\n\n if (newList.length > 0) {\n filteredLists.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (filteredLists.length === 0 && shouldAddInputToList) {\n filteredLists.push({\n groupName: undefined,\n list: [],\n });\n }\n\n setSelectedImage(undefined);\n\n if (!shouldShowContentOnEmptyInput && !event.target.value) {\n setMatchingListsItems([]);\n } else {\n setMatchingListsItems(filteredLists);\n }\n\n if (filteredLists.length !== 0) {\n handleOpen();\n }\n\n setValue(event.target.value);\n setInputToListValue(event.target.value);\n\n if (typeof onChange === 'function') {\n onChange(event);\n }\n },\n [\n activeList,\n customFilter,\n handleOpen,\n onChange,\n shouldAddInputToList,\n shouldShowContentOnEmptyInput,\n shouldUseCustomFilterOnly,\n ],\n );\n\n /**\n * This function handles the blur event of the input\n */\n const handleBlur = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n hasFocusRef.current = false;\n\n if (typeof onBlur === 'function') {\n onBlur(event);\n }\n },\n [onBlur],\n );\n\n const handleDropdownOutsideClick = useCallback(() => {\n tagInputRef.current?.blur();\n\n return hasFocusRef.current && isTouch;\n }, [isTouch]);\n\n /**\n * This function handles the item selection\n */\n const handleSelect = useCallback(\n (item: ISearchBoxItem) => {\n const newItem = {\n ...item,\n text: item.text.replace('<b>', '').replace('</b>', '').replace('</b', ''),\n };\n\n if (tagInputSettings) {\n setValue('');\n setInputToListValue('');\n tagInputRef.current?.resetValue();\n } else {\n setValue(newItem.text);\n }\n\n handleClose();\n\n setSelectedImage(\n newItem.imageUrl ? (\n <StyledSearchBoxItemImage\n src={newItem.imageUrl}\n $shouldShowRoundImage={shouldShowRoundImage}\n />\n ) : undefined,\n );\n\n setMatchingListsItems([]);\n\n if (typeof onSelect === 'function') {\n onSelect(newItem);\n }\n },\n [handleClose, onSelect, shouldShowRoundImage, tagInputSettings],\n );\n\n const content = useMemo(() => {\n if (hintText && matchingListsItems.length === 0) {\n return (\n <StyledSearchBoxHintText>\n {hintText.replace('##value##', value)}\n </StyledSearchBoxHintText>\n );\n }\n\n const items: ReactElement[] = [];\n\n matchingListsItems.forEach(({ groupName, list }, index) => {\n if (hasMultipleGroups) {\n if (list.length <= 0) {\n return;\n }\n\n if (index !== 0) {\n items.push(<GroupName key={groupName} name={groupName ?? ''} />);\n }\n }\n\n list.forEach(({ id, text, imageUrl }, listIndex) => {\n items.push(\n <SearchBoxItem\n key={`${id}_${groupName ?? ''}`}\n id={id}\n text={text}\n imageUrl={imageUrl}\n shouldShowSmallItems={shouldShowSmallItems}\n shouldShowRoundImage={shouldShowRoundImage}\n onSelect={handleSelect}\n groupName={groupName}\n tabIndex={index === 0 && listIndex === 0 ? 0 : -1}\n />,\n );\n });\n });\n\n if (shouldAddInputToList && inputToListValue !== '') {\n items.push(\n <SearchBoxItem\n id=\"input-value\"\n onSelect={handleSelect}\n shouldShowSmallItems={shouldShowSmallItems}\n text={`<b>${inputToListValue}</b`}\n tabIndex={items.length === 0 ? 0 : -1}\n />,\n );\n }\n\n return items;\n }, [\n hintText,\n matchingListsItems,\n shouldAddInputToList,\n inputToListValue,\n value,\n hasMultipleGroups,\n shouldShowSmallItems,\n shouldShowRoundImage,\n handleSelect,\n ]);\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (!shouldShowBody || matchingListsItems.length === 0) {\n return;\n }\n\n const children = contentRef.current?.children;\n\n if (!children) {\n return;\n }\n\n const childrenArray = Array.from(children);\n\n const newChildren = childrenArray.find((child) =>\n child.id.startsWith('searchBoxContent__'),\n )?.children;\n\n if (!(newChildren && newChildren.length > 0)) {\n return;\n }\n\n const filteredChildren = Array.from(newChildren).filter(\n (child) => (child as HTMLElement).dataset.isgroupname !== 'true',\n );\n\n setFilteredChildrenArray(filteredChildren);\n\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n\n if (newChildren && newChildren.length > 0) {\n const newIndex =\n focusedIndex !== null\n ? (focusedIndex +\n (e.key === 'ArrowUp' ? -1 : 1) +\n filteredChildren.length) %\n filteredChildren.length\n : 0;\n\n if (focusedIndex !== null) {\n const prevElement = filteredChildren[focusedIndex] as HTMLDivElement;\n prevElement.tabIndex = -1;\n }\n\n setFocusedIndex(newIndex);\n\n const newElement = filteredChildren[newIndex] as HTMLDivElement;\n\n newElement.tabIndex = 0;\n }\n } else if (e.key === 'Enter') {\n e.preventDefault();\n e.stopPropagation();\n\n if (filteredChildren) {\n const element = filteredChildren[focusedIndex ?? 0];\n\n if (!element) {\n return;\n }\n\n const { id, textContent } = element;\n\n let imageUrl: string | undefined;\n\n // Just Ignore, it works\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (element.children[0]?.attributes.src) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n imageUrl = element.children[0]?.attributes.src.nodeValue as string;\n }\n\n const newId = id.replace('search-box-item__', '');\n\n handleSelect({\n id: newId === 'input-value' ? textContent : newId,\n text: textContent ?? '',\n imageUrl,\n });\n }\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [\n filteredChildrenArray,\n focusedIndex,\n handleSelect,\n matchingListsItems.length,\n shouldShowBody,\n ]);\n\n const handleKeyPress = useCallback((event: KeyboardEvent) => {\n if (event.keyCode === 27) {\n setMatchingListsItems([]);\n }\n }, []);\n\n useImperativeHandle(\n ref,\n () => ({\n clear: () => setValue(''),\n }),\n [],\n );\n\n useEffect(() => {\n document.addEventListener('keydown', handleKeyPress);\n\n return () => {\n document.addEventListener('keydown', handleKeyPress);\n };\n }, [handleKeyPress]);\n\n /**\n * Update the value if preset value changes\n */\n useEffect(() => {\n if (presetValue) {\n setValue(presetValue);\n }\n }, [presetValue]);\n\n const shouldShowDropdown =\n shouldShowBody &&\n (matchingListsItems.length !== 0 || !!hintText) &&\n (value.trim() !== '' || shouldShowContentOnEmptyInput);\n\n return useMemo(\n () => (\n <StyledSearchBox ref={boxRef} key={`search-box-${uuid}`}>\n <div id={`search_box_input${uuid}`}>\n {tagInputSettings ? (\n <TagInput\n leftElement={leftElement}\n onAdd={tagInputSettings.onAdd}\n onBlur={handleBlur}\n onChange={handleChange}\n onFocus={handleFocus}\n onRemove={tagInputSettings.onRemove}\n placeholder={placeholder}\n ref={tagInputRef}\n shouldAllowMultiple={tagInputSettings.shouldAllowMultiple}\n shouldPreventEnter\n tags={tagInputSettings.tags}\n />\n ) : (\n <Input\n isInvalid={isInvalid}\n leftElement={leftElement}\n onBlur={handleBlur}\n onChange={handleChange}\n onFocus={handleFocus}\n onKeyDown={onKeyDown}\n placeholder={placeholder}\n ref={inputRef}\n rightElement={rightElement}\n value={value}\n />\n )}\n </div>\n {boxRef.current && (\n <DropdownBodyWrapper\n anchorElement={boxRef.current}\n container={container}\n direction={dropdownDirection}\n onClose={handleClose}\n onOutsideClick={handleDropdownOutsideClick}\n shouldShowDropdown={shouldShowDropdown}\n >\n <SearchBoxBody\n filterButtons={filterButtons}\n height={height}\n maxHeight={maxHeight}\n shouldShow={shouldShowDropdown}\n key={`search-box-body-${uuid}`}\n onGroupSelect={handleFilterButtonsGroupSelect}\n ref={contentRef}\n selectedGroups={groups}\n shouldHideFilterButtons={shouldHideFilterButtons}\n >\n {content}\n </SearchBoxBody>\n </DropdownBodyWrapper>\n )}\n </StyledSearchBox>\n ),\n [\n container,\n content,\n dropdownDirection,\n filterButtons,\n groups,\n handleBlur,\n handleChange,\n handleClose,\n handleDropdownOutsideClick,\n handleFocus,\n height,\n isInvalid,\n leftElement,\n maxHeight,\n onKeyDown,\n placeholder,\n rightElement,\n shouldHideFilterButtons,\n shouldShowDropdown,\n tagInputSettings,\n uuid,\n value,\n ],\n );\n },\n);\n\nSearchBox.displayName = 'SearchBox';\n\nexport default SearchBox;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"SearchBox.js","names":["useDevice","React","forwardRef","useCallback","useEffect","useImperativeHandle","useMemo","useRef","useState","useTheme","calculateContentHeight","searchList","sortSearchBoxItems","Icon","Input","GroupName","SearchBoxBody","SearchBoxItem","StyledSearchBoxItemImage","StyledSearchBox","StyledSearchBoxHintText","StyledSearchBoxIcon","StyledSearchBoxLeftWrapper","useUuid","DropdownBodyWrapper","TagInput","filterSearchBoxItems","customFilter","items","searchString","shouldUseCustomFilterOnly","filteredItems","filter","getDropdownSearchString","selectedId","shouldKeepSelectedItemPosition","value","SearchBox","container","dropdownDirection","inputProps","isInvalid","leftIcons","lists","maxHeight","onBlur","onChange","onKeyDown","onSelect","placeholder","presetValue","hintText","shouldAddInputToList","shouldHideFilterButtons","shouldShowContentOnEmptyInput","shouldShowSmallItems","shouldShowRoundImage","shouldShowToggleIcon","tagInputSettings","ref","matchingListsItems","setMatchingListsItems","selectedImage","setSelectedImage","internalValue","setInternalValue","inputValue","setValue","nextValue","height","setHeight","focusedIndex","setFocusedIndex","hasMultipleGroups","setHasMultipleGroups","length","filteredChildrenArray","setFilteredChildrenArray","inputToListValue","setInputToListValue","groups","setGroups","shouldShowBody","setShouldShowBody","uuid","boxRef","contentRef","inputRef","tagInputRef","hasFocusRef","isAnimatingRef","shouldShowPresetValue","theme","dropdownSearchString","isTouch","filterButtons","forEach","groupName","push","id","text","activeList","newLists","list","includes","newMatchingItems","newList","undefined","filteredMatchingListItems","map","item","handleOpen","handleClose","handleFilterButtonsGroupSelect","keys","textArray","selectedItem","find","imageUrl","createElement","src","$shouldShowRoundImage","current","handleFocus","event","onFocus","handleKeyDown","toLowerCase","handleClick","rightElement","onClick","icons","color","leftElement","handleChange","filteredLists","target","handleBlur","handleDropdownOutsideClick","blur","handleSelect","newItem","replace","resetValue","content","index","key","name","listIndex","tabIndex","e","children","childrenArray","Array","from","newChildren","child","startsWith","filteredChildren","dataset","isgroupname","preventDefault","newIndex","prevElement","newElement","stopPropagation","element","textContent","attributes","nodeValue","newId","document","addEventListener","removeEventListener","handleKeyPress","keyCode","clear","shouldShowDropdown","trim","onAdd","onRemove","shouldAllowMultiple","shouldPreventEnter","tags","_extends","anchorElement","direction","onClose","onOutsideClick","shouldShow","onGroupSelect","selectedGroups","displayName"],"sources":["../../../../src/components/search-box/SearchBox.tsx"],"sourcesContent":["import { useDevice } from 'chayns-api';\nimport React, {\n ChangeEvent,\n ChangeEventHandler,\n FC,\n FocusEvent,\n FocusEventHandler,\n forwardRef,\n KeyboardEventHandler,\n ReactElement,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useTheme } from 'styled-components';\nimport type { IFilterButtonItem } from '../../types/filterButtons';\nimport type { ISearchBoxItem, ISearchBoxItems } from '../../types/searchBox';\nimport { calculateContentHeight } from '../../utils/calculate';\nimport { searchList, sortSearchBoxItems } from '../../utils/searchBox';\nimport type { Theme } from '../color-scheme-provider/ColorSchemeProvider';\nimport Icon from '../icon/Icon';\nimport Input, { type InputProps } from '../input/Input';\nimport GroupName from './group-name/GroupName';\nimport SearchBoxBody from './search-box-body/SearchBoxBody';\nimport SearchBoxItem from './search-box-item/SearchBoxItem';\nimport { StyledSearchBoxItemImage } from './search-box-item/SearchBoxItem.styles';\nimport {\n StyledSearchBox,\n StyledSearchBoxHintText,\n StyledSearchBoxIcon,\n StyledSearchBoxLeftWrapper,\n} from './SearchBox.styles';\nimport { useUuid } from '../../hooks/uuid';\nimport DropdownBodyWrapper from '../dropdown-body-wrapper/DropdownBodyWrapper';\nimport TagInput, { TagInputProps, TagInputRef } from '../tag-input/TagInput';\nimport type { DropdownDirection } from '../../types/dropdown';\n\nexport interface SearchBoxRef {\n clear: VoidFunction;\n}\n\nexport interface TagInputSettings {\n onAdd?: TagInputProps['onAdd'];\n onRemove?: TagInputProps['onRemove'];\n shouldAllowMultiple?: TagInputProps['shouldAllowMultiple'];\n tags?: TagInputProps['tags'];\n}\n\nconst filterSearchBoxItems = ({\n customFilter,\n items,\n searchString,\n shouldUseCustomFilterOnly,\n}: {\n customFilter?: (item: ISearchBoxItem) => boolean;\n items: ISearchBoxItem[];\n searchString: string;\n shouldUseCustomFilterOnly?: boolean;\n}) => {\n if (typeof customFilter !== 'function') {\n return searchList({ items, searchString });\n }\n\n if (shouldUseCustomFilterOnly) {\n const filteredItems = items.filter(customFilter);\n\n return sortSearchBoxItems({ items: filteredItems, searchString });\n }\n\n return searchList({ items, searchString }).filter(customFilter);\n};\n\nconst getDropdownSearchString = ({\n selectedId,\n shouldKeepSelectedItemPosition,\n value,\n}: {\n selectedId?: string;\n shouldKeepSelectedItemPosition?: boolean;\n value: string;\n}) => (shouldKeepSelectedItemPosition && selectedId ? '' : value);\n\nexport type SearchBoxProps = {\n /**\n * The element where the content of the `ComboBox` should be rendered via React Portal.\n */\n container?: Element;\n /**\n * An optional callback function to filter the elements to be displayed\n */\n customFilter?: (item: ISearchBoxItem) => boolean;\n /**\n * If true, the custom filter replaces the built-in text search instead of narrowing its results.\n */\n shouldUseCustomFilterOnly?: boolean;\n /**\n * The direction in which the dropdown should be displayed. By default, it is displayed below the input.\n */\n dropdownDirection?: DropdownDirection;\n /**\n * If true, the input field is marked as invalid\n */\n isInvalid?: boolean;\n /**\n * An optional icon that is displayed inside the left side of the input.\n */\n leftIcons?: string[];\n /**\n * Props that are passed to the underlying Input component.\n */\n inputProps?: InputProps;\n /**\n * List of groups with items that can be searched. It is possible to give only one list; if multiple lists are provided, the 'group name' parameter becomes mandatory.\n */\n lists: ISearchBoxItems[];\n /**\n * The maximum height of the dropdown body in pixels.\n */\n maxHeight?: number;\n /**\n * Function to be executed when the input lost focus.\n */\n onBlur?: FocusEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when the input is changed.\n */\n onChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * Function that is executed when a letter is pressed\n */\n onKeyDown?: KeyboardEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when an item is selected.\n */\n onSelect?: (item: ISearchBoxItem) => void;\n /**\n * The placeholder that should be displayed.\n */\n placeholder?: string;\n /**\n * Set an input for the search box - it is not an item of a list, just a string.\n */\n presetValue?: string;\n /**\n * Control the selected item. If you use this prop, make sure to update it when the user selects an item.\n */\n selectedId?: string;\n /**\n * If true, the selected item keeps its original position in the dropdown list.\n */\n shouldKeepSelectedItemPosition?: boolean;\n /**\n * If true, the value in the Input is displayed in the list.\n */\n shouldAddInputToList: boolean;\n /**\n * If true, the filter buttons are hidden.\n */\n shouldHideFilterButtons?: boolean;\n /**\n * Whether the full list of items should be displayed if the input is empty.\n */\n shouldShowContentOnEmptyInput?: boolean;\n /**\n * If true, the dropdown items are displayed more compactly.\n */\n shouldShowSmallItems?: boolean;\n /**\n * If true, the images of the items are displayed in a round shape.\n */\n shouldShowRoundImage?: boolean;\n /**\n * Whether the icon to open and close the list should be displayed.\n */\n shouldShowToggleIcon?: boolean;\n /**\n * Settings for the TagInput.\n */\n tagInputSettings?: TagInputSettings;\n /**\n * A text that should be displayed if no results are found.\n */\n hintText?: string;\n};\n\nconst SearchBox: FC<SearchBoxProps> = forwardRef<SearchBoxRef, SearchBoxProps>(\n (\n {\n container,\n customFilter,\n dropdownDirection,\n inputProps,\n isInvalid = false,\n leftIcons,\n lists,\n maxHeight = 300,\n onBlur,\n onChange,\n onKeyDown,\n onSelect,\n placeholder,\n presetValue,\n hintText,\n selectedId,\n shouldAddInputToList = true,\n shouldKeepSelectedItemPosition = false,\n shouldUseCustomFilterOnly = false,\n shouldHideFilterButtons = false,\n shouldShowContentOnEmptyInput = true,\n shouldShowSmallItems = false,\n shouldShowRoundImage,\n shouldShowToggleIcon = false,\n tagInputSettings,\n },\n ref,\n ) => {\n const [matchingListsItems, setMatchingListsItems] = useState<ISearchBoxItems[]>(lists);\n const [selectedImage, setSelectedImage] = useState<ReactElement>();\n const [internalValue, setInternalValue] = useState(\n typeof presetValue === 'string' && presetValue !== '' ? presetValue : '',\n );\n const inputValue = inputProps?.value;\n const value = inputValue ?? internalValue;\n const setValue = useCallback(\n (nextValue: string) => {\n if (typeof inputValue !== 'string') {\n setInternalValue(nextValue);\n }\n },\n [inputValue],\n );\n const [height, setHeight] = useState<number>(0);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n const [hasMultipleGroups, setHasMultipleGroups] = useState<boolean>(lists.length > 1);\n const [filteredChildrenArray, setFilteredChildrenArray] = useState<Element[]>();\n const [inputToListValue, setInputToListValue] = useState<string>('');\n const [groups, setGroups] = useState<string[]>(['all']);\n const [shouldShowBody, setShouldShowBody] = useState(false);\n\n const uuid = useUuid();\n\n const boxRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement | null>(null);\n const tagInputRef = useRef<TagInputRef>(null);\n\n const hasFocusRef = useRef<boolean>(false);\n const isAnimatingRef = useRef<boolean>(false);\n const shouldShowPresetValue = useRef<boolean>(\n typeof presetValue === 'string' && presetValue !== '',\n );\n\n const theme = useTheme() as Theme;\n const dropdownSearchString = getDropdownSearchString({\n selectedId,\n shouldKeepSelectedItemPosition,\n value,\n });\n\n const { isTouch } = useDevice();\n\n /**\n * Checks if there are multiple groups in the lists\n */\n useEffect(() => {\n setHasMultipleGroups(lists.length > 1);\n }, [lists]);\n\n const filterButtons = useMemo(() => {\n const items: IFilterButtonItem[] = [];\n\n if (lists.length <= 1) {\n return items;\n }\n\n lists.forEach(({ groupName }) => {\n if (groupName) {\n items.push({\n id: groupName,\n text: groupName,\n });\n }\n });\n\n return items;\n }, [lists]);\n\n /**\n * Filters the lists by the FilterButtons\n */\n const activeList = useMemo(() => {\n let newLists: ISearchBoxItems[] = [];\n\n if (groups[0] === 'all') {\n newLists = lists;\n } else {\n lists.forEach((list) => {\n if (list.groupName && groups.includes(list.groupName)) {\n newLists.push(list);\n }\n });\n }\n\n const newMatchingItems: ISearchBoxItems[] = [];\n\n newLists.forEach(({ list, groupName }) => {\n const newList = filterSearchBoxItems({\n customFilter,\n items: list,\n searchString: dropdownSearchString,\n shouldUseCustomFilterOnly,\n });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n const filteredMatchingListItems = newMatchingItems.map(({ list, groupName }) => ({\n groupName,\n list: list.filter((item) => {\n if (typeof customFilter === 'function' && shouldUseCustomFilterOnly) {\n return true;\n }\n\n return !(newMatchingItems.length === 1 && item.text === dropdownSearchString);\n }),\n }));\n\n setMatchingListsItems(filteredMatchingListItems);\n\n return newLists;\n }, [\n groups,\n lists,\n customFilter,\n dropdownSearchString,\n shouldAddInputToList,\n shouldUseCustomFilterOnly,\n ]);\n\n const handleOpen = useCallback(() => {\n setShouldShowBody(true);\n }, []);\n\n const handleClose = useCallback(() => {\n setShouldShowBody(false);\n }, []);\n\n const handleFilterButtonsGroupSelect = (keys: string[]) => {\n setGroups(keys.length === 0 ? ['all'] : keys);\n };\n\n /**\n * This hook calculates the height\n */\n useEffect(() => {\n const textArray: string[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n list.forEach(({ text }) => textArray.push(text));\n if (!groupName) {\n return;\n }\n textArray.push(groupName);\n });\n\n if (shouldAddInputToList && inputToListValue !== '') {\n textArray.push(inputToListValue);\n }\n\n setHeight(calculateContentHeight(textArray));\n }, [inputToListValue, activeList, placeholder, shouldAddInputToList]);\n\n useEffect(() => {\n if (selectedId) {\n activeList.forEach(({ list }) => {\n const selectedItem = list.find(({ id }) => id === selectedId);\n if (selectedItem) {\n setValue(selectedItem.text);\n\n if (selectedItem.imageUrl) {\n setSelectedImage(\n <StyledSearchBoxItemImage\n src={selectedItem.imageUrl}\n $shouldShowRoundImage={shouldShowRoundImage}\n />,\n );\n }\n }\n });\n }\n }, [activeList, selectedId, shouldShowRoundImage]);\n\n /**\n * This hook resets the value if the selectedId changes to undefined. This is an own useEffect because the value\n * should not be reset if the list changes and the selectedId is still undefined.\n */\n useEffect(() => {\n if (!selectedId && !shouldShowPresetValue.current) {\n setValue('');\n }\n }, [selectedId]);\n\n useEffect(() => {\n isAnimatingRef.current = shouldShowBody;\n }, [shouldShowBody]);\n\n useEffect(() => {\n if (\n (matchingListsItems.length !== 0 || hintText) &&\n !isAnimatingRef.current &&\n hasFocusRef.current\n ) {\n handleOpen();\n }\n }, [handleOpen, hintText, matchingListsItems.length]);\n\n /**\n * This function handles the focus event of the input and opens the dropdown if the input\n * should show content on an empty input\n */\n const handleFocus = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n hasFocusRef.current = true;\n\n if (typeof inputProps?.onFocus === 'function') {\n inputProps.onFocus(event);\n }\n\n if (shouldShowContentOnEmptyInput) {\n const newMatchingItems: ISearchBoxItems[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n const newList = filterSearchBoxItems({\n customFilter,\n items: list,\n searchString: dropdownSearchString,\n shouldUseCustomFilterOnly,\n });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n const filteredMatchingListItems = newMatchingItems.map(\n ({ list, groupName }) => ({\n groupName,\n list: list.filter((item) => {\n if (\n typeof customFilter === 'function' &&\n shouldUseCustomFilterOnly\n ) {\n return true;\n }\n\n return !(\n newMatchingItems.length === 1 &&\n item.text === dropdownSearchString\n );\n }),\n }),\n );\n\n setMatchingListsItems(filteredMatchingListItems);\n\n if (filteredMatchingListItems.length !== 0 || hintText) {\n handleOpen();\n }\n }\n },\n [\n shouldShowContentOnEmptyInput,\n activeList,\n shouldAddInputToList,\n hintText,\n dropdownSearchString,\n customFilter,\n shouldUseCustomFilterOnly,\n handleOpen,\n inputProps,\n ],\n );\n\n const handleKeyDown = useCallback<KeyboardEventHandler<HTMLInputElement>>(\n (event) => {\n if (typeof onKeyDown === 'function') {\n onKeyDown(event);\n }\n\n if (typeof inputProps?.onKeyDown === 'function') {\n inputProps.onKeyDown(event);\n }\n },\n [inputProps, onKeyDown],\n );\n\n /**\n * This function filters the lists by input\n */\n\n useEffect(() => {\n const newMatchingItems: ISearchBoxItems[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n const newList = filterSearchBoxItems({\n customFilter,\n items: list,\n searchString: dropdownSearchString,\n shouldUseCustomFilterOnly,\n });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n if (shouldAddInputToList && inputToListValue !== '') {\n newMatchingItems.forEach(({ list }) => {\n list.forEach(({ text }) => {\n if (text.toLowerCase() === inputToListValue.toLowerCase()) {\n setInputToListValue('');\n }\n });\n });\n }\n }, [\n inputToListValue,\n activeList,\n shouldAddInputToList,\n shouldShowContentOnEmptyInput,\n dropdownSearchString,\n customFilter,\n shouldUseCustomFilterOnly,\n ]);\n\n const handleClick = useCallback(() => {\n if (shouldShowBody) {\n handleClose();\n } else {\n handleOpen();\n }\n }, [handleClose, handleOpen, shouldShowBody]);\n\n const rightElement = useMemo(() => {\n if (!shouldShowToggleIcon) {\n return undefined;\n }\n\n return (\n <StyledSearchBoxIcon onClick={handleClick}>\n <Icon icons={['fa fa-chevron-down']} color={theme['006'] as string} />\n </StyledSearchBoxIcon>\n );\n }, [handleClick, shouldShowToggleIcon, theme]);\n\n const leftElement = useMemo(\n () =>\n (leftIcons || selectedImage) && (\n <StyledSearchBoxLeftWrapper>\n {leftIcons && <Icon icons={leftIcons} />}\n {selectedImage && selectedImage}\n </StyledSearchBoxLeftWrapper>\n ),\n [leftIcons, selectedImage],\n );\n\n /**\n * This function handles changes of the input\n */\n const handleChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const filteredLists: ISearchBoxItems[] = [];\n shouldShowPresetValue.current = false;\n\n activeList.forEach(({ list, groupName }) => {\n const newList = filterSearchBoxItems({\n customFilter,\n items: list,\n searchString: event.target.value,\n shouldUseCustomFilterOnly,\n });\n\n if (newList.length > 0) {\n filteredLists.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (filteredLists.length === 0 && shouldAddInputToList) {\n filteredLists.push({\n groupName: undefined,\n list: [],\n });\n }\n\n setSelectedImage(undefined);\n\n if (!shouldShowContentOnEmptyInput && !event.target.value) {\n setMatchingListsItems([]);\n } else {\n setMatchingListsItems(filteredLists);\n }\n\n if (filteredLists.length !== 0) {\n handleOpen();\n }\n\n setValue(event.target.value);\n setInputToListValue(event.target.value);\n\n if (typeof onChange === 'function') {\n onChange(event);\n }\n\n if (typeof inputProps?.onChange === 'function') {\n inputProps.onChange(event);\n }\n },\n [\n activeList,\n customFilter,\n handleOpen,\n inputProps,\n onChange,\n shouldAddInputToList,\n shouldShowContentOnEmptyInput,\n shouldUseCustomFilterOnly,\n ],\n );\n\n /**\n * This function handles the blur event of the input\n */\n const handleBlur = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n hasFocusRef.current = false;\n\n if (typeof onBlur === 'function') {\n onBlur(event);\n }\n\n if (typeof inputProps?.onBlur === 'function') {\n inputProps.onBlur(event);\n }\n },\n [inputProps, onBlur],\n );\n\n const handleDropdownOutsideClick = useCallback(() => {\n tagInputRef.current?.blur();\n\n return hasFocusRef.current && isTouch;\n }, [isTouch]);\n\n /**\n * This function handles the item selection\n */\n const handleSelect = useCallback(\n (item: ISearchBoxItem) => {\n const newItem = {\n ...item,\n text: item.text.replace('<b>', '').replace('</b>', '').replace('</b', ''),\n };\n\n if (tagInputSettings) {\n setValue('');\n setInputToListValue('');\n tagInputRef.current?.resetValue();\n } else {\n setValue(newItem.text);\n }\n\n handleClose();\n\n setSelectedImage(\n newItem.imageUrl ? (\n <StyledSearchBoxItemImage\n src={newItem.imageUrl}\n $shouldShowRoundImage={shouldShowRoundImage}\n />\n ) : undefined,\n );\n\n setMatchingListsItems([]);\n\n if (typeof onSelect === 'function') {\n onSelect(newItem);\n }\n },\n [handleClose, onSelect, shouldShowRoundImage, tagInputSettings],\n );\n\n const content = useMemo(() => {\n if (hintText && matchingListsItems.length === 0) {\n return (\n <StyledSearchBoxHintText>\n {hintText.replace('##value##', value)}\n </StyledSearchBoxHintText>\n );\n }\n\n const items: ReactElement[] = [];\n\n matchingListsItems.forEach(({ groupName, list }, index) => {\n if (hasMultipleGroups) {\n if (list.length <= 0) {\n return;\n }\n\n if (index !== 0) {\n items.push(<GroupName key={groupName} name={groupName ?? ''} />);\n }\n }\n\n list.forEach(({ id, text, imageUrl }, listIndex) => {\n items.push(\n <SearchBoxItem\n key={`${id}_${groupName ?? ''}`}\n id={id}\n text={text}\n imageUrl={imageUrl}\n shouldShowSmallItems={shouldShowSmallItems}\n shouldShowRoundImage={shouldShowRoundImage}\n onSelect={handleSelect}\n groupName={groupName}\n tabIndex={index === 0 && listIndex === 0 ? 0 : -1}\n />,\n );\n });\n });\n\n if (shouldAddInputToList && inputToListValue !== '') {\n items.push(\n <SearchBoxItem\n id=\"input-value\"\n onSelect={handleSelect}\n shouldShowSmallItems={shouldShowSmallItems}\n text={`<b>${inputToListValue}</b`}\n tabIndex={items.length === 0 ? 0 : -1}\n />,\n );\n }\n\n return items;\n }, [\n hintText,\n matchingListsItems,\n shouldAddInputToList,\n inputToListValue,\n value,\n hasMultipleGroups,\n shouldShowSmallItems,\n shouldShowRoundImage,\n handleSelect,\n ]);\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (!shouldShowBody || matchingListsItems.length === 0) {\n return;\n }\n\n const children = contentRef.current?.children;\n\n if (!children) {\n return;\n }\n\n const childrenArray = Array.from(children);\n\n const newChildren = childrenArray.find((child) =>\n child.id.startsWith('searchBoxContent__'),\n )?.children;\n\n if (!(newChildren && newChildren.length > 0)) {\n return;\n }\n\n const filteredChildren = Array.from(newChildren).filter(\n (child) => (child as HTMLElement).dataset.isgroupname !== 'true',\n );\n\n setFilteredChildrenArray(filteredChildren);\n\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n\n if (newChildren && newChildren.length > 0) {\n const newIndex =\n focusedIndex !== null\n ? (focusedIndex +\n (e.key === 'ArrowUp' ? -1 : 1) +\n filteredChildren.length) %\n filteredChildren.length\n : 0;\n\n if (focusedIndex !== null) {\n const prevElement = filteredChildren[focusedIndex] as HTMLDivElement;\n prevElement.tabIndex = -1;\n }\n\n setFocusedIndex(newIndex);\n\n const newElement = filteredChildren[newIndex] as HTMLDivElement;\n\n newElement.tabIndex = 0;\n }\n } else if (e.key === 'Enter') {\n e.preventDefault();\n e.stopPropagation();\n\n if (filteredChildren) {\n const element = filteredChildren[focusedIndex ?? 0];\n\n if (!element) {\n return;\n }\n\n const { id, textContent } = element;\n\n let imageUrl: string | undefined;\n\n // Just Ignore, it works\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (element.children[0]?.attributes.src) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n imageUrl = element.children[0]?.attributes.src.nodeValue as string;\n }\n\n const newId = id.replace('search-box-item__', '');\n\n handleSelect({\n id: newId === 'input-value' ? textContent : newId,\n text: textContent ?? '',\n imageUrl,\n });\n }\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [\n filteredChildrenArray,\n focusedIndex,\n handleSelect,\n matchingListsItems.length,\n shouldShowBody,\n ]);\n\n const handleKeyPress = useCallback((event: KeyboardEvent) => {\n if (event.keyCode === 27) {\n setMatchingListsItems([]);\n }\n }, []);\n\n useImperativeHandle(\n ref,\n () => ({\n clear: () => setValue(''),\n }),\n [setValue],\n );\n\n useEffect(() => {\n document.addEventListener('keydown', handleKeyPress);\n\n return () => {\n document.addEventListener('keydown', handleKeyPress);\n };\n }, [handleKeyPress]);\n\n /**\n * Update the value if preset value changes\n */\n useEffect(() => {\n if (presetValue) {\n setValue(presetValue);\n }\n }, [presetValue, setValue]);\n\n const shouldShowDropdown =\n shouldShowBody &&\n (matchingListsItems.length !== 0 || !!hintText) &&\n (value.trim() !== '' || shouldShowContentOnEmptyInput);\n\n return useMemo(\n () => (\n <StyledSearchBox ref={boxRef} key={`search-box-${uuid}`}>\n <div id={`search_box_input${uuid}`}>\n {tagInputSettings ? (\n <TagInput\n leftElement={leftElement}\n onAdd={tagInputSettings.onAdd}\n onBlur={handleBlur}\n onChange={handleChange}\n onFocus={handleFocus}\n onRemove={tagInputSettings.onRemove}\n placeholder={placeholder}\n ref={tagInputRef}\n shouldAllowMultiple={tagInputSettings.shouldAllowMultiple}\n shouldPreventEnter\n tags={tagInputSettings.tags}\n />\n ) : (\n <Input\n /* eslint-disable-next-line react/jsx-props-no-spreading */\n {...inputProps}\n isInvalid={isInvalid}\n leftElement={leftElement}\n onBlur={handleBlur}\n onChange={handleChange}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n ref={inputRef}\n rightElement={rightElement}\n value={value}\n />\n )}\n </div>\n {boxRef.current && (\n <DropdownBodyWrapper\n anchorElement={boxRef.current}\n container={container}\n direction={dropdownDirection}\n onClose={handleClose}\n onOutsideClick={handleDropdownOutsideClick}\n shouldShowDropdown={shouldShowDropdown}\n >\n <SearchBoxBody\n filterButtons={filterButtons}\n height={height}\n maxHeight={maxHeight}\n shouldShow={shouldShowDropdown}\n key={`search-box-body-${uuid}`}\n onGroupSelect={handleFilterButtonsGroupSelect}\n ref={contentRef}\n selectedGroups={groups}\n shouldHideFilterButtons={shouldHideFilterButtons}\n >\n {content}\n </SearchBoxBody>\n </DropdownBodyWrapper>\n )}\n </StyledSearchBox>\n ),\n [\n container,\n content,\n dropdownDirection,\n filterButtons,\n groups,\n handleBlur,\n handleChange,\n handleClose,\n handleDropdownOutsideClick,\n handleFocus,\n handleKeyDown,\n height,\n inputProps,\n isInvalid,\n leftElement,\n maxHeight,\n onKeyDown,\n placeholder,\n rightElement,\n shouldHideFilterButtons,\n shouldShowDropdown,\n tagInputSettings,\n uuid,\n value,\n ],\n );\n },\n);\n\nSearchBox.displayName = 'SearchBox';\n\nexport default SearchBox;\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,6 @@
1
1
  import { ChangeEventHandler, FC, FocusEventHandler, KeyboardEventHandler } from 'react';
2
2
  import type { ISearchBoxItem, ISearchBoxItems } from '../../types/searchBox';
3
+ import { type InputProps } from '../input/Input';
3
4
  import { TagInputProps } from '../tag-input/TagInput';
4
5
  import type { DropdownDirection } from '../../types/dropdown';
5
6
  export interface SearchBoxRef {
@@ -36,6 +37,10 @@ export type SearchBoxProps = {
36
37
  * An optional icon that is displayed inside the left side of the input.
37
38
  */
38
39
  leftIcons?: string[];
40
+ /**
41
+ * Props that are passed to the underlying Input component.
42
+ */
43
+ inputProps?: InputProps;
39
44
  /**
40
45
  * List of groups with items that can be searched. It is possible to give only one list; if multiple lists are provided, the 'group name' parameter becomes mandatory.
41
46
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chayns-components/core",
3
- "version": "5.4.13",
3
+ "version": "5.4.14",
4
4
  "description": "A set of beautiful React components for developing your own applications with chayns.",
5
5
  "sideEffects": false,
6
6
  "browserslist": [
@@ -88,5 +88,5 @@
88
88
  "publishConfig": {
89
89
  "access": "public"
90
90
  },
91
- "gitHead": "dea3473a827b220aeaf2b4abf64e9ccbe7c17223"
91
+ "gitHead": "e88088525ff7c11b6f352d53196fb3eaf253f9a7"
92
92
  }