@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,17 +1,19 @@
1
1
  import {
2
- DEFAULT_ALERT_AUTO_CLOSE,
3
- DEFAULT_ALERT_DISMISSABLE,
4
- DEFAULT_ALERT_GROUP,
5
- DEFAULT_ALERT_MODIFIERS,
6
- DEFAULT_ALERT_INFO_ICON,
7
- DefaultAlertIconMap,
2
+ DEFAULT_ALERT_AUTO_CLOSE,
3
+ DEFAULT_ALERT_DISMISSABLE,
4
+ DEFAULT_ALERT_GROUP,
5
+ DEFAULT_ALERT_MODIFIERS,
6
+ DEFAULT_ALERT_INFO_ICON,
7
+ DefaultAlertIconMap,
8
8
  } from '@/constants'
9
- import type { Alert, AlertModifiers } from '@/types/alert'
9
+ import type { Alert } from '@/types/alert'
10
+
11
+ type AlertInGroup = Alert & { timestamp: number, group: string }
10
12
 
11
13
  const groups = reactive(
12
- new Map<string, Map<string, Alert>>([
13
- [DEFAULT_ALERT_GROUP, new Map<string, Alert>()],
14
- ]),
14
+ new Map<string, Map<string, AlertInGroup>>([
15
+ [DEFAULT_ALERT_GROUP, new Map<string, AlertInGroup>()],
16
+ ]),
15
17
  )
16
18
 
17
19
  /**
@@ -31,73 +33,74 @@ const groups = reactive(
31
33
  * addAlert: Function to add alert,
32
34
  * removeAlert: Function to remove alert,
33
35
  * getAlerts: Function to get alerts by group
34
- * }
36
+ * } the reactive list of alerts, groups, addAlert, removeAlert and getAlerts functions
35
37
  */
36
- export const useAlert = () => {
37
- const addAlert = (
38
- {
39
- id = crypto.randomUUID(),
40
- group = DEFAULT_ALERT_GROUP,
41
- title,
42
- icon = DEFAULT_ALERT_INFO_ICON,
43
- content,
44
- footer,
45
- modifiers = DEFAULT_ALERT_MODIFIERS,
46
- dismissable = DEFAULT_ALERT_DISMISSABLE,
47
- autoClose = DEFAULT_ALERT_AUTO_CLOSE,
48
- } = {} as Partial<Alert>,
49
- ) => {
50
- if (!groups.has(group)) {
51
- groups.set(group, new Map<string, Alert>())
52
- }
53
- const groupMap = groups.get(group)
54
- const normalizedModifiers =
55
- typeof modifiers === 'string' ? modifiers.split(' ') : modifiers
38
+ export function useAlert() {
39
+ const addAlert = (
40
+ {
41
+ id = crypto.randomUUID(),
42
+ group = DEFAULT_ALERT_GROUP,
43
+ title,
44
+ icon = DEFAULT_ALERT_INFO_ICON,
45
+ content,
46
+ footer,
47
+ modifiers = DEFAULT_ALERT_MODIFIERS,
48
+ dismissable = DEFAULT_ALERT_DISMISSABLE,
49
+ autoClose = DEFAULT_ALERT_AUTO_CLOSE,
50
+ timestamp = Date.now(),
51
+ } = {} as Partial<AlertInGroup>,
52
+ ) => {
53
+ if (!groups.has(group)) {
54
+ groups.set(group, new Map<string, AlertInGroup>())
55
+ }
56
+ const groupMap = groups.get(group)
57
+ const normalizedModifiers
58
+ = typeof modifiers === 'string' ? modifiers.split(' ') : modifiers
56
59
 
57
- if (!icon) {
58
- const alertModifier = normalizedModifiers.find((modifier) =>
59
- DefaultAlertIconMap.has(modifier as AlertModifiers),
60
- ) as AlertModifiers | undefined
60
+ if (!icon) {
61
+ const alertModifier = normalizedModifiers.find(modifier =>
62
+ DefaultAlertIconMap.has(modifier),
63
+ )
61
64
 
62
- if (alertModifier) {
63
- icon = DefaultAlertIconMap.get(alertModifier) as string
64
- }
65
- }
66
- groupMap?.set(id.toString(), {
67
- id,
68
- group,
69
- title,
70
- icon,
71
- content,
72
- footer,
73
- modifiers,
74
- dismissable,
75
- autoClose,
76
- timestamp: Date.now(),
77
- })
78
- }
65
+ if (alertModifier) {
66
+ icon = DefaultAlertIconMap.get(alertModifier) as string
67
+ }
68
+ }
69
+ groupMap?.set(id.toString(), {
70
+ id,
71
+ group,
72
+ title,
73
+ icon,
74
+ content,
75
+ footer,
76
+ modifiers,
77
+ dismissable,
78
+ autoClose,
79
+ timestamp,
80
+ })
81
+ }
79
82
 
80
- const removeAlert = (id: string | number, group = DEFAULT_ALERT_GROUP) => {
81
- const groupMap = groups.get(group)
82
- groupMap?.delete(id.toString())
83
- }
83
+ const removeAlert = (id: string | number, group = DEFAULT_ALERT_GROUP) => {
84
+ const groupMap = groups.get(group)
85
+ groupMap?.delete(id.toString())
86
+ }
84
87
 
85
- const getAlerts = (group = DEFAULT_ALERT_GROUP) => {
86
- return computed(() => {
87
- const groupMap = groups.get(group)
88
- return groupMap && groupMap instanceof Map
89
- ? Array.from(groupMap?.values()).sort(
90
- (a, b) => a.timestamp - b.timestamp,
91
- )
92
- : []
93
- })
94
- }
88
+ const getAlerts = (group = DEFAULT_ALERT_GROUP) => {
89
+ return computed(() => {
90
+ const groupMap = groups.get(group)
91
+ return groupMap && groupMap instanceof Map
92
+ ? Array.from(groupMap?.values()).sort(
93
+ (a, b) => a.timestamp - b.timestamp,
94
+ )
95
+ : []
96
+ })
97
+ }
95
98
 
96
- return {
97
- groups,
98
- alerts: getAlerts(),
99
- addAlert,
100
- removeAlert,
101
- getAlerts,
102
- }
99
+ return {
100
+ groups,
101
+ alerts: getAlerts(),
102
+ addAlert,
103
+ removeAlert,
104
+ getAlerts,
105
+ }
103
106
  }
@@ -4,5 +4,5 @@ import { INJECTION_KEY_ALERT_GROUP } from '../../constants'
4
4
  * Injects alert group name
5
5
  */
6
6
  export function useInjectedAlertGroup() {
7
- return inject(INJECTION_KEY_ALERT_GROUP, {})
7
+ return inject(INJECTION_KEY_ALERT_GROUP, {})
8
8
  }
@@ -7,17 +7,17 @@ import { INJECTION_KEY_ALERT_GROUP } from '@/constants'
7
7
  * @param {Ref<string | undefined>} name the alert group name
8
8
  */
9
9
  export function useProvideAlertGroup({
10
- name,
10
+ name,
11
11
  }: {
12
- name: Ref<string | undefined>
12
+ name: Ref<string | undefined>
13
13
  }) {
14
- const bus = mitt<{
15
- close: string
16
- }>()
17
- provide(INJECTION_KEY_ALERT_GROUP, {
18
- name,
19
- bus,
20
- })
14
+ const bus = mitt<{
15
+ close: string
16
+ }>()
17
+ provide(INJECTION_KEY_ALERT_GROUP, {
18
+ name,
19
+ bus,
20
+ })
21
21
 
22
- return bus
22
+ return bus
23
23
  }
@@ -1,26 +1,26 @@
1
1
  import {
2
- INJECTION_KEY_DROPDOWN_TRIGGER,
3
- INJECTION_KEY_DROPDOWN_ACTION,
4
- INJECTION_KEY_DROPDOWN_ITEM,
2
+ INJECTION_KEY_DROPDOWN_TRIGGER,
3
+ INJECTION_KEY_DROPDOWN_ACTION,
4
+ INJECTION_KEY_DROPDOWN_ITEM,
5
5
  } from '../../constants'
6
6
 
7
7
  /**
8
8
  * Injects dropdown reference and the event bus
9
9
  */
10
10
  export function useInjectedDropdownTrigger() {
11
- return inject(INJECTION_KEY_DROPDOWN_TRIGGER, {})
11
+ return inject(INJECTION_KEY_DROPDOWN_TRIGGER, {})
12
12
  }
13
13
 
14
14
  /**
15
15
  * Injects dropdown item role
16
16
  */
17
17
  export function useInjectedDropdownItem() {
18
- return inject(INJECTION_KEY_DROPDOWN_ITEM, {})
18
+ return inject(INJECTION_KEY_DROPDOWN_ITEM, {})
19
19
  }
20
20
 
21
21
  /**
22
22
  * Injects dropdown action role
23
23
  */
24
24
  export function useInjectedDropdownAction() {
25
- return inject(INJECTION_KEY_DROPDOWN_ACTION, {})
25
+ return inject(INJECTION_KEY_DROPDOWN_ACTION, {})
26
26
  }
@@ -1,12 +1,13 @@
1
1
  import { type Ref, Fragment } from 'vue'
2
2
  import mitt from 'mitt'
3
3
  import {
4
- INJECTION_KEY_DROPDOWN_TRIGGER,
5
- INJECTION_KEY_DROPDOWN_ACTION,
6
- INJECTION_KEY_DROPDOWN_ITEM,
7
- DropdownRole,
8
- DropdownItemRole,
9
- ActionRoles,
4
+ type DropdownItemState,
5
+ INJECTION_KEY_DROPDOWN_TRIGGER,
6
+ INJECTION_KEY_DROPDOWN_ACTION,
7
+ INJECTION_KEY_DROPDOWN_ITEM,
8
+ DropdownRole,
9
+ DropdownItemRole,
10
+ ActionRoles,
10
11
  } from '../../constants'
11
12
 
12
13
  /**
@@ -14,45 +15,45 @@ import {
14
15
  * @param {Ref<HTMLElement | null>} reference the dropdown reference
15
16
  */
16
17
  export function useProvideDropdownTrigger({
17
- reference,
18
- id,
19
- expanded,
20
- aria,
18
+ reference,
19
+ id,
20
+ expanded,
21
+ aria,
21
22
  }: {
22
- reference: Ref<HTMLElement | null>
23
- id: Ref<string | number>
24
- expanded: Ref<boolean>
25
- aria: Ref<{
26
- 'aria-controls': string
27
- 'aria-haspopup': boolean
28
- 'aria-expanded': boolean
29
- }>
23
+ reference: Ref<HTMLElement | null>
24
+ id: Ref<string | number>
25
+ expanded: Ref<boolean>
26
+ aria: Ref<{
27
+ 'aria-controls': string
28
+ 'aria-haspopup': boolean
29
+ 'aria-expanded': boolean
30
+ }>
30
31
  }) {
31
- const bus = mitt<{
32
- click: Event
33
- mouseover: Event
34
- mouseleave: Event
35
- }>()
36
- const component = defineComponent({
37
- name: 'VvDropdownTriggerProvider',
38
- setup() {
39
- provide(INJECTION_KEY_DROPDOWN_TRIGGER, {
40
- reference,
41
- id,
42
- expanded,
43
- aria,
44
- bus,
45
- })
46
- },
47
- render() {
48
- return h(Fragment, {}, this.$slots.default?.())
49
- },
50
- })
32
+ const bus = mitt<{
33
+ click: Event
34
+ mouseover: Event
35
+ mouseleave: Event
36
+ }>()
37
+ const component = defineComponent({
38
+ name: 'VvDropdownTriggerProvider',
39
+ setup() {
40
+ provide(INJECTION_KEY_DROPDOWN_TRIGGER, {
41
+ reference,
42
+ id,
43
+ expanded,
44
+ aria,
45
+ bus,
46
+ })
47
+ },
48
+ render() {
49
+ return h(Fragment, {}, this.$slots.default?.())
50
+ },
51
+ })
51
52
 
52
- return {
53
- bus,
54
- component,
55
- }
53
+ return {
54
+ bus,
55
+ component,
56
+ }
56
57
  }
57
58
 
58
59
  /**
@@ -60,22 +61,21 @@ export function useProvideDropdownTrigger({
60
61
  * @param {Ref<string>} role the dropdown item role
61
62
  */
62
63
  export function useProvideDropdownItem({
63
- role,
64
- expanded,
65
- }: {
66
- role: Ref<`${DropdownRole}`>
67
- expanded: Ref<boolean>
64
+ role,
65
+ ...others
66
+ }: Omit<DropdownItemState, 'role'> & {
67
+ role: Ref<`${DropdownRole}`>
68
68
  }) {
69
- const itemRole = computed(() =>
70
- role.value === DropdownRole.listbox
71
- ? DropdownItemRole.option
72
- : DropdownItemRole.presentation,
73
- )
74
- provide(INJECTION_KEY_DROPDOWN_ITEM, {
75
- role: itemRole,
76
- expanded,
77
- })
78
- return { itemRole }
69
+ const itemRole = computed(() =>
70
+ role.value === DropdownRole.listbox
71
+ ? DropdownItemRole.option
72
+ : DropdownItemRole.presentation,
73
+ )
74
+ provide(INJECTION_KEY_DROPDOWN_ITEM, {
75
+ role: itemRole,
76
+ ...others,
77
+ })
78
+ return { itemRole }
79
79
  }
80
80
 
81
81
  /**
@@ -83,12 +83,12 @@ export function useProvideDropdownItem({
83
83
  * @param {Ref<string>} role the dropdown item role
84
84
  */
85
85
  export function useProvideDropdownAction({
86
- expanded,
86
+ expanded,
87
87
  }: {
88
- expanded?: Ref<boolean>
88
+ expanded?: Ref<boolean>
89
89
  }) {
90
- provide(INJECTION_KEY_DROPDOWN_ACTION, {
91
- role: ref(ActionRoles.menuitem),
92
- expanded,
93
- })
90
+ provide(INJECTION_KEY_DROPDOWN_ACTION, {
91
+ role: ref(ActionRoles.menuitem),
92
+ expanded,
93
+ })
94
94
  }
@@ -1,51 +1,55 @@
1
- import type { Ref } from 'vue'
2
- import type GroupState from '../../types/group'
1
+ import type { Ref, InjectionKey } from 'vue'
3
2
 
4
3
  /**
5
4
  * Injects a group state
6
5
  */
7
- export function useInjectedGroupState<GroupStateType extends GroupState>(
8
- groupKey: string | symbol,
6
+ export function useInjectedGroupState<GroupStateType>(
7
+ groupKey: InjectionKey<GroupStateType>,
9
8
  ) {
10
- // Get group state
11
- const group = inject<Ref<GroupStateType> | undefined>(groupKey, undefined)
9
+ // Get group state
10
+ const group = inject<GroupStateType | undefined>(groupKey, undefined)
12
11
 
13
- // Check if component is in group
14
- const isInGroup = computed(() => !isEmpty(group))
12
+ // Check if component is in group
13
+ const isInGroup = computed(() => group !== undefined)
15
14
 
16
- /**
17
- * Get a group or local property
18
- */
19
- function getGroupOrLocalRef<PropsType extends object>(
20
- propName: keyof GroupStateType,
21
- props: PropsType,
22
- emit?: (event: string, ...args: unknown[]) => void,
23
- ) {
24
- if (group?.value) {
25
- const groupPropValue = unref(group.value)[propName] as Ref<unknown>
26
- return computed({
27
- get() {
28
- return groupPropValue?.value
29
- },
30
- set(value: unknown) {
31
- groupPropValue.value = value
32
- },
33
- })
34
- }
35
- const propRef = toRef(props, propName as keyof PropsType)
36
- return computed({
37
- get() {
38
- return propRef.value
39
- },
40
- set(value: unknown) {
41
- if (emit) emit(`update:${propName as string}`, value)
42
- },
43
- })
44
- }
15
+ /**
16
+ * Get a group or local property
17
+ */
18
+ function getGroupOrLocalRef<
19
+ TProps extends object,
20
+ TName extends keyof GroupStateType,
21
+ >(
22
+ propName: TName,
23
+ props: TProps,
24
+ emit?: (event: string, ...args: unknown[]) => void,
25
+ ) {
26
+ const groupPropValue = group?.[propName] as Ref | undefined
27
+ if (groupPropValue) {
28
+ return computed({
29
+ get() {
30
+ return groupPropValue.value
31
+ },
32
+ set(value: unknown) {
33
+ groupPropValue.value = value
34
+ },
35
+ }) as GroupStateType[TName]
36
+ }
37
+ const propRef = toRef(props, propName as unknown as keyof TProps)
38
+ return computed({
39
+ get() {
40
+ return propRef.value
41
+ },
42
+ set(value: unknown) {
43
+ if (emit) {
44
+ emit(`update:${propName as string}`, value)
45
+ }
46
+ },
47
+ }) as GroupStateType[TName]
48
+ }
45
49
 
46
- return {
47
- group,
48
- isInGroup,
49
- getGroupOrLocalRef,
50
- }
50
+ return {
51
+ group,
52
+ isInGroup,
53
+ getGroupOrLocalRef,
54
+ }
51
55
  }
@@ -1,20 +1,14 @@
1
- import type GroupState from '../../types/group'
1
+ import type { Ref, InjectionKey } from 'vue'
2
+ import type { Emitter } from 'mitt'
2
3
 
3
4
  /**
4
5
  * Share part of the state of the component with all its children.
5
- * @param {IGroupState} groupState the group state with all group options
6
6
  */
7
- export function useProvideGroupState<GroupStateType extends GroupState>(
8
- groupState: GroupStateType,
9
- ) {
10
- if (
11
- Object.keys(groupState).some(
12
- (k) => k !== 'key' && !isRef(groupState[k]),
13
- )
14
- )
15
- throw Error("One or more groupState props aren't ref.")
16
- provide(
17
- groupState.key,
18
- computed(() => groupState),
19
- )
7
+ export function useProvideGroupState<
8
+ TGroupState extends Record<
9
+ string,
10
+ Ref<unknown> | Emitter<any>
11
+ >,
12
+ >(key: InjectionKey<TGroupState>, groupState: TGroupState) {
13
+ provide(key, groupState)
20
14
  }
@@ -1 +1,2 @@
1
1
  export { useAlert } from './alert/useAlert'
2
+ export { useBlurhash } from './useBlurhash'
@@ -0,0 +1,68 @@
1
+ import { wrap } from 'comlink'
2
+ import Pica from 'pica'
3
+ import type { BlurhashWorkerType } from '@/types/blurhash'
4
+ import BlurhashWorker from '@/workers/blurhash?worker&inline'
5
+
6
+ const remoteFunction = wrap<BlurhashWorkerType>(new BlurhashWorker())
7
+
8
+ function loadImage(src: string): Promise<CanvasImageSource> {
9
+ return new Promise((resolve, reject) => {
10
+ const img = new Image()
11
+ img.onload = () => resolve(img)
12
+ img.onerror = (...args) => reject(args)
13
+ img.src = src
14
+ })
15
+ }
16
+
17
+ function getWidthHeightFromMaxSize(width: number, height: number, maxSize: number) {
18
+ if (width > height) {
19
+ return {
20
+ width: maxSize,
21
+ height: Math.round(maxSize * (height / width)),
22
+ }
23
+ }
24
+ return {
25
+ width: Math.round(maxSize * (width / height)),
26
+ height: maxSize,
27
+ }
28
+ }
29
+
30
+ async function resizeImage(image: ImageBitmap | HTMLImageElement | HTMLCanvasElement | File | Blob, width: number, height: number) {
31
+ const resizer = new Pica()
32
+ const canvas = document.createElement('canvas')
33
+ canvas.width = width
34
+ canvas.height = height
35
+ const result = await resizer.resize(image, canvas)
36
+ return result.getContext('2d')?.getImageData(0, 0, width, height).data
37
+ }
38
+
39
+ export function useBlurhash() {
40
+ async function encode(file: File) {
41
+ const imageUrl = URL.createObjectURL(file)
42
+ const image = await loadImage(imageUrl)
43
+ if ('width' in image && 'height' in image) {
44
+ const { width: newWidth, height: newHeight }
45
+ = getWidthHeightFromMaxSize(
46
+ image.width as number,
47
+ image.height as number,
48
+ 32,
49
+ )
50
+ const imageData = await resizeImage(
51
+ image as ImageBitmap,
52
+ newWidth,
53
+ newHeight,
54
+ )
55
+ if (imageData) {
56
+ return remoteFunction.encode(
57
+ imageData,
58
+ newWidth,
59
+ newHeight,
60
+ 4,
61
+ 4,
62
+ )
63
+ }
64
+ }
65
+ }
66
+
67
+ return { encode, decode: remoteFunction.decode, loadImage }
68
+ }
@@ -1,16 +1,16 @@
1
1
  import type { MaybeElement, MaybeElementRef } from '@vueuse/core'
2
2
 
3
3
  export function useComponentFocus(
4
- inputTemplateRef: MaybeElementRef<MaybeElement>,
5
- emit: (event: 'focus' | 'blur', value: unknown) => void,
4
+ inputTemplateRef: MaybeElementRef<MaybeElement>,
5
+ emit: ((name: 'blur', ...args: any[]) => void) & ((name: 'focus', ...args: any[]) => void) & ((name: any, ...args: any[]) => void),
6
6
  ) {
7
- const { focused } = useFocus(inputTemplateRef)
7
+ const { focused } = useFocus(inputTemplateRef)
8
8
 
9
- watch(focused, (newValue) => {
10
- emit(newValue ? 'focus' : 'blur', unref(inputTemplateRef))
11
- })
9
+ watch(focused, (newValue) => {
10
+ emit(newValue ? 'focus' : 'blur', unref(inputTemplateRef))
11
+ })
12
12
 
13
- return {
14
- focused,
15
- }
13
+ return {
14
+ focused,
15
+ }
16
16
  }