@bildvitta/quasar-ui-asteroid 3.0.0-beta.1 → 3.0.0-beta.4

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 (54) hide show
  1. package/dist/api/QasBtn.json +5 -2
  2. package/dist/asteroid.cjs.css +1 -1
  3. package/dist/asteroid.cjs.js +370 -419
  4. package/dist/asteroid.cjs.min.js +2 -2
  5. package/dist/asteroid.esm.css +1 -1
  6. package/dist/asteroid.esm.js +370 -419
  7. package/dist/asteroid.esm.min.js +2 -2
  8. package/dist/asteroid.umd.css +1 -1
  9. package/dist/asteroid.umd.js +373 -422
  10. package/dist/asteroid.umd.min.js +2 -2
  11. package/dist/vetur/asteroid-attributes.json +4 -0
  12. package/dist/vetur/asteroid-tags.json +2 -1
  13. package/package.json +1 -1
  14. package/src/asteroid.js +1 -1
  15. package/src/components/actions/QasActions.vue +1 -5
  16. package/src/components/app-menu/QasAppMenu.vue +1 -4
  17. package/src/components/btn/QasBtn.vue +9 -10
  18. package/src/components/btn/QasBtn.yml +4 -1
  19. package/src/components/dialog/QasDialog.vue +2 -6
  20. package/src/components/form-view/QasFormView.vue +4 -4
  21. package/src/components/gallery/QasGallery.vue +4 -8
  22. package/src/components/profile/QasProfile.vue +2 -5
  23. package/src/components/select-list/QasSelectList.vue +2 -5
  24. package/src/components/signature-uploader/QasSignatureUploader.vue +6 -9
  25. package/src/components/table-generator/QasTableGenerator.vue +1 -4
  26. package/src/components/text-truncate/QasTextTruncate.vue +1 -4
  27. package/src/components/transfer/QasTransfer.vue +3 -6
  28. package/src/composables/useForm.js +3 -0
  29. package/src/css/components/base.scss +3 -0
  30. package/src/css/components/field.scss +4 -0
  31. package/src/css/components/index.scss +4 -0
  32. package/src/css/components/radio.scss +3 -0
  33. package/src/css/components/tabs.scss +3 -0
  34. package/src/css/mixins/index.scss +1 -0
  35. package/src/css/{set-brand.scss → mixins/set-brand.scss} +0 -0
  36. package/src/css/{background.scss → utils/background.scss} +0 -0
  37. package/src/css/{border-radius.scss → utils/border-radius.scss} +0 -0
  38. package/src/css/{border.scss → utils/border.scss} +0 -0
  39. package/src/css/{container.scss → utils/container.scss} +0 -0
  40. package/src/css/{fonts.scss → utils/fonts.scss} +0 -0
  41. package/src/css/utils/index.scss +10 -0
  42. package/src/css/{line-height.scss → utils/line-height.scss} +0 -0
  43. package/src/css/{opacity.scss → utils/opacity.scss} +0 -0
  44. package/src/css/{shadow.scss → utils/shadow.scss} +0 -0
  45. package/src/css/{text.scss → utils/text.scss} +0 -0
  46. package/src/css/{unset.scss → utils/unset.scss} +0 -0
  47. package/src/css/variables/button.scss +3 -0
  48. package/src/css/variables/index.scss +2 -0
  49. package/src/css/variables/typography.scss +139 -0
  50. package/src/index.scss +10 -12
  51. package/src/mixins/index.js +1 -3
  52. package/src/plugins/screen/Screen.js +5 -0
  53. package/src/css/design-system.scss +0 -18
  54. package/src/mixins/screen.js +0 -34
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @bildvitta/quasar-ui-asteroid v3.0.0-beta.1
2
+ * @bildvitta/quasar-ui-asteroid v3.0.0-beta.4
3
3
  * (c) 2022 Bild & Vitta <systemteam@bild.com.br>
4
4
  * Released under the MIT License.
5
5
  */
@@ -7,8 +7,8 @@
7
7
 
8
8
  Object.defineProperty(exports, '__esModule', { value: true });
9
9
 
10
- var humps = require('humps');
11
10
  var vue = require('vue');
11
+ var humps = require('humps');
12
12
  var dateFns = require('date-fns');
13
13
  var locale = require('date-fns/locale');
14
14
  var quasar = require('quasar');
@@ -30,342 +30,9 @@ var Fuse__default = /*#__PURE__*/_interopDefaultLegacy(Fuse);
30
30
  var Sortable__default = /*#__PURE__*/_interopDefaultLegacy(Sortable);
31
31
  var VueGoogleMaps__default = /*#__PURE__*/_interopDefaultLegacy(VueGoogleMaps);
32
32
 
33
- var contextMixin = {
34
- computed: {
35
- mx_context () {
36
- const { limit, ordering, page, search, ...filters } = this.$route.query;
37
- return { filters, limit, ordering, page: page ? parseInt(page) : 1, search }
38
- }
39
- }
40
- };
41
-
42
- const irregularClasses = ['col', 'col-auto', 'fit'];
43
-
44
- var generatorMixin = {
45
- props: {
46
- columns: {
47
- default: () => [],
48
- type: [Array, String, Object]
49
- },
50
-
51
- fields: {
52
- default: () => ({}),
53
- type: Object
54
- },
55
-
56
- gutter: {
57
- default: 'md',
58
- type: [String, Boolean],
59
- validator: value => ['xs', 'sm', 'md', 'lg', 'xl'].includes(value)
60
- }
61
- },
62
-
63
- computed: {
64
- mx_classes () {
65
- const classes = ['row'];
66
-
67
- if (this.gutter) {
68
- classes.push(`q-col-gutter-${this.gutter}`);
69
- }
70
-
71
- return classes
72
- }
73
- },
74
-
75
- methods: {
76
- mx_getBreakpoint (columns) {
77
- const classes = [];
78
- const profiles = { col: 'col', xs: 'col-xs', sm: 'col-sm', md: 'col-md', lg: 'col-lg', xl: 'col-xl' };
79
- const { fieldProps, classes: renamedClasses, ...formattedColumns } = columns || {};
80
-
81
- for (const key in formattedColumns) {
82
- const value = formattedColumns[key];
83
- classes.push(irregularClasses.includes(value) ? value : `${profiles[key]}-${value}`);
84
- }
85
-
86
- return [...classes, renamedClasses]
87
- },
88
-
89
- mx_getFieldClass (index, isGridGenerator) {
90
- if (typeof this.columns === 'string') {
91
- return irregularClasses.includes(this.columns) ? this.columns : `col-${this.columns}`
92
- }
93
-
94
- return Array.isArray(this.columns)
95
- ? this.mx_handleColumnsByIndex(index, isGridGenerator)
96
- : this.mx_handleColumnsByField(index, isGridGenerator)
97
- },
98
-
99
- mx_handleColumnsByField (index, isGridGenerator) {
100
- if (!this.columns[index]) {
101
- return this.mx_setDefaultColumnClass(isGridGenerator)
102
- }
103
-
104
- return this.mx_getBreakpoint(this.columns[index])
105
- },
106
-
107
- mx_handleColumnsByIndex (index, isGridGenerator) {
108
- const fields = isGridGenerator ? this.fields : this.groupedFields.visible;
109
-
110
- if (!Array.isArray(fields)) {
111
- index = Object.keys(fields).findIndex(field => field === index);
112
- }
113
-
114
- const length = this.columns.length;
115
-
116
- if (!length) {
117
- return this.mx_setDefaultColumnClass(isGridGenerator)
118
- }
119
-
120
- return this.mx_getBreakpoint(this.columns[index])
121
- },
122
-
123
- mx_setDefaultColumnClass (isGridGenerator) {
124
- return isGridGenerator ? 'col-6 col-xs-12 col-sm-4' : 'col-6'
125
- }
126
- }
127
- };
128
-
129
- const levels = {
130
- 0: {
131
- color: 'negative',
132
- label: 'Muito fraco',
133
- progress: 0.05,
134
- textClass: 'text-negative'
135
- },
136
-
137
- 1: {
138
- color: 'warning',
139
- label: 'Fraco',
140
- progress: 0.25,
141
- textClass: 'text-warning'
142
- },
143
-
144
- 2: {
145
- color: 'warning',
146
- label: 'Bom',
147
- progress: 0.5,
148
- textClass: 'text-warning'
149
- },
150
-
151
- 3: {
152
- color: 'positive',
153
- label: 'Forte',
154
- progress: 0.75,
155
- textClass: 'text-positive'
156
- },
157
-
158
- 4: {
159
- color: 'positive',
160
- label: 'Muito forte',
161
- progress: 1,
162
- textClass: 'text-positive'
163
- }
164
- };
165
-
166
- var passwordMixin = {
167
- props: {
168
- levels: {
169
- default: () => levels,
170
- type: Object
171
- },
172
-
173
- // https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/minlength
174
- minlength: {
175
- default: 8,
176
- type: [Number, String]
177
- },
178
-
179
- specials: {
180
- default: /[!@#$%^&*()_+\-=[\]{}|;:'",<.>/?`~]/g,
181
- type: RegExp
182
- },
183
-
184
- trackColor: {
185
- default: 'blue-grey-1',
186
- type: String
187
- },
188
-
189
- useLowercase: {
190
- default: true,
191
- type: Boolean
192
- },
193
-
194
- useNumbers: {
195
- default: true,
196
- type: Boolean
197
- },
198
-
199
- useSpecial: {
200
- default: true,
201
- type: Boolean
202
- },
203
-
204
- useUppercase: {
205
- default: true,
206
- type: Boolean
207
- }
208
- }
209
- };
210
-
211
- var screenMixin = {
212
- // TODO: Esses nomes precisam ser alterados para algo mais inteligente.
213
-
214
- computed: {
215
- mx_isSmall () {
216
- // until 599
217
- return this.$q.screen.xs
218
- },
219
-
220
- mx_isMedium () {
221
- // from 600 until 1023
222
- return this.$q.screen.sm
223
- },
224
-
225
- mx_isLarge () {
226
- // from 1024 until the limit
227
- return this.$q.screen.gt.sm
228
- },
229
-
230
- mx_untilMedium () {
231
- // from 0 until 599
232
- return this.$q.screen.lt.sm
233
- },
234
-
235
- mx_untilLarge () {
236
- // from 0 until 1023
237
- return this.$q.screen.lt.md
238
- },
239
-
240
- mx_isMobile () {
241
- return this.$q.platform.is.mobile
242
- }
243
- }
244
- };
245
-
246
- var viewMixin = {
247
- props: {
248
- dialog: {
249
- type: Boolean
250
- },
251
-
252
- entity: {
253
- required: true,
254
- type: String
255
- },
256
-
257
- url: {
258
- default: '',
259
- type: String
260
- },
261
-
262
- fields: {
263
- default: () => ({}),
264
- type: Object
265
- },
266
-
267
- errors: {
268
- default: () => ({}),
269
- type: Object
270
- },
271
-
272
- metadata: {
273
- default: () => ({}),
274
- type: Object
275
- },
276
-
277
- fetching: {
278
- type: Boolean
279
- }
280
- },
281
-
282
- emits: [
283
- 'update:fields',
284
- 'update:errors',
285
- 'update:metadata',
286
- 'update:fetching'
287
- ],
288
-
289
- data () {
290
- return {
291
- mx_errors: {},
292
- mx_fields: {},
293
- mx_metadata: {},
294
-
295
- mx_isFetching: false
296
- }
297
- },
298
-
299
- watch: {
300
- mx_isFetching (value) {
301
- this.$emit('update:fetching', value);
302
- }
303
- },
304
-
305
- computed: {
306
- mx_componentTag () {
307
- return this.dialog ? 'div' : 'q-page'
308
- },
309
-
310
- mx_componentClass () {
311
- return !this.dialog && 'container spaced'
312
- },
313
-
314
- mx_hasFooterSlot () {
315
- return !!(this.$slots.footer)
316
- },
317
-
318
- mx_hasHeaderSlot () {
319
- return !!(this.$slots.header)
320
- }
321
- },
322
-
323
- methods: {
324
- mx_fetchError (error) {
325
- const { response } = error;
326
- const exception = response?.data?.exception || error.message;
327
-
328
- this.$qas.error('Ops! Erro ao obter os dados.', exception);
329
-
330
- const status = response?.status;
331
- const redirect = ({ 403: 'Forbidden', 404: 'NotFound' })[status];
332
-
333
- if (redirect) {
334
- this.$router.replace({ name: redirect });
335
- }
336
- },
337
-
338
- mx_setErrors (errors = {}) {
339
- this.mx_errors = vue.markRaw(errors);
340
- },
341
-
342
- mx_setFields (fields = {}) {
343
- for (const field in fields) {
344
- fields[field].name = humps.camelize(fields[field].name);
345
- }
346
-
347
- this.mx_fields = vue.markRaw(fields);
348
- },
349
-
350
- mx_setMetadata (metadata = {}) {
351
- this.mx_metadata = vue.markRaw(metadata);
352
- },
353
-
354
- mx_updateModels (models) {
355
- for (const key in models) {
356
- if (!models[key]) continue
357
-
358
- this.$emit(`update:${key}`, models[key]);
359
- }
360
- }
361
- }
362
- };
363
-
364
33
  var script$L = {
365
34
  name: 'QasActions',
366
35
 
367
- mixins: [screenMixin],
368
-
369
36
  props: {
370
37
  align: {
371
38
  default: 'end',
@@ -385,7 +52,7 @@ var script$L = {
385
52
  return [
386
53
  `justify-${this.align}`,
387
54
  `q-col-gutter-${this.gutter}`,
388
- this.mx_isSmall ? 'column reverse' : 'row'
55
+ this.$qas.screen.isSmall ? 'column reverse' : 'row'
389
56
  ]
390
57
  }
391
58
  }
@@ -413,30 +80,31 @@ script$L.__file = "src/components/actions/QasActions.vue";
413
80
  var script$K = {
414
81
  name: 'QasBtn',
415
82
 
416
- mixins: [screenMixin],
417
-
418
83
  props: {
419
84
  hideLabelOnSmallScreen: {
420
85
  type: Boolean
86
+ },
87
+
88
+ label: {
89
+ type: String,
90
+ default: ''
421
91
  }
422
92
  },
423
93
 
424
94
  computed: {
425
95
  attributes () {
426
- const { label, ...attributes } = this.$attrs;
427
-
428
96
  return {
429
- ...(this.showLabel && { label }),
430
- ...attributes
97
+ ...(this.showLabel && { label: this.label }),
98
+ ...this.$attrs
431
99
  }
432
100
  },
433
101
 
434
102
  hasLabel () {
435
- return !!(this.$attrs.label || this.$slots.default)
103
+ return !!(this.label || this.$slots.default)
436
104
  },
437
105
 
438
106
  showLabel () {
439
- return this.hasLabel && !(this.hideLabelOnSmallScreen && this.mx_isSmall)
107
+ return this.hasLabel && !(this.hideLabelOnSmallScreen && this.$qas.screen.isSmall)
440
108
  },
441
109
 
442
110
  slots () {
@@ -1531,8 +1199,6 @@ script$F.__file = "src/components/app-bar/QasAppBar.vue";
1531
1199
  var script$E = {
1532
1200
  name: 'QasAppMenu',
1533
1201
 
1534
- mixins: [screenMixin],
1535
-
1536
1202
  props: {
1537
1203
  items: {
1538
1204
  default: () => [],
@@ -1634,7 +1300,7 @@ var script$E = {
1634
1300
  },
1635
1301
 
1636
1302
  beforeHide () {
1637
- if (this.mx_isLarge) {
1303
+ if (this.$qas.screen.isLarge) {
1638
1304
  this.model = true;
1639
1305
  this.miniMode = !this.miniMode;
1640
1306
  }
@@ -2533,8 +2199,6 @@ var script$x = {
2533
2199
  QasActions: script$L
2534
2200
  },
2535
2201
 
2536
- mixins: [screenMixin],
2537
-
2538
2202
  props: {
2539
2203
  actionsProps: {
2540
2204
  default: () => ({}),
@@ -2617,8 +2281,8 @@ var script$x = {
2617
2281
 
2618
2282
  style () {
2619
2283
  return {
2620
- maxWidth: this.maxWidth || (this.mx_isSmall ? '' : '600px'),
2621
- minWidth: this.minWidth || (this.mx_isSmall ? '' : '400px')
2284
+ maxWidth: this.maxWidth || (this.$qas.screen.isSmall ? '' : '600px'),
2285
+ minWidth: this.minWidth || (this.$qas.screen.isSmall ? '' : '400px')
2622
2286
  }
2623
2287
  },
2624
2288
 
@@ -2786,10 +2450,15 @@ var NotifySuccess = (message, caption) => {
2786
2450
 
2787
2451
  var Screen = () => {
2788
2452
  const screensModel = {
2453
+ // até 599px
2789
2454
  isSmall: () => quasar.Screen.xs,
2455
+ // de 600 até 1023px
2790
2456
  isMedium: () => quasar.Screen.sm,
2457
+ // de 600 até 1023px
2791
2458
  isLarge: () => quasar.Screen.gt.sm,
2459
+ // de 0 até 599px
2792
2460
  untilMedium: () => quasar.Screen.lt.sm,
2461
+ // de 0 ate 1023px
2793
2462
  untilLarge: () => quasar.Screen.lt.md,
2794
2463
 
2795
2464
  // Plataforma
@@ -3402,39 +3071,121 @@ var script$t = {
3402
3071
  });
3403
3072
  },
3404
3073
 
3405
- beforeUnmount () {
3406
- this.autoNumeric.remove();
3074
+ beforeUnmount () {
3075
+ this.autoNumeric.remove();
3076
+ }
3077
+ };
3078
+
3079
+ const _hoisted_1$j = ["id", "model-value", "onInput"];
3080
+
3081
+ function render$t(_ctx, _cache, $props, $setup, $data, $options) {
3082
+ const _component_q_field = vue.resolveComponent("q-field");
3083
+
3084
+ return (vue.openBlock(), vue.createBlock(_component_q_field, {
3085
+ modelValue: $options.model,
3086
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = $event => (($options.model) = $event)),
3087
+ outlined: ""
3088
+ }, {
3089
+ control: vue.withCtx(({ emitValue, floatingLabel, id, value }) => [
3090
+ vue.withDirectives(vue.createElementVNode("input", {
3091
+ id: id,
3092
+ ref: "input",
3093
+ class: "q-field__input",
3094
+ "model-value": value,
3095
+ onInput: $event => (emitValue($event.target.value))
3096
+ }, null, 40 /* PROPS, HYDRATE_EVENTS */, _hoisted_1$j), [
3097
+ [vue.vShow, floatingLabel]
3098
+ ])
3099
+ ]),
3100
+ _: 1 /* STABLE */
3101
+ }, 8 /* PROPS */, ["modelValue"]))
3102
+ }
3103
+
3104
+ script$t.render = render$t;
3105
+ script$t.__file = "src/components/numeric-input/QasNumericInput.vue";
3106
+
3107
+ const levels = {
3108
+ 0: {
3109
+ color: 'negative',
3110
+ label: 'Muito fraco',
3111
+ progress: 0.05,
3112
+ textClass: 'text-negative'
3113
+ },
3114
+
3115
+ 1: {
3116
+ color: 'warning',
3117
+ label: 'Fraco',
3118
+ progress: 0.25,
3119
+ textClass: 'text-warning'
3120
+ },
3121
+
3122
+ 2: {
3123
+ color: 'warning',
3124
+ label: 'Bom',
3125
+ progress: 0.5,
3126
+ textClass: 'text-warning'
3127
+ },
3128
+
3129
+ 3: {
3130
+ color: 'positive',
3131
+ label: 'Forte',
3132
+ progress: 0.75,
3133
+ textClass: 'text-positive'
3134
+ },
3135
+
3136
+ 4: {
3137
+ color: 'positive',
3138
+ label: 'Muito forte',
3139
+ progress: 1,
3140
+ textClass: 'text-positive'
3141
+ }
3142
+ };
3143
+
3144
+ var passwordMixin = {
3145
+ props: {
3146
+ levels: {
3147
+ default: () => levels,
3148
+ type: Object
3149
+ },
3150
+
3151
+ // https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/minlength
3152
+ minlength: {
3153
+ default: 8,
3154
+ type: [Number, String]
3155
+ },
3156
+
3157
+ specials: {
3158
+ default: /[!@#$%^&*()_+\-=[\]{}|;:'",<.>/?`~]/g,
3159
+ type: RegExp
3160
+ },
3161
+
3162
+ trackColor: {
3163
+ default: 'blue-grey-1',
3164
+ type: String
3165
+ },
3166
+
3167
+ useLowercase: {
3168
+ default: true,
3169
+ type: Boolean
3170
+ },
3171
+
3172
+ useNumbers: {
3173
+ default: true,
3174
+ type: Boolean
3175
+ },
3176
+
3177
+ useSpecial: {
3178
+ default: true,
3179
+ type: Boolean
3180
+ },
3181
+
3182
+ useUppercase: {
3183
+ default: true,
3184
+ type: Boolean
3185
+ }
3407
3186
  }
3408
3187
  };
3409
3188
 
3410
- const _hoisted_1$j = ["id", "model-value", "onInput"];
3411
-
3412
- function render$t(_ctx, _cache, $props, $setup, $data, $options) {
3413
- const _component_q_field = vue.resolveComponent("q-field");
3414
-
3415
- return (vue.openBlock(), vue.createBlock(_component_q_field, {
3416
- modelValue: $options.model,
3417
- "onUpdate:modelValue": _cache[0] || (_cache[0] = $event => (($options.model) = $event)),
3418
- outlined: ""
3419
- }, {
3420
- control: vue.withCtx(({ emitValue, floatingLabel, id, value }) => [
3421
- vue.withDirectives(vue.createElementVNode("input", {
3422
- id: id,
3423
- ref: "input",
3424
- class: "q-field__input",
3425
- "model-value": value,
3426
- onInput: $event => (emitValue($event.target.value))
3427
- }, null, 40 /* PROPS, HYDRATE_EVENTS */, _hoisted_1$j), [
3428
- [vue.vShow, floatingLabel]
3429
- ])
3430
- ]),
3431
- _: 1 /* STABLE */
3432
- }, 8 /* PROPS */, ["modelValue"]))
3433
- }
3434
-
3435
- script$t.render = render$t;
3436
- script$t.__file = "src/components/numeric-input/QasNumericInput.vue";
3437
-
3438
3189
  var script$s = {
3439
3190
  name: 'QasPasswordStrengthChecker',
3440
3191
 
@@ -4311,8 +4062,6 @@ var script$o = {
4311
4062
  QasSignaturePad: script$p
4312
4063
  },
4313
4064
 
4314
- mixins: [screenMixin],
4315
-
4316
4065
  props: {
4317
4066
  dialogProps: {
4318
4067
  type: Object,
@@ -4378,18 +4127,18 @@ var script$o = {
4378
4127
 
4379
4128
  signaturePadWidth () {
4380
4129
  const sizes = {
4381
- [this.mx_isSmall]: { width: '100%' },
4382
- [this.mx_isMedium]: { width: '570px' },
4383
- [this.mx_isLarge]: { width: '350px' }
4130
+ [this.$qas.screen.isSmall]: { width: '100%' },
4131
+ [this.$qas.screen.isMedium]: { width: '570px' },
4132
+ [this.$qas.screen.isLarge]: { width: '350px' }
4384
4133
  };
4385
4134
  return sizes.true
4386
4135
  },
4387
4136
 
4388
4137
  signaturePadHeight () {
4389
4138
  const sizes = {
4390
- [this.mx_isSmall]: '250',
4391
- [this.mx_isMedium]: '400',
4392
- [this.mx_isLarge]: '250'
4139
+ [this.$qas.screen.isSmall]: '250',
4140
+ [this.$qas.screen.isMedium]: '400',
4141
+ [this.$qas.screen.isLarge]: '250'
4393
4142
  };
4394
4143
 
4395
4144
  return sizes.true
@@ -4746,6 +4495,15 @@ function render$n(_ctx, _cache, $props, $setup, $data, $options) {
4746
4495
  script$n.render = render$n;
4747
4496
  script$n.__file = "src/components/field/QasField.vue";
4748
4497
 
4498
+ var contextMixin = {
4499
+ computed: {
4500
+ mx_context () {
4501
+ const { limit, ordering, page, search, ...filters } = this.$route.query;
4502
+ return { filters, limit, ordering, page: page ? parseInt(page) : 1, search }
4503
+ }
4504
+ }
4505
+ };
4506
+
4749
4507
  var script$m = {
4750
4508
  name: 'QasFilters',
4751
4509
 
@@ -5183,6 +4941,93 @@ function render$m(_ctx, _cache, $props, $setup, $data, $options) {
5183
4941
  script$m.render = render$m;
5184
4942
  script$m.__file = "src/components/filters/QasFilters.vue";
5185
4943
 
4944
+ const irregularClasses = ['col', 'col-auto', 'fit'];
4945
+
4946
+ var generatorMixin = {
4947
+ props: {
4948
+ columns: {
4949
+ default: () => [],
4950
+ type: [Array, String, Object]
4951
+ },
4952
+
4953
+ fields: {
4954
+ default: () => ({}),
4955
+ type: Object
4956
+ },
4957
+
4958
+ gutter: {
4959
+ default: 'md',
4960
+ type: [String, Boolean],
4961
+ validator: value => ['xs', 'sm', 'md', 'lg', 'xl'].includes(value)
4962
+ }
4963
+ },
4964
+
4965
+ computed: {
4966
+ mx_classes () {
4967
+ const classes = ['row'];
4968
+
4969
+ if (this.gutter) {
4970
+ classes.push(`q-col-gutter-${this.gutter}`);
4971
+ }
4972
+
4973
+ return classes
4974
+ }
4975
+ },
4976
+
4977
+ methods: {
4978
+ mx_getBreakpoint (columns) {
4979
+ const classes = [];
4980
+ const profiles = { col: 'col', xs: 'col-xs', sm: 'col-sm', md: 'col-md', lg: 'col-lg', xl: 'col-xl' };
4981
+ const { fieldProps, classes: renamedClasses, ...formattedColumns } = columns || {};
4982
+
4983
+ for (const key in formattedColumns) {
4984
+ const value = formattedColumns[key];
4985
+ classes.push(irregularClasses.includes(value) ? value : `${profiles[key]}-${value}`);
4986
+ }
4987
+
4988
+ return [...classes, renamedClasses]
4989
+ },
4990
+
4991
+ mx_getFieldClass (index, isGridGenerator) {
4992
+ if (typeof this.columns === 'string') {
4993
+ return irregularClasses.includes(this.columns) ? this.columns : `col-${this.columns}`
4994
+ }
4995
+
4996
+ return Array.isArray(this.columns)
4997
+ ? this.mx_handleColumnsByIndex(index, isGridGenerator)
4998
+ : this.mx_handleColumnsByField(index, isGridGenerator)
4999
+ },
5000
+
5001
+ mx_handleColumnsByField (index, isGridGenerator) {
5002
+ if (!this.columns[index]) {
5003
+ return this.mx_setDefaultColumnClass(isGridGenerator)
5004
+ }
5005
+
5006
+ return this.mx_getBreakpoint(this.columns[index])
5007
+ },
5008
+
5009
+ mx_handleColumnsByIndex (index, isGridGenerator) {
5010
+ const fields = isGridGenerator ? this.fields : this.groupedFields.visible;
5011
+
5012
+ if (!Array.isArray(fields)) {
5013
+ index = Object.keys(fields).findIndex(field => field === index);
5014
+ }
5015
+
5016
+ const length = this.columns.length;
5017
+
5018
+ if (!length) {
5019
+ return this.mx_setDefaultColumnClass(isGridGenerator)
5020
+ }
5021
+
5022
+ return this.mx_getBreakpoint(this.columns[index])
5023
+ },
5024
+
5025
+ mx_setDefaultColumnClass (isGridGenerator) {
5026
+ return isGridGenerator ? 'col-6 col-xs-12 col-sm-4' : 'col-6'
5027
+ }
5028
+ }
5029
+ };
5030
+
5186
5031
  var script$l = {
5187
5032
  name: 'QasFormGenerator',
5188
5033
 
@@ -5290,6 +5135,124 @@ function render$l(_ctx, _cache, $props, $setup, $data, $options) {
5290
5135
  script$l.render = render$l;
5291
5136
  script$l.__file = "src/components/form-generator/QasFormGenerator.vue";
5292
5137
 
5138
+ var viewMixin = {
5139
+ props: {
5140
+ dialog: {
5141
+ type: Boolean
5142
+ },
5143
+
5144
+ entity: {
5145
+ required: true,
5146
+ type: String
5147
+ },
5148
+
5149
+ url: {
5150
+ default: '',
5151
+ type: String
5152
+ },
5153
+
5154
+ fields: {
5155
+ default: () => ({}),
5156
+ type: Object
5157
+ },
5158
+
5159
+ errors: {
5160
+ default: () => ({}),
5161
+ type: Object
5162
+ },
5163
+
5164
+ metadata: {
5165
+ default: () => ({}),
5166
+ type: Object
5167
+ },
5168
+
5169
+ fetching: {
5170
+ type: Boolean
5171
+ }
5172
+ },
5173
+
5174
+ emits: [
5175
+ 'update:fields',
5176
+ 'update:errors',
5177
+ 'update:metadata',
5178
+ 'update:fetching'
5179
+ ],
5180
+
5181
+ data () {
5182
+ return {
5183
+ mx_errors: {},
5184
+ mx_fields: {},
5185
+ mx_metadata: {},
5186
+
5187
+ mx_isFetching: false
5188
+ }
5189
+ },
5190
+
5191
+ watch: {
5192
+ mx_isFetching (value) {
5193
+ this.$emit('update:fetching', value);
5194
+ }
5195
+ },
5196
+
5197
+ computed: {
5198
+ mx_componentTag () {
5199
+ return this.dialog ? 'div' : 'q-page'
5200
+ },
5201
+
5202
+ mx_componentClass () {
5203
+ return !this.dialog && 'container spaced'
5204
+ },
5205
+
5206
+ mx_hasFooterSlot () {
5207
+ return !!(this.$slots.footer)
5208
+ },
5209
+
5210
+ mx_hasHeaderSlot () {
5211
+ return !!(this.$slots.header)
5212
+ }
5213
+ },
5214
+
5215
+ methods: {
5216
+ mx_fetchError (error) {
5217
+ const { response } = error;
5218
+ const exception = response?.data?.exception || error.message;
5219
+
5220
+ this.$qas.error('Ops! Erro ao obter os dados.', exception);
5221
+
5222
+ const status = response?.status;
5223
+ const redirect = ({ 403: 'Forbidden', 404: 'NotFound' })[status];
5224
+
5225
+ if (redirect) {
5226
+ this.$router.replace({ name: redirect });
5227
+ }
5228
+ },
5229
+
5230
+ mx_setErrors (errors = {}) {
5231
+ this.mx_errors = vue.markRaw(errors);
5232
+ },
5233
+
5234
+ mx_setFields (fields = {}) {
5235
+ for (const field in fields) {
5236
+ fields[field].name = humps.camelize(fields[field].name);
5237
+ }
5238
+
5239
+ this.mx_fields = vue.markRaw(fields);
5240
+ },
5241
+
5242
+ mx_setMetadata (metadata = {}) {
5243
+ this.mx_metadata = vue.markRaw(metadata);
5244
+ },
5245
+
5246
+ mx_updateModels (models) {
5247
+ for (const key in models) {
5248
+ if (!models[key]) continue
5249
+
5250
+ this.$emit(`update:${key}`, models[key]);
5251
+ }
5252
+ }
5253
+ }
5254
+ };
5255
+
5293
5256
  var script$k = {
5294
5257
  name: 'QasFormView',
5295
5258
 
@@ -5298,7 +5261,7 @@ var script$k = {
5298
5261
  QasDialog: script$x
5299
5262
  },
5300
5263
 
5301
- mixins: [viewMixin, screenMixin],
5264
+ mixins: [viewMixin],
5302
5265
 
5303
5266
  props: {
5304
5267
  cancelButton: {
@@ -5392,7 +5355,7 @@ var script$k = {
5392
5355
 
5393
5356
  computed: {
5394
5357
  cancelButtonClass () {
5395
- return this.mx_isSmall && 'order-last'
5358
+ return this.$qas.screen.isSmall && 'order-last'
5396
5359
  },
5397
5360
 
5398
5361
  fetchURL () {
@@ -5420,7 +5383,7 @@ var script$k = {
5420
5383
  },
5421
5384
 
5422
5385
  saveButtonClass () {
5423
- return this.mx_isSmall && 'order-first'
5386
+ return this.$qas.screen.isSmall && 'order-first'
5424
5387
  },
5425
5388
 
5426
5389
  isCancelButtonDisabled () {
@@ -5708,8 +5671,6 @@ script$k.__file = "src/components/form-view/QasFormView.vue";
5708
5671
  var script$j = {
5709
5672
  name: 'QasGallery',
5710
5673
 
5711
- mixins: [screenMixin],
5712
-
5713
5674
  props: {
5714
5675
  carouselNextIcon: {
5715
5676
  type: String,
@@ -5766,13 +5727,13 @@ var script$j = {
5766
5727
  return this.height || 'auto'
5767
5728
  }
5768
5729
 
5769
- return this.mx_isSmall ? '90px' : '120px'
5730
+ return this.$qas.screen.isSmall ? '90px' : '120px'
5770
5731
  },
5771
5732
 
5772
5733
  galleryColumnsClasses () {
5773
5734
  if (this.isSingleImage) return 'col-12'
5774
5735
 
5775
- return this.mx_isSmall ? 'col-6' : 'col-2'
5736
+ return this.$qas.screen.isSmall ? 'col-6' : 'col-2'
5776
5737
  },
5777
5738
 
5778
5739
  hideShowMore () {
@@ -5907,9 +5868,9 @@ function render$j(_ctx, _cache, $props, $setup, $data, $options) {
5907
5868
  modelValue: $data.imageIndex,
5908
5869
  "onUpdate:modelValue": _cache[0] || (_cache[0] = $event => (($data.imageIndex) = $event)),
5909
5870
  animated: "",
5910
- arrows: !_ctx.mx_isSmall,
5871
+ arrows: !_ctx.$qas.screen.isSmall,
5911
5872
  "control-text-color": "primary",
5912
- fullscreen: _ctx.mx_isSmall,
5873
+ fullscreen: _ctx.$qas.screen.isSmall,
5913
5874
  height: $options.carouselImageHeight,
5914
5875
  "next-icon": $props.carouselNextIcon,
5915
5876
  "prev-icon": $props.carouselPreviousIcon,
@@ -5925,7 +5886,7 @@ function render$j(_ctx, _cache, $props, $setup, $data, $options) {
5925
5886
  name: index
5926
5887
  }, {
5927
5888
  default: vue.withCtx(() => [
5928
- (_ctx.mx_isSmall)
5889
+ (_ctx.$qas.screen.isSmall)
5929
5890
  ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$5, [
5930
5891
  vue.createVNode(_component_qas_btn, {
5931
5892
  dense: "",
@@ -7299,8 +7260,6 @@ var script$a = {
7299
7260
  QasGridGenerator: script$i
7300
7261
  },
7301
7262
 
7302
- mixins: [screenMixin],
7303
-
7304
7263
  props: {
7305
7264
  columns: {
7306
7265
  type: Object,
@@ -7341,7 +7300,7 @@ var script$a = {
7341
7300
 
7342
7301
  computed: {
7343
7302
  directionClasses () {
7344
- return this.mx_untilMedium ? 'col' : 'row items-center'
7303
+ return this.$qas.screen.untilMedium ? 'col' : 'row items-center'
7345
7304
  },
7346
7305
 
7347
7306
  userAvatarImage () {
@@ -7349,7 +7308,7 @@ var script$a = {
7349
7308
  },
7350
7309
 
7351
7310
  avatarSize () {
7352
- return this.mx_isSmall ? '145px' : '188px'
7311
+ return this.$qas.screen.isSmall ? '145px' : '188px'
7353
7312
  }
7354
7313
  },
7355
7314
 
@@ -7930,8 +7889,6 @@ var script$6 = {
7930
7889
  QasSearchBox: script$8
7931
7890
  },
7932
7891
 
7933
- mixins: [screenMixin],
7934
-
7935
7892
  props: {
7936
7893
  deleteOnly: {
7937
7894
  type: Boolean
@@ -8037,9 +7994,9 @@ var script$6 = {
8037
7994
  const isSelected = this.values.includes(value);
8038
7995
 
8039
7996
  return {
8040
- dense: this.mx_isSmall,
7997
+ dense: this.$qas.screen.isSmall,
8041
7998
  hideLabelOnSmallScreen: true,
8042
- icon: !this.mx_isSmall ? undefined : isSelected ? 'o_close' : 'o_add',
7999
+ icon: !this.$qas.screen.isSmall ? undefined : isSelected ? 'o_close' : 'o_add',
8043
8000
  label: isSelected ? 'Remover' : 'Adicionar',
8044
8001
  outline: isSelected,
8045
8002
  size: 'sm'
@@ -8440,8 +8397,6 @@ script$4.__file = "src/components/sortable/QasSortable.vue";
8440
8397
  var script$3 = {
8441
8398
  name: 'QasTableGenerator',
8442
8399
 
8443
- mixins: [screenMixin],
8444
-
8445
8400
  props: {
8446
8401
  columns: {
8447
8402
  default: () => [],
@@ -8568,7 +8523,7 @@ var script$3 = {
8568
8523
  },
8569
8524
 
8570
8525
  tableClass () {
8571
- return this.mx_isSmall && 'qas-table-generator--mobile'
8526
+ return this.$qas.screen.isSmall && 'qas-table-generator--mobile'
8572
8527
  },
8573
8528
 
8574
8529
  hasScrollOnGrab () {
@@ -8809,8 +8764,6 @@ var script$1 = {
8809
8764
  QasDialog: script$x
8810
8765
  },
8811
8766
 
8812
- mixins: [screenMixin],
8813
-
8814
8767
  props: {
8815
8768
  dialogProps: {
8816
8769
  type: Object,
@@ -8850,7 +8803,7 @@ var script$1 = {
8850
8803
 
8851
8804
  computed: {
8852
8805
  truncateTextClass () {
8853
- return (this.isTruncated || this.mx_isSmall) && 'ellipsis q-pr-sm'
8806
+ return (this.isTruncated || this.$qas.screen.isSmall) && 'ellipsis q-pr-sm'
8854
8807
  },
8855
8808
 
8856
8809
  isTruncated () {
@@ -8952,8 +8905,6 @@ var script = {
8952
8905
  QasSearchBox: script$8
8953
8906
  },
8954
8907
 
8955
- mixins: [screenMixin],
8956
-
8957
8908
  props: {
8958
8909
  emitValue: {
8959
8910
  type: Boolean
@@ -9011,15 +8962,15 @@ var script = {
9011
8962
 
9012
8963
  computed: {
9013
8964
  actionsClass () {
9014
- return !this.mx_isSmall && 'column'
8965
+ return !this.$qas.screen.isSmall && 'column'
9015
8966
  },
9016
8967
 
9017
8968
  gutterClass () {
9018
- return `q-col-gutter-${this.mx_untilLarge ? 'md' : 'xl'}`
8969
+ return `q-col-gutter-${this.$qas.screen.untilLarge ? 'md' : 'xl'}`
9019
8970
  },
9020
8971
 
9021
8972
  iconClass () {
9022
- return !this.mx_isSmall && 'qas-transfer__icon'
8973
+ return !this.$qas.screen.isSmall && 'qas-transfer__icon'
9023
8974
  },
9024
8975
 
9025
8976
  searchBoxProps () {
@@ -9276,7 +9227,7 @@ script.__file = "src/components/transfer/QasTransfer.vue";
9276
9227
 
9277
9228
  var name = "@bildvitta/quasar-ui-asteroid";
9278
9229
  var description = "Asteroid";
9279
- var version$1 = "3.0.0-beta.1";
9230
+ var version$1 = "3.0.0-beta.4";
9280
9231
  var author = "Bild & Vitta <systemteam@bild.com.br>";
9281
9232
  var license = "MIT";
9282
9233
  var main = "dist/asteroid.cjs.min.js";