quasar 2.7.4 → 2.7.7

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 (139) hide show
  1. package/dist/api/QBtn.json +6 -0
  2. package/dist/api/QBtnDropdown.json +6 -0
  3. package/dist/api/QBtnGroup.json +6 -0
  4. package/dist/api/QExpansionItem.json +8 -1
  5. package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
  6. package/dist/icon-set/eva-icons.umd.prod.js +1 -1
  7. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
  8. package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
  9. package/dist/icon-set/fontawesome-v6-pro.umd.prod.js +1 -1
  10. package/dist/icon-set/fontawesome-v6.umd.prod.js +1 -1
  11. package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
  12. package/dist/icon-set/line-awesome.umd.prod.js +1 -1
  13. package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
  14. package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
  15. package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
  16. package/dist/icon-set/material-icons.umd.prod.js +1 -1
  17. package/dist/icon-set/material-symbols-outlined.umd.prod.js +1 -1
  18. package/dist/icon-set/material-symbols-rounded.umd.prod.js +1 -1
  19. package/dist/icon-set/material-symbols-sharp.umd.prod.js +1 -1
  20. package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
  21. package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
  22. package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
  23. package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
  24. package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
  25. package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
  26. package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
  27. package/dist/icon-set/svg-fontawesome-v6.umd.prod.js +1 -1
  28. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
  29. package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
  30. package/dist/icon-set/svg-ionicons-v6.umd.prod.js +1 -1
  31. package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
  32. package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
  33. package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
  34. package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
  35. package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
  36. package/dist/icon-set/svg-material-symbols-outlined.umd.prod.js +1 -1
  37. package/dist/icon-set/svg-material-symbols-rounded.umd.prod.js +1 -1
  38. package/dist/icon-set/svg-material-symbols-sharp.umd.prod.js +1 -1
  39. package/dist/icon-set/svg-mdi-v6.umd.prod.js +1 -1
  40. package/dist/icon-set/svg-themify.umd.prod.js +1 -1
  41. package/dist/icon-set/themify.umd.prod.js +1 -1
  42. package/dist/lang/ar-TN.umd.prod.js +1 -1
  43. package/dist/lang/ar.umd.prod.js +1 -1
  44. package/dist/lang/az-Latn.umd.prod.js +1 -1
  45. package/dist/lang/bg.umd.prod.js +1 -1
  46. package/dist/lang/bn.umd.prod.js +1 -1
  47. package/dist/lang/ca.umd.prod.js +1 -1
  48. package/dist/lang/cs.umd.prod.js +1 -1
  49. package/dist/lang/da.umd.prod.js +1 -1
  50. package/dist/lang/de.umd.prod.js +1 -1
  51. package/dist/lang/el.umd.prod.js +1 -1
  52. package/dist/lang/en-GB.umd.prod.js +1 -1
  53. package/dist/lang/en-US.umd.prod.js +1 -1
  54. package/dist/lang/eo.umd.prod.js +1 -1
  55. package/dist/lang/es.umd.prod.js +1 -1
  56. package/dist/lang/et.umd.prod.js +1 -1
  57. package/dist/lang/eu.umd.prod.js +1 -1
  58. package/dist/lang/fa-IR.umd.prod.js +1 -1
  59. package/dist/lang/fa.umd.prod.js +1 -1
  60. package/dist/lang/fi.umd.prod.js +1 -1
  61. package/dist/lang/fr.umd.prod.js +1 -1
  62. package/dist/lang/gn.umd.prod.js +1 -1
  63. package/dist/lang/he.umd.prod.js +1 -1
  64. package/dist/lang/hr.umd.prod.js +1 -1
  65. package/dist/lang/hu.umd.prod.js +1 -1
  66. package/dist/lang/id.umd.prod.js +1 -1
  67. package/dist/lang/is.umd.prod.js +1 -1
  68. package/dist/lang/it.umd.prod.js +1 -1
  69. package/dist/lang/ja.umd.prod.js +1 -1
  70. package/dist/lang/km.umd.prod.js +1 -1
  71. package/dist/lang/ko-KR.umd.prod.js +1 -1
  72. package/dist/lang/kur-CKB.umd.prod.js +1 -1
  73. package/dist/lang/kz.umd.prod.js +1 -1
  74. package/dist/lang/lt.umd.prod.js +1 -1
  75. package/dist/lang/lu.umd.prod.js +1 -1
  76. package/dist/lang/lv.umd.prod.js +1 -1
  77. package/dist/lang/ml.umd.prod.js +1 -1
  78. package/dist/lang/mm.umd.prod.js +1 -1
  79. package/dist/lang/ms.umd.prod.js +1 -1
  80. package/dist/lang/my.umd.prod.js +1 -1
  81. package/dist/lang/nb-NO.umd.prod.js +1 -1
  82. package/dist/lang/nl.umd.prod.js +1 -1
  83. package/dist/lang/pl.umd.prod.js +1 -1
  84. package/dist/lang/pt-BR.umd.prod.js +1 -1
  85. package/dist/lang/pt.umd.prod.js +1 -1
  86. package/dist/lang/ro.umd.prod.js +1 -1
  87. package/dist/lang/ru.umd.prod.js +1 -1
  88. package/dist/lang/sk.umd.prod.js +1 -1
  89. package/dist/lang/sl.umd.prod.js +1 -1
  90. package/dist/lang/sm.umd.prod.js +1 -1
  91. package/dist/lang/sr-CYR.umd.prod.js +1 -1
  92. package/dist/lang/sr.umd.prod.js +1 -1
  93. package/dist/lang/sv.umd.prod.js +1 -1
  94. package/dist/lang/ta.umd.prod.js +1 -1
  95. package/dist/lang/th.umd.prod.js +1 -1
  96. package/dist/lang/tr.umd.prod.js +1 -1
  97. package/dist/lang/ug.umd.prod.js +1 -1
  98. package/dist/lang/uk.umd.prod.js +1 -1
  99. package/dist/lang/uz-Cyrl.umd.prod.js +1 -1
  100. package/dist/lang/uz-Latn.umd.prod.js +1 -1
  101. package/dist/lang/vi.umd.prod.js +1 -1
  102. package/dist/lang/zh-CN.umd.prod.js +1 -1
  103. package/dist/lang/zh-TW.umd.prod.js +1 -1
  104. package/dist/quasar.cjs.prod.js +2 -2
  105. package/dist/quasar.css +9 -1
  106. package/dist/quasar.esm.prod.js +2 -2
  107. package/dist/quasar.prod.css +1 -1
  108. package/dist/quasar.rtl.css +11 -1
  109. package/dist/quasar.rtl.prod.css +1 -1
  110. package/dist/quasar.sass +7 -2
  111. package/dist/quasar.umd.js +64 -39
  112. package/dist/quasar.umd.prod.js +2 -2
  113. package/dist/types/api/qtable.d.ts +4 -4
  114. package/dist/types/index.d.ts +19 -1
  115. package/dist/vetur/quasar-attributes.json +12 -0
  116. package/dist/vetur/quasar-tags.json +3 -0
  117. package/dist/web-types/web-types.json +31 -1
  118. package/package.json +1 -1
  119. package/src/components/breadcrumbs/QBreadcrumbs.js +1 -1
  120. package/src/components/btn/QBtn.sass +3 -0
  121. package/src/components/btn/use-btn.js +7 -2
  122. package/src/components/btn/use-btn.json +5 -0
  123. package/src/components/btn-dropdown/QBtnDropdown.js +1 -0
  124. package/src/components/btn-group/QBtnGroup.js +2 -1
  125. package/src/components/btn-group/QBtnGroup.json +5 -0
  126. package/src/components/btn-group/QBtnGroup.sass +3 -0
  127. package/src/components/expansion-item/QExpansionItem.js +1 -1
  128. package/src/components/expansion-item/QExpansionItem.json +8 -1
  129. package/src/components/field/QField.sass +1 -0
  130. package/src/components/file/QFile.js +5 -0
  131. package/src/components/select/QSelect.js +2 -0
  132. package/src/components/tabs/use-tab.js +8 -1
  133. package/src/components/uploader/QUploader.sass +1 -1
  134. package/src/components/uploader/uploader-core.js +3 -3
  135. package/src/composables/private/use-refocus-target.js +1 -1
  136. package/src/directives/Ripple.js +17 -7
  137. package/src/utils/private/global-dialog.js +13 -19
  138. package/wrappers/index.js +12 -0
  139. package/wrappers/index.mjs +12 -0
package/dist/quasar.sass CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.7.4
2
+ * Quasar Framework v2.7.7
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -903,6 +903,8 @@ input[type='search']::-webkit-search-decoration
903
903
  padding: 0
904
904
  min-width: 3em
905
905
  min-height: 3em
906
+ &--square
907
+ border-radius: 0
906
908
  &--flat, &--outline, &--unelevated
907
909
  &:before
908
910
  box-shadow: none
@@ -1011,6 +1013,8 @@ input[type='search']::-webkit-search-decoration
1011
1013
  margin-bottom: -2px
1012
1014
  &--rounded
1013
1015
  border-radius: $button-rounded-border-radius
1016
+ &--square
1017
+ border-radius: 0
1014
1018
  &--flat, &--outline, &--unelevated
1015
1019
  box-shadow: none
1016
1020
  &--outline
@@ -2301,6 +2305,7 @@ $field-transition-label-right-up: .324s cubic-bezier(.4,0,.2,1)
2301
2305
  width: 100%
2302
2306
  min-width: 0
2303
2307
  outline: 0 !important
2308
+ user-select: auto
2304
2309
  &:-webkit-autofill
2305
2310
  -webkit-animation-name: q-autofill
2306
2311
  -webkit-animation-fill-mode: both
@@ -5040,7 +5045,7 @@ body.desktop
5040
5045
 
5041
5046
  &::-webkit-file-upload-button
5042
5047
  cursor: pointer
5043
- &__header, &__file
5048
+ &__file
5044
5049
  &:before
5045
5050
  content: ''
5046
5051
  border-top-left-radius: inherit
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.7.4
2
+ * Quasar Framework v2.7.7
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1603,7 +1603,7 @@
1603
1603
  }
1604
1604
 
1605
1605
  var installQuasar = function (parentApp, opts = {}) {
1606
- const $q = { version: '2.7.4' };
1606
+ const $q = { version: '2.7.7' };
1607
1607
 
1608
1608
  if (globalConfigIsFrozen === false) {
1609
1609
  if (opts.config !== void 0) {
@@ -2536,7 +2536,7 @@
2536
2536
  return vm.appContext.config.globalProperties.$router !== void 0
2537
2537
  }
2538
2538
 
2539
- const disabledValues = [ void 0, true ];
2539
+ const disabledValues = [ '', true ];
2540
2540
 
2541
2541
  var QBreadcrumbs = createComponent({
2542
2542
  name: 'QBreadcrumbs',
@@ -3185,8 +3185,14 @@
3185
3185
  name: 'ripple',
3186
3186
 
3187
3187
  beforeMount (el, binding) {
3188
+ const cfg = binding.instance.$.appContext.config.globalProperties.$q.config || {};
3189
+
3190
+ if (cfg.ripple === false) {
3191
+ return
3192
+ }
3193
+
3188
3194
  const ctx = {
3189
- cfg: binding.instance.$.appContext.config.globalProperties.$q.config,
3195
+ cfg,
3190
3196
  enabled: binding.value !== false,
3191
3197
  modifiers: {},
3192
3198
  abort: [],
@@ -3228,19 +3234,23 @@
3228
3234
  updated (el, binding) {
3229
3235
  if (binding.oldValue !== binding.value) {
3230
3236
  const ctx = el.__qripple;
3231
- ctx.enabled = binding.value !== false;
3237
+ if (ctx !== void 0) {
3238
+ ctx.enabled = binding.value !== false;
3232
3239
 
3233
- if (ctx.enabled === true && Object(binding.value) === binding.value) {
3234
- updateModifiers$1(ctx, binding);
3240
+ if (ctx.enabled === true && Object(binding.value) === binding.value) {
3241
+ updateModifiers$1(ctx, binding);
3242
+ }
3235
3243
  }
3236
3244
  }
3237
3245
  },
3238
3246
 
3239
3247
  beforeUnmount (el) {
3240
3248
  const ctx = el.__qripple;
3241
- ctx.abort.forEach(fn => { fn(); });
3242
- cleanEvt(ctx, 'main');
3243
- delete el._qripple;
3249
+ if (ctx !== void 0) {
3250
+ ctx.abort.forEach(fn => { fn(); });
3251
+ cleanEvt(ctx, 'main');
3252
+ delete el._qripple;
3253
+ }
3244
3254
  }
3245
3255
  }
3246
3256
  );
@@ -3279,6 +3289,7 @@
3279
3289
  iconRight: String,
3280
3290
 
3281
3291
  round: Boolean,
3292
+ square: Boolean,
3282
3293
  outline: Boolean,
3283
3294
  flat: Boolean,
3284
3295
  unelevated: Boolean,
@@ -3412,8 +3423,11 @@
3412
3423
  colors = `text-${ props.textColor }`;
3413
3424
  }
3414
3425
 
3415
- return `q-btn--${ design.value } `
3416
- + `q-btn--${ props.round === true ? 'round' : `rectangle${ isRounded.value === true ? ' q-btn--rounded' : '' }` }`
3426
+ const shape = props.round === true
3427
+ ? 'round'
3428
+ : `rectangle${ isRounded.value === true ? ' q-btn--rounded' : (props.square === true ? ' q-btn--square' : '') }`;
3429
+
3430
+ return `q-btn--${ design.value } q-btn--${ shape }`
3417
3431
  + (colors !== void 0 ? ' ' + colors : '')
3418
3432
  + (isActionable.value === true ? ' q-btn--actionable q-focusable q-hoverable' : (props.disable === true ? ' disabled' : ''))
3419
3433
  + (props.fab === true ? ' q-btn--fab' : (props.fabMini === true ? ' q-btn--fab-mini' : ''))
@@ -3421,6 +3435,7 @@
3421
3435
  + (props.dense === true ? ' q-btn--dense' : '')
3422
3436
  + (props.stretch === true ? ' no-border-radius self-stretch' : '')
3423
3437
  + (props.glossy === true ? ' glossy' : '')
3438
+ + (props.square ? ' q-btn--square' : '')
3424
3439
  });
3425
3440
 
3426
3441
  const innerClasses = vue.computed(() =>
@@ -3815,6 +3830,7 @@
3815
3830
  outline: Boolean,
3816
3831
  flat: Boolean,
3817
3832
  rounded: Boolean,
3833
+ square: Boolean,
3818
3834
  push: Boolean,
3819
3835
  stretch: Boolean,
3820
3836
  glossy: Boolean,
@@ -3823,7 +3839,7 @@
3823
3839
 
3824
3840
  setup (props, { slots }) {
3825
3841
  const classes = vue.computed(() => {
3826
- const cls = [ 'unelevated', 'outline', 'flat', 'rounded', 'push', 'stretch', 'glossy' ]
3842
+ const cls = [ 'unelevated', 'outline', 'flat', 'rounded', 'square', 'push', 'stretch', 'glossy' ]
3827
3843
  .filter(t => props[ t ] === true)
3828
3844
  .map(t => `q-btn-group--${ t }`).join(' ');
3829
3845
 
@@ -5686,6 +5702,7 @@
5686
5702
  outline: props.outline,
5687
5703
  flat: props.flat,
5688
5704
  rounded: props.rounded,
5705
+ square: props.square,
5689
5706
  push: props.push,
5690
5707
  unelevated: props.unelevated,
5691
5708
  glossy: props.glossy,
@@ -7171,7 +7188,7 @@
7171
7188
  const refocusRef = vue.ref(null);
7172
7189
 
7173
7190
  const refocusTargetEl = vue.computed(() => {
7174
- if (props.disable !== true) {
7191
+ if (props.disable === true) {
7175
7192
  return null
7176
7193
  }
7177
7194
 
@@ -9989,9 +10006,16 @@
9989
10006
  if (isKeyCode(e, [ 13, 32 ])) {
9990
10007
  onClick(e, true);
9991
10008
  }
9992
- else if (shouldIgnoreKey(e) !== true && e.keyCode >= 35 && e.keyCode <= 40) {
10009
+ else if (
10010
+ shouldIgnoreKey(e) !== true
10011
+ && e.keyCode >= 35
10012
+ && e.keyCode <= 40
10013
+ && e.altKey !== true
10014
+ && e.metaKey !== true
10015
+ ) {
9993
10016
  $tabs.onKbdNavigate(e.keyCode, proxy.$el) === true && stopAndPrevent(e);
9994
10017
  }
10018
+
9995
10019
  emit('keydown', e);
9996
10020
  }
9997
10021
 
@@ -17707,7 +17731,7 @@
17707
17731
  let child;
17708
17732
 
17709
17733
  if (slots.header !== void 0) {
17710
- child = [].concat(slots.header());
17734
+ child = [].concat(slots.header({ expanded: showing.value === true }));
17711
17735
  }
17712
17736
  else {
17713
17737
  child = [
@@ -18945,14 +18969,14 @@
18945
18969
 
18946
18970
  function addFilesToQueue (e, fileList) {
18947
18971
  const localFiles = processFiles(e, fileList, state.files.value, true);
18948
-
18949
- if (localFiles === void 0) { return }
18950
-
18951
18972
  const fileInput = getFileInput();
18973
+
18952
18974
  if (fileInput !== void 0 && fileInput !== null) {
18953
18975
  fileInput.value = '';
18954
18976
  }
18955
18977
 
18978
+ if (localFiles === void 0) { return }
18979
+
18956
18980
  localFiles.forEach(file => {
18957
18981
  state.updateFileStatus(file, 'idle');
18958
18982
  uploadSize.value += file.size;
@@ -21369,6 +21393,11 @@
21369
21393
 
21370
21394
  function addFilesToQueue (e, fileList) {
21371
21395
  const files = processFiles(e, fileList, innerValue.value, isAppending.value);
21396
+ const fileInput = getFileInput();
21397
+
21398
+ if (fileInput !== void 0 && fileInput !== null) {
21399
+ fileInput.value = '';
21400
+ }
21372
21401
 
21373
21402
  // if nothing to do...
21374
21403
  if (files === void 0) { return }
@@ -29668,6 +29697,7 @@
29668
29697
 
29669
29698
  floatingLabel: vue.computed(() =>
29670
29699
  (props.hideSelected !== true && hasValue.value === true)
29700
+ || typeof inputValue.value === 'number'
29671
29701
  || inputValue.value.length > 0
29672
29702
  || fieldValueIsFilled(props.displayValue)
29673
29703
  ),
@@ -29728,6 +29758,7 @@
29728
29758
  class: 'q-select__focus-target',
29729
29759
  id: isTarget === true ? state.targetUid.value : void 0,
29730
29760
  readonly: true,
29761
+ 'data-autofocus': (fromDialog !== true && props.autofocus === true) || void 0,
29731
29762
  ...attrs,
29732
29763
  onKeydown: onTargetKeydown,
29733
29764
  onKeyup: onTargetKeyup,
@@ -38093,7 +38124,7 @@
38093
38124
  ? parentApp.component(component)
38094
38125
  : component;
38095
38126
 
38096
- props = componentProps;
38127
+ props = componentProps || {};
38097
38128
  }
38098
38129
  else {
38099
38130
  const { class: klass, style, ...otherProps } = pluginProps;
@@ -38125,10 +38156,10 @@
38125
38156
 
38126
38157
  // account for "script setup" + async component way of declaring component
38127
38158
  if (
38128
- target.component.subTree &&
38129
- target.component.subTree.component &&
38130
- target.component.subTree.component.proxy &&
38131
- target.component.subTree.component.proxy[ cmd ]
38159
+ target.component.subTree
38160
+ && target.component.subTree.component
38161
+ && target.component.subTree.component.proxy
38162
+ && target.component.subTree.component.proxy[ cmd ]
38132
38163
  ) {
38133
38164
  target.component.subTree.component.proxy[ cmd ]();
38134
38165
  return
@@ -38201,25 +38232,19 @@
38201
38232
  ...props,
38202
38233
  ref: dialogRef,
38203
38234
  onOk,
38204
- onHide
38235
+ onHide,
38236
+ onVnodeMounted (...args) {
38237
+ if (typeof props.onVnodeMounted === 'function') {
38238
+ props.onVnodeMounted(...args);
38239
+ }
38240
+
38241
+ vue.nextTick(() => applyState('show'));
38242
+ }
38205
38243
  })
38206
38244
  }, parentApp);
38207
38245
 
38208
38246
  vm = app.mount(el);
38209
38247
 
38210
- function show () {
38211
- applyState('show');
38212
- }
38213
-
38214
- if (typeof DialogComponent.__asyncLoader === 'function') {
38215
- DialogComponent.__asyncLoader().then(() => {
38216
- vue.nextTick(show);
38217
- });
38218
- }
38219
- else {
38220
- vue.nextTick(show);
38221
- }
38222
-
38223
38248
  return API
38224
38249
  }
38225
38250
  }
@@ -39738,7 +39763,7 @@
39738
39763
  });
39739
39764
 
39740
39765
  var index_umd = {
39741
- version: '2.7.4',
39766
+ version: '2.7.7',
39742
39767
  install (app, opts) {
39743
39768
  installQuasar(app, {
39744
39769
  components,