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

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 (431) hide show
  1. package/bin/icons.cjs +73 -0
  2. package/bin/icons.js +75 -0
  3. package/dist/Volver.d.ts +15 -2
  4. package/dist/components/VvAccordion/VvAccordion.es.js +133 -236
  5. package/dist/components/VvAccordion/VvAccordion.umd.js +1 -1
  6. package/dist/components/VvAccordion/VvAccordion.vue.d.ts +32 -97
  7. package/dist/components/VvAccordion/index.d.ts +46 -0
  8. package/dist/components/VvAccordionGroup/VvAccordionGroup.es.js +199 -277
  9. package/dist/components/VvAccordionGroup/VvAccordionGroup.umd.js +1 -1
  10. package/dist/components/VvAccordionGroup/VvAccordionGroup.vue.d.ts +44 -151
  11. package/dist/components/VvAccordionGroup/{VvAccordionGroup.d.ts → index.d.ts} +9 -13
  12. package/dist/components/VvBadge/VvBadge.es.js +42 -151
  13. package/dist/components/VvBadge/VvBadge.umd.js +1 -1
  14. package/dist/components/VvBadge/VvBadge.vue.d.ts +12 -53
  15. package/dist/components/VvBadge/{VvBadge.d.ts → index.d.ts} +0 -0
  16. package/dist/components/VvBreadcrumb/VvBreadcrumb.es.js +55 -168
  17. package/dist/components/VvBreadcrumb/VvBreadcrumb.umd.js +1 -1
  18. package/dist/components/VvBreadcrumb/VvBreadcrumb.vue.d.ts +24 -104
  19. package/dist/components/VvBreadcrumb/{VvBreadcrumb.d.ts → index.d.ts} +1 -1
  20. package/dist/components/VvButton/VvButton.es.js +298 -312
  21. package/dist/components/VvButton/VvButton.umd.js +1 -1
  22. package/dist/components/VvButton/VvButton.vue.d.ts +91 -163
  23. package/dist/components/VvButton/{VvButton.d.ts → index.d.ts} +46 -9
  24. package/dist/components/VvButtonGroup/VvButtonGroup.es.js +59 -172
  25. package/dist/components/VvButtonGroup/VvButtonGroup.umd.js +1 -1
  26. package/dist/components/VvButtonGroup/VvButtonGroup.vue.d.ts +30 -125
  27. package/dist/components/VvButtonGroup/{VvButtonGroup.d.ts → index.d.ts} +0 -0
  28. package/dist/components/VvCard/VvCard.es.js +55 -166
  29. package/dist/components/VvCard/VvCard.umd.js +1 -1
  30. package/dist/components/VvCard/VvCard.vue.d.ts +16 -61
  31. package/dist/components/VvCard/{VvCard.d.ts → index.d.ts} +1 -1
  32. package/dist/components/VvCheckbox/VvCheckbox.es.js +344 -0
  33. package/dist/components/VvCheckbox/VvCheckbox.umd.js +1 -0
  34. package/dist/components/VvCheckbox/VvCheckbox.vue.d.ts +87 -0
  35. package/dist/components/VvCheckbox/index.d.ts +86 -0
  36. package/dist/components/VvCheckboxGroup/VvCheckboxGroup.es.js +415 -0
  37. package/dist/components/VvCheckboxGroup/VvCheckboxGroup.umd.js +1 -0
  38. package/dist/components/VvCheckboxGroup/VvCheckboxGroup.vue.d.ts +113 -0
  39. package/dist/components/{VvCheckGroup/VvCheckGroup.d.ts → VvCheckboxGroup/index.d.ts} +10 -10
  40. package/dist/components/VvDialog/VvDialog.es.js +108 -230
  41. package/dist/components/VvDialog/VvDialog.umd.js +1 -1
  42. package/dist/components/VvDialog/VvDialog.vue.d.ts +28 -132
  43. package/dist/components/VvDialog/{VvDialog.d.ts → index.d.ts} +2 -6
  44. package/dist/components/VvDropdown/VvDropdown.es.js +167 -186
  45. package/dist/components/VvDropdown/VvDropdown.umd.js +1 -1
  46. package/dist/components/VvDropdown/VvDropdown.vue.d.ts +34 -136
  47. package/dist/components/VvDropdown/{VvDropdown.d.ts → index.d.ts} +7 -3
  48. package/dist/components/VvIcon/VvIcon.es.js +62 -174
  49. package/dist/components/VvIcon/VvIcon.umd.js +1 -1
  50. package/dist/components/VvIcon/VvIcon.vue.d.ts +36 -150
  51. package/dist/components/VvIcon/{VvIcon.d.ts → index.d.ts} +9 -0
  52. package/dist/components/VvInputText/VvInputClearAction.d.ts +36 -0
  53. package/dist/components/VvInputText/VvInputPasswordAction.d.ts +56 -0
  54. package/dist/components/VvInputText/VvInputStepAction.d.ts +37 -0
  55. package/dist/components/VvInputText/VvInputText.es.js +586 -577
  56. package/dist/components/VvInputText/VvInputText.umd.js +1 -2
  57. package/dist/components/VvInputText/VvInputText.vue.d.ts +187 -275
  58. package/dist/components/VvInputText/VvInputTextActions.d.ts +1 -1
  59. package/dist/components/VvInputText/index.d.ts +175 -0
  60. package/dist/components/VvNativeSelect/VvNativeSelect.es.js +299 -347
  61. package/dist/components/VvNativeSelect/VvNativeSelect.umd.js +1 -2
  62. package/dist/components/VvNativeSelect/VvNativeSelect.vue.d.ts +78 -190
  63. package/dist/components/VvNativeSelect/{VvNativeSelect.d.ts → index.d.ts} +35 -8
  64. package/dist/components/VvProgress/VvProgress.es.js +45 -162
  65. package/dist/components/VvProgress/VvProgress.umd.js +1 -1
  66. package/dist/components/VvProgress/VvProgress.vue.d.ts +17 -103
  67. package/dist/components/VvProgress/{VvProgress.d.ts → index.d.ts} +1 -7
  68. package/dist/components/VvRadio/VvRadio.es.js +292 -267
  69. package/dist/components/VvRadio/VvRadio.umd.js +1 -1
  70. package/dist/components/VvRadio/VvRadio.vue.d.ts +52 -122
  71. package/dist/components/VvRadio/index.d.ts +64 -0
  72. package/dist/components/VvRadioGroup/VvRadioGroup.es.js +342 -380
  73. package/dist/components/VvRadioGroup/VvRadioGroup.umd.js +1 -2
  74. package/dist/components/VvRadioGroup/VvRadioGroup.vue.d.ts +58 -213
  75. package/dist/components/VvRadioGroup/{VvRadioGroup.d.ts → index.d.ts} +2 -2
  76. package/dist/components/VvSelect/VvSelect.es.js +556 -510
  77. package/dist/components/VvSelect/VvSelect.umd.js +1 -2
  78. package/dist/components/VvSelect/VvSelect.vue.d.ts +75 -240
  79. package/dist/components/VvSelect/{VvSelect.d.ts → index.d.ts} +12 -5
  80. package/dist/components/VvTextarea/VvTextarea.es.js +372 -481
  81. package/dist/components/VvTextarea/VvTextarea.umd.js +1 -2
  82. package/dist/components/VvTextarea/VvTextarea.vue.d.ts +103 -299
  83. package/dist/components/VvTextarea/{VvTextarea.d.ts → index.d.ts} +36 -13
  84. package/dist/components/common/HintSlot.d.ts +10 -4
  85. package/dist/components/index.d.ts +13 -6
  86. package/dist/components/index.es.js +2070 -895
  87. package/dist/components/index.umd.js +1 -2
  88. package/dist/composables/debouncedInput/useDebouncedInput.d.ts +2 -2
  89. package/dist/composables/focus/useComponentFocus.d.ts +3 -3
  90. package/dist/composables/group/types/IAccordionGroupState.d.ts +1 -3
  91. package/dist/composables/group/types/IGroupState.d.ts +2 -2
  92. package/dist/composables/group/useInjectedGroupState.d.ts +4 -4
  93. package/dist/composables/group/useProvideGroupState.d.ts +1 -1
  94. package/dist/composables/icons/useComponentIcons.d.ts +2 -2
  95. package/dist/composables/textLimit/useTextLimit.d.ts +0 -3
  96. package/dist/constants.d.ts +4 -4
  97. package/dist/icons.d.ts +1881 -0
  98. package/dist/icons.es.js +4 -6
  99. package/dist/icons.umd.js +1 -1
  100. package/dist/index.es.js +2113 -932
  101. package/dist/index.umd.js +1 -2
  102. package/dist/props/index.d.ts +9 -3
  103. package/dist/resolvers/unplugin.d.ts +27 -0
  104. package/dist/resolvers/unplugin.es.js +40 -0
  105. package/dist/resolvers/unplugin.umd.js +1 -0
  106. package/dist/stories/Accordion/Accordion.test.d.ts +4 -0
  107. package/dist/stories/Badge/Badge.test.d.ts +2 -0
  108. package/dist/stories/Breadcrumb/Breadcrumb.test.d.ts +2 -0
  109. package/dist/stories/Button/Button.test.d.ts +3 -8
  110. package/dist/stories/Card/Card.test.d.ts +3 -0
  111. package/dist/stories/Dialog/Dialog.test.d.ts +2 -0
  112. package/dist/stories/Dropdown/Dropdown.test.d.ts +2 -0
  113. package/dist/stories/Icon/IconList.vue.d.ts +1 -43
  114. package/dist/stories/InputText/InputText.test.d.ts +6 -0
  115. package/dist/stories/Radio/Radio.test.d.ts +3 -0
  116. package/dist/stories/RadioGroup/RadioGroup.test.d.ts +8 -0
  117. package/dist/stories/Select/Select.test.d.ts +3 -0
  118. package/dist/stories/Textarea/Textarea.test.d.ts +8 -0
  119. package/dist/stories/utils.d.ts +1 -3
  120. package/dist/test/sleep.d.ts +1 -0
  121. package/dist/utils/ObjectUtilities.d.ts +82 -95
  122. package/env.d.ts +1 -0
  123. package/package.json +102 -68
  124. package/src/Volver.ts +32 -3
  125. package/src/assets/icons/detailed.json +1 -1
  126. package/src/assets/icons/normal.json +1 -1
  127. package/src/assets/icons/simple.json +1 -1
  128. package/src/components/VvAccordion/VvAccordion.vue +80 -76
  129. package/src/components/VvAccordion/index.ts +69 -0
  130. package/src/components/VvAccordionGroup/VvAccordionGroup.vue +77 -41
  131. package/src/components/VvAccordionGroup/{VvAccordionGroup.ts → index.ts} +8 -12
  132. package/src/components/VvBadge/VvBadge.vue +14 -10
  133. package/src/components/VvBadge/{VvBadge.ts → index.ts} +0 -0
  134. package/src/components/VvBreadcrumb/VvBreadcrumb.vue +18 -19
  135. package/src/components/VvBreadcrumb/{VvBreadcrumb.ts → index.ts} +1 -1
  136. package/src/components/VvButton/VvButton.vue +123 -113
  137. package/src/components/VvButton/index.ts +147 -0
  138. package/src/components/VvButtonGroup/VvButtonGroup.vue +21 -17
  139. package/src/components/VvButtonGroup/{VvButtonGroup.ts → index.ts} +0 -0
  140. package/src/components/VvCard/VvCard.vue +20 -22
  141. package/src/components/VvCard/{VvCard.ts → index.ts} +0 -0
  142. package/src/components/VvCheckbox/VvCheckbox.vue +124 -0
  143. package/src/components/VvCheckbox/index.ts +94 -0
  144. package/src/components/{VvCheckGroup/VvCheckGroup.vue → VvCheckboxGroup/VvCheckboxGroup.vue} +49 -54
  145. package/src/components/{VvCheckGroup/VvCheckGroup.ts → VvCheckboxGroup/index.ts} +9 -9
  146. package/src/components/VvDialog/VvDialog.vue +47 -50
  147. package/src/components/VvDialog/index.ts +10 -0
  148. package/src/components/VvDropdown/VvDropdown.vue +61 -40
  149. package/src/components/VvDropdown/{VvDropdown.ts → index.ts} +8 -4
  150. package/src/components/VvIcon/VvIcon.vue +31 -25
  151. package/src/components/VvIcon/{VvIcon.ts → index.ts} +9 -0
  152. package/src/components/VvInputText/VvInputClearAction.ts +53 -0
  153. package/src/components/VvInputText/VvInputPasswordAction.ts +70 -0
  154. package/src/components/VvInputText/VvInputStepAction.ts +49 -0
  155. package/src/components/VvInputText/VvInputText.vue +168 -170
  156. package/src/components/VvInputText/VvInputTextActions.ts +54 -108
  157. package/src/components/VvInputText/index.ts +135 -0
  158. package/src/components/VvNativeSelect/VvNativeSelect.vue +130 -68
  159. package/src/components/VvNativeSelect/{VvNativeSelect.ts → index.ts} +26 -7
  160. package/src/components/VvProgress/VvProgress.vue +25 -26
  161. package/src/components/VvProgress/{VvProgress.ts → index.ts} +4 -7
  162. package/src/components/VvRadio/VvRadio.vue +81 -108
  163. package/src/components/VvRadio/index.ts +78 -0
  164. package/src/components/VvRadioGroup/VvRadioGroup.vue +45 -45
  165. package/src/components/VvRadioGroup/{VvRadioGroup.ts → index.ts} +1 -1
  166. package/src/components/VvSelect/VvSelect.vue +90 -69
  167. package/src/components/VvSelect/{VvSelect.ts → index.ts} +12 -5
  168. package/src/components/VvTextarea/VvTextarea.vue +121 -128
  169. package/src/components/VvTextarea/{VvTextarea.ts → index.ts} +31 -11
  170. package/src/components/common/HintSlot.ts +157 -136
  171. package/src/components/index.ts +13 -6
  172. package/src/composables/debouncedInput/useDebouncedInput.ts +21 -15
  173. package/src/composables/focus/useComponentFocus.ts +6 -8
  174. package/src/composables/group/types/IAccordionGroupState.ts +1 -3
  175. package/src/composables/group/types/IGroupState.ts +2 -2
  176. package/src/composables/group/useInjectedGroupState.ts +20 -30
  177. package/src/composables/group/useProvideGroupState.ts +1 -2
  178. package/src/composables/icons/useComponentIcons.ts +2 -3
  179. package/src/composables/options/useOptions.ts +3 -0
  180. package/src/composables/textLimit/useTextLimit.ts +1 -4
  181. package/src/composables/useModifiers.ts +13 -15
  182. package/src/constants.ts +5 -7
  183. package/src/directives/{.README → .gitkeep} +0 -0
  184. package/src/icons.ts +7 -0
  185. package/src/index.ts +0 -1
  186. package/src/props/index.ts +7 -1
  187. package/src/resolvers/unplugin.ts +103 -0
  188. package/src/shims.d.ts +11 -0
  189. package/src/stories/Accordion/Accordion.stories.mdx +10 -9
  190. package/src/stories/Accordion/Accordion.test.ts +37 -0
  191. package/src/stories/Accordion/AccordionSlots.stories.mdx +40 -25
  192. package/src/stories/AccordionGroup/AccordionGroup.stories.mdx +10 -16
  193. package/src/stories/AccordionGroup/{accordionGroupTest.js → AccordionGroup.test.js} +15 -17
  194. package/src/stories/AccordionGroup/AccordionGroupCollapse.stories.mdx +38 -0
  195. package/src/stories/AccordionGroup/{AccordionItems.stories.mdx → AccordionGroupItems.stories.mdx} +7 -13
  196. package/src/stories/Badge/Badge.stories.mdx +8 -8
  197. package/src/stories/Badge/Badge.test.ts +16 -0
  198. package/src/stories/Badge/BadgeColor.stories.mdx +6 -7
  199. package/src/stories/Badge/BadgeDot.stories.mdx +4 -3
  200. package/src/stories/Badge/BadgeModifiers.stories.mdx +7 -6
  201. package/src/stories/Breadcrumb/Breadcrumb.stories.mdx +15 -7
  202. package/src/stories/Breadcrumb/Breadcrumb.test.ts +49 -0
  203. package/src/stories/Breadcrumb/BreadcrumbMultiline.stories.mdx +15 -7
  204. package/src/stories/Button/Button.stories.mdx +16 -17
  205. package/src/stories/Button/Button.test.ts +8 -12
  206. package/src/stories/Button/ButtonActive.stories.mdx +2 -1
  207. package/src/stories/Button/ButtonBadge.stories.mdx +2 -2
  208. package/src/stories/Button/ButtonDisabled.stories.mdx +1 -1
  209. package/src/stories/Button/ButtonIcon.stories.mdx +6 -3
  210. package/src/stories/Button/ButtonIconPosition.stories.mdx +1 -1
  211. package/src/stories/Button/ButtonLink.stories.mdx +1 -19
  212. package/src/stories/Button/ButtonLoading.stories.mdx +4 -4
  213. package/src/stories/Button/ButtonModifiers.stories.mdx +1 -1
  214. package/src/stories/Button/ButtonPressed.stories.mdx +31 -0
  215. package/src/stories/Button/ButtonSlots.stories.mdx +1 -1
  216. package/src/stories/ButtonGroup/ButtonGroup.stories.mdx +5 -6
  217. package/src/stories/ButtonGroup/{ButtonGroupTest.js → ButtonGroup.test.js} +6 -28
  218. package/src/stories/ButtonGroup/ButtonGroupAction.stories.mdx +5 -6
  219. package/src/stories/ButtonGroup/ButtonGroupActionQuiet.stories.mdx +3 -4
  220. package/src/stories/ButtonGroup/ButtonGroupBlock.stories.mdx +3 -4
  221. package/src/stories/ButtonGroup/ButtonGroupCompact.stories.mdx +3 -4
  222. package/src/stories/ButtonGroup/ButtonGroupRounded.stories.mdx +3 -4
  223. package/src/stories/ButtonGroup/ButtonGroupToggle.stories.mdx +11 -12
  224. package/src/stories/ButtonGroup/ButtonGroupVertical.stories.mdx +3 -4
  225. package/src/stories/Card/Card.stories.mdx +7 -5
  226. package/src/stories/Card/Card.test.ts +26 -0
  227. package/src/stories/Card/CardSlots.stories.mdx +5 -5
  228. package/src/stories/Card/CardVariant.stories.mdx +5 -4
  229. package/src/stories/Checkbox/Checkbox.stories.mdx +51 -0
  230. package/src/stories/Checkbox/Checkbox.test.js +115 -0
  231. package/src/stories/Checkbox/CheckboxBinary.stories.mdx +76 -0
  232. package/src/stories/{Check/CheckDisabled.stories.mdx → Checkbox/CheckboxDisabled.stories.mdx} +7 -7
  233. package/src/stories/Checkbox/CheckboxError.stories.mdx +43 -0
  234. package/src/stories/Checkbox/CheckboxHintLabel.stories.mdx +35 -0
  235. package/src/stories/{Check/CheckReadonly.stories.mdx → Checkbox/CheckboxReadonly.stories.mdx} +6 -8
  236. package/src/stories/Checkbox/CheckboxSlots.stories.mdx +69 -0
  237. package/src/stories/{Check/CheckSwitch.stories.mdx → Checkbox/CheckboxSwitch.stories.mdx} +8 -8
  238. package/src/stories/CheckboxGroup/CheckboxGroup.stories.mdx +69 -0
  239. package/src/stories/CheckboxGroup/CheckboxGroupDisabled.stories.mdx +26 -0
  240. package/src/stories/CheckboxGroup/CheckboxGroupError.stories.mdx +28 -0
  241. package/src/stories/CheckboxGroup/CheckboxGroupHintLabel.stories.mdx +27 -0
  242. package/src/stories/CheckboxGroup/CheckboxGroupLabel.stories.mdx +26 -0
  243. package/src/stories/{CheckGroup/CheckGroupOptionLabel.stories.mdx → CheckboxGroup/CheckboxGroupOptionLabel.stories.mdx} +14 -11
  244. package/src/stories/{CheckGroup/CheckGroupOptionValue.stories.mdx → CheckboxGroup/CheckboxGroupOptionValue.stories.mdx} +13 -10
  245. package/src/stories/{CheckGroup/CheckGroupOptions.stories.mdx → CheckboxGroup/CheckboxGroupOptions.stories.mdx} +8 -8
  246. package/src/stories/CheckboxGroup/CheckboxGroupReadonly.stories.mdx +26 -0
  247. package/src/stories/CheckboxGroup/CheckboxGroupSlots.stories.mdx +152 -0
  248. package/src/stories/CheckboxGroup/CheckboxGroupValid.stories.mdx +28 -0
  249. package/src/stories/CheckboxGroup/CheckboxGroupVertical.stories.mdx +26 -0
  250. package/src/stories/Dialog/Dialog.stories.mdx +5 -5
  251. package/src/stories/Dialog/Dialog.test.ts +26 -0
  252. package/src/stories/Dialog/DialogAutoClose.stories.mdx +1 -1
  253. package/src/stories/Dialog/DialogSize.stories.mdx +1 -1
  254. package/src/stories/Dropdown/Dropdown.stories.mdx +11 -7
  255. package/src/stories/Dropdown/Dropdown.test.ts +80 -0
  256. package/src/stories/Dropdown/DropdownDisabled.stories.mdx +9 -2
  257. package/src/stories/Dropdown/DropdownLabelNoResults.stories.mdx +2 -2
  258. package/src/stories/Dropdown/DropdownMaxValues.stories.mdx +4 -2
  259. package/src/stories/Dropdown/DropdownMultiple.stories.mdx +4 -2
  260. package/src/stories/Dropdown/DropdownOptions.stories.mdx +4 -4
  261. package/src/stories/Dropdown/DropdownUseObject.stories.mdx +4 -2
  262. package/src/stories/Icon/Icon.stories.mdx +8 -8
  263. package/src/stories/Icon/{IconTest.js → Icon.test.js} +2 -5
  264. package/src/stories/Icon/IconList.vue +5 -6
  265. package/src/stories/Icon/IconPrefix.stories.mdx +2 -2
  266. package/src/stories/Icon/IconRemote.stories.mdx +2 -2
  267. package/src/stories/Icon/IconsList.stories.mdx +2 -18
  268. package/src/stories/InputText/InputText.stories.mdx +25 -19
  269. package/src/stories/InputText/InputText.test.ts +156 -0
  270. package/src/stories/InputText/InputTextAutocomplete.stories.mdx +9 -2
  271. package/src/stories/InputText/InputTextAutofocus.stories.mdx +6 -3
  272. package/src/stories/InputText/InputTextDisabled.stories.mdx +10 -2
  273. package/src/stories/InputText/InputTextError.stories.mdx +10 -2
  274. package/src/stories/InputText/InputTextFloating.stories.mdx +10 -3
  275. package/src/stories/InputText/InputTextHintLabel.stories.mdx +10 -2
  276. package/src/stories/InputText/InputTextIcon.stories.mdx +6 -2
  277. package/src/stories/InputText/InputTextIconPosition.stories.mdx +10 -3
  278. package/src/stories/InputText/InputTextLabel.stories.mdx +8 -2
  279. package/src/stories/InputText/InputTextLoading.stories.mdx +10 -2
  280. package/src/stories/InputText/InputTextMax.stories.mdx +10 -3
  281. package/src/stories/InputText/InputTextMaxLength.stories.mdx +22 -5
  282. package/src/stories/InputText/InputTextMin.stories.mdx +10 -3
  283. package/src/stories/InputText/InputTextMinLength.stories.mdx +9 -2
  284. package/src/stories/InputText/InputTextPlaceholder.stories.mdx +8 -2
  285. package/src/stories/InputText/InputTextReadonly.stories.mdx +6 -2
  286. package/src/stories/InputText/InputTextSlots.stories.mdx +4 -5
  287. package/src/stories/InputText/InputTextStep.stories.mdx +9 -3
  288. package/src/stories/InputText/InputTextType.stories.mdx +110 -13
  289. package/src/stories/InputText/InputTextValid.stories.mdx +10 -2
  290. package/src/stories/NativeSelect/NativeSelect.stories.mdx +15 -11
  291. package/src/stories/NativeSelect/NativeSelect.test.js +151 -0
  292. package/src/stories/NativeSelect/NativeSelectDisabled.stories.mdx +6 -7
  293. package/src/stories/NativeSelect/NativeSelectError.stories.mdx +7 -3
  294. package/src/stories/NativeSelect/NativeSelectHintLabel.stories.mdx +7 -3
  295. package/src/stories/NativeSelect/NativeSelectIconLeftRight.stories.mdx +14 -12
  296. package/src/stories/NativeSelect/NativeSelectLoading.stories.mdx +7 -3
  297. package/src/stories/NativeSelect/NativeSelectOptions.stories.mdx +44 -38
  298. package/src/stories/NativeSelect/NativeSelectReadonly.stories.mdx +19 -11
  299. package/src/stories/NativeSelect/NativeSelectUseObject.stories.mdx +26 -30
  300. package/src/stories/NativeSelect/NativeSelectValid.stories.mdx +7 -3
  301. package/src/stories/NativeSelect/NativeSelectValueKey.stories.mdx +30 -30
  302. package/src/stories/Progress/Progress.stories.mdx +8 -11
  303. package/src/stories/Progress/{ProgressTest.js → Progress.test.js} +4 -10
  304. package/src/stories/Progress/ProgressDeterminate.stories.mdx +3 -6
  305. package/src/stories/Radio/Radio.stories.mdx +11 -17
  306. package/src/stories/Radio/Radio.test.ts +52 -0
  307. package/src/stories/Radio/RadioDisabled.stories.mdx +4 -7
  308. package/src/stories/Radio/RadioError.stories.mdx +8 -28
  309. package/src/stories/Radio/RadioHintLabel.stories.mdx +6 -7
  310. package/src/stories/Radio/RadioSlots.stories.mdx +21 -7
  311. package/src/stories/RadioGroup/RadioGroup.stories.mdx +20 -27
  312. package/src/stories/RadioGroup/RadioGroup.test.ts +139 -0
  313. package/src/stories/RadioGroup/RadioGroupDisabled.stories.mdx +6 -8
  314. package/src/stories/RadioGroup/RadioGroupError.stories.mdx +9 -11
  315. package/src/stories/RadioGroup/RadioGroupHintLabel.stories.mdx +8 -10
  316. package/src/stories/RadioGroup/RadioGroupLabel.stories.mdx +6 -8
  317. package/src/stories/RadioGroup/RadioGroupOptionLabel.stories.mdx +11 -13
  318. package/src/stories/RadioGroup/RadioGroupOptionValue.stories.mdx +9 -11
  319. package/src/stories/RadioGroup/RadioGroupOptions.stories.mdx +7 -9
  320. package/src/stories/RadioGroup/RadioGroupReadonly.stories.mdx +6 -8
  321. package/src/stories/RadioGroup/RadioGroupSlots.stories.mdx +39 -62
  322. package/src/stories/RadioGroup/RadioGroupValid.stories.mdx +9 -11
  323. package/src/stories/RadioGroup/RadioGroupVertical.stories.mdx +6 -8
  324. package/src/stories/Select/Select.stories.mdx +32 -29
  325. package/src/stories/Select/Select.test.ts +104 -0
  326. package/src/stories/Select/SelectDisabled.stories.mdx +3 -3
  327. package/src/stories/Select/SelectMaxValues.stories.mdx +3 -3
  328. package/src/stories/Select/SelectMultiple.stories.mdx +5 -6
  329. package/src/stories/Select/SelectNative.stories.mdx +6 -8
  330. package/src/stories/Select/SelectOptions.stories.mdx +4 -4
  331. package/src/stories/Select/SelectSearchable.stories.mdx +13 -12
  332. package/src/stories/Select/SelectSeparator.stories.mdx +3 -3
  333. package/src/stories/Select/SelectUseObject.stories.mdx +3 -3
  334. package/src/stories/Textarea/Textarea.stories.mdx +6 -10
  335. package/src/stories/Textarea/Textarea.test.ts +204 -0
  336. package/src/stories/Textarea/TextareaAutoclear.stories.mdx +3 -2
  337. package/src/stories/Textarea/TextareaAutocomplete.stories.mdx +3 -2
  338. package/src/stories/Textarea/TextareaAutofocus.stories.mdx +3 -2
  339. package/src/stories/Textarea/TextareaDebounce.stories.mdx +7 -6
  340. package/src/stories/Textarea/TextareaDisabled.stories.mdx +9 -3
  341. package/src/stories/Textarea/TextareaError.stories.mdx +7 -2
  342. package/src/stories/Textarea/TextareaErrorLabel.stories.mdx +12 -2
  343. package/src/stories/Textarea/TextareaFloating.stories.mdx +7 -2
  344. package/src/stories/Textarea/TextareaHintLabel.stories.mdx +7 -2
  345. package/src/stories/Textarea/TextareaIcon.stories.mdx +3 -2
  346. package/src/stories/Textarea/TextareaIconPosition.stories.mdx +4 -2
  347. package/src/stories/Textarea/TextareaId.stories.mdx +3 -2
  348. package/src/stories/Textarea/TextareaLabel.stories.mdx +3 -2
  349. package/src/stories/Textarea/TextareaLimit.stories.mdx +5 -2
  350. package/src/stories/Textarea/TextareaLoading.stories.mdx +7 -2
  351. package/src/stories/Textarea/TextareaLoadingLabel.stories.mdx +9 -3
  352. package/src/stories/Textarea/TextareaMaxLength.stories.mdx +5 -4
  353. package/src/stories/Textarea/TextareaMinLength.stories.mdx +3 -2
  354. package/src/stories/Textarea/TextareaModifiers.stories.mdx +10 -2
  355. package/src/stories/Textarea/TextareaName.stories.mdx +3 -2
  356. package/src/stories/Textarea/TextareaPlaceholder.stories.mdx +4 -3
  357. package/src/stories/Textarea/TextareaReadonly.stories.mdx +8 -3
  358. package/src/stories/Textarea/TextareaRequired.stories.mdx +3 -2
  359. package/src/stories/Textarea/TextareaResizable.stories.mdx +7 -2
  360. package/src/stories/Textarea/TextareaRowsCols.stories.mdx +4 -2
  361. package/src/stories/Textarea/TextareaSlots.stories.mdx +7 -8
  362. package/src/stories/Textarea/TextareaValid.stories.mdx +7 -1
  363. package/src/stories/Textarea/TextareaValidLabel.stories.mdx +14 -4
  364. package/src/stories/utils.ts +1 -1
  365. package/src/stories/volver-ui-vue.stories.mdx +1 -1
  366. package/src/test/expect.ts +3 -1
  367. package/src/test/sleep.ts +2 -0
  368. package/src/test/types.d.ts +14 -1
  369. package/src/types/{.README → .gitkeep} +0 -0
  370. package/src/utils/ObjectUtilities.ts +247 -241
  371. package/dist/components/VvAccordion/VvAccordion.d.ts +0 -32
  372. package/dist/components/VvAccordion/useAccordionProps.d.ts +0 -16
  373. package/dist/components/VvButton/useButtonGroupProps.d.ts +0 -18
  374. package/dist/components/VvCheck/VvCheck.d.ts +0 -47
  375. package/dist/components/VvCheck/VvCheck.es.js +0 -318
  376. package/dist/components/VvCheck/VvCheck.umd.js +0 -1
  377. package/dist/components/VvCheck/VvCheck.vue.d.ts +0 -165
  378. package/dist/components/VvCheck/useCheckProps.d.ts +0 -16
  379. package/dist/components/VvCheckGroup/VvCheckGroup.es.js +0 -451
  380. package/dist/components/VvCheckGroup/VvCheckGroup.umd.js +0 -2
  381. package/dist/components/VvCheckGroup/VvCheckGroup.vue.d.ts +0 -272
  382. package/dist/components/VvDialog/constants.d.ts +0 -5
  383. package/dist/components/VvInputText/VvInputText.d.ts +0 -73
  384. package/dist/components/VvInputText/constants.d.ts +0 -55
  385. package/dist/components/VvRadio/VvRadio.d.ts +0 -22
  386. package/dist/components/VvRadio/useRadioProps.d.ts +0 -15
  387. package/dist/components/VvTextarea/constants.d.ts +0 -19
  388. package/dist/stories/RadioGroup/RadioOption.test.d.ts +0 -4
  389. package/dist/stories/RadioGroup/RadioProperty.test.d.ts +0 -12
  390. package/dist/stories/RadioGroup/RadioSlots.test.d.ts +0 -6
  391. package/src/assets/icons/index.js +0 -7
  392. package/src/components/VvAccordion/VvAccordion.ts +0 -34
  393. package/src/components/VvAccordion/useAccordionProps.ts +0 -45
  394. package/src/components/VvButton/VvButton.ts +0 -87
  395. package/src/components/VvButton/useButtonGroupProps.ts +0 -43
  396. package/src/components/VvCheck/VvCheck.ts +0 -48
  397. package/src/components/VvCheck/VvCheck.vue +0 -147
  398. package/src/components/VvCheck/useCheckProps.ts +0 -41
  399. package/src/components/VvDialog/VvDialog.ts +0 -17
  400. package/src/components/VvDialog/constants.ts +0 -5
  401. package/src/components/VvInputText/VvInputText.ts +0 -66
  402. package/src/components/VvInputText/constants.ts +0 -34
  403. package/src/components/VvRadio/VvRadio.ts +0 -25
  404. package/src/components/VvRadio/useRadioProps.ts +0 -40
  405. package/src/components/VvTextarea/constants.ts +0 -14
  406. package/src/stories/Accordion/AccordionBordered.stories.mdx +0 -26
  407. package/src/stories/Accordion/AccordionIconRight.stories.mdx +0 -32
  408. package/src/stories/Accordion/accordionTest.js +0 -36
  409. package/src/stories/AccordionGroup/Accordion.stories.mdx +0 -42
  410. package/src/stories/Badge/BadgeTest.js +0 -21
  411. package/src/stories/Button/ButtonSelected.stories.mdx +0 -30
  412. package/src/stories/Check/Check.stories.mdx +0 -62
  413. package/src/stories/Check/CheckBinary.stories.mdx +0 -75
  414. package/src/stories/Check/CheckError.stories.mdx +0 -64
  415. package/src/stories/Check/CheckErrorTests.js +0 -74
  416. package/src/stories/Check/CheckHintLabel.stories.mdx +0 -30
  417. package/src/stories/Check/CheckPropertyTest.js +0 -102
  418. package/src/stories/Check/CheckSlots.stories.mdx +0 -51
  419. package/src/stories/CheckGroup/CheckGroup.stories.mdx +0 -69
  420. package/src/stories/CheckGroup/CheckGroupDisabled.stories.mdx +0 -26
  421. package/src/stories/CheckGroup/CheckGroupError.stories.mdx +0 -28
  422. package/src/stories/CheckGroup/CheckGroupHintLabel.stories.mdx +0 -27
  423. package/src/stories/CheckGroup/CheckGroupLabel.stories.mdx +0 -26
  424. package/src/stories/CheckGroup/CheckGroupReadonly.stories.mdx +0 -26
  425. package/src/stories/CheckGroup/CheckGroupSlots.stories.mdx +0 -152
  426. package/src/stories/CheckGroup/CheckGroupValid.stories.mdx +0 -28
  427. package/src/stories/CheckGroup/CheckGroupVertical.stories.mdx +0 -26
  428. package/src/stories/RadioGroup/RadioOption.test.ts +0 -45
  429. package/src/stories/RadioGroup/RadioProperty.test.ts +0 -87
  430. package/src/stories/RadioGroup/RadioSlots.test.ts +0 -29
  431. 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>