@volverjs/ui-vue 0.0.1-beta.8 → 0.0.2

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 (561) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +108 -56
  3. package/bin/icons.cjs +73 -0
  4. package/bin/icons.js +75 -0
  5. package/dist/{DesignSystem.d.ts → Volver.d.ts} +22 -18
  6. package/dist/components/VvAccordion/VvAccordion.es.js +165 -0
  7. package/dist/components/VvAccordion/VvAccordion.umd.js +1 -0
  8. package/dist/components/VvAccordion/VvAccordion.vue.d.ts +32 -97
  9. package/dist/components/VvAccordion/index.d.ts +46 -0
  10. package/dist/components/VvAccordionGroup/VvAccordionGroup.es.js +243 -0
  11. package/dist/components/VvAccordionGroup/VvAccordionGroup.umd.js +1 -0
  12. package/dist/components/VvAccordionGroup/VvAccordionGroup.vue.d.ts +77 -151
  13. package/dist/components/VvAccordionGroup/{VvAccordionGroup.d.ts → index.d.ts} +30 -13
  14. package/dist/components/VvBadge/VvBadge.es.js +62 -0
  15. package/dist/components/VvBadge/VvBadge.umd.js +1 -0
  16. package/dist/components/VvBadge/VvBadge.vue.d.ts +13 -54
  17. package/dist/components/VvBadge/{VvBadge.d.ts → index.d.ts} +1 -1
  18. package/dist/components/VvBreadcrumb/VvBreadcrumb.es.js +93 -0
  19. package/dist/components/VvBreadcrumb/VvBreadcrumb.umd.js +1 -0
  20. package/dist/components/VvBreadcrumb/VvBreadcrumb.vue.d.ts +33 -107
  21. package/dist/components/VvBreadcrumb/{VvBreadcrumb.d.ts → index.d.ts} +2 -3
  22. package/dist/components/VvButton/VvButton.es.js +439 -0
  23. package/dist/components/VvButton/VvButton.umd.js +1 -0
  24. package/dist/components/VvButton/VvButton.vue.d.ts +100 -199
  25. package/dist/components/VvButton/index.d.ts +132 -0
  26. package/dist/components/VvButtonGroup/VvButtonGroup.es.js +107 -0
  27. package/dist/components/VvButtonGroup/VvButtonGroup.umd.js +1 -0
  28. package/dist/components/VvButtonGroup/VvButtonGroup.vue.d.ts +92 -186
  29. package/dist/components/VvButtonGroup/index.d.ts +54 -0
  30. package/dist/components/VvCard/VvCard.es.js +77 -0
  31. package/dist/components/VvCard/VvCard.umd.js +1 -0
  32. package/dist/components/VvCard/VvCard.vue.d.ts +16 -61
  33. package/dist/components/VvCard/{VvCard.d.ts → index.d.ts} +1 -1
  34. package/dist/components/VvCheckbox/VvCheckbox.es.js +357 -0
  35. package/dist/components/VvCheckbox/VvCheckbox.umd.js +1 -0
  36. package/dist/components/VvCheckbox/VvCheckbox.vue.d.ts +74 -0
  37. package/dist/components/VvCheckbox/index.d.ts +54 -0
  38. package/dist/components/VvCheckboxGroup/VvCheckboxGroup.es.js +435 -0
  39. package/dist/components/VvCheckboxGroup/VvCheckboxGroup.umd.js +1 -0
  40. package/dist/components/VvCheckboxGroup/VvCheckboxGroup.vue.d.ts +82 -0
  41. package/dist/components/VvCheckboxGroup/index.d.ts +32 -0
  42. package/dist/components/VvCombobox/VvCombobox.es.js +775 -0
  43. package/dist/components/VvCombobox/VvCombobox.umd.js +1 -0
  44. package/dist/components/VvCombobox/VvCombobox.vue.d.ts +175 -0
  45. package/dist/components/VvCombobox/index.d.ts +108 -0
  46. package/dist/components/VvDialog/VvDialog.es.js +200 -0
  47. package/dist/components/VvDialog/VvDialog.umd.js +1 -0
  48. package/dist/components/VvDialog/VvDialog.vue.d.ts +28 -132
  49. package/dist/components/VvDialog/{VvDialog.d.ts → index.d.ts} +2 -6
  50. package/dist/components/VvDropdown/VvDropdown.es.js +227 -0
  51. package/dist/components/VvDropdown/VvDropdown.umd.js +1 -0
  52. package/dist/components/VvDropdown/VvDropdown.vue.d.ts +59 -146
  53. package/dist/components/VvDropdown/index.d.ts +49 -0
  54. package/dist/components/VvIcon/VvIcon.es.js +124 -0
  55. package/dist/components/VvIcon/VvIcon.umd.js +1 -0
  56. package/dist/components/VvIcon/VvIcon.vue.d.ts +36 -150
  57. package/dist/components/VvIcon/{VvIcon.d.ts → index.d.ts} +9 -0
  58. package/dist/components/VvInputText/VvInputClearAction.d.ts +36 -0
  59. package/dist/components/VvInputText/VvInputPasswordAction.d.ts +56 -0
  60. package/dist/components/VvInputText/VvInputStepAction.d.ts +37 -0
  61. package/dist/components/VvInputText/VvInputText.es.js +772 -0
  62. package/dist/components/VvInputText/VvInputText.umd.js +1 -0
  63. package/dist/components/VvInputText/VvInputText.vue.d.ts +211 -288
  64. package/dist/components/VvInputText/VvInputTextActions.d.ts +1 -1
  65. package/dist/components/VvInputText/index.d.ts +182 -0
  66. package/dist/components/VvProgress/VvProgress.es.js +71 -0
  67. package/dist/components/VvProgress/VvProgress.umd.js +1 -0
  68. package/dist/components/VvProgress/VvProgress.vue.d.ts +20 -107
  69. package/dist/components/VvProgress/index.d.ts +30 -0
  70. package/dist/components/VvRadio/VvRadio.es.js +320 -0
  71. package/dist/components/VvRadio/VvRadio.umd.js +1 -0
  72. package/dist/components/VvRadio/VvRadio.vue.d.ts +55 -125
  73. package/dist/components/VvRadio/index.d.ts +40 -0
  74. package/dist/components/VvRadioGroup/VvRadioGroup.es.js +398 -0
  75. package/dist/components/VvRadioGroup/VvRadioGroup.umd.js +1 -0
  76. package/dist/components/VvRadioGroup/VvRadioGroup.vue.d.ts +56 -238
  77. package/dist/components/VvRadioGroup/index.d.ts +32 -0
  78. package/dist/components/VvSelect/VvSelect.es.js +434 -0
  79. package/dist/components/VvSelect/VvSelect.umd.js +1 -0
  80. package/dist/components/VvSelect/VvSelect.vue.d.ts +125 -263
  81. package/dist/components/VvSelect/index.d.ts +89 -0
  82. package/dist/components/VvTextarea/VvTextarea.es.js +471 -0
  83. package/dist/components/VvTextarea/VvTextarea.umd.js +1 -0
  84. package/dist/components/VvTextarea/VvTextarea.vue.d.ts +140 -321
  85. package/dist/components/VvTextarea/index.d.ts +102 -0
  86. package/dist/components/common/HintSlot.d.ts +12 -6
  87. package/dist/components/index.d.ts +19 -12
  88. package/dist/components/index.es.js +2379 -0
  89. package/dist/components/index.umd.js +1 -0
  90. package/dist/composables/group/types/IAccordionGroupState.d.ts +3 -4
  91. package/dist/composables/group/types/IButtonGroupState.d.ts +5 -11
  92. package/dist/composables/group/types/IGroupState.d.ts +3 -6
  93. package/dist/composables/group/types/IInputGroup.d.ts +1 -4
  94. package/dist/composables/group/useInjectedGroupState.d.ts +4 -4
  95. package/dist/composables/group/useProvideGroupState.d.ts +2 -2
  96. package/dist/composables/useComponentFocus.d.ts +4 -0
  97. package/dist/composables/{icons/useComponentIcons.d.ts → useComponentIcons.d.ts} +3 -2
  98. package/dist/composables/useDebouncedInput.d.ts +2 -0
  99. package/dist/composables/useOptions.d.ts +6 -0
  100. package/dist/composables/useTextCount.d.ts +10 -0
  101. package/dist/constants.d.ts +4 -4
  102. package/dist/icons.d.ts +1881 -0
  103. package/dist/icons.es.js +12 -14
  104. package/dist/icons.umd.js +1 -1
  105. package/dist/index.d.ts +9 -4
  106. package/dist/index.es.js +2420 -0
  107. package/dist/index.umd.js +1 -0
  108. package/dist/props/index.d.ts +328 -30
  109. package/dist/resolvers/unplugin.d.ts +27 -0
  110. package/dist/resolvers/unplugin.es.js +42 -0
  111. package/dist/resolvers/unplugin.umd.js +1 -0
  112. package/dist/stories/Accordion/Accordion.settings.d.ts +63 -0
  113. package/dist/stories/Accordion/Accordion.test.d.ts +2 -0
  114. package/dist/stories/AccordionGroup/AccordionGroup.settings.d.ts +58 -0
  115. package/dist/stories/AccordionGroup/AccordionGroup.test.d.ts +2 -0
  116. package/dist/stories/Badge/Badge.settings.d.ts +32 -0
  117. package/dist/stories/Badge/Badge.test.d.ts +2 -0
  118. package/dist/stories/Breadcrumb/Breadcrumb.settings.d.ts +29 -0
  119. package/dist/stories/Breadcrumb/Breadcrumb.test.d.ts +2 -0
  120. package/dist/stories/Button/Button.settings.d.ts +198 -0
  121. package/dist/stories/Button/Button.test.d.ts +1 -10
  122. package/dist/stories/ButtonGroup/ButtonGroup.settings.d.ts +47 -0
  123. package/dist/stories/ButtonGroup/ButtonGroup.test.d.ts +2 -0
  124. package/dist/stories/Card/Card.settings.d.ts +70 -0
  125. package/dist/stories/Card/Card.test.d.ts +2 -0
  126. package/dist/stories/Checkbox/Checkbox.settings.d.ts +165 -0
  127. package/dist/stories/Checkbox/Checkbox.test.d.ts +2 -0
  128. package/dist/stories/CheckboxGroup/CheckboxGroup.settings.d.ts +164 -0
  129. package/dist/stories/CheckboxGroup/CheckboxGroup.test.d.ts +2 -0
  130. package/dist/stories/Combobox/Combobox.settings.d.ts +286 -0
  131. package/dist/stories/Combobox/Combobox.test.d.ts +2 -0
  132. package/dist/stories/Dialog/Dialog.settings.d.ts +55 -0
  133. package/dist/stories/Dialog/Dialog.test.d.ts +2 -0
  134. package/dist/stories/Dropdown/Dropdown.settings.d.ts +85 -0
  135. package/dist/stories/Dropdown/Dropdown.test.d.ts +2 -0
  136. package/dist/stories/Icon/Icon.settings.d.ts +74 -0
  137. package/dist/stories/InputText/InputText.settings.d.ts +445 -0
  138. package/dist/stories/InputText/InputText.test.d.ts +2 -0
  139. package/dist/stories/Progress/Progress.settings.d.ts +38 -0
  140. package/dist/stories/Progress/Progress.test.d.ts +2 -0
  141. package/dist/stories/Radio/Radio.settings.d.ts +139 -0
  142. package/dist/stories/Radio/Radio.test.d.ts +2 -0
  143. package/dist/stories/RadioGroup/RadioGroup.settings.d.ts +164 -0
  144. package/dist/stories/RadioGroup/RadioGroup.test.d.ts +2 -0
  145. package/dist/stories/Select/Select.settings.d.ts +284 -0
  146. package/dist/stories/Select/Select.test.d.ts +2 -0
  147. package/dist/stories/Textarea/Textarea.settings.d.ts +336 -0
  148. package/dist/stories/Textarea/Textarea.test.d.ts +2 -0
  149. package/dist/stories/argTypes.d.ts +842 -0
  150. package/dist/test/expect.d.ts +3 -0
  151. package/dist/test/options.d.ts +1 -0
  152. package/dist/test/sleep.d.ts +1 -0
  153. package/dist/utils/ObjectUtilities.d.ts +82 -95
  154. package/env.d.ts +1 -0
  155. package/package.json +199 -126
  156. package/src/{DesignSystem.ts → Volver.ts} +57 -29
  157. package/src/assets/icons/detailed.json +1 -1
  158. package/src/assets/icons/normal.json +1 -1
  159. package/src/assets/icons/simple.json +1 -1
  160. package/src/components/VvAccordion/VvAccordion.vue +94 -78
  161. package/src/components/VvAccordion/index.ts +72 -0
  162. package/src/components/VvAccordionGroup/VvAccordionGroup.vue +93 -53
  163. package/src/components/VvAccordionGroup/{VvAccordionGroup.ts → index.ts} +18 -14
  164. package/src/components/VvBadge/VvBadge.vue +17 -8
  165. package/src/components/VvBadge/index.ts +6 -0
  166. package/src/components/VvBreadcrumb/VvBreadcrumb.vue +26 -24
  167. package/src/components/VvBreadcrumb/{VvBreadcrumb.ts → index.ts} +1 -2
  168. package/src/components/VvButton/VvButton.vue +174 -153
  169. package/src/components/VvButton/index.ts +189 -0
  170. package/src/components/VvButtonGroup/VvButtonGroup.vue +76 -48
  171. package/src/components/VvButtonGroup/index.ts +16 -0
  172. package/src/components/VvCard/VvCard.vue +20 -22
  173. package/src/components/VvCard/{VvCard.ts → index.ts} +1 -1
  174. package/src/components/VvCheckbox/VvCheckbox.vue +172 -0
  175. package/src/components/VvCheckbox/index.ts +60 -0
  176. package/src/components/VvCheckboxGroup/VvCheckboxGroup.vue +85 -0
  177. package/src/components/VvCheckboxGroup/index.ts +5 -0
  178. package/src/components/VvCombobox/VvCombobox.vue +261 -0
  179. package/src/components/VvCombobox/index.ts +88 -0
  180. package/src/components/VvDialog/VvDialog.vue +69 -67
  181. package/src/components/VvDialog/index.ts +10 -0
  182. package/src/components/VvDropdown/VvDropdown.vue +115 -114
  183. package/src/components/VvDropdown/index.ts +35 -0
  184. package/src/components/VvIcon/README.md +64 -0
  185. package/src/components/VvIcon/VvIcon.vue +122 -107
  186. package/src/components/VvIcon/{VvIcon.ts → index.ts} +17 -8
  187. package/src/components/VvInputText/VvInputClearAction.ts +53 -0
  188. package/src/components/VvInputText/VvInputPasswordAction.ts +70 -0
  189. package/src/components/VvInputText/VvInputStepAction.ts +49 -0
  190. package/src/components/VvInputText/VvInputText.vue +307 -238
  191. package/src/components/VvInputText/VvInputTextActions.ts +63 -114
  192. package/src/components/VvInputText/index.ts +140 -0
  193. package/src/components/VvProgress/VvProgress.vue +29 -29
  194. package/src/components/VvProgress/index.ts +32 -0
  195. package/src/components/VvRadio/VvRadio.vue +90 -119
  196. package/src/components/VvRadio/index.ts +40 -0
  197. package/src/components/VvRadioGroup/VvRadioGroup.vue +76 -69
  198. package/src/components/VvRadioGroup/index.ts +5 -0
  199. package/src/components/VvSelect/VvSelect.vue +187 -186
  200. package/src/components/VvSelect/index.ts +71 -0
  201. package/src/components/VvTextarea/VvTextarea.vue +188 -174
  202. package/src/components/VvTextarea/index.ts +50 -0
  203. package/src/components/common/HintSlot.ts +167 -137
  204. package/src/components/index.ts +19 -12
  205. package/src/composables/group/types/IAccordionGroupState.ts +3 -4
  206. package/src/composables/group/types/IButtonGroupState.ts +5 -11
  207. package/src/composables/group/types/IGroupState.ts +4 -6
  208. package/src/composables/group/types/IInputGroup.ts +1 -4
  209. package/src/composables/group/useInjectedGroupState.ts +23 -35
  210. package/src/composables/group/useProvideGroupState.ts +5 -7
  211. package/src/composables/useComponentFocus.ts +17 -0
  212. package/src/composables/{icons/useComponentIcons.ts → useComponentIcons.ts} +29 -20
  213. package/src/composables/useDebouncedInput.ts +25 -0
  214. package/src/composables/useModifiers.ts +18 -20
  215. package/src/composables/useOptions.ts +31 -0
  216. package/src/composables/useTextCount.ts +57 -0
  217. package/src/constants.ts +5 -7
  218. package/src/directives/{.README → .gitkeep} +0 -0
  219. package/src/icons.ts +7 -0
  220. package/src/index.ts +12 -5
  221. package/src/props/index.ts +204 -36
  222. package/src/resolvers/unplugin.ts +112 -0
  223. package/src/shims.d.ts +13 -0
  224. package/src/stories/Accordion/Accordion.settings.ts +46 -0
  225. package/src/stories/Accordion/Accordion.stories.mdx +21 -21
  226. package/src/stories/Accordion/Accordion.test.ts +61 -0
  227. package/src/stories/Accordion/AccordionSlots.stories.mdx +46 -70
  228. package/src/stories/AccordionGroup/AccordionGroup.settings.ts +55 -0
  229. package/src/stories/AccordionGroup/AccordionGroup.stories.mdx +24 -27
  230. package/src/stories/AccordionGroup/AccordionGroup.test.ts +50 -0
  231. package/src/stories/AccordionGroup/AccordionGroupSlots.stories.mdx +56 -0
  232. package/src/stories/Badge/Badge.settings.ts +26 -0
  233. package/src/stories/Badge/Badge.stories.mdx +36 -24
  234. package/src/stories/Badge/Badge.test.ts +12 -0
  235. package/src/stories/Badge/BadgeSlots.stories.mdx +20 -0
  236. package/src/stories/Breadcrumb/Breadcrumb.settings.ts +41 -0
  237. package/src/stories/Breadcrumb/Breadcrumb.stories.mdx +32 -29
  238. package/src/stories/Breadcrumb/Breadcrumb.test.ts +50 -0
  239. package/src/stories/Breadcrumb/BreadcrumbSlots.stories.mdx +43 -0
  240. package/src/stories/Button/Button.settings.ts +145 -0
  241. package/src/stories/Button/Button.stories.mdx +20 -54
  242. package/src/stories/Button/Button.test.ts +35 -46
  243. package/src/stories/Button/ButtonIcon.stories.mdx +139 -29
  244. package/src/stories/Button/ButtonLink.stories.mdx +58 -111
  245. package/src/stories/Button/ButtonLoading.stories.mdx +89 -62
  246. package/src/stories/Button/ButtonModifiers.stories.mdx +198 -121
  247. package/src/stories/Button/ButtonSlots.stories.mdx +83 -95
  248. package/src/stories/Button/ButtonState.stories.mdx +75 -0
  249. package/src/stories/Button/ButtonToggle.stories.mdx +50 -0
  250. package/src/stories/ButtonGroup/ButtonGroup.settings.ts +33 -0
  251. package/src/stories/ButtonGroup/ButtonGroup.stories.mdx +16 -18
  252. package/src/stories/ButtonGroup/ButtonGroup.test.ts +35 -0
  253. package/src/stories/ButtonGroup/ButtonGroupModifiers.stories.mdx +52 -0
  254. package/src/stories/ButtonGroup/ButtonGroupSlots.stories.mdx +37 -0
  255. package/src/stories/ButtonGroup/ButtonGroupToggle.stories.mdx +52 -110
  256. package/src/stories/Card/Card.settings.ts +55 -0
  257. package/src/stories/Card/Card.stories.mdx +27 -11
  258. package/src/stories/Card/Card.test.ts +23 -0
  259. package/src/stories/Card/CardSlots.stories.mdx +80 -24
  260. package/src/stories/Checkbox/Checkbox.settings.ts +43 -0
  261. package/src/stories/Checkbox/Checkbox.stories.mdx +163 -0
  262. package/src/stories/Checkbox/Checkbox.test.ts +81 -0
  263. package/src/stories/Checkbox/CheckboxBinary.stories.mdx +68 -0
  264. package/src/stories/Checkbox/CheckboxSlots.stories.mdx +46 -0
  265. package/src/stories/CheckboxGroup/CheckboxGroup.settings.ts +15 -0
  266. package/src/stories/CheckboxGroup/CheckboxGroup.stories.mdx +134 -0
  267. package/src/stories/CheckboxGroup/CheckboxGroup.test.ts +83 -0
  268. package/src/stories/CheckboxGroup/CheckboxGroupOptions.stories.mdx +100 -0
  269. package/src/stories/CheckboxGroup/CheckboxGroupSlots.stories.mdx +67 -0
  270. package/src/stories/Combobox/Combobox.settings.ts +127 -0
  271. package/src/stories/Combobox/Combobox.stories.mdx +204 -0
  272. package/src/stories/Combobox/Combobox.test.ts +103 -0
  273. package/src/stories/Combobox/ComboboxMultiple.stories.mdx +74 -0
  274. package/src/stories/Combobox/ComboboxOptions.stories.mdx +100 -0
  275. package/src/stories/Combobox/ComboboxSlots.stories.mdx +48 -0
  276. package/src/stories/Dialog/Dialog.settings.ts +45 -0
  277. package/src/stories/Dialog/Dialog.stories.mdx +42 -16
  278. package/src/stories/Dialog/Dialog.test.ts +69 -0
  279. package/src/stories/Dialog/DialogSlots.stories.mdx +63 -0
  280. package/src/stories/Dropdown/Dropdown.settings.ts +51 -0
  281. package/src/stories/Dropdown/Dropdown.stories.mdx +102 -29
  282. package/src/stories/Dropdown/Dropdown.test.ts +43 -0
  283. package/src/stories/Dropdown/DropdownOptions.stories.mdx +87 -67
  284. package/src/stories/Icon/Icon.settings.ts +72 -0
  285. package/src/stories/Icon/Icon.stories.mdx +76 -59
  286. package/src/stories/Icon/IconsCollection.stories.mdx +68 -0
  287. package/src/stories/InputText/InputText.settings.ts +221 -0
  288. package/src/stories/InputText/InputText.stories.mdx +142 -69
  289. package/src/stories/InputText/InputText.test.ts +125 -0
  290. package/src/stories/InputText/InputTextIconPosition.stories.mdx +63 -16
  291. package/src/stories/InputText/InputTextLength.stories.mdx +110 -0
  292. package/src/stories/InputText/InputTextMinMax.stories.mdx +112 -0
  293. package/src/stories/InputText/InputTextSlots.stories.mdx +61 -22
  294. package/src/stories/InputText/InputTextType.stories.mdx +207 -29
  295. package/src/stories/Progress/Progress.settings.ts +33 -0
  296. package/src/stories/Progress/Progress.stories.mdx +12 -14
  297. package/src/stories/Progress/Progress.test.ts +9 -0
  298. package/src/stories/Radio/Radio.settings.ts +15 -0
  299. package/src/stories/Radio/Radio.stories.mdx +102 -42
  300. package/src/stories/Radio/Radio.test.ts +70 -0
  301. package/src/stories/Radio/RadioSlots.stories.mdx +39 -22
  302. package/src/stories/RadioGroup/RadioGroup.settings.ts +15 -0
  303. package/src/stories/RadioGroup/RadioGroup.stories.mdx +115 -54
  304. package/src/stories/RadioGroup/RadioGroup.test.ts +83 -0
  305. package/src/stories/RadioGroup/RadioGroupOptions.stories.mdx +83 -41
  306. package/src/stories/RadioGroup/RadioGroupSlots.stories.mdx +49 -144
  307. package/src/stories/Select/Select.settings.ts +86 -0
  308. package/src/stories/Select/Select.stories.mdx +173 -33
  309. package/src/stories/Select/Select.test.ts +82 -0
  310. package/src/stories/Select/SelectOptions.stories.mdx +91 -69
  311. package/src/stories/Select/SelectSlots.stories.mdx +48 -0
  312. package/src/stories/Textarea/Textarea.settings.ts +96 -0
  313. package/src/stories/Textarea/Textarea.stories.mdx +167 -47
  314. package/src/stories/Textarea/Textarea.test.ts +90 -0
  315. package/src/stories/Textarea/TextareaLength.stories.mdx +110 -0
  316. package/src/stories/Textarea/TextareaSlots.stories.mdx +61 -23
  317. package/src/stories/Textarea/TextareatIconPosition.stories.mdx +78 -0
  318. package/src/stories/argTypes.ts +457 -0
  319. package/src/test/expect.ts +27 -6
  320. package/src/test/options.ts +17 -0
  321. package/src/test/sleep.ts +2 -0
  322. package/src/test/types.d.ts +14 -0
  323. package/src/types/generic.d.ts +5 -0
  324. package/src/utils/ObjectUtilities.ts +253 -244
  325. package/dist/components/VvAccordion/VvAccordion.d.ts +0 -32
  326. package/dist/components/VvAccordion/useAccordionProps.d.ts +0 -16
  327. package/dist/components/VvAccordion/vv-accordion.es.js +0 -262
  328. package/dist/components/VvAccordion/vv-accordion.umd.js +0 -1
  329. package/dist/components/VvAccordionGroup/vv-accordion-group.es.js +0 -315
  330. package/dist/components/VvAccordionGroup/vv-accordion-group.umd.js +0 -1
  331. package/dist/components/VvBadge/vv-badge.es.js +0 -18
  332. package/dist/components/VvBadge/vv-badge.umd.js +0 -1
  333. package/dist/components/VvBreadcrumb/vv-breadcrumb.es.js +0 -206
  334. package/dist/components/VvBreadcrumb/vv-breadcrumb.umd.js +0 -1
  335. package/dist/components/VvButton/VvButton.d.ts +0 -115
  336. package/dist/components/VvButton/useButtonGroupProps.d.ts +0 -23
  337. package/dist/components/VvButton/vv-button.es.js +0 -422
  338. package/dist/components/VvButton/vv-button.umd.js +0 -1
  339. package/dist/components/VvButtonGroup/VvButtonGroup.d.ts +0 -57
  340. package/dist/components/VvButtonGroup/vv-button-group.es.js +0 -210
  341. package/dist/components/VvButtonGroup/vv-button-group.umd.js +0 -1
  342. package/dist/components/VvCard/vv-card.es.js +0 -188
  343. package/dist/components/VvCard/vv-card.umd.js +0 -1
  344. package/dist/components/VvCheck/VvCheck.d.ts +0 -47
  345. package/dist/components/VvCheck/VvCheck.vue.d.ts +0 -165
  346. package/dist/components/VvCheck/useCheckProps.d.ts +0 -16
  347. package/dist/components/VvCheck/vv-check.es.js +0 -321
  348. package/dist/components/VvCheck/vv-check.umd.js +0 -1
  349. package/dist/components/VvCheckGroup/VvCheckGroup.d.ts +0 -65
  350. package/dist/components/VvCheckGroup/VvCheckGroup.vue.d.ts +0 -272
  351. package/dist/components/VvCheckGroup/vv-check-group.es.js +0 -452
  352. package/dist/components/VvCheckGroup/vv-check-group.umd.js +0 -2
  353. package/dist/components/VvDialog/constants.d.ts +0 -5
  354. package/dist/components/VvDialog/vv-dialog.es.js +0 -315
  355. package/dist/components/VvDialog/vv-dialog.umd.js +0 -1
  356. package/dist/components/VvDropdown/VvDropdown.d.ts +0 -52
  357. package/dist/components/VvDropdown/vv-dropdown.es.js +0 -236
  358. package/dist/components/VvDropdown/vv-dropdown.umd.js +0 -1
  359. package/dist/components/VvIcon/vv-icon.es.js +0 -229
  360. package/dist/components/VvIcon/vv-icon.umd.js +0 -1
  361. package/dist/components/VvInputText/VvInputText.d.ts +0 -73
  362. package/dist/components/VvInputText/constants.d.ts +0 -55
  363. package/dist/components/VvInputText/vv-input-text.es.js +0 -725
  364. package/dist/components/VvInputText/vv-input-text.umd.js +0 -2
  365. package/dist/components/VvNativeSelect/VvNativeSelect.d.ts +0 -70
  366. package/dist/components/VvNativeSelect/VvNativeSelect.vue.d.ts +0 -228
  367. package/dist/components/VvNativeSelect/vv-native-select.es.js +0 -414
  368. package/dist/components/VvNativeSelect/vv-native-select.umd.js +0 -2
  369. package/dist/components/VvProgress/VvProgress.d.ts +0 -29
  370. package/dist/components/VvProgress/vv-progress.es.js +0 -185
  371. package/dist/components/VvProgress/vv-progress.umd.js +0 -1
  372. package/dist/components/VvRadio/VvRadio.d.ts +0 -22
  373. package/dist/components/VvRadio/useRadioProps.d.ts +0 -15
  374. package/dist/components/VvRadio/vv-radio.es.js +0 -309
  375. package/dist/components/VvRadio/vv-radio.umd.js +0 -1
  376. package/dist/components/VvRadioGroup/VvRadioGroup.d.ts +0 -54
  377. package/dist/components/VvRadioGroup/vv-radio-group.es.js +0 -441
  378. package/dist/components/VvRadioGroup/vv-radio-group.umd.js +0 -2
  379. package/dist/components/VvSelect/VvSelect.d.ts +0 -99
  380. package/dist/components/VvSelect/vv-select.es.js +0 -445
  381. package/dist/components/VvSelect/vv-select.umd.js +0 -2
  382. package/dist/components/VvTextarea/VvTextarea.d.ts +0 -88
  383. package/dist/components/VvTextarea/constants.d.ts +0 -19
  384. package/dist/components/VvTextarea/vv-textarea.es.js +0 -548
  385. package/dist/components/VvTextarea/vv-textarea.umd.js +0 -2
  386. package/dist/composables/debouncedInput/useDebouncedInput.d.ts +0 -2
  387. package/dist/composables/focus/useComponentFocus.d.ts +0 -7
  388. package/dist/composables/options/useOptions.d.ts +0 -5
  389. package/dist/composables/textLimit/useTextLimit.d.ts +0 -14
  390. package/dist/stories/Icon/IconList.vue.d.ts +0 -44
  391. package/dist/stories/utils.d.ts +0 -5
  392. package/dist/ui-vue.es.js +0 -3001
  393. package/dist/ui-vue.umd.js +0 -2
  394. package/src/assets/icons/index.js +0 -7
  395. package/src/components/VvAccordion/VvAccordion.ts +0 -34
  396. package/src/components/VvAccordion/useAccordionProps.ts +0 -45
  397. package/src/components/VvBadge/VvBadge.ts +0 -4
  398. package/src/components/VvButton/VvButton.ts +0 -117
  399. package/src/components/VvButton/useButtonGroupProps.ts +0 -51
  400. package/src/components/VvButtonGroup/VvButtonGroup.ts +0 -37
  401. package/src/components/VvCheck/VvCheck.ts +0 -48
  402. package/src/components/VvCheck/VvCheck.vue +0 -149
  403. package/src/components/VvCheck/useCheckProps.ts +0 -41
  404. package/src/components/VvCheckGroup/VvCheckGroup.ts +0 -34
  405. package/src/components/VvCheckGroup/VvCheckGroup.vue +0 -84
  406. package/src/components/VvDialog/VvDialog.ts +0 -17
  407. package/src/components/VvDialog/constants.ts +0 -5
  408. package/src/components/VvDropdown/VvDropdown.ts +0 -46
  409. package/src/components/VvInputText/VvInputText.ts +0 -66
  410. package/src/components/VvInputText/constants.ts +0 -34
  411. package/src/components/VvNativeSelect/VvNativeSelect.ts +0 -70
  412. package/src/components/VvNativeSelect/VvNativeSelect.vue +0 -106
  413. package/src/components/VvProgress/VvProgress.ts +0 -28
  414. package/src/components/VvRadio/VvRadio.ts +0 -25
  415. package/src/components/VvRadio/useRadioProps.ts +0 -40
  416. package/src/components/VvRadioGroup/VvRadioGroup.ts +0 -25
  417. package/src/components/VvSelect/VvSelect.ts +0 -91
  418. package/src/components/VvTextarea/VvTextarea.ts +0 -64
  419. package/src/components/VvTextarea/constants.ts +0 -14
  420. package/src/composables/debouncedInput/useDebouncedInput.ts +0 -19
  421. package/src/composables/focus/useComponentFocus.ts +0 -22
  422. package/src/composables/options/useOptions.ts +0 -27
  423. package/src/composables/textLimit/useTextLimit.ts +0 -44
  424. package/src/stories/Accordion/AccordionBordered.stories.mdx +0 -26
  425. package/src/stories/Accordion/AccordionIconRight.stories.mdx +0 -32
  426. package/src/stories/Accordion/accordionTest.js +0 -36
  427. package/src/stories/AccordionGroup/Accordion.stories.mdx +0 -42
  428. package/src/stories/AccordionGroup/AccordionItems.stories.mdx +0 -51
  429. package/src/stories/AccordionGroup/accordionGroupTest.js +0 -51
  430. package/src/stories/Badge/BadgeColor.stories.mdx +0 -54
  431. package/src/stories/Badge/BadgeDot.stories.mdx +0 -20
  432. package/src/stories/Badge/BadgeTest.js +0 -21
  433. package/src/stories/Breadcrumb/BreadcrumbMultiline.stories.mdx +0 -41
  434. package/src/stories/Button/ButtonBadge.stories.mdx +0 -34
  435. package/src/stories/Button/ButtonIconPosition.stories.mdx +0 -106
  436. package/src/stories/Button/ButtonVariant.stories.mdx +0 -205
  437. package/src/stories/Button/test.js +0 -41
  438. package/src/stories/ButtonGroup/ButtonGroupAction.stories.mdx +0 -83
  439. package/src/stories/ButtonGroup/ButtonGroupActionQuiet.stories.mdx +0 -50
  440. package/src/stories/ButtonGroup/ButtonGroupBlock.stories.mdx +0 -40
  441. package/src/stories/ButtonGroup/ButtonGroupCompact.stories.mdx +0 -38
  442. package/src/stories/ButtonGroup/ButtonGroupRounded.stories.mdx +0 -77
  443. package/src/stories/ButtonGroup/ButtonGroupTest.js +0 -61
  444. package/src/stories/ButtonGroup/ButtonGroupVertical.stories.mdx +0 -38
  445. package/src/stories/Card/CardVariant.stories.mdx +0 -37
  446. package/src/stories/Check/Check.stories.mdx +0 -62
  447. package/src/stories/Check/CheckBinary.stories.mdx +0 -80
  448. package/src/stories/Check/CheckDisabled.stories.mdx +0 -30
  449. package/src/stories/Check/CheckError.stories.mdx +0 -64
  450. package/src/stories/Check/CheckErrorTests.js +0 -72
  451. package/src/stories/Check/CheckHintLabel.stories.mdx +0 -30
  452. package/src/stories/Check/CheckPropertyTest.js +0 -101
  453. package/src/stories/Check/CheckReadonly.stories.mdx +0 -30
  454. package/src/stories/Check/CheckSlots.stories.mdx +0 -51
  455. package/src/stories/Check/CheckSwitch.stories.mdx +0 -30
  456. package/src/stories/CheckGroup/CheckGroup.stories.mdx +0 -69
  457. package/src/stories/CheckGroup/CheckGroupDisabled.stories.mdx +0 -26
  458. package/src/stories/CheckGroup/CheckGroupError.stories.mdx +0 -28
  459. package/src/stories/CheckGroup/CheckGroupHintLabel.stories.mdx +0 -27
  460. package/src/stories/CheckGroup/CheckGroupLabel.stories.mdx +0 -26
  461. package/src/stories/CheckGroup/CheckGroupOptionLabel.stories.mdx +0 -48
  462. package/src/stories/CheckGroup/CheckGroupOptionValue.stories.mdx +0 -48
  463. package/src/stories/CheckGroup/CheckGroupOptions.stories.mdx +0 -40
  464. package/src/stories/CheckGroup/CheckGroupReadonly.stories.mdx +0 -26
  465. package/src/stories/CheckGroup/CheckGroupSlots.stories.mdx +0 -152
  466. package/src/stories/CheckGroup/CheckGroupValid.stories.mdx +0 -28
  467. package/src/stories/CheckGroup/CheckGroupVertical.stories.mdx +0 -26
  468. package/src/stories/Dialog/DialogAutoClose.stories.mdx +0 -18
  469. package/src/stories/Dialog/DialogSize.stories.mdx +0 -36
  470. package/src/stories/Dropdown/DropdownDisabled.stories.mdx +0 -25
  471. package/src/stories/Dropdown/DropdownLabelNoResults.stories.mdx +0 -25
  472. package/src/stories/Dropdown/DropdownMaxValues.stories.mdx +0 -26
  473. package/src/stories/Dropdown/DropdownMultiple.stories.mdx +0 -56
  474. package/src/stories/Dropdown/DropdownUseObject.stories.mdx +0 -58
  475. package/src/stories/Icon/IconList.vue +0 -34
  476. package/src/stories/Icon/IconPrefix.stories.mdx +0 -79
  477. package/src/stories/Icon/IconRemote.stories.mdx +0 -39
  478. package/src/stories/Icon/IconTest.js +0 -27
  479. package/src/stories/Icon/IconsList.stories.mdx +0 -35
  480. package/src/stories/InputText/InputTextAutocomplete.stories.mdx +0 -15
  481. package/src/stories/InputText/InputTextAutofocus.stories.mdx +0 -20
  482. package/src/stories/InputText/InputTextDisabled.stories.mdx +0 -19
  483. package/src/stories/InputText/InputTextError.stories.mdx +0 -19
  484. package/src/stories/InputText/InputTextFloating.stories.mdx +0 -20
  485. package/src/stories/InputText/InputTextHintLabel.stories.mdx +0 -18
  486. package/src/stories/InputText/InputTextIcon.stories.mdx +0 -18
  487. package/src/stories/InputText/InputTextLabel.stories.mdx +0 -15
  488. package/src/stories/InputText/InputTextLoading.stories.mdx +0 -19
  489. package/src/stories/InputText/InputTextMax.stories.mdx +0 -31
  490. package/src/stories/InputText/InputTextMaxLength.stories.mdx +0 -36
  491. package/src/stories/InputText/InputTextMin.stories.mdx +0 -31
  492. package/src/stories/InputText/InputTextMinLength.stories.mdx +0 -15
  493. package/src/stories/InputText/InputTextPlaceholder.stories.mdx +0 -15
  494. package/src/stories/InputText/InputTextReadonly.stories.mdx +0 -19
  495. package/src/stories/InputText/InputTextStep.stories.mdx +0 -31
  496. package/src/stories/InputText/InputTextValid.stories.mdx +0 -19
  497. package/src/stories/NativeSelect/NativeSelect.stories.mdx +0 -53
  498. package/src/stories/NativeSelect/NativeSelectDisabled.stories.mdx +0 -32
  499. package/src/stories/NativeSelect/NativeSelectError.stories.mdx +0 -36
  500. package/src/stories/NativeSelect/NativeSelectHintLabel.stories.mdx +0 -34
  501. package/src/stories/NativeSelect/NativeSelectIconLeftRight.stories.mdx +0 -42
  502. package/src/stories/NativeSelect/NativeSelectLoading.stories.mdx +0 -27
  503. package/src/stories/NativeSelect/NativeSelectOptions.stories.mdx +0 -78
  504. package/src/stories/NativeSelect/NativeSelectReadonly.stories.mdx +0 -34
  505. package/src/stories/NativeSelect/NativeSelectUseObject.stories.mdx +0 -66
  506. package/src/stories/NativeSelect/NativeSelectValid.stories.mdx +0 -36
  507. package/src/stories/NativeSelect/NativeSelectValueKey.stories.mdx +0 -66
  508. package/src/stories/Progress/ProgressDeterminate.stories.mdx +0 -19
  509. package/src/stories/Radio/RadioDisabled.stories.mdx +0 -30
  510. package/src/stories/Radio/RadioError.stories.mdx +0 -64
  511. package/src/stories/Radio/RadioHintLabel.stories.mdx +0 -30
  512. package/src/stories/Radio/RadioTest.js +0 -89
  513. package/src/stories/RadioGroup/RadioGroupDisabled.stories.mdx +0 -29
  514. package/src/stories/RadioGroup/RadioGroupError.stories.mdx +0 -31
  515. package/src/stories/RadioGroup/RadioGroupHintLabel.stories.mdx +0 -28
  516. package/src/stories/RadioGroup/RadioGroupLabel.stories.mdx +0 -29
  517. package/src/stories/RadioGroup/RadioGroupOptionLabel.stories.mdx +0 -65
  518. package/src/stories/RadioGroup/RadioGroupOptionValue.stories.mdx +0 -65
  519. package/src/stories/RadioGroup/RadioGroupReadonly.stories.mdx +0 -29
  520. package/src/stories/RadioGroup/RadioGroupValid.stories.mdx +0 -31
  521. package/src/stories/RadioGroup/RadioGroupVertical.stories.mdx +0 -29
  522. package/src/stories/RadioGroup/RadioOptionsTest.js +0 -78
  523. package/src/stories/RadioGroup/RadioPropertyTest.js +0 -131
  524. package/src/stories/RadioGroup/RadioSlotsTest.js +0 -20
  525. package/src/stories/Select/SelectDisabled.stories.mdx +0 -32
  526. package/src/stories/Select/SelectMaxValues.stories.mdx +0 -33
  527. package/src/stories/Select/SelectMultiple.stories.mdx +0 -64
  528. package/src/stories/Select/SelectSearchable.stories.mdx +0 -80
  529. package/src/stories/Select/SelectSeparator.stories.mdx +0 -64
  530. package/src/stories/Select/SelectUseObject.stories.mdx +0 -66
  531. package/src/stories/Textarea/TextareaAutoclear.stories.mdx +0 -23
  532. package/src/stories/Textarea/TextareaAutocomplete.stories.mdx +0 -23
  533. package/src/stories/Textarea/TextareaAutofocus.stories.mdx +0 -24
  534. package/src/stories/Textarea/TextareaDebounce.stories.mdx +0 -23
  535. package/src/stories/Textarea/TextareaDisabled.stories.mdx +0 -23
  536. package/src/stories/Textarea/TextareaError.stories.mdx +0 -22
  537. package/src/stories/Textarea/TextareaErrorLabel.stories.mdx +0 -37
  538. package/src/stories/Textarea/TextareaFloating.stories.mdx +0 -25
  539. package/src/stories/Textarea/TextareaHintLabel.stories.mdx +0 -22
  540. package/src/stories/Textarea/TextareaIcon.stories.mdx +0 -22
  541. package/src/stories/Textarea/TextareaIconPosition.stories.mdx +0 -39
  542. package/src/stories/Textarea/TextareaId.stories.mdx +0 -19
  543. package/src/stories/Textarea/TextareaLabel.stories.mdx +0 -19
  544. package/src/stories/Textarea/TextareaLimit.stories.mdx +0 -50
  545. package/src/stories/Textarea/TextareaLoading.stories.mdx +0 -22
  546. package/src/stories/Textarea/TextareaLoadingLabel.stories.mdx +0 -23
  547. package/src/stories/Textarea/TextareaMaxLength.stories.mdx +0 -19
  548. package/src/stories/Textarea/TextareaMinLength.stories.mdx +0 -19
  549. package/src/stories/Textarea/TextareaModifiers.stories.mdx +0 -24
  550. package/src/stories/Textarea/TextareaName.stories.mdx +0 -23
  551. package/src/stories/Textarea/TextareaPlaceholder.stories.mdx +0 -19
  552. package/src/stories/Textarea/TextareaReadonly.stories.mdx +0 -23
  553. package/src/stories/Textarea/TextareaRequired.stories.mdx +0 -22
  554. package/src/stories/Textarea/TextareaResizable.stories.mdx +0 -22
  555. package/src/stories/Textarea/TextareaRowsCols.stories.mdx +0 -39
  556. package/src/stories/Textarea/TextareaValid.stories.mdx +0 -22
  557. package/src/stories/Textarea/TextareaValidLabel.stories.mdx +0 -35
  558. package/src/stories/stories.scss +0 -35
  559. package/src/stories/utils.ts +0 -12
  560. package/src/stories/volver-ui-vue.stories.mdx +0 -77
  561. package/src/types/.README +0 -0
@@ -0,0 +1,88 @@
1
+ import {
2
+ ValidProps,
3
+ InvalidProps,
4
+ HintProps,
5
+ LoadingProps,
6
+ DisabledProps,
7
+ ReadonlyProps,
8
+ ModifiersProps,
9
+ OptionsProps,
10
+ IconProps,
11
+ TabindexProps,
12
+ FloatingProps,
13
+ UnselectableProps,
14
+ IdNameProps,
15
+ } from '@/props'
16
+
17
+ export const VvComboboxEvents = [
18
+ 'update:modelValue',
19
+ 'change:search',
20
+ 'focus',
21
+ 'blur',
22
+ ]
23
+
24
+ export const VvComboboxProps = {
25
+ ...IdNameProps,
26
+ ...TabindexProps,
27
+ ...ValidProps,
28
+ ...InvalidProps,
29
+ ...HintProps,
30
+ ...LoadingProps,
31
+ ...DisabledProps,
32
+ ...ReadonlyProps,
33
+ ...ModifiersProps,
34
+ ...OptionsProps,
35
+ ...IconProps,
36
+ ...FloatingProps,
37
+ ...UnselectableProps,
38
+ /**
39
+ * modelValue can be a string, number, boolean, object or array of string, number, boolean, object
40
+ */
41
+ modelValue: {
42
+ type: [String, Number, Boolean, Object, Array],
43
+ default: undefined,
44
+ },
45
+ /**
46
+ * Select input label
47
+ */
48
+ label: String,
49
+ /**
50
+ * Label of "no results" options
51
+ */
52
+ labelNoResults: { type: String, default: 'No results' },
53
+ /**
54
+ * Select input placeholder
55
+ */
56
+ placeholder: String,
57
+ /**
58
+ * Use input text to search on options
59
+ */
60
+ searchable: Boolean,
61
+ /**
62
+ * On searchable select is the input search placeholder
63
+ */
64
+ searchPlaceholder: String,
65
+ /**
66
+ * The input search debounce time in ms
67
+ */
68
+ debounceSearch: {
69
+ type: [Number, String],
70
+ default: 0,
71
+ },
72
+ /**
73
+ * Manage modelValue as string[] or object[]
74
+ */
75
+ multiple: Boolean,
76
+ /**
77
+ * The max number of selected values
78
+ */
79
+ maxValues: [Number, String],
80
+ /**
81
+ * The select label separator visible to the user
82
+ */
83
+ separator: { type: String, default: ', ' },
84
+ /**
85
+ * Show native select
86
+ */
87
+ native: Boolean,
88
+ }
@@ -1,91 +1,93 @@
1
+ <script lang="ts">
2
+ export default {
3
+ name: 'VvDialog',
4
+ }
5
+ </script>
6
+
7
+ <script setup lang="ts">
8
+ import { type DialogHTMLAttributes, computed, ref } from 'vue'
9
+ import { useVModel, onClickOutside } from '@vueuse/core'
10
+ import VvIcon from '@/components/VvIcon/VvIcon.vue'
11
+ import { VvDialogEvents, VvDialogProps } from '@/components/VvDialog'
12
+
13
+ // props, emit
14
+ const props = defineProps(VvDialogProps)
15
+ const emit = defineEmits(VvDialogEvents)
16
+
17
+ // data
18
+ const show = useVModel(props, 'modelValue', emit)
19
+ const htmlAttrIsOpen = ref(true)
20
+
21
+ // template ref
22
+ const modalWrapper = ref(null)
23
+
24
+ // styles
25
+ const dialogAttrs = computed(() => {
26
+ const { id } = props
27
+ return {
28
+ id,
29
+ open: htmlAttrIsOpen.value,
30
+ } as DialogHTMLAttributes
31
+ })
32
+ const dialogClass = computed(() => {
33
+ if (!props.size) {
34
+ return 'vv-dialog'
35
+ }
36
+ return ['vv-dialog', `vv-dialog--${props.size}`]
37
+ })
38
+
39
+ // transitions
40
+ const transitioName = computed(() => `vv-dialog--${props.transition}`)
41
+ const dialogTransitionHandlers = {
42
+ 'before-enter': () => {
43
+ htmlAttrIsOpen.value = true
44
+ emit('open')
45
+ },
46
+ 'after-leave': () => {
47
+ htmlAttrIsOpen.value = false
48
+ emit('close')
49
+ },
50
+ }
51
+
52
+ // methods
53
+ onClickOutside(modalWrapper, () => {
54
+ if (props.autoClose) {
55
+ show.value = false
56
+ }
57
+ })
58
+
59
+ function closeDialog() {
60
+ show.value = false
61
+ }
62
+ </script>
63
+
1
64
  <template>
2
65
  <Transition :name="transitioName" v-on="dialogTransitionHandlers">
3
- <dialog v-show="openDialog" v-bind="dialogAttrs" :class="dialogClass">
66
+ <dialog v-show="show" v-bind="dialogAttrs" :class="dialogClass">
4
67
  <article ref="modalWrapper" class="vv-dialog__wrapper">
5
68
  <header v-if="$slots.header || title" class="vv-dialog__header">
69
+ <!-- @slot Header slot -->
6
70
  <slot name="header">
7
71
  {{ title }}
8
72
  <button
9
73
  type="button"
10
74
  aria-label="Close"
11
75
  class="vv-dialog__close"
12
- @click.prevent="closeDialog">
76
+ @click.prevent="closeDialog"
77
+ >
13
78
  <vv-icon name="close" />
14
79
  </button>
15
80
  </slot>
16
81
  </header>
17
82
  <div class="vv-dialog__content">
18
- <!-- @slot default -->
83
+ <!-- @slot Content slot -->
19
84
  <slot />
20
85
  </div>
21
86
  <footer v-if="$slots.footer" class="vv-dialog__footer">
87
+ <!-- @slot Footer slot -->
22
88
  <slot name="footer" />
23
89
  </footer>
24
90
  </article>
25
91
  </dialog>
26
92
  </Transition>
27
93
  </template>
28
-
29
- <script setup lang="ts">
30
- import type { DialogHTMLAttributes } from 'vue'
31
-
32
- import { computed, ref } from 'vue'
33
- import { useVModel, onClickOutside } from '@vueuse/core'
34
- import { VvDialogEvents, VvDialogProps } from './VvDialog'
35
-
36
- //Components
37
- import VvIcon from '../VvIcon/VvIcon.vue'
38
-
39
- //Constants
40
- import { VV_DIALOG_SIZES } from './constants'
41
-
42
- //Props, emits, slots, attrs
43
- const props = defineProps(VvDialogProps)
44
- const emit = defineEmits(VvDialogEvents)
45
-
46
- //Data
47
- const openDialog = useVModel(props, 'open', emit)
48
- const htmlAttrIsOpen = ref(true)
49
-
50
- //Template reference
51
- const modalWrapper = ref(null)
52
-
53
- //Style e binding
54
- const dialogAttrs = computed(() => {
55
- const { id } = props
56
- return {
57
- id,
58
- open: htmlAttrIsOpen.value
59
- } as DialogHTMLAttributes
60
- })
61
- 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
66
- }
67
- })
68
-
69
- //Transitions
70
- const transitioName = computed(() => `vv-dialog--${props.transition}`)
71
- const dialogTransitionHandlers = {
72
- 'after-enter': () => {
73
- htmlAttrIsOpen.value = true
74
- emit('open')
75
- },
76
- 'after-leave': () => {
77
- htmlAttrIsOpen.value = false
78
- emit('close')
79
- }
80
- }
81
-
82
- //Click outside
83
- onClickOutside(modalWrapper, () => {
84
- if (props.autoClose) openDialog.value = false
85
- })
86
-
87
- //Methods
88
- function closeDialog() {
89
- openDialog.value = false
90
- }
91
- </script>
@@ -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,130 +1,131 @@
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
- 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'
8
+ import { computed, toRefs } from 'vue'
9
+ import { nanoid } from 'nanoid'
10
+ import { useBemModifiers } from '@/composables/useModifiers'
11
+ import { useOptions } from '@/composables/useOptions'
12
+ import { contains, equals, removeFromList } from '@/utils/ObjectUtilities'
13
+ import { VvDropdownProps } from '@/components/VvDropdown'
14
+ import type { Option } from '@/types/generic'
15
+
16
+ // props, emit
17
+ const props = defineProps(VvDropdownProps)
18
+ const emit = defineEmits(['update:modelValue'])
33
19
 
34
- const props = defineProps(VvDropdownProps)
35
- const emit = defineEmits(['update:modelValue'])
20
+ // data
21
+ const hasId = computed(() => String(props.id || nanoid()))
22
+ const { modifiers, disabled } = toRefs(props)
36
23
 
37
- // data
38
- const id = uuidv4()
39
- const { modifiers, disabled } = toRefs(props)
24
+ // options
25
+ const { getOptionLabel, getOptionValue } = useOptions(props)
40
26
 
41
- //Styles & css classes modifiers
42
- const { bemCssClasses: dropdownClasses } = useBemModifiers('vv-dropdown', {
43
- modifiers,
44
- disabled
45
- })
27
+ // styles
28
+ const { bemCssClasses: dropdownClasses } = useBemModifiers('vv-dropdown', {
29
+ modifiers,
30
+ disabled,
31
+ })
46
32
 
47
- /**
48
- * Check if an option exist into modelValue array (multiple) or is equal to modelValue (single)
49
- * @param {String | Option} option
50
- */
51
- function isSelected(option: string | Option) {
52
- if (Array.isArray(props.modelValue)) {
53
- // check if contain whole option or option value
33
+ /**
34
+ * Check if an option exist into modelValue array (multiple) or is equal to modelValue (single)
35
+ * @param {String | Option} option
36
+ */
37
+ function getChecked(option: string | Option) {
38
+ if (Array.isArray(props.modelValue)) {
39
+ // check if contain whole option or option value
40
+ return (
41
+ contains(option, props.modelValue) ||
42
+ contains(getOptionValue(option), props.modelValue)
43
+ )
44
+ }
45
+ // check if modelValue is equal to option or option value
54
46
  return (
55
- ObjectUtilities.contains(option, props.modelValue) ||
56
- ObjectUtilities.contains(getValue(option), props.modelValue)
47
+ equals(option, props.modelValue) ||
48
+ equals(getOptionValue(option), props.modelValue)
57
49
  )
58
50
  }
59
- // check if modelValue is equal to option or option value
60
- return (
61
- ObjectUtilities.equals(option, props.modelValue) ||
62
- ObjectUtilities.equals(getValue(option), props.modelValue)
63
- )
64
- }
65
-
66
- /**
67
- * Retrieve the option value based on prop "valueKey" or the option if it is a string
68
- * @param {String | Option} option
69
- */
70
- function getValue(option: string | Option) {
71
- return typeof option === 'string' ? option : String(option[props.valueKey])
72
- }
73
-
74
- /**
75
- * Retrieve the option label based on prop "labelKey" or the option if it is a string
76
- * @param {String | Option} option
77
- */
78
- function getLabel(option: string | Option) {
79
- return typeof option === 'string' ? option : option[props.labelKey]
80
- }
81
51
 
82
- /**
83
- * Function triggered on input of checkbox or radio (multple or single mode)
84
- * @param event on input event (checkbox or radio input)
85
- */
86
- function onInput(event: Event) {
87
- const target = event.target as HTMLInputElement
88
-
89
- // Value initialized with string input value
90
- // Can be an Array of string or an Option or Array of Options
91
- let value: string | string[] | Option | Option[] = target.value
92
- // Find option object if useObject prop is true and options are objects
93
- const valueObject = props.useObject
94
- ? props.options?.find(
95
- (option) => (option as Option)[props.valueKey] == value
96
- )
97
- : null
52
+ /**
53
+ * Retrieve the disabled state of an option based on prop "disabled" or the disabled attribute
54
+ * @param {String | Option} option
55
+ */
56
+ function getDisabled(option: string | Option): boolean {
57
+ if (typeof option === 'string' || option.disabled === undefined) {
58
+ return disabled.value
59
+ }
60
+ return option.disabled
61
+ }
98
62
 
99
- // use valueObject if exist or the target value
100
- value = valueObject || value
63
+ /**
64
+ * Function triggered on input of checkbox or radio (multple or single mode)
65
+ * @param event on input event (checkbox or radio input)
66
+ */
67
+ function onInput(value: string | Option) {
68
+ if (props.disabled) {
69
+ return
70
+ }
101
71
 
102
- // Check multiple prop, override value with array and remove or add the value
103
- if (props.multiple) {
104
- // check maxValues prop and block check new values
105
- if (
106
- typeof props.maxValues !== 'undefined' &&
107
- props.maxValues >= 0 &&
108
- props.modelValue?.length >= props.maxValues
109
- ) {
110
- if (
111
- (Array.isArray(props.modelValue) &&
112
- !ObjectUtilities.contains(value, props.modelValue)) ||
113
- props.maxValues == 0
114
- ) {
115
- target.checked = false
116
- // maxValues reached
117
- return
72
+ let toReturn: string | string[] | Option | Option[] | undefined = value
73
+ // Check multiple prop, override value with array and remove or add the value
74
+ if (props.multiple) {
75
+ // check maxValues prop and block check new values
76
+ if (Array.isArray(props.modelValue)) {
77
+ if (
78
+ props.maxValues !== undefined &&
79
+ props.maxValues >= 0 &&
80
+ props.modelValue?.length >= props.maxValues
81
+ ) {
82
+ if (!contains(value, props.modelValue)) {
83
+ // maxValues reached
84
+ return
85
+ }
86
+ }
87
+ toReturn = contains(value, props.modelValue)
88
+ ? removeFromList(value, props.modelValue)
89
+ : [...props.modelValue, value]
90
+ } else {
91
+ toReturn = [value as Option]
118
92
  }
93
+ } else if (props.unselectable && value === props.modelValue) {
94
+ toReturn = undefined
119
95
  }
120
- if (Array.isArray(props.modelValue)) {
121
- value = ObjectUtilities.contains(value, props.modelValue)
122
- ? ObjectUtilities.removeFromList(value, props.modelValue)
123
- : [...props.modelValue, value]
124
- } else {
125
- value = [value]
126
- }
96
+ emit('update:modelValue', toReturn)
127
97
  }
128
- emit('update:modelValue', value)
129
- }
130
98
  </script>
99
+
100
+ <template>
101
+ <ul :id="hasId" :class="dropdownClasses" role="listbox">
102
+ <li v-if="!options?.length" role="option">
103
+ <label>
104
+ {{ labelNoResults }}
105
+ </label>
106
+ </li>
107
+ <li
108
+ v-for="(option, index) in options"
109
+ :key="index"
110
+ role="option"
111
+ :aria-selected="getChecked(option)"
112
+ >
113
+ <label
114
+ :for="`dropdown-${index}-${hasId}`"
115
+ @click.prevent="onInput(getOptionValue(option))"
116
+ >
117
+ <input
118
+ :id="`dropdown-${index}-${hasId}`"
119
+ :type="multiple ? 'checkbox' : 'radio'"
120
+ :value="getOptionValue(option)"
121
+ :checked="getChecked(option)"
122
+ :disabled="getDisabled(option)"
123
+ :name="name"
124
+ tabindex="-1"
125
+ aria-hidden="true"
126
+ />
127
+ {{ getOptionLabel(option) }}
128
+ </label>
129
+ </li>
130
+ </ul>
131
+ </template>
@@ -0,0 +1,35 @@
1
+ import {
2
+ DisabledProps,
3
+ IdNameProps,
4
+ ModifiersProps,
5
+ OptionsProps,
6
+ } from '@/props'
7
+
8
+ export const VvDropdownProps = {
9
+ ...IdNameProps,
10
+ ...OptionsProps,
11
+ ...DisabledProps,
12
+ ...ModifiersProps,
13
+ /**
14
+ * modelValue can be a string, number, boolean, object or array of string, number, boolean, object
15
+ */
16
+ modelValue: {
17
+ type: [String, Number, Boolean, Object, Array],
18
+ },
19
+ /**
20
+ * Label of "no results" options
21
+ */
22
+ labelNoResults: { type: String, default: 'No results' },
23
+ /**
24
+ * Manage modelValue as string[] or object[]
25
+ */
26
+ multiple: Boolean,
27
+ /**
28
+ * The max number of selected values
29
+ */
30
+ maxValues: [Number, String],
31
+ /**
32
+ * If true the input will be unselectable
33
+ */
34
+ unselectable: { type: Boolean, default: true },
35
+ }
@@ -0,0 +1,64 @@
1
+ # VvIcon
2
+
3
+ VvIcon use [Iconify](https://iconify.design/) library and [Iconify Vue Component](https://docs.iconify.design/icon-components/vue/) under the hood.
4
+
5
+ ## Props
6
+
7
+ `VvIcon` provide `name`, `provider` and `prefix` props.
8
+ Only `name` is required because the default provider is `vv` and the default `prefix` is `normal`.
9
+
10
+ ## Custom icons
11
+
12
+ `@volverjs/ui-vue` has the node bin script `generate-icons` to create the [IconifyJSON](https://docs.iconify.design/types/iconify-json.html) objects.
13
+ This function for input params has the source path to the icons folder and the destination path for output json files.
14
+
15
+ ```bash
16
+ generate-icons --srcPath=assets/icons --destPath=src/assets/icons
17
+ ```
18
+
19
+ The source path can have subfolders. In this case the folder name will be the iconify [prefix](https://docs.iconify.design/icon-components/vue/#icon) and all the children SVG icons will be the icons `name`.
20
+ The `api-provider` is `@vv` by default, you can change it in plugin options.
21
+
22
+ ![iconify name structure](../../../.storybook/static/iconify-name-structure.png)
23
+
24
+ For example, if you have the following folders:
25
+
26
+ ```
27
+ assets/icons/simple/*.svg
28
+ assets/icons/normal/*.svg
29
+ assets/icons/detailed/*.svg
30
+ ```
31
+
32
+ The script `generate-icons --srcPath=assets/icons` will generate three json files: `simple.json`, `normal.json` and `detailed.json`.
33
+ Each file contains the icons with the `@vv` provider and the prefix `simple`, `normal` and `detailed` respectively.
34
+
35
+ ```
36
+ @vv:simple:{fileName}
37
+ @vv:normal:{fileName}
38
+ @vv:detailed:{fileName}
39
+ ```
40
+
41
+ ### Example
42
+
43
+ Put the SVG files inside a folder (ex. `assets/icons/custom/*.svg`).
44
+ Launch the script `generate-icons --srcPath=assets/icons/custom` to generate the `custom.json` file. Import the `custom.json` file in your `main.ts` file and add it to the `iconsCollections` array.
45
+
46
+ ```typescript
47
+ import customIcons from '@/assets/icons/custom.json'
48
+
49
+ app.use(VolverPlugin, {
50
+ iconsCollections: [customIcons]
51
+ })
52
+ ```
53
+
54
+ Now you can use the icons in your templates with the `prefix` prop.
55
+
56
+ ```html
57
+ <vv-icon name="iconName" prefix="custom" />
58
+ ```
59
+
60
+ Or using the `@vv:custom:{iconName}` syntax.
61
+
62
+ ```html
63
+ <vv-icon name="custom:{iconName}" />
64
+ ```