@regcheq/ui-vue-2 1.15.1 → 1.16.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.css CHANGED
@@ -2212,6 +2212,12 @@ td[data-v-6ca52014],th[data-v-6ca52014]{padding:2px;background-color:#fff}td.tod
2212
2212
  outline: 2px solid #5497ea;
2213
2213
  outline-offset: -2px;
2214
2214
  }
2215
+ .rq-table__td--expand-disabled {
2216
+ cursor: default;
2217
+ }
2218
+ .rq-table__td--expand-disabled .rq-table__expand-btn {
2219
+ color: #d4d4d8;
2220
+ }
2215
2221
  .rq-table__td--expanded {
2216
2222
  padding: 0;
2217
2223
  cursor: default;
@@ -2259,6 +2265,7 @@ td[data-v-6ca52014],th[data-v-6ca52014]{padding:2px;background-color:#fff}td.tod
2259
2265
  color: #71717a;
2260
2266
  max-width: 480px;
2261
2267
  margin: 0;
2268
+ text-align: center;
2262
2269
  }
2263
2270
  .rq-table__cell-tooltip {
2264
2271
  display: block;
package/dist/index.esm.js CHANGED
@@ -33245,6 +33245,22 @@ const groupMixin = {
33245
33245
  default: false
33246
33246
  }
33247
33247
  },
33248
+ computed: {
33249
+ // `change` se saca de los listeners que se reenvían a la raíz, igual que
33250
+ // en el atom Checkbox. Estos grupos emiten 'change' Y montan un control
33251
+ // que dispara un 'change' nativo del DOM: ese evento burbujea hasta la
33252
+ // raíz y, si el listener del consumidor sigue enganchado ahí, se ejecuta
33253
+ // dos veces por un solo click (una con el booleano del componente, otra
33254
+ // con el Event nativo). En un consumidor que togglea, los dos disparos se
33255
+ // anulan: el control no cambia de estado pero la acción corre igual.
33256
+ listenersWithoutChange() {
33257
+ const {
33258
+ change,
33259
+ ...rest
33260
+ } = this.$listeners;
33261
+ return rest;
33262
+ }
33263
+ },
33248
33264
  methods: {
33249
33265
  handleClick() {
33250
33266
  if (!this.disabled) this.$emit('change', !this.checked);
@@ -33313,7 +33329,7 @@ var __vue_render__$k = function () {
33313
33329
  on: {
33314
33330
  click: _vm.handleClick
33315
33331
  }
33316
- }, _vm.$listeners), [_c("Checkbox", {
33332
+ }, _vm.listenersWithoutChange), [_c("Checkbox", {
33317
33333
  attrs: {
33318
33334
  checked: _vm.checked,
33319
33335
  disabled: _vm.disabled
@@ -33426,7 +33442,7 @@ var __vue_render__$j = function () {
33426
33442
  on: {
33427
33443
  click: _vm.handleClick
33428
33444
  }
33429
- }, _vm.$listeners), [_c("Checkbox", {
33445
+ }, _vm.listenersWithoutChange), [_c("Checkbox", {
33430
33446
  attrs: {
33431
33447
  checked: _vm.checked,
33432
33448
  disabled: _vm.disabled
@@ -33541,7 +33557,7 @@ var __vue_render__$i = function () {
33541
33557
  on: {
33542
33558
  click: _vm.handleClick
33543
33559
  }
33544
- }, _vm.$listeners), [_c("RqSwitch", {
33560
+ }, _vm.listenersWithoutChange), [_c("RqSwitch", {
33545
33561
  attrs: {
33546
33562
  checked: _vm.checked,
33547
33563
  disabled: _vm.disabled
@@ -33646,7 +33662,7 @@ var __vue_render__$h = function () {
33646
33662
  on: {
33647
33663
  click: _vm.handleClick
33648
33664
  }
33649
- }, _vm.$listeners), [_c("div", {
33665
+ }, _vm.listenersWithoutChange), [_c("div", {
33650
33666
  staticClass: "rq-rich-switch-group__aligner"
33651
33667
  }, [_c("RqSwitch", {
33652
33668
  attrs: {
@@ -34614,6 +34630,13 @@ const selectionBarVariants = cva('rq-selection-bar', {
34614
34630
  //
34615
34631
  //
34616
34632
  //
34633
+ //
34634
+ //
34635
+ //
34636
+ //
34637
+ //
34638
+ //
34639
+ //
34617
34640
 
34618
34641
  var script$b = {
34619
34642
  name: 'SelectionBar',
@@ -34636,6 +34659,10 @@ var script$b = {
34636
34659
  clearLabel: {
34637
34660
  type: String,
34638
34661
  default: 'Limpiar selección'
34662
+ },
34663
+ loading: {
34664
+ type: Boolean,
34665
+ default: false
34639
34666
  }
34640
34667
  },
34641
34668
  computed: {
@@ -34676,7 +34703,9 @@ var __vue_render__$b = function () {
34676
34703
  attrs: {
34677
34704
  variant: "secondary",
34678
34705
  size: "md",
34679
- "icon-right": "Trash2"
34706
+ "icon-right": "Trash2",
34707
+ loading: _vm.loading,
34708
+ disabled: _vm.loading
34680
34709
  },
34681
34710
  on: {
34682
34711
  click: function ($event) {
@@ -39025,6 +39054,8 @@ function useTable(props, emit) {
39025
39054
  //
39026
39055
  //
39027
39056
  //
39057
+ //
39058
+ //
39028
39059
 
39029
39060
  var script$4 = {
39030
39061
  name: 'Table',
@@ -39076,6 +39107,15 @@ var script$4 = {
39076
39107
  type: Boolean,
39077
39108
  default: false
39078
39109
  },
39110
+ // Predicado opcional por fila: recibe la fila original y decide si se
39111
+ // puede expandir. Sirve para las filas que no tienen contenido que
39112
+ // desplegar (p. ej. una ficha sin personas relacionadas). El guard vive
39113
+ // acá y no en el consumidor porque expandedRowId es estado interno de la
39114
+ // tabla: bloquear el evento afuera no evita que la fila se abra.
39115
+ rowExpandable: {
39116
+ type: Function,
39117
+ default: null
39118
+ },
39079
39119
  // Alto fijo (no máximo) del contenido expandido; con scroll interno si el
39080
39120
  // contenido no entra.
39081
39121
  expandedRowHeight: {
@@ -39311,7 +39351,19 @@ var script$4 = {
39311
39351
  y: 0
39312
39352
  };
39313
39353
  },
39354
+ canExpand(row) {
39355
+ if (!this.rowExpandable) return true;
39356
+ return !!this.rowExpandable(row.original);
39357
+ },
39358
+ canExpandById(rowId) {
39359
+ if (!this.rowExpandable) return true;
39360
+ const row = this.tableRows.find(r => r.id === rowId);
39361
+ return row ? this.canExpand(row) : true;
39362
+ },
39314
39363
  toggleExpand(rowId) {
39364
+ // Colapsar siempre se permite: si la fila abierta dejara de ser
39365
+ // expandible (cambió la data), igual tiene que poder cerrarse.
39366
+ if (this.expandedRowId !== rowId && !this.canExpandById(rowId)) return;
39315
39367
  this.expandedRowId = this.expandedRowId === rowId ? null : rowId;
39316
39368
  this.$emit('update:expanded-row-id', this.expandedRowId);
39317
39369
  if (this.expandedRowId) {
@@ -39551,6 +39603,9 @@ var __vue_render__$4 = function () {
39551
39603
  }
39552
39604
  }, [_vm.expandable ? _c("td", {
39553
39605
  staticClass: "rq-table__td rq-table__td--expand",
39606
+ class: {
39607
+ "rq-table__td--expand-disabled": !_vm.canExpand(row)
39608
+ },
39554
39609
  style: {
39555
39610
  position: "sticky",
39556
39611
  left: 0,
@@ -39560,8 +39615,9 @@ var __vue_render__$4 = function () {
39560
39615
  },
39561
39616
  attrs: {
39562
39617
  role: "button",
39563
- tabindex: "0",
39564
- "aria-expanded": _vm.expandedRowId === row.id
39618
+ tabindex: _vm.canExpand(row) ? 0 : -1,
39619
+ "aria-expanded": _vm.expandedRowId === row.id,
39620
+ "aria-disabled": !_vm.canExpand(row)
39565
39621
  },
39566
39622
  on: {
39567
39623
  click: function ($event) {
@@ -39843,6 +39899,9 @@ const dataTableVariants = cva('rq-data-table', {
39843
39899
  //
39844
39900
  //
39845
39901
  //
39902
+ //
39903
+ //
39904
+ //
39846
39905
 
39847
39906
  var script$3 = {
39848
39907
  name: 'DataTable',
@@ -39910,6 +39969,10 @@ var script$3 = {
39910
39969
  type: String,
39911
39970
  default: null
39912
39971
  },
39972
+ deleteLoading: {
39973
+ type: Boolean,
39974
+ default: false
39975
+ },
39913
39976
  texts: {
39914
39977
  type: Object,
39915
39978
  default: () => ({})
@@ -39918,6 +39981,12 @@ var script$3 = {
39918
39981
  type: Boolean,
39919
39982
  default: false
39920
39983
  },
39984
+ // Se reenvía a Table: predicado por fila para las que no tienen nada que
39985
+ // desplegar (ver Table.rowExpandable).
39986
+ rowExpandable: {
39987
+ type: Function,
39988
+ default: null
39989
+ },
39921
39990
  expandedRowHeight: {
39922
39991
  type: Number,
39923
39992
  default: 265
@@ -39970,6 +40039,7 @@ var script$3 = {
39970
40039
  },
39971
40040
  mergedTexts() {
39972
40041
  return {
40042
+ searchPlaceholder: 'Buscar...',
39973
40043
  selectedCount: '{count} registros seleccionados',
39974
40044
  clearSelection: 'Limpiar selección',
39975
40045
  delete: 'Eliminar',
@@ -40014,7 +40084,8 @@ var __vue_render__$3 = function () {
40014
40084
  }, [_vm.showSearch ? _c("SearchInput", {
40015
40085
  staticClass: "rq-data-table__search-bar",
40016
40086
  attrs: {
40017
- value: _vm.searchText
40087
+ value: _vm.searchText,
40088
+ placeholder: _vm.mergedTexts.searchPlaceholder
40018
40089
  },
40019
40090
  on: {
40020
40091
  input: function ($event) {
@@ -40033,7 +40104,8 @@ var __vue_render__$3 = function () {
40033
40104
  count: _vm.selectedCount,
40034
40105
  "delete-label": _vm.deleteLabel || _vm.mergedTexts.delete,
40035
40106
  "selected-count-text": _vm.mergedTexts.selectedCount,
40036
- "clear-label": _vm.mergedTexts.clearSelection
40107
+ "clear-label": _vm.mergedTexts.clearSelection,
40108
+ loading: _vm.deleteLoading
40037
40109
  },
40038
40110
  on: {
40039
40111
  clear: _vm.onClearSelection,
@@ -40052,6 +40124,7 @@ var __vue_render__$3 = function () {
40052
40124
  "row-id": _vm.rowId,
40053
40125
  "max-height": _vm.maxHeight,
40054
40126
  expandable: _vm.expandable,
40127
+ "row-expandable": _vm.rowExpandable,
40055
40128
  "expanded-row-height": _vm.expandedRowHeight,
40056
40129
  "expand-col-width": _vm.expandColWidth,
40057
40130
  "empty-state": _vm.emptyState,
package/dist/index.js CHANGED
@@ -33247,6 +33247,22 @@ const groupMixin = {
33247
33247
  default: false
33248
33248
  }
33249
33249
  },
33250
+ computed: {
33251
+ // `change` se saca de los listeners que se reenvían a la raíz, igual que
33252
+ // en el atom Checkbox. Estos grupos emiten 'change' Y montan un control
33253
+ // que dispara un 'change' nativo del DOM: ese evento burbujea hasta la
33254
+ // raíz y, si el listener del consumidor sigue enganchado ahí, se ejecuta
33255
+ // dos veces por un solo click (una con el booleano del componente, otra
33256
+ // con el Event nativo). En un consumidor que togglea, los dos disparos se
33257
+ // anulan: el control no cambia de estado pero la acción corre igual.
33258
+ listenersWithoutChange() {
33259
+ const {
33260
+ change,
33261
+ ...rest
33262
+ } = this.$listeners;
33263
+ return rest;
33264
+ }
33265
+ },
33250
33266
  methods: {
33251
33267
  handleClick() {
33252
33268
  if (!this.disabled) this.$emit('change', !this.checked);
@@ -33315,7 +33331,7 @@ var __vue_render__$k = function () {
33315
33331
  on: {
33316
33332
  click: _vm.handleClick
33317
33333
  }
33318
- }, _vm.$listeners), [_c("Checkbox", {
33334
+ }, _vm.listenersWithoutChange), [_c("Checkbox", {
33319
33335
  attrs: {
33320
33336
  checked: _vm.checked,
33321
33337
  disabled: _vm.disabled
@@ -33428,7 +33444,7 @@ var __vue_render__$j = function () {
33428
33444
  on: {
33429
33445
  click: _vm.handleClick
33430
33446
  }
33431
- }, _vm.$listeners), [_c("Checkbox", {
33447
+ }, _vm.listenersWithoutChange), [_c("Checkbox", {
33432
33448
  attrs: {
33433
33449
  checked: _vm.checked,
33434
33450
  disabled: _vm.disabled
@@ -33543,7 +33559,7 @@ var __vue_render__$i = function () {
33543
33559
  on: {
33544
33560
  click: _vm.handleClick
33545
33561
  }
33546
- }, _vm.$listeners), [_c("RqSwitch", {
33562
+ }, _vm.listenersWithoutChange), [_c("RqSwitch", {
33547
33563
  attrs: {
33548
33564
  checked: _vm.checked,
33549
33565
  disabled: _vm.disabled
@@ -33648,7 +33664,7 @@ var __vue_render__$h = function () {
33648
33664
  on: {
33649
33665
  click: _vm.handleClick
33650
33666
  }
33651
- }, _vm.$listeners), [_c("div", {
33667
+ }, _vm.listenersWithoutChange), [_c("div", {
33652
33668
  staticClass: "rq-rich-switch-group__aligner"
33653
33669
  }, [_c("RqSwitch", {
33654
33670
  attrs: {
@@ -34616,6 +34632,13 @@ const selectionBarVariants = cva('rq-selection-bar', {
34616
34632
  //
34617
34633
  //
34618
34634
  //
34635
+ //
34636
+ //
34637
+ //
34638
+ //
34639
+ //
34640
+ //
34641
+ //
34619
34642
 
34620
34643
  var script$b = {
34621
34644
  name: 'SelectionBar',
@@ -34638,6 +34661,10 @@ var script$b = {
34638
34661
  clearLabel: {
34639
34662
  type: String,
34640
34663
  default: 'Limpiar selección'
34664
+ },
34665
+ loading: {
34666
+ type: Boolean,
34667
+ default: false
34641
34668
  }
34642
34669
  },
34643
34670
  computed: {
@@ -34678,7 +34705,9 @@ var __vue_render__$b = function () {
34678
34705
  attrs: {
34679
34706
  variant: "secondary",
34680
34707
  size: "md",
34681
- "icon-right": "Trash2"
34708
+ "icon-right": "Trash2",
34709
+ loading: _vm.loading,
34710
+ disabled: _vm.loading
34682
34711
  },
34683
34712
  on: {
34684
34713
  click: function ($event) {
@@ -39027,6 +39056,8 @@ function useTable(props, emit) {
39027
39056
  //
39028
39057
  //
39029
39058
  //
39059
+ //
39060
+ //
39030
39061
 
39031
39062
  var script$4 = {
39032
39063
  name: 'Table',
@@ -39078,6 +39109,15 @@ var script$4 = {
39078
39109
  type: Boolean,
39079
39110
  default: false
39080
39111
  },
39112
+ // Predicado opcional por fila: recibe la fila original y decide si se
39113
+ // puede expandir. Sirve para las filas que no tienen contenido que
39114
+ // desplegar (p. ej. una ficha sin personas relacionadas). El guard vive
39115
+ // acá y no en el consumidor porque expandedRowId es estado interno de la
39116
+ // tabla: bloquear el evento afuera no evita que la fila se abra.
39117
+ rowExpandable: {
39118
+ type: Function,
39119
+ default: null
39120
+ },
39081
39121
  // Alto fijo (no máximo) del contenido expandido; con scroll interno si el
39082
39122
  // contenido no entra.
39083
39123
  expandedRowHeight: {
@@ -39313,7 +39353,19 @@ var script$4 = {
39313
39353
  y: 0
39314
39354
  };
39315
39355
  },
39356
+ canExpand(row) {
39357
+ if (!this.rowExpandable) return true;
39358
+ return !!this.rowExpandable(row.original);
39359
+ },
39360
+ canExpandById(rowId) {
39361
+ if (!this.rowExpandable) return true;
39362
+ const row = this.tableRows.find(r => r.id === rowId);
39363
+ return row ? this.canExpand(row) : true;
39364
+ },
39316
39365
  toggleExpand(rowId) {
39366
+ // Colapsar siempre se permite: si la fila abierta dejara de ser
39367
+ // expandible (cambió la data), igual tiene que poder cerrarse.
39368
+ if (this.expandedRowId !== rowId && !this.canExpandById(rowId)) return;
39317
39369
  this.expandedRowId = this.expandedRowId === rowId ? null : rowId;
39318
39370
  this.$emit('update:expanded-row-id', this.expandedRowId);
39319
39371
  if (this.expandedRowId) {
@@ -39553,6 +39605,9 @@ var __vue_render__$4 = function () {
39553
39605
  }
39554
39606
  }, [_vm.expandable ? _c("td", {
39555
39607
  staticClass: "rq-table__td rq-table__td--expand",
39608
+ class: {
39609
+ "rq-table__td--expand-disabled": !_vm.canExpand(row)
39610
+ },
39556
39611
  style: {
39557
39612
  position: "sticky",
39558
39613
  left: 0,
@@ -39562,8 +39617,9 @@ var __vue_render__$4 = function () {
39562
39617
  },
39563
39618
  attrs: {
39564
39619
  role: "button",
39565
- tabindex: "0",
39566
- "aria-expanded": _vm.expandedRowId === row.id
39620
+ tabindex: _vm.canExpand(row) ? 0 : -1,
39621
+ "aria-expanded": _vm.expandedRowId === row.id,
39622
+ "aria-disabled": !_vm.canExpand(row)
39567
39623
  },
39568
39624
  on: {
39569
39625
  click: function ($event) {
@@ -39845,6 +39901,9 @@ const dataTableVariants = cva('rq-data-table', {
39845
39901
  //
39846
39902
  //
39847
39903
  //
39904
+ //
39905
+ //
39906
+ //
39848
39907
 
39849
39908
  var script$3 = {
39850
39909
  name: 'DataTable',
@@ -39912,6 +39971,10 @@ var script$3 = {
39912
39971
  type: String,
39913
39972
  default: null
39914
39973
  },
39974
+ deleteLoading: {
39975
+ type: Boolean,
39976
+ default: false
39977
+ },
39915
39978
  texts: {
39916
39979
  type: Object,
39917
39980
  default: () => ({})
@@ -39920,6 +39983,12 @@ var script$3 = {
39920
39983
  type: Boolean,
39921
39984
  default: false
39922
39985
  },
39986
+ // Se reenvía a Table: predicado por fila para las que no tienen nada que
39987
+ // desplegar (ver Table.rowExpandable).
39988
+ rowExpandable: {
39989
+ type: Function,
39990
+ default: null
39991
+ },
39923
39992
  expandedRowHeight: {
39924
39993
  type: Number,
39925
39994
  default: 265
@@ -39972,6 +40041,7 @@ var script$3 = {
39972
40041
  },
39973
40042
  mergedTexts() {
39974
40043
  return {
40044
+ searchPlaceholder: 'Buscar...',
39975
40045
  selectedCount: '{count} registros seleccionados',
39976
40046
  clearSelection: 'Limpiar selección',
39977
40047
  delete: 'Eliminar',
@@ -40016,7 +40086,8 @@ var __vue_render__$3 = function () {
40016
40086
  }, [_vm.showSearch ? _c("SearchInput", {
40017
40087
  staticClass: "rq-data-table__search-bar",
40018
40088
  attrs: {
40019
- value: _vm.searchText
40089
+ value: _vm.searchText,
40090
+ placeholder: _vm.mergedTexts.searchPlaceholder
40020
40091
  },
40021
40092
  on: {
40022
40093
  input: function ($event) {
@@ -40035,7 +40106,8 @@ var __vue_render__$3 = function () {
40035
40106
  count: _vm.selectedCount,
40036
40107
  "delete-label": _vm.deleteLabel || _vm.mergedTexts.delete,
40037
40108
  "selected-count-text": _vm.mergedTexts.selectedCount,
40038
- "clear-label": _vm.mergedTexts.clearSelection
40109
+ "clear-label": _vm.mergedTexts.clearSelection,
40110
+ loading: _vm.deleteLoading
40039
40111
  },
40040
40112
  on: {
40041
40113
  clear: _vm.onClearSelection,
@@ -40054,6 +40126,7 @@ var __vue_render__$3 = function () {
40054
40126
  "row-id": _vm.rowId,
40055
40127
  "max-height": _vm.maxHeight,
40056
40128
  expandable: _vm.expandable,
40129
+ "row-expandable": _vm.rowExpandable,
40057
40130
  "expanded-row-height": _vm.expandedRowHeight,
40058
40131
  "expand-col-width": _vm.expandColWidth,
40059
40132
  "empty-state": _vm.emptyState,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@regcheq/ui-vue-2",
3
- "version": "1.15.1",
3
+ "version": "1.16.0",
4
4
  "main": "dist/index.js",
5
5
  "module": "dist/index.esm.js",
6
6
  "files": [