vue-laravel-crud 2.0.7 → 2.0.8

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.
@@ -14815,7 +14815,7 @@ var _sfc_render$3 = function render() {
14815
14815
  };
14816
14816
  var _sfc_staticRenderFns$3 = [];
14817
14817
  var __component__$3 = /*#__PURE__*/normalizeComponent(_sfc_main$3, _sfc_render$3, _sfc_staticRenderFns$3, false, null, null, null, null);
14818
- var CrudCustom = __component__$3.exports;var css$2 = "\n.export-format-options[data-v-051e3fd7] {\r\n display: flex;\r\n gap: 1rem;\r\n justify-content: center;\r\n flex-wrap: wrap;\n}\n.export-format-radio[data-v-051e3fd7] {\r\n flex: 1;\r\n min-width: 150px;\r\n padding: 1rem;\r\n border: 2px solid #dee2e6;\r\n border-radius: 0.5rem;\r\n cursor: pointer;\r\n transition: all 0.3s ease;\r\n text-align: center;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n background-color: #fff;\n}\n.export-format-radio[data-v-051e3fd7]:hover {\r\n border-color: #007bff;\r\n background-color: #f8f9fa;\r\n transform: translateY(-2px);\r\n box-shadow: 0 2px 8px rgba(0, 123, 255, 0.2);\n}\n.export-format-radio[data-v-051e3fd7] .custom-control-input:checked ~ .custom-control-label {\r\n color: #007bff;\r\n font-weight: 600;\n}\n.export-format-radio[data-v-051e3fd7] .custom-control-input:checked ~ .custom-control-label::before {\r\n border-color: #007bff;\r\n background-color: #007bff;\n}\n.export-format-radio[data-v-051e3fd7] .custom-control-label {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 100%;\r\n cursor: pointer;\r\n font-size: 1rem;\n}\n.export-format-radio[data-v-051e3fd7] .custom-control-label::before {\r\n margin-right: 0.5rem;\n}\n.export-format-radio[data-v-051e3fd7] svg {\r\n font-size: 1.5rem;\r\n color: #495057;\n}\n.export-format-radio[data-v-051e3fd7] .custom-control-input:checked ~ .custom-control-label svg {\r\n color: #007bff;\n}\r\n";
14818
+ var CrudCustom = __component__$3.exports;var css$2 = "\n.export-format-options[data-v-a032ebce] {\r\n display: flex;\r\n gap: 1rem;\r\n justify-content: center;\r\n flex-wrap: wrap;\n}\n.export-format-radio[data-v-a032ebce] {\r\n flex: 1;\r\n min-width: 150px;\r\n padding: 1rem;\r\n border: 2px solid #dee2e6;\r\n border-radius: 0.5rem;\r\n cursor: pointer;\r\n transition: all 0.3s ease;\r\n text-align: center;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n background-color: #fff;\n}\n.export-format-radio[data-v-a032ebce]:hover {\r\n border-color: #007bff;\r\n background-color: #f8f9fa;\r\n transform: translateY(-2px);\r\n box-shadow: 0 2px 8px rgba(0, 123, 255, 0.2);\n}\n.export-format-radio[data-v-a032ebce] .custom-control-input:checked ~ .custom-control-label {\r\n color: #007bff;\r\n font-weight: 600;\n}\n.export-format-radio[data-v-a032ebce] .custom-control-input:checked ~ .custom-control-label::before {\r\n border-color: #007bff;\r\n background-color: #007bff;\n}\n.export-format-radio[data-v-a032ebce] .custom-control-label {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 100%;\r\n cursor: pointer;\r\n font-size: 1rem;\n}\n.export-format-radio[data-v-a032ebce] .custom-control-label::before {\r\n margin-right: 0.5rem;\n}\n.export-format-radio[data-v-a032ebce] svg {\r\n font-size: 1.5rem;\r\n color: #495057;\n}\n.export-format-radio[data-v-a032ebce] .custom-control-input:checked ~ .custom-control-label svg {\r\n color: #007bff;\n}\r\n";
14819
14819
  n(css$2, {});var _sfc_main$2 = {
14820
14820
  name: 'CrudModals',
14821
14821
  inject: ['modelName', 'title', 'loading', 'validate', 'item', 'getItem', 'messageSave', 'showImport', 'showExport', 'fileImport', 'selectedItems', 'exportFormat', 'saveItem', 'importItems', 'exportItems'],
@@ -14828,6 +14828,10 @@ n(css$2, {});var _sfc_main$2 = {
14828
14828
  }
14829
14829
  // Si no, usar el item inyectado directamente
14830
14830
  return this.item;
14831
+ },
14832
+ // Computed property para manejar loading como objeto reactivo o booleano
14833
+ loadingValue: function loadingValue() {
14834
+ return this.loading && this.loading.value !== undefined ? this.loading.value : this.loading;
14831
14835
  }
14832
14836
  },
14833
14837
  watch: {
@@ -14854,7 +14858,7 @@ var _sfc_render$2 = function render() {
14854
14858
  }
14855
14859
  }, [_c('b-overlay', {
14856
14860
  attrs: {
14857
- "show": _vm.loading,
14861
+ "show": _vm.loadingValue,
14858
14862
  "rounded": "sm"
14859
14863
  }
14860
14864
  }, [_vm.validate ? [_c('form', {
@@ -14888,9 +14892,9 @@ var _sfc_render$2 = function render() {
14888
14892
  "block": "",
14889
14893
  "type": "submit",
14890
14894
  "variant": "success",
14891
- "disabled": _vm.loading
14895
+ "disabled": _vm.loadingValue
14892
14896
  }
14893
- }, [_vm.loading ? _c('b-spinner', {
14897
+ }, [_vm.loadingValue ? _c('b-spinner', {
14894
14898
  attrs: {
14895
14899
  "small": ""
14896
14900
  }
@@ -14922,14 +14926,14 @@ var _sfc_render$2 = function render() {
14922
14926
  "block": "",
14923
14927
  "type": "submit",
14924
14928
  "variant": "success",
14925
- "disabled": _vm.loading
14929
+ "disabled": _vm.loadingValue
14926
14930
  },
14927
14931
  on: {
14928
14932
  "click": function click($event) {
14929
14933
  return _vm.saveItem();
14930
14934
  }
14931
14935
  }
14932
- }, [_vm.loading ? _c('b-spinner', {
14936
+ }, [_vm.loadingValue ? _c('b-spinner', {
14933
14937
  attrs: {
14934
14938
  "small": ""
14935
14939
  }
@@ -14969,7 +14973,7 @@ var _sfc_render$2 = function render() {
14969
14973
  }, [_vm.item ? _vm._t("import", function () {
14970
14974
  return [_c('b-overlay', {
14971
14975
  attrs: {
14972
- "show": _vm.loading,
14976
+ "show": _vm.loadingValue,
14973
14977
  "rounded": "sm"
14974
14978
  }
14975
14979
  }, [_c('b-form-file', {
@@ -14991,14 +14995,14 @@ var _sfc_render$2 = function render() {
14991
14995
  }, [_c('b-button', {
14992
14996
  attrs: {
14993
14997
  "variant": "info",
14994
- "disabled": _vm.loading
14998
+ "disabled": _vm.loadingValue
14995
14999
  },
14996
15000
  on: {
14997
15001
  "click": function click($event) {
14998
15002
  return _vm.importItems();
14999
15003
  }
15000
15004
  }
15001
- }, [_c('b-icon-cloud-upload'), _vm._v(" " + _vm._s(_vm.loading ? "Cargando..." : "Importar") + " ")], 1)], 1)], 1)];
15005
+ }, [_c('b-icon-cloud-upload'), _vm._v(" " + _vm._s(_vm.loadingValue ? "Cargando..." : "Importar") + " ")], 1)], 1)], 1)];
15002
15006
  }, {
15003
15007
  "item": _vm.item
15004
15008
  }) : _vm._e()], 2) : _vm._e(), _vm.showExport ? _c('b-modal', {
@@ -15010,7 +15014,7 @@ var _sfc_render$2 = function render() {
15010
15014
  }, [_vm.item ? _vm._t("export", function () {
15011
15015
  return [_c('b-overlay', {
15012
15016
  attrs: {
15013
- "show": _vm.loading,
15017
+ "show": _vm.loadingValue,
15014
15018
  "rounded": "sm"
15015
15019
  }
15016
15020
  }, [_vm.selectedItems.length ? _c('p', [_vm._v("Se exportará " + _vm._s(_vm.selectedItems.length) + " elementos.")]) : _c('p', [_vm._v("Se exportará la consulta actual.")]), _c('b-form-group', {
@@ -15053,20 +15057,20 @@ var _sfc_render$2 = function render() {
15053
15057
  }, [_c('b-button', {
15054
15058
  attrs: {
15055
15059
  "variant": "info",
15056
- "disabled": _vm.loading
15060
+ "disabled": _vm.loadingValue
15057
15061
  },
15058
15062
  on: {
15059
15063
  "click": function click($event) {
15060
15064
  return _vm.exportItems();
15061
15065
  }
15062
15066
  }
15063
- }, [_c('b-icon-cloud-upload'), _vm._v(" " + _vm._s(_vm.loading ? "Cargando..." : "Exportar") + " ")], 1)], 1)], 1)];
15067
+ }, [_c('b-icon-cloud-upload'), _vm._v(" " + _vm._s(_vm.loadingValue ? "Cargando..." : "Exportar") + " ")], 1)], 1)], 1)];
15064
15068
  }, {
15065
15069
  "item": _vm.item
15066
15070
  }) : _vm._e()], 2) : _vm._e()], 1);
15067
15071
  };
15068
15072
  var _sfc_staticRenderFns$2 = [];
15069
- var __component__$2 = /*#__PURE__*/normalizeComponent(_sfc_main$2, _sfc_render$2, _sfc_staticRenderFns$2, false, null, "051e3fd7", null, null);
15073
+ var __component__$2 = /*#__PURE__*/normalizeComponent(_sfc_main$2, _sfc_render$2, _sfc_staticRenderFns$2, false, null, "a032ebce", null, null);
15070
15074
  var CrudModals = __component__$2.exports;var vueInfiniteLoading = {exports: {}};/*!
15071
15075
  * vue-infinite-loading v2.4.5
15072
15076
  * (c) 2016-2020 PeachScript
@@ -21996,6 +22000,9 @@ axios.default = axios;var crudApi = {
21996
22000
  },
21997
22001
  createItem: function createItem() {
21998
22002
  var _this6 = this;
22003
+ // Asegurar que loading esté en false al abrir el modal
22004
+ this.loading = false;
22005
+
21999
22006
  // Hacer copia profunda del objeto para asegurar reactividad
22000
22007
  var itemCopy = JSON.parse(JSON.stringify(this.itemDefault));
22001
22008
  if (this.useVuexORM && !this.vuexLocalforage) {
@@ -22034,6 +22041,8 @@ axios.default = axios;var crudApi = {
22034
22041
  updateItem: function updateItem(id) {
22035
22042
  var _this7 = this;
22036
22043
  var itemIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
22044
+ // Asegurar que loading esté en false al abrir el modal
22045
+ this.loading = false;
22037
22046
  var item;
22038
22047
  if (itemIndex == null) {
22039
22048
  item = this.items.find(function (it) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vue-laravel-crud",
3
- "version": "2.0.7",
3
+ "version": "2.0.8",
4
4
  "type": "module",
5
5
  "description": "",
6
6
  "homepage": "https://github.com/clonixdev/vue-laravel-crud",
@@ -2,7 +2,7 @@
2
2
  <div>
3
3
  <!-- Modal de formulario -->
4
4
  <b-modal :id="'modal-form-item-' + modelName" hide-footer size="xl" :title="title" no-close-on-backdrop>
5
- <b-overlay :show="loading" rounded="sm">
5
+ <b-overlay :show="loadingValue" rounded="sm">
6
6
  <template v-if="validate">
7
7
  <form @submit="saveItem">
8
8
  <template v-if="reactiveItem">
@@ -12,8 +12,8 @@
12
12
  </b-form-group>
13
13
  </slot>
14
14
  </template>
15
- <b-button block type="submit" variant="success" :disabled="loading">
16
- <b-spinner small v-if="loading"></b-spinner>{{ messageSave }}
15
+ <b-button block type="submit" variant="success" :disabled="loadingValue">
16
+ <b-spinner small v-if="loadingValue"></b-spinner>{{ messageSave }}
17
17
  </b-button>
18
18
  </form>
19
19
  </template>
@@ -25,8 +25,8 @@
25
25
  </b-form-group>
26
26
  </slot>
27
27
  </template>
28
- <b-button block type="submit" variant="success" :disabled="loading" @click="saveItem()">
29
- <b-spinner small v-if="loading"></b-spinner>{{ messageSave }}
28
+ <b-button block type="submit" variant="success" :disabled="loadingValue" @click="saveItem()">
29
+ <b-spinner small v-if="loadingValue"></b-spinner>{{ messageSave }}
30
30
  </b-button>
31
31
  </template>
32
32
  </b-overlay>
@@ -51,13 +51,13 @@
51
51
  <!-- Modal de importación -->
52
52
  <b-modal ref="modal-import" title="Importar" hide-footer v-if="showImport">
53
53
  <slot name="import" v-bind:item="item" v-if="item">
54
- <b-overlay :show="loading" rounded="sm">
54
+ <b-overlay :show="loadingValue" rounded="sm">
55
55
  <b-form-file v-model="fileImport" :state="Boolean(fileImport)" browse-text="Explorar"
56
56
  placeholder="Importar..." drop-placeholder="Arrastrar Archivo aquí..."></b-form-file>
57
57
  <div class="text-center mt-3">
58
- <b-button variant="info" v-on:click="importItems()" :disabled="loading">
58
+ <b-button variant="info" v-on:click="importItems()" :disabled="loadingValue">
59
59
  <b-icon-cloud-upload></b-icon-cloud-upload>
60
- {{ loading ? "Cargando..." : "Importar" }}
60
+ {{ loadingValue ? "Cargando..." : "Importar" }}
61
61
  </b-button>
62
62
  </div>
63
63
  </b-overlay>
@@ -67,7 +67,7 @@
67
67
  <!-- Modal de exportación -->
68
68
  <b-modal ref="modal-export" title="Exportar" hide-footer v-if="showExport">
69
69
  <slot name="export" v-bind:item="item" v-if="item">
70
- <b-overlay :show="loading" rounded="sm">
70
+ <b-overlay :show="loadingValue" rounded="sm">
71
71
 
72
72
  <p v-if="selectedItems.length">Se exportará {{ selectedItems.length }} elementos.</p>
73
73
  <p v-else>Se exportará la consulta actual.</p>
@@ -94,9 +94,9 @@
94
94
  </b-form-group>
95
95
 
96
96
  <div class="text-center mt-3">
97
- <b-button variant="info" v-on:click="exportItems()" :disabled="loading">
97
+ <b-button variant="info" v-on:click="exportItems()" :disabled="loadingValue">
98
98
  <b-icon-cloud-upload></b-icon-cloud-upload>
99
- {{ loading ? "Cargando..." : "Exportar" }}
99
+ {{ loadingValue ? "Cargando..." : "Exportar" }}
100
100
  </b-button>
101
101
  </div>
102
102
  </b-overlay>
@@ -134,6 +134,10 @@ export default {
134
134
  }
135
135
  // Si no, usar el item inyectado directamente
136
136
  return this.item;
137
+ },
138
+ // Computed property para manejar loading como objeto reactivo o booleano
139
+ loadingValue() {
140
+ return this.loading && this.loading.value !== undefined ? this.loading.value : this.loading;
137
141
  }
138
142
  },
139
143
  watch: {