@v-c/select 0.0.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.
Files changed (111) hide show
  1. package/LICENSE +21 -0
  2. package/dist/BaseSelect/Polite.cjs +37 -0
  3. package/dist/BaseSelect/Polite.d.ts +7 -0
  4. package/dist/BaseSelect/Polite.js +34 -0
  5. package/dist/BaseSelect/index.cjs +763 -0
  6. package/dist/BaseSelect/index.d.ts +133 -0
  7. package/dist/BaseSelect/index.js +759 -0
  8. package/dist/OptGroup.cjs +5 -0
  9. package/dist/OptGroup.d.ts +6 -0
  10. package/dist/OptGroup.js +4 -0
  11. package/dist/Option.cjs +5 -0
  12. package/dist/Option.d.ts +8 -0
  13. package/dist/Option.js +4 -0
  14. package/dist/OptionList.cjs +255 -0
  15. package/dist/OptionList.d.ts +17 -0
  16. package/dist/OptionList.js +249 -0
  17. package/dist/Select.cjs +833 -0
  18. package/dist/Select.d.ts +96 -0
  19. package/dist/Select.js +828 -0
  20. package/dist/SelectContext.cjs +11 -0
  21. package/dist/SelectContext.d.ts +32 -0
  22. package/dist/SelectContext.js +9 -0
  23. package/dist/SelectInput/Affix.cjs +16 -0
  24. package/dist/SelectInput/Affix.d.ts +2 -0
  25. package/dist/SelectInput/Affix.js +13 -0
  26. package/dist/SelectInput/Content/MultipleContent.cjs +142 -0
  27. package/dist/SelectInput/Content/MultipleContent.d.ts +3 -0
  28. package/dist/SelectInput/Content/MultipleContent.js +138 -0
  29. package/dist/SelectInput/Content/Placeholder.cjs +33 -0
  30. package/dist/SelectInput/Content/Placeholder.d.ts +5 -0
  31. package/dist/SelectInput/Content/Placeholder.js +30 -0
  32. package/dist/SelectInput/Content/SingleContent.cjs +80 -0
  33. package/dist/SelectInput/Content/SingleContent.d.ts +3 -0
  34. package/dist/SelectInput/Content/SingleContent.js +77 -0
  35. package/dist/SelectInput/Content/index.cjs +40 -0
  36. package/dist/SelectInput/Content/index.d.ts +6 -0
  37. package/dist/SelectInput/Content/index.js +36 -0
  38. package/dist/SelectInput/Input.cjs +176 -0
  39. package/dist/SelectInput/Input.d.ts +22 -0
  40. package/dist/SelectInput/Input.js +173 -0
  41. package/dist/SelectInput/context.cjs +11 -0
  42. package/dist/SelectInput/context.d.ts +5 -0
  43. package/dist/SelectInput/context.js +9 -0
  44. package/dist/SelectInput/index.cjs +330 -0
  45. package/dist/SelectInput/index.d.ts +44 -0
  46. package/dist/SelectInput/index.js +325 -0
  47. package/dist/SelectTrigger.cjs +189 -0
  48. package/dist/SelectTrigger.d.ts +26 -0
  49. package/dist/SelectTrigger.js +185 -0
  50. package/dist/TransBtn.cjs +69 -0
  51. package/dist/TransBtn.d.ts +22 -0
  52. package/dist/TransBtn.js +66 -0
  53. package/dist/_virtual/rolldown_runtime.cjs +21 -0
  54. package/dist/hooks/index.cjs +23 -0
  55. package/dist/hooks/index.d.ts +17 -0
  56. package/dist/hooks/index.js +12 -0
  57. package/dist/hooks/useAllowClear.cjs +17 -0
  58. package/dist/hooks/useAllowClear.d.ts +9 -0
  59. package/dist/hooks/useAllowClear.js +16 -0
  60. package/dist/hooks/useBaseProps.cjs +12 -0
  61. package/dist/hooks/useBaseProps.d.ts +10 -0
  62. package/dist/hooks/useBaseProps.js +9 -0
  63. package/dist/hooks/useCache.cjs +36 -0
  64. package/dist/hooks/useCache.d.ts +7 -0
  65. package/dist/hooks/useCache.js +34 -0
  66. package/dist/hooks/useComponents.cjs +15 -0
  67. package/dist/hooks/useComponents.d.ts +8 -0
  68. package/dist/hooks/useComponents.js +13 -0
  69. package/dist/hooks/useFilterOptions.cjs +39 -0
  70. package/dist/hooks/useFilterOptions.d.ts +3 -0
  71. package/dist/hooks/useFilterOptions.js +37 -0
  72. package/dist/hooks/useLock.cjs +26 -0
  73. package/dist/hooks/useLock.d.ts +1 -0
  74. package/dist/hooks/useLock.js +24 -0
  75. package/dist/hooks/useOpen.cjs +58 -0
  76. package/dist/hooks/useOpen.d.ts +19 -0
  77. package/dist/hooks/useOpen.js +56 -0
  78. package/dist/hooks/useOptions.cjs +38 -0
  79. package/dist/hooks/useOptions.d.ts +13 -0
  80. package/dist/hooks/useOptions.js +36 -0
  81. package/dist/hooks/useRefFunc.cjs +12 -0
  82. package/dist/hooks/useRefFunc.d.ts +6 -0
  83. package/dist/hooks/useRefFunc.js +10 -0
  84. package/dist/hooks/useSearchConfig.cjs +21 -0
  85. package/dist/hooks/useSearchConfig.d.ts +11 -0
  86. package/dist/hooks/useSearchConfig.js +19 -0
  87. package/dist/hooks/useSelectTriggerControl.cjs +18 -0
  88. package/dist/hooks/useSelectTriggerControl.d.ts +2 -0
  89. package/dist/hooks/useSelectTriggerControl.js +16 -0
  90. package/dist/index.cjs +16 -0
  91. package/dist/index.d.ts +10 -0
  92. package/dist/index.js +8 -0
  93. package/dist/interface.cjs +0 -0
  94. package/dist/interface.d.ts +23 -0
  95. package/dist/interface.js +0 -0
  96. package/dist/utils/commonUtil.cjs +37 -0
  97. package/dist/utils/commonUtil.d.ts +12 -0
  98. package/dist/utils/commonUtil.js +30 -0
  99. package/dist/utils/keyUtil.cjs +36 -0
  100. package/dist/utils/keyUtil.d.ts +2 -0
  101. package/dist/utils/keyUtil.js +34 -0
  102. package/dist/utils/legacyUtil.cjs +32 -0
  103. package/dist/utils/legacyUtil.d.ts +3 -0
  104. package/dist/utils/legacyUtil.js +31 -0
  105. package/dist/utils/platformUtil.cjs +5 -0
  106. package/dist/utils/platformUtil.d.ts +1 -0
  107. package/dist/utils/platformUtil.js +5 -0
  108. package/dist/utils/valueUtil.cjs +79 -0
  109. package/dist/utils/valueUtil.d.ts +18 -0
  110. package/dist/utils/valueUtil.js +75 -0
  111. package/package.json +43 -0
@@ -0,0 +1,330 @@
1
+ Object.defineProperty(exports, "__esModule", { value: true });
2
+ const require_rolldown_runtime = require("../_virtual/rolldown_runtime.cjs");
3
+ const require_useBaseProps = require("../hooks/useBaseProps.cjs");
4
+ const require_keyUtil = require("../utils/keyUtil.cjs");
5
+ const require_Affix = require("./Affix.cjs");
6
+ const require_context = require("./context.cjs");
7
+ const require_index = require("./Content/index.cjs");
8
+ let vue = require("vue");
9
+ let __v_c_util = require("@v-c/util");
10
+ let __v_c_util_dist_KeyCode = require("@v-c/util/dist/KeyCode");
11
+ __v_c_util_dist_KeyCode = require_rolldown_runtime.__toESM(__v_c_util_dist_KeyCode);
12
+ let __v_c_util_dist_omit = require("@v-c/util/dist/omit");
13
+ __v_c_util_dist_omit = require_rolldown_runtime.__toESM(__v_c_util_dist_omit);
14
+ let __v_c_util_dist_Dom_findDOMNode = require("@v-c/util/dist/Dom/findDOMNode");
15
+ var DEFAULT_OMIT_PROPS = [
16
+ "value",
17
+ "onChange",
18
+ "removeIcon",
19
+ "placeholder",
20
+ "maxTagCount",
21
+ "maxTagTextLength",
22
+ "maxTagPlaceholder",
23
+ "choiceTransitionName",
24
+ "onInputKeyDown",
25
+ "onPopupScroll",
26
+ "tabIndex",
27
+ "activeValue",
28
+ "onSelectorRemove",
29
+ "focused"
30
+ ];
31
+ var SelectInput = /* @__PURE__ */ (0, vue.defineComponent)((props, { attrs, expose, slots }) => {
32
+ const baseProps = require_useBaseProps.default();
33
+ const rootRef = (0, vue.shallowRef)();
34
+ const inputRef = (0, vue.shallowRef)();
35
+ const prefixCls = (0, vue.computed)(() => props.prefixCls);
36
+ const className = (0, vue.computed)(() => props.className);
37
+ const style = (0, vue.computed)(() => props.style);
38
+ const prefix = (0, vue.computed)(() => props.prefix);
39
+ const suffix = (0, vue.computed)(() => props.suffix);
40
+ const clearIcon = (0, vue.computed)(() => props.clearIcon);
41
+ const multiple = (0, vue.computed)(() => props.multiple);
42
+ const mode = (0, vue.computed)(() => props.mode);
43
+ const onClearMouseDown = (0, vue.computed)(() => props.onClearMouseDown);
44
+ const onInputKeyDown = (0, vue.computed)(() => props.onInputKeyDown);
45
+ const components = (0, vue.computed)(() => props.components);
46
+ const triggerOpen = (0, vue.computed)(() => baseProps.value?.triggerOpen ?? false);
47
+ const toggleOpen = (0, vue.computed)(() => baseProps.value?.toggleOpen);
48
+ const showSearch = (0, vue.computed)(() => baseProps.value?.showSearch ?? false);
49
+ const disabled = (0, vue.computed)(() => baseProps.value?.disabled ?? false);
50
+ const loading = (0, vue.computed)(() => baseProps.value?.loading ?? false);
51
+ const classNamesConfig = (0, vue.computed)(() => baseProps.value?.classNames);
52
+ const stylesConfig = (0, vue.computed)(() => baseProps.value?.styles);
53
+ const onInternalInputKeyDown = (event) => {
54
+ const { keyCode } = event;
55
+ const isTextAreaElement = inputRef.value?.input instanceof HTMLTextAreaElement;
56
+ if (!isTextAreaElement && triggerOpen.value && (keyCode === __v_c_util_dist_KeyCode.default.UP || keyCode === __v_c_util_dist_KeyCode.default.DOWN)) event.preventDefault();
57
+ if (onInputKeyDown.value) onInputKeyDown.value(event);
58
+ if (isTextAreaElement && !triggerOpen.value && [
59
+ __v_c_util_dist_KeyCode.default.UP,
60
+ __v_c_util_dist_KeyCode.default.DOWN,
61
+ __v_c_util_dist_KeyCode.default.LEFT,
62
+ __v_c_util_dist_KeyCode.default.RIGHT
63
+ ].includes(keyCode)) return;
64
+ if (require_keyUtil.isValidateOpenKey(keyCode)) toggleOpen.value?.(true);
65
+ };
66
+ expose({
67
+ focus: (options) => {
68
+ (inputRef.value?.input || rootRef.value)?.focus?.(options);
69
+ },
70
+ blur: () => {
71
+ (inputRef.value?.input || rootRef.value)?.blur?.();
72
+ },
73
+ nativeElement: rootRef
74
+ });
75
+ const onInternalMouseDown = (event) => {
76
+ if (!disabled.value) {
77
+ if (event.target !== (0, __v_c_util_dist_Dom_findDOMNode.getDOM)(inputRef.value?.input)) event.preventDefault();
78
+ const shouldPreventClose = triggerOpen.value && !multiple.value && (mode.value === "combobox" || showSearch.value);
79
+ if (!event._select_lazy) {
80
+ inputRef.value?.input?.focus();
81
+ if (!shouldPreventClose) toggleOpen.value?.();
82
+ } else if (triggerOpen.value) toggleOpen.value?.(false);
83
+ }
84
+ const onMouseDown = attrs.onMousedown;
85
+ onMouseDown?.(event);
86
+ };
87
+ const onInternalBlur = (event) => {
88
+ toggleOpen.value?.(false);
89
+ const onBlur = attrs.onBlur;
90
+ onBlur?.(event);
91
+ };
92
+ require_context.useSelectInputProvider((0, vue.computed)(() => ({
93
+ ...props,
94
+ onInputKeyDown: onInternalInputKeyDown
95
+ })));
96
+ return () => {
97
+ const RootComponent = components.value?.root;
98
+ const domProps = (0, __v_c_util_dist_omit.default)({ ...attrs }, DEFAULT_OMIT_PROPS);
99
+ if (RootComponent) {
100
+ if ((0, vue.isVNode)(RootComponent)) return (0, vue.createVNode)(RootComponent, {
101
+ ...domProps,
102
+ ref: rootRef
103
+ });
104
+ return (0, vue.createVNode)(RootComponent, (0, vue.mergeProps)(domProps, { "ref": rootRef }), null);
105
+ }
106
+ return (0, vue.createVNode)("div", (0, vue.mergeProps)(domProps, {
107
+ "ref": rootRef,
108
+ "class": className.value,
109
+ "style": style.value,
110
+ "onMousedown": onInternalMouseDown,
111
+ "onBlur": onInternalBlur
112
+ }), [
113
+ (0, vue.createVNode)(require_Affix.default, {
114
+ "class": (0, __v_c_util.clsx)(`${prefixCls.value}-prefix`, classNamesConfig.value?.prefix),
115
+ "style": stylesConfig.value?.prefix
116
+ }, { default: () => [prefix.value] }),
117
+ (0, vue.createVNode)(require_index.default, { "ref": inputRef }, null),
118
+ (0, vue.createVNode)(require_Affix.default, {
119
+ "class": (0, __v_c_util.clsx)(`${prefixCls.value}-suffix`, { [`${prefixCls.value}-suffix-loading`]: loading.value }, classNamesConfig.value?.suffix),
120
+ "style": stylesConfig.value?.suffix
121
+ }, { default: () => [suffix.value] }),
122
+ clearIcon.value && (0, vue.createVNode)(require_Affix.default, {
123
+ "class": (0, __v_c_util.clsx)(`${prefixCls.value}-clear`, classNamesConfig.value?.clear),
124
+ "style": stylesConfig.value?.clear,
125
+ "onMousedown": (e) => {
126
+ e._select_lazy = true;
127
+ onClearMouseDown.value?.(e);
128
+ }
129
+ }, { default: () => [clearIcon.value] }),
130
+ slots.default?.()
131
+ ]);
132
+ };
133
+ }, {
134
+ props: {
135
+ prefixCls: {
136
+ type: String,
137
+ required: true,
138
+ default: void 0
139
+ },
140
+ prefix: {
141
+ type: [
142
+ Object,
143
+ Function,
144
+ String,
145
+ Number,
146
+ null,
147
+ Boolean,
148
+ Array
149
+ ],
150
+ required: false,
151
+ default: void 0
152
+ },
153
+ suffix: {
154
+ type: [
155
+ Object,
156
+ Function,
157
+ String,
158
+ Number,
159
+ null,
160
+ Boolean,
161
+ Array
162
+ ],
163
+ required: false,
164
+ default: void 0
165
+ },
166
+ clearIcon: {
167
+ type: [
168
+ Object,
169
+ Function,
170
+ String,
171
+ Number,
172
+ null,
173
+ Boolean,
174
+ Array
175
+ ],
176
+ required: false,
177
+ default: void 0
178
+ },
179
+ removeIcon: {
180
+ type: [
181
+ Object,
182
+ Function,
183
+ String,
184
+ Number,
185
+ null,
186
+ Boolean,
187
+ Array
188
+ ],
189
+ required: false,
190
+ default: void 0
191
+ },
192
+ multiple: {
193
+ type: Boolean,
194
+ required: false,
195
+ default: void 0
196
+ },
197
+ displayValues: {
198
+ type: Array,
199
+ required: true,
200
+ default: void 0
201
+ },
202
+ placeholder: {
203
+ type: [
204
+ Object,
205
+ Function,
206
+ String,
207
+ Number,
208
+ null,
209
+ Boolean,
210
+ Array
211
+ ],
212
+ required: false,
213
+ default: void 0
214
+ },
215
+ searchValue: {
216
+ type: String,
217
+ required: false,
218
+ default: void 0
219
+ },
220
+ activeValue: {
221
+ type: String,
222
+ required: false,
223
+ default: void 0
224
+ },
225
+ mode: {
226
+ type: String,
227
+ required: false,
228
+ default: void 0
229
+ },
230
+ autoClearSearchValue: {
231
+ type: Boolean,
232
+ required: false,
233
+ default: void 0
234
+ },
235
+ onSearch: {
236
+ type: Function,
237
+ required: false,
238
+ default: void 0
239
+ },
240
+ onSearchSubmit: {
241
+ type: Function,
242
+ required: false,
243
+ default: void 0
244
+ },
245
+ onInputBlur: {
246
+ type: Function,
247
+ required: false,
248
+ default: void 0
249
+ },
250
+ onClearMouseDown: {
251
+ type: Function,
252
+ required: false,
253
+ default: void 0
254
+ },
255
+ onInputKeyDown: {
256
+ type: Function,
257
+ required: false,
258
+ default: void 0
259
+ },
260
+ onSelectorRemove: {
261
+ type: Function,
262
+ required: false,
263
+ default: void 0
264
+ },
265
+ maxLength: {
266
+ type: Number,
267
+ required: false,
268
+ default: void 0
269
+ },
270
+ autoFocus: {
271
+ type: Boolean,
272
+ required: false,
273
+ default: void 0
274
+ },
275
+ tokenWithEnter: {
276
+ type: Boolean,
277
+ required: false,
278
+ default: void 0
279
+ },
280
+ className: {
281
+ type: String,
282
+ required: false,
283
+ default: void 0
284
+ },
285
+ style: {
286
+ type: Object,
287
+ required: false,
288
+ default: void 0
289
+ },
290
+ focused: {
291
+ type: Boolean,
292
+ required: false,
293
+ default: void 0
294
+ },
295
+ components: {
296
+ type: Object,
297
+ required: true,
298
+ default: void 0
299
+ },
300
+ onFocus: {
301
+ type: Function,
302
+ required: false,
303
+ default: void 0
304
+ },
305
+ onBlur: {
306
+ type: Function,
307
+ required: false,
308
+ default: void 0
309
+ },
310
+ onKeyDown: {
311
+ type: Function,
312
+ required: false,
313
+ default: void 0
314
+ },
315
+ onKeyUp: {
316
+ type: Function,
317
+ required: false,
318
+ default: void 0
319
+ },
320
+ onMouseDown: {
321
+ type: Function,
322
+ required: false,
323
+ default: void 0
324
+ }
325
+ },
326
+ name: "SelectInput",
327
+ inheritAttrs: false
328
+ });
329
+ var SelectInput_default = SelectInput;
330
+ exports.default = SelectInput_default;
@@ -0,0 +1,44 @@
1
+ import { VueNode } from '@v-c/util/dist/type';
2
+ import { CSSProperties } from 'vue';
3
+ import { ComponentsConfig } from '../hooks';
4
+ import { DisplayValueType, Mode, RenderNode } from '../interface';
5
+ export interface SelectInputRef {
6
+ focus: (options?: FocusOptions) => void;
7
+ blur: () => void;
8
+ nativeElement: HTMLDivElement;
9
+ }
10
+ export interface SelectInputProps {
11
+ prefixCls: string;
12
+ prefix?: VueNode;
13
+ suffix?: VueNode;
14
+ clearIcon?: VueNode;
15
+ removeIcon?: RenderNode;
16
+ multiple?: boolean;
17
+ displayValues: DisplayValueType[];
18
+ placeholder?: VueNode;
19
+ searchValue?: string;
20
+ activeValue?: string;
21
+ mode?: Mode;
22
+ autoClearSearchValue?: boolean;
23
+ onSearch?: (searchText: string, fromTyping: boolean, isCompositing: boolean) => void;
24
+ onSearchSubmit?: (searchText: string) => void;
25
+ onInputBlur?: () => void;
26
+ onClearMouseDown?: (event: MouseEvent) => void;
27
+ onInputKeyDown?: (event: KeyboardEvent) => void;
28
+ onSelectorRemove?: (value: DisplayValueType) => void;
29
+ maxLength?: number;
30
+ autoFocus?: boolean;
31
+ /** Check if `tokenSeparators` contains `\n` or `\r\n` */
32
+ tokenWithEnter?: boolean;
33
+ className?: string;
34
+ style?: CSSProperties;
35
+ focused?: boolean;
36
+ components: ComponentsConfig;
37
+ onFocus?: (event: FocusEvent) => void;
38
+ onBlur?: (event: FocusEvent) => void;
39
+ onKeyDown?: (event: KeyboardEvent) => void;
40
+ onKeyUp?: (event: KeyboardEvent) => void;
41
+ onMouseDown?: (event: MouseEvent) => void;
42
+ }
43
+ declare const SelectInput: import('vue').DefineSetupFnComponent<SelectInputProps, {}, {}, SelectInputProps & {}, import('vue').PublicProps>;
44
+ export default SelectInput;
@@ -0,0 +1,325 @@
1
+ import useBaseProps from "../hooks/useBaseProps.js";
2
+ import { isValidateOpenKey } from "../utils/keyUtil.js";
3
+ import Affix_default from "./Affix.js";
4
+ import { useSelectInputProvider } from "./context.js";
5
+ import Content_default from "./Content/index.js";
6
+ import { computed, createVNode, defineComponent, isVNode, mergeProps, shallowRef } from "vue";
7
+ import { clsx } from "@v-c/util";
8
+ import KeyCode from "@v-c/util/dist/KeyCode";
9
+ import omit from "@v-c/util/dist/omit";
10
+ import { getDOM } from "@v-c/util/dist/Dom/findDOMNode";
11
+ var DEFAULT_OMIT_PROPS = [
12
+ "value",
13
+ "onChange",
14
+ "removeIcon",
15
+ "placeholder",
16
+ "maxTagCount",
17
+ "maxTagTextLength",
18
+ "maxTagPlaceholder",
19
+ "choiceTransitionName",
20
+ "onInputKeyDown",
21
+ "onPopupScroll",
22
+ "tabIndex",
23
+ "activeValue",
24
+ "onSelectorRemove",
25
+ "focused"
26
+ ];
27
+ var SelectInput_default = /* @__PURE__ */ defineComponent((props, { attrs, expose, slots }) => {
28
+ const baseProps = useBaseProps();
29
+ const rootRef = shallowRef();
30
+ const inputRef = shallowRef();
31
+ const prefixCls = computed(() => props.prefixCls);
32
+ const className = computed(() => props.className);
33
+ const style = computed(() => props.style);
34
+ const prefix = computed(() => props.prefix);
35
+ const suffix = computed(() => props.suffix);
36
+ const clearIcon = computed(() => props.clearIcon);
37
+ const multiple = computed(() => props.multiple);
38
+ const mode = computed(() => props.mode);
39
+ const onClearMouseDown = computed(() => props.onClearMouseDown);
40
+ const onInputKeyDown = computed(() => props.onInputKeyDown);
41
+ const components = computed(() => props.components);
42
+ const triggerOpen = computed(() => baseProps.value?.triggerOpen ?? false);
43
+ const toggleOpen = computed(() => baseProps.value?.toggleOpen);
44
+ const showSearch = computed(() => baseProps.value?.showSearch ?? false);
45
+ const disabled = computed(() => baseProps.value?.disabled ?? false);
46
+ const loading = computed(() => baseProps.value?.loading ?? false);
47
+ const classNamesConfig = computed(() => baseProps.value?.classNames);
48
+ const stylesConfig = computed(() => baseProps.value?.styles);
49
+ const onInternalInputKeyDown = (event) => {
50
+ const { keyCode } = event;
51
+ const isTextAreaElement = inputRef.value?.input instanceof HTMLTextAreaElement;
52
+ if (!isTextAreaElement && triggerOpen.value && (keyCode === KeyCode.UP || keyCode === KeyCode.DOWN)) event.preventDefault();
53
+ if (onInputKeyDown.value) onInputKeyDown.value(event);
54
+ if (isTextAreaElement && !triggerOpen.value && [
55
+ KeyCode.UP,
56
+ KeyCode.DOWN,
57
+ KeyCode.LEFT,
58
+ KeyCode.RIGHT
59
+ ].includes(keyCode)) return;
60
+ if (isValidateOpenKey(keyCode)) toggleOpen.value?.(true);
61
+ };
62
+ expose({
63
+ focus: (options) => {
64
+ (inputRef.value?.input || rootRef.value)?.focus?.(options);
65
+ },
66
+ blur: () => {
67
+ (inputRef.value?.input || rootRef.value)?.blur?.();
68
+ },
69
+ nativeElement: rootRef
70
+ });
71
+ const onInternalMouseDown = (event) => {
72
+ if (!disabled.value) {
73
+ if (event.target !== getDOM(inputRef.value?.input)) event.preventDefault();
74
+ const shouldPreventClose = triggerOpen.value && !multiple.value && (mode.value === "combobox" || showSearch.value);
75
+ if (!event._select_lazy) {
76
+ inputRef.value?.input?.focus();
77
+ if (!shouldPreventClose) toggleOpen.value?.();
78
+ } else if (triggerOpen.value) toggleOpen.value?.(false);
79
+ }
80
+ const onMouseDown = attrs.onMousedown;
81
+ onMouseDown?.(event);
82
+ };
83
+ const onInternalBlur = (event) => {
84
+ toggleOpen.value?.(false);
85
+ const onBlur = attrs.onBlur;
86
+ onBlur?.(event);
87
+ };
88
+ useSelectInputProvider(computed(() => ({
89
+ ...props,
90
+ onInputKeyDown: onInternalInputKeyDown
91
+ })));
92
+ return () => {
93
+ const RootComponent = components.value?.root;
94
+ const domProps = omit({ ...attrs }, DEFAULT_OMIT_PROPS);
95
+ if (RootComponent) {
96
+ if (isVNode(RootComponent)) return createVNode(RootComponent, {
97
+ ...domProps,
98
+ ref: rootRef
99
+ });
100
+ return createVNode(RootComponent, mergeProps(domProps, { "ref": rootRef }), null);
101
+ }
102
+ return createVNode("div", mergeProps(domProps, {
103
+ "ref": rootRef,
104
+ "class": className.value,
105
+ "style": style.value,
106
+ "onMousedown": onInternalMouseDown,
107
+ "onBlur": onInternalBlur
108
+ }), [
109
+ createVNode(Affix_default, {
110
+ "class": clsx(`${prefixCls.value}-prefix`, classNamesConfig.value?.prefix),
111
+ "style": stylesConfig.value?.prefix
112
+ }, { default: () => [prefix.value] }),
113
+ createVNode(Content_default, { "ref": inputRef }, null),
114
+ createVNode(Affix_default, {
115
+ "class": clsx(`${prefixCls.value}-suffix`, { [`${prefixCls.value}-suffix-loading`]: loading.value }, classNamesConfig.value?.suffix),
116
+ "style": stylesConfig.value?.suffix
117
+ }, { default: () => [suffix.value] }),
118
+ clearIcon.value && createVNode(Affix_default, {
119
+ "class": clsx(`${prefixCls.value}-clear`, classNamesConfig.value?.clear),
120
+ "style": stylesConfig.value?.clear,
121
+ "onMousedown": (e) => {
122
+ e._select_lazy = true;
123
+ onClearMouseDown.value?.(e);
124
+ }
125
+ }, { default: () => [clearIcon.value] }),
126
+ slots.default?.()
127
+ ]);
128
+ };
129
+ }, {
130
+ props: {
131
+ prefixCls: {
132
+ type: String,
133
+ required: true,
134
+ default: void 0
135
+ },
136
+ prefix: {
137
+ type: [
138
+ Object,
139
+ Function,
140
+ String,
141
+ Number,
142
+ null,
143
+ Boolean,
144
+ Array
145
+ ],
146
+ required: false,
147
+ default: void 0
148
+ },
149
+ suffix: {
150
+ type: [
151
+ Object,
152
+ Function,
153
+ String,
154
+ Number,
155
+ null,
156
+ Boolean,
157
+ Array
158
+ ],
159
+ required: false,
160
+ default: void 0
161
+ },
162
+ clearIcon: {
163
+ type: [
164
+ Object,
165
+ Function,
166
+ String,
167
+ Number,
168
+ null,
169
+ Boolean,
170
+ Array
171
+ ],
172
+ required: false,
173
+ default: void 0
174
+ },
175
+ removeIcon: {
176
+ type: [
177
+ Object,
178
+ Function,
179
+ String,
180
+ Number,
181
+ null,
182
+ Boolean,
183
+ Array
184
+ ],
185
+ required: false,
186
+ default: void 0
187
+ },
188
+ multiple: {
189
+ type: Boolean,
190
+ required: false,
191
+ default: void 0
192
+ },
193
+ displayValues: {
194
+ type: Array,
195
+ required: true,
196
+ default: void 0
197
+ },
198
+ placeholder: {
199
+ type: [
200
+ Object,
201
+ Function,
202
+ String,
203
+ Number,
204
+ null,
205
+ Boolean,
206
+ Array
207
+ ],
208
+ required: false,
209
+ default: void 0
210
+ },
211
+ searchValue: {
212
+ type: String,
213
+ required: false,
214
+ default: void 0
215
+ },
216
+ activeValue: {
217
+ type: String,
218
+ required: false,
219
+ default: void 0
220
+ },
221
+ mode: {
222
+ type: String,
223
+ required: false,
224
+ default: void 0
225
+ },
226
+ autoClearSearchValue: {
227
+ type: Boolean,
228
+ required: false,
229
+ default: void 0
230
+ },
231
+ onSearch: {
232
+ type: Function,
233
+ required: false,
234
+ default: void 0
235
+ },
236
+ onSearchSubmit: {
237
+ type: Function,
238
+ required: false,
239
+ default: void 0
240
+ },
241
+ onInputBlur: {
242
+ type: Function,
243
+ required: false,
244
+ default: void 0
245
+ },
246
+ onClearMouseDown: {
247
+ type: Function,
248
+ required: false,
249
+ default: void 0
250
+ },
251
+ onInputKeyDown: {
252
+ type: Function,
253
+ required: false,
254
+ default: void 0
255
+ },
256
+ onSelectorRemove: {
257
+ type: Function,
258
+ required: false,
259
+ default: void 0
260
+ },
261
+ maxLength: {
262
+ type: Number,
263
+ required: false,
264
+ default: void 0
265
+ },
266
+ autoFocus: {
267
+ type: Boolean,
268
+ required: false,
269
+ default: void 0
270
+ },
271
+ tokenWithEnter: {
272
+ type: Boolean,
273
+ required: false,
274
+ default: void 0
275
+ },
276
+ className: {
277
+ type: String,
278
+ required: false,
279
+ default: void 0
280
+ },
281
+ style: {
282
+ type: Object,
283
+ required: false,
284
+ default: void 0
285
+ },
286
+ focused: {
287
+ type: Boolean,
288
+ required: false,
289
+ default: void 0
290
+ },
291
+ components: {
292
+ type: Object,
293
+ required: true,
294
+ default: void 0
295
+ },
296
+ onFocus: {
297
+ type: Function,
298
+ required: false,
299
+ default: void 0
300
+ },
301
+ onBlur: {
302
+ type: Function,
303
+ required: false,
304
+ default: void 0
305
+ },
306
+ onKeyDown: {
307
+ type: Function,
308
+ required: false,
309
+ default: void 0
310
+ },
311
+ onKeyUp: {
312
+ type: Function,
313
+ required: false,
314
+ default: void 0
315
+ },
316
+ onMouseDown: {
317
+ type: Function,
318
+ required: false,
319
+ default: void 0
320
+ }
321
+ },
322
+ name: "SelectInput",
323
+ inheritAttrs: false
324
+ });
325
+ export { SelectInput_default as default };