@volverjs/ui-vue 0.0.4 → 0.0.5-beta.2

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 (215) 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 +276 -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 +213 -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 +247 -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 +646 -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 +261 -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 +562 -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 +661 -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 +1546 -983
  44. package/dist/components/VvCombobox/VvCombobox.umd.js +1 -1
  45. package/dist/components/VvCombobox/VvCombobox.vue.d.ts +138 -51
  46. package/dist/components/VvCombobox/index.d.ts +41 -10
  47. package/dist/components/VvDialog/VvDialog.es.js +387 -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 +452 -244
  52. package/dist/components/VvDropdown/VvDropdown.umd.js +1 -1
  53. package/dist/components/VvDropdown/VvDropdown.vue.d.ts +130 -42
  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 +40 -11
  57. package/dist/components/VvDropdownAction/VvDropdownAction.es.js +373 -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 +285 -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 +986 -462
  70. package/dist/components/VvInputText/VvInputText.umd.js +1 -1
  71. package/dist/components/VvInputText/VvInputText.vue.d.ts +100 -20
  72. package/dist/components/VvInputText/VvInputTextActions.d.ts +1 -1
  73. package/dist/components/VvInputText/index.d.ts +66 -13
  74. package/dist/components/VvProgress/VvProgress.es.js +216 -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 +499 -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 +598 -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 +631 -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 +676 -355
  91. package/dist/components/VvTextarea/VvTextarea.umd.js +1 -1
  92. package/dist/components/VvTextarea/VvTextarea.vue.d.ts +20 -20
  93. package/dist/components/VvTextarea/index.d.ts +4 -4
  94. package/dist/components/VvTooltip/VvTooltip.es.js +215 -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 +3522 -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.d.ts +1 -0
  114. package/dist/directives/index.es.js +264 -55
  115. package/dist/directives/index.umd.js +1 -1
  116. package/dist/directives/v-contextmenu.d.ts +3 -0
  117. package/dist/directives/v-contextmenu.es.js +42 -0
  118. package/dist/directives/v-contextmenu.umd.js +1 -0
  119. package/dist/directives/v-tooltip.es.js +222 -53
  120. package/dist/directives/v-tooltip.umd.js +1 -1
  121. package/dist/icons.d.ts +3 -1
  122. package/dist/icons.es.js +40 -23
  123. package/dist/icons.umd.js +1 -1
  124. package/dist/index.d.ts +0 -1
  125. package/dist/index.es.js +112 -3607
  126. package/dist/index.umd.js +1 -1
  127. package/dist/props/index.d.ts +50 -18
  128. package/dist/resolvers/unplugin.d.ts +7 -1
  129. package/dist/resolvers/unplugin.es.js +77 -37
  130. package/dist/resolvers/unplugin.umd.js +1 -1
  131. package/dist/stories/Combobox/Combobox.settings.d.ts +12 -0
  132. package/dist/stories/Dropdown/Dropdown.settings.d.ts +12 -0
  133. package/dist/stories/InputText/InputText.settings.d.ts +53 -0
  134. package/dist/stories/argTypes.d.ts +13 -1
  135. package/package.json +126 -40
  136. package/src/Volver.ts +49 -22
  137. package/src/assets/icons/detailed.json +1 -1
  138. package/src/assets/icons/normal.json +1 -1
  139. package/src/assets/icons/simple.json +1 -1
  140. package/src/components/VvAccordion/VvAccordion.vue +19 -22
  141. package/src/components/VvAccordion/index.ts +12 -4
  142. package/src/components/VvAccordionGroup/VvAccordionGroup.vue +19 -10
  143. package/src/components/VvAccordionGroup/index.ts +8 -0
  144. package/src/components/VvAction/VvAction.vue +7 -7
  145. package/src/components/VvAction/index.ts +1 -1
  146. package/src/components/VvBadge/VvBadge.vue +2 -2
  147. package/src/components/VvBadge/index.ts +1 -1
  148. package/src/components/VvBreadcrumb/VvBreadcrumb.vue +3 -3
  149. package/src/components/VvButton/VvButton.vue +11 -11
  150. package/src/components/VvButton/index.ts +10 -9
  151. package/src/components/VvButtonGroup/VvButtonGroup.vue +4 -7
  152. package/src/components/VvButtonGroup/index.ts +1 -1
  153. package/src/components/VvCard/VvCard.vue +2 -2
  154. package/src/components/VvCheckbox/VvCheckbox.vue +3 -7
  155. package/src/components/VvCheckbox/index.ts +11 -7
  156. package/src/components/VvCheckboxGroup/VvCheckboxGroup.vue +7 -10
  157. package/src/components/VvCheckboxGroup/index.ts +1 -1
  158. package/src/components/VvCombobox/VvCombobox.vue +44 -26
  159. package/src/components/VvCombobox/index.ts +1 -1
  160. package/src/components/VvDialog/VvDialog.vue +28 -11
  161. package/src/components/VvDialog/index.ts +5 -2
  162. package/src/components/VvDropdown/VvDropdown.vue +7 -5
  163. package/src/components/VvDropdown/VvDropdownAction.vue +7 -5
  164. package/src/components/VvDropdown/VvDropdownOption.vue +17 -10
  165. package/src/components/VvDropdown/index.ts +3 -3
  166. package/src/components/VvIcon/VvIcon.vue +3 -3
  167. package/src/components/VvIcon/index.ts +3 -3
  168. package/src/components/VvInputText/VvInputClearAction.ts +2 -2
  169. package/src/components/VvInputText/VvInputPasswordAction.ts +3 -4
  170. package/src/components/VvInputText/VvInputStepAction.ts +3 -2
  171. package/src/components/VvInputText/VvInputText.vue +130 -37
  172. package/src/components/VvInputText/VvInputTextActions.ts +5 -8
  173. package/src/components/VvInputText/index.ts +62 -1
  174. package/src/components/VvProgress/VvProgress.vue +2 -2
  175. package/src/components/VvProgress/index.ts +1 -1
  176. package/src/components/VvRadio/VvRadio.vue +3 -7
  177. package/src/components/VvRadio/index.ts +11 -7
  178. package/src/components/VvRadioGroup/VvRadioGroup.vue +7 -10
  179. package/src/components/VvRadioGroup/index.ts +1 -1
  180. package/src/components/VvSelect/VvSelect.vue +4 -4
  181. package/src/components/VvSelect/index.ts +1 -1
  182. package/src/components/VvTextarea/VvTextarea.vue +6 -6
  183. package/src/components/VvTextarea/index.ts +1 -1
  184. package/src/components/VvTooltip/VvTooltip.vue +2 -2
  185. package/src/components/VvTooltip/index.ts +3 -3
  186. package/src/composables/dropdown/useInjectDropdown.ts +2 -2
  187. package/src/composables/dropdown/useProvideDropdown.ts +2 -2
  188. package/src/composables/group/useInjectedGroupState.ts +1 -1
  189. package/src/composables/group/useProvideGroupState.ts +1 -1
  190. package/src/composables/useComponentIcon.ts +1 -1
  191. package/src/composables/useDebouncedInput.ts +10 -3
  192. package/src/composables/useDefaults.ts +89 -0
  193. package/src/composables/useModifiers.ts +4 -2
  194. package/src/composables/useOptions.ts +1 -1
  195. package/src/composables/useVolver.ts +2 -2
  196. package/src/directives/index.ts +3 -1
  197. package/src/directives/v-contextmenu.ts +40 -0
  198. package/src/directives/v-tooltip.ts +2 -2
  199. package/src/icons.ts +1 -1
  200. package/src/index.ts +0 -2
  201. package/src/props/index.ts +20 -10
  202. package/src/resolvers/unplugin.ts +15 -1
  203. package/src/stories/Accordion/Accordion.stories.mdx +8 -2
  204. package/src/stories/Accordion/Accordion.test.ts +21 -15
  205. package/src/stories/Accordion/AccordionSlots.stories.mdx +8 -8
  206. package/src/stories/AccordionGroup/AccordionGroup.stories.mdx +17 -1
  207. package/src/stories/AccordionGroup/AccordionGroup.test.ts +18 -12
  208. package/src/stories/AccordionGroup/AccordionGroupSlots.stories.mdx +1 -1
  209. package/src/stories/Dropdown/DropdownContextmenuDirective.stories.mdx +41 -0
  210. package/src/stories/InputText/InputText.settings.ts +53 -0
  211. package/src/stories/InputText/InputText.stories.mdx +40 -0
  212. package/src/stories/InputText/InputText.test.ts +5 -2
  213. package/src/stories/Tooltip/TooltipDirective.stories.mdx +1 -1
  214. package/src/stories/argTypes.ts +12 -2
  215. package/src/types/group.d.ts +5 -0
@@ -1,112 +1,184 @@
1
- import { unref as v, toRefs as k, computed as c, h as ne, inject as oe, toRef as ae, defineComponent as D, useSlots as x, ref as le, openBlock as j, createElementBlock as B, normalizeClass as F, withDirectives as se, createElementVNode as H, isRef as K, vModelRadio as ue, renderSlot as q, createTextVNode as ie, toDisplayString as w, createVNode as M, provide as ce, createCommentVNode as de, Fragment as fe, renderList as ve, createBlock as pe, mergeProps as ye } from "vue";
2
- import { toReactive as ge, useVModel as be } from "@vueuse/core";
3
- import { nanoid as me } from "nanoid";
4
- var E = /* @__PURE__ */ ((e) => (e.left = "left", e.right = "right", e.top = "top", e.bottom = "bottom", e))(E || {}), z = /* @__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))(z || {}), C = /* @__PURE__ */ ((e) => (e.before = "before", e.after = "after", e))(C || {}), I = /* @__PURE__ */ ((e) => (e.button = "button", e.submit = "submit", e.reset = "reset", e))(I || {}), U = /* @__PURE__ */ ((e) => (e._blank = "_blank", e._self = "_self", e._parent = "_parent", e._top = "_top", e))(U || {});
5
- const J = Symbol.for("radioGroup");
6
- function W(e, t, r) {
7
- return r ? R(e, r) === R(t, r) : G(e, t);
1
+ import { unref, toRefs, computed, h, inject, toRef, defineComponent, useSlots, ref, openBlock, createElementBlock, normalizeClass, withDirectives, createElementVNode, isRef, vModelRadio, renderSlot, createTextVNode, toDisplayString, createVNode, provide, createCommentVNode, Fragment, renderList, createBlock, mergeProps } from "vue";
2
+ import { toReactive, useVModel } from "@vueuse/core";
3
+ import { nanoid } from "nanoid";
4
+ var Side = /* @__PURE__ */ ((Side2) => {
5
+ Side2["left"] = "left";
6
+ Side2["right"] = "right";
7
+ Side2["top"] = "top";
8
+ Side2["bottom"] = "bottom";
9
+ return Side2;
10
+ })(Side || {});
11
+ var Placement = /* @__PURE__ */ ((Placement2) => {
12
+ Placement2["topStart"] = "top-start";
13
+ Placement2["topEnd"] = "top-end";
14
+ Placement2["bottomStart"] = "bottom-start";
15
+ Placement2["bottomEnd"] = "bottom-end";
16
+ Placement2["leftStart"] = "left-start";
17
+ Placement2["leftEnd"] = "left-end";
18
+ Placement2["rightStart"] = "right-start";
19
+ Placement2["rightEnd"] = "right-end";
20
+ return Placement2;
21
+ })(Placement || {});
22
+ var Position = /* @__PURE__ */ ((Position2) => {
23
+ Position2["before"] = "before";
24
+ Position2["after"] = "after";
25
+ return Position2;
26
+ })(Position || {});
27
+ var ButtonType = /* @__PURE__ */ ((ButtonType2) => {
28
+ ButtonType2["button"] = "button";
29
+ ButtonType2["submit"] = "submit";
30
+ ButtonType2["reset"] = "reset";
31
+ return ButtonType2;
32
+ })(ButtonType || {});
33
+ var AnchorTarget = /* @__PURE__ */ ((AnchorTarget2) => {
34
+ AnchorTarget2["_blank"] = "_blank";
35
+ AnchorTarget2["_self"] = "_self";
36
+ AnchorTarget2["_parent"] = "_parent";
37
+ AnchorTarget2["_top"] = "_top";
38
+ return AnchorTarget2;
39
+ })(AnchorTarget || {});
40
+ const INJECTION_KEY_RADIO_GROUP = Symbol.for("radioGroup");
41
+ function equals(obj1, obj2, field) {
42
+ if (field)
43
+ return resolveFieldData(obj1, field) === resolveFieldData(obj2, field);
44
+ else
45
+ return deepEquals(obj1, obj2);
8
46
  }
9
- function G(e, t) {
10
- if (e === t)
11
- return !0;
12
- if (e && t && typeof e == "object" && typeof t == "object") {
13
- const r = Array.isArray(e), s = Array.isArray(t);
14
- let o, a, l;
15
- if (r && s) {
16
- if (a = e.length, a != t.length)
17
- return !1;
18
- for (o = a; o-- !== 0; )
19
- if (!G(e[o], t[o]))
20
- return !1;
21
- return !0;
47
+ function deepEquals(a, b) {
48
+ if (a === b)
49
+ return true;
50
+ if (a && b && typeof a == "object" && typeof b == "object") {
51
+ const arrA = Array.isArray(a);
52
+ const arrB = Array.isArray(b);
53
+ let i, length, key;
54
+ if (arrA && arrB) {
55
+ length = a.length;
56
+ if (length != b.length)
57
+ return false;
58
+ for (i = length; i-- !== 0; )
59
+ if (!deepEquals(a[i], b[i]))
60
+ return false;
61
+ return true;
22
62
  }
23
- if (r != s)
24
- return !1;
25
- const i = e instanceof Date, n = t instanceof Date;
26
- if (i != n)
27
- return !1;
28
- if (i && n)
29
- return e.getTime() == t.getTime();
30
- const d = e instanceof RegExp, f = t instanceof RegExp;
31
- if (d != f)
32
- return !1;
33
- if (d && f)
34
- return e.toString() == t.toString();
35
- const u = Object.keys(e);
36
- if (a = u.length, a !== Object.keys(t).length)
37
- return !1;
38
- for (o = a; o-- !== 0; )
39
- if (!Object.prototype.hasOwnProperty.call(t, u[o]))
40
- return !1;
41
- for (o = a; o-- !== 0; )
42
- if (l = u[o], !G(e[l], t[l]))
43
- return !1;
44
- return !0;
63
+ if (arrA != arrB)
64
+ return false;
65
+ const dateA = a instanceof Date, dateB = b instanceof Date;
66
+ if (dateA != dateB)
67
+ return false;
68
+ if (dateA && dateB)
69
+ return a.getTime() == b.getTime();
70
+ const regexpA = a instanceof RegExp, regexpB = b instanceof RegExp;
71
+ if (regexpA != regexpB)
72
+ return false;
73
+ if (regexpA && regexpB)
74
+ return a.toString() == b.toString();
75
+ const keys = Object.keys(a);
76
+ length = keys.length;
77
+ if (length !== Object.keys(b).length)
78
+ return false;
79
+ for (i = length; i-- !== 0; )
80
+ if (!Object.prototype.hasOwnProperty.call(b, keys[i]))
81
+ return false;
82
+ for (i = length; i-- !== 0; ) {
83
+ key = keys[i];
84
+ if (!deepEquals(a[key], b[key]))
85
+ return false;
86
+ }
87
+ return true;
45
88
  }
46
- return e !== e && t !== t;
89
+ return a !== a && b !== b;
47
90
  }
48
- function R(e, t) {
49
- if (e && Object.keys(e).length && t) {
50
- if (t.indexOf(".") === -1)
51
- return e[t];
52
- {
53
- const r = t.split(".");
54
- let s = e;
55
- for (let o = 0, a = r.length; o < a; ++o) {
56
- if (e == null)
91
+ function resolveFieldData(data, field) {
92
+ if (data && Object.keys(data).length && field) {
93
+ if (field.indexOf(".") === -1) {
94
+ return data[field];
95
+ } else {
96
+ const fields = field.split(".");
97
+ let value = data;
98
+ for (let i = 0, len = fields.length; i < len; ++i) {
99
+ if (data == null) {
57
100
  return null;
58
- s = s[r[o]];
101
+ }
102
+ value = value[fields[i]];
59
103
  }
60
- return s;
104
+ return value;
61
105
  }
62
- } else
106
+ } else {
63
107
  return null;
108
+ }
64
109
  }
65
- function he(e, t) {
66
- if (e != null && t && t.length) {
67
- for (const r of t)
68
- if (W(e, r))
69
- return !0;
110
+ function contains(value, list) {
111
+ if (value != null && list && list.length) {
112
+ for (const val of list) {
113
+ if (equals(value, val)) {
114
+ return true;
115
+ }
116
+ }
70
117
  }
71
- return !1;
118
+ return false;
72
119
  }
73
- function Y(e) {
74
- return ((t) => t == null || t === "" || Array.isArray(t) && t.length === 0 || !(t instanceof Date) && typeof t == "object" && Object.keys(t).length === 0)(v(e));
120
+ function isEmpty(value) {
121
+ 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));
75
122
  }
76
- function Oe(e) {
77
- return typeof e == "string" || e instanceof String;
123
+ function isString(value) {
124
+ return typeof value === "string" || value instanceof String;
78
125
  }
79
- function A(e) {
80
- return Array.isArray(e) ? e.filter((t) => Oe(t)).join(" ") : e;
126
+ function joinLines(errors) {
127
+ if (Array.isArray(errors)) {
128
+ return errors.filter((e) => isString(e)).join(" ");
129
+ }
130
+ return errors;
81
131
  }
82
- function Q(e, t) {
132
+ function HintSlotFactory(parentProps, parentSlots) {
133
+ const {
134
+ invalid: invalidSlot,
135
+ valid: validSlot,
136
+ hint: hintSlot,
137
+ loading: loadingSlot
138
+ } = parentSlots;
83
139
  const {
84
- invalid: r,
85
- valid: s,
86
- hint: o,
87
- loading: a
88
- } = t, {
89
- hintLabel: l,
90
- modelValue: i,
91
- valid: n,
92
- validLabel: d,
93
- invalid: f,
94
- invalidLabel: u,
95
- ...S
96
- } = k(e), p = R(S, "loading"), g = R(S, "loadingLabel"), m = c(() => f.value ? !!(f.value && r || u != null && u.value && Array.isArray(u.value) && u.value.length > 0 || u != null && u.value && !Y(u)) : !1), y = c(
97
- () => !!(l && l.value || o)
98
- ), b = c(
99
- () => !!(d && d.value || s)
100
- ), _ = c(
101
- () => !!(p != null && p.value && a || p != null && p.value && (g != null && g.value))
102
- ), V = c(
103
- () => y.value || b.value || m.value || _.value
140
+ hintLabel,
141
+ modelValue,
142
+ valid,
143
+ validLabel,
144
+ invalid,
145
+ invalidLabel,
146
+ ...otherProps
147
+ } = toRefs(parentProps);
148
+ const loading = resolveFieldData(otherProps, "loading");
149
+ const loadingLabel = resolveFieldData(otherProps, "loadingLabel");
150
+ const hasInvalid = computed(() => {
151
+ if (!invalid.value) {
152
+ return false;
153
+ }
154
+ if (invalid.value && invalidSlot) {
155
+ return true;
156
+ }
157
+ if ((invalidLabel == null ? void 0 : invalidLabel.value) && Array.isArray(invalidLabel.value) && invalidLabel.value.length > 0) {
158
+ return true;
159
+ }
160
+ if ((invalidLabel == null ? void 0 : invalidLabel.value) && !isEmpty(invalidLabel)) {
161
+ return true;
162
+ }
163
+ return false;
164
+ });
165
+ const hasHint = computed(
166
+ () => !!(hintLabel && hintLabel.value || hintSlot)
167
+ );
168
+ const hasValid = computed(
169
+ () => !!(validLabel && validLabel.value || validSlot)
170
+ );
171
+ const hasLoading = computed(
172
+ () => !!((loading == null ? void 0 : loading.value) && loadingSlot || (loading == null ? void 0 : loading.value) && (loadingLabel == null ? void 0 : loadingLabel.value))
173
+ );
174
+ const isVisible = computed(
175
+ () => hasHint.value || hasValid.value || hasInvalid.value || hasLoading.value
104
176
  );
105
177
  return {
106
- hasInvalid: m,
107
- hasHint: y,
108
- hasValid: b,
109
- hasLoading: _,
178
+ hasInvalid,
179
+ hasHint,
180
+ hasValid,
181
+ hasLoading,
110
182
  HintSlot: {
111
183
  name: "HintSlot",
112
184
  props: {
@@ -115,42 +187,50 @@ function Q(e, t) {
115
187
  default: () => ({})
116
188
  }
117
189
  },
118
- setup(P) {
119
- const h = c(() => {
120
- const O = ge({
121
- hintLabel: l,
122
- modelValue: i,
123
- valid: n,
124
- validLabel: d,
125
- invalid: f,
126
- invalidLabel: u,
127
- loading: p,
128
- loadingLabel: g,
129
- ...P.params
190
+ setup(props) {
191
+ const hintContent = computed(() => {
192
+ const slotProps = toReactive({
193
+ hintLabel,
194
+ modelValue,
195
+ valid,
196
+ validLabel,
197
+ invalid,
198
+ invalidLabel,
199
+ loading,
200
+ loadingLabel,
201
+ ...props.params
130
202
  });
131
- return f != null && f.value ? (r == null ? void 0 : r(O)) || A(u == null ? void 0 : u.value) || (l == null ? void 0 : l.value) : n != null && n.value ? (s == null ? void 0 : s(O)) || A(d == null ? void 0 : d.value) || (l == null ? void 0 : l.value) : p != null && p.value ? (a == null ? void 0 : a(O)) || A(g == null ? void 0 : g.value) || (l == null ? void 0 : l.value) : (o == null ? void 0 : o(O)) || A(l == null ? void 0 : l.value) || (l == null ? void 0 : l.value);
203
+ if (invalid == null ? void 0 : invalid.value) {
204
+ return (invalidSlot == null ? void 0 : invalidSlot(slotProps)) || joinLines(invalidLabel == null ? void 0 : invalidLabel.value) || (hintLabel == null ? void 0 : hintLabel.value);
205
+ }
206
+ if (valid == null ? void 0 : valid.value)
207
+ return (validSlot == null ? void 0 : validSlot(slotProps)) || joinLines(validLabel == null ? void 0 : validLabel.value) || (hintLabel == null ? void 0 : hintLabel.value);
208
+ if (loading == null ? void 0 : loading.value)
209
+ return (loadingSlot == null ? void 0 : loadingSlot(slotProps)) || joinLines(loadingLabel == null ? void 0 : loadingLabel.value) || (hintLabel == null ? void 0 : hintLabel.value);
210
+ return (hintSlot == null ? void 0 : hintSlot(slotProps)) || joinLines(hintLabel == null ? void 0 : hintLabel.value) || (hintLabel == null ? void 0 : hintLabel.value);
132
211
  });
133
212
  return {
134
- isVisible: V,
135
- hasInvalid: m,
136
- hasValid: b,
137
- hintContent: h
213
+ isVisible,
214
+ hasInvalid,
215
+ hasValid,
216
+ hintContent
138
217
  };
139
218
  },
140
219
  render() {
141
- if (this.isVisible)
142
- return ne(
220
+ if (this.isVisible) {
221
+ return h(
143
222
  "small",
144
223
  {
145
224
  role: this.hasInvalid ? "alert" : this.hasValid ? "status" : void 0
146
225
  },
147
226
  this.hintContent
148
227
  );
228
+ }
149
229
  }
150
230
  }
151
231
  };
152
232
  }
153
- const Se = {
233
+ const LinkProps = {
154
234
  /**
155
235
  * The router-link/nuxt-link property, if it is defined the button is rendered as a ruouter-link or nuxt-link.
156
236
  * @see Documentation of [router-link](https://router.vuejs.org/api/#router-link) and [nuxt-link](https://nuxtjs.org/api/components-nuxt-link/)
@@ -167,7 +247,7 @@ const Se = {
167
247
  */
168
248
  target: {
169
249
  type: String,
170
- validator: (e) => Object.values(U).includes(e)
250
+ validator: (value) => Object.values(AnchorTarget).includes(value)
171
251
  },
172
252
  /**
173
253
  * Anchor rel
@@ -176,7 +256,8 @@ const Se = {
176
256
  type: String,
177
257
  default: "noopener noreferrer"
178
258
  }
179
- }, T = {
259
+ };
260
+ const ValidProps = {
180
261
  /**
181
262
  * Valid status
182
263
  */
@@ -185,7 +266,8 @@ const Se = {
185
266
  * Valid label
186
267
  */
187
268
  validLabel: [String, Array]
188
- }, X = {
269
+ };
270
+ const InvalidProps = {
189
271
  /**
190
272
  * Invalid status
191
273
  */
@@ -194,39 +276,47 @@ const Se = {
194
276
  * Invalid label
195
277
  */
196
278
  invalidLabel: [String, Array]
197
- }, $ = {
279
+ };
280
+ const DisabledProps = {
198
281
  /**
199
282
  * Whether the form control is disabled
200
283
  */
201
284
  disabled: Boolean
202
- }, _e = {
285
+ };
286
+ const ActiveProps = {
203
287
  /**
204
288
  * Whether the item is active
205
289
  */
206
290
  active: Boolean
207
- }, Ve = {
291
+ };
292
+ const PressedProps = {
208
293
  /**
209
294
  * Whether the item is pressed
210
295
  */
211
296
  pressed: Boolean
212
- }, N = {
297
+ };
298
+ const LabelProps = {
213
299
  /**
214
300
  * The item label
215
301
  */
216
302
  label: [String, Number]
217
- }, Z = {
303
+ };
304
+ const ReadonlyProps = {
218
305
  /**
219
306
  * The value is not editable
220
307
  */
221
308
  readonly: Boolean
222
- }, L = {
309
+ };
310
+ const ModifiersProps = {
223
311
  /**
224
312
  * Component BEM modifiers
225
313
  */
226
314
  modifiers: [String, Array]
227
- }, ee = {
315
+ };
316
+ const HintProps = {
228
317
  hintLabel: { type: String, default: "" }
229
- }, je = {
318
+ };
319
+ const OptionsProps = {
230
320
  /**
231
321
  * List of options, can be string[] or object[]
232
322
  */
@@ -247,39 +337,150 @@ const Se = {
247
337
  */
248
338
  disabledKey: { type: [String, Function], default: "disabled" }
249
339
  };
250
- C.before;
251
- const ke = {
340
+ ({
341
+ /**
342
+ * VvIcon name or props
343
+ * @see VVIcon
344
+ */
345
+ icon: { type: [String, Object] },
346
+ /**
347
+ * VvIcon position
348
+ */
349
+ iconPosition: {
350
+ type: String,
351
+ default: Position.before,
352
+ validation: (value) => Object.values(Position).includes(value)
353
+ }
354
+ });
355
+ const TabindexProps = {
252
356
  /**
253
357
  * Global attribute tabindex
254
358
  * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex
255
359
  */
256
360
  tabindex: { type: [String, Number], default: 0 }
257
- }, Ae = {
361
+ };
362
+ const IdProps = {
258
363
  /**
259
364
  * Global attribute id
260
365
  * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id
261
366
  */
262
367
  id: [String, Number]
263
368
  };
264
- E.bottom;
265
- const Be = {
266
- ...Ae,
369
+ ({
370
+ /**
371
+ * Dropdown placement
372
+ */
373
+ placement: {
374
+ type: String,
375
+ default: Side.bottom,
376
+ validator: (value) => {
377
+ return Object.values(Side).includes(value) || Object.values(Placement).includes(value);
378
+ }
379
+ },
380
+ /**
381
+ * Dropdown strategy
382
+ */
383
+ strategy: {
384
+ type: String,
385
+ default: "absolute",
386
+ validator: (value) => {
387
+ return ["fixed", "absolute"].includes(value);
388
+ }
389
+ },
390
+ /**
391
+ * Dropdown show / hide transition name
392
+ */
393
+ transitionName: {
394
+ type: String
395
+ },
396
+ /**
397
+ * Offset of the dropdown from the trigger
398
+ * @see https://floating-ui.com/docs/offset
399
+ */
400
+ offset: {
401
+ type: [Number, String, Object],
402
+ default: 0
403
+ },
404
+ /**
405
+ * Move dropdown to the side if there is no space in the default position
406
+ * @see https://floating-ui.com/docs/shift
407
+ */
408
+ shift: {
409
+ type: [Boolean, Object],
410
+ default: false
411
+ },
412
+ /**
413
+ * Flip dropdown position if there is no space in the default position
414
+ * @see https://floating-ui.com/docs/flip
415
+ */
416
+ flip: {
417
+ type: [Boolean, Object],
418
+ default: true
419
+ },
420
+ /**
421
+ * Size of the dropdown
422
+ * @see https://floating-ui.com/docs/size
423
+ */
424
+ size: {
425
+ type: [Boolean, Object],
426
+ default: () => ({ padding: 10 })
427
+ },
428
+ /**
429
+ * Automatically change the position of the dropdown
430
+ * @see https://floating-ui.com/docs/autoPlacement
431
+ */
432
+ autoPlacement: {
433
+ type: [Boolean, Object],
434
+ default: false
435
+ },
436
+ /**
437
+ * Add arrow to the dropdown
438
+ * @see https://floating-ui.com/docs/arrow
439
+ */
440
+ arrow: {
441
+ type: Boolean,
442
+ default: false
443
+ },
444
+ /**
445
+ * Close dropdown on click outside
446
+ */
447
+ autoClose: {
448
+ type: Boolean,
449
+ default: true
450
+ },
451
+ /**
452
+ * Autofocus first item on dropdown open
453
+ */
454
+ autofocusFirst: {
455
+ type: Boolean,
456
+ default: true
457
+ },
458
+ /**
459
+ * Set dropdown width to the same as the trigger
460
+ */
461
+ triggerWidth: {
462
+ type: Boolean
463
+ }
464
+ });
465
+ const IdNameProps = {
466
+ ...IdProps,
267
467
  /**
268
468
  * Input / Textarea name
269
469
  * Name of the form control. Submitted with the form as part of a name/value pair
270
470
  * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#name
271
471
  */
272
- name: { type: String, required: !0 }
273
- }, Re = {
274
- ...Be,
275
- ...ke,
276
- ...T,
277
- ...X,
278
- ...ee,
279
- ...$,
280
- ...Z,
281
- ...L,
282
- ...N,
472
+ name: { type: String, required: true }
473
+ };
474
+ const CheckboxRadioProps = {
475
+ ...IdNameProps,
476
+ ...TabindexProps,
477
+ ...ValidProps,
478
+ ...InvalidProps,
479
+ ...HintProps,
480
+ ...DisabledProps,
481
+ ...ReadonlyProps,
482
+ ...ModifiersProps,
483
+ ...LabelProps,
283
484
  /**
284
485
  * Input value
285
486
  * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#value
@@ -289,225 +490,318 @@ const Be = {
289
490
  * Input value
290
491
  */
291
492
  modelValue: [Object, Number, Boolean, String]
292
- }, Pe = {
293
- ...T,
294
- ...X,
295
- ...je,
296
- ...ee,
297
- ...$,
298
- ...Z,
299
- ...L,
300
- ...N,
493
+ };
494
+ const CheckboxRadioGroupProps = {
495
+ ...ValidProps,
496
+ ...InvalidProps,
497
+ ...OptionsProps,
498
+ ...HintProps,
499
+ ...DisabledProps,
500
+ ...ReadonlyProps,
501
+ ...ModifiersProps,
502
+ ...LabelProps,
301
503
  /**
302
504
  * Input value
303
505
  */
304
- modelValue: [String, Array],
506
+ modelValue: [String, Array, Boolean, Number, Symbol],
305
507
  /**
306
508
  * Input name
307
509
  */
308
- name: { type: String, required: !0 },
510
+ name: { type: String, required: true },
309
511
  /**
310
512
  * If true, the group will be displayed in a vertical column
311
513
  */
312
514
  vertical: Boolean
313
515
  };
314
516
  ({
315
- ...$,
316
- ...N,
317
- ...Ve,
318
- ..._e,
319
- ...Se,
517
+ ...DisabledProps,
518
+ ...LabelProps,
519
+ ...PressedProps,
520
+ ...ActiveProps,
521
+ ...LinkProps,
320
522
  /**
321
523
  * Button type
322
524
  */
323
- type: I.button
525
+ type: {
526
+ type: String,
527
+ default: ButtonType.button,
528
+ validator: (value) => Object.values(ButtonType).includes(value)
529
+ }
324
530
  });
325
- function Ee(e) {
326
- const t = oe(e, void 0), r = c(() => !Y(t));
327
- function s(o, a, l) {
328
- if (t != null && t.value) {
329
- const n = v(t.value)[o];
330
- return c({
531
+ function useInjectedGroupState(groupKey) {
532
+ const group = inject(groupKey, void 0);
533
+ const isInGroup = computed(() => !isEmpty(group));
534
+ function getGroupOrLocalRef(propName, props, emit) {
535
+ if (group == null ? void 0 : group.value) {
536
+ const groupPropValue = unref(group.value)[propName];
537
+ return computed({
331
538
  get() {
332
- return n == null ? void 0 : n.value;
539
+ return groupPropValue == null ? void 0 : groupPropValue.value;
333
540
  },
334
- set(d) {
335
- n.value = d;
541
+ set(value) {
542
+ groupPropValue.value = value;
336
543
  }
337
544
  });
338
545
  }
339
- const i = ae(a, o);
340
- return c({
546
+ const propRef = toRef(props, propName);
547
+ return computed({
341
548
  get() {
342
- return i.value;
549
+ return propRef.value;
343
550
  },
344
- set(n) {
345
- l && l(`update:${o}`, n);
551
+ set(value) {
552
+ if (emit)
553
+ emit(`update:${propName}`, value);
346
554
  }
347
555
  });
348
556
  }
349
557
  return {
350
- group: t,
351
- isInGroup: r,
352
- getGroupOrLocalRef: s
558
+ group,
559
+ isInGroup,
560
+ getGroupOrLocalRef
353
561
  };
354
562
  }
355
- const Ce = Re, Ie = ["click", "update:modelValue", "change", "blur"];
356
- function Ge(e, t) {
357
- const { id: r } = k(e), { group: s, isInGroup: o, getGroupOrLocalRef: a } = Ee(J), l = a("modelValue", e, t), i = a("readonly", e), n = a("disabled", e), d = a("valid", e), f = a("invalid", e);
563
+ const VvRadioProps = CheckboxRadioProps;
564
+ const VvRadioEvents = ["click", "update:modelValue", "change", "blur"];
565
+ function useGroupProps(props, emit) {
566
+ const { id } = toRefs(props);
567
+ const { group, isInGroup, getGroupOrLocalRef } = useInjectedGroupState(INJECTION_KEY_RADIO_GROUP);
568
+ const modelValue = getGroupOrLocalRef("modelValue", props, emit);
569
+ const valid = getGroupOrLocalRef("valid", props);
570
+ const invalid = getGroupOrLocalRef("invalid", props);
571
+ const readonly = computed(
572
+ () => {
573
+ var _a;
574
+ return Boolean(props.readonly || ((_a = group == null ? void 0 : group.value) == null ? void 0 : _a.disabled.value));
575
+ }
576
+ );
577
+ const disabled = computed(
578
+ () => {
579
+ var _a;
580
+ return Boolean(props.disabled || ((_a = group == null ? void 0 : group.value) == null ? void 0 : _a.disabled.value));
581
+ }
582
+ );
358
583
  return {
359
584
  // local props
360
- id: r,
585
+ id,
361
586
  // global props
362
- group: s,
363
- isInGroup: o,
364
- modelValue: l,
365
- readonly: i,
366
- disabled: n,
367
- valid: d,
368
- invalid: f
587
+ group,
588
+ isInGroup,
589
+ modelValue,
590
+ valid,
591
+ invalid,
592
+ readonly,
593
+ disabled
369
594
  };
370
595
  }
371
- const $e = (e) => c(() => String((e == null ? void 0 : e.value) || me()));
372
- function te(e, t, r) {
373
- return c(() => {
374
- const s = {
375
- [e]: !0
376
- }, o = typeof (t == null ? void 0 : t.value) == "string" ? t.value.split(" ") : t == null ? void 0 : t.value;
377
- return o && Array.isArray(o) && o.forEach((a) => {
378
- s[`${e}--${a}`] = !0;
379
- }), r && Object.keys(r.value).forEach((a) => {
380
- s[`${e}--${a}`] = v(r.value[a]);
381
- }), s;
596
+ const useUniqueId = (id) => computed(() => String((id == null ? void 0 : id.value) || nanoid()));
597
+ function useModifiers(prefix, modifiers, others) {
598
+ return computed(() => {
599
+ const toReturn = {
600
+ [prefix]: true
601
+ };
602
+ const modifiersArray = typeof (modifiers == null ? void 0 : modifiers.value) === "string" ? modifiers.value.split(" ") : modifiers == null ? void 0 : modifiers.value;
603
+ if (modifiersArray) {
604
+ if (Array.isArray(modifiersArray)) {
605
+ modifiersArray.forEach((modifier) => {
606
+ if (modifier) {
607
+ toReturn[`${prefix}--${modifier}`] = true;
608
+ }
609
+ });
610
+ }
611
+ }
612
+ if (others) {
613
+ Object.keys(others.value).forEach((key) => {
614
+ toReturn[`${prefix}--${key}`] = unref(others.value[key]);
615
+ });
616
+ }
617
+ return toReturn;
382
618
  });
383
619
  }
384
- const Ne = ["for"], De = ["id", "name", "disabled", "value", "tabindex", "aria-invalid"], xe = {
620
+ const _hoisted_1$1 = ["for"];
621
+ const _hoisted_2$1 = ["id", "name", "disabled", "value", "tabindex", "aria-invalid"];
622
+ const __default__$1 = {
385
623
  name: "VvRadio"
386
- }, Fe = /* @__PURE__ */ D({
387
- ...xe,
388
- props: Ce,
389
- emits: Ie,
390
- setup(e, { emit: t }) {
391
- const r = e, s = x(), { id: o, disabled: a, readonly: l, modelValue: i, valid: n, invalid: d } = Ge(r, t), f = $e(o), u = c(() => p.value ? -1 : r.tabindex), S = le(), p = c(() => a.value || l.value), g = c(() => {
392
- if (d.value === !0)
393
- return !0;
394
- if (n.value === !0)
395
- return !1;
396
- }), m = c(
397
- () => Array.isArray(i.value) ? he(r.value, i.value) : W(r.value, i.value)
398
- ), y = c(
399
- () => ["string", "number", "boolean"].includes(typeof r.value) ? r.value : !0
400
- ), b = c({
624
+ };
625
+ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
626
+ ...__default__$1,
627
+ props: VvRadioProps,
628
+ emits: VvRadioEvents,
629
+ setup(__props, { emit }) {
630
+ const props = __props;
631
+ const slots = useSlots();
632
+ const { id, disabled, readonly, modelValue, valid, invalid } = useGroupProps(props, emit);
633
+ const hasId = useUniqueId(id);
634
+ const tabindex = computed(() => isDisabled.value ? -1 : props.tabindex);
635
+ const input = ref();
636
+ const isDisabled = computed(() => disabled.value || readonly.value);
637
+ const isInvalid = computed(() => {
638
+ if (invalid.value === true) {
639
+ return true;
640
+ }
641
+ if (valid.value === true) {
642
+ return false;
643
+ }
644
+ return void 0;
645
+ });
646
+ const isChecked = computed(
647
+ () => Array.isArray(modelValue.value) ? contains(props.value, modelValue.value) : equals(props.value, modelValue.value)
648
+ );
649
+ const hasValue = computed(
650
+ () => ["string", "number", "boolean"].includes(typeof props.value) ? props.value : true
651
+ );
652
+ const localModelValue = computed({
401
653
  get() {
402
- return m.value ? y.value : null;
654
+ return isChecked.value ? hasValue.value : null;
403
655
  },
404
- set(h) {
405
- Array.isArray(i.value) ? i.value = [r.value] : i.value = r.value, t("change", h);
656
+ set(newValue) {
657
+ if (Array.isArray(modelValue.value)) {
658
+ modelValue.value = [props.value];
659
+ } else {
660
+ modelValue.value = props.value;
661
+ }
662
+ emit("change", newValue);
406
663
  }
407
- }), { modifiers: _ } = k(r), V = te(
664
+ });
665
+ const { modifiers } = toRefs(props);
666
+ const bemCssClasses = useModifiers(
408
667
  "vv-radio",
409
- _,
410
- c(() => ({
411
- valid: n.value,
412
- invalid: d.value,
413
- disabled: a.value,
414
- readonly: l.value
668
+ modifiers,
669
+ computed(() => ({
670
+ valid: valid.value,
671
+ invalid: invalid.value,
672
+ disabled: disabled.value,
673
+ readonly: readonly.value
415
674
  }))
416
- ), { HintSlot: P } = Q(r, s);
417
- return (h, O) => (j(), B("label", {
418
- class: F(v(V)),
419
- for: v(f)
420
- }, [
421
- se(H("input", {
422
- id: v(f),
423
- ref_key: "input",
424
- ref: S,
425
- "onUpdate:modelValue": O[0] || (O[0] = (re) => K(b) ? b.value = re : null),
426
- type: "radio",
427
- class: "vv-radio__input",
428
- name: h.name,
429
- disabled: v(p),
430
- value: v(y),
431
- tabindex: v(u),
432
- "aria-invalid": v(g)
433
- }, null, 8, De), [
434
- [ue, v(b)]
435
- ]),
436
- q(h.$slots, "default", { value: v(i) }, () => [
437
- ie(w(h.label), 1)
438
- ]),
439
- M(v(P), {
440
- class: "vv-radio__hint",
441
- params: { value: v(i) }
442
- }, null, 8, ["params"])
443
- ], 10, Ne));
675
+ );
676
+ const { HintSlot } = HintSlotFactory(props, slots);
677
+ return (_ctx, _cache) => {
678
+ return openBlock(), createElementBlock("label", {
679
+ class: normalizeClass(unref(bemCssClasses)),
680
+ for: unref(hasId)
681
+ }, [
682
+ withDirectives(createElementVNode("input", {
683
+ id: unref(hasId),
684
+ ref_key: "input",
685
+ ref: input,
686
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(localModelValue) ? localModelValue.value = $event : null),
687
+ type: "radio",
688
+ class: "vv-radio__input",
689
+ name: _ctx.name,
690
+ disabled: unref(isDisabled),
691
+ value: unref(hasValue),
692
+ tabindex: unref(tabindex),
693
+ "aria-invalid": unref(isInvalid)
694
+ }, null, 8, _hoisted_2$1), [
695
+ [vModelRadio, unref(localModelValue)]
696
+ ]),
697
+ renderSlot(_ctx.$slots, "default", { value: unref(modelValue) }, () => [
698
+ createTextVNode(toDisplayString(_ctx.label), 1)
699
+ ]),
700
+ createVNode(unref(HintSlot), {
701
+ class: "vv-radio__hint",
702
+ params: { value: unref(modelValue) }
703
+ }, null, 8, ["params"])
704
+ ], 10, _hoisted_1$1);
705
+ };
444
706
  }
445
- }), He = Pe, Ke = ["update:modelValue", "change"];
446
- function qe(e) {
447
- if (Object.keys(e).some(
448
- (t) => t !== "key" && !K(e[t])
707
+ });
708
+ const VvRadioGroupProps = CheckboxRadioGroupProps;
709
+ const VvRadioGroupEvents = ["update:modelValue", "change"];
710
+ function useProvideGroupState(groupState) {
711
+ if (Object.keys(groupState).some(
712
+ (k) => k !== "key" && !isRef(groupState[k])
449
713
  ))
450
714
  throw Error("One or more groupState props aren't ref.");
451
- ce(
452
- e.key,
453
- c(() => e)
715
+ provide(
716
+ groupState.key,
717
+ computed(() => groupState)
454
718
  );
455
719
  }
456
- function we(e) {
457
- const { options: t, labelKey: r, valueKey: s, disabledKey: o } = k(e);
720
+ function useOptions(props) {
721
+ const { options, labelKey, valueKey, disabledKey } = toRefs(props);
722
+ const getOptionLabel = (option) => {
723
+ if (typeof option !== "object" && option !== null)
724
+ return option;
725
+ return typeof labelKey.value === "function" ? labelKey.value(option) : option[labelKey.value];
726
+ };
727
+ const getOptionValue = (option) => {
728
+ if (typeof option !== "object" && option !== null)
729
+ return option;
730
+ return typeof valueKey.value === "function" ? valueKey.value(option) : option[valueKey.value];
731
+ };
732
+ const getOptionDisabled = (option) => {
733
+ if (typeof option !== "object" && option !== null)
734
+ return false;
735
+ return typeof disabledKey.value === "function" ? disabledKey.value(option) : option[disabledKey.value];
736
+ };
458
737
  return {
459
- options: t,
460
- getOptionLabel: (n) => typeof n != "object" && n !== null ? n : typeof r.value == "function" ? r.value(n) : n[r.value],
461
- getOptionValue: (n) => typeof n != "object" && n !== null ? n : typeof s.value == "function" ? s.value(n) : n[s.value],
462
- getOptionDisabled: (n) => typeof n != "object" && n !== null ? !1 : typeof o.value == "function" ? o.value(n) : n[o.value]
738
+ options,
739
+ getOptionLabel,
740
+ getOptionValue,
741
+ getOptionDisabled
463
742
  };
464
743
  }
465
- const Me = ["textContent"], ze = { class: "vv-radio-group__wrapper" }, Ue = {
744
+ const _hoisted_1 = ["textContent"];
745
+ const _hoisted_2 = { class: "vv-radio-group__wrapper" };
746
+ const __default__ = {
466
747
  name: "VvRadioGroup"
467
- }, Qe = /* @__PURE__ */ D({
468
- ...Ue,
469
- props: He,
470
- emits: Ke,
471
- setup(e, { emit: t }) {
472
- const r = e, s = x(), o = be(r, "modelValue", t), { disabled: a, readonly: l, vertical: i, valid: n, invalid: d, modifiers: f } = k(r);
473
- qe({
474
- key: J,
475
- modelValue: o,
476
- disabled: a,
477
- readonly: l,
478
- valid: n,
479
- invalid: d
748
+ };
749
+ const _sfc_main = /* @__PURE__ */ defineComponent({
750
+ ...__default__,
751
+ props: VvRadioGroupProps,
752
+ emits: VvRadioGroupEvents,
753
+ setup(__props, { emit }) {
754
+ const props = __props;
755
+ const slots = useSlots();
756
+ const modelValue = useVModel(props, "modelValue", emit);
757
+ const { disabled, readonly, vertical, valid, invalid, modifiers } = toRefs(props);
758
+ useProvideGroupState({
759
+ key: INJECTION_KEY_RADIO_GROUP,
760
+ modelValue,
761
+ disabled,
762
+ readonly,
763
+ valid,
764
+ invalid
480
765
  });
481
- const { getOptionLabel: u, getOptionValue: S } = we(r), p = te(
766
+ const { getOptionLabel, getOptionValue } = useOptions(props);
767
+ const bemCssClasses = useModifiers(
482
768
  "vv-radio-group",
483
- f,
484
- c(() => ({
485
- disabled: a.value,
486
- readonly: l.value,
487
- horizontal: !i.value,
488
- valid: n.value,
489
- invalid: d.value
769
+ modifiers,
770
+ computed(() => ({
771
+ disabled: disabled.value,
772
+ readonly: readonly.value,
773
+ horizontal: !vertical.value,
774
+ valid: valid.value,
775
+ invalid: invalid.value
490
776
  }))
491
- ), g = (y, b) => ({
492
- id: `${r.name}_opt${b}`,
493
- name: r.name,
494
- label: u(y),
495
- value: S(y)
496
- }), { HintSlot: m } = Q(r, s);
497
- return (y, b) => (j(), B("fieldset", {
498
- class: F(v(p))
499
- }, [
500
- y.label ? (j(), B("legend", {
501
- key: 0,
502
- textContent: w(y.label)
503
- }, null, 8, Me)) : de("", !0),
504
- H("div", ze, [
505
- y.options.length > 0 ? (j(!0), B(fe, { key: 0 }, ve(y.options, (_, V) => (j(), pe(Fe, ye({ key: V }, g(_, V)), null, 16))), 128)) : q(y.$slots, "default", { key: 1 })
506
- ]),
507
- M(v(m), { class: "vv-radio-group__hint" })
508
- ], 2));
777
+ );
778
+ const getOptionProps = (option, index) => {
779
+ return {
780
+ id: `${props.name}_opt${index}`,
781
+ name: props.name,
782
+ label: getOptionLabel(option),
783
+ value: getOptionValue(option)
784
+ };
785
+ };
786
+ const { HintSlot } = HintSlotFactory(props, slots);
787
+ return (_ctx, _cache) => {
788
+ return openBlock(), createElementBlock("fieldset", {
789
+ class: normalizeClass(unref(bemCssClasses))
790
+ }, [
791
+ _ctx.label ? (openBlock(), createElementBlock("legend", {
792
+ key: 0,
793
+ textContent: toDisplayString(_ctx.label)
794
+ }, null, 8, _hoisted_1)) : createCommentVNode("", true),
795
+ createElementVNode("div", _hoisted_2, [
796
+ _ctx.options.length > 0 ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(_ctx.options, (option, index) => {
797
+ return openBlock(), createBlock(_sfc_main$1, mergeProps({ key: index }, getOptionProps(option, index)), null, 16);
798
+ }), 128)) : renderSlot(_ctx.$slots, "default", { key: 1 })
799
+ ]),
800
+ createVNode(unref(HintSlot), { class: "vv-radio-group__hint" })
801
+ ], 2);
802
+ };
509
803
  }
510
804
  });
511
805
  export {
512
- Qe as default
806
+ _sfc_main as default
513
807
  };