@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,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) {
83
133
  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
134
+ invalid: invalidSlot,
135
+ valid: validSlot,
136
+ hint: hintSlot,
137
+ loading: loadingSlot
138
+ } = parentSlots;
139
+ const {
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,140 @@ 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 show / hide transition name
382
+ */
383
+ transitionName: {
384
+ type: String
385
+ },
386
+ /**
387
+ * Offset of the dropdown from the trigger
388
+ * @see https://floating-ui.com/docs/offset
389
+ */
390
+ offset: {
391
+ type: [Number, String, Object],
392
+ default: 0
393
+ },
394
+ /**
395
+ * Move dropdown to the side if there is no space in the default position
396
+ * @see https://floating-ui.com/docs/shift
397
+ */
398
+ shift: {
399
+ type: [Boolean, Object],
400
+ default: false
401
+ },
402
+ /**
403
+ * Flip dropdown position if there is no space in the default position
404
+ * @see https://floating-ui.com/docs/flip
405
+ */
406
+ flip: {
407
+ type: [Boolean, Object],
408
+ default: true
409
+ },
410
+ /**
411
+ * Size of the dropdown
412
+ * @see https://floating-ui.com/docs/size
413
+ */
414
+ size: {
415
+ type: [Boolean, Object],
416
+ default: () => ({ padding: 10 })
417
+ },
418
+ /**
419
+ * Automatically change the position of the dropdown
420
+ * @see https://floating-ui.com/docs/autoPlacement
421
+ */
422
+ autoPlacement: {
423
+ type: [Boolean, Object],
424
+ default: false
425
+ },
426
+ /**
427
+ * Add arrow to the dropdown
428
+ * @see https://floating-ui.com/docs/arrow
429
+ */
430
+ arrow: {
431
+ type: Boolean,
432
+ default: false
433
+ },
434
+ /**
435
+ * Close dropdown on click outside
436
+ */
437
+ autoClose: {
438
+ type: Boolean,
439
+ default: true
440
+ },
441
+ /**
442
+ * Autofocus first item on dropdown open
443
+ */
444
+ autofocusFirst: {
445
+ type: Boolean,
446
+ default: true
447
+ },
448
+ /**
449
+ * Set dropdown width to the same as the trigger
450
+ */
451
+ triggerWidth: {
452
+ type: Boolean
453
+ }
454
+ });
455
+ const IdNameProps = {
456
+ ...IdProps,
267
457
  /**
268
458
  * Input / Textarea name
269
459
  * Name of the form control. Submitted with the form as part of a name/value pair
270
460
  * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#name
271
461
  */
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,
462
+ name: { type: String, required: true }
463
+ };
464
+ const CheckboxRadioProps = {
465
+ ...IdNameProps,
466
+ ...TabindexProps,
467
+ ...ValidProps,
468
+ ...InvalidProps,
469
+ ...HintProps,
470
+ ...DisabledProps,
471
+ ...ReadonlyProps,
472
+ ...ModifiersProps,
473
+ ...LabelProps,
283
474
  /**
284
475
  * Input value
285
476
  * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#value
@@ -289,225 +480,318 @@ const Be = {
289
480
  * Input value
290
481
  */
291
482
  modelValue: [Object, Number, Boolean, String]
292
- }, Pe = {
293
- ...T,
294
- ...X,
295
- ...je,
296
- ...ee,
297
- ...$,
298
- ...Z,
299
- ...L,
300
- ...N,
483
+ };
484
+ const CheckboxRadioGroupProps = {
485
+ ...ValidProps,
486
+ ...InvalidProps,
487
+ ...OptionsProps,
488
+ ...HintProps,
489
+ ...DisabledProps,
490
+ ...ReadonlyProps,
491
+ ...ModifiersProps,
492
+ ...LabelProps,
301
493
  /**
302
494
  * Input value
303
495
  */
304
- modelValue: [String, Array],
496
+ modelValue: [String, Array, Boolean, Number, Symbol],
305
497
  /**
306
498
  * Input name
307
499
  */
308
- name: { type: String, required: !0 },
500
+ name: { type: String, required: true },
309
501
  /**
310
502
  * If true, the group will be displayed in a vertical column
311
503
  */
312
504
  vertical: Boolean
313
505
  };
314
506
  ({
315
- ...$,
316
- ...N,
317
- ...Ve,
318
- ..._e,
319
- ...Se,
507
+ ...DisabledProps,
508
+ ...LabelProps,
509
+ ...PressedProps,
510
+ ...ActiveProps,
511
+ ...LinkProps,
320
512
  /**
321
513
  * Button type
322
514
  */
323
- type: I.button
515
+ type: {
516
+ type: String,
517
+ default: ButtonType.button,
518
+ validator: (value) => Object.values(ButtonType).includes(value)
519
+ }
324
520
  });
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({
521
+ function useInjectedGroupState(groupKey) {
522
+ const group = inject(groupKey, void 0);
523
+ const isInGroup = computed(() => !isEmpty(group));
524
+ function getGroupOrLocalRef(propName, props, emit) {
525
+ if (group == null ? void 0 : group.value) {
526
+ const groupPropValue = unref(group.value)[propName];
527
+ return computed({
331
528
  get() {
332
- return n == null ? void 0 : n.value;
529
+ return groupPropValue == null ? void 0 : groupPropValue.value;
333
530
  },
334
- set(d) {
335
- n.value = d;
531
+ set(value) {
532
+ groupPropValue.value = value;
336
533
  }
337
534
  });
338
535
  }
339
- const i = ae(a, o);
340
- return c({
536
+ const propRef = toRef(props, propName);
537
+ return computed({
341
538
  get() {
342
- return i.value;
539
+ return propRef.value;
343
540
  },
344
- set(n) {
345
- l && l(`update:${o}`, n);
541
+ set(value) {
542
+ if (emit)
543
+ emit(`update:${propName}`, value);
346
544
  }
347
545
  });
348
546
  }
349
547
  return {
350
- group: t,
351
- isInGroup: r,
352
- getGroupOrLocalRef: s
548
+ group,
549
+ isInGroup,
550
+ getGroupOrLocalRef
353
551
  };
354
552
  }
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);
553
+ const VvRadioProps = CheckboxRadioProps;
554
+ const VvRadioEvents = ["click", "update:modelValue", "change", "blur"];
555
+ function useGroupProps(props, emit) {
556
+ const { id } = toRefs(props);
557
+ const { group, isInGroup, getGroupOrLocalRef } = useInjectedGroupState(INJECTION_KEY_RADIO_GROUP);
558
+ const modelValue = getGroupOrLocalRef("modelValue", props, emit);
559
+ const valid = getGroupOrLocalRef("valid", props);
560
+ const invalid = getGroupOrLocalRef("invalid", props);
561
+ const readonly = computed(
562
+ () => {
563
+ var _a;
564
+ return Boolean(props.readonly || ((_a = group == null ? void 0 : group.value) == null ? void 0 : _a.disabled.value));
565
+ }
566
+ );
567
+ const disabled = computed(
568
+ () => {
569
+ var _a;
570
+ return Boolean(props.disabled || ((_a = group == null ? void 0 : group.value) == null ? void 0 : _a.disabled.value));
571
+ }
572
+ );
358
573
  return {
359
574
  // local props
360
- id: r,
575
+ id,
361
576
  // global props
362
- group: s,
363
- isInGroup: o,
364
- modelValue: l,
365
- readonly: i,
366
- disabled: n,
367
- valid: d,
368
- invalid: f
577
+ group,
578
+ isInGroup,
579
+ modelValue,
580
+ valid,
581
+ invalid,
582
+ readonly,
583
+ disabled
369
584
  };
370
585
  }
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;
586
+ const useUniqueId = (id) => computed(() => String((id == null ? void 0 : id.value) || nanoid()));
587
+ function useModifiers(prefix, modifiers, others) {
588
+ return computed(() => {
589
+ const toReturn = {
590
+ [prefix]: true
591
+ };
592
+ const modifiersArray = typeof (modifiers == null ? void 0 : modifiers.value) === "string" ? modifiers.value.split(" ") : modifiers == null ? void 0 : modifiers.value;
593
+ if (modifiersArray) {
594
+ if (Array.isArray(modifiersArray)) {
595
+ modifiersArray.forEach((modifier) => {
596
+ if (modifier) {
597
+ toReturn[`${prefix}--${modifier}`] = true;
598
+ }
599
+ });
600
+ }
601
+ }
602
+ if (others) {
603
+ Object.keys(others.value).forEach((key) => {
604
+ toReturn[`${prefix}--${key}`] = unref(others.value[key]);
605
+ });
606
+ }
607
+ return toReturn;
382
608
  });
383
609
  }
384
- const Ne = ["for"], De = ["id", "name", "disabled", "value", "tabindex", "aria-invalid"], xe = {
610
+ const _hoisted_1$1 = ["for"];
611
+ const _hoisted_2$1 = ["id", "name", "disabled", "value", "tabindex", "aria-invalid"];
612
+ const __default__$1 = {
385
613
  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({
614
+ };
615
+ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
616
+ ...__default__$1,
617
+ props: VvRadioProps,
618
+ emits: VvRadioEvents,
619
+ setup(__props, { emit }) {
620
+ const props = __props;
621
+ const slots = useSlots();
622
+ const { id, disabled, readonly, modelValue, valid, invalid } = useGroupProps(props, emit);
623
+ const hasId = useUniqueId(id);
624
+ const tabindex = computed(() => isDisabled.value ? -1 : props.tabindex);
625
+ const input = ref();
626
+ const isDisabled = computed(() => disabled.value || readonly.value);
627
+ const isInvalid = computed(() => {
628
+ if (invalid.value === true) {
629
+ return true;
630
+ }
631
+ if (valid.value === true) {
632
+ return false;
633
+ }
634
+ return void 0;
635
+ });
636
+ const isChecked = computed(
637
+ () => Array.isArray(modelValue.value) ? contains(props.value, modelValue.value) : equals(props.value, modelValue.value)
638
+ );
639
+ const hasValue = computed(
640
+ () => ["string", "number", "boolean"].includes(typeof props.value) ? props.value : true
641
+ );
642
+ const localModelValue = computed({
401
643
  get() {
402
- return m.value ? y.value : null;
644
+ return isChecked.value ? hasValue.value : null;
403
645
  },
404
- set(h) {
405
- Array.isArray(i.value) ? i.value = [r.value] : i.value = r.value, t("change", h);
646
+ set(newValue) {
647
+ if (Array.isArray(modelValue.value)) {
648
+ modelValue.value = [props.value];
649
+ } else {
650
+ modelValue.value = props.value;
651
+ }
652
+ emit("change", newValue);
406
653
  }
407
- }), { modifiers: _ } = k(r), V = te(
654
+ });
655
+ const { modifiers } = toRefs(props);
656
+ const bemCssClasses = useModifiers(
408
657
  "vv-radio",
409
- _,
410
- c(() => ({
411
- valid: n.value,
412
- invalid: d.value,
413
- disabled: a.value,
414
- readonly: l.value
658
+ modifiers,
659
+ computed(() => ({
660
+ valid: valid.value,
661
+ invalid: invalid.value,
662
+ disabled: disabled.value,
663
+ readonly: readonly.value
415
664
  }))
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));
665
+ );
666
+ const { HintSlot } = HintSlotFactory(props, slots);
667
+ return (_ctx, _cache) => {
668
+ return openBlock(), createElementBlock("label", {
669
+ class: normalizeClass(unref(bemCssClasses)),
670
+ for: unref(hasId)
671
+ }, [
672
+ withDirectives(createElementVNode("input", {
673
+ id: unref(hasId),
674
+ ref_key: "input",
675
+ ref: input,
676
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(localModelValue) ? localModelValue.value = $event : null),
677
+ type: "radio",
678
+ class: "vv-radio__input",
679
+ name: _ctx.name,
680
+ disabled: unref(isDisabled),
681
+ value: unref(hasValue),
682
+ tabindex: unref(tabindex),
683
+ "aria-invalid": unref(isInvalid)
684
+ }, null, 8, _hoisted_2$1), [
685
+ [vModelRadio, unref(localModelValue)]
686
+ ]),
687
+ renderSlot(_ctx.$slots, "default", { value: unref(modelValue) }, () => [
688
+ createTextVNode(toDisplayString(_ctx.label), 1)
689
+ ]),
690
+ createVNode(unref(HintSlot), {
691
+ class: "vv-radio__hint",
692
+ params: { value: unref(modelValue) }
693
+ }, null, 8, ["params"])
694
+ ], 10, _hoisted_1$1);
695
+ };
444
696
  }
445
- }), He = Pe, Ke = ["update:modelValue", "change"];
446
- function qe(e) {
447
- if (Object.keys(e).some(
448
- (t) => t !== "key" && !K(e[t])
697
+ });
698
+ const VvRadioGroupProps = CheckboxRadioGroupProps;
699
+ const VvRadioGroupEvents = ["update:modelValue", "change"];
700
+ function useProvideGroupState(groupState) {
701
+ if (Object.keys(groupState).some(
702
+ (k) => k !== "key" && !isRef(groupState[k])
449
703
  ))
450
704
  throw Error("One or more groupState props aren't ref.");
451
- ce(
452
- e.key,
453
- c(() => e)
705
+ provide(
706
+ groupState.key,
707
+ computed(() => groupState)
454
708
  );
455
709
  }
456
- function we(e) {
457
- const { options: t, labelKey: r, valueKey: s, disabledKey: o } = k(e);
710
+ function useOptions(props) {
711
+ const { options, labelKey, valueKey, disabledKey } = toRefs(props);
712
+ const getOptionLabel = (option) => {
713
+ if (typeof option !== "object" && option !== null)
714
+ return option;
715
+ return typeof labelKey.value === "function" ? labelKey.value(option) : option[labelKey.value];
716
+ };
717
+ const getOptionValue = (option) => {
718
+ if (typeof option !== "object" && option !== null)
719
+ return option;
720
+ return typeof valueKey.value === "function" ? valueKey.value(option) : option[valueKey.value];
721
+ };
722
+ const getOptionDisabled = (option) => {
723
+ if (typeof option !== "object" && option !== null)
724
+ return false;
725
+ return typeof disabledKey.value === "function" ? disabledKey.value(option) : option[disabledKey.value];
726
+ };
458
727
  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]
728
+ options,
729
+ getOptionLabel,
730
+ getOptionValue,
731
+ getOptionDisabled
463
732
  };
464
733
  }
465
- const Me = ["textContent"], ze = { class: "vv-radio-group__wrapper" }, Ue = {
734
+ const _hoisted_1 = ["textContent"];
735
+ const _hoisted_2 = { class: "vv-radio-group__wrapper" };
736
+ const __default__ = {
466
737
  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
738
+ };
739
+ const _sfc_main = /* @__PURE__ */ defineComponent({
740
+ ...__default__,
741
+ props: VvRadioGroupProps,
742
+ emits: VvRadioGroupEvents,
743
+ setup(__props, { emit }) {
744
+ const props = __props;
745
+ const slots = useSlots();
746
+ const modelValue = useVModel(props, "modelValue", emit);
747
+ const { disabled, readonly, vertical, valid, invalid, modifiers } = toRefs(props);
748
+ useProvideGroupState({
749
+ key: INJECTION_KEY_RADIO_GROUP,
750
+ modelValue,
751
+ disabled,
752
+ readonly,
753
+ valid,
754
+ invalid
480
755
  });
481
- const { getOptionLabel: u, getOptionValue: S } = we(r), p = te(
756
+ const { getOptionLabel, getOptionValue } = useOptions(props);
757
+ const bemCssClasses = useModifiers(
482
758
  "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
759
+ modifiers,
760
+ computed(() => ({
761
+ disabled: disabled.value,
762
+ readonly: readonly.value,
763
+ horizontal: !vertical.value,
764
+ valid: valid.value,
765
+ invalid: invalid.value
490
766
  }))
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));
767
+ );
768
+ const getOptionProps = (option, index) => {
769
+ return {
770
+ id: `${props.name}_opt${index}`,
771
+ name: props.name,
772
+ label: getOptionLabel(option),
773
+ value: getOptionValue(option)
774
+ };
775
+ };
776
+ const { HintSlot } = HintSlotFactory(props, slots);
777
+ return (_ctx, _cache) => {
778
+ return openBlock(), createElementBlock("fieldset", {
779
+ class: normalizeClass(unref(bemCssClasses))
780
+ }, [
781
+ _ctx.label ? (openBlock(), createElementBlock("legend", {
782
+ key: 0,
783
+ textContent: toDisplayString(_ctx.label)
784
+ }, null, 8, _hoisted_1)) : createCommentVNode("", true),
785
+ createElementVNode("div", _hoisted_2, [
786
+ _ctx.options.length > 0 ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(_ctx.options, (option, index) => {
787
+ return openBlock(), createBlock(_sfc_main$1, mergeProps({ key: index }, getOptionProps(option, index)), null, 16);
788
+ }), 128)) : renderSlot(_ctx.$slots, "default", { key: 1 })
789
+ ]),
790
+ createVNode(unref(HintSlot), { class: "vv-radio-group__hint" })
791
+ ], 2);
792
+ };
509
793
  }
510
794
  });
511
795
  export {
512
- Qe as default
796
+ _sfc_main as default
513
797
  };