@volverjs/ui-vue 0.0.10-beta.5 → 0.0.10-beta.50

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