@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,19 +1,18 @@
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
  */
6
6
  (function (global, factory) {
7
- typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('humps'), require('vue'), require('date-fns'), require('date-fns/locale'), require('quasar'), require('autonumeric'), require('pica'), require('axios'), require('lodash-es'), require('signature_pad'), require('vue-router'), require('fuse.js'), require('sortablejs'), require('@fawmi/vue-google-maps')) :
8
- typeof define === 'function' && define.amd ? define(['humps', 'vue', 'date-fns', 'date-fns/locale', 'quasar', 'autonumeric', 'pica', 'axios', 'lodash-es', 'signature_pad', 'vue-router', 'fuse.js', 'sortablejs', '@fawmi/vue-google-maps'], factory) :
9
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global["{{ umdExportName }}"] = factory(global.humps, global.Vue, global.dateFns, global.dateFnsLocale, global.Quasar, global.AutoNumeric, global.Pica, global.axios, global._, global.SignaturePad, global.VueRouter, global.Fuse, global.Sortable, global.VueGoogleMaps));
10
- })(this, (function (humps, vue, dateFns, locale, quasar, AutoNumeric, Pica, api, lodashEs, SignaturePad, vueRouter, Fuse, Sortable, VueGoogleMaps) { 'use strict';
7
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('humps'), require('vue'), require('date-fns'), require('date-fns/locale'), require('quasar'), require('lodash-es'), require('autonumeric'), require('pica'), require('signature_pad'), require('vue-router'), require('fuse.js'), require('sortablejs'), require('@fawmi/vue-google-maps')) :
8
+ typeof define === 'function' && define.amd ? define(['humps', 'vue', 'date-fns', 'date-fns/locale', 'quasar', 'lodash-es', 'autonumeric', 'pica', 'signature_pad', 'vue-router', 'fuse.js', 'sortablejs', '@fawmi/vue-google-maps'], factory) :
9
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global["{{ umdExportName }}"] = factory(global.humps, global.Vue, global.dateFns, global.dateFnsLocale, global.Quasar, global._, global.AutoNumeric, global.Pica, global.SignaturePad, global.VueRouter, global.Fuse, global.Sortable, global.VueGoogleMaps));
10
+ })(this, (function (humps, vue, dateFns, locale, quasar, lodashEs, AutoNumeric, Pica, SignaturePad, vueRouter, Fuse, Sortable, VueGoogleMaps) { 'use strict';
11
11
 
12
12
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
13
13
 
14
14
  var AutoNumeric__default = /*#__PURE__*/_interopDefaultLegacy(AutoNumeric);
15
15
  var Pica__default = /*#__PURE__*/_interopDefaultLegacy(Pica);
16
- var api__default = /*#__PURE__*/_interopDefaultLegacy(api);
17
16
  var SignaturePad__default = /*#__PURE__*/_interopDefaultLegacy(SignaturePad);
18
17
  var Fuse__default = /*#__PURE__*/_interopDefaultLegacy(Fuse);
19
18
  var Sortable__default = /*#__PURE__*/_interopDefaultLegacy(Sortable);
@@ -342,6 +341,8 @@
342
341
 
343
342
  mx_updateModels (models) {
344
343
  for (const key in models) {
344
+ if (!models[key]) continue
345
+
345
346
  this.$emit(`update:${key}`, models[key]);
346
347
  }
347
348
  }
@@ -402,8 +403,6 @@
402
403
 
403
404
  mixins: [screenMixin],
404
405
 
405
- inheritAttrs: false,
406
-
407
406
  props: {
408
407
  hideLabelOnSmallScreen: {
409
408
  type: Boolean
@@ -413,7 +412,11 @@
413
412
  computed: {
414
413
  attributes () {
415
414
  const { label, ...attributes } = this.$attrs;
416
- return attributes
415
+
416
+ return {
417
+ ...(this.showLabel && { label }),
418
+ ...attributes
419
+ }
417
420
  },
418
421
 
419
422
  hasLabel () {
@@ -441,9 +444,7 @@
441
444
  }, $options.attributes), vue.createSlots({
442
445
  default: vue.withCtx(() => [
443
446
  ($options.showLabel)
444
- ? vue.renderSlot(_ctx.$slots, "default", { key: 0 }, () => [
445
- vue.createTextVNode(vue.toDisplayString(_ctx.$attrs.label), 1 /* TEXT */)
446
- ])
447
+ ? vue.renderSlot(_ctx.$slots, "default", { key: 0 })
447
448
  : vue.createCommentVNode("v-if", true)
448
449
  ]),
449
450
  _: 2 /* DYNAMIC */
@@ -541,10 +542,10 @@
541
542
  "hide-label-on-small-screen": "",
542
543
  icon: $props.icon,
543
544
  label: $props.label,
544
- outline: ""
545
+ outline: "",
546
+ padding: "md"
545
547
  }, {
546
548
  default: vue.withCtx(() => [
547
- vue.createElementVNode("span", null, vue.toDisplayString($props.label), 1 /* TEXT */),
548
549
  vue.createVNode(_component_q_menu, { class: "qas-actions-menu__menu" }, {
549
550
  default: vue.withCtx(() => [
550
551
  vue.createVNode(_component_q_list, {
@@ -567,8 +568,8 @@
567
568
  vue.createElementVNode("div", _hoisted_1$r, [
568
569
  vue.createVNode(_component_q_icon, {
569
570
  name: item.icon,
570
- size: item.iconSize
571
- }, null, 8 /* PROPS */, ["name", "size"]),
571
+ size: "sm"
572
+ }, null, 8 /* PROPS */, ["name"]),
572
573
  vue.createElementVNode("div", null, vue.toDisplayString(item.label), 1 /* TEXT */)
573
574
  ])
574
575
  ]),
@@ -590,7 +591,10 @@
590
591
  vue.createVNode(_component_q_item_section, null, {
591
592
  default: vue.withCtx(() => [
592
593
  vue.createElementVNode("div", _hoisted_2$k, [
593
- vue.createVNode(_component_q_icon, { name: $props.deleteIcon }, null, 8 /* PROPS */, ["name"]),
594
+ vue.createVNode(_component_q_icon, {
595
+ name: $props.deleteIcon,
596
+ size: "sm"
597
+ }, null, 8 /* PROPS */, ["name"]),
594
598
  vue.createElementVNode("div", null, vue.toDisplayString($props.deleteLabel), 1 /* TEXT */)
595
599
  ])
596
600
  ]),
@@ -751,11 +755,10 @@
751
755
  }
752
756
 
753
757
  /**
754
- * Function to filter specific field inside a fields
755
- * Função para filtrar propriedades espessificas dentro de um objeto
758
+ * Função para filtrar propriedades especificas dentro de um objeto
756
759
  *
757
760
  * @param {object} fields objeto com propriedades
758
- * @param {array} models array de string com nomes das proproiedades que serão filtradas
761
+ * @param {array} models array de string com nomes das propriedades que serão filtradas
759
762
  * @returns {object} objeto com propriedades filtradas
760
763
  *
761
764
  * @example
@@ -1335,7 +1338,7 @@
1335
1338
  const _hoisted_11$1 = { class: "ellipsis q-mt-lg qs-lh-sm text-bold text-subtitle1" };
1336
1339
  const _hoisted_12$1 = { class: "ellipsis q-mt-xs text-caption" };
1337
1340
  const _hoisted_13$1 = { class: "q-mt-sm" };
1338
- const _hoisted_14 = { class: "q-mt-sm" };
1341
+ const _hoisted_14$1 = { class: "q-mt-sm" };
1339
1342
 
1340
1343
  function render$F(_ctx, _cache, $props, $setup, $data, $options) {
1341
1344
  const _component_q_ajax_bar = vue.resolveComponent("q-ajax-bar");
@@ -1481,7 +1484,7 @@
1481
1484
  to: $props.user.to
1482
1485
  }, null, 8 /* PROPS */, ["to"])
1483
1486
  ]),
1484
- vue.createElementVNode("div", _hoisted_14, [
1487
+ vue.createElementVNode("div", _hoisted_14$1, [
1485
1488
  vue.withDirectives(vue.createVNode(_component_qas_btn, {
1486
1489
  class: "q-px-lg q-py-xs",
1487
1490
  dense: "",
@@ -2624,12 +2627,12 @@
2624
2627
  this.useForm && this.$emit('validate', await this.$refs.form.validate());
2625
2628
  },
2626
2629
 
2627
- // metodo para funcionar como plugin
2630
+ // método para funcionar como plugin
2628
2631
  show () {
2629
2632
  this.$refs.dialog.show();
2630
2633
  },
2631
2634
 
2632
- // metodo para funcionar como plugin
2635
+ // método para funcionar como plugin
2633
2636
  hide () {
2634
2637
  this.$refs.dialog.hide();
2635
2638
  },
@@ -2769,6 +2772,79 @@
2769
2772
  quasar.Notify?.create({ caption, message, type: 'success' });
2770
2773
  };
2771
2774
 
2775
+ var Screen = () => {
2776
+ const screensModel = {
2777
+ isSmall: () => quasar.Screen.xs,
2778
+ isMedium: () => quasar.Screen.sm,
2779
+ isLarge: () => quasar.Screen.gt.sm,
2780
+ untilMedium: () => quasar.Screen.lt.sm,
2781
+ untilLarge: () => quasar.Screen.lt.md,
2782
+
2783
+ // Plataforma
2784
+ isMobile: () => quasar.Platform.is.mobile || false
2785
+ };
2786
+
2787
+ const screens = {};
2788
+
2789
+ for (const key in screensModel) {
2790
+ // infelizmente esta é a única forma que conseguimos para que nossa função se tornasse reativa na view
2791
+ // é como o próprio quasar implementa
2792
+ Object.defineProperty(screens, key, {
2793
+ get () {
2794
+ return screensModel[key]()
2795
+ },
2796
+
2797
+ enumerable: true
2798
+ });
2799
+ }
2800
+
2801
+ return screens
2802
+ };
2803
+
2804
+ const history$2 = vue.reactive({ list: [] });
2805
+
2806
+ function useHistory () {
2807
+ const hasPreviousRoute = vue.computed(() => history$2.list.length > 1);
2808
+
2809
+ function getPreviousRoute (currentRoute) {
2810
+ const index = lodashEs.findLastIndex(history$2.list, item => item.name === currentRoute.name);
2811
+
2812
+ if (~index) {
2813
+ history$2.list.splice(index, 1);
2814
+ }
2815
+
2816
+ return history$2.list[history$2.list.length - 1]
2817
+ }
2818
+
2819
+ function addRoute (route) {
2820
+ const routeExistsInList = history$2.list?.[history$2.list?.length - 1]?.name === route.name;
2821
+
2822
+ if (routeExistsInList) return
2823
+
2824
+ history$2.list.push(route);
2825
+ }
2826
+
2827
+ function destroyRoutes (routes) {
2828
+ if (!history$2.list.length) return null
2829
+
2830
+ routes.forEach(route => {
2831
+ const index = history$2.list.findIndex(item => item.name === route.name);
2832
+
2833
+ if (~index) {
2834
+ history$2.list.splice(index, 1);
2835
+ }
2836
+ });
2837
+ }
2838
+
2839
+ return {
2840
+ history: history$2,
2841
+ hasPreviousRoute,
2842
+ getPreviousRoute,
2843
+ addRoute,
2844
+ destroyRoutes
2845
+ }
2846
+ }
2847
+
2772
2848
  var script$w = {
2773
2849
  name: 'QasDelete',
2774
2850
 
@@ -2805,6 +2881,11 @@
2805
2881
 
2806
2882
  deleting: {
2807
2883
  type: Boolean
2884
+ },
2885
+
2886
+ useAutoDeleteRoute: {
2887
+ default: true,
2888
+ type: Boolean
2808
2889
  }
2809
2890
  },
2810
2891
 
@@ -2852,9 +2933,21 @@
2852
2933
  this.$emit('update:deleting', true);
2853
2934
 
2854
2935
  try {
2936
+ const { destroyRoutes, history } = useHistory();
2937
+
2855
2938
  await this.$store.dispatch(`${this.entity}/destroy`, { id: this.id, url: this.url });
2939
+
2856
2940
  NotifySuccess('Item deletado com sucesso!');
2941
+
2942
+ if (this.useAutoDeleteRoute) {
2943
+ // remove todas rotas que possuem o id do item excluído.
2944
+ const routesToBeDeleted = this.getRoutesToBeDeletedById(history.list);
2945
+ destroyRoutes(routesToBeDeleted);
2946
+ }
2947
+
2948
+ // cria um evento para notificar que o item foi excluído no "window".
2857
2949
  this.createDeleteSuccessEvent();
2950
+
2858
2951
  this.$emit('success');
2859
2952
  } catch (error) {
2860
2953
  NotifyError('Ops! Não foi possível deletar o item.');
@@ -2865,6 +2958,10 @@
2865
2958
  }
2866
2959
  },
2867
2960
 
2961
+ getRoutesToBeDeletedById (routes = []) {
2962
+ return routes.filter(({ params }) => params.id === this.id)
2963
+ },
2964
+
2868
2965
  createDeleteSuccessEvent () {
2869
2966
  const event = new CustomEvent('delete-success', {
2870
2967
  bubbles: false,
@@ -3023,7 +3120,7 @@
3023
3120
  props: {
3024
3121
  modelValue: {
3025
3122
  default: '',
3026
- type: String
3123
+ type: [String, Number]
3027
3124
  },
3028
3125
 
3029
3126
  unmaskedValue: {
@@ -3034,11 +3131,31 @@
3034
3131
  outlined: {
3035
3132
  default: true,
3036
3133
  type: Boolean
3134
+ },
3135
+
3136
+ removeErrorOnType: {
3137
+ type: Boolean
3138
+ },
3139
+
3140
+ error: {
3141
+ type: Boolean
3142
+ },
3143
+
3144
+ errorMessage: {
3145
+ type: String,
3146
+ default: ''
3037
3147
  }
3038
3148
  },
3039
3149
 
3040
3150
  emits: ['update:modelValue'],
3041
3151
 
3152
+ data () {
3153
+ return {
3154
+ errorData: false,
3155
+ messageErrorData: ''
3156
+ }
3157
+ },
3158
+
3042
3159
  computed: {
3043
3160
  hasError () {
3044
3161
  return this.inputReference.hasError
@@ -3071,6 +3188,11 @@
3071
3188
  },
3072
3189
 
3073
3190
  set (value) {
3191
+ if (this.removeErrorOnType && this.error) {
3192
+ this.errorData = false;
3193
+ this.errorMessageData = '';
3194
+ }
3195
+
3074
3196
  return this.$emit('update:modelValue', value)
3075
3197
  }
3076
3198
  }
@@ -3083,6 +3205,22 @@
3083
3205
  requestAnimationFrame(() => {
3084
3206
  input.selectionStart = input.value ? input.value.length : '';
3085
3207
  });
3208
+ },
3209
+
3210
+ error: {
3211
+ handler (value) {
3212
+ this.errorData = value;
3213
+ },
3214
+
3215
+ immediate: true
3216
+ },
3217
+
3218
+ errorMessage: {
3219
+ handler (value) {
3220
+ this.errorMessageData = value;
3221
+ },
3222
+
3223
+ immediate: true
3086
3224
  }
3087
3225
  },
3088
3226
 
@@ -3114,8 +3252,10 @@
3114
3252
  ref: "input",
3115
3253
  modelValue: $options.model,
3116
3254
  "onUpdate:modelValue": _cache[0] || (_cache[0] = $event => (($options.model) = $event)),
3117
- "bottom-slots": ""
3255
+ "bottom-slots": "",
3256
+ error: $data.errorData
3118
3257
  }, _ctx.$attrs, {
3258
+ "error-message": _ctx.errorMessageData,
3119
3259
  mask: $options.mask,
3120
3260
  outlined: $props.outlined,
3121
3261
  "unmasked-value": $props.unmaskedValue
@@ -3128,7 +3268,7 @@
3128
3268
  ])
3129
3269
  }
3130
3270
  })
3131
- ]), 1040 /* FULL_PROPS, DYNAMIC_SLOTS */, ["modelValue", "mask", "outlined", "unmasked-value"])
3271
+ ]), 1040 /* FULL_PROPS, DYNAMIC_SLOTS */, ["modelValue", "error", "error-message", "mask", "outlined", "unmasked-value"])
3132
3272
  ]))
3133
3273
  }
3134
3274
 
@@ -3387,9 +3527,8 @@
3387
3527
  mixins: [passwordMixin],
3388
3528
 
3389
3529
  props: {
3390
- useStrengthChecker: {
3391
- type: Boolean,
3392
- default: true
3530
+ hideStrengthChecker: {
3531
+ type: Boolean
3393
3532
  },
3394
3533
 
3395
3534
  iconColor: {
@@ -3407,7 +3546,6 @@
3407
3546
 
3408
3547
  data () {
3409
3548
  return {
3410
- key: 'error',
3411
3549
  toggleType: true
3412
3550
  }
3413
3551
  },
@@ -3437,15 +3575,6 @@
3437
3575
  }
3438
3576
  },
3439
3577
 
3440
- watch: {
3441
- modelValue () {
3442
- if (this.$attrs.error) {
3443
- this.$attrs.error = false;
3444
- this.$attrs.errorMessage = '';
3445
- }
3446
- }
3447
- },
3448
-
3449
3578
  methods: {
3450
3579
  toggle () {
3451
3580
  this.toggleType = !this.toggleType;
@@ -3458,39 +3587,43 @@
3458
3587
  const _component_qas_password_strength_checker = vue.resolveComponent("qas-password-strength-checker");
3459
3588
  const _component_qas_input = vue.resolveComponent("qas-input");
3460
3589
 
3461
- return (vue.openBlock(), vue.createBlock(_component_qas_input, {
3462
- modelValue: $options.model,
3463
- "onUpdate:modelValue": _cache[0] || (_cache[0] = $event => (($options.model) = $event)),
3464
- "bottom-slots": "",
3465
- type: $options.type
3466
- }, vue.createSlots({
3467
- append: vue.withCtx(() => [
3468
- vue.createVNode(_component_q_icon, {
3469
- class: "cursor-pointer",
3470
- color: $props.iconColor,
3471
- name: $options.icon,
3472
- onClick: $options.toggle
3473
- }, null, 8 /* PROPS */, ["color", "name", "onClick"])
3474
- ]),
3475
- _: 2 /* DYNAMIC */
3476
- }, [
3477
- vue.renderList(_ctx.$slots, (_, name) => {
3478
- return {
3479
- name: name,
3480
- fn: vue.withCtx((context) => [
3481
- vue.renderSlot(_ctx.$slots, name, vue.normalizeProps(vue.guardReactiveProps(context || {})))
3482
- ])
3483
- }
3484
- }),
3485
- ($props.useStrengthChecker)
3486
- ? {
3487
- name: "hint",
3488
- fn: vue.withCtx(() => [
3489
- vue.createVNode(_component_qas_password_strength_checker, vue.mergeProps($options.strengthCheckerProps, { password: $options.model }), null, 16 /* FULL_PROPS */, ["password"])
3590
+ return (vue.openBlock(), vue.createElementBlock("div", null, [
3591
+ vue.createVNode(_component_qas_input, vue.mergeProps({
3592
+ modelValue: $options.model,
3593
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = $event => (($options.model) = $event)),
3594
+ "bottom-slots": ""
3595
+ }, _ctx.$attrs, {
3596
+ "remove-error-on-type": "",
3597
+ type: $options.type
3598
+ }), vue.createSlots({
3599
+ append: vue.withCtx(() => [
3600
+ vue.createVNode(_component_q_icon, {
3601
+ class: "cursor-pointer",
3602
+ color: $props.iconColor,
3603
+ name: $options.icon,
3604
+ onClick: $options.toggle
3605
+ }, null, 8 /* PROPS */, ["color", "name", "onClick"])
3606
+ ]),
3607
+ _: 2 /* DYNAMIC */
3608
+ }, [
3609
+ vue.renderList(_ctx.$slots, (_, name) => {
3610
+ return {
3611
+ name: name,
3612
+ fn: vue.withCtx((context) => [
3613
+ vue.renderSlot(_ctx.$slots, name, vue.normalizeProps(vue.guardReactiveProps(context || {})))
3490
3614
  ])
3491
3615
  }
3492
- : undefined
3493
- ]), 1032 /* PROPS, DYNAMIC_SLOTS */, ["modelValue", "type"]))
3616
+ }),
3617
+ (!$props.hideStrengthChecker)
3618
+ ? {
3619
+ name: "hint",
3620
+ fn: vue.withCtx(() => [
3621
+ vue.createVNode(_component_qas_password_strength_checker, vue.mergeProps($options.strengthCheckerProps, { password: $options.model }), null, 16 /* FULL_PROPS */, ["password"])
3622
+ ])
3623
+ }
3624
+ : undefined
3625
+ ]), 1040 /* FULL_PROPS, DYNAMIC_SLOTS */, ["modelValue", "type"])
3626
+ ]))
3494
3627
  }
3495
3628
 
3496
3629
  script$r.render = render$r;
@@ -3689,7 +3822,7 @@
3689
3822
  this.isFetching = true;
3690
3823
 
3691
3824
  try {
3692
- const { data } = await api__default["default"].post('/upload-credentials/', {
3825
+ const { data } = await this.$axios.post('/upload-credentials/', {
3693
3826
  entity: this.entity,
3694
3827
  filename
3695
3828
  });
@@ -4166,7 +4299,14 @@
4166
4299
  QasSignaturePad: script$p
4167
4300
  },
4168
4301
 
4302
+ mixins: [screenMixin],
4303
+
4169
4304
  props: {
4305
+ dialogProps: {
4306
+ type: Object,
4307
+ default: () => ({})
4308
+ },
4309
+
4170
4310
  uploadLabel: {
4171
4311
  default: '',
4172
4312
  type: String
@@ -4215,6 +4355,32 @@
4215
4355
 
4216
4356
  headerClass () {
4217
4357
  return `q-pa-${this.readonly ? 'md' : 'sm'}`
4358
+ },
4359
+
4360
+ defaultDialogProps () {
4361
+ return {
4362
+ maxWidth: '620px',
4363
+ ...this.dialogProps
4364
+ }
4365
+ },
4366
+
4367
+ signaturePadWidth () {
4368
+ const sizes = {
4369
+ [this.mx_isSmall]: { width: '100%' },
4370
+ [this.mx_isMedium]: { width: '570px' },
4371
+ [this.mx_isLarge]: { width: '350px' }
4372
+ };
4373
+ return sizes.true
4374
+ },
4375
+
4376
+ signaturePadHeight () {
4377
+ const sizes = {
4378
+ [this.mx_isSmall]: '250',
4379
+ [this.mx_isMedium]: '400',
4380
+ [this.mx_isLarge]: '250'
4381
+ };
4382
+
4383
+ return sizes.true
4218
4384
  }
4219
4385
  },
4220
4386
 
@@ -4314,20 +4480,24 @@
4314
4480
  ]),
4315
4481
  _: 1 /* STABLE */
4316
4482
  }, 16 /* FULL_PROPS */, ["modelValue", "label", "readonly"]),
4317
- vue.createVNode(_component_qas_dialog, {
4483
+ vue.createVNode(_component_qas_dialog, vue.mergeProps({
4318
4484
  modelValue: $data.isOpenedDialog,
4319
4485
  "onUpdate:modelValue": _cache[3] || (_cache[3] = $event => (($data.isOpenedDialog) = $event))
4320
- }, {
4486
+ }, $options.defaultDialogProps), {
4321
4487
  header: vue.withCtx(() => [
4322
4488
  _hoisted_3$8
4323
4489
  ]),
4324
4490
  description: vue.withCtx(() => [
4325
- vue.createVNode(_component_qas_signature_pad, {
4326
- ref: "signaturePadModal",
4327
- empty: $data.isEmpty,
4328
- "onUpdate:empty": _cache[2] || (_cache[2] = $event => (($data.isEmpty) = $event)),
4329
- height: "250"
4330
- }, null, 8 /* PROPS */, ["empty"])
4491
+ vue.createElementVNode("div", {
4492
+ style: vue.normalizeStyle($options.signaturePadWidth)
4493
+ }, [
4494
+ vue.createVNode(_component_qas_signature_pad, {
4495
+ ref: "signaturePadModal",
4496
+ empty: $data.isEmpty,
4497
+ "onUpdate:empty": _cache[2] || (_cache[2] = $event => (($data.isEmpty) = $event)),
4498
+ height: $options.signaturePadHeight
4499
+ }, null, 8 /* PROPS */, ["empty", "height"])
4500
+ ], 4 /* STYLE */)
4331
4501
  ]),
4332
4502
  actions: vue.withCtx(() => [
4333
4503
  vue.createVNode(_component_q_btn, {
@@ -4348,7 +4518,7 @@
4348
4518
  }, null, 8 /* PROPS */, ["onClick"])
4349
4519
  ]),
4350
4520
  _: 1 /* STABLE */
4351
- }, 8 /* PROPS */, ["modelValue"])
4521
+ }, 16 /* FULL_PROPS */, ["modelValue"])
4352
4522
  ]))
4353
4523
  }
4354
4524
 
@@ -4412,7 +4582,6 @@
4412
4582
  prefix,
4413
4583
  type,
4414
4584
  mask,
4415
- pattern,
4416
4585
  maxFiles,
4417
4586
  searchable,
4418
4587
  gmt
@@ -4463,7 +4632,7 @@
4463
4632
  number: { is: 'qas-input', type: 'number', ...input },
4464
4633
  hidden: { is: 'input', name, type },
4465
4634
  email: { is: 'qas-input', type, ...input },
4466
- password: { is: 'qas-password-input', type, pattern, hideStrengthChecker: !pattern, ...input },
4635
+ password: { is: 'qas-password-input', ...input },
4467
4636
 
4468
4637
  decimal: { ...numericInput, mode: 'decimal' },
4469
4638
  money: { ...numericInput, mode: 'money' },
@@ -4608,6 +4777,10 @@
4608
4777
  url: {
4609
4778
  default: '',
4610
4779
  type: String
4780
+ },
4781
+
4782
+ forceRefetch: {
4783
+ type: Boolean
4611
4784
  }
4612
4785
  },
4613
4786
 
@@ -4737,7 +4910,7 @@
4737
4910
  },
4738
4911
 
4739
4912
  async fetchFilters () {
4740
- if (this.hasFields || !this.useFilterButton) {
4913
+ if (!this.forceRefetch && (this.hasFields || !this.useFilterButton)) {
4741
4914
  return null
4742
4915
  }
4743
4916
 
@@ -4903,7 +5076,7 @@
4903
5076
  label: $options.filterButtonLabel
4904
5077
  }, {
4905
5078
  default: vue.withCtx(() => [
4906
- vue.createVNode(_component_q_menu, { onBeforeShow: $options.fetchFilters }, {
5079
+ vue.createVNode(_component_q_menu, null, {
4907
5080
  default: vue.withCtx(() => [
4908
5081
  ($data.isFetching)
4909
5082
  ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$6, [
@@ -4957,7 +5130,7 @@
4957
5130
  }))
4958
5131
  ]),
4959
5132
  _: 1 /* STABLE */
4960
- }, 8 /* PROPS */, ["onBeforeShow"])
5133
+ })
4961
5134
  ]),
4962
5135
  _: 1 /* STABLE */
4963
5136
  }, 8 /* PROPS */, ["color", "label"]))
@@ -5105,28 +5278,6 @@
5105
5278
  script$l.render = render$l;
5106
5279
  script$l.__file = "src/components/form-generator/QasFormGenerator.vue";
5107
5280
 
5108
- const history$1 = vue.reactive({ hasPreviousRoute: false, list: [] });
5109
-
5110
- function getPreviousRoute (currentRoute) {
5111
- const index = lodashEs.findLastIndex(history$1.list, item => item.name === currentRoute.name);
5112
-
5113
- if (~index) {
5114
- history$1.list.splice(index, 1);
5115
- }
5116
-
5117
- history$1.hasPreviousRoute = history$1.list.length > 1;
5118
- return history$1.list[history$1.list.length - 1]
5119
- }
5120
-
5121
- function addRoute (route) {
5122
- const routeExistsInList = history$1.list?.[history$1.list?.length - 1]?.name === route.name;
5123
-
5124
- if (routeExistsInList) return
5125
-
5126
- history$1.list.push(route);
5127
- history$1.hasPreviousRoute = history$1.list.length > 1;
5128
- }
5129
-
5130
5281
  var script$k = {
5131
5282
  name: 'QasFormView',
5132
5283
 
@@ -5145,7 +5296,7 @@
5145
5296
 
5146
5297
  cancelRoute: {
5147
5298
  default: '',
5148
- type: [Boolean, Object, String]
5299
+ type: [Boolean, Object, String, Function]
5149
5300
  },
5150
5301
 
5151
5302
  customId: {
@@ -5264,10 +5415,6 @@
5264
5415
  return this.disable || this.isSubmitting
5265
5416
  },
5266
5417
 
5267
- history () {
5268
- return history$1.list
5269
- },
5270
-
5271
5418
  fieldsNameWithDefaultValue () {
5272
5419
  return Object.keys(this.fields).filter(field => 'default' in this.fields[field])
5273
5420
  }
@@ -5336,7 +5483,7 @@
5336
5483
  this.mx_updateModels({
5337
5484
  errors: errors,
5338
5485
  fields: this.mx_fields,
5339
- metadata: metadata
5486
+ metadata
5340
5487
  });
5341
5488
 
5342
5489
  if (result) {
@@ -5365,9 +5512,11 @@
5365
5512
  },
5366
5513
 
5367
5514
  handleCancelRoute () {
5368
- const acceptTypes = ['string', 'object'];
5515
+ if (typeof this.cancelRoute === 'function') {
5516
+ return this.cancelRoute()
5517
+ }
5369
5518
 
5370
- if (this.cancelRoute && acceptTypes.includes(typeof this.cancelRoute)) {
5519
+ if (this.cancelRoute && ['string', 'object'].includes(typeof this.cancelRoute)) {
5371
5520
  return this.$router.push(this.cancelRoute)
5372
5521
  }
5373
5522
 
@@ -5380,6 +5529,8 @@
5380
5529
  handleDialog (next) {
5381
5530
  this.openDialog();
5382
5531
 
5532
+ const { addRoute } = useHistory();
5533
+
5383
5534
  this.defaultDialogProps.ok.onClick = () => addRoute(this.$route);
5384
5535
  this.defaultDialogProps.cancel.onClick = next;
5385
5536
  },
@@ -5462,7 +5613,9 @@
5462
5613
  const _component_q_inner_loading = vue.resolveComponent("q-inner-loading");
5463
5614
  const _directive_close_popup = vue.resolveDirective("close-popup");
5464
5615
 
5465
- return (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.mx_componentTag), null, {
5616
+ return (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.mx_componentTag), {
5617
+ class: vue.normalizeClass(_ctx.mx_componentClass)
5618
+ }, {
5466
5619
  default: vue.withCtx(() => [
5467
5620
  (_ctx.mx_hasHeaderSlot)
5468
5621
  ? (vue.openBlock(), vue.createElementBlock("header", _hoisted_1$d, [
@@ -5534,7 +5687,7 @@
5534
5687
  }, 8 /* PROPS */, ["showing"])
5535
5688
  ]),
5536
5689
  _: 3 /* FORWARDED */
5537
- }))
5690
+ }, 8 /* PROPS */, ["class"]))
5538
5691
  }
5539
5692
 
5540
5693
  script$k.render = render$k;
@@ -6524,7 +6677,10 @@
6524
6677
  QasBtn: script$K,
6525
6678
  QasFormGenerator: script$l,
6526
6679
  QasInput: script$u,
6527
- QasLabel: script$h
6680
+ QasLabel: script$h,
6681
+
6682
+ // vue
6683
+ TransitionGroup: vue.TransitionGroup
6528
6684
  },
6529
6685
 
6530
6686
  props: {
@@ -6688,6 +6844,16 @@
6688
6844
 
6689
6845
  componentTag () {
6690
6846
  return this.useAnimation ? 'transition-group' : 'div'
6847
+ },
6848
+
6849
+ componentProps () {
6850
+ if (!this.useAnimation) return {}
6851
+
6852
+ return {
6853
+ tag: 'div',
6854
+ enterActiveClass: 'animated slideInDown',
6855
+ leaveActiveClass: 'animated slideOutUp'
6856
+ }
6691
6857
  }
6692
6858
  },
6693
6859
 
@@ -6772,23 +6938,24 @@
6772
6938
 
6773
6939
  const _hoisted_1$8 = ["id"];
6774
6940
  const _hoisted_2$5 = { class: "text-left" };
6775
- const _hoisted_3$3 = ["id"];
6776
- const _hoisted_4$3 = { class: "flex items-center justify-between q-py-xs" };
6777
- const _hoisted_5$2 = {
6941
+ const _hoisted_3$3 = { ref: "inputContent" };
6942
+ const _hoisted_4$3 = ["id"];
6943
+ const _hoisted_5$2 = { class: "flex items-center justify-between q-py-xs" };
6944
+ const _hoisted_6 = {
6778
6945
  key: 1,
6779
6946
  class: "q-gutter-x-sm"
6780
6947
  };
6781
- const _hoisted_6 = {
6948
+ const _hoisted_7 = {
6782
6949
  key: 0,
6783
6950
  class: "flex items-center qas-nested-fields__actions"
6784
6951
  };
6785
- const _hoisted_7 = { class: "col-auto" };
6786
6952
  const _hoisted_8 = { class: "col-auto" };
6787
- const _hoisted_9 = { class: "col-12" };
6788
- const _hoisted_10 = { class: "q-mt-md" };
6789
- const _hoisted_11 = { class: "col" };
6790
- const _hoisted_12 = { class: "col-auto" };
6791
- const _hoisted_13 = {
6953
+ const _hoisted_9 = { class: "col-auto" };
6954
+ const _hoisted_10 = { class: "col-12" };
6955
+ const _hoisted_11 = { class: "q-mt-md" };
6956
+ const _hoisted_12 = { class: "col" };
6957
+ const _hoisted_13 = { class: "col-auto" };
6958
+ const _hoisted_14 = {
6792
6959
  key: 1,
6793
6960
  class: "q-mt-lg"
6794
6961
  };
@@ -6811,134 +6978,122 @@
6811
6978
  }, null, 8 /* PROPS */, ["label"]))
6812
6979
  : vue.createCommentVNode("v-if", true)
6813
6980
  ]),
6814
- vue.createElementVNode("div", null, [
6815
- (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent($options.componentTag), {
6816
- ref: "inputContent",
6817
- name: "fade",
6818
- tag: "div"
6819
- }, {
6981
+ vue.createElementVNode("div", _hoisted_3$3, [
6982
+ (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent($options.componentTag), vue.normalizeProps(vue.guardReactiveProps($options.componentProps)), {
6820
6983
  default: vue.withCtx(() => [
6821
6984
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList($data.nested, (row, index) => {
6822
6985
  return (vue.openBlock(), vue.createElementBlock("div", {
6823
6986
  id: `row-${index}`,
6824
- key: index,
6987
+ key: `row-${index}`,
6825
6988
  class: "full-width"
6826
6989
  }, [
6827
- (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent($options.componentTag), {
6828
- name: "fade",
6829
- tag: "div"
6830
- }, {
6831
- default: vue.withCtx(() => [
6832
- (!row[$props.destroyKey])
6833
- ? (vue.openBlock(), vue.createElementBlock("div", {
6834
- key: index,
6835
- class: "col-12 q-mt-md"
6990
+ (!row[$props.destroyKey])
6991
+ ? (vue.openBlock(), vue.createElementBlock("div", {
6992
+ key: index,
6993
+ class: "col-12 q-mt-md"
6994
+ }, [
6995
+ vue.createElementVNode("div", null, [
6996
+ vue.createElementVNode("div", _hoisted_5$2, [
6997
+ (!$props.useSingleLabel)
6998
+ ? (vue.openBlock(), vue.createBlock(_component_qas_label, {
6999
+ key: 0,
7000
+ label: $options.setRowLabel(index)
7001
+ }, null, 8 /* PROPS */, ["label"]))
7002
+ : vue.createCommentVNode("v-if", true),
7003
+ (!$props.useInlineActions)
7004
+ ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6, [
7005
+ ($props.useDuplicate)
7006
+ ? (vue.openBlock(), vue.createBlock(_component_qas_btn, vue.mergeProps({ key: 0 }, $props.btnDuplicateProps, {
7007
+ onClick: $event => ($options.add(row))
7008
+ }), null, 16 /* FULL_PROPS */, ["onClick"]))
7009
+ : vue.createCommentVNode("v-if", true),
7010
+ ($options.showDestroyBtn)
7011
+ ? (vue.openBlock(), vue.createBlock(_component_qas_btn, vue.mergeProps({ key: 1 }, $props.btnDestroyProps, {
7012
+ onClick: $event => ($options.destroy(index, row))
7013
+ }), null, 16 /* FULL_PROPS */, ["onClick"]))
7014
+ : vue.createCommentVNode("v-if", true)
7015
+ ]))
7016
+ : vue.createCommentVNode("v-if", true)
7017
+ ]),
7018
+ vue.createElementVNode("div", {
7019
+ ref_for: true,
7020
+ ref: "formGenerator",
7021
+ class: "col-12 justify-between q-col-gutter-x-md row"
6836
7022
  }, [
6837
- vue.createElementVNode("div", null, [
6838
- vue.createElementVNode("div", _hoisted_4$3, [
6839
- (!$props.useSingleLabel)
6840
- ? (vue.openBlock(), vue.createBlock(_component_qas_label, {
6841
- key: 0,
6842
- label: $options.setRowLabel(index)
6843
- }, null, 8 /* PROPS */, ["label"]))
6844
- : vue.createCommentVNode("v-if", true),
6845
- (!$props.useInlineActions)
6846
- ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5$2, [
6847
- ($props.useDuplicate)
6848
- ? (vue.openBlock(), vue.createBlock(_component_qas_btn, vue.mergeProps({ key: 0 }, $props.btnDuplicateProps, {
6849
- onClick: $event => ($options.add(row))
6850
- }), null, 16 /* FULL_PROPS */, ["onClick"]))
6851
- : vue.createCommentVNode("v-if", true),
6852
- ($options.showDestroyBtn)
6853
- ? (vue.openBlock(), vue.createBlock(_component_qas_btn, vue.mergeProps({ key: 1 }, $props.btnDestroyProps, {
6854
- onClick: $event => ($options.destroy(index, row))
6855
- }), null, 16 /* FULL_PROPS */, ["onClick"]))
6856
- : vue.createCommentVNode("v-if", true)
6857
- ]))
6858
- : vue.createCommentVNode("v-if", true)
6859
- ]),
6860
- vue.createElementVNode("div", {
6861
- ref_for: true,
6862
- ref: "formGenerator",
6863
- class: "col-12 justify-between q-col-gutter-x-md row"
6864
- }, [
6865
- vue.renderSlot(_ctx.$slots, "fields", {
6866
- errors: $options.transformedErrors,
6867
- fields: $options.children,
6868
- index: index,
6869
- updateValue: $options.updateValuesFromInput
6870
- }, () => [
6871
- vue.createVNode(_component_qas_form_generator, {
6872
- modelValue: $data.nested[index],
6873
- "onUpdate:modelValue": [$event => (($data.nested[index]) = $event), $event => ($options.updateValuesFromInput($event, index))],
6874
- class: vue.normalizeClass($options.formClasses),
6875
- columns: $props.formColumns,
6876
- errors: $options.transformedErrors[index],
6877
- fields: $options.children,
6878
- "fields-props": $props.fieldsProps
6879
- }, vue.createSlots({ _: 2 /* DYNAMIC */ }, [
6880
- vue.renderList(_ctx.$slots, (slot, key) => {
6881
- return {
6882
- name: key,
6883
- fn: vue.withCtx((scope) => [
6884
- vue.renderSlot(_ctx.$slots, key, vue.mergeProps(scope, {
6885
- errors: $options.transformedErrors,
6886
- index: index
6887
- }))
6888
- ])
6889
- }
6890
- })
6891
- ]), 1032 /* PROPS, DYNAMIC_SLOTS */, ["modelValue", "onUpdate:modelValue", "class", "columns", "errors", "fields", "fields-props"])
6892
- ]),
6893
- ($props.useInlineActions)
6894
- ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6, [
6895
- vue.createElementVNode("div", _hoisted_7, [
6896
- ($props.useDuplicate)
6897
- ? (vue.openBlock(), vue.createBlock(_component_qas_btn, {
6898
- key: 0,
6899
- color: "primary",
6900
- flat: "",
6901
- icon: "o_content_copy",
6902
- round: "",
6903
- onClick: $event => ($options.add(row))
6904
- }, null, 8 /* PROPS */, ["onClick"]))
6905
- : vue.createCommentVNode("v-if", true)
6906
- ]),
6907
- vue.createElementVNode("div", _hoisted_8, [
6908
- ($options.showDestroyBtn)
6909
- ? (vue.openBlock(), vue.createBlock(_component_qas_btn, {
6910
- key: 0,
6911
- color: "negative",
6912
- flat: "",
6913
- icon: "o_cancel",
6914
- round: "",
6915
- onClick: $event => ($options.destroy(index, row))
6916
- }, null, 8 /* PROPS */, ["onClick"]))
6917
- : vue.createCommentVNode("v-if", true)
6918
- ])
6919
- ]))
6920
- : vue.createCommentVNode("v-if", true)
6921
- ], 512 /* NEED_PATCH */),
6922
- vue.createElementVNode("div", _hoisted_9, [
6923
- vue.renderSlot(_ctx.$slots, "custom-fields", {
6924
- fields: $options.children,
6925
- index: index,
6926
- model: $data.nested[index],
6927
- updateValue: $options.updateValuesFromInput
7023
+ vue.renderSlot(_ctx.$slots, "fields", {
7024
+ errors: $options.transformedErrors,
7025
+ fields: $options.children,
7026
+ index: index,
7027
+ updateValue: $options.updateValuesFromInput
7028
+ }, () => [
7029
+ vue.createVNode(_component_qas_form_generator, {
7030
+ modelValue: $data.nested[index],
7031
+ "onUpdate:modelValue": [$event => (($data.nested[index]) = $event), $event => ($options.updateValuesFromInput($event, index))],
7032
+ class: vue.normalizeClass($options.formClasses),
7033
+ columns: $props.formColumns,
7034
+ errors: $options.transformedErrors[index],
7035
+ fields: $options.children,
7036
+ "fields-props": $props.fieldsProps
7037
+ }, vue.createSlots({ _: 2 /* DYNAMIC */ }, [
7038
+ vue.renderList(_ctx.$slots, (slot, key) => {
7039
+ return {
7040
+ name: key,
7041
+ fn: vue.withCtx((scope) => [
7042
+ vue.renderSlot(_ctx.$slots, key, vue.mergeProps(scope, {
7043
+ errors: $options.transformedErrors,
7044
+ index: index
7045
+ }))
7046
+ ])
7047
+ }
6928
7048
  })
6929
- ])
6930
- ])
6931
- ]))
6932
- : vue.createCommentVNode("v-if", true)
6933
- ]),
6934
- _: 2 /* DYNAMIC */
6935
- }, 1024 /* DYNAMIC_SLOTS */))
6936
- ], 8 /* PROPS */, _hoisted_3$3))
7049
+ ]), 1032 /* PROPS, DYNAMIC_SLOTS */, ["modelValue", "onUpdate:modelValue", "class", "columns", "errors", "fields", "fields-props"])
7050
+ ]),
7051
+ ($props.useInlineActions)
7052
+ ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_7, [
7053
+ vue.createElementVNode("div", _hoisted_8, [
7054
+ ($props.useDuplicate)
7055
+ ? (vue.openBlock(), vue.createBlock(_component_qas_btn, {
7056
+ key: 0,
7057
+ color: "primary",
7058
+ flat: "",
7059
+ icon: "o_content_copy",
7060
+ round: "",
7061
+ onClick: $event => ($options.add(row))
7062
+ }, null, 8 /* PROPS */, ["onClick"]))
7063
+ : vue.createCommentVNode("v-if", true)
7064
+ ]),
7065
+ vue.createElementVNode("div", _hoisted_9, [
7066
+ ($options.showDestroyBtn)
7067
+ ? (vue.openBlock(), vue.createBlock(_component_qas_btn, {
7068
+ key: 0,
7069
+ color: "negative",
7070
+ flat: "",
7071
+ icon: "o_cancel",
7072
+ round: "",
7073
+ onClick: $event => ($options.destroy(index, row))
7074
+ }, null, 8 /* PROPS */, ["onClick"]))
7075
+ : vue.createCommentVNode("v-if", true)
7076
+ ])
7077
+ ]))
7078
+ : vue.createCommentVNode("v-if", true)
7079
+ ], 512 /* NEED_PATCH */),
7080
+ vue.createElementVNode("div", _hoisted_10, [
7081
+ vue.renderSlot(_ctx.$slots, "custom-fields", {
7082
+ fields: $options.children,
7083
+ index: index,
7084
+ model: $data.nested[index],
7085
+ updateValue: $options.updateValuesFromInput
7086
+ })
7087
+ ])
7088
+ ])
7089
+ ]))
7090
+ : vue.createCommentVNode("v-if", true)
7091
+ ], 8 /* PROPS */, _hoisted_4$3))
6937
7092
  }), 128 /* KEYED_FRAGMENT */))
6938
7093
  ]),
6939
7094
  _: 3 /* FORWARDED */
6940
- }, 512 /* NEED_PATCH */)),
6941
- vue.createElementVNode("div", _hoisted_10, [
7095
+ }, 16 /* FULL_PROPS */)),
7096
+ vue.createElementVNode("div", _hoisted_11, [
6942
7097
  vue.renderSlot(_ctx.$slots, "add-input", { add: $options.add }, () => [
6943
7098
  ($props.useInlineActions)
6944
7099
  ? (vue.openBlock(), vue.createElementBlock("div", {
@@ -6946,7 +7101,7 @@
6946
7101
  class: "cursor-pointer items-center q-col-gutter-x-md q-mt-md row",
6947
7102
  onClick: _cache[1] || (_cache[1] = $event => ($options.add()))
6948
7103
  }, [
6949
- vue.createElementVNode("div", _hoisted_11, [
7104
+ vue.createElementVNode("div", _hoisted_12, [
6950
7105
  vue.createVNode(_component_qas_input, {
6951
7106
  class: "disabled no-pointer-events",
6952
7107
  "hide-bottom-space": "",
@@ -6955,7 +7110,7 @@
6955
7110
  onFocus: _cache[0] || (_cache[0] = $event => ($options.add()))
6956
7111
  }, null, 8 /* PROPS */, ["label"])
6957
7112
  ]),
6958
- vue.createElementVNode("div", _hoisted_12, [
7113
+ vue.createElementVNode("div", _hoisted_13, [
6959
7114
  vue.createVNode(_component_qas_btn, {
6960
7115
  color: "green",
6961
7116
  flat: "",
@@ -6964,9 +7119,9 @@
6964
7119
  })
6965
7120
  ])
6966
7121
  ]))
6967
- : (vue.openBlock(), vue.createElementBlock("div", _hoisted_13, [
7122
+ : (vue.openBlock(), vue.createElementBlock("div", _hoisted_14, [
6968
7123
  vue.createVNode(_component_qas_btn, {
6969
- class: "full-width q-py-sm",
7124
+ class: "full-width q-py-md",
6970
7125
  icon: "o_add",
6971
7126
  outline: "",
6972
7127
  onClick: _cache[2] || (_cache[2] = $event => ($options.add()))
@@ -6979,13 +7134,15 @@
6979
7134
  ]))
6980
7135
  ])
6981
7136
  ])
6982
- ])
7137
+ ], 512 /* NEED_PATCH */)
6983
7138
  ], 8 /* PROPS */, _hoisted_1$8))
6984
7139
  }
6985
7140
 
6986
7141
  script$c.render = render$c;
6987
7142
  script$c.__file = "src/components/nested-fields/QasNestedFields.vue";
6988
7143
 
7144
+ const { hasPreviousRoute, history: history$1, getPreviousRoute } = useHistory();
7145
+
6989
7146
  var script$b = {
6990
7147
  name: 'QasPageHeader',
6991
7148
 
@@ -7013,7 +7170,7 @@
7013
7170
 
7014
7171
  computed: {
7015
7172
  hasPreviousRoute () {
7016
- return history$1.hasPreviousRoute
7173
+ return hasPreviousRoute.value
7017
7174
  },
7018
7175
 
7019
7176
  transformedBreadcrumbs () {
@@ -7448,6 +7605,7 @@
7448
7605
  this.fuse = new Fuse__default["default"](value, this.defaultFuseOptions);
7449
7606
 
7450
7607
  this.setResults(this.search);
7608
+ this.updateResultsModel(value);
7451
7609
  },
7452
7610
 
7453
7611
  deep: true
@@ -7464,7 +7622,7 @@
7464
7622
 
7465
7623
  searchResults: {
7466
7624
  handler (value) {
7467
- this.$emit('update:results', value.map(result => result.item || result));
7625
+ this.updateResultsModel(value);
7468
7626
  },
7469
7627
  immediate: true
7470
7628
  }
@@ -7481,6 +7639,10 @@
7481
7639
  this.searchResults = value
7482
7640
  ? this.fuse.search(value)
7483
7641
  : this.list;
7642
+ },
7643
+
7644
+ updateResultsModel (value) {
7645
+ this.$emit('update:results', value.map(result => result.item || result));
7484
7646
  }
7485
7647
  }
7486
7648
  };
@@ -7838,15 +8000,17 @@
7838
8000
  immediate: true
7839
8001
  },
7840
8002
 
7841
- modelValue (value) {
7842
- this.values = [...value];
8003
+ modelValue: {
8004
+ handler (value) {
8005
+ this.values = [...value];
8006
+ },
8007
+
8008
+ immediate: true
7843
8009
  }
7844
8010
  },
7845
8011
 
7846
8012
  created () {
7847
- this.values = [...this.modelValue];
7848
-
7849
- this.handleOptions();
8013
+ this.handleList();
7850
8014
  },
7851
8015
 
7852
8016
  methods: {
@@ -7874,7 +8038,7 @@
7874
8038
  return this.values.includes(item.value) ? this.remove(item) : this.add(item)
7875
8039
  },
7876
8040
 
7877
- handleOptions () {
8041
+ handleList () {
7878
8042
  if (this.modelValue.length) {
7879
8043
  return this.sortList()
7880
8044
  }
@@ -7905,8 +8069,8 @@
7905
8069
 
7906
8070
  sortList () {
7907
8071
  this.sortedList = this.deleteOnly
7908
- ? this.list.filter(option => this.modelValue.includes(option.value))
7909
- : lodashEs.sortBy(this.list, option => !this.modelValue.includes(option.value));
8072
+ ? this.list.filter(item => this.modelValue.includes(item.value))
8073
+ : lodashEs.sortBy(this.list, item => !this.modelValue.includes(item.value));
7910
8074
  },
7911
8075
 
7912
8076
  updateModel (model) {
@@ -8433,8 +8597,8 @@
8433
8597
  },
8434
8598
 
8435
8599
  getFullTableWidth () {
8436
- const tableElemet = this.getTableElement();
8437
- return tableElemet?.getBoundingClientRect?.()?.width
8600
+ const tableElement = this.getTableElement();
8601
+ return tableElement?.getBoundingClientRect?.()?.width
8438
8602
  },
8439
8603
 
8440
8604
  getContainerTableWidth () {
@@ -8827,7 +8991,9 @@
8827
8991
  firstQueue: [],
8828
8992
  optionsList: [],
8829
8993
  secondQueue: [],
8830
- selectedList: []
8994
+ selectedList: [],
8995
+ firstResults: [],
8996
+ secondResults: []
8831
8997
  }
8832
8998
  },
8833
8999
 
@@ -8965,13 +9131,15 @@
8965
9131
  quantity: $data.optionsList.length
8966
9132
  }, null, 8 /* PROPS */, ["label", "quantity"]),
8967
9133
  vue.createVNode(_component_qas_search_box, vue.mergeProps({
8968
- "form-mode": "",
8969
- list: $data.optionsList
9134
+ results: $data.firstResults,
9135
+ "onUpdate:results": _cache[0] || (_cache[0] = $event => (($data.firstResults) = $event)),
9136
+ list: $data.optionsList,
9137
+ outlined: ""
8970
9138
  }, $options.searchBoxProps), {
8971
- default: vue.withCtx(({ results }) => [
9139
+ default: vue.withCtx(() => [
8972
9140
  vue.createVNode(_component_q_list, { separator: "" }, {
8973
9141
  default: vue.withCtx(() => [
8974
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(results, (item, index) => {
9142
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList($data.firstResults, (item, index) => {
8975
9143
  return (vue.openBlock(), vue.createBlock(_component_q_item, {
8976
9144
  key: index,
8977
9145
  class: vue.normalizeClass($options.getItemClass(item, true)),
@@ -8992,11 +9160,11 @@
8992
9160
  }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["class", "onClick"]))
8993
9161
  }), 128 /* KEYED_FRAGMENT */))
8994
9162
  ]),
8995
- _: 2 /* DYNAMIC */
8996
- }, 1024 /* DYNAMIC_SLOTS */)
9163
+ _: 3 /* FORWARDED */
9164
+ })
8997
9165
  ]),
8998
9166
  _: 3 /* FORWARDED */
8999
- }, 16 /* FULL_PROPS */, ["list"])
9167
+ }, 16 /* FULL_PROPS */, ["results", "list"])
9000
9168
  ]),
9001
9169
  vue.createElementVNode("div", {
9002
9170
  class: vue.normalizeClass(["col-12 col-sm-auto items-center justify-center q-col-gutter-md row", $options.actionsClass])
@@ -9009,7 +9177,7 @@
9009
9177
  flat: "",
9010
9178
  icon: "o_arrow_circle_down",
9011
9179
  rounded: "",
9012
- onClick: _cache[0] || (_cache[0] = $event => ($options.setSelectedFromClick(true)))
9180
+ onClick: _cache[1] || (_cache[1] = $event => ($options.setSelectedFromClick(true)))
9013
9181
  }, null, 8 /* PROPS */, ["class", "disabled"]),
9014
9182
  vue.createVNode(_component_q_tooltip, {
9015
9183
  anchor: "top middle",
@@ -9030,7 +9198,7 @@
9030
9198
  flat: "",
9031
9199
  icon: "o_arrow_circle_up",
9032
9200
  rounded: "",
9033
- onClick: _cache[1] || (_cache[1] = $event => ($options.setSelectedFromClick()))
9201
+ onClick: _cache[2] || (_cache[2] = $event => ($options.setSelectedFromClick()))
9034
9202
  }, null, 8 /* PROPS */, ["class", "disabled"]),
9035
9203
  vue.createVNode(_component_q_tooltip, {
9036
9204
  anchor: "bottom middle",
@@ -9049,16 +9217,19 @@
9049
9217
  label: "Selecionadas",
9050
9218
  quantity: $data.selectedList.length
9051
9219
  }, null, 8 /* PROPS */, ["quantity"]),
9052
- vue.createVNode(_component_qas_search_box, vue.mergeProps($options.searchBoxProps, {
9220
+ vue.createVNode(_component_qas_search_box, vue.mergeProps({
9221
+ results: $data.secondResults,
9222
+ "onUpdate:results": _cache[3] || (_cache[3] = $event => (($data.secondResults) = $event))
9223
+ }, $options.searchBoxProps, {
9053
9224
  "empty-list-height": "300px",
9054
- "form-mode": "",
9055
9225
  label: "Selecionadas",
9056
- list: $data.selectedList
9226
+ list: $data.selectedList,
9227
+ outlined: ""
9057
9228
  }), {
9058
- default: vue.withCtx(({ results }) => [
9229
+ default: vue.withCtx(() => [
9059
9230
  vue.createVNode(_component_q_list, { separator: "" }, {
9060
9231
  default: vue.withCtx(() => [
9061
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(results, (item, index) => {
9232
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList($data.secondResults, (item, index) => {
9062
9233
  return (vue.openBlock(), vue.createBlock(_component_q_item, {
9063
9234
  key: index,
9064
9235
  class: vue.normalizeClass($options.getItemClass(item)),
@@ -9079,11 +9250,11 @@
9079
9250
  }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["class", "onClick"]))
9080
9251
  }), 128 /* KEYED_FRAGMENT */))
9081
9252
  ]),
9082
- _: 2 /* DYNAMIC */
9083
- }, 1024 /* DYNAMIC_SLOTS */)
9253
+ _: 3 /* FORWARDED */
9254
+ })
9084
9255
  ]),
9085
9256
  _: 3 /* FORWARDED */
9086
- }, 16 /* FULL_PROPS */, ["list"])
9257
+ }, 16 /* FULL_PROPS */, ["results", "list"])
9087
9258
  ])
9088
9259
  ], 2 /* CLASS */))
9089
9260
  }
@@ -9093,7 +9264,7 @@
9093
9264
 
9094
9265
  var name = "@bildvitta/quasar-ui-asteroid";
9095
9266
  var description = "Asteroid";
9096
- var version$1 = "3.0.0-alpha.2";
9267
+ var version$1 = "3.0.0-beta.2";
9097
9268
  var author = "Bild & Vitta <systemteam@bild.com.br>";
9098
9269
  var license = "MIT";
9099
9270
  var main = "dist/asteroid.cjs.min.js";
@@ -9174,6 +9345,20 @@
9174
9345
  vetur: vetur
9175
9346
  };
9176
9347
 
9348
+ var Test = {
9349
+ name: 'test',
9350
+
9351
+ bind (element, { arg: argument, value }) {
9352
+ if (element && argument) {
9353
+ element.dataset.test = argument;
9354
+ }
9355
+
9356
+ if (element && value) {
9357
+ element.dataset.testKey = value;
9358
+ }
9359
+ }
9360
+ };
9361
+
9177
9362
  const version = packageInfo.version;
9178
9363
 
9179
9364
  function install (app) {
@@ -9235,8 +9420,11 @@
9235
9420
  app.config.globalProperties.$qas = {
9236
9421
  dialog: Dialog,
9237
9422
  error: NotifyError,
9238
- success: NotifySuccess
9423
+ success: NotifySuccess,
9424
+ screen: Screen()
9239
9425
  };
9426
+
9427
+ app.directive(Test.name, Test);
9240
9428
  }
9241
9429
 
9242
9430
  var VuePlugin = /*#__PURE__*/Object.freeze({
@@ -9293,6 +9481,7 @@
9293
9481
  Dialog: Dialog,
9294
9482
  NotifyError: NotifyError,
9295
9483
  NotifySuccess: NotifySuccess,
9484
+ Screen: Screen,
9296
9485
  install: install
9297
9486
  });
9298
9487