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

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