@crab-dev/rc-select 0.0.5 → 0.1.1

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/CHANGELOG.md CHANGED
@@ -1,5 +1,62 @@
1
1
  # @crab-dev/rc-select
2
2
 
3
+ ## 0.1.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [#22](https://github.com/hotlif/crab-dev/pull/22) [`20064d5`](https://github.com/hotlif/crab-dev/commit/20064d52b3442bda7eef16ca9045d9746cb28fce) Thanks [@hotlif](https://github.com/hotlif)! - 精修三体系控件反馈:浮动标签、分段标记及文字位置连续过渡,分离开关各部件与滑块光晕的空间和颜色反馈,将零散时序集中到组件令牌。保留开关 root.transition 覆盖,减少动画时保留必要的焦点、选中与加载反馈。
8
+
9
+ - [#22](https://github.com/hotlif/crab-dev/pull/22) [`8f0ac0d`](https://github.com/hotlif/crab-dev/commit/8f0ac0dada263e35783626524c69509c64e39d96) Thanks [@hotlif](https://github.com/hotlif)! - Keep the popup indicator out of the page Tab sequence so keyboard users move directly between fields. Preserve the independent clear action's keyboard access.
10
+ - Updated dependencies [[`8f0ac0d`](https://github.com/hotlif/crab-dev/commit/8f0ac0dada263e35783626524c69509c64e39d96), [`ab93160`](https://github.com/hotlif/crab-dev/commit/ab93160f53925f875c66bfabf871766e9e919af3), [`8f0ac0d`](https://github.com/hotlif/crab-dev/commit/8f0ac0dada263e35783626524c69509c64e39d96), [`8f0ac0d`](https://github.com/hotlif/crab-dev/commit/8f0ac0dada263e35783626524c69509c64e39d96), [`cb1361d`](https://github.com/hotlif/crab-dev/commit/cb1361d1e5fec7f6f73a10b48883d698aad729bd), [`8f0ac0d`](https://github.com/hotlif/crab-dev/commit/8f0ac0dada263e35783626524c69509c64e39d96), [`20064d5`](https://github.com/hotlif/crab-dev/commit/20064d52b3442bda7eef16ca9045d9746cb28fce), [`8f0ac0d`](https://github.com/hotlif/crab-dev/commit/8f0ac0dada263e35783626524c69509c64e39d96), [`8f0ac0d`](https://github.com/hotlif/crab-dev/commit/8f0ac0dada263e35783626524c69509c64e39d96)]:
11
+ - @crab-dev/rc-token-semantic@1.0.1
12
+ - @crab-dev/rc-dropdown-container@0.1.1
13
+ - @crab-dev/rc-config-provider@0.1.1
14
+ - @crab-dev/rc-line-edit@0.1.1
15
+ - @crab-dev/rc-hooks@0.1.1
16
+ - @crab-dev/rc-button@1.0.1
17
+ - @crab-dev/rc-spin@0.1.1
18
+
19
+ ## 0.1.0
20
+
21
+ ### Minor Changes
22
+
23
+ - [`d11001f`](https://github.com/hotlif/crab-dev/commit/d11001fa35d4af4f53d0571c074de4b3e9806903) Thanks [@hotlif](https://github.com/hotlif)! - Rebuild the component library around a single package inventory, independent architecture and usage classifications, and three design systems: MD3 Expressive (md3), Apple (apple), and shadcn/ui (shadcn).
24
+
25
+ This is a breaking pre-1.0 migration: unify controlled/uncontrolled values, selection callbacks, component APIs, sizes, and density contracts; replace legacy theme identifiers and remove old API aliases. Only stored browser appearance preferences are migrated automatically.
26
+
27
+ Declare required React/ReactDOM ^19.2.0 peers through runtime dependency chains while retaining development dependencies. Correct runtime token dependencies, public/internal exports, strict declaration consumption, and independent offline PnP package verification.
28
+
29
+ Correct RTL layout and overlay placement, field validation placement, embedded editor composition and focus, native virtual-scroll synchronization, and composed button feedback. Define independent multiline field geometry and preserve all eight configuration axes across controlled previews and PDF Web Components. Built-in error messages follow locale without replacing application-owned error data.
30
+
31
+ Restore compiled focus and disabled styles by using valid CSS template comments, keep Tree focus indicators inside measured containers and above selected row backgrounds, accommodate localized color-channel labels, preserve physical Table column geometry with RTL content, and accept PDF byte sources from iframe realms without treating them as URLs. Respect reduced motion in the property-driven Canvas animation example and let the pill Tabs example inherit the configured size.
32
+
33
+ Follow .website/docs/guides/migration.mdx before upgrading. All affected packages remain experimental; minor bumps represent the coordinated pre-1.0 breaking release and do not declare a stable 1.0 contract.
34
+
35
+ ### Patch Changes
36
+
37
+ - [`ec1f759`](https://github.com/hotlif/crab-dev/commit/ec1f759d51a83a456b4eb7f608f2e4908d4d46da) Thanks [@hotlif](https://github.com/hotlif)! - 补齐选择、导航和浮层的三体系规格、公开示例与包内 Playwright 状态矩阵,覆盖真实键盘、Portal 配置与草稿保留。颜色面板的轨道、宽度与操作间距归入组件令牌,窄屏操作区支持换行,强制颜色下保留清晰的触发器焦点边界。
38
+
39
+ 恢复颜色选择器公开的 showEyeDropper 屏幕取色入口,按所属浏览器能力显示,取消或拒绝不改值,卸载中止原生取色会话。
40
+
41
+ 补充水平与折叠菜单真实展开、Dialog 确认/取消 pending 动态场景,以及 Drawer 包公开的 iframe/Shadow DOM 组合示例;分别记录共享底层回归与真实浏览器验收范围,保留未运行、未复审部分。
42
+
43
+ - [`d11001f`](https://github.com/hotlif/crab-dev/commit/d11001fa35d4af4f53d0571c074de4b3e9806903) Thanks [@hotlif](https://github.com/hotlif)! - Restore focus after an accepted keyboard tab close, position Select popups outside their own supporting text, preserve design-specific disabled placeholders, and keep menu focus and color trigger feedback visible. Fix the appointment dialog example to retain Form's grid layout.
44
+
45
+ Register dropdown Escape layers when delayed Portal elements actually mount, and preserve explicit close reasons and native events through consumer dispatch.
46
+
47
+ Use the date placeholder for the appointment form's empty state instead of presenting a fake selected value.
48
+ - Updated dependencies [[`d11001f`](https://github.com/hotlif/crab-dev/commit/d11001fa35d4af4f53d0571c074de4b3e9806903), [`ec1f759`](https://github.com/hotlif/crab-dev/commit/ec1f759d51a83a456b4eb7f608f2e4908d4d46da), [`ec1f759`](https://github.com/hotlif/crab-dev/commit/ec1f759d51a83a456b4eb7f608f2e4908d4d46da), [`d11001f`](https://github.com/hotlif/crab-dev/commit/d11001fa35d4af4f53d0571c074de4b3e9806903), [`d11001f`](https://github.com/hotlif/crab-dev/commit/d11001fa35d4af4f53d0571c074de4b3e9806903), [`d11001f`](https://github.com/hotlif/crab-dev/commit/d11001fa35d4af4f53d0571c074de4b3e9806903), [`ec1f759`](https://github.com/hotlif/crab-dev/commit/ec1f759d51a83a456b4eb7f608f2e4908d4d46da), [`d11001f`](https://github.com/hotlif/crab-dev/commit/d11001fa35d4af4f53d0571c074de4b3e9806903), [`ec1f759`](https://github.com/hotlif/crab-dev/commit/ec1f759d51a83a456b4eb7f608f2e4908d4d46da), [`ec1f759`](https://github.com/hotlif/crab-dev/commit/ec1f759d51a83a456b4eb7f608f2e4908d4d46da), [`ec1f759`](https://github.com/hotlif/crab-dev/commit/ec1f759d51a83a456b4eb7f608f2e4908d4d46da), [`ec1f759`](https://github.com/hotlif/crab-dev/commit/ec1f759d51a83a456b4eb7f608f2e4908d4d46da), [`d11001f`](https://github.com/hotlif/crab-dev/commit/d11001fa35d4af4f53d0571c074de4b3e9806903), [`d11001f`](https://github.com/hotlif/crab-dev/commit/d11001fa35d4af4f53d0571c074de4b3e9806903), [`d11001f`](https://github.com/hotlif/crab-dev/commit/d11001fa35d4af4f53d0571c074de4b3e9806903), [`d11001f`](https://github.com/hotlif/crab-dev/commit/d11001fa35d4af4f53d0571c074de4b3e9806903), [`d11001f`](https://github.com/hotlif/crab-dev/commit/d11001fa35d4af4f53d0571c074de4b3e9806903), [`ec1f759`](https://github.com/hotlif/crab-dev/commit/ec1f759d51a83a456b4eb7f608f2e4908d4d46da)]:
49
+ - @crab-dev/rc-dropdown-container@0.1.0
50
+ - @crab-dev/rc-hooks@0.1.0
51
+ - @crab-dev/rc-tag@0.1.0
52
+ - @crab-dev/rc-button@1.0.0
53
+ - @crab-dev/rc-checkbox@0.1.0
54
+ - @crab-dev/rc-config-provider@0.1.0
55
+ - @crab-dev/rc-line-edit@0.1.0
56
+ - @crab-dev/rc-spin@0.1.0
57
+ - @crab-dev/rc-token-semantic@1.0.0
58
+ - @crab-dev/rc-virtual@0.2.0
59
+
3
60
  ## 0.0.5
4
61
 
5
62
  ### Patch Changes
@@ -2,11 +2,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
2
2
  const __wake_namespace_0 = require("react/jsx-runtime");
3
3
  const __wake_namespace_1 = require("@crab-dev/rc-config-provider");
4
4
  const __wake_namespace_2 = require("@crab-dev/rc-dropdown-container");
5
- const __wake_namespace_3 = require("react");
6
- const __wake_namespace_4 = require("@crab-dev/rc-hooks");
7
- const __wake_namespace_5 = require("./hooks/useKeyboardNavigation.cjs");
8
- const __wake_namespace_6 = require("./selectInput.cjs");
9
- const __wake_namespace_7 = require("./selectOverlay.cjs");
5
+ const __wake_namespace_3 = require("@crab-dev/rc-dropdown-container/internal");
6
+ require("@crab-dev/rc-token-semantic");
7
+ const __wake_namespace_4 = require("react");
8
+ ;
9
+ const __wake_namespace_5 = require("@crab-dev/rc-hooks");
10
+ const __wake_namespace_6 = require("./hooks/useKeyboardNavigation.cjs");
11
+ const __wake_namespace_7 = require("./selectInput.cjs");
12
+ const __wake_namespace_8 = require("./selectOverlay.cjs");
10
13
  require("./token.cjs");
11
14
  ;
12
15
  const isGroup = (item) => "options" in item && Array.isArray(item.options);
@@ -61,26 +64,30 @@ const filterOptions = (flatOptions, searchable, searchText) => {
61
64
  const firstEnabledIndex = (flatOptions) => flatOptions.findIndex((opt) => !opt.disabled && !opt.isGroupLabel);
62
65
  const fieldStyle = "rc-select-0f3ecf945b98";
63
66
  const supportingStyle = "rc-select-3bd2a27273ad";
64
- const Select = ({ ref, id, options, placeholder = "请选择", disabled = false, searchable = false, multiple = false, size: sizeProp, status, appearance = "outlined", label, supportingText, errorText, required, allowClear = false, loading = false, maxTagCount, autoFocus = false, notFoundContent, popupClassName, popupMatchSelectWidth = true, optionRender, tagRender, dropdownRender, value, defaultValue, onChange, onOpenChange, onFocus, onBlur, className, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, ...restProps }) => {
67
+ function SelectField({ children }) {
68
+ const setPositionReference = (0, __wake_namespace_3["useDropdownPositionReference"])();
69
+ return (0, __wake_namespace_0["jsx"])("div", { className: fieldStyle, ref: setPositionReference, children: children });
70
+ }
71
+ function Select({ ref, id, options, placeholder, disabled = false, searchable = false, multiple = false, size: sizeProp, status, appearance = "outlined", label, supportingText, errorText, required, allowClear = false, loading = false, maxTagCount, autoFocus = false, notFoundContent, popupClassName, popupMatchSelectWidth = true, optionRender, tagRender, dropdownRender, value, defaultValue, onValueChange, open, defaultOpen, onOpenChange, onFocus, onBlur, className, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, ...restProps }) {
65
72
  const size = (0, __wake_namespace_1["useComponentSize"])(sizeProp);
66
- const listboxId = (0, __wake_namespace_3["useId"])();
67
- const generatedId = (0, __wake_namespace_3["useId"])();
73
+ const { messages } = (0, __wake_namespace_1["useLocale"])();
74
+ const listboxId = (0, __wake_namespace_4["useId"])();
75
+ const generatedId = (0, __wake_namespace_4["useId"])();
68
76
  const inputId = id ?? generatedId;
69
77
  const labelId = `${generatedId}-label`;
70
78
  const descriptionId = `${generatedId}-description`;
71
79
  const fieldStatus = errorText ? "error" : status;
72
80
  const description = errorText || supportingText;
73
- const [searchText, setSearchText] = (0, __wake_namespace_3["useState"])("");
74
- const [selectedValues, setSelectedValues] = (0, __wake_namespace_4["useControllableValue"])({ value: value !== undefined ? asArray(value) : undefined, defaultValue: asArray(defaultValue) });
75
- const [triggerWidth, setTriggerWidth] = (0, __wake_namespace_3["useState"])(0);
76
- const onOpenChangeRef = (0, __wake_namespace_3["useRef"])(onOpenChange);
77
- onOpenChangeRef.current = onOpenChange;
81
+ const [searchText, setSearchText] = (0, __wake_namespace_4["useState"])("");
82
+ const [selectedValues, setSelectedValues] = (0, __wake_namespace_5["useControllableValue"])({ value: value !== undefined ? asArray(value) : undefined, defaultValue: asArray(defaultValue) });
83
+ const [triggerWidth, setTriggerWidth] = (0, __wake_namespace_4["useState"])(0);
84
+ const controlRef = (0, __wake_namespace_4["useRef"])(null);
78
85
  const allPlainOptions = flattenPlainOptions(options);
79
86
  const selectedOptions = allPlainOptions.filter((opt) => selectedValues.includes(opt.value));
80
87
  const flatOptions = flattenOptions(options);
81
88
  const filteredOptions = filterOptions(flatOptions, searchable, searchText);
82
- const { highlightIndex, highlightedOption, moveHighlight, resetHighlight, setHighlightIndex } = (0, __wake_namespace_5 && __wake_namespace_5.__esModule ? __wake_namespace_5.default : __wake_namespace_5)({ filteredOptions, open: true });
83
- const emitOpenChange = (nextOpen) => {
89
+ const { highlightIndex, highlightedOption, moveHighlight, resetHighlight, setHighlightIndex } = (0, __wake_namespace_6 && __wake_namespace_6.__esModule ? __wake_namespace_6.default : __wake_namespace_6)({ filteredOptions, open: true });
90
+ const syncOpenState = (nextOpen) => {
84
91
  if (nextOpen) {
85
92
  if (!multiple && selectedValues.length > 0) {
86
93
  const selectedIndex = filteredOptions.findIndex((opt) => opt.value === selectedValues[0]);
@@ -90,49 +97,58 @@ const Select = ({ ref, id, options, placeholder = "请选择", disabled = false,
90
97
  setSearchText("");
91
98
  resetHighlight();
92
99
  }
93
- onOpenChangeRef.current?.(nextOpen);
94
100
  };
95
- const updateValue = (nextValues) => {
101
+ const emitOpenChange = (nextOpen, details) => {
102
+ onOpenChange?.(nextOpen, details);
103
+ };
104
+ const openProps = open === undefined ? { defaultOpen } : { open };
105
+ const updateValue = (nextValues, reason, event) => {
106
+ if (disabled) return;
107
+ if (nextValues.length === selectedValues.length && nextValues.every((item, index) => item === selectedValues[index])) return;
96
108
  setSelectedValues(nextValues);
97
109
  if (multiple) {
98
110
  const nextOptions = allPlainOptions.filter((opt) => nextValues.includes(opt.value));
99
- onChange?.(nextValues, nextOptions);
111
+ onValueChange?.(nextValues, { reason, options: nextOptions, event });
100
112
  return;
101
113
  }
102
114
  const nextValue = nextValues[0] ?? null;
103
115
  const nextOption = allPlainOptions.find((opt) => opt.value === nextValue);
104
- onChange?.(nextValue, nextOption);
116
+ onValueChange?.(nextValue, { reason, option: nextOption, options: nextOption ? [nextOption] : [], event });
105
117
  };
106
- const handleOptionSelect = (option) => {
107
- if (option.disabled || option.isGroupLabel) {
118
+ const handleOptionSelect = (option, event) => {
119
+ if (disabled || option.disabled || option.isGroupLabel) {
108
120
  return;
109
121
  }
110
122
  if (multiple) {
111
123
  const exists = selectedValues.includes(option.value);
112
124
  const nextValues = exists ? selectedValues.filter((v) => v !== option.value) : [...selectedValues, option.value];
113
- updateValue(nextValues);
125
+ updateValue(nextValues, exists ? "deselect" : "select", event);
114
126
  return;
115
127
  }
116
- updateValue([option.value]);
128
+ controlRef.current?.focus();
129
+ updateValue([option.value], "select", event);
117
130
  };
118
- const handleClear = () => {
119
- updateValue([]);
131
+ const handleClear = (event) => {
132
+ if (disabled) return;
133
+ updateValue([], "clear", event);
120
134
  setSearchText("");
121
135
  };
122
- const handleRemoveTag = (val) => {
123
- updateValue(selectedValues.filter((v) => v !== val));
136
+ const handleRemoveTag = (val, event) => {
137
+ updateValue(selectedValues.filter((v) => v !== val), "remove", event);
124
138
  };
125
139
  const handleTriggerWidthChange = (width) => {
126
140
  setTriggerWidth(width);
127
141
  };
128
142
  const handleSearchTextChange = (text) => {
143
+ if (disabled) return;
129
144
  setSearchText(text);
130
145
  const nextFiltered = filterOptions(flatOptions, searchable, text);
131
146
  setHighlightIndex(firstEnabledIndex(nextFiltered));
132
147
  };
133
148
  const floatingStyle = popupMatchSelectWidth ? { width: triggerWidth } : { minWidth: triggerWidth };
134
- return (0, __wake_namespace_0["jsx"])(__wake_namespace_2 && __wake_namespace_2.__esModule ? __wake_namespace_2.default : __wake_namespace_2, { size: size, ...restProps, className: className, overlay: (0, __wake_namespace_0["jsx"])(__wake_namespace_7 && __wake_namespace_7.__esModule ? __wake_namespace_7.default : __wake_namespace_7, { multiple: multiple, loading: loading, filteredOptions: filteredOptions, selectedValues: selectedValues, triggerWidth: triggerWidth, highlightIndex: highlightIndex, listboxId: listboxId, notFoundContent: notFoundContent, popupClassName: popupClassName, optionRender: optionRender, dropdownRender: dropdownRender, onOptionSelect: handleOptionSelect, onOpenChange: emitOpenChange, onHighlightChange: setHighlightIndex }), floatingContainerProps: { style: floatingStyle }, children: (0, __wake_namespace_0["jsxs"])("div", { className: fieldStyle, children: [(0, __wake_namespace_0["jsx"])(__wake_namespace_6 && __wake_namespace_6.__esModule ? __wake_namespace_6.default : __wake_namespace_6, { ref: ref, id: inputId, ariaLabel: ariaLabel, ariaLabelledBy: ariaLabelledBy ?? (label ? labelId : undefined), ariaDescribedBy: [ariaDescribedBy, description ? descriptionId : undefined].filter(Boolean).join(" ") || undefined, disabled: disabled, searchable: searchable, multiple: multiple, size: size, status: fieldStatus, appearance: appearance, label: label, labelId: labelId, required: required, allowClear: allowClear, loading: loading, maxTagCount: maxTagCount, autoFocus: autoFocus, placeholder: placeholder, selectedOptions: selectedOptions, searchText: searchText, highlightIndex: highlightIndex, highlightedOption: highlightedOption, listboxId: listboxId, tagRender: tagRender, onSearchTextChange: handleSearchTextChange, onOpenChange: emitOpenChange, onWidthChange: handleTriggerWidthChange, onMoveHighlight: moveHighlight, onSelectHighlighted: handleOptionSelect, onClear: handleClear, onRemoveTag: handleRemoveTag, onFocus: onFocus, onBlur: onBlur }), description && (0, __wake_namespace_0["jsx"])("div", { id: descriptionId, className: supportingStyle, "data-status": fieldStatus, children: description })] }) });
135
- };
149
+ return (0, __wake_namespace_0["jsx"])(__wake_namespace_2 && __wake_namespace_2.__esModule ? __wake_namespace_2.default : __wake_namespace_2, { ...openProps, onOpenChange: emitOpenChange, size: size, ...restProps, className: className, overlay: (0, __wake_namespace_0["jsx"])(__wake_namespace_8 && __wake_namespace_8.__esModule ? __wake_namespace_8.default : __wake_namespace_8, { size: size, multiple: multiple, disabled: disabled, loading: loading, filteredOptions: filteredOptions, selectedValues: selectedValues, triggerWidth: triggerWidth, highlightIndex: highlightIndex, listboxId: listboxId, notFoundContent: notFoundContent, popupClassName: popupClassName, optionRender: optionRender, dropdownRender: dropdownRender, onOptionSelect: handleOptionSelect, onHighlightChange: setHighlightIndex }), floatingContainerProps: { style: floatingStyle }, children: (0, __wake_namespace_0["jsxs"])(SelectField, { children: [(0, __wake_namespace_0["jsx"])(__wake_namespace_7 && __wake_namespace_7.__esModule ? __wake_namespace_7.default : __wake_namespace_7, { ref: ref, controlRef: controlRef, id: inputId, ariaLabel: ariaLabel, ariaLabelledBy: ariaLabelledBy ?? (label ? labelId : undefined), ariaDescribedBy: [ariaDescribedBy, description ? descriptionId : undefined].filter(Boolean).join(" ") || undefined, disabled: disabled, searchable: searchable, multiple: multiple, size: size, status: fieldStatus, appearance: appearance, label: label, labelId: labelId, required: required, allowClear: allowClear, loading: loading, maxTagCount: maxTagCount, autoFocus: autoFocus, placeholder: placeholder ?? messages.select.placeholder, selectedOptions: selectedOptions, searchText: searchText, highlightIndex: highlightIndex, highlightedOption: highlightedOption, listboxId: listboxId, tagRender: tagRender, onSearchTextChange: handleSearchTextChange, onOpenStateChange: syncOpenState, onWidthChange: handleTriggerWidthChange, onMoveHighlight: moveHighlight, onSelectHighlighted: handleOptionSelect, onClear: handleClear, onRemoveTag: handleRemoveTag, onFocus: onFocus, onBlur: onBlur }), description && (0, __wake_namespace_0["jsx"])("div", { id: descriptionId, className: supportingStyle, "data-status": fieldStatus, role: errorText ? "alert" : undefined, children: description })] }) });
150
+ }
151
+ ;
136
152
  const __wake_default_export = Select;
137
153
  Object.defineProperty(exports, "default", { enumerable: true, get: function() {
138
154
  return __wake_default_export;
@@ -6,9 +6,11 @@ const __wake_namespace_3 = require("@crab-dev/rc-button");
6
6
  const __wake_namespace_4 = require("@crab-dev/rc-spin");
7
7
  const __wake_namespace_5 = require("@crab-dev/rc-tag");
8
8
  const __wake_namespace_6 = require("@crab-dev/css");
9
- const __wake_namespace_7 = require("react");
9
+ const __wake_namespace_7 = require("@crab-dev/rc-config-provider");
10
+ const __wake_namespace_8 = require("react");
10
11
  require("./token.cjs");
11
12
  ;
13
+ const __wake_namespace_9 = require("./selectInput.styles.cjs");
12
14
  const setRef = (ref, node) => {
13
15
  if (typeof ref === "function") {
14
16
  ref(node);
@@ -16,37 +18,22 @@ const setRef = (ref, node) => {
16
18
  ref.current = node;
17
19
  }
18
20
  };
19
- const controlStyle = "rc-select-208f8e064cef";
20
- const materialFieldStyle = "rc-select-de4f87d60f05";
21
- const fieldLabelStyle = "rc-select-608ca49a02dc";
22
- const controlDisabledStyle = "rc-select-238e884e6a17";
23
- const controlErrorStyle = "rc-select-e0726e9ad481";
24
- const controlWarningStyle = "rc-select-79b739b32fcb";
25
- const valueWrapStyle = "rc-select-1356dfc74a7f";
26
- const singleValueStyle = "rc-select-52cbc5cc4f0f";
27
- const placeholderStyle = "rc-select-37ce25dfcd13";
28
- const searchInputStyle = "rc-select-50dd3c70bcdc";
29
- const caretStyle = "rc-select-d7edabfe7361";
30
- const caretOpenStyle = "rc-select-30173f5e3d41";
31
- const tagLabelStyle = "rc-select-2e4337f305d8";
32
- const suffixWrapStyle = "rc-select-ee9f2054c459";
33
- const actionStyle = "rc-select-8504d95b52bc";
34
- const loadingIconStyle = "rc-select-3ab2c2f8c427";
35
- const sizeMetricsMap = { large: "rc-select-df4a743b55e1", middle: "rc-select-de4a743b542e", small: "rc-select-dd4a743b527b" };
36
- const sizeHeightFixedMap = { large: "rc-select-b8fc5925a597", middle: "rc-select-b7fc5925a3e4", small: "rc-select-bafc5925a8fd" };
37
- const sizeHeightFlexibleMap = { large: "rc-select-5d07f79a2f4a", middle: "rc-select-5e07f79a30fd", small: "rc-select-5b07f79a2be4" };
21
+ const sizeMetricsMap = { large: "rc-select-df4a743b55e1", medium: "rc-select-de4a743b542e", small: "rc-select-dd4a743b527b" };
22
+ const sizeHeightFixedMap = { large: "rc-select-b8fc5925a597", medium: "rc-select-b7fc5925a3e4", small: "rc-select-bafc5925a8fd" };
23
+ const sizeHeightFlexibleMap = { large: "rc-select-5d07f79a2f4a", medium: "rc-select-5e07f79a30fd", small: "rc-select-5b07f79a2be4" };
38
24
  const CaretIcon = () => (0, __wake_namespace_0["jsx"])("svg", { "aria-hidden": "true", focusable: "false", viewBox: "0 0 24 24", fill: "currentColor", children: (0, __wake_namespace_0["jsx"])("path", { d: "m7 10 5 5 5-5z" }) });
39
25
  const ClearIcon = () => (0, __wake_namespace_0["jsx"])("svg", { "aria-hidden": "true", focusable: "false", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: (0, __wake_namespace_0["jsx"])("path", { d: "m18 6-12 12M6 6l12 12" }) });
40
26
  ;
41
- const SelectInput = ({ ref, id, ariaLabel, ariaLabelledBy, ariaDescribedBy, disabled, searchable, multiple, size, status, appearance, label, labelId, required, allowClear, loading, maxTagCount, autoFocus, placeholder, selectedOptions, searchText, highlightIndex, highlightedOption, listboxId, tagRender, onSearchTextChange, onOpenChange, onWidthChange, onMoveHighlight, onSelectHighlighted, onClear, onRemoveTag, onFocus, onBlur }) => {
27
+ const SelectInput = ({ ref, controlRef, id, ariaLabel, ariaLabelledBy, ariaDescribedBy, disabled, searchable, multiple, size, status, appearance, label, labelId, required, allowClear, loading, maxTagCount, autoFocus, placeholder, selectedOptions, searchText, highlightIndex, highlightedOption, listboxId, tagRender, onSearchTextChange, onOpenStateChange, onWidthChange, onMoveHighlight, onSelectHighlighted, onClear, onRemoveTag, onFocus, onBlur }) => {
42
28
  const { state, refs, dispatch } = (0, __wake_namespace_1["useDropdownContext"])();
43
- const controlRef = (0, __wake_namespace_7["useRef"])(null);
44
- const inputRef = (0, __wake_namespace_7["useRef"])(null);
29
+ const { messages } = (0, __wake_namespace_7["useLocale"])();
30
+ const { designSystem } = (0, __wake_namespace_7["useConfig"])();
31
+ const inputRef = (0, __wake_namespace_8["useRef"])(null);
45
32
  const open = state.open;
46
- const [hovered, setHovered] = (0, __wake_namespace_7["useState"])(false);
47
- const [actionFocused, setActionFocused] = (0, __wake_namespace_7["useState"])(false);
48
- const [withoutHover, setWithoutHover] = (0, __wake_namespace_7["useState"])(false);
49
- (0, __wake_namespace_7["useEffect"])(() => {
33
+ const [hovered, setHovered] = (0, __wake_namespace_8["useState"])(false);
34
+ const [actionFocused, setActionFocused] = (0, __wake_namespace_8["useState"])(false);
35
+ const [withoutHover, setWithoutHover] = (0, __wake_namespace_8["useState"])(false);
36
+ (0, __wake_namespace_8["useEffect"])(() => {
50
37
  const media = window.matchMedia?.("(hover: none)");
51
38
  if (!media) return;
52
39
  const update = () => setWithoutHover(media.matches);
@@ -54,16 +41,15 @@ const SelectInput = ({ ref, id, ariaLabel, ariaLabelledBy, ariaDescribedBy, disa
54
41
  media.addEventListener("change", update);
55
42
  return () => media.removeEventListener("change", update);
56
43
  }, []);
57
- const onOpenChangeRef = (0, __wake_namespace_7["useRef"])(onOpenChange);
58
- onOpenChangeRef.current = onOpenChange;
59
- const mergeRef = (0, __wake_namespace_7["useCallback"])((node) => {
44
+ const syncOpen = (0, __wake_namespace_8["useEffectEvent"])(onOpenStateChange);
45
+ const mergeRef = (0, __wake_namespace_8["useCallback"])((node) => {
60
46
  controlRef.current = node;
61
47
  if (typeof refs.setReference === "function") {
62
48
  refs.setReference(node);
63
49
  }
64
50
  setRef(ref, node);
65
- }, [refs.setReference, ref]);
66
- (0, __wake_namespace_7["useEffect"])(() => {
51
+ }, [refs.setReference, ref, controlRef]);
52
+ (0, __wake_namespace_8["useEffect"])(() => {
67
53
  const el = controlRef.current;
68
54
  if (!el) {
69
55
  return;
@@ -76,23 +62,18 @@ const SelectInput = ({ ref, id, ariaLabel, ariaLabelledBy, ariaDescribedBy, disa
76
62
  observer.observe(el);
77
63
  return () => observer.disconnect();
78
64
  }, [onWidthChange]);
79
- (0, __wake_namespace_7["useEffect"])(() => {
80
- if (open && searchable) {
65
+ (0, __wake_namespace_8["useEffect"])(() => {
66
+ if (open && searchable && !disabled) {
81
67
  queueMicrotask(() => inputRef.current?.focus());
82
68
  }
83
- }, [open, searchable]);
84
- (0, __wake_namespace_7["useEffect"])(() => {
85
- if (autoFocus && controlRef.current) {
69
+ }, [disabled, open, searchable]);
70
+ (0, __wake_namespace_8["useEffect"])(() => {
71
+ if (autoFocus && !disabled && controlRef.current) {
86
72
  controlRef.current.focus();
87
73
  }
88
- }, [autoFocus]);
89
- const isFirstOpenRender = (0, __wake_namespace_7["useRef"])(true);
90
- (0, __wake_namespace_7["useEffect"])(() => {
91
- if (isFirstOpenRender.current) {
92
- isFirstOpenRender.current = false;
93
- return;
94
- }
95
- onOpenChangeRef.current(open);
74
+ }, [autoFocus, disabled]);
75
+ (0, __wake_namespace_8["useEffect"])(() => {
76
+ syncOpen(open);
96
77
  }, [open]);
97
78
  const handleClick = () => {
98
79
  if (disabled) {
@@ -122,7 +103,7 @@ const SelectInput = ({ ref, id, ariaLabel, ariaLabelledBy, ariaDescribedBy, disa
122
103
  case "Enter":
123
104
  e.preventDefault();
124
105
  if (open && highlightedOption) {
125
- onSelectHighlighted(highlightedOption);
106
+ onSelectHighlighted(highlightedOption, e);
126
107
  if (!multiple) {
127
108
  dispatch({ type: "setOpen", payload: false });
128
109
  }
@@ -141,29 +122,30 @@ const SelectInput = ({ ref, id, ariaLabel, ariaLabelledBy, ariaDescribedBy, disa
141
122
  case "Escape":
142
123
  if (open) {
143
124
  e.preventDefault();
144
- dispatch({ type: "setOpen", payload: false });
125
+ controlRef.current?.focus();
126
+ dispatch({ type: "setOpen", payload: false, details: { reason: "escape", event: e.nativeEvent } });
145
127
  }
146
128
  break;
147
129
  case "Backspace":
148
130
  if (multiple && searchText === "" && selectedOptions.length > 0) {
149
131
  const lastOption = selectedOptions[selectedOptions.length - 1];
150
- onRemoveTag(lastOption.value);
132
+ onRemoveTag(lastOption.value, e);
151
133
  }
152
134
  break;
153
135
  default:
154
136
  break;
155
137
  }
156
138
  };
157
- const triggerClear = () => {
139
+ const triggerClear = (event) => {
158
140
  controlRef.current?.focus();
159
- onClear();
141
+ onClear(event);
160
142
  if (open) {
161
143
  dispatch({ type: "setOpen", payload: false });
162
144
  }
163
145
  };
164
146
  const handleClearClick = (e) => {
165
147
  e.stopPropagation();
166
- triggerClear();
148
+ triggerClear(e);
167
149
  };
168
150
  const handleClearKeyDown = (e) => {
169
151
  if (e.key === "Enter" || e.key === " ") {
@@ -173,11 +155,13 @@ const SelectInput = ({ ref, id, ariaLabel, ariaLabelledBy, ariaDescribedBy, disa
173
155
  const canClear = allowClear && !disabled && selectedOptions.length > 0;
174
156
  const showClear = canClear && (hovered || actionFocused || withoutHover);
175
157
  const renderTag = (opt) => {
176
- const handleClose = () => onRemoveTag(opt.value);
158
+ const handleClose = (event) => {
159
+ if (!disabled) onRemoveTag(opt.value, event);
160
+ };
177
161
  if (tagRender) {
178
162
  return (0, __wake_namespace_0["jsx"])("span", { children: tagRender(opt, handleClose) }, opt.value);
179
163
  }
180
- return (0, __wake_namespace_0["jsx"])(__wake_namespace_5 && __wake_namespace_5.__esModule ? __wake_namespace_5.default : __wake_namespace_5, { size: "small", closable: true, closeAriaLabel: `Remove ${typeof opt.label === "string" ? opt.label : opt.value}`, onClose: handleClose, children: (0, __wake_namespace_0["jsx"])("span", { className: tagLabelStyle, children: opt.label }) }, opt.value);
164
+ return (0, __wake_namespace_0["jsx"])(__wake_namespace_5 && __wake_namespace_5.__esModule ? __wake_namespace_5.default : __wake_namespace_5, { size: "small", closable: !disabled, closeAriaLabel: messages.select.removeTag(typeof opt.label === "string" ? opt.label : opt.value), onClose: handleClose, children: (0, __wake_namespace_0["jsx"])("span", { className: __wake_namespace_9["tagLabelStyle"], children: opt.label }) }, opt.value);
181
165
  };
182
166
  const renderTags = () => {
183
167
  if (maxTagCount !== undefined && selectedOptions.length > maxTagCount) {
@@ -189,32 +173,32 @@ const SelectInput = ({ ref, id, ariaLabel, ariaLabelledBy, ariaDescribedBy, disa
189
173
  };
190
174
  const renderContent = () => {
191
175
  if (searchable && open) {
192
- return (0, __wake_namespace_0["jsxs"])(__wake_namespace_0["Fragment"], { children: [multiple && renderTags(), (0, __wake_namespace_0["jsx"])(__wake_namespace_2 && __wake_namespace_2.__esModule ? __wake_namespace_2.default : __wake_namespace_2, { ref: inputRef, bordered: false, value: searchText, placeholder: multiple && selectedOptions.length > 0 ? "" : placeholder, onChange: (e) => onSearchTextChange(e.target.value), onClick: (e) => e.stopPropagation(), className: searchInputStyle })] });
176
+ return (0, __wake_namespace_0["jsxs"])(__wake_namespace_0["Fragment"], { children: [multiple && renderTags(), (0, __wake_namespace_0["jsx"])(__wake_namespace_2 && __wake_namespace_2.__esModule ? __wake_namespace_2.default : __wake_namespace_2, { ref: inputRef, "aria-label": ariaLabel ?? label ?? placeholder, bordered: false, disabled: disabled, value: searchText, placeholder: multiple && selectedOptions.length > 0 ? "" : placeholder, onChange: (e) => onSearchTextChange(e.target.value), onClick: (e) => e.stopPropagation(), className: __wake_namespace_9["searchInputStyle"] })] });
193
177
  }
194
178
  if (multiple) {
195
179
  if (selectedOptions.length === 0) {
196
- return (0, __wake_namespace_0["jsx"])("span", { className: placeholderStyle, children: placeholder });
180
+ return (0, __wake_namespace_0["jsx"])("span", { "data-role": "select-placeholder", className: __wake_namespace_9["placeholderStyle"], children: placeholder });
197
181
  }
198
182
  return renderTags();
199
183
  }
200
184
  if (selectedOptions.length === 0) {
201
- return (0, __wake_namespace_0["jsx"])("span", { className: placeholderStyle, children: placeholder });
185
+ return (0, __wake_namespace_0["jsx"])("span", { "data-role": "select-placeholder", className: __wake_namespace_9["placeholderStyle"], children: placeholder });
202
186
  }
203
- return (0, __wake_namespace_0["jsx"])("span", { className: singleValueStyle, children: selectedOptions[0]?.label });
187
+ return (0, __wake_namespace_0["jsx"])("span", { className: __wake_namespace_9["singleValueStyle"], children: selectedOptions[0]?.label });
204
188
  };
205
189
  const activeDescendantId = open && highlightIndex >= 0 ? `${listboxId}-option-${highlightIndex}` : undefined;
206
- return (0, __wake_namespace_0["jsxs"])("div", { id: id, role: "combobox", "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, "aria-required": required || undefined, "aria-expanded": open, "aria-disabled": disabled, "aria-busy": loading || undefined, "aria-haspopup": "listbox", "aria-controls": open ? listboxId : undefined, "aria-activedescendant": activeDescendantId, "aria-invalid": status === "error" ? true : undefined, "data-appearance": appearance, "data-clearable": canClear, "data-labeled": Boolean(label), "data-floating": Boolean(open || selectedOptions.length > 0 || searchText), "data-status": status, tabIndex: disabled ? -1 : 0, ref: mergeRef, className: __wake_namespace_6["cx"].call(undefined, controlStyle, sizeMetricsMap[size], multiple ? sizeHeightFlexibleMap[size] : sizeHeightFixedMap[size], disabled && controlDisabledStyle, status === "error" && controlErrorStyle, status === "warning" && controlWarningStyle, materialFieldStyle), onClick: handleClick, onKeyDown: handleKeyDown, onFocus: onFocus, onBlur: onBlur, onPointerOver: (event) => {
190
+ return (0, __wake_namespace_0["jsxs"])("div", { className: __wake_namespace_6["cx"].call(undefined, __wake_namespace_9["fieldLayoutStyle"], designSystem === "md3" && __wake_namespace_9["md3LabelMotionStyle"]), "data-labeled": Boolean(label), "data-appearance": appearance, "data-floating": Boolean(open || selectedOptions.length > 0 || searchText), "data-open": open, "data-status": status, "data-disabled": disabled || undefined, children: [label && (0, __wake_namespace_0["jsxs"])("span", { "data-role": "select-label", children: [(0, __wake_namespace_0["jsx"])("span", { id: labelId, children: label }), required && (0, __wake_namespace_0["jsx"])("span", { "data-required-marker": "", "aria-hidden": "true", children: "*" })] }), (0, __wake_namespace_0["jsxs"])("div", { id: id, role: "combobox", "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, "aria-required": required || undefined, "aria-expanded": open, "aria-disabled": disabled, "aria-busy": loading || undefined, "aria-haspopup": "listbox", "aria-controls": open ? listboxId : undefined, "aria-activedescendant": activeDescendantId, "aria-invalid": status === "error" ? true : undefined, "data-appearance": appearance, "data-clearable": canClear, "data-labeled": Boolean(label), "data-floating": Boolean(open || selectedOptions.length > 0 || searchText), "data-status": status, tabIndex: disabled ? -1 : 0, ref: mergeRef, className: __wake_namespace_6["cx"].call(undefined, __wake_namespace_9["controlStyle"], sizeMetricsMap[size], multiple ? sizeHeightFlexibleMap[size] : sizeHeightFixedMap[size], disabled && __wake_namespace_9["controlDisabledStyle"], status === "error" && __wake_namespace_9["controlErrorStyle"], status === "warning" && __wake_namespace_9["controlWarningStyle"], __wake_namespace_9["fieldControlStyle"]), onClick: handleClick, onKeyDown: handleKeyDown, onFocus: onFocus, onBlur: onBlur, onPointerOver: (event) => {
207
191
  if (event.pointerType !== "touch") setHovered(true);
208
192
  }, onPointerOut: (event) => {
209
193
  if (!(event.relatedTarget instanceof Node) || !event.currentTarget.contains(event.relatedTarget)) {
210
194
  setHovered(false);
211
195
  }
212
- }, children: [label && (0, __wake_namespace_0["jsxs"])("span", { id: labelId, "data-role": "select-label", className: fieldLabelStyle, children: [label, required ? " *" : ""] }), (0, __wake_namespace_0["jsx"])("div", { "data-role": "select-value", className: valueWrapStyle, children: renderContent() }), (0, __wake_namespace_0["jsxs"])("span", { "data-role": "select-suffix", className: suffixWrapStyle, children: [loading ? (0, __wake_namespace_0["jsx"])("span", { "aria-hidden": "true", className: loadingIconStyle, children: (0, __wake_namespace_0["jsx"])(__wake_namespace_4["SpinIndicator"], {}) }) : null, (0, __wake_namespace_0["jsx"])(__wake_namespace_3 && __wake_namespace_3.__esModule ? __wake_namespace_3.default : __wake_namespace_3, { "data-role": showClear ? "select-clear" : "select-caret", className: actionStyle, type: "button", appearance: "text", shape: "circle", size: size, disabled: disabled, "aria-label": showClear ? "Clear" : open ? "Close options" : "Open options", "aria-expanded": showClear ? undefined : open, icon: showClear ? (0, __wake_namespace_0["jsx"])(ClearIcon, {}) : (0, __wake_namespace_0["jsx"])("span", { "aria-hidden": "true", className: __wake_namespace_6["cx"].call(undefined, caretStyle, open && caretOpenStyle), children: (0, __wake_namespace_0["jsx"])(CaretIcon, {}) }), onFocus: () => setActionFocused(true), onBlur: () => setActionFocused(false), onClick: (event) => {
196
+ }, children: [label && appearance === "outlined" && (0, __wake_namespace_0["jsx"])("fieldset", { "aria-hidden": "true", children: (0, __wake_namespace_0["jsxs"])("legend", { children: [label, required ? " *" : ""] }) }), (0, __wake_namespace_0["jsx"])("div", { "data-role": "select-value", className: __wake_namespace_9["valueWrapStyle"], children: renderContent() }), (0, __wake_namespace_0["jsxs"])("span", { "data-role": "select-suffix", className: __wake_namespace_9["suffixWrapStyle"], children: [loading ? (0, __wake_namespace_0["jsx"])("span", { "aria-hidden": "true", className: __wake_namespace_9["loadingIconStyle"], children: (0, __wake_namespace_0["jsx"])(__wake_namespace_4["SpinIndicator"], {}) }) : null, (0, __wake_namespace_0["jsx"])(__wake_namespace_3 && __wake_namespace_3.__esModule ? __wake_namespace_3.default : __wake_namespace_3, { "data-role": showClear ? "select-clear" : "select-caret", className: __wake_namespace_9["actionStyle"], type: "button", tabIndex: canClear ? 0 : -1, appearance: "text", shape: "circle", size: size === "small" ? "xs" : size === "large" ? "m" : "s", disabled: disabled, "aria-label": showClear ? messages.common.clear : open ? messages.select.closeOptions : messages.select.openOptions, "aria-expanded": showClear ? undefined : open, icon: showClear ? (0, __wake_namespace_0["jsx"])(ClearIcon, {}) : (0, __wake_namespace_0["jsx"])("span", { "aria-hidden": "true", className: __wake_namespace_6["cx"].call(undefined, __wake_namespace_9["caretStyle"], open && __wake_namespace_9["caretOpenStyle"]), children: (0, __wake_namespace_0["jsx"])(CaretIcon, {}) }), onFocus: () => setActionFocused(true), onBlur: () => setActionFocused(false), onClick: (event) => {
213
197
  if (showClear) handleClearClick(event); else {
214
198
  event.stopPropagation();
215
199
  handleClick();
216
200
  }
217
- }, onKeyDown: handleClearKeyDown })] })] });
201
+ }, onKeyDown: handleClearKeyDown })] })] })] });
218
202
  };
219
203
  const __wake_default_export = SelectInput;
220
204
  Object.defineProperty(exports, "default", { enumerable: true, get: function() {
@@ -0,0 +1,73 @@
1
+ Object.defineProperty(exports, "__esModule", { value: true });
2
+ require("@crab-dev/rc-button");
3
+ require("@crab-dev/rc-spin");
4
+ require("@crab-dev/rc-token-semantic");
5
+ require("./token.cjs");
6
+ const controlStyle = "rc-select-5e896678dc89";
7
+ Object.defineProperty(exports, "controlStyle", { enumerable: true, get: function() {
8
+ return controlStyle;
9
+ } });
10
+ const fieldControlStyle = "rc-select-29edc097b42b";
11
+ Object.defineProperty(exports, "fieldControlStyle", { enumerable: true, get: function() {
12
+ return fieldControlStyle;
13
+ } });
14
+ const fieldLayoutStyle = "rc-select-910e459fbbe0";
15
+ Object.defineProperty(exports, "fieldLayoutStyle", { enumerable: true, get: function() {
16
+ return fieldLayoutStyle;
17
+ } });
18
+ const md3LabelMotionStyle = "rc-select-1dddd2d985da";
19
+ Object.defineProperty(exports, "md3LabelMotionStyle", { enumerable: true, get: function() {
20
+ return md3LabelMotionStyle;
21
+ } });
22
+ const controlDisabledStyle = "rc-select-82fbf3807561";
23
+ Object.defineProperty(exports, "controlDisabledStyle", { enumerable: true, get: function() {
24
+ return controlDisabledStyle;
25
+ } });
26
+ const controlErrorStyle = "rc-select-6d2a034155e7";
27
+ Object.defineProperty(exports, "controlErrorStyle", { enumerable: true, get: function() {
28
+ return controlErrorStyle;
29
+ } });
30
+ const controlWarningStyle = "rc-select-36466465840d";
31
+ Object.defineProperty(exports, "controlWarningStyle", { enumerable: true, get: function() {
32
+ return controlWarningStyle;
33
+ } });
34
+ const valueWrapStyle = "rc-select-f0b8a9c0c369";
35
+ Object.defineProperty(exports, "valueWrapStyle", { enumerable: true, get: function() {
36
+ return valueWrapStyle;
37
+ } });
38
+ const singleValueStyle = "rc-select-bcd33343d38d";
39
+ Object.defineProperty(exports, "singleValueStyle", { enumerable: true, get: function() {
40
+ return singleValueStyle;
41
+ } });
42
+ const placeholderStyle = "rc-select-30719d992205";
43
+ Object.defineProperty(exports, "placeholderStyle", { enumerable: true, get: function() {
44
+ return placeholderStyle;
45
+ } });
46
+ const searchInputStyle = "rc-select-c91210473c12";
47
+ Object.defineProperty(exports, "searchInputStyle", { enumerable: true, get: function() {
48
+ return searchInputStyle;
49
+ } });
50
+ const caretStyle = "rc-select-8ca15a371517";
51
+ Object.defineProperty(exports, "caretStyle", { enumerable: true, get: function() {
52
+ return caretStyle;
53
+ } });
54
+ const caretOpenStyle = "rc-select-72a72768a0ef";
55
+ Object.defineProperty(exports, "caretOpenStyle", { enumerable: true, get: function() {
56
+ return caretOpenStyle;
57
+ } });
58
+ const tagLabelStyle = "rc-select-113a9493f812";
59
+ Object.defineProperty(exports, "tagLabelStyle", { enumerable: true, get: function() {
60
+ return tagLabelStyle;
61
+ } });
62
+ const suffixWrapStyle = "rc-select-5032f5885db7";
63
+ Object.defineProperty(exports, "suffixWrapStyle", { enumerable: true, get: function() {
64
+ return suffixWrapStyle;
65
+ } });
66
+ const actionStyle = "rc-select-aa51540f6a1a";
67
+ Object.defineProperty(exports, "actionStyle", { enumerable: true, get: function() {
68
+ return actionStyle;
69
+ } });
70
+ const loadingIconStyle = "rc-select-14f1c2e4ccd5";
71
+ Object.defineProperty(exports, "loadingIconStyle", { enumerable: true, get: function() {
72
+ return loadingIconStyle;
73
+ } });