@activecollab/components 1.0.147 → 1.0.148
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/Autocomplete/Autocomplete.js +9 -9
- package/dist/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
- package/dist/cjs/components/Chip/Chip.js +4 -2
- package/dist/cjs/components/Chip/Chip.js.map +1 -1
- package/dist/cjs/components/Chip/Styles.js +2 -6
- package/dist/cjs/components/Chip/Styles.js.map +1 -1
- package/dist/cjs/components/ComboBox/ComboBox.js +199 -18
- package/dist/cjs/components/ComboBox/ComboBox.js.map +1 -1
- package/dist/cjs/components/ComboBox/Styles.js +4 -4
- package/dist/cjs/components/ComboBox/Styles.js.map +1 -1
- package/dist/cjs/components/Input/Styles.js +3 -1
- package/dist/cjs/components/Input/Styles.js.map +1 -1
- package/dist/cjs/components/Loaders/Spinner/Styles.js +1 -1
- package/dist/cjs/components/Loaders/Spinner/Styles.js.map +1 -1
- package/dist/cjs/components/Select/Select.js +1 -5
- package/dist/cjs/components/Select/Select.js.map +1 -1
- package/dist/cjs/hooks/useOnClickOutside.js +35 -0
- package/dist/cjs/hooks/useOnClickOutside.js.map +1 -0
- package/dist/esm/components/Autocomplete/Autocomplete.d.ts +1 -0
- package/dist/esm/components/Autocomplete/Autocomplete.d.ts.map +1 -1
- package/dist/esm/components/Autocomplete/Autocomplete.js +7 -9
- package/dist/esm/components/Autocomplete/Autocomplete.js.map +1 -1
- package/dist/esm/components/Chip/Chip.d.ts.map +1 -1
- package/dist/esm/components/Chip/Chip.js +4 -2
- package/dist/esm/components/Chip/Chip.js.map +1 -1
- package/dist/esm/components/Chip/Styles.d.ts.map +1 -1
- package/dist/esm/components/Chip/Styles.js +2 -6
- package/dist/esm/components/Chip/Styles.js.map +1 -1
- package/dist/esm/components/ComboBox/ComboBox.d.ts +8 -4
- package/dist/esm/components/ComboBox/ComboBox.d.ts.map +1 -1
- package/dist/esm/components/ComboBox/ComboBox.js +191 -19
- package/dist/esm/components/ComboBox/ComboBox.js.map +1 -1
- package/dist/esm/components/ComboBox/Styles.d.ts.map +1 -1
- package/dist/esm/components/ComboBox/Styles.js +3 -4
- package/dist/esm/components/ComboBox/Styles.js.map +1 -1
- package/dist/esm/components/Input/Styles.d.ts +1 -0
- package/dist/esm/components/Input/Styles.d.ts.map +1 -1
- package/dist/esm/components/Input/Styles.js +3 -1
- package/dist/esm/components/Input/Styles.js.map +1 -1
- package/dist/esm/components/Loaders/Spinner/Styles.d.ts.map +1 -1
- package/dist/esm/components/Loaders/Spinner/Styles.js +1 -1
- package/dist/esm/components/Loaders/Spinner/Styles.js.map +1 -1
- package/dist/esm/components/Select/Select.d.ts.map +1 -1
- package/dist/esm/components/Select/Select.js +2 -6
- package/dist/esm/components/Select/Select.js.map +1 -1
- package/dist/esm/hooks/useOnClickOutside.d.ts +3 -0
- package/dist/esm/hooks/useOnClickOutside.d.ts.map +1 -0
- package/dist/esm/hooks/useOnClickOutside.js +27 -0
- package/dist/esm/hooks/useOnClickOutside.js.map +1 -0
- package/dist/index.js +420 -238
- 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 +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/ComboBox/ComboBox.tsx"],"names":["ComboBox","options","selected","loading","loadingText","onChange","placeholder","handleEmptyAction","disabled","size","invalid","prop","timeoutRef","selectedName","value","map","v","find","q","id","name","setValue","handleOnChange","e","target","childNode","setChildNode","elementRef","handleRef","open","setOpen","handleOnKeyDown","key","stopPropagation","focus","blur","emptyAction","handleChange","selectedValue","onOpen","handleRenderOption","option","props","image","color","textColor","handleDeselect","handleMouseDown","preventDefault","comboBoxRef","handleBlur","current","setTimeout","clearTimeout","zIndex","clientWidth","displayName"],"mappings":"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","sourcesContent":["import React, {\n FC,\n useCallback,\n useState,\n useEffect,\n useRef,\n useMemo,\n} from \"react\";\nimport { RadioButton } from \"../RadioButton\";\nimport { Autocomplete } from \"../Autocomplete\";\nimport { Button } from \"../Button/Button\";\nimport { IAutocompleteProps } from \"../Autocomplete/Autocomplete\";\nimport useForkRef from \"../../utils/useForkRef\";\nimport { Popper } from \"../Popper\";\nimport { IOptionGroupProps } from \"../Select\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { SpinnerLoader } from \"../Loaders/Spinner/SpinnerLoader\";\nimport { OptionContent } from \"../Select/OptionContent/OptionContent\";\nimport {\n StyledComboBoxCloseSmallIcon,\n StyledComboBoxCollapseExpandSingleIcon,\n StyledComboBoxInput,\n StyledComboBoxList,\n} from \"./Styles\";\nimport { InputSize } from \"../Input/types\";\nimport { InputAdornment } from \"../Input/InputAdornment\";\n\nexport interface IComboBoxProps {\n /** Set selected items */\n selected?: string | number;\n /** Set combobox in to loading state */\n loading?: boolean;\n /** Text to display while in loading state */\n loadingText?: string;\n /** onChange callback */\n onChange?: (e: string | number) => void;\n /** Placeholder for Select input */\n placeholder?: string;\n /** disable Input element */\n disabled?: boolean;\n /** Combobox size */\n size?: InputSize;\n /** Invalid state */\n invalid?: boolean;\n}\n\nexport const ComboBox: FC<\n IComboBoxProps & Omit<IAutocompleteProps, keyof IComboBoxProps>\n> = ({\n options = [],\n selected,\n loading = false,\n loadingText,\n onChange,\n placeholder,\n handleEmptyAction,\n disabled = false,\n size = \"regular\",\n invalid = false,\n ...prop\n}) => {\n const timeoutRef = useRef<NodeJS.Timeout>();\n const selectedName = useMemo(() => {\n let value = \"\";\n if (!selected) {\n return value;\n }\n options.map((v) => {\n if ((v as IOptionGroupProps)?.options) {\n return (v as IOptionGroupProps).options.find((q) => {\n if (q.id === selected) {\n value = q.name;\n return;\n }\n });\n } else {\n if (v.id === selected) {\n value = v.name;\n return;\n }\n }\n });\n return value;\n }, [options, selected]);\n const [value, setValue] = useState(selectedName);\n const handleOnChange = useCallback((e) => setValue(e.target.value), []);\n const [childNode, setChildNode] = useState<HTMLInputElement | null>();\n const elementRef = useRef<HTMLInputElement | null>(null);\n const handleRef = useForkRef(setChildNode, elementRef);\n\n const [open, setOpen] = useState(false);\n\n const handleOnKeyDown = useCallback(\n (e) => {\n if (e.key === \"Escape\" && open) {\n setOpen(false);\n setValue(selectedName);\n e.stopPropagation();\n }\n },\n [open, selectedName]\n );\n\n useEffect(() => {\n open && childNode?.focus();\n !open && childNode?.blur();\n }, [childNode, open]);\n\n useEffect(() => {\n setValue(selectedName);\n }, [selectedName]);\n\n const emptyAction = useCallback(\n (v) => {\n handleEmptyAction?.(v);\n setOpen(false);\n },\n [handleEmptyAction]\n );\n\n const handleChange = useCallback(\n (selectedValue) => {\n if (selectedValue) {\n onChange?.(selectedValue);\n setOpen(false);\n }\n },\n [onChange]\n );\n\n const onOpen = useCallback(() => {\n if (!disabled) {\n setOpen(true);\n }\n }, [disabled]);\n\n const handleRenderOption = useCallback((option, props) => {\n return (\n <>\n <OptionContent\n imageUrl={option.image}\n color={option.color}\n textColor={option.textColor}\n name={option.name}\n />\n <RadioButton {...props} />\n </>\n );\n }, []);\n\n const handleDeselect = useCallback(\n (e) => {\n e.stopPropagation();\n onChange?.(\"\");\n setOpen(false);\n },\n [onChange]\n );\n\n const handleMouseDown = useCallback((e) => {\n e.preventDefault();\n }, []);\n\n const comboBoxRef = useRef<HTMLDivElement | null>(null);\n\n const handleBlur = useCallback(() => {\n setValue(selectedName);\n timeoutRef.current = setTimeout(() => {\n setOpen(false);\n }, 200);\n }, [selectedName]);\n\n useEffect(() => {\n return () => {\n timeoutRef.current && clearTimeout(timeoutRef.current);\n };\n }, []);\n\n return (\n <>\n <StyledComboBoxInput\n className=\"c-combo-box\"\n onBlur={handleBlur}\n onFocus={onOpen}\n wrapRef={comboBoxRef}\n ref={handleRef}\n value={loading && loadingText ? loadingText : value}\n onKeyDown={handleOnKeyDown}\n onChange={handleOnChange}\n placeholder={placeholder}\n disabled={disabled}\n size={size}\n invalid={invalid}\n $loading={loading}\n endAdornment={\n !disabled ? (\n <InputAdornment disablePointerEvents={disabled}>\n {loading ? (\n <SpinnerLoader />\n ) : selected ? (\n <Button\n onMouseDown={handleMouseDown}\n onClick={handleDeselect}\n variant=\"text gray\"\n size=\"small\"\n >\n <StyledComboBoxCloseSmallIcon />\n </Button>\n ) : null}\n <StyledComboBoxCollapseExpandSingleIcon $open={open} />\n </InputAdornment>\n ) : null\n }\n />\n {!disabled ? (\n <Popper\n anchorEl={comboBoxRef.current}\n open={open}\n placement=\"bottom\"\n style={{ zIndex: 10 }}\n strategy={\"fixed\"}\n >\n <RemoveScroll noIsolation allowPinchZoom>\n <StyledComboBoxList $width={comboBoxRef.current?.clientWidth}>\n <Autocomplete\n {...prop}\n inputEl={childNode}\n selected={selected}\n handleChange={handleChange}\n renderOption={handleRenderOption}\n options={options}\n type=\"single\"\n handleEmptyAction={emptyAction}\n />\n </StyledComboBoxList>\n </RemoveScroll>\n </Popper>\n ) : null}\n </>\n );\n};\n\nComboBox.displayName = \"ComboBox\";\n"],"file":"ComboBox.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/ComboBox/ComboBox.tsx"],"names":["ComboBox","options","selected","loading","loadingText","onChange","placeholder","handleEmptyAction","disabled","size","invalid","type","renderChip","forceCloseMenu","renderOption","limitChips","hiddenNumberText","prop","selectedName","value","map","v","find","q","id","name","setValue","handleOnChange","e","target","childNode","setChildNode","elementRef","handleRef","wrapperRef","chipWrapper","open","setOpen","handleOnKeyDown","key","stopPropagation","focus","blur","emptyAction","handleChange","selectedValue","onOpen","handleRenderOption","option","props","image","color","textColor","handleDeselect","handleMouseDown","preventDefault","comboBoxRef","handleBlur","renderChipAdornment","index","avatarProps","className","leftAdornment","undefined","Array","isArray","includes","newSelected","filter","item","autoSize","length","startAdornment","elements","total","forEach","isGrouped","push","groupedOptions","o","_index","hidden","splice","showXIcon","hasSelected","current","zIndex","clientWidth","displayName"],"mappings":"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","sourcesContent":["import React, {\n FC,\n useCallback,\n useState,\n useEffect,\n useRef,\n useMemo,\n Fragment,\n} from \"react\";\nimport { RadioButton } from \"../RadioButton\";\nimport { Autocomplete } from \"../Autocomplete\";\nimport { Button } from \"../Button/Button\";\nimport {\n IAutocompleteProps,\n isOptionGroup,\n} from \"../Autocomplete/Autocomplete\";\nimport useForkRef from \"../../utils/useForkRef\";\nimport { Popper } from \"../Popper\";\nimport { IOptionGroupProps, IOptionItemProps } from \"../Select\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { SpinnerLoader } from \"../Loaders/Spinner/SpinnerLoader\";\nimport { OptionContent } from \"../Select/OptionContent/OptionContent\";\nimport {\n StyledComboBoxCloseSmallIcon,\n StyledComboBoxCollapseExpandSingleIcon,\n StyledComboBoxInput,\n StyledComboBoxList,\n} from \"./Styles\";\nimport { InputSize } from \"../Input/types\";\nimport { InputAdornment } from \"../Input/InputAdornment\";\nimport { Checkbox } from \"../Checkbox\";\nimport { Chip } from \"../Chip\";\nimport { StyledInputWrapper, StyledInput } from \"../Input/Styles\";\nimport classNames from \"classnames\";\nimport { Typography } from \"../Typography/Typography\";\nimport { Trigger } from \"../Trigger\";\nimport { useOnClickOutside } from \"../../hooks/useOnClickOutside\";\nimport { Avatar, IAvatar } from \"../Avatar\";\n\nexport interface IComboBoxProps\n extends Omit<IAutocompleteProps, \"handleChange\" | \"inputEl\"> {\n /** Set combobox in to loading state */\n loading?: boolean;\n /** Text to display while in loading state */\n loadingText?: string;\n /** onChange callback */\n onChange?: (\n e: (string | number)[] | string | number | null | undefined\n ) => void;\n /** Placeholder for Select input */\n placeholder?: string;\n /** disable Input element */\n disabled?: boolean;\n /** Combobox size */\n size?: InputSize;\n /** Invalid state */\n invalid?: boolean;\n /** Render Chip */\n renderChip?: <T extends IOptionItemProps>(\n item: T,\n key?: string | number\n ) => JSX.Element;\n /** Close menu on change */\n forceCloseMenu?: boolean;\n /** Limit chips */\n limitChips?: number;\n /** Hidden number text */\n hiddenNumberText?: (hidden: number) => string;\n}\n\nexport const ComboBox: FC<IComboBoxProps> = ({\n options = [],\n selected,\n loading = false,\n loadingText,\n onChange,\n placeholder,\n handleEmptyAction,\n disabled = false,\n size = \"regular\",\n invalid = false,\n type = \"single\",\n renderChip,\n forceCloseMenu = type === \"single\",\n renderOption,\n limitChips = 2,\n hiddenNumberText,\n ...prop\n}) => {\n const selectedName = useMemo(() => {\n let value = \"\";\n if (!selected) {\n return value;\n }\n options.map((v) => {\n if ((v as IOptionGroupProps)?.options) {\n return (v as IOptionGroupProps).options.find((q) => {\n if (q.id === selected) {\n value = q.name;\n return;\n }\n });\n } else {\n if (v.id === selected) {\n value = v.name;\n return;\n }\n }\n });\n return value;\n }, [options, selected]);\n const [value, setValue] = useState(selectedName);\n const handleOnChange = useCallback((e) => setValue(e.target.value), []);\n const [childNode, setChildNode] = useState<HTMLInputElement | null>();\n const elementRef = useRef<HTMLInputElement | null>(null);\n const handleRef = useForkRef(setChildNode, elementRef);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const chipWrapper = useRef<HTMLDivElement>(null);\n\n const [open, setOpen] = useState(false);\n\n useOnClickOutside(wrapperRef, () => setOpen(false));\n\n const handleOnKeyDown = useCallback(\n (e) => {\n if (e.key === \"Escape\" && open) {\n setOpen(false);\n setValue(selectedName);\n e.stopPropagation();\n }\n if (e.key === \"Enter\" && type === \"multiple\") {\n setValue(\"\");\n }\n },\n [open, selectedName, type]\n );\n\n useEffect(() => {\n open && childNode?.focus();\n !open && childNode?.blur();\n }, [childNode, open]);\n\n useEffect(() => {\n setValue(selectedName);\n }, [selectedName]);\n\n const emptyAction = useCallback(\n (v) => {\n handleEmptyAction?.(v);\n setOpen(false);\n },\n [handleEmptyAction]\n );\n\n const handleChange = useCallback(\n (selectedValue) => {\n onChange?.(selectedValue);\n if (forceCloseMenu) {\n setOpen(false);\n }\n },\n [forceCloseMenu, onChange]\n );\n\n const onOpen = useCallback(() => {\n if (!disabled) {\n setOpen(true);\n }\n }, [disabled]);\n\n const handleRenderOption = useCallback(\n (option, props) => {\n if (typeof renderOption === \"function\") {\n return renderOption(option, props);\n }\n if (type === \"multiple\") {\n return (\n <>\n <OptionContent\n imageUrl={option.image}\n color={option.color}\n textColor={option.textColor}\n name={option.name}\n />\n <Checkbox {...props} />\n </>\n );\n }\n return (\n <>\n <OptionContent\n imageUrl={option.image}\n color={option.color}\n textColor={option.textColor}\n name={option.name}\n />\n <RadioButton {...props} />\n </>\n );\n },\n [type, renderOption]\n );\n\n const handleDeselect = useCallback(\n (e) => {\n e.stopPropagation();\n if (type === \"multiple\") {\n onChange?.([]);\n } else {\n onChange?.(\"\");\n }\n\n setOpen(false);\n },\n [type, onChange]\n );\n\n const handleMouseDown = useCallback((e) => {\n e.preventDefault();\n }, []);\n\n const comboBoxRef = useRef<HTMLDivElement | null>(null);\n\n const handleBlur = useCallback(() => {\n setValue(selectedName);\n }, [selectedName]);\n\n const renderChipAdornment = useCallback(\n (option, index) => {\n if (typeof renderChip === \"function\") {\n return renderChip(option, index);\n }\n const avatarProps: Partial<IAvatar> = {\n className: \"tw-my-0.5 tw-mr-0.5\",\n size: 18,\n };\n switch (size) {\n case \"big\":\n avatarProps.size = 22;\n break;\n case \"small\":\n avatarProps.size = 14;\n break;\n }\n const leftAdornment = option.image ? (\n <Avatar url={option.image} {...avatarProps} />\n ) : undefined;\n\n return (\n <Chip\n className={\"c-combo-box-chip\"}\n leftAdornment={leftAdornment}\n label={option.name}\n key={index}\n onClose={\n !disabled\n ? (e) => {\n e.preventDefault();\n e.stopPropagation();\n if (Array.isArray(selected) && selected.includes(option.id)) {\n if (typeof onChange === \"function\") {\n const newSelected = selected.filter(\n (item) => item !== option.id\n );\n onChange(newSelected);\n }\n }\n }\n : undefined\n }\n size={size}\n />\n );\n },\n [disabled, onChange, renderChip, selected, size]\n );\n\n const autoSize = useMemo(() => {\n if (\n type === \"multiple\" &&\n open &&\n Array.isArray(selected) &&\n selected.length > 1\n ) {\n return \"auto\";\n }\n return size;\n }, [open, selected, size, type]);\n\n const startAdornment = useMemo(() => {\n if (type === \"multiple\" && Array.isArray(selected) && selected.length > 0) {\n const elements: JSX.Element[] = [];\n let total = 0;\n options.forEach((option, index) => {\n const isGrouped = isOptionGroup(option);\n if (selected.includes(option.id) && !isGrouped) {\n total = total + 1;\n elements.push(renderChipAdornment(option, index));\n } else if (isGrouped) {\n const groupedOptions = option.options.filter((o) =>\n selected.includes(o.id)\n );\n total = total + groupedOptions.length;\n if (groupedOptions.length > 0) {\n groupedOptions.forEach((o, _index) => {\n elements.push(renderChipAdornment(o, `${index}_${_index}`));\n });\n }\n }\n });\n let hidden = 0;\n if (!open && limitChips > 0 && elements.length > limitChips) {\n hidden = elements.splice(\n limitChips,\n elements.length - limitChips\n ).length;\n }\n\n return (\n <Fragment>\n {elements}\n {hidden > 0 && (\n <Typography\n variant={\n size === \"small\"\n ? \"Caption 1\"\n : size === \"regular\"\n ? \"Body 2\"\n : \"Body 1\"\n }\n className={\"tw-flex tw-items-center tw-shrink-0\"}\n key={\"hidden\"}\n >\n {typeof hiddenNumberText === \"function\"\n ? hiddenNumberText(hidden)\n : `+${hidden}`}\n </Typography>\n )}\n </Fragment>\n );\n }\n return undefined;\n }, [\n type,\n selected,\n options,\n open,\n limitChips,\n hiddenNumberText,\n renderChipAdornment,\n size,\n ]);\n\n const showXIcon =\n Array.isArray(selected) && type === \"multiple\" && selected.length > 0;\n\n const hasSelected =\n type === \"multiple\" && Array.isArray(selected) && selected.length > 0;\n\n return (\n <div className=\"c-combo-box\" ref={wrapperRef}>\n {type === \"multiple\" ? (\n <>\n <StyledInputWrapper\n $size={size}\n $invalid={invalid}\n className={classNames(\"tw-flex tw-space-between tw-flex-1\", {\n \"tw-h-auto\": autoSize === \"auto\",\n })}\n onClick={() => {\n elementRef.current?.focus();\n }}\n >\n <div\n className={classNames(\"tw-flex tw-gap-1 tw-flex-1\", {\n \"tw-flex-wrap tw-w-full\": autoSize === \"auto\",\n \"tw-items-center\": autoSize !== \"auto\",\n \"tw-overflow-hidden\": !open,\n })}\n ref={chipWrapper}\n >\n {startAdornment}\n <StyledInput\n className={classNames(\n \"tw-flex tw-flex-1 tw-self-center tw-m-0\",\n {\n \"tw-w-full\":\n !selected ||\n (Array.isArray(selected) && selected.length === 0),\n \"tw-w-auto\": autoSize === \"auto\",\n }\n )}\n onBlur={handleBlur}\n onFocus={onOpen}\n ref={handleRef}\n value={loading && loadingText ? loadingText : value}\n onKeyDown={handleOnKeyDown}\n onChange={handleOnChange}\n placeholder={!hasSelected ? placeholder : undefined}\n disabled={disabled}\n $size={size}\n $loading={loading}\n />\n </div>\n {!disabled && (\n <>\n {loading ? (\n <SpinnerLoader />\n ) : (\n <>\n {showXIcon && (\n <Trigger\n onMouseDown={handleMouseDown}\n onClick={handleDeselect}\n className={\"tw-flex tw-justify-content-center\"}\n data-testid={\"deselect-all\"}\n >\n <StyledComboBoxCloseSmallIcon />\n </Trigger>\n )}\n <StyledComboBoxCollapseExpandSingleIcon $open={open} />\n </>\n )}\n </>\n )}\n </StyledInputWrapper>\n </>\n ) : (\n <StyledComboBoxInput\n onBlur={handleBlur}\n onFocus={onOpen}\n wrapRef={comboBoxRef}\n ref={handleRef}\n value={loading && loadingText ? loadingText : value}\n onKeyDown={handleOnKeyDown}\n onChange={handleOnChange}\n placeholder={placeholder}\n disabled={disabled}\n size={size}\n invalid={invalid}\n $loading={loading}\n startAdornment={startAdornment}\n endAdornment={\n !disabled ? (\n <InputAdornment disablePointerEvents={disabled}>\n {loading ? (\n <SpinnerLoader />\n ) : selected ? (\n <Button\n onMouseDown={handleMouseDown}\n onClick={handleDeselect}\n variant=\"text gray\"\n size=\"small\"\n >\n <StyledComboBoxCloseSmallIcon />\n </Button>\n ) : null}\n <StyledComboBoxCollapseExpandSingleIcon $open={open} />\n </InputAdornment>\n ) : null\n }\n />\n )}\n\n {!disabled ? (\n <Popper\n anchorEl={comboBoxRef.current}\n open={open}\n placement=\"bottom\"\n style={{ zIndex: 10 }}\n strategy={\"fixed\"}\n >\n <RemoveScroll noIsolation allowPinchZoom>\n <StyledComboBoxList $width={comboBoxRef.current?.clientWidth}>\n <Autocomplete\n {...prop}\n inputEl={childNode}\n selected={selected}\n handleChange={handleChange}\n renderOption={handleRenderOption}\n options={options}\n type={type}\n handleEmptyAction={emptyAction}\n />\n </StyledComboBoxList>\n </RemoveScroll>\n </Popper>\n ) : null}\n </div>\n );\n};\n\nComboBox.displayName = \"ComboBox\";\n"],"file":"ComboBox.js"}
|
|
@@ -13,6 +13,8 @@ var _collection = require("../Icons/collection");
|
|
|
13
13
|
|
|
14
14
|
var _Input = require("../Input");
|
|
15
15
|
|
|
16
|
+
var _Styles = require("../Input/Styles");
|
|
17
|
+
|
|
16
18
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
17
19
|
|
|
18
20
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
@@ -20,9 +22,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
20
22
|
var StyledComboBoxInput = (0, _styledComponents.default)(_Input.Input).withConfig({
|
|
21
23
|
displayName: "Styles__StyledComboBoxInput",
|
|
22
24
|
componentId: "sc-5qvkpb-0"
|
|
23
|
-
})(["overflow:hidden;text-overflow:ellipsis;width:100%;"
|
|
24
|
-
return props.$loading && (0, _styledComponents.css)(["cursor:progress;"]);
|
|
25
|
-
});
|
|
25
|
+
})(["overflow:hidden;text-overflow:ellipsis;width:100%;"]);
|
|
26
26
|
exports.StyledComboBoxInput = StyledComboBoxInput;
|
|
27
27
|
StyledComboBoxInput.displayName = "StyledComboBoxInput";
|
|
28
28
|
var StyledIconDefaults = (0, _styledComponents.css)(["flex-shrink:0;cursor:pointer;"]);
|
|
@@ -37,7 +37,7 @@ StyledComboBoxCollapseExpandSingleIcon.displayName = "StyledComboBoxCollapseExpa
|
|
|
37
37
|
var StyledComboBoxCloseSmallIcon = (0, _styledComponents.default)(_collection.CloseSmallIcon).withConfig({
|
|
38
38
|
displayName: "Styles__StyledComboBoxCloseSmallIcon",
|
|
39
39
|
componentId: "sc-5qvkpb-2"
|
|
40
|
-
})(["", " opacity:0;transition-property:all;transition-duration:0.2s;transition-delay:0.5s;", ":hover &{opacity:1;transition-delay:0s;}"], StyledIconDefaults, StyledComboBoxInput);
|
|
40
|
+
})(["", " opacity:0;transition-property:all;transition-duration:0.2s;transition-delay:0.5s;", ":hover,", ":hover &{opacity:1;transition-delay:0s;}"], StyledIconDefaults, StyledComboBoxInput, _Styles.StyledInputWrapper);
|
|
41
41
|
exports.StyledComboBoxCloseSmallIcon = StyledComboBoxCloseSmallIcon;
|
|
42
42
|
StyledComboBoxCloseSmallIcon.displayName = "StyledComboBoxCloseSmallIcon";
|
|
43
43
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/ComboBox/Styles.ts"],"names":["StyledComboBoxInput","Input","
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/ComboBox/Styles.ts"],"names":["StyledComboBoxInput","Input","displayName","StyledIconDefaults","css","StyledComboBoxCollapseExpandSingleIcon","CollapseExpandSingleIcon","props","$open","StyledComboBoxCloseSmallIcon","CloseSmallIcon","StyledInputWrapper","StyledComboBoxList","styled","div","$width"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;;;;;AAEO,IAAMA,mBAAmB,GAAG,+BAAOC,YAAP,CAAH;AAAA;AAAA;AAAA,0DAAzB;;AAMPD,mBAAmB,CAACE,WAApB,GAAkC,qBAAlC;AAEA,IAAMC,kBAAkB,OAAGC,qBAAH,oCAAxB;AAKO,IAAMC,sCAAsC,GAAG,+BACpDC,oCADoD,CAAH;AAAA;AAAA;AAAA,wEAG/CH,kBAH+C,EAO/C,UAACI,KAAD;AAAA,SACAA,KAAK,CAACC,KAAN,QACAJ,qBADA,8BADA;AAAA,CAP+C,CAA5C;;AAcPC,sCAAsC,CAACH,WAAvC,GACE,wCADF;AAGO,IAAMO,4BAA4B,GAAG,+BAAOC,0BAAP,CAAH;AAAA;AAAA;AAAA,sJACrCP,kBADqC,EAOrCH,mBAPqC,EAOPW,0BAPO,CAAlC;;AAaPF,4BAA4B,CAACP,WAA7B,GAA2C,8BAA3C;;AAEO,IAAMU,kBAAkB,GAAGC,0BAAOC,GAAV;AAAA;AAAA;AAAA,oLAOpB,UAACP,KAAD;AAAA,mBAAcA,KAAK,CAACQ,MAApB;AAAA,CAPoB,CAAxB;;;AAUPH,kBAAkB,CAACV,WAAnB,GAAiC,oBAAjC","sourcesContent":["import styled, { css } from \"styled-components\";\nimport { CollapseExpandSingleIcon, CloseSmallIcon } from \"../Icons/collection\";\nimport { Input } from \"../Input\";\nimport { StyledInputWrapper } from \"../Input/Styles\";\n\nexport const StyledComboBoxInput = styled(Input)<{ $loading?: boolean }>`\n overflow: hidden;\n text-overflow: ellipsis;\n width: 100%;\n`;\n\nStyledComboBoxInput.displayName = \"StyledComboBoxInput\";\n\nconst StyledIconDefaults = css`\n flex-shrink: 0;\n cursor: pointer;\n`;\n\nexport const StyledComboBoxCollapseExpandSingleIcon = styled(\n CollapseExpandSingleIcon\n)<{ $open?: boolean }>`\n ${StyledIconDefaults}\n color: var(--color-theme-600);\n transform: rotate(180deg);\n\n ${(props) =>\n props.$open &&\n css`\n transform: rotate(0deg);\n `}\n`;\n\nStyledComboBoxCollapseExpandSingleIcon.displayName =\n \"StyledComboBoxCollapseExpandSingleIcon\";\n\nexport const StyledComboBoxCloseSmallIcon = styled(CloseSmallIcon)`\n ${StyledIconDefaults}\n opacity: 0;\n transition-property: all;\n transition-duration: 0.2s;\n transition-delay: 0.5s;\n\n ${StyledComboBoxInput}:hover, ${StyledInputWrapper}:hover & {\n opacity: 1;\n transition-delay: 0s;\n }\n`;\n\nStyledComboBoxCloseSmallIcon.displayName = \"StyledComboBoxCloseSmallIcon\";\n\nexport const StyledComboBoxList = styled.div<{ $width?: number }>`\n min-width: 260px;\n background-color: var(--page-paper-main);\n border-radius: 8px;\n border: 1px solid var(--border-primary);\n box-shadow: var(--shadow-tertiary);\n margin: 8px 0;\n width: ${(props) => `${props.$width}px`};\n`;\n\nStyledComboBoxList.displayName = \"StyledComboBoxList\";\n"],"file":"Styles.js"}
|
|
@@ -53,7 +53,7 @@ StyledInputWrapper.displayName = "StyledInputWrapper";
|
|
|
53
53
|
var StyledInput = _styledComponents.default.input.withConfig({
|
|
54
54
|
displayName: "Styles__StyledInput",
|
|
55
55
|
componentId: "sc-ce8kcp-1"
|
|
56
|
-
})(["", " ", " ", " ", " ", " ", " padding:0px;margin:0 4px;background-color:var(--input-background-color);border:none;outline:none;&::placeholder{", "}", " ", ""], {
|
|
56
|
+
})(["", " ", " ", " ", " ", " ", " padding:0px;margin:0 4px;background-color:var(--input-background-color);border:none;outline:none;&::placeholder{", "}", " ", " ", ""], {
|
|
57
57
|
"fontSize": "0.875rem"
|
|
58
58
|
}, {
|
|
59
59
|
"color": "var(--color-theme-900)"
|
|
@@ -75,6 +75,8 @@ var StyledInput = _styledComponents.default.input.withConfig({
|
|
|
75
75
|
return props.disabled && (0, _styledComponents.css)(["", ""], {
|
|
76
76
|
"cursor": "not-allowed"
|
|
77
77
|
});
|
|
78
|
+
}, function (props) {
|
|
79
|
+
return props.$loading && (0, _styledComponents.css)(["cursor:progress;"]);
|
|
78
80
|
});
|
|
79
81
|
|
|
80
82
|
exports.StyledInput = StyledInput;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/Input/Styles.ts"],"names":["StyledInputWrapper","styled","div","FontStyle","BoxSizingStyle","props","$size","css","$disabled","$invalid","displayName","StyledInput","input","disabled"],"mappings":";;;;;;;;;AAAA;;AAGA;;AACA;;;;;;AAOO,IAAMA,kBAAkB,GAAGC,0BAAOC,GAAV;AAAA;AAAA;AAAA,iOACzB;AAAA;AAAA,CADyB,EAEzB;AAAA;AAAA,CAFyB,EAGzB;AAAA;AAAA,CAHyB,EAMzB;AAAA;AAAA,CANyB,EAc3BC,oBAd2B,EAe3BC,8BAf2B,EAiB3B,UAACC,KAAD;AAAA,SACAA,KAAK,CAACC,KAAN,KAAgB,OAAhB,QACAC,qBADA,qCADA;AAAA,CAjB2B,EAwB3B,UAACF,KAAD;AAAA,SACAA,KAAK,CAACC,KAAN,KAAgB,KAAhB,QACAC,qBADA,mBADA;AAAA,CAxB2B,EA8B3B,UAACF,KAAD;AAAA,SACAA,KAAK,CAACG,SAAN,QACAD,qBADA,YAEM;AAAA;AAAA;AAAA,GAFN,CADA;AAAA,CA9B2B,EAoC3B,UAACF,KAAD;AAAA,SACA,CAACA,KAAK,CAACG,SAAP,IACA,CAACH,KAAK,CAACI,QADP,QAEAF,qBAFA,oCAKQ;AAAA;AAAA,GALR,CADA;AAAA,CApC2B,EA8C3B,UAACF,KAAD;AAAA,SACA,CAACA,KAAK,CAACG,SAAP,IACAH,KAAK,CAACI,QADN,QAEAF,qBAFA,YAGM;AAAA;AAAA,GAHN,CADA;AAAA,CA9C2B,CAAxB;;;AAsDPP,kBAAkB,CAACU,WAAnB,GAAiC,oBAAjC;;
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/Input/Styles.ts"],"names":["StyledInputWrapper","styled","div","FontStyle","BoxSizingStyle","props","$size","css","$disabled","$invalid","displayName","StyledInput","input","disabled","$loading"],"mappings":";;;;;;;;;AAAA;;AAGA;;AACA;;;;;;AAOO,IAAMA,kBAAkB,GAAGC,0BAAOC,GAAV;AAAA;AAAA;AAAA,iOACzB;AAAA;AAAA,CADyB,EAEzB;AAAA;AAAA,CAFyB,EAGzB;AAAA;AAAA,CAHyB,EAMzB;AAAA;AAAA,CANyB,EAc3BC,oBAd2B,EAe3BC,8BAf2B,EAiB3B,UAACC,KAAD;AAAA,SACAA,KAAK,CAACC,KAAN,KAAgB,OAAhB,QACAC,qBADA,qCADA;AAAA,CAjB2B,EAwB3B,UAACF,KAAD;AAAA,SACAA,KAAK,CAACC,KAAN,KAAgB,KAAhB,QACAC,qBADA,mBADA;AAAA,CAxB2B,EA8B3B,UAACF,KAAD;AAAA,SACAA,KAAK,CAACG,SAAN,QACAD,qBADA,YAEM;AAAA;AAAA;AAAA,GAFN,CADA;AAAA,CA9B2B,EAoC3B,UAACF,KAAD;AAAA,SACA,CAACA,KAAK,CAACG,SAAP,IACA,CAACH,KAAK,CAACI,QADP,QAEAF,qBAFA,oCAKQ;AAAA;AAAA,GALR,CADA;AAAA,CApC2B,EA8C3B,UAACF,KAAD;AAAA,SACA,CAACA,KAAK,CAACG,SAAP,IACAH,KAAK,CAACI,QADN,QAEAF,qBAFA,YAGM;AAAA;AAAA,GAHN,CADA;AAAA,CA9C2B,CAAxB;;;AAsDPP,kBAAkB,CAACU,WAAnB,GAAiC,oBAAjC;;AAOO,IAAMC,WAAW,GAAGV,0BAAOW,KAAV;AAAA;AAAA;AAAA,0KAClB;AAAA;AAAA,CADkB,EAElB;AAAA;AAAA,CAFkB,EAGlB;AAAA;AAAA,CAHkB,EAIlB;AAAA;AAAA,CAJkB,EAKlB;AAAA;AAAA,CALkB,EAMlB;AAAA;AAAA,CANkB,EAgBhB;AAAA;AAAA,CAhBgB,EAmBpB,UAACP,KAAD;AAAA,SACAA,KAAK,CAACC,KAAN,KAAgB,KAAhB,QACAC,qBADA,YAEM;AAAA;AAAA,GAFN,CADA;AAAA,CAnBoB,EAyBpB,UAACF,KAAD;AAAA,SACAA,KAAK,CAACQ,QAAN,QACAN,qBADA,YAEM;AAAA;AAAA,GAFN,CADA;AAAA,CAzBoB,EA+BpB,UAACF,KAAD;AAAA,SACAA,KAAK,CAACS,QAAN,QACAP,qBADA,uBADA;AAAA,CA/BoB,CAAjB;;;AAsCPI,WAAW,CAACD,WAAZ,GAA0B,aAA1B","sourcesContent":["import styled, { css } from \"styled-components\";\nimport tw from \"twin.macro\";\nimport { InputSize } from \"./types\";\nimport { BoxSizingStyle } from \"../BoxSizingStyle\";\nimport { FontStyle } from \"../FontStyle\";\ninterface StyledInputWrapperProps {\n $size?: InputSize;\n $invalid?: boolean;\n $disabled?: boolean;\n}\n\nexport const StyledInputWrapper = styled.div<StyledInputWrapperProps>`\n ${tw`tw-cursor-text`}\n ${tw`tw-flex`}\n ${tw`tw-items-center`}\n border-width: 1px;\n border-style: solid;\n ${tw`tw-border-theme-500`}\n border-radius: 8px;\n padding: 4px;\n height: 32px;\n background-color: var(--input-background-color);\n transition: all 0.3s ease;\n width: 360px;\n\n ${FontStyle}\n ${BoxSizingStyle}\n\n ${(props) =>\n props.$size === \"small\" &&\n css`\n border-radius: 6px;\n height: 24px;\n `}\n\n ${(props) =>\n props.$size === \"big\" &&\n css`\n height: 40px;\n `}\n\n ${(props) =>\n props.$disabled &&\n css`\n ${tw`tw-cursor-not-allowed tw-opacity-50`}\n `}\n\n ${(props) =>\n !props.$disabled &&\n !props.$invalid &&\n css`\n &:focus-within,\n &:hover {\n ${tw`tw-border-primary`}\n }\n `}\n\n ${(props) =>\n !props.$disabled &&\n props.$invalid &&\n css`\n ${tw`tw-border-alert`}\n `}\n`;\n\nStyledInputWrapper.displayName = \"StyledInputWrapper\";\n\ninterface StyledInputProps {\n $size?: InputSize;\n $loading?: boolean;\n}\n\nexport const StyledInput = styled.input<StyledInputProps>`\n ${tw`tw-text-body-2`}\n ${tw`tw-text-theme-900`}\n ${tw`tw-leading-regular`}\n ${tw`tw-tracking-regular`}\n ${tw`tw-font-regular`}\n ${tw`tw-w-full`}\n\n padding: 0px;\n margin: 0 4px;\n\n background-color: var(--input-background-color);\n border: none;\n outline: none;\n\n &::placeholder {\n ${tw`tw-text-theme-transparent-500`}\n }\n\n ${(props) =>\n props.$size === \"big\" &&\n css`\n ${tw`tw-text-body-1`}\n `}\n\n ${(props) =>\n props.disabled &&\n css`\n ${tw`tw-cursor-not-allowed`}\n `}\n\n ${(props) =>\n props.$loading &&\n css`\n cursor: progress;\n `}\n`;\n\nStyledInput.displayName = \"StyledInput\";\n"],"file":"Styles.js"}
|
|
@@ -20,7 +20,7 @@ var rotateAnimation = (0, _styledComponents.keyframes)(["from{transform:rotate(0
|
|
|
20
20
|
var StyledSpinnerLoader = _styledComponents.default.div.withConfig({
|
|
21
21
|
displayName: "Styles__StyledSpinnerLoader",
|
|
22
22
|
componentId: "sc-1ht53g9-0"
|
|
23
|
-
})(["", " border-radius:100%;", " ", " ", " ", ""], _BoxSizingStyle.BoxSizingStyle, function (props) {
|
|
23
|
+
})(["", " border-radius:100%;flex-shrink:0;", " ", " ", " ", ""], _BoxSizingStyle.BoxSizingStyle, function (props) {
|
|
24
24
|
return (0, _styledComponents.css)(["width:", "px;height:", "px;animation:", " ", "s infinite linear;"], props.$diameter, props.$diameter, rotateAnimation, props.$rotateDurationInSeconds);
|
|
25
25
|
}, function (props) {
|
|
26
26
|
return props.$activeColorPercentage === "25%" && (0, _styledComponents.css)(["border-right:", "px solid ", ";border-bottom:", "px solid ", ";border-left:", "px solid ", ";border-top:", "px solid ", ";"], props.$stroke, props.$inactiveStrokeColor, props.$stroke, props.$inactiveStrokeColor, props.$stroke, props.$inactiveStrokeColor, props.$stroke, props.$activeStrokeColor);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/Loaders/Spinner/Styles.ts"],"names":["rotateAnimation","keyframes","StyledSpinnerLoader","styled","div","BoxSizingStyle","props","css","$diameter","$rotateDurationInSeconds","$activeColorPercentage","$stroke","$inactiveStrokeColor","$activeStrokeColor"],"mappings":";;;;;;;;;AAAA;;AACA;;;;;;AAEA,IAAMA,eAAe,OAAGC,2BAAH,iEAArB;;AAcO,IAAMC,mBAAmB,GAAGC,0BAAOC,GAAV;AAAA;AAAA;AAAA,
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/Loaders/Spinner/Styles.ts"],"names":["rotateAnimation","keyframes","StyledSpinnerLoader","styled","div","BoxSizingStyle","props","css","$diameter","$rotateDurationInSeconds","$activeColorPercentage","$stroke","$inactiveStrokeColor","$activeStrokeColor"],"mappings":";;;;;;;;;AAAA;;AACA;;;;;;AAEA,IAAMA,eAAe,OAAGC,2BAAH,iEAArB;;AAcO,IAAMC,mBAAmB,GAAGC,0BAAOC,GAAV;AAAA;AAAA;AAAA,kEAC5BC,8BAD4B,EAI5B,UAACC,KAAD;AAAA,aACAC,qBADA,wEAEWD,KAAK,CAACE,SAFjB,EAGYF,KAAK,CAACE,SAHlB,EAIeR,eAJf,EAIkCM,KAAK,CAACG,wBAJxC;AAAA,CAJ4B,EAY5B,UAACH,KAAD;AAAA,SACAA,KAAK,CAACI,sBAAN,KAAiC,KAAjC,QACAH,qBADA,kIAEkBD,KAAK,CAACK,OAFxB,EAE2CL,KAAK,CAACM,oBAFjD,EAGmBN,KAAK,CAACK,OAHzB,EAG4CL,KAAK,CAACM,oBAHlD,EAIiBN,KAAK,CAACK,OAJvB,EAI0CL,KAAK,CAACM,oBAJhD,EAKgBN,KAAK,CAACK,OALtB,EAKyCL,KAAK,CAACO,kBAL/C,CADA;AAAA,CAZ4B,EAqB5B,UAACP,KAAD;AAAA,SACAA,KAAK,CAACI,sBAAN,KAAiC,KAAjC,QACAH,qBADA,kIAEkBD,KAAK,CAACK,OAFxB,EAE2CL,KAAK,CAACO,kBAFjD,EAGmBP,KAAK,CAACK,OAHzB,EAG4CL,KAAK,CAACM,oBAHlD,EAIiBN,KAAK,CAACK,OAJvB,EAI0CL,KAAK,CAACM,oBAJhD,EAKgBN,KAAK,CAACK,OALtB,EAKyCL,KAAK,CAACO,kBAL/C,CADA;AAAA,CArB4B,EA8B1B,UAACP,KAAD;AAAA,SACFA,KAAK,CAACI,sBAAN,KAAiC,KAAjC,QACAH,qBADA,kIAEkBD,KAAK,CAACK,OAFxB,EAE2CL,KAAK,CAACO,kBAFjD,EAGmBP,KAAK,CAACK,OAHzB,EAG4CL,KAAK,CAACO,kBAHlD,EAIiBP,KAAK,CAACK,OAJvB,EAI0CL,KAAK,CAACM,oBAJhD,EAKgBN,KAAK,CAACK,OALtB,EAKyCL,KAAK,CAACO,kBAL/C,CADE;AAAA,CA9B0B,CAAzB","sourcesContent":["import styled, { css, keyframes } from \"styled-components\";\nimport { BoxSizingStyle } from \"../../BoxSizingStyle\";\n\nconst rotateAnimation = keyframes`\n from { transform: rotate(0deg); }\n to { transform: rotate(359deg); }\n`;\n\nexport interface StyledSpinnerLoaderProps {\n $diameter: number;\n $stroke: number;\n $activeStrokeColor: string;\n $inactiveStrokeColor: string;\n $activeColorPercentage: \"25%\" | \"50%\" | \"75%\";\n $rotateDurationInSeconds: number;\n}\n\nexport const StyledSpinnerLoader = styled.div<StyledSpinnerLoaderProps>`\n ${BoxSizingStyle}\n border-radius: 100%;\n flex-shrink: 0;\n ${(props) =>\n css`\n width: ${props.$diameter}px;\n height: ${props.$diameter}px;\n animation: ${rotateAnimation} ${props.$rotateDurationInSeconds}s infinite\n linear;\n `}\n\n ${(props) =>\n props.$activeColorPercentage === \"25%\" &&\n css`\n border-right: ${props.$stroke}px solid ${props.$inactiveStrokeColor};\n border-bottom: ${props.$stroke}px solid ${props.$inactiveStrokeColor};\n border-left: ${props.$stroke}px solid ${props.$inactiveStrokeColor};\n border-top: ${props.$stroke}px solid ${props.$activeStrokeColor};\n `}\n\n ${(props) =>\n props.$activeColorPercentage === \"50%\" &&\n css`\n border-right: ${props.$stroke}px solid ${props.$activeStrokeColor};\n border-bottom: ${props.$stroke}px solid ${props.$inactiveStrokeColor};\n border-left: ${props.$stroke}px solid ${props.$inactiveStrokeColor};\n border-top: ${props.$stroke}px solid ${props.$activeStrokeColor};\n `}\n\n ${(props) =>\n props.$activeColorPercentage === \"75%\" &&\n css`\n border-right: ${props.$stroke}px solid ${props.$activeStrokeColor};\n border-bottom: ${props.$stroke}px solid ${props.$activeStrokeColor};\n border-left: ${props.$stroke}px solid ${props.$inactiveStrokeColor};\n border-top: ${props.$stroke}px solid ${props.$activeStrokeColor};\n `}\n`;\n"],"file":"Styles.js"}
|
|
@@ -107,10 +107,6 @@ var Select = function Select(_ref) {
|
|
|
107
107
|
open = _useState4[0],
|
|
108
108
|
setOpen = _useState4[1];
|
|
109
109
|
|
|
110
|
-
function isGroup(item) {
|
|
111
|
-
return item.options !== undefined;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
110
|
var selectedOptions = (0, _react.useMemo)(function () {
|
|
115
111
|
return selected instanceof Array ? selected : [selected];
|
|
116
112
|
}, [selected]);
|
|
@@ -123,7 +119,7 @@ var Select = function Select(_ref) {
|
|
|
123
119
|
}, [options]);
|
|
124
120
|
var allOptionValues = (0, _react.useMemo)(function () {
|
|
125
121
|
return selectOptions.reduce(function (acc, option) {
|
|
126
|
-
if (!
|
|
122
|
+
if (!(0, _Autocomplete.isOptionGroup)(option)) {
|
|
127
123
|
return [].concat(_toConsumableArray(acc), [option.id]);
|
|
128
124
|
}
|
|
129
125
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/Select/Select.tsx"],"names":["Select","type","mode","target","options","selected","position","onChange","actionIcon","actionLabel","placeholder","emptyAction","disableSearch","forceCloseMenu","selectClassName","keepSameOptionsOrder","onSelectOpen","onSelectClose","renderOption","handleDefaultOptionChange","preselectDefaultValue","prop","childNode","setChildNode","elementRef","handleRef","Tag","Menu","formRef","open","setOpen","isGroup","item","undefined","selectedOptions","Array","selectOptions","allOptionValues","reduce","acc","option","id","allGroupOptions","map","isAllOptionsChecked","every","includes","focus","handleChange","selectedValue","onClose","onOpen","props","menuClassName","className","handleEmptyAction","value","current","reset","handleDefaultOptionChangeCallback","length","handleRenderOption","image","color","textColor","name","additionalInfo","zIndex","displayName"],"mappings":"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","sourcesContent":["import React, {\n FC,\n useCallback,\n useState,\n ReactElement,\n useMemo,\n useEffect,\n useRef,\n Ref,\n} from \"react\";\nimport { Autocomplete } from \"../Autocomplete\";\nimport { Tooltip } from \"../Tooltip\";\nimport { Menu } from \"../Menu/Menu\";\nimport { IOptionItemProps } from \"../Select/Option\";\nimport { IOptionGroupProps } from \"../Select/OptionGroup\";\nimport classNames from \"classnames\";\nimport { Placement } from \"@popperjs/core\";\nimport { IAutocompleteProps } from \"../Autocomplete/Autocomplete\";\nimport useForkRef from \"../../utils/useForkRef\";\nimport {\n StyledSelectForm,\n StyledSelectInput,\n StyledCheckbox,\n StyledRadioButton,\n} from \"./Styles\";\nimport { OptionContent } from \"./OptionContent/OptionContent\";\n\ninterface ElementWithRef<T> extends ReactElement {\n ref?: Ref<T>;\n}\n\nexport interface ISelectProps\n extends Omit<IAutocompleteProps, \"handleChange\" | \"inputEl\"> {\n /** Menu width mode */\n mode?: \"normal\" | \"wider\" | \"tiny\";\n /** Set select target element */\n target?: ElementWithRef<Element>;\n /** Set Select position */\n position?: Placement;\n /** onChange callback */\n onChange?: (e: (string | number)[] | string | number) => void;\n /** Set action icon in select */\n actionIcon?: ReactElement;\n /** Set label for action icon */\n actionLabel?: string;\n /** Placeholder for Select input */\n placeholder?: string;\n /** Function that triggers when empty is clicked */\n emptyAction?: (e: string | undefined) => void;\n /** Removes input from Select */\n disableSearch?: boolean;\n /** Close menu on select */\n forceCloseMenu?: boolean;\n /** Set select classNames */\n selectClassName?: string;\n /** Callback called when the Select menu is opened */\n onSelectOpen?: () => void;\n /** Callback called when the Select menu is closed */\n onSelectClose?: () => void;\n}\n\nexport const Select: FC<ISelectProps> = ({\n type = \"single\",\n mode,\n target,\n options,\n selected = [],\n position = \"bottom-start\",\n onChange = () => null,\n actionIcon,\n actionLabel,\n placeholder,\n emptyAction = (): null => null,\n disableSearch = false,\n forceCloseMenu,\n selectClassName,\n keepSameOptionsOrder = false,\n onSelectOpen,\n onSelectClose,\n renderOption,\n handleDefaultOptionChange,\n preselectDefaultValue = type === \"single\",\n ...prop\n}) => {\n const [childNode, setChildNode] = useState<HTMLInputElement | null>();\n const elementRef = useRef<HTMLInputElement | null>(null);\n\n const handleRef = useForkRef(setChildNode, elementRef);\n\n const Tag = !target ? \"div\" : Menu;\n const formRef = useRef<HTMLFormElement | null>(null);\n\n const [open, setOpen] = useState(false);\n\n function isGroup(\n item: IOptionGroupProps | IOptionItemProps\n ): item is IOptionGroupProps {\n return (item as IOptionGroupProps).options !== undefined;\n }\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 (!isGroup(option)) {\n return [...acc, option.id];\n }\n const allGroupOptions = option.options.map((option) => option.id);\n return [...acc, ...allGroupOptions];\n },\n []\n );\n }, [selectOptions]);\n\n const isAllOptionsChecked = useMemo(\n () => allOptionValues.every((option) => selectedOptions.includes(option)),\n [allOptionValues, selectedOptions]\n );\n\n useEffect(() => {\n open && childNode?.focus();\n }, [childNode, open]);\n\n const handleChange = useCallback(\n (selectedValue) => {\n if (forceCloseMenu) {\n setOpen(false);\n }\n onChange(selectedValue);\n },\n [onChange, forceCloseMenu]\n );\n\n const onClose = useCallback(() => {\n setOpen(false);\n if (onSelectClose) {\n onSelectClose();\n }\n }, [onSelectClose]);\n\n const onOpen = useCallback(() => {\n setOpen(true);\n if (onSelectOpen) {\n onSelectOpen();\n }\n }, [onSelectOpen]);\n\n const props = useMemo(() => {\n if (target) {\n return {\n menuClassName: classNames(\"c-select\", selectClassName),\n onClose,\n onOpen,\n target,\n mode,\n open,\n position,\n };\n }\n return { className: classNames(\"c-select\", selectClassName) };\n }, [target, selectClassName, onClose, onOpen, mode, open, position]);\n\n const handleEmptyAction = useCallback(\n (value) => {\n emptyAction(value);\n if (forceCloseMenu) {\n setOpen(false);\n }\n formRef.current?.reset();\n },\n [emptyAction, forceCloseMenu]\n );\n\n const handleDefaultOptionChangeCallback = useCallback(() => {\n if (type === \"multiple\") {\n if (selectedOptions.length === allOptionValues.length) {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange([]);\n }\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange(allOptionValues);\n }\n }\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange(\"\");\n }\n }\n if (forceCloseMenu) {\n setOpen(false);\n }\n }, [\n onChange,\n type,\n forceCloseMenu,\n selectedOptions.length,\n allOptionValues,\n handleDefaultOptionChange,\n ]);\n\n const handleRenderOption = useCallback(\n (option, props) => {\n if (typeof renderOption === \"function\") {\n return renderOption(option, props);\n }\n return (\n <>\n <OptionContent\n imageUrl={option.image}\n color={option.color}\n textColor={option.textColor}\n name={option.name}\n additionalInfo={option.additionalInfo}\n />\n {option.id === null ? (\n type === \"multiple\" ? (\n <StyledCheckbox checked={isAllOptionsChecked} {...props} />\n ) : (\n <StyledRadioButton\n checked={selectedOptions.length < 1 || !selectedOptions[0]}\n {...props}\n />\n )\n ) : type === \"multiple\" ? (\n <StyledCheckbox {...props} />\n ) : (\n <StyledRadioButton {...props} />\n )}\n </>\n );\n },\n [isAllOptionsChecked, renderOption, selectedOptions, type]\n );\n\n return (\n <Tag {...props}>\n <div>\n {!disableSearch ? (\n <StyledSelectForm ref={formRef}>\n <StyledSelectInput\n ref={handleRef}\n autoFocus\n placeholder={placeholder}\n />\n {actionIcon && actionLabel && (\n <Tooltip\n popperTooltipStyle={{ zIndex: 1301 }}\n title={actionLabel}\n >\n <div>{actionIcon}</div>\n </Tooltip>\n )}\n {actionIcon && !actionLabel && actionIcon}\n </StyledSelectForm>\n ) : null}\n <Autocomplete\n {...prop}\n inputEl={childNode}\n handleEmptyAction={handleEmptyAction}\n selected={selected}\n handleChange={handleChange}\n renderOption={handleRenderOption}\n options={options}\n handleDefaultOptionChange={handleDefaultOptionChangeCallback}\n type={type}\n preselectDefaultValue={preselectDefaultValue}\n keepSameOptionsOrder={keepSameOptionsOrder}\n />\n </div>\n </Tag>\n );\n};\n\nSelect.displayName = \"Select\";\n"],"file":"Select.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/Select/Select.tsx"],"names":["Select","type","mode","target","options","selected","position","onChange","actionIcon","actionLabel","placeholder","emptyAction","disableSearch","forceCloseMenu","selectClassName","keepSameOptionsOrder","onSelectOpen","onSelectClose","renderOption","handleDefaultOptionChange","preselectDefaultValue","prop","childNode","setChildNode","elementRef","handleRef","Tag","Menu","formRef","open","setOpen","selectedOptions","Array","selectOptions","allOptionValues","reduce","acc","option","id","allGroupOptions","map","isAllOptionsChecked","every","includes","focus","handleChange","selectedValue","onClose","onOpen","props","menuClassName","className","handleEmptyAction","value","current","reset","handleDefaultOptionChangeCallback","length","handleRenderOption","image","color","textColor","name","additionalInfo","zIndex","displayName"],"mappings":"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","sourcesContent":["import React, {\n FC,\n useCallback,\n useState,\n ReactElement,\n useMemo,\n useEffect,\n useRef,\n Ref,\n} from \"react\";\nimport { Autocomplete, isOptionGroup } from \"../Autocomplete\";\nimport { Tooltip } from \"../Tooltip\";\nimport { Menu } from \"../Menu/Menu\";\nimport { IOptionItemProps } from \"../Select/Option\";\nimport { IOptionGroupProps } from \"../Select/OptionGroup\";\nimport classNames from \"classnames\";\nimport { Placement } from \"@popperjs/core\";\nimport { IAutocompleteProps } from \"../Autocomplete/Autocomplete\";\nimport useForkRef from \"../../utils/useForkRef\";\nimport {\n StyledSelectForm,\n StyledSelectInput,\n StyledCheckbox,\n StyledRadioButton,\n} from \"./Styles\";\nimport { OptionContent } from \"./OptionContent/OptionContent\";\n\ninterface ElementWithRef<T> extends ReactElement {\n ref?: Ref<T>;\n}\n\nexport interface ISelectProps\n extends Omit<IAutocompleteProps, \"handleChange\" | \"inputEl\"> {\n /** Menu width mode */\n mode?: \"normal\" | \"wider\" | \"tiny\";\n /** Set select target element */\n target?: ElementWithRef<Element>;\n /** Set Select position */\n position?: Placement;\n /** onChange callback */\n onChange?: (e: (string | number)[] | string | number) => void;\n /** Set action icon in select */\n actionIcon?: ReactElement;\n /** Set label for action icon */\n actionLabel?: string;\n /** Placeholder for Select input */\n placeholder?: string;\n /** Function that triggers when empty is clicked */\n emptyAction?: (e: string | undefined) => void;\n /** Removes input from Select */\n disableSearch?: boolean;\n /** Close menu on select */\n forceCloseMenu?: boolean;\n /** Set select classNames */\n selectClassName?: string;\n /** Callback called when the Select menu is opened */\n onSelectOpen?: () => void;\n /** Callback called when the Select menu is closed */\n onSelectClose?: () => void;\n}\n\nexport const Select: FC<ISelectProps> = ({\n type = \"single\",\n mode,\n target,\n options,\n selected = [],\n position = \"bottom-start\",\n onChange = () => null,\n actionIcon,\n actionLabel,\n placeholder,\n emptyAction = (): null => null,\n disableSearch = false,\n forceCloseMenu,\n selectClassName,\n keepSameOptionsOrder = false,\n onSelectOpen,\n onSelectClose,\n renderOption,\n handleDefaultOptionChange,\n preselectDefaultValue = type === \"single\",\n ...prop\n}) => {\n const [childNode, setChildNode] = useState<HTMLInputElement | null>();\n const elementRef = useRef<HTMLInputElement | null>(null);\n\n const handleRef = useForkRef(setChildNode, elementRef);\n\n const Tag = !target ? \"div\" : Menu;\n const formRef = useRef<HTMLFormElement | null>(null);\n\n const [open, setOpen] = useState(false);\n\n const selectedOptions = useMemo(\n () => (selected instanceof Array ? selected : [selected]),\n [selected]\n );\n\n const selectOptions = useMemo(() => {\n if (!options) {\n return [];\n }\n return options;\n }, [options]);\n\n const allOptionValues = useMemo(() => {\n return selectOptions.reduce(\n (\n acc: (string | number)[],\n option: IOptionGroupProps | IOptionItemProps\n ) => {\n if (!isOptionGroup(option)) {\n return [...acc, option.id];\n }\n const allGroupOptions = option.options.map((option) => option.id);\n return [...acc, ...allGroupOptions];\n },\n []\n );\n }, [selectOptions]);\n\n const isAllOptionsChecked = useMemo(\n () => allOptionValues.every((option) => selectedOptions.includes(option)),\n [allOptionValues, selectedOptions]\n );\n\n useEffect(() => {\n open && childNode?.focus();\n }, [childNode, open]);\n\n const handleChange = useCallback(\n (selectedValue) => {\n if (forceCloseMenu) {\n setOpen(false);\n }\n onChange(selectedValue);\n },\n [onChange, forceCloseMenu]\n );\n\n const onClose = useCallback(() => {\n setOpen(false);\n if (onSelectClose) {\n onSelectClose();\n }\n }, [onSelectClose]);\n\n const onOpen = useCallback(() => {\n setOpen(true);\n if (onSelectOpen) {\n onSelectOpen();\n }\n }, [onSelectOpen]);\n\n const props = useMemo(() => {\n if (target) {\n return {\n menuClassName: classNames(\"c-select\", selectClassName),\n onClose,\n onOpen,\n target,\n mode,\n open,\n position,\n };\n }\n return { className: classNames(\"c-select\", selectClassName) };\n }, [target, selectClassName, onClose, onOpen, mode, open, position]);\n\n const handleEmptyAction = useCallback(\n (value) => {\n emptyAction(value);\n if (forceCloseMenu) {\n setOpen(false);\n }\n formRef.current?.reset();\n },\n [emptyAction, forceCloseMenu]\n );\n\n const handleDefaultOptionChangeCallback = useCallback(() => {\n if (type === \"multiple\") {\n if (selectedOptions.length === allOptionValues.length) {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange([]);\n }\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange(allOptionValues);\n }\n }\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange(\"\");\n }\n }\n if (forceCloseMenu) {\n setOpen(false);\n }\n }, [\n onChange,\n type,\n forceCloseMenu,\n selectedOptions.length,\n allOptionValues,\n handleDefaultOptionChange,\n ]);\n\n const handleRenderOption = useCallback(\n (option, props) => {\n if (typeof renderOption === \"function\") {\n return renderOption(option, props);\n }\n return (\n <>\n <OptionContent\n imageUrl={option.image}\n color={option.color}\n textColor={option.textColor}\n name={option.name}\n additionalInfo={option.additionalInfo}\n />\n {option.id === null ? (\n type === \"multiple\" ? (\n <StyledCheckbox checked={isAllOptionsChecked} {...props} />\n ) : (\n <StyledRadioButton\n checked={selectedOptions.length < 1 || !selectedOptions[0]}\n {...props}\n />\n )\n ) : type === \"multiple\" ? (\n <StyledCheckbox {...props} />\n ) : (\n <StyledRadioButton {...props} />\n )}\n </>\n );\n },\n [isAllOptionsChecked, renderOption, selectedOptions, type]\n );\n\n return (\n <Tag {...props}>\n <div>\n {!disableSearch ? (\n <StyledSelectForm ref={formRef}>\n <StyledSelectInput\n ref={handleRef}\n autoFocus\n placeholder={placeholder}\n />\n {actionIcon && actionLabel && (\n <Tooltip\n popperTooltipStyle={{ zIndex: 1301 }}\n title={actionLabel}\n >\n <div>{actionIcon}</div>\n </Tooltip>\n )}\n {actionIcon && !actionLabel && actionIcon}\n </StyledSelectForm>\n ) : null}\n <Autocomplete\n {...prop}\n inputEl={childNode}\n handleEmptyAction={handleEmptyAction}\n selected={selected}\n handleChange={handleChange}\n renderOption={handleRenderOption}\n options={options}\n handleDefaultOptionChange={handleDefaultOptionChangeCallback}\n type={type}\n preselectDefaultValue={preselectDefaultValue}\n keepSameOptionsOrder={keepSameOptionsOrder}\n />\n </div>\n </Tag>\n );\n};\n\nSelect.displayName = \"Select\";\n"],"file":"Select.js"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useOnClickOutside = useOnClickOutside;
|
|
7
|
+
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
|
|
10
|
+
function useOnClickOutside(ref, handler) {
|
|
11
|
+
(0, _react.useEffect)(function () {
|
|
12
|
+
var listener = function listener(event) {
|
|
13
|
+
// Do nothing if clicking ref's element or descendent elements
|
|
14
|
+
if (!ref.current || ref.current.contains(event.target)) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
handler(event);
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
document.addEventListener("mousedown", listener);
|
|
22
|
+
document.addEventListener("touchstart", listener);
|
|
23
|
+
return function () {
|
|
24
|
+
document.removeEventListener("mousedown", listener);
|
|
25
|
+
document.removeEventListener("touchstart", listener);
|
|
26
|
+
};
|
|
27
|
+
}, // Add ref and handler to effect dependencies
|
|
28
|
+
// It's worth noting that because passed in handler is a new ...
|
|
29
|
+
// ... function on every render that will cause this effect ...
|
|
30
|
+
// ... callback/cleanup to run every render. It's not a big deal ...
|
|
31
|
+
// ... but to optimize you can wrap handler in useCallback before ...
|
|
32
|
+
// ... passing it into this hook.
|
|
33
|
+
[ref, handler]);
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=useOnClickOutside.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/hooks/useOnClickOutside.tsx"],"names":["useOnClickOutside","ref","handler","listener","event","current","contains","target","document","addEventListener","removeEventListener"],"mappings":";;;;;;;AAAA;;AAEO,SAASA,iBAAT,CACLC,GADK,EAELC,OAFK,EAGL;AACA,wBACE,YAAM;AACJ,QAAMC,QAAQ,GAAG,SAAXA,QAAW,CAACC,KAAD,EAAW;AAC1B;AACA,UAAI,CAACH,GAAG,CAACI,OAAL,IAAgBJ,GAAG,CAACI,OAAJ,CAAYC,QAAZ,CAAqBF,KAAK,CAACG,MAA3B,CAApB,EAAwD;AACtD;AACD;;AACDL,MAAAA,OAAO,CAACE,KAAD,CAAP;AACD,KAND;;AAOAI,IAAAA,QAAQ,CAACC,gBAAT,CAA0B,WAA1B,EAAuCN,QAAvC;AACAK,IAAAA,QAAQ,CAACC,gBAAT,CAA0B,YAA1B,EAAwCN,QAAxC;AACA,WAAO,YAAM;AACXK,MAAAA,QAAQ,CAACE,mBAAT,CAA6B,WAA7B,EAA0CP,QAA1C;AACAK,MAAAA,QAAQ,CAACE,mBAAT,CAA6B,YAA7B,EAA2CP,QAA3C;AACD,KAHD;AAID,GAfH,EAgBE;AACA;AACA;AACA;AACA;AACA;AACA,GAACF,GAAD,EAAMC,OAAN,CAtBF;AAwBD","sourcesContent":["import { RefObject, useEffect } from \"react\";\n\nexport function useOnClickOutside<T extends HTMLElement>(\n ref: RefObject<T>,\n handler: (e: MouseEvent) => void\n) {\n useEffect(\n () => {\n const listener = (event) => {\n // Do nothing if clicking ref's element or descendent elements\n if (!ref.current || ref.current.contains(event.target)) {\n return;\n }\n handler(event);\n };\n document.addEventListener(\"mousedown\", listener);\n document.addEventListener(\"touchstart\", listener);\n return () => {\n document.removeEventListener(\"mousedown\", listener);\n document.removeEventListener(\"touchstart\", listener);\n };\n },\n // Add ref and handler to effect dependencies\n // It's worth noting that because passed in handler is a new ...\n // ... function on every render that will cause this effect ...\n // ... callback/cleanup to run every render. It's not a big deal ...\n // ... but to optimize you can wrap handler in useCallback before ...\n // ... passing it into this hook.\n [ref, handler]\n );\n}\n"],"file":"useOnClickOutside.js"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { FC, ReactNode, ReactElement } from "react";
|
|
2
2
|
import { IOptionItemProps } from "../Select/Option";
|
|
3
3
|
import { IOptionGroupProps } from "../Select/OptionGroup";
|
|
4
|
+
export declare function isOptionGroup(item: IOptionGroupProps | IOptionItemProps): item is IOptionGroupProps;
|
|
4
5
|
export interface IAutocompleteProps {
|
|
5
6
|
type?: "single" | "multiple";
|
|
6
7
|
options?: (IOptionGroupProps | IOptionItemProps)[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Autocomplete.d.ts","sourceRoot":"","sources":["../../../../src/components/Autocomplete/Autocomplete.tsx"],"names":[],"mappings":"AAAA,OAAc,EACZ,EAAE,EAMF,SAAS,EACT,YAAY,EACb,MAAM,OAAO,CAAC;AAIf,OAAO,EAAE,gBAAgB,EAAU,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAe,MAAM,uBAAuB,CAAC;AAQvE,MAAM,WAAW,kBAAkB;IAEjC,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAE7B,OAAO,CAAC,EAAE,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,EAAE,CAAC;IAEnD,QAAQ,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,GAAG,MAAM,CAAC;IAEjD,OAAO,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAElC,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,YAAY,CAAC,EAAE,CACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EACjC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC1B,MAAM,GAAG,YAAY,CAAC;IAE3B,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,aAAa,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAE/B,YAAY,CAAC,EAAE,CACb,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,KACxD,IAAI,CAAC;IAEV,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,iBAAiB,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IAEjD,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B,yBAAyB,CAAC,EAAE,MAAM,IAAI,CAAC;IAEvC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAOD,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,kBAAkB,
|
|
1
|
+
{"version":3,"file":"Autocomplete.d.ts","sourceRoot":"","sources":["../../../../src/components/Autocomplete/Autocomplete.tsx"],"names":[],"mappings":"AAAA,OAAc,EACZ,EAAE,EAMF,SAAS,EACT,YAAY,EACb,MAAM,OAAO,CAAC;AAIf,OAAO,EAAE,gBAAgB,EAAU,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAe,MAAM,uBAAuB,CAAC;AAQvE,wBAAgB,aAAa,CAC3B,IAAI,EAAE,iBAAiB,GAAG,gBAAgB,GACzC,IAAI,IAAI,iBAAiB,CAE3B;AAED,MAAM,WAAW,kBAAkB;IAEjC,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAE7B,OAAO,CAAC,EAAE,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,EAAE,CAAC;IAEnD,QAAQ,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,GAAG,MAAM,CAAC;IAEjD,OAAO,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAElC,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,YAAY,CAAC,EAAE,CACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EACjC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC1B,MAAM,GAAG,YAAY,CAAC;IAE3B,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,aAAa,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAE/B,YAAY,CAAC,EAAE,CACb,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,KACxD,IAAI,CAAC;IAEV,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,iBAAiB,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IAEjD,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B,yBAAyB,CAAC,EAAE,MAAM,IAAI,CAAC;IAEvC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAOD,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,kBAAkB,CA6b/C,CAAC"}
|
|
@@ -6,6 +6,9 @@ import { handleKeyboardMovement } from "./HandleKeyboard";
|
|
|
6
6
|
import { Option } from "../Select/Option";
|
|
7
7
|
import { OptionGroup } from "../Select/OptionGroup";
|
|
8
8
|
import { StyledAutocompleteBody, StyledAutocompleteNewItem, StyledAutocompleteNoResult, StyledAutocompleteScrollShadow } from "./Styles";
|
|
9
|
+
export function isOptionGroup(item) {
|
|
10
|
+
return item.options !== undefined;
|
|
11
|
+
}
|
|
9
12
|
export var Autocomplete = function Autocomplete(_ref) {
|
|
10
13
|
var type = _ref.type,
|
|
11
14
|
_ref$options = _ref.options,
|
|
@@ -100,14 +103,9 @@ export var Autocomplete = function Autocomplete(_ref) {
|
|
|
100
103
|
by: "mouse"
|
|
101
104
|
});
|
|
102
105
|
}, []);
|
|
103
|
-
|
|
104
|
-
function isGroup(item) {
|
|
105
|
-
return item.options !== undefined;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
106
|
var showAddNew = useMemo(function () {
|
|
109
107
|
return !!(emptyValue && filter.trim() && options.every(function (option) {
|
|
110
|
-
if (
|
|
108
|
+
if (isOptionGroup(option)) {
|
|
111
109
|
return option.options.every(function (v) {
|
|
112
110
|
return v.name.toLowerCase() !== filter.trim().toLowerCase();
|
|
113
111
|
});
|
|
@@ -127,7 +125,7 @@ export var Autocomplete = function Autocomplete(_ref) {
|
|
|
127
125
|
}, [emptyValue, handleEmpty, hover, onAddNewMouseEnter]);
|
|
128
126
|
var filterOptions = useCallback(function (options, filter) {
|
|
129
127
|
var trimmedFilter = filter.trim();
|
|
130
|
-
var isGrouped = options[0] &&
|
|
128
|
+
var isGrouped = options[0] && isOptionGroup(options[0]);
|
|
131
129
|
|
|
132
130
|
if (isGrouped) {
|
|
133
131
|
var hovered = false;
|
|
@@ -182,7 +180,7 @@ export var Autocomplete = function Autocomplete(_ref) {
|
|
|
182
180
|
}, [defaultValue, filter]);
|
|
183
181
|
var flatOptions = useMemo(function () {
|
|
184
182
|
var options = list.reduce(function (acc, option) {
|
|
185
|
-
if (!
|
|
183
|
+
if (!isOptionGroup(option)) {
|
|
186
184
|
return [].concat(acc, [option]);
|
|
187
185
|
}
|
|
188
186
|
|
|
@@ -251,7 +249,7 @@ export var Autocomplete = function Autocomplete(_ref) {
|
|
|
251
249
|
toggleSelected(hover.item);
|
|
252
250
|
}, [toggleSelected, hover]);
|
|
253
251
|
var handleRenderOption = useCallback(function (item, index) {
|
|
254
|
-
if (
|
|
252
|
+
if (isOptionGroup(item)) {
|
|
255
253
|
return /*#__PURE__*/React.createElement(OptionGroup, {
|
|
256
254
|
checked: selectedOptions,
|
|
257
255
|
name: item.name,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/Autocomplete/Autocomplete.tsx"],"names":["React","useCallback","useState","useMemo","useEffect","useRef","Scrollbars","highlightText","handleKeyboardMovement","Option","OptionGroup","StyledAutocompleteBody","StyledAutocompleteNewItem","StyledAutocompleteNoResult","StyledAutocompleteScrollShadow","Autocomplete","type","options","inputEl","selected","emptyValue","noResultText","renderOption","option","name","defaultValue","sortDirection","handleChange","optionClassName","handleEmptyAction","disabledInternalSort","AutocompleteClassName","handleDefaultOptionChange","preselectDefaultValue","keepSameOptionsOrder","autoHeightMax","itemRef","listRef","selectedOptions","Array","isArray","handleSort","opts","sort","a","b","includes","id","sortList","localeCompare","sortedList","item","undefined","by","hover","setHover","filter","setFilter","handleEmpty","e","button","focus","onAddNewMouseEnter","isGroup","showAddNew","trim","every","v","toLowerCase","renderAddNew","filterOptions","trimmedFilter","isGrouped","hovered","reduce","acc","groupedOption","filteredOptions","length","list","showDefaultOption","flatOptions","handleInputChange","target","key","value","handleHoverCallback","toggleSelected","result","_id","handleMouseEnter","handleClick","preventDefault","handleRenderOption","index","checked","onChange","handleOnMouseLeave","handleScroll","itemOffset","getClientHeight","getScrollTop","scrollTop","current","offsetTop","handleOnKeyDown","onkeydown","onkeyup","isDefaultOptionSelected","showNoResult","renderNoResult","onScroll","map","displayName"],"mappings":"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","sourcesContent":["import React, {\n FC,\n useCallback,\n useState,\n useMemo,\n useEffect,\n useRef,\n ReactNode,\n ReactElement,\n} from \"react\";\nimport { Scrollbars } from \"react-custom-scrollbars\";\nimport highlightText from \"../../hooks/useHighlightText\";\nimport { handleKeyboardMovement } from \"./HandleKeyboard\";\nimport { IOptionItemProps, Option } from \"../Select/Option\";\nimport { IOptionGroupProps, OptionGroup } from \"../Select/OptionGroup\";\nimport {\n StyledAutocompleteBody,\n StyledAutocompleteNewItem,\n StyledAutocompleteNoResult,\n StyledAutocompleteScrollShadow,\n} from \"./Styles\";\n\nexport interface IAutocompleteProps {\n /** Select type: single or multiple */\n type?: \"single\" | \"multiple\";\n /** List of options or group options */\n options?: (IOptionGroupProps | IOptionItemProps)[];\n /** Selected values */\n selected?: (string | number)[] | string | number;\n /** Input Element. */\n inputEl?: HTMLInputElement | null;\n /** Text for empty value */\n emptyValue?: string;\n /** Text for No result */\n noResultText?: string;\n /** Render option */\n renderOption?: (\n option: Record<string, ReactNode>,\n data: Record<string, unknown>\n ) => string | ReactElement;\n /** Default value that renders on top of list */\n defaultValue?: string;\n /** Sort direction for labels */\n sortDirection?: \"asc\" | \"desc\";\n /** handleChange callback */\n handleChange?: (\n e: (string | number)[] | string | number | null | undefined\n ) => void;\n /** ClassName for single option */\n optionClassName?: string;\n /** handleEmptyAction */\n handleEmptyAction?: (e: string | number) => void;\n /** Disable sorting options */\n disabledInternalSort?: boolean;\n /** ClassName for Autocomplete component */\n AutocompleteClassName?: string;\n /** handleDefaultOptionChange callback */\n handleDefaultOptionChange?: () => void;\n /** Should default value be selected */\n preselectDefaultValue?: boolean;\n /** Should order stay the same after choosing an option */\n keepSameOptionsOrder?: boolean;\n /** Set max height property for scrollbars */\n autoHeightMax?: number;\n}\n\ninterface IHover {\n item: number | string | undefined | null;\n by: \"mouse\" | \"keyboard\" | undefined;\n}\n\nexport const Autocomplete: FC<IAutocompleteProps> = ({\n type,\n options = [],\n inputEl,\n selected = [],\n emptyValue,\n noResultText,\n renderOption = (option) => option?.name,\n defaultValue,\n sortDirection = \"asc\",\n handleChange,\n optionClassName,\n handleEmptyAction,\n disabledInternalSort,\n AutocompleteClassName,\n handleDefaultOptionChange,\n preselectDefaultValue,\n keepSameOptionsOrder = false,\n autoHeightMax = 340,\n}) => {\n const itemRef = useRef<HTMLLIElement>(null);\n const listRef = useRef<Scrollbars>(null);\n\n const selectedOptions = useMemo(() => {\n if (Array.isArray(selected)) {\n return selected;\n }\n return [selected];\n }, [selected]);\n\n const handleSort = useCallback((opts) => {\n if (keepSameOptionsOrder) {\n return opts;\n }\n return opts.sort((a: IOptionItemProps, b: IOptionItemProps) => {\n if (selectedOptions.includes(b.id) && !selectedOptions.includes(a.id)) {\n return 1;\n }\n if (selectedOptions.includes(a.id) && !selectedOptions.includes(b.id)) {\n return -1;\n }\n return 0;\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const sortList = useCallback(\n (options) => {\n if (disabledInternalSort) {\n return handleSort([...options]);\n }\n return handleSort(\n [...options].sort((a: IOptionItemProps, b: IOptionItemProps) =>\n sortDirection === \"asc\"\n ? a.name.localeCompare(b.name)\n : b.name.localeCompare(a.name)\n )\n );\n },\n [sortDirection, disabledInternalSort, handleSort]\n );\n\n const sortedList = useMemo(() => sortList(options), [options, sortList]);\n\n const [hover, setHover] = useState<IHover>({\n item: undefined,\n by: undefined,\n });\n const [filter, setFilter] = useState(\"\");\n\n const handleEmpty = useCallback(\n (e) => {\n if (e && e.button !== 0) {\n return;\n }\n if (handleEmptyAction) {\n inputEl?.focus();\n setFilter(\"\");\n handleEmptyAction(filter);\n }\n },\n [filter, handleEmptyAction, inputEl]\n );\n\n const onAddNewMouseEnter = useCallback(\n () => setHover({ item: \"addNew\", by: \"mouse\" }),\n []\n );\n\n function isGroup(\n item: IOptionGroupProps | IOptionItemProps\n ): item is IOptionGroupProps {\n return (item as IOptionGroupProps).options !== undefined;\n }\n\n const showAddNew = useMemo(() => {\n return !!(\n emptyValue &&\n filter.trim() &&\n options.every((option) => {\n if (isGroup(option)) {\n return option.options.every(\n (v) => v.name.toLowerCase() !== filter.trim().toLowerCase()\n );\n }\n return option.name.toLowerCase() !== filter.trim().toLowerCase();\n })\n );\n }, [emptyValue, filter, options]);\n\n const renderAddNew = useMemo(() => {\n return (\n <StyledAutocompleteNewItem\n ref={hover.item === \"addNew\" ? itemRef : null}\n key=\"emptyValue\"\n hover={hover.item === \"addNew\"}\n onMouseDown={handleEmpty}\n onMouseEnter={onAddNewMouseEnter}\n >\n {emptyValue}\n </StyledAutocompleteNewItem>\n );\n }, [emptyValue, handleEmpty, hover, onAddNewMouseEnter]);\n\n const filterOptions = useCallback(\n (options, filter) => {\n const trimmedFilter = filter.trim();\n const isGrouped = options[0] && isGroup(options[0]);\n if (isGrouped) {\n let hovered = false;\n return options.reduce((acc, groupedOption) => {\n const filteredOptions = groupedOption.options.filter((v) =>\n v.name.toLowerCase().includes(trimmedFilter.toLowerCase())\n );\n if (filteredOptions.length > 0) {\n if (!hovered && filter) {\n setHover({ item: filteredOptions[0].id, by: \"keyboard\" });\n }\n hovered = true;\n return [...acc, { ...groupedOption, options: filteredOptions }];\n }\n return [...acc];\n }, []);\n } else {\n const filteredOptions = options.filter((v) =>\n v.name.toLowerCase().includes(trimmedFilter.toLowerCase())\n );\n if (filter && filteredOptions.length > 0) {\n setHover({ item: filteredOptions[0].id, by: \"keyboard\" });\n }\n if (filteredOptions.length === 0 && emptyValue) {\n setHover({ item: \"addNew\", by: \"keyboard\" });\n }\n return filteredOptions;\n }\n },\n [emptyValue]\n );\n\n const list = useMemo(\n () => filterOptions(sortedList, filter),\n [filter, filterOptions, sortedList]\n );\n\n const showDefaultOption = useMemo(\n () => !!defaultValue && !filter,\n [defaultValue, filter]\n );\n\n const flatOptions = useMemo(() => {\n const options = list.reduce(\n (\n acc: (IOptionItemProps | IOptionGroupProps | [])[],\n option: IOptionItemProps | IOptionGroupProps\n ) => {\n if (!isGroup(option)) {\n return [...acc, option];\n }\n return [...acc, ...option.options];\n },\n []\n );\n return filterOptions(options, filter);\n }, [filter, filterOptions, list]);\n\n const handleInputChange = useCallback((e) => {\n if (\n e.target &&\n !(e.key === \"ArrowDown\") &&\n !(e.key === \"ArrowUp\") &&\n !(e.key === \"Enter\")\n ) {\n setFilter(e.target.value);\n }\n }, []);\n\n const handleHoverCallback = useCallback(\n (e: number | string | undefined): void => {\n setHover({ item: e, by: \"mouse\" });\n },\n []\n );\n\n const toggleSelected = useCallback(\n (id) => {\n let result;\n\n if (id !== null) {\n if (type === \"multiple\") {\n if (selectedOptions.includes(id)) {\n result = selectedOptions.filter((_id) => _id !== id);\n } else {\n result = [...selectedOptions, id];\n }\n } else {\n if (selectedOptions.includes(id)) {\n result = null;\n } else {\n result = id;\n }\n }\n setFilter(\"\");\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n return;\n }\n }\n\n if (typeof handleChange === \"function\") {\n handleChange(result);\n }\n },\n [handleChange, handleDefaultOptionChange, selectedOptions, type]\n );\n\n const handleMouseEnter = useCallback((e) => {\n if (e === undefined || e === null) {\n return setHover({ item: null, by: \"mouse\" });\n }\n setHover({ item: e, by: \"mouse\" });\n }, []);\n\n const handleClick = useCallback(\n (e) => {\n e.preventDefault();\n toggleSelected(hover.item);\n },\n [toggleSelected, hover]\n );\n\n const handleRenderOption = useCallback(\n (item: IOptionItemProps | IOptionGroupProps, index) => {\n if (isGroup(item)) {\n return (\n <OptionGroup\n checked={selectedOptions}\n name={item.name}\n key={item.id}\n setHover={handleHoverCallback}\n id={item.id}\n hover={hover.item}\n options={item.options}\n renderOptions={handleRenderOption}\n type={type}\n onChange={handleChange}\n filter={filter}\n />\n );\n }\n return (\n <Option\n name={item.name}\n ref={itemRef}\n key={index}\n onMouseEnter={handleMouseEnter}\n onClick={handleClick}\n id={item.id}\n hover={item.id === hover.item}\n className={optionClassName}\n renderOption={renderOption(\n { ...item, name: highlightText(item.name, filter) },\n {\n id: `option_${item.id}`,\n checked: selectedOptions && selectedOptions.includes(item.id),\n hover: hover.item === item.id,\n onChange: () => null,\n }\n )}\n />\n );\n },\n [\n handleClick,\n handleMouseEnter,\n hover.item,\n optionClassName,\n renderOption,\n filter,\n selectedOptions,\n handleHoverCallback,\n type,\n handleChange,\n ]\n );\n\n const handleOnMouseLeave = useCallback(() => {\n setHover({ item: undefined, by: \"mouse\" });\n }, []);\n\n const handleScroll = useCallback((list: Scrollbars, itemOffset: number) => {\n if (list.getClientHeight() + list.getScrollTop() < itemOffset + 40) {\n return list.scrollTop(itemOffset - list.getClientHeight() + 30);\n }\n if (list.getScrollTop() > itemOffset) {\n return list.scrollTop(itemOffset);\n }\n }, []);\n\n useEffect(() => {\n if (hover.by === \"keyboard\" && hover.item !== undefined) {\n const item: HTMLLIElement | null = itemRef.current;\n const list = listRef.current;\n if (itemRef && item && list) {\n handleScroll(list, item.offsetTop);\n }\n }\n }, [handleScroll, hover]);\n\n const handleOnKeyDown = useCallback(\n (e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n\n if (hover.item === undefined && filter === \"\") {\n return;\n }\n if (hover.item === \"addNew\") {\n handleEmpty(null);\n return;\n }\n if (hover.item === null && handleDefaultOptionChange) {\n handleDefaultOptionChange();\n return;\n }\n\n if (hover.item) {\n toggleSelected(hover.item);\n setFilter(\"\");\n }\n return;\n }\n setHover({\n item: handleKeyboardMovement(\n e,\n hover.item,\n flatOptions,\n showAddNew,\n showDefaultOption\n ),\n by: \"keyboard\",\n });\n },\n [\n filter,\n flatOptions,\n toggleSelected,\n handleDefaultOptionChange,\n handleEmpty,\n hover,\n showAddNew,\n showDefaultOption,\n ]\n );\n\n useEffect(() => {\n if (inputEl) {\n inputEl.onkeydown = handleOnKeyDown;\n inputEl.onkeyup = handleInputChange;\n }\n }, [handleInputChange, handleOnKeyDown, inputEl]);\n\n const isDefaultOptionSelected = useCallback(() => {\n if (preselectDefaultValue) {\n return selectedOptions.length < 1 || selectedOptions[0] === \"\";\n } else {\n return (\n selectedOptions[0] === null ||\n selectedOptions.length === flatOptions.length\n );\n }\n }, [flatOptions.length, preselectDefaultValue, selectedOptions]);\n\n const showNoResult = useMemo(\n () => noResultText && !showAddNew && list.length < 1,\n [list.length, noResultText, showAddNew]\n );\n\n const renderNoResult = useMemo(\n () => (\n <StyledAutocompleteNoResult>{noResultText}</StyledAutocompleteNoResult>\n ),\n [noResultText]\n );\n\n return (\n <StyledAutocompleteScrollShadow\n className={AutocompleteClassName}\n $isHidden={\n !defaultValue && !emptyValue && !noResultText && list.length < 1\n }\n >\n {({ onScroll }): JSX.Element => (\n <StyledAutocompleteBody key=\"body\" onMouseLeave={handleOnMouseLeave}>\n <Scrollbars\n ref={listRef}\n key=\"scrollBar\"\n autoHeight\n autoHeightMax={autoHeightMax}\n onScroll={onScroll}\n >\n {defaultValue && !filter && (\n <Option\n name={defaultValue}\n ref={itemRef}\n hover={hover.item === null}\n onMouseEnter={handleMouseEnter}\n onClick={(e) => {\n e.preventDefault();\n toggleSelected(null);\n }}\n renderOption={renderOption(\n { name: defaultValue, id: null },\n {\n checked: isDefaultOptionSelected(),\n hover: hover.item === null,\n onChange: () => null,\n }\n )}\n />\n )}\n {list.map((item: IOptionItemProps, index) =>\n handleRenderOption(item, index)\n )}\n {showNoResult && renderNoResult}\n {showAddNew && renderAddNew}\n </Scrollbars>\n </StyledAutocompleteBody>\n )}\n </StyledAutocompleteScrollShadow>\n );\n};\n\nAutocomplete.displayName = \"Autocomplete\";\n"],"file":"Autocomplete.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/Autocomplete/Autocomplete.tsx"],"names":["React","useCallback","useState","useMemo","useEffect","useRef","Scrollbars","highlightText","handleKeyboardMovement","Option","OptionGroup","StyledAutocompleteBody","StyledAutocompleteNewItem","StyledAutocompleteNoResult","StyledAutocompleteScrollShadow","isOptionGroup","item","options","undefined","Autocomplete","type","inputEl","selected","emptyValue","noResultText","renderOption","option","name","defaultValue","sortDirection","handleChange","optionClassName","handleEmptyAction","disabledInternalSort","AutocompleteClassName","handleDefaultOptionChange","preselectDefaultValue","keepSameOptionsOrder","autoHeightMax","itemRef","listRef","selectedOptions","Array","isArray","handleSort","opts","sort","a","b","includes","id","sortList","localeCompare","sortedList","by","hover","setHover","filter","setFilter","handleEmpty","e","button","focus","onAddNewMouseEnter","showAddNew","trim","every","v","toLowerCase","renderAddNew","filterOptions","trimmedFilter","isGrouped","hovered","reduce","acc","groupedOption","filteredOptions","length","list","showDefaultOption","flatOptions","handleInputChange","target","key","value","handleHoverCallback","toggleSelected","result","_id","handleMouseEnter","handleClick","preventDefault","handleRenderOption","index","checked","onChange","handleOnMouseLeave","handleScroll","itemOffset","getClientHeight","getScrollTop","scrollTop","current","offsetTop","handleOnKeyDown","onkeydown","onkeyup","isDefaultOptionSelected","showNoResult","renderNoResult","onScroll","map","displayName"],"mappings":"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","sourcesContent":["import React, {\n FC,\n useCallback,\n useState,\n useMemo,\n useEffect,\n useRef,\n ReactNode,\n ReactElement,\n} from \"react\";\nimport { Scrollbars } from \"react-custom-scrollbars\";\nimport highlightText from \"../../hooks/useHighlightText\";\nimport { handleKeyboardMovement } from \"./HandleKeyboard\";\nimport { IOptionItemProps, Option } from \"../Select/Option\";\nimport { IOptionGroupProps, OptionGroup } from \"../Select/OptionGroup\";\nimport {\n StyledAutocompleteBody,\n StyledAutocompleteNewItem,\n StyledAutocompleteNoResult,\n StyledAutocompleteScrollShadow,\n} from \"./Styles\";\n\nexport function isOptionGroup(\n item: IOptionGroupProps | IOptionItemProps\n): item is IOptionGroupProps {\n return (item as IOptionGroupProps).options !== undefined;\n}\n\nexport interface IAutocompleteProps {\n /** Select type: single or multiple */\n type?: \"single\" | \"multiple\";\n /** List of options or group options */\n options?: (IOptionGroupProps | IOptionItemProps)[];\n /** Selected values */\n selected?: (string | number)[] | string | number;\n /** Input Element. */\n inputEl?: HTMLInputElement | null;\n /** Text for empty value */\n emptyValue?: string;\n /** Text for No result */\n noResultText?: string;\n /** Render option */\n renderOption?: (\n option: Record<string, ReactNode>,\n data: Record<string, unknown>\n ) => string | ReactElement;\n /** Default value that renders on top of list */\n defaultValue?: string;\n /** Sort direction for labels */\n sortDirection?: \"asc\" | \"desc\";\n /** handleChange callback */\n handleChange?: (\n e: (string | number)[] | string | number | null | undefined\n ) => void;\n /** ClassName for single option */\n optionClassName?: string;\n /** handleEmptyAction */\n handleEmptyAction?: (e: string | number) => void;\n /** Disable sorting options */\n disabledInternalSort?: boolean;\n /** ClassName for Autocomplete component */\n AutocompleteClassName?: string;\n /** handleDefaultOptionChange callback */\n handleDefaultOptionChange?: () => void;\n /** Should default value be selected */\n preselectDefaultValue?: boolean;\n /** Should order stay the same after choosing an option */\n keepSameOptionsOrder?: boolean;\n /** Set max height property for scrollbars */\n autoHeightMax?: number;\n}\n\ninterface IHover {\n item: number | string | undefined | null;\n by: \"mouse\" | \"keyboard\" | undefined;\n}\n\nexport const Autocomplete: FC<IAutocompleteProps> = ({\n type,\n options = [],\n inputEl,\n selected = [],\n emptyValue,\n noResultText,\n renderOption = (option) => option?.name,\n defaultValue,\n sortDirection = \"asc\",\n handleChange,\n optionClassName,\n handleEmptyAction,\n disabledInternalSort,\n AutocompleteClassName,\n handleDefaultOptionChange,\n preselectDefaultValue,\n keepSameOptionsOrder = false,\n autoHeightMax = 340,\n}) => {\n const itemRef = useRef<HTMLLIElement>(null);\n const listRef = useRef<Scrollbars>(null);\n\n const selectedOptions = useMemo(() => {\n if (Array.isArray(selected)) {\n return selected;\n }\n return [selected];\n }, [selected]);\n\n const handleSort = useCallback((opts) => {\n if (keepSameOptionsOrder) {\n return opts;\n }\n return opts.sort((a: IOptionItemProps, b: IOptionItemProps) => {\n if (selectedOptions.includes(b.id) && !selectedOptions.includes(a.id)) {\n return 1;\n }\n if (selectedOptions.includes(a.id) && !selectedOptions.includes(b.id)) {\n return -1;\n }\n return 0;\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const sortList = useCallback(\n (options) => {\n if (disabledInternalSort) {\n return handleSort([...options]);\n }\n return handleSort(\n [...options].sort((a: IOptionItemProps, b: IOptionItemProps) =>\n sortDirection === \"asc\"\n ? a.name.localeCompare(b.name)\n : b.name.localeCompare(a.name)\n )\n );\n },\n [sortDirection, disabledInternalSort, handleSort]\n );\n\n const sortedList = useMemo(() => sortList(options), [options, sortList]);\n\n const [hover, setHover] = useState<IHover>({\n item: undefined,\n by: undefined,\n });\n const [filter, setFilter] = useState(\"\");\n\n const handleEmpty = useCallback(\n (e) => {\n if (e && e.button !== 0) {\n return;\n }\n if (handleEmptyAction) {\n inputEl?.focus();\n setFilter(\"\");\n handleEmptyAction(filter);\n }\n },\n [filter, handleEmptyAction, inputEl]\n );\n\n const onAddNewMouseEnter = useCallback(\n () => setHover({ item: \"addNew\", by: \"mouse\" }),\n []\n );\n\n const showAddNew = useMemo(() => {\n return !!(\n emptyValue &&\n filter.trim() &&\n options.every((option) => {\n if (isOptionGroup(option)) {\n return option.options.every(\n (v) => v.name.toLowerCase() !== filter.trim().toLowerCase()\n );\n }\n return option.name.toLowerCase() !== filter.trim().toLowerCase();\n })\n );\n }, [emptyValue, filter, options]);\n\n const renderAddNew = useMemo(() => {\n return (\n <StyledAutocompleteNewItem\n ref={hover.item === \"addNew\" ? itemRef : null}\n key=\"emptyValue\"\n hover={hover.item === \"addNew\"}\n onMouseDown={handleEmpty}\n onMouseEnter={onAddNewMouseEnter}\n >\n {emptyValue}\n </StyledAutocompleteNewItem>\n );\n }, [emptyValue, handleEmpty, hover, onAddNewMouseEnter]);\n\n const filterOptions = useCallback(\n (options, filter) => {\n const trimmedFilter = filter.trim();\n const isGrouped = options[0] && isOptionGroup(options[0]);\n if (isGrouped) {\n let hovered = false;\n return options.reduce((acc, groupedOption) => {\n const filteredOptions = groupedOption.options.filter((v) =>\n v.name.toLowerCase().includes(trimmedFilter.toLowerCase())\n );\n if (filteredOptions.length > 0) {\n if (!hovered && filter) {\n setHover({ item: filteredOptions[0].id, by: \"keyboard\" });\n }\n hovered = true;\n return [...acc, { ...groupedOption, options: filteredOptions }];\n }\n return [...acc];\n }, []);\n } else {\n const filteredOptions = options.filter((v) =>\n v.name.toLowerCase().includes(trimmedFilter.toLowerCase())\n );\n if (filter && filteredOptions.length > 0) {\n setHover({ item: filteredOptions[0].id, by: \"keyboard\" });\n }\n if (filteredOptions.length === 0 && emptyValue) {\n setHover({ item: \"addNew\", by: \"keyboard\" });\n }\n return filteredOptions;\n }\n },\n [emptyValue]\n );\n\n const list = useMemo(\n () => filterOptions(sortedList, filter),\n [filter, filterOptions, sortedList]\n );\n\n const showDefaultOption = useMemo(\n () => !!defaultValue && !filter,\n [defaultValue, filter]\n );\n\n const flatOptions = useMemo(() => {\n const options = list.reduce(\n (\n acc: (IOptionItemProps | IOptionGroupProps | [])[],\n option: IOptionItemProps | IOptionGroupProps\n ) => {\n if (!isOptionGroup(option)) {\n return [...acc, option];\n }\n return [...acc, ...option.options];\n },\n []\n );\n return filterOptions(options, filter);\n }, [filter, filterOptions, list]);\n\n const handleInputChange = useCallback((e) => {\n if (\n e.target &&\n !(e.key === \"ArrowDown\") &&\n !(e.key === \"ArrowUp\") &&\n !(e.key === \"Enter\")\n ) {\n setFilter(e.target.value);\n }\n }, []);\n\n const handleHoverCallback = useCallback(\n (e: number | string | undefined): void => {\n setHover({ item: e, by: \"mouse\" });\n },\n []\n );\n\n const toggleSelected = useCallback(\n (id) => {\n let result;\n\n if (id !== null) {\n if (type === \"multiple\") {\n if (selectedOptions.includes(id)) {\n result = selectedOptions.filter((_id) => _id !== id);\n } else {\n result = [...selectedOptions, id];\n }\n } else {\n if (selectedOptions.includes(id)) {\n result = null;\n } else {\n result = id;\n }\n }\n setFilter(\"\");\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n return;\n }\n }\n\n if (typeof handleChange === \"function\") {\n handleChange(result);\n }\n },\n [handleChange, handleDefaultOptionChange, selectedOptions, type]\n );\n\n const handleMouseEnter = useCallback((e) => {\n if (e === undefined || e === null) {\n return setHover({ item: null, by: \"mouse\" });\n }\n setHover({ item: e, by: \"mouse\" });\n }, []);\n\n const handleClick = useCallback(\n (e) => {\n e.preventDefault();\n toggleSelected(hover.item);\n },\n [toggleSelected, hover]\n );\n\n const handleRenderOption = useCallback(\n (item: IOptionItemProps | IOptionGroupProps, index) => {\n if (isOptionGroup(item)) {\n return (\n <OptionGroup\n checked={selectedOptions}\n name={item.name}\n key={item.id}\n setHover={handleHoverCallback}\n id={item.id}\n hover={hover.item}\n options={item.options}\n renderOptions={handleRenderOption}\n type={type}\n onChange={handleChange}\n filter={filter}\n />\n );\n }\n return (\n <Option\n name={item.name}\n ref={itemRef}\n key={index}\n onMouseEnter={handleMouseEnter}\n onClick={handleClick}\n id={item.id}\n hover={item.id === hover.item}\n className={optionClassName}\n renderOption={renderOption(\n { ...item, name: highlightText(item.name, filter) },\n {\n id: `option_${item.id}`,\n checked: selectedOptions && selectedOptions.includes(item.id),\n hover: hover.item === item.id,\n onChange: () => null,\n }\n )}\n />\n );\n },\n [\n handleClick,\n handleMouseEnter,\n hover.item,\n optionClassName,\n renderOption,\n filter,\n selectedOptions,\n handleHoverCallback,\n type,\n handleChange,\n ]\n );\n\n const handleOnMouseLeave = useCallback(() => {\n setHover({ item: undefined, by: \"mouse\" });\n }, []);\n\n const handleScroll = useCallback((list: Scrollbars, itemOffset: number) => {\n if (list.getClientHeight() + list.getScrollTop() < itemOffset + 40) {\n return list.scrollTop(itemOffset - list.getClientHeight() + 30);\n }\n if (list.getScrollTop() > itemOffset) {\n return list.scrollTop(itemOffset);\n }\n }, []);\n\n useEffect(() => {\n if (hover.by === \"keyboard\" && hover.item !== undefined) {\n const item: HTMLLIElement | null = itemRef.current;\n const list = listRef.current;\n if (itemRef && item && list) {\n handleScroll(list, item.offsetTop);\n }\n }\n }, [handleScroll, hover]);\n\n const handleOnKeyDown = useCallback(\n (e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n\n if (hover.item === undefined && filter === \"\") {\n return;\n }\n if (hover.item === \"addNew\") {\n handleEmpty(null);\n return;\n }\n if (hover.item === null && handleDefaultOptionChange) {\n handleDefaultOptionChange();\n return;\n }\n\n if (hover.item) {\n toggleSelected(hover.item);\n setFilter(\"\");\n }\n return;\n }\n setHover({\n item: handleKeyboardMovement(\n e,\n hover.item,\n flatOptions,\n showAddNew,\n showDefaultOption\n ),\n by: \"keyboard\",\n });\n },\n [\n filter,\n flatOptions,\n toggleSelected,\n handleDefaultOptionChange,\n handleEmpty,\n hover,\n showAddNew,\n showDefaultOption,\n ]\n );\n\n useEffect(() => {\n if (inputEl) {\n inputEl.onkeydown = handleOnKeyDown;\n inputEl.onkeyup = handleInputChange;\n }\n }, [handleInputChange, handleOnKeyDown, inputEl]);\n\n const isDefaultOptionSelected = useCallback(() => {\n if (preselectDefaultValue) {\n return selectedOptions.length < 1 || selectedOptions[0] === \"\";\n } else {\n return (\n selectedOptions[0] === null ||\n selectedOptions.length === flatOptions.length\n );\n }\n }, [flatOptions.length, preselectDefaultValue, selectedOptions]);\n\n const showNoResult = useMemo(\n () => noResultText && !showAddNew && list.length < 1,\n [list.length, noResultText, showAddNew]\n );\n\n const renderNoResult = useMemo(\n () => (\n <StyledAutocompleteNoResult>{noResultText}</StyledAutocompleteNoResult>\n ),\n [noResultText]\n );\n\n return (\n <StyledAutocompleteScrollShadow\n className={AutocompleteClassName}\n $isHidden={\n !defaultValue && !emptyValue && !noResultText && list.length < 1\n }\n >\n {({ onScroll }): JSX.Element => (\n <StyledAutocompleteBody key=\"body\" onMouseLeave={handleOnMouseLeave}>\n <Scrollbars\n ref={listRef}\n key=\"scrollBar\"\n autoHeight\n autoHeightMax={autoHeightMax}\n onScroll={onScroll}\n >\n {defaultValue && !filter && (\n <Option\n name={defaultValue}\n ref={itemRef}\n hover={hover.item === null}\n onMouseEnter={handleMouseEnter}\n onClick={(e) => {\n e.preventDefault();\n toggleSelected(null);\n }}\n renderOption={renderOption(\n { name: defaultValue, id: null },\n {\n checked: isDefaultOptionSelected(),\n hover: hover.item === null,\n onChange: () => null,\n }\n )}\n />\n )}\n {list.map((item: IOptionItemProps, index) =>\n handleRenderOption(item, index)\n )}\n {showNoResult && renderNoResult}\n {showAddNew && renderAddNew}\n </Scrollbars>\n </StyledAutocompleteBody>\n )}\n </StyledAutocompleteScrollShadow>\n );\n};\n\nAutocomplete.displayName = \"Autocomplete\";\n"],"file":"Autocomplete.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chip.d.ts","sourceRoot":"","sources":["../../../../src/components/Chip/Chip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAW,MAAM,OAAO,CAAC;AAElD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IACrD,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,eAAO,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"Chip.d.ts","sourceRoot":"","sources":["../../../../src/components/Chip/Chip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAW,MAAM,OAAO,CAAC;AAElD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IACrD,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,eAAO,MAAM,IAAI,mPA4Bf,CAAC"}
|