@volverjs/ui-vue 0.0.10-beta.4 → 0.0.10-beta.41

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 (481) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +146 -49
  3. package/auto-imports.d.ts +7 -2
  4. package/bin/icons.cjs +1 -1
  5. package/bin/icons.js +27 -20
  6. package/dist/Volver.d.ts +11 -11
  7. package/dist/components/VvAccordion/VvAccordion.es.js +190 -101
  8. package/dist/components/VvAccordion/VvAccordion.umd.js +1 -1
  9. package/dist/components/VvAccordion/VvAccordion.vue.d.ts +30 -8
  10. package/dist/components/VvAccordion/index.d.ts +8 -9
  11. package/dist/components/VvAccordionGroup/VvAccordionGroup.es.js +450 -170
  12. package/dist/components/VvAccordionGroup/VvAccordionGroup.umd.js +1 -1
  13. package/dist/components/VvAccordionGroup/VvAccordionGroup.vue.d.ts +58 -13
  14. package/dist/components/VvAccordionGroup/index.d.ts +14 -6
  15. package/dist/components/VvAction/VvAction.es.js +84 -33
  16. package/dist/components/VvAction/VvAction.umd.js +1 -1
  17. package/dist/components/VvAction/VvAction.vue.d.ts +57 -22
  18. package/dist/components/VvAction/index.d.ts +25 -9
  19. package/dist/components/VvAlert/VvAlert.es.js +228 -193
  20. package/dist/components/VvAlert/VvAlert.umd.js +1 -1
  21. package/dist/components/VvAlert/VvAlert.vue.d.ts +24 -14
  22. package/dist/components/VvAlert/index.d.ts +17 -9
  23. package/dist/components/VvAlertGroup/VvAlertGroup.es.js +549 -485
  24. package/dist/components/VvAlertGroup/VvAlertGroup.umd.js +1 -1
  25. package/dist/components/VvAlertGroup/VvAlertGroup.vue.d.ts +16 -9
  26. package/dist/components/VvAlertGroup/index.d.ts +7 -15
  27. package/dist/components/VvAvatar/VvAvatar.es.js +65 -22
  28. package/dist/components/VvAvatar/VvAvatar.umd.js +1 -1
  29. package/dist/components/VvAvatar/VvAvatar.vue.d.ts +12 -4
  30. package/dist/components/VvAvatar/index.d.ts +4 -1
  31. package/dist/components/VvAvatarGroup/VvAvatarGroup.es.js +128 -49
  32. package/dist/components/VvAvatarGroup/VvAvatarGroup.umd.js +1 -1
  33. package/dist/components/VvAvatarGroup/VvAvatarGroup.vue.d.ts +10 -3
  34. package/dist/components/VvAvatarGroup/index.d.ts +4 -1
  35. package/dist/components/VvBadge/VvBadge.es.js +77 -28
  36. package/dist/components/VvBadge/VvBadge.umd.js +1 -1
  37. package/dist/components/VvBadge/VvBadge.vue.d.ts +12 -4
  38. package/dist/components/VvBadge/index.d.ts +4 -1
  39. package/dist/components/VvBreadcrumb/VvBreadcrumb.es.js +276 -60
  40. package/dist/components/VvBreadcrumb/VvBreadcrumb.umd.js +1 -1
  41. package/dist/components/VvBreadcrumb/VvBreadcrumb.vue.d.ts +27 -7
  42. package/dist/components/VvBreadcrumb/index.d.ts +6 -10
  43. package/dist/components/VvButton/VvButton.es.js +307 -262
  44. package/dist/components/VvButton/VvButton.umd.js +1 -1
  45. package/dist/components/VvButton/VvButton.vue.d.ts +94 -40
  46. package/dist/components/VvButton/index.d.ts +51 -29
  47. package/dist/components/VvButtonGroup/VvButtonGroup.es.js +95 -40
  48. package/dist/components/VvButtonGroup/VvButtonGroup.umd.js +1 -1
  49. package/dist/components/VvButtonGroup/VvButtonGroup.vue.d.ts +31 -11
  50. package/dist/components/VvButtonGroup/index.d.ts +11 -2
  51. package/dist/components/VvCard/VvCard.es.js +86 -36
  52. package/dist/components/VvCard/VvCard.umd.js +1 -1
  53. package/dist/components/VvCard/VvCard.vue.d.ts +12 -4
  54. package/dist/components/VvCard/index.d.ts +4 -1
  55. package/dist/components/VvCheckbox/VvCheckbox.es.js +315 -251
  56. package/dist/components/VvCheckbox/VvCheckbox.umd.js +1 -1
  57. package/dist/components/VvCheckbox/VvCheckbox.vue.d.ts +106 -34
  58. package/dist/components/VvCheckbox/index.d.ts +47 -14
  59. package/dist/components/VvCheckboxGroup/VvCheckboxGroup.es.js +238 -129
  60. package/dist/components/VvCheckboxGroup/VvCheckboxGroup.umd.js +1 -1
  61. package/dist/components/VvCheckboxGroup/VvCheckboxGroup.vue.d.ts +101 -30
  62. package/dist/components/VvCheckboxGroup/index.d.ts +45 -12
  63. package/dist/components/VvCombobox/VvCombobox.es.js +1377 -1059
  64. package/dist/components/VvCombobox/VvCombobox.umd.js +1 -1
  65. package/dist/components/VvCombobox/VvCombobox.vue.d.ts +606 -680
  66. package/dist/components/VvCombobox/index.d.ts +488 -26
  67. package/dist/components/VvDialog/VvDialog.es.js +180 -176
  68. package/dist/components/VvDialog/VvDialog.umd.js +1 -1
  69. package/dist/components/VvDialog/VvDialog.vue.d.ts +13 -4
  70. package/dist/components/VvDialog/index.d.ts +5 -0
  71. package/dist/components/VvDropdown/VvDropdown.es.js +165 -94
  72. package/dist/components/VvDropdown/VvDropdown.umd.js +1 -1
  73. package/dist/components/VvDropdown/VvDropdown.vue.d.ts +111 -81
  74. package/dist/components/VvDropdown/VvDropdownAction.vue.d.ts +66 -25
  75. package/dist/components/VvDropdown/VvDropdownItem.vue.d.ts +13 -1
  76. package/dist/components/VvDropdown/VvDropdownOptgroup.vue.d.ts +12 -4
  77. package/dist/components/VvDropdown/VvDropdownOption.vue.d.ts +35 -7
  78. package/dist/components/VvDropdown/index.d.ts +52 -10
  79. package/dist/components/VvDropdownAction/VvDropdownAction.es.js +163 -53
  80. package/dist/components/VvDropdownAction/VvDropdownAction.umd.js +1 -1
  81. package/dist/components/VvDropdownItem/VvDropdownItem.es.js +335 -8
  82. package/dist/components/VvDropdownItem/VvDropdownItem.umd.js +1 -1
  83. package/dist/components/VvDropdownOptgroup/VvDropdownOptgroup.es.js +63 -20
  84. package/dist/components/VvDropdownOptgroup/VvDropdownOptgroup.umd.js +1 -1
  85. package/dist/components/VvDropdownOption/VvDropdownOption.es.js +188 -80
  86. package/dist/components/VvDropdownOption/VvDropdownOption.umd.js +1 -1
  87. package/dist/components/VvIcon/VvIcon.es.js +24 -97
  88. package/dist/components/VvIcon/VvIcon.umd.js +1 -1
  89. package/dist/components/VvIcon/VvIcon.vue.d.ts +23 -66
  90. package/dist/components/VvIcon/index.d.ts +33 -48
  91. package/dist/components/VvInputFile/VvInputFile.es.js +1789 -0
  92. package/dist/components/VvInputFile/VvInputFile.umd.js +1 -0
  93. package/dist/components/VvInputFile/VvInputFile.vue.d.ts +391 -0
  94. package/dist/components/VvInputFile/index.d.ts +210 -0
  95. package/dist/components/VvInputText/VvInputClearAction.d.ts +7 -5
  96. package/dist/components/VvInputText/VvInputPasswordAction.d.ts +10 -8
  97. package/dist/components/VvInputText/VvInputStepAction.d.ts +2 -2
  98. package/dist/components/VvInputText/VvInputText.es.js +1489 -563
  99. package/dist/components/VvInputText/VvInputText.umd.js +1 -1
  100. package/dist/components/VvInputText/VvInputText.vue.d.ts +207 -57
  101. package/dist/components/VvInputText/index.d.ts +105 -30
  102. package/dist/components/VvNav/VvNav.es.js +160 -75
  103. package/dist/components/VvNav/VvNav.umd.js +1 -1
  104. package/dist/components/VvNav/VvNav.vue.d.ts +32 -9
  105. package/dist/components/VvNav/VvNavItem.vue.d.ts +1 -1
  106. package/dist/components/VvNav/VvNavSeparator.vue.d.ts +1 -1
  107. package/dist/components/VvNav/index.d.ts +5 -2
  108. package/dist/components/VvNavItem/VvNavItem.es.js +100 -39
  109. package/dist/components/VvNavItem/VvNavItem.umd.js +1 -1
  110. package/dist/components/VvProgress/VvProgress.es.js +73 -27
  111. package/dist/components/VvProgress/VvProgress.umd.js +1 -1
  112. package/dist/components/VvProgress/VvProgress.vue.d.ts +10 -3
  113. package/dist/components/VvProgress/index.d.ts +4 -1
  114. package/dist/components/VvRadio/VvRadio.es.js +313 -250
  115. package/dist/components/VvRadio/VvRadio.umd.js +1 -1
  116. package/dist/components/VvRadio/VvRadio.vue.d.ts +103 -31
  117. package/dist/components/VvRadio/index.d.ts +50 -17
  118. package/dist/components/VvRadioGroup/VvRadioGroup.es.js +236 -128
  119. package/dist/components/VvRadioGroup/VvRadioGroup.umd.js +1 -1
  120. package/dist/components/VvRadioGroup/VvRadioGroup.vue.d.ts +101 -30
  121. package/dist/components/VvRadioGroup/index.d.ts +45 -12
  122. package/dist/components/VvSelect/VvSelect.es.js +367 -300
  123. package/dist/components/VvSelect/VvSelect.umd.js +1 -1
  124. package/dist/components/VvSelect/VvSelect.vue.d.ts +232 -203
  125. package/dist/components/VvSelect/index.d.ts +195 -15
  126. package/dist/components/VvTab/VvTab.es.js +222 -97
  127. package/dist/components/VvTab/VvTab.umd.js +1 -1
  128. package/dist/components/VvTab/VvTab.vue.d.ts +31 -7
  129. package/dist/components/VvTab/index.d.ts +4 -1
  130. package/dist/components/VvTextarea/VvTextarea.es.js +258 -248
  131. package/dist/components/VvTextarea/VvTextarea.umd.js +1 -1
  132. package/dist/components/VvTextarea/VvTextarea.vue.d.ts +156 -49
  133. package/dist/components/VvTextarea/index.d.ts +68 -19
  134. package/dist/components/VvTooltip/VvTooltip.es.js +83 -30
  135. package/dist/components/VvTooltip/VvTooltip.umd.js +1 -1
  136. package/dist/components/VvTooltip/VvTooltip.vue.d.ts +13 -6
  137. package/dist/components/VvTooltip/index.d.ts +5 -2
  138. package/dist/components/common/HintSlot.d.ts +4 -5
  139. package/dist/components/index.d.ts +10 -0
  140. package/dist/components/index.es.js +4575 -2534
  141. package/dist/components/index.umd.js +1 -1
  142. package/dist/composables/alert/useAlert.d.ts +101 -6
  143. package/dist/composables/alert/useInjectAlert.d.ts +1 -6
  144. package/dist/composables/dropdown/useInjectDropdown.d.ts +3 -23
  145. package/dist/composables/dropdown/useProvideDropdown.d.ts +3 -4
  146. package/dist/composables/group/useInjectedGroupState.d.ts +4 -5
  147. package/dist/composables/group/useProvideGroupState.d.ts +3 -3
  148. package/dist/composables/index.d.ts +1 -0
  149. package/dist/composables/index.es.js +94 -5
  150. package/dist/composables/index.umd.js +1 -1
  151. package/dist/composables/useBlurhash.d.ts +7 -0
  152. package/dist/composables/useComponentFocus.d.ts +1 -1
  153. package/dist/composables/useComponentIcon.d.ts +9 -8
  154. package/dist/composables/useOptions.d.ts +4 -4
  155. package/dist/composables/usePersistence.d.ts +3 -0
  156. package/dist/composables/useUniqueId.d.ts +1 -1
  157. package/dist/composables/useVolver.d.ts +1 -1
  158. package/dist/constants.d.ts +34 -32
  159. package/dist/directives/index.d.ts +3 -5
  160. package/dist/directives/index.es.js +104 -45
  161. package/dist/directives/index.umd.js +1 -1
  162. package/dist/directives/v-contextmenu.es.js +1 -1
  163. package/dist/directives/v-contextmenu.umd.js +1 -1
  164. package/dist/directives/v-tooltip.es.js +101 -39
  165. package/dist/directives/v-tooltip.umd.js +1 -1
  166. package/dist/icons.es.js +267 -267
  167. package/dist/icons.umd.js +1 -1
  168. package/dist/index.d.ts +3 -1
  169. package/dist/index.es.js +92 -18
  170. package/dist/index.umd.js +1 -1
  171. package/dist/props/index.d.ts +272 -81
  172. package/dist/resolvers/unplugin.d.ts +6 -1
  173. package/dist/resolvers/unplugin.es.js +87 -10
  174. package/dist/resolvers/unplugin.umd.js +1 -1
  175. package/dist/stories/Accordion/Accordion.settings.d.ts +2 -57
  176. package/dist/stories/AccordionGroup/AccordionGroup.settings.d.ts +2 -66
  177. package/dist/stories/AccordionGroup/AccordionGroup.stories.d.ts +2 -127
  178. package/dist/stories/AccordionGroup/AccordionGroupSlots.stories.d.ts +1437 -495
  179. package/dist/stories/Alert/Alert.settings.d.ts +2 -109
  180. package/dist/stories/Alert/AlertModifiers.stories.d.ts +1 -1
  181. package/dist/stories/Alert/AlertSlots.stories.d.ts +1 -1
  182. package/dist/stories/AlertGroup/AlertGroup.settings.d.ts +2 -85
  183. package/dist/stories/AlertGroup/AlertGroupPosition.stories.d.ts +1 -1
  184. package/dist/stories/AlertGroup/AlertGroupSlots.stories.d.ts +1 -1
  185. package/dist/stories/AlertGroup/AlertGroupWithComposable.stories.d.ts +2 -2
  186. package/dist/stories/AvatarGroup/AvatarGroup.settings.d.ts +2 -38
  187. package/dist/stories/Badge/Badge.settings.d.ts +2 -26
  188. package/dist/stories/Badge/Badge.test.d.ts +1 -1
  189. package/dist/stories/Blurhash/BlurhashComposable.stories.d.ts +4 -0
  190. package/dist/stories/Breadcrumb/Breadcrumb.settings.d.ts +2 -18
  191. package/dist/stories/Breadcrumb/Breadcrumb.test.d.ts +1 -1
  192. package/dist/stories/Button/Button.settings.d.ts +2 -194
  193. package/dist/stories/ButtonGroup/ButtonGroup.settings.d.ts +2 -40
  194. package/dist/stories/Card/Card.settings.d.ts +2 -63
  195. package/dist/stories/Checkbox/Checkbox.settings.d.ts +2 -132
  196. package/dist/stories/CheckboxGroup/CheckboxGroup.settings.d.ts +1 -141
  197. package/dist/stories/Combobox/Combobox.settings.d.ts +2 -609
  198. package/dist/stories/Combobox/Combobox.stories.d.ts +1 -0
  199. package/dist/stories/Combobox/ComboboxMultiple.stories.d.ts +1 -0
  200. package/dist/stories/Dialog/Dialog.settings.d.ts +2 -47
  201. package/dist/stories/Dialog/DialogModifiers.stories.d.ts +8 -0
  202. package/dist/stories/Dropdown/Dropdown.settings.d.ts +2 -205
  203. package/dist/stories/Icon/Icon.settings.d.ts +3 -68
  204. package/dist/stories/InputFile/InputFile.settings.d.ts +6 -0
  205. package/dist/stories/InputFile/InputFile.stories.d.ts +12 -0
  206. package/dist/stories/InputFile/InputFileDropArea.stories.d.ts +9 -0
  207. package/dist/stories/InputFile/InputFileIconPosition.stories.d.ts +8 -0
  208. package/dist/stories/InputFile/InputFileSlots.stories.d.ts +7 -0
  209. package/dist/stories/InputText/InputText.settings.d.ts +2 -438
  210. package/dist/stories/Nav/Nav.settings.d.ts +2 -10
  211. package/dist/stories/Progress/Progress.settings.d.ts +2 -27
  212. package/dist/stories/Radio/Radio.settings.d.ts +1 -110
  213. package/dist/stories/RadioGroup/RadioGroup.settings.d.ts +1 -141
  214. package/dist/stories/Select/Select.settings.d.ts +2 -246
  215. package/dist/stories/Select/Select.stories.d.ts +1 -0
  216. package/dist/stories/Tab/Tab.settings.d.ts +2 -15
  217. package/dist/stories/Textarea/Textarea.settings.d.ts +2 -287
  218. package/dist/stories/argTypes.d.ts +27 -866
  219. package/dist/test/expect.d.ts +1 -1
  220. package/dist/test/options.d.ts +1 -1
  221. package/dist/test/sleep.d.ts +1 -1
  222. package/dist/types/alert.d.ts +9 -7
  223. package/dist/types/blurhash.d.ts +12 -0
  224. package/dist/types/generic.d.ts +1 -2
  225. package/dist/types/group.d.ts +37 -15
  226. package/dist/types/index.d.ts +7 -0
  227. package/dist/types/input-file.d.ts +16 -0
  228. package/dist/types/nav.d.ts +2 -2
  229. package/dist/utils/ObjectUtilities.d.ts +7 -8
  230. package/dist/workers/blurhash.d.ts +1 -0
  231. package/package.json +239 -246
  232. package/src/Volver.ts +245 -234
  233. package/src/assets/icons/detailed.json +1 -1
  234. package/src/assets/icons/normal.json +1 -1
  235. package/src/assets/icons/simple.json +1 -1
  236. package/src/components/VvAccordion/VvAccordion.vue +163 -100
  237. package/src/components/VvAccordion/index.ts +64 -79
  238. package/src/components/VvAccordionGroup/VvAccordionGroup.vue +223 -105
  239. package/src/components/VvAccordionGroup/index.ts +42 -42
  240. package/src/components/VvAction/VvAction.vue +144 -130
  241. package/src/components/VvAlert/VvAlert.vue +72 -70
  242. package/src/components/VvAlert/index.ts +149 -147
  243. package/src/components/VvAlertGroup/VvAlertGroup.vue +57 -56
  244. package/src/components/VvAlertGroup/index.ts +101 -117
  245. package/src/components/VvAvatar/VvAvatar.vue +20 -14
  246. package/src/components/VvAvatar/index.ts +5 -5
  247. package/src/components/VvAvatarGroup/VvAvatarGroup.vue +58 -53
  248. package/src/components/VvAvatarGroup/index.ts +21 -21
  249. package/src/components/VvBadge/VvBadge.vue +15 -14
  250. package/src/components/VvBadge/index.ts +2 -2
  251. package/src/components/VvBreadcrumb/VvBreadcrumb.vue +50 -48
  252. package/src/components/VvBreadcrumb/index.ts +3 -9
  253. package/src/components/VvButton/VvButton.vue +163 -152
  254. package/src/components/VvButton/index.ts +103 -110
  255. package/src/components/VvButtonGroup/VvButtonGroup.vue +72 -64
  256. package/src/components/VvButtonGroup/index.ts +22 -21
  257. package/src/components/VvCard/VvCard.vue +30 -30
  258. package/src/components/VvCard/index.ts +2 -2
  259. package/src/components/VvCheckbox/VvCheckbox.vue +185 -183
  260. package/src/components/VvCheckbox/index.ts +44 -44
  261. package/src/components/VvCheckboxGroup/VvCheckboxGroup.vue +88 -87
  262. package/src/components/VvCombobox/VvCombobox.vue +639 -619
  263. package/src/components/VvCombobox/index.ts +206 -164
  264. package/src/components/VvDialog/VvDialog.vue +141 -129
  265. package/src/components/VvDialog/index.ts +38 -36
  266. package/src/components/VvDropdown/VvDropdown.vue +466 -445
  267. package/src/components/VvDropdown/VvDropdownAction.vue +37 -39
  268. package/src/components/VvDropdown/VvDropdownItem.vue +30 -26
  269. package/src/components/VvDropdown/VvDropdownOptgroup.vue +13 -12
  270. package/src/components/VvDropdown/VvDropdownOption.vue +47 -64
  271. package/src/components/VvDropdown/index.ts +61 -27
  272. package/src/components/VvIcon/README.md +1 -1
  273. package/src/components/VvIcon/VvIcon.vue +133 -133
  274. package/src/components/VvIcon/index.ts +84 -97
  275. package/src/components/VvInputFile/VvInputFile.vue +402 -0
  276. package/src/components/VvInputFile/index.ts +141 -0
  277. package/src/components/VvInputText/VvInputClearAction.ts +51 -47
  278. package/src/components/VvInputText/VvInputPasswordAction.ts +66 -62
  279. package/src/components/VvInputText/VvInputStepAction.ts +43 -43
  280. package/src/components/VvInputText/VvInputText.vue +638 -516
  281. package/src/components/VvInputText/VvInputTextActions.ts +86 -86
  282. package/src/components/VvInputText/index.ts +200 -185
  283. package/src/components/VvNav/VvNav.vue +40 -36
  284. package/src/components/VvNav/VvNavItem.vue +12 -12
  285. package/src/components/VvNav/VvNavSeparator.vue +6 -6
  286. package/src/components/VvNav/index.ts +2 -2
  287. package/src/components/VvProgress/VvProgress.vue +27 -27
  288. package/src/components/VvProgress/index.ts +28 -28
  289. package/src/components/VvRadio/VvRadio.vue +115 -112
  290. package/src/components/VvRadio/index.ts +28 -28
  291. package/src/components/VvRadioGroup/VvRadioGroup.vue +91 -90
  292. package/src/components/VvSelect/VvSelect.vue +262 -241
  293. package/src/components/VvSelect/index.ts +88 -63
  294. package/src/components/VvTab/VvTab.vue +79 -69
  295. package/src/components/VvTab/index.ts +12 -12
  296. package/src/components/VvTextarea/VvTextarea.vue +218 -219
  297. package/src/components/VvTextarea/index.ts +35 -35
  298. package/src/components/VvTooltip/VvTooltip.vue +22 -16
  299. package/src/components/VvTooltip/index.ts +12 -12
  300. package/src/components/common/HintSlot.ts +149 -150
  301. package/src/components/index.ts +10 -0
  302. package/src/composables/alert/useAlert.ts +76 -73
  303. package/src/composables/alert/useInjectAlert.ts +1 -1
  304. package/src/composables/alert/useProvideAlert.ts +10 -10
  305. package/src/composables/dropdown/useInjectDropdown.ts +6 -6
  306. package/src/composables/dropdown/useProvideDropdown.ts +63 -63
  307. package/src/composables/group/useInjectedGroupState.ts +46 -42
  308. package/src/composables/group/useProvideGroupState.ts +9 -15
  309. package/src/composables/index.ts +1 -0
  310. package/src/composables/useBlurhash.ts +68 -0
  311. package/src/composables/useComponentFocus.ts +9 -9
  312. package/src/composables/useComponentIcon.ts +36 -35
  313. package/src/composables/useDebouncedInput.ts +25 -25
  314. package/src/composables/useDefaults.ts +77 -76
  315. package/src/composables/useModifiers.ts +29 -29
  316. package/src/composables/useOptions.ts +52 -43
  317. package/src/composables/usePersistence.ts +74 -0
  318. package/src/composables/useTextCount.ts +44 -44
  319. package/src/composables/useUniqueId.ts +3 -2
  320. package/src/composables/useVolver.ts +1 -1
  321. package/src/constants.ts +97 -82
  322. package/src/directives/index.ts +3 -6
  323. package/src/directives/v-contextmenu.ts +34 -34
  324. package/src/directives/v-tooltip.ts +18 -9
  325. package/src/index.ts +6 -4
  326. package/src/props/index.ts +457 -380
  327. package/src/resolvers/unplugin.ts +146 -136
  328. package/src/shims.d.ts +4 -5
  329. package/src/stories/Accordion/Accordion.settings.ts +51 -50
  330. package/src/stories/Accordion/Accordion.stories.ts +21 -21
  331. package/src/stories/Accordion/Accordion.test.ts +56 -54
  332. package/src/stories/Accordion/AccordionSlots.stories.ts +13 -13
  333. package/src/stories/AccordionGroup/AccordionGroup.settings.ts +70 -67
  334. package/src/stories/AccordionGroup/AccordionGroup.stories.ts +41 -39
  335. package/src/stories/AccordionGroup/AccordionGroup.test.ts +49 -45
  336. package/src/stories/AccordionGroup/AccordionGroupSlots.stories.ts +35 -35
  337. package/src/stories/Alert/Alert.settings.ts +117 -116
  338. package/src/stories/Alert/Alert.stories.ts +30 -30
  339. package/src/stories/Alert/Alert.test.ts +78 -80
  340. package/src/stories/Alert/AlertModifiers.stories.ts +45 -45
  341. package/src/stories/Alert/AlertSlots.stories.ts +35 -35
  342. package/src/stories/AlertGroup/AlertGroup.settings.ts +107 -105
  343. package/src/stories/AlertGroup/AlertGroup.stories.ts +25 -25
  344. package/src/stories/AlertGroup/AlertGroup.test.ts +67 -69
  345. package/src/stories/AlertGroup/AlertGroupPosition.stories.ts +68 -68
  346. package/src/stories/AlertGroup/AlertGroupSlots.stories.ts +23 -23
  347. package/src/stories/AlertGroup/AlertGroupWithComposable.stories.ts +58 -58
  348. package/src/stories/Avatar/Avatar.settings.ts +29 -29
  349. package/src/stories/Avatar/Avatar.stories.ts +23 -23
  350. package/src/stories/Avatar/Avatar.test.ts +22 -24
  351. package/src/stories/Avatar/AvatarBadge.stories.ts +15 -15
  352. package/src/stories/Avatar/AvatarModifiers.stories.ts +61 -61
  353. package/src/stories/Avatar/AvatarSlots.stories.ts +18 -18
  354. package/src/stories/AvatarGroup/AvatarGroup.settings.ts +54 -53
  355. package/src/stories/AvatarGroup/AvatarGroup.stories.ts +17 -17
  356. package/src/stories/AvatarGroup/AvatarGroup.test.ts +24 -26
  357. package/src/stories/AvatarGroup/AvatarGroupModifiers.stories.ts +15 -15
  358. package/src/stories/AvatarGroup/AvatarGroupSlotDefault.stories.ts +17 -17
  359. package/src/stories/Badge/Badge.settings.ts +21 -20
  360. package/src/stories/Badge/Badge.stories.ts +24 -24
  361. package/src/stories/Badge/Badge.test.ts +8 -8
  362. package/src/stories/Badge/BadgeSlots.stories.ts +10 -10
  363. package/src/stories/Blurhash/BlurhashComposable.stories.ts +196 -0
  364. package/src/stories/Breadcrumb/Breadcrumb.settings.ts +35 -34
  365. package/src/stories/Breadcrumb/Breadcrumb.stories.ts +23 -23
  366. package/src/stories/Breadcrumb/Breadcrumb.test.ts +44 -43
  367. package/src/stories/Breadcrumb/BreadcrumbSlots.stories.ts +17 -17
  368. package/src/stories/Button/Button.settings.ts +146 -150
  369. package/src/stories/Button/Button.stories.ts +19 -19
  370. package/src/stories/Button/Button.test.ts +41 -42
  371. package/src/stories/Button/ButtonIcon.stories.ts +42 -42
  372. package/src/stories/Button/ButtonLink.stories.ts +24 -24
  373. package/src/stories/Button/ButtonLoading.stories.ts +22 -22
  374. package/src/stories/Button/ButtonModifiers.stories.ts +91 -91
  375. package/src/stories/Button/ButtonSlots.stories.ts +47 -47
  376. package/src/stories/Button/ButtonState.stories.ts +23 -23
  377. package/src/stories/Button/ButtonToggle.stories.ts +30 -30
  378. package/src/stories/ButtonGroup/ButtonGroup.settings.ts +33 -24
  379. package/src/stories/ButtonGroup/ButtonGroup.stories.ts +20 -20
  380. package/src/stories/ButtonGroup/ButtonGroup.test.ts +23 -26
  381. package/src/stories/ButtonGroup/ButtonGroupModifiers.stories.ts +20 -20
  382. package/src/stories/ButtonGroup/ButtonGroupSlots.stories.ts +18 -18
  383. package/src/stories/ButtonGroup/ButtonGroupToggle.stories.ts +22 -22
  384. package/src/stories/Card/Card.settings.ts +49 -48
  385. package/src/stories/Card/Card.stories.ts +22 -22
  386. package/src/stories/Card/Card.test.ts +14 -16
  387. package/src/stories/Card/CardSlots.stories.ts +42 -42
  388. package/src/stories/Checkbox/Checkbox.settings.ts +36 -35
  389. package/src/stories/Checkbox/Checkbox.stories.ts +57 -57
  390. package/src/stories/Checkbox/Checkbox.test.ts +63 -66
  391. package/src/stories/Checkbox/CheckboxBinary.stories.ts +18 -18
  392. package/src/stories/Checkbox/CheckboxSlots.stories.ts +15 -15
  393. package/src/stories/CheckboxGroup/CheckboxGroup.settings.ts +9 -9
  394. package/src/stories/CheckboxGroup/CheckboxGroup.stories.ts +50 -50
  395. package/src/stories/CheckboxGroup/CheckboxGroup.test.ts +63 -67
  396. package/src/stories/CheckboxGroup/CheckboxGroupOptions.stories.ts +34 -34
  397. package/src/stories/CheckboxGroup/CheckboxGroupSlots.stories.ts +23 -23
  398. package/src/stories/Combobox/Combobox.settings.ts +407 -384
  399. package/src/stories/Combobox/Combobox.stories.ts +116 -107
  400. package/src/stories/Combobox/Combobox.test.ts +91 -91
  401. package/src/stories/Combobox/ComboboxIconPosition.stories.ts +25 -24
  402. package/src/stories/Combobox/ComboboxMultiple.stories.ts +32 -22
  403. package/src/stories/Combobox/ComboboxOptions.stories.ts +81 -84
  404. package/src/stories/Combobox/ComboboxSlots.stories.ts +56 -55
  405. package/src/stories/Dialog/Dialog.settings.ts +49 -40
  406. package/src/stories/Dialog/Dialog.stories.ts +28 -28
  407. package/src/stories/Dialog/Dialog.test.ts +49 -54
  408. package/src/stories/Dialog/DialogModifiers.stories.ts +42 -0
  409. package/src/stories/Dialog/DialogSlots.stories.ts +20 -20
  410. package/src/stories/Dropdown/Dropdown.settings.ts +63 -62
  411. package/src/stories/Dropdown/Dropdown.stories.ts +59 -59
  412. package/src/stories/Dropdown/Dropdown.test.ts +9 -13
  413. package/src/stories/Dropdown/DropdownContextmenuDirective.stories.ts +16 -16
  414. package/src/stories/Dropdown/DropdownMultilevel.stories.ts +18 -18
  415. package/src/stories/Dropdown/DropdownSlots.stories.ts +50 -50
  416. package/src/stories/Icon/Icon.settings.ts +66 -65
  417. package/src/stories/Icon/Icon.stories.ts +28 -29
  418. package/src/stories/Icon/IconsCollection.stories.ts +22 -22
  419. package/src/stories/InputFile/InputFile.settings.ts +37 -0
  420. package/src/stories/InputFile/InputFile.stories.ts +89 -0
  421. package/src/stories/InputFile/InputFileDropArea.stories.ts +56 -0
  422. package/src/stories/InputFile/InputFileIconPosition.stories.ts +43 -0
  423. package/src/stories/InputFile/InputFileSlots.stories.ts +33 -0
  424. package/src/stories/InputText/InputText.settings.ts +246 -244
  425. package/src/stories/InputText/InputText.stories.ts +67 -67
  426. package/src/stories/InputText/InputText.test.ts +118 -121
  427. package/src/stories/InputText/InputTextIconPosition.stories.ts +24 -24
  428. package/src/stories/InputText/InputTextLength.stories.ts +33 -33
  429. package/src/stories/InputText/InputTextMask.stories.ts +91 -91
  430. package/src/stories/InputText/InputTextMinMax.stories.ts +30 -30
  431. package/src/stories/InputText/InputTextSlots.stories.ts +20 -20
  432. package/src/stories/InputText/InputTextType.stories.ts +70 -70
  433. package/src/stories/Nav/Nav.settings.ts +27 -27
  434. package/src/stories/Nav/Nav.stories.ts +18 -18
  435. package/src/stories/Nav/Nav.test.ts +10 -12
  436. package/src/stories/Nav/NavModifiers.stories.ts +25 -25
  437. package/src/stories/Progress/Progress.settings.ts +24 -23
  438. package/src/stories/Progress/Progress.stories.ts +23 -23
  439. package/src/stories/Progress/Progress.test.ts +4 -4
  440. package/src/stories/Radio/Radio.settings.ts +9 -9
  441. package/src/stories/Radio/Radio.stories.ts +47 -47
  442. package/src/stories/Radio/Radio.test.ts +54 -57
  443. package/src/stories/Radio/RadioSlots.stories.ts +15 -15
  444. package/src/stories/RadioGroup/RadioGroup.settings.ts +9 -9
  445. package/src/stories/RadioGroup/RadioGroup.stories.ts +51 -52
  446. package/src/stories/RadioGroup/RadioGroup.test.ts +63 -67
  447. package/src/stories/RadioGroup/RadioGroupOptions.stories.ts +35 -35
  448. package/src/stories/RadioGroup/RadioGroupSlots.stories.ts +23 -23
  449. package/src/stories/Select/Select.settings.ts +71 -70
  450. package/src/stories/Select/Select.stories.ts +75 -66
  451. package/src/stories/Select/Select.test.ts +67 -70
  452. package/src/stories/Select/SelectIconPosition.stories.ts +27 -26
  453. package/src/stories/Select/SelectOptions.stories.ts +55 -55
  454. package/src/stories/Select/SelectSlots.stories.ts +21 -20
  455. package/src/stories/Tab/Tab.settings.ts +34 -34
  456. package/src/stories/Tab/Tab.stories.ts +17 -17
  457. package/src/stories/Tab/Tab.test.ts +17 -19
  458. package/src/stories/Textarea/Textarea.settings.ts +79 -77
  459. package/src/stories/Textarea/Textarea.stories.ts +63 -63
  460. package/src/stories/Textarea/Textarea.test.ts +70 -73
  461. package/src/stories/Textarea/TextareaLength.stories.ts +33 -33
  462. package/src/stories/Textarea/TextareaSlots.stories.ts +20 -20
  463. package/src/stories/Textarea/TextareatIconPosition.stories.ts +24 -24
  464. package/src/stories/Tooltip/Tooltip.settings.ts +16 -17
  465. package/src/stories/Tooltip/Tooltip.stories.ts +18 -18
  466. package/src/stories/Tooltip/Tooltip.test.ts +53 -54
  467. package/src/stories/Tooltip/TooltipDirective.stories.ts +37 -37
  468. package/src/stories/argTypes.ts +506 -505
  469. package/src/test/expect.ts +72 -77
  470. package/src/test/options.ts +17 -16
  471. package/src/test/sleep.ts +3 -2
  472. package/src/test/types.d.ts +11 -11
  473. package/src/types/alert.ts +21 -17
  474. package/src/types/blurhash.ts +21 -0
  475. package/src/types/generic.ts +2 -3
  476. package/src/types/group.ts +34 -26
  477. package/src/types/index.ts +7 -0
  478. package/src/types/input-file.ts +18 -0
  479. package/src/types/nav.ts +13 -14
  480. package/src/utils/ObjectUtilities.ts +192 -188
  481. package/src/workers/blurhash.ts +9 -0
@@ -1,6 +1,12 @@
1
- import { unref, inject, computed, toRef, toRefs, defineComponent, useAttrs, ref, openBlock, createElementBlock, normalizeClass, createElementVNode, withModifiers, renderSlot, normalizeProps, guardReactiveProps, createTextVNode, toDisplayString, isRef, provide, watchEffect, watch, Fragment, renderList, createBlock, mergeProps, withCtx } from "vue";
1
+ import { inject, computed, toRef, unref, defineComponent, useAttrs, toRefs, ref, watch, onBeforeUnmount, openBlock, createElementBlock, normalizeClass, createElementVNode, withModifiers, renderSlot, normalizeProps, guardReactiveProps, createTextVNode, toDisplayString, isRef, provide, watchEffect, reactive, onMounted, nextTick, Fragment, renderList, createBlock, mergeProps, createSlots, withCtx } from "vue";
2
+ import mitt from "mitt";
2
3
  import { uid } from "uid";
3
- import { useToggle, useStorage } from "@vueuse/core";
4
+ import { useVModel, useStorage } from "@vueuse/core";
5
+ var StorageType = /* @__PURE__ */ ((StorageType2) => {
6
+ StorageType2["local"] = "local";
7
+ StorageType2["session"] = "session";
8
+ return StorageType2;
9
+ })(StorageType || {});
4
10
  var Strategy = /* @__PURE__ */ ((Strategy2) => {
5
11
  Strategy2["absolute"] = "absolute";
6
12
  Strategy2["fixed"] = "fixed";
@@ -35,14 +41,16 @@ var ButtonType = /* @__PURE__ */ ((ButtonType2) => {
35
41
  ButtonType2["reset"] = "reset";
36
42
  return ButtonType2;
37
43
  })(ButtonType || {});
38
- var AnchorTarget = /* @__PURE__ */ ((AnchorTarget2) => {
39
- AnchorTarget2["_blank"] = "_blank";
40
- AnchorTarget2["_self"] = "_self";
41
- AnchorTarget2["_parent"] = "_parent";
42
- AnchorTarget2["_top"] = "_top";
43
- return AnchorTarget2;
44
- })(AnchorTarget || {});
45
- const INJECTION_KEY_ACCORDION_GROUP = Symbol.for("accordionGroup");
44
+ var ActionTag = /* @__PURE__ */ ((ActionTag2) => {
45
+ ActionTag2["nuxtLink"] = "nuxt-link";
46
+ ActionTag2["routerLink"] = "router-link";
47
+ ActionTag2["a"] = "a";
48
+ ActionTag2["button"] = "button";
49
+ return ActionTag2;
50
+ })(ActionTag || {});
51
+ const INJECTION_KEY_ACCORDION_GROUP = Symbol.for(
52
+ "accordionGroup"
53
+ );
46
54
  const LinkProps = {
47
55
  /**
48
56
  * The router-link/nuxt-link property, if it is defined the button is rendered as a ruouter-link or nuxt-link.
@@ -58,10 +66,7 @@ const LinkProps = {
58
66
  /**
59
67
  * Anchor target
60
68
  */
61
- target: {
62
- type: String,
63
- validator: (value) => Object.values(AnchorTarget).includes(value)
64
- },
69
+ target: String,
65
70
  /**
66
71
  * Anchor rel
67
72
  */
@@ -74,44 +79,65 @@ const DisabledProps = {
74
79
  /**
75
80
  * Whether the form control is disabled
76
81
  */
77
- disabled: Boolean
82
+ disabled: {
83
+ type: Boolean,
84
+ default: false
85
+ }
78
86
  };
79
87
  const ActiveProps = {
80
88
  /**
81
89
  * Whether the item is active
82
90
  */
83
- active: Boolean
91
+ active: {
92
+ type: Boolean,
93
+ default: false
94
+ }
84
95
  };
85
96
  const CurrentProps = {
86
97
  /**
87
98
  * Whether the item is current
88
99
  */
89
- current: Boolean
100
+ current: {
101
+ type: Boolean,
102
+ default: false
103
+ }
90
104
  };
91
105
  const PressedProps = {
92
106
  /**
93
107
  * Whether the item is pressed
94
108
  */
95
- pressed: Boolean
109
+ pressed: {
110
+ type: Boolean,
111
+ default: false
112
+ }
96
113
  };
97
114
  const LabelProps = {
98
115
  /**
99
116
  * The item label
100
117
  */
101
- label: [String, Number]
118
+ label: {
119
+ type: [String, Number],
120
+ default: void 0
121
+ }
102
122
  };
103
123
  const ModifiersProps = {
104
124
  /**
105
125
  * Component BEM modifiers
106
126
  */
107
- modifiers: [String, Array]
127
+ modifiers: {
128
+ type: [String, Array],
129
+ default: void 0
130
+ }
108
131
  };
109
132
  ({
110
133
  /**
111
134
  * VvIcon name or props
112
135
  * @see VVIcon
113
136
  */
114
- icon: { type: [String, Object] },
137
+ icon: {
138
+ type: [String, Object],
139
+ default: void 0
140
+ },
115
141
  /**
116
142
  * VvIcon position
117
143
  */
@@ -142,7 +168,8 @@ const ModifiersProps = {
142
168
  * Dropdown show / hide transition name
143
169
  */
144
170
  transitionName: {
145
- type: String
171
+ type: String,
172
+ default: void 0
146
173
  },
147
174
  /**
148
175
  * Offset of the dropdown from the trigger
@@ -210,7 +237,8 @@ const ModifiersProps = {
210
237
  * Set dropdown width to the same as the trigger
211
238
  */
212
239
  triggerWidth: {
213
- type: Boolean
240
+ type: Boolean,
241
+ default: false
214
242
  }
215
243
  });
216
244
  ({
@@ -234,20 +262,32 @@ const ModifiersProps = {
234
262
  ariaLabel: {
235
263
  type: String,
236
264
  default: void 0
265
+ },
266
+ /**
267
+ * Default tag for the action
268
+ */
269
+ defaultTag: {
270
+ type: String,
271
+ default: ActionTag.button
237
272
  }
238
273
  });
239
- function isEmpty(value) {
240
- return ((value2) => value2 === null || value2 === void 0 || value2 === "" || Array.isArray(value2) && value2.length === 0 || !(value2 instanceof Date) && typeof value2 === "object" && Object.keys(value2).length === 0)(unref(value));
241
- }
274
+ const StorageProps = {
275
+ storageType: {
276
+ type: String,
277
+ default: StorageType.local,
278
+ validator: (value) => Object.values(StorageType).includes(value)
279
+ },
280
+ storageKey: String
281
+ };
242
282
  function useInjectedGroupState(groupKey) {
243
283
  const group = inject(groupKey, void 0);
244
- const isInGroup = computed(() => !isEmpty(group));
284
+ const isInGroup = computed(() => group !== void 0);
245
285
  function getGroupOrLocalRef(propName, props, emit) {
246
- if (group == null ? void 0 : group.value) {
247
- const groupPropValue = unref(group.value)[propName];
286
+ const groupPropValue = group == null ? void 0 : group[propName];
287
+ if (groupPropValue) {
248
288
  return computed({
249
289
  get() {
250
- return groupPropValue == null ? void 0 : groupPropValue.value;
290
+ return groupPropValue.value;
251
291
  },
252
292
  set(value) {
253
293
  groupPropValue.value = value;
@@ -260,8 +300,9 @@ function useInjectedGroupState(groupKey) {
260
300
  return propRef.value;
261
301
  },
262
302
  set(value) {
263
- if (emit)
303
+ if (emit) {
264
304
  emit(`update:${propName}`, value);
305
+ }
265
306
  }
266
307
  });
267
308
  }
@@ -302,23 +343,16 @@ const VvAccordionProps = {
302
343
  not: Boolean
303
344
  };
304
345
  const VvAccordionEvents = ["update:modelValue"];
305
- function useGroupProps(props, emit) {
306
- const { group, isInGroup, getGroupOrLocalRef } = useInjectedGroupState(
346
+ function useGroupProps(props) {
347
+ const { group, isInGroup } = useInjectedGroupState(
307
348
  INJECTION_KEY_ACCORDION_GROUP
308
349
  );
309
- const { title, content } = toRefs(props);
310
- const modelValue = getGroupOrLocalRef("modelValue", props, emit);
311
- const not = getGroupOrLocalRef("not", props);
312
- const collapse = getGroupOrLocalRef("collapse", props);
313
350
  const disabled = computed(
314
- () => {
315
- var _a;
316
- return Boolean(props.disabled || ((_a = group == null ? void 0 : group.value) == null ? void 0 : _a.disabled.value));
317
- }
351
+ () => Boolean(props.disabled || (group == null ? void 0 : group.disabled.value))
318
352
  );
319
353
  const modifiers = computed(() => {
320
354
  let localModifiers = props.modifiers;
321
- let groupModifiers = group == null ? void 0 : group.value.modifiers.value;
355
+ let groupModifiers = group == null ? void 0 : group.modifiers.value;
322
356
  const toReturn = /* @__PURE__ */ new Set();
323
357
  if (localModifiers) {
324
358
  if (!Array.isArray(localModifiers)) {
@@ -336,16 +370,11 @@ function useGroupProps(props, emit) {
336
370
  });
337
371
  return {
338
372
  // group props
339
- modelValue,
340
- not,
341
373
  isInGroup,
342
374
  group,
343
- collapse,
344
375
  modifiers,
345
376
  disabled,
346
- // local props
347
- title,
348
- content
377
+ bus: group == null ? void 0 : group.bus
349
378
  };
350
379
  }
351
380
  function useModifiers(prefix, modifiers, others) {
@@ -381,61 +410,103 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
381
410
  ...__default__$1,
382
411
  props: VvAccordionProps,
383
412
  emits: VvAccordionEvents,
384
- setup(__props, { emit }) {
413
+ setup(__props, { expose: __expose, emit: __emit }) {
385
414
  const props = __props;
415
+ const emit = __emit;
386
416
  const attrs = useAttrs();
417
+ const modelValue = useVModel(props, "modelValue", emit);
387
418
  const accordionName = computed(
388
419
  () => props.name || (attrs == null ? void 0 : attrs.id) || uid()
389
420
  );
390
- const {
391
- modifiers,
392
- title,
393
- content,
394
- disabled,
395
- collapse,
421
+ const { title, content, not } = toRefs(props);
422
+ const { isInGroup, modifiers, disabled, bus } = useGroupProps(props);
423
+ const isExpanded = ref(false);
424
+ watch(
396
425
  modelValue,
397
- isInGroup,
398
- not
399
- } = useGroupProps(props, emit);
400
- const localModelValue = ref(false);
401
- const isOpen = computed({
402
- get: () => {
403
- let toReturn = modelValue.value;
404
- if (isInGroup.value) {
405
- if (collapse.value && Array.isArray(modelValue.value)) {
406
- toReturn = modelValue.value.includes(accordionName.value);
407
- } else {
408
- toReturn = modelValue.value === accordionName.value;
409
- }
410
- } else if (modelValue.value === void 0) {
411
- toReturn = localModelValue.value;
426
+ (newValue) => {
427
+ if (typeof newValue === "boolean") {
428
+ isExpanded.value = not.value ? !newValue : newValue;
412
429
  }
413
- return not.value ? !toReturn : toReturn;
414
430
  },
415
- set: (newValue) => {
416
- if (not.value) {
417
- newValue = !newValue;
418
- }
419
- if (isInGroup.value) {
420
- if (collapse.value && Array.isArray(modelValue.value)) {
421
- if (newValue) {
422
- modelValue.value.push(accordionName.value);
423
- return;
424
- }
425
- modelValue.value = modelValue.value.filter(
426
- (name) => name !== accordionName.value
427
- );
428
- return;
431
+ { immediate: true }
432
+ );
433
+ watch(isExpanded, (newValue) => {
434
+ modelValue.value = not.value ? !newValue : newValue;
435
+ });
436
+ bus == null ? void 0 : bus.on("toggle", ({ name, value }) => {
437
+ if (name !== accordionName.value) {
438
+ return;
439
+ }
440
+ isExpanded.value = value;
441
+ });
442
+ function onClick() {
443
+ if (disabled.value) {
444
+ return;
445
+ }
446
+ if (isInGroup.value) {
447
+ bus == null ? void 0 : bus.emit("toggle", {
448
+ name: accordionName.value,
449
+ value: !isExpanded.value
450
+ });
451
+ return;
452
+ }
453
+ isExpanded.value = !isExpanded.value;
454
+ }
455
+ watch(
456
+ accordionName,
457
+ (newValue, oldValue) => {
458
+ if (bus) {
459
+ if (oldValue && oldValue !== newValue) {
460
+ bus.emit("unregister", { name: oldValue });
429
461
  }
430
- modelValue.value = newValue ? accordionName.value : null;
431
- return;
462
+ bus.emit("register", { name: newValue });
432
463
  }
433
- if (modelValue.value === void 0 && typeof newValue === "boolean") {
434
- localModelValue.value = newValue;
435
- return;
436
- }
437
- modelValue.value = newValue;
464
+ },
465
+ {
466
+ immediate: true
467
+ }
468
+ );
469
+ onBeforeUnmount(() => {
470
+ if (bus) {
471
+ bus.emit("unregister", { name: accordionName.value });
472
+ }
473
+ });
474
+ function expand() {
475
+ if (isExpanded.value) {
476
+ return;
477
+ }
478
+ onClick();
479
+ }
480
+ function collapse() {
481
+ if (!isExpanded.value) {
482
+ return;
438
483
  }
484
+ onClick();
485
+ }
486
+ function groupExpand(name) {
487
+ if (!bus) {
488
+ console.warn(
489
+ `[VvAccordion]: You are trying to expand accordion group of "${accordionName.value}" but it is not in a group`
490
+ );
491
+ return;
492
+ }
493
+ bus.emit("expand", { name });
494
+ }
495
+ function groupCollapse(name) {
496
+ if (!bus) {
497
+ console.warn(
498
+ `[VvAccordion]: You are trying to collapse accordion group of "${accordionName.value}" but it is not in a group`
499
+ );
500
+ return;
501
+ }
502
+ bus == null ? void 0 : bus.emit("collapse", { name });
503
+ }
504
+ __expose({
505
+ isExpanded,
506
+ expand,
507
+ collapse,
508
+ groupExpand,
509
+ groupCollapse
439
510
  });
440
511
  const bemCssClasses = useModifiers(
441
512
  "vv-accordion",
@@ -444,29 +515,48 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
444
515
  disabled: disabled.value
445
516
  }))
446
517
  );
447
- const onClick = useToggle(isOpen);
448
518
  return (_ctx, _cache) => {
449
519
  return openBlock(), createElementBlock("details", {
450
520
  id: unref(accordionName),
451
521
  class: normalizeClass(unref(bemCssClasses)),
452
- open: unref(isOpen)
522
+ open: unref(isExpanded)
453
523
  }, [
454
524
  createElementVNode("summary", {
455
525
  "aria-controls": unref(accordionName),
456
- "aria-expanded": unref(isOpen),
526
+ "aria-expanded": unref(isExpanded),
457
527
  class: "vv-accordion__summary",
458
- onClick: _cache[0] || (_cache[0] = withModifiers(($event) => unref(onClick)(), ["prevent"]))
528
+ onClick: _cache[0] || (_cache[0] = withModifiers(($event) => onClick(), ["prevent"]))
459
529
  }, [
460
- renderSlot(_ctx.$slots, "summary", normalizeProps(guardReactiveProps({ open: unref(isOpen) })), () => [
461
- createTextVNode(toDisplayString(unref(title)), 1)
530
+ renderSlot(_ctx.$slots, "summary", normalizeProps(guardReactiveProps({
531
+ isExpanded: unref(isExpanded),
532
+ expand,
533
+ collapse,
534
+ groupExpand,
535
+ groupCollapse
536
+ })), () => [
537
+ createTextVNode(
538
+ toDisplayString(unref(title)),
539
+ 1
540
+ /* TEXT */
541
+ )
462
542
  ])
463
543
  ], 8, _hoisted_2),
464
544
  createElementVNode("div", {
465
- "aria-hidden": !unref(isOpen),
545
+ "aria-hidden": !unref(isExpanded),
466
546
  class: "vv-accordion__content"
467
547
  }, [
468
- renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps({ open: unref(isOpen) })), () => [
469
- createTextVNode(toDisplayString(unref(content)), 1)
548
+ renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps({
549
+ isExpanded: unref(isExpanded),
550
+ expand,
551
+ collapse,
552
+ groupExpand,
553
+ groupCollapse
554
+ })), () => [
555
+ createTextVNode(
556
+ toDisplayString(unref(content)),
557
+ 1
558
+ /* TEXT */
559
+ )
470
560
  ])
471
561
  ], 8, _hoisted_3)
472
562
  ], 10, _hoisted_1);
@@ -475,10 +565,14 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
475
565
  });
476
566
  const VvAccordionGroupProps = {
477
567
  ...ModifiersProps,
568
+ ...StorageProps,
478
569
  /**
479
570
  * VModel
480
571
  */
481
- modelValue: [String, Array],
572
+ modelValue: {
573
+ type: [String, Array],
574
+ default: void 0
575
+ },
482
576
  /**
483
577
  * Accordion items
484
578
  * @type VvAccordionGroupItem
@@ -505,22 +599,71 @@ const VvAccordionGroupProps = {
505
599
  /**
506
600
  * If true, the accordion items will be opened by default
507
601
  */
508
- not: Boolean,
509
- /**
510
- * Enable local storage persistence
511
- */
512
- storeKey: String
602
+ not: Boolean
513
603
  };
514
604
  const VvAccordionGroupEvents = ["update:modelValue"];
515
- function useProvideGroupState(groupState) {
516
- if (Object.keys(groupState).some(
517
- (k) => k !== "key" && !isRef(groupState[k])
518
- ))
519
- throw Error("One or more groupState props aren't ref.");
520
- provide(
521
- groupState.key,
522
- computed(() => groupState)
523
- );
605
+ function usePersistence(storageKey, storageType = StorageType.local, defaultValue) {
606
+ const localValue = ref();
607
+ if (defaultValue) {
608
+ localValue.value = defaultValue;
609
+ }
610
+ let storageValue;
611
+ if (storageKey) {
612
+ watch(
613
+ storageKey,
614
+ (newKey, oldKey) => {
615
+ const storage = unref(storageType) === StorageType.session ? sessionStorage : localStorage;
616
+ if (oldKey && oldKey !== newKey) {
617
+ storage.removeItem(oldKey);
618
+ }
619
+ if (newKey) {
620
+ storageValue = useStorage(
621
+ newKey,
622
+ (storageValue == null ? void 0 : storageValue.value) ?? localValue.value,
623
+ storage
624
+ );
625
+ return;
626
+ }
627
+ storageValue = void 0;
628
+ },
629
+ {
630
+ immediate: true
631
+ }
632
+ );
633
+ }
634
+ if (isRef(storageType)) {
635
+ watch(storageType, (newType, oldType) => {
636
+ if (storageKey == null ? void 0 : storageKey.value) {
637
+ if (newType) {
638
+ const storage = newType === StorageType.session ? sessionStorage : localStorage;
639
+ storageValue = useStorage(
640
+ storageKey.value,
641
+ (storageValue == null ? void 0 : storageValue.value) ?? localValue.value,
642
+ storage
643
+ );
644
+ }
645
+ if (oldType && oldType !== newType) {
646
+ const oldStorage = oldType === StorageType.session ? sessionStorage : localStorage;
647
+ oldStorage.removeItem(storageKey.value);
648
+ }
649
+ }
650
+ });
651
+ }
652
+ return computed({
653
+ get: () => {
654
+ return (storageValue == null ? void 0 : storageValue.value) ?? localValue.value;
655
+ },
656
+ set: (value) => {
657
+ if (storageValue) {
658
+ storageValue.value = value;
659
+ return;
660
+ }
661
+ localValue.value = value;
662
+ }
663
+ });
664
+ }
665
+ function useProvideGroupState(key, groupState) {
666
+ provide(key, groupState);
524
667
  }
525
668
  const __default__ = {
526
669
  name: "VvAccordionGroup"
@@ -529,57 +672,161 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
529
672
  ...__default__,
530
673
  props: VvAccordionGroupProps,
531
674
  emits: VvAccordionGroupEvents,
532
- setup(__props, { emit }) {
675
+ setup(__props, { expose: __expose, emit: __emit }) {
533
676
  const props = __props;
534
- const { disabled, collapse, modifiers, itemModifiers, items, not } = toRefs(props);
677
+ const emit = __emit;
678
+ const {
679
+ disabled,
680
+ modifiers,
681
+ itemModifiers,
682
+ items,
683
+ storageKey,
684
+ storageType
685
+ } = toRefs(props);
535
686
  watchEffect(() => {
536
- if (typeof props.modelValue === "string" && collapse.value) {
687
+ if (typeof props.modelValue === "string" && props.collapse) {
537
688
  console.warn(
538
689
  `[VvAccordionGroup]: modelValue is a string but collapse is true.`
539
690
  );
540
691
  }
541
692
  });
542
- let localModelValue = ref([]);
543
- watch(
544
- () => props.storeKey,
545
- (newKey) => {
546
- if (newKey) {
547
- localModelValue = useStorage(newKey, localModelValue.value);
548
- } else {
549
- localModelValue = ref([]);
550
- }
551
- },
552
- { immediate: true }
693
+ const accordionNames = reactive(/* @__PURE__ */ new Set());
694
+ const storageModelValue = usePersistence(
695
+ storageKey,
696
+ storageType,
697
+ []
553
698
  );
554
- const modelValue = computed({
699
+ const localModelValue = computed({
555
700
  get: () => {
556
- var _a;
557
- if (props.modelValue !== void 0) {
558
- if (!collapse.value) {
559
- return Array.isArray(props.modelValue) ? props.modelValue[0] : props.modelValue;
560
- }
701
+ if (props.modelValue !== null && props.modelValue !== void 0) {
561
702
  return props.modelValue;
562
703
  }
563
- return !collapse.value ? (_a = localModelValue.value) == null ? void 0 : _a[0] : localModelValue.value;
704
+ return storageModelValue.value;
564
705
  },
565
706
  set: (newValue) => {
566
- if (props.modelValue !== void 0) {
567
- if ((Array.isArray(props.modelValue) || collapse.value) && !Array.isArray(newValue)) {
568
- newValue = [newValue];
707
+ emit("update:modelValue", newValue);
708
+ storageModelValue.value = newValue;
709
+ }
710
+ });
711
+ const expandedAccordions = computed({
712
+ get: () => {
713
+ if (localModelValue.value === void 0) {
714
+ return /* @__PURE__ */ new Set();
715
+ }
716
+ let toReturn = /* @__PURE__ */ new Set();
717
+ if (props.not) {
718
+ if (typeof localModelValue.value === "string") {
719
+ toReturn = new Set(
720
+ [...accordionNames].filter(
721
+ (name) => name !== localModelValue.value
722
+ )
723
+ );
724
+ } else if (Array.isArray(localModelValue.value)) {
725
+ toReturn = new Set(
726
+ [...accordionNames].filter(
727
+ (name) => !localModelValue.value.includes(
728
+ name
729
+ )
730
+ )
731
+ );
569
732
  }
570
- return emit("update:modelValue", newValue);
733
+ } else if (typeof localModelValue.value === "string") {
734
+ toReturn = /* @__PURE__ */ new Set([localModelValue.value]);
735
+ } else if (Array.isArray(localModelValue.value)) {
736
+ toReturn = new Set(localModelValue.value);
571
737
  }
572
- localModelValue.value = Array.isArray(newValue) ? newValue : [newValue];
738
+ return toReturn;
739
+ },
740
+ set: (newValue) => {
741
+ if (props.not) {
742
+ localModelValue.value = [...accordionNames].filter(
743
+ (name) => !newValue.has(name)
744
+ );
745
+ return;
746
+ }
747
+ if (props.collapse) {
748
+ localModelValue.value = [...newValue];
749
+ return;
750
+ }
751
+ localModelValue.value = newValue.values().next().value;
573
752
  }
574
753
  });
575
- useProvideGroupState({
576
- key: INJECTION_KEY_ACCORDION_GROUP,
577
- modelValue,
754
+ onMounted(() => {
755
+ if (props.not && localModelValue.value === void 0) {
756
+ localModelValue.value = props.collapse ? [] : [...accordionNames.values()].splice(1, accordionNames.size);
757
+ }
758
+ nextTick(() => {
759
+ for (const name of accordionNames) {
760
+ bus.emit("toggle", {
761
+ name,
762
+ value: expandedAccordions.value.has(name)
763
+ });
764
+ }
765
+ });
766
+ });
767
+ const bus = mitt();
768
+ useProvideGroupState(INJECTION_KEY_ACCORDION_GROUP, {
578
769
  disabled,
579
- collapse,
580
770
  modifiers: itemModifiers,
581
- not
771
+ bus
772
+ });
773
+ bus.on("register", ({ name }) => {
774
+ accordionNames.add(name);
775
+ });
776
+ bus.on("unregister", ({ name }) => {
777
+ accordionNames.delete(name);
582
778
  });
779
+ bus.on("toggle", ({ name, value }) => {
780
+ const newValue = new Set(expandedAccordions.value);
781
+ if (value) {
782
+ if (!props.collapse) {
783
+ for (const item of newValue) {
784
+ if (item !== name) {
785
+ bus.emit("toggle", { name: item, value: false });
786
+ }
787
+ }
788
+ newValue.clear();
789
+ }
790
+ newValue.add(name);
791
+ expandedAccordions.value = newValue;
792
+ return;
793
+ }
794
+ newValue.delete(name);
795
+ expandedAccordions.value = newValue;
796
+ });
797
+ function expand(name) {
798
+ if (typeof name === "string") {
799
+ bus.emit("toggle", { name, value: true });
800
+ return;
801
+ }
802
+ if (Array.isArray(name)) {
803
+ for (const item of name) {
804
+ bus.emit("toggle", { name: item, value: true });
805
+ }
806
+ return;
807
+ }
808
+ for (const item of accordionNames) {
809
+ bus.emit("toggle", { name: item, value: true });
810
+ }
811
+ }
812
+ bus.on("expand", ({ name }) => expand(name));
813
+ function collapse(name) {
814
+ if (typeof name === "string") {
815
+ bus.emit("toggle", { name, value: false });
816
+ return;
817
+ }
818
+ if (Array.isArray(name)) {
819
+ for (const item of name) {
820
+ bus.emit("toggle", { name: item, value: false });
821
+ }
822
+ return;
823
+ }
824
+ for (const item of accordionNames) {
825
+ bus.emit("toggle", { name: item, value: false });
826
+ }
827
+ }
828
+ bus.on("collapse", ({ name }) => collapse(name));
829
+ __expose({ expandedAccordions, expand, collapse });
583
830
  const bemCssClasses = useModifiers(
584
831
  "vv-accordion-group",
585
832
  modifiers,
@@ -588,29 +835,62 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
588
835
  }))
589
836
  );
590
837
  return (_ctx, _cache) => {
591
- return openBlock(), createElementBlock("div", {
592
- class: normalizeClass(unref(bemCssClasses))
593
- }, [
594
- renderSlot(_ctx.$slots, "default", {}, () => [
595
- (openBlock(true), createElementBlock(Fragment, null, renderList(unref(items), (item) => {
596
- return openBlock(), createBlock(_sfc_main$1, mergeProps({
597
- key: item.title
598
- }, {
599
- name: item.name,
600
- title: item.title,
601
- content: item.content
602
- }), {
603
- header: withCtx((data) => [
604
- renderSlot(_ctx.$slots, `header::${item.name}`, normalizeProps(guardReactiveProps(data)))
605
- ]),
606
- details: withCtx((data) => [
607
- renderSlot(_ctx.$slots, `details::${item.name}`, normalizeProps(guardReactiveProps(data)))
608
- ]),
609
- _: 2
610
- }, 1040);
611
- }), 128))
612
- ])
613
- ], 2);
838
+ return openBlock(), createElementBlock(
839
+ "div",
840
+ {
841
+ class: normalizeClass(unref(bemCssClasses))
842
+ },
843
+ [
844
+ renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps({
845
+ expandedAccordions: unref(expandedAccordions),
846
+ expand,
847
+ collapse
848
+ })), () => [
849
+ (openBlock(true), createElementBlock(
850
+ Fragment,
851
+ null,
852
+ renderList(unref(items), (item) => {
853
+ return openBlock(), createBlock(
854
+ _sfc_main$1,
855
+ mergeProps({
856
+ key: item.title,
857
+ ref_for: true
858
+ }, {
859
+ name: item.name,
860
+ title: item.title,
861
+ content: item.content
862
+ }),
863
+ createSlots({
864
+ _: 2
865
+ /* DYNAMIC */
866
+ }, [
867
+ _ctx.$slots[`summary::${item.name}`] ? {
868
+ name: "summary",
869
+ fn: withCtx((data) => [
870
+ renderSlot(_ctx.$slots, `summary::${item.name}`, mergeProps({ ref_for: true }, data))
871
+ ]),
872
+ key: "0"
873
+ } : void 0,
874
+ _ctx.$slots[`content::${item.name}`] ? {
875
+ name: "default",
876
+ fn: withCtx((data) => [
877
+ renderSlot(_ctx.$slots, `content::${item.name}`, mergeProps({ ref_for: true }, data))
878
+ ]),
879
+ key: "1"
880
+ } : void 0
881
+ ]),
882
+ 1040
883
+ /* FULL_PROPS, DYNAMIC_SLOTS */
884
+ );
885
+ }),
886
+ 128
887
+ /* KEYED_FRAGMENT */
888
+ ))
889
+ ])
890
+ ],
891
+ 2
892
+ /* CLASS */
893
+ );
614
894
  };
615
895
  }
616
896
  });