@activecollab/components 2.0.206 → 2.0.208
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/dist/cjs/components/Autocomplete/Autocomplete.js +211 -79
- package/dist/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
- package/dist/cjs/components/ComboBox/ComboBox.js +4 -2
- package/dist/cjs/components/ComboBox/ComboBox.js.map +1 -1
- package/dist/cjs/components/Display/DisplayCurrency.js.map +1 -1
- package/dist/cjs/components/Display/DisplayNumber.js +4 -2
- package/dist/cjs/components/Display/DisplayNumber.js.map +1 -1
- package/dist/cjs/components/Display/types.js.map +1 -1
- package/dist/cjs/components/Input/InputTime.js +4 -2
- package/dist/cjs/components/Input/InputTime.js.map +1 -1
- package/dist/cjs/components/Select/OptionGroup/OptionGroup.js +6 -16
- package/dist/cjs/components/Select/OptionGroup/OptionGroup.js.map +1 -1
- package/dist/cjs/components/Select/OptionGroup/Styles.js +1 -1
- package/dist/cjs/components/Select/OptionGroup/Styles.js.map +1 -1
- package/dist/cjs/components/Select/Select.js +4 -2
- package/dist/cjs/components/Select/Select.js.map +1 -1
- package/dist/cjs/hooks/useHighlightText.js +1 -0
- package/dist/cjs/hooks/useHighlightText.js.map +1 -1
- package/dist/esm/components/Autocomplete/Autocomplete.d.ts +6 -3
- package/dist/esm/components/Autocomplete/Autocomplete.d.ts.map +1 -1
- package/dist/esm/components/Autocomplete/Autocomplete.js +185 -58
- package/dist/esm/components/Autocomplete/Autocomplete.js.map +1 -1
- package/dist/esm/components/ComboBox/ComboBox.d.ts.map +1 -1
- package/dist/esm/components/ComboBox/ComboBox.js +3 -1
- package/dist/esm/components/ComboBox/ComboBox.js.map +1 -1
- package/dist/esm/components/Display/DisplayCurrency.d.ts +1 -1
- package/dist/esm/components/Display/DisplayCurrency.d.ts.map +1 -1
- package/dist/esm/components/Display/DisplayCurrency.js.map +1 -1
- package/dist/esm/components/Display/DisplayNumber.d.ts.map +1 -1
- package/dist/esm/components/Display/DisplayNumber.js +2 -1
- package/dist/esm/components/Display/DisplayNumber.js.map +1 -1
- package/dist/esm/components/Display/types.d.ts +1 -0
- package/dist/esm/components/Display/types.d.ts.map +1 -1
- package/dist/esm/components/Display/types.js.map +1 -1
- package/dist/esm/components/Input/InputTime.d.ts +1 -0
- package/dist/esm/components/Input/InputTime.d.ts.map +1 -1
- package/dist/esm/components/Input/InputTime.js +3 -1
- package/dist/esm/components/Input/InputTime.js.map +1 -1
- package/dist/esm/components/Select/OptionGroup/OptionGroup.d.ts.map +1 -1
- package/dist/esm/components/Select/OptionGroup/OptionGroup.js +6 -10
- package/dist/esm/components/Select/OptionGroup/OptionGroup.js.map +1 -1
- package/dist/esm/components/Select/OptionGroup/Styles.d.ts.map +1 -1
- package/dist/esm/components/Select/OptionGroup/Styles.js +1 -1
- package/dist/esm/components/Select/OptionGroup/Styles.js.map +1 -1
- package/dist/esm/components/Select/Select.d.ts +1 -0
- package/dist/esm/components/Select/Select.d.ts.map +1 -1
- package/dist/esm/components/Select/Select.js +3 -1
- package/dist/esm/components/Select/Select.js.map +1 -1
- package/dist/esm/hooks/useHighlightText.d.ts.map +1 -1
- package/dist/esm/hooks/useHighlightText.js +1 -0
- package/dist/esm/hooks/useHighlightText.js.map +1 -1
- package/dist/index.js +238 -106
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/package.json +2 -1
|
@@ -30,6 +30,7 @@ export const Select = _ref => {
|
|
|
30
30
|
startAdornment,
|
|
31
31
|
endAdornment,
|
|
32
32
|
focusInput = false,
|
|
33
|
+
disableVirtualization,
|
|
33
34
|
...prop
|
|
34
35
|
} = _ref;
|
|
35
36
|
if (disableSearch && (startAdornment || endAdornment)) {
|
|
@@ -181,7 +182,8 @@ export const Select = _ref => {
|
|
|
181
182
|
handleDefaultOptionChange: handleDefaultOptionChangeCallback,
|
|
182
183
|
type: type,
|
|
183
184
|
preselectDefaultValue: preselectDefaultValue,
|
|
184
|
-
keepSameOptionsOrder: keepSameOptionsOrder
|
|
185
|
+
keepSameOptionsOrder: keepSameOptionsOrder,
|
|
186
|
+
disableVirtualization: disableVirtualization
|
|
185
187
|
}))));
|
|
186
188
|
};
|
|
187
189
|
Select.displayName = "Select";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Select.js","names":["React","useCallback","useState","useMemo","useEffect","useRef","classNames","OptionContent","StyledSelectForm","StyledSelectInput","StyledCheckbox","StyledRadioButton","StyledStartAdornment","StyledEndAdornment","useForkRef","Autocomplete","isOptionGroup","Menu","Select","_ref","type","mode","target","options","selected","mixed","position","onChange","placeholder","emptyAction","disableSearch","forceCloseMenu","selectClassName","keepSameOptionsOrder","onSelectOpen","onSelectClose","renderOption","handleDefaultOptionChange","preselectDefaultValue","startAdornment","endAdornment","focusInput","prop","console","warn","childNode","elementRef","handleRef","Tag","formRef","open","setOpen","selectedOptions","Array","selectOptions","allOptionValues","reduce","acc","option","id","allGroupOptions","map","mixedOptions","length","removeFromMixedOptions","idsToRemove","current","filter","mixedOption","includes","isAllOptionsChecked","every","someOptionsChecked","some","_childNode$current","focus","handleChange","selectedValue","undefined","onClose","onOpen","props","menuClassName","onPopperOpen","_elementRef$current","className","handleEmptyAction","value","_formRef$current","reset","handleDefaultOptionChangeCallback","handleRenderOption","createElement","Fragment","imageUrl","image","color","textColor","name","additionalInfo","_extends","checked","ref","clearInputOnSelect","inputEl","displayName"],"sources":["../../../../src/components/Select/Select.tsx"],"sourcesContent":["import React, {\n FC,\n useCallback,\n useState,\n ReactElement,\n useMemo,\n useEffect,\n useRef,\n Ref,\n ReactNode,\n} from \"react\";\n\nimport { Placement } from \"@popperjs/core\";\nimport classNames from \"classnames\";\n\nimport { OptionContent } from \"./OptionContent/OptionContent\";\nimport {\n StyledSelectForm,\n StyledSelectInput,\n StyledCheckbox,\n StyledRadioButton,\n StyledStartAdornment,\n StyledEndAdornment,\n} from \"./Styles\";\nimport useForkRef from \"../../utils/useForkRef\";\nimport { Autocomplete, isOptionGroup } from \"../Autocomplete\";\nimport { IAutocompleteProps } from \"../Autocomplete/Autocomplete\";\nimport { Menu } from \"../Menu/Menu\";\nimport { IOptionItemProps } from \"../Select/Option\";\nimport { IOptionGroupProps } from \"../Select/OptionGroup\";\n\nexport interface ElementWithRef<T> extends ReactElement {\n ref?: Ref<T>;\n}\n\nexport interface ISelectProps\n extends Omit<\n IAutocompleteProps,\n | \"handleChange\"\n | \"inputEl\"\n | \"handleEmptyAction\"\n | \"clearInputOnSelect\"\n | \"mixedOptions\"\n > {\n /** Menu width mode */\n mode?: \"normal\" | \"wider\" | \"tiny\";\n /** Set select target element */\n target?: ElementWithRef<Element>;\n /** Set Select position */\n position?: Placement;\n /** onChange callback */\n onChange?: (e: (string | number)[] | string | number) => void;\n /** Placeholder for Select input */\n placeholder?: string;\n /** Function that triggers when empty is clicked */\n emptyAction?: (e: string | undefined) => void;\n /** Removes input from Select */\n disableSearch?: boolean;\n /** Close menu on select */\n forceCloseMenu?: boolean;\n /** Set select classNames */\n selectClassName?: string;\n /** Callback called when the Select menu is opened */\n onSelectOpen?: () => void;\n /** Callback called when the Select menu is closed */\n onSelectClose?: () => void;\n /** Node element on the left side */\n startAdornment?: ReactNode;\n /** Node element on the right side */\n endAdornment?: ReactNode;\n /** Focus search input on inline select */\n focusInput?: boolean;\n /** Mixed options values */\n mixed?: (string | number)[];\n}\n\nexport const Select: FC<ISelectProps> = ({\n type = \"single\",\n mode,\n target,\n options,\n selected = [],\n mixed = [],\n position = \"bottom-start\",\n onChange = () => null,\n placeholder,\n emptyAction = (): null => null,\n disableSearch = false,\n forceCloseMenu,\n selectClassName,\n keepSameOptionsOrder = false,\n onSelectOpen,\n onSelectClose,\n renderOption,\n handleDefaultOptionChange,\n preselectDefaultValue = type === \"single\",\n startAdornment,\n endAdornment,\n focusInput = false,\n ...prop\n}) => {\n if (disableSearch && (startAdornment || endAdornment)) {\n console.warn(\"Adornments are not visible when search bar is hidden\");\n }\n const childNode = useRef<HTMLInputElement | null>();\n const elementRef = useRef<HTMLInputElement | null>(null);\n\n const handleRef = useForkRef(childNode, elementRef);\n\n const Tag = !target ? \"div\" : Menu;\n const formRef = useRef<HTMLFormElement | null>(null);\n\n const [open, setOpen] = useState(false);\n\n const selectedOptions = useMemo(\n () => (selected instanceof Array ? selected : [selected]),\n [selected]\n );\n\n const selectOptions = useMemo(() => {\n if (!options) {\n return [];\n }\n return options;\n }, [options]);\n\n const allOptionValues = useMemo(() => {\n return selectOptions.reduce(\n (\n acc: (string | number)[],\n option: IOptionGroupProps | IOptionItemProps\n ) => {\n if (!isOptionGroup(option)) {\n return [...acc, option.id];\n }\n const allGroupOptions = option.options.map((option) => option.id);\n return [...acc, ...allGroupOptions];\n },\n []\n );\n }, [selectOptions]);\n\n const mixedOptions = useRef(type === \"multiple\" && mixed.length ? mixed : []);\n\n const removeFromMixedOptions = useCallback(\n (idsToRemove: (string | number)[]) => {\n mixedOptions.current = mixedOptions.current.filter(\n (mixedOption) => !idsToRemove.includes(mixedOption)\n );\n },\n []\n );\n\n const isAllOptionsChecked = useMemo(\n () => allOptionValues.every((option) => selectedOptions.includes(option)),\n [allOptionValues, selectedOptions]\n );\n\n const someOptionsChecked = useMemo(\n () => allOptionValues.some((option) => selectedOptions.includes(option)),\n [allOptionValues, selectedOptions]\n );\n\n useEffect(() => {\n if ((open && target) || (!target && focusInput)) {\n childNode?.current?.focus();\n }\n }, [focusInput, open, target]);\n\n const handleChange = useCallback(\n (selectedValue) => {\n if (forceCloseMenu) {\n if (typeof onSelectClose === \"function\") onSelectClose();\n setOpen(false);\n }\n if (\n selectedValue !== undefined &&\n selectedValue !== selected &&\n !(selectedValue instanceof Array && selectedValue.includes(undefined))\n ) {\n onChange(selectedValue);\n type === \"multiple\" &&\n mixedOptions.current.length &&\n removeFromMixedOptions(selectedValue);\n }\n },\n [\n forceCloseMenu,\n selected,\n onSelectClose,\n onChange,\n type,\n removeFromMixedOptions,\n ]\n );\n\n const onClose = useCallback(() => {\n setOpen(false);\n if (onSelectClose) {\n onSelectClose();\n }\n }, [onSelectClose]);\n\n const onOpen = useCallback(() => {\n setOpen(true);\n if (onSelectOpen) {\n onSelectOpen();\n }\n }, [onSelectOpen]);\n\n const props = useMemo(() => {\n if (target) {\n return {\n menuClassName: classNames(\"c-select\", selectClassName),\n onClose,\n onOpen,\n target,\n mode,\n open,\n position,\n onPopperOpen: () => elementRef?.current?.focus(),\n };\n }\n return { className: classNames(\"c-select\", selectClassName) };\n }, [target, selectClassName, onClose, onOpen, mode, open, position]);\n\n const handleEmptyAction = useCallback(\n (value) => {\n emptyAction(value);\n if (forceCloseMenu) {\n setOpen(false);\n }\n formRef.current?.reset();\n },\n [emptyAction, forceCloseMenu]\n );\n\n const handleDefaultOptionChangeCallback = useCallback(() => {\n if (type === \"multiple\") {\n if (selectedOptions.length === allOptionValues.length) {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange([]);\n }\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange(allOptionValues);\n }\n }\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange(\"\");\n }\n }\n if (forceCloseMenu) {\n setOpen(false);\n }\n }, [\n onChange,\n type,\n forceCloseMenu,\n selectedOptions.length,\n allOptionValues,\n handleDefaultOptionChange,\n ]);\n\n const handleRenderOption = useCallback(\n (option, props) => {\n if (typeof renderOption === \"function\") {\n return renderOption(option, props);\n }\n return (\n <>\n <OptionContent\n imageUrl={option.image}\n color={option.color}\n textColor={option.textColor}\n name={option.name}\n additionalInfo={option.additionalInfo}\n />\n {option.id === null ? (\n type === \"multiple\" ? (\n <StyledCheckbox\n checked={isAllOptionsChecked}\n mixed={someOptionsChecked && !isAllOptionsChecked}\n {...props}\n />\n ) : (\n <StyledRadioButton\n checked={selectedOptions.length < 1 || !selectedOptions[0]}\n {...props}\n />\n )\n ) : type === \"multiple\" ? (\n <StyledCheckbox\n mixed={mixedOptions.current.includes(option.id)}\n {...props}\n />\n ) : (\n <StyledRadioButton {...props} />\n )}\n </>\n );\n },\n [\n isAllOptionsChecked,\n renderOption,\n type,\n someOptionsChecked,\n selectedOptions,\n ]\n );\n\n return (\n <Tag {...props}>\n <div>\n {!disableSearch ? (\n <StyledSelectForm ref={formRef}>\n {startAdornment ? (\n <StyledStartAdornment>{startAdornment}</StyledStartAdornment>\n ) : null}\n <StyledSelectInput ref={handleRef} placeholder={placeholder} />\n {endAdornment ? (\n <StyledEndAdornment>{endAdornment}</StyledEndAdornment>\n ) : null}\n </StyledSelectForm>\n ) : null}\n <Autocomplete\n {...prop}\n clearInputOnSelect\n inputEl={childNode}\n handleEmptyAction={handleEmptyAction}\n selected={selected}\n handleChange={handleChange}\n renderOption={handleRenderOption}\n options={options}\n mixedOptions={mixedOptions.current}\n handleDefaultOptionChange={handleDefaultOptionChangeCallback}\n type={type}\n preselectDefaultValue={preselectDefaultValue}\n keepSameOptionsOrder={keepSameOptionsOrder}\n />\n </div>\n </Tag>\n );\n};\n\nSelect.displayName = \"Select\";\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Select.js","names":["React","useCallback","useState","useMemo","useEffect","useRef","classNames","OptionContent","StyledSelectForm","StyledSelectInput","StyledCheckbox","StyledRadioButton","StyledStartAdornment","StyledEndAdornment","useForkRef","Autocomplete","isOptionGroup","Menu","Select","_ref","type","mode","target","options","selected","mixed","position","onChange","placeholder","emptyAction","disableSearch","forceCloseMenu","selectClassName","keepSameOptionsOrder","onSelectOpen","onSelectClose","renderOption","handleDefaultOptionChange","preselectDefaultValue","startAdornment","endAdornment","focusInput","disableVirtualization","prop","console","warn","childNode","elementRef","handleRef","Tag","formRef","open","setOpen","selectedOptions","Array","selectOptions","allOptionValues","reduce","acc","option","id","allGroupOptions","map","mixedOptions","length","removeFromMixedOptions","idsToRemove","current","filter","mixedOption","includes","isAllOptionsChecked","every","someOptionsChecked","some","_childNode$current","focus","handleChange","selectedValue","undefined","onClose","onOpen","props","menuClassName","onPopperOpen","_elementRef$current","className","handleEmptyAction","value","_formRef$current","reset","handleDefaultOptionChangeCallback","handleRenderOption","createElement","Fragment","imageUrl","image","color","textColor","name","additionalInfo","_extends","checked","ref","clearInputOnSelect","inputEl","displayName"],"sources":["../../../../src/components/Select/Select.tsx"],"sourcesContent":["import React, {\n FC,\n useCallback,\n useState,\n ReactElement,\n useMemo,\n useEffect,\n useRef,\n Ref,\n ReactNode,\n} from \"react\";\n\nimport { Placement } from \"@popperjs/core\";\nimport classNames from \"classnames\";\n\nimport { OptionContent } from \"./OptionContent/OptionContent\";\nimport {\n StyledSelectForm,\n StyledSelectInput,\n StyledCheckbox,\n StyledRadioButton,\n StyledStartAdornment,\n StyledEndAdornment,\n} from \"./Styles\";\nimport useForkRef from \"../../utils/useForkRef\";\nimport { Autocomplete, isOptionGroup } from \"../Autocomplete\";\nimport { IAutocompleteProps } from \"../Autocomplete/Autocomplete\";\nimport { Menu } from \"../Menu/Menu\";\nimport { IOptionItemProps } from \"../Select/Option\";\nimport { IOptionGroupProps } from \"../Select/OptionGroup\";\n\nexport interface ElementWithRef<T> extends ReactElement {\n ref?: Ref<T>;\n}\n\nexport interface ISelectProps\n extends Omit<\n IAutocompleteProps,\n | \"handleChange\"\n | \"inputEl\"\n | \"handleEmptyAction\"\n | \"clearInputOnSelect\"\n | \"mixedOptions\"\n > {\n /** Menu width mode */\n mode?: \"normal\" | \"wider\" | \"tiny\";\n /** Set select target element */\n target?: ElementWithRef<Element>;\n /** Set Select position */\n position?: Placement;\n /** onChange callback */\n onChange?: (e: (string | number)[] | string | number) => void;\n /** Placeholder for Select input */\n placeholder?: string;\n /** Function that triggers when empty is clicked */\n emptyAction?: (e: string | undefined) => void;\n /** Removes input from Select */\n disableSearch?: boolean;\n /** Close menu on select */\n forceCloseMenu?: boolean;\n /** Set select classNames */\n selectClassName?: string;\n /** Callback called when the Select menu is opened */\n onSelectOpen?: () => void;\n /** Callback called when the Select menu is closed */\n onSelectClose?: () => void;\n /** Node element on the left side */\n startAdornment?: ReactNode;\n /** Node element on the right side */\n endAdornment?: ReactNode;\n /** Focus search input on inline select */\n focusInput?: boolean;\n /** Mixed options values */\n mixed?: (string | number)[];\n disableVirtualization?: boolean;\n}\n\nexport const Select: FC<ISelectProps> = ({\n type = \"single\",\n mode,\n target,\n options,\n selected = [],\n mixed = [],\n position = \"bottom-start\",\n onChange = () => null,\n placeholder,\n emptyAction = (): null => null,\n disableSearch = false,\n forceCloseMenu,\n selectClassName,\n keepSameOptionsOrder = false,\n onSelectOpen,\n onSelectClose,\n renderOption,\n handleDefaultOptionChange,\n preselectDefaultValue = type === \"single\",\n startAdornment,\n endAdornment,\n focusInput = false,\n disableVirtualization,\n ...prop\n}) => {\n if (disableSearch && (startAdornment || endAdornment)) {\n console.warn(\"Adornments are not visible when search bar is hidden\");\n }\n const childNode = useRef<HTMLInputElement | null>();\n const elementRef = useRef<HTMLInputElement | null>(null);\n\n const handleRef = useForkRef(childNode, elementRef);\n\n const Tag = !target ? \"div\" : Menu;\n const formRef = useRef<HTMLFormElement | null>(null);\n\n const [open, setOpen] = useState(false);\n\n const selectedOptions = useMemo(\n () => (selected instanceof Array ? selected : [selected]),\n [selected]\n );\n\n const selectOptions = useMemo(() => {\n if (!options) {\n return [];\n }\n return options;\n }, [options]);\n\n const allOptionValues = useMemo(() => {\n return selectOptions.reduce(\n (\n acc: (string | number)[],\n option: IOptionGroupProps | IOptionItemProps\n ) => {\n if (!isOptionGroup(option)) {\n return [...acc, option.id];\n }\n const allGroupOptions = option.options.map((option) => option.id);\n return [...acc, ...allGroupOptions];\n },\n []\n );\n }, [selectOptions]);\n\n const mixedOptions = useRef(type === \"multiple\" && mixed.length ? mixed : []);\n\n const removeFromMixedOptions = useCallback(\n (idsToRemove: (string | number)[]) => {\n mixedOptions.current = mixedOptions.current.filter(\n (mixedOption) => !idsToRemove.includes(mixedOption)\n );\n },\n []\n );\n\n const isAllOptionsChecked = useMemo(\n () => allOptionValues.every((option) => selectedOptions.includes(option)),\n [allOptionValues, selectedOptions]\n );\n\n const someOptionsChecked = useMemo(\n () => allOptionValues.some((option) => selectedOptions.includes(option)),\n [allOptionValues, selectedOptions]\n );\n\n useEffect(() => {\n if ((open && target) || (!target && focusInput)) {\n childNode?.current?.focus();\n }\n }, [focusInput, open, target]);\n\n const handleChange = useCallback(\n (selectedValue) => {\n if (forceCloseMenu) {\n if (typeof onSelectClose === \"function\") onSelectClose();\n setOpen(false);\n }\n if (\n selectedValue !== undefined &&\n selectedValue !== selected &&\n !(selectedValue instanceof Array && selectedValue.includes(undefined))\n ) {\n onChange(selectedValue);\n type === \"multiple\" &&\n mixedOptions.current.length &&\n removeFromMixedOptions(selectedValue);\n }\n },\n [\n forceCloseMenu,\n selected,\n onSelectClose,\n onChange,\n type,\n removeFromMixedOptions,\n ]\n );\n\n const onClose = useCallback(() => {\n setOpen(false);\n if (onSelectClose) {\n onSelectClose();\n }\n }, [onSelectClose]);\n\n const onOpen = useCallback(() => {\n setOpen(true);\n if (onSelectOpen) {\n onSelectOpen();\n }\n }, [onSelectOpen]);\n\n const props = useMemo(() => {\n if (target) {\n return {\n menuClassName: classNames(\"c-select\", selectClassName),\n onClose,\n onOpen,\n target,\n mode,\n open,\n position,\n onPopperOpen: () => elementRef?.current?.focus(),\n };\n }\n return { className: classNames(\"c-select\", selectClassName) };\n }, [target, selectClassName, onClose, onOpen, mode, open, position]);\n\n const handleEmptyAction = useCallback(\n (value) => {\n emptyAction(value);\n if (forceCloseMenu) {\n setOpen(false);\n }\n formRef.current?.reset();\n },\n [emptyAction, forceCloseMenu]\n );\n\n const handleDefaultOptionChangeCallback = useCallback(() => {\n if (type === \"multiple\") {\n if (selectedOptions.length === allOptionValues.length) {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange([]);\n }\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange(allOptionValues);\n }\n }\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange(\"\");\n }\n }\n if (forceCloseMenu) {\n setOpen(false);\n }\n }, [\n onChange,\n type,\n forceCloseMenu,\n selectedOptions.length,\n allOptionValues,\n handleDefaultOptionChange,\n ]);\n\n const handleRenderOption = useCallback(\n (option, props) => {\n if (typeof renderOption === \"function\") {\n return renderOption(option, props);\n }\n return (\n <>\n <OptionContent\n imageUrl={option.image}\n color={option.color}\n textColor={option.textColor}\n name={option.name}\n additionalInfo={option.additionalInfo}\n />\n {option.id === null ? (\n type === \"multiple\" ? (\n <StyledCheckbox\n checked={isAllOptionsChecked}\n mixed={someOptionsChecked && !isAllOptionsChecked}\n {...props}\n />\n ) : (\n <StyledRadioButton\n checked={selectedOptions.length < 1 || !selectedOptions[0]}\n {...props}\n />\n )\n ) : type === \"multiple\" ? (\n <StyledCheckbox\n mixed={mixedOptions.current.includes(option.id)}\n {...props}\n />\n ) : (\n <StyledRadioButton {...props} />\n )}\n </>\n );\n },\n [\n isAllOptionsChecked,\n renderOption,\n type,\n someOptionsChecked,\n selectedOptions,\n ]\n );\n\n return (\n <Tag {...props}>\n <div>\n {!disableSearch ? (\n <StyledSelectForm ref={formRef}>\n {startAdornment ? (\n <StyledStartAdornment>{startAdornment}</StyledStartAdornment>\n ) : null}\n <StyledSelectInput ref={handleRef} placeholder={placeholder} />\n {endAdornment ? (\n <StyledEndAdornment>{endAdornment}</StyledEndAdornment>\n ) : null}\n </StyledSelectForm>\n ) : null}\n <Autocomplete\n {...prop}\n clearInputOnSelect\n inputEl={childNode}\n handleEmptyAction={handleEmptyAction}\n selected={selected}\n handleChange={handleChange}\n renderOption={handleRenderOption}\n options={options}\n mixedOptions={mixedOptions.current}\n handleDefaultOptionChange={handleDefaultOptionChangeCallback}\n type={type}\n preselectDefaultValue={preselectDefaultValue}\n keepSameOptionsOrder={keepSameOptionsOrder}\n disableVirtualization={disableVirtualization}\n />\n </div>\n </Tag>\n );\n};\n\nSelect.displayName = \"Select\";\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useHighlightText.d.ts","sourceRoot":"","sources":["../../../src/hooks/useHighlightText.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAY,SAAS,EAAE,MAAM,OAAO,CAAC;AAUnD,QAAA,MAAM,gBAAgB,SACd,MAAM,YACF,MAAM,0BAEf,
|
|
1
|
+
{"version":3,"file":"useHighlightText.d.ts","sourceRoot":"","sources":["../../../src/hooks/useHighlightText.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAY,SAAS,EAAE,MAAM,OAAO,CAAC;AAUnD,QAAA,MAAM,gBAAgB,SACd,MAAM,YACF,MAAM,0BAEf,SAuCF,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
|
|
@@ -11,6 +11,7 @@ const useHighlightText = function (text, searchBy, matchCase) {
|
|
|
11
11
|
}
|
|
12
12
|
let textComparator = text;
|
|
13
13
|
let searchByComparator = searchBy;
|
|
14
|
+
if (!text) return;
|
|
14
15
|
if (!matchCase) {
|
|
15
16
|
textComparator = text.toLowerCase();
|
|
16
17
|
searchByComparator = searchBy.toLowerCase();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useHighlightText.js","names":["React","Fragment","styled","StyledHiglightedText","span","withConfig","displayName","componentId","useHighlightText","text","searchBy","matchCase","textComparator","searchByComparator","toLowerCase","indexOf","beforeHighlighted","substring","highLighted","length","afterHighlighted","createElement","replace","className"],"sources":["../../../src/hooks/useHighlightText.tsx"],"sourcesContent":["import React, { Fragment, ReactNode } from \"react\";\n\nimport styled from \"styled-components\";\n\nconst StyledHiglightedText = styled.span`\n background-color: var(--color-primary-200);\n`;\n\nStyledHiglightedText.displayName = \"StyledHiglightedText\";\n\nconst useHighlightText = (\n text: string,\n searchBy: string,\n matchCase = false\n): ReactNode => {\n let textComparator = text;\n let searchByComparator = searchBy;\n\n if (!matchCase) {\n textComparator = text.toLowerCase();\n searchByComparator = searchBy.toLowerCase();\n }\n\n if (\n searchBy &&\n textComparator &&\n textComparator.indexOf(searchByComparator) >= 0\n ) {\n const beforeHighlighted = text.substring(\n 0,\n textComparator.indexOf(searchByComparator)\n );\n const highLighted = text.substring(\n textComparator.indexOf(searchByComparator),\n textComparator.indexOf(searchByComparator) + searchBy.length\n );\n const afterHighlighted = text.substring(\n textComparator.indexOf(searchByComparator) + searchBy.length\n );\n\n return (\n <Fragment>\n {beforeHighlighted.replace(/ /g, \"\\u00a0\")}\n <StyledHiglightedText className=\"c-option--text__highlight\">\n {highLighted.replace(/ /g, \"\\u00a0\")}\n </StyledHiglightedText>\n {afterHighlighted.replace(/ /g, \"\\u00a0\")}\n </Fragment>\n );\n }\n\n return text;\n};\n\nexport default useHighlightText;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,QAAQ,QAAmB,OAAO;AAElD,OAAOC,MAAM,MAAM,mBAAmB;AAEtC,MAAMC,oBAAoB,GAAGD,MAAM,CAACE,IAAI,CAAAC,UAAA;EAAAC,WAAA;EAAAC,WAAA;AAAA,kDAEvC;AAEDJ,oBAAoB,CAACG,WAAW,GAAG,sBAAsB;AAEzD,MAAME,gBAAgB,GAAG,SAAAA,CACvBC,IAAY,EACZC,QAAgB,EAChBC,SAAS,EACK;EAAA,IADdA,SAAS;IAATA,SAAS,GAAG,KAAK;EAAA;EAEjB,IAAIC,cAAc,GAAGH,IAAI;EACzB,IAAII,kBAAkB,GAAGH,QAAQ;
|
|
1
|
+
{"version":3,"file":"useHighlightText.js","names":["React","Fragment","styled","StyledHiglightedText","span","withConfig","displayName","componentId","useHighlightText","text","searchBy","matchCase","textComparator","searchByComparator","toLowerCase","indexOf","beforeHighlighted","substring","highLighted","length","afterHighlighted","createElement","replace","className"],"sources":["../../../src/hooks/useHighlightText.tsx"],"sourcesContent":["import React, { Fragment, ReactNode } from \"react\";\n\nimport styled from \"styled-components\";\n\nconst StyledHiglightedText = styled.span`\n background-color: var(--color-primary-200);\n`;\n\nStyledHiglightedText.displayName = \"StyledHiglightedText\";\n\nconst useHighlightText = (\n text: string,\n searchBy: string,\n matchCase = false\n): ReactNode => {\n let textComparator = text;\n let searchByComparator = searchBy;\n if (!text) return;\n\n if (!matchCase) {\n textComparator = text.toLowerCase();\n searchByComparator = searchBy.toLowerCase();\n }\n\n if (\n searchBy &&\n textComparator &&\n textComparator.indexOf(searchByComparator) >= 0\n ) {\n const beforeHighlighted = text.substring(\n 0,\n textComparator.indexOf(searchByComparator)\n );\n const highLighted = text.substring(\n textComparator.indexOf(searchByComparator),\n textComparator.indexOf(searchByComparator) + searchBy.length\n );\n const afterHighlighted = text.substring(\n textComparator.indexOf(searchByComparator) + searchBy.length\n );\n\n return (\n <Fragment>\n {beforeHighlighted.replace(/ /g, \"\\u00a0\")}\n <StyledHiglightedText className=\"c-option--text__highlight\">\n {highLighted.replace(/ /g, \"\\u00a0\")}\n </StyledHiglightedText>\n {afterHighlighted.replace(/ /g, \"\\u00a0\")}\n </Fragment>\n );\n }\n\n return text;\n};\n\nexport default useHighlightText;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,QAAQ,QAAmB,OAAO;AAElD,OAAOC,MAAM,MAAM,mBAAmB;AAEtC,MAAMC,oBAAoB,GAAGD,MAAM,CAACE,IAAI,CAAAC,UAAA;EAAAC,WAAA;EAAAC,WAAA;AAAA,kDAEvC;AAEDJ,oBAAoB,CAACG,WAAW,GAAG,sBAAsB;AAEzD,MAAME,gBAAgB,GAAG,SAAAA,CACvBC,IAAY,EACZC,QAAgB,EAChBC,SAAS,EACK;EAAA,IADdA,SAAS;IAATA,SAAS,GAAG,KAAK;EAAA;EAEjB,IAAIC,cAAc,GAAGH,IAAI;EACzB,IAAII,kBAAkB,GAAGH,QAAQ;EACjC,IAAI,CAACD,IAAI,EAAE;EAEX,IAAI,CAACE,SAAS,EAAE;IACdC,cAAc,GAAGH,IAAI,CAACK,WAAW,CAAC,CAAC;IACnCD,kBAAkB,GAAGH,QAAQ,CAACI,WAAW,CAAC,CAAC;EAC7C;EAEA,IACEJ,QAAQ,IACRE,cAAc,IACdA,cAAc,CAACG,OAAO,CAACF,kBAAkB,CAAC,IAAI,CAAC,EAC/C;IACA,MAAMG,iBAAiB,GAAGP,IAAI,CAACQ,SAAS,CACtC,CAAC,EACDL,cAAc,CAACG,OAAO,CAACF,kBAAkB,CAC3C,CAAC;IACD,MAAMK,WAAW,GAAGT,IAAI,CAACQ,SAAS,CAChCL,cAAc,CAACG,OAAO,CAACF,kBAAkB,CAAC,EAC1CD,cAAc,CAACG,OAAO,CAACF,kBAAkB,CAAC,GAAGH,QAAQ,CAACS,MACxD,CAAC;IACD,MAAMC,gBAAgB,GAAGX,IAAI,CAACQ,SAAS,CACrCL,cAAc,CAACG,OAAO,CAACF,kBAAkB,CAAC,GAAGH,QAAQ,CAACS,MACxD,CAAC;IAED,oBACEnB,KAAA,CAAAqB,aAAA,CAACpB,QAAQ,QACNe,iBAAiB,CAACM,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,eAC1CtB,KAAA,CAAAqB,aAAA,CAAClB,oBAAoB;MAACoB,SAAS,EAAC;IAA2B,GACxDL,WAAW,CAACI,OAAO,CAAC,IAAI,EAAE,QAAQ,CACf,CAAC,EACtBF,gBAAgB,CAACE,OAAO,CAAC,IAAI,EAAE,QAAQ,CAChC,CAAC;EAEf;EAEA,OAAOb,IAAI;AACb,CAAC;AAED,eAAeD,gBAAgB"}
|