quasar 2.13.0 → 2.14.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.
Files changed (199) hide show
  1. package/dist/api/BottomSheet.json +7 -2
  2. package/dist/api/Dialog.json +7 -2
  3. package/dist/api/QBanner.json +7 -2
  4. package/dist/api/QBar.json +7 -2
  5. package/dist/api/QBtn.json +7 -2
  6. package/dist/api/QBtnDropdown.json +7 -2
  7. package/dist/api/QCard.json +7 -2
  8. package/dist/api/QCarousel.json +7 -2
  9. package/dist/api/QCheckbox.json +8 -3
  10. package/dist/api/QChip.json +13 -3
  11. package/dist/api/QColor.json +7 -2
  12. package/dist/api/QDate.json +7 -2
  13. package/dist/api/QDrawer.json +7 -2
  14. package/dist/api/QEditor.json +7 -2
  15. package/dist/api/QExpansionItem.json +7 -2
  16. package/dist/api/QFab.json +7 -2
  17. package/dist/api/QFabAction.json +7 -2
  18. package/dist/api/QField.json +28 -4
  19. package/dist/api/QFile.json +14 -4
  20. package/dist/api/QImg.json +3 -3
  21. package/dist/api/QInnerLoading.json +7 -2
  22. package/dist/api/QInput.json +16 -5
  23. package/dist/api/QIntersection.json +7 -2
  24. package/dist/api/QItem.json +12 -4
  25. package/dist/api/QLinearProgress.json +7 -2
  26. package/dist/api/QList.json +7 -2
  27. package/dist/api/QMarkupTable.json +7 -2
  28. package/dist/api/QMenu.json +21 -6
  29. package/dist/api/QOptionGroup.json +7 -2
  30. package/dist/api/QPagination.json +37 -11
  31. package/dist/api/QRadio.json +7 -2
  32. package/dist/api/QRange.json +7 -2
  33. package/dist/api/QScrollArea.json +14 -4
  34. package/dist/api/QSelect.json +23 -7
  35. package/dist/api/QSeparator.json +7 -2
  36. package/dist/api/QSkeleton.json +7 -2
  37. package/dist/api/QSlideItem.json +7 -2
  38. package/dist/api/QSlider.json +7 -2
  39. package/dist/api/QStepper.json +7 -2
  40. package/dist/api/QTabPanel.json +7 -2
  41. package/dist/api/QTable.json +70 -20
  42. package/dist/api/QTime.json +17 -6
  43. package/dist/api/QTimeline.json +7 -2
  44. package/dist/api/QToggle.json +8 -3
  45. package/dist/api/QTooltip.json +14 -4
  46. package/dist/api/QTree.json +7 -2
  47. package/dist/api/QUploader.json +7 -2
  48. package/dist/api/QVirtualScroll.json +2 -1
  49. package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
  50. package/dist/icon-set/eva-icons.umd.prod.js +1 -1
  51. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
  52. package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
  53. package/dist/icon-set/fontawesome-v6-pro.umd.prod.js +1 -1
  54. package/dist/icon-set/fontawesome-v6.umd.prod.js +1 -1
  55. package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
  56. package/dist/icon-set/line-awesome.umd.prod.js +1 -1
  57. package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
  58. package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
  59. package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
  60. package/dist/icon-set/material-icons.umd.prod.js +1 -1
  61. package/dist/icon-set/material-symbols-outlined.umd.prod.js +1 -1
  62. package/dist/icon-set/material-symbols-rounded.umd.prod.js +1 -1
  63. package/dist/icon-set/material-symbols-sharp.umd.prod.js +1 -1
  64. package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
  65. package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
  66. package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
  67. package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
  68. package/dist/icon-set/mdi-v7.umd.prod.js +1 -1
  69. package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +2 -2
  70. package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
  71. package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
  72. package/dist/icon-set/svg-fontawesome-v6.umd.prod.js +1 -1
  73. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
  74. package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
  75. package/dist/icon-set/svg-ionicons-v6.umd.prod.js +1 -1
  76. package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
  77. package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
  78. package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
  79. package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
  80. package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
  81. package/dist/icon-set/svg-material-symbols-outlined.umd.prod.js +2 -2
  82. package/dist/icon-set/svg-material-symbols-rounded.umd.prod.js +2 -2
  83. package/dist/icon-set/svg-material-symbols-sharp.umd.prod.js +2 -2
  84. package/dist/icon-set/svg-mdi-v6.umd.prod.js +1 -1
  85. package/dist/icon-set/svg-mdi-v7.umd.prod.js +2 -2
  86. package/dist/icon-set/svg-themify.umd.prod.js +1 -1
  87. package/dist/icon-set/themify.umd.prod.js +1 -1
  88. package/dist/lang/ar-TN.umd.prod.js +1 -1
  89. package/dist/lang/ar.umd.prod.js +1 -1
  90. package/dist/lang/az-Latn.umd.prod.js +1 -1
  91. package/dist/lang/bg.umd.prod.js +1 -1
  92. package/dist/lang/bn.umd.prod.js +1 -1
  93. package/dist/lang/ca.umd.prod.js +1 -1
  94. package/dist/lang/cs.umd.prod.js +1 -1
  95. package/dist/lang/da.umd.prod.js +1 -1
  96. package/dist/lang/de-CH.umd.prod.js +1 -1
  97. package/dist/lang/de-DE.umd.prod.js +1 -1
  98. package/dist/lang/de.umd.prod.js +1 -1
  99. package/dist/lang/el.umd.prod.js +1 -1
  100. package/dist/lang/en-GB.umd.prod.js +1 -1
  101. package/dist/lang/en-US.umd.prod.js +1 -1
  102. package/dist/lang/eo.umd.prod.js +1 -1
  103. package/dist/lang/es.umd.prod.js +1 -1
  104. package/dist/lang/et.umd.prod.js +1 -1
  105. package/dist/lang/eu.umd.prod.js +1 -1
  106. package/dist/lang/fa-IR.umd.prod.js +1 -1
  107. package/dist/lang/fa.umd.prod.js +1 -1
  108. package/dist/lang/fi.umd.prod.js +1 -1
  109. package/dist/lang/fr.umd.prod.js +1 -1
  110. package/dist/lang/gn.umd.prod.js +1 -1
  111. package/dist/lang/he.umd.prod.js +1 -1
  112. package/dist/lang/hi.umd.prod.js +1 -1
  113. package/dist/lang/hr.umd.prod.js +1 -1
  114. package/dist/lang/hu.umd.prod.js +1 -1
  115. package/dist/lang/id.umd.prod.js +1 -1
  116. package/dist/lang/is.umd.prod.js +1 -1
  117. package/dist/lang/it.umd.prod.js +1 -1
  118. package/dist/lang/ja.umd.prod.js +1 -1
  119. package/dist/lang/kk.umd.prod.js +1 -1
  120. package/dist/lang/km.umd.prod.js +1 -1
  121. package/dist/lang/ko-KR.umd.prod.js +1 -1
  122. package/dist/lang/kur-CKB.umd.prod.js +1 -1
  123. package/dist/lang/lt.umd.prod.js +1 -1
  124. package/dist/lang/lu.umd.prod.js +1 -1
  125. package/dist/lang/lv.umd.prod.js +1 -1
  126. package/dist/lang/mk.umd.prod.js +2 -2
  127. package/dist/lang/ml.umd.prod.js +1 -1
  128. package/dist/lang/mm.umd.prod.js +1 -1
  129. package/dist/lang/ms.umd.prod.js +1 -1
  130. package/dist/lang/my.umd.prod.js +1 -1
  131. package/dist/lang/nb-NO.umd.prod.js +1 -1
  132. package/dist/lang/nl.umd.prod.js +1 -1
  133. package/dist/lang/pl.umd.prod.js +1 -1
  134. package/dist/lang/pt-BR.umd.prod.js +1 -1
  135. package/dist/lang/pt.umd.prod.js +1 -1
  136. package/dist/lang/ro.umd.prod.js +1 -1
  137. package/dist/lang/ru.umd.prod.js +1 -1
  138. package/dist/lang/sk.umd.prod.js +1 -1
  139. package/dist/lang/sl.umd.prod.js +1 -1
  140. package/dist/lang/sm.umd.prod.js +1 -1
  141. package/dist/lang/sr-CYR.umd.prod.js +1 -1
  142. package/dist/lang/sr.umd.prod.js +1 -1
  143. package/dist/lang/sv.umd.prod.js +1 -1
  144. package/dist/lang/ta.umd.prod.js +1 -1
  145. package/dist/lang/th.umd.prod.js +1 -1
  146. package/dist/lang/tr.umd.prod.js +1 -1
  147. package/dist/lang/ug.umd.prod.js +1 -1
  148. package/dist/lang/uk.umd.prod.js +1 -1
  149. package/dist/lang/uz-Cyrl.umd.prod.js +1 -1
  150. package/dist/lang/uz-Latn.umd.prod.js +1 -1
  151. package/dist/lang/vi.umd.prod.js +1 -1
  152. package/dist/lang/zh-CN.umd.prod.js +1 -1
  153. package/dist/lang/zh-TW.umd.prod.js +1 -1
  154. package/dist/quasar.addon.css +0 -940
  155. package/dist/quasar.addon.prod.css +1 -1
  156. package/dist/quasar.addon.rtl.prod.css +1 -1
  157. package/dist/quasar.cjs.prod.js +2 -2
  158. package/dist/quasar.css +3 -138
  159. package/dist/quasar.esm.js +43 -18
  160. package/dist/quasar.esm.prod.js +2 -2
  161. package/dist/quasar.prod.css +1 -1
  162. package/dist/quasar.rtl.css +3 -6
  163. package/dist/quasar.rtl.prod.css +1 -1
  164. package/dist/quasar.sass +17 -13
  165. package/dist/quasar.umd.js +43 -18
  166. package/dist/quasar.umd.prod.js +2 -2
  167. package/dist/types/api/qtree.d.ts +115 -21
  168. package/dist/types/index.d.ts +85 -80
  169. package/dist/vetur/quasar-attributes.json +69 -65
  170. package/dist/vetur/quasar-tags.json +2 -1
  171. package/dist/web-types/web-types.json +135 -181
  172. package/lang/mk.js +4 -4
  173. package/lang/mk.mjs +4 -4
  174. package/package.json +1 -1
  175. package/src/api.extends.json +2 -1
  176. package/src/components/btn/use-btn.json +2 -1
  177. package/src/components/checkbox/use-checkbox.json +1 -1
  178. package/src/components/chip/QChip.json +2 -1
  179. package/src/components/date/QDate.js +4 -4
  180. package/src/components/fab/use-fab.json +2 -1
  181. package/src/components/field/QField.js +14 -2
  182. package/src/components/field/QField.json +7 -0
  183. package/src/components/img/QImg.json +3 -3
  184. package/src/components/input/QInput.json +2 -1
  185. package/src/components/intersection/QIntersection.json +2 -1
  186. package/src/components/item/QItem.js +1 -1
  187. package/src/components/item/QItem.json +3 -3
  188. package/src/components/menu/QMenu.json +4 -0
  189. package/src/components/pagination/QPagination.json +9 -5
  190. package/src/components/scroll-area/QScrollArea.json +2 -1
  191. package/src/components/select/QSelect.json +2 -1
  192. package/src/components/time/QTime.json +4 -3
  193. package/src/components/tooltip/QTooltip.json +4 -0
  194. package/src/components/virtual-scroll/use-virtual-scroll.json +1 -1
  195. package/src/composables/private/use-field.js +21 -8
  196. package/src/composables/private/use-validate.json +2 -1
  197. package/src/css/core/flex.sass +5 -3
  198. package/src/css/flex-addon.sass +3 -1
  199. package/src/css/helpers/math.sass +7 -5
package/lang/mk.js CHANGED
@@ -24,10 +24,10 @@ module.exports = {
24
24
  collapse: label => (label ? `Собери на "${ label }"` : 'Собери')
25
25
  },
26
26
  date: {
27
- days: 'Недела_Понеделник_Вторник_Среда_Четврток_Петок_Сабота'.split(''),
28
- daysShort: 'Нед_Пон_Вто_Сре_Чет_Пет_Саб'.split(''),
29
- months: 'Јануари_Февруари_Март_Април_Мај_Јуни_Јули_Август_Септември_Октомври_Ноември_Декември'.split(''),
30
- monthsShort: 'Јан_Фев_Мар_Апр_Мај_Јун_Јул_Авг_Сеп_Окт_Ное_Дек'.split(''),
27
+ days: 'Недела_Понеделник_Вторник_Среда_Четврток_Петок_Сабота'.split('_'),
28
+ daysShort: 'Нед_Пон_Вто_Сре_Чет_Пет_Саб'.split('_'),
29
+ months: 'Јануари_Февруари_Март_Април_Мај_Јуни_Јули_Август_Септември_Октомври_Ноември_Декември'.split('_'),
30
+ monthsShort: 'Јан_Фев_Мар_Апр_Мај_Јун_Јул_Авг_Сеп_Окт_Ное_Дек'.split('_'),
31
31
  firstDayOfWeek: 0, // 0-6, 0 - Недела, 1 - Понеделник, ...
32
32
  format24h: false,
33
33
  pluralDay: 'денови'
package/lang/mk.mjs CHANGED
@@ -19,10 +19,10 @@ export default {
19
19
  collapse: label => (label ? `Собери на "${ label }"` : 'Собери')
20
20
  },
21
21
  date: {
22
- days: 'Недела_Понеделник_Вторник_Среда_Четврток_Петок_Сабота'.split(''),
23
- daysShort: 'Нед_Пон_Вто_Сре_Чет_Пет_Саб'.split(''),
24
- months: 'Јануари_Февруари_Март_Април_Мај_Јуни_Јули_Август_Септември_Октомври_Ноември_Декември'.split(''),
25
- monthsShort: 'Јан_Фев_Мар_Апр_Мај_Јун_Јул_Авг_Сеп_Окт_Ное_Дек'.split(''),
22
+ days: 'Недела_Понеделник_Вторник_Среда_Четврток_Петок_Сабота'.split('_'),
23
+ daysShort: 'Нед_Пон_Вто_Сре_Чет_Пет_Саб'.split('_'),
24
+ months: 'Јануари_Февруари_Март_Април_Мај_Јуни_Јули_Август_Септември_Октомври_Ноември_Декември'.split('_'),
25
+ monthsShort: 'Јан_Фев_Мар_Апр_Мај_Јун_Јул_Авг_Сеп_Окт_Ное_Дек'.split('_'),
26
26
  firstDayOfWeek: 0, // 0-6, 0 - Недела, 1 - Понеделник, ...
27
27
  format24h: false,
28
28
  pluralDay: 'денови'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "quasar",
3
- "version": "2.13.0",
3
+ "version": "2.14.0",
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",
@@ -42,7 +42,8 @@
42
42
  },
43
43
 
44
44
  "dark": {
45
- "type": "Boolean",
45
+ "type": [ "Boolean", "null" ],
46
+ "default": null,
46
47
  "desc": "Notify the component that the background is a dark color",
47
48
  "category": "style"
48
49
  },
@@ -174,7 +174,8 @@
174
174
  },
175
175
 
176
176
  "loading": {
177
- "type": "Boolean",
177
+ "type": [ "Boolean", "null" ],
178
+ "default": null,
178
179
  "desc": "Put button into loading state (displays a QSpinner -- can be overridden by using a 'loading' slot)",
179
180
  "category": "behavior|state"
180
181
  },
@@ -36,7 +36,7 @@
36
36
  "desc": "What model value should be considered as 'indeterminate'?",
37
37
  "default": null,
38
38
  "examples": [ 0, "not_answered" ],
39
- "category": "behavior"
39
+ "category": "model"
40
40
  },
41
41
 
42
42
  "toggle-order": {
@@ -59,7 +59,8 @@
59
59
  },
60
60
 
61
61
  "selected": {
62
- "type": "Boolean",
62
+ "type": [ "Boolean", "null" ],
63
+ "default": null,
63
64
  "sync": true,
64
65
  "desc": "Model for QChip if it's selected or not",
65
66
  "examples": [
@@ -898,17 +898,17 @@ export default createComponent({
898
898
 
899
899
  function updateViewModel (year, month, time) {
900
900
  if (minNav.value !== null && year <= minNav.value.year) {
901
- year = minNav.value.year
902
- if (month < minNav.value.month) {
901
+ if (month < minNav.value.month || year < minNav.value.year) {
903
902
  month = minNav.value.month
904
903
  }
904
+ year = minNav.value.year
905
905
  }
906
906
 
907
907
  if (maxNav.value !== null && year >= maxNav.value.year) {
908
- year = maxNav.value.year
909
- if (month > maxNav.value.month) {
908
+ if (month > maxNav.value.month || year > maxNav.value.year) {
910
909
  month = maxNav.value.month
911
910
  }
911
+ year = maxNav.value.year
912
912
  }
913
913
 
914
914
  if (time !== void 0) {
@@ -80,7 +80,8 @@
80
80
  },
81
81
 
82
82
  "hide-label": {
83
- "type": "Boolean",
83
+ "type": [ "Boolean", "null" ],
84
+ "default": null,
84
85
  "desc": "Hide the label; Useful for animation purposes where you toggle the visibility of the label",
85
86
  "category": "style|content"
86
87
  },
@@ -7,11 +7,23 @@ export default createComponent({
7
7
 
8
8
  inheritAttrs: false,
9
9
 
10
- props: useFieldProps,
10
+ props: {
11
+ ...useFieldProps,
12
+
13
+ tag: {
14
+ type: String,
15
+ default: 'label'
16
+ }
17
+ },
11
18
 
12
19
  emits: useFieldEmits,
13
20
 
14
21
  setup () {
15
- return useField(useFieldState())
22
+ return useField(
23
+ useFieldState({
24
+ requiredForAttr: false,
25
+ tagProp: true
26
+ })
27
+ )
16
28
  }
17
29
  })
@@ -16,6 +16,13 @@
16
16
  "type": [ "Number", "String" ],
17
17
  "desc": "Used internally by QSelect",
18
18
  "internal": true
19
+ },
20
+
21
+ "tag": {
22
+ "extends": "tag",
23
+ "default": "label",
24
+ "examples": [ "div", "label" ],
25
+ "addedIn": "v2.13.1"
19
26
  }
20
27
  },
21
28
 
@@ -246,9 +246,9 @@
246
246
  "error": {
247
247
  "desc": "Emitted when browser could not load the image",
248
248
  "params": {
249
- "src": {
250
- "type": "Error",
251
- "desc": "JS Error object"
249
+ "evt": {
250
+ "type": "Event",
251
+ "desc": "JS Event object (same as the browser's native 'error' event)"
252
252
  }
253
253
  }
254
254
  }
@@ -26,7 +26,8 @@
26
26
  "default": "text",
27
27
  "values": [
28
28
  "text", "password", "textarea", "email", "search",
29
- "tel", "file", "number", "url", "time", "date"
29
+ "tel", "file", "number", "url", "time", "date",
30
+ "datetime-local"
30
31
  ],
31
32
  "category": "general"
32
33
  },
@@ -23,7 +23,8 @@
23
23
  },
24
24
 
25
25
  "root": {
26
- "type": "Element",
26
+ "type": [ "Element", "null" ],
27
+ "default": null,
27
28
  "desc": "[Intersection API root prop] Lets you define an alternative to the viewport as your root (through its DOM element); It is important to keep in mind that root needs to be an ancestor of the observed element",
28
29
  "examples": [ "$refs.myTable.$el", "getElementById(\"myTable\")" ],
29
30
  "category": "behavior"
@@ -106,7 +106,7 @@ export default createComponent({
106
106
  }
107
107
 
108
108
  function onKeyup (e) {
109
- if (isClickable.value === true && isKeyCode(e, 13) === true) {
109
+ if (isClickable.value === true && isKeyCode(e, [ 13, 32 ]) === true) {
110
110
  stopAndPrevent(e)
111
111
 
112
112
  // for ripple
@@ -7,10 +7,10 @@
7
7
 
8
8
  "props": {
9
9
  "active": {
10
- "type": "Boolean",
10
+ "type": [ "Boolean", "null" ],
11
+ "default": null,
11
12
  "desc": "Put item into 'active' state",
12
- "category": "state",
13
- "default": null
13
+ "category": "state"
14
14
  },
15
15
 
16
16
  "dark": {
@@ -105,12 +105,16 @@
105
105
 
106
106
  "max-height": {
107
107
  "extends": "size",
108
+ "type": [ "String", "null" ],
109
+ "default": null,
108
110
  "desc": "The maximum height of the menu; Size in CSS units, including unit name",
109
111
  "category": "style"
110
112
  },
111
113
 
112
114
  "max-width": {
113
115
  "extends": "size",
116
+ "type": [ "String", "null" ],
117
+ "default": null,
114
118
  "desc": "The maximum width of the menu; Size in CSS units, including unit name",
115
119
  "category": "style"
116
120
  }
@@ -80,25 +80,29 @@
80
80
  },
81
81
 
82
82
  "boundary-links": {
83
- "type": "Boolean",
83
+ "type": [ "Boolean", "null" ],
84
+ "default": null,
84
85
  "desc": "Show boundary button links",
85
86
  "category": "content"
86
87
  },
87
88
 
88
89
  "boundary-numbers": {
89
- "type": "Boolean",
90
+ "type": [ "Boolean", "null" ],
91
+ "default": null,
90
92
  "desc": "Always show first and last page buttons (if not using 'input')",
91
93
  "category": "content"
92
94
  },
93
95
 
94
96
  "direction-links": {
95
- "type": "Boolean",
97
+ "type": [ "Boolean", "null" ],
98
+ "default": null,
96
99
  "desc": "Show direction buttons",
97
100
  "category": "content"
98
101
  },
99
102
 
100
103
  "ellipses": {
101
- "type": "Boolean",
104
+ "type": [ "Boolean", "null" ],
105
+ "default": null,
102
106
  "desc": "Show ellipses (...) when pages are available",
103
107
  "category": "content"
104
108
  },
@@ -221,7 +225,7 @@
221
225
  },
222
226
 
223
227
  "ripple": {
224
- "type": [ "Boolean", "Object" ],
228
+ "type": [ "Boolean", "Object", "null" ],
225
229
  "desc": "Configure buttons material ripple (disable it by setting it to 'false' or supply a config object); Does not applies to boundary and ellipsis buttons",
226
230
  "default": true,
227
231
  "examples": [ false, "{ early: true, center: true, color: 'teal', keyCodes: [] }" ],
@@ -73,7 +73,8 @@
73
73
  },
74
74
 
75
75
  "visible": {
76
- "type": "Boolean",
76
+ "type": [ "Boolean", "null" ],
77
+ "default": null,
77
78
  "desc": "Manually control the visibility of the scrollbar; Overrides default mouse over/leave behavior",
78
79
  "category": "behavior"
79
80
  },
@@ -152,7 +152,8 @@
152
152
  },
153
153
 
154
154
  "options-dark": {
155
- "type": "Boolean",
155
+ "type": [ "Boolean", "null" ],
156
+ "default": null,
156
157
  "desc": "Options menu will be colored with a dark color",
157
158
  "category": "options"
158
159
  },
@@ -16,9 +16,9 @@
16
16
  },
17
17
 
18
18
  "format24h": {
19
- "type": "Boolean",
20
- "desc": "Forces 24 hour time display instead of AM/PM system",
21
- "default": "(based on Quasar lang language being used)",
19
+ "type": [ "Boolean", "null" ],
20
+ "default": null,
21
+ "desc": "Forces 24 hour time display instead of AM/PM system; If prop is not set, then the default is based on Quasar lang language being used",
22
22
  "category": "behavior"
23
23
  },
24
24
 
@@ -33,6 +33,7 @@
33
33
  },
34
34
 
35
35
  "mask": {
36
+ "type": [ "String", "null" ],
36
37
  "default": "HH:mm",
37
38
  "examples": [ "HH:mm:ss", "YYYY-MM-DD HH:mm:ss", "HH:mm MMMM Do, YYYY" ]
38
39
  },
@@ -8,12 +8,16 @@
8
8
  "props": {
9
9
  "max-height": {
10
10
  "extends": "size",
11
+ "type": [ "String", "null" ],
12
+ "default": null,
11
13
  "desc": "The maximum height of the Tooltip; Size in CSS units, including unit name",
12
14
  "category": "content"
13
15
  },
14
16
 
15
17
  "max-width": {
16
18
  "extends": "size",
19
+ "type": [ "String", "null" ],
20
+ "default": null,
17
21
  "desc": "The maximum width of the Tooltip; Size in CSS units, including unit name",
18
22
  "category": "content"
19
23
  },
@@ -7,7 +7,7 @@
7
7
  },
8
8
 
9
9
  "virtual-scroll-slice-size": {
10
- "type": [ "Number", "String" ],
10
+ "type": [ "Number", "String", "null" ],
11
11
  "desc": "Minimum number of items to render in the virtual list",
12
12
  "default": "30",
13
13
  "examples": [ "virtual-scroll-slice-size=\"60\"" ],
@@ -14,8 +14,10 @@ import uid from '../../utils/uid.js'
14
14
  import { prevent, stopAndPrevent } from '../../utils/event.js'
15
15
  import { addFocusFn, removeFocusFn } from '../../utils/private/focus-manager.js'
16
16
 
17
- function getTargetUid (val) {
18
- return val === void 0 ? `f_${ uid() }` : val
17
+ function getTargetUid (val, requiredForAttr) {
18
+ return val === void 0
19
+ ? (requiredForAttr === true ? `f_${ uid() }` : void 0)
20
+ : val
19
21
  }
20
22
 
21
23
  export function fieldValueIsFilled (val) {
@@ -74,12 +76,17 @@ export const useFieldProps = {
74
76
 
75
77
  export const useFieldEmits = [ 'update:modelValue', 'clear', 'focus', 'blur', 'popupShow', 'popupHide' ]
76
78
 
77
- export function useFieldState () {
79
+ export function useFieldState ({ requiredForAttr = true, tagProp } = {}) {
78
80
  const { props, attrs, proxy, vnode } = getCurrentInstance()
79
81
 
80
82
  const isDark = useDark(props, proxy.$q)
81
83
 
82
84
  return {
85
+ requiredForAttr,
86
+ tag: tagProp === true
87
+ ? computed(() => props.tag)
88
+ : { value: 'label' },
89
+
83
90
  isDark,
84
91
 
85
92
  editable: computed(() =>
@@ -91,7 +98,9 @@ export function useFieldState () {
91
98
  hasPopupOpen: false,
92
99
 
93
100
  splitAttrs: useSplitAttrs(attrs, vnode),
94
- targetUid: ref(getTargetUid(props.for)),
101
+ targetUid: ref(
102
+ getTargetUid(props.for, requiredForAttr)
103
+ ),
95
104
 
96
105
  rootRef: ref(null),
97
106
  targetRef: ref(null),
@@ -260,7 +269,7 @@ export default function (state) {
260
269
  watch(() => props.for, val => {
261
270
  // don't transform targetUid into a computed
262
271
  // prop as it will break SSR
263
- state.targetUid.value = getTargetUid(val)
272
+ state.targetUid.value = getTargetUid(val, state.requiredForAttr)
264
273
  })
265
274
 
266
275
  function focusHandler () {
@@ -545,8 +554,12 @@ export default function (state) {
545
554
  })
546
555
 
547
556
  onMounted(() => {
548
- if (isRuntimeSsrPreHydration.value === true && props.for === void 0) {
549
- state.targetUid.value = getTargetUid()
557
+ if (
558
+ isRuntimeSsrPreHydration.value === true
559
+ && state.requiredForAttr === true
560
+ && props.for === void 0
561
+ ) {
562
+ state.targetUid.value = `f_${ uid() }` // getTargetUid(void 0, true)
550
563
  }
551
564
 
552
565
  props.autofocus === true && proxy.focus()
@@ -568,7 +581,7 @@ export default function (state) {
568
581
  }
569
582
  : attributes.value
570
583
 
571
- return h('label', {
584
+ return h(state.tag.value, {
572
585
  ref: state.rootRef,
573
586
  class: [
574
587
  classes.value,
@@ -7,7 +7,8 @@
7
7
  },
8
8
 
9
9
  "error": {
10
- "type": "Boolean",
10
+ "type": [ "Boolean", "null" ],
11
+ "default": null,
11
12
  "desc": "Does field have validation errors?",
12
13
  "category": "behavior"
13
14
  },
@@ -1,3 +1,5 @@
1
+ @use 'sass:math'
2
+
1
3
  @import '../helpers/string.sass'
2
4
 
3
5
  @mixin fg($name, $size)
@@ -30,13 +32,13 @@
30
32
  .row
31
33
  #{str-fe('> .col<name>-<i>', $name, $noProcNotZero, $ic)}
32
34
  height: auto
33
- width: toFixed(percentage($i / $flex-cols), 10000)
35
+ width: toFixed(percentage(math.div($i, $flex-cols)), 10000)
34
36
  @if $i != 0 or $name != ''
35
37
  #{str-fe('> .offset<name>-<i>', $name, $noProcNotZero, $ic)}
36
- margin-left: toFixed(percentage($i / $flex-cols), 10000)
38
+ margin-left: toFixed(percentage(math.div($i, $flex-cols)), 10000)
37
39
  .column
38
40
  #{str-fe('> .col<name>-<i>', $name, $noProcNotZero, $ic)}
39
- height: toFixed(percentage($i / $flex-cols), 10000)
41
+ height: toFixed(percentage(math.div($i, $flex-cols)), 10000)
40
42
  width: auto
41
43
  @if $size == 0 and $i == $flex-cols
42
44
  .row > .col-all
@@ -1,3 +1,5 @@
1
+ @use 'sass:math'
2
+
1
3
  @import './helpers/string.sass'
2
4
  @import './helpers/math.sass'
3
5
 
@@ -194,7 +196,7 @@
194
196
 
195
197
  @for $i from 0 through $flex-cols
196
198
  $ic: quote('' + $i)
197
- $internal-size: toFixed(percentage($i / $flex-cols), 10000)
199
+ $internal-size: toFixed(percentage(math.div($i, $flex-cols)), 10000)
198
200
 
199
201
  #{str-fr('.row<name>', $name)}
200
202
  #{str-fe('> .col<name>-<i>', $name2c, $noProcNotZero2, $ic)}
@@ -1,3 +1,5 @@
1
+ @use 'sass:math'
2
+
1
3
  $PI: 3.14159265359
2
4
 
3
5
  @function pow($number, $exp)
@@ -21,22 +23,22 @@ $PI: 3.14159265359
21
23
  // toFixed(0.12345, 100) -> 0.12
22
24
  // toFixed(0.12345, 1000) -> 0.123
23
25
  @function toFixed($number, $power)
24
- @return round($number * $power) / $power
26
+ @return math.div(round($number * $power), $power)
25
27
 
26
28
  @function sin($angle)
27
29
  $sin: 0
28
30
  // angle -> radians
29
- $rad: $angle / 180 * $PI
31
+ $rad: math.div($angle, 180) * $PI
30
32
  // interval determines precision
31
33
  @for $i from 0 through 25
32
- $sin: $sin + pow(-1, $i) * pow($rad, (2 * $i + 1)) / fact(2 * $i + 1)
34
+ $sin: $sin + math.div(pow(-1, $i) * pow($rad, (2 * $i + 1)), fact(2 * $i + 1))
33
35
  @return $sin
34
36
 
35
37
  @function cos($angle)
36
38
  $cos: 0
37
39
  // angle -> radians
38
- $rad: $angle / 180 * $PI
40
+ $rad: math.div($angle, 180) * $PI
39
41
  // interval determines precision
40
42
  @for $i from 0 through 25
41
- $cos: $cos + pow(-1, $i) * pow($rad, 2 * $i) / fact(2 * $i)
43
+ $cos: $cos + math.div(pow(-1, $i) * pow($rad, 2 * $i), fact(2 * $i))
42
44
  @return $cos