@regcheq/ui-vue-2 1.10.0 → 1.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.css CHANGED
@@ -1578,7 +1578,7 @@
1578
1578
  display: flex;
1579
1579
  align-items: center;
1580
1580
  justify-content: space-between;
1581
- min-height: 56px;
1581
+ min-height: 60px;
1582
1582
  padding: 12px 16px;
1583
1583
  background: #e6f0fc;
1584
1584
  border-radius: 0px;
@@ -1915,7 +1915,7 @@
1915
1915
  margin-left: auto;
1916
1916
  }
1917
1917
  .rq-data-table__selection-slot {
1918
- min-height: 56px;
1918
+ min-height: 60px;
1919
1919
  }
1920
1920
  .rq-data-table__pagination {
1921
1921
  display: flex;
@@ -2139,8 +2139,9 @@
2139
2139
  width: 100%;
2140
2140
  }
2141
2141
  .rq-drawer-wrapper {
2142
- position: absolute;
2142
+ position: fixed;
2143
2143
  inset: 0;
2144
+ z-index: 1050;
2144
2145
  overflow: hidden;
2145
2146
  pointer-events: none;
2146
2147
  }
package/dist/index.esm.js CHANGED
@@ -32743,6 +32743,16 @@ var script$h = {
32743
32743
  textColor: {
32744
32744
  type: String,
32745
32745
  default: null
32746
+ },
32747
+ // Padding por eje (ej: "4px", "8px"). Pisan el padding del SCSS.
32748
+ // Cada eje es independiente: setear uno deja el otro con su default.
32749
+ paddingX: {
32750
+ type: String,
32751
+ default: null
32752
+ },
32753
+ paddingY: {
32754
+ type: String,
32755
+ default: null
32746
32756
  }
32747
32757
  },
32748
32758
  computed: {
@@ -32756,6 +32766,14 @@ var script$h = {
32756
32766
  const style = {};
32757
32767
  if (this.bgColor) style.backgroundColor = this.bgColor;
32758
32768
  if (this.textColor) style.color = this.textColor;
32769
+ if (this.paddingX) {
32770
+ style.paddingLeft = this.paddingX;
32771
+ style.paddingRight = this.paddingX;
32772
+ }
32773
+ if (this.paddingY) {
32774
+ style.paddingTop = this.paddingY;
32775
+ style.paddingBottom = this.paddingY;
32776
+ }
32759
32777
  return style;
32760
32778
  }
32761
32779
  }
@@ -39156,6 +39174,52 @@ const __vue_component__$1 = /*#__PURE__*/normalizeComponent({
39156
39174
  //
39157
39175
  //
39158
39176
 
39177
+
39178
+ // Registro de bloqueos compartido entre todas las instancias: guarda cuántos
39179
+ // drawers abiertos dependen de cada contenedor y cuál era su overflow original.
39180
+ // Sin el contador, cerrar un drawer devolvería el scroll aunque siguiera otro
39181
+ // abierto sobre el mismo contenedor.
39182
+ const scrollLocks = new Map();
39183
+
39184
+ // El scroll de fondo no siempre vive en el body: muchas apps scrollean en un
39185
+ // contenedor interno. Se bloquean todos los ancestros scrolleables más el body.
39186
+ function scrollableAncestors(node) {
39187
+ const targets = [];
39188
+ let el = node;
39189
+ while (el && el !== document.body && el.nodeType === 1) {
39190
+ const {
39191
+ overflowY
39192
+ } = window.getComputedStyle(el);
39193
+ if (overflowY === 'auto' || overflowY === 'scroll') targets.push(el);
39194
+ el = el.parentElement;
39195
+ }
39196
+ targets.push(document.body);
39197
+ return targets;
39198
+ }
39199
+ function lockScroll(targets) {
39200
+ targets.forEach(el => {
39201
+ const lock = scrollLocks.get(el);
39202
+ if (lock) {
39203
+ lock.count += 1;
39204
+ return;
39205
+ }
39206
+ scrollLocks.set(el, {
39207
+ count: 1,
39208
+ previousOverflow: el.style.overflow
39209
+ });
39210
+ el.style.overflow = 'hidden';
39211
+ });
39212
+ }
39213
+ function unlockScroll(targets) {
39214
+ targets.forEach(el => {
39215
+ const lock = scrollLocks.get(el);
39216
+ if (!lock) return;
39217
+ lock.count -= 1;
39218
+ if (lock.count > 0) return;
39219
+ el.style.overflow = lock.previousOverflow;
39220
+ scrollLocks.delete(el);
39221
+ });
39222
+ }
39159
39223
  var script = {
39160
39224
  name: 'Drawer',
39161
39225
  props: {
@@ -39184,21 +39248,33 @@ var script = {
39184
39248
  }
39185
39249
  },
39186
39250
  watch: {
39187
- open: {
39188
- immediate: true,
39189
- handler(isOpen) {
39190
- document.body.style.overflow = isOpen ? 'hidden' : '';
39191
- }
39251
+ open(isOpen) {
39252
+ this.setScrollLock(isOpen);
39192
39253
  }
39193
39254
  },
39255
+ created() {
39256
+ this.locked = false;
39257
+ this.scrollTargets = [];
39258
+ },
39194
39259
  mounted() {
39260
+ // Se resuelven acá y no en cada apertura: en mounted el drawer todavía está
39261
+ // en su lugar del DOM y los ancestros son los que corresponden.
39262
+ this.scrollTargets = scrollableAncestors(this.$el.parentElement);
39195
39263
  document.addEventListener('keydown', this.handleKeydown);
39264
+ if (this.open) this.setScrollLock(true);
39196
39265
  },
39197
39266
  beforeDestroy() {
39198
39267
  document.removeEventListener('keydown', this.handleKeydown);
39199
- document.body.style.overflow = '';
39268
+ this.setScrollLock(false);
39200
39269
  },
39201
39270
  methods: {
39271
+ // Idempotente: solo actúa cuando cambia el estado, para no descuadrar el
39272
+ // contador del registro compartido.
39273
+ setScrollLock(shouldLock) {
39274
+ if (shouldLock === this.locked) return;
39275
+ this.locked = shouldLock;
39276
+ if (shouldLock) lockScroll(this.scrollTargets);else unlockScroll(this.scrollTargets);
39277
+ },
39202
39278
  handleKeydown(e) {
39203
39279
  if (e.key === 'Escape' && this.open) {
39204
39280
  this.$emit('close');
package/dist/index.js CHANGED
@@ -32745,6 +32745,16 @@ var script$h = {
32745
32745
  textColor: {
32746
32746
  type: String,
32747
32747
  default: null
32748
+ },
32749
+ // Padding por eje (ej: "4px", "8px"). Pisan el padding del SCSS.
32750
+ // Cada eje es independiente: setear uno deja el otro con su default.
32751
+ paddingX: {
32752
+ type: String,
32753
+ default: null
32754
+ },
32755
+ paddingY: {
32756
+ type: String,
32757
+ default: null
32748
32758
  }
32749
32759
  },
32750
32760
  computed: {
@@ -32758,6 +32768,14 @@ var script$h = {
32758
32768
  const style = {};
32759
32769
  if (this.bgColor) style.backgroundColor = this.bgColor;
32760
32770
  if (this.textColor) style.color = this.textColor;
32771
+ if (this.paddingX) {
32772
+ style.paddingLeft = this.paddingX;
32773
+ style.paddingRight = this.paddingX;
32774
+ }
32775
+ if (this.paddingY) {
32776
+ style.paddingTop = this.paddingY;
32777
+ style.paddingBottom = this.paddingY;
32778
+ }
32761
32779
  return style;
32762
32780
  }
32763
32781
  }
@@ -39158,6 +39176,52 @@ const __vue_component__$1 = /*#__PURE__*/normalizeComponent({
39158
39176
  //
39159
39177
  //
39160
39178
 
39179
+
39180
+ // Registro de bloqueos compartido entre todas las instancias: guarda cuántos
39181
+ // drawers abiertos dependen de cada contenedor y cuál era su overflow original.
39182
+ // Sin el contador, cerrar un drawer devolvería el scroll aunque siguiera otro
39183
+ // abierto sobre el mismo contenedor.
39184
+ const scrollLocks = new Map();
39185
+
39186
+ // El scroll de fondo no siempre vive en el body: muchas apps scrollean en un
39187
+ // contenedor interno. Se bloquean todos los ancestros scrolleables más el body.
39188
+ function scrollableAncestors(node) {
39189
+ const targets = [];
39190
+ let el = node;
39191
+ while (el && el !== document.body && el.nodeType === 1) {
39192
+ const {
39193
+ overflowY
39194
+ } = window.getComputedStyle(el);
39195
+ if (overflowY === 'auto' || overflowY === 'scroll') targets.push(el);
39196
+ el = el.parentElement;
39197
+ }
39198
+ targets.push(document.body);
39199
+ return targets;
39200
+ }
39201
+ function lockScroll(targets) {
39202
+ targets.forEach(el => {
39203
+ const lock = scrollLocks.get(el);
39204
+ if (lock) {
39205
+ lock.count += 1;
39206
+ return;
39207
+ }
39208
+ scrollLocks.set(el, {
39209
+ count: 1,
39210
+ previousOverflow: el.style.overflow
39211
+ });
39212
+ el.style.overflow = 'hidden';
39213
+ });
39214
+ }
39215
+ function unlockScroll(targets) {
39216
+ targets.forEach(el => {
39217
+ const lock = scrollLocks.get(el);
39218
+ if (!lock) return;
39219
+ lock.count -= 1;
39220
+ if (lock.count > 0) return;
39221
+ el.style.overflow = lock.previousOverflow;
39222
+ scrollLocks.delete(el);
39223
+ });
39224
+ }
39161
39225
  var script = {
39162
39226
  name: 'Drawer',
39163
39227
  props: {
@@ -39186,21 +39250,33 @@ var script = {
39186
39250
  }
39187
39251
  },
39188
39252
  watch: {
39189
- open: {
39190
- immediate: true,
39191
- handler(isOpen) {
39192
- document.body.style.overflow = isOpen ? 'hidden' : '';
39193
- }
39253
+ open(isOpen) {
39254
+ this.setScrollLock(isOpen);
39194
39255
  }
39195
39256
  },
39257
+ created() {
39258
+ this.locked = false;
39259
+ this.scrollTargets = [];
39260
+ },
39196
39261
  mounted() {
39262
+ // Se resuelven acá y no en cada apertura: en mounted el drawer todavía está
39263
+ // en su lugar del DOM y los ancestros son los que corresponden.
39264
+ this.scrollTargets = scrollableAncestors(this.$el.parentElement);
39197
39265
  document.addEventListener('keydown', this.handleKeydown);
39266
+ if (this.open) this.setScrollLock(true);
39198
39267
  },
39199
39268
  beforeDestroy() {
39200
39269
  document.removeEventListener('keydown', this.handleKeydown);
39201
- document.body.style.overflow = '';
39270
+ this.setScrollLock(false);
39202
39271
  },
39203
39272
  methods: {
39273
+ // Idempotente: solo actúa cuando cambia el estado, para no descuadrar el
39274
+ // contador del registro compartido.
39275
+ setScrollLock(shouldLock) {
39276
+ if (shouldLock === this.locked) return;
39277
+ this.locked = shouldLock;
39278
+ if (shouldLock) lockScroll(this.scrollTargets);else unlockScroll(this.scrollTargets);
39279
+ },
39204
39280
  handleKeydown(e) {
39205
39281
  if (e.key === 'Escape' && this.open) {
39206
39282
  this.$emit('close');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@regcheq/ui-vue-2",
3
- "version": "1.10.0",
3
+ "version": "1.12.0",
4
4
  "main": "dist/index.js",
5
5
  "module": "dist/index.esm.js",
6
6
  "files": [