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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (431) hide show
  1. package/bin/icons.cjs +73 -0
  2. package/bin/icons.js +75 -0
  3. package/dist/Volver.d.ts +15 -2
  4. package/dist/components/VvAccordion/VvAccordion.es.js +133 -236
  5. package/dist/components/VvAccordion/VvAccordion.umd.js +1 -1
  6. package/dist/components/VvAccordion/VvAccordion.vue.d.ts +32 -97
  7. package/dist/components/VvAccordion/index.d.ts +46 -0
  8. package/dist/components/VvAccordionGroup/VvAccordionGroup.es.js +199 -277
  9. package/dist/components/VvAccordionGroup/VvAccordionGroup.umd.js +1 -1
  10. package/dist/components/VvAccordionGroup/VvAccordionGroup.vue.d.ts +44 -151
  11. package/dist/components/VvAccordionGroup/{VvAccordionGroup.d.ts → index.d.ts} +9 -13
  12. package/dist/components/VvBadge/VvBadge.es.js +42 -151
  13. package/dist/components/VvBadge/VvBadge.umd.js +1 -1
  14. package/dist/components/VvBadge/VvBadge.vue.d.ts +12 -53
  15. package/dist/components/VvBadge/{VvBadge.d.ts → index.d.ts} +0 -0
  16. package/dist/components/VvBreadcrumb/VvBreadcrumb.es.js +55 -168
  17. package/dist/components/VvBreadcrumb/VvBreadcrumb.umd.js +1 -1
  18. package/dist/components/VvBreadcrumb/VvBreadcrumb.vue.d.ts +24 -104
  19. package/dist/components/VvBreadcrumb/{VvBreadcrumb.d.ts → index.d.ts} +1 -1
  20. package/dist/components/VvButton/VvButton.es.js +298 -312
  21. package/dist/components/VvButton/VvButton.umd.js +1 -1
  22. package/dist/components/VvButton/VvButton.vue.d.ts +91 -163
  23. package/dist/components/VvButton/{VvButton.d.ts → index.d.ts} +46 -9
  24. package/dist/components/VvButtonGroup/VvButtonGroup.es.js +59 -172
  25. package/dist/components/VvButtonGroup/VvButtonGroup.umd.js +1 -1
  26. package/dist/components/VvButtonGroup/VvButtonGroup.vue.d.ts +30 -125
  27. package/dist/components/VvButtonGroup/{VvButtonGroup.d.ts → index.d.ts} +0 -0
  28. package/dist/components/VvCard/VvCard.es.js +55 -166
  29. package/dist/components/VvCard/VvCard.umd.js +1 -1
  30. package/dist/components/VvCard/VvCard.vue.d.ts +16 -61
  31. package/dist/components/VvCard/{VvCard.d.ts → index.d.ts} +1 -1
  32. package/dist/components/VvCheckbox/VvCheckbox.es.js +344 -0
  33. package/dist/components/VvCheckbox/VvCheckbox.umd.js +1 -0
  34. package/dist/components/VvCheckbox/VvCheckbox.vue.d.ts +87 -0
  35. package/dist/components/VvCheckbox/index.d.ts +86 -0
  36. package/dist/components/VvCheckboxGroup/VvCheckboxGroup.es.js +415 -0
  37. package/dist/components/VvCheckboxGroup/VvCheckboxGroup.umd.js +1 -0
  38. package/dist/components/VvCheckboxGroup/VvCheckboxGroup.vue.d.ts +113 -0
  39. package/dist/components/{VvCheckGroup/VvCheckGroup.d.ts → VvCheckboxGroup/index.d.ts} +10 -10
  40. package/dist/components/VvDialog/VvDialog.es.js +108 -230
  41. package/dist/components/VvDialog/VvDialog.umd.js +1 -1
  42. package/dist/components/VvDialog/VvDialog.vue.d.ts +28 -132
  43. package/dist/components/VvDialog/{VvDialog.d.ts → index.d.ts} +2 -6
  44. package/dist/components/VvDropdown/VvDropdown.es.js +167 -186
  45. package/dist/components/VvDropdown/VvDropdown.umd.js +1 -1
  46. package/dist/components/VvDropdown/VvDropdown.vue.d.ts +34 -136
  47. package/dist/components/VvDropdown/{VvDropdown.d.ts → index.d.ts} +7 -3
  48. package/dist/components/VvIcon/VvIcon.es.js +62 -174
  49. package/dist/components/VvIcon/VvIcon.umd.js +1 -1
  50. package/dist/components/VvIcon/VvIcon.vue.d.ts +36 -150
  51. package/dist/components/VvIcon/{VvIcon.d.ts → index.d.ts} +9 -0
  52. package/dist/components/VvInputText/VvInputClearAction.d.ts +36 -0
  53. package/dist/components/VvInputText/VvInputPasswordAction.d.ts +56 -0
  54. package/dist/components/VvInputText/VvInputStepAction.d.ts +37 -0
  55. package/dist/components/VvInputText/VvInputText.es.js +586 -577
  56. package/dist/components/VvInputText/VvInputText.umd.js +1 -2
  57. package/dist/components/VvInputText/VvInputText.vue.d.ts +187 -275
  58. package/dist/components/VvInputText/VvInputTextActions.d.ts +1 -1
  59. package/dist/components/VvInputText/index.d.ts +175 -0
  60. package/dist/components/VvNativeSelect/VvNativeSelect.es.js +299 -347
  61. package/dist/components/VvNativeSelect/VvNativeSelect.umd.js +1 -2
  62. package/dist/components/VvNativeSelect/VvNativeSelect.vue.d.ts +78 -190
  63. package/dist/components/VvNativeSelect/{VvNativeSelect.d.ts → index.d.ts} +35 -8
  64. package/dist/components/VvProgress/VvProgress.es.js +45 -162
  65. package/dist/components/VvProgress/VvProgress.umd.js +1 -1
  66. package/dist/components/VvProgress/VvProgress.vue.d.ts +17 -103
  67. package/dist/components/VvProgress/{VvProgress.d.ts → index.d.ts} +1 -7
  68. package/dist/components/VvRadio/VvRadio.es.js +292 -267
  69. package/dist/components/VvRadio/VvRadio.umd.js +1 -1
  70. package/dist/components/VvRadio/VvRadio.vue.d.ts +52 -122
  71. package/dist/components/VvRadio/index.d.ts +64 -0
  72. package/dist/components/VvRadioGroup/VvRadioGroup.es.js +342 -380
  73. package/dist/components/VvRadioGroup/VvRadioGroup.umd.js +1 -2
  74. package/dist/components/VvRadioGroup/VvRadioGroup.vue.d.ts +58 -213
  75. package/dist/components/VvRadioGroup/{VvRadioGroup.d.ts → index.d.ts} +2 -2
  76. package/dist/components/VvSelect/VvSelect.es.js +556 -510
  77. package/dist/components/VvSelect/VvSelect.umd.js +1 -2
  78. package/dist/components/VvSelect/VvSelect.vue.d.ts +75 -240
  79. package/dist/components/VvSelect/{VvSelect.d.ts → index.d.ts} +12 -5
  80. package/dist/components/VvTextarea/VvTextarea.es.js +372 -481
  81. package/dist/components/VvTextarea/VvTextarea.umd.js +1 -2
  82. package/dist/components/VvTextarea/VvTextarea.vue.d.ts +103 -299
  83. package/dist/components/VvTextarea/{VvTextarea.d.ts → index.d.ts} +36 -13
  84. package/dist/components/common/HintSlot.d.ts +10 -4
  85. package/dist/components/index.d.ts +13 -6
  86. package/dist/components/index.es.js +2070 -895
  87. package/dist/components/index.umd.js +1 -2
  88. package/dist/composables/debouncedInput/useDebouncedInput.d.ts +2 -2
  89. package/dist/composables/focus/useComponentFocus.d.ts +3 -3
  90. package/dist/composables/group/types/IAccordionGroupState.d.ts +1 -3
  91. package/dist/composables/group/types/IGroupState.d.ts +2 -2
  92. package/dist/composables/group/useInjectedGroupState.d.ts +4 -4
  93. package/dist/composables/group/useProvideGroupState.d.ts +1 -1
  94. package/dist/composables/icons/useComponentIcons.d.ts +2 -2
  95. package/dist/composables/textLimit/useTextLimit.d.ts +0 -3
  96. package/dist/constants.d.ts +4 -4
  97. package/dist/icons.d.ts +1881 -0
  98. package/dist/icons.es.js +4 -6
  99. package/dist/icons.umd.js +1 -1
  100. package/dist/index.es.js +2113 -932
  101. package/dist/index.umd.js +1 -2
  102. package/dist/props/index.d.ts +9 -3
  103. package/dist/resolvers/unplugin.d.ts +27 -0
  104. package/dist/resolvers/unplugin.es.js +40 -0
  105. package/dist/resolvers/unplugin.umd.js +1 -0
  106. package/dist/stories/Accordion/Accordion.test.d.ts +4 -0
  107. package/dist/stories/Badge/Badge.test.d.ts +2 -0
  108. package/dist/stories/Breadcrumb/Breadcrumb.test.d.ts +2 -0
  109. package/dist/stories/Button/Button.test.d.ts +3 -8
  110. package/dist/stories/Card/Card.test.d.ts +3 -0
  111. package/dist/stories/Dialog/Dialog.test.d.ts +2 -0
  112. package/dist/stories/Dropdown/Dropdown.test.d.ts +2 -0
  113. package/dist/stories/Icon/IconList.vue.d.ts +1 -43
  114. package/dist/stories/InputText/InputText.test.d.ts +6 -0
  115. package/dist/stories/Radio/Radio.test.d.ts +3 -0
  116. package/dist/stories/RadioGroup/RadioGroup.test.d.ts +8 -0
  117. package/dist/stories/Select/Select.test.d.ts +3 -0
  118. package/dist/stories/Textarea/Textarea.test.d.ts +8 -0
  119. package/dist/stories/utils.d.ts +1 -3
  120. package/dist/test/sleep.d.ts +1 -0
  121. package/dist/utils/ObjectUtilities.d.ts +82 -95
  122. package/env.d.ts +1 -0
  123. package/package.json +102 -68
  124. package/src/Volver.ts +32 -3
  125. package/src/assets/icons/detailed.json +1 -1
  126. package/src/assets/icons/normal.json +1 -1
  127. package/src/assets/icons/simple.json +1 -1
  128. package/src/components/VvAccordion/VvAccordion.vue +80 -76
  129. package/src/components/VvAccordion/index.ts +69 -0
  130. package/src/components/VvAccordionGroup/VvAccordionGroup.vue +77 -41
  131. package/src/components/VvAccordionGroup/{VvAccordionGroup.ts → index.ts} +8 -12
  132. package/src/components/VvBadge/VvBadge.vue +14 -10
  133. package/src/components/VvBadge/{VvBadge.ts → index.ts} +0 -0
  134. package/src/components/VvBreadcrumb/VvBreadcrumb.vue +18 -19
  135. package/src/components/VvBreadcrumb/{VvBreadcrumb.ts → index.ts} +1 -1
  136. package/src/components/VvButton/VvButton.vue +123 -113
  137. package/src/components/VvButton/index.ts +147 -0
  138. package/src/components/VvButtonGroup/VvButtonGroup.vue +21 -17
  139. package/src/components/VvButtonGroup/{VvButtonGroup.ts → index.ts} +0 -0
  140. package/src/components/VvCard/VvCard.vue +20 -22
  141. package/src/components/VvCard/{VvCard.ts → index.ts} +0 -0
  142. package/src/components/VvCheckbox/VvCheckbox.vue +124 -0
  143. package/src/components/VvCheckbox/index.ts +94 -0
  144. package/src/components/{VvCheckGroup/VvCheckGroup.vue → VvCheckboxGroup/VvCheckboxGroup.vue} +49 -54
  145. package/src/components/{VvCheckGroup/VvCheckGroup.ts → VvCheckboxGroup/index.ts} +9 -9
  146. package/src/components/VvDialog/VvDialog.vue +47 -50
  147. package/src/components/VvDialog/index.ts +10 -0
  148. package/src/components/VvDropdown/VvDropdown.vue +61 -40
  149. package/src/components/VvDropdown/{VvDropdown.ts → index.ts} +8 -4
  150. package/src/components/VvIcon/VvIcon.vue +31 -25
  151. package/src/components/VvIcon/{VvIcon.ts → index.ts} +9 -0
  152. package/src/components/VvInputText/VvInputClearAction.ts +53 -0
  153. package/src/components/VvInputText/VvInputPasswordAction.ts +70 -0
  154. package/src/components/VvInputText/VvInputStepAction.ts +49 -0
  155. package/src/components/VvInputText/VvInputText.vue +168 -170
  156. package/src/components/VvInputText/VvInputTextActions.ts +54 -108
  157. package/src/components/VvInputText/index.ts +135 -0
  158. package/src/components/VvNativeSelect/VvNativeSelect.vue +130 -68
  159. package/src/components/VvNativeSelect/{VvNativeSelect.ts → index.ts} +26 -7
  160. package/src/components/VvProgress/VvProgress.vue +25 -26
  161. package/src/components/VvProgress/{VvProgress.ts → index.ts} +4 -7
  162. package/src/components/VvRadio/VvRadio.vue +81 -108
  163. package/src/components/VvRadio/index.ts +78 -0
  164. package/src/components/VvRadioGroup/VvRadioGroup.vue +45 -45
  165. package/src/components/VvRadioGroup/{VvRadioGroup.ts → index.ts} +1 -1
  166. package/src/components/VvSelect/VvSelect.vue +90 -69
  167. package/src/components/VvSelect/{VvSelect.ts → index.ts} +12 -5
  168. package/src/components/VvTextarea/VvTextarea.vue +121 -128
  169. package/src/components/VvTextarea/{VvTextarea.ts → index.ts} +31 -11
  170. package/src/components/common/HintSlot.ts +157 -136
  171. package/src/components/index.ts +13 -6
  172. package/src/composables/debouncedInput/useDebouncedInput.ts +21 -15
  173. package/src/composables/focus/useComponentFocus.ts +6 -8
  174. package/src/composables/group/types/IAccordionGroupState.ts +1 -3
  175. package/src/composables/group/types/IGroupState.ts +2 -2
  176. package/src/composables/group/useInjectedGroupState.ts +20 -30
  177. package/src/composables/group/useProvideGroupState.ts +1 -2
  178. package/src/composables/icons/useComponentIcons.ts +2 -3
  179. package/src/composables/options/useOptions.ts +3 -0
  180. package/src/composables/textLimit/useTextLimit.ts +1 -4
  181. package/src/composables/useModifiers.ts +13 -15
  182. package/src/constants.ts +5 -7
  183. package/src/directives/{.README → .gitkeep} +0 -0
  184. package/src/icons.ts +7 -0
  185. package/src/index.ts +0 -1
  186. package/src/props/index.ts +7 -1
  187. package/src/resolvers/unplugin.ts +103 -0
  188. package/src/shims.d.ts +11 -0
  189. package/src/stories/Accordion/Accordion.stories.mdx +10 -9
  190. package/src/stories/Accordion/Accordion.test.ts +37 -0
  191. package/src/stories/Accordion/AccordionSlots.stories.mdx +40 -25
  192. package/src/stories/AccordionGroup/AccordionGroup.stories.mdx +10 -16
  193. package/src/stories/AccordionGroup/{accordionGroupTest.js → AccordionGroup.test.js} +15 -17
  194. package/src/stories/AccordionGroup/AccordionGroupCollapse.stories.mdx +38 -0
  195. package/src/stories/AccordionGroup/{AccordionItems.stories.mdx → AccordionGroupItems.stories.mdx} +7 -13
  196. package/src/stories/Badge/Badge.stories.mdx +8 -8
  197. package/src/stories/Badge/Badge.test.ts +16 -0
  198. package/src/stories/Badge/BadgeColor.stories.mdx +6 -7
  199. package/src/stories/Badge/BadgeDot.stories.mdx +4 -3
  200. package/src/stories/Badge/BadgeModifiers.stories.mdx +7 -6
  201. package/src/stories/Breadcrumb/Breadcrumb.stories.mdx +15 -7
  202. package/src/stories/Breadcrumb/Breadcrumb.test.ts +49 -0
  203. package/src/stories/Breadcrumb/BreadcrumbMultiline.stories.mdx +15 -7
  204. package/src/stories/Button/Button.stories.mdx +16 -17
  205. package/src/stories/Button/Button.test.ts +8 -12
  206. package/src/stories/Button/ButtonActive.stories.mdx +2 -1
  207. package/src/stories/Button/ButtonBadge.stories.mdx +2 -2
  208. package/src/stories/Button/ButtonDisabled.stories.mdx +1 -1
  209. package/src/stories/Button/ButtonIcon.stories.mdx +6 -3
  210. package/src/stories/Button/ButtonIconPosition.stories.mdx +1 -1
  211. package/src/stories/Button/ButtonLink.stories.mdx +1 -19
  212. package/src/stories/Button/ButtonLoading.stories.mdx +4 -4
  213. package/src/stories/Button/ButtonModifiers.stories.mdx +1 -1
  214. package/src/stories/Button/ButtonPressed.stories.mdx +31 -0
  215. package/src/stories/Button/ButtonSlots.stories.mdx +1 -1
  216. package/src/stories/ButtonGroup/ButtonGroup.stories.mdx +5 -6
  217. package/src/stories/ButtonGroup/{ButtonGroupTest.js → ButtonGroup.test.js} +6 -28
  218. package/src/stories/ButtonGroup/ButtonGroupAction.stories.mdx +5 -6
  219. package/src/stories/ButtonGroup/ButtonGroupActionQuiet.stories.mdx +3 -4
  220. package/src/stories/ButtonGroup/ButtonGroupBlock.stories.mdx +3 -4
  221. package/src/stories/ButtonGroup/ButtonGroupCompact.stories.mdx +3 -4
  222. package/src/stories/ButtonGroup/ButtonGroupRounded.stories.mdx +3 -4
  223. package/src/stories/ButtonGroup/ButtonGroupToggle.stories.mdx +11 -12
  224. package/src/stories/ButtonGroup/ButtonGroupVertical.stories.mdx +3 -4
  225. package/src/stories/Card/Card.stories.mdx +7 -5
  226. package/src/stories/Card/Card.test.ts +26 -0
  227. package/src/stories/Card/CardSlots.stories.mdx +5 -5
  228. package/src/stories/Card/CardVariant.stories.mdx +5 -4
  229. package/src/stories/Checkbox/Checkbox.stories.mdx +51 -0
  230. package/src/stories/Checkbox/Checkbox.test.js +115 -0
  231. package/src/stories/Checkbox/CheckboxBinary.stories.mdx +76 -0
  232. package/src/stories/{Check/CheckDisabled.stories.mdx → Checkbox/CheckboxDisabled.stories.mdx} +7 -7
  233. package/src/stories/Checkbox/CheckboxError.stories.mdx +43 -0
  234. package/src/stories/Checkbox/CheckboxHintLabel.stories.mdx +35 -0
  235. package/src/stories/{Check/CheckReadonly.stories.mdx → Checkbox/CheckboxReadonly.stories.mdx} +6 -8
  236. package/src/stories/Checkbox/CheckboxSlots.stories.mdx +69 -0
  237. package/src/stories/{Check/CheckSwitch.stories.mdx → Checkbox/CheckboxSwitch.stories.mdx} +8 -8
  238. package/src/stories/CheckboxGroup/CheckboxGroup.stories.mdx +69 -0
  239. package/src/stories/CheckboxGroup/CheckboxGroupDisabled.stories.mdx +26 -0
  240. package/src/stories/CheckboxGroup/CheckboxGroupError.stories.mdx +28 -0
  241. package/src/stories/CheckboxGroup/CheckboxGroupHintLabel.stories.mdx +27 -0
  242. package/src/stories/CheckboxGroup/CheckboxGroupLabel.stories.mdx +26 -0
  243. package/src/stories/{CheckGroup/CheckGroupOptionLabel.stories.mdx → CheckboxGroup/CheckboxGroupOptionLabel.stories.mdx} +14 -11
  244. package/src/stories/{CheckGroup/CheckGroupOptionValue.stories.mdx → CheckboxGroup/CheckboxGroupOptionValue.stories.mdx} +13 -10
  245. package/src/stories/{CheckGroup/CheckGroupOptions.stories.mdx → CheckboxGroup/CheckboxGroupOptions.stories.mdx} +8 -8
  246. package/src/stories/CheckboxGroup/CheckboxGroupReadonly.stories.mdx +26 -0
  247. package/src/stories/CheckboxGroup/CheckboxGroupSlots.stories.mdx +152 -0
  248. package/src/stories/CheckboxGroup/CheckboxGroupValid.stories.mdx +28 -0
  249. package/src/stories/CheckboxGroup/CheckboxGroupVertical.stories.mdx +26 -0
  250. package/src/stories/Dialog/Dialog.stories.mdx +5 -5
  251. package/src/stories/Dialog/Dialog.test.ts +26 -0
  252. package/src/stories/Dialog/DialogAutoClose.stories.mdx +1 -1
  253. package/src/stories/Dialog/DialogSize.stories.mdx +1 -1
  254. package/src/stories/Dropdown/Dropdown.stories.mdx +11 -7
  255. package/src/stories/Dropdown/Dropdown.test.ts +80 -0
  256. package/src/stories/Dropdown/DropdownDisabled.stories.mdx +9 -2
  257. package/src/stories/Dropdown/DropdownLabelNoResults.stories.mdx +2 -2
  258. package/src/stories/Dropdown/DropdownMaxValues.stories.mdx +4 -2
  259. package/src/stories/Dropdown/DropdownMultiple.stories.mdx +4 -2
  260. package/src/stories/Dropdown/DropdownOptions.stories.mdx +4 -4
  261. package/src/stories/Dropdown/DropdownUseObject.stories.mdx +4 -2
  262. package/src/stories/Icon/Icon.stories.mdx +8 -8
  263. package/src/stories/Icon/{IconTest.js → Icon.test.js} +2 -5
  264. package/src/stories/Icon/IconList.vue +5 -6
  265. package/src/stories/Icon/IconPrefix.stories.mdx +2 -2
  266. package/src/stories/Icon/IconRemote.stories.mdx +2 -2
  267. package/src/stories/Icon/IconsList.stories.mdx +2 -18
  268. package/src/stories/InputText/InputText.stories.mdx +25 -19
  269. package/src/stories/InputText/InputText.test.ts +156 -0
  270. package/src/stories/InputText/InputTextAutocomplete.stories.mdx +9 -2
  271. package/src/stories/InputText/InputTextAutofocus.stories.mdx +6 -3
  272. package/src/stories/InputText/InputTextDisabled.stories.mdx +10 -2
  273. package/src/stories/InputText/InputTextError.stories.mdx +10 -2
  274. package/src/stories/InputText/InputTextFloating.stories.mdx +10 -3
  275. package/src/stories/InputText/InputTextHintLabel.stories.mdx +10 -2
  276. package/src/stories/InputText/InputTextIcon.stories.mdx +6 -2
  277. package/src/stories/InputText/InputTextIconPosition.stories.mdx +10 -3
  278. package/src/stories/InputText/InputTextLabel.stories.mdx +8 -2
  279. package/src/stories/InputText/InputTextLoading.stories.mdx +10 -2
  280. package/src/stories/InputText/InputTextMax.stories.mdx +10 -3
  281. package/src/stories/InputText/InputTextMaxLength.stories.mdx +22 -5
  282. package/src/stories/InputText/InputTextMin.stories.mdx +10 -3
  283. package/src/stories/InputText/InputTextMinLength.stories.mdx +9 -2
  284. package/src/stories/InputText/InputTextPlaceholder.stories.mdx +8 -2
  285. package/src/stories/InputText/InputTextReadonly.stories.mdx +6 -2
  286. package/src/stories/InputText/InputTextSlots.stories.mdx +4 -5
  287. package/src/stories/InputText/InputTextStep.stories.mdx +9 -3
  288. package/src/stories/InputText/InputTextType.stories.mdx +110 -13
  289. package/src/stories/InputText/InputTextValid.stories.mdx +10 -2
  290. package/src/stories/NativeSelect/NativeSelect.stories.mdx +15 -11
  291. package/src/stories/NativeSelect/NativeSelect.test.js +151 -0
  292. package/src/stories/NativeSelect/NativeSelectDisabled.stories.mdx +6 -7
  293. package/src/stories/NativeSelect/NativeSelectError.stories.mdx +7 -3
  294. package/src/stories/NativeSelect/NativeSelectHintLabel.stories.mdx +7 -3
  295. package/src/stories/NativeSelect/NativeSelectIconLeftRight.stories.mdx +14 -12
  296. package/src/stories/NativeSelect/NativeSelectLoading.stories.mdx +7 -3
  297. package/src/stories/NativeSelect/NativeSelectOptions.stories.mdx +44 -38
  298. package/src/stories/NativeSelect/NativeSelectReadonly.stories.mdx +19 -11
  299. package/src/stories/NativeSelect/NativeSelectUseObject.stories.mdx +26 -30
  300. package/src/stories/NativeSelect/NativeSelectValid.stories.mdx +7 -3
  301. package/src/stories/NativeSelect/NativeSelectValueKey.stories.mdx +30 -30
  302. package/src/stories/Progress/Progress.stories.mdx +8 -11
  303. package/src/stories/Progress/{ProgressTest.js → Progress.test.js} +4 -10
  304. package/src/stories/Progress/ProgressDeterminate.stories.mdx +3 -6
  305. package/src/stories/Radio/Radio.stories.mdx +11 -17
  306. package/src/stories/Radio/Radio.test.ts +52 -0
  307. package/src/stories/Radio/RadioDisabled.stories.mdx +4 -7
  308. package/src/stories/Radio/RadioError.stories.mdx +8 -28
  309. package/src/stories/Radio/RadioHintLabel.stories.mdx +6 -7
  310. package/src/stories/Radio/RadioSlots.stories.mdx +21 -7
  311. package/src/stories/RadioGroup/RadioGroup.stories.mdx +20 -27
  312. package/src/stories/RadioGroup/RadioGroup.test.ts +139 -0
  313. package/src/stories/RadioGroup/RadioGroupDisabled.stories.mdx +6 -8
  314. package/src/stories/RadioGroup/RadioGroupError.stories.mdx +9 -11
  315. package/src/stories/RadioGroup/RadioGroupHintLabel.stories.mdx +8 -10
  316. package/src/stories/RadioGroup/RadioGroupLabel.stories.mdx +6 -8
  317. package/src/stories/RadioGroup/RadioGroupOptionLabel.stories.mdx +11 -13
  318. package/src/stories/RadioGroup/RadioGroupOptionValue.stories.mdx +9 -11
  319. package/src/stories/RadioGroup/RadioGroupOptions.stories.mdx +7 -9
  320. package/src/stories/RadioGroup/RadioGroupReadonly.stories.mdx +6 -8
  321. package/src/stories/RadioGroup/RadioGroupSlots.stories.mdx +39 -62
  322. package/src/stories/RadioGroup/RadioGroupValid.stories.mdx +9 -11
  323. package/src/stories/RadioGroup/RadioGroupVertical.stories.mdx +6 -8
  324. package/src/stories/Select/Select.stories.mdx +32 -29
  325. package/src/stories/Select/Select.test.ts +104 -0
  326. package/src/stories/Select/SelectDisabled.stories.mdx +3 -3
  327. package/src/stories/Select/SelectMaxValues.stories.mdx +3 -3
  328. package/src/stories/Select/SelectMultiple.stories.mdx +5 -6
  329. package/src/stories/Select/SelectNative.stories.mdx +6 -8
  330. package/src/stories/Select/SelectOptions.stories.mdx +4 -4
  331. package/src/stories/Select/SelectSearchable.stories.mdx +13 -12
  332. package/src/stories/Select/SelectSeparator.stories.mdx +3 -3
  333. package/src/stories/Select/SelectUseObject.stories.mdx +3 -3
  334. package/src/stories/Textarea/Textarea.stories.mdx +6 -10
  335. package/src/stories/Textarea/Textarea.test.ts +204 -0
  336. package/src/stories/Textarea/TextareaAutoclear.stories.mdx +3 -2
  337. package/src/stories/Textarea/TextareaAutocomplete.stories.mdx +3 -2
  338. package/src/stories/Textarea/TextareaAutofocus.stories.mdx +3 -2
  339. package/src/stories/Textarea/TextareaDebounce.stories.mdx +7 -6
  340. package/src/stories/Textarea/TextareaDisabled.stories.mdx +9 -3
  341. package/src/stories/Textarea/TextareaError.stories.mdx +7 -2
  342. package/src/stories/Textarea/TextareaErrorLabel.stories.mdx +12 -2
  343. package/src/stories/Textarea/TextareaFloating.stories.mdx +7 -2
  344. package/src/stories/Textarea/TextareaHintLabel.stories.mdx +7 -2
  345. package/src/stories/Textarea/TextareaIcon.stories.mdx +3 -2
  346. package/src/stories/Textarea/TextareaIconPosition.stories.mdx +4 -2
  347. package/src/stories/Textarea/TextareaId.stories.mdx +3 -2
  348. package/src/stories/Textarea/TextareaLabel.stories.mdx +3 -2
  349. package/src/stories/Textarea/TextareaLimit.stories.mdx +5 -2
  350. package/src/stories/Textarea/TextareaLoading.stories.mdx +7 -2
  351. package/src/stories/Textarea/TextareaLoadingLabel.stories.mdx +9 -3
  352. package/src/stories/Textarea/TextareaMaxLength.stories.mdx +5 -4
  353. package/src/stories/Textarea/TextareaMinLength.stories.mdx +3 -2
  354. package/src/stories/Textarea/TextareaModifiers.stories.mdx +10 -2
  355. package/src/stories/Textarea/TextareaName.stories.mdx +3 -2
  356. package/src/stories/Textarea/TextareaPlaceholder.stories.mdx +4 -3
  357. package/src/stories/Textarea/TextareaReadonly.stories.mdx +8 -3
  358. package/src/stories/Textarea/TextareaRequired.stories.mdx +3 -2
  359. package/src/stories/Textarea/TextareaResizable.stories.mdx +7 -2
  360. package/src/stories/Textarea/TextareaRowsCols.stories.mdx +4 -2
  361. package/src/stories/Textarea/TextareaSlots.stories.mdx +7 -8
  362. package/src/stories/Textarea/TextareaValid.stories.mdx +7 -1
  363. package/src/stories/Textarea/TextareaValidLabel.stories.mdx +14 -4
  364. package/src/stories/utils.ts +1 -1
  365. package/src/stories/volver-ui-vue.stories.mdx +1 -1
  366. package/src/test/expect.ts +3 -1
  367. package/src/test/sleep.ts +2 -0
  368. package/src/test/types.d.ts +14 -1
  369. package/src/types/{.README → .gitkeep} +0 -0
  370. package/src/utils/ObjectUtilities.ts +247 -241
  371. package/dist/components/VvAccordion/VvAccordion.d.ts +0 -32
  372. package/dist/components/VvAccordion/useAccordionProps.d.ts +0 -16
  373. package/dist/components/VvButton/useButtonGroupProps.d.ts +0 -18
  374. package/dist/components/VvCheck/VvCheck.d.ts +0 -47
  375. package/dist/components/VvCheck/VvCheck.es.js +0 -318
  376. package/dist/components/VvCheck/VvCheck.umd.js +0 -1
  377. package/dist/components/VvCheck/VvCheck.vue.d.ts +0 -165
  378. package/dist/components/VvCheck/useCheckProps.d.ts +0 -16
  379. package/dist/components/VvCheckGroup/VvCheckGroup.es.js +0 -451
  380. package/dist/components/VvCheckGroup/VvCheckGroup.umd.js +0 -2
  381. package/dist/components/VvCheckGroup/VvCheckGroup.vue.d.ts +0 -272
  382. package/dist/components/VvDialog/constants.d.ts +0 -5
  383. package/dist/components/VvInputText/VvInputText.d.ts +0 -73
  384. package/dist/components/VvInputText/constants.d.ts +0 -55
  385. package/dist/components/VvRadio/VvRadio.d.ts +0 -22
  386. package/dist/components/VvRadio/useRadioProps.d.ts +0 -15
  387. package/dist/components/VvTextarea/constants.d.ts +0 -19
  388. package/dist/stories/RadioGroup/RadioOption.test.d.ts +0 -4
  389. package/dist/stories/RadioGroup/RadioProperty.test.d.ts +0 -12
  390. package/dist/stories/RadioGroup/RadioSlots.test.d.ts +0 -6
  391. package/src/assets/icons/index.js +0 -7
  392. package/src/components/VvAccordion/VvAccordion.ts +0 -34
  393. package/src/components/VvAccordion/useAccordionProps.ts +0 -45
  394. package/src/components/VvButton/VvButton.ts +0 -87
  395. package/src/components/VvButton/useButtonGroupProps.ts +0 -43
  396. package/src/components/VvCheck/VvCheck.ts +0 -48
  397. package/src/components/VvCheck/VvCheck.vue +0 -147
  398. package/src/components/VvCheck/useCheckProps.ts +0 -41
  399. package/src/components/VvDialog/VvDialog.ts +0 -17
  400. package/src/components/VvDialog/constants.ts +0 -5
  401. package/src/components/VvInputText/VvInputText.ts +0 -66
  402. package/src/components/VvInputText/constants.ts +0 -34
  403. package/src/components/VvRadio/VvRadio.ts +0 -25
  404. package/src/components/VvRadio/useRadioProps.ts +0 -40
  405. package/src/components/VvTextarea/constants.ts +0 -14
  406. package/src/stories/Accordion/AccordionBordered.stories.mdx +0 -26
  407. package/src/stories/Accordion/AccordionIconRight.stories.mdx +0 -32
  408. package/src/stories/Accordion/accordionTest.js +0 -36
  409. package/src/stories/AccordionGroup/Accordion.stories.mdx +0 -42
  410. package/src/stories/Badge/BadgeTest.js +0 -21
  411. package/src/stories/Button/ButtonSelected.stories.mdx +0 -30
  412. package/src/stories/Check/Check.stories.mdx +0 -62
  413. package/src/stories/Check/CheckBinary.stories.mdx +0 -75
  414. package/src/stories/Check/CheckError.stories.mdx +0 -64
  415. package/src/stories/Check/CheckErrorTests.js +0 -74
  416. package/src/stories/Check/CheckHintLabel.stories.mdx +0 -30
  417. package/src/stories/Check/CheckPropertyTest.js +0 -102
  418. package/src/stories/Check/CheckSlots.stories.mdx +0 -51
  419. package/src/stories/CheckGroup/CheckGroup.stories.mdx +0 -69
  420. package/src/stories/CheckGroup/CheckGroupDisabled.stories.mdx +0 -26
  421. package/src/stories/CheckGroup/CheckGroupError.stories.mdx +0 -28
  422. package/src/stories/CheckGroup/CheckGroupHintLabel.stories.mdx +0 -27
  423. package/src/stories/CheckGroup/CheckGroupLabel.stories.mdx +0 -26
  424. package/src/stories/CheckGroup/CheckGroupReadonly.stories.mdx +0 -26
  425. package/src/stories/CheckGroup/CheckGroupSlots.stories.mdx +0 -152
  426. package/src/stories/CheckGroup/CheckGroupValid.stories.mdx +0 -28
  427. package/src/stories/CheckGroup/CheckGroupVertical.stories.mdx +0 -26
  428. package/src/stories/RadioGroup/RadioOption.test.ts +0 -45
  429. package/src/stories/RadioGroup/RadioProperty.test.ts +0 -87
  430. package/src/stories/RadioGroup/RadioSlots.test.ts +0 -29
  431. package/src/stories/stories.scss +0 -13
@@ -8,10 +8,19 @@ export enum PREFIX {
8
8
  }
9
9
 
10
10
  export const VvIconProps = {
11
+ /**
12
+ * Color
13
+ */
11
14
  color: String,
15
+ /**
16
+ * Width
17
+ */
12
18
  width: {
13
19
  type: [String, Number]
14
20
  },
21
+ /**
22
+ * Height
23
+ */
15
24
  height: {
16
25
  type: [String, Number]
17
26
  },
@@ -0,0 +1,53 @@
1
+ import { defineComponent, h } from 'vue'
2
+ import VvIcon from '@/components/VvIcon/VvIcon.vue'
3
+
4
+ export default defineComponent({
5
+ components: {
6
+ VvIcon
7
+ },
8
+ props: {
9
+ disabled: {
10
+ type: Boolean,
11
+ default: false
12
+ },
13
+ label: {
14
+ type: String,
15
+ default: 'Clear'
16
+ },
17
+ icon: {
18
+ type: String,
19
+ default: 'close'
20
+ }
21
+ },
22
+ emits: ['clear'],
23
+ setup(props, { emit }) {
24
+ function onClick(e: Event) {
25
+ e?.stopPropagation()
26
+ if (!props.disabled) {
27
+ emit('clear')
28
+ }
29
+ }
30
+
31
+ return {
32
+ onClick
33
+ }
34
+ },
35
+ render() {
36
+ const icon = h(VvIcon, {
37
+ name: this.icon,
38
+ class: 'vv-input-text__action-icon'
39
+ })
40
+
41
+ return h(
42
+ 'button',
43
+ {
44
+ disabled: this.disabled,
45
+ class: 'vv-input-text__action',
46
+ ariaLabel: this.label,
47
+ type: 'button',
48
+ onClick: this.onClick
49
+ },
50
+ icon
51
+ )
52
+ }
53
+ })
@@ -0,0 +1,70 @@
1
+ import { defineComponent, ref, computed, h } from 'vue'
2
+ import { TYPES_ICON } from '@/components/VvInputText'
3
+ import VvIcon from '@/components/VvIcon/VvIcon.vue'
4
+
5
+ export default defineComponent({
6
+ components: {
7
+ VvIcon
8
+ },
9
+ props: {
10
+ disabled: {
11
+ type: Boolean,
12
+ default: false
13
+ },
14
+ labelShow: {
15
+ type: String,
16
+ default: 'Show password'
17
+ },
18
+ labelHide: {
19
+ type: String,
20
+ default: 'Hide password'
21
+ },
22
+ iconShow: {
23
+ type: String,
24
+ default: TYPES_ICON.PASSWORD_SHOW
25
+ },
26
+ iconHide: {
27
+ type: String,
28
+ default: TYPES_ICON.PASSWORD_HIDE
29
+ }
30
+ },
31
+ emits: ['toggle-password'],
32
+ setup(props, { emit }) {
33
+ const active = ref(false)
34
+ const activeIcon = computed(() =>
35
+ active.value ? props.iconHide : props.iconShow
36
+ )
37
+
38
+ function onClick(e: Event) {
39
+ e?.stopPropagation()
40
+ if (!props.disabled) {
41
+ active.value = !active.value
42
+ emit('toggle-password', active.value)
43
+ }
44
+ }
45
+
46
+ return {
47
+ active,
48
+ activeIcon,
49
+ onClick
50
+ }
51
+ },
52
+ render() {
53
+ const icon = h(VvIcon, {
54
+ name: this.activeIcon,
55
+ class: 'vv-input-text__action-icon'
56
+ })
57
+
58
+ return h(
59
+ 'button',
60
+ {
61
+ disabled: this.disabled,
62
+ class: 'vv-input-text__action',
63
+ ariaLabel: this.active ? this.labelHide : this.labelShow,
64
+ type: 'button',
65
+ onClick: this.onClick
66
+ },
67
+ icon
68
+ )
69
+ }
70
+ })
@@ -0,0 +1,49 @@
1
+ import { computed, defineComponent, h } from 'vue'
2
+ import VvIcon from '@/components/VvIcon/VvIcon.vue'
3
+
4
+ export default defineComponent({
5
+ components: {
6
+ VvIcon
7
+ },
8
+ props: {
9
+ disabled: {
10
+ type: Boolean,
11
+ default: false
12
+ },
13
+ label: {
14
+ type: String
15
+ },
16
+ mode: {
17
+ type: String,
18
+ validator: (v: string) => ['up', 'down'].includes(v),
19
+ default: 'up'
20
+ }
21
+ },
22
+ emits: ['step-up', 'step-down'],
23
+ setup(props, { emit }) {
24
+ const isUp = computed(() => props.mode === 'up')
25
+
26
+ const onClick = (e: Event) => {
27
+ e?.stopPropagation()
28
+ if (!props.disabled) {
29
+ emit(isUp.value ? 'step-up' : 'step-down')
30
+ }
31
+ }
32
+
33
+ return {
34
+ isUp,
35
+ onClick
36
+ }
37
+ },
38
+ render() {
39
+ return h('button', {
40
+ class: [
41
+ 'vv-input-text__action-chevron',
42
+ this.isUp && 'vv-input-text__action-chevron-up'
43
+ ],
44
+ disabled: this.disabled,
45
+ ariaLabel: this.label,
46
+ onClick: this.onClick
47
+ })
48
+ }
49
+ })
@@ -1,249 +1,247 @@
1
- <template>
2
- <div v-bind="vvInputTextProps" :class="inputTextClass">
3
- <label v-if="label" :for="inputTextId">{{ label }}</label>
4
- <div class="vv-input-text__wrapper">
5
- <!-- @slot icon-left to replace icon left -->
6
- <slot v-if="hasIconLeft" name="icon-left" v-bind="iconSlotProps">
7
- <vv-icon class="vv-input-text__icon-left" :name="icon" />
8
- </slot>
9
- <input
10
- ref="input"
11
- v-bind="innerInputProps"
12
- v-model="inputTextData"
13
- @input="emit('input', $event)" />
14
- <!-- autoclear text button -->
15
- <button
16
- v-if="autoclear && textLength > 0"
17
- class="vv-button vv-button--ghost"
18
- @click="clearInputText">
19
- <vv-icon name="clear-field" />
20
- </button>
21
- <!-- @slot icon-right to replace icon right -->
22
- <slot name="icon-right" v-bind="iconSlotProps">
23
- <template v-if="isPassword">
24
- <PasswordInputActions
25
- @action-password-on="showPassword = true"
26
- @action-password-off="showPassword = false" />
27
- </template>
28
- <template v-else-if="isNumber">
29
- <NumberInputActions
30
- @action-step-up="stepUp"
31
- @action-step-down="stepDown" />
32
- </template>
33
- <template v-else-if="hasIconRight || defaultRightIcon">
34
- <vv-icon :name="icon || defaultRightIcon" />
35
- </template>
36
- </slot>
37
- <span v-if="limit" class="vv-input-text__limit">
38
- <slot name="limit"> {{ formattedTextLimitLength }} </slot>
39
- </span>
40
- </div>
41
- <HintSlot :id="inputTextDescribedBy" class="vv-input-text__hint" />
42
- </div>
43
- </template>
1
+ <script lang="ts">
2
+ export default {
3
+ name: 'VvInputText'
4
+ }
5
+ </script>
44
6
 
45
7
  <script setup lang="ts">
46
8
  import {
47
9
  computed,
48
- useAttrs,
49
10
  useSlots,
50
11
  ref,
51
12
  toRefs,
52
13
  onMounted,
53
14
  unref,
54
- type HTMLAttributes,
55
15
  type InputHTMLAttributes
56
16
  } from 'vue'
57
- import ObjectUtilities from '../../utils/ObjectUtilities'
58
- import { VvInputTextEvents, VvInputTextProps } from './VvInputText'
59
-
60
- //Componenti
61
- import VvIcon from '../../components/VvIcon/VvIcon.vue'
62
- import HintSlotFactory from '../common/HintSlot'
63
- import VvInputTextActionsFactory from './VvInputTextActions'
64
-
65
- //Constanti
66
- import INPUT from './constants'
67
-
68
- //Composables
69
- import { useComponentIcon } from '../../composables/icons/useComponentIcons'
70
- import { useComponentFocus } from '../../composables/focus/useComponentFocus'
71
- import { useDebouncedInput } from '../../composables/debouncedInput/useDebouncedInput'
72
- import { useTextLimit } from '../../composables/textLimit/useTextLimit'
73
- import { toBem } from '@/composables/useModifiers'
17
+ import { nanoid } from 'nanoid'
18
+ import { isEmpty } from '@/utils/ObjectUtilities'
19
+ import HintSlotFactory from '@/components/common/HintSlot'
20
+ import { useComponentIcon } from '@/composables/icons/useComponentIcons'
21
+ import { useComponentFocus } from '@/composables/focus/useComponentFocus'
22
+ import { useDebouncedInput } from '@/composables/debouncedInput/useDebouncedInput'
23
+ import { useTextLimit } from '@/composables/textLimit/useTextLimit'
24
+ import { useBemModifiers } from '@/composables/useModifiers'
25
+ import VvIcon from '@/components/VvIcon/VvIcon.vue'
26
+ import VvInputTextActionsFactory from '@/components/VvInputText/VvInputTextActions'
27
+ import {
28
+ VvInputTextEvents,
29
+ VvInputTextProps,
30
+ INPUT
31
+ } from '@/components/VvInputText'
74
32
 
75
- //Props, Emits, Slots e Attrs
33
+ // props, emit, slots and attrs
76
34
  const props = defineProps(VvInputTextProps)
77
35
  const emit = defineEmits(VvInputTextEvents)
78
36
  const slots = useSlots()
79
- const attrs = useAttrs()
80
37
 
81
- //Template References
38
+ // template refs
82
39
  const input = ref()
83
40
 
84
- //Data
85
- const { icon, iconPosition, label, modelValue, autoclear, limit } =
86
- toRefs(props)
87
- const inputTextId = props.id || props.name
88
- const inputTextLabeledBy = `${props.name}-label`
89
- const inputTextDescribedBy = `${props.name}-hint`
90
- //BUG - https://www.samanthaming.com/tidbits/88-css-placeholder-shown/
41
+ // data
42
+ const { icon, iconPosition, label, modelValue, limit } = toRefs(props)
43
+ const hasId = computed(() => String(props.id || nanoid()))
44
+ const hasDescribedBy = computed(() => `${hasId.value}-hint`)
45
+ // BUG: https://www.samanthaming.com/tidbits/88-css-placeholder-shown/
91
46
  const inputTextPlaceholder = computed(() =>
92
- props.floating && ObjectUtilities.isEmpty(props.placeholder)
93
- ? ' '
94
- : props.placeholder
47
+ props.floating && isEmpty(props.placeholder) ? ' ' : props.placeholder
95
48
  )
96
49
 
97
- //Debounce input
98
- const inputTextData = useDebouncedInput(modelValue, props.debounce, emit)
50
+ // debounce
51
+ const localModelValue = useDebouncedInput(modelValue, emit, props.debounce)
99
52
 
100
- //Gestione input tipo password
53
+ // password
101
54
  const showPassword = ref(false)
102
55
  const isPassword = computed(() => props.type === INPUT.TYPES.PASSWORD)
56
+ const onTogglePassword = () => {
57
+ showPassword.value = !showPassword.value
58
+ }
103
59
 
104
- //Gestione input tipo NUMBER
60
+ // time, datetime and date
61
+ const isDateTime = computed(() =>
62
+ [INPUT.TYPES.TIME, INPUT.TYPES.DATETIME_LOCAL, INPUT.TYPES.DATE].includes(
63
+ props.type
64
+ )
65
+ )
66
+
67
+ // number
105
68
  const isNumber = computed(() => props.type === INPUT.TYPES.NUMBER)
106
- function stepUp() {
107
- const _max = props.max as number
108
- if (!isActionsDisabled.value && inputTextData.value + 1 <= _max) {
69
+ const onStepUp = () => {
70
+ if (!isDisabled.value) {
109
71
  input.value.stepUp()
110
- inputTextData.value = unref(input.value).value
72
+ localModelValue.value = unref(input).value
111
73
  }
112
74
  }
113
- function stepDown() {
114
- const _min = props.min as number
115
- if (!isActionsDisabled.value && inputTextData.value - 1 <= _min) {
75
+ const onStepDown = () => {
76
+ if (!isDisabled.value) {
116
77
  input.value.stepDown()
117
- inputTextData.value = unref(input.value).value
78
+ localModelValue.value = unref(input).value
118
79
  }
119
80
  }
120
81
 
121
- //Gestione ICONE
82
+ // search
83
+ const isSearch = computed(() => props.type === INPUT.TYPES.SEARCH)
84
+ const onClear = () => {
85
+ localModelValue.value = null
86
+ }
87
+
88
+ // icons
122
89
  const { hasIconLeft, hasIconRight } = useComponentIcon(icon, iconPosition, {
123
90
  iconLeft: slots['icon-left'],
124
91
  iconRight: slots['icon-right']
125
92
  })
93
+ const hasIcon = computed(() => {
94
+ if (typeof icon.value === 'string') {
95
+ return { name: icon.value }
96
+ }
97
+ return icon.value
98
+ })
126
99
  const defaultRightIcon = computed(() => {
127
100
  switch (props.type) {
128
- case INPUT.TYPES.PASSWORD:
129
- return INPUT.TYPES_ICON.PASSWORD_OFF
130
101
  case INPUT.TYPES.COLOR:
131
- return INPUT.TYPES_ICON.COLOR
102
+ return { name: INPUT.TYPES_ICON.COLOR }
132
103
  case INPUT.TYPES.DATE:
133
104
  case INPUT.TYPES.DATETIME_LOCAL:
134
- return INPUT.TYPES_ICON.DATE
105
+ return { name: INPUT.TYPES_ICON.DATE }
135
106
  case INPUT.TYPES.TIME:
136
- return INPUT.TYPES_ICON.TIME
137
- case INPUT.TYPES.SEARCH:
138
- return INPUT.TYPES_ICON.SEARCH
107
+ return { name: INPUT.TYPES_ICON.TIME }
139
108
  default:
140
109
  return ''
141
110
  }
142
111
  })
143
112
 
144
- //Conteggio battute
145
- const { textLength, formattedTextLimitLength } = useTextLimit(inputTextData, {
113
+ // value length
114
+ const { formattedTextLimitLength } = useTextLimit(localModelValue, {
146
115
  mode: props.limit,
147
116
  upperLimit: props.maxlength || 0
148
117
  })
149
118
 
150
- //Input FOCUS
119
+ // focus
151
120
  const { focused } = useComponentFocus(input, emit)
152
121
 
153
- //Component computed
154
- const isActionsDisabled = computed(() => props.disabled || props.readonly)
155
-
156
- //Styles & Bindings
157
- const inputTextClass = computed(() => {
158
- const _hasIconRigth =
159
- hasIconRight.value || ObjectUtilities.isNotEmpty(defaultRightIcon.value)
160
- const _isFloating =
161
- props.floating && ObjectUtilities.isNotEmpty(props.label)
162
- const _isDirty = ObjectUtilities.isNotEmpty(modelValue?.value)
163
-
164
- return [
165
- toBem('vv-input-text', {
166
- modifiers: props.modifiers,
167
- readonly: props.readonly,
168
- valid: props.valid,
169
- invalid: props.error,
170
- loading: props.loading,
171
- iconLeft: hasIconLeft,
172
- iconRight: _hasIconRigth,
173
- floating: _isFloating,
174
- dirty: _isDirty
175
- }),
176
- attrs.class
177
- ]
122
+ // disabled
123
+ const isDisabled = computed(() => props.disabled || props.readonly)
124
+ const hasTabindex = computed(() => (isDisabled.value ? -1 : props.tabindex))
125
+
126
+ // dirty
127
+ const isDirty = computed(() => !isEmpty(modelValue))
128
+
129
+ // invalid
130
+ const isInvalid = computed(() => {
131
+ if (props.error === true) {
132
+ return true
133
+ }
134
+ if (props.valid === true) {
135
+ return false
136
+ }
137
+ return undefined
178
138
  })
179
- const vvInputTextProps = computed(() => {
180
- const { style } = attrs
181
- const dataAttrs = ObjectUtilities.pickBy(attrs, (k: string) =>
182
- k.startsWith('data-')
183
- )
184
- return {
185
- style,
186
- ...dataAttrs
187
- } as HTMLAttributes
139
+
140
+ // styles
141
+ const { bemCssClasses } = useBemModifiers('vv-input-text', {
142
+ modifiers: props.modifiers,
143
+ valid: props.valid,
144
+ invalid: props.error,
145
+ loading: props.loading,
146
+ iconLeft: hasIconLeft,
147
+ iconRight: hasIconRight.value || !isEmpty(defaultRightIcon),
148
+ floating: props.floating && !isEmpty(props.label),
149
+ dirty: isDirty,
150
+ focus: focused
188
151
  })
189
- const innerInputProps = computed(() => {
190
- const _type = isPassword.value && showPassword.value ? 'text' : props.type
191
- const ariaAttrs = ObjectUtilities.pickBy(attrs, (k: string) =>
192
- k.startsWith('aria-')
193
- )
194
152
 
153
+ // attrs
154
+ const hasAttrs = computed(() => {
155
+ const type = (() => {
156
+ if (isPassword.value && showPassword.value) {
157
+ return INPUT.TYPES.TEXT
158
+ }
159
+ if (isDateTime.value && !isDirty.value && !focused.value) {
160
+ return INPUT.TYPES.TEXT
161
+ }
162
+ return props.type
163
+ })()
195
164
  return {
196
- id: inputTextId,
197
- type: _type,
165
+ type,
198
166
  placeholder: inputTextPlaceholder.value,
199
167
  name: props.name,
200
168
  autocomplete: props.autocomplete,
201
- disabled: props.disabled,
202
- readonly: props.readonly,
203
169
  minlength: props.minlength,
204
170
  maxlength: props.maxlength,
205
171
  min: props.min,
206
172
  max: props.max,
207
- step: props.step,
208
- 'aria-invalid': props.error,
209
- 'aria-valid': !props.valid,
210
- 'aria-labeledby': inputTextLabeledBy,
211
- 'aria-describedby': inputTextDescribedBy,
212
- 'aria-errormessage': inputTextDescribedBy,
213
- ...ariaAttrs
173
+ step: type === INPUT.TYPES.NUMBER ? props.step : undefined,
174
+ tabindex: hasTabindex.value,
175
+ 'aria-invalid': isInvalid.value,
176
+ 'aria-describedby':
177
+ !hasErrors.value && hasHint.value
178
+ ? hasDescribedBy.value
179
+ : undefined,
180
+ 'aria-errormessage': hasErrors.value ? hasDescribedBy.value : undefined
214
181
  } as InputHTMLAttributes
215
182
  })
216
183
 
217
- //Slot props
218
- const iconSlotProps = computed(() => {
219
- const { modelValue, valid, error } = props
220
- return {
221
- valid,
222
- error,
223
- modelValue
224
- }
225
- })
184
+ // slots
185
+ const iconSlotProps = computed(() => ({
186
+ valid: props.valid,
187
+ error: props.error,
188
+ modelValue: props.modelValue
189
+ }))
226
190
 
227
- //Other components
228
- const HintSlot = HintSlotFactory(props, slots)
191
+ // components
192
+ const { HintSlot, hasHint, hasErrors } = HintSlotFactory(props, slots)
229
193
  const PasswordInputActions = VvInputTextActionsFactory(
230
194
  INPUT.TYPES.PASSWORD,
231
195
  props
232
196
  )
233
197
  const NumberInputActions = VvInputTextActionsFactory(INPUT.TYPES.NUMBER, props)
198
+ const SearchInputActions = VvInputTextActionsFactory(INPUT.TYPES.SEARCH, props)
234
199
 
235
- //Methods
236
- function clearInputText() {
237
- inputTextData.value = null
238
- }
239
-
200
+ // lifecycle
240
201
  onMounted(() => {
241
- if (props.autofocus) focused.value = true
202
+ if (props.autofocus) {
203
+ focused.value = true
204
+ }
242
205
  })
243
206
  </script>
244
207
 
245
- <script lang="ts">
246
- export default {
247
- inheritAttrs: false
248
- }
249
- </script>
208
+ <template>
209
+ <div :class="bemCssClasses">
210
+ <label v-if="label" :for="hasId" class="vv-input-text__label">
211
+ {{ label }}
212
+ </label>
213
+ <div class="vv-input-text__wrapper">
214
+ <!-- @slot icon-left to replace icon left -->
215
+ <slot v-if="hasIconLeft" name="icon-left" v-bind="iconSlotProps">
216
+ <VvIcon class="vv-input-text__icon-left" v-bind="hasIcon" />
217
+ </slot>
218
+ <input
219
+ :id="hasId"
220
+ ref="input"
221
+ v-model="localModelValue"
222
+ v-bind="hasAttrs"
223
+ :disabled="disabled"
224
+ :readonly="readonly"
225
+ :required="required"
226
+ @keyup="emit('keyup', $event)" />
227
+ <!-- @slot icon-right to replace icon right -->
228
+ <slot name="icon-right" v-bind="iconSlotProps">
229
+ <VvIcon
230
+ v-if="hasIconRight || defaultRightIcon"
231
+ v-bind="hasIconRight ? hasIcon : defaultRightIcon" />
232
+ <PasswordInputActions
233
+ v-else-if="isPassword"
234
+ @toggle-password="onTogglePassword" />
235
+ <NumberInputActions
236
+ v-else-if="isNumber"
237
+ @step-up="onStepUp"
238
+ @step-down="onStepDown" />
239
+ <SearchInputActions v-else-if="isSearch" @clear="onClear" />
240
+ </slot>
241
+ <span v-if="limit" class="vv-input-text__limit">
242
+ <slot name="limit"> {{ formattedTextLimitLength }} </slot>
243
+ </span>
244
+ </div>
245
+ <HintSlot :id="hasDescribedBy" class="vv-input-text__hint" />
246
+ </div>
247
+ </template>