@volverjs/ui-vue 0.0.10-beta.3 → 0.0.10-beta.30

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 (472) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +106 -10
  3. package/auto-imports.d.ts +7 -2
  4. package/bin/icons.cjs +1 -1
  5. package/bin/icons.js +22 -15
  6. package/dist/.storybook/main.d.ts +3 -0
  7. package/dist/.storybook/preview.d.ts +89 -0
  8. package/dist/components/VvAccordion/VvAccordion.es.js +192 -103
  9. package/dist/components/VvAccordion/VvAccordion.umd.js +1 -1
  10. package/dist/components/VvAccordionGroup/VvAccordionGroup.es.js +451 -172
  11. package/dist/components/VvAccordionGroup/VvAccordionGroup.umd.js +1 -1
  12. package/dist/components/VvAction/VvAction.es.js +78 -27
  13. package/dist/components/VvAction/VvAction.umd.js +1 -1
  14. package/dist/components/VvAlert/VvAlert.es.js +204 -171
  15. package/dist/components/VvAlert/VvAlert.umd.js +1 -1
  16. package/dist/components/VvAlertGroup/VvAlertGroup.es.js +250 -188
  17. package/dist/components/VvAlertGroup/VvAlertGroup.umd.js +1 -1
  18. package/dist/components/VvAvatar/VvAvatar.es.js +61 -21
  19. package/dist/components/VvAvatar/VvAvatar.umd.js +1 -1
  20. package/dist/components/VvAvatarGroup/VvAvatarGroup.es.js +118 -48
  21. package/dist/components/VvAvatarGroup/VvAvatarGroup.umd.js +1 -1
  22. package/dist/components/VvBadge/VvBadge.es.js +78 -28
  23. package/dist/components/VvBadge/VvBadge.umd.js +1 -1
  24. package/dist/components/VvBreadcrumb/VvBreadcrumb.es.js +276 -60
  25. package/dist/components/VvBreadcrumb/VvBreadcrumb.umd.js +1 -1
  26. package/dist/components/VvButton/VvButton.es.js +291 -252
  27. package/dist/components/VvButton/VvButton.umd.js +1 -1
  28. package/dist/components/VvButtonGroup/VvButtonGroup.es.js +81 -40
  29. package/dist/components/VvButtonGroup/VvButtonGroup.umd.js +1 -1
  30. package/dist/components/VvCard/VvCard.es.js +86 -36
  31. package/dist/components/VvCard/VvCard.umd.js +1 -1
  32. package/dist/components/VvCheckbox/VvCheckbox.es.js +177 -120
  33. package/dist/components/VvCheckbox/VvCheckbox.umd.js +1 -1
  34. package/dist/components/VvCheckboxGroup/VvCheckboxGroup.es.js +190 -107
  35. package/dist/components/VvCheckboxGroup/VvCheckboxGroup.umd.js +1 -1
  36. package/dist/components/VvCombobox/VvCombobox.es.js +806 -581
  37. package/dist/components/VvCombobox/VvCombobox.umd.js +1 -1
  38. package/dist/components/VvDialog/VvDialog.es.js +140 -153
  39. package/dist/components/VvDialog/VvDialog.umd.js +1 -1
  40. package/dist/components/VvDropdown/VvDropdown.es.js +138 -71
  41. package/dist/components/VvDropdown/VvDropdown.umd.js +1 -1
  42. package/dist/components/VvDropdownAction/VvDropdownAction.es.js +152 -39
  43. package/dist/components/VvDropdownAction/VvDropdownAction.umd.js +1 -1
  44. package/dist/components/VvDropdownItem/VvDropdownItem.es.js +335 -8
  45. package/dist/components/VvDropdownItem/VvDropdownItem.umd.js +1 -1
  46. package/dist/components/VvDropdownOptgroup/VvDropdownOptgroup.es.js +63 -20
  47. package/dist/components/VvDropdownOptgroup/VvDropdownOptgroup.umd.js +1 -1
  48. package/dist/components/VvDropdownOption/VvDropdownOption.es.js +188 -80
  49. package/dist/components/VvDropdownOption/VvDropdownOption.umd.js +1 -1
  50. package/dist/components/VvIcon/VvIcon.es.js +23 -96
  51. package/dist/components/VvIcon/VvIcon.umd.js +1 -1
  52. package/dist/components/VvInputFile/VvInputFile.es.js +1777 -0
  53. package/dist/components/VvInputFile/VvInputFile.umd.js +1 -0
  54. package/dist/components/VvInputText/VvInputText.es.js +1237 -324
  55. package/dist/components/VvInputText/VvInputText.umd.js +1 -1
  56. package/dist/components/VvNav/VvNav.es.js +135 -56
  57. package/dist/components/VvNav/VvNav.umd.js +1 -1
  58. package/dist/components/VvNavItem/VvNavItem.es.js +91 -33
  59. package/dist/components/VvNavItem/VvNavItem.umd.js +1 -1
  60. package/dist/components/VvProgress/VvProgress.es.js +72 -26
  61. package/dist/components/VvProgress/VvProgress.umd.js +1 -1
  62. package/dist/components/VvRadio/VvRadio.es.js +160 -103
  63. package/dist/components/VvRadio/VvRadio.umd.js +1 -1
  64. package/dist/components/VvRadioGroup/VvRadioGroup.es.js +190 -107
  65. package/dist/components/VvRadioGroup/VvRadioGroup.umd.js +1 -1
  66. package/dist/components/VvSelect/VvSelect.es.js +251 -238
  67. package/dist/components/VvSelect/VvSelect.umd.js +1 -1
  68. package/dist/components/VvTab/VvTab.es.js +191 -75
  69. package/dist/components/VvTab/VvTab.umd.js +1 -1
  70. package/dist/components/VvTextarea/VvTextarea.es.js +232 -224
  71. package/dist/components/VvTextarea/VvTextarea.umd.js +1 -1
  72. package/dist/components/VvTooltip/VvTooltip.es.js +79 -29
  73. package/dist/components/VvTooltip/VvTooltip.umd.js +1 -1
  74. package/dist/components/index.es.js +3534 -1650
  75. package/dist/components/index.umd.js +1 -1
  76. package/dist/composables/index.es.js +92 -3
  77. package/dist/composables/index.umd.js +1 -1
  78. package/dist/directives/index.es.js +99 -43
  79. package/dist/directives/index.umd.js +1 -1
  80. package/dist/directives/v-tooltip.es.js +97 -38
  81. package/dist/directives/v-tooltip.umd.js +1 -1
  82. package/dist/icons.es.js +267 -267
  83. package/dist/icons.umd.js +1 -1
  84. package/dist/index.es.js +90 -16
  85. package/dist/index.umd.js +1 -1
  86. package/dist/resolvers/unplugin.es.js +87 -10
  87. package/dist/resolvers/unplugin.umd.js +1 -1
  88. package/dist/src/components/VvAccordion/VvAccordion.vue.d.ts +194 -0
  89. package/dist/{components → src/components}/VvAccordion/index.d.ts +8 -9
  90. package/dist/src/components/VvAccordionGroup/VvAccordionGroup.vue.d.ts +92 -0
  91. package/dist/{components → src/components}/VvAccordionGroup/index.d.ts +14 -6
  92. package/dist/{components → src/components}/VvAction/VvAction.vue.d.ts +57 -22
  93. package/dist/{components → src/components}/VvAction/index.d.ts +25 -9
  94. package/dist/{components → src/components}/VvAlert/VvAlert.vue.d.ts +24 -14
  95. package/dist/{components → src/components}/VvAlert/index.d.ts +17 -9
  96. package/dist/{components → src/components}/VvAlertGroup/VvAlertGroup.vue.d.ts +16 -9
  97. package/dist/{components → src/components}/VvAlertGroup/index.d.ts +6 -14
  98. package/dist/src/components/VvAvatar/VvAvatar.vue.d.ts +23 -0
  99. package/dist/{components → src/components}/VvAvatar/index.d.ts +4 -1
  100. package/dist/{components → src/components}/VvAvatarGroup/VvAvatarGroup.vue.d.ts +10 -3
  101. package/dist/{components → src/components}/VvAvatarGroup/index.d.ts +4 -1
  102. package/dist/{components → src/components}/VvBadge/VvBadge.vue.d.ts +12 -4
  103. package/dist/src/components/VvBadge/index.d.ts +7 -0
  104. package/dist/src/components/VvBreadcrumb/VvBreadcrumb.vue.d.ts +38 -0
  105. package/dist/src/components/VvBreadcrumb/index.d.ts +8 -0
  106. package/dist/{components → src/components}/VvButton/VvButton.vue.d.ts +94 -40
  107. package/dist/{components → src/components}/VvButton/index.d.ts +51 -29
  108. package/dist/{components → src/components}/VvButtonGroup/VvButtonGroup.vue.d.ts +24 -11
  109. package/dist/{components → src/components}/VvButtonGroup/index.d.ts +8 -2
  110. package/dist/{components → src/components}/VvCard/VvCard.vue.d.ts +12 -4
  111. package/dist/src/components/VvCard/index.d.ts +7 -0
  112. package/dist/src/components/VvCheckbox/VvCheckbox.vue.d.ts +184 -0
  113. package/dist/{components → src/components}/VvCheckbox/index.d.ts +47 -14
  114. package/dist/{components → src/components}/VvCheckboxGroup/VvCheckboxGroup.vue.d.ts +101 -30
  115. package/dist/src/components/VvCheckboxGroup/index.d.ts +75 -0
  116. package/dist/{components → src/components}/VvCombobox/VvCombobox.vue.d.ts +171 -104
  117. package/dist/{components → src/components}/VvCombobox/index.d.ts +62 -26
  118. package/dist/{components → src/components}/VvDialog/VvDialog.vue.d.ts +4 -4
  119. package/dist/{components → src/components}/VvDropdown/VvDropdown.vue.d.ts +101 -75
  120. package/dist/src/components/VvDropdown/VvDropdownAction.vue.d.ts +114 -0
  121. package/dist/src/components/VvDropdown/VvDropdownItem.vue.d.ts +21 -0
  122. package/dist/src/components/VvDropdown/VvDropdownOptgroup.vue.d.ts +14 -0
  123. package/dist/{components → src/components}/VvDropdown/VvDropdownOption.vue.d.ts +35 -7
  124. package/dist/{components → src/components}/VvDropdown/index.d.ts +52 -10
  125. package/dist/src/components/VvIcon/VvIcon.vue.d.ts +26 -0
  126. package/dist/{components → src/components}/VvIcon/index.d.ts +33 -48
  127. package/dist/src/components/VvInputFile/VvInputFile.vue.d.ts +359 -0
  128. package/dist/src/components/VvInputFile/index.d.ts +200 -0
  129. package/dist/{components → src/components}/VvInputText/VvInputClearAction.d.ts +7 -5
  130. package/dist/{components → src/components}/VvInputText/VvInputPasswordAction.d.ts +10 -8
  131. package/dist/{components → src/components}/VvInputText/VvInputStepAction.d.ts +2 -2
  132. package/dist/{components → src/components}/VvInputText/VvInputText.vue.d.ts +207 -57
  133. package/dist/{components → src/components}/VvInputText/index.d.ts +99 -29
  134. package/dist/src/components/VvNav/VvNav.vue.d.ts +48 -0
  135. package/dist/{components → src/components}/VvNav/VvNavItem.vue.d.ts +1 -1
  136. package/dist/src/components/VvNav/VvNavSeparator.vue.d.ts +2 -0
  137. package/dist/src/components/VvNav/index.d.ts +11 -0
  138. package/dist/{components → src/components}/VvProgress/VvProgress.vue.d.ts +10 -3
  139. package/dist/{components → src/components}/VvProgress/index.d.ts +4 -1
  140. package/dist/src/components/VvRadio/VvRadio.vue.d.ts +176 -0
  141. package/dist/src/components/VvRadio/index.d.ts +80 -0
  142. package/dist/{components → src/components}/VvRadioGroup/VvRadioGroup.vue.d.ts +101 -30
  143. package/dist/src/components/VvRadioGroup/index.d.ts +75 -0
  144. package/dist/{components → src/components}/VvSelect/VvSelect.vue.d.ts +117 -44
  145. package/dist/{components → src/components}/VvSelect/index.d.ts +48 -14
  146. package/dist/src/components/VvTab/VvTab.vue.d.ts +63 -0
  147. package/dist/{components → src/components}/VvTab/index.d.ts +4 -1
  148. package/dist/{components → src/components}/VvTextarea/VvTextarea.vue.d.ts +156 -49
  149. package/dist/{components → src/components}/VvTextarea/index.d.ts +68 -19
  150. package/dist/src/components/VvTooltip/VvTooltip.vue.d.ts +36 -0
  151. package/dist/{components → src/components}/VvTooltip/index.d.ts +5 -2
  152. package/dist/{components → src/components}/common/HintSlot.d.ts +1 -1
  153. package/dist/{components → src/components}/index.d.ts +10 -0
  154. package/dist/src/composables/alert/useAlert.d.ts +122 -0
  155. package/dist/src/composables/alert/useInjectAlert.d.ts +4 -0
  156. package/dist/src/composables/dropdown/useInjectDropdown.d.ts +12 -0
  157. package/dist/{composables → src/composables}/dropdown/useProvideDropdown.d.ts +3 -4
  158. package/dist/src/composables/group/useInjectedGroupState.d.ts +9 -0
  159. package/dist/src/composables/group/useProvideGroupState.d.ts +6 -0
  160. package/dist/{composables → src/composables}/index.d.ts +1 -0
  161. package/dist/src/composables/useBlurhash.d.ts +7 -0
  162. package/dist/src/composables/useComponentIcon.d.ts +11 -0
  163. package/dist/src/composables/usePersistence.d.ts +2 -0
  164. package/dist/src/composables/useVolver.d.ts +1 -0
  165. package/dist/{constants.d.ts → src/constants.d.ts} +34 -32
  166. package/dist/src/directives/index.d.ts +3 -0
  167. package/dist/{index.d.ts → src/index.d.ts} +3 -1
  168. package/dist/{props → src/props}/index.d.ts +272 -81
  169. package/dist/{resolvers → src/resolvers}/unplugin.d.ts +6 -1
  170. package/dist/src/stories/AccordionGroup/AccordionGroup.stories.d.ts +188 -0
  171. package/dist/src/stories/AccordionGroup/AccordionGroupSlots.stories.d.ts +1262 -0
  172. package/dist/{stories → src/stories}/AlertGroup/AlertGroupWithComposable.stories.d.ts +1 -1
  173. package/dist/src/stories/Blurhash/BlurhashComposable.stories.d.ts +4 -0
  174. package/dist/{stories → src/stories}/Button/Button.settings.d.ts +0 -1
  175. package/dist/{stories → src/stories}/Combobox/Combobox.settings.d.ts +8 -0
  176. package/dist/{stories → src/stories}/Icon/Icon.settings.d.ts +1 -0
  177. package/dist/src/stories/InputFile/InputFile.settings.d.ts +56 -0
  178. package/dist/src/stories/InputFile/InputFile.stories.d.ts +12 -0
  179. package/dist/src/stories/InputFile/InputFileDropArea.stories.d.ts +9 -0
  180. package/dist/src/stories/InputFile/InputFileIconPosition.stories.d.ts +8 -0
  181. package/dist/src/stories/InputFile/InputFileSlots.stories.d.ts +7 -0
  182. package/dist/src/stories/Tab/Tab.settings.d.ts +4 -0
  183. package/dist/{test → src/test}/expect.d.ts +1 -1
  184. package/dist/src/types/alert.d.ts +15 -0
  185. package/dist/src/types/blurhash.d.ts +12 -0
  186. package/dist/{types → src/types}/generic.d.ts +1 -2
  187. package/dist/src/types/group.d.ts +59 -0
  188. package/dist/src/types/index.d.ts +7 -0
  189. package/dist/src/types/input-file.d.ts +16 -0
  190. package/dist/{types → src/types}/nav.d.ts +2 -2
  191. package/dist/{utils → src/utils}/ObjectUtilities.d.ts +0 -1
  192. package/dist/src/workers/blurhash.d.ts +1 -0
  193. package/package.json +78 -78
  194. package/src/Volver.ts +31 -20
  195. package/src/assets/icons/detailed.json +1 -1
  196. package/src/assets/icons/normal.json +1 -1
  197. package/src/assets/icons/simple.json +1 -1
  198. package/src/components/VvAccordion/VvAccordion.vue +121 -58
  199. package/src/components/VvAccordion/index.ts +8 -23
  200. package/src/components/VvAccordionGroup/VvAccordionGroup.vue +164 -47
  201. package/src/components/VvAccordionGroup/index.ts +6 -6
  202. package/src/components/VvAction/VvAction.vue +17 -5
  203. package/src/components/VvAlert/index.ts +14 -9
  204. package/src/components/VvAlertGroup/index.ts +3 -15
  205. package/src/components/VvBreadcrumb/VvBreadcrumb.vue +20 -19
  206. package/src/components/VvBreadcrumb/index.ts +2 -8
  207. package/src/components/VvButton/VvButton.vue +17 -7
  208. package/src/components/VvButton/index.ts +9 -16
  209. package/src/components/VvButtonGroup/VvButtonGroup.vue +1 -2
  210. package/src/components/VvCheckbox/index.ts +2 -2
  211. package/src/components/VvCheckboxGroup/VvCheckboxGroup.vue +1 -2
  212. package/src/components/VvCombobox/VvCombobox.vue +15 -12
  213. package/src/components/VvCombobox/index.ts +4 -0
  214. package/src/components/VvDropdown/VvDropdown.vue +11 -2
  215. package/src/components/VvDropdown/VvDropdownItem.vue +4 -1
  216. package/src/components/VvDropdown/VvDropdownOption.vue +4 -21
  217. package/src/components/VvDropdown/index.ts +35 -1
  218. package/src/components/VvIcon/VvIcon.vue +2 -2
  219. package/src/components/VvIcon/index.ts +35 -48
  220. package/src/components/VvInputFile/VvInputFile.vue +395 -0
  221. package/src/components/VvInputFile/index.ts +135 -0
  222. package/src/components/VvInputText/VvInputClearAction.ts +10 -6
  223. package/src/components/VvInputText/VvInputPasswordAction.ts +13 -9
  224. package/src/components/VvInputText/VvInputText.vue +141 -33
  225. package/src/components/VvInputText/index.ts +31 -16
  226. package/src/components/VvNav/VvNav.vue +4 -2
  227. package/src/components/VvRadio/index.ts +5 -5
  228. package/src/components/VvRadioGroup/VvRadioGroup.vue +1 -2
  229. package/src/components/VvSelect/VvSelect.vue +5 -8
  230. package/src/components/VvTab/VvTab.vue +5 -1
  231. package/src/components/VvTextarea/VvTextarea.vue +6 -9
  232. package/src/components/index.ts +10 -0
  233. package/src/composables/alert/useAlert.ts +12 -9
  234. package/src/composables/dropdown/useProvideDropdown.ts +4 -4
  235. package/src/composables/group/useInjectedGroupState.ts +20 -16
  236. package/src/composables/group/useProvideGroupState.ts +10 -15
  237. package/src/composables/index.ts +1 -0
  238. package/src/composables/useBlurhash.ts +76 -0
  239. package/src/composables/useComponentIcon.ts +15 -14
  240. package/src/composables/usePersistence.ts +76 -0
  241. package/src/composables/useUniqueId.ts +2 -2
  242. package/src/constants.ts +47 -32
  243. package/src/directives/index.ts +3 -6
  244. package/src/directives/v-tooltip.ts +19 -10
  245. package/src/index.ts +3 -1
  246. package/src/props/index.ts +108 -31
  247. package/src/resolvers/unplugin.ts +24 -14
  248. package/src/stories/Accordion/Accordion.test.ts +1 -1
  249. package/src/stories/AccordionGroup/AccordionGroup.settings.ts +2 -2
  250. package/src/stories/AccordionGroup/AccordionGroup.test.ts +17 -11
  251. package/src/stories/AccordionGroup/AccordionGroupSlots.stories.ts +1 -1
  252. package/src/stories/Alert/Alert.test.ts +1 -1
  253. package/src/stories/AlertGroup/AlertGroup.test.ts +1 -1
  254. package/src/stories/AlertGroup/AlertGroupWithComposable.stories.ts +2 -2
  255. package/src/stories/Avatar/Avatar.test.ts +1 -1
  256. package/src/stories/AvatarGroup/AvatarGroup.test.ts +1 -1
  257. package/src/stories/Badge/Badge.test.ts +1 -1
  258. package/src/stories/Blurhash/BlurhashComposable.stories.ts +195 -0
  259. package/src/stories/Button/Button.settings.ts +1 -4
  260. package/src/stories/Button/Button.test.ts +1 -1
  261. package/src/stories/ButtonGroup/ButtonGroup.test.ts +1 -1
  262. package/src/stories/Card/Card.test.ts +1 -1
  263. package/src/stories/Checkbox/Checkbox.test.ts +1 -1
  264. package/src/stories/CheckboxGroup/CheckboxGroup.test.ts +1 -1
  265. package/src/stories/Combobox/Combobox.settings.ts +8 -0
  266. package/src/stories/Combobox/Combobox.test.ts +1 -1
  267. package/src/stories/Dialog/Dialog.test.ts +2 -2
  268. package/src/stories/Dropdown/Dropdown.test.ts +1 -1
  269. package/src/stories/Icon/Icon.settings.ts +3 -3
  270. package/src/stories/InputFile/InputFile.settings.ts +36 -0
  271. package/src/stories/InputFile/InputFile.stories.ts +89 -0
  272. package/src/stories/InputFile/InputFileDropArea.stories.ts +56 -0
  273. package/src/stories/InputFile/InputFileIconPosition.stories.ts +43 -0
  274. package/src/stories/InputFile/InputFileSlots.stories.ts +33 -0
  275. package/src/stories/InputText/InputText.test.ts +1 -1
  276. package/src/stories/Nav/Nav.test.ts +1 -1
  277. package/src/stories/Progress/Progress.test.ts +1 -1
  278. package/src/stories/Radio/Radio.test.ts +1 -1
  279. package/src/stories/RadioGroup/RadioGroup.test.ts +1 -1
  280. package/src/stories/Select/Select.test.ts +1 -1
  281. package/src/stories/Tab/Tab.settings.ts +2 -2
  282. package/src/stories/Tab/Tab.test.ts +1 -1
  283. package/src/stories/Textarea/Textarea.test.ts +1 -1
  284. package/src/stories/Tooltip/Tooltip.test.ts +1 -1
  285. package/src/stories/argTypes.ts +1 -1
  286. package/src/test/expect.ts +2 -4
  287. package/src/types/alert.ts +11 -7
  288. package/src/types/blurhash.ts +21 -0
  289. package/src/types/generic.ts +3 -3
  290. package/src/types/group.ts +22 -14
  291. package/src/types/index.ts +7 -0
  292. package/src/types/input-file.ts +18 -0
  293. package/src/types/nav.ts +2 -3
  294. package/src/utils/ObjectUtilities.ts +0 -11
  295. package/src/workers/blurhash.ts +9 -0
  296. package/dist/components/VvAccordion/VvAccordion.vue.d.ts +0 -42
  297. package/dist/components/VvAccordionGroup/VvAccordionGroup.vue.d.ts +0 -47
  298. package/dist/components/VvAvatar/VvAvatar.vue.d.ts +0 -15
  299. package/dist/components/VvBadge/index.d.ts +0 -4
  300. package/dist/components/VvBreadcrumb/VvBreadcrumb.vue.d.ts +0 -18
  301. package/dist/components/VvBreadcrumb/index.d.ts +0 -12
  302. package/dist/components/VvCard/index.d.ts +0 -4
  303. package/dist/components/VvCheckbox/VvCheckbox.vue.d.ts +0 -112
  304. package/dist/components/VvCheckboxGroup/index.d.ts +0 -42
  305. package/dist/components/VvDropdown/VvDropdownAction.vue.d.ts +0 -73
  306. package/dist/components/VvDropdown/VvDropdownItem.vue.d.ts +0 -9
  307. package/dist/components/VvDropdown/VvDropdownOptgroup.vue.d.ts +0 -6
  308. package/dist/components/VvIcon/VvIcon.vue.d.ts +0 -69
  309. package/dist/components/VvNav/VvNav.vue.d.ts +0 -25
  310. package/dist/components/VvNav/VvNavSeparator.vue.d.ts +0 -2
  311. package/dist/components/VvNav/index.d.ts +0 -8
  312. package/dist/components/VvRadio/VvRadio.vue.d.ts +0 -104
  313. package/dist/components/VvRadio/index.d.ts +0 -47
  314. package/dist/components/VvRadioGroup/index.d.ts +0 -42
  315. package/dist/components/VvTab/VvTab.vue.d.ts +0 -39
  316. package/dist/components/VvTooltip/VvTooltip.vue.d.ts +0 -29
  317. package/dist/composables/alert/useAlert.d.ts +0 -27
  318. package/dist/composables/alert/useInjectAlert.d.ts +0 -9
  319. package/dist/composables/dropdown/useInjectDropdown.d.ts +0 -32
  320. package/dist/composables/group/useInjectedGroupState.d.ts +0 -10
  321. package/dist/composables/group/useProvideGroupState.d.ts +0 -6
  322. package/dist/composables/useComponentIcon.d.ts +0 -10
  323. package/dist/composables/useVolver.d.ts +0 -1
  324. package/dist/directives/index.d.ts +0 -5
  325. package/dist/stories/AccordionGroup/AccordionGroup.stories.d.ts +0 -134
  326. package/dist/stories/AccordionGroup/AccordionGroupSlots.stories.d.ts +0 -679
  327. package/dist/stories/Tab/Tab.settings.d.ts +0 -17
  328. package/dist/types/alert.d.ts +0 -13
  329. package/dist/types/group.d.ts +0 -37
  330. package/dist/{Volver.d.ts → src/Volver.d.ts} +1 -1
  331. /package/dist/{components → src/components}/VvDialog/index.d.ts +0 -0
  332. /package/dist/{components → src/components}/VvInputText/VvInputTextActions.d.ts +0 -0
  333. /package/dist/{composables → src/composables}/alert/useProvideAlert.d.ts +0 -0
  334. /package/dist/{composables → src/composables}/useComponentFocus.d.ts +0 -0
  335. /package/dist/{composables → src/composables}/useDebouncedInput.d.ts +0 -0
  336. /package/dist/{composables → src/composables}/useDefaults.d.ts +0 -0
  337. /package/dist/{composables → src/composables}/useModifiers.d.ts +0 -0
  338. /package/dist/{composables → src/composables}/useOptions.d.ts +0 -0
  339. /package/dist/{composables → src/composables}/useTextCount.d.ts +0 -0
  340. /package/dist/{composables → src/composables}/useUniqueId.d.ts +0 -0
  341. /package/dist/{directives → src/directives}/v-contextmenu.d.ts +0 -0
  342. /package/dist/{directives → src/directives}/v-tooltip.d.ts +0 -0
  343. /package/dist/{icons.d.ts → src/icons.d.ts} +0 -0
  344. /package/dist/{stories → src/stories}/Accordion/Accordion.settings.d.ts +0 -0
  345. /package/dist/{stories → src/stories}/Accordion/Accordion.stories.d.ts +0 -0
  346. /package/dist/{stories → src/stories}/Accordion/Accordion.test.d.ts +0 -0
  347. /package/dist/{stories → src/stories}/Accordion/AccordionSlots.stories.d.ts +0 -0
  348. /package/dist/{stories → src/stories}/AccordionGroup/AccordionGroup.settings.d.ts +0 -0
  349. /package/dist/{stories → src/stories}/AccordionGroup/AccordionGroup.test.d.ts +0 -0
  350. /package/dist/{stories → src/stories}/Alert/Alert.settings.d.ts +0 -0
  351. /package/dist/{stories → src/stories}/Alert/Alert.stories.d.ts +0 -0
  352. /package/dist/{stories → src/stories}/Alert/Alert.test.d.ts +0 -0
  353. /package/dist/{stories → src/stories}/Alert/AlertModifiers.stories.d.ts +0 -0
  354. /package/dist/{stories → src/stories}/Alert/AlertSlots.stories.d.ts +0 -0
  355. /package/dist/{stories → src/stories}/AlertGroup/AlertGroup.settings.d.ts +0 -0
  356. /package/dist/{stories → src/stories}/AlertGroup/AlertGroup.stories.d.ts +0 -0
  357. /package/dist/{stories → src/stories}/AlertGroup/AlertGroup.test.d.ts +0 -0
  358. /package/dist/{stories → src/stories}/AlertGroup/AlertGroupPosition.stories.d.ts +0 -0
  359. /package/dist/{stories → src/stories}/AlertGroup/AlertGroupSlots.stories.d.ts +0 -0
  360. /package/dist/{stories → src/stories}/Avatar/Avatar.settings.d.ts +0 -0
  361. /package/dist/{stories → src/stories}/Avatar/Avatar.stories.d.ts +0 -0
  362. /package/dist/{stories → src/stories}/Avatar/Avatar.test.d.ts +0 -0
  363. /package/dist/{stories → src/stories}/Avatar/AvatarBadge.stories.d.ts +0 -0
  364. /package/dist/{stories → src/stories}/Avatar/AvatarModifiers.stories.d.ts +0 -0
  365. /package/dist/{stories → src/stories}/Avatar/AvatarSlots.stories.d.ts +0 -0
  366. /package/dist/{stories → src/stories}/AvatarGroup/AvatarGroup.settings.d.ts +0 -0
  367. /package/dist/{stories → src/stories}/AvatarGroup/AvatarGroup.stories.d.ts +0 -0
  368. /package/dist/{stories → src/stories}/AvatarGroup/AvatarGroup.test.d.ts +0 -0
  369. /package/dist/{stories → src/stories}/AvatarGroup/AvatarGroupModifiers.stories.d.ts +0 -0
  370. /package/dist/{stories → src/stories}/AvatarGroup/AvatarGroupSlotDefault.stories.d.ts +0 -0
  371. /package/dist/{stories → src/stories}/Badge/Badge.settings.d.ts +0 -0
  372. /package/dist/{stories → src/stories}/Badge/Badge.stories.d.ts +0 -0
  373. /package/dist/{stories → src/stories}/Badge/Badge.test.d.ts +0 -0
  374. /package/dist/{stories → src/stories}/Badge/BadgeSlots.stories.d.ts +0 -0
  375. /package/dist/{stories → src/stories}/Breadcrumb/Breadcrumb.settings.d.ts +0 -0
  376. /package/dist/{stories → src/stories}/Breadcrumb/Breadcrumb.stories.d.ts +0 -0
  377. /package/dist/{stories → src/stories}/Breadcrumb/Breadcrumb.test.d.ts +0 -0
  378. /package/dist/{stories → src/stories}/Breadcrumb/BreadcrumbSlots.stories.d.ts +0 -0
  379. /package/dist/{stories → src/stories}/Button/Button.stories.d.ts +0 -0
  380. /package/dist/{stories → src/stories}/Button/Button.test.d.ts +0 -0
  381. /package/dist/{stories → src/stories}/Button/ButtonIcon.stories.d.ts +0 -0
  382. /package/dist/{stories → src/stories}/Button/ButtonLink.stories.d.ts +0 -0
  383. /package/dist/{stories → src/stories}/Button/ButtonLoading.stories.d.ts +0 -0
  384. /package/dist/{stories → src/stories}/Button/ButtonModifiers.stories.d.ts +0 -0
  385. /package/dist/{stories → src/stories}/Button/ButtonSlots.stories.d.ts +0 -0
  386. /package/dist/{stories → src/stories}/Button/ButtonState.stories.d.ts +0 -0
  387. /package/dist/{stories → src/stories}/Button/ButtonToggle.stories.d.ts +0 -0
  388. /package/dist/{stories → src/stories}/ButtonGroup/ButtonGroup.settings.d.ts +0 -0
  389. /package/dist/{stories → src/stories}/ButtonGroup/ButtonGroup.stories.d.ts +0 -0
  390. /package/dist/{stories → src/stories}/ButtonGroup/ButtonGroup.test.d.ts +0 -0
  391. /package/dist/{stories → src/stories}/ButtonGroup/ButtonGroupModifiers.stories.d.ts +0 -0
  392. /package/dist/{stories → src/stories}/ButtonGroup/ButtonGroupSlots.stories.d.ts +0 -0
  393. /package/dist/{stories → src/stories}/ButtonGroup/ButtonGroupToggle.stories.d.ts +0 -0
  394. /package/dist/{stories → src/stories}/Card/Card.settings.d.ts +0 -0
  395. /package/dist/{stories → src/stories}/Card/Card.stories.d.ts +0 -0
  396. /package/dist/{stories → src/stories}/Card/Card.test.d.ts +0 -0
  397. /package/dist/{stories → src/stories}/Card/CardSlots.stories.d.ts +0 -0
  398. /package/dist/{stories → src/stories}/Checkbox/Checkbox.settings.d.ts +0 -0
  399. /package/dist/{stories → src/stories}/Checkbox/Checkbox.stories.d.ts +0 -0
  400. /package/dist/{stories → src/stories}/Checkbox/Checkbox.test.d.ts +0 -0
  401. /package/dist/{stories → src/stories}/Checkbox/CheckboxBinary.stories.d.ts +0 -0
  402. /package/dist/{stories → src/stories}/Checkbox/CheckboxSlots.stories.d.ts +0 -0
  403. /package/dist/{stories → src/stories}/CheckboxGroup/CheckboxGroup.settings.d.ts +0 -0
  404. /package/dist/{stories → src/stories}/CheckboxGroup/CheckboxGroup.stories.d.ts +0 -0
  405. /package/dist/{stories → src/stories}/CheckboxGroup/CheckboxGroup.test.d.ts +0 -0
  406. /package/dist/{stories → src/stories}/CheckboxGroup/CheckboxGroupOptions.stories.d.ts +0 -0
  407. /package/dist/{stories → src/stories}/CheckboxGroup/CheckboxGroupSlots.stories.d.ts +0 -0
  408. /package/dist/{stories → src/stories}/Combobox/Combobox.stories.d.ts +0 -0
  409. /package/dist/{stories → src/stories}/Combobox/Combobox.test.d.ts +0 -0
  410. /package/dist/{stories → src/stories}/Combobox/ComboboxIconPosition.stories.d.ts +0 -0
  411. /package/dist/{stories → src/stories}/Combobox/ComboboxMultiple.stories.d.ts +0 -0
  412. /package/dist/{stories → src/stories}/Combobox/ComboboxOptions.stories.d.ts +0 -0
  413. /package/dist/{stories → src/stories}/Combobox/ComboboxSlots.stories.d.ts +0 -0
  414. /package/dist/{stories → src/stories}/Dialog/Dialog.settings.d.ts +0 -0
  415. /package/dist/{stories → src/stories}/Dialog/Dialog.stories.d.ts +0 -0
  416. /package/dist/{stories → src/stories}/Dialog/Dialog.test.d.ts +0 -0
  417. /package/dist/{stories → src/stories}/Dialog/DialogSlots.stories.d.ts +0 -0
  418. /package/dist/{stories → src/stories}/Dropdown/Dropdown.settings.d.ts +0 -0
  419. /package/dist/{stories → src/stories}/Dropdown/Dropdown.stories.d.ts +0 -0
  420. /package/dist/{stories → src/stories}/Dropdown/Dropdown.test.d.ts +0 -0
  421. /package/dist/{stories → src/stories}/Dropdown/DropdownContextmenuDirective.stories.d.ts +0 -0
  422. /package/dist/{stories → src/stories}/Dropdown/DropdownMultilevel.stories.d.ts +0 -0
  423. /package/dist/{stories → src/stories}/Dropdown/DropdownSlots.stories.d.ts +0 -0
  424. /package/dist/{stories → src/stories}/Icon/Icon.stories.d.ts +0 -0
  425. /package/dist/{stories → src/stories}/Icon/IconsCollection.stories.d.ts +0 -0
  426. /package/dist/{stories → src/stories}/InputText/InputText.settings.d.ts +0 -0
  427. /package/dist/{stories → src/stories}/InputText/InputText.stories.d.ts +0 -0
  428. /package/dist/{stories → src/stories}/InputText/InputText.test.d.ts +0 -0
  429. /package/dist/{stories → src/stories}/InputText/InputTextIconPosition.stories.d.ts +0 -0
  430. /package/dist/{stories → src/stories}/InputText/InputTextLength.stories.d.ts +0 -0
  431. /package/dist/{stories → src/stories}/InputText/InputTextMask.stories.d.ts +0 -0
  432. /package/dist/{stories → src/stories}/InputText/InputTextMinMax.stories.d.ts +0 -0
  433. /package/dist/{stories → src/stories}/InputText/InputTextSlots.stories.d.ts +0 -0
  434. /package/dist/{stories → src/stories}/InputText/InputTextType.stories.d.ts +0 -0
  435. /package/dist/{stories → src/stories}/Nav/Nav.settings.d.ts +0 -0
  436. /package/dist/{stories → src/stories}/Nav/Nav.stories.d.ts +0 -0
  437. /package/dist/{stories → src/stories}/Nav/Nav.test.d.ts +0 -0
  438. /package/dist/{stories → src/stories}/Nav/NavModifiers.stories.d.ts +0 -0
  439. /package/dist/{stories → src/stories}/Progress/Progress.settings.d.ts +0 -0
  440. /package/dist/{stories → src/stories}/Progress/Progress.stories.d.ts +0 -0
  441. /package/dist/{stories → src/stories}/Progress/Progress.test.d.ts +0 -0
  442. /package/dist/{stories → src/stories}/Radio/Radio.settings.d.ts +0 -0
  443. /package/dist/{stories → src/stories}/Radio/Radio.stories.d.ts +0 -0
  444. /package/dist/{stories → src/stories}/Radio/Radio.test.d.ts +0 -0
  445. /package/dist/{stories → src/stories}/Radio/RadioSlots.stories.d.ts +0 -0
  446. /package/dist/{stories → src/stories}/RadioGroup/RadioGroup.settings.d.ts +0 -0
  447. /package/dist/{stories → src/stories}/RadioGroup/RadioGroup.stories.d.ts +0 -0
  448. /package/dist/{stories → src/stories}/RadioGroup/RadioGroup.test.d.ts +0 -0
  449. /package/dist/{stories → src/stories}/RadioGroup/RadioGroupOptions.stories.d.ts +0 -0
  450. /package/dist/{stories → src/stories}/RadioGroup/RadioGroupSlots.stories.d.ts +0 -0
  451. /package/dist/{stories → src/stories}/Select/Select.settings.d.ts +0 -0
  452. /package/dist/{stories → src/stories}/Select/Select.stories.d.ts +0 -0
  453. /package/dist/{stories → src/stories}/Select/Select.test.d.ts +0 -0
  454. /package/dist/{stories → src/stories}/Select/SelectIconPosition.stories.d.ts +0 -0
  455. /package/dist/{stories → src/stories}/Select/SelectOptions.stories.d.ts +0 -0
  456. /package/dist/{stories → src/stories}/Select/SelectSlots.stories.d.ts +0 -0
  457. /package/dist/{stories → src/stories}/Tab/Tab.stories.d.ts +0 -0
  458. /package/dist/{stories → src/stories}/Tab/Tab.test.d.ts +0 -0
  459. /package/dist/{stories → src/stories}/Textarea/Textarea.settings.d.ts +0 -0
  460. /package/dist/{stories → src/stories}/Textarea/Textarea.stories.d.ts +0 -0
  461. /package/dist/{stories → src/stories}/Textarea/Textarea.test.d.ts +0 -0
  462. /package/dist/{stories → src/stories}/Textarea/TextareaLength.stories.d.ts +0 -0
  463. /package/dist/{stories → src/stories}/Textarea/TextareaSlots.stories.d.ts +0 -0
  464. /package/dist/{stories → src/stories}/Textarea/TextareatIconPosition.stories.d.ts +0 -0
  465. /package/dist/{stories → src/stories}/Tooltip/Tooltip.settings.d.ts +0 -0
  466. /package/dist/{stories → src/stories}/Tooltip/Tooltip.stories.d.ts +0 -0
  467. /package/dist/{stories → src/stories}/Tooltip/Tooltip.test.d.ts +0 -0
  468. /package/dist/{stories → src/stories}/Tooltip/TooltipDirective.stories.d.ts +0 -0
  469. /package/dist/{stories → src/stories}/argTypes.d.ts +0 -0
  470. /package/dist/{test → src/test}/options.d.ts +0 -0
  471. /package/dist/{test → src/test}/sleep.d.ts +0 -0
  472. /package/dist/{types → src/types}/floating-ui.d.ts +0 -0
@@ -5,72 +5,121 @@
5
5
  </script>
6
6
 
7
7
  <script setup lang="ts">
8
- import { nanoid } from 'nanoid'
8
+ import { uid } from 'uid'
9
9
  import { VvAccordionEvents, VvAccordionProps, useGroupProps } from '.'
10
10
 
11
11
  // props, attrs and emit
12
12
  const props = defineProps(VvAccordionProps)
13
13
  const attrs = useAttrs()
14
14
  const emit = defineEmits(VvAccordionEvents)
15
+ const modelValue = useVModel(props, 'modelValue', emit)
15
16
 
16
17
  // data
17
18
  const accordionName = computed(
18
- () => props.name || (attrs?.id as string) || nanoid(),
19
+ () => props.name || (attrs?.id as string) || uid(),
19
20
  )
20
- const {
21
- modifiers,
22
- title,
23
- content,
24
- disabled,
25
- collapse,
21
+ const { title, content, not } = toRefs(props)
22
+ const { isInGroup, modifiers, disabled, bus } = useGroupProps(props)
23
+
24
+ // state
25
+ const isExpanded = ref(false)
26
+ watch(
26
27
  modelValue,
27
- isInGroup,
28
- not,
29
- } = useGroupProps(props, emit)
30
- const localModelValue = ref(false)
31
- const isOpen = computed({
32
- get: () => {
33
- let toReturn = modelValue.value as boolean
34
- if (isInGroup.value) {
35
- if (collapse.value && Array.isArray(modelValue.value)) {
36
- toReturn = modelValue.value.includes(accordionName.value)
37
- } else {
38
- toReturn = modelValue.value === accordionName.value
39
- }
40
- } else if (modelValue.value === undefined) {
41
- // localModelValue is used when the accordion is not in a group
42
- toReturn = localModelValue.value
28
+ (newValue) => {
29
+ if (typeof newValue === 'boolean') {
30
+ isExpanded.value = not.value ? !newValue : newValue
43
31
  }
44
- return not.value ? !toReturn : toReturn
45
32
  },
46
- set: (newValue) => {
47
- if (not.value) {
48
- newValue = !newValue
49
- }
50
- if (isInGroup.value) {
51
- if (collapse.value && Array.isArray(modelValue.value)) {
52
- if (newValue) {
53
- modelValue.value.push(accordionName.value)
54
- return
55
- }
56
- modelValue.value = modelValue.value.filter(
57
- (name: string) => name !== accordionName.value,
58
- )
59
- return
33
+ { immediate: true },
34
+ )
35
+ watch(isExpanded, (newValue) => {
36
+ modelValue.value = not.value ? !newValue : newValue
37
+ })
38
+ bus?.on('toggle', ({ name, value }) => {
39
+ if (name !== accordionName.value) {
40
+ return
41
+ }
42
+ isExpanded.value = value
43
+ })
44
+ const onClick = () => {
45
+ if (disabled.value) {
46
+ return
47
+ }
48
+ if (isInGroup.value) {
49
+ bus?.emit('toggle', {
50
+ name: accordionName.value,
51
+ value: !isExpanded.value,
52
+ })
53
+ return
54
+ }
55
+ isExpanded.value = !isExpanded.value
56
+ }
57
+
58
+ // register / unregister
59
+ watch(
60
+ accordionName,
61
+ (newValue, oldValue) => {
62
+ if (bus) {
63
+ if (oldValue && oldValue !== newValue) {
64
+ bus.emit('unregister', { name: oldValue })
60
65
  }
61
- modelValue.value = newValue ? accordionName.value : null
62
- return
63
- }
64
- // localModelValue is used when the accordion is not in a group
65
- if (
66
- modelValue.value === undefined &&
67
- typeof newValue === 'boolean'
68
- ) {
69
- localModelValue.value = newValue
70
- return
66
+ bus.emit('register', { name: newValue })
71
67
  }
72
- modelValue.value = newValue
73
68
  },
69
+ {
70
+ immediate: true,
71
+ },
72
+ )
73
+ onBeforeUnmount(() => {
74
+ if (bus) {
75
+ bus.emit('unregister', { name: accordionName.value })
76
+ }
77
+ })
78
+
79
+ // methods
80
+ const expand = () => {
81
+ if (isExpanded.value) {
82
+ return
83
+ }
84
+ onClick()
85
+ }
86
+
87
+ const collapse = () => {
88
+ if (!isExpanded.value) {
89
+ return
90
+ }
91
+ onClick()
92
+ }
93
+
94
+ const groupExpand = (name?: string | string[]) => {
95
+ if (!bus) {
96
+ // eslint-disable-next-line no-console
97
+ console.warn(
98
+ `[VvAccordion]: You are trying to expand accordion group of "${accordionName.value}" but it is not in a group`,
99
+ )
100
+ return
101
+ }
102
+ bus.emit('expand', { name })
103
+ }
104
+
105
+ const groupCollapse = (name?: string | string[]) => {
106
+ if (!bus) {
107
+ // eslint-disable-next-line no-console
108
+ console.warn(
109
+ `[VvAccordion]: You are trying to collapse accordion group of "${accordionName.value}" but it is not in a group`,
110
+ )
111
+ return
112
+ }
113
+ bus?.emit('collapse', { name })
114
+ }
115
+
116
+ // expose
117
+ defineExpose({
118
+ isExpanded,
119
+ expand,
120
+ collapse,
121
+ groupExpand,
122
+ groupCollapse,
74
123
  })
75
124
 
76
125
  // styles
@@ -81,27 +130,41 @@
81
130
  disabled: disabled.value,
82
131
  })),
83
132
  )
84
-
85
- // methods
86
- const onClick = useToggle(isOpen)
87
133
  </script>
88
134
 
89
135
  <template>
90
- <details :id="accordionName" :class="bemCssClasses" :open="isOpen">
136
+ <details :id="accordionName" :class="bemCssClasses" :open="isExpanded">
91
137
  <summary
92
138
  :aria-controls="accordionName"
93
- :aria-expanded="isOpen"
139
+ :aria-expanded="isExpanded"
94
140
  class="vv-accordion__summary"
95
141
  @click.prevent="onClick()"
96
142
  >
97
143
  <!-- @slot Slot for title -->
98
- <slot name="summary" v-bind="{ open: isOpen }">
144
+ <slot
145
+ name="summary"
146
+ v-bind="{
147
+ isExpanded,
148
+ expand,
149
+ collapse,
150
+ groupExpand,
151
+ groupCollapse,
152
+ }"
153
+ >
99
154
  {{ title }}
100
155
  </slot>
101
156
  </summary>
102
- <div :aria-hidden="!isOpen" class="vv-accordion__content">
157
+ <div :aria-hidden="!isExpanded" class="vv-accordion__content">
103
158
  <!-- @slot Slot for content -->
104
- <slot name="default" v-bind="{ open: isOpen }">
159
+ <slot
160
+ v-bind="{
161
+ isExpanded,
162
+ expand,
163
+ collapse,
164
+ groupExpand,
165
+ groupCollapse,
166
+ }"
167
+ >
105
168
  {{ content }}
106
169
  </slot>
107
170
  </div>
@@ -1,4 +1,4 @@
1
- import type { ExtractPropTypes, Ref } from 'vue'
1
+ import type { ExtractPropTypes } from 'vue'
2
2
  import type { AccordionGroupState } from '../../types/group'
3
3
  import { INJECTION_KEY_ACCORDION_GROUP } from '../../constants'
4
4
  import { ModifiersProps } from '@/props'
@@ -40,29 +40,19 @@ export type VvAccordionPropsTypes = ExtractPropTypes<typeof VvAccordionProps>
40
40
  /**
41
41
  * Merges local and group props
42
42
  */
43
- export function useGroupProps(
44
- props: VvAccordionPropsTypes,
45
- emit: (event: string, value: unknown) => void,
46
- ) {
47
- const { group, isInGroup, getGroupOrLocalRef } =
48
- useInjectedGroupState<AccordionGroupState>(
49
- INJECTION_KEY_ACCORDION_GROUP,
50
- )
51
-
52
- // local props
53
- const { title, content } = toRefs(props)
43
+ export function useGroupProps(props: VvAccordionPropsTypes) {
44
+ const { group, isInGroup } = useInjectedGroupState<AccordionGroupState>(
45
+ INJECTION_KEY_ACCORDION_GROUP,
46
+ )
54
47
 
55
48
  // group props
56
- const modelValue = getGroupOrLocalRef('modelValue', props, emit)
57
- const not = getGroupOrLocalRef('not', props) as Ref<boolean>
58
- const collapse = getGroupOrLocalRef('collapse', props) as Ref<boolean>
59
49
  const disabled = computed(() =>
60
- Boolean(props.disabled || group?.value?.disabled.value),
50
+ Boolean(props.disabled || group?.disabled.value),
61
51
  )
62
52
  // merge local and group modifiers
63
53
  const modifiers = computed(() => {
64
54
  let localModifiers = props.modifiers
65
- let groupModifiers = group?.value.modifiers.value
55
+ let groupModifiers = group?.modifiers.value
66
56
 
67
57
  const toReturn = new Set<string>()
68
58
  if (localModifiers) {
@@ -82,15 +72,10 @@ export function useGroupProps(
82
72
 
83
73
  return {
84
74
  // group props
85
- modelValue,
86
- not,
87
75
  isInGroup,
88
76
  group,
89
- collapse,
90
77
  modifiers,
91
78
  disabled,
92
- // local props
93
- title,
94
- content,
79
+ bus: group?.bus,
95
80
  }
96
81
  }
@@ -5,78 +5,183 @@
5
5
  </script>
6
6
 
7
7
  <script setup lang="ts">
8
- import type { Ref } from 'vue'
9
- import type { AccordionGroupState } from '../../types/group'
8
+ import mitt from 'mitt'
9
+ import type {
10
+ AccordionGroupState,
11
+ AccordionGroupBusEvents,
12
+ } from '../../types/group'
10
13
  import { INJECTION_KEY_ACCORDION_GROUP } from '../../constants'
11
14
  import VvAccordion from '../VvAccordion/VvAccordion.vue'
12
15
  import { VvAccordionGroupProps, VvAccordionGroupEvents } from '.'
13
16
 
14
17
  // props and emit
15
18
  const props = defineProps(VvAccordionGroupProps)
19
+ // eslint-disable-next-line
16
20
  const emit = defineEmits(VvAccordionGroupEvents)
17
21
 
18
22
  // data
19
- const { disabled, collapse, modifiers, itemModifiers, items, not } =
20
- toRefs(props)
23
+ const {
24
+ disabled,
25
+ modifiers,
26
+ itemModifiers,
27
+ items,
28
+ storageKey,
29
+ storageType,
30
+ } = toRefs(props)
21
31
  watchEffect(() => {
22
- if (typeof props.modelValue === 'string' && collapse.value) {
23
- // eslint-disable-next-line
32
+ if (typeof props.modelValue === 'string' && props.collapse) {
33
+ // eslint-disable-next-line no-console
24
34
  console.warn(
25
35
  `[VvAccordionGroup]: modelValue is a string but collapse is true.`,
26
36
  )
27
37
  }
28
38
  })
29
- let localModelValue: Ref<string[]> = ref([])
30
- watch(
31
- () => props.storeKey,
32
- (newKey) => {
33
- if (newKey) {
34
- localModelValue = useStorage(newKey, localModelValue.value)
35
- } else {
36
- localModelValue = ref([])
37
- }
38
- },
39
- { immediate: true },
39
+
40
+ const accordionNames = reactive(new Set<string>())
41
+ const storageModelValue = usePersistence<string | string[] | undefined>(
42
+ storageKey,
43
+ storageType,
44
+ [],
40
45
  )
41
- const modelValue = computed({
46
+ const localModelValue = computed({
42
47
  get: () => {
43
- if (props.modelValue !== undefined) {
44
- if (!collapse.value) {
45
- return Array.isArray(props.modelValue)
46
- ? props.modelValue[0]
47
- : props.modelValue
48
- }
48
+ if (props.modelValue !== null && props.modelValue !== undefined) {
49
49
  return props.modelValue
50
50
  }
51
- return !collapse.value
52
- ? localModelValue.value?.[0]
53
- : localModelValue.value
51
+ return storageModelValue.value
54
52
  },
55
53
  set: (newValue) => {
56
- if (props.modelValue !== undefined) {
57
- if (
58
- (Array.isArray(props.modelValue) || collapse.value) &&
59
- !Array.isArray(newValue)
60
- ) {
61
- newValue = [newValue]
54
+ emit('update:modelValue', newValue)
55
+ storageModelValue.value = newValue
56
+ },
57
+ })
58
+ const expandedAccordions = computed<Set<string>>({
59
+ get: () => {
60
+ if (localModelValue.value === undefined) {
61
+ return new Set<string>()
62
+ }
63
+ let toReturn = new Set<string>()
64
+ if (props.not) {
65
+ if (typeof localModelValue.value === 'string') {
66
+ toReturn = new Set<string>(
67
+ [...accordionNames].filter(
68
+ (name) => name !== localModelValue.value,
69
+ ),
70
+ )
71
+ } else if (Array.isArray(localModelValue.value)) {
72
+ toReturn = new Set<string>(
73
+ [...accordionNames].filter(
74
+ (name) =>
75
+ !(localModelValue.value as string[]).includes(
76
+ name,
77
+ ),
78
+ ),
79
+ )
62
80
  }
63
- return emit('update:modelValue', newValue)
81
+ } else if (typeof localModelValue.value === 'string') {
82
+ toReturn = new Set<string>([localModelValue.value])
83
+ } else if (Array.isArray(localModelValue.value)) {
84
+ toReturn = new Set<string>(localModelValue.value)
85
+ }
86
+ return toReturn
87
+ },
88
+ set: (newValue) => {
89
+ if (props.not) {
90
+ localModelValue.value = [...accordionNames].filter(
91
+ (name) => !newValue.has(name),
92
+ )
93
+ return
94
+ }
95
+ if (props.collapse) {
96
+ localModelValue.value = [...newValue]
97
+ return
64
98
  }
65
- localModelValue.value = Array.isArray(newValue)
66
- ? newValue
67
- : [newValue]
99
+ localModelValue.value = newValue.values().next().value
68
100
  },
69
101
  })
102
+ onMounted(() => {
103
+ if (props.not && localModelValue.value === undefined) {
104
+ localModelValue.value = props.collapse
105
+ ? []
106
+ : [...accordionNames.values()].splice(1, accordionNames.size)
107
+ }
108
+ nextTick(() => {
109
+ for (const name of accordionNames) {
110
+ bus.emit('toggle', {
111
+ name,
112
+ value: expandedAccordions.value.has(name),
113
+ })
114
+ }
115
+ })
116
+ })
70
117
 
71
118
  // provide
72
- useProvideGroupState<AccordionGroupState>({
73
- key: INJECTION_KEY_ACCORDION_GROUP,
74
- modelValue,
119
+ const bus = mitt<AccordionGroupBusEvents>()
120
+ useProvideGroupState<AccordionGroupState>(INJECTION_KEY_ACCORDION_GROUP, {
75
121
  disabled,
76
- collapse,
77
122
  modifiers: itemModifiers,
78
- not,
123
+ bus,
124
+ })
125
+ bus.on('register', ({ name }) => {
126
+ accordionNames.add(name)
79
127
  })
128
+ bus.on('unregister', ({ name }) => {
129
+ accordionNames.delete(name)
130
+ })
131
+ bus.on('toggle', ({ name, value }) => {
132
+ const newValue = new Set<string>(expandedAccordions.value)
133
+ if (value) {
134
+ if (!props.collapse) {
135
+ for (const item of newValue) {
136
+ if (item !== name) {
137
+ bus.emit('toggle', { name: item, value: false })
138
+ }
139
+ }
140
+ newValue.clear()
141
+ }
142
+ newValue.add(name)
143
+ expandedAccordions.value = newValue
144
+ return
145
+ }
146
+ newValue.delete(name)
147
+ expandedAccordions.value = newValue
148
+ })
149
+ const expand = (name?: string | string[]) => {
150
+ if (typeof name === 'string') {
151
+ bus.emit('toggle', { name, value: true })
152
+ return
153
+ }
154
+ if (Array.isArray(name)) {
155
+ for (const item of name) {
156
+ bus.emit('toggle', { name: item, value: true })
157
+ }
158
+ return
159
+ }
160
+ for (const item of accordionNames) {
161
+ bus.emit('toggle', { name: item, value: true })
162
+ }
163
+ }
164
+ bus.on('expand', ({ name }) => expand(name))
165
+
166
+ const collapse = (name?: string | string[]) => {
167
+ if (typeof name === 'string') {
168
+ bus.emit('toggle', { name, value: false })
169
+ return
170
+ }
171
+ if (Array.isArray(name)) {
172
+ for (const item of name) {
173
+ bus.emit('toggle', { name: item, value: false })
174
+ }
175
+ return
176
+ }
177
+ for (const item of accordionNames) {
178
+ bus.emit('toggle', { name: item, value: false })
179
+ }
180
+ }
181
+ bus.on('collapse', ({ name }) => collapse(name))
182
+
183
+ // expose
184
+ defineExpose({ expandedAccordions, expand, collapse })
80
185
 
81
186
  // styles
82
187
  const bemCssClasses = useModifiers(
@@ -91,7 +196,13 @@
91
196
  <template>
92
197
  <div :class="bemCssClasses">
93
198
  <!-- @slot Default slot -->
94
- <slot>
199
+ <slot
200
+ v-bind="{
201
+ expandedAccordions,
202
+ expand,
203
+ collapse,
204
+ }"
205
+ >
95
206
  <VvAccordion
96
207
  v-for="item in items"
97
208
  :key="item.title"
@@ -101,13 +212,19 @@
101
212
  content: item.content,
102
213
  }"
103
214
  >
104
- <template #header="data">
215
+ <template
216
+ v-if="$slots[`summary::${item.name}`]"
217
+ #summary="data"
218
+ >
105
219
  <!-- @slot Slot for accordion header -->
106
- <slot v-bind="data" :name="`header::${item.name}`" />
220
+ <slot v-bind="data" :name="`summary::${item.name}`" />
107
221
  </template>
108
- <template #details="data">
222
+ <template
223
+ v-if="$slots[`content::${item.name}`]"
224
+ #default="data"
225
+ >
109
226
  <!-- @slot Slot for accordion details -->
110
- <slot v-bind="data" :name="`details::${item.name}`" />
227
+ <slot v-bind="data" :name="`content::${item.name}`" />
111
228
  </template>
112
229
  </VvAccordion>
113
230
  </slot>
@@ -1,4 +1,4 @@
1
- import { ModifiersProps } from '@/props'
1
+ import { ModifiersProps, StorageProps } from '@/props'
2
2
 
3
3
  export interface VvAccordionGroupItem {
4
4
  title: string
@@ -10,10 +10,14 @@ export interface VvAccordionGroupItem {
10
10
 
11
11
  export const VvAccordionGroupProps = {
12
12
  ...ModifiersProps,
13
+ ...StorageProps,
13
14
  /**
14
15
  * VModel
15
16
  */
16
- modelValue: [String, Array],
17
+ modelValue: {
18
+ type: [String, Array] as PropType<string | string[] | undefined>,
19
+ default: undefined,
20
+ },
17
21
  /**
18
22
  * Accordion items
19
23
  * @type VvAccordionGroupItem
@@ -41,10 +45,6 @@ export const VvAccordionGroupProps = {
41
45
  * If true, the accordion items will be opened by default
42
46
  */
43
47
  not: Boolean,
44
- /**
45
- * Enable local storage persistence
46
- */
47
- storeKey: String,
48
48
  }
49
49
 
50
50
  export const VvAccordionGroupEvents = ['update:modelValue']
@@ -11,6 +11,7 @@
11
11
  // props and emit
12
12
  const props = defineProps(VvActionProps)
13
13
  const emit = defineEmits(VvActionEvents)
14
+ const instance = getCurrentInstance()
14
15
 
15
16
  // inject plugin
16
17
  const volver = useVolver()
@@ -55,7 +56,7 @@
55
56
  case props.href !== undefined:
56
57
  return ActionTag.a
57
58
  default:
58
- return ActionTag.button
59
+ return props.defaultTag // button
59
60
  }
60
61
  })
61
62
 
@@ -85,12 +86,14 @@
85
86
  to: props.to,
86
87
  target: props.target,
87
88
  }
88
- default:
89
+ case ActionTag.button:
89
90
  return {
90
91
  ...toReturn,
91
92
  type: props.type,
92
93
  disabled: props.disabled,
93
94
  }
95
+ default:
96
+ return toReturn
94
97
  }
95
98
  })
96
99
 
@@ -102,24 +105,33 @@
102
105
  e.preventDefault()
103
106
  return
104
107
  }
108
+ if (instance?.vnode.props?.onClick) {
109
+ emit('click', e)
110
+ return
111
+ }
105
112
  dropdownEventBus?.emit('click', e)
106
- emit('click', e)
107
113
  }
108
114
 
109
115
  /**
110
116
  * @description Catch mouseover event
111
117
  */
112
118
  const onMouseover = (e: Event) => {
119
+ if (instance?.vnode.props?.onMouseover) {
120
+ emit('mouseover', e)
121
+ return
122
+ }
113
123
  dropdownEventBus?.emit('mouseover', e)
114
- emit('mouseover', e)
115
124
  }
116
125
 
117
126
  /**
118
127
  * @description Catch mouseleave event
119
128
  */
120
129
  const onMouseleave = (e: Event) => {
130
+ if (instance?.vnode.props?.onMouseleave) {
131
+ emit('mouseleave', e)
132
+ return
133
+ }
121
134
  dropdownEventBus?.emit('mouseleave', e)
122
- emit('mouseleave', e)
123
135
  }
124
136
  </script>
125
137
 
@@ -1,11 +1,18 @@
1
- import { IconProps, IdProps, ModifiersProps } from '@/props'
2
- import type { ExtractPropTypes, PropType } from 'vue'
3
- import { withModifiers } from 'vue'
1
+ import { type ExtractPropTypes, type PropType, withModifiers } from 'vue'
2
+ import { AlertRole } from '@/constants'
3
+ import { IconProps, IdProps } from '@/props'
4
+ import type { AlertModifier } from '@/types'
4
5
 
5
6
  export const VvAlertProps = {
6
7
  ...IdProps,
7
- ...ModifiersProps,
8
8
  ...IconProps,
9
+ /**
10
+ * Component BEM modifiers
11
+ */
12
+ modifiers: {
13
+ type: [String, Array] as PropType<AlertModifier | AlertModifier[]>,
14
+ default: undefined,
15
+ },
9
16
  /**
10
17
  * The alert is dismissable
11
18
  * @default false
@@ -69,8 +76,8 @@ export const VvAlertProps = {
69
76
  * @see https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/Alertdialog_role
70
77
  */
71
78
  role: {
72
- type: String as PropType<'alert' | 'alertdialog'>,
73
- default: 'alert',
79
+ type: String as PropType<`${AlertRole}`>,
80
+ default: AlertRole.alert,
74
81
  },
75
82
  }
76
83
 
@@ -86,9 +93,7 @@ export const useVvAlert = (
86
93
  const hasTitleId = computed(() => `${hasId.value}-title`)
87
94
 
88
95
  // icon
89
- const hasIcon = computed(() =>
90
- typeof props.icon === 'string' ? { name: props.icon } : props.icon,
91
- )
96
+ const { hasIcon } = useComponentIcon(computed(() => props.icon))
92
97
 
93
98
  // props
94
99
  const hasClass = useModifiers(