@activecollab/components 2.0.82 → 2.0.83

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.
@@ -1 +1 @@
1
- {"version":3,"file":"Select.js","names":["_react","_interopRequireWildcard","require","_classnames","_interopRequireDefault","_OptionContent","_Styles","_useForkRef","_Autocomplete","_Menu","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","Select","_ref","type","mode","target","options","selected","position","onChange","placeholder","emptyAction","disableSearch","forceCloseMenu","selectClassName","keepSameOptionsOrder","onSelectOpen","onSelectClose","renderOption","handleDefaultOptionChange","preselectDefaultValue","startAdornment","endAdornment","focusInput","prop","console","warn","childNode","useRef","elementRef","handleRef","useForkRef","Tag","Menu","formRef","open","setOpen","useState","selectedOptions","useMemo","Array","selectOptions","allOptionValues","reduce","acc","option","isOptionGroup","id","allGroupOptions","map","getMixedOptionsRecursively","useCallback","mixedOptions","forEach","mixed","push","length","nestedMixedOptions","concat","item","removeFromMixedOptions","idsToRemove","current","filter","mixedOption","includes","isAllOptionsChecked","every","someOptionsChecked","some","useEffect","focus","handleChange","selectedValue","undefined","onClose","onOpen","props","menuClassName","classNames","onPopperOpen","className","handleEmptyAction","value","reset","handleDefaultOptionChangeCallback","handleRenderOption","createElement","Fragment","OptionContent","imageUrl","image","color","textColor","name","additionalInfo","StyledCheckbox","_extends2","checked","StyledRadioButton","StyledSelectForm","ref","StyledStartAdornment","StyledSelectInput","StyledEndAdornment","Autocomplete","clearInputOnSelect","inputEl","exports","displayName"],"sources":["../../../../src/components/Select/Select.tsx"],"sourcesContent":["import React, {\n FC,\n useCallback,\n useState,\n ReactElement,\n useMemo,\n useEffect,\n useRef,\n Ref,\n ReactNode,\n} from \"react\";\n\nimport { Placement } from \"@popperjs/core\";\nimport classNames from \"classnames\";\n\nimport { OptionContent } from \"./OptionContent/OptionContent\";\nimport {\n StyledSelectForm,\n StyledSelectInput,\n StyledCheckbox,\n StyledRadioButton,\n StyledStartAdornment,\n StyledEndAdornment,\n} from \"./Styles\";\nimport useForkRef from \"../../utils/useForkRef\";\nimport { Autocomplete, isOptionGroup } from \"../Autocomplete\";\nimport { IAutocompleteProps } from \"../Autocomplete/Autocomplete\";\nimport { Menu } from \"../Menu/Menu\";\nimport { IOptionItemProps } from \"../Select/Option\";\nimport { IOptionGroupProps } from \"../Select/OptionGroup\";\n\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 /** Placeholder for Select input */\n placeholder?: string;\n /** Function that triggers when empty is clicked */\n emptyAction?: (e: string | undefined) => void;\n /** Removes input from Select */\n disableSearch?: boolean;\n /** Close menu on select */\n forceCloseMenu?: boolean;\n /** Set select classNames */\n selectClassName?: string;\n /** Callback called when the Select menu is opened */\n onSelectOpen?: () => void;\n /** Callback called when the Select menu is closed */\n onSelectClose?: () => void;\n /** Node element on the left side */\n startAdornment?: ReactNode;\n /** Node element on the right side */\n endAdornment?: ReactNode;\n /** Focus search input on inline select */\n focusInput?: boolean;\n}\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 placeholder,\n emptyAction = (): null => null,\n disableSearch = false,\n forceCloseMenu,\n selectClassName,\n keepSameOptionsOrder = false,\n onSelectOpen,\n onSelectClose,\n renderOption,\n handleDefaultOptionChange,\n preselectDefaultValue = type === \"single\",\n startAdornment,\n endAdornment,\n focusInput = false,\n ...prop\n}) => {\n if (disableSearch && (startAdornment || endAdornment)) {\n console.warn(\"Adornments are not visible when search bar is hidden\");\n }\n const childNode = useRef<HTMLInputElement | null>();\n const elementRef = useRef<HTMLInputElement | null>(null);\n\n const handleRef = useForkRef(childNode, elementRef);\n\n const Tag = !target ? \"div\" : Menu;\n const formRef = useRef<HTMLFormElement | null>(null);\n\n const [open, setOpen] = useState(false);\n\n const selectedOptions = useMemo(\n () => (selected instanceof Array ? selected : [selected]),\n [selected]\n );\n\n const selectOptions = useMemo(() => {\n if (!options) {\n return [];\n }\n return options;\n }, [options]);\n\n const allOptionValues = useMemo(() => {\n return selectOptions.reduce(\n (\n acc: (string | number)[],\n option: IOptionGroupProps | IOptionItemProps\n ) => {\n if (!isOptionGroup(option)) {\n return [...acc, option.id];\n }\n const allGroupOptions = option.options.map((option) => option.id);\n return [...acc, ...allGroupOptions];\n },\n []\n );\n }, [selectOptions]);\n\n const getMixedOptionsRecursively = useCallback(\n (options: (IOptionGroupProps | IOptionItemProps)[]) => {\n let mixedOptions: (IOptionGroupProps | IOptionItemProps)[] = [];\n\n options.forEach((option) => {\n if (option.mixed) {\n mixedOptions.push(option);\n }\n if (\n isOptionGroup(option) &&\n option.options &&\n option.options.length > 0\n ) {\n const nestedMixedOptions = getMixedOptionsRecursively(option.options);\n mixedOptions = mixedOptions.concat(nestedMixedOptions);\n }\n });\n\n return mixedOptions;\n },\n []\n );\n\n const mixedOptions = useRef(\n type === \"multiple\" && selectOptions\n ? getMixedOptionsRecursively(selectOptions).map((item) => item.id)\n : []\n );\n\n const removeFromMixedOptions = useCallback(\n (idsToRemove: (string | number)[]) => {\n mixedOptions.current = mixedOptions.current.filter(\n (mixedOption) => !idsToRemove.includes(mixedOption)\n );\n },\n []\n );\n\n const isAllOptionsChecked = useMemo(\n () => allOptionValues.every((option) => selectedOptions.includes(option)),\n [allOptionValues, selectedOptions]\n );\n\n const someOptionsChecked = useMemo(\n () => allOptionValues.some((option) => selectedOptions.includes(option)),\n [allOptionValues, selectedOptions]\n );\n\n useEffect(() => {\n if ((open && target) || (!target && focusInput)) {\n childNode?.current?.focus();\n }\n }, [focusInput, open, target]);\n\n const handleChange = useCallback(\n (selectedValue) => {\n if (forceCloseMenu) {\n if (typeof onSelectClose === \"function\") onSelectClose();\n setOpen(false);\n }\n if (\n selectedValue !== undefined &&\n selectedValue !== selected &&\n !(selectedValue instanceof Array && selectedValue.includes(undefined))\n ) {\n onChange(selectedValue);\n type === \"multiple\" &&\n mixedOptions.current.length &&\n removeFromMixedOptions(selectedValue);\n }\n },\n [\n forceCloseMenu,\n selected,\n onSelectClose,\n onChange,\n type,\n removeFromMixedOptions,\n ]\n );\n\n const onClose = useCallback(() => {\n setOpen(false);\n if (onSelectClose) {\n onSelectClose();\n }\n }, [onSelectClose]);\n\n const onOpen = useCallback(() => {\n setOpen(true);\n if (onSelectOpen) {\n onSelectOpen();\n }\n }, [onSelectOpen]);\n\n const props = useMemo(() => {\n if (target) {\n return {\n menuClassName: classNames(\"c-select\", selectClassName),\n onClose,\n onOpen,\n target,\n mode,\n open,\n position,\n onPopperOpen: () => elementRef?.current?.focus(),\n };\n }\n return { className: classNames(\"c-select\", selectClassName) };\n }, [target, selectClassName, onClose, onOpen, mode, open, position]);\n\n const handleEmptyAction = useCallback(\n (value) => {\n emptyAction(value);\n if (forceCloseMenu) {\n setOpen(false);\n }\n formRef.current?.reset();\n },\n [emptyAction, forceCloseMenu]\n );\n\n const handleDefaultOptionChangeCallback = useCallback(() => {\n if (type === \"multiple\") {\n if (selectedOptions.length === allOptionValues.length) {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange([]);\n }\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange(allOptionValues);\n }\n }\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange(\"\");\n }\n }\n if (forceCloseMenu) {\n setOpen(false);\n }\n }, [\n onChange,\n type,\n forceCloseMenu,\n selectedOptions.length,\n allOptionValues,\n handleDefaultOptionChange,\n ]);\n\n const handleRenderOption = useCallback(\n (option, props) => {\n if (typeof renderOption === \"function\") {\n return renderOption(option, props);\n }\n return (\n <>\n <OptionContent\n imageUrl={option.image}\n color={option.color}\n textColor={option.textColor}\n name={option.name}\n additionalInfo={option.additionalInfo}\n />\n {option.id === null ? (\n type === \"multiple\" ? (\n <StyledCheckbox\n checked={isAllOptionsChecked}\n mixed={someOptionsChecked && !isAllOptionsChecked}\n {...props}\n />\n ) : (\n <StyledRadioButton\n checked={selectedOptions.length < 1 || !selectedOptions[0]}\n {...props}\n />\n )\n ) : type === \"multiple\" ? (\n <StyledCheckbox\n mixed={mixedOptions.current.includes(option.id)}\n {...props}\n />\n ) : (\n <StyledRadioButton {...props} />\n )}\n </>\n );\n },\n [\n isAllOptionsChecked,\n renderOption,\n type,\n someOptionsChecked,\n selectedOptions,\n ]\n );\n\n return (\n <Tag {...props}>\n <div>\n {!disableSearch ? (\n <StyledSelectForm ref={formRef}>\n {startAdornment ? (\n <StyledStartAdornment>{startAdornment}</StyledStartAdornment>\n ) : null}\n <StyledSelectInput ref={handleRef} placeholder={placeholder} />\n {endAdornment ? (\n <StyledEndAdornment>{endAdornment}</StyledEndAdornment>\n ) : null}\n </StyledSelectForm>\n ) : null}\n <Autocomplete\n {...prop}\n clearInputOnSelect\n inputEl={childNode}\n handleEmptyAction={handleEmptyAction}\n selected={selected}\n handleChange={handleChange}\n renderOption={handleRenderOption}\n options={options}\n mixedOptions={mixedOptions.current}\n handleDefaultOptionChange={handleDefaultOptionChangeCallback}\n type={type}\n preselectDefaultValue={preselectDefaultValue}\n keepSameOptionsOrder={keepSameOptionsOrder}\n />\n </div>\n </Tag>\n );\n};\n\nSelect.displayName = \"Select\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"Select.js","names":["_react","_interopRequireWildcard","require","_classnames","_interopRequireDefault","_OptionContent","_Styles","_useForkRef","_Autocomplete","_Menu","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","Select","_ref","type","mode","target","options","selected","mixed","position","onChange","placeholder","emptyAction","disableSearch","forceCloseMenu","selectClassName","keepSameOptionsOrder","onSelectOpen","onSelectClose","renderOption","handleDefaultOptionChange","preselectDefaultValue","startAdornment","endAdornment","focusInput","prop","console","warn","childNode","useRef","elementRef","handleRef","useForkRef","Tag","Menu","formRef","open","setOpen","useState","selectedOptions","useMemo","Array","selectOptions","allOptionValues","reduce","acc","option","isOptionGroup","id","allGroupOptions","map","mixedOptions","length","removeFromMixedOptions","useCallback","idsToRemove","current","filter","mixedOption","includes","isAllOptionsChecked","every","someOptionsChecked","some","useEffect","focus","handleChange","selectedValue","undefined","onClose","onOpen","props","menuClassName","classNames","onPopperOpen","className","handleEmptyAction","value","reset","handleDefaultOptionChangeCallback","handleRenderOption","createElement","Fragment","OptionContent","imageUrl","image","color","textColor","name","additionalInfo","StyledCheckbox","_extends2","checked","StyledRadioButton","StyledSelectForm","ref","StyledStartAdornment","StyledSelectInput","StyledEndAdornment","Autocomplete","clearInputOnSelect","inputEl","exports","displayName"],"sources":["../../../../src/components/Select/Select.tsx"],"sourcesContent":["import React, {\n FC,\n useCallback,\n useState,\n ReactElement,\n useMemo,\n useEffect,\n useRef,\n Ref,\n ReactNode,\n} from \"react\";\n\nimport { Placement } from \"@popperjs/core\";\nimport classNames from \"classnames\";\n\nimport { OptionContent } from \"./OptionContent/OptionContent\";\nimport {\n StyledSelectForm,\n StyledSelectInput,\n StyledCheckbox,\n StyledRadioButton,\n StyledStartAdornment,\n StyledEndAdornment,\n} from \"./Styles\";\nimport useForkRef from \"../../utils/useForkRef\";\nimport { Autocomplete, isOptionGroup } from \"../Autocomplete\";\nimport { IAutocompleteProps } from \"../Autocomplete/Autocomplete\";\nimport { Menu } from \"../Menu/Menu\";\nimport { IOptionItemProps } from \"../Select/Option\";\nimport { IOptionGroupProps } from \"../Select/OptionGroup\";\n\ninterface ElementWithRef<T> extends ReactElement {\n ref?: Ref<T>;\n}\n\nexport interface ISelectProps\n extends Omit<\n IAutocompleteProps,\n | \"handleChange\"\n | \"inputEl\"\n | \"handleEmptyAction\"\n | \"clearInputOnSelect\"\n | \"mixedOptions\"\n > {\n /** Menu width mode */\n mode?: \"normal\" | \"wider\" | \"tiny\";\n /** Set select target element */\n target?: ElementWithRef<Element>;\n /** Set Select position */\n position?: Placement;\n /** onChange callback */\n onChange?: (e: (string | number)[] | string | number) => void;\n /** Placeholder for Select input */\n placeholder?: string;\n /** Function that triggers when empty is clicked */\n emptyAction?: (e: string | undefined) => void;\n /** Removes input from Select */\n disableSearch?: boolean;\n /** Close menu on select */\n forceCloseMenu?: boolean;\n /** Set select classNames */\n selectClassName?: string;\n /** Callback called when the Select menu is opened */\n onSelectOpen?: () => void;\n /** Callback called when the Select menu is closed */\n onSelectClose?: () => void;\n /** Node element on the left side */\n startAdornment?: ReactNode;\n /** Node element on the right side */\n endAdornment?: ReactNode;\n /** Focus search input on inline select */\n focusInput?: boolean;\n /** Mixed options values */\n mixed?: (string | number)[];\n}\n\nexport const Select: FC<ISelectProps> = ({\n type = \"single\",\n mode,\n target,\n options,\n selected = [],\n mixed = [],\n position = \"bottom-start\",\n onChange = () => null,\n placeholder,\n emptyAction = (): null => null,\n disableSearch = false,\n forceCloseMenu,\n selectClassName,\n keepSameOptionsOrder = false,\n onSelectOpen,\n onSelectClose,\n renderOption,\n handleDefaultOptionChange,\n preselectDefaultValue = type === \"single\",\n startAdornment,\n endAdornment,\n focusInput = false,\n ...prop\n}) => {\n if (disableSearch && (startAdornment || endAdornment)) {\n console.warn(\"Adornments are not visible when search bar is hidden\");\n }\n const childNode = useRef<HTMLInputElement | null>();\n const elementRef = useRef<HTMLInputElement | null>(null);\n\n const handleRef = useForkRef(childNode, elementRef);\n\n const Tag = !target ? \"div\" : Menu;\n const formRef = useRef<HTMLFormElement | null>(null);\n\n const [open, setOpen] = useState(false);\n\n const selectedOptions = useMemo(\n () => (selected instanceof Array ? selected : [selected]),\n [selected]\n );\n\n const selectOptions = useMemo(() => {\n if (!options) {\n return [];\n }\n return options;\n }, [options]);\n\n const allOptionValues = useMemo(() => {\n return selectOptions.reduce(\n (\n acc: (string | number)[],\n option: IOptionGroupProps | IOptionItemProps\n ) => {\n if (!isOptionGroup(option)) {\n return [...acc, option.id];\n }\n const allGroupOptions = option.options.map((option) => option.id);\n return [...acc, ...allGroupOptions];\n },\n []\n );\n }, [selectOptions]);\n\n const mixedOptions = useRef(type === \"multiple\" && mixed.length ? mixed : []);\n\n const removeFromMixedOptions = useCallback(\n (idsToRemove: (string | number)[]) => {\n mixedOptions.current = mixedOptions.current.filter(\n (mixedOption) => !idsToRemove.includes(mixedOption)\n );\n },\n []\n );\n\n const isAllOptionsChecked = useMemo(\n () => allOptionValues.every((option) => selectedOptions.includes(option)),\n [allOptionValues, selectedOptions]\n );\n\n const someOptionsChecked = useMemo(\n () => allOptionValues.some((option) => selectedOptions.includes(option)),\n [allOptionValues, selectedOptions]\n );\n\n useEffect(() => {\n if ((open && target) || (!target && focusInput)) {\n childNode?.current?.focus();\n }\n }, [focusInput, open, target]);\n\n const handleChange = useCallback(\n (selectedValue) => {\n if (forceCloseMenu) {\n if (typeof onSelectClose === \"function\") onSelectClose();\n setOpen(false);\n }\n if (\n selectedValue !== undefined &&\n selectedValue !== selected &&\n !(selectedValue instanceof Array && selectedValue.includes(undefined))\n ) {\n onChange(selectedValue);\n type === \"multiple\" &&\n mixedOptions.current.length &&\n removeFromMixedOptions(selectedValue);\n }\n },\n [\n forceCloseMenu,\n selected,\n onSelectClose,\n onChange,\n type,\n removeFromMixedOptions,\n ]\n );\n\n const onClose = useCallback(() => {\n setOpen(false);\n if (onSelectClose) {\n onSelectClose();\n }\n }, [onSelectClose]);\n\n const onOpen = useCallback(() => {\n setOpen(true);\n if (onSelectOpen) {\n onSelectOpen();\n }\n }, [onSelectOpen]);\n\n const props = useMemo(() => {\n if (target) {\n return {\n menuClassName: classNames(\"c-select\", selectClassName),\n onClose,\n onOpen,\n target,\n mode,\n open,\n position,\n onPopperOpen: () => elementRef?.current?.focus(),\n };\n }\n return { className: classNames(\"c-select\", selectClassName) };\n }, [target, selectClassName, onClose, onOpen, mode, open, position]);\n\n const handleEmptyAction = useCallback(\n (value) => {\n emptyAction(value);\n if (forceCloseMenu) {\n setOpen(false);\n }\n formRef.current?.reset();\n },\n [emptyAction, forceCloseMenu]\n );\n\n const handleDefaultOptionChangeCallback = useCallback(() => {\n if (type === \"multiple\") {\n if (selectedOptions.length === allOptionValues.length) {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange([]);\n }\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange(allOptionValues);\n }\n }\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange(\"\");\n }\n }\n if (forceCloseMenu) {\n setOpen(false);\n }\n }, [\n onChange,\n type,\n forceCloseMenu,\n selectedOptions.length,\n allOptionValues,\n handleDefaultOptionChange,\n ]);\n\n const handleRenderOption = useCallback(\n (option, props) => {\n if (typeof renderOption === \"function\") {\n return renderOption(option, props);\n }\n return (\n <>\n <OptionContent\n imageUrl={option.image}\n color={option.color}\n textColor={option.textColor}\n name={option.name}\n additionalInfo={option.additionalInfo}\n />\n {option.id === null ? (\n type === \"multiple\" ? (\n <StyledCheckbox\n checked={isAllOptionsChecked}\n mixed={someOptionsChecked && !isAllOptionsChecked}\n {...props}\n />\n ) : (\n <StyledRadioButton\n checked={selectedOptions.length < 1 || !selectedOptions[0]}\n {...props}\n />\n )\n ) : type === \"multiple\" ? (\n <StyledCheckbox\n mixed={mixedOptions.current.includes(option.id)}\n {...props}\n />\n ) : (\n <StyledRadioButton {...props} />\n )}\n </>\n );\n },\n [\n isAllOptionsChecked,\n renderOption,\n type,\n someOptionsChecked,\n selectedOptions,\n ]\n );\n\n return (\n <Tag {...props}>\n <div>\n {!disableSearch ? (\n <StyledSelectForm ref={formRef}>\n {startAdornment ? (\n <StyledStartAdornment>{startAdornment}</StyledStartAdornment>\n ) : null}\n <StyledSelectInput ref={handleRef} placeholder={placeholder} />\n {endAdornment ? (\n <StyledEndAdornment>{endAdornment}</StyledEndAdornment>\n ) : null}\n </StyledSelectForm>\n ) : null}\n <Autocomplete\n {...prop}\n clearInputOnSelect\n inputEl={childNode}\n handleEmptyAction={handleEmptyAction}\n selected={selected}\n handleChange={handleChange}\n renderOption={handleRenderOption}\n options={options}\n mixedOptions={mixedOptions.current}\n handleDefaultOptionChange={handleDefaultOptionChangeCallback}\n type={type}\n preselectDefaultValue={preselectDefaultValue}\n keepSameOptionsOrder={keepSameOptionsOrder}\n />\n </div>\n </Tag>\n );\n};\n\nSelect.displayName = \"Select\";\n"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -11213,7 +11213,7 @@
11213
11213
  viewBox: "0 0 16 16",
11214
11214
  fill: "none",
11215
11215
  xmlns: "http://www.w3.org/2000/svg",
11216
- "data-testid": testId
11216
+ "data-testid": "checkbox-mixed-icon"
11217
11217
  }, /*#__PURE__*/React__default["default"].createElement("path", {
11218
11218
  fillRule: "evenodd",
11219
11219
  clipRule: "evenodd",
@@ -11286,7 +11286,7 @@
11286
11286
  });
11287
11287
  StyledCheckbox$1.displayName = "StyledCheckbox";
11288
11288
 
11289
- var _excluded$R = ["className", "hover", "id", "mixed", "onChange"];
11289
+ var _excluded$R = ["className", "hover", "id", "mixed", "checked", "onChange"];
11290
11290
  /**
11291
11291
  * Checkbox component
11292
11292
  */
@@ -11297,18 +11297,33 @@
11297
11297
  id = _ref$id === void 0 ? "checkbox" : _ref$id,
11298
11298
  _ref$mixed = _ref.mixed,
11299
11299
  mixed = _ref$mixed === void 0 ? false : _ref$mixed,
11300
+ checked = _ref.checked,
11300
11301
  onChange = _ref.onChange,
11301
11302
  rest = _objectWithoutProperties(_ref, _excluded$R);
11302
- var _useState = React.useState(mixed),
11303
+ var _useState = React.useState(mixed && !checked),
11303
11304
  _useState2 = _slicedToArray(_useState, 2),
11304
11305
  indeterminate = _useState2[0],
11305
11306
  setIndeterminate = _useState2[1];
11307
+ var _useState3 = React.useState(checked),
11308
+ _useState4 = _slicedToArray(_useState3, 2),
11309
+ initialChecked = _useState4[0],
11310
+ setInitialChecked = _useState4[1];
11306
11311
  var handleChange = React.useCallback(function (e) {
11307
11312
  typeof onChange === "function" && onChange(e);
11313
+ setInitialChecked(function (prev) {
11314
+ return !prev;
11315
+ });
11308
11316
  setIndeterminate(false);
11309
11317
  }, [onChange]);
11310
11318
  React.useEffect(function () {
11311
- if (mixed !== indeterminate) {
11319
+ if (checked !== initialChecked) {
11320
+ setInitialChecked(checked);
11321
+ setIndeterminate(false);
11322
+ }
11323
+ // eslint-disable-next-line react-hooks/exhaustive-deps
11324
+ }, [checked]);
11325
+ React.useEffect(function () {
11326
+ if (mixed !== indeterminate && !checked) {
11312
11327
  setIndeterminate(mixed);
11313
11328
  }
11314
11329
  // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -11328,6 +11343,7 @@
11328
11343
  type: "checkbox",
11329
11344
  ref: ref
11330
11345
  }, rest, {
11346
+ checked: initialChecked,
11331
11347
  onChange: handleChange
11332
11348
  })), /*#__PURE__*/React__default["default"].createElement(StyledLabel, {
11333
11349
  htmlFor: id,
@@ -12603,7 +12619,7 @@
12603
12619
  componentId: "sc-9x4q7e-0"
12604
12620
  })(["cursor:auto"]);
12605
12621
 
12606
- var _excluded$M = ["type", "mode", "target", "options", "selected", "position", "onChange", "placeholder", "emptyAction", "disableSearch", "forceCloseMenu", "selectClassName", "keepSameOptionsOrder", "onSelectOpen", "onSelectClose", "renderOption", "handleDefaultOptionChange", "preselectDefaultValue", "startAdornment", "endAdornment", "focusInput"];
12622
+ var _excluded$M = ["type", "mode", "target", "options", "selected", "mixed", "position", "onChange", "placeholder", "emptyAction", "disableSearch", "forceCloseMenu", "selectClassName", "keepSameOptionsOrder", "onSelectOpen", "onSelectClose", "renderOption", "handleDefaultOptionChange", "preselectDefaultValue", "startAdornment", "endAdornment", "focusInput"];
12607
12623
  var Select = function Select(_ref) {
12608
12624
  var _ref$type = _ref.type,
12609
12625
  type = _ref$type === void 0 ? "single" : _ref$type,
@@ -12612,6 +12628,8 @@
12612
12628
  options = _ref.options,
12613
12629
  _ref$selected = _ref.selected,
12614
12630
  selected = _ref$selected === void 0 ? [] : _ref$selected,
12631
+ _ref$mixed = _ref.mixed,
12632
+ mixed = _ref$mixed === void 0 ? [] : _ref$mixed,
12615
12633
  _ref$position = _ref.position,
12616
12634
  position = _ref$position === void 0 ? "bottom-start" : _ref$position,
12617
12635
  _ref$onChange = _ref.onChange,
@@ -12672,22 +12690,7 @@
12672
12690
  return [...acc, ...allGroupOptions];
12673
12691
  }, []);
12674
12692
  }, [selectOptions]);
12675
- var getMixedOptionsRecursively = React.useCallback(function (options) {
12676
- var mixedOptions = [];
12677
- options.forEach(function (option) {
12678
- if (option.mixed) {
12679
- mixedOptions.push(option);
12680
- }
12681
- if (isOptionGroup(option) && option.options && option.options.length > 0) {
12682
- var nestedMixedOptions = getMixedOptionsRecursively(option.options);
12683
- mixedOptions = mixedOptions.concat(nestedMixedOptions);
12684
- }
12685
- });
12686
- return mixedOptions;
12687
- }, []);
12688
- var mixedOptions = React.useRef(type === "multiple" && selectOptions ? getMixedOptionsRecursively(selectOptions).map(function (item) {
12689
- return item.id;
12690
- }) : []);
12693
+ var mixedOptions = React.useRef(type === "multiple" && mixed.length ? mixed : []);
12691
12694
  var removeFromMixedOptions = React.useCallback(function (idsToRemove) {
12692
12695
  mixedOptions.current = mixedOptions.current.filter(function (mixedOption) {
12693
12696
  return !idsToRemove.includes(mixedOption);