@activecollab/components 1.0.243 → 1.0.244
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/Select.js +2 -1
- package/dist/cjs/components/Select/Select.js.map +1 -1
- package/dist/cjs/components/Window/Window.js +0 -7
- package/dist/cjs/components/Window/Window.js.map +1 -1
- package/dist/esm/components/Select/Select.d.ts.map +1 -1
- package/dist/esm/components/Select/Select.js +2 -1
- package/dist/esm/components/Select/Select.js.map +1 -1
- package/dist/esm/components/Window/Window.d.ts.map +1 -1
- package/dist/esm/components/Window/Window.js +1 -8
- package/dist/esm/components/Window/Window.js.map +1 -1
- package/dist/index.js +2 -8
- 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
|
@@ -106,12 +106,13 @@ var Select = function Select(_ref) {
|
|
|
106
106
|
}, [childNode, open]);
|
|
107
107
|
var handleChange = (0, _react.useCallback)(function (selectedValue) {
|
|
108
108
|
if (forceCloseMenu) {
|
|
109
|
+
if (typeof onSelectClose === "function") onSelectClose();
|
|
109
110
|
setOpen(false);
|
|
110
111
|
}
|
|
111
112
|
if (selectedValue !== selected) {
|
|
112
113
|
onChange(selectedValue);
|
|
113
114
|
}
|
|
114
|
-
}, [forceCloseMenu, selected, onChange]);
|
|
115
|
+
}, [forceCloseMenu, selected, onSelectClose, onChange]);
|
|
115
116
|
var onClose = (0, _react.useCallback)(function () {
|
|
116
117
|
setOpen(false);
|
|
117
118
|
if (onSelectClose) {
|
|
@@ -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","useState","childNode","setChildNode","elementRef","useRef","handleRef","useForkRef","Tag","Menu","formRef","open","setOpen","selectedOptions","useMemo","Array","selectOptions","allOptionValues","reduce","acc","option","isOptionGroup","id","allGroupOptions","map","isAllOptionsChecked","every","includes","useEffect","focus","handleChange","useCallback","selectedValue","onClose","onOpen","props","menuClassName","classNames","className","handleEmptyAction","value","current","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, setChildNode] = useState<HTMLInputElement | null>();\n const elementRef = useRef<HTMLInputElement | null>(null);\n\n const handleRef = useForkRef(setChildNode, elementRef);\n\n const Tag = !target ? \"div\" : Menu;\n const formRef = useRef<HTMLFormElement | null>(null);\n\n const [open, setOpen] = useState(false);\n\n const selectedOptions = useMemo(\n () => (selected instanceof Array ? selected : [selected]),\n [selected]\n );\n\n const selectOptions = useMemo(() => {\n if (!options) {\n return [];\n }\n return options;\n }, [options]);\n\n const allOptionValues = useMemo(() => {\n return selectOptions.reduce(\n (\n acc: (string | number)[],\n option: IOptionGroupProps | IOptionItemProps\n ) => {\n if (!isOptionGroup(option)) {\n return [...acc, option.id];\n }\n const allGroupOptions = option.options.map((option) => option.id);\n return [...acc, ...allGroupOptions];\n },\n []\n );\n }, [selectOptions]);\n\n const isAllOptionsChecked = useMemo(\n () => allOptionValues.every((option) => selectedOptions.includes(option)),\n [allOptionValues, selectedOptions]\n );\n\n useEffect(() => {\n open && childNode?.focus();\n }, [childNode, open]);\n\n const handleChange = useCallback(\n (selectedValue) => {\n if (forceCloseMenu) {\n setOpen(false);\n }\n if (selectedValue !== selected) {\n onChange(selectedValue);\n }\n },\n [forceCloseMenu, selected, 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 };\n }\n return { className: classNames(\"c-select\", selectClassName) };\n }, [target, selectClassName, onClose, onOpen, mode, open, position]);\n\n const handleEmptyAction = useCallback(\n (value) => {\n emptyAction(value);\n if (forceCloseMenu) {\n setOpen(false);\n }\n formRef.current?.reset();\n },\n [emptyAction, forceCloseMenu]\n );\n\n const handleDefaultOptionChangeCallback = useCallback(() => {\n if (type === \"multiple\") {\n if (selectedOptions.length === allOptionValues.length) {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange([]);\n }\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange(allOptionValues);\n }\n }\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange(\"\");\n }\n }\n if (forceCloseMenu) {\n setOpen(false);\n }\n }, [\n onChange,\n type,\n forceCloseMenu,\n selectedOptions.length,\n allOptionValues,\n handleDefaultOptionChange,\n ]);\n\n const handleRenderOption = useCallback(\n (option, props) => {\n if (typeof renderOption === \"function\") {\n return renderOption(option, props);\n }\n return (\n <>\n <OptionContent\n imageUrl={option.image}\n color={option.color}\n textColor={option.textColor}\n name={option.name}\n additionalInfo={option.additionalInfo}\n />\n {option.id === null ? (\n type === \"multiple\" ? (\n <StyledCheckbox checked={isAllOptionsChecked} {...props} />\n ) : (\n <StyledRadioButton\n checked={selectedOptions.length < 1 || !selectedOptions[0]}\n {...props}\n />\n )\n ) : type === \"multiple\" ? (\n <StyledCheckbox {...props} />\n ) : (\n <StyledRadioButton {...props} />\n )}\n </>\n );\n },\n [isAllOptionsChecked, renderOption, selectedOptions, type]\n );\n\n return (\n <Tag {...props}>\n <div>\n {!disableSearch ? (\n <StyledSelectForm ref={formRef}>\n <StyledSelectInput\n ref={handleRef}\n autoFocus\n placeholder={placeholder}\n />\n {actionIcon && actionLabel && (\n <Tooltip\n popperTooltipStyle={{ zIndex: 1301 }}\n title={actionLabel}\n >\n <div>{actionIcon}</div>\n </Tooltip>\n )}\n {actionIcon && !actionLabel && actionIcon}\n </StyledSelectForm>\n ) : null}\n <Autocomplete\n {...prop}\n 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","useState","childNode","setChildNode","elementRef","useRef","handleRef","useForkRef","Tag","Menu","formRef","open","setOpen","selectedOptions","useMemo","Array","selectOptions","allOptionValues","reduce","acc","option","isOptionGroup","id","allGroupOptions","map","isAllOptionsChecked","every","includes","useEffect","focus","handleChange","useCallback","selectedValue","onClose","onOpen","props","menuClassName","classNames","className","handleEmptyAction","value","current","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, setChildNode] = useState<HTMLInputElement | null>();\n const elementRef = useRef<HTMLInputElement | null>(null);\n\n const handleRef = useForkRef(setChildNode, elementRef);\n\n const Tag = !target ? \"div\" : Menu;\n const formRef = useRef<HTMLFormElement | null>(null);\n\n const [open, setOpen] = useState(false);\n\n const selectedOptions = useMemo(\n () => (selected instanceof Array ? selected : [selected]),\n [selected]\n );\n\n const selectOptions = useMemo(() => {\n if (!options) {\n return [];\n }\n return options;\n }, [options]);\n\n const allOptionValues = useMemo(() => {\n return selectOptions.reduce(\n (\n acc: (string | number)[],\n option: IOptionGroupProps | IOptionItemProps\n ) => {\n if (!isOptionGroup(option)) {\n return [...acc, option.id];\n }\n const allGroupOptions = option.options.map((option) => option.id);\n return [...acc, ...allGroupOptions];\n },\n []\n );\n }, [selectOptions]);\n\n const isAllOptionsChecked = useMemo(\n () => allOptionValues.every((option) => selectedOptions.includes(option)),\n [allOptionValues, selectedOptions]\n );\n\n useEffect(() => {\n open && childNode?.focus();\n }, [childNode, open]);\n\n const handleChange = useCallback(\n (selectedValue) => {\n if (forceCloseMenu) {\n 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 };\n }\n return { className: classNames(\"c-select\", selectClassName) };\n }, [target, selectClassName, onClose, onOpen, mode, open, position]);\n\n const handleEmptyAction = useCallback(\n (value) => {\n emptyAction(value);\n if (forceCloseMenu) {\n setOpen(false);\n }\n formRef.current?.reset();\n },\n [emptyAction, forceCloseMenu]\n );\n\n const handleDefaultOptionChangeCallback = useCallback(() => {\n if (type === \"multiple\") {\n if (selectedOptions.length === allOptionValues.length) {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange([]);\n }\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange(allOptionValues);\n }\n }\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange(\"\");\n }\n }\n if (forceCloseMenu) {\n setOpen(false);\n }\n }, [\n onChange,\n type,\n forceCloseMenu,\n selectedOptions.length,\n allOptionValues,\n handleDefaultOptionChange,\n ]);\n\n const handleRenderOption = useCallback(\n (option, props) => {\n if (typeof renderOption === \"function\") {\n return renderOption(option, props);\n }\n return (\n <>\n <OptionContent\n imageUrl={option.image}\n color={option.color}\n textColor={option.textColor}\n name={option.name}\n additionalInfo={option.additionalInfo}\n />\n {option.id === null ? (\n type === \"multiple\" ? (\n <StyledCheckbox checked={isAllOptionsChecked} {...props} />\n ) : (\n <StyledRadioButton\n checked={selectedOptions.length < 1 || !selectedOptions[0]}\n {...props}\n />\n )\n ) : type === \"multiple\" ? (\n <StyledCheckbox {...props} />\n ) : (\n <StyledRadioButton {...props} />\n )}\n </>\n );\n },\n [isAllOptionsChecked, renderOption, selectedOptions, type]\n );\n\n return (\n <Tag {...props}>\n <div>\n {!disableSearch ? (\n <StyledSelectForm ref={formRef}>\n <StyledSelectInput\n ref={handleRef}\n autoFocus\n placeholder={placeholder}\n />\n {actionIcon && actionLabel && (\n <Tooltip\n popperTooltipStyle={{ zIndex: 1301 }}\n title={actionLabel}\n >\n <div>{actionIcon}</div>\n </Tooltip>\n )}\n {actionIcon && !actionLabel && actionIcon}\n </StyledSelectForm>\n ) : null}\n <Autocomplete\n {...prop}\n 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":";;;;;;;AAAA;AAUA;AACA;AACA;AAGA;AAGA;AACA;AAMA;AAA8D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAuCvD,IAAMA,MAAwB,GAAG,SAA3BA,MAAwB,OAsB/B;EAAA,qBArBJC,IAAI;IAAJA,IAAI,0BAAG,QAAQ;IACfC,IAAI,QAAJA,IAAI;IACJC,MAAM,QAANA,MAAM;IACNC,OAAO,QAAPA,OAAO;IAAA,qBACPC,QAAQ;IAARA,QAAQ,8BAAG,EAAE;IAAA,qBACbC,QAAQ;IAARA,QAAQ,8BAAG,cAAc;IAAA,qBACzBC,QAAQ;IAARA,QAAQ,8BAAG;MAAA,OAAM,IAAI;IAAA;IACrBC,UAAU,QAAVA,UAAU;IACVC,WAAW,QAAXA,WAAW;IACXC,WAAW,QAAXA,WAAW;IAAA,wBACXC,WAAW;IAAXA,WAAW,iCAAG;MAAA,OAAY,IAAI;IAAA;IAAA,0BAC9BC,aAAa;IAAbA,aAAa,mCAAG,KAAK;IACrBC,cAAc,QAAdA,cAAc;IACdC,eAAe,QAAfA,eAAe;IAAA,6BACfC,oBAAoB;IAApBA,oBAAoB,sCAAG,KAAK;IAC5BC,YAAY,QAAZA,YAAY;IACZC,aAAa,QAAbA,aAAa;IACbC,YAAY,QAAZA,YAAY;IACZC,yBAAyB,QAAzBA,yBAAyB;IAAA,6BACzBC,qBAAqB;IAArBA,qBAAqB,sCAAGnB,IAAI,KAAK,QAAQ;IACtCoB,IAAI;EAEP,gBAAkC,IAAAC,eAAQ,GAA2B;IAAA;IAA9DC,SAAS;IAAEC,YAAY;EAC9B,IAAMC,UAAU,GAAG,IAAAC,aAAM,EAA0B,IAAI,CAAC;EAExD,IAAMC,SAAS,GAAG,IAAAC,mBAAU,EAACJ,YAAY,EAAEC,UAAU,CAAC;EAEtD,IAAMI,GAAG,GAAG,CAAC1B,MAAM,GAAG,KAAK,GAAG2B,UAAI;EAClC,IAAMC,OAAO,GAAG,IAAAL,aAAM,EAAyB,IAAI,CAAC;EAEpD,iBAAwB,IAAAJ,eAAQ,EAAC,KAAK,CAAC;IAAA;IAAhCU,IAAI;IAAEC,OAAO;EAEpB,IAAMC,eAAe,GAAG,IAAAC,cAAO,EAC7B;IAAA,OAAO9B,QAAQ,YAAY+B,KAAK,GAAG/B,QAAQ,GAAG,CAACA,QAAQ,CAAC;EAAA,CAAC,EACzD,CAACA,QAAQ,CAAC,CACX;EAED,IAAMgC,aAAa,GAAG,IAAAF,cAAO,EAAC,YAAM;IAClC,IAAI,CAAC/B,OAAO,EAAE;MACZ,OAAO,EAAE;IACX;IACA,OAAOA,OAAO;EAChB,CAAC,EAAE,CAACA,OAAO,CAAC,CAAC;EAEb,IAAMkC,eAAe,GAAG,IAAAH,cAAO,EAAC,YAAM;IACpC,OAAOE,aAAa,CAACE,MAAM,CACzB,UACEC,GAAwB,EACxBC,MAA4C,EACzC;MACH,IAAI,CAAC,IAAAC,2BAAa,EAACD,MAAM,CAAC,EAAE;QAC1B,oCAAWD,GAAG,IAAEC,MAAM,CAACE,EAAE;MAC3B;MACA,IAAMC,eAAe,GAAGH,MAAM,CAACrC,OAAO,CAACyC,GAAG,CAAC,UAACJ,MAAM;QAAA,OAAKA,MAAM,CAACE,EAAE;MAAA,EAAC;MACjE,oCAAWH,GAAG,sBAAKI,eAAe;IACpC,CAAC,EACD,EAAE,CACH;EACH,CAAC,EAAE,CAACP,aAAa,CAAC,CAAC;EAEnB,IAAMS,mBAAmB,GAAG,IAAAX,cAAO,EACjC;IAAA,OAAMG,eAAe,CAACS,KAAK,CAAC,UAACN,MAAM;MAAA,OAAKP,eAAe,CAACc,QAAQ,CAACP,MAAM,CAAC;IAAA,EAAC;EAAA,GACzE,CAACH,eAAe,EAAEJ,eAAe,CAAC,CACnC;EAED,IAAAe,gBAAS,EAAC,YAAM;IACdjB,IAAI,KAAIT,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAE2B,KAAK,EAAE;EAC5B,CAAC,EAAE,CAAC3B,SAAS,EAAES,IAAI,CAAC,CAAC;EAErB,IAAMmB,YAAY,GAAG,IAAAC,kBAAW,EAC9B,UAACC,aAAa,EAAK;IACjB,IAAIxC,cAAc,EAAE;MAClB,IAAI,OAAOI,aAAa,KAAK,UAAU,EAAEA,aAAa,EAAE;MACxDgB,OAAO,CAAC,KAAK,CAAC;IAChB;IACA,IAAIoB,aAAa,KAAKhD,QAAQ,EAAE;MAC9BE,QAAQ,CAAC8C,aAAa,CAAC;IACzB;EACF,CAAC,EACD,CAACxC,cAAc,EAAER,QAAQ,EAAEY,aAAa,EAAEV,QAAQ,CAAC,CACpD;EAED,IAAM+C,OAAO,GAAG,IAAAF,kBAAW,EAAC,YAAM;IAChCnB,OAAO,CAAC,KAAK,CAAC;IACd,IAAIhB,aAAa,EAAE;MACjBA,aAAa,EAAE;IACjB;EACF,CAAC,EAAE,CAACA,aAAa,CAAC,CAAC;EAEnB,IAAMsC,MAAM,GAAG,IAAAH,kBAAW,EAAC,YAAM;IAC/BnB,OAAO,CAAC,IAAI,CAAC;IACb,IAAIjB,YAAY,EAAE;MAChBA,YAAY,EAAE;IAChB;EACF,CAAC,EAAE,CAACA,YAAY,CAAC,CAAC;EAElB,IAAMwC,KAAK,GAAG,IAAArB,cAAO,EAAC,YAAM;IAC1B,IAAIhC,MAAM,EAAE;MACV,OAAO;QACLsD,aAAa,EAAE,IAAAC,mBAAU,EAAC,UAAU,EAAE5C,eAAe,CAAC;QACtDwC,OAAO,EAAPA,OAAO;QACPC,MAAM,EAANA,MAAM;QACNpD,MAAM,EAANA,MAAM;QACND,IAAI,EAAJA,IAAI;QACJ8B,IAAI,EAAJA,IAAI;QACJ1B,QAAQ,EAARA;MACF,CAAC;IACH;IACA,OAAO;MAAEqD,SAAS,EAAE,IAAAD,mBAAU,EAAC,UAAU,EAAE5C,eAAe;IAAE,CAAC;EAC/D,CAAC,EAAE,CAACX,MAAM,EAAEW,eAAe,EAAEwC,OAAO,EAAEC,MAAM,EAAErD,IAAI,EAAE8B,IAAI,EAAE1B,QAAQ,CAAC,CAAC;EAEpE,IAAMsD,iBAAiB,GAAG,IAAAR,kBAAW,EACnC,UAACS,KAAK,EAAK;IAAA;IACTlD,WAAW,CAACkD,KAAK,CAAC;IAClB,IAAIhD,cAAc,EAAE;MAClBoB,OAAO,CAAC,KAAK,CAAC;IAChB;IACA,oBAAAF,OAAO,CAAC+B,OAAO,qDAAf,iBAAiBC,KAAK,EAAE;EAC1B,CAAC,EACD,CAACpD,WAAW,EAAEE,cAAc,CAAC,CAC9B;EAED,IAAMmD,iCAAiC,GAAG,IAAAZ,kBAAW,EAAC,YAAM;IAC1D,IAAInD,IAAI,KAAK,UAAU,EAAE;MACvB,IAAIiC,eAAe,CAAC+B,MAAM,KAAK3B,eAAe,CAAC2B,MAAM,EAAE;QACrD,IAAI,OAAO9C,yBAAyB,KAAK,UAAU,EAAE;UACnDA,yBAAyB,EAAE;QAC7B,CAAC,MAAM;UACLZ,QAAQ,CAAC,EAAE,CAAC;QACd;MACF,CAAC,MAAM;QACL,IAAI,OAAOY,yBAAyB,KAAK,UAAU,EAAE;UACnDA,yBAAyB,EAAE;QAC7B,CAAC,MAAM;UACLZ,QAAQ,CAAC+B,eAAe,CAAC;QAC3B;MACF;IACF,CAAC,MAAM;MACL,IAAI,OAAOnB,yBAAyB,KAAK,UAAU,EAAE;QACnDA,yBAAyB,EAAE;MAC7B,CAAC,MAAM;QACLZ,QAAQ,CAAC,EAAE,CAAC;MACd;IACF;IACA,IAAIM,cAAc,EAAE;MAClBoB,OAAO,CAAC,KAAK,CAAC;IAChB;EACF,CAAC,EAAE,CACD1B,QAAQ,EACRN,IAAI,EACJY,cAAc,EACdqB,eAAe,CAAC+B,MAAM,EACtB3B,eAAe,EACfnB,yBAAyB,CAC1B,CAAC;EAEF,IAAM+C,kBAAkB,GAAG,IAAAd,kBAAW,EACpC,UAACX,MAAM,EAAEe,KAAK,EAAK;IACjB,IAAI,OAAOtC,YAAY,KAAK,UAAU,EAAE;MACtC,OAAOA,YAAY,CAACuB,MAAM,EAAEe,KAAK,CAAC;IACpC;IACA,oBACE,yEACE,6BAAC,4BAAa;MACZ,QAAQ,EAAEf,MAAM,CAAC0B,KAAM;MACvB,KAAK,EAAE1B,MAAM,CAAC2B,KAAM;MACpB,SAAS,EAAE3B,MAAM,CAAC4B,SAAU;MAC5B,IAAI,EAAE5B,MAAM,CAAC6B,IAAK;MAClB,cAAc,EAAE7B,MAAM,CAAC8B;IAAe,EACtC,EACD9B,MAAM,CAACE,EAAE,KAAK,IAAI,GACjB1C,IAAI,KAAK,UAAU,gBACjB,6BAAC,sBAAc;MAAC,OAAO,EAAE6C;IAAoB,GAAKU,KAAK,EAAI,gBAE3D,6BAAC,yBAAiB;MAChB,OAAO,EAAEtB,eAAe,CAAC+B,MAAM,GAAG,CAAC,IAAI,CAAC/B,eAAe,CAAC,CAAC;IAAE,GACvDsB,KAAK,EAEZ,GACCvD,IAAI,KAAK,UAAU,gBACrB,6BAAC,sBAAc,EAAKuD,KAAK,CAAI,gBAE7B,6BAAC,yBAAiB,EAAKA,KAAK,CAC7B,CACA;EAEP,CAAC,EACD,CAACV,mBAAmB,EAAE5B,YAAY,EAAEgB,eAAe,EAAEjC,IAAI,CAAC,CAC3D;EAED,oBACE,6BAAC,GAAG,EAAKuD,KAAK,eACZ,0CACG,CAAC5C,aAAa,gBACb,6BAAC,wBAAgB;IAAC,GAAG,EAAEmB;EAAQ,gBAC7B,6BAAC,yBAAiB;IAChB,GAAG,EAAEJ,SAAU;IACf,SAAS;IACT,WAAW,EAAEjB;EAAY,EACzB,EACDF,UAAU,IAAIC,WAAW,iBACxB,6BAAC,gBAAO;IACN,kBAAkB,EAAE;MAAE+D,MAAM,EAAE;IAAK,CAAE;IACrC,KAAK,EAAE/D;EAAY,gBAEnB,0CAAMD,UAAU,CAAO,CAE1B,EACAA,UAAU,IAAI,CAACC,WAAW,IAAID,UAAU,CACxB,GACjB,IAAI,eACR,6BAAC,0BAAY,eACPa,IAAI;IACR,kBAAkB;IAClB,OAAO,EAAEE,SAAU;IACnB,iBAAiB,EAAEqC,iBAAkB;IACrC,QAAQ,EAAEvD,QAAS;IACnB,YAAY,EAAE8C,YAAa;IAC3B,YAAY,EAAEe,kBAAmB;IACjC,OAAO,EAAE9D,OAAQ;IACjB,yBAAyB,EAAE4D,iCAAkC;IAC7D,IAAI,EAAE/D,IAAK;IACX,qBAAqB,EAAEmB,qBAAsB;IAC7C,oBAAoB,EAAEL;EAAqB,GAC3C,CACE,CACF;AAEV,CAAC;AAAC;AAEFf,MAAM,CAACyE,WAAW,GAAG,QAAQ"}
|
|
@@ -56,13 +56,6 @@ var Window = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
|
56
56
|
onKeyDown(event);
|
|
57
57
|
}
|
|
58
58
|
}, [disableCloseOnEsc, onClose, onKeyDown]);
|
|
59
|
-
(0, _react.useEffect)(function () {
|
|
60
|
-
return function () {
|
|
61
|
-
typeof onClose === "function" && onClose();
|
|
62
|
-
};
|
|
63
|
-
// Dependency is empty because we only want to call onClose when component is unmounted
|
|
64
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
65
|
-
}, []);
|
|
66
59
|
var handleClick = (0, _react.useCallback)(function (event) {
|
|
67
60
|
event === null || event === void 0 ? void 0 : event.stopPropagation();
|
|
68
61
|
typeof onClick === "function" && onClick(event);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Window.js","names":["returnFocus","preventScroll","Window","forwardRef","ref","children","onClose","className","style","onKeyDown","disableFocusLock","disableScrollLock","disableCloseOnEsc","onClick","rest","innerRef","useRef","handleRef","useForkRef","useLayerContext","zIndex","layers","skyscraper","handleKeyDown","useCallback","event","defaultPrevented","key","preventDefault","
|
|
1
|
+
{"version":3,"file":"Window.js","names":["returnFocus","preventScroll","Window","forwardRef","ref","children","onClose","className","style","onKeyDown","disableFocusLock","disableScrollLock","disableCloseOnEsc","onClick","rest","innerRef","useRef","handleRef","useForkRef","useLayerContext","zIndex","layers","skyscraper","handleKeyDown","useCallback","event","defaultPrevented","key","preventDefault","handleClick","stopPropagation","classnames","displayName"],"sources":["../../../../src/components/Window/Window.tsx"],"sourcesContent":["import React, { useCallback, useRef, forwardRef, KeyboardEvent } from \"react\";\nimport classnames from \"classnames\";\nimport FocusLock from \"react-focus-lock\";\nimport { Portal, useLayerContext } from \"../../helpers\";\nimport useForkRef from \"../../utils/useForkRef\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { StyledWindow } from \"./Style\";\nimport { layers } from \"../../utils\";\n\nexport interface IWindow {\n onClose?: () => void;\n disableFocusLock?: boolean;\n disableScrollLock?: boolean;\n disableCloseOnEsc?: boolean;\n}\n\nconst returnFocus = { preventScroll: true };\n\nexport const Window = forwardRef<\n HTMLDivElement,\n IWindow & Omit<React.ComponentPropsWithoutRef<\"div\">, keyof IWindow>\n>(\n (\n {\n children,\n onClose,\n className,\n style,\n onKeyDown,\n disableFocusLock = false,\n disableScrollLock = false,\n disableCloseOnEsc = false,\n onClick,\n ...rest\n },\n ref\n ) => {\n const innerRef = useRef<HTMLDivElement>(null);\n const handleRef = useForkRef(innerRef, ref);\n const { zIndex = layers.skyscraper } = useLayerContext();\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n if (\n !event.defaultPrevented &&\n (event.key === \"Esc\" || event.key === \"Escape\") &&\n !disableCloseOnEsc\n ) {\n event.preventDefault();\n if (onClose) {\n onClose();\n }\n }\n if (typeof onKeyDown === \"function\") {\n onKeyDown(event);\n }\n },\n [disableCloseOnEsc, onClose, onKeyDown]\n );\n\n const handleClick = useCallback(\n (event) => {\n event?.stopPropagation();\n typeof onClick === \"function\" && onClick(event);\n },\n [onClick]\n );\n\n return (\n <Portal>\n <FocusLock returnFocus={returnFocus} disabled={disableFocusLock}>\n <RemoveScroll\n forwardProps\n ref={handleRef}\n enabled={!disableScrollLock}\n noIsolation\n >\n <StyledWindow\n {...rest}\n style={{ zIndex, ...style }}\n onKeyDown={handleKeyDown}\n tabIndex={0}\n className={classnames(\"c-window\", className)}\n onClick={handleClick}\n >\n {children}\n </StyledWindow>\n </RemoveScroll>\n </FocusLock>\n </Portal>\n );\n }\n);\n\nWindow.displayName = \"Window\";\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAqC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASrC,IAAMA,WAAW,GAAG;EAAEC,aAAa,EAAE;AAAK,CAAC;AAEpC,IAAMC,MAAM,gBAAG,IAAAC,iBAAU,EAI9B,gBAaEC,GAAG,EACA;EAAA,IAZDC,QAAQ,QAARA,QAAQ;IACRC,OAAO,QAAPA,OAAO;IACPC,SAAS,QAATA,SAAS;IACTC,KAAK,QAALA,KAAK;IACLC,SAAS,QAATA,SAAS;IAAA,6BACTC,gBAAgB;IAAhBA,gBAAgB,sCAAG,KAAK;IAAA,6BACxBC,iBAAiB;IAAjBA,iBAAiB,sCAAG,KAAK;IAAA,6BACzBC,iBAAiB;IAAjBA,iBAAiB,sCAAG,KAAK;IACzBC,OAAO,QAAPA,OAAO;IACJC,IAAI;EAIT,IAAMC,QAAQ,GAAG,IAAAC,aAAM,EAAiB,IAAI,CAAC;EAC7C,IAAMC,SAAS,GAAG,IAAAC,mBAAU,EAACH,QAAQ,EAAEX,GAAG,CAAC;EAC3C,uBAAuC,IAAAe,wBAAe,GAAE;IAAA,yCAAhDC,MAAM;IAANA,MAAM,sCAAGC,aAAM,CAACC,UAAU;EAElC,IAAMC,aAAa,GAAG,IAAAC,kBAAW,EAC/B,UAACC,KAAoC,EAAK;IACxC,IACE,CAACA,KAAK,CAACC,gBAAgB,KACtBD,KAAK,CAACE,GAAG,KAAK,KAAK,IAAIF,KAAK,CAACE,GAAG,KAAK,QAAQ,CAAC,IAC/C,CAACf,iBAAiB,EAClB;MACAa,KAAK,CAACG,cAAc,EAAE;MACtB,IAAItB,OAAO,EAAE;QACXA,OAAO,EAAE;MACX;IACF;IACA,IAAI,OAAOG,SAAS,KAAK,UAAU,EAAE;MACnCA,SAAS,CAACgB,KAAK,CAAC;IAClB;EACF,CAAC,EACD,CAACb,iBAAiB,EAAEN,OAAO,EAAEG,SAAS,CAAC,CACxC;EAED,IAAMoB,WAAW,GAAG,IAAAL,kBAAW,EAC7B,UAACC,KAAK,EAAK;IACTA,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEK,eAAe,EAAE;IACxB,OAAOjB,OAAO,KAAK,UAAU,IAAIA,OAAO,CAACY,KAAK,CAAC;EACjD,CAAC,EACD,CAACZ,OAAO,CAAC,CACV;EAED,oBACE,6BAAC,eAAM,qBACL,6BAAC,uBAAS;IAAC,WAAW,EAAEb,WAAY;IAAC,QAAQ,EAAEU;EAAiB,gBAC9D,6BAAC,+BAAY;IACX,YAAY;IACZ,GAAG,EAAEO,SAAU;IACf,OAAO,EAAE,CAACN,iBAAkB;IAC5B,WAAW;EAAA,gBAEX,6BAAC,mBAAY,eACPG,IAAI;IACR,KAAK;MAAIM,MAAM,EAANA;IAAM,GAAKZ,KAAK,CAAG;IAC5B,SAAS,EAAEe,aAAc;IACzB,QAAQ,EAAE,CAAE;IACZ,SAAS,EAAE,IAAAQ,mBAAU,EAAC,UAAU,EAAExB,SAAS,CAAE;IAC7C,OAAO,EAAEsB;EAAY,IAEpBxB,QAAQ,CACI,CACF,CACL,CACL;AAEb,CAAC,CACF;AAAC;AAEFH,MAAM,CAAC8B,WAAW,GAAG,QAAQ"}
|
|
@@ -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,CAqOnC,CAAC"}
|
|
@@ -83,12 +83,13 @@ export var Select = function Select(_ref) {
|
|
|
83
83
|
}, [childNode, open]);
|
|
84
84
|
var handleChange = useCallback(function (selectedValue) {
|
|
85
85
|
if (forceCloseMenu) {
|
|
86
|
+
if (typeof onSelectClose === "function") onSelectClose();
|
|
86
87
|
setOpen(false);
|
|
87
88
|
}
|
|
88
89
|
if (selectedValue !== selected) {
|
|
89
90
|
onChange(selectedValue);
|
|
90
91
|
}
|
|
91
|
-
}, [forceCloseMenu, selected, onChange]);
|
|
92
|
+
}, [forceCloseMenu, selected, onSelectClose, onChange]);
|
|
92
93
|
var onClose = useCallback(function () {
|
|
93
94
|
setOpen(false);
|
|
94
95
|
if (onSelectClose) {
|
|
@@ -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","setChildNode","elementRef","handleRef","Tag","formRef","open","setOpen","selectedOptions","Array","selectOptions","allOptionValues","reduce","acc","option","id","allGroupOptions","map","isAllOptionsChecked","every","includes","focus","handleChange","selectedValue","onClose","onOpen","props","menuClassName","className","handleEmptyAction","value","current","reset","handleDefaultOptionChangeCallback","length","handleRenderOption","image","color","textColor","name","additionalInfo","zIndex","displayName"],"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, setChildNode] = useState<HTMLInputElement | null>();\n const elementRef = useRef<HTMLInputElement | null>(null);\n\n const handleRef = useForkRef(setChildNode, elementRef);\n\n const Tag = !target ? \"div\" : Menu;\n const formRef = useRef<HTMLFormElement | null>(null);\n\n const [open, setOpen] = useState(false);\n\n const selectedOptions = useMemo(\n () => (selected instanceof Array ? selected : [selected]),\n [selected]\n );\n\n const selectOptions = useMemo(() => {\n if (!options) {\n return [];\n }\n return options;\n }, [options]);\n\n const allOptionValues = useMemo(() => {\n return selectOptions.reduce(\n (\n acc: (string | number)[],\n option: IOptionGroupProps | IOptionItemProps\n ) => {\n if (!isOptionGroup(option)) {\n return [...acc, option.id];\n }\n const allGroupOptions = option.options.map((option) => option.id);\n return [...acc, ...allGroupOptions];\n },\n []\n );\n }, [selectOptions]);\n\n const isAllOptionsChecked = useMemo(\n () => allOptionValues.every((option) => selectedOptions.includes(option)),\n [allOptionValues, selectedOptions]\n );\n\n useEffect(() => {\n open && childNode?.focus();\n }, [childNode, open]);\n\n const handleChange = useCallback(\n (selectedValue) => {\n if (forceCloseMenu) {\n setOpen(false);\n }\n if (selectedValue !== selected) {\n onChange(selectedValue);\n }\n },\n [forceCloseMenu, selected, 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 };\n }\n return { className: classNames(\"c-select\", selectClassName) };\n }, [target, selectClassName, onClose, onOpen, mode, open, position]);\n\n const handleEmptyAction = useCallback(\n (value) => {\n emptyAction(value);\n if (forceCloseMenu) {\n setOpen(false);\n }\n formRef.current?.reset();\n },\n [emptyAction, forceCloseMenu]\n );\n\n const handleDefaultOptionChangeCallback = useCallback(() => {\n if (type === \"multiple\") {\n if (selectedOptions.length === allOptionValues.length) {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange([]);\n }\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange(allOptionValues);\n }\n }\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange(\"\");\n }\n }\n if (forceCloseMenu) {\n setOpen(false);\n }\n }, [\n onChange,\n type,\n forceCloseMenu,\n selectedOptions.length,\n allOptionValues,\n handleDefaultOptionChange,\n ]);\n\n const handleRenderOption = useCallback(\n (option, props) => {\n if (typeof renderOption === \"function\") {\n return renderOption(option, props);\n }\n return (\n <>\n <OptionContent\n imageUrl={option.image}\n color={option.color}\n textColor={option.textColor}\n name={option.name}\n additionalInfo={option.additionalInfo}\n />\n {option.id === null ? (\n type === \"multiple\" ? (\n <StyledCheckbox checked={isAllOptionsChecked} {...props} />\n ) : (\n <StyledRadioButton\n checked={selectedOptions.length < 1 || !selectedOptions[0]}\n {...props}\n />\n )\n ) : type === \"multiple\" ? (\n <StyledCheckbox {...props} />\n ) : (\n <StyledRadioButton {...props} />\n )}\n </>\n );\n },\n [isAllOptionsChecked, renderOption, selectedOptions, type]\n );\n\n return (\n <Tag {...props}>\n <div>\n {!disableSearch ? (\n <StyledSelectForm ref={formRef}>\n <StyledSelectInput\n ref={handleRef}\n autoFocus\n placeholder={placeholder}\n />\n {actionIcon && actionLabel && (\n <Tooltip\n popperTooltipStyle={{ zIndex: 1301 }}\n title={actionLabel}\n >\n <div>{actionIcon}</div>\n </Tooltip>\n )}\n {actionIcon && !actionLabel && actionIcon}\n </StyledSelectForm>\n ) : null}\n <Autocomplete\n {...prop}\n 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","setChildNode","elementRef","handleRef","Tag","formRef","open","setOpen","selectedOptions","Array","selectOptions","allOptionValues","reduce","acc","option","id","allGroupOptions","map","isAllOptionsChecked","every","includes","focus","handleChange","selectedValue","onClose","onOpen","props","menuClassName","className","handleEmptyAction","value","current","reset","handleDefaultOptionChangeCallback","length","handleRenderOption","image","color","textColor","name","additionalInfo","zIndex","displayName"],"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, setChildNode] = useState<HTMLInputElement | null>();\n const elementRef = useRef<HTMLInputElement | null>(null);\n\n const handleRef = useForkRef(setChildNode, elementRef);\n\n const Tag = !target ? \"div\" : Menu;\n const formRef = useRef<HTMLFormElement | null>(null);\n\n const [open, setOpen] = useState(false);\n\n const selectedOptions = useMemo(\n () => (selected instanceof Array ? selected : [selected]),\n [selected]\n );\n\n const selectOptions = useMemo(() => {\n if (!options) {\n return [];\n }\n return options;\n }, [options]);\n\n const allOptionValues = useMemo(() => {\n return selectOptions.reduce(\n (\n acc: (string | number)[],\n option: IOptionGroupProps | IOptionItemProps\n ) => {\n if (!isOptionGroup(option)) {\n return [...acc, option.id];\n }\n const allGroupOptions = option.options.map((option) => option.id);\n return [...acc, ...allGroupOptions];\n },\n []\n );\n }, [selectOptions]);\n\n const isAllOptionsChecked = useMemo(\n () => allOptionValues.every((option) => selectedOptions.includes(option)),\n [allOptionValues, selectedOptions]\n );\n\n useEffect(() => {\n open && childNode?.focus();\n }, [childNode, open]);\n\n const handleChange = useCallback(\n (selectedValue) => {\n if (forceCloseMenu) {\n 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 };\n }\n return { className: classNames(\"c-select\", selectClassName) };\n }, [target, selectClassName, onClose, onOpen, mode, open, position]);\n\n const handleEmptyAction = useCallback(\n (value) => {\n emptyAction(value);\n if (forceCloseMenu) {\n setOpen(false);\n }\n formRef.current?.reset();\n },\n [emptyAction, forceCloseMenu]\n );\n\n const handleDefaultOptionChangeCallback = useCallback(() => {\n if (type === \"multiple\") {\n if (selectedOptions.length === allOptionValues.length) {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange([]);\n }\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange(allOptionValues);\n }\n }\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange(\"\");\n }\n }\n if (forceCloseMenu) {\n setOpen(false);\n }\n }, [\n onChange,\n type,\n forceCloseMenu,\n selectedOptions.length,\n allOptionValues,\n handleDefaultOptionChange,\n ]);\n\n const handleRenderOption = useCallback(\n (option, props) => {\n if (typeof renderOption === \"function\") {\n return renderOption(option, props);\n }\n return (\n <>\n <OptionContent\n imageUrl={option.image}\n color={option.color}\n textColor={option.textColor}\n name={option.name}\n additionalInfo={option.additionalInfo}\n />\n {option.id === null ? (\n type === \"multiple\" ? (\n <StyledCheckbox checked={isAllOptionsChecked} {...props} />\n ) : (\n <StyledRadioButton\n checked={selectedOptions.length < 1 || !selectedOptions[0]}\n {...props}\n />\n )\n ) : type === \"multiple\" ? (\n <StyledCheckbox {...props} />\n ) : (\n <StyledRadioButton {...props} />\n )}\n </>\n );\n },\n [isAllOptionsChecked, renderOption, selectedOptions, type]\n );\n\n return (\n <Tag {...props}>\n <div>\n {!disableSearch ? (\n <StyledSelectForm ref={formRef}>\n <StyledSelectInput\n ref={handleRef}\n autoFocus\n placeholder={placeholder}\n />\n {actionIcon && actionLabel && (\n <Tooltip\n popperTooltipStyle={{ zIndex: 1301 }}\n title={actionLabel}\n >\n <div>{actionIcon}</div>\n </Tooltip>\n )}\n {actionIcon && !actionLabel && actionIcon}\n </StyledSelectForm>\n ) : null}\n <Autocomplete\n {...prop}\n 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":"Window.d.ts","sourceRoot":"","sources":["../../../../src/components/Window/Window.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Window.d.ts","sourceRoot":"","sources":["../../../../src/components/Window/Window.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyD,MAAM,OAAO,CAAC;AAS9E,MAAM,WAAW,OAAO;IACtB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAID,eAAO,MAAM,MAAM,usJA0ElB,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
3
|
var _excluded = ["children", "onClose", "className", "style", "onKeyDown", "disableFocusLock", "disableScrollLock", "disableCloseOnEsc", "onClick"];
|
|
4
|
-
import React, { useCallback, useRef,
|
|
4
|
+
import React, { useCallback, useRef, forwardRef } from "react";
|
|
5
5
|
import classnames from "classnames";
|
|
6
6
|
import FocusLock from "react-focus-lock";
|
|
7
7
|
import { Portal, useLayerContext } from "../../helpers";
|
|
@@ -42,13 +42,6 @@ export var Window = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
42
42
|
onKeyDown(event);
|
|
43
43
|
}
|
|
44
44
|
}, [disableCloseOnEsc, onClose, onKeyDown]);
|
|
45
|
-
useEffect(function () {
|
|
46
|
-
return function () {
|
|
47
|
-
typeof onClose === "function" && onClose();
|
|
48
|
-
};
|
|
49
|
-
// Dependency is empty because we only want to call onClose when component is unmounted
|
|
50
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
51
|
-
}, []);
|
|
52
45
|
var handleClick = useCallback(function (event) {
|
|
53
46
|
event == null ? void 0 : event.stopPropagation();
|
|
54
47
|
typeof onClick === "function" && onClick(event);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Window.js","names":["React","useCallback","useRef","
|
|
1
|
+
{"version":3,"file":"Window.js","names":["React","useCallback","useRef","forwardRef","classnames","FocusLock","Portal","useLayerContext","useForkRef","RemoveScroll","StyledWindow","layers","returnFocus","preventScroll","Window","ref","children","onClose","className","style","onKeyDown","disableFocusLock","disableScrollLock","disableCloseOnEsc","onClick","rest","innerRef","handleRef","zIndex","skyscraper","handleKeyDown","event","defaultPrevented","key","preventDefault","handleClick","stopPropagation","displayName"],"sources":["../../../../src/components/Window/Window.tsx"],"sourcesContent":["import React, { useCallback, useRef, forwardRef, KeyboardEvent } from \"react\";\nimport classnames from \"classnames\";\nimport FocusLock from \"react-focus-lock\";\nimport { Portal, useLayerContext } from \"../../helpers\";\nimport useForkRef from \"../../utils/useForkRef\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { StyledWindow } from \"./Style\";\nimport { layers } from \"../../utils\";\n\nexport interface IWindow {\n onClose?: () => void;\n disableFocusLock?: boolean;\n disableScrollLock?: boolean;\n disableCloseOnEsc?: boolean;\n}\n\nconst returnFocus = { preventScroll: true };\n\nexport const Window = forwardRef<\n HTMLDivElement,\n IWindow & Omit<React.ComponentPropsWithoutRef<\"div\">, keyof IWindow>\n>(\n (\n {\n children,\n onClose,\n className,\n style,\n onKeyDown,\n disableFocusLock = false,\n disableScrollLock = false,\n disableCloseOnEsc = false,\n onClick,\n ...rest\n },\n ref\n ) => {\n const innerRef = useRef<HTMLDivElement>(null);\n const handleRef = useForkRef(innerRef, ref);\n const { zIndex = layers.skyscraper } = useLayerContext();\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n if (\n !event.defaultPrevented &&\n (event.key === \"Esc\" || event.key === \"Escape\") &&\n !disableCloseOnEsc\n ) {\n event.preventDefault();\n if (onClose) {\n onClose();\n }\n }\n if (typeof onKeyDown === \"function\") {\n onKeyDown(event);\n }\n },\n [disableCloseOnEsc, onClose, onKeyDown]\n );\n\n const handleClick = useCallback(\n (event) => {\n event?.stopPropagation();\n typeof onClick === \"function\" && onClick(event);\n },\n [onClick]\n );\n\n return (\n <Portal>\n <FocusLock returnFocus={returnFocus} disabled={disableFocusLock}>\n <RemoveScroll\n forwardProps\n ref={handleRef}\n enabled={!disableScrollLock}\n noIsolation\n >\n <StyledWindow\n {...rest}\n style={{ zIndex, ...style }}\n onKeyDown={handleKeyDown}\n tabIndex={0}\n className={classnames(\"c-window\", className)}\n onClick={handleClick}\n >\n {children}\n </StyledWindow>\n </RemoveScroll>\n </FocusLock>\n </Portal>\n );\n }\n);\n\nWindow.displayName = \"Window\";\n"],"mappings":";;;AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,MAAM,EAAEC,UAAU,QAAuB,OAAO;AAC7E,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,SAAS,MAAM,kBAAkB;AACxC,SAASC,MAAM,EAAEC,eAAe,QAAQ,eAAe;AACvD,OAAOC,UAAU,MAAM,wBAAwB;AAC/C,SAASC,YAAY,QAAQ,qBAAqB;AAClD,SAASC,YAAY,QAAQ,SAAS;AACtC,SAASC,MAAM,QAAQ,aAAa;AASpC,IAAMC,WAAW,GAAG;EAAEC,aAAa,EAAE;AAAK,CAAC;AAE3C,OAAO,IAAMC,MAAM,gBAAGX,UAAU,CAI9B,gBAaEY,GAAG,EACA;EAAA,IAZDC,QAAQ,QAARA,QAAQ;IACRC,OAAO,QAAPA,OAAO;IACPC,SAAS,QAATA,SAAS;IACTC,KAAK,QAALA,KAAK;IACLC,SAAS,QAATA,SAAS;IAAA,6BACTC,gBAAgB;IAAhBA,gBAAgB,sCAAG,KAAK;IAAA,6BACxBC,iBAAiB;IAAjBA,iBAAiB,sCAAG,KAAK;IAAA,6BACzBC,iBAAiB;IAAjBA,iBAAiB,sCAAG,KAAK;IACzBC,OAAO,QAAPA,OAAO;IACJC,IAAI;EAIT,IAAMC,QAAQ,GAAGxB,MAAM,CAAiB,IAAI,CAAC;EAC7C,IAAMyB,SAAS,GAAGnB,UAAU,CAACkB,QAAQ,EAAEX,GAAG,CAAC;EAC3C,uBAAuCR,eAAe,EAAE;IAAA,yCAAhDqB,MAAM;IAANA,MAAM,sCAAGjB,MAAM,CAACkB,UAAU;EAElC,IAAMC,aAAa,GAAG7B,WAAW,CAC/B,UAAC8B,KAAoC,EAAK;IACxC,IACE,CAACA,KAAK,CAACC,gBAAgB,KACtBD,KAAK,CAACE,GAAG,KAAK,KAAK,IAAIF,KAAK,CAACE,GAAG,KAAK,QAAQ,CAAC,IAC/C,CAACV,iBAAiB,EAClB;MACAQ,KAAK,CAACG,cAAc,EAAE;MACtB,IAAIjB,OAAO,EAAE;QACXA,OAAO,EAAE;MACX;IACF;IACA,IAAI,OAAOG,SAAS,KAAK,UAAU,EAAE;MACnCA,SAAS,CAACW,KAAK,CAAC;IAClB;EACF,CAAC,EACD,CAACR,iBAAiB,EAAEN,OAAO,EAAEG,SAAS,CAAC,CACxC;EAED,IAAMe,WAAW,GAAGlC,WAAW,CAC7B,UAAC8B,KAAK,EAAK;IACTA,KAAK,oBAALA,KAAK,CAAEK,eAAe,EAAE;IACxB,OAAOZ,OAAO,KAAK,UAAU,IAAIA,OAAO,CAACO,KAAK,CAAC;EACjD,CAAC,EACD,CAACP,OAAO,CAAC,CACV;EAED,oBACE,oBAAC,MAAM,qBACL,oBAAC,SAAS;IAAC,WAAW,EAAEZ,WAAY;IAAC,QAAQ,EAAES;EAAiB,gBAC9D,oBAAC,YAAY;IACX,YAAY;IACZ,GAAG,EAAEM,SAAU;IACf,OAAO,EAAE,CAACL,iBAAkB;IAC5B,WAAW;EAAA,gBAEX,oBAAC,YAAY,eACPG,IAAI;IACR,KAAK;MAAIG,MAAM,EAANA;IAAM,GAAKT,KAAK,CAAG;IAC5B,SAAS,EAAEW,aAAc;IACzB,QAAQ,EAAE,CAAE;IACZ,SAAS,EAAE1B,UAAU,CAAC,UAAU,EAAEc,SAAS,CAAE;IAC7C,OAAO,EAAEiB;EAAY,IAEpBnB,QAAQ,CACI,CACF,CACL,CACL;AAEb,CAAC,CACF;AAEDF,MAAM,CAACuB,WAAW,GAAG,QAAQ"}
|
package/dist/index.js
CHANGED
|
@@ -655,13 +655,6 @@
|
|
|
655
655
|
onKeyDown(event);
|
|
656
656
|
}
|
|
657
657
|
}, [disableCloseOnEsc, onClose, onKeyDown]);
|
|
658
|
-
React.useEffect(function () {
|
|
659
|
-
return function () {
|
|
660
|
-
typeof onClose === "function" && onClose();
|
|
661
|
-
};
|
|
662
|
-
// Dependency is empty because we only want to call onClose when component is unmounted
|
|
663
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
664
|
-
}, []);
|
|
665
658
|
var handleClick = React.useCallback(function (event) {
|
|
666
659
|
event === null || event === void 0 ? void 0 : event.stopPropagation();
|
|
667
660
|
typeof onClick === "function" && onClick(event);
|
|
@@ -10480,12 +10473,13 @@
|
|
|
10480
10473
|
}, [childNode, open]);
|
|
10481
10474
|
var handleChange = React.useCallback(function (selectedValue) {
|
|
10482
10475
|
if (forceCloseMenu) {
|
|
10476
|
+
if (typeof onSelectClose === "function") onSelectClose();
|
|
10483
10477
|
setOpen(false);
|
|
10484
10478
|
}
|
|
10485
10479
|
if (selectedValue !== selected) {
|
|
10486
10480
|
onChange(selectedValue);
|
|
10487
10481
|
}
|
|
10488
|
-
}, [forceCloseMenu, selected, onChange]);
|
|
10482
|
+
}, [forceCloseMenu, selected, onSelectClose, onChange]);
|
|
10489
10483
|
var onClose = React.useCallback(function () {
|
|
10490
10484
|
setOpen(false);
|
|
10491
10485
|
if (onSelectClose) {
|