@volverjs/ui-vue 0.0.1-beta.12 → 0.0.1-beta.17

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 (432) hide show
  1. package/README.md +1 -1
  2. package/bin/icons.cjs +73 -0
  3. package/bin/icons.js +75 -0
  4. package/dist/Volver.d.ts +15 -2
  5. package/dist/components/VvAccordion/VvAccordion.es.js +133 -236
  6. package/dist/components/VvAccordion/VvAccordion.umd.js +1 -1
  7. package/dist/components/VvAccordion/VvAccordion.vue.d.ts +32 -97
  8. package/dist/components/VvAccordion/index.d.ts +46 -0
  9. package/dist/components/VvAccordionGroup/VvAccordionGroup.es.js +199 -277
  10. package/dist/components/VvAccordionGroup/VvAccordionGroup.umd.js +1 -1
  11. package/dist/components/VvAccordionGroup/VvAccordionGroup.vue.d.ts +44 -151
  12. package/dist/components/VvAccordionGroup/{VvAccordionGroup.d.ts → index.d.ts} +9 -13
  13. package/dist/components/VvBadge/VvBadge.es.js +42 -151
  14. package/dist/components/VvBadge/VvBadge.umd.js +1 -1
  15. package/dist/components/VvBadge/VvBadge.vue.d.ts +12 -53
  16. package/dist/components/VvBadge/{VvBadge.d.ts → index.d.ts} +0 -0
  17. package/dist/components/VvBreadcrumb/VvBreadcrumb.es.js +55 -168
  18. package/dist/components/VvBreadcrumb/VvBreadcrumb.umd.js +1 -1
  19. package/dist/components/VvBreadcrumb/VvBreadcrumb.vue.d.ts +24 -104
  20. package/dist/components/VvBreadcrumb/{VvBreadcrumb.d.ts → index.d.ts} +1 -1
  21. package/dist/components/VvButton/VvButton.es.js +298 -312
  22. package/dist/components/VvButton/VvButton.umd.js +1 -1
  23. package/dist/components/VvButton/VvButton.vue.d.ts +91 -163
  24. package/dist/components/VvButton/{VvButton.d.ts → index.d.ts} +46 -9
  25. package/dist/components/VvButtonGroup/VvButtonGroup.es.js +59 -172
  26. package/dist/components/VvButtonGroup/VvButtonGroup.umd.js +1 -1
  27. package/dist/components/VvButtonGroup/VvButtonGroup.vue.d.ts +30 -125
  28. package/dist/components/VvButtonGroup/{VvButtonGroup.d.ts → index.d.ts} +0 -0
  29. package/dist/components/VvCard/VvCard.es.js +55 -166
  30. package/dist/components/VvCard/VvCard.umd.js +1 -1
  31. package/dist/components/VvCard/VvCard.vue.d.ts +16 -61
  32. package/dist/components/VvCard/{VvCard.d.ts → index.d.ts} +1 -1
  33. package/dist/components/VvCheckbox/VvCheckbox.es.js +344 -0
  34. package/dist/components/VvCheckbox/VvCheckbox.umd.js +1 -0
  35. package/dist/components/VvCheckbox/VvCheckbox.vue.d.ts +87 -0
  36. package/dist/components/VvCheckbox/index.d.ts +86 -0
  37. package/dist/components/VvCheckboxGroup/VvCheckboxGroup.es.js +415 -0
  38. package/dist/components/VvCheckboxGroup/VvCheckboxGroup.umd.js +1 -0
  39. package/dist/components/VvCheckboxGroup/VvCheckboxGroup.vue.d.ts +113 -0
  40. package/dist/components/{VvCheckGroup/VvCheckGroup.d.ts → VvCheckboxGroup/index.d.ts} +10 -10
  41. package/dist/components/VvDialog/VvDialog.es.js +108 -230
  42. package/dist/components/VvDialog/VvDialog.umd.js +1 -1
  43. package/dist/components/VvDialog/VvDialog.vue.d.ts +28 -132
  44. package/dist/components/VvDialog/{VvDialog.d.ts → index.d.ts} +2 -6
  45. package/dist/components/VvDropdown/VvDropdown.es.js +167 -186
  46. package/dist/components/VvDropdown/VvDropdown.umd.js +1 -1
  47. package/dist/components/VvDropdown/VvDropdown.vue.d.ts +34 -136
  48. package/dist/components/VvDropdown/{VvDropdown.d.ts → index.d.ts} +7 -3
  49. package/dist/components/VvIcon/VvIcon.es.js +62 -174
  50. package/dist/components/VvIcon/VvIcon.umd.js +1 -1
  51. package/dist/components/VvIcon/VvIcon.vue.d.ts +36 -150
  52. package/dist/components/VvIcon/{VvIcon.d.ts → index.d.ts} +9 -0
  53. package/dist/components/VvInputText/VvInputClearAction.d.ts +36 -0
  54. package/dist/components/VvInputText/VvInputPasswordAction.d.ts +56 -0
  55. package/dist/components/VvInputText/VvInputStepAction.d.ts +37 -0
  56. package/dist/components/VvInputText/VvInputText.es.js +586 -577
  57. package/dist/components/VvInputText/VvInputText.umd.js +1 -2
  58. package/dist/components/VvInputText/VvInputText.vue.d.ts +187 -275
  59. package/dist/components/VvInputText/VvInputTextActions.d.ts +1 -1
  60. package/dist/components/VvInputText/index.d.ts +175 -0
  61. package/dist/components/VvNativeSelect/VvNativeSelect.es.js +299 -347
  62. package/dist/components/VvNativeSelect/VvNativeSelect.umd.js +1 -2
  63. package/dist/components/VvNativeSelect/VvNativeSelect.vue.d.ts +78 -190
  64. package/dist/components/VvNativeSelect/{VvNativeSelect.d.ts → index.d.ts} +35 -8
  65. package/dist/components/VvProgress/VvProgress.es.js +45 -162
  66. package/dist/components/VvProgress/VvProgress.umd.js +1 -1
  67. package/dist/components/VvProgress/VvProgress.vue.d.ts +17 -103
  68. package/dist/components/VvProgress/{VvProgress.d.ts → index.d.ts} +1 -7
  69. package/dist/components/VvRadio/VvRadio.es.js +292 -267
  70. package/dist/components/VvRadio/VvRadio.umd.js +1 -1
  71. package/dist/components/VvRadio/VvRadio.vue.d.ts +52 -122
  72. package/dist/components/VvRadio/index.d.ts +64 -0
  73. package/dist/components/VvRadioGroup/VvRadioGroup.es.js +342 -380
  74. package/dist/components/VvRadioGroup/VvRadioGroup.umd.js +1 -2
  75. package/dist/components/VvRadioGroup/VvRadioGroup.vue.d.ts +58 -213
  76. package/dist/components/VvRadioGroup/{VvRadioGroup.d.ts → index.d.ts} +2 -2
  77. package/dist/components/VvSelect/VvSelect.es.js +556 -510
  78. package/dist/components/VvSelect/VvSelect.umd.js +1 -2
  79. package/dist/components/VvSelect/VvSelect.vue.d.ts +75 -240
  80. package/dist/components/VvSelect/{VvSelect.d.ts → index.d.ts} +12 -5
  81. package/dist/components/VvTextarea/VvTextarea.es.js +372 -481
  82. package/dist/components/VvTextarea/VvTextarea.umd.js +1 -2
  83. package/dist/components/VvTextarea/VvTextarea.vue.d.ts +103 -299
  84. package/dist/components/VvTextarea/{VvTextarea.d.ts → index.d.ts} +36 -13
  85. package/dist/components/common/HintSlot.d.ts +10 -4
  86. package/dist/components/index.d.ts +13 -6
  87. package/dist/components/index.es.js +2070 -895
  88. package/dist/components/index.umd.js +1 -2
  89. package/dist/composables/debouncedInput/useDebouncedInput.d.ts +2 -2
  90. package/dist/composables/focus/useComponentFocus.d.ts +3 -3
  91. package/dist/composables/group/types/IAccordionGroupState.d.ts +1 -3
  92. package/dist/composables/group/types/IGroupState.d.ts +2 -2
  93. package/dist/composables/group/useInjectedGroupState.d.ts +4 -4
  94. package/dist/composables/group/useProvideGroupState.d.ts +1 -1
  95. package/dist/composables/icons/useComponentIcons.d.ts +2 -2
  96. package/dist/composables/textLimit/useTextLimit.d.ts +0 -3
  97. package/dist/constants.d.ts +4 -4
  98. package/dist/icons.d.ts +1881 -0
  99. package/dist/icons.es.js +4 -6
  100. package/dist/icons.umd.js +1 -1
  101. package/dist/index.es.js +2113 -932
  102. package/dist/index.umd.js +1 -2
  103. package/dist/props/index.d.ts +9 -3
  104. package/dist/resolvers/unplugin.d.ts +27 -0
  105. package/dist/resolvers/unplugin.es.js +40 -0
  106. package/dist/resolvers/unplugin.umd.js +1 -0
  107. package/dist/stories/Accordion/Accordion.test.d.ts +4 -0
  108. package/dist/stories/Badge/Badge.test.d.ts +2 -0
  109. package/dist/stories/Breadcrumb/Breadcrumb.test.d.ts +2 -0
  110. package/dist/stories/Button/Button.test.d.ts +3 -8
  111. package/dist/stories/Card/Card.test.d.ts +3 -0
  112. package/dist/stories/Dialog/Dialog.test.d.ts +2 -0
  113. package/dist/stories/Dropdown/Dropdown.test.d.ts +2 -0
  114. package/dist/stories/Icon/IconList.vue.d.ts +1 -43
  115. package/dist/stories/InputText/InputText.test.d.ts +6 -0
  116. package/dist/stories/Radio/Radio.test.d.ts +3 -0
  117. package/dist/stories/RadioGroup/RadioGroup.test.d.ts +8 -0
  118. package/dist/stories/Select/Select.test.d.ts +3 -0
  119. package/dist/stories/Textarea/Textarea.test.d.ts +8 -0
  120. package/dist/stories/utils.d.ts +1 -3
  121. package/dist/test/sleep.d.ts +1 -0
  122. package/dist/utils/ObjectUtilities.d.ts +82 -95
  123. package/env.d.ts +1 -0
  124. package/package.json +103 -68
  125. package/src/Volver.ts +32 -3
  126. package/src/assets/icons/detailed.json +1 -1
  127. package/src/assets/icons/normal.json +1 -1
  128. package/src/assets/icons/simple.json +1 -1
  129. package/src/components/VvAccordion/VvAccordion.vue +80 -76
  130. package/src/components/VvAccordion/index.ts +69 -0
  131. package/src/components/VvAccordionGroup/VvAccordionGroup.vue +77 -41
  132. package/src/components/VvAccordionGroup/{VvAccordionGroup.ts → index.ts} +8 -12
  133. package/src/components/VvBadge/VvBadge.vue +14 -10
  134. package/src/components/VvBadge/{VvBadge.ts → index.ts} +0 -0
  135. package/src/components/VvBreadcrumb/VvBreadcrumb.vue +18 -19
  136. package/src/components/VvBreadcrumb/{VvBreadcrumb.ts → index.ts} +1 -1
  137. package/src/components/VvButton/VvButton.vue +123 -113
  138. package/src/components/VvButton/index.ts +147 -0
  139. package/src/components/VvButtonGroup/VvButtonGroup.vue +21 -17
  140. package/src/components/VvButtonGroup/{VvButtonGroup.ts → index.ts} +0 -0
  141. package/src/components/VvCard/VvCard.vue +20 -22
  142. package/src/components/VvCard/{VvCard.ts → index.ts} +0 -0
  143. package/src/components/VvCheckbox/VvCheckbox.vue +124 -0
  144. package/src/components/VvCheckbox/index.ts +94 -0
  145. package/src/components/{VvCheckGroup/VvCheckGroup.vue → VvCheckboxGroup/VvCheckboxGroup.vue} +49 -54
  146. package/src/components/{VvCheckGroup/VvCheckGroup.ts → VvCheckboxGroup/index.ts} +9 -9
  147. package/src/components/VvDialog/VvDialog.vue +47 -50
  148. package/src/components/VvDialog/index.ts +10 -0
  149. package/src/components/VvDropdown/VvDropdown.vue +61 -40
  150. package/src/components/VvDropdown/{VvDropdown.ts → index.ts} +8 -4
  151. package/src/components/VvIcon/VvIcon.vue +31 -25
  152. package/src/components/VvIcon/{VvIcon.ts → index.ts} +9 -0
  153. package/src/components/VvInputText/VvInputClearAction.ts +53 -0
  154. package/src/components/VvInputText/VvInputPasswordAction.ts +70 -0
  155. package/src/components/VvInputText/VvInputStepAction.ts +49 -0
  156. package/src/components/VvInputText/VvInputText.vue +168 -170
  157. package/src/components/VvInputText/VvInputTextActions.ts +54 -108
  158. package/src/components/VvInputText/index.ts +135 -0
  159. package/src/components/VvNativeSelect/VvNativeSelect.vue +130 -68
  160. package/src/components/VvNativeSelect/{VvNativeSelect.ts → index.ts} +26 -7
  161. package/src/components/VvProgress/VvProgress.vue +25 -26
  162. package/src/components/VvProgress/{VvProgress.ts → index.ts} +4 -7
  163. package/src/components/VvRadio/VvRadio.vue +81 -108
  164. package/src/components/VvRadio/index.ts +78 -0
  165. package/src/components/VvRadioGroup/VvRadioGroup.vue +45 -45
  166. package/src/components/VvRadioGroup/{VvRadioGroup.ts → index.ts} +1 -1
  167. package/src/components/VvSelect/VvSelect.vue +90 -69
  168. package/src/components/VvSelect/{VvSelect.ts → index.ts} +12 -5
  169. package/src/components/VvTextarea/VvTextarea.vue +121 -128
  170. package/src/components/VvTextarea/{VvTextarea.ts → index.ts} +31 -11
  171. package/src/components/common/HintSlot.ts +157 -136
  172. package/src/components/index.ts +13 -6
  173. package/src/composables/debouncedInput/useDebouncedInput.ts +21 -15
  174. package/src/composables/focus/useComponentFocus.ts +6 -8
  175. package/src/composables/group/types/IAccordionGroupState.ts +1 -3
  176. package/src/composables/group/types/IGroupState.ts +2 -2
  177. package/src/composables/group/useInjectedGroupState.ts +20 -30
  178. package/src/composables/group/useProvideGroupState.ts +1 -2
  179. package/src/composables/icons/useComponentIcons.ts +2 -3
  180. package/src/composables/options/useOptions.ts +3 -0
  181. package/src/composables/textLimit/useTextLimit.ts +1 -4
  182. package/src/composables/useModifiers.ts +13 -15
  183. package/src/constants.ts +5 -7
  184. package/src/directives/{.README → .gitkeep} +0 -0
  185. package/src/icons.ts +7 -0
  186. package/src/index.ts +0 -1
  187. package/src/props/index.ts +7 -1
  188. package/src/resolvers/unplugin.ts +103 -0
  189. package/src/shims.d.ts +11 -0
  190. package/src/stories/Accordion/Accordion.stories.mdx +10 -9
  191. package/src/stories/Accordion/Accordion.test.ts +37 -0
  192. package/src/stories/Accordion/AccordionSlots.stories.mdx +40 -25
  193. package/src/stories/AccordionGroup/AccordionGroup.stories.mdx +10 -16
  194. package/src/stories/AccordionGroup/{accordionGroupTest.js → AccordionGroup.test.js} +15 -17
  195. package/src/stories/AccordionGroup/AccordionGroupCollapse.stories.mdx +38 -0
  196. package/src/stories/AccordionGroup/{AccordionItems.stories.mdx → AccordionGroupItems.stories.mdx} +7 -13
  197. package/src/stories/Badge/Badge.stories.mdx +8 -8
  198. package/src/stories/Badge/Badge.test.ts +16 -0
  199. package/src/stories/Badge/BadgeColor.stories.mdx +6 -7
  200. package/src/stories/Badge/BadgeDot.stories.mdx +4 -3
  201. package/src/stories/Badge/BadgeModifiers.stories.mdx +7 -6
  202. package/src/stories/Breadcrumb/Breadcrumb.stories.mdx +15 -7
  203. package/src/stories/Breadcrumb/Breadcrumb.test.ts +49 -0
  204. package/src/stories/Breadcrumb/BreadcrumbMultiline.stories.mdx +15 -7
  205. package/src/stories/Button/Button.stories.mdx +16 -17
  206. package/src/stories/Button/Button.test.ts +8 -12
  207. package/src/stories/Button/ButtonActive.stories.mdx +2 -1
  208. package/src/stories/Button/ButtonBadge.stories.mdx +2 -2
  209. package/src/stories/Button/ButtonDisabled.stories.mdx +1 -1
  210. package/src/stories/Button/ButtonIcon.stories.mdx +6 -3
  211. package/src/stories/Button/ButtonIconPosition.stories.mdx +1 -1
  212. package/src/stories/Button/ButtonLink.stories.mdx +1 -19
  213. package/src/stories/Button/ButtonLoading.stories.mdx +4 -4
  214. package/src/stories/Button/ButtonModifiers.stories.mdx +1 -1
  215. package/src/stories/Button/ButtonPressed.stories.mdx +31 -0
  216. package/src/stories/Button/ButtonSlots.stories.mdx +1 -1
  217. package/src/stories/ButtonGroup/ButtonGroup.stories.mdx +5 -6
  218. package/src/stories/ButtonGroup/{ButtonGroupTest.js → ButtonGroup.test.js} +6 -28
  219. package/src/stories/ButtonGroup/ButtonGroupAction.stories.mdx +5 -6
  220. package/src/stories/ButtonGroup/ButtonGroupActionQuiet.stories.mdx +3 -4
  221. package/src/stories/ButtonGroup/ButtonGroupBlock.stories.mdx +3 -4
  222. package/src/stories/ButtonGroup/ButtonGroupCompact.stories.mdx +3 -4
  223. package/src/stories/ButtonGroup/ButtonGroupRounded.stories.mdx +3 -4
  224. package/src/stories/ButtonGroup/ButtonGroupToggle.stories.mdx +11 -12
  225. package/src/stories/ButtonGroup/ButtonGroupVertical.stories.mdx +3 -4
  226. package/src/stories/Card/Card.stories.mdx +7 -5
  227. package/src/stories/Card/Card.test.ts +26 -0
  228. package/src/stories/Card/CardSlots.stories.mdx +5 -5
  229. package/src/stories/Card/CardVariant.stories.mdx +5 -4
  230. package/src/stories/Checkbox/Checkbox.stories.mdx +51 -0
  231. package/src/stories/Checkbox/Checkbox.test.js +115 -0
  232. package/src/stories/Checkbox/CheckboxBinary.stories.mdx +76 -0
  233. package/src/stories/{Check/CheckDisabled.stories.mdx → Checkbox/CheckboxDisabled.stories.mdx} +7 -7
  234. package/src/stories/Checkbox/CheckboxError.stories.mdx +43 -0
  235. package/src/stories/Checkbox/CheckboxHintLabel.stories.mdx +35 -0
  236. package/src/stories/{Check/CheckReadonly.stories.mdx → Checkbox/CheckboxReadonly.stories.mdx} +6 -8
  237. package/src/stories/Checkbox/CheckboxSlots.stories.mdx +69 -0
  238. package/src/stories/{Check/CheckSwitch.stories.mdx → Checkbox/CheckboxSwitch.stories.mdx} +8 -8
  239. package/src/stories/CheckboxGroup/CheckboxGroup.stories.mdx +69 -0
  240. package/src/stories/CheckboxGroup/CheckboxGroupDisabled.stories.mdx +26 -0
  241. package/src/stories/CheckboxGroup/CheckboxGroupError.stories.mdx +28 -0
  242. package/src/stories/CheckboxGroup/CheckboxGroupHintLabel.stories.mdx +27 -0
  243. package/src/stories/CheckboxGroup/CheckboxGroupLabel.stories.mdx +26 -0
  244. package/src/stories/{CheckGroup/CheckGroupOptionLabel.stories.mdx → CheckboxGroup/CheckboxGroupOptionLabel.stories.mdx} +14 -11
  245. package/src/stories/{CheckGroup/CheckGroupOptionValue.stories.mdx → CheckboxGroup/CheckboxGroupOptionValue.stories.mdx} +13 -10
  246. package/src/stories/{CheckGroup/CheckGroupOptions.stories.mdx → CheckboxGroup/CheckboxGroupOptions.stories.mdx} +8 -8
  247. package/src/stories/CheckboxGroup/CheckboxGroupReadonly.stories.mdx +26 -0
  248. package/src/stories/CheckboxGroup/CheckboxGroupSlots.stories.mdx +152 -0
  249. package/src/stories/CheckboxGroup/CheckboxGroupValid.stories.mdx +28 -0
  250. package/src/stories/CheckboxGroup/CheckboxGroupVertical.stories.mdx +26 -0
  251. package/src/stories/Dialog/Dialog.stories.mdx +5 -5
  252. package/src/stories/Dialog/Dialog.test.ts +26 -0
  253. package/src/stories/Dialog/DialogAutoClose.stories.mdx +1 -1
  254. package/src/stories/Dialog/DialogSize.stories.mdx +1 -1
  255. package/src/stories/Dropdown/Dropdown.stories.mdx +11 -7
  256. package/src/stories/Dropdown/Dropdown.test.ts +80 -0
  257. package/src/stories/Dropdown/DropdownDisabled.stories.mdx +9 -2
  258. package/src/stories/Dropdown/DropdownLabelNoResults.stories.mdx +2 -2
  259. package/src/stories/Dropdown/DropdownMaxValues.stories.mdx +4 -2
  260. package/src/stories/Dropdown/DropdownMultiple.stories.mdx +4 -2
  261. package/src/stories/Dropdown/DropdownOptions.stories.mdx +4 -4
  262. package/src/stories/Dropdown/DropdownUseObject.stories.mdx +4 -2
  263. package/src/stories/Icon/Icon.stories.mdx +8 -8
  264. package/src/stories/Icon/{IconTest.js → Icon.test.js} +2 -5
  265. package/src/stories/Icon/IconList.vue +5 -6
  266. package/src/stories/Icon/IconPrefix.stories.mdx +2 -2
  267. package/src/stories/Icon/IconRemote.stories.mdx +2 -2
  268. package/src/stories/Icon/IconsList.stories.mdx +2 -18
  269. package/src/stories/InputText/InputText.stories.mdx +25 -19
  270. package/src/stories/InputText/InputText.test.ts +156 -0
  271. package/src/stories/InputText/InputTextAutocomplete.stories.mdx +9 -2
  272. package/src/stories/InputText/InputTextAutofocus.stories.mdx +6 -3
  273. package/src/stories/InputText/InputTextDisabled.stories.mdx +10 -2
  274. package/src/stories/InputText/InputTextError.stories.mdx +10 -2
  275. package/src/stories/InputText/InputTextFloating.stories.mdx +10 -3
  276. package/src/stories/InputText/InputTextHintLabel.stories.mdx +10 -2
  277. package/src/stories/InputText/InputTextIcon.stories.mdx +6 -2
  278. package/src/stories/InputText/InputTextIconPosition.stories.mdx +10 -3
  279. package/src/stories/InputText/InputTextLabel.stories.mdx +8 -2
  280. package/src/stories/InputText/InputTextLoading.stories.mdx +10 -2
  281. package/src/stories/InputText/InputTextMax.stories.mdx +10 -3
  282. package/src/stories/InputText/InputTextMaxLength.stories.mdx +22 -5
  283. package/src/stories/InputText/InputTextMin.stories.mdx +10 -3
  284. package/src/stories/InputText/InputTextMinLength.stories.mdx +9 -2
  285. package/src/stories/InputText/InputTextPlaceholder.stories.mdx +8 -2
  286. package/src/stories/InputText/InputTextReadonly.stories.mdx +6 -2
  287. package/src/stories/InputText/InputTextSlots.stories.mdx +4 -5
  288. package/src/stories/InputText/InputTextStep.stories.mdx +9 -3
  289. package/src/stories/InputText/InputTextType.stories.mdx +110 -13
  290. package/src/stories/InputText/InputTextValid.stories.mdx +10 -2
  291. package/src/stories/NativeSelect/NativeSelect.stories.mdx +15 -11
  292. package/src/stories/NativeSelect/NativeSelect.test.js +151 -0
  293. package/src/stories/NativeSelect/NativeSelectDisabled.stories.mdx +6 -7
  294. package/src/stories/NativeSelect/NativeSelectError.stories.mdx +7 -3
  295. package/src/stories/NativeSelect/NativeSelectHintLabel.stories.mdx +7 -3
  296. package/src/stories/NativeSelect/NativeSelectIconLeftRight.stories.mdx +14 -12
  297. package/src/stories/NativeSelect/NativeSelectLoading.stories.mdx +7 -3
  298. package/src/stories/NativeSelect/NativeSelectOptions.stories.mdx +44 -38
  299. package/src/stories/NativeSelect/NativeSelectReadonly.stories.mdx +19 -11
  300. package/src/stories/NativeSelect/NativeSelectUseObject.stories.mdx +26 -30
  301. package/src/stories/NativeSelect/NativeSelectValid.stories.mdx +7 -3
  302. package/src/stories/NativeSelect/NativeSelectValueKey.stories.mdx +30 -30
  303. package/src/stories/Progress/Progress.stories.mdx +8 -11
  304. package/src/stories/Progress/{ProgressTest.js → Progress.test.js} +4 -10
  305. package/src/stories/Progress/ProgressDeterminate.stories.mdx +3 -6
  306. package/src/stories/Radio/Radio.stories.mdx +11 -17
  307. package/src/stories/Radio/Radio.test.ts +52 -0
  308. package/src/stories/Radio/RadioDisabled.stories.mdx +4 -7
  309. package/src/stories/Radio/RadioError.stories.mdx +8 -28
  310. package/src/stories/Radio/RadioHintLabel.stories.mdx +6 -7
  311. package/src/stories/Radio/RadioSlots.stories.mdx +21 -7
  312. package/src/stories/RadioGroup/RadioGroup.stories.mdx +20 -27
  313. package/src/stories/RadioGroup/RadioGroup.test.ts +139 -0
  314. package/src/stories/RadioGroup/RadioGroupDisabled.stories.mdx +6 -8
  315. package/src/stories/RadioGroup/RadioGroupError.stories.mdx +9 -11
  316. package/src/stories/RadioGroup/RadioGroupHintLabel.stories.mdx +8 -10
  317. package/src/stories/RadioGroup/RadioGroupLabel.stories.mdx +6 -8
  318. package/src/stories/RadioGroup/RadioGroupOptionLabel.stories.mdx +11 -13
  319. package/src/stories/RadioGroup/RadioGroupOptionValue.stories.mdx +9 -11
  320. package/src/stories/RadioGroup/RadioGroupOptions.stories.mdx +7 -9
  321. package/src/stories/RadioGroup/RadioGroupReadonly.stories.mdx +6 -8
  322. package/src/stories/RadioGroup/RadioGroupSlots.stories.mdx +39 -62
  323. package/src/stories/RadioGroup/RadioGroupValid.stories.mdx +9 -11
  324. package/src/stories/RadioGroup/RadioGroupVertical.stories.mdx +6 -8
  325. package/src/stories/Select/Select.stories.mdx +32 -29
  326. package/src/stories/Select/Select.test.ts +104 -0
  327. package/src/stories/Select/SelectDisabled.stories.mdx +3 -3
  328. package/src/stories/Select/SelectMaxValues.stories.mdx +3 -3
  329. package/src/stories/Select/SelectMultiple.stories.mdx +5 -6
  330. package/src/stories/Select/SelectNative.stories.mdx +6 -8
  331. package/src/stories/Select/SelectOptions.stories.mdx +4 -4
  332. package/src/stories/Select/SelectSearchable.stories.mdx +13 -12
  333. package/src/stories/Select/SelectSeparator.stories.mdx +3 -3
  334. package/src/stories/Select/SelectUseObject.stories.mdx +3 -3
  335. package/src/stories/Textarea/Textarea.stories.mdx +6 -10
  336. package/src/stories/Textarea/Textarea.test.ts +204 -0
  337. package/src/stories/Textarea/TextareaAutoclear.stories.mdx +3 -2
  338. package/src/stories/Textarea/TextareaAutocomplete.stories.mdx +3 -2
  339. package/src/stories/Textarea/TextareaAutofocus.stories.mdx +3 -2
  340. package/src/stories/Textarea/TextareaDebounce.stories.mdx +7 -6
  341. package/src/stories/Textarea/TextareaDisabled.stories.mdx +9 -3
  342. package/src/stories/Textarea/TextareaError.stories.mdx +7 -2
  343. package/src/stories/Textarea/TextareaErrorLabel.stories.mdx +12 -2
  344. package/src/stories/Textarea/TextareaFloating.stories.mdx +7 -2
  345. package/src/stories/Textarea/TextareaHintLabel.stories.mdx +7 -2
  346. package/src/stories/Textarea/TextareaIcon.stories.mdx +3 -2
  347. package/src/stories/Textarea/TextareaIconPosition.stories.mdx +4 -2
  348. package/src/stories/Textarea/TextareaId.stories.mdx +3 -2
  349. package/src/stories/Textarea/TextareaLabel.stories.mdx +3 -2
  350. package/src/stories/Textarea/TextareaLimit.stories.mdx +5 -2
  351. package/src/stories/Textarea/TextareaLoading.stories.mdx +7 -2
  352. package/src/stories/Textarea/TextareaLoadingLabel.stories.mdx +9 -3
  353. package/src/stories/Textarea/TextareaMaxLength.stories.mdx +5 -4
  354. package/src/stories/Textarea/TextareaMinLength.stories.mdx +3 -2
  355. package/src/stories/Textarea/TextareaModifiers.stories.mdx +10 -2
  356. package/src/stories/Textarea/TextareaName.stories.mdx +3 -2
  357. package/src/stories/Textarea/TextareaPlaceholder.stories.mdx +4 -3
  358. package/src/stories/Textarea/TextareaReadonly.stories.mdx +8 -3
  359. package/src/stories/Textarea/TextareaRequired.stories.mdx +3 -2
  360. package/src/stories/Textarea/TextareaResizable.stories.mdx +7 -2
  361. package/src/stories/Textarea/TextareaRowsCols.stories.mdx +4 -2
  362. package/src/stories/Textarea/TextareaSlots.stories.mdx +7 -8
  363. package/src/stories/Textarea/TextareaValid.stories.mdx +7 -1
  364. package/src/stories/Textarea/TextareaValidLabel.stories.mdx +14 -4
  365. package/src/stories/utils.ts +1 -1
  366. package/src/stories/volver-ui-vue.stories.mdx +1 -1
  367. package/src/test/expect.ts +3 -1
  368. package/src/test/sleep.ts +2 -0
  369. package/src/test/types.d.ts +14 -1
  370. package/src/types/{.README → .gitkeep} +0 -0
  371. package/src/utils/ObjectUtilities.ts +247 -241
  372. package/dist/components/VvAccordion/VvAccordion.d.ts +0 -32
  373. package/dist/components/VvAccordion/useAccordionProps.d.ts +0 -16
  374. package/dist/components/VvButton/useButtonGroupProps.d.ts +0 -18
  375. package/dist/components/VvCheck/VvCheck.d.ts +0 -47
  376. package/dist/components/VvCheck/VvCheck.es.js +0 -318
  377. package/dist/components/VvCheck/VvCheck.umd.js +0 -1
  378. package/dist/components/VvCheck/VvCheck.vue.d.ts +0 -165
  379. package/dist/components/VvCheck/useCheckProps.d.ts +0 -16
  380. package/dist/components/VvCheckGroup/VvCheckGroup.es.js +0 -451
  381. package/dist/components/VvCheckGroup/VvCheckGroup.umd.js +0 -2
  382. package/dist/components/VvCheckGroup/VvCheckGroup.vue.d.ts +0 -272
  383. package/dist/components/VvDialog/constants.d.ts +0 -5
  384. package/dist/components/VvInputText/VvInputText.d.ts +0 -73
  385. package/dist/components/VvInputText/constants.d.ts +0 -55
  386. package/dist/components/VvRadio/VvRadio.d.ts +0 -22
  387. package/dist/components/VvRadio/useRadioProps.d.ts +0 -15
  388. package/dist/components/VvTextarea/constants.d.ts +0 -19
  389. package/dist/stories/RadioGroup/RadioOption.test.d.ts +0 -4
  390. package/dist/stories/RadioGroup/RadioProperty.test.d.ts +0 -12
  391. package/dist/stories/RadioGroup/RadioSlots.test.d.ts +0 -6
  392. package/src/assets/icons/index.js +0 -7
  393. package/src/components/VvAccordion/VvAccordion.ts +0 -34
  394. package/src/components/VvAccordion/useAccordionProps.ts +0 -45
  395. package/src/components/VvButton/VvButton.ts +0 -87
  396. package/src/components/VvButton/useButtonGroupProps.ts +0 -43
  397. package/src/components/VvCheck/VvCheck.ts +0 -48
  398. package/src/components/VvCheck/VvCheck.vue +0 -147
  399. package/src/components/VvCheck/useCheckProps.ts +0 -41
  400. package/src/components/VvDialog/VvDialog.ts +0 -17
  401. package/src/components/VvDialog/constants.ts +0 -5
  402. package/src/components/VvInputText/VvInputText.ts +0 -66
  403. package/src/components/VvInputText/constants.ts +0 -34
  404. package/src/components/VvRadio/VvRadio.ts +0 -25
  405. package/src/components/VvRadio/useRadioProps.ts +0 -40
  406. package/src/components/VvTextarea/constants.ts +0 -14
  407. package/src/stories/Accordion/AccordionBordered.stories.mdx +0 -26
  408. package/src/stories/Accordion/AccordionIconRight.stories.mdx +0 -32
  409. package/src/stories/Accordion/accordionTest.js +0 -36
  410. package/src/stories/AccordionGroup/Accordion.stories.mdx +0 -42
  411. package/src/stories/Badge/BadgeTest.js +0 -21
  412. package/src/stories/Button/ButtonSelected.stories.mdx +0 -30
  413. package/src/stories/Check/Check.stories.mdx +0 -62
  414. package/src/stories/Check/CheckBinary.stories.mdx +0 -75
  415. package/src/stories/Check/CheckError.stories.mdx +0 -64
  416. package/src/stories/Check/CheckErrorTests.js +0 -74
  417. package/src/stories/Check/CheckHintLabel.stories.mdx +0 -30
  418. package/src/stories/Check/CheckPropertyTest.js +0 -102
  419. package/src/stories/Check/CheckSlots.stories.mdx +0 -51
  420. package/src/stories/CheckGroup/CheckGroup.stories.mdx +0 -69
  421. package/src/stories/CheckGroup/CheckGroupDisabled.stories.mdx +0 -26
  422. package/src/stories/CheckGroup/CheckGroupError.stories.mdx +0 -28
  423. package/src/stories/CheckGroup/CheckGroupHintLabel.stories.mdx +0 -27
  424. package/src/stories/CheckGroup/CheckGroupLabel.stories.mdx +0 -26
  425. package/src/stories/CheckGroup/CheckGroupReadonly.stories.mdx +0 -26
  426. package/src/stories/CheckGroup/CheckGroupSlots.stories.mdx +0 -152
  427. package/src/stories/CheckGroup/CheckGroupValid.stories.mdx +0 -28
  428. package/src/stories/CheckGroup/CheckGroupVertical.stories.mdx +0 -26
  429. package/src/stories/RadioGroup/RadioOption.test.ts +0 -45
  430. package/src/stories/RadioGroup/RadioProperty.test.ts +0 -87
  431. package/src/stories/RadioGroup/RadioSlots.test.ts +0 -29
  432. package/src/stories/stories.scss +0 -13
@@ -0,0 +1,94 @@
1
+ import { type ExtractPropTypes, type Ref, toRefs } from 'vue'
2
+ import type { IInputGroupState } from '@/composables/group/types/IInputGroup'
3
+ import { useInjectedGroupState } from '@/composables/group/useInjectedGroupState'
4
+ import { ValidProps, ErrorProps, HintProps } from '@/props'
5
+ import { VV_CHECK_GROUP } from '@/constants'
6
+
7
+ export const VvCheckboxProps = {
8
+ ...ValidProps,
9
+ ...ErrorProps,
10
+ ...HintProps,
11
+ /**
12
+ * Input id
13
+ */
14
+ id: [String, Number],
15
+ /**
16
+ * Input name
17
+ */
18
+ name: { type: String, required: true },
19
+ /**
20
+ * Input value
21
+ */
22
+ value: [String, Number, Boolean],
23
+ /**
24
+ * Input value
25
+ * @description
26
+ * If binary the input value can be an Object, a Boolean or a Number
27
+ * If not binary the input value must be an Array
28
+ */
29
+ modelValue: [Object, Number, Boolean, String],
30
+ /**
31
+ * Input name
32
+ */
33
+ label: String,
34
+ /**
35
+ * If true, the input will be disabled
36
+ */
37
+ disabled: Boolean,
38
+ /**
39
+ * If true, the input will be readonly
40
+ */
41
+ readonly: Boolean,
42
+ /**
43
+ * Value associated with the checked state (returned instead of TRUE)
44
+ */
45
+ trueValue: { type: [String, Number, Boolean], default: undefined },
46
+ /**
47
+ * Value associated with the unchecked state (returned instead of FALSE)
48
+ */
49
+ falseValue: { type: [String, Number, Boolean], default: undefined },
50
+ /**
51
+ * If true, the input will be displayed as a switch
52
+ */
53
+ switch: Boolean,
54
+ /**
55
+ * Sequential keyboard navigation
56
+ */
57
+ tabindex: { type: [String, Number], default: 0 }
58
+ }
59
+
60
+ export const VvCheckboxEvents = ['click', 'update:modelValue', 'change', 'blur']
61
+
62
+ export type VvCheckboxPropsTypes = ExtractPropTypes<typeof VvCheckboxProps>
63
+
64
+ /**
65
+ * Merges local and group props
66
+ */
67
+ export function useGroupProps(
68
+ props: VvCheckboxPropsTypes,
69
+ emit: (event: typeof VvCheckboxEvents[number], value: unknown) => void
70
+ ) {
71
+ const { group, isInGroup, getGroupOrLocalRef } =
72
+ useInjectedGroupState<IInputGroupState>(VV_CHECK_GROUP)
73
+
74
+ // local props
75
+ const { valid, error, switch: propsSwitch } = toRefs(props)
76
+
77
+ // global props
78
+ const modelValue = getGroupOrLocalRef('modelValue', props, emit)
79
+ const readonly = getGroupOrLocalRef('readonly', props) as Ref<boolean>
80
+ const disabled = getGroupOrLocalRef('disabled', props) as Ref<boolean>
81
+
82
+ return {
83
+ // local props
84
+ valid,
85
+ error,
86
+ propsSwitch,
87
+ // global props
88
+ group,
89
+ isInGroup,
90
+ modelValue,
91
+ readonly,
92
+ disabled
93
+ }
94
+ }
@@ -1,53 +1,33 @@
1
- <template>
2
- <fieldset :class="groupClass">
3
- <legend v-if="label" v-text="label" />
4
- <div class="vv-input-checkbox-group__wrapper">
5
- <!-- #region options set up -->
6
- <template v-if="options.length > 0">
7
- <vv-check
8
- v-for="(o, oIndex) in options"
9
- :key="oIndex"
10
- v-bind="getOptionProps(o, oIndex)" />
11
- </template>
12
- <!-- #endregion options set up -->
13
- <!-- #region default -->
14
- <slot v-else />
15
- <!-- #endregion default -->
16
- </div>
17
- <!-- @slot error,valid,hint,loading vanno vanno qua -->
18
- <HintSlot class="vv-input-checkbox-group__hint" />
19
- </fieldset>
20
- </template>
1
+ <script lang="ts">
2
+ export default {
3
+ name: 'VvCheckboxGroup'
4
+ }
5
+ </script>
21
6
 
22
7
  <script setup lang="ts">
23
- import type { IInputGroupState } from '@/composables/group/types/IInputGroup'
24
-
25
8
  import { useSlots, computed, toRefs } from 'vue'
26
- import { VvCheckGroupProps, VvCheckGroupEvents } from './VvCheckGroup'
27
-
28
- //Costanti
29
- import { VV_CHECK_GROUP } from '../../constants'
30
-
31
- //Composables
9
+ import type { IInputGroupState } from '@/composables/group/types/IInputGroup'
10
+ import { VV_CHECK_GROUP } from '@/constants'
32
11
  import { useVModel } from '@vueuse/core'
33
- import { useProvideGroupState } from '../../composables/group/useProvideGroupState'
34
- import { useOptions } from '../../composables/options/useOptions'
12
+ import { useProvideGroupState } from '@/composables/group/useProvideGroupState'
13
+ import { useOptions } from '@/composables/options/useOptions'
35
14
  import { useBemModifiers } from '@/composables/useModifiers'
15
+ import { HintSlotFactory } from '@/components/common/HintSlot'
16
+ import VvCheckbox from '@/components/VvCheckbox/VvCheckbox.vue'
17
+ import {
18
+ VvCheckboxGroupProps,
19
+ VvCheckboxGroupEvents
20
+ } from '@/components/VvCheckboxGroup'
36
21
 
37
- //Components
38
- import VvCheck from '../../components/VvCheck/VvCheck.vue'
39
- import { HintSlotFactory } from '../common/HintSlot'
40
-
41
- //Props, Emits, Slots e Attrs
42
- const props = defineProps(VvCheckGroupProps)
43
- const emit = defineEmits(VvCheckGroupEvents)
22
+ // props, emit and slots
23
+ const props = defineProps(VvCheckboxGroupProps)
24
+ const emit = defineEmits(VvCheckboxGroupEvents)
44
25
  const slots = useSlots()
45
26
 
46
- //Data
27
+ // data
47
28
  const modelValue = useVModel(props, 'modelValue', emit)
48
29
  const { disabled, readonly, error, valid } = toRefs(props)
49
30
 
50
- // #region group
51
31
  const groupState: IInputGroupState = {
52
32
  key: VV_CHECK_GROUP,
53
33
  modelValue,
@@ -55,23 +35,19 @@ const groupState: IInputGroupState = {
55
35
  readonly
56
36
  }
57
37
  useProvideGroupState(groupState)
58
- // #endregion group
59
38
 
60
- // OPTIONS
39
+ // options
61
40
  const { getOptionLabel, getOptionValue } = useOptions(props)
62
41
 
63
- //Styles & Bindings
64
- const { bemCssClasses: groupClass } = useBemModifiers(
65
- 'vv-input-checkbox-group',
66
- {
67
- horizontal: computed(() => !props.vertical),
68
- valid,
69
- invalid: error
70
- }
71
- )
42
+ // stypes
43
+ const { bemCssClasses: hasClass } = useBemModifiers('vv-checkbox-group', {
44
+ horizontal: computed(() => !props.vertical),
45
+ valid,
46
+ invalid: error
47
+ })
72
48
 
73
- //Methods
74
- const getOptionProps = (option: any, oIndex: number) => {
49
+ // methods
50
+ const getOptionProps = (option: unknown, oIndex: number) => {
75
51
  return {
76
52
  id: `${props.name}_opt${oIndex}`,
77
53
  name: props.name,
@@ -79,6 +55,25 @@ const getOptionProps = (option: any, oIndex: number) => {
79
55
  value: getOptionValue(option)
80
56
  }
81
57
  }
82
-
83
- const HintSlot = HintSlotFactory(props, slots)
58
+ const { HintSlot } = HintSlotFactory(props, slots)
84
59
  </script>
60
+
61
+ <template>
62
+ <fieldset :class="hasClass">
63
+ <legend v-if="label" v-text="label" />
64
+ <div class="vv-checkbox-group__wrapper">
65
+ <!-- #region options set up -->
66
+ <template v-if="options.length > 0">
67
+ <vv-checkbox
68
+ v-for="(o, oIndex) in options"
69
+ :key="oIndex"
70
+ v-bind="getOptionProps(o, oIndex)" />
71
+ </template>
72
+ <!-- #endregion options set up -->
73
+ <!-- #region default -->
74
+ <slot v-else />
75
+ <!-- #endregion default -->
76
+ </div>
77
+ <HintSlot class="vv-checkbox-group__hint" />
78
+ </fieldset>
79
+ </template>
@@ -1,34 +1,34 @@
1
- import { ValidProps, ErrorProps, HintProps, OptionsProps } from '../../props'
1
+ import { ValidProps, ErrorProps, HintProps, OptionsProps } from '@/props'
2
2
 
3
- export const VvCheckGroupProps = {
3
+ export const VvCheckboxGroupProps = {
4
4
  ...ValidProps,
5
5
  ...ErrorProps,
6
6
  ...HintProps,
7
7
  ...OptionsProps,
8
8
  /**
9
- * VModel
9
+ * Input value
10
10
  */
11
11
  modelValue: { type: Array },
12
12
  /**
13
- * Radio group label
13
+ * Input label
14
14
  */
15
15
  label: { type: String, default: '' },
16
16
  /**
17
- * Nome da utilizzare per il radio group
17
+ * Input name
18
18
  */
19
19
  name: { type: String, default: '', required: true },
20
20
  /**
21
- * True se disabilitato
21
+ * If true, the input will be disabled
22
22
  */
23
23
  disabled: { type: Boolean, default: false },
24
24
  /**
25
- * True se readonly
25
+ * If true, the input will be readonly
26
26
  */
27
27
  readonly: { type: Boolean, default: false },
28
28
  /**
29
- * True = show buttons vertically
29
+ * If true, the group will be displayed in a vertical column
30
30
  */
31
31
  vertical: { type: Boolean, default: false }
32
32
  }
33
33
 
34
- export const VvCheckGroupEvents = ['update:modelValue', 'change']
34
+ export const VvCheckboxGroupEvents = ['update:modelValue', 'change']
@@ -1,56 +1,27 @@
1
- <template>
2
- <Transition :name="transitioName" v-on="dialogTransitionHandlers">
3
- <dialog v-show="openDialog" v-bind="dialogAttrs" :class="dialogClass">
4
- <article ref="modalWrapper" class="vv-dialog__wrapper">
5
- <header v-if="$slots.header || title" class="vv-dialog__header">
6
- <slot name="header">
7
- {{ title }}
8
- <button
9
- type="button"
10
- aria-label="Close"
11
- class="vv-dialog__close"
12
- @click.prevent="closeDialog">
13
- <vv-icon name="close" />
14
- </button>
15
- </slot>
16
- </header>
17
- <div class="vv-dialog__content">
18
- <!-- @slot default -->
19
- <slot />
20
- </div>
21
- <footer v-if="$slots.footer" class="vv-dialog__footer">
22
- <slot name="footer" />
23
- </footer>
24
- </article>
25
- </dialog>
26
- </Transition>
27
- </template>
1
+ <script lang="ts">
2
+ export default {
3
+ name: 'VvDialog'
4
+ }
5
+ </script>
28
6
 
29
7
  <script setup lang="ts">
30
- import type { DialogHTMLAttributes } from 'vue'
31
-
32
- import { computed, ref } from 'vue'
8
+ import { type DialogHTMLAttributes, computed, ref } from 'vue'
33
9
  import { useVModel, onClickOutside } from '@vueuse/core'
34
- import { VvDialogEvents, VvDialogProps } from './VvDialog'
35
-
36
- //Components
37
- import VvIcon from '../VvIcon/VvIcon.vue'
10
+ import VvIcon from '@/components/VvIcon/VvIcon.vue'
11
+ import { VvDialogEvents, VvDialogProps } from '@/components/VvDialog'
38
12
 
39
- //Constants
40
- import { VV_DIALOG_SIZES } from './constants'
41
-
42
- //Props, emits, slots, attrs
13
+ // props, emit
43
14
  const props = defineProps(VvDialogProps)
44
15
  const emit = defineEmits(VvDialogEvents)
45
16
 
46
- //Data
47
- const openDialog = useVModel(props, 'open', emit)
17
+ // data
18
+ const openDialog = useVModel(props, 'modelValue', emit)
48
19
  const htmlAttrIsOpen = ref(true)
49
20
 
50
- //Template reference
21
+ // template ref
51
22
  const modalWrapper = ref(null)
52
23
 
53
- //Style e binding
24
+ // styles
54
25
  const dialogAttrs = computed(() => {
55
26
  const { id } = props
56
27
  return {
@@ -59,17 +30,16 @@ const dialogAttrs = computed(() => {
59
30
  } as DialogHTMLAttributes
60
31
  })
61
32
  const dialogClass = computed(() => {
62
- return {
63
- 'vv-dialog': true,
64
- 'vv-dialog--small': props.size === VV_DIALOG_SIZES.small,
65
- 'vv-dialog--fullscreen': props.size === VV_DIALOG_SIZES.fullscreen
33
+ if (!props.size) {
34
+ return 'vv-dialog'
66
35
  }
36
+ return ['vv-dialog', `vv-dialog--${props.size}`]
67
37
  })
68
38
 
69
- //Transitions
39
+ // transitions
70
40
  const transitioName = computed(() => `vv-dialog--${props.transition}`)
71
41
  const dialogTransitionHandlers = {
72
- 'after-enter': () => {
42
+ 'before-enter': () => {
73
43
  htmlAttrIsOpen.value = true
74
44
  emit('open')
75
45
  },
@@ -79,13 +49,40 @@ const dialogTransitionHandlers = {
79
49
  }
80
50
  }
81
51
 
82
- //Click outside
52
+ // methods
83
53
  onClickOutside(modalWrapper, () => {
84
54
  if (props.autoClose) openDialog.value = false
85
55
  })
86
56
 
87
- //Methods
88
57
  function closeDialog() {
89
58
  openDialog.value = false
90
59
  }
91
60
  </script>
61
+
62
+ <template>
63
+ <Transition :name="transitioName" v-on="dialogTransitionHandlers">
64
+ <dialog v-show="openDialog" v-bind="dialogAttrs" :class="dialogClass">
65
+ <article ref="modalWrapper" class="vv-dialog__wrapper">
66
+ <header v-if="$slots.header || title" class="vv-dialog__header">
67
+ <slot name="header">
68
+ {{ title }}
69
+ <button
70
+ type="button"
71
+ aria-label="Close"
72
+ class="vv-dialog__close"
73
+ @click.prevent="closeDialog">
74
+ <vv-icon name="close" />
75
+ </button>
76
+ </slot>
77
+ </header>
78
+ <div class="vv-dialog__content">
79
+ <!-- @slot default -->
80
+ <slot />
81
+ </div>
82
+ <footer v-if="$slots.footer" class="vv-dialog__footer">
83
+ <slot name="footer" />
84
+ </footer>
85
+ </article>
86
+ </dialog>
87
+ </Transition>
88
+ </template>
@@ -0,0 +1,10 @@
1
+ export const VvDialogEvents = ['open', 'close', 'update:modelValue']
2
+
3
+ export const VvDialogProps = {
4
+ id: { type: String, required: true },
5
+ title: String,
6
+ modelValue: Boolean,
7
+ transition: { type: String, default: 'fade-block' },
8
+ size: String,
9
+ autoClose: { type: Boolean, default: true }
10
+ }
@@ -1,44 +1,25 @@
1
- <template>
2
- <ul :class="dropdownClasses" role="listbox">
3
- <li v-if="!options?.length">
4
- <label>
5
- {{ labelNoResult }}
6
- </label>
7
- </li>
8
- <li v-for="(option, index) in options" :key="index">
9
- <label :for="`dropdown-${index}-${id}`">
10
- <input
11
- :id="`dropdown-${index}-${id}`"
12
- :type="multiple ? 'checkbox' : 'radio'"
13
- :value="getValue(option)"
14
- :checked="isSelected(option)"
15
- :disabled="
16
- typeof option === 'object'
17
- ? option.disabled ?? disabled
18
- : disabled
19
- "
20
- @input="onInput" />
21
- {{ getLabel(option) }}
22
- </label>
23
- </li>
24
- </ul>
25
- </template>
1
+ <script lang="ts">
2
+ export default {
3
+ name: 'VvDropdown'
4
+ }
5
+ </script>
26
6
 
27
7
  <script setup lang="ts">
28
8
  import { toRefs } from 'vue'
29
- import { v4 as uuidv4 } from 'uuid'
30
- import { useBemModifiers } from '../../composables/useModifiers'
31
- import ObjectUtilities from '../../utils/ObjectUtilities'
32
- import { VvDropdownProps, type Option } from './VvDropdown'
9
+ import { nanoid } from 'nanoid'
10
+ import { useBemModifiers } from '@/composables/useModifiers'
11
+ import { contains, equals, removeFromList } from '@/utils/ObjectUtilities'
12
+ import { VvDropdownProps, type Option } from '@/components/VvDropdown'
33
13
 
14
+ // props, emit
34
15
  const props = defineProps(VvDropdownProps)
35
16
  const emit = defineEmits(['update:modelValue'])
36
17
 
37
18
  // data
38
- const id = uuidv4()
19
+ const id = nanoid()
39
20
  const { modifiers, disabled } = toRefs(props)
40
21
 
41
- //Styles & css classes modifiers
22
+ // styles
42
23
  const { bemCssClasses: dropdownClasses } = useBemModifiers('vv-dropdown', {
43
24
  modifiers,
44
25
  disabled
@@ -48,18 +29,18 @@ const { bemCssClasses: dropdownClasses } = useBemModifiers('vv-dropdown', {
48
29
  * Check if an option exist into modelValue array (multiple) or is equal to modelValue (single)
49
30
  * @param {String | Option} option
50
31
  */
51
- function isSelected(option: string | Option) {
32
+ function getChecked(option: string | Option) {
52
33
  if (Array.isArray(props.modelValue)) {
53
34
  // check if contain whole option or option value
54
35
  return (
55
- ObjectUtilities.contains(option, props.modelValue) ||
56
- ObjectUtilities.contains(getValue(option), props.modelValue)
36
+ contains(option, props.modelValue) ||
37
+ contains(getValue(option), props.modelValue)
57
38
  )
58
39
  }
59
40
  // check if modelValue is equal to option or option value
60
41
  return (
61
- ObjectUtilities.equals(option, props.modelValue) ||
62
- ObjectUtilities.equals(getValue(option), props.modelValue)
42
+ equals(option, props.modelValue) ||
43
+ equals(getValue(option), props.modelValue)
63
44
  )
64
45
  }
65
46
 
@@ -79,6 +60,17 @@ function getLabel(option: string | Option) {
79
60
  return typeof option === 'string' ? option : option[props.labelKey]
80
61
  }
81
62
 
63
+ /**
64
+ * Retrieve the disabled state of an option based on prop "disabled" or the disabled attribute
65
+ * @param {String | Option} option
66
+ */
67
+ function getDisabled(option: string | Option): boolean {
68
+ if (typeof option === 'string' || option.disabled === undefined) {
69
+ return disabled.value
70
+ }
71
+ return option.disabled
72
+ }
73
+
82
74
  /**
83
75
  * Function triggered on input of checkbox or radio (multple or single mode)
84
76
  * @param event on input event (checkbox or radio input)
@@ -105,11 +97,12 @@ function onInput(event: Event) {
105
97
  if (
106
98
  typeof props.maxValues !== 'undefined' &&
107
99
  props.maxValues >= 0 &&
100
+ Array.isArray(props.modelValue) &&
108
101
  props.modelValue?.length >= props.maxValues
109
102
  ) {
110
103
  if (
111
104
  (Array.isArray(props.modelValue) &&
112
- !ObjectUtilities.contains(value, props.modelValue)) ||
105
+ !contains(value, props.modelValue)) ||
113
106
  props.maxValues == 0
114
107
  ) {
115
108
  target.checked = false
@@ -118,13 +111,41 @@ function onInput(event: Event) {
118
111
  }
119
112
  }
120
113
  if (Array.isArray(props.modelValue)) {
121
- value = ObjectUtilities.contains(value, props.modelValue)
122
- ? ObjectUtilities.removeFromList(value, props.modelValue)
114
+ value = contains(value, props.modelValue)
115
+ ? removeFromList(value, props.modelValue)
123
116
  : [...props.modelValue, value]
124
117
  } else {
125
- value = [value]
118
+ value = [value as Option]
126
119
  }
127
120
  }
128
121
  emit('update:modelValue', value)
129
122
  }
130
123
  </script>
124
+
125
+ <template>
126
+ <ul :class="dropdownClasses" role="listbox">
127
+ <li v-if="!options?.length" role="option">
128
+ <label>
129
+ {{ labelNoResult }}
130
+ </label>
131
+ </li>
132
+ <li
133
+ v-for="(option, index) in options"
134
+ :key="index"
135
+ role="option"
136
+ :aria-selected="getChecked(option)">
137
+ <label :for="`dropdown-${index}-${id}`">
138
+ <input
139
+ :id="`dropdown-${index}-${id}`"
140
+ :type="multiple ? 'checkbox' : 'radio'"
141
+ :value="getValue(option)"
142
+ :checked="getChecked(option)"
143
+ :disabled="getDisabled(option)"
144
+ tabindex="-1"
145
+ aria-hidden="true"
146
+ @input="onInput" />
147
+ {{ getLabel(option) }}
148
+ </label>
149
+ </li>
150
+ </ul>
151
+ </template>
@@ -1,17 +1,21 @@
1
1
  import type { PropType } from 'vue'
2
- import { DisabledProps, ModifiersProps } from '../../props'
2
+ import { DisabledProps, ModifiersProps } from '@/props'
3
3
 
4
4
  export interface Option {
5
- [key: string]: any
5
+ [key: string]: unknown
6
+ disabled?: boolean
6
7
  }
7
8
 
8
9
  export const VvDropdownProps = {
9
10
  ...DisabledProps,
10
11
  ...ModifiersProps,
11
12
  /**
12
- * modelValue can be an Object, a String or an Array of Object/String
13
+ * modelValue can be a string, number, boolean, object or array of string, number, boolean, object
13
14
  */
14
- modelValue: [String, Array, Object],
15
+ modelValue: {
16
+ type: [String, Number, Boolean, Object, Array],
17
+ required: true
18
+ },
15
19
  /**
16
20
  * Label of "no results" options
17
21
  */
@@ -1,42 +1,34 @@
1
- <template>
2
- <Icon
3
- v-if="show"
4
- :class="iconClass"
5
- v-bind="{
6
- ...$props,
7
- provider: currentProvider,
8
- icon
9
- }" />
10
- </template>
1
+ <script lang="ts">
2
+ export default {
3
+ name: 'VvIcon'
4
+ }
5
+ </script>
11
6
 
12
7
  <script setup lang="ts">
13
- import type { IVolver } from '../../Volver'
14
- import { VOLVER_PREFIX } from '../../Volver'
15
-
16
- import { inject, toRefs } from 'vue'
17
-
18
- import { ref, computed } from 'vue'
8
+ import { inject, toRefs, ref, computed } from 'vue'
19
9
  import { Icon, addIcon, iconExists, type IconifyJSON } from '@iconify/vue'
20
- import { VvIconProps } from './VvIcon'
21
-
22
- //Composables
10
+ import { type IVolver, VOLVER_PREFIX } from '@/Volver'
11
+ import { VvIconProps } from '@/components/VvIcon'
23
12
  import { useBemModifiers } from '@/composables/useModifiers'
24
13
 
25
- //Props,emits,slots
14
+ // props
26
15
  const props = defineProps(VvIconProps)
27
16
 
28
- //Data
17
+ // data
29
18
  const show = ref(true)
30
19
  const { modifiers } = toRefs(props)
31
20
 
32
- //Inject
21
+ // inject
33
22
  const ds = inject<IVolver>(VOLVER_PREFIX)
34
23
 
35
- //Styles & bindings
36
- const { bemCssClasses: iconClass } = useBemModifiers('vv-icon', {
24
+ // classes
25
+ const { bemCssClasses } = useBemModifiers('vv-icon', {
37
26
  modifiers
38
27
  })
39
28
 
29
+ /**
30
+ * Provider name
31
+ */
40
32
  const currentProvider = computed(() => {
41
33
  return props.provider || ds?.provider
42
34
  })
@@ -105,7 +97,10 @@ function addIconFromSvg(svg: string) {
105
97
  }
106
98
 
107
99
  if (ds) {
108
- if (props.src) {
100
+ if (
101
+ props.src &&
102
+ !iconExists(`@${currentProvider.value}:${props.prefix}:${props.name}`)
103
+ ) {
109
104
  show.value = false
110
105
  ds.fetchIcon(props.src)
111
106
  .then((svg?: string) => {
@@ -122,3 +117,14 @@ if (ds) {
122
117
  }
123
118
  }
124
119
  </script>
120
+
121
+ <template>
122
+ <Icon
123
+ v-if="show"
124
+ :class="bemCssClasses"
125
+ v-bind="{
126
+ ...$props,
127
+ provider: currentProvider,
128
+ icon
129
+ }" />
130
+ </template>