@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,175 +1,217 @@
1
1
  import type { PropType } from 'vue'
2
+ import type { MaybeElement } from '@vueuse/core'
2
3
  import {
3
- ValidProps,
4
- InvalidProps,
5
- HintProps,
6
- LoadingProps,
7
- DisabledProps,
8
- ReadonlyProps,
9
- ModifiersProps,
10
- OptionsProps,
11
- IconProps,
12
- TabindexProps,
13
- FloatingLabelProps,
14
- UnselectableProps,
15
- IdNameProps,
16
- DropdownProps,
17
- LabelProps,
4
+ ValidProps,
5
+ InvalidProps,
6
+ HintProps,
7
+ LoadingProps,
8
+ DisabledProps,
9
+ ReadonlyProps,
10
+ ModifiersProps,
11
+ OptionsProps,
12
+ IconProps,
13
+ TabindexProps,
14
+ FloatingLabelProps,
15
+ IdNameProps,
16
+ DropdownProps,
17
+ LabelProps,
18
18
  } from '../../props'
19
19
  import type { Option } from '../../types/generic'
20
20
 
21
- export const VvComboboxEvents = [
22
- 'update:modelValue',
23
- 'change:search',
24
- 'focus',
25
- 'blur',
26
- ]
21
+ export type VvComboboxEvents = {
22
+ 'update:modelValue': [any]
23
+ 'update:search': [string]
24
+ /**
25
+ * @deprecated use update:search instead
26
+ */
27
+ 'change:search': [string]
28
+ 'focus': [MaybeElement]
29
+ 'blur': [MaybeElement]
30
+ }
27
31
 
28
32
  export const VvComboboxProps = {
29
- ...IdNameProps,
30
- ...TabindexProps,
31
- ...ValidProps,
32
- ...InvalidProps,
33
- ...HintProps,
34
- ...LoadingProps,
35
- ...DisabledProps,
36
- ...ReadonlyProps,
37
- ...ModifiersProps,
38
- ...OptionsProps,
39
- ...IconProps,
40
- ...FloatingLabelProps,
41
- ...UnselectableProps,
42
- ...DropdownProps,
43
- ...LabelProps,
44
- /**
45
- * Dropdown show / hide transition name
46
- */
47
- transitionName: {
48
- type: String,
49
- default: 'vv-dropdown--mobile-fade-block',
50
- },
51
- /**
52
- * modelValue can be a string, number, boolean, object or array of string, number, boolean, object
53
- */
54
- modelValue: {
55
- type: [String, Number, Boolean, Object, Array],
56
- default: undefined,
57
- },
58
- /**
59
- * Label for no search results
60
- */
61
- noResultsLabel: { type: String, default: 'No results' },
62
- /**
63
- * Label for no options available
64
- */
65
- noOptionsLabel: { type: String, default: 'No options available' },
66
- /**
67
- * Label for selected option hint
68
- */
69
- selectedHintLabel: { type: String, default: 'Selected' },
70
- /**
71
- * Label for deselect action button
72
- */
73
- deselectActionLabel: { type: String, default: 'Deselect' },
74
- /**
75
- * Label for select option hint
76
- */
77
- selectHintLabel: { type: String, default: 'Press enter to select' },
78
- /**
79
- * Label for deselected option hint
80
- */
81
- deselectHintLabel: { type: String, default: 'Press enter to remove' },
82
- /**
83
- * Label close button
84
- */
85
- closeLabel: { type: String, default: 'Close' },
86
- /**
87
- * Select input placeholder
88
- */
89
- placeholder: String,
90
- /**
91
- * Use input text to search on options
92
- */
93
- searchable: Boolean,
94
- /**
95
- * Search function to filter options
96
- */
97
- searchFunction: {
98
- type: Function as PropType<
33
+ ...IdNameProps,
34
+ ...TabindexProps,
35
+ ...ValidProps,
36
+ ...InvalidProps,
37
+ ...HintProps,
38
+ ...LoadingProps,
39
+ ...DisabledProps,
40
+ ...ReadonlyProps,
41
+ ...ModifiersProps,
42
+ ...OptionsProps,
43
+ ...IconProps,
44
+ ...FloatingLabelProps,
45
+ ...DropdownProps,
46
+ ...LabelProps,
47
+ /**
48
+ * Dropdown show / hide transition name
49
+ */
50
+ transitionName: {
51
+ type: String,
52
+ default: 'vv-dropdown--mobile-fade-block',
53
+ },
54
+ /**
55
+ * modelValue can be a string, number, boolean, object or array of string, number, boolean, object
56
+ */
57
+ modelValue: {
58
+ type: [String, Number, Boolean, Object, Array],
59
+ default: undefined,
60
+ },
61
+ /**
62
+ * Label for no search results
63
+ */
64
+ noResultsLabel: { type: String, default: 'No results' },
65
+ /**
66
+ * Label for no options available
67
+ */
68
+ noOptionsLabel: { type: String, default: 'No options available' },
69
+ /**
70
+ * Label for selected option hint
71
+ */
72
+ selectedHintLabel: { type: String, default: 'Selected' },
73
+ /**
74
+ * Label for deselect action button
75
+ */
76
+ deselectActionLabel: { type: String, default: 'Deselect' },
77
+ /**
78
+ * Label for select option hint
79
+ */
80
+ selectHintLabel: { type: String, default: 'Press enter to select' },
81
+ /**
82
+ * Label for deselected option hint
83
+ */
84
+ deselectHintLabel: { type: String, default: 'Press enter to remove' },
85
+ /**
86
+ * Label close button
87
+ */
88
+ closeLabel: { type: String, default: 'Close' },
89
+ /**
90
+ * Select input placeholder
91
+ */
92
+ placeholder: String,
93
+ /**
94
+ * Use input text to search on options
95
+ */
96
+ searchable: Boolean,
97
+ /**
98
+ * Search function to filter options
99
+ */
100
+ searchFunction: {
101
+ type: Function as PropType<
99
102
  (
100
- search: string,
101
- options: (Option | string)[],
103
+ search: string,
104
+ options: (Option | string)[],
102
105
  ) => (Option | string)[] | Promise<(Option | string)[]>
103
106
  >,
104
- default: undefined,
105
- },
106
- /**
107
- * On searchable select is the input search placeholder
108
- */
109
- searchPlaceholder: {
110
- type: String,
111
- default: 'Search...',
112
- },
113
- /**
114
- * The input search debounce time in ms
115
- */
116
- debounceSearch: {
117
- type: [Number, String],
118
- default: 0,
119
- },
120
- /**
121
- * Manage modelValue as string[] or object[]
122
- */
123
- multiple: Boolean,
124
- /**
125
- * The max number of selected values
126
- */
127
- maxValues: [Number, String],
128
- /**
129
- * The select label separator visible to the user
130
- */
131
- separator: { type: String, default: ', ' },
132
- /**
133
- * Show native select
134
- */
135
- native: Boolean,
136
- /**
137
- * Show badges
138
- */
139
- badges: Boolean,
140
- /**
141
- * Badge modifiers
142
- */
143
- badgeModifiers: {
144
- type: [String, Array] as PropType<string | string[]>,
145
- default: 'action sm',
146
- },
147
- /**
148
- * Set dropdown width to the same as the trigger
149
- */
150
- triggerWidth: {
151
- ...DropdownProps.triggerWidth,
152
- default: true,
153
- },
154
- /**
155
- * Dropdown modifiers
156
- */
157
- dropdownModifiers: {
158
- type: [String, Array] as PropType<string | string[]>,
159
- default: 'mobile',
160
- },
161
- /**
162
- * Open dropdown on focus
163
- */
164
- autoOpen: {
165
- type: Boolean,
166
- default: false,
167
- },
168
- /**
169
- * Keep open dropdown on single select
170
- */
171
- keepOpen: {
172
- type: Boolean,
173
- default: false,
174
- },
107
+ default: undefined,
108
+ },
109
+ /**
110
+ * On searchable select is the input search placeholder
111
+ */
112
+ searchPlaceholder: {
113
+ type: String,
114
+ default: 'Search...',
115
+ },
116
+ /**
117
+ * The input search debounce time in ms
118
+ */
119
+ debounceSearch: {
120
+ type: [Number, String],
121
+ default: 0,
122
+ },
123
+ /**
124
+ * Manage modelValue as string[] or object[]
125
+ */
126
+ multiple: Boolean,
127
+ /**
128
+ * The min number of selected values
129
+ */
130
+ minValues: {
131
+ type: [Number, String],
132
+ default: 0,
133
+ },
134
+ /**
135
+ * The max number of selected values
136
+ */
137
+ maxValues: [Number, String],
138
+ /**
139
+ * If true the input will be unselectable
140
+ * @deprecated use minValues instead
141
+ */
142
+ unselectable: { type: Boolean, default: true },
143
+ /**
144
+ * The select label separator visible to the user
145
+ */
146
+ separator: { type: String, default: ', ' },
147
+ /**
148
+ * Show native select
149
+ */
150
+ native: Boolean,
151
+ /**
152
+ * Show badges
153
+ */
154
+ badges: Boolean,
155
+ /**
156
+ * Badge modifiers
157
+ */
158
+ badgeModifiers: {
159
+ type: [String, Array] as PropType<string | string[]>,
160
+ default: 'action sm',
161
+ },
162
+ /**
163
+ * Set dropdown width to the same as the trigger
164
+ */
165
+ triggerWidth: {
166
+ ...DropdownProps.triggerWidth,
167
+ default: true,
168
+ },
169
+ /**
170
+ * Dropdown modifiers
171
+ */
172
+ dropdownModifiers: {
173
+ type: [String, Array] as PropType<string | string[]>,
174
+ default: 'mobile',
175
+ },
176
+ /**
177
+ * Open dropdown on focus
178
+ */
179
+ autoOpen: {
180
+ type: Boolean,
181
+ default: false,
182
+ },
183
+ /**
184
+ * Select first option automatically
185
+ */
186
+ autoselectFirst: {
187
+ type: Boolean,
188
+ default: false,
189
+ },
190
+ /**
191
+ * Keep open dropdown on single select
192
+ */
193
+ keepOpen: {
194
+ type: Boolean,
195
+ default: false,
196
+ },
197
+ }
198
+
199
+ // WARNING: This is a provisiaonal implementation, it may change in the future
200
+ export function useVvComboboxProps<T extends Option | string>() {
201
+ return {
202
+ ...VvComboboxProps,
203
+ options: {
204
+ ...VvComboboxProps.options,
205
+ type: Array as PropType<T[]>,
206
+ },
207
+ searchFunction: {
208
+ ...VvComboboxProps.searchFunction,
209
+ type: Function as PropType<
210
+ (
211
+ search: string,
212
+ options: T[],
213
+ ) => T[] | Promise<T[]>
214
+ >,
215
+ },
216
+ }
175
217
  }
@@ -1,144 +1,156 @@
1
- <script lang="ts">
2
- export default {
3
- name: 'VvDialog',
4
- }
5
- </script>
6
-
7
1
  <script setup lang="ts">
8
- import type { DialogHTMLAttributes } from 'vue'
9
- import VvIcon from '../VvIcon/VvIcon.vue'
10
- import { VvDialogEvents, VvDialogProps } from '.'
2
+ import type { DialogHTMLAttributes } from 'vue'
3
+ import VvIcon from '../VvIcon/VvIcon.vue'
4
+ import { VvDialogEvents, VvDialogProps } from '.'
5
+
6
+ // props, emit and template refs
7
+ const props = defineProps(VvDialogProps)
8
+
9
+ const emit = defineEmits(VvDialogEvents)
11
10
 
12
- // props, emit and template refs
13
- const props = defineProps(VvDialogProps)
14
- const emit = defineEmits(VvDialogEvents)
15
- const dialogEl: Ref<HTMLDialogElement | undefined> = ref()
11
+ const dialogEl: Ref<HTMLDialogElement | undefined> = ref()
16
12
 
17
- // data
18
- const modelValue = useVModel(props, 'modelValue', emit)
19
- const localModelValue = ref(false)
20
- const isOpened = computed({
21
- get: () => modelValue.value ?? localModelValue.value,
22
- set: (newValue) => {
23
- if (modelValue.value === undefined) {
24
- localModelValue.value = newValue
25
- return
26
- }
27
- modelValue.value = newValue
28
- },
29
- })
13
+ // data
14
+ const modelValue = useVModel(props, 'modelValue', emit)
15
+ const localModelValue = ref(false)
16
+ const isOpened = computed({
17
+ get: () => modelValue.value ?? localModelValue.value,
18
+ set: (newValue) => {
19
+ if (modelValue.value === undefined) {
20
+ localModelValue.value = newValue
21
+ return
22
+ }
23
+ modelValue.value = newValue
24
+ },
25
+ })
30
26
 
31
- // template ref
32
- const modalWrapper = ref(null)
27
+ // template ref
28
+ const modalWrapper = ref(null)
33
29
 
34
- // styles
35
- const dialogAttrs = computed(() => {
36
- const { id } = props
37
- return {
38
- id,
39
- } as DialogHTMLAttributes
40
- })
41
- const dialogClass = computed(() => {
42
- if (!props.size) {
43
- return 'vv-dialog'
44
- }
45
- return ['vv-dialog', `vv-dialog--${props.size}`]
46
- })
30
+ /**
31
+ * @description Define component classes with BEM style.
32
+ * @returns {Array} The component classes.
33
+ */
34
+ const { modifiers } = toRefs(props)
35
+ const bemCssClasses = useModifiers(
36
+ 'vv-dialog',
37
+ modifiers,
38
+ // DEPRECATED: Must be removed in the future
39
+ computed(() => {
40
+ if (props.size) {
41
+ return { [props.size]: !!props.size }
42
+ }
43
+ return {}
44
+ }),
45
+ )
47
46
 
48
- // transitions
49
- const transitioName = computed(() => `vv-dialog--${props.transition}`)
50
- const dialogTransitionHandlers = {
51
- 'before-enter': () => {
52
- if (!dialogEl.value?.open) {
53
- dialogEl.value?.showModal()
54
- }
55
- emit('open')
56
- emit('before-enter')
57
- },
58
- 'after-leave': () => {
59
- if (dialogEl.value?.open) {
60
- dialogEl.value?.close()
61
- }
62
- emit('close')
63
- emit('after-leave')
64
- },
65
- enter: () => {
66
- emit('enter')
67
- },
68
- 'after-enter': () => {
69
- emit('after-enter')
70
- },
71
- 'enter-cancelled': () => {
72
- emit('enter-cancelled')
73
- },
74
- 'before-leave': () => {
75
- emit('before-leave')
76
- },
77
- leave: () => {
78
- emit('leave')
79
- },
80
- 'leave-cancelled': () => {
81
- emit('leave-cancelled')
82
- },
83
- }
47
+ const dialogAttrs = computed(() => {
48
+ const { id } = props
49
+ return {
50
+ id,
51
+ } as DialogHTMLAttributes
52
+ })
84
53
 
85
- // methods
86
- onClickOutside(modalWrapper, () => {
87
- if (!props.keepOpen) {
88
- close()
89
- }
90
- })
54
+ // transitions
55
+ const transitioName = computed(() => `vv-dialog--${props.transition}`)
56
+ const dialogTransitionHandlers = {
57
+ 'before-enter': () => {
58
+ if (!dialogEl.value?.open) {
59
+ dialogEl.value?.showModal()
60
+ }
61
+ emit('open')
62
+ emit('beforeEnter')
63
+ },
64
+ 'after-leave': () => {
65
+ if (dialogEl.value?.open) {
66
+ dialogEl.value?.close()
67
+ }
68
+ emit('close')
69
+ emit('afterLeave')
70
+ },
71
+ 'enter': () => {
72
+ emit('enter')
73
+ },
74
+ 'after-enter': () => {
75
+ emit('afterEnter')
76
+ },
77
+ 'enter-cancelled': () => {
78
+ emit('enterCancelled')
79
+ },
80
+ 'before-leave': () => {
81
+ emit('beforeLeave')
82
+ },
83
+ 'leave': () => {
84
+ emit('leave')
85
+ },
86
+ 'leave-cancelled': () => {
87
+ emit('leaveCancelled')
88
+ },
89
+ }
91
90
 
92
- function close() {
93
- isOpened.value = false
94
- }
91
+ // methods
92
+ onClickOutside(modalWrapper, () => {
93
+ if (!props.keepOpen) {
94
+ close()
95
+ }
96
+ })
95
97
 
96
- function open() {
97
- isOpened.value = true
98
- }
98
+ function close() {
99
+ isOpened.value = false
100
+ }
99
101
 
100
- defineExpose({ close, open })
102
+ function open() {
103
+ isOpened.value = true
104
+ }
101
105
 
102
- const onCancel = () => {
103
- if (!props.keepOpen) {
104
- close()
105
- }
106
- }
106
+ defineExpose({ close, open })
107
+
108
+ function onCancel() {
109
+ if (!props.keepOpen) {
110
+ close()
111
+ }
112
+ }
113
+ </script>
114
+
115
+ <script lang="ts">
116
+ export default {
117
+ name: 'VvDialog',
118
+ }
107
119
  </script>
108
120
 
109
121
  <template>
110
- <Transition :name="transitioName" v-on="dialogTransitionHandlers">
111
- <dialog
112
- v-show="isOpened"
113
- v-bind="dialogAttrs"
114
- ref="dialogEl"
115
- :class="dialogClass"
116
- @cancel.stop.prevent="onCancel"
117
- >
118
- <article ref="modalWrapper" class="vv-dialog__wrapper">
119
- <header v-if="$slots.header || title" class="vv-dialog__header">
120
- <!-- @slot Header slot -->
121
- <slot name="header">
122
- {{ title }}
123
- <button
124
- type="button"
125
- aria-label="Close"
126
- class="vv-dialog__close"
127
- @click.passive="close"
128
- >
129
- <VvIcon name="close" />
130
- </button>
131
- </slot>
132
- </header>
133
- <div class="vv-dialog__content">
134
- <!-- @slot Content slot -->
135
- <slot />
136
- </div>
137
- <footer v-if="$slots.footer" class="vv-dialog__footer">
138
- <!-- @slot Footer slot -->
139
- <slot name="footer" />
140
- </footer>
141
- </article>
142
- </dialog>
143
- </Transition>
122
+ <Transition :name="transitioName" v-on="dialogTransitionHandlers">
123
+ <dialog
124
+ v-show="isOpened"
125
+ v-bind="dialogAttrs"
126
+ ref="dialogEl"
127
+ :class="bemCssClasses"
128
+ @cancel.stop.prevent="onCancel"
129
+ >
130
+ <article ref="modalWrapper" class="vv-dialog__wrapper">
131
+ <header v-if="$slots.header || title" class="vv-dialog__header">
132
+ <!-- @slot Header slot -->
133
+ <slot name="header">
134
+ {{ title }}
135
+ <button
136
+ type="button"
137
+ aria-label="Close"
138
+ class="vv-dialog__close"
139
+ @click.passive="close"
140
+ >
141
+ <VvIcon name="close" />
142
+ </button>
143
+ </slot>
144
+ </header>
145
+ <div class="vv-dialog__content">
146
+ <!-- @slot Content slot -->
147
+ <slot />
148
+ </div>
149
+ <footer v-if="$slots.footer" class="vv-dialog__footer">
150
+ <!-- @slot Footer slot -->
151
+ <slot name="footer" />
152
+ </footer>
153
+ </article>
154
+ </dialog>
155
+ </Transition>
144
156
  </template>