@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,102 +1,17 @@
1
- import { inject, computed, unref, defineComponent, ref, toRefs, openBlock, createBlock, mergeProps, createCommentVNode, isRef, h, watch, useSlots, createElementBlock, normalizeClass, toDisplayString, createElementVNode, renderSlot, normalizeProps, guardReactiveProps, withDirectives, Fragment, renderList, vModelSelect, createVNode, createSlots, withCtx } from "vue";
1
+ import { inject, computed, unref, defineComponent, mergeDefaults, ref, toRefs, openBlock, createBlock, mergeProps, createCommentVNode, isRef, h, watch, useSlots, createElementBlock, normalizeClass, toDisplayString, createElementVNode, renderSlot, normalizeProps, guardReactiveProps, withDirectives, Fragment, renderList, vModelSelect, createVNode, createSlots, withCtx } from "vue";
2
2
  import { iconExists, Icon, addIcon } from "@iconify/vue";
3
- import { uid } from "uid";
4
3
  import { useFocus, useElementVisibility } from "@vueuse/core";
4
+ import { uid } from "uid";
5
5
  import { get } from "ts-dot-prop";
6
- const VvIconProps = {
7
- /**
8
- * Color
9
- */
10
- color: String,
11
- /**
12
- * Width
13
- */
14
- width: {
15
- type: [String, Number]
16
- },
17
- /**
18
- * Height
19
- */
20
- height: {
21
- type: [String, Number]
22
- },
23
- /**
24
- * Icon name
25
- * Can be the full composition of iconify name "@{provider}:{prefix}:{name}" or "{prefix}:{name}" or "{name}"
26
- * https://docs.iconify.design/api/providers.html#provider-in-icon-name
27
- */
28
- name: {
29
- type: String,
30
- required: true
31
- },
32
- /**
33
- * By default 'vv'
34
- * If custom collection is not added with "addCollection" DS class method, this prop could not be used
35
- * Icon provider: https://docs.iconify.design/api/providers.html#provider-in-icon-name
36
- */
37
- provider: {
38
- type: String
39
- },
40
- /**
41
- * The name of icon set.
42
- * Icon default options prefix: simple | normal | detailed
43
- */
44
- prefix: {
45
- type: String,
46
- default: "normal"
47
- },
48
- /**
49
- * Url remote SVG icon
50
- */
51
- src: String,
52
- /**
53
- * Horizontal flip
54
- */
55
- horizontalFlip: Boolean,
56
- /**
57
- * Vertical flip
58
- */
59
- verticalFlip: Boolean,
60
- /**
61
- * String alternative to "horizontalFlip" and "verticalFlip".
62
- * Example: https://docs.iconify.design/icon-components/vue/transform.html
63
- */
64
- flip: String,
65
- /**
66
- * Icon render mode
67
- * 'style' = 'bg' or 'mask', depending on icon content
68
- * 'bg' = span with style using `background`
69
- * 'mask' = span with style using `mask`
70
- * 'svg' = svg
71
- * Iconify doc: https://docs.iconify.design/iconify-icon/modes.html
72
- */
73
- mode: String,
74
- /**
75
- * Toggles inline or block mode
76
- * Example https://docs.iconify.design/icon-components/vue/inline.html
77
- */
78
- inline: Boolean,
79
- /**
80
- * rotates icon
81
- * Example https://docs.iconify.design/icon-components/vue/transform.html
82
- */
83
- rotate: [Number, String],
84
- /**
85
- * A callback that is called when icon data has been loaded
86
- */
87
- onLoad: Function,
88
- /**
89
- * SVG icon string
90
- */
91
- svg: String,
92
- /**
93
- * Icon modifiers: vv-icon css helper classes, value/s are concatened with prefix 'vv-icon--'
94
- * @values string | string[]
95
- */
96
- modifiers: {
97
- type: [String, Array]
98
- }
6
+ const VvIconPropsDefaults = {
7
+ prefix: "normal"
8
+ /* normal */
99
9
  };
10
+ var StorageType = /* @__PURE__ */ ((StorageType2) => {
11
+ StorageType2["local"] = "local";
12
+ StorageType2["session"] = "session";
13
+ return StorageType2;
14
+ })(StorageType || {});
100
15
  var Strategy = /* @__PURE__ */ ((Strategy2) => {
101
16
  Strategy2["absolute"] = "absolute";
102
17
  Strategy2["fixed"] = "fixed";
@@ -131,13 +46,13 @@ var ButtonType = /* @__PURE__ */ ((ButtonType2) => {
131
46
  ButtonType2["reset"] = "reset";
132
47
  return ButtonType2;
133
48
  })(ButtonType || {});
134
- var AnchorTarget = /* @__PURE__ */ ((AnchorTarget2) => {
135
- AnchorTarget2["_blank"] = "_blank";
136
- AnchorTarget2["_self"] = "_self";
137
- AnchorTarget2["_parent"] = "_parent";
138
- AnchorTarget2["_top"] = "_top";
139
- return AnchorTarget2;
140
- })(AnchorTarget || {});
49
+ var ActionTag = /* @__PURE__ */ ((ActionTag2) => {
50
+ ActionTag2["nuxtLink"] = "nuxt-link";
51
+ ActionTag2["routerLink"] = "router-link";
52
+ ActionTag2["a"] = "a";
53
+ ActionTag2["button"] = "button";
54
+ return ActionTag2;
55
+ })(ActionTag || {});
141
56
  const INJECTION_KEY_VOLVER = Symbol.for("volver");
142
57
  function useVolver() {
143
58
  return inject(INJECTION_KEY_VOLVER);
@@ -170,12 +85,29 @@ const __default__$1 = {
170
85
  };
171
86
  const _sfc_main$1 = /* @__PURE__ */ defineComponent({
172
87
  ...__default__$1,
173
- props: VvIconProps,
88
+ props: /* @__PURE__ */ mergeDefaults({
89
+ name: {},
90
+ color: {},
91
+ width: {},
92
+ height: {},
93
+ provider: {},
94
+ prefix: {},
95
+ src: {},
96
+ horizontalFlip: { type: Boolean },
97
+ verticalFlip: { type: Boolean },
98
+ flip: {},
99
+ mode: {},
100
+ inline: { type: Boolean },
101
+ rotate: {},
102
+ onLoad: { type: Function },
103
+ svg: {},
104
+ modifiers: {}
105
+ }, VvIconPropsDefaults),
174
106
  setup(__props) {
175
107
  const props = __props;
176
108
  const hasRotate = computed(() => {
177
109
  if (typeof props.rotate === "string") {
178
- return parseFloat(props.rotate);
110
+ return Number.parseFloat(props.rotate);
179
111
  }
180
112
  return props.rotate;
181
113
  });
@@ -257,13 +189,10 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
257
189
  color: _ctx.color,
258
190
  onLoad: _ctx.onLoad,
259
191
  icon: unref(icon)
260
- }), null, 16, ["class"])) : createCommentVNode("", true);
192
+ }), null, 16, ["class"])) : createCommentVNode("v-if", true);
261
193
  };
262
194
  }
263
195
  });
264
- function isEmpty(value) {
265
- return ((value2) => value2 === null || value2 === void 0 || value2 === "" || Array.isArray(value2) && value2.length === 0 || !(value2 instanceof Date) && typeof value2 === "object" && Object.keys(value2).length === 0)(unref(value));
266
- }
267
196
  function isString(value) {
268
197
  return typeof value === "string" || value instanceof String;
269
198
  }
@@ -400,10 +329,7 @@ const LinkProps = {
400
329
  /**
401
330
  * Anchor target
402
331
  */
403
- target: {
404
- type: String,
405
- validator: (value) => Object.values(AnchorTarget).includes(value)
406
- },
332
+ target: String,
407
333
  /**
408
334
  * Anchor rel
409
335
  */
@@ -416,27 +342,33 @@ const ValidProps = {
416
342
  /**
417
343
  * Valid status
418
344
  */
419
- valid: Boolean,
345
+ valid: { type: Boolean, default: false },
420
346
  /**
421
347
  * Valid label
422
348
  */
423
- validLabel: [String, Array]
349
+ validLabel: { type: [String, Array], default: void 0 }
424
350
  };
425
351
  const InvalidProps = {
426
352
  /**
427
353
  * Invalid status
428
354
  */
429
- invalid: Boolean,
355
+ invalid: {
356
+ type: Boolean,
357
+ default: false
358
+ },
430
359
  /**
431
360
  * Invalid label
432
361
  */
433
- invalidLabel: [String, Array]
362
+ invalidLabel: { type: [String, Array], default: void 0 }
434
363
  };
435
364
  const LoadingProps = {
436
365
  /**
437
366
  * Loading status
438
367
  */
439
- loading: Boolean,
368
+ loading: {
369
+ type: Boolean,
370
+ default: false
371
+ },
440
372
  /**
441
373
  * Loading label
442
374
  */
@@ -449,43 +381,64 @@ const DisabledProps = {
449
381
  /**
450
382
  * Whether the form control is disabled
451
383
  */
452
- disabled: Boolean
384
+ disabled: {
385
+ type: Boolean,
386
+ default: false
387
+ }
453
388
  };
454
389
  const ActiveProps = {
455
390
  /**
456
391
  * Whether the item is active
457
392
  */
458
- active: Boolean
393
+ active: {
394
+ type: Boolean,
395
+ default: false
396
+ }
459
397
  };
460
398
  const CurrentProps = {
461
399
  /**
462
400
  * Whether the item is current
463
401
  */
464
- current: Boolean
402
+ current: {
403
+ type: Boolean,
404
+ default: false
405
+ }
465
406
  };
466
407
  const PressedProps = {
467
408
  /**
468
409
  * Whether the item is pressed
469
410
  */
470
- pressed: Boolean
411
+ pressed: {
412
+ type: Boolean,
413
+ default: false
414
+ }
471
415
  };
472
416
  const LabelProps = {
473
417
  /**
474
418
  * The item label
475
419
  */
476
- label: [String, Number]
420
+ label: {
421
+ type: [String, Number],
422
+ default: void 0
423
+ }
477
424
  };
478
425
  const ReadonlyProps = {
479
426
  /**
480
427
  * The value is not editable
481
428
  */
482
- readonly: Boolean
429
+ readonly: {
430
+ type: Boolean,
431
+ default: false
432
+ }
483
433
  };
484
434
  const ModifiersProps = {
485
435
  /**
486
436
  * Component BEM modifiers
487
437
  */
488
- modifiers: [String, Array]
438
+ modifiers: {
439
+ type: [String, Array],
440
+ default: void 0
441
+ }
489
442
  };
490
443
  const HintProps = {
491
444
  hintLabel: { type: String, default: "" }
@@ -516,7 +469,10 @@ const IconProps = {
516
469
  * VvIcon name or props
517
470
  * @see VVIcon
518
471
  */
519
- icon: { type: [String, Object] },
472
+ icon: {
473
+ type: [String, Object],
474
+ default: void 0
475
+ },
520
476
  /**
521
477
  * VvIcon position
522
478
  */
@@ -537,7 +493,10 @@ const FloatingLabelProps = {
537
493
  /**
538
494
  * If true the label will be floating
539
495
  */
540
- floating: Boolean
496
+ floating: {
497
+ type: Boolean,
498
+ default: false
499
+ }
541
500
  };
542
501
  const UnselectableProps = {
543
502
  /**
@@ -573,7 +532,8 @@ const IdProps = {
573
532
  * Dropdown show / hide transition name
574
533
  */
575
534
  transitionName: {
576
- type: String
535
+ type: String,
536
+ default: void 0
577
537
  },
578
538
  /**
579
539
  * Offset of the dropdown from the trigger
@@ -641,7 +601,8 @@ const IdProps = {
641
601
  * Set dropdown width to the same as the trigger
642
602
  */
643
603
  triggerWidth: {
644
- type: Boolean
604
+ type: Boolean,
605
+ default: false
645
606
  }
646
607
  });
647
608
  const IdNameProps = {
@@ -658,7 +619,10 @@ const AutofocusProps = {
658
619
  * Global attribute autofocus
659
620
  * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/autofocus
660
621
  */
661
- autofocus: Boolean
622
+ autofocus: {
623
+ type: Boolean,
624
+ default: false
625
+ }
662
626
  };
663
627
  const AutocompleteProps = {
664
628
  /**
@@ -688,8 +652,23 @@ const AutocompleteProps = {
688
652
  ariaLabel: {
689
653
  type: String,
690
654
  default: void 0
655
+ },
656
+ /**
657
+ * Default tag for the action
658
+ */
659
+ defaultTag: {
660
+ type: String,
661
+ default: ActionTag.button
691
662
  }
692
663
  });
664
+ ({
665
+ storageType: {
666
+ type: String,
667
+ default: StorageType.local,
668
+ validator: (value) => Object.values(StorageType).includes(value)
669
+ },
670
+ storageKey: String
671
+ });
693
672
  const VvSelectProps = {
694
673
  ...IdNameProps,
695
674
  ...AutofocusProps,
@@ -733,12 +712,28 @@ const VvSelectProps = {
733
712
  type: [String, Number, Boolean, Object, Array],
734
713
  default: void 0
735
714
  },
715
+ /**
716
+ * Select first option automatically
717
+ */
718
+ autoselectFirst: {
719
+ type: Boolean,
720
+ default: false
721
+ },
736
722
  /**
737
723
  * Select placeholder
738
724
  */
739
725
  placeholder: String
740
726
  };
741
- const VvSelectEmits = ["update:modelValue", "focus", "blur"];
727
+ function useVvSelectProps() {
728
+ return {
729
+ ...VvSelectProps,
730
+ options: {
731
+ ...VvSelectProps.options,
732
+ type: Array,
733
+ default: () => []
734
+ }
735
+ };
736
+ }
742
737
  function useDefaults(componentName, propsDefinition, props) {
743
738
  const volver = useVolver();
744
739
  const volverComponentDefaults = computed(() => {
@@ -792,7 +787,6 @@ function useDefaults(componentName, propsDefinition, props) {
792
787
  }, {});
793
788
  });
794
789
  }
795
- const useUniqueId = (id) => computed(() => String((id == null ? void 0 : id.value) || uid()));
796
790
  function useComponentFocus(inputTemplateRef, emit) {
797
791
  const { focused } = useFocus(inputTemplateRef);
798
792
  watch(focused, (newValue) => {
@@ -802,31 +796,34 @@ function useComponentFocus(inputTemplateRef, emit) {
802
796
  focused
803
797
  };
804
798
  }
799
+ function useUniqueId(id) {
800
+ return computed(() => String((id == null ? void 0 : id.value) || uid()));
801
+ }
805
802
  function useComponentIcon(icon, iconPosition) {
803
+ const hasIcon = computed(() => {
804
+ if (typeof (icon == null ? void 0 : icon.value) === "string") {
805
+ return { name: icon == null ? void 0 : icon.value };
806
+ }
807
+ return icon == null ? void 0 : icon.value;
808
+ });
806
809
  const hasIconBefore = computed(
807
- () => Boolean((icon == null ? void 0 : icon.value) && iconPosition.value === Position.before)
810
+ () => (iconPosition == null ? void 0 : iconPosition.value) === Position.before ? hasIcon.value : void 0
808
811
  );
809
812
  const hasIconAfter = computed(
810
- () => Boolean((icon == null ? void 0 : icon.value) && iconPosition.value === Position.after)
813
+ () => (iconPosition == null ? void 0 : iconPosition.value) === Position.after ? hasIcon.value : void 0
811
814
  );
812
815
  const hasIconLeft = computed(
813
- () => Boolean((icon == null ? void 0 : icon.value) && iconPosition.value === Side.left)
816
+ () => (iconPosition == null ? void 0 : iconPosition.value) === Side.left ? hasIcon.value : void 0
814
817
  );
815
818
  const hasIconRight = computed(
816
- () => Boolean((icon == null ? void 0 : icon.value) && iconPosition.value === Side.right)
819
+ () => (iconPosition == null ? void 0 : iconPosition.value) === Side.right ? hasIcon.value : void 0
817
820
  );
818
821
  const hasIconTop = computed(
819
- () => Boolean((icon == null ? void 0 : icon.value) && iconPosition.value === Side.top)
822
+ () => (iconPosition == null ? void 0 : iconPosition.value) === Side.top ? hasIcon.value : void 0
820
823
  );
821
824
  const hasIconBottom = computed(
822
- () => Boolean((icon == null ? void 0 : icon.value) && iconPosition.value === Side.bottom)
825
+ () => (iconPosition == null ? void 0 : iconPosition.value) === Side.bottom ? hasIcon.value : void 0
823
826
  );
824
- const hasIcon = computed(() => {
825
- if (typeof (icon == null ? void 0 : icon.value) === "string") {
826
- return { name: icon == null ? void 0 : icon.value };
827
- }
828
- return icon == null ? void 0 : icon.value;
829
- });
830
827
  return {
831
828
  hasIcon,
832
829
  hasIconLeft,
@@ -840,26 +837,42 @@ function useComponentIcon(icon, iconPosition) {
840
837
  function useOptions(props) {
841
838
  const { options, labelKey, valueKey, disabledKey } = toRefs(props);
842
839
  const getOptionLabel = (option) => {
843
- if (typeof option !== "object" && option !== null)
840
+ if (typeof option === "string") {
844
841
  return option;
842
+ }
843
+ if (typeof labelKey.value === "function") {
844
+ return labelKey.value(option);
845
+ }
845
846
  return String(
846
- typeof labelKey.value === "function" ? labelKey.value(option) : get(option, labelKey.value)
847
+ labelKey.value ? get(option, labelKey.value) : option
847
848
  );
848
849
  };
849
850
  const getOptionValue = (option) => {
850
- if (typeof option !== "object" && option !== null)
851
+ if (typeof option === "string") {
851
852
  return option;
852
- return typeof valueKey.value === "function" ? valueKey.value(option) : get(option, valueKey.value);
853
+ }
854
+ if (typeof valueKey.value === "function") {
855
+ return valueKey.value(option);
856
+ }
857
+ return valueKey.value ? get(option, valueKey.value) : option;
853
858
  };
854
859
  const isOptionDisabled = (option) => {
855
- if (typeof option !== "object" && option !== null)
860
+ if (typeof option === "string") {
856
861
  return false;
857
- return typeof disabledKey.value === "function" ? disabledKey.value(option) : get(option, disabledKey.value);
862
+ }
863
+ if (typeof disabledKey.value === "function") {
864
+ return disabledKey.value(option);
865
+ }
866
+ return disabledKey.value ? get(option, disabledKey.value) : false;
858
867
  };
859
868
  const getOptionGrouped = (option) => {
860
- if (typeof option !== "object" && option !== null)
869
+ if (typeof option == "string") {
861
870
  return [];
862
- return option.options || [];
871
+ }
872
+ if (typeof option === "object" && option && "options" in option) {
873
+ return option.options;
874
+ }
875
+ return [];
863
876
  };
864
877
  return {
865
878
  options,
@@ -890,23 +903,33 @@ const __default__ = {
890
903
  };
891
904
  const _sfc_main = /* @__PURE__ */ defineComponent({
892
905
  ...__default__,
893
- props: VvSelectProps,
894
- emits: VvSelectEmits,
895
- setup(__props, { emit }) {
906
+ props: useVvSelectProps(),
907
+ emits: ["update:modelValue", "focus", "blur"],
908
+ setup(__props, { emit: __emit }) {
896
909
  const props = __props;
910
+ const emit = __emit;
897
911
  const slots = useSlots();
912
+ const VvSelectProps2 = useVvSelectProps();
898
913
  const propsDefaults = useDefaults(
899
914
  "VvSelect",
900
- VvSelectProps,
915
+ VvSelectProps2,
901
916
  props
902
917
  );
903
- const select = ref();
918
+ const selectEl = ref();
904
919
  const {
905
920
  HintSlot,
906
921
  hasHintLabelOrSlot,
907
922
  hasInvalidLabelOrSlot,
908
923
  hintSlotScope
909
924
  } = HintSlotFactory(propsDefaults, slots);
925
+ const { focused } = useComponentFocus(selectEl, emit);
926
+ function isGroup(option) {
927
+ var _a;
928
+ if (typeof option === "string") {
929
+ return false;
930
+ }
931
+ return (_a = option.options) == null ? void 0 : _a.length;
932
+ }
910
933
  const {
911
934
  id,
912
935
  modifiers,
@@ -922,22 +945,38 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
922
945
  } = toRefs(props);
923
946
  const hasId = useUniqueId(id);
924
947
  const hasHintId = computed(() => `${hasId.value}-hint`);
925
- const { focused } = useComponentFocus(select, emit);
926
- const isVisible = useElementVisibility(select);
948
+ const isDisabledOrReadonly = computed(() => props.disabled || props.readonly);
949
+ const hasTabindex = computed(() => {
950
+ return isDisabledOrReadonly.value ? -1 : props.tabindex;
951
+ });
952
+ const localModelValue = computed({
953
+ get: () => {
954
+ return props.modelValue;
955
+ },
956
+ set: (newValue) => {
957
+ if (Array.isArray(newValue)) {
958
+ newValue = newValue.filter((item) => item !== void 0);
959
+ if (newValue.length === 0 && !props.unselectable) {
960
+ selectEl.value.value = props.modelValue;
961
+ return;
962
+ }
963
+ }
964
+ emit("update:modelValue", newValue);
965
+ }
966
+ });
967
+ const isDirty = computed(() => {
968
+ if (Array.isArray(localModelValue.value)) {
969
+ return localModelValue.value.length > 0;
970
+ }
971
+ return localModelValue.value !== void 0 && localModelValue.value !== null;
972
+ });
973
+ const isVisible = useElementVisibility(selectEl);
927
974
  watch(isVisible, (newValue) => {
928
975
  if (newValue && props.autofocus) {
929
976
  focused.value = true;
930
977
  }
931
978
  });
932
- const { hasIcon, hasIconBefore, hasIconAfter } = useComponentIcon(
933
- icon,
934
- iconPosition
935
- );
936
- const isDirty = computed(() => !isEmpty(props.modelValue));
937
- const isDisabled = computed(() => props.disabled || props.readonly);
938
- const hasTabindex = computed(() => {
939
- return isDisabled.value ? -1 : props.tabindex;
940
- });
979
+ const { hasIconBefore, hasIconAfter } = useComponentIcon(icon, iconPosition);
941
980
  const isInvalid = computed(() => {
942
981
  if (props.invalid === true) {
943
982
  return true;
@@ -951,28 +990,44 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
951
990
  "vv-select",
952
991
  modifiers,
953
992
  computed(() => ({
954
- valid: valid.value,
955
- invalid: invalid.value,
956
- loading: loading.value,
957
- disabled: disabled.value,
958
- readonly: readonly.value,
959
- "icon-before": hasIconBefore.value,
960
- "icon-after": hasIconAfter.value,
961
- dirty: isDirty.value,
962
- focus: focused.value,
963
- floating: floating.value,
964
- multiple: multiple.value
993
+ "valid": valid.value,
994
+ "invalid": invalid.value,
995
+ "loading": loading.value,
996
+ "disabled": disabled.value,
997
+ "readonly": readonly.value,
998
+ "icon-before": hasIconBefore.value !== void 0,
999
+ "icon-after": hasIconAfter.value !== void 0,
1000
+ "dirty": isDirty.value,
1001
+ "focus": focused.value,
1002
+ "floating": floating.value,
1003
+ "multiple": multiple.value
965
1004
  }))
966
1005
  );
1006
+ const {
1007
+ getOptionLabel,
1008
+ getOptionValue,
1009
+ isOptionDisabled,
1010
+ getOptionGrouped
1011
+ } = useOptions(props);
1012
+ watch(
1013
+ () => props.options,
1014
+ (newValue) => {
1015
+ if ((newValue == null ? void 0 : newValue.length) && props.autoselectFirst && !isDirty.value) {
1016
+ const firstOptionValue = getOptionValue(newValue[0]);
1017
+ localModelValue.value = props.multiple ? [firstOptionValue] : firstOptionValue;
1018
+ }
1019
+ },
1020
+ { immediate: true }
1021
+ );
967
1022
  const hasAttrs = computed(() => {
968
1023
  return {
969
- name: props.name,
970
- tabindex: hasTabindex.value,
971
- disabled: isDisabled.value,
972
- required: props.required,
973
- size: props.size,
974
- autocomplete: props.autocomplete,
975
- multiple: props.multiple,
1024
+ "name": props.name,
1025
+ "tabindex": hasTabindex.value,
1026
+ "disabled": isDisabledOrReadonly.value,
1027
+ "required": props.required,
1028
+ "size": props.size,
1029
+ "autocomplete": props.autocomplete,
1030
+ "multiple": props.multiple,
976
1031
  "aria-invalid": isInvalid.value,
977
1032
  "aria-describedby": hasHintLabelOrSlot.value ? hasHintId.value : void 0,
978
1033
  "aria-errormessage": hasInvalidLabelOrSlot.value ? hasHintId.value : void 0
@@ -983,124 +1038,136 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
983
1038
  invalid: props.invalid,
984
1039
  modelValue: props.modelValue
985
1040
  }));
986
- const {
987
- getOptionLabel,
988
- getOptionValue,
989
- isOptionDisabled,
990
- getOptionGrouped
991
- } = useOptions(props);
992
- const localModelValue = computed({
993
- get: () => {
994
- return props.modelValue;
995
- },
996
- set: (newValue) => {
997
- if (Array.isArray(newValue)) {
998
- newValue = newValue.filter((item) => item !== void 0);
999
- }
1000
- emit("update:modelValue", newValue);
1001
- }
1002
- });
1003
- const isGroup = (option) => {
1004
- if (typeof option === "string")
1005
- return false;
1006
- return option && option.options && option.options.length > 0;
1007
- };
1008
1041
  return (_ctx, _cache) => {
1009
- return openBlock(), createElementBlock("div", {
1010
- class: normalizeClass(unref(bemCssClasses))
1011
- }, [
1012
- _ctx.label ? (openBlock(), createElementBlock("label", {
1013
- key: 0,
1014
- for: unref(hasId)
1015
- }, toDisplayString(_ctx.label), 9, _hoisted_1)) : createCommentVNode("", true),
1016
- createElementVNode("div", _hoisted_2, [
1017
- _ctx.$slots.before ? (openBlock(), createElementBlock("div", _hoisted_3, [
1018
- renderSlot(_ctx.$slots, "before", normalizeProps(guardReactiveProps(unref(slotProps))))
1019
- ])) : createCommentVNode("", true),
1020
- createElementVNode("div", _hoisted_4, [
1021
- unref(hasIconBefore) ? (openBlock(), createBlock(_sfc_main$1, mergeProps({
1022
- key: 0,
1023
- class: "vv-select__icon"
1024
- }, unref(hasIcon)), null, 16)) : createCommentVNode("", true),
1025
- withDirectives(createElementVNode("select", mergeProps({
1026
- id: unref(hasId),
1027
- ref_key: "select",
1028
- ref: select,
1029
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(localModelValue) ? localModelValue.value = $event : null)
1030
- }, unref(hasAttrs)), [
1031
- _ctx.placeholder ? (openBlock(), createElementBlock("option", {
1032
- key: 0,
1033
- value: void 0,
1034
- disabled: !_ctx.unselectable,
1035
- hidden: !_ctx.unselectable
1036
- }, toDisplayString(_ctx.placeholder), 9, _hoisted_6)) : createCommentVNode("", true),
1037
- (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.options, (option, index) => {
1038
- return openBlock(), createElementBlock(Fragment, null, [
1039
- !isGroup(option) ? (openBlock(), createElementBlock("option", {
1040
- key: index,
1041
- disabled: unref(isOptionDisabled)(option),
1042
- value: unref(getOptionValue)(option)
1043
- }, toDisplayString(unref(getOptionLabel)(option)), 9, _hoisted_7)) : (openBlock(), createElementBlock("optgroup", {
1044
- key: `group-${index}`,
1045
- disabled: unref(isOptionDisabled)(option),
1046
- label: unref(getOptionLabel)(option)
1047
- }, [
1048
- (openBlock(true), createElementBlock(Fragment, null, renderList(unref(getOptionGrouped)(option), (item, i) => {
1049
- return openBlock(), createElementBlock("option", {
1050
- key: `group-${index}-item-${i}`,
1051
- disabled: unref(isOptionDisabled)(item),
1052
- value: unref(getOptionValue)(item)
1053
- }, toDisplayString(unref(getOptionLabel)(item)), 9, _hoisted_9);
1054
- }), 128))
1055
- ], 8, _hoisted_8))
1056
- ], 64);
1057
- }), 256))
1058
- ], 16, _hoisted_5), [
1059
- [vModelSelect, unref(localModelValue)]
1042
+ return openBlock(), createElementBlock(
1043
+ "div",
1044
+ {
1045
+ class: normalizeClass(unref(bemCssClasses))
1046
+ },
1047
+ [
1048
+ _ctx.label ? (openBlock(), createElementBlock("label", {
1049
+ key: 0,
1050
+ for: unref(hasId)
1051
+ }, toDisplayString(_ctx.label), 9, _hoisted_1)) : createCommentVNode("v-if", true),
1052
+ createElementVNode("div", _hoisted_2, [
1053
+ _ctx.$slots.before ? (openBlock(), createElementBlock("div", _hoisted_3, [
1054
+ renderSlot(_ctx.$slots, "before", normalizeProps(guardReactiveProps(unref(slotProps))))
1055
+ ])) : createCommentVNode("v-if", true),
1056
+ createElementVNode("div", _hoisted_4, [
1057
+ unref(hasIconBefore) ? (openBlock(), createBlock(
1058
+ _sfc_main$1,
1059
+ mergeProps({ key: 0 }, unref(hasIconBefore), { class: "vv-select__icon" }),
1060
+ null,
1061
+ 16
1062
+ /* FULL_PROPS */
1063
+ )) : createCommentVNode("v-if", true),
1064
+ withDirectives(createElementVNode("select", mergeProps({
1065
+ id: unref(hasId),
1066
+ ref_key: "selectEl",
1067
+ ref: selectEl
1068
+ }, unref(hasAttrs), {
1069
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(localModelValue) ? localModelValue.value = $event : null)
1070
+ }), [
1071
+ _ctx.placeholder ? (openBlock(), createElementBlock("option", {
1072
+ key: 0,
1073
+ value: void 0,
1074
+ disabled: !_ctx.unselectable,
1075
+ hidden: !_ctx.unselectable
1076
+ }, toDisplayString(_ctx.placeholder), 9, _hoisted_6)) : createCommentVNode("v-if", true),
1077
+ (openBlock(true), createElementBlock(
1078
+ Fragment,
1079
+ null,
1080
+ renderList(_ctx.options, (option, index) => {
1081
+ return openBlock(), createElementBlock(
1082
+ Fragment,
1083
+ null,
1084
+ [
1085
+ !isGroup(option) ? (openBlock(), createElementBlock("option", {
1086
+ key: index,
1087
+ disabled: unref(isOptionDisabled)(option),
1088
+ value: unref(getOptionValue)(option)
1089
+ }, toDisplayString(unref(getOptionLabel)(option)), 9, _hoisted_7)) : (openBlock(), createElementBlock("optgroup", {
1090
+ key: `group-${index}`,
1091
+ disabled: unref(isOptionDisabled)(option),
1092
+ label: unref(getOptionLabel)(option)
1093
+ }, [
1094
+ (openBlock(true), createElementBlock(
1095
+ Fragment,
1096
+ null,
1097
+ renderList(unref(getOptionGrouped)(option), (item, i) => {
1098
+ return openBlock(), createElementBlock("option", {
1099
+ key: `group-${index}-item-${i}`,
1100
+ disabled: unref(isOptionDisabled)(item),
1101
+ value: unref(getOptionValue)(item)
1102
+ }, toDisplayString(unref(getOptionLabel)(item)), 9, _hoisted_9);
1103
+ }),
1104
+ 128
1105
+ /* KEYED_FRAGMENT */
1106
+ ))
1107
+ ], 8, _hoisted_8))
1108
+ ],
1109
+ 64
1110
+ /* STABLE_FRAGMENT */
1111
+ );
1112
+ }),
1113
+ 256
1114
+ /* UNKEYED_FRAGMENT */
1115
+ ))
1116
+ ], 16, _hoisted_5), [
1117
+ [vModelSelect, unref(localModelValue)]
1118
+ ]),
1119
+ unref(hasIconAfter) ? (openBlock(), createBlock(
1120
+ _sfc_main$1,
1121
+ mergeProps({ key: 1 }, unref(hasIconAfter), { class: "vv-select__icon vv-select__icon-after" }),
1122
+ null,
1123
+ 16
1124
+ /* FULL_PROPS */
1125
+ )) : createCommentVNode("v-if", true)
1060
1126
  ]),
1061
- unref(hasIconAfter) ? (openBlock(), createBlock(_sfc_main$1, mergeProps({
1062
- key: 1,
1063
- class: "vv-select__icon vv-select__icon-after"
1064
- }, unref(hasIcon)), null, 16)) : createCommentVNode("", true)
1127
+ _ctx.$slots.after ? (openBlock(), createElementBlock("div", _hoisted_10, [
1128
+ renderSlot(_ctx.$slots, "after", normalizeProps(guardReactiveProps(unref(slotProps))))
1129
+ ])) : createCommentVNode("v-if", true)
1065
1130
  ]),
1066
- _ctx.$slots.after ? (openBlock(), createElementBlock("div", _hoisted_10, [
1067
- renderSlot(_ctx.$slots, "after", normalizeProps(guardReactiveProps(unref(slotProps))))
1068
- ])) : createCommentVNode("", true)
1069
- ]),
1070
- createVNode(unref(HintSlot), {
1071
- id: unref(hasHintId),
1072
- class: "vv-select__hint"
1073
- }, createSlots({ _: 2 }, [
1074
- _ctx.$slots.hint ? {
1075
- name: "hint",
1076
- fn: withCtx(() => [
1077
- renderSlot(_ctx.$slots, "hint", normalizeProps(guardReactiveProps(unref(hintSlotScope))))
1078
- ]),
1079
- key: "0"
1080
- } : void 0,
1081
- _ctx.$slots.loading ? {
1082
- name: "loading",
1083
- fn: withCtx(() => [
1084
- renderSlot(_ctx.$slots, "loading", normalizeProps(guardReactiveProps(unref(hintSlotScope))))
1085
- ]),
1086
- key: "1"
1087
- } : void 0,
1088
- _ctx.$slots.valid ? {
1089
- name: "valid",
1090
- fn: withCtx(() => [
1091
- renderSlot(_ctx.$slots, "valid", normalizeProps(guardReactiveProps(unref(hintSlotScope))))
1092
- ]),
1093
- key: "2"
1094
- } : void 0,
1095
- _ctx.$slots.invalid ? {
1096
- name: "invalid",
1097
- fn: withCtx(() => [
1098
- renderSlot(_ctx.$slots, "invalid", normalizeProps(guardReactiveProps(unref(hintSlotScope))))
1099
- ]),
1100
- key: "3"
1101
- } : void 0
1102
- ]), 1032, ["id"])
1103
- ], 2);
1131
+ createVNode(unref(HintSlot), {
1132
+ id: unref(hasHintId),
1133
+ class: "vv-select__hint"
1134
+ }, createSlots({
1135
+ _: 2
1136
+ /* DYNAMIC */
1137
+ }, [
1138
+ _ctx.$slots.hint ? {
1139
+ name: "hint",
1140
+ fn: withCtx(() => [
1141
+ renderSlot(_ctx.$slots, "hint", normalizeProps(guardReactiveProps(unref(hintSlotScope))))
1142
+ ]),
1143
+ key: "0"
1144
+ } : void 0,
1145
+ _ctx.$slots.loading ? {
1146
+ name: "loading",
1147
+ fn: withCtx(() => [
1148
+ renderSlot(_ctx.$slots, "loading", normalizeProps(guardReactiveProps(unref(hintSlotScope))))
1149
+ ]),
1150
+ key: "1"
1151
+ } : void 0,
1152
+ _ctx.$slots.valid ? {
1153
+ name: "valid",
1154
+ fn: withCtx(() => [
1155
+ renderSlot(_ctx.$slots, "valid", normalizeProps(guardReactiveProps(unref(hintSlotScope))))
1156
+ ]),
1157
+ key: "2"
1158
+ } : void 0,
1159
+ _ctx.$slots.invalid ? {
1160
+ name: "invalid",
1161
+ fn: withCtx(() => [
1162
+ renderSlot(_ctx.$slots, "invalid", normalizeProps(guardReactiveProps(unref(hintSlotScope))))
1163
+ ]),
1164
+ key: "3"
1165
+ } : void 0
1166
+ ]), 1032, ["id"])
1167
+ ],
1168
+ 2
1169
+ /* CLASS */
1170
+ );
1104
1171
  };
1105
1172
  }
1106
1173
  });