@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,11 @@
1
+ const require_rolldown_runtime = require("./_virtual/rolldown_runtime.cjs");
2
+ let vue = require("vue");
3
+ var SelectContextKey = Symbol("SelectContext");
4
+ function useSelectProvider(value) {
5
+ (0, vue.provide)(SelectContextKey, value);
6
+ }
7
+ function useSelectContext() {
8
+ return (0, vue.inject)(SelectContextKey, (0, vue.ref)(null));
9
+ }
10
+ exports.useSelectContext = useSelectContext;
11
+ exports.useSelectProvider = useSelectProvider;
@@ -0,0 +1,32 @@
1
+ import { CSSProperties, Ref } from 'vue';
2
+ import { FlattenOptionData, RawValueType, RenderNode } from './interface';
3
+ import { BaseOptionType, FieldNames, OnActiveValue, OnInternalSelect, PopupSemantic, SelectProps, SemanticName } from './Select';
4
+ /**
5
+ * SelectContext is only used for Select. BaseSelect should not consume this context.
6
+ */
7
+ export interface SelectContextProps {
8
+ classNames?: Partial<Record<SemanticName, string>> & {
9
+ popup?: Partial<Record<PopupSemantic, string>>;
10
+ };
11
+ styles?: Partial<Record<SemanticName, CSSProperties>> & {
12
+ popup?: Partial<Record<PopupSemantic, CSSProperties>>;
13
+ };
14
+ options: BaseOptionType[];
15
+ optionRender?: SelectProps['optionRender'];
16
+ flattenOptions: FlattenOptionData[];
17
+ onActiveValue: OnActiveValue;
18
+ defaultActiveFirstOption?: boolean;
19
+ onSelect: OnInternalSelect;
20
+ menuItemSelectedIcon?: RenderNode;
21
+ rawValues: Set<RawValueType>;
22
+ fieldNames?: FieldNames;
23
+ virtual?: boolean;
24
+ direction?: 'ltr' | 'rtl';
25
+ listHeight?: number;
26
+ listItemHeight?: number;
27
+ childrenAsData?: boolean;
28
+ maxCount?: number;
29
+ }
30
+ declare function useSelectProvider(value: Ref<SelectContextProps>): void;
31
+ declare function useSelectContext(): Ref<SelectContextProps | null>;
32
+ export { useSelectContext, useSelectProvider, };
@@ -0,0 +1,9 @@
1
+ import { inject, provide, ref } from "vue";
2
+ var SelectContextKey = Symbol("SelectContext");
3
+ function useSelectProvider(value) {
4
+ provide(SelectContextKey, value);
5
+ }
6
+ function useSelectContext() {
7
+ return inject(SelectContextKey, ref(null));
8
+ }
9
+ export { useSelectContext, useSelectProvider };
@@ -0,0 +1,16 @@
1
+ Object.defineProperty(exports, "__esModule", { value: true });
2
+ const require_rolldown_runtime = require("../_virtual/rolldown_runtime.cjs");
3
+ let vue = require("vue");
4
+ let __v_c_util_dist_props_util = require("@v-c/util/dist/props-util");
5
+ var Affix = /* @__PURE__ */ (0, vue.defineComponent)((_, { attrs, slots }) => {
6
+ return () => {
7
+ const children = (0, __v_c_util_dist_props_util.filterEmpty)(slots?.default?.() ?? []);
8
+ if (children.length < 1) return null;
9
+ return (0, vue.createVNode)("div", attrs, [children]);
10
+ };
11
+ }, {
12
+ name: "Affix",
13
+ inheritAttrs: false
14
+ });
15
+ var Affix_default = Affix;
16
+ exports.default = Affix_default;
@@ -0,0 +1,2 @@
1
+ declare const Affix: import('vue').DefineSetupFnComponent<Record<string, any>, {}, {}, Record<string, any> & {}, import('vue').PublicProps>;
2
+ export default Affix;
@@ -0,0 +1,13 @@
1
+ import { createVNode, defineComponent } from "vue";
2
+ import { filterEmpty } from "@v-c/util/dist/props-util";
3
+ var Affix_default = /* @__PURE__ */ defineComponent((_, { attrs, slots }) => {
4
+ return () => {
5
+ const children = filterEmpty(slots?.default?.() ?? []);
6
+ if (children.length < 1) return null;
7
+ return createVNode("div", attrs, [children]);
8
+ };
9
+ }, {
10
+ name: "Affix",
11
+ inheritAttrs: false
12
+ });
13
+ export { Affix_default as default };
@@ -0,0 +1,142 @@
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_TransBtn = require("../../TransBtn.cjs");
5
+ const require_context = require("../context.cjs");
6
+ const require_commonUtil = require("../../utils/commonUtil.cjs");
7
+ const require_Input = require("../Input.cjs");
8
+ const require_Placeholder = require("./Placeholder.cjs");
9
+ let vue = require("vue");
10
+ let __v_c_util = require("@v-c/util");
11
+ let __v_c_overflow = require("@v-c/overflow");
12
+ __v_c_overflow = require_rolldown_runtime.__toESM(__v_c_overflow);
13
+ function itemKey(value) {
14
+ return value.key ?? value.value ?? "";
15
+ }
16
+ function onPreventMouseDown(event) {
17
+ event.preventDefault();
18
+ event.stopPropagation();
19
+ }
20
+ var MultipleContent = /* @__PURE__ */ (0, vue.defineComponent)((props, { expose }) => {
21
+ const selectInputContext = require_context.useSelectInputContext();
22
+ const baseProps = require_useBaseProps.default();
23
+ const inputRef = (0, vue.shallowRef)();
24
+ const prefixCls = (0, vue.computed)(() => selectInputContext.value?.prefixCls ?? "");
25
+ const displayValues = (0, vue.computed)(() => selectInputContext.value?.displayValues ?? []);
26
+ const searchValue = (0, vue.computed)(() => selectInputContext.value?.searchValue ?? "");
27
+ const mode = (0, vue.computed)(() => selectInputContext.value?.mode);
28
+ const removeIconFromContext = (0, vue.computed)(() => selectInputContext.value?.removeIcon);
29
+ const onSelectorRemove = (0, vue.computed)(() => selectInputContext.value?.onSelectorRemove);
30
+ const disabled = (0, vue.computed)(() => baseProps.value?.disabled ?? false);
31
+ const showSearch = (0, vue.computed)(() => baseProps.value?.showSearch ?? false);
32
+ const triggerOpen = (0, vue.computed)(() => baseProps.value?.triggerOpen ?? false);
33
+ const toggleOpen = (0, vue.computed)(() => baseProps.value?.toggleOpen);
34
+ const autoClearSearchValue = (0, vue.computed)(() => baseProps.value?.autoClearSearchValue);
35
+ const tagRenderFromContext = (0, vue.computed)(() => baseProps.value?.tagRender);
36
+ const maxTagPlaceholderFromContext = (0, vue.computed)(() => baseProps.value?.maxTagPlaceholder);
37
+ const maxTagTextLength = (0, vue.computed)(() => baseProps.value?.maxTagTextLength);
38
+ const maxTagCount = (0, vue.computed)(() => baseProps.value?.maxTagCount);
39
+ const classNamesConfig = (0, vue.computed)(() => baseProps.value?.classNames);
40
+ const stylesConfig = (0, vue.computed)(() => baseProps.value?.styles);
41
+ const selectionItemPrefixCls = (0, vue.computed)(() => `${prefixCls.value}-selection-item`);
42
+ const computedSearchValue = (0, vue.computed)(() => {
43
+ if (!triggerOpen.value && mode.value === "multiple" && autoClearSearchValue.value !== false) return "";
44
+ return searchValue.value;
45
+ });
46
+ const inputValue = (0, vue.computed)(() => showSearch.value ? computedSearchValue.value || "" : "");
47
+ const inputEditable = (0, vue.computed)(() => showSearch.value && !disabled.value);
48
+ const removeIcon = (0, vue.computed)(() => removeIconFromContext.value ?? "×");
49
+ const maxTagPlaceholder = (0, vue.computed)(() => maxTagPlaceholderFromContext.value ?? ((omittedValues) => `+ ${omittedValues.length} ...`));
50
+ const tagRender = (0, vue.computed)(() => tagRenderFromContext.value);
51
+ const onToggleOpen = (newOpen) => {
52
+ toggleOpen.value?.(newOpen);
53
+ };
54
+ const onRemove = (value) => {
55
+ onSelectorRemove.value?.(value);
56
+ };
57
+ expose({ input: (0, vue.computed)(() => inputRef.value?.input) });
58
+ const defaultRenderSelector = (item, content, itemDisabled, closable, onClose) => (0, vue.createVNode)("span", {
59
+ "title": require_commonUtil.getTitle(item),
60
+ "class": (0, __v_c_util.clsx)(selectionItemPrefixCls.value, { [`${selectionItemPrefixCls.value}-disabled`]: itemDisabled }, classNamesConfig.value?.item),
61
+ "style": stylesConfig.value?.item
62
+ }, [(0, vue.createVNode)("span", {
63
+ "class": (0, __v_c_util.clsx)(`${selectionItemPrefixCls.value}-content`, classNamesConfig.value?.itemContent),
64
+ "style": stylesConfig.value?.itemContent
65
+ }, [content]), closable && (0, vue.createVNode)(require_TransBtn.default, {
66
+ "className": (0, __v_c_util.clsx)(`${selectionItemPrefixCls.value}-remove`, classNamesConfig.value?.itemRemove),
67
+ "style": stylesConfig.value?.itemRemove,
68
+ "onMouseDown": onPreventMouseDown,
69
+ "onClick": onClose,
70
+ "customizeIcon": removeIcon.value
71
+ }, { default: () => [(0, vue.createTextVNode)("×")] })]);
72
+ const customizeRenderSelector = (value, content, itemDisabled, closable, onClose, isMaxTag, info) => {
73
+ const onMouseDown = (e) => {
74
+ onPreventMouseDown(e);
75
+ onToggleOpen(!triggerOpen.value);
76
+ };
77
+ return (0, vue.createVNode)("span", { "onMousedown": onMouseDown }, [tagRender.value?.({
78
+ label: content,
79
+ value,
80
+ index: info?.index ?? 0,
81
+ disabled: itemDisabled,
82
+ closable: !!closable,
83
+ onClose,
84
+ isMaxTag: !!isMaxTag
85
+ })]);
86
+ };
87
+ const renderItem = (valueItem, info) => {
88
+ const { disabled: itemDisabled, label, value } = valueItem;
89
+ const closable = !disabled.value && !itemDisabled;
90
+ let displayLabel = label;
91
+ if (typeof maxTagTextLength.value === "number") {
92
+ if (typeof label === "string" || typeof label === "number") {
93
+ const strLabel = String(displayLabel);
94
+ if (strLabel.length > maxTagTextLength.value) displayLabel = `${strLabel.slice(0, maxTagTextLength.value)}...`;
95
+ }
96
+ }
97
+ const onClose = (event) => {
98
+ if (event) event.stopPropagation();
99
+ onRemove(valueItem);
100
+ };
101
+ return typeof tagRender.value === "function" ? customizeRenderSelector(value, displayLabel, !!itemDisabled, closable, onClose, void 0, info) : defaultRenderSelector(valueItem, displayLabel, !!itemDisabled, closable, onClose);
102
+ };
103
+ const renderRest = (omittedValues) => {
104
+ if (!displayValues.value.length) return null;
105
+ const content = typeof maxTagPlaceholder.value === "function" ? maxTagPlaceholder.value(omittedValues) : maxTagPlaceholder.value;
106
+ return typeof tagRender.value === "function" ? customizeRenderSelector(void 0, content, false, false, void 0, true) : defaultRenderSelector({ title: content }, content, false);
107
+ };
108
+ return () => {
109
+ const { inputProps } = props;
110
+ const prefixNode = !displayValues.value.length && (!searchValue.value || !triggerOpen.value) ? () => (0, vue.createVNode)(require_Placeholder.default, null, null) : null;
111
+ const suffixNode = () => (0, vue.createVNode)(require_Input.default, (0, vue.mergeProps)({
112
+ "ref": inputRef,
113
+ "disabled": disabled.value,
114
+ "readOnly": !inputEditable.value
115
+ }, inputProps, {
116
+ "value": inputValue.value || "",
117
+ "syncWidth": true
118
+ }), null);
119
+ return (0, vue.createVNode)(__v_c_overflow.default, {
120
+ "prefixCls": `${prefixCls.value}-content`,
121
+ "class": classNamesConfig.value?.content,
122
+ "style": stylesConfig.value?.content,
123
+ "prefix": prefixNode,
124
+ "data": displayValues.value,
125
+ "renderItem": renderItem,
126
+ "renderRest": renderRest,
127
+ "suffix": suffixNode,
128
+ "itemKey": itemKey,
129
+ "maxCount": maxTagCount.value
130
+ }, null);
131
+ };
132
+ }, {
133
+ props: { inputProps: {
134
+ type: Object,
135
+ required: true,
136
+ default: void 0
137
+ } },
138
+ name: "MultipleContent",
139
+ inheritAttrs: false
140
+ });
141
+ var MultipleContent_default = MultipleContent;
142
+ exports.default = MultipleContent_default;
@@ -0,0 +1,3 @@
1
+ import { SharedContentProps } from './index';
2
+ declare const MultipleContent: import('vue').DefineSetupFnComponent<SharedContentProps, {}, {}, SharedContentProps & {}, import('vue').PublicProps>;
3
+ export default MultipleContent;
@@ -0,0 +1,138 @@
1
+ import useBaseProps from "../../hooks/useBaseProps.js";
2
+ import TransBtn_default from "../../TransBtn.js";
3
+ import { useSelectInputContext } from "../context.js";
4
+ import { getTitle } from "../../utils/commonUtil.js";
5
+ import Input_default from "../Input.js";
6
+ import Placeholder_default from "./Placeholder.js";
7
+ import { computed, createTextVNode, createVNode, defineComponent, mergeProps, shallowRef } from "vue";
8
+ import { clsx } from "@v-c/util";
9
+ import Overflow from "@v-c/overflow";
10
+ function itemKey(value) {
11
+ return value.key ?? value.value ?? "";
12
+ }
13
+ function onPreventMouseDown(event) {
14
+ event.preventDefault();
15
+ event.stopPropagation();
16
+ }
17
+ var MultipleContent_default = /* @__PURE__ */ defineComponent((props, { expose }) => {
18
+ const selectInputContext = useSelectInputContext();
19
+ const baseProps = useBaseProps();
20
+ const inputRef = shallowRef();
21
+ const prefixCls = computed(() => selectInputContext.value?.prefixCls ?? "");
22
+ const displayValues = computed(() => selectInputContext.value?.displayValues ?? []);
23
+ const searchValue = computed(() => selectInputContext.value?.searchValue ?? "");
24
+ const mode = computed(() => selectInputContext.value?.mode);
25
+ const removeIconFromContext = computed(() => selectInputContext.value?.removeIcon);
26
+ const onSelectorRemove = computed(() => selectInputContext.value?.onSelectorRemove);
27
+ const disabled = computed(() => baseProps.value?.disabled ?? false);
28
+ const showSearch = computed(() => baseProps.value?.showSearch ?? false);
29
+ const triggerOpen = computed(() => baseProps.value?.triggerOpen ?? false);
30
+ const toggleOpen = computed(() => baseProps.value?.toggleOpen);
31
+ const autoClearSearchValue = computed(() => baseProps.value?.autoClearSearchValue);
32
+ const tagRenderFromContext = computed(() => baseProps.value?.tagRender);
33
+ const maxTagPlaceholderFromContext = computed(() => baseProps.value?.maxTagPlaceholder);
34
+ const maxTagTextLength = computed(() => baseProps.value?.maxTagTextLength);
35
+ const maxTagCount = computed(() => baseProps.value?.maxTagCount);
36
+ const classNamesConfig = computed(() => baseProps.value?.classNames);
37
+ const stylesConfig = computed(() => baseProps.value?.styles);
38
+ const selectionItemPrefixCls = computed(() => `${prefixCls.value}-selection-item`);
39
+ const computedSearchValue = computed(() => {
40
+ if (!triggerOpen.value && mode.value === "multiple" && autoClearSearchValue.value !== false) return "";
41
+ return searchValue.value;
42
+ });
43
+ const inputValue = computed(() => showSearch.value ? computedSearchValue.value || "" : "");
44
+ const inputEditable = computed(() => showSearch.value && !disabled.value);
45
+ const removeIcon = computed(() => removeIconFromContext.value ?? "×");
46
+ const maxTagPlaceholder = computed(() => maxTagPlaceholderFromContext.value ?? ((omittedValues) => `+ ${omittedValues.length} ...`));
47
+ const tagRender = computed(() => tagRenderFromContext.value);
48
+ const onToggleOpen = (newOpen) => {
49
+ toggleOpen.value?.(newOpen);
50
+ };
51
+ const onRemove = (value) => {
52
+ onSelectorRemove.value?.(value);
53
+ };
54
+ expose({ input: computed(() => inputRef.value?.input) });
55
+ const defaultRenderSelector = (item, content, itemDisabled, closable, onClose) => createVNode("span", {
56
+ "title": getTitle(item),
57
+ "class": clsx(selectionItemPrefixCls.value, { [`${selectionItemPrefixCls.value}-disabled`]: itemDisabled }, classNamesConfig.value?.item),
58
+ "style": stylesConfig.value?.item
59
+ }, [createVNode("span", {
60
+ "class": clsx(`${selectionItemPrefixCls.value}-content`, classNamesConfig.value?.itemContent),
61
+ "style": stylesConfig.value?.itemContent
62
+ }, [content]), closable && createVNode(TransBtn_default, {
63
+ "className": clsx(`${selectionItemPrefixCls.value}-remove`, classNamesConfig.value?.itemRemove),
64
+ "style": stylesConfig.value?.itemRemove,
65
+ "onMouseDown": onPreventMouseDown,
66
+ "onClick": onClose,
67
+ "customizeIcon": removeIcon.value
68
+ }, { default: () => [createTextVNode("×")] })]);
69
+ const customizeRenderSelector = (value, content, itemDisabled, closable, onClose, isMaxTag, info) => {
70
+ const onMouseDown = (e) => {
71
+ onPreventMouseDown(e);
72
+ onToggleOpen(!triggerOpen.value);
73
+ };
74
+ return createVNode("span", { "onMousedown": onMouseDown }, [tagRender.value?.({
75
+ label: content,
76
+ value,
77
+ index: info?.index ?? 0,
78
+ disabled: itemDisabled,
79
+ closable: !!closable,
80
+ onClose,
81
+ isMaxTag: !!isMaxTag
82
+ })]);
83
+ };
84
+ const renderItem = (valueItem, info) => {
85
+ const { disabled: itemDisabled, label, value } = valueItem;
86
+ const closable = !disabled.value && !itemDisabled;
87
+ let displayLabel = label;
88
+ if (typeof maxTagTextLength.value === "number") {
89
+ if (typeof label === "string" || typeof label === "number") {
90
+ const strLabel = String(displayLabel);
91
+ if (strLabel.length > maxTagTextLength.value) displayLabel = `${strLabel.slice(0, maxTagTextLength.value)}...`;
92
+ }
93
+ }
94
+ const onClose = (event) => {
95
+ if (event) event.stopPropagation();
96
+ onRemove(valueItem);
97
+ };
98
+ return typeof tagRender.value === "function" ? customizeRenderSelector(value, displayLabel, !!itemDisabled, closable, onClose, void 0, info) : defaultRenderSelector(valueItem, displayLabel, !!itemDisabled, closable, onClose);
99
+ };
100
+ const renderRest = (omittedValues) => {
101
+ if (!displayValues.value.length) return null;
102
+ const content = typeof maxTagPlaceholder.value === "function" ? maxTagPlaceholder.value(omittedValues) : maxTagPlaceholder.value;
103
+ return typeof tagRender.value === "function" ? customizeRenderSelector(void 0, content, false, false, void 0, true) : defaultRenderSelector({ title: content }, content, false);
104
+ };
105
+ return () => {
106
+ const { inputProps } = props;
107
+ const prefixNode = !displayValues.value.length && (!searchValue.value || !triggerOpen.value) ? () => createVNode(Placeholder_default, null, null) : null;
108
+ const suffixNode = () => createVNode(Input_default, mergeProps({
109
+ "ref": inputRef,
110
+ "disabled": disabled.value,
111
+ "readOnly": !inputEditable.value
112
+ }, inputProps, {
113
+ "value": inputValue.value || "",
114
+ "syncWidth": true
115
+ }), null);
116
+ return createVNode(Overflow, {
117
+ "prefixCls": `${prefixCls.value}-content`,
118
+ "class": classNamesConfig.value?.content,
119
+ "style": stylesConfig.value?.content,
120
+ "prefix": prefixNode,
121
+ "data": displayValues.value,
122
+ "renderItem": renderItem,
123
+ "renderRest": renderRest,
124
+ "suffix": suffixNode,
125
+ "itemKey": itemKey,
126
+ "maxCount": maxTagCount.value
127
+ }, null);
128
+ };
129
+ }, {
130
+ props: { inputProps: {
131
+ type: Object,
132
+ required: true,
133
+ default: void 0
134
+ } },
135
+ name: "MultipleContent",
136
+ inheritAttrs: false
137
+ });
138
+ export { MultipleContent_default as default };
@@ -0,0 +1,33 @@
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_context = require("../context.cjs");
5
+ let vue = require("vue");
6
+ let __v_c_util = require("@v-c/util");
7
+ var Placeholder = /* @__PURE__ */ (0, vue.defineComponent)((props) => {
8
+ const selectInputContext = require_context.useSelectInputContext();
9
+ const baseProps = require_useBaseProps.default();
10
+ return () => {
11
+ const { prefixCls, placeholder, displayValues } = selectInputContext.value ?? {};
12
+ const { classNames, styles } = baseProps.value ?? {};
13
+ const { show = true } = props;
14
+ if (displayValues?.length) return null;
15
+ return (0, vue.createVNode)("div", {
16
+ "class": (0, __v_c_util.clsx)(`${prefixCls}-placeholder`, classNames?.placeholder),
17
+ "style": {
18
+ visibility: show ? "visible" : "hidden",
19
+ ...styles?.placeholder
20
+ }
21
+ }, [placeholder]);
22
+ };
23
+ }, {
24
+ props: { show: {
25
+ type: Boolean,
26
+ required: false,
27
+ default: void 0
28
+ } },
29
+ name: "Placeholder",
30
+ inheritAttrs: false
31
+ });
32
+ var Placeholder_default = Placeholder;
33
+ exports.default = Placeholder_default;
@@ -0,0 +1,5 @@
1
+ export interface PlaceholderProps {
2
+ show?: boolean;
3
+ }
4
+ declare const Placeholder: import('vue').DefineSetupFnComponent<PlaceholderProps, {}, {}, PlaceholderProps & {}, import('vue').PublicProps>;
5
+ export default Placeholder;
@@ -0,0 +1,30 @@
1
+ import useBaseProps from "../../hooks/useBaseProps.js";
2
+ import { useSelectInputContext } from "../context.js";
3
+ import { createVNode, defineComponent } from "vue";
4
+ import { clsx } from "@v-c/util";
5
+ var Placeholder_default = /* @__PURE__ */ defineComponent((props) => {
6
+ const selectInputContext = useSelectInputContext();
7
+ const baseProps = useBaseProps();
8
+ return () => {
9
+ const { prefixCls, placeholder, displayValues } = selectInputContext.value ?? {};
10
+ const { classNames, styles } = baseProps.value ?? {};
11
+ const { show = true } = props;
12
+ if (displayValues?.length) return null;
13
+ return createVNode("div", {
14
+ "class": clsx(`${prefixCls}-placeholder`, classNames?.placeholder),
15
+ "style": {
16
+ visibility: show ? "visible" : "hidden",
17
+ ...styles?.placeholder
18
+ }
19
+ }, [placeholder]);
20
+ };
21
+ }, {
22
+ props: { show: {
23
+ type: Boolean,
24
+ required: false,
25
+ default: void 0
26
+ } },
27
+ name: "Placeholder",
28
+ inheritAttrs: false
29
+ });
30
+ export { Placeholder_default as default };
@@ -0,0 +1,80 @@
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_SelectContext = require("../../SelectContext.cjs");
5
+ const require_context = require("../context.cjs");
6
+ const require_commonUtil = require("../../utils/commonUtil.cjs");
7
+ const require_Input = require("../Input.cjs");
8
+ const require_Placeholder = require("./Placeholder.cjs");
9
+ let vue = require("vue");
10
+ let __v_c_util = require("@v-c/util");
11
+ var SingleContent = /* @__PURE__ */ (0, vue.defineComponent)((props, { expose }) => {
12
+ const selectInputContext = require_context.useSelectInputContext();
13
+ const baseProps = require_useBaseProps.default();
14
+ const selectContext = require_SelectContext.useSelectContext();
15
+ const inputChanged = (0, vue.shallowRef)(false);
16
+ const combobox = (0, vue.computed)(() => selectInputContext.value?.mode === "combobox");
17
+ const displayValue = (0, vue.computed)(() => selectInputContext.value?.displayValues[0]);
18
+ const mergedSearchValue = (0, vue.computed)(() => {
19
+ if (combobox.value && selectInputContext.value?.activeValue && !inputChanged.value && baseProps.value?.triggerOpen) return selectInputContext.value.activeValue;
20
+ return baseProps.value?.showSearch ? selectInputContext.value?.searchValue : "";
21
+ });
22
+ const optionProps = (0, vue.computed)(() => {
23
+ let restProps = {
24
+ class: `${selectInputContext.value?.prefixCls}-content-value`,
25
+ style: { visibility: mergedSearchValue.value ? "hidden" : "visible" }
26
+ };
27
+ if (displayValue.value && selectContext.value?.flattenOptions) {
28
+ const option = selectContext.value.flattenOptions.find((opt) => opt.value === displayValue.value?.value);
29
+ if (option?.data) {
30
+ const { label, value, className, style, key, children,...rest } = option.data;
31
+ restProps = {
32
+ ...restProps,
33
+ ...rest,
34
+ title: require_commonUtil.getTitle(option.data),
35
+ class: (0, __v_c_util.clsx)(restProps.className, className),
36
+ style: {
37
+ ...restProps.style,
38
+ ...style
39
+ }
40
+ };
41
+ }
42
+ }
43
+ if (displayValue.value && !restProps.title) restProps.title = require_commonUtil.getTitle(displayValue.value);
44
+ if (baseProps.value?.title !== void 0) restProps.title = baseProps.value.title;
45
+ return restProps;
46
+ });
47
+ (0, vue.watch)([combobox, () => selectInputContext.value?.displayValues], () => {
48
+ if (combobox.value) inputChanged.value = false;
49
+ }, { immediate: true });
50
+ const inputRef = (0, vue.shallowRef)();
51
+ expose({ input: (0, vue.computed)(() => inputRef.value?.input) });
52
+ return () => {
53
+ const { prefixCls, mode, maxLength } = selectInputContext.value ?? {};
54
+ const { classNames, styles } = baseProps.value ?? {};
55
+ const { inputProps } = props;
56
+ return (0, vue.createVNode)("div", {
57
+ "class": (0, __v_c_util.clsx)(`${prefixCls}-content`, classNames?.content),
58
+ "style": styles?.content
59
+ }, [displayValue.value ? (0, vue.createVNode)("div", optionProps.value, [displayValue.value.label]) : (0, vue.createVNode)(require_Placeholder.default, { "show": !mergedSearchValue.value }, null), (0, vue.createVNode)(require_Input.default, (0, vue.mergeProps)(inputProps, {
60
+ "value": mergedSearchValue.value,
61
+ "maxLength": mode === "combobox" ? maxLength : void 0,
62
+ "onChange": (e) => {
63
+ inputChanged.value = true;
64
+ inputProps.onChange?.(e);
65
+ inputProps.onInput?.(e);
66
+ },
67
+ "ref": inputRef
68
+ }), null)]);
69
+ };
70
+ }, {
71
+ props: { inputProps: {
72
+ type: Object,
73
+ required: true,
74
+ default: void 0
75
+ } },
76
+ name: "SingleContent",
77
+ inheritAttrs: false
78
+ });
79
+ var SingleContent_default = SingleContent;
80
+ exports.default = SingleContent_default;
@@ -0,0 +1,3 @@
1
+ import { SharedContentProps } from './index';
2
+ declare const SingleContent: import('vue').DefineSetupFnComponent<SharedContentProps, {}, {}, SharedContentProps & {}, import('vue').PublicProps>;
3
+ export default SingleContent;
@@ -0,0 +1,77 @@
1
+ import useBaseProps from "../../hooks/useBaseProps.js";
2
+ import { useSelectContext } from "../../SelectContext.js";
3
+ import { useSelectInputContext } from "../context.js";
4
+ import { getTitle } from "../../utils/commonUtil.js";
5
+ import Input_default from "../Input.js";
6
+ import Placeholder_default from "./Placeholder.js";
7
+ import { computed, createVNode, defineComponent, mergeProps, shallowRef, watch } from "vue";
8
+ import { clsx } from "@v-c/util";
9
+ var SingleContent_default = /* @__PURE__ */ defineComponent((props, { expose }) => {
10
+ const selectInputContext = useSelectInputContext();
11
+ const baseProps = useBaseProps();
12
+ const selectContext = useSelectContext();
13
+ const inputChanged = shallowRef(false);
14
+ const combobox = computed(() => selectInputContext.value?.mode === "combobox");
15
+ const displayValue = computed(() => selectInputContext.value?.displayValues[0]);
16
+ const mergedSearchValue = computed(() => {
17
+ if (combobox.value && selectInputContext.value?.activeValue && !inputChanged.value && baseProps.value?.triggerOpen) return selectInputContext.value.activeValue;
18
+ return baseProps.value?.showSearch ? selectInputContext.value?.searchValue : "";
19
+ });
20
+ const optionProps = computed(() => {
21
+ let restProps = {
22
+ class: `${selectInputContext.value?.prefixCls}-content-value`,
23
+ style: { visibility: mergedSearchValue.value ? "hidden" : "visible" }
24
+ };
25
+ if (displayValue.value && selectContext.value?.flattenOptions) {
26
+ const option = selectContext.value.flattenOptions.find((opt) => opt.value === displayValue.value?.value);
27
+ if (option?.data) {
28
+ const { label, value, className, style, key, children,...rest } = option.data;
29
+ restProps = {
30
+ ...restProps,
31
+ ...rest,
32
+ title: getTitle(option.data),
33
+ class: clsx(restProps.className, className),
34
+ style: {
35
+ ...restProps.style,
36
+ ...style
37
+ }
38
+ };
39
+ }
40
+ }
41
+ if (displayValue.value && !restProps.title) restProps.title = getTitle(displayValue.value);
42
+ if (baseProps.value?.title !== void 0) restProps.title = baseProps.value.title;
43
+ return restProps;
44
+ });
45
+ watch([combobox, () => selectInputContext.value?.displayValues], () => {
46
+ if (combobox.value) inputChanged.value = false;
47
+ }, { immediate: true });
48
+ const inputRef = shallowRef();
49
+ expose({ input: computed(() => inputRef.value?.input) });
50
+ return () => {
51
+ const { prefixCls, mode, maxLength } = selectInputContext.value ?? {};
52
+ const { classNames, styles } = baseProps.value ?? {};
53
+ const { inputProps } = props;
54
+ return createVNode("div", {
55
+ "class": clsx(`${prefixCls}-content`, classNames?.content),
56
+ "style": styles?.content
57
+ }, [displayValue.value ? createVNode("div", optionProps.value, [displayValue.value.label]) : createVNode(Placeholder_default, { "show": !mergedSearchValue.value }, null), createVNode(Input_default, mergeProps(inputProps, {
58
+ "value": mergedSearchValue.value,
59
+ "maxLength": mode === "combobox" ? maxLength : void 0,
60
+ "onChange": (e) => {
61
+ inputChanged.value = true;
62
+ inputProps.onChange?.(e);
63
+ inputProps.onInput?.(e);
64
+ },
65
+ "ref": inputRef
66
+ }), null)]);
67
+ };
68
+ }, {
69
+ props: { inputProps: {
70
+ type: Object,
71
+ required: true,
72
+ default: void 0
73
+ } },
74
+ name: "SingleContent",
75
+ inheritAttrs: false
76
+ });
77
+ export { SingleContent_default as default };
@@ -0,0 +1,40 @@
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_context = require("../context.cjs");
5
+ const require_MultipleContent = require("./MultipleContent.cjs");
6
+ const require_SingleContent = require("./SingleContent.cjs");
7
+ let vue = require("vue");
8
+ let __v_c_util_dist_pickAttrs = require("@v-c/util/dist/pickAttrs");
9
+ __v_c_util_dist_pickAttrs = require_rolldown_runtime.__toESM(__v_c_util_dist_pickAttrs);
10
+ var SelectContent = /* @__PURE__ */ (0, vue.defineComponent)((_, { expose }) => {
11
+ const selectInputContext = require_context.useSelectInputContext();
12
+ const baseProps = require_useBaseProps.default();
13
+ const inputRef = (0, vue.shallowRef)();
14
+ expose({ input: (0, vue.computed)(() => inputRef.value?.input) });
15
+ const multiple = (0, vue.computed)(() => selectInputContext.value?.multiple);
16
+ const onInputKeyDown = (0, vue.computed)(() => selectInputContext.value?.onInputKeyDown);
17
+ const showSearch = (0, vue.computed)(() => baseProps.value?.showSearch);
18
+ const ariaProps = (0, vue.computed)(() => (0, __v_c_util_dist_pickAttrs.default)(baseProps.value ?? {}, { aria: true }));
19
+ const sharedInputProps = (0, vue.computed)(() => ({
20
+ ...ariaProps.value,
21
+ onKeyDown: onInputKeyDown.value,
22
+ readonly: !showSearch.value,
23
+ tabindex: baseProps.value?.tabIndex
24
+ }));
25
+ return () => {
26
+ if (multiple.value) return (0, vue.createVNode)(require_MultipleContent.default, {
27
+ "ref": inputRef,
28
+ "inputProps": sharedInputProps.value
29
+ }, null);
30
+ return (0, vue.createVNode)(require_SingleContent.default, {
31
+ "ref": inputRef,
32
+ "inputProps": sharedInputProps.value
33
+ }, null);
34
+ };
35
+ }, {
36
+ name: "SelectContent",
37
+ inheritAttrs: false
38
+ });
39
+ var Content_default = SelectContent;
40
+ exports.default = Content_default;
@@ -0,0 +1,6 @@
1
+ import { InputHTMLAttributes } from 'vue';
2
+ export interface SharedContentProps {
3
+ inputProps: InputHTMLAttributes;
4
+ }
5
+ declare const SelectContent: import('vue').DefineSetupFnComponent<Record<string, any>, {}, {}, Record<string, any> & {}, import('vue').PublicProps>;
6
+ export default SelectContent;