@volverjs/ui-vue 0.0.5 → 0.0.6-beta.15

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 (478) hide show
  1. package/README.md +3 -4
  2. package/auto-imports.d.ts +11 -0
  3. package/dist/Volver.d.ts +1 -1
  4. package/dist/components/VvAccordion/VvAccordion.es.js +238 -5
  5. package/dist/components/VvAccordion/VvAccordion.umd.js +1 -1
  6. package/dist/components/VvAccordion/VvAccordion.vue.d.ts +8 -8
  7. package/dist/components/VvAccordion/index.d.ts +3 -6
  8. package/dist/components/VvAccordionGroup/VvAccordionGroup.es.js +243 -10
  9. package/dist/components/VvAccordionGroup/VvAccordionGroup.umd.js +1 -1
  10. package/dist/components/VvAccordionGroup/VvAccordionGroup.vue.d.ts +10 -62
  11. package/dist/components/VvAccordionGroup/index.d.ts +4 -33
  12. package/dist/components/VvAction/VvAction.es.js +12 -8
  13. package/dist/components/VvAction/VvAction.umd.js +1 -1
  14. package/dist/components/VvAction/VvAction.vue.d.ts +4 -4
  15. package/dist/components/VvAction/index.d.ts +1 -1
  16. package/dist/components/VvAlert/VvAlert.es.js +661 -0
  17. package/dist/components/VvAlert/VvAlert.umd.js +1 -0
  18. package/dist/components/VvAlert/VvAlert.vue.d.ts +104 -0
  19. package/dist/components/VvAlert/index.d.ts +95 -0
  20. package/dist/components/VvAlertGroup/VvAlertGroup.es.js +799 -0
  21. package/dist/components/VvAlertGroup/VvAlertGroup.umd.js +1 -0
  22. package/dist/components/VvAlertGroup/VvAlertGroup.vue.d.ts +89 -0
  23. package/dist/components/VvAlertGroup/index.d.ts +55 -0
  24. package/dist/components/VvAvatar/VvAvatar.es.js +279 -0
  25. package/dist/components/VvAvatar/VvAvatar.umd.js +1 -0
  26. package/dist/components/VvAvatar/VvAvatar.vue.d.ts +15 -0
  27. package/dist/components/VvAvatar/index.d.ts +7 -0
  28. package/dist/components/VvAvatarGroup/VvAvatarGroup.es.js +363 -0
  29. package/dist/components/VvAvatarGroup/VvAvatarGroup.umd.js +1 -0
  30. package/dist/components/VvAvatarGroup/VvAvatarGroup.vue.d.ts +42 -0
  31. package/dist/components/VvAvatarGroup/index.d.ts +25 -0
  32. package/dist/components/VvBadge/VvBadge.es.js +3 -3
  33. package/dist/components/VvBadge/VvBadge.vue.d.ts +2 -2
  34. package/dist/components/VvBreadcrumb/VvBreadcrumb.es.js +3 -3
  35. package/dist/components/VvBreadcrumb/VvBreadcrumb.vue.d.ts +5 -31
  36. package/dist/components/VvBreadcrumb/index.d.ts +1 -14
  37. package/dist/components/VvButton/VvButton.es.js +90 -49
  38. package/dist/components/VvButton/VvButton.umd.js +1 -1
  39. package/dist/components/VvButton/VvButton.vue.d.ts +38 -13
  40. package/dist/components/VvButton/index.d.ts +27 -4
  41. package/dist/components/VvButtonGroup/VvButtonGroup.es.js +13 -7
  42. package/dist/components/VvButtonGroup/VvButtonGroup.umd.js +1 -1
  43. package/dist/components/VvButtonGroup/VvButtonGroup.vue.d.ts +10 -62
  44. package/dist/components/VvButtonGroup/index.d.ts +3 -29
  45. package/dist/components/VvCard/VvCard.es.js +221 -2
  46. package/dist/components/VvCard/VvCard.umd.js +1 -1
  47. package/dist/components/VvCard/VvCard.vue.d.ts +7 -7
  48. package/dist/components/VvCard/index.d.ts +1 -1
  49. package/dist/components/VvCheckbox/VvCheckbox.es.js +154 -101
  50. package/dist/components/VvCheckbox/VvCheckbox.umd.js +1 -1
  51. package/dist/components/VvCheckbox/VvCheckbox.vue.d.ts +47 -11
  52. package/dist/components/VvCheckbox/index.d.ts +9 -4
  53. package/dist/components/VvCheckboxGroup/VvCheckboxGroup.es.js +190 -104
  54. package/dist/components/VvCheckboxGroup/VvCheckboxGroup.umd.js +1 -1
  55. package/dist/components/VvCheckboxGroup/VvCheckboxGroup.vue.d.ts +44 -8
  56. package/dist/components/VvCheckboxGroup/index.d.ts +8 -3
  57. package/dist/components/VvCombobox/VvCombobox.es.js +272 -175
  58. package/dist/components/VvCombobox/VvCombobox.umd.js +1 -1
  59. package/dist/components/VvCombobox/VvCombobox.vue.d.ts +73 -37
  60. package/dist/components/VvCombobox/index.d.ts +13 -7
  61. package/dist/components/VvDialog/VvDialog.es.js +45 -34
  62. package/dist/components/VvDialog/VvDialog.umd.js +1 -1
  63. package/dist/components/VvDialog/VvDialog.vue.d.ts +7 -7
  64. package/dist/components/VvDialog/index.d.ts +2 -2
  65. package/dist/components/VvDropdown/VvDropdown.es.js +39 -25
  66. package/dist/components/VvDropdown/VvDropdown.umd.js +1 -1
  67. package/dist/components/VvDropdown/VvDropdown.vue.d.ts +24 -20
  68. package/dist/components/VvDropdown/VvDropdownAction.vue.d.ts +4 -4
  69. package/dist/components/VvDropdown/VvDropdownItem.vue.d.ts +2 -2
  70. package/dist/components/VvDropdown/VvDropdownOptgroup.vue.d.ts +1 -1
  71. package/dist/components/VvDropdown/VvDropdownOption.vue.d.ts +4 -4
  72. package/dist/components/VvDropdown/index.d.ts +2 -2
  73. package/dist/components/VvDropdownAction/VvDropdownAction.es.js +17 -11
  74. package/dist/components/VvDropdownAction/VvDropdownAction.umd.js +1 -1
  75. package/dist/components/VvDropdownItem/VvDropdownItem.es.js +9 -5
  76. package/dist/components/VvDropdownItem/VvDropdownItem.umd.js +1 -1
  77. package/dist/components/VvDropdownOptgroup/VvDropdownOptgroup.es.js +3 -3
  78. package/dist/components/VvDropdownOption/VvDropdownOption.es.js +12 -8
  79. package/dist/components/VvDropdownOption/VvDropdownOption.umd.js +1 -1
  80. package/dist/components/VvIcon/VvIcon.es.js +26 -20
  81. package/dist/components/VvIcon/VvIcon.umd.js +1 -1
  82. package/dist/components/VvIcon/VvIcon.vue.d.ts +3 -3
  83. package/dist/components/VvIcon/index.d.ts +3 -3
  84. package/dist/components/VvInputText/VvInputClearAction.d.ts +2 -2
  85. package/dist/components/VvInputText/VvInputPasswordAction.d.ts +1 -1
  86. package/dist/components/VvInputText/VvInputStepAction.d.ts +1 -1
  87. package/dist/components/VvInputText/VvInputText.es.js +166 -142
  88. package/dist/components/VvInputText/VvInputText.umd.js +1 -1
  89. package/dist/components/VvInputText/VvInputText.vue.d.ts +46 -22
  90. package/dist/components/VvInputText/index.d.ts +5 -5
  91. package/dist/components/VvNav/VvNav.es.js +454 -0
  92. package/dist/components/VvNav/VvNav.umd.js +1 -0
  93. package/dist/components/VvNav/VvNav.vue.d.ts +21 -0
  94. package/dist/components/VvNav/index.d.ts +19 -0
  95. package/dist/components/VvNavItemTitle/VvNavItemTitle.es.js +19 -0
  96. package/dist/components/VvNavItemTitle/VvNavItemTitle.umd.js +1 -0
  97. package/dist/components/VvNavItemTitle/VvNavItemTitle.vue.d.ts +6 -0
  98. package/dist/components/VvNavSeparator/VvNavSeparator.d.ts +2 -0
  99. package/dist/components/VvProgress/VvProgress.es.js +3 -3
  100. package/dist/components/VvProgress/VvProgress.vue.d.ts +1 -1
  101. package/dist/components/VvRadio/VvRadio.es.js +154 -101
  102. package/dist/components/VvRadio/VvRadio.umd.js +1 -1
  103. package/dist/components/VvRadio/VvRadio.vue.d.ts +47 -11
  104. package/dist/components/VvRadio/index.d.ts +9 -4
  105. package/dist/components/VvRadioGroup/VvRadioGroup.es.js +190 -104
  106. package/dist/components/VvRadioGroup/VvRadioGroup.umd.js +1 -1
  107. package/dist/components/VvRadioGroup/VvRadioGroup.vue.d.ts +44 -8
  108. package/dist/components/VvRadioGroup/index.d.ts +8 -3
  109. package/dist/components/VvSelect/VvSelect.es.js +167 -141
  110. package/dist/components/VvSelect/VvSelect.umd.js +1 -1
  111. package/dist/components/VvSelect/VvSelect.vue.d.ts +42 -18
  112. package/dist/components/VvSelect/index.d.ts +4 -4
  113. package/dist/components/VvTab/VvTab.es.js +509 -0
  114. package/dist/components/VvTab/VvTab.umd.js +1 -0
  115. package/dist/components/VvTab/VvTab.vue.d.ts +26 -0
  116. package/dist/components/VvTab/index.d.ts +10 -0
  117. package/dist/components/VvTextarea/VvTextarea.es.js +164 -140
  118. package/dist/components/VvTextarea/VvTextarea.umd.js +1 -1
  119. package/dist/components/VvTextarea/VvTextarea.vue.d.ts +40 -16
  120. package/dist/components/VvTextarea/index.d.ts +3 -3
  121. package/dist/components/VvTooltip/VvTooltip.es.js +3 -3
  122. package/dist/components/VvTooltip/VvTooltip.vue.d.ts +2 -2
  123. package/dist/components/common/HintSlot.d.ts +38 -12
  124. package/dist/components/index.es.js +1336 -981
  125. package/dist/components/index.umd.js +1 -1
  126. package/dist/composables/alert/useInjectAlert.d.ts +9 -0
  127. package/dist/composables/alert/useProvideAlert.d.ts +10 -0
  128. package/dist/composables/dropdown/useInjectDropdown.d.ts +17 -16
  129. package/dist/composables/dropdown/useProvideDropdown.d.ts +7 -3
  130. package/dist/composables/group/useInjectedGroupState.d.ts +1 -1
  131. package/dist/composables/useOptions.d.ts +2 -2
  132. package/dist/composables/useVolver.d.ts +1 -2
  133. package/dist/constants.d.ts +33 -4
  134. package/dist/directives/index.d.ts +2 -2
  135. package/dist/directives/index.es.js +3 -3
  136. package/dist/directives/v-tooltip.es.js +3 -3
  137. package/dist/icons.es.js +3 -3
  138. package/dist/icons.umd.js +1 -1
  139. package/dist/props/index.d.ts +38 -16
  140. package/dist/resolvers/unplugin.es.js +6 -3
  141. package/dist/resolvers/unplugin.umd.js +1 -1
  142. package/dist/stories/Accordion/Accordion.settings.d.ts +18 -17
  143. package/dist/stories/Accordion/Accordion.stories.d.ts +7 -0
  144. package/dist/stories/Accordion/AccordionSlots.stories.d.ts +7 -0
  145. package/dist/stories/AccordionGroup/AccordionGroup.settings.d.ts +23 -4
  146. package/dist/stories/AccordionGroup/AccordionGroup.stories.d.ts +134 -0
  147. package/dist/stories/AccordionGroup/AccordionGroupSlots.stories.d.ts +894 -0
  148. package/dist/stories/Alert/Alert.settings.d.ts +105 -0
  149. package/dist/stories/Alert/Alert.stories.d.ts +9 -0
  150. package/dist/stories/Alert/Alert.test.d.ts +2 -0
  151. package/dist/stories/Alert/AlertModifiers.stories.d.ts +13 -0
  152. package/dist/stories/Alert/AlertSlots.stories.d.ts +10 -0
  153. package/dist/stories/AlertGroup/AlertGroup.settings.d.ts +97 -0
  154. package/dist/stories/AlertGroup/AlertGroup.stories.d.ts +8 -0
  155. package/dist/stories/AlertGroup/AlertGroup.test.d.ts +2 -0
  156. package/dist/stories/AlertGroup/AlertGroupPosition.stories.d.ts +14 -0
  157. package/dist/stories/AlertGroup/AlertGroupSlots.stories.d.ts +8 -0
  158. package/dist/stories/Avatar/Avatar.settings.d.ts +5 -0
  159. package/dist/stories/Avatar/Avatar.stories.d.ts +7 -0
  160. package/dist/stories/Avatar/Avatar.test.d.ts +2 -0
  161. package/dist/stories/Avatar/AvatarBadge.stories.d.ts +6 -0
  162. package/dist/stories/Avatar/AvatarModifiers.stories.d.ts +13 -0
  163. package/dist/stories/Avatar/AvatarSlots.stories.d.ts +6 -0
  164. package/dist/stories/AvatarGroup/AvatarGroup.settings.d.ts +50 -0
  165. package/dist/stories/AvatarGroup/AvatarGroup.stories.d.ts +6 -0
  166. package/dist/stories/AvatarGroup/AvatarGroup.test.d.ts +2 -0
  167. package/dist/stories/AvatarGroup/AvatarGroupModifiers.stories.d.ts +7 -0
  168. package/dist/stories/AvatarGroup/AvatarGroupSlotDefault.stories.d.ts +6 -0
  169. package/dist/stories/Badge/Badge.settings.d.ts +0 -3
  170. package/dist/stories/Badge/Badge.stories.d.ts +7 -0
  171. package/dist/stories/Badge/BadgeSlots.stories.d.ts +6 -0
  172. package/dist/stories/Breadcrumb/Breadcrumb.stories.d.ts +7 -0
  173. package/dist/stories/Breadcrumb/Breadcrumb.test.d.ts +1 -1
  174. package/dist/stories/Breadcrumb/BreadcrumbSlots.stories.d.ts +6 -0
  175. package/dist/stories/Button/Button.settings.d.ts +17 -9
  176. package/dist/stories/Button/Button.stories.d.ts +6 -0
  177. package/dist/stories/Button/ButtonIcon.stories.d.ts +10 -0
  178. package/dist/stories/Button/ButtonLink.stories.d.ts +7 -0
  179. package/dist/stories/Button/ButtonLoading.stories.d.ts +8 -0
  180. package/dist/stories/Button/ButtonModifiers.stories.d.ts +17 -0
  181. package/dist/stories/Button/ButtonSlots.stories.d.ts +9 -0
  182. package/dist/stories/Button/ButtonState.stories.d.ts +8 -0
  183. package/dist/stories/Button/ButtonToggle.stories.d.ts +9 -0
  184. package/dist/stories/ButtonGroup/ButtonGroup.settings.d.ts +0 -4
  185. package/dist/stories/ButtonGroup/ButtonGroup.stories.d.ts +6 -0
  186. package/dist/stories/ButtonGroup/ButtonGroupModifiers.stories.d.ts +8 -0
  187. package/dist/stories/ButtonGroup/ButtonGroupSlots.stories.d.ts +6 -0
  188. package/dist/stories/ButtonGroup/ButtonGroupToggle.stories.d.ts +8 -0
  189. package/dist/stories/Card/Card.settings.d.ts +0 -3
  190. package/dist/stories/Card/Card.stories.d.ts +6 -0
  191. package/dist/stories/Card/CardSlots.stories.d.ts +9 -0
  192. package/dist/stories/Checkbox/Checkbox.settings.d.ts +1 -21
  193. package/dist/stories/Checkbox/Checkbox.stories.d.ts +13 -0
  194. package/dist/stories/Checkbox/CheckboxBinary.stories.d.ts +7 -0
  195. package/dist/stories/Checkbox/CheckboxSlots.stories.d.ts +7 -0
  196. package/dist/stories/CheckboxGroup/CheckboxGroup.settings.d.ts +1 -27
  197. package/dist/stories/CheckboxGroup/CheckboxGroup.stories.d.ts +12 -0
  198. package/dist/stories/CheckboxGroup/CheckboxGroupOptions.stories.d.ts +8 -0
  199. package/dist/stories/CheckboxGroup/CheckboxGroupSlots.stories.d.ts +7 -0
  200. package/dist/stories/Combobox/Combobox.settings.d.ts +2 -54
  201. package/dist/stories/Combobox/Combobox.stories.d.ts +21 -0
  202. package/dist/stories/Combobox/ComboboxIconPosition.stories.d.ts +8 -0
  203. package/dist/stories/Combobox/ComboboxMultiple.stories.d.ts +8 -0
  204. package/dist/stories/Combobox/ComboboxOptions.stories.d.ts +9 -0
  205. package/dist/stories/Combobox/ComboboxSlots.stories.d.ts +10 -0
  206. package/dist/stories/Dialog/Dialog.settings.d.ts +1 -1
  207. package/dist/stories/Dialog/Dialog.stories.d.ts +7 -0
  208. package/dist/stories/Dialog/DialogSlots.stories.d.ts +8 -0
  209. package/dist/stories/Dropdown/Dropdown.settings.d.ts +1 -1
  210. package/dist/stories/Dropdown/Dropdown.stories.d.ts +9 -0
  211. package/dist/stories/Dropdown/DropdownContextmenuDirective.stories.d.ts +6 -0
  212. package/dist/stories/Dropdown/DropdownMultilevel.stories.d.ts +6 -0
  213. package/dist/stories/Dropdown/DropdownSlots.stories.d.ts +8 -0
  214. package/dist/stories/Icon/Icon.settings.d.ts +1 -3
  215. package/dist/stories/Icon/Icon.stories.d.ts +8 -0
  216. package/dist/stories/Icon/IconsCollection.stories.d.ts +6 -0
  217. package/dist/stories/InputText/InputText.settings.d.ts +1 -74
  218. package/dist/stories/InputText/InputText.stories.d.ts +15 -0
  219. package/dist/stories/InputText/InputTextIconPosition.stories.d.ts +8 -0
  220. package/dist/stories/InputText/InputTextLength.stories.d.ts +10 -0
  221. package/dist/stories/InputText/InputTextMinMax.stories.d.ts +9 -0
  222. package/dist/stories/InputText/InputTextSlots.stories.d.ts +8 -0
  223. package/dist/stories/InputText/InputTextType.stories.d.ts +18 -0
  224. package/dist/stories/Nav/Nav.settings.d.ts +30 -0
  225. package/dist/stories/Nav/Nav.stories.d.ts +6 -0
  226. package/dist/stories/Nav/Nav.test.d.ts +2 -0
  227. package/dist/stories/Nav/NavModifiers.stories.d.ts +9 -0
  228. package/dist/stories/Progress/Progress.settings.d.ts +0 -6
  229. package/dist/stories/Progress/Progress.stories.d.ts +7 -0
  230. package/dist/stories/Radio/Radio.settings.d.ts +1 -19
  231. package/dist/stories/Radio/Radio.stories.d.ts +11 -0
  232. package/dist/stories/Radio/RadioSlots.stories.d.ts +7 -0
  233. package/dist/stories/RadioGroup/RadioGroup.settings.d.ts +1 -27
  234. package/dist/stories/RadioGroup/RadioGroup.stories.d.ts +12 -0
  235. package/dist/stories/RadioGroup/RadioGroupOptions.stories.d.ts +8 -0
  236. package/dist/stories/RadioGroup/RadioGroupSlots.stories.d.ts +7 -0
  237. package/dist/stories/Select/Select.settings.d.ts +1 -47
  238. package/dist/stories/Select/Select.stories.d.ts +15 -0
  239. package/dist/stories/Select/SelectIconPosition.stories.d.ts +8 -0
  240. package/dist/stories/Select/SelectOptions.stories.d.ts +9 -0
  241. package/dist/stories/Select/SelectSlots.stories.d.ts +8 -0
  242. package/dist/stories/Tab/Tab.settings.d.ts +37 -0
  243. package/dist/stories/Tab/Tab.stories.d.ts +6 -0
  244. package/dist/stories/Tab/Tab.test.d.ts +2 -0
  245. package/dist/stories/Textarea/Textarea.settings.d.ts +1 -43
  246. package/dist/stories/Textarea/Textarea.stories.d.ts +14 -0
  247. package/dist/stories/Textarea/TextareaLength.stories.d.ts +10 -0
  248. package/dist/stories/Textarea/TextareaSlots.stories.d.ts +8 -0
  249. package/dist/stories/Textarea/TextareatIconPosition.stories.d.ts +8 -0
  250. package/dist/stories/Tooltip/Tooltip.settings.d.ts +2 -39
  251. package/dist/stories/Tooltip/Tooltip.stories.d.ts +6 -0
  252. package/dist/stories/Tooltip/TooltipDirective.stories.d.ts +10 -0
  253. package/dist/stories/argTypes.d.ts +5 -125
  254. package/dist/test/expect.d.ts +3 -0
  255. package/package.json +112 -56
  256. package/src/assets/icons/detailed.json +1 -1
  257. package/src/assets/icons/normal.json +1 -1
  258. package/src/assets/icons/simple.json +1 -1
  259. package/src/components/VvAccordion/index.ts +22 -7
  260. package/src/components/VvAccordionGroup/index.ts +8 -6
  261. package/src/components/VvAction/VvAction.vue +1 -1
  262. package/src/components/VvAlert/VvAlert.vue +54 -0
  263. package/src/components/VvAlert/index.ts +162 -0
  264. package/src/components/VvAlertGroup/VvAlertGroup.vue +34 -0
  265. package/src/components/VvAlertGroup/index.ts +122 -0
  266. package/src/components/VvAvatar/VvAvatar.vue +21 -0
  267. package/src/components/VvAvatar/index.ts +9 -0
  268. package/src/components/VvAvatarGroup/VvAvatarGroup.vue +65 -0
  269. package/src/components/VvAvatarGroup/index.ts +28 -0
  270. package/src/components/VvBreadcrumb/index.ts +1 -1
  271. package/src/components/VvButton/VvButton.vue +9 -6
  272. package/src/components/VvButton/index.ts +44 -21
  273. package/src/components/VvButtonGroup/VvButtonGroup.vue +2 -2
  274. package/src/components/VvButtonGroup/index.ts +14 -2
  275. package/src/components/VvCard/index.ts +3 -1
  276. package/src/components/VvCheckbox/VvCheckbox.vue +23 -2
  277. package/src/components/VvCheckboxGroup/VvCheckboxGroup.vue +15 -2
  278. package/src/components/VvCombobox/VvCombobox.vue +41 -24
  279. package/src/components/VvCombobox/index.ts +11 -5
  280. package/src/components/VvDialog/VvDialog.vue +11 -7
  281. package/src/components/VvDialog/index.ts +2 -2
  282. package/src/components/VvDropdown/VvDropdown.vue +23 -5
  283. package/src/components/VvDropdown/VvDropdownItem.vue +2 -2
  284. package/src/components/VvIcon/VvIcon.vue +37 -34
  285. package/src/components/VvIcon/index.ts +3 -3
  286. package/src/components/VvInputText/VvInputText.vue +26 -9
  287. package/src/components/VvNav/VvNav.vue +66 -0
  288. package/src/components/VvNav/index.ts +21 -0
  289. package/src/components/VvNavItemTitle/VvNavItemTitle.vue +11 -0
  290. package/src/components/VvNavSeparator/VvNavSeparator.ts +8 -0
  291. package/src/components/VvRadio/VvRadio.vue +23 -2
  292. package/src/components/VvRadioGroup/VvRadioGroup.vue +15 -2
  293. package/src/components/VvSelect/VvSelect.vue +26 -9
  294. package/src/components/VvTab/VvTab.vue +53 -0
  295. package/src/components/VvTab/index.ts +13 -0
  296. package/src/components/VvTextarea/VvTextarea.vue +26 -9
  297. package/src/components/common/HintSlot.ts +129 -170
  298. package/src/composables/alert/useInjectAlert.ts +8 -0
  299. package/src/composables/alert/useProvideAlert.ts +23 -0
  300. package/src/composables/dropdown/useInjectDropdown.ts +3 -28
  301. package/src/composables/dropdown/useProvideDropdown.ts +14 -15
  302. package/src/composables/useOptions.ts +9 -7
  303. package/src/composables/useVolver.ts +1 -2
  304. package/src/constants.ts +42 -4
  305. package/src/props/index.ts +7 -5
  306. package/src/resolvers/unplugin.ts +6 -3
  307. package/src/stories/Accordion/Accordion.settings.ts +18 -7
  308. package/src/stories/Accordion/Accordion.stories.ts +45 -0
  309. package/src/stories/Accordion/AccordionSlots.stories.ts +29 -0
  310. package/src/stories/AccordionGroup/AccordionGroup.settings.ts +22 -0
  311. package/src/stories/AccordionGroup/AccordionGroup.stories.ts +62 -0
  312. package/src/stories/AccordionGroup/AccordionGroupSlots.stories.ts +53 -0
  313. package/src/stories/Alert/Alert.settings.ts +110 -0
  314. package/src/stories/Alert/Alert.stories.ts +60 -0
  315. package/src/stories/Alert/Alert.test.ts +95 -0
  316. package/src/stories/Alert/AlertModifiers.stories.ts +77 -0
  317. package/src/stories/Alert/AlertSlots.stories.ts +74 -0
  318. package/src/stories/AlertGroup/AlertGroup.settings.ts +110 -0
  319. package/src/stories/AlertGroup/AlertGroup.stories.ts +50 -0
  320. package/src/stories/AlertGroup/AlertGroup.test.ts +76 -0
  321. package/src/stories/AlertGroup/AlertGroupPosition.stories.ts +103 -0
  322. package/src/stories/AlertGroup/AlertGroupSlots.stories.ts +67 -0
  323. package/src/stories/Avatar/Avatar.settings.ts +37 -0
  324. package/src/stories/Avatar/Avatar.stories.ts +42 -0
  325. package/src/stories/Avatar/Avatar.test.ts +34 -0
  326. package/src/stories/Avatar/AvatarBadge.stories.ts +36 -0
  327. package/src/stories/Avatar/AvatarModifiers.stories.ts +100 -0
  328. package/src/stories/Avatar/AvatarSlots.stories.ts +34 -0
  329. package/src/stories/AvatarGroup/AvatarGroup.settings.ts +60 -0
  330. package/src/stories/AvatarGroup/AvatarGroup.stories.ts +35 -0
  331. package/src/stories/AvatarGroup/AvatarGroup.test.ts +36 -0
  332. package/src/stories/AvatarGroup/AvatarGroupModifiers.stories.ts +31 -0
  333. package/src/stories/AvatarGroup/AvatarGroupSlotDefault.stories.ts +39 -0
  334. package/src/stories/Badge/Badge.stories.ts +43 -0
  335. package/src/stories/Badge/BadgeSlots.stories.ts +23 -0
  336. package/src/stories/Breadcrumb/Breadcrumb.stories.ts +41 -0
  337. package/src/stories/Breadcrumb/Breadcrumb.test.ts +1 -1
  338. package/src/stories/Breadcrumb/BreadcrumbSlots.stories.ts +37 -0
  339. package/src/stories/Button/Button.settings.ts +14 -2
  340. package/src/stories/Button/Button.stories.ts +38 -0
  341. package/src/stories/Button/ButtonIcon.stories.ts +67 -0
  342. package/src/stories/Button/ButtonLink.stories.ts +40 -0
  343. package/src/stories/Button/ButtonLoading.stories.ts +41 -0
  344. package/src/stories/Button/ButtonModifiers.stories.ts +158 -0
  345. package/src/stories/Button/ButtonSlots.stories.ts +87 -0
  346. package/src/stories/Button/ButtonState.stories.ts +42 -0
  347. package/src/stories/Button/ButtonToggle.stories.ts +52 -0
  348. package/src/stories/ButtonGroup/ButtonGroup.stories.ts +39 -0
  349. package/src/stories/ButtonGroup/ButtonGroupModifiers.stories.ts +39 -0
  350. package/src/stories/ButtonGroup/ButtonGroupSlots.stories.ts +38 -0
  351. package/src/stories/ButtonGroup/ButtonGroupToggle.stories.ts +41 -0
  352. package/src/stories/Card/Card.stories.ts +46 -0
  353. package/src/stories/Card/CardSlots.stories.ts +81 -0
  354. package/src/stories/Checkbox/Checkbox.settings.ts +0 -2
  355. package/src/stories/Checkbox/Checkbox.stories.ts +97 -0
  356. package/src/stories/Checkbox/CheckboxBinary.stories.ts +33 -0
  357. package/src/stories/Checkbox/CheckboxSlots.stories.ts +31 -0
  358. package/src/stories/CheckboxGroup/CheckboxGroup.stories.ts +87 -0
  359. package/src/stories/CheckboxGroup/CheckboxGroupOptions.stories.ts +53 -0
  360. package/src/stories/CheckboxGroup/CheckboxGroupSlots.stories.ts +47 -0
  361. package/src/stories/Combobox/Combobox.settings.ts +3 -23
  362. package/src/stories/Combobox/Combobox.stories.ts +176 -0
  363. package/src/stories/Combobox/Combobox.test.ts +2 -2
  364. package/src/stories/Combobox/ComboboxIconPosition.stories.ts +43 -0
  365. package/src/stories/Combobox/ComboboxMultiple.stories.ts +41 -0
  366. package/src/stories/Combobox/ComboboxOptions.stories.ts +78 -0
  367. package/src/stories/Combobox/ComboboxSlots.stories.ts +104 -0
  368. package/src/stories/Dialog/Dialog.settings.ts +1 -1
  369. package/src/stories/Dialog/Dialog.stories.ts +51 -0
  370. package/src/stories/Dialog/Dialog.test.ts +2 -2
  371. package/src/stories/Dialog/DialogSlots.stories.ts +39 -0
  372. package/src/stories/Dropdown/Dropdown.stories.ts +107 -0
  373. package/src/stories/Dropdown/DropdownContextmenuDirective.stories.ts +49 -0
  374. package/src/stories/Dropdown/DropdownMultilevel.stories.ts +61 -0
  375. package/src/stories/Dropdown/DropdownSlots.stories.ts +95 -0
  376. package/src/stories/Icon/Icon.settings.ts +1 -0
  377. package/src/stories/Icon/Icon.stories.ts +48 -0
  378. package/src/stories/Icon/IconsCollection.stories.ts +53 -0
  379. package/src/stories/InputText/InputText.settings.ts +3 -39
  380. package/src/stories/InputText/InputText.stories.ts +121 -0
  381. package/src/stories/InputText/InputTextIconPosition.stories.ts +43 -0
  382. package/src/stories/InputText/InputTextLength.stories.ts +58 -0
  383. package/src/stories/InputText/InputTextMinMax.stories.ts +51 -0
  384. package/src/stories/InputText/InputTextSlots.stories.ts +39 -0
  385. package/src/stories/InputText/InputTextType.stories.ts +119 -0
  386. package/src/stories/Nav/Nav.settings.ts +34 -0
  387. package/src/stories/Nav/Nav.stories.ts +33 -0
  388. package/src/stories/Nav/Nav.test.ts +32 -0
  389. package/src/stories/Nav/NavModifiers.stories.ts +47 -0
  390. package/src/stories/Progress/Progress.settings.ts +0 -3
  391. package/src/stories/Progress/Progress.stories.ts +41 -0
  392. package/src/stories/Radio/Radio.stories.ts +81 -0
  393. package/src/stories/Radio/RadioSlots.stories.ts +31 -0
  394. package/src/stories/RadioGroup/RadioGroup.stories.ts +88 -0
  395. package/src/stories/RadioGroup/RadioGroupOptions.stories.ts +53 -0
  396. package/src/stories/RadioGroup/RadioGroupSlots.stories.ts +47 -0
  397. package/src/stories/Select/Select.settings.ts +0 -5
  398. package/src/stories/Select/Select.stories.ts +113 -0
  399. package/src/stories/Select/SelectIconPosition.stories.ts +43 -0
  400. package/src/stories/Select/SelectOptions.stories.ts +77 -0
  401. package/src/stories/Select/SelectSlots.stories.ts +39 -0
  402. package/src/stories/Tab/Tab.settings.ts +41 -0
  403. package/src/stories/Tab/Tab.stories.ts +70 -0
  404. package/src/stories/Tab/Tab.test.ts +37 -0
  405. package/src/stories/Textarea/Textarea.settings.ts +0 -8
  406. package/src/stories/Textarea/Textarea.stories.ts +107 -0
  407. package/src/stories/Textarea/TextareaLength.stories.ts +58 -0
  408. package/src/stories/Textarea/TextareaSlots.stories.ts +39 -0
  409. package/src/stories/Textarea/TextareatIconPosition.stories.ts +43 -0
  410. package/src/stories/Tooltip/Tooltip.settings.ts +4 -4
  411. package/src/stories/Tooltip/Tooltip.stories.ts +40 -0
  412. package/src/stories/Tooltip/TooltipDirective.stories.ts +68 -0
  413. package/src/stories/argTypes.ts +5 -59
  414. package/src/test/expect.ts +15 -0
  415. package/src/types/group.d.ts +5 -3
  416. package/src/stories/Accordion/Accordion.stories.mdx +0 -45
  417. package/src/stories/Accordion/AccordionSlots.stories.mdx +0 -58
  418. package/src/stories/AccordionGroup/AccordionGroup.stories.mdx +0 -58
  419. package/src/stories/AccordionGroup/AccordionGroupSlots.stories.mdx +0 -59
  420. package/src/stories/Badge/Badge.stories.mdx +0 -51
  421. package/src/stories/Badge/BadgeSlots.stories.mdx +0 -20
  422. package/src/stories/Breadcrumb/Breadcrumb.stories.mdx +0 -50
  423. package/src/stories/Breadcrumb/BreadcrumbSlots.stories.mdx +0 -43
  424. package/src/stories/Button/Button.stories.mdx +0 -35
  425. package/src/stories/Button/ButtonIcon.stories.mdx +0 -153
  426. package/src/stories/Button/ButtonLink.stories.mdx +0 -72
  427. package/src/stories/Button/ButtonLoading.stories.mdx +0 -108
  428. package/src/stories/Button/ButtonModifiers.stories.mdx +0 -257
  429. package/src/stories/Button/ButtonSlots.stories.mdx +0 -116
  430. package/src/stories/Button/ButtonState.stories.mdx +0 -66
  431. package/src/stories/Button/ButtonToggle.stories.mdx +0 -50
  432. package/src/stories/ButtonGroup/ButtonGroup.stories.mdx +0 -37
  433. package/src/stories/ButtonGroup/ButtonGroupModifiers.stories.mdx +0 -52
  434. package/src/stories/ButtonGroup/ButtonGroupSlots.stories.mdx +0 -37
  435. package/src/stories/ButtonGroup/ButtonGroupToggle.stories.mdx +0 -73
  436. package/src/stories/Card/Card.stories.mdx +0 -40
  437. package/src/stories/Card/CardSlots.stories.mdx +0 -98
  438. package/src/stories/Checkbox/Checkbox.stories.mdx +0 -164
  439. package/src/stories/Checkbox/CheckboxBinary.stories.mdx +0 -68
  440. package/src/stories/Checkbox/CheckboxSlots.stories.mdx +0 -46
  441. package/src/stories/CheckboxGroup/CheckboxGroup.stories.mdx +0 -135
  442. package/src/stories/CheckboxGroup/CheckboxGroupOptions.stories.mdx +0 -100
  443. package/src/stories/CheckboxGroup/CheckboxGroupSlots.stories.mdx +0 -68
  444. package/src/stories/Combobox/Combobox.stories.mdx +0 -324
  445. package/src/stories/Combobox/ComboboxIconPosition.stories.mdx +0 -78
  446. package/src/stories/Combobox/ComboboxMultiple.stories.mdx +0 -73
  447. package/src/stories/Combobox/ComboboxOptions.stories.mdx +0 -135
  448. package/src/stories/Combobox/ComboboxSlots.stories.mdx +0 -153
  449. package/src/stories/Dialog/Dialog.stories.mdx +0 -56
  450. package/src/stories/Dialog/DialogSlots.stories.mdx +0 -63
  451. package/src/stories/Dropdown/Dropdown.stories.mdx +0 -124
  452. package/src/stories/Dropdown/DropdownContextmenuDirective.stories.mdx +0 -41
  453. package/src/stories/Dropdown/DropdownMultilevel.stories.mdx +0 -56
  454. package/src/stories/Dropdown/DropdownSlots.stories.mdx +0 -114
  455. package/src/stories/Icon/Icon.stories.mdx +0 -91
  456. package/src/stories/Icon/IconsCollection.stories.mdx +0 -69
  457. package/src/stories/InputText/InputText.stories.mdx +0 -211
  458. package/src/stories/InputText/InputTextIconPosition.stories.mdx +0 -78
  459. package/src/stories/InputText/InputTextLength.stories.mdx +0 -110
  460. package/src/stories/InputText/InputTextMinMax.stories.mdx +0 -112
  461. package/src/stories/InputText/InputTextSlots.stories.mdx +0 -69
  462. package/src/stories/InputText/InputTextType.stories.mdx +0 -259
  463. package/src/stories/Progress/Progress.stories.mdx +0 -30
  464. package/src/stories/Radio/Radio.stories.mdx +0 -128
  465. package/src/stories/Radio/RadioSlots.stories.mdx +0 -46
  466. package/src/stories/RadioGroup/RadioGroup.stories.mdx +0 -135
  467. package/src/stories/RadioGroup/RadioGroupOptions.stories.mdx +0 -100
  468. package/src/stories/RadioGroup/RadioGroupSlots.stories.mdx +0 -68
  469. package/src/stories/Select/Select.stories.mdx +0 -196
  470. package/src/stories/Select/SelectIconPosition.stories.mdx +0 -78
  471. package/src/stories/Select/SelectOptions.stories.mdx +0 -135
  472. package/src/stories/Select/SelectSlots.stories.mdx +0 -48
  473. package/src/stories/Textarea/Textarea.stories.mdx +0 -187
  474. package/src/stories/Textarea/TextareaLength.stories.mdx +0 -110
  475. package/src/stories/Textarea/TextareaSlots.stories.mdx +0 -69
  476. package/src/stories/Textarea/TextareatIconPosition.stories.mdx +0 -78
  477. package/src/stories/Tooltip/Tooltip.stories.mdx +0 -102
  478. package/src/stories/Tooltip/TooltipDirective.stories.mdx +0 -99
@@ -1,5 +1,5 @@
1
1
  import type { PropType } from 'vue'
2
- import type { IconifyRenderMode } from '@iconify/vue'
2
+ import type { IconifyIconOnLoad, IconifyRenderMode } from '@iconify/vue'
3
3
 
4
4
  export enum IconPrefix {
5
5
  simple = 'simple',
@@ -88,14 +88,14 @@ export const VvIconProps = {
88
88
  /**
89
89
  * A callback that is called when icon data has been loaded
90
90
  */
91
- onLoad: Function,
91
+ onLoad: Function as PropType<IconifyIconOnLoad>,
92
92
  /**
93
93
  * SVG icon string
94
94
  */
95
95
  svg: String,
96
96
  /**
97
97
  * Icon modifiers: vv-icon css helper classes, value/s are concatened with prefix 'vv-icon--'
98
- * @values string | Array<string>
98
+ * @values string | string[]
99
99
  */
100
100
  modifiers: {
101
101
  type: [String, Array] as PropType<string | string[]>,
@@ -41,7 +41,7 @@
41
41
  loading,
42
42
  } = toRefs(props)
43
43
  const hasId = useUniqueId(id)
44
- const hasDescribedBy = computed(() => `${hasId.value}-hint`)
44
+ const hasHintId = computed(() => `${hasId.value}-hint`)
45
45
  // BUG: https://www.samanthaming.com/tidbits/88-css-placeholder-shown/
46
46
  const inputTextPlaceholder = computed(() =>
47
47
  props.floating && isEmpty(props.placeholder) ? ' ' : props.placeholder,
@@ -211,12 +211,11 @@
211
211
  required: props.required,
212
212
  autocomplete: props.autocomplete,
213
213
  'aria-invalid': isInvalid.value,
214
- 'aria-describedby':
215
- !hasInvalid.value && hasHint.value
216
- ? hasDescribedBy.value
217
- : undefined,
218
- 'aria-errormessage': hasInvalid.value
219
- ? hasDescribedBy.value
214
+ 'aria-describedby': hasHintLabelOrSlot.value
215
+ ? hasHintId.value
216
+ : undefined,
217
+ 'aria-errormessage': hasInvalidLabelOrSlot.value
218
+ ? hasHintId.value
220
219
  : undefined,
221
220
  }
222
221
  if (
@@ -274,7 +273,12 @@
274
273
  }))
275
274
 
276
275
  // components
277
- const { HintSlot, hasHint, hasInvalid } = HintSlotFactory(props, slots)
276
+ const {
277
+ HintSlot,
278
+ hasHintLabelOrSlot,
279
+ hasInvalidLabelOrSlot,
280
+ hintSlotScope,
281
+ } = HintSlotFactory(props, slots)
278
282
  const PasswordInputActions = VvInputTextActionsFactory(
279
283
  INPUT_TYPES.PASSWORD,
280
284
  props,
@@ -403,6 +407,19 @@
403
407
  </slot>
404
408
  </span>
405
409
  </div>
406
- <HintSlot :id="hasDescribedBy" class="vv-input-text__hint" />
410
+ <HintSlot :id="hasHintId" class="vv-input-text__hint">
411
+ <template v-if="$slots.hint" #hint>
412
+ <slot name="hint" v-bind="hintSlotScope" />
413
+ </template>
414
+ <template v-if="$slots.loading" #loading>
415
+ <slot name="loading" v-bind="hintSlotScope" />
416
+ </template>
417
+ <template v-if="$slots.valid" #valid>
418
+ <slot name="valid" v-bind="hintSlotScope" />
419
+ </template>
420
+ <template v-if="$slots.invalid" #invalid>
421
+ <slot name="invalid" v-bind="hintSlotScope" />
422
+ </template>
423
+ </HintSlot>
407
424
  </div>
408
425
  </template>
@@ -0,0 +1,66 @@
1
+ <script setup lang="ts">
2
+ import { VvNavProps, VvNavEvents, type NavItem } from '@/components/VvNav'
3
+ import VvAction from '@/components/VvAction/VvAction.vue'
4
+
5
+ const props = defineProps(VvNavProps)
6
+ const emit = defineEmits(VvNavEvents)
7
+ const { modifiers, items } = toRefs(props)
8
+ const activeItem: Ref<string | null> = ref(null)
9
+
10
+ // bem css classes
11
+ const bemCssClasses = useModifiers('vv-nav', modifiers)
12
+
13
+ const localItems = computed(() => {
14
+ return items.value.map((item, index) => {
15
+ return {
16
+ ...item,
17
+ id: item.id || `nav-item_${index}`,
18
+ }
19
+ })
20
+ })
21
+
22
+ /**
23
+ * Triggers when the item is clicked.
24
+ * @private
25
+ * @event click
26
+ * @param [NavItem, string] item - the clicked item
27
+ */
28
+ function onClick(item: NavItem) {
29
+ if (!item.disabled) {
30
+ emit('click', item)
31
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
32
+ activeItem.value = item.id!
33
+ }
34
+ }
35
+ </script>
36
+
37
+ <template>
38
+ <nav :class="bemCssClasses">
39
+ <ul class="vv-nav__menu" role="menu" aria-busy="true">
40
+ <li
41
+ v-for="navItem in localItems"
42
+ :key="navItem.id"
43
+ class="vv-nav__item"
44
+ role="presentation"
45
+ >
46
+ <VvAction
47
+ v-bind="{
48
+ disabled: navItem.disabled,
49
+ to: navItem.to,
50
+ href: navItem.href,
51
+ tabindex: 0,
52
+ }"
53
+ :class="{
54
+ current: activeItem == navItem.id,
55
+ disabled: navItem.disabled,
56
+ }"
57
+ class="vv-nav__item-label"
58
+ v-on="navItem.on || {}"
59
+ @click="onClick(navItem)"
60
+ >
61
+ {{ navItem.title }}
62
+ </VvAction>
63
+ </li>
64
+ </ul>
65
+ </nav>
66
+ </template>
@@ -0,0 +1,21 @@
1
+ import { ModifiersProps } from '@/props'
2
+
3
+ export type NavItem = {
4
+ id?: string
5
+ title: string
6
+ to?: string | { [key: string]: unknown }
7
+ href?: string
8
+ disabled?: boolean
9
+ on: () => void
10
+ }
11
+
12
+ export const VvNavProps = {
13
+ ...ModifiersProps,
14
+ items: {
15
+ type: Array as PropType<NavItem[]>,
16
+ required: true,
17
+ default: () => [],
18
+ },
19
+ }
20
+
21
+ export const VvNavEvents = ['click']
@@ -0,0 +1,11 @@
1
+ <script setup lang="ts">
2
+ defineProps({
3
+ title: String,
4
+ })
5
+ </script>
6
+
7
+ <template>
8
+ <span class="vv-nav__heading-label" aria-hidden="true">
9
+ {{ title }}
10
+ </span>
11
+ </template>
@@ -0,0 +1,8 @@
1
+ export default defineComponent({
2
+ render() {
3
+ return h('li', {
4
+ class: 'vv-nav__divider',
5
+ role: 'separator',
6
+ })
7
+ },
8
+ })
@@ -17,6 +17,7 @@
17
17
  const { id, disabled, readonly, modelValue, valid, invalid } =
18
18
  useGroupProps(props, emit)
19
19
  const hasId = useUniqueId(id)
20
+ const hasHintId = computed(() => `${hasId.value}-hint`)
20
21
  const tabindex = computed(() => (isDisabled.value ? -1 : props.tabindex))
21
22
 
22
23
  // template refs
@@ -71,7 +72,12 @@
71
72
  )
72
73
 
73
74
  // hint
74
- const { HintSlot } = HintSlotFactory(props, slots)
75
+ const {
76
+ HintSlot,
77
+ hasHintLabelOrSlot,
78
+ hasInvalidLabelOrSlot,
79
+ hintSlotScope,
80
+ } = HintSlotFactory(props, slots)
75
81
  </script>
76
82
 
77
83
  <template>
@@ -87,10 +93,25 @@
87
93
  :value="hasValue"
88
94
  :tabindex="tabindex"
89
95
  :aria-invalid="isInvalid"
96
+ :aria-describedby="hasHintLabelOrSlot ? hasHintId : undefined"
97
+ :aria-errormessage="hasInvalidLabelOrSlot ? hasHintId : undefined"
90
98
  />
91
99
  <slot :value="modelValue">
92
100
  {{ label }}
93
101
  </slot>
94
- <HintSlot class="vv-radio__hint" :params="{ value: modelValue }" />
102
+ <HintSlot :id="hasHintId" class="vv-radio__hint">
103
+ <template v-if="$slots.hint" #hint>
104
+ <slot name="hint" v-bind="hintSlotScope" />
105
+ </template>
106
+ <template v-if="$slots.loading" #loading>
107
+ <slot name="loading" v-bind="hintSlotScope" />
108
+ </template>
109
+ <template v-if="$slots.valid" #valid>
110
+ <slot name="valid" v-bind="hintSlotScope" />
111
+ </template>
112
+ <template v-if="$slots.invalid" #invalid>
113
+ <slot name="invalid" v-bind="hintSlotScope" />
114
+ </template>
115
+ </HintSlot>
95
116
  </label>
96
117
  </template>
@@ -58,7 +58,7 @@
58
58
  }
59
59
 
60
60
  // hint
61
- const { HintSlot } = HintSlotFactory(props, slots)
61
+ const { HintSlot, hintSlotScope } = HintSlotFactory(props, slots)
62
62
  </script>
63
63
 
64
64
  <template>
@@ -78,6 +78,19 @@
78
78
  <slot v-else />
79
79
  <!-- #endregion -->
80
80
  </div>
81
- <HintSlot class="vv-radio-group__hint" />
81
+ <HintSlot class="vv-radio-group__hint">
82
+ <template v-if="$slots.hint" #hint>
83
+ <slot name="hint" v-bind="hintSlotScope" />
84
+ </template>
85
+ <template v-if="$slots.loading" #loading>
86
+ <slot name="loading" v-bind="hintSlotScope" />
87
+ </template>
88
+ <template v-if="$slots.valid" #valid>
89
+ <slot name="valid" v-bind="hintSlotScope" />
90
+ </template>
91
+ <template v-if="$slots.invalid" #invalid>
92
+ <slot name="invalid" v-bind="hintSlotScope" />
93
+ </template>
94
+ </HintSlot>
82
95
  </fieldset>
83
96
  </template>
@@ -20,7 +20,12 @@
20
20
  const select = ref()
21
21
 
22
22
  // hint
23
- const { HintSlot, hasHint, hasInvalid } = HintSlotFactory(props, slots)
23
+ const {
24
+ HintSlot,
25
+ hasHintLabelOrSlot,
26
+ hasInvalidLabelOrSlot,
27
+ hintSlotScope,
28
+ } = HintSlotFactory(props, slots)
24
29
 
25
30
  // data
26
31
  const {
@@ -39,7 +44,7 @@
39
44
 
40
45
  // computed
41
46
  const hasId = useUniqueId(id)
42
- const hasDescribedBy = computed(() => `${hasId.value}-hint`)
47
+ const hasHintId = computed(() => `${hasId.value}-hint`)
43
48
 
44
49
  // focus
45
50
  const { focused } = useComponentFocus(select, emit)
@@ -108,12 +113,11 @@
108
113
  autocomplete: props.autocomplete,
109
114
  multiple: props.multiple,
110
115
  'aria-invalid': isInvalid.value,
111
- 'aria-describedby':
112
- !hasInvalid.value && hasHint.value
113
- ? hasDescribedBy.value
114
- : undefined,
115
- 'aria-errormessage': hasInvalid.value
116
- ? hasDescribedBy.value
116
+ 'aria-describedby': hasHintLabelOrSlot.value
117
+ ? hasHintId.value
118
+ : undefined,
119
+ 'aria-errormessage': hasInvalidLabelOrSlot.value
120
+ ? hasHintId.value
117
121
  : undefined,
118
122
  }
119
123
  })
@@ -218,6 +222,19 @@
218
222
  </div>
219
223
  </div>
220
224
  <!-- #endregion native select -->
221
- <HintSlot :id="hasDescribedBy" class="vv-select__hint" />
225
+ <HintSlot :id="hasHintId" class="vv-select__hint">
226
+ <template v-if="$slots.hint" #hint>
227
+ <slot name="hint" v-bind="hintSlotScope" />
228
+ </template>
229
+ <template v-if="$slots.loading" #loading>
230
+ <slot name="loading" v-bind="hintSlotScope" />
231
+ </template>
232
+ <template v-if="$slots.valid" #valid>
233
+ <slot name="valid" v-bind="hintSlotScope" />
234
+ </template>
235
+ <template v-if="$slots.invalid" #invalid>
236
+ <slot name="invalid" v-bind="hintSlotScope" />
237
+ </template>
238
+ </HintSlot>
222
239
  </div>
223
240
  </template>
@@ -0,0 +1,53 @@
1
+ <script setup lang="ts">
2
+ import { VvTabProps, VvTabEvents } from '@/components/VvTab'
3
+ import type { NavItem } from '@/components/VvNav'
4
+ import VvNav from '@/components/VvNav/VvNav.vue'
5
+
6
+ const props = defineProps(VvTabProps)
7
+ const emit = defineEmits(VvTabEvents)
8
+ const { modifiers, items } = toRefs(props)
9
+ const activeTab: Ref<string | null> = ref(null)
10
+
11
+ // bem css classes
12
+ const bemCssClasses = useModifiers('vv-tab', modifiers)
13
+
14
+ const localItems = computed(() => {
15
+ return items.value.map((item, index) => {
16
+ return {
17
+ ...item,
18
+ id: item.id || `tab-item_${index}`,
19
+ }
20
+ })
21
+ })
22
+
23
+ /**
24
+ * Triggers when the item is clicked.
25
+ * @private
26
+ * @event click
27
+ * @param [NavItem, string] item - the clicked item
28
+ */
29
+ function onClick(item: NavItem) {
30
+ if (!item.disabled) {
31
+ emit('click', item)
32
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
33
+ activeTab.value = item.id!
34
+ }
35
+ }
36
+ </script>
37
+
38
+ <template>
39
+ <div :class="bemCssClasses">
40
+ <VvNav :items="localItems" modifiers="tabs full" @click="onClick" />
41
+ <!-- #region tab content -->
42
+ <article
43
+ v-for="item in localItems"
44
+ :id="item.id"
45
+ :key="item.id"
46
+ :class="{ target: activeTab === item.id }"
47
+ class="vv-tab__panel"
48
+ >
49
+ <slot :name="`${item.id}`" />
50
+ </article>
51
+ <!-- #endregion tab content -->
52
+ </div>
53
+ </template>
@@ -0,0 +1,13 @@
1
+ import { ModifiersProps } from '@/props'
2
+ import type { NavItem } from '../VvNav'
3
+
4
+ export const VvTabProps = {
5
+ ...ModifiersProps,
6
+ items: {
7
+ type: Array as PropType<NavItem[]>,
8
+ required: true,
9
+ default: () => [],
10
+ },
11
+ }
12
+
13
+ export const VvTabEvents = ['click']
@@ -32,7 +32,7 @@
32
32
  modifiers,
33
33
  } = toRefs(props)
34
34
  const hasId = useUniqueId(id)
35
- const hasDescribedBy = computed(() => `${hasId.value}-hint`)
35
+ const hasHintId = computed(() => `${hasId.value}-hint`)
36
36
  // BUG - https://www.samanthaming.com/tidbits/88-css-placeholder-shown/
37
37
  const hasPlaceholder = computed(() =>
38
38
  props.floating && isEmpty(props.placeholder) ? ' ' : props.placeholder,
@@ -86,7 +86,12 @@
86
86
  })
87
87
 
88
88
  // hint
89
- const { HintSlot, hasHint, hasInvalid } = HintSlotFactory(props, slots)
89
+ const {
90
+ HintSlot,
91
+ hasHintLabelOrSlot,
92
+ hasInvalidLabelOrSlot,
93
+ hintSlotScope,
94
+ } = HintSlotFactory(props, slots)
90
95
 
91
96
  // styles
92
97
  const bemCssClasses = useModifiers(
@@ -125,12 +130,11 @@
125
130
  wrap: props.wrap,
126
131
  spellcheck: props.spellcheck,
127
132
  'aria-invalid': isInvalid.value,
128
- 'aria-describedby':
129
- !hasInvalid.value && hasHint.value
130
- ? hasDescribedBy.value
131
- : undefined,
132
- 'aria-errormessage': hasInvalid.value
133
- ? hasDescribedBy.value
133
+ 'aria-describedby': hasHintLabelOrSlot.value
134
+ ? hasHintId.value
135
+ : undefined,
136
+ 'aria-errormessage': hasInvalidLabelOrSlot.value
137
+ ? hasHintId.value
134
138
  : undefined,
135
139
  } as TextareaHTMLAttributes),
136
140
  )
@@ -193,6 +197,19 @@
193
197
  </slot>
194
198
  </span>
195
199
  </div>
196
- <HintSlot :id="hasDescribedBy" class="vv-textarea__hint" />
200
+ <HintSlot :id="hasHintId" class="vv-textarea__hint">
201
+ <template v-if="$slots.hint" #hint>
202
+ <slot name="hint" v-bind="hintSlotScope" />
203
+ </template>
204
+ <template v-if="$slots.loading" #loading>
205
+ <slot name="loading" v-bind="hintSlotScope" />
206
+ </template>
207
+ <template v-if="$slots.valid" #valid>
208
+ <slot name="valid" v-bind="hintSlotScope" />
209
+ </template>
210
+ <template v-if="$slots.invalid" #invalid>
211
+ <slot name="invalid" v-bind="hintSlotScope" />
212
+ </template>
213
+ </HintSlot>
197
214
  </div>
198
215
  </template>