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,4 +1,4 @@
1
- 'use strict';function _iterableToArrayLimit(r, l) {
1
+ 'use strict';var Vue=require('vue');function _interopDefaultLegacy(e){return e&&typeof e==='object'&&'default'in e?e:{'default':e}}var Vue__default=/*#__PURE__*/_interopDefaultLegacy(Vue);function _iterableToArrayLimit(r, l) {
2
2
  var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
3
3
  if (null != t) {
4
4
  var e,
@@ -739,13 +739,26 @@ var _sfc_render$f = function render() {
739
739
  };
740
740
  var _sfc_staticRenderFns$f = [];
741
741
  var __component__$f = /*#__PURE__*/normalizeComponent(_sfc_main$f, _sfc_render$f, _sfc_staticRenderFns$f, false, null, null, null, null);
742
- var CrudFilters = __component__$f.exports;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}}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";
742
+ var CrudFilters = __component__$f.exports;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}}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";
743
743
  n(css$6, {});var _sfc_main$e = {
744
744
  name: 'CrudHeader',
745
745
  components: {
746
746
  CrudFilters: CrudFilters
747
747
  },
748
- 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']
748
+ 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'],
749
+ computed: {
750
+ sidebarVisible: function sidebarVisible() {
751
+ // Acceder directamente al componente padre para obtener reactividad
752
+ return this.$parent ? this.$parent.filterSidebarOpen : this.filterSidebarOpen;
753
+ }
754
+ },
755
+ methods: {
756
+ closeSidebar: function closeSidebar() {
757
+ if (this.filterSidebarOpen) {
758
+ this.toggleFilters();
759
+ }
760
+ }
761
+ }
749
762
  };
750
763
  var _sfc_render$e = function render() {
751
764
  var _vm = this,
@@ -756,16 +769,13 @@ var _sfc_render$e = function render() {
756
769
  staticClass: "crud-title"
757
770
  }, [_vm._v(_vm._s(_vm.title))]) : _vm._e(), _c('b-sidebar', {
758
771
  attrs: {
772
+ "visible": _vm.sidebarVisible,
759
773
  "title": "Filtrar",
760
774
  "right": "",
761
775
  "shadow": ""
762
776
  },
763
- model: {
764
- value: _vm.filterSidebarOpen,
765
- callback: function callback($$v) {
766
- _vm.filterSidebarOpen = $$v;
767
- },
768
- expression: "filterSidebarOpen"
777
+ on: {
778
+ "hidden": _vm.closeSidebar
769
779
  }
770
780
  }, [_c('CrudFilters')], 1), _c('div', {
771
781
  staticClass: "table-options"
@@ -888,7 +898,7 @@ var _sfc_render$e = function render() {
888
898
  })], 2)], 1)], 1) : _vm._e();
889
899
  };
890
900
  var _sfc_staticRenderFns$e = [];
891
- var __component__$e = /*#__PURE__*/normalizeComponent(_sfc_main$e, _sfc_render$e, _sfc_staticRenderFns$e, false, null, "dec590e4", null, null);
901
+ var __component__$e = /*#__PURE__*/normalizeComponent(_sfc_main$e, _sfc_render$e, _sfc_staticRenderFns$e, false, null, "ed8e5777", null, null);
892
902
  var CrudHeader = __component__$e.exports;var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
893
903
 
894
904
  function getDefaultExportFromCjs (x) {
@@ -7041,7 +7051,33 @@ Sortable.mount(Remove, Revert);var sortable_esm=/*#__PURE__*/Object.freeze({__pr
7041
7051
  var vuedraggable_umdExports = vuedraggable_umd.exports;
7042
7052
  var draggable = /*@__PURE__*/getDefaultExportFromCjs(vuedraggable_umdExports);var _sfc_main$d = {
7043
7053
  name: 'TableHeader',
7044
- inject: ['columns', 'enableFilters', 'filtersVisible', 'isColumnHasFilter', 'internalFilterByProp', 'onChangeFilter', 'toggleAll', 'toggleSortFilter', 'sortable', 'optionsLoaded']
7054
+ inject: ['columns', 'enableFilters', 'filtersVisible', 'isColumnHasFilter', 'internalFilterByProp', 'onChangeFilter', 'toggleAll', 'toggleSortFilter', 'sortable', 'optionsLoaded'],
7055
+ data: function data() {
7056
+ return {
7057
+ hoveredColumn: null
7058
+ };
7059
+ },
7060
+ methods: {
7061
+ isSortableColumn: function isSortableColumn(column) {
7062
+ return this.sortable && column.type != 'select' && column.type != 'checkbox' && this.internalFilterByProp(column.prop + '_sort');
7063
+ },
7064
+ shouldShowSortIcon: function shouldShowSortIcon(column) {
7065
+ var sortFilter = this.internalFilterByProp(column.prop + '_sort');
7066
+ return this.hoveredColumn === column.prop || sortFilter.value;
7067
+ },
7068
+ getSortIconDirection: function getSortIconDirection(column) {
7069
+ var sortFilter = this.internalFilterByProp(column.prop + '_sort');
7070
+ var sortValue = sortFilter.value;
7071
+ if (sortValue === 'DESC') {
7072
+ return 'down';
7073
+ } else if (sortValue === 'ASC') {
7074
+ return 'up';
7075
+ } else if (this.hoveredColumn === column.prop) {
7076
+ return 'up';
7077
+ }
7078
+ return null;
7079
+ }
7080
+ }
7045
7081
  };
7046
7082
  var _sfc_render$d = function render() {
7047
7083
  var _vm = this,
@@ -7057,6 +7093,14 @@ var _sfc_render$d = function render() {
7057
7093
  },
7058
7094
  attrs: {
7059
7095
  "scope": "col"
7096
+ },
7097
+ on: {
7098
+ "mouseenter": function mouseenter($event) {
7099
+ _vm.hoveredColumn = column.prop;
7100
+ },
7101
+ "mouseleave": function mouseleave($event) {
7102
+ _vm.hoveredColumn = null;
7103
+ }
7060
7104
  }
7061
7105
  }, [_vm.enableFilters && _vm.filtersVisible && _vm.isColumnHasFilter(column) && _vm.internalFilterByProp(column.prop) ? _vm._t('filter-' + column.prop, function () {
7062
7106
  return [_c('div', {
@@ -7255,14 +7299,14 @@ var _sfc_render$d = function render() {
7255
7299
  return _vm.toggleAll($event);
7256
7300
  }
7257
7301
  }
7258
- })], 1) : _c('span', [_vm._v(_vm._s(column.label))]), _vm.sortable && column.type != 'select' && column.type != 'checkbox' && _vm.internalFilterByProp(column.prop + '_sort') ? _c('span', {
7302
+ })], 1) : _c('span', [_vm._v(_vm._s(column.label))]), _vm.isSortableColumn(column) && _vm.shouldShowSortIcon(column) ? _c('span', {
7259
7303
  staticClass: "sort-filter",
7260
7304
  on: {
7261
7305
  "click": function click($event) {
7262
7306
  return _vm.toggleSortFilter(column);
7263
7307
  }
7264
7308
  }
7265
- }, [!_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);
7309
+ }, [_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);
7266
7310
  });
7267
7311
  })], 2)]);
7268
7312
  };
@@ -13060,7 +13104,9 @@ var _sfc_render$b = function render() {
13060
13104
  var _vm = this,
13061
13105
  _c = _vm._self._c;
13062
13106
  return _c('tr', {
13063
- staticClass: "item",
13107
+ class: ['item', {
13108
+ 'selected': _vm.item.selected
13109
+ }],
13064
13110
  on: {
13065
13111
  "mouseover": function mouseover($event) {
13066
13112
  return _vm.onRowHover(_vm.item, _vm.index);
@@ -13114,6 +13160,7 @@ var _sfc_render$a = function render() {
13114
13160
  class: ['table table-hover table-striped w-100', _vm.tableClass]
13115
13161
  }, [_c('TableHeader'), _c('draggable', {
13116
13162
  attrs: {
13163
+ "list": _vm.items,
13117
13164
  "group": _vm.draggableGroup,
13118
13165
  "tag": "tbody",
13119
13166
  "draggable": _vm.orderable ? '.item' : '.none',
@@ -13135,13 +13182,6 @@ var _sfc_render$a = function render() {
13135
13182
  "change": function change($event) {
13136
13183
  return _vm.onDraggableChange($event);
13137
13184
  }
13138
- },
13139
- model: {
13140
- value: _vm.items,
13141
- callback: function callback($$v) {
13142
- _vm.items = $$v;
13143
- },
13144
- expression: "items"
13145
13185
  }
13146
13186
  }, _vm._l(_vm.itemsList, function (item, index) {
13147
13187
  return _c('TableRow', {
@@ -13152,7 +13192,7 @@ var _sfc_render$a = function render() {
13152
13192
  "grouped": _vm.grouped
13153
13193
  }
13154
13194
  });
13155
- }), 1)], 1), !_vm.loading && _vm.items && _vm.items.length == 0 && !_vm.infiniteScroll ? _c('p', {
13195
+ }), 1)], 1), !_vm.loading && _vm.itemsList && _vm.itemsList.length == 0 && !_vm.infiniteScroll ? _c('p', {
13156
13196
  staticClass: "p-3"
13157
13197
  }, [_vm._v(" " + _vm._s(_vm.messageEmptyResults) + " ")]) : _vm._e()]) : _vm._e();
13158
13198
  };
@@ -13495,11 +13535,12 @@ var _sfc_render$9 = function render() {
13495
13535
  };
13496
13536
  var _sfc_staticRenderFns$9 = [];
13497
13537
  var __component__$9 = /*#__PURE__*/normalizeComponent(_sfc_main$9, _sfc_render$9, _sfc_staticRenderFns$9, false, null, null, null, null);
13498
- var ItemCard = __component__$9.exports;var _sfc_main$8 = {
13538
+ var ItemCard = __component__$9.exports;// Registrar el componente masonry usando el Plugin
13539
+ Vue__default["default"].use(Plugin);
13540
+ var _sfc_main$8 = {
13499
13541
  name: 'CrudCards',
13500
13542
  components: {
13501
13543
  draggable: draggable,
13502
- VueMasonry: Plugin,
13503
13544
  ItemCard: ItemCard
13504
13545
  },
13505
13546
  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'],
@@ -13512,7 +13553,7 @@ var ItemCard = __component__$9.exports;var _sfc_main$8 = {
13512
13553
  var _sfc_render$8 = function render() {
13513
13554
  var _vm = this,
13514
13555
  _c = _vm._self._c;
13515
- return _c('div', [_c('draggable', {
13556
+ return _vm.displayMode == _vm.displayModes.MODE_CARDS ? _c('div', [_c('draggable', {
13516
13557
  attrs: {
13517
13558
  "group": _vm.draggableGroup,
13518
13559
  "draggable": _vm.orderable ? '.item' : '.none',
@@ -13580,9 +13621,9 @@ var _sfc_render$8 = function render() {
13580
13621
  }, {
13581
13622
  "item": item
13582
13623
  })], 2);
13583
- }), 0)], 1), !_vm.loading && _vm.items && _vm.items.length == 0 && !_vm.infiniteScroll ? _c('p', {
13624
+ }), 0)], 1), !_vm.loading && _vm.itemsList && _vm.itemsList.length == 0 && !_vm.infiniteScroll ? _c('p', {
13584
13625
  staticClass: "p-3"
13585
- }, [_vm._v(" " + _vm._s(_vm.messageEmptyResults) + " ")]) : _vm._e()], 1);
13626
+ }, [_vm._v(" " + _vm._s(_vm.messageEmptyResults) + " ")]) : _vm._e()], 1) : _vm._e();
13586
13627
  };
13587
13628
  var _sfc_staticRenderFns$8 = [];
13588
13629
  var __component__$8 = /*#__PURE__*/normalizeComponent(_sfc_main$8, _sfc_render$8, _sfc_staticRenderFns$8, false, null, null, null, null);
@@ -13838,7 +13879,7 @@ var KanbanBoard = __component__$5.exports;var _sfc_main$4 = {
13838
13879
  var _sfc_render$4 = function render() {
13839
13880
  var _vm = this,
13840
13881
  _c = _vm._self._c;
13841
- return _c('div', [_c('KanbanBoard')], 1);
13882
+ return _vm.displayMode == _vm.displayModes.MODE_KANBAN ? _c('div', [_c('KanbanBoard')], 1) : _vm._e();
13842
13883
  };
13843
13884
  var _sfc_staticRenderFns$4 = [];
13844
13885
  var __component__$4 = /*#__PURE__*/normalizeComponent(_sfc_main$4, _sfc_render$4, _sfc_staticRenderFns$4, false, null, null, null, null);
@@ -13849,9 +13890,9 @@ var CrudKanban = __component__$4.exports;var _sfc_main$3 = {
13849
13890
  var _sfc_render$3 = function render() {
13850
13891
  var _vm = this,
13851
13892
  _c = _vm._self._c;
13852
- return _c('div', [_c('div', {
13893
+ return _vm.displayMode == _vm.displayModes.MODE_CUSTOM ? _c('div', [_c('div', {
13853
13894
  class: _vm.listContainerClass
13854
- }, [!_vm.loading && _vm.items && _vm.items.length == 0 && !_vm.infiniteScroll ? _c('p', {
13895
+ }, [!_vm.loading && _vm.itemsList && _vm.itemsList.length == 0 && !_vm.infiniteScroll ? _c('p', {
13855
13896
  staticClass: "p-3"
13856
13897
  }, [_vm._v(" " + _vm._s(_vm.messageEmptyResults) + " ")]) : _vm._e(), _vm._l(_vm.itemsList, function (item, index) {
13857
13898
  return _c('div', {
@@ -13860,7 +13901,7 @@ var _sfc_render$3 = function render() {
13860
13901
  }, [_vm._t("card", null, {
13861
13902
  "item": item
13862
13903
  })], 2);
13863
- })], 2)]);
13904
+ })], 2)]) : _vm._e();
13864
13905
  };
13865
13906
  var _sfc_staticRenderFns$3 = [];
13866
13907
  var __component__$3 = /*#__PURE__*/normalizeComponent(_sfc_main$3, _sfc_render$3, _sfc_staticRenderFns$3, false, null, null, null, null);
@@ -14098,7 +14139,7 @@ vueInfiniteLoading.exports;
14098
14139
  } (vueInfiniteLoading, vueInfiniteLoading.exports));
14099
14140
 
14100
14141
  var vueInfiniteLoadingExports = vueInfiniteLoading.exports;
14101
- var InfiniteLoading = /*@__PURE__*/getDefaultExportFromCjs(vueInfiniteLoadingExports);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";
14142
+ var InfiniteLoading = /*@__PURE__*/getDefaultExportFromCjs(vueInfiniteLoadingExports);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";
14102
14143
  n(css$1, {});var _sfc_main$1 = {
14103
14144
  name: 'CrudPagination',
14104
14145
  components: {
@@ -14140,8 +14181,34 @@ var _sfc_render$1 = function render() {
14140
14181
  }, [!_vm.loading ? _c('div', {
14141
14182
  staticClass: "text-center"
14142
14183
  }, [_vm._v(_vm._s(_vm.items.length == 0 ? _vm.messageEmptyResults : _vm.messageNoMore))]) : _vm._e()])]) : _vm._e(), !_vm.infiniteScroll ? _c('div', {
14184
+ staticClass: "paginator-container"
14185
+ }, [_c('div', {
14143
14186
  staticClass: "paginator-data"
14144
- }, [_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', {
14187
+ }, [_c('span', {
14188
+ staticClass: "paginator-badge"
14189
+ }, [_c('span', {
14190
+ staticClass: "paginator-label"
14191
+ }, [_vm._v("Filas:")]), _c('span', {
14192
+ staticClass: "paginator-value"
14193
+ }, [_vm._v(_vm._s(_vm.pagination.total))])]), _c('span', {
14194
+ staticClass: "paginator-badge"
14195
+ }, [_c('span', {
14196
+ staticClass: "paginator-label"
14197
+ }, [_vm._v("xPág:")]), _c('span', {
14198
+ staticClass: "paginator-value"
14199
+ }, [_vm._v(_vm._s(_vm.pagination.per_page))])]), _c('span', {
14200
+ staticClass: "paginator-badge"
14201
+ }, [_c('span', {
14202
+ staticClass: "paginator-label"
14203
+ }, [_vm._v("Pág:")]), _c('span', {
14204
+ staticClass: "paginator-value"
14205
+ }, [_vm._v(_vm._s(_vm.pagination.current_page))])]), _vm.selectedItems.length > 0 ? _c('span', {
14206
+ staticClass: "paginator-badge"
14207
+ }, [_c('span', {
14208
+ staticClass: "paginator-label"
14209
+ }, [_vm._v("Seleccionados:")]), _c('span', {
14210
+ staticClass: "paginator-value"
14211
+ }, [_vm._v(_vm._s(_vm.selectedItems.length))])]) : _vm._e()]), _c('div', {
14145
14212
  staticClass: "crud-paginator"
14146
14213
  }, [_vm.showPaginator ? _c('b-pagination', {
14147
14214
  attrs: {
@@ -14160,10 +14227,10 @@ var _sfc_render$1 = function render() {
14160
14227
  },
14161
14228
  expression: "pagination.current_page"
14162
14229
  }
14163
- }) : _vm._e()], 1) : _vm._e()], 1);
14230
+ }) : _vm._e()], 1)]) : _vm._e()], 1);
14164
14231
  };
14165
14232
  var _sfc_staticRenderFns$1 = [];
14166
- var __component__$1 = /*#__PURE__*/normalizeComponent(_sfc_main$1, _sfc_render$1, _sfc_staticRenderFns$1, false, null, "975091ac", null, null);
14233
+ var __component__$1 = /*#__PURE__*/normalizeComponent(_sfc_main$1, _sfc_render$1, _sfc_staticRenderFns$1, false, null, "2c61ceb1", null, null);
14167
14234
  var CrudPagination = __component__$1.exports;var crudData = {
14168
14235
  data: function data() {
14169
14236
  return {
@@ -14203,7 +14270,8 @@ var CrudPagination = __component__$1.exports;var crudData = {
14203
14270
  refreshing: false,
14204
14271
  fetchError: false,
14205
14272
  principalSort: false,
14206
- exportFormat: 'JSON'
14273
+ exportFormat: 'JSON',
14274
+ fileImport: null
14207
14275
  };
14208
14276
  },
14209
14277
  computed: {
@@ -19623,17 +19691,33 @@ axios.default = axios;var crudApi = {
19623
19691
  filters: JSON.stringify(this.finalFilters)
19624
19692
  }
19625
19693
  }).then(function (response) {
19694
+ console.debug("fetchItems - Response recibida:", response.data);
19626
19695
  _this2.makePagination(response.data);
19696
+
19697
+ // Validar que response.data.data existe y es un array
19627
19698
  var items = response.data.data;
19699
+ if (!items) {
19700
+ console.warn("fetchItems - response.data.data es undefined o null, usando array vacío");
19701
+ items = [];
19702
+ } else if (!Array.isArray(items)) {
19703
+ console.warn("fetchItems - response.data.data no es un array, tipo:", _typeof$1(items), items);
19704
+ items = [];
19705
+ }
19706
+ console.debug("fetchItems - Items procesados:", items, "Cantidad:", items.length);
19628
19707
  if (_this2.grouped) {
19629
19708
  _this2.groupItems(items, concat, _this2.isSplitGroups);
19630
19709
  } else {
19631
19710
  if (concat) {
19632
- _this2.items = _this2.items.concat(items);
19711
+ var _this2$items;
19712
+ // Para concat, agregar items al array existente
19713
+ (_this2$items = _this2.items).push.apply(_this2$items, _toConsumableArray$1(items));
19633
19714
  } else {
19634
- _this2.items = items;
19715
+ var _this2$items2;
19716
+ // Mutar el array existente en lugar de reemplazarlo para mantener reactividad con provide/inject
19717
+ (_this2$items2 = _this2.items).splice.apply(_this2$items2, [0, _this2.items.length].concat(_toConsumableArray$1(items)));
19635
19718
  }
19636
19719
  }
19720
+ console.debug("fetchItems - this.items después de asignar:", _this2.items, "Cantidad:", _this2.items ? _this2.items.length : 0);
19637
19721
  _this2.loading = false;
19638
19722
  _this2.firstLoad = true;
19639
19723
  _this2.$emit("afterFetch", {});
@@ -19662,8 +19746,9 @@ axios.default = axios;var crudApi = {
19662
19746
  return acc;
19663
19747
  }, {});
19664
19748
  if (splitGroups) {
19749
+ var _this$items;
19665
19750
  // Dividimos los grupos en arrays separados
19666
- this.items = Object.entries(groupedMap).map(function (_ref) {
19751
+ var groupedItems = Object.entries(groupedMap).map(function (_ref) {
19667
19752
  var _ref2 = _slicedToArray(_ref, 2),
19668
19753
  groupKey = _ref2[0],
19669
19754
  groupItems = _ref2[1];
@@ -19673,6 +19758,8 @@ axios.default = axios;var crudApi = {
19673
19758
  items: groupItems
19674
19759
  };
19675
19760
  });
19761
+ // Mutar el array existente para mantener reactividad
19762
+ (_this$items = this.items).splice.apply(_this$items, [0, this.items.length].concat(_toConsumableArray$1(groupedItems)));
19676
19763
  } else {
19677
19764
  // Creamos la estructura agrupada en un solo array
19678
19765
  for (var _i = 0, _Object$entries = Object.entries(groupedMap); _i < _Object$entries.length; _i++) {
@@ -19688,9 +19775,12 @@ axios.default = axios;var crudApi = {
19688
19775
 
19689
19776
  // Decidimos si concatenar o reemplazar los items existentes
19690
19777
  if (concat) {
19691
- this.items = this.items.concat(itemsWithGroup);
19778
+ var _this$items2;
19779
+ (_this$items2 = this.items).push.apply(_this$items2, itemsWithGroup);
19692
19780
  } else {
19693
- this.items = itemsWithGroup;
19781
+ var _this$items3;
19782
+ // Mutar el array existente para mantener reactividad
19783
+ (_this$items3 = this.items).splice.apply(_this$items3, [0, this.items.length].concat(itemsWithGroup));
19694
19784
  }
19695
19785
  }
19696
19786
  },
@@ -20307,6 +20397,7 @@ axios.default = axios;var crudApi = {
20307
20397
  });
20308
20398
  },
20309
20399
  toggleSortFilter: function toggleSortFilter(column) {
20400
+ var _this2 = this;
20310
20401
  var value = this.internalFilterByProp(column.prop + "_sort").value;
20311
20402
  if (!value) {
20312
20403
  this.internalFilterByProp(column.prop + "_sort").value = "ASC";
@@ -20315,24 +20406,24 @@ axios.default = axios;var crudApi = {
20315
20406
  } else if (value == "DESC") {
20316
20407
  this.internalFilterByProp(column.prop + "_sort").value = null;
20317
20408
  }
20409
+ this.forceRecomputeCounter++;
20410
+ setTimeout(function () {
20411
+ _this2.refresh();
20412
+ }, 1);
20318
20413
  },
20319
20414
  toggleFilters: function toggleFilters() {
20320
20415
  this.filtersVisible = !this.filtersVisible;
20321
- if (this.displayMode == this.displayModes.MODE_CARDS) {
20322
- this.filterSidebarOpen = this.filtersVisible;
20323
- } else {
20324
- this.filterSidebarOpen = false;
20325
- }
20416
+ this.filterSidebarOpen = this.filtersVisible;
20326
20417
  },
20327
20418
  resetFilters: function resetFilters() {
20328
- var _this2 = this;
20419
+ var _this3 = this;
20329
20420
  var refresh = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
20330
20421
  this.internalFilters = [];
20331
20422
  this.setupFilters();
20332
20423
  this.forceRecomputeCounter++;
20333
20424
  if (refresh) {
20334
20425
  setTimeout(function () {
20335
- _this2.refresh();
20426
+ _this3.refresh();
20336
20427
  }, 1);
20337
20428
  }
20338
20429
  },
@@ -20340,29 +20431,29 @@ axios.default = axios;var crudApi = {
20340
20431
  return column && !column.hideFilter && column.type != "actions";
20341
20432
  },
20342
20433
  setFilter: function setFilter(column, value) {
20343
- var _this3 = this;
20434
+ var _this4 = this;
20344
20435
  var filter = this.filter.find(function (f) {
20345
20436
  return f.column == column;
20346
20437
  });
20347
20438
  filter.value = value;
20348
20439
  this.forceRecomputeCounter++;
20349
20440
  setTimeout(function () {
20350
- _this3.refresh();
20441
+ _this4.refresh();
20351
20442
  }, 1);
20352
20443
  },
20353
20444
  onChangeFilter: function onChangeFilter(event) {
20354
- var _this4 = this;
20445
+ var _this5 = this;
20355
20446
  this.forceRecomputeCounter++;
20356
20447
  console.debug("Filters debug ", this.finalFilters, this.internalFilter, this.internalFilters, this.filter, this.filters);
20357
20448
  setTimeout(function () {
20358
- _this4.refresh();
20449
+ _this5.refresh();
20359
20450
  }, 1);
20360
20451
  },
20361
20452
  togglePrincipalSort: function togglePrincipalSort() {
20362
- var _this5 = this;
20453
+ var _this6 = this;
20363
20454
  this.principalSort = !this.principalSort;
20364
20455
  setTimeout(function () {
20365
- _this5.refresh();
20456
+ _this6.refresh();
20366
20457
  }, 1);
20367
20458
  }
20368
20459
  }
@@ -20711,7 +20802,7 @@ axios.default = axios;var crudApi = {
20711
20802
  link.click();
20712
20803
  }
20713
20804
  }
20714
- };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";
20805
+ };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";
20715
20806
  n(css, {});var _sfc_main = {
20716
20807
  name: "VueLaravelCrud",
20717
20808
  components: {
@@ -20798,6 +20889,7 @@ n(css, {});var _sfc_main = {
20798
20889
  bulkDelete: this.bulkDelete,
20799
20890
  showImport: this.showImport,
20800
20891
  showExport: this.showExport,
20892
+ fileImport: this.fileImport,
20801
20893
  markDirty: this.markDirty,
20802
20894
  // Data from mixins
20803
20895
  crudUuid: this.crudUuid,
@@ -21213,7 +21305,7 @@ var _sfc_render = function render() {
21213
21305
  }), _c('CrudPagination'), _c('CrudModals')], 1);
21214
21306
  };
21215
21307
  var _sfc_staticRenderFns = [];
21216
- var __component__ = /*#__PURE__*/normalizeComponent(_sfc_main, _sfc_render, _sfc_staticRenderFns, false, null, "9374538f", null, null);
21308
+ var __component__ = /*#__PURE__*/normalizeComponent(_sfc_main, _sfc_render, _sfc_staticRenderFns, false, null, "51b1f76a", null, null);
21217
21309
  var component$1 = __component__.exports;// Import vue component
21218
21310
 
21219
21311
  // Default export is installable instance of component.
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "vue-laravel-crud",
3
- "version": "2.0.0",
3
+ "version": "2.0.1",
4
+ "type": "module",
4
5
  "description": "",
5
6
  "homepage": "https://github.com/clonixdev/vue-laravel-crud",
6
7
  "main": "dist/vue-laravel-crud.ssr.js",
@@ -16,7 +17,7 @@
16
17
  "serve": "vue-cli-service serve dev/serve.js",
17
18
  "demo": "concurrently \"npm run demo:api\" \"npm run demo:app\"",
18
19
  "demo:api": "node dev/api/mockServer.js",
19
- "demo:app": "vue-cli-service serve dev/demo/DemoApp.vue",
20
+ "demo:app": "vue-cli-service serve dev/demo/main.js",
20
21
  "build": "cross-env NODE_ENV=production rollup --config build/rollup.config.js",
21
22
  "build:ssr": "cross-env NODE_ENV=production rollup --config build/rollup.config.js --format cjs",
22
23
  "build:es": "cross-env NODE_ENV=production rollup --config build/rollup.config.js --format es",
@@ -24,6 +25,7 @@
24
25
  },
25
26
  "dependencies": {
26
27
  "axios": "^1.3.5",
28
+ "bootstrap": "^4.6.2",
27
29
  "bootstrap-vue": "^2.21.2",
28
30
  "moment": "^2.29.1",
29
31
  "sass-loader": "^14.1.1",
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div v-else-if="displayMode == displayModes.MODE_CARDS">
2
+ <div v-if="displayMode == displayModes.MODE_CARDS">
3
3
  <draggable
4
4
  v-model="items"
5
5
  :group="draggableGroup"
@@ -35,22 +35,25 @@
35
35
  </masonry>
36
36
  </draggable>
37
37
 
38
- <p v-if="!loading && items && items.length == 0 && !infiniteScroll" class="p-3">
38
+ <p v-if="!loading && itemsList && itemsList.length == 0 && !infiniteScroll" class="p-3">
39
39
  {{ messageEmptyResults }}
40
40
  </p>
41
41
  </div>
42
42
  </template>
43
43
 
44
44
  <script>
45
+ import Vue from 'vue';
45
46
  import draggable from "vuedraggable";
46
47
  import VueMasonry from 'vue-masonry-css';
47
48
  import ItemCard from '../ItemCard.vue';
48
49
 
50
+ // Registrar el componente masonry usando el Plugin
51
+ Vue.use(VueMasonry);
52
+
49
53
  export default {
50
54
  name: 'CrudCards',
51
55
  components: {
52
56
  draggable,
53
- VueMasonry,
54
57
  ItemCard
55
58
  },
56
59
  inject: [
@@ -1,7 +1,7 @@
1
1
  <template>
2
- <div v-else-if="displayMode == displayModes.MODE_CUSTOM">
2
+ <div v-if="displayMode == displayModes.MODE_CUSTOM">
3
3
  <div :class="listContainerClass">
4
- <p v-if="!loading && items && items.length == 0 && !infiniteScroll" class="p-3">
4
+ <p v-if="!loading && itemsList && itemsList.length == 0 && !infiniteScroll" class="p-3">
5
5
  {{ messageEmptyResults }}
6
6
  </p>
7
7
  <div :class="listItemClass" v-for="(item, index) in itemsList" v-bind:key="index">
@@ -2,7 +2,7 @@
2
2
  <div class="crud-header" v-if="showHeader">
3
3
  <h4 class="crud-title" v-if="showTitle">{{ title }}</h4>
4
4
 
5
- <b-sidebar v-model="filterSidebarOpen" title="Filtrar" right shadow>
5
+ <b-sidebar :visible="sidebarVisible" @hidden="closeSidebar" title="Filtrar" right shadow>
6
6
  <CrudFilters />
7
7
  </b-sidebar>
8
8
 
@@ -89,7 +89,20 @@ export default {
89
89
  'confirmBulkDelete',
90
90
  'toggleFilters',
91
91
  'refresh'
92
- ]
92
+ ],
93
+ computed: {
94
+ sidebarVisible() {
95
+ // Acceder directamente al componente padre para obtener reactividad
96
+ return this.$parent ? this.$parent.filterSidebarOpen : this.filterSidebarOpen;
97
+ }
98
+ },
99
+ methods: {
100
+ closeSidebar() {
101
+ if (this.filterSidebarOpen) {
102
+ this.toggleFilters();
103
+ }
104
+ }
105
+ }
93
106
  };
94
107
  </script>
95
108
 
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div v-else-if="displayMode == displayModes.MODE_KANBAN">
2
+ <div v-if="displayMode == displayModes.MODE_KANBAN">
3
3
  <KanbanBoard />
4
4
  </div>
5
5
  </template>