@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,8 +1,10 @@
1
1
  import type { ExtractPropTypes, Ref } from 'vue'
2
2
  import type { AccordionGroupState } from '../../types/group'
3
3
  import { INJECTION_KEY_ACCORDION_GROUP } from '../../constants'
4
+ import { ModifiersProps } from '@/props'
4
5
 
5
6
  export const VvAccordionProps = {
7
+ ...ModifiersProps,
6
8
  /**
7
9
  * Accordion name
8
10
  */
@@ -22,10 +24,6 @@ export const VvAccordionProps = {
22
24
  type: Boolean,
23
25
  default: undefined,
24
26
  },
25
- /**
26
- * String or String[] of css classes (modifiers) that will be concatenated to prefix 'vv-accordion--'
27
- */
28
- modifiers: [String, Array],
29
27
  /**
30
28
  * If true, the accordion will be disabled
31
29
  */
@@ -58,12 +56,29 @@ export function useGroupProps(
58
56
  const modelValue = getGroupOrLocalRef('modelValue', props, emit)
59
57
  const not = getGroupOrLocalRef('not', props) as Ref<boolean>
60
58
  const collapse = getGroupOrLocalRef('collapse', props) as Ref<boolean>
61
- const modifiers = getGroupOrLocalRef('modifiers', props) as Ref<
62
- Array<string> | string
63
- >
64
59
  const disabled = computed(() =>
65
60
  Boolean(props.disabled || group?.value?.disabled.value),
66
61
  )
62
+ // merge local and group modifiers
63
+ const modifiers = computed(() => {
64
+ let localModifiers = props.modifiers
65
+ let groupModifiers = group?.value.modifiers.value
66
+
67
+ const toReturn = new Set<string>()
68
+ if (localModifiers) {
69
+ if (!Array.isArray(localModifiers)) {
70
+ localModifiers = localModifiers.split(' ')
71
+ }
72
+ localModifiers.forEach((modifier) => toReturn.add(modifier))
73
+ }
74
+ if (groupModifiers) {
75
+ if (!Array.isArray(groupModifiers)) {
76
+ groupModifiers = groupModifiers.split(' ')
77
+ }
78
+ groupModifiers.forEach((modifier) => toReturn.add(modifier))
79
+ }
80
+ return Array.from(toReturn)
81
+ })
67
82
 
68
83
  return {
69
84
  // group props
@@ -1,3 +1,5 @@
1
+ import { ModifiersProps } from '@/props'
2
+
1
3
  export interface VvAccordionGroupItem {
2
4
  title: string
3
5
  content: string
@@ -7,6 +9,7 @@ export interface VvAccordionGroupItem {
7
9
  }
8
10
 
9
11
  export const VvAccordionGroupProps = {
12
+ ...ModifiersProps,
10
13
  /**
11
14
  * VModel
12
15
  */
@@ -15,20 +18,19 @@ export const VvAccordionGroupProps = {
15
18
  * Accordion items
16
19
  * @type VvAccordionGroupItem
17
20
  */
18
- items: { type: Array<VvAccordionGroupItem>, default: () => [] },
21
+ items: {
22
+ type: Array as PropType<VvAccordionGroupItem[]>,
23
+ default: () => [],
24
+ },
19
25
  /**
20
26
  * If true, accordion items stay open when another item is opened
21
27
  */
22
28
  collapse: Boolean,
23
- /**
24
- * String or String[] of css classes (modifiers) that will be concatenated to prefix 'vv-accordion-group--'
25
- */
26
- modifiers: [String, Array],
27
29
  /**
28
30
  * String or String[] of css classes (modifiers) that will be concatenated to prefix 'vv-accordion--'
29
31
  */
30
32
  itemModifiers: {
31
- type: [String, Array<string>],
33
+ type: [String, Array] as PropType<string | string[]>,
32
34
  default: '',
33
35
  },
34
36
  /**
@@ -67,7 +67,7 @@
67
67
  const toReturn = {
68
68
  ...dropdownAria?.value,
69
69
  'aria-pressed': pressed.value ? true : undefined,
70
- role,
70
+ role: role?.value,
71
71
  }
72
72
  switch (hasTag.value) {
73
73
  case ActionTag.a:
@@ -0,0 +1,54 @@
1
+ <script lang="ts">
2
+ export default {
3
+ name: 'VvAlert',
4
+ }
5
+ </script>
6
+
7
+ <script setup lang="ts">
8
+ import VvIcon from '../VvIcon/VvIcon.vue'
9
+ import { useVvAlert, VvAlertEvents, VvAlertProps } from '.'
10
+
11
+ const props = defineProps(VvAlertProps)
12
+ const emit = defineEmits(VvAlertEvents)
13
+ const { hasProps, hasTitleId, hasIcon, close } = useVvAlert(props, emit)
14
+ defineExpose({ close })
15
+ </script>
16
+
17
+ <template>
18
+ <div v-bind="hasProps">
19
+ <div class="vv-alert__header">
20
+ <VvIcon v-if="hasIcon" v-bind="hasIcon" class="vv-alert__icon" />
21
+ <!-- @slot Header slot -->
22
+ <slot name="header">
23
+ <!-- @slot Before title slot -->
24
+ <slot name="title::before" />
25
+ <strong :id="hasTitleId" class="vv-alert__title">
26
+ {{ title }}
27
+ </strong>
28
+ <!-- @slot After title slot -->
29
+ <slot name="title::after" />
30
+ </slot>
31
+ <button
32
+ v-if="dismissable || autoClose"
33
+ class="vv-alert__close"
34
+ type="button"
35
+ :aria-label="closeLabel"
36
+ @click.stop="close"
37
+ >
38
+ <div class="vv-alert__close-mask"></div>
39
+ </button>
40
+ </div>
41
+ <div v-if="$slots.default || content" class="vv-alert__content">
42
+ <!-- @slot Content slot -->
43
+ <slot>
44
+ {{ content }}
45
+ </slot>
46
+ </div>
47
+ <div v-if="$slots.footer || footer" class="vv-alert__footer">
48
+ <!-- @slot Footer slot -->
49
+ <slot name="footer">
50
+ {{ footer }}
51
+ </slot>
52
+ </div>
53
+ </div>
54
+ </template>
@@ -0,0 +1,162 @@
1
+ import { IconProps, IdProps, ModifiersProps } from '@/props'
2
+ import type { ExtractPropTypes, PropType } from 'vue'
3
+ import { withModifiers } from 'vue'
4
+
5
+ export const VvAlertProps = {
6
+ ...IdProps,
7
+ ...ModifiersProps,
8
+ ...IconProps,
9
+ /**
10
+ * The alert is dismissable
11
+ * @default false
12
+ * @type boolean
13
+ */
14
+ dismissable: {
15
+ type: Boolean,
16
+ default: false,
17
+ },
18
+ /**
19
+ * The alert auto close after the specified time in milliseconds
20
+ * @default 0
21
+ * @type number
22
+ */
23
+ autoClose: {
24
+ type: Number,
25
+ default: 0,
26
+ },
27
+ /**
28
+ * The alert close label
29
+ * @default 'Close'
30
+ * @type string
31
+ */
32
+ closeLabel: {
33
+ type: String,
34
+ default: 'Close',
35
+ },
36
+ /**
37
+ * The alert title
38
+ * @default ''
39
+ * @type string
40
+ */
41
+ title: {
42
+ type: String,
43
+ default: '',
44
+ },
45
+ /**
46
+ * The alert content
47
+ * @default ''
48
+ * @type string
49
+ */
50
+ content: {
51
+ type: String,
52
+ default: '',
53
+ },
54
+ /**
55
+ * The alert footer
56
+ * @default ''
57
+ * @type string
58
+ */
59
+ footer: {
60
+ type: String,
61
+ default: '',
62
+ },
63
+ /**
64
+ * The alert role
65
+ * @default 'alert'
66
+ * @type string
67
+ * @values 'alert', 'alertdialog'
68
+ * @see https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/Alert_Role
69
+ * @see https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/Alertdialog_role
70
+ */
71
+ role: {
72
+ type: String as PropType<'alert' | 'alertdialog'>,
73
+ default: 'alert',
74
+ },
75
+ }
76
+
77
+ export const VvAlertEvents = ['close']
78
+
79
+ export const useVvAlert = (
80
+ props: Readonly<ExtractPropTypes<typeof VvAlertProps>>,
81
+ emit: (event: string, ...args: unknown[]) => void,
82
+ ) => {
83
+ const { bus } = useInjectedAlertGroup()
84
+
85
+ const hasId = useUniqueId(computed(() => props.id))
86
+ const hasTitleId = computed(() => `${hasId.value}-title`)
87
+
88
+ // icon
89
+ const hasIcon = computed(() =>
90
+ typeof props.icon === 'string' ? { name: props.icon } : props.icon,
91
+ )
92
+
93
+ // props
94
+ const hasClass = useModifiers(
95
+ 'vv-alert',
96
+ computed(() => props.modifiers),
97
+ computed(() => ({
98
+ dismissable: props.autoClose > 0 || props.dismissable,
99
+ 'auto-close': props.autoClose > 0,
100
+ hover: isMouseover.value,
101
+ })),
102
+ )
103
+ const hasStyle = computed(() => ({
104
+ '--alert-duration': `${props.autoClose}ms`,
105
+ }))
106
+
107
+ // close
108
+ const close = () => {
109
+ if (timeout) {
110
+ clearTimeout(timeout)
111
+ }
112
+ emit('close', hasId.value)
113
+ bus?.emit('close', hasId.value)
114
+ }
115
+
116
+ // auto close
117
+ let timeout: ReturnType<typeof setTimeout>
118
+ watch(
119
+ () => props.autoClose,
120
+ (value) => {
121
+ if (value > 0) {
122
+ timeout = setTimeout(close, value)
123
+ return
124
+ }
125
+ if (timeout) {
126
+ clearTimeout(timeout)
127
+ }
128
+ },
129
+ {
130
+ immediate: true,
131
+ },
132
+ )
133
+
134
+ // listeners
135
+ const isMouseover = ref(false)
136
+ const onMouseover = withModifiers(() => {
137
+ isMouseover.value = true
138
+ if (timeout) {
139
+ clearTimeout(timeout)
140
+ }
141
+ }, ['passive'])
142
+ const onMouseleave = withModifiers(() => {
143
+ isMouseover.value = false
144
+ if (props.autoClose > 0) {
145
+ timeout = setTimeout(close, props.autoClose)
146
+ }
147
+ }, ['passive'])
148
+
149
+ return {
150
+ close,
151
+ hasIcon,
152
+ hasTitleId,
153
+ hasProps: computed(() => ({
154
+ onMouseover,
155
+ onMouseleave,
156
+ class: hasClass.value,
157
+ style: hasStyle.value,
158
+ role: props.role,
159
+ 'aria-labelledby': hasTitleId.value,
160
+ })),
161
+ }
162
+ }
@@ -0,0 +1,34 @@
1
+ <script lang="ts">
2
+ export default {
3
+ name: 'VvAlertGroup',
4
+ }
5
+ </script>
6
+
7
+ <script setup lang="ts">
8
+ import { useVvAlertGroup, VvAlertGroupEvents, VvAlertGroupProps } from '.'
9
+ import VvAlert from '../VvAlert/VvAlert.vue'
10
+
11
+ const props = defineProps(VvAlertGroupProps)
12
+ const emit = defineEmits(VvAlertGroupEvents)
13
+ const { hasProps, hasTransition } = useVvAlertGroup(props, emit)
14
+ </script>
15
+
16
+ <template>
17
+ <div v-bind="hasProps">
18
+ <!-- @slot The slot before alert list -->
19
+ <slot name="before" />
20
+ <TransitionGroup
21
+ tag="div"
22
+ role="group"
23
+ :name="hasTransition"
24
+ class="vv-alert-group__list"
25
+ >
26
+ <!-- @slot The slot for alert list -->
27
+ <slot>
28
+ <VvAlert v-for="item in items" v-bind="item" :key="item.id" />
29
+ </slot>
30
+ </TransitionGroup>
31
+ <!-- @slot The slot after alert list -->
32
+ <slot name="after" />
33
+ </div>
34
+ </template>
@@ -0,0 +1,122 @@
1
+ import { ModifiersProps } from '@/props'
2
+ import type { ExtractPropTypes } from 'vue'
3
+
4
+ export type AlertItem = {
5
+ id: string | number
6
+ title?: string
7
+ icon?: string | Record<string, unknown>
8
+ content?: string
9
+ footer?: string
10
+ modifiers?: string | string[]
11
+ dismissable?: boolean
12
+ autoClose?: number
13
+ closeLabel?: string
14
+ role?: 'alert' | 'alertdialog'
15
+ }
16
+
17
+ export const VvAlertGroupProps = {
18
+ ...ModifiersProps,
19
+ name: {
20
+ type: String,
21
+ required: true,
22
+ },
23
+ items: {
24
+ type: Array as PropType<AlertItem[]>,
25
+ default: () => [],
26
+ },
27
+ stack: {
28
+ type: Boolean,
29
+ default: false,
30
+ },
31
+ reverse: {
32
+ type: Boolean,
33
+ default: false,
34
+ },
35
+ inline: {
36
+ type: String as PropType<'start' | 'middle' | 'end'>,
37
+ default: undefined,
38
+ },
39
+ block: {
40
+ type: String as PropType<'top' | 'center' | 'bottom'>,
41
+ default: undefined,
42
+ },
43
+ position: {
44
+ type: String as PropType<'absolute' | 'fixed'>,
45
+ default: undefined,
46
+ },
47
+ transition: {
48
+ type: String,
49
+ default: undefined,
50
+ },
51
+ }
52
+
53
+ export const VvAlertGroupEvents = ['close']
54
+
55
+ export const useVvAlertGroup = (
56
+ props: Readonly<ExtractPropTypes<typeof VvAlertGroupProps>>,
57
+ emit: (event: string, ...args: unknown[]) => void,
58
+ ) => {
59
+ const bus = useProvideAlertGroup({ name: computed(() => props.name) })
60
+
61
+ // check props block and inline coexist
62
+ if ((props.block && !props.inline) || (!props.block && props.inline)) {
63
+ // eslint-disable-next-line
64
+ console.warn(
65
+ `[VvAlertGroup]: block and inline props must coexist at the same time.`,
66
+ )
67
+ }
68
+
69
+ // props
70
+ const hasClass = computed(() => {
71
+ const toReturn: (string | Record<string, boolean>)[] = [
72
+ useModifiers(
73
+ 'vv-alert-group',
74
+ computed(() => props.modifiers),
75
+ computed(() => ({
76
+ stack: props.stack,
77
+ reverse: props.reverse,
78
+ absolute: props.position === 'absolute',
79
+ fixed: props.position === 'fixed',
80
+ })),
81
+ ).value,
82
+ ]
83
+ if (props.inline && props.block) {
84
+ toReturn.push(`vv-alert-group--${props.block}-${props.inline}`)
85
+ }
86
+ return toReturn
87
+ })
88
+
89
+ const hasTransition = computed(() => {
90
+ if (props.transition) {
91
+ return props.transition
92
+ }
93
+ if (!props.position) {
94
+ return 'vv-alert--fade'
95
+ }
96
+ if (props.inline === 'start') {
97
+ return 'vv-alert--fade-inline-start'
98
+ }
99
+ if (props.inline === 'end') {
100
+ return 'vv-alert--fade-inline-end'
101
+ }
102
+ if (props.block === 'top') {
103
+ return 'vv-alert--fade-block-top'
104
+ }
105
+ if (props.block === 'bottom') {
106
+ return 'vv-alert--fade-block-bottom'
107
+ }
108
+ return 'vv-alert--fade'
109
+ })
110
+
111
+ // listeners
112
+ bus.on('close', (id: string) => {
113
+ emit('close', id)
114
+ })
115
+
116
+ return {
117
+ hasTransition,
118
+ hasProps: computed(() => ({
119
+ class: hasClass.value,
120
+ })),
121
+ }
122
+ }
@@ -0,0 +1,21 @@
1
+ <script setup lang="ts">
2
+ import { VvAvatarProps } from '@/components/VvAvatar'
3
+
4
+ const props = defineProps(VvAvatarProps)
5
+ const { modifiers } = toRefs(props)
6
+
7
+ // bem css classes
8
+ const bemCssClasses = useModifiers('vv-avatar', modifiers)
9
+ </script>
10
+
11
+ <template>
12
+ <span
13
+ :class="bemCssClasses"
14
+ :role="imgSrc ? undefined : 'img'"
15
+ :aria-label="imgSrc ? undefined : 'avatar'"
16
+ >
17
+ <slot name="default">
18
+ <img v-if="imgSrc" :src="imgSrc" alt="avatar" />
19
+ </slot>
20
+ </span>
21
+ </template>
@@ -0,0 +1,9 @@
1
+ import { ModifiersProps } from '@/props'
2
+
3
+ export const VvAvatarProps = {
4
+ ...ModifiersProps,
5
+ /**
6
+ * Image src for avatar
7
+ */
8
+ imgSrc: String,
9
+ }
@@ -0,0 +1,65 @@
1
+ <script setup lang="ts">
2
+ import { VvAvatarGroupProps } from '@/components/VvAvatarGroup'
3
+ import VvAvatar from '@/components/VvAvatar/VvAvatar.vue'
4
+
5
+ const props = defineProps(VvAvatarGroupProps)
6
+ const { modifiers, items, toShow, totalItems, avatarModifiers } =
7
+ toRefs(props)
8
+
9
+ // bem css classes
10
+ const bemCssClasses = useModifiers('vv-avatar-group', modifiers)
11
+
12
+ const stringModifiers = computed(() => {
13
+ if (avatarModifiers?.value && Array.isArray(avatarModifiers?.value)) {
14
+ return avatarModifiers.value.join(' ')
15
+ }
16
+ return avatarModifiers?.value || ''
17
+ })
18
+
19
+ const avatarItems = computed(() => {
20
+ return items.value.slice(0, toShow.value).map((item) => {
21
+ let modifiers: string[] = []
22
+ let itemModifiers: string[] = []
23
+
24
+ if (avatarModifiers?.value) {
25
+ modifiers = Array.isArray(avatarModifiers?.value)
26
+ ? avatarModifiers?.value
27
+ : [avatarModifiers?.value]
28
+ }
29
+
30
+ if (item.modifiers) {
31
+ itemModifiers = Array.isArray(item.modifiers)
32
+ ? item.modifiers
33
+ : [item.modifiers]
34
+ }
35
+
36
+ return {
37
+ ...item,
38
+ key: item.key || useUniqueId().value,
39
+ modifiers: [...modifiers, ...itemModifiers],
40
+ }
41
+ })
42
+ })
43
+ </script>
44
+
45
+ <template>
46
+ <span :class="bemCssClasses">
47
+ <slot name="default">
48
+ <VvAvatar
49
+ v-for="avatarItem in avatarItems"
50
+ :key="avatarItem.key"
51
+ v-bind="{
52
+ modifiers: avatarItem.modifiers,
53
+ imgSrc: avatarItem.imgSrc,
54
+ }"
55
+ >
56
+ <span v-if="avatarItem.text">{{ avatarItem.text }}</span>
57
+ </VvAvatar>
58
+ <VvAvatar
59
+ v-if="(totalItems || items.length) > toShow"
60
+ :modifiers="`${stringModifiers} surface bordered`"
61
+ >{{ `+${(totalItems || items.length) - toShow}` }}</VvAvatar
62
+ >
63
+ </slot>
64
+ </span>
65
+ </template>
@@ -0,0 +1,28 @@
1
+ import { ModifiersProps } from '@/props'
2
+
3
+ export type AvatarItem = {
4
+ key?: string
5
+ text?: string
6
+ imgSrc?: string
7
+ modifiers?: string | string[]
8
+ }
9
+
10
+ export const VvAvatarGroupProps = {
11
+ ...ModifiersProps,
12
+ /**
13
+ * avatar items
14
+ */
15
+ items: {
16
+ type: Array as PropType<AvatarItem[]>,
17
+ default: () => [],
18
+ required: true,
19
+ },
20
+ toShow: {
21
+ type: Number,
22
+ default: 3,
23
+ },
24
+ totalItems: {
25
+ type: Number,
26
+ },
27
+ avatarModifiers: [String, Array] as PropType<string | string[]>,
28
+ }
@@ -9,5 +9,5 @@ export interface Route {
9
9
 
10
10
  export const VvBreadcrumbProps = {
11
11
  ...ModifiersProps,
12
- routes: Array<Route>,
12
+ routes: Array as PropType<Route[]>,
13
13
  }
@@ -81,25 +81,28 @@
81
81
  /**
82
82
  * @description Catch click event
83
83
  */
84
+ const toggleValue = computed(() => {
85
+ return props.value !== undefined ? props.value : name.value
86
+ })
84
87
  const onClick = () => {
85
88
  if (toggle.value) {
86
89
  if (Array.isArray(modelValue.value)) {
87
- if (contains(name.value, modelValue.value)) {
90
+ if (contains(toggleValue.value, modelValue.value)) {
88
91
  if (unselectable.value) {
89
92
  modelValue.value = modelValue.value.filter(
90
- (n) => n !== name.value,
93
+ (n) => n !== toggleValue.value,
91
94
  )
92
95
  }
93
96
  return
94
97
  }
95
- modelValue.value.push(name.value)
98
+ modelValue.value.push(toggleValue.value)
96
99
  return
97
100
  }
98
- if (equals(name.value, modelValue.value) && unselectable.value) {
99
- modelValue.value = undefined
101
+ if (toggleValue.value === modelValue.value && unselectable.value) {
102
+ modelValue.value = props.uncheckedValue
100
103
  return
101
104
  }
102
- modelValue.value = name.value
105
+ modelValue.value = toggleValue.value
103
106
  }
104
107
  }
105
108
  </script>