@tagplus/components 5.3.4 → 5.3.5

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 (203) hide show
  1. package/dist/es/_virtual/_plugin-vue_export-helper.mjs +10 -0
  2. package/dist/es/components.css +2391 -0
  3. package/dist/es/node_modules/@element-plus/icons-vue/dist/index.mjs +148 -0
  4. package/dist/es/node_modules/@popperjs/core/lib/enums.mjs +22 -0
  5. package/dist/es/node_modules/@vue/shared/dist/shared.esm-bundler.mjs +28 -0
  6. package/dist/es/node_modules/@vueuse/core/index.mjs +172 -0
  7. package/dist/es/node_modules/@vueuse/shared/index.mjs +68 -0
  8. package/dist/es/node_modules/element-plus/es/constants/size.mjs +4 -0
  9. package/dist/es/node_modules/element-plus/es/hooks/use-focus-controller/index.mjs +64 -0
  10. package/dist/es/node_modules/element-plus/es/hooks/use-id/index.mjs +30 -0
  11. package/dist/es/node_modules/element-plus/es/hooks/use-locale/index.mjs +29 -0
  12. package/dist/es/node_modules/element-plus/es/hooks/use-namespace/index.mjs +79 -0
  13. package/dist/es/node_modules/element-plus/es/hooks/use-prop/index.mjs +11 -0
  14. package/dist/es/node_modules/element-plus/es/hooks/use-size/index.mjs +20 -0
  15. package/dist/es/node_modules/element-plus/es/locale/lang/en.mjs +182 -0
  16. package/dist/es/node_modules/element-plus/es/utils/error.mjs +16 -0
  17. package/dist/es/node_modules/element-plus/es/utils/types.mjs +9 -0
  18. package/dist/es/node_modules/element-plus/es/utils/vue/props/runtime.mjs +42 -0
  19. package/dist/es/src/components/Autosuggest/Autosuggest.vue.mjs +446 -0
  20. package/dist/es/src/components/Autosuggest/Multisuggest.vue.mjs +17 -0
  21. package/dist/es/src/components/Autosuggest/autosuggest-props.mjs +204 -0
  22. package/dist/es/src/components/Autosuggest/core.mjs +62 -0
  23. package/dist/es/src/components/Autosuggest/multisuggest-props.mjs +11 -0
  24. package/dist/es/src/components/Autosuggest/option.vue.mjs +118 -0
  25. package/dist/es/src/components/Autosuggest/select-dropdown.vue.mjs +62 -0
  26. package/dist/es/src/components/Autosuggest/useOption.mjs +93 -0
  27. package/dist/es/src/components/Autosuggest/useSelect.mjs +803 -0
  28. package/dist/es/src/components/Inline/Inline.vue.mjs +130 -0
  29. package/dist/es/src/components/Inline/index.mjs +4 -0
  30. package/dist/es/src/components/InputNumber/InputNumber.vue.mjs +358 -0
  31. package/dist/es/src/components/InputNumber/index.mjs +4 -0
  32. package/dist/es/src/components/InputNumber/input-number.mjs +128 -0
  33. package/dist/es/src/components/Loader/Loader.vue.mjs +59 -0
  34. package/dist/es/src/components/Loader/index.mjs +4 -0
  35. package/dist/es/src/components/Money/Money.vue.mjs +76 -0
  36. package/dist/es/src/components/Money/index.mjs +4 -0
  37. package/dist/es/src/components/Multisuggest/index.mjs +4 -0
  38. package/dist/es/src/components/OptionsList/OptionsList.vue.mjs +28 -0
  39. package/dist/es/src/components/OptionsList/index.mjs +4 -0
  40. package/dist/es/src/components/OptionsListItem/OptionsListItem.vue.mjs +96 -0
  41. package/dist/es/src/components/OptionsListItem/index.mjs +4 -0
  42. package/dist/es/src/components/Percent/Percent.vue.mjs +77 -0
  43. package/dist/es/src/components/Percent/index.mjs +4 -0
  44. package/dist/es/src/components/Skeleton/Skeleton.vue.mjs +79 -0
  45. package/dist/es/src/components/Skeleton/index.mjs +4 -0
  46. package/dist/es/src/components/Step/Step.vue.mjs +206 -0
  47. package/dist/es/src/components/Step/index.mjs +4 -0
  48. package/dist/es/src/components/Steps/Steps.vue.mjs +15 -0
  49. package/dist/es/src/components/Steps/index.mjs +4 -0
  50. package/dist/es/src/components/Tip/Tip.vue.mjs +165 -0
  51. package/dist/es/src/components/Tip/index.mjs +4 -0
  52. package/dist/es/src/components/index.mjs +22 -0
  53. package/dist/es/src/locale/i18nCreator.mjs +93 -0
  54. package/dist/es/src/locale/lang/pt-br.mjs +21 -0
  55. package/dist/es/src/main.mjs +18 -0
  56. package/dist/es/src/mixins/floatFormatter.mjs +42 -0
  57. package/dist/es/src/plugins/currency.mjs +69 -0
  58. package/dist/es/src/utils/constants.mjs +6 -0
  59. package/dist/es/src/utils/error.mjs +20 -0
  60. package/dist/es/src/utils/i18n.mjs +4 -0
  61. package/dist/es/src/utils/icon.mjs +9 -0
  62. package/dist/es/src/utils/index.mjs +8 -0
  63. package/dist/es/src/utils/runtime.mjs +50 -0
  64. package/dist/es/src/utils/scroll.mjs +26 -0
  65. package/dist/es/src/utils/strings.mjs +4 -0
  66. package/dist/es/src/utils/types.mjs +9 -0
  67. package/dist/es/src/utils/use-derived-namespace.mjs +15 -0
  68. package/dist/es/src/utils/use-form-common-props.mjs +25 -0
  69. package/dist/es/src/utils/use-form-item.mjs +61 -0
  70. package/dist/es/src/utils/use-id.mjs +35 -0
  71. package/dist/es/src/utils/use-input.mjs +31 -0
  72. package/{src/locale → dist}/lang/en.js +3 -2
  73. package/{src/locale → dist}/lang/pt-br.js +3 -2
  74. package/dist/lib/_virtual/_plugin-vue_export-helper.js +10 -0
  75. package/dist/lib/components.css +2391 -0
  76. package/dist/lib/node_modules/@element-plus/icons-vue/dist/index.js +148 -0
  77. package/dist/lib/node_modules/@popperjs/core/lib/enums.js +22 -0
  78. package/dist/lib/node_modules/@vue/shared/dist/shared.esm-bundler.js +28 -0
  79. package/dist/lib/node_modules/@vueuse/core/index.js +170 -0
  80. package/dist/lib/node_modules/@vueuse/shared/index.js +68 -0
  81. package/dist/lib/node_modules/element-plus/es/constants/size.js +4 -0
  82. package/dist/lib/node_modules/element-plus/es/hooks/use-focus-controller/index.js +64 -0
  83. package/dist/lib/node_modules/element-plus/es/hooks/use-id/index.js +30 -0
  84. package/dist/lib/node_modules/element-plus/es/hooks/use-locale/index.js +29 -0
  85. package/dist/lib/node_modules/element-plus/es/hooks/use-namespace/index.js +79 -0
  86. package/dist/lib/node_modules/element-plus/es/hooks/use-prop/index.js +11 -0
  87. package/dist/lib/node_modules/element-plus/es/hooks/use-size/index.js +20 -0
  88. package/dist/lib/node_modules/element-plus/es/locale/lang/en.js +182 -0
  89. package/dist/lib/node_modules/element-plus/es/utils/error.js +16 -0
  90. package/dist/lib/node_modules/element-plus/es/utils/types.js +9 -0
  91. package/dist/lib/node_modules/element-plus/es/utils/vue/props/runtime.js +42 -0
  92. package/dist/lib/src/components/Autosuggest/Autosuggest.vue.js +446 -0
  93. package/dist/lib/src/components/Autosuggest/Multisuggest.vue.js +17 -0
  94. package/dist/lib/src/components/Autosuggest/autosuggest-props.js +204 -0
  95. package/dist/lib/src/components/Autosuggest/core.js +62 -0
  96. package/dist/lib/src/components/Autosuggest/multisuggest-props.js +11 -0
  97. package/dist/lib/src/components/Autosuggest/option.vue.js +118 -0
  98. package/dist/lib/src/components/Autosuggest/select-dropdown.vue.js +62 -0
  99. package/dist/lib/src/components/Autosuggest/useOption.js +93 -0
  100. package/dist/lib/src/components/Autosuggest/useSelect.js +803 -0
  101. package/dist/lib/src/components/Inline/Inline.vue.js +130 -0
  102. package/dist/lib/src/components/Inline/index.js +4 -0
  103. package/dist/lib/src/components/InputNumber/InputNumber.vue.js +358 -0
  104. package/dist/lib/src/components/InputNumber/index.js +4 -0
  105. package/dist/lib/src/components/InputNumber/input-number.js +128 -0
  106. package/dist/lib/src/components/Loader/Loader.vue.js +59 -0
  107. package/dist/lib/src/components/Loader/index.js +4 -0
  108. package/dist/lib/src/components/Money/Money.vue.js +76 -0
  109. package/dist/lib/src/components/Money/index.js +4 -0
  110. package/dist/lib/src/components/Multisuggest/index.js +4 -0
  111. package/dist/lib/src/components/OptionsList/OptionsList.vue.js +28 -0
  112. package/dist/lib/src/components/OptionsList/index.js +4 -0
  113. package/dist/lib/src/components/OptionsListItem/OptionsListItem.vue.js +96 -0
  114. package/dist/lib/src/components/OptionsListItem/index.js +4 -0
  115. package/dist/lib/src/components/Percent/Percent.vue.js +77 -0
  116. package/dist/lib/src/components/Percent/index.js +4 -0
  117. package/dist/lib/src/components/Skeleton/Skeleton.vue.js +79 -0
  118. package/dist/lib/src/components/Skeleton/index.js +4 -0
  119. package/dist/lib/src/components/Step/Step.vue.js +206 -0
  120. package/dist/lib/src/components/Step/index.js +4 -0
  121. package/dist/lib/src/components/Steps/Steps.vue.js +15 -0
  122. package/dist/lib/src/components/Steps/index.js +4 -0
  123. package/dist/lib/src/components/Tip/Tip.vue.js +165 -0
  124. package/dist/lib/src/components/Tip/index.js +4 -0
  125. package/dist/lib/src/components/index.js +22 -0
  126. package/dist/lib/src/locale/i18nCreator.js +93 -0
  127. package/dist/lib/src/locale/lang/pt-br.js +21 -0
  128. package/dist/lib/src/main.js +18 -0
  129. package/dist/lib/src/mixins/floatFormatter.js +42 -0
  130. package/dist/lib/src/plugins/currency.js +69 -0
  131. package/dist/lib/src/utils/constants.js +6 -0
  132. package/dist/lib/src/utils/error.js +20 -0
  133. package/dist/lib/src/utils/i18n.js +4 -0
  134. package/dist/lib/src/utils/icon.js +9 -0
  135. package/dist/lib/src/utils/index.js +8 -0
  136. package/dist/lib/src/utils/runtime.js +50 -0
  137. package/dist/lib/src/utils/scroll.js +26 -0
  138. package/dist/lib/src/utils/strings.js +4 -0
  139. package/dist/lib/src/utils/types.js +12 -0
  140. package/dist/lib/src/utils/use-derived-namespace.js +15 -0
  141. package/dist/lib/src/utils/use-form-common-props.js +25 -0
  142. package/dist/lib/src/utils/use-form-item.js +61 -0
  143. package/dist/lib/src/utils/use-id.js +35 -0
  144. package/dist/lib/src/utils/use-input.js +31 -0
  145. package/package.json +84 -62
  146. package/dist/demo.html +0 -1
  147. package/dist/fonts/bevi-bold.7e4dcd11.woff +0 -0
  148. package/dist/fonts/bevi-bold.873def84.woff2 +0 -0
  149. package/dist/fonts/bevi-medium.6187e050.woff2 +0 -0
  150. package/dist/fonts/bevi-medium.65b3056d.woff +0 -0
  151. package/dist/fonts/bevi-regular.c89f126e.woff +0 -0
  152. package/dist/fonts/bevi-regular.f81e4b8f.woff2 +0 -0
  153. package/dist/tp.common.js +0 -2
  154. package/dist/tp.common.js.map +0 -1
  155. package/dist/tp.css +0 -167
  156. package/dist/tp.umd.js +0 -2
  157. package/dist/tp.umd.js.map +0 -1
  158. package/dist/tp.umd.min.js +0 -2
  159. package/dist/tp.umd.min.js.map +0 -1
  160. package/src/assets/scss/_fonts.scss +0 -27
  161. package/src/assets/scss/_functions.scss +0 -22
  162. package/src/assets/scss/_helpers.scss +0 -112
  163. package/src/assets/scss/_mixins.scss +0 -69
  164. package/src/assets/scss/_overrides.scss +0 -69
  165. package/src/assets/scss/_resass.scss +0 -83
  166. package/src/assets/scss/_variables.scss +0 -27
  167. package/src/assets/scss/index.scss +0 -11
  168. package/src/components/Autosuggest/Autosuggest.vue +0 -791
  169. package/src/components/Autosuggest/index.js +0 -3
  170. package/src/components/Dialog/Dialog.vue +0 -253
  171. package/src/components/Dialog/index.js +0 -3
  172. package/src/components/Inline/Inline.vue +0 -149
  173. package/src/components/Inline/index.js +0 -3
  174. package/src/components/InputNumber/InputNumber.vue +0 -430
  175. package/src/components/InputNumber/index.js +0 -3
  176. package/src/components/Loader/Loader.vue +0 -317
  177. package/src/components/Loader/animations.scss +0 -68
  178. package/src/components/Loader/index.js +0 -3
  179. package/src/components/Money/Money.vue +0 -82
  180. package/src/components/Money/index.js +0 -3
  181. package/src/components/Multisuggest/Multisuggest.vue +0 -858
  182. package/src/components/Multisuggest/index.js +0 -3
  183. package/src/components/OptionsList/OptionsList.vue +0 -61
  184. package/src/components/OptionsList/index.js +0 -3
  185. package/src/components/OptionsListItem/OptionsListItem.vue +0 -191
  186. package/src/components/OptionsListItem/index.js +0 -3
  187. package/src/components/Percent/Percent.vue +0 -81
  188. package/src/components/Percent/index.js +0 -3
  189. package/src/components/Skeleton/Skeleton.vue +0 -137
  190. package/src/components/Skeleton/index.js +0 -3
  191. package/src/components/Step/Step.vue +0 -230
  192. package/src/components/Step/index.js +0 -3
  193. package/src/components/Steps/Steps.vue +0 -18
  194. package/src/components/Steps/index.js +0 -3
  195. package/src/components/Tip/Tip.vue +0 -193
  196. package/src/components/Tip/index.js +0 -3
  197. package/src/components/index.js +0 -31
  198. package/src/locale/index.js +0 -78
  199. package/src/main.js +0 -26
  200. package/src/mixins/floatFormatter.js +0 -53
  201. package/src/mixins/locale.js +0 -9
  202. package/src/utils/currency.js +0 -180
  203. package/src/utils/filters.js +0 -84
@@ -0,0 +1,62 @@
1
+ import { provide, reactive } from "vue";
2
+ import { ElScrollbar, ElRow, ElIcon, ElTag, ElDivider, ElTooltip, ClickOutside } from "element-plus";
3
+ import { ArrowDown as arrow_down_default } from "../../../node_modules/@element-plus/icons-vue/dist/index.mjs";
4
+ import ElSelectMenu from "./select-dropdown.vue.mjs";
5
+ import ElOption from "./option.vue.mjs";
6
+ import { useSelect } from "./useSelect.mjs";
7
+ function autosuggestCore(component_name, propsDefinition) {
8
+ return {
9
+ name: component_name,
10
+ componentName: component_name,
11
+ directives: {
12
+ ClickOutside
13
+ },
14
+ components: {
15
+ ArrowDown: arrow_down_default,
16
+ ElOption,
17
+ ElSelectMenu,
18
+ ElTooltip,
19
+ ElDivider,
20
+ ElTag,
21
+ ElIcon,
22
+ ElRow,
23
+ ElScrollbar
24
+ },
25
+ props: propsDefinition,
26
+ emits: [
27
+ "update:modelValue",
28
+ "change",
29
+ "remove-tag",
30
+ "clear",
31
+ "visible-change",
32
+ "focus",
33
+ "blur"
34
+ ],
35
+ setup(props, context) {
36
+ const API = useSelect(props, context);
37
+ provide(
38
+ "select",
39
+ reactive({
40
+ props,
41
+ states: API.states,
42
+ optionsArray: API.optionsArray,
43
+ handleOptionSelect: API.handleOptionSelect,
44
+ onOptionCreate: API.onOptionCreate,
45
+ onOptionDestroy: API.onOptionDestroy,
46
+ selectRef: API.selectRef,
47
+ setSelected: API.setSelected
48
+ })
49
+ );
50
+ return API;
51
+ },
52
+ data() {
53
+ return {
54
+ visible: false,
55
+ tooltipVisible: false
56
+ };
57
+ }
58
+ };
59
+ }
60
+ export {
61
+ autosuggestCore as default
62
+ };
@@ -0,0 +1,11 @@
1
+ import autosuggestProps from "./autosuggest-props.mjs";
2
+ const multisuggestProps = {
3
+ ...autosuggestProps,
4
+ multiple: {
5
+ type: Boolean,
6
+ default: true
7
+ }
8
+ };
9
+ export {
10
+ multisuggestProps as default
11
+ };
@@ -0,0 +1,118 @@
1
+ import { defineComponent, withDirectives, createElementBlock, openBlock, withModifiers, normalizeClass, renderSlot, createElementVNode, toDisplayString, vShow, computed, unref, toRefs, reactive, getCurrentInstance, onBeforeUnmount, nextTick } from "vue";
2
+ import { useOption } from "./useOption.mjs";
3
+ import _export_sfc from "../../../_virtual/_plugin-vue_export-helper.mjs";
4
+ import { useNamespace } from "../../../node_modules/element-plus/es/hooks/use-namespace/index.mjs";
5
+ import { useId } from "../../../node_modules/element-plus/es/hooks/use-id/index.mjs";
6
+ const _sfc_main = defineComponent({
7
+ name: "ElOption",
8
+ componentName: "ElOption",
9
+ props: {
10
+ /**
11
+ * @description value of option
12
+ */
13
+ value: {
14
+ required: true,
15
+ type: [String, Number, Boolean, Object, null]
16
+ },
17
+ /**
18
+ * @description label of option, same as `value` if omitted
19
+ */
20
+ label: [String, Number],
21
+ created: Boolean,
22
+ /**
23
+ * @description whether option is disabled
24
+ */
25
+ disabled: Boolean,
26
+ /**
27
+ * @tagplus
28
+ * @description recebe o item inteiro para ser emitido, ao inves de somente key/value
29
+ */
30
+ item: {
31
+ type: [String, Number, Boolean, Object],
32
+ required: true
33
+ }
34
+ },
35
+ setup(props) {
36
+ const ns = useNamespace("select");
37
+ const id = useId();
38
+ const containerKls = computed(() => [
39
+ ns.be("dropdown", "item"),
40
+ ns.is("disabled", unref(isDisabled)),
41
+ ns.is("selected", unref(itemSelected)),
42
+ ns.is("hovering", unref(hover))
43
+ ]);
44
+ const states = reactive({
45
+ index: -1,
46
+ groupDisabled: false,
47
+ visible: true,
48
+ hover: false
49
+ });
50
+ const {
51
+ currentLabel,
52
+ itemSelected,
53
+ isDisabled,
54
+ select,
55
+ hoverItem,
56
+ updateOption
57
+ } = useOption(props, states);
58
+ const { visible, hover } = toRefs(states);
59
+ const vm = getCurrentInstance().proxy;
60
+ select.onOptionCreate(vm);
61
+ onBeforeUnmount(() => {
62
+ const key = vm.value;
63
+ const { selected } = select.states;
64
+ const selectedOptions = select.props.multiple ? selected : [selected];
65
+ const doesSelected = selectedOptions.some((item) => {
66
+ return item.value === vm.value;
67
+ });
68
+ nextTick(() => {
69
+ if (select.states.cachedOptions.get(key) === vm && !doesSelected) {
70
+ select.states.cachedOptions.delete(key);
71
+ }
72
+ });
73
+ select.onOptionDestroy(key, vm);
74
+ });
75
+ function selectOptionClick() {
76
+ if (props.disabled !== true && states.groupDisabled !== true) {
77
+ select.handleOptionSelect(vm);
78
+ }
79
+ }
80
+ return {
81
+ ns,
82
+ id,
83
+ containerKls,
84
+ currentLabel,
85
+ itemSelected,
86
+ isDisabled,
87
+ select,
88
+ hoverItem,
89
+ updateOption,
90
+ visible,
91
+ hover,
92
+ selectOptionClick,
93
+ states
94
+ };
95
+ }
96
+ });
97
+ const _hoisted_1 = ["id", "aria-disabled", "aria-selected"];
98
+ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
99
+ return withDirectives((openBlock(), createElementBlock("li", {
100
+ id: _ctx.id,
101
+ class: normalizeClass(_ctx.containerKls),
102
+ role: "option",
103
+ "aria-disabled": _ctx.isDisabled || void 0,
104
+ "aria-selected": _ctx.itemSelected,
105
+ onMouseenter: _cache[0] || (_cache[0] = (...args) => _ctx.hoverItem && _ctx.hoverItem(...args)),
106
+ onClick: _cache[1] || (_cache[1] = withModifiers((...args) => _ctx.selectOptionClick && _ctx.selectOptionClick(...args), ["stop"]))
107
+ }, [
108
+ renderSlot(_ctx.$slots, "default", {}, () => [
109
+ createElementVNode("span", null, toDisplayString(_ctx.currentLabel), 1)
110
+ ])
111
+ ], 42, _hoisted_1)), [
112
+ [vShow, _ctx.visible]
113
+ ]);
114
+ }
115
+ const ElOption = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
116
+ export {
117
+ ElOption as default
118
+ };
@@ -0,0 +1,62 @@
1
+ import { defineComponent, createElementBlock, openBlock, normalizeStyle, normalizeClass, createCommentVNode, renderSlot, ref } from "vue";
2
+ import { useResizeObserver } from "../../../node_modules/@vueuse/core/index.mjs";
3
+ import _export_sfc from "../../../_virtual/_plugin-vue_export-helper.mjs";
4
+ import { useNamespace } from "../../../node_modules/element-plus/es/hooks/use-namespace/index.mjs";
5
+ const _sfc_main = defineComponent({
6
+ name: "ElSelectDropdown",
7
+ componentName: "ElSelectDropdown",
8
+ inject: ["select"],
9
+ setup() {
10
+ const ns = useNamespace("select");
11
+ const minWidth = ref("");
12
+ return {
13
+ ns,
14
+ minWidth
15
+ };
16
+ },
17
+ computed: {
18
+ popperClass() {
19
+ return this.select.popperClass;
20
+ },
21
+ isMultiple() {
22
+ return this.select.multiple;
23
+ },
24
+ isFitInputWidth() {
25
+ return this.select.fitInputWidth;
26
+ }
27
+ },
28
+ mounted() {
29
+ this.updateMinWidth();
30
+ useResizeObserver(this.select.selectRef, this.updateMinWidth);
31
+ },
32
+ methods: {
33
+ updateMinWidth() {
34
+ var _a;
35
+ this.minWidth = `${(_a = this.select.selectRef) == null ? void 0 : _a.offsetWidth}px`;
36
+ }
37
+ }
38
+ });
39
+ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
40
+ return openBlock(), createElementBlock("div", {
41
+ class: normalizeClass([_ctx.ns.b("dropdown"), _ctx.ns.is("multiple", _ctx.isMultiple), _ctx.popperClass]),
42
+ style: normalizeStyle({ [_ctx.isFitInputWidth ? "width" : "minWidth"]: _ctx.minWidth })
43
+ }, [
44
+ _ctx.$slots.header ? (openBlock(), createElementBlock("div", {
45
+ key: 0,
46
+ class: normalizeClass(_ctx.ns.be("dropdown", "header"))
47
+ }, [
48
+ renderSlot(_ctx.$slots, "header")
49
+ ], 2)) : createCommentVNode("", true),
50
+ renderSlot(_ctx.$slots, "default"),
51
+ _ctx.$slots.footer ? (openBlock(), createElementBlock("div", {
52
+ key: 1,
53
+ class: normalizeClass(_ctx.ns.be("dropdown", "footer"))
54
+ }, [
55
+ renderSlot(_ctx.$slots, "footer")
56
+ ], 2)) : createCommentVNode("", true)
57
+ ], 6);
58
+ }
59
+ const ElSelectMenu = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
60
+ export {
61
+ ElSelectMenu as default
62
+ };
@@ -0,0 +1,93 @@
1
+ import { inject, computed, getCurrentInstance, toRaw, watch } from "vue";
2
+ import { get, isEqual } from "lodash-es";
3
+ import { escapeStringRegexp } from "../../utils/strings.mjs";
4
+ import { isObject } from "../../../node_modules/@vue/shared/dist/shared.esm-bundler.mjs";
5
+ function useOption(props, states) {
6
+ const select = inject("select");
7
+ const selectGroup = inject("ElSelectGroup", { disabled: false });
8
+ const itemSelected = computed(() => {
9
+ if (select.props.multiple) {
10
+ return contains(select.props.modelValue, props.value);
11
+ } else {
12
+ return contains([select.props.modelValue], props.value);
13
+ }
14
+ });
15
+ const limitReached = computed(() => {
16
+ if (select.props.multiple) {
17
+ const modelValue = select.props.modelValue || [];
18
+ return !itemSelected.value && modelValue.length >= select.props.multipleLimit && select.props.multipleLimit > 0;
19
+ } else {
20
+ return false;
21
+ }
22
+ });
23
+ const currentLabel = computed(() => {
24
+ return props.label || (isObject(props.value) ? "" : props.value);
25
+ });
26
+ const currentValue = computed(() => {
27
+ return props.value || props.label || "";
28
+ });
29
+ const isDisabled = computed(() => {
30
+ return props.disabled || states.groupDisabled || limitReached.value;
31
+ });
32
+ const instance = getCurrentInstance();
33
+ const contains = (arr = [], target) => {
34
+ if (!isObject(props.value)) {
35
+ return arr && arr.includes(target);
36
+ } else {
37
+ const valueKey = select.props.valueKey;
38
+ return arr && arr.some((item) => {
39
+ return toRaw(get(item, valueKey)) === get(target, valueKey);
40
+ });
41
+ }
42
+ };
43
+ const hoverItem = () => {
44
+ if (!props.disabled && !selectGroup.disabled) {
45
+ select.states.hoveringIndex = select.optionsArray.indexOf(instance.proxy);
46
+ }
47
+ };
48
+ const updateOption = (query) => {
49
+ const regexp = new RegExp(escapeStringRegexp(query), "i");
50
+ states.visible = regexp.test(currentLabel.value) || props.created;
51
+ };
52
+ watch(
53
+ () => currentLabel.value,
54
+ () => {
55
+ if (!props.created && !select.props.remote) select.setSelected();
56
+ }
57
+ );
58
+ watch(
59
+ () => props.value,
60
+ (val, oldVal) => {
61
+ const { remote, valueKey } = select.props;
62
+ if (!isEqual(val, oldVal)) {
63
+ select.onOptionDestroy(oldVal, instance.proxy);
64
+ select.onOptionCreate(instance.proxy);
65
+ }
66
+ if (!props.created && !remote) {
67
+ if (valueKey && isObject(val) && isObject(oldVal) && val[valueKey] === oldVal[valueKey]) {
68
+ return;
69
+ }
70
+ select.setSelected();
71
+ }
72
+ }
73
+ );
74
+ watch(
75
+ () => selectGroup.disabled,
76
+ () => {
77
+ states.groupDisabled = selectGroup.disabled;
78
+ },
79
+ { immediate: true }
80
+ );
81
+ return {
82
+ select,
83
+ currentLabel,
84
+ currentValue,
85
+ itemSelected,
86
+ isDisabled,
87
+ hoverItem,
88
+ updateOption
89
+ };
90
+ }
91
+ export {
92
+ useOption
93
+ };