@activecollab/components 1.0.330 → 1.0.332
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/Select/OptionGroup/OptionGroup.js +3 -0
- package/dist/cjs/components/Select/OptionGroup/OptionGroup.js.map +1 -1
- package/dist/cjs/components/Select/Select.js +8 -2
- package/dist/cjs/components/Select/Select.js.map +1 -1
- package/dist/esm/components/Select/OptionGroup/OptionGroup.d.ts.map +1 -1
- package/dist/esm/components/Select/OptionGroup/OptionGroup.js +3 -0
- package/dist/esm/components/Select/OptionGroup/OptionGroup.js.map +1 -1
- package/dist/esm/components/Select/Select.d.ts.map +1 -1
- package/dist/esm/components/Select/Select.js +8 -2
- package/dist/esm/components/Select/Select.js.map +1 -1
- package/dist/index.js +11 -2
- 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
|
@@ -86,6 +86,9 @@ var OptionGroup = function OptionGroup(_ref) {
|
|
|
86
86
|
}, name), type === "multiple" && /*#__PURE__*/_react.default.createElement(_Checkbox.Checkbox, {
|
|
87
87
|
id: "".concat(id),
|
|
88
88
|
checked: isAllOptionsChecked,
|
|
89
|
+
isIndeterminate: options.some(function (option) {
|
|
90
|
+
return checked.includes(option.id);
|
|
91
|
+
}) && !isAllOptionsChecked,
|
|
89
92
|
onChange: handleClick,
|
|
90
93
|
type: "checkbox"
|
|
91
94
|
}))), /*#__PURE__*/_react.default.createElement(_List.List, null, list.map(function (item, index) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OptionGroup.js","names":["OptionGroup","id","name","options","type","hover","filter","checked","onChange","setHover","renderOptions","optionGroupClassName","list","useMemo","v","toLowerCase","includes","trim","useEffect","document","getElementById","focus","isAllOptionsChecked","every","option","handleHover","useCallback","undefined","allOptionValues","map","handleClick","e","stopPropagation","i","values","unique","item","pos","indexOf","classNames","index","displayName"],"sources":["../../../../../src/components/Select/OptionGroup/OptionGroup.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, FC } from \"react\";\nimport classNames from \"classnames\";\nimport { IOptionItemProps } from \"../Option/Option\";\nimport { Checkbox } from \"../../Checkbox/Checkbox\";\nimport {\n StyledOptionGroup,\n StyledOptionGroupHeader,\n StyledOptionGroupOption,\n StyledOptionGroupLi,\n StyledOptionGroupHeaderName,\n} from \"./Styles\";\nimport { List } from \"../../List\";\n\nexport interface IOptionGroupProps extends IOptionItemProps {\n /** Options items list */\n options: IOptionItemProps[];\n}\n\ninterface IAdditionalOptionGroupProps {\n /** Select type: single or multiple */\n type?: \"single\" | \"multiple\";\n /** Value of hovered element */\n hover?: number | string | null;\n /** Filter for labels */\n filter?: string;\n /** Checked values */\n checked: (string | number)[];\n /** onChange callback */\n onChange?: (e: (string | number)[]) => void;\n /** Set value of hovered element */\n setHover?: (e: number | string | undefined) => void;\n /** Render function */\n renderOptions?: (item: IOptionItemProps, index: number) => void;\n /** Value that represent class names */\n optionGroupClassName?: string;\n}\n\nexport const OptionGroup: FC<\n IOptionGroupProps & IAdditionalOptionGroupProps\n> = ({\n id,\n name,\n options,\n type,\n hover,\n filter,\n checked,\n onChange,\n setHover,\n renderOptions,\n optionGroupClassName,\n}) => {\n const list = useMemo(\n () =>\n filter\n ? options.filter((v) =>\n v.name.toLowerCase().includes(filter.trim().toLowerCase())\n )\n : options,\n [filter, options]\n );\n\n useEffect(() => {\n if (hover === id && type !== \"single\") {\n document.getElementById(`${id}`)?.focus();\n }\n }, [hover, type, id]);\n\n const isAllOptionsChecked = useMemo(\n () => options.every((option) => checked.includes(option.id)),\n [options, checked]\n );\n\n const handleHover = useCallback(() => {\n if (setHover) {\n setHover(type === \"single\" ? undefined : id);\n }\n }, [setHover, type, id]);\n\n const allOptionValues = useMemo(\n () => options.map((option) => option.id),\n [options]\n );\n\n const handleClick = useCallback(\n (e) => {\n e.stopPropagation();\n if (onChange) {\n if (isAllOptionsChecked) {\n onChange(\n checked.filter((i) => allOptionValues.includes(i) === false)\n );\n } else {\n const values = [...checked, ...allOptionValues];\n const unique = values.filter((item, pos) => {\n return values.indexOf(item) === pos;\n });\n onChange(unique);\n }\n }\n },\n [allOptionValues, checked, isAllOptionsChecked, onChange]\n );\n\n return (\n <StyledOptionGroupLi\n key={id}\n className={classNames(\"c-option-group\", optionGroupClassName)}\n >\n <StyledOptionGroup key={id}>\n <StyledOptionGroupOption\n onMouseEnter={handleHover}\n hover={hover === id && type === \"multiple\"}\n >\n <StyledOptionGroupHeader>\n <StyledOptionGroupHeaderName weight=\"bold\">\n {name}\n </StyledOptionGroupHeaderName>\n {type === \"multiple\" && (\n <Checkbox\n id={`${id}`}\n checked={isAllOptionsChecked}\n onChange={handleClick}\n type=\"checkbox\"\n />\n )}\n </StyledOptionGroupHeader>\n </StyledOptionGroupOption>\n <List>\n {list.map((item: IOptionItemProps, index) => {\n return typeof renderOptions === \"function\"\n ? renderOptions(item, index)\n : item.name;\n })}\n </List>\n </StyledOptionGroup>\n </StyledOptionGroupLi>\n );\n};\n\nOptionGroup.displayName = \"OptionGroup\";\n"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"OptionGroup.js","names":["OptionGroup","id","name","options","type","hover","filter","checked","onChange","setHover","renderOptions","optionGroupClassName","list","useMemo","v","toLowerCase","includes","trim","useEffect","document","getElementById","focus","isAllOptionsChecked","every","option","handleHover","useCallback","undefined","allOptionValues","map","handleClick","e","stopPropagation","i","values","unique","item","pos","indexOf","classNames","some","index","displayName"],"sources":["../../../../../src/components/Select/OptionGroup/OptionGroup.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, FC } from \"react\";\nimport classNames from \"classnames\";\nimport { IOptionItemProps } from \"../Option/Option\";\nimport { Checkbox } from \"../../Checkbox/Checkbox\";\nimport {\n StyledOptionGroup,\n StyledOptionGroupHeader,\n StyledOptionGroupOption,\n StyledOptionGroupLi,\n StyledOptionGroupHeaderName,\n} from \"./Styles\";\nimport { List } from \"../../List\";\n\nexport interface IOptionGroupProps extends IOptionItemProps {\n /** Options items list */\n options: IOptionItemProps[];\n}\n\ninterface IAdditionalOptionGroupProps {\n /** Select type: single or multiple */\n type?: \"single\" | \"multiple\";\n /** Value of hovered element */\n hover?: number | string | null;\n /** Filter for labels */\n filter?: string;\n /** Checked values */\n checked: (string | number)[];\n /** onChange callback */\n onChange?: (e: (string | number)[]) => void;\n /** Set value of hovered element */\n setHover?: (e: number | string | undefined) => void;\n /** Render function */\n renderOptions?: (item: IOptionItemProps, index: number) => void;\n /** Value that represent class names */\n optionGroupClassName?: string;\n}\n\nexport const OptionGroup: FC<\n IOptionGroupProps & IAdditionalOptionGroupProps\n> = ({\n id,\n name,\n options,\n type,\n hover,\n filter,\n checked,\n onChange,\n setHover,\n renderOptions,\n optionGroupClassName,\n}) => {\n const list = useMemo(\n () =>\n filter\n ? options.filter((v) =>\n v.name.toLowerCase().includes(filter.trim().toLowerCase())\n )\n : options,\n [filter, options]\n );\n\n useEffect(() => {\n if (hover === id && type !== \"single\") {\n document.getElementById(`${id}`)?.focus();\n }\n }, [hover, type, id]);\n\n const isAllOptionsChecked = useMemo(\n () => options.every((option) => checked.includes(option.id)),\n [options, checked]\n );\n\n const handleHover = useCallback(() => {\n if (setHover) {\n setHover(type === \"single\" ? undefined : id);\n }\n }, [setHover, type, id]);\n\n const allOptionValues = useMemo(\n () => options.map((option) => option.id),\n [options]\n );\n\n const handleClick = useCallback(\n (e) => {\n e.stopPropagation();\n if (onChange) {\n if (isAllOptionsChecked) {\n onChange(\n checked.filter((i) => allOptionValues.includes(i) === false)\n );\n } else {\n const values = [...checked, ...allOptionValues];\n const unique = values.filter((item, pos) => {\n return values.indexOf(item) === pos;\n });\n onChange(unique);\n }\n }\n },\n [allOptionValues, checked, isAllOptionsChecked, onChange]\n );\n\n return (\n <StyledOptionGroupLi\n key={id}\n className={classNames(\"c-option-group\", optionGroupClassName)}\n >\n <StyledOptionGroup key={id}>\n <StyledOptionGroupOption\n onMouseEnter={handleHover}\n hover={hover === id && type === \"multiple\"}\n >\n <StyledOptionGroupHeader>\n <StyledOptionGroupHeaderName weight=\"bold\">\n {name}\n </StyledOptionGroupHeaderName>\n {type === \"multiple\" && (\n <Checkbox\n id={`${id}`}\n checked={isAllOptionsChecked}\n isIndeterminate={\n options.some((option) => checked.includes(option.id)) &&\n !isAllOptionsChecked\n }\n onChange={handleClick}\n type=\"checkbox\"\n />\n )}\n </StyledOptionGroupHeader>\n </StyledOptionGroupOption>\n <List>\n {list.map((item: IOptionItemProps, index) => {\n return typeof renderOptions === \"function\"\n ? renderOptions(item, index)\n : item.name;\n })}\n </List>\n </StyledOptionGroup>\n </StyledOptionGroupLi>\n );\n};\n\nOptionGroup.displayName = \"OptionGroup\";\n"],"mappings":"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"}
|
|
@@ -98,6 +98,11 @@ var Select = function Select(_ref) {
|
|
|
98
98
|
return selectedOptions.includes(option);
|
|
99
99
|
});
|
|
100
100
|
}, [allOptionValues, selectedOptions]);
|
|
101
|
+
var someOptionsChecked = (0, _react.useMemo)(function () {
|
|
102
|
+
return allOptionValues.some(function (option) {
|
|
103
|
+
return selectedOptions.includes(option);
|
|
104
|
+
});
|
|
105
|
+
}, [allOptionValues, selectedOptions]);
|
|
101
106
|
(0, _react.useEffect)(function () {
|
|
102
107
|
var _childNode$current;
|
|
103
108
|
open && (childNode === null || childNode === void 0 ? void 0 : (_childNode$current = childNode.current) === null || _childNode$current === void 0 ? void 0 : _childNode$current.focus());
|
|
@@ -188,11 +193,12 @@ var Select = function Select(_ref) {
|
|
|
188
193
|
name: option.name,
|
|
189
194
|
additionalInfo: option.additionalInfo
|
|
190
195
|
}), option.id === null ? type === "multiple" ? /*#__PURE__*/_react.default.createElement(_Styles.StyledCheckbox, _extends({
|
|
191
|
-
checked: isAllOptionsChecked
|
|
196
|
+
checked: isAllOptionsChecked,
|
|
197
|
+
isIndeterminate: someOptionsChecked && !isAllOptionsChecked
|
|
192
198
|
}, props)) : /*#__PURE__*/_react.default.createElement(_Styles.StyledRadioButton, _extends({
|
|
193
199
|
checked: selectedOptions.length < 1 || !selectedOptions[0]
|
|
194
200
|
}, props)) : type === "multiple" ? /*#__PURE__*/_react.default.createElement(_Styles.StyledCheckbox, props) : /*#__PURE__*/_react.default.createElement(_Styles.StyledRadioButton, props));
|
|
195
|
-
}, [isAllOptionsChecked, renderOption, selectedOptions, type]);
|
|
201
|
+
}, [isAllOptionsChecked, renderOption, selectedOptions, type, someOptionsChecked]);
|
|
196
202
|
return /*#__PURE__*/_react.default.createElement(Tag, props, /*#__PURE__*/_react.default.createElement("div", null, !disableSearch ? /*#__PURE__*/_react.default.createElement(_Styles.StyledSelectForm, {
|
|
197
203
|
ref: formRef
|
|
198
204
|
}, /*#__PURE__*/_react.default.createElement(_Styles.StyledSelectInput, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Select.js","names":["Select","type","mode","target","options","selected","position","onChange","actionIcon","actionLabel","placeholder","emptyAction","disableSearch","forceCloseMenu","selectClassName","keepSameOptionsOrder","onSelectOpen","onSelectClose","renderOption","handleDefaultOptionChange","preselectDefaultValue","prop","childNode","useRef","elementRef","handleRef","useForkRef","Tag","Menu","formRef","useState","open","setOpen","selectedOptions","useMemo","Array","selectOptions","allOptionValues","reduce","acc","option","isOptionGroup","id","allGroupOptions","map","isAllOptionsChecked","every","includes","useEffect","current","focus","handleChange","useCallback","selectedValue","onClose","onOpen","props","menuClassName","classNames","onPopperOpen","className","handleEmptyAction","value","reset","handleDefaultOptionChangeCallback","length","handleRenderOption","image","color","textColor","name","additionalInfo","zIndex","displayName"],"sources":["../../../../src/components/Select/Select.tsx"],"sourcesContent":["import React, {\n FC,\n useCallback,\n useState,\n ReactElement,\n useMemo,\n useEffect,\n useRef,\n Ref,\n} 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<\n IAutocompleteProps,\n \"handleChange\" | \"inputEl\" | \"handleEmptyAction\" | \"clearInputOnSelect\"\n > {\n /** Menu width mode */\n mode?: \"normal\" | \"wider\" | \"tiny\";\n /** Set select target element */\n target?: ElementWithRef<Element>;\n /** Set Select position */\n position?: Placement;\n /** onChange callback */\n onChange?: (e: (string | number)[] | string | number) => void;\n /** 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 = useRef<HTMLInputElement | null>();\n const elementRef = useRef<HTMLInputElement | null>(null);\n\n const handleRef = useForkRef(childNode, elementRef);\n\n const Tag = !target ? \"div\" : Menu;\n const formRef = useRef<HTMLFormElement | null>(null);\n\n const [open, setOpen] = useState(false);\n\n const selectedOptions = useMemo(\n () => (selected instanceof Array ? selected : [selected]),\n [selected]\n );\n\n const selectOptions = useMemo(() => {\n if (!options) {\n return [];\n }\n return options;\n }, [options]);\n\n const allOptionValues = useMemo(() => {\n return selectOptions.reduce(\n (\n acc: (string | number)[],\n option: IOptionGroupProps | IOptionItemProps\n ) => {\n if (!isOptionGroup(option)) {\n return [...acc, option.id];\n }\n const allGroupOptions = option.options.map((option) => option.id);\n return [...acc, ...allGroupOptions];\n },\n []\n );\n }, [selectOptions]);\n\n const isAllOptionsChecked = useMemo(\n () => allOptionValues.every((option) => selectedOptions.includes(option)),\n [allOptionValues, selectedOptions]\n );\n\n useEffect(() => {\n open && childNode?.current?.focus();\n }, [childNode, open]);\n\n const handleChange = useCallback(\n (selectedValue) => {\n if (forceCloseMenu) {\n if (typeof onSelectClose === \"function\") onSelectClose();\n setOpen(false);\n }\n if (selectedValue !== selected) {\n onChange(selectedValue);\n }\n },\n [forceCloseMenu, selected, onSelectClose, onChange]\n );\n\n const onClose = useCallback(() => {\n setOpen(false);\n if (onSelectClose) {\n onSelectClose();\n }\n }, [onSelectClose]);\n\n const onOpen = useCallback(() => {\n setOpen(true);\n if (onSelectOpen) {\n onSelectOpen();\n }\n }, [onSelectOpen]);\n\n const props = useMemo(() => {\n if (target) {\n return {\n menuClassName: classNames(\"c-select\", selectClassName),\n onClose,\n onOpen,\n target,\n mode,\n open,\n position,\n onPopperOpen: () => elementRef?.current?.focus(),\n };\n }\n return { className: classNames(\"c-select\", selectClassName) };\n }, [target, selectClassName, onClose, onOpen, mode, open, position]);\n\n const handleEmptyAction = useCallback(\n (value) => {\n emptyAction(value);\n if (forceCloseMenu) {\n setOpen(false);\n }\n formRef.current?.reset();\n },\n [emptyAction, forceCloseMenu]\n );\n\n const handleDefaultOptionChangeCallback = useCallback(() => {\n if (type === \"multiple\") {\n if (selectedOptions.length === allOptionValues.length) {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange([]);\n }\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange(allOptionValues);\n }\n }\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange(\"\");\n }\n }\n if (forceCloseMenu) {\n setOpen(false);\n }\n }, [\n onChange,\n type,\n forceCloseMenu,\n selectedOptions.length,\n allOptionValues,\n handleDefaultOptionChange,\n ]);\n\n const handleRenderOption = useCallback(\n (option, props) => {\n if (typeof renderOption === \"function\") {\n return renderOption(option, props);\n }\n return (\n <>\n <OptionContent\n imageUrl={option.image}\n color={option.color}\n textColor={option.textColor}\n name={option.name}\n additionalInfo={option.additionalInfo}\n />\n {option.id === null ? (\n type === \"multiple\" ? (\n <StyledCheckbox 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 ref={handleRef} placeholder={placeholder} />\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 clearInputOnSelect\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"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Select.js","names":["Select","type","mode","target","options","selected","position","onChange","actionIcon","actionLabel","placeholder","emptyAction","disableSearch","forceCloseMenu","selectClassName","keepSameOptionsOrder","onSelectOpen","onSelectClose","renderOption","handleDefaultOptionChange","preselectDefaultValue","prop","childNode","useRef","elementRef","handleRef","useForkRef","Tag","Menu","formRef","useState","open","setOpen","selectedOptions","useMemo","Array","selectOptions","allOptionValues","reduce","acc","option","isOptionGroup","id","allGroupOptions","map","isAllOptionsChecked","every","includes","someOptionsChecked","some","useEffect","current","focus","handleChange","useCallback","selectedValue","onClose","onOpen","props","menuClassName","classNames","onPopperOpen","className","handleEmptyAction","value","reset","handleDefaultOptionChangeCallback","length","handleRenderOption","image","color","textColor","name","additionalInfo","zIndex","displayName"],"sources":["../../../../src/components/Select/Select.tsx"],"sourcesContent":["import React, {\n FC,\n useCallback,\n useState,\n ReactElement,\n useMemo,\n useEffect,\n useRef,\n Ref,\n} 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<\n IAutocompleteProps,\n \"handleChange\" | \"inputEl\" | \"handleEmptyAction\" | \"clearInputOnSelect\"\n > {\n /** Menu width mode */\n mode?: \"normal\" | \"wider\" | \"tiny\";\n /** Set select target element */\n target?: ElementWithRef<Element>;\n /** Set Select position */\n position?: Placement;\n /** onChange callback */\n onChange?: (e: (string | number)[] | string | number) => void;\n /** 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 = useRef<HTMLInputElement | null>();\n const elementRef = useRef<HTMLInputElement | null>(null);\n\n const handleRef = useForkRef(childNode, elementRef);\n\n const Tag = !target ? \"div\" : Menu;\n const formRef = useRef<HTMLFormElement | null>(null);\n\n const [open, setOpen] = useState(false);\n\n const selectedOptions = useMemo(\n () => (selected instanceof Array ? selected : [selected]),\n [selected]\n );\n\n const selectOptions = useMemo(() => {\n if (!options) {\n return [];\n }\n return options;\n }, [options]);\n\n const allOptionValues = useMemo(() => {\n return selectOptions.reduce(\n (\n acc: (string | number)[],\n option: IOptionGroupProps | IOptionItemProps\n ) => {\n if (!isOptionGroup(option)) {\n return [...acc, option.id];\n }\n const allGroupOptions = option.options.map((option) => option.id);\n return [...acc, ...allGroupOptions];\n },\n []\n );\n }, [selectOptions]);\n\n const isAllOptionsChecked = useMemo(\n () => allOptionValues.every((option) => selectedOptions.includes(option)),\n [allOptionValues, selectedOptions]\n );\n\n const someOptionsChecked = useMemo(\n () => allOptionValues.some((option) => selectedOptions.includes(option)),\n [allOptionValues, selectedOptions]\n );\n\n useEffect(() => {\n open && childNode?.current?.focus();\n }, [childNode, open]);\n\n const handleChange = useCallback(\n (selectedValue) => {\n if (forceCloseMenu) {\n if (typeof onSelectClose === \"function\") onSelectClose();\n setOpen(false);\n }\n if (selectedValue !== selected) {\n onChange(selectedValue);\n }\n },\n [forceCloseMenu, selected, onSelectClose, onChange]\n );\n\n const onClose = useCallback(() => {\n setOpen(false);\n if (onSelectClose) {\n onSelectClose();\n }\n }, [onSelectClose]);\n\n const onOpen = useCallback(() => {\n setOpen(true);\n if (onSelectOpen) {\n onSelectOpen();\n }\n }, [onSelectOpen]);\n\n const props = useMemo(() => {\n if (target) {\n return {\n menuClassName: classNames(\"c-select\", selectClassName),\n onClose,\n onOpen,\n target,\n mode,\n open,\n position,\n onPopperOpen: () => elementRef?.current?.focus(),\n };\n }\n return { className: classNames(\"c-select\", selectClassName) };\n }, [target, selectClassName, onClose, onOpen, mode, open, position]);\n\n const handleEmptyAction = useCallback(\n (value) => {\n emptyAction(value);\n if (forceCloseMenu) {\n setOpen(false);\n }\n formRef.current?.reset();\n },\n [emptyAction, forceCloseMenu]\n );\n\n const handleDefaultOptionChangeCallback = useCallback(() => {\n if (type === \"multiple\") {\n if (selectedOptions.length === allOptionValues.length) {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange([]);\n }\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange(allOptionValues);\n }\n }\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange(\"\");\n }\n }\n if (forceCloseMenu) {\n setOpen(false);\n }\n }, [\n onChange,\n type,\n forceCloseMenu,\n selectedOptions.length,\n allOptionValues,\n handleDefaultOptionChange,\n ]);\n\n const handleRenderOption = useCallback(\n (option, props) => {\n if (typeof renderOption === \"function\") {\n return renderOption(option, props);\n }\n return (\n <>\n <OptionContent\n imageUrl={option.image}\n color={option.color}\n textColor={option.textColor}\n name={option.name}\n additionalInfo={option.additionalInfo}\n />\n {option.id === null ? (\n type === \"multiple\" ? (\n <StyledCheckbox\n checked={isAllOptionsChecked}\n isIndeterminate={someOptionsChecked && !isAllOptionsChecked}\n {...props}\n />\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 [\n isAllOptionsChecked,\n renderOption,\n selectedOptions,\n type,\n someOptionsChecked,\n ]\n );\n\n return (\n <Tag {...props}>\n <div>\n {!disableSearch ? (\n <StyledSelectForm ref={formRef}>\n <StyledSelectInput ref={handleRef} placeholder={placeholder} />\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 clearInputOnSelect\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"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OptionGroup.d.ts","sourceRoot":"","sources":["../../../../../src/components/Select/OptionGroup/OptionGroup.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAmC,EAAE,EAAE,MAAM,OAAO,CAAC;AAEnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAWpD,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACzD,yBAAyB;IACzB,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B;AAED,UAAU,2BAA2B;IACnC,sCAAsC;IACtC,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC7B,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC/B,wBAAwB;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qBAAqB;IACrB,OAAO,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAC7B,wBAAwB;IACxB,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC;IAC5C,mCAAmC;IACnC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IACpD,sBAAsB;IACtB,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChE,uCAAuC;IACvC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,eAAO,MAAM,WAAW,EAAE,EAAE,CAC1B,iBAAiB,GAAG,2BAA2B,
|
|
1
|
+
{"version":3,"file":"OptionGroup.d.ts","sourceRoot":"","sources":["../../../../../src/components/Select/OptionGroup/OptionGroup.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAmC,EAAE,EAAE,MAAM,OAAO,CAAC;AAEnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAWpD,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACzD,yBAAyB;IACzB,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B;AAED,UAAU,2BAA2B;IACnC,sCAAsC;IACtC,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC7B,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC/B,wBAAwB;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qBAAqB;IACrB,OAAO,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAC7B,wBAAwB;IACxB,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC;IAC5C,mCAAmC;IACnC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IACpD,sBAAsB;IACtB,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChE,uCAAuC;IACvC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,eAAO,MAAM,WAAW,EAAE,EAAE,CAC1B,iBAAiB,GAAG,2BAA2B,CAwGhD,CAAC"}
|
|
@@ -70,6 +70,9 @@ export var OptionGroup = function OptionGroup(_ref) {
|
|
|
70
70
|
}, name), type === "multiple" && /*#__PURE__*/React.createElement(Checkbox, {
|
|
71
71
|
id: "" + id,
|
|
72
72
|
checked: isAllOptionsChecked,
|
|
73
|
+
isIndeterminate: options.some(function (option) {
|
|
74
|
+
return checked.includes(option.id);
|
|
75
|
+
}) && !isAllOptionsChecked,
|
|
73
76
|
onChange: handleClick,
|
|
74
77
|
type: "checkbox"
|
|
75
78
|
}))), /*#__PURE__*/React.createElement(List, null, list.map(function (item, index) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OptionGroup.js","names":["React","useCallback","useEffect","useMemo","classNames","Checkbox","StyledOptionGroup","StyledOptionGroupHeader","StyledOptionGroupOption","StyledOptionGroupLi","StyledOptionGroupHeaderName","List","OptionGroup","id","name","options","type","hover","filter","checked","onChange","setHover","renderOptions","optionGroupClassName","list","v","toLowerCase","includes","trim","document","getElementById","focus","isAllOptionsChecked","every","option","handleHover","undefined","allOptionValues","map","handleClick","e","stopPropagation","i","values","unique","item","pos","indexOf","index","displayName"],"sources":["../../../../../src/components/Select/OptionGroup/OptionGroup.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, FC } from \"react\";\nimport classNames from \"classnames\";\nimport { IOptionItemProps } from \"../Option/Option\";\nimport { Checkbox } from \"../../Checkbox/Checkbox\";\nimport {\n StyledOptionGroup,\n StyledOptionGroupHeader,\n StyledOptionGroupOption,\n StyledOptionGroupLi,\n StyledOptionGroupHeaderName,\n} from \"./Styles\";\nimport { List } from \"../../List\";\n\nexport interface IOptionGroupProps extends IOptionItemProps {\n /** Options items list */\n options: IOptionItemProps[];\n}\n\ninterface IAdditionalOptionGroupProps {\n /** Select type: single or multiple */\n type?: \"single\" | \"multiple\";\n /** Value of hovered element */\n hover?: number | string | null;\n /** Filter for labels */\n filter?: string;\n /** Checked values */\n checked: (string | number)[];\n /** onChange callback */\n onChange?: (e: (string | number)[]) => void;\n /** Set value of hovered element */\n setHover?: (e: number | string | undefined) => void;\n /** Render function */\n renderOptions?: (item: IOptionItemProps, index: number) => void;\n /** Value that represent class names */\n optionGroupClassName?: string;\n}\n\nexport const OptionGroup: FC<\n IOptionGroupProps & IAdditionalOptionGroupProps\n> = ({\n id,\n name,\n options,\n type,\n hover,\n filter,\n checked,\n onChange,\n setHover,\n renderOptions,\n optionGroupClassName,\n}) => {\n const list = useMemo(\n () =>\n filter\n ? options.filter((v) =>\n v.name.toLowerCase().includes(filter.trim().toLowerCase())\n )\n : options,\n [filter, options]\n );\n\n useEffect(() => {\n if (hover === id && type !== \"single\") {\n document.getElementById(`${id}`)?.focus();\n }\n }, [hover, type, id]);\n\n const isAllOptionsChecked = useMemo(\n () => options.every((option) => checked.includes(option.id)),\n [options, checked]\n );\n\n const handleHover = useCallback(() => {\n if (setHover) {\n setHover(type === \"single\" ? undefined : id);\n }\n }, [setHover, type, id]);\n\n const allOptionValues = useMemo(\n () => options.map((option) => option.id),\n [options]\n );\n\n const handleClick = useCallback(\n (e) => {\n e.stopPropagation();\n if (onChange) {\n if (isAllOptionsChecked) {\n onChange(\n checked.filter((i) => allOptionValues.includes(i) === false)\n );\n } else {\n const values = [...checked, ...allOptionValues];\n const unique = values.filter((item, pos) => {\n return values.indexOf(item) === pos;\n });\n onChange(unique);\n }\n }\n },\n [allOptionValues, checked, isAllOptionsChecked, onChange]\n );\n\n return (\n <StyledOptionGroupLi\n key={id}\n className={classNames(\"c-option-group\", optionGroupClassName)}\n >\n <StyledOptionGroup key={id}>\n <StyledOptionGroupOption\n onMouseEnter={handleHover}\n hover={hover === id && type === \"multiple\"}\n >\n <StyledOptionGroupHeader>\n <StyledOptionGroupHeaderName weight=\"bold\">\n {name}\n </StyledOptionGroupHeaderName>\n {type === \"multiple\" && (\n <Checkbox\n id={`${id}`}\n checked={isAllOptionsChecked}\n onChange={handleClick}\n type=\"checkbox\"\n />\n )}\n </StyledOptionGroupHeader>\n </StyledOptionGroupOption>\n <List>\n {list.map((item: IOptionItemProps, index) => {\n return typeof renderOptions === \"function\"\n ? renderOptions(item, index)\n : item.name;\n })}\n </List>\n </StyledOptionGroup>\n </StyledOptionGroupLi>\n );\n};\n\nOptionGroup.displayName = \"OptionGroup\";\n"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"OptionGroup.js","names":["React","useCallback","useEffect","useMemo","classNames","Checkbox","StyledOptionGroup","StyledOptionGroupHeader","StyledOptionGroupOption","StyledOptionGroupLi","StyledOptionGroupHeaderName","List","OptionGroup","id","name","options","type","hover","filter","checked","onChange","setHover","renderOptions","optionGroupClassName","list","v","toLowerCase","includes","trim","document","getElementById","focus","isAllOptionsChecked","every","option","handleHover","undefined","allOptionValues","map","handleClick","e","stopPropagation","i","values","unique","item","pos","indexOf","some","index","displayName"],"sources":["../../../../../src/components/Select/OptionGroup/OptionGroup.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, FC } from \"react\";\nimport classNames from \"classnames\";\nimport { IOptionItemProps } from \"../Option/Option\";\nimport { Checkbox } from \"../../Checkbox/Checkbox\";\nimport {\n StyledOptionGroup,\n StyledOptionGroupHeader,\n StyledOptionGroupOption,\n StyledOptionGroupLi,\n StyledOptionGroupHeaderName,\n} from \"./Styles\";\nimport { List } from \"../../List\";\n\nexport interface IOptionGroupProps extends IOptionItemProps {\n /** Options items list */\n options: IOptionItemProps[];\n}\n\ninterface IAdditionalOptionGroupProps {\n /** Select type: single or multiple */\n type?: \"single\" | \"multiple\";\n /** Value of hovered element */\n hover?: number | string | null;\n /** Filter for labels */\n filter?: string;\n /** Checked values */\n checked: (string | number)[];\n /** onChange callback */\n onChange?: (e: (string | number)[]) => void;\n /** Set value of hovered element */\n setHover?: (e: number | string | undefined) => void;\n /** Render function */\n renderOptions?: (item: IOptionItemProps, index: number) => void;\n /** Value that represent class names */\n optionGroupClassName?: string;\n}\n\nexport const OptionGroup: FC<\n IOptionGroupProps & IAdditionalOptionGroupProps\n> = ({\n id,\n name,\n options,\n type,\n hover,\n filter,\n checked,\n onChange,\n setHover,\n renderOptions,\n optionGroupClassName,\n}) => {\n const list = useMemo(\n () =>\n filter\n ? options.filter((v) =>\n v.name.toLowerCase().includes(filter.trim().toLowerCase())\n )\n : options,\n [filter, options]\n );\n\n useEffect(() => {\n if (hover === id && type !== \"single\") {\n document.getElementById(`${id}`)?.focus();\n }\n }, [hover, type, id]);\n\n const isAllOptionsChecked = useMemo(\n () => options.every((option) => checked.includes(option.id)),\n [options, checked]\n );\n\n const handleHover = useCallback(() => {\n if (setHover) {\n setHover(type === \"single\" ? undefined : id);\n }\n }, [setHover, type, id]);\n\n const allOptionValues = useMemo(\n () => options.map((option) => option.id),\n [options]\n );\n\n const handleClick = useCallback(\n (e) => {\n e.stopPropagation();\n if (onChange) {\n if (isAllOptionsChecked) {\n onChange(\n checked.filter((i) => allOptionValues.includes(i) === false)\n );\n } else {\n const values = [...checked, ...allOptionValues];\n const unique = values.filter((item, pos) => {\n return values.indexOf(item) === pos;\n });\n onChange(unique);\n }\n }\n },\n [allOptionValues, checked, isAllOptionsChecked, onChange]\n );\n\n return (\n <StyledOptionGroupLi\n key={id}\n className={classNames(\"c-option-group\", optionGroupClassName)}\n >\n <StyledOptionGroup key={id}>\n <StyledOptionGroupOption\n onMouseEnter={handleHover}\n hover={hover === id && type === \"multiple\"}\n >\n <StyledOptionGroupHeader>\n <StyledOptionGroupHeaderName weight=\"bold\">\n {name}\n </StyledOptionGroupHeaderName>\n {type === \"multiple\" && (\n <Checkbox\n id={`${id}`}\n checked={isAllOptionsChecked}\n isIndeterminate={\n options.some((option) => checked.includes(option.id)) &&\n !isAllOptionsChecked\n }\n onChange={handleClick}\n type=\"checkbox\"\n />\n )}\n </StyledOptionGroupHeader>\n </StyledOptionGroupOption>\n <List>\n {list.map((item: IOptionItemProps, index) => {\n return typeof renderOptions === \"function\"\n ? renderOptions(item, index)\n : item.name;\n })}\n </List>\n </StyledOptionGroup>\n </StyledOptionGroupLi>\n );\n};\n\nOptionGroup.displayName = \"OptionGroup\";\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,SAAS,EAAEC,OAAO,QAAY,OAAO;AAClE,OAAOC,UAAU,MAAM,YAAY;AAEnC,SAASC,QAAQ,QAAQ,yBAAyB;AAClD,SACEC,iBAAiB,EACjBC,uBAAuB,EACvBC,uBAAuB,EACvBC,mBAAmB,EACnBC,2BAA2B,QACtB,UAAU;AACjB,SAASC,IAAI,QAAQ,YAAY;AA0BjC,OAAO,IAAMC,WAEZ,GAAG,SAFSA,WAEZ,OAYK;EAAA,IAXJC,EAAE,QAAFA,EAAE;IACFC,IAAI,QAAJA,IAAI;IACJC,OAAO,QAAPA,OAAO;IACPC,IAAI,QAAJA,IAAI;IACJC,KAAK,QAALA,KAAK;IACLC,MAAM,QAANA,MAAM;IACNC,OAAO,QAAPA,OAAO;IACPC,QAAQ,QAARA,QAAQ;IACRC,QAAQ,QAARA,QAAQ;IACRC,aAAa,QAAbA,aAAa;IACbC,oBAAoB,QAApBA,oBAAoB;EAEpB,IAAMC,IAAI,GAAGrB,OAAO,CAClB;IAAA,OACEe,MAAM,GACFH,OAAO,CAACG,MAAM,CAAC,UAACO,CAAC;MAAA,OACfA,CAAC,CAACX,IAAI,CAACY,WAAW,EAAE,CAACC,QAAQ,CAACT,MAAM,CAACU,IAAI,EAAE,CAACF,WAAW,EAAE,CAAC;IAAA,EAC3D,GACDX,OAAO;EAAA,GACb,CAACG,MAAM,EAAEH,OAAO,CAAC,CAClB;EAEDb,SAAS,CAAC,YAAM;IACd,IAAIe,KAAK,KAAKJ,EAAE,IAAIG,IAAI,KAAK,QAAQ,EAAE;MAAA;MACrC,yBAAAa,QAAQ,CAACC,cAAc,MAAIjB,EAAE,CAAG,qBAAhC,sBAAkCkB,KAAK,EAAE;IAC3C;EACF,CAAC,EAAE,CAACd,KAAK,EAAED,IAAI,EAAEH,EAAE,CAAC,CAAC;EAErB,IAAMmB,mBAAmB,GAAG7B,OAAO,CACjC;IAAA,OAAMY,OAAO,CAACkB,KAAK,CAAC,UAACC,MAAM;MAAA,OAAKf,OAAO,CAACQ,QAAQ,CAACO,MAAM,CAACrB,EAAE,CAAC;IAAA,EAAC;EAAA,GAC5D,CAACE,OAAO,EAAEI,OAAO,CAAC,CACnB;EAED,IAAMgB,WAAW,GAAGlC,WAAW,CAAC,YAAM;IACpC,IAAIoB,QAAQ,EAAE;MACZA,QAAQ,CAACL,IAAI,KAAK,QAAQ,GAAGoB,SAAS,GAAGvB,EAAE,CAAC;IAC9C;EACF,CAAC,EAAE,CAACQ,QAAQ,EAAEL,IAAI,EAAEH,EAAE,CAAC,CAAC;EAExB,IAAMwB,eAAe,GAAGlC,OAAO,CAC7B;IAAA,OAAMY,OAAO,CAACuB,GAAG,CAAC,UAACJ,MAAM;MAAA,OAAKA,MAAM,CAACrB,EAAE;IAAA,EAAC;EAAA,GACxC,CAACE,OAAO,CAAC,CACV;EAED,IAAMwB,WAAW,GAAGtC,WAAW,CAC7B,UAACuC,CAAC,EAAK;IACLA,CAAC,CAACC,eAAe,EAAE;IACnB,IAAIrB,QAAQ,EAAE;MACZ,IAAIY,mBAAmB,EAAE;QACvBZ,QAAQ,CACND,OAAO,CAACD,MAAM,CAAC,UAACwB,CAAC;UAAA,OAAKL,eAAe,CAACV,QAAQ,CAACe,CAAC,CAAC,KAAK,KAAK;QAAA,EAAC,CAC7D;MACH,CAAC,MAAM;QACL,IAAMC,MAAM,aAAOxB,OAAO,EAAKkB,eAAe,CAAC;QAC/C,IAAMO,MAAM,GAAGD,MAAM,CAACzB,MAAM,CAAC,UAAC2B,IAAI,EAAEC,GAAG,EAAK;UAC1C,OAAOH,MAAM,CAACI,OAAO,CAACF,IAAI,CAAC,KAAKC,GAAG;QACrC,CAAC,CAAC;QACF1B,QAAQ,CAACwB,MAAM,CAAC;MAClB;IACF;EACF,CAAC,EACD,CAACP,eAAe,EAAElB,OAAO,EAAEa,mBAAmB,EAAEZ,QAAQ,CAAC,CAC1D;EAED,oBACE,oBAAC,mBAAmB;IAClB,GAAG,EAAEP,EAAG;IACR,SAAS,EAAET,UAAU,CAAC,gBAAgB,EAAEmB,oBAAoB;EAAE,gBAE9D,oBAAC,iBAAiB;IAAC,GAAG,EAAEV;EAAG,gBACzB,oBAAC,uBAAuB;IACtB,YAAY,EAAEsB,WAAY;IAC1B,KAAK,EAAElB,KAAK,KAAKJ,EAAE,IAAIG,IAAI,KAAK;EAAW,gBAE3C,oBAAC,uBAAuB,qBACtB,oBAAC,2BAA2B;IAAC,MAAM,EAAC;EAAM,GACvCF,IAAI,CACuB,EAC7BE,IAAI,KAAK,UAAU,iBAClB,oBAAC,QAAQ;IACP,EAAE,OAAKH,EAAK;IACZ,OAAO,EAAEmB,mBAAoB;IAC7B,eAAe,EACbjB,OAAO,CAACiC,IAAI,CAAC,UAACd,MAAM;MAAA,OAAKf,OAAO,CAACQ,QAAQ,CAACO,MAAM,CAACrB,EAAE,CAAC;IAAA,EAAC,IACrD,CAACmB,mBACF;IACD,QAAQ,EAAEO,WAAY;IACtB,IAAI,EAAC;EAAU,EAElB,CACuB,CACF,eAC1B,oBAAC,IAAI,QACFf,IAAI,CAACc,GAAG,CAAC,UAACO,IAAsB,EAAEI,KAAK,EAAK;IAC3C,OAAO,OAAO3B,aAAa,KAAK,UAAU,GACtCA,aAAa,CAACuB,IAAI,EAAEI,KAAK,CAAC,GAC1BJ,IAAI,CAAC/B,IAAI;EACf,CAAC,CAAC,CACG,CACW,CACA;AAE1B,CAAC;AAEDF,WAAW,CAACsC,WAAW,GAAG,aAAa"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../../../src/components/Select/Select.tsx"],"names":[],"mappings":"AAAA,OAAc,EACZ,EAAE,EAGF,YAAY,EAIZ,GAAG,EACJ,MAAM,OAAO,CAAC;AAOf,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAUlE,UAAU,cAAc,CAAC,CAAC,CAAE,SAAQ,YAAY;IAC9C,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;CACd;AAED,MAAM,WAAW,YACf,SAAQ,IAAI,CACV,kBAAkB,EAClB,cAAc,GAAG,SAAS,GAAG,mBAAmB,GAAG,oBAAoB,CACxE;IACD,sBAAsB;IACtB,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;IACnC,gCAAgC;IAChC,MAAM,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IACjC,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,wBAAwB;IACxB,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IAC9D,gCAAgC;IAChC,UAAU,CAAC,EAAE,YAAY,CAAC;IAC1B,gCAAgC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IAC9C,gCAAgC;IAChC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,2BAA2B;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,4BAA4B;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qDAAqD;IACrD,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,qDAAqD;IACrD,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED,eAAO,MAAM,MAAM,EAAE,EAAE,CAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../../../src/components/Select/Select.tsx"],"names":[],"mappings":"AAAA,OAAc,EACZ,EAAE,EAGF,YAAY,EAIZ,GAAG,EACJ,MAAM,OAAO,CAAC;AAOf,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAUlE,UAAU,cAAc,CAAC,CAAC,CAAE,SAAQ,YAAY;IAC9C,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;CACd;AAED,MAAM,WAAW,YACf,SAAQ,IAAI,CACV,kBAAkB,EAClB,cAAc,GAAG,SAAS,GAAG,mBAAmB,GAAG,oBAAoB,CACxE;IACD,sBAAsB;IACtB,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;IACnC,gCAAgC;IAChC,MAAM,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IACjC,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,wBAAwB;IACxB,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IAC9D,gCAAgC;IAChC,UAAU,CAAC,EAAE,YAAY,CAAC;IAC1B,gCAAgC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IAC9C,gCAAgC;IAChC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,2BAA2B;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,4BAA4B;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qDAAqD;IACrD,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,qDAAqD;IACrD,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED,eAAO,MAAM,MAAM,EAAE,EAAE,CAAC,YAAY,CAiPnC,CAAC"}
|
|
@@ -76,6 +76,11 @@ export var Select = function Select(_ref) {
|
|
|
76
76
|
return selectedOptions.includes(option);
|
|
77
77
|
});
|
|
78
78
|
}, [allOptionValues, selectedOptions]);
|
|
79
|
+
var someOptionsChecked = useMemo(function () {
|
|
80
|
+
return allOptionValues.some(function (option) {
|
|
81
|
+
return selectedOptions.includes(option);
|
|
82
|
+
});
|
|
83
|
+
}, [allOptionValues, selectedOptions]);
|
|
79
84
|
useEffect(function () {
|
|
80
85
|
var _childNode$current;
|
|
81
86
|
open && (childNode == null ? void 0 : (_childNode$current = childNode.current) == null ? void 0 : _childNode$current.focus());
|
|
@@ -166,11 +171,12 @@ export var Select = function Select(_ref) {
|
|
|
166
171
|
name: option.name,
|
|
167
172
|
additionalInfo: option.additionalInfo
|
|
168
173
|
}), option.id === null ? type === "multiple" ? /*#__PURE__*/React.createElement(StyledCheckbox, _extends({
|
|
169
|
-
checked: isAllOptionsChecked
|
|
174
|
+
checked: isAllOptionsChecked,
|
|
175
|
+
isIndeterminate: someOptionsChecked && !isAllOptionsChecked
|
|
170
176
|
}, props)) : /*#__PURE__*/React.createElement(StyledRadioButton, _extends({
|
|
171
177
|
checked: selectedOptions.length < 1 || !selectedOptions[0]
|
|
172
178
|
}, props)) : type === "multiple" ? /*#__PURE__*/React.createElement(StyledCheckbox, props) : /*#__PURE__*/React.createElement(StyledRadioButton, props));
|
|
173
|
-
}, [isAllOptionsChecked, renderOption, selectedOptions, type]);
|
|
179
|
+
}, [isAllOptionsChecked, renderOption, selectedOptions, type, someOptionsChecked]);
|
|
174
180
|
return /*#__PURE__*/React.createElement(Tag, props, /*#__PURE__*/React.createElement("div", null, !disableSearch ? /*#__PURE__*/React.createElement(StyledSelectForm, {
|
|
175
181
|
ref: formRef
|
|
176
182
|
}, /*#__PURE__*/React.createElement(StyledSelectInput, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Select.js","names":["React","useCallback","useState","useMemo","useEffect","useRef","Autocomplete","isOptionGroup","Tooltip","Menu","classNames","useForkRef","StyledSelectForm","StyledSelectInput","StyledCheckbox","StyledRadioButton","OptionContent","Select","type","mode","target","options","selected","position","onChange","actionIcon","actionLabel","placeholder","emptyAction","disableSearch","forceCloseMenu","selectClassName","keepSameOptionsOrder","onSelectOpen","onSelectClose","renderOption","handleDefaultOptionChange","preselectDefaultValue","prop","childNode","elementRef","handleRef","Tag","formRef","open","setOpen","selectedOptions","Array","selectOptions","allOptionValues","reduce","acc","option","id","allGroupOptions","map","isAllOptionsChecked","every","includes","current","focus","handleChange","selectedValue","onClose","onOpen","props","menuClassName","onPopperOpen","className","handleEmptyAction","value","reset","handleDefaultOptionChangeCallback","length","handleRenderOption","image","color","textColor","name","additionalInfo","zIndex","displayName"],"sources":["../../../../src/components/Select/Select.tsx"],"sourcesContent":["import React, {\n FC,\n useCallback,\n useState,\n ReactElement,\n useMemo,\n useEffect,\n useRef,\n Ref,\n} 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<\n IAutocompleteProps,\n \"handleChange\" | \"inputEl\" | \"handleEmptyAction\" | \"clearInputOnSelect\"\n > {\n /** Menu width mode */\n mode?: \"normal\" | \"wider\" | \"tiny\";\n /** Set select target element */\n target?: ElementWithRef<Element>;\n /** Set Select position */\n position?: Placement;\n /** onChange callback */\n onChange?: (e: (string | number)[] | string | number) => void;\n /** 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 = useRef<HTMLInputElement | null>();\n const elementRef = useRef<HTMLInputElement | null>(null);\n\n const handleRef = useForkRef(childNode, elementRef);\n\n const Tag = !target ? \"div\" : Menu;\n const formRef = useRef<HTMLFormElement | null>(null);\n\n const [open, setOpen] = useState(false);\n\n const selectedOptions = useMemo(\n () => (selected instanceof Array ? selected : [selected]),\n [selected]\n );\n\n const selectOptions = useMemo(() => {\n if (!options) {\n return [];\n }\n return options;\n }, [options]);\n\n const allOptionValues = useMemo(() => {\n return selectOptions.reduce(\n (\n acc: (string | number)[],\n option: IOptionGroupProps | IOptionItemProps\n ) => {\n if (!isOptionGroup(option)) {\n return [...acc, option.id];\n }\n const allGroupOptions = option.options.map((option) => option.id);\n return [...acc, ...allGroupOptions];\n },\n []\n );\n }, [selectOptions]);\n\n const isAllOptionsChecked = useMemo(\n () => allOptionValues.every((option) => selectedOptions.includes(option)),\n [allOptionValues, selectedOptions]\n );\n\n useEffect(() => {\n open && childNode?.current?.focus();\n }, [childNode, open]);\n\n const handleChange = useCallback(\n (selectedValue) => {\n if (forceCloseMenu) {\n if (typeof onSelectClose === \"function\") onSelectClose();\n setOpen(false);\n }\n if (selectedValue !== selected) {\n onChange(selectedValue);\n }\n },\n [forceCloseMenu, selected, onSelectClose, onChange]\n );\n\n const onClose = useCallback(() => {\n setOpen(false);\n if (onSelectClose) {\n onSelectClose();\n }\n }, [onSelectClose]);\n\n const onOpen = useCallback(() => {\n setOpen(true);\n if (onSelectOpen) {\n onSelectOpen();\n }\n }, [onSelectOpen]);\n\n const props = useMemo(() => {\n if (target) {\n return {\n menuClassName: classNames(\"c-select\", selectClassName),\n onClose,\n onOpen,\n target,\n mode,\n open,\n position,\n onPopperOpen: () => elementRef?.current?.focus(),\n };\n }\n return { className: classNames(\"c-select\", selectClassName) };\n }, [target, selectClassName, onClose, onOpen, mode, open, position]);\n\n const handleEmptyAction = useCallback(\n (value) => {\n emptyAction(value);\n if (forceCloseMenu) {\n setOpen(false);\n }\n formRef.current?.reset();\n },\n [emptyAction, forceCloseMenu]\n );\n\n const handleDefaultOptionChangeCallback = useCallback(() => {\n if (type === \"multiple\") {\n if (selectedOptions.length === allOptionValues.length) {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange([]);\n }\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange(allOptionValues);\n }\n }\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange(\"\");\n }\n }\n if (forceCloseMenu) {\n setOpen(false);\n }\n }, [\n onChange,\n type,\n forceCloseMenu,\n selectedOptions.length,\n allOptionValues,\n handleDefaultOptionChange,\n ]);\n\n const handleRenderOption = useCallback(\n (option, props) => {\n if (typeof renderOption === \"function\") {\n return renderOption(option, props);\n }\n return (\n <>\n <OptionContent\n imageUrl={option.image}\n color={option.color}\n textColor={option.textColor}\n name={option.name}\n additionalInfo={option.additionalInfo}\n />\n {option.id === null ? (\n type === \"multiple\" ? (\n <StyledCheckbox 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 ref={handleRef} placeholder={placeholder} />\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 clearInputOnSelect\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"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Select.js","names":["React","useCallback","useState","useMemo","useEffect","useRef","Autocomplete","isOptionGroup","Tooltip","Menu","classNames","useForkRef","StyledSelectForm","StyledSelectInput","StyledCheckbox","StyledRadioButton","OptionContent","Select","type","mode","target","options","selected","position","onChange","actionIcon","actionLabel","placeholder","emptyAction","disableSearch","forceCloseMenu","selectClassName","keepSameOptionsOrder","onSelectOpen","onSelectClose","renderOption","handleDefaultOptionChange","preselectDefaultValue","prop","childNode","elementRef","handleRef","Tag","formRef","open","setOpen","selectedOptions","Array","selectOptions","allOptionValues","reduce","acc","option","id","allGroupOptions","map","isAllOptionsChecked","every","includes","someOptionsChecked","some","current","focus","handleChange","selectedValue","onClose","onOpen","props","menuClassName","onPopperOpen","className","handleEmptyAction","value","reset","handleDefaultOptionChangeCallback","length","handleRenderOption","image","color","textColor","name","additionalInfo","zIndex","displayName"],"sources":["../../../../src/components/Select/Select.tsx"],"sourcesContent":["import React, {\n FC,\n useCallback,\n useState,\n ReactElement,\n useMemo,\n useEffect,\n useRef,\n Ref,\n} 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<\n IAutocompleteProps,\n \"handleChange\" | \"inputEl\" | \"handleEmptyAction\" | \"clearInputOnSelect\"\n > {\n /** Menu width mode */\n mode?: \"normal\" | \"wider\" | \"tiny\";\n /** Set select target element */\n target?: ElementWithRef<Element>;\n /** Set Select position */\n position?: Placement;\n /** onChange callback */\n onChange?: (e: (string | number)[] | string | number) => void;\n /** 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 = useRef<HTMLInputElement | null>();\n const elementRef = useRef<HTMLInputElement | null>(null);\n\n const handleRef = useForkRef(childNode, elementRef);\n\n const Tag = !target ? \"div\" : Menu;\n const formRef = useRef<HTMLFormElement | null>(null);\n\n const [open, setOpen] = useState(false);\n\n const selectedOptions = useMemo(\n () => (selected instanceof Array ? selected : [selected]),\n [selected]\n );\n\n const selectOptions = useMemo(() => {\n if (!options) {\n return [];\n }\n return options;\n }, [options]);\n\n const allOptionValues = useMemo(() => {\n return selectOptions.reduce(\n (\n acc: (string | number)[],\n option: IOptionGroupProps | IOptionItemProps\n ) => {\n if (!isOptionGroup(option)) {\n return [...acc, option.id];\n }\n const allGroupOptions = option.options.map((option) => option.id);\n return [...acc, ...allGroupOptions];\n },\n []\n );\n }, [selectOptions]);\n\n const isAllOptionsChecked = useMemo(\n () => allOptionValues.every((option) => selectedOptions.includes(option)),\n [allOptionValues, selectedOptions]\n );\n\n const someOptionsChecked = useMemo(\n () => allOptionValues.some((option) => selectedOptions.includes(option)),\n [allOptionValues, selectedOptions]\n );\n\n useEffect(() => {\n open && childNode?.current?.focus();\n }, [childNode, open]);\n\n const handleChange = useCallback(\n (selectedValue) => {\n if (forceCloseMenu) {\n if (typeof onSelectClose === \"function\") onSelectClose();\n setOpen(false);\n }\n if (selectedValue !== selected) {\n onChange(selectedValue);\n }\n },\n [forceCloseMenu, selected, onSelectClose, onChange]\n );\n\n const onClose = useCallback(() => {\n setOpen(false);\n if (onSelectClose) {\n onSelectClose();\n }\n }, [onSelectClose]);\n\n const onOpen = useCallback(() => {\n setOpen(true);\n if (onSelectOpen) {\n onSelectOpen();\n }\n }, [onSelectOpen]);\n\n const props = useMemo(() => {\n if (target) {\n return {\n menuClassName: classNames(\"c-select\", selectClassName),\n onClose,\n onOpen,\n target,\n mode,\n open,\n position,\n onPopperOpen: () => elementRef?.current?.focus(),\n };\n }\n return { className: classNames(\"c-select\", selectClassName) };\n }, [target, selectClassName, onClose, onOpen, mode, open, position]);\n\n const handleEmptyAction = useCallback(\n (value) => {\n emptyAction(value);\n if (forceCloseMenu) {\n setOpen(false);\n }\n formRef.current?.reset();\n },\n [emptyAction, forceCloseMenu]\n );\n\n const handleDefaultOptionChangeCallback = useCallback(() => {\n if (type === \"multiple\") {\n if (selectedOptions.length === allOptionValues.length) {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange([]);\n }\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange(allOptionValues);\n }\n }\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange(\"\");\n }\n }\n if (forceCloseMenu) {\n setOpen(false);\n }\n }, [\n onChange,\n type,\n forceCloseMenu,\n selectedOptions.length,\n allOptionValues,\n handleDefaultOptionChange,\n ]);\n\n const handleRenderOption = useCallback(\n (option, props) => {\n if (typeof renderOption === \"function\") {\n return renderOption(option, props);\n }\n return (\n <>\n <OptionContent\n imageUrl={option.image}\n color={option.color}\n textColor={option.textColor}\n name={option.name}\n additionalInfo={option.additionalInfo}\n />\n {option.id === null ? (\n type === \"multiple\" ? (\n <StyledCheckbox\n checked={isAllOptionsChecked}\n isIndeterminate={someOptionsChecked && !isAllOptionsChecked}\n {...props}\n />\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 [\n isAllOptionsChecked,\n renderOption,\n selectedOptions,\n type,\n someOptionsChecked,\n ]\n );\n\n return (\n <Tag {...props}>\n <div>\n {!disableSearch ? (\n <StyledSelectForm ref={formRef}>\n <StyledSelectInput ref={handleRef} placeholder={placeholder} />\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 clearInputOnSelect\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"],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -10381,6 +10381,9 @@
|
|
|
10381
10381
|
}, name), type === "multiple" && /*#__PURE__*/React__default["default"].createElement(Checkbox, {
|
|
10382
10382
|
id: "".concat(id),
|
|
10383
10383
|
checked: isAllOptionsChecked,
|
|
10384
|
+
isIndeterminate: options.some(function (option) {
|
|
10385
|
+
return checked.includes(option.id);
|
|
10386
|
+
}) && !isAllOptionsChecked,
|
|
10384
10387
|
onChange: handleClick,
|
|
10385
10388
|
type: "checkbox"
|
|
10386
10389
|
}))), /*#__PURE__*/React__default["default"].createElement(List, null, list.map(function (item, index) {
|
|
@@ -11436,6 +11439,11 @@
|
|
|
11436
11439
|
return selectedOptions.includes(option);
|
|
11437
11440
|
});
|
|
11438
11441
|
}, [allOptionValues, selectedOptions]);
|
|
11442
|
+
var someOptionsChecked = React.useMemo(function () {
|
|
11443
|
+
return allOptionValues.some(function (option) {
|
|
11444
|
+
return selectedOptions.includes(option);
|
|
11445
|
+
});
|
|
11446
|
+
}, [allOptionValues, selectedOptions]);
|
|
11439
11447
|
React.useEffect(function () {
|
|
11440
11448
|
var _childNode$current;
|
|
11441
11449
|
open && (childNode === null || childNode === void 0 ? void 0 : (_childNode$current = childNode.current) === null || _childNode$current === void 0 ? void 0 : _childNode$current.focus());
|
|
@@ -11526,11 +11534,12 @@
|
|
|
11526
11534
|
name: option.name,
|
|
11527
11535
|
additionalInfo: option.additionalInfo
|
|
11528
11536
|
}), option.id === null ? type === "multiple" ? /*#__PURE__*/React__default["default"].createElement(StyledCheckbox, _extends({
|
|
11529
|
-
checked: isAllOptionsChecked
|
|
11537
|
+
checked: isAllOptionsChecked,
|
|
11538
|
+
isIndeterminate: someOptionsChecked && !isAllOptionsChecked
|
|
11530
11539
|
}, props)) : /*#__PURE__*/React__default["default"].createElement(StyledRadioButton, _extends({
|
|
11531
11540
|
checked: selectedOptions.length < 1 || !selectedOptions[0]
|
|
11532
11541
|
}, props)) : type === "multiple" ? /*#__PURE__*/React__default["default"].createElement(StyledCheckbox, props) : /*#__PURE__*/React__default["default"].createElement(StyledRadioButton, props));
|
|
11533
|
-
}, [isAllOptionsChecked, renderOption, selectedOptions, type]);
|
|
11542
|
+
}, [isAllOptionsChecked, renderOption, selectedOptions, type, someOptionsChecked]);
|
|
11534
11543
|
return /*#__PURE__*/React__default["default"].createElement(Tag, props, /*#__PURE__*/React__default["default"].createElement("div", null, !disableSearch ? /*#__PURE__*/React__default["default"].createElement(StyledSelectForm, {
|
|
11535
11544
|
ref: formRef
|
|
11536
11545
|
}, /*#__PURE__*/React__default["default"].createElement(StyledSelectInput, {
|