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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (496) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +148 -51
  3. package/auto-imports.d.ts +25 -12
  4. package/bin/icons.cjs +1 -1
  5. package/bin/icons.js +28 -20
  6. package/dist/Volver.d.ts +11 -11
  7. package/dist/components/VvAccordion/VvAccordion.es.js +192 -104
  8. package/dist/components/VvAccordion/VvAccordion.umd.js +1 -1
  9. package/dist/components/VvAccordion/VvAccordion.vue.d.ts +29 -10
  10. package/dist/components/VvAccordion/index.d.ts +8 -9
  11. package/dist/components/VvAccordionGroup/VvAccordionGroup.es.js +485 -206
  12. package/dist/components/VvAccordionGroup/VvAccordionGroup.umd.js +1 -1
  13. package/dist/components/VvAccordionGroup/VvAccordionGroup.vue.d.ts +61 -18
  14. package/dist/components/VvAccordionGroup/index.d.ts +16 -8
  15. package/dist/components/VvAction/VvAction.es.js +84 -33
  16. package/dist/components/VvAction/VvAction.umd.js +1 -1
  17. package/dist/components/VvAction/VvAction.vue.d.ts +61 -28
  18. package/dist/components/VvAction/index.d.ts +26 -10
  19. package/dist/components/VvAlert/VvAlert.es.js +350 -318
  20. package/dist/components/VvAlert/VvAlert.umd.js +1 -1
  21. package/dist/components/VvAlert/VvAlert.vue.d.ts +25 -17
  22. package/dist/components/VvAlert/index.d.ts +20 -11
  23. package/dist/components/VvAlertGroup/VvAlertGroup.es.js +388 -327
  24. package/dist/components/VvAlertGroup/VvAlertGroup.umd.js +1 -1
  25. package/dist/components/VvAlertGroup/VvAlertGroup.vue.d.ts +22 -17
  26. package/dist/components/VvAlertGroup/index.d.ts +10 -18
  27. package/dist/components/VvAvatar/VvAvatar.es.js +66 -28
  28. package/dist/components/VvAvatar/VvAvatar.umd.js +1 -1
  29. package/dist/components/VvAvatar/VvAvatar.vue.d.ts +13 -5
  30. package/dist/components/VvAvatar/index.d.ts +4 -1
  31. package/dist/components/VvAvatarGroup/VvAvatarGroup.es.js +147 -74
  32. package/dist/components/VvAvatarGroup/VvAvatarGroup.umd.js +1 -1
  33. package/dist/components/VvAvatarGroup/VvAvatarGroup.vue.d.ts +17 -10
  34. package/dist/components/VvAvatarGroup/index.d.ts +6 -3
  35. package/dist/components/VvBadge/VvBadge.es.js +78 -34
  36. package/dist/components/VvBadge/VvBadge.umd.js +1 -1
  37. package/dist/components/VvBadge/VvBadge.vue.d.ts +13 -5
  38. package/dist/components/VvBadge/index.d.ts +4 -1
  39. package/dist/components/VvBreadcrumb/VvBreadcrumb.es.js +294 -83
  40. package/dist/components/VvBreadcrumb/VvBreadcrumb.umd.js +1 -1
  41. package/dist/components/VvBreadcrumb/VvBreadcrumb.vue.d.ts +28 -8
  42. package/dist/components/VvBreadcrumb/index.d.ts +6 -10
  43. package/dist/components/VvButton/VvButton.es.js +510 -488
  44. package/dist/components/VvButton/VvButton.umd.js +1 -1
  45. package/dist/components/VvButton/VvButton.vue.d.ts +97 -45
  46. package/dist/components/VvButton/index.d.ts +52 -30
  47. package/dist/components/VvButtonGroup/VvButtonGroup.es.js +95 -45
  48. package/dist/components/VvButtonGroup/VvButtonGroup.umd.js +1 -1
  49. package/dist/components/VvButtonGroup/VvButtonGroup.vue.d.ts +35 -17
  50. package/dist/components/VvButtonGroup/index.d.ts +13 -4
  51. package/dist/components/VvCard/VvCard.es.js +87 -42
  52. package/dist/components/VvCard/VvCard.umd.js +1 -1
  53. package/dist/components/VvCard/VvCard.vue.d.ts +13 -5
  54. package/dist/components/VvCard/index.d.ts +4 -1
  55. package/dist/components/VvCheckbox/VvCheckbox.es.js +177 -136
  56. package/dist/components/VvCheckbox/VvCheckbox.umd.js +1 -1
  57. package/dist/components/VvCheckbox/VvCheckbox.vue.d.ts +105 -35
  58. package/dist/components/VvCheckbox/index.d.ts +52 -19
  59. package/dist/components/VvCheckboxGroup/VvCheckboxGroup.es.js +408 -322
  60. package/dist/components/VvCheckboxGroup/VvCheckboxGroup.umd.js +1 -1
  61. package/dist/components/VvCheckboxGroup/VvCheckboxGroup.vue.d.ts +103 -34
  62. package/dist/components/VvCheckboxGroup/index.d.ts +45 -12
  63. package/dist/components/VvCombobox/VvCombobox.es.js +2304 -1992
  64. package/dist/components/VvCombobox/VvCombobox.umd.js +1 -1
  65. package/dist/components/VvCombobox/VvCombobox.vue.d.ts +258 -672
  66. package/dist/components/VvCombobox/index.d.ts +377 -135
  67. package/dist/components/VvDialog/VvDialog.es.js +177 -297
  68. package/dist/components/VvDialog/VvDialog.umd.js +1 -1
  69. package/dist/components/VvDialog/VvDialog.vue.d.ts +23 -7
  70. package/dist/components/VvDialog/index.d.ts +12 -0
  71. package/dist/components/VvDropdown/VvDropdown.es.js +172 -102
  72. package/dist/components/VvDropdown/VvDropdown.umd.js +1 -1
  73. package/dist/components/VvDropdown/VvDropdown.vue.d.ts +110 -315
  74. package/dist/components/VvDropdown/VvDropdownAction.vue.d.ts +77 -28
  75. package/dist/components/VvDropdown/VvDropdownItem.vue.d.ts +13 -1
  76. package/dist/components/VvDropdown/VvDropdownOptgroup.vue.d.ts +13 -5
  77. package/dist/components/VvDropdown/VvDropdownOption.vue.d.ts +38 -10
  78. package/dist/components/VvDropdown/index.d.ts +52 -118
  79. package/dist/components/VvDropdownAction/VvDropdownAction.es.js +165 -60
  80. package/dist/components/VvDropdownAction/VvDropdownAction.umd.js +1 -1
  81. package/dist/components/VvDropdownItem/VvDropdownItem.es.js +337 -10
  82. package/dist/components/VvDropdownItem/VvDropdownItem.umd.js +1 -1
  83. package/dist/components/VvDropdownOptgroup/VvDropdownOptgroup.es.js +63 -20
  84. package/dist/components/VvDropdownOptgroup/VvDropdownOptgroup.umd.js +1 -1
  85. package/dist/components/VvDropdownOption/VvDropdownOption.es.js +188 -80
  86. package/dist/components/VvDropdownOption/VvDropdownOption.umd.js +1 -1
  87. package/dist/components/VvIcon/VvIcon.es.js +24 -102
  88. package/dist/components/VvIcon/VvIcon.umd.js +1 -1
  89. package/dist/components/VvIcon/VvIcon.vue.d.ts +4 -68
  90. package/dist/components/VvIcon/index.d.ts +33 -48
  91. package/dist/components/VvInputFile/VvInputFile.es.js +1777 -0
  92. package/dist/components/VvInputFile/VvInputFile.umd.js +1 -0
  93. package/dist/components/VvInputFile/VvInputFile.vue.d.ts +317 -0
  94. package/dist/components/VvInputFile/index.d.ts +193 -0
  95. package/dist/components/VvInputText/VvInputClearAction.d.ts +16 -10
  96. package/dist/components/VvInputText/VvInputPasswordAction.d.ts +20 -14
  97. package/dist/components/VvInputText/VvInputStepAction.d.ts +11 -7
  98. package/dist/components/VvInputText/VvInputText.es.js +1491 -551
  99. package/dist/components/VvInputText/VvInputText.umd.js +1 -1
  100. package/dist/components/VvInputText/VvInputText.vue.d.ts +216 -68
  101. package/dist/components/VvInputText/index.d.ts +101 -31
  102. package/dist/components/VvNav/VvNav.es.js +155 -75
  103. package/dist/components/VvNav/VvNav.umd.js +1 -1
  104. package/dist/components/VvNav/VvNav.vue.d.ts +32 -11
  105. package/dist/components/VvNav/VvNavItem.vue.d.ts +1 -1
  106. package/dist/components/VvNav/VvNavSeparator.vue.d.ts +1 -1
  107. package/dist/components/VvNav/index.d.ts +5 -2
  108. package/dist/components/VvNavItem/VvNavItem.es.js +100 -39
  109. package/dist/components/VvNavItem/VvNavItem.umd.js +1 -1
  110. package/dist/components/VvProgress/VvProgress.es.js +73 -27
  111. package/dist/components/VvProgress/VvProgress.umd.js +1 -1
  112. package/dist/components/VvProgress/VvProgress.vue.d.ts +13 -6
  113. package/dist/components/VvProgress/index.d.ts +4 -1
  114. package/dist/components/VvRadio/VvRadio.es.js +175 -135
  115. package/dist/components/VvRadio/VvRadio.umd.js +1 -1
  116. package/dist/components/VvRadio/VvRadio.vue.d.ts +103 -33
  117. package/dist/components/VvRadio/index.d.ts +50 -17
  118. package/dist/components/VvRadioGroup/VvRadioGroup.es.js +406 -321
  119. package/dist/components/VvRadioGroup/VvRadioGroup.umd.js +1 -1
  120. package/dist/components/VvRadioGroup/VvRadioGroup.vue.d.ts +103 -34
  121. package/dist/components/VvRadioGroup/index.d.ts +45 -12
  122. package/dist/components/VvSelect/VvSelect.es.js +677 -611
  123. package/dist/components/VvSelect/VvSelect.umd.js +1 -1
  124. package/dist/components/VvSelect/VvSelect.vue.d.ts +107 -199
  125. package/dist/components/VvSelect/index.d.ts +196 -16
  126. package/dist/components/VvTab/VvTab.es.js +230 -110
  127. package/dist/components/VvTab/VvTab.umd.js +1 -1
  128. package/dist/components/VvTab/VvTab.vue.d.ts +34 -12
  129. package/dist/components/VvTab/index.d.ts +6 -3
  130. package/dist/components/VvTextarea/VvTextarea.es.js +606 -597
  131. package/dist/components/VvTextarea/VvTextarea.umd.js +1 -1
  132. package/dist/components/VvTextarea/VvTextarea.vue.d.ts +159 -54
  133. package/dist/components/VvTextarea/index.d.ts +69 -20
  134. package/dist/components/VvTooltip/VvTooltip.es.js +83 -30
  135. package/dist/components/VvTooltip/VvTooltip.umd.js +1 -1
  136. package/dist/components/VvTooltip/VvTooltip.vue.d.ts +16 -9
  137. package/dist/components/VvTooltip/index.d.ts +5 -2
  138. package/dist/components/common/HintSlot.d.ts +8 -9
  139. package/dist/components/index.d.ts +10 -0
  140. package/dist/components/index.es.js +4086 -2029
  141. package/dist/components/index.umd.js +1 -1
  142. package/dist/composables/alert/useAlerInject.d.ts +4 -0
  143. package/dist/composables/alert/useAlert.d.ts +71 -6
  144. package/dist/composables/alert/{useProvideAlert.d.ts → useAlertProvide.d.ts} +1 -1
  145. package/dist/composables/dropdown/useDropdownContextmenu.d.ts +18 -0
  146. package/dist/composables/dropdown/useDropdownInject.d.ts +12 -0
  147. package/dist/composables/dropdown/{useProvideDropdown.d.ts → useDropdownProvide.d.ts} +6 -7
  148. package/dist/composables/dropdown/useDropdownVirtualElement.d.ts +17 -0
  149. package/dist/composables/group/useGroupStateInject.d.ts +9 -0
  150. package/dist/composables/group/useGroupStateProvide.d.ts +6 -0
  151. package/dist/composables/index.d.ts +3 -0
  152. package/dist/composables/index.es.js +178 -6
  153. package/dist/composables/index.umd.js +1 -1
  154. package/dist/composables/useBlurhash.d.ts +7 -0
  155. package/dist/composables/useComponentFocus.d.ts +2 -2
  156. package/dist/composables/useComponentIcon.d.ts +9 -8
  157. package/dist/composables/useOptions.d.ts +5 -5
  158. package/dist/composables/usePersistence.d.ts +3 -0
  159. package/dist/composables/useUniqueId.d.ts +2 -2
  160. package/dist/composables/useVolver.d.ts +1 -1
  161. package/dist/constants.d.ts +35 -33
  162. package/dist/directives/index.d.ts +3 -5
  163. package/dist/directives/index.es.js +247 -82
  164. package/dist/directives/index.umd.js +1 -1
  165. package/dist/directives/v-contextmenu.es.js +137 -31
  166. package/dist/directives/v-contextmenu.umd.js +1 -1
  167. package/dist/directives/v-tooltip.es.js +101 -39
  168. package/dist/directives/v-tooltip.umd.js +1 -1
  169. package/dist/icons.d.ts +17 -17
  170. package/dist/icons.es.js +516 -516
  171. package/dist/icons.umd.js +1 -1
  172. package/dist/index.d.ts +3 -1
  173. package/dist/index.es.js +74 -6
  174. package/dist/index.umd.js +1 -1
  175. package/dist/props/index.d.ts +277 -193
  176. package/dist/resolvers/unplugin.d.ts +6 -1
  177. package/dist/resolvers/unplugin.es.js +87 -10
  178. package/dist/resolvers/unplugin.umd.js +1 -1
  179. package/dist/stories/Accordion/Accordion.settings.d.ts +2 -57
  180. package/dist/stories/AccordionGroup/AccordionGroup.settings.d.ts +2 -66
  181. package/dist/stories/AccordionGroup/AccordionGroup.stories.d.ts +2 -127
  182. package/dist/stories/AccordionGroup/AccordionGroupSlots.stories.d.ts +1304 -538
  183. package/dist/stories/Alert/Alert.settings.d.ts +2 -109
  184. package/dist/stories/AlertGroup/AlertGroup.settings.d.ts +2 -85
  185. package/dist/stories/AlertGroup/AlertGroupWithComposable.stories.d.ts +1 -1
  186. package/dist/stories/AvatarGroup/AvatarGroup.settings.d.ts +2 -38
  187. package/dist/stories/Badge/Badge.settings.d.ts +2 -26
  188. package/dist/stories/Badge/Badge.test.d.ts +1 -1
  189. package/dist/stories/Blurhash/BlurhashComposable.stories.d.ts +4 -0
  190. package/dist/stories/Breadcrumb/Breadcrumb.settings.d.ts +2 -18
  191. package/dist/stories/Breadcrumb/Breadcrumb.test.d.ts +1 -1
  192. package/dist/stories/Button/Button.settings.d.ts +2 -194
  193. package/dist/stories/ButtonGroup/ButtonGroup.settings.d.ts +2 -40
  194. package/dist/stories/Card/Card.settings.d.ts +2 -63
  195. package/dist/stories/Checkbox/Checkbox.settings.d.ts +2 -132
  196. package/dist/stories/CheckboxGroup/CheckboxGroup.settings.d.ts +1 -141
  197. package/dist/stories/Combobox/Combobox.settings.d.ts +2 -609
  198. package/dist/stories/Combobox/Combobox.stories.d.ts +1 -0
  199. package/dist/stories/Combobox/ComboboxMultiple.stories.d.ts +1 -0
  200. package/dist/stories/Dialog/Dialog.settings.d.ts +2 -47
  201. package/dist/stories/Dialog/DialogModifiers.stories.d.ts +8 -0
  202. package/dist/stories/Dropdown/Dropdown.settings.d.ts +2 -205
  203. package/dist/stories/Icon/Icon.settings.d.ts +3 -68
  204. package/dist/stories/InputFile/InputFile.settings.d.ts +6 -0
  205. package/dist/stories/InputFile/InputFile.stories.d.ts +13 -0
  206. package/dist/stories/InputFile/InputFileDropArea.stories.d.ts +9 -0
  207. package/dist/stories/InputFile/InputFileIconPosition.stories.d.ts +8 -0
  208. package/dist/stories/InputFile/InputFileSlots.stories.d.ts +7 -0
  209. package/dist/stories/InputText/InputText.settings.d.ts +2 -438
  210. package/dist/stories/Nav/Nav.settings.d.ts +2 -10
  211. package/dist/stories/Progress/Progress.settings.d.ts +2 -27
  212. package/dist/stories/Radio/Radio.settings.d.ts +1 -110
  213. package/dist/stories/RadioGroup/RadioGroup.settings.d.ts +1 -141
  214. package/dist/stories/Select/Select.settings.d.ts +2 -246
  215. package/dist/stories/Select/Select.stories.d.ts +1 -0
  216. package/dist/stories/Tab/Tab.settings.d.ts +2 -15
  217. package/dist/stories/Textarea/Textarea.settings.d.ts +2 -287
  218. package/dist/stories/argTypes.d.ts +27 -866
  219. package/dist/test/expect.d.ts +1 -2
  220. package/dist/test/options.d.ts +1 -1
  221. package/dist/test/sleep.d.ts +1 -1
  222. package/dist/types/alert.d.ts +9 -7
  223. package/dist/types/blurhash.d.ts +12 -0
  224. package/dist/types/floating-ui.d.ts +1 -1
  225. package/dist/types/generic.d.ts +1 -2
  226. package/dist/types/group.d.ts +37 -15
  227. package/dist/types/index.d.ts +7 -0
  228. package/dist/types/input-file.d.ts +9 -0
  229. package/dist/types/nav.d.ts +2 -2
  230. package/dist/utils/DomUtilities.d.ts +1 -0
  231. package/dist/utils/ObjectUtilities.d.ts +8 -9
  232. package/dist/workers/blurhash.d.ts +1 -0
  233. package/package.json +238 -246
  234. package/src/Volver.ts +251 -246
  235. package/src/assets/icons/detailed.json +1 -1
  236. package/src/assets/icons/normal.json +1 -1
  237. package/src/assets/icons/simple.json +1 -1
  238. package/src/components/VvAccordion/VvAccordion.vue +163 -100
  239. package/src/components/VvAccordion/index.ts +65 -80
  240. package/src/components/VvAccordionGroup/VvAccordionGroup.vue +224 -106
  241. package/src/components/VvAccordionGroup/index.ts +42 -42
  242. package/src/components/VvAction/VvAction.vue +144 -130
  243. package/src/components/VvAlert/VvAlert.vue +72 -70
  244. package/src/components/VvAlert/index.ts +149 -147
  245. package/src/components/VvAlertGroup/VvAlertGroup.vue +57 -56
  246. package/src/components/VvAlertGroup/index.ts +102 -118
  247. package/src/components/VvAvatar/VvAvatar.vue +20 -14
  248. package/src/components/VvAvatar/index.ts +5 -5
  249. package/src/components/VvAvatarGroup/VvAvatarGroup.vue +58 -53
  250. package/src/components/VvAvatarGroup/index.ts +21 -21
  251. package/src/components/VvBadge/VvBadge.vue +15 -14
  252. package/src/components/VvBadge/index.ts +2 -2
  253. package/src/components/VvBreadcrumb/VvBreadcrumb.vue +50 -48
  254. package/src/components/VvBreadcrumb/index.ts +3 -9
  255. package/src/components/VvButton/VvButton.vue +163 -152
  256. package/src/components/VvButton/index.ts +104 -111
  257. package/src/components/VvButtonGroup/VvButtonGroup.vue +73 -65
  258. package/src/components/VvButtonGroup/index.ts +23 -22
  259. package/src/components/VvCard/VvCard.vue +30 -30
  260. package/src/components/VvCard/index.ts +2 -2
  261. package/src/components/VvCheckbox/VvCheckbox.vue +186 -184
  262. package/src/components/VvCheckbox/index.ts +45 -45
  263. package/src/components/VvCheckboxGroup/VvCheckboxGroup.vue +88 -87
  264. package/src/components/VvCombobox/VvCombobox.vue +655 -619
  265. package/src/components/VvCombobox/index.ts +210 -168
  266. package/src/components/VvDialog/VvDialog.vue +139 -129
  267. package/src/components/VvDialog/index.ts +42 -36
  268. package/src/components/VvDropdown/VvDropdown.vue +466 -445
  269. package/src/components/VvDropdown/VvDropdownAction.vue +37 -39
  270. package/src/components/VvDropdown/VvDropdownItem.vue +30 -26
  271. package/src/components/VvDropdown/VvDropdownOptgroup.vue +13 -12
  272. package/src/components/VvDropdown/VvDropdownOption.vue +47 -64
  273. package/src/components/VvDropdown/index.ts +61 -27
  274. package/src/components/VvIcon/README.md +1 -1
  275. package/src/components/VvIcon/VvIcon.vue +133 -133
  276. package/src/components/VvIcon/index.ts +84 -97
  277. package/src/components/VvInputFile/VvInputFile.vue +413 -0
  278. package/src/components/VvInputFile/index.ts +143 -0
  279. package/src/components/VvInputText/VvInputClearAction.ts +51 -47
  280. package/src/components/VvInputText/VvInputPasswordAction.ts +66 -62
  281. package/src/components/VvInputText/VvInputStepAction.ts +43 -43
  282. package/src/components/VvInputText/VvInputText.vue +652 -516
  283. package/src/components/VvInputText/VvInputTextActions.ts +87 -87
  284. package/src/components/VvInputText/index.ts +201 -186
  285. package/src/components/VvNav/VvNav.vue +40 -36
  286. package/src/components/VvNav/VvNavItem.vue +12 -12
  287. package/src/components/VvNav/VvNavSeparator.vue +6 -6
  288. package/src/components/VvNav/index.ts +2 -2
  289. package/src/components/VvProgress/VvProgress.vue +27 -27
  290. package/src/components/VvProgress/index.ts +28 -28
  291. package/src/components/VvRadio/VvRadio.vue +115 -112
  292. package/src/components/VvRadio/index.ts +29 -29
  293. package/src/components/VvRadioGroup/VvRadioGroup.vue +91 -90
  294. package/src/components/VvSelect/VvSelect.vue +262 -241
  295. package/src/components/VvSelect/index.ts +88 -63
  296. package/src/components/VvTab/VvTab.vue +79 -69
  297. package/src/components/VvTab/index.ts +13 -13
  298. package/src/components/VvTextarea/VvTextarea.vue +218 -219
  299. package/src/components/VvTextarea/index.ts +35 -35
  300. package/src/components/VvTooltip/VvTooltip.vue +22 -16
  301. package/src/components/VvTooltip/index.ts +12 -12
  302. package/src/components/common/HintSlot.ts +151 -152
  303. package/src/components/index.ts +10 -0
  304. package/src/composables/alert/{useInjectAlert.ts → useAlerInject.ts} +1 -1
  305. package/src/composables/alert/useAlert.ts +76 -73
  306. package/src/composables/alert/{useProvideAlert.ts → useAlertProvide.ts} +12 -12
  307. package/src/composables/dropdown/useDropdownContextmenu.ts +22 -0
  308. package/src/composables/dropdown/{useInjectDropdown.ts → useDropdownInject.ts} +6 -6
  309. package/src/composables/dropdown/useDropdownProvide.ts +94 -0
  310. package/src/composables/dropdown/useDropdownVirtualElement.ts +53 -0
  311. package/src/composables/group/useGroupStateInject.ts +55 -0
  312. package/src/composables/group/useGroupStateProvide.ts +14 -0
  313. package/src/composables/index.ts +3 -0
  314. package/src/composables/useBlurhash.ts +68 -0
  315. package/src/composables/useComponentFocus.ts +9 -9
  316. package/src/composables/useComponentIcon.ts +36 -35
  317. package/src/composables/useDebouncedInput.ts +25 -25
  318. package/src/composables/useDefaults.ts +81 -80
  319. package/src/composables/useModifiers.ts +29 -29
  320. package/src/composables/useOptions.ts +51 -42
  321. package/src/composables/usePersistence.ts +74 -0
  322. package/src/composables/useTextCount.ts +46 -46
  323. package/src/composables/useUniqueId.ts +4 -4
  324. package/src/composables/useVolver.ts +1 -1
  325. package/src/constants.ts +98 -83
  326. package/src/directives/index.ts +3 -6
  327. package/src/directives/v-contextmenu.ts +26 -34
  328. package/src/directives/v-tooltip.ts +20 -11
  329. package/src/icons.ts +2 -2
  330. package/src/index.ts +6 -4
  331. package/src/props/index.ts +461 -384
  332. package/src/resolvers/unplugin.ts +154 -144
  333. package/src/shims.d.ts +4 -5
  334. package/src/stories/Accordion/Accordion.settings.ts +51 -50
  335. package/src/stories/Accordion/Accordion.stories.ts +21 -21
  336. package/src/stories/Accordion/Accordion.test.ts +56 -54
  337. package/src/stories/Accordion/AccordionSlots.stories.ts +13 -13
  338. package/src/stories/AccordionGroup/AccordionGroup.settings.ts +70 -67
  339. package/src/stories/AccordionGroup/AccordionGroup.stories.ts +41 -39
  340. package/src/stories/AccordionGroup/AccordionGroup.test.ts +49 -45
  341. package/src/stories/AccordionGroup/AccordionGroupSlots.stories.ts +36 -36
  342. package/src/stories/Alert/Alert.settings.ts +117 -116
  343. package/src/stories/Alert/Alert.stories.ts +30 -30
  344. package/src/stories/Alert/Alert.test.ts +78 -80
  345. package/src/stories/Alert/AlertModifiers.stories.ts +45 -45
  346. package/src/stories/Alert/AlertSlots.stories.ts +35 -35
  347. package/src/stories/AlertGroup/AlertGroup.settings.ts +107 -105
  348. package/src/stories/AlertGroup/AlertGroup.stories.ts +25 -25
  349. package/src/stories/AlertGroup/AlertGroup.test.ts +69 -71
  350. package/src/stories/AlertGroup/AlertGroupPosition.stories.ts +68 -68
  351. package/src/stories/AlertGroup/AlertGroupSlots.stories.ts +23 -23
  352. package/src/stories/AlertGroup/AlertGroupWithComposable.stories.ts +58 -58
  353. package/src/stories/Avatar/Avatar.settings.ts +29 -29
  354. package/src/stories/Avatar/Avatar.stories.ts +22 -22
  355. package/src/stories/Avatar/Avatar.test.ts +22 -24
  356. package/src/stories/Avatar/AvatarBadge.stories.ts +15 -15
  357. package/src/stories/Avatar/AvatarModifiers.stories.ts +60 -60
  358. package/src/stories/Avatar/AvatarSlots.stories.ts +17 -17
  359. package/src/stories/AvatarGroup/AvatarGroup.settings.ts +54 -53
  360. package/src/stories/AvatarGroup/AvatarGroup.stories.ts +17 -17
  361. package/src/stories/AvatarGroup/AvatarGroup.test.ts +24 -26
  362. package/src/stories/AvatarGroup/AvatarGroupModifiers.stories.ts +15 -15
  363. package/src/stories/AvatarGroup/AvatarGroupSlotDefault.stories.ts +17 -17
  364. package/src/stories/Badge/Badge.settings.ts +21 -20
  365. package/src/stories/Badge/Badge.stories.ts +24 -24
  366. package/src/stories/Badge/Badge.test.ts +8 -8
  367. package/src/stories/Badge/BadgeSlots.stories.ts +10 -10
  368. package/src/stories/Blurhash/BlurhashComposable.stories.ts +116 -0
  369. package/src/stories/Breadcrumb/Breadcrumb.settings.ts +35 -34
  370. package/src/stories/Breadcrumb/Breadcrumb.stories.ts +23 -23
  371. package/src/stories/Breadcrumb/Breadcrumb.test.ts +44 -43
  372. package/src/stories/Breadcrumb/BreadcrumbSlots.stories.ts +19 -19
  373. package/src/stories/Button/Button.settings.ts +147 -151
  374. package/src/stories/Button/Button.stories.ts +19 -19
  375. package/src/stories/Button/Button.test.ts +41 -42
  376. package/src/stories/Button/ButtonIcon.stories.ts +42 -42
  377. package/src/stories/Button/ButtonLink.stories.ts +24 -24
  378. package/src/stories/Button/ButtonLoading.stories.ts +22 -22
  379. package/src/stories/Button/ButtonModifiers.stories.ts +91 -91
  380. package/src/stories/Button/ButtonSlots.stories.ts +47 -47
  381. package/src/stories/Button/ButtonState.stories.ts +23 -23
  382. package/src/stories/Button/ButtonToggle.stories.ts +30 -30
  383. package/src/stories/ButtonGroup/ButtonGroup.settings.ts +33 -24
  384. package/src/stories/ButtonGroup/ButtonGroup.stories.ts +19 -19
  385. package/src/stories/ButtonGroup/ButtonGroup.test.ts +23 -26
  386. package/src/stories/ButtonGroup/ButtonGroupModifiers.stories.ts +20 -20
  387. package/src/stories/ButtonGroup/ButtonGroupSlots.stories.ts +17 -17
  388. package/src/stories/ButtonGroup/ButtonGroupToggle.stories.ts +22 -22
  389. package/src/stories/Card/Card.settings.ts +49 -48
  390. package/src/stories/Card/Card.stories.ts +22 -22
  391. package/src/stories/Card/Card.test.ts +14 -16
  392. package/src/stories/Card/CardSlots.stories.ts +42 -42
  393. package/src/stories/Checkbox/Checkbox.settings.ts +36 -35
  394. package/src/stories/Checkbox/Checkbox.stories.ts +57 -57
  395. package/src/stories/Checkbox/Checkbox.test.ts +63 -66
  396. package/src/stories/Checkbox/CheckboxBinary.stories.ts +18 -18
  397. package/src/stories/Checkbox/CheckboxSlots.stories.ts +15 -15
  398. package/src/stories/CheckboxGroup/CheckboxGroup.settings.ts +9 -9
  399. package/src/stories/CheckboxGroup/CheckboxGroup.stories.ts +50 -50
  400. package/src/stories/CheckboxGroup/CheckboxGroup.test.ts +64 -68
  401. package/src/stories/CheckboxGroup/CheckboxGroupOptions.stories.ts +34 -34
  402. package/src/stories/CheckboxGroup/CheckboxGroupSlots.stories.ts +23 -23
  403. package/src/stories/Combobox/Combobox.settings.ts +408 -385
  404. package/src/stories/Combobox/Combobox.stories.ts +116 -107
  405. package/src/stories/Combobox/Combobox.test.ts +92 -92
  406. package/src/stories/Combobox/ComboboxIconPosition.stories.ts +25 -24
  407. package/src/stories/Combobox/ComboboxMultiple.stories.ts +32 -22
  408. package/src/stories/Combobox/ComboboxOptions.stories.ts +81 -84
  409. package/src/stories/Combobox/ComboboxSlots.stories.ts +55 -54
  410. package/src/stories/Dialog/Dialog.settings.ts +49 -40
  411. package/src/stories/Dialog/Dialog.stories.ts +28 -28
  412. package/src/stories/Dialog/Dialog.test.ts +49 -54
  413. package/src/stories/Dialog/DialogModifiers.stories.ts +42 -0
  414. package/src/stories/Dialog/DialogSlots.stories.ts +20 -20
  415. package/src/stories/Dropdown/Dropdown.settings.ts +62 -61
  416. package/src/stories/Dropdown/Dropdown.stories.ts +60 -60
  417. package/src/stories/Dropdown/Dropdown.test.ts +9 -13
  418. package/src/stories/Dropdown/DropdownContextmenuDirective.stories.ts +18 -19
  419. package/src/stories/Dropdown/DropdownMultilevel.stories.ts +19 -19
  420. package/src/stories/Dropdown/DropdownSlots.stories.ts +51 -51
  421. package/src/stories/Icon/Icon.settings.ts +66 -65
  422. package/src/stories/Icon/Icon.stories.ts +29 -30
  423. package/src/stories/Icon/IconsCollection.stories.ts +24 -24
  424. package/src/stories/InputFile/InputFile.settings.ts +37 -0
  425. package/src/stories/InputFile/InputFile.stories.ts +97 -0
  426. package/src/stories/InputFile/InputFileDropArea.stories.ts +56 -0
  427. package/src/stories/InputFile/InputFileIconPosition.stories.ts +43 -0
  428. package/src/stories/InputFile/InputFileSlots.stories.ts +33 -0
  429. package/src/stories/InputText/InputText.settings.ts +248 -246
  430. package/src/stories/InputText/InputText.stories.ts +68 -68
  431. package/src/stories/InputText/InputText.test.ts +119 -122
  432. package/src/stories/InputText/InputTextIconPosition.stories.ts +24 -24
  433. package/src/stories/InputText/InputTextLength.stories.ts +33 -33
  434. package/src/stories/InputText/InputTextMask.stories.ts +91 -91
  435. package/src/stories/InputText/InputTextMinMax.stories.ts +30 -30
  436. package/src/stories/InputText/InputTextSlots.stories.ts +20 -20
  437. package/src/stories/InputText/InputTextType.stories.ts +70 -70
  438. package/src/stories/Nav/Nav.settings.ts +27 -27
  439. package/src/stories/Nav/Nav.stories.ts +18 -18
  440. package/src/stories/Nav/Nav.test.ts +10 -12
  441. package/src/stories/Nav/NavModifiers.stories.ts +25 -25
  442. package/src/stories/Progress/Progress.settings.ts +24 -23
  443. package/src/stories/Progress/Progress.stories.ts +23 -23
  444. package/src/stories/Progress/Progress.test.ts +5 -5
  445. package/src/stories/Radio/Radio.settings.ts +9 -9
  446. package/src/stories/Radio/Radio.stories.ts +47 -47
  447. package/src/stories/Radio/Radio.test.ts +54 -57
  448. package/src/stories/Radio/RadioSlots.stories.ts +15 -15
  449. package/src/stories/RadioGroup/RadioGroup.settings.ts +9 -9
  450. package/src/stories/RadioGroup/RadioGroup.stories.ts +51 -52
  451. package/src/stories/RadioGroup/RadioGroup.test.ts +64 -68
  452. package/src/stories/RadioGroup/RadioGroupOptions.stories.ts +35 -35
  453. package/src/stories/RadioGroup/RadioGroupSlots.stories.ts +23 -23
  454. package/src/stories/Select/Select.settings.ts +72 -71
  455. package/src/stories/Select/Select.stories.ts +75 -66
  456. package/src/stories/Select/Select.test.ts +67 -70
  457. package/src/stories/Select/SelectIconPosition.stories.ts +27 -26
  458. package/src/stories/Select/SelectOptions.stories.ts +55 -55
  459. package/src/stories/Select/SelectSlots.stories.ts +21 -20
  460. package/src/stories/Tab/Tab.settings.ts +34 -34
  461. package/src/stories/Tab/Tab.stories.ts +16 -16
  462. package/src/stories/Tab/Tab.test.ts +17 -19
  463. package/src/stories/Textarea/Textarea.settings.ts +80 -78
  464. package/src/stories/Textarea/Textarea.stories.ts +63 -63
  465. package/src/stories/Textarea/Textarea.test.ts +70 -73
  466. package/src/stories/Textarea/TextareaLength.stories.ts +33 -33
  467. package/src/stories/Textarea/TextareaSlots.stories.ts +20 -20
  468. package/src/stories/Textarea/TextareatIconPosition.stories.ts +24 -24
  469. package/src/stories/Tooltip/Tooltip.settings.ts +16 -17
  470. package/src/stories/Tooltip/Tooltip.stories.ts +18 -18
  471. package/src/stories/Tooltip/Tooltip.test.ts +53 -54
  472. package/src/stories/Tooltip/TooltipDirective.stories.ts +37 -37
  473. package/src/stories/argTypes.ts +506 -505
  474. package/src/test/expect.ts +74 -79
  475. package/src/test/options.ts +17 -16
  476. package/src/test/sleep.ts +3 -2
  477. package/src/test/types.d.ts +12 -12
  478. package/src/types/alert.ts +21 -17
  479. package/src/types/blurhash.ts +21 -0
  480. package/src/types/floating-ui.ts +1 -1
  481. package/src/types/generic.ts +2 -3
  482. package/src/types/group.ts +35 -27
  483. package/src/types/index.ts +7 -0
  484. package/src/types/input-file.ts +10 -0
  485. package/src/types/nav.ts +13 -14
  486. package/src/utils/DomUtilities.ts +15 -0
  487. package/src/utils/ObjectUtilities.ts +192 -188
  488. package/src/workers/blurhash.ts +9 -0
  489. package/dist/composables/alert/useInjectAlert.d.ts +0 -9
  490. package/dist/composables/dropdown/useInjectDropdown.d.ts +0 -32
  491. package/dist/composables/group/useInjectedGroupState.d.ts +0 -10
  492. package/dist/composables/group/useProvideGroupState.d.ts +0 -6
  493. package/src/composables/dropdown/useProvideDropdown.ts +0 -94
  494. package/src/composables/group/useInjectedGroupState.ts +0 -51
  495. package/src/composables/group/useProvideGroupState.ts +0 -20
  496. /package/src/assets/icons/normal/{dulicate.svg → duplicate.svg} +0 -0
@@ -1,102 +1,12 @@
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 { computed, isRef, defineComponent, h, inject, unref, mergeDefaults, ref, toRefs, openBlock, createBlock, mergeProps, createCommentVNode, watch, useId, 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";
5
4
  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
- }
99
- };
5
+ var StorageType = /* @__PURE__ */ ((StorageType2) => {
6
+ StorageType2["local"] = "local";
7
+ StorageType2["session"] = "session";
8
+ return StorageType2;
9
+ })(StorageType || {});
100
10
  var Strategy = /* @__PURE__ */ ((Strategy2) => {
101
11
  Strategy2["absolute"] = "absolute";
102
12
  Strategy2["fixed"] = "fixed";
@@ -131,260 +41,14 @@ var ButtonType = /* @__PURE__ */ ((ButtonType2) => {
131
41
  ButtonType2["reset"] = "reset";
132
42
  return ButtonType2;
133
43
  })(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 || {});
44
+ var ActionTag = /* @__PURE__ */ ((ActionTag2) => {
45
+ ActionTag2["nuxtLink"] = "nuxt-link";
46
+ ActionTag2["routerLink"] = "router-link";
47
+ ActionTag2["a"] = "a";
48
+ ActionTag2["button"] = "button";
49
+ return ActionTag2;
50
+ })(ActionTag || {});
141
51
  const INJECTION_KEY_VOLVER = Symbol.for("volver");
142
- function useVolver() {
143
- return inject(INJECTION_KEY_VOLVER);
144
- }
145
- function useModifiers(prefix, modifiers, others) {
146
- return computed(() => {
147
- const toReturn = {
148
- [prefix]: true
149
- };
150
- const modifiersArray = typeof (modifiers == null ? void 0 : modifiers.value) === "string" ? modifiers.value.split(" ") : modifiers == null ? void 0 : modifiers.value;
151
- if (modifiersArray) {
152
- if (Array.isArray(modifiersArray)) {
153
- modifiersArray.forEach((modifier) => {
154
- if (modifier) {
155
- toReturn[`${prefix}--${modifier}`] = true;
156
- }
157
- });
158
- }
159
- }
160
- if (others) {
161
- Object.keys(others.value).forEach((key) => {
162
- toReturn[`${prefix}--${key}`] = unref(others.value[key]);
163
- });
164
- }
165
- return toReturn;
166
- });
167
- }
168
- const __default__$1 = {
169
- name: "VvIcon"
170
- };
171
- const _sfc_main$1 = /* @__PURE__ */ defineComponent({
172
- ...__default__$1,
173
- props: VvIconProps,
174
- setup(__props) {
175
- const props = __props;
176
- const hasRotate = computed(() => {
177
- if (typeof props.rotate === "string") {
178
- return parseFloat(props.rotate);
179
- }
180
- return props.rotate;
181
- });
182
- const show = ref(true);
183
- const volver = useVolver();
184
- const { modifiers } = toRefs(props);
185
- const bemCssClasses = useModifiers("vv-icon", modifiers);
186
- const provider = computed(() => {
187
- return props.provider || (volver == null ? void 0 : volver.iconsProvider);
188
- });
189
- const icon = computed(() => {
190
- const name = props.name ?? "";
191
- const iconName = `@${provider.value}:${props.prefix}:${name}`;
192
- if (iconExists(iconName)) {
193
- return iconName;
194
- }
195
- const iconsCollection = volver == null ? void 0 : volver.iconsCollections.find(
196
- (iconsCollection2) => {
197
- const icon2 = `@${provider.value}:${iconsCollection2.prefix}:${name}`;
198
- return iconExists(icon2);
199
- }
200
- );
201
- if (iconsCollection) {
202
- return `@${provider.value}:${iconsCollection.prefix}:${name}`;
203
- }
204
- return name;
205
- });
206
- function getSvgContent(svg) {
207
- let dom;
208
- if (typeof window === "undefined") {
209
- const { JSDOM } = require("jsdom");
210
- dom = new JSDOM().window;
211
- }
212
- const domParser = dom ? new dom.DOMParser() : new window.DOMParser();
213
- const svgDomString = domParser.parseFromString(svg, "text/html");
214
- const svgEl = svgDomString.querySelector("svg");
215
- return svgEl;
216
- }
217
- function addIconFromSvg(svg) {
218
- const svgContentEl = getSvgContent(svg);
219
- const svgContent = (svgContentEl == null ? void 0 : svgContentEl.innerHTML.trim()) || "";
220
- if (svgContentEl && svgContent) {
221
- addIcon(`@${provider.value}:${props.prefix}:${props.name}`, {
222
- body: svgContent,
223
- // Set height and width from svg content
224
- height: svgContentEl.viewBox.baseVal.height,
225
- width: svgContentEl.viewBox.baseVal.width
226
- });
227
- }
228
- }
229
- if (volver) {
230
- if (props.src && !iconExists(`@${provider.value}:${props.prefix}:${props.name}`)) {
231
- show.value = false;
232
- volver.fetchIcon(props.src).then((svg) => {
233
- if (svg) {
234
- addIconFromSvg(svg);
235
- show.value = true;
236
- }
237
- }).catch((e) => {
238
- throw new Error(`Error during fetch icon: ${e == null ? void 0 : e.message}`);
239
- });
240
- }
241
- }
242
- if (props.svg) {
243
- addIconFromSvg(props.svg);
244
- }
245
- return (_ctx, _cache) => {
246
- return unref(show) ? (openBlock(), createBlock(unref(Icon), mergeProps({
247
- key: 0,
248
- class: unref(bemCssClasses)
249
- }, {
250
- inline: _ctx.inline,
251
- width: _ctx.width,
252
- height: _ctx.height,
253
- horizontalFlip: _ctx.horizontalFlip,
254
- verticalFlip: _ctx.verticalFlip,
255
- flip: _ctx.flip,
256
- rotate: unref(hasRotate),
257
- color: _ctx.color,
258
- onLoad: _ctx.onLoad,
259
- icon: unref(icon)
260
- }), null, 16, ["class"])) : createCommentVNode("", true);
261
- };
262
- }
263
- });
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
- function isString(value) {
268
- return typeof value === "string" || value instanceof String;
269
- }
270
- function joinLines(items) {
271
- if (Array.isArray(items)) {
272
- return items.filter((item) => isString(item)).join(" ");
273
- }
274
- return items;
275
- }
276
- function HintSlotFactory(propsOrRef, slots) {
277
- const props = computed(() => {
278
- if (isRef(propsOrRef)) {
279
- return propsOrRef.value;
280
- }
281
- return propsOrRef;
282
- });
283
- const invalidLabel = computed(() => joinLines(props.value.invalidLabel));
284
- const validLabel = computed(() => joinLines(props.value.validLabel));
285
- const loadingLabel = computed(() => props.value.loadingLabel);
286
- const hintLabel = computed(() => props.value.hintLabel);
287
- const hasLoadingLabelOrSlot = computed(
288
- () => Boolean(props.value.loading && (slots.loading || loadingLabel.value))
289
- );
290
- const hasInvalidLabelOrSlot = computed(
291
- () => !hasLoadingLabelOrSlot.value && Boolean(
292
- props.value.invalid && (slots.invalid || invalidLabel.value)
293
- )
294
- );
295
- const hasValidLabelOrSlot = computed(
296
- () => !hasLoadingLabelOrSlot.value && !hasInvalidLabelOrSlot.value && Boolean(props.value.valid && (slots.valid || validLabel.value))
297
- );
298
- const hasHintLabelOrSlot = computed(
299
- () => !hasLoadingLabelOrSlot.value && !hasInvalidLabelOrSlot.value && !hasValidLabelOrSlot.value && Boolean(slots.hint || hintLabel.value)
300
- );
301
- const isVisible = computed(
302
- () => hasInvalidLabelOrSlot.value || hasValidLabelOrSlot.value || hasLoadingLabelOrSlot.value || hasHintLabelOrSlot.value
303
- );
304
- const hintSlotScope = computed(() => ({
305
- modelValue: props.value.modelValue,
306
- valid: props.value.valid,
307
- invalid: props.value.invalid,
308
- loading: props.value.loading
309
- }));
310
- const HintSlot = defineComponent({
311
- name: "HintSlot",
312
- props: {
313
- tag: {
314
- type: String,
315
- default: "small"
316
- }
317
- },
318
- setup() {
319
- return {
320
- isVisible,
321
- invalidLabel,
322
- validLabel,
323
- loadingLabel,
324
- hintLabel,
325
- hasInvalidLabelOrSlot,
326
- hasValidLabelOrSlot,
327
- hasLoadingLabelOrSlot,
328
- hasHintLabelOrSlot
329
- };
330
- },
331
- render() {
332
- var _a, _b, _c, _d, _e, _f, _g, _h;
333
- if (this.isVisible) {
334
- let role;
335
- if (this.hasInvalidLabelOrSlot) {
336
- role = "alert";
337
- }
338
- if (this.hasValidLabelOrSlot) {
339
- role = "status";
340
- }
341
- if (this.hasLoadingLabelOrSlot) {
342
- return h(
343
- this.tag,
344
- {
345
- role
346
- },
347
- ((_b = (_a = this.$slots).loading) == null ? void 0 : _b.call(_a)) ?? this.loadingLabel
348
- );
349
- }
350
- if (this.hasInvalidLabelOrSlot) {
351
- return h(
352
- this.tag,
353
- {
354
- role
355
- },
356
- ((_d = (_c = this.$slots).invalid) == null ? void 0 : _d.call(_c)) ?? this.$slots.invalid ?? this.invalidLabel
357
- );
358
- }
359
- if (this.hasValidLabelOrSlot) {
360
- return h(
361
- this.tag,
362
- {
363
- role
364
- },
365
- ((_f = (_e = this.$slots).valid) == null ? void 0 : _f.call(_e)) ?? this.validLabel
366
- );
367
- }
368
- return h(
369
- this.tag,
370
- {
371
- role
372
- },
373
- ((_h = (_g = this.$slots).hint) == null ? void 0 : _h.call(_g)) ?? this.$slots.hint ?? this.hintLabel
374
- );
375
- }
376
- return null;
377
- }
378
- });
379
- return {
380
- hasInvalidLabelOrSlot,
381
- hasHintLabelOrSlot,
382
- hasValidLabelOrSlot,
383
- hasLoadingLabelOrSlot,
384
- hintSlotScope,
385
- HintSlot
386
- };
387
- }
388
52
  const LinkProps = {
389
53
  /**
390
54
  * The router-link/nuxt-link property, if it is defined the button is rendered as a ruouter-link or nuxt-link.
@@ -399,11 +63,8 @@ const LinkProps = {
399
63
  href: String,
400
64
  /**
401
65
  * Anchor target
402
- */
403
- target: {
404
- type: String,
405
- validator: (value) => Object.values(AnchorTarget).includes(value)
406
- },
66
+ */
67
+ target: String,
407
68
  /**
408
69
  * Anchor rel
409
70
  */
@@ -416,27 +77,33 @@ const ValidProps = {
416
77
  /**
417
78
  * Valid status
418
79
  */
419
- valid: Boolean,
80
+ valid: { type: Boolean, default: false },
420
81
  /**
421
82
  * Valid label
422
83
  */
423
- validLabel: [String, Array]
84
+ validLabel: { type: [String, Array], default: void 0 }
424
85
  };
425
86
  const InvalidProps = {
426
87
  /**
427
88
  * Invalid status
428
89
  */
429
- invalid: Boolean,
90
+ invalid: {
91
+ type: Boolean,
92
+ default: false
93
+ },
430
94
  /**
431
95
  * Invalid label
432
96
  */
433
- invalidLabel: [String, Array]
97
+ invalidLabel: { type: [String, Array], default: void 0 }
434
98
  };
435
99
  const LoadingProps = {
436
100
  /**
437
101
  * Loading status
438
102
  */
439
- loading: Boolean,
103
+ loading: {
104
+ type: Boolean,
105
+ default: false
106
+ },
440
107
  /**
441
108
  * Loading label
442
109
  */
@@ -449,43 +116,64 @@ const DisabledProps = {
449
116
  /**
450
117
  * Whether the form control is disabled
451
118
  */
452
- disabled: Boolean
119
+ disabled: {
120
+ type: Boolean,
121
+ default: false
122
+ }
453
123
  };
454
124
  const ActiveProps = {
455
125
  /**
456
126
  * Whether the item is active
457
127
  */
458
- active: Boolean
128
+ active: {
129
+ type: Boolean,
130
+ default: false
131
+ }
459
132
  };
460
133
  const CurrentProps = {
461
134
  /**
462
135
  * Whether the item is current
463
136
  */
464
- current: Boolean
137
+ current: {
138
+ type: Boolean,
139
+ default: false
140
+ }
465
141
  };
466
142
  const PressedProps = {
467
143
  /**
468
144
  * Whether the item is pressed
469
145
  */
470
- pressed: Boolean
146
+ pressed: {
147
+ type: Boolean,
148
+ default: false
149
+ }
471
150
  };
472
151
  const LabelProps = {
473
152
  /**
474
153
  * The item label
475
154
  */
476
- label: [String, Number]
155
+ label: {
156
+ type: [String, Number],
157
+ default: void 0
158
+ }
477
159
  };
478
160
  const ReadonlyProps = {
479
161
  /**
480
162
  * The value is not editable
481
163
  */
482
- readonly: Boolean
164
+ readonly: {
165
+ type: Boolean,
166
+ default: false
167
+ }
483
168
  };
484
169
  const ModifiersProps = {
485
170
  /**
486
171
  * Component BEM modifiers
487
172
  */
488
- modifiers: [String, Array]
173
+ modifiers: {
174
+ type: [String, Array],
175
+ default: void 0
176
+ }
489
177
  };
490
178
  const HintProps = {
491
179
  hintLabel: { type: String, default: "" }
@@ -516,7 +204,10 @@ const IconProps = {
516
204
  * VvIcon name or props
517
205
  * @see VVIcon
518
206
  */
519
- icon: { type: [String, Object] },
207
+ icon: {
208
+ type: [String, Object],
209
+ default: void 0
210
+ },
520
211
  /**
521
212
  * VvIcon position
522
213
  */
@@ -537,7 +228,10 @@ const FloatingLabelProps = {
537
228
  /**
538
229
  * If true the label will be floating
539
230
  */
540
- floating: Boolean
231
+ floating: {
232
+ type: Boolean,
233
+ default: false
234
+ }
541
235
  };
542
236
  const UnselectableProps = {
543
237
  /**
@@ -573,7 +267,8 @@ const IdProps = {
573
267
  * Dropdown show / hide transition name
574
268
  */
575
269
  transitionName: {
576
- type: String
270
+ type: String,
271
+ default: void 0
577
272
  },
578
273
  /**
579
274
  * Offset of the dropdown from the trigger
@@ -641,7 +336,8 @@ const IdProps = {
641
336
  * Set dropdown width to the same as the trigger
642
337
  */
643
338
  triggerWidth: {
644
- type: Boolean
339
+ type: Boolean,
340
+ default: false
645
341
  }
646
342
  });
647
343
  const IdNameProps = {
@@ -658,7 +354,10 @@ const AutofocusProps = {
658
354
  * Global attribute autofocus
659
355
  * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/autofocus
660
356
  */
661
- autofocus: Boolean
357
+ autofocus: {
358
+ type: Boolean,
359
+ default: false
360
+ }
662
361
  };
663
362
  const AutocompleteProps = {
664
363
  /**
@@ -667,78 +366,373 @@ const AutocompleteProps = {
667
366
  */
668
367
  autocomplete: { type: String, default: "off" }
669
368
  };
670
- ({
671
- ...DisabledProps,
672
- ...LabelProps,
673
- ...PressedProps,
674
- ...ActiveProps,
675
- ...CurrentProps,
676
- ...LinkProps,
677
- /**
678
- * Button type
679
- */
680
- type: {
681
- type: String,
682
- default: ButtonType.button,
683
- validator: (value) => Object.values(ButtonType).includes(value)
684
- },
685
- /**
686
- * Button aria-label
687
- */
688
- ariaLabel: {
689
- type: String,
690
- default: void 0
369
+ ({
370
+ ...DisabledProps,
371
+ ...LabelProps,
372
+ ...PressedProps,
373
+ ...ActiveProps,
374
+ ...CurrentProps,
375
+ ...LinkProps,
376
+ /**
377
+ * Button type
378
+ */
379
+ type: {
380
+ type: String,
381
+ default: ButtonType.button,
382
+ validator: (value) => Object.values(ButtonType).includes(value)
383
+ },
384
+ /**
385
+ * Button aria-label
386
+ */
387
+ ariaLabel: {
388
+ type: String,
389
+ default: void 0
390
+ },
391
+ /**
392
+ * Default tag for the action
393
+ */
394
+ defaultTag: {
395
+ type: String,
396
+ default: ActionTag.button
397
+ }
398
+ });
399
+ ({
400
+ storageType: {
401
+ type: String,
402
+ default: StorageType.local,
403
+ validator: (value) => Object.values(StorageType).includes(value)
404
+ },
405
+ storageKey: String
406
+ });
407
+ const VvSelectProps = {
408
+ ...IdNameProps,
409
+ ...AutofocusProps,
410
+ ...AutocompleteProps,
411
+ ...TabindexProps,
412
+ ...ValidProps,
413
+ ...InvalidProps,
414
+ ...HintProps,
415
+ ...LoadingProps,
416
+ ...DisabledProps,
417
+ ...ReadonlyProps,
418
+ ...ModifiersProps,
419
+ ...OptionsProps,
420
+ ...IconProps,
421
+ ...FloatingLabelProps,
422
+ ...UnselectableProps,
423
+ ...LabelProps,
424
+ /**
425
+ * This Boolean attribute indicates that multiple options can be selected in the list.
426
+ * If it is not specified, then only one option can be selected at a time.
427
+ * When multiple is specified, most browsers will show a scrolling list box instead of a single line dropdown.
428
+ * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select#attr-multiple
429
+ */
430
+ multiple: Boolean,
431
+ /**
432
+ * A Boolean attribute indicating that an option with a non-empty string value must be selected.
433
+ * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select#attr-required
434
+ */
435
+ required: Boolean,
436
+ /**
437
+ * If the control is presented as a scrolling list box (e.g. when multiple is specified),
438
+ * this attribute represents the number of rows in the list that should be visible at one time.
439
+ * Browsers are not required to present a select element as a scrolled list box. The default value is 0.
440
+ * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select#attr-size
441
+ */
442
+ size: [String, Number],
443
+ /**
444
+ * modelValue can be a string, number, boolean, object or array of string, number, boolean, object
445
+ */
446
+ modelValue: {
447
+ type: [String, Number, Boolean, Object, Array],
448
+ default: void 0
449
+ },
450
+ /**
451
+ * Select first option automatically
452
+ */
453
+ autoselectFirst: {
454
+ type: Boolean,
455
+ default: false
456
+ },
457
+ /**
458
+ * Select placeholder
459
+ */
460
+ placeholder: String
461
+ };
462
+ function useVvSelectProps() {
463
+ return {
464
+ ...VvSelectProps,
465
+ options: {
466
+ ...VvSelectProps.options,
467
+ type: Array,
468
+ default: () => []
469
+ }
470
+ };
471
+ }
472
+ function isString(value) {
473
+ return typeof value === "string" || value instanceof String;
474
+ }
475
+ function joinLines(items) {
476
+ if (Array.isArray(items)) {
477
+ return items.filter((item) => isString(item)).join(" ");
478
+ }
479
+ return items;
480
+ }
481
+ function HintSlotFactory(propsOrRef, slots) {
482
+ const props = computed(() => {
483
+ if (isRef(propsOrRef)) {
484
+ return propsOrRef.value;
485
+ }
486
+ return propsOrRef;
487
+ });
488
+ const invalidLabel = computed(() => joinLines(props.value.invalidLabel));
489
+ const validLabel = computed(() => joinLines(props.value.validLabel));
490
+ const loadingLabel = computed(() => props.value.loadingLabel);
491
+ const hintLabel = computed(() => props.value.hintLabel);
492
+ const hasLoadingLabelOrSlot = computed(
493
+ () => Boolean(props.value.loading && (slots.loading || loadingLabel.value))
494
+ );
495
+ const hasInvalidLabelOrSlot = computed(
496
+ () => !hasLoadingLabelOrSlot.value && Boolean(
497
+ props.value.invalid && (slots.invalid || invalidLabel.value)
498
+ )
499
+ );
500
+ const hasValidLabelOrSlot = computed(
501
+ () => !hasLoadingLabelOrSlot.value && !hasInvalidLabelOrSlot.value && Boolean(props.value.valid && (slots.valid || validLabel.value))
502
+ );
503
+ const hasHintLabelOrSlot = computed(
504
+ () => !hasLoadingLabelOrSlot.value && !hasInvalidLabelOrSlot.value && !hasValidLabelOrSlot.value && Boolean(slots.hint || hintLabel.value)
505
+ );
506
+ const isVisible = computed(
507
+ () => hasInvalidLabelOrSlot.value || hasValidLabelOrSlot.value || hasLoadingLabelOrSlot.value || hasHintLabelOrSlot.value
508
+ );
509
+ const hintSlotScope = computed(() => ({
510
+ modelValue: props.value.modelValue,
511
+ valid: props.value.valid,
512
+ invalid: props.value.invalid,
513
+ loading: props.value.loading
514
+ }));
515
+ const HintSlot = defineComponent({
516
+ name: "HintSlot",
517
+ props: {
518
+ tag: {
519
+ type: String,
520
+ default: "small"
521
+ }
522
+ },
523
+ setup() {
524
+ return {
525
+ isVisible,
526
+ invalidLabel,
527
+ validLabel,
528
+ loadingLabel,
529
+ hintLabel,
530
+ hasInvalidLabelOrSlot,
531
+ hasValidLabelOrSlot,
532
+ hasLoadingLabelOrSlot,
533
+ hasHintLabelOrSlot
534
+ };
535
+ },
536
+ render() {
537
+ var _a, _b, _c, _d, _e, _f, _g, _h;
538
+ if (this.isVisible) {
539
+ let role;
540
+ if (this.hasInvalidLabelOrSlot) {
541
+ role = "alert";
542
+ }
543
+ if (this.hasValidLabelOrSlot) {
544
+ role = "status";
545
+ }
546
+ if (this.hasLoadingLabelOrSlot) {
547
+ return h(
548
+ this.tag,
549
+ {
550
+ role
551
+ },
552
+ ((_b = (_a = this.$slots).loading) == null ? void 0 : _b.call(_a)) ?? this.loadingLabel
553
+ );
554
+ }
555
+ if (this.hasInvalidLabelOrSlot) {
556
+ return h(
557
+ this.tag,
558
+ {
559
+ role
560
+ },
561
+ ((_d = (_c = this.$slots).invalid) == null ? void 0 : _d.call(_c)) ?? this.$slots.invalid ?? this.invalidLabel
562
+ );
563
+ }
564
+ if (this.hasValidLabelOrSlot) {
565
+ return h(
566
+ this.tag,
567
+ {
568
+ role
569
+ },
570
+ ((_f = (_e = this.$slots).valid) == null ? void 0 : _f.call(_e)) ?? this.validLabel
571
+ );
572
+ }
573
+ return h(
574
+ this.tag,
575
+ {
576
+ role
577
+ },
578
+ ((_h = (_g = this.$slots).hint) == null ? void 0 : _h.call(_g)) ?? this.$slots.hint ?? this.hintLabel
579
+ );
580
+ }
581
+ return null;
582
+ }
583
+ });
584
+ return {
585
+ hasInvalidLabelOrSlot,
586
+ hasHintLabelOrSlot,
587
+ hasValidLabelOrSlot,
588
+ hasLoadingLabelOrSlot,
589
+ hintSlotScope,
590
+ HintSlot
591
+ };
592
+ }
593
+ const VvIconPropsDefaults = {
594
+ prefix: "normal"
595
+ /* normal */
596
+ };
597
+ function useVolver() {
598
+ return inject(INJECTION_KEY_VOLVER);
599
+ }
600
+ function useModifiers(prefix, modifiers, others) {
601
+ return computed(() => {
602
+ const toReturn = {
603
+ [prefix]: true
604
+ };
605
+ const modifiersArray = typeof (modifiers == null ? void 0 : modifiers.value) === "string" ? modifiers.value.split(" ") : modifiers == null ? void 0 : modifiers.value;
606
+ if (modifiersArray) {
607
+ if (Array.isArray(modifiersArray)) {
608
+ modifiersArray.forEach((modifier) => {
609
+ if (modifier) {
610
+ toReturn[`${prefix}--${modifier}`] = true;
611
+ }
612
+ });
613
+ }
614
+ }
615
+ if (others) {
616
+ Object.keys(others.value).forEach((key) => {
617
+ toReturn[`${prefix}--${key}`] = unref(others.value[key]);
618
+ });
619
+ }
620
+ return toReturn;
621
+ });
622
+ }
623
+ const __default__$1 = {
624
+ name: "VvIcon"
625
+ };
626
+ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
627
+ ...__default__$1,
628
+ props: /* @__PURE__ */ mergeDefaults({
629
+ name: {},
630
+ color: {},
631
+ width: {},
632
+ height: {},
633
+ provider: {},
634
+ prefix: {},
635
+ src: {},
636
+ horizontalFlip: { type: Boolean },
637
+ verticalFlip: { type: Boolean },
638
+ flip: {},
639
+ mode: {},
640
+ inline: { type: Boolean },
641
+ rotate: {},
642
+ onLoad: { type: Function },
643
+ svg: {},
644
+ modifiers: {}
645
+ }, VvIconPropsDefaults),
646
+ setup(__props) {
647
+ const props = __props;
648
+ const hasRotate = computed(() => {
649
+ if (typeof props.rotate === "string") {
650
+ return Number.parseFloat(props.rotate);
651
+ }
652
+ return props.rotate;
653
+ });
654
+ const show = ref(true);
655
+ const volver = useVolver();
656
+ const { modifiers } = toRefs(props);
657
+ const bemCssClasses = useModifiers("vv-icon", modifiers);
658
+ const provider = computed(() => {
659
+ return props.provider || (volver == null ? void 0 : volver.iconsProvider);
660
+ });
661
+ const icon = computed(() => {
662
+ const name = props.name ?? "";
663
+ const iconName = `@${provider.value}:${props.prefix}:${name}`;
664
+ if (iconExists(iconName)) {
665
+ return iconName;
666
+ }
667
+ const iconsCollection = volver == null ? void 0 : volver.iconsCollections.find(
668
+ (iconsCollection2) => {
669
+ const icon2 = `@${provider.value}:${iconsCollection2.prefix}:${name}`;
670
+ return iconExists(icon2);
671
+ }
672
+ );
673
+ if (iconsCollection) {
674
+ return `@${provider.value}:${iconsCollection.prefix}:${name}`;
675
+ }
676
+ return name;
677
+ });
678
+ function getSvgContent(svg) {
679
+ let dom;
680
+ if (typeof window === "undefined") {
681
+ const { JSDOM } = require("jsdom");
682
+ dom = new JSDOM().window;
683
+ }
684
+ const domParser = dom ? new dom.DOMParser() : new window.DOMParser();
685
+ const svgDomString = domParser.parseFromString(svg, "text/html");
686
+ const svgEl = svgDomString.querySelector("svg");
687
+ return svgEl;
688
+ }
689
+ function addIconFromSvg(svg) {
690
+ const svgContentEl = getSvgContent(svg);
691
+ const svgContent = (svgContentEl == null ? void 0 : svgContentEl.innerHTML.trim()) || "";
692
+ if (svgContentEl && svgContent) {
693
+ addIcon(`@${provider.value}:${props.prefix}:${props.name}`, {
694
+ body: svgContent,
695
+ // Set height and width from svg content
696
+ height: svgContentEl.viewBox.baseVal.height,
697
+ width: svgContentEl.viewBox.baseVal.width
698
+ });
699
+ }
700
+ }
701
+ if (volver) {
702
+ if (props.src && !iconExists(`@${provider.value}:${props.prefix}:${props.name}`)) {
703
+ show.value = false;
704
+ volver.fetchIcon(props.src).then((svg) => {
705
+ if (svg) {
706
+ addIconFromSvg(svg);
707
+ show.value = true;
708
+ }
709
+ }).catch((e) => {
710
+ throw new Error(`Error during fetch icon: ${e == null ? void 0 : e.message}`);
711
+ });
712
+ }
713
+ }
714
+ if (props.svg) {
715
+ addIconFromSvg(props.svg);
716
+ }
717
+ return (_ctx, _cache) => {
718
+ return unref(show) ? (openBlock(), createBlock(unref(Icon), mergeProps({
719
+ key: 0,
720
+ class: unref(bemCssClasses)
721
+ }, {
722
+ inline: _ctx.inline,
723
+ width: _ctx.width,
724
+ height: _ctx.height,
725
+ horizontalFlip: _ctx.horizontalFlip,
726
+ verticalFlip: _ctx.verticalFlip,
727
+ flip: _ctx.flip,
728
+ rotate: unref(hasRotate),
729
+ color: _ctx.color,
730
+ onLoad: _ctx.onLoad,
731
+ icon: unref(icon)
732
+ }), null, 16, ["class"])) : createCommentVNode("v-if", true);
733
+ };
691
734
  }
692
735
  });
693
- const VvSelectProps = {
694
- ...IdNameProps,
695
- ...AutofocusProps,
696
- ...AutocompleteProps,
697
- ...TabindexProps,
698
- ...ValidProps,
699
- ...InvalidProps,
700
- ...HintProps,
701
- ...LoadingProps,
702
- ...DisabledProps,
703
- ...ReadonlyProps,
704
- ...ModifiersProps,
705
- ...OptionsProps,
706
- ...IconProps,
707
- ...FloatingLabelProps,
708
- ...UnselectableProps,
709
- ...LabelProps,
710
- /**
711
- * This Boolean attribute indicates that multiple options can be selected in the list.
712
- * If it is not specified, then only one option can be selected at a time.
713
- * When multiple is specified, most browsers will show a scrolling list box instead of a single line dropdown.
714
- * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select#attr-multiple
715
- */
716
- multiple: Boolean,
717
- /**
718
- * A Boolean attribute indicating that an option with a non-empty string value must be selected.
719
- * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select#attr-required
720
- */
721
- required: Boolean,
722
- /**
723
- * If the control is presented as a scrolling list box (e.g. when multiple is specified),
724
- * this attribute represents the number of rows in the list that should be visible at one time.
725
- * Browsers are not required to present a select element as a scrolled list box. The default value is 0.
726
- * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select#attr-size
727
- */
728
- size: [String, Number],
729
- /**
730
- * modelValue can be a string, number, boolean, object or array of string, number, boolean, object
731
- */
732
- modelValue: {
733
- type: [String, Number, Boolean, Object, Array],
734
- default: void 0
735
- },
736
- /**
737
- * Select placeholder
738
- */
739
- placeholder: String
740
- };
741
- const VvSelectEmits = ["update:modelValue", "focus", "blur"];
742
736
  function useDefaults(componentName, propsDefinition, props) {
743
737
  const volver = useVolver();
744
738
  const volverComponentDefaults = computed(() => {
@@ -792,7 +786,6 @@ function useDefaults(componentName, propsDefinition, props) {
792
786
  }, {});
793
787
  });
794
788
  }
795
- const useUniqueId = (id) => computed(() => String((id == null ? void 0 : id.value) || uid()));
796
789
  function useComponentFocus(inputTemplateRef, emit) {
797
790
  const { focused } = useFocus(inputTemplateRef);
798
791
  watch(focused, (newValue) => {
@@ -802,31 +795,34 @@ function useComponentFocus(inputTemplateRef, emit) {
802
795
  focused
803
796
  };
804
797
  }
798
+ function useUniqueId(id) {
799
+ return computed(() => String((id == null ? void 0 : id.value) || useId()));
800
+ }
805
801
  function useComponentIcon(icon, iconPosition) {
802
+ const hasIcon = computed(() => {
803
+ if (typeof (icon == null ? void 0 : icon.value) === "string") {
804
+ return { name: icon == null ? void 0 : icon.value };
805
+ }
806
+ return icon == null ? void 0 : icon.value;
807
+ });
806
808
  const hasIconBefore = computed(
807
- () => Boolean((icon == null ? void 0 : icon.value) && iconPosition.value === Position.before)
809
+ () => (iconPosition == null ? void 0 : iconPosition.value) === Position.before ? hasIcon.value : void 0
808
810
  );
809
811
  const hasIconAfter = computed(
810
- () => Boolean((icon == null ? void 0 : icon.value) && iconPosition.value === Position.after)
812
+ () => (iconPosition == null ? void 0 : iconPosition.value) === Position.after ? hasIcon.value : void 0
811
813
  );
812
814
  const hasIconLeft = computed(
813
- () => Boolean((icon == null ? void 0 : icon.value) && iconPosition.value === Side.left)
815
+ () => (iconPosition == null ? void 0 : iconPosition.value) === Side.left ? hasIcon.value : void 0
814
816
  );
815
817
  const hasIconRight = computed(
816
- () => Boolean((icon == null ? void 0 : icon.value) && iconPosition.value === Side.right)
818
+ () => (iconPosition == null ? void 0 : iconPosition.value) === Side.right ? hasIcon.value : void 0
817
819
  );
818
820
  const hasIconTop = computed(
819
- () => Boolean((icon == null ? void 0 : icon.value) && iconPosition.value === Side.top)
821
+ () => (iconPosition == null ? void 0 : iconPosition.value) === Side.top ? hasIcon.value : void 0
820
822
  );
821
823
  const hasIconBottom = computed(
822
- () => Boolean((icon == null ? void 0 : icon.value) && iconPosition.value === Side.bottom)
824
+ () => (iconPosition == null ? void 0 : iconPosition.value) === Side.bottom ? hasIcon.value : void 0
823
825
  );
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
826
  return {
831
827
  hasIcon,
832
828
  hasIconLeft,
@@ -840,26 +836,42 @@ function useComponentIcon(icon, iconPosition) {
840
836
  function useOptions(props) {
841
837
  const { options, labelKey, valueKey, disabledKey } = toRefs(props);
842
838
  const getOptionLabel = (option) => {
843
- if (typeof option !== "object" && option !== null)
839
+ if (typeof option === "string") {
844
840
  return option;
841
+ }
842
+ if (typeof labelKey.value === "function") {
843
+ return labelKey.value(option);
844
+ }
845
845
  return String(
846
- typeof labelKey.value === "function" ? labelKey.value(option) : get(option, labelKey.value)
846
+ labelKey.value ? get(option, labelKey.value) : option
847
847
  );
848
848
  };
849
849
  const getOptionValue = (option) => {
850
- if (typeof option !== "object" && option !== null)
850
+ if (typeof option === "string") {
851
851
  return option;
852
- return typeof valueKey.value === "function" ? valueKey.value(option) : get(option, valueKey.value);
852
+ }
853
+ if (typeof valueKey.value === "function") {
854
+ return valueKey.value(option);
855
+ }
856
+ return valueKey.value ? get(option, valueKey.value) : option;
853
857
  };
854
858
  const isOptionDisabled = (option) => {
855
- if (typeof option !== "object" && option !== null)
859
+ if (typeof option === "string") {
856
860
  return false;
857
- return typeof disabledKey.value === "function" ? disabledKey.value(option) : get(option, disabledKey.value);
861
+ }
862
+ if (typeof disabledKey.value === "function") {
863
+ return disabledKey.value(option);
864
+ }
865
+ return disabledKey.value ? get(option, disabledKey.value) : false;
858
866
  };
859
867
  const getOptionGrouped = (option) => {
860
- if (typeof option !== "object" && option !== null)
868
+ if (typeof option == "string") {
861
869
  return [];
862
- return option.options || [];
870
+ }
871
+ if (typeof option === "object" && option && "options" in option) {
872
+ return option.options;
873
+ }
874
+ return [];
863
875
  };
864
876
  return {
865
877
  options,
@@ -890,23 +902,33 @@ const __default__ = {
890
902
  };
891
903
  const _sfc_main = /* @__PURE__ */ defineComponent({
892
904
  ...__default__,
893
- props: VvSelectProps,
894
- emits: VvSelectEmits,
895
- setup(__props, { emit }) {
905
+ props: useVvSelectProps(),
906
+ emits: ["update:modelValue", "focus", "blur"],
907
+ setup(__props, { emit: __emit }) {
896
908
  const props = __props;
909
+ const emit = __emit;
897
910
  const slots = useSlots();
911
+ const VvSelectProps2 = useVvSelectProps();
898
912
  const propsDefaults = useDefaults(
899
913
  "VvSelect",
900
- VvSelectProps,
914
+ VvSelectProps2,
901
915
  props
902
916
  );
903
- const select = ref();
917
+ const selectEl = ref();
904
918
  const {
905
919
  HintSlot,
906
920
  hasHintLabelOrSlot,
907
921
  hasInvalidLabelOrSlot,
908
922
  hintSlotScope
909
923
  } = HintSlotFactory(propsDefaults, slots);
924
+ const { focused } = useComponentFocus(selectEl, emit);
925
+ function isGroup(option) {
926
+ var _a;
927
+ if (typeof option === "string") {
928
+ return false;
929
+ }
930
+ return (_a = option.options) == null ? void 0 : _a.length;
931
+ }
910
932
  const {
911
933
  id,
912
934
  modifiers,
@@ -922,22 +944,38 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
922
944
  } = toRefs(props);
923
945
  const hasId = useUniqueId(id);
924
946
  const hasHintId = computed(() => `${hasId.value}-hint`);
925
- const { focused } = useComponentFocus(select, emit);
926
- const isVisible = useElementVisibility(select);
947
+ const isDisabledOrReadonly = computed(() => props.disabled || props.readonly);
948
+ const hasTabindex = computed(() => {
949
+ return isDisabledOrReadonly.value ? -1 : props.tabindex;
950
+ });
951
+ const localModelValue = computed({
952
+ get: () => {
953
+ return props.modelValue;
954
+ },
955
+ set: (newValue) => {
956
+ if (Array.isArray(newValue)) {
957
+ newValue = newValue.filter((item) => item !== void 0);
958
+ if (newValue.length === 0 && !props.unselectable && selectEl.value) {
959
+ selectEl.value.value = String(props.modelValue);
960
+ return;
961
+ }
962
+ }
963
+ emit("update:modelValue", newValue);
964
+ }
965
+ });
966
+ const isDirty = computed(() => {
967
+ if (Array.isArray(localModelValue.value)) {
968
+ return localModelValue.value.length > 0;
969
+ }
970
+ return localModelValue.value !== void 0 && localModelValue.value !== null;
971
+ });
972
+ const isVisible = useElementVisibility(selectEl);
927
973
  watch(isVisible, (newValue) => {
928
974
  if (newValue && props.autofocus) {
929
975
  focused.value = true;
930
976
  }
931
977
  });
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
- });
978
+ const { hasIconBefore, hasIconAfter } = useComponentIcon(icon, iconPosition);
941
979
  const isInvalid = computed(() => {
942
980
  if (props.invalid === true) {
943
981
  return true;
@@ -951,28 +989,44 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
951
989
  "vv-select",
952
990
  modifiers,
953
991
  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
992
+ "valid": valid.value,
993
+ "invalid": invalid.value,
994
+ "loading": loading.value,
995
+ "disabled": disabled.value,
996
+ "readonly": readonly.value,
997
+ "icon-before": hasIconBefore.value !== void 0,
998
+ "icon-after": hasIconAfter.value !== void 0,
999
+ "dirty": isDirty.value,
1000
+ "focus": focused.value,
1001
+ "floating": floating.value,
1002
+ "multiple": multiple.value
965
1003
  }))
966
1004
  );
1005
+ const {
1006
+ getOptionLabel,
1007
+ getOptionValue,
1008
+ isOptionDisabled,
1009
+ getOptionGrouped
1010
+ } = useOptions(props);
1011
+ watch(
1012
+ () => props.options,
1013
+ (newValue) => {
1014
+ if ((newValue == null ? void 0 : newValue.length) && props.autoselectFirst && !isDirty.value) {
1015
+ const firstOptionValue = getOptionValue(newValue[0]);
1016
+ localModelValue.value = props.multiple ? [firstOptionValue] : firstOptionValue;
1017
+ }
1018
+ },
1019
+ { immediate: true }
1020
+ );
967
1021
  const hasAttrs = computed(() => {
968
1022
  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,
1023
+ "name": props.name,
1024
+ "tabindex": hasTabindex.value,
1025
+ "disabled": isDisabledOrReadonly.value,
1026
+ "required": props.required,
1027
+ "size": props.size,
1028
+ "autocomplete": props.autocomplete,
1029
+ "multiple": props.multiple,
976
1030
  "aria-invalid": isInvalid.value,
977
1031
  "aria-describedby": hasHintLabelOrSlot.value ? hasHintId.value : void 0,
978
1032
  "aria-errormessage": hasInvalidLabelOrSlot.value ? hasHintId.value : void 0
@@ -983,124 +1037,136 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
983
1037
  invalid: props.invalid,
984
1038
  modelValue: props.modelValue
985
1039
  }));
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
1040
  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)]
1041
+ return openBlock(), createElementBlock(
1042
+ "div",
1043
+ {
1044
+ class: normalizeClass(unref(bemCssClasses))
1045
+ },
1046
+ [
1047
+ _ctx.label ? (openBlock(), createElementBlock("label", {
1048
+ key: 0,
1049
+ for: unref(hasId)
1050
+ }, toDisplayString(_ctx.label), 9, _hoisted_1)) : createCommentVNode("v-if", true),
1051
+ createElementVNode("div", _hoisted_2, [
1052
+ _ctx.$slots.before ? (openBlock(), createElementBlock("div", _hoisted_3, [
1053
+ renderSlot(_ctx.$slots, "before", normalizeProps(guardReactiveProps(unref(slotProps))))
1054
+ ])) : createCommentVNode("v-if", true),
1055
+ createElementVNode("div", _hoisted_4, [
1056
+ unref(hasIconBefore) ? (openBlock(), createBlock(
1057
+ _sfc_main$1,
1058
+ mergeProps({ key: 0 }, unref(hasIconBefore), { class: "vv-select__icon" }),
1059
+ null,
1060
+ 16
1061
+ /* FULL_PROPS */
1062
+ )) : createCommentVNode("v-if", true),
1063
+ withDirectives(createElementVNode("select", mergeProps({
1064
+ id: unref(hasId),
1065
+ ref_key: "selectEl",
1066
+ ref: selectEl
1067
+ }, unref(hasAttrs), {
1068
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(localModelValue) ? localModelValue.value = $event : null)
1069
+ }), [
1070
+ _ctx.placeholder ? (openBlock(), createElementBlock("option", {
1071
+ key: 0,
1072
+ value: void 0,
1073
+ disabled: !_ctx.unselectable,
1074
+ hidden: !_ctx.unselectable
1075
+ }, toDisplayString(_ctx.placeholder), 9, _hoisted_6)) : createCommentVNode("v-if", true),
1076
+ (openBlock(true), createElementBlock(
1077
+ Fragment,
1078
+ null,
1079
+ renderList(_ctx.options, (option, index) => {
1080
+ return openBlock(), createElementBlock(
1081
+ Fragment,
1082
+ null,
1083
+ [
1084
+ !isGroup(option) ? (openBlock(), createElementBlock("option", {
1085
+ key: index,
1086
+ disabled: unref(isOptionDisabled)(option),
1087
+ value: unref(getOptionValue)(option)
1088
+ }, toDisplayString(unref(getOptionLabel)(option)), 9, _hoisted_7)) : (openBlock(), createElementBlock("optgroup", {
1089
+ key: `group-${index}`,
1090
+ disabled: unref(isOptionDisabled)(option),
1091
+ label: unref(getOptionLabel)(option)
1092
+ }, [
1093
+ (openBlock(true), createElementBlock(
1094
+ Fragment,
1095
+ null,
1096
+ renderList(unref(getOptionGrouped)(option), (item, i) => {
1097
+ return openBlock(), createElementBlock("option", {
1098
+ key: `group-${index}-item-${i}`,
1099
+ disabled: unref(isOptionDisabled)(item),
1100
+ value: unref(getOptionValue)(item)
1101
+ }, toDisplayString(unref(getOptionLabel)(item)), 9, _hoisted_9);
1102
+ }),
1103
+ 128
1104
+ /* KEYED_FRAGMENT */
1105
+ ))
1106
+ ], 8, _hoisted_8))
1107
+ ],
1108
+ 64
1109
+ /* STABLE_FRAGMENT */
1110
+ );
1111
+ }),
1112
+ 256
1113
+ /* UNKEYED_FRAGMENT */
1114
+ ))
1115
+ ], 16, _hoisted_5), [
1116
+ [vModelSelect, unref(localModelValue)]
1117
+ ]),
1118
+ unref(hasIconAfter) ? (openBlock(), createBlock(
1119
+ _sfc_main$1,
1120
+ mergeProps({ key: 1 }, unref(hasIconAfter), { class: "vv-select__icon vv-select__icon-after" }),
1121
+ null,
1122
+ 16
1123
+ /* FULL_PROPS */
1124
+ )) : createCommentVNode("v-if", true)
1060
1125
  ]),
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)
1126
+ _ctx.$slots.after ? (openBlock(), createElementBlock("div", _hoisted_10, [
1127
+ renderSlot(_ctx.$slots, "after", normalizeProps(guardReactiveProps(unref(slotProps))))
1128
+ ])) : createCommentVNode("v-if", true)
1065
1129
  ]),
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);
1130
+ createVNode(unref(HintSlot), {
1131
+ id: unref(hasHintId),
1132
+ class: "vv-select__hint"
1133
+ }, createSlots({
1134
+ _: 2
1135
+ /* DYNAMIC */
1136
+ }, [
1137
+ _ctx.$slots.hint ? {
1138
+ name: "hint",
1139
+ fn: withCtx(() => [
1140
+ renderSlot(_ctx.$slots, "hint", normalizeProps(guardReactiveProps(unref(hintSlotScope))))
1141
+ ]),
1142
+ key: "0"
1143
+ } : void 0,
1144
+ _ctx.$slots.loading ? {
1145
+ name: "loading",
1146
+ fn: withCtx(() => [
1147
+ renderSlot(_ctx.$slots, "loading", normalizeProps(guardReactiveProps(unref(hintSlotScope))))
1148
+ ]),
1149
+ key: "1"
1150
+ } : void 0,
1151
+ _ctx.$slots.valid ? {
1152
+ name: "valid",
1153
+ fn: withCtx(() => [
1154
+ renderSlot(_ctx.$slots, "valid", normalizeProps(guardReactiveProps(unref(hintSlotScope))))
1155
+ ]),
1156
+ key: "2"
1157
+ } : void 0,
1158
+ _ctx.$slots.invalid ? {
1159
+ name: "invalid",
1160
+ fn: withCtx(() => [
1161
+ renderSlot(_ctx.$slots, "invalid", normalizeProps(guardReactiveProps(unref(hintSlotScope))))
1162
+ ]),
1163
+ key: "3"
1164
+ } : void 0
1165
+ ]), 1032, ["id"])
1166
+ ],
1167
+ 2
1168
+ /* CLASS */
1169
+ );
1104
1170
  };
1105
1171
  }
1106
1172
  });