quasar 2.8.3 → 2.9.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 (314) hide show
  1. package/dist/api/QBreadcrumbsEl.json +52 -0
  2. package/dist/api/QBtn.json +41 -6
  3. package/dist/api/QBtnDropdown.json +9 -0
  4. package/dist/api/QChip.json +9 -0
  5. package/dist/api/QCircularProgress.json +6 -0
  6. package/dist/api/QEditor.json +7 -0
  7. package/dist/api/QExpansionItem.json +59 -0
  8. package/dist/api/QItem.json +52 -0
  9. package/dist/api/QRating.json +13 -0
  10. package/dist/api/QRouteTab.json +42 -6
  11. package/dist/api/QTable.json +2 -2
  12. package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
  13. package/dist/icon-set/eva-icons.umd.prod.js +1 -1
  14. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
  15. package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
  16. package/dist/icon-set/fontawesome-v6-pro.umd.prod.js +1 -1
  17. package/dist/icon-set/fontawesome-v6.umd.prod.js +1 -1
  18. package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
  19. package/dist/icon-set/line-awesome.umd.prod.js +1 -1
  20. package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
  21. package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
  22. package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
  23. package/dist/icon-set/material-icons.umd.prod.js +1 -1
  24. package/dist/icon-set/material-symbols-outlined.umd.prod.js +1 -1
  25. package/dist/icon-set/material-symbols-rounded.umd.prod.js +1 -1
  26. package/dist/icon-set/material-symbols-sharp.umd.prod.js +1 -1
  27. package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
  28. package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
  29. package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
  30. package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
  31. package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
  32. package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
  33. package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
  34. package/dist/icon-set/svg-fontawesome-v6.umd.prod.js +1 -1
  35. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
  36. package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
  37. package/dist/icon-set/svg-ionicons-v6.umd.prod.js +1 -1
  38. package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
  39. package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
  40. package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
  41. package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
  42. package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
  43. package/dist/icon-set/svg-material-symbols-outlined.umd.prod.js +1 -1
  44. package/dist/icon-set/svg-material-symbols-rounded.umd.prod.js +1 -1
  45. package/dist/icon-set/svg-material-symbols-sharp.umd.prod.js +1 -1
  46. package/dist/icon-set/svg-mdi-v6.umd.prod.js +1 -1
  47. package/dist/icon-set/svg-themify.umd.prod.js +1 -1
  48. package/dist/icon-set/themify.umd.prod.js +1 -1
  49. package/dist/lang/ar-TN.umd.prod.js +2 -2
  50. package/dist/lang/ar.umd.prod.js +2 -2
  51. package/dist/lang/az-Latn.umd.prod.js +2 -2
  52. package/dist/lang/bg.umd.prod.js +2 -2
  53. package/dist/lang/bn.umd.prod.js +2 -2
  54. package/dist/lang/ca.umd.prod.js +2 -2
  55. package/dist/lang/cs.umd.prod.js +2 -2
  56. package/dist/lang/da.umd.prod.js +2 -2
  57. package/dist/lang/de.umd.prod.js +2 -2
  58. package/dist/lang/el.umd.prod.js +2 -2
  59. package/dist/lang/en-GB.umd.prod.js +2 -2
  60. package/dist/lang/en-US.umd.prod.js +2 -2
  61. package/dist/lang/eo.umd.prod.js +2 -2
  62. package/dist/lang/es.umd.prod.js +2 -2
  63. package/dist/lang/et.umd.prod.js +2 -2
  64. package/dist/lang/eu.umd.prod.js +2 -2
  65. package/dist/lang/fa-IR.umd.prod.js +2 -2
  66. package/dist/lang/fa.umd.prod.js +2 -2
  67. package/dist/lang/fi.umd.prod.js +2 -2
  68. package/dist/lang/fr.umd.prod.js +2 -2
  69. package/dist/lang/gn.umd.prod.js +2 -2
  70. package/dist/lang/he.umd.prod.js +2 -2
  71. package/dist/lang/hr.umd.prod.js +2 -2
  72. package/dist/lang/hu.umd.prod.js +2 -2
  73. package/dist/lang/id.umd.prod.js +2 -2
  74. package/dist/lang/is.umd.prod.js +2 -2
  75. package/dist/lang/it.umd.prod.js +2 -2
  76. package/dist/lang/ja.umd.prod.js +2 -2
  77. package/dist/lang/km.umd.prod.js +2 -2
  78. package/dist/lang/ko-KR.umd.prod.js +2 -2
  79. package/dist/lang/kur-CKB.umd.prod.js +2 -2
  80. package/dist/lang/kz.umd.prod.js +2 -2
  81. package/dist/lang/lt.umd.prod.js +2 -2
  82. package/dist/lang/lu.umd.prod.js +2 -2
  83. package/dist/lang/lv.umd.prod.js +2 -2
  84. package/dist/lang/ml.umd.prod.js +2 -2
  85. package/dist/lang/mm.umd.prod.js +2 -2
  86. package/dist/lang/ms.umd.prod.js +2 -2
  87. package/dist/lang/my.umd.prod.js +2 -2
  88. package/dist/lang/nb-NO.umd.prod.js +2 -2
  89. package/dist/lang/nl.umd.prod.js +2 -2
  90. package/dist/lang/pl.umd.prod.js +2 -2
  91. package/dist/lang/pt-BR.umd.prod.js +2 -2
  92. package/dist/lang/pt.umd.prod.js +2 -2
  93. package/dist/lang/ro.umd.prod.js +2 -2
  94. package/dist/lang/ru.umd.prod.js +2 -2
  95. package/dist/lang/sk.umd.prod.js +2 -2
  96. package/dist/lang/sl.umd.prod.js +2 -2
  97. package/dist/lang/sm.umd.prod.js +2 -2
  98. package/dist/lang/sr-CYR.umd.prod.js +2 -2
  99. package/dist/lang/sr.umd.prod.js +2 -2
  100. package/dist/lang/sv.umd.prod.js +2 -2
  101. package/dist/lang/ta.umd.prod.js +2 -2
  102. package/dist/lang/th.umd.prod.js +2 -2
  103. package/dist/lang/tr.umd.prod.js +2 -2
  104. package/dist/lang/ug.umd.prod.js +2 -2
  105. package/dist/lang/uk.umd.prod.js +2 -2
  106. package/dist/lang/uz-Cyrl.umd.prod.js +2 -2
  107. package/dist/lang/uz-Latn.umd.prod.js +2 -2
  108. package/dist/lang/vi.umd.prod.js +2 -2
  109. package/dist/lang/zh-CN.umd.prod.js +2 -2
  110. package/dist/lang/zh-TW.umd.prod.js +2 -2
  111. package/dist/quasar.cjs.prod.js +2 -2
  112. package/dist/quasar.esm.js +16157 -15723
  113. package/dist/quasar.esm.prod.js +2 -2
  114. package/dist/quasar.sass +1 -1
  115. package/dist/quasar.umd.js +16290 -15854
  116. package/dist/quasar.umd.prod.js +2 -2
  117. package/dist/transforms/import-map.json +2 -0
  118. package/dist/types/api/qeditor.d.ts +17 -0
  119. package/dist/types/api/qloading.d.ts +5 -0
  120. package/dist/types/api.d.ts +2 -0
  121. package/dist/types/index.d.ts +133 -9
  122. package/dist/types/utils/is.d.ts +67 -0
  123. package/dist/types/utils/run-sequential-promises.d.ts +119 -0
  124. package/dist/types/utils.d.ts +9 -0
  125. package/dist/vetur/quasar-attributes.json +25 -1
  126. package/dist/vetur/quasar-tags.json +7 -1
  127. package/dist/web-types/web-types.json +108 -10
  128. package/lang/ar-TN.js +3 -1
  129. package/lang/ar-TN.mjs +3 -1
  130. package/lang/ar.js +3 -1
  131. package/lang/ar.mjs +3 -1
  132. package/lang/az-Latn.js +3 -1
  133. package/lang/az-Latn.mjs +3 -1
  134. package/lang/bg.js +3 -1
  135. package/lang/bg.mjs +3 -1
  136. package/lang/bn.js +3 -1
  137. package/lang/bn.mjs +3 -1
  138. package/lang/ca.js +3 -1
  139. package/lang/ca.mjs +3 -1
  140. package/lang/cs.js +3 -1
  141. package/lang/cs.mjs +3 -1
  142. package/lang/da.js +3 -1
  143. package/lang/da.mjs +3 -1
  144. package/lang/de.js +3 -1
  145. package/lang/de.mjs +3 -1
  146. package/lang/el.js +3 -1
  147. package/lang/el.mjs +3 -1
  148. package/lang/en-GB.js +3 -1
  149. package/lang/en-GB.mjs +3 -1
  150. package/lang/en-US.js +3 -1
  151. package/lang/en-US.mjs +3 -1
  152. package/lang/eo.js +3 -1
  153. package/lang/eo.mjs +3 -1
  154. package/lang/es.js +3 -1
  155. package/lang/es.mjs +3 -1
  156. package/lang/et.js +3 -1
  157. package/lang/et.mjs +3 -1
  158. package/lang/eu.js +3 -1
  159. package/lang/eu.mjs +3 -1
  160. package/lang/fa-IR.js +5 -3
  161. package/lang/fa-IR.mjs +5 -3
  162. package/lang/fa.js +5 -3
  163. package/lang/fa.mjs +5 -3
  164. package/lang/fi.js +3 -1
  165. package/lang/fi.mjs +3 -1
  166. package/lang/fr.js +3 -1
  167. package/lang/fr.mjs +3 -1
  168. package/lang/gn.js +3 -1
  169. package/lang/gn.mjs +3 -1
  170. package/lang/he.js +3 -1
  171. package/lang/he.mjs +3 -1
  172. package/lang/hr.js +3 -1
  173. package/lang/hr.mjs +3 -1
  174. package/lang/hu.js +3 -1
  175. package/lang/hu.mjs +3 -1
  176. package/lang/id.js +3 -1
  177. package/lang/id.mjs +3 -1
  178. package/lang/is.js +3 -1
  179. package/lang/is.mjs +3 -1
  180. package/lang/it.js +3 -1
  181. package/lang/it.mjs +3 -1
  182. package/lang/ja.js +3 -1
  183. package/lang/ja.mjs +3 -1
  184. package/lang/km.js +3 -1
  185. package/lang/km.mjs +3 -1
  186. package/lang/ko-KR.js +3 -1
  187. package/lang/ko-KR.mjs +3 -1
  188. package/lang/kur-CKB.js +3 -1
  189. package/lang/kur-CKB.mjs +3 -1
  190. package/lang/kz.js +3 -1
  191. package/lang/kz.mjs +3 -1
  192. package/lang/lt.js +3 -1
  193. package/lang/lt.mjs +3 -1
  194. package/lang/lu.js +3 -1
  195. package/lang/lu.mjs +3 -1
  196. package/lang/lv.js +3 -1
  197. package/lang/lv.mjs +3 -1
  198. package/lang/ml.js +3 -1
  199. package/lang/ml.mjs +3 -1
  200. package/lang/mm.js +4 -1
  201. package/lang/mm.mjs +4 -1
  202. package/lang/ms.js +3 -1
  203. package/lang/ms.mjs +3 -1
  204. package/lang/my.js +3 -1
  205. package/lang/my.mjs +3 -1
  206. package/lang/nb-NO.js +3 -1
  207. package/lang/nb-NO.mjs +3 -1
  208. package/lang/nl.js +3 -1
  209. package/lang/nl.mjs +3 -1
  210. package/lang/pl.js +3 -1
  211. package/lang/pl.mjs +3 -1
  212. package/lang/pt-BR.js +3 -1
  213. package/lang/pt-BR.mjs +3 -1
  214. package/lang/pt.js +3 -1
  215. package/lang/pt.mjs +3 -1
  216. package/lang/ro.js +3 -1
  217. package/lang/ro.mjs +3 -1
  218. package/lang/ru.js +3 -1
  219. package/lang/ru.mjs +3 -1
  220. package/lang/sk.js +3 -1
  221. package/lang/sk.mjs +3 -1
  222. package/lang/sl.js +3 -1
  223. package/lang/sl.mjs +3 -1
  224. package/lang/sm.js +3 -1
  225. package/lang/sm.mjs +3 -1
  226. package/lang/sr-CYR.js +3 -1
  227. package/lang/sr-CYR.mjs +3 -1
  228. package/lang/sr.js +3 -1
  229. package/lang/sr.mjs +3 -1
  230. package/lang/sv.js +3 -1
  231. package/lang/sv.mjs +3 -1
  232. package/lang/ta.js +3 -1
  233. package/lang/ta.mjs +3 -1
  234. package/lang/th.js +3 -1
  235. package/lang/th.mjs +3 -1
  236. package/lang/tr.js +3 -1
  237. package/lang/tr.mjs +3 -1
  238. package/lang/ug.js +5 -3
  239. package/lang/ug.mjs +5 -3
  240. package/lang/uk.js +3 -1
  241. package/lang/uk.mjs +3 -1
  242. package/lang/uz-Cyrl.js +3 -1
  243. package/lang/uz-Cyrl.mjs +3 -1
  244. package/lang/uz-Latn.js +3 -1
  245. package/lang/uz-Latn.mjs +3 -1
  246. package/lang/vi.js +3 -1
  247. package/lang/vi.mjs +3 -1
  248. package/lang/zh-CN.js +3 -1
  249. package/lang/zh-CN.mjs +3 -1
  250. package/lang/zh-TW.js +3 -1
  251. package/lang/zh-TW.mjs +3 -1
  252. package/package.json +6 -5
  253. package/src/components/breadcrumbs/QBreadcrumbsEl.js +6 -7
  254. package/src/components/breadcrumbs/QBreadcrumbsEl.json +53 -0
  255. package/src/components/btn/QBtn.js +19 -19
  256. package/src/components/btn/QBtn.json +41 -6
  257. package/src/components/btn/use-btn.js +6 -4
  258. package/src/components/btn-dropdown/QBtnDropdown.js +10 -2
  259. package/src/components/btn-dropdown/QBtnDropdown.json +8 -0
  260. package/src/components/checkbox/QCheckbox.js +1 -2
  261. package/src/components/checkbox/use-checkbox.js +2 -1
  262. package/src/components/chip/QChip.js +9 -2
  263. package/src/components/chip/QChip.json +8 -0
  264. package/src/components/chip/__tests__/QChip.spec.js +359 -46
  265. package/src/components/circular-progress/QCircularProgress.js +4 -2
  266. package/src/components/circular-progress/QCircularProgress.json +7 -0
  267. package/src/components/circular-progress/use-circular-progress.js +1 -0
  268. package/src/components/dialog/QDialog.js +7 -4
  269. package/src/components/drawer/QDrawer.js +7 -4
  270. package/src/components/editor/QEditor.json +9 -0
  271. package/src/components/expansion-item/QExpansionItem.js +37 -8
  272. package/src/components/expansion-item/QExpansionItem.json +67 -0
  273. package/src/components/fab/QFab.js +20 -1
  274. package/src/components/form/QForm.js +35 -40
  275. package/src/components/form/QFormChildMixin.js +3 -1
  276. package/src/components/item/QItem.js +4 -5
  277. package/src/components/item/QItem.json +53 -0
  278. package/src/components/menu/QMenu.js +5 -5
  279. package/src/components/menu/__tests__/QMenu.spec.js +7 -0
  280. package/src/components/page/QPage.js +1 -1
  281. package/src/components/popup-edit/QPopupEdit.js +2 -5
  282. package/src/components/radio/QRadio.js +3 -3
  283. package/src/components/rating/QRating.js +48 -10
  284. package/src/components/rating/QRating.json +11 -0
  285. package/src/components/select/QSelect.js +1 -4
  286. package/src/components/stepper/QStep.js +5 -3
  287. package/src/components/table/QTable.js +4 -6
  288. package/src/components/table/QTable.json +2 -2
  289. package/src/components/tabs/QRouteTab.js +6 -4
  290. package/src/components/tabs/QRouteTab.json +42 -6
  291. package/src/components/tabs/QTabs.js +188 -107
  292. package/src/components/tabs/use-tab.js +62 -38
  293. package/src/components/time/QTime.js +2 -2
  294. package/src/components/tooltip/QTooltip.js +7 -13
  295. package/src/components/tree/QTree.js +1 -1
  296. package/src/components/uploader/uploader-core.js +2 -3
  297. package/src/composables/private/__tests__/use-model-toggle.spec.js +2 -0
  298. package/src/composables/private/__tests__/use-transition.spec.js +4 -0
  299. package/src/composables/private/use-file.js +1 -1
  300. package/src/composables/private/use-router-link.js +80 -43
  301. package/src/composables/private/use-tick.js +15 -9
  302. package/src/composables/private/use-timeout.js +20 -7
  303. package/src/composables/private/use-validate.js +7 -13
  304. package/src/composables/use-form-child.js +6 -4
  305. package/src/directives/TouchPan.js +1 -1
  306. package/src/directives/TouchRepeat.js +1 -1
  307. package/src/directives/TouchSwipe.js +1 -1
  308. package/src/utils/EventBus.js +64 -0
  309. package/src/utils/extend.js +19 -19
  310. package/src/utils/private/inject-obj-prop.js +2 -0
  311. package/src/utils/private/rtl.js +10 -7
  312. package/src/utils/private/vm.js +4 -0
  313. package/src/utils/run-sequential-promises.js +115 -0
  314. package/src/utils.js +4 -0
@@ -180,6 +180,7 @@
180
180
  "debounce": "src/utils/debounce.js",
181
181
  "dom": "src/utils/dom.js",
182
182
  "event": "src/utils/event.js",
183
+ "EventBus": "src/utils/EventBus.js",
183
184
  "exportFile": "src/utils/export-file.js",
184
185
  "extend": "src/utils/extend.js",
185
186
  "format": "src/utils/format.js",
@@ -190,6 +191,7 @@
190
191
  "openURL": "src/utils/open-url.js",
191
192
  "patterns": "src/utils/patterns.js",
192
193
  "preventScroll": "src/utils/prevent-scroll.js",
194
+ "runSequentialPromises": "src/utils/run-sequential-promises.js",
193
195
  "scroll": "src/utils/scroll.js",
194
196
  "setCssVar": "src/utils/set-css-var.js",
195
197
  "throttle": "src/utils/throttle.js",
@@ -0,0 +1,17 @@
1
+ // src/components/editor/editor-caret.js#Caret
2
+ // We are not exposing the whole API, just the ones that might be needed outside.
3
+ export interface QEditorCaret {
4
+ readonly selection: Selection | null;
5
+ readonly hasSelection: boolean;
6
+ readonly range: Range | null;
7
+ readonly parent: Element | null;
8
+ readonly blockParent: Element | null;
9
+
10
+ save(range: Range): void;
11
+ restore(range?: Range): void;
12
+ savePosition(): void;
13
+ restorePosition(length?: number): void;
14
+ is(commandId: string, param?: string): boolean;
15
+ can(commandId: string): boolean;
16
+ apply(commandId: string, param?: string, done?: () => void): boolean;
17
+ }
@@ -0,0 +1,5 @@
1
+ // Error on "quasar" import shown in IDE is normal, as we only have Components/Directives/Plugins types after the build step
2
+ // The import will work correctly at runtime
3
+ import { QLoadingShowOptions } from "quasar";
4
+
5
+ export type QLoadingUpdateOptions = Omit<QLoadingShowOptions, 'group'>;
@@ -6,6 +6,8 @@ export * from "./api/qtable";
6
6
  export * from "./api/qtree";
7
7
  export * from "./api/quploader";
8
8
  export * from "./api/qnotify";
9
+ export * from "./api/qeditor";
10
+ export * from "./api/qloading";
9
11
  export * from "./api/touchswipe";
10
12
  export * from "./api/web-storage";
11
13
  export * from "./api/validation";
@@ -1110,6 +1110,28 @@ export interface QBreadcrumbsElProps {
1110
1110
  * Default value: true
1111
1111
  */
1112
1112
  ripple?: boolean | any | undefined;
1113
+ /**
1114
+ * Emitted when the component is clicked
1115
+ * @param evt JS event object; If you are using route navigation ('to'/'replace' props) and you want to cancel navigation then call evt.preventDefault() synchronously in your event handler
1116
+ * @param go Available ONLY if you are using route navigation ('to'/'replace' props); When you need to control the time at which the component should trigger the route navigation then call evt.preventDefault() synchronously and then call this function at your convenience; Useful if you have async work to be done before the actual route navigation or if you want to redirect somewhere else
1117
+ */
1118
+ onClick?: (
1119
+ evt: Event,
1120
+ go?: (opts?: {
1121
+ /**
1122
+ * Equivalent to Vue Router <router-link> 'to' property; Specify it explicitly otherwise it will be set with same value as component's 'to' prop
1123
+ */
1124
+ to?: string | any;
1125
+ /**
1126
+ * Equivalent to Vue Router <router-link> 'replace' property; Specify it explicitly otherwise it will be set with same value as component's 'replace' prop
1127
+ */
1128
+ replace?: boolean;
1129
+ /**
1130
+ * Return the router error, if any; Otherwise the returned Promise will always fulfill
1131
+ */
1132
+ returnRouterError?: boolean;
1133
+ }) => Promise<any>
1134
+ ) => void;
1113
1135
  }
1114
1136
 
1115
1137
  export interface QBreadcrumbsElSlots {
@@ -1351,6 +1373,10 @@ export interface QBtnDropdownProps {
1351
1373
  * An array of two numbers to offset the menu horizontally and vertically in pixels
1352
1374
  */
1353
1375
  menuOffset?: readonly any[] | undefined;
1376
+ /**
1377
+ * aria-label to be used on the dropdown toggle element
1378
+ */
1379
+ toggleAriaLabel?: string | undefined;
1354
1380
  /**
1355
1381
  * Emitted when showing/hidden state changes; Is also used by v-model
1356
1382
  * @param value New state (showing/hidden)
@@ -1765,11 +1791,27 @@ export interface QBtnProps {
1765
1791
  */
1766
1792
  darkPercentage?: boolean | undefined;
1767
1793
  /**
1768
- * Emitted when component is clicked (activated)
1769
- * @param evt JS event object; If you want to cancel navigation set synchronously 'evt.navigate' to false
1770
- * @param navigateFn When you need to control the time at which the button should trigger the route navigation then set 'evt.navigate' to false and call this function; Useful if you have async work to be done before the actual route navigation
1794
+ * Emitted when the component is clicked
1795
+ * @param evt JS event object; If you are using route navigation ('to'/'replace' props) and you want to cancel navigation then call evt.preventDefault() synchronously in your event handler
1796
+ * @param go Available ONLY if you are using route navigation ('to'/'replace' props); When you need to control the time at which the component should trigger the route navigation then call evt.preventDefault() synchronously and then call this function at your convenience; Useful if you have async work to be done before the actual route navigation or if you want to redirect somewhere else
1771
1797
  */
1772
- onClick?: (evt: Event, navigateFn: () => void) => void;
1798
+ onClick?: (
1799
+ evt: Event,
1800
+ go?: (opts?: {
1801
+ /**
1802
+ * Equivalent to Vue Router <router-link> 'to' property; Specify it explicitly otherwise it will be set with same value as component's 'to' prop
1803
+ */
1804
+ to?: string | any;
1805
+ /**
1806
+ * Equivalent to Vue Router <router-link> 'replace' property; Specify it explicitly otherwise it will be set with same value as component's 'replace' prop
1807
+ */
1808
+ replace?: boolean;
1809
+ /**
1810
+ * Return the router error, if any; Otherwise the returned Promise will always fulfill
1811
+ */
1812
+ returnRouterError?: boolean;
1813
+ }) => Promise<any>
1814
+ ) => void;
1773
1815
  }
1774
1816
 
1775
1817
  export interface QBtnSlots {
@@ -2409,6 +2451,10 @@ export interface QChipProps {
2409
2451
  * Default value: true
2410
2452
  */
2411
2453
  ripple?: boolean | any | undefined;
2454
+ /**
2455
+ * aria-label to be used on the remove icon
2456
+ */
2457
+ removeAriaLabel?: string | undefined;
2412
2458
  /**
2413
2459
  * Tabindex HTML attribute value
2414
2460
  */
@@ -2478,6 +2524,10 @@ export interface QCircularProgressProps {
2478
2524
  * Default value: 0.25em
2479
2525
  */
2480
2526
  fontSize?: string | undefined;
2527
+ /**
2528
+ * Rounding the arc of progress
2529
+ */
2530
+ rounded?: boolean | undefined;
2481
2531
  /**
2482
2532
  * Thickness of progress arc as a ratio (0.0 < x < 1.0) of component size
2483
2533
  * Default value: 0.2
@@ -3423,6 +3473,10 @@ export interface QEditor extends ComponentPublicInstance<QEditorProps> {
3423
3473
  * @returns Provides the pure HTML within the editable area
3424
3474
  */
3425
3475
  getContentEl: () => Element;
3476
+ /**
3477
+ * The current caret state
3478
+ */
3479
+ readonly caret: QEditorCaret;
3426
3480
  }
3427
3481
 
3428
3482
  export interface QExpansionItemProps {
@@ -3478,6 +3532,10 @@ export interface QExpansionItemProps {
3478
3532
  * Apply custom class(es) to the expand icon item section
3479
3533
  */
3480
3534
  expandIconClass?: VueClassProp | undefined;
3535
+ /**
3536
+ * aria-label to be used on the expansion toggle element
3537
+ */
3538
+ toggleAriaLabel?: string | undefined;
3481
3539
  /**
3482
3540
  * Header label (unless using 'header' slot)
3483
3541
  */
@@ -3523,6 +3581,10 @@ export interface QExpansionItemProps {
3523
3581
  * Puts expansion item into open state on initial render; Overridden by v-model if used
3524
3582
  */
3525
3583
  defaultOpened?: boolean | undefined;
3584
+ /**
3585
+ * Do not show the expand icon
3586
+ */
3587
+ hideExpandIcon?: boolean | undefined;
3526
3588
  /**
3527
3589
  * Applies the expansion events to the expand icon only and not to the whole header
3528
3590
  */
@@ -3600,6 +3662,25 @@ export interface QExpansionItemSlots {
3600
3662
  * QExpansionItem expanded status
3601
3663
  */
3602
3664
  expanded: boolean;
3665
+ /**
3666
+ * QExpansionItem details panel id (for use in aria-controls)
3667
+ */
3668
+ detailsId: string;
3669
+ /**
3670
+ * Triggers component to show
3671
+ * @param evt JS event object
3672
+ */
3673
+ show: (evt?: any) => void;
3674
+ /**
3675
+ * Triggers component to hide
3676
+ * @param evt JS event object
3677
+ */
3678
+ hide: (evt?: any) => void;
3679
+ /**
3680
+ * Triggers component to toggle between show/hide
3681
+ * @param evt JS event object
3682
+ */
3683
+ toggle: (evt?: any) => void;
3603
3684
  }) => VNode[];
3604
3685
  }
3605
3686
 
@@ -5499,6 +5580,28 @@ export interface QItemProps {
5499
5580
  * Determines focus state, ONLY if 'manual-focus' is enabled / set to true
5500
5581
  */
5501
5582
  focused?: boolean | undefined;
5583
+ /**
5584
+ * Emitted when the component is clicked
5585
+ * @param evt JS event object; If you are using route navigation ('to'/'replace' props) and you want to cancel navigation then call evt.preventDefault() synchronously in your event handler
5586
+ * @param go Available ONLY if you are using route navigation ('to'/'replace' props); When you need to control the time at which the component should trigger the route navigation then call evt.preventDefault() synchronously and then call this function at your convenience; Useful if you have async work to be done before the actual route navigation or if you want to redirect somewhere else
5587
+ */
5588
+ onClick?: (
5589
+ evt: Event,
5590
+ go?: (opts?: {
5591
+ /**
5592
+ * Equivalent to Vue Router <router-link> 'to' property; Specify it explicitly otherwise it will be set with same value as component's 'to' prop
5593
+ */
5594
+ to?: string | any;
5595
+ /**
5596
+ * Equivalent to Vue Router <router-link> 'replace' property; Specify it explicitly otherwise it will be set with same value as component's 'replace' prop
5597
+ */
5598
+ replace?: boolean;
5599
+ /**
5600
+ * Return the router error, if any; Otherwise the returned Promise will always fulfill
5601
+ */
5602
+ returnRouterError?: boolean;
5603
+ }) => Promise<any>
5604
+ ) => void;
5502
5605
  }
5503
5606
 
5504
5607
  export interface QItemSlots {
@@ -7286,6 +7389,10 @@ export interface QRatingProps {
7286
7389
  * Icon name following Quasar convention to be used when selected (optional); make sure you have the icon library installed unless you are using 'img:' prefix; If an array is provided each rating value will use the corresponding icon in the array (0 based)
7287
7390
  */
7288
7391
  iconHalf?: string | readonly any[] | undefined;
7392
+ /**
7393
+ * Label to be set on aria-label for Icon; If an array is provided each rating value will use the corresponding aria-label in the array (0 based); If string value is provided the rating value will be appended; If not provided the name of the icon will be used
7394
+ */
7395
+ iconAriaLabel?: string | readonly any[] | undefined;
7289
7396
  /**
7290
7397
  * Color name for component from the Quasar Color Palette; v1.5.0+: If an array is provided each rating value will use the corresponding color in the array (0 based)
7291
7398
  */
@@ -9789,7 +9896,7 @@ export interface QTableProps {
9789
9896
  */
9790
9897
  virtualScrollItemSize?: number | string | undefined;
9791
9898
  /**
9792
- * Size in pixels of the sticky header (if using one); A correct value will improve scroll precision
9899
+ * Size in pixels of the sticky header (if using one); A correct value will improve scroll precision; Will be also used for non-virtual-scroll tables for fixing top alignment when using scrollTo method
9793
9900
  * Default value: 0
9794
9901
  */
9795
9902
  virtualScrollStickySizeStart?: number | string | undefined;
@@ -11451,11 +11558,27 @@ export interface QRouteTabProps {
11451
11558
  */
11452
11559
  tabindex?: number | string | undefined;
11453
11560
  /**
11454
- * Emitted when component is clicked (activated)
11455
- * @param evt JS event object; If you want to cancel navigation set synchronously 'evt.navigate' to false
11456
- * @param navigateFn When you need to control the time at which the tab should trigger the route navigation then set 'evt.navigate' to false and call this function; Useful if you have async work to be done before the actual route navigation
11561
+ * Emitted when the component is clicked
11562
+ * @param evt JS event object; If you want to cancel navigation then call evt.preventDefault() synchronously in your event handler
11563
+ * @param go When you need to control the time at which the component should trigger the route navigation then call evt.preventDefault() synchronously and then call this function at your convenience; Useful if you have async work to be done before the actual route navigation or if you want to redirect somewhere else
11457
11564
  */
11458
- onClick?: (evt: Event, navigateFn: () => void) => void;
11565
+ onClick?: (
11566
+ evt: Event,
11567
+ go?: (opts?: {
11568
+ /**
11569
+ * Equivalent to Vue Router <router-link> 'to' property; Specify it explicitly otherwise it will be set with same value as component's 'to' prop
11570
+ */
11571
+ to?: string | any;
11572
+ /**
11573
+ * Equivalent to Vue Router <router-link> 'replace' property; Specify it explicitly otherwise it will be set with same value as component's 'replace' prop
11574
+ */
11575
+ replace?: boolean;
11576
+ /**
11577
+ * Return the router error, if any; Otherwise the returned Promise will always fulfill
11578
+ */
11579
+ returnRouterError?: boolean;
11580
+ }) => Promise<any>
11581
+ ) => void;
11459
11582
  }
11460
11583
 
11461
11584
  export interface QRouteTabSlots {
@@ -13573,6 +13696,7 @@ export interface QEditorCommand {
13573
13696
  }
13574
13697
 
13575
13698
  import { VueStyleObjectProp } from "./api";
13699
+ import { QEditorCaret } from "./api";
13576
13700
  import { ValidationRule } from "./api";
13577
13701
  import { QRejectedEntry } from "./api";
13578
13702
  import { SliderMarkerLabels } from "./api";
@@ -0,0 +1,67 @@
1
+ interface is {
2
+ /**
3
+ * Recursively checks if one Object is equal to another.
4
+ * Also supports Map, Set, ArrayBuffer, Regexp, Date, and many more.
5
+ *
6
+ * @example
7
+ * const objA = { foo: 1, bar: { baz: 2 } }
8
+ * const objB = { foo: 1, bar: { baz: 2 } }
9
+ * objA === objB // false
10
+ * is.deepEqual(objA, objB) // true
11
+ */
12
+ // Can't do it both ways, see: https://github.com/microsoft/TypeScript/issues/26916#issuecomment-555691585
13
+ deepEqual<T>(obj1: T, obj2: unknown): obj2 is T;
14
+
15
+ /**
16
+ * Checks if a value is an object.
17
+ * Note: Map, Set, ArrayBuffer, Regexp, Date, etc. are also objects,
18
+ * but null and Arrays are not.
19
+ *
20
+ * @example
21
+ * is.object({}) // true
22
+ * is.object([]) // false
23
+ * is.object(null) // false
24
+ * is.object(1) // false
25
+ * is.object(new Map()) // true
26
+ * is.object(new Set()) // true
27
+ */
28
+ object<T>(val: T): val is Record<any, any>;
29
+
30
+ /**
31
+ * Checks if a value is a Date object.
32
+ *
33
+ * @see `date.isValid()` If you want to check if a value is a valid date string or number
34
+ *
35
+ * @example
36
+ * is.date(new Date()) // true
37
+ * is.date(Date.now()) // false
38
+ * is.date(new Date('2022-09-24T11:00:00.000Z')) // true
39
+ * is.date('2022-09-24') // false
40
+ */
41
+ date(val: unknown): val is Date;
42
+
43
+ /**
44
+ * Checks if a value is a RegExp.
45
+ *
46
+ * @example <caption>Literal notation</caption>
47
+ * is.regexp(/foo/); // true
48
+ * @example <caption>Constructor</caption>
49
+ * is.regexp(new RegExp('bar', 'g')); // true
50
+ */
51
+ regexp(val: unknown): val is RegExp;
52
+
53
+ /**
54
+ * Checks if a value is a finite number.
55
+ * Note: BigInts, NaN, and Infinity values are not considered as numbers.
56
+ *
57
+ * @example
58
+ * is.number(1); // true
59
+ * is.number('1'); // false
60
+ * is.number(1n); // false
61
+ * is.number(NaN); // false
62
+ * is.number(Infinity); // false
63
+ */
64
+ number(val: unknown): val is number;
65
+ }
66
+
67
+ export declare const is: is;
@@ -0,0 +1,119 @@
1
+ export interface RunSequentialPromisesFulfilledResult<
2
+ TKey extends number | string,
3
+ TValue
4
+ > {
5
+ key: TKey;
6
+ status: "fulfilled";
7
+ value: TValue;
8
+ }
9
+
10
+ /**
11
+ * When using `runSequentialPromises` without `abortOnFail: false`, the Promise will reject with this type.
12
+ * You can use this type to strongly-type the result yourself as it can't be automatically inferred.
13
+ *
14
+ * @example
15
+ * runSequentialPromises([
16
+ * () => Promise.resolve('value1'),
17
+ * () => Promise.reject(new Error('test')),
18
+ * () => Promise.resolve('value2'),
19
+ * ])
20
+ * // First generic param is `number` because we are using array-style
21
+ * // Second generic param is `string` because we are resolving with string values
22
+ * .catch((errResult: RunSequentialPromisesRejectedResult<number, string>) => {
23
+ * // ...
24
+ * errResult.reason // `any` because you can reject with anything, you can cast it as you wish
25
+ * })
26
+ */
27
+ export interface RunSequentialPromisesRejectedResult<
28
+ TKey extends number | string,
29
+ TValue
30
+ > {
31
+ key: TKey;
32
+ status: "rejected";
33
+ reason: any;
34
+ resultAggregator: TKey extends number
35
+ ? RunSequentialPromisesResult<TKey, TValue>[]
36
+ : { [key in TKey]?: RunSequentialPromisesResult<TKey, TValue> };
37
+ }
38
+
39
+ export type RunSequentialPromisesResult<TKey extends number | string, TValue> =
40
+ | RunSequentialPromisesFulfilledResult<TKey, TValue>
41
+ | RunSequentialPromisesRejectedResult<TKey, TValue>;
42
+
43
+ export interface RunSequentialPromisesOptions {
44
+ /**
45
+ * When making HTTP requests, be aware of the maximum threads that
46
+ * the hosting browser supports (usually 5). Any number of threads
47
+ * above that won't add any real benefits.
48
+ *
49
+ * @default 1
50
+ */
51
+ threadsNumber?: number;
52
+
53
+ /**
54
+ * When set to `false`, the result Promise will never get rejected (no catch() needed)
55
+ * Otherwise, if one of the sequential Promises gets rejected, the Promise will be
56
+ * rejected with {@link RunSequentialPromisesRejectedResult}
57
+ *
58
+ * @default true
59
+ */
60
+ abortOnFail?: boolean;
61
+ }
62
+
63
+ /**
64
+ * Run a list of Promises sequentially, optionally on multiple threads.
65
+ *
66
+ * @see https://quasar.dev/quasar-utils/other-utils#runsequentialpromises
67
+ *
68
+ * @throws {RunSequentialPromisesRejectedResult} when a Promise rejects (when `options.abortOnFail` is not false)
69
+ */
70
+ // Array-style overrides
71
+ export function runSequentialPromises<
72
+ TValue = any,
73
+ TKey extends number = number
74
+ >(
75
+ promises: ((
76
+ resultAggregator: RunSequentialPromisesResult<TKey, TValue>[]
77
+ ) => Promise<TValue>)[],
78
+ options: Omit<RunSequentialPromisesOptions, "abortOnFail"> & {
79
+ abortOnFail: false;
80
+ }
81
+ ): Promise<RunSequentialPromisesResult<TKey, TValue>[]>;
82
+ export function runSequentialPromises<
83
+ TValue = any,
84
+ TKey extends number = number
85
+ >(
86
+ promises: ((
87
+ resultAggregator: RunSequentialPromisesFulfilledResult<TKey, TValue>[]
88
+ ) => Promise<TValue>)[],
89
+ options?: RunSequentialPromisesOptions
90
+ ): Promise<RunSequentialPromisesFulfilledResult<TKey, TValue>[]>;
91
+ // Object-style overrides
92
+ export function runSequentialPromises<
93
+ TValue = any,
94
+ TKey extends string = string
95
+ >(
96
+ promisesMap: {
97
+ [key in TKey]: (resultAggregator: {
98
+ [key in TKey]?: RunSequentialPromisesResult<TKey, TValue>;
99
+ }) => Promise<TValue>;
100
+ },
101
+ options?: Omit<RunSequentialPromisesOptions, "abortOnFail"> & {
102
+ abortOnFail: false;
103
+ }
104
+ ): Promise<{
105
+ [key in TKey]: RunSequentialPromisesResult<TKey, TValue>;
106
+ }>;
107
+ export function runSequentialPromises<
108
+ TValue = any,
109
+ TKey extends string = string
110
+ >(
111
+ promisesMap: {
112
+ [key in TKey]: (resultAggregator: {
113
+ [key in TKey]?: RunSequentialPromisesFulfilledResult<TKey, TValue>;
114
+ }) => Promise<TValue>;
115
+ },
116
+ options?: RunSequentialPromisesOptions
117
+ ): Promise<{
118
+ [key in TKey]: RunSequentialPromisesFulfilledResult<TKey, TValue>;
119
+ }>;
@@ -19,6 +19,8 @@ export * from './utils/dom';
19
19
  export * from './utils/event';
20
20
  export * from './utils/format';
21
21
  export * from './utils/scroll';
22
+ export * from './utils/is';
23
+ export * from './utils/run-sequential-promises';
22
24
 
23
25
  import { VueStyleObjectProp } from "./api/vue-prop-types";
24
26
 
@@ -99,6 +101,13 @@ export function setCssVar(
99
101
  element?: Element
100
102
  ): void;
101
103
 
104
+ export class EventBus {
105
+ on (event: string, callback: Function, ctx?: any): this;
106
+ once (event: string, callback: Function, ctx?: any): this;
107
+ emit (event: string, ...args: any[]): this;
108
+ off (event: string, callback?: Function): this;
109
+ }
110
+
102
111
  interface CreateMetaMixinContext extends ComponentPublicInstance {
103
112
  [index: string]: any;
104
113
  }
@@ -363,6 +363,10 @@
363
363
  "type": "array",
364
364
  "description": "An array of two numbers to offset the menu horizontally and vertically in pixels"
365
365
  },
366
+ "q-btn-dropdown/toggle-aria-label": {
367
+ "type": "string",
368
+ "description": "aria-label to be used on the dropdown toggle element"
369
+ },
366
370
  "q-btn-group/spread": {
367
371
  "type": "boolean",
368
372
  "description": "Spread horizontally to all available space"
@@ -1007,6 +1011,10 @@
1007
1011
  "type": "boolean|object",
1008
1012
  "description": "Configure material ripple (disable it by setting it to 'false' or supply a config object)"
1009
1013
  },
1014
+ "q-chip/remove-aria-label": {
1015
+ "type": "string",
1016
+ "description": "aria-label to be used on the remove icon"
1017
+ },
1010
1018
  "q-chip/tabindex": {
1011
1019
  "type": "number|string",
1012
1020
  "description": "Tabindex HTML attribute value"
@@ -1047,6 +1055,10 @@
1047
1055
  "type": "string",
1048
1056
  "description": "Size of text in CSS units, including unit name. Suggestion: use 'em' units to sync with component size"
1049
1057
  },
1058
+ "q-circular-progress/rounded": {
1059
+ "type": "boolean",
1060
+ "description": "Rounding the arc of progress"
1061
+ },
1050
1062
  "q-circular-progress/thickness": {
1051
1063
  "type": "number",
1052
1064
  "description": "Thickness of progress arc as a ratio (0.0 < x < 1.0) of component size"
@@ -1559,6 +1571,10 @@
1559
1571
  "type": "string|array|object",
1560
1572
  "description": "Apply custom class(es) to the expand icon item section"
1561
1573
  },
1574
+ "q-expansion-item/toggle-aria-label": {
1575
+ "type": "string",
1576
+ "description": "aria-label to be used on the expansion toggle element"
1577
+ },
1562
1578
  "q-expansion-item/label": {
1563
1579
  "type": "string",
1564
1580
  "description": "Header label (unless using 'header' slot)"
@@ -1603,6 +1619,10 @@
1603
1619
  "type": "boolean",
1604
1620
  "description": "Puts expansion item into open state on initial render; Overridden by v-model if used"
1605
1621
  },
1622
+ "q-expansion-item/hide-expand-icon": {
1623
+ "type": "boolean",
1624
+ "description": "Do not show the expand icon"
1625
+ },
1606
1626
  "q-expansion-item/expand-icon-toggle": {
1607
1627
  "type": "boolean",
1608
1628
  "description": "Applies the expansion events to the expand icon only and not to the whole header"
@@ -3671,6 +3691,10 @@
3671
3691
  "type": "string|array",
3672
3692
  "description": "Icon name following Quasar convention to be used when selected (optional); make sure you have the icon library installed unless you are using 'img:' prefix; If an array is provided each rating value will use the corresponding icon in the array (0 based)"
3673
3693
  },
3694
+ "q-rating/icon-aria-label": {
3695
+ "type": "string|array",
3696
+ "description": "Label to be set on aria-label for Icon; If an array is provided each rating value will use the corresponding aria-label in the array (0 based); If string value is provided the rating value will be appended; If not provided the name of the icon will be used"
3697
+ },
3674
3698
  "q-rating/color": {
3675
3699
  "type": "string|array",
3676
3700
  "description": "Color name for component from the Quasar Color Palette; v1.5.0+: If an array is provided each rating value will use the corresponding color in the array (0 based)"
@@ -4841,7 +4865,7 @@
4841
4865
  },
4842
4866
  "q-table/virtual-scroll-sticky-size-start": {
4843
4867
  "type": "number|string",
4844
- "description": "Size in pixels of the sticky header (if using one); A correct value will improve scroll precision"
4868
+ "description": "Size in pixels of the sticky header (if using one); A correct value will improve scroll precision; Will be also used for non-virtual-scroll tables for fixing top alignment when using scrollTo method"
4845
4869
  },
4846
4870
  "q-table/virtual-scroll-sticky-size-end": {
4847
4871
  "type": "number|string",
@@ -126,7 +126,8 @@
126
126
  "auto-close",
127
127
  "menu-anchor",
128
128
  "menu-self",
129
- "menu-offset"
129
+ "menu-offset",
130
+ "toggle-aria-label"
130
131
  ],
131
132
  "description": ""
132
133
  },
@@ -348,6 +349,7 @@
348
349
  "clickable",
349
350
  "removable",
350
351
  "ripple",
352
+ "remove-aria-label",
351
353
  "tabindex",
352
354
  "disable"
353
355
  ],
@@ -363,6 +365,7 @@
363
365
  "center-color",
364
366
  "track-color",
365
367
  "font-size",
368
+ "rounded",
366
369
  "thickness",
367
370
  "angle",
368
371
  "indeterminate",
@@ -521,6 +524,7 @@
521
524
  "expand-icon",
522
525
  "expanded-icon",
523
526
  "expand-icon-class",
527
+ "toggle-aria-label",
524
528
  "label",
525
529
  "label-lines",
526
530
  "caption",
@@ -532,6 +536,7 @@
532
536
  "content-inset-level",
533
537
  "expand-separator",
534
538
  "default-opened",
539
+ "hide-expand-icon",
535
540
  "expand-icon-toggle",
536
541
  "switch-toggle-side",
537
542
  "dense-toggle",
@@ -1232,6 +1237,7 @@
1232
1237
  "icon",
1233
1238
  "icon-selected",
1234
1239
  "icon-half",
1240
+ "icon-aria-label",
1235
1241
  "color",
1236
1242
  "color-selected",
1237
1243
  "color-half",