quasar 2.17.7 → 2.18.1

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 (291) 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 +2 -2
  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 +251 -175
  116. package/dist/quasar.css +8 -5
  117. package/dist/quasar.prod.css +1 -1
  118. package/dist/quasar.rtl.css +14 -6
  119. package/dist/quasar.rtl.prod.css +1 -1
  120. package/dist/quasar.sass +8 -5
  121. package/dist/quasar.server.prod.cjs +15 -15
  122. package/dist/quasar.server.prod.js +10 -10
  123. package/dist/quasar.umd.js +251 -175
  124. package/dist/quasar.umd.prod.js +17 -17
  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 +14 -1
  130. package/lang/ar.js +14 -1
  131. package/lang/az-Latn.js +14 -1
  132. package/lang/bg.js +14 -1
  133. package/lang/bn.js +14 -1
  134. package/lang/bs-BA.js +14 -1
  135. package/lang/ca.js +14 -1
  136. package/lang/cs.js +14 -1
  137. package/lang/da.js +14 -1
  138. package/lang/de-CH.js +14 -1
  139. package/lang/de-DE.js +14 -1
  140. package/lang/de.js +14 -1
  141. package/lang/el.js +14 -1
  142. package/lang/en-GB.js +14 -1
  143. package/lang/en-US.js +14 -1
  144. package/lang/eo.js +14 -1
  145. package/lang/es.js +14 -1
  146. package/lang/et.js +14 -1
  147. package/lang/eu.js +14 -1
  148. package/lang/fa-IR.js +14 -1
  149. package/lang/fa.js +14 -1
  150. package/lang/fi.js +14 -1
  151. package/lang/fr.js +14 -1
  152. package/lang/gn.js +14 -1
  153. package/lang/he.js +14 -1
  154. package/lang/hi.js +14 -1
  155. package/lang/hr.js +14 -1
  156. package/lang/hu.js +14 -1
  157. package/lang/id.js +14 -1
  158. package/lang/index.json +1 -1
  159. package/lang/is.js +14 -1
  160. package/lang/it.js +14 -1
  161. package/lang/ja.js +14 -1
  162. package/lang/kk.js +14 -1
  163. package/lang/km.js +14 -1
  164. package/lang/ko-KR.js +14 -1
  165. package/lang/kur-CKB.js +14 -1
  166. package/lang/lt.js +14 -1
  167. package/lang/lu.js +14 -1
  168. package/lang/lv.js +14 -1
  169. package/lang/mk.js +14 -1
  170. package/lang/ml.js +14 -1
  171. package/lang/mm.js +14 -1
  172. package/lang/ms-MY.js +14 -1
  173. package/lang/ms.js +14 -1
  174. package/lang/my.js +14 -1
  175. package/lang/nb-NO.js +14 -1
  176. package/lang/nl.js +14 -1
  177. package/lang/pl.js +14 -1
  178. package/lang/pt-BR.js +14 -1
  179. package/lang/pt.js +14 -1
  180. package/lang/ro.js +14 -1
  181. package/lang/ru.js +14 -1
  182. package/lang/sk.js +14 -1
  183. package/lang/sl.js +14 -1
  184. package/lang/sm.js +14 -1
  185. package/lang/sr-CYR.js +14 -1
  186. package/lang/sr.js +14 -1
  187. package/lang/sv.js +14 -1
  188. package/lang/ta.js +14 -1
  189. package/lang/th.js +14 -1
  190. package/lang/tl.js +14 -1
  191. package/lang/tr.js +14 -1
  192. package/lang/ug.js +8 -1
  193. package/lang/uk.js +14 -1
  194. package/lang/ur-PK.js +118 -0
  195. package/lang/uz-Cyrl.js +14 -1
  196. package/lang/uz-Latn.js +14 -1
  197. package/lang/vi.js +14 -1
  198. package/lang/zh-CN.js +14 -1
  199. package/lang/zh-TW.js +14 -1
  200. package/package.json +4 -4
  201. package/src/components/breadcrumbs/QBreadcrumbs.js +2 -2
  202. package/src/components/btn/QBtn.js +7 -8
  203. package/src/components/btn-dropdown/QBtnDropdown.js +10 -4
  204. package/src/components/btn-dropdown/QBtnDropdown.json +21 -0
  205. package/src/components/chip/QChip.sass +8 -4
  206. package/src/components/color/QColor.js +1 -1
  207. package/src/components/date/QDate.js +6 -1
  208. package/src/components/dialog/QDialog.js +2 -2
  209. package/src/components/dialog/QDialog.json +1 -1
  210. package/src/components/drawer/QDrawer.js +3 -5
  211. package/src/components/editor/QEditor.js +1 -1
  212. package/src/components/editor/editor-caret.js +1 -1
  213. package/src/components/editor/editor-utils.js +2 -2
  214. package/src/components/expansion-item/QExpansionItem.js +6 -3
  215. package/src/components/fab/QFab.js +2 -2
  216. package/src/components/form/QForm.js +2 -2
  217. package/src/components/form/QFormChildMixin.js +6 -4
  218. package/src/components/icon/QIcon.js +2 -2
  219. package/src/components/infinite-scroll/QInfiniteScroll.js +2 -4
  220. package/src/components/input/QInput.js +3 -3
  221. package/src/components/item/QItem.js +1 -1
  222. package/src/components/menu/QMenu.js +8 -5
  223. package/src/components/menu/QMenu.json +8 -1
  224. package/src/components/pagination/QPagination.js +8 -4
  225. package/src/components/parallax/QParallax.js +1 -1
  226. package/src/components/popup-edit/QPopupEdit.js +2 -2
  227. package/src/components/pull-to-refresh/QPullToRefresh.js +1 -1
  228. package/src/components/rating/QRating.sass +1 -1
  229. package/src/components/resize-observer/QResizeObserver.js +1 -1
  230. package/src/components/scroll-observer/QScrollObserver.js +2 -2
  231. package/src/components/select/QSelect.js +9 -6
  232. package/src/components/select/QSelect.json +1 -1
  233. package/src/components/slide-transition/QSlideTransition.js +2 -2
  234. package/src/components/stepper/StepHeader.js +1 -1
  235. package/src/components/table/QTable.js +77 -36
  236. package/src/components/table/QTable.json +98 -0
  237. package/src/components/table/QTr.js +4 -1
  238. package/src/components/table/table-sort.js +1 -1
  239. package/src/components/tabs/QTabs.js +2 -2
  240. package/src/components/tabs/use-tab.js +4 -4
  241. package/src/components/time/QTime.js +1 -1
  242. package/src/components/tree/QTree.js +2 -3
  243. package/src/components/virtual-scroll/use-virtual-scroll.js +3 -3
  244. package/src/composables/private.use-field/use-field.js +5 -5
  245. package/src/composables/private.use-file/use-file.js +6 -3
  246. package/src/composables/private.use-model-toggle/use-model-toggle.js +2 -2
  247. package/src/composables/private.use-refocus-target/use-refocus-target.js +6 -5
  248. package/src/composables/private.use-validate/use-validate.js +1 -1
  249. package/src/directives/intersection/Intersection.js +2 -2
  250. package/src/directives/morph/Morph.js +2 -2
  251. package/src/directives/mutation/Mutation.js +2 -2
  252. package/src/directives/touch-hold/TouchHold.js +2 -2
  253. package/src/directives/touch-pan/TouchPan.js +2 -2
  254. package/src/directives/touch-repeat/TouchRepeat.js +3 -3
  255. package/src/directives/touch-swipe/TouchSwipe.js +3 -3
  256. package/src/plugins/lang/Lang.test.js +28 -2
  257. package/src/plugins/loading/Loading.js +1 -1
  258. package/src/plugins/notify/Notify.js +1 -1
  259. package/src/plugins/private.body/Body.js +1 -1
  260. package/src/plugins/private.history/History.js +1 -1
  261. package/src/plugins/screen/Screen.js +1 -1
  262. package/src/utils/morph/morph.js +13 -10
  263. package/src/utils/open-url/open-url.js +3 -3
  264. package/src/utils/private.dialog/create-dialog.js +2 -2
  265. package/src/utils/private.portal/portal.js +1 -1
  266. package/src/components/date/__tests__/QDate.cy.js +0 -189
  267. package/src/components/date/__tests__/use-datetime.cy.js +0 -83
  268. package/src/components/editor/__tests__/QEditor.cy.js +0 -195
  269. package/src/components/field/__tests__/QField.cy.js +0 -156
  270. package/src/components/input/__tests__/QInput.cy.js +0 -786
  271. package/src/components/input/__tests__/use-mask.cy.js +0 -124
  272. package/src/components/menu/__tests__/QMenu.cy.js +0 -634
  273. package/src/components/menu/__tests__/WrapperOne.vue +0 -51
  274. package/src/components/menu/__tests__/WrapperTwo.vue +0 -38
  275. package/src/components/select/__tests__/QSelect.cy.js +0 -2018
  276. package/src/components/table/__tests__/QTable.cy.js +0 -635
  277. package/src/components/table/__tests__/QTd.cy.js +0 -35
  278. package/src/components/table/__tests__/QTh.cy.js +0 -27
  279. package/src/components/table/__tests__/QTr.cy.js +0 -27
  280. package/src/components/tabs/__tests__/QTab.cy.js +0 -79
  281. package/src/components/tabs/__tests__/QTabs.cy.js +0 -147
  282. package/src/components/uploader/__tests__/QUploader.cy.js +0 -191
  283. package/src/composables/__tests__/FieldWrapper.vue +0 -54
  284. package/src/composables/__tests__/use-anchor.cy.js +0 -98
  285. package/src/composables/__tests__/use-field.cy.js +0 -547
  286. package/src/composables/__tests__/use-file.cy.js +0 -69
  287. package/src/composables/__tests__/use-fullscreen.cy.js +0 -37
  288. package/src/composables/__tests__/use-model-toggle.cy.js +0 -350
  289. package/src/composables/__tests__/use-portal.cy.js +0 -4
  290. package/src/composables/__tests__/use-router-link.cy.js +0 -55
  291. 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.1
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)
@@ -863,7 +863,14 @@
863
863
  firstDayOfWeek: 0,
864
864
  // 0-6, 0 - Sunday, 1 Monday, ...
865
865
  format24h: false,
866
- pluralDay: "days"
866
+ pluralDay: "days",
867
+ prevMonth: "Previous month",
868
+ nextMonth: "Next month",
869
+ prevYear: "Previous year",
870
+ nextYear: "Next year",
871
+ today: "Today",
872
+ prevRangeYears: (range) => `Previous ${range} years`,
873
+ nextRangeYears: (range) => `Next ${range} years`
867
874
  },
868
875
  table: {
869
876
  noData: "No data available",
@@ -875,6 +882,12 @@
875
882
  pagination: (start, end, total) => start + "-" + end + " of " + total,
876
883
  columns: "Columns"
877
884
  },
885
+ pagination: {
886
+ first: "First page",
887
+ prev: "Previous page",
888
+ next: "Next page",
889
+ last: "Last page"
890
+ },
878
891
  editor: {
879
892
  url: "URL",
880
893
  bold: "Bold",
@@ -1378,7 +1391,7 @@
1378
1391
  }
1379
1392
  var install_quasar_default = false ? function(parentApp, opts = {}, ssrContext) {
1380
1393
  const $q = {
1381
- version: "2.17.7",
1394
+ version: "2.18.1",
1382
1395
  config: opts.config || {}
1383
1396
  };
1384
1397
  Object.assign(ssrContext, {
@@ -1408,7 +1421,7 @@
1408
1421
  ssrContext
1409
1422
  });
1410
1423
  } : function(parentApp, opts = {}) {
1411
- const $q = { version: "2.17.7" };
1424
+ const $q = { version: "2.18.1" };
1412
1425
  if (globalConfigIsFrozen === false) {
1413
1426
  if (opts.config !== void 0) {
1414
1427
  Object.assign(globalConfig, opts.config);
@@ -1867,7 +1880,9 @@
1867
1880
  "ion-logo": ionFn,
1868
1881
  "iconfont ": sameFn,
1869
1882
  "ti-": (i) => `themify-icon ${i}`,
1870
- "bi-": (i) => `bootstrap-icons ${i}`
1883
+ "bi-": (i) => `bootstrap-icons ${i}`,
1884
+ "i-": sameFn
1885
+ // UnoCSS pure icons
1871
1886
  };
1872
1887
  var matMap = {
1873
1888
  o_: "-outlined",
@@ -1987,8 +2002,7 @@
1987
2002
  const data = {
1988
2003
  class: classes.value,
1989
2004
  style: sizeStyle.value,
1990
- "aria-hidden": "true",
1991
- role: "presentation"
2005
+ "aria-hidden": "true"
1992
2006
  };
1993
2007
  if (type.value.none === true) {
1994
2008
  return h(props4.tag, data, hSlot(slots.default));
@@ -2259,9 +2273,9 @@
2259
2273
  );
2260
2274
  if (vnodes.length === 0) return;
2261
2275
  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;
2276
+ const child = [], len = vnodes.filter((c) => c.type?.name === "QBreadcrumbsEl").length, separator = slots.separator !== void 0 ? slots.separator : () => props4.separator;
2263
2277
  vnodes.forEach((comp) => {
2264
- if (comp.type !== void 0 && comp.type.name === "QBreadcrumbsEl") {
2278
+ if (comp.type?.name === "QBreadcrumbsEl") {
2265
2279
  const middle = els < len;
2266
2280
  const disabled = comp.props !== null && disabledValues.includes(comp.props.disable);
2267
2281
  const cls = (middle === true ? "" : " q-breadcrumbs--last") + (disabled !== true && middle === true ? activeClass.value : "");
@@ -2974,11 +2988,11 @@
2974
2988
  if (e.defaultPrevented === true) return;
2975
2989
  const el = document.activeElement;
2976
2990
  if (props4.type === "submit" && el !== document.body && rootRef.value.contains(el) === false && el.contains(rootRef.value) === false) {
2977
- rootRef.value.focus();
2991
+ e.qAvoidFocus !== true && rootRef.value.focus();
2978
2992
  const onClickCleanup = () => {
2979
2993
  document.removeEventListener("keydown", stopAndPrevent, true);
2980
2994
  document.removeEventListener("keyup", onClickCleanup, passiveCapture);
2981
- rootRef.value !== null && rootRef.value.removeEventListener("blur", onClickCleanup, passiveCapture);
2995
+ rootRef.value?.removeEventListener("blur", onClickCleanup, passiveCapture);
2982
2996
  };
2983
2997
  document.addEventListener("keydown", stopAndPrevent, true);
2984
2998
  document.addEventListener("keyup", onClickCleanup, passiveCapture);
@@ -2993,7 +3007,7 @@
2993
3007
  if (isKeyCode(e, [13, 32]) === true && keyboardTarget !== rootRef.value) {
2994
3008
  keyboardTarget !== null && cleanup();
2995
3009
  if (e.defaultPrevented !== true) {
2996
- rootRef.value.focus();
3010
+ e.qAvoidFocus !== true && rootRef.value.focus();
2997
3011
  keyboardTarget = rootRef.value;
2998
3012
  rootRef.value.classList.add("q-btn--active");
2999
3013
  document.addEventListener("keyup", onPressEnd, true);
@@ -3033,8 +3047,8 @@
3033
3047
  }
3034
3048
  function onPressEnd(e) {
3035
3049
  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") {
3050
+ if (e?.type === "blur" && document.activeElement === rootRef.value) return;
3051
+ if (e?.type === "keyup") {
3038
3052
  if (keyboardTarget === rootRef.value && isKeyCode(e, [13, 32]) === true) {
3039
3053
  const evt = new MouseEvent("click", e);
3040
3054
  evt.qKeyEvent = true;
@@ -3067,10 +3081,10 @@
3067
3081
  }
3068
3082
  if (keyboardTarget === rootRef.value) {
3069
3083
  document.removeEventListener("keyup", onPressEnd, true);
3070
- rootRef.value !== null && rootRef.value.removeEventListener("blur", onPressEnd, passiveCapture);
3084
+ rootRef.value?.removeEventListener("blur", onPressEnd, passiveCapture);
3071
3085
  keyboardTarget = null;
3072
3086
  }
3073
- rootRef.value !== null && rootRef.value.classList.remove("q-btn--active");
3087
+ rootRef.value?.classList.remove("q-btn--active");
3074
3088
  }
3075
3089
  function onLoadingEvt(evt) {
3076
3090
  stopAndPrevent(evt);
@@ -3438,7 +3452,7 @@
3438
3452
  }
3439
3453
  }
3440
3454
  function show(evt) {
3441
- if (props4.disable === true || evt !== void 0 && evt.qAnchorHandled === true || canShow !== void 0 && canShow(evt) !== true) return;
3455
+ if (props4.disable === true || evt?.qAnchorHandled === true || canShow !== void 0 && canShow(evt) !== true) return;
3442
3456
  const listener = props4["onUpdate:modelValue"] !== void 0;
3443
3457
  if (listener === true && true) {
3444
3458
  emit("update:modelValue", true);
@@ -3604,7 +3618,7 @@
3604
3618
  }
3605
3619
  } else if (proxy.__qPortal === true) {
3606
3620
  const parent = getParentProxy(proxy);
3607
- if (parent !== void 0 && parent.$options.name === "QPopupProxy") {
3621
+ if (parent?.$options.name === "QPopupProxy") {
3608
3622
  proxy.hide(evt);
3609
3623
  return parent;
3610
3624
  } else {
@@ -4313,6 +4327,7 @@
4313
4327
  persistent: Boolean,
4314
4328
  autoClose: Boolean,
4315
4329
  separateClosePopup: Boolean,
4330
+ noEscDismiss: Boolean,
4316
4331
  noRouteDismiss: Boolean,
4317
4332
  noRefocus: Boolean,
4318
4333
  noFocus: Boolean,
@@ -4462,7 +4477,7 @@
4462
4477
  anchorCleanup(true);
4463
4478
  if (refocusTarget !== null && // menu was hidden from code or ESC plugin
4464
4479
  (evt === void 0 || evt.qClickOutside !== true)) {
4465
- ((evt && evt.type.indexOf("key") === 0 ? refocusTarget.closest('[tabindex]:not([tabindex^="-"])') : void 0) || refocusTarget).focus();
4480
+ ((evt?.type.indexOf("key") === 0 ? refocusTarget.closest('[tabindex]:not([tabindex^="-"])') : void 0) || refocusTarget).focus();
4466
4481
  refocusTarget = null;
4467
4482
  }
4468
4483
  registerTimeout(() => {
@@ -4506,8 +4521,10 @@
4506
4521
  }
4507
4522
  }
4508
4523
  function onEscapeKey(evt) {
4509
- emit("escapeKey");
4510
- hide(evt);
4524
+ if (props4.noEscDismiss !== true) {
4525
+ emit("escapeKey");
4526
+ hide(evt);
4527
+ }
4511
4528
  }
4512
4529
  function updatePosition() {
4513
4530
  setPosition({
@@ -4639,8 +4656,11 @@
4639
4656
  contentStyle: [Array, String, Object],
4640
4657
  cover: Boolean,
4641
4658
  persistent: Boolean,
4659
+ noEscDismiss: Boolean,
4642
4660
  noRouteDismiss: Boolean,
4643
4661
  autoClose: Boolean,
4662
+ noRefocus: Boolean,
4663
+ noFocus: Boolean,
4644
4664
  menuAnchor: {
4645
4665
  type: String,
4646
4666
  default: "bottom end"
@@ -4679,7 +4699,7 @@
4679
4699
  const btnDesignAttr = computed(() => getBtnDesignAttr(props4));
4680
4700
  const btnProps = computed(() => passBtnProps(props4));
4681
4701
  watch(() => props4.modelValue, (val) => {
4682
- menuRef.value !== null && menuRef.value[val ? "show" : "hide"]();
4702
+ menuRef.value?.[val ? "show" : "hide"]();
4683
4703
  });
4684
4704
  watch(() => props4.split, hide);
4685
4705
  function onBeforeShow(e) {
@@ -4707,13 +4727,13 @@
4707
4727
  emit("click", e);
4708
4728
  }
4709
4729
  function toggle(evt) {
4710
- menuRef.value !== null && menuRef.value.toggle(evt);
4730
+ menuRef.value?.toggle(evt);
4711
4731
  }
4712
4732
  function show(evt) {
4713
- menuRef.value !== null && menuRef.value.show(evt);
4733
+ menuRef.value?.show(evt);
4714
4734
  }
4715
4735
  function hide(evt) {
4716
- menuRef.value !== null && menuRef.value.hide(evt);
4736
+ menuRef.value?.hide(evt);
4717
4737
  }
4718
4738
  Object.assign(proxy, {
4719
4739
  show,
@@ -4739,8 +4759,11 @@
4739
4759
  cover: props4.cover,
4740
4760
  fit: true,
4741
4761
  persistent: props4.persistent,
4762
+ noEscDismiss: props4.noEscDismiss,
4742
4763
  noRouteDismiss: props4.noRouteDismiss,
4743
4764
  autoClose: props4.autoClose,
4765
+ noFocus: props4.noFocus,
4766
+ noRefocus: props4.noRefocus,
4744
4767
  anchor: props4.menuAnchor,
4745
4768
  self: props4.menuSelf,
4746
4769
  offset: props4.menuOffset,
@@ -5184,8 +5207,8 @@
5184
5207
  if (ctx.event === void 0) return;
5185
5208
  cleanEvt(ctx, "temp");
5186
5209
  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);
5210
+ ctx.styleCleanup?.(true);
5211
+ if (evt !== void 0 && ctx.event.dir !== false) stopAndPrevent(evt);
5189
5212
  ctx.event = void 0;
5190
5213
  }
5191
5214
  };
@@ -5218,7 +5241,7 @@
5218
5241
  cleanEvt(ctx, "main");
5219
5242
  cleanEvt(ctx, "temp");
5220
5243
  client.is.firefox === true && preventDraggable(el, false);
5221
- ctx.styleCleanup !== void 0 && ctx.styleCleanup();
5244
+ ctx.styleCleanup?.();
5222
5245
  delete el.__qtouchswipe;
5223
5246
  }
5224
5247
  }
@@ -5936,11 +5959,12 @@
5936
5959
  });
5937
5960
  function refocusTarget(e) {
5938
5961
  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) {
5962
+ if (e?.qAvoidFocus === true) return;
5963
+ if (e?.type.indexOf("key") === 0) {
5964
+ if (document.activeElement !== root && root?.contains(document.activeElement) === true) {
5941
5965
  root.focus();
5942
5966
  }
5943
- } else if (refocusRef.value !== null && (e === void 0 || root !== null && root.contains(e.target) === true)) {
5967
+ } else if (refocusRef.value !== null && (e === void 0 || root?.contains(e.target) === true)) {
5944
5968
  refocusRef.value.focus();
5945
5969
  }
5946
5970
  }
@@ -6687,7 +6711,7 @@
6687
6711
  cleanEvt(ctx, "temp");
6688
6712
  client.is.firefox === true && preventDraggable(el, false);
6689
6713
  if (abort === true) {
6690
- ctx.styleCleanup !== void 0 && ctx.styleCleanup();
6714
+ ctx.styleCleanup?.();
6691
6715
  if (ctx.event.detected !== true && ctx.initialEvent !== void 0) {
6692
6716
  ctx.initialEvent.target.dispatchEvent(ctx.initialEvent.event);
6693
6717
  }
@@ -6738,7 +6762,7 @@
6738
6762
  cleanEvt(ctx, "main");
6739
6763
  cleanEvt(ctx, "temp");
6740
6764
  client.is.firefox === true && preventDraggable(el, false);
6741
- ctx.styleCleanup !== void 0 && ctx.styleCleanup();
6765
+ ctx.styleCleanup?.();
6742
6766
  delete el.__qtouchpan;
6743
6767
  }
6744
6768
  }
@@ -7443,7 +7467,7 @@
7443
7467
  }
7444
7468
  }, onObjLoad = function() {
7445
7469
  cleanup();
7446
- if (targetEl && targetEl.contentDocument) {
7470
+ if (targetEl?.contentDocument) {
7447
7471
  curDocView = targetEl.contentDocument.defaultView;
7448
7472
  curDocView.addEventListener("resize", trigger3, listenOpts.passive);
7449
7473
  emitEvent();
@@ -7765,7 +7789,7 @@
7765
7789
  }
7766
7790
  function updateActiveRoute() {
7767
7791
  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);
7792
+ const list = tabDataList.filter((tab) => tab.routeData?.hasRouterLink.value === true);
7769
7793
  const { hash: currentHash, query: currentQuery } = proxy.$route;
7770
7794
  const currentQueryLen = Object.keys(currentQuery).length;
7771
7795
  for (const tab of list) {
@@ -7898,7 +7922,7 @@
7898
7922
  function cleanup() {
7899
7923
  animateTimer !== null && clearTimeout(animateTimer);
7900
7924
  stopAnimScroll();
7901
- unwatchRoute !== void 0 && unwatchRoute();
7925
+ unwatchRoute?.();
7902
7926
  }
7903
7927
  let hadRouteWatcher, hadActivated;
7904
7928
  onBeforeUnmount(cleanup);
@@ -7995,11 +8019,11 @@
7995
8019
  );
7996
8020
  const tabIndex = computed(() => props4.disable === true || $tabs.hasFocus.value === true || isActive.value === false && $tabs.hasActiveTab.value === true ? -1 : props4.tabindex || 0);
7997
8021
  function onClick(e, keyboard) {
7998
- if (keyboard !== true && blurTargetRef.value !== null) {
7999
- blurTargetRef.value.focus();
8022
+ if (keyboard !== true && e?.qAvoidFocus !== true) {
8023
+ blurTargetRef.value?.focus();
8000
8024
  }
8001
8025
  if (props4.disable === true) {
8002
- if (routeData !== void 0 && routeData.hasRouterLink.value === true) {
8026
+ if (routeData?.hasRouterLink.value === true) {
8003
8027
  stopAndPrevent(e);
8004
8028
  }
8005
8029
  return;
@@ -8018,7 +8042,7 @@
8018
8042
  }).then((softError) => {
8019
8043
  if (reqId === $tabs.avoidRouteWatcher) {
8020
8044
  $tabs.avoidRouteWatcher = false;
8021
- if (hardError === void 0 && (softError === void 0 || softError.message !== void 0 && softError.message.startsWith("Avoided redundant navigation") === true)) {
8045
+ if (hardError === void 0 && (softError === void 0 || softError.message?.startsWith("Avoided redundant navigation") === true)) {
8022
8046
  $tabs.updateModel({ name: props4.name });
8023
8047
  }
8024
8048
  }
@@ -8675,7 +8699,7 @@
8675
8699
  model.value.v = hsv.v;
8676
8700
  }
8677
8701
  updateModel2(rgb2, change);
8678
- if (evt !== void 0 && change !== true && evt.target.selectionEnd !== void 0) {
8702
+ if (change !== true && evt?.target.selectionEnd !== void 0) {
8679
8703
  const index = evt.target.selectionEnd;
8680
8704
  nextTick(() => {
8681
8705
  evt.target.setSelectionRange(index, index);
@@ -10735,7 +10759,7 @@
10735
10759
  }
10736
10760
  function toggleDate(date, monthHash) {
10737
10761
  const month = daysMap.value[monthHash];
10738
- const fn = month !== void 0 && month.includes(date.day) === true ? removeFromModel : addToModel;
10762
+ const fn = month?.includes(date.day) === true ? removeFromModel : addToModel;
10739
10763
  fn(date);
10740
10764
  }
10741
10765
  function getShortDate(date) {
@@ -10904,6 +10928,7 @@
10904
10928
  props4.todayBtn === true ? h(QBtn_default, {
10905
10929
  class: "q-date__header-today self-start",
10906
10930
  icon: $q.iconSet.datetime.today,
10931
+ ariaLabel: $q.lang.date.today,
10907
10932
  flat: true,
10908
10933
  size: "sm",
10909
10934
  round: true,
@@ -10924,6 +10949,7 @@
10924
10949
  size: "sm",
10925
10950
  flat: true,
10926
10951
  icon: dateArrow.value[0],
10952
+ ariaLabel: type === "Years" ? $q.lang.date.prevYear : $q.lang.date.prevMonth,
10927
10953
  tabindex: tabindex.value,
10928
10954
  disable: boundaries.prev === false,
10929
10955
  ...getCache("go-#" + type, { onClick() {
@@ -10958,6 +10984,7 @@
10958
10984
  size: "sm",
10959
10985
  flat: true,
10960
10986
  icon: dateArrow.value[1],
10987
+ ariaLabel: type === "Years" ? $q.lang.date.nextYear : $q.lang.date.nextMonth,
10961
10988
  tabindex: tabindex.value,
10962
10989
  disable: boundaries.next === false,
10963
10990
  ...getCache("go+#" + type, { onClick() {
@@ -11113,6 +11140,7 @@
11113
11140
  dense: true,
11114
11141
  flat: true,
11115
11142
  icon: dateArrow.value[0],
11143
+ ariaLabel: $q.lang.date.prevRangeYears(yearsInterval),
11116
11144
  tabindex: tabindex.value,
11117
11145
  disable: isDisabled(start),
11118
11146
  ...getCache("y-", { onClick: () => {
@@ -11131,6 +11159,7 @@
11131
11159
  dense: true,
11132
11160
  flat: true,
11133
11161
  icon: dateArrow.value[1],
11162
+ ariaLabel: $q.lang.date.nextRangeYears(yearsInterval),
11134
11163
  tabindex: tabindex.value,
11135
11164
  disable: isDisabled(stop2),
11136
11165
  ...getCache("y+", { onClick: () => {
@@ -11503,7 +11532,7 @@
11503
11532
  showPortal();
11504
11533
  animating.value = true;
11505
11534
  if (props4.noFocus !== true) {
11506
- document.activeElement !== null && document.activeElement.blur();
11535
+ document.activeElement?.blur();
11507
11536
  registerTick(focus);
11508
11537
  } else {
11509
11538
  removeTick();
@@ -11536,7 +11565,7 @@
11536
11565
  animating.value = true;
11537
11566
  hidePortal();
11538
11567
  if (refocusTarget !== null) {
11539
- ((evt && evt.type.indexOf("key") === 0 ? refocusTarget.closest('[tabindex]:not([tabindex^="-"])') : void 0) || refocusTarget).focus();
11568
+ ((evt?.type.indexOf("key") === 0 ? refocusTarget.closest('[tabindex]:not([tabindex^="-"])') : void 0) || refocusTarget).focus();
11540
11569
  refocusTarget = null;
11541
11570
  }
11542
11571
  registerTimeout(() => {
@@ -11765,7 +11794,7 @@
11765
11794
  applyPosition(0);
11766
11795
  if (belowBreakpoint.value === true) {
11767
11796
  const otherInstance = $layout.instances[otherSide.value];
11768
- if (otherInstance !== void 0 && otherInstance.belowBreakpoint === true) {
11797
+ if (otherInstance?.belowBreakpoint === true) {
11769
11798
  otherInstance.hide(false);
11770
11799
  }
11771
11800
  applyBackdrop(1);
@@ -12005,9 +12034,7 @@
12005
12034
  timerMini = setTimeout(() => {
12006
12035
  timerMini = null;
12007
12036
  flagMiniAnimate.value = false;
12008
- if (vm2 && vm2.proxy && vm2.proxy.$el) {
12009
- vm2.proxy.$el.classList.remove("q-drawer--mini-animate");
12010
- }
12037
+ vm2?.proxy?.$el?.classList.remove("q-drawer--mini-animate");
12011
12038
  }, 150);
12012
12039
  }
12013
12040
  function onOpenPan(evt) {
@@ -12105,7 +12132,7 @@
12105
12132
  });
12106
12133
  });
12107
12134
  onBeforeUnmount(() => {
12108
- layoutTotalWidthWatcher !== void 0 && layoutTotalWidthWatcher();
12135
+ layoutTotalWidthWatcher?.();
12109
12136
  if (timerMini !== null) {
12110
12137
  clearTimeout(timerMini);
12111
12138
  timerMini = null;
@@ -12249,7 +12276,7 @@
12249
12276
  }
12250
12277
  get range() {
12251
12278
  const sel = this.selection;
12252
- if (sel !== null && sel.rangeCount) {
12279
+ if (sel?.rangeCount) {
12253
12280
  return sel.getRangeAt(0);
12254
12281
  }
12255
12282
  return this._range;
@@ -12711,7 +12738,7 @@
12711
12738
  });
12712
12739
  function onClick(e) {
12713
12740
  if (isClickable.value === true) {
12714
- if (blurTargetRef.value !== null) {
12741
+ if (blurTargetRef.value !== null && e.qAvoidFocus !== true) {
12715
12742
  if (e.qKeyEvent !== true && document.activeElement === rootRef.value) {
12716
12743
  blurTargetRef.value.focus();
12717
12744
  } else if (document.activeElement === blurTargetRef.value) {
@@ -12813,7 +12840,7 @@
12813
12840
  disable: btn.disable ? typeof btn.disable === "function" ? btn.disable(eVm) : true : false,
12814
12841
  size: "sm",
12815
12842
  onClick(e) {
12816
- clickHandler && clickHandler();
12843
+ clickHandler?.();
12817
12844
  run(e, btn, eVm);
12818
12845
  }
12819
12846
  }, () => child);
@@ -12857,7 +12884,7 @@
12857
12884
  dense: true,
12858
12885
  onClick(e) {
12859
12886
  closeDropdown();
12860
- eVm.contentRef.value !== null && eVm.contentRef.value.focus();
12887
+ e?.qAvoidFocus !== true && eVm.contentRef.value?.focus();
12861
12888
  eVm.caret.restore();
12862
12889
  run(e, btn2, eVm);
12863
12890
  }
@@ -13430,7 +13457,7 @@
13430
13457
  }
13431
13458
  function focus() {
13432
13459
  addFocusFn(() => {
13433
- contentRef.value !== null && contentRef.value.focus({ preventScroll: true });
13460
+ contentRef.value?.focus({ preventScroll: true });
13434
13461
  });
13435
13462
  }
13436
13463
  function getContentEl() {
@@ -13546,7 +13573,7 @@
13546
13573
  let animating = false, doneFn, element;
13547
13574
  let timer2 = null, timerFallback = null, animListener, lastEvent;
13548
13575
  function cleanup() {
13549
- doneFn && doneFn();
13576
+ doneFn?.();
13550
13577
  doneFn = null;
13551
13578
  animating = false;
13552
13579
  if (timer2 !== null) {
@@ -13557,7 +13584,7 @@
13557
13584
  clearTimeout(timerFallback);
13558
13585
  timerFallback = null;
13559
13586
  }
13560
- element !== void 0 && element.removeEventListener("transitionend", animListener);
13587
+ element?.removeEventListener("transitionend", animListener);
13561
13588
  animListener = null;
13562
13589
  }
13563
13590
  function begin(el, height2, done) {
@@ -13782,7 +13809,7 @@
13782
13809
  };
13783
13810
  });
13784
13811
  watch(() => props4.group, (name2) => {
13785
- exitGroup !== void 0 && exitGroup();
13812
+ exitGroup?.();
13786
13813
  name2 !== void 0 && enterGroup();
13787
13814
  });
13788
13815
  function onHeaderClick(e) {
@@ -13793,7 +13820,9 @@
13793
13820
  e.keyCode === 13 && toggleIcon(e, true);
13794
13821
  }
13795
13822
  function toggleIcon(e, keyboard) {
13796
- keyboard !== true && blurTargetRef.value !== null && blurTargetRef.value.focus();
13823
+ if (keyboard !== true && e.qAvoidFocus !== true) {
13824
+ blurTargetRef.value?.focus();
13825
+ }
13797
13826
  toggle(e);
13798
13827
  stopAndPrevent(e);
13799
13828
  }
@@ -13950,7 +13979,7 @@
13950
13979
  }
13951
13980
  props4.group !== void 0 && enterGroup();
13952
13981
  onBeforeUnmount(() => {
13953
- exitGroup !== void 0 && exitGroup();
13982
+ exitGroup?.();
13954
13983
  });
13955
13984
  return () => h("div", { class: classes.value }, [
13956
13985
  h("div", { class: "q-expansion-item__container relative-position" }, getContent())
@@ -14111,8 +14140,8 @@
14111
14140
  showing,
14112
14141
  onChildClick(evt) {
14113
14142
  hide(evt);
14114
- if (triggerRef.value !== null) {
14115
- triggerRef.value.$el.focus();
14143
+ if (evt?.qAvoidFocus !== true) {
14144
+ triggerRef.value?.$el.focus();
14116
14145
  }
14117
14146
  }
14118
14147
  });
@@ -14366,7 +14395,7 @@
14366
14395
  }
14367
14396
  const debouncedValidate = debounce_default(validate, 0);
14368
14397
  onBeforeUnmount(() => {
14369
- unwatchRules !== void 0 && unwatchRules();
14398
+ unwatchRules?.();
14370
14399
  debouncedValidate.cancel();
14371
14400
  });
14372
14401
  Object.assign(proxy, { resetValidation, validate });
@@ -14556,11 +14585,11 @@
14556
14585
  });
14557
14586
  function focusHandler() {
14558
14587
  const el = document.activeElement;
14559
- let target2 = state.targetRef !== void 0 && state.targetRef.value;
14588
+ let target2 = state.targetRef?.value;
14560
14589
  if (target2 && (el === null || el.id !== state.targetUid.value)) {
14561
14590
  target2.hasAttribute("tabindex") === true || (target2 = target2.querySelector("[tabindex]"));
14562
- if (target2 && target2 !== el) {
14563
- target2.focus({ preventScroll: true });
14591
+ if (target2 !== el) {
14592
+ target2?.focus({ preventScroll: true });
14564
14593
  }
14565
14594
  }
14566
14595
  }
@@ -14593,13 +14622,13 @@
14593
14622
  state.focused.value = false;
14594
14623
  emit("blur", e);
14595
14624
  }
14596
- then !== void 0 && then();
14625
+ then?.();
14597
14626
  });
14598
14627
  }
14599
14628
  function clearValue(e) {
14600
14629
  stopAndPrevent(e);
14601
14630
  if ($q.platform.is.mobile !== true) {
14602
- const el = state.targetRef !== void 0 && state.targetRef.value || state.rootRef.value;
14631
+ const el = state.targetRef?.value || state.rootRef.value;
14603
14632
  el.focus();
14604
14633
  } else if (state.rootRef.value.contains(document.activeElement) === true) {
14605
14634
  document.activeElement.blur();
@@ -14840,7 +14869,9 @@
14840
14869
  return acceptedFiles;
14841
14870
  }
14842
14871
  function stopAndPreventDrag(e) {
14843
- e && e.dataTransfer && (e.dataTransfer.dropEffect = "copy");
14872
+ if (e?.dataTransfer) {
14873
+ e.dataTransfer.dropEffect = "copy";
14874
+ }
14844
14875
  stopAndPrevent(e);
14845
14876
  }
14846
14877
  var useFileProps = {
@@ -14877,11 +14908,11 @@
14877
14908
  if (e !== Object(e)) {
14878
14909
  e = { target: null };
14879
14910
  }
14880
- if (e.target !== null && e.target.matches('input[type="file"]') === true) {
14911
+ if (e.target?.matches('input[type="file"]') === true) {
14881
14912
  e.clientX === 0 && e.clientY === 0 && stop(e);
14882
14913
  } else {
14883
14914
  const input = getFileInput();
14884
- input && input !== e.target && input.click(e);
14915
+ if (input !== e.target) input?.click(e);
14885
14916
  }
14886
14917
  }
14887
14918
  }
@@ -15441,7 +15472,7 @@
15441
15472
  if (index === validateIndex && val === true) {
15442
15473
  if (props4.onSubmit !== void 0) {
15443
15474
  emit("submit", evt);
15444
- } else if (evt !== void 0 && evt.target !== void 0 && typeof evt.target.submit === "function") {
15475
+ } else if (evt?.target !== void 0 && typeof evt.target.submit === "function") {
15445
15476
  evt.target.submit();
15446
15477
  }
15447
15478
  }
@@ -15461,7 +15492,7 @@
15461
15492
  addFocusFn(() => {
15462
15493
  if (rootRef.value === null) return;
15463
15494
  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 });
15495
+ target2?.focus({ preventScroll: true });
15465
15496
  });
15466
15497
  }
15467
15498
  provide(formKey, {
@@ -15529,12 +15560,14 @@
15529
15560
  }
15530
15561
  },
15531
15562
  mounted() {
15532
- const $form = this.$.provides[formKey];
15533
- $form !== void 0 && this.disable !== true && $form.bindComponent(this);
15563
+ if (this.disable !== true) {
15564
+ this.$.provides[formKey]?.bindComponent(this);
15565
+ }
15534
15566
  },
15535
15567
  beforeUnmount() {
15536
- const $form = this.$.provides[formKey];
15537
- $form !== void 0 && this.disable !== true && $form.unbindComponent(this);
15568
+ if (this.disable !== true) {
15569
+ this.$.provides[formKey]?.unbindComponent(this);
15570
+ }
15538
15571
  }
15539
15572
  };
15540
15573
 
@@ -16006,9 +16039,7 @@
16006
16039
  isWorking.value = false;
16007
16040
  isFetching.value = false;
16008
16041
  localScrollTarget.removeEventListener("scroll", poll, passive2);
16009
- if (poll !== void 0 && poll.cancel !== void 0) {
16010
- poll.cancel();
16011
- }
16042
+ poll?.cancel?.();
16012
16043
  }
16013
16044
  }
16014
16045
  function updateScrollTarget() {
@@ -16093,7 +16124,7 @@
16093
16124
  const vm2 = getCurrentInstance();
16094
16125
  Object.assign(vm2.proxy, {
16095
16126
  poll: () => {
16096
- poll !== void 0 && poll();
16127
+ poll?.();
16097
16128
  },
16098
16129
  trigger: trigger3,
16099
16130
  stop: stop2,
@@ -16699,7 +16730,7 @@
16699
16730
  });
16700
16731
  }
16701
16732
  function select() {
16702
- inputRef.value !== null && inputRef.value.select();
16733
+ inputRef.value?.select();
16703
16734
  }
16704
16735
  function onPaste(e) {
16705
16736
  if (hasMask.value === true && props4.reverseFillMask !== true) {
@@ -16792,7 +16823,7 @@
16792
16823
  clearTimeout(emitTimer);
16793
16824
  emitTimer = null;
16794
16825
  }
16795
- emitValueFn !== void 0 && emitValueFn();
16826
+ emitValueFn?.();
16796
16827
  emit("change", e.target.value);
16797
16828
  }
16798
16829
  function onFinishEditing(e) {
@@ -16801,7 +16832,7 @@
16801
16832
  clearTimeout(emitTimer);
16802
16833
  emitTimer = null;
16803
16834
  }
16804
- emitValueFn !== void 0 && emitValueFn();
16835
+ emitValueFn?.();
16805
16836
  typedNumber = false;
16806
16837
  stopValueWatcher = false;
16807
16838
  delete temp.value;
@@ -16890,7 +16921,7 @@
16890
16921
  }
16891
16922
  if (changed2 === true) {
16892
16923
  ctx.cfg = cfg;
16893
- ctx.observer !== void 0 && ctx.observer.unobserve(el);
16924
+ ctx.observer?.unobserve(el);
16894
16925
  ctx.observer = new IntersectionObserver(([entry]) => {
16895
16926
  if (typeof ctx.handler === "function") {
16896
16927
  if (entry.rootBounds === null && document.body.contains(el) === true) {
@@ -16910,7 +16941,7 @@
16910
16941
  function destroy(el) {
16911
16942
  const ctx = el.__qvisible;
16912
16943
  if (ctx !== void 0) {
16913
- ctx.observer !== void 0 && ctx.observer.unobserve(el);
16944
+ ctx.observer?.unobserve(el);
16914
16945
  delete el.__qvisible;
16915
16946
  }
16916
16947
  }
@@ -17263,7 +17294,7 @@
17263
17294
  configureScrollTarget();
17264
17295
  });
17265
17296
  function emitEvent() {
17266
- clearTimer !== null && clearTimer();
17297
+ clearTimer?.();
17267
17298
  const top = Math.max(0, getVerticalScrollPosition(localScrollTarget));
17268
17299
  const left = getHorizontalScrollPosition(localScrollTarget);
17269
17300
  const delta = {
@@ -17310,7 +17341,7 @@
17310
17341
  configureScrollTarget();
17311
17342
  });
17312
17343
  onBeforeUnmount(() => {
17313
- clearTimer !== null && clearTimer();
17344
+ clearTimer?.();
17314
17345
  unconfigureScrollTarget();
17315
17346
  });
17316
17347
  Object.assign(proxy, {
@@ -18338,14 +18369,16 @@
18338
18369
  getBtn2({
18339
18370
  key: "bls",
18340
18371
  disable: props4.disable || props4.modelValue <= minProp.value,
18341
- icon: icons.value[0]
18372
+ icon: icons.value[0],
18373
+ "aria-label": $q.lang.pagination.first
18342
18374
  }, minProp.value)
18343
18375
  );
18344
18376
  contentEnd.unshift(
18345
18377
  getBtn2({
18346
18378
  key: "ble",
18347
18379
  disable: props4.disable || props4.modelValue >= maxProp.value,
18348
- icon: icons.value[3]
18380
+ icon: icons.value[3],
18381
+ "aria-label": $q.lang.pagination.last
18349
18382
  }, maxProp.value)
18350
18383
  );
18351
18384
  }
@@ -18354,14 +18387,16 @@
18354
18387
  getBtn2({
18355
18388
  key: "bdp",
18356
18389
  disable: props4.disable || props4.modelValue <= minProp.value,
18357
- icon: icons.value[1]
18390
+ icon: icons.value[1],
18391
+ "aria-label": $q.lang.pagination.prev
18358
18392
  }, props4.modelValue - 1)
18359
18393
  );
18360
18394
  contentEnd.unshift(
18361
18395
  getBtn2({
18362
18396
  key: "bdn",
18363
18397
  disable: props4.disable || props4.modelValue >= maxProp.value,
18364
- icon: icons.value[2]
18398
+ icon: icons.value[2],
18399
+ "aria-label": $q.lang.pagination.next
18365
18400
  }, props4.modelValue + 1)
18366
18401
  );
18367
18402
  }
@@ -18577,7 +18612,7 @@
18577
18612
  });
18578
18613
  onBeforeUnmount(() => {
18579
18614
  stop2();
18580
- observer !== void 0 && observer.disconnect();
18615
+ observer?.disconnect();
18581
18616
  mediaEl.onload = mediaEl.onloadstart = mediaEl.loadedmetadata = null;
18582
18617
  });
18583
18618
  return () => {
@@ -18765,10 +18800,10 @@
18765
18800
  set: set2,
18766
18801
  cancel,
18767
18802
  show(e) {
18768
- menuRef.value !== null && menuRef.value.show(e);
18803
+ menuRef.value?.show(e);
18769
18804
  },
18770
18805
  hide(e) {
18771
- menuRef.value !== null && menuRef.value.hide(e);
18806
+ menuRef.value?.hide(e);
18772
18807
  },
18773
18808
  updatePosition
18774
18809
  });
@@ -19064,7 +19099,7 @@
19064
19099
  timer2 = setTimeout(() => {
19065
19100
  timer2 = null;
19066
19101
  animating.value = false;
19067
- done && done();
19102
+ done?.();
19068
19103
  }, 300);
19069
19104
  }
19070
19105
  function updateScrollTarget() {
@@ -20026,7 +20061,7 @@
20026
20061
  delete el2.dataset.qVsAnchor;
20027
20062
  });
20028
20063
  const el = children[index];
20029
- if (el && el.dataset) {
20064
+ if (el?.dataset) {
20030
20065
  el.dataset.qVsAnchor = "";
20031
20066
  }
20032
20067
  });
@@ -20298,7 +20333,7 @@
20298
20333
  if (rangeChanged === true && contentEl !== null && contentEl !== activeElement && contentEl.contains(activeElement) === true) {
20299
20334
  contentEl.addEventListener("focusout", onBlurRefocusFn);
20300
20335
  setTimeout(() => {
20301
- contentEl !== null && contentEl.removeEventListener("focusout", onBlurRefocusFn);
20336
+ contentEl?.removeEventListener("focusout", onBlurRefocusFn);
20302
20337
  });
20303
20338
  }
20304
20339
  setOverflowAnchor(contentEl, toIndex - from);
@@ -20362,7 +20397,7 @@
20362
20397
  }
20363
20398
  }
20364
20399
  function onBlurRefocusFn() {
20365
- contentRef.value !== null && contentRef.value !== void 0 && contentRef.value.focus();
20400
+ contentRef.value?.focus();
20366
20401
  }
20367
20402
  function localResetVirtualScroll(toIndex, fullReset) {
20368
20403
  const defaultSize = 1 * virtualScrollItemSizeComputed.value;
@@ -20700,7 +20735,7 @@
20700
20735
  () => innerValue.value.map((opt) => getOptionLabel.value(opt)).join(", ")
20701
20736
  );
20702
20737
  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);
20738
+ const needsHtmlFn = computed(() => props4.optionsHtml === true ? () => true : (opt) => opt?.html === true);
20704
20739
  const valueAsHtml = computed(() => props4.displayValueHtml === true || props4.displayValue === void 0 && (props4.optionsHtml === true || innerValue.value.some(needsHtmlFn.value)));
20705
20740
  const tabindex = computed(() => state.focused.value === true ? props4.tabindex : -1);
20706
20741
  const comboboxAttrs = computed(() => {
@@ -20874,13 +20909,15 @@
20874
20909
  );
20875
20910
  hidePopup();
20876
20911
  }
20877
- targetRef.value !== null && targetRef.value.focus();
20912
+ targetRef.value?.focus();
20878
20913
  if (innerValue.value.length === 0 || isDeepEqual(getOptionValue.value(innerValue.value[0]), optValue) !== true) {
20879
20914
  emit("update:modelValue", props4.emitValue === true ? optValue : opt);
20880
20915
  }
20881
20916
  return;
20882
20917
  }
20883
- (hasDialog !== true || dialogFieldFocused.value === true) && state.focus();
20918
+ if (hasDialog !== true || dialogFieldFocused.value === true) {
20919
+ state.focus();
20920
+ }
20884
20921
  selectInputText();
20885
20922
  if (innerValue.value.length === 0) {
20886
20923
  const val = props4.emitValue === true ? optValue : opt;
@@ -21085,7 +21122,7 @@
21085
21122
  const fn = mode === "toggle" ? toggleOption : add;
21086
21123
  fn(val, mode === "add-unique");
21087
21124
  if (props4.multiple !== true) {
21088
- targetRef.value !== null && targetRef.value.focus();
21125
+ targetRef.value?.focus();
21089
21126
  hidePopup();
21090
21127
  }
21091
21128
  };
@@ -21135,6 +21172,7 @@
21135
21172
  }
21136
21173
  return [
21137
21174
  h("span", {
21175
+ class: "ellipsis",
21138
21176
  [valueAsHtml.value === true ? "innerHTML" : "textContent"]: ariaCurrentValue.value
21139
21177
  })
21140
21178
  ];
@@ -21330,7 +21368,7 @@
21330
21368
  }
21331
21369
  function onDialogFieldFocus(e) {
21332
21370
  stop(e);
21333
- targetRef.value !== null && targetRef.value.focus();
21371
+ targetRef.value?.focus();
21334
21372
  dialogFieldFocused.value = true;
21335
21373
  window.scrollTo(window.pageXOffset || window.scrollX || document.body.scrollLeft || 0, 0);
21336
21374
  }
@@ -21559,7 +21597,7 @@
21559
21597
  prevent(e);
21560
21598
  if (hasDialog !== true && menu.value === true) {
21561
21599
  closeMenu();
21562
- targetRef.value !== null && targetRef.value.focus();
21600
+ targetRef.value?.focus();
21563
21601
  return;
21564
21602
  }
21565
21603
  showPopup(e);
@@ -22508,7 +22546,7 @@
22508
22546
  });
22509
22547
  const ripple = computed(() => props4.stepper.headerNav !== true ? false : headerNav.value);
22510
22548
  function onActivate() {
22511
- blurRef.value !== null && blurRef.value.focus();
22549
+ blurRef.value?.focus();
22512
22550
  isActive.value === false && props4.goToPanel(props4.step.name);
22513
22551
  }
22514
22552
  function onKeyup2(e) {
@@ -22998,7 +23036,7 @@
22998
23036
  col = col.name;
22999
23037
  } else {
23000
23038
  const def = colList.value.find((def2) => def2.name === col);
23001
- if (def !== void 0 && def.sortOrder) {
23039
+ if (def?.sortOrder) {
23002
23040
  sortOrder = def.sortOrder;
23003
23041
  }
23004
23042
  }
@@ -23428,10 +23466,14 @@
23428
23466
  tableClass: [String, Array, Object],
23429
23467
  tableHeaderStyle: [String, Array, Object],
23430
23468
  tableHeaderClass: [String, Array, Object],
23469
+ tableRowStyleFn: Function,
23470
+ tableRowClassFn: Function,
23431
23471
  cardContainerClass: [String, Array, Object],
23432
23472
  cardContainerStyle: [String, Array, Object],
23433
23473
  cardStyle: [String, Array, Object],
23434
23474
  cardClass: [String, Array, Object],
23475
+ cardStyleFn: Function,
23476
+ cardClassFn: Function,
23435
23477
  hideBottom: Boolean,
23436
23478
  hideSelectedBanner: Boolean,
23437
23479
  hideNoData: Boolean,
@@ -23467,16 +23509,16 @@
23467
23509
  const cardDefaultClass = computed(
23468
23510
  () => " 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
23511
  );
23470
- const __containerClass = computed(
23512
+ const containerClass = computed(
23471
23513
  () => `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
23514
  );
23473
- const containerClass = computed(
23474
- () => __containerClass.value + (props4.loading === true ? " q-table--loading" : "")
23515
+ const rootContainerClass = computed(
23516
+ () => containerClass.value + (props4.loading === true ? " q-table--loading" : "")
23475
23517
  );
23476
23518
  watch(
23477
- () => props4.tableStyle + props4.tableClass + props4.tableHeaderStyle + props4.tableHeaderClass + __containerClass.value,
23519
+ () => props4.tableStyle + props4.tableClass + props4.tableHeaderStyle + props4.tableHeaderClass + containerClass.value,
23478
23520
  () => {
23479
- hasVirtScroll.value === true && virtScrollRef.value !== null && virtScrollRef.value.reset();
23521
+ hasVirtScroll.value === true && virtScrollRef.value?.reset();
23480
23522
  }
23481
23523
  );
23482
23524
  const {
@@ -23644,13 +23686,23 @@
23644
23686
  function getTBodyTR(row, bodySlot, pageIndex) {
23645
23687
  const key = getRowKey.value(row), selected = isRowSelected(key);
23646
23688
  if (bodySlot !== void 0) {
23689
+ const cfg = {
23690
+ key,
23691
+ row,
23692
+ pageIndex,
23693
+ __trClass: selected ? "selected" : ""
23694
+ };
23695
+ if (props4.tableRowStyleFn !== void 0) {
23696
+ cfg.__trStyle = props4.tableRowStyleFn(row);
23697
+ }
23698
+ if (props4.tableRowClassFn !== void 0) {
23699
+ const cls = props4.tableRowClassFn(row);
23700
+ if (cls) {
23701
+ cfg.__trClass = `${cls} ${cfg.__trClass}`;
23702
+ }
23703
+ }
23647
23704
  return bodySlot(
23648
- getBodyScope({
23649
- key,
23650
- row,
23651
- pageIndex,
23652
- __trClass: selected ? "selected" : ""
23653
- })
23705
+ getBodyScope(cfg)
23654
23706
  );
23655
23707
  }
23656
23708
  const bodyCell = slots["body-cell"], child = computedCols.value.map((col) => {
@@ -23696,6 +23748,15 @@
23696
23748
  emit("rowContextmenu", evt, row, pageIndex);
23697
23749
  };
23698
23750
  }
23751
+ if (props4.tableRowStyleFn !== void 0) {
23752
+ data.style = props4.tableRowStyleFn(row);
23753
+ }
23754
+ if (props4.tableRowClassFn !== void 0) {
23755
+ const cls = props4.tableRowClassFn(row);
23756
+ if (cls) {
23757
+ data.class[cls] = true;
23758
+ }
23759
+ }
23699
23760
  return h("tr", data, child);
23700
23761
  }
23701
23762
  function getTBody() {
@@ -23949,28 +24010,26 @@
23949
24010
  child.push(
23950
24011
  h("div", { class: "q-table__separator col" })
23951
24012
  );
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
- }
24013
+ hasOpts === true && child.push(
24014
+ h("div", { class: "q-table__control" }, [
24015
+ h("span", { class: "q-table__bottom-item" }, [
24016
+ props4.rowsPerPageLabel || $q.lang.table.recordsPerPage
24017
+ ]),
24018
+ h(QSelect_default, {
24019
+ class: "q-table__select inline q-table__bottom-item",
24020
+ color: props4.color,
24021
+ modelValue: rowsPerPage,
24022
+ options: computedRowsPerPageOptions.value,
24023
+ displayValue: rowsPerPage === 0 ? $q.lang.table.allRows : rowsPerPage,
24024
+ dark: isDark.value,
24025
+ borderless: true,
24026
+ dense: true,
24027
+ optionsDense: true,
24028
+ optionsCover: true,
24029
+ "onUpdate:modelValue": onPagSelection
24030
+ })
24031
+ ])
24032
+ );
23974
24033
  if (paginationSlot !== void 0) {
23975
24034
  control = paginationSlot(marginalsScope.value);
23976
24035
  } else {
@@ -23995,6 +24054,7 @@
23995
24054
  ...btnProps,
23996
24055
  icon: navIcon.value[0],
23997
24056
  disable: isFirstPage.value,
24057
+ ariaLabel: $q.lang.pagination.first,
23998
24058
  onClick: firstPage
23999
24059
  })
24000
24060
  );
@@ -24004,6 +24064,7 @@
24004
24064
  ...btnProps,
24005
24065
  icon: navIcon.value[1],
24006
24066
  disable: isFirstPage.value,
24067
+ ariaLabel: $q.lang.pagination.prev,
24007
24068
  onClick: prevPage
24008
24069
  }),
24009
24070
  h(QBtn_default, {
@@ -24011,6 +24072,7 @@
24011
24072
  ...btnProps,
24012
24073
  icon: navIcon.value[2],
24013
24074
  disable: isLastPage.value,
24075
+ ariaLabel: $q.lang.pagination.next,
24014
24076
  onClick: nextPage
24015
24077
  })
24016
24078
  );
@@ -24020,6 +24082,7 @@
24020
24082
  ...btnProps,
24021
24083
  icon: navIcon.value[3],
24022
24084
  disable: isLastPage.value,
24085
+ ariaLabel: $q.lang.pagination.last,
24023
24086
  onClick: lastPage
24024
24087
  })
24025
24088
  );
@@ -24071,6 +24134,15 @@
24071
24134
  ],
24072
24135
  style: props4.cardStyle
24073
24136
  };
24137
+ if (props4.cardStyleFn !== void 0) {
24138
+ data.style = [data.style, props4.cardStyleFn(scope.row)];
24139
+ }
24140
+ if (props4.cardClassFn !== void 0) {
24141
+ const cls = props4.cardClassFn(scope.row);
24142
+ if (cls) {
24143
+ data.class[0] += ` ${cls}`;
24144
+ }
24145
+ }
24074
24146
  if (props4.onRowClick !== void 0 || props4.onRowDblclick !== void 0 || props4.onRowContextmenu !== void 0) {
24075
24147
  data.class[0] += " cursor-pointer";
24076
24148
  if (props4.onRowClick !== void 0) {
@@ -24132,7 +24204,7 @@
24132
24204
  });
24133
24205
  return () => {
24134
24206
  const child = [getTopDiv()];
24135
- const data = { ref: rootRef, class: containerClass.value };
24207
+ const data = { ref: rootRef, class: rootContainerClass.value };
24136
24208
  if (props4.grid === true) {
24137
24209
  child.push(getGridHeader());
24138
24210
  } else {
@@ -24166,7 +24238,10 @@
24166
24238
  const classes = computed(
24167
24239
  () => "q-tr" + (props4.props === void 0 || props4.props.header === true ? "" : " " + props4.props.__trClass) + (props4.noHover === true ? " q-tr--no-hover" : "")
24168
24240
  );
24169
- return () => h("tr", { class: classes.value }, hSlot(slots.default));
24241
+ return () => h("tr", {
24242
+ style: props4.props?.__trStyle,
24243
+ class: classes.value
24244
+ }, hSlot(slots.default));
24170
24245
  }
24171
24246
  });
24172
24247
 
@@ -24370,7 +24445,7 @@
24370
24445
  }
24371
24446
  const pos = [];
24372
24447
  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;
24448
+ const actualVal = val + offset2, disable = values?.includes(actualVal) === false, label = view.value === "hour" && val === 0 ? computedFormat24h.value === true ? "00" : "12" : val;
24374
24449
  pos.push({ val: actualVal, index, disable, label });
24375
24450
  }
24376
24451
  return pos;
@@ -25224,7 +25299,7 @@
25224
25299
  node[props4.childrenKey] = Array.isArray(children) === true ? children : [];
25225
25300
  nextTick(() => {
25226
25301
  const localMeta = meta.value[key];
25227
- if (localMeta && localMeta.isParent === true) {
25302
+ if (localMeta?.isParent === true) {
25228
25303
  localSetExpanded(key, true);
25229
25304
  }
25230
25305
  });
@@ -25449,8 +25524,7 @@
25449
25524
  ]);
25450
25525
  }
25451
25526
  function blur(key) {
25452
- const blurTarget = blurTargets[key];
25453
- blurTarget && blurTarget.focus();
25527
+ blurTargets[key]?.focus();
25454
25528
  }
25455
25529
  function onClick(node, meta2, e, keyboard) {
25456
25530
  keyboard !== true && meta2.selectable !== false && blur(meta2.key);
@@ -26428,7 +26502,7 @@
26428
26502
  elFrom.qMorphCancel = () => {
26429
26503
  cancelStatus = true;
26430
26504
  elFromClone.remove();
26431
- elFromTween !== void 0 && elFromTween.remove();
26505
+ elFromTween?.remove();
26432
26506
  options.hideFromClone === true && elFromClone.classList.remove("q-morph--internal");
26433
26507
  elFrom.qMorphCancel = void 0;
26434
26508
  };
@@ -26453,7 +26527,7 @@
26453
26527
  elTo.qMorphCancel = () => {
26454
26528
  cancelStatus = true;
26455
26529
  elFromClone.remove();
26456
- elFromTween !== void 0 && elFromTween.remove();
26530
+ elFromTween?.remove();
26457
26531
  options.hideFromClone === true && elFromClone.classList.remove("q-morph--internal");
26458
26532
  options.keepToClone !== true && elTo.classList.remove("q-morph--internal");
26459
26533
  elFrom.qMorphCancel = void 0;
@@ -26609,10 +26683,12 @@
26609
26683
  elTo.style.cssText = elToStyleSaved;
26610
26684
  elTo.className = elToClassSaved;
26611
26685
  }
26612
- elToClone.parentNode === elToParent && elToParent.insertBefore(elTo, elToClone);
26686
+ if (elToClone.parentNode === elToParent) {
26687
+ elToParent.insertBefore(elTo, elToClone);
26688
+ }
26613
26689
  elFromClone.remove();
26614
26690
  elToClone.remove();
26615
- elFromTween !== void 0 && elFromTween.remove();
26691
+ elFromTween?.remove();
26616
26692
  cancel = () => false;
26617
26693
  elFrom.qMorphCancel = void 0;
26618
26694
  elTo.qMorphCancel = void 0;
@@ -26744,9 +26820,9 @@
26744
26820
  delay: options.delay
26745
26821
  });
26746
26822
  const cleanup = (abort) => {
26747
- animationFromClone !== void 0 && animationFromClone.cancel();
26748
- animationFromTween !== void 0 && animationFromTween.cancel();
26749
- animationToClone !== void 0 && animationToClone.cancel();
26823
+ animationFromClone?.cancel();
26824
+ animationFromTween?.cancel();
26825
+ animationToClone?.cancel();
26750
26826
  animationTo.cancel();
26751
26827
  animationTo.removeEventListener("finish", cleanup);
26752
26828
  animationTo.removeEventListener("cancel", cleanup);
@@ -26777,9 +26853,9 @@
26777
26853
  return true;
26778
26854
  }
26779
26855
  endElementTo = endElementTo !== true;
26780
- animationFromClone !== void 0 && animationFromClone.reverse();
26781
- animationFromTween !== void 0 && animationFromTween.reverse();
26782
- animationToClone !== void 0 && animationToClone.reverse();
26856
+ animationFromClone?.reverse();
26857
+ animationFromTween?.reverse();
26858
+ animationToClone?.reverse();
26783
26859
  animationTo.reverse();
26784
26860
  return true;
26785
26861
  };
@@ -27031,7 +27107,7 @@
27031
27107
  },
27032
27108
  ...to.opts,
27033
27109
  onEnd(dir, aborted) {
27034
- to.opts.onEnd !== void 0 && to.opts.onEnd(dir, aborted);
27110
+ to.opts.onEnd?.(dir, aborted);
27035
27111
  if (aborted === true) return;
27036
27112
  from.animating = false;
27037
27113
  to.animating = false;
@@ -27148,7 +27224,7 @@
27148
27224
  if (index !== -1) {
27149
27225
  group.queue = group.queue.filter((item) => item !== ctx);
27150
27226
  if (group.queue.length === 0) {
27151
- group.cancel !== void 0 && group.cancel();
27227
+ group.cancel?.();
27152
27228
  delete morphGroups[ctx.group];
27153
27229
  }
27154
27230
  }
@@ -27172,7 +27248,7 @@
27172
27248
  };
27173
27249
  function update3(el, ctx, value2) {
27174
27250
  ctx.handler = value2;
27175
- ctx.observer !== void 0 && ctx.observer.disconnect();
27251
+ ctx.observer?.disconnect();
27176
27252
  ctx.observer = new MutationObserver((list) => {
27177
27253
  if (typeof ctx.handler === "function") {
27178
27254
  const res = ctx.handler(list);
@@ -27186,7 +27262,7 @@
27186
27262
  function destroy2(el) {
27187
27263
  const ctx = el.__qmutation;
27188
27264
  if (ctx !== void 0) {
27189
- ctx.observer !== void 0 && ctx.observer.disconnect();
27265
+ ctx.observer?.disconnect();
27190
27266
  delete el.__qmutation;
27191
27267
  }
27192
27268
  }
@@ -27375,7 +27451,7 @@
27375
27451
  },
27376
27452
  end(evt) {
27377
27453
  cleanEvt(ctx, "temp");
27378
- ctx.styleCleanup !== void 0 && ctx.styleCleanup(ctx.triggered);
27454
+ ctx.styleCleanup?.(ctx.triggered);
27379
27455
  if (ctx.triggered === true) {
27380
27456
  evt !== void 0 && stopAndPrevent(evt);
27381
27457
  } else if (ctx.timer !== void 0) {
@@ -27417,7 +27493,7 @@
27417
27493
  cleanEvt(ctx, "main");
27418
27494
  cleanEvt(ctx, "temp");
27419
27495
  ctx.timer !== void 0 && clearTimeout(ctx.timer);
27420
- ctx.styleCleanup !== void 0 && ctx.styleCleanup();
27496
+ ctx.styleCleanup?.();
27421
27497
  delete el.__qtouchhold;
27422
27498
  }
27423
27499
  }
@@ -27559,8 +27635,8 @@
27559
27635
  },
27560
27636
  end(evt) {
27561
27637
  if (ctx.event === void 0) return;
27562
- ctx.styleCleanup !== void 0 && ctx.styleCleanup(true);
27563
- evt !== void 0 && ctx.event.repeatCount > 0 && stopAndPrevent(evt);
27638
+ ctx.styleCleanup?.(true);
27639
+ if (evt !== void 0 && ctx.event.repeatCount > 0) stopAndPrevent(evt);
27564
27640
  cleanEvt(ctx, "temp");
27565
27641
  if (ctx.timer !== void 0) {
27566
27642
  clearTimeout(ctx.timer);
@@ -27600,7 +27676,7 @@
27600
27676
  ctx.timer !== void 0 && clearTimeout(ctx.timer);
27601
27677
  cleanEvt(ctx, "main");
27602
27678
  cleanEvt(ctx, "temp");
27603
- ctx.styleCleanup !== void 0 && ctx.styleCleanup();
27679
+ ctx.styleCleanup?.();
27604
27680
  delete el.__qtouchrepeat;
27605
27681
  }
27606
27682
  }
@@ -27964,12 +28040,12 @@
27964
28040
  const dialogRef = ref(null);
27965
28041
  const el = createGlobalNode(false, "dialog");
27966
28042
  const applyState = (cmd) => {
27967
- if (dialogRef.value !== null && dialogRef.value[cmd] !== void 0) {
28043
+ if (dialogRef.value?.[cmd] !== void 0) {
27968
28044
  dialogRef.value[cmd]();
27969
28045
  return;
27970
28046
  }
27971
28047
  const target2 = vm2.$.subTree;
27972
- if (target2 && target2.component) {
28048
+ if (target2?.component) {
27973
28049
  if (target2.component.proxy && target2.component.proxy[cmd]) {
27974
28050
  target2.component.proxy[cmd]();
27975
28051
  return;
@@ -28454,7 +28530,7 @@
28454
28530
  };
28455
28531
  var defaults = { ...originalDefaults };
28456
28532
  function registerProps(opts) {
28457
- if (opts && opts.group !== void 0 && activeGroups[opts.group] !== void 0) {
28533
+ if (opts?.group !== void 0 && activeGroups[opts.group] !== void 0) {
28458
28534
  return Object.assign(activeGroups[opts.group], opts);
28459
28535
  }
28460
28536
  const newProps = isObject(opts) === true && opts.ignoreDefaults === true ? { ...originalDefaults, ...opts } : { ...defaults, ...opts };
@@ -28897,7 +28973,7 @@
28897
28973
  const actions = (Array.isArray(config.actions) === true ? config.actions : []).concat(
28898
28974
  config.ignoreDefaults !== true && Array.isArray(defaults2.actions) === true ? defaults2.actions : []
28899
28975
  ).concat(
28900
- notifTypes[config.type] !== void 0 && Array.isArray(notifTypes[config.type].actions) === true ? notifTypes[config.type].actions : []
28976
+ Array.isArray(notifTypes[config.type]?.actions) === true ? notifTypes[config.type].actions : []
28901
28977
  );
28902
28978
  const { closeBtn } = notif;
28903
28979
  closeBtn && actions.push({
@@ -29549,9 +29625,9 @@
29549
29625
  function openWindow(url, reject, windowFeatures) {
29550
29626
  let open2 = window.open;
29551
29627
  if (Platform_default.is.cordova === true) {
29552
- if (cordova !== void 0 && cordova.InAppBrowser !== void 0 && cordova.InAppBrowser.open !== void 0) {
29628
+ if (cordova?.InAppBrowser?.open !== void 0) {
29553
29629
  open2 = cordova.InAppBrowser.open;
29554
- } else if (navigator !== void 0 && navigator.app !== void 0) {
29630
+ } else if (navigator?.app !== void 0) {
29555
29631
  return navigator.app.loadUrl(url, {
29556
29632
  openExternal: true
29557
29633
  });
@@ -29562,7 +29638,7 @@
29562
29638
  Platform_default.is.desktop && win.focus();
29563
29639
  return win;
29564
29640
  } else {
29565
- reject && reject();
29641
+ reject?.();
29566
29642
  }
29567
29643
  }
29568
29644
  var open_url_default = (url, reject, windowFeatures) => {
@@ -29759,7 +29835,7 @@
29759
29835
  console.error("[ Quasar ] Vue is required to run. Please add a script tag for it before loading Quasar.");
29760
29836
  }
29761
29837
  window.Quasar = {
29762
- version: "2.17.7",
29838
+ version: "2.18.1",
29763
29839
  install(app2, opts) {
29764
29840
  install_quasar_default(app2, {
29765
29841
  components: components_exports,