@regcheq/ui-vue-2 1.5.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.esm.js CHANGED
@@ -32733,6 +32733,16 @@ var script$g = {
32733
32733
  type: String,
32734
32734
  default: 'default',
32735
32735
  validator: v => ['default', 'round'].includes(v)
32736
+ },
32737
+ // Escape hatch para casos puntuales que no cubren las variantes semánticas
32738
+ // (ej: un color dinámico que viene de datos). Pisan el color de la variante.
32739
+ bgColor: {
32740
+ type: String,
32741
+ default: null
32742
+ },
32743
+ textColor: {
32744
+ type: String,
32745
+ default: null
32736
32746
  }
32737
32747
  },
32738
32748
  computed: {
@@ -32741,6 +32751,12 @@ var script$g = {
32741
32751
  variant: this.variant,
32742
32752
  roundness: this.roundness
32743
32753
  });
32754
+ },
32755
+ inlineStyle() {
32756
+ const style = {};
32757
+ if (this.bgColor) style.backgroundColor = this.bgColor;
32758
+ if (this.textColor) style.color = this.textColor;
32759
+ return style;
32744
32760
  }
32745
32761
  }
32746
32762
  };
@@ -32754,7 +32770,8 @@ var __vue_render__$g = function () {
32754
32770
  var _h = _vm.$createElement;
32755
32771
  var _c = _vm._self._c || _h;
32756
32772
  return _c("span", _vm._g(_vm._b({
32757
- class: _vm.classes
32773
+ class: _vm.classes,
32774
+ style: _vm.inlineStyle
32758
32775
  }, "span", _vm.$attrs, false), _vm.$listeners), [_vm._t("left"), _vm._v(" "), _vm._t("default"), _vm._v(" "), _vm._t("right")], 2);
32759
32776
  };
32760
32777
  var __vue_staticRenderFns__$g = [];
@@ -34249,7 +34266,7 @@ var __vue_render__$5 = function () {
34249
34266
  }
34250
34267
  }, [_vm._v("\n Limpiar selección\n ")])]), _vm._v(" "), _c("Button", {
34251
34268
  attrs: {
34252
- variant: "primary",
34269
+ variant: "secondary",
34253
34270
  size: "md",
34254
34271
  "icon-right": "Trash2"
34255
34272
  },
@@ -37246,6 +37263,15 @@ function useTable(props, emit) {
37246
37263
  }, {
37247
37264
  immediate: true
37248
37265
  });
37266
+
37267
+ // props.columns puede llegar vacío en el primer render (ej. mientras el
37268
+ // padre carga la vista activa de forma asíncrona) y poblarse después. Sin
37269
+ // este watcher, columnOrder queda pegado al [] inicial para siempre, ya que
37270
+ // el watcher de arriba solo reacciona a cambios de columnOrder, no de
37271
+ // columns. Solo pisa columnOrder si no hay un orden explícito del padre.
37272
+ watch(() => props.columns.map(c => c.key).join('|'), () => {
37273
+ if (!props.columnOrder) columnOrder.value = props.columns.map(c => c.key);
37274
+ });
37249
37275
  watch(() => props.pinnedColumns, val => {
37250
37276
  columnPinning.value = {
37251
37277
  left: val ? [...val] : [],
@@ -37317,7 +37343,7 @@ function useTable(props, emit) {
37317
37343
  const left = columnPinning.value.left || [];
37318
37344
  if (!left.length) return {};
37319
37345
  const offsets = {};
37320
- let accumulated = props.selectable ? 40 : 0;
37346
+ let accumulated = (props.expandable ? props.expandColWidth || 40 : 0) + (props.selectable ? 40 : 0);
37321
37347
  left.forEach(key => {
37322
37348
  offsets[key] = accumulated;
37323
37349
  const col = props.columns.find(c => c.key === key);
@@ -37576,11 +37602,64 @@ function useTable(props, emit) {
37576
37602
  //
37577
37603
  //
37578
37604
  //
37605
+ //
37606
+ //
37607
+ //
37608
+ //
37609
+ //
37610
+ //
37611
+ //
37612
+ //
37613
+ //
37614
+ //
37615
+ //
37616
+ //
37617
+ //
37618
+ //
37619
+ //
37620
+ //
37621
+ //
37622
+ //
37623
+ //
37624
+ //
37625
+ //
37626
+ //
37627
+ //
37628
+ //
37629
+ //
37630
+ //
37631
+ //
37632
+ //
37633
+ //
37634
+ //
37635
+ //
37636
+ //
37637
+ //
37638
+ //
37639
+ //
37640
+ //
37641
+ //
37642
+ //
37643
+ //
37644
+ //
37645
+ //
37646
+ //
37647
+ //
37648
+ //
37649
+ //
37650
+ //
37651
+ //
37652
+ //
37653
+ //
37654
+ //
37655
+ //
37656
+ //
37579
37657
 
37580
37658
  var script$4 = {
37581
37659
  name: 'Table',
37582
37660
  components: {
37583
- Checkbox: __vue_component__$j
37661
+ Checkbox: __vue_component__$j,
37662
+ Tooltip: __vue_component__$f
37584
37663
  },
37585
37664
  props: {
37586
37665
  rows: {
@@ -37610,6 +37689,28 @@ var script$4 = {
37610
37689
  maxHeight: {
37611
37690
  type: Number,
37612
37691
  default: null
37692
+ },
37693
+ expandable: {
37694
+ type: Boolean,
37695
+ default: false
37696
+ },
37697
+ // Alto fijo (no máximo) del contenido expandido; con scroll interno si el
37698
+ // contenido no entra.
37699
+ expandedRowHeight: {
37700
+ type: Number,
37701
+ default: 265
37702
+ },
37703
+ // Ancho de la columna de expandir en px. Default 40 (solo el chevron);
37704
+ // subilo si usás el slot `expand-cell` para agregar contenido extra.
37705
+ expandColWidth: {
37706
+ type: Number,
37707
+ default: 40
37708
+ },
37709
+ // { title, subtitle } para el estado "sin datos". Si no se pasa, se usa
37710
+ // un fallback genérico — el texto específico de dominio vive en el consumidor.
37711
+ emptyState: {
37712
+ type: Object,
37713
+ default: null
37613
37714
  }
37614
37715
  },
37615
37716
  setup(props, {
@@ -37630,7 +37731,9 @@ var script$4 = {
37630
37731
  colKey: null,
37631
37732
  x: 0,
37632
37733
  y: 0
37633
- }
37734
+ },
37735
+ truncatedCells: {},
37736
+ expandedRowId: null
37634
37737
  };
37635
37738
  },
37636
37739
  computed: {
@@ -37642,6 +37745,23 @@ var script$4 = {
37642
37745
  },
37643
37746
  PinIcon() {
37644
37747
  return Pin;
37748
+ },
37749
+ ExpandIcon() {
37750
+ return ChevronRight;
37751
+ },
37752
+ fullColspan() {
37753
+ return this.columns.length + (this.selectable ? 1 : 0) + (this.expandable ? 1 : 0);
37754
+ },
37755
+ resolvedEmptyState() {
37756
+ return {
37757
+ title: this.emptyState?.title || 'Sin datos',
37758
+ subtitle: this.emptyState?.subtitle || ''
37759
+ };
37760
+ },
37761
+ // Offset sticky de la columna de selección: se corre a la derecha
37762
+ // del ancho de la columna de expandir, cuando ambas están activas
37763
+ selectColOffset() {
37764
+ return this.expandable ? this.expandColWidth : 0;
37645
37765
  }
37646
37766
  },
37647
37767
  methods: {
@@ -37679,6 +37799,13 @@ var script$4 = {
37679
37799
  };
37680
37800
  }
37681
37801
  },
37802
+ // Cierra el popover del chevron antes de arrastrar: su posición se calcula
37803
+ // una sola vez al abrirlo, y reordenar columnas la invalida (bug de
37804
+ // posicionamiento si quedaba abierto apuntando a la columna vieja).
37805
+ handleDragStart(columnKey) {
37806
+ this.closeAll();
37807
+ this.onDragStart(columnKey);
37808
+ },
37682
37809
  onChevronClick(columnKey, event) {
37683
37810
  this.contextMenu = {
37684
37811
  visible: false,
@@ -37692,12 +37819,19 @@ var script$4 = {
37692
37819
  }
37693
37820
  this.toggleChevron(columnKey);
37694
37821
  const th = event.currentTarget.closest('th');
37695
- const tableRect = this.$el.getBoundingClientRect();
37696
37822
  const thRect = th.getBoundingClientRect();
37823
+ // Coordenadas de viewport (no relativas a la tabla): el popover es
37824
+ // position:fixed para no quedar clippado por el overflow:clip de .rq-table
37697
37825
  this.chevronPopoverPos = {
37698
- top: thRect.bottom - tableRect.top + 4,
37699
- left: Math.max(100, thRect.left - tableRect.left + thRect.width / 2)
37826
+ top: thRect.bottom + 4,
37827
+ left: Math.max(100, thRect.left + thRect.width / 2)
37700
37828
  };
37829
+ this.$nextTick(() => {
37830
+ if (this.$refs.chevronPopover) {
37831
+ this._chevronPopoverEl = this.$refs.chevronPopover;
37832
+ document.body.appendChild(this._chevronPopoverEl);
37833
+ }
37834
+ });
37701
37835
  },
37702
37836
  openContextMenu(colKey, event) {
37703
37837
  this.closeChevron();
@@ -37719,16 +37853,69 @@ var script$4 = {
37719
37853
  x: 0,
37720
37854
  y: 0
37721
37855
  };
37856
+ },
37857
+ toggleExpand(rowId) {
37858
+ this.expandedRowId = this.expandedRowId === rowId ? null : rowId;
37859
+ this.$emit('update:expanded-row-id', this.expandedRowId);
37860
+ },
37861
+ cellKey(rowId, headerId) {
37862
+ return `${rowId}::${headerId}`;
37863
+ },
37864
+ isTruncated(rowId, headerId) {
37865
+ return !!this.truncatedCells[this.cellKey(rowId, headerId)];
37866
+ },
37867
+ // Compara scrollWidth vs clientWidth de cada celda de texto plano para
37868
+ // saber cuáles están recortadas por el ellipsis y solo a esas envolverlas
37869
+ // en Tooltip. Se dispara por watchers, nunca desde el hook `updated`,
37870
+ // para no re-medir en loop cuando truncatedCells cambia.
37871
+ measureTruncatedCells() {
37872
+ if (!this.$el) return;
37873
+ const els = this.$el.querySelectorAll('.rq-table__cell-text[data-cell-key]');
37874
+ const result = {};
37875
+ els.forEach(el => {
37876
+ result[el.dataset.cellKey] = el.scrollWidth > el.clientWidth;
37877
+ });
37878
+ this.truncatedCells = result;
37879
+ }
37880
+ },
37881
+ watch: {
37882
+ tableRows() {
37883
+ this.$nextTick(this.measureTruncatedCells);
37884
+ },
37885
+ columns: {
37886
+ handler() {
37887
+ this.$nextTick(this.measureTruncatedCells);
37888
+ },
37889
+ deep: true
37722
37890
  }
37723
37891
  },
37724
37892
  mounted() {
37725
37893
  this._onKeydown = e => {
37726
37894
  if (e.key === 'Escape') this.closeAll();
37727
37895
  };
37896
+ this._onDocumentClick = () => this.closeAll();
37897
+ this._onResize = () => this.measureTruncatedCells();
37898
+ // El popover del chevron es position:fixed (coordenadas de viewport);
37899
+ // si cualquier ancestro scrollea (capture:true, scroll no burbujea),
37900
+ // se cierra en vez de quedar desalineado de su columna.
37901
+ this._onScroll = () => this.closeChevron();
37728
37902
  document.addEventListener('keydown', this._onKeydown);
37903
+ document.addEventListener('click', this._onDocumentClick);
37904
+ window.addEventListener('resize', this._onResize);
37905
+ window.addEventListener('scroll', this._onScroll, true);
37906
+ this.$nextTick(this.measureTruncatedCells);
37729
37907
  },
37730
37908
  beforeDestroy() {
37731
37909
  document.removeEventListener('keydown', this._onKeydown);
37910
+ document.removeEventListener('click', this._onDocumentClick);
37911
+ window.removeEventListener('resize', this._onResize);
37912
+ window.removeEventListener('scroll', this._onScroll, true);
37913
+ // El popover del chevron se mueve a document.body al abrirse (fuera del
37914
+ // árbol de la tabla); si el componente se destruye con el popover abierto,
37915
+ // destruir el root de la tabla no lo alcanza — hay que sacarlo a mano.
37916
+ if (this._chevronPopoverEl && this._chevronPopoverEl.parentNode) {
37917
+ this._chevronPopoverEl.parentNode.removeChild(this._chevronPopoverEl);
37918
+ }
37732
37919
  }
37733
37920
  };
37734
37921
 
@@ -37741,10 +37928,7 @@ var __vue_render__$4 = function () {
37741
37928
  var _h = _vm.$createElement;
37742
37929
  var _c = _vm._self._c || _h;
37743
37930
  return _c("div", _vm._g({
37744
- class: _vm.classes,
37745
- on: {
37746
- click: _vm.closeAll
37747
- }
37931
+ class: _vm.classes
37748
37932
  }, _vm.$listeners), [_c("div", {
37749
37933
  staticClass: "rq-table__scroll",
37750
37934
  style: _vm.maxHeight ? {
@@ -37758,11 +37942,20 @@ var __vue_render__$4 = function () {
37758
37942
  return _c("tr", {
37759
37943
  key: headerGroup.id,
37760
37944
  staticClass: "rq-table__tr rq-table__tr--head"
37761
- }, [_vm.selectable ? _c("th", {
37762
- staticClass: "rq-table__th rq-table__th--select",
37945
+ }, [_vm.expandable ? _c("th", {
37946
+ staticClass: "rq-table__th rq-table__th--expand",
37763
37947
  style: {
37764
37948
  position: "sticky",
37765
37949
  left: 0,
37950
+ zIndex: 5,
37951
+ width: _vm.expandColWidth + "px",
37952
+ minWidth: _vm.expandColWidth + "px"
37953
+ }
37954
+ }) : _vm._e(), _vm._v(" "), _vm.selectable ? _c("th", {
37955
+ staticClass: "rq-table__th rq-table__th--select",
37956
+ style: {
37957
+ position: "sticky",
37958
+ left: _vm.selectColOffset + "px",
37766
37959
  zIndex: 5
37767
37960
  }
37768
37961
  }, [_c("Checkbox", {
@@ -37788,7 +37981,7 @@ var __vue_render__$4 = function () {
37788
37981
  },
37789
37982
  on: {
37790
37983
  dragstart: function ($event) {
37791
- return _vm.onDragStart(header.id);
37984
+ return _vm.handleDragStart(header.id);
37792
37985
  },
37793
37986
  dragover: function ($event) {
37794
37987
  $event.preventDefault();
@@ -37831,12 +38024,18 @@ var __vue_render__$4 = function () {
37831
38024
  }, [_c("td", {
37832
38025
  staticClass: "rq-table__td rq-table__td--empty",
37833
38026
  attrs: {
37834
- colspan: _vm.columns.length + (_vm.selectable ? 1 : 0)
38027
+ colspan: _vm.fullColspan
37835
38028
  }
37836
38029
  }, [_vm._t("empty", function () {
37837
- return [_c("span", [_vm._v("Sin datos")])];
38030
+ return [_c("div", {
38031
+ staticClass: "rq-table__empty-state"
38032
+ }, [_c("p", {
38033
+ staticClass: "rq-table__empty-title"
38034
+ }, [_vm._v(_vm._s(_vm.resolvedEmptyState.title))]), _vm._v(" "), _vm.resolvedEmptyState.subtitle ? _c("p", {
38035
+ staticClass: "rq-table__empty-subtitle"
38036
+ }, [_vm._v(_vm._s(_vm.resolvedEmptyState.subtitle))]) : _vm._e()])];
37838
38037
  })], 2)]) : _vm._e(), _vm._v(" "), _vm._l(_vm.tableRows, function (row) {
37839
- return _c("tr", {
38038
+ return [_c("tr", {
37840
38039
  key: row.id,
37841
38040
  staticClass: "rq-table__tr rq-table__tr--body",
37842
38041
  on: {
@@ -37844,11 +38043,43 @@ var __vue_render__$4 = function () {
37844
38043
  return _vm.$emit("row-click", row.original);
37845
38044
  }
37846
38045
  }
37847
- }, [_vm.selectable ? _c("td", {
37848
- staticClass: "rq-table__td rq-table__td--select",
38046
+ }, [_vm.expandable ? _c("td", {
38047
+ staticClass: "rq-table__td rq-table__td--expand",
37849
38048
  style: {
37850
38049
  position: "sticky",
37851
38050
  left: 0,
38051
+ zIndex: 2,
38052
+ width: _vm.expandColWidth + "px",
38053
+ minWidth: _vm.expandColWidth + "px"
38054
+ }
38055
+ }, [_c("div", {
38056
+ staticClass: "rq-table__expand-cell"
38057
+ }, [_c("button", {
38058
+ staticClass: "rq-table__expand-btn",
38059
+ class: {
38060
+ "rq-table__expand-btn--active": _vm.expandedRowId === row.id
38061
+ },
38062
+ attrs: {
38063
+ type: "button"
38064
+ },
38065
+ on: {
38066
+ click: function ($event) {
38067
+ $event.stopPropagation();
38068
+ return _vm.toggleExpand(row.id);
38069
+ }
38070
+ }
38071
+ }, [_c(_vm.ExpandIcon, {
38072
+ tag: "component",
38073
+ attrs: {
38074
+ size: 14
38075
+ }
38076
+ })], 1), _vm._v(" "), _vm._t("expand-cell", null, {
38077
+ row: row.original
38078
+ })], 2)]) : _vm._e(), _vm._v(" "), _vm.selectable ? _c("td", {
38079
+ staticClass: "rq-table__td rq-table__td--select",
38080
+ style: {
38081
+ position: "sticky",
38082
+ left: _vm.selectColOffset + "px",
37852
38083
  zIndex: 2
37853
38084
  },
37854
38085
  on: {
@@ -37874,12 +38105,42 @@ var __vue_render__$4 = function () {
37874
38105
  },
37875
38106
  style: _vm.getColStyle(header)
37876
38107
  }, [_vm._t("cell-" + header.id, function () {
37877
- return [_vm._v("\n " + _vm._s(row.getValue(header.id)) + "\n ")];
38108
+ return [_vm.isTruncated(row.id, header.id) ? _c("Tooltip", {
38109
+ staticClass: "rq-table__cell-tooltip",
38110
+ attrs: {
38111
+ text: String(row.getValue(header.id))
38112
+ }
38113
+ }, [_c("span", {
38114
+ staticClass: "rq-table__cell-text",
38115
+ attrs: {
38116
+ "data-cell-key": _vm.cellKey(row.id, header.id)
38117
+ }
38118
+ }, [_vm._v(_vm._s(row.getValue(header.id)))])]) : _c("span", {
38119
+ staticClass: "rq-table__cell-text",
38120
+ attrs: {
38121
+ "data-cell-key": _vm.cellKey(row.id, header.id)
38122
+ }
38123
+ }, [_vm._v(_vm._s(row.getValue(header.id)))])];
37878
38124
  }, {
37879
38125
  row: row.original,
37880
38126
  value: row.getValue(header.id)
37881
38127
  })], 2);
37882
- })], 2);
38128
+ })], 2), _vm._v(" "), _vm.expandable && _vm.expandedRowId === row.id ? _c("tr", {
38129
+ key: row.id + "-expanded",
38130
+ staticClass: "rq-table__tr rq-table__tr--expanded"
38131
+ }, [_c("td", {
38132
+ staticClass: "rq-table__td rq-table__td--expanded",
38133
+ attrs: {
38134
+ colspan: _vm.fullColspan
38135
+ }
38136
+ }, [_c("div", {
38137
+ staticClass: "rq-table__expanded-content",
38138
+ style: {
38139
+ height: _vm.expandedRowHeight + "px"
38140
+ }
38141
+ }, [_vm._t("expanded-row", null, {
38142
+ row: row.original
38143
+ })], 2)])]) : _vm._e()];
37883
38144
  })], 2)])]), _vm._v(" "), _vm.contextMenu.visible ? _c("div", {
37884
38145
  staticClass: "rq-table__context-menu",
37885
38146
  style: {
@@ -37905,6 +38166,7 @@ var __vue_render__$4 = function () {
37905
38166
  size: 14
37906
38167
  }
37907
38168
  }), _vm._v("\n " + _vm._s(_vm.contextMenu.colKey in _vm.pinnedLeftWidths ? "Desfijar columna" : "Fijar columna") + "\n ")], 1)]) : _vm._e(), _vm._v(" "), _vm.activeChevronKey ? _c("div", {
38169
+ ref: "chevronPopover",
37908
38170
  staticClass: "rq-table__chevron-popover",
37909
38171
  style: {
37910
38172
  top: _vm.chevronPopoverPos.top + "px",
@@ -38014,6 +38276,24 @@ const dataTableVariants = cva('rq-data-table', {
38014
38276
  //
38015
38277
  //
38016
38278
  //
38279
+ //
38280
+ //
38281
+ //
38282
+ //
38283
+ //
38284
+ //
38285
+ //
38286
+ //
38287
+ //
38288
+ //
38289
+ //
38290
+ //
38291
+ //
38292
+ //
38293
+ //
38294
+ //
38295
+ //
38296
+ //
38017
38297
 
38018
38298
  var script$3 = {
38019
38299
  name: 'DataTable',
@@ -38080,6 +38360,22 @@ var script$3 = {
38080
38360
  deleteLabel: {
38081
38361
  type: String,
38082
38362
  default: 'Eliminar'
38363
+ },
38364
+ expandable: {
38365
+ type: Boolean,
38366
+ default: false
38367
+ },
38368
+ expandedRowHeight: {
38369
+ type: Number,
38370
+ default: 265
38371
+ },
38372
+ expandColWidth: {
38373
+ type: Number,
38374
+ default: 40
38375
+ },
38376
+ emptyState: {
38377
+ type: Object,
38378
+ default: null
38083
38379
  }
38084
38380
  },
38085
38381
  data() {
@@ -38125,6 +38421,8 @@ var __vue_render__$3 = function () {
38125
38421
  var _c = _vm._self._c || _h;
38126
38422
  return _c("div", {
38127
38423
  class: _vm.classes
38424
+ }, [_vm.showSearch || _vm.$slots.actions ? _c("div", {
38425
+ staticClass: "rq-data-table__search-row"
38128
38426
  }, [_vm.showSearch ? _c("SearchInput", {
38129
38427
  staticClass: "rq-data-table__search-bar",
38130
38428
  attrs: {
@@ -38138,7 +38436,11 @@ var __vue_render__$3 = function () {
38138
38436
  return _vm.$emit("update:search", $event);
38139
38437
  }
38140
38438
  }
38141
- }) : _vm._e(), _vm._v(" "), _vm.selectable && _vm.selectedCount > 0 ? _c("SelectionBar", {
38439
+ }) : _vm._e(), _vm._v(" "), _vm.$slots.actions ? _c("div", {
38440
+ staticClass: "rq-data-table__actions"
38441
+ }, [_vm._t("actions")], 2) : _vm._e()], 1) : _vm._e(), _vm._v(" "), _vm.selectable ? _c("div", {
38442
+ staticClass: "rq-data-table__selection-slot"
38443
+ }, [_vm.selectedCount > 0 ? _c("SelectionBar", {
38142
38444
  attrs: {
38143
38445
  count: _vm.selectedCount,
38144
38446
  "delete-label": _vm.deleteLabel
@@ -38149,7 +38451,7 @@ var __vue_render__$3 = function () {
38149
38451
  return _vm.$emit("delete-selected", _vm.selectedRows);
38150
38452
  }
38151
38453
  }
38152
- }) : _vm._e(), _vm._v(" "), _c("Table", {
38454
+ }) : _vm._e()], 1) : _vm._e(), _vm._v(" "), _c("Table", {
38153
38455
  ref: "table",
38154
38456
  attrs: {
38155
38457
  columns: _vm.columns,
@@ -38158,7 +38460,11 @@ var __vue_render__$3 = function () {
38158
38460
  "pinned-columns": _vm.pinnedColumns,
38159
38461
  selectable: _vm.selectable,
38160
38462
  "row-id": _vm.rowId,
38161
- "max-height": _vm.maxHeight
38463
+ "max-height": _vm.maxHeight,
38464
+ expandable: _vm.expandable,
38465
+ "expanded-row-height": _vm.expandedRowHeight,
38466
+ "expand-col-width": _vm.expandColWidth,
38467
+ "empty-state": _vm.emptyState
38162
38468
  },
38163
38469
  on: {
38164
38470
  "row-click": function ($event) {
@@ -38170,6 +38476,9 @@ var __vue_render__$3 = function () {
38170
38476
  },
38171
38477
  "update:pinned-columns": function ($event) {
38172
38478
  return _vm.$emit("update:pinned-columns", $event);
38479
+ },
38480
+ "update:expanded-row-id": function ($event) {
38481
+ return _vm.$emit("update:expanded-row-id", $event);
38173
38482
  }
38174
38483
  },
38175
38484
  scopedSlots: _vm._u([_vm._l(_vm.columns, function (col) {
@@ -38193,6 +38502,16 @@ var __vue_render__$3 = function () {
38193
38502
  return [_vm._t("empty")];
38194
38503
  },
38195
38504
  proxy: true
38505
+ }, {
38506
+ key: "expanded-row",
38507
+ fn: function (slotProps) {
38508
+ return [_vm._t("expanded-row", null, null, slotProps)];
38509
+ }
38510
+ }, {
38511
+ key: "expand-cell",
38512
+ fn: function (slotProps) {
38513
+ return [_vm._t("expand-cell", null, null, slotProps)];
38514
+ }
38196
38515
  }], null, true)
38197
38516
  }), _vm._v(" "), _c("div", {
38198
38517
  staticClass: "rq-data-table__pagination"
@@ -38725,11 +39044,20 @@ var script = {
38725
39044
  } : {};
38726
39045
  }
38727
39046
  },
39047
+ watch: {
39048
+ open: {
39049
+ immediate: true,
39050
+ handler(isOpen) {
39051
+ document.body.style.overflow = isOpen ? 'hidden' : '';
39052
+ }
39053
+ }
39054
+ },
38728
39055
  mounted() {
38729
39056
  document.addEventListener('keydown', this.handleKeydown);
38730
39057
  },
38731
39058
  beforeDestroy() {
38732
39059
  document.removeEventListener('keydown', this.handleKeydown);
39060
+ document.body.style.overflow = '';
38733
39061
  },
38734
39062
  methods: {
38735
39063
  handleKeydown(e) {