@regcheq/ui-vue-2 1.26.0 → 1.27.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
@@ -31459,7 +31459,7 @@ const buttonVariants$1 = cva('rq-button-legacy', {
31459
31459
  //
31460
31460
  //
31461
31461
 
31462
- var script$T = {
31462
+ var script$U = {
31463
31463
  name: 'RqButton',
31464
31464
  props: {
31465
31465
  variant: {
@@ -31593,10 +31593,10 @@ function normalizeComponent(template, style, script, scopeId, isFunctionalTempla
31593
31593
  }
31594
31594
 
31595
31595
  /* script */
31596
- const __vue_script__$T = script$T;
31596
+ const __vue_script__$U = script$U;
31597
31597
 
31598
31598
  /* template */
31599
- var __vue_render__$T = function () {
31599
+ var __vue_render__$U = function () {
31600
31600
  var _vm = this;
31601
31601
  var _h = _vm.$createElement;
31602
31602
  var _c = _vm._self._c || _h;
@@ -31622,27 +31622,27 @@ var __vue_render__$T = function () {
31622
31622
  }
31623
31623
  }) : _vm._e()], 2);
31624
31624
  };
31625
- var __vue_staticRenderFns__$T = [];
31626
- __vue_render__$T._withStripped = true;
31625
+ var __vue_staticRenderFns__$U = [];
31626
+ __vue_render__$U._withStripped = true;
31627
31627
 
31628
31628
  /* style */
31629
- const __vue_inject_styles__$T = undefined;
31629
+ const __vue_inject_styles__$U = undefined;
31630
31630
  /* scoped */
31631
- const __vue_scope_id__$T = undefined;
31631
+ const __vue_scope_id__$U = undefined;
31632
31632
  /* module identifier */
31633
- const __vue_module_identifier__$T = undefined;
31633
+ const __vue_module_identifier__$U = undefined;
31634
31634
  /* functional template */
31635
- const __vue_is_functional_template__$T = false;
31635
+ const __vue_is_functional_template__$U = false;
31636
31636
  /* style inject */
31637
31637
 
31638
31638
  /* style inject SSR */
31639
31639
 
31640
31640
  /* style inject shadow dom */
31641
31641
 
31642
- const __vue_component__$T = /*#__PURE__*/normalizeComponent({
31643
- render: __vue_render__$T,
31644
- staticRenderFns: __vue_staticRenderFns__$T
31645
- }, __vue_inject_styles__$T, __vue_script__$T, __vue_scope_id__$T, __vue_is_functional_template__$T, __vue_module_identifier__$T, false, undefined, undefined, undefined);
31642
+ const __vue_component__$U = /*#__PURE__*/normalizeComponent({
31643
+ render: __vue_render__$U,
31644
+ staticRenderFns: __vue_staticRenderFns__$U
31645
+ }, __vue_inject_styles__$U, __vue_script__$U, __vue_scope_id__$U, __vue_is_functional_template__$U, __vue_module_identifier__$U, false, undefined, undefined, undefined);
31646
31646
 
31647
31647
  const inputVariants$1 = cva('rq-input', {
31648
31648
  variants: {
@@ -31695,7 +31695,7 @@ const inputVariants$1 = cva('rq-input', {
31695
31695
  //
31696
31696
 
31697
31697
  let uid$8 = 0;
31698
- var script$S = {
31698
+ var script$T = {
31699
31699
  name: 'RqInput',
31700
31700
  inheritAttrs: false,
31701
31701
  props: {
@@ -31789,10 +31789,10 @@ var script$S = {
31789
31789
  };
31790
31790
 
31791
31791
  /* script */
31792
- const __vue_script__$S = script$S;
31792
+ const __vue_script__$T = script$T;
31793
31793
 
31794
31794
  /* template */
31795
- var __vue_render__$S = function () {
31795
+ var __vue_render__$T = function () {
31796
31796
  var _vm = this;
31797
31797
  var _h = _vm.$createElement;
31798
31798
  var _c = _vm._self._c || _h;
@@ -31847,27 +31847,27 @@ var __vue_render__$S = function () {
31847
31847
  class: ["rq-input__counter", _vm.error && "rq-input__counter--error"]
31848
31848
  }, [_vm._v(_vm._s(_vm.currentLength) + "/" + _vm._s(_vm.maxLength))]) : _vm._e()]) : _vm._e()]);
31849
31849
  };
31850
- var __vue_staticRenderFns__$S = [];
31851
- __vue_render__$S._withStripped = true;
31850
+ var __vue_staticRenderFns__$T = [];
31851
+ __vue_render__$T._withStripped = true;
31852
31852
 
31853
31853
  /* style */
31854
- const __vue_inject_styles__$S = undefined;
31854
+ const __vue_inject_styles__$T = undefined;
31855
31855
  /* scoped */
31856
- const __vue_scope_id__$S = undefined;
31856
+ const __vue_scope_id__$T = undefined;
31857
31857
  /* module identifier */
31858
- const __vue_module_identifier__$S = undefined;
31858
+ const __vue_module_identifier__$T = undefined;
31859
31859
  /* functional template */
31860
- const __vue_is_functional_template__$S = false;
31860
+ const __vue_is_functional_template__$T = false;
31861
31861
  /* style inject */
31862
31862
 
31863
31863
  /* style inject SSR */
31864
31864
 
31865
31865
  /* style inject shadow dom */
31866
31866
 
31867
- const __vue_component__$S = /*#__PURE__*/normalizeComponent({
31868
- render: __vue_render__$S,
31869
- staticRenderFns: __vue_staticRenderFns__$S
31870
- }, __vue_inject_styles__$S, __vue_script__$S, __vue_scope_id__$S, __vue_is_functional_template__$S, __vue_module_identifier__$S, false, undefined, undefined, undefined);
31867
+ const __vue_component__$T = /*#__PURE__*/normalizeComponent({
31868
+ render: __vue_render__$T,
31869
+ staticRenderFns: __vue_staticRenderFns__$T
31870
+ }, __vue_inject_styles__$T, __vue_script__$T, __vue_scope_id__$T, __vue_is_functional_template__$T, __vue_module_identifier__$T, false, undefined, undefined, undefined);
31871
31871
 
31872
31872
  const inputVariants = cva('rq-field', {
31873
31873
  variants: {
@@ -31919,7 +31919,7 @@ const inputVariants = cva('rq-field', {
31919
31919
  //
31920
31920
  //
31921
31921
 
31922
- var script$R = {
31922
+ var script$S = {
31923
31923
  name: 'Input',
31924
31924
  inheritAttrs: false,
31925
31925
  props: {
@@ -31992,10 +31992,10 @@ var script$R = {
31992
31992
  };
31993
31993
 
31994
31994
  /* script */
31995
- const __vue_script__$R = script$R;
31995
+ const __vue_script__$S = script$S;
31996
31996
 
31997
31997
  /* template */
31998
- var __vue_render__$R = function () {
31998
+ var __vue_render__$S = function () {
31999
31999
  var _vm = this;
32000
32000
  var _h = _vm.$createElement;
32001
32001
  var _c = _vm._self._c || _h;
@@ -32031,27 +32031,27 @@ var __vue_render__$R = function () {
32031
32031
  }
32032
32032
  }) : _vm._e()], 1);
32033
32033
  };
32034
- var __vue_staticRenderFns__$R = [];
32035
- __vue_render__$R._withStripped = true;
32034
+ var __vue_staticRenderFns__$S = [];
32035
+ __vue_render__$S._withStripped = true;
32036
32036
 
32037
32037
  /* style */
32038
- const __vue_inject_styles__$R = undefined;
32038
+ const __vue_inject_styles__$S = undefined;
32039
32039
  /* scoped */
32040
- const __vue_scope_id__$R = undefined;
32040
+ const __vue_scope_id__$S = undefined;
32041
32041
  /* module identifier */
32042
- const __vue_module_identifier__$R = undefined;
32042
+ const __vue_module_identifier__$S = undefined;
32043
32043
  /* functional template */
32044
- const __vue_is_functional_template__$R = false;
32044
+ const __vue_is_functional_template__$S = false;
32045
32045
  /* style inject */
32046
32046
 
32047
32047
  /* style inject SSR */
32048
32048
 
32049
32049
  /* style inject shadow dom */
32050
32050
 
32051
- const __vue_component__$R = /*#__PURE__*/normalizeComponent({
32052
- render: __vue_render__$R,
32053
- staticRenderFns: __vue_staticRenderFns__$R
32054
- }, __vue_inject_styles__$R, __vue_script__$R, __vue_scope_id__$R, __vue_is_functional_template__$R, __vue_module_identifier__$R, false, undefined, undefined, undefined);
32051
+ const __vue_component__$S = /*#__PURE__*/normalizeComponent({
32052
+ render: __vue_render__$S,
32053
+ staticRenderFns: __vue_staticRenderFns__$S
32054
+ }, __vue_inject_styles__$S, __vue_script__$S, __vue_scope_id__$S, __vue_is_functional_template__$S, __vue_module_identifier__$S, false, undefined, undefined, undefined);
32055
32055
 
32056
32056
  const buttonVariants = cva('rq-button', {
32057
32057
  variants: {
@@ -32096,7 +32096,7 @@ const buttonVariants = cva('rq-button', {
32096
32096
  //
32097
32097
  //
32098
32098
 
32099
- var script$Q = {
32099
+ var script$R = {
32100
32100
  name: 'Button',
32101
32101
  props: {
32102
32102
  variant: {
@@ -32192,10 +32192,10 @@ var script$Q = {
32192
32192
  };
32193
32193
 
32194
32194
  /* script */
32195
- const __vue_script__$Q = script$Q;
32195
+ const __vue_script__$R = script$R;
32196
32196
 
32197
32197
  /* template */
32198
- var __vue_render__$Q = function () {
32198
+ var __vue_render__$R = function () {
32199
32199
  var _vm = this;
32200
32200
  var _h = _vm.$createElement;
32201
32201
  var _c = _vm._self._c || _h;
@@ -32223,27 +32223,27 @@ var __vue_render__$Q = function () {
32223
32223
  }
32224
32224
  }) : _vm._e()], 2);
32225
32225
  };
32226
- var __vue_staticRenderFns__$Q = [];
32227
- __vue_render__$Q._withStripped = true;
32226
+ var __vue_staticRenderFns__$R = [];
32227
+ __vue_render__$R._withStripped = true;
32228
32228
 
32229
32229
  /* style */
32230
- const __vue_inject_styles__$Q = undefined;
32230
+ const __vue_inject_styles__$R = undefined;
32231
32231
  /* scoped */
32232
- const __vue_scope_id__$Q = undefined;
32232
+ const __vue_scope_id__$R = undefined;
32233
32233
  /* module identifier */
32234
- const __vue_module_identifier__$Q = undefined;
32234
+ const __vue_module_identifier__$R = undefined;
32235
32235
  /* functional template */
32236
- const __vue_is_functional_template__$Q = false;
32236
+ const __vue_is_functional_template__$R = false;
32237
32237
  /* style inject */
32238
32238
 
32239
32239
  /* style inject SSR */
32240
32240
 
32241
32241
  /* style inject shadow dom */
32242
32242
 
32243
- const __vue_component__$Q = /*#__PURE__*/normalizeComponent({
32244
- render: __vue_render__$Q,
32245
- staticRenderFns: __vue_staticRenderFns__$Q
32246
- }, __vue_inject_styles__$Q, __vue_script__$Q, __vue_scope_id__$Q, __vue_is_functional_template__$Q, __vue_module_identifier__$Q, false, undefined, undefined, undefined);
32243
+ const __vue_component__$R = /*#__PURE__*/normalizeComponent({
32244
+ render: __vue_render__$R,
32245
+ staticRenderFns: __vue_staticRenderFns__$R
32246
+ }, __vue_inject_styles__$R, __vue_script__$R, __vue_scope_id__$R, __vue_is_functional_template__$R, __vue_module_identifier__$R, false, undefined, undefined, undefined);
32247
32247
 
32248
32248
  //
32249
32249
  //
@@ -32317,7 +32317,7 @@ const WEIGHT_MAP = {
32317
32317
  semibold: 600,
32318
32318
  bold: 700
32319
32319
  };
32320
- var script$P = {
32320
+ var script$Q = {
32321
32321
  name: 'Typography',
32322
32322
  props: {
32323
32323
  variant: {
@@ -32351,10 +32351,10 @@ var script$P = {
32351
32351
  };
32352
32352
 
32353
32353
  /* script */
32354
- const __vue_script__$P = script$P;
32354
+ const __vue_script__$Q = script$Q;
32355
32355
 
32356
32356
  /* template */
32357
- var __vue_render__$P = function () {
32357
+ var __vue_render__$Q = function () {
32358
32358
  var _vm = this;
32359
32359
  var _h = _vm.$createElement;
32360
32360
  var _c = _vm._self._c || _h;
@@ -32364,27 +32364,27 @@ var __vue_render__$P = function () {
32364
32364
  style: _vm.weightStyle
32365
32365
  }, _vm.$listeners), [_vm._t("default")], 2);
32366
32366
  };
32367
- var __vue_staticRenderFns__$P = [];
32368
- __vue_render__$P._withStripped = true;
32367
+ var __vue_staticRenderFns__$Q = [];
32368
+ __vue_render__$Q._withStripped = true;
32369
32369
 
32370
32370
  /* style */
32371
- const __vue_inject_styles__$P = undefined;
32371
+ const __vue_inject_styles__$Q = undefined;
32372
32372
  /* scoped */
32373
- const __vue_scope_id__$P = undefined;
32373
+ const __vue_scope_id__$Q = undefined;
32374
32374
  /* module identifier */
32375
- const __vue_module_identifier__$P = undefined;
32375
+ const __vue_module_identifier__$Q = undefined;
32376
32376
  /* functional template */
32377
- const __vue_is_functional_template__$P = false;
32377
+ const __vue_is_functional_template__$Q = false;
32378
32378
  /* style inject */
32379
32379
 
32380
32380
  /* style inject SSR */
32381
32381
 
32382
32382
  /* style inject shadow dom */
32383
32383
 
32384
- const __vue_component__$P = /*#__PURE__*/normalizeComponent({
32385
- render: __vue_render__$P,
32386
- staticRenderFns: __vue_staticRenderFns__$P
32387
- }, __vue_inject_styles__$P, __vue_script__$P, __vue_scope_id__$P, __vue_is_functional_template__$P, __vue_module_identifier__$P, false, undefined, undefined, undefined);
32384
+ const __vue_component__$Q = /*#__PURE__*/normalizeComponent({
32385
+ render: __vue_render__$Q,
32386
+ staticRenderFns: __vue_staticRenderFns__$Q
32387
+ }, __vue_inject_styles__$Q, __vue_script__$Q, __vue_scope_id__$Q, __vue_is_functional_template__$Q, __vue_module_identifier__$Q, false, undefined, undefined, undefined);
32388
32388
 
32389
32389
  const linkVariants = cva('rq-link', {
32390
32390
  variants: {
@@ -32422,10 +32422,10 @@ const linkVariants = cva('rq-link', {
32422
32422
  //
32423
32423
  //
32424
32424
 
32425
- var script$O = {
32425
+ var script$P = {
32426
32426
  name: 'Link',
32427
32427
  components: {
32428
- Typography: __vue_component__$P
32428
+ Typography: __vue_component__$Q
32429
32429
  },
32430
32430
  props: {
32431
32431
  variant: {
@@ -32482,10 +32482,10 @@ var script$O = {
32482
32482
  };
32483
32483
 
32484
32484
  /* script */
32485
- const __vue_script__$O = script$O;
32485
+ const __vue_script__$P = script$P;
32486
32486
 
32487
32487
  /* template */
32488
- var __vue_render__$O = function () {
32488
+ var __vue_render__$P = function () {
32489
32489
  var _vm = this;
32490
32490
  var _h = _vm.$createElement;
32491
32491
  var _c = _vm._self._c || _h;
@@ -32504,6 +32504,108 @@ var __vue_render__$O = function () {
32504
32504
  }
32505
32505
  }, _vm.listeners), [_vm._t("default")], 2);
32506
32506
  };
32507
+ var __vue_staticRenderFns__$P = [];
32508
+ __vue_render__$P._withStripped = true;
32509
+
32510
+ /* style */
32511
+ const __vue_inject_styles__$P = undefined;
32512
+ /* scoped */
32513
+ const __vue_scope_id__$P = undefined;
32514
+ /* module identifier */
32515
+ const __vue_module_identifier__$P = undefined;
32516
+ /* functional template */
32517
+ const __vue_is_functional_template__$P = false;
32518
+ /* style inject */
32519
+
32520
+ /* style inject SSR */
32521
+
32522
+ /* style inject shadow dom */
32523
+
32524
+ const __vue_component__$P = /*#__PURE__*/normalizeComponent({
32525
+ render: __vue_render__$P,
32526
+ staticRenderFns: __vue_staticRenderFns__$P
32527
+ }, __vue_inject_styles__$P, __vue_script__$P, __vue_scope_id__$P, __vue_is_functional_template__$P, __vue_module_identifier__$P, false, undefined, undefined, undefined);
32528
+
32529
+ const spinnerVariants = cva('rq-spinner', {
32530
+ variants: {
32531
+ size: {
32532
+ sm: 'rq-spinner--sm',
32533
+ md: 'rq-spinner--md',
32534
+ lg: 'rq-spinner--lg',
32535
+ xl: 'rq-spinner--xl'
32536
+ },
32537
+ mirrored: {
32538
+ true: 'rq-spinner--mirrored',
32539
+ false: ''
32540
+ }
32541
+ },
32542
+ defaultVariants: {
32543
+ size: 'md',
32544
+ mirrored: false
32545
+ }
32546
+ });
32547
+
32548
+ //
32549
+ //
32550
+ //
32551
+ //
32552
+ //
32553
+ //
32554
+ //
32555
+
32556
+ var script$O = {
32557
+ name: 'Spinner',
32558
+ props: {
32559
+ size: {
32560
+ type: String,
32561
+ default: 'md',
32562
+ validator: v => ['sm', 'md', 'lg', 'xl'].includes(v)
32563
+ },
32564
+ mirrored: {
32565
+ type: Boolean,
32566
+ default: false
32567
+ },
32568
+ label: {
32569
+ type: String,
32570
+ default: 'Cargando'
32571
+ },
32572
+ boxed: {
32573
+ type: Boolean,
32574
+ default: false
32575
+ }
32576
+ },
32577
+ computed: {
32578
+ classes() {
32579
+ return spinnerVariants({
32580
+ size: this.size,
32581
+ mirrored: this.mirrored
32582
+ });
32583
+ }
32584
+ }
32585
+ };
32586
+
32587
+ /* script */
32588
+ const __vue_script__$O = script$O;
32589
+
32590
+ /* template */
32591
+ var __vue_render__$O = function () {
32592
+ var _vm = this;
32593
+ var _h = _vm.$createElement;
32594
+ var _c = _vm._self._c || _h;
32595
+ return _vm.boxed ? _c("span", {
32596
+ class: ["rq-spinner-box", "rq-spinner-box--" + _vm.size]
32597
+ }, [_c("output", _vm._g({
32598
+ class: _vm.classes,
32599
+ attrs: {
32600
+ "aria-label": _vm.label
32601
+ }
32602
+ }, _vm.$listeners))]) : _c("output", _vm._g({
32603
+ class: _vm.classes,
32604
+ attrs: {
32605
+ "aria-label": _vm.label
32606
+ }
32607
+ }, _vm.$listeners));
32608
+ };
32507
32609
  var __vue_staticRenderFns__$O = [];
32508
32610
  __vue_render__$O._withStripped = true;
32509
32611
 
@@ -32526,18 +32628,7 @@ const __vue_component__$O = /*#__PURE__*/normalizeComponent({
32526
32628
  staticRenderFns: __vue_staticRenderFns__$O
32527
32629
  }, __vue_inject_styles__$O, __vue_script__$O, __vue_scope_id__$O, __vue_is_functional_template__$O, __vue_module_identifier__$O, false, undefined, undefined, undefined);
32528
32630
 
32529
- const progressVariants = cva('rq-progress', {
32530
- variants: {
32531
- variant: {
32532
- default: 'rq-progress--default',
32533
- success: 'rq-progress--success',
32534
- error: 'rq-progress--error'
32535
- }
32536
- },
32537
- defaultVariants: {
32538
- variant: 'default'
32539
- }
32540
- });
32631
+ const checkboxVariants = cva('rq-checkbox');
32541
32632
 
32542
32633
  //
32543
32634
  //
@@ -32565,75 +32656,52 @@ const progressVariants = cva('rq-progress', {
32565
32656
  //
32566
32657
  //
32567
32658
  //
32568
- //
32569
- //
32570
32659
 
32571
- const SEGMENT_COLORS = new Set(['default', 'success', 'error', 'warning']);
32572
- let uid$7 = 0;
32573
- function clamp(value) {
32574
- const number = Number.isFinite(value) ? value : 0;
32575
- return Math.min(100, Math.max(0, number));
32576
- }
32577
32660
  var script$N = {
32578
- name: 'Progress',
32661
+ name: 'Checkbox',
32662
+ model: {
32663
+ prop: 'checked',
32664
+ event: 'change'
32665
+ },
32579
32666
  props: {
32580
- value: {
32581
- type: Number,
32582
- default: 0
32583
- },
32584
- variant: {
32585
- type: String,
32586
- default: 'default',
32587
- validator: v => ['default', 'success', 'error'].includes(v)
32667
+ checked: {
32668
+ type: Boolean,
32669
+ default: false
32588
32670
  },
32589
- label: {
32590
- type: String,
32591
- default: null
32671
+ indeterminate: {
32672
+ type: Boolean,
32673
+ default: false
32592
32674
  },
32593
- showValue: {
32675
+ disabled: {
32594
32676
  type: Boolean,
32595
- default: true
32677
+ default: false
32596
32678
  },
32597
- segments: {
32598
- type: Array,
32599
- default: () => []
32679
+ error: {
32680
+ type: Boolean,
32681
+ default: false
32600
32682
  }
32601
32683
  },
32602
- data() {
32603
- uid$7 += 1;
32604
- return {
32605
- labelId: `rq-progress-label-${uid$7}`
32606
- };
32607
- },
32608
32684
  computed: {
32609
32685
  classes() {
32610
- return progressVariants({
32611
- variant: this.variant
32612
- });
32686
+ return [checkboxVariants(), {
32687
+ 'rq-checkbox--checked': this.checked,
32688
+ 'rq-checkbox--indeterminate': this.indeterminate,
32689
+ 'rq-checkbox--error': this.error,
32690
+ 'rq-checkbox--disabled': this.disabled
32691
+ }];
32613
32692
  },
32614
- normalizedSegments() {
32615
- let used = 0;
32616
- return this.segments.map(segment => {
32617
- const width = Math.min(clamp(segment.value), 100 - used);
32618
- used += width;
32619
- const isVariant = !segment.color || SEGMENT_COLORS.has(segment.color);
32620
- return {
32621
- width,
32622
- classes: ['rq-progress__segment', `rq-progress__segment--${isVariant ? segment.color || 'default' : 'custom'}`],
32623
- style: isVariant ? {
32624
- width: `${width}%`
32625
- } : {
32626
- width: `${width}%`,
32627
- background: segment.color
32628
- }
32629
- };
32630
- });
32693
+ listenersWithoutChange() {
32694
+ const {
32695
+ change,
32696
+ ...rest
32697
+ } = this.$listeners;
32698
+ return rest;
32631
32699
  },
32632
- percent() {
32633
- if (this.segments.length) {
32634
- return Math.round(this.normalizedSegments.reduce((total, segment) => total + segment.width, 0));
32635
- }
32636
- return Math.round(clamp(this.value));
32700
+ checkIcon() {
32701
+ return Check;
32702
+ },
32703
+ minusIcon() {
32704
+ return Minus;
32637
32705
  }
32638
32706
  }
32639
32707
  };
@@ -32646,43 +32714,37 @@ var __vue_render__$N = function () {
32646
32714
  var _vm = this;
32647
32715
  var _h = _vm.$createElement;
32648
32716
  var _c = _vm._self._c || _h;
32649
- return _c("div", _vm._g({
32650
- staticClass: "rq-progress-field"
32651
- }, _vm.$listeners), [_vm.label ? _c("div", {
32652
- staticClass: "rq-progress-field__header"
32653
- }, [_c("span", {
32654
- staticClass: "rq-progress-field__label",
32655
- attrs: {
32656
- id: _vm.labelId
32657
- }
32658
- }, [_vm._v(_vm._s(_vm.label))]), _vm._v(" "), _vm.showValue ? _c("span", {
32659
- staticClass: "rq-progress-field__value"
32660
- }, [_vm._v(_vm._s(_vm.percent) + "%")]) : _vm._e()]) : _vm._e(), _vm._v(" "), _c("progress", {
32661
- staticClass: "rq-progress-field__native",
32717
+ return _c("label", _vm._g({
32718
+ class: _vm.classes
32719
+ }, _vm.listenersWithoutChange), [_c("input", {
32720
+ staticClass: "rq-checkbox__input",
32662
32721
  attrs: {
32663
- max: "100",
32664
- "aria-labelledby": _vm.label ? _vm.labelId : null
32722
+ type: "checkbox",
32723
+ disabled: _vm.disabled
32665
32724
  },
32666
32725
  domProps: {
32667
- value: _vm.percent
32726
+ checked: _vm.checked,
32727
+ indeterminate: _vm.indeterminate
32728
+ },
32729
+ on: {
32730
+ change: function ($event) {
32731
+ return _vm.$emit("change", $event.target.checked);
32732
+ }
32668
32733
  }
32669
- }, [_vm._v("\n " + _vm._s(_vm.percent) + "%\n ")]), _vm._v(" "), _c("div", {
32670
- class: _vm.classes,
32734
+ }), _vm._v(" "), _vm.checked && !_vm.indeterminate ? _c(_vm.checkIcon, {
32735
+ tag: "component",
32736
+ staticClass: "rq-checkbox__icon",
32671
32737
  attrs: {
32672
- "aria-hidden": "true"
32738
+ size: 12,
32739
+ "stroke-width": 3
32673
32740
  }
32674
- }, [_vm.segments.length ? _vm._l(_vm.normalizedSegments, function (segment, index) {
32675
- return _c("span", {
32676
- key: index,
32677
- class: segment.classes,
32678
- style: segment.style
32679
- });
32680
- }) : _c("span", {
32681
- staticClass: "rq-progress__fill",
32682
- style: {
32683
- width: _vm.percent + "%"
32741
+ }) : _vm._e(), _vm._v(" "), _vm.indeterminate ? _c(_vm.minusIcon, {
32742
+ tag: "component",
32743
+ staticClass: "rq-checkbox__icon",
32744
+ attrs: {
32745
+ size: 12
32684
32746
  }
32685
- })], 2)]);
32747
+ }) : _vm._e()], 1);
32686
32748
  };
32687
32749
  var __vue_staticRenderFns__$N = [];
32688
32750
  __vue_render__$N._withStripped = true;
@@ -32706,25 +32768,16 @@ const __vue_component__$N = /*#__PURE__*/normalizeComponent({
32706
32768
  staticRenderFns: __vue_staticRenderFns__$N
32707
32769
  }, __vue_inject_styles__$N, __vue_script__$N, __vue_scope_id__$N, __vue_is_functional_template__$N, __vue_module_identifier__$N, false, undefined, undefined, undefined);
32708
32770
 
32709
- const spinnerVariants = cva('rq-spinner', {
32710
- variants: {
32711
- size: {
32712
- sm: 'rq-spinner--sm',
32713
- md: 'rq-spinner--md',
32714
- lg: 'rq-spinner--lg',
32715
- xl: 'rq-spinner--xl'
32716
- },
32717
- mirrored: {
32718
- true: 'rq-spinner--mirrored',
32719
- false: ''
32720
- }
32721
- },
32722
- defaultVariants: {
32723
- size: 'md',
32724
- mirrored: false
32725
- }
32726
- });
32771
+ const switchVariants = cva('rq-switch');
32727
32772
 
32773
+ //
32774
+ //
32775
+ //
32776
+ //
32777
+ //
32778
+ //
32779
+ //
32780
+ //
32728
32781
  //
32729
32782
  //
32730
32783
  //
@@ -32734,32 +32787,27 @@ const spinnerVariants = cva('rq-spinner', {
32734
32787
  //
32735
32788
 
32736
32789
  var script$M = {
32737
- name: 'Spinner',
32790
+ name: 'RqSwitch',
32791
+ model: {
32792
+ prop: 'checked',
32793
+ event: 'change'
32794
+ },
32738
32795
  props: {
32739
- size: {
32740
- type: String,
32741
- default: 'md',
32742
- validator: v => ['sm', 'md', 'lg', 'xl'].includes(v)
32743
- },
32744
- mirrored: {
32796
+ checked: {
32745
32797
  type: Boolean,
32746
32798
  default: false
32747
32799
  },
32748
- label: {
32749
- type: String,
32750
- default: 'Cargando'
32751
- },
32752
- boxed: {
32800
+ disabled: {
32753
32801
  type: Boolean,
32754
32802
  default: false
32755
32803
  }
32756
32804
  },
32757
32805
  computed: {
32758
32806
  classes() {
32759
- return spinnerVariants({
32760
- size: this.size,
32761
- mirrored: this.mirrored
32762
- });
32807
+ return [switchVariants(), {
32808
+ 'rq-switch--checked': this.checked,
32809
+ 'rq-switch--disabled': this.disabled
32810
+ }];
32763
32811
  }
32764
32812
  }
32765
32813
  };
@@ -32772,19 +32820,29 @@ var __vue_render__$M = function () {
32772
32820
  var _vm = this;
32773
32821
  var _h = _vm.$createElement;
32774
32822
  var _c = _vm._self._c || _h;
32775
- return _vm.boxed ? _c("span", {
32776
- class: ["rq-spinner-box", "rq-spinner-box--" + _vm.size]
32777
- }, [_c("output", _vm._g({
32778
- class: _vm.classes,
32779
- attrs: {
32780
- "aria-label": _vm.label
32781
- }
32782
- }, _vm.$listeners))]) : _c("output", _vm._g({
32823
+ return _c("span", _vm._g({
32783
32824
  class: _vm.classes,
32784
32825
  attrs: {
32785
- "aria-label": _vm.label
32826
+ tabindex: _vm.disabled ? -1 : 0,
32827
+ role: "switch",
32828
+ "aria-checked": String(_vm.checked),
32829
+ "aria-disabled": String(_vm.disabled)
32830
+ },
32831
+ on: {
32832
+ click: function ($event) {
32833
+ return _vm.$emit("change", !_vm.checked);
32834
+ },
32835
+ keydown: function ($event) {
32836
+ if (!$event.type.indexOf("key") && _vm._k($event.keyCode, "space", 32, $event.key, [" ", "Spacebar"])) {
32837
+ return null;
32838
+ }
32839
+ $event.preventDefault();
32840
+ return _vm.$emit("change", !_vm.checked);
32841
+ }
32786
32842
  }
32787
- }, _vm.$listeners));
32843
+ }, _vm.$listeners), [_c("span", {
32844
+ staticClass: "rq-switch__thumb"
32845
+ })]);
32788
32846
  };
32789
32847
  var __vue_staticRenderFns__$M = [];
32790
32848
  __vue_render__$M._withStripped = true;
@@ -32808,7 +32866,10 @@ const __vue_component__$M = /*#__PURE__*/normalizeComponent({
32808
32866
  staticRenderFns: __vue_staticRenderFns__$M
32809
32867
  }, __vue_inject_styles__$M, __vue_script__$M, __vue_scope_id__$M, __vue_is_functional_template__$M, __vue_module_identifier__$M, false, undefined, undefined, undefined);
32810
32868
 
32811
- const checkboxVariants = cva('rq-checkbox');
32869
+ const chipVariants = cva('rq-chip', {
32870
+ variants: {},
32871
+ defaultVariants: {}
32872
+ });
32812
32873
 
32813
32874
  //
32814
32875
  //
@@ -32825,63 +32886,31 @@ const checkboxVariants = cva('rq-checkbox');
32825
32886
  //
32826
32887
  //
32827
32888
  //
32828
- //
32829
- //
32830
- //
32831
- //
32832
- //
32833
- //
32834
- //
32835
- //
32836
- //
32837
- //
32838
- //
32839
32889
 
32840
32890
  var script$L = {
32841
- name: 'Checkbox',
32842
- model: {
32843
- prop: 'checked',
32844
- event: 'change'
32845
- },
32891
+ name: 'Chip',
32846
32892
  props: {
32847
- checked: {
32848
- type: Boolean,
32849
- default: false
32893
+ label: {
32894
+ type: String,
32895
+ default: ''
32850
32896
  },
32851
- indeterminate: {
32897
+ closable: {
32852
32898
  type: Boolean,
32853
32899
  default: false
32854
32900
  },
32855
32901
  disabled: {
32856
32902
  type: Boolean,
32857
32903
  default: false
32858
- },
32859
- error: {
32860
- type: Boolean,
32861
- default: false
32862
32904
  }
32863
32905
  },
32864
32906
  computed: {
32865
32907
  classes() {
32866
- return [checkboxVariants(), {
32867
- 'rq-checkbox--checked': this.checked,
32868
- 'rq-checkbox--indeterminate': this.indeterminate,
32869
- 'rq-checkbox--error': this.error,
32870
- 'rq-checkbox--disabled': this.disabled
32908
+ return [chipVariants(), {
32909
+ 'rq-chip--disabled': this.disabled
32871
32910
  }];
32872
32911
  },
32873
- listenersWithoutChange() {
32874
- const {
32875
- change,
32876
- ...rest
32877
- } = this.$listeners;
32878
- return rest;
32879
- },
32880
- checkIcon() {
32881
- return Check;
32882
- },
32883
- minusIcon() {
32884
- return Minus;
32912
+ xIcon() {
32913
+ return CircleX;
32885
32914
  }
32886
32915
  }
32887
32916
  };
@@ -32894,37 +32923,26 @@ var __vue_render__$L = function () {
32894
32923
  var _vm = this;
32895
32924
  var _h = _vm.$createElement;
32896
32925
  var _c = _vm._self._c || _h;
32897
- return _c("label", _vm._g({
32926
+ return _c("span", _vm._g({
32898
32927
  class: _vm.classes
32899
- }, _vm.listenersWithoutChange), [_c("input", {
32900
- staticClass: "rq-checkbox__input",
32928
+ }, _vm.$listeners), [_c("span", [_vm._v(_vm._s(_vm.label))]), _vm._v(" "), _vm.closable ? _c("button", {
32929
+ staticClass: "rq-chip__close",
32901
32930
  attrs: {
32902
- type: "checkbox",
32931
+ type: "button",
32903
32932
  disabled: _vm.disabled
32904
32933
  },
32905
- domProps: {
32906
- checked: _vm.checked,
32907
- indeterminate: _vm.indeterminate
32908
- },
32909
32934
  on: {
32910
- change: function ($event) {
32911
- return _vm.$emit("change", $event.target.checked);
32935
+ click: function ($event) {
32936
+ $event.stopPropagation();
32937
+ return _vm.$emit("close");
32912
32938
  }
32913
32939
  }
32914
- }), _vm._v(" "), _vm.checked && !_vm.indeterminate ? _c(_vm.checkIcon, {
32915
- tag: "component",
32916
- staticClass: "rq-checkbox__icon",
32917
- attrs: {
32918
- size: 12,
32919
- "stroke-width": 3
32920
- }
32921
- }) : _vm._e(), _vm._v(" "), _vm.indeterminate ? _c(_vm.minusIcon, {
32940
+ }, [_c(_vm.xIcon, {
32922
32941
  tag: "component",
32923
- staticClass: "rq-checkbox__icon",
32924
32942
  attrs: {
32925
- size: 12
32943
+ size: 16
32926
32944
  }
32927
- }) : _vm._e()], 1);
32945
+ })], 1) : _vm._e()]);
32928
32946
  };
32929
32947
  var __vue_staticRenderFns__$L = [];
32930
32948
  __vue_render__$L._withStripped = true;
@@ -32948,204 +32966,6 @@ const __vue_component__$L = /*#__PURE__*/normalizeComponent({
32948
32966
  staticRenderFns: __vue_staticRenderFns__$L
32949
32967
  }, __vue_inject_styles__$L, __vue_script__$L, __vue_scope_id__$L, __vue_is_functional_template__$L, __vue_module_identifier__$L, false, undefined, undefined, undefined);
32950
32968
 
32951
- const switchVariants = cva('rq-switch');
32952
-
32953
- //
32954
- //
32955
- //
32956
- //
32957
- //
32958
- //
32959
- //
32960
- //
32961
- //
32962
- //
32963
- //
32964
- //
32965
- //
32966
- //
32967
- //
32968
-
32969
- var script$K = {
32970
- name: 'RqSwitch',
32971
- model: {
32972
- prop: 'checked',
32973
- event: 'change'
32974
- },
32975
- props: {
32976
- checked: {
32977
- type: Boolean,
32978
- default: false
32979
- },
32980
- disabled: {
32981
- type: Boolean,
32982
- default: false
32983
- }
32984
- },
32985
- computed: {
32986
- classes() {
32987
- return [switchVariants(), {
32988
- 'rq-switch--checked': this.checked,
32989
- 'rq-switch--disabled': this.disabled
32990
- }];
32991
- }
32992
- }
32993
- };
32994
-
32995
- /* script */
32996
- const __vue_script__$K = script$K;
32997
-
32998
- /* template */
32999
- var __vue_render__$K = function () {
33000
- var _vm = this;
33001
- var _h = _vm.$createElement;
33002
- var _c = _vm._self._c || _h;
33003
- return _c("span", _vm._g({
33004
- class: _vm.classes,
33005
- attrs: {
33006
- tabindex: _vm.disabled ? -1 : 0,
33007
- role: "switch",
33008
- "aria-checked": String(_vm.checked),
33009
- "aria-disabled": String(_vm.disabled)
33010
- },
33011
- on: {
33012
- click: function ($event) {
33013
- return _vm.$emit("change", !_vm.checked);
33014
- },
33015
- keydown: function ($event) {
33016
- if (!$event.type.indexOf("key") && _vm._k($event.keyCode, "space", 32, $event.key, [" ", "Spacebar"])) {
33017
- return null;
33018
- }
33019
- $event.preventDefault();
33020
- return _vm.$emit("change", !_vm.checked);
33021
- }
33022
- }
33023
- }, _vm.$listeners), [_c("span", {
33024
- staticClass: "rq-switch__thumb"
33025
- })]);
33026
- };
33027
- var __vue_staticRenderFns__$K = [];
33028
- __vue_render__$K._withStripped = true;
33029
-
33030
- /* style */
33031
- const __vue_inject_styles__$K = undefined;
33032
- /* scoped */
33033
- const __vue_scope_id__$K = undefined;
33034
- /* module identifier */
33035
- const __vue_module_identifier__$K = undefined;
33036
- /* functional template */
33037
- const __vue_is_functional_template__$K = false;
33038
- /* style inject */
33039
-
33040
- /* style inject SSR */
33041
-
33042
- /* style inject shadow dom */
33043
-
33044
- const __vue_component__$K = /*#__PURE__*/normalizeComponent({
33045
- render: __vue_render__$K,
33046
- staticRenderFns: __vue_staticRenderFns__$K
33047
- }, __vue_inject_styles__$K, __vue_script__$K, __vue_scope_id__$K, __vue_is_functional_template__$K, __vue_module_identifier__$K, false, undefined, undefined, undefined);
33048
-
33049
- const chipVariants = cva('rq-chip', {
33050
- variants: {},
33051
- defaultVariants: {}
33052
- });
33053
-
33054
- //
33055
- //
33056
- //
33057
- //
33058
- //
33059
- //
33060
- //
33061
- //
33062
- //
33063
- //
33064
- //
33065
- //
33066
- //
33067
- //
33068
- //
33069
-
33070
- var script$J = {
33071
- name: 'Chip',
33072
- props: {
33073
- label: {
33074
- type: String,
33075
- default: ''
33076
- },
33077
- closable: {
33078
- type: Boolean,
33079
- default: false
33080
- },
33081
- disabled: {
33082
- type: Boolean,
33083
- default: false
33084
- }
33085
- },
33086
- computed: {
33087
- classes() {
33088
- return [chipVariants(), {
33089
- 'rq-chip--disabled': this.disabled
33090
- }];
33091
- },
33092
- xIcon() {
33093
- return CircleX;
33094
- }
33095
- }
33096
- };
33097
-
33098
- /* script */
33099
- const __vue_script__$J = script$J;
33100
-
33101
- /* template */
33102
- var __vue_render__$J = function () {
33103
- var _vm = this;
33104
- var _h = _vm.$createElement;
33105
- var _c = _vm._self._c || _h;
33106
- return _c("span", _vm._g({
33107
- class: _vm.classes
33108
- }, _vm.$listeners), [_c("span", [_vm._v(_vm._s(_vm.label))]), _vm._v(" "), _vm.closable ? _c("button", {
33109
- staticClass: "rq-chip__close",
33110
- attrs: {
33111
- type: "button",
33112
- disabled: _vm.disabled
33113
- },
33114
- on: {
33115
- click: function ($event) {
33116
- $event.stopPropagation();
33117
- return _vm.$emit("close");
33118
- }
33119
- }
33120
- }, [_c(_vm.xIcon, {
33121
- tag: "component",
33122
- attrs: {
33123
- size: 16
33124
- }
33125
- })], 1) : _vm._e()]);
33126
- };
33127
- var __vue_staticRenderFns__$J = [];
33128
- __vue_render__$J._withStripped = true;
33129
-
33130
- /* style */
33131
- const __vue_inject_styles__$J = undefined;
33132
- /* scoped */
33133
- const __vue_scope_id__$J = undefined;
33134
- /* module identifier */
33135
- const __vue_module_identifier__$J = undefined;
33136
- /* functional template */
33137
- const __vue_is_functional_template__$J = false;
33138
- /* style inject */
33139
-
33140
- /* style inject SSR */
33141
-
33142
- /* style inject shadow dom */
33143
-
33144
- const __vue_component__$J = /*#__PURE__*/normalizeComponent({
33145
- render: __vue_render__$J,
33146
- staticRenderFns: __vue_staticRenderFns__$J
33147
- }, __vue_inject_styles__$J, __vue_script__$J, __vue_scope_id__$J, __vue_is_functional_template__$J, __vue_module_identifier__$J, false, undefined, undefined, undefined);
33148
-
33149
32969
  const badgeVariants = cva('rq-badge', {
33150
32970
  variants: {
33151
32971
  variant: {
@@ -33189,7 +33009,7 @@ const badgeVariants = cva('rq-badge', {
33189
33009
  //
33190
33010
  //
33191
33011
 
33192
- var script$I = {
33012
+ var script$K = {
33193
33013
  name: 'Badge',
33194
33014
  inheritAttrs: false,
33195
33015
  props: {
@@ -33255,10 +33075,10 @@ var script$I = {
33255
33075
  };
33256
33076
 
33257
33077
  /* script */
33258
- const __vue_script__$I = script$I;
33078
+ const __vue_script__$K = script$K;
33259
33079
 
33260
33080
  /* template */
33261
- var __vue_render__$I = function () {
33081
+ var __vue_render__$K = function () {
33262
33082
  var _vm = this;
33263
33083
  var _h = _vm.$createElement;
33264
33084
  var _c = _vm._self._c || _h;
@@ -33267,27 +33087,27 @@ var __vue_render__$I = function () {
33267
33087
  style: _vm.inlineStyle
33268
33088
  }, "span", _vm.$attrs, false), _vm.$listeners), [_vm._t("left"), _vm._v(" "), _vm._t("default"), _vm._v(" "), _vm._t("right")], 2);
33269
33089
  };
33270
- var __vue_staticRenderFns__$I = [];
33271
- __vue_render__$I._withStripped = true;
33090
+ var __vue_staticRenderFns__$K = [];
33091
+ __vue_render__$K._withStripped = true;
33272
33092
 
33273
33093
  /* style */
33274
- const __vue_inject_styles__$I = undefined;
33094
+ const __vue_inject_styles__$K = undefined;
33275
33095
  /* scoped */
33276
- const __vue_scope_id__$I = undefined;
33096
+ const __vue_scope_id__$K = undefined;
33277
33097
  /* module identifier */
33278
- const __vue_module_identifier__$I = undefined;
33098
+ const __vue_module_identifier__$K = undefined;
33279
33099
  /* functional template */
33280
- const __vue_is_functional_template__$I = false;
33100
+ const __vue_is_functional_template__$K = false;
33281
33101
  /* style inject */
33282
33102
 
33283
33103
  /* style inject SSR */
33284
33104
 
33285
33105
  /* style inject shadow dom */
33286
33106
 
33287
- const __vue_component__$I = /*#__PURE__*/normalizeComponent({
33288
- render: __vue_render__$I,
33289
- staticRenderFns: __vue_staticRenderFns__$I
33290
- }, __vue_inject_styles__$I, __vue_script__$I, __vue_scope_id__$I, __vue_is_functional_template__$I, __vue_module_identifier__$I, false, undefined, undefined, undefined);
33107
+ const __vue_component__$K = /*#__PURE__*/normalizeComponent({
33108
+ render: __vue_render__$K,
33109
+ staticRenderFns: __vue_staticRenderFns__$K
33110
+ }, __vue_inject_styles__$K, __vue_script__$K, __vue_scope_id__$K, __vue_is_functional_template__$K, __vue_module_identifier__$K, false, undefined, undefined, undefined);
33291
33111
 
33292
33112
  const iconVariants = cva('rq-icon', {
33293
33113
  variants: {
@@ -33321,7 +33141,7 @@ const iconVariants = cva('rq-icon', {
33321
33141
  //
33322
33142
  //
33323
33143
 
33324
- var script$H = {
33144
+ var script$J = {
33325
33145
  name: 'Icon',
33326
33146
  inheritAttrs: false,
33327
33147
  props: {
@@ -33373,10 +33193,10 @@ var script$H = {
33373
33193
  };
33374
33194
 
33375
33195
  /* script */
33376
- const __vue_script__$H = script$H;
33196
+ const __vue_script__$J = script$J;
33377
33197
 
33378
33198
  /* template */
33379
- var __vue_render__$H = function () {
33199
+ var __vue_render__$J = function () {
33380
33200
  var _vm = this;
33381
33201
  var _h = _vm.$createElement;
33382
33202
  var _c = _vm._self._c || _h;
@@ -33385,27 +33205,27 @@ var __vue_render__$H = function () {
33385
33205
  style: _vm.fontVariationStyle
33386
33206
  }, "span", _vm.mergedAttrs, false), _vm.$listeners), [_vm._v(_vm._s(_vm.name))]);
33387
33207
  };
33388
- var __vue_staticRenderFns__$H = [];
33389
- __vue_render__$H._withStripped = true;
33208
+ var __vue_staticRenderFns__$J = [];
33209
+ __vue_render__$J._withStripped = true;
33390
33210
 
33391
33211
  /* style */
33392
- const __vue_inject_styles__$H = undefined;
33212
+ const __vue_inject_styles__$J = undefined;
33393
33213
  /* scoped */
33394
- const __vue_scope_id__$H = undefined;
33214
+ const __vue_scope_id__$J = undefined;
33395
33215
  /* module identifier */
33396
- const __vue_module_identifier__$H = undefined;
33216
+ const __vue_module_identifier__$J = undefined;
33397
33217
  /* functional template */
33398
- const __vue_is_functional_template__$H = false;
33218
+ const __vue_is_functional_template__$J = false;
33399
33219
  /* style inject */
33400
33220
 
33401
33221
  /* style inject SSR */
33402
33222
 
33403
33223
  /* style inject shadow dom */
33404
33224
 
33405
- const __vue_component__$H = /*#__PURE__*/normalizeComponent({
33406
- render: __vue_render__$H,
33407
- staticRenderFns: __vue_staticRenderFns__$H
33408
- }, __vue_inject_styles__$H, __vue_script__$H, __vue_scope_id__$H, __vue_is_functional_template__$H, __vue_module_identifier__$H, false, undefined, undefined, undefined);
33225
+ const __vue_component__$J = /*#__PURE__*/normalizeComponent({
33226
+ render: __vue_render__$J,
33227
+ staticRenderFns: __vue_staticRenderFns__$J
33228
+ }, __vue_inject_styles__$J, __vue_script__$J, __vue_scope_id__$J, __vue_is_functional_template__$J, __vue_module_identifier__$J, false, undefined, undefined, undefined);
33409
33229
 
33410
33230
  const skeletonVariants = cva('rq-skeleton');
33411
33231
 
@@ -33414,7 +33234,7 @@ const skeletonVariants = cva('rq-skeleton');
33414
33234
  //
33415
33235
  //
33416
33236
 
33417
- var script$G = {
33237
+ var script$I = {
33418
33238
  name: 'Skeleton',
33419
33239
  props: {
33420
33240
  width: {
@@ -33434,10 +33254,10 @@ var script$G = {
33434
33254
  };
33435
33255
 
33436
33256
  /* script */
33437
- const __vue_script__$G = script$G;
33257
+ const __vue_script__$I = script$I;
33438
33258
 
33439
33259
  /* template */
33440
- var __vue_render__$G = function () {
33260
+ var __vue_render__$I = function () {
33441
33261
  var _vm = this;
33442
33262
  var _h = _vm.$createElement;
33443
33263
  var _c = _vm._self._c || _h;
@@ -33449,27 +33269,27 @@ var __vue_render__$G = function () {
33449
33269
  }
33450
33270
  }, _vm.$listeners));
33451
33271
  };
33452
- var __vue_staticRenderFns__$G = [];
33453
- __vue_render__$G._withStripped = true;
33272
+ var __vue_staticRenderFns__$I = [];
33273
+ __vue_render__$I._withStripped = true;
33454
33274
 
33455
33275
  /* style */
33456
- const __vue_inject_styles__$G = undefined;
33276
+ const __vue_inject_styles__$I = undefined;
33457
33277
  /* scoped */
33458
- const __vue_scope_id__$G = undefined;
33278
+ const __vue_scope_id__$I = undefined;
33459
33279
  /* module identifier */
33460
- const __vue_module_identifier__$G = undefined;
33280
+ const __vue_module_identifier__$I = undefined;
33461
33281
  /* functional template */
33462
- const __vue_is_functional_template__$G = false;
33282
+ const __vue_is_functional_template__$I = false;
33463
33283
  /* style inject */
33464
33284
 
33465
33285
  /* style inject SSR */
33466
33286
 
33467
33287
  /* style inject shadow dom */
33468
33288
 
33469
- const __vue_component__$G = /*#__PURE__*/normalizeComponent({
33470
- render: __vue_render__$G,
33471
- staticRenderFns: __vue_staticRenderFns__$G
33472
- }, __vue_inject_styles__$G, __vue_script__$G, __vue_scope_id__$G, __vue_is_functional_template__$G, __vue_module_identifier__$G, false, undefined, undefined, undefined);
33289
+ const __vue_component__$I = /*#__PURE__*/normalizeComponent({
33290
+ render: __vue_render__$I,
33291
+ staticRenderFns: __vue_staticRenderFns__$I
33292
+ }, __vue_inject_styles__$I, __vue_script__$I, __vue_scope_id__$I, __vue_is_functional_template__$I, __vue_module_identifier__$I, false, undefined, undefined, undefined);
33473
33293
 
33474
33294
  const selectVariants = cva('rq-select', {
33475
33295
  variants: {
@@ -33508,12 +33328,12 @@ const selectVariants = cva('rq-select', {
33508
33328
  //
33509
33329
  //
33510
33330
 
33511
- let uid$6 = 0;
33512
- var script$F = {
33331
+ let uid$7 = 0;
33332
+ var script$H = {
33513
33333
  name: 'Select',
33514
33334
  inheritAttrs: false,
33515
33335
  components: {
33516
- Icon: __vue_component__$H
33336
+ Icon: __vue_component__$J
33517
33337
  },
33518
33338
  props: {
33519
33339
  value: {
@@ -33544,9 +33364,9 @@ var script$F = {
33544
33364
  }
33545
33365
  },
33546
33366
  data() {
33547
- uid$6 += 1;
33367
+ uid$7 += 1;
33548
33368
  return {
33549
- generatedId: `rq-select-${uid$6}`
33369
+ generatedId: `rq-select-${uid$7}`
33550
33370
  };
33551
33371
  },
33552
33372
  computed: {
@@ -33570,9 +33390,15 @@ var script$F = {
33570
33390
  },
33571
33391
  // El <select> trabaja con el índice de la opción para emitir el `value`
33572
33392
  // con su tipo original (número, string…) en vez del string del DOM.
33393
+ // El `input` nativo no se reenvía: el del v-model lo emite el Select con
33394
+ // el value de la opción, y si no, el padre recibía el Event antes.
33573
33395
  selectListeners() {
33396
+ const listeners = {
33397
+ ...this.$listeners
33398
+ };
33399
+ delete listeners.input;
33574
33400
  return {
33575
- ...this.$listeners,
33401
+ ...listeners,
33576
33402
  change: e => {
33577
33403
  const option = this.options[e.target.value];
33578
33404
  const value = option ? option.value : '';
@@ -33588,10 +33414,10 @@ var script$F = {
33588
33414
  };
33589
33415
 
33590
33416
  /* script */
33591
- const __vue_script__$F = script$F;
33417
+ const __vue_script__$H = script$H;
33592
33418
 
33593
33419
  /* template */
33594
- var __vue_render__$F = function () {
33420
+ var __vue_render__$H = function () {
33595
33421
  var _vm = this;
33596
33422
  var _h = _vm.$createElement;
33597
33423
  var _c = _vm._self._c || _h;
@@ -33631,27 +33457,27 @@ var __vue_render__$F = function () {
33631
33457
  }
33632
33458
  })], 1);
33633
33459
  };
33634
- var __vue_staticRenderFns__$F = [];
33635
- __vue_render__$F._withStripped = true;
33460
+ var __vue_staticRenderFns__$H = [];
33461
+ __vue_render__$H._withStripped = true;
33636
33462
 
33637
33463
  /* style */
33638
- const __vue_inject_styles__$F = undefined;
33464
+ const __vue_inject_styles__$H = undefined;
33639
33465
  /* scoped */
33640
- const __vue_scope_id__$F = undefined;
33466
+ const __vue_scope_id__$H = undefined;
33641
33467
  /* module identifier */
33642
- const __vue_module_identifier__$F = undefined;
33468
+ const __vue_module_identifier__$H = undefined;
33643
33469
  /* functional template */
33644
- const __vue_is_functional_template__$F = false;
33470
+ const __vue_is_functional_template__$H = false;
33645
33471
  /* style inject */
33646
33472
 
33647
33473
  /* style inject SSR */
33648
33474
 
33649
33475
  /* style inject shadow dom */
33650
33476
 
33651
- const __vue_component__$F = /*#__PURE__*/normalizeComponent({
33652
- render: __vue_render__$F,
33653
- staticRenderFns: __vue_staticRenderFns__$F
33654
- }, __vue_inject_styles__$F, __vue_script__$F, __vue_scope_id__$F, __vue_is_functional_template__$F, __vue_module_identifier__$F, false, undefined, undefined, undefined);
33477
+ const __vue_component__$H = /*#__PURE__*/normalizeComponent({
33478
+ render: __vue_render__$H,
33479
+ staticRenderFns: __vue_staticRenderFns__$H
33480
+ }, __vue_inject_styles__$H, __vue_script__$H, __vue_scope_id__$H, __vue_is_functional_template__$H, __vue_module_identifier__$H, false, undefined, undefined, undefined);
33655
33481
 
33656
33482
  // Sin dimensiones CVA: Textarea tiene un solo tamaño (alto mínimo 96, crece con rows/resize).
33657
33483
  const textareaVariants = cva('rq-textarea');
@@ -33671,8 +33497,8 @@ const textareaVariants = cva('rq-textarea');
33671
33497
  //
33672
33498
  //
33673
33499
 
33674
- let uid$5 = 0;
33675
- var script$E = {
33500
+ let uid$6 = 0;
33501
+ var script$G = {
33676
33502
  name: 'Textarea',
33677
33503
  inheritAttrs: false,
33678
33504
  props: {
@@ -33698,9 +33524,9 @@ var script$E = {
33698
33524
  }
33699
33525
  },
33700
33526
  data() {
33701
- uid$5 += 1;
33527
+ uid$6 += 1;
33702
33528
  return {
33703
- generatedId: `rq-textarea-${uid$5}`
33529
+ generatedId: `rq-textarea-${uid$6}`
33704
33530
  };
33705
33531
  },
33706
33532
  computed: {
@@ -33722,10 +33548,10 @@ var script$E = {
33722
33548
  };
33723
33549
 
33724
33550
  /* script */
33725
- const __vue_script__$E = script$E;
33551
+ const __vue_script__$G = script$G;
33726
33552
 
33727
33553
  /* template */
33728
- var __vue_render__$E = function () {
33554
+ var __vue_render__$G = function () {
33729
33555
  var _vm = this;
33730
33556
  var _h = _vm.$createElement;
33731
33557
  var _c = _vm._self._c || _h;
@@ -33743,27 +33569,27 @@ var __vue_render__$E = function () {
33743
33569
  }
33744
33570
  }, "textarea", _vm.$attrs, false), _vm.textareaListeners));
33745
33571
  };
33746
- var __vue_staticRenderFns__$E = [];
33747
- __vue_render__$E._withStripped = true;
33572
+ var __vue_staticRenderFns__$G = [];
33573
+ __vue_render__$G._withStripped = true;
33748
33574
 
33749
33575
  /* style */
33750
- const __vue_inject_styles__$E = undefined;
33576
+ const __vue_inject_styles__$G = undefined;
33751
33577
  /* scoped */
33752
- const __vue_scope_id__$E = undefined;
33578
+ const __vue_scope_id__$G = undefined;
33753
33579
  /* module identifier */
33754
- const __vue_module_identifier__$E = undefined;
33580
+ const __vue_module_identifier__$G = undefined;
33755
33581
  /* functional template */
33756
- const __vue_is_functional_template__$E = false;
33582
+ const __vue_is_functional_template__$G = false;
33757
33583
  /* style inject */
33758
33584
 
33759
33585
  /* style inject SSR */
33760
33586
 
33761
33587
  /* style inject shadow dom */
33762
33588
 
33763
- const __vue_component__$E = /*#__PURE__*/normalizeComponent({
33764
- render: __vue_render__$E,
33765
- staticRenderFns: __vue_staticRenderFns__$E
33766
- }, __vue_inject_styles__$E, __vue_script__$E, __vue_scope_id__$E, __vue_is_functional_template__$E, __vue_module_identifier__$E, false, undefined, undefined, undefined);
33589
+ const __vue_component__$G = /*#__PURE__*/normalizeComponent({
33590
+ render: __vue_render__$G,
33591
+ staticRenderFns: __vue_staticRenderFns__$G
33592
+ }, __vue_inject_styles__$G, __vue_script__$G, __vue_scope_id__$G, __vue_is_functional_template__$G, __vue_module_identifier__$G, false, undefined, undefined, undefined);
33767
33593
 
33768
33594
  // Sin dimensiones CVA: un solo tamaño (16px, área de 20), igual que Checkbox.
33769
33595
  const radioVariants = cva('rq-radio');
@@ -33785,8 +33611,8 @@ const radioVariants = cva('rq-radio');
33785
33611
  //
33786
33612
  //
33787
33613
 
33788
- let uid$4 = 0;
33789
- var script$D = {
33614
+ let uid$5 = 0;
33615
+ var script$F = {
33790
33616
  name: 'Radio',
33791
33617
  inheritAttrs: false,
33792
33618
  // v-model del grupo: el radio se marca cuando modelValue === value.
@@ -33817,9 +33643,9 @@ var script$D = {
33817
33643
  }
33818
33644
  },
33819
33645
  data() {
33820
- uid$4 += 1;
33646
+ uid$5 += 1;
33821
33647
  return {
33822
- generatedId: `rq-radio-${uid$4}`
33648
+ generatedId: `rq-radio-${uid$5}`
33823
33649
  };
33824
33650
  },
33825
33651
  computed: {
@@ -33849,10 +33675,10 @@ var script$D = {
33849
33675
  };
33850
33676
 
33851
33677
  /* script */
33852
- const __vue_script__$D = script$D;
33678
+ const __vue_script__$F = script$F;
33853
33679
 
33854
33680
  /* template */
33855
- var __vue_render__$D = function () {
33681
+ var __vue_render__$F = function () {
33856
33682
  var _vm = this;
33857
33683
  var _h = _vm.$createElement;
33858
33684
  var _c = _vm._self._c || _h;
@@ -33872,27 +33698,27 @@ var __vue_render__$D = function () {
33872
33698
  }
33873
33699
  }, "input", _vm.$attrs, false), _vm.radioListeners))]);
33874
33700
  };
33875
- var __vue_staticRenderFns__$D = [];
33876
- __vue_render__$D._withStripped = true;
33701
+ var __vue_staticRenderFns__$F = [];
33702
+ __vue_render__$F._withStripped = true;
33877
33703
 
33878
33704
  /* style */
33879
- const __vue_inject_styles__$D = undefined;
33705
+ const __vue_inject_styles__$F = undefined;
33880
33706
  /* scoped */
33881
- const __vue_scope_id__$D = undefined;
33707
+ const __vue_scope_id__$F = undefined;
33882
33708
  /* module identifier */
33883
- const __vue_module_identifier__$D = undefined;
33709
+ const __vue_module_identifier__$F = undefined;
33884
33710
  /* functional template */
33885
- const __vue_is_functional_template__$D = false;
33711
+ const __vue_is_functional_template__$F = false;
33886
33712
  /* style inject */
33887
33713
 
33888
33714
  /* style inject SSR */
33889
33715
 
33890
33716
  /* style inject shadow dom */
33891
33717
 
33892
- const __vue_component__$D = /*#__PURE__*/normalizeComponent({
33893
- render: __vue_render__$D,
33894
- staticRenderFns: __vue_staticRenderFns__$D
33895
- }, __vue_inject_styles__$D, __vue_script__$D, __vue_scope_id__$D, __vue_is_functional_template__$D, __vue_module_identifier__$D, false, undefined, undefined, undefined);
33718
+ const __vue_component__$F = /*#__PURE__*/normalizeComponent({
33719
+ render: __vue_render__$F,
33720
+ staticRenderFns: __vue_staticRenderFns__$F
33721
+ }, __vue_inject_styles__$F, __vue_script__$F, __vue_scope_id__$F, __vue_is_functional_template__$F, __vue_module_identifier__$F, false, undefined, undefined, undefined);
33896
33722
 
33897
33723
  const avatarVariants = cva('rq-avatar', {
33898
33724
  variants: {
@@ -33922,7 +33748,7 @@ const avatarVariants = cva('rq-avatar', {
33922
33748
  //
33923
33749
  //
33924
33750
 
33925
- var script$C = {
33751
+ var script$E = {
33926
33752
  name: 'Avatar',
33927
33753
  props: {
33928
33754
  initials: {
@@ -33951,10 +33777,10 @@ var script$C = {
33951
33777
  };
33952
33778
 
33953
33779
  /* script */
33954
- const __vue_script__$C = script$C;
33780
+ const __vue_script__$E = script$E;
33955
33781
 
33956
33782
  /* template */
33957
- var __vue_render__$C = function () {
33783
+ var __vue_render__$E = function () {
33958
33784
  var _vm = this;
33959
33785
  var _h = _vm.$createElement;
33960
33786
  var _c = _vm._self._c || _h;
@@ -33962,27 +33788,27 @@ var __vue_render__$C = function () {
33962
33788
  class: _vm.classes
33963
33789
  }, _vm.$listeners), [_vm._v(_vm._s(_vm.initials))]);
33964
33790
  };
33965
- var __vue_staticRenderFns__$C = [];
33966
- __vue_render__$C._withStripped = true;
33791
+ var __vue_staticRenderFns__$E = [];
33792
+ __vue_render__$E._withStripped = true;
33967
33793
 
33968
33794
  /* style */
33969
- const __vue_inject_styles__$C = undefined;
33795
+ const __vue_inject_styles__$E = undefined;
33970
33796
  /* scoped */
33971
- const __vue_scope_id__$C = undefined;
33797
+ const __vue_scope_id__$E = undefined;
33972
33798
  /* module identifier */
33973
- const __vue_module_identifier__$C = undefined;
33799
+ const __vue_module_identifier__$E = undefined;
33974
33800
  /* functional template */
33975
- const __vue_is_functional_template__$C = false;
33801
+ const __vue_is_functional_template__$E = false;
33976
33802
  /* style inject */
33977
33803
 
33978
33804
  /* style inject SSR */
33979
33805
 
33980
33806
  /* style inject shadow dom */
33981
33807
 
33982
- const __vue_component__$C = /*#__PURE__*/normalizeComponent({
33983
- render: __vue_render__$C,
33984
- staticRenderFns: __vue_staticRenderFns__$C
33985
- }, __vue_inject_styles__$C, __vue_script__$C, __vue_scope_id__$C, __vue_is_functional_template__$C, __vue_module_identifier__$C, false, undefined, undefined, undefined);
33808
+ const __vue_component__$E = /*#__PURE__*/normalizeComponent({
33809
+ render: __vue_render__$E,
33810
+ staticRenderFns: __vue_staticRenderFns__$E
33811
+ }, __vue_inject_styles__$E, __vue_script__$E, __vue_scope_id__$E, __vue_is_functional_template__$E, __vue_module_identifier__$E, false, undefined, undefined, undefined);
33986
33812
 
33987
33813
  const tooltipVariants = cva('rq-tooltip', {
33988
33814
  variants: {
@@ -34029,7 +33855,7 @@ const tooltipVariants = cva('rq-tooltip', {
34029
33855
  // Separación entre el trigger y la burbuja, en px. Igual al gap que antes
34030
33856
  // definía el CSS con calc(100% + 8px).
34031
33857
  const GAP$1 = 8;
34032
- var script$B = {
33858
+ var script$D = {
34033
33859
  name: 'Tooltip',
34034
33860
  props: {
34035
33861
  side: {
@@ -34167,10 +33993,10 @@ var script$B = {
34167
33993
  };
34168
33994
 
34169
33995
  /* script */
34170
- const __vue_script__$B = script$B;
33996
+ const __vue_script__$D = script$D;
34171
33997
 
34172
33998
  /* template */
34173
- var __vue_render__$B = function () {
33999
+ var __vue_render__$D = function () {
34174
34000
  var _vm = this;
34175
34001
  var _h = _vm.$createElement;
34176
34002
  var _c = _vm._self._c || _h;
@@ -34190,27 +34016,27 @@ var __vue_render__$B = function () {
34190
34016
  style: _vm.style
34191
34017
  }, [_vm._v("\n " + _vm._s(_vm.text) + "\n ")])], 2);
34192
34018
  };
34193
- var __vue_staticRenderFns__$B = [];
34194
- __vue_render__$B._withStripped = true;
34019
+ var __vue_staticRenderFns__$D = [];
34020
+ __vue_render__$D._withStripped = true;
34195
34021
 
34196
34022
  /* style */
34197
- const __vue_inject_styles__$B = undefined;
34023
+ const __vue_inject_styles__$D = undefined;
34198
34024
  /* scoped */
34199
- const __vue_scope_id__$B = undefined;
34025
+ const __vue_scope_id__$D = undefined;
34200
34026
  /* module identifier */
34201
- const __vue_module_identifier__$B = undefined;
34027
+ const __vue_module_identifier__$D = undefined;
34202
34028
  /* functional template */
34203
- const __vue_is_functional_template__$B = false;
34029
+ const __vue_is_functional_template__$D = false;
34204
34030
  /* style inject */
34205
34031
 
34206
34032
  /* style inject SSR */
34207
34033
 
34208
34034
  /* style inject shadow dom */
34209
34035
 
34210
- const __vue_component__$B = /*#__PURE__*/normalizeComponent({
34211
- render: __vue_render__$B,
34212
- staticRenderFns: __vue_staticRenderFns__$B
34213
- }, __vue_inject_styles__$B, __vue_script__$B, __vue_scope_id__$B, __vue_is_functional_template__$B, __vue_module_identifier__$B, false, undefined, undefined, undefined);
34036
+ const __vue_component__$D = /*#__PURE__*/normalizeComponent({
34037
+ render: __vue_render__$D,
34038
+ staticRenderFns: __vue_staticRenderFns__$D
34039
+ }, __vue_inject_styles__$D, __vue_script__$D, __vue_scope_id__$D, __vue_is_functional_template__$D, __vue_module_identifier__$D, false, undefined, undefined, undefined);
34214
34040
 
34215
34041
  const richCheckboxGroupVariants = cva('rq-rich-checkbox-group');
34216
34042
 
@@ -34274,10 +34100,10 @@ const groupMixin = {
34274
34100
  //
34275
34101
  //
34276
34102
 
34277
- var script$A = {
34103
+ var script$C = {
34278
34104
  name: 'RichCheckboxGroup',
34279
34105
  components: {
34280
- Checkbox: __vue_component__$L
34106
+ Checkbox: __vue_component__$N
34281
34107
  },
34282
34108
  mixins: [groupMixin],
34283
34109
  props: {
@@ -34305,10 +34131,10 @@ var script$A = {
34305
34131
  };
34306
34132
 
34307
34133
  /* script */
34308
- const __vue_script__$A = script$A;
34134
+ const __vue_script__$C = script$C;
34309
34135
 
34310
34136
  /* template */
34311
- var __vue_render__$A = function () {
34137
+ var __vue_render__$C = function () {
34312
34138
  var _vm = this;
34313
34139
  var _h = _vm.$createElement;
34314
34140
  var _c = _vm._self._c || _h;
@@ -34346,27 +34172,27 @@ var __vue_render__$A = function () {
34346
34172
  secondaryLabel: _vm.secondaryLabel
34347
34173
  })], 2)], 1);
34348
34174
  };
34349
- var __vue_staticRenderFns__$A = [];
34350
- __vue_render__$A._withStripped = true;
34175
+ var __vue_staticRenderFns__$C = [];
34176
+ __vue_render__$C._withStripped = true;
34351
34177
 
34352
34178
  /* style */
34353
- const __vue_inject_styles__$A = undefined;
34179
+ const __vue_inject_styles__$C = undefined;
34354
34180
  /* scoped */
34355
- const __vue_scope_id__$A = undefined;
34181
+ const __vue_scope_id__$C = undefined;
34356
34182
  /* module identifier */
34357
- const __vue_module_identifier__$A = undefined;
34183
+ const __vue_module_identifier__$C = undefined;
34358
34184
  /* functional template */
34359
- const __vue_is_functional_template__$A = false;
34185
+ const __vue_is_functional_template__$C = false;
34360
34186
  /* style inject */
34361
34187
 
34362
34188
  /* style inject SSR */
34363
34189
 
34364
34190
  /* style inject shadow dom */
34365
34191
 
34366
- const __vue_component__$A = /*#__PURE__*/normalizeComponent({
34367
- render: __vue_render__$A,
34368
- staticRenderFns: __vue_staticRenderFns__$A
34369
- }, __vue_inject_styles__$A, __vue_script__$A, __vue_scope_id__$A, __vue_is_functional_template__$A, __vue_module_identifier__$A, false, undefined, undefined, undefined);
34192
+ const __vue_component__$C = /*#__PURE__*/normalizeComponent({
34193
+ render: __vue_render__$C,
34194
+ staticRenderFns: __vue_staticRenderFns__$C
34195
+ }, __vue_inject_styles__$C, __vue_script__$C, __vue_scope_id__$C, __vue_is_functional_template__$C, __vue_module_identifier__$C, false, undefined, undefined, undefined);
34370
34196
 
34371
34197
  const checkboxGroupVariants = cva('rq-checkbox-group', {
34372
34198
  variants: {
@@ -34393,10 +34219,10 @@ const checkboxGroupVariants = cva('rq-checkbox-group', {
34393
34219
  //
34394
34220
  //
34395
34221
 
34396
- var script$z = {
34222
+ var script$B = {
34397
34223
  name: 'CheckboxGroup',
34398
34224
  components: {
34399
- Checkbox: __vue_component__$L
34225
+ Checkbox: __vue_component__$N
34400
34226
  },
34401
34227
  mixins: [groupMixin],
34402
34228
  props: {
@@ -34418,10 +34244,10 @@ var script$z = {
34418
34244
  };
34419
34245
 
34420
34246
  /* script */
34421
- const __vue_script__$z = script$z;
34247
+ const __vue_script__$B = script$B;
34422
34248
 
34423
34249
  /* template */
34424
- var __vue_render__$z = function () {
34250
+ var __vue_render__$B = function () {
34425
34251
  var _vm = this;
34426
34252
  var _h = _vm.$createElement;
34427
34253
  var _c = _vm._self._c || _h;
@@ -34450,27 +34276,27 @@ var __vue_render__$z = function () {
34450
34276
  staticClass: "rq-checkbox-group__label"
34451
34277
  }, [_vm._v(_vm._s(_vm.label))])], 1);
34452
34278
  };
34453
- var __vue_staticRenderFns__$z = [];
34454
- __vue_render__$z._withStripped = true;
34279
+ var __vue_staticRenderFns__$B = [];
34280
+ __vue_render__$B._withStripped = true;
34455
34281
 
34456
34282
  /* style */
34457
- const __vue_inject_styles__$z = undefined;
34283
+ const __vue_inject_styles__$B = undefined;
34458
34284
  /* scoped */
34459
- const __vue_scope_id__$z = undefined;
34285
+ const __vue_scope_id__$B = undefined;
34460
34286
  /* module identifier */
34461
- const __vue_module_identifier__$z = undefined;
34287
+ const __vue_module_identifier__$B = undefined;
34462
34288
  /* functional template */
34463
- const __vue_is_functional_template__$z = false;
34289
+ const __vue_is_functional_template__$B = false;
34464
34290
  /* style inject */
34465
34291
 
34466
34292
  /* style inject SSR */
34467
34293
 
34468
34294
  /* style inject shadow dom */
34469
34295
 
34470
- const __vue_component__$z = /*#__PURE__*/normalizeComponent({
34471
- render: __vue_render__$z,
34472
- staticRenderFns: __vue_staticRenderFns__$z
34473
- }, __vue_inject_styles__$z, __vue_script__$z, __vue_scope_id__$z, __vue_is_functional_template__$z, __vue_module_identifier__$z, false, undefined, undefined, undefined);
34296
+ const __vue_component__$B = /*#__PURE__*/normalizeComponent({
34297
+ render: __vue_render__$B,
34298
+ staticRenderFns: __vue_staticRenderFns__$B
34299
+ }, __vue_inject_styles__$B, __vue_script__$B, __vue_scope_id__$B, __vue_is_functional_template__$B, __vue_module_identifier__$B, false, undefined, undefined, undefined);
34474
34300
 
34475
34301
  const switchGroupVariants = cva('rq-switch-group', {
34476
34302
  variants: {
@@ -34502,10 +34328,10 @@ const switchGroupVariants = cva('rq-switch-group', {
34502
34328
  //
34503
34329
  //
34504
34330
 
34505
- var script$y = {
34331
+ var script$A = {
34506
34332
  name: 'SwitchGroup',
34507
34333
  components: {
34508
- RqSwitch: __vue_component__$K
34334
+ RqSwitch: __vue_component__$M
34509
34335
  },
34510
34336
  mixins: [groupMixin],
34511
34337
  props: {
@@ -34533,10 +34359,10 @@ var script$y = {
34533
34359
  };
34534
34360
 
34535
34361
  /* script */
34536
- const __vue_script__$y = script$y;
34362
+ const __vue_script__$A = script$A;
34537
34363
 
34538
34364
  /* template */
34539
- var __vue_render__$y = function () {
34365
+ var __vue_render__$A = function () {
34540
34366
  var _vm = this;
34541
34367
  var _h = _vm.$createElement;
34542
34368
  var _c = _vm._self._c || _h;
@@ -34565,27 +34391,27 @@ var __vue_render__$y = function () {
34565
34391
  staticClass: "rq-switch-group__label"
34566
34392
  }, [_vm._v(_vm._s(_vm.label))])], 1);
34567
34393
  };
34568
- var __vue_staticRenderFns__$y = [];
34569
- __vue_render__$y._withStripped = true;
34394
+ var __vue_staticRenderFns__$A = [];
34395
+ __vue_render__$A._withStripped = true;
34570
34396
 
34571
34397
  /* style */
34572
- const __vue_inject_styles__$y = undefined;
34398
+ const __vue_inject_styles__$A = undefined;
34573
34399
  /* scoped */
34574
- const __vue_scope_id__$y = undefined;
34400
+ const __vue_scope_id__$A = undefined;
34575
34401
  /* module identifier */
34576
- const __vue_module_identifier__$y = undefined;
34402
+ const __vue_module_identifier__$A = undefined;
34577
34403
  /* functional template */
34578
- const __vue_is_functional_template__$y = false;
34404
+ const __vue_is_functional_template__$A = false;
34579
34405
  /* style inject */
34580
34406
 
34581
34407
  /* style inject SSR */
34582
34408
 
34583
34409
  /* style inject shadow dom */
34584
34410
 
34585
- const __vue_component__$y = /*#__PURE__*/normalizeComponent({
34586
- render: __vue_render__$y,
34587
- staticRenderFns: __vue_staticRenderFns__$y
34588
- }, __vue_inject_styles__$y, __vue_script__$y, __vue_scope_id__$y, __vue_is_functional_template__$y, __vue_module_identifier__$y, false, undefined, undefined, undefined);
34411
+ const __vue_component__$A = /*#__PURE__*/normalizeComponent({
34412
+ render: __vue_render__$A,
34413
+ staticRenderFns: __vue_staticRenderFns__$A
34414
+ }, __vue_inject_styles__$A, __vue_script__$A, __vue_scope_id__$A, __vue_is_functional_template__$A, __vue_module_identifier__$A, false, undefined, undefined, undefined);
34589
34415
 
34590
34416
  const richSwitchGroupVariants = cva('rq-rich-switch-group');
34591
34417
 
@@ -34607,10 +34433,10 @@ const richSwitchGroupVariants = cva('rq-rich-switch-group');
34607
34433
  //
34608
34434
  //
34609
34435
 
34610
- var script$x = {
34436
+ var script$z = {
34611
34437
  name: 'RichSwitchGroup',
34612
34438
  components: {
34613
- RqSwitch: __vue_component__$K
34439
+ RqSwitch: __vue_component__$M
34614
34440
  },
34615
34441
  mixins: [groupMixin],
34616
34442
  props: {
@@ -34638,10 +34464,10 @@ var script$x = {
34638
34464
  };
34639
34465
 
34640
34466
  /* script */
34641
- const __vue_script__$x = script$x;
34467
+ const __vue_script__$z = script$z;
34642
34468
 
34643
34469
  /* template */
34644
- var __vue_render__$x = function () {
34470
+ var __vue_render__$z = function () {
34645
34471
  var _vm = this;
34646
34472
  var _h = _vm.$createElement;
34647
34473
  var _c = _vm._self._c || _h;
@@ -34676,27 +34502,27 @@ var __vue_render__$x = function () {
34676
34502
  staticClass: "rq-rich-switch-group__secondary-label"
34677
34503
  }, [_vm._v(_vm._s(_vm.secondaryLabel))]) : _vm._e()])]);
34678
34504
  };
34679
- var __vue_staticRenderFns__$x = [];
34680
- __vue_render__$x._withStripped = true;
34505
+ var __vue_staticRenderFns__$z = [];
34506
+ __vue_render__$z._withStripped = true;
34681
34507
 
34682
34508
  /* style */
34683
- const __vue_inject_styles__$x = undefined;
34509
+ const __vue_inject_styles__$z = undefined;
34684
34510
  /* scoped */
34685
- const __vue_scope_id__$x = undefined;
34511
+ const __vue_scope_id__$z = undefined;
34686
34512
  /* module identifier */
34687
- const __vue_module_identifier__$x = undefined;
34513
+ const __vue_module_identifier__$z = undefined;
34688
34514
  /* functional template */
34689
- const __vue_is_functional_template__$x = false;
34515
+ const __vue_is_functional_template__$z = false;
34690
34516
  /* style inject */
34691
34517
 
34692
34518
  /* style inject SSR */
34693
34519
 
34694
34520
  /* style inject shadow dom */
34695
34521
 
34696
- const __vue_component__$x = /*#__PURE__*/normalizeComponent({
34697
- render: __vue_render__$x,
34698
- staticRenderFns: __vue_staticRenderFns__$x
34699
- }, __vue_inject_styles__$x, __vue_script__$x, __vue_scope_id__$x, __vue_is_functional_template__$x, __vue_module_identifier__$x, false, undefined, undefined, undefined);
34522
+ const __vue_component__$z = /*#__PURE__*/normalizeComponent({
34523
+ render: __vue_render__$z,
34524
+ staticRenderFns: __vue_staticRenderFns__$z
34525
+ }, __vue_inject_styles__$z, __vue_script__$z, __vue_scope_id__$z, __vue_is_functional_template__$z, __vue_module_identifier__$z, false, undefined, undefined, undefined);
34700
34526
 
34701
34527
  //
34702
34528
  //
@@ -34748,7 +34574,7 @@ const __vue_component__$x = /*#__PURE__*/normalizeComponent({
34748
34574
  //
34749
34575
  //
34750
34576
 
34751
- var script$w = {
34577
+ var script$y = {
34752
34578
  name: 'Pagination',
34753
34579
  props: {
34754
34580
  page: {
@@ -34806,10 +34632,10 @@ var script$w = {
34806
34632
  };
34807
34633
 
34808
34634
  /* script */
34809
- const __vue_script__$w = script$w;
34635
+ const __vue_script__$y = script$y;
34810
34636
 
34811
34637
  /* template */
34812
- var __vue_render__$w = function () {
34638
+ var __vue_render__$y = function () {
34813
34639
  var _vm = this;
34814
34640
  var _h = _vm.$createElement;
34815
34641
  var _c = _vm._self._c || _h;
@@ -34873,27 +34699,200 @@ var __vue_render__$w = function () {
34873
34699
  }
34874
34700
  }, [_vm._v("\n " + _vm._s(_vm.nextLabel) + "\n ")])], 2);
34875
34701
  };
34876
- var __vue_staticRenderFns__$w = [];
34877
- __vue_render__$w._withStripped = true;
34702
+ var __vue_staticRenderFns__$y = [];
34703
+ __vue_render__$y._withStripped = true;
34878
34704
 
34879
34705
  /* style */
34880
- const __vue_inject_styles__$w = undefined;
34706
+ const __vue_inject_styles__$y = undefined;
34881
34707
  /* scoped */
34882
- const __vue_scope_id__$w = undefined;
34708
+ const __vue_scope_id__$y = undefined;
34883
34709
  /* module identifier */
34884
- const __vue_module_identifier__$w = undefined;
34710
+ const __vue_module_identifier__$y = undefined;
34885
34711
  /* functional template */
34886
- const __vue_is_functional_template__$w = false;
34712
+ const __vue_is_functional_template__$y = false;
34887
34713
  /* style inject */
34888
34714
 
34889
34715
  /* style inject SSR */
34890
34716
 
34891
34717
  /* style inject shadow dom */
34892
34718
 
34893
- const __vue_component__$w = /*#__PURE__*/normalizeComponent({
34894
- render: __vue_render__$w,
34895
- staticRenderFns: __vue_staticRenderFns__$w
34896
- }, __vue_inject_styles__$w, __vue_script__$w, __vue_scope_id__$w, __vue_is_functional_template__$w, __vue_module_identifier__$w, false, undefined, undefined, undefined);
34719
+ const __vue_component__$y = /*#__PURE__*/normalizeComponent({
34720
+ render: __vue_render__$y,
34721
+ staticRenderFns: __vue_staticRenderFns__$y
34722
+ }, __vue_inject_styles__$y, __vue_script__$y, __vue_scope_id__$y, __vue_is_functional_template__$y, __vue_module_identifier__$y, false, undefined, undefined, undefined);
34723
+
34724
+ // Anchos fijos para que los tabs fantasma no se vean todos iguales.
34725
+ const SKELETON_WIDTH_PATTERN = [70, 90, 60];
34726
+
34727
+ // Proporción del ancho visible que avanza cada click en las flechas.
34728
+ const SCROLL_PAGE_RATIO = 0.8;
34729
+
34730
+ // Aire que queda entre el tab acercado y el borde del viewport.
34731
+ const SCROLL_EDGE_MARGIN = 8;
34732
+
34733
+ // Los anchos de scroll son subpixel: sin tolerancia la flecha queda visible
34734
+ // al final del recorrido por diferencias de decimales.
34735
+ const SCROLL_EPSILON = 1;
34736
+
34737
+ // Comportamiento común de los componentes de tabs (Tabs, LineTabs): v-model,
34738
+ // tabs deshabilitados, iconos, estado loading y scroll horizontal con flechas.
34739
+ // Cada componente pone su propio template, estilos y tamaños; el mixin solo
34740
+ // necesita el bloque BEM (`rq-tabs`, `rq-line-tabs`) para armar las clases
34741
+ // de los tabs y ubicar el tab activo dentro del viewport.
34742
+ //
34743
+ // Skeleton y Tooltip los registra cada componente en su `components`: el
34744
+ // template que los usa es el del componente, no el del mixin.
34745
+ function createTabsMixin(block) {
34746
+ return {
34747
+ props: {
34748
+ value: {
34749
+ type: [String, Number],
34750
+ default: null
34751
+ },
34752
+ // [{ id, label?, icon?, counter?, disabled?, tooltipText?, tooltipSide? }]
34753
+ tabs: {
34754
+ type: Array,
34755
+ default: () => []
34756
+ },
34757
+ // Estado de carga: reemplaza los tabs reales por tabs fantasma (skeleton)
34758
+ loading: {
34759
+ type: Boolean,
34760
+ default: false
34761
+ },
34762
+ loadingTabs: {
34763
+ type: Number,
34764
+ default: 3
34765
+ }
34766
+ },
34767
+ data() {
34768
+ return {
34769
+ canScrollPrev: false,
34770
+ canScrollNext: false
34771
+ };
34772
+ },
34773
+ computed: {
34774
+ stateClasses() {
34775
+ return {
34776
+ [`${block}--loading`]: this.loading,
34777
+ [`${block}--scroll-prev`]: this.canScrollPrev,
34778
+ [`${block}--scroll-next`]: this.canScrollNext
34779
+ };
34780
+ },
34781
+ chevronLeftIcon() {
34782
+ return ChevronLeft;
34783
+ },
34784
+ chevronRightIcon() {
34785
+ return ChevronRight;
34786
+ },
34787
+ processedTabs() {
34788
+ return this.tabs.map(tab => ({
34789
+ ...tab,
34790
+ iconComponent: tab.icon ? LucideIcons[tab.icon] : null
34791
+ }));
34792
+ },
34793
+ skeletonWidths() {
34794
+ return Array.from({
34795
+ length: this.loadingTabs
34796
+ }, (_, i) => SKELETON_WIDTH_PATTERN[i % SKELETON_WIDTH_PATTERN.length]);
34797
+ }
34798
+ },
34799
+ watch: {
34800
+ tabs() {
34801
+ this.$nextTick(this.updateScrollState);
34802
+ },
34803
+ loading() {
34804
+ this.$nextTick(this.updateScrollState);
34805
+ },
34806
+ value() {
34807
+ this.$nextTick(this.scrollActiveIntoView);
34808
+ }
34809
+ },
34810
+ mounted() {
34811
+ this.updateScrollState();
34812
+ this.observeViewportResize();
34813
+ },
34814
+ beforeDestroy() {
34815
+ if (this._resizeObserver) {
34816
+ this._resizeObserver.disconnect();
34817
+ this._resizeObserver = null;
34818
+ }
34819
+ },
34820
+ methods: {
34821
+ tabClasses(tab) {
34822
+ return [`${block}__tab`, {
34823
+ [`${block}__tab--active`]: tab.id === this.value
34824
+ }, {
34825
+ [`${block}__tab--disabled`]: !!tab.disabled
34826
+ }];
34827
+ },
34828
+ selectTab(tab) {
34829
+ if (!tab.disabled) this.$emit('input', tab.id);
34830
+ },
34831
+ // El ancho del viewport depende del contenedor padre, no de props: sin
34832
+ // observarlo las flechas quedan desfasadas al redimensionar.
34833
+ observeViewportResize() {
34834
+ const viewport = this.$refs.viewport;
34835
+ if (!viewport || typeof ResizeObserver === 'undefined') return;
34836
+ this._resizeObserver = new ResizeObserver(() => this.updateScrollState());
34837
+ this._resizeObserver.observe(viewport);
34838
+ },
34839
+ updateScrollState() {
34840
+ const viewport = this.$refs.viewport;
34841
+ if (!viewport || this.loading) {
34842
+ this.canScrollPrev = false;
34843
+ this.canScrollNext = false;
34844
+ return;
34845
+ }
34846
+ const maxScroll = viewport.scrollWidth - viewport.clientWidth;
34847
+ this.canScrollPrev = viewport.scrollLeft > SCROLL_EPSILON;
34848
+ this.canScrollNext = viewport.scrollLeft < maxScroll - SCROLL_EPSILON;
34849
+ },
34850
+ scrollByPage(direction) {
34851
+ const viewport = this.$refs.viewport;
34852
+ if (!viewport) return;
34853
+ const delta = direction * Math.round(viewport.clientWidth * SCROLL_PAGE_RATIO);
34854
+ if (typeof viewport.scrollBy === 'function') {
34855
+ viewport.scrollBy({
34856
+ left: delta,
34857
+ behavior: 'smooth'
34858
+ });
34859
+ } else {
34860
+ viewport.scrollLeft += delta;
34861
+ }
34862
+ },
34863
+ // Al cambiar de tab por fuera del click (teclado, v-model del consumidor)
34864
+ // el activo puede quedar fuera de vista.
34865
+ scrollActiveIntoView() {
34866
+ const viewport = this.$refs.viewport;
34867
+ if (!viewport) return;
34868
+ const activeTab = viewport.querySelector(`.${block}__tab--active`);
34869
+ if (!activeTab) return;
34870
+ const active = activeTab.closest(`.${block}__tooltip`) || activeTab;
34871
+ const start = active.offsetLeft;
34872
+ const end = start + active.offsetWidth;
34873
+ const viewStart = viewport.scrollLeft;
34874
+ const viewEnd = viewStart + viewport.clientWidth;
34875
+ if (start < viewStart) {
34876
+ this.scrollToLeft(start - SCROLL_EDGE_MARGIN);
34877
+ } else if (end > viewEnd) {
34878
+ this.scrollToLeft(end - viewport.clientWidth + SCROLL_EDGE_MARGIN);
34879
+ }
34880
+ },
34881
+ scrollToLeft(left) {
34882
+ const viewport = this.$refs.viewport;
34883
+ const target = Math.max(0, left);
34884
+ if (typeof viewport.scrollTo === 'function') {
34885
+ viewport.scrollTo({
34886
+ left: target,
34887
+ behavior: 'smooth'
34888
+ });
34889
+ } else {
34890
+ viewport.scrollLeft = target;
34891
+ }
34892
+ }
34893
+ }
34894
+ };
34895
+ }
34897
34896
 
34898
34897
  const tabsVariants = cva('rq-tabs', {
34899
34898
  variants: {
@@ -34987,65 +34986,30 @@ const tabsVariants = cva('rq-tabs', {
34987
34986
  //
34988
34987
  //
34989
34988
  //
34989
+ //
34990
+ //
34991
+ //
34992
+ //
34990
34993
 
34991
-
34992
- // Anchos fijos para que los pills fantasma no se vean todos iguales.
34993
- const SKELETON_WIDTH_PATTERN = [70, 90, 60];
34994
-
34995
- // Proporción del ancho visible que avanza cada click en las flechas.
34996
- const SCROLL_PAGE_RATIO = 0.8;
34997
-
34998
- // Aire que queda entre el tab acercado y el borde del viewport.
34999
- const SCROLL_EDGE_MARGIN = 8;
35000
-
35001
- // Los anchos de scroll son subpixel: sin tolerancia la flecha queda visible
35002
- // al final del recorrido por diferencias de decimales.
35003
- const SCROLL_EPSILON = 1;
35004
- var script$v = {
34994
+ var script$x = {
35005
34995
  name: 'Tabs',
35006
34996
  components: {
35007
- Skeleton: __vue_component__$G,
35008
- Tooltip: __vue_component__$B
34997
+ Skeleton: __vue_component__$I,
34998
+ Tooltip: __vue_component__$D
35009
34999
  },
35000
+ mixins: [createTabsMixin('rq-tabs')],
35010
35001
  props: {
35011
- value: {
35012
- type: [String, Number],
35013
- default: null
35014
- },
35015
35002
  size: {
35016
35003
  type: String,
35017
35004
  default: 'regular',
35018
35005
  validator: v => ['regular', 'large', 'small'].includes(v)
35019
- },
35020
- tabs: {
35021
- type: Array,
35022
- default: () => []
35023
- },
35024
- // Estado de carga: reemplaza los tabs reales por pills fantasma (skeleton)
35025
- loading: {
35026
- type: Boolean,
35027
- default: false
35028
- },
35029
- loadingTabs: {
35030
- type: Number,
35031
- default: 3
35032
35006
  }
35033
35007
  },
35034
- data() {
35035
- return {
35036
- canScrollPrev: false,
35037
- canScrollNext: false
35038
- };
35039
- },
35040
35008
  computed: {
35041
35009
  classes() {
35042
35010
  return [tabsVariants({
35043
35011
  size: this.size
35044
- }), {
35045
- 'rq-tabs--loading': this.loading,
35046
- 'rq-tabs--scroll-prev': this.canScrollPrev,
35047
- 'rq-tabs--scroll-next': this.canScrollNext
35048
- }];
35012
+ }), this.stateClasses];
35049
35013
  },
35050
35014
  iconSize() {
35051
35015
  return this.size === 'small' ? 16 : 20;
@@ -35053,120 +35017,664 @@ var script$v = {
35053
35017
  scrollIconSize() {
35054
35018
  return this.size === 'small' ? 12 : 16;
35055
35019
  },
35056
- chevronLeftIcon() {
35057
- return ChevronLeft;
35058
- },
35059
- chevronRightIcon() {
35060
- return ChevronRight;
35061
- },
35062
- processedTabs() {
35063
- return this.tabs.map(tab => ({
35064
- ...tab,
35065
- iconComponent: tab.icon ? LucideIcons[tab.icon] : null
35066
- }));
35067
- },
35068
- skeletonWidths() {
35069
- return Array.from({
35070
- length: this.loadingTabs
35071
- }, (_, i) => SKELETON_WIDTH_PATTERN[i % SKELETON_WIDTH_PATTERN.length]);
35072
- },
35073
35020
  skeletonHeight() {
35074
35021
  return this.size === 'small' ? '12px' : '16px';
35075
35022
  }
35076
- },
35077
- watch: {
35078
- tabs() {
35079
- this.$nextTick(this.updateScrollState);
35023
+ }
35024
+ };
35025
+
35026
+ /* script */
35027
+ const __vue_script__$x = script$x;
35028
+
35029
+ /* template */
35030
+ var __vue_render__$x = function () {
35031
+ var _vm = this;
35032
+ var _h = _vm.$createElement;
35033
+ var _c = _vm._self._c || _h;
35034
+ return _c("div", _vm._g({
35035
+ class: _vm.classes
35036
+ }, _vm.$listeners), [_vm.canScrollPrev ? _c("button", {
35037
+ staticClass: "rq-tabs__scroll-btn rq-tabs__scroll-btn--prev",
35038
+ attrs: {
35039
+ type: "button",
35040
+ "aria-label": "Desplazar tabs a la izquierda"
35080
35041
  },
35081
- loading() {
35082
- this.$nextTick(this.updateScrollState);
35042
+ on: {
35043
+ click: function ($event) {
35044
+ return _vm.scrollByPage(-1);
35045
+ }
35046
+ }
35047
+ }, [_c(_vm.chevronLeftIcon, {
35048
+ tag: "component",
35049
+ attrs: {
35050
+ size: _vm.scrollIconSize
35051
+ }
35052
+ })], 1) : _vm._e(), _vm._v(" "), _c("div", {
35053
+ ref: "viewport",
35054
+ staticClass: "rq-tabs__viewport",
35055
+ on: {
35056
+ scroll: _vm.updateScrollState
35057
+ }
35058
+ }, [_vm.loading ? _vm._l(_vm.skeletonWidths, function (w, i) {
35059
+ return _c("div", {
35060
+ key: "skeleton-" + i,
35061
+ staticClass: "rq-tabs__tab rq-tabs__tab--skeleton"
35062
+ }, [_c("Skeleton", {
35063
+ attrs: {
35064
+ width: w + "px",
35065
+ height: _vm.skeletonHeight
35066
+ }
35067
+ })], 1);
35068
+ }) : _vm._l(_vm.processedTabs, function (tab) {
35069
+ return [tab.tooltipText ? _c("Tooltip", {
35070
+ key: tab.id,
35071
+ staticClass: "rq-tabs__tooltip",
35072
+ attrs: {
35073
+ text: tab.tooltipText,
35074
+ side: tab.tooltipSide || "top"
35075
+ }
35076
+ }, [_c("button", {
35077
+ class: _vm.tabClasses(tab),
35078
+ attrs: {
35079
+ type: "button",
35080
+ disabled: !!tab.disabled
35081
+ },
35082
+ on: {
35083
+ click: function ($event) {
35084
+ return _vm.selectTab(tab);
35085
+ }
35086
+ }
35087
+ }, [tab.iconComponent ? _c(tab.iconComponent, {
35088
+ tag: "component",
35089
+ staticClass: "rq-tabs__tab-icon",
35090
+ attrs: {
35091
+ size: _vm.iconSize
35092
+ }
35093
+ }) : _vm._e(), _vm._v(" "), tab.label ? _c("span", {
35094
+ staticClass: "rq-tabs__tab-label"
35095
+ }, [_vm._v(_vm._s(tab.label))]) : _vm._e(), _vm._v(" "), tab.counter !== undefined ? _c("span", {
35096
+ staticClass: "rq-tabs__tab-counter"
35097
+ }, [_vm._v(_vm._s(tab.counter))]) : _vm._e()], 1)]) : _c("button", {
35098
+ key: tab.id,
35099
+ class: _vm.tabClasses(tab),
35100
+ attrs: {
35101
+ type: "button",
35102
+ disabled: !!tab.disabled
35103
+ },
35104
+ on: {
35105
+ click: function ($event) {
35106
+ return _vm.selectTab(tab);
35107
+ }
35108
+ }
35109
+ }, [tab.iconComponent ? _c(tab.iconComponent, {
35110
+ tag: "component",
35111
+ staticClass: "rq-tabs__tab-icon",
35112
+ attrs: {
35113
+ size: _vm.iconSize
35114
+ }
35115
+ }) : _vm._e(), _vm._v(" "), tab.label ? _c("span", {
35116
+ staticClass: "rq-tabs__tab-label"
35117
+ }, [_vm._v(_vm._s(tab.label))]) : _vm._e(), _vm._v(" "), tab.counter !== undefined ? _c("span", {
35118
+ staticClass: "rq-tabs__tab-counter"
35119
+ }, [_vm._v(_vm._s(tab.counter))]) : _vm._e()], 1)];
35120
+ })], 2), _vm._v(" "), _vm.canScrollNext ? _c("button", {
35121
+ staticClass: "rq-tabs__scroll-btn rq-tabs__scroll-btn--next",
35122
+ attrs: {
35123
+ type: "button",
35124
+ "aria-label": "Desplazar tabs a la derecha"
35125
+ },
35126
+ on: {
35127
+ click: function ($event) {
35128
+ return _vm.scrollByPage(1);
35129
+ }
35130
+ }
35131
+ }, [_c(_vm.chevronRightIcon, {
35132
+ tag: "component",
35133
+ attrs: {
35134
+ size: _vm.scrollIconSize
35135
+ }
35136
+ })], 1) : _vm._e()]);
35137
+ };
35138
+ var __vue_staticRenderFns__$x = [];
35139
+ __vue_render__$x._withStripped = true;
35140
+
35141
+ /* style */
35142
+ const __vue_inject_styles__$x = undefined;
35143
+ /* scoped */
35144
+ const __vue_scope_id__$x = undefined;
35145
+ /* module identifier */
35146
+ const __vue_module_identifier__$x = undefined;
35147
+ /* functional template */
35148
+ const __vue_is_functional_template__$x = false;
35149
+ /* style inject */
35150
+
35151
+ /* style inject SSR */
35152
+
35153
+ /* style inject shadow dom */
35154
+
35155
+ const __vue_component__$x = /*#__PURE__*/normalizeComponent({
35156
+ render: __vue_render__$x,
35157
+ staticRenderFns: __vue_staticRenderFns__$x
35158
+ }, __vue_inject_styles__$x, __vue_script__$x, __vue_scope_id__$x, __vue_is_functional_template__$x, __vue_module_identifier__$x, false, undefined, undefined, undefined);
35159
+
35160
+ const lineTabsVariants = cva('rq-line-tabs', {
35161
+ variants: {
35162
+ size: {
35163
+ regular: 'rq-line-tabs--regular',
35164
+ small: 'rq-line-tabs--small'
35165
+ }
35166
+ },
35167
+ defaultVariants: {
35168
+ size: 'regular'
35169
+ }
35170
+ });
35171
+
35172
+ //
35173
+ //
35174
+ //
35175
+ //
35176
+ //
35177
+ //
35178
+ //
35179
+ //
35180
+ //
35181
+ //
35182
+ //
35183
+ //
35184
+ //
35185
+ //
35186
+ //
35187
+ //
35188
+ //
35189
+ //
35190
+ //
35191
+ //
35192
+ //
35193
+ //
35194
+ //
35195
+ //
35196
+ //
35197
+ //
35198
+ //
35199
+ //
35200
+ //
35201
+ //
35202
+ //
35203
+ //
35204
+ //
35205
+ //
35206
+ //
35207
+ //
35208
+ //
35209
+ //
35210
+ //
35211
+ //
35212
+ //
35213
+ //
35214
+ //
35215
+ //
35216
+ //
35217
+ //
35218
+ //
35219
+ //
35220
+ //
35221
+ //
35222
+ //
35223
+ //
35224
+ //
35225
+ //
35226
+ //
35227
+ //
35228
+ //
35229
+ //
35230
+ //
35231
+ //
35232
+ //
35233
+ //
35234
+ //
35235
+ //
35236
+ //
35237
+ //
35238
+ //
35239
+ //
35240
+ //
35241
+ //
35242
+ //
35243
+ //
35244
+ //
35245
+ //
35246
+ //
35247
+ //
35248
+ //
35249
+ //
35250
+ //
35251
+ //
35252
+ //
35253
+ //
35254
+ //
35255
+
35256
+
35257
+ // Mismo comportamiento y API que Tabs (v-model, tabs[], loading, scroll con
35258
+ // flechas, tooltip por tab); cambia solo el estilo: subnavegación con línea
35259
+ // indicadora bajo el tab activo en vez de segmented control.
35260
+ var script$w = {
35261
+ name: 'LineTabs',
35262
+ components: {
35263
+ Skeleton: __vue_component__$I,
35264
+ Tooltip: __vue_component__$D
35265
+ },
35266
+ mixins: [createTabsMixin('rq-line-tabs')],
35267
+ props: {
35268
+ size: {
35269
+ type: String,
35270
+ default: 'regular',
35271
+ validator: v => ['regular', 'small'].includes(v)
35272
+ }
35273
+ },
35274
+ computed: {
35275
+ classes() {
35276
+ return [lineTabsVariants({
35277
+ size: this.size
35278
+ }), this.stateClasses];
35279
+ },
35280
+ iconSize() {
35281
+ return this.size === 'small' ? 16 : 20;
35282
+ },
35283
+ scrollIconSize() {
35284
+ return this.size === 'small' ? 12 : 16;
35285
+ },
35286
+ skeletonHeight() {
35287
+ return this.size === 'small' ? '12px' : '16px';
35288
+ }
35289
+ }
35290
+ };
35291
+
35292
+ /* script */
35293
+ const __vue_script__$w = script$w;
35294
+
35295
+ /* template */
35296
+ var __vue_render__$w = function () {
35297
+ var _vm = this;
35298
+ var _h = _vm.$createElement;
35299
+ var _c = _vm._self._c || _h;
35300
+ return _c("div", _vm._g({
35301
+ class: _vm.classes
35302
+ }, _vm.$listeners), [_vm.canScrollPrev ? _c("button", {
35303
+ staticClass: "rq-line-tabs__scroll-btn rq-line-tabs__scroll-btn--prev",
35304
+ attrs: {
35305
+ type: "button",
35306
+ "aria-label": "Desplazar tabs a la izquierda"
35307
+ },
35308
+ on: {
35309
+ click: function ($event) {
35310
+ return _vm.scrollByPage(-1);
35311
+ }
35312
+ }
35313
+ }, [_c(_vm.chevronLeftIcon, {
35314
+ tag: "component",
35315
+ attrs: {
35316
+ size: _vm.scrollIconSize
35317
+ }
35318
+ })], 1) : _vm._e(), _vm._v(" "), _c("div", {
35319
+ ref: "viewport",
35320
+ staticClass: "rq-line-tabs__viewport",
35321
+ on: {
35322
+ scroll: _vm.updateScrollState
35323
+ }
35324
+ }, [_vm.loading ? _vm._l(_vm.skeletonWidths, function (w, i) {
35325
+ return _c("div", {
35326
+ key: "skeleton-" + i,
35327
+ staticClass: "rq-line-tabs__tab rq-line-tabs__tab--skeleton"
35328
+ }, [_c("Skeleton", {
35329
+ attrs: {
35330
+ width: w + "px",
35331
+ height: _vm.skeletonHeight
35332
+ }
35333
+ })], 1);
35334
+ }) : _vm._l(_vm.processedTabs, function (tab) {
35335
+ return [tab.tooltipText ? _c("Tooltip", {
35336
+ key: tab.id,
35337
+ staticClass: "rq-line-tabs__tooltip",
35338
+ attrs: {
35339
+ text: tab.tooltipText,
35340
+ side: tab.tooltipSide || "top"
35341
+ }
35342
+ }, [_c("button", {
35343
+ class: _vm.tabClasses(tab),
35344
+ attrs: {
35345
+ type: "button",
35346
+ disabled: !!tab.disabled
35347
+ },
35348
+ on: {
35349
+ click: function ($event) {
35350
+ return _vm.selectTab(tab);
35351
+ }
35352
+ }
35353
+ }, [tab.iconComponent ? _c(tab.iconComponent, {
35354
+ tag: "component",
35355
+ staticClass: "rq-line-tabs__tab-icon",
35356
+ attrs: {
35357
+ size: _vm.iconSize
35358
+ }
35359
+ }) : _vm._e(), _vm._v(" "), tab.label ? _c("span", {
35360
+ staticClass: "rq-line-tabs__tab-label"
35361
+ }, [_vm._v(_vm._s(tab.label))]) : _vm._e(), _vm._v(" "), tab.counter !== undefined ? _c("span", {
35362
+ staticClass: "rq-line-tabs__tab-counter"
35363
+ }, [_vm._v(_vm._s(tab.counter))]) : _vm._e()], 1)]) : _c("button", {
35364
+ key: tab.id,
35365
+ class: _vm.tabClasses(tab),
35366
+ attrs: {
35367
+ type: "button",
35368
+ disabled: !!tab.disabled
35369
+ },
35370
+ on: {
35371
+ click: function ($event) {
35372
+ return _vm.selectTab(tab);
35373
+ }
35374
+ }
35375
+ }, [tab.iconComponent ? _c(tab.iconComponent, {
35376
+ tag: "component",
35377
+ staticClass: "rq-line-tabs__tab-icon",
35378
+ attrs: {
35379
+ size: _vm.iconSize
35380
+ }
35381
+ }) : _vm._e(), _vm._v(" "), tab.label ? _c("span", {
35382
+ staticClass: "rq-line-tabs__tab-label"
35383
+ }, [_vm._v(_vm._s(tab.label))]) : _vm._e(), _vm._v(" "), tab.counter !== undefined ? _c("span", {
35384
+ staticClass: "rq-line-tabs__tab-counter"
35385
+ }, [_vm._v(_vm._s(tab.counter))]) : _vm._e()], 1)];
35386
+ })], 2), _vm._v(" "), _vm.canScrollNext ? _c("button", {
35387
+ staticClass: "rq-line-tabs__scroll-btn rq-line-tabs__scroll-btn--next",
35388
+ attrs: {
35389
+ type: "button",
35390
+ "aria-label": "Desplazar tabs a la derecha"
35391
+ },
35392
+ on: {
35393
+ click: function ($event) {
35394
+ return _vm.scrollByPage(1);
35395
+ }
35396
+ }
35397
+ }, [_c(_vm.chevronRightIcon, {
35398
+ tag: "component",
35399
+ attrs: {
35400
+ size: _vm.scrollIconSize
35401
+ }
35402
+ })], 1) : _vm._e()]);
35403
+ };
35404
+ var __vue_staticRenderFns__$w = [];
35405
+ __vue_render__$w._withStripped = true;
35406
+
35407
+ /* style */
35408
+ const __vue_inject_styles__$w = undefined;
35409
+ /* scoped */
35410
+ const __vue_scope_id__$w = undefined;
35411
+ /* module identifier */
35412
+ const __vue_module_identifier__$w = undefined;
35413
+ /* functional template */
35414
+ const __vue_is_functional_template__$w = false;
35415
+ /* style inject */
35416
+
35417
+ /* style inject SSR */
35418
+
35419
+ /* style inject shadow dom */
35420
+
35421
+ const __vue_component__$w = /*#__PURE__*/normalizeComponent({
35422
+ render: __vue_render__$w,
35423
+ staticRenderFns: __vue_staticRenderFns__$w
35424
+ }, __vue_inject_styles__$w, __vue_script__$w, __vue_scope_id__$w, __vue_is_functional_template__$w, __vue_module_identifier__$w, false, undefined, undefined, undefined);
35425
+
35426
+ const progressVariants = cva('rq-progress', {
35427
+ variants: {
35428
+ variant: {
35429
+ default: 'rq-progress--default',
35430
+ success: 'rq-progress--success',
35431
+ error: 'rq-progress--error'
35432
+ }
35433
+ },
35434
+ defaultVariants: {
35435
+ variant: 'default'
35436
+ }
35437
+ });
35438
+
35439
+ //
35440
+ //
35441
+ //
35442
+ //
35443
+ //
35444
+ //
35445
+ //
35446
+ //
35447
+ //
35448
+ //
35449
+ //
35450
+ //
35451
+ //
35452
+ //
35453
+ //
35454
+ //
35455
+ //
35456
+ //
35457
+ //
35458
+ //
35459
+ //
35460
+ //
35461
+ //
35462
+ //
35463
+ //
35464
+ //
35465
+ //
35466
+ //
35467
+ //
35468
+ //
35469
+ //
35470
+ //
35471
+ //
35472
+ //
35473
+ //
35474
+ //
35475
+ //
35476
+ //
35477
+ //
35478
+ //
35479
+ //
35480
+ //
35481
+ //
35482
+ //
35483
+ //
35484
+ //
35485
+ //
35486
+ //
35487
+ //
35488
+ //
35489
+ //
35490
+ //
35491
+ //
35492
+ //
35493
+ //
35494
+ //
35495
+ //
35496
+ //
35497
+ //
35498
+ //
35499
+ //
35500
+ //
35501
+ //
35502
+ //
35503
+ //
35504
+ //
35505
+ //
35506
+
35507
+ const SEGMENT_COLORS = new Set(['default', 'success', 'error', 'warning']);
35508
+ const TOOLTIP_SIDES = new Set(['top', 'bottom', 'left', 'right']);
35509
+
35510
+ // Margen para decidir si un tramo llega al final de la barra pese a los
35511
+ // decimales de la suma (33.3 + 33.3 + 33.4).
35512
+ const END_EPSILON = 0.001;
35513
+ let uid$4 = 0;
35514
+ function clamp(value) {
35515
+ const number = Number.isFinite(value) ? value : 0;
35516
+ return Math.min(100, Math.max(0, number));
35517
+ }
35518
+ var script$v = {
35519
+ name: 'Progress',
35520
+ components: {
35521
+ Tooltip: __vue_component__$D
35522
+ },
35523
+ props: {
35524
+ value: {
35525
+ type: Number,
35526
+ default: 0
35527
+ },
35528
+ variant: {
35529
+ type: String,
35530
+ default: 'default',
35531
+ validator: v => ['default', 'success', 'error'].includes(v)
35532
+ },
35533
+ label: {
35534
+ type: String,
35535
+ default: null
35536
+ },
35537
+ showValue: {
35538
+ type: Boolean,
35539
+ default: true
35540
+ },
35541
+ // [{ value, color?, tooltipText?, tooltipSide?, ariaLabel? }]
35542
+ segments: {
35543
+ type: Array,
35544
+ default: () => []
35083
35545
  },
35084
- value() {
35085
- this.$nextTick(this.scrollActiveIntoView);
35546
+ // Con segments, cada tramo con valor > 0 se dibuja como <button> y emite
35547
+ // segment-click. Sin segments no tiene efecto.
35548
+ interactive: {
35549
+ type: Boolean,
35550
+ default: false
35086
35551
  }
35087
35552
  },
35088
- mounted() {
35089
- this.updateScrollState();
35090
- this.observeViewportResize();
35553
+ data() {
35554
+ uid$4 += 1;
35555
+ return {
35556
+ labelId: `rq-progress-label-${uid$4}`
35557
+ };
35091
35558
  },
35092
- beforeDestroy() {
35093
- if (this._resizeObserver) {
35094
- this._resizeObserver.disconnect();
35095
- this._resizeObserver = null;
35559
+ computed: {
35560
+ // Algún tramo recibe foco: es interactivo o tiene tooltip. Si ninguno lo
35561
+ // recibe, la barra se dibuja exactamente como siempre (aria-hidden).
35562
+ focusable() {
35563
+ return this.normalizedSegments.some(segment => segment.focusable);
35564
+ },
35565
+ classes() {
35566
+ const base = progressVariants({
35567
+ variant: this.variant
35568
+ });
35569
+ return this.focusable ? `${base} rq-progress--focusable` : base;
35570
+ },
35571
+ normalizedSegments() {
35572
+ let used = 0;
35573
+ const segments = this.segments.map((segment, index) => {
35574
+ const width = Math.min(clamp(segment.value), 100 - used);
35575
+ const start = used;
35576
+ used += width;
35577
+ const isVariant = !segment.color || SEGMENT_COLORS.has(segment.color);
35578
+ const colorClass = `rq-progress__segment--${isVariant ? segment.color || 'default' : 'custom'}`;
35579
+ const background = isVariant ? {} : {
35580
+ background: segment.color
35581
+ };
35582
+ const visible = width > 0;
35583
+ const tooltipText = visible && segment.tooltipText ? String(segment.tooltipText) : null;
35584
+ const interactive = visible && this.interactive;
35585
+ return {
35586
+ index,
35587
+ width,
35588
+ start,
35589
+ visible,
35590
+ interactive,
35591
+ tooltipText,
35592
+ tooltipSide: TOOLTIP_SIDES.has(segment.tooltipSide) ? segment.tooltipSide : 'top',
35593
+ ariaLabel: segment.ariaLabel || tooltipText || `Tramo ${index + 1}: ${Math.round(width)}%`,
35594
+ focusable: interactive || !!tooltipText,
35595
+ colorClass,
35596
+ background
35597
+ };
35598
+ });
35599
+ const context = {
35600
+ anyFocusable: segments.some(segment => segment.focusable),
35601
+ firstVisible: segments.find(segment => segment.visible)
35602
+ };
35603
+ return segments.map(segment => this.decorate(segment, context));
35604
+ },
35605
+ percent() {
35606
+ if (this.segments.length) {
35607
+ return Math.round(this.normalizedSegments.reduce((total, segment) => total + segment.width, 0));
35608
+ }
35609
+ return Math.round(clamp(this.value));
35096
35610
  }
35097
35611
  },
35098
35612
  methods: {
35099
- tabClasses(tab) {
35100
- return ['rq-tabs__tab', {
35101
- 'rq-tabs__tab--active': tab.id === this.value
35102
- }, {
35103
- 'rq-tabs__tab--disabled': !!tab.disabled
35104
- }];
35105
- },
35106
- selectTab(tab) {
35107
- if (!tab.disabled) this.$emit('input', tab.id);
35108
- },
35109
- // El ancho del viewport depende del contenedor padre, no de props: sin
35110
- // observarlo las flechas quedan desfasadas al redimensionar.
35111
- observeViewportResize() {
35112
- const viewport = this.$refs.viewport;
35113
- if (!viewport || typeof ResizeObserver === 'undefined') return;
35114
- this._resizeObserver = new ResizeObserver(() => this.updateScrollState());
35115
- this._resizeObserver.observe(viewport);
35116
- },
35117
- updateScrollState() {
35118
- const viewport = this.$refs.viewport;
35119
- if (!viewport || this.loading) {
35120
- this.canScrollPrev = false;
35121
- this.canScrollNext = false;
35122
- return;
35123
- }
35124
- const maxScroll = viewport.scrollWidth - viewport.clientWidth;
35125
- this.canScrollPrev = viewport.scrollLeft > SCROLL_EPSILON;
35126
- this.canScrollNext = viewport.scrollLeft < maxScroll - SCROLL_EPSILON;
35127
- },
35128
- scrollByPage(direction) {
35129
- const viewport = this.$refs.viewport;
35130
- if (!viewport) return;
35131
- const delta = direction * Math.round(viewport.clientWidth * SCROLL_PAGE_RATIO);
35132
- if (typeof viewport.scrollBy === 'function') {
35133
- viewport.scrollBy({
35134
- left: delta,
35135
- behavior: 'smooth'
35136
- });
35137
- } else {
35138
- viewport.scrollLeft += delta;
35613
+ // Clases, estilos y atributos de cada tramo. Sin tramos con foco quedan
35614
+ // las mismas clases y estilos de siempre.
35615
+ decorate(segment, {
35616
+ anyFocusable,
35617
+ firstVisible
35618
+ }) {
35619
+ const classes = ['rq-progress__segment', segment.colorClass];
35620
+ const style = {
35621
+ width: `${segment.width}%`,
35622
+ ...segment.background
35623
+ };
35624
+ if (!anyFocusable) return {
35625
+ ...segment,
35626
+ tag: 'span',
35627
+ attrs: {},
35628
+ classes,
35629
+ style
35630
+ };
35631
+
35632
+ // Con tramos con foco la barra deja de recortar (overflow visible) para
35633
+ // que se vean el anillo de foco y el área táctil; las puntas redondeadas
35634
+ // pasan a los tramos que tocan el inicio y el final de la barra.
35635
+ if (segment.visible && firstVisible === segment) classes.push('rq-progress__segment--first');
35636
+ if (segment.visible && segment.start + segment.width >= 100 - END_EPSILON) {
35637
+ classes.push('rq-progress__segment--last');
35139
35638
  }
35140
- },
35141
- // Al cambiar de tab por fuera del click (teclado, v-model del consumidor)
35142
- // el activo puede quedar fuera de vista.
35143
- scrollActiveIntoView() {
35144
- const viewport = this.$refs.viewport;
35145
- if (!viewport) return;
35146
- const activeTab = viewport.querySelector('.rq-tabs__tab--active');
35147
- if (!activeTab) return;
35148
- const active = activeTab.closest('.rq-tabs__tooltip') || activeTab;
35149
- const start = active.offsetLeft;
35150
- const end = start + active.offsetWidth;
35151
- const viewStart = viewport.scrollLeft;
35152
- const viewEnd = viewStart + viewport.clientWidth;
35153
- if (start < viewStart) {
35154
- this.scrollToLeft(start - SCROLL_EDGE_MARGIN);
35155
- } else if (end > viewEnd) {
35156
- this.scrollToLeft(end - viewport.clientWidth + SCROLL_EDGE_MARGIN);
35639
+ if (segment.focusable) classes.push('rq-progress__segment--focusable');
35640
+ let tag = 'span';
35641
+ let attrs = {};
35642
+ if (segment.interactive) {
35643
+ tag = 'button';
35644
+ attrs = {
35645
+ type: 'button',
35646
+ 'aria-label': segment.ariaLabel
35647
+ };
35648
+ classes.push('rq-progress__segment--interactive');
35649
+ } else if (segment.tooltipText) {
35650
+ // Solo tooltip: foco con teclado para abrirlo, como el Avatar de
35651
+ // AvatarGroup.
35652
+ attrs = {
35653
+ tabindex: '0',
35654
+ role: 'img',
35655
+ 'aria-label': segment.ariaLabel
35656
+ };
35157
35657
  }
35658
+ return {
35659
+ ...segment,
35660
+ tag,
35661
+ attrs,
35662
+ classes,
35663
+ style,
35664
+ // Dentro del Tooltip el ancho lo lleva el wrapper.
35665
+ innerStyle: {
35666
+ width: '100%',
35667
+ ...segment.background
35668
+ }
35669
+ };
35158
35670
  },
35159
- scrollToLeft(left) {
35160
- const viewport = this.$refs.viewport;
35161
- const target = Math.max(0, left);
35162
- if (typeof viewport.scrollTo === 'function') {
35163
- viewport.scrollTo({
35164
- left: target,
35165
- behavior: 'smooth'
35166
- });
35167
- } else {
35168
- viewport.scrollLeft = target;
35169
- }
35671
+ onSegmentClick(index) {
35672
+ const segment = this.normalizedSegments[index];
35673
+ if (!segment || !segment.interactive) return;
35674
+ this.$emit('segment-click', {
35675
+ index,
35676
+ segment: this.segments[index]
35677
+ });
35170
35678
  }
35171
35679
  }
35172
35680
  };
@@ -35180,108 +35688,79 @@ var __vue_render__$v = function () {
35180
35688
  var _h = _vm.$createElement;
35181
35689
  var _c = _vm._self._c || _h;
35182
35690
  return _c("div", _vm._g({
35183
- class: _vm.classes
35184
- }, _vm.$listeners), [_vm.canScrollPrev ? _c("button", {
35185
- staticClass: "rq-tabs__scroll-btn rq-tabs__scroll-btn--prev",
35691
+ staticClass: "rq-progress-field"
35692
+ }, _vm.$listeners), [_vm.label ? _c("div", {
35693
+ staticClass: "rq-progress-field__header"
35694
+ }, [_c("span", {
35695
+ staticClass: "rq-progress-field__label",
35186
35696
  attrs: {
35187
- type: "button",
35188
- "aria-label": "Desplazar tabs a la izquierda"
35189
- },
35190
- on: {
35191
- click: function ($event) {
35192
- return _vm.scrollByPage(-1);
35193
- }
35697
+ id: _vm.labelId
35194
35698
  }
35195
- }, [_c(_vm.chevronLeftIcon, {
35196
- tag: "component",
35699
+ }, [_vm._v(_vm._s(_vm.label))]), _vm._v(" "), _vm.showValue ? _c("span", {
35700
+ staticClass: "rq-progress-field__value"
35701
+ }, [_vm._v(_vm._s(_vm.percent) + "%")]) : _vm._e()]) : _vm._e(), _vm._v(" "), _c("progress", {
35702
+ staticClass: "rq-progress-field__native",
35197
35703
  attrs: {
35198
- size: _vm.scrollIconSize
35704
+ max: "100",
35705
+ "aria-labelledby": _vm.label ? _vm.labelId : null
35706
+ },
35707
+ domProps: {
35708
+ value: _vm.percent
35199
35709
  }
35200
- })], 1) : _vm._e(), _vm._v(" "), _c("div", {
35201
- ref: "viewport",
35202
- staticClass: "rq-tabs__viewport",
35203
- on: {
35204
- scroll: _vm.updateScrollState
35710
+ }, [_vm._v("\n " + _vm._s(_vm.percent) + "%\n ")]), _vm._v(" "), _vm.focusable ? _c("div", {
35711
+ class: _vm.classes,
35712
+ attrs: {
35713
+ role: "group",
35714
+ "aria-labelledby": _vm.label ? _vm.labelId : null
35205
35715
  }
35206
- }, [_vm.loading ? _vm._l(_vm.skeletonWidths, function (w, i) {
35207
- return _c("div", {
35208
- key: "skeleton-" + i,
35209
- staticClass: "rq-tabs__tab rq-tabs__tab--skeleton"
35210
- }, [_c("Skeleton", {
35211
- attrs: {
35212
- width: w + "px",
35213
- height: _vm.skeletonHeight
35214
- }
35215
- })], 1);
35216
- }) : _vm._l(_vm.processedTabs, function (tab) {
35217
- return [tab.tooltipText ? _c("Tooltip", {
35218
- key: tab.id,
35219
- staticClass: "rq-tabs__tooltip",
35716
+ }, [_vm._l(_vm.normalizedSegments, function (segment, index) {
35717
+ return [segment.tooltipText ? _c("Tooltip", {
35718
+ key: index,
35719
+ staticClass: "rq-progress__segment-tooltip",
35720
+ style: {
35721
+ width: segment.width + "%"
35722
+ },
35220
35723
  attrs: {
35221
- text: tab.tooltipText,
35222
- side: tab.tooltipSide || "top"
35724
+ text: segment.tooltipText,
35725
+ side: segment.tooltipSide
35223
35726
  }
35224
- }, [_c("button", {
35225
- class: _vm.tabClasses(tab),
35226
- attrs: {
35227
- type: "button",
35228
- disabled: !!tab.disabled
35229
- },
35727
+ }, [_c(segment.tag, _vm._b({
35728
+ tag: "component",
35729
+ class: segment.classes,
35730
+ style: segment.innerStyle,
35230
35731
  on: {
35231
35732
  click: function ($event) {
35232
- return _vm.selectTab(tab);
35733
+ return _vm.onSegmentClick(index);
35233
35734
  }
35234
35735
  }
35235
- }, [tab.iconComponent ? _c(tab.iconComponent, {
35736
+ }, "component", segment.attrs, false))], 1) : _c(segment.tag, _vm._b({
35737
+ key: index,
35236
35738
  tag: "component",
35237
- staticClass: "rq-tabs__tab-icon",
35238
- attrs: {
35239
- size: _vm.iconSize
35240
- }
35241
- }) : _vm._e(), _vm._v(" "), tab.label ? _c("span", {
35242
- staticClass: "rq-tabs__tab-label"
35243
- }, [_vm._v(_vm._s(tab.label))]) : _vm._e(), _vm._v(" "), tab.counter !== undefined ? _c("span", {
35244
- staticClass: "rq-tabs__tab-counter"
35245
- }, [_vm._v(_vm._s(tab.counter))]) : _vm._e()], 1)]) : _c("button", {
35246
- key: tab.id,
35247
- class: _vm.tabClasses(tab),
35248
- attrs: {
35249
- type: "button",
35250
- disabled: !!tab.disabled
35251
- },
35739
+ class: segment.classes,
35740
+ style: segment.style,
35252
35741
  on: {
35253
35742
  click: function ($event) {
35254
- return _vm.selectTab(tab);
35743
+ return _vm.onSegmentClick(index);
35255
35744
  }
35256
35745
  }
35257
- }, [tab.iconComponent ? _c(tab.iconComponent, {
35258
- tag: "component",
35259
- staticClass: "rq-tabs__tab-icon",
35260
- attrs: {
35261
- size: _vm.iconSize
35262
- }
35263
- }) : _vm._e(), _vm._v(" "), tab.label ? _c("span", {
35264
- staticClass: "rq-tabs__tab-label"
35265
- }, [_vm._v(_vm._s(tab.label))]) : _vm._e(), _vm._v(" "), tab.counter !== undefined ? _c("span", {
35266
- staticClass: "rq-tabs__tab-counter"
35267
- }, [_vm._v(_vm._s(tab.counter))]) : _vm._e()], 1)];
35268
- })], 2), _vm._v(" "), _vm.canScrollNext ? _c("button", {
35269
- staticClass: "rq-tabs__scroll-btn rq-tabs__scroll-btn--next",
35746
+ }, "component", segment.attrs, false))];
35747
+ })], 2) : _c("div", {
35748
+ class: _vm.classes,
35270
35749
  attrs: {
35271
- type: "button",
35272
- "aria-label": "Desplazar tabs a la derecha"
35273
- },
35274
- on: {
35275
- click: function ($event) {
35276
- return _vm.scrollByPage(1);
35277
- }
35750
+ "aria-hidden": "true"
35278
35751
  }
35279
- }, [_c(_vm.chevronRightIcon, {
35280
- tag: "component",
35281
- attrs: {
35282
- size: _vm.scrollIconSize
35752
+ }, [_vm.segments.length ? _vm._l(_vm.normalizedSegments, function (segment, index) {
35753
+ return _c("span", {
35754
+ key: index,
35755
+ class: segment.classes,
35756
+ style: segment.style
35757
+ });
35758
+ }) : _c("span", {
35759
+ staticClass: "rq-progress__fill",
35760
+ style: {
35761
+ width: _vm.percent + "%"
35283
35762
  }
35284
- })], 1) : _vm._e()]);
35763
+ })], 2)]);
35285
35764
  };
35286
35765
  var __vue_staticRenderFns__$v = [];
35287
35766
  __vue_render__$v._withStripped = true;
@@ -35914,8 +36393,8 @@ const searchInputVariants = cva('rq-search-input', {
35914
36393
  var script$s = {
35915
36394
  name: 'SearchInput',
35916
36395
  components: {
35917
- Input: __vue_component__$R,
35918
- Button: __vue_component__$Q,
36396
+ Input: __vue_component__$S,
36397
+ Button: __vue_component__$R,
35919
36398
  X
35920
36399
  },
35921
36400
  props: {
@@ -36167,7 +36646,7 @@ const selectionBarVariants = cva('rq-selection-bar', {
36167
36646
  var script$q = {
36168
36647
  name: 'SelectionBar',
36169
36648
  components: {
36170
- Button: __vue_component__$Q
36649
+ Button: __vue_component__$R
36171
36650
  },
36172
36651
  props: {
36173
36652
  count: {
@@ -36327,7 +36806,7 @@ const DEFAULT_ICONS$1 = {
36327
36806
  var script$p = {
36328
36807
  name: 'Toast',
36329
36808
  components: {
36330
- Icon: __vue_component__$H
36809
+ Icon: __vue_component__$J
36331
36810
  },
36332
36811
  props: {
36333
36812
  variant: {
@@ -36440,7 +36919,7 @@ const riskBadgesVariants = cva('rq-risk-badges', {
36440
36919
  var script$o = {
36441
36920
  name: 'RiskBadges',
36442
36921
  components: {
36443
- Badge: __vue_component__$I
36922
+ Badge: __vue_component__$K
36444
36923
  },
36445
36924
  inheritAttrs: false,
36446
36925
  props: {
@@ -36902,7 +37381,7 @@ const DEFAULT_ICONS = {
36902
37381
  var script$l = {
36903
37382
  name: 'InfoAlert',
36904
37383
  components: {
36905
- Icon: __vue_component__$H
37384
+ Icon: __vue_component__$J
36906
37385
  },
36907
37386
  props: {
36908
37387
  variant: {
@@ -37023,8 +37502,8 @@ const ICON_SIZE_BY_BUTTON_SIZE = {
37023
37502
  var script$k = {
37024
37503
  name: 'IconButton',
37025
37504
  components: {
37026
- Button: __vue_component__$Q,
37027
- Icon: __vue_component__$H
37505
+ Button: __vue_component__$R,
37506
+ Icon: __vue_component__$J
37028
37507
  },
37029
37508
  props: {
37030
37509
  // Ligadura Material Symbols del icono (ej: "add", "delete")
@@ -37182,7 +37661,7 @@ const formFieldVariants = cva('rq-form-field', {
37182
37661
  var script$j = {
37183
37662
  name: 'FormField',
37184
37663
  components: {
37185
- Icon: __vue_component__$H
37664
+ Icon: __vue_component__$J
37186
37665
  },
37187
37666
  props: {
37188
37667
  label: {
@@ -37616,8 +38095,8 @@ const avatarGroupVariants = cva('rq-avatar-group', {
37616
38095
  var script$g = {
37617
38096
  name: 'AvatarGroup',
37618
38097
  components: {
37619
- Avatar: __vue_component__$C,
37620
- Tooltip: __vue_component__$B
38098
+ Avatar: __vue_component__$E,
38099
+ Tooltip: __vue_component__$D
37621
38100
  },
37622
38101
  props: {
37623
38102
  items: {
@@ -37893,7 +38372,7 @@ let uid$2 = 0;
37893
38372
  var script$e = {
37894
38373
  name: 'FileInput',
37895
38374
  components: {
37896
- Button: __vue_component__$Q
38375
+ Button: __vue_component__$R
37897
38376
  },
37898
38377
  props: {
37899
38378
  label: {
@@ -38088,7 +38567,7 @@ var script$d = {
38088
38567
  name: 'FileList',
38089
38568
  components: {
38090
38569
  Card: __vue_component__$i,
38091
- Icon: __vue_component__$H,
38570
+ Icon: __vue_component__$J,
38092
38571
  IconButton: __vue_component__$k
38093
38572
  },
38094
38573
  props: {
@@ -38245,7 +38724,7 @@ const kpiVariants = cva('rq-kpi', {
38245
38724
  var script$c = {
38246
38725
  name: 'Kpi',
38247
38726
  components: {
38248
- Icon: __vue_component__$H
38727
+ Icon: __vue_component__$J
38249
38728
  },
38250
38729
  props: {
38251
38730
  label: {
@@ -38528,7 +39007,7 @@ var script$a = {
38528
39007
  name: 'RichRadioGroup',
38529
39008
  inheritAttrs: false,
38530
39009
  components: {
38531
- Radio: __vue_component__$D
39010
+ Radio: __vue_component__$F
38532
39011
  },
38533
39012
  model: {
38534
39013
  prop: 'modelValue',
@@ -38764,8 +39243,8 @@ const entryType = item => {
38764
39243
  var script$9 = {
38765
39244
  name: 'Combobox',
38766
39245
  components: {
38767
- Icon: __vue_component__$H,
38768
- Checkbox: __vue_component__$L,
39246
+ Icon: __vue_component__$J,
39247
+ Checkbox: __vue_component__$N,
38769
39248
  Dropdown: __vue_component__$u
38770
39249
  },
38771
39250
  inheritAttrs: false,
@@ -39226,7 +39705,7 @@ const __vue_component__$9 = /*#__PURE__*/normalizeComponent({
39226
39705
  var script$8 = {
39227
39706
  name: 'DropdownItem',
39228
39707
  components: {
39229
- Icon: __vue_component__$H
39708
+ Icon: __vue_component__$J
39230
39709
  },
39231
39710
  inject: {
39232
39711
  menu: {
@@ -42756,6 +43235,45 @@ function useTable(props, emit) {
42756
43235
  }
42757
43236
 
42758
43237
  // --- Handlers de selección de filas ---
43238
+ const rowKey = row => String(row[props.rowId]);
43239
+
43240
+ // Selección controlada (opcional): si el padre pasa selectedRowIds, ese
43241
+ // array inicializa y re-sincroniza la selección interna; los cambios del
43242
+ // usuario se avisan con update:selected-row-ids (patrón .sync). Con null
43243
+ // (default) la selección es interna, como siempre. deep: el padre puede
43244
+ // reemplazar el array o mutarlo (push/splice).
43245
+ const isSelectionControlled = () => props.selectedRowIds != null;
43246
+ watch(() => props.selectedRowIds, ids => {
43247
+ if (ids == null) return;
43248
+ const sel = {};
43249
+ ids.forEach(id => {
43250
+ sel[String(id)] = true;
43251
+ });
43252
+ rowSelection.value = sel;
43253
+ }, {
43254
+ immediate: true,
43255
+ deep: true
43256
+ });
43257
+
43258
+ // Ids seleccionados con su tipo original (no el String interno). En modo
43259
+ // controlado conserva los ids que no están en las filas actuales (p. ej.
43260
+ // otra página de una tabla paginada en el servidor): la tabla solo decide
43261
+ // sobre las filas que muestra.
43262
+ function selectedIdsFrom(sel) {
43263
+ const ids = props.rows.filter(row => sel[rowKey(row)]).map(row => row[props.rowId]);
43264
+ if (!isSelectionControlled()) return ids;
43265
+ const visible = new Set(props.rows.map(rowKey));
43266
+ const outside = props.selectedRowIds.filter(id => !visible.has(String(id)) && sel[String(id)]);
43267
+ return [...outside, ...ids];
43268
+ }
43269
+
43270
+ // update:selected-row-ids va ANTES que select: select sigue siendo el
43271
+ // último evento de cada cambio, como antes de existir la selección controlada.
43272
+ function commitSelection(sel, selectedRows) {
43273
+ rowSelection.value = sel;
43274
+ emit('update:selected-row-ids', selectedIdsFrom(sel));
43275
+ emit('select', selectedRows);
43276
+ }
42759
43277
  const allSelected = computed(() => {
42760
43278
  if (!props.rows.length) return false;
42761
43279
  return props.rows.every(row => rowSelection.value[String(row[props.rowId])]);
@@ -42770,25 +43288,29 @@ function useTable(props, emit) {
42770
43288
  } else {
42771
43289
  sel[rowId] = true;
42772
43290
  }
42773
- rowSelection.value = sel;
42774
- emit('select', props.rows.filter(row => sel[String(row[props.rowId])]));
43291
+ commitSelection(sel, props.rows.filter(row => sel[rowKey(row)]));
42775
43292
  }
43293
+
43294
+ // Seleccionar/deseleccionar todo actúa sobre las filas visibles. En modo
43295
+ // controlado se conserva la selección de las filas que no están en `rows`.
42776
43296
  function toggleSelectAll() {
43297
+ const sel = isSelectionControlled() ? {
43298
+ ...rowSelection.value
43299
+ } : {};
42777
43300
  if (allSelected.value) {
42778
- rowSelection.value = {};
42779
- emit('select', []);
43301
+ props.rows.forEach(row => {
43302
+ delete sel[rowKey(row)];
43303
+ });
43304
+ commitSelection(sel, []);
42780
43305
  } else {
42781
- const sel = {};
42782
43306
  props.rows.forEach(row => {
42783
- sel[String(row[props.rowId])] = true;
43307
+ sel[rowKey(row)] = true;
42784
43308
  });
42785
- rowSelection.value = sel;
42786
- emit('select', [...props.rows]);
43309
+ commitSelection(sel, [...props.rows]);
42787
43310
  }
42788
43311
  }
42789
43312
  function clearSelection() {
42790
- rowSelection.value = {};
42791
- emit('select', []);
43313
+ commitSelection({}, []);
42792
43314
  }
42793
43315
 
42794
43316
  // --- Handlers de chevron ---
@@ -43061,14 +43583,29 @@ function useTable(props, emit) {
43061
43583
  //
43062
43584
  //
43063
43585
  //
43586
+ //
43587
+ //
43588
+ //
43589
+ //
43590
+ //
43591
+ //
43592
+ //
43593
+ //
43594
+ //
43595
+
43064
43596
 
43597
+ // Controles que se quedan con su propio click/teclado dentro de una fila
43598
+ // operable (rowsFocusable). [tabindex] cubre la celda de expandir y cualquier
43599
+ // widget propio del consumidor; los tabindex="-1" (p. ej. el botón interno
43600
+ // del chevron de expandir) también, porque siguen siendo parte de un control.
43601
+ const ROW_CONTROL_SELECTOR = ['a[href]', 'button', 'input', 'select', 'textarea', 'label', 'summary', '[contenteditable=""]', '[contenteditable="true"]', '[tabindex]', '[role="button"]', '[role="link"]', '[role="checkbox"]', '[role="switch"]', '[role="menuitem"]', '[role="option"]', '[role="tab"]'].join(',');
43065
43602
  var script$5 = {
43066
43603
  name: 'Table',
43067
43604
  components: {
43068
- Checkbox: __vue_component__$L,
43069
- Icon: __vue_component__$H,
43070
- Skeleton: __vue_component__$G,
43071
- Tooltip: __vue_component__$B
43605
+ Checkbox: __vue_component__$N,
43606
+ Icon: __vue_component__$J,
43607
+ Skeleton: __vue_component__$I,
43608
+ Tooltip: __vue_component__$D
43072
43609
  },
43073
43610
  props: {
43074
43611
  rows: {
@@ -43101,10 +43638,36 @@ var script$5 = {
43101
43638
  type: Boolean,
43102
43639
  default: false
43103
43640
  },
43641
+ // Selección controlada (opcional): ids de las filas seleccionadas. Con
43642
+ // null (default) la selección es interna; con un array, lo inicializa y
43643
+ // re-sincroniza, y cada cambio emite update:selected-row-ids → usar
43644
+ // :selected-row-ids.sync. Puede incluir ids que no están en `rows` (otras
43645
+ // páginas): se conservan al seleccionar/deseleccionar las visibles.
43646
+ selectedRowIds: {
43647
+ type: Array,
43648
+ default: null
43649
+ },
43104
43650
  rowId: {
43105
43651
  type: String,
43106
43652
  default: 'id'
43107
43653
  },
43654
+ // Filas operables con teclado, para cuando la fila es una acción (abre un
43655
+ // detalle, filtra otra vista): cada fila entra al orden de tabulación y
43656
+ // Enter / Espacio emiten row-click, igual que el click. Los clicks y
43657
+ // teclas que nacen en un control propio de la fila (checkbox, botón o
43658
+ // enlace en una celda, columna de expandir) no disparan row-click.
43659
+ rowsFocusable: {
43660
+ type: Boolean,
43661
+ default: false
43662
+ },
43663
+ // Ids de las filas marcadas como activas (p. ej. la fila elegida como
43664
+ // filtro). Se marcan con aria-current="true" y la clase
43665
+ // rq-table__tr--active. Es independiente de la selección con checkbox
43666
+ // (selectedRowIds). null (default) = ninguna.
43667
+ activeRowIds: {
43668
+ type: Array,
43669
+ default: null
43670
+ },
43108
43671
  maxHeight: {
43109
43672
  type: Number,
43110
43673
  default: 460
@@ -43207,6 +43770,11 @@ var script$5 = {
43207
43770
  subtitle: this.emptyState?.subtitle || ''
43208
43771
  };
43209
43772
  },
43773
+ // Ids activos normalizados a string, igual que getRowId de useTable, para
43774
+ // que un id numérico encuentre su fila aunque venga como string o número
43775
+ activeRowIdSet() {
43776
+ return this.activeRowIds ? new Set(this.activeRowIds.map(String)) : null;
43777
+ },
43210
43778
  // Offset sticky de la columna de selección: se corre a la derecha
43211
43779
  // del ancho de la columna de expandir, cuando ambas están activas
43212
43780
  selectColOffset() {
@@ -43214,6 +43782,40 @@ var script$5 = {
43214
43782
  }
43215
43783
  },
43216
43784
  methods: {
43785
+ isRowActive(row) {
43786
+ return !!this.activeRowIdSet && this.activeRowIdSet.has(row.id);
43787
+ },
43788
+ // Sin rowsFocusable se emite como siempre (el click que sube desde un
43789
+ // botón de una celda también dispara row-click). Con rowsFocusable la
43790
+ // fila es una acción y sus controles internos son otras acciones: un
43791
+ // Enter sobre un botón de la celda genera su propio click nativo, y si
43792
+ // ese click subiera a la fila dispararía las dos cosas.
43793
+ onRowClick(row, event) {
43794
+ if (this.rowsFocusable && this.isFromRowControl(event)) return;
43795
+ this.$emit('row-click', row.original);
43796
+ },
43797
+ // Enter y Espacio sobre la fila misma (no sobre un control de adentro,
43798
+ // que se queda con su teclado). La tecla mantenida no repite la acción
43799
+ // y Espacio no scrollea la página. Con modificadores no hace nada, para
43800
+ // no pisar atajos del navegador o del lector de pantalla.
43801
+ onRowKeydown(row, event) {
43802
+ if (!this.rowsFocusable || event.target !== event.currentTarget) return;
43803
+ if (event.key !== 'Enter' && event.key !== ' ') return;
43804
+ if (event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) return;
43805
+ event.preventDefault();
43806
+ if (event.repeat) return;
43807
+ this.$emit('row-click', row.original);
43808
+ },
43809
+ // ¿El evento nace en un control interactivo propio dentro de la fila?
43810
+ // Se busca desde el target hacia arriba y solo cuenta si el control está
43811
+ // dentro de la fila (closest podría encontrar uno que la envuelve).
43812
+ isFromRowControl(event) {
43813
+ const rowEl = event.currentTarget;
43814
+ const target = event.target;
43815
+ if (!rowEl || !target || target === rowEl || typeof target.closest !== 'function') return false;
43816
+ const control = target.closest(ROW_CONTROL_SELECTOR);
43817
+ return !!control && control !== rowEl && rowEl.contains(control);
43818
+ },
43217
43819
  getColumnDef(columnKey) {
43218
43820
  return this.columns.find(c => c.key === columnKey) || {};
43219
43821
  },
@@ -43605,11 +44207,20 @@ var __vue_render__$5 = function () {
43605
44207
  key: row.id,
43606
44208
  staticClass: "rq-table__tr rq-table__tr--body",
43607
44209
  class: {
43608
- "rq-table__tr--selected": !!_vm.rowSelection[row.id]
44210
+ "rq-table__tr--selected": !!_vm.rowSelection[row.id],
44211
+ "rq-table__tr--focusable": _vm.rowsFocusable,
44212
+ "rq-table__tr--active": _vm.isRowActive(row)
44213
+ },
44214
+ attrs: {
44215
+ tabindex: _vm.rowsFocusable ? 0 : null,
44216
+ "aria-current": _vm.isRowActive(row) ? "true" : null
43609
44217
  },
43610
44218
  on: {
43611
44219
  click: function ($event) {
43612
- return _vm.$emit("row-click", row.original);
44220
+ return _vm.onRowClick(row, $event);
44221
+ },
44222
+ keydown: function ($event) {
44223
+ return _vm.onRowKeydown(row, $event);
43613
44224
  }
43614
44225
  }
43615
44226
  }, [_vm.expandable ? _c("td", {
@@ -43922,6 +44533,10 @@ const dataTableVariants = cva('rq-data-table', {
43922
44533
  //
43923
44534
  //
43924
44535
  //
44536
+ //
44537
+ //
44538
+ //
44539
+ //
43925
44540
 
43926
44541
  var script$4 = {
43927
44542
  name: 'DataTable',
@@ -43930,7 +44545,7 @@ var script$4 = {
43930
44545
  SearchInput: __vue_component__$s,
43931
44546
  PageSizeSelect: __vue_component__$r,
43932
44547
  SelectionBar: __vue_component__$q,
43933
- Pagination: __vue_component__$w
44548
+ Pagination: __vue_component__$y
43934
44549
  },
43935
44550
  props: {
43936
44551
  rows: {
@@ -43977,10 +44592,27 @@ var script$4 = {
43977
44592
  type: Boolean,
43978
44593
  default: false
43979
44594
  },
44595
+ // Se reenvía a Table (ver Table.selectedRowIds). Con selectedRowIds el
44596
+ // contador de SelectionBar cuenta esos ids (incluye los de otras páginas).
44597
+ selectedRowIds: {
44598
+ type: Array,
44599
+ default: null
44600
+ },
43980
44601
  rowId: {
43981
44602
  type: String,
43982
44603
  default: 'id'
43983
44604
  },
44605
+ // Se reenvían a Table: filas operables con teclado (Enter / Espacio
44606
+ // emiten row-click) y filas marcadas como activas con aria-current
44607
+ // (ver Table.rowsFocusable y Table.activeRowIds).
44608
+ rowsFocusable: {
44609
+ type: Boolean,
44610
+ default: false
44611
+ },
44612
+ activeRowIds: {
44613
+ type: Array,
44614
+ default: null
44615
+ },
43984
44616
  maxHeight: {
43985
44617
  type: Number,
43986
44618
  default: 460
@@ -44042,7 +44674,11 @@ var script$4 = {
44042
44674
  },
44043
44675
  data() {
44044
44676
  return {
44045
- selectedRows: []
44677
+ selectedRows: [],
44678
+ // Copia de selectedRowIds que también sigue los cambios del usuario
44679
+ // (update:selected-row-ids de Table). Así el contador refleja la
44680
+ // selección aunque el padre no use .sync, igual que la tabla.
44681
+ selectedIds: []
44046
44682
  };
44047
44683
  },
44048
44684
  computed: {
@@ -44058,8 +44694,16 @@ var script$4 = {
44058
44694
  toRecord() {
44059
44695
  return Math.min(this.page * this.pageSize, this.total);
44060
44696
  },
44697
+ // Filas seleccionadas de la página actual. Con selectedRowIds se derivan
44698
+ // de los ids (así ya están desde el primer render, sin esperar un
44699
+ // select); sin él, son las que emitió Table en el último select.
44700
+ visibleSelectedRows() {
44701
+ if (!this.selectedRowIds) return this.selectedRows;
44702
+ const ids = new Set(this.selectedIds.map(String));
44703
+ return this.rows.filter(row => ids.has(String(row[this.rowId])));
44704
+ },
44061
44705
  selectedCount() {
44062
- return this.selectedRows.length;
44706
+ return this.selectedRowIds ? this.selectedIds.length : this.selectedRows.length;
44063
44707
  },
44064
44708
  mergedTexts() {
44065
44709
  return {
@@ -44082,11 +44726,24 @@ var script$4 = {
44082
44726
  return this.mergedTexts.showingRecords.replace('{from}', this.fromRecord).replace('{to}', this.toRecord).replace('{total}', this.total);
44083
44727
  }
44084
44728
  },
44729
+ watch: {
44730
+ selectedRowIds: {
44731
+ handler(ids) {
44732
+ if (ids) this.selectedIds = [...ids];
44733
+ },
44734
+ immediate: true,
44735
+ deep: true
44736
+ }
44737
+ },
44085
44738
  methods: {
44086
44739
  onSelect(rows) {
44087
44740
  this.selectedRows = rows;
44088
44741
  this.$emit('select', rows);
44089
44742
  },
44743
+ onSelectedRowIds(ids) {
44744
+ this.selectedIds = ids;
44745
+ this.$emit('update:selected-row-ids', ids);
44746
+ },
44090
44747
  onClearSelection() {
44091
44748
  this.$refs.table.clearSelection();
44092
44749
  }
@@ -44137,14 +44794,14 @@ var __vue_render__$4 = function () {
44137
44794
  on: {
44138
44795
  clear: _vm.onClearSelection,
44139
44796
  delete: function ($event) {
44140
- return _vm.$emit("delete-selected", _vm.selectedRows);
44797
+ return _vm.$emit("delete-selected", _vm.visibleSelectedRows);
44141
44798
  }
44142
44799
  },
44143
44800
  scopedSlots: _vm._u([_vm.$scopedSlots["selection-actions"] ? {
44144
44801
  key: "actions",
44145
44802
  fn: function () {
44146
44803
  return [_vm._t("selection-actions", null, {
44147
- rows: _vm.selectedRows
44804
+ rows: _vm.visibleSelectedRows
44148
44805
  })];
44149
44806
  },
44150
44807
  proxy: true
@@ -44157,7 +44814,10 @@ var __vue_render__$4 = function () {
44157
44814
  "column-order": _vm.columnOrder,
44158
44815
  "pinned-columns": _vm.pinnedColumns,
44159
44816
  selectable: _vm.selectable,
44817
+ "selected-row-ids": _vm.selectedRowIds,
44160
44818
  "row-id": _vm.rowId,
44819
+ "rows-focusable": _vm.rowsFocusable,
44820
+ "active-row-ids": _vm.activeRowIds,
44161
44821
  "max-height": _vm.maxHeight,
44162
44822
  expandable: _vm.expandable,
44163
44823
  "row-expandable": _vm.rowExpandable,
@@ -44176,6 +44836,7 @@ var __vue_render__$4 = function () {
44176
44836
  return _vm.$emit("row-click", $event);
44177
44837
  },
44178
44838
  select: _vm.onSelect,
44839
+ "update:selected-row-ids": _vm.onSelectedRowIds,
44179
44840
  "update:column-order": function ($event) {
44180
44841
  return _vm.$emit("update:column-order", $event);
44181
44842
  },
@@ -44336,6 +44997,8 @@ const datePickerVariants = cva('rq-datepicker', {
44336
44997
  //
44337
44998
  //
44338
44999
  //
45000
+ //
45001
+ //
44339
45002
 
44340
45003
  const pad = n => String(n).padStart(2, '0');
44341
45004
  const formatDate = date => `${pad(date.getDate())}/${pad(date.getMonth() + 1)}/${date.getFullYear()}`;
@@ -44347,8 +45010,8 @@ var script$3 = {
44347
45010
  name: 'DatePicker',
44348
45011
  components: {
44349
45012
  DateRangePicker,
44350
- Button: __vue_component__$Q,
44351
- Icon: __vue_component__$H
45013
+ Button: __vue_component__$R,
45014
+ Icon: __vue_component__$J
44352
45015
  },
44353
45016
  props: {
44354
45017
  startDate: {
@@ -44431,6 +45094,16 @@ var script$3 = {
44431
45094
  applyLabel: {
44432
45095
  type: String,
44433
45096
  default: null
45097
+ },
45098
+ // null = no controlado (abre y cierra con su propio botón, como siempre).
45099
+ // true/false = controlado por el consumidor con :open.sync.
45100
+ open: {
45101
+ type: Boolean,
45102
+ default: null
45103
+ },
45104
+ hideTrigger: {
45105
+ type: Boolean,
45106
+ default: false
44434
45107
  }
44435
45108
  },
44436
45109
  data() {
@@ -44440,6 +45113,9 @@ var script$3 = {
44440
45113
  };
44441
45114
  },
44442
45115
  computed: {
45116
+ controlContainerClass() {
45117
+ return this.hideTrigger ? 'rq-datepicker__anchor' : 'rq-datepicker__trigger';
45118
+ },
44443
45119
  classes() {
44444
45120
  return datePickerVariants({
44445
45121
  open: this.isOpen,
@@ -44474,11 +45150,37 @@ var script$3 = {
44474
45150
  return this.presetRanges ? this.texts.applyRange : this.texts.apply;
44475
45151
  }
44476
45152
  },
45153
+ watch: {
45154
+ open(value) {
45155
+ if (value !== null) this.syncOpen(value);
45156
+ }
45157
+ },
45158
+ mounted() {
45159
+ if (this.open) this.syncOpen(true);
45160
+ },
45161
+ beforeDestroy() {
45162
+ clearTimeout(this.openTimer);
45163
+ },
44477
45164
  methods: {
44478
45165
  applyDayClasses,
44479
45166
  onToggle(open) {
44480
45167
  if (open) this.now = new Date();
44481
45168
  this.isOpen = open;
45169
+ if (open !== this.open) this.$emit('update:open', open);
45170
+ },
45171
+ // Abre o cierra desde la prop open. La apertura espera al siguiente ciclo:
45172
+ // si viene del clic de un control externo, ese mismo clic llegaría al body
45173
+ // y la librería lo tomaría como un clic afuera, cerrando el popover.
45174
+ syncOpen(value) {
45175
+ clearTimeout(this.openTimer);
45176
+ if (!value) {
45177
+ if (this.$refs.picker) this.$refs.picker.clickAway();
45178
+ return;
45179
+ }
45180
+ this.openTimer = setTimeout(() => {
45181
+ const picker = this.$refs.picker;
45182
+ if (picker && !picker.open) picker.togglePicker(true, true);
45183
+ });
44482
45184
  },
44483
45185
  pickerLocale() {
44484
45186
  const locale = {
@@ -44534,7 +45236,7 @@ var __vue_render__$3 = function () {
44534
45236
  "locale-data": _vm.pickerLocale(),
44535
45237
  opens: _vm.opens,
44536
45238
  "date-format": _vm.applyDayClasses,
44537
- "control-container-class": "rq-datepicker__trigger"
45239
+ "control-container-class": _vm.controlContainerClass
44538
45240
  },
44539
45241
  on: {
44540
45242
  toggle: _vm.onToggle,
@@ -44547,7 +45249,11 @@ var __vue_render__$3 = function () {
44547
45249
  fn: function (ref) {
44548
45250
  var start = ref.startDate;
44549
45251
  var end = ref.endDate;
44550
- return [_c("button", {
45252
+ return [_vm.hideTrigger ? _c("span", {
45253
+ attrs: {
45254
+ "aria-hidden": "true"
45255
+ }
45256
+ }) : _c("button", {
44551
45257
  staticClass: "rq-datepicker__control",
44552
45258
  attrs: {
44553
45259
  type: "button",
@@ -44673,7 +45379,7 @@ const dialogVariants = cva('rq-dialog', {
44673
45379
  var script$2 = {
44674
45380
  name: 'Dialog',
44675
45381
  components: {
44676
- Button: __vue_component__$Q
45382
+ Button: __vue_component__$R
44677
45383
  },
44678
45384
  props: {
44679
45385
  title: {
@@ -44723,8 +45429,10 @@ var script$2 = {
44723
45429
  document.removeEventListener('keydown', this.handleKeydown);
44724
45430
  },
44725
45431
  methods: {
45432
+ // Un Escape que ya atendió un control de adentro (p. ej. Combobox o
45433
+ // Dropdown al cerrar su panel, que hacen preventDefault) no cancela.
44726
45434
  handleKeydown(e) {
44727
- if (e.key === 'Escape' && this.open) this.$emit('cancel');
45435
+ if (e.key === 'Escape' && this.open && !e.defaultPrevented) this.$emit('cancel');
44728
45436
  },
44729
45437
  emitConfirm() {
44730
45438
  this.$emit('confirm');
@@ -44978,8 +45686,11 @@ var script$1 = {
44978
45686
  this.locked = shouldLock;
44979
45687
  if (shouldLock) lockScroll(this.scrollTargets);else unlockScroll(this.scrollTargets);
44980
45688
  },
45689
+ // Un Escape que ya atendió un control de adentro (p. ej. Combobox o
45690
+ // Dropdown al cerrar su panel, que hacen preventDefault) no cierra el
45691
+ // drawer: solo cierra la lista.
44981
45692
  handleKeydown(e) {
44982
- if (e.key === 'Escape' && this.open) {
45693
+ if (e.key === 'Escape' && this.open && !e.defaultPrevented) {
44983
45694
  this.$emit('close');
44984
45695
  }
44985
45696
  }
@@ -45127,7 +45838,7 @@ const sidebarVariants = cva('rq-sidebar', {
45127
45838
  var script = {
45128
45839
  name: 'Sidebar',
45129
45840
  components: {
45130
- Icon: __vue_component__$H
45841
+ Icon: __vue_component__$J
45131
45842
  },
45132
45843
  model: {
45133
45844
  prop: 'value',
@@ -45300,4 +46011,4 @@ const __vue_component__ = /*#__PURE__*/normalizeComponent({
45300
46011
  staticRenderFns: __vue_staticRenderFns__
45301
46012
  }, __vue_inject_styles__, __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, false, undefined, undefined, undefined);
45302
46013
 
45303
- export { __vue_component__$C as Avatar, __vue_component__$g as AvatarGroup, __vue_component__$I as Badge, __vue_component__$n as Breadcrumb, __vue_component__$Q as Button, __vue_component__$6 as Calendar, __vue_component__$i as Card, __vue_component__$L as Checkbox, __vue_component__$z as CheckboxGroup, __vue_component__$J as Chip, __vue_component__$b as ChipTabs, __vue_component__$9 as Combobox, __vue_component__$4 as DataTable, __vue_component__$3 as DatePicker, __vue_component__$2 as Dialog, __vue_component__$1 as Drawer, __vue_component__$u as Dropdown, __vue_component__$7 as DropdownDivider, __vue_component__$8 as DropdownItem, __vue_component__$e as FileInput, __vue_component__$d as FileList, __vue_component__$j as FormField, __vue_component__$H as Icon, __vue_component__$k as IconButton, __vue_component__$l as InfoAlert, __vue_component__$R as Input, __vue_component__$c as Kpi, __vue_component__$O as Link, __vue_component__$r as PageSizeSelect, __vue_component__$w as Pagination, __vue_component__$N as Progress, __vue_component__$D as Radio, __vue_component__$A as RichCheckboxGroup, __vue_component__$a as RichRadioGroup, __vue_component__$x as RichSwitchGroup, __vue_component__$o as RiskBadges, __vue_component__$T as RqButton, __vue_component__$S as RqInput, __vue_component__$s as SearchInput, __vue_component__$F as Select, __vue_component__$q as SelectionBar, __vue_component__ as Sidebar, __vue_component__$G as Skeleton, __vue_component__$M as Spinner, __vue_component__$f as Stepper, __vue_component__$K as Switch, __vue_component__$y as SwitchGroup, __vue_component__$5 as Table, __vue_component__$v as Tabs, __vue_component__$E as Textarea, __vue_component__$h as Timeline, __vue_component__$p as Toast, __vue_component__$m as ToastContainer, __vue_component__$B as Tooltip, __vue_component__$t as Topbar, __vue_component__$P as Typography };
46014
+ export { __vue_component__$E as Avatar, __vue_component__$g as AvatarGroup, __vue_component__$K as Badge, __vue_component__$n as Breadcrumb, __vue_component__$R as Button, __vue_component__$6 as Calendar, __vue_component__$i as Card, __vue_component__$N as Checkbox, __vue_component__$B as CheckboxGroup, __vue_component__$L as Chip, __vue_component__$b as ChipTabs, __vue_component__$9 as Combobox, __vue_component__$4 as DataTable, __vue_component__$3 as DatePicker, __vue_component__$2 as Dialog, __vue_component__$1 as Drawer, __vue_component__$u as Dropdown, __vue_component__$7 as DropdownDivider, __vue_component__$8 as DropdownItem, __vue_component__$e as FileInput, __vue_component__$d as FileList, __vue_component__$j as FormField, __vue_component__$J as Icon, __vue_component__$k as IconButton, __vue_component__$l as InfoAlert, __vue_component__$S as Input, __vue_component__$c as Kpi, __vue_component__$w as LineTabs, __vue_component__$P as Link, __vue_component__$r as PageSizeSelect, __vue_component__$y as Pagination, __vue_component__$v as Progress, __vue_component__$F as Radio, __vue_component__$C as RichCheckboxGroup, __vue_component__$a as RichRadioGroup, __vue_component__$z as RichSwitchGroup, __vue_component__$o as RiskBadges, __vue_component__$U as RqButton, __vue_component__$T as RqInput, __vue_component__$s as SearchInput, __vue_component__$H as Select, __vue_component__$q as SelectionBar, __vue_component__ as Sidebar, __vue_component__$I as Skeleton, __vue_component__$O as Spinner, __vue_component__$f as Stepper, __vue_component__$M as Switch, __vue_component__$A as SwitchGroup, __vue_component__$5 as Table, __vue_component__$x as Tabs, __vue_component__$G as Textarea, __vue_component__$h as Timeline, __vue_component__$p as Toast, __vue_component__$m as ToastContainer, __vue_component__$D as Tooltip, __vue_component__$t as Topbar, __vue_component__$Q as Typography };