@chayns-components/core 5.0.0-beta.1250 → 5.0.0-beta.1252
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.
- package/lib/cjs/components/dropdown-body-wrapper/delayed-dropdown-content/DelayedDropdownContent.styles.js +2 -0
- package/lib/cjs/components/dropdown-body-wrapper/delayed-dropdown-content/DelayedDropdownContent.styles.js.map +1 -1
- package/lib/cjs/components/search-box/SearchBox.js +16 -3
- package/lib/cjs/components/search-box/SearchBox.js.map +1 -1
- package/lib/esm/components/dropdown-body-wrapper/delayed-dropdown-content/DelayedDropdownContent.styles.js +2 -0
- package/lib/esm/components/dropdown-body-wrapper/delayed-dropdown-content/DelayedDropdownContent.styles.js.map +1 -1
- package/lib/esm/components/search-box/SearchBox.js +16 -3
- package/lib/esm/components/search-box/SearchBox.js.map +1 -1
- package/lib/types/components/search-box/SearchBox.d.ts +12 -0
- package/package.json +2 -2
|
@@ -24,6 +24,8 @@ const StyledMotionDelayedDropdownContent = exports.StyledMotionDelayedDropdownCo
|
|
|
24
24
|
$transform
|
|
25
25
|
}) => `translate(${$transform.x}, ${$transform.y})`};
|
|
26
26
|
|
|
27
|
+
z-index: 15;
|
|
28
|
+
|
|
27
29
|
${({
|
|
28
30
|
$shouldHideContent
|
|
29
31
|
}) => $shouldHideContent ? (0, _styledComponents.css)`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DelayedDropdownContent.styles.js","names":["_react","require","_styledComponents","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","StyledMotionDelayedDropdownContent","exports","styled","motion","div","$coordinates","y","x","$transform","$shouldHideContent","css"],"sources":["../../../../../src/components/dropdown-body-wrapper/delayed-dropdown-content/DelayedDropdownContent.styles.ts"],"sourcesContent":["import { motion } from 'motion/react';\nimport styled, { css } from 'styled-components';\nimport { WithTheme } from '../../color-scheme-provider/ColorSchemeProvider';\nimport { DropdownCoordinates, DropdownTransform } from '../../../types/dropdown';\n\ntype StyledMotionDelayedDropdownContentProps = WithTheme<{\n $shouldHideContent: boolean;\n $coordinates: DropdownCoordinates;\n $transform: DropdownTransform;\n}>;\n\nexport const StyledMotionDelayedDropdownContent = styled(\n motion.div,\n)<StyledMotionDelayedDropdownContentProps>`\n position: absolute;\n\n height: fit-content;\n width: fit-content;\n\n top: ${({ $coordinates }) => $coordinates.y}px;\n left: ${({ $coordinates }) => $coordinates.x}px;\n\n transform: ${({ $transform }) => `translate(${$transform.x}, ${$transform.y})`};\n\n ${({ $shouldHideContent }) =>\n $shouldHideContent\n ? css`\n visibility: hidden;\n pointer-events: none;\n z-index: -1;\n `\n : css`\n z-index: 5;\n `}\n`;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAC,uBAAA,CAAAF,OAAA;AAAgD,SAAAE,wBAAAC,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAH,uBAAA,YAAAA,CAAAC,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAUzC,MAAMkB,kCAAkC,GAAAC,OAAA,CAAAD,kCAAA,GAAG,IAAAE,yBAAM,EACpDC,aAAM,CAACC,GACX,CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA,WAAW,CAAC;EAAEC;AAAa,CAAC,KAAKA,YAAY,CAACC,CAAC;AAC/C,YAAY,CAAC;EAAED;AAAa,CAAC,KAAKA,YAAY,CAACE,CAAC;AAChD;AACA,iBAAiB,CAAC;EAAEC;AAAW,CAAC,KAAK,aAAaA,UAAU,CAACD,CAAC,KAAKC,UAAU,CAACF,CAAC,GAAG;AAClF;AACA,MAAM,CAAC;EAAEG;AAAmB,CAAC,KACrBA,kBAAkB,GACZ,IAAAC,qBAAG;AACjB;AACA;AACA;AACA,eAAe,GACD,IAAAA,qBAAG;AACjB;AACA,eAAe;AACf,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"DelayedDropdownContent.styles.js","names":["_react","require","_styledComponents","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","StyledMotionDelayedDropdownContent","exports","styled","motion","div","$coordinates","y","x","$transform","$shouldHideContent","css"],"sources":["../../../../../src/components/dropdown-body-wrapper/delayed-dropdown-content/DelayedDropdownContent.styles.ts"],"sourcesContent":["import { motion } from 'motion/react';\nimport styled, { css } from 'styled-components';\nimport { WithTheme } from '../../color-scheme-provider/ColorSchemeProvider';\nimport { DropdownCoordinates, DropdownTransform } from '../../../types/dropdown';\n\ntype StyledMotionDelayedDropdownContentProps = WithTheme<{\n $shouldHideContent: boolean;\n $coordinates: DropdownCoordinates;\n $transform: DropdownTransform;\n}>;\n\nexport const StyledMotionDelayedDropdownContent = styled(\n motion.div,\n)<StyledMotionDelayedDropdownContentProps>`\n position: absolute;\n\n height: fit-content;\n width: fit-content;\n\n top: ${({ $coordinates }) => $coordinates.y}px;\n left: ${({ $coordinates }) => $coordinates.x}px;\n\n transform: ${({ $transform }) => `translate(${$transform.x}, ${$transform.y})`};\n\n z-index: 15;\n\n ${({ $shouldHideContent }) =>\n $shouldHideContent\n ? css`\n visibility: hidden;\n pointer-events: none;\n z-index: -1;\n `\n : css`\n z-index: 5;\n `}\n`;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAC,uBAAA,CAAAF,OAAA;AAAgD,SAAAE,wBAAAC,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAH,uBAAA,YAAAA,CAAAC,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAUzC,MAAMkB,kCAAkC,GAAAC,OAAA,CAAAD,kCAAA,GAAG,IAAAE,yBAAM,EACpDC,aAAM,CAACC,GACX,CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA,WAAW,CAAC;EAAEC;AAAa,CAAC,KAAKA,YAAY,CAACC,CAAC;AAC/C,YAAY,CAAC;EAAED;AAAa,CAAC,KAAKA,YAAY,CAACE,CAAC;AAChD;AACA,iBAAiB,CAAC;EAAEC;AAAW,CAAC,KAAK,aAAaA,UAAU,CAACD,CAAC,KAAKC,UAAU,CAACF,CAAC,GAAG;AAClF;AACA;AACA;AACA,MAAM,CAAC;EAAEG;AAAmB,CAAC,KACrBA,kBAAkB,GACZ,IAAAC,qBAAG;AACjB;AACA;AACA;AACA,eAAe,GACD,IAAAA,qBAAG;AACjB;AACA,eAAe;AACf,CAAC","ignoreList":[]}
|
|
@@ -17,6 +17,7 @@ var _SearchBoxItem2 = require("./search-box-item/SearchBoxItem.styles");
|
|
|
17
17
|
var _SearchBox = require("./SearchBox.styles");
|
|
18
18
|
var _uuid = require("../../hooks/uuid");
|
|
19
19
|
var _DropdownBodyWrapper = _interopRequireDefault(require("../dropdown-body-wrapper/DropdownBodyWrapper"));
|
|
20
|
+
var _TagInput = _interopRequireDefault(require("../tag-input/TagInput"));
|
|
20
21
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
21
22
|
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); }
|
|
22
23
|
const SearchBox = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
@@ -36,7 +37,8 @@ const SearchBox = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
36
37
|
shouldAddInputToList = true,
|
|
37
38
|
shouldShowToggleIcon = false,
|
|
38
39
|
customFilter,
|
|
39
|
-
presetValue
|
|
40
|
+
presetValue,
|
|
41
|
+
tagInputSettings
|
|
40
42
|
}, ref) => {
|
|
41
43
|
const [matchingListsItems, setMatchingListsItems] = (0, _react.useState)(lists);
|
|
42
44
|
const [selectedImage, setSelectedImage] = (0, _react.useState)();
|
|
@@ -518,7 +520,18 @@ const SearchBox = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
518
520
|
key: `search-box-${uuid}`
|
|
519
521
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
520
522
|
id: `search_box_input${uuid}`
|
|
521
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
523
|
+
}, tagInputSettings ? /*#__PURE__*/_react.default.createElement(_TagInput.default, {
|
|
524
|
+
tags: tagInputSettings.tags,
|
|
525
|
+
onChange: handleChange,
|
|
526
|
+
onAdd: tagInputSettings.onAdd,
|
|
527
|
+
onRemove: tagInputSettings.onRemove,
|
|
528
|
+
onFocus: handleFocus,
|
|
529
|
+
onBlur: handleBlur,
|
|
530
|
+
placeholder: placeholder,
|
|
531
|
+
leftElement: leftElement,
|
|
532
|
+
shouldAllowMultiple: tagInputSettings.shouldAllowMultiple,
|
|
533
|
+
shouldPreventEnter: tagInputSettings.shouldPreventEnter
|
|
534
|
+
}) : /*#__PURE__*/_react.default.createElement(_Input.default, {
|
|
522
535
|
isInvalid: isInvalid,
|
|
523
536
|
ref: inputRef,
|
|
524
537
|
onChange: handleChange,
|
|
@@ -543,7 +556,7 @@ const SearchBox = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
543
556
|
ref: contentRef,
|
|
544
557
|
onGroupSelect: handleFilterButtonsGroupSelect,
|
|
545
558
|
shouldHideFilterButtons: shouldHideFilterButtons
|
|
546
|
-
}, content))), [container, content, filterButtons, groups, handleBlur, handleChange, handleClose, handleFocus, height, isInvalid, leftElement, matchingListsItems.length, onKeyDown, placeholder, rightElement, shouldHideFilterButtons, shouldShowBody, shouldShowContentOnEmptyInput, uuid, value]);
|
|
559
|
+
}, content))), [container, content, filterButtons, groups, handleBlur, handleChange, handleClose, handleFocus, height, isInvalid, leftElement, matchingListsItems.length, onKeyDown, placeholder, rightElement, shouldHideFilterButtons, shouldShowBody, shouldShowContentOnEmptyInput, tagInputSettings, uuid, value]);
|
|
547
560
|
});
|
|
548
561
|
SearchBox.displayName = 'SearchBox';
|
|
549
562
|
var _default = exports.default = SearchBox;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchBox.js","names":["_react","_interopRequireWildcard","require","_styledComponents","_calculate","_searchBox","_Icon","_interopRequireDefault","_Input","_GroupName","_SearchBoxBody","_SearchBoxItem","_SearchBoxItem2","_SearchBox","_uuid","_DropdownBodyWrapper","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","SearchBox","forwardRef","isInvalid","placeholder","leftIcons","lists","onChange","onBlur","onSelect","onKeyDown","selectedId","container","shouldHideFilterButtons","shouldShowRoundImage","shouldShowContentOnEmptyInput","shouldAddInputToList","shouldShowToggleIcon","customFilter","presetValue","ref","matchingListsItems","setMatchingListsItems","useState","selectedImage","setSelectedImage","value","setValue","height","setHeight","focusedIndex","setFocusedIndex","hasMultipleGroups","setHasMultipleGroups","length","filteredChildrenArray","setFilteredChildrenArray","inputToListValue","setInputToListValue","groups","setGroups","shouldShowBody","setShouldShowBody","uuid","useUuid","boxRef","useRef","contentRef","inputRef","hasFocusRef","isAnimatingRef","shouldShowPresetValue","theme","useTheme","useEffect","filterButtons","useMemo","items","forEach","groupName","push","id","text","activeList","newLists","list","includes","newMatchingItems","newList","searchList","searchString","undefined","filteredMatchingListItems","map","filter","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","handleSelect","newItem","replace","content","index","key","name","handleKeyDown","_contentRef$current","_childrenArray$find","preventDefault","children","childrenArray","Array","from","newChildren","child","startsWith","filteredChildren","dataset","isgroupname","newIndex","prevElement","tabIndex","newElement","focus","_element$children$","element","textContent","attributes","_element$children$2","nodeValue","document","addEventListener","removeEventListener","handleKeyPress","keyCode","useImperativeHandle","clear","StyledSearchBox","onFocus","shouldShowDropdown","trim","onClose","anchorElement","maxHeight","selectedGroups","onGroupSelect","displayName","_default","exports"],"sources":["../../../../src/components/search-box/SearchBox.tsx"],"sourcesContent":["import 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 } 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 StyledSearchBoxIcon,\n StyledSearchBoxLeftWrapper,\n} from './SearchBox.styles';\nimport { useUuid } from '../../hooks/uuid';\nimport DropdownBodyWrapper from '../dropdown-body-wrapper/DropdownBodyWrapper';\n\nexport type SearchBoxRef = {\n clear: VoidFunction;\n};\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 * 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 placeholder that should be displayed.\n */\n placeholder?: string;\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 * 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 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 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 * An optional callback function to filter the elements to be displayed\n */\n customFilter?: (item: ISearchBoxItem) => boolean;\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\nconst SearchBox: FC<SearchBoxProps> = forwardRef<SearchBoxRef, SearchBoxProps>(\n (\n {\n isInvalid = false,\n placeholder,\n leftIcons,\n lists,\n onChange,\n onBlur,\n onSelect,\n onKeyDown,\n selectedId,\n container,\n shouldHideFilterButtons = false,\n shouldShowRoundImage,\n shouldShowContentOnEmptyInput = true,\n shouldAddInputToList = true,\n shouldShowToggleIcon = false,\n customFilter,\n presetValue,\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\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\n /**\n * Checks if Lists are smaller then 1\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 = searchList({ items: list, searchString: value });\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') {\n return customFilter(item);\n }\n return !(newMatchingItems.length === 1 && item.text === value);\n }),\n }));\n\n setMatchingListsItems(filteredMatchingListItems);\n\n return newLists;\n }, [groups, lists, customFilter, shouldAddInputToList, value]);\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 (matchingListsItems.length !== 0 && !isAnimatingRef.current && hasFocusRef.current) {\n handleOpen();\n }\n }, [handleOpen, matchingListsItems.length]);\n\n /**\n * This function sets the items on focus if shouldShowContentOnEmptyInput\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 = searchList({ items: list, searchString: value });\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') {\n return customFilter(item);\n }\n return !(newMatchingItems.length === 1 && item.text === value);\n }),\n }));\n\n setMatchingListsItems(filteredMatchingListItems);\n\n if (filteredMatchingListItems.length !== 0) {\n handleOpen();\n }\n }\n }, [\n activeList,\n handleOpen,\n customFilter,\n shouldAddInputToList,\n shouldShowContentOnEmptyInput,\n value,\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 = searchList({ items: list, searchString: value });\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 value,\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 = searchList({ items: list, searchString: event.target.value });\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 [activeList, handleOpen, onChange, shouldAddInputToList, shouldShowContentOnEmptyInput],\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 /**\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 setValue(newItem.text);\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],\n );\n\n const content = useMemo(() => {\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 }) => {\n items.push(\n <SearchBoxItem\n key={`${id}_${groupName ?? ''}`}\n id={id}\n text={text}\n imageUrl={imageUrl}\n shouldShowRoundImage={shouldShowRoundImage}\n onSelect={handleSelect}\n groupName={groupName}\n />,\n );\n });\n });\n\n if (shouldAddInputToList && inputToListValue !== '') {\n items.push(\n <SearchBoxItem\n id=\"input-value\"\n onSelect={handleSelect}\n text={`<b>${inputToListValue}</b`}\n />,\n );\n }\n\n return items;\n }, [\n matchingListsItems,\n shouldAddInputToList,\n inputToListValue,\n hasMultipleGroups,\n shouldShowRoundImage,\n handleSelect,\n ]);\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (!shouldShowBody || matchingListsItems.length === 0) {\n return;\n }\n\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\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('searchbox-content__'),\n )?.children;\n\n if (newChildren && newChildren.length > 0) {\n const filteredChildren = Array.from(newChildren).filter(\n (child) => (child as HTMLElement).dataset.isgroupname !== 'true',\n );\n setFilteredChildrenArray(filteredChildren);\n\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 newElement.tabIndex = 0;\n newElement.focus();\n }\n } else if (e.key === 'Enter' && focusedIndex !== null) {\n if (filteredChildrenArray) {\n const element = filteredChildrenArray[focusedIndex];\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 handleSelect({\n id: id.replace('search-box-item__', ''),\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 return useMemo(\n () => (\n <StyledSearchBox ref={boxRef} key={`search-box-${uuid}`}>\n <div id={`search_box_input${uuid}`}>\n <Input\n isInvalid={isInvalid}\n ref={inputRef}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n placeholder={placeholder}\n onKeyDown={onKeyDown}\n leftElement={leftElement}\n rightElement={rightElement}\n value={value}\n />\n </div>\n {boxRef.current && (\n <DropdownBodyWrapper\n shouldShowDropdown={\n shouldShowBody &&\n matchingListsItems.length !== 0 &&\n (value.trim() !== '' || shouldShowContentOnEmptyInput)\n }\n onClose={handleClose}\n anchorElement={boxRef.current}\n maxHeight={300}\n container={container}\n >\n <SearchBoxBody\n key={`search-box-body-${uuid}`}\n filterButtons={filterButtons}\n selectedGroups={groups}\n height={height}\n ref={contentRef}\n onGroupSelect={handleFilterButtonsGroupSelect}\n shouldHideFilterButtons={shouldHideFilterButtons}\n >\n {content}\n </SearchBoxBody>\n </DropdownBodyWrapper>\n )}\n </StyledSearchBox>\n ),\n [\n container,\n content,\n filterButtons,\n groups,\n handleBlur,\n handleChange,\n handleClose,\n handleFocus,\n height,\n isInvalid,\n leftElement,\n matchingListsItems.length,\n onKeyDown,\n placeholder,\n rightElement,\n shouldHideFilterButtons,\n shouldShowBody,\n shouldShowContentOnEmptyInput,\n uuid,\n value,\n ],\n );\n },\n);\n\nSearchBox.displayName = 'SearchBox';\n\nexport default SearchBox;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AAgBA,IAAAC,iBAAA,GAAAD,OAAA;AAGA,IAAAE,UAAA,GAAAF,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AAEA,IAAAI,KAAA,GAAAC,sBAAA,CAAAL,OAAA;AACA,IAAAM,MAAA,GAAAD,sBAAA,CAAAL,OAAA;AACA,IAAAO,UAAA,GAAAF,sBAAA,CAAAL,OAAA;AACA,IAAAQ,cAAA,GAAAH,sBAAA,CAAAL,OAAA;AACA,IAAAS,cAAA,GAAAJ,sBAAA,CAAAL,OAAA;AACA,IAAAU,eAAA,GAAAV,OAAA;AACA,IAAAW,UAAA,GAAAX,OAAA;AAKA,IAAAY,KAAA,GAAAZ,OAAA;AACA,IAAAa,oBAAA,GAAAR,sBAAA,CAAAL,OAAA;AAA+E,SAAAK,uBAAAS,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAf,wBAAAe,CAAA,EAAAG,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAnB,uBAAA,YAAAA,CAAAe,CAAA,EAAAG,CAAA,SAAAA,CAAA,IAAAH,CAAA,IAAAA,CAAA,CAAAC,UAAA,SAAAD,CAAA,MAAAO,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAR,OAAA,EAAAF,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAS,CAAA,MAAAF,CAAA,GAAAJ,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAE,CAAA,CAAAI,GAAA,CAAAX,CAAA,UAAAO,CAAA,CAAAK,GAAA,CAAAZ,CAAA,GAAAO,CAAA,CAAAM,GAAA,CAAAb,CAAA,EAAAS,CAAA,gBAAAN,CAAA,IAAAH,CAAA,gBAAAG,CAAA,OAAAW,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAG,CAAA,OAAAK,CAAA,IAAAD,CAAA,GAAAS,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAG,CAAA,OAAAK,CAAA,CAAAI,GAAA,IAAAJ,CAAA,CAAAK,GAAA,IAAAN,CAAA,CAAAE,CAAA,EAAAN,CAAA,EAAAK,CAAA,IAAAC,CAAA,CAAAN,CAAA,IAAAH,CAAA,CAAAG,CAAA,WAAAM,CAAA,KAAAT,CAAA,EAAAG,CAAA;AA6E/E,MAAMgB,SAA6B,gBAAG,IAAAC,iBAAU,EAC5C,CACI;EACIC,SAAS,GAAG,KAAK;EACjBC,WAAW;EACXC,SAAS;EACTC,KAAK;EACLC,QAAQ;EACRC,MAAM;EACNC,QAAQ;EACRC,SAAS;EACTC,UAAU;EACVC,SAAS;EACTC,uBAAuB,GAAG,KAAK;EAC/BC,oBAAoB;EACpBC,6BAA6B,GAAG,IAAI;EACpCC,oBAAoB,GAAG,IAAI;EAC3BC,oBAAoB,GAAG,KAAK;EAC5BC,YAAY;EACZC;AACJ,CAAC,EACDC,GAAG,KACF;EACD,MAAM,CAACC,kBAAkB,EAAEC,qBAAqB,CAAC,GAAG,IAAAC,eAAQ,EAAoBjB,KAAK,CAAC;EACtF,MAAM,CAACkB,aAAa,EAAEC,gBAAgB,CAAC,GAAG,IAAAF,eAAQ,EAAe,CAAC;EAClE,MAAM,CAACG,KAAK,EAAEC,QAAQ,CAAC,GAAG,IAAAJ,eAAQ,EAC9B,OAAOJ,WAAW,KAAK,QAAQ,IAAIA,WAAW,KAAK,EAAE,GAAGA,WAAW,GAAG,EAC1E,CAAC;EACD,MAAM,CAACS,MAAM,EAAEC,SAAS,CAAC,GAAG,IAAAN,eAAQ,EAAS,CAAC,CAAC;EAC/C,MAAM,CAACO,YAAY,EAAEC,eAAe,CAAC,GAAG,IAAAR,eAAQ,EAAgB,IAAI,CAAC;EACrE,MAAM,CAACS,iBAAiB,EAAEC,oBAAoB,CAAC,GAAG,IAAAV,eAAQ,EAAUjB,KAAK,CAAC4B,MAAM,GAAG,CAAC,CAAC;EACrF,MAAM,CAACC,qBAAqB,EAAEC,wBAAwB,CAAC,GAAG,IAAAb,eAAQ,EAAY,CAAC;EAC/E,MAAM,CAACc,gBAAgB,EAAEC,mBAAmB,CAAC,GAAG,IAAAf,eAAQ,EAAS,EAAE,CAAC;EACpE,MAAM,CAACgB,MAAM,EAAEC,SAAS,CAAC,GAAG,IAAAjB,eAAQ,EAAW,CAAC,KAAK,CAAC,CAAC;EACvD,MAAM,CAACkB,cAAc,EAAEC,iBAAiB,CAAC,GAAG,IAAAnB,eAAQ,EAAC,KAAK,CAAC;EAE3D,MAAMoB,IAAI,GAAG,IAAAC,aAAO,EAAC,CAAC;EAEtB,MAAMC,MAAM,GAAG,IAAAC,aAAM,EAAiB,IAAI,CAAC;EAC3C,MAAMC,UAAU,GAAG,IAAAD,aAAM,EAAiB,IAAI,CAAC;EAC/C,MAAME,QAAQ,GAAG,IAAAF,aAAM,EAA0B,IAAI,CAAC;EAEtD,MAAMG,WAAW,GAAG,IAAAH,aAAM,EAAU,KAAK,CAAC;EAC1C,MAAMI,cAAc,GAAG,IAAAJ,aAAM,EAAU,KAAK,CAAC;EAC7C,MAAMK,qBAAqB,GAAG,IAAAL,aAAM,EAChC,OAAO3B,WAAW,KAAK,QAAQ,IAAIA,WAAW,KAAK,EACvD,CAAC;EAED,MAAMiC,KAAK,GAAG,IAAAC,0BAAQ,EAAC,CAAU;;EAEjC;AACR;AACA;EACQ,IAAAC,gBAAS,EAAC,MAAM;IACZrB,oBAAoB,CAAC3B,KAAK,CAAC4B,MAAM,GAAG,CAAC,CAAC;EAC1C,CAAC,EAAE,CAAC5B,KAAK,CAAC,CAAC;EAEX,MAAMiD,aAAa,GAAG,IAAAC,cAAO,EAAC,MAAM;IAChC,MAAMC,KAA0B,GAAG,EAAE;IAErC,IAAInD,KAAK,CAAC4B,MAAM,IAAI,CAAC,EAAE;MACnB,OAAOuB,KAAK;IAChB;IAEAnD,KAAK,CAACoD,OAAO,CAAC,CAAC;MAAEC;IAAU,CAAC,KAAK;MAC7B,IAAIA,SAAS,EAAE;QACXF,KAAK,CAACG,IAAI,CAAC;UACPC,EAAE,EAAEF,SAAS;UACbG,IAAI,EAAEH;QACV,CAAC,CAAC;MACN;IACJ,CAAC,CAAC;IAEF,OAAOF,KAAK;EAChB,CAAC,EAAE,CAACnD,KAAK,CAAC,CAAC;;EAEX;AACR;AACA;EACQ,MAAMyD,UAAU,GAAG,IAAAP,cAAO,EAAC,MAAM;IAC7B,IAAIQ,QAA2B,GAAG,EAAE;IAEpC,IAAIzB,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE;MACrByB,QAAQ,GAAG1D,KAAK;IACpB,CAAC,MAAM;MACHA,KAAK,CAACoD,OAAO,CAAEO,IAAI,IAAK;QACpB,IAAIA,IAAI,CAACN,SAAS,IAAIpB,MAAM,CAAC2B,QAAQ,CAACD,IAAI,CAACN,SAAS,CAAC,EAAE;UACnDK,QAAQ,CAACJ,IAAI,CAACK,IAAI,CAAC;QACvB;MACJ,CAAC,CAAC;IACN;IAEA,MAAME,gBAAmC,GAAG,EAAE;IAE9CH,QAAQ,CAACN,OAAO,CAAC,CAAC;MAAEO,IAAI;MAAEN;IAAU,CAAC,KAAK;MACtC,MAAMS,OAAO,GAAG,IAAAC,qBAAU,EAAC;QAAEZ,KAAK,EAAEQ,IAAI;QAAEK,YAAY,EAAE5C;MAAM,CAAC,CAAC;MAEhE,IAAI0C,OAAO,CAAClC,MAAM,GAAG,CAAC,EAAE;QACpBiC,gBAAgB,CAACP,IAAI,CAAC;UAClBD,SAAS;UACTM,IAAI,EAAEG;QACV,CAAC,CAAC;MACN;IACJ,CAAC,CAAC;IAEF,IAAID,gBAAgB,CAACjC,MAAM,KAAK,CAAC,IAAIlB,oBAAoB,EAAE;MACvDmD,gBAAgB,CAACP,IAAI,CAAC;QAClBD,SAAS,EAAEY,SAAS;QACpBN,IAAI,EAAE;MACV,CAAC,CAAC;IACN;IAEA,MAAMO,yBAAyB,GAAGL,gBAAgB,CAACM,GAAG,CAAC,CAAC;MAAER,IAAI;MAAEN;IAAU,CAAC,MAAM;MAC7EA,SAAS;MACTM,IAAI,EAAEA,IAAI,CAACS,MAAM,CAAEC,IAAI,IAAK;QACxB,IAAI,OAAOzD,YAAY,KAAK,UAAU,EAAE;UACpC,OAAOA,YAAY,CAACyD,IAAI,CAAC;QAC7B;QACA,OAAO,EAAER,gBAAgB,CAACjC,MAAM,KAAK,CAAC,IAAIyC,IAAI,CAACb,IAAI,KAAKpC,KAAK,CAAC;MAClE,CAAC;IACL,CAAC,CAAC,CAAC;IAEHJ,qBAAqB,CAACkD,yBAAyB,CAAC;IAEhD,OAAOR,QAAQ;EACnB,CAAC,EAAE,CAACzB,MAAM,EAAEjC,KAAK,EAAEY,YAAY,EAAEF,oBAAoB,EAAEU,KAAK,CAAC,CAAC;EAE9D,MAAMkD,UAAU,GAAG,IAAAC,kBAAW,EAAC,MAAM;IACjCnC,iBAAiB,CAAC,IAAI,CAAC;EAC3B,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMoC,WAAW,GAAG,IAAAD,kBAAW,EAAC,MAAM;IAClCnC,iBAAiB,CAAC,KAAK,CAAC;EAC5B,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMqC,8BAA8B,GAAIC,IAAc,IAAK;IACvDxC,SAAS,CAACwC,IAAI,CAAC9C,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG8C,IAAI,CAAC;EACjD,CAAC;;EAED;AACR;AACA;EACQ,IAAA1B,gBAAS,EAAC,MAAM;IACZ,MAAM2B,SAAmB,GAAG,EAAE;IAE9BlB,UAAU,CAACL,OAAO,CAAC,CAAC;MAAEO,IAAI;MAAEN;IAAU,CAAC,KAAK;MACxCM,IAAI,CAACP,OAAO,CAAC,CAAC;QAAEI;MAAK,CAAC,KAAKmB,SAAS,CAACrB,IAAI,CAACE,IAAI,CAAC,CAAC;MAChD,IAAI,CAACH,SAAS,EAAE;QACZ;MACJ;MACAsB,SAAS,CAACrB,IAAI,CAACD,SAAS,CAAC;IAC7B,CAAC,CAAC;IAEF,IAAI3C,oBAAoB,IAAIqB,gBAAgB,KAAK,EAAE,EAAE;MACjD4C,SAAS,CAACrB,IAAI,CAACvB,gBAAgB,CAAC;IACpC;IAEAR,SAAS,CAAC,IAAAqD,iCAAsB,EAACD,SAAS,CAAC,CAAC;EAChD,CAAC,EAAE,CAAC5C,gBAAgB,EAAE0B,UAAU,EAAE3D,WAAW,EAAEY,oBAAoB,CAAC,CAAC;EAErE,IAAAsC,gBAAS,EAAC,MAAM;IACZ,IAAI3C,UAAU,EAAE;MACZoD,UAAU,CAACL,OAAO,CAAC,CAAC;QAAEO;MAAK,CAAC,KAAK;QAC7B,MAAMkB,YAAY,GAAGlB,IAAI,CAACmB,IAAI,CAAC,CAAC;UAAEvB;QAAG,CAAC,KAAKA,EAAE,KAAKlD,UAAU,CAAC;QAC7D,IAAIwE,YAAY,EAAE;UACdxD,QAAQ,CAACwD,YAAY,CAACrB,IAAI,CAAC;UAE3B,IAAIqB,YAAY,CAACE,QAAQ,EAAE;YACvB5D,gBAAgB,cACZ3D,MAAA,CAAAkB,OAAA,CAAAsG,aAAA,CAAC5G,eAAA,CAAA6G,wBAAwB;cACrBC,GAAG,EAAEL,YAAY,CAACE,QAAS;cAC3BI,qBAAqB,EAAE3E;YAAqB,CAC/C,CACL,CAAC;UACL;QACJ;MACJ,CAAC,CAAC;IACN;EACJ,CAAC,EAAE,CAACiD,UAAU,EAAEpD,UAAU,EAAEG,oBAAoB,CAAC,CAAC;;EAElD;AACR;AACA;AACA;EACQ,IAAAwC,gBAAS,EAAC,MAAM;IACZ,IAAI,CAAC3C,UAAU,IAAI,CAACwC,qBAAqB,CAACuC,OAAO,EAAE;MAC/C/D,QAAQ,CAAC,EAAE,CAAC;IAChB;EACJ,CAAC,EAAE,CAAChB,UAAU,CAAC,CAAC;EAEhB,IAAA2C,gBAAS,EAAC,MAAM;IACZJ,cAAc,CAACwC,OAAO,GAAGjD,cAAc;EAC3C,CAAC,EAAE,CAACA,cAAc,CAAC,CAAC;EAEpB,IAAAa,gBAAS,EAAC,MAAM;IACZ,IAAIjC,kBAAkB,CAACa,MAAM,KAAK,CAAC,IAAI,CAACgB,cAAc,CAACwC,OAAO,IAAIzC,WAAW,CAACyC,OAAO,EAAE;MACnFd,UAAU,CAAC,CAAC;IAChB;EACJ,CAAC,EAAE,CAACA,UAAU,EAAEvD,kBAAkB,CAACa,MAAM,CAAC,CAAC;;EAE3C;AACR;AACA;EACQ,MAAMyD,WAAW,GAAG,IAAAd,kBAAW,EAAC,MAAM;IAClC5B,WAAW,CAACyC,OAAO,GAAG,IAAI;IAE1B,IAAI3E,6BAA6B,EAAE;MAC/B,MAAMoD,gBAAmC,GAAG,EAAE;MAE9CJ,UAAU,CAACL,OAAO,CAAC,CAAC;QAAEO,IAAI;QAAEN;MAAU,CAAC,KAAK;QACxC,MAAMS,OAAO,GAAG,IAAAC,qBAAU,EAAC;UAAEZ,KAAK,EAAEQ,IAAI;UAAEK,YAAY,EAAE5C;QAAM,CAAC,CAAC;QAEhE,IAAI0C,OAAO,CAAClC,MAAM,GAAG,CAAC,EAAE;UACpBiC,gBAAgB,CAACP,IAAI,CAAC;YAClBD,SAAS;YACTM,IAAI,EAAEG;UACV,CAAC,CAAC;QACN;MACJ,CAAC,CAAC;MAEF,IAAID,gBAAgB,CAACjC,MAAM,KAAK,CAAC,IAAIlB,oBAAoB,EAAE;QACvDmD,gBAAgB,CAACP,IAAI,CAAC;UAClBD,SAAS,EAAEY,SAAS;UACpBN,IAAI,EAAE;QACV,CAAC,CAAC;MACN;MAEA,MAAMO,yBAAyB,GAAGL,gBAAgB,CAACM,GAAG,CAAC,CAAC;QAAER,IAAI;QAAEN;MAAU,CAAC,MAAM;QAC7EA,SAAS;QACTM,IAAI,EAAEA,IAAI,CAACS,MAAM,CAAEC,IAAI,IAAK;UACxB,IAAI,OAAOzD,YAAY,KAAK,UAAU,EAAE;YACpC,OAAOA,YAAY,CAACyD,IAAI,CAAC;UAC7B;UACA,OAAO,EAAER,gBAAgB,CAACjC,MAAM,KAAK,CAAC,IAAIyC,IAAI,CAACb,IAAI,KAAKpC,KAAK,CAAC;QAClE,CAAC;MACL,CAAC,CAAC,CAAC;MAEHJ,qBAAqB,CAACkD,yBAAyB,CAAC;MAEhD,IAAIA,yBAAyB,CAACtC,MAAM,KAAK,CAAC,EAAE;QACxC0C,UAAU,CAAC,CAAC;MAChB;IACJ;EACJ,CAAC,EAAE,CACCb,UAAU,EACVa,UAAU,EACV1D,YAAY,EACZF,oBAAoB,EACpBD,6BAA6B,EAC7BW,KAAK,CACR,CAAC;;EAEF;AACR;AACA;;EAEQ,IAAA4B,gBAAS,EAAC,MAAM;IACZ,MAAMa,gBAAmC,GAAG,EAAE;IAE9CJ,UAAU,CAACL,OAAO,CAAC,CAAC;MAAEO,IAAI;MAAEN;IAAU,CAAC,KAAK;MACxC,MAAMS,OAAO,GAAG,IAAAC,qBAAU,EAAC;QAAEZ,KAAK,EAAEQ,IAAI;QAAEK,YAAY,EAAE5C;MAAM,CAAC,CAAC;MAEhE,IAAI0C,OAAO,CAAClC,MAAM,GAAG,CAAC,EAAE;QACpBiC,gBAAgB,CAACP,IAAI,CAAC;UAClBD,SAAS;UACTM,IAAI,EAAEG;QACV,CAAC,CAAC;MACN;IACJ,CAAC,CAAC;IAEF,IAAID,gBAAgB,CAACjC,MAAM,KAAK,CAAC,IAAIlB,oBAAoB,EAAE;MACvDmD,gBAAgB,CAACP,IAAI,CAAC;QAClBD,SAAS,EAAEY,SAAS;QACpBN,IAAI,EAAE;MACV,CAAC,CAAC;IACN;IAEA,IAAIjD,oBAAoB,IAAIqB,gBAAgB,KAAK,EAAE,EAAE;MACjD8B,gBAAgB,CAACT,OAAO,CAAC,CAAC;QAAEO;MAAK,CAAC,KAAK;QACnCA,IAAI,CAACP,OAAO,CAAC,CAAC;UAAEI;QAAK,CAAC,KAAK;UACvB,IAAIA,IAAI,CAAC8B,WAAW,CAAC,CAAC,KAAKvD,gBAAgB,CAACuD,WAAW,CAAC,CAAC,EAAE;YACvDtD,mBAAmB,CAAC,EAAE,CAAC;UAC3B;QACJ,CAAC,CAAC;MACN,CAAC,CAAC;IACN;EACJ,CAAC,EAAE,CACCD,gBAAgB,EAChB0B,UAAU,EACV/C,oBAAoB,EACpBD,6BAA6B,EAC7BW,KAAK,CACR,CAAC;EAEF,MAAMmE,WAAW,GAAG,IAAAhB,kBAAW,EAAC,MAAM;IAClC,IAAIpC,cAAc,EAAE;MAChBqC,WAAW,CAAC,CAAC;IACjB,CAAC,MAAM;MACHF,UAAU,CAAC,CAAC;IAChB;EACJ,CAAC,EAAE,CAACE,WAAW,EAAEF,UAAU,EAAEnC,cAAc,CAAC,CAAC;EAE7C,MAAMqD,YAAY,GAAG,IAAAtC,cAAO,EAAC,MAAM;IAC/B,IAAI,CAACvC,oBAAoB,EAAE;MACvB,OAAOsD,SAAS;IACpB;IAEA,oBACIzG,MAAA,CAAAkB,OAAA,CAAAsG,aAAA,CAAC3G,UAAA,CAAAoH,mBAAmB;MAACC,OAAO,EAAEH;IAAY,gBACtC/H,MAAA,CAAAkB,OAAA,CAAAsG,aAAA,CAAClH,KAAA,CAAAY,OAAI;MAACiH,KAAK,EAAE,CAAC,oBAAoB,CAAE;MAACC,KAAK,EAAE9C,KAAK,CAAC,KAAK;IAAY,CAAE,CACpD,CAAC;EAE9B,CAAC,EAAE,CAACyC,WAAW,EAAE5E,oBAAoB,EAAEmC,KAAK,CAAC,CAAC;EAE9C,MAAM+C,WAAW,GAAG,IAAA3C,cAAO,EACvB,MACI,CAACnD,SAAS,IAAImB,aAAa,kBACvB1D,MAAA,CAAAkB,OAAA,CAAAsG,aAAA,CAAC3G,UAAA,CAAAyH,0BAA0B,QACtB/F,SAAS,iBAAIvC,MAAA,CAAAkB,OAAA,CAAAsG,aAAA,CAAClH,KAAA,CAAAY,OAAI;IAACiH,KAAK,EAAE5F;EAAU,CAAE,CAAC,EACvCmB,aAAa,IAAIA,aACM,CAC/B,EACL,CAACnB,SAAS,EAAEmB,aAAa,CAC7B,CAAC;;EAED;AACR;AACA;EACQ,MAAM6E,YAAY,GAAG,IAAAxB,kBAAW,EAC3ByB,KAAoC,IAAK;IACtC,MAAMC,aAAgC,GAAG,EAAE;IAC3CpD,qBAAqB,CAACuC,OAAO,GAAG,KAAK;IAErC3B,UAAU,CAACL,OAAO,CAAC,CAAC;MAAEO,IAAI;MAAEN;IAAU,CAAC,KAAK;MACxC,MAAMS,OAAO,GAAG,IAAAC,qBAAU,EAAC;QAAEZ,KAAK,EAAEQ,IAAI;QAAEK,YAAY,EAAEgC,KAAK,CAACE,MAAM,CAAC9E;MAAM,CAAC,CAAC;MAE7E,IAAI0C,OAAO,CAAClC,MAAM,GAAG,CAAC,EAAE;QACpBqE,aAAa,CAAC3C,IAAI,CAAC;UACfD,SAAS;UACTM,IAAI,EAAEG;QACV,CAAC,CAAC;MACN;IACJ,CAAC,CAAC;IAEF,IAAImC,aAAa,CAACrE,MAAM,KAAK,CAAC,IAAIlB,oBAAoB,EAAE;MACpDuF,aAAa,CAAC3C,IAAI,CAAC;QACfD,SAAS,EAAEY,SAAS;QACpBN,IAAI,EAAE;MACV,CAAC,CAAC;IACN;IAEAxC,gBAAgB,CAAC8C,SAAS,CAAC;IAE3B,IAAI,CAACxD,6BAA6B,IAAI,CAACuF,KAAK,CAACE,MAAM,CAAC9E,KAAK,EAAE;MACvDJ,qBAAqB,CAAC,EAAE,CAAC;IAC7B,CAAC,MAAM;MACHA,qBAAqB,CAACiF,aAAa,CAAC;IACxC;IAEA,IAAIA,aAAa,CAACrE,MAAM,KAAK,CAAC,EAAE;MAC5B0C,UAAU,CAAC,CAAC;IAChB;IAEAjD,QAAQ,CAAC2E,KAAK,CAACE,MAAM,CAAC9E,KAAK,CAAC;IAC5BY,mBAAmB,CAACgE,KAAK,CAACE,MAAM,CAAC9E,KAAK,CAAC;IAEvC,IAAI,OAAOnB,QAAQ,KAAK,UAAU,EAAE;MAChCA,QAAQ,CAAC+F,KAAK,CAAC;IACnB;EACJ,CAAC,EACD,CAACvC,UAAU,EAAEa,UAAU,EAAErE,QAAQ,EAAES,oBAAoB,EAAED,6BAA6B,CAC1F,CAAC;;EAED;AACR;AACA;EACQ,MAAM0F,UAAU,GAAG,IAAA5B,kBAAW,EACzByB,KAAmC,IAAK;IACrCrD,WAAW,CAACyC,OAAO,GAAG,KAAK;IAE3B,IAAI,OAAOlF,MAAM,KAAK,UAAU,EAAE;MAC9BA,MAAM,CAAC8F,KAAK,CAAC;IACjB;EACJ,CAAC,EACD,CAAC9F,MAAM,CACX,CAAC;;EAED;AACR;AACA;EACQ,MAAMkG,YAAY,GAAG,IAAA7B,kBAAW,EAC3BF,IAAoB,IAAK;IACtB,MAAMgC,OAAO,GAAG;MACZ,GAAGhC,IAAI;MACPb,IAAI,EAAEa,IAAI,CAACb,IAAI,CAAC8C,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAACA,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAACA,OAAO,CAAC,KAAK,EAAE,EAAE;IAC5E,CAAC;IAEDjF,QAAQ,CAACgF,OAAO,CAAC7C,IAAI,CAAC;IACtBgB,WAAW,CAAC,CAAC;IAEbrD,gBAAgB,CACZkF,OAAO,CAACtB,QAAQ,gBACZvH,MAAA,CAAAkB,OAAA,CAAAsG,aAAA,CAAC5G,eAAA,CAAA6G,wBAAwB;MACrBC,GAAG,EAAEmB,OAAO,CAACtB,QAAS;MACtBI,qBAAqB,EAAE3E;IAAqB,CAC/C,CAAC,GACFyD,SACR,CAAC;IAEDjD,qBAAqB,CAAC,EAAE,CAAC;IAEzB,IAAI,OAAOb,QAAQ,KAAK,UAAU,EAAE;MAChCA,QAAQ,CAACkG,OAAO,CAAC;IACrB;EACJ,CAAC,EACD,CAAC7B,WAAW,EAAErE,QAAQ,EAAEK,oBAAoB,CAChD,CAAC;EAED,MAAM+F,OAAO,GAAG,IAAArD,cAAO,EAAC,MAAM;IAC1B,MAAMC,KAAqB,GAAG,EAAE;IAEhCpC,kBAAkB,CAACqC,OAAO,CAAC,CAAC;MAAEC,SAAS;MAAEM;IAAK,CAAC,EAAE6C,KAAK,KAAK;MACvD,IAAI9E,iBAAiB,EAAE;QACnB,IAAIiC,IAAI,CAAC/B,MAAM,IAAI,CAAC,EAAE;UAClB;QACJ;QAEA,IAAI4E,KAAK,KAAK,CAAC,EAAE;UACbrD,KAAK,CAACG,IAAI,cAAC9F,MAAA,CAAAkB,OAAA,CAAAsG,aAAA,CAAC/G,UAAA,CAAAS,OAAS;YAAC+H,GAAG,EAAEpD,SAAU;YAACqD,IAAI,EAAErD,SAAS,IAAI;UAAG,CAAE,CAAC,CAAC;QACpE;MACJ;MAEAM,IAAI,CAACP,OAAO,CAAC,CAAC;QAAEG,EAAE;QAAEC,IAAI;QAAEuB;MAAS,CAAC,KAAK;QACrC5B,KAAK,CAACG,IAAI,cACN9F,MAAA,CAAAkB,OAAA,CAAAsG,aAAA,CAAC7G,cAAA,CAAAO,OAAa;UACV+H,GAAG,EAAE,GAAGlD,EAAE,IAAIF,SAAS,IAAI,EAAE,EAAG;UAChCE,EAAE,EAAEA,EAAG;UACPC,IAAI,EAAEA,IAAK;UACXuB,QAAQ,EAAEA,QAAS;UACnBvE,oBAAoB,EAAEA,oBAAqB;UAC3CL,QAAQ,EAAEiG,YAAa;UACvB/C,SAAS,EAAEA;QAAU,CACxB,CACL,CAAC;MACL,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,IAAI3C,oBAAoB,IAAIqB,gBAAgB,KAAK,EAAE,EAAE;MACjDoB,KAAK,CAACG,IAAI,cACN9F,MAAA,CAAAkB,OAAA,CAAAsG,aAAA,CAAC7G,cAAA,CAAAO,OAAa;QACV6E,EAAE,EAAC,aAAa;QAChBpD,QAAQ,EAAEiG,YAAa;QACvB5C,IAAI,EAAE,MAAMzB,gBAAgB;MAAM,CACrC,CACL,CAAC;IACL;IAEA,OAAOoB,KAAK;EAChB,CAAC,EAAE,CACCpC,kBAAkB,EAClBL,oBAAoB,EACpBqB,gBAAgB,EAChBL,iBAAiB,EACjBlB,oBAAoB,EACpB4F,YAAY,CACf,CAAC;EAEF,IAAApD,gBAAS,EAAC,MAAM;IACZ,MAAM2D,aAAa,GAAInI,CAAgB,IAAK;MACxC,IAAI,CAAC2D,cAAc,IAAIpB,kBAAkB,CAACa,MAAM,KAAK,CAAC,EAAE;QACpD;MACJ;MAEA,IAAIpD,CAAC,CAACiI,GAAG,KAAK,SAAS,IAAIjI,CAAC,CAACiI,GAAG,KAAK,WAAW,EAAE;QAAA,IAAAG,mBAAA,EAAAC,mBAAA;QAC9CrI,CAAC,CAACsI,cAAc,CAAC,CAAC;QAClB,MAAMC,QAAQ,IAAAH,mBAAA,GAAGnE,UAAU,CAAC2C,OAAO,cAAAwB,mBAAA,uBAAlBA,mBAAA,CAAoBG,QAAQ;QAE7C,IAAI,CAACA,QAAQ,EAAE;UACX;QACJ;QAEA,MAAMC,aAAa,GAAGC,KAAK,CAACC,IAAI,CAACH,QAAQ,CAAC;QAE1C,MAAMI,WAAW,IAAAN,mBAAA,GAAGG,aAAa,CAAClC,IAAI,CAAEsC,KAAK,IACzCA,KAAK,CAAC7D,EAAE,CAAC8D,UAAU,CAAC,qBAAqB,CAC7C,CAAC,cAAAR,mBAAA,uBAFmBA,mBAAA,CAEjBE,QAAQ;QAEX,IAAII,WAAW,IAAIA,WAAW,CAACvF,MAAM,GAAG,CAAC,EAAE;UACvC,MAAM0F,gBAAgB,GAAGL,KAAK,CAACC,IAAI,CAACC,WAAW,CAAC,CAAC/C,MAAM,CAClDgD,KAAK,IAAMA,KAAK,CAAiBG,OAAO,CAACC,WAAW,KAAK,MAC9D,CAAC;UACD1F,wBAAwB,CAACwF,gBAAgB,CAAC;UAE1C,MAAMG,QAAQ,GACVjG,YAAY,KAAK,IAAI,GACf,CAACA,YAAY,IACRhD,CAAC,CAACiI,GAAG,KAAK,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAC9Ba,gBAAgB,CAAC1F,MAAM,IAC3B0F,gBAAgB,CAAC1F,MAAM,GACvB,CAAC;UAEX,IAAIJ,YAAY,KAAK,IAAI,EAAE;YACvB,MAAMkG,WAAW,GAAGJ,gBAAgB,CAAC9F,YAAY,CAAmB;YACpEkG,WAAW,CAACC,QAAQ,GAAG,CAAC,CAAC;UAC7B;UAEAlG,eAAe,CAACgG,QAAQ,CAAC;UAEzB,MAAMG,UAAU,GAAGN,gBAAgB,CAACG,QAAQ,CAAmB;UAC/DG,UAAU,CAACD,QAAQ,GAAG,CAAC;UACvBC,UAAU,CAACC,KAAK,CAAC,CAAC;QACtB;MACJ,CAAC,MAAM,IAAIrJ,CAAC,CAACiI,GAAG,KAAK,OAAO,IAAIjF,YAAY,KAAK,IAAI,EAAE;QACnD,IAAIK,qBAAqB,EAAE;UAAA,IAAAiG,kBAAA;UACvB,MAAMC,OAAO,GAAGlG,qBAAqB,CAACL,YAAY,CAAC;UAEnD,IAAI,CAACuG,OAAO,EAAE;YACV;UACJ;UAEA,MAAM;YAAExE,EAAE;YAAEyE;UAAY,CAAC,GAAGD,OAAO;UAEnC,IAAIhD,QAA4B;;UAEhC;UACA;UACA;UACA,KAAA+C,kBAAA,GAAIC,OAAO,CAAChB,QAAQ,CAAC,CAAC,CAAC,cAAAe,kBAAA,eAAnBA,kBAAA,CAAqBG,UAAU,CAAC/C,GAAG,EAAE;YAAA,IAAAgD,mBAAA;YACrC;YACA;YACA;YACAnD,QAAQ,IAAAmD,mBAAA,GAAGH,OAAO,CAAChB,QAAQ,CAAC,CAAC,CAAC,cAAAmB,mBAAA,uBAAnBA,mBAAA,CAAqBD,UAAU,CAAC/C,GAAG,CAACiD,SAAmB;UACtE;UAEA/B,YAAY,CAAC;YACT7C,EAAE,EAAEA,EAAE,CAAC+C,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC;YACvC9C,IAAI,EAAEwE,WAAW,IAAI,EAAE;YACvBjD;UACJ,CAAC,CAAC;QACN;MACJ;IACJ,CAAC;IAEDqD,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAE1B,aAAa,CAAC;IAEnD,OAAO,MAAM;MACTyB,QAAQ,CAACE,mBAAmB,CAAC,SAAS,EAAE3B,aAAa,CAAC;IAC1D,CAAC;EACL,CAAC,EAAE,CACC9E,qBAAqB,EACrBL,YAAY,EACZ4E,YAAY,EACZrF,kBAAkB,CAACa,MAAM,EACzBO,cAAc,CACjB,CAAC;EAEF,MAAMoG,cAAc,GAAG,IAAAhE,kBAAW,EAAEyB,KAAoB,IAAK;IACzD,IAAIA,KAAK,CAACwC,OAAO,KAAK,EAAE,EAAE;MACtBxH,qBAAqB,CAAC,EAAE,CAAC;IAC7B;EACJ,CAAC,EAAE,EAAE,CAAC;EAEN,IAAAyH,0BAAmB,EACf3H,GAAG,EACH,OAAO;IACH4H,KAAK,EAAEA,CAAA,KAAMrH,QAAQ,CAAC,EAAE;EAC5B,CAAC,CAAC,EACF,EACJ,CAAC;EAED,IAAA2B,gBAAS,EAAC,MAAM;IACZoF,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAEE,cAAc,CAAC;IAEpD,OAAO,MAAM;MACTH,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAEE,cAAc,CAAC;IACxD,CAAC;EACL,CAAC,EAAE,CAACA,cAAc,CAAC,CAAC;;EAEpB;AACR;AACA;EACQ,IAAAvF,gBAAS,EAAC,MAAM;IACZ,IAAInC,WAAW,EAAE;MACbQ,QAAQ,CAACR,WAAW,CAAC;IACzB;EACJ,CAAC,EAAE,CAACA,WAAW,CAAC,CAAC;EAEjB,OAAO,IAAAqC,cAAO,EACV,mBACI1F,MAAA,CAAAkB,OAAA,CAAAsG,aAAA,CAAC3G,UAAA,CAAAsK,eAAe;IAAC7H,GAAG,EAAEyB,MAAO;IAACkE,GAAG,EAAE,cAAcpE,IAAI;EAAG,gBACpD7E,MAAA,CAAAkB,OAAA,CAAAsG,aAAA;IAAKzB,EAAE,EAAE,mBAAmBlB,IAAI;EAAG,gBAC/B7E,MAAA,CAAAkB,OAAA,CAAAsG,aAAA,CAAChH,MAAA,CAAAU,OAAK;IACFmB,SAAS,EAAEA,SAAU;IACrBiB,GAAG,EAAE4B,QAAS;IACdzC,QAAQ,EAAE8F,YAAa;IACvB7F,MAAM,EAAEiG,UAAW;IACnByC,OAAO,EAAEvD,WAAY;IACrBvF,WAAW,EAAEA,WAAY;IACzBM,SAAS,EAAEA,SAAU;IACrByF,WAAW,EAAEA,WAAY;IACzBL,YAAY,EAAEA,YAAa;IAC3BpE,KAAK,EAAEA;EAAM,CAChB,CACA,CAAC,EACLmB,MAAM,CAAC6C,OAAO,iBACX5H,MAAA,CAAAkB,OAAA,CAAAsG,aAAA,CAACzG,oBAAA,CAAAG,OAAmB;IAChBmK,kBAAkB,EACd1G,cAAc,IACdpB,kBAAkB,CAACa,MAAM,KAAK,CAAC,KAC9BR,KAAK,CAAC0H,IAAI,CAAC,CAAC,KAAK,EAAE,IAAIrI,6BAA6B,CACxD;IACDsI,OAAO,EAAEvE,WAAY;IACrBwE,aAAa,EAAEzG,MAAM,CAAC6C,OAAQ;IAC9B6D,SAAS,EAAE,GAAI;IACf3I,SAAS,EAAEA;EAAU,gBAErB9C,MAAA,CAAAkB,OAAA,CAAAsG,aAAA,CAAC9G,cAAA,CAAAQ,OAAa;IACV+H,GAAG,EAAE,mBAAmBpE,IAAI,EAAG;IAC/BY,aAAa,EAAEA,aAAc;IAC7BiG,cAAc,EAAEjH,MAAO;IACvBX,MAAM,EAAEA,MAAO;IACfR,GAAG,EAAE2B,UAAW;IAChB0G,aAAa,EAAE1E,8BAA+B;IAC9ClE,uBAAuB,EAAEA;EAAwB,GAEhDgG,OACU,CACE,CAEZ,CACpB,EACD,CACIjG,SAAS,EACTiG,OAAO,EACPtD,aAAa,EACbhB,MAAM,EACNkE,UAAU,EACVJ,YAAY,EACZvB,WAAW,EACXa,WAAW,EACX/D,MAAM,EACNzB,SAAS,EACTgG,WAAW,EACX9E,kBAAkB,CAACa,MAAM,EACzBxB,SAAS,EACTN,WAAW,EACX0F,YAAY,EACZjF,uBAAuB,EACvB4B,cAAc,EACd1B,6BAA6B,EAC7B4B,IAAI,EACJjB,KAAK,CAEb,CAAC;AACL,CACJ,CAAC;AAEDzB,SAAS,CAACyJ,WAAW,GAAG,WAAW;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAA5K,OAAA,GAErBiB,SAAS","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"SearchBox.js","names":["_react","_interopRequireWildcard","require","_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","SearchBox","forwardRef","isInvalid","placeholder","leftIcons","lists","onChange","onBlur","onSelect","onKeyDown","selectedId","container","shouldHideFilterButtons","shouldShowRoundImage","shouldShowContentOnEmptyInput","shouldAddInputToList","shouldShowToggleIcon","customFilter","presetValue","tagInputSettings","ref","matchingListsItems","setMatchingListsItems","useState","selectedImage","setSelectedImage","value","setValue","height","setHeight","focusedIndex","setFocusedIndex","hasMultipleGroups","setHasMultipleGroups","length","filteredChildrenArray","setFilteredChildrenArray","inputToListValue","setInputToListValue","groups","setGroups","shouldShowBody","setShouldShowBody","uuid","useUuid","boxRef","useRef","contentRef","inputRef","hasFocusRef","isAnimatingRef","shouldShowPresetValue","theme","useTheme","useEffect","filterButtons","useMemo","items","forEach","groupName","push","id","text","activeList","newLists","list","includes","newMatchingItems","newList","searchList","searchString","undefined","filteredMatchingListItems","map","filter","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","handleSelect","newItem","replace","content","index","key","name","handleKeyDown","_contentRef$current","_childrenArray$find","preventDefault","children","childrenArray","Array","from","newChildren","child","startsWith","filteredChildren","dataset","isgroupname","newIndex","prevElement","tabIndex","newElement","focus","_element$children$","element","textContent","attributes","_element$children$2","nodeValue","document","addEventListener","removeEventListener","handleKeyPress","keyCode","useImperativeHandle","clear","StyledSearchBox","tags","onAdd","onRemove","onFocus","shouldAllowMultiple","shouldPreventEnter","shouldShowDropdown","trim","onClose","anchorElement","maxHeight","selectedGroups","onGroupSelect","displayName","_default","exports"],"sources":["../../../../src/components/search-box/SearchBox.tsx"],"sourcesContent":["import 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 } 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 StyledSearchBoxIcon,\n StyledSearchBoxLeftWrapper,\n} from './SearchBox.styles';\nimport { useUuid } from '../../hooks/uuid';\nimport DropdownBodyWrapper from '../dropdown-body-wrapper/DropdownBodyWrapper';\nimport TagInput, { TagInputProps } from '../tag-input/TagInput';\n\nexport type SearchBoxRef = {\n clear: VoidFunction;\n};\n\nexport interface TagInputSettings {\n onAdd?: TagInputProps['onAdd'];\n onRemove?: TagInputProps['onRemove'];\n shouldAllowMultiple?: TagInputProps['shouldAllowMultiple'];\n shouldPreventEnter?: TagInputProps['shouldPreventEnter'];\n tags?: TagInputProps['tags'];\n}\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 * 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 placeholder that should be displayed.\n */\n placeholder?: string;\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 * 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 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 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 * An optional callback function to filter the elements to be displayed\n */\n customFilter?: (item: ISearchBoxItem) => boolean;\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 * Settings for the TagInput.\n */\n tagInputSettings?: TagInputSettings;\n};\n\nconst SearchBox: FC<SearchBoxProps> = forwardRef<SearchBoxRef, SearchBoxProps>(\n (\n {\n isInvalid = false,\n placeholder,\n leftIcons,\n lists,\n onChange,\n onBlur,\n onSelect,\n onKeyDown,\n selectedId,\n container,\n shouldHideFilterButtons = false,\n shouldShowRoundImage,\n shouldShowContentOnEmptyInput = true,\n shouldAddInputToList = true,\n shouldShowToggleIcon = false,\n customFilter,\n presetValue,\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\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\n /**\n * Checks if Lists are smaller then 1\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 = searchList({ items: list, searchString: value });\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') {\n return customFilter(item);\n }\n return !(newMatchingItems.length === 1 && item.text === value);\n }),\n }));\n\n setMatchingListsItems(filteredMatchingListItems);\n\n return newLists;\n }, [groups, lists, customFilter, shouldAddInputToList, value]);\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 (matchingListsItems.length !== 0 && !isAnimatingRef.current && hasFocusRef.current) {\n handleOpen();\n }\n }, [handleOpen, matchingListsItems.length]);\n\n /**\n * This function sets the items on focus if shouldShowContentOnEmptyInput\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 = searchList({ items: list, searchString: value });\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') {\n return customFilter(item);\n }\n return !(newMatchingItems.length === 1 && item.text === value);\n }),\n }));\n\n setMatchingListsItems(filteredMatchingListItems);\n\n if (filteredMatchingListItems.length !== 0) {\n handleOpen();\n }\n }\n }, [\n activeList,\n handleOpen,\n customFilter,\n shouldAddInputToList,\n shouldShowContentOnEmptyInput,\n value,\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 = searchList({ items: list, searchString: value });\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 value,\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 = searchList({ items: list, searchString: event.target.value });\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 [activeList, handleOpen, onChange, shouldAddInputToList, shouldShowContentOnEmptyInput],\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 /**\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 setValue(newItem.text);\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],\n );\n\n const content = useMemo(() => {\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 }) => {\n items.push(\n <SearchBoxItem\n key={`${id}_${groupName ?? ''}`}\n id={id}\n text={text}\n imageUrl={imageUrl}\n shouldShowRoundImage={shouldShowRoundImage}\n onSelect={handleSelect}\n groupName={groupName}\n />,\n );\n });\n });\n\n if (shouldAddInputToList && inputToListValue !== '') {\n items.push(\n <SearchBoxItem\n id=\"input-value\"\n onSelect={handleSelect}\n text={`<b>${inputToListValue}</b`}\n />,\n );\n }\n\n return items;\n }, [\n matchingListsItems,\n shouldAddInputToList,\n inputToListValue,\n hasMultipleGroups,\n shouldShowRoundImage,\n handleSelect,\n ]);\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (!shouldShowBody || matchingListsItems.length === 0) {\n return;\n }\n\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\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('searchbox-content__'),\n )?.children;\n\n if (newChildren && newChildren.length > 0) {\n const filteredChildren = Array.from(newChildren).filter(\n (child) => (child as HTMLElement).dataset.isgroupname !== 'true',\n );\n setFilteredChildrenArray(filteredChildren);\n\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 newElement.tabIndex = 0;\n newElement.focus();\n }\n } else if (e.key === 'Enter' && focusedIndex !== null) {\n if (filteredChildrenArray) {\n const element = filteredChildrenArray[focusedIndex];\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 handleSelect({\n id: id.replace('search-box-item__', ''),\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 return useMemo(\n () => (\n <StyledSearchBox ref={boxRef} key={`search-box-${uuid}`}>\n <div id={`search_box_input${uuid}`}>\n {tagInputSettings ? (\n <TagInput\n tags={tagInputSettings.tags}\n onChange={handleChange}\n onAdd={tagInputSettings.onAdd}\n onRemove={tagInputSettings.onRemove}\n onFocus={handleFocus}\n onBlur={handleBlur}\n placeholder={placeholder}\n leftElement={leftElement}\n shouldAllowMultiple={tagInputSettings.shouldAllowMultiple}\n shouldPreventEnter={tagInputSettings.shouldPreventEnter}\n />\n ) : (\n <Input\n isInvalid={isInvalid}\n ref={inputRef}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n placeholder={placeholder}\n onKeyDown={onKeyDown}\n leftElement={leftElement}\n rightElement={rightElement}\n value={value}\n />\n )}\n </div>\n {boxRef.current && (\n <DropdownBodyWrapper\n shouldShowDropdown={\n shouldShowBody &&\n matchingListsItems.length !== 0 &&\n (value.trim() !== '' || shouldShowContentOnEmptyInput)\n }\n onClose={handleClose}\n anchorElement={boxRef.current}\n maxHeight={300}\n container={container}\n >\n <SearchBoxBody\n key={`search-box-body-${uuid}`}\n filterButtons={filterButtons}\n selectedGroups={groups}\n height={height}\n ref={contentRef}\n onGroupSelect={handleFilterButtonsGroupSelect}\n shouldHideFilterButtons={shouldHideFilterButtons}\n >\n {content}\n </SearchBoxBody>\n </DropdownBodyWrapper>\n )}\n </StyledSearchBox>\n ),\n [\n container,\n content,\n filterButtons,\n groups,\n handleBlur,\n handleChange,\n handleClose,\n handleFocus,\n height,\n isInvalid,\n leftElement,\n matchingListsItems.length,\n onKeyDown,\n placeholder,\n rightElement,\n shouldHideFilterButtons,\n shouldShowBody,\n shouldShowContentOnEmptyInput,\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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DelayedDropdownContent.styles.js","names":["motion","styled","css","StyledMotionDelayedDropdownContent","div","$coordinates","y","x","$transform","$shouldHideContent"],"sources":["../../../../../src/components/dropdown-body-wrapper/delayed-dropdown-content/DelayedDropdownContent.styles.ts"],"sourcesContent":["import { motion } from 'motion/react';\nimport styled, { css } from 'styled-components';\nimport { WithTheme } from '../../color-scheme-provider/ColorSchemeProvider';\nimport { DropdownCoordinates, DropdownTransform } from '../../../types/dropdown';\n\ntype StyledMotionDelayedDropdownContentProps = WithTheme<{\n $shouldHideContent: boolean;\n $coordinates: DropdownCoordinates;\n $transform: DropdownTransform;\n}>;\n\nexport const StyledMotionDelayedDropdownContent = styled(\n motion.div,\n)<StyledMotionDelayedDropdownContentProps>`\n position: absolute;\n\n height: fit-content;\n width: fit-content;\n\n top: ${({ $coordinates }) => $coordinates.y}px;\n left: ${({ $coordinates }) => $coordinates.x}px;\n\n transform: ${({ $transform }) => `translate(${$transform.x}, ${$transform.y})`};\n\n ${({ $shouldHideContent }) =>\n $shouldHideContent\n ? css`\n visibility: hidden;\n pointer-events: none;\n z-index: -1;\n `\n : css`\n z-index: 5;\n `}\n`;\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,cAAc;AACrC,OAAOC,MAAM,IAAIC,GAAG,QAAQ,mBAAmB;AAU/C,OAAO,MAAMC,kCAAkC,GAAGF,MAAM,CACpDD,MAAM,CAACI,GACX,CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA,WAAW,CAAC;EAAEC;AAAa,CAAC,KAAKA,YAAY,CAACC,CAAC;AAC/C,YAAY,CAAC;EAAED;AAAa,CAAC,KAAKA,YAAY,CAACE,CAAC;AAChD;AACA,iBAAiB,CAAC;EAAEC;AAAW,CAAC,KAAK,aAAaA,UAAU,CAACD,CAAC,KAAKC,UAAU,CAACF,CAAC,GAAG;AAClF;AACA,MAAM,CAAC;EAAEG;AAAmB,CAAC,KACrBA,kBAAkB,GACZP,GAAG;AACjB;AACA;AACA;AACA,eAAe,GACDA,GAAG;AACjB;AACA,eAAe;AACf,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"DelayedDropdownContent.styles.js","names":["motion","styled","css","StyledMotionDelayedDropdownContent","div","$coordinates","y","x","$transform","$shouldHideContent"],"sources":["../../../../../src/components/dropdown-body-wrapper/delayed-dropdown-content/DelayedDropdownContent.styles.ts"],"sourcesContent":["import { motion } from 'motion/react';\nimport styled, { css } from 'styled-components';\nimport { WithTheme } from '../../color-scheme-provider/ColorSchemeProvider';\nimport { DropdownCoordinates, DropdownTransform } from '../../../types/dropdown';\n\ntype StyledMotionDelayedDropdownContentProps = WithTheme<{\n $shouldHideContent: boolean;\n $coordinates: DropdownCoordinates;\n $transform: DropdownTransform;\n}>;\n\nexport const StyledMotionDelayedDropdownContent = styled(\n motion.div,\n)<StyledMotionDelayedDropdownContentProps>`\n position: absolute;\n\n height: fit-content;\n width: fit-content;\n\n top: ${({ $coordinates }) => $coordinates.y}px;\n left: ${({ $coordinates }) => $coordinates.x}px;\n\n transform: ${({ $transform }) => `translate(${$transform.x}, ${$transform.y})`};\n\n z-index: 15;\n\n ${({ $shouldHideContent }) =>\n $shouldHideContent\n ? css`\n visibility: hidden;\n pointer-events: none;\n z-index: -1;\n `\n : css`\n z-index: 5;\n `}\n`;\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,cAAc;AACrC,OAAOC,MAAM,IAAIC,GAAG,QAAQ,mBAAmB;AAU/C,OAAO,MAAMC,kCAAkC,GAAGF,MAAM,CACpDD,MAAM,CAACI,GACX,CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA,WAAW,CAAC;EAAEC;AAAa,CAAC,KAAKA,YAAY,CAACC,CAAC;AAC/C,YAAY,CAAC;EAAED;AAAa,CAAC,KAAKA,YAAY,CAACE,CAAC;AAChD;AACA,iBAAiB,CAAC;EAAEC;AAAW,CAAC,KAAK,aAAaA,UAAU,CAACD,CAAC,KAAKC,UAAU,CAACF,CAAC,GAAG;AAClF;AACA;AACA;AACA,MAAM,CAAC;EAAEG;AAAmB,CAAC,KACrBA,kBAAkB,GACZP,GAAG;AACjB;AACA;AACA;AACA,eAAe,GACDA,GAAG;AACjB;AACA,eAAe;AACf,CAAC","ignoreList":[]}
|
|
@@ -11,6 +11,7 @@ import { StyledSearchBoxItemImage } from './search-box-item/SearchBoxItem.styles
|
|
|
11
11
|
import { StyledSearchBox, StyledSearchBoxIcon, StyledSearchBoxLeftWrapper } from './SearchBox.styles';
|
|
12
12
|
import { useUuid } from '../../hooks/uuid';
|
|
13
13
|
import DropdownBodyWrapper from '../dropdown-body-wrapper/DropdownBodyWrapper';
|
|
14
|
+
import TagInput from '../tag-input/TagInput';
|
|
14
15
|
const SearchBox = /*#__PURE__*/forwardRef(({
|
|
15
16
|
isInvalid = false,
|
|
16
17
|
placeholder,
|
|
@@ -28,7 +29,8 @@ const SearchBox = /*#__PURE__*/forwardRef(({
|
|
|
28
29
|
shouldAddInputToList = true,
|
|
29
30
|
shouldShowToggleIcon = false,
|
|
30
31
|
customFilter,
|
|
31
|
-
presetValue
|
|
32
|
+
presetValue,
|
|
33
|
+
tagInputSettings
|
|
32
34
|
}, ref) => {
|
|
33
35
|
const [matchingListsItems, setMatchingListsItems] = useState(lists);
|
|
34
36
|
const [selectedImage, setSelectedImage] = useState();
|
|
@@ -507,7 +509,18 @@ const SearchBox = /*#__PURE__*/forwardRef(({
|
|
|
507
509
|
key: `search-box-${uuid}`
|
|
508
510
|
}, /*#__PURE__*/React.createElement("div", {
|
|
509
511
|
id: `search_box_input${uuid}`
|
|
510
|
-
}, /*#__PURE__*/React.createElement(
|
|
512
|
+
}, tagInputSettings ? /*#__PURE__*/React.createElement(TagInput, {
|
|
513
|
+
tags: tagInputSettings.tags,
|
|
514
|
+
onChange: handleChange,
|
|
515
|
+
onAdd: tagInputSettings.onAdd,
|
|
516
|
+
onRemove: tagInputSettings.onRemove,
|
|
517
|
+
onFocus: handleFocus,
|
|
518
|
+
onBlur: handleBlur,
|
|
519
|
+
placeholder: placeholder,
|
|
520
|
+
leftElement: leftElement,
|
|
521
|
+
shouldAllowMultiple: tagInputSettings.shouldAllowMultiple,
|
|
522
|
+
shouldPreventEnter: tagInputSettings.shouldPreventEnter
|
|
523
|
+
}) : /*#__PURE__*/React.createElement(Input, {
|
|
511
524
|
isInvalid: isInvalid,
|
|
512
525
|
ref: inputRef,
|
|
513
526
|
onChange: handleChange,
|
|
@@ -532,7 +545,7 @@ const SearchBox = /*#__PURE__*/forwardRef(({
|
|
|
532
545
|
ref: contentRef,
|
|
533
546
|
onGroupSelect: handleFilterButtonsGroupSelect,
|
|
534
547
|
shouldHideFilterButtons: shouldHideFilterButtons
|
|
535
|
-
}, content))), [container, content, filterButtons, groups, handleBlur, handleChange, handleClose, handleFocus, height, isInvalid, leftElement, matchingListsItems.length, onKeyDown, placeholder, rightElement, shouldHideFilterButtons, shouldShowBody, shouldShowContentOnEmptyInput, uuid, value]);
|
|
548
|
+
}, content))), [container, content, filterButtons, groups, handleBlur, handleChange, handleClose, handleFocus, height, isInvalid, leftElement, matchingListsItems.length, onKeyDown, placeholder, rightElement, shouldHideFilterButtons, shouldShowBody, shouldShowContentOnEmptyInput, tagInputSettings, uuid, value]);
|
|
536
549
|
});
|
|
537
550
|
SearchBox.displayName = 'SearchBox';
|
|
538
551
|
export default SearchBox;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchBox.js","names":["React","forwardRef","useCallback","useEffect","useImperativeHandle","useMemo","useRef","useState","useTheme","calculateContentHeight","searchList","Icon","Input","GroupName","SearchBoxBody","SearchBoxItem","StyledSearchBoxItemImage","StyledSearchBox","StyledSearchBoxIcon","StyledSearchBoxLeftWrapper","useUuid","DropdownBodyWrapper","SearchBox","isInvalid","placeholder","leftIcons","lists","onChange","onBlur","onSelect","onKeyDown","selectedId","container","shouldHideFilterButtons","shouldShowRoundImage","shouldShowContentOnEmptyInput","shouldAddInputToList","shouldShowToggleIcon","customFilter","presetValue","ref","matchingListsItems","setMatchingListsItems","selectedImage","setSelectedImage","value","setValue","height","setHeight","focusedIndex","setFocusedIndex","hasMultipleGroups","setHasMultipleGroups","length","filteredChildrenArray","setFilteredChildrenArray","inputToListValue","setInputToListValue","groups","setGroups","shouldShowBody","setShouldShowBody","uuid","boxRef","contentRef","inputRef","hasFocusRef","isAnimatingRef","shouldShowPresetValue","theme","filterButtons","items","forEach","groupName","push","id","text","activeList","newLists","list","includes","newMatchingItems","newList","searchString","undefined","filteredMatchingListItems","map","filter","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","handleSelect","newItem","replace","content","index","key","name","handleKeyDown","e","preventDefault","children","childrenArray","Array","from","newChildren","child","startsWith","filteredChildren","dataset","isgroupname","newIndex","prevElement","tabIndex","newElement","focus","element","textContent","attributes","nodeValue","document","addEventListener","removeEventListener","handleKeyPress","keyCode","clear","onFocus","shouldShowDropdown","trim","onClose","anchorElement","maxHeight","selectedGroups","onGroupSelect","displayName"],"sources":["../../../../src/components/search-box/SearchBox.tsx"],"sourcesContent":["import 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 } 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 StyledSearchBoxIcon,\n StyledSearchBoxLeftWrapper,\n} from './SearchBox.styles';\nimport { useUuid } from '../../hooks/uuid';\nimport DropdownBodyWrapper from '../dropdown-body-wrapper/DropdownBodyWrapper';\n\nexport type SearchBoxRef = {\n clear: VoidFunction;\n};\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 * 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 placeholder that should be displayed.\n */\n placeholder?: string;\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 * 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 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 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 * An optional callback function to filter the elements to be displayed\n */\n customFilter?: (item: ISearchBoxItem) => boolean;\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\nconst SearchBox: FC<SearchBoxProps> = forwardRef<SearchBoxRef, SearchBoxProps>(\n (\n {\n isInvalid = false,\n placeholder,\n leftIcons,\n lists,\n onChange,\n onBlur,\n onSelect,\n onKeyDown,\n selectedId,\n container,\n shouldHideFilterButtons = false,\n shouldShowRoundImage,\n shouldShowContentOnEmptyInput = true,\n shouldAddInputToList = true,\n shouldShowToggleIcon = false,\n customFilter,\n presetValue,\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\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\n /**\n * Checks if Lists are smaller then 1\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 = searchList({ items: list, searchString: value });\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') {\n return customFilter(item);\n }\n return !(newMatchingItems.length === 1 && item.text === value);\n }),\n }));\n\n setMatchingListsItems(filteredMatchingListItems);\n\n return newLists;\n }, [groups, lists, customFilter, shouldAddInputToList, value]);\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 (matchingListsItems.length !== 0 && !isAnimatingRef.current && hasFocusRef.current) {\n handleOpen();\n }\n }, [handleOpen, matchingListsItems.length]);\n\n /**\n * This function sets the items on focus if shouldShowContentOnEmptyInput\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 = searchList({ items: list, searchString: value });\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') {\n return customFilter(item);\n }\n return !(newMatchingItems.length === 1 && item.text === value);\n }),\n }));\n\n setMatchingListsItems(filteredMatchingListItems);\n\n if (filteredMatchingListItems.length !== 0) {\n handleOpen();\n }\n }\n }, [\n activeList,\n handleOpen,\n customFilter,\n shouldAddInputToList,\n shouldShowContentOnEmptyInput,\n value,\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 = searchList({ items: list, searchString: value });\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 value,\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 = searchList({ items: list, searchString: event.target.value });\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 [activeList, handleOpen, onChange, shouldAddInputToList, shouldShowContentOnEmptyInput],\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 /**\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 setValue(newItem.text);\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],\n );\n\n const content = useMemo(() => {\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 }) => {\n items.push(\n <SearchBoxItem\n key={`${id}_${groupName ?? ''}`}\n id={id}\n text={text}\n imageUrl={imageUrl}\n shouldShowRoundImage={shouldShowRoundImage}\n onSelect={handleSelect}\n groupName={groupName}\n />,\n );\n });\n });\n\n if (shouldAddInputToList && inputToListValue !== '') {\n items.push(\n <SearchBoxItem\n id=\"input-value\"\n onSelect={handleSelect}\n text={`<b>${inputToListValue}</b`}\n />,\n );\n }\n\n return items;\n }, [\n matchingListsItems,\n shouldAddInputToList,\n inputToListValue,\n hasMultipleGroups,\n shouldShowRoundImage,\n handleSelect,\n ]);\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (!shouldShowBody || matchingListsItems.length === 0) {\n return;\n }\n\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\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('searchbox-content__'),\n )?.children;\n\n if (newChildren && newChildren.length > 0) {\n const filteredChildren = Array.from(newChildren).filter(\n (child) => (child as HTMLElement).dataset.isgroupname !== 'true',\n );\n setFilteredChildrenArray(filteredChildren);\n\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 newElement.tabIndex = 0;\n newElement.focus();\n }\n } else if (e.key === 'Enter' && focusedIndex !== null) {\n if (filteredChildrenArray) {\n const element = filteredChildrenArray[focusedIndex];\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 handleSelect({\n id: id.replace('search-box-item__', ''),\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 return useMemo(\n () => (\n <StyledSearchBox ref={boxRef} key={`search-box-${uuid}`}>\n <div id={`search_box_input${uuid}`}>\n <Input\n isInvalid={isInvalid}\n ref={inputRef}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n placeholder={placeholder}\n onKeyDown={onKeyDown}\n leftElement={leftElement}\n rightElement={rightElement}\n value={value}\n />\n </div>\n {boxRef.current && (\n <DropdownBodyWrapper\n shouldShowDropdown={\n shouldShowBody &&\n matchingListsItems.length !== 0 &&\n (value.trim() !== '' || shouldShowContentOnEmptyInput)\n }\n onClose={handleClose}\n anchorElement={boxRef.current}\n maxHeight={300}\n container={container}\n >\n <SearchBoxBody\n key={`search-box-body-${uuid}`}\n filterButtons={filterButtons}\n selectedGroups={groups}\n height={height}\n ref={contentRef}\n onGroupSelect={handleFilterButtonsGroupSelect}\n shouldHideFilterButtons={shouldHideFilterButtons}\n >\n {content}\n </SearchBoxBody>\n </DropdownBodyWrapper>\n )}\n </StyledSearchBox>\n ),\n [\n container,\n content,\n filterButtons,\n groups,\n handleBlur,\n handleChange,\n handleClose,\n handleFocus,\n height,\n isInvalid,\n leftElement,\n matchingListsItems.length,\n onKeyDown,\n placeholder,\n rightElement,\n shouldHideFilterButtons,\n shouldShowBody,\n shouldShowContentOnEmptyInput,\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":["React","forwardRef","useCallback","useEffect","useImperativeHandle","useMemo","useRef","useState","useTheme","calculateContentHeight","searchList","Icon","Input","GroupName","SearchBoxBody","SearchBoxItem","StyledSearchBoxItemImage","StyledSearchBox","StyledSearchBoxIcon","StyledSearchBoxLeftWrapper","useUuid","DropdownBodyWrapper","TagInput","SearchBox","isInvalid","placeholder","leftIcons","lists","onChange","onBlur","onSelect","onKeyDown","selectedId","container","shouldHideFilterButtons","shouldShowRoundImage","shouldShowContentOnEmptyInput","shouldAddInputToList","shouldShowToggleIcon","customFilter","presetValue","tagInputSettings","ref","matchingListsItems","setMatchingListsItems","selectedImage","setSelectedImage","value","setValue","height","setHeight","focusedIndex","setFocusedIndex","hasMultipleGroups","setHasMultipleGroups","length","filteredChildrenArray","setFilteredChildrenArray","inputToListValue","setInputToListValue","groups","setGroups","shouldShowBody","setShouldShowBody","uuid","boxRef","contentRef","inputRef","hasFocusRef","isAnimatingRef","shouldShowPresetValue","theme","filterButtons","items","forEach","groupName","push","id","text","activeList","newLists","list","includes","newMatchingItems","newList","searchString","undefined","filteredMatchingListItems","map","filter","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","handleSelect","newItem","replace","content","index","key","name","handleKeyDown","e","preventDefault","children","childrenArray","Array","from","newChildren","child","startsWith","filteredChildren","dataset","isgroupname","newIndex","prevElement","tabIndex","newElement","focus","element","textContent","attributes","nodeValue","document","addEventListener","removeEventListener","handleKeyPress","keyCode","clear","tags","onAdd","onRemove","onFocus","shouldAllowMultiple","shouldPreventEnter","shouldShowDropdown","trim","onClose","anchorElement","maxHeight","selectedGroups","onGroupSelect","displayName"],"sources":["../../../../src/components/search-box/SearchBox.tsx"],"sourcesContent":["import 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 } 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 StyledSearchBoxIcon,\n StyledSearchBoxLeftWrapper,\n} from './SearchBox.styles';\nimport { useUuid } from '../../hooks/uuid';\nimport DropdownBodyWrapper from '../dropdown-body-wrapper/DropdownBodyWrapper';\nimport TagInput, { TagInputProps } from '../tag-input/TagInput';\n\nexport type SearchBoxRef = {\n clear: VoidFunction;\n};\n\nexport interface TagInputSettings {\n onAdd?: TagInputProps['onAdd'];\n onRemove?: TagInputProps['onRemove'];\n shouldAllowMultiple?: TagInputProps['shouldAllowMultiple'];\n shouldPreventEnter?: TagInputProps['shouldPreventEnter'];\n tags?: TagInputProps['tags'];\n}\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 * 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 placeholder that should be displayed.\n */\n placeholder?: string;\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 * 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 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 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 * An optional callback function to filter the elements to be displayed\n */\n customFilter?: (item: ISearchBoxItem) => boolean;\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 * Settings for the TagInput.\n */\n tagInputSettings?: TagInputSettings;\n};\n\nconst SearchBox: FC<SearchBoxProps> = forwardRef<SearchBoxRef, SearchBoxProps>(\n (\n {\n isInvalid = false,\n placeholder,\n leftIcons,\n lists,\n onChange,\n onBlur,\n onSelect,\n onKeyDown,\n selectedId,\n container,\n shouldHideFilterButtons = false,\n shouldShowRoundImage,\n shouldShowContentOnEmptyInput = true,\n shouldAddInputToList = true,\n shouldShowToggleIcon = false,\n customFilter,\n presetValue,\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\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\n /**\n * Checks if Lists are smaller then 1\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 = searchList({ items: list, searchString: value });\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') {\n return customFilter(item);\n }\n return !(newMatchingItems.length === 1 && item.text === value);\n }),\n }));\n\n setMatchingListsItems(filteredMatchingListItems);\n\n return newLists;\n }, [groups, lists, customFilter, shouldAddInputToList, value]);\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 (matchingListsItems.length !== 0 && !isAnimatingRef.current && hasFocusRef.current) {\n handleOpen();\n }\n }, [handleOpen, matchingListsItems.length]);\n\n /**\n * This function sets the items on focus if shouldShowContentOnEmptyInput\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 = searchList({ items: list, searchString: value });\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') {\n return customFilter(item);\n }\n return !(newMatchingItems.length === 1 && item.text === value);\n }),\n }));\n\n setMatchingListsItems(filteredMatchingListItems);\n\n if (filteredMatchingListItems.length !== 0) {\n handleOpen();\n }\n }\n }, [\n activeList,\n handleOpen,\n customFilter,\n shouldAddInputToList,\n shouldShowContentOnEmptyInput,\n value,\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 = searchList({ items: list, searchString: value });\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 value,\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 = searchList({ items: list, searchString: event.target.value });\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 [activeList, handleOpen, onChange, shouldAddInputToList, shouldShowContentOnEmptyInput],\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 /**\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 setValue(newItem.text);\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],\n );\n\n const content = useMemo(() => {\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 }) => {\n items.push(\n <SearchBoxItem\n key={`${id}_${groupName ?? ''}`}\n id={id}\n text={text}\n imageUrl={imageUrl}\n shouldShowRoundImage={shouldShowRoundImage}\n onSelect={handleSelect}\n groupName={groupName}\n />,\n );\n });\n });\n\n if (shouldAddInputToList && inputToListValue !== '') {\n items.push(\n <SearchBoxItem\n id=\"input-value\"\n onSelect={handleSelect}\n text={`<b>${inputToListValue}</b`}\n />,\n );\n }\n\n return items;\n }, [\n matchingListsItems,\n shouldAddInputToList,\n inputToListValue,\n hasMultipleGroups,\n shouldShowRoundImage,\n handleSelect,\n ]);\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (!shouldShowBody || matchingListsItems.length === 0) {\n return;\n }\n\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\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('searchbox-content__'),\n )?.children;\n\n if (newChildren && newChildren.length > 0) {\n const filteredChildren = Array.from(newChildren).filter(\n (child) => (child as HTMLElement).dataset.isgroupname !== 'true',\n );\n setFilteredChildrenArray(filteredChildren);\n\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 newElement.tabIndex = 0;\n newElement.focus();\n }\n } else if (e.key === 'Enter' && focusedIndex !== null) {\n if (filteredChildrenArray) {\n const element = filteredChildrenArray[focusedIndex];\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 handleSelect({\n id: id.replace('search-box-item__', ''),\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 return useMemo(\n () => (\n <StyledSearchBox ref={boxRef} key={`search-box-${uuid}`}>\n <div id={`search_box_input${uuid}`}>\n {tagInputSettings ? (\n <TagInput\n tags={tagInputSettings.tags}\n onChange={handleChange}\n onAdd={tagInputSettings.onAdd}\n onRemove={tagInputSettings.onRemove}\n onFocus={handleFocus}\n onBlur={handleBlur}\n placeholder={placeholder}\n leftElement={leftElement}\n shouldAllowMultiple={tagInputSettings.shouldAllowMultiple}\n shouldPreventEnter={tagInputSettings.shouldPreventEnter}\n />\n ) : (\n <Input\n isInvalid={isInvalid}\n ref={inputRef}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n placeholder={placeholder}\n onKeyDown={onKeyDown}\n leftElement={leftElement}\n rightElement={rightElement}\n value={value}\n />\n )}\n </div>\n {boxRef.current && (\n <DropdownBodyWrapper\n shouldShowDropdown={\n shouldShowBody &&\n matchingListsItems.length !== 0 &&\n (value.trim() !== '' || shouldShowContentOnEmptyInput)\n }\n onClose={handleClose}\n anchorElement={boxRef.current}\n maxHeight={300}\n container={container}\n >\n <SearchBoxBody\n key={`search-box-body-${uuid}`}\n filterButtons={filterButtons}\n selectedGroups={groups}\n height={height}\n ref={contentRef}\n onGroupSelect={handleFilterButtonsGroupSelect}\n shouldHideFilterButtons={shouldHideFilterButtons}\n >\n {content}\n </SearchBoxBody>\n </DropdownBodyWrapper>\n )}\n </StyledSearchBox>\n ),\n [\n container,\n content,\n filterButtons,\n groups,\n handleBlur,\n handleChange,\n handleClose,\n handleFocus,\n height,\n isInvalid,\n leftElement,\n matchingListsItems.length,\n onKeyDown,\n placeholder,\n rightElement,\n shouldHideFilterButtons,\n shouldShowBody,\n shouldShowContentOnEmptyInput,\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,8 +1,16 @@
|
|
|
1
1
|
import { ChangeEventHandler, FC, FocusEventHandler, KeyboardEventHandler } from 'react';
|
|
2
2
|
import type { ISearchBoxItem, ISearchBoxItems } from '../../types/searchBox';
|
|
3
|
+
import { TagInputProps } from '../tag-input/TagInput';
|
|
3
4
|
export type SearchBoxRef = {
|
|
4
5
|
clear: VoidFunction;
|
|
5
6
|
};
|
|
7
|
+
export interface TagInputSettings {
|
|
8
|
+
onAdd?: TagInputProps['onAdd'];
|
|
9
|
+
onRemove?: TagInputProps['onRemove'];
|
|
10
|
+
shouldAllowMultiple?: TagInputProps['shouldAllowMultiple'];
|
|
11
|
+
shouldPreventEnter?: TagInputProps['shouldPreventEnter'];
|
|
12
|
+
tags?: TagInputProps['tags'];
|
|
13
|
+
}
|
|
6
14
|
export type SearchBoxProps = {
|
|
7
15
|
/**
|
|
8
16
|
* The element where the content of the `ComboBox` should be rendered via React Portal.
|
|
@@ -72,6 +80,10 @@ export type SearchBoxProps = {
|
|
|
72
80
|
* Set an input for the search box - it is not an item of a list, just a string.
|
|
73
81
|
*/
|
|
74
82
|
presetValue?: string;
|
|
83
|
+
/**
|
|
84
|
+
* Settings for the TagInput.
|
|
85
|
+
*/
|
|
86
|
+
tagInputSettings?: TagInputSettings;
|
|
75
87
|
};
|
|
76
88
|
declare const SearchBox: FC<SearchBoxProps>;
|
|
77
89
|
export default SearchBox;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chayns-components/core",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.1252",
|
|
4
4
|
"description": "A set of beautiful React components for developing your own applications with chayns.",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"browserslist": [
|
|
@@ -85,5 +85,5 @@
|
|
|
85
85
|
"publishConfig": {
|
|
86
86
|
"access": "public"
|
|
87
87
|
},
|
|
88
|
-
"gitHead": "
|
|
88
|
+
"gitHead": "df4faacf5af150cfb686bc0d918b834b4004d950"
|
|
89
89
|
}
|