@volverjs/ui-vue 0.0.10-beta.2 → 0.0.10-beta.21

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 (258) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +98 -3
  3. package/auto-imports.d.ts +6 -2
  4. package/bin/icons.cjs +1 -1
  5. package/bin/icons.js +23 -16
  6. package/dist/Volver.d.ts +1 -1
  7. package/dist/components/VvAccordion/VvAccordion.es.js +70 -14
  8. package/dist/components/VvAccordion/VvAccordion.umd.js +1 -1
  9. package/dist/components/VvAccordion/VvAccordion.vue.d.ts +13 -6
  10. package/dist/components/VvAccordion/index.d.ts +4 -1
  11. package/dist/components/VvAccordionGroup/VvAccordionGroup.es.js +117 -38
  12. package/dist/components/VvAccordionGroup/VvAccordionGroup.umd.js +1 -1
  13. package/dist/components/VvAccordionGroup/VvAccordionGroup.vue.d.ts +15 -8
  14. package/dist/components/VvAccordionGroup/index.d.ts +4 -1
  15. package/dist/components/VvAction/VvAction.es.js +58 -13
  16. package/dist/components/VvAction/VvAction.umd.js +1 -1
  17. package/dist/components/VvAction/VvAction.vue.d.ts +59 -12
  18. package/dist/components/VvAction/index.d.ts +25 -4
  19. package/dist/components/VvAlert/VvAlert.es.js +195 -152
  20. package/dist/components/VvAlert/VvAlert.umd.js +1 -1
  21. package/dist/components/VvAlert/VvAlert.vue.d.ts +18 -8
  22. package/dist/components/VvAlert/index.d.ts +9 -5
  23. package/dist/components/VvAlertGroup/VvAlertGroup.es.js +240 -174
  24. package/dist/components/VvAlertGroup/VvAlertGroup.umd.js +1 -1
  25. package/dist/components/VvAlertGroup/VvAlertGroup.vue.d.ts +13 -6
  26. package/dist/components/VvAlertGroup/index.d.ts +6 -2
  27. package/dist/components/VvAvatar/VvAvatar.es.js +54 -9
  28. package/dist/components/VvAvatar/VvAvatar.umd.js +1 -1
  29. package/dist/components/VvAvatar/VvAvatar.vue.d.ts +12 -4
  30. package/dist/components/VvAvatar/index.d.ts +4 -1
  31. package/dist/components/VvAvatarGroup/VvAvatarGroup.es.js +111 -36
  32. package/dist/components/VvAvatarGroup/VvAvatarGroup.umd.js +1 -1
  33. package/dist/components/VvAvatarGroup/VvAvatarGroup.vue.d.ts +10 -3
  34. package/dist/components/VvAvatarGroup/index.d.ts +4 -1
  35. package/dist/components/VvBadge/VvBadge.es.js +73 -17
  36. package/dist/components/VvBadge/VvBadge.umd.js +1 -1
  37. package/dist/components/VvBadge/VvBadge.vue.d.ts +12 -4
  38. package/dist/components/VvBadge/index.d.ts +4 -1
  39. package/dist/components/VvBreadcrumb/VvBreadcrumb.es.js +259 -49
  40. package/dist/components/VvBreadcrumb/VvBreadcrumb.umd.js +1 -1
  41. package/dist/components/VvBreadcrumb/VvBreadcrumb.vue.d.ts +27 -7
  42. package/dist/components/VvBreadcrumb/index.d.ts +6 -10
  43. package/dist/components/VvButton/VvButton.es.js +187 -141
  44. package/dist/components/VvButton/VvButton.umd.js +1 -1
  45. package/dist/components/VvButton/VvButton.vue.d.ts +101 -27
  46. package/dist/components/VvButton/index.d.ts +41 -14
  47. package/dist/components/VvButtonGroup/VvButtonGroup.es.js +69 -16
  48. package/dist/components/VvButtonGroup/VvButtonGroup.umd.js +1 -1
  49. package/dist/components/VvButtonGroup/VvButtonGroup.vue.d.ts +23 -10
  50. package/dist/components/VvButtonGroup/index.d.ts +8 -2
  51. package/dist/components/VvCard/VvCard.es.js +84 -25
  52. package/dist/components/VvCard/VvCard.umd.js +1 -1
  53. package/dist/components/VvCard/VvCard.vue.d.ts +12 -4
  54. package/dist/components/VvCard/index.d.ts +4 -1
  55. package/dist/components/VvCheckbox/VvCheckbox.es.js +91 -22
  56. package/dist/components/VvCheckbox/VvCheckbox.umd.js +1 -1
  57. package/dist/components/VvCheckbox/VvCheckbox.vue.d.ts +104 -32
  58. package/dist/components/VvCheckbox/index.d.ts +45 -12
  59. package/dist/components/VvCheckboxGroup/VvCheckboxGroup.es.js +180 -67
  60. package/dist/components/VvCheckboxGroup/VvCheckboxGroup.umd.js +1 -1
  61. package/dist/components/VvCheckboxGroup/VvCheckboxGroup.vue.d.ts +100 -29
  62. package/dist/components/VvCheckboxGroup/index.d.ts +45 -12
  63. package/dist/components/VvCombobox/VvCombobox.es.js +758 -531
  64. package/dist/components/VvCombobox/VvCombobox.umd.js +1 -1
  65. package/dist/components/VvCombobox/VvCombobox.vue.d.ts +181 -108
  66. package/dist/components/VvCombobox/index.d.ts +53 -22
  67. package/dist/components/VvDialog/VvDialog.es.js +136 -141
  68. package/dist/components/VvDialog/VvDialog.umd.js +1 -1
  69. package/dist/components/VvDialog/VvDialog.vue.d.ts +4 -4
  70. package/dist/components/VvDropdown/VvDropdown.es.js +121 -55
  71. package/dist/components/VvDropdown/VvDropdown.umd.js +1 -1
  72. package/dist/components/VvDropdown/VvDropdown.vue.d.ts +101 -75
  73. package/dist/components/VvDropdown/VvDropdownAction.vue.d.ts +72 -11
  74. package/dist/components/VvDropdown/VvDropdownItem.vue.d.ts +1 -1
  75. package/dist/components/VvDropdown/VvDropdownOptgroup.vue.d.ts +12 -4
  76. package/dist/components/VvDropdown/VvDropdownOption.vue.d.ts +26 -7
  77. package/dist/components/VvDropdown/index.d.ts +16 -11
  78. package/dist/components/VvDropdownAction/VvDropdownAction.es.js +82 -22
  79. package/dist/components/VvDropdownAction/VvDropdownAction.umd.js +1 -1
  80. package/dist/components/VvDropdownItem/VvDropdownItem.es.js +13 -7
  81. package/dist/components/VvDropdownOptgroup/VvDropdownOptgroup.es.js +56 -8
  82. package/dist/components/VvDropdownOptgroup/VvDropdownOptgroup.umd.js +1 -1
  83. package/dist/components/VvDropdownOption/VvDropdownOption.es.js +76 -17
  84. package/dist/components/VvDropdownOption/VvDropdownOption.umd.js +1 -1
  85. package/dist/components/VvIcon/VvIcon.es.js +23 -96
  86. package/dist/components/VvIcon/VvIcon.umd.js +1 -1
  87. package/dist/components/VvIcon/VvIcon.vue.d.ts +23 -66
  88. package/dist/components/VvIcon/index.d.ts +33 -48
  89. package/dist/components/VvInputFile/VvInputFile.es.js +1734 -0
  90. package/dist/components/VvInputFile/VvInputFile.umd.js +1 -0
  91. package/dist/components/VvInputFile/VvInputFile.vue.d.ts +313 -0
  92. package/dist/components/VvInputFile/index.d.ts +179 -0
  93. package/dist/components/VvInputText/VvInputClearAction.d.ts +7 -5
  94. package/dist/components/VvInputText/VvInputPasswordAction.d.ts +10 -8
  95. package/dist/components/VvInputText/VvInputStepAction.d.ts +1 -1
  96. package/dist/components/VvInputText/VvInputText.es.js +331 -293
  97. package/dist/components/VvInputText/VvInputText.umd.js +1 -1
  98. package/dist/components/VvInputText/VvInputText.vue.d.ts +162 -55
  99. package/dist/components/VvInputText/index.d.ts +71 -29
  100. package/dist/components/VvNav/VvNav.es.js +151 -73
  101. package/dist/components/VvNav/VvNav.umd.js +1 -1
  102. package/dist/components/VvNav/VvNav.vue.d.ts +41 -14
  103. package/dist/components/VvNav/VvNavItem.vue.d.ts +9 -0
  104. package/dist/components/VvNav/VvNavSeparator.vue.d.ts +2 -0
  105. package/dist/components/VvNav/index.d.ts +5 -13
  106. package/dist/components/VvNavItem/VvNavItem.es.js +436 -0
  107. package/dist/components/VvNavItem/VvNavItem.umd.js +1 -0
  108. package/dist/components/VvNavSeparator/VvNavSeparator.es.js +24 -0
  109. package/dist/components/VvNavSeparator/VvNavSeparator.umd.js +1 -0
  110. package/dist/components/VvProgress/VvProgress.es.js +65 -14
  111. package/dist/components/VvProgress/VvProgress.umd.js +1 -1
  112. package/dist/components/VvProgress/VvProgress.vue.d.ts +10 -3
  113. package/dist/components/VvProgress/index.d.ts +4 -1
  114. package/dist/components/VvRadio/VvRadio.es.js +89 -21
  115. package/dist/components/VvRadio/VvRadio.umd.js +1 -1
  116. package/dist/components/VvRadio/VvRadio.vue.d.ts +102 -30
  117. package/dist/components/VvRadio/index.d.ts +44 -11
  118. package/dist/components/VvRadioGroup/VvRadioGroup.es.js +180 -66
  119. package/dist/components/VvRadioGroup/VvRadioGroup.umd.js +1 -1
  120. package/dist/components/VvRadioGroup/VvRadioGroup.vue.d.ts +100 -29
  121. package/dist/components/VvRadioGroup/index.d.ts +45 -12
  122. package/dist/components/VvSelect/VvSelect.es.js +248 -226
  123. package/dist/components/VvSelect/VvSelect.umd.js +1 -1
  124. package/dist/components/VvSelect/VvSelect.vue.d.ts +112 -39
  125. package/dist/components/VvSelect/index.d.ts +48 -14
  126. package/dist/components/VvTab/VvTab.es.js +256 -110
  127. package/dist/components/VvTab/VvTab.umd.js +1 -1
  128. package/dist/components/VvTab/VvTab.vue.d.ts +50 -13
  129. package/dist/components/VvTab/index.d.ts +13 -4
  130. package/dist/components/VvTextarea/VvTextarea.es.js +229 -212
  131. package/dist/components/VvTextarea/VvTextarea.umd.js +1 -1
  132. package/dist/components/VvTextarea/VvTextarea.vue.d.ts +155 -48
  133. package/dist/components/VvTextarea/index.d.ts +68 -19
  134. package/dist/components/VvTooltip/VvTooltip.es.js +72 -17
  135. package/dist/components/VvTooltip/VvTooltip.umd.js +1 -1
  136. package/dist/components/VvTooltip/VvTooltip.vue.d.ts +10 -3
  137. package/dist/components/VvTooltip/index.d.ts +4 -1
  138. package/dist/components/common/HintSlot.d.ts +1 -1
  139. package/dist/components/index.d.ts +10 -0
  140. package/dist/components/index.es.js +2902 -1329
  141. package/dist/components/index.umd.js +1 -1
  142. package/dist/composables/alert/useAlert.d.ts +37 -4
  143. package/dist/composables/dropdown/useProvideDropdown.d.ts +1 -1
  144. package/dist/composables/index.d.ts +1 -0
  145. package/dist/composables/index.es.js +88 -1
  146. package/dist/composables/index.umd.js +1 -1
  147. package/dist/composables/useBlurhash.d.ts +7 -0
  148. package/dist/composables/useComponentIcon.d.ts +9 -8
  149. package/dist/composables/useVolver.d.ts +1 -1
  150. package/dist/directives/index.d.ts +3 -5
  151. package/dist/directives/index.es.js +92 -31
  152. package/dist/directives/index.umd.js +1 -1
  153. package/dist/directives/v-tooltip.es.js +90 -26
  154. package/dist/directives/v-tooltip.umd.js +1 -1
  155. package/dist/icons.es.js +210 -210
  156. package/dist/icons.umd.js +1 -1
  157. package/dist/index.d.ts +3 -1
  158. package/dist/index.es.js +81 -16
  159. package/dist/index.umd.js +1 -1
  160. package/dist/props/index.d.ts +287 -73
  161. package/dist/resolvers/unplugin.d.ts +6 -1
  162. package/dist/resolvers/unplugin.es.js +78 -10
  163. package/dist/resolvers/unplugin.umd.js +1 -1
  164. package/dist/stories/AccordionGroup/AccordionGroup.stories.d.ts +72 -84
  165. package/dist/stories/AccordionGroup/AccordionGroupSlots.stories.d.ts +623 -461
  166. package/dist/stories/AlertGroup/AlertGroupWithComposable.stories.d.ts +1 -1
  167. package/dist/stories/Blurhash/BlurhashComposable.stories.d.ts +4 -0
  168. package/dist/stories/Combobox/Combobox.settings.d.ts +8 -0
  169. package/dist/stories/Icon/Icon.settings.d.ts +1 -0
  170. package/dist/stories/InputFile/InputFile.settings.d.ts +56 -0
  171. package/dist/stories/InputFile/InputFile.stories.d.ts +12 -0
  172. package/dist/stories/InputFile/InputFileDropArea.stories.d.ts +9 -0
  173. package/dist/stories/InputFile/InputFileIconPosition.stories.d.ts +8 -0
  174. package/dist/stories/InputFile/InputFileSlots.stories.d.ts +7 -0
  175. package/dist/stories/Tab/Tab.settings.d.ts +4 -37
  176. package/dist/types/alert.d.ts +13 -0
  177. package/dist/types/blurhash.d.ts +12 -0
  178. package/dist/types/floating-ui.d.ts +6 -0
  179. package/dist/types/generic.d.ts +4 -0
  180. package/dist/types/group.d.ts +37 -0
  181. package/dist/types/index.d.ts +7 -0
  182. package/dist/types/input-file.d.ts +16 -0
  183. package/dist/types/nav.d.ts +18 -0
  184. package/dist/utils/ObjectUtilities.d.ts +0 -1
  185. package/dist/workers/blurhash.d.ts +1 -0
  186. package/package.json +97 -80
  187. package/src/Volver.ts +31 -20
  188. package/src/assets/icons/detailed.json +1 -1
  189. package/src/assets/icons/normal.json +1 -1
  190. package/src/assets/icons/simple.json +1 -1
  191. package/src/components/VvAccordion/VvAccordion.vue +2 -2
  192. package/src/components/VvAction/VvAction.vue +5 -2
  193. package/src/components/VvAlert/index.ts +1 -3
  194. package/src/components/VvAlertGroup/index.ts +2 -1
  195. package/src/components/VvBreadcrumb/VvBreadcrumb.vue +20 -19
  196. package/src/components/VvBreadcrumb/index.ts +2 -8
  197. package/src/components/VvButton/VvButton.vue +6 -6
  198. package/src/components/VvButton/index.ts +2 -4
  199. package/src/components/VvCombobox/VvCombobox.vue +24 -16
  200. package/src/components/VvCombobox/index.ts +4 -0
  201. package/src/components/VvIcon/VvIcon.vue +2 -2
  202. package/src/components/VvIcon/index.ts +35 -48
  203. package/src/components/VvInputFile/VvInputFile.vue +365 -0
  204. package/src/components/VvInputFile/index.ts +116 -0
  205. package/src/components/VvInputText/VvInputClearAction.ts +10 -6
  206. package/src/components/VvInputText/VvInputPasswordAction.ts +13 -9
  207. package/src/components/VvInputText/VvInputText.vue +17 -18
  208. package/src/components/VvInputText/index.ts +7 -15
  209. package/src/components/VvNav/VvNav.vue +30 -50
  210. package/src/components/VvNav/VvNavItem.vue +18 -0
  211. package/src/components/VvNav/VvNavSeparator.vue +11 -0
  212. package/src/components/VvNav/index.ts +2 -15
  213. package/src/components/VvSelect/VvSelect.vue +5 -8
  214. package/src/components/VvTab/VvTab.vue +63 -35
  215. package/src/components/VvTab/index.ts +10 -4
  216. package/src/components/VvTextarea/VvTextarea.vue +6 -9
  217. package/src/components/index.ts +10 -0
  218. package/src/composables/index.ts +1 -0
  219. package/src/composables/useBlurhash.ts +76 -0
  220. package/src/composables/useComponentIcon.ts +15 -14
  221. package/src/composables/useUniqueId.ts +2 -2
  222. package/src/directives/index.ts +3 -6
  223. package/src/directives/v-tooltip.ts +19 -10
  224. package/src/index.ts +3 -1
  225. package/src/props/index.ts +115 -27
  226. package/src/resolvers/unplugin.ts +24 -14
  227. package/src/stories/AlertGroup/AlertGroupWithComposable.stories.ts +2 -2
  228. package/src/stories/Blurhash/BlurhashComposable.stories.ts +195 -0
  229. package/src/stories/Combobox/Combobox.settings.ts +8 -0
  230. package/src/stories/Icon/Icon.settings.ts +3 -3
  231. package/src/stories/InputFile/InputFile.settings.ts +36 -0
  232. package/src/stories/InputFile/InputFile.stories.ts +89 -0
  233. package/src/stories/InputFile/InputFileDropArea.stories.ts +56 -0
  234. package/src/stories/InputFile/InputFileIconPosition.stories.ts +43 -0
  235. package/src/stories/InputFile/InputFileSlots.stories.ts +33 -0
  236. package/src/stories/Nav/Nav.settings.ts +3 -4
  237. package/src/stories/Nav/Nav.test.ts +4 -15
  238. package/src/stories/Tab/Tab.settings.ts +9 -9
  239. package/src/stories/Tab/Tab.stories.ts +2 -2
  240. package/src/stories/Tab/Tab.test.ts +6 -14
  241. package/src/stories/argTypes.ts +1 -1
  242. package/src/types/blurhash.ts +21 -0
  243. package/src/types/generic.ts +6 -0
  244. package/src/types/index.ts +7 -0
  245. package/src/types/input-file.ts +18 -0
  246. package/src/types/nav.ts +20 -0
  247. package/src/utils/ObjectUtilities.ts +0 -11
  248. package/src/workers/blurhash.ts +9 -0
  249. package/dist/components/VvNav/VvNavItemTitle.vue.d.ts +0 -6
  250. package/dist/components/VvNav/VvNavSeparator.d.ts +0 -2
  251. package/dist/components/VvNavItemTitle/VvNavItemTitle.es.js +0 -19
  252. package/dist/components/VvNavItemTitle/VvNavItemTitle.umd.js +0 -1
  253. package/src/components/VvNav/VvNavItemTitle.vue +0 -11
  254. package/src/components/VvNav/VvNavSeparator.ts +0 -8
  255. package/src/types/generic.d.ts +0 -6
  256. /package/src/types/{alert.d.ts → alert.ts} +0 -0
  257. /package/src/types/{floating-ui.d.ts → floating-ui.ts} +0 -0
  258. /package/src/types/{group.d.ts → group.ts} +0 -0
@@ -1,4 +1,4 @@
1
- import { inject, defineComponent, ref, watch, computed, openBlock, createBlock, resolveDynamicComponent, unref, mergeProps, withCtx, renderSlot, createTextVNode, toDisplayString, toRefs, createElementBlock, normalizeClass, createElementVNode, Fragment, renderList, createVNode, toHandlers } from "vue";
1
+ import { inject, defineComponent, ref, watch, computed, openBlock, createBlock, resolveDynamicComponent, unref, mergeProps, withCtx, createCommentVNode, renderSlot, createTextVNode, toDisplayString, createElementBlock, createVNode, toRefs, normalizeClass, createElementVNode, withModifiers, Fragment, renderList, toHandlers, normalizeProps, guardReactiveProps } from "vue";
2
2
  var Strategy = /* @__PURE__ */ ((Strategy2) => {
3
3
  Strategy2["absolute"] = "absolute";
4
4
  Strategy2["fixed"] = "fixed";
@@ -71,6 +71,7 @@ const LinkProps = {
71
71
  */
72
72
  target: {
73
73
  type: String,
74
+ default: void 0,
74
75
  validator: (value) => Object.values(AnchorTarget).includes(value)
75
76
  },
76
77
  /**
@@ -85,38 +86,65 @@ const DisabledProps = {
85
86
  /**
86
87
  * Whether the form control is disabled
87
88
  */
88
- disabled: Boolean
89
+ disabled: {
90
+ type: Boolean,
91
+ default: false
92
+ }
89
93
  };
90
94
  const ActiveProps = {
91
95
  /**
92
96
  * Whether the item is active
93
97
  */
94
- active: Boolean
98
+ active: {
99
+ type: Boolean,
100
+ default: false
101
+ }
102
+ };
103
+ const CurrentProps = {
104
+ /**
105
+ * Whether the item is current
106
+ */
107
+ current: {
108
+ type: Boolean,
109
+ default: false
110
+ }
95
111
  };
96
112
  const PressedProps = {
97
113
  /**
98
114
  * Whether the item is pressed
99
115
  */
100
- pressed: Boolean
116
+ pressed: {
117
+ type: Boolean,
118
+ default: false
119
+ }
101
120
  };
102
121
  const LabelProps = {
103
122
  /**
104
123
  * The item label
105
124
  */
106
- label: [String, Number]
125
+ label: {
126
+ type: [String, Number],
127
+ default: void 0
128
+ }
107
129
  };
108
130
  const ModifiersProps = {
109
131
  /**
110
132
  * Component BEM modifiers
111
133
  */
112
- modifiers: [String, Array]
134
+ modifiers: {
135
+ type: [String, Array],
136
+ default: void 0
137
+ }
113
138
  };
114
139
  ({
115
140
  /**
116
141
  * VvIcon name or props
117
142
  * @see VVIcon
118
143
  */
119
- icon: { type: [String, Object] },
144
+ icon: {
145
+ type: [String, Object],
146
+ default: void 0
147
+ },
120
148
  /**
121
149
  * VvIcon position
122
150
  */
@@ -147,7 +175,8 @@ const ModifiersProps = {
147
175
  * Dropdown show / hide transition name
148
176
  */
149
177
  transitionName: {
150
- type: String
178
+ type: String,
179
+ default: void 0
151
180
  },
152
181
  /**
153
182
  * Offset of the dropdown from the trigger
@@ -215,7 +244,8 @@ const ModifiersProps = {
215
244
  * Set dropdown width to the same as the trigger
216
245
  */
217
246
  triggerWidth: {
218
- type: Boolean
247
+ type: Boolean,
248
+ default: false
219
249
  }
220
250
  });
221
251
  const ActionProps = {
@@ -223,6 +253,7 @@ const ActionProps = {
223
253
  ...LabelProps,
224
254
  ...PressedProps,
225
255
  ...ActiveProps,
256
+ ...CurrentProps,
226
257
  ...LinkProps,
227
258
  /**
228
259
  * Button type
@@ -238,25 +269,40 @@ const ActionProps = {
238
269
  ariaLabel: {
239
270
  type: String,
240
271
  default: void 0
272
+ },
273
+ /**
274
+ * Default tag for the action
275
+ */
276
+ defaultTag: {
277
+ type: String,
278
+ default: ActionTag.button
241
279
  }
242
280
  };
243
- const VvTabProps = {
244
- ...ModifiersProps,
281
+ const NavProps = {
245
282
  items: {
246
283
  type: Array,
247
- required: true,
248
284
  default: () => []
249
285
  }
250
286
  };
251
- const VvTabEvents = ["click"];
252
- const VvNavProps = {
287
+ const VvTabProps = {
253
288
  ...ModifiersProps,
289
+ navModifiers: {
290
+ type: [String, Array]
291
+ },
292
+ modelValue: {
293
+ type: String,
294
+ default: ""
295
+ },
254
296
  items: {
255
297
  type: Array,
256
- required: true,
257
298
  default: () => []
258
299
  }
259
300
  };
301
+ const VvTabEvents = ["update:modelValue"];
302
+ const VvNavProps = {
303
+ ...ModifiersProps,
304
+ ...NavProps
305
+ };
260
306
  const VvNavEvents = ["click"];
261
307
  const VvActionEvents = ["click", "mouseover", "mouseleave"];
262
308
  const VvActionProps = ActionProps;
@@ -269,15 +315,16 @@ function useInjectedDropdownTrigger() {
269
315
  function useInjectedDropdownAction() {
270
316
  return inject(INJECTION_KEY_DROPDOWN_ACTION, {});
271
317
  }
272
- const __default__ = {
318
+ const __default__$1 = {
273
319
  name: "VvAction"
274
320
  };
275
- const _sfc_main$2 = /* @__PURE__ */ defineComponent({
276
- ...__default__,
321
+ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
322
+ ...__default__$1,
277
323
  props: VvActionProps,
278
324
  emits: VvActionEvents,
279
- setup(__props, { expose: __expose, emit }) {
325
+ setup(__props, { expose: __expose, emit: __emit }) {
280
326
  const props = __props;
327
+ const emit = __emit;
281
328
  const volver = useVolver();
282
329
  const element = ref(null);
283
330
  __expose({ $el: element });
@@ -308,7 +355,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
308
355
  case props.href !== void 0:
309
356
  return ActionTag.a;
310
357
  default:
311
- return ActionTag.button;
358
+ return props.defaultTag;
312
359
  }
313
360
  });
314
361
  const hasProps = computed(() => {
@@ -333,12 +380,14 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
333
380
  to: props.to,
334
381
  target: props.target
335
382
  };
336
- default:
383
+ case ActionTag.button:
337
384
  return {
338
385
  ...toReturn,
339
386
  type: props.type,
340
387
  disabled: props.disabled
341
388
  };
389
+ default:
390
+ return toReturn;
342
391
  }
343
392
  });
344
393
  const onClick = (e) => {
@@ -364,22 +413,59 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
364
413
  class: {
365
414
  active: _ctx.active,
366
415
  pressed: unref(pressed),
367
- disabled: _ctx.disabled
416
+ disabled: _ctx.disabled,
417
+ current: _ctx.current
368
418
  },
369
419
  onClickPassive: onClick,
370
420
  onMouseoverPassive: onMouseover,
371
421
  onMouseleavePassive: onMouseleave
372
422
  }), {
373
423
  default: withCtx(() => [
424
+ createCommentVNode(" @slot Default slot "),
374
425
  renderSlot(_ctx.$slots, "default", {}, () => [
375
- createTextVNode(toDisplayString(_ctx.label), 1)
426
+ createTextVNode(
427
+ toDisplayString(_ctx.label),
428
+ 1
429
+ /* TEXT */
430
+ )
376
431
  ])
377
432
  ]),
378
433
  _: 3
434
+ /* FORWARDED */
379
435
  }, 16, ["class"]);
380
436
  };
381
437
  }
382
438
  });
439
+ const _hoisted_1 = {
440
+ class: "vv-nav__item",
441
+ role: "presentation"
442
+ };
443
+ const __default__ = {
444
+ name: "VvNavItem",
445
+ inheritAttrs: false
446
+ };
447
+ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
448
+ ...__default__,
449
+ setup(__props) {
450
+ return (_ctx, _cache) => {
451
+ return openBlock(), createElementBlock("li", _hoisted_1, [
452
+ createVNode(
453
+ _sfc_main$3,
454
+ mergeProps(_ctx.$attrs, { class: "vv-nav__item-label" }),
455
+ {
456
+ default: withCtx(() => [
457
+ renderSlot(_ctx.$slots, "default")
458
+ ]),
459
+ _: 3
460
+ /* FORWARDED */
461
+ },
462
+ 16
463
+ /* FULL_PROPS */
464
+ )
465
+ ]);
466
+ };
467
+ }
468
+ });
383
469
  function useModifiers(prefix, modifiers, others) {
384
470
  return computed(() => {
385
471
  const toReturn = {
@@ -403,113 +489,173 @@ function useModifiers(prefix, modifiers, others) {
403
489
  return toReturn;
404
490
  });
405
491
  }
406
- const _hoisted_1$1 = {
407
- class: "vv-nav__menu",
408
- role: "menu",
409
- "aria-busy": "true"
410
- };
411
492
  const _sfc_main$1 = /* @__PURE__ */ defineComponent({
412
493
  __name: "VvNav",
413
494
  props: VvNavProps,
414
495
  emits: VvNavEvents,
415
- setup(__props, { emit }) {
496
+ setup(__props, { emit: __emit }) {
416
497
  const props = __props;
417
- const { modifiers, items } = toRefs(props);
418
- const activeItem = ref(null);
419
- const bemCssClasses = useModifiers("vv-nav", modifiers);
420
- const localItems = computed(() => {
421
- return items.value.map((item, index) => {
422
- return {
423
- ...item,
424
- id: item.id || `nav-item_${index}`
425
- };
426
- });
427
- });
428
- function onClick(item) {
429
- if (!item.disabled) {
498
+ const { modifiers } = toRefs(props);
499
+ const emit = __emit;
500
+ const onClick = (event) => {
501
+ var _a;
502
+ const target = event.target;
503
+ if (target == null ? void 0 : target.dataset.index) {
504
+ const index = parseInt(target.dataset.index);
505
+ const item = (_a = props.items) == null ? void 0 : _a[index];
506
+ if (!item || (item == null ? void 0 : item.disabled)) {
507
+ return;
508
+ }
430
509
  emit("click", item);
431
- activeItem.value = item.id;
432
510
  }
433
- }
511
+ };
512
+ const bemCssClasses = useModifiers("vv-nav", modifiers);
434
513
  return (_ctx, _cache) => {
435
- return openBlock(), createElementBlock("nav", {
436
- class: normalizeClass(unref(bemCssClasses))
437
- }, [
438
- createElementVNode("ul", _hoisted_1$1, [
439
- (openBlock(true), createElementBlock(Fragment, null, renderList(unref(localItems), (navItem) => {
440
- return openBlock(), createElementBlock("li", {
441
- key: navItem.id,
442
- class: "vv-nav__item",
443
- role: "presentation"
444
- }, [
445
- createVNode(_sfc_main$2, mergeProps({
446
- disabled: navItem.disabled,
447
- to: navItem.to,
448
- href: navItem.href,
449
- tabindex: 0
450
- }, {
451
- class: [{
452
- current: unref(activeItem) == navItem.id,
453
- disabled: navItem.disabled
454
- }, "vv-nav__item-label"]
455
- }, toHandlers(navItem.on), {
456
- onClick: ($event) => onClick(navItem)
457
- }), {
458
- default: withCtx(() => [
459
- createTextVNode(toDisplayString(navItem.title), 1)
460
- ]),
461
- _: 2
462
- }, 1040, ["class", "onClick"])
463
- ]);
464
- }), 128))
465
- ])
466
- ], 2);
514
+ return openBlock(), createElementBlock(
515
+ "nav",
516
+ {
517
+ class: normalizeClass(unref(bemCssClasses))
518
+ },
519
+ [
520
+ createElementVNode("ul", {
521
+ class: "vv-nav__menu",
522
+ role: "menu",
523
+ "aria-busy": "true",
524
+ onClick: withModifiers(onClick, ["stop"])
525
+ }, [
526
+ renderSlot(_ctx.$slots, "default", {}, () => [
527
+ (openBlock(true), createElementBlock(
528
+ Fragment,
529
+ null,
530
+ renderList(_ctx.items, ({ on = {}, data, ...item }, index) => {
531
+ return openBlock(), createBlock(_sfc_main$2, mergeProps({
532
+ key: index,
533
+ "data-index": index
534
+ }, item, toHandlers(on)), {
535
+ default: withCtx(() => [
536
+ renderSlot(_ctx.$slots, "item", normalizeProps(guardReactiveProps({ item, data, index })))
537
+ ]),
538
+ _: 2
539
+ /* DYNAMIC */
540
+ }, 1040, ["data-index"]);
541
+ }),
542
+ 128
543
+ /* KEYED_FRAGMENT */
544
+ ))
545
+ ])
546
+ ])
547
+ ],
548
+ 2
549
+ /* CLASS */
550
+ );
467
551
  };
468
552
  }
469
553
  });
470
- const _hoisted_1 = ["id"];
471
554
  const _sfc_main = /* @__PURE__ */ defineComponent({
472
555
  __name: "VvTab",
473
556
  props: VvTabProps,
474
557
  emits: VvTabEvents,
475
- setup(__props, { emit }) {
558
+ setup(__props, { emit: __emit }) {
476
559
  const props = __props;
560
+ const emit = __emit;
477
561
  const { modifiers, items } = toRefs(props);
478
- const activeTab = ref(null);
479
- const bemCssClasses = useModifiers("vv-tab", modifiers);
480
- const localItems = computed(() => {
481
- return items.value.map((item, index) => {
482
- return {
483
- ...item,
484
- id: item.id || `tab-item_${index}`
485
- };
486
- });
562
+ const tabKeys = computed(() => {
563
+ return items.value.reduce((acc, item) => {
564
+ if (item.tab) {
565
+ acc.push(item.tab);
566
+ }
567
+ return acc;
568
+ }, []);
487
569
  });
488
- function onClick(item) {
489
- if (!item.disabled) {
490
- emit("click", item);
491
- activeTab.value = item.id;
570
+ const localModelValue = ref();
571
+ const activeTabKey = computed({
572
+ get: () => {
573
+ var _a;
574
+ return props.modelValue || localModelValue.value || ((_a = tabKeys.value) == null ? void 0 : _a[0]);
575
+ },
576
+ set: (newValue) => {
577
+ localModelValue.value = newValue;
578
+ emit("update:modelValue", newValue);
492
579
  }
493
- }
580
+ });
581
+ const hasNavModifiers = computed(() => {
582
+ var _a;
583
+ return [
584
+ "tabs",
585
+ ...Array.isArray(props.navModifiers) ? props.navModifiers : ((_a = props.navModifiers) == null ? void 0 : _a.split(" ")) ?? []
586
+ ];
587
+ });
588
+ const onNavClick = (item) => {
589
+ if (item.tab) {
590
+ activeTabKey.value = item.tab;
591
+ }
592
+ };
593
+ const navItems = computed(
594
+ () => props.items.map((item) => ({
595
+ current: item.tab === activeTabKey.value,
596
+ ...item
597
+ }))
598
+ );
599
+ const bemCssClasses = useModifiers("vv-tab", modifiers);
494
600
  return (_ctx, _cache) => {
495
- return openBlock(), createElementBlock("div", {
496
- class: normalizeClass(unref(bemCssClasses))
497
- }, [
498
- createVNode(_sfc_main$1, {
499
- items: unref(localItems),
500
- modifiers: "tabs full",
501
- onClick
502
- }, null, 8, ["items"]),
503
- (openBlock(true), createElementBlock(Fragment, null, renderList(unref(localItems), (item) => {
504
- return openBlock(), createElementBlock("article", {
505
- id: item.id,
506
- key: item.id,
507
- class: normalizeClass([{ target: unref(activeTab) === item.id }, "vv-tab__panel"])
508
- }, [
509
- renderSlot(_ctx.$slots, `${item.id}`)
510
- ], 10, _hoisted_1);
511
- }), 128))
512
- ], 2);
601
+ return openBlock(), createElementBlock(
602
+ "div",
603
+ {
604
+ class: normalizeClass(unref(bemCssClasses))
605
+ },
606
+ [
607
+ createCommentVNode(" #region nav "),
608
+ createVNode(
609
+ _sfc_main$1,
610
+ mergeProps({
611
+ items: unref(navItems),
612
+ modifiers: unref(hasNavModifiers)
613
+ }, { onClick: onNavClick }),
614
+ {
615
+ item: withCtx(({ item, data, index }) => [
616
+ renderSlot(_ctx.$slots, "nav-item", normalizeProps(guardReactiveProps({ item, data, index })))
617
+ ]),
618
+ _: 3
619
+ /* FORWARDED */
620
+ },
621
+ 16
622
+ /* FULL_PROPS */
623
+ ),
624
+ createCommentVNode(" #endregion "),
625
+ createCommentVNode(" #region panels "),
626
+ (openBlock(true), createElementBlock(
627
+ Fragment,
628
+ null,
629
+ renderList(unref(items), (item, index) => {
630
+ return openBlock(), createElementBlock(
631
+ Fragment,
632
+ { key: index },
633
+ [
634
+ item.tab ? (openBlock(), createElementBlock(
635
+ "article",
636
+ {
637
+ key: 0,
638
+ class: normalizeClass([{ target: unref(activeTabKey) === item.tab }, "vv-tab__panel"])
639
+ },
640
+ [
641
+ renderSlot(_ctx.$slots, `panel::${item.tab}`)
642
+ ],
643
+ 2
644
+ /* CLASS */
645
+ )) : createCommentVNode("v-if", true)
646
+ ],
647
+ 64
648
+ /* STABLE_FRAGMENT */
649
+ );
650
+ }),
651
+ 128
652
+ /* KEYED_FRAGMENT */
653
+ )),
654
+ createCommentVNode(" #endregion ")
655
+ ],
656
+ 2
657
+ /* CLASS */
658
+ );
513
659
  };
514
660
  }
515
661
  });
@@ -1 +1 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("vue")):"function"==typeof define&&define.amd?define(["vue"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).VvTab=t(e.vue)}(this,(function(e){"use strict";var t=(e=>(e.left="left",e.right="right",e.top="top",e.bottom="bottom",e))(t||{}),o=(e=>(e.before="before",e.after="after",e))(o||{}),l=(e=>(e.button="button",e.submit="submit",e.reset="reset",e))(l||{}),r=(e=>(e.nuxtLink="nuxt-link",e.routerLink="router-link",e.a="a",e.button="button",e))(r||{}),n=(e=>(e._blank="_blank",e._self="_self",e._parent="_parent",e._top="_top",e))(n||{});const a=Symbol.for("volver"),i=Symbol.for("dropdownTrigger"),s=Symbol.for("dropdownAction"),u={to:{type:[String,Object]},href:String,target:{type:String,validator:e=>Object.values(n).includes(e)},rel:{type:String,default:"noopener noreferrer"}},d={disabled:Boolean},c={active:Boolean},v={pressed:Boolean},f={label:[String,Number]},m={modifiers:[String,Array]};o.before,t.bottom,Boolean,Boolean,Boolean,Boolean,Boolean,Boolean,Boolean,Boolean;const p={...d,...f,...v,...c,...u,type:{type:String,default:l.button,validator:e=>Object.values(l).includes(e)},ariaLabel:{type:String,default:void 0}},b={...m,items:{type:Array,required:!0,default:()=>[]}},k={...m,items:{type:Array,required:!0,default:()=>[]}},y=p;const g=e.defineComponent({name:"VvAction",props:y,emits:["click","mouseover","mouseleave"],setup(t,{expose:o,emit:l}){const n=t,u=e.inject(a),d=e.ref(null);o({$el:d});const{reference:c,bus:v,aria:f,expanded:m}=e.inject(i,{});e.watch((()=>d.value),(e=>{c&&(c.value=e)}));const p=e.computed((()=>n.pressed||(null==m?void 0:m.value))),{role:b}=e.inject(s,{}),k=e.computed((()=>{switch(!0){case n.disabled:return r.button;case void 0!==n.to:return(null==u?void 0:u.nuxt)?r.nuxtLink:r.routerLink;case void 0!==n.href:return r.a;default:return r.button}})),y=e.computed((()=>{const e={...null==f?void 0:f.value,ariaPressed:!!p.value||void 0,ariaLabel:n.ariaLabel,role:null==b?void 0:b.value};switch(k.value){case r.a:return{...e,href:n.href,target:n.target,rel:n.rel};case r.routerLink:case r.nuxtLink:return{...e,to:n.to,target:n.target};default:return{...e,type:n.type,disabled:n.disabled}}})),g=e=>{n.disabled?e.preventDefault():(null==v||v.emit("click",e),l("click",e))},B=e=>{null==v||v.emit("mouseover",e),l("mouseover",e)},_=e=>{null==v||v.emit("mouseleave",e),l("mouseleave",e)};return(t,o)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(k)),e.mergeProps(e.unref(y),{ref_key:"element",ref:d,class:{active:t.active,pressed:e.unref(p),disabled:t.disabled},onClickPassive:g,onMouseoverPassive:B,onMouseleavePassive:_}),{default:e.withCtx((()=>[e.renderSlot(t.$slots,"default",{},(()=>[e.createTextVNode(e.toDisplayString(t.label),1)]))])),_:3},16,["class"]))}});function B(t,o,l){return e.computed((()=>{const r={[t]:!0},n="string"==typeof(null==o?void 0:o.value)?o.value.split(" "):null==o?void 0:o.value;return n&&Array.isArray(n)&&n.forEach((e=>{e&&(r[`${t}--${e}`]=!0)})),l&&Object.keys(l.value).forEach((o=>{r[`${t}--${o}`]=e.unref(l.value[o])})),r}))}const _={class:"vv-nav__menu",role:"menu","aria-busy":"true"},h=e.defineComponent({__name:"VvNav",props:k,emits:["click"],setup(t,{emit:o}){const l=t,{modifiers:r,items:n}=e.toRefs(l),a=e.ref(null),i=B("vv-nav",r),s=e.computed((()=>n.value.map(((e,t)=>({...e,id:e.id||`nav-item_${t}`})))));return(t,l)=>(e.openBlock(),e.createElementBlock("nav",{class:e.normalizeClass(e.unref(i))},[e.createElementVNode("ul",_,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(s),(t=>(e.openBlock(),e.createElementBlock("li",{key:t.id,class:"vv-nav__item",role:"presentation"},[e.createVNode(g,e.mergeProps({disabled:t.disabled,to:t.to,href:t.href,tabindex:0},{class:[{current:e.unref(a)==t.id,disabled:t.disabled},"vv-nav__item-label"]},e.toHandlers(t.on),{onClick:e=>{var l;(l=t).disabled||(o("click",l),a.value=l.id)}}),{default:e.withCtx((()=>[e.createTextVNode(e.toDisplayString(t.title),1)])),_:2},1040,["class","onClick"])])))),128))])],2))}}),S=["id"];return e.defineComponent({__name:"VvTab",props:b,emits:["click"],setup(t,{emit:o}){const l=t,{modifiers:r,items:n}=e.toRefs(l),a=e.ref(null),i=B("vv-tab",r),s=e.computed((()=>n.value.map(((e,t)=>({...e,id:e.id||`tab-item_${t}`})))));function u(e){e.disabled||(o("click",e),a.value=e.id)}return(t,o)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(i))},[e.createVNode(h,{items:e.unref(s),modifiers:"tabs full",onClick:u},null,8,["items"]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(s),(o=>(e.openBlock(),e.createElementBlock("article",{id:o.id,key:o.id,class:e.normalizeClass([{target:e.unref(a)===o.id},"vv-tab__panel"])},[e.renderSlot(t.$slots,`${o.id}`)],10,S)))),128))],2))}})}));
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("vue")):"function"==typeof define&&define.amd?define(["vue"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).VvTab=t(e.vue)}(this,(function(e){"use strict";var t=(e=>(e.left="left",e.right="right",e.top="top",e.bottom="bottom",e))(t||{}),o=(e=>(e.before="before",e.after="after",e))(o||{}),r=(e=>(e.button="button",e.submit="submit",e.reset="reset",e))(r||{}),a=(e=>(e.nuxtLink="nuxt-link",e.routerLink="router-link",e.a="a",e.button="button",e))(a||{}),n=(e=>(e._blank="_blank",e._self="_self",e._parent="_parent",e._top="_top",e))(n||{});const l=Symbol.for("volver"),i=Symbol.for("dropdownTrigger"),s=Symbol.for("dropdownAction"),u={to:{type:[String,Object]},href:String,target:{type:String,default:void 0,validator:e=>Object.values(n).includes(e)},rel:{type:String,default:"noopener noreferrer"}},d={disabled:{type:Boolean,default:!1}},c={active:{type:Boolean,default:!1}},m={current:{type:Boolean,default:!1}},v={pressed:{type:Boolean,default:!1}},p={label:{type:[String,Number],default:void 0}},f={modifiers:{type:[String,Array],default:void 0}};o.before,t.bottom,Boolean,Boolean,Boolean,Boolean,Boolean,Boolean,Boolean,Boolean;const b={...d,...p,...v,...c,...m,...u,type:{type:String,default:r.button,validator:e=>Object.values(r).includes(e)},ariaLabel:{type:String,default:void 0},defaultTag:{type:String,default:a.button}},y={items:{type:Array,default:()=>[]}},g={...f,navModifiers:{type:[String,Array]},modelValue:{type:String,default:""},items:{type:Array,default:()=>[]}},k={...f,...y},B=b;const _=e.defineComponent({name:"VvAction",props:B,emits:["click","mouseover","mouseleave"],setup(t,{expose:o,emit:r}){const n=t,u=r,d=e.inject(l),c=e.ref(null);o({$el:c});const{reference:m,bus:v,aria:p,expanded:f}=e.inject(i,{});e.watch((()=>c.value),(e=>{m&&(m.value=e)}));const b=e.computed((()=>n.pressed||(null==f?void 0:f.value))),{role:y}=e.inject(s,{}),g=e.computed((()=>{switch(!0){case n.disabled:return a.button;case void 0!==n.to:return(null==d?void 0:d.nuxt)?a.nuxtLink:a.routerLink;case void 0!==n.href:return a.a;default:return n.defaultTag}})),k=e.computed((()=>{const e={...null==p?void 0:p.value,ariaPressed:!!b.value||void 0,ariaLabel:n.ariaLabel,role:null==y?void 0:y.value};switch(g.value){case a.a:return{...e,href:n.href,target:n.target,rel:n.rel};case a.routerLink:case a.nuxtLink:return{...e,to:n.to,target:n.target};case a.button:return{...e,type:n.type,disabled:n.disabled};default:return e}})),B=e=>{n.disabled?e.preventDefault():(null==v||v.emit("click",e),u("click",e))},_=e=>{null==v||v.emit("mouseover",e),u("mouseover",e)},h=e=>{null==v||v.emit("mouseleave",e),u("mouseleave",e)};return(t,o)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(g)),e.mergeProps(e.unref(k),{ref_key:"element",ref:c,class:{active:t.active,pressed:e.unref(b),disabled:t.disabled,current:t.current},onClickPassive:B,onMouseoverPassive:_,onMouseleavePassive:h}),{default:e.withCtx((()=>[e.createCommentVNode(" @slot Default slot "),e.renderSlot(t.$slots,"default",{},(()=>[e.createTextVNode(e.toDisplayString(t.label),1)]))])),_:3},16,["class"]))}}),h={class:"vv-nav__item",role:"presentation"},x=e.defineComponent({name:"VvNavItem",inheritAttrs:!1,setup:t=>(t,o)=>(e.openBlock(),e.createElementBlock("li",h,[e.createVNode(_,e.mergeProps(t.$attrs,{class:"vv-nav__item-label"}),{default:e.withCtx((()=>[e.renderSlot(t.$slots,"default")])),_:3},16)]))});function C(t,o,r){return e.computed((()=>{const a={[t]:!0},n="string"==typeof(null==o?void 0:o.value)?o.value.split(" "):null==o?void 0:o.value;return n&&Array.isArray(n)&&n.forEach((e=>{e&&(a[`${t}--${e}`]=!0)})),r&&Object.keys(r.value).forEach((o=>{a[`${t}--${o}`]=e.unref(r.value[o])})),a}))}const S=e.defineComponent({__name:"VvNav",props:k,emits:["click"],setup(t,{emit:o}){const r=t,{modifiers:a}=e.toRefs(r),n=o,l=e=>{var t;const o=e.target;if(null==o?void 0:o.dataset.index){const e=parseInt(o.dataset.index),a=null==(t=r.items)?void 0:t[e];if(!a||(null==a?void 0:a.disabled))return;n("click",a)}},i=C("vv-nav",a);return(t,o)=>(e.openBlock(),e.createElementBlock("nav",{class:e.normalizeClass(e.unref(i))},[e.createElementVNode("ul",{class:"vv-nav__menu",role:"menu","aria-busy":"true",onClick:e.withModifiers(l,["stop"])},[e.renderSlot(t.$slots,"default",{},(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(({on:o={},data:r,...a},n)=>(e.openBlock(),e.createBlock(x,e.mergeProps({key:n,"data-index":n},a,e.toHandlers(o)),{default:e.withCtx((()=>[e.renderSlot(t.$slots,"item",e.normalizeProps(e.guardReactiveProps({item:a,data:r,index:n})))])),_:2},1040,["data-index"])))),128))]))])],2))}});return e.defineComponent({__name:"VvTab",props:g,emits:["update:modelValue"],setup(t,{emit:o}){const r=t,a=o,{modifiers:n,items:l}=e.toRefs(r),i=e.computed((()=>l.value.reduce(((e,t)=>(t.tab&&e.push(t.tab),e)),[]))),s=e.ref(),u=e.computed({get:()=>{var e;return r.modelValue||s.value||(null==(e=i.value)?void 0:e[0])},set:e=>{s.value=e,a("update:modelValue",e)}}),d=e.computed((()=>{var e;return["tabs",...Array.isArray(r.navModifiers)?r.navModifiers:(null==(e=r.navModifiers)?void 0:e.split(" "))??[]]})),c=e=>{e.tab&&(u.value=e.tab)},m=e.computed((()=>r.items.map((e=>({current:e.tab===u.value,...e}))))),v=C("vv-tab",n);return(t,o)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(v))},[e.createCommentVNode(" #region nav "),e.createVNode(S,e.mergeProps({items:e.unref(m),modifiers:e.unref(d)},{onClick:c}),{item:e.withCtx((({item:o,data:r,index:a})=>[e.renderSlot(t.$slots,"nav-item",e.normalizeProps(e.guardReactiveProps({item:o,data:r,index:a})))])),_:3},16),e.createCommentVNode(" #endregion "),e.createCommentVNode(" #region panels "),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(l),((o,r)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:r},[o.tab?(e.openBlock(),e.createElementBlock("article",{key:0,class:e.normalizeClass([{target:e.unref(u)===o.tab},"vv-tab__panel"])},[e.renderSlot(t.$slots,`panel::${o.tab}`)],2)):e.createCommentVNode("v-if",!0)],64)))),128)),e.createCommentVNode(" #endregion ")],2))}})}));
@@ -1,23 +1,60 @@
1
- import type { NavItem } from '@/components/VvNav';
1
+ import type { NavItemTab } from '@/types/nav';
2
2
  declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
3
+ navModifiers: {
4
+ type: globalThis.PropType<string | string[]>;
5
+ };
6
+ modelValue: {
7
+ type: StringConstructor;
8
+ default: string;
9
+ };
3
10
  items: {
4
- type: globalThis.PropType<NavItem[]>;
5
- required: boolean;
11
+ type: globalThis.PropType<NavItemTab[]>;
6
12
  default: () => never[];
7
13
  };
8
- modifiers: globalThis.PropType<string | string[]>;
9
- }, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, string[], string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
14
+ modifiers: {
15
+ type: globalThis.PropType<string | string[]>;
16
+ default: undefined;
17
+ };
18
+ }, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
19
+ [x: string]: (...args: any[]) => void;
20
+ }, string, import("vue").PublicProps, Readonly<globalThis.ExtractPropTypes<{
21
+ navModifiers: {
22
+ type: globalThis.PropType<string | string[]>;
23
+ };
24
+ modelValue: {
25
+ type: StringConstructor;
26
+ default: string;
27
+ };
10
28
  items: {
11
- type: globalThis.PropType<NavItem[]>;
12
- required: boolean;
29
+ type: globalThis.PropType<NavItemTab[]>;
13
30
  default: () => never[];
14
31
  };
15
- modifiers: globalThis.PropType<string | string[]>;
16
- }>> & {
17
- [x: `on${Capitalize<string>}`]: ((...args: any[]) => any) | undefined;
18
- }, {
19
- items: NavItem[];
20
- }, {}>, Partial<Record<string, (_: {}) => any>>>;
32
+ modifiers: {
33
+ type: globalThis.PropType<string | string[]>;
34
+ default: undefined;
35
+ };
36
+ }>>, {
37
+ modelValue: string;
38
+ modifiers: string | string[];
39
+ items: NavItemTab[];
40
+ }, {}>, Partial<Record<`panel::${string}`, (_: {}) => any>> & {
41
+ "nav-item"?(_: {
42
+ item: {
43
+ label: string;
44
+ ariaLabel?: string | undefined;
45
+ title?: string | undefined;
46
+ to?: string | Record<string, unknown> | undefined;
47
+ href?: string | undefined;
48
+ target?: "_blank" | "_self" | "_parent" | "_top" | undefined;
49
+ rel?: string | undefined;
50
+ disabled?: boolean | undefined;
51
+ current?: boolean | undefined;
52
+ class?: string | string[] | undefined;
53
+ };
54
+ data: Record<string, unknown> | undefined;
55
+ index: number;
56
+ }): any;
57
+ }>;
21
58
  export default _default;
22
59
  type __VLS_WithTemplateSlots<T, S> = T & {
23
60
  new (): {
@@ -1,10 +1,19 @@
1
- import type { NavItem } from '../VvNav';
1
+ import type { NavItemTab } from '@/types/nav';
2
2
  export declare const VvTabProps: {
3
+ navModifiers: {
4
+ type: globalThis.PropType<string | string[]>;
5
+ };
6
+ modelValue: {
7
+ type: StringConstructor;
8
+ default: string;
9
+ };
3
10
  items: {
4
- type: globalThis.PropType<NavItem[]>;
5
- required: boolean;
11
+ type: globalThis.PropType<NavItemTab[]>;
6
12
  default: () => never[];
7
13
  };
8
- modifiers: globalThis.PropType<string | string[]>;
14
+ modifiers: {
15
+ type: globalThis.PropType<string | string[]>;
16
+ default: undefined;
17
+ };
9
18
  };
10
19
  export declare const VvTabEvents: string[];