quasar 2.17.7 → 2.18.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 (289) hide show
  1. package/dist/api/QBtnDropdown.json +1 -1
  2. package/dist/api/QDialog.json +1 -1
  3. package/dist/api/QMenu.json +1 -1
  4. package/dist/api/QSelect.json +1 -1
  5. package/dist/api/QTable.json +1 -1
  6. package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
  7. package/dist/icon-set/eva-icons.umd.prod.js +1 -1
  8. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
  9. package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
  10. package/dist/icon-set/fontawesome-v6-pro.umd.prod.js +1 -1
  11. package/dist/icon-set/fontawesome-v6.umd.prod.js +1 -1
  12. package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
  13. package/dist/icon-set/line-awesome.umd.prod.js +1 -1
  14. package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
  15. package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
  16. package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
  17. package/dist/icon-set/material-icons.umd.prod.js +1 -1
  18. package/dist/icon-set/material-symbols-outlined.umd.prod.js +1 -1
  19. package/dist/icon-set/material-symbols-rounded.umd.prod.js +1 -1
  20. package/dist/icon-set/material-symbols-sharp.umd.prod.js +1 -1
  21. package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
  22. package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
  23. package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
  24. package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
  25. package/dist/icon-set/mdi-v7.umd.prod.js +1 -1
  26. package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
  27. package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
  28. package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
  29. package/dist/icon-set/svg-fontawesome-v6.umd.prod.js +1 -1
  30. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
  31. package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
  32. package/dist/icon-set/svg-ionicons-v6.umd.prod.js +1 -1
  33. package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
  34. package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
  35. package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
  36. package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
  37. package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
  38. package/dist/icon-set/svg-material-symbols-outlined.umd.prod.js +1 -1
  39. package/dist/icon-set/svg-material-symbols-rounded.umd.prod.js +1 -1
  40. package/dist/icon-set/svg-material-symbols-sharp.umd.prod.js +1 -1
  41. package/dist/icon-set/svg-mdi-v6.umd.prod.js +1 -1
  42. package/dist/icon-set/svg-mdi-v7.umd.prod.js +1 -1
  43. package/dist/icon-set/svg-themify.umd.prod.js +1 -1
  44. package/dist/icon-set/themify.umd.prod.js +1 -1
  45. package/dist/lang/ar-TN.umd.prod.js +2 -2
  46. package/dist/lang/ar.umd.prod.js +2 -2
  47. package/dist/lang/az-Latn.umd.prod.js +2 -2
  48. package/dist/lang/bg.umd.prod.js +2 -2
  49. package/dist/lang/bn.umd.prod.js +2 -2
  50. package/dist/lang/bs-BA.umd.prod.js +2 -2
  51. package/dist/lang/ca.umd.prod.js +2 -2
  52. package/dist/lang/cs.umd.prod.js +2 -2
  53. package/dist/lang/da.umd.prod.js +2 -2
  54. package/dist/lang/de-CH.umd.prod.js +2 -2
  55. package/dist/lang/de-DE.umd.prod.js +2 -2
  56. package/dist/lang/de.umd.prod.js +2 -2
  57. package/dist/lang/el.umd.prod.js +2 -2
  58. package/dist/lang/en-GB.umd.prod.js +2 -2
  59. package/dist/lang/en-US.umd.prod.js +2 -2
  60. package/dist/lang/eo.umd.prod.js +2 -2
  61. package/dist/lang/es.umd.prod.js +2 -2
  62. package/dist/lang/et.umd.prod.js +2 -2
  63. package/dist/lang/eu.umd.prod.js +2 -2
  64. package/dist/lang/fa-IR.umd.prod.js +2 -2
  65. package/dist/lang/fa.umd.prod.js +2 -2
  66. package/dist/lang/fi.umd.prod.js +2 -2
  67. package/dist/lang/fr.umd.prod.js +2 -2
  68. package/dist/lang/gn.umd.prod.js +2 -2
  69. package/dist/lang/he.umd.prod.js +2 -2
  70. package/dist/lang/hi.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/kk.umd.prod.js +2 -2
  78. package/dist/lang/km.umd.prod.js +2 -2
  79. package/dist/lang/ko-KR.umd.prod.js +2 -2
  80. package/dist/lang/kur-CKB.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/mk.umd.prod.js +2 -2
  85. package/dist/lang/ml.umd.prod.js +2 -2
  86. package/dist/lang/mm.umd.prod.js +2 -2
  87. package/dist/lang/ms-MY.umd.prod.js +2 -2
  88. package/dist/lang/ms.umd.prod.js +2 -2
  89. package/dist/lang/my.umd.prod.js +2 -2
  90. package/dist/lang/nb-NO.umd.prod.js +2 -2
  91. package/dist/lang/nl.umd.prod.js +2 -2
  92. package/dist/lang/pl.umd.prod.js +2 -2
  93. package/dist/lang/pt-BR.umd.prod.js +2 -2
  94. package/dist/lang/pt.umd.prod.js +2 -2
  95. package/dist/lang/ro.umd.prod.js +2 -2
  96. package/dist/lang/ru.umd.prod.js +2 -2
  97. package/dist/lang/sk.umd.prod.js +2 -2
  98. package/dist/lang/sl.umd.prod.js +2 -2
  99. package/dist/lang/sm.umd.prod.js +2 -2
  100. package/dist/lang/sr-CYR.umd.prod.js +2 -2
  101. package/dist/lang/sr.umd.prod.js +2 -2
  102. package/dist/lang/sv.umd.prod.js +2 -2
  103. package/dist/lang/ta.umd.prod.js +2 -2
  104. package/dist/lang/th.umd.prod.js +2 -2
  105. package/dist/lang/tl.umd.prod.js +2 -2
  106. package/dist/lang/tr.umd.prod.js +2 -2
  107. package/dist/lang/ug.umd.prod.js +1 -1
  108. package/dist/lang/uk.umd.prod.js +2 -2
  109. package/dist/lang/ur-PK.umd.prod.js +7 -0
  110. package/dist/lang/uz-Cyrl.umd.prod.js +2 -2
  111. package/dist/lang/uz-Latn.umd.prod.js +2 -2
  112. package/dist/lang/vi.umd.prod.js +2 -2
  113. package/dist/lang/zh-CN.umd.prod.js +2 -2
  114. package/dist/lang/zh-TW.umd.prod.js +2 -2
  115. package/dist/quasar.client.js +237 -174
  116. package/dist/quasar.css +1 -1
  117. package/dist/quasar.prod.css +1 -1
  118. package/dist/quasar.rtl.css +1 -1
  119. package/dist/quasar.rtl.prod.css +1 -1
  120. package/dist/quasar.sass +2 -2
  121. package/dist/quasar.server.prod.cjs +15 -15
  122. package/dist/quasar.server.prod.js +8 -8
  123. package/dist/quasar.umd.js +237 -174
  124. package/dist/quasar.umd.prod.js +15 -15
  125. package/dist/types/index.d.ts +52 -3
  126. package/dist/vetur/quasar-attributes.json +1 -1
  127. package/dist/vetur/quasar-tags.json +1 -1
  128. package/dist/web-types/web-types.json +1 -1
  129. package/lang/ar-TN.js +6 -0
  130. package/lang/ar.js +6 -0
  131. package/lang/az-Latn.js +6 -0
  132. package/lang/bg.js +6 -0
  133. package/lang/bn.js +6 -0
  134. package/lang/bs-BA.js +6 -0
  135. package/lang/ca.js +6 -0
  136. package/lang/cs.js +6 -0
  137. package/lang/da.js +6 -0
  138. package/lang/de-CH.js +6 -0
  139. package/lang/de-DE.js +6 -0
  140. package/lang/de.js +6 -0
  141. package/lang/el.js +6 -0
  142. package/lang/en-GB.js +6 -0
  143. package/lang/en-US.js +6 -0
  144. package/lang/eo.js +6 -0
  145. package/lang/es.js +6 -0
  146. package/lang/et.js +6 -0
  147. package/lang/eu.js +6 -0
  148. package/lang/fa-IR.js +6 -0
  149. package/lang/fa.js +6 -0
  150. package/lang/fi.js +6 -0
  151. package/lang/fr.js +6 -0
  152. package/lang/gn.js +6 -0
  153. package/lang/he.js +6 -0
  154. package/lang/hi.js +6 -0
  155. package/lang/hr.js +6 -0
  156. package/lang/hu.js +6 -0
  157. package/lang/id.js +6 -0
  158. package/lang/index.json +1 -1
  159. package/lang/is.js +6 -0
  160. package/lang/it.js +6 -0
  161. package/lang/ja.js +6 -0
  162. package/lang/kk.js +6 -0
  163. package/lang/km.js +6 -0
  164. package/lang/ko-KR.js +6 -0
  165. package/lang/kur-CKB.js +6 -0
  166. package/lang/lt.js +6 -0
  167. package/lang/lu.js +6 -0
  168. package/lang/lv.js +6 -0
  169. package/lang/mk.js +6 -0
  170. package/lang/ml.js +6 -0
  171. package/lang/mm.js +6 -0
  172. package/lang/ms-MY.js +6 -0
  173. package/lang/ms.js +6 -0
  174. package/lang/my.js +6 -0
  175. package/lang/nb-NO.js +6 -0
  176. package/lang/nl.js +6 -0
  177. package/lang/pl.js +6 -0
  178. package/lang/pt-BR.js +6 -0
  179. package/lang/pt.js +6 -0
  180. package/lang/ro.js +6 -0
  181. package/lang/ru.js +6 -0
  182. package/lang/sk.js +6 -0
  183. package/lang/sl.js +6 -0
  184. package/lang/sm.js +6 -0
  185. package/lang/sr-CYR.js +6 -0
  186. package/lang/sr.js +6 -0
  187. package/lang/sv.js +6 -0
  188. package/lang/ta.js +6 -0
  189. package/lang/th.js +6 -0
  190. package/lang/tl.js +6 -0
  191. package/lang/tr.js +6 -0
  192. package/lang/uk.js +6 -0
  193. package/lang/ur-PK.js +111 -0
  194. package/lang/uz-Cyrl.js +6 -0
  195. package/lang/uz-Latn.js +6 -0
  196. package/lang/vi.js +6 -0
  197. package/lang/zh-CN.js +6 -0
  198. package/lang/zh-TW.js +6 -0
  199. package/package.json +3 -3
  200. package/src/components/breadcrumbs/QBreadcrumbs.js +2 -2
  201. package/src/components/btn/QBtn.js +7 -8
  202. package/src/components/btn-dropdown/QBtnDropdown.js +10 -4
  203. package/src/components/btn-dropdown/QBtnDropdown.json +21 -0
  204. package/src/components/color/QColor.js +1 -1
  205. package/src/components/date/QDate.js +1 -1
  206. package/src/components/dialog/QDialog.js +2 -2
  207. package/src/components/dialog/QDialog.json +1 -1
  208. package/src/components/drawer/QDrawer.js +3 -5
  209. package/src/components/editor/QEditor.js +1 -1
  210. package/src/components/editor/editor-caret.js +1 -1
  211. package/src/components/editor/editor-utils.js +2 -2
  212. package/src/components/expansion-item/QExpansionItem.js +6 -3
  213. package/src/components/fab/QFab.js +2 -2
  214. package/src/components/form/QForm.js +2 -2
  215. package/src/components/form/QFormChildMixin.js +6 -4
  216. package/src/components/icon/QIcon.js +2 -2
  217. package/src/components/infinite-scroll/QInfiniteScroll.js +2 -4
  218. package/src/components/input/QInput.js +3 -3
  219. package/src/components/item/QItem.js +1 -1
  220. package/src/components/menu/QMenu.js +8 -5
  221. package/src/components/menu/QMenu.json +8 -1
  222. package/src/components/pagination/QPagination.js +8 -4
  223. package/src/components/parallax/QParallax.js +1 -1
  224. package/src/components/popup-edit/QPopupEdit.js +2 -2
  225. package/src/components/pull-to-refresh/QPullToRefresh.js +1 -1
  226. package/src/components/rating/QRating.sass +1 -1
  227. package/src/components/resize-observer/QResizeObserver.js +1 -1
  228. package/src/components/scroll-observer/QScrollObserver.js +2 -2
  229. package/src/components/select/QSelect.js +8 -6
  230. package/src/components/select/QSelect.json +1 -1
  231. package/src/components/slide-transition/QSlideTransition.js +2 -2
  232. package/src/components/stepper/StepHeader.js +1 -1
  233. package/src/components/table/QTable.js +77 -36
  234. package/src/components/table/QTable.json +98 -0
  235. package/src/components/table/QTr.js +4 -1
  236. package/src/components/table/table-sort.js +1 -1
  237. package/src/components/tabs/QTabs.js +2 -2
  238. package/src/components/tabs/use-tab.js +4 -4
  239. package/src/components/time/QTime.js +1 -1
  240. package/src/components/tree/QTree.js +2 -3
  241. package/src/components/virtual-scroll/use-virtual-scroll.js +3 -3
  242. package/src/composables/private.use-field/use-field.js +5 -5
  243. package/src/composables/private.use-file/use-file.js +6 -3
  244. package/src/composables/private.use-model-toggle/use-model-toggle.js +2 -2
  245. package/src/composables/private.use-refocus-target/use-refocus-target.js +6 -5
  246. package/src/composables/private.use-validate/use-validate.js +1 -1
  247. package/src/directives/intersection/Intersection.js +2 -2
  248. package/src/directives/morph/Morph.js +2 -2
  249. package/src/directives/mutation/Mutation.js +2 -2
  250. package/src/directives/touch-hold/TouchHold.js +2 -2
  251. package/src/directives/touch-pan/TouchPan.js +2 -2
  252. package/src/directives/touch-repeat/TouchRepeat.js +3 -3
  253. package/src/directives/touch-swipe/TouchSwipe.js +3 -3
  254. package/src/plugins/lang/Lang.test.js +12 -0
  255. package/src/plugins/loading/Loading.js +1 -1
  256. package/src/plugins/notify/Notify.js +1 -1
  257. package/src/plugins/private.body/Body.js +1 -1
  258. package/src/plugins/private.history/History.js +1 -1
  259. package/src/plugins/screen/Screen.js +1 -1
  260. package/src/utils/morph/morph.js +13 -10
  261. package/src/utils/open-url/open-url.js +3 -3
  262. package/src/utils/private.dialog/create-dialog.js +2 -2
  263. package/src/utils/private.portal/portal.js +1 -1
  264. package/src/components/date/__tests__/QDate.cy.js +0 -189
  265. package/src/components/date/__tests__/use-datetime.cy.js +0 -83
  266. package/src/components/editor/__tests__/QEditor.cy.js +0 -195
  267. package/src/components/field/__tests__/QField.cy.js +0 -156
  268. package/src/components/input/__tests__/QInput.cy.js +0 -786
  269. package/src/components/input/__tests__/use-mask.cy.js +0 -124
  270. package/src/components/menu/__tests__/QMenu.cy.js +0 -634
  271. package/src/components/menu/__tests__/WrapperOne.vue +0 -51
  272. package/src/components/menu/__tests__/WrapperTwo.vue +0 -38
  273. package/src/components/select/__tests__/QSelect.cy.js +0 -2018
  274. package/src/components/table/__tests__/QTable.cy.js +0 -635
  275. package/src/components/table/__tests__/QTd.cy.js +0 -35
  276. package/src/components/table/__tests__/QTh.cy.js +0 -27
  277. package/src/components/table/__tests__/QTr.cy.js +0 -27
  278. package/src/components/tabs/__tests__/QTab.cy.js +0 -79
  279. package/src/components/tabs/__tests__/QTabs.cy.js +0 -147
  280. package/src/components/uploader/__tests__/QUploader.cy.js +0 -191
  281. package/src/composables/__tests__/FieldWrapper.vue +0 -54
  282. package/src/composables/__tests__/use-anchor.cy.js +0 -98
  283. package/src/composables/__tests__/use-field.cy.js +0 -547
  284. package/src/composables/__tests__/use-file.cy.js +0 -69
  285. package/src/composables/__tests__/use-fullscreen.cy.js +0 -37
  286. package/src/composables/__tests__/use-model-toggle.cy.js +0 -350
  287. package/src/composables/__tests__/use-portal.cy.js +0 -4
  288. package/src/composables/__tests__/use-router-link.cy.js +0 -55
  289. package/src/composables/__tests__/use-validate.cy.js +0 -257
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.17.7
2
+ * Quasar Framework v2.18.0
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -490,7 +490,7 @@
490
490
  visualViewport.width * visualViewport.scale + window.innerWidth - scrollingElement.clientWidth,
491
491
  visualViewport.height * visualViewport.scale + window.innerHeight - scrollingElement.clientHeight
492
492
  ];
493
- const classes = $q.config.screen !== void 0 && $q.config.screen.bodyClasses === true;
493
+ const classes = $q.config.screen?.bodyClasses === true;
494
494
  this.__update = (force) => {
495
495
  const [w, h2] = getSize();
496
496
  if (h2 !== this.height) {
@@ -728,7 +728,7 @@
728
728
  if (false) {
729
729
  const { $q, ssrContext } = opts;
730
730
  const cls = getBodyClasses($q.platform, $q.config);
731
- if ($q.config.screen !== void 0 && $q.config.screen.bodyClass === true) {
731
+ if ($q.config.screen?.bodyClass === true) {
732
732
  cls.push("screen--xs");
733
733
  }
734
734
  ssrContext._meta.bodyClasses += cls.join(" ");
@@ -788,7 +788,7 @@
788
788
  const { cordova: cordova2, capacitor } = client.is;
789
789
  if (cordova2 !== true && capacitor !== true) return;
790
790
  const qConf = $q.config[cordova2 === true ? "cordova" : "capacitor"];
791
- if (qConf !== void 0 && qConf.backButton === false) return;
791
+ if (qConf?.backButton === false) return;
792
792
  if (
793
793
  // if we're on Capacitor mode
794
794
  capacitor === true && (window.Capacitor === void 0 || window.Capacitor.Plugins.App === void 0)
@@ -875,6 +875,12 @@
875
875
  pagination: (start, end, total) => start + "-" + end + " of " + total,
876
876
  columns: "Columns"
877
877
  },
878
+ pagination: {
879
+ first: "First page",
880
+ prev: "Previous page",
881
+ next: "Next page",
882
+ last: "Last page"
883
+ },
878
884
  editor: {
879
885
  url: "URL",
880
886
  bold: "Bold",
@@ -1378,7 +1384,7 @@
1378
1384
  }
1379
1385
  var install_quasar_default = false ? function(parentApp, opts = {}, ssrContext) {
1380
1386
  const $q = {
1381
- version: "2.17.7",
1387
+ version: "2.18.0",
1382
1388
  config: opts.config || {}
1383
1389
  };
1384
1390
  Object.assign(ssrContext, {
@@ -1408,7 +1414,7 @@
1408
1414
  ssrContext
1409
1415
  });
1410
1416
  } : function(parentApp, opts = {}) {
1411
- const $q = { version: "2.17.7" };
1417
+ const $q = { version: "2.18.0" };
1412
1418
  if (globalConfigIsFrozen === false) {
1413
1419
  if (opts.config !== void 0) {
1414
1420
  Object.assign(globalConfig, opts.config);
@@ -1867,7 +1873,9 @@
1867
1873
  "ion-logo": ionFn,
1868
1874
  "iconfont ": sameFn,
1869
1875
  "ti-": (i) => `themify-icon ${i}`,
1870
- "bi-": (i) => `bootstrap-icons ${i}`
1876
+ "bi-": (i) => `bootstrap-icons ${i}`,
1877
+ "i-": sameFn
1878
+ // UnoCSS pure icons
1871
1879
  };
1872
1880
  var matMap = {
1873
1881
  o_: "-outlined",
@@ -1987,8 +1995,7 @@
1987
1995
  const data = {
1988
1996
  class: classes.value,
1989
1997
  style: sizeStyle.value,
1990
- "aria-hidden": "true",
1991
- role: "presentation"
1998
+ "aria-hidden": "true"
1992
1999
  };
1993
2000
  if (type.value.none === true) {
1994
2001
  return h(props4.tag, data, hSlot(slots.default));
@@ -2259,9 +2266,9 @@
2259
2266
  );
2260
2267
  if (vnodes.length === 0) return;
2261
2268
  let els = 1;
2262
- const child = [], len = vnodes.filter((c) => c.type !== void 0 && c.type.name === "QBreadcrumbsEl").length, separator = slots.separator !== void 0 ? slots.separator : () => props4.separator;
2269
+ const child = [], len = vnodes.filter((c) => c.type?.name === "QBreadcrumbsEl").length, separator = slots.separator !== void 0 ? slots.separator : () => props4.separator;
2263
2270
  vnodes.forEach((comp) => {
2264
- if (comp.type !== void 0 && comp.type.name === "QBreadcrumbsEl") {
2271
+ if (comp.type?.name === "QBreadcrumbsEl") {
2265
2272
  const middle = els < len;
2266
2273
  const disabled = comp.props !== null && disabledValues.includes(comp.props.disable);
2267
2274
  const cls = (middle === true ? "" : " q-breadcrumbs--last") + (disabled !== true && middle === true ? activeClass.value : "");
@@ -2974,11 +2981,11 @@
2974
2981
  if (e.defaultPrevented === true) return;
2975
2982
  const el = document.activeElement;
2976
2983
  if (props4.type === "submit" && el !== document.body && rootRef.value.contains(el) === false && el.contains(rootRef.value) === false) {
2977
- rootRef.value.focus();
2984
+ e.qAvoidFocus !== true && rootRef.value.focus();
2978
2985
  const onClickCleanup = () => {
2979
2986
  document.removeEventListener("keydown", stopAndPrevent, true);
2980
2987
  document.removeEventListener("keyup", onClickCleanup, passiveCapture);
2981
- rootRef.value !== null && rootRef.value.removeEventListener("blur", onClickCleanup, passiveCapture);
2988
+ rootRef.value?.removeEventListener("blur", onClickCleanup, passiveCapture);
2982
2989
  };
2983
2990
  document.addEventListener("keydown", stopAndPrevent, true);
2984
2991
  document.addEventListener("keyup", onClickCleanup, passiveCapture);
@@ -2993,7 +3000,7 @@
2993
3000
  if (isKeyCode(e, [13, 32]) === true && keyboardTarget !== rootRef.value) {
2994
3001
  keyboardTarget !== null && cleanup();
2995
3002
  if (e.defaultPrevented !== true) {
2996
- rootRef.value.focus();
3003
+ e.qAvoidFocus !== true && rootRef.value.focus();
2997
3004
  keyboardTarget = rootRef.value;
2998
3005
  rootRef.value.classList.add("q-btn--active");
2999
3006
  document.addEventListener("keyup", onPressEnd, true);
@@ -3033,8 +3040,8 @@
3033
3040
  }
3034
3041
  function onPressEnd(e) {
3035
3042
  if (rootRef.value === null) return;
3036
- if (e !== void 0 && e.type === "blur" && document.activeElement === rootRef.value) return;
3037
- if (e !== void 0 && e.type === "keyup") {
3043
+ if (e?.type === "blur" && document.activeElement === rootRef.value) return;
3044
+ if (e?.type === "keyup") {
3038
3045
  if (keyboardTarget === rootRef.value && isKeyCode(e, [13, 32]) === true) {
3039
3046
  const evt = new MouseEvent("click", e);
3040
3047
  evt.qKeyEvent = true;
@@ -3067,10 +3074,10 @@
3067
3074
  }
3068
3075
  if (keyboardTarget === rootRef.value) {
3069
3076
  document.removeEventListener("keyup", onPressEnd, true);
3070
- rootRef.value !== null && rootRef.value.removeEventListener("blur", onPressEnd, passiveCapture);
3077
+ rootRef.value?.removeEventListener("blur", onPressEnd, passiveCapture);
3071
3078
  keyboardTarget = null;
3072
3079
  }
3073
- rootRef.value !== null && rootRef.value.classList.remove("q-btn--active");
3080
+ rootRef.value?.classList.remove("q-btn--active");
3074
3081
  }
3075
3082
  function onLoadingEvt(evt) {
3076
3083
  stopAndPrevent(evt);
@@ -3438,7 +3445,7 @@
3438
3445
  }
3439
3446
  }
3440
3447
  function show(evt) {
3441
- if (props4.disable === true || evt !== void 0 && evt.qAnchorHandled === true || canShow !== void 0 && canShow(evt) !== true) return;
3448
+ if (props4.disable === true || evt?.qAnchorHandled === true || canShow !== void 0 && canShow(evt) !== true) return;
3442
3449
  const listener = props4["onUpdate:modelValue"] !== void 0;
3443
3450
  if (listener === true && true) {
3444
3451
  emit("update:modelValue", true);
@@ -3604,7 +3611,7 @@
3604
3611
  }
3605
3612
  } else if (proxy.__qPortal === true) {
3606
3613
  const parent = getParentProxy(proxy);
3607
- if (parent !== void 0 && parent.$options.name === "QPopupProxy") {
3614
+ if (parent?.$options.name === "QPopupProxy") {
3608
3615
  proxy.hide(evt);
3609
3616
  return parent;
3610
3617
  } else {
@@ -4313,6 +4320,7 @@
4313
4320
  persistent: Boolean,
4314
4321
  autoClose: Boolean,
4315
4322
  separateClosePopup: Boolean,
4323
+ noEscDismiss: Boolean,
4316
4324
  noRouteDismiss: Boolean,
4317
4325
  noRefocus: Boolean,
4318
4326
  noFocus: Boolean,
@@ -4462,7 +4470,7 @@
4462
4470
  anchorCleanup(true);
4463
4471
  if (refocusTarget !== null && // menu was hidden from code or ESC plugin
4464
4472
  (evt === void 0 || evt.qClickOutside !== true)) {
4465
- ((evt && evt.type.indexOf("key") === 0 ? refocusTarget.closest('[tabindex]:not([tabindex^="-"])') : void 0) || refocusTarget).focus();
4473
+ ((evt?.type.indexOf("key") === 0 ? refocusTarget.closest('[tabindex]:not([tabindex^="-"])') : void 0) || refocusTarget).focus();
4466
4474
  refocusTarget = null;
4467
4475
  }
4468
4476
  registerTimeout(() => {
@@ -4506,8 +4514,10 @@
4506
4514
  }
4507
4515
  }
4508
4516
  function onEscapeKey(evt) {
4509
- emit("escapeKey");
4510
- hide(evt);
4517
+ if (props4.noEscDismiss !== true) {
4518
+ emit("escapeKey");
4519
+ hide(evt);
4520
+ }
4511
4521
  }
4512
4522
  function updatePosition() {
4513
4523
  setPosition({
@@ -4639,8 +4649,11 @@
4639
4649
  contentStyle: [Array, String, Object],
4640
4650
  cover: Boolean,
4641
4651
  persistent: Boolean,
4652
+ noEscDismiss: Boolean,
4642
4653
  noRouteDismiss: Boolean,
4643
4654
  autoClose: Boolean,
4655
+ noRefocus: Boolean,
4656
+ noFocus: Boolean,
4644
4657
  menuAnchor: {
4645
4658
  type: String,
4646
4659
  default: "bottom end"
@@ -4679,7 +4692,7 @@
4679
4692
  const btnDesignAttr = computed(() => getBtnDesignAttr(props4));
4680
4693
  const btnProps = computed(() => passBtnProps(props4));
4681
4694
  watch(() => props4.modelValue, (val) => {
4682
- menuRef.value !== null && menuRef.value[val ? "show" : "hide"]();
4695
+ menuRef.value?.[val ? "show" : "hide"]();
4683
4696
  });
4684
4697
  watch(() => props4.split, hide);
4685
4698
  function onBeforeShow(e) {
@@ -4707,13 +4720,13 @@
4707
4720
  emit("click", e);
4708
4721
  }
4709
4722
  function toggle(evt) {
4710
- menuRef.value !== null && menuRef.value.toggle(evt);
4723
+ menuRef.value?.toggle(evt);
4711
4724
  }
4712
4725
  function show(evt) {
4713
- menuRef.value !== null && menuRef.value.show(evt);
4726
+ menuRef.value?.show(evt);
4714
4727
  }
4715
4728
  function hide(evt) {
4716
- menuRef.value !== null && menuRef.value.hide(evt);
4729
+ menuRef.value?.hide(evt);
4717
4730
  }
4718
4731
  Object.assign(proxy, {
4719
4732
  show,
@@ -4739,8 +4752,11 @@
4739
4752
  cover: props4.cover,
4740
4753
  fit: true,
4741
4754
  persistent: props4.persistent,
4755
+ noEscDismiss: props4.noEscDismiss,
4742
4756
  noRouteDismiss: props4.noRouteDismiss,
4743
4757
  autoClose: props4.autoClose,
4758
+ noFocus: props4.noFocus,
4759
+ noRefocus: props4.noRefocus,
4744
4760
  anchor: props4.menuAnchor,
4745
4761
  self: props4.menuSelf,
4746
4762
  offset: props4.menuOffset,
@@ -5184,8 +5200,8 @@
5184
5200
  if (ctx.event === void 0) return;
5185
5201
  cleanEvt(ctx, "temp");
5186
5202
  client.is.firefox === true && preventDraggable(el, false);
5187
- ctx.styleCleanup !== void 0 && ctx.styleCleanup(true);
5188
- evt !== void 0 && ctx.event.dir !== false && stopAndPrevent(evt);
5203
+ ctx.styleCleanup?.(true);
5204
+ if (evt !== void 0 && ctx.event.dir !== false) stopAndPrevent(evt);
5189
5205
  ctx.event = void 0;
5190
5206
  }
5191
5207
  };
@@ -5218,7 +5234,7 @@
5218
5234
  cleanEvt(ctx, "main");
5219
5235
  cleanEvt(ctx, "temp");
5220
5236
  client.is.firefox === true && preventDraggable(el, false);
5221
- ctx.styleCleanup !== void 0 && ctx.styleCleanup();
5237
+ ctx.styleCleanup?.();
5222
5238
  delete el.__qtouchswipe;
5223
5239
  }
5224
5240
  }
@@ -5936,11 +5952,12 @@
5936
5952
  });
5937
5953
  function refocusTarget(e) {
5938
5954
  const root = rootRef.value;
5939
- if (e !== void 0 && e.type.indexOf("key") === 0) {
5940
- if (root !== null && document.activeElement !== root && root.contains(document.activeElement) === true) {
5955
+ if (e?.qAvoidFocus === true) return;
5956
+ if (e?.type.indexOf("key") === 0) {
5957
+ if (document.activeElement !== root && root?.contains(document.activeElement) === true) {
5941
5958
  root.focus();
5942
5959
  }
5943
- } else if (refocusRef.value !== null && (e === void 0 || root !== null && root.contains(e.target) === true)) {
5960
+ } else if (refocusRef.value !== null && (e === void 0 || root?.contains(e.target) === true)) {
5944
5961
  refocusRef.value.focus();
5945
5962
  }
5946
5963
  }
@@ -6687,7 +6704,7 @@
6687
6704
  cleanEvt(ctx, "temp");
6688
6705
  client.is.firefox === true && preventDraggable(el, false);
6689
6706
  if (abort === true) {
6690
- ctx.styleCleanup !== void 0 && ctx.styleCleanup();
6707
+ ctx.styleCleanup?.();
6691
6708
  if (ctx.event.detected !== true && ctx.initialEvent !== void 0) {
6692
6709
  ctx.initialEvent.target.dispatchEvent(ctx.initialEvent.event);
6693
6710
  }
@@ -6738,7 +6755,7 @@
6738
6755
  cleanEvt(ctx, "main");
6739
6756
  cleanEvt(ctx, "temp");
6740
6757
  client.is.firefox === true && preventDraggable(el, false);
6741
- ctx.styleCleanup !== void 0 && ctx.styleCleanup();
6758
+ ctx.styleCleanup?.();
6742
6759
  delete el.__qtouchpan;
6743
6760
  }
6744
6761
  }
@@ -7443,7 +7460,7 @@
7443
7460
  }
7444
7461
  }, onObjLoad = function() {
7445
7462
  cleanup();
7446
- if (targetEl && targetEl.contentDocument) {
7463
+ if (targetEl?.contentDocument) {
7447
7464
  curDocView = targetEl.contentDocument.defaultView;
7448
7465
  curDocView.addEventListener("resize", trigger3, listenOpts.passive);
7449
7466
  emitEvent();
@@ -7765,7 +7782,7 @@
7765
7782
  }
7766
7783
  function updateActiveRoute() {
7767
7784
  let name2 = null, bestScore = { matchedLen: 0, queryDiff: 9999, hrefLen: 0 };
7768
- const list = tabDataList.filter((tab) => tab.routeData !== void 0 && tab.routeData.hasRouterLink.value === true);
7785
+ const list = tabDataList.filter((tab) => tab.routeData?.hasRouterLink.value === true);
7769
7786
  const { hash: currentHash, query: currentQuery } = proxy.$route;
7770
7787
  const currentQueryLen = Object.keys(currentQuery).length;
7771
7788
  for (const tab of list) {
@@ -7898,7 +7915,7 @@
7898
7915
  function cleanup() {
7899
7916
  animateTimer !== null && clearTimeout(animateTimer);
7900
7917
  stopAnimScroll();
7901
- unwatchRoute !== void 0 && unwatchRoute();
7918
+ unwatchRoute?.();
7902
7919
  }
7903
7920
  let hadRouteWatcher, hadActivated;
7904
7921
  onBeforeUnmount(cleanup);
@@ -7995,11 +8012,11 @@
7995
8012
  );
7996
8013
  const tabIndex = computed(() => props4.disable === true || $tabs.hasFocus.value === true || isActive.value === false && $tabs.hasActiveTab.value === true ? -1 : props4.tabindex || 0);
7997
8014
  function onClick(e, keyboard) {
7998
- if (keyboard !== true && blurTargetRef.value !== null) {
7999
- blurTargetRef.value.focus();
8015
+ if (keyboard !== true && e?.qAvoidFocus !== true) {
8016
+ blurTargetRef.value?.focus();
8000
8017
  }
8001
8018
  if (props4.disable === true) {
8002
- if (routeData !== void 0 && routeData.hasRouterLink.value === true) {
8019
+ if (routeData?.hasRouterLink.value === true) {
8003
8020
  stopAndPrevent(e);
8004
8021
  }
8005
8022
  return;
@@ -8018,7 +8035,7 @@
8018
8035
  }).then((softError) => {
8019
8036
  if (reqId === $tabs.avoidRouteWatcher) {
8020
8037
  $tabs.avoidRouteWatcher = false;
8021
- if (hardError === void 0 && (softError === void 0 || softError.message !== void 0 && softError.message.startsWith("Avoided redundant navigation") === true)) {
8038
+ if (hardError === void 0 && (softError === void 0 || softError.message?.startsWith("Avoided redundant navigation") === true)) {
8022
8039
  $tabs.updateModel({ name: props4.name });
8023
8040
  }
8024
8041
  }
@@ -8675,7 +8692,7 @@
8675
8692
  model.value.v = hsv.v;
8676
8693
  }
8677
8694
  updateModel2(rgb2, change);
8678
- if (evt !== void 0 && change !== true && evt.target.selectionEnd !== void 0) {
8695
+ if (change !== true && evt?.target.selectionEnd !== void 0) {
8679
8696
  const index = evt.target.selectionEnd;
8680
8697
  nextTick(() => {
8681
8698
  evt.target.setSelectionRange(index, index);
@@ -10735,7 +10752,7 @@
10735
10752
  }
10736
10753
  function toggleDate(date, monthHash) {
10737
10754
  const month = daysMap.value[monthHash];
10738
- const fn = month !== void 0 && month.includes(date.day) === true ? removeFromModel : addToModel;
10755
+ const fn = month?.includes(date.day) === true ? removeFromModel : addToModel;
10739
10756
  fn(date);
10740
10757
  }
10741
10758
  function getShortDate(date) {
@@ -11503,7 +11520,7 @@
11503
11520
  showPortal();
11504
11521
  animating.value = true;
11505
11522
  if (props4.noFocus !== true) {
11506
- document.activeElement !== null && document.activeElement.blur();
11523
+ document.activeElement?.blur();
11507
11524
  registerTick(focus);
11508
11525
  } else {
11509
11526
  removeTick();
@@ -11536,7 +11553,7 @@
11536
11553
  animating.value = true;
11537
11554
  hidePortal();
11538
11555
  if (refocusTarget !== null) {
11539
- ((evt && evt.type.indexOf("key") === 0 ? refocusTarget.closest('[tabindex]:not([tabindex^="-"])') : void 0) || refocusTarget).focus();
11556
+ ((evt?.type.indexOf("key") === 0 ? refocusTarget.closest('[tabindex]:not([tabindex^="-"])') : void 0) || refocusTarget).focus();
11540
11557
  refocusTarget = null;
11541
11558
  }
11542
11559
  registerTimeout(() => {
@@ -11765,7 +11782,7 @@
11765
11782
  applyPosition(0);
11766
11783
  if (belowBreakpoint.value === true) {
11767
11784
  const otherInstance = $layout.instances[otherSide.value];
11768
- if (otherInstance !== void 0 && otherInstance.belowBreakpoint === true) {
11785
+ if (otherInstance?.belowBreakpoint === true) {
11769
11786
  otherInstance.hide(false);
11770
11787
  }
11771
11788
  applyBackdrop(1);
@@ -12005,9 +12022,7 @@
12005
12022
  timerMini = setTimeout(() => {
12006
12023
  timerMini = null;
12007
12024
  flagMiniAnimate.value = false;
12008
- if (vm2 && vm2.proxy && vm2.proxy.$el) {
12009
- vm2.proxy.$el.classList.remove("q-drawer--mini-animate");
12010
- }
12025
+ vm2?.proxy?.$el?.classList.remove("q-drawer--mini-animate");
12011
12026
  }, 150);
12012
12027
  }
12013
12028
  function onOpenPan(evt) {
@@ -12105,7 +12120,7 @@
12105
12120
  });
12106
12121
  });
12107
12122
  onBeforeUnmount(() => {
12108
- layoutTotalWidthWatcher !== void 0 && layoutTotalWidthWatcher();
12123
+ layoutTotalWidthWatcher?.();
12109
12124
  if (timerMini !== null) {
12110
12125
  clearTimeout(timerMini);
12111
12126
  timerMini = null;
@@ -12249,7 +12264,7 @@
12249
12264
  }
12250
12265
  get range() {
12251
12266
  const sel = this.selection;
12252
- if (sel !== null && sel.rangeCount) {
12267
+ if (sel?.rangeCount) {
12253
12268
  return sel.getRangeAt(0);
12254
12269
  }
12255
12270
  return this._range;
@@ -12711,7 +12726,7 @@
12711
12726
  });
12712
12727
  function onClick(e) {
12713
12728
  if (isClickable.value === true) {
12714
- if (blurTargetRef.value !== null) {
12729
+ if (blurTargetRef.value !== null && e.qAvoidFocus !== true) {
12715
12730
  if (e.qKeyEvent !== true && document.activeElement === rootRef.value) {
12716
12731
  blurTargetRef.value.focus();
12717
12732
  } else if (document.activeElement === blurTargetRef.value) {
@@ -12813,7 +12828,7 @@
12813
12828
  disable: btn.disable ? typeof btn.disable === "function" ? btn.disable(eVm) : true : false,
12814
12829
  size: "sm",
12815
12830
  onClick(e) {
12816
- clickHandler && clickHandler();
12831
+ clickHandler?.();
12817
12832
  run(e, btn, eVm);
12818
12833
  }
12819
12834
  }, () => child);
@@ -12857,7 +12872,7 @@
12857
12872
  dense: true,
12858
12873
  onClick(e) {
12859
12874
  closeDropdown();
12860
- eVm.contentRef.value !== null && eVm.contentRef.value.focus();
12875
+ e?.qAvoidFocus !== true && eVm.contentRef.value?.focus();
12861
12876
  eVm.caret.restore();
12862
12877
  run(e, btn2, eVm);
12863
12878
  }
@@ -13430,7 +13445,7 @@
13430
13445
  }
13431
13446
  function focus() {
13432
13447
  addFocusFn(() => {
13433
- contentRef.value !== null && contentRef.value.focus({ preventScroll: true });
13448
+ contentRef.value?.focus({ preventScroll: true });
13434
13449
  });
13435
13450
  }
13436
13451
  function getContentEl() {
@@ -13546,7 +13561,7 @@
13546
13561
  let animating = false, doneFn, element;
13547
13562
  let timer2 = null, timerFallback = null, animListener, lastEvent;
13548
13563
  function cleanup() {
13549
- doneFn && doneFn();
13564
+ doneFn?.();
13550
13565
  doneFn = null;
13551
13566
  animating = false;
13552
13567
  if (timer2 !== null) {
@@ -13557,7 +13572,7 @@
13557
13572
  clearTimeout(timerFallback);
13558
13573
  timerFallback = null;
13559
13574
  }
13560
- element !== void 0 && element.removeEventListener("transitionend", animListener);
13575
+ element?.removeEventListener("transitionend", animListener);
13561
13576
  animListener = null;
13562
13577
  }
13563
13578
  function begin(el, height2, done) {
@@ -13782,7 +13797,7 @@
13782
13797
  };
13783
13798
  });
13784
13799
  watch(() => props4.group, (name2) => {
13785
- exitGroup !== void 0 && exitGroup();
13800
+ exitGroup?.();
13786
13801
  name2 !== void 0 && enterGroup();
13787
13802
  });
13788
13803
  function onHeaderClick(e) {
@@ -13793,7 +13808,9 @@
13793
13808
  e.keyCode === 13 && toggleIcon(e, true);
13794
13809
  }
13795
13810
  function toggleIcon(e, keyboard) {
13796
- keyboard !== true && blurTargetRef.value !== null && blurTargetRef.value.focus();
13811
+ if (keyboard !== true && e.qAvoidFocus !== true) {
13812
+ blurTargetRef.value?.focus();
13813
+ }
13797
13814
  toggle(e);
13798
13815
  stopAndPrevent(e);
13799
13816
  }
@@ -13950,7 +13967,7 @@
13950
13967
  }
13951
13968
  props4.group !== void 0 && enterGroup();
13952
13969
  onBeforeUnmount(() => {
13953
- exitGroup !== void 0 && exitGroup();
13970
+ exitGroup?.();
13954
13971
  });
13955
13972
  return () => h("div", { class: classes.value }, [
13956
13973
  h("div", { class: "q-expansion-item__container relative-position" }, getContent())
@@ -14111,8 +14128,8 @@
14111
14128
  showing,
14112
14129
  onChildClick(evt) {
14113
14130
  hide(evt);
14114
- if (triggerRef.value !== null) {
14115
- triggerRef.value.$el.focus();
14131
+ if (evt?.qAvoidFocus !== true) {
14132
+ triggerRef.value?.$el.focus();
14116
14133
  }
14117
14134
  }
14118
14135
  });
@@ -14366,7 +14383,7 @@
14366
14383
  }
14367
14384
  const debouncedValidate = debounce_default(validate, 0);
14368
14385
  onBeforeUnmount(() => {
14369
- unwatchRules !== void 0 && unwatchRules();
14386
+ unwatchRules?.();
14370
14387
  debouncedValidate.cancel();
14371
14388
  });
14372
14389
  Object.assign(proxy, { resetValidation, validate });
@@ -14556,11 +14573,11 @@
14556
14573
  });
14557
14574
  function focusHandler() {
14558
14575
  const el = document.activeElement;
14559
- let target2 = state.targetRef !== void 0 && state.targetRef.value;
14576
+ let target2 = state.targetRef?.value;
14560
14577
  if (target2 && (el === null || el.id !== state.targetUid.value)) {
14561
14578
  target2.hasAttribute("tabindex") === true || (target2 = target2.querySelector("[tabindex]"));
14562
- if (target2 && target2 !== el) {
14563
- target2.focus({ preventScroll: true });
14579
+ if (target2 !== el) {
14580
+ target2?.focus({ preventScroll: true });
14564
14581
  }
14565
14582
  }
14566
14583
  }
@@ -14593,13 +14610,13 @@
14593
14610
  state.focused.value = false;
14594
14611
  emit("blur", e);
14595
14612
  }
14596
- then !== void 0 && then();
14613
+ then?.();
14597
14614
  });
14598
14615
  }
14599
14616
  function clearValue(e) {
14600
14617
  stopAndPrevent(e);
14601
14618
  if ($q.platform.is.mobile !== true) {
14602
- const el = state.targetRef !== void 0 && state.targetRef.value || state.rootRef.value;
14619
+ const el = state.targetRef?.value || state.rootRef.value;
14603
14620
  el.focus();
14604
14621
  } else if (state.rootRef.value.contains(document.activeElement) === true) {
14605
14622
  document.activeElement.blur();
@@ -14840,7 +14857,9 @@
14840
14857
  return acceptedFiles;
14841
14858
  }
14842
14859
  function stopAndPreventDrag(e) {
14843
- e && e.dataTransfer && (e.dataTransfer.dropEffect = "copy");
14860
+ if (e?.dataTransfer) {
14861
+ e.dataTransfer.dropEffect = "copy";
14862
+ }
14844
14863
  stopAndPrevent(e);
14845
14864
  }
14846
14865
  var useFileProps = {
@@ -14877,11 +14896,11 @@
14877
14896
  if (e !== Object(e)) {
14878
14897
  e = { target: null };
14879
14898
  }
14880
- if (e.target !== null && e.target.matches('input[type="file"]') === true) {
14899
+ if (e.target?.matches('input[type="file"]') === true) {
14881
14900
  e.clientX === 0 && e.clientY === 0 && stop(e);
14882
14901
  } else {
14883
14902
  const input = getFileInput();
14884
- input && input !== e.target && input.click(e);
14903
+ if (input !== e.target) input?.click(e);
14885
14904
  }
14886
14905
  }
14887
14906
  }
@@ -15441,7 +15460,7 @@
15441
15460
  if (index === validateIndex && val === true) {
15442
15461
  if (props4.onSubmit !== void 0) {
15443
15462
  emit("submit", evt);
15444
- } else if (evt !== void 0 && evt.target !== void 0 && typeof evt.target.submit === "function") {
15463
+ } else if (evt?.target !== void 0 && typeof evt.target.submit === "function") {
15445
15464
  evt.target.submit();
15446
15465
  }
15447
15466
  }
@@ -15461,7 +15480,7 @@
15461
15480
  addFocusFn(() => {
15462
15481
  if (rootRef.value === null) return;
15463
15482
  const target2 = rootRef.value.querySelector("[autofocus][tabindex], [data-autofocus][tabindex]") || rootRef.value.querySelector("[autofocus] [tabindex], [data-autofocus] [tabindex]") || rootRef.value.querySelector("[autofocus], [data-autofocus]") || Array.prototype.find.call(rootRef.value.querySelectorAll("[tabindex]"), (el) => el.tabIndex !== -1);
15464
- target2 !== null && target2 !== void 0 && target2.focus({ preventScroll: true });
15483
+ target2?.focus({ preventScroll: true });
15465
15484
  });
15466
15485
  }
15467
15486
  provide(formKey, {
@@ -15529,12 +15548,14 @@
15529
15548
  }
15530
15549
  },
15531
15550
  mounted() {
15532
- const $form = this.$.provides[formKey];
15533
- $form !== void 0 && this.disable !== true && $form.bindComponent(this);
15551
+ if (this.disable !== true) {
15552
+ this.$.provides[formKey]?.bindComponent(this);
15553
+ }
15534
15554
  },
15535
15555
  beforeUnmount() {
15536
- const $form = this.$.provides[formKey];
15537
- $form !== void 0 && this.disable !== true && $form.unbindComponent(this);
15556
+ if (this.disable !== true) {
15557
+ this.$.provides[formKey]?.unbindComponent(this);
15558
+ }
15538
15559
  }
15539
15560
  };
15540
15561
 
@@ -16006,9 +16027,7 @@
16006
16027
  isWorking.value = false;
16007
16028
  isFetching.value = false;
16008
16029
  localScrollTarget.removeEventListener("scroll", poll, passive2);
16009
- if (poll !== void 0 && poll.cancel !== void 0) {
16010
- poll.cancel();
16011
- }
16030
+ poll?.cancel?.();
16012
16031
  }
16013
16032
  }
16014
16033
  function updateScrollTarget() {
@@ -16093,7 +16112,7 @@
16093
16112
  const vm2 = getCurrentInstance();
16094
16113
  Object.assign(vm2.proxy, {
16095
16114
  poll: () => {
16096
- poll !== void 0 && poll();
16115
+ poll?.();
16097
16116
  },
16098
16117
  trigger: trigger3,
16099
16118
  stop: stop2,
@@ -16699,7 +16718,7 @@
16699
16718
  });
16700
16719
  }
16701
16720
  function select() {
16702
- inputRef.value !== null && inputRef.value.select();
16721
+ inputRef.value?.select();
16703
16722
  }
16704
16723
  function onPaste(e) {
16705
16724
  if (hasMask.value === true && props4.reverseFillMask !== true) {
@@ -16792,7 +16811,7 @@
16792
16811
  clearTimeout(emitTimer);
16793
16812
  emitTimer = null;
16794
16813
  }
16795
- emitValueFn !== void 0 && emitValueFn();
16814
+ emitValueFn?.();
16796
16815
  emit("change", e.target.value);
16797
16816
  }
16798
16817
  function onFinishEditing(e) {
@@ -16801,7 +16820,7 @@
16801
16820
  clearTimeout(emitTimer);
16802
16821
  emitTimer = null;
16803
16822
  }
16804
- emitValueFn !== void 0 && emitValueFn();
16823
+ emitValueFn?.();
16805
16824
  typedNumber = false;
16806
16825
  stopValueWatcher = false;
16807
16826
  delete temp.value;
@@ -16890,7 +16909,7 @@
16890
16909
  }
16891
16910
  if (changed2 === true) {
16892
16911
  ctx.cfg = cfg;
16893
- ctx.observer !== void 0 && ctx.observer.unobserve(el);
16912
+ ctx.observer?.unobserve(el);
16894
16913
  ctx.observer = new IntersectionObserver(([entry]) => {
16895
16914
  if (typeof ctx.handler === "function") {
16896
16915
  if (entry.rootBounds === null && document.body.contains(el) === true) {
@@ -16910,7 +16929,7 @@
16910
16929
  function destroy(el) {
16911
16930
  const ctx = el.__qvisible;
16912
16931
  if (ctx !== void 0) {
16913
- ctx.observer !== void 0 && ctx.observer.unobserve(el);
16932
+ ctx.observer?.unobserve(el);
16914
16933
  delete el.__qvisible;
16915
16934
  }
16916
16935
  }
@@ -17263,7 +17282,7 @@
17263
17282
  configureScrollTarget();
17264
17283
  });
17265
17284
  function emitEvent() {
17266
- clearTimer !== null && clearTimer();
17285
+ clearTimer?.();
17267
17286
  const top = Math.max(0, getVerticalScrollPosition(localScrollTarget));
17268
17287
  const left = getHorizontalScrollPosition(localScrollTarget);
17269
17288
  const delta = {
@@ -17310,7 +17329,7 @@
17310
17329
  configureScrollTarget();
17311
17330
  });
17312
17331
  onBeforeUnmount(() => {
17313
- clearTimer !== null && clearTimer();
17332
+ clearTimer?.();
17314
17333
  unconfigureScrollTarget();
17315
17334
  });
17316
17335
  Object.assign(proxy, {
@@ -18338,14 +18357,16 @@
18338
18357
  getBtn2({
18339
18358
  key: "bls",
18340
18359
  disable: props4.disable || props4.modelValue <= minProp.value,
18341
- icon: icons.value[0]
18360
+ icon: icons.value[0],
18361
+ "aria-label": $q.lang.pagination.first
18342
18362
  }, minProp.value)
18343
18363
  );
18344
18364
  contentEnd.unshift(
18345
18365
  getBtn2({
18346
18366
  key: "ble",
18347
18367
  disable: props4.disable || props4.modelValue >= maxProp.value,
18348
- icon: icons.value[3]
18368
+ icon: icons.value[3],
18369
+ "aria-label": $q.lang.pagination.last
18349
18370
  }, maxProp.value)
18350
18371
  );
18351
18372
  }
@@ -18354,14 +18375,16 @@
18354
18375
  getBtn2({
18355
18376
  key: "bdp",
18356
18377
  disable: props4.disable || props4.modelValue <= minProp.value,
18357
- icon: icons.value[1]
18378
+ icon: icons.value[1],
18379
+ "aria-label": $q.lang.pagination.prev
18358
18380
  }, props4.modelValue - 1)
18359
18381
  );
18360
18382
  contentEnd.unshift(
18361
18383
  getBtn2({
18362
18384
  key: "bdn",
18363
18385
  disable: props4.disable || props4.modelValue >= maxProp.value,
18364
- icon: icons.value[2]
18386
+ icon: icons.value[2],
18387
+ "aria-label": $q.lang.pagination.next
18365
18388
  }, props4.modelValue + 1)
18366
18389
  );
18367
18390
  }
@@ -18577,7 +18600,7 @@
18577
18600
  });
18578
18601
  onBeforeUnmount(() => {
18579
18602
  stop2();
18580
- observer !== void 0 && observer.disconnect();
18603
+ observer?.disconnect();
18581
18604
  mediaEl.onload = mediaEl.onloadstart = mediaEl.loadedmetadata = null;
18582
18605
  });
18583
18606
  return () => {
@@ -18765,10 +18788,10 @@
18765
18788
  set: set2,
18766
18789
  cancel,
18767
18790
  show(e) {
18768
- menuRef.value !== null && menuRef.value.show(e);
18791
+ menuRef.value?.show(e);
18769
18792
  },
18770
18793
  hide(e) {
18771
- menuRef.value !== null && menuRef.value.hide(e);
18794
+ menuRef.value?.hide(e);
18772
18795
  },
18773
18796
  updatePosition
18774
18797
  });
@@ -19064,7 +19087,7 @@
19064
19087
  timer2 = setTimeout(() => {
19065
19088
  timer2 = null;
19066
19089
  animating.value = false;
19067
- done && done();
19090
+ done?.();
19068
19091
  }, 300);
19069
19092
  }
19070
19093
  function updateScrollTarget() {
@@ -20026,7 +20049,7 @@
20026
20049
  delete el2.dataset.qVsAnchor;
20027
20050
  });
20028
20051
  const el = children[index];
20029
- if (el && el.dataset) {
20052
+ if (el?.dataset) {
20030
20053
  el.dataset.qVsAnchor = "";
20031
20054
  }
20032
20055
  });
@@ -20298,7 +20321,7 @@
20298
20321
  if (rangeChanged === true && contentEl !== null && contentEl !== activeElement && contentEl.contains(activeElement) === true) {
20299
20322
  contentEl.addEventListener("focusout", onBlurRefocusFn);
20300
20323
  setTimeout(() => {
20301
- contentEl !== null && contentEl.removeEventListener("focusout", onBlurRefocusFn);
20324
+ contentEl?.removeEventListener("focusout", onBlurRefocusFn);
20302
20325
  });
20303
20326
  }
20304
20327
  setOverflowAnchor(contentEl, toIndex - from);
@@ -20362,7 +20385,7 @@
20362
20385
  }
20363
20386
  }
20364
20387
  function onBlurRefocusFn() {
20365
- contentRef.value !== null && contentRef.value !== void 0 && contentRef.value.focus();
20388
+ contentRef.value?.focus();
20366
20389
  }
20367
20390
  function localResetVirtualScroll(toIndex, fullReset) {
20368
20391
  const defaultSize = 1 * virtualScrollItemSizeComputed.value;
@@ -20700,7 +20723,7 @@
20700
20723
  () => innerValue.value.map((opt) => getOptionLabel.value(opt)).join(", ")
20701
20724
  );
20702
20725
  const ariaCurrentValue = computed(() => props4.displayValue !== void 0 ? props4.displayValue : selectedString.value);
20703
- const needsHtmlFn = computed(() => props4.optionsHtml === true ? () => true : (opt) => opt !== void 0 && opt !== null && opt.html === true);
20726
+ const needsHtmlFn = computed(() => props4.optionsHtml === true ? () => true : (opt) => opt?.html === true);
20704
20727
  const valueAsHtml = computed(() => props4.displayValueHtml === true || props4.displayValue === void 0 && (props4.optionsHtml === true || innerValue.value.some(needsHtmlFn.value)));
20705
20728
  const tabindex = computed(() => state.focused.value === true ? props4.tabindex : -1);
20706
20729
  const comboboxAttrs = computed(() => {
@@ -20874,13 +20897,15 @@
20874
20897
  );
20875
20898
  hidePopup();
20876
20899
  }
20877
- targetRef.value !== null && targetRef.value.focus();
20900
+ targetRef.value?.focus();
20878
20901
  if (innerValue.value.length === 0 || isDeepEqual(getOptionValue.value(innerValue.value[0]), optValue) !== true) {
20879
20902
  emit("update:modelValue", props4.emitValue === true ? optValue : opt);
20880
20903
  }
20881
20904
  return;
20882
20905
  }
20883
- (hasDialog !== true || dialogFieldFocused.value === true) && state.focus();
20906
+ if (hasDialog !== true || dialogFieldFocused.value === true) {
20907
+ state.focus();
20908
+ }
20884
20909
  selectInputText();
20885
20910
  if (innerValue.value.length === 0) {
20886
20911
  const val = props4.emitValue === true ? optValue : opt;
@@ -21085,7 +21110,7 @@
21085
21110
  const fn = mode === "toggle" ? toggleOption : add;
21086
21111
  fn(val, mode === "add-unique");
21087
21112
  if (props4.multiple !== true) {
21088
- targetRef.value !== null && targetRef.value.focus();
21113
+ targetRef.value?.focus();
21089
21114
  hidePopup();
21090
21115
  }
21091
21116
  };
@@ -21330,7 +21355,7 @@
21330
21355
  }
21331
21356
  function onDialogFieldFocus(e) {
21332
21357
  stop(e);
21333
- targetRef.value !== null && targetRef.value.focus();
21358
+ targetRef.value?.focus();
21334
21359
  dialogFieldFocused.value = true;
21335
21360
  window.scrollTo(window.pageXOffset || window.scrollX || document.body.scrollLeft || 0, 0);
21336
21361
  }
@@ -21559,7 +21584,7 @@
21559
21584
  prevent(e);
21560
21585
  if (hasDialog !== true && menu.value === true) {
21561
21586
  closeMenu();
21562
- targetRef.value !== null && targetRef.value.focus();
21587
+ targetRef.value?.focus();
21563
21588
  return;
21564
21589
  }
21565
21590
  showPopup(e);
@@ -22508,7 +22533,7 @@
22508
22533
  });
22509
22534
  const ripple = computed(() => props4.stepper.headerNav !== true ? false : headerNav.value);
22510
22535
  function onActivate() {
22511
- blurRef.value !== null && blurRef.value.focus();
22536
+ blurRef.value?.focus();
22512
22537
  isActive.value === false && props4.goToPanel(props4.step.name);
22513
22538
  }
22514
22539
  function onKeyup2(e) {
@@ -22998,7 +23023,7 @@
22998
23023
  col = col.name;
22999
23024
  } else {
23000
23025
  const def = colList.value.find((def2) => def2.name === col);
23001
- if (def !== void 0 && def.sortOrder) {
23026
+ if (def?.sortOrder) {
23002
23027
  sortOrder = def.sortOrder;
23003
23028
  }
23004
23029
  }
@@ -23428,10 +23453,14 @@
23428
23453
  tableClass: [String, Array, Object],
23429
23454
  tableHeaderStyle: [String, Array, Object],
23430
23455
  tableHeaderClass: [String, Array, Object],
23456
+ tableRowStyleFn: Function,
23457
+ tableRowClassFn: Function,
23431
23458
  cardContainerClass: [String, Array, Object],
23432
23459
  cardContainerStyle: [String, Array, Object],
23433
23460
  cardStyle: [String, Array, Object],
23434
23461
  cardClass: [String, Array, Object],
23462
+ cardStyleFn: Function,
23463
+ cardClassFn: Function,
23435
23464
  hideBottom: Boolean,
23436
23465
  hideSelectedBanner: Boolean,
23437
23466
  hideNoData: Boolean,
@@ -23467,16 +23496,16 @@
23467
23496
  const cardDefaultClass = computed(
23468
23497
  () => " q-table__card" + (isDark.value === true ? " q-table__card--dark q-dark" : "") + (props4.square === true ? " q-table--square" : "") + (props4.flat === true ? " q-table--flat" : "") + (props4.bordered === true ? " q-table--bordered" : "")
23469
23498
  );
23470
- const __containerClass = computed(
23499
+ const containerClass = computed(
23471
23500
  () => `q-table__container q-table--${props4.separator}-separator column no-wrap` + (props4.grid === true ? " q-table--grid" : cardDefaultClass.value) + (isDark.value === true ? " q-table--dark" : "") + (props4.dense === true ? " q-table--dense" : "") + (props4.wrapCells === false ? " q-table--no-wrap" : "") + (inFullscreen.value === true ? " fullscreen scroll" : "")
23472
23501
  );
23473
- const containerClass = computed(
23474
- () => __containerClass.value + (props4.loading === true ? " q-table--loading" : "")
23502
+ const rootContainerClass = computed(
23503
+ () => containerClass.value + (props4.loading === true ? " q-table--loading" : "")
23475
23504
  );
23476
23505
  watch(
23477
- () => props4.tableStyle + props4.tableClass + props4.tableHeaderStyle + props4.tableHeaderClass + __containerClass.value,
23506
+ () => props4.tableStyle + props4.tableClass + props4.tableHeaderStyle + props4.tableHeaderClass + containerClass.value,
23478
23507
  () => {
23479
- hasVirtScroll.value === true && virtScrollRef.value !== null && virtScrollRef.value.reset();
23508
+ hasVirtScroll.value === true && virtScrollRef.value?.reset();
23480
23509
  }
23481
23510
  );
23482
23511
  const {
@@ -23644,13 +23673,23 @@
23644
23673
  function getTBodyTR(row, bodySlot, pageIndex) {
23645
23674
  const key = getRowKey.value(row), selected = isRowSelected(key);
23646
23675
  if (bodySlot !== void 0) {
23676
+ const cfg = {
23677
+ key,
23678
+ row,
23679
+ pageIndex,
23680
+ __trClass: selected ? "selected" : ""
23681
+ };
23682
+ if (props4.tableRowStyleFn !== void 0) {
23683
+ cfg.__trStyle = props4.tableRowStyleFn(row);
23684
+ }
23685
+ if (props4.tableRowClassFn !== void 0) {
23686
+ const cls = props4.tableRowClassFn(row);
23687
+ if (cls) {
23688
+ cfg.__trClass = `${cls} ${cfg.__trClass}`;
23689
+ }
23690
+ }
23647
23691
  return bodySlot(
23648
- getBodyScope({
23649
- key,
23650
- row,
23651
- pageIndex,
23652
- __trClass: selected ? "selected" : ""
23653
- })
23692
+ getBodyScope(cfg)
23654
23693
  );
23655
23694
  }
23656
23695
  const bodyCell = slots["body-cell"], child = computedCols.value.map((col) => {
@@ -23696,6 +23735,15 @@
23696
23735
  emit("rowContextmenu", evt, row, pageIndex);
23697
23736
  };
23698
23737
  }
23738
+ if (props4.tableRowStyleFn !== void 0) {
23739
+ data.style = props4.tableRowStyleFn(row);
23740
+ }
23741
+ if (props4.tableRowClassFn !== void 0) {
23742
+ const cls = props4.tableRowClassFn(row);
23743
+ if (cls) {
23744
+ data.class[cls] = true;
23745
+ }
23746
+ }
23699
23747
  return h("tr", data, child);
23700
23748
  }
23701
23749
  function getTBody() {
@@ -23949,28 +23997,26 @@
23949
23997
  child.push(
23950
23998
  h("div", { class: "q-table__separator col" })
23951
23999
  );
23952
- if (hasOpts === true) {
23953
- child.push(
23954
- h("div", { class: "q-table__control" }, [
23955
- h("span", { class: "q-table__bottom-item" }, [
23956
- props4.rowsPerPageLabel || $q.lang.table.recordsPerPage
23957
- ]),
23958
- h(QSelect_default, {
23959
- class: "q-table__select inline q-table__bottom-item",
23960
- color: props4.color,
23961
- modelValue: rowsPerPage,
23962
- options: computedRowsPerPageOptions.value,
23963
- displayValue: rowsPerPage === 0 ? $q.lang.table.allRows : rowsPerPage,
23964
- dark: isDark.value,
23965
- borderless: true,
23966
- dense: true,
23967
- optionsDense: true,
23968
- optionsCover: true,
23969
- "onUpdate:modelValue": onPagSelection
23970
- })
23971
- ])
23972
- );
23973
- }
24000
+ hasOpts === true && child.push(
24001
+ h("div", { class: "q-table__control" }, [
24002
+ h("span", { class: "q-table__bottom-item" }, [
24003
+ props4.rowsPerPageLabel || $q.lang.table.recordsPerPage
24004
+ ]),
24005
+ h(QSelect_default, {
24006
+ class: "q-table__select inline q-table__bottom-item",
24007
+ color: props4.color,
24008
+ modelValue: rowsPerPage,
24009
+ options: computedRowsPerPageOptions.value,
24010
+ displayValue: rowsPerPage === 0 ? $q.lang.table.allRows : rowsPerPage,
24011
+ dark: isDark.value,
24012
+ borderless: true,
24013
+ dense: true,
24014
+ optionsDense: true,
24015
+ optionsCover: true,
24016
+ "onUpdate:modelValue": onPagSelection
24017
+ })
24018
+ ])
24019
+ );
23974
24020
  if (paginationSlot !== void 0) {
23975
24021
  control = paginationSlot(marginalsScope.value);
23976
24022
  } else {
@@ -23995,6 +24041,7 @@
23995
24041
  ...btnProps,
23996
24042
  icon: navIcon.value[0],
23997
24043
  disable: isFirstPage.value,
24044
+ ariaLabel: $q.lang.pagination.first,
23998
24045
  onClick: firstPage
23999
24046
  })
24000
24047
  );
@@ -24004,6 +24051,7 @@
24004
24051
  ...btnProps,
24005
24052
  icon: navIcon.value[1],
24006
24053
  disable: isFirstPage.value,
24054
+ ariaLabel: $q.lang.pagination.prev,
24007
24055
  onClick: prevPage
24008
24056
  }),
24009
24057
  h(QBtn_default, {
@@ -24011,6 +24059,7 @@
24011
24059
  ...btnProps,
24012
24060
  icon: navIcon.value[2],
24013
24061
  disable: isLastPage.value,
24062
+ ariaLabel: $q.lang.pagination.next,
24014
24063
  onClick: nextPage
24015
24064
  })
24016
24065
  );
@@ -24020,6 +24069,7 @@
24020
24069
  ...btnProps,
24021
24070
  icon: navIcon.value[3],
24022
24071
  disable: isLastPage.value,
24072
+ ariaLabel: $q.lang.pagination.last,
24023
24073
  onClick: lastPage
24024
24074
  })
24025
24075
  );
@@ -24071,6 +24121,15 @@
24071
24121
  ],
24072
24122
  style: props4.cardStyle
24073
24123
  };
24124
+ if (props4.cardStyleFn !== void 0) {
24125
+ data.style = [data.style, props4.cardStyleFn(scope.row)];
24126
+ }
24127
+ if (props4.cardClassFn !== void 0) {
24128
+ const cls = props4.cardClassFn(scope.row);
24129
+ if (cls) {
24130
+ data.class[0] += ` ${cls}`;
24131
+ }
24132
+ }
24074
24133
  if (props4.onRowClick !== void 0 || props4.onRowDblclick !== void 0 || props4.onRowContextmenu !== void 0) {
24075
24134
  data.class[0] += " cursor-pointer";
24076
24135
  if (props4.onRowClick !== void 0) {
@@ -24132,7 +24191,7 @@
24132
24191
  });
24133
24192
  return () => {
24134
24193
  const child = [getTopDiv()];
24135
- const data = { ref: rootRef, class: containerClass.value };
24194
+ const data = { ref: rootRef, class: rootContainerClass.value };
24136
24195
  if (props4.grid === true) {
24137
24196
  child.push(getGridHeader());
24138
24197
  } else {
@@ -24166,7 +24225,10 @@
24166
24225
  const classes = computed(
24167
24226
  () => "q-tr" + (props4.props === void 0 || props4.props.header === true ? "" : " " + props4.props.__trClass) + (props4.noHover === true ? " q-tr--no-hover" : "")
24168
24227
  );
24169
- return () => h("tr", { class: classes.value }, hSlot(slots.default));
24228
+ return () => h("tr", {
24229
+ style: props4.props?.__trStyle,
24230
+ class: classes.value
24231
+ }, hSlot(slots.default));
24170
24232
  }
24171
24233
  });
24172
24234
 
@@ -24370,7 +24432,7 @@
24370
24432
  }
24371
24433
  const pos = [];
24372
24434
  for (let val = start, index = start; val <= end; val += step, index++) {
24373
- const actualVal = val + offset2, disable = values !== void 0 && values.includes(actualVal) === false, label = view.value === "hour" && val === 0 ? computedFormat24h.value === true ? "00" : "12" : val;
24435
+ const actualVal = val + offset2, disable = values?.includes(actualVal) === false, label = view.value === "hour" && val === 0 ? computedFormat24h.value === true ? "00" : "12" : val;
24374
24436
  pos.push({ val: actualVal, index, disable, label });
24375
24437
  }
24376
24438
  return pos;
@@ -25224,7 +25286,7 @@
25224
25286
  node[props4.childrenKey] = Array.isArray(children) === true ? children : [];
25225
25287
  nextTick(() => {
25226
25288
  const localMeta = meta.value[key];
25227
- if (localMeta && localMeta.isParent === true) {
25289
+ if (localMeta?.isParent === true) {
25228
25290
  localSetExpanded(key, true);
25229
25291
  }
25230
25292
  });
@@ -25449,8 +25511,7 @@
25449
25511
  ]);
25450
25512
  }
25451
25513
  function blur(key) {
25452
- const blurTarget = blurTargets[key];
25453
- blurTarget && blurTarget.focus();
25514
+ blurTargets[key]?.focus();
25454
25515
  }
25455
25516
  function onClick(node, meta2, e, keyboard) {
25456
25517
  keyboard !== true && meta2.selectable !== false && blur(meta2.key);
@@ -26428,7 +26489,7 @@
26428
26489
  elFrom.qMorphCancel = () => {
26429
26490
  cancelStatus = true;
26430
26491
  elFromClone.remove();
26431
- elFromTween !== void 0 && elFromTween.remove();
26492
+ elFromTween?.remove();
26432
26493
  options.hideFromClone === true && elFromClone.classList.remove("q-morph--internal");
26433
26494
  elFrom.qMorphCancel = void 0;
26434
26495
  };
@@ -26453,7 +26514,7 @@
26453
26514
  elTo.qMorphCancel = () => {
26454
26515
  cancelStatus = true;
26455
26516
  elFromClone.remove();
26456
- elFromTween !== void 0 && elFromTween.remove();
26517
+ elFromTween?.remove();
26457
26518
  options.hideFromClone === true && elFromClone.classList.remove("q-morph--internal");
26458
26519
  options.keepToClone !== true && elTo.classList.remove("q-morph--internal");
26459
26520
  elFrom.qMorphCancel = void 0;
@@ -26609,10 +26670,12 @@
26609
26670
  elTo.style.cssText = elToStyleSaved;
26610
26671
  elTo.className = elToClassSaved;
26611
26672
  }
26612
- elToClone.parentNode === elToParent && elToParent.insertBefore(elTo, elToClone);
26673
+ if (elToClone.parentNode === elToParent) {
26674
+ elToParent.insertBefore(elTo, elToClone);
26675
+ }
26613
26676
  elFromClone.remove();
26614
26677
  elToClone.remove();
26615
- elFromTween !== void 0 && elFromTween.remove();
26678
+ elFromTween?.remove();
26616
26679
  cancel = () => false;
26617
26680
  elFrom.qMorphCancel = void 0;
26618
26681
  elTo.qMorphCancel = void 0;
@@ -26744,9 +26807,9 @@
26744
26807
  delay: options.delay
26745
26808
  });
26746
26809
  const cleanup = (abort) => {
26747
- animationFromClone !== void 0 && animationFromClone.cancel();
26748
- animationFromTween !== void 0 && animationFromTween.cancel();
26749
- animationToClone !== void 0 && animationToClone.cancel();
26810
+ animationFromClone?.cancel();
26811
+ animationFromTween?.cancel();
26812
+ animationToClone?.cancel();
26750
26813
  animationTo.cancel();
26751
26814
  animationTo.removeEventListener("finish", cleanup);
26752
26815
  animationTo.removeEventListener("cancel", cleanup);
@@ -26777,9 +26840,9 @@
26777
26840
  return true;
26778
26841
  }
26779
26842
  endElementTo = endElementTo !== true;
26780
- animationFromClone !== void 0 && animationFromClone.reverse();
26781
- animationFromTween !== void 0 && animationFromTween.reverse();
26782
- animationToClone !== void 0 && animationToClone.reverse();
26843
+ animationFromClone?.reverse();
26844
+ animationFromTween?.reverse();
26845
+ animationToClone?.reverse();
26783
26846
  animationTo.reverse();
26784
26847
  return true;
26785
26848
  };
@@ -27031,7 +27094,7 @@
27031
27094
  },
27032
27095
  ...to.opts,
27033
27096
  onEnd(dir, aborted) {
27034
- to.opts.onEnd !== void 0 && to.opts.onEnd(dir, aborted);
27097
+ to.opts.onEnd?.(dir, aborted);
27035
27098
  if (aborted === true) return;
27036
27099
  from.animating = false;
27037
27100
  to.animating = false;
@@ -27148,7 +27211,7 @@
27148
27211
  if (index !== -1) {
27149
27212
  group.queue = group.queue.filter((item) => item !== ctx);
27150
27213
  if (group.queue.length === 0) {
27151
- group.cancel !== void 0 && group.cancel();
27214
+ group.cancel?.();
27152
27215
  delete morphGroups[ctx.group];
27153
27216
  }
27154
27217
  }
@@ -27172,7 +27235,7 @@
27172
27235
  };
27173
27236
  function update3(el, ctx, value2) {
27174
27237
  ctx.handler = value2;
27175
- ctx.observer !== void 0 && ctx.observer.disconnect();
27238
+ ctx.observer?.disconnect();
27176
27239
  ctx.observer = new MutationObserver((list) => {
27177
27240
  if (typeof ctx.handler === "function") {
27178
27241
  const res = ctx.handler(list);
@@ -27186,7 +27249,7 @@
27186
27249
  function destroy2(el) {
27187
27250
  const ctx = el.__qmutation;
27188
27251
  if (ctx !== void 0) {
27189
- ctx.observer !== void 0 && ctx.observer.disconnect();
27252
+ ctx.observer?.disconnect();
27190
27253
  delete el.__qmutation;
27191
27254
  }
27192
27255
  }
@@ -27375,7 +27438,7 @@
27375
27438
  },
27376
27439
  end(evt) {
27377
27440
  cleanEvt(ctx, "temp");
27378
- ctx.styleCleanup !== void 0 && ctx.styleCleanup(ctx.triggered);
27441
+ ctx.styleCleanup?.(ctx.triggered);
27379
27442
  if (ctx.triggered === true) {
27380
27443
  evt !== void 0 && stopAndPrevent(evt);
27381
27444
  } else if (ctx.timer !== void 0) {
@@ -27417,7 +27480,7 @@
27417
27480
  cleanEvt(ctx, "main");
27418
27481
  cleanEvt(ctx, "temp");
27419
27482
  ctx.timer !== void 0 && clearTimeout(ctx.timer);
27420
- ctx.styleCleanup !== void 0 && ctx.styleCleanup();
27483
+ ctx.styleCleanup?.();
27421
27484
  delete el.__qtouchhold;
27422
27485
  }
27423
27486
  }
@@ -27559,8 +27622,8 @@
27559
27622
  },
27560
27623
  end(evt) {
27561
27624
  if (ctx.event === void 0) return;
27562
- ctx.styleCleanup !== void 0 && ctx.styleCleanup(true);
27563
- evt !== void 0 && ctx.event.repeatCount > 0 && stopAndPrevent(evt);
27625
+ ctx.styleCleanup?.(true);
27626
+ if (evt !== void 0 && ctx.event.repeatCount > 0) stopAndPrevent(evt);
27564
27627
  cleanEvt(ctx, "temp");
27565
27628
  if (ctx.timer !== void 0) {
27566
27629
  clearTimeout(ctx.timer);
@@ -27600,7 +27663,7 @@
27600
27663
  ctx.timer !== void 0 && clearTimeout(ctx.timer);
27601
27664
  cleanEvt(ctx, "main");
27602
27665
  cleanEvt(ctx, "temp");
27603
- ctx.styleCleanup !== void 0 && ctx.styleCleanup();
27666
+ ctx.styleCleanup?.();
27604
27667
  delete el.__qtouchrepeat;
27605
27668
  }
27606
27669
  }
@@ -27964,12 +28027,12 @@
27964
28027
  const dialogRef = ref(null);
27965
28028
  const el = createGlobalNode(false, "dialog");
27966
28029
  const applyState = (cmd) => {
27967
- if (dialogRef.value !== null && dialogRef.value[cmd] !== void 0) {
28030
+ if (dialogRef.value?.[cmd] !== void 0) {
27968
28031
  dialogRef.value[cmd]();
27969
28032
  return;
27970
28033
  }
27971
28034
  const target2 = vm2.$.subTree;
27972
- if (target2 && target2.component) {
28035
+ if (target2?.component) {
27973
28036
  if (target2.component.proxy && target2.component.proxy[cmd]) {
27974
28037
  target2.component.proxy[cmd]();
27975
28038
  return;
@@ -28454,7 +28517,7 @@
28454
28517
  };
28455
28518
  var defaults = { ...originalDefaults };
28456
28519
  function registerProps(opts) {
28457
- if (opts && opts.group !== void 0 && activeGroups[opts.group] !== void 0) {
28520
+ if (opts?.group !== void 0 && activeGroups[opts.group] !== void 0) {
28458
28521
  return Object.assign(activeGroups[opts.group], opts);
28459
28522
  }
28460
28523
  const newProps = isObject(opts) === true && opts.ignoreDefaults === true ? { ...originalDefaults, ...opts } : { ...defaults, ...opts };
@@ -28897,7 +28960,7 @@
28897
28960
  const actions = (Array.isArray(config.actions) === true ? config.actions : []).concat(
28898
28961
  config.ignoreDefaults !== true && Array.isArray(defaults2.actions) === true ? defaults2.actions : []
28899
28962
  ).concat(
28900
- notifTypes[config.type] !== void 0 && Array.isArray(notifTypes[config.type].actions) === true ? notifTypes[config.type].actions : []
28963
+ Array.isArray(notifTypes[config.type]?.actions) === true ? notifTypes[config.type].actions : []
28901
28964
  );
28902
28965
  const { closeBtn } = notif;
28903
28966
  closeBtn && actions.push({
@@ -29549,9 +29612,9 @@
29549
29612
  function openWindow(url, reject, windowFeatures) {
29550
29613
  let open2 = window.open;
29551
29614
  if (Platform_default.is.cordova === true) {
29552
- if (cordova !== void 0 && cordova.InAppBrowser !== void 0 && cordova.InAppBrowser.open !== void 0) {
29615
+ if (cordova?.InAppBrowser?.open !== void 0) {
29553
29616
  open2 = cordova.InAppBrowser.open;
29554
- } else if (navigator !== void 0 && navigator.app !== void 0) {
29617
+ } else if (navigator?.app !== void 0) {
29555
29618
  return navigator.app.loadUrl(url, {
29556
29619
  openExternal: true
29557
29620
  });
@@ -29562,7 +29625,7 @@
29562
29625
  Platform_default.is.desktop && win.focus();
29563
29626
  return win;
29564
29627
  } else {
29565
- reject && reject();
29628
+ reject?.();
29566
29629
  }
29567
29630
  }
29568
29631
  var open_url_default = (url, reject, windowFeatures) => {
@@ -29759,7 +29822,7 @@
29759
29822
  console.error("[ Quasar ] Vue is required to run. Please add a script tag for it before loading Quasar.");
29760
29823
  }
29761
29824
  window.Quasar = {
29762
- version: "2.17.7",
29825
+ version: "2.18.0",
29763
29826
  install(app2, opts) {
29764
29827
  install_quasar_default(app2, {
29765
29828
  components: components_exports,