@infomaximum/ui-kit 0.12.11 → 0.13.0
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/components/BaseSelect/BaseSelect.d.ts +5 -0
- package/dist/components/BaseSelect/BaseSelect.js +360 -0
- package/dist/components/{Select/Select.styles.d.ts → BaseSelect/BaseSelect.styles.d.ts} +20 -4
- package/dist/components/{Select/Select.styles.js → BaseSelect/BaseSelect.styles.js} +23 -10
- package/dist/components/BaseSelect/BaseSelect.types.d.ts +99 -0
- package/dist/components/BaseSelect/BaseSelect.utils.d.ts +8 -0
- package/dist/components/BaseSelect/BaseSelect.utils.js +39 -0
- package/dist/components/BaseSelect/components/BaseSelectOptionList/BaseSelectOptionList.types.d.ts +11 -0
- package/dist/components/BaseSelect/components/SelectOptionList/SelectOptionList.d.ts +4 -0
- package/dist/components/BaseSelect/components/SelectOptionList/SelectOptionList.js +120 -0
- package/dist/components/{Select → BaseSelect}/components/SelectOptionList/SelectOptionList.styles.d.ts +13 -4
- package/dist/components/{Select → BaseSelect}/components/SelectOptionList/SelectOptionList.styles.js +13 -7
- package/dist/components/BaseSelect/components/SelectOptionList/SelectOptionList.types.d.ts +20 -0
- package/dist/components/BaseSelect/components/SelectTag/SelectTag.d.ts +4 -0
- package/dist/components/{Select → BaseSelect}/components/SelectTag/SelectTag.js +9 -5
- package/dist/components/BaseSelect/components/SelectTag/SelectTag.styles.d.ts +16 -0
- package/dist/components/{Select → BaseSelect}/components/SelectTag/SelectTag.styles.js +13 -3
- package/dist/components/BaseSelect/components/SelectTag/SelectTag.types.d.ts +11 -0
- package/dist/components/BaseSelect/contexts/BaseSelectContext.d.ts +33 -0
- package/dist/components/BaseSelect/contexts/BaseSelectContext.js +8 -0
- package/dist/components/BaseSelect/hooks/useCurrentValue.d.ts +7 -0
- package/dist/components/{Select → BaseSelect}/hooks/useCurrentValue.js +15 -0
- package/dist/components/BaseSelect/hooks/useDefaultCurrentValue.d.ts +2 -0
- package/dist/components/{Select → BaseSelect}/hooks/useDefaultCurrentValue.js +1 -1
- package/dist/components/BaseSelect/hooks/useDefaultSelectIndex.d.ts +2 -0
- package/dist/components/BaseSelect/hooks/useHideElements.d.ts +6 -0
- package/dist/components/{Select → BaseSelect}/hooks/useHideElements.js +11 -3
- package/dist/components/BaseSelect/hooks/useSearch.d.ts +10 -0
- package/dist/components/{Select → BaseSelect}/hooks/useSearch.js +4 -16
- package/dist/components/Checkbox/Checkbox.js +12 -8
- package/dist/components/Checkbox/Checkbox.utils.d.ts +2 -0
- package/dist/components/Checkbox/Checkbox.utils.js +5 -0
- package/dist/components/Checkbox/index.d.ts +1 -0
- package/dist/components/InputNumber/InputNumber.js +13 -6
- package/dist/components/InputNumber/InputNumber.styles.d.ts +9 -1
- package/dist/components/InputNumber/InputNumber.styles.js +10 -2
- package/dist/components/InputNumber/InputNumber.types.d.ts +5 -0
- package/dist/components/InputNumber/hooks/useChangeValue/useChangeValue.js +8 -5
- package/dist/components/InputNumber/hooks/useChangeValue/useChangeValue.types.d.ts +1 -0
- package/dist/components/InputNumber/hooks/useFocusBlurEvents/useFocusBlurEvents.js +2 -0
- package/dist/components/InputNumber/hooks/useFocusBlurEvents/useFocusBlurEvents.types.d.ts +2 -1
- package/dist/components/InputNumber/hooks/useKeyboardEvents/useKeyboardEvents.js +4 -0
- package/dist/components/InputNumber/hooks/useKeyboardEvents/useKeyboardEvents.types.d.ts +1 -0
- package/dist/components/InputNumber/hooks/useStep/useStep.js +2 -0
- package/dist/components/InputNumber/hooks/useStep/useStep.types.d.ts +1 -0
- package/dist/components/InputNumber/index.d.ts +1 -0
- package/dist/components/Select/Select.d.ts +2 -2
- package/dist/components/Select/Select.js +39 -281
- package/dist/components/Select/Select.types.d.ts +6 -85
- package/dist/components/Select/Select.utils.d.ts +1 -9
- package/dist/components/Select/Select.utils.js +1 -46
- package/dist/components/Select/components/SelectOption/SelectOption.js +20 -23
- package/dist/components/Select/components/SelectOption/SelectOption.styles.js +1 -1
- package/dist/components/Select/components/SelectOption/SelectOption.types.d.ts +13 -15
- package/dist/components/Select/hooks/useKeyControl.d.ts +7 -3
- package/dist/components/Select/hooks/useKeyControl.js +48 -13
- package/dist/components/TreeSelect/TreeSelect.d.ts +3 -0
- package/dist/components/TreeSelect/TreeSelect.js +189 -0
- package/dist/components/TreeSelect/TreeSelect.tokens.d.ts +30 -0
- package/dist/components/TreeSelect/TreeSelect.tokens.js +31 -0
- package/dist/components/TreeSelect/TreeSelect.types.d.ts +69 -0
- package/dist/components/TreeSelect/TreeSelect.utils.d.ts +13 -0
- package/dist/components/TreeSelect/TreeSelect.utils.js +192 -0
- package/dist/components/TreeSelect/components/TreeSelectOption/TreeSelectOption.d.ts +3 -0
- package/dist/components/TreeSelect/components/TreeSelectOption/TreeSelectOption.js +117 -0
- package/dist/components/TreeSelect/components/TreeSelectOption/TreeSelectOption.styles.d.ts +83 -0
- package/dist/components/TreeSelect/components/TreeSelectOption/TreeSelectOption.styles.js +111 -0
- package/dist/components/TreeSelect/components/TreeSelectOption/TreeSelectOption.types.d.ts +27 -0
- package/dist/components/TreeSelect/contexts/treeSelectContext.d.ts +14 -0
- package/dist/components/TreeSelect/contexts/treeSelectContext.js +5 -0
- package/dist/components/TreeSelect/forStories/dataForExamples.d.ts +32 -0
- package/dist/components/TreeSelect/hooks/useAsyncLoading.d.ts +8 -0
- package/dist/components/TreeSelect/hooks/useAsyncLoading.js +39 -0
- package/dist/components/TreeSelect/hooks/useElementSizesController.d.ts +6 -0
- package/dist/components/TreeSelect/hooks/useElementSizesController.js +21 -0
- package/dist/components/TreeSelect/hooks/useExtendController.d.ts +19 -0
- package/dist/components/TreeSelect/hooks/useExtendController.js +65 -0
- package/dist/components/TreeSelect/hooks/useKeyControl.d.ts +11 -0
- package/dist/components/TreeSelect/hooks/useKeyControl.js +75 -0
- package/dist/components/TreeSelect/hooks/useTreeCheckable.d.ts +6 -0
- package/dist/components/TreeSelect/hooks/useTreeCheckable.js +56 -0
- package/dist/components/TreeSelect/hooks/useTreeData.d.ts +8 -0
- package/dist/components/TreeSelect/hooks/useTreeData.js +33 -0
- package/dist/components/TreeSelect/index.d.ts +2 -0
- package/dist/index.d.ts +5 -4
- package/dist/index.js +6 -0
- package/package.json +1 -1
- package/dist/components/Select/components/SelectOptionList/SelectOptionList.d.ts +0 -3
- package/dist/components/Select/components/SelectOptionList/SelectOptionList.js +0 -139
- package/dist/components/Select/components/SelectOptionList/SelectOptionList.types.d.ts +0 -42
- package/dist/components/Select/components/SelectOptionList/SelectOptionList.utils.d.ts +0 -1
- package/dist/components/Select/components/SelectOptionList/SelectOptionList.utils.js +0 -4
- package/dist/components/Select/components/SelectTag/SelectTag.d.ts +0 -3
- package/dist/components/Select/components/SelectTag/SelectTag.styles.d.ts +0 -8
- package/dist/components/Select/components/SelectTag/SelectTag.types.d.ts +0 -10
- package/dist/components/Select/hooks/useCurrentValue.d.ts +0 -8
- package/dist/components/Select/hooks/useDefaultCurrentValue.d.ts +0 -3
- package/dist/components/Select/hooks/useDefaultSelectIndex.d.ts +0 -2
- package/dist/components/Select/hooks/useDefaultSelectIndex.js +0 -17
- package/dist/components/Select/hooks/useHideElements.d.ts +0 -5
- package/dist/components/Select/hooks/useSearch.d.ts +0 -11
- /package/dist/components/{Select/Select.tokens.d.ts → BaseSelect/BaseSelect.tokens.d.ts} +0 -0
- /package/dist/components/{Select/Select.tokens.js → BaseSelect/BaseSelect.tokens.js} +0 -0
- /package/dist/components/{Select → BaseSelect}/components/TagPlaceholder/TagPlaceholder.d.ts +0 -0
- /package/dist/components/{Select → BaseSelect}/components/TagPlaceholder/TagPlaceholder.js +0 -0
- /package/dist/components/{Select → BaseSelect}/components/TagPlaceholder/TagPlaceholder.styles.d.ts +0 -0
- /package/dist/components/{Select → BaseSelect}/components/TagPlaceholder/TagPlaceholder.styles.js +0 -0
- /package/dist/components/{Select → BaseSelect}/components/TagPlaceholder/TagPlaceholder.types.d.ts +0 -0
|
@@ -1,89 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { Theme } from '../../themes';
|
|
4
|
-
import { Interpolation } from '@emotion/react';
|
|
5
|
-
import { DropdownMatchSelectWidthType, DropdownStyles } from './components/SelectOptionList/SelectOptionList.types';
|
|
6
|
-
import { NarrowedElement, ReferenceType } from '@floating-ui/react';
|
|
7
|
-
export type SelectStatus = "default" | "error";
|
|
8
|
-
export type VariantType = "outlined" | "borderless";
|
|
9
|
-
export type ModeType = "single" | "multiple";
|
|
10
|
-
export type maxTagCountType = number | "responsive";
|
|
1
|
+
import { SelectOptionInterface, SelectOptionStyles } from './components/SelectOption/SelectOption.types';
|
|
2
|
+
import { BaseSelectProps, BaseSelectStyles } from '../BaseSelect/BaseSelect.types';
|
|
11
3
|
export interface SelectStyles {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
body?: (theme: Theme) => Interpolation;
|
|
15
|
-
prefixAndContent?: (theme: Theme) => Interpolation;
|
|
16
|
-
content?: (theme: Theme) => Interpolation;
|
|
17
|
-
placeholder?: (theme: Theme) => Interpolation;
|
|
18
|
-
prefix?: (theme: Theme) => Interpolation;
|
|
19
|
-
suffixIcon?: (theme: Theme) => Interpolation;
|
|
20
|
-
cleanIcon?: (theme: Theme) => Interpolation;
|
|
21
|
-
drawerIcon?: (theme: Theme) => Interpolation;
|
|
4
|
+
baseSelectStyles?: BaseSelectStyles;
|
|
5
|
+
optionStyles?: SelectOptionStyles;
|
|
22
6
|
}
|
|
23
|
-
export
|
|
24
|
-
|
|
25
|
-
mode?: ModeType;
|
|
26
|
-
variant?: VariantType;
|
|
27
|
-
defaultValue?: SelectOptionValue | SelectOptionValue[];
|
|
28
|
-
defaultOpen?: boolean;
|
|
29
|
-
value?: SelectOptionValue | SelectOptionValue[];
|
|
30
|
-
open?: boolean;
|
|
31
|
-
defaultActiveFirstOption?: boolean;
|
|
32
|
-
placeholder?: string;
|
|
33
|
-
dropdownMaxHeight?: number;
|
|
34
|
-
dropdownMinWidth?: number;
|
|
35
|
-
allowClear?: boolean;
|
|
36
|
-
autoFocus?: boolean;
|
|
37
|
-
prefix?: ReactNode;
|
|
38
|
-
suffixIcon?: ReactNode;
|
|
39
|
-
status?: SelectStatus;
|
|
40
|
-
disabled?: boolean;
|
|
41
|
-
dropdownPrompt?: string;
|
|
42
|
-
loading?: boolean;
|
|
43
|
-
dropdownClassName?: string;
|
|
44
|
-
dropdownMatchSelectWidth?: DropdownMatchSelectWidthType;
|
|
45
|
-
placement?: PlacementType;
|
|
46
|
-
virtual?: boolean;
|
|
47
|
-
emptyContent?: ReactNode;
|
|
48
|
-
showSearch?: boolean;
|
|
49
|
-
optionFilterProp?: string;
|
|
50
|
-
optionLabelProp?: string;
|
|
51
|
-
filterOption?: boolean | ((inputValue: string, option: SelectOptionInterface) => boolean);
|
|
52
|
-
searchValue?: string;
|
|
53
|
-
notFoundContent?: ReactNode;
|
|
54
|
-
drawer?: boolean;
|
|
55
|
-
filterSort?: (optionA: SelectOptionInterface, optionB: SelectOptionInterface, searchValue: string) => number;
|
|
7
|
+
export type SelectOptionValue = string | number;
|
|
8
|
+
export interface SelectProps extends Omit<BaseSelectProps<SelectOptionInterface, SelectOptionValue>, "renderDropdownItem" | "filterOptions" | "getOptionByValue" | "virtualizerEstimateSize" | "onKeyControl" | "currentSelectingIndex" | "getCurrentSelectingValue" | "styles"> {
|
|
56
9
|
styles?: SelectStyles;
|
|
57
|
-
autoClearSearchValue?: boolean;
|
|
58
|
-
maxTagCount?: maxTagCountType;
|
|
59
|
-
maxTagPlaceholder?: ((omittedValues: SelectOptionInterface[]) => ReactNode) | ReactNode;
|
|
60
|
-
maxTagTextLength?: number;
|
|
61
|
-
dropdownRender?: (originNode: ReactNode) => ReactNode;
|
|
62
|
-
optionRender?: (option: SelectOptionProps) => ReactNode;
|
|
63
|
-
labelRender?: (props: LabelInValueType) => ReactNode;
|
|
64
|
-
tagRender?: (label: string) => ReactNode;
|
|
65
|
-
onFocus?: (event: FocusEvent) => void;
|
|
66
|
-
onBlur?: (event: FocusEvent) => void;
|
|
67
|
-
onChange?: (value: SelectOptionValue[], option: SelectOptionInterface[]) => void;
|
|
68
|
-
onClear?: () => void;
|
|
69
|
-
onDropdownVisibleChange?: () => void;
|
|
70
|
-
onInputKeyDown?: (event: KeyboardEvent) => void;
|
|
71
|
-
onSelect?: (value: SelectOptionValue, option: SelectOptionInterface) => void;
|
|
72
|
-
getPopupContainer?: () => HTMLElement;
|
|
73
|
-
onSearch?: (searchValue: string) => void;
|
|
74
|
-
onDeselect?: (value: SelectOptionValue) => void;
|
|
75
10
|
}
|
|
76
|
-
export interface LabelInValueType {
|
|
77
|
-
label: ReactNode;
|
|
78
|
-
value: SelectOptionValue;
|
|
79
|
-
}
|
|
80
|
-
export interface Refs<RT extends ReferenceType = ReferenceType> {
|
|
81
|
-
reference: React.MutableRefObject<RT | null>;
|
|
82
|
-
floating: React.MutableRefObject<HTMLElement | null>;
|
|
83
|
-
domReference: React.MutableRefObject<NarrowedElement<RT> | null>;
|
|
84
|
-
setReference(node: RT | null): void;
|
|
85
|
-
setFloating(node: HTMLElement | null): void;
|
|
86
|
-
setPositionReference(node: RT | null): void;
|
|
87
|
-
}
|
|
88
|
-
export type PlacementType = "bottomLeft" | "bottomRight" | "topLeft" | "topRight";
|
|
89
|
-
export type UseSearchProps = Required<Pick<SelectProps, "options" | "optionFilterProp" | "filterOption">> & Pick<SelectProps, "onSearch" | "searchValue" | "filterSort">;
|
|
@@ -1,10 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { maxTagCountType, PlacementType } from './Select.types';
|
|
3
|
-
import { SelectOptionInterface, SelectOptionValue } from './components/SelectOption/SelectOption.types';
|
|
4
|
-
export declare const additionalElements: string[];
|
|
5
|
-
export declare const convertSelectPlacement: (placement: PlacementType) => Placement;
|
|
1
|
+
import { SelectOptionInterface } from './components/SelectOption/SelectOption.types';
|
|
6
2
|
export declare const getNextOption: (currentIndex: number, options: SelectOptionInterface[], isDecrement?: boolean) => number | null;
|
|
7
|
-
export declare const isKeyOfObject: <T extends object>(obj: T, key: string | number | symbol) => key is keyof T;
|
|
8
|
-
export declare const getLabelByValue: (value: SelectOptionValue, optionsMap: Map<SelectOptionValue, SelectOptionInterface>, optionLabelProp: string) => string | undefined;
|
|
9
|
-
export declare const getLabel: (values: SelectOptionValue[], optionsMap: Map<SelectOptionValue, SelectOptionInterface>, optionLabelProp: string) => string[];
|
|
10
|
-
export declare const getVisibleLabels: (labels: string[], values: SelectOptionValue[], maxTagCount: maxTagCountType | undefined, isItemHidden: Map<string | number, boolean>) => string[];
|
|
@@ -1,14 +1,3 @@
|
|
|
1
|
-
import { isUndefined, isNumber } from "lodash-es";
|
|
2
|
-
const additionalElements = ["tag-placeholder", "search-input", "clean-button"];
|
|
3
|
-
const placementDictionary = {
|
|
4
|
-
bottomLeft: "bottom-start",
|
|
5
|
-
bottomRight: "bottom-end",
|
|
6
|
-
topLeft: "top-start",
|
|
7
|
-
topRight: "top-end"
|
|
8
|
-
};
|
|
9
|
-
const convertSelectPlacement = (placement) => {
|
|
10
|
-
return placementDictionary[placement];
|
|
11
|
-
};
|
|
12
1
|
const getNextOption = (currentIndex, options, isDecrement = false) => {
|
|
13
2
|
const nextIndex = isDecrement ? currentIndex - 1 : currentIndex + 1;
|
|
14
3
|
if (nextIndex < 0 || nextIndex >= options.length) {
|
|
@@ -20,40 +9,6 @@ const getNextOption = (currentIndex, options, isDecrement = false) => {
|
|
|
20
9
|
}
|
|
21
10
|
return getNextOption(nextIndex, options, isDecrement);
|
|
22
11
|
};
|
|
23
|
-
const isKeyOfObject = (obj, key) => {
|
|
24
|
-
return key in obj;
|
|
25
|
-
};
|
|
26
|
-
const getLabelByValue = (value, optionsMap, optionLabelProp) => {
|
|
27
|
-
var _a;
|
|
28
|
-
const option = optionsMap.get(value);
|
|
29
|
-
if (isUndefined(option)) {
|
|
30
|
-
return void 0;
|
|
31
|
-
}
|
|
32
|
-
return isKeyOfObject(option, optionLabelProp) ? (_a = option[optionLabelProp]) == null ? void 0 : _a.toString() : void 0;
|
|
33
|
-
};
|
|
34
|
-
const getLabel = (values, optionsMap, optionLabelProp) => {
|
|
35
|
-
return values.map((value) => getLabelByValue(value, optionsMap, optionLabelProp) ?? value.toString());
|
|
36
|
-
};
|
|
37
|
-
const getVisibleLabels = (labels, values, maxTagCount, isItemHidden) => {
|
|
38
|
-
if (isUndefined(maxTagCount)) {
|
|
39
|
-
return labels;
|
|
40
|
-
}
|
|
41
|
-
if (isNumber(maxTagCount)) {
|
|
42
|
-
return labels.slice(0, maxTagCount);
|
|
43
|
-
}
|
|
44
|
-
return values.reduce((acc, value, index) => {
|
|
45
|
-
if (!isItemHidden.get(value)) {
|
|
46
|
-
return [...acc, labels[index]];
|
|
47
|
-
}
|
|
48
|
-
return acc;
|
|
49
|
-
}, []);
|
|
50
|
-
};
|
|
51
12
|
export {
|
|
52
|
-
|
|
53
|
-
convertSelectPlacement,
|
|
54
|
-
getLabel,
|
|
55
|
-
getLabelByValue,
|
|
56
|
-
getNextOption,
|
|
57
|
-
getVisibleLabels,
|
|
58
|
-
isKeyOfObject
|
|
13
|
+
getNextOption
|
|
59
14
|
};
|
|
@@ -2,22 +2,27 @@ import { jsxs, jsx } from "@emotion/react/jsx-runtime";
|
|
|
2
2
|
import { memo } from "react";
|
|
3
3
|
import { CheckOutlined } from "@infomaximum/icons";
|
|
4
4
|
import { getSelectOptionStyle } from "./SelectOption.styles.js";
|
|
5
|
+
import { useBaseSelectContext } from "../../../BaseSelect/contexts/BaseSelectContext.js";
|
|
5
6
|
import { useTheme } from "../../../../hooks/useTheme/useTheme.js";
|
|
6
7
|
const SelectOption = memo(({
|
|
7
8
|
title,
|
|
8
9
|
value,
|
|
9
|
-
selected = false,
|
|
10
10
|
disabled = false,
|
|
11
11
|
icon,
|
|
12
|
-
|
|
13
|
-
isSelecting,
|
|
14
|
-
mode,
|
|
15
|
-
setValue,
|
|
16
|
-
closeOptionList,
|
|
17
|
-
returnFocusToWrapper,
|
|
18
|
-
removeValue
|
|
12
|
+
styles
|
|
19
13
|
}) => {
|
|
14
|
+
var _a, _b, _c, _d;
|
|
20
15
|
const theme = useTheme();
|
|
16
|
+
const {
|
|
17
|
+
mode,
|
|
18
|
+
setValue,
|
|
19
|
+
closeOptionList,
|
|
20
|
+
removeValue,
|
|
21
|
+
currentValue,
|
|
22
|
+
getCurrentSelectingValue
|
|
23
|
+
} = useBaseSelectContext();
|
|
24
|
+
const isSelecting = getCurrentSelectingValue() === value;
|
|
25
|
+
const selected = currentValue.includes(value);
|
|
21
26
|
const selectOptionStyle = getSelectOptionStyle(selected, disabled, isSelecting);
|
|
22
27
|
const clickHandle = () => {
|
|
23
28
|
if (disabled) {
|
|
@@ -27,27 +32,19 @@ const SelectOption = memo(({
|
|
|
27
32
|
if (selected) {
|
|
28
33
|
removeValue(value);
|
|
29
34
|
} else {
|
|
30
|
-
setValue(value
|
|
35
|
+
setValue(value);
|
|
31
36
|
}
|
|
32
|
-
returnFocusToWrapper();
|
|
33
37
|
return;
|
|
34
38
|
}
|
|
35
|
-
setValue(value
|
|
39
|
+
setValue(value);
|
|
36
40
|
closeOptionList();
|
|
37
|
-
returnFocusToWrapper();
|
|
38
41
|
};
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
return /* @__PURE__ */ jsxs("div", { css: selectOptionStyle.wrapper(theme), onClick: clickHandle, onKeyDown: keyDownHandler, title, children: [
|
|
46
|
-
/* @__PURE__ */ jsxs("span", { css: selectOptionStyle.content(theme), children: [
|
|
47
|
-
icon && /* @__PURE__ */ jsx("span", { css: selectOptionStyle.icon(theme), children: icon }),
|
|
48
|
-
/* @__PURE__ */ jsx("span", { css: selectOptionStyle.text, children: title })
|
|
42
|
+
return /* @__PURE__ */ jsxs("div", { css: [selectOptionStyle.wrapper(theme), (_a = styles == null ? void 0 : styles.wrapper) == null ? void 0 : _a.call(styles, theme), process.env.NODE_ENV === "production" ? "" : ";label:SelectOption;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9idWlsZHMvZnJvbnRlbmQvbGlicy91aS1raXQvc3JjL2NvbXBvbmVudHMvU2VsZWN0L2NvbXBvbmVudHMvU2VsZWN0T3B0aW9uL1NlbGVjdE9wdGlvbi50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBeUNRIiwiZmlsZSI6Ii9idWlsZHMvZnJvbnRlbmQvbGlicy91aS1raXQvc3JjL2NvbXBvbmVudHMvU2VsZWN0L2NvbXBvbmVudHMvU2VsZWN0T3B0aW9uL1NlbGVjdE9wdGlvbi50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIEZDLCBtZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgdHlwZSB7IFNlbGVjdE9wdGlvblByb3BzIH0gZnJvbSBcIi4vU2VsZWN0T3B0aW9uLnR5cGVzXCI7XG5pbXBvcnQgeyBDaGVja091dGxpbmVkIH0gZnJvbSBcIkBpbmZvbWF4aW11bS9pY29uc1wiO1xuaW1wb3J0IHsgZ2V0U2VsZWN0T3B0aW9uU3R5bGUgfSBmcm9tIFwiLi9TZWxlY3RPcHRpb24uc3R5bGVzXCI7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gXCJob29rcy91c2VUaGVtZVwiO1xuaW1wb3J0IHsgdXNlQmFzZVNlbGVjdENvbnRleHQgfSBmcm9tIFwiY29tcG9uZW50cy9CYXNlU2VsZWN0L2NvbnRleHRzL0Jhc2VTZWxlY3RDb250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IFNlbGVjdE9wdGlvblZhbHVlIH0gZnJvbSBcImNvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC50eXBlc1wiO1xuXG5leHBvcnQgY29uc3QgU2VsZWN0T3B0aW9uOiBGQzxTZWxlY3RPcHRpb25Qcm9wcz4gPSBtZW1vKFxuICAoeyB0aXRsZSwgdmFsdWUsIGRpc2FibGVkID0gZmFsc2UsIGljb24sIHN0eWxlcyB9KSA9PiB7XG4gICAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuXG4gICAgY29uc3QgeyBtb2RlLCBzZXRWYWx1ZSwgY2xvc2VPcHRpb25MaXN0LCByZW1vdmVWYWx1ZSwgY3VycmVudFZhbHVlLCBnZXRDdXJyZW50U2VsZWN0aW5nVmFsdWUgfSA9XG4gICAgICB1c2VCYXNlU2VsZWN0Q29udGV4dDxTZWxlY3RPcHRpb25WYWx1ZT4oKTtcblxuICAgIGNvbnN0IGlzU2VsZWN0aW5nID0gZ2V0Q3VycmVudFNlbGVjdGluZ1ZhbHVlKCkgPT09IHZhbHVlO1xuICAgIGNvbnN0IHNlbGVjdGVkID0gY3VycmVudFZhbHVlLmluY2x1ZGVzKHZhbHVlKTtcblxuICAgIGNvbnN0IHNlbGVjdE9wdGlvblN0eWxlID0gZ2V0U2VsZWN0T3B0aW9uU3R5bGUoc2VsZWN0ZWQsIGRpc2FibGVkLCBpc1NlbGVjdGluZyk7XG5cbiAgICBjb25zdCBjbGlja0hhbmRsZSA9ICgpID0+IHtcbiAgICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChtb2RlID09PSBcIm11bHRpcGxlXCIpIHtcbiAgICAgICAgaWYgKHNlbGVjdGVkKSB7XG4gICAgICAgICAgcmVtb3ZlVmFsdWUodmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgc2V0VmFsdWUodmFsdWUpO1xuICAgICAgY2xvc2VPcHRpb25MaXN0KCk7XG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17W3NlbGVjdE9wdGlvblN0eWxlLndyYXBwZXIodGhlbWUpLCBzdHlsZXM/LndyYXBwZXI/Lih0aGVtZSldfVxuICAgICAgICBvbkNsaWNrPXtjbGlja0hhbmRsZX1cbiAgICAgICAgdGl0bGU9e3RpdGxlPy50b1N0cmluZygpfVxuICAgICAgPlxuICAgICAgICA8c3BhbiBjc3M9e1tzZWxlY3RPcHRpb25TdHlsZS5jb250ZW50KHRoZW1lKSwgc3R5bGVzPy5jb250ZW50Py4odGhlbWUpXX0+XG4gICAgICAgICAge2ljb24gJiYgPHNwYW4gY3NzPXtbc2VsZWN0T3B0aW9uU3R5bGUuaWNvbih0aGVtZSksIHN0eWxlcz8uaWNvbj8uKHRoZW1lKV19PntpY29ufTwvc3Bhbj59XG4gICAgICAgICAgPHNwYW4gY3NzPXtbc2VsZWN0T3B0aW9uU3R5bGUudGV4dCwgc3R5bGVzPy50ZXh0XX0+e3RpdGxlfTwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgIHtzZWxlY3RlZCAmJiAoXG4gICAgICAgICAgPHNwYW4gY3NzPXtbc2VsZWN0T3B0aW9uU3R5bGUuaWNvbih0aGVtZSksIHN0eWxlcz8uaWNvbj8uKHRoZW1lKV19PlxuICAgICAgICAgICAgPENoZWNrT3V0bGluZWQgLz5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG4pO1xuIl19 */"], onClick: clickHandle, title: title == null ? void 0 : title.toString(), children: [
|
|
43
|
+
/* @__PURE__ */ jsxs("span", { css: [selectOptionStyle.content(theme), (_b = styles == null ? void 0 : styles.content) == null ? void 0 : _b.call(styles, theme), process.env.NODE_ENV === "production" ? "" : ";label:SelectOption;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9idWlsZHMvZnJvbnRlbmQvbGlicy91aS1raXQvc3JjL2NvbXBvbmVudHMvU2VsZWN0L2NvbXBvbmVudHMvU2VsZWN0T3B0aW9uL1NlbGVjdE9wdGlvbi50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNkNjIiwiZmlsZSI6Ii9idWlsZHMvZnJvbnRlbmQvbGlicy91aS1raXQvc3JjL2NvbXBvbmVudHMvU2VsZWN0L2NvbXBvbmVudHMvU2VsZWN0T3B0aW9uL1NlbGVjdE9wdGlvbi50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIEZDLCBtZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgdHlwZSB7IFNlbGVjdE9wdGlvblByb3BzIH0gZnJvbSBcIi4vU2VsZWN0T3B0aW9uLnR5cGVzXCI7XG5pbXBvcnQgeyBDaGVja091dGxpbmVkIH0gZnJvbSBcIkBpbmZvbWF4aW11bS9pY29uc1wiO1xuaW1wb3J0IHsgZ2V0U2VsZWN0T3B0aW9uU3R5bGUgfSBmcm9tIFwiLi9TZWxlY3RPcHRpb24uc3R5bGVzXCI7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gXCJob29rcy91c2VUaGVtZVwiO1xuaW1wb3J0IHsgdXNlQmFzZVNlbGVjdENvbnRleHQgfSBmcm9tIFwiY29tcG9uZW50cy9CYXNlU2VsZWN0L2NvbnRleHRzL0Jhc2VTZWxlY3RDb250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IFNlbGVjdE9wdGlvblZhbHVlIH0gZnJvbSBcImNvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC50eXBlc1wiO1xuXG5leHBvcnQgY29uc3QgU2VsZWN0T3B0aW9uOiBGQzxTZWxlY3RPcHRpb25Qcm9wcz4gPSBtZW1vKFxuICAoeyB0aXRsZSwgdmFsdWUsIGRpc2FibGVkID0gZmFsc2UsIGljb24sIHN0eWxlcyB9KSA9PiB7XG4gICAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuXG4gICAgY29uc3QgeyBtb2RlLCBzZXRWYWx1ZSwgY2xvc2VPcHRpb25MaXN0LCByZW1vdmVWYWx1ZSwgY3VycmVudFZhbHVlLCBnZXRDdXJyZW50U2VsZWN0aW5nVmFsdWUgfSA9XG4gICAgICB1c2VCYXNlU2VsZWN0Q29udGV4dDxTZWxlY3RPcHRpb25WYWx1ZT4oKTtcblxuICAgIGNvbnN0IGlzU2VsZWN0aW5nID0gZ2V0Q3VycmVudFNlbGVjdGluZ1ZhbHVlKCkgPT09IHZhbHVlO1xuICAgIGNvbnN0IHNlbGVjdGVkID0gY3VycmVudFZhbHVlLmluY2x1ZGVzKHZhbHVlKTtcblxuICAgIGNvbnN0IHNlbGVjdE9wdGlvblN0eWxlID0gZ2V0U2VsZWN0T3B0aW9uU3R5bGUoc2VsZWN0ZWQsIGRpc2FibGVkLCBpc1NlbGVjdGluZyk7XG5cbiAgICBjb25zdCBjbGlja0hhbmRsZSA9ICgpID0+IHtcbiAgICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChtb2RlID09PSBcIm11bHRpcGxlXCIpIHtcbiAgICAgICAgaWYgKHNlbGVjdGVkKSB7XG4gICAgICAgICAgcmVtb3ZlVmFsdWUodmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgc2V0VmFsdWUodmFsdWUpO1xuICAgICAgY2xvc2VPcHRpb25MaXN0KCk7XG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17W3NlbGVjdE9wdGlvblN0eWxlLndyYXBwZXIodGhlbWUpLCBzdHlsZXM/LndyYXBwZXI/Lih0aGVtZSldfVxuICAgICAgICBvbkNsaWNrPXtjbGlja0hhbmRsZX1cbiAgICAgICAgdGl0bGU9e3RpdGxlPy50b1N0cmluZygpfVxuICAgICAgPlxuICAgICAgICA8c3BhbiBjc3M9e1tzZWxlY3RPcHRpb25TdHlsZS5jb250ZW50KHRoZW1lKSwgc3R5bGVzPy5jb250ZW50Py4odGhlbWUpXX0+XG4gICAgICAgICAge2ljb24gJiYgPHNwYW4gY3NzPXtbc2VsZWN0T3B0aW9uU3R5bGUuaWNvbih0aGVtZSksIHN0eWxlcz8uaWNvbj8uKHRoZW1lKV19PntpY29ufTwvc3Bhbj59XG4gICAgICAgICAgPHNwYW4gY3NzPXtbc2VsZWN0T3B0aW9uU3R5bGUudGV4dCwgc3R5bGVzPy50ZXh0XX0+e3RpdGxlfTwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgIHtzZWxlY3RlZCAmJiAoXG4gICAgICAgICAgPHNwYW4gY3NzPXtbc2VsZWN0T3B0aW9uU3R5bGUuaWNvbih0aGVtZSksIHN0eWxlcz8uaWNvbj8uKHRoZW1lKV19PlxuICAgICAgICAgICAgPENoZWNrT3V0bGluZWQgLz5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG4pO1xuIl19 */"], children: [
|
|
44
|
+
icon && /* @__PURE__ */ jsx("span", { css: [selectOptionStyle.icon(theme), (_c = styles == null ? void 0 : styles.icon) == null ? void 0 : _c.call(styles, theme), process.env.NODE_ENV === "production" ? "" : ";label:SelectOption;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9idWlsZHMvZnJvbnRlbmQvbGlicy91aS1raXQvc3JjL2NvbXBvbmVudHMvU2VsZWN0L2NvbXBvbmVudHMvU2VsZWN0T3B0aW9uL1NlbGVjdE9wdGlvbi50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBOEN5QiIsImZpbGUiOiIvYnVpbGRzL2Zyb250ZW5kL2xpYnMvdWkta2l0L3NyYy9jb21wb25lbnRzL1NlbGVjdC9jb21wb25lbnRzL1NlbGVjdE9wdGlvbi9TZWxlY3RPcHRpb24udHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBGQywgbWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHR5cGUgeyBTZWxlY3RPcHRpb25Qcm9wcyB9IGZyb20gXCIuL1NlbGVjdE9wdGlvbi50eXBlc1wiO1xuaW1wb3J0IHsgQ2hlY2tPdXRsaW5lZCB9IGZyb20gXCJAaW5mb21heGltdW0vaWNvbnNcIjtcbmltcG9ydCB7IGdldFNlbGVjdE9wdGlvblN0eWxlIH0gZnJvbSBcIi4vU2VsZWN0T3B0aW9uLnN0eWxlc1wiO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tIFwiaG9va3MvdXNlVGhlbWVcIjtcbmltcG9ydCB7IHVzZUJhc2VTZWxlY3RDb250ZXh0IH0gZnJvbSBcImNvbXBvbmVudHMvQmFzZVNlbGVjdC9jb250ZXh0cy9CYXNlU2VsZWN0Q29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBTZWxlY3RPcHRpb25WYWx1ZSB9IGZyb20gXCJjb21wb25lbnRzL1NlbGVjdC9TZWxlY3QudHlwZXNcIjtcblxuZXhwb3J0IGNvbnN0IFNlbGVjdE9wdGlvbjogRkM8U2VsZWN0T3B0aW9uUHJvcHM+ID0gbWVtbyhcbiAgKHsgdGl0bGUsIHZhbHVlLCBkaXNhYmxlZCA9IGZhbHNlLCBpY29uLCBzdHlsZXMgfSkgPT4ge1xuICAgIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcblxuICAgIGNvbnN0IHsgbW9kZSwgc2V0VmFsdWUsIGNsb3NlT3B0aW9uTGlzdCwgcmVtb3ZlVmFsdWUsIGN1cnJlbnRWYWx1ZSwgZ2V0Q3VycmVudFNlbGVjdGluZ1ZhbHVlIH0gPVxuICAgICAgdXNlQmFzZVNlbGVjdENvbnRleHQ8U2VsZWN0T3B0aW9uVmFsdWU+KCk7XG5cbiAgICBjb25zdCBpc1NlbGVjdGluZyA9IGdldEN1cnJlbnRTZWxlY3RpbmdWYWx1ZSgpID09PSB2YWx1ZTtcbiAgICBjb25zdCBzZWxlY3RlZCA9IGN1cnJlbnRWYWx1ZS5pbmNsdWRlcyh2YWx1ZSk7XG5cbiAgICBjb25zdCBzZWxlY3RPcHRpb25TdHlsZSA9IGdldFNlbGVjdE9wdGlvblN0eWxlKHNlbGVjdGVkLCBkaXNhYmxlZCwgaXNTZWxlY3RpbmcpO1xuXG4gICAgY29uc3QgY2xpY2tIYW5kbGUgPSAoKSA9PiB7XG4gICAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAobW9kZSA9PT0gXCJtdWx0aXBsZVwiKSB7XG4gICAgICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgICAgIHJlbW92ZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHNldFZhbHVlKHZhbHVlKTtcbiAgICAgIGNsb3NlT3B0aW9uTGlzdCgpO1xuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e1tzZWxlY3RPcHRpb25TdHlsZS53cmFwcGVyKHRoZW1lKSwgc3R5bGVzPy53cmFwcGVyPy4odGhlbWUpXX1cbiAgICAgICAgb25DbGljaz17Y2xpY2tIYW5kbGV9XG4gICAgICAgIHRpdGxlPXt0aXRsZT8udG9TdHJpbmcoKX1cbiAgICAgID5cbiAgICAgICAgPHNwYW4gY3NzPXtbc2VsZWN0T3B0aW9uU3R5bGUuY29udGVudCh0aGVtZSksIHN0eWxlcz8uY29udGVudD8uKHRoZW1lKV19PlxuICAgICAgICAgIHtpY29uICYmIDxzcGFuIGNzcz17W3NlbGVjdE9wdGlvblN0eWxlLmljb24odGhlbWUpLCBzdHlsZXM/Lmljb24/Lih0aGVtZSldfT57aWNvbn08L3NwYW4+fVxuICAgICAgICAgIDxzcGFuIGNzcz17W3NlbGVjdE9wdGlvblN0eWxlLnRleHQsIHN0eWxlcz8udGV4dF19Pnt0aXRsZX08L3NwYW4+XG4gICAgICAgIDwvc3Bhbj5cblxuICAgICAgICB7c2VsZWN0ZWQgJiYgKFxuICAgICAgICAgIDxzcGFuIGNzcz17W3NlbGVjdE9wdGlvblN0eWxlLmljb24odGhlbWUpLCBzdHlsZXM/Lmljb24/Lih0aGVtZSldfT5cbiAgICAgICAgICAgIDxDaGVja091dGxpbmVkIC8+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuKTtcbiJdfQ== */"], children: icon }),
|
|
45
|
+
/* @__PURE__ */ jsx("span", { css: [selectOptionStyle.text, styles == null ? void 0 : styles.text, process.env.NODE_ENV === "production" ? "" : ";label:SelectOption;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9idWlsZHMvZnJvbnRlbmQvbGlicy91aS1raXQvc3JjL2NvbXBvbmVudHMvU2VsZWN0L2NvbXBvbmVudHMvU2VsZWN0T3B0aW9uL1NlbGVjdE9wdGlvbi50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBK0NnQiIsImZpbGUiOiIvYnVpbGRzL2Zyb250ZW5kL2xpYnMvdWkta2l0L3NyYy9jb21wb25lbnRzL1NlbGVjdC9jb21wb25lbnRzL1NlbGVjdE9wdGlvbi9TZWxlY3RPcHRpb24udHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBGQywgbWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHR5cGUgeyBTZWxlY3RPcHRpb25Qcm9wcyB9IGZyb20gXCIuL1NlbGVjdE9wdGlvbi50eXBlc1wiO1xuaW1wb3J0IHsgQ2hlY2tPdXRsaW5lZCB9IGZyb20gXCJAaW5mb21heGltdW0vaWNvbnNcIjtcbmltcG9ydCB7IGdldFNlbGVjdE9wdGlvblN0eWxlIH0gZnJvbSBcIi4vU2VsZWN0T3B0aW9uLnN0eWxlc1wiO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tIFwiaG9va3MvdXNlVGhlbWVcIjtcbmltcG9ydCB7IHVzZUJhc2VTZWxlY3RDb250ZXh0IH0gZnJvbSBcImNvbXBvbmVudHMvQmFzZVNlbGVjdC9jb250ZXh0cy9CYXNlU2VsZWN0Q29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBTZWxlY3RPcHRpb25WYWx1ZSB9IGZyb20gXCJjb21wb25lbnRzL1NlbGVjdC9TZWxlY3QudHlwZXNcIjtcblxuZXhwb3J0IGNvbnN0IFNlbGVjdE9wdGlvbjogRkM8U2VsZWN0T3B0aW9uUHJvcHM+ID0gbWVtbyhcbiAgKHsgdGl0bGUsIHZhbHVlLCBkaXNhYmxlZCA9IGZhbHNlLCBpY29uLCBzdHlsZXMgfSkgPT4ge1xuICAgIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcblxuICAgIGNvbnN0IHsgbW9kZSwgc2V0VmFsdWUsIGNsb3NlT3B0aW9uTGlzdCwgcmVtb3ZlVmFsdWUsIGN1cnJlbnRWYWx1ZSwgZ2V0Q3VycmVudFNlbGVjdGluZ1ZhbHVlIH0gPVxuICAgICAgdXNlQmFzZVNlbGVjdENvbnRleHQ8U2VsZWN0T3B0aW9uVmFsdWU+KCk7XG5cbiAgICBjb25zdCBpc1NlbGVjdGluZyA9IGdldEN1cnJlbnRTZWxlY3RpbmdWYWx1ZSgpID09PSB2YWx1ZTtcbiAgICBjb25zdCBzZWxlY3RlZCA9IGN1cnJlbnRWYWx1ZS5pbmNsdWRlcyh2YWx1ZSk7XG5cbiAgICBjb25zdCBzZWxlY3RPcHRpb25TdHlsZSA9IGdldFNlbGVjdE9wdGlvblN0eWxlKHNlbGVjdGVkLCBkaXNhYmxlZCwgaXNTZWxlY3RpbmcpO1xuXG4gICAgY29uc3QgY2xpY2tIYW5kbGUgPSAoKSA9PiB7XG4gICAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAobW9kZSA9PT0gXCJtdWx0aXBsZVwiKSB7XG4gICAgICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgICAgIHJlbW92ZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHNldFZhbHVlKHZhbHVlKTtcbiAgICAgIGNsb3NlT3B0aW9uTGlzdCgpO1xuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e1tzZWxlY3RPcHRpb25TdHlsZS53cmFwcGVyKHRoZW1lKSwgc3R5bGVzPy53cmFwcGVyPy4odGhlbWUpXX1cbiAgICAgICAgb25DbGljaz17Y2xpY2tIYW5kbGV9XG4gICAgICAgIHRpdGxlPXt0aXRsZT8udG9TdHJpbmcoKX1cbiAgICAgID5cbiAgICAgICAgPHNwYW4gY3NzPXtbc2VsZWN0T3B0aW9uU3R5bGUuY29udGVudCh0aGVtZSksIHN0eWxlcz8uY29udGVudD8uKHRoZW1lKV19PlxuICAgICAgICAgIHtpY29uICYmIDxzcGFuIGNzcz17W3NlbGVjdE9wdGlvblN0eWxlLmljb24odGhlbWUpLCBzdHlsZXM/Lmljb24/Lih0aGVtZSldfT57aWNvbn08L3NwYW4+fVxuICAgICAgICAgIDxzcGFuIGNzcz17W3NlbGVjdE9wdGlvblN0eWxlLnRleHQsIHN0eWxlcz8udGV4dF19Pnt0aXRsZX08L3NwYW4+XG4gICAgICAgIDwvc3Bhbj5cblxuICAgICAgICB7c2VsZWN0ZWQgJiYgKFxuICAgICAgICAgIDxzcGFuIGNzcz17W3NlbGVjdE9wdGlvblN0eWxlLmljb24odGhlbWUpLCBzdHlsZXM/Lmljb24/Lih0aGVtZSldfT5cbiAgICAgICAgICAgIDxDaGVja091dGxpbmVkIC8+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuKTtcbiJdfQ== */"], children: title })
|
|
49
46
|
] }),
|
|
50
|
-
selected && /* @__PURE__ */ jsx("span", { css: selectOptionStyle.icon(theme), children: /* @__PURE__ */ jsx(CheckOutlined, {}) })
|
|
47
|
+
selected && /* @__PURE__ */ jsx("span", { css: [selectOptionStyle.icon(theme), (_d = styles == null ? void 0 : styles.icon) == null ? void 0 : _d.call(styles, theme), process.env.NODE_ENV === "production" ? "" : ";label:SelectOption;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9idWlsZHMvZnJvbnRlbmQvbGlicy91aS1raXQvc3JjL2NvbXBvbmVudHMvU2VsZWN0L2NvbXBvbmVudHMvU2VsZWN0T3B0aW9uL1NlbGVjdE9wdGlvbi50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBbURnQiIsImZpbGUiOiIvYnVpbGRzL2Zyb250ZW5kL2xpYnMvdWkta2l0L3NyYy9jb21wb25lbnRzL1NlbGVjdC9jb21wb25lbnRzL1NlbGVjdE9wdGlvbi9TZWxlY3RPcHRpb24udHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBGQywgbWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHR5cGUgeyBTZWxlY3RPcHRpb25Qcm9wcyB9IGZyb20gXCIuL1NlbGVjdE9wdGlvbi50eXBlc1wiO1xuaW1wb3J0IHsgQ2hlY2tPdXRsaW5lZCB9IGZyb20gXCJAaW5mb21heGltdW0vaWNvbnNcIjtcbmltcG9ydCB7IGdldFNlbGVjdE9wdGlvblN0eWxlIH0gZnJvbSBcIi4vU2VsZWN0T3B0aW9uLnN0eWxlc1wiO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tIFwiaG9va3MvdXNlVGhlbWVcIjtcbmltcG9ydCB7IHVzZUJhc2VTZWxlY3RDb250ZXh0IH0gZnJvbSBcImNvbXBvbmVudHMvQmFzZVNlbGVjdC9jb250ZXh0cy9CYXNlU2VsZWN0Q29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBTZWxlY3RPcHRpb25WYWx1ZSB9IGZyb20gXCJjb21wb25lbnRzL1NlbGVjdC9TZWxlY3QudHlwZXNcIjtcblxuZXhwb3J0IGNvbnN0IFNlbGVjdE9wdGlvbjogRkM8U2VsZWN0T3B0aW9uUHJvcHM+ID0gbWVtbyhcbiAgKHsgdGl0bGUsIHZhbHVlLCBkaXNhYmxlZCA9IGZhbHNlLCBpY29uLCBzdHlsZXMgfSkgPT4ge1xuICAgIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcblxuICAgIGNvbnN0IHsgbW9kZSwgc2V0VmFsdWUsIGNsb3NlT3B0aW9uTGlzdCwgcmVtb3ZlVmFsdWUsIGN1cnJlbnRWYWx1ZSwgZ2V0Q3VycmVudFNlbGVjdGluZ1ZhbHVlIH0gPVxuICAgICAgdXNlQmFzZVNlbGVjdENvbnRleHQ8U2VsZWN0T3B0aW9uVmFsdWU+KCk7XG5cbiAgICBjb25zdCBpc1NlbGVjdGluZyA9IGdldEN1cnJlbnRTZWxlY3RpbmdWYWx1ZSgpID09PSB2YWx1ZTtcbiAgICBjb25zdCBzZWxlY3RlZCA9IGN1cnJlbnRWYWx1ZS5pbmNsdWRlcyh2YWx1ZSk7XG5cbiAgICBjb25zdCBzZWxlY3RPcHRpb25TdHlsZSA9IGdldFNlbGVjdE9wdGlvblN0eWxlKHNlbGVjdGVkLCBkaXNhYmxlZCwgaXNTZWxlY3RpbmcpO1xuXG4gICAgY29uc3QgY2xpY2tIYW5kbGUgPSAoKSA9PiB7XG4gICAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAobW9kZSA9PT0gXCJtdWx0aXBsZVwiKSB7XG4gICAgICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgICAgIHJlbW92ZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHNldFZhbHVlKHZhbHVlKTtcbiAgICAgIGNsb3NlT3B0aW9uTGlzdCgpO1xuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e1tzZWxlY3RPcHRpb25TdHlsZS53cmFwcGVyKHRoZW1lKSwgc3R5bGVzPy53cmFwcGVyPy4odGhlbWUpXX1cbiAgICAgICAgb25DbGljaz17Y2xpY2tIYW5kbGV9XG4gICAgICAgIHRpdGxlPXt0aXRsZT8udG9TdHJpbmcoKX1cbiAgICAgID5cbiAgICAgICAgPHNwYW4gY3NzPXtbc2VsZWN0T3B0aW9uU3R5bGUuY29udGVudCh0aGVtZSksIHN0eWxlcz8uY29udGVudD8uKHRoZW1lKV19PlxuICAgICAgICAgIHtpY29uICYmIDxzcGFuIGNzcz17W3NlbGVjdE9wdGlvblN0eWxlLmljb24odGhlbWUpLCBzdHlsZXM/Lmljb24/Lih0aGVtZSldfT57aWNvbn08L3NwYW4+fVxuICAgICAgICAgIDxzcGFuIGNzcz17W3NlbGVjdE9wdGlvblN0eWxlLnRleHQsIHN0eWxlcz8udGV4dF19Pnt0aXRsZX08L3NwYW4+XG4gICAgICAgIDwvc3Bhbj5cblxuICAgICAgICB7c2VsZWN0ZWQgJiYgKFxuICAgICAgICAgIDxzcGFuIGNzcz17W3NlbGVjdE9wdGlvblN0eWxlLmljb24odGhlbWUpLCBzdHlsZXM/Lmljb24/Lih0aGVtZSldfT5cbiAgICAgICAgICAgIDxDaGVja091dGxpbmVkIC8+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuKTtcbiJdfQ== */"], children: /* @__PURE__ */ jsx(CheckOutlined, {}) })
|
|
51
48
|
] });
|
|
52
49
|
});
|
|
53
50
|
export {
|
|
@@ -1,22 +1,20 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import { Interpolation } from '@emotion/react';
|
|
2
|
+
import { BaseSelectOptionInterface } from '../../../BaseSelect/BaseSelect.types';
|
|
3
|
+
import { SelectOptionValue } from '../../../Select/Select.types';
|
|
4
|
+
import { Theme } from 'themes';
|
|
5
|
+
export interface SelectOptionStyles {
|
|
6
|
+
wrapper?: (theme: Theme) => Interpolation;
|
|
7
|
+
content?: (theme: Theme) => Interpolation;
|
|
8
|
+
text?: Interpolation;
|
|
9
|
+
icon?: (theme: Theme) => Interpolation;
|
|
10
|
+
}
|
|
11
|
+
export interface SelectOptionInterface extends BaseSelectOptionInterface<SelectOptionValue> {
|
|
9
12
|
className?: string;
|
|
10
13
|
}
|
|
11
14
|
export interface SelectOptionCallbacks {
|
|
12
15
|
setValue(value: SelectOptionValue, index: number): void;
|
|
13
16
|
closeOptionList(): void;
|
|
14
17
|
}
|
|
15
|
-
export interface SelectOptionProps extends SelectOptionInterface
|
|
16
|
-
|
|
17
|
-
index: number;
|
|
18
|
-
isSelecting: boolean;
|
|
19
|
-
mode: ModeType;
|
|
20
|
-
returnFocusToWrapper: () => void;
|
|
21
|
-
removeValue: (removeValue: SelectOptionValue) => void;
|
|
18
|
+
export interface SelectOptionProps extends SelectOptionInterface {
|
|
19
|
+
styles?: SelectOptionStyles;
|
|
22
20
|
}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { KeyboardEvent } from 'react';
|
|
2
|
-
import { SelectOptionInterface
|
|
3
|
-
|
|
2
|
+
import { SelectOptionInterface } from '../components/SelectOption/SelectOption.types';
|
|
3
|
+
import { SelectOptionValue } from '../Select.types';
|
|
4
|
+
export declare const useKeyControl: (options: SelectOptionInterface[], onDropdownVisibleChange: (() => void) | undefined, onChange: ((value: SelectOptionValue[], option: SelectOptionInterface[]) => void) | undefined, onSearch: ((searchValue: string) => void) | undefined) => {
|
|
4
5
|
currentSelectingIndex: number;
|
|
5
|
-
setCurrentSelectingIndex: import('react').Dispatch<import('react').SetStateAction<number>>;
|
|
6
6
|
onKeyControl: (e: KeyboardEvent) => void;
|
|
7
|
+
handleDropdownVisibleChange: () => void;
|
|
8
|
+
handleChange: (value: SelectOptionValue[], option: SelectOptionInterface[]) => void;
|
|
9
|
+
handleSearch: (searchValue: string) => void;
|
|
10
|
+
getCurrentSelectingValue: () => SelectOptionValue | null;
|
|
7
11
|
};
|
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import { useState,
|
|
2
|
-
import { useDefaultSelectIndex } from "./useDefaultSelectIndex.js";
|
|
3
|
-
import { getNextOption } from "../Select.utils.js";
|
|
1
|
+
import { useState, useCallback } from "react";
|
|
4
2
|
import { isNull } from "lodash-es";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const [
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
3
|
+
import { getNextOption } from "../Select.utils.js";
|
|
4
|
+
const useKeyControl = (options, onDropdownVisibleChange, onChange, onSearch) => {
|
|
5
|
+
const [currentStartingPosition, setCurrentStartingPosition] = useState(0);
|
|
6
|
+
const [currentSelectingIndex, setCurrentSelectingIndex] = useState(0);
|
|
7
|
+
const [isKeyControl, setIsControl] = useState(false);
|
|
8
|
+
const getCurrentSelectingValue = useCallback(() => {
|
|
9
|
+
if (!isKeyControl) {
|
|
10
|
+
return null;
|
|
11
11
|
}
|
|
12
|
-
|
|
12
|
+
return options[currentSelectingIndex].value;
|
|
13
|
+
}, [currentSelectingIndex, isKeyControl, options]);
|
|
13
14
|
const setNextIndex = useCallback((nextItemIndex) => {
|
|
14
15
|
if (isNull(nextItemIndex)) {
|
|
15
16
|
return;
|
|
@@ -18,18 +19,52 @@ const useKeyControl = (currentValue, options, optionsMap) => {
|
|
|
18
19
|
}, []);
|
|
19
20
|
const onKeyControl = useCallback((e) => {
|
|
20
21
|
if (e.key === "ArrowDown") {
|
|
22
|
+
if (!isKeyControl) {
|
|
23
|
+
setIsControl(true);
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
21
26
|
const nextItemIndex = getNextOption(currentSelectingIndex, options);
|
|
22
27
|
setNextIndex(nextItemIndex);
|
|
23
28
|
}
|
|
24
29
|
if (e.key === "ArrowUp") {
|
|
30
|
+
if (!isKeyControl) {
|
|
31
|
+
setIsControl(true);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
25
34
|
const nextItemIndex = getNextOption(currentSelectingIndex, options, true);
|
|
26
35
|
setNextIndex(nextItemIndex);
|
|
27
36
|
}
|
|
28
|
-
}, [currentSelectingIndex, options, setNextIndex]);
|
|
37
|
+
}, [currentSelectingIndex, isKeyControl, options, setNextIndex]);
|
|
38
|
+
const handleSearch = useCallback((searchValue) => {
|
|
39
|
+
onSearch == null ? void 0 : onSearch(searchValue);
|
|
40
|
+
setCurrentStartingPosition(0);
|
|
41
|
+
setCurrentSelectingIndex(0);
|
|
42
|
+
}, [onSearch]);
|
|
43
|
+
const handleDropdownVisibleChange = useCallback(() => {
|
|
44
|
+
onDropdownVisibleChange == null ? void 0 : onDropdownVisibleChange();
|
|
45
|
+
setIsControl(false);
|
|
46
|
+
setCurrentSelectingIndex(currentStartingPosition);
|
|
47
|
+
}, [currentStartingPosition, onDropdownVisibleChange, setCurrentSelectingIndex]);
|
|
48
|
+
const handleChange = useCallback((value, option) => {
|
|
49
|
+
onChange == null ? void 0 : onChange(value, option);
|
|
50
|
+
const lastValueElementIndex = value.length - 1;
|
|
51
|
+
if (lastValueElementIndex < 0) {
|
|
52
|
+
setCurrentStartingPosition(0);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const lastValue = value[lastValueElementIndex];
|
|
56
|
+
const lastValueOptionIndex = options.findIndex((item) => item.value === lastValue);
|
|
57
|
+
const newStartingIndex = lastValueOptionIndex === -1 ? 0 : lastValueOptionIndex;
|
|
58
|
+
setCurrentStartingPosition(newStartingIndex);
|
|
59
|
+
setCurrentSelectingIndex(newStartingIndex);
|
|
60
|
+
}, [onChange, options]);
|
|
29
61
|
return {
|
|
30
62
|
currentSelectingIndex,
|
|
31
|
-
|
|
32
|
-
|
|
63
|
+
onKeyControl,
|
|
64
|
+
handleDropdownVisibleChange,
|
|
65
|
+
handleChange,
|
|
66
|
+
handleSearch,
|
|
67
|
+
getCurrentSelectingValue
|
|
33
68
|
};
|
|
34
69
|
};
|
|
35
70
|
export {
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { jsx } from "@emotion/react/jsx-runtime";
|
|
2
|
+
import { createElement } from "@emotion/react";
|
|
3
|
+
import { memo, useState, useCallback, useMemo } from "react";
|
|
4
|
+
import { withThemeProvider } from "../../hocs/withThemeProvider.js";
|
|
5
|
+
import { BaseSelect } from "../BaseSelect/BaseSelect.js";
|
|
6
|
+
import { TreeSelectOption } from "./components/TreeSelectOption/TreeSelectOption.js";
|
|
7
|
+
import { getDefaultKeysByDefaultValues, filterItems } from "./TreeSelect.utils.js";
|
|
8
|
+
import { useNodeDataMap } from "./hooks/useTreeData.js";
|
|
9
|
+
import { treeSelectContext } from "./contexts/treeSelectContext.js";
|
|
10
|
+
import { isFunction, isNumber } from "lodash-es";
|
|
11
|
+
import { useElementSizesController, DEFAULT_ELEMENT_SIZE } from "./hooks/useElementSizesController.js";
|
|
12
|
+
import { DownOutlined } from "@infomaximum/icons";
|
|
13
|
+
import { useExtendController } from "./hooks/useExtendController.js";
|
|
14
|
+
import { useAsyncLoading } from "./hooks/useAsyncLoading.js";
|
|
15
|
+
import { useKeyControl } from "./hooks/useKeyControl.js";
|
|
16
|
+
import { useTreeCheckable } from "./hooks/useTreeCheckable.js";
|
|
17
|
+
import { LoadingOutlined } from "../../icons/icons/LoadingOutlined.js";
|
|
18
|
+
const TreeSelectComponent = memo(({
|
|
19
|
+
allowClear = false,
|
|
20
|
+
autoClearSearchValue = true,
|
|
21
|
+
autoFocus = false,
|
|
22
|
+
disabled = false,
|
|
23
|
+
dropdownMatchSelectWidth = true,
|
|
24
|
+
dropdownMaxHeight = 414,
|
|
25
|
+
dropdownMinWidth = 120,
|
|
26
|
+
getPopupContainer = () => document.body,
|
|
27
|
+
loading = false,
|
|
28
|
+
mode = "single",
|
|
29
|
+
placement = "bottomLeft",
|
|
30
|
+
showSearch = mode === "single" ? false : true,
|
|
31
|
+
suffixIcon = /* @__PURE__ */ jsx(DownOutlined, {}),
|
|
32
|
+
variant = "outlined",
|
|
33
|
+
virtual = true,
|
|
34
|
+
value,
|
|
35
|
+
open,
|
|
36
|
+
placeholder,
|
|
37
|
+
filterTreeNode = true,
|
|
38
|
+
treeNodeFilterProp = "value",
|
|
39
|
+
treeNodeLabelProp = "title",
|
|
40
|
+
treeCheckable = false,
|
|
41
|
+
showCheckedStrategy = "child",
|
|
42
|
+
treeData = [],
|
|
43
|
+
treeDefaultExpandAll = false,
|
|
44
|
+
treeDefaultExpandedKeys = [],
|
|
45
|
+
treeExpandedKeys,
|
|
46
|
+
treeLoadedKeys = [],
|
|
47
|
+
styles,
|
|
48
|
+
defaultValue,
|
|
49
|
+
onDropdownVisibleChange,
|
|
50
|
+
onChange,
|
|
51
|
+
onSearch,
|
|
52
|
+
onTreeExpand,
|
|
53
|
+
onExpandSwitcherClick,
|
|
54
|
+
loadData,
|
|
55
|
+
onDeselect,
|
|
56
|
+
...otherProps
|
|
57
|
+
}) => {
|
|
58
|
+
const isAsyncLoading = isFunction(loadData);
|
|
59
|
+
const [AsyncTreeData, setAsyncTreeData] = useState(treeData);
|
|
60
|
+
const currentTreeData = isAsyncLoading ? AsyncTreeData : treeData;
|
|
61
|
+
const {
|
|
62
|
+
nodeDataMap,
|
|
63
|
+
treeNodeMap,
|
|
64
|
+
leafChildrenKeys,
|
|
65
|
+
allParentKeys
|
|
66
|
+
} = useNodeDataMap(currentTreeData);
|
|
67
|
+
const {
|
|
68
|
+
elementSizes,
|
|
69
|
+
changeElementSize
|
|
70
|
+
} = useElementSizesController(currentTreeData);
|
|
71
|
+
const {
|
|
72
|
+
loadingKeys,
|
|
73
|
+
loadChildrenNodes
|
|
74
|
+
} = useAsyncLoading(treeLoadedKeys, nodeDataMap, setAsyncTreeData, loadData);
|
|
75
|
+
const {
|
|
76
|
+
expandedKeys,
|
|
77
|
+
onSwitcherClick,
|
|
78
|
+
handleExpandSearch
|
|
79
|
+
} = useExtendController({
|
|
80
|
+
allParentKeys,
|
|
81
|
+
treeDefaultExpandAll,
|
|
82
|
+
treeDefaultExpandedKeys,
|
|
83
|
+
treeExpandedKeys,
|
|
84
|
+
treeNodeMap,
|
|
85
|
+
onTreeExpand,
|
|
86
|
+
onExpandSwitcherClick,
|
|
87
|
+
loadData,
|
|
88
|
+
loadChildrenNodes,
|
|
89
|
+
onSearch
|
|
90
|
+
});
|
|
91
|
+
const {
|
|
92
|
+
currentSelectingIndex,
|
|
93
|
+
onKeyControl,
|
|
94
|
+
handleChange,
|
|
95
|
+
handleSearch,
|
|
96
|
+
handleDropdownVisibleChange,
|
|
97
|
+
getCurrentSelectingKey
|
|
98
|
+
} = useKeyControl(treeData, expandedKeys, treeNodeMap, onDropdownVisibleChange, onChange, handleExpandSearch);
|
|
99
|
+
const {
|
|
100
|
+
checkedKeys,
|
|
101
|
+
onCheckableClick
|
|
102
|
+
} = useTreeCheckable(nodeDataMap, treeNodeMap, showCheckedStrategy, isAsyncLoading, onDeselect);
|
|
103
|
+
const defaultKeys = getDefaultKeysByDefaultValues(defaultValue, treeData);
|
|
104
|
+
const handleKeyControl = useCallback((e) => {
|
|
105
|
+
onKeyControl(e);
|
|
106
|
+
const key = getCurrentSelectingKey();
|
|
107
|
+
if (!key) {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
if (e.key === "ArrowRight") {
|
|
111
|
+
if (!expandedKeys.includes(key)) {
|
|
112
|
+
onSwitcherClick(key);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
if (e.key === "ArrowLeft") {
|
|
116
|
+
if (expandedKeys.includes(key)) {
|
|
117
|
+
onSwitcherClick(key);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}, [expandedKeys, getCurrentSelectingKey, onKeyControl, onSwitcherClick]);
|
|
121
|
+
const handleTagClose = useCallback((nodeKey) => {
|
|
122
|
+
onCheckableClick(nodeKey);
|
|
123
|
+
}, [onCheckableClick]);
|
|
124
|
+
const handleInputKeyDown = useCallback((e) => {
|
|
125
|
+
if (e.key === "Enter") {
|
|
126
|
+
const key = getCurrentSelectingKey();
|
|
127
|
+
if (!key) {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
onCheckableClick(key);
|
|
131
|
+
}
|
|
132
|
+
}, [getCurrentSelectingKey, onCheckableClick]);
|
|
133
|
+
const getOptionByValue = useCallback((value2) => {
|
|
134
|
+
if (isNumber(value2)) {
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
return treeNodeMap.get(value2);
|
|
138
|
+
}, [treeNodeMap]);
|
|
139
|
+
const renderDropdownItem = useCallback((option, index) => {
|
|
140
|
+
return /* @__PURE__ */ createElement(TreeSelectOption, { ...option, index, itemKey: option.key, styles: styles == null ? void 0 : styles.nodeStyles, key: option.key });
|
|
141
|
+
}, [styles == null ? void 0 : styles.nodeStyles]);
|
|
142
|
+
const filterOptions = useCallback((treeNode, filterValue) => {
|
|
143
|
+
if (!filterTreeNode) {
|
|
144
|
+
return [...treeNode];
|
|
145
|
+
}
|
|
146
|
+
return filterItems(treeNode, filterValue, treeNodeFilterProp);
|
|
147
|
+
}, [filterTreeNode, treeNodeFilterProp]);
|
|
148
|
+
const valuesFilter = useCallback((activeValues) => {
|
|
149
|
+
if (!treeCheckable || showCheckedStrategy === "all") {
|
|
150
|
+
return activeValues;
|
|
151
|
+
}
|
|
152
|
+
return activeValues.filter((value2) => {
|
|
153
|
+
if (isNumber(value2)) {
|
|
154
|
+
return false;
|
|
155
|
+
}
|
|
156
|
+
const nodeData = nodeDataMap.get(value2);
|
|
157
|
+
if (!nodeData) {
|
|
158
|
+
return false;
|
|
159
|
+
}
|
|
160
|
+
if (showCheckedStrategy === "parent") {
|
|
161
|
+
return !activeValues.includes(nodeData.parentKey);
|
|
162
|
+
}
|
|
163
|
+
return leafChildrenKeys.includes(value2);
|
|
164
|
+
});
|
|
165
|
+
}, [leafChildrenKeys, nodeDataMap, showCheckedStrategy, treeCheckable]);
|
|
166
|
+
const virtualizerEstimateSize = useCallback((index) => {
|
|
167
|
+
return elementSizes[index] ?? DEFAULT_ELEMENT_SIZE;
|
|
168
|
+
}, [elementSizes]);
|
|
169
|
+
const contextValue = useMemo(() => ({
|
|
170
|
+
nodeDataMap,
|
|
171
|
+
treeCheckable,
|
|
172
|
+
showCheckedStrategy,
|
|
173
|
+
expandedKeys,
|
|
174
|
+
isAsyncLoading,
|
|
175
|
+
loadingKeys,
|
|
176
|
+
onSwitcherClick,
|
|
177
|
+
changeElementSize,
|
|
178
|
+
getCurrentSelectingKey,
|
|
179
|
+
onCheckableClick
|
|
180
|
+
}), [nodeDataMap, treeCheckable, showCheckedStrategy, expandedKeys, isAsyncLoading, loadingKeys, onSwitcherClick, changeElementSize, getCurrentSelectingKey, onCheckableClick]);
|
|
181
|
+
const suffix = loading ? /* @__PURE__ */ jsx(LoadingOutlined, {}) : suffixIcon;
|
|
182
|
+
const isOpen = loading ? false : open;
|
|
183
|
+
const withSearch = loading ? false : showSearch;
|
|
184
|
+
return /* @__PURE__ */ jsx(treeSelectContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(BaseSelect, { ...otherProps, renderDropdownItem, filterOptions, options: currentTreeData, valuesFilter, getOptionByValue, virtualizerEstimateSize, optionLabelProp: treeNodeLabelProp, allowClear, autoClearSearchValue, autoFocus, disabled, dropdownMatchSelectWidth, dropdownMaxHeight, dropdownMinWidth, getPopupContainer, loading, mode: treeCheckable ? "multiple" : mode, placement, showSearch: withSearch, suffixIcon: suffix, variant, virtual, placeholder: placeholder == null ? void 0 : placeholder.toString(), styles: styles == null ? void 0 : styles.baseSelectStyles, currentSelectingIndex, onKeyControl: handleKeyControl, onChange: handleChange, onSearch: handleSearch, onDropdownVisibleChange: handleDropdownVisibleChange, getCurrentSelectingValue: getCurrentSelectingKey, open: isOpen, onTagClose: treeCheckable ? handleTagClose : void 0, value: treeCheckable ? checkedKeys : value, onInputKeyDown: treeCheckable ? handleInputKeyDown : void 0, defaultValue: defaultKeys }) });
|
|
185
|
+
});
|
|
186
|
+
const TreeSelect = withThemeProvider(TreeSelectComponent);
|
|
187
|
+
export {
|
|
188
|
+
TreeSelect
|
|
189
|
+
};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Theme } from 'themes';
|
|
2
|
+
export declare const getTreeSelectTokens: (theme: Theme) => {
|
|
3
|
+
treeSelectBorder: "#D9D9D9";
|
|
4
|
+
treeSelectBorderHover: "#50CCC4";
|
|
5
|
+
treeSelectBorderActive: "#0CB3B3";
|
|
6
|
+
treeSelectBorderDanger: "#FF4D4F";
|
|
7
|
+
treeSelectBorderDangerHover: "#FF7875";
|
|
8
|
+
treeSelectBg: "#FFFFFF";
|
|
9
|
+
treeSelectBgDisabled: "#F0F0F0";
|
|
10
|
+
treeSelectPlaceholder: "#BFBFBF";
|
|
11
|
+
treeSelectText: "#262626";
|
|
12
|
+
treeSelectTextDisabled: "#8C8C8C";
|
|
13
|
+
treeSelectTextDanger: "#FF4D4F";
|
|
14
|
+
treeSelectMultipleItemBorder: "#D9D9D9";
|
|
15
|
+
treeSelectMultipleItemBg: "#F5F5F5";
|
|
16
|
+
treeSelectMultipleItemBgDisabled: "#D9D9D9";
|
|
17
|
+
treeSelectOptionText: "#262626";
|
|
18
|
+
treeSelectOptionTextSelected: "#0CB3B3";
|
|
19
|
+
treeSelectOptionTextDisabled: "#8C8C8C";
|
|
20
|
+
treeSelectOptionBgHover: "#F5F5F5";
|
|
21
|
+
treeSelectPaddingVertical: 4;
|
|
22
|
+
treeSelectPaddingHorizontal: 12;
|
|
23
|
+
treeSelectPaddingHorizontalTag: 4;
|
|
24
|
+
treeSelectOptionPaddingVertical: 4;
|
|
25
|
+
treeSelectOptionPaddingHorizontal: 8;
|
|
26
|
+
treeSelectSwitcherPadding: 8;
|
|
27
|
+
treeSelectNodeGap: 2;
|
|
28
|
+
treeSelectNodeIndent: number;
|
|
29
|
+
};
|
|
30
|
+
export type TreeSelectTokensType = ReturnType<typeof getTreeSelectTokens>;
|