@bildvitta/quasar-ui-asteroid 3.17.0-beta.20 → 3.17.0-beta.21

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 (315) hide show
  1. package/package.json +1 -1
  2. package/src/assets/sounds/nave-notification.mp3 +0 -0
  3. package/src/asteroid.js +4 -4
  4. package/src/components/actions/QasActions.vue +81 -81
  5. package/src/components/actions/QasActions.yml +34 -34
  6. package/src/components/actions-menu/QasActionsMenu.vue +251 -251
  7. package/src/components/actions-menu/QasActionsMenu.yml +89 -89
  8. package/src/components/actions-menu/composables/use-delete.js +30 -30
  9. package/src/components/actions-menu/composables/use-double-split-actions.js +42 -42
  10. package/src/components/actions-menu/composables/use-options-actions.js +27 -27
  11. package/src/components/actions-menu/composables/use-single-action.js +17 -17
  12. package/src/components/actions-menu/composables/use-single-split-actions.js +35 -35
  13. package/src/components/actions-menu/composables/use-tooltips.js +43 -43
  14. package/src/components/actions-menu/utils/get-label.js +3 -3
  15. package/src/components/actions-menu/utils/set-click-handler.js +6 -6
  16. package/src/components/alert/QasAlert.test.js +43 -43
  17. package/src/components/alert/QasAlert.vue +110 -110
  18. package/src/components/alert/QasAlert.yml +39 -39
  19. package/src/components/app-bar/QasAppBar.vue +119 -119
  20. package/src/components/app-bar/QasAppBar.yml +44 -44
  21. package/src/components/app-menu/QasAppMenu.vue +392 -392
  22. package/src/components/app-menu/QasAppMenu.yml +73 -73
  23. package/src/components/app-menu/composables/use-app-menu-dropdown.js +71 -71
  24. package/src/components/app-menu/composables/use-app-user.js +49 -49
  25. package/src/components/app-menu/composables/use-development-badge.js +23 -23
  26. package/src/components/app-menu/private/PvAppMenuDropdown.vue +71 -71
  27. package/src/components/app-menu/private/PvAppMenuHelpChat.vue +222 -222
  28. package/src/components/app-user/QasAppUser.vue +281 -281
  29. package/src/components/app-user/QasAppUser.yml +56 -56
  30. package/src/components/avatar/QasAvatar.vue +95 -95
  31. package/src/components/avatar/QasAvatar.yml +38 -38
  32. package/src/components/avatar/enums/AvatarColors.js +10 -10
  33. package/src/components/badge/QasBadge.vue +87 -87
  34. package/src/components/badge/QasBadge.yml +55 -55
  35. package/src/components/board-generator/QasBoardGenerator.vue +712 -712
  36. package/src/components/board-generator/QasBoardGenerator.yml +167 -167
  37. package/src/components/box/QasBox.vue +51 -51
  38. package/src/components/box/QasBox.yml +29 -29
  39. package/src/components/breakline/QasBreakline.vue +38 -38
  40. package/src/components/breakline/QasBreakline.yml +25 -25
  41. package/src/components/btn/QasBtn.vue +148 -148
  42. package/src/components/btn/QasBtn.yml +48 -48
  43. package/src/components/btn-dropdown/QasBtnDropdown.vue +146 -146
  44. package/src/components/btn-dropdown/QasBtnDropdown.yml +59 -59
  45. package/src/components/card/QasCard.vue +132 -132
  46. package/src/components/card/QasCard.yml +44 -44
  47. package/src/components/card-image/QasCardImage.vue +95 -95
  48. package/src/components/card-image/QasCardImage.yml +48 -48
  49. package/src/components/chart-view/QasChartView.vue +441 -441
  50. package/src/components/chart-view/QasChartView.yml +109 -109
  51. package/src/components/chart-view/config/charts/bar.js +45 -45
  52. package/src/components/chart-view/config/charts/doughnut.js +43 -43
  53. package/src/components/chart-view/config/charts/index.js +9 -9
  54. package/src/components/chart-view/config/charts/line.js +57 -57
  55. package/src/components/chart-view/config/defaults/colors.js +19 -19
  56. package/src/components/chart-view/config/defaults/font.js +5 -5
  57. package/src/components/chart-view/config/defaults/index.js +2 -2
  58. package/src/components/chart-view/config/index.js +3 -3
  59. package/src/components/chart-view/config/plugins/index.js +3 -3
  60. package/src/components/chart-view/config/plugins/legend.js +9 -9
  61. package/src/components/chart-view/config/plugins/tooltip.js +15 -15
  62. package/src/components/chart-view/config/plugins/zoom.js +31 -31
  63. package/src/components/checkbox/QasCheckbox.vue +150 -150
  64. package/src/components/checkbox/QasCheckbox.yml +36 -36
  65. package/src/components/copy/QasCopy.vue +46 -46
  66. package/src/components/copy/QasCopy.yml +23 -23
  67. package/src/components/date/QasDate.vue +600 -600
  68. package/src/components/date/QasDate.yml +69 -69
  69. package/src/components/date/enums/DateMaskOptions.js +6 -6
  70. package/src/components/date-time-input/QasDateTimeInput.vue +269 -269
  71. package/src/components/date-time-input/QasDateTimeInput.yml +64 -64
  72. package/src/components/debugger/QasDebugger.vue +31 -31
  73. package/src/components/debugger/QasDebugger.yml +10 -10
  74. package/src/components/delete/QasDelete.vue +100 -100
  75. package/src/components/delete/QasDelete.yml +60 -60
  76. package/src/components/dialog/QasDialog.vue +217 -217
  77. package/src/components/dialog/QasDialog.yml +117 -117
  78. package/src/components/dialog/composables/use-cancel.js +40 -40
  79. package/src/components/dialog/composables/use-dynamic-components.js +86 -86
  80. package/src/components/dialog/composables/use-ok.js +45 -45
  81. package/src/components/dialog-router/QasDialogRouter.vue +86 -86
  82. package/src/components/dialog-router/QasDialogRouter.yml +23 -23
  83. package/src/components/drawer/QasDrawer.vue +118 -118
  84. package/src/components/drawer/QasDrawer.yml +58 -58
  85. package/src/components/empty-result-text/QasEmptyResultText.vue +18 -18
  86. package/src/components/empty-result-text/QasEmptyResultText.yml +14 -14
  87. package/src/components/expansion-item/QasExpansionItem.vue +291 -291
  88. package/src/components/expansion-item/QasExpansionItem.yml +76 -76
  89. package/src/components/field/QasField.vue +220 -220
  90. package/src/components/field/QasField.yml +36 -36
  91. package/src/components/filters/QasFilters.vue +472 -472
  92. package/src/components/filters/QasFilters.yml +171 -171
  93. package/src/components/filters/private/PvFiltersButton.vue +101 -101
  94. package/src/components/form-generator/QasFormGenerator.vue +274 -274
  95. package/src/components/form-generator/QasFormGenerator.yml +109 -109
  96. package/src/components/form-view/QasFormView.vue +484 -484
  97. package/src/components/form-view/QasFormView.yml +253 -253
  98. package/src/components/gallery/QasGallery.vue +243 -243
  99. package/src/components/gallery/QasGallery.yml +188 -188
  100. package/src/components/gallery/composables/use-delete.js +54 -54
  101. package/src/components/gallery/private/PvGalleryCarouselDialog.vue +92 -92
  102. package/src/components/gallery/private/PvGalleryDeleteDialog.vue +54 -54
  103. package/src/components/gallery-card/QasGalleryCard.vue +153 -153
  104. package/src/components/gallery-card/QasGalleryCard.yml +61 -61
  105. package/src/components/grabbable/QasGrabbable.vue +185 -185
  106. package/src/components/grabbable/QasGrabbable.yml +26 -26
  107. package/src/components/grid-generator/QasGridGenerator.vue +210 -210
  108. package/src/components/grid-generator/QasGridGenerator.yml +127 -127
  109. package/src/components/grid-item/QasGridItem.vue +89 -89
  110. package/src/components/grid-item/QasGridItem.yml +22 -22
  111. package/src/components/header/QasHeader.vue +152 -152
  112. package/src/components/header/QasHeader.yml +50 -50
  113. package/src/components/infinite-scroll/QasInfiniteScroll.vue +168 -168
  114. package/src/components/infinite-scroll/QasInfiniteScroll.yml +78 -78
  115. package/src/components/info/QasInfo.vue +155 -155
  116. package/src/components/info/QasInfo.yml +34 -34
  117. package/src/components/input/QasInput.vue +252 -252
  118. package/src/components/input/QasInput.yml +65 -65
  119. package/src/components/label/QasLabel.vue +61 -61
  120. package/src/components/label/QasLabel.yml +44 -44
  121. package/src/components/layout/QasLayout.vue +101 -101
  122. package/src/components/layout/QasLayout.yml +46 -46
  123. package/src/components/layout/private/PvLayoutNotificationCard.vue +86 -86
  124. package/src/components/layout/private/PvLayoutNotificationsDrawer.vue +140 -140
  125. package/src/components/list-items/QasListItems.vue +125 -125
  126. package/src/components/list-items/QasListItems.yml +71 -71
  127. package/src/components/list-view/QasListView.vue +302 -302
  128. package/src/components/list-view/QasListView.yml +169 -169
  129. package/src/components/map/QasMap.vue +75 -75
  130. package/src/components/map/QasMap.yml +33 -33
  131. package/src/components/nested-fields/QasNestedFields.vue +584 -584
  132. package/src/components/nested-fields/QasNestedFields.yml +296 -296
  133. package/src/components/numeric-input/QasNumericInput.vue +206 -206
  134. package/src/components/numeric-input/QasNumericInput.yml +85 -85
  135. package/src/components/option-group/QasOptionGroup.vue +54 -54
  136. package/src/components/option-group/QasOptionGroup.yml +30 -30
  137. package/src/components/page-header/QasPageHeader.vue +143 -143
  138. package/src/components/page-header/QasPageHeader.yml +42 -42
  139. package/src/components/pagination/QasPagination.vue +71 -71
  140. package/src/components/pagination/QasPagination.yml +4 -4
  141. package/src/components/password-input/QasPasswordInput.vue +110 -110
  142. package/src/components/password-input/QasPasswordInput.yml +111 -111
  143. package/src/components/password-strength-checker/QasPasswordStrengthChecker.vue +71 -71
  144. package/src/components/password-strength-checker/QasPasswordStrengthChecker.yml +103 -103
  145. package/src/components/profile/QasProfile.vue +98 -98
  146. package/src/components/profile/QasProfile.yml +60 -60
  147. package/src/components/radio/QasRadio.vue +62 -62
  148. package/src/components/radio/QasRadio.yml +11 -11
  149. package/src/components/resizer/QasResizer.vue +90 -90
  150. package/src/components/resizer/QasResizer.yml +24 -24
  151. package/src/components/search-box/QasSearchBox.vue +294 -294
  152. package/src/components/search-box/QasSearchBox.yml +154 -154
  153. package/src/components/search-input/QasSearchInput.vue +106 -106
  154. package/src/components/search-input/QasSearchInput.yml +48 -48
  155. package/src/components/select/QasSelect.vue +514 -514
  156. package/src/components/select/QasSelect.yml +157 -157
  157. package/src/components/select-list/QasSelectList.vue +238 -238
  158. package/src/components/select-list/QasSelectList.yml +108 -108
  159. package/src/components/select-list/private/PvSelectListCheckbox.vue +31 -31
  160. package/src/components/select-list-dialog/QasSelectListDialog.vue +395 -395
  161. package/src/components/select-list-dialog/QasSelectListDialog.yml +108 -108
  162. package/src/components/signature-pad/QasSignaturePad.vue +122 -122
  163. package/src/components/signature-pad/QasSignaturePad.yml +53 -53
  164. package/src/components/signature-uploader/QasSignatureUploader.vue +164 -164
  165. package/src/components/signature-uploader/QasSignatureUploader.yml +37 -37
  166. package/src/components/single-view/QasSingleView.vue +175 -175
  167. package/src/components/single-view/QasSingleView.yml +131 -131
  168. package/src/components/sortable/QasSortable.vue +151 -151
  169. package/src/components/sortable/QasSortable.yml +65 -65
  170. package/src/components/status/QasStatus.test.js +11 -11
  171. package/src/components/status/QasStatus.vue +29 -29
  172. package/src/components/status/QasStatus.yml +10 -10
  173. package/src/components/stepper/QasStepper.vue +152 -152
  174. package/src/components/stepper/QasStepper.yml +35 -35
  175. package/src/components/stepper-form-view/QasStepperFormView.vue +84 -84
  176. package/src/components/stepper-form-view/QasStepperFormView.yml +58 -58
  177. package/src/components/table-generator/QasTableGenerator.vue +416 -416
  178. package/src/components/table-generator/QasTableGenerator.yml +94 -94
  179. package/src/components/tabs-generator/QasTabsGenerator.vue +196 -196
  180. package/src/components/tabs-generator/QasTabsGenerator.yml +53 -53
  181. package/src/components/text-truncate/QasTextTruncate.vue +274 -274
  182. package/src/components/text-truncate/QasTextTruncate.yml +60 -60
  183. package/src/components/timeline/QasTimeline.vue +140 -140
  184. package/src/components/timeline/QasTimeline.yml +36 -36
  185. package/src/components/toggle/QasToggle.vue +14 -14
  186. package/src/components/toggle/QasToggle.yml +5 -5
  187. package/src/components/toggle-visibility/QasToggleVisibility.vue +79 -79
  188. package/src/components/toggle-visibility/QasToggleVisibility.yml +30 -30
  189. package/src/components/transfer/QasTransfer.vue +239 -239
  190. package/src/components/transfer/QasTransfer.yml +60 -60
  191. package/src/components/tree-generator/QasTreeForm.vue +62 -62
  192. package/src/components/tree-generator/QasTreeGenerator.vue +488 -488
  193. package/src/components/tree-generator/QasTreeGenerator.yml +81 -81
  194. package/src/components/uploader/QasUploader.vue +645 -645
  195. package/src/components/uploader/QasUploader.yml +192 -192
  196. package/src/components/uploader/private/PvUploaderGalleryCard.vue +357 -357
  197. package/src/components/welcome/QasWelcome.vue +125 -125
  198. package/src/components/welcome/QasWelcome.yml +23 -23
  199. package/src/components/welcome/private/PvWelcomeShortcutCard.vue +58 -58
  200. package/src/components/whatsapp-link/QasWhatsappLink.vue +34 -34
  201. package/src/components/whatsapp-link/QasWhatsappLink.yml +18 -18
  202. package/src/composables/index.js +8 -8
  203. package/src/composables/private/index.js +3 -3
  204. package/src/composables/private/use-generator.js +174 -174
  205. package/src/composables/private/use-toggle-visibility.js +48 -48
  206. package/src/composables/private/use-view.js +186 -186
  207. package/src/composables/use-context.js +15 -15
  208. package/src/composables/use-form.js +32 -32
  209. package/src/composables/use-history.js +46 -46
  210. package/src/composables/use-notifications.js +128 -114
  211. package/src/composables/use-query-cache.js +60 -60
  212. package/src/composables/use-screen.js +42 -42
  213. package/src/css/base/font-face.scss +28 -28
  214. package/src/css/base/index.scss +1 -1
  215. package/src/css/components/base.scss +12 -12
  216. package/src/css/components/button.scss +116 -116
  217. package/src/css/components/checkbox.scss +14 -14
  218. package/src/css/components/editor.scss +7 -7
  219. package/src/css/components/field.scss +88 -88
  220. package/src/css/components/index.scss +10 -10
  221. package/src/css/components/item.scss +52 -52
  222. package/src/css/components/radio.scss +18 -18
  223. package/src/css/components/scrollbar.scss +20 -20
  224. package/src/css/components/tabs.scss +3 -3
  225. package/src/css/components/toggle.scss +13 -13
  226. package/src/css/mixins/index.scss +3 -3
  227. package/src/css/mixins/set-brand.scss +15 -15
  228. package/src/css/mixins/set-button.scss +26 -26
  229. package/src/css/mixins/set-typography.scss +8 -8
  230. package/src/css/plugins/index.scss +2 -2
  231. package/src/css/plugins/loading.scss +5 -5
  232. package/src/css/plugins/notify.scss +100 -100
  233. package/src/css/utils/background.scss +34 -34
  234. package/src/css/utils/border-radius.scss +29 -29
  235. package/src/css/utils/border.scss +42 -42
  236. package/src/css/utils/container.scss +36 -36
  237. package/src/css/utils/fonts.scss +5 -5
  238. package/src/css/utils/index.scss +10 -10
  239. package/src/css/utils/line-height.scss +19 -19
  240. package/src/css/utils/opacity.scss +5 -5
  241. package/src/css/utils/scroll.scss +21 -21
  242. package/src/css/utils/text.scss +15 -15
  243. package/src/css/utils/unset.scss +8 -8
  244. package/src/css/variables/button.scss +4 -4
  245. package/src/css/variables/index.scss +6 -6
  246. package/src/css/variables/scrollbar.scss +11 -11
  247. package/src/css/variables/separator.scss +2 -2
  248. package/src/css/variables/shadow.scss +3 -3
  249. package/src/css/variables/spacing.scss +98 -98
  250. package/src/css/variables/typography.scss +149 -149
  251. package/src/directives/Test.js +13 -13
  252. package/src/enums/Align.js +7 -7
  253. package/src/enums/Spacing.js +98 -98
  254. package/src/enums/Status.js +33 -33
  255. package/src/helpers/add-counter-suffix.js +3 -3
  256. package/src/helpers/base-64-to-blob.js +21 -21
  257. package/src/helpers/camelize-fields-name.js +15 -15
  258. package/src/helpers/construct-object.js +29 -29
  259. package/src/helpers/copy-to-clipboard.js +15 -15
  260. package/src/helpers/destroy-nested-children-by-key.js +33 -33
  261. package/src/helpers/download-file.js +21 -21
  262. package/src/helpers/filter-list-by-handle.js +31 -31
  263. package/src/helpers/filter-object-to-array.js +29 -29
  264. package/src/helpers/filter-object.js +34 -34
  265. package/src/helpers/filters.js +163 -163
  266. package/src/helpers/find-children-by-key.js +14 -14
  267. package/src/helpers/get-greatest-common-divisor.js +16 -16
  268. package/src/helpers/get-normalized-options.js +20 -20
  269. package/src/helpers/get-placeholder.js +19 -19
  270. package/src/helpers/get-required-label.js +3 -3
  271. package/src/helpers/get-slot-children-text.js +15 -15
  272. package/src/helpers/handle-process.js +13 -13
  273. package/src/helpers/images.js +28 -28
  274. package/src/helpers/index.js +25 -25
  275. package/src/helpers/is-empty.js +3 -3
  276. package/src/helpers/is-local-development.js +3 -3
  277. package/src/helpers/private/gutter-validator.js +15 -15
  278. package/src/helpers/private/has-parent-by-class-name.js +15 -15
  279. package/src/helpers/promise-handler.js +40 -40
  280. package/src/helpers/rules.js +7 -7
  281. package/src/helpers/set-scroll-on-grab.js +128 -128
  282. package/src/index.cjs.js +1 -1
  283. package/src/index.esm.js +4 -4
  284. package/src/index.scss +38 -38
  285. package/src/index.umd.js +2 -2
  286. package/src/mixins/context.js +8 -8
  287. package/src/mixins/delete.js +48 -48
  288. package/src/mixins/dialog-router.js +17 -17
  289. package/src/mixins/form.js +11 -11
  290. package/src/mixins/generator.js +94 -94
  291. package/src/mixins/index.js +17 -17
  292. package/src/mixins/password.js +86 -86
  293. package/src/mixins/search-filter.js +354 -354
  294. package/src/mixins/view.js +156 -156
  295. package/src/pages/ErrorComponent.vue +74 -74
  296. package/src/pages/Forbidden.vue +29 -29
  297. package/src/pages/NotFound.vue +29 -29
  298. package/src/pages/ServerError.vue +29 -29
  299. package/src/pages/Unauthorized.vue +29 -29
  300. package/src/plugins/delete/Delete.js +107 -107
  301. package/src/plugins/delete/Delete.yml +75 -75
  302. package/src/plugins/dialog/Dialog.js +14 -14
  303. package/src/plugins/dialog/Dialog.yml +10 -10
  304. package/src/plugins/index.js +13 -13
  305. package/src/plugins/notify-error/NotifyError.js +13 -13
  306. package/src/plugins/notify-error/NotifyError.yml +11 -11
  307. package/src/plugins/notify-success/NotifySuccess.js +13 -13
  308. package/src/plugins/notify-success/NotifySuccess.yml +11 -11
  309. package/src/plugins/screen/Screen.js +35 -35
  310. package/src/plugins/screen/Screen.yml +16 -16
  311. package/src/shared/date-config.js +26 -26
  312. package/src/shared/fuse-config.js +4 -4
  313. package/src/shared/notify-config.js +7 -7
  314. package/src/vue-plugin/third-party-component-handler.js +29 -29
  315. package/src/vue-plugin.js +282 -282
@@ -1,252 +1,252 @@
1
- <template>
2
- <q-input ref="input" v-model="model" :autogrow="isTextarea" bottom-slots :class="classes" :counter="hasCounter" :dense="dense" :error="errorData" v-bind="$attrs" :error-message="errorMessage" :inputmode="defaultInputmode" :label="formattedLabel" :mask="currentMask" no-error-icon :outlined="outlined" :placeholder="placeholder" :unmasked-value="unmaskedValue" @paste="onPaste">
3
- <template v-if="icon" #append>
4
- <q-icon :name="icon" size="xs" />
5
- </template>
6
-
7
- <template v-if="iconRight" #prepend>
8
- <q-icon :name="iconRight" size="xs" />
9
- </template>
10
-
11
- <template v-for="(_, name) in $slots" #[name]="context">
12
- <slot :name="name" v-bind="context || {}" />
13
- </template>
14
- </q-input>
15
- </template>
16
-
17
- <script>
18
- import { getRequiredLabel, getPlaceholder } from '../../helpers'
19
-
20
- const Masks = {
21
- CompanyDocument: 'company-document',
22
- Document: 'document',
23
- PersonalDocument: 'personal-document',
24
- Phone: 'phone',
25
- PostalCode: 'postal-code'
26
- }
27
-
28
- export default {
29
- name: 'QasInput',
30
-
31
- inheritAttrs: false,
32
-
33
- props: {
34
- dense: {
35
- default: true,
36
- type: Boolean
37
- },
38
-
39
- error: {
40
- type: Boolean
41
- },
42
-
43
- errorMessage: {
44
- type: String,
45
- default: ''
46
- },
47
-
48
- mask: {
49
- type: String,
50
- default: ''
51
- },
52
-
53
- modelValue: {
54
- default: '',
55
- type: [String, Number]
56
- },
57
-
58
- outlined: {
59
- type: Boolean
60
- },
61
-
62
- required: {
63
- type: Boolean
64
- },
65
-
66
- unmaskedValue: {
67
- default: true,
68
- type: Boolean
69
- },
70
-
71
- useRemoveErrorOnType: {
72
- type: Boolean
73
- },
74
-
75
- icon: {
76
- type: String,
77
- default: ''
78
- },
79
-
80
- iconRight: {
81
- type: String,
82
- default: ''
83
- }
84
- },
85
-
86
- emits: ['update:modelValue'],
87
-
88
- data () {
89
- return {
90
- errorData: false,
91
- currentMask: '',
92
- inputReference: null
93
- }
94
- },
95
-
96
- computed: {
97
- hasError () {
98
- return this.inputReference.hasError
99
- },
100
-
101
- masks () {
102
- return {
103
- [Masks.CompanyDocument]: () => '##.###.###/####-##',
104
- [Masks.Document]: () => this.toggleMask('###.###.###-###', '##.###.###/####-##'),
105
- [Masks.PersonalDocument]: () => '###.###.###-##',
106
- [Masks.Phone]: () => this.toggleMask('(##) ####-#####', '(##) #####-####'),
107
- [Masks.PostalCode]: () => '#####-###'
108
- }
109
- },
110
-
111
- defaultInputmode () {
112
- const { inputmode, type } = this.$attrs
113
-
114
- const defaults = {
115
- [Masks.CompanyDocument]: 'numeric',
116
- [Masks.Document]: 'numeric',
117
- [Masks.PersonalDocument]: 'numeric',
118
- [Masks.Phone]: 'tel',
119
- [Masks.PostalCode]: 'numeric',
120
-
121
- // types
122
- email: 'email'
123
- }
124
-
125
- return inputmode || defaults[this.mask || type]
126
- },
127
-
128
- model: {
129
- get () {
130
- return this.modelValue
131
- },
132
-
133
- set (value) {
134
- this.handleErrors()
135
-
136
- return this.$emit('update:modelValue', value)
137
- }
138
- },
139
-
140
- formattedLabel () {
141
- const { label } = this.$attrs
142
-
143
- return getRequiredLabel({ label, required: this.required })
144
- },
145
-
146
- // redesign
147
- classes () {
148
- return {
149
- 'qas-input--has-icon': this.hasPrepend
150
- }
151
- },
152
-
153
- isTextarea () {
154
- return this.$attrs.type === 'textarea'
155
- },
156
-
157
- placeholder () {
158
- return this.$attrs.placeholder || getPlaceholder(this.mask || this.$attrs.type)
159
- },
160
-
161
- hasCounter () {
162
- return this.$attrs.counter ?? (this.$attrs.maxlength && this.isTextarea)
163
- },
164
-
165
- hasPrepend () {
166
- return !!this.$slots.prepend || this.iconRight
167
- }
168
- },
169
-
170
- watch: {
171
- currentMask (value) {
172
- if (!value) return
173
-
174
- const input = this.getInput()
175
-
176
- requestAnimationFrame(() => {
177
- input.selectionStart = input.value ? input.value.length : ''
178
- })
179
- },
180
-
181
- modelValue: {
182
- handler () {
183
- this.handleMask()
184
- },
185
- immediate: true
186
- },
187
-
188
- error: {
189
- handler (value) {
190
- this.errorData = value
191
- },
192
-
193
- immediate: true
194
- }
195
- },
196
-
197
- mounted () {
198
- this.inputReference = this.$refs.input
199
- },
200
-
201
- methods: {
202
- focus () {
203
- return this.inputReference.focus()
204
- },
205
-
206
- resetValidation () {
207
- return this.inputReference.resetValidation()
208
- },
209
-
210
- toggleMask (first, second) {
211
- const length = first.split('#').length - 2
212
- return this.modelValue?.length > length ? second : first
213
- },
214
-
215
- validate (value) {
216
- return this.inputReference.validate(value)
217
- },
218
-
219
- onPaste (event) {
220
- if (!this.currentMask) return
221
-
222
- const value = event.clipboardData.getData('text')
223
- const input = this.getInput()
224
-
225
- requestAnimationFrame(() => {
226
- this.$emit('update:modelValue', value)
227
- input.selectionStart = input.value ? input.value.length : ''
228
- })
229
- },
230
-
231
- getInput () {
232
- return this.inputReference?.$el?.querySelector('input')
233
- },
234
-
235
- handleErrors () {
236
- if (this.useRemoveErrorOnType && this.error) {
237
- this.errorData = false
238
- }
239
- },
240
-
241
- handleMask () {
242
- if (!this.modelValue?.length) return
243
-
244
- const hasDefaultMask = Object.prototype.hasOwnProperty.call(this.masks, this.mask)
245
-
246
- this.$nextTick(() => {
247
- this.currentMask = hasDefaultMask ? this.masks[this.mask]() : this.mask
248
- })
249
- }
250
- }
251
- }
252
- </script>
1
+ <template>
2
+ <q-input ref="input" v-model="model" :autogrow="isTextarea" bottom-slots :class="classes" :counter="hasCounter" :dense="dense" :error="errorData" v-bind="$attrs" :error-message="errorMessage" :inputmode="defaultInputmode" :label="formattedLabel" :mask="currentMask" no-error-icon :outlined="outlined" :placeholder="placeholder" :unmasked-value="unmaskedValue" @paste="onPaste">
3
+ <template v-if="icon" #append>
4
+ <q-icon :name="icon" size="xs" />
5
+ </template>
6
+
7
+ <template v-if="iconRight" #prepend>
8
+ <q-icon :name="iconRight" size="xs" />
9
+ </template>
10
+
11
+ <template v-for="(_, name) in $slots" #[name]="context">
12
+ <slot :name="name" v-bind="context || {}" />
13
+ </template>
14
+ </q-input>
15
+ </template>
16
+
17
+ <script>
18
+ import { getRequiredLabel, getPlaceholder } from '../../helpers'
19
+
20
+ const Masks = {
21
+ CompanyDocument: 'company-document',
22
+ Document: 'document',
23
+ PersonalDocument: 'personal-document',
24
+ Phone: 'phone',
25
+ PostalCode: 'postal-code'
26
+ }
27
+
28
+ export default {
29
+ name: 'QasInput',
30
+
31
+ inheritAttrs: false,
32
+
33
+ props: {
34
+ dense: {
35
+ default: true,
36
+ type: Boolean
37
+ },
38
+
39
+ error: {
40
+ type: Boolean
41
+ },
42
+
43
+ errorMessage: {
44
+ type: String,
45
+ default: ''
46
+ },
47
+
48
+ mask: {
49
+ type: String,
50
+ default: ''
51
+ },
52
+
53
+ modelValue: {
54
+ default: '',
55
+ type: [String, Number]
56
+ },
57
+
58
+ outlined: {
59
+ type: Boolean
60
+ },
61
+
62
+ required: {
63
+ type: Boolean
64
+ },
65
+
66
+ unmaskedValue: {
67
+ default: true,
68
+ type: Boolean
69
+ },
70
+
71
+ useRemoveErrorOnType: {
72
+ type: Boolean
73
+ },
74
+
75
+ icon: {
76
+ type: String,
77
+ default: ''
78
+ },
79
+
80
+ iconRight: {
81
+ type: String,
82
+ default: ''
83
+ }
84
+ },
85
+
86
+ emits: ['update:modelValue'],
87
+
88
+ data () {
89
+ return {
90
+ errorData: false,
91
+ currentMask: '',
92
+ inputReference: null
93
+ }
94
+ },
95
+
96
+ computed: {
97
+ hasError () {
98
+ return this.inputReference.hasError
99
+ },
100
+
101
+ masks () {
102
+ return {
103
+ [Masks.CompanyDocument]: () => '##.###.###/####-##',
104
+ [Masks.Document]: () => this.toggleMask('###.###.###-###', '##.###.###/####-##'),
105
+ [Masks.PersonalDocument]: () => '###.###.###-##',
106
+ [Masks.Phone]: () => this.toggleMask('(##) ####-#####', '(##) #####-####'),
107
+ [Masks.PostalCode]: () => '#####-###'
108
+ }
109
+ },
110
+
111
+ defaultInputmode () {
112
+ const { inputmode, type } = this.$attrs
113
+
114
+ const defaults = {
115
+ [Masks.CompanyDocument]: 'numeric',
116
+ [Masks.Document]: 'numeric',
117
+ [Masks.PersonalDocument]: 'numeric',
118
+ [Masks.Phone]: 'tel',
119
+ [Masks.PostalCode]: 'numeric',
120
+
121
+ // types
122
+ email: 'email'
123
+ }
124
+
125
+ return inputmode || defaults[this.mask || type]
126
+ },
127
+
128
+ model: {
129
+ get () {
130
+ return this.modelValue
131
+ },
132
+
133
+ set (value) {
134
+ this.handleErrors()
135
+
136
+ return this.$emit('update:modelValue', value)
137
+ }
138
+ },
139
+
140
+ formattedLabel () {
141
+ const { label } = this.$attrs
142
+
143
+ return getRequiredLabel({ label, required: this.required })
144
+ },
145
+
146
+ // redesign
147
+ classes () {
148
+ return {
149
+ 'qas-input--has-icon': this.hasPrepend
150
+ }
151
+ },
152
+
153
+ isTextarea () {
154
+ return this.$attrs.type === 'textarea'
155
+ },
156
+
157
+ placeholder () {
158
+ return this.$attrs.placeholder || getPlaceholder(this.mask || this.$attrs.type)
159
+ },
160
+
161
+ hasCounter () {
162
+ return this.$attrs.counter ?? (this.$attrs.maxlength && this.isTextarea)
163
+ },
164
+
165
+ hasPrepend () {
166
+ return !!this.$slots.prepend || this.iconRight
167
+ }
168
+ },
169
+
170
+ watch: {
171
+ currentMask (value) {
172
+ if (!value) return
173
+
174
+ const input = this.getInput()
175
+
176
+ requestAnimationFrame(() => {
177
+ input.selectionStart = input.value ? input.value.length : ''
178
+ })
179
+ },
180
+
181
+ modelValue: {
182
+ handler () {
183
+ this.handleMask()
184
+ },
185
+ immediate: true
186
+ },
187
+
188
+ error: {
189
+ handler (value) {
190
+ this.errorData = value
191
+ },
192
+
193
+ immediate: true
194
+ }
195
+ },
196
+
197
+ mounted () {
198
+ this.inputReference = this.$refs.input
199
+ },
200
+
201
+ methods: {
202
+ focus () {
203
+ return this.inputReference.focus()
204
+ },
205
+
206
+ resetValidation () {
207
+ return this.inputReference.resetValidation()
208
+ },
209
+
210
+ toggleMask (first, second) {
211
+ const length = first.split('#').length - 2
212
+ return this.modelValue?.length > length ? second : first
213
+ },
214
+
215
+ validate (value) {
216
+ return this.inputReference.validate(value)
217
+ },
218
+
219
+ onPaste (event) {
220
+ if (!this.currentMask) return
221
+
222
+ const value = event.clipboardData.getData('text')
223
+ const input = this.getInput()
224
+
225
+ requestAnimationFrame(() => {
226
+ this.$emit('update:modelValue', value)
227
+ input.selectionStart = input.value ? input.value.length : ''
228
+ })
229
+ },
230
+
231
+ getInput () {
232
+ return this.inputReference?.$el?.querySelector('input')
233
+ },
234
+
235
+ handleErrors () {
236
+ if (this.useRemoveErrorOnType && this.error) {
237
+ this.errorData = false
238
+ }
239
+ },
240
+
241
+ handleMask () {
242
+ if (!this.modelValue?.length) return
243
+
244
+ const hasDefaultMask = Object.prototype.hasOwnProperty.call(this.masks, this.mask)
245
+
246
+ this.$nextTick(() => {
247
+ this.currentMask = hasDefaultMask ? this.masks[this.mask]() : this.mask
248
+ })
249
+ }
250
+ }
251
+ }
252
+ </script>
@@ -1,65 +1,65 @@
1
- type: component
2
-
3
- mixins:
4
- - quasar/dist/api/QInput.json
5
-
6
- meta:
7
- desc: Componente para input que implementa o "QInput" repassando propriedades, slots e eventos.
8
-
9
- props:
10
- error-message:
11
- desc: Controla mensagem de erro (apenas quando "error" for "true").
12
- type: String
13
-
14
- error:
15
- desc: Controla cor da borda do input.
16
- type: Boolean
17
-
18
- icon:
19
- desc: Ícone a esquerda.
20
- type: String
21
- default: ''
22
-
23
- icon-right:
24
- desc: Ícone a direita.
25
- type: String
26
- default: ''
27
-
28
- mask:
29
- desc: Máscara do input, é possível passar um slug de mascara ou um pattern personalizado.
30
- type: String
31
- default: ''
32
- examples: [document, personal-document, company-document, phone, postal-code, '##/##/####']
33
-
34
- model-value:
35
- desc: Model do componente.
36
- type: [String, Input]
37
- examples: [v-model="value"]
38
- model: true
39
-
40
- outlined:
41
- desc: Controla borda do input.
42
- default: true
43
- type: Boolean
44
-
45
- required:
46
- desc: Controla label do campo, se for "true" adiciona sufixo "*".
47
- default: false
48
- type: Boolean
49
-
50
- use-remove-error-on-type:
51
- desc: Limpa os erros do campo caso os mesmos existam toda vez que o model atualiza.
52
- type: Boolean
53
-
54
- unmasked-value:
55
- desc: Remove a mascara do v-model.
56
- default: true
57
- type: Boolean
58
-
59
- events:
60
- '@update:model-value -> function (value)':
61
- desc: Dispara toda vez que o model é atualizado, também utilizado para v-model.
62
- params:
63
- value:
64
- desc: Novo valor do v-model
65
- type: String
1
+ type: component
2
+
3
+ mixins:
4
+ - quasar/dist/api/QInput.json
5
+
6
+ meta:
7
+ desc: Componente para input que implementa o "QInput" repassando propriedades, slots e eventos.
8
+
9
+ props:
10
+ error-message:
11
+ desc: Controla mensagem de erro (apenas quando "error" for "true").
12
+ type: String
13
+
14
+ error:
15
+ desc: Controla cor da borda do input.
16
+ type: Boolean
17
+
18
+ icon:
19
+ desc: Ícone a esquerda.
20
+ type: String
21
+ default: ''
22
+
23
+ icon-right:
24
+ desc: Ícone a direita.
25
+ type: String
26
+ default: ''
27
+
28
+ mask:
29
+ desc: Máscara do input, é possível passar um slug de mascara ou um pattern personalizado.
30
+ type: String
31
+ default: ''
32
+ examples: [document, personal-document, company-document, phone, postal-code, '##/##/####']
33
+
34
+ model-value:
35
+ desc: Model do componente.
36
+ type: [String, Input]
37
+ examples: [v-model="value"]
38
+ model: true
39
+
40
+ outlined:
41
+ desc: Controla borda do input.
42
+ default: true
43
+ type: Boolean
44
+
45
+ required:
46
+ desc: Controla label do campo, se for "true" adiciona sufixo "*".
47
+ default: false
48
+ type: Boolean
49
+
50
+ use-remove-error-on-type:
51
+ desc: Limpa os erros do campo caso os mesmos existam toda vez que o model atualiza.
52
+ type: Boolean
53
+
54
+ unmasked-value:
55
+ desc: Remove a mascara do v-model.
56
+ default: true
57
+ type: Boolean
58
+
59
+ events:
60
+ '@update:model-value -> function (value)':
61
+ desc: Dispara toda vez que o model é atualizado, também utilizado para v-model.
62
+ params:
63
+ value:
64
+ desc: Novo valor do v-model
65
+ type: String