quasar 2.4.12 → 2.5.2

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 (211) hide show
  1. package/dist/api/BottomSheet.json +4 -0
  2. package/dist/api/Dialog.json +5 -1
  3. package/dist/api/Notify.json +20 -10
  4. package/dist/api/QBtnDropdown.json +4 -2
  5. package/dist/api/QCheckbox.json +27 -0
  6. package/dist/api/QEditor.json +4 -2
  7. package/dist/api/QExpansionItem.json +6 -3
  8. package/dist/api/QFab.json +4 -2
  9. package/dist/api/QFabAction.json +4 -2
  10. package/dist/api/QFile.json +4 -2
  11. package/dist/api/QImg.json +1 -2
  12. package/dist/api/QInnerLoading.json +2 -1
  13. package/dist/api/QInput.json +4 -2
  14. package/dist/api/QPagination.json +4 -2
  15. package/dist/api/QRadio.json +18 -0
  16. package/dist/api/QRange.json +9 -0
  17. package/dist/api/QScrollArea.json +13 -5
  18. package/dist/api/QSelect.json +6 -3
  19. package/dist/api/QSlider.json +9 -0
  20. package/dist/api/QSplitter.json +8 -4
  21. package/dist/api/QTable.json +9 -0
  22. package/dist/api/QTime.json +8 -2
  23. package/dist/api/QToggle.json +24 -24
  24. package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
  25. package/dist/icon-set/eva-icons.umd.prod.js +1 -1
  26. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
  27. package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
  28. package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
  29. package/dist/icon-set/line-awesome.umd.prod.js +1 -1
  30. package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
  31. package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
  32. package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
  33. package/dist/icon-set/material-icons.umd.prod.js +1 -1
  34. package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
  35. package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
  36. package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
  37. package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
  38. package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
  39. package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
  40. package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
  41. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
  42. package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
  43. package/dist/icon-set/svg-ionicons-v6.umd.prod.js +1 -1
  44. package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
  45. package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
  46. package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
  47. package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
  48. package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
  49. package/dist/icon-set/svg-mdi-v4.umd.prod.js +1 -1
  50. package/dist/icon-set/svg-mdi-v5.umd.prod.js +1 -1
  51. package/dist/icon-set/svg-mdi-v6.umd.prod.js +1 -1
  52. package/dist/icon-set/svg-themify.umd.prod.js +1 -1
  53. package/dist/icon-set/themify.umd.prod.js +1 -1
  54. package/dist/lang/ar.umd.prod.js +1 -1
  55. package/dist/lang/az-Latn.umd.prod.js +1 -1
  56. package/dist/lang/bg.umd.prod.js +1 -1
  57. package/dist/lang/bn.umd.prod.js +1 -1
  58. package/dist/lang/ca.umd.prod.js +1 -1
  59. package/dist/lang/cs.umd.prod.js +1 -1
  60. package/dist/lang/da.umd.prod.js +1 -1
  61. package/dist/lang/de.umd.prod.js +1 -1
  62. package/dist/lang/el.umd.prod.js +1 -1
  63. package/dist/lang/en-GB.umd.prod.js +1 -1
  64. package/dist/lang/en-US.umd.prod.js +1 -1
  65. package/dist/lang/eo.umd.prod.js +1 -1
  66. package/dist/lang/es.umd.prod.js +1 -1
  67. package/dist/lang/et.umd.prod.js +1 -1
  68. package/dist/lang/fa-IR.umd.prod.js +1 -1
  69. package/dist/lang/fa.umd.prod.js +1 -1
  70. package/dist/lang/fi.umd.prod.js +1 -1
  71. package/dist/lang/fr.umd.prod.js +1 -1
  72. package/dist/lang/gn.umd.prod.js +1 -1
  73. package/dist/lang/he.umd.prod.js +1 -1
  74. package/dist/lang/hr.umd.prod.js +1 -1
  75. package/dist/lang/hu.umd.prod.js +1 -1
  76. package/dist/lang/id.umd.prod.js +1 -1
  77. package/dist/lang/is.umd.prod.js +1 -1
  78. package/dist/lang/it.umd.prod.js +1 -1
  79. package/dist/lang/ja.umd.prod.js +1 -1
  80. package/dist/lang/km.umd.prod.js +1 -1
  81. package/dist/lang/ko-KR.umd.prod.js +1 -1
  82. package/dist/lang/kur-CKB.umd.prod.js +1 -1
  83. package/dist/lang/lt.umd.prod.js +1 -1
  84. package/dist/lang/lu.umd.prod.js +1 -1
  85. package/dist/lang/lv.umd.prod.js +1 -1
  86. package/dist/lang/ml.umd.prod.js +1 -1
  87. package/dist/lang/ms.umd.prod.js +1 -1
  88. package/dist/lang/my.umd.prod.js +1 -1
  89. package/dist/lang/nb-NO.umd.prod.js +1 -1
  90. package/dist/lang/nl.umd.prod.js +1 -1
  91. package/dist/lang/pl.umd.prod.js +1 -1
  92. package/dist/lang/pt-BR.umd.prod.js +1 -1
  93. package/dist/lang/pt.umd.prod.js +1 -1
  94. package/dist/lang/ro.umd.prod.js +1 -1
  95. package/dist/lang/ru.umd.prod.js +1 -1
  96. package/dist/lang/sk.umd.prod.js +1 -1
  97. package/dist/lang/sl.umd.prod.js +1 -1
  98. package/dist/lang/sr-CYR.umd.prod.js +1 -1
  99. package/dist/lang/sr.umd.prod.js +1 -1
  100. package/dist/lang/sv.umd.prod.js +1 -1
  101. package/dist/lang/ta.umd.prod.js +1 -1
  102. package/dist/lang/th.umd.prod.js +1 -1
  103. package/dist/lang/tr.umd.prod.js +1 -1
  104. package/dist/lang/ug.umd.prod.js +1 -1
  105. package/dist/lang/uk.umd.prod.js +1 -1
  106. package/dist/lang/vi.umd.prod.js +1 -1
  107. package/dist/lang/zh-CN.umd.prod.js +1 -1
  108. package/dist/lang/zh-TW.umd.prod.js +1 -1
  109. package/dist/quasar.cjs.prod.js +2 -2
  110. package/dist/quasar.css +38 -10
  111. package/dist/quasar.esm.prod.js +2 -2
  112. package/dist/quasar.prod.css +1 -1
  113. package/dist/quasar.rtl.css +55 -23
  114. package/dist/quasar.rtl.prod.css +1 -1
  115. package/dist/quasar.sass +31 -11
  116. package/dist/quasar.umd.js +313 -163
  117. package/dist/quasar.umd.prod.js +2 -2
  118. package/dist/ssr-directives/Morph.js +1 -1
  119. package/dist/transforms/auto-import.json +39 -3
  120. package/dist/transforms/import-map.json +18 -0
  121. package/dist/types/api/slider.d.ts +6 -7
  122. package/dist/types/api/vue-prop-types.ts +15 -0
  123. package/dist/types/api.d.ts +1 -0
  124. package/dist/types/index.d.ts +110 -184
  125. package/dist/types/utils/date.d.ts +25 -13
  126. package/dist/types/utils/dom.d.ts +4 -2
  127. package/dist/types/utils.d.ts +3 -1
  128. package/dist/vetur/quasar-attributes.json +62 -42
  129. package/dist/vetur/quasar-tags.json +8 -3
  130. package/dist/web-types/web-types.json +103 -58
  131. package/package.json +13 -3
  132. package/src/components/avatar/__tests__/QAvatar.spec.js +121 -0
  133. package/src/components/badge/__tests__/QBadge.spec.js +74 -0
  134. package/src/components/breadcrumbs/QBreadcrumbs.js +1 -1
  135. package/src/components/btn/__tests__/QBtn.spec.js +55 -0
  136. package/src/components/btn/__tests__/use-btn.spec.js +189 -0
  137. package/src/components/btn-dropdown/QBtnDropdown.json +4 -2
  138. package/src/components/checkbox/QCheckbox.js +34 -3
  139. package/src/components/checkbox/QCheckbox.json +17 -0
  140. package/src/components/checkbox/QCheckbox.sass +17 -5
  141. package/src/components/checkbox/use-checkbox.js +4 -0
  142. package/src/components/checkbox/use-checkbox.json +18 -0
  143. package/src/components/chip/__tests__/QChip.spec.js +155 -0
  144. package/src/components/date/__tests__/QDate.spec.js +189 -0
  145. package/src/components/date/__tests__/use-datetime.spec.js +83 -0
  146. package/src/components/dialog/__tests__/QDialog.spec.js +129 -0
  147. package/src/components/editor/QEditor.json +3 -1
  148. package/src/components/editor/__tests__/QEditor.spec.js +195 -0
  149. package/src/components/expansion-item/QExpansionItem.json +6 -3
  150. package/src/components/fab/use-fab.json +4 -2
  151. package/src/components/field/QField.sass +2 -0
  152. package/src/components/file/QFile.json +4 -2
  153. package/src/components/form/QForm.js +26 -24
  154. package/src/components/img/QImg.json +2 -3
  155. package/src/components/inner-loading/QInnerLoading.json +2 -1
  156. package/src/components/input/QInput.js +9 -0
  157. package/src/components/input/QInput.json +4 -2
  158. package/src/components/input/__tests__/QInput.spec.js +105 -0
  159. package/src/components/input/__tests__/use-mask.spec.js +29 -0
  160. package/src/components/menu/__tests__/QMenu.spec.js +610 -0
  161. package/src/components/menu/__tests__/WrapperOne.vue +51 -0
  162. package/src/components/menu/__tests__/WrapperTwo.vue +38 -0
  163. package/src/components/pagination/QPagination.json +4 -2
  164. package/src/components/radio/QRadio.js +26 -1
  165. package/src/components/radio/QRadio.json +16 -0
  166. package/src/components/radio/QRadio.sass +17 -6
  167. package/src/components/scroll-area/QScrollArea.json +13 -5
  168. package/src/components/select/QSelect.js +1 -1
  169. package/src/components/select/QSelect.json +6 -3
  170. package/src/components/select/__tests__/QSelect.spec.js +2003 -0
  171. package/src/components/select/__tests__/WrapperOne.vue +28 -0
  172. package/src/components/slider/use-slider.json +9 -0
  173. package/src/components/splitter/QSplitter.json +8 -4
  174. package/src/components/stepper/QStep.js +1 -1
  175. package/src/components/table/QTable.json +9 -0
  176. package/src/components/table/__tests__/QTable.spec.js +635 -0
  177. package/src/components/table/__tests__/QTd.spec.js +35 -0
  178. package/src/components/table/__tests__/QTh.spec.js +27 -0
  179. package/src/components/table/__tests__/QTr.spec.js +27 -0
  180. package/src/components/tabs/__tests__/QRouteTab.spec.js +9 -0
  181. package/src/components/tabs/__tests__/QTab.spec.js +79 -0
  182. package/src/components/tabs/__tests__/QTabs.spec.js +147 -0
  183. package/src/components/time/QTime.json +2 -2
  184. package/src/components/toggle/QToggle.js +5 -13
  185. package/src/components/toggle/QToggle.json +3 -12
  186. package/src/components/tree/QTree.js +39 -41
  187. package/src/components/uploader/__tests__/QUploader.spec.js +161 -0
  188. package/src/components/virtual-scroll/use-virtual-scroll.js +6 -4
  189. package/src/composables/private/__tests__/FieldWrapper.vue +39 -0
  190. package/src/composables/private/__tests__/use-anchor.spec.js +99 -0
  191. package/src/composables/private/__tests__/use-field.spec.js +351 -0
  192. package/src/composables/private/__tests__/use-file.spec.js +69 -0
  193. package/src/composables/private/__tests__/use-form.spec.js +11 -0
  194. package/src/composables/private/__tests__/use-fullscreen.spec.js +37 -0
  195. package/src/composables/private/__tests__/use-model-toggle.spec.js +306 -0
  196. package/src/composables/private/__tests__/use-portal.spec.js +4 -0
  197. package/src/composables/private/__tests__/use-router-link.spec.js +55 -0
  198. package/src/composables/private/__tests__/use-size.spec.js +37 -0
  199. package/src/composables/private/__tests__/use-transition.spec.js +108 -0
  200. package/src/composables/private/__tests__/use-validate.spec.js +111 -0
  201. package/src/composables/private/use-fullscreen.js +1 -1
  202. package/src/composables/private/use-model-toggle.js +1 -1
  203. package/src/composables/private/use-validate.js +22 -22
  204. package/src/plugins/BottomSheet.json +1 -0
  205. package/src/plugins/Dialog.json +1 -0
  206. package/src/plugins/Meta.js +1 -1
  207. package/src/plugins/Notify.json +20 -10
  208. package/src/plugins/Screen.js +15 -9
  209. package/src/utils/date.js +111 -32
  210. package/src/utils/private/global-dialog.json +3 -0
  211. package/src/utils/private/vm.js +14 -8
@@ -2,7 +2,7 @@
2
2
  "$schema": "",
3
3
  "framework": "vue",
4
4
  "name": "quasar",
5
- "version": "2.4.12",
5
+ "version": "2.5.2",
6
6
  "contributions": {
7
7
  "html": {
8
8
  "types-syntax": "typescript",
@@ -944,7 +944,7 @@
944
944
  "name": "content-style",
945
945
  "value": {
946
946
  "kind": "expression",
947
- "type": "any[]|string|object"
947
+ "type": "string|any[]|object"
948
948
  },
949
949
  "description": "Style definitions to be attributed to the menu\n\nExamples:\nbackground-color: #ff0000\n:content-style=\"{ backgroundColor: '#ff0000' }\"",
950
950
  "doc-url": "https://v2.quasar.dev/vue-components/button-dropdown"
@@ -953,7 +953,7 @@
953
953
  "name": "content-class",
954
954
  "value": {
955
955
  "kind": "expression",
956
- "type": "any[]|string|object"
956
+ "type": "string|any[]|object"
957
957
  },
958
958
  "description": "Class definitions to be attributed to the menu\n\nExamples:\nmy-special-class\n:content-class=\"{ 'my-special-class': <condition> }\"",
959
959
  "doc-url": "https://v2.quasar.dev/vue-components/button-dropdown"
@@ -2728,6 +2728,33 @@
2728
2728
  "doc-url": "https://v2.quasar.dev/vue-components/checkbox",
2729
2729
  "type": "boolean"
2730
2730
  },
2731
+ {
2732
+ "name": "checked-icon",
2733
+ "value": {
2734
+ "kind": "expression",
2735
+ "type": "string"
2736
+ },
2737
+ "description": "The icon to be used when the model is truthy (instead of the default design)\n\nExamples:\nvisibility",
2738
+ "doc-url": "https://v2.quasar.dev/vue-components/checkbox"
2739
+ },
2740
+ {
2741
+ "name": "unchecked-icon",
2742
+ "value": {
2743
+ "kind": "expression",
2744
+ "type": "string"
2745
+ },
2746
+ "description": "The icon to be used when the toggle is falsy (instead of the default design)\n\nExamples:\nvisibility_off",
2747
+ "doc-url": "https://v2.quasar.dev/vue-components/checkbox"
2748
+ },
2749
+ {
2750
+ "name": "indeterminate-icon",
2751
+ "value": {
2752
+ "kind": "expression",
2753
+ "type": "string"
2754
+ },
2755
+ "description": "The icon to be used when the model is indeterminate (instead of the default design)\n\nExamples:\nhelp",
2756
+ "doc-url": "https://v2.quasar.dev/vue-components/checkbox"
2757
+ },
2731
2758
  {
2732
2759
  "name": "color",
2733
2760
  "value": {
@@ -4637,7 +4664,7 @@
4637
4664
  "name": "content-class",
4638
4665
  "value": {
4639
4666
  "kind": "expression",
4640
- "type": "object|any[]|string"
4667
+ "type": "string|any[]|object"
4641
4668
  },
4642
4669
  "description": "CSS classes for the input area\n\nExamples:\nmy-special-class\n:content-class=\"{ 'my-special-class': <condition> }\"",
4643
4670
  "doc-url": "https://v2.quasar.dev/vue-components/editor"
@@ -4794,7 +4821,7 @@
4794
4821
  "name": "expand-icon-class",
4795
4822
  "value": {
4796
4823
  "kind": "expression",
4797
- "type": "any[]|string|object"
4824
+ "type": "string|any[]|object"
4798
4825
  },
4799
4826
  "description": "Apply custom class(es) to the expand icon item section\n\nExamples:\ntext-purple",
4800
4827
  "doc-url": "https://v2.quasar.dev/vue-components/expansion-item"
@@ -4956,7 +4983,7 @@
4956
4983
  "name": "header-style",
4957
4984
  "value": {
4958
4985
  "kind": "expression",
4959
- "type": "any[]|string|object"
4986
+ "type": "string|any[]|object"
4960
4987
  },
4961
4988
  "description": "Apply custom style to the header\n\nExamples:\nbackground: '#ff0000'\n:header-style=\"{ backgroundColor: '#ff0000' }\"",
4962
4989
  "doc-url": "https://v2.quasar.dev/vue-components/expansion-item"
@@ -4965,7 +4992,7 @@
4965
4992
  "name": "header-class",
4966
4993
  "value": {
4967
4994
  "kind": "expression",
4968
- "type": "any[]|string|object"
4995
+ "type": "string|any[]|object"
4969
4996
  },
4970
4997
  "description": "Apply custom class(es) to the header\n\nExamples:\nmy-custom-class\n:header-class=\"{ 'my-custom-class': someCondition }\"",
4971
4998
  "doc-url": "https://v2.quasar.dev/vue-components/expansion-item"
@@ -5199,7 +5226,7 @@
5199
5226
  "name": "label-class",
5200
5227
  "value": {
5201
5228
  "kind": "expression",
5202
- "type": "any[]|string|object"
5229
+ "type": "string|any[]|object"
5203
5230
  },
5204
5231
  "description": "Class definitions to be attributed to the label container\n\nExamples:\nmy-special-class\n:input-class=\"{ 'my-special-class': <condition> }\"",
5205
5232
  "doc-url": "https://v2.quasar.dev/vue-components/floating-action-button"
@@ -5208,7 +5235,7 @@
5208
5235
  "name": "label-style",
5209
5236
  "value": {
5210
5237
  "kind": "expression",
5211
- "type": "any[]|string|object"
5238
+ "type": "string|any[]|object"
5212
5239
  },
5213
5240
  "description": "Style definitions to be attributed to the label container\n\nExamples:\nbackground-color: #ff0000\n:input-style=\"{ backgroundColor: '#ff0000' }\"",
5214
5241
  "doc-url": "https://v2.quasar.dev/vue-components/floating-action-button"
@@ -5544,7 +5571,7 @@
5544
5571
  "name": "label-class",
5545
5572
  "value": {
5546
5573
  "kind": "expression",
5547
- "type": "any[]|string|object"
5574
+ "type": "string|any[]|object"
5548
5575
  },
5549
5576
  "description": "Class definitions to be attributed to the label container\n\nExamples:\nmy-special-class\n:input-class=\"{ 'my-special-class': <condition> }\"",
5550
5577
  "doc-url": "https://v2.quasar.dev/vue-components/floating-action-button"
@@ -5553,7 +5580,7 @@
5553
5580
  "name": "label-style",
5554
5581
  "value": {
5555
5582
  "kind": "expression",
5556
- "type": "any[]|string|object"
5583
+ "type": "string|any[]|object"
5557
5584
  },
5558
5585
  "description": "Style definitions to be attributed to the label container\n\nExamples:\nbackground-color: #ff0000\n:input-style=\"{ backgroundColor: '#ff0000' }\"",
5559
5586
  "doc-url": "https://v2.quasar.dev/vue-components/floating-action-button"
@@ -6628,7 +6655,7 @@
6628
6655
  "name": "input-class",
6629
6656
  "value": {
6630
6657
  "kind": "expression",
6631
- "type": "any[]|string|object"
6658
+ "type": "string|any[]|object"
6632
6659
  },
6633
6660
  "description": "Class definitions to be attributed to the underlying selection container\n\nExamples:\nmy-special-class\n:input-class=\"{ 'my-special-class': <condition> }\"",
6634
6661
  "doc-url": "https://v2.quasar.dev/vue-components/file"
@@ -6637,7 +6664,7 @@
6637
6664
  "name": "input-style",
6638
6665
  "value": {
6639
6666
  "kind": "expression",
6640
- "type": "any[]|string|object"
6667
+ "type": "string|any[]|object"
6641
6668
  },
6642
6669
  "description": "Style definitions to be attributed to the underlying selection container\n\nExamples:\nbackground-color: #ff0000\n:input-style=\"{ backgroundColor: '#ff0000' }\"",
6643
6670
  "doc-url": "https://v2.quasar.dev/vue-components/file"
@@ -7112,7 +7139,7 @@
7112
7139
  "name": "ratio",
7113
7140
  "value": {
7114
7141
  "kind": "expression",
7115
- "type": "string|number|string|number"
7142
+ "type": "string|number"
7116
7143
  },
7117
7144
  "description": "Force the component to maintain an aspect ratio\n\nExamples:\n:ratio=\"4/3\"\n:ratio=\"16/9\"\nratio=\"1\"\n(Number format) :ratio=\"16/9\"\n(String format) ratio=\"1\"",
7118
7145
  "doc-url": "https://v2.quasar.dev/vue-components/img"
@@ -7562,7 +7589,7 @@
7562
7589
  "name": "label-style",
7563
7590
  "value": {
7564
7591
  "kind": "expression",
7565
- "type": "any[]|string|object"
7592
+ "type": "string|any[]|object"
7566
7593
  },
7567
7594
  "description": "Apply custom style to the label; Works along the 'label' prop only\n\nExamples:\nfont-size: 28px\n:label-style=\"{ color: '#ff0000' }\"",
7568
7595
  "doc-url": "https://v2.quasar.dev/vue-components/inner-loading"
@@ -8040,7 +8067,7 @@
8040
8067
  "name": "input-class",
8041
8068
  "value": {
8042
8069
  "kind": "expression",
8043
- "type": "any[]|string|object"
8070
+ "type": "string|any[]|object"
8044
8071
  },
8045
8072
  "description": "Class definitions to be attributed to the underlying input tag\n\nExamples:\nmy-special-class\n:input-class=\"{ 'my-special-class': <condition> }\"",
8046
8073
  "doc-url": "https://v2.quasar.dev/vue-components/input"
@@ -8049,7 +8076,7 @@
8049
8076
  "name": "input-style",
8050
8077
  "value": {
8051
8078
  "kind": "expression",
8052
- "type": "any[]|string|object"
8079
+ "type": "string|any[]|object"
8053
8080
  },
8054
8081
  "description": "Style definitions to be attributed to the underlying input tag\n\nExamples:\nbackground-color: #ff0000\n:input-style=\"{ backgroundColor: '#ff0000' }\"",
8055
8082
  "doc-url": "https://v2.quasar.dev/vue-components/input"
@@ -9980,7 +10007,7 @@
9980
10007
  "name": "input-style",
9981
10008
  "value": {
9982
10009
  "kind": "expression",
9983
- "type": "any[]|string|object"
10010
+ "type": "string|any[]|object"
9984
10011
  },
9985
10012
  "description": "Style definitions to be attributed to the input (if using one)\n\nExamples:\nbackground-color: #ff0000\n:input-style=\"{ backgroundColor: '#ff0000' }\"",
9986
10013
  "doc-url": "https://v2.quasar.dev/vue-components/pagination"
@@ -9989,7 +10016,7 @@
9989
10016
  "name": "input-class",
9990
10017
  "value": {
9991
10018
  "kind": "expression",
9992
- "type": "any[]|string|object"
10019
+ "type": "string|any[]|object"
9993
10020
  },
9994
10021
  "description": "Class definitions to be attributed to the input (if using one)\n\nExamples:\nmy-special-class\n:input-class=\"{ 'my-special-class': <condition> }\"",
9995
10022
  "doc-url": "https://v2.quasar.dev/vue-components/pagination"
@@ -10887,6 +10914,24 @@
10887
10914
  "doc-url": "https://v2.quasar.dev/vue-components/radio",
10888
10915
  "type": "boolean"
10889
10916
  },
10917
+ {
10918
+ "name": "checked-icon",
10919
+ "value": {
10920
+ "kind": "expression",
10921
+ "type": "string"
10922
+ },
10923
+ "description": "The icon to be used when selected (instead of the default design)\n\nExamples:\nvisibility",
10924
+ "doc-url": "https://v2.quasar.dev/vue-components/radio"
10925
+ },
10926
+ {
10927
+ "name": "unchecked-icon",
10928
+ "value": {
10929
+ "kind": "expression",
10930
+ "type": "string"
10931
+ },
10932
+ "description": "The icon to be used when un-selected (instead of the default design)\n\nExamples:\nvisibility_off",
10933
+ "doc-url": "https://v2.quasar.dev/vue-components/radio"
10934
+ },
10890
10935
  {
10891
10936
  "name": "color",
10892
10937
  "value": {
@@ -11715,7 +11760,7 @@
11715
11760
  "name": "bar-style",
11716
11761
  "value": {
11717
11762
  "kind": "expression",
11718
- "type": "any[]|string|object"
11763
+ "type": "string|any[]|object"
11719
11764
  },
11720
11765
  "description": "Object with CSS properties and values for custom styling the scrollbars (both vertical and horizontal)\n\nExamples:\n:bar-style=\"{ borderRadius: '5px', background: 'red', opacity: 1 }\"",
11721
11766
  "doc-url": "https://v2.quasar.dev/vue-components/scroll-area"
@@ -11724,7 +11769,7 @@
11724
11769
  "name": "vertical-bar-style",
11725
11770
  "value": {
11726
11771
  "kind": "expression",
11727
- "type": "any[]|string|object"
11772
+ "type": "string|any[]|object"
11728
11773
  },
11729
11774
  "description": "Object with CSS properties and values for custom styling the vertical scrollbar; Is applied on top of 'bar-style' prop\n\nExamples:\n:bar-style=\"{ right: '4px', borderRadius: '5px', background: 'red', width: '10px', opacity: 1 }\"",
11730
11775
  "doc-url": "https://v2.quasar.dev/vue-components/scroll-area"
@@ -11733,7 +11778,7 @@
11733
11778
  "name": "horizontal-bar-style",
11734
11779
  "value": {
11735
11780
  "kind": "expression",
11736
- "type": "any[]|string|object"
11781
+ "type": "string|any[]|object"
11737
11782
  },
11738
11783
  "description": "Object with CSS properties and values for custom styling the horizontal scrollbar; Is applied on top of 'bar-style' prop\n\nExamples:\n:bar-style=\"{ bottom: '4px', borderRadius: '5px', background: 'red', height: '10px', opacity: 1 }\"",
11739
11784
  "doc-url": "https://v2.quasar.dev/vue-components/scroll-area"
@@ -11769,7 +11814,7 @@
11769
11814
  "name": "content-style",
11770
11815
  "value": {
11771
11816
  "kind": "expression",
11772
- "type": "any[]|string|object"
11817
+ "type": "string|any[]|object"
11773
11818
  },
11774
11819
  "description": "Object with CSS properties and values for styling the container of QScrollArea\n\nExamples:\n:content-style=\"{ backgroundColor: '#C0C0C0' }\"",
11775
11820
  "doc-url": "https://v2.quasar.dev/vue-components/scroll-area"
@@ -11778,7 +11823,7 @@
11778
11823
  "name": "content-active-style",
11779
11824
  "value": {
11780
11825
  "kind": "expression",
11781
- "type": "any[]|string|object"
11826
+ "type": "string|any[]|object"
11782
11827
  },
11783
11828
  "description": "Object with CSS properties and values for styling the container of QScrollArea when scroll area becomes active (is mouse hovered)\n\nExamples:\n:content-active-style=\"{ backgroundColor: 'white' }\"",
11784
11829
  "doc-url": "https://v2.quasar.dev/vue-components/scroll-area"
@@ -12541,7 +12586,7 @@
12541
12586
  "name": "popup-content-style",
12542
12587
  "value": {
12543
12588
  "kind": "expression",
12544
- "type": "any[]|string|object"
12589
+ "type": "string|any[]|object"
12545
12590
  },
12546
12591
  "description": "Style definitions to be attributed to the popup content\n\nExamples:\nbackground-color: #ff0000\n:popup-content-style=\"{ backgroundColor: '#ff0000' }\"",
12547
12592
  "doc-url": "https://v2.quasar.dev/vue-components/select"
@@ -12619,7 +12664,7 @@
12619
12664
  "name": "input-class",
12620
12665
  "value": {
12621
12666
  "kind": "expression",
12622
- "type": "any[]|string|object"
12667
+ "type": "string|any[]|object"
12623
12668
  },
12624
12669
  "description": "Class definitions to be attributed to the underlying input tag\n\nExamples:\nmy-special-class\n:input-class=\"{ 'my-special-class': <condition> }\"",
12625
12670
  "doc-url": "https://v2.quasar.dev/vue-components/select"
@@ -12628,7 +12673,7 @@
12628
12673
  "name": "input-style",
12629
12674
  "value": {
12630
12675
  "kind": "expression",
12631
- "type": "any[]|string|object"
12676
+ "type": "string|any[]|object"
12632
12677
  },
12633
12678
  "description": "Style definitions to be attributed to the underlying input tag\n\nExamples:\nbackground-color: #ff0000\n:input-style=\"{ backgroundColor: '#ff0000' }\"",
12634
12679
  "doc-url": "https://v2.quasar.dev/vue-components/select"
@@ -14527,7 +14572,7 @@
14527
14572
  "name": "before-class",
14528
14573
  "value": {
14529
14574
  "kind": "expression",
14530
- "type": "any[]|string|object"
14575
+ "type": "string|any[]|object"
14531
14576
  },
14532
14577
  "description": "Class definitions to be attributed to the 'before' panel\n\nExamples:\nbg-deep-orange\n:before-class=\"{ 'my-special-class': <condition> }\"",
14533
14578
  "doc-url": "https://v2.quasar.dev/vue-components/splitter"
@@ -14536,7 +14581,7 @@
14536
14581
  "name": "after-class",
14537
14582
  "value": {
14538
14583
  "kind": "expression",
14539
- "type": "any[]|string|object"
14584
+ "type": "string|any[]|object"
14540
14585
  },
14541
14586
  "description": "Class definitions to be attributed to the 'after' panel\n\nExamples:\nbg-deep-orange\n:after-class=\"{ 'my-special-class': <condition> }\"",
14542
14587
  "doc-url": "https://v2.quasar.dev/vue-components/splitter"
@@ -14545,7 +14590,7 @@
14545
14590
  "name": "separator-class",
14546
14591
  "value": {
14547
14592
  "kind": "expression",
14548
- "type": "any[]|string|object"
14593
+ "type": "string|any[]|object"
14549
14594
  },
14550
14595
  "description": "Class definitions to be attributed to the splitter separator\n\nExamples:\nbg-deep-orange\n:separator-class=\"{ 'my-special-class': <condition> }\"",
14551
14596
  "doc-url": "https://v2.quasar.dev/vue-components/splitter"
@@ -14554,7 +14599,7 @@
14554
14599
  "name": "separator-style",
14555
14600
  "value": {
14556
14601
  "kind": "expression",
14557
- "type": "any[]|string|object"
14602
+ "type": "string|any[]|object"
14558
14603
  },
14559
14604
  "description": "Style definitions to be attributed to the splitter separator\n\nExamples:\nbackground-color: #ff0000\n:separator-style=\"{ backgroundColor: '#ff0000' }\"",
14560
14605
  "doc-url": "https://v2.quasar.dev/vue-components/splitter"
@@ -17394,6 +17439,33 @@
17394
17439
  "doc-url": "https://v2.quasar.dev/vue-components/toggle",
17395
17440
  "type": "boolean"
17396
17441
  },
17442
+ {
17443
+ "name": "checked-icon",
17444
+ "value": {
17445
+ "kind": "expression",
17446
+ "type": "string"
17447
+ },
17448
+ "description": "The icon to be used when the toggle is on\n\nExamples:\nvisibility",
17449
+ "doc-url": "https://v2.quasar.dev/vue-components/toggle"
17450
+ },
17451
+ {
17452
+ "name": "unchecked-icon",
17453
+ "value": {
17454
+ "kind": "expression",
17455
+ "type": "string"
17456
+ },
17457
+ "description": "The icon to be used when the toggle is off\n\nExamples:\nvisibility_off",
17458
+ "doc-url": "https://v2.quasar.dev/vue-components/toggle"
17459
+ },
17460
+ {
17461
+ "name": "indeterminate-icon",
17462
+ "value": {
17463
+ "kind": "expression",
17464
+ "type": "string"
17465
+ },
17466
+ "description": "The icon to be used when the model is indeterminate\n\nExamples:\nhelp",
17467
+ "doc-url": "https://v2.quasar.dev/vue-components/toggle"
17468
+ },
17397
17469
  {
17398
17470
  "name": "color",
17399
17471
  "value": {
@@ -17461,33 +17533,6 @@
17461
17533
  "description": "Icon name following Quasar convention; Make sure you have the icon library installed unless you are using 'img:' prefix\n\nExamples:\nmap\nion-add\nimg:https://cdn.quasar.dev/logo-v2/svg/logo.svg\nimg:path/to/some_image.png",
17462
17534
  "doc-url": "https://v2.quasar.dev/vue-components/toggle"
17463
17535
  },
17464
- {
17465
- "name": "checked-icon",
17466
- "value": {
17467
- "kind": "expression",
17468
- "type": "string"
17469
- },
17470
- "description": "The icon to be used when the toggle is on\n\nExamples:\nvisibility",
17471
- "doc-url": "https://v2.quasar.dev/vue-components/toggle"
17472
- },
17473
- {
17474
- "name": "unchecked-icon",
17475
- "value": {
17476
- "kind": "expression",
17477
- "type": "string"
17478
- },
17479
- "description": "The icon to be used when the toggle is off\n\nExamples:\nvisibility_off",
17480
- "doc-url": "https://v2.quasar.dev/vue-components/toggle"
17481
- },
17482
- {
17483
- "name": "indeterminate-icon",
17484
- "value": {
17485
- "kind": "expression",
17486
- "type": "string"
17487
- },
17488
- "description": "The icon to be used when the model is indeterminate\n\nExamples:\nhelp",
17489
- "doc-url": "https://v2.quasar.dev/vue-components/toggle"
17490
- },
17491
17536
  {
17492
17537
  "name": "icon-color",
17493
17538
  "value": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "quasar",
3
- "version": "2.4.12",
3
+ "version": "2.5.2",
4
4
  "description": "Build high-performance VueJS user interfaces (SPA, PWA, SSR, Mobile and Desktop) in record time",
5
5
  "main": "dist/quasar.cjs.prod.js",
6
6
  "module": "dist/quasar.esm.prod.js",
@@ -27,7 +27,10 @@
27
27
  "build": "node build/script.build.js",
28
28
  "test": "yarn lint && yarn build",
29
29
  "lint": "eslint --ext .js,.vue src dev",
30
- "lint-fix": "eslint --ext .js,.vue src dev --fix"
30
+ "lint-fix": "eslint --ext .js,.vue src dev --fix",
31
+ "test:unit": "cd ./dev && cypress open-ct && cd ..",
32
+ "test:unit:ci": "cd ./dev && cypress run-ct && cd ..",
33
+ "test:create": "node ./test/cypress/helpers/create-spec.js -c"
31
34
  },
32
35
  "repository": {
33
36
  "type": "git",
@@ -64,6 +67,7 @@
64
67
  "@babel/eslint-parser": "^7.13.14",
65
68
  "@quasar/app": "^3.0.0",
66
69
  "@quasar/extras": "^1.12.0",
70
+ "@quasar/quasar-app-extension-testing-e2e-cypress": "^4.0.1",
67
71
  "@rollup/plugin-node-resolve": "^11.2.1",
68
72
  "@rollup/plugin-replace": "^2.3.3",
69
73
  "babel-preset-es2015-rollup": "^3.0.0",
@@ -72,7 +76,9 @@
72
76
  "eslint": "^7.4.0",
73
77
  "eslint-config-standard": "^16.0.2",
74
78
  "eslint-friendly-formatter": "^4.0.1",
79
+ "eslint-plugin-cypress": "^2.12.1",
75
80
  "eslint-plugin-import": "^2.18.2",
81
+ "eslint-plugin-no-only-tests": "^2.6.0",
76
82
  "eslint-plugin-node": "^11.1.0",
77
83
  "eslint-plugin-promise": "^4.2.1",
78
84
  "eslint-plugin-vue": "^7.0.0",
@@ -81,13 +87,17 @@
81
87
  "json-beautify": "^1.1.1",
82
88
  "module-alias": "^2.2.2",
83
89
  "prettier": "^2.4.1",
90
+ "quasar": "^2.1.9",
84
91
  "recast": "^0.18.5",
85
92
  "rimraf": "^3.0.1",
86
93
  "rollup": "^2.34.0",
87
94
  "rollup-plugin-typescript2": "^0.29.0",
88
95
  "table": "^6.0.4",
89
96
  "tslib": "^2.0.3",
90
- "uglify-es": "^3.3.9"
97
+ "uglify-es": "^3.3.9",
98
+ "vue": "^3.0.0",
99
+ "vue-router": "^4.0.0",
100
+ "yargs": "^17.3.0"
91
101
  },
92
102
  "vetur": {
93
103
  "tags": "dist/vetur/quasar-tags.json",
@@ -0,0 +1,121 @@
1
+ import { mount } from '@cypress/vue'
2
+ import QAvatar from '../QAvatar'
3
+
4
+ describe('Avatar API', () => {
5
+ describe('Props', () => {
6
+ describe('Category: content', () => {
7
+ describe('(prop): icon', () => {
8
+ it('should render an icon', () => {
9
+ const icon = 'bug_report'
10
+ mount(QAvatar, {
11
+ props: {
12
+ icon,
13
+ color: 'grey'
14
+ }
15
+ })
16
+
17
+ cy.get('.q-avatar')
18
+ .get('.q-icon')
19
+ .should('have.text', `${ icon }`)
20
+ })
21
+ })
22
+ })
23
+
24
+ describe('Category: style', () => {
25
+ describe('(prop): font-size', () => {
26
+ it('should set the font-size', () => {
27
+ const size = '40px'
28
+ // Doing em/rem units here does not work
29
+ // Cypress looks at actual computed values in the browser
30
+ const fontSize = '32px'
31
+ mount(QAvatar, {
32
+ props: {
33
+ size,
34
+ fontSize,
35
+ color: 'grey'
36
+ }
37
+ })
38
+
39
+ cy.get('.q-avatar')
40
+ .should('have.css', 'font-size', size)
41
+ .get('.q-avatar__content')
42
+ .should('have.css', 'font-size', fontSize)
43
+ })
44
+ })
45
+
46
+ describe('(prop): color', () => {
47
+ it('should set a background color', () => {
48
+ const color = 'red'
49
+ mount(QAvatar, {
50
+ props: {
51
+ color
52
+ }
53
+ })
54
+
55
+ cy.get('.q-avatar')
56
+ .should('have.class', `bg-${ color }`)
57
+ })
58
+ })
59
+
60
+ describe('(prop): text-color', () => {
61
+ it('should set a text color', () => {
62
+ const textColor = 'red'
63
+ mount(QAvatar, {
64
+ props: {
65
+ textColor
66
+ }
67
+ })
68
+
69
+ cy.get('.q-avatar')
70
+ .should('have.class', `text-${ textColor }`)
71
+ })
72
+ })
73
+
74
+ describe('(prop): square', () => {
75
+ it('should create a square avatar', () => {
76
+ mount(QAvatar, {
77
+ props: {
78
+ square: true,
79
+ color: 'grey'
80
+ }
81
+ })
82
+
83
+ cy.get('.q-avatar')
84
+ .should('have.class', 'q-avatar--square')
85
+ .should('have.css', 'border-radius', '0px')
86
+ })
87
+ })
88
+
89
+ describe('(prop): rounded', () => {
90
+ it('should create a rounded avatar', () => {
91
+ mount(QAvatar, {
92
+ props: {
93
+ rounded: true,
94
+ color: 'grey'
95
+ }
96
+ })
97
+
98
+ cy.get('.q-avatar')
99
+ .should('have.class', 'rounded-borders')
100
+ })
101
+ })
102
+ })
103
+ })
104
+
105
+ describe('Slots', () => {
106
+ describe('(slot): default', () => {
107
+ it('render the text in the default slot', () => {
108
+ const text = 'QQ'
109
+ mount(QAvatar, {
110
+ slots: {
111
+ // Using only a string here results in an error, this is a workaround
112
+ default: () => text
113
+ }
114
+ })
115
+
116
+ cy.get('.q-avatar')
117
+ .should('have.text', text)
118
+ })
119
+ })
120
+ })
121
+ })
@@ -0,0 +1,74 @@
1
+ // import { mount } from '@cypress/vue'
2
+ // import QBadge from '../QBadge'
3
+
4
+ // const snapshotOptions = { customSnapshotsDir: '../src/components/badge/__tests__' }
5
+
6
+ describe('Badge API', () => {
7
+ describe('Props', () => {
8
+ describe('Category: content', () => {
9
+ describe('(prop): floating', () => {
10
+ it.skip(' ', () => {
11
+ //
12
+ })
13
+ })
14
+
15
+ describe('(prop): multi-line', () => {
16
+ it.skip(' ', () => {
17
+ //
18
+ })
19
+ })
20
+
21
+ describe('(prop): label', () => {
22
+ it.skip(' ', () => {
23
+ //
24
+ })
25
+ })
26
+
27
+ describe('(prop): align', () => {
28
+ it.skip(' ', () => {
29
+ //
30
+ })
31
+ })
32
+ })
33
+
34
+ describe('Category: style', () => {
35
+ describe('(prop): color', () => {
36
+ it.skip(' ', () => {
37
+ //
38
+ })
39
+ })
40
+
41
+ describe('(prop): text-color', () => {
42
+ it.skip(' ', () => {
43
+ //
44
+ })
45
+ })
46
+
47
+ describe('(prop): transparent', () => {
48
+ it.skip(' ', () => {
49
+ //
50
+ })
51
+ })
52
+
53
+ describe('(prop): outline', () => {
54
+ it.skip(' ', () => {
55
+ //
56
+ })
57
+ })
58
+
59
+ describe('(prop): rounded', () => {
60
+ it.skip(' ', () => {
61
+ //
62
+ })
63
+ })
64
+ })
65
+ })
66
+
67
+ describe('Slots', () => {
68
+ describe('(slot): default', () => {
69
+ it.skip(' ', () => {
70
+ //
71
+ })
72
+ })
73
+ })
74
+ })
@@ -47,7 +47,7 @@ export default createComponent({
47
47
  hSlot(slots.default)
48
48
  )
49
49
 
50
- if (vnodes === void 0) { return }
50
+ if (vnodes.length === 0) { return }
51
51
 
52
52
  let els = 1
53
53