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

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