vue-laravel-crud 2.0.5 → 2.0.7
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.
- package/dist/vue-laravel-crud.esm.js +1572 -337
- package/dist/vue-laravel-crud.min.js +3 -3
- package/dist/vue-laravel-crud.ssr.js +1592 -356
- package/package.json +1 -1
- package/src/ItemCard.vue +45 -4
- package/src/components/CrudCards.vue +131 -98
- package/src/components/CrudCustom.vue +58 -29
- package/src/components/CrudFilters.vue +319 -167
- package/src/components/CrudHeader.vue +154 -142
- package/src/components/CrudKanban.vue +36 -20
- package/src/components/CrudModals.vue +132 -25
- package/src/components/CrudPagination.vue +207 -200
- package/src/components/CrudTable.vue +103 -70
- package/src/components/kanban/KanbanBoard.vue +5 -1
- package/src/components/kanban/KanbanCard.vue +45 -4
- package/src/components/kanban/KanbanColumn.vue +6 -2
- package/src/components/table/TableCell.vue +66 -20
- package/src/components/table/TableHeader.vue +21 -6
- package/src/components/table/TableRow.vue +5 -1
- package/src/vue-laravel-crud.vue +718 -697
|
@@ -93,9 +93,115 @@ function normalizeComponent (
|
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
95
|
|
|
96
|
+
// Componente funcional para renderizar filtros custom con callback
|
|
97
|
+
const RenderCustomFilter = {
|
|
98
|
+
functional: true,
|
|
99
|
+
props: {
|
|
100
|
+
renderFunction: {
|
|
101
|
+
type: Function,
|
|
102
|
+
required: true
|
|
103
|
+
},
|
|
104
|
+
customFilter: {
|
|
105
|
+
type: Object,
|
|
106
|
+
required: true
|
|
107
|
+
},
|
|
108
|
+
filter: {
|
|
109
|
+
type: Array,
|
|
110
|
+
default: () => []
|
|
111
|
+
},
|
|
112
|
+
internalFilterByProp: {
|
|
113
|
+
type: Function,
|
|
114
|
+
required: true
|
|
115
|
+
},
|
|
116
|
+
getFilterForColumn: {
|
|
117
|
+
type: Function,
|
|
118
|
+
required: true
|
|
119
|
+
},
|
|
120
|
+
onChangeFilter: {
|
|
121
|
+
type: Function,
|
|
122
|
+
required: true
|
|
123
|
+
}
|
|
124
|
+
},
|
|
125
|
+
render(h, context) {
|
|
126
|
+
const {
|
|
127
|
+
renderFunction,
|
|
128
|
+
customFilter,
|
|
129
|
+
filter,
|
|
130
|
+
internalFilterByProp,
|
|
131
|
+
getFilterForColumn,
|
|
132
|
+
onChangeFilter
|
|
133
|
+
} = context.props;
|
|
134
|
+
return renderFunction(h, {
|
|
135
|
+
column: customFilter,
|
|
136
|
+
filter: filter,
|
|
137
|
+
internalFilterByProp: internalFilterByProp,
|
|
138
|
+
getFilterForColumn: getFilterForColumn,
|
|
139
|
+
onChangeFilter: onChangeFilter
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
};
|
|
96
143
|
const _sfc_main$f = {
|
|
97
144
|
name: 'CrudFilters',
|
|
98
|
-
|
|
145
|
+
components: {
|
|
146
|
+
RenderCustomFilter
|
|
147
|
+
},
|
|
148
|
+
inject: ['columns', 'customFilters', 'isColumnHasFilter', 'isCustomFilterEnabled', 'filter', 'internalFilterByProp', 'optionsLoaded', 'onChangeFilter', 'resetFilters', 'setupFilters', 'internalFilters'],
|
|
149
|
+
methods: {
|
|
150
|
+
// Método helper para obtener el filtro de forma segura, creándolo si no existe
|
|
151
|
+
getFilterForColumn(column) {
|
|
152
|
+
let filter = this.internalFilterByProp(column.prop);
|
|
153
|
+
|
|
154
|
+
// Si el filtro no existe, intentar inicializar los filtros
|
|
155
|
+
if (!filter) {
|
|
156
|
+
// Verificar si hay filtros inicializados
|
|
157
|
+
if (this.internalFilters && this.internalFilters.length === 0) {
|
|
158
|
+
this.setupFilters();
|
|
159
|
+
// Intentar obtener el filtro nuevamente después de inicializar
|
|
160
|
+
filter = this.internalFilterByProp(column.prop);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
// Si aún no existe, crear un objeto temporal para evitar errores
|
|
165
|
+
if (!filter) {
|
|
166
|
+
return {
|
|
167
|
+
value: null
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
return filter;
|
|
171
|
+
},
|
|
172
|
+
// Método helper específico para campos de fecha (from)
|
|
173
|
+
getFilterForDateFrom(column) {
|
|
174
|
+
const filter = this.internalFilterByProp(column.prop + '_from');
|
|
175
|
+
if (!filter) {
|
|
176
|
+
if (this.internalFilters && this.internalFilters.length === 0) {
|
|
177
|
+
this.setupFilters();
|
|
178
|
+
return this.internalFilterByProp(column.prop + '_from') || {
|
|
179
|
+
value: null
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
return {
|
|
183
|
+
value: null
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
return filter;
|
|
187
|
+
},
|
|
188
|
+
// Método helper específico para campos de fecha (to)
|
|
189
|
+
getFilterForDateTo(column) {
|
|
190
|
+
const filter = this.internalFilterByProp(column.prop + '_to');
|
|
191
|
+
if (!filter) {
|
|
192
|
+
if (this.internalFilters && this.internalFilters.length === 0) {
|
|
193
|
+
this.setupFilters();
|
|
194
|
+
return this.internalFilterByProp(column.prop + '_to') || {
|
|
195
|
+
value: null
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
return {
|
|
199
|
+
value: null
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
return filter;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
99
205
|
};
|
|
100
206
|
var _sfc_render$f = function render() {
|
|
101
207
|
var _vm = this,
|
|
@@ -105,15 +211,15 @@ var _sfc_render$f = function render() {
|
|
|
105
211
|
}, [_vm._l(_vm.columns, function (column, indexc) {
|
|
106
212
|
return _c('div', {
|
|
107
213
|
key: indexc
|
|
108
|
-
}, [_vm.isColumnHasFilter(column) ? _c('div', [_vm.
|
|
214
|
+
}, [_vm.isColumnHasFilter(column) ? _c('div', [_vm._t('sidebar-filter-' + column.prop, function () {
|
|
109
215
|
return [column.type == 'boolean' ? _c('div', {
|
|
110
216
|
staticClass: "form-group"
|
|
111
217
|
}, [_c('label', [_vm._v(_vm._s(column.label))]), _c('select', {
|
|
112
218
|
directives: [{
|
|
113
219
|
name: "model",
|
|
114
220
|
rawName: "v-model",
|
|
115
|
-
value: _vm.
|
|
116
|
-
expression: "
|
|
221
|
+
value: _vm.getFilterForColumn(column).value,
|
|
222
|
+
expression: "getFilterForColumn(column).value"
|
|
117
223
|
}],
|
|
118
224
|
staticClass: "form-control",
|
|
119
225
|
on: {
|
|
@@ -124,7 +230,7 @@ var _sfc_render$f = function render() {
|
|
|
124
230
|
var val = "_value" in o ? o._value : o.value;
|
|
125
231
|
return val;
|
|
126
232
|
});
|
|
127
|
-
_vm.$set(_vm.
|
|
233
|
+
_vm.$set(_vm.getFilterForColumn(column), "value", $event.target.multiple ? $$selectedVal : $$selectedVal[0]);
|
|
128
234
|
}, function ($event) {
|
|
129
235
|
return _vm.onChangeFilter($event);
|
|
130
236
|
}]
|
|
@@ -155,11 +261,11 @@ var _sfc_render$f = function render() {
|
|
|
155
261
|
"locale": "es"
|
|
156
262
|
},
|
|
157
263
|
model: {
|
|
158
|
-
value: _vm.
|
|
264
|
+
value: _vm.getFilterForDateFrom(column).value,
|
|
159
265
|
callback: function ($$v) {
|
|
160
|
-
_vm.$set(_vm.
|
|
266
|
+
_vm.$set(_vm.getFilterForDateFrom(column), "value", $$v);
|
|
161
267
|
},
|
|
162
|
-
expression: "
|
|
268
|
+
expression: "getFilterForDateFrom(column).value\n "
|
|
163
269
|
}
|
|
164
270
|
})], 1), _c('div', {
|
|
165
271
|
staticClass: "col-6"
|
|
@@ -171,20 +277,90 @@ var _sfc_render$f = function render() {
|
|
|
171
277
|
"locale": "es"
|
|
172
278
|
},
|
|
173
279
|
model: {
|
|
174
|
-
value: _vm.
|
|
280
|
+
value: _vm.getFilterForDateTo(column).value,
|
|
175
281
|
callback: function ($$v) {
|
|
176
|
-
_vm.$set(_vm.
|
|
282
|
+
_vm.$set(_vm.getFilterForDateTo(column), "value", $$v);
|
|
177
283
|
},
|
|
178
|
-
expression: "
|
|
284
|
+
expression: "getFilterForDateTo(column).value\n "
|
|
179
285
|
}
|
|
180
|
-
})], 1)])]) : column.type == '
|
|
286
|
+
})], 1)])]) : column.type == 'number' || column.type == 'money' ? _c('div', {
|
|
181
287
|
staticClass: "form-group"
|
|
182
|
-
}, [_c('label', [_vm._v(_vm._s(column.label))]),
|
|
288
|
+
}, [_c('label', [_vm._v(_vm._s(column.label))]), _c('div', {
|
|
289
|
+
staticClass: "row"
|
|
290
|
+
}, [_c('div', {
|
|
291
|
+
staticClass: "col-6"
|
|
292
|
+
}, [_c('input', {
|
|
293
|
+
directives: [{
|
|
294
|
+
name: "model",
|
|
295
|
+
rawName: "v-model.number",
|
|
296
|
+
value: _vm.getFilterForDateFrom(column).value,
|
|
297
|
+
expression: "getFilterForDateFrom(column).value",
|
|
298
|
+
modifiers: {
|
|
299
|
+
"number": true
|
|
300
|
+
}
|
|
301
|
+
}],
|
|
302
|
+
staticClass: "form-control",
|
|
303
|
+
attrs: {
|
|
304
|
+
"type": "number",
|
|
305
|
+
"step": column.type == 'money' ? '0.01' : '1',
|
|
306
|
+
"placeholder": "Desde"
|
|
307
|
+
},
|
|
308
|
+
domProps: {
|
|
309
|
+
"value": _vm.getFilterForDateFrom(column).value
|
|
310
|
+
},
|
|
311
|
+
on: {
|
|
312
|
+
"change": function ($event) {
|
|
313
|
+
return _vm.onChangeFilter($event);
|
|
314
|
+
},
|
|
315
|
+
"input": function ($event) {
|
|
316
|
+
if ($event.target.composing) return;
|
|
317
|
+
_vm.$set(_vm.getFilterForDateFrom(column), "value", _vm._n($event.target.value));
|
|
318
|
+
},
|
|
319
|
+
"blur": function ($event) {
|
|
320
|
+
return _vm.$forceUpdate();
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
})]), _c('div', {
|
|
324
|
+
staticClass: "col-6"
|
|
325
|
+
}, [_c('input', {
|
|
326
|
+
directives: [{
|
|
327
|
+
name: "model",
|
|
328
|
+
rawName: "v-model.number",
|
|
329
|
+
value: _vm.getFilterForDateTo(column).value,
|
|
330
|
+
expression: "getFilterForDateTo(column).value",
|
|
331
|
+
modifiers: {
|
|
332
|
+
"number": true
|
|
333
|
+
}
|
|
334
|
+
}],
|
|
335
|
+
staticClass: "form-control",
|
|
336
|
+
attrs: {
|
|
337
|
+
"type": "number",
|
|
338
|
+
"step": column.type == 'money' ? '0.01' : '1',
|
|
339
|
+
"placeholder": "Hasta"
|
|
340
|
+
},
|
|
341
|
+
domProps: {
|
|
342
|
+
"value": _vm.getFilterForDateTo(column).value
|
|
343
|
+
},
|
|
344
|
+
on: {
|
|
345
|
+
"change": function ($event) {
|
|
346
|
+
return _vm.onChangeFilter($event);
|
|
347
|
+
},
|
|
348
|
+
"input": function ($event) {
|
|
349
|
+
if ($event.target.composing) return;
|
|
350
|
+
_vm.$set(_vm.getFilterForDateTo(column), "value", _vm._n($event.target.value));
|
|
351
|
+
},
|
|
352
|
+
"blur": function ($event) {
|
|
353
|
+
return _vm.$forceUpdate();
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
})])])]) : column.type == 'state' ? _c('div', {
|
|
357
|
+
staticClass: "form-group"
|
|
358
|
+
}, [_c('label', [_vm._v(_vm._s(column.label))]), column.options && Array.isArray(column.options) ? _c('select', {
|
|
183
359
|
directives: [{
|
|
184
360
|
name: "model",
|
|
185
361
|
rawName: "v-model",
|
|
186
|
-
value: _vm.
|
|
187
|
-
expression: "
|
|
362
|
+
value: _vm.getFilterForColumn(column).value,
|
|
363
|
+
expression: "getFilterForColumn(column).value"
|
|
188
364
|
}],
|
|
189
365
|
staticClass: "form-control",
|
|
190
366
|
on: {
|
|
@@ -195,7 +371,7 @@ var _sfc_render$f = function render() {
|
|
|
195
371
|
var val = "_value" in o ? o._value : o.value;
|
|
196
372
|
return val;
|
|
197
373
|
});
|
|
198
|
-
_vm.$set(_vm.
|
|
374
|
+
_vm.$set(_vm.getFilterForColumn(column), "value", $event.target.multiple ? $$selectedVal : $$selectedVal[0]);
|
|
199
375
|
}, function ($event) {
|
|
200
376
|
return _vm.onChangeFilter($event);
|
|
201
377
|
}]
|
|
@@ -206,19 +382,19 @@ var _sfc_render$f = function render() {
|
|
|
206
382
|
}
|
|
207
383
|
}), _vm._l(column.options, function (option) {
|
|
208
384
|
return _c('option', {
|
|
209
|
-
key: option.
|
|
385
|
+
key: option.value || option.id,
|
|
210
386
|
domProps: {
|
|
211
|
-
"value": option.
|
|
387
|
+
"value": option.value
|
|
212
388
|
}
|
|
213
|
-
}, [_vm._v(" " + _vm._s(option.text
|
|
389
|
+
}, [_vm._v(" " + _vm._s(option.text) + " ")]);
|
|
214
390
|
})], 2) : _vm._e()]) : column.type == 'array' ? _c('div', {
|
|
215
391
|
staticClass: "form-group"
|
|
216
|
-
}, [_c('label', [_vm._v(_vm._s(column.label))]),
|
|
392
|
+
}, [_c('label', [_vm._v(_vm._s(column.label))]), column.options && Array.isArray(column.options) ? _c('select', {
|
|
217
393
|
directives: [{
|
|
218
394
|
name: "model",
|
|
219
395
|
rawName: "v-model",
|
|
220
|
-
value: _vm.
|
|
221
|
-
expression: "
|
|
396
|
+
value: _vm.getFilterForColumn(column).value,
|
|
397
|
+
expression: "getFilterForColumn(column).value"
|
|
222
398
|
}],
|
|
223
399
|
staticClass: "form-control",
|
|
224
400
|
on: {
|
|
@@ -229,7 +405,7 @@ var _sfc_render$f = function render() {
|
|
|
229
405
|
var val = "_value" in o ? o._value : o.value;
|
|
230
406
|
return val;
|
|
231
407
|
});
|
|
232
|
-
_vm.$set(_vm.
|
|
408
|
+
_vm.$set(_vm.getFilterForColumn(column), "value", $event.target.multiple ? $$selectedVal : $$selectedVal[0]);
|
|
233
409
|
}, function ($event) {
|
|
234
410
|
return _vm.onChangeFilter($event);
|
|
235
411
|
}]
|
|
@@ -238,32 +414,32 @@ var _sfc_render$f = function render() {
|
|
|
238
414
|
attrs: {
|
|
239
415
|
"value": ""
|
|
240
416
|
}
|
|
241
|
-
}),
|
|
417
|
+
}), _vm._l(column.options, function (option) {
|
|
242
418
|
return _c('option', {
|
|
243
|
-
key: option.
|
|
419
|
+
key: option.value || option.id,
|
|
244
420
|
domProps: {
|
|
245
|
-
"value": option.
|
|
421
|
+
"value": option.value
|
|
246
422
|
}
|
|
247
|
-
}, [_vm._v(" " + _vm._s(option.text
|
|
248
|
-
})
|
|
423
|
+
}, [_vm._v(" " + _vm._s(option.text) + " ")]);
|
|
424
|
+
})], 2) : _vm._e()]) : _c('div', {
|
|
249
425
|
staticClass: "form-group"
|
|
250
426
|
}, [_c('label', [_vm._v(_vm._s(column.label))]), _c('input', {
|
|
251
427
|
directives: [{
|
|
252
428
|
name: "model",
|
|
253
429
|
rawName: "v-model.lazy",
|
|
254
|
-
value: _vm.
|
|
255
|
-
expression: "
|
|
430
|
+
value: _vm.getFilterForColumn(column).value,
|
|
431
|
+
expression: "getFilterForColumn(column).value",
|
|
256
432
|
modifiers: {
|
|
257
433
|
"lazy": true
|
|
258
434
|
}
|
|
259
435
|
}],
|
|
260
436
|
staticClass: "form-control",
|
|
261
437
|
domProps: {
|
|
262
|
-
"value": _vm.
|
|
438
|
+
"value": _vm.getFilterForColumn(column).value
|
|
263
439
|
},
|
|
264
440
|
on: {
|
|
265
441
|
"change": [function ($event) {
|
|
266
|
-
_vm.$set(_vm.
|
|
442
|
+
_vm.$set(_vm.getFilterForColumn(column), "value", $event.target.value);
|
|
267
443
|
}, function ($event) {
|
|
268
444
|
return _vm.onChangeFilter($event);
|
|
269
445
|
}]
|
|
@@ -272,8 +448,261 @@ var _sfc_render$f = function render() {
|
|
|
272
448
|
}, {
|
|
273
449
|
"column": column,
|
|
274
450
|
"filter": _vm.filter,
|
|
275
|
-
"internalFilterByProp": _vm.internalFilterByProp
|
|
276
|
-
|
|
451
|
+
"internalFilterByProp": _vm.internalFilterByProp,
|
|
452
|
+
"getFilterForColumn": _vm.getFilterForColumn
|
|
453
|
+
})], 2) : _vm._e()]);
|
|
454
|
+
}), _vm._l(_vm.customFilters, function (customFilter, indexcf) {
|
|
455
|
+
return _c('div', {
|
|
456
|
+
key: 'custom-' + indexcf
|
|
457
|
+
}, [_vm.isCustomFilterEnabled(customFilter) ? _c('div', [_vm._t('sidebar-filter-custom-' + customFilter.prop, function () {
|
|
458
|
+
return [typeof customFilter.type === 'function' ? _c('RenderCustomFilter', {
|
|
459
|
+
attrs: {
|
|
460
|
+
"render-function": customFilter.type,
|
|
461
|
+
"custom-filter": customFilter,
|
|
462
|
+
"filter": _vm.filter,
|
|
463
|
+
"internal-filter-by-prop": _vm.internalFilterByProp,
|
|
464
|
+
"get-filter-for-column": _vm.getFilterForColumn,
|
|
465
|
+
"on-change-filter": _vm.onChangeFilter
|
|
466
|
+
}
|
|
467
|
+
}) : [customFilter.type == 'boolean' ? _c('div', {
|
|
468
|
+
staticClass: "form-group"
|
|
469
|
+
}, [_c('label', [_vm._v(_vm._s(customFilter.label))]), _c('select', {
|
|
470
|
+
directives: [{
|
|
471
|
+
name: "model",
|
|
472
|
+
rawName: "v-model",
|
|
473
|
+
value: _vm.getFilterForColumn(customFilter).value,
|
|
474
|
+
expression: "getFilterForColumn(customFilter).value"
|
|
475
|
+
}],
|
|
476
|
+
staticClass: "form-control",
|
|
477
|
+
on: {
|
|
478
|
+
"change": [function ($event) {
|
|
479
|
+
var $$selectedVal = Array.prototype.filter.call($event.target.options, function (o) {
|
|
480
|
+
return o.selected;
|
|
481
|
+
}).map(function (o) {
|
|
482
|
+
var val = "_value" in o ? o._value : o.value;
|
|
483
|
+
return val;
|
|
484
|
+
});
|
|
485
|
+
_vm.$set(_vm.getFilterForColumn(customFilter), "value", $event.target.multiple ? $$selectedVal : $$selectedVal[0]);
|
|
486
|
+
}, function ($event) {
|
|
487
|
+
return _vm.onChangeFilter($event);
|
|
488
|
+
}]
|
|
489
|
+
}
|
|
490
|
+
}, [_c('option', {
|
|
491
|
+
attrs: {
|
|
492
|
+
"value": ""
|
|
493
|
+
}
|
|
494
|
+
}), _c('option', {
|
|
495
|
+
attrs: {
|
|
496
|
+
"value": "1"
|
|
497
|
+
}
|
|
498
|
+
}, [_vm._v("Sí")]), _c('option', {
|
|
499
|
+
attrs: {
|
|
500
|
+
"value": "0"
|
|
501
|
+
}
|
|
502
|
+
}, [_vm._v("No")])])]) : customFilter.type == 'date' ? _c('div', {
|
|
503
|
+
staticClass: "form-group"
|
|
504
|
+
}, [_c('label', [_vm._v(_vm._s(customFilter.label))]), _c('div', {
|
|
505
|
+
staticClass: "row"
|
|
506
|
+
}, [_c('div', {
|
|
507
|
+
staticClass: "col-6"
|
|
508
|
+
}, [_c('b-form-datepicker', {
|
|
509
|
+
attrs: {
|
|
510
|
+
"today-button": "",
|
|
511
|
+
"reset-button": "",
|
|
512
|
+
"close-button": "",
|
|
513
|
+
"locale": "es"
|
|
514
|
+
},
|
|
515
|
+
model: {
|
|
516
|
+
value: _vm.getFilterForDateFrom(customFilter).value,
|
|
517
|
+
callback: function ($$v) {
|
|
518
|
+
_vm.$set(_vm.getFilterForDateFrom(customFilter), "value", $$v);
|
|
519
|
+
},
|
|
520
|
+
expression: "getFilterForDateFrom(customFilter).value\n "
|
|
521
|
+
}
|
|
522
|
+
})], 1), _c('div', {
|
|
523
|
+
staticClass: "col-6"
|
|
524
|
+
}, [_c('b-form-datepicker', {
|
|
525
|
+
attrs: {
|
|
526
|
+
"today-button": "",
|
|
527
|
+
"reset-button": "",
|
|
528
|
+
"close-button": "",
|
|
529
|
+
"locale": "es"
|
|
530
|
+
},
|
|
531
|
+
model: {
|
|
532
|
+
value: _vm.getFilterForDateTo(customFilter).value,
|
|
533
|
+
callback: function ($$v) {
|
|
534
|
+
_vm.$set(_vm.getFilterForDateTo(customFilter), "value", $$v);
|
|
535
|
+
},
|
|
536
|
+
expression: "getFilterForDateTo(customFilter).value\n "
|
|
537
|
+
}
|
|
538
|
+
})], 1)])]) : customFilter.type == 'number' || customFilter.type == 'money' ? _c('div', {
|
|
539
|
+
staticClass: "form-group"
|
|
540
|
+
}, [_c('label', [_vm._v(_vm._s(customFilter.label))]), _c('div', {
|
|
541
|
+
staticClass: "row"
|
|
542
|
+
}, [_c('div', {
|
|
543
|
+
staticClass: "col-6"
|
|
544
|
+
}, [_c('input', {
|
|
545
|
+
directives: [{
|
|
546
|
+
name: "model",
|
|
547
|
+
rawName: "v-model.number",
|
|
548
|
+
value: _vm.getFilterForDateFrom(customFilter).value,
|
|
549
|
+
expression: "getFilterForDateFrom(customFilter).value",
|
|
550
|
+
modifiers: {
|
|
551
|
+
"number": true
|
|
552
|
+
}
|
|
553
|
+
}],
|
|
554
|
+
staticClass: "form-control",
|
|
555
|
+
attrs: {
|
|
556
|
+
"type": "number",
|
|
557
|
+
"step": customFilter.type == 'money' ? '0.01' : '1',
|
|
558
|
+
"placeholder": "Desde"
|
|
559
|
+
},
|
|
560
|
+
domProps: {
|
|
561
|
+
"value": _vm.getFilterForDateFrom(customFilter).value
|
|
562
|
+
},
|
|
563
|
+
on: {
|
|
564
|
+
"change": function ($event) {
|
|
565
|
+
return _vm.onChangeFilter($event);
|
|
566
|
+
},
|
|
567
|
+
"input": function ($event) {
|
|
568
|
+
if ($event.target.composing) return;
|
|
569
|
+
_vm.$set(_vm.getFilterForDateFrom(customFilter), "value", _vm._n($event.target.value));
|
|
570
|
+
},
|
|
571
|
+
"blur": function ($event) {
|
|
572
|
+
return _vm.$forceUpdate();
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
})]), _c('div', {
|
|
576
|
+
staticClass: "col-6"
|
|
577
|
+
}, [_c('input', {
|
|
578
|
+
directives: [{
|
|
579
|
+
name: "model",
|
|
580
|
+
rawName: "v-model.number",
|
|
581
|
+
value: _vm.getFilterForDateTo(customFilter).value,
|
|
582
|
+
expression: "getFilterForDateTo(customFilter).value",
|
|
583
|
+
modifiers: {
|
|
584
|
+
"number": true
|
|
585
|
+
}
|
|
586
|
+
}],
|
|
587
|
+
staticClass: "form-control",
|
|
588
|
+
attrs: {
|
|
589
|
+
"type": "number",
|
|
590
|
+
"step": customFilter.type == 'money' ? '0.01' : '1',
|
|
591
|
+
"placeholder": "Hasta"
|
|
592
|
+
},
|
|
593
|
+
domProps: {
|
|
594
|
+
"value": _vm.getFilterForDateTo(customFilter).value
|
|
595
|
+
},
|
|
596
|
+
on: {
|
|
597
|
+
"change": function ($event) {
|
|
598
|
+
return _vm.onChangeFilter($event);
|
|
599
|
+
},
|
|
600
|
+
"input": function ($event) {
|
|
601
|
+
if ($event.target.composing) return;
|
|
602
|
+
_vm.$set(_vm.getFilterForDateTo(customFilter), "value", _vm._n($event.target.value));
|
|
603
|
+
},
|
|
604
|
+
"blur": function ($event) {
|
|
605
|
+
return _vm.$forceUpdate();
|
|
606
|
+
}
|
|
607
|
+
}
|
|
608
|
+
})])])]) : customFilter.type == 'state' ? _c('div', {
|
|
609
|
+
staticClass: "form-group"
|
|
610
|
+
}, [_c('label', [_vm._v(_vm._s(customFilter.label))]), customFilter.options && Array.isArray(customFilter.options) ? _c('select', {
|
|
611
|
+
directives: [{
|
|
612
|
+
name: "model",
|
|
613
|
+
rawName: "v-model",
|
|
614
|
+
value: _vm.getFilterForColumn(customFilter).value,
|
|
615
|
+
expression: "getFilterForColumn(customFilter).value"
|
|
616
|
+
}],
|
|
617
|
+
staticClass: "form-control",
|
|
618
|
+
on: {
|
|
619
|
+
"change": [function ($event) {
|
|
620
|
+
var $$selectedVal = Array.prototype.filter.call($event.target.options, function (o) {
|
|
621
|
+
return o.selected;
|
|
622
|
+
}).map(function (o) {
|
|
623
|
+
var val = "_value" in o ? o._value : o.value;
|
|
624
|
+
return val;
|
|
625
|
+
});
|
|
626
|
+
_vm.$set(_vm.getFilterForColumn(customFilter), "value", $event.target.multiple ? $$selectedVal : $$selectedVal[0]);
|
|
627
|
+
}, function ($event) {
|
|
628
|
+
return _vm.onChangeFilter($event);
|
|
629
|
+
}]
|
|
630
|
+
}
|
|
631
|
+
}, [_c('option', {
|
|
632
|
+
attrs: {
|
|
633
|
+
"value": ""
|
|
634
|
+
}
|
|
635
|
+
}), _vm._l(customFilter.options, function (option) {
|
|
636
|
+
return _c('option', {
|
|
637
|
+
key: option.value || option.id,
|
|
638
|
+
domProps: {
|
|
639
|
+
"value": option.value
|
|
640
|
+
}
|
|
641
|
+
}, [_vm._v(" " + _vm._s(option.text) + " ")]);
|
|
642
|
+
})], 2) : _vm._e()]) : customFilter.type == 'array' ? _c('div', {
|
|
643
|
+
staticClass: "form-group"
|
|
644
|
+
}, [_c('label', [_vm._v(_vm._s(customFilter.label))]), customFilter.options && Array.isArray(customFilter.options) ? _c('select', {
|
|
645
|
+
directives: [{
|
|
646
|
+
name: "model",
|
|
647
|
+
rawName: "v-model",
|
|
648
|
+
value: _vm.getFilterForColumn(customFilter).value,
|
|
649
|
+
expression: "getFilterForColumn(customFilter).value"
|
|
650
|
+
}],
|
|
651
|
+
staticClass: "form-control",
|
|
652
|
+
on: {
|
|
653
|
+
"change": [function ($event) {
|
|
654
|
+
var $$selectedVal = Array.prototype.filter.call($event.target.options, function (o) {
|
|
655
|
+
return o.selected;
|
|
656
|
+
}).map(function (o) {
|
|
657
|
+
var val = "_value" in o ? o._value : o.value;
|
|
658
|
+
return val;
|
|
659
|
+
});
|
|
660
|
+
_vm.$set(_vm.getFilterForColumn(customFilter), "value", $event.target.multiple ? $$selectedVal : $$selectedVal[0]);
|
|
661
|
+
}, function ($event) {
|
|
662
|
+
return _vm.onChangeFilter($event);
|
|
663
|
+
}]
|
|
664
|
+
}
|
|
665
|
+
}, [_c('option', {
|
|
666
|
+
attrs: {
|
|
667
|
+
"value": ""
|
|
668
|
+
}
|
|
669
|
+
}), _vm._l(customFilter.options, function (option) {
|
|
670
|
+
return _c('option', {
|
|
671
|
+
key: option.value || option.id,
|
|
672
|
+
domProps: {
|
|
673
|
+
"value": option.value
|
|
674
|
+
}
|
|
675
|
+
}, [_vm._v(" " + _vm._s(option.text) + " ")]);
|
|
676
|
+
})], 2) : _vm._e()]) : _c('div', {
|
|
677
|
+
staticClass: "form-group"
|
|
678
|
+
}, [_c('label', [_vm._v(_vm._s(customFilter.label))]), _c('input', {
|
|
679
|
+
directives: [{
|
|
680
|
+
name: "model",
|
|
681
|
+
rawName: "v-model.lazy",
|
|
682
|
+
value: _vm.getFilterForColumn(customFilter).value,
|
|
683
|
+
expression: "getFilterForColumn(customFilter).value",
|
|
684
|
+
modifiers: {
|
|
685
|
+
"lazy": true
|
|
686
|
+
}
|
|
687
|
+
}],
|
|
688
|
+
staticClass: "form-control",
|
|
689
|
+
domProps: {
|
|
690
|
+
"value": _vm.getFilterForColumn(customFilter).value
|
|
691
|
+
},
|
|
692
|
+
on: {
|
|
693
|
+
"change": [function ($event) {
|
|
694
|
+
_vm.$set(_vm.getFilterForColumn(customFilter), "value", $event.target.value);
|
|
695
|
+
}, function ($event) {
|
|
696
|
+
return _vm.onChangeFilter($event);
|
|
697
|
+
}]
|
|
698
|
+
}
|
|
699
|
+
})])]];
|
|
700
|
+
}, {
|
|
701
|
+
"column": customFilter,
|
|
702
|
+
"filter": _vm.filter,
|
|
703
|
+
"internalFilterByProp": _vm.internalFilterByProp,
|
|
704
|
+
"getFilterForColumn": _vm.getFilterForColumn
|
|
705
|
+
})], 2) : _vm._e()]);
|
|
277
706
|
}), _c('div', {
|
|
278
707
|
staticClass: "mt-3 d-flex justify-content-center"
|
|
279
708
|
}, [_c('button', {
|
|
@@ -298,19 +727,29 @@ var CrudFilters = __component__$f.exports;
|
|
|
298
727
|
|
|
299
728
|
var e=[],t=[];function n(n,r){if(n&&"undefined"!=typeof document){var a,s=!0===r.prepend?"prepend":"append",d=!0===r.singleTag,i="string"==typeof r.container?document.querySelector(r.container):document.getElementsByTagName("head")[0];if(d){var u=e.indexOf(i);-1===u&&(u=e.push(i)-1,t[u]={}),a=t[u]&&t[u][s]?t[u][s]:t[u][s]=c();}else a=c();65279===n.charCodeAt(0)&&(n=n.substring(1)),a.styleSheet?a.styleSheet.cssText+=n:a.appendChild(document.createTextNode(n));}function c(){var e=document.createElement("style");if(e.setAttribute("type","text/css"),r.attributes)for(var t=Object.keys(r.attributes),n=0;n<t.length;n++)e.setAttribute(t[n],r.attributes[t[n]]);var a="prepend"===s?"afterbegin":"beforeend";return i.insertAdjacentElement(a,e),e}}
|
|
300
729
|
|
|
301
|
-
var css$
|
|
302
|
-
n(css$
|
|
730
|
+
var css$9 = "\n.crud-header[data-v-4fb65bb3] {\n display: flex;\n justify-content: space-between;\n max-height: 3rem;\n}\n.crud-title[data-v-4fb65bb3] {\n margin: 0;\n}\n.crud-search[data-v-4fb65bb3] {\n max-width: 15rem;\n}\n.crud-search .btn[data-v-4fb65bb3] {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n border-top-right-radius: 0.375rem;\n border-bottom-right-radius: 0.375rem;\n}\n.crud-search .btn.open[data-v-4fb65bb3] {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.table-options[data-v-4fb65bb3] {\n margin-bottom: 1rem;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n}\n";
|
|
731
|
+
n(css$9, {});
|
|
303
732
|
|
|
304
733
|
const _sfc_main$e = {
|
|
305
734
|
name: 'CrudHeader',
|
|
306
735
|
components: {
|
|
307
736
|
CrudFilters
|
|
308
737
|
},
|
|
309
|
-
inject: ['showHeader', 'showTitle', 'title', 'filterSidebarOpen', 'showImport', 'showExport', 'showPrincipalSortBtn', 'principalSort', 'bulkDelete', 'showCreateBtn', 'enableFilters', 'displayModeToggler', 'displayMode', 'displayModes', 'showSearch', 'displaySearch', 'search', 'searchPlaceholder', 'loading', 'messageImport', 'messageExport', 'messageNew', 'createItem', 'toggleDisplayMode', 'togglePrincipalSort', 'confirmBulkDelete', 'toggleFilters', 'refresh'],
|
|
738
|
+
inject: ['showHeader', 'showTitle', 'title', 'filterSidebarOpen', 'showImport', 'showExport', 'showPrincipalSortBtn', 'principalSort', 'bulkDelete', 'showCreateBtn', 'enableFilters', 'displayModeToggler', 'displayMode', 'displayModes', 'showSearch', 'displaySearch', 'search', 'searchPlaceholder', 'loading', 'messageImport', 'messageExport', 'messageNew', 'createItem', 'toggleDisplayMode', 'togglePrincipalSort', 'confirmBulkDelete', 'toggleFilters', 'refresh', 'showImportModal', 'showExportModal'],
|
|
310
739
|
computed: {
|
|
311
740
|
sidebarVisible() {
|
|
312
741
|
// Acceder directamente al componente padre para obtener reactividad
|
|
313
742
|
return this.$parent ? this.$parent.filterSidebarOpen : this.filterSidebarOpen;
|
|
743
|
+
},
|
|
744
|
+
currentDisplayMode() {
|
|
745
|
+
if (!this.displayMode) return 1;
|
|
746
|
+
if (this.displayMode.value !== undefined) {
|
|
747
|
+
return this.displayMode.value;
|
|
748
|
+
}
|
|
749
|
+
if (typeof this.displayMode === 'function') {
|
|
750
|
+
return this.displayMode();
|
|
751
|
+
}
|
|
752
|
+
return this.displayMode;
|
|
314
753
|
}
|
|
315
754
|
},
|
|
316
755
|
methods: {
|
|
@@ -420,7 +859,7 @@ var _sfc_render$e = function render() {
|
|
|
420
859
|
return _vm.toggleDisplayMode();
|
|
421
860
|
}
|
|
422
861
|
}
|
|
423
|
-
}, [_vm.
|
|
862
|
+
}, [_vm.currentDisplayMode == _vm.displayModes.MODE_TABLE ? _c('b-icon-card-list') : _vm.currentDisplayMode == _vm.displayModes.MODE_CARDS ? _c('b-icon-table') : _vm._e()], 1) : _vm._e(), _vm.showSearch ? _c('div', {
|
|
424
863
|
staticClass: "crud-search m-0"
|
|
425
864
|
}, [_c('b-input-group', [_c('b-input-group-prepend', [_c('b-button', {
|
|
426
865
|
class: {
|
|
@@ -459,7 +898,7 @@ var _sfc_render$e = function render() {
|
|
|
459
898
|
})], 2)], 1)], 1) : _vm._e();
|
|
460
899
|
};
|
|
461
900
|
var _sfc_staticRenderFns$e = [];
|
|
462
|
-
var __component__$e = /*#__PURE__*/normalizeComponent(_sfc_main$e, _sfc_render$e, _sfc_staticRenderFns$e, false, null, "
|
|
901
|
+
var __component__$e = /*#__PURE__*/normalizeComponent(_sfc_main$e, _sfc_render$e, _sfc_staticRenderFns$e, false, null, "4fb65bb3", null, null);
|
|
463
902
|
var CrudHeader = __component__$e.exports;
|
|
464
903
|
|
|
465
904
|
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
@@ -721,7 +1160,7 @@ function toggleClass(el, name, state) {
|
|
|
721
1160
|
}
|
|
722
1161
|
}
|
|
723
1162
|
|
|
724
|
-
function css$
|
|
1163
|
+
function css$8(el, prop, val) {
|
|
725
1164
|
var style = el && el.style;
|
|
726
1165
|
|
|
727
1166
|
if (style) {
|
|
@@ -750,7 +1189,7 @@ function matrix(el, selfOnly) {
|
|
|
750
1189
|
appliedTransforms = el;
|
|
751
1190
|
} else {
|
|
752
1191
|
do {
|
|
753
|
-
var transform = css$
|
|
1192
|
+
var transform = css$8(el, 'transform');
|
|
754
1193
|
|
|
755
1194
|
if (transform && transform !== 'none') {
|
|
756
1195
|
appliedTransforms = transform + ' ' + appliedTransforms;
|
|
@@ -832,11 +1271,11 @@ function getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoS
|
|
|
832
1271
|
|
|
833
1272
|
if (!IE11OrLess) {
|
|
834
1273
|
do {
|
|
835
|
-
if (container && container.getBoundingClientRect && (css$
|
|
1274
|
+
if (container && container.getBoundingClientRect && (css$8(container, 'transform') !== 'none' || relativeToNonStaticParent && css$8(container, 'position') !== 'static')) {
|
|
836
1275
|
var containerRect = container.getBoundingClientRect(); // Set relative to edges of padding box of container
|
|
837
1276
|
|
|
838
|
-
top -= containerRect.top + parseInt(css$
|
|
839
|
-
left -= containerRect.left + parseInt(css$
|
|
1277
|
+
top -= containerRect.top + parseInt(css$8(container, 'border-top-width'));
|
|
1278
|
+
left -= containerRect.left + parseInt(css$8(container, 'border-left-width'));
|
|
840
1279
|
bottom = top + elRect.height;
|
|
841
1280
|
right = left + elRect.width;
|
|
842
1281
|
break;
|
|
@@ -943,7 +1382,7 @@ function getChild(el, childNum, options) {
|
|
|
943
1382
|
function lastChild(el, selector) {
|
|
944
1383
|
var last = el.lastElementChild;
|
|
945
1384
|
|
|
946
|
-
while (last && (last === Sortable.ghost || css$
|
|
1385
|
+
while (last && (last === Sortable.ghost || css$8(last, 'display') === 'none' || selector && !matches(last, selector))) {
|
|
947
1386
|
last = last.previousElementSibling;
|
|
948
1387
|
}
|
|
949
1388
|
|
|
@@ -1029,7 +1468,7 @@ function getParentAutoScrollElement(el, includeSelf) {
|
|
|
1029
1468
|
do {
|
|
1030
1469
|
// we don't need to get elem css if it isn't even overflowing in the first place (performance)
|
|
1031
1470
|
if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {
|
|
1032
|
-
var elemCSS = css$
|
|
1471
|
+
var elemCSS = css$8(elem);
|
|
1033
1472
|
|
|
1034
1473
|
if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {
|
|
1035
1474
|
if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();
|
|
@@ -1105,19 +1544,19 @@ function clone(el) {
|
|
|
1105
1544
|
}
|
|
1106
1545
|
|
|
1107
1546
|
function setRect(el, rect) {
|
|
1108
|
-
css$
|
|
1109
|
-
css$
|
|
1110
|
-
css$
|
|
1111
|
-
css$
|
|
1112
|
-
css$
|
|
1547
|
+
css$8(el, 'position', 'absolute');
|
|
1548
|
+
css$8(el, 'top', rect.top);
|
|
1549
|
+
css$8(el, 'left', rect.left);
|
|
1550
|
+
css$8(el, 'width', rect.width);
|
|
1551
|
+
css$8(el, 'height', rect.height);
|
|
1113
1552
|
}
|
|
1114
1553
|
|
|
1115
1554
|
function unsetRect(el) {
|
|
1116
|
-
css$
|
|
1117
|
-
css$
|
|
1118
|
-
css$
|
|
1119
|
-
css$
|
|
1120
|
-
css$
|
|
1555
|
+
css$8(el, 'position', '');
|
|
1556
|
+
css$8(el, 'top', '');
|
|
1557
|
+
css$8(el, 'left', '');
|
|
1558
|
+
css$8(el, 'width', '');
|
|
1559
|
+
css$8(el, 'height', '');
|
|
1121
1560
|
}
|
|
1122
1561
|
|
|
1123
1562
|
var expando = 'Sortable' + new Date().getTime();
|
|
@@ -1131,7 +1570,7 @@ function AnimationStateManager() {
|
|
|
1131
1570
|
if (!this.options.animation) return;
|
|
1132
1571
|
var children = [].slice.call(this.el.children);
|
|
1133
1572
|
children.forEach(function (child) {
|
|
1134
|
-
if (css$
|
|
1573
|
+
if (css$8(child, 'display') === 'none' || child === Sortable.ghost) return;
|
|
1135
1574
|
animationStates.push({
|
|
1136
1575
|
target: child,
|
|
1137
1576
|
rect: getRect(child)
|
|
@@ -1238,8 +1677,8 @@ function AnimationStateManager() {
|
|
|
1238
1677
|
},
|
|
1239
1678
|
animate: function animate(target, currentRect, toRect, duration) {
|
|
1240
1679
|
if (duration) {
|
|
1241
|
-
css$
|
|
1242
|
-
css$
|
|
1680
|
+
css$8(target, 'transition', '');
|
|
1681
|
+
css$8(target, 'transform', '');
|
|
1243
1682
|
var elMatrix = matrix(this.el),
|
|
1244
1683
|
scaleX = elMatrix && elMatrix.a,
|
|
1245
1684
|
scaleY = elMatrix && elMatrix.d,
|
|
@@ -1247,15 +1686,15 @@ function AnimationStateManager() {
|
|
|
1247
1686
|
translateY = (currentRect.top - toRect.top) / (scaleY || 1);
|
|
1248
1687
|
target.animatingX = !!translateX;
|
|
1249
1688
|
target.animatingY = !!translateY;
|
|
1250
|
-
css$
|
|
1689
|
+
css$8(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');
|
|
1251
1690
|
repaint(target); // repaint
|
|
1252
1691
|
|
|
1253
|
-
css$
|
|
1254
|
-
css$
|
|
1692
|
+
css$8(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));
|
|
1693
|
+
css$8(target, 'transform', 'translate3d(0,0,0)');
|
|
1255
1694
|
typeof target.animated === 'number' && clearTimeout(target.animated);
|
|
1256
1695
|
target.animated = setTimeout(function () {
|
|
1257
|
-
css$
|
|
1258
|
-
css$
|
|
1696
|
+
css$8(target, 'transition', '');
|
|
1697
|
+
css$8(target, 'transform', '');
|
|
1259
1698
|
target.animated = false;
|
|
1260
1699
|
target.animatingX = false;
|
|
1261
1700
|
target.animatingY = false;
|
|
@@ -1524,12 +1963,12 @@ supportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in
|
|
|
1524
1963
|
return el.style.pointerEvents === 'auto';
|
|
1525
1964
|
}(),
|
|
1526
1965
|
_detectDirection = function _detectDirection(el, options) {
|
|
1527
|
-
var elCSS = css$
|
|
1966
|
+
var elCSS = css$8(el),
|
|
1528
1967
|
elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),
|
|
1529
1968
|
child1 = getChild(el, 0, options),
|
|
1530
1969
|
child2 = getChild(el, 1, options),
|
|
1531
|
-
firstChildCSS = child1 && css$
|
|
1532
|
-
secondChildCSS = child2 && css$
|
|
1970
|
+
firstChildCSS = child1 && css$8(child1),
|
|
1971
|
+
secondChildCSS = child2 && css$8(child2),
|
|
1533
1972
|
firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,
|
|
1534
1973
|
secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;
|
|
1535
1974
|
|
|
@@ -1618,12 +2057,12 @@ _detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {
|
|
|
1618
2057
|
},
|
|
1619
2058
|
_hideGhostForTarget = function _hideGhostForTarget() {
|
|
1620
2059
|
if (!supportCssPointerEvents && ghostEl) {
|
|
1621
|
-
css$
|
|
2060
|
+
css$8(ghostEl, 'display', 'none');
|
|
1622
2061
|
}
|
|
1623
2062
|
},
|
|
1624
2063
|
_unhideGhostForTarget = function _unhideGhostForTarget() {
|
|
1625
2064
|
if (!supportCssPointerEvents && ghostEl) {
|
|
1626
|
-
css$
|
|
2065
|
+
css$8(ghostEl, 'display', '');
|
|
1627
2066
|
}
|
|
1628
2067
|
}; // #1184 fix - Prevent click event on fallback if dragged but item not changed position
|
|
1629
2068
|
|
|
@@ -2158,10 +2597,10 @@ Sortable.prototype =
|
|
|
2158
2597
|
}
|
|
2159
2598
|
|
|
2160
2599
|
var cssMatrix = "matrix(".concat(ghostMatrix.a, ",").concat(ghostMatrix.b, ",").concat(ghostMatrix.c, ",").concat(ghostMatrix.d, ",").concat(ghostMatrix.e, ",").concat(ghostMatrix.f, ")");
|
|
2161
|
-
css$
|
|
2162
|
-
css$
|
|
2163
|
-
css$
|
|
2164
|
-
css$
|
|
2600
|
+
css$8(ghostEl, 'webkitTransform', cssMatrix);
|
|
2601
|
+
css$8(ghostEl, 'mozTransform', cssMatrix);
|
|
2602
|
+
css$8(ghostEl, 'msTransform', cssMatrix);
|
|
2603
|
+
css$8(ghostEl, 'transform', cssMatrix);
|
|
2165
2604
|
lastDx = dx;
|
|
2166
2605
|
lastDy = dy;
|
|
2167
2606
|
touchEvt = touch;
|
|
@@ -2182,7 +2621,7 @@ Sortable.prototype =
|
|
|
2182
2621
|
// Get relatively positioned parent
|
|
2183
2622
|
ghostRelativeParent = container;
|
|
2184
2623
|
|
|
2185
|
-
while (css$
|
|
2624
|
+
while (css$8(ghostRelativeParent, 'position') === 'static' && css$8(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {
|
|
2186
2625
|
ghostRelativeParent = ghostRelativeParent.parentNode;
|
|
2187
2626
|
}
|
|
2188
2627
|
|
|
@@ -2201,22 +2640,22 @@ Sortable.prototype =
|
|
|
2201
2640
|
toggleClass(ghostEl, options.ghostClass, false);
|
|
2202
2641
|
toggleClass(ghostEl, options.fallbackClass, true);
|
|
2203
2642
|
toggleClass(ghostEl, options.dragClass, true);
|
|
2204
|
-
css$
|
|
2205
|
-
css$
|
|
2206
|
-
css$
|
|
2207
|
-
css$
|
|
2208
|
-
css$
|
|
2209
|
-
css$
|
|
2210
|
-
css$
|
|
2211
|
-
css$
|
|
2212
|
-
css$
|
|
2213
|
-
css$
|
|
2214
|
-
css$
|
|
2215
|
-
css$
|
|
2643
|
+
css$8(ghostEl, 'transition', '');
|
|
2644
|
+
css$8(ghostEl, 'transform', '');
|
|
2645
|
+
css$8(ghostEl, 'box-sizing', 'border-box');
|
|
2646
|
+
css$8(ghostEl, 'margin', 0);
|
|
2647
|
+
css$8(ghostEl, 'top', rect.top);
|
|
2648
|
+
css$8(ghostEl, 'left', rect.left);
|
|
2649
|
+
css$8(ghostEl, 'width', rect.width);
|
|
2650
|
+
css$8(ghostEl, 'height', rect.height);
|
|
2651
|
+
css$8(ghostEl, 'opacity', '0.8');
|
|
2652
|
+
css$8(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');
|
|
2653
|
+
css$8(ghostEl, 'zIndex', '100000');
|
|
2654
|
+
css$8(ghostEl, 'pointerEvents', 'none');
|
|
2216
2655
|
Sortable.ghost = ghostEl;
|
|
2217
2656
|
container.appendChild(ghostEl); // Set transform-origin
|
|
2218
2657
|
|
|
2219
|
-
css$
|
|
2658
|
+
css$8(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');
|
|
2220
2659
|
}
|
|
2221
2660
|
},
|
|
2222
2661
|
_onDragStart: function _onDragStart(
|
|
@@ -2285,7 +2724,7 @@ Sortable.prototype =
|
|
|
2285
2724
|
|
|
2286
2725
|
on(document, 'drop', _this); // #1276 fix:
|
|
2287
2726
|
|
|
2288
|
-
css$
|
|
2727
|
+
css$8(dragEl, 'transform', 'translateZ(0)');
|
|
2289
2728
|
}
|
|
2290
2729
|
|
|
2291
2730
|
awaitingDragStarted = true;
|
|
@@ -2294,7 +2733,7 @@ Sortable.prototype =
|
|
|
2294
2733
|
moved = true;
|
|
2295
2734
|
|
|
2296
2735
|
if (Safari) {
|
|
2297
|
-
css$
|
|
2736
|
+
css$8(document.body, 'user-select', 'none');
|
|
2298
2737
|
}
|
|
2299
2738
|
},
|
|
2300
2739
|
// Returns true - if no further action is needed (either inserted or another condition)
|
|
@@ -2514,7 +2953,7 @@ Sortable.prototype =
|
|
|
2514
2953
|
do {
|
|
2515
2954
|
dragIndex -= direction;
|
|
2516
2955
|
sibling = parentEl.children[dragIndex];
|
|
2517
|
-
} while (sibling && (css$
|
|
2956
|
+
} while (sibling && (css$8(sibling, 'display') === 'none' || sibling === ghostEl));
|
|
2518
2957
|
} // If dragEl is already beside target: Do not insert
|
|
2519
2958
|
|
|
2520
2959
|
|
|
@@ -2629,10 +3068,10 @@ Sortable.prototype =
|
|
|
2629
3068
|
this._offUpEvents();
|
|
2630
3069
|
|
|
2631
3070
|
if (Safari) {
|
|
2632
|
-
css$
|
|
3071
|
+
css$8(document.body, 'user-select', '');
|
|
2633
3072
|
}
|
|
2634
3073
|
|
|
2635
|
-
css$
|
|
3074
|
+
css$8(dragEl, 'transform', '');
|
|
2636
3075
|
|
|
2637
3076
|
if (evt) {
|
|
2638
3077
|
if (moved) {
|
|
@@ -2907,7 +3346,7 @@ Sortable.prototype =
|
|
|
2907
3346
|
if (!cloneHidden) {
|
|
2908
3347
|
pluginEvent('hideClone', this);
|
|
2909
3348
|
if (Sortable.eventCanceled) return;
|
|
2910
|
-
css$
|
|
3349
|
+
css$8(cloneEl, 'display', 'none');
|
|
2911
3350
|
|
|
2912
3351
|
if (this.options.removeCloneOnHide && cloneEl.parentNode) {
|
|
2913
3352
|
cloneEl.parentNode.removeChild(cloneEl);
|
|
@@ -2939,7 +3378,7 @@ Sortable.prototype =
|
|
|
2939
3378
|
this.animate(dragEl, cloneEl);
|
|
2940
3379
|
}
|
|
2941
3380
|
|
|
2942
|
-
css$
|
|
3381
|
+
css$8(cloneEl, 'display', '');
|
|
2943
3382
|
cloneHidden = false;
|
|
2944
3383
|
}
|
|
2945
3384
|
}
|
|
@@ -3114,7 +3553,7 @@ if (documentExists) {
|
|
|
3114
3553
|
Sortable.utils = {
|
|
3115
3554
|
on: on,
|
|
3116
3555
|
off: off,
|
|
3117
|
-
css: css$
|
|
3556
|
+
css: css$8,
|
|
3118
3557
|
find: find,
|
|
3119
3558
|
is: function is(el, selector) {
|
|
3120
3559
|
return !!closest(el, selector, el, false);
|
|
@@ -3341,7 +3780,7 @@ var autoScroll = throttle(function (evt, options, rootEl, isFallback) {
|
|
|
3341
3780
|
canScrollY = void 0,
|
|
3342
3781
|
scrollWidth = el.scrollWidth,
|
|
3343
3782
|
scrollHeight = el.scrollHeight,
|
|
3344
|
-
elCSS = css$
|
|
3783
|
+
elCSS = css$8(el),
|
|
3345
3784
|
scrollPosX = el.scrollLeft,
|
|
3346
3785
|
scrollPosY = el.scrollTop;
|
|
3347
3786
|
|
|
@@ -3677,7 +4116,7 @@ function MultiDragPlugin() {
|
|
|
3677
4116
|
if (!this.isMultiDrag) return;
|
|
3678
4117
|
insertMultiDragClones(false, rootEl);
|
|
3679
4118
|
multiDragClones.forEach(function (clone) {
|
|
3680
|
-
css$
|
|
4119
|
+
css$8(clone, 'display', '');
|
|
3681
4120
|
});
|
|
3682
4121
|
cloneNowShown();
|
|
3683
4122
|
clonesHidden = false;
|
|
@@ -3691,7 +4130,7 @@ function MultiDragPlugin() {
|
|
|
3691
4130
|
cancel = _ref5.cancel;
|
|
3692
4131
|
if (!this.isMultiDrag) return;
|
|
3693
4132
|
multiDragClones.forEach(function (clone) {
|
|
3694
|
-
css$
|
|
4133
|
+
css$8(clone, 'display', 'none');
|
|
3695
4134
|
|
|
3696
4135
|
if (_this.options.removeCloneOnHide && clone.parentNode) {
|
|
3697
4136
|
clone.parentNode.removeChild(clone);
|
|
@@ -3735,7 +4174,7 @@ function MultiDragPlugin() {
|
|
|
3735
4174
|
if (this.options.animation) {
|
|
3736
4175
|
multiDragElements.forEach(function (multiDragElement) {
|
|
3737
4176
|
if (multiDragElement === dragEl$1) return;
|
|
3738
|
-
css$
|
|
4177
|
+
css$8(multiDragElement, 'position', 'absolute');
|
|
3739
4178
|
});
|
|
3740
4179
|
var dragRect = getRect(dragEl$1, false, true, true);
|
|
3741
4180
|
multiDragElements.forEach(function (multiDragElement) {
|
|
@@ -6630,8 +7069,8 @@ vuedraggable_umd.exports;
|
|
|
6630
7069
|
var vuedraggable_umdExports = vuedraggable_umd.exports;
|
|
6631
7070
|
var draggable = /*@__PURE__*/getDefaultExportFromCjs(vuedraggable_umdExports);
|
|
6632
7071
|
|
|
6633
|
-
var css$
|
|
6634
|
-
n(css$
|
|
7072
|
+
var css$7 = "\r\n/* Fijar ancho de la columna de acciones en el header */\n.actions-header[data-v-3de96e53] {\r\n width: 1%;\r\n white-space: nowrap;\n}\n.sort-filter[data-v-3de96e53] {\r\n cursor: pointer;\r\n visibility: hidden;\r\n display: inline-block;\n}\n.sort-filter-visible[data-v-3de96e53] {\r\n visibility: visible;\n}\r\n";
|
|
7073
|
+
n(css$7, {});
|
|
6635
7074
|
|
|
6636
7075
|
const _sfc_main$d = {
|
|
6637
7076
|
name: 'TableHeader',
|
|
@@ -6689,7 +7128,7 @@ var _sfc_render$d = function render() {
|
|
|
6689
7128
|
_vm.hoveredColumn = null;
|
|
6690
7129
|
}
|
|
6691
7130
|
}
|
|
6692
|
-
}, [_vm.enableFilters && _vm.filtersVisible && _vm.isColumnHasFilter(column) && _vm.internalFilterByProp(column.prop) ? _vm._t('filter-' + column.prop, function () {
|
|
7131
|
+
}, [_vm.enableFilters && _vm.filtersVisible && _vm.isColumnHasFilter(column) && (_vm.internalFilterByProp(column.prop) || _vm.internalFilterByProp(column.prop + '_from')) ? _vm._t('filter-' + column.prop, function () {
|
|
6693
7132
|
return [_c('div', {
|
|
6694
7133
|
staticClass: "form-group"
|
|
6695
7134
|
}, [column.type == 'boolean' ? _c('select', {
|
|
@@ -6761,7 +7200,75 @@ var _sfc_render$d = function render() {
|
|
|
6761
7200
|
},
|
|
6762
7201
|
expression: "internalFilterByProp(column.prop + '_to').value\n "
|
|
6763
7202
|
}
|
|
6764
|
-
})], 1)]) : column.type == '
|
|
7203
|
+
})], 1)]) : column.type == 'number' || column.type == 'money' || column.type == 'price' ? _c('div', {
|
|
7204
|
+
staticClass: "row"
|
|
7205
|
+
}, [_c('div', {
|
|
7206
|
+
staticClass: "col-6"
|
|
7207
|
+
}, [_c('input', {
|
|
7208
|
+
directives: [{
|
|
7209
|
+
name: "model",
|
|
7210
|
+
rawName: "v-model.number",
|
|
7211
|
+
value: _vm.internalFilterByProp(column.prop + '_from').value,
|
|
7212
|
+
expression: "internalFilterByProp(column.prop + '_from').value",
|
|
7213
|
+
modifiers: {
|
|
7214
|
+
"number": true
|
|
7215
|
+
}
|
|
7216
|
+
}],
|
|
7217
|
+
staticClass: "form-control form-control-md p-2",
|
|
7218
|
+
attrs: {
|
|
7219
|
+
"type": "number",
|
|
7220
|
+
"step": column.type == 'money' || column.type == 'price' ? '0.01' : '1',
|
|
7221
|
+
"placeholder": "Desde"
|
|
7222
|
+
},
|
|
7223
|
+
domProps: {
|
|
7224
|
+
"value": _vm.internalFilterByProp(column.prop + '_from').value
|
|
7225
|
+
},
|
|
7226
|
+
on: {
|
|
7227
|
+
"change": function ($event) {
|
|
7228
|
+
return _vm.onChangeFilter($event);
|
|
7229
|
+
},
|
|
7230
|
+
"input": function ($event) {
|
|
7231
|
+
if ($event.target.composing) return;
|
|
7232
|
+
_vm.$set(_vm.internalFilterByProp(column.prop + '_from'), "value", _vm._n($event.target.value));
|
|
7233
|
+
},
|
|
7234
|
+
"blur": function ($event) {
|
|
7235
|
+
return _vm.$forceUpdate();
|
|
7236
|
+
}
|
|
7237
|
+
}
|
|
7238
|
+
})]), _c('div', {
|
|
7239
|
+
staticClass: "col-6"
|
|
7240
|
+
}, [_c('input', {
|
|
7241
|
+
directives: [{
|
|
7242
|
+
name: "model",
|
|
7243
|
+
rawName: "v-model.number",
|
|
7244
|
+
value: _vm.internalFilterByProp(column.prop + '_to').value,
|
|
7245
|
+
expression: "internalFilterByProp(column.prop + '_to').value",
|
|
7246
|
+
modifiers: {
|
|
7247
|
+
"number": true
|
|
7248
|
+
}
|
|
7249
|
+
}],
|
|
7250
|
+
staticClass: "form-control form-control-md p-2",
|
|
7251
|
+
attrs: {
|
|
7252
|
+
"type": "number",
|
|
7253
|
+
"step": column.type == 'money' || column.type == 'price' ? '0.01' : '1',
|
|
7254
|
+
"placeholder": "Hasta"
|
|
7255
|
+
},
|
|
7256
|
+
domProps: {
|
|
7257
|
+
"value": _vm.internalFilterByProp(column.prop + '_to').value
|
|
7258
|
+
},
|
|
7259
|
+
on: {
|
|
7260
|
+
"change": function ($event) {
|
|
7261
|
+
return _vm.onChangeFilter($event);
|
|
7262
|
+
},
|
|
7263
|
+
"input": function ($event) {
|
|
7264
|
+
if ($event.target.composing) return;
|
|
7265
|
+
_vm.$set(_vm.internalFilterByProp(column.prop + '_to'), "value", _vm._n($event.target.value));
|
|
7266
|
+
},
|
|
7267
|
+
"blur": function ($event) {
|
|
7268
|
+
return _vm.$forceUpdate();
|
|
7269
|
+
}
|
|
7270
|
+
}
|
|
7271
|
+
})])]) : column.type == 'state' && column.options && Array.isArray(column.options) ? _c('select', {
|
|
6765
7272
|
directives: [{
|
|
6766
7273
|
name: "model",
|
|
6767
7274
|
rawName: "v-model",
|
|
@@ -6793,10 +7300,10 @@ var _sfc_render$d = function render() {
|
|
|
6793
7300
|
return _c('option', {
|
|
6794
7301
|
key: indexo,
|
|
6795
7302
|
domProps: {
|
|
6796
|
-
"value": option.
|
|
7303
|
+
"value": option.value
|
|
6797
7304
|
}
|
|
6798
|
-
}, [_vm._v(" " + _vm._s(option.text
|
|
6799
|
-
})], 2) : column.type == 'array' &&
|
|
7305
|
+
}, [_vm._v(" " + _vm._s(option.text) + " ")]);
|
|
7306
|
+
})], 2) : column.type == 'array' && column.options && Array.isArray(column.options) ? _c('select', {
|
|
6800
7307
|
directives: [{
|
|
6801
7308
|
name: "model",
|
|
6802
7309
|
rawName: "v-model",
|
|
@@ -6828,9 +7335,9 @@ var _sfc_render$d = function render() {
|
|
|
6828
7335
|
return _c('option', {
|
|
6829
7336
|
key: indexo,
|
|
6830
7337
|
domProps: {
|
|
6831
|
-
"value": option.
|
|
7338
|
+
"value": option.value
|
|
6832
7339
|
}
|
|
6833
|
-
}, [_vm._v(" " + _vm._s(option.text
|
|
7340
|
+
}, [_vm._v(" " + _vm._s(option.text) + " ")]);
|
|
6834
7341
|
})], 2) : column.type == 'checkbox' ? _c('b-form-checkbox', {
|
|
6835
7342
|
attrs: {
|
|
6836
7343
|
"name": "select-all",
|
|
@@ -6891,19 +7398,26 @@ var _sfc_render$d = function render() {
|
|
|
6891
7398
|
on: {
|
|
6892
7399
|
"change": _vm.toggleAll
|
|
6893
7400
|
}
|
|
6894
|
-
})], 1) : _c('span', [_vm._v(_vm._s(column.label))]), _vm.isSortableColumn(column)
|
|
6895
|
-
staticClass: "sort-filter",
|
|
7401
|
+
})], 1) : _c('span', [_vm._v(_vm._s(column.label))]), _vm.isSortableColumn(column) ? _c('span', {
|
|
7402
|
+
staticClass: "sort-filter ml-1",
|
|
7403
|
+
class: {
|
|
7404
|
+
'sort-filter-visible': _vm.shouldShowSortIcon(column)
|
|
7405
|
+
},
|
|
6896
7406
|
on: {
|
|
6897
7407
|
"click": function ($event) {
|
|
6898
7408
|
return _vm.toggleSortFilter(column);
|
|
6899
7409
|
}
|
|
6900
7410
|
}
|
|
6901
|
-
}, [_vm.getSortIconDirection(column) === 'up' ? _c('b-icon-sort-up') : _vm.
|
|
7411
|
+
}, [_vm.getSortIconDirection(column) === 'up' ? _c('b-icon-sort-up') : _vm.getSortIconDirection(column) === 'down' ? _c('b-icon-sort-down') : _c('b-icon-sort-up', {
|
|
7412
|
+
staticStyle: {
|
|
7413
|
+
"visibility": "hidden"
|
|
7414
|
+
}
|
|
7415
|
+
})], 1) : _vm._e()], 2);
|
|
6902
7416
|
});
|
|
6903
7417
|
})], 2)]);
|
|
6904
7418
|
};
|
|
6905
7419
|
var _sfc_staticRenderFns$d = [];
|
|
6906
|
-
var __component__$d = /*#__PURE__*/normalizeComponent(_sfc_main$d, _sfc_render$d, _sfc_staticRenderFns$d, false, null, "
|
|
7420
|
+
var __component__$d = /*#__PURE__*/normalizeComponent(_sfc_main$d, _sfc_render$d, _sfc_staticRenderFns$d, false, null, "3de96e53", null, null);
|
|
6907
7421
|
var TableHeader = __component__$d.exports;
|
|
6908
7422
|
|
|
6909
7423
|
function commonjsRequire(path) {
|
|
@@ -12599,8 +13113,8 @@ moment$1.exports;
|
|
|
12599
13113
|
var momentExports = moment$1.exports;
|
|
12600
13114
|
var moment = /*@__PURE__*/getDefaultExportFromCjs(momentExports);
|
|
12601
13115
|
|
|
12602
|
-
var css$
|
|
12603
|
-
n(css$
|
|
13116
|
+
var css$6 = "\r\n/* Fijar ancho de la columna de acciones */\n.actions-cell[data-v-e38a3192] {\r\n width: 1%;\r\n white-space: nowrap;\n}\n.actions-button-group[data-v-e38a3192] {\r\n display: inline-flex;\r\n flex-wrap: nowrap;\n}\n.actions-dropdown[data-v-e38a3192] {\r\n display: inline-block;\n}\r\n\r\n/* Asegurar que los botones no se expandan */\n.actions-button-group .btn[data-v-e38a3192] {\r\n flex-shrink: 0;\n}\r\n";
|
|
13117
|
+
n(css$6, {});
|
|
12604
13118
|
|
|
12605
13119
|
const _sfc_main$c = {
|
|
12606
13120
|
name: 'TableCell',
|
|
@@ -12610,11 +13124,54 @@ const _sfc_main$c = {
|
|
|
12610
13124
|
index: Number,
|
|
12611
13125
|
columnIndex: Number
|
|
12612
13126
|
},
|
|
12613
|
-
inject: ['itemValue', 'getStateValue', 'getArrayValue', 'onCheckSelect', 'showItem', 'updateItem', 'removeItem', 'optionsLoaded'],
|
|
13127
|
+
inject: ['itemValue', 'getStateValue', 'getStateOptions', 'getStateBadgeVariant', 'getArrayValue', 'onCheckSelect', 'showItem', 'updateItem', 'removeItem', 'optionsLoaded'],
|
|
12614
13128
|
data() {
|
|
12615
13129
|
return {
|
|
12616
13130
|
moment: moment
|
|
12617
13131
|
};
|
|
13132
|
+
},
|
|
13133
|
+
computed: {
|
|
13134
|
+
stateOptions() {
|
|
13135
|
+
// Permitir usar opciones incluso si optionsLoaded es false, ya que getStateOptions normaliza internamente
|
|
13136
|
+
if (this.column.type === 'state' && this.column.options && Array.isArray(this.column.options)) {
|
|
13137
|
+
const itemVal = this.itemValue(this.column, this.item);
|
|
13138
|
+
const options = this.column.options;
|
|
13139
|
+
const result = this.getStateOptions(itemVal, options);
|
|
13140
|
+
return result;
|
|
13141
|
+
}
|
|
13142
|
+
return [];
|
|
13143
|
+
}
|
|
13144
|
+
},
|
|
13145
|
+
methods: {
|
|
13146
|
+
formatNumber(value, column) {
|
|
13147
|
+
if (value === null || value === undefined || value === '') {
|
|
13148
|
+
return '';
|
|
13149
|
+
}
|
|
13150
|
+
const numValue = parseFloat(value);
|
|
13151
|
+
if (isNaN(numValue)) {
|
|
13152
|
+
return value;
|
|
13153
|
+
}
|
|
13154
|
+
const thousandsSep = column.thousandsSeparator || '.';
|
|
13155
|
+
const decimalSep = column.decimalSeparator || ',';
|
|
13156
|
+
const decimals = column.decimals !== undefined ? column.decimals : numValue % 1 === 0 ? 0 : 2;
|
|
13157
|
+
|
|
13158
|
+
// Formatear número con separadores
|
|
13159
|
+
const parts = numValue.toFixed(decimals).split('.');
|
|
13160
|
+
const integerPart = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, thousandsSep);
|
|
13161
|
+
const decimalPart = parts[1] || '';
|
|
13162
|
+
if (decimals > 0 && decimalPart) {
|
|
13163
|
+
return `${integerPart}${decimalSep}${decimalPart}`;
|
|
13164
|
+
}
|
|
13165
|
+
return integerPart;
|
|
13166
|
+
},
|
|
13167
|
+
formatMoney(value, column) {
|
|
13168
|
+
const formatted = this.formatNumber(value, column);
|
|
13169
|
+
if (formatted === '') {
|
|
13170
|
+
return '';
|
|
13171
|
+
}
|
|
13172
|
+
const symbol = column.symbol || '$';
|
|
13173
|
+
return `${symbol}${formatted}`;
|
|
13174
|
+
}
|
|
12618
13175
|
}
|
|
12619
13176
|
};
|
|
12620
13177
|
var _sfc_render$c = function render() {
|
|
@@ -12662,7 +13219,15 @@ var _sfc_render$c = function render() {
|
|
|
12662
13219
|
},
|
|
12663
13220
|
expression: "item.selected"
|
|
12664
13221
|
}
|
|
12665
|
-
})], 1) : _vm.column.type == 'state'
|
|
13222
|
+
})], 1) : _vm.column.type == 'state' ? _c('span', [_vm.stateOptions.length > 0 ? _vm._l(_vm.stateOptions, function (option, optIndex) {
|
|
13223
|
+
return _c('b-badge', {
|
|
13224
|
+
key: optIndex,
|
|
13225
|
+
staticClass: "mr-1",
|
|
13226
|
+
attrs: {
|
|
13227
|
+
"variant": _vm.getStateBadgeVariant(option)
|
|
13228
|
+
}
|
|
13229
|
+
}, [_vm._v(" " + _vm._s(option.text) + " ")]);
|
|
13230
|
+
}) : _c('span', [_vm._v(" " + _vm._s(_vm.itemValue(_vm.column, _vm.item)) + " ")])], 2) : _vm.column.type == 'array' && _vm.optionsLoaded ? _c('span', [_vm._v(" " + _vm._s(_vm.getArrayValue(_vm.itemValue(_vm.column, _vm.item), _vm.column.displayProp, _vm.column.options)) + " ")]) : _vm.column.type == 'money' || _vm.column.type == 'price' ? _c('span', [_vm._v(" " + _vm._s(_vm.formatMoney(_vm.itemValue(_vm.column, _vm.item), _vm.column)) + " ")]) : _vm.column.type == 'number' && (_vm.column.thousandsSeparator || _vm.column.decimalSeparator || _vm.column.decimals !== undefined) ? _c('span', [_vm._v(" " + _vm._s(_vm.formatNumber(_vm.itemValue(_vm.column, _vm.item), _vm.column)) + " ")]) : _c('span', [_vm._v(" " + _vm._s(_vm.itemValue(_vm.column, _vm.item)) + " ")])];
|
|
12666
13231
|
}, {
|
|
12667
13232
|
"item": _vm.item,
|
|
12668
13233
|
"index": _vm.index,
|
|
@@ -12681,27 +13246,35 @@ var _sfc_render$c = function render() {
|
|
|
12681
13246
|
},
|
|
12682
13247
|
proxy: true
|
|
12683
13248
|
}], null, false, 4241371057)
|
|
12684
|
-
}, [_vm._t("
|
|
12685
|
-
return [
|
|
12686
|
-
|
|
12687
|
-
|
|
12688
|
-
|
|
13249
|
+
}, [_vm._t("rowActions", function () {
|
|
13250
|
+
return [_vm._t("rowAction", function () {
|
|
13251
|
+
return [_c('b-dropdown-item', {
|
|
13252
|
+
on: {
|
|
13253
|
+
"click": function ($event) {
|
|
13254
|
+
return _vm.showItem(_vm.item.id, _vm.index);
|
|
13255
|
+
}
|
|
12689
13256
|
}
|
|
12690
|
-
}
|
|
12691
|
-
|
|
12692
|
-
|
|
12693
|
-
|
|
12694
|
-
|
|
13257
|
+
}, [_c('b-icon-eye'), _vm._v(" Ver ")], 1), _c('b-dropdown-item', {
|
|
13258
|
+
on: {
|
|
13259
|
+
"click": function ($event) {
|
|
13260
|
+
return _vm.updateItem(_vm.item.id, _vm.index);
|
|
13261
|
+
}
|
|
12695
13262
|
}
|
|
12696
|
-
}
|
|
12697
|
-
|
|
12698
|
-
|
|
12699
|
-
|
|
12700
|
-
|
|
12701
|
-
|
|
13263
|
+
}, [_c('b-icon-pencil'), _vm._v(" Editar ")], 1), _c('b-dropdown-item', {
|
|
13264
|
+
staticClass: "text-danger",
|
|
13265
|
+
on: {
|
|
13266
|
+
"click": function ($event) {
|
|
13267
|
+
return _vm.removeItem(_vm.item.id, _vm.index);
|
|
13268
|
+
}
|
|
12702
13269
|
}
|
|
12703
|
-
}
|
|
12704
|
-
},
|
|
13270
|
+
}, [_c('b-icon-trash'), _vm._v(" Eliminar ")], 1)];
|
|
13271
|
+
}, {
|
|
13272
|
+
"item": _vm.item,
|
|
13273
|
+
"index": _vm.index,
|
|
13274
|
+
"showItem": _vm.showItem,
|
|
13275
|
+
"updateItem": _vm.updateItem,
|
|
13276
|
+
"removeItem": _vm.removeItem
|
|
13277
|
+
})];
|
|
12705
13278
|
}, {
|
|
12706
13279
|
"item": _vm.item,
|
|
12707
13280
|
"index": _vm.index,
|
|
@@ -12710,35 +13283,43 @@ var _sfc_render$c = function render() {
|
|
|
12710
13283
|
"removeItem": _vm.removeItem
|
|
12711
13284
|
})], 2) : _vm.column.type == 'actions' ? _c('b-button-group', {
|
|
12712
13285
|
staticClass: "actions-button-group"
|
|
12713
|
-
}, [_vm._t("
|
|
12714
|
-
return [
|
|
12715
|
-
|
|
12716
|
-
|
|
12717
|
-
|
|
12718
|
-
|
|
12719
|
-
|
|
12720
|
-
|
|
13286
|
+
}, [_vm._t("rowActions", function () {
|
|
13287
|
+
return [_vm._t("rowAction", function () {
|
|
13288
|
+
return [_c('b-button', {
|
|
13289
|
+
attrs: {
|
|
13290
|
+
"variant": "primary"
|
|
13291
|
+
},
|
|
13292
|
+
on: {
|
|
13293
|
+
"click": function ($event) {
|
|
13294
|
+
return _vm.showItem(_vm.item.id, _vm.index);
|
|
13295
|
+
}
|
|
12721
13296
|
}
|
|
12722
|
-
}
|
|
12723
|
-
|
|
12724
|
-
|
|
12725
|
-
|
|
12726
|
-
|
|
12727
|
-
|
|
12728
|
-
|
|
12729
|
-
|
|
13297
|
+
}, [_c('b-icon-eye')], 1), _c('b-button', {
|
|
13298
|
+
attrs: {
|
|
13299
|
+
"variant": "secondary"
|
|
13300
|
+
},
|
|
13301
|
+
on: {
|
|
13302
|
+
"click": function ($event) {
|
|
13303
|
+
return _vm.updateItem(_vm.item.id, _vm.index);
|
|
13304
|
+
}
|
|
12730
13305
|
}
|
|
12731
|
-
}
|
|
12732
|
-
|
|
12733
|
-
|
|
12734
|
-
|
|
12735
|
-
|
|
12736
|
-
|
|
12737
|
-
|
|
12738
|
-
|
|
13306
|
+
}, [_c('b-icon-pencil')], 1), _c('b-button', {
|
|
13307
|
+
attrs: {
|
|
13308
|
+
"variant": "danger"
|
|
13309
|
+
},
|
|
13310
|
+
on: {
|
|
13311
|
+
"click": function ($event) {
|
|
13312
|
+
return _vm.removeItem(_vm.item.id, _vm.index);
|
|
13313
|
+
}
|
|
12739
13314
|
}
|
|
12740
|
-
}
|
|
12741
|
-
},
|
|
13315
|
+
}, [_c('b-icon-trash')], 1)];
|
|
13316
|
+
}, {
|
|
13317
|
+
"item": _vm.item,
|
|
13318
|
+
"index": _vm.index,
|
|
13319
|
+
"showItem": _vm.showItem,
|
|
13320
|
+
"updateItem": _vm.updateItem,
|
|
13321
|
+
"removeItem": _vm.removeItem
|
|
13322
|
+
})];
|
|
12742
13323
|
}, {
|
|
12743
13324
|
"item": _vm.item,
|
|
12744
13325
|
"index": _vm.index,
|
|
@@ -12748,7 +13329,7 @@ var _sfc_render$c = function render() {
|
|
|
12748
13329
|
})], 2) : _vm._e()], 2);
|
|
12749
13330
|
};
|
|
12750
13331
|
var _sfc_staticRenderFns$c = [];
|
|
12751
|
-
var __component__$c = /*#__PURE__*/normalizeComponent(_sfc_main$c, _sfc_render$c, _sfc_staticRenderFns$c, false, null, "
|
|
13332
|
+
var __component__$c = /*#__PURE__*/normalizeComponent(_sfc_main$c, _sfc_render$c, _sfc_staticRenderFns$c, false, null, "e38a3192", null, null);
|
|
12752
13333
|
var TableCell = __component__$c.exports;
|
|
12753
13334
|
|
|
12754
13335
|
const _sfc_main$b = {
|
|
@@ -12791,7 +13372,15 @@ var _sfc_render$b = function render() {
|
|
|
12791
13372
|
"item": _vm.item,
|
|
12792
13373
|
"index": _vm.index,
|
|
12793
13374
|
"columnIndex": indexc
|
|
12794
|
-
}
|
|
13375
|
+
},
|
|
13376
|
+
scopedSlots: _vm._u([_vm._l(_vm.$scopedSlots, function (slot, name) {
|
|
13377
|
+
return {
|
|
13378
|
+
key: name,
|
|
13379
|
+
fn: function (slotProps) {
|
|
13380
|
+
return [_vm._t(name, null, null, slotProps)];
|
|
13381
|
+
}
|
|
13382
|
+
};
|
|
13383
|
+
})], null, true)
|
|
12795
13384
|
});
|
|
12796
13385
|
});
|
|
12797
13386
|
}, {
|
|
@@ -12809,19 +13398,46 @@ const _sfc_main$a = {
|
|
|
12809
13398
|
TableHeader,
|
|
12810
13399
|
TableRow
|
|
12811
13400
|
},
|
|
12812
|
-
inject: ['displayMode', 'displayModes', 'tableContainerClass', 'tableClass', 'items', 'draggableGroup', 'orderable', 'draggableOptions', 'itemsList', 'grouped', 'loading', 'infiniteScroll', 'messageEmptyResults', 'onSort', 'onDraggableAdded', 'onDraggableChange'],
|
|
13401
|
+
inject: ['displayMode', 'displayModes', 'tableContainerClass', 'tableClass', 'items', 'draggableGroup', 'orderable', 'draggableOptions', 'itemsList', 'grouped', 'loading', 'firstLoad', 'infiniteScroll', 'messageEmptyResults', 'messageLoading', 'onSort', 'onDraggableAdded', 'onDraggableChange'],
|
|
12813
13402
|
data() {
|
|
12814
13403
|
return {
|
|
12815
13404
|
drag: false
|
|
12816
13405
|
};
|
|
13406
|
+
},
|
|
13407
|
+
computed: {
|
|
13408
|
+
currentDisplayMode() {
|
|
13409
|
+
if (!this.displayMode) return 1;
|
|
13410
|
+
if (this.displayMode.value !== undefined) {
|
|
13411
|
+
return this.displayMode.value;
|
|
13412
|
+
}
|
|
13413
|
+
if (typeof this.displayMode === 'function') {
|
|
13414
|
+
return this.displayMode();
|
|
13415
|
+
}
|
|
13416
|
+
return this.displayMode;
|
|
13417
|
+
},
|
|
13418
|
+
loadingValue() {
|
|
13419
|
+
return this.loading && this.loading.value !== undefined ? this.loading.value : this.loading;
|
|
13420
|
+
},
|
|
13421
|
+
firstLoadValue() {
|
|
13422
|
+
return this.firstLoad && this.firstLoad.value !== undefined ? this.firstLoad.value : this.firstLoad;
|
|
13423
|
+
}
|
|
12817
13424
|
}
|
|
12818
13425
|
};
|
|
12819
13426
|
var _sfc_render$a = function render() {
|
|
12820
13427
|
var _vm = this,
|
|
12821
13428
|
_c = _vm._self._c;
|
|
12822
|
-
return _vm.
|
|
13429
|
+
return _vm.currentDisplayMode == _vm.displayModes.MODE_TABLE ? _c('div', {
|
|
12823
13430
|
class: ['table-responsive', _vm.tableContainerClass]
|
|
12824
|
-
}, [_c('
|
|
13431
|
+
}, [_vm.loadingValue || !_vm.firstLoadValue ? _c('div', {
|
|
13432
|
+
staticClass: "text-center p-5"
|
|
13433
|
+
}, [_c('b-spinner', {
|
|
13434
|
+
attrs: {
|
|
13435
|
+
"variant": "primary",
|
|
13436
|
+
"label": "Cargando..."
|
|
13437
|
+
}
|
|
13438
|
+
}), _c('p', {
|
|
13439
|
+
staticClass: "mt-2"
|
|
13440
|
+
}, [_vm._v(_vm._s(_vm.messageLoading))])], 1) : [_c('table', {
|
|
12825
13441
|
class: ['table table-hover table-striped w-100', _vm.tableClass]
|
|
12826
13442
|
}, [_c('TableHeader'), _c('draggable', {
|
|
12827
13443
|
attrs: {
|
|
@@ -12855,11 +13471,19 @@ var _sfc_render$a = function render() {
|
|
|
12855
13471
|
"item": item,
|
|
12856
13472
|
"index": index,
|
|
12857
13473
|
"grouped": _vm.grouped
|
|
12858
|
-
}
|
|
13474
|
+
},
|
|
13475
|
+
scopedSlots: _vm._u([_vm._l(_vm.$scopedSlots, function (slot, name) {
|
|
13476
|
+
return {
|
|
13477
|
+
key: name,
|
|
13478
|
+
fn: function (slotProps) {
|
|
13479
|
+
return [_vm._t(name, null, null, slotProps)];
|
|
13480
|
+
}
|
|
13481
|
+
};
|
|
13482
|
+
})], null, true)
|
|
12859
13483
|
});
|
|
12860
|
-
}), 1)], 1),
|
|
13484
|
+
}), 1)], 1), _vm.firstLoadValue && _vm.itemsList && _vm.itemsList.length == 0 && !_vm.infiniteScroll ? _c('p', {
|
|
12861
13485
|
staticClass: "p-3"
|
|
12862
|
-
}, [_vm._v(" " + _vm._s(_vm.messageEmptyResults) + " ")]) : _vm._e()]) : _vm._e();
|
|
13486
|
+
}, [_vm._v(" " + _vm._s(_vm.messageEmptyResults) + " ")]) : _vm._e()]], 2) : _vm._e();
|
|
12863
13487
|
};
|
|
12864
13488
|
var _sfc_staticRenderFns$a = [];
|
|
12865
13489
|
var __component__$a = /*#__PURE__*/normalizeComponent(_sfc_main$a, _sfc_render$a, _sfc_staticRenderFns$a, false, null, null, null, null);
|
|
@@ -13116,10 +13740,49 @@ const _sfc_main$9 = {
|
|
|
13116
13740
|
cardHideFooter: Boolean,
|
|
13117
13741
|
itemValue: Function,
|
|
13118
13742
|
getStateValue: Function,
|
|
13743
|
+
getStateOptions: Function,
|
|
13744
|
+
getStateBadgeVariant: Function,
|
|
13119
13745
|
getArrayValue: Function,
|
|
13120
13746
|
showItem: Function,
|
|
13121
13747
|
updateItem: Function,
|
|
13122
13748
|
removeItem: Function
|
|
13749
|
+
},
|
|
13750
|
+
methods: {
|
|
13751
|
+
getStateOptionsForColumn(column, item) {
|
|
13752
|
+
if (column.type === 'state' && column.options) {
|
|
13753
|
+
return this.getStateOptions(this.itemValue(column, item), column.options);
|
|
13754
|
+
}
|
|
13755
|
+
return [];
|
|
13756
|
+
},
|
|
13757
|
+
formatNumber(value, column) {
|
|
13758
|
+
if (value === null || value === undefined || value === '') {
|
|
13759
|
+
return '';
|
|
13760
|
+
}
|
|
13761
|
+
const numValue = parseFloat(value);
|
|
13762
|
+
if (isNaN(numValue)) {
|
|
13763
|
+
return value;
|
|
13764
|
+
}
|
|
13765
|
+
const thousandsSep = column.thousandsSeparator || '.';
|
|
13766
|
+
const decimalSep = column.decimalSeparator || ',';
|
|
13767
|
+
const decimals = column.decimals !== undefined ? column.decimals : numValue % 1 === 0 ? 0 : 2;
|
|
13768
|
+
|
|
13769
|
+
// Formatear número con separadores
|
|
13770
|
+
const parts = numValue.toFixed(decimals).split('.');
|
|
13771
|
+
const integerPart = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, thousandsSep);
|
|
13772
|
+
const decimalPart = parts[1] || '';
|
|
13773
|
+
if (decimals > 0 && decimalPart) {
|
|
13774
|
+
return `${integerPart}${decimalSep}${decimalPart}`;
|
|
13775
|
+
}
|
|
13776
|
+
return integerPart;
|
|
13777
|
+
},
|
|
13778
|
+
formatMoney(value, column) {
|
|
13779
|
+
const formatted = this.formatNumber(value, column);
|
|
13780
|
+
if (formatted === '') {
|
|
13781
|
+
return '';
|
|
13782
|
+
}
|
|
13783
|
+
const symbol = column.symbol || '$';
|
|
13784
|
+
return `${symbol}${formatted}`;
|
|
13785
|
+
}
|
|
13123
13786
|
}
|
|
13124
13787
|
};
|
|
13125
13788
|
var _sfc_render$9 = function render() {
|
|
@@ -13138,35 +13801,43 @@ var _sfc_render$9 = function render() {
|
|
|
13138
13801
|
scopedSlots: _vm._u([{
|
|
13139
13802
|
key: "footer",
|
|
13140
13803
|
fn: function () {
|
|
13141
|
-
return [_c('b-button-group', [_vm._t("
|
|
13142
|
-
return [
|
|
13143
|
-
|
|
13144
|
-
|
|
13145
|
-
|
|
13146
|
-
|
|
13147
|
-
|
|
13148
|
-
|
|
13804
|
+
return [_c('b-button-group', [_vm._t("rowActions", function () {
|
|
13805
|
+
return [_vm._t("rowAction", function () {
|
|
13806
|
+
return [_c('b-button', {
|
|
13807
|
+
attrs: {
|
|
13808
|
+
"variant": "primary"
|
|
13809
|
+
},
|
|
13810
|
+
on: {
|
|
13811
|
+
"click": function ($event) {
|
|
13812
|
+
return _vm.showItem(_vm.item.id, _vm.index);
|
|
13813
|
+
}
|
|
13149
13814
|
}
|
|
13150
|
-
}
|
|
13151
|
-
|
|
13152
|
-
|
|
13153
|
-
|
|
13154
|
-
|
|
13155
|
-
|
|
13156
|
-
|
|
13157
|
-
|
|
13815
|
+
}, [_c('b-icon-eye')], 1), _c('b-button', {
|
|
13816
|
+
attrs: {
|
|
13817
|
+
"variant": "secondary"
|
|
13818
|
+
},
|
|
13819
|
+
on: {
|
|
13820
|
+
"click": function ($event) {
|
|
13821
|
+
return _vm.updateItem(_vm.item.id, _vm.index);
|
|
13822
|
+
}
|
|
13158
13823
|
}
|
|
13159
|
-
}
|
|
13160
|
-
|
|
13161
|
-
|
|
13162
|
-
|
|
13163
|
-
|
|
13164
|
-
|
|
13165
|
-
|
|
13166
|
-
|
|
13824
|
+
}, [_c('b-icon-pencil')], 1), _c('b-button', {
|
|
13825
|
+
attrs: {
|
|
13826
|
+
"variant": "danger"
|
|
13827
|
+
},
|
|
13828
|
+
on: {
|
|
13829
|
+
"click": function ($event) {
|
|
13830
|
+
return _vm.removeItem(_vm.item.id, _vm.index);
|
|
13831
|
+
}
|
|
13167
13832
|
}
|
|
13168
|
-
}
|
|
13169
|
-
},
|
|
13833
|
+
}, [_c('b-icon-trash')], 1)];
|
|
13834
|
+
}, {
|
|
13835
|
+
"item": _vm.item,
|
|
13836
|
+
"index": _vm.index,
|
|
13837
|
+
"showItem": _vm.showItem,
|
|
13838
|
+
"updateItem": _vm.updateItem,
|
|
13839
|
+
"removeItem": _vm.removeItem
|
|
13840
|
+
})];
|
|
13170
13841
|
}, {
|
|
13171
13842
|
"item": _vm.item,
|
|
13172
13843
|
"index": _vm.index,
|
|
@@ -13190,7 +13861,15 @@ var _sfc_render$9 = function render() {
|
|
|
13190
13861
|
attrs: {
|
|
13191
13862
|
"variant": "danger"
|
|
13192
13863
|
}
|
|
13193
|
-
}, [_c('b-icon-x-circle')], 1)], 1) : column.type === 'date' ? _c('span', [_vm._v(" " + _vm._s(_vm.itemValue(column, _vm.item)) + " ")]) : column.type === 'state' ? _c('span', [_vm.
|
|
13864
|
+
}, [_c('b-icon-x-circle')], 1)], 1) : column.type === 'date' ? _c('span', [_vm._v(" " + _vm._s(_vm.itemValue(column, _vm.item)) + " ")]) : column.type === 'state' ? _c('span', [_vm.getStateOptionsForColumn(column, _vm.item).length > 0 ? _vm._l(_vm.getStateOptionsForColumn(column, _vm.item), function (option, optIndex) {
|
|
13865
|
+
return _c('b-badge', {
|
|
13866
|
+
key: optIndex,
|
|
13867
|
+
staticClass: "mr-1",
|
|
13868
|
+
attrs: {
|
|
13869
|
+
"variant": _vm.getStateBadgeVariant(option)
|
|
13870
|
+
}
|
|
13871
|
+
}, [_vm._v(" " + _vm._s(option.text) + " ")]);
|
|
13872
|
+
}) : _c('span', [_vm._v(" " + _vm._s(_vm.itemValue(column, _vm.item)) + " ")])], 2) : column.type === 'array' ? _c('span', [_vm._v(" " + _vm._s(_vm.getArrayValue(_vm.itemValue(column, _vm.item), column.displayProp, column.options)) + " ")]) : column.type === 'money' || column.type === 'price' ? _c('span', [_vm._v(" " + _vm._s(_vm.formatMoney(_vm.itemValue(column, _vm.item), column)) + " ")]) : column.type === 'number' && (column.thousandsSeparator || column.decimalSeparator || column.decimals !== undefined) ? _c('span', [_vm._v(" " + _vm._s(_vm.formatNumber(_vm.itemValue(column, _vm.item), column)) + " ")]) : _c('span', [_vm._v(" " + _vm._s(_vm.itemValue(column, _vm.item)) + " ")])];
|
|
13194
13873
|
}, {
|
|
13195
13874
|
"item": _vm.item,
|
|
13196
13875
|
"index": _vm.index,
|
|
@@ -13214,17 +13893,44 @@ const _sfc_main$8 = {
|
|
|
13214
13893
|
draggable,
|
|
13215
13894
|
ItemCard
|
|
13216
13895
|
},
|
|
13217
|
-
inject: ['displayMode', 'displayModes', 'items', 'draggableGroup', 'orderable', 'draggableOptions', 'itemsList', 'colLg', 'colXl', 'colMd', 'colSm', 'colXs', 'columns', 'cardClass', 'cardHideFooter', 'itemValue', 'getStateValue', 'getArrayValue', 'showItem', 'updateItem', 'removeItem', 'loading', 'infiniteScroll', 'messageEmptyResults', 'onSort', 'onDraggableAdded', 'onDraggableChange'],
|
|
13896
|
+
inject: ['displayMode', 'displayModes', 'items', 'draggableGroup', 'orderable', 'draggableOptions', 'itemsList', 'colLg', 'colXl', 'colMd', 'colSm', 'colXs', 'columns', 'cardClass', 'cardHideFooter', 'itemValue', 'getStateValue', 'getStateOptions', 'getStateBadgeVariant', 'getArrayValue', 'showItem', 'updateItem', 'removeItem', 'loading', 'firstLoad', 'infiniteScroll', 'messageEmptyResults', 'messageLoading', 'onSort', 'onDraggableAdded', 'onDraggableChange'],
|
|
13218
13897
|
data() {
|
|
13219
13898
|
return {
|
|
13220
13899
|
drag: false
|
|
13221
13900
|
};
|
|
13901
|
+
},
|
|
13902
|
+
computed: {
|
|
13903
|
+
currentDisplayMode() {
|
|
13904
|
+
if (!this.displayMode) return 1;
|
|
13905
|
+
if (this.displayMode.value !== undefined) {
|
|
13906
|
+
return this.displayMode.value;
|
|
13907
|
+
}
|
|
13908
|
+
if (typeof this.displayMode === 'function') {
|
|
13909
|
+
return this.displayMode();
|
|
13910
|
+
}
|
|
13911
|
+
return this.displayMode;
|
|
13912
|
+
},
|
|
13913
|
+
loadingValue() {
|
|
13914
|
+
return this.loading && this.loading.value !== undefined ? this.loading.value : this.loading;
|
|
13915
|
+
},
|
|
13916
|
+
firstLoadValue() {
|
|
13917
|
+
return this.firstLoad && this.firstLoad.value !== undefined ? this.firstLoad.value : this.firstLoad;
|
|
13918
|
+
}
|
|
13222
13919
|
}
|
|
13223
13920
|
};
|
|
13224
13921
|
var _sfc_render$8 = function render() {
|
|
13225
13922
|
var _vm = this,
|
|
13226
13923
|
_c = _vm._self._c;
|
|
13227
|
-
return _vm.
|
|
13924
|
+
return _vm.currentDisplayMode == _vm.displayModes.MODE_CARDS ? _c('div', [_vm.loadingValue || !_vm.firstLoadValue ? _c('div', {
|
|
13925
|
+
staticClass: "text-center p-5"
|
|
13926
|
+
}, [_c('b-spinner', {
|
|
13927
|
+
attrs: {
|
|
13928
|
+
"variant": "primary",
|
|
13929
|
+
"label": "Cargando..."
|
|
13930
|
+
}
|
|
13931
|
+
}), _c('p', {
|
|
13932
|
+
staticClass: "mt-2"
|
|
13933
|
+
}, [_vm._v(_vm._s(_vm.messageLoading))])], 1) : [_c('draggable', {
|
|
13228
13934
|
attrs: {
|
|
13229
13935
|
"group": _vm.draggableGroup,
|
|
13230
13936
|
"draggable": _vm.orderable ? '.item' : '.none',
|
|
@@ -13283,25 +13989,35 @@ var _sfc_render$8 = function render() {
|
|
|
13283
13989
|
"cardHideFooter": _vm.cardHideFooter,
|
|
13284
13990
|
"itemValue": _vm.itemValue,
|
|
13285
13991
|
"getStateValue": _vm.getStateValue,
|
|
13992
|
+
"getStateOptions": _vm.getStateOptions,
|
|
13993
|
+
"getStateBadgeVariant": _vm.getStateBadgeVariant,
|
|
13286
13994
|
"getArrayValue": _vm.getArrayValue,
|
|
13287
13995
|
"showItem": _vm.showItem,
|
|
13288
13996
|
"updateItem": _vm.updateItem,
|
|
13289
13997
|
"removeItem": _vm.removeItem
|
|
13290
|
-
}
|
|
13998
|
+
},
|
|
13999
|
+
scopedSlots: _vm._u([_vm._l(_vm.$scopedSlots, function (slot, name) {
|
|
14000
|
+
return {
|
|
14001
|
+
key: name,
|
|
14002
|
+
fn: function (slotProps) {
|
|
14003
|
+
return [_vm._t(name, null, null, slotProps)];
|
|
14004
|
+
}
|
|
14005
|
+
};
|
|
14006
|
+
})], null, true)
|
|
13291
14007
|
})];
|
|
13292
14008
|
}, {
|
|
13293
14009
|
"item": item
|
|
13294
14010
|
})], 2);
|
|
13295
|
-
}), 0)], 1),
|
|
14011
|
+
}), 0)], 1), _vm.firstLoadValue && _vm.itemsList && _vm.itemsList.length == 0 && !_vm.infiniteScroll ? _c('p', {
|
|
13296
14012
|
staticClass: "p-3"
|
|
13297
|
-
}, [_vm._v(" " + _vm._s(_vm.messageEmptyResults) + " ")]) : _vm._e()],
|
|
14013
|
+
}, [_vm._v(" " + _vm._s(_vm.messageEmptyResults) + " ")]) : _vm._e()]], 2) : _vm._e();
|
|
13298
14014
|
};
|
|
13299
14015
|
var _sfc_staticRenderFns$8 = [];
|
|
13300
14016
|
var __component__$8 = /*#__PURE__*/normalizeComponent(_sfc_main$8, _sfc_render$8, _sfc_staticRenderFns$8, false, null, null, null, null);
|
|
13301
14017
|
var CrudCards = __component__$8.exports;
|
|
13302
14018
|
|
|
13303
|
-
var css$
|
|
13304
|
-
n(css$
|
|
14019
|
+
var css$5 = "\n.kanban-card[data-v-ad923ee1] {\r\n background: #ffffff;\r\n border-radius: 4px;\r\n padding: 0.5rem;\r\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\r\n cursor: grab;\r\n transition: box-shadow 0.2s ease;\n}\n.kanban-card[data-v-ad923ee1]:hover {\r\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);\n}\n.kanban-card[data-v-ad923ee1]:active {\r\n cursor: grabbing;\n}\n.card-crud[data-v-ad923ee1] {\r\n border: 1px solid #e1e5e9;\n}\n.card-crud .card-title[data-v-ad923ee1] {\r\n font-size: 0.9rem;\r\n margin-bottom: 0.5rem;\n}\n.card-crud .card-text[data-v-ad923ee1] {\r\n font-size: 0.8rem;\r\n margin-bottom: 0.25rem;\n}\r\n";
|
|
14020
|
+
n(css$5, {});
|
|
13305
14021
|
|
|
13306
14022
|
const _sfc_main$7 = {
|
|
13307
14023
|
name: 'KanbanCard',
|
|
@@ -13313,10 +14029,49 @@ const _sfc_main$7 = {
|
|
|
13313
14029
|
cardHideFooter: Boolean,
|
|
13314
14030
|
itemValue: Function,
|
|
13315
14031
|
getStateValue: Function,
|
|
14032
|
+
getStateOptions: Function,
|
|
14033
|
+
getStateBadgeVariant: Function,
|
|
13316
14034
|
getArrayValue: Function,
|
|
13317
14035
|
showItem: Function,
|
|
13318
14036
|
updateItem: Function,
|
|
13319
14037
|
removeItem: Function
|
|
14038
|
+
},
|
|
14039
|
+
methods: {
|
|
14040
|
+
getStateOptionsForColumn(column, item) {
|
|
14041
|
+
if (column.type === 'state' && column.options) {
|
|
14042
|
+
return this.getStateOptions(this.itemValue(column, item), column.options);
|
|
14043
|
+
}
|
|
14044
|
+
return [];
|
|
14045
|
+
},
|
|
14046
|
+
formatNumber(value, column) {
|
|
14047
|
+
if (value === null || value === undefined || value === '') {
|
|
14048
|
+
return '';
|
|
14049
|
+
}
|
|
14050
|
+
const numValue = parseFloat(value);
|
|
14051
|
+
if (isNaN(numValue)) {
|
|
14052
|
+
return value;
|
|
14053
|
+
}
|
|
14054
|
+
const thousandsSep = column.thousandsSeparator || '.';
|
|
14055
|
+
const decimalSep = column.decimalSeparator || ',';
|
|
14056
|
+
const decimals = column.decimals !== undefined ? column.decimals : numValue % 1 === 0 ? 0 : 2;
|
|
14057
|
+
|
|
14058
|
+
// Formatear número con separadores
|
|
14059
|
+
const parts = numValue.toFixed(decimals).split('.');
|
|
14060
|
+
const integerPart = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, thousandsSep);
|
|
14061
|
+
const decimalPart = parts[1] || '';
|
|
14062
|
+
if (decimals > 0 && decimalPart) {
|
|
14063
|
+
return `${integerPart}${decimalSep}${decimalPart}`;
|
|
14064
|
+
}
|
|
14065
|
+
return integerPart;
|
|
14066
|
+
},
|
|
14067
|
+
formatMoney(value, column) {
|
|
14068
|
+
const formatted = this.formatNumber(value, column);
|
|
14069
|
+
if (formatted === '') {
|
|
14070
|
+
return '';
|
|
14071
|
+
}
|
|
14072
|
+
const symbol = column.symbol || '$';
|
|
14073
|
+
return `${symbol}${formatted}`;
|
|
14074
|
+
}
|
|
13320
14075
|
}
|
|
13321
14076
|
};
|
|
13322
14077
|
var _sfc_render$7 = function render() {
|
|
@@ -13339,35 +14094,43 @@ var _sfc_render$7 = function render() {
|
|
|
13339
14094
|
attrs: {
|
|
13340
14095
|
"size": "sm"
|
|
13341
14096
|
}
|
|
13342
|
-
}, [_vm._t("
|
|
13343
|
-
return [
|
|
13344
|
-
|
|
13345
|
-
|
|
13346
|
-
|
|
13347
|
-
|
|
13348
|
-
|
|
13349
|
-
|
|
14097
|
+
}, [_vm._t("rowActions", function () {
|
|
14098
|
+
return [_vm._t("rowAction", function () {
|
|
14099
|
+
return [_c('b-button', {
|
|
14100
|
+
attrs: {
|
|
14101
|
+
"variant": "primary"
|
|
14102
|
+
},
|
|
14103
|
+
on: {
|
|
14104
|
+
"click": function ($event) {
|
|
14105
|
+
return _vm.showItem(_vm.item.id, _vm.index);
|
|
14106
|
+
}
|
|
13350
14107
|
}
|
|
13351
|
-
}
|
|
13352
|
-
|
|
13353
|
-
|
|
13354
|
-
|
|
13355
|
-
|
|
13356
|
-
|
|
13357
|
-
|
|
13358
|
-
|
|
14108
|
+
}, [_c('b-icon-eye')], 1), _c('b-button', {
|
|
14109
|
+
attrs: {
|
|
14110
|
+
"variant": "secondary"
|
|
14111
|
+
},
|
|
14112
|
+
on: {
|
|
14113
|
+
"click": function ($event) {
|
|
14114
|
+
return _vm.updateItem(_vm.item.id, _vm.index);
|
|
14115
|
+
}
|
|
13359
14116
|
}
|
|
13360
|
-
}
|
|
13361
|
-
|
|
13362
|
-
|
|
13363
|
-
|
|
13364
|
-
|
|
13365
|
-
|
|
13366
|
-
|
|
13367
|
-
|
|
14117
|
+
}, [_c('b-icon-pencil')], 1), _c('b-button', {
|
|
14118
|
+
attrs: {
|
|
14119
|
+
"variant": "danger"
|
|
14120
|
+
},
|
|
14121
|
+
on: {
|
|
14122
|
+
"click": function ($event) {
|
|
14123
|
+
return _vm.removeItem(_vm.item.id, _vm.index);
|
|
14124
|
+
}
|
|
13368
14125
|
}
|
|
13369
|
-
}
|
|
13370
|
-
},
|
|
14126
|
+
}, [_c('b-icon-trash')], 1)];
|
|
14127
|
+
}, {
|
|
14128
|
+
"item": _vm.item,
|
|
14129
|
+
"index": _vm.index,
|
|
14130
|
+
"showItem": _vm.showItem,
|
|
14131
|
+
"updateItem": _vm.updateItem,
|
|
14132
|
+
"removeItem": _vm.removeItem
|
|
14133
|
+
})];
|
|
13371
14134
|
}, {
|
|
13372
14135
|
"item": _vm.item,
|
|
13373
14136
|
"index": _vm.index,
|
|
@@ -13395,7 +14158,15 @@ var _sfc_render$7 = function render() {
|
|
|
13395
14158
|
attrs: {
|
|
13396
14159
|
"variant": "danger"
|
|
13397
14160
|
}
|
|
13398
|
-
}, [_c('b-icon-x-circle')], 1)], 1) : column.type === 'date' ? _c('span', [_vm._v(" " + _vm._s(_vm.itemValue(column, _vm.item)) + " ")]) : column.type === 'state' ? _c('span', [_vm.
|
|
14161
|
+
}, [_c('b-icon-x-circle')], 1)], 1) : column.type === 'date' ? _c('span', [_vm._v(" " + _vm._s(_vm.itemValue(column, _vm.item)) + " ")]) : column.type === 'state' ? _c('span', [_vm.getStateOptionsForColumn(column, _vm.item).length > 0 ? _vm._l(_vm.getStateOptionsForColumn(column, _vm.item), function (option, optIndex) {
|
|
14162
|
+
return _c('b-badge', {
|
|
14163
|
+
key: optIndex,
|
|
14164
|
+
staticClass: "mr-1",
|
|
14165
|
+
attrs: {
|
|
14166
|
+
"variant": _vm.getStateBadgeVariant(option)
|
|
14167
|
+
}
|
|
14168
|
+
}, [_vm._v(" " + _vm._s(option.text) + " ")]);
|
|
14169
|
+
}) : _c('span', [_vm._v(" " + _vm._s(_vm.itemValue(column, _vm.item)) + " ")])], 2) : column.type === 'array' ? _c('span', [_vm._v(" " + _vm._s(_vm.getArrayValue(_vm.itemValue(column, _vm.item), column.displayProp, column.options)) + " ")]) : column.type === 'money' || column.type === 'price' ? _c('span', [_vm._v(" " + _vm._s(_vm.formatMoney(_vm.itemValue(column, _vm.item), column)) + " ")]) : column.type === 'number' && (column.thousandsSeparator || column.decimalSeparator || column.decimals !== undefined) ? _c('span', [_vm._v(" " + _vm._s(_vm.formatNumber(_vm.itemValue(column, _vm.item), column)) + " ")]) : _c('span', [_vm._v(" " + _vm._s(_vm.itemValue(column, _vm.item)) + " ")])];
|
|
13399
14170
|
}, {
|
|
13400
14171
|
"item": _vm.item,
|
|
13401
14172
|
"index": _vm.index,
|
|
@@ -13408,11 +14179,11 @@ var _sfc_render$7 = function render() {
|
|
|
13408
14179
|
})], 2)], 1);
|
|
13409
14180
|
};
|
|
13410
14181
|
var _sfc_staticRenderFns$7 = [];
|
|
13411
|
-
var __component__$7 = /*#__PURE__*/normalizeComponent(_sfc_main$7, _sfc_render$7, _sfc_staticRenderFns$7, false, null, "
|
|
14182
|
+
var __component__$7 = /*#__PURE__*/normalizeComponent(_sfc_main$7, _sfc_render$7, _sfc_staticRenderFns$7, false, null, "ad923ee1", null, null);
|
|
13412
14183
|
var KanbanCard = __component__$7.exports;
|
|
13413
14184
|
|
|
13414
|
-
var css$
|
|
13415
|
-
n(css$
|
|
14185
|
+
var css$4 = "\n.kanban-column[data-v-a56cf649] {\r\n background: #f4f5f7;\r\n border-radius: 8px;\r\n width: 300px;\r\n display: flex;\r\n flex-direction: column;\r\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n}\n.kanban-column-header[data-v-a56cf649] {\r\n font-weight: bold;\r\n padding: 0.5rem;\r\n background: #dfe1e6;\r\n border-radius: 8px 8px 0 0;\r\n text-align: center;\n}\n.kanban-column-body[data-v-a56cf649] {\r\n padding: 0.5rem;\r\n min-height: 100px;\r\n background: #ffffff;\r\n border-radius: 0 0 8px 8px;\r\n display: flex;\r\n flex-direction: column;\r\n gap: 0.5rem;\n}\r\n";
|
|
14186
|
+
n(css$4, {});
|
|
13416
14187
|
|
|
13417
14188
|
const _sfc_main$6 = {
|
|
13418
14189
|
name: 'KanbanColumn',
|
|
@@ -13427,6 +14198,8 @@ const _sfc_main$6 = {
|
|
|
13427
14198
|
columns: Array,
|
|
13428
14199
|
itemValue: Function,
|
|
13429
14200
|
getStateValue: Function,
|
|
14201
|
+
getStateOptions: Function,
|
|
14202
|
+
getStateBadgeVariant: Function,
|
|
13430
14203
|
getArrayValue: Function,
|
|
13431
14204
|
showItem: Function,
|
|
13432
14205
|
updateItem: Function,
|
|
@@ -13495,11 +14268,21 @@ var _sfc_render$6 = function render() {
|
|
|
13495
14268
|
"cardHideFooter": _vm.cardHideFooter,
|
|
13496
14269
|
"itemValue": _vm.itemValue,
|
|
13497
14270
|
"getStateValue": _vm.getStateValue,
|
|
14271
|
+
"getStateOptions": _vm.getStateOptions,
|
|
14272
|
+
"getStateBadgeVariant": _vm.getStateBadgeVariant,
|
|
13498
14273
|
"getArrayValue": _vm.getArrayValue,
|
|
13499
14274
|
"showItem": _vm.showItem,
|
|
13500
14275
|
"updateItem": _vm.updateItem,
|
|
13501
14276
|
"removeItem": _vm.removeItem
|
|
13502
|
-
}
|
|
14277
|
+
},
|
|
14278
|
+
scopedSlots: _vm._u([_vm._l(_vm.$scopedSlots, function (slot, name) {
|
|
14279
|
+
return {
|
|
14280
|
+
key: name,
|
|
14281
|
+
fn: function (slotProps) {
|
|
14282
|
+
return [_vm._t(name, null, null, slotProps)];
|
|
14283
|
+
}
|
|
14284
|
+
};
|
|
14285
|
+
})], null, true)
|
|
13503
14286
|
})];
|
|
13504
14287
|
}, {
|
|
13505
14288
|
"item": item
|
|
@@ -13507,18 +14290,18 @@ var _sfc_render$6 = function render() {
|
|
|
13507
14290
|
}), 0)], 1);
|
|
13508
14291
|
};
|
|
13509
14292
|
var _sfc_staticRenderFns$6 = [];
|
|
13510
|
-
var __component__$6 = /*#__PURE__*/normalizeComponent(_sfc_main$6, _sfc_render$6, _sfc_staticRenderFns$6, false, null, "
|
|
14293
|
+
var __component__$6 = /*#__PURE__*/normalizeComponent(_sfc_main$6, _sfc_render$6, _sfc_staticRenderFns$6, false, null, "a56cf649", null, null);
|
|
13511
14294
|
var KanbanColumn = __component__$6.exports;
|
|
13512
14295
|
|
|
13513
|
-
var css$
|
|
13514
|
-
n(css$
|
|
14296
|
+
var css$3 = "\n.kanban-board[data-v-516ff294] {\r\n display: flex;\r\n gap: 1rem;\r\n overflow-x: auto;\r\n padding: 1rem;\n}\n.kanban-column[data-v-516ff294] {\r\n background: #f4f5f7;\r\n border-radius: 8px;\r\n width: 300px;\r\n display: flex;\r\n flex-direction: column;\r\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\r\n min-width: 300px;\n}\r\n";
|
|
14297
|
+
n(css$3, {});
|
|
13515
14298
|
|
|
13516
14299
|
const _sfc_main$5 = {
|
|
13517
14300
|
name: 'KanbanBoard',
|
|
13518
14301
|
components: {
|
|
13519
14302
|
KanbanColumn
|
|
13520
14303
|
},
|
|
13521
|
-
inject: ['items', 'groupedAttribute', 'columns', 'itemValue', 'getStateValue', 'getArrayValue', 'showItem', 'updateItem', 'removeItem', 'cardClass', 'cardHideFooter', 'onDraggableChange']
|
|
14304
|
+
inject: ['items', 'groupedAttribute', 'columns', 'itemValue', 'getStateValue', 'getStateOptions', 'getStateBadgeVariant', 'getArrayValue', 'showItem', 'updateItem', 'removeItem', 'cardClass', 'cardHideFooter', 'onDraggableChange']
|
|
13522
14305
|
};
|
|
13523
14306
|
var _sfc_render$5 = function render() {
|
|
13524
14307
|
var _vm = this,
|
|
@@ -13537,6 +14320,8 @@ var _sfc_render$5 = function render() {
|
|
|
13537
14320
|
"columns": _vm.columns,
|
|
13538
14321
|
"itemValue": _vm.itemValue,
|
|
13539
14322
|
"getStateValue": _vm.getStateValue,
|
|
14323
|
+
"getStateOptions": _vm.getStateOptions,
|
|
14324
|
+
"getStateBadgeVariant": _vm.getStateBadgeVariant,
|
|
13540
14325
|
"getArrayValue": _vm.getArrayValue,
|
|
13541
14326
|
"showItem": _vm.showItem,
|
|
13542
14327
|
"updateItem": _vm.updateItem,
|
|
@@ -13546,12 +14331,20 @@ var _sfc_render$5 = function render() {
|
|
|
13546
14331
|
},
|
|
13547
14332
|
on: {
|
|
13548
14333
|
"draggableChange": _vm.onDraggableChange
|
|
13549
|
-
}
|
|
14334
|
+
},
|
|
14335
|
+
scopedSlots: _vm._u([_vm._l(_vm.$scopedSlots, function (slot, name) {
|
|
14336
|
+
return {
|
|
14337
|
+
key: name,
|
|
14338
|
+
fn: function (slotProps) {
|
|
14339
|
+
return [_vm._t(name, null, null, slotProps)];
|
|
14340
|
+
}
|
|
14341
|
+
};
|
|
14342
|
+
})], null, true)
|
|
13550
14343
|
})], 1);
|
|
13551
14344
|
}), 0);
|
|
13552
14345
|
};
|
|
13553
14346
|
var _sfc_staticRenderFns$5 = [];
|
|
13554
|
-
var __component__$5 = /*#__PURE__*/normalizeComponent(_sfc_main$5, _sfc_render$5, _sfc_staticRenderFns$5, false, null, "
|
|
14347
|
+
var __component__$5 = /*#__PURE__*/normalizeComponent(_sfc_main$5, _sfc_render$5, _sfc_staticRenderFns$5, false, null, "516ff294", null, null);
|
|
13555
14348
|
var KanbanBoard = __component__$5.exports;
|
|
13556
14349
|
|
|
13557
14350
|
const _sfc_main$4 = {
|
|
@@ -13559,12 +14352,33 @@ const _sfc_main$4 = {
|
|
|
13559
14352
|
components: {
|
|
13560
14353
|
KanbanBoard
|
|
13561
14354
|
},
|
|
13562
|
-
inject: ['displayMode', 'displayModes']
|
|
14355
|
+
inject: ['displayMode', 'displayModes'],
|
|
14356
|
+
computed: {
|
|
14357
|
+
currentDisplayMode() {
|
|
14358
|
+
if (!this.displayMode) return 1;
|
|
14359
|
+
if (this.displayMode.value !== undefined) {
|
|
14360
|
+
return this.displayMode.value;
|
|
14361
|
+
}
|
|
14362
|
+
if (typeof this.displayMode === 'function') {
|
|
14363
|
+
return this.displayMode();
|
|
14364
|
+
}
|
|
14365
|
+
return this.displayMode;
|
|
14366
|
+
}
|
|
14367
|
+
}
|
|
13563
14368
|
};
|
|
13564
14369
|
var _sfc_render$4 = function render() {
|
|
13565
14370
|
var _vm = this,
|
|
13566
14371
|
_c = _vm._self._c;
|
|
13567
|
-
return _vm.
|
|
14372
|
+
return _vm.currentDisplayMode == _vm.displayModes.MODE_KANBAN ? _c('div', [_c('KanbanBoard', {
|
|
14373
|
+
scopedSlots: _vm._u([_vm._l(_vm.$scopedSlots, function (slot, name) {
|
|
14374
|
+
return {
|
|
14375
|
+
key: name,
|
|
14376
|
+
fn: function (slotProps) {
|
|
14377
|
+
return [_vm._t(name, null, null, slotProps)];
|
|
14378
|
+
}
|
|
14379
|
+
};
|
|
14380
|
+
})], null, true)
|
|
14381
|
+
})], 1) : _vm._e();
|
|
13568
14382
|
};
|
|
13569
14383
|
var _sfc_staticRenderFns$4 = [];
|
|
13570
14384
|
var __component__$4 = /*#__PURE__*/normalizeComponent(_sfc_main$4, _sfc_render$4, _sfc_staticRenderFns$4, false, null, null, null, null);
|
|
@@ -13572,14 +14386,41 @@ var CrudKanban = __component__$4.exports;
|
|
|
13572
14386
|
|
|
13573
14387
|
const _sfc_main$3 = {
|
|
13574
14388
|
name: 'CrudCustom',
|
|
13575
|
-
inject: ['displayMode', 'displayModes', 'listContainerClass', 'listItemClass', 'loading', 'items', 'infiniteScroll', 'messageEmptyResults', 'itemsList']
|
|
14389
|
+
inject: ['displayMode', 'displayModes', 'listContainerClass', 'listItemClass', 'loading', 'firstLoad', 'items', 'infiniteScroll', 'messageEmptyResults', 'messageLoading', 'itemsList'],
|
|
14390
|
+
computed: {
|
|
14391
|
+
currentDisplayMode() {
|
|
14392
|
+
if (!this.displayMode) return 1;
|
|
14393
|
+
if (this.displayMode.value !== undefined) {
|
|
14394
|
+
return this.displayMode.value;
|
|
14395
|
+
}
|
|
14396
|
+
if (typeof this.displayMode === 'function') {
|
|
14397
|
+
return this.displayMode();
|
|
14398
|
+
}
|
|
14399
|
+
return this.displayMode;
|
|
14400
|
+
},
|
|
14401
|
+
loadingValue() {
|
|
14402
|
+
return this.loading && this.loading.value !== undefined ? this.loading.value : this.loading;
|
|
14403
|
+
},
|
|
14404
|
+
firstLoadValue() {
|
|
14405
|
+
return this.firstLoad && this.firstLoad.value !== undefined ? this.firstLoad.value : this.firstLoad;
|
|
14406
|
+
}
|
|
14407
|
+
}
|
|
13576
14408
|
};
|
|
13577
14409
|
var _sfc_render$3 = function render() {
|
|
13578
14410
|
var _vm = this,
|
|
13579
14411
|
_c = _vm._self._c;
|
|
13580
|
-
return _vm.
|
|
14412
|
+
return _vm.currentDisplayMode == _vm.displayModes.MODE_CUSTOM ? _c('div', [_c('div', {
|
|
13581
14413
|
class: _vm.listContainerClass
|
|
13582
|
-
}, [
|
|
14414
|
+
}, [_vm.loadingValue || !_vm.firstLoadValue ? _c('div', {
|
|
14415
|
+
staticClass: "text-center p-5"
|
|
14416
|
+
}, [_c('b-spinner', {
|
|
14417
|
+
attrs: {
|
|
14418
|
+
"variant": "primary",
|
|
14419
|
+
"label": "Cargando..."
|
|
14420
|
+
}
|
|
14421
|
+
}), _c('p', {
|
|
14422
|
+
staticClass: "mt-2"
|
|
14423
|
+
}, [_vm._v(_vm._s(_vm.messageLoading))])], 1) : [_vm.firstLoadValue && _vm.itemsList && _vm.itemsList.length == 0 && !_vm.infiniteScroll ? _c('p', {
|
|
13583
14424
|
staticClass: "p-3"
|
|
13584
14425
|
}, [_vm._v(" " + _vm._s(_vm.messageEmptyResults) + " ")]) : _vm._e(), _vm._l(_vm.itemsList, function (item, index) {
|
|
13585
14426
|
return _c('div', {
|
|
@@ -13588,15 +14429,39 @@ var _sfc_render$3 = function render() {
|
|
|
13588
14429
|
}, [_vm._t("card", null, {
|
|
13589
14430
|
"item": item
|
|
13590
14431
|
})], 2);
|
|
13591
|
-
})], 2)]) : _vm._e();
|
|
14432
|
+
})]], 2)]) : _vm._e();
|
|
13592
14433
|
};
|
|
13593
14434
|
var _sfc_staticRenderFns$3 = [];
|
|
13594
14435
|
var __component__$3 = /*#__PURE__*/normalizeComponent(_sfc_main$3, _sfc_render$3, _sfc_staticRenderFns$3, false, null, null, null, null);
|
|
13595
14436
|
var CrudCustom = __component__$3.exports;
|
|
13596
14437
|
|
|
14438
|
+
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";
|
|
14439
|
+
n(css$2, {});
|
|
14440
|
+
|
|
13597
14441
|
const _sfc_main$2 = {
|
|
13598
14442
|
name: 'CrudModals',
|
|
13599
|
-
inject: ['modelName', 'title', 'loading', 'validate', 'item', 'messageSave', 'showImport', 'showExport', 'fileImport', 'selectedItems', 'exportFormat', 'saveItem', 'importItems', 'exportItems']
|
|
14443
|
+
inject: ['modelName', 'title', 'loading', 'validate', 'item', 'getItem', 'messageSave', 'showImport', 'showExport', 'fileImport', 'selectedItems', 'exportFormat', 'saveItem', 'importItems', 'exportItems'],
|
|
14444
|
+
computed: {
|
|
14445
|
+
// Computed property para asegurar reactividad del item inyectado
|
|
14446
|
+
reactiveItem() {
|
|
14447
|
+
// Si hay una función getItem, usarla para obtener el item actual
|
|
14448
|
+
if (this.getItem && typeof this.getItem === 'function') {
|
|
14449
|
+
return this.getItem();
|
|
14450
|
+
}
|
|
14451
|
+
// Si no, usar el item inyectado directamente
|
|
14452
|
+
return this.item;
|
|
14453
|
+
}
|
|
14454
|
+
},
|
|
14455
|
+
watch: {
|
|
14456
|
+
// Watch el item inyectado para forzar actualización
|
|
14457
|
+
item: {
|
|
14458
|
+
handler() {
|
|
14459
|
+
this.$forceUpdate();
|
|
14460
|
+
},
|
|
14461
|
+
deep: true,
|
|
14462
|
+
immediate: true
|
|
14463
|
+
}
|
|
14464
|
+
}
|
|
13600
14465
|
};
|
|
13601
14466
|
var _sfc_render$2 = function render() {
|
|
13602
14467
|
var _vm = this,
|
|
@@ -13618,7 +14483,7 @@ var _sfc_render$2 = function render() {
|
|
|
13618
14483
|
on: {
|
|
13619
14484
|
"submit": _vm.saveItem
|
|
13620
14485
|
}
|
|
13621
|
-
}, [_vm.
|
|
14486
|
+
}, [_vm.reactiveItem ? [_vm._t("form", function () {
|
|
13622
14487
|
return [_c('b-form-group', {
|
|
13623
14488
|
attrs: {
|
|
13624
14489
|
"label": "Nombre:",
|
|
@@ -13631,16 +14496,16 @@ var _sfc_render$2 = function render() {
|
|
|
13631
14496
|
"placeholder": "Nombre"
|
|
13632
14497
|
},
|
|
13633
14498
|
model: {
|
|
13634
|
-
value: _vm.
|
|
14499
|
+
value: _vm.reactiveItem.title,
|
|
13635
14500
|
callback: function ($$v) {
|
|
13636
|
-
_vm.$set(_vm.
|
|
14501
|
+
_vm.$set(_vm.reactiveItem, "title", $$v);
|
|
13637
14502
|
},
|
|
13638
|
-
expression: "
|
|
14503
|
+
expression: "reactiveItem.title"
|
|
13639
14504
|
}
|
|
13640
14505
|
})], 1)];
|
|
13641
14506
|
}, {
|
|
13642
|
-
"item": _vm.
|
|
13643
|
-
}) : _vm._e(), _c('b-button', {
|
|
14507
|
+
"item": _vm.reactiveItem
|
|
14508
|
+
})] : _vm._e(), _c('b-button', {
|
|
13644
14509
|
attrs: {
|
|
13645
14510
|
"block": "",
|
|
13646
14511
|
"type": "submit",
|
|
@@ -13651,8 +14516,8 @@ var _sfc_render$2 = function render() {
|
|
|
13651
14516
|
attrs: {
|
|
13652
14517
|
"small": ""
|
|
13653
14518
|
}
|
|
13654
|
-
}) : _vm._e(), _vm._v(_vm._s(_vm.messageSave) + " ")], 1)], 2)] : _vm._e(), !_vm.validate ? [_vm.
|
|
13655
|
-
return _vm._l(_vm.
|
|
14519
|
+
}) : _vm._e(), _vm._v(_vm._s(_vm.messageSave) + " ")], 1)], 2)] : _vm._e(), !_vm.validate ? [_vm.reactiveItem ? [_vm._t("form", function () {
|
|
14520
|
+
return _vm._l(_vm.reactiveItem, function (value, key) {
|
|
13656
14521
|
return _c('b-form-group', {
|
|
13657
14522
|
key: key,
|
|
13658
14523
|
attrs: {
|
|
@@ -13664,17 +14529,17 @@ var _sfc_render$2 = function render() {
|
|
|
13664
14529
|
"required": ""
|
|
13665
14530
|
},
|
|
13666
14531
|
model: {
|
|
13667
|
-
value: _vm.
|
|
14532
|
+
value: _vm.reactiveItem[key],
|
|
13668
14533
|
callback: function ($$v) {
|
|
13669
|
-
_vm.$set(_vm.
|
|
14534
|
+
_vm.$set(_vm.reactiveItem, key, $$v);
|
|
13670
14535
|
},
|
|
13671
|
-
expression: "
|
|
14536
|
+
expression: "reactiveItem[key]"
|
|
13672
14537
|
}
|
|
13673
14538
|
})], 1);
|
|
13674
14539
|
});
|
|
13675
14540
|
}, {
|
|
13676
|
-
"item": _vm.
|
|
13677
|
-
}) : _vm._e(), _c('b-button', {
|
|
14541
|
+
"item": _vm.reactiveItem
|
|
14542
|
+
})] : _vm._e(), _c('b-button', {
|
|
13678
14543
|
attrs: {
|
|
13679
14544
|
"block": "",
|
|
13680
14545
|
"type": "submit",
|
|
@@ -13698,8 +14563,8 @@ var _sfc_render$2 = function render() {
|
|
|
13698
14563
|
"title": _vm.title,
|
|
13699
14564
|
"no-close-on-backdrop": ""
|
|
13700
14565
|
}
|
|
13701
|
-
}, [_vm.
|
|
13702
|
-
return [_c('b-list-group', _vm._l(_vm.
|
|
14566
|
+
}, [_vm.reactiveItem ? [_vm._t("show", function () {
|
|
14567
|
+
return [_c('b-list-group', _vm._l(_vm.reactiveItem, function (value, key) {
|
|
13703
14568
|
return _c('b-list-group-item', {
|
|
13704
14569
|
key: key
|
|
13705
14570
|
}, [_c('b-row', {
|
|
@@ -13716,8 +14581,8 @@ var _sfc_render$2 = function render() {
|
|
|
13716
14581
|
}, [_vm._v(_vm._s(JSON.stringify(value)))])], 1)], 1);
|
|
13717
14582
|
}), 1)];
|
|
13718
14583
|
}, {
|
|
13719
|
-
"item": _vm.
|
|
13720
|
-
}) : _vm._e()], 2), _vm.showImport ? _c('b-modal', {
|
|
14584
|
+
"item": _vm.reactiveItem
|
|
14585
|
+
})] : _vm._e()], 2), _vm.showImport ? _c('b-modal', {
|
|
13721
14586
|
ref: "modal-import",
|
|
13722
14587
|
attrs: {
|
|
13723
14588
|
"title": "Importar",
|
|
@@ -13770,34 +14635,42 @@ var _sfc_render$2 = function render() {
|
|
|
13770
14635
|
"show": _vm.loading,
|
|
13771
14636
|
"rounded": "sm"
|
|
13772
14637
|
}
|
|
13773
|
-
}, [_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('
|
|
13774
|
-
|
|
13775
|
-
|
|
13776
|
-
|
|
13777
|
-
value: _vm.exportFormat,
|
|
13778
|
-
expression: "exportFormat"
|
|
13779
|
-
}],
|
|
13780
|
-
staticClass: "form-control",
|
|
13781
|
-
on: {
|
|
13782
|
-
"change": function ($event) {
|
|
13783
|
-
var $$selectedVal = Array.prototype.filter.call($event.target.options, function (o) {
|
|
13784
|
-
return o.selected;
|
|
13785
|
-
}).map(function (o) {
|
|
13786
|
-
var val = "_value" in o ? o._value : o.value;
|
|
13787
|
-
return val;
|
|
13788
|
-
});
|
|
13789
|
-
_vm.exportFormat = $event.target.multiple ? $$selectedVal : $$selectedVal[0];
|
|
13790
|
-
}
|
|
14638
|
+
}, [_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', {
|
|
14639
|
+
staticClass: "mt-3",
|
|
14640
|
+
attrs: {
|
|
14641
|
+
"label": "Seleccione el formato de exportación:"
|
|
13791
14642
|
}
|
|
13792
|
-
}, [_c('
|
|
14643
|
+
}, [_c('div', {
|
|
14644
|
+
staticClass: "export-format-options"
|
|
14645
|
+
}, [_c('b-form-radio', {
|
|
14646
|
+
staticClass: "export-format-radio",
|
|
13793
14647
|
attrs: {
|
|
13794
14648
|
"value": "JSON"
|
|
14649
|
+
},
|
|
14650
|
+
model: {
|
|
14651
|
+
value: _vm.exportFormat,
|
|
14652
|
+
callback: function ($$v) {
|
|
14653
|
+
_vm.exportFormat = $$v;
|
|
14654
|
+
},
|
|
14655
|
+
expression: "exportFormat"
|
|
13795
14656
|
}
|
|
13796
|
-
}, [
|
|
14657
|
+
}, [_c('b-icon-file-text', {
|
|
14658
|
+
staticClass: "mr-2"
|
|
14659
|
+
}), _vm._v(" JSON ")], 1), _c('b-form-radio', {
|
|
14660
|
+
staticClass: "export-format-radio",
|
|
13797
14661
|
attrs: {
|
|
13798
14662
|
"value": "XLSX"
|
|
14663
|
+
},
|
|
14664
|
+
model: {
|
|
14665
|
+
value: _vm.exportFormat,
|
|
14666
|
+
callback: function ($$v) {
|
|
14667
|
+
_vm.exportFormat = $$v;
|
|
14668
|
+
},
|
|
14669
|
+
expression: "exportFormat"
|
|
13799
14670
|
}
|
|
13800
|
-
}, [
|
|
14671
|
+
}, [_c('b-icon-table', {
|
|
14672
|
+
staticClass: "mr-2"
|
|
14673
|
+
}), _vm._v(" XLSX ")], 1)], 1)]), _c('div', {
|
|
13801
14674
|
staticClass: "text-center mt-3"
|
|
13802
14675
|
}, [_c('b-button', {
|
|
13803
14676
|
attrs: {
|
|
@@ -13809,13 +14682,13 @@ var _sfc_render$2 = function render() {
|
|
|
13809
14682
|
return _vm.exportItems();
|
|
13810
14683
|
}
|
|
13811
14684
|
}
|
|
13812
|
-
}, [_c('b-icon-cloud-upload'), _vm._v(" " + _vm._s(_vm.loading ? "Cargando..." : "Exportar") + " ")], 1)], 1)])];
|
|
14685
|
+
}, [_c('b-icon-cloud-upload'), _vm._v(" " + _vm._s(_vm.loading ? "Cargando..." : "Exportar") + " ")], 1)], 1)], 1)];
|
|
13813
14686
|
}, {
|
|
13814
14687
|
"item": _vm.item
|
|
13815
14688
|
}) : _vm._e()], 2) : _vm._e()], 1);
|
|
13816
14689
|
};
|
|
13817
14690
|
var _sfc_staticRenderFns$2 = [];
|
|
13818
|
-
var __component__$2 = /*#__PURE__*/normalizeComponent(_sfc_main$2, _sfc_render$2, _sfc_staticRenderFns$2, false, null,
|
|
14691
|
+
var __component__$2 = /*#__PURE__*/normalizeComponent(_sfc_main$2, _sfc_render$2, _sfc_staticRenderFns$2, false, null, "051e3fd7", null, null);
|
|
13819
14692
|
var CrudModals = __component__$2.exports;
|
|
13820
14693
|
|
|
13821
14694
|
var vueInfiniteLoading = {exports: {}};
|
|
@@ -13834,7 +14707,7 @@ vueInfiniteLoading.exports;
|
|
|
13834
14707
|
var vueInfiniteLoadingExports = vueInfiniteLoading.exports;
|
|
13835
14708
|
var InfiniteLoading = /*@__PURE__*/getDefaultExportFromCjs(vueInfiniteLoadingExports);
|
|
13836
14709
|
|
|
13837
|
-
var css$1 = "\n.paginator-container[data-v-
|
|
14710
|
+
var css$1 = "\n.paginator-container[data-v-73e31fd7] {\n display: grid;\n grid-template-columns: 1fr auto 1fr;\n align-items: center;\n width: 100%;\n margin-top: 1rem;\n gap: 1rem;\n}\n.paginator-data[data-v-73e31fd7] {\n display: flex;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: center;\n gap: 0.5rem;\n font-size: 0.875rem;\n grid-column: 1;\n}\n.paginator-badge[data-v-73e31fd7] {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.375rem 0.625rem;\n background-color: #f8f9fa;\n border: 1px solid #dee2e6;\n border-radius: 0.375rem;\n color: #495057;\n transition: all 0.2s ease;\n}\n.paginator-badge[data-v-73e31fd7]:hover {\n background-color: #e9ecef;\n border-color: #ced4da;\n}\n.paginator-label[data-v-73e31fd7] {\n font-weight: 500;\n color: #6c757d;\n}\n.paginator-value[data-v-73e31fd7] {\n font-weight: 600;\n color: #212529;\n}\n.paginator-dropdown[data-v-73e31fd7] {\n font-size: 0.875rem;\n}\n.paginator-dropdown[data-v-73e31fd7] .btn {\n padding: 0.375rem 0.625rem;\n font-size: 0.875rem;\n background-color: #f8f9fa;\n border: 1px solid #dee2e6;\n color: #495057;\n}\n.paginator-dropdown[data-v-73e31fd7] .btn:hover {\n background-color: #e9ecef;\n border-color: #ced4da;\n}\n.crud-paginator[data-v-73e31fd7] {\n display: flex;\n justify-content: center;\n align-items: center;\n grid-column: 2;\n}\n.paginator-badge-dropdown[data-v-73e31fd7] {\n z-index: 1;\n position: relative;\n}\n.paginator-badge-dropdown[data-v-73e31fd7] .btn {\n padding: 0.375rem 0.625rem;\n font-size: 0.875rem;\n background-color: #f8f9fa;\n border: 1px solid #dee2e6;\n color: #495057;\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n}\n.paginator-badge-dropdown[data-v-73e31fd7] .btn:hover {\n background-color: #e9ecef;\n border-color: #ced4da;\n}\n";
|
|
13838
14711
|
n(css$1, {});
|
|
13839
14712
|
|
|
13840
14713
|
const _sfc_main$1 = {
|
|
@@ -13842,7 +14715,7 @@ const _sfc_main$1 = {
|
|
|
13842
14715
|
components: {
|
|
13843
14716
|
InfiniteLoading
|
|
13844
14717
|
},
|
|
13845
|
-
inject: ['infiniteScroll', 'infiniteScrollKey', 'messageLoading', 'messageNoMore', 'messageEmptyResults', 'loading', 'items', 'pagination', 'selectedItems', 'showPaginator', 'infiniteHandler', 'onPaginationChange', 'onPerPageChange', 'clearSelection'],
|
|
14718
|
+
inject: ['infiniteScroll', 'infiniteScrollKey', 'messageLoading', 'messageNoMore', 'messageEmptyResults', 'loading', 'firstLoad', 'items', 'pagination', 'selectedItems', 'showPaginator', 'infiniteHandler', 'onPaginationChange', 'onPerPageChange', 'clearSelection'],
|
|
13846
14719
|
data() {
|
|
13847
14720
|
return {
|
|
13848
14721
|
perPageOptions: [10, 20, 50, 100]
|
|
@@ -13852,6 +14725,12 @@ const _sfc_main$1 = {
|
|
|
13852
14725
|
selectedItemsCount() {
|
|
13853
14726
|
// Computed para forzar reactividad del contador
|
|
13854
14727
|
return this.selectedItems ? this.selectedItems.length : 0;
|
|
14728
|
+
},
|
|
14729
|
+
loadingValue() {
|
|
14730
|
+
return this.loading && this.loading.value !== undefined ? this.loading.value : this.loading;
|
|
14731
|
+
},
|
|
14732
|
+
firstLoadValue() {
|
|
14733
|
+
return this.firstLoad && this.firstLoad.value !== undefined ? this.firstLoad.value : this.firstLoad;
|
|
13855
14734
|
}
|
|
13856
14735
|
}
|
|
13857
14736
|
};
|
|
@@ -13879,14 +14758,14 @@ var _sfc_render$1 = function render() {
|
|
|
13879
14758
|
"slot": "no-more"
|
|
13880
14759
|
},
|
|
13881
14760
|
slot: "no-more"
|
|
13882
|
-
}, [!_vm.
|
|
14761
|
+
}, [!_vm.loadingValue ? _c('div', {
|
|
13883
14762
|
staticClass: "text-center"
|
|
13884
14763
|
}, [_vm._v(_vm._s(_vm.messageNoMore))]) : _vm._e()]), _c('div', {
|
|
13885
14764
|
attrs: {
|
|
13886
14765
|
"slot": "no-results"
|
|
13887
14766
|
},
|
|
13888
14767
|
slot: "no-results"
|
|
13889
|
-
}, [!_vm.
|
|
14768
|
+
}, [!_vm.loadingValue && _vm.firstLoadValue ? _c('div', {
|
|
13890
14769
|
staticClass: "text-center"
|
|
13891
14770
|
}, [_vm._v(_vm._s(_vm.items.length == 0 ? _vm.messageEmptyResults : _vm.messageNoMore))]) : _vm._e()])]) : _vm._e(), !_vm.infiniteScroll ? _c('div', {
|
|
13892
14771
|
staticClass: "paginator-container"
|
|
@@ -13952,7 +14831,7 @@ var _sfc_render$1 = function render() {
|
|
|
13952
14831
|
}) : _vm._e()], 1)]) : _vm._e()], 1);
|
|
13953
14832
|
};
|
|
13954
14833
|
var _sfc_staticRenderFns$1 = [];
|
|
13955
|
-
var __component__$1 = /*#__PURE__*/normalizeComponent(_sfc_main$1, _sfc_render$1, _sfc_staticRenderFns$1, false, null, "
|
|
14834
|
+
var __component__$1 = /*#__PURE__*/normalizeComponent(_sfc_main$1, _sfc_render$1, _sfc_staticRenderFns$1, false, null, "73e31fd7", null, null);
|
|
13956
14835
|
var CrudPagination = __component__$1.exports;
|
|
13957
14836
|
|
|
13958
14837
|
var crudData = {
|
|
@@ -13982,6 +14861,20 @@ var crudData = {
|
|
|
13982
14861
|
filterSidebarOpen: false,
|
|
13983
14862
|
internalFilters: [],
|
|
13984
14863
|
forceRecomputeCounter: 0,
|
|
14864
|
+
_displayMode: 1,
|
|
14865
|
+
// Propiedad local para displayMode (se inicializará desde la prop en created())
|
|
14866
|
+
displayModeReactive: Vue.observable({
|
|
14867
|
+
value: 1
|
|
14868
|
+
}),
|
|
14869
|
+
// Objeto reactivo para provide/inject
|
|
14870
|
+
loadingReactive: Vue.observable({
|
|
14871
|
+
value: false
|
|
14872
|
+
}),
|
|
14873
|
+
// Objeto reactivo para loading
|
|
14874
|
+
firstLoadReactive: Vue.observable({
|
|
14875
|
+
value: false
|
|
14876
|
+
}),
|
|
14877
|
+
// Objeto reactivo para firstLoad
|
|
13985
14878
|
displayModes: {
|
|
13986
14879
|
MODE_TABLE: 1,
|
|
13987
14880
|
MODE_CARDS: 2,
|
|
@@ -14012,7 +14905,7 @@ var crudData = {
|
|
|
14012
14905
|
if (this.groupedSplit) {
|
|
14013
14906
|
return true;
|
|
14014
14907
|
}
|
|
14015
|
-
return this.
|
|
14908
|
+
return this._displayMode == this.displayModes.MODE_KANBAN;
|
|
14016
14909
|
},
|
|
14017
14910
|
itemsList() {
|
|
14018
14911
|
const items = this.ajax ? this.items : this.items.slice(this.paginationIndexStart, this.paginationIndexEnd);
|
|
@@ -14054,7 +14947,15 @@ var crudData = {
|
|
|
14054
14947
|
this.internalFilters.forEach(f => {
|
|
14055
14948
|
if (f.value) {
|
|
14056
14949
|
let colname = f.column.replace("_sort", "").replace("_from", "").replace("_to", "");
|
|
14057
|
-
|
|
14950
|
+
let op = f.op;
|
|
14951
|
+
|
|
14952
|
+
// Aplicar operadores automáticamente para filtros de rango
|
|
14953
|
+
if (f.column.endsWith("_from")) {
|
|
14954
|
+
op = ">=";
|
|
14955
|
+
} else if (f.column.endsWith("_to")) {
|
|
14956
|
+
op = "<=";
|
|
14957
|
+
}
|
|
14958
|
+
filter.push([colname, op, f.value]);
|
|
14058
14959
|
}
|
|
14059
14960
|
});
|
|
14060
14961
|
return filter;
|
|
@@ -14094,7 +14995,23 @@ var crudData = {
|
|
|
14094
14995
|
this.fetchItems();
|
|
14095
14996
|
}
|
|
14096
14997
|
},
|
|
14097
|
-
displayMode()
|
|
14998
|
+
// Watcher para la prop displayMode (sincroniza cuando cambia desde el componente padre)
|
|
14999
|
+
displayMode(newVal) {
|
|
15000
|
+
// Usar $props para acceder a la prop y evitar conflictos con data properties
|
|
15001
|
+
const propValue = this.$props && this.$props.displayMode !== undefined ? this.$props.displayMode : newVal;
|
|
15002
|
+
if (propValue !== undefined && this._displayMode !== propValue) {
|
|
15003
|
+
this._displayMode = propValue;
|
|
15004
|
+
if (this.displayModeReactive) {
|
|
15005
|
+
this.displayModeReactive.value = propValue;
|
|
15006
|
+
}
|
|
15007
|
+
}
|
|
15008
|
+
},
|
|
15009
|
+
// Watcher para la propiedad local _displayMode (para forzar re-renderizado)
|
|
15010
|
+
_displayMode(newVal) {
|
|
15011
|
+
// Actualizar el objeto reactivo si existe
|
|
15012
|
+
if (this.displayModeReactive) {
|
|
15013
|
+
this.displayModeReactive.value = newVal;
|
|
15014
|
+
}
|
|
14098
15015
|
// Forzar re-renderizado cuando cambia el modo de visualización
|
|
14099
15016
|
this.$nextTick(() => {
|
|
14100
15017
|
this.forceRecomputeCounter++;
|
|
@@ -14152,7 +15069,29 @@ var crudData = {
|
|
|
14152
15069
|
});
|
|
14153
15070
|
},
|
|
14154
15071
|
deep: true
|
|
15072
|
+
},
|
|
15073
|
+
loading: {
|
|
15074
|
+
handler(newVal) {
|
|
15075
|
+
this.loadingReactive.value = newVal;
|
|
15076
|
+
},
|
|
15077
|
+
immediate: true
|
|
15078
|
+
},
|
|
15079
|
+
firstLoad: {
|
|
15080
|
+
handler(newVal) {
|
|
15081
|
+
this.firstLoadReactive.value = newVal;
|
|
15082
|
+
},
|
|
15083
|
+
immediate: true
|
|
15084
|
+
}
|
|
15085
|
+
},
|
|
15086
|
+
created() {
|
|
15087
|
+
// Inicializar _displayMode desde la prop displayMode en created() para que esté disponible en provide()
|
|
15088
|
+
if (this.$props && this.$props.displayMode !== undefined) {
|
|
15089
|
+
this._displayMode = this.$props.displayMode;
|
|
15090
|
+
this.displayModeReactive.value = this._displayMode;
|
|
14155
15091
|
}
|
|
15092
|
+
// Inicializar valores reactivos
|
|
15093
|
+
this.loadingReactive.value = this.loading;
|
|
15094
|
+
this.firstLoadReactive.value = this.firstLoad;
|
|
14156
15095
|
},
|
|
14157
15096
|
mounted() {
|
|
14158
15097
|
const now = Math.floor(Date.now() / 1000);
|
|
@@ -19501,7 +20440,7 @@ var crudApi = {
|
|
|
19501
20440
|
dataKey: 'data',
|
|
19502
20441
|
params: {
|
|
19503
20442
|
page: page,
|
|
19504
|
-
limit: this.pagination.
|
|
20443
|
+
limit: this.pagination.per_page,
|
|
19505
20444
|
filters: JSON.stringify(this.finalFilters)
|
|
19506
20445
|
}
|
|
19507
20446
|
});
|
|
@@ -19535,7 +20474,7 @@ var crudApi = {
|
|
|
19535
20474
|
return axios.get(this.apiUrl + "/" + this.modelName, {
|
|
19536
20475
|
params: {
|
|
19537
20476
|
page: page,
|
|
19538
|
-
limit: this.
|
|
20477
|
+
limit: this.pagination.per_page,
|
|
19539
20478
|
filters: JSON.stringify(this.finalFilters)
|
|
19540
20479
|
}
|
|
19541
20480
|
}).then(response => {
|
|
@@ -19855,10 +20794,10 @@ var crudApi = {
|
|
|
19855
20794
|
ids: ids
|
|
19856
20795
|
}
|
|
19857
20796
|
}).then(response => {
|
|
19858
|
-
this.items = this.items.filter(it => !ids.includes(it.id));
|
|
19859
20797
|
this.toastSuccess("Elemento/s eliminado.");
|
|
19860
20798
|
this.$emit("itemDeleted", {});
|
|
19861
|
-
this.
|
|
20799
|
+
this.clearSelection();
|
|
20800
|
+
this.refresh();
|
|
19862
20801
|
}).catch(error => {
|
|
19863
20802
|
this.toastError(error);
|
|
19864
20803
|
this.loading = false;
|
|
@@ -19868,8 +20807,10 @@ var crudApi = {
|
|
|
19868
20807
|
let ids = this.selectedItems.map(it => it.id);
|
|
19869
20808
|
this.items = this.items.filter(it => !ids.includes(it.id));
|
|
19870
20809
|
this.item = null;
|
|
20810
|
+
this.pagination.total = this.items.length;
|
|
19871
20811
|
this.toastSuccess("Elemento Eliminado");
|
|
19872
20812
|
this.$emit("itemDeleted", {});
|
|
20813
|
+
this.clearSelection();
|
|
19873
20814
|
this.loading = false;
|
|
19874
20815
|
},
|
|
19875
20816
|
async deleteItemBulkVuex() {
|
|
@@ -19891,7 +20832,15 @@ var crudApi = {
|
|
|
19891
20832
|
return;
|
|
19892
20833
|
}
|
|
19893
20834
|
}
|
|
20835
|
+
|
|
20836
|
+
// Actualizar items desde el store Vuex
|
|
20837
|
+
let itemsResult = this.model.query().withAll().get();
|
|
20838
|
+
if (itemsResult) {
|
|
20839
|
+
this.items = itemsResult;
|
|
20840
|
+
}
|
|
19894
20841
|
this.toastSuccess("Elemento eliminados.");
|
|
20842
|
+
this.clearSelection();
|
|
20843
|
+
this.loading = false;
|
|
19895
20844
|
},
|
|
19896
20845
|
saveSort() {
|
|
19897
20846
|
if (this.orderable) {
|
|
@@ -20025,15 +20974,15 @@ var crudFilters = {
|
|
|
20025
20974
|
setupFilters() {
|
|
20026
20975
|
this.columns.forEach(column => {
|
|
20027
20976
|
if (this.isColumnHasFilter(column)) {
|
|
20028
|
-
if (column.type == "date") {
|
|
20977
|
+
if (column.type == "date" || column.type == "number" || column.type == "money") {
|
|
20029
20978
|
this.internalFilters.push({
|
|
20030
20979
|
column: column.prop + "_from",
|
|
20031
|
-
op:
|
|
20980
|
+
op: ">=",
|
|
20032
20981
|
value: null
|
|
20033
20982
|
});
|
|
20034
20983
|
this.internalFilters.push({
|
|
20035
20984
|
column: column.prop + "_to",
|
|
20036
|
-
op:
|
|
20985
|
+
op: "<=",
|
|
20037
20986
|
value: null
|
|
20038
20987
|
});
|
|
20039
20988
|
} else {
|
|
@@ -20052,6 +21001,46 @@ var crudFilters = {
|
|
|
20052
21001
|
});
|
|
20053
21002
|
}
|
|
20054
21003
|
});
|
|
21004
|
+
|
|
21005
|
+
// Procesar filtros custom
|
|
21006
|
+
if (this.customFilters && Array.isArray(this.customFilters)) {
|
|
21007
|
+
this.customFilters.forEach(customFilter => {
|
|
21008
|
+
if (this.isCustomFilterEnabled(customFilter)) {
|
|
21009
|
+
// Si el tipo es función (callback), no procesamos automáticamente
|
|
21010
|
+
// El callback se encargará del renderizado y gestión del filtro
|
|
21011
|
+
if (typeof customFilter.type === 'string') {
|
|
21012
|
+
if (customFilter.type == "date" || customFilter.type == "number" || customFilter.type == "money") {
|
|
21013
|
+
this.internalFilters.push({
|
|
21014
|
+
column: customFilter.prop + "_from",
|
|
21015
|
+
op: ">=",
|
|
21016
|
+
value: null
|
|
21017
|
+
});
|
|
21018
|
+
this.internalFilters.push({
|
|
21019
|
+
column: customFilter.prop + "_to",
|
|
21020
|
+
op: "<=",
|
|
21021
|
+
value: null
|
|
21022
|
+
});
|
|
21023
|
+
} else {
|
|
21024
|
+
this.internalFilters.push({
|
|
21025
|
+
column: customFilter.prop,
|
|
21026
|
+
op: customFilter.filterOp ? customFilter.filterOp : "=",
|
|
21027
|
+
value: null
|
|
21028
|
+
});
|
|
21029
|
+
}
|
|
21030
|
+
} else if (typeof customFilter.type === 'function') {
|
|
21031
|
+
// Para callbacks, solo creamos el filtro interno si no existe
|
|
21032
|
+
// El callback se encargará del renderizado
|
|
21033
|
+
if (!this.internalFilterByProp(customFilter.prop)) {
|
|
21034
|
+
this.internalFilters.push({
|
|
21035
|
+
column: customFilter.prop,
|
|
21036
|
+
op: customFilter.filterOp ? customFilter.filterOp : "=",
|
|
21037
|
+
value: null
|
|
21038
|
+
});
|
|
21039
|
+
}
|
|
21040
|
+
}
|
|
21041
|
+
}
|
|
21042
|
+
});
|
|
21043
|
+
}
|
|
20055
21044
|
},
|
|
20056
21045
|
toggleSortFilter(column) {
|
|
20057
21046
|
let value = this.internalFilterByProp(column.prop + "_sort").value;
|
|
@@ -20070,6 +21059,11 @@ var crudFilters = {
|
|
|
20070
21059
|
toggleFilters() {
|
|
20071
21060
|
this.filtersVisible = !this.filtersVisible;
|
|
20072
21061
|
this.filterSidebarOpen = this.filtersVisible;
|
|
21062
|
+
|
|
21063
|
+
// Si se está abriendo el sidebar y los filtros no están inicializados, inicializarlos
|
|
21064
|
+
if (this.filtersVisible && this.internalFilters.length === 0) {
|
|
21065
|
+
this.setupFilters();
|
|
21066
|
+
}
|
|
20073
21067
|
},
|
|
20074
21068
|
resetFilters(refresh = true) {
|
|
20075
21069
|
this.internalFilters = [];
|
|
@@ -20084,6 +21078,9 @@ var crudFilters = {
|
|
|
20084
21078
|
isColumnHasFilter(column) {
|
|
20085
21079
|
return column && !column.hideFilter && column.type != "actions";
|
|
20086
21080
|
},
|
|
21081
|
+
isCustomFilterEnabled(customFilter) {
|
|
21082
|
+
return customFilter && customFilter.prop && !customFilter.hideFilter && customFilter.type != "actions";
|
|
21083
|
+
},
|
|
20087
21084
|
setFilter(column, value) {
|
|
20088
21085
|
let filter = this.filter.find(f => f.column == column);
|
|
20089
21086
|
filter.value = value;
|
|
@@ -20110,6 +21107,33 @@ var crudFilters = {
|
|
|
20110
21107
|
|
|
20111
21108
|
var crudValidation = {
|
|
20112
21109
|
methods: {
|
|
21110
|
+
normalizeOptions(options) {
|
|
21111
|
+
if (!Array.isArray(options)) {
|
|
21112
|
+
return options;
|
|
21113
|
+
}
|
|
21114
|
+
return options.map(option => {
|
|
21115
|
+
const normalized = {
|
|
21116
|
+
...option
|
|
21117
|
+
};
|
|
21118
|
+
|
|
21119
|
+
// Asegurar que siempre tenga id, value y text
|
|
21120
|
+
if (normalized.id === undefined && normalized.value !== undefined) {
|
|
21121
|
+
normalized.id = normalized.value;
|
|
21122
|
+
} else if (normalized.value === undefined && normalized.id !== undefined) {
|
|
21123
|
+
normalized.value = normalized.id;
|
|
21124
|
+
} else if (normalized.id === undefined && normalized.value === undefined) {
|
|
21125
|
+
// Si no tiene ni id ni value, usar text o label como valor por defecto
|
|
21126
|
+
normalized.id = normalized.text || normalized.label || "";
|
|
21127
|
+
normalized.value = normalized.id;
|
|
21128
|
+
}
|
|
21129
|
+
|
|
21130
|
+
// Asegurar que siempre tenga text
|
|
21131
|
+
if (normalized.text === undefined) {
|
|
21132
|
+
normalized.text = normalized.label !== undefined ? normalized.label : "";
|
|
21133
|
+
}
|
|
21134
|
+
return normalized;
|
|
21135
|
+
});
|
|
21136
|
+
},
|
|
20113
21137
|
async loadOptions() {
|
|
20114
21138
|
for (let i = 0; i < this.columns.length; i++) {
|
|
20115
21139
|
const column = this.columns[i];
|
|
@@ -20122,6 +21146,15 @@ var crudValidation = {
|
|
|
20122
21146
|
});
|
|
20123
21147
|
console.debug("Options promise", this.columns);
|
|
20124
21148
|
}
|
|
21149
|
+
|
|
21150
|
+
// Normalizar opciones para columnas tipo state y array
|
|
21151
|
+
if ((column.type === 'state' || column.type === 'array') && Array.isArray(column.options)) {
|
|
21152
|
+
const normalizedOptions = this.normalizeOptions(column.options);
|
|
21153
|
+
this.$set(this.columns, i, {
|
|
21154
|
+
...column,
|
|
21155
|
+
options: normalizedOptions
|
|
21156
|
+
});
|
|
21157
|
+
}
|
|
20125
21158
|
}
|
|
20126
21159
|
this.optionsLoaded = true;
|
|
20127
21160
|
},
|
|
@@ -20143,22 +21176,70 @@ var crudValidation = {
|
|
|
20143
21176
|
});
|
|
20144
21177
|
return values.join(",");
|
|
20145
21178
|
},
|
|
20146
|
-
|
|
20147
|
-
if (!options) {
|
|
20148
|
-
|
|
20149
|
-
|
|
21179
|
+
getStateOptions(value, options) {
|
|
21180
|
+
if (!options || !Array.isArray(options) || options.length === 0) {
|
|
21181
|
+
return [];
|
|
21182
|
+
}
|
|
21183
|
+
|
|
21184
|
+
// Asegurar que las opciones estén normalizadas (por si loadOptions no se ha ejecutado aún)
|
|
21185
|
+
const normalizedOptions = this.normalizeOptions(options);
|
|
21186
|
+
|
|
21187
|
+
// Si el valor es null o undefined, no hay coincidencias
|
|
21188
|
+
if (value === null || value === undefined) {
|
|
21189
|
+
return [];
|
|
20150
21190
|
}
|
|
20151
|
-
|
|
21191
|
+
|
|
21192
|
+
// Normalizar el valor para comparación (convertir a string)
|
|
21193
|
+
const normalizedValue = String(value).trim();
|
|
21194
|
+
return normalizedOptions.filter(option => {
|
|
21195
|
+
// Después de normalizar, las opciones siempre tienen id, value y text
|
|
21196
|
+
// Comparar tanto con id como con value para asegurar compatibilidad
|
|
21197
|
+
const optionId = option.id !== undefined && option.id !== null ? String(option.id).trim() : null;
|
|
21198
|
+
const optionValue = option.value !== undefined && option.value !== null ? String(option.value).trim() : null;
|
|
20152
21199
|
if (Array.isArray(value)) {
|
|
20153
|
-
|
|
21200
|
+
// Para arrays, verificar si alguno de los valores coincide
|
|
21201
|
+
return value.some(val => {
|
|
21202
|
+
if (val === null || val === undefined) return false;
|
|
21203
|
+
const normalizedVal = String(val).trim();
|
|
21204
|
+
return optionId && normalizedVal === optionId || optionValue && normalizedVal === optionValue;
|
|
21205
|
+
});
|
|
20154
21206
|
} else {
|
|
20155
|
-
|
|
21207
|
+
// Comparación estricta para valores únicos - comparar con ambos id y value
|
|
21208
|
+
return optionId && optionId === normalizedValue || optionValue && optionValue === normalizedValue;
|
|
20156
21209
|
}
|
|
20157
21210
|
});
|
|
20158
|
-
|
|
20159
|
-
|
|
20160
|
-
|
|
20161
|
-
|
|
21211
|
+
},
|
|
21212
|
+
getStateValue(value, options) {
|
|
21213
|
+
if (!options) {
|
|
21214
|
+
console.debug("State Column Not hast options returning value", value, options);
|
|
21215
|
+
return value;
|
|
21216
|
+
}
|
|
21217
|
+
const ops = this.getStateOptions(value, options);
|
|
21218
|
+
return ops.map(option => {
|
|
21219
|
+
// Usar text directamente (ya normalizado)
|
|
21220
|
+
return option.text !== undefined ? option.text : "";
|
|
21221
|
+
}).join(", ");
|
|
21222
|
+
},
|
|
21223
|
+
getStateBadgeVariant(option) {
|
|
21224
|
+
// Si la opción tiene una propiedad variant, usarla
|
|
21225
|
+
if (option.variant) {
|
|
21226
|
+
return option.variant;
|
|
21227
|
+
}
|
|
21228
|
+
// Si no, intentar inferir del id/value común
|
|
21229
|
+
const idValue = String(option.id || option.value || '').toLowerCase();
|
|
21230
|
+
if (idValue.includes('active') || idValue.includes('activo')) {
|
|
21231
|
+
return 'success';
|
|
21232
|
+
} else if (idValue.includes('inactive') || idValue.includes('inactivo')) {
|
|
21233
|
+
return 'secondary';
|
|
21234
|
+
} else if (idValue.includes('pending') || idValue.includes('pendiente')) {
|
|
21235
|
+
return 'warning';
|
|
21236
|
+
} else if (idValue.includes('done') || idValue.includes('completado')) {
|
|
21237
|
+
return 'success';
|
|
21238
|
+
} else if (idValue.includes('error') || idValue.includes('error')) {
|
|
21239
|
+
return 'danger';
|
|
21240
|
+
}
|
|
21241
|
+
// Variante por defecto
|
|
21242
|
+
return 'primary';
|
|
20162
21243
|
}
|
|
20163
21244
|
}
|
|
20164
21245
|
};
|
|
@@ -20294,37 +21375,134 @@ var crudHelpers = {
|
|
|
20294
21375
|
this.$emit("selectItems", this.selectedItems);
|
|
20295
21376
|
},
|
|
20296
21377
|
showItem(id, itemIndex = null) {
|
|
21378
|
+
let item;
|
|
20297
21379
|
if (itemIndex == null) {
|
|
20298
|
-
|
|
20299
|
-
this.item = item;
|
|
21380
|
+
item = this.items.find(it => it.id == id);
|
|
20300
21381
|
} else {
|
|
20301
|
-
|
|
21382
|
+
item = this.items[itemIndex];
|
|
21383
|
+
}
|
|
21384
|
+
if (!item) {
|
|
21385
|
+
console.warn('Item not found for showItem');
|
|
21386
|
+
return;
|
|
20302
21387
|
}
|
|
21388
|
+
|
|
21389
|
+
// Hacer copia profunda del objeto para asegurar reactividad
|
|
21390
|
+
const itemCopy = JSON.parse(JSON.stringify(item));
|
|
21391
|
+
if (this.useVuexORM && !this.vuexLocalforage) {
|
|
21392
|
+
const modelInstance = new this.model(itemCopy);
|
|
21393
|
+
// Usar $set para cada propiedad para asegurar reactividad
|
|
21394
|
+
Object.keys(modelInstance).forEach(key => {
|
|
21395
|
+
this.$set(this.item, key, modelInstance[key]);
|
|
21396
|
+
});
|
|
21397
|
+
// Eliminar propiedades que ya no existen
|
|
21398
|
+
Object.keys(this.item).forEach(key => {
|
|
21399
|
+
if (!(key in modelInstance)) {
|
|
21400
|
+
this.$delete(this.item, key);
|
|
21401
|
+
}
|
|
21402
|
+
});
|
|
21403
|
+
} else {
|
|
21404
|
+
// Usar $set para cada propiedad para asegurar reactividad
|
|
21405
|
+
Object.keys(itemCopy).forEach(key => {
|
|
21406
|
+
this.$set(this.item, key, itemCopy[key]);
|
|
21407
|
+
});
|
|
21408
|
+
// Eliminar propiedades que ya no existen
|
|
21409
|
+
Object.keys(this.item).forEach(key => {
|
|
21410
|
+
if (!(key in itemCopy)) {
|
|
21411
|
+
this.$delete(this.item, key);
|
|
21412
|
+
}
|
|
21413
|
+
});
|
|
21414
|
+
}
|
|
21415
|
+
|
|
21416
|
+
// Forzar actualización para asegurar que los cambios se reflejen
|
|
21417
|
+
this.$forceUpdate();
|
|
20303
21418
|
this.onSelect();
|
|
20304
|
-
this.$
|
|
21419
|
+
this.$nextTick(() => {
|
|
21420
|
+
this.$forceUpdate();
|
|
21421
|
+
this.$bvModal.show("modal-show-item-" + this.modelName);
|
|
21422
|
+
});
|
|
20305
21423
|
},
|
|
20306
21424
|
createItem() {
|
|
20307
|
-
|
|
20308
|
-
|
|
20309
|
-
|
|
20310
|
-
|
|
20311
|
-
|
|
20312
|
-
|
|
21425
|
+
// Hacer copia profunda del objeto para asegurar reactividad
|
|
21426
|
+
const itemCopy = JSON.parse(JSON.stringify(this.itemDefault));
|
|
21427
|
+
if (this.useVuexORM && !this.vuexLocalforage) {
|
|
21428
|
+
const modelInstance = new this.model(itemCopy);
|
|
21429
|
+
// Usar $set para cada propiedad para asegurar reactividad
|
|
21430
|
+
Object.keys(modelInstance).forEach(key => {
|
|
21431
|
+
this.$set(this.item, key, modelInstance[key]);
|
|
21432
|
+
});
|
|
21433
|
+
// Eliminar propiedades que ya no existen
|
|
21434
|
+
Object.keys(this.item).forEach(key => {
|
|
21435
|
+
if (!(key in modelInstance)) {
|
|
21436
|
+
this.$delete(this.item, key);
|
|
21437
|
+
}
|
|
21438
|
+
});
|
|
20313
21439
|
} else {
|
|
20314
|
-
|
|
21440
|
+
// Usar $set para cada propiedad para asegurar reactividad
|
|
21441
|
+
Object.keys(itemCopy).forEach(key => {
|
|
21442
|
+
this.$set(this.item, key, itemCopy[key]);
|
|
21443
|
+
});
|
|
21444
|
+
// Eliminar propiedades que ya no existen
|
|
21445
|
+
Object.keys(this.item).forEach(key => {
|
|
21446
|
+
if (!(key in itemCopy)) {
|
|
21447
|
+
this.$delete(this.item, key);
|
|
21448
|
+
}
|
|
21449
|
+
});
|
|
20315
21450
|
}
|
|
21451
|
+
|
|
21452
|
+
// Forzar actualización para asegurar que los cambios se reflejen
|
|
21453
|
+
this.$forceUpdate();
|
|
20316
21454
|
this.onSelect();
|
|
20317
|
-
this.$
|
|
21455
|
+
this.$nextTick(() => {
|
|
21456
|
+
this.$forceUpdate();
|
|
21457
|
+
this.$bvModal.show("modal-form-item-" + this.modelName);
|
|
21458
|
+
});
|
|
20318
21459
|
},
|
|
20319
21460
|
updateItem(id, itemIndex = null) {
|
|
21461
|
+
let item;
|
|
20320
21462
|
if (itemIndex == null) {
|
|
20321
|
-
|
|
20322
|
-
this.item = item;
|
|
21463
|
+
item = this.items.find(it => it.id == id);
|
|
20323
21464
|
} else {
|
|
20324
|
-
|
|
21465
|
+
item = this.items[itemIndex];
|
|
21466
|
+
}
|
|
21467
|
+
if (!item) {
|
|
21468
|
+
console.warn('Item not found for updateItem');
|
|
21469
|
+
return;
|
|
20325
21470
|
}
|
|
21471
|
+
|
|
21472
|
+
// Hacer copia profunda del objeto para asegurar reactividad
|
|
21473
|
+
const itemCopy = JSON.parse(JSON.stringify(item));
|
|
21474
|
+
if (this.useVuexORM && !this.vuexLocalforage) {
|
|
21475
|
+
const modelInstance = new this.model(itemCopy);
|
|
21476
|
+
// Usar $set para cada propiedad para asegurar reactividad
|
|
21477
|
+
Object.keys(modelInstance).forEach(key => {
|
|
21478
|
+
this.$set(this.item, key, modelInstance[key]);
|
|
21479
|
+
});
|
|
21480
|
+
// Eliminar propiedades que ya no existen
|
|
21481
|
+
Object.keys(this.item).forEach(key => {
|
|
21482
|
+
if (!(key in modelInstance)) {
|
|
21483
|
+
this.$delete(this.item, key);
|
|
21484
|
+
}
|
|
21485
|
+
});
|
|
21486
|
+
} else {
|
|
21487
|
+
// Usar $set para cada propiedad para asegurar reactividad
|
|
21488
|
+
Object.keys(itemCopy).forEach(key => {
|
|
21489
|
+
this.$set(this.item, key, itemCopy[key]);
|
|
21490
|
+
});
|
|
21491
|
+
// Eliminar propiedades que ya no existen
|
|
21492
|
+
Object.keys(this.item).forEach(key => {
|
|
21493
|
+
if (!(key in itemCopy)) {
|
|
21494
|
+
this.$delete(this.item, key);
|
|
21495
|
+
}
|
|
21496
|
+
});
|
|
21497
|
+
}
|
|
21498
|
+
|
|
21499
|
+
// Forzar actualización para asegurar que los cambios se reflejen
|
|
21500
|
+
this.$forceUpdate();
|
|
20326
21501
|
this.onSelect();
|
|
20327
|
-
this.$
|
|
21502
|
+
this.$nextTick(() => {
|
|
21503
|
+
this.$forceUpdate();
|
|
21504
|
+
this.$bvModal.show("modal-form-item-" + this.modelName);
|
|
21505
|
+
});
|
|
20328
21506
|
},
|
|
20329
21507
|
removeItem(id, index) {
|
|
20330
21508
|
this.$bvModal.msgBoxConfirm(this.messageRemoveConfirm, {
|
|
@@ -20361,13 +21539,32 @@ var crudHelpers = {
|
|
|
20361
21539
|
});
|
|
20362
21540
|
},
|
|
20363
21541
|
toggleDisplayMode() {
|
|
20364
|
-
|
|
21542
|
+
// Mutar la propiedad local _displayMode y el objeto reactivo
|
|
21543
|
+
if (this._displayMode == this.displayModes.MODE_TABLE) {
|
|
21544
|
+
this._displayMode = this.displayModes.MODE_CARDS;
|
|
21545
|
+
if (this.displayModeReactive) {
|
|
21546
|
+
this.displayModeReactive.value = this.displayModes.MODE_CARDS;
|
|
21547
|
+
}
|
|
21548
|
+
} else if (this._displayMode == this.displayModes.MODE_CARDS) {
|
|
21549
|
+
this._displayMode = this.displayModes.MODE_TABLE;
|
|
21550
|
+
if (this.displayModeReactive) {
|
|
21551
|
+
this.displayModeReactive.value = this.displayModes.MODE_TABLE;
|
|
21552
|
+
}
|
|
21553
|
+
}
|
|
20365
21554
|
},
|
|
20366
21555
|
showExportModal() {
|
|
20367
|
-
|
|
21556
|
+
// Asegurar que loading esté en false al abrir el modal
|
|
21557
|
+
this.loading = false;
|
|
21558
|
+
if (this.$refs.crudModals && this.$refs.crudModals.$refs["modal-export"]) {
|
|
21559
|
+
this.$refs.crudModals.$refs["modal-export"].show();
|
|
21560
|
+
}
|
|
20368
21561
|
},
|
|
20369
21562
|
showImportModal() {
|
|
20370
|
-
|
|
21563
|
+
// Asegurar que loading esté en false al abrir el modal
|
|
21564
|
+
this.loading = false;
|
|
21565
|
+
if (this.$refs.crudModals && this.$refs.crudModals.$refs["modal-import"]) {
|
|
21566
|
+
this.$refs.crudModals.$refs["modal-import"].show();
|
|
21567
|
+
}
|
|
20371
21568
|
},
|
|
20372
21569
|
onDraggableAdded(event) {
|
|
20373
21570
|
this.$emit("draggableAdded", event);
|
|
@@ -20466,7 +21663,7 @@ var crudHelpers = {
|
|
|
20466
21663
|
}
|
|
20467
21664
|
};
|
|
20468
21665
|
|
|
20469
|
-
var css = "tr td[data-v-
|
|
21666
|
+
var css = "tr td[data-v-3751aeba]:last-child,\ntr td[data-v-3751aeba]:first-child {\n width: 1%;\n white-space: nowrap; }\n\ntbody tr.selected[data-v-3751aeba] {\n background-color: #e3f2fd !important; }\n tbody tr.selected[data-v-3751aeba] td[data-v-3751aeba] {\n background-color: transparent !important; }\n tbody tr.selected[data-v-3751aeba][data-v-3751aeba]:hover {\n background-color: #bbdefb !important; }\n tbody tr.selected[data-v-3751aeba][data-v-3751aeba]:hover td[data-v-3751aeba] {\n background-color: transparent !important; }\n\n.table-striped tbody tr.selected[data-v-3751aeba]:nth-of-type(odd) {\n background-color: #e3f2fd !important; }\n .table-striped tbody tr.selected[data-v-3751aeba]:nth-of-type(odd) td[data-v-3751aeba] {\n background-color: transparent !important; }\n\n.table-striped tbody tr.selected[data-v-3751aeba]:nth-of-type(even) {\n background-color: #e3f2fd !important; }\n .table-striped tbody tr.selected[data-v-3751aeba]:nth-of-type(even) td[data-v-3751aeba] {\n background-color: transparent !important; }\n\n.crud-pagination[data-v-3751aeba] {\n display: flex;\n align-items: center;\n width: 100%;\n justify-content: center;\n margin-top: 1rem; }\n\n.crud-header[data-v-3751aeba] {\n display: flex;\n justify-content: space-between;\n max-height: 3rem; }\n .crud-header[data-v-3751aeba] .crud-title[data-v-3751aeba] {\n margin: 0; }\n .crud-header[data-v-3751aeba] .crud-search[data-v-3751aeba] {\n max-width: 15rem; }\n .crud-header[data-v-3751aeba] .crud-search[data-v-3751aeba] .btn[data-v-3751aeba] {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n border-top-right-radius: 0.375rem;\n border-bottom-right-radius: 0.375rem; }\n .crud-header[data-v-3751aeba] .crud-search[data-v-3751aeba] .btn[data-v-3751aeba].open[data-v-3751aeba] {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0; }\n .crud-header[data-v-3751aeba] .table-options[data-v-3751aeba] {\n margin-bottom: 1rem;\n display: flex;\n align-items: center;\n justify-content: flex-end; }\n\n.custom-control[data-v-3751aeba] {\n position: relative; }\n\n@media (min-width: 992px) {\n .table[data-v-3751aeba] {\n table-layout: auto; }\n .table[data-v-3751aeba] tbody[data-v-3751aeba] td[data-v-3751aeba] {\n overflow: scroll;\n -ms-overflow-style: none;\n /* IE and Edge */\n scrollbar-width: none;\n /* Firefox */ }\n .table[data-v-3751aeba] tbody[data-v-3751aeba] td[data-v-3751aeba]::-webkit-scrollbar {\n display: none; } }\n\n.kanban-board[data-v-3751aeba] {\n display: flex;\n gap: 1rem;\n overflow-x: auto;\n padding: 1rem; }\n\n.kanban-column[data-v-3751aeba] {\n background: #f4f5f7;\n border-radius: 8px;\n width: 300px;\n display: flex;\n flex-direction: column;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); }\n\n.kanban-column-header[data-v-3751aeba] {\n font-weight: bold;\n padding: 0.5rem;\n background: #dfe1e6;\n border-radius: 8px 8px 0 0;\n text-align: center; }\n\n.kanban-column-body[data-v-3751aeba] {\n padding: 0.5rem;\n min-height: 100px;\n background: #ffffff;\n border-radius: 0 0 8px 8px;\n display: flex;\n flex-direction: column;\n gap: 0.5rem; }\n\n.kanban-card[data-v-3751aeba] {\n background: #ffffff;\n border-radius: 4px;\n padding: 1rem;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n cursor: grab; }\n";
|
|
20470
21667
|
n(css, {});
|
|
20471
21668
|
|
|
20472
21669
|
const _sfc_main = {
|
|
@@ -20494,6 +21691,7 @@ const _sfc_main = {
|
|
|
20494
21691
|
vuexLocalforage: this.vuexLocalforage,
|
|
20495
21692
|
columns: this.columns,
|
|
20496
21693
|
filter: this.filter,
|
|
21694
|
+
customFilters: this.customFilters,
|
|
20497
21695
|
enableFilters: this.enableFilters,
|
|
20498
21696
|
infiniteScroll: this.infiniteScroll,
|
|
20499
21697
|
sortable: this.sortable,
|
|
@@ -20514,7 +21712,7 @@ const _sfc_main = {
|
|
|
20514
21712
|
showHeader: this.showHeader,
|
|
20515
21713
|
showTitle: this.showTitle,
|
|
20516
21714
|
limit: this.limit,
|
|
20517
|
-
displayMode: this.
|
|
21715
|
+
displayMode: this.displayModeReactive,
|
|
20518
21716
|
displayModeToggler: this.displayModeToggler,
|
|
20519
21717
|
colXs: this.colXs,
|
|
20520
21718
|
colSm: this.colSm,
|
|
@@ -20560,8 +21758,10 @@ const _sfc_main = {
|
|
|
20560
21758
|
// Data from mixins
|
|
20561
21759
|
crudUuid: this.crudUuid,
|
|
20562
21760
|
moment: this.moment,
|
|
20563
|
-
loading: this.
|
|
20564
|
-
firstLoad: this.
|
|
21761
|
+
loading: this.loadingReactive,
|
|
21762
|
+
firstLoad: this.firstLoadReactive,
|
|
21763
|
+
// Proporcionar item como función getter para reactividad
|
|
21764
|
+
getItem: () => this.item,
|
|
20565
21765
|
item: this.item,
|
|
20566
21766
|
items: this.items,
|
|
20567
21767
|
selectedItems: this.selectedItems,
|
|
@@ -20626,12 +21826,15 @@ const _sfc_main = {
|
|
|
20626
21826
|
toggleFilters: this.toggleFilters,
|
|
20627
21827
|
resetFilters: this.resetFilters,
|
|
20628
21828
|
isColumnHasFilter: this.isColumnHasFilter,
|
|
21829
|
+
isCustomFilterEnabled: this.isCustomFilterEnabled,
|
|
20629
21830
|
setFilter: this.setFilter,
|
|
20630
21831
|
onChangeFilter: this.onChangeFilter,
|
|
20631
21832
|
togglePrincipalSort: this.togglePrincipalSort,
|
|
20632
21833
|
loadOptions: this.loadOptions,
|
|
20633
21834
|
getArrayValue: this.getArrayValue,
|
|
20634
21835
|
getStateValue: this.getStateValue,
|
|
21836
|
+
getStateOptions: this.getStateOptions,
|
|
21837
|
+
getStateBadgeVariant: this.getStateBadgeVariant,
|
|
20635
21838
|
onRowHover: this.onRowHover,
|
|
20636
21839
|
onRowClick: this.onRowClick,
|
|
20637
21840
|
onSort: this.onSort,
|
|
@@ -20703,6 +21906,10 @@ const _sfc_main = {
|
|
|
20703
21906
|
type: Array,
|
|
20704
21907
|
default: () => []
|
|
20705
21908
|
},
|
|
21909
|
+
customFilters: {
|
|
21910
|
+
type: Array,
|
|
21911
|
+
default: () => []
|
|
21912
|
+
},
|
|
20706
21913
|
enableFilters: {
|
|
20707
21914
|
type: Boolean,
|
|
20708
21915
|
default: false
|
|
@@ -20962,12 +22169,40 @@ var _sfc_render = function render() {
|
|
|
20962
22169
|
_c = _vm._self._c;
|
|
20963
22170
|
return _c('div', {
|
|
20964
22171
|
staticClass: "crud"
|
|
20965
|
-
}, [_c('CrudHeader'), _c('CrudTable'
|
|
22172
|
+
}, [_c('CrudHeader'), _c('CrudTable', {
|
|
22173
|
+
scopedSlots: _vm._u([_vm._l(_vm.$scopedSlots, function (slot, name) {
|
|
22174
|
+
return {
|
|
22175
|
+
key: name,
|
|
22176
|
+
fn: function (slotProps) {
|
|
22177
|
+
return [_vm._t(name, null, null, slotProps)];
|
|
22178
|
+
}
|
|
22179
|
+
};
|
|
22180
|
+
})], null, true)
|
|
22181
|
+
}), _c('CrudCards', {
|
|
22182
|
+
scopedSlots: _vm._u([_vm._l(_vm.$scopedSlots, function (slot, name) {
|
|
22183
|
+
return {
|
|
22184
|
+
key: name,
|
|
22185
|
+
fn: function (slotProps) {
|
|
22186
|
+
return [_vm._t(name, null, null, slotProps)];
|
|
22187
|
+
}
|
|
22188
|
+
};
|
|
22189
|
+
})], null, true)
|
|
22190
|
+
}), _c('CrudKanban', {
|
|
22191
|
+
scopedSlots: _vm._u([_vm._l(_vm.$scopedSlots, function (slot, name) {
|
|
22192
|
+
return {
|
|
22193
|
+
key: name,
|
|
22194
|
+
fn: function (slotProps) {
|
|
22195
|
+
return [_vm._t(name, null, null, slotProps)];
|
|
22196
|
+
}
|
|
22197
|
+
};
|
|
22198
|
+
})], null, true)
|
|
22199
|
+
}), _c('CrudCustom'), _c('b-overlay', {
|
|
20966
22200
|
attrs: {
|
|
20967
22201
|
"show": _vm.loading,
|
|
20968
22202
|
"rounded": "sm"
|
|
20969
22203
|
}
|
|
20970
22204
|
}), _c('CrudPagination'), _c('CrudModals', {
|
|
22205
|
+
ref: "crudModals",
|
|
20971
22206
|
scopedSlots: _vm._u([_vm._l(_vm.$scopedSlots, function (slot, name) {
|
|
20972
22207
|
return {
|
|
20973
22208
|
key: name,
|
|
@@ -20979,7 +22214,7 @@ var _sfc_render = function render() {
|
|
|
20979
22214
|
})], 1);
|
|
20980
22215
|
};
|
|
20981
22216
|
var _sfc_staticRenderFns = [];
|
|
20982
|
-
var __component__ = /*#__PURE__*/normalizeComponent(_sfc_main, _sfc_render, _sfc_staticRenderFns, false, null, "
|
|
22217
|
+
var __component__ = /*#__PURE__*/normalizeComponent(_sfc_main, _sfc_render, _sfc_staticRenderFns, false, null, "3751aeba", null, null);
|
|
20983
22218
|
var component = __component__.exports;
|
|
20984
22219
|
|
|
20985
22220
|
// Import vue component
|