quasar 2.2.3 → 2.2.4

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 (109) hide show
  1. package/dist/api/QTree.json +6 -0
  2. package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
  3. package/dist/icon-set/eva-icons.umd.prod.js +1 -1
  4. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
  5. package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
  6. package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
  7. package/dist/icon-set/line-awesome.umd.prod.js +1 -1
  8. package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
  9. package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
  10. package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
  11. package/dist/icon-set/material-icons.umd.prod.js +1 -1
  12. package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
  13. package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
  14. package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
  15. package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
  16. package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
  17. package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
  18. package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
  19. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
  20. package/dist/icon-set/svg-ionicons-v5.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/nb-NO.umd.prod.js +1 -1
  66. package/dist/lang/nl.umd.prod.js +1 -1
  67. package/dist/lang/pl.umd.prod.js +1 -1
  68. package/dist/lang/pt-BR.umd.prod.js +1 -1
  69. package/dist/lang/pt.umd.prod.js +1 -1
  70. package/dist/lang/ro.umd.prod.js +1 -1
  71. package/dist/lang/ru.umd.prod.js +1 -1
  72. package/dist/lang/sk.umd.prod.js +1 -1
  73. package/dist/lang/sl.umd.prod.js +1 -1
  74. package/dist/lang/sr-CYR.umd.prod.js +1 -1
  75. package/dist/lang/sr.umd.prod.js +1 -1
  76. package/dist/lang/sv.umd.prod.js +1 -1
  77. package/dist/lang/ta.umd.prod.js +1 -1
  78. package/dist/lang/th.umd.prod.js +1 -1
  79. package/dist/lang/tr.umd.prod.js +1 -1
  80. package/dist/lang/ug.umd.prod.js +1 -1
  81. package/dist/lang/uk.umd.prod.js +1 -1
  82. package/dist/lang/vi.umd.prod.js +1 -1
  83. package/dist/lang/zh-CN.umd.prod.js +1 -1
  84. package/dist/lang/zh-TW.umd.prod.js +1 -1
  85. package/dist/quasar.cjs.prod.js +2 -2
  86. package/dist/quasar.css +51 -2
  87. package/dist/quasar.esm.prod.js +2 -2
  88. package/dist/quasar.prod.css +1 -1
  89. package/dist/quasar.rtl.css +118 -2
  90. package/dist/quasar.rtl.prod.css +1 -1
  91. package/dist/quasar.sass +43 -4
  92. package/dist/quasar.umd.js +39 -41
  93. package/dist/quasar.umd.prod.js +2 -2
  94. package/dist/ssr-directives/Morph.js +1 -1
  95. package/dist/types/index.d.ts +4 -0
  96. package/dist/vetur/quasar-attributes.json +4 -0
  97. package/dist/vetur/quasar-tags.json +1 -0
  98. package/dist/web-types/web-types.json +11 -1
  99. package/package.json +1 -1
  100. package/src/components/select/QSelect.js +8 -18
  101. package/src/components/tabs/QTabs.js +1 -1
  102. package/src/components/time/QTime.js +6 -5
  103. package/src/components/tree/QTree.js +9 -5
  104. package/src/components/tree/QTree.json +5 -0
  105. package/src/components/tree/QTree.sass +52 -4
  106. package/src/components/uploader/uploader-core.js +2 -7
  107. package/src/composables/private/use-file.js +8 -0
  108. package/src/composables/private/use-model-toggle.js +1 -1
  109. package/src/utils/date.js +1 -1
package/dist/quasar.sass CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.2.3
2
+ * Quasar Framework v2.2.4
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -4830,7 +4830,7 @@ body.desktop
4830
4830
  position: absolute
4831
4831
  top: -3px
4832
4832
  bottom: 50%
4833
- width: 35px
4833
+ width: 31px
4834
4834
  left: -35px
4835
4835
  border-left: 1px solid currentColor
4836
4836
  border-bottom: 1px solid currentColor
@@ -4867,21 +4867,27 @@ body.desktop
4867
4867
  transition: color .3s
4868
4868
  &__node--selected .q-tree__node-header-content
4869
4869
  color: $grey
4870
- &__icon, &__node-header-content .q-icon, &__spinner
4870
+ &__icon,
4871
+ &__node-header-content .q-icon
4871
4872
  font-size: 21px
4872
4873
  &__img
4873
4874
  height: 42px
4875
+ border-radius: 2px
4874
4876
  &__avatar, &__node-header-content .q-avatar
4875
4877
  font-size: 28px
4876
4878
  border-radius: 50%
4877
4879
  width: 28px
4878
4880
  height: 28px
4879
- &__arrow, &__spinner
4881
+ &__arrow,
4882
+ &__spinner
4880
4883
  font-size: 16px
4881
4884
  &__arrow
4882
4885
  transition: transform .3s
4886
+ margin-right: 4px
4883
4887
  &--rotate
4884
4888
  transform: rotate3d(0, 0, 1, 90deg)
4889
+ &__tickbox
4890
+ margin-right: 4px
4885
4891
 
4886
4892
  > .q-tree__node
4887
4893
  padding: 0
@@ -4897,6 +4903,39 @@ body.desktop
4897
4903
  .q-tree__node-header:before,
4898
4904
  .q-tree__node-body:after
4899
4905
  display: none !important
4906
+ &--dense .q-tree
4907
+ &__arrow,
4908
+ &__spinner
4909
+ margin-right: 1px
4910
+ &__img
4911
+ height: 32px
4912
+ &__tickbox
4913
+ margin-right: 3px
4914
+ &__node
4915
+ padding: 0
4916
+ &:after
4917
+ top: 0
4918
+ left: -8px
4919
+ &__node-header
4920
+ margin-top: 0
4921
+ padding: 1px
4922
+ &:before
4923
+ top: 0
4924
+ left: -8px
4925
+ width: 8px
4926
+ &__node--child
4927
+ padding-left: 17px
4928
+ > .q-tree__node-header:before
4929
+ left: -25px
4930
+ width: 21px
4931
+ &__node-body
4932
+ padding: 0 0 2px
4933
+ &__node--parent > .q-tree__node-collapsible > .q-tree__node-body
4934
+ padding: 0 0 2px 20px
4935
+ &:after
4936
+ left: 8px
4937
+ &__children
4938
+ padding-left: 16px
4900
4939
  [dir=rtl]
4901
4940
  .q-tree__arrow
4902
4941
  transform: rotate3d(0, 0, 1, 180deg) #{"/* rtl:ignore */"}
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.2.3
2
+ * Quasar Framework v2.2.4
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1437,7 +1437,7 @@
1437
1437
  }
1438
1438
 
1439
1439
  var installQuasar = function (parentApp, opts = {}) {
1440
- const $q = { version: '2.2.3' };
1440
+ const $q = { version: '2.2.4' };
1441
1441
 
1442
1442
  if (globalConfigIsFrozen === false) {
1443
1443
  if (opts.config !== void 0) {
@@ -3846,7 +3846,7 @@
3846
3846
  default: null
3847
3847
  },
3848
3848
 
3849
- 'onUpdate:modelValue': Function
3849
+ 'onUpdate:modelValue': [ Function, Array ]
3850
3850
  };
3851
3851
 
3852
3852
  const useModelToggleEmits = [
@@ -8823,7 +8823,7 @@
8823
8823
 
8824
8824
  contentClass: String,
8825
8825
 
8826
- 'onUpdate:modelValue': Function
8826
+ 'onUpdate:modelValue': [ Function, Array ]
8827
8827
  },
8828
8828
 
8829
8829
  setup (props, { slots, emit }) {
@@ -11490,7 +11490,7 @@
11490
11490
  }
11491
11491
  }
11492
11492
 
11493
- date.dateHash = date.year + '/' + pad(date.month) + '/' + pad(date.day);
11493
+ date.dateHash = pad(date.year, 6) + '/' + pad(date.month) + '/' + pad(date.day);
11494
11494
  date.timeHash = pad(date.hour) + ':' + pad(date.minute) + ':' + pad(date.second) + tzString;
11495
11495
 
11496
11496
  return date
@@ -18382,6 +18382,14 @@
18382
18382
  files = [ files[ 0 ] ];
18383
18383
  }
18384
18384
 
18385
+ // Avoid duplicate files
18386
+ const filenameMap = currentFileList.map(entry => entry.name);
18387
+ files = filterFiles(files, rejectedFiles, 'duplicate', file => {
18388
+ return filenameMap.includes(file.name) === false
18389
+ });
18390
+
18391
+ if (files.length === 0) { return done() }
18392
+
18385
18393
  if (props.maxTotalSize !== void 0) {
18386
18394
  let size = append === true
18387
18395
  ? currentFileList.reduce((total, file) => total + file.size, 0)
@@ -26384,6 +26392,12 @@
26384
26392
  }
26385
26393
 
26386
26394
  function getAllOptions () {
26395
+ if (noOptions.value === true) {
26396
+ return slots[ 'no-option' ] !== void 0
26397
+ ? slots[ 'no-option' ]({ inputValue: inputValue.value })
26398
+ : void 0
26399
+ }
26400
+
26387
26401
  const fn = slots.option !== void 0
26388
26402
  ? slots.option
26389
26403
  : scope => {
@@ -26565,14 +26579,6 @@
26565
26579
  }
26566
26580
 
26567
26581
  function getMenu () {
26568
- const child = noOptions.value === true
26569
- ? (
26570
- slots[ 'no-option' ] !== void 0
26571
- ? () => slots[ 'no-option' ]({ inputValue: inputValue.value })
26572
- : void 0
26573
- )
26574
- : getAllOptions;
26575
-
26576
26582
  return vue.h(QMenu, {
26577
26583
  ref: menuRef,
26578
26584
  class: menuContentClass.value,
@@ -26597,7 +26603,7 @@
26597
26603
  onBeforeShow: onControlPopupShow,
26598
26604
  onBeforeHide: onMenuBeforeHide,
26599
26605
  onShow: onMenuShow
26600
- }, child)
26606
+ }, getAllOptions)
26601
26607
  }
26602
26608
 
26603
26609
  function onMenuBeforeHide (e) {
@@ -26654,15 +26660,7 @@
26654
26660
  ...listboxAttrs.value,
26655
26661
  onClick: prevent,
26656
26662
  onScrollPassive: onVirtualScrollEvt
26657
- }, (
26658
- noOptions.value === true
26659
- ? (
26660
- slots[ 'no-option' ] !== void 0
26661
- ? slots[ 'no-option' ]({ inputValue: inputValue.value })
26662
- : null
26663
- )
26664
- : getAllOptions()
26665
- ))
26663
+ }, getAllOptions())
26666
26664
  );
26667
26665
 
26668
26666
  return vue.h(QDialog, {
@@ -32439,21 +32437,22 @@
32439
32437
  function setHour (hour) {
32440
32438
  if (innerModel.value.hour !== hour) {
32441
32439
  innerModel.value.hour = hour;
32442
- innerModel.value.minute = null;
32443
- innerModel.value.second = null;
32440
+ verifyAndUpdate();
32444
32441
  }
32445
32442
  }
32446
32443
 
32447
32444
  function setMinute (minute) {
32448
32445
  if (innerModel.value.minute !== minute) {
32449
32446
  innerModel.value.minute = minute;
32450
- innerModel.value.second = null;
32451
- props.withSeconds !== true && updateValue({ minute });
32447
+ verifyAndUpdate();
32452
32448
  }
32453
32449
  }
32454
32450
 
32455
32451
  function setSecond (second) {
32456
- innerModel.value.second !== second && updateValue({ second });
32452
+ if (innerModel.value.second !== second) {
32453
+ innerModel.value.second = second;
32454
+ verifyAndUpdate();
32455
+ }
32457
32456
  }
32458
32457
 
32459
32458
  const setModel = {
@@ -32877,6 +32876,8 @@
32877
32876
  }
32878
32877
  });
32879
32878
 
32879
+ const tickStrategyOptions = [ 'none', 'strict', 'leaf', 'leaf-filtered' ];
32880
+
32880
32881
  var QTree = createComponent({
32881
32882
  name: 'QTree',
32882
32883
 
@@ -32900,6 +32901,8 @@
32900
32901
  default: 'children'
32901
32902
  },
32902
32903
 
32904
+ dense: Boolean,
32905
+
32903
32906
  color: String,
32904
32907
  controlColor: String,
32905
32908
  textColor: String,
@@ -32910,7 +32913,7 @@
32910
32913
  tickStrategy: {
32911
32914
  type: String,
32912
32915
  default: 'none',
32913
- validator: v => [ 'none', 'strict', 'leaf', 'leaf-filtered' ].includes(v)
32916
+ validator: v => tickStrategyOptions.includes(v)
32914
32917
  },
32915
32918
  ticked: Array, // v-model:ticked
32916
32919
  expanded: Array, // v-model:expanded
@@ -32955,7 +32958,7 @@
32955
32958
  });
32956
32959
 
32957
32960
  const classes = vue.computed(() =>
32958
- 'q-tree'
32961
+ `q-tree q-tree--${ props.dense === true ? 'dense' : 'standard' }`
32959
32962
  + (props.noConnectors === true ? ' q-tree--no-connectors' : '')
32960
32963
  + (isDark.value === true ? ' q-tree--dark' : '')
32961
32964
  + (props.color !== void 0 ? ` text-${ props.color }` : '')
@@ -33397,13 +33400,13 @@
33397
33400
 
33398
33401
  m.lazy === 'loading'
33399
33402
  ? vue.h(QSpinner, {
33400
- class: 'q-tree__spinner q-mr-xs',
33403
+ class: 'q-tree__spinner',
33401
33404
  color: computedControlColor.value
33402
33405
  })
33403
33406
  : (
33404
33407
  isParent === true
33405
33408
  ? vue.h(QIcon, {
33406
- class: 'q-tree__arrow q-mr-xs'
33409
+ class: 'q-tree__arrow'
33407
33410
  + (m.expanded === true ? ' q-tree__arrow--rotate' : ''),
33408
33411
  name: computedIcon.value,
33409
33412
  onClick (e) { onExpandClick(node, m, e); }
@@ -33413,7 +33416,7 @@
33413
33416
 
33414
33417
  m.hasTicking === true && m.noTick !== true
33415
33418
  ? vue.h(QCheckbox, {
33416
- class: 'q-mr-xs',
33419
+ class: 'q-tree__tickbox',
33417
33420
  modelValue: m.indeterminate === true ? null : m.ticked,
33418
33421
  color: computedControlColor.value,
33419
33422
  dark: isDark.value,
@@ -33805,20 +33808,15 @@
33805
33808
  }
33806
33809
 
33807
33810
  function addFilesToQueue (e, fileList) {
33808
- const processedFiles = processFiles(e, fileList, state.files.value, true);
33809
-
33810
- if (processedFiles === void 0) { return }
33811
+ const localFiles = processFiles(e, fileList, state.files.value, true);
33811
33812
 
33812
- const localFiles = processedFiles
33813
- .filter(file => state.files.value.findIndex(f => file.name === f.name) === -1);
33813
+ if (localFiles === void 0) { return }
33814
33814
 
33815
33815
  const fileInput = getFileInput();
33816
33816
  if (fileInput !== void 0 && fileInput !== null) {
33817
33817
  fileInput.value = '';
33818
33818
  }
33819
33819
 
33820
- if (localFiles === void 0) { return }
33821
-
33822
33820
  localFiles.forEach(file => {
33823
33821
  state.updateFileStatus(file, 'idle');
33824
33822
  uploadSize.value += file.size;
@@ -38734,7 +38732,7 @@
38734
38732
  });
38735
38733
 
38736
38734
  var index_umd = {
38737
- version: '2.2.3',
38735
+ version: '2.2.4',
38738
38736
  install (app, opts) {
38739
38737
  installQuasar(app, {
38740
38738
  components,