@volverjs/ui-vue 0.0.4 → 0.0.5-beta.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 (204) hide show
  1. package/README.md +2 -2
  2. package/auto-imports.d.ts +12 -3
  3. package/bin/icons.cjs +1 -73
  4. package/dist/Volver.d.ts +19 -11
  5. package/dist/components/VvAccordion/VvAccordion.es.js +165 -106
  6. package/dist/components/VvAccordion/VvAccordion.umd.js +1 -1
  7. package/dist/components/VvAccordion/VvAccordion.vue.d.ts +4 -1
  8. package/dist/components/VvAccordion/index.d.ts +8 -3
  9. package/dist/components/VvAccordionGroup/VvAccordionGroup.es.js +264 -164
  10. package/dist/components/VvAccordionGroup/VvAccordionGroup.umd.js +1 -1
  11. package/dist/components/VvAccordionGroup/VvAccordionGroup.vue.d.ts +15 -12
  12. package/dist/components/VvAccordionGroup/index.d.ts +8 -0
  13. package/dist/components/VvAction/VvAction.es.js +266 -98
  14. package/dist/components/VvAction/VvAction.umd.js +1 -1
  15. package/dist/components/VvAction/VvAction.vue.d.ts +12 -12
  16. package/dist/components/VvAction/index.d.ts +2 -2
  17. package/dist/components/VvBadge/VvBadge.es.js +203 -44
  18. package/dist/components/VvBadge/VvBadge.umd.js +1 -1
  19. package/dist/components/VvBadge/VvBadge.vue.d.ts +2 -2
  20. package/dist/components/VvBadge/index.d.ts +1 -1
  21. package/dist/components/VvBreadcrumb/VvBreadcrumb.es.js +237 -75
  22. package/dist/components/VvBreadcrumb/VvBreadcrumb.umd.js +1 -1
  23. package/dist/components/VvBreadcrumb/VvBreadcrumb.vue.d.ts +11 -11
  24. package/dist/components/VvBreadcrumb/index.d.ts +1 -1
  25. package/dist/components/VvButton/VvButton.es.js +636 -360
  26. package/dist/components/VvButton/VvButton.umd.js +1 -1
  27. package/dist/components/VvButton/VvButton.vue.d.ts +18 -18
  28. package/dist/components/VvButton/index.d.ts +13 -13
  29. package/dist/components/VvButtonGroup/VvButtonGroup.es.js +251 -79
  30. package/dist/components/VvButtonGroup/VvButtonGroup.umd.js +1 -1
  31. package/dist/components/VvButtonGroup/VvButtonGroup.vue.d.ts +2 -2
  32. package/dist/components/VvButtonGroup/index.d.ts +1 -1
  33. package/dist/components/VvCard/VvCard.es.js +57 -38
  34. package/dist/components/VvCard/VvCard.umd.js +1 -1
  35. package/dist/components/VvCheckbox/VvCheckbox.es.js +552 -274
  36. package/dist/components/VvCheckbox/VvCheckbox.umd.js +1 -1
  37. package/dist/components/VvCheckbox/VvCheckbox.vue.d.ts +2 -2
  38. package/dist/components/VvCheckbox/index.d.ts +5 -5
  39. package/dist/components/VvCheckboxGroup/VvCheckboxGroup.es.js +651 -340
  40. package/dist/components/VvCheckboxGroup/VvCheckboxGroup.umd.js +1 -1
  41. package/dist/components/VvCheckboxGroup/VvCheckboxGroup.vue.d.ts +7 -7
  42. package/dist/components/VvCheckboxGroup/index.d.ts +3 -3
  43. package/dist/components/VvCombobox/VvCombobox.es.js +1532 -983
  44. package/dist/components/VvCombobox/VvCombobox.umd.js +1 -1
  45. package/dist/components/VvCombobox/VvCombobox.vue.d.ts +125 -51
  46. package/dist/components/VvCombobox/index.d.ts +36 -10
  47. package/dist/components/VvDialog/VvDialog.es.js +377 -141
  48. package/dist/components/VvDialog/VvDialog.umd.js +1 -1
  49. package/dist/components/VvDialog/VvDialog.vue.d.ts +12 -3
  50. package/dist/components/VvDialog/index.d.ts +4 -1
  51. package/dist/components/VvDropdown/VvDropdown.es.js +440 -244
  52. package/dist/components/VvDropdown/VvDropdown.umd.js +1 -1
  53. package/dist/components/VvDropdown/VvDropdown.vue.d.ts +113 -41
  54. package/dist/components/VvDropdown/VvDropdownAction.vue.d.ts +13 -13
  55. package/dist/components/VvDropdown/VvDropdownOption.vue.d.ts +2 -2
  56. package/dist/components/VvDropdown/index.d.ts +35 -11
  57. package/dist/components/VvDropdownAction/VvDropdownAction.es.js +363 -160
  58. package/dist/components/VvDropdownAction/VvDropdownAction.umd.js +1 -1
  59. package/dist/components/VvDropdownItem/VvDropdownItem.es.js +43 -28
  60. package/dist/components/VvDropdownItem/VvDropdownItem.umd.js +1 -1
  61. package/dist/components/VvDropdownOption/VvDropdownOption.es.js +275 -90
  62. package/dist/components/VvDropdownOption/VvDropdownOption.umd.js +1 -1
  63. package/dist/components/VvIcon/VvIcon.es.js +113 -65
  64. package/dist/components/VvIcon/VvIcon.umd.js +1 -1
  65. package/dist/components/VvIcon/VvIcon.vue.d.ts +7 -7
  66. package/dist/components/VvIcon/index.d.ts +2 -2
  67. package/dist/components/VvInputText/VvInputPasswordAction.d.ts +2 -2
  68. package/dist/components/VvInputText/VvInputStepAction.d.ts +1 -1
  69. package/dist/components/VvInputText/VvInputText.es.js +974 -460
  70. package/dist/components/VvInputText/VvInputText.umd.js +1 -1
  71. package/dist/components/VvInputText/VvInputText.vue.d.ts +96 -16
  72. package/dist/components/VvInputText/VvInputTextActions.d.ts +1 -1
  73. package/dist/components/VvInputText/index.d.ts +64 -11
  74. package/dist/components/VvProgress/VvProgress.es.js +206 -45
  75. package/dist/components/VvProgress/VvProgress.umd.js +1 -1
  76. package/dist/components/VvProgress/VvProgress.vue.d.ts +2 -2
  77. package/dist/components/VvProgress/index.d.ts +1 -1
  78. package/dist/components/VvRadio/VvRadio.es.js +489 -238
  79. package/dist/components/VvRadio/VvRadio.umd.js +1 -1
  80. package/dist/components/VvRadio/VvRadio.vue.d.ts +2 -2
  81. package/dist/components/VvRadio/index.d.ts +5 -5
  82. package/dist/components/VvRadioGroup/VvRadioGroup.es.js +588 -304
  83. package/dist/components/VvRadioGroup/VvRadioGroup.umd.js +1 -1
  84. package/dist/components/VvRadioGroup/VvRadioGroup.vue.d.ts +7 -7
  85. package/dist/components/VvRadioGroup/index.d.ts +3 -3
  86. package/dist/components/VvSelect/VvSelect.es.js +621 -324
  87. package/dist/components/VvSelect/VvSelect.umd.js +1 -1
  88. package/dist/components/VvSelect/VvSelect.vue.d.ts +13 -13
  89. package/dist/components/VvSelect/index.d.ts +3 -3
  90. package/dist/components/VvTextarea/VvTextarea.es.js +664 -353
  91. package/dist/components/VvTextarea/VvTextarea.umd.js +1 -1
  92. package/dist/components/VvTextarea/VvTextarea.vue.d.ts +10 -10
  93. package/dist/components/VvTextarea/index.d.ts +2 -2
  94. package/dist/components/VvTooltip/VvTooltip.es.js +205 -47
  95. package/dist/components/VvTooltip/VvTooltip.umd.js +1 -1
  96. package/dist/components/VvTooltip/VvTooltip.vue.d.ts +7 -7
  97. package/dist/components/VvTooltip/index.d.ts +2 -2
  98. package/dist/components/index.es.js +3508 -2231
  99. package/dist/components/index.umd.js +1 -1
  100. package/dist/composables/dropdown/useInjectDropdown.d.ts +1 -1
  101. package/dist/composables/dropdown/useProvideDropdown.d.ts +3 -3
  102. package/dist/composables/group/useInjectedGroupState.d.ts +2 -2
  103. package/dist/composables/group/useProvideGroupState.d.ts +1 -1
  104. package/dist/composables/useComponentFocus.d.ts +1 -1
  105. package/dist/composables/useComponentIcon.d.ts +7 -7
  106. package/dist/composables/useDebouncedInput.d.ts +4 -1
  107. package/dist/composables/useDefaults.d.ts +2 -0
  108. package/dist/composables/useModifiers.d.ts +1 -1
  109. package/dist/composables/useOptions.d.ts +2 -2
  110. package/dist/composables/useTextCount.d.ts +3 -3
  111. package/dist/composables/useUniqueId.d.ts +1 -1
  112. package/dist/composables/useVolver.d.ts +1 -1
  113. package/dist/directives/index.es.js +215 -55
  114. package/dist/directives/index.umd.js +1 -1
  115. package/dist/directives/v-tooltip.es.js +212 -53
  116. package/dist/directives/v-tooltip.umd.js +1 -1
  117. package/dist/icons.es.js +38 -23
  118. package/dist/icons.umd.js +1 -1
  119. package/dist/index.d.ts +0 -1
  120. package/dist/index.es.js +112 -3607
  121. package/dist/index.umd.js +1 -1
  122. package/dist/props/index.d.ts +40 -16
  123. package/dist/resolvers/unplugin.d.ts +7 -1
  124. package/dist/resolvers/unplugin.es.js +77 -37
  125. package/dist/resolvers/unplugin.umd.js +1 -1
  126. package/dist/stories/InputText/InputText.settings.d.ts +53 -0
  127. package/dist/stories/argTypes.d.ts +1 -1
  128. package/package.json +114 -36
  129. package/src/Volver.ts +49 -22
  130. package/src/assets/icons/detailed.json +1 -1
  131. package/src/assets/icons/normal.json +1 -1
  132. package/src/assets/icons/simple.json +1 -1
  133. package/src/components/VvAccordion/VvAccordion.vue +19 -22
  134. package/src/components/VvAccordion/index.ts +12 -4
  135. package/src/components/VvAccordionGroup/VvAccordionGroup.vue +19 -10
  136. package/src/components/VvAccordionGroup/index.ts +8 -0
  137. package/src/components/VvAction/VvAction.vue +7 -7
  138. package/src/components/VvAction/index.ts +1 -1
  139. package/src/components/VvBadge/VvBadge.vue +2 -2
  140. package/src/components/VvBadge/index.ts +1 -1
  141. package/src/components/VvBreadcrumb/VvBreadcrumb.vue +3 -3
  142. package/src/components/VvButton/VvButton.vue +11 -11
  143. package/src/components/VvButton/index.ts +10 -9
  144. package/src/components/VvButtonGroup/VvButtonGroup.vue +4 -7
  145. package/src/components/VvButtonGroup/index.ts +1 -1
  146. package/src/components/VvCard/VvCard.vue +2 -2
  147. package/src/components/VvCheckbox/VvCheckbox.vue +3 -7
  148. package/src/components/VvCheckbox/index.ts +11 -7
  149. package/src/components/VvCheckboxGroup/VvCheckboxGroup.vue +7 -10
  150. package/src/components/VvCheckboxGroup/index.ts +1 -1
  151. package/src/components/VvCombobox/VvCombobox.vue +39 -23
  152. package/src/components/VvCombobox/index.ts +1 -1
  153. package/src/components/VvDialog/VvDialog.vue +28 -11
  154. package/src/components/VvDialog/index.ts +5 -2
  155. package/src/components/VvDropdown/VvDropdown.vue +6 -5
  156. package/src/components/VvDropdown/VvDropdownAction.vue +7 -5
  157. package/src/components/VvDropdown/VvDropdownOption.vue +17 -10
  158. package/src/components/VvDropdown/index.ts +3 -3
  159. package/src/components/VvIcon/VvIcon.vue +3 -3
  160. package/src/components/VvIcon/index.ts +3 -3
  161. package/src/components/VvInputText/VvInputClearAction.ts +2 -2
  162. package/src/components/VvInputText/VvInputPasswordAction.ts +3 -4
  163. package/src/components/VvInputText/VvInputStepAction.ts +3 -2
  164. package/src/components/VvInputText/VvInputText.vue +128 -35
  165. package/src/components/VvInputText/VvInputTextActions.ts +5 -8
  166. package/src/components/VvInputText/index.ts +62 -1
  167. package/src/components/VvProgress/VvProgress.vue +2 -2
  168. package/src/components/VvProgress/index.ts +1 -1
  169. package/src/components/VvRadio/VvRadio.vue +3 -7
  170. package/src/components/VvRadio/index.ts +11 -7
  171. package/src/components/VvRadioGroup/VvRadioGroup.vue +7 -10
  172. package/src/components/VvRadioGroup/index.ts +1 -1
  173. package/src/components/VvSelect/VvSelect.vue +4 -4
  174. package/src/components/VvSelect/index.ts +1 -1
  175. package/src/components/VvTextarea/VvTextarea.vue +4 -4
  176. package/src/components/VvTextarea/index.ts +1 -1
  177. package/src/components/VvTooltip/VvTooltip.vue +2 -2
  178. package/src/components/VvTooltip/index.ts +3 -3
  179. package/src/composables/dropdown/useInjectDropdown.ts +2 -2
  180. package/src/composables/dropdown/useProvideDropdown.ts +2 -2
  181. package/src/composables/group/useInjectedGroupState.ts +1 -1
  182. package/src/composables/group/useProvideGroupState.ts +1 -1
  183. package/src/composables/useComponentIcon.ts +1 -1
  184. package/src/composables/useDebouncedInput.ts +10 -3
  185. package/src/composables/useDefaults.ts +89 -0
  186. package/src/composables/useModifiers.ts +4 -2
  187. package/src/composables/useOptions.ts +1 -1
  188. package/src/composables/useVolver.ts +2 -2
  189. package/src/directives/index.ts +1 -1
  190. package/src/directives/v-tooltip.ts +2 -2
  191. package/src/index.ts +0 -2
  192. package/src/props/index.ts +8 -8
  193. package/src/resolvers/unplugin.ts +15 -1
  194. package/src/stories/Accordion/Accordion.stories.mdx +8 -2
  195. package/src/stories/Accordion/Accordion.test.ts +21 -15
  196. package/src/stories/Accordion/AccordionSlots.stories.mdx +8 -8
  197. package/src/stories/AccordionGroup/AccordionGroup.stories.mdx +17 -1
  198. package/src/stories/AccordionGroup/AccordionGroup.test.ts +18 -12
  199. package/src/stories/AccordionGroup/AccordionGroupSlots.stories.mdx +1 -1
  200. package/src/stories/InputText/InputText.settings.ts +53 -0
  201. package/src/stories/InputText/InputText.stories.mdx +40 -0
  202. package/src/stories/InputText/InputText.test.ts +5 -2
  203. package/src/stories/argTypes.ts +2 -2
  204. package/src/types/group.d.ts +5 -0
@@ -1,7 +1,7 @@
1
- import { inject as V, computed as g, unref as p, defineComponent as G, ref as D, toRefs as z, openBlock as k, createBlock as j, mergeProps as w, createCommentVNode as I, watch as ee, resolveDynamicComponent as te, withCtx as K, renderSlot as $, createTextVNode as U, toDisplayString as N, toRef as ne, useAttrs as re, useSlots as oe, createElementBlock as L, Fragment as se } from "vue";
2
- import { iconExists as B, Icon as le, addIcon as ae } from "@iconify/vue";
3
- import { nanoid as ie } from "nanoid";
4
- const ue = {
1
+ import { inject, computed, unref, defineComponent, ref, toRefs, openBlock, createBlock, mergeProps, createCommentVNode, watch, resolveDynamicComponent, withCtx, renderSlot, createTextVNode, toDisplayString, toRef, useAttrs, useSlots, createElementBlock, Fragment } from "vue";
2
+ import { iconExists, Icon, addIcon } from "@iconify/vue";
3
+ import { nanoid } from "nanoid";
4
+ const VvIconProps = {
5
5
  /**
6
6
  * Color
7
7
  */
@@ -25,7 +25,7 @@ const ue = {
25
25
  */
26
26
  name: {
27
27
  type: String,
28
- required: !0
28
+ required: true
29
29
  },
30
30
  /**
31
31
  * By default 'vv'
@@ -95,77 +95,170 @@ const ue = {
95
95
  type: [String, Array]
96
96
  }
97
97
  };
98
- var S = /* @__PURE__ */ ((e) => (e.left = "left", e.right = "right", e.top = "top", e.bottom = "bottom", e))(S || {}), Y = /* @__PURE__ */ ((e) => (e.topStart = "top-start", e.topEnd = "top-end", e.bottomStart = "bottom-start", e.bottomEnd = "bottom-end", e.leftStart = "left-start", e.leftEnd = "left-end", e.rightStart = "right-start", e.rightEnd = "right-end", e))(Y || {}), C = /* @__PURE__ */ ((e) => (e.before = "before", e.after = "after", e))(C || {}), R = /* @__PURE__ */ ((e) => (e.button = "button", e.submit = "submit", e.reset = "reset", e))(R || {}), h = /* @__PURE__ */ ((e) => (e.nuxtLink = "nuxt-link", e.routerLink = "router-link", e.a = "a", e.button = "button", e))(h || {}), W = /* @__PURE__ */ ((e) => (e._blank = "_blank", e._self = "_self", e._parent = "_parent", e._top = "_top", e))(W || {});
99
- const ce = Symbol.for("volver"), fe = Symbol.for("buttonGroup"), de = Symbol.for("dropdownTrigger"), ve = Symbol.for("dropdownAction");
100
- function H() {
101
- return V(ce);
98
+ var Side = /* @__PURE__ */ ((Side2) => {
99
+ Side2["left"] = "left";
100
+ Side2["right"] = "right";
101
+ Side2["top"] = "top";
102
+ Side2["bottom"] = "bottom";
103
+ return Side2;
104
+ })(Side || {});
105
+ var Placement = /* @__PURE__ */ ((Placement2) => {
106
+ Placement2["topStart"] = "top-start";
107
+ Placement2["topEnd"] = "top-end";
108
+ Placement2["bottomStart"] = "bottom-start";
109
+ Placement2["bottomEnd"] = "bottom-end";
110
+ Placement2["leftStart"] = "left-start";
111
+ Placement2["leftEnd"] = "left-end";
112
+ Placement2["rightStart"] = "right-start";
113
+ Placement2["rightEnd"] = "right-end";
114
+ return Placement2;
115
+ })(Placement || {});
116
+ var Position = /* @__PURE__ */ ((Position2) => {
117
+ Position2["before"] = "before";
118
+ Position2["after"] = "after";
119
+ return Position2;
120
+ })(Position || {});
121
+ var ButtonType = /* @__PURE__ */ ((ButtonType2) => {
122
+ ButtonType2["button"] = "button";
123
+ ButtonType2["submit"] = "submit";
124
+ ButtonType2["reset"] = "reset";
125
+ return ButtonType2;
126
+ })(ButtonType || {});
127
+ var ActionTag = /* @__PURE__ */ ((ActionTag2) => {
128
+ ActionTag2["nuxtLink"] = "nuxt-link";
129
+ ActionTag2["routerLink"] = "router-link";
130
+ ActionTag2["a"] = "a";
131
+ ActionTag2["button"] = "button";
132
+ return ActionTag2;
133
+ })(ActionTag || {});
134
+ var AnchorTarget = /* @__PURE__ */ ((AnchorTarget2) => {
135
+ AnchorTarget2["_blank"] = "_blank";
136
+ AnchorTarget2["_self"] = "_self";
137
+ AnchorTarget2["_parent"] = "_parent";
138
+ AnchorTarget2["_top"] = "_top";
139
+ return AnchorTarget2;
140
+ })(AnchorTarget || {});
141
+ const INJECTION_KEY_VOLVER = Symbol.for("volver");
142
+ const INJECTION_KEY_BUTTON_GROUP = Symbol.for("buttonGroup");
143
+ const INJECTION_KEY_DROPDOWN_TRIGGER = Symbol.for("dropdownTrigger");
144
+ const INJECTION_KEY_DROPDOWN_ACTION = Symbol.for("dropdownAction");
145
+ function useVolver() {
146
+ return inject(INJECTION_KEY_VOLVER);
102
147
  }
103
- function Q(e, t, o) {
104
- return g(() => {
105
- const r = {
106
- [e]: !0
107
- }, s = typeof (t == null ? void 0 : t.value) == "string" ? t.value.split(" ") : t == null ? void 0 : t.value;
108
- return s && Array.isArray(s) && s.forEach((i) => {
109
- r[`${e}--${i}`] = !0;
110
- }), o && Object.keys(o.value).forEach((i) => {
111
- r[`${e}--${i}`] = p(o.value[i]);
112
- }), r;
148
+ function useModifiers(prefix, modifiers, others) {
149
+ return computed(() => {
150
+ const toReturn = {
151
+ [prefix]: true
152
+ };
153
+ const modifiersArray = typeof (modifiers == null ? void 0 : modifiers.value) === "string" ? modifiers.value.split(" ") : modifiers == null ? void 0 : modifiers.value;
154
+ if (modifiersArray) {
155
+ if (Array.isArray(modifiersArray)) {
156
+ modifiersArray.forEach((modifier) => {
157
+ if (modifier) {
158
+ toReturn[`${prefix}--${modifier}`] = true;
159
+ }
160
+ });
161
+ }
162
+ }
163
+ if (others) {
164
+ Object.keys(others.value).forEach((key) => {
165
+ toReturn[`${prefix}--${key}`] = unref(others.value[key]);
166
+ });
167
+ }
168
+ return toReturn;
113
169
  });
114
170
  }
115
- const pe = {
171
+ const __default__$2 = {
116
172
  name: "VvIcon"
117
- }, T = /* @__PURE__ */ G({
118
- ...pe,
119
- props: ue,
120
- setup(e) {
121
- const t = e, o = D(!0), r = H(), { modifiers: s } = z(t), i = Q("vv-icon", s), v = g(() => t.provider || (r == null ? void 0 : r.provider)), f = g(() => {
122
- const n = t.name ?? "", l = `@${v.value}:${t.prefix}:${t.name}`;
123
- return B(n) ? n : B(l) ? l : (r == null ? void 0 : r.iconsCollections.find(
124
- (m) => {
125
- const b = `@${v.value}:${m.prefix}:${n}`;
126
- if (B(b))
127
- return b;
128
- }
129
- )) || n;
173
+ };
174
+ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
175
+ ...__default__$2,
176
+ props: VvIconProps,
177
+ setup(__props) {
178
+ const props = __props;
179
+ const show = ref(true);
180
+ const volver = useVolver();
181
+ const { modifiers } = toRefs(props);
182
+ const bemCssClasses = useModifiers("vv-icon", modifiers);
183
+ const provider = computed(() => {
184
+ return props.provider || (volver == null ? void 0 : volver.iconsProvider);
185
+ });
186
+ const icon = computed(() => {
187
+ const _name = props.name ?? "";
188
+ const iconName = `@${provider.value}:${props.prefix}:${props.name}`;
189
+ if (iconExists(_name)) {
190
+ return _name;
191
+ } else if (iconExists(iconName)) {
192
+ return iconName;
193
+ } else {
194
+ return (volver == null ? void 0 : volver.iconsCollections.find(
195
+ (iconsCollection) => {
196
+ const icon2 = `@${provider.value}:${iconsCollection.prefix}:${_name}`;
197
+ if (iconExists(icon2)) {
198
+ return icon2;
199
+ }
200
+ }
201
+ )) || _name;
202
+ }
130
203
  });
131
- function d(n) {
132
- let l = null;
133
- if (typeof window > "u") {
134
- const { JSDOM: O } = require("jsdom");
135
- l = new O().window;
204
+ function getSvgContent(svg) {
205
+ let dom = null;
206
+ if (typeof window === "undefined") {
207
+ const { JSDOM } = require("jsdom");
208
+ dom = new JSDOM().window;
136
209
  }
137
- return (l ? new l.DOMParser() : new window.DOMParser()).parseFromString(n, "text/html").querySelector("svg");
210
+ const domParser = dom ? new dom.DOMParser() : new window.DOMParser();
211
+ const svgDomString = domParser.parseFromString(svg, "text/html");
212
+ const svgEl = svgDomString.querySelector("svg");
213
+ return svgEl;
138
214
  }
139
- function a(n) {
140
- const l = d(n), m = (l == null ? void 0 : l.innerHTML.trim()) || "";
141
- l && m && ae(`@${v.value}:${t.prefix}:${t.name}`, {
142
- body: m,
143
- // Set height and width from svg content
144
- height: l.viewBox.baseVal.height,
145
- width: l.viewBox.baseVal.width
146
- });
215
+ function addIconFromSvg(svg) {
216
+ const svgContentEl = getSvgContent(svg);
217
+ const svgContent = (svgContentEl == null ? void 0 : svgContentEl.innerHTML.trim()) || "";
218
+ if (svgContentEl && svgContent) {
219
+ addIcon(`@${provider.value}:${props.prefix}:${props.name}`, {
220
+ body: svgContent,
221
+ // Set height and width from svg content
222
+ height: svgContentEl.viewBox.baseVal.height,
223
+ width: svgContentEl.viewBox.baseVal.width
224
+ });
225
+ }
147
226
  }
148
- return r && (t.src && !B(`@${v.value}:${t.prefix}:${t.name}`) ? (o.value = !1, r.fetchIcon(t.src).then((n) => {
149
- n && (a(n), o.value = !0);
150
- }).catch((n) => {
151
- throw new Error(`During fetch icon: ${n == null ? void 0 : n.message}`);
152
- })) : t.svg && a(t.svg)), (n, l) => p(o) ? (k(), j(p(le), w({
153
- key: 0,
154
- class: p(i)
155
- }, {
156
- inline: n.inline,
157
- width: n.width,
158
- height: n.height,
159
- horizontalFlip: n.horizontalFlip,
160
- verticalFlip: n.verticalFlip,
161
- flip: n.flip,
162
- rotate: n.rotate,
163
- color: n.color,
164
- onLoad: n.onLoad,
165
- icon: p(f)
166
- }), null, 16, ["class"])) : I("", !0);
227
+ if (volver) {
228
+ if (props.src && !iconExists(`@${provider.value}:${props.prefix}:${props.name}`)) {
229
+ show.value = false;
230
+ volver.fetchIcon(props.src).then((svg) => {
231
+ if (svg) {
232
+ addIconFromSvg(svg);
233
+ show.value = true;
234
+ }
235
+ }).catch((e) => {
236
+ throw new Error(`During fetch icon: ${e == null ? void 0 : e.message}`);
237
+ });
238
+ } else if (props.svg) {
239
+ addIconFromSvg(props.svg);
240
+ }
241
+ }
242
+ return (_ctx, _cache) => {
243
+ return unref(show) ? (openBlock(), createBlock(unref(Icon), mergeProps({
244
+ key: 0,
245
+ class: unref(bemCssClasses)
246
+ }, {
247
+ inline: _ctx.inline,
248
+ width: _ctx.width,
249
+ height: _ctx.height,
250
+ horizontalFlip: _ctx.horizontalFlip,
251
+ verticalFlip: _ctx.verticalFlip,
252
+ flip: _ctx.flip,
253
+ rotate: _ctx.rotate,
254
+ color: _ctx.color,
255
+ onLoad: _ctx.onLoad,
256
+ icon: unref(icon)
257
+ }), null, 16, ["class"])) : createCommentVNode("", true);
258
+ };
167
259
  }
168
- }), ge = {
260
+ });
261
+ const LinkProps = {
169
262
  /**
170
263
  * The router-link/nuxt-link property, if it is defined the button is rendered as a ruouter-link or nuxt-link.
171
264
  * @see Documentation of [router-link](https://router.vuejs.org/api/#router-link) and [nuxt-link](https://nuxtjs.org/api/components-nuxt-link/)
@@ -182,7 +275,7 @@ const pe = {
182
275
  */
183
276
  target: {
184
277
  type: String,
185
- validator: (e) => Object.values(W).includes(e)
278
+ validator: (value) => Object.values(AnchorTarget).includes(value)
186
279
  },
187
280
  /**
188
281
  * Anchor rel
@@ -191,7 +284,8 @@ const pe = {
191
284
  type: String,
192
285
  default: "noopener noreferrer"
193
286
  }
194
- }, me = {
287
+ };
288
+ const LoadingProps = {
195
289
  /**
196
290
  * Loading status
197
291
  */
@@ -203,265 +297,405 @@ const pe = {
203
297
  type: String,
204
298
  default: "Loading..."
205
299
  }
206
- }, ye = {
300
+ };
301
+ const DisabledProps = {
207
302
  /**
208
303
  * Whether the form control is disabled
209
304
  */
210
305
  disabled: Boolean
211
- }, be = {
306
+ };
307
+ const ActiveProps = {
212
308
  /**
213
309
  * Whether the item is active
214
310
  */
215
311
  active: Boolean
216
- }, he = {
312
+ };
313
+ const PressedProps = {
217
314
  /**
218
315
  * Whether the item is pressed
219
316
  */
220
317
  pressed: Boolean
221
- }, Se = {
318
+ };
319
+ const LabelProps = {
222
320
  /**
223
321
  * The item label
224
322
  */
225
323
  label: [String, Number]
226
- }, Oe = {
324
+ };
325
+ const ModifiersProps = {
227
326
  /**
228
327
  * Component BEM modifiers
229
328
  */
230
329
  modifiers: [String, Array]
231
330
  };
232
- C.before;
233
- const ke = {
331
+ ({
332
+ /**
333
+ * VvIcon name or props
334
+ * @see VVIcon
335
+ */
336
+ icon: { type: [String, Object] },
337
+ /**
338
+ * VvIcon position
339
+ */
340
+ iconPosition: {
341
+ type: String,
342
+ default: Position.before,
343
+ validation: (value) => Object.values(Position).includes(value)
344
+ }
345
+ });
346
+ const UnselectableProps = {
234
347
  /**
235
348
  * If true the input will be unselectable
236
349
  */
237
- unselectable: { type: Boolean, default: !0 }
238
- }, _e = {
350
+ unselectable: { type: Boolean, default: true }
351
+ };
352
+ const IdProps = {
239
353
  /**
240
354
  * Global attribute id
241
355
  * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id
242
356
  */
243
357
  id: [String, Number]
244
358
  };
245
- S.bottom;
246
- const X = {
247
- ...ye,
248
- ...Se,
249
- ...he,
250
- ...be,
251
- ...ge,
359
+ ({
360
+ /**
361
+ * Dropdown placement
362
+ */
363
+ placement: {
364
+ type: String,
365
+ default: Side.bottom,
366
+ validator: (value) => {
367
+ return Object.values(Side).includes(value) || Object.values(Placement).includes(value);
368
+ }
369
+ },
370
+ /**
371
+ * Dropdown show / hide transition name
372
+ */
373
+ transitionName: {
374
+ type: String
375
+ },
376
+ /**
377
+ * Offset of the dropdown from the trigger
378
+ * @see https://floating-ui.com/docs/offset
379
+ */
380
+ offset: {
381
+ type: [Number, String, Object],
382
+ default: 0
383
+ },
384
+ /**
385
+ * Move dropdown to the side if there is no space in the default position
386
+ * @see https://floating-ui.com/docs/shift
387
+ */
388
+ shift: {
389
+ type: [Boolean, Object],
390
+ default: false
391
+ },
392
+ /**
393
+ * Flip dropdown position if there is no space in the default position
394
+ * @see https://floating-ui.com/docs/flip
395
+ */
396
+ flip: {
397
+ type: [Boolean, Object],
398
+ default: true
399
+ },
400
+ /**
401
+ * Size of the dropdown
402
+ * @see https://floating-ui.com/docs/size
403
+ */
404
+ size: {
405
+ type: [Boolean, Object],
406
+ default: () => ({ padding: 10 })
407
+ },
408
+ /**
409
+ * Automatically change the position of the dropdown
410
+ * @see https://floating-ui.com/docs/autoPlacement
411
+ */
412
+ autoPlacement: {
413
+ type: [Boolean, Object],
414
+ default: false
415
+ },
416
+ /**
417
+ * Add arrow to the dropdown
418
+ * @see https://floating-ui.com/docs/arrow
419
+ */
420
+ arrow: {
421
+ type: Boolean,
422
+ default: false
423
+ },
424
+ /**
425
+ * Close dropdown on click outside
426
+ */
427
+ autoClose: {
428
+ type: Boolean,
429
+ default: true
430
+ },
431
+ /**
432
+ * Autofocus first item on dropdown open
433
+ */
434
+ autofocusFirst: {
435
+ type: Boolean,
436
+ default: true
437
+ },
438
+ /**
439
+ * Set dropdown width to the same as the trigger
440
+ */
441
+ triggerWidth: {
442
+ type: Boolean
443
+ }
444
+ });
445
+ const ActionProps = {
446
+ ...DisabledProps,
447
+ ...LabelProps,
448
+ ...PressedProps,
449
+ ...ActiveProps,
450
+ ...LinkProps,
252
451
  /**
253
452
  * Button type
254
453
  */
255
454
  type: {
256
455
  type: String,
257
- default: R.button,
258
- validator: (e) => Object.values(R).includes(e)
456
+ default: ButtonType.button,
457
+ validator: (value) => Object.values(ButtonType).includes(value)
259
458
  }
260
- }, $e = ["click", "mouseover", "mouseleave"], Ie = X;
261
- function je() {
262
- return V(de, {});
459
+ };
460
+ const VvActionEvents = ["click", "mouseover", "mouseleave"];
461
+ const VvActionProps = ActionProps;
462
+ function useInjectedDropdownTrigger() {
463
+ return inject(INJECTION_KEY_DROPDOWN_TRIGGER, {});
263
464
  }
264
- function Pe() {
265
- return V(ve, {});
465
+ function useInjectedDropdownAction() {
466
+ return inject(INJECTION_KEY_DROPDOWN_ACTION, {});
266
467
  }
267
- const Ae = {
468
+ const __default__$1 = {
268
469
  name: "VvAction"
269
- }, Be = /* @__PURE__ */ G({
270
- ...Ae,
271
- props: Ie,
272
- emits: $e,
273
- setup(e, { expose: t, emit: o }) {
274
- const r = e, s = H(), i = D(null);
275
- t({ $el: i });
470
+ };
471
+ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
472
+ ...__default__$1,
473
+ props: VvActionProps,
474
+ emits: VvActionEvents,
475
+ setup(__props, { expose, emit }) {
476
+ const props = __props;
477
+ const volver = useVolver();
478
+ const element = ref(null);
479
+ expose({ $el: element });
276
480
  const {
277
- reference: v,
278
- bus: f,
279
- aria: d,
280
- expanded: a
281
- } = je();
282
- ee(
283
- () => i.value,
284
- (u) => {
285
- v && (v.value = u);
481
+ reference: dropdownTriggerReference,
482
+ bus: dropdownEventBus,
483
+ aria: dropdownAria,
484
+ expanded: dropdownExpanded
485
+ } = useInjectedDropdownTrigger();
486
+ watch(
487
+ () => element.value,
488
+ (newValue) => {
489
+ if (dropdownTriggerReference) {
490
+ dropdownTriggerReference.value = newValue;
491
+ }
286
492
  }
287
493
  );
288
- const n = g(() => r.pressed || (a == null ? void 0 : a.value)), { role: l } = Pe(), m = g(() => {
289
- switch (!0) {
290
- case r.disabled:
291
- return h.button;
292
- case r.to !== void 0:
293
- return s != null && s.nuxt ? h.nuxtLink : h.routerLink;
294
- case r.href !== void 0:
295
- return h.a;
494
+ const pressed = computed(() => {
495
+ return props.pressed || (dropdownExpanded == null ? void 0 : dropdownExpanded.value);
496
+ });
497
+ const { role } = useInjectedDropdownAction();
498
+ const hasTag = computed(() => {
499
+ switch (true) {
500
+ case props.disabled:
501
+ return ActionTag.button;
502
+ case props.to !== void 0:
503
+ return (volver == null ? void 0 : volver.nuxt) ? ActionTag.nuxtLink : ActionTag.routerLink;
504
+ case props.href !== void 0:
505
+ return ActionTag.a;
296
506
  default:
297
- return h.button;
507
+ return ActionTag.button;
298
508
  }
299
- }), b = g(() => {
300
- const u = {
301
- ...d == null ? void 0 : d.value,
302
- "aria-pressed": n.value ? !0 : void 0,
303
- role: l
509
+ });
510
+ const hasProps = computed(() => {
511
+ const toReturn = {
512
+ ...dropdownAria == null ? void 0 : dropdownAria.value,
513
+ "aria-pressed": pressed.value ? true : void 0,
514
+ role
304
515
  };
305
- switch (m.value) {
306
- case h.a:
516
+ switch (hasTag.value) {
517
+ case ActionTag.a:
307
518
  return {
308
- ...u,
309
- href: r.href,
310
- target: r.target,
311
- rel: r.rel
519
+ ...toReturn,
520
+ href: props.href,
521
+ target: props.target,
522
+ rel: props.rel
312
523
  };
313
- case h.routerLink:
314
- case h.nuxtLink:
524
+ case ActionTag.routerLink:
525
+ case ActionTag.nuxtLink:
315
526
  return {
316
- ...u,
317
- to: r.to,
318
- target: r.target
527
+ ...toReturn,
528
+ to: props.to,
529
+ target: props.target
319
530
  };
320
531
  default:
321
532
  return {
322
- ...u,
323
- type: r.type,
324
- disabled: r.disabled
533
+ ...toReturn,
534
+ type: props.type,
535
+ disabled: props.disabled
325
536
  };
326
537
  }
327
- }), _ = (u) => {
328
- if (r.disabled) {
329
- u.preventDefault();
538
+ });
539
+ const onClick = (e) => {
540
+ if (props.disabled) {
541
+ e.preventDefault();
330
542
  return;
331
543
  }
332
- f == null || f.emit("click", u), o("click", u);
333
- }, O = (u) => {
334
- f == null || f.emit("mouseover", u), o("mouseover", u);
335
- }, y = (u) => {
336
- f == null || f.emit("mouseleave", u), o("mouseleave", u);
544
+ dropdownEventBus == null ? void 0 : dropdownEventBus.emit("click", e);
545
+ emit("click", e);
546
+ };
547
+ const onMouseover = (e) => {
548
+ dropdownEventBus == null ? void 0 : dropdownEventBus.emit("mouseover", e);
549
+ emit("mouseover", e);
550
+ };
551
+ const onMouseleave = (e) => {
552
+ dropdownEventBus == null ? void 0 : dropdownEventBus.emit("mouseleave", e);
553
+ emit("mouseleave", e);
554
+ };
555
+ return (_ctx, _cache) => {
556
+ return openBlock(), createBlock(resolveDynamicComponent(unref(hasTag)), mergeProps(unref(hasProps), {
557
+ ref_key: "element",
558
+ ref: element,
559
+ class: {
560
+ active: _ctx.active,
561
+ pressed: unref(pressed),
562
+ disabled: _ctx.disabled
563
+ },
564
+ onClickPassive: onClick,
565
+ onMouseoverPassive: onMouseover,
566
+ onMouseleavePassive: onMouseleave
567
+ }), {
568
+ default: withCtx(() => [
569
+ renderSlot(_ctx.$slots, "default", {}, () => [
570
+ createTextVNode(toDisplayString(_ctx.label), 1)
571
+ ])
572
+ ]),
573
+ _: 3
574
+ }, 16, ["class"]);
337
575
  };
338
- return (u, P) => (k(), j(te(p(m)), w(p(b), {
339
- ref_key: "element",
340
- ref: i,
341
- class: {
342
- active: u.active,
343
- pressed: p(n),
344
- disabled: u.disabled
345
- },
346
- onClickPassive: _,
347
- onMouseoverPassive: O,
348
- onMouseleavePassive: y
349
- }), {
350
- default: K(() => [
351
- $(u.$slots, "default", {}, () => [
352
- U(N(u.label), 1)
353
- ])
354
- ]),
355
- _: 3
356
- }, 16, ["class"]));
357
576
  }
358
577
  });
359
- function M(e, t, o) {
360
- return o ? q(e, o) === q(t, o) : F(e, t);
578
+ function equals(obj1, obj2, field) {
579
+ if (field)
580
+ return resolveFieldData(obj1, field) === resolveFieldData(obj2, field);
581
+ else
582
+ return deepEquals(obj1, obj2);
361
583
  }
362
- function F(e, t) {
363
- if (e === t)
364
- return !0;
365
- if (e && t && typeof e == "object" && typeof t == "object") {
366
- const o = Array.isArray(e), r = Array.isArray(t);
367
- let s, i, v;
368
- if (o && r) {
369
- if (i = e.length, i != t.length)
370
- return !1;
371
- for (s = i; s-- !== 0; )
372
- if (!F(e[s], t[s]))
373
- return !1;
374
- return !0;
584
+ function deepEquals(a, b) {
585
+ if (a === b)
586
+ return true;
587
+ if (a && b && typeof a == "object" && typeof b == "object") {
588
+ const arrA = Array.isArray(a);
589
+ const arrB = Array.isArray(b);
590
+ let i, length, key;
591
+ if (arrA && arrB) {
592
+ length = a.length;
593
+ if (length != b.length)
594
+ return false;
595
+ for (i = length; i-- !== 0; )
596
+ if (!deepEquals(a[i], b[i]))
597
+ return false;
598
+ return true;
599
+ }
600
+ if (arrA != arrB)
601
+ return false;
602
+ const dateA = a instanceof Date, dateB = b instanceof Date;
603
+ if (dateA != dateB)
604
+ return false;
605
+ if (dateA && dateB)
606
+ return a.getTime() == b.getTime();
607
+ const regexpA = a instanceof RegExp, regexpB = b instanceof RegExp;
608
+ if (regexpA != regexpB)
609
+ return false;
610
+ if (regexpA && regexpB)
611
+ return a.toString() == b.toString();
612
+ const keys = Object.keys(a);
613
+ length = keys.length;
614
+ if (length !== Object.keys(b).length)
615
+ return false;
616
+ for (i = length; i-- !== 0; )
617
+ if (!Object.prototype.hasOwnProperty.call(b, keys[i]))
618
+ return false;
619
+ for (i = length; i-- !== 0; ) {
620
+ key = keys[i];
621
+ if (!deepEquals(a[key], b[key]))
622
+ return false;
375
623
  }
376
- if (o != r)
377
- return !1;
378
- const f = e instanceof Date, d = t instanceof Date;
379
- if (f != d)
380
- return !1;
381
- if (f && d)
382
- return e.getTime() == t.getTime();
383
- const a = e instanceof RegExp, n = t instanceof RegExp;
384
- if (a != n)
385
- return !1;
386
- if (a && n)
387
- return e.toString() == t.toString();
388
- const l = Object.keys(e);
389
- if (i = l.length, i !== Object.keys(t).length)
390
- return !1;
391
- for (s = i; s-- !== 0; )
392
- if (!Object.prototype.hasOwnProperty.call(t, l[s]))
393
- return !1;
394
- for (s = i; s-- !== 0; )
395
- if (v = l[s], !F(e[v], t[v]))
396
- return !1;
397
- return !0;
624
+ return true;
398
625
  }
399
- return e !== e && t !== t;
626
+ return a !== a && b !== b;
400
627
  }
401
- function q(e, t) {
402
- if (e && Object.keys(e).length && t) {
403
- if (t.indexOf(".") === -1)
404
- return e[t];
405
- {
406
- const o = t.split(".");
407
- let r = e;
408
- for (let s = 0, i = o.length; s < i; ++s) {
409
- if (e == null)
628
+ function resolveFieldData(data, field) {
629
+ if (data && Object.keys(data).length && field) {
630
+ if (field.indexOf(".") === -1) {
631
+ return data[field];
632
+ } else {
633
+ const fields = field.split(".");
634
+ let value = data;
635
+ for (let i = 0, len = fields.length; i < len; ++i) {
636
+ if (data == null) {
410
637
  return null;
411
- r = r[o[s]];
638
+ }
639
+ value = value[fields[i]];
412
640
  }
413
- return r;
641
+ return value;
414
642
  }
415
- } else
643
+ } else {
416
644
  return null;
645
+ }
417
646
  }
418
- function J(e, t) {
419
- if (e != null && t && t.length) {
420
- for (const o of t)
421
- if (M(e, o))
422
- return !0;
647
+ function contains(value, list) {
648
+ if (value != null && list && list.length) {
649
+ for (const val of list) {
650
+ if (equals(value, val)) {
651
+ return true;
652
+ }
653
+ }
423
654
  }
424
- return !1;
655
+ return false;
425
656
  }
426
- function we(e) {
427
- return ((t) => t == null || t === "" || Array.isArray(t) && t.length === 0 || !(t instanceof Date) && typeof t == "object" && Object.keys(t).length === 0)(p(e));
657
+ function isEmpty(value) {
658
+ return ((value2) => value2 === null || value2 === void 0 || value2 === "" || Array.isArray(value2) && value2.length === 0 || !(value2 instanceof Date) && typeof value2 === "object" && Object.keys(value2).length === 0)(unref(value));
428
659
  }
429
- function Ve(e) {
430
- const t = V(e, void 0), o = g(() => !we(t));
431
- function r(s, i, v) {
432
- if (t != null && t.value) {
433
- const d = p(t.value)[s];
434
- return g({
660
+ function useInjectedGroupState(groupKey) {
661
+ const group = inject(groupKey, void 0);
662
+ const isInGroup = computed(() => !isEmpty(group));
663
+ function getGroupOrLocalRef(propName, props, emit) {
664
+ if (group == null ? void 0 : group.value) {
665
+ const groupPropValue = unref(group.value)[propName];
666
+ return computed({
435
667
  get() {
436
- return d == null ? void 0 : d.value;
668
+ return groupPropValue == null ? void 0 : groupPropValue.value;
437
669
  },
438
- set(a) {
439
- d.value = a;
670
+ set(value) {
671
+ groupPropValue.value = value;
440
672
  }
441
673
  });
442
674
  }
443
- const f = ne(i, s);
444
- return g({
675
+ const propRef = toRef(props, propName);
676
+ return computed({
445
677
  get() {
446
- return f.value;
678
+ return propRef.value;
447
679
  },
448
- set(d) {
449
- v && v(`update:${s}`, d);
680
+ set(value) {
681
+ if (emit)
682
+ emit(`update:${propName}`, value);
450
683
  }
451
684
  });
452
685
  }
453
686
  return {
454
- group: t,
455
- isInGroup: o,
456
- getGroupOrLocalRef: r
687
+ group,
688
+ isInGroup,
689
+ getGroupOrLocalRef
457
690
  };
458
691
  }
459
- const De = ["update:modelValue"], Ee = {
460
- ...X,
461
- ..._e,
462
- ...Oe,
463
- ...ke,
464
- ...me,
692
+ const VvButtonEvents = ["update:modelValue"];
693
+ const VvButtonProps = {
694
+ ...ActionProps,
695
+ ...IdProps,
696
+ ...ModifiersProps,
697
+ ...UnselectableProps,
698
+ ...LoadingProps,
465
699
  /**
466
700
  * Button icon
467
701
  */
@@ -471,8 +705,8 @@ const De = ["update:modelValue"], Ee = {
471
705
  */
472
706
  iconPosition: {
473
707
  type: String,
474
- default: S.left,
475
- validator: (e) => Object.values(S).includes(e)
708
+ default: Side.left,
709
+ validator: (value) => Object.values(Side).includes(value)
476
710
  },
477
711
  /**
478
712
  * Loading icon
@@ -480,148 +714,190 @@ const De = ["update:modelValue"], Ee = {
480
714
  loadingIcon: { type: String, default: "eos-icons:bubble-loading" },
481
715
  toggle: {
482
716
  type: Boolean,
483
- default: !1
717
+ default: false
484
718
  },
485
719
  modelValue: String
486
720
  };
487
- function Le(e, t) {
488
- var u;
489
- const { group: o, isInGroup: r, getGroupOrLocalRef: s } = Ve(fe), {
490
- id: i,
491
- iconPosition: v,
492
- icon: f,
493
- label: d,
494
- pressed: a,
495
- modifiers: n
496
- } = z(e), l = s("modelValue", e, t), m = s("disabled", e), b = s("toggle", e), _ = s(
721
+ function useGroupProps(props, emit) {
722
+ const { group, isInGroup, getGroupOrLocalRef } = useInjectedGroupState(INJECTION_KEY_BUTTON_GROUP);
723
+ const {
724
+ id,
725
+ iconPosition,
726
+ icon,
727
+ label,
728
+ pressed,
729
+ modifiers: localModifiers
730
+ } = toRefs(props);
731
+ const modelValue = getGroupOrLocalRef("modelValue", props, emit);
732
+ const toggle = getGroupOrLocalRef("toggle", props);
733
+ const unselectable = getGroupOrLocalRef(
497
734
  "unselectable",
498
- e
499
- ), O = ((u = o == null ? void 0 : o.value) == null ? void 0 : u.multiple) ?? D(!1), y = g(() => {
500
- var A;
501
- const P = n != null && n.value ? Array.isArray(n.value) ? n.value : n.value.split(" ") : [], E = (A = o == null ? void 0 : o.value.itemModifiers) != null && A.value ? Array.isArray(o.value.itemModifiers.value) ? o.value.itemModifiers.value : o.value.itemModifiers.value.split(" ") : [];
502
- return [...P, ...E];
735
+ props
736
+ );
737
+ const multiple = computed(() => (group == null ? void 0 : group.value.multiple.value) ?? false);
738
+ const modifiers = computed(() => {
739
+ var _a;
740
+ const localValue = (localModifiers == null ? void 0 : localModifiers.value) ? Array.isArray(localModifiers.value) ? localModifiers.value : localModifiers.value.split(" ") : [];
741
+ const groupValue = ((_a = group == null ? void 0 : group.value.itemModifiers) == null ? void 0 : _a.value) ? Array.isArray(group.value.itemModifiers.value) ? group.value.itemModifiers.value : group.value.itemModifiers.value.split(" ") : [];
742
+ return [...localValue, ...groupValue];
503
743
  });
744
+ const disabled = computed(
745
+ () => {
746
+ var _a;
747
+ return Boolean(props.disabled || ((_a = group == null ? void 0 : group.value) == null ? void 0 : _a.disabled.value));
748
+ }
749
+ );
504
750
  return {
505
751
  // group props
506
- group: o,
507
- isInGroup: r,
508
- modelValue: l,
509
- disabled: m,
510
- toggle: b,
511
- unselectable: _,
512
- multiple: O,
752
+ group,
753
+ isInGroup,
754
+ modelValue,
755
+ toggle,
756
+ unselectable,
757
+ multiple,
758
+ modifiers,
759
+ disabled,
513
760
  // local props
514
- id: i,
515
- modifiers: y,
516
- pressed: a,
517
- iconPosition: v,
518
- icon: f,
519
- label: d
761
+ id,
762
+ pressed,
763
+ iconPosition,
764
+ icon,
765
+ label
520
766
  };
521
767
  }
522
- const Ne = (e) => g(() => String((e == null ? void 0 : e.value) || ie())), Ce = {
768
+ const useUniqueId = (id) => computed(() => String((id == null ? void 0 : id.value) || nanoid()));
769
+ const _hoisted_1 = {
523
770
  key: 1,
524
771
  class: "vv-button__label"
525
- }, Re = {
772
+ };
773
+ const _hoisted_2 = {
526
774
  key: 1,
527
775
  class: "vv-button__label"
528
- }, Me = {
776
+ };
777
+ const __default__ = {
529
778
  name: "VvButton"
530
- }, Je = /* @__PURE__ */ G({
531
- ...Me,
532
- props: Ee,
533
- emits: De,
534
- setup(e, { expose: t, emit: o }) {
535
- const r = e, s = re(), i = oe(), {
536
- id: v,
537
- modifiers: f,
538
- iconPosition: d,
539
- icon: a,
540
- label: n,
541
- modelValue: l,
542
- disabled: m,
543
- toggle: b,
544
- unselectable: _
545
- } = Le(r, o), O = Ne(v), y = g(() => (s == null ? void 0 : s.name) || O.value), u = D(null), P = g(() => {
546
- var c;
547
- return (c = u.value) == null ? void 0 : c.$el;
779
+ };
780
+ const _sfc_main = /* @__PURE__ */ defineComponent({
781
+ ...__default__,
782
+ props: VvButtonProps,
783
+ emits: VvButtonEvents,
784
+ setup(__props, { expose, emit }) {
785
+ const props = __props;
786
+ const attrs = useAttrs();
787
+ const slots = useSlots();
788
+ const {
789
+ id,
790
+ modifiers,
791
+ iconPosition,
792
+ icon,
793
+ label,
794
+ modelValue,
795
+ disabled,
796
+ toggle,
797
+ unselectable
798
+ } = useGroupProps(props, emit);
799
+ const hasId = useUniqueId(id);
800
+ const name = computed(() => (attrs == null ? void 0 : attrs.name) || hasId.value);
801
+ const element = ref(null);
802
+ const $el = computed(() => {
803
+ var _a;
804
+ return (_a = element.value) == null ? void 0 : _a.$el;
548
805
  });
549
- t({ $el: P });
550
- const E = g(() => b.value ? Array.isArray(l.value) ? J(y.value, l.value) : M(y.value, l.value) : r.pressed), A = Q(
806
+ expose({ $el });
807
+ const pressed = computed(() => {
808
+ if (!toggle.value) {
809
+ return props.pressed;
810
+ }
811
+ if (Array.isArray(modelValue.value)) {
812
+ return contains(name.value, modelValue.value);
813
+ }
814
+ return equals(name.value, modelValue.value);
815
+ });
816
+ const bemCssClasses = useModifiers(
551
817
  "vv-button",
552
- f,
553
- g(() => ({
554
- reverse: [S.right, S.bottom].includes(d.value),
555
- column: [S.top, S.bottom].includes(d.value),
818
+ modifiers,
819
+ computed(() => ({
820
+ reverse: [Side.right, Side.bottom].includes(
821
+ iconPosition.value
822
+ ),
823
+ column: [Side.top, Side.bottom].includes(
824
+ iconPosition.value
825
+ ),
556
826
  "icon-only": Boolean(
557
- (a == null ? void 0 : a.value) && !(n != null && n.value) && !i.default
827
+ (icon == null ? void 0 : icon.value) && !(label == null ? void 0 : label.value) && !slots.default
558
828
  )
559
829
  }))
560
- ), Z = g(
561
- () => typeof (a == null ? void 0 : a.value) == "string" ? { name: a == null ? void 0 : a.value } : a == null ? void 0 : a.value
562
- ), x = () => {
563
- if (b.value) {
564
- if (Array.isArray(l.value)) {
565
- if (J(y.value, l.value)) {
566
- _.value && (l.value = l.value.filter(
567
- (c) => c !== y.value
568
- ));
830
+ );
831
+ const hasIconProps = computed(
832
+ () => typeof (icon == null ? void 0 : icon.value) === "string" ? { name: icon == null ? void 0 : icon.value } : icon == null ? void 0 : icon.value
833
+ );
834
+ const onClick = () => {
835
+ if (toggle.value) {
836
+ if (Array.isArray(modelValue.value)) {
837
+ if (contains(name.value, modelValue.value)) {
838
+ if (unselectable.value) {
839
+ modelValue.value = modelValue.value.filter(
840
+ (n) => n !== name.value
841
+ );
842
+ }
569
843
  return;
570
844
  }
571
- l.value.push(y.value);
845
+ modelValue.value.push(name.value);
572
846
  return;
573
847
  }
574
- if (M(y.value, l.value) && _.value) {
575
- l.value = void 0;
848
+ if (equals(name.value, modelValue.value) && unselectable.value) {
849
+ modelValue.value = void 0;
576
850
  return;
577
851
  }
578
- l.value = y.value;
852
+ modelValue.value = name.value;
579
853
  }
580
854
  };
581
- return (c, Fe) => (k(), j(Be, w({
582
- disabled: p(m),
583
- pressed: p(E),
584
- active: c.active,
585
- type: c.type,
586
- to: c.to,
587
- href: c.href,
588
- target: c.target,
589
- rel: c.rel
590
- }, {
591
- id: p(O),
592
- ref_key: "element",
593
- ref: u,
594
- class: p(A),
595
- onClick: x
596
- }), {
597
- default: K(() => [
598
- $(c.$slots, "default", {}, () => [
599
- c.loading ? $(c.$slots, "loading", { key: 0 }, () => [
600
- c.loadingIcon ? (k(), j(T, {
601
- key: 0,
602
- class: "vv-button__loading-icon",
603
- name: c.loadingIcon
604
- }, null, 8, ["name"])) : I("", !0),
605
- c.loadingLabel ? (k(), L("span", Ce, N(c.loadingLabel), 1)) : I("", !0)
606
- ]) : (k(), L(se, { key: 1 }, [
607
- $(c.$slots, "before"),
608
- p(a) ? (k(), j(T, w({
609
- key: 0,
610
- class: "vv-button__icon"
611
- }, p(Z)), null, 16)) : I("", !0),
612
- p(n) ? (k(), L("span", Re, [
613
- $(c.$slots, "label", {}, () => [
614
- U(N(p(n)), 1)
615
- ])
616
- ])) : I("", !0),
617
- $(c.$slots, "after")
618
- ], 64))
619
- ])
620
- ]),
621
- _: 3
622
- }, 16, ["id", "class"]));
855
+ return (_ctx, _cache) => {
856
+ return openBlock(), createBlock(_sfc_main$1, mergeProps({
857
+ disabled: unref(disabled),
858
+ pressed: unref(pressed),
859
+ active: _ctx.active,
860
+ type: _ctx.type,
861
+ to: _ctx.to,
862
+ href: _ctx.href,
863
+ target: _ctx.target,
864
+ rel: _ctx.rel
865
+ }, {
866
+ id: unref(hasId),
867
+ ref_key: "element",
868
+ ref: element,
869
+ class: unref(bemCssClasses),
870
+ onClick
871
+ }), {
872
+ default: withCtx(() => [
873
+ renderSlot(_ctx.$slots, "default", {}, () => [
874
+ _ctx.loading ? renderSlot(_ctx.$slots, "loading", { key: 0 }, () => [
875
+ _ctx.loadingIcon ? (openBlock(), createBlock(_sfc_main$2, {
876
+ key: 0,
877
+ class: "vv-button__loading-icon",
878
+ name: _ctx.loadingIcon
879
+ }, null, 8, ["name"])) : createCommentVNode("", true),
880
+ _ctx.loadingLabel ? (openBlock(), createElementBlock("span", _hoisted_1, toDisplayString(_ctx.loadingLabel), 1)) : createCommentVNode("", true)
881
+ ]) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
882
+ renderSlot(_ctx.$slots, "before"),
883
+ unref(icon) ? (openBlock(), createBlock(_sfc_main$2, mergeProps({
884
+ key: 0,
885
+ class: "vv-button__icon"
886
+ }, unref(hasIconProps)), null, 16)) : createCommentVNode("", true),
887
+ unref(label) ? (openBlock(), createElementBlock("span", _hoisted_2, [
888
+ renderSlot(_ctx.$slots, "label", {}, () => [
889
+ createTextVNode(toDisplayString(unref(label)), 1)
890
+ ])
891
+ ])) : createCommentVNode("", true),
892
+ renderSlot(_ctx.$slots, "after")
893
+ ], 64))
894
+ ])
895
+ ]),
896
+ _: 3
897
+ }, 16, ["id", "class"]);
898
+ };
623
899
  }
624
900
  });
625
901
  export {
626
- Je as default
902
+ _sfc_main as default
627
903
  };