quasar 2.4.11 → 2.4.12

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.
Files changed (108) hide show
  1. package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
  2. package/dist/icon-set/eva-icons.umd.prod.js +1 -1
  3. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
  4. package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
  5. package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
  6. package/dist/icon-set/line-awesome.umd.prod.js +1 -1
  7. package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
  8. package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
  9. package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
  10. package/dist/icon-set/material-icons.umd.prod.js +1 -1
  11. package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
  12. package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
  13. package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
  14. package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
  15. package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
  16. package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
  17. package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
  18. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
  19. package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
  20. package/dist/icon-set/svg-ionicons-v6.umd.prod.js +1 -1
  21. package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
  22. package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
  23. package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
  24. package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
  25. package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
  26. package/dist/icon-set/svg-mdi-v4.umd.prod.js +1 -1
  27. package/dist/icon-set/svg-mdi-v5.umd.prod.js +1 -1
  28. package/dist/icon-set/svg-mdi-v6.umd.prod.js +1 -1
  29. package/dist/icon-set/svg-themify.umd.prod.js +1 -1
  30. package/dist/icon-set/themify.umd.prod.js +1 -1
  31. package/dist/lang/ar.umd.prod.js +1 -1
  32. package/dist/lang/az-Latn.umd.prod.js +1 -1
  33. package/dist/lang/bg.umd.prod.js +1 -1
  34. package/dist/lang/bn.umd.prod.js +1 -1
  35. package/dist/lang/ca.umd.prod.js +1 -1
  36. package/dist/lang/cs.umd.prod.js +1 -1
  37. package/dist/lang/da.umd.prod.js +1 -1
  38. package/dist/lang/de.umd.prod.js +1 -1
  39. package/dist/lang/el.umd.prod.js +1 -1
  40. package/dist/lang/en-GB.umd.prod.js +1 -1
  41. package/dist/lang/en-US.umd.prod.js +1 -1
  42. package/dist/lang/eo.umd.prod.js +1 -1
  43. package/dist/lang/es.umd.prod.js +1 -1
  44. package/dist/lang/et.umd.prod.js +1 -1
  45. package/dist/lang/fa-IR.umd.prod.js +1 -1
  46. package/dist/lang/fa.umd.prod.js +1 -1
  47. package/dist/lang/fi.umd.prod.js +1 -1
  48. package/dist/lang/fr.umd.prod.js +1 -1
  49. package/dist/lang/gn.umd.prod.js +1 -1
  50. package/dist/lang/he.umd.prod.js +1 -1
  51. package/dist/lang/hr.umd.prod.js +1 -1
  52. package/dist/lang/hu.umd.prod.js +1 -1
  53. package/dist/lang/id.umd.prod.js +1 -1
  54. package/dist/lang/is.umd.prod.js +1 -1
  55. package/dist/lang/it.umd.prod.js +1 -1
  56. package/dist/lang/ja.umd.prod.js +1 -1
  57. package/dist/lang/km.umd.prod.js +1 -1
  58. package/dist/lang/ko-KR.umd.prod.js +1 -1
  59. package/dist/lang/kur-CKB.umd.prod.js +1 -1
  60. package/dist/lang/lt.umd.prod.js +1 -1
  61. package/dist/lang/lu.umd.prod.js +1 -1
  62. package/dist/lang/lv.umd.prod.js +1 -1
  63. package/dist/lang/ml.umd.prod.js +1 -1
  64. package/dist/lang/ms.umd.prod.js +1 -1
  65. package/dist/lang/my.umd.prod.js +1 -1
  66. package/dist/lang/nb-NO.umd.prod.js +1 -1
  67. package/dist/lang/nl.umd.prod.js +1 -1
  68. package/dist/lang/pl.umd.prod.js +1 -1
  69. package/dist/lang/pt-BR.umd.prod.js +1 -1
  70. package/dist/lang/pt.umd.prod.js +1 -1
  71. package/dist/lang/ro.umd.prod.js +1 -1
  72. package/dist/lang/ru.umd.prod.js +1 -1
  73. package/dist/lang/sk.umd.prod.js +1 -1
  74. package/dist/lang/sl.umd.prod.js +1 -1
  75. package/dist/lang/sr-CYR.umd.prod.js +1 -1
  76. package/dist/lang/sr.umd.prod.js +1 -1
  77. package/dist/lang/sv.umd.prod.js +1 -1
  78. package/dist/lang/ta.umd.prod.js +1 -1
  79. package/dist/lang/th.umd.prod.js +1 -1
  80. package/dist/lang/tr.umd.prod.js +1 -1
  81. package/dist/lang/ug.umd.prod.js +1 -1
  82. package/dist/lang/uk.umd.prod.js +1 -1
  83. package/dist/lang/vi.umd.prod.js +1 -1
  84. package/dist/lang/zh-CN.umd.prod.js +1 -1
  85. package/dist/lang/zh-TW.umd.prod.js +1 -1
  86. package/dist/quasar.cjs.prod.js +2 -2
  87. package/dist/quasar.css +5 -0
  88. package/dist/quasar.esm.prod.js +2 -2
  89. package/dist/quasar.prod.css +1 -1
  90. package/dist/quasar.rtl.css +5 -0
  91. package/dist/quasar.rtl.prod.css +1 -1
  92. package/dist/quasar.sass +4 -1
  93. package/dist/quasar.umd.js +47 -39
  94. package/dist/quasar.umd.prod.js +2 -2
  95. package/dist/ssr-directives/Morph.js +1 -1
  96. package/dist/web-types/web-types.json +1 -1
  97. package/package.json +1 -1
  98. package/src/components/dialog/QDialog.js +1 -1
  99. package/src/components/editor/QEditor.js +1 -1
  100. package/src/components/form/QForm.js +1 -1
  101. package/src/components/input/QInput.js +1 -1
  102. package/src/components/menu/QMenu.js +2 -1
  103. package/src/components/select/QSelect.js +12 -8
  104. package/src/components/select/QSelect.sass +1 -0
  105. package/src/components/stepper/QStep.js +19 -14
  106. package/src/components/stepper/QStepper.sass +3 -0
  107. package/src/components/virtual-scroll/use-virtual-scroll.js +3 -2
  108. package/src/composables/private/use-field.js +5 -8
package/dist/quasar.sass CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.4.11
2
+ * Quasar Framework v2.4.12
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -3260,6 +3260,7 @@ body.desktop
3260
3260
  cursor: text
3261
3261
  .q-field__input
3262
3262
  min-width: 50px !important
3263
+ cursor: text
3263
3264
  &--padding
3264
3265
  padding-left: 4px
3265
3266
  &__focus-target,
@@ -3815,6 +3816,7 @@ body.platform-ios
3815
3816
  font-size: 12px
3816
3817
  line-height: 14px
3817
3818
  &__dot
3819
+ contain: layout
3818
3820
  margin-right: 8px
3819
3821
  font-size: 14px
3820
3822
  width: 24px
@@ -3924,6 +3926,7 @@ body.platform-ios
3924
3926
  .q-stepper__tab
3925
3927
  overflow: hidden
3926
3928
  .q-stepper__line
3929
+ contain: layout
3927
3930
  &:before, &:after
3928
3931
  position: absolute
3929
3932
  top: 50%
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.4.11
2
+ * Quasar Framework v2.4.12
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1456,7 +1456,7 @@
1456
1456
  }
1457
1457
 
1458
1458
  var installQuasar = function (parentApp, opts = {}) {
1459
- const $q = { version: '2.4.11' };
1459
+ const $q = { version: '2.4.12' };
1460
1460
 
1461
1461
  if (globalConfigIsFrozen === false) {
1462
1462
  if (opts.config !== void 0) {
@@ -5131,7 +5131,7 @@
5131
5131
 
5132
5132
  if (node && node.contains(document.activeElement) !== true) {
5133
5133
  node = node.querySelector('[autofocus], [data-autofocus]') || node;
5134
- node.focus();
5134
+ node.focus({ preventScroll: true });
5135
5135
  }
5136
5136
  });
5137
5137
  }
@@ -5259,6 +5259,7 @@
5259
5259
  // the focus is not in a vue child component
5260
5260
  if (
5261
5261
  handlesFocus.value === true
5262
+ && props.noFocus !== true
5262
5263
  && childHasFocus(innerRef.value, evt.target) !== true
5263
5264
  ) {
5264
5265
  focus();
@@ -14417,7 +14418,7 @@
14417
14418
  }
14418
14419
 
14419
14420
  node = node.querySelector('[autofocus], [data-autofocus]') || node;
14420
- node.focus();
14421
+ node.focus({ preventScroll: true });
14421
14422
  });
14422
14423
  }
14423
14424
 
@@ -16919,7 +16920,7 @@
16919
16920
 
16920
16921
  function focus () {
16921
16922
  addFocusFn(() => {
16922
- contentRef.value !== null && contentRef.value.focus();
16923
+ contentRef.value !== null && contentRef.value.focus({ preventScroll: true });
16923
16924
  });
16924
16925
  }
16925
16926
 
@@ -20656,7 +20657,7 @@
20656
20657
  if (target && (el === null || el.id !== state.targetUid.value)) {
20657
20658
  target.hasAttribute('tabindex') === true || (target = target.querySelector('[tabindex]'));
20658
20659
  if (target && target !== el) {
20659
- target.focus();
20660
+ target.focus({ preventScroll: true });
20660
20661
  }
20661
20662
  }
20662
20663
  }
@@ -20674,6 +20675,7 @@
20674
20675
  }
20675
20676
 
20676
20677
  function onControlFocusin (e) {
20678
+ clearTimeout(focusoutTimer);
20677
20679
  if (state.editable.value === true && state.focused.value === false) {
20678
20680
  state.focused.value = true;
20679
20681
  emit('focus', e);
@@ -20686,13 +20688,9 @@
20686
20688
  if (
20687
20689
  document.hasFocus() === true && (
20688
20690
  state.hasPopupOpen === true
20689
- || (
20690
- state.controlRef !== void 0
20691
- && (
20692
- state.controlRef.value === null
20693
- || state.controlRef.value.contains(document.activeElement) !== false
20694
- )
20695
- )
20691
+ || state.controlRef === void 0
20692
+ || state.controlRef.value === null
20693
+ || state.controlRef.value.contains(document.activeElement) !== false
20696
20694
  )
20697
20695
  ) {
20698
20696
  return
@@ -21637,7 +21635,7 @@
21637
21635
  const target = rootRef.value.querySelector('[autofocus], [data-autofocus]')
21638
21636
  || Array.prototype.find.call(rootRef.value.querySelectorAll('[tabindex]'), el => el.tabIndex > -1);
21639
21637
 
21640
- target !== null && target !== void 0 && target.focus();
21638
+ target !== null && target !== void 0 && target.focus({ preventScroll: true });
21641
21639
  });
21642
21640
  }
21643
21641
 
@@ -23221,7 +23219,7 @@
23221
23219
  && inputRef.value !== el
23222
23220
  && (el === null || el.id !== state.targetUid.value)
23223
23221
  ) {
23224
- inputRef.value.focus();
23222
+ inputRef.value.focus({ preventScroll: true });
23225
23223
  }
23226
23224
  });
23227
23225
  }
@@ -27805,13 +27803,14 @@
27805
27803
  prevToIndex = -1;
27806
27804
  prevScrollStart = void 0;
27807
27805
 
27806
+ virtualScrollPaddingBefore.value = sumSize(virtualScrollSizesAgg, virtualScrollSizes, 0, virtualScrollSliceRange.value.from);
27807
+ virtualScrollPaddingAfter.value = sumSize(virtualScrollSizesAgg, virtualScrollSizes, virtualScrollSliceRange.value.to, virtualScrollLength.value);
27808
+
27808
27809
  if (toIndex >= 0) {
27809
27810
  updateVirtualScrollSizes(virtualScrollSliceRange.value.from);
27810
27811
  vue.nextTick(() => { scrollTo(toIndex); });
27811
27812
  }
27812
27813
  else {
27813
- virtualScrollPaddingBefore.value = sumSize(virtualScrollSizesAgg, virtualScrollSizes, 0, virtualScrollSliceRange.value.from);
27814
- virtualScrollPaddingAfter.value = sumSize(virtualScrollSizesAgg, virtualScrollSizes, virtualScrollSliceRange.value.to, virtualScrollLength.value);
27815
27814
  onVirtualScrollEvt();
27816
27815
  }
27817
27816
  }
@@ -28572,8 +28571,12 @@
28572
28571
  return innerOptionsValue.value.find(v => isDeepEqual(v, val)) !== void 0
28573
28572
  }
28574
28573
 
28575
- function selectInputText () {
28576
- if (props.useInput === true && targetRef.value !== null) {
28574
+ function selectInputText (e) {
28575
+ if (
28576
+ props.useInput === true
28577
+ && targetRef.value !== null
28578
+ && (e === void 0 || (targetRef.value === e.target && e.target.value === selectedString.value))
28579
+ ) {
28577
28580
  targetRef.value.select();
28578
28581
  }
28579
28582
  }
@@ -28943,7 +28946,7 @@
28943
28946
  type: 'search',
28944
28947
  ...comboboxAttrs.value,
28945
28948
  ...state.splitAttrs.attributes.value,
28946
- id: state.targetUid.value,
28949
+ id: isTarget === true ? state.targetUid.value : void 0,
28947
28950
  maxlength: props.maxlength,
28948
28951
  autocomplete: props.autocomplete,
28949
28952
  'data-autofocus': (fromDialog !== true && props.autofocus === true) || void 0,
@@ -28954,7 +28957,7 @@
28954
28957
 
28955
28958
  if (fromDialog !== true && hasDialog === true) {
28956
28959
  if (Array.isArray(data.class) === true) {
28957
- data.class[ 0 ] += ' no-pointer-events';
28960
+ data.class = [ ...data.class, 'no-pointer-events' ];
28958
28961
  }
28959
28962
  else {
28960
28963
  data.class += ' no-pointer-events';
@@ -29420,13 +29423,13 @@
29420
29423
  child.push(getInput(fromDialog, isTarget));
29421
29424
  }
29422
29425
  // there can be only one (when dialog is opened the control in dialog should be target)
29423
- else if (state.editable.value === true && isTarget === true) {
29426
+ else if (state.editable.value === true) {
29424
29427
  child.push(
29425
29428
  vue.h('div', {
29426
- ref: targetRef,
29429
+ ref: isTarget === true ? targetRef : void 0,
29427
29430
  key: 'd_t',
29428
29431
  class: 'q-select__focus-target',
29429
- id: state.targetUid.value,
29432
+ id: isTarget === true ? state.targetUid.value : void 0,
29430
29433
  ...comboboxAttrs.value,
29431
29434
  onKeydown: onTargetKeydown,
29432
29435
  onKeyup: onTargetKeyup,
@@ -29434,7 +29437,7 @@
29434
29437
  })
29435
29438
  );
29436
29439
 
29437
- if (typeof props.autocomplete === 'string' && props.autocomplete.length > 0) {
29440
+ if (isTarget === true && typeof props.autocomplete === 'string' && props.autocomplete.length > 0) {
29438
29441
  child.push(
29439
29442
  vue.h('input', {
29440
29443
  class: 'q-select__autocomplete-input',
@@ -32143,7 +32146,9 @@
32143
32146
  error: Boolean
32144
32147
  },
32145
32148
 
32146
- setup (props, { slots }) {
32149
+ setup (props, { attrs, slots }) {
32150
+ const { proxy: { $q } } = vue.getCurrentInstance();
32151
+
32147
32152
  const $stepper = vue.inject(stepperKey, () => {
32148
32153
  console.error('QStep needs to be child of QStepper');
32149
32154
  });
@@ -32154,18 +32159,21 @@
32154
32159
 
32155
32160
  const isActive = vue.computed(() => $stepper.value.modelValue === props.name);
32156
32161
 
32157
- vue.watch(isActive, active => {
32158
- if (
32159
- active === true
32160
- && $stepper.value.vertical === true
32161
- ) {
32162
- vue.nextTick(() => {
32163
- if (rootRef.value !== null) {
32164
- rootRef.value.scrollTop = 0;
32162
+ const scrollEvent = vue.computed(() => (
32163
+ ($q.platform.is.ios !== true && $q.platform.is.safari !== true)
32164
+ || isActive.value !== true
32165
+ || $stepper.value.vertical !== true
32166
+ ? {}
32167
+ : {
32168
+ onScroll (e) {
32169
+ const { target } = e;
32170
+ if (target.scrollTop > 0) {
32171
+ target.scrollTop = 0;
32172
+ }
32173
+ attrs.onScroll !== void 0 && attrs.onScroll(e);
32165
32174
  }
32166
- });
32167
- }
32168
- });
32175
+ }
32176
+ ));
32169
32177
 
32170
32178
  const contentKey = vue.computed(() => (
32171
32179
  typeof props.name === 'string' || typeof props.name === 'number'
@@ -32201,7 +32209,7 @@
32201
32209
 
32202
32210
  return () => vue.h(
32203
32211
  'div',
32204
- { ref: rootRef, class: 'q-stepper__step' },
32212
+ { ref: rootRef, class: 'q-stepper__step', ...scrollEvent.value },
32205
32213
  $stepper.value.vertical === true
32206
32214
  ? [
32207
32215
  vue.h(StepHeader, {
@@ -39359,7 +39367,7 @@
39359
39367
  });
39360
39368
 
39361
39369
  var index_umd = {
39362
- version: '2.4.11',
39370
+ version: '2.4.12',
39363
39371
  install (app, opts) {
39364
39372
  installQuasar(app, {
39365
39373
  components,