vue-laravel-crud 2.0.1 → 2.0.4

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.
@@ -298,8 +298,8 @@ var CrudFilters = __component__$f.exports;
298
298
 
299
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}}
300
300
 
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";
302
- n(css$6, {});
301
+ var css$8 = "\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";
302
+ n(css$8, {});
303
303
 
304
304
  const _sfc_main$e = {
305
305
  name: 'CrudHeader',
@@ -721,7 +721,7 @@ function toggleClass(el, name, state) {
721
721
  }
722
722
  }
723
723
 
724
- function css$5(el, prop, val) {
724
+ function css$7(el, prop, val) {
725
725
  var style = el && el.style;
726
726
 
727
727
  if (style) {
@@ -750,7 +750,7 @@ function matrix(el, selfOnly) {
750
750
  appliedTransforms = el;
751
751
  } else {
752
752
  do {
753
- var transform = css$5(el, 'transform');
753
+ var transform = css$7(el, 'transform');
754
754
 
755
755
  if (transform && transform !== 'none') {
756
756
  appliedTransforms = transform + ' ' + appliedTransforms;
@@ -832,11 +832,11 @@ function getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoS
832
832
 
833
833
  if (!IE11OrLess) {
834
834
  do {
835
- if (container && container.getBoundingClientRect && (css$5(container, 'transform') !== 'none' || relativeToNonStaticParent && css$5(container, 'position') !== 'static')) {
835
+ if (container && container.getBoundingClientRect && (css$7(container, 'transform') !== 'none' || relativeToNonStaticParent && css$7(container, 'position') !== 'static')) {
836
836
  var containerRect = container.getBoundingClientRect(); // Set relative to edges of padding box of container
837
837
 
838
- top -= containerRect.top + parseInt(css$5(container, 'border-top-width'));
839
- left -= containerRect.left + parseInt(css$5(container, 'border-left-width'));
838
+ top -= containerRect.top + parseInt(css$7(container, 'border-top-width'));
839
+ left -= containerRect.left + parseInt(css$7(container, 'border-left-width'));
840
840
  bottom = top + elRect.height;
841
841
  right = left + elRect.width;
842
842
  break;
@@ -943,7 +943,7 @@ function getChild(el, childNum, options) {
943
943
  function lastChild(el, selector) {
944
944
  var last = el.lastElementChild;
945
945
 
946
- while (last && (last === Sortable.ghost || css$5(last, 'display') === 'none' || selector && !matches(last, selector))) {
946
+ while (last && (last === Sortable.ghost || css$7(last, 'display') === 'none' || selector && !matches(last, selector))) {
947
947
  last = last.previousElementSibling;
948
948
  }
949
949
 
@@ -1029,7 +1029,7 @@ function getParentAutoScrollElement(el, includeSelf) {
1029
1029
  do {
1030
1030
  // we don't need to get elem css if it isn't even overflowing in the first place (performance)
1031
1031
  if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {
1032
- var elemCSS = css$5(elem);
1032
+ var elemCSS = css$7(elem);
1033
1033
 
1034
1034
  if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {
1035
1035
  if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();
@@ -1105,19 +1105,19 @@ function clone(el) {
1105
1105
  }
1106
1106
 
1107
1107
  function setRect(el, rect) {
1108
- css$5(el, 'position', 'absolute');
1109
- css$5(el, 'top', rect.top);
1110
- css$5(el, 'left', rect.left);
1111
- css$5(el, 'width', rect.width);
1112
- css$5(el, 'height', rect.height);
1108
+ css$7(el, 'position', 'absolute');
1109
+ css$7(el, 'top', rect.top);
1110
+ css$7(el, 'left', rect.left);
1111
+ css$7(el, 'width', rect.width);
1112
+ css$7(el, 'height', rect.height);
1113
1113
  }
1114
1114
 
1115
1115
  function unsetRect(el) {
1116
- css$5(el, 'position', '');
1117
- css$5(el, 'top', '');
1118
- css$5(el, 'left', '');
1119
- css$5(el, 'width', '');
1120
- css$5(el, 'height', '');
1116
+ css$7(el, 'position', '');
1117
+ css$7(el, 'top', '');
1118
+ css$7(el, 'left', '');
1119
+ css$7(el, 'width', '');
1120
+ css$7(el, 'height', '');
1121
1121
  }
1122
1122
 
1123
1123
  var expando = 'Sortable' + new Date().getTime();
@@ -1131,7 +1131,7 @@ function AnimationStateManager() {
1131
1131
  if (!this.options.animation) return;
1132
1132
  var children = [].slice.call(this.el.children);
1133
1133
  children.forEach(function (child) {
1134
- if (css$5(child, 'display') === 'none' || child === Sortable.ghost) return;
1134
+ if (css$7(child, 'display') === 'none' || child === Sortable.ghost) return;
1135
1135
  animationStates.push({
1136
1136
  target: child,
1137
1137
  rect: getRect(child)
@@ -1238,8 +1238,8 @@ function AnimationStateManager() {
1238
1238
  },
1239
1239
  animate: function animate(target, currentRect, toRect, duration) {
1240
1240
  if (duration) {
1241
- css$5(target, 'transition', '');
1242
- css$5(target, 'transform', '');
1241
+ css$7(target, 'transition', '');
1242
+ css$7(target, 'transform', '');
1243
1243
  var elMatrix = matrix(this.el),
1244
1244
  scaleX = elMatrix && elMatrix.a,
1245
1245
  scaleY = elMatrix && elMatrix.d,
@@ -1247,15 +1247,15 @@ function AnimationStateManager() {
1247
1247
  translateY = (currentRect.top - toRect.top) / (scaleY || 1);
1248
1248
  target.animatingX = !!translateX;
1249
1249
  target.animatingY = !!translateY;
1250
- css$5(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');
1250
+ css$7(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');
1251
1251
  repaint(target); // repaint
1252
1252
 
1253
- css$5(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));
1254
- css$5(target, 'transform', 'translate3d(0,0,0)');
1253
+ css$7(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));
1254
+ css$7(target, 'transform', 'translate3d(0,0,0)');
1255
1255
  typeof target.animated === 'number' && clearTimeout(target.animated);
1256
1256
  target.animated = setTimeout(function () {
1257
- css$5(target, 'transition', '');
1258
- css$5(target, 'transform', '');
1257
+ css$7(target, 'transition', '');
1258
+ css$7(target, 'transform', '');
1259
1259
  target.animated = false;
1260
1260
  target.animatingX = false;
1261
1261
  target.animatingY = false;
@@ -1524,12 +1524,12 @@ supportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in
1524
1524
  return el.style.pointerEvents === 'auto';
1525
1525
  }(),
1526
1526
  _detectDirection = function _detectDirection(el, options) {
1527
- var elCSS = css$5(el),
1527
+ var elCSS = css$7(el),
1528
1528
  elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),
1529
1529
  child1 = getChild(el, 0, options),
1530
1530
  child2 = getChild(el, 1, options),
1531
- firstChildCSS = child1 && css$5(child1),
1532
- secondChildCSS = child2 && css$5(child2),
1531
+ firstChildCSS = child1 && css$7(child1),
1532
+ secondChildCSS = child2 && css$7(child2),
1533
1533
  firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,
1534
1534
  secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;
1535
1535
 
@@ -1618,12 +1618,12 @@ _detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {
1618
1618
  },
1619
1619
  _hideGhostForTarget = function _hideGhostForTarget() {
1620
1620
  if (!supportCssPointerEvents && ghostEl) {
1621
- css$5(ghostEl, 'display', 'none');
1621
+ css$7(ghostEl, 'display', 'none');
1622
1622
  }
1623
1623
  },
1624
1624
  _unhideGhostForTarget = function _unhideGhostForTarget() {
1625
1625
  if (!supportCssPointerEvents && ghostEl) {
1626
- css$5(ghostEl, 'display', '');
1626
+ css$7(ghostEl, 'display', '');
1627
1627
  }
1628
1628
  }; // #1184 fix - Prevent click event on fallback if dragged but item not changed position
1629
1629
 
@@ -2158,10 +2158,10 @@ Sortable.prototype =
2158
2158
  }
2159
2159
 
2160
2160
  var cssMatrix = "matrix(".concat(ghostMatrix.a, ",").concat(ghostMatrix.b, ",").concat(ghostMatrix.c, ",").concat(ghostMatrix.d, ",").concat(ghostMatrix.e, ",").concat(ghostMatrix.f, ")");
2161
- css$5(ghostEl, 'webkitTransform', cssMatrix);
2162
- css$5(ghostEl, 'mozTransform', cssMatrix);
2163
- css$5(ghostEl, 'msTransform', cssMatrix);
2164
- css$5(ghostEl, 'transform', cssMatrix);
2161
+ css$7(ghostEl, 'webkitTransform', cssMatrix);
2162
+ css$7(ghostEl, 'mozTransform', cssMatrix);
2163
+ css$7(ghostEl, 'msTransform', cssMatrix);
2164
+ css$7(ghostEl, 'transform', cssMatrix);
2165
2165
  lastDx = dx;
2166
2166
  lastDy = dy;
2167
2167
  touchEvt = touch;
@@ -2182,7 +2182,7 @@ Sortable.prototype =
2182
2182
  // Get relatively positioned parent
2183
2183
  ghostRelativeParent = container;
2184
2184
 
2185
- while (css$5(ghostRelativeParent, 'position') === 'static' && css$5(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {
2185
+ while (css$7(ghostRelativeParent, 'position') === 'static' && css$7(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {
2186
2186
  ghostRelativeParent = ghostRelativeParent.parentNode;
2187
2187
  }
2188
2188
 
@@ -2201,22 +2201,22 @@ Sortable.prototype =
2201
2201
  toggleClass(ghostEl, options.ghostClass, false);
2202
2202
  toggleClass(ghostEl, options.fallbackClass, true);
2203
2203
  toggleClass(ghostEl, options.dragClass, true);
2204
- css$5(ghostEl, 'transition', '');
2205
- css$5(ghostEl, 'transform', '');
2206
- css$5(ghostEl, 'box-sizing', 'border-box');
2207
- css$5(ghostEl, 'margin', 0);
2208
- css$5(ghostEl, 'top', rect.top);
2209
- css$5(ghostEl, 'left', rect.left);
2210
- css$5(ghostEl, 'width', rect.width);
2211
- css$5(ghostEl, 'height', rect.height);
2212
- css$5(ghostEl, 'opacity', '0.8');
2213
- css$5(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');
2214
- css$5(ghostEl, 'zIndex', '100000');
2215
- css$5(ghostEl, 'pointerEvents', 'none');
2204
+ css$7(ghostEl, 'transition', '');
2205
+ css$7(ghostEl, 'transform', '');
2206
+ css$7(ghostEl, 'box-sizing', 'border-box');
2207
+ css$7(ghostEl, 'margin', 0);
2208
+ css$7(ghostEl, 'top', rect.top);
2209
+ css$7(ghostEl, 'left', rect.left);
2210
+ css$7(ghostEl, 'width', rect.width);
2211
+ css$7(ghostEl, 'height', rect.height);
2212
+ css$7(ghostEl, 'opacity', '0.8');
2213
+ css$7(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');
2214
+ css$7(ghostEl, 'zIndex', '100000');
2215
+ css$7(ghostEl, 'pointerEvents', 'none');
2216
2216
  Sortable.ghost = ghostEl;
2217
2217
  container.appendChild(ghostEl); // Set transform-origin
2218
2218
 
2219
- css$5(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');
2219
+ css$7(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');
2220
2220
  }
2221
2221
  },
2222
2222
  _onDragStart: function _onDragStart(
@@ -2285,7 +2285,7 @@ Sortable.prototype =
2285
2285
 
2286
2286
  on(document, 'drop', _this); // #1276 fix:
2287
2287
 
2288
- css$5(dragEl, 'transform', 'translateZ(0)');
2288
+ css$7(dragEl, 'transform', 'translateZ(0)');
2289
2289
  }
2290
2290
 
2291
2291
  awaitingDragStarted = true;
@@ -2294,7 +2294,7 @@ Sortable.prototype =
2294
2294
  moved = true;
2295
2295
 
2296
2296
  if (Safari) {
2297
- css$5(document.body, 'user-select', 'none');
2297
+ css$7(document.body, 'user-select', 'none');
2298
2298
  }
2299
2299
  },
2300
2300
  // Returns true - if no further action is needed (either inserted or another condition)
@@ -2514,7 +2514,7 @@ Sortable.prototype =
2514
2514
  do {
2515
2515
  dragIndex -= direction;
2516
2516
  sibling = parentEl.children[dragIndex];
2517
- } while (sibling && (css$5(sibling, 'display') === 'none' || sibling === ghostEl));
2517
+ } while (sibling && (css$7(sibling, 'display') === 'none' || sibling === ghostEl));
2518
2518
  } // If dragEl is already beside target: Do not insert
2519
2519
 
2520
2520
 
@@ -2629,10 +2629,10 @@ Sortable.prototype =
2629
2629
  this._offUpEvents();
2630
2630
 
2631
2631
  if (Safari) {
2632
- css$5(document.body, 'user-select', '');
2632
+ css$7(document.body, 'user-select', '');
2633
2633
  }
2634
2634
 
2635
- css$5(dragEl, 'transform', '');
2635
+ css$7(dragEl, 'transform', '');
2636
2636
 
2637
2637
  if (evt) {
2638
2638
  if (moved) {
@@ -2907,7 +2907,7 @@ Sortable.prototype =
2907
2907
  if (!cloneHidden) {
2908
2908
  pluginEvent('hideClone', this);
2909
2909
  if (Sortable.eventCanceled) return;
2910
- css$5(cloneEl, 'display', 'none');
2910
+ css$7(cloneEl, 'display', 'none');
2911
2911
 
2912
2912
  if (this.options.removeCloneOnHide && cloneEl.parentNode) {
2913
2913
  cloneEl.parentNode.removeChild(cloneEl);
@@ -2939,7 +2939,7 @@ Sortable.prototype =
2939
2939
  this.animate(dragEl, cloneEl);
2940
2940
  }
2941
2941
 
2942
- css$5(cloneEl, 'display', '');
2942
+ css$7(cloneEl, 'display', '');
2943
2943
  cloneHidden = false;
2944
2944
  }
2945
2945
  }
@@ -3114,7 +3114,7 @@ if (documentExists) {
3114
3114
  Sortable.utils = {
3115
3115
  on: on,
3116
3116
  off: off,
3117
- css: css$5,
3117
+ css: css$7,
3118
3118
  find: find,
3119
3119
  is: function is(el, selector) {
3120
3120
  return !!closest(el, selector, el, false);
@@ -3341,7 +3341,7 @@ var autoScroll = throttle(function (evt, options, rootEl, isFallback) {
3341
3341
  canScrollY = void 0,
3342
3342
  scrollWidth = el.scrollWidth,
3343
3343
  scrollHeight = el.scrollHeight,
3344
- elCSS = css$5(el),
3344
+ elCSS = css$7(el),
3345
3345
  scrollPosX = el.scrollLeft,
3346
3346
  scrollPosY = el.scrollTop;
3347
3347
 
@@ -3677,7 +3677,7 @@ function MultiDragPlugin() {
3677
3677
  if (!this.isMultiDrag) return;
3678
3678
  insertMultiDragClones(false, rootEl);
3679
3679
  multiDragClones.forEach(function (clone) {
3680
- css$5(clone, 'display', '');
3680
+ css$7(clone, 'display', '');
3681
3681
  });
3682
3682
  cloneNowShown();
3683
3683
  clonesHidden = false;
@@ -3691,7 +3691,7 @@ function MultiDragPlugin() {
3691
3691
  cancel = _ref5.cancel;
3692
3692
  if (!this.isMultiDrag) return;
3693
3693
  multiDragClones.forEach(function (clone) {
3694
- css$5(clone, 'display', 'none');
3694
+ css$7(clone, 'display', 'none');
3695
3695
 
3696
3696
  if (_this.options.removeCloneOnHide && clone.parentNode) {
3697
3697
  clone.parentNode.removeChild(clone);
@@ -3735,7 +3735,7 @@ function MultiDragPlugin() {
3735
3735
  if (this.options.animation) {
3736
3736
  multiDragElements.forEach(function (multiDragElement) {
3737
3737
  if (multiDragElement === dragEl$1) return;
3738
- css$5(multiDragElement, 'position', 'absolute');
3738
+ css$7(multiDragElement, 'position', 'absolute');
3739
3739
  });
3740
3740
  var dragRect = getRect(dragEl$1, false, true, true);
3741
3741
  multiDragElements.forEach(function (multiDragElement) {
@@ -6630,9 +6630,12 @@ vuedraggable_umd.exports;
6630
6630
  var vuedraggable_umdExports = vuedraggable_umd.exports;
6631
6631
  var draggable = /*@__PURE__*/getDefaultExportFromCjs(vuedraggable_umdExports);
6632
6632
 
6633
+ var css$6 = "\r\n/* Fijar ancho de la columna de acciones en el header */\n.actions-header[data-v-37559362] {\r\n width: 1%;\r\n white-space: nowrap;\n}\r\n";
6634
+ n(css$6, {});
6635
+
6633
6636
  const _sfc_main$d = {
6634
6637
  name: 'TableHeader',
6635
- inject: ['columns', 'enableFilters', 'filtersVisible', 'isColumnHasFilter', 'internalFilterByProp', 'onChangeFilter', 'toggleAll', 'toggleSortFilter', 'sortable', 'optionsLoaded'],
6638
+ inject: ['columns', 'enableFilters', 'filtersVisible', 'isColumnHasFilter', 'internalFilterByProp', 'onChangeFilter', 'toggleAll', 'toggleSortFilter', 'sortable', 'optionsLoaded', 'isAllSelected'],
6636
6639
  data() {
6637
6640
  return {
6638
6641
  hoveredColumn: null
@@ -6669,8 +6672,11 @@ var _sfc_render$d = function render() {
6669
6672
  return _vm._l(_vm.columns, function (column, indexc) {
6670
6673
  return _c('th', {
6671
6674
  key: indexc,
6675
+ class: {
6676
+ 'actions-header': column.type == 'actions'
6677
+ },
6672
6678
  style: {
6673
- width: column.width ? column.width : 'inherit'
6679
+ width: column.width ? column.width : column.type == 'actions' ? '1%' : 'inherit'
6674
6680
  },
6675
6681
  attrs: {
6676
6682
  "scope": "col"
@@ -6827,21 +6833,19 @@ var _sfc_render$d = function render() {
6827
6833
  }, [_vm._v(" " + _vm._s(option.text ? option.text : option.label ? option.label : "") + " ")]);
6828
6834
  })], 2) : column.type == 'checkbox' ? _c('b-form-checkbox', {
6829
6835
  attrs: {
6830
- "name": "select-all"
6836
+ "name": "select-all",
6837
+ "checked": _vm.isAllSelected
6831
6838
  },
6832
6839
  on: {
6833
- "change": function ($event) {
6834
- return _vm.toggleAll($event);
6835
- }
6840
+ "change": _vm.toggleAll
6836
6841
  }
6837
6842
  }) : column.type == 'select' ? _c('b-form-checkbox', {
6838
6843
  attrs: {
6839
- "name": "select-all"
6844
+ "name": "select-all",
6845
+ "checked": _vm.isAllSelected
6840
6846
  },
6841
6847
  on: {
6842
- "change": function ($event) {
6843
- return _vm.toggleAll($event);
6844
- }
6848
+ "change": _vm.toggleAll
6845
6849
  }
6846
6850
  }) : _c('input', {
6847
6851
  directives: [{
@@ -6873,12 +6877,19 @@ var _sfc_render$d = function render() {
6873
6877
  "internalFilterByProp": _vm.internalFilterByProp
6874
6878
  }) : column.type == 'select' ? _c('span', [_c('b-form-checkbox', {
6875
6879
  attrs: {
6876
- "name": "select-all"
6880
+ "name": "select-all",
6881
+ "checked": _vm.isAllSelected
6877
6882
  },
6878
6883
  on: {
6879
- "change": function ($event) {
6880
- return _vm.toggleAll($event);
6881
- }
6884
+ "change": _vm.toggleAll
6885
+ }
6886
+ })], 1) : column.type == 'checkbox' ? _c('span', [_c('b-form-checkbox', {
6887
+ attrs: {
6888
+ "name": "select-all",
6889
+ "checked": _vm.isAllSelected
6890
+ },
6891
+ on: {
6892
+ "change": _vm.toggleAll
6882
6893
  }
6883
6894
  })], 1) : _c('span', [_vm._v(_vm._s(column.label))]), _vm.isSortableColumn(column) && _vm.shouldShowSortIcon(column) ? _c('span', {
6884
6895
  staticClass: "sort-filter",
@@ -6892,7 +6903,7 @@ var _sfc_render$d = function render() {
6892
6903
  })], 2)]);
6893
6904
  };
6894
6905
  var _sfc_staticRenderFns$d = [];
6895
- var __component__$d = /*#__PURE__*/normalizeComponent(_sfc_main$d, _sfc_render$d, _sfc_staticRenderFns$d, false, null, null, null, null);
6906
+ var __component__$d = /*#__PURE__*/normalizeComponent(_sfc_main$d, _sfc_render$d, _sfc_staticRenderFns$d, false, null, "37559362", null, null);
6896
6907
  var TableHeader = __component__$d.exports;
6897
6908
 
6898
6909
  function commonjsRequire(path) {
@@ -12588,6 +12599,9 @@ moment$1.exports;
12588
12599
  var momentExports = moment$1.exports;
12589
12600
  var moment = /*@__PURE__*/getDefaultExportFromCjs(momentExports);
12590
12601
 
12602
+ var css$5 = "\r\n/* Fijar ancho de la columna de acciones */\n.actions-cell[data-v-3309b7c7] {\r\n width: 1%;\r\n white-space: nowrap;\n}\n.actions-button-group[data-v-3309b7c7] {\r\n display: inline-flex;\r\n flex-wrap: nowrap;\n}\n.actions-dropdown[data-v-3309b7c7] {\r\n display: inline-block;\n}\r\n\r\n/* Asegurar que los botones no se expandan */\n.actions-button-group .btn[data-v-3309b7c7] {\r\n flex-shrink: 0;\n}\r\n";
12603
+ n(css$5, {});
12604
+
12591
12605
  const _sfc_main$c = {
12592
12606
  name: 'TableCell',
12593
12607
  props: {
@@ -12607,6 +12621,9 @@ var _sfc_render$c = function render() {
12607
12621
  var _vm = this,
12608
12622
  _c = _vm._self._c;
12609
12623
  return _c('td', {
12624
+ class: {
12625
+ 'actions-cell': _vm.column.type == 'actions'
12626
+ },
12610
12627
  attrs: {
12611
12628
  "scope": _vm.column.prop == 'id' ? 'row' : ''
12612
12629
  }
@@ -12632,13 +12649,68 @@ var _sfc_render$c = function render() {
12632
12649
  },
12633
12650
  expression: "item.selected"
12634
12651
  }
12652
+ })], 1) : _vm.column.type == 'checkbox' ? _c('span', [_c('b-form-checkbox', {
12653
+ on: {
12654
+ "change": function ($event) {
12655
+ return _vm.onCheckSelect($event, _vm.item);
12656
+ }
12657
+ },
12658
+ model: {
12659
+ value: _vm.item.selected,
12660
+ callback: function ($$v) {
12661
+ _vm.$set(_vm.item, "selected", $$v);
12662
+ },
12663
+ expression: "item.selected"
12664
+ }
12635
12665
  })], 1) : _vm.column.type == 'state' && _vm.optionsLoaded ? _c('span', [_vm._v(" " + _vm._s(_vm.getStateValue(_vm.itemValue(_vm.column, _vm.item), _vm.column.options)) + " ")]) : _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)) + " ")]) : _c('span', [_vm._v(" " + _vm._s(_vm.itemValue(_vm.column, _vm.item)) + " ")])];
12636
12666
  }, {
12637
12667
  "item": _vm.item,
12638
12668
  "index": _vm.index,
12639
12669
  "itemindex": _vm.index,
12640
12670
  "columnindex": _vm.columnIndex
12641
- }), _vm.column.type == 'actions' ? _c('b-button-group', [_vm._t("rowAction", function () {
12671
+ }), _vm.column.type == 'actions' && _vm.column.useDropdown ? _c('b-dropdown', {
12672
+ staticClass: "actions-dropdown",
12673
+ attrs: {
12674
+ "variant": "secondary",
12675
+ "size": "sm"
12676
+ },
12677
+ scopedSlots: _vm._u([{
12678
+ key: "button-content",
12679
+ fn: function () {
12680
+ return [_c('b-icon-list')];
12681
+ },
12682
+ proxy: true
12683
+ }], null, false, 4241371057)
12684
+ }, [_vm._t("rowAction", function () {
12685
+ return [_c('b-dropdown-item', {
12686
+ on: {
12687
+ "click": function ($event) {
12688
+ return _vm.showItem(_vm.item.id, _vm.index);
12689
+ }
12690
+ }
12691
+ }, [_c('b-icon-eye'), _vm._v(" Ver ")], 1), _c('b-dropdown-item', {
12692
+ on: {
12693
+ "click": function ($event) {
12694
+ return _vm.updateItem(_vm.item.id, _vm.index);
12695
+ }
12696
+ }
12697
+ }, [_c('b-icon-pencil'), _vm._v(" Editar ")], 1), _c('b-dropdown-item', {
12698
+ staticClass: "text-danger",
12699
+ on: {
12700
+ "click": function ($event) {
12701
+ return _vm.removeItem(_vm.item.id, _vm.index);
12702
+ }
12703
+ }
12704
+ }, [_c('b-icon-trash'), _vm._v(" Eliminar ")], 1)];
12705
+ }, {
12706
+ "item": _vm.item,
12707
+ "index": _vm.index,
12708
+ "showItem": _vm.showItem,
12709
+ "updateItem": _vm.updateItem,
12710
+ "removeItem": _vm.removeItem
12711
+ })], 2) : _vm.column.type == 'actions' ? _c('b-button-group', {
12712
+ staticClass: "actions-button-group"
12713
+ }, [_vm._t("rowAction", function () {
12642
12714
  return [_c('b-button', {
12643
12715
  attrs: {
12644
12716
  "variant": "primary"
@@ -12676,7 +12748,7 @@ var _sfc_render$c = function render() {
12676
12748
  })], 2) : _vm._e()], 2);
12677
12749
  };
12678
12750
  var _sfc_staticRenderFns$c = [];
12679
- var __component__$c = /*#__PURE__*/normalizeComponent(_sfc_main$c, _sfc_render$c, _sfc_staticRenderFns$c, false, null, null, null, null);
12751
+ var __component__$c = /*#__PURE__*/normalizeComponent(_sfc_main$c, _sfc_render$c, _sfc_staticRenderFns$c, false, null, "3309b7c7", null, null);
12680
12752
  var TableCell = __component__$c.exports;
12681
12753
 
12682
12754
  const _sfc_main$b = {
@@ -13762,7 +13834,7 @@ vueInfiniteLoading.exports;
13762
13834
  var vueInfiniteLoadingExports = vueInfiniteLoading.exports;
13763
13835
  var InfiniteLoading = /*@__PURE__*/getDefaultExportFromCjs(vueInfiniteLoadingExports);
13764
13836
 
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";
13837
+ var css$1 = "\n.paginator-container[data-v-11671e09] {\r\n display: grid;\r\n grid-template-columns: 1fr auto 1fr;\r\n align-items: center;\r\n width: 100%;\r\n margin-top: 1rem;\r\n gap: 1rem;\n}\n.paginator-data[data-v-11671e09] {\r\n display: flex;\r\n flex-wrap: nowrap;\r\n justify-content: flex-start;\r\n align-items: center;\r\n gap: 0.5rem;\r\n font-size: 0.875rem;\r\n grid-column: 1;\n}\n.paginator-badge[data-v-11671e09] {\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-11671e09]:hover {\r\n background-color: #e9ecef;\r\n border-color: #ced4da;\n}\n.paginator-label[data-v-11671e09] {\r\n font-weight: 500;\r\n color: #6c757d;\n}\n.paginator-value[data-v-11671e09] {\r\n font-weight: 600;\r\n color: #212529;\n}\n.paginator-dropdown[data-v-11671e09] {\r\n font-size: 0.875rem;\n}\n.paginator-dropdown[data-v-11671e09] .btn {\r\n padding: 0.375rem 0.625rem;\r\n font-size: 0.875rem;\r\n background-color: #f8f9fa;\r\n border: 1px solid #dee2e6;\r\n color: #495057;\n}\n.paginator-dropdown[data-v-11671e09] .btn:hover {\r\n background-color: #e9ecef;\r\n border-color: #ced4da;\n}\n.crud-paginator[data-v-11671e09] {\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n grid-column: 2;\n}\n.paginator-badge-dropdown[data-v-11671e09] {\r\n z-index: 1;\r\n position: relative;\n}\n.paginator-badge-dropdown[data-v-11671e09] .btn {\r\n padding: 0.375rem 0.625rem;\r\n font-size: 0.875rem;\r\n background-color: #f8f9fa;\r\n border: 1px solid #dee2e6;\r\n color: #495057;\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 0.25rem;\n}\n.paginator-badge-dropdown[data-v-11671e09] .btn:hover {\r\n background-color: #e9ecef;\r\n border-color: #ced4da;\n}\r\n";
13766
13838
  n(css$1, {});
13767
13839
 
13768
13840
  const _sfc_main$1 = {
@@ -13770,7 +13842,18 @@ const _sfc_main$1 = {
13770
13842
  components: {
13771
13843
  InfiniteLoading
13772
13844
  },
13773
- inject: ['infiniteScroll', 'infiniteScrollKey', 'messageLoading', 'messageNoMore', 'messageEmptyResults', 'loading', 'items', 'pagination', 'selectedItems', 'showPaginator', 'infiniteHandler', 'onPaginationChange']
13845
+ inject: ['infiniteScroll', 'infiniteScrollKey', 'messageLoading', 'messageNoMore', 'messageEmptyResults', 'loading', 'items', 'pagination', 'selectedItems', 'showPaginator', 'infiniteHandler', 'onPaginationChange', 'onPerPageChange', 'clearSelection'],
13846
+ data() {
13847
+ return {
13848
+ perPageOptions: [10, 20, 50, 100]
13849
+ };
13850
+ },
13851
+ computed: {
13852
+ selectedItemsCount() {
13853
+ // Computed para forzar reactividad del contador
13854
+ return this.selectedItems ? this.selectedItems.length : 0;
13855
+ }
13856
+ }
13774
13857
  };
13775
13858
  var _sfc_render$1 = function render() {
13776
13859
  var _vm = this,
@@ -13815,25 +13898,39 @@ var _sfc_render$1 = function render() {
13815
13898
  staticClass: "paginator-label"
13816
13899
  }, [_vm._v("Filas:")]), _c('span', {
13817
13900
  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', {
13901
+ }, [_vm._v(_vm._s(_vm.pagination.total))])]), _c('b-dropdown', {
13902
+ staticClass: "paginator-dropdown",
13903
+ attrs: {
13904
+ "variant": "outline-secondary",
13905
+ "size": "sm",
13906
+ "text": `xPág: ${_vm.pagination.per_page}`
13907
+ }
13908
+ }, _vm._l(_vm.perPageOptions, function (option) {
13909
+ return _c('b-dropdown-item', {
13910
+ key: option,
13911
+ attrs: {
13912
+ "active": _vm.pagination.per_page === option
13913
+ },
13914
+ on: {
13915
+ "click": function ($event) {
13916
+ return _vm.onPerPageChange(option);
13917
+ }
13918
+ }
13919
+ }, [_vm._v(" " + _vm._s(option) + " ")]);
13920
+ }), 1), _vm.selectedItemsCount > 0 ? _c('b-dropdown', {
13921
+ staticClass: "paginator-dropdown paginator-badge-dropdown",
13922
+ attrs: {
13923
+ "variant": "outline-secondary",
13924
+ "size": "sm",
13925
+ "text": `Seleccionados: ${_vm.selectedItemsCount}`
13926
+ }
13927
+ }, [_c('b-dropdown-item', {
13928
+ on: {
13929
+ "click": _vm.clearSelection
13930
+ }
13931
+ }, [_c('b-icon-x-circle', {
13932
+ staticClass: "mr-1"
13933
+ }), _vm._v(" Limpiar selección ")], 1)], 1) : _vm._e()], 1), _c('div', {
13837
13934
  staticClass: "crud-paginator"
13838
13935
  }, [_vm.showPaginator ? _c('b-pagination', {
13839
13936
  attrs: {
@@ -13855,7 +13952,7 @@ var _sfc_render$1 = function render() {
13855
13952
  }) : _vm._e()], 1)]) : _vm._e()], 1);
13856
13953
  };
13857
13954
  var _sfc_staticRenderFns$1 = [];
13858
- var __component__$1 = /*#__PURE__*/normalizeComponent(_sfc_main$1, _sfc_render$1, _sfc_staticRenderFns$1, false, null, "2c61ceb1", null, null);
13955
+ var __component__$1 = /*#__PURE__*/normalizeComponent(_sfc_main$1, _sfc_render$1, _sfc_staticRenderFns$1, false, null, "11671e09", null, null);
13859
13956
  var CrudPagination = __component__$1.exports;
13860
13957
 
13861
13958
  var crudData = {
@@ -13988,6 +14085,73 @@ var crudData = {
13988
14085
  if (!this.ajax) {
13989
14086
  this.items = val;
13990
14087
  }
14088
+ },
14089
+ limit(val) {
14090
+ if (val && val > 0) {
14091
+ this.pagination.per_page = val;
14092
+ // Resetear a la primera página y recargar datos
14093
+ this.pagination.current_page = 1;
14094
+ this.fetchItems();
14095
+ }
14096
+ },
14097
+ displayMode() {
14098
+ // Forzar re-renderizado cuando cambia el modo de visualización
14099
+ this.$nextTick(() => {
14100
+ this.forceRecomputeCounter++;
14101
+ });
14102
+ },
14103
+ showPaginator() {
14104
+ // Forzar re-renderizado cuando cambia la visibilidad del paginador
14105
+ this.$nextTick(() => {
14106
+ this.forceRecomputeCounter++;
14107
+ });
14108
+ },
14109
+ showSearch() {
14110
+ // Forzar re-renderizado cuando cambia la visibilidad de la búsqueda
14111
+ this.$nextTick(() => {
14112
+ this.forceRecomputeCounter++;
14113
+ });
14114
+ },
14115
+ showCreateBtn() {
14116
+ // Forzar re-renderizado cuando cambia la visibilidad del botón crear
14117
+ this.$nextTick(() => {
14118
+ this.forceRecomputeCounter++;
14119
+ });
14120
+ },
14121
+ showHeader() {
14122
+ // Forzar re-renderizado cuando cambia la visibilidad del header
14123
+ this.$nextTick(() => {
14124
+ this.forceRecomputeCounter++;
14125
+ });
14126
+ },
14127
+ tableClass() {
14128
+ // Forzar re-renderizado cuando cambian las clases de la tabla
14129
+ this.$nextTick(() => {
14130
+ this.forceRecomputeCounter++;
14131
+ });
14132
+ },
14133
+ cardClass() {
14134
+ // Forzar re-renderizado cuando cambian las clases de las tarjetas
14135
+ this.$nextTick(() => {
14136
+ this.forceRecomputeCounter++;
14137
+ });
14138
+ },
14139
+ tableContainerClass() {
14140
+ // Forzar re-renderizado cuando cambian las clases del contenedor
14141
+ this.$nextTick(() => {
14142
+ this.forceRecomputeCounter++;
14143
+ });
14144
+ },
14145
+ columns: {
14146
+ handler() {
14147
+ // Recargar opciones cuando cambian las columnas
14148
+ this.loadOptions();
14149
+ // Forzar re-renderizado
14150
+ this.$nextTick(() => {
14151
+ this.forceRecomputeCounter++;
14152
+ });
14153
+ },
14154
+ deep: true
13991
14155
  }
13992
14156
  },
13993
14157
  mounted() {
@@ -14092,15 +14256,13 @@ var crudData = {
14092
14256
  });
14093
14257
  },
14094
14258
  makePagination: function (data) {
14095
- let pagination = {
14096
- current_page: data.current_page,
14097
- last_page: data.last_page,
14098
- next_page_url: data.next_page_url,
14099
- prev_page_url: data.prev_page_url,
14100
- total: data.total,
14101
- per_page: data.per_page
14102
- };
14103
- this.pagination = pagination;
14259
+ // Mutar propiedades existentes para mantener reactividad con provide/inject
14260
+ this.pagination.current_page = data.current_page ?? 1;
14261
+ this.pagination.last_page = data.last_page ?? 1;
14262
+ this.pagination.next_page_url = data.next_page_url ?? "";
14263
+ this.pagination.prev_page_url = data.prev_page_url ?? "";
14264
+ this.pagination.total = data.total ?? 0;
14265
+ this.pagination.per_page = data.per_page ?? 20;
14104
14266
  }
14105
14267
  }
14106
14268
  };
@@ -19834,6 +19996,11 @@ var crudApi = {
19834
19996
  onPaginationChange(page) {
19835
19997
  this.fetchItems(page);
19836
19998
  },
19999
+ onPerPageChange(perPage) {
20000
+ this.pagination.per_page = perPage;
20001
+ this.pagination.current_page = 1;
20002
+ this.fetchItems(1);
20003
+ },
19837
20004
  infiniteHandler($state) {
19838
20005
  const hasNextPage = (this.pagination.total > 0 || !this.firstLoad) && (!this.firstLoad || this.pagination.current_page * this.pagination.per_page <= this.pagination.total);
19839
20006
  console.debug("Has next page", hasNextPage, this.pagination);
@@ -19997,6 +20164,25 @@ var crudValidation = {
19997
20164
  };
19998
20165
 
19999
20166
  var crudHelpers = {
20167
+ computed: {
20168
+ isAllSelected() {
20169
+ // Forzar dependencia en selectedItems.length para que se recalcule cuando cambie
20170
+ const selectedCount = this.selectedItems ? this.selectedItems.length : 0;
20171
+ if (!this.itemsList || this.itemsList.length === 0) {
20172
+ return false;
20173
+ }
20174
+
20175
+ // Si no hay items seleccionados, retornar false
20176
+ if (selectedCount === 0) {
20177
+ return false;
20178
+ }
20179
+
20180
+ // Verificar que todos los items de la lista actual estén seleccionados
20181
+ // Usar Boolean() para manejar valores undefined/null
20182
+ const allSelected = this.itemsList.every(item => Boolean(item.selected) === true);
20183
+ return allSelected;
20184
+ }
20185
+ },
20000
20186
  methods: {
20001
20187
  onRowHover(item, itemIndex) {
20002
20188
  if (this.selectHover) {
@@ -20033,35 +20219,76 @@ var crudHelpers = {
20033
20219
  console.debug("Selected Items", this.selectedItems);
20034
20220
  },
20035
20221
  toggleAll(value) {
20036
- if (value) {
20037
- this.selectedItems = this.items;
20038
- this.selectedItems.forEach(item => item.selected = true);
20222
+ // b-form-checkbox emite el valor booleano directamente en el evento change
20223
+ // El valor puede venir directamente como booleano o como evento del DOM
20224
+ const checked = typeof value === 'boolean' ? value : value && value.target ? value.target.checked : value;
20225
+ if (checked) {
20226
+ // Seleccionar todos los items de la lista actual (itemsList)
20227
+ this.itemsList.forEach(item => {
20228
+ this.$set(item, 'selected', true);
20229
+ // Agregar a selectedItems si no está ya
20230
+ if (!this.selectedItems.find(si => si.id === item.id)) {
20231
+ this.selectedItems.push(item);
20232
+ }
20233
+ });
20039
20234
  } else {
20040
- this.selectedItems.forEach(item => item.selected = false);
20041
- this.items.forEach(item => item.selected = false);
20042
- this.selectedItems = [];
20235
+ // Deseleccionar todos
20236
+ this.selectedItems.forEach(item => this.$set(item, 'selected', false));
20237
+ this.items.forEach(item => this.$set(item, 'selected', false));
20238
+ this.itemsList.forEach(item => this.$set(item, 'selected', false));
20239
+ // Usar splice para mantener la referencia del array y reactividad con provide/inject
20240
+ this.selectedItems.splice(0, this.selectedItems.length);
20043
20241
  }
20044
20242
  this.onSelect();
20045
20243
  console.debug("toggle all", this.selectedItems);
20244
+ // Forzar actualización inmediata y en el siguiente tick
20046
20245
  this.$forceUpdate();
20246
+ this.$nextTick(() => {
20247
+ this.$forceUpdate();
20248
+ });
20047
20249
  },
20048
20250
  unSelectItem(item) {
20049
- item.selected = false;
20050
- this.selectedItems = this.selectedItems.filter(e => e.id != item.id);
20251
+ this.$set(item, 'selected', false);
20252
+
20253
+ // Filtrar el array y reasignarlo para asegurar reactividad
20254
+ const filtered = this.selectedItems.filter(e => e.id != item.id);
20255
+ // Vaciar el array y luego agregar los elementos filtrados para mantener la referencia
20256
+ this.selectedItems.splice(0, this.selectedItems.length, ...filtered);
20257
+
20258
+ // Forzar actualización para que el computed isAllSelected se recalcule
20259
+ this.$forceUpdate();
20051
20260
  },
20052
20261
  selectItem() {
20053
20262
  let sitem = this.selectedItems.find(e => e.id == this.item.id);
20054
20263
  if (sitem) {
20055
- this.item.selected = false;
20056
- this.selectedItems = this.selectedItems.filter(e => e.id != this.item.id);
20264
+ this.$set(this.item, 'selected', false);
20265
+ const filtered = this.selectedItems.filter(e => e.id != this.item.id);
20266
+ // Usar splice para mantener la referencia del array
20267
+ this.selectedItems.splice(0, this.selectedItems.length, ...filtered);
20057
20268
  } else {
20058
- this.item.selected = true;
20269
+ this.$set(this.item, 'selected', true);
20059
20270
  this.selectedItems.push(this.item);
20060
20271
  }
20272
+ // Forzar actualización para que el computed isAllSelected se recalcule
20273
+ this.$forceUpdate();
20061
20274
  },
20062
20275
  getSelectedItems() {
20063
20276
  return this.selectedItems;
20064
20277
  },
20278
+ clearSelection() {
20279
+ // Limpiar todas las selecciones
20280
+ this.selectedItems.forEach(item => this.$set(item, 'selected', false));
20281
+ this.items.forEach(item => this.$set(item, 'selected', false));
20282
+ this.itemsList.forEach(item => this.$set(item, 'selected', false));
20283
+ // Vaciar el array manteniendo la referencia para reactividad con provide/inject
20284
+ this.selectedItems.splice(0, this.selectedItems.length);
20285
+ this.onSelect();
20286
+ // Forzar actualización inmediata y en el siguiente tick para asegurar que todo se actualice
20287
+ this.$forceUpdate();
20288
+ this.$nextTick(() => {
20289
+ this.$forceUpdate();
20290
+ });
20291
+ },
20065
20292
  onSelect() {
20066
20293
  this.$emit("select", this.item);
20067
20294
  this.$emit("selectItems", this.selectedItems);
@@ -20239,7 +20466,7 @@ var crudHelpers = {
20239
20466
  }
20240
20467
  };
20241
20468
 
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";
20469
+ var css = "tr td[data-v-482920a4]:last-child,\ntr td[data-v-482920a4]:first-child {\n width: 1%;\n white-space: nowrap; }\n\ntbody tr.selected[data-v-482920a4] {\n background-color: #e3f2fd !important; }\n tbody tr.selected[data-v-482920a4] td[data-v-482920a4] {\n background-color: transparent !important; }\n tbody tr.selected[data-v-482920a4][data-v-482920a4]:hover {\n background-color: #bbdefb !important; }\n tbody tr.selected[data-v-482920a4][data-v-482920a4]:hover td[data-v-482920a4] {\n background-color: transparent !important; }\n\n.table-striped tbody tr.selected[data-v-482920a4]:nth-of-type(odd) {\n background-color: #e3f2fd !important; }\n .table-striped tbody tr.selected[data-v-482920a4]:nth-of-type(odd) td[data-v-482920a4] {\n background-color: transparent !important; }\n\n.table-striped tbody tr.selected[data-v-482920a4]:nth-of-type(even) {\n background-color: #e3f2fd !important; }\n .table-striped tbody tr.selected[data-v-482920a4]:nth-of-type(even) td[data-v-482920a4] {\n background-color: transparent !important; }\n\n.crud-pagination[data-v-482920a4] {\n display: flex;\n align-items: center;\n width: 100%;\n justify-content: center;\n margin-top: 1rem; }\n\n.crud-header[data-v-482920a4] {\n display: flex;\n justify-content: space-between;\n max-height: 3rem; }\n .crud-header[data-v-482920a4] .crud-title[data-v-482920a4] {\n margin: 0; }\n .crud-header[data-v-482920a4] .crud-search[data-v-482920a4] {\n max-width: 15rem; }\n .crud-header[data-v-482920a4] .crud-search[data-v-482920a4] .btn[data-v-482920a4] {\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-482920a4] .crud-search[data-v-482920a4] .btn[data-v-482920a4].open[data-v-482920a4] {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0; }\n .crud-header[data-v-482920a4] .table-options[data-v-482920a4] {\n margin-bottom: 1rem;\n display: flex;\n align-items: center;\n justify-content: flex-end; }\n\n.custom-control[data-v-482920a4] {\n position: relative; }\n\n@media (min-width: 992px) {\n .table[data-v-482920a4] {\n table-layout: auto; }\n .table[data-v-482920a4] tbody[data-v-482920a4] td[data-v-482920a4] {\n overflow: scroll;\n -ms-overflow-style: none;\n /* IE and Edge */\n scrollbar-width: none;\n /* Firefox */ }\n .table[data-v-482920a4] tbody[data-v-482920a4] td[data-v-482920a4]::-webkit-scrollbar {\n display: none; } }\n\n.kanban-board[data-v-482920a4] {\n display: flex;\n gap: 1rem;\n overflow-x: auto;\n padding: 1rem; }\n\n.kanban-column[data-v-482920a4] {\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-482920a4] {\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-482920a4] {\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-482920a4] {\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";
20243
20470
  n(css, {});
20244
20471
 
20245
20472
  const _sfc_main = {
@@ -20366,6 +20593,7 @@ const _sfc_main = {
20366
20593
  internalFilter: this.internalFilter,
20367
20594
  internalFilterByProp: this.internalFilterByProp,
20368
20595
  columnOptions: this.columnOptions,
20596
+ isAllSelected: this.isAllSelected,
20369
20597
  // Methods from mixins
20370
20598
  handleResize: this.handleResize,
20371
20599
  rearrangeArray: this.rearrangeArray,
@@ -20391,6 +20619,7 @@ const _sfc_main = {
20391
20619
  importItems: this.importItems,
20392
20620
  refresh: this.refresh,
20393
20621
  onPaginationChange: this.onPaginationChange,
20622
+ onPerPageChange: this.onPerPageChange,
20394
20623
  infiniteHandler: this.infiniteHandler,
20395
20624
  setupFilters: this.setupFilters,
20396
20625
  toggleSortFilter: this.toggleSortFilter,
@@ -20411,6 +20640,7 @@ const _sfc_main = {
20411
20640
  unSelectItem: this.unSelectItem,
20412
20641
  selectItem: this.selectItem,
20413
20642
  getSelectedItems: this.getSelectedItems,
20643
+ clearSelection: this.clearSelection,
20414
20644
  onSelect: this.onSelect,
20415
20645
  showItem: this.showItem,
20416
20646
  createItem: this.createItem,
@@ -20737,10 +20967,19 @@ var _sfc_render = function render() {
20737
20967
  "show": _vm.loading,
20738
20968
  "rounded": "sm"
20739
20969
  }
20740
- }), _c('CrudPagination'), _c('CrudModals')], 1);
20970
+ }), _c('CrudPagination'), _c('CrudModals', {
20971
+ scopedSlots: _vm._u([_vm._l(_vm.$scopedSlots, function (slot, name) {
20972
+ return {
20973
+ key: name,
20974
+ fn: function (slotProps) {
20975
+ return [_vm._t(name, null, null, slotProps)];
20976
+ }
20977
+ };
20978
+ })], null, true)
20979
+ })], 1);
20741
20980
  };
20742
20981
  var _sfc_staticRenderFns = [];
20743
- var __component__ = /*#__PURE__*/normalizeComponent(_sfc_main, _sfc_render, _sfc_staticRenderFns, false, null, "51b1f76a", null, null);
20982
+ var __component__ = /*#__PURE__*/normalizeComponent(_sfc_main, _sfc_render, _sfc_staticRenderFns, false, null, "482920a4", null, null);
20744
20983
  var component = __component__.exports;
20745
20984
 
20746
20985
  // Import vue component