@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,41 +1,42 @@
1
1
  import type { Ref } from 'vue'
2
+ import type { VvIconProps } from '../components/VvIcon'
2
3
  import { Position, Side } from '../constants'
3
4
 
4
5
  export function useComponentIcon(
5
- icon: Ref<string | object | undefined> | undefined,
6
- iconPosition: Ref<string>,
6
+ icon?: Ref<string | VvIconProps | undefined>,
7
+ iconPosition?: Ref<string | undefined>,
7
8
  ) {
8
- const hasIconBefore = computed(() =>
9
- Boolean(icon?.value && iconPosition.value === Position.before),
10
- )
11
- const hasIconAfter = computed(() =>
12
- Boolean(icon?.value && iconPosition.value === Position.after),
13
- )
14
- const hasIconLeft = computed(() =>
15
- Boolean(icon?.value && iconPosition.value === Side.left),
16
- )
17
- const hasIconRight = computed(() =>
18
- Boolean(icon?.value && iconPosition.value === Side.right),
19
- )
20
- const hasIconTop = computed(() =>
21
- Boolean(icon?.value && iconPosition.value === Side.top),
22
- )
23
- const hasIconBottom = computed(() =>
24
- Boolean(icon?.value && iconPosition.value === Side.bottom),
25
- )
26
- const hasIcon = computed(() => {
27
- if (typeof icon?.value === 'string') {
28
- return { name: icon?.value }
29
- }
30
- return icon?.value
31
- })
32
- return {
33
- hasIcon,
34
- hasIconLeft,
35
- hasIconRight,
36
- hasIconTop,
37
- hasIconBottom,
38
- hasIconBefore,
39
- hasIconAfter,
40
- }
9
+ const hasIcon = computed(() => {
10
+ if (typeof icon?.value === 'string') {
11
+ return { name: icon?.value }
12
+ }
13
+ return icon?.value
14
+ })
15
+ const hasIconBefore = computed(() =>
16
+ iconPosition?.value === Position.before ? hasIcon.value : undefined,
17
+ )
18
+ const hasIconAfter = computed(() =>
19
+ iconPosition?.value === Position.after ? hasIcon.value : undefined,
20
+ )
21
+ const hasIconLeft = computed(() =>
22
+ iconPosition?.value === Side.left ? hasIcon.value : undefined,
23
+ )
24
+ const hasIconRight = computed(() =>
25
+ iconPosition?.value === Side.right ? hasIcon.value : undefined,
26
+ )
27
+ const hasIconTop = computed(() =>
28
+ iconPosition?.value === Side.top ? hasIcon.value : undefined,
29
+ )
30
+ const hasIconBottom = computed(() =>
31
+ iconPosition?.value === Side.bottom ? hasIcon.value : undefined,
32
+ )
33
+ return {
34
+ hasIcon,
35
+ hasIconLeft,
36
+ hasIconRight,
37
+ hasIconTop,
38
+ hasIconBottom,
39
+ hasIconBefore,
40
+ hasIconAfter,
41
+ }
41
42
  }
@@ -1,32 +1,32 @@
1
1
  import type { Ref } from 'vue'
2
2
 
3
3
  export function useDebouncedInput(
4
- modelValue: Ref | undefined,
5
- emit: (event: string, value: string | number) => void,
6
- ms: string | number = 0,
7
- {
8
- getter = (value) => value,
9
- setter = (value) => value,
10
- }: {
11
- getter?: (value: string | number) => string | number
12
- setter?: (value: string | number) => string | number
13
- } = {},
4
+ modelValue: Ref | undefined,
5
+ emit: (event: string, value: string | number) => void,
6
+ ms: string | number = 0,
7
+ {
8
+ getter = value => value,
9
+ setter = value => value,
10
+ }: {
11
+ getter?: (value: string | number) => string | number
12
+ setter?: (value: string | number) => string | number
13
+ } = {},
14
14
  ): Ref {
15
- let timeout: NodeJS.Timeout
15
+ let timeout: NodeJS.Timeout
16
16
 
17
- if (typeof ms === 'string') {
18
- ms = parseInt(ms)
19
- }
17
+ if (typeof ms === 'string') {
18
+ ms = Number.parseInt(ms)
19
+ }
20
20
 
21
- return computed({
22
- get: () => getter(modelValue?.value),
23
- set: (value) => {
24
- if (timeout) {
25
- clearTimeout(timeout)
26
- }
27
- timeout = setTimeout(() => {
28
- emit('update:modelValue', setter(value))
29
- }, ms as number)
30
- },
31
- })
21
+ return computed({
22
+ get: () => getter(modelValue?.value),
23
+ set: (value) => {
24
+ if (timeout) {
25
+ clearTimeout(timeout)
26
+ }
27
+ timeout = setTimeout(() => {
28
+ emit('update:modelValue', setter(value))
29
+ }, ms as number)
30
+ },
31
+ })
32
32
  }
@@ -1,89 +1,90 @@
1
1
  import type { ExtractPropTypes, PropType } from 'vue'
2
2
 
3
3
  type VueProp =
4
- | StringConstructor
5
- | NumberConstructor
6
- | ObjectConstructor
7
- | FunctionConstructor
8
- | SymbolConstructor
9
- | ArrayConstructor
10
- | BooleanConstructor
11
- | PropType<unknown>
4
+ | StringConstructor
5
+ | NumberConstructor
6
+ | ObjectConstructor
7
+ | FunctionConstructor
8
+ | SymbolConstructor
9
+ | ArrayConstructor
10
+ | BooleanConstructor
11
+ | PropType<unknown>
12
12
 
13
13
  export function useDefaults<Definition>(
14
- componentName: string,
15
- propsDefinition: Definition,
16
- props: Readonly<ExtractPropTypes<Definition>>,
14
+ componentName: string,
15
+ propsDefinition: Definition,
16
+ props: Readonly<ExtractPropTypes<Definition>>,
17
17
  ) {
18
- const volver = useVolver()
18
+ const volver = useVolver()
19
19
 
20
- const volverComponentDefaults = computed(() => {
21
- if (!volver || !volver.defaults.value?.[componentName]) {
22
- return undefined
23
- }
24
- return volver.defaults.value[componentName]
25
- })
20
+ const volverComponentDefaults = computed(() => {
21
+ if (!volver || !volver.defaults.value?.[componentName]) {
22
+ return undefined
23
+ }
24
+ return volver.defaults.value[componentName]
25
+ })
26
26
 
27
- return computed(() => {
28
- if (volverComponentDefaults.value === undefined) {
29
- return props
30
- }
31
- const componentDefaults = volverComponentDefaults.value
32
- const simplifiedPropsDefinition = propsDefinition as {
33
- [key: string]:
34
- | VueProp
35
- | VueProp[]
36
- | { type: VueProp | VueProp[]; default?: unknown }
37
- }
38
- const simplifiedProps = props as Record<string, unknown>
39
- return Object.keys(simplifiedPropsDefinition).reduce((acc, key) => {
40
- const propValue = simplifiedProps[key]
41
- acc[key] = propValue
42
- if (key in componentDefaults) {
43
- // array of types
44
- if (Array.isArray(simplifiedPropsDefinition[key])) {
45
- const typeArray = simplifiedPropsDefinition[
46
- key
47
- ] as VueProp[]
48
- if (typeArray.length) {
49
- const typeFunction = typeArray[0] as <T>() => T
50
- if (typeFunction === propValue) {
51
- acc[key] = componentDefaults[key]
52
- }
53
- }
54
- }
55
- // single type
56
- if (typeof simplifiedPropsDefinition[key] === 'function') {
57
- const typeFunction = simplifiedPropsDefinition[key] as <
27
+ return computed(() => {
28
+ if (volverComponentDefaults.value === undefined) {
29
+ return props
30
+ }
31
+ const componentDefaults = volverComponentDefaults.value
32
+ const simplifiedPropsDefinition = propsDefinition as {
33
+ [key: string]:
34
+ | VueProp
35
+ | VueProp[]
36
+ | { type: VueProp | VueProp[], default?: unknown }
37
+ }
38
+ const simplifiedProps = props as Record<string, unknown>
39
+ return Object.keys(simplifiedPropsDefinition).reduce((acc, key) => {
40
+ const propValue = simplifiedProps[key]
41
+ acc[key] = propValue
42
+ if (key in componentDefaults) {
43
+ // array of types
44
+ if (Array.isArray(simplifiedPropsDefinition[key])) {
45
+ const typeArray = simplifiedPropsDefinition[
46
+ key
47
+ ] as VueProp[]
48
+ if (typeArray.length) {
49
+ const typeFunction = typeArray[0] as <T>() => T
50
+ if (typeFunction === propValue) {
51
+ acc[key] = componentDefaults[key]
52
+ }
53
+ }
54
+ }
55
+ // single type
56
+ if (typeof simplifiedPropsDefinition[key] === 'function') {
57
+ const typeFunction = simplifiedPropsDefinition[key] as <
58
58
  T,
59
59
  >() => T
60
- if (typeFunction() === propValue) {
61
- acc[key] = componentDefaults[key]
62
- }
63
- }
64
- // object with type and default
65
- if (typeof simplifiedPropsDefinition[key] === 'object') {
66
- let defaultValue = (
67
- simplifiedPropsDefinition[key] as { default: unknown }
68
- ).default
69
- if (typeof defaultValue === 'function') {
70
- defaultValue = defaultValue()
71
- }
72
- if (typeof defaultValue === 'object') {
73
- if (
74
- JSON.stringify(defaultValue) ===
75
- JSON.stringify(propValue)
76
- ) {
77
- acc[key] = componentDefaults[key]
78
- }
79
- } else if (defaultValue === propValue) {
80
- acc[key] = componentDefaults[key]
81
- }
82
- }
83
- }
84
- return acc
85
- }, {} as Record<string, unknown>) as Readonly<
60
+ if (typeFunction() === propValue) {
61
+ acc[key] = componentDefaults[key]
62
+ }
63
+ }
64
+ // object with type and default
65
+ if (typeof simplifiedPropsDefinition[key] === 'object') {
66
+ let defaultValue = (
67
+ simplifiedPropsDefinition[key] as { default: unknown }
68
+ ).default
69
+ if (typeof defaultValue === 'function') {
70
+ defaultValue = defaultValue()
71
+ }
72
+ if (typeof defaultValue === 'object') {
73
+ if (
74
+ JSON.stringify(defaultValue)
75
+ === JSON.stringify(propValue)
76
+ ) {
77
+ acc[key] = componentDefaults[key]
78
+ }
79
+ }
80
+ else if (defaultValue === propValue) {
81
+ acc[key] = componentDefaults[key]
82
+ }
83
+ }
84
+ }
85
+ return acc
86
+ }, {} as Record<string, unknown>) as Readonly<
86
87
  ExtractPropTypes<Definition>
87
88
  >
88
- })
89
+ })
89
90
  }
@@ -1,36 +1,36 @@
1
1
  import type { Ref } from 'vue'
2
2
 
3
3
  export function useModifiers(
4
- prefix: string,
5
- modifiers?: Ref<string | string[] | unknown | unknown[] | undefined>,
6
- others?: Ref<Record<string, boolean>>,
4
+ prefix: string,
5
+ modifiers?: Ref<string | string[] | unknown | unknown[] | undefined>,
6
+ others?: Ref<Record<string, boolean>>,
7
7
  ) {
8
- return computed(() => {
9
- const toReturn: Record<string, boolean> = {
10
- [prefix]: true,
11
- }
12
- // props modifiers
13
- const modifiersArray =
14
- typeof modifiers?.value === 'string'
15
- ? modifiers.value.split(' ')
16
- : modifiers?.value
17
- if (modifiersArray) {
18
- if (Array.isArray(modifiersArray)) {
19
- modifiersArray.forEach((modifier) => {
20
- if (modifier) {
21
- toReturn[`${prefix}--${modifier}`] = true
22
- }
23
- })
24
- }
25
- }
8
+ return computed(() => {
9
+ const toReturn: Record<string, boolean> = {
10
+ [prefix]: true,
11
+ }
12
+ // props modifiers
13
+ const modifiersArray
14
+ = typeof modifiers?.value === 'string'
15
+ ? modifiers.value.split(' ')
16
+ : modifiers?.value
17
+ if (modifiersArray) {
18
+ if (Array.isArray(modifiersArray)) {
19
+ modifiersArray.forEach((modifier) => {
20
+ if (modifier) {
21
+ toReturn[`${prefix}--${modifier}`] = true
22
+ }
23
+ })
24
+ }
25
+ }
26
26
 
27
- // others modifiers
28
- if (others) {
29
- Object.keys(others.value).forEach((key) => {
30
- toReturn[`${prefix}--${key}`] = unref(others.value[key])
31
- })
32
- }
27
+ // others modifiers
28
+ if (others) {
29
+ Object.keys(others.value).forEach((key) => {
30
+ toReturn[`${prefix}--${key}`] = unref(others.value[key])
31
+ })
32
+ }
33
33
 
34
- return toReturn
35
- })
34
+ return toReturn
35
+ })
36
36
  }
@@ -1,47 +1,56 @@
1
- import type { Option } from '../types/generic'
2
1
  import { get } from 'ts-dot-prop'
2
+ import type { Option } from '../types/generic'
3
3
 
4
- // eslint-disable-next-line
5
4
  export function useOptions(props: any) {
6
- const { options, labelKey, valueKey, disabledKey } = toRefs(props)
7
-
8
- // eslint-disable-next-line
9
- const getOptionLabel = (option: string | Option): string => {
10
- if (typeof option !== 'object' && option !== null) return option
11
-
12
- return String(
13
- typeof labelKey.value === 'function'
14
- ? labelKey.value(option)
15
- : get(option, labelKey.value),
16
- )
17
- }
18
-
19
- const getOptionValue = (option: string | Option) => {
20
- if (typeof option !== 'object' && option !== null) return option
21
-
22
- return typeof valueKey.value === 'function'
23
- ? valueKey.value(option)
24
- : get(option, valueKey.value)
25
- }
26
-
27
- const isOptionDisabled = (option: string | Option): boolean => {
28
- if (typeof option !== 'object' && option !== null) return false
29
-
30
- return typeof disabledKey.value === 'function'
31
- ? disabledKey.value(option)
32
- : get(option, disabledKey.value)
33
- }
34
-
35
- const getOptionGrouped = (option: string | Option) => {
36
- if (typeof option !== 'object' && option !== null) return []
37
- return option.options || []
38
- }
39
-
40
- return {
41
- options,
42
- getOptionLabel,
43
- getOptionValue,
44
- isOptionDisabled,
45
- getOptionGrouped,
46
- }
5
+ const { options, labelKey, valueKey, disabledKey } = toRefs(props)
6
+
7
+ const getOptionLabel = <T extends string | Option>(option: T): string => {
8
+ if (typeof option === 'string') {
9
+ return option
10
+ }
11
+ if (typeof labelKey.value === 'function') {
12
+ return labelKey.value(option)
13
+ }
14
+ return String(
15
+ labelKey.value ? get(option as object, labelKey.value) : option,
16
+ )
17
+ }
18
+
19
+ const getOptionValue = <T extends string | Option>(option: T) => {
20
+ if (typeof option === 'string') {
21
+ return option
22
+ }
23
+ if (typeof valueKey.value === 'function') {
24
+ return valueKey.value(option)
25
+ }
26
+ return valueKey.value ? get(option as object, valueKey.value) : option
27
+ }
28
+
29
+ const isOptionDisabled = <T extends string | Option>(option: T): boolean => {
30
+ if (typeof option === 'string') {
31
+ return false
32
+ }
33
+ if (typeof disabledKey.value === 'function') {
34
+ return disabledKey.value(option)
35
+ }
36
+ return disabledKey.value ? get(option as object, disabledKey.value) : false
37
+ }
38
+
39
+ const getOptionGrouped = <T extends string | Option>(option: T) => {
40
+ if (typeof option == 'string') {
41
+ return []
42
+ }
43
+ if (typeof option === 'object' && option && 'options' in option) {
44
+ return option.options as T[]
45
+ }
46
+ return []
47
+ }
48
+
49
+ return {
50
+ options,
51
+ getOptionLabel,
52
+ getOptionValue,
53
+ isOptionDisabled,
54
+ getOptionGrouped,
55
+ }
47
56
  }
@@ -0,0 +1,74 @@
1
+ import type { Ref } from 'vue'
2
+ import { computed, isRef, ref, unref, watch } from 'vue'
3
+ import { StorageType } from '@/constants'
4
+
5
+ export function usePersistence<T>(storageKey: Ref<string | undefined> | undefined, storageType: Ref<`${StorageType}`> | `${StorageType}` = StorageType.local, defaultValue?: T) {
6
+ const localValue: Ref<T | undefined> = ref()
7
+ if (defaultValue) {
8
+ localValue.value = defaultValue
9
+ }
10
+ let storageValue: Ref<T | undefined> | undefined
11
+ if (storageKey) {
12
+ watch(
13
+ storageKey,
14
+ (newKey, oldKey) => {
15
+ const storage
16
+ = unref(storageType) === StorageType.session
17
+ ? sessionStorage
18
+ : localStorage
19
+ if (oldKey && oldKey !== newKey) {
20
+ storage.removeItem(oldKey)
21
+ }
22
+ if (newKey) {
23
+ storageValue = useStorage(
24
+ newKey,
25
+ storageValue?.value ?? localValue.value,
26
+ storage,
27
+ )
28
+ return
29
+ }
30
+ storageValue = undefined
31
+ },
32
+ {
33
+ immediate: true,
34
+ },
35
+ )
36
+ }
37
+ if (isRef(storageType)) {
38
+ watch(storageType, (newType, oldType) => {
39
+ if (storageKey?.value) {
40
+ if (newType) {
41
+ const storage
42
+ = newType === StorageType.session
43
+ ? sessionStorage
44
+ : localStorage
45
+ storageValue = useStorage(
46
+ storageKey.value,
47
+ storageValue?.value ?? localValue.value,
48
+ storage,
49
+ )
50
+ }
51
+ if (oldType && oldType !== newType) {
52
+ const oldStorage
53
+ = oldType === StorageType.session
54
+ ? sessionStorage
55
+ : localStorage
56
+ oldStorage.removeItem(storageKey.value)
57
+ }
58
+ }
59
+ })
60
+ }
61
+
62
+ return computed<T | undefined>({
63
+ get: () => {
64
+ return storageValue?.value ?? localValue.value
65
+ },
66
+ set: (value) => {
67
+ if (storageValue) {
68
+ storageValue.value = value
69
+ return
70
+ }
71
+ localValue.value = value
72
+ },
73
+ })
74
+ }
@@ -1,57 +1,57 @@
1
1
  import type { Ref } from 'vue'
2
2
 
3
3
  export function useTextCount(
4
- text: Ref<string | undefined | null> | string,
5
- options?: {
6
- mode?: string | boolean
7
- upperLimit?: number
8
- lowerLimit?: number
9
- },
4
+ text: Ref<string | undefined | null> | string,
5
+ options?: {
6
+ mode?: string | boolean
7
+ upperLimit?: number
8
+ lowerLimit?: number
9
+ },
10
10
  ) {
11
- const length = computed(() => {
12
- return (unref(text) ?? '').length
13
- })
11
+ const length = computed(() => {
12
+ return (unref(text) ?? '').length
13
+ })
14
14
 
15
- const gap = computed(() => {
16
- if (
17
- options?.lowerLimit !== undefined &&
18
- length.value < options?.lowerLimit
19
- ) {
20
- return length.value - options.lowerLimit
21
- }
22
- if (
23
- options?.upperLimit !== undefined &&
24
- length.value < options?.upperLimit
25
- ) {
26
- return options.upperLimit - length.value
27
- }
28
- return 0
29
- })
15
+ const gap = computed(() => {
16
+ if (
17
+ options?.lowerLimit !== undefined
18
+ && length.value < options?.lowerLimit
19
+ ) {
20
+ return length.value - options.lowerLimit
21
+ }
22
+ if (
23
+ options?.upperLimit !== undefined
24
+ && length.value < options?.upperLimit
25
+ ) {
26
+ return options.upperLimit - length.value
27
+ }
28
+ return 0
29
+ })
30
30
 
31
- const formatted = computed(() => {
32
- if (options?.mode === false) {
33
- return ''
34
- }
31
+ const formatted = computed(() => {
32
+ if (options?.mode === false) {
33
+ return ''
34
+ }
35
35
 
36
- if (options?.mode === 'limit' && options?.upperLimit) {
37
- return `${length.value} / ${
36
+ if (options?.mode === 'limit' && options?.upperLimit) {
37
+ return `${length.value} / ${
38
38
  options.lowerLimit ? `${options.lowerLimit}-` : ''
39
39
  }${options.upperLimit}`
40
- }
40
+ }
41
41
 
42
- if (options?.mode === 'countdown') {
43
- if (gap.value === 0) {
44
- return undefined
45
- }
46
- return gap
47
- }
42
+ if (options?.mode === 'countdown') {
43
+ if (gap.value === 0) {
44
+ return undefined
45
+ }
46
+ return gap
47
+ }
48
48
 
49
- return length.value
50
- })
49
+ return length.value
50
+ })
51
51
 
52
- return {
53
- length,
54
- gap,
55
- formatted,
56
- }
52
+ return {
53
+ length,
54
+ gap,
55
+ formatted,
56
+ }
57
57
  }
@@ -1,5 +1,6 @@
1
1
  import { uid } from 'uid'
2
2
  import type { Ref } from 'vue'
3
3
 
4
- export const useUniqueId = (id?: Ref<string | number | undefined>) =>
5
- computed(() => String(id?.value || uid()))
4
+ export function useUniqueId(id?: Ref<string | number | undefined>) {
5
+ return computed(() => String(id?.value || uid()))
6
+ }