@volverjs/ui-vue 0.0.1-beta.11 → 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 (435) 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 +57 -13
  13. package/dist/components/VvBadge/VvBadge.umd.js +1 -1
  14. package/dist/components/VvBadge/VvBadge.vue.d.ts +13 -54
  15. package/dist/components/VvBadge/{VvBadge.d.ts → index.d.ts} +1 -1
  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 +25 -105
  19. package/dist/components/VvBreadcrumb/{VvBreadcrumb.d.ts → index.d.ts} +2 -2
  20. package/dist/components/VvButton/VvButton.es.js +304 -333
  21. package/dist/components/VvButton/VvButton.umd.js +1 -1
  22. package/dist/components/VvButton/VvButton.vue.d.ts +92 -199
  23. package/dist/components/VvButton/{VvButton.d.ts → index.d.ts} +44 -38
  24. package/dist/components/VvButtonGroup/VvButtonGroup.es.js +58 -181
  25. package/dist/components/VvButtonGroup/VvButtonGroup.umd.js +1 -1
  26. package/dist/components/VvButtonGroup/VvButtonGroup.vue.d.ts +26 -181
  27. package/dist/components/VvButtonGroup/{VvButtonGroup.d.ts → index.d.ts} +2 -26
  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 +35 -137
  47. package/dist/components/VvDropdown/{VvDropdown.d.ts → index.d.ts} +8 -4
  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 +188 -276
  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 +18 -104
  67. package/dist/components/VvProgress/{VvProgress.d.ts → index.d.ts} +2 -8
  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 +602 -368
  77. package/dist/components/VvSelect/VvSelect.umd.js +1 -2
  78. package/dist/components/VvSelect/VvSelect.vue.d.ts +78 -236
  79. package/dist/components/VvSelect/{VvSelect.d.ts → index.d.ts} +17 -6
  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 +104 -300
  83. package/dist/components/VvTextarea/{VvTextarea.d.ts → index.d.ts} +37 -14
  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 +2091 -947
  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/IButtonGroupState.d.ts +4 -0
  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 +2106 -957
  102. package/dist/index.umd.js +1 -2
  103. package/dist/props/index.d.ts +11 -4
  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 +102 -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 +16 -7
  134. package/src/components/VvBadge/index.ts +6 -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 +125 -124
  138. package/src/components/VvButton/index.ts +147 -0
  139. package/src/components/VvButtonGroup/VvButtonGroup.vue +26 -33
  140. package/src/components/VvButtonGroup/{VvButtonGroup.ts → index.ts} +4 -17
  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 +91 -64
  168. package/src/components/VvSelect/{VvSelect.ts → index.ts} +16 -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/IButtonGroupState.ts +4 -0
  177. package/src/composables/group/types/IGroupState.ts +2 -2
  178. package/src/composables/group/useInjectedGroupState.ts +20 -30
  179. package/src/composables/group/useProvideGroupState.ts +1 -2
  180. package/src/composables/icons/useComponentIcons.ts +2 -3
  181. package/src/composables/options/useOptions.ts +3 -0
  182. package/src/composables/textLimit/useTextLimit.ts +1 -4
  183. package/src/composables/useModifiers.ts +13 -15
  184. package/src/constants.ts +5 -7
  185. package/src/directives/{.README → .gitkeep} +0 -0
  186. package/src/icons.ts +7 -0
  187. package/src/index.ts +0 -1
  188. package/src/props/index.ts +10 -2
  189. package/src/resolvers/unplugin.ts +103 -0
  190. package/src/shims.d.ts +11 -0
  191. package/src/stories/Accordion/Accordion.stories.mdx +10 -9
  192. package/src/stories/Accordion/Accordion.test.ts +37 -0
  193. package/src/stories/Accordion/AccordionSlots.stories.mdx +40 -25
  194. package/src/stories/AccordionGroup/AccordionGroup.stories.mdx +10 -16
  195. package/src/stories/AccordionGroup/{accordionGroupTest.js → AccordionGroup.test.js} +15 -17
  196. package/src/stories/AccordionGroup/AccordionGroupCollapse.stories.mdx +38 -0
  197. package/src/stories/AccordionGroup/{AccordionItems.stories.mdx → AccordionGroupItems.stories.mdx} +7 -13
  198. package/src/stories/Badge/Badge.stories.mdx +8 -8
  199. package/src/stories/Badge/Badge.test.ts +16 -0
  200. package/src/stories/Badge/BadgeColor.stories.mdx +10 -11
  201. package/src/stories/Badge/BadgeDot.stories.mdx +4 -3
  202. package/src/stories/Badge/BadgeModifiers.stories.mdx +66 -0
  203. package/src/stories/Breadcrumb/Breadcrumb.stories.mdx +15 -7
  204. package/src/stories/Breadcrumb/Breadcrumb.test.ts +49 -0
  205. package/src/stories/Breadcrumb/BreadcrumbMultiline.stories.mdx +15 -7
  206. package/src/stories/Button/Button.stories.mdx +16 -17
  207. package/src/stories/Button/Button.test.ts +8 -12
  208. package/src/stories/Button/ButtonActive.stories.mdx +28 -0
  209. package/src/stories/Button/ButtonBadge.stories.mdx +2 -2
  210. package/src/stories/Button/ButtonDisabled.stories.mdx +28 -0
  211. package/src/stories/Button/ButtonIcon.stories.mdx +6 -3
  212. package/src/stories/Button/ButtonIconPosition.stories.mdx +1 -2
  213. package/src/stories/Button/ButtonLink.stories.mdx +1 -19
  214. package/src/stories/Button/ButtonLoading.stories.mdx +4 -4
  215. package/src/stories/Button/ButtonModifiers.stories.mdx +104 -47
  216. package/src/stories/Button/ButtonPressed.stories.mdx +31 -0
  217. package/src/stories/Button/ButtonSlots.stories.mdx +1 -1
  218. package/src/stories/ButtonGroup/ButtonGroup.stories.mdx +5 -6
  219. package/src/stories/ButtonGroup/{ButtonGroupTest.js → ButtonGroup.test.js} +6 -28
  220. package/src/stories/ButtonGroup/ButtonGroupAction.stories.mdx +6 -7
  221. package/src/stories/ButtonGroup/ButtonGroupActionQuiet.stories.mdx +5 -6
  222. package/src/stories/ButtonGroup/ButtonGroupBlock.stories.mdx +4 -5
  223. package/src/stories/ButtonGroup/ButtonGroupCompact.stories.mdx +3 -4
  224. package/src/stories/ButtonGroup/ButtonGroupRounded.stories.mdx +4 -5
  225. package/src/stories/ButtonGroup/ButtonGroupToggle.stories.mdx +11 -12
  226. package/src/stories/ButtonGroup/ButtonGroupVertical.stories.mdx +3 -4
  227. package/src/stories/Card/Card.stories.mdx +7 -5
  228. package/src/stories/Card/Card.test.ts +26 -0
  229. package/src/stories/Card/CardSlots.stories.mdx +5 -5
  230. package/src/stories/Card/CardVariant.stories.mdx +5 -4
  231. package/src/stories/Checkbox/Checkbox.stories.mdx +51 -0
  232. package/src/stories/Checkbox/Checkbox.test.js +115 -0
  233. package/src/stories/Checkbox/CheckboxBinary.stories.mdx +76 -0
  234. package/src/stories/{Check/CheckDisabled.stories.mdx → Checkbox/CheckboxDisabled.stories.mdx} +7 -7
  235. package/src/stories/Checkbox/CheckboxError.stories.mdx +43 -0
  236. package/src/stories/Checkbox/CheckboxHintLabel.stories.mdx +35 -0
  237. package/src/stories/{Check/CheckReadonly.stories.mdx → Checkbox/CheckboxReadonly.stories.mdx} +6 -8
  238. package/src/stories/Checkbox/CheckboxSlots.stories.mdx +69 -0
  239. package/src/stories/{Check/CheckSwitch.stories.mdx → Checkbox/CheckboxSwitch.stories.mdx} +8 -8
  240. package/src/stories/CheckboxGroup/CheckboxGroup.stories.mdx +69 -0
  241. package/src/stories/CheckboxGroup/CheckboxGroupDisabled.stories.mdx +26 -0
  242. package/src/stories/CheckboxGroup/CheckboxGroupError.stories.mdx +28 -0
  243. package/src/stories/CheckboxGroup/CheckboxGroupHintLabel.stories.mdx +27 -0
  244. package/src/stories/CheckboxGroup/CheckboxGroupLabel.stories.mdx +26 -0
  245. package/src/stories/{CheckGroup/CheckGroupOptionLabel.stories.mdx → CheckboxGroup/CheckboxGroupOptionLabel.stories.mdx} +14 -11
  246. package/src/stories/{CheckGroup/CheckGroupOptionValue.stories.mdx → CheckboxGroup/CheckboxGroupOptionValue.stories.mdx} +13 -10
  247. package/src/stories/{CheckGroup/CheckGroupOptions.stories.mdx → CheckboxGroup/CheckboxGroupOptions.stories.mdx} +8 -8
  248. package/src/stories/CheckboxGroup/CheckboxGroupReadonly.stories.mdx +26 -0
  249. package/src/stories/CheckboxGroup/CheckboxGroupSlots.stories.mdx +152 -0
  250. package/src/stories/CheckboxGroup/CheckboxGroupValid.stories.mdx +28 -0
  251. package/src/stories/CheckboxGroup/CheckboxGroupVertical.stories.mdx +26 -0
  252. package/src/stories/Dialog/Dialog.stories.mdx +5 -5
  253. package/src/stories/Dialog/Dialog.test.ts +26 -0
  254. package/src/stories/Dialog/DialogAutoClose.stories.mdx +1 -1
  255. package/src/stories/Dialog/DialogSize.stories.mdx +1 -1
  256. package/src/stories/Dropdown/Dropdown.stories.mdx +11 -7
  257. package/src/stories/Dropdown/Dropdown.test.ts +80 -0
  258. package/src/stories/Dropdown/DropdownDisabled.stories.mdx +9 -2
  259. package/src/stories/Dropdown/DropdownLabelNoResults.stories.mdx +2 -2
  260. package/src/stories/Dropdown/DropdownMaxValues.stories.mdx +4 -2
  261. package/src/stories/Dropdown/DropdownMultiple.stories.mdx +4 -2
  262. package/src/stories/Dropdown/DropdownOptions.stories.mdx +4 -4
  263. package/src/stories/Dropdown/DropdownUseObject.stories.mdx +4 -2
  264. package/src/stories/Icon/Icon.stories.mdx +8 -8
  265. package/src/stories/Icon/{IconTest.js → Icon.test.js} +2 -5
  266. package/src/stories/Icon/IconList.vue +5 -6
  267. package/src/stories/Icon/IconPrefix.stories.mdx +2 -2
  268. package/src/stories/Icon/IconRemote.stories.mdx +2 -2
  269. package/src/stories/Icon/IconsList.stories.mdx +2 -18
  270. package/src/stories/InputText/InputText.stories.mdx +25 -19
  271. package/src/stories/InputText/InputText.test.ts +156 -0
  272. package/src/stories/InputText/InputTextAutocomplete.stories.mdx +9 -2
  273. package/src/stories/InputText/InputTextAutofocus.stories.mdx +6 -3
  274. package/src/stories/InputText/InputTextDisabled.stories.mdx +10 -2
  275. package/src/stories/InputText/InputTextError.stories.mdx +10 -2
  276. package/src/stories/InputText/InputTextFloating.stories.mdx +10 -3
  277. package/src/stories/InputText/InputTextHintLabel.stories.mdx +10 -2
  278. package/src/stories/InputText/InputTextIcon.stories.mdx +6 -2
  279. package/src/stories/InputText/InputTextIconPosition.stories.mdx +10 -3
  280. package/src/stories/InputText/InputTextLabel.stories.mdx +8 -2
  281. package/src/stories/InputText/InputTextLoading.stories.mdx +10 -2
  282. package/src/stories/InputText/InputTextMax.stories.mdx +10 -3
  283. package/src/stories/InputText/InputTextMaxLength.stories.mdx +22 -5
  284. package/src/stories/InputText/InputTextMin.stories.mdx +10 -3
  285. package/src/stories/InputText/InputTextMinLength.stories.mdx +9 -2
  286. package/src/stories/InputText/InputTextPlaceholder.stories.mdx +8 -2
  287. package/src/stories/InputText/InputTextReadonly.stories.mdx +6 -2
  288. package/src/stories/InputText/InputTextSlots.stories.mdx +4 -5
  289. package/src/stories/InputText/InputTextStep.stories.mdx +9 -3
  290. package/src/stories/InputText/InputTextType.stories.mdx +110 -13
  291. package/src/stories/InputText/InputTextValid.stories.mdx +10 -2
  292. package/src/stories/NativeSelect/NativeSelect.stories.mdx +15 -11
  293. package/src/stories/NativeSelect/NativeSelect.test.js +151 -0
  294. package/src/stories/NativeSelect/NativeSelectDisabled.stories.mdx +6 -7
  295. package/src/stories/NativeSelect/NativeSelectError.stories.mdx +7 -3
  296. package/src/stories/NativeSelect/NativeSelectHintLabel.stories.mdx +7 -3
  297. package/src/stories/NativeSelect/NativeSelectIconLeftRight.stories.mdx +14 -12
  298. package/src/stories/NativeSelect/NativeSelectLoading.stories.mdx +7 -3
  299. package/src/stories/NativeSelect/NativeSelectOptions.stories.mdx +44 -38
  300. package/src/stories/NativeSelect/NativeSelectReadonly.stories.mdx +19 -11
  301. package/src/stories/NativeSelect/NativeSelectUseObject.stories.mdx +26 -30
  302. package/src/stories/NativeSelect/NativeSelectValid.stories.mdx +7 -3
  303. package/src/stories/NativeSelect/NativeSelectValueKey.stories.mdx +30 -30
  304. package/src/stories/Progress/Progress.stories.mdx +8 -11
  305. package/src/stories/Progress/{ProgressTest.js → Progress.test.js} +4 -10
  306. package/src/stories/Progress/ProgressDeterminate.stories.mdx +3 -6
  307. package/src/stories/Radio/Radio.stories.mdx +11 -17
  308. package/src/stories/Radio/Radio.test.ts +52 -0
  309. package/src/stories/Radio/RadioDisabled.stories.mdx +4 -7
  310. package/src/stories/Radio/RadioError.stories.mdx +8 -28
  311. package/src/stories/Radio/RadioHintLabel.stories.mdx +6 -7
  312. package/src/stories/Radio/RadioSlots.stories.mdx +21 -7
  313. package/src/stories/RadioGroup/RadioGroup.stories.mdx +20 -27
  314. package/src/stories/RadioGroup/RadioGroup.test.ts +139 -0
  315. package/src/stories/RadioGroup/RadioGroupDisabled.stories.mdx +6 -8
  316. package/src/stories/RadioGroup/RadioGroupError.stories.mdx +9 -11
  317. package/src/stories/RadioGroup/RadioGroupHintLabel.stories.mdx +13 -15
  318. package/src/stories/RadioGroup/RadioGroupLabel.stories.mdx +12 -9
  319. package/src/stories/RadioGroup/RadioGroupOptionLabel.stories.mdx +16 -30
  320. package/src/stories/RadioGroup/RadioGroupOptionValue.stories.mdx +15 -29
  321. package/src/stories/RadioGroup/RadioGroupOptions.stories.mdx +9 -25
  322. package/src/stories/RadioGroup/RadioGroupReadonly.stories.mdx +6 -8
  323. package/src/stories/RadioGroup/RadioGroupSlots.stories.mdx +48 -70
  324. package/src/stories/RadioGroup/RadioGroupValid.stories.mdx +9 -11
  325. package/src/stories/RadioGroup/RadioGroupVertical.stories.mdx +6 -8
  326. package/src/stories/Select/Select.stories.mdx +32 -29
  327. package/src/stories/Select/Select.test.ts +104 -0
  328. package/src/stories/Select/SelectDisabled.stories.mdx +3 -3
  329. package/src/stories/Select/SelectMaxValues.stories.mdx +3 -3
  330. package/src/stories/Select/SelectMultiple.stories.mdx +5 -6
  331. package/src/stories/Select/SelectNative.stories.mdx +43 -0
  332. package/src/stories/Select/SelectOptions.stories.mdx +4 -4
  333. package/src/stories/Select/SelectSearchable.stories.mdx +13 -12
  334. package/src/stories/Select/SelectSeparator.stories.mdx +3 -3
  335. package/src/stories/Select/SelectUseObject.stories.mdx +3 -3
  336. package/src/stories/Textarea/Textarea.stories.mdx +6 -10
  337. package/src/stories/Textarea/Textarea.test.ts +204 -0
  338. package/src/stories/Textarea/TextareaAutoclear.stories.mdx +3 -2
  339. package/src/stories/Textarea/TextareaAutocomplete.stories.mdx +3 -2
  340. package/src/stories/Textarea/TextareaAutofocus.stories.mdx +3 -2
  341. package/src/stories/Textarea/TextareaDebounce.stories.mdx +7 -6
  342. package/src/stories/Textarea/TextareaDisabled.stories.mdx +9 -3
  343. package/src/stories/Textarea/TextareaError.stories.mdx +7 -2
  344. package/src/stories/Textarea/TextareaErrorLabel.stories.mdx +12 -2
  345. package/src/stories/Textarea/TextareaFloating.stories.mdx +7 -2
  346. package/src/stories/Textarea/TextareaHintLabel.stories.mdx +7 -2
  347. package/src/stories/Textarea/TextareaIcon.stories.mdx +3 -2
  348. package/src/stories/Textarea/TextareaIconPosition.stories.mdx +4 -2
  349. package/src/stories/Textarea/TextareaId.stories.mdx +3 -2
  350. package/src/stories/Textarea/TextareaLabel.stories.mdx +3 -2
  351. package/src/stories/Textarea/TextareaLimit.stories.mdx +5 -2
  352. package/src/stories/Textarea/TextareaLoading.stories.mdx +7 -2
  353. package/src/stories/Textarea/TextareaLoadingLabel.stories.mdx +9 -3
  354. package/src/stories/Textarea/TextareaMaxLength.stories.mdx +5 -4
  355. package/src/stories/Textarea/TextareaMinLength.stories.mdx +3 -2
  356. package/src/stories/Textarea/TextareaModifiers.stories.mdx +10 -2
  357. package/src/stories/Textarea/TextareaName.stories.mdx +3 -2
  358. package/src/stories/Textarea/TextareaPlaceholder.stories.mdx +4 -3
  359. package/src/stories/Textarea/TextareaReadonly.stories.mdx +8 -3
  360. package/src/stories/Textarea/TextareaRequired.stories.mdx +3 -2
  361. package/src/stories/Textarea/TextareaResizable.stories.mdx +7 -2
  362. package/src/stories/Textarea/TextareaRowsCols.stories.mdx +4 -2
  363. package/src/stories/Textarea/TextareaSlots.stories.mdx +7 -8
  364. package/src/stories/Textarea/TextareaValid.stories.mdx +7 -1
  365. package/src/stories/Textarea/TextareaValidLabel.stories.mdx +14 -4
  366. package/src/stories/utils.ts +1 -1
  367. package/src/stories/volver-ui-vue.stories.mdx +1 -1
  368. package/src/test/expect.ts +3 -1
  369. package/src/test/sleep.ts +2 -0
  370. package/src/test/types.d.ts +14 -1
  371. package/src/types/{.README → .gitkeep} +0 -0
  372. package/src/utils/ObjectUtilities.ts +247 -241
  373. package/dist/components/VvAccordion/VvAccordion.d.ts +0 -32
  374. package/dist/components/VvAccordion/useAccordionProps.d.ts +0 -16
  375. package/dist/components/VvButton/useButtonGroupProps.d.ts +0 -23
  376. package/dist/components/VvCheck/VvCheck.d.ts +0 -47
  377. package/dist/components/VvCheck/VvCheck.es.js +0 -318
  378. package/dist/components/VvCheck/VvCheck.umd.js +0 -1
  379. package/dist/components/VvCheck/VvCheck.vue.d.ts +0 -165
  380. package/dist/components/VvCheck/useCheckProps.d.ts +0 -16
  381. package/dist/components/VvCheckGroup/VvCheckGroup.es.js +0 -451
  382. package/dist/components/VvCheckGroup/VvCheckGroup.umd.js +0 -2
  383. package/dist/components/VvCheckGroup/VvCheckGroup.vue.d.ts +0 -272
  384. package/dist/components/VvDialog/constants.d.ts +0 -5
  385. package/dist/components/VvInputText/VvInputText.d.ts +0 -73
  386. package/dist/components/VvInputText/constants.d.ts +0 -55
  387. package/dist/components/VvRadio/VvRadio.d.ts +0 -22
  388. package/dist/components/VvRadio/useRadioProps.d.ts +0 -15
  389. package/dist/components/VvTextarea/constants.d.ts +0 -19
  390. package/dist/stories/RadioGroup/RadioProperty.test.d.ts +0 -12
  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/VvBadge/VvBadge.ts +0 -4
  395. package/src/components/VvButton/VvButton.ts +0 -117
  396. package/src/components/VvButton/useButtonGroupProps.ts +0 -51
  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/ButtonVariant.stories.mdx +0 -205
  413. package/src/stories/Button/test.js +0 -41
  414. package/src/stories/Check/Check.stories.mdx +0 -62
  415. package/src/stories/Check/CheckBinary.stories.mdx +0 -75
  416. package/src/stories/Check/CheckError.stories.mdx +0 -64
  417. package/src/stories/Check/CheckErrorTests.js +0 -74
  418. package/src/stories/Check/CheckHintLabel.stories.mdx +0 -30
  419. package/src/stories/Check/CheckPropertyTest.js +0 -102
  420. package/src/stories/Check/CheckSlots.stories.mdx +0 -51
  421. package/src/stories/CheckGroup/CheckGroup.stories.mdx +0 -69
  422. package/src/stories/CheckGroup/CheckGroupDisabled.stories.mdx +0 -26
  423. package/src/stories/CheckGroup/CheckGroupError.stories.mdx +0 -28
  424. package/src/stories/CheckGroup/CheckGroupHintLabel.stories.mdx +0 -27
  425. package/src/stories/CheckGroup/CheckGroupLabel.stories.mdx +0 -26
  426. package/src/stories/CheckGroup/CheckGroupReadonly.stories.mdx +0 -26
  427. package/src/stories/CheckGroup/CheckGroupSlots.stories.mdx +0 -152
  428. package/src/stories/CheckGroup/CheckGroupValid.stories.mdx +0 -28
  429. package/src/stories/CheckGroup/CheckGroupVertical.stories.mdx +0 -26
  430. package/src/stories/Radio/RadioTest.js +0 -90
  431. package/src/stories/RadioGroup/RadioOptionsTest.js +0 -78
  432. package/src/stories/RadioGroup/RadioProperty.test.ts +0 -87
  433. package/src/stories/RadioGroup/RadioPropertyTest.js +0 -131
  434. package/src/stories/RadioGroup/RadioSlotsTest.js +0 -20
  435. package/src/stories/stories.scss +0 -35
@@ -1,79 +1,32 @@
1
- <template>
2
- <!-- #region component: "button" | "a" | "router-link" | "nuxt-link" -->
3
- <component
4
- v-bind="properties"
5
- :is="isComponent"
6
- @click.passive="onBtnClick">
7
- <!-- @slot default to replace all button content -->
8
- <slot>
9
- <!-- #region loading -->
10
- <template v-if="loading">
11
- <slot name="loading">
12
- <vv-icon
13
- v-if="loadingIcon"
14
- class="vv-button__loading-icon"
15
- :name="loadingIcon" />
16
- <span v-if="loadingLabel" class="vv-button__label">
17
- {{ loadingLabel }}
18
- </span>
19
- </slot>
20
- </template>
21
- <!-- #endregion loading -->
22
- <!-- #region button -->
23
- <template v-else>
24
- <!-- @slot before -->
25
- <slot name="before" />
26
- <!-- #region icon -->
27
- <template v-if="icon">
28
- <vv-icon class="vv-button__icon" :name="icon" />
29
- </template>
30
- <!-- #endregion icon -->
31
- <!-- #region label -->
32
- <span v-if="label" class="vv-button__label">
33
- <!-- @slot Use this slot for button label -->
34
- <slot name="label">
35
- {{ label }}
36
- </slot>
37
- </span>
38
- <!-- #endregion label -->
39
- <!-- @slot after -->
40
- <slot name="after" />
41
- </template>
42
- <!-- #endregion button -->
43
- </slot>
44
- </component>
45
- <!-- #endregion component: button | a | router-link | nuxt-link -->
46
- </template>
1
+ <script lang="ts">
2
+ export default {
3
+ name: 'VvButton'
4
+ }
5
+ </script>
47
6
 
48
7
  <script setup lang="ts">
49
- import { useAttrs } from 'vue'
50
-
51
- import { computed } from 'vue'
52
- import { v4 as uuidv4 } from 'uuid'
53
- import { ButtonIconPosition, ButtonTag } from './VvButton'
54
- import { VvButtonProps } from './VvButton'
55
- import ObjectUtilities from '@/utils/ObjectUtilities'
56
-
57
- //Components
58
- import VvIcon from '@/components/VvIcon/VvIcon.vue'
59
-
60
- //Composables
8
+ import { inject, useAttrs, useSlots, computed } from 'vue'
9
+ import { nanoid } from 'nanoid'
10
+ import { contains, equals } from '@/utils/ObjectUtilities'
11
+ import { type IVolver, VOLVER_PREFIX } from '@/Volver'
61
12
  import { useBemModifiers } from '@/composables/useModifiers'
62
- import { toButtonRefs } from './useButtonGroupProps'
13
+ import VvIcon from '@/components/VvIcon/VvIcon.vue'
14
+ import {
15
+ ButtonIconPosition,
16
+ ButtonTag,
17
+ VvButtonProps,
18
+ useGroupProps
19
+ } from '@/components/VvButton'
63
20
 
64
- //Props, emits, attrs, slots
21
+ // props, attrs and slots
65
22
  const props = defineProps(VvButtonProps)
66
23
  const attrs = useAttrs()
24
+ const slots = useSlots()
67
25
 
68
- //Data
69
- const btnName = attrs?.name || uuidv4()
26
+ // data
27
+ const btnName = attrs?.name || nanoid()
70
28
  const {
71
29
  modifiers,
72
- action,
73
- actionQuiet,
74
- block,
75
- rounded,
76
- fullBleed,
77
30
  iconPosition,
78
31
  icon,
79
32
  label,
@@ -81,18 +34,21 @@ const {
81
34
  disabled,
82
35
  toggle,
83
36
  isInGroup
84
- } = toButtonRefs(props)
37
+ } = useGroupProps(props)
38
+
39
+ // inject Volver
40
+ const ds = inject<IVolver>(VOLVER_PREFIX)
85
41
 
86
42
  /**
87
- * @description Select the tag type in based on the props before.
88
- * @returns {string} The type of component
43
+ * @description The tag defined by props.
44
+ * @returns {string} The tag.
89
45
  */
90
- const isComponent = computed(() => {
46
+ const hasTag = computed(() => {
91
47
  switch (true) {
92
48
  case disabled.value:
93
49
  return ButtonTag.button
94
50
  case props.to !== undefined:
95
- return ButtonTag.routerLink
51
+ return ds?.nuxt ? ButtonTag.nuxtLink : ButtonTag.routerLink
96
52
  case props.href !== undefined:
97
53
  return ButtonTag.a
98
54
  default:
@@ -101,39 +57,25 @@ const isComponent = computed(() => {
101
57
  })
102
58
 
103
59
  /**
104
- * Stato active del pulsante.
105
- * Se in un button group toggle, forza l'active in base al valore selezionato
60
+ * @description The component pressed state by prop or group.
61
+ * @returns {string} The component tag.
106
62
  */
107
- const active = computed(() => {
108
- if (!toggle.value) return props.active
63
+ const isPressed = computed(() => {
64
+ if (!toggle.value) return props.pressed
109
65
 
110
66
  return Array.isArray(modelValue.value)
111
- ? ObjectUtilities.contains(btnName, modelValue.value)
112
- : ObjectUtilities.equals(btnName, modelValue.value)
67
+ ? contains(btnName, modelValue.value)
68
+ : equals(btnName, modelValue.value)
113
69
  })
114
70
 
115
71
  /**
116
- * Selected button state
117
- * If on button "toggle" and "action" GROUP force the selected state
72
+ * @description Define component classes with BEM style.
73
+ * @returns {Array} The component classes.
118
74
  */
119
- const selected = computed(() => {
120
- if (!toggle.value) return props.selected
121
-
122
- return Array.isArray(modelValue.value)
123
- ? ObjectUtilities.contains(btnName, modelValue.value)
124
- : ObjectUtilities.equals(btnName, modelValue.value)
125
- })
126
-
127
- //Styles & bindings
128
- const { bemCssClasses: btnClass } = useBemModifiers('vv-button', {
75
+ const { bemCssClasses } = useBemModifiers('vv-button', {
129
76
  modifiers,
130
- active,
131
- action,
132
- actionQuiet,
133
- selected,
134
- block,
135
- rounded,
136
- fullBleed,
77
+ active: props.active,
78
+ pressed: isPressed,
137
79
  disabled,
138
80
  reverse: computed(() =>
139
81
  [ButtonIconPosition.right, ButtonIconPosition.bottom].includes(
@@ -145,41 +87,56 @@ const { bemCssClasses: btnClass } = useBemModifiers('vv-button', {
145
87
  iconPosition.value
146
88
  )
147
89
  ),
148
- iconOnly: computed(() => icon?.value && !label?.value)
90
+ iconOnly: computed(() => icon?.value && !label?.value && !slots['default'])
149
91
  })
92
+
150
93
  /**
151
- * Compute component properties
94
+ * @description Define icon attributes.
95
+ * @returns {Object} The icon attributes.
152
96
  */
153
- const properties = computed(() => {
154
- return {
155
- ...linkProps.value,
156
- 'aria-label': props.label || attrs['aria-label'],
157
- 'aria-disabled': disabled.value,
158
- role: 'button',
159
- class: btnClass.value,
160
- to: props.to
161
- }
162
- })
97
+ const hasIconProps = computed(() =>
98
+ typeof icon?.value === 'string' ? { name: icon?.value } : icon?.value
99
+ )
100
+
163
101
  /**
164
- * Compute link props (target, href)
102
+ * @description Define component attributes.
103
+ * @returns {Object} The component attributes.
165
104
  */
166
- const linkProps = computed(() => {
167
- const isLink = isComponent.value === ButtonTag.a
168
- let toReturn = {}
169
- if (isLink) {
170
- toReturn = disabled.value
171
- ? {
172
- href: 'javascript:;'
173
- }
174
- : {
175
- target: props.target,
176
- href: props.href
177
- }
105
+ const hasProps = computed(() => {
106
+ const toReturn = {
107
+ class: bemCssClasses.value,
108
+ 'aria-label': attrs['aria-label'],
109
+ 'aria-pressed': isPressed.value ? true : undefined
110
+ }
111
+ switch (hasTag.value) {
112
+ case ButtonTag.a:
113
+ return {
114
+ ...toReturn,
115
+ role: 'button',
116
+ href: props.href,
117
+ target: props.target,
118
+ rel: props.rel
119
+ }
120
+ case ButtonTag.routerLink:
121
+ case ButtonTag.nuxtLink:
122
+ return {
123
+ ...toReturn,
124
+ role: 'button',
125
+ to: props.to,
126
+ target: props.target
127
+ }
128
+ default:
129
+ return {
130
+ ...toReturn,
131
+ type: props.type,
132
+ disabled: disabled.value
133
+ }
178
134
  }
179
- return toReturn
180
135
  })
181
136
 
182
- //Methods
137
+ /**
138
+ * @description Catch click event in a group.
139
+ */
183
140
  function onBtnClick() {
184
141
  // set group modelValue
185
142
  if (isInGroup.value) {
@@ -187,3 +144,47 @@ function onBtnClick() {
187
144
  }
188
145
  }
189
146
  </script>
147
+
148
+ <template>
149
+ <!-- #region component: "button" | "a" | "router-link" | "nuxt-link" -->
150
+ <component v-bind="hasProps" :is="hasTag" @click.passive="onBtnClick">
151
+ <!-- @slot default to replace all button content -->
152
+ <slot>
153
+ <!-- #region loading -->
154
+ <template v-if="loading">
155
+ <slot name="loading">
156
+ <VvIcon
157
+ v-if="loadingIcon"
158
+ class="vv-button__loading-icon"
159
+ :name="loadingIcon" />
160
+ <span v-if="loadingLabel" class="vv-button__label">
161
+ {{ loadingLabel }}
162
+ </span>
163
+ </slot>
164
+ </template>
165
+ <!-- #endregion loading -->
166
+ <!-- #region button -->
167
+ <template v-else>
168
+ <!-- @slot before -->
169
+ <slot name="before" />
170
+ <!-- #region icon -->
171
+ <template v-if="icon">
172
+ <VvIcon class="vv-button__icon" v-bind="hasIconProps" />
173
+ </template>
174
+ <!-- #endregion icon -->
175
+ <!-- #region label -->
176
+ <span v-if="label" class="vv-button__label">
177
+ <!-- @slot Use this slot for button label -->
178
+ <slot name="label">
179
+ {{ label }}
180
+ </slot>
181
+ </span>
182
+ <!-- #endregion label -->
183
+ <!-- @slot after -->
184
+ <slot name="after" />
185
+ </template>
186
+ <!-- #endregion button -->
187
+ </slot>
188
+ </component>
189
+ <!-- #endregion component: button | a | router-link | nuxt-link -->
190
+ </template>
@@ -0,0 +1,147 @@
1
+ import { type PropType, type ExtractPropTypes, toRefs, type Ref } from 'vue'
2
+ import { DisabledProps, ModifiersProps } from '@/props'
3
+ import type IButtonGroupState from '@/composables/group/types/IButtonGroupState'
4
+ import { useInjectedGroupState } from '@/composables/group/useInjectedGroupState'
5
+ import { VV_BUTTON_GROUP } from '@/constants'
6
+
7
+ export enum ButtonIconPosition {
8
+ left = 'left',
9
+ right = 'right',
10
+ top = 'top',
11
+ bottom = 'bottom'
12
+ }
13
+
14
+ export enum ButtonType {
15
+ button = 'button',
16
+ submit = 'submit',
17
+ reset = 'reset'
18
+ }
19
+
20
+ export enum ButtonTag {
21
+ nuxtLink = 'nuxt-link',
22
+ routerLink = 'router-link',
23
+ a = 'a',
24
+ button = 'button'
25
+ }
26
+
27
+ export enum ButtonTarget {
28
+ _blank = '_blank',
29
+ _self = '_self',
30
+ _parent = '_parent',
31
+ _top = '_top'
32
+ }
33
+
34
+ export const VvButtonEvents = ['update:modelValue']
35
+
36
+ export const VvButtonProps = {
37
+ ...ModifiersProps,
38
+ ...DisabledProps,
39
+ /**
40
+ * Button icon
41
+ */
42
+ icon: {
43
+ type: [String, Object],
44
+ default: ''
45
+ },
46
+ /**
47
+ * Button icon position
48
+ */
49
+ iconPosition: {
50
+ type: String as PropType<ButtonIconPosition>,
51
+ default: ButtonIconPosition.left,
52
+ validator: (value: string) => value in ButtonIconPosition
53
+ },
54
+ /**
55
+ * Button label
56
+ */
57
+ label: [String, Number],
58
+ /**
59
+ * Loading status
60
+ */
61
+ loading: Boolean,
62
+ /**
63
+ * Loading icon
64
+ */
65
+ loadingIcon: { type: String, default: 'eos-icons:bubble-loading' },
66
+ /**
67
+ * Loading label
68
+ */
69
+ loadingLabel: {
70
+ type: String,
71
+ default: 'Loading...'
72
+ },
73
+ /**
74
+ * The router-link/nuxt-link property, if it is defined the button is rendered as a ruouter-link or nuxt-link.
75
+ * @see Documentation of [router-link](https://router.vuejs.org/api/#router-link) and [nuxt-link](https://nuxtjs.org/api/components-nuxt-link/)
76
+ */
77
+ to: {
78
+ type: [String, Object]
79
+ },
80
+ /**
81
+ * Link href
82
+ */
83
+ href: String,
84
+ /**
85
+ * Link target
86
+ */
87
+ target: {
88
+ type: String as PropType<ButtonTarget>,
89
+ validator: (value: string) => value in ButtonTarget
90
+ },
91
+ active: Boolean,
92
+ /**
93
+ * Button pressed mode
94
+ */
95
+ pressed: Boolean,
96
+ /**
97
+ * Link rel
98
+ */
99
+ rel: {
100
+ type: String,
101
+ default: 'noopener noreferrer'
102
+ },
103
+ /**
104
+ * Button type
105
+ */
106
+ type: {
107
+ type: String,
108
+ default: ButtonType.button,
109
+ validator: (value: string) => value in ButtonType
110
+ }
111
+ }
112
+
113
+ export type VvButtonPropsTypes = ExtractPropTypes<typeof VvButtonProps>
114
+
115
+ /**
116
+ * Merges local and group props
117
+ */
118
+ export function useGroupProps(props: VvButtonPropsTypes) {
119
+ const { group, isInGroup, getGroupOrLocalRef } =
120
+ useInjectedGroupState<IButtonGroupState>(VV_BUTTON_GROUP)
121
+
122
+ // local props
123
+ const { iconPosition, icon, label, pressed } = toRefs(props)
124
+
125
+ // group props
126
+ const modelValue = getGroupOrLocalRef('modelValue', props)
127
+ const disabled = getGroupOrLocalRef('disabled', props) as Ref<boolean>
128
+ const toggle = getGroupOrLocalRef('toggle', props) as Ref<boolean>
129
+ const modifiers = getGroupOrLocalRef('modifiers', props) as Ref<
130
+ string[] | string
131
+ >
132
+
133
+ return {
134
+ // group props
135
+ modelValue,
136
+ disabled,
137
+ toggle,
138
+ isInGroup,
139
+ group,
140
+ modifiers,
141
+ // local props
142
+ pressed,
143
+ iconPosition,
144
+ icon,
145
+ label
146
+ }
147
+ }
@@ -1,55 +1,48 @@
1
- <template>
2
- <div :class="btnGroupClass" role="group">
3
- <slot />
4
- </div>
5
- </template>
1
+ <script lang="ts">
2
+ export default {
3
+ name: 'VvButtonGroup'
4
+ }
5
+ </script>
6
6
 
7
7
  <script setup lang="ts">
8
8
  import type IButtonGroupState from '@/composables/group/types/IButtonGroupState'
9
-
10
- import { toRefs } from 'vue'
11
- import { VvButtonGroupProps, VvButtonGroupEvents } from './VvButtonGroup'
12
- import { VV_BUTTON_GROUP } from '../../constants'
13
-
14
- //Composables
9
+ import { ref, toRefs } from 'vue'
10
+ import { VV_BUTTON_GROUP } from '@/constants'
15
11
  import { useVModel } from '@vueuse/core'
16
- import { useProvideGroupState } from '../../composables/group/useProvideGroupState'
12
+ import { useProvideGroupState } from '@/composables/group/useProvideGroupState'
17
13
  import { useBemModifiers } from '@/composables/useModifiers'
14
+ import {
15
+ VvButtonGroupProps,
16
+ VvButtonGroupEvents
17
+ } from '@/components/VvButtonGroup'
18
18
 
19
- //Emits, props, attrs, slots
19
+ // emit and props
20
20
  const emit = defineEmits(VvButtonGroupEvents)
21
21
  const props = defineProps(VvButtonGroupProps)
22
22
 
23
- //Data
23
+ // data
24
24
  const modelValue = useVModel(props, 'modelValue', emit)
25
- const {
26
- disabled,
27
- vertical,
28
- compact,
29
- block,
30
- rounded,
31
- toggle,
32
- action,
33
- actionQuiet
34
- } = toRefs(props)
25
+ const { disabled, vertical, compact, toggle, modifiers } = toRefs(props)
35
26
 
36
- //Computed
37
- const { bemCssClasses: btnGroupClass } = useBemModifiers('vv-button-group', {
27
+ // style
28
+ const { bemCssClasses } = useBemModifiers('vv-button-group', {
29
+ modifiers,
38
30
  vertical,
39
- compact,
40
- block
31
+ compact
41
32
  })
42
33
 
43
- // #region group
44
34
  const groupState: IButtonGroupState = {
45
35
  key: VV_BUTTON_GROUP,
46
36
  modelValue,
47
37
  disabled,
48
38
  toggle,
49
- rounded,
50
- action,
51
- actionQuiet
39
+ modifiers: modifiers?.value ? modifiers : ref([])
52
40
  }
53
41
  useProvideGroupState(groupState)
54
- // #endregion group
55
42
  </script>
43
+
44
+ <template>
45
+ <div :class="bemCssClasses" role="group">
46
+ <slot />
47
+ </div>
48
+ </template>
@@ -1,5 +1,8 @@
1
+ import { DisabledProps, ModifiersProps } from '@/props'
2
+
1
3
  export const VvButtonGroupProps = {
2
- disabled: { type: Boolean, default: false },
4
+ ...ModifiersProps,
5
+ ...DisabledProps,
3
6
  /**
4
7
  * True = show buttons vertically
5
8
  */
@@ -12,22 +15,6 @@ export const VvButtonGroupProps = {
12
15
  * True = il button group si comporterà come un toggle, materrà attivo l'ultimo pulsante cliccato.
13
16
  */
14
17
  toggle: { type: Boolean, default: false },
15
- /**
16
- * True = display as block
17
- */
18
- block: { type: Boolean, default: false },
19
- /**
20
- * True = display btn-broup as rounded (first and last child .vv-button)
21
- */
22
- rounded: { type: Boolean, default: false },
23
- /**
24
- * Button action mode
25
- */
26
- action: Boolean,
27
- /**
28
- * Button action mode
29
- */
30
- actionQuiet: Boolean,
31
18
  /**
32
19
  * Active button (name)
33
20
  */
@@ -1,5 +1,24 @@
1
+ <script lang="ts">
2
+ export default {
3
+ name: 'VvCard'
4
+ }
5
+ </script>
6
+
7
+ <script setup lang="ts">
8
+ import { useBemModifiers } from '@/composables/useModifiers'
9
+ import { VvCardProps } from '@/components/VvCard'
10
+
11
+ // props and attrs
12
+ const props = defineProps(VvCardProps)
13
+
14
+ // styles
15
+ const { bemCssClasses } = useBemModifiers('vv-card', {
16
+ modifiers: props.modifiers
17
+ })
18
+ </script>
19
+
1
20
  <template>
2
- <article :class="cardClass" v-bind="cardAttrs">
21
+ <article :class="bemCssClasses">
3
22
  <header v-if="$slots.header || title" class="vv-card__header">
4
23
  <slot name="header">
5
24
  {{ title }}
@@ -14,24 +33,3 @@
14
33
  </footer>
15
34
  </article>
16
35
  </template>
17
-
18
- <script setup lang="ts">
19
- import { toRefs, computed, useAttrs } from 'vue'
20
- import { VvCardProps } from './VvCard'
21
-
22
- //Components
23
- import { useBemModifiers } from '../../composables/useModifiers'
24
-
25
- //Props, Emits, attrs ...
26
- const props = defineProps(VvCardProps)
27
- const attrs = useAttrs()
28
-
29
- //Styles & bindings
30
- const { modifiers } = toRefs(props)
31
- const { bemCssClasses: cardClass } = useBemModifiers('vv-card', {
32
- modifiers
33
- })
34
- const cardAttrs = computed(() => {
35
- return attrs
36
- })
37
- </script>
File without changes