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-
|
|
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.
|
|
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.
|
|
14895
|
+
"disabled": _vm.loadingValue
|
|
14892
14896
|
}
|
|
14893
|
-
}, [_vm.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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, "
|
|
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
|
@@ -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="
|
|
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="
|
|
16
|
-
<b-spinner small v-if="
|
|
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="
|
|
29
|
-
<b-spinner small v-if="
|
|
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="
|
|
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="
|
|
58
|
+
<b-button variant="info" v-on:click="importItems()" :disabled="loadingValue">
|
|
59
59
|
<b-icon-cloud-upload></b-icon-cloud-upload>
|
|
60
|
-
{{
|
|
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="
|
|
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="
|
|
97
|
+
<b-button variant="info" v-on:click="exportItems()" :disabled="loadingValue">
|
|
98
98
|
<b-icon-cloud-upload></b-icon-cloud-upload>
|
|
99
|
-
{{
|
|
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: {
|