@bildvitta/quasar-ui-asteroid 3.0.0-alpha.2 → 3.0.0-beta.2

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 (60) hide show
  1. package/dist/api/QasDelete.json +5 -0
  2. package/dist/api/QasFilters.json +4 -0
  3. package/dist/api/QasFormView.json +6 -4
  4. package/dist/api/QasInput.json +16 -1
  5. package/dist/api/QasPasswordInput.json +2 -1
  6. package/dist/api/QasSignatureUploader.json +7 -0
  7. package/dist/asteroid.cjs.css +1 -1
  8. package/dist/asteroid.cjs.js +469 -281
  9. package/dist/asteroid.cjs.min.js +2 -2
  10. package/dist/asteroid.esm.css +1 -1
  11. package/dist/asteroid.esm.js +472 -283
  12. package/dist/asteroid.esm.min.js +2 -2
  13. package/dist/asteroid.umd.css +1 -1
  14. package/dist/asteroid.umd.js +472 -283
  15. package/dist/asteroid.umd.min.js +2 -2
  16. package/dist/vetur/asteroid-attributes.json +27 -3
  17. package/dist/vetur/asteroid-tags.json +9 -3
  18. package/package.json +1 -1
  19. package/src/asteroid.js +1 -0
  20. package/src/components/actions-menu/QasActionsMenu.vue +3 -5
  21. package/src/components/btn/QasBtn.vue +6 -4
  22. package/src/components/delete/QasDelete.vue +23 -1
  23. package/src/components/delete/QasDelete.yml +4 -0
  24. package/src/components/dialog/QasDialog.vue +2 -2
  25. package/src/components/field/QasField.vue +1 -2
  26. package/src/components/filters/QasFilters.vue +6 -2
  27. package/src/components/filters/QasFilters.yml +4 -0
  28. package/src/components/form-view/QasFormView.vue +10 -10
  29. package/src/components/form-view/QasFormView.yml +8 -3
  30. package/src/components/input/QasInput.vue +43 -2
  31. package/src/components/input/QasInput.yml +13 -1
  32. package/src/components/nested-fields/QasNestedFields.vue +47 -35
  33. package/src/components/page-header/QasPageHeader.vue +4 -2
  34. package/src/components/password-input/QasPasswordInput.vue +17 -26
  35. package/src/components/password-input/QasPasswordInput.yml +1 -1
  36. package/src/components/search-box/QasSearchBox.vue +6 -1
  37. package/src/components/select-list/QasSelectList.vue +10 -8
  38. package/src/components/signature-uploader/QasSignatureUploader.vue +38 -2
  39. package/src/components/signature-uploader/QasSignatureUploader.yml +5 -0
  40. package/src/components/table-generator/QasTableGenerator.vue +2 -2
  41. package/src/components/transfer/QasTransfer.vue +9 -7
  42. package/src/components/uploader/QasUploader.vue +1 -2
  43. package/src/composables/index.js +1 -0
  44. package/src/composables/useHistory.js +46 -0
  45. package/src/directives/Test.js +13 -0
  46. package/src/helpers/filter-list-by-handle.js +31 -0
  47. package/src/helpers/filter-object-to-array.js +29 -0
  48. package/src/helpers/filter-object.js +2 -3
  49. package/src/helpers/index.js +2 -0
  50. package/src/index.scss +3 -2
  51. package/src/mixins/view.js +2 -0
  52. package/src/pages/Forbidden.vue +12 -0
  53. package/src/pages/NotFound.vue +12 -0
  54. package/src/plugins/index.js +2 -0
  55. package/src/plugins/screen/Screen.js +30 -0
  56. package/src/plugins/screen/Screen.yml +16 -0
  57. package/src/vue-plugin.js +12 -3
  58. package/src/css/transitions.scss +0 -12
  59. package/src/store/history.js +0 -43
  60. package/src/store/index.js +0 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @bildvitta/quasar-ui-asteroid v3.0.0-alpha.2
2
+ * @bildvitta/quasar-ui-asteroid v3.0.0-beta.2
3
3
  * (c) 2022 Bild & Vitta <systemteam@bild.com.br>
4
4
  * Released under the MIT License.
5
5
  */
@@ -12,10 +12,9 @@ var vue = require('vue');
12
12
  var dateFns = require('date-fns');
13
13
  var locale = require('date-fns/locale');
14
14
  var quasar = require('quasar');
15
+ var lodashEs = require('lodash-es');
15
16
  var AutoNumeric = require('autonumeric');
16
17
  var Pica = require('pica');
17
- var api = require('axios');
18
- var lodashEs = require('lodash-es');
19
18
  var SignaturePad = require('signature_pad');
20
19
  var vueRouter = require('vue-router');
21
20
  var Fuse = require('fuse.js');
@@ -26,7 +25,6 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
26
25
 
27
26
  var AutoNumeric__default = /*#__PURE__*/_interopDefaultLegacy(AutoNumeric);
28
27
  var Pica__default = /*#__PURE__*/_interopDefaultLegacy(Pica);
29
- var api__default = /*#__PURE__*/_interopDefaultLegacy(api);
30
28
  var SignaturePad__default = /*#__PURE__*/_interopDefaultLegacy(SignaturePad);
31
29
  var Fuse__default = /*#__PURE__*/_interopDefaultLegacy(Fuse);
32
30
  var Sortable__default = /*#__PURE__*/_interopDefaultLegacy(Sortable);
@@ -355,6 +353,8 @@ var viewMixin = {
355
353
 
356
354
  mx_updateModels (models) {
357
355
  for (const key in models) {
356
+ if (!models[key]) continue
357
+
358
358
  this.$emit(`update:${key}`, models[key]);
359
359
  }
360
360
  }
@@ -415,8 +415,6 @@ var script$K = {
415
415
 
416
416
  mixins: [screenMixin],
417
417
 
418
- inheritAttrs: false,
419
-
420
418
  props: {
421
419
  hideLabelOnSmallScreen: {
422
420
  type: Boolean
@@ -426,7 +424,11 @@ var script$K = {
426
424
  computed: {
427
425
  attributes () {
428
426
  const { label, ...attributes } = this.$attrs;
429
- return attributes
427
+
428
+ return {
429
+ ...(this.showLabel && { label }),
430
+ ...attributes
431
+ }
430
432
  },
431
433
 
432
434
  hasLabel () {
@@ -454,9 +456,7 @@ function render$K(_ctx, _cache, $props, $setup, $data, $options) {
454
456
  }, $options.attributes), vue.createSlots({
455
457
  default: vue.withCtx(() => [
456
458
  ($options.showLabel)
457
- ? vue.renderSlot(_ctx.$slots, "default", { key: 0 }, () => [
458
- vue.createTextVNode(vue.toDisplayString(_ctx.$attrs.label), 1 /* TEXT */)
459
- ])
459
+ ? vue.renderSlot(_ctx.$slots, "default", { key: 0 })
460
460
  : vue.createCommentVNode("v-if", true)
461
461
  ]),
462
462
  _: 2 /* DYNAMIC */
@@ -554,10 +554,10 @@ function render$J(_ctx, _cache, $props, $setup, $data, $options) {
554
554
  "hide-label-on-small-screen": "",
555
555
  icon: $props.icon,
556
556
  label: $props.label,
557
- outline: ""
557
+ outline: "",
558
+ padding: "md"
558
559
  }, {
559
560
  default: vue.withCtx(() => [
560
- vue.createElementVNode("span", null, vue.toDisplayString($props.label), 1 /* TEXT */),
561
561
  vue.createVNode(_component_q_menu, { class: "qas-actions-menu__menu" }, {
562
562
  default: vue.withCtx(() => [
563
563
  vue.createVNode(_component_q_list, {
@@ -580,8 +580,8 @@ function render$J(_ctx, _cache, $props, $setup, $data, $options) {
580
580
  vue.createElementVNode("div", _hoisted_1$r, [
581
581
  vue.createVNode(_component_q_icon, {
582
582
  name: item.icon,
583
- size: item.iconSize
584
- }, null, 8 /* PROPS */, ["name", "size"]),
583
+ size: "sm"
584
+ }, null, 8 /* PROPS */, ["name"]),
585
585
  vue.createElementVNode("div", null, vue.toDisplayString(item.label), 1 /* TEXT */)
586
586
  ])
587
587
  ]),
@@ -603,7 +603,10 @@ function render$J(_ctx, _cache, $props, $setup, $data, $options) {
603
603
  vue.createVNode(_component_q_item_section, null, {
604
604
  default: vue.withCtx(() => [
605
605
  vue.createElementVNode("div", _hoisted_2$k, [
606
- vue.createVNode(_component_q_icon, { name: $props.deleteIcon }, null, 8 /* PROPS */, ["name"]),
606
+ vue.createVNode(_component_q_icon, {
607
+ name: $props.deleteIcon,
608
+ size: "sm"
609
+ }, null, 8 /* PROPS */, ["name"]),
607
610
  vue.createElementVNode("div", null, vue.toDisplayString($props.deleteLabel), 1 /* TEXT */)
608
611
  ])
609
612
  ]),
@@ -764,11 +767,10 @@ function constructObject (name, object) {
764
767
  }
765
768
 
766
769
  /**
767
- * Function to filter specific field inside a fields
768
- * Função para filtrar propriedades espessificas dentro de um objeto
770
+ * Função para filtrar propriedades especificas dentro de um objeto
769
771
  *
770
772
  * @param {object} fields objeto com propriedades
771
- * @param {array} models array de string com nomes das proproiedades que serão filtradas
773
+ * @param {array} models array de string com nomes das propriedades que serão filtradas
772
774
  * @returns {object} objeto com propriedades filtradas
773
775
  *
774
776
  * @example
@@ -1348,7 +1350,7 @@ const _hoisted_10$1 = { class: "q-pa-lg text-center" };
1348
1350
  const _hoisted_11$1 = { class: "ellipsis q-mt-lg qs-lh-sm text-bold text-subtitle1" };
1349
1351
  const _hoisted_12$1 = { class: "ellipsis q-mt-xs text-caption" };
1350
1352
  const _hoisted_13$1 = { class: "q-mt-sm" };
1351
- const _hoisted_14 = { class: "q-mt-sm" };
1353
+ const _hoisted_14$1 = { class: "q-mt-sm" };
1352
1354
 
1353
1355
  function render$F(_ctx, _cache, $props, $setup, $data, $options) {
1354
1356
  const _component_q_ajax_bar = vue.resolveComponent("q-ajax-bar");
@@ -1494,7 +1496,7 @@ function render$F(_ctx, _cache, $props, $setup, $data, $options) {
1494
1496
  to: $props.user.to
1495
1497
  }, null, 8 /* PROPS */, ["to"])
1496
1498
  ]),
1497
- vue.createElementVNode("div", _hoisted_14, [
1499
+ vue.createElementVNode("div", _hoisted_14$1, [
1498
1500
  vue.withDirectives(vue.createVNode(_component_qas_btn, {
1499
1501
  class: "q-px-lg q-py-xs",
1500
1502
  dense: "",
@@ -2637,12 +2639,12 @@ var script$x = {
2637
2639
  this.useForm && this.$emit('validate', await this.$refs.form.validate());
2638
2640
  },
2639
2641
 
2640
- // metodo para funcionar como plugin
2642
+ // método para funcionar como plugin
2641
2643
  show () {
2642
2644
  this.$refs.dialog.show();
2643
2645
  },
2644
2646
 
2645
- // metodo para funcionar como plugin
2647
+ // método para funcionar como plugin
2646
2648
  hide () {
2647
2649
  this.$refs.dialog.hide();
2648
2650
  },
@@ -2782,6 +2784,79 @@ var NotifySuccess = (message, caption) => {
2782
2784
  quasar.Notify?.create({ caption, message, type: 'success' });
2783
2785
  };
2784
2786
 
2787
+ var Screen = () => {
2788
+ const screensModel = {
2789
+ isSmall: () => quasar.Screen.xs,
2790
+ isMedium: () => quasar.Screen.sm,
2791
+ isLarge: () => quasar.Screen.gt.sm,
2792
+ untilMedium: () => quasar.Screen.lt.sm,
2793
+ untilLarge: () => quasar.Screen.lt.md,
2794
+
2795
+ // Plataforma
2796
+ isMobile: () => quasar.Platform.is.mobile || false
2797
+ };
2798
+
2799
+ const screens = {};
2800
+
2801
+ for (const key in screensModel) {
2802
+ // infelizmente esta é a única forma que conseguimos para que nossa função se tornasse reativa na view
2803
+ // é como o próprio quasar implementa
2804
+ Object.defineProperty(screens, key, {
2805
+ get () {
2806
+ return screensModel[key]()
2807
+ },
2808
+
2809
+ enumerable: true
2810
+ });
2811
+ }
2812
+
2813
+ return screens
2814
+ };
2815
+
2816
+ const history$2 = vue.reactive({ list: [] });
2817
+
2818
+ function useHistory () {
2819
+ const hasPreviousRoute = vue.computed(() => history$2.list.length > 1);
2820
+
2821
+ function getPreviousRoute (currentRoute) {
2822
+ const index = lodashEs.findLastIndex(history$2.list, item => item.name === currentRoute.name);
2823
+
2824
+ if (~index) {
2825
+ history$2.list.splice(index, 1);
2826
+ }
2827
+
2828
+ return history$2.list[history$2.list.length - 1]
2829
+ }
2830
+
2831
+ function addRoute (route) {
2832
+ const routeExistsInList = history$2.list?.[history$2.list?.length - 1]?.name === route.name;
2833
+
2834
+ if (routeExistsInList) return
2835
+
2836
+ history$2.list.push(route);
2837
+ }
2838
+
2839
+ function destroyRoutes (routes) {
2840
+ if (!history$2.list.length) return null
2841
+
2842
+ routes.forEach(route => {
2843
+ const index = history$2.list.findIndex(item => item.name === route.name);
2844
+
2845
+ if (~index) {
2846
+ history$2.list.splice(index, 1);
2847
+ }
2848
+ });
2849
+ }
2850
+
2851
+ return {
2852
+ history: history$2,
2853
+ hasPreviousRoute,
2854
+ getPreviousRoute,
2855
+ addRoute,
2856
+ destroyRoutes
2857
+ }
2858
+ }
2859
+
2785
2860
  var script$w = {
2786
2861
  name: 'QasDelete',
2787
2862
 
@@ -2818,6 +2893,11 @@ var script$w = {
2818
2893
 
2819
2894
  deleting: {
2820
2895
  type: Boolean
2896
+ },
2897
+
2898
+ useAutoDeleteRoute: {
2899
+ default: true,
2900
+ type: Boolean
2821
2901
  }
2822
2902
  },
2823
2903
 
@@ -2865,9 +2945,21 @@ var script$w = {
2865
2945
  this.$emit('update:deleting', true);
2866
2946
 
2867
2947
  try {
2948
+ const { destroyRoutes, history } = useHistory();
2949
+
2868
2950
  await this.$store.dispatch(`${this.entity}/destroy`, { id: this.id, url: this.url });
2951
+
2869
2952
  NotifySuccess('Item deletado com sucesso!');
2953
+
2954
+ if (this.useAutoDeleteRoute) {
2955
+ // remove todas rotas que possuem o id do item excluído.
2956
+ const routesToBeDeleted = this.getRoutesToBeDeletedById(history.list);
2957
+ destroyRoutes(routesToBeDeleted);
2958
+ }
2959
+
2960
+ // cria um evento para notificar que o item foi excluído no "window".
2870
2961
  this.createDeleteSuccessEvent();
2962
+
2871
2963
  this.$emit('success');
2872
2964
  } catch (error) {
2873
2965
  NotifyError('Ops! Não foi possível deletar o item.');
@@ -2878,6 +2970,10 @@ var script$w = {
2878
2970
  }
2879
2971
  },
2880
2972
 
2973
+ getRoutesToBeDeletedById (routes = []) {
2974
+ return routes.filter(({ params }) => params.id === this.id)
2975
+ },
2976
+
2881
2977
  createDeleteSuccessEvent () {
2882
2978
  const event = new CustomEvent('delete-success', {
2883
2979
  bubbles: false,
@@ -3036,7 +3132,7 @@ var script$u = {
3036
3132
  props: {
3037
3133
  modelValue: {
3038
3134
  default: '',
3039
- type: String
3135
+ type: [String, Number]
3040
3136
  },
3041
3137
 
3042
3138
  unmaskedValue: {
@@ -3047,11 +3143,31 @@ var script$u = {
3047
3143
  outlined: {
3048
3144
  default: true,
3049
3145
  type: Boolean
3146
+ },
3147
+
3148
+ removeErrorOnType: {
3149
+ type: Boolean
3150
+ },
3151
+
3152
+ error: {
3153
+ type: Boolean
3154
+ },
3155
+
3156
+ errorMessage: {
3157
+ type: String,
3158
+ default: ''
3050
3159
  }
3051
3160
  },
3052
3161
 
3053
3162
  emits: ['update:modelValue'],
3054
3163
 
3164
+ data () {
3165
+ return {
3166
+ errorData: false,
3167
+ messageErrorData: ''
3168
+ }
3169
+ },
3170
+
3055
3171
  computed: {
3056
3172
  hasError () {
3057
3173
  return this.inputReference.hasError
@@ -3084,6 +3200,11 @@ var script$u = {
3084
3200
  },
3085
3201
 
3086
3202
  set (value) {
3203
+ if (this.removeErrorOnType && this.error) {
3204
+ this.errorData = false;
3205
+ this.errorMessageData = '';
3206
+ }
3207
+
3087
3208
  return this.$emit('update:modelValue', value)
3088
3209
  }
3089
3210
  }
@@ -3096,6 +3217,22 @@ var script$u = {
3096
3217
  requestAnimationFrame(() => {
3097
3218
  input.selectionStart = input.value ? input.value.length : '';
3098
3219
  });
3220
+ },
3221
+
3222
+ error: {
3223
+ handler (value) {
3224
+ this.errorData = value;
3225
+ },
3226
+
3227
+ immediate: true
3228
+ },
3229
+
3230
+ errorMessage: {
3231
+ handler (value) {
3232
+ this.errorMessageData = value;
3233
+ },
3234
+
3235
+ immediate: true
3099
3236
  }
3100
3237
  },
3101
3238
 
@@ -3127,8 +3264,10 @@ function render$u(_ctx, _cache, $props, $setup, $data, $options) {
3127
3264
  ref: "input",
3128
3265
  modelValue: $options.model,
3129
3266
  "onUpdate:modelValue": _cache[0] || (_cache[0] = $event => (($options.model) = $event)),
3130
- "bottom-slots": ""
3267
+ "bottom-slots": "",
3268
+ error: $data.errorData
3131
3269
  }, _ctx.$attrs, {
3270
+ "error-message": _ctx.errorMessageData,
3132
3271
  mask: $options.mask,
3133
3272
  outlined: $props.outlined,
3134
3273
  "unmasked-value": $props.unmaskedValue
@@ -3141,7 +3280,7 @@ function render$u(_ctx, _cache, $props, $setup, $data, $options) {
3141
3280
  ])
3142
3281
  }
3143
3282
  })
3144
- ]), 1040 /* FULL_PROPS, DYNAMIC_SLOTS */, ["modelValue", "mask", "outlined", "unmasked-value"])
3283
+ ]), 1040 /* FULL_PROPS, DYNAMIC_SLOTS */, ["modelValue", "error", "error-message", "mask", "outlined", "unmasked-value"])
3145
3284
  ]))
3146
3285
  }
3147
3286
 
@@ -3400,9 +3539,8 @@ var script$r = {
3400
3539
  mixins: [passwordMixin],
3401
3540
 
3402
3541
  props: {
3403
- useStrengthChecker: {
3404
- type: Boolean,
3405
- default: true
3542
+ hideStrengthChecker: {
3543
+ type: Boolean
3406
3544
  },
3407
3545
 
3408
3546
  iconColor: {
@@ -3420,7 +3558,6 @@ var script$r = {
3420
3558
 
3421
3559
  data () {
3422
3560
  return {
3423
- key: 'error',
3424
3561
  toggleType: true
3425
3562
  }
3426
3563
  },
@@ -3450,15 +3587,6 @@ var script$r = {
3450
3587
  }
3451
3588
  },
3452
3589
 
3453
- watch: {
3454
- modelValue () {
3455
- if (this.$attrs.error) {
3456
- this.$attrs.error = false;
3457
- this.$attrs.errorMessage = '';
3458
- }
3459
- }
3460
- },
3461
-
3462
3590
  methods: {
3463
3591
  toggle () {
3464
3592
  this.toggleType = !this.toggleType;
@@ -3471,39 +3599,43 @@ function render$r(_ctx, _cache, $props, $setup, $data, $options) {
3471
3599
  const _component_qas_password_strength_checker = vue.resolveComponent("qas-password-strength-checker");
3472
3600
  const _component_qas_input = vue.resolveComponent("qas-input");
3473
3601
 
3474
- return (vue.openBlock(), vue.createBlock(_component_qas_input, {
3475
- modelValue: $options.model,
3476
- "onUpdate:modelValue": _cache[0] || (_cache[0] = $event => (($options.model) = $event)),
3477
- "bottom-slots": "",
3478
- type: $options.type
3479
- }, vue.createSlots({
3480
- append: vue.withCtx(() => [
3481
- vue.createVNode(_component_q_icon, {
3482
- class: "cursor-pointer",
3483
- color: $props.iconColor,
3484
- name: $options.icon,
3485
- onClick: $options.toggle
3486
- }, null, 8 /* PROPS */, ["color", "name", "onClick"])
3487
- ]),
3488
- _: 2 /* DYNAMIC */
3489
- }, [
3490
- vue.renderList(_ctx.$slots, (_, name) => {
3491
- return {
3492
- name: name,
3493
- fn: vue.withCtx((context) => [
3494
- vue.renderSlot(_ctx.$slots, name, vue.normalizeProps(vue.guardReactiveProps(context || {})))
3495
- ])
3496
- }
3497
- }),
3498
- ($props.useStrengthChecker)
3499
- ? {
3500
- name: "hint",
3501
- fn: vue.withCtx(() => [
3502
- vue.createVNode(_component_qas_password_strength_checker, vue.mergeProps($options.strengthCheckerProps, { password: $options.model }), null, 16 /* FULL_PROPS */, ["password"])
3602
+ return (vue.openBlock(), vue.createElementBlock("div", null, [
3603
+ vue.createVNode(_component_qas_input, vue.mergeProps({
3604
+ modelValue: $options.model,
3605
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = $event => (($options.model) = $event)),
3606
+ "bottom-slots": ""
3607
+ }, _ctx.$attrs, {
3608
+ "remove-error-on-type": "",
3609
+ type: $options.type
3610
+ }), vue.createSlots({
3611
+ append: vue.withCtx(() => [
3612
+ vue.createVNode(_component_q_icon, {
3613
+ class: "cursor-pointer",
3614
+ color: $props.iconColor,
3615
+ name: $options.icon,
3616
+ onClick: $options.toggle
3617
+ }, null, 8 /* PROPS */, ["color", "name", "onClick"])
3618
+ ]),
3619
+ _: 2 /* DYNAMIC */
3620
+ }, [
3621
+ vue.renderList(_ctx.$slots, (_, name) => {
3622
+ return {
3623
+ name: name,
3624
+ fn: vue.withCtx((context) => [
3625
+ vue.renderSlot(_ctx.$slots, name, vue.normalizeProps(vue.guardReactiveProps(context || {})))
3503
3626
  ])
3504
3627
  }
3505
- : undefined
3506
- ]), 1032 /* PROPS, DYNAMIC_SLOTS */, ["modelValue", "type"]))
3628
+ }),
3629
+ (!$props.hideStrengthChecker)
3630
+ ? {
3631
+ name: "hint",
3632
+ fn: vue.withCtx(() => [
3633
+ vue.createVNode(_component_qas_password_strength_checker, vue.mergeProps($options.strengthCheckerProps, { password: $options.model }), null, 16 /* FULL_PROPS */, ["password"])
3634
+ ])
3635
+ }
3636
+ : undefined
3637
+ ]), 1040 /* FULL_PROPS, DYNAMIC_SLOTS */, ["modelValue", "type"])
3638
+ ]))
3507
3639
  }
3508
3640
 
3509
3641
  script$r.render = render$r;
@@ -3702,7 +3834,7 @@ var script$q = {
3702
3834
  this.isFetching = true;
3703
3835
 
3704
3836
  try {
3705
- const { data } = await api__default["default"].post('/upload-credentials/', {
3837
+ const { data } = await this.$axios.post('/upload-credentials/', {
3706
3838
  entity: this.entity,
3707
3839
  filename
3708
3840
  });
@@ -4179,7 +4311,14 @@ var script$o = {
4179
4311
  QasSignaturePad: script$p
4180
4312
  },
4181
4313
 
4314
+ mixins: [screenMixin],
4315
+
4182
4316
  props: {
4317
+ dialogProps: {
4318
+ type: Object,
4319
+ default: () => ({})
4320
+ },
4321
+
4183
4322
  uploadLabel: {
4184
4323
  default: '',
4185
4324
  type: String
@@ -4228,6 +4367,32 @@ var script$o = {
4228
4367
 
4229
4368
  headerClass () {
4230
4369
  return `q-pa-${this.readonly ? 'md' : 'sm'}`
4370
+ },
4371
+
4372
+ defaultDialogProps () {
4373
+ return {
4374
+ maxWidth: '620px',
4375
+ ...this.dialogProps
4376
+ }
4377
+ },
4378
+
4379
+ signaturePadWidth () {
4380
+ const sizes = {
4381
+ [this.mx_isSmall]: { width: '100%' },
4382
+ [this.mx_isMedium]: { width: '570px' },
4383
+ [this.mx_isLarge]: { width: '350px' }
4384
+ };
4385
+ return sizes.true
4386
+ },
4387
+
4388
+ signaturePadHeight () {
4389
+ const sizes = {
4390
+ [this.mx_isSmall]: '250',
4391
+ [this.mx_isMedium]: '400',
4392
+ [this.mx_isLarge]: '250'
4393
+ };
4394
+
4395
+ return sizes.true
4231
4396
  }
4232
4397
  },
4233
4398
 
@@ -4327,20 +4492,24 @@ function render$o(_ctx, _cache, $props, $setup, $data, $options) {
4327
4492
  ]),
4328
4493
  _: 1 /* STABLE */
4329
4494
  }, 16 /* FULL_PROPS */, ["modelValue", "label", "readonly"]),
4330
- vue.createVNode(_component_qas_dialog, {
4495
+ vue.createVNode(_component_qas_dialog, vue.mergeProps({
4331
4496
  modelValue: $data.isOpenedDialog,
4332
4497
  "onUpdate:modelValue": _cache[3] || (_cache[3] = $event => (($data.isOpenedDialog) = $event))
4333
- }, {
4498
+ }, $options.defaultDialogProps), {
4334
4499
  header: vue.withCtx(() => [
4335
4500
  _hoisted_3$8
4336
4501
  ]),
4337
4502
  description: vue.withCtx(() => [
4338
- vue.createVNode(_component_qas_signature_pad, {
4339
- ref: "signaturePadModal",
4340
- empty: $data.isEmpty,
4341
- "onUpdate:empty": _cache[2] || (_cache[2] = $event => (($data.isEmpty) = $event)),
4342
- height: "250"
4343
- }, null, 8 /* PROPS */, ["empty"])
4503
+ vue.createElementVNode("div", {
4504
+ style: vue.normalizeStyle($options.signaturePadWidth)
4505
+ }, [
4506
+ vue.createVNode(_component_qas_signature_pad, {
4507
+ ref: "signaturePadModal",
4508
+ empty: $data.isEmpty,
4509
+ "onUpdate:empty": _cache[2] || (_cache[2] = $event => (($data.isEmpty) = $event)),
4510
+ height: $options.signaturePadHeight
4511
+ }, null, 8 /* PROPS */, ["empty", "height"])
4512
+ ], 4 /* STYLE */)
4344
4513
  ]),
4345
4514
  actions: vue.withCtx(() => [
4346
4515
  vue.createVNode(_component_q_btn, {
@@ -4361,7 +4530,7 @@ function render$o(_ctx, _cache, $props, $setup, $data, $options) {
4361
4530
  }, null, 8 /* PROPS */, ["onClick"])
4362
4531
  ]),
4363
4532
  _: 1 /* STABLE */
4364
- }, 8 /* PROPS */, ["modelValue"])
4533
+ }, 16 /* FULL_PROPS */, ["modelValue"])
4365
4534
  ]))
4366
4535
  }
4367
4536
 
@@ -4425,7 +4594,6 @@ var script$n = {
4425
4594
  prefix,
4426
4595
  type,
4427
4596
  mask,
4428
- pattern,
4429
4597
  maxFiles,
4430
4598
  searchable,
4431
4599
  gmt
@@ -4476,7 +4644,7 @@ var script$n = {
4476
4644
  number: { is: 'qas-input', type: 'number', ...input },
4477
4645
  hidden: { is: 'input', name, type },
4478
4646
  email: { is: 'qas-input', type, ...input },
4479
- password: { is: 'qas-password-input', type, pattern, hideStrengthChecker: !pattern, ...input },
4647
+ password: { is: 'qas-password-input', ...input },
4480
4648
 
4481
4649
  decimal: { ...numericInput, mode: 'decimal' },
4482
4650
  money: { ...numericInput, mode: 'money' },
@@ -4621,6 +4789,10 @@ var script$m = {
4621
4789
  url: {
4622
4790
  default: '',
4623
4791
  type: String
4792
+ },
4793
+
4794
+ forceRefetch: {
4795
+ type: Boolean
4624
4796
  }
4625
4797
  },
4626
4798
 
@@ -4750,7 +4922,7 @@ var script$m = {
4750
4922
  },
4751
4923
 
4752
4924
  async fetchFilters () {
4753
- if (this.hasFields || !this.useFilterButton) {
4925
+ if (!this.forceRefetch && (this.hasFields || !this.useFilterButton)) {
4754
4926
  return null
4755
4927
  }
4756
4928
 
@@ -4916,7 +5088,7 @@ function render$m(_ctx, _cache, $props, $setup, $data, $options) {
4916
5088
  label: $options.filterButtonLabel
4917
5089
  }, {
4918
5090
  default: vue.withCtx(() => [
4919
- vue.createVNode(_component_q_menu, { onBeforeShow: $options.fetchFilters }, {
5091
+ vue.createVNode(_component_q_menu, null, {
4920
5092
  default: vue.withCtx(() => [
4921
5093
  ($data.isFetching)
4922
5094
  ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$6, [
@@ -4970,7 +5142,7 @@ function render$m(_ctx, _cache, $props, $setup, $data, $options) {
4970
5142
  }))
4971
5143
  ]),
4972
5144
  _: 1 /* STABLE */
4973
- }, 8 /* PROPS */, ["onBeforeShow"])
5145
+ })
4974
5146
  ]),
4975
5147
  _: 1 /* STABLE */
4976
5148
  }, 8 /* PROPS */, ["color", "label"]))
@@ -5118,28 +5290,6 @@ function render$l(_ctx, _cache, $props, $setup, $data, $options) {
5118
5290
  script$l.render = render$l;
5119
5291
  script$l.__file = "src/components/form-generator/QasFormGenerator.vue";
5120
5292
 
5121
- const history$1 = vue.reactive({ hasPreviousRoute: false, list: [] });
5122
-
5123
- function getPreviousRoute (currentRoute) {
5124
- const index = lodashEs.findLastIndex(history$1.list, item => item.name === currentRoute.name);
5125
-
5126
- if (~index) {
5127
- history$1.list.splice(index, 1);
5128
- }
5129
-
5130
- history$1.hasPreviousRoute = history$1.list.length > 1;
5131
- return history$1.list[history$1.list.length - 1]
5132
- }
5133
-
5134
- function addRoute (route) {
5135
- const routeExistsInList = history$1.list?.[history$1.list?.length - 1]?.name === route.name;
5136
-
5137
- if (routeExistsInList) return
5138
-
5139
- history$1.list.push(route);
5140
- history$1.hasPreviousRoute = history$1.list.length > 1;
5141
- }
5142
-
5143
5293
  var script$k = {
5144
5294
  name: 'QasFormView',
5145
5295
 
@@ -5158,7 +5308,7 @@ var script$k = {
5158
5308
 
5159
5309
  cancelRoute: {
5160
5310
  default: '',
5161
- type: [Boolean, Object, String]
5311
+ type: [Boolean, Object, String, Function]
5162
5312
  },
5163
5313
 
5164
5314
  customId: {
@@ -5277,10 +5427,6 @@ var script$k = {
5277
5427
  return this.disable || this.isSubmitting
5278
5428
  },
5279
5429
 
5280
- history () {
5281
- return history$1.list
5282
- },
5283
-
5284
5430
  fieldsNameWithDefaultValue () {
5285
5431
  return Object.keys(this.fields).filter(field => 'default' in this.fields[field])
5286
5432
  }
@@ -5349,7 +5495,7 @@ var script$k = {
5349
5495
  this.mx_updateModels({
5350
5496
  errors: errors,
5351
5497
  fields: this.mx_fields,
5352
- metadata: metadata
5498
+ metadata
5353
5499
  });
5354
5500
 
5355
5501
  if (result) {
@@ -5378,9 +5524,11 @@ var script$k = {
5378
5524
  },
5379
5525
 
5380
5526
  handleCancelRoute () {
5381
- const acceptTypes = ['string', 'object'];
5527
+ if (typeof this.cancelRoute === 'function') {
5528
+ return this.cancelRoute()
5529
+ }
5382
5530
 
5383
- if (this.cancelRoute && acceptTypes.includes(typeof this.cancelRoute)) {
5531
+ if (this.cancelRoute && ['string', 'object'].includes(typeof this.cancelRoute)) {
5384
5532
  return this.$router.push(this.cancelRoute)
5385
5533
  }
5386
5534
 
@@ -5393,6 +5541,8 @@ var script$k = {
5393
5541
  handleDialog (next) {
5394
5542
  this.openDialog();
5395
5543
 
5544
+ const { addRoute } = useHistory();
5545
+
5396
5546
  this.defaultDialogProps.ok.onClick = () => addRoute(this.$route);
5397
5547
  this.defaultDialogProps.cancel.onClick = next;
5398
5548
  },
@@ -5475,7 +5625,9 @@ function render$k(_ctx, _cache, $props, $setup, $data, $options) {
5475
5625
  const _component_q_inner_loading = vue.resolveComponent("q-inner-loading");
5476
5626
  const _directive_close_popup = vue.resolveDirective("close-popup");
5477
5627
 
5478
- return (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.mx_componentTag), null, {
5628
+ return (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.mx_componentTag), {
5629
+ class: vue.normalizeClass(_ctx.mx_componentClass)
5630
+ }, {
5479
5631
  default: vue.withCtx(() => [
5480
5632
  (_ctx.mx_hasHeaderSlot)
5481
5633
  ? (vue.openBlock(), vue.createElementBlock("header", _hoisted_1$d, [
@@ -5547,7 +5699,7 @@ function render$k(_ctx, _cache, $props, $setup, $data, $options) {
5547
5699
  }, 8 /* PROPS */, ["showing"])
5548
5700
  ]),
5549
5701
  _: 3 /* FORWARDED */
5550
- }))
5702
+ }, 8 /* PROPS */, ["class"]))
5551
5703
  }
5552
5704
 
5553
5705
  script$k.render = render$k;
@@ -6537,7 +6689,10 @@ var script$c = {
6537
6689
  QasBtn: script$K,
6538
6690
  QasFormGenerator: script$l,
6539
6691
  QasInput: script$u,
6540
- QasLabel: script$h
6692
+ QasLabel: script$h,
6693
+
6694
+ // vue
6695
+ TransitionGroup: vue.TransitionGroup
6541
6696
  },
6542
6697
 
6543
6698
  props: {
@@ -6701,6 +6856,16 @@ var script$c = {
6701
6856
 
6702
6857
  componentTag () {
6703
6858
  return this.useAnimation ? 'transition-group' : 'div'
6859
+ },
6860
+
6861
+ componentProps () {
6862
+ if (!this.useAnimation) return {}
6863
+
6864
+ return {
6865
+ tag: 'div',
6866
+ enterActiveClass: 'animated slideInDown',
6867
+ leaveActiveClass: 'animated slideOutUp'
6868
+ }
6704
6869
  }
6705
6870
  },
6706
6871
 
@@ -6785,23 +6950,24 @@ var script$c = {
6785
6950
 
6786
6951
  const _hoisted_1$8 = ["id"];
6787
6952
  const _hoisted_2$5 = { class: "text-left" };
6788
- const _hoisted_3$3 = ["id"];
6789
- const _hoisted_4$3 = { class: "flex items-center justify-between q-py-xs" };
6790
- const _hoisted_5$2 = {
6953
+ const _hoisted_3$3 = { ref: "inputContent" };
6954
+ const _hoisted_4$3 = ["id"];
6955
+ const _hoisted_5$2 = { class: "flex items-center justify-between q-py-xs" };
6956
+ const _hoisted_6 = {
6791
6957
  key: 1,
6792
6958
  class: "q-gutter-x-sm"
6793
6959
  };
6794
- const _hoisted_6 = {
6960
+ const _hoisted_7 = {
6795
6961
  key: 0,
6796
6962
  class: "flex items-center qas-nested-fields__actions"
6797
6963
  };
6798
- const _hoisted_7 = { class: "col-auto" };
6799
6964
  const _hoisted_8 = { class: "col-auto" };
6800
- const _hoisted_9 = { class: "col-12" };
6801
- const _hoisted_10 = { class: "q-mt-md" };
6802
- const _hoisted_11 = { class: "col" };
6803
- const _hoisted_12 = { class: "col-auto" };
6804
- const _hoisted_13 = {
6965
+ const _hoisted_9 = { class: "col-auto" };
6966
+ const _hoisted_10 = { class: "col-12" };
6967
+ const _hoisted_11 = { class: "q-mt-md" };
6968
+ const _hoisted_12 = { class: "col" };
6969
+ const _hoisted_13 = { class: "col-auto" };
6970
+ const _hoisted_14 = {
6805
6971
  key: 1,
6806
6972
  class: "q-mt-lg"
6807
6973
  };
@@ -6824,134 +6990,122 @@ function render$c(_ctx, _cache, $props, $setup, $data, $options) {
6824
6990
  }, null, 8 /* PROPS */, ["label"]))
6825
6991
  : vue.createCommentVNode("v-if", true)
6826
6992
  ]),
6827
- vue.createElementVNode("div", null, [
6828
- (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent($options.componentTag), {
6829
- ref: "inputContent",
6830
- name: "fade",
6831
- tag: "div"
6832
- }, {
6993
+ vue.createElementVNode("div", _hoisted_3$3, [
6994
+ (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent($options.componentTag), vue.normalizeProps(vue.guardReactiveProps($options.componentProps)), {
6833
6995
  default: vue.withCtx(() => [
6834
6996
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList($data.nested, (row, index) => {
6835
6997
  return (vue.openBlock(), vue.createElementBlock("div", {
6836
6998
  id: `row-${index}`,
6837
- key: index,
6999
+ key: `row-${index}`,
6838
7000
  class: "full-width"
6839
7001
  }, [
6840
- (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent($options.componentTag), {
6841
- name: "fade",
6842
- tag: "div"
6843
- }, {
6844
- default: vue.withCtx(() => [
6845
- (!row[$props.destroyKey])
6846
- ? (vue.openBlock(), vue.createElementBlock("div", {
6847
- key: index,
6848
- class: "col-12 q-mt-md"
7002
+ (!row[$props.destroyKey])
7003
+ ? (vue.openBlock(), vue.createElementBlock("div", {
7004
+ key: index,
7005
+ class: "col-12 q-mt-md"
7006
+ }, [
7007
+ vue.createElementVNode("div", null, [
7008
+ vue.createElementVNode("div", _hoisted_5$2, [
7009
+ (!$props.useSingleLabel)
7010
+ ? (vue.openBlock(), vue.createBlock(_component_qas_label, {
7011
+ key: 0,
7012
+ label: $options.setRowLabel(index)
7013
+ }, null, 8 /* PROPS */, ["label"]))
7014
+ : vue.createCommentVNode("v-if", true),
7015
+ (!$props.useInlineActions)
7016
+ ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6, [
7017
+ ($props.useDuplicate)
7018
+ ? (vue.openBlock(), vue.createBlock(_component_qas_btn, vue.mergeProps({ key: 0 }, $props.btnDuplicateProps, {
7019
+ onClick: $event => ($options.add(row))
7020
+ }), null, 16 /* FULL_PROPS */, ["onClick"]))
7021
+ : vue.createCommentVNode("v-if", true),
7022
+ ($options.showDestroyBtn)
7023
+ ? (vue.openBlock(), vue.createBlock(_component_qas_btn, vue.mergeProps({ key: 1 }, $props.btnDestroyProps, {
7024
+ onClick: $event => ($options.destroy(index, row))
7025
+ }), null, 16 /* FULL_PROPS */, ["onClick"]))
7026
+ : vue.createCommentVNode("v-if", true)
7027
+ ]))
7028
+ : vue.createCommentVNode("v-if", true)
7029
+ ]),
7030
+ vue.createElementVNode("div", {
7031
+ ref_for: true,
7032
+ ref: "formGenerator",
7033
+ class: "col-12 justify-between q-col-gutter-x-md row"
6849
7034
  }, [
6850
- vue.createElementVNode("div", null, [
6851
- vue.createElementVNode("div", _hoisted_4$3, [
6852
- (!$props.useSingleLabel)
6853
- ? (vue.openBlock(), vue.createBlock(_component_qas_label, {
6854
- key: 0,
6855
- label: $options.setRowLabel(index)
6856
- }, null, 8 /* PROPS */, ["label"]))
6857
- : vue.createCommentVNode("v-if", true),
6858
- (!$props.useInlineActions)
6859
- ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5$2, [
6860
- ($props.useDuplicate)
6861
- ? (vue.openBlock(), vue.createBlock(_component_qas_btn, vue.mergeProps({ key: 0 }, $props.btnDuplicateProps, {
6862
- onClick: $event => ($options.add(row))
6863
- }), null, 16 /* FULL_PROPS */, ["onClick"]))
6864
- : vue.createCommentVNode("v-if", true),
6865
- ($options.showDestroyBtn)
6866
- ? (vue.openBlock(), vue.createBlock(_component_qas_btn, vue.mergeProps({ key: 1 }, $props.btnDestroyProps, {
6867
- onClick: $event => ($options.destroy(index, row))
6868
- }), null, 16 /* FULL_PROPS */, ["onClick"]))
6869
- : vue.createCommentVNode("v-if", true)
6870
- ]))
6871
- : vue.createCommentVNode("v-if", true)
6872
- ]),
6873
- vue.createElementVNode("div", {
6874
- ref_for: true,
6875
- ref: "formGenerator",
6876
- class: "col-12 justify-between q-col-gutter-x-md row"
6877
- }, [
6878
- vue.renderSlot(_ctx.$slots, "fields", {
6879
- errors: $options.transformedErrors,
6880
- fields: $options.children,
6881
- index: index,
6882
- updateValue: $options.updateValuesFromInput
6883
- }, () => [
6884
- vue.createVNode(_component_qas_form_generator, {
6885
- modelValue: $data.nested[index],
6886
- "onUpdate:modelValue": [$event => (($data.nested[index]) = $event), $event => ($options.updateValuesFromInput($event, index))],
6887
- class: vue.normalizeClass($options.formClasses),
6888
- columns: $props.formColumns,
6889
- errors: $options.transformedErrors[index],
6890
- fields: $options.children,
6891
- "fields-props": $props.fieldsProps
6892
- }, vue.createSlots({ _: 2 /* DYNAMIC */ }, [
6893
- vue.renderList(_ctx.$slots, (slot, key) => {
6894
- return {
6895
- name: key,
6896
- fn: vue.withCtx((scope) => [
6897
- vue.renderSlot(_ctx.$slots, key, vue.mergeProps(scope, {
6898
- errors: $options.transformedErrors,
6899
- index: index
6900
- }))
6901
- ])
6902
- }
6903
- })
6904
- ]), 1032 /* PROPS, DYNAMIC_SLOTS */, ["modelValue", "onUpdate:modelValue", "class", "columns", "errors", "fields", "fields-props"])
6905
- ]),
6906
- ($props.useInlineActions)
6907
- ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6, [
6908
- vue.createElementVNode("div", _hoisted_7, [
6909
- ($props.useDuplicate)
6910
- ? (vue.openBlock(), vue.createBlock(_component_qas_btn, {
6911
- key: 0,
6912
- color: "primary",
6913
- flat: "",
6914
- icon: "o_content_copy",
6915
- round: "",
6916
- onClick: $event => ($options.add(row))
6917
- }, null, 8 /* PROPS */, ["onClick"]))
6918
- : vue.createCommentVNode("v-if", true)
6919
- ]),
6920
- vue.createElementVNode("div", _hoisted_8, [
6921
- ($options.showDestroyBtn)
6922
- ? (vue.openBlock(), vue.createBlock(_component_qas_btn, {
6923
- key: 0,
6924
- color: "negative",
6925
- flat: "",
6926
- icon: "o_cancel",
6927
- round: "",
6928
- onClick: $event => ($options.destroy(index, row))
6929
- }, null, 8 /* PROPS */, ["onClick"]))
6930
- : vue.createCommentVNode("v-if", true)
6931
- ])
6932
- ]))
6933
- : vue.createCommentVNode("v-if", true)
6934
- ], 512 /* NEED_PATCH */),
6935
- vue.createElementVNode("div", _hoisted_9, [
6936
- vue.renderSlot(_ctx.$slots, "custom-fields", {
6937
- fields: $options.children,
6938
- index: index,
6939
- model: $data.nested[index],
6940
- updateValue: $options.updateValuesFromInput
7035
+ vue.renderSlot(_ctx.$slots, "fields", {
7036
+ errors: $options.transformedErrors,
7037
+ fields: $options.children,
7038
+ index: index,
7039
+ updateValue: $options.updateValuesFromInput
7040
+ }, () => [
7041
+ vue.createVNode(_component_qas_form_generator, {
7042
+ modelValue: $data.nested[index],
7043
+ "onUpdate:modelValue": [$event => (($data.nested[index]) = $event), $event => ($options.updateValuesFromInput($event, index))],
7044
+ class: vue.normalizeClass($options.formClasses),
7045
+ columns: $props.formColumns,
7046
+ errors: $options.transformedErrors[index],
7047
+ fields: $options.children,
7048
+ "fields-props": $props.fieldsProps
7049
+ }, vue.createSlots({ _: 2 /* DYNAMIC */ }, [
7050
+ vue.renderList(_ctx.$slots, (slot, key) => {
7051
+ return {
7052
+ name: key,
7053
+ fn: vue.withCtx((scope) => [
7054
+ vue.renderSlot(_ctx.$slots, key, vue.mergeProps(scope, {
7055
+ errors: $options.transformedErrors,
7056
+ index: index
7057
+ }))
7058
+ ])
7059
+ }
6941
7060
  })
6942
- ])
6943
- ])
6944
- ]))
6945
- : vue.createCommentVNode("v-if", true)
6946
- ]),
6947
- _: 2 /* DYNAMIC */
6948
- }, 1024 /* DYNAMIC_SLOTS */))
6949
- ], 8 /* PROPS */, _hoisted_3$3))
7061
+ ]), 1032 /* PROPS, DYNAMIC_SLOTS */, ["modelValue", "onUpdate:modelValue", "class", "columns", "errors", "fields", "fields-props"])
7062
+ ]),
7063
+ ($props.useInlineActions)
7064
+ ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_7, [
7065
+ vue.createElementVNode("div", _hoisted_8, [
7066
+ ($props.useDuplicate)
7067
+ ? (vue.openBlock(), vue.createBlock(_component_qas_btn, {
7068
+ key: 0,
7069
+ color: "primary",
7070
+ flat: "",
7071
+ icon: "o_content_copy",
7072
+ round: "",
7073
+ onClick: $event => ($options.add(row))
7074
+ }, null, 8 /* PROPS */, ["onClick"]))
7075
+ : vue.createCommentVNode("v-if", true)
7076
+ ]),
7077
+ vue.createElementVNode("div", _hoisted_9, [
7078
+ ($options.showDestroyBtn)
7079
+ ? (vue.openBlock(), vue.createBlock(_component_qas_btn, {
7080
+ key: 0,
7081
+ color: "negative",
7082
+ flat: "",
7083
+ icon: "o_cancel",
7084
+ round: "",
7085
+ onClick: $event => ($options.destroy(index, row))
7086
+ }, null, 8 /* PROPS */, ["onClick"]))
7087
+ : vue.createCommentVNode("v-if", true)
7088
+ ])
7089
+ ]))
7090
+ : vue.createCommentVNode("v-if", true)
7091
+ ], 512 /* NEED_PATCH */),
7092
+ vue.createElementVNode("div", _hoisted_10, [
7093
+ vue.renderSlot(_ctx.$slots, "custom-fields", {
7094
+ fields: $options.children,
7095
+ index: index,
7096
+ model: $data.nested[index],
7097
+ updateValue: $options.updateValuesFromInput
7098
+ })
7099
+ ])
7100
+ ])
7101
+ ]))
7102
+ : vue.createCommentVNode("v-if", true)
7103
+ ], 8 /* PROPS */, _hoisted_4$3))
6950
7104
  }), 128 /* KEYED_FRAGMENT */))
6951
7105
  ]),
6952
7106
  _: 3 /* FORWARDED */
6953
- }, 512 /* NEED_PATCH */)),
6954
- vue.createElementVNode("div", _hoisted_10, [
7107
+ }, 16 /* FULL_PROPS */)),
7108
+ vue.createElementVNode("div", _hoisted_11, [
6955
7109
  vue.renderSlot(_ctx.$slots, "add-input", { add: $options.add }, () => [
6956
7110
  ($props.useInlineActions)
6957
7111
  ? (vue.openBlock(), vue.createElementBlock("div", {
@@ -6959,7 +7113,7 @@ function render$c(_ctx, _cache, $props, $setup, $data, $options) {
6959
7113
  class: "cursor-pointer items-center q-col-gutter-x-md q-mt-md row",
6960
7114
  onClick: _cache[1] || (_cache[1] = $event => ($options.add()))
6961
7115
  }, [
6962
- vue.createElementVNode("div", _hoisted_11, [
7116
+ vue.createElementVNode("div", _hoisted_12, [
6963
7117
  vue.createVNode(_component_qas_input, {
6964
7118
  class: "disabled no-pointer-events",
6965
7119
  "hide-bottom-space": "",
@@ -6968,7 +7122,7 @@ function render$c(_ctx, _cache, $props, $setup, $data, $options) {
6968
7122
  onFocus: _cache[0] || (_cache[0] = $event => ($options.add()))
6969
7123
  }, null, 8 /* PROPS */, ["label"])
6970
7124
  ]),
6971
- vue.createElementVNode("div", _hoisted_12, [
7125
+ vue.createElementVNode("div", _hoisted_13, [
6972
7126
  vue.createVNode(_component_qas_btn, {
6973
7127
  color: "green",
6974
7128
  flat: "",
@@ -6977,9 +7131,9 @@ function render$c(_ctx, _cache, $props, $setup, $data, $options) {
6977
7131
  })
6978
7132
  ])
6979
7133
  ]))
6980
- : (vue.openBlock(), vue.createElementBlock("div", _hoisted_13, [
7134
+ : (vue.openBlock(), vue.createElementBlock("div", _hoisted_14, [
6981
7135
  vue.createVNode(_component_qas_btn, {
6982
- class: "full-width q-py-sm",
7136
+ class: "full-width q-py-md",
6983
7137
  icon: "o_add",
6984
7138
  outline: "",
6985
7139
  onClick: _cache[2] || (_cache[2] = $event => ($options.add()))
@@ -6992,13 +7146,15 @@ function render$c(_ctx, _cache, $props, $setup, $data, $options) {
6992
7146
  ]))
6993
7147
  ])
6994
7148
  ])
6995
- ])
7149
+ ], 512 /* NEED_PATCH */)
6996
7150
  ], 8 /* PROPS */, _hoisted_1$8))
6997
7151
  }
6998
7152
 
6999
7153
  script$c.render = render$c;
7000
7154
  script$c.__file = "src/components/nested-fields/QasNestedFields.vue";
7001
7155
 
7156
+ const { hasPreviousRoute, history: history$1, getPreviousRoute } = useHistory();
7157
+
7002
7158
  var script$b = {
7003
7159
  name: 'QasPageHeader',
7004
7160
 
@@ -7026,7 +7182,7 @@ var script$b = {
7026
7182
 
7027
7183
  computed: {
7028
7184
  hasPreviousRoute () {
7029
- return history$1.hasPreviousRoute
7185
+ return hasPreviousRoute.value
7030
7186
  },
7031
7187
 
7032
7188
  transformedBreadcrumbs () {
@@ -7461,6 +7617,7 @@ var script$8 = {
7461
7617
  this.fuse = new Fuse__default["default"](value, this.defaultFuseOptions);
7462
7618
 
7463
7619
  this.setResults(this.search);
7620
+ this.updateResultsModel(value);
7464
7621
  },
7465
7622
 
7466
7623
  deep: true
@@ -7477,7 +7634,7 @@ var script$8 = {
7477
7634
 
7478
7635
  searchResults: {
7479
7636
  handler (value) {
7480
- this.$emit('update:results', value.map(result => result.item || result));
7637
+ this.updateResultsModel(value);
7481
7638
  },
7482
7639
  immediate: true
7483
7640
  }
@@ -7494,6 +7651,10 @@ var script$8 = {
7494
7651
  this.searchResults = value
7495
7652
  ? this.fuse.search(value)
7496
7653
  : this.list;
7654
+ },
7655
+
7656
+ updateResultsModel (value) {
7657
+ this.$emit('update:results', value.map(result => result.item || result));
7497
7658
  }
7498
7659
  }
7499
7660
  };
@@ -7851,15 +8012,17 @@ var script$6 = {
7851
8012
  immediate: true
7852
8013
  },
7853
8014
 
7854
- modelValue (value) {
7855
- this.values = [...value];
8015
+ modelValue: {
8016
+ handler (value) {
8017
+ this.values = [...value];
8018
+ },
8019
+
8020
+ immediate: true
7856
8021
  }
7857
8022
  },
7858
8023
 
7859
8024
  created () {
7860
- this.values = [...this.modelValue];
7861
-
7862
- this.handleOptions();
8025
+ this.handleList();
7863
8026
  },
7864
8027
 
7865
8028
  methods: {
@@ -7887,7 +8050,7 @@ var script$6 = {
7887
8050
  return this.values.includes(item.value) ? this.remove(item) : this.add(item)
7888
8051
  },
7889
8052
 
7890
- handleOptions () {
8053
+ handleList () {
7891
8054
  if (this.modelValue.length) {
7892
8055
  return this.sortList()
7893
8056
  }
@@ -7918,8 +8081,8 @@ var script$6 = {
7918
8081
 
7919
8082
  sortList () {
7920
8083
  this.sortedList = this.deleteOnly
7921
- ? this.list.filter(option => this.modelValue.includes(option.value))
7922
- : lodashEs.sortBy(this.list, option => !this.modelValue.includes(option.value));
8084
+ ? this.list.filter(item => this.modelValue.includes(item.value))
8085
+ : lodashEs.sortBy(this.list, item => !this.modelValue.includes(item.value));
7923
8086
  },
7924
8087
 
7925
8088
  updateModel (model) {
@@ -8446,8 +8609,8 @@ var script$3 = {
8446
8609
  },
8447
8610
 
8448
8611
  getFullTableWidth () {
8449
- const tableElemet = this.getTableElement();
8450
- return tableElemet?.getBoundingClientRect?.()?.width
8612
+ const tableElement = this.getTableElement();
8613
+ return tableElement?.getBoundingClientRect?.()?.width
8451
8614
  },
8452
8615
 
8453
8616
  getContainerTableWidth () {
@@ -8840,7 +9003,9 @@ var script = {
8840
9003
  firstQueue: [],
8841
9004
  optionsList: [],
8842
9005
  secondQueue: [],
8843
- selectedList: []
9006
+ selectedList: [],
9007
+ firstResults: [],
9008
+ secondResults: []
8844
9009
  }
8845
9010
  },
8846
9011
 
@@ -8978,13 +9143,15 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
8978
9143
  quantity: $data.optionsList.length
8979
9144
  }, null, 8 /* PROPS */, ["label", "quantity"]),
8980
9145
  vue.createVNode(_component_qas_search_box, vue.mergeProps({
8981
- "form-mode": "",
8982
- list: $data.optionsList
9146
+ results: $data.firstResults,
9147
+ "onUpdate:results": _cache[0] || (_cache[0] = $event => (($data.firstResults) = $event)),
9148
+ list: $data.optionsList,
9149
+ outlined: ""
8983
9150
  }, $options.searchBoxProps), {
8984
- default: vue.withCtx(({ results }) => [
9151
+ default: vue.withCtx(() => [
8985
9152
  vue.createVNode(_component_q_list, { separator: "" }, {
8986
9153
  default: vue.withCtx(() => [
8987
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(results, (item, index) => {
9154
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList($data.firstResults, (item, index) => {
8988
9155
  return (vue.openBlock(), vue.createBlock(_component_q_item, {
8989
9156
  key: index,
8990
9157
  class: vue.normalizeClass($options.getItemClass(item, true)),
@@ -9005,11 +9172,11 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
9005
9172
  }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["class", "onClick"]))
9006
9173
  }), 128 /* KEYED_FRAGMENT */))
9007
9174
  ]),
9008
- _: 2 /* DYNAMIC */
9009
- }, 1024 /* DYNAMIC_SLOTS */)
9175
+ _: 3 /* FORWARDED */
9176
+ })
9010
9177
  ]),
9011
9178
  _: 3 /* FORWARDED */
9012
- }, 16 /* FULL_PROPS */, ["list"])
9179
+ }, 16 /* FULL_PROPS */, ["results", "list"])
9013
9180
  ]),
9014
9181
  vue.createElementVNode("div", {
9015
9182
  class: vue.normalizeClass(["col-12 col-sm-auto items-center justify-center q-col-gutter-md row", $options.actionsClass])
@@ -9022,7 +9189,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
9022
9189
  flat: "",
9023
9190
  icon: "o_arrow_circle_down",
9024
9191
  rounded: "",
9025
- onClick: _cache[0] || (_cache[0] = $event => ($options.setSelectedFromClick(true)))
9192
+ onClick: _cache[1] || (_cache[1] = $event => ($options.setSelectedFromClick(true)))
9026
9193
  }, null, 8 /* PROPS */, ["class", "disabled"]),
9027
9194
  vue.createVNode(_component_q_tooltip, {
9028
9195
  anchor: "top middle",
@@ -9043,7 +9210,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
9043
9210
  flat: "",
9044
9211
  icon: "o_arrow_circle_up",
9045
9212
  rounded: "",
9046
- onClick: _cache[1] || (_cache[1] = $event => ($options.setSelectedFromClick()))
9213
+ onClick: _cache[2] || (_cache[2] = $event => ($options.setSelectedFromClick()))
9047
9214
  }, null, 8 /* PROPS */, ["class", "disabled"]),
9048
9215
  vue.createVNode(_component_q_tooltip, {
9049
9216
  anchor: "bottom middle",
@@ -9062,16 +9229,19 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
9062
9229
  label: "Selecionadas",
9063
9230
  quantity: $data.selectedList.length
9064
9231
  }, null, 8 /* PROPS */, ["quantity"]),
9065
- vue.createVNode(_component_qas_search_box, vue.mergeProps($options.searchBoxProps, {
9232
+ vue.createVNode(_component_qas_search_box, vue.mergeProps({
9233
+ results: $data.secondResults,
9234
+ "onUpdate:results": _cache[3] || (_cache[3] = $event => (($data.secondResults) = $event))
9235
+ }, $options.searchBoxProps, {
9066
9236
  "empty-list-height": "300px",
9067
- "form-mode": "",
9068
9237
  label: "Selecionadas",
9069
- list: $data.selectedList
9238
+ list: $data.selectedList,
9239
+ outlined: ""
9070
9240
  }), {
9071
- default: vue.withCtx(({ results }) => [
9241
+ default: vue.withCtx(() => [
9072
9242
  vue.createVNode(_component_q_list, { separator: "" }, {
9073
9243
  default: vue.withCtx(() => [
9074
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(results, (item, index) => {
9244
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList($data.secondResults, (item, index) => {
9075
9245
  return (vue.openBlock(), vue.createBlock(_component_q_item, {
9076
9246
  key: index,
9077
9247
  class: vue.normalizeClass($options.getItemClass(item)),
@@ -9092,11 +9262,11 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
9092
9262
  }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["class", "onClick"]))
9093
9263
  }), 128 /* KEYED_FRAGMENT */))
9094
9264
  ]),
9095
- _: 2 /* DYNAMIC */
9096
- }, 1024 /* DYNAMIC_SLOTS */)
9265
+ _: 3 /* FORWARDED */
9266
+ })
9097
9267
  ]),
9098
9268
  _: 3 /* FORWARDED */
9099
- }, 16 /* FULL_PROPS */, ["list"])
9269
+ }, 16 /* FULL_PROPS */, ["results", "list"])
9100
9270
  ])
9101
9271
  ], 2 /* CLASS */))
9102
9272
  }
@@ -9106,7 +9276,7 @@ script.__file = "src/components/transfer/QasTransfer.vue";
9106
9276
 
9107
9277
  var name = "@bildvitta/quasar-ui-asteroid";
9108
9278
  var description = "Asteroid";
9109
- var version$1 = "3.0.0-alpha.2";
9279
+ var version$1 = "3.0.0-beta.2";
9110
9280
  var author = "Bild & Vitta <systemteam@bild.com.br>";
9111
9281
  var license = "MIT";
9112
9282
  var main = "dist/asteroid.cjs.min.js";
@@ -9187,6 +9357,20 @@ var packageInfo = {
9187
9357
  vetur: vetur
9188
9358
  };
9189
9359
 
9360
+ var Test = {
9361
+ name: 'test',
9362
+
9363
+ bind (element, { arg: argument, value }) {
9364
+ if (element && argument) {
9365
+ element.dataset.test = argument;
9366
+ }
9367
+
9368
+ if (element && value) {
9369
+ element.dataset.testKey = value;
9370
+ }
9371
+ }
9372
+ };
9373
+
9190
9374
  const version = packageInfo.version;
9191
9375
 
9192
9376
  function install (app) {
@@ -9248,8 +9432,11 @@ function install (app) {
9248
9432
  app.config.globalProperties.$qas = {
9249
9433
  dialog: Dialog,
9250
9434
  error: NotifyError,
9251
- success: NotifySuccess
9435
+ success: NotifySuccess,
9436
+ screen: Screen()
9252
9437
  };
9438
+
9439
+ app.directive(Test.name, Test);
9253
9440
  }
9254
9441
 
9255
9442
  exports.Dialog = Dialog;
@@ -9303,5 +9490,6 @@ exports.QasTabsGenerator = script$2;
9303
9490
  exports.QasTextTruncate = script$1;
9304
9491
  exports.QasTransfer = script;
9305
9492
  exports.QasUploader = script$q;
9493
+ exports.Screen = Screen;
9306
9494
  exports.install = install;
9307
9495
  exports.version = version;