vue-laravel-crud 2.0.0 → 2.0.1

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.
@@ -1,3 +1,5 @@
1
+ import Vue from 'vue';
2
+
1
3
  function normalizeComponent (
2
4
  scriptExports,
3
5
  render,
@@ -296,7 +298,7 @@ var CrudFilters = __component__$f.exports;
296
298
 
297
299
  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}}
298
300
 
299
- var css$6 = "\n.crud-header[data-v-dec590e4] {\r\n display: flex;\r\n justify-content: space-between;\r\n max-height: 3rem;\n}\n.crud-title[data-v-dec590e4] {\r\n margin: 0;\n}\n.crud-search[data-v-dec590e4] {\r\n max-width: 15rem;\n}\n.crud-search .btn[data-v-dec590e4] {\r\n border-top-left-radius: 0;\r\n border-bottom-left-radius: 0;\r\n border-top-right-radius: 0.375rem;\r\n border-bottom-right-radius: 0.375rem;\n}\n.crud-search .btn.open[data-v-dec590e4] {\r\n border-top-right-radius: 0;\r\n border-bottom-right-radius: 0;\n}\n.table-options[data-v-dec590e4] {\r\n margin-bottom: 1rem;\r\n display: flex;\r\n align-items: center;\r\n justify-content: flex-end;\n}\r\n";
301
+ var css$6 = "\n.crud-header[data-v-ed8e5777] {\r\n display: flex;\r\n justify-content: space-between;\r\n max-height: 3rem;\n}\n.crud-title[data-v-ed8e5777] {\r\n margin: 0;\n}\n.crud-search[data-v-ed8e5777] {\r\n max-width: 15rem;\n}\n.crud-search .btn[data-v-ed8e5777] {\r\n border-top-left-radius: 0;\r\n border-bottom-left-radius: 0;\r\n border-top-right-radius: 0.375rem;\r\n border-bottom-right-radius: 0.375rem;\n}\n.crud-search .btn.open[data-v-ed8e5777] {\r\n border-top-right-radius: 0;\r\n border-bottom-right-radius: 0;\n}\n.table-options[data-v-ed8e5777] {\r\n margin-bottom: 1rem;\r\n display: flex;\r\n align-items: center;\r\n justify-content: flex-end;\n}\r\n";
300
302
  n(css$6, {});
301
303
 
302
304
  const _sfc_main$e = {
@@ -304,7 +306,20 @@ const _sfc_main$e = {
304
306
  components: {
305
307
  CrudFilters
306
308
  },
307
- 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']
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'],
310
+ computed: {
311
+ sidebarVisible() {
312
+ // Acceder directamente al componente padre para obtener reactividad
313
+ return this.$parent ? this.$parent.filterSidebarOpen : this.filterSidebarOpen;
314
+ }
315
+ },
316
+ methods: {
317
+ closeSidebar() {
318
+ if (this.filterSidebarOpen) {
319
+ this.toggleFilters();
320
+ }
321
+ }
322
+ }
308
323
  };
309
324
  var _sfc_render$e = function render() {
310
325
  var _vm = this,
@@ -315,16 +330,13 @@ var _sfc_render$e = function render() {
315
330
  staticClass: "crud-title"
316
331
  }, [_vm._v(_vm._s(_vm.title))]) : _vm._e(), _c('b-sidebar', {
317
332
  attrs: {
333
+ "visible": _vm.sidebarVisible,
318
334
  "title": "Filtrar",
319
335
  "right": "",
320
336
  "shadow": ""
321
337
  },
322
- model: {
323
- value: _vm.filterSidebarOpen,
324
- callback: function ($$v) {
325
- _vm.filterSidebarOpen = $$v;
326
- },
327
- expression: "filterSidebarOpen"
338
+ on: {
339
+ "hidden": _vm.closeSidebar
328
340
  }
329
341
  }, [_c('CrudFilters')], 1), _c('div', {
330
342
  staticClass: "table-options"
@@ -447,7 +459,7 @@ var _sfc_render$e = function render() {
447
459
  })], 2)], 1)], 1) : _vm._e();
448
460
  };
449
461
  var _sfc_staticRenderFns$e = [];
450
- var __component__$e = /*#__PURE__*/normalizeComponent(_sfc_main$e, _sfc_render$e, _sfc_staticRenderFns$e, false, null, "dec590e4", null, null);
462
+ var __component__$e = /*#__PURE__*/normalizeComponent(_sfc_main$e, _sfc_render$e, _sfc_staticRenderFns$e, false, null, "ed8e5777", null, null);
451
463
  var CrudHeader = __component__$e.exports;
452
464
 
453
465
  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
@@ -6620,7 +6632,33 @@ var draggable = /*@__PURE__*/getDefaultExportFromCjs(vuedraggable_umdExports);
6620
6632
 
6621
6633
  const _sfc_main$d = {
6622
6634
  name: 'TableHeader',
6623
- inject: ['columns', 'enableFilters', 'filtersVisible', 'isColumnHasFilter', 'internalFilterByProp', 'onChangeFilter', 'toggleAll', 'toggleSortFilter', 'sortable', 'optionsLoaded']
6635
+ inject: ['columns', 'enableFilters', 'filtersVisible', 'isColumnHasFilter', 'internalFilterByProp', 'onChangeFilter', 'toggleAll', 'toggleSortFilter', 'sortable', 'optionsLoaded'],
6636
+ data() {
6637
+ return {
6638
+ hoveredColumn: null
6639
+ };
6640
+ },
6641
+ methods: {
6642
+ isSortableColumn(column) {
6643
+ return this.sortable && column.type != 'select' && column.type != 'checkbox' && this.internalFilterByProp(column.prop + '_sort');
6644
+ },
6645
+ shouldShowSortIcon(column) {
6646
+ const sortFilter = this.internalFilterByProp(column.prop + '_sort');
6647
+ return this.hoveredColumn === column.prop || sortFilter.value;
6648
+ },
6649
+ getSortIconDirection(column) {
6650
+ const sortFilter = this.internalFilterByProp(column.prop + '_sort');
6651
+ const sortValue = sortFilter.value;
6652
+ if (sortValue === 'DESC') {
6653
+ return 'down';
6654
+ } else if (sortValue === 'ASC') {
6655
+ return 'up';
6656
+ } else if (this.hoveredColumn === column.prop) {
6657
+ return 'up';
6658
+ }
6659
+ return null;
6660
+ }
6661
+ }
6624
6662
  };
6625
6663
  var _sfc_render$d = function render() {
6626
6664
  var _vm = this,
@@ -6636,6 +6674,14 @@ var _sfc_render$d = function render() {
6636
6674
  },
6637
6675
  attrs: {
6638
6676
  "scope": "col"
6677
+ },
6678
+ on: {
6679
+ "mouseenter": function ($event) {
6680
+ _vm.hoveredColumn = column.prop;
6681
+ },
6682
+ "mouseleave": function ($event) {
6683
+ _vm.hoveredColumn = null;
6684
+ }
6639
6685
  }
6640
6686
  }, [_vm.enableFilters && _vm.filtersVisible && _vm.isColumnHasFilter(column) && _vm.internalFilterByProp(column.prop) ? _vm._t('filter-' + column.prop, function () {
6641
6687
  return [_c('div', {
@@ -6834,14 +6880,14 @@ var _sfc_render$d = function render() {
6834
6880
  return _vm.toggleAll($event);
6835
6881
  }
6836
6882
  }
6837
- })], 1) : _c('span', [_vm._v(_vm._s(column.label))]), _vm.sortable && column.type != 'select' && column.type != 'checkbox' && _vm.internalFilterByProp(column.prop + '_sort') ? _c('span', {
6883
+ })], 1) : _c('span', [_vm._v(_vm._s(column.label))]), _vm.isSortableColumn(column) && _vm.shouldShowSortIcon(column) ? _c('span', {
6838
6884
  staticClass: "sort-filter",
6839
6885
  on: {
6840
6886
  "click": function ($event) {
6841
6887
  return _vm.toggleSortFilter(column);
6842
6888
  }
6843
6889
  }
6844
- }, [!_vm.internalFilterByProp(column.prop + '_sort').value ? _c('b-icon-sort-down') : _vm._e(), _vm.internalFilterByProp(column.prop + '_sort').value == 'ASC' ? _c('b-icon-sort-up') : _vm._e(), _vm.internalFilterByProp(column.prop + '_sort').value == 'DESC' ? _c('b-icon-sort-down') : _vm._e()], 1) : _vm._e()], 2);
6890
+ }, [_vm.getSortIconDirection(column) === 'up' ? _c('b-icon-sort-up') : _vm._e(), _vm.getSortIconDirection(column) === 'down' ? _c('b-icon-sort-down') : _vm._e()], 1) : _vm._e()], 2);
6845
6891
  });
6846
6892
  })], 2)]);
6847
6893
  };
@@ -12649,7 +12695,9 @@ var _sfc_render$b = function render() {
12649
12695
  var _vm = this,
12650
12696
  _c = _vm._self._c;
12651
12697
  return _c('tr', {
12652
- staticClass: "item",
12698
+ class: ['item', {
12699
+ 'selected': _vm.item.selected
12700
+ }],
12653
12701
  on: {
12654
12702
  "mouseover": function ($event) {
12655
12703
  return _vm.onRowHover(_vm.item, _vm.index);
@@ -12705,6 +12753,7 @@ var _sfc_render$a = function render() {
12705
12753
  class: ['table table-hover table-striped w-100', _vm.tableClass]
12706
12754
  }, [_c('TableHeader'), _c('draggable', {
12707
12755
  attrs: {
12756
+ "list": _vm.items,
12708
12757
  "group": _vm.draggableGroup,
12709
12758
  "tag": "tbody",
12710
12759
  "draggable": _vm.orderable ? '.item' : '.none',
@@ -12726,13 +12775,6 @@ var _sfc_render$a = function render() {
12726
12775
  "change": function ($event) {
12727
12776
  return _vm.onDraggableChange($event);
12728
12777
  }
12729
- },
12730
- model: {
12731
- value: _vm.items,
12732
- callback: function ($$v) {
12733
- _vm.items = $$v;
12734
- },
12735
- expression: "items"
12736
12778
  }
12737
12779
  }, _vm._l(_vm.itemsList, function (item, index) {
12738
12780
  return _c('TableRow', {
@@ -12743,7 +12785,7 @@ var _sfc_render$a = function render() {
12743
12785
  "grouped": _vm.grouped
12744
12786
  }
12745
12787
  });
12746
- }), 1)], 1), !_vm.loading && _vm.items && _vm.items.length == 0 && !_vm.infiniteScroll ? _c('p', {
12788
+ }), 1)], 1), !_vm.loading && _vm.itemsList && _vm.itemsList.length == 0 && !_vm.infiniteScroll ? _c('p', {
12747
12789
  staticClass: "p-3"
12748
12790
  }, [_vm._v(" " + _vm._s(_vm.messageEmptyResults) + " ")]) : _vm._e()]) : _vm._e();
12749
12791
  };
@@ -13092,11 +13134,12 @@ var _sfc_staticRenderFns$9 = [];
13092
13134
  var __component__$9 = /*#__PURE__*/normalizeComponent(_sfc_main$9, _sfc_render$9, _sfc_staticRenderFns$9, false, null, null, null, null);
13093
13135
  var ItemCard = __component__$9.exports;
13094
13136
 
13137
+ // Registrar el componente masonry usando el Plugin
13138
+ Vue.use(Plugin);
13095
13139
  const _sfc_main$8 = {
13096
13140
  name: 'CrudCards',
13097
13141
  components: {
13098
13142
  draggable,
13099
- VueMasonry: Plugin,
13100
13143
  ItemCard
13101
13144
  },
13102
13145
  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'],
@@ -13109,7 +13152,7 @@ const _sfc_main$8 = {
13109
13152
  var _sfc_render$8 = function render() {
13110
13153
  var _vm = this,
13111
13154
  _c = _vm._self._c;
13112
- return _c('div', [_c('draggable', {
13155
+ return _vm.displayMode == _vm.displayModes.MODE_CARDS ? _c('div', [_c('draggable', {
13113
13156
  attrs: {
13114
13157
  "group": _vm.draggableGroup,
13115
13158
  "draggable": _vm.orderable ? '.item' : '.none',
@@ -13177,9 +13220,9 @@ var _sfc_render$8 = function render() {
13177
13220
  }, {
13178
13221
  "item": item
13179
13222
  })], 2);
13180
- }), 0)], 1), !_vm.loading && _vm.items && _vm.items.length == 0 && !_vm.infiniteScroll ? _c('p', {
13223
+ }), 0)], 1), !_vm.loading && _vm.itemsList && _vm.itemsList.length == 0 && !_vm.infiniteScroll ? _c('p', {
13181
13224
  staticClass: "p-3"
13182
- }, [_vm._v(" " + _vm._s(_vm.messageEmptyResults) + " ")]) : _vm._e()], 1);
13225
+ }, [_vm._v(" " + _vm._s(_vm.messageEmptyResults) + " ")]) : _vm._e()], 1) : _vm._e();
13183
13226
  };
13184
13227
  var _sfc_staticRenderFns$8 = [];
13185
13228
  var __component__$8 = /*#__PURE__*/normalizeComponent(_sfc_main$8, _sfc_render$8, _sfc_staticRenderFns$8, false, null, null, null, null);
@@ -13449,7 +13492,7 @@ const _sfc_main$4 = {
13449
13492
  var _sfc_render$4 = function render() {
13450
13493
  var _vm = this,
13451
13494
  _c = _vm._self._c;
13452
- return _c('div', [_c('KanbanBoard')], 1);
13495
+ return _vm.displayMode == _vm.displayModes.MODE_KANBAN ? _c('div', [_c('KanbanBoard')], 1) : _vm._e();
13453
13496
  };
13454
13497
  var _sfc_staticRenderFns$4 = [];
13455
13498
  var __component__$4 = /*#__PURE__*/normalizeComponent(_sfc_main$4, _sfc_render$4, _sfc_staticRenderFns$4, false, null, null, null, null);
@@ -13462,9 +13505,9 @@ const _sfc_main$3 = {
13462
13505
  var _sfc_render$3 = function render() {
13463
13506
  var _vm = this,
13464
13507
  _c = _vm._self._c;
13465
- return _c('div', [_c('div', {
13508
+ return _vm.displayMode == _vm.displayModes.MODE_CUSTOM ? _c('div', [_c('div', {
13466
13509
  class: _vm.listContainerClass
13467
- }, [!_vm.loading && _vm.items && _vm.items.length == 0 && !_vm.infiniteScroll ? _c('p', {
13510
+ }, [!_vm.loading && _vm.itemsList && _vm.itemsList.length == 0 && !_vm.infiniteScroll ? _c('p', {
13468
13511
  staticClass: "p-3"
13469
13512
  }, [_vm._v(" " + _vm._s(_vm.messageEmptyResults) + " ")]) : _vm._e(), _vm._l(_vm.itemsList, function (item, index) {
13470
13513
  return _c('div', {
@@ -13473,7 +13516,7 @@ var _sfc_render$3 = function render() {
13473
13516
  }, [_vm._t("card", null, {
13474
13517
  "item": item
13475
13518
  })], 2);
13476
- })], 2)]);
13519
+ })], 2)]) : _vm._e();
13477
13520
  };
13478
13521
  var _sfc_staticRenderFns$3 = [];
13479
13522
  var __component__$3 = /*#__PURE__*/normalizeComponent(_sfc_main$3, _sfc_render$3, _sfc_staticRenderFns$3, false, null, null, null, null);
@@ -13719,7 +13762,7 @@ vueInfiniteLoading.exports;
13719
13762
  var vueInfiniteLoadingExports = vueInfiniteLoading.exports;
13720
13763
  var InfiniteLoading = /*@__PURE__*/getDefaultExportFromCjs(vueInfiniteLoadingExports);
13721
13764
 
13722
- var css$1 = "\n.crud-pagination[data-v-975091ac] {\r\n display: flex;\r\n align-items: center;\r\n width: 100%;\r\n justify-content: center;\r\n margin-top: 1rem;\n}\r\n";
13765
+ var css$1 = "\n.paginator-container[data-v-2c61ceb1] {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n width: 100%;\r\n margin-top: 1rem;\r\n gap: 0.75rem;\n}\n.paginator-data[data-v-2c61ceb1] {\r\n display: flex;\r\n flex-wrap: wrap;\r\n justify-content: center;\r\n align-items: center;\r\n gap: 0.5rem;\r\n font-size: 0.875rem;\n}\n.paginator-badge[data-v-2c61ceb1] {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 0.25rem;\r\n padding: 0.375rem 0.625rem;\r\n background-color: #f8f9fa;\r\n border: 1px solid #dee2e6;\r\n border-radius: 0.375rem;\r\n color: #495057;\r\n transition: all 0.2s ease;\n}\n.paginator-badge[data-v-2c61ceb1]:hover {\r\n background-color: #e9ecef;\r\n border-color: #ced4da;\n}\n.paginator-label[data-v-2c61ceb1] {\r\n font-weight: 500;\r\n color: #6c757d;\n}\n.paginator-value[data-v-2c61ceb1] {\r\n font-weight: 600;\r\n color: #212529;\n}\n.crud-paginator[data-v-2c61ceb1] {\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n width: 100%;\n}\r\n";
13723
13766
  n(css$1, {});
13724
13767
 
13725
13768
  const _sfc_main$1 = {
@@ -13763,8 +13806,34 @@ var _sfc_render$1 = function render() {
13763
13806
  }, [!_vm.loading ? _c('div', {
13764
13807
  staticClass: "text-center"
13765
13808
  }, [_vm._v(_vm._s(_vm.items.length == 0 ? _vm.messageEmptyResults : _vm.messageNoMore))]) : _vm._e()])]) : _vm._e(), !_vm.infiniteScroll ? _c('div', {
13809
+ staticClass: "paginator-container"
13810
+ }, [_c('div', {
13766
13811
  staticClass: "paginator-data"
13767
- }, [_vm._v(" Filas: " + _vm._s(_vm.pagination.total) + " | xPág: " + _vm._s(_vm.pagination.per_page) + " | Pág: " + _vm._s(_vm.pagination.current_page) + " | Seleccionados: " + _vm._s(_vm.selectedItems.length) + " ")]) : _vm._e(), !_vm.infiniteScroll ? _c('div', {
13812
+ }, [_c('span', {
13813
+ staticClass: "paginator-badge"
13814
+ }, [_c('span', {
13815
+ staticClass: "paginator-label"
13816
+ }, [_vm._v("Filas:")]), _c('span', {
13817
+ staticClass: "paginator-value"
13818
+ }, [_vm._v(_vm._s(_vm.pagination.total))])]), _c('span', {
13819
+ staticClass: "paginator-badge"
13820
+ }, [_c('span', {
13821
+ staticClass: "paginator-label"
13822
+ }, [_vm._v("xPág:")]), _c('span', {
13823
+ staticClass: "paginator-value"
13824
+ }, [_vm._v(_vm._s(_vm.pagination.per_page))])]), _c('span', {
13825
+ staticClass: "paginator-badge"
13826
+ }, [_c('span', {
13827
+ staticClass: "paginator-label"
13828
+ }, [_vm._v("Pág:")]), _c('span', {
13829
+ staticClass: "paginator-value"
13830
+ }, [_vm._v(_vm._s(_vm.pagination.current_page))])]), _vm.selectedItems.length > 0 ? _c('span', {
13831
+ staticClass: "paginator-badge"
13832
+ }, [_c('span', {
13833
+ staticClass: "paginator-label"
13834
+ }, [_vm._v("Seleccionados:")]), _c('span', {
13835
+ staticClass: "paginator-value"
13836
+ }, [_vm._v(_vm._s(_vm.selectedItems.length))])]) : _vm._e()]), _c('div', {
13768
13837
  staticClass: "crud-paginator"
13769
13838
  }, [_vm.showPaginator ? _c('b-pagination', {
13770
13839
  attrs: {
@@ -13783,10 +13852,10 @@ var _sfc_render$1 = function render() {
13783
13852
  },
13784
13853
  expression: "pagination.current_page"
13785
13854
  }
13786
- }) : _vm._e()], 1) : _vm._e()], 1);
13855
+ }) : _vm._e()], 1)]) : _vm._e()], 1);
13787
13856
  };
13788
13857
  var _sfc_staticRenderFns$1 = [];
13789
- var __component__$1 = /*#__PURE__*/normalizeComponent(_sfc_main$1, _sfc_render$1, _sfc_staticRenderFns$1, false, null, "975091ac", null, null);
13858
+ var __component__$1 = /*#__PURE__*/normalizeComponent(_sfc_main$1, _sfc_render$1, _sfc_staticRenderFns$1, false, null, "2c61ceb1", null, null);
13790
13859
  var CrudPagination = __component__$1.exports;
13791
13860
 
13792
13861
  var crudData = {
@@ -13828,7 +13897,8 @@ var crudData = {
13828
13897
  refreshing: false,
13829
13898
  fetchError: false,
13830
13899
  principalSort: false,
13831
- exportFormat: 'JSON'
13900
+ exportFormat: 'JSON',
13901
+ fileImport: null
13832
13902
  };
13833
13903
  },
13834
13904
  computed: {
@@ -19307,17 +19377,31 @@ var crudApi = {
19307
19377
  filters: JSON.stringify(this.finalFilters)
19308
19378
  }
19309
19379
  }).then(response => {
19380
+ console.debug("fetchItems - Response recibida:", response.data);
19310
19381
  this.makePagination(response.data);
19382
+
19383
+ // Validar que response.data.data existe y es un array
19311
19384
  let items = response.data.data;
19385
+ if (!items) {
19386
+ console.warn("fetchItems - response.data.data es undefined o null, usando array vacío");
19387
+ items = [];
19388
+ } else if (!Array.isArray(items)) {
19389
+ console.warn("fetchItems - response.data.data no es un array, tipo:", typeof items, items);
19390
+ items = [];
19391
+ }
19392
+ console.debug("fetchItems - Items procesados:", items, "Cantidad:", items.length);
19312
19393
  if (this.grouped) {
19313
19394
  this.groupItems(items, concat, this.isSplitGroups);
19314
19395
  } else {
19315
19396
  if (concat) {
19316
- this.items = this.items.concat(items);
19397
+ // Para concat, agregar items al array existente
19398
+ this.items.push(...items);
19317
19399
  } else {
19318
- this.items = items;
19400
+ // Mutar el array existente en lugar de reemplazarlo para mantener reactividad con provide/inject
19401
+ this.items.splice(0, this.items.length, ...items);
19319
19402
  }
19320
19403
  }
19404
+ console.debug("fetchItems - this.items después de asignar:", this.items, "Cantidad:", this.items ? this.items.length : 0);
19321
19405
  this.loading = false;
19322
19406
  this.firstLoad = true;
19323
19407
  this.$emit("afterFetch", {});
@@ -19345,11 +19429,13 @@ var crudApi = {
19345
19429
  }, {});
19346
19430
  if (splitGroups) {
19347
19431
  // Dividimos los grupos en arrays separados
19348
- this.items = Object.entries(groupedMap).map(([groupKey, groupItems]) => ({
19432
+ const groupedItems = Object.entries(groupedMap).map(([groupKey, groupItems]) => ({
19349
19433
  groupKey,
19350
19434
  groupLabel: groupLabelPre + groupKey + groupLabelAfter,
19351
19435
  items: groupItems
19352
19436
  }));
19437
+ // Mutar el array existente para mantener reactividad
19438
+ this.items.splice(0, this.items.length, ...groupedItems);
19353
19439
  } else {
19354
19440
  // Creamos la estructura agrupada en un solo array
19355
19441
  for (const [groupKey, groupItems] of Object.entries(groupedMap)) {
@@ -19362,9 +19448,10 @@ var crudApi = {
19362
19448
 
19363
19449
  // Decidimos si concatenar o reemplazar los items existentes
19364
19450
  if (concat) {
19365
- this.items = this.items.concat(itemsWithGroup);
19451
+ this.items.push(...itemsWithGroup);
19366
19452
  } else {
19367
- this.items = itemsWithGroup;
19453
+ // Mutar el array existente para mantener reactividad
19454
+ this.items.splice(0, this.items.length, ...itemsWithGroup);
19368
19455
  }
19369
19456
  }
19370
19457
  },
@@ -19808,14 +19895,14 @@ var crudFilters = {
19808
19895
  } else if (value == "DESC") {
19809
19896
  this.internalFilterByProp(column.prop + "_sort").value = null;
19810
19897
  }
19898
+ this.forceRecomputeCounter++;
19899
+ setTimeout(() => {
19900
+ this.refresh();
19901
+ }, 1);
19811
19902
  },
19812
19903
  toggleFilters() {
19813
19904
  this.filtersVisible = !this.filtersVisible;
19814
- if (this.displayMode == this.displayModes.MODE_CARDS) {
19815
- this.filterSidebarOpen = this.filtersVisible;
19816
- } else {
19817
- this.filterSidebarOpen = false;
19818
- }
19905
+ this.filterSidebarOpen = this.filtersVisible;
19819
19906
  },
19820
19907
  resetFilters(refresh = true) {
19821
19908
  this.internalFilters = [];
@@ -20152,7 +20239,7 @@ var crudHelpers = {
20152
20239
  }
20153
20240
  };
20154
20241
 
20155
- var css = "tr td[data-v-9374538f]:last-child,\ntr td[data-v-9374538f]:first-child {\n width: 1%;\n white-space: nowrap; }\n\n.crud-pagination[data-v-9374538f] {\n display: flex;\n align-items: center;\n width: 100%;\n justify-content: center;\n margin-top: 1rem; }\n\n.crud-header[data-v-9374538f] {\n display: flex;\n justify-content: space-between;\n max-height: 3rem; }\n .crud-header[data-v-9374538f] .crud-title[data-v-9374538f] {\n margin: 0; }\n .crud-header[data-v-9374538f] .crud-search[data-v-9374538f] {\n max-width: 15rem; }\n .crud-header[data-v-9374538f] .crud-search[data-v-9374538f] .btn[data-v-9374538f] {\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-9374538f] .crud-search[data-v-9374538f] .btn[data-v-9374538f].open[data-v-9374538f] {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0; }\n .crud-header[data-v-9374538f] .table-options[data-v-9374538f] {\n margin-bottom: 1rem;\n display: flex;\n align-items: center;\n justify-content: flex-end; }\n\n.custom-control[data-v-9374538f] {\n position: relative; }\n\n@media (min-width: 992px) {\n .table[data-v-9374538f] {\n table-layout: auto; }\n .table[data-v-9374538f] tbody[data-v-9374538f] td[data-v-9374538f] {\n overflow: scroll;\n -ms-overflow-style: none;\n /* IE and Edge */\n scrollbar-width: none;\n /* Firefox */ }\n .table[data-v-9374538f] tbody[data-v-9374538f] td[data-v-9374538f]::-webkit-scrollbar {\n display: none; } }\n\n.kanban-board[data-v-9374538f] {\n display: flex;\n gap: 1rem;\n overflow-x: auto;\n padding: 1rem; }\n\n.kanban-column[data-v-9374538f] {\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-9374538f] {\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-9374538f] {\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-9374538f] {\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";
20242
+ var css = "tr td[data-v-51b1f76a]:last-child,\ntr td[data-v-51b1f76a]:first-child {\n width: 1%;\n white-space: nowrap; }\n\ntbody tr.selected[data-v-51b1f76a] {\n background-color: #e3f2fd !important; }\n tbody tr.selected[data-v-51b1f76a] td[data-v-51b1f76a] {\n background-color: transparent !important; }\n tbody tr.selected[data-v-51b1f76a][data-v-51b1f76a]:hover {\n background-color: #bbdefb !important; }\n tbody tr.selected[data-v-51b1f76a][data-v-51b1f76a]:hover td[data-v-51b1f76a] {\n background-color: transparent !important; }\n\n.table-striped tbody tr.selected[data-v-51b1f76a]:nth-of-type(odd) {\n background-color: #e3f2fd !important; }\n .table-striped tbody tr.selected[data-v-51b1f76a]:nth-of-type(odd) td[data-v-51b1f76a] {\n background-color: transparent !important; }\n\n.table-striped tbody tr.selected[data-v-51b1f76a]:nth-of-type(even) {\n background-color: #e3f2fd !important; }\n .table-striped tbody tr.selected[data-v-51b1f76a]:nth-of-type(even) td[data-v-51b1f76a] {\n background-color: transparent !important; }\n\n.crud-pagination[data-v-51b1f76a] {\n display: flex;\n align-items: center;\n width: 100%;\n justify-content: center;\n margin-top: 1rem; }\n\n.crud-header[data-v-51b1f76a] {\n display: flex;\n justify-content: space-between;\n max-height: 3rem; }\n .crud-header[data-v-51b1f76a] .crud-title[data-v-51b1f76a] {\n margin: 0; }\n .crud-header[data-v-51b1f76a] .crud-search[data-v-51b1f76a] {\n max-width: 15rem; }\n .crud-header[data-v-51b1f76a] .crud-search[data-v-51b1f76a] .btn[data-v-51b1f76a] {\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-51b1f76a] .crud-search[data-v-51b1f76a] .btn[data-v-51b1f76a].open[data-v-51b1f76a] {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0; }\n .crud-header[data-v-51b1f76a] .table-options[data-v-51b1f76a] {\n margin-bottom: 1rem;\n display: flex;\n align-items: center;\n justify-content: flex-end; }\n\n.custom-control[data-v-51b1f76a] {\n position: relative; }\n\n@media (min-width: 992px) {\n .table[data-v-51b1f76a] {\n table-layout: auto; }\n .table[data-v-51b1f76a] tbody[data-v-51b1f76a] td[data-v-51b1f76a] {\n overflow: scroll;\n -ms-overflow-style: none;\n /* IE and Edge */\n scrollbar-width: none;\n /* Firefox */ }\n .table[data-v-51b1f76a] tbody[data-v-51b1f76a] td[data-v-51b1f76a]::-webkit-scrollbar {\n display: none; } }\n\n.kanban-board[data-v-51b1f76a] {\n display: flex;\n gap: 1rem;\n overflow-x: auto;\n padding: 1rem; }\n\n.kanban-column[data-v-51b1f76a] {\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-51b1f76a] {\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-51b1f76a] {\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-51b1f76a] {\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";
20156
20243
  n(css, {});
20157
20244
 
20158
20245
  const _sfc_main = {
@@ -20241,6 +20328,7 @@ const _sfc_main = {
20241
20328
  bulkDelete: this.bulkDelete,
20242
20329
  showImport: this.showImport,
20243
20330
  showExport: this.showExport,
20331
+ fileImport: this.fileImport,
20244
20332
  markDirty: this.markDirty,
20245
20333
  // Data from mixins
20246
20334
  crudUuid: this.crudUuid,
@@ -20652,7 +20740,7 @@ var _sfc_render = function render() {
20652
20740
  }), _c('CrudPagination'), _c('CrudModals')], 1);
20653
20741
  };
20654
20742
  var _sfc_staticRenderFns = [];
20655
- var __component__ = /*#__PURE__*/normalizeComponent(_sfc_main, _sfc_render, _sfc_staticRenderFns, false, null, "9374538f", null, null);
20743
+ var __component__ = /*#__PURE__*/normalizeComponent(_sfc_main, _sfc_render, _sfc_staticRenderFns, false, null, "51b1f76a", null, null);
20656
20744
  var component = __component__.exports;
20657
20745
 
20658
20746
  // Import vue component