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
package/lang/ur-PK.js ADDED
@@ -0,0 +1,118 @@
1
+ const days = 'اتوار_پیر_منگل_بدھ_جمعرات_جمعہ_ہفتہ'.split('_')
2
+ const daysShort = 'ات_پیر_منگ_بدھ_جمعر_جمعہ_ہف'.split('_')
3
+ // You can refine abbreviations if needed; e.g.
4
+ // 'ات_پیر_من_بد_جم_جمع_ہف' or any shorter versions that make sense.
5
+
6
+ const months = 'جنوری_فروری_مارچ_اپریل_مئی_جون_جولائی_اگست_ستمبر_اکتوبر_نومبر_دسمبر'.split('_')
7
+ // Short forms below can also be adjusted if you prefer more concise abbreviations.
8
+ const monthsShort = 'جن._فر._مار._اپر._مئی_جون_جول._اگ._ستم._اکت._نوم._دسم.'.split('_')
9
+
10
+ export default {
11
+ isoName: 'ur-PK',
12
+ nativeName: 'اردو (پاکستان)',
13
+ rtl: true,
14
+ label: {
15
+ clear: 'صاف کریں',
16
+ ok: 'ٹھیک ہے',
17
+ cancel: 'منسوخ کریں',
18
+ close: 'بند کریں',
19
+ set: 'سیٹ کریں',
20
+ select: 'منتخب کریں',
21
+ reset: 'ری سیٹ کریں',
22
+ remove: 'ہٹا دیں',
23
+ update: 'اپ ڈیٹ کریں',
24
+ create: 'بنائیں',
25
+ search: 'تلاش کریں',
26
+ filter: 'فلٹر',
27
+ refresh: 'تازہ کریں',
28
+ expand: label => (label ? `"${ label }" کو وسیع کریں` : 'وسیع کریں'),
29
+ collapse: label => (label ? `"${ label }" کو سکیڑیں` : 'سکیڑیں')
30
+ },
31
+ date: {
32
+ days,
33
+ daysShort,
34
+ months,
35
+ monthsShort,
36
+ // Shown on the Quasar date picker’s title bar; you can adjust the format if needed
37
+ headerTitle: (date, model) =>
38
+ `${ days[ date.getDay() ] }، ${ model.day } ${ months[ model.month - 1 ] }`,
39
+ firstDayOfWeek: 0, // 0-6; 0 = اتوار, 1 = پیر, etc.
40
+ format24h: true,
41
+ pluralDay: 'دن',
42
+ prevMonth: 'پچھلا مہینہ',
43
+ nextMonth: 'اگلے مہینے',
44
+ prevYear: 'پچھلے سال',
45
+ nextYear: 'اگلے سال',
46
+ today: 'آج',
47
+ prevRangeYears: range => `پچھلا ${ range } سال`,
48
+ nextRangeYears: range => `اگلا ${ range } سال`
49
+ },
50
+ table: {
51
+ noData: 'کوئی ڈیٹا دستیاب نہیں',
52
+ noResults: 'کوئی نتیجہ نہیں ملا',
53
+ loading: 'لوڈ ہو رہا ہے...',
54
+ selectedRecords: rows =>
55
+ rows === 0
56
+ ? 'کوئی ریکارڈ منتخب نہیں ہوا'
57
+ : `${ rows } ریکارڈ منتخب ہوئے`,
58
+ recordsPerPage: 'ریکارڈز فی صفحہ:',
59
+ allRows: 'سب',
60
+ pagination: (start, end, total) => `${ start }-${ end } / ${ total }`,
61
+ columns: 'کالم'
62
+ },
63
+ pagination: {
64
+ first: 'لومړی مخ',
65
+ prev: 'مخکینۍ پاڼه',
66
+ next: 'بل مخ',
67
+ last: 'وروستۍ پاڼه'
68
+ },
69
+ editor: {
70
+ url: 'یو آر ایل',
71
+ bold: 'موٹا',
72
+ italic: 'ترچھا',
73
+ strikethrough: 'کاٹا ہوا',
74
+ underline: 'انڈر لائن',
75
+ unorderedList: 'غیر ترتیب شدہ فہرست',
76
+ orderedList: 'ترتیب شدہ فہرست',
77
+ subscript: 'ذیلی',
78
+ superscript: 'بالائی',
79
+ hyperlink: 'ہائپر لنک',
80
+ toggleFullscreen: 'مکمل اسکرین',
81
+ quote: 'اقتباس',
82
+ left: 'بائیں جانب',
83
+ center: 'درمیان میں',
84
+ right: 'دائیں جانب',
85
+ justify: 'برابر پھیلائیں',
86
+ print: 'پرنٹ کریں',
87
+ outdent: 'انڈینٹ کم کریں',
88
+ indent: 'انڈینٹ زیادہ کریں',
89
+ removeFormat: 'فارمیٹنگ ختم کریں',
90
+ formatting: 'فارمیٹنگ',
91
+ fontSize: 'فونٹ سائز',
92
+ align: 'سیدھ کریں',
93
+ hr: 'افقی لکیر داخل کریں',
94
+ undo: 'پچھلا قدم',
95
+ redo: 'دوبارہ کریں',
96
+ heading1: 'سرخی 1',
97
+ heading2: 'سرخی 2',
98
+ heading3: 'سرخی 3',
99
+ heading4: 'سرخی 4',
100
+ heading5: 'سرخی 5',
101
+ heading6: 'سرخی 6',
102
+ paragraph: 'پیراگراف',
103
+ code: 'کوڈ',
104
+ size1: 'بہت چھوٹا',
105
+ size2: 'چھوٹا',
106
+ size3: 'معمولی',
107
+ size4: 'درمیانہ',
108
+ size5: 'بڑا',
109
+ size6: 'بہت بڑا',
110
+ size7: 'سب سے بڑا',
111
+ defaultFont: 'طے شدہ فونٹ',
112
+ viewSource: 'ماخذ دیکھیں'
113
+ },
114
+ tree: {
115
+ noNodes: 'کوئی نوڈ دستیاب نہیں',
116
+ noResults: 'کوئی نوڈ نہیں ملا'
117
+ }
118
+ }
package/lang/uz-Cyrl.js CHANGED
@@ -28,7 +28,14 @@ export default {
28
28
  monthsShort: 'Ян_Фев_Март_Апр_Май_Июнь_Июль_Авг_Сен_Окт_Ноя_Дек'.split('_'),
29
29
  firstDayOfWeek: 1, // 0-6, 0 - Якшанба, 1 Душанба, ...
30
30
  format24h: true,
31
- pluralDay: 'Кунлар'
31
+ pluralDay: 'Кунлар',
32
+ prevMonth: 'Олдинги ой',
33
+ nextMonth: 'Кейинги ой',
34
+ prevYear: 'Ўтган йили',
35
+ nextYear: 'Кейинги йил',
36
+ today: 'Бугун',
37
+ prevRangeYears: range => `Олдинги ${ range } Йиллар`,
38
+ nextRangeYears: range => `Кейинги ${ range } Йиллар`
32
39
  },
33
40
  table: {
34
41
  noData: 'Маълумот топилмади',
@@ -43,6 +50,12 @@ export default {
43
50
  pagination: (start, end, total) => start + '-' + end + ' жами ' + total,
44
51
  columns: 'Устунлар'
45
52
  },
53
+ pagination: {
54
+ first: 'Биринчи саҳифа',
55
+ prev: 'Олдинги саҳифа',
56
+ next: 'Кейинги саҳифа',
57
+ last: 'Сўнгги саҳифа'
58
+ },
46
59
  editor: {
47
60
  url: 'УРЛ',
48
61
  bold: 'Қалин',
package/lang/uz-Latn.js CHANGED
@@ -32,7 +32,14 @@ export default {
32
32
  ),
33
33
  firstDayOfWeek: 1, // 0-6, 0 - Yakshanba, 1 Dushanba, ...
34
34
  format24h: true,
35
- pluralDay: 'Kunlar'
35
+ pluralDay: 'Kunlar',
36
+ prevMonth: 'Oldingi oy',
37
+ nextMonth: 'Keyingi oy',
38
+ prevYear: 'O\'tgan yili',
39
+ nextYear: 'Keyingi yil',
40
+ today: 'Bugun',
41
+ prevRangeYears: range => `Oldingi ${ range } Yillar`,
42
+ nextRangeYears: range => `Keyingi ${ range } Yillar`
36
43
  },
37
44
  table: {
38
45
  noData: 'Ma\'lumotlar topilmadi',
@@ -47,6 +54,12 @@ export default {
47
54
  pagination: (start, end, total) => start + '-' + end + ' jami ' + total,
48
55
  columns: 'Ustunlar'
49
56
  },
57
+ pagination: {
58
+ first: 'Birinchi sahifa',
59
+ prev: 'Oldingi sahifa',
60
+ next: 'Keyingi sahifa',
61
+ last: 'So\'nggi sahifa'
62
+ },
50
63
  editor: {
51
64
  url: 'URL',
52
65
  bold: 'Qalin',
package/lang/vi.js CHANGED
@@ -25,7 +25,14 @@ export default {
25
25
  monthsShort: 'Th1_Th2_Th3_Th4_Th5_Th6_Th7_Th8_Th9_Th10_Th11_Th12'.split('_'),
26
26
  firstDayOfWeek: 1, // 0-6, 0 - Sunday, 1 Monday, ...
27
27
  format24h: false,
28
- pluralDay: 'ngày'
28
+ pluralDay: 'ngày',
29
+ prevMonth: 'Tháng trước',
30
+ nextMonth: 'Tháng sau',
31
+ prevYear: 'Năm trước',
32
+ nextYear: 'Năm sau',
33
+ today: 'Hôm nay',
34
+ prevRangeYears: range => `Trước ${ range } năm`,
35
+ nextRangeYears: range => `Tiếp theo ${ range } năm`
29
36
  },
30
37
  table: {
31
38
  noData: 'Không có dữ liệu',
@@ -41,6 +48,12 @@ export default {
41
48
  pagination: (start, end, total) => start + '-' + end + ' của ' + total,
42
49
  columns: 'Cột'
43
50
  },
51
+ pagination: {
52
+ first: 'Trang đầu tiên',
53
+ prev: 'Trang trước',
54
+ next: 'Trang tiếp theo',
55
+ last: 'Trang cuối cùng'
56
+ },
44
57
  editor: {
45
58
  url: 'URL',
46
59
  bold: 'Đậm',
package/lang/zh-CN.js CHANGED
@@ -28,7 +28,14 @@ export default {
28
28
  }).format(date),
29
29
  firstDayOfWeek: 0, // 0-6, 0 - Sunday, 1 Monday, ...
30
30
  format24h: false,
31
- pluralDay: '天'
31
+ pluralDay: '天',
32
+ prevMonth: '上个月',
33
+ nextMonth: '下个月',
34
+ prevYear: '上一年',
35
+ nextYear: '下一年',
36
+ today: '今天',
37
+ prevRangeYears: range => `以前${ range }年`,
38
+ nextRangeYears: range => `接下来${ range }年`
32
39
  },
33
40
  table: {
34
41
  noData: '没有可用数据',
@@ -40,6 +47,12 @@ export default {
40
47
  pagination: (start, end, total) => start + '-' + end + ' / ' + total,
41
48
  columns: '列'
42
49
  },
50
+ pagination: {
51
+ first: '第一页',
52
+ prev: '上一页',
53
+ next: '下一页',
54
+ last: '最后一页'
55
+ },
43
56
  editor: {
44
57
  url: 'URL',
45
58
  bold: '粗体',
package/lang/zh-TW.js CHANGED
@@ -28,7 +28,14 @@ export default {
28
28
  }).format(date),
29
29
  firstDayOfWeek: 0, // 0-6, 0 - Sunday, 1 Monday, ...
30
30
  format24h: false,
31
- pluralDay: '日'
31
+ pluralDay: '日',
32
+ prevMonth: '上个月',
33
+ nextMonth: '下个月',
34
+ prevYear: '上一年',
35
+ nextYear: '下一年',
36
+ today: '今天',
37
+ prevRangeYears: range => `以前${ range }年`,
38
+ nextRangeYears: range => `接下来${ range }年`
32
39
  },
33
40
  table: {
34
41
  noData: '沒有資料',
@@ -40,6 +47,12 @@ export default {
40
47
  pagination: (start, end, total) => start + '-' + end + ' 列,共 ' + total + ' 列',
41
48
  columns: '欄位'
42
49
  },
50
+ pagination: {
51
+ first: '首頁',
52
+ prev: '上一頁',
53
+ next: '下一頁',
54
+ last: '最後一頁'
55
+ },
43
56
  editor: {
44
57
  url: '網址',
45
58
  bold: '粗體',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "quasar",
3
- "version": "2.17.7",
3
+ "version": "2.18.1",
4
4
  "description": "Build high-performance VueJS user interfaces (SPA, PWA, SSR, Mobile and Desktop) in record time",
5
5
  "type": "module",
6
6
  "module": "dist/quasar.client.js",
@@ -64,7 +64,7 @@
64
64
  "cross-env": "^7.0.3",
65
65
  "cssnano": "^7.0.6",
66
66
  "diff": "^5.2.0",
67
- "esbuild": "^0.24.0",
67
+ "esbuild": "^0.25.0",
68
68
  "eslint": "^8.57.1",
69
69
  "fs-extra": "^11.2.0",
70
70
  "kolorist": "^1.8.0",
@@ -76,8 +76,8 @@
76
76
  "tinyglobby": "^0.2.10",
77
77
  "typescript": "^5.6.2",
78
78
  "vue": "^3.5.5",
79
- "@quasar/extras": "1.16.15",
80
- "eslint-config-quasar": "0.0.1"
79
+ "eslint-config-quasar": "0.0.1",
80
+ "@quasar/extras": "1.16.17"
81
81
  },
82
82
  "vetur": {
83
83
  "tags": "dist/vetur/quasar-tags.json",
@@ -55,13 +55,13 @@ export default createComponent({
55
55
 
56
56
  const
57
57
  child = [],
58
- len = vnodes.filter(c => c.type !== void 0 && c.type.name === 'QBreadcrumbsEl').length,
58
+ len = vnodes.filter(c => c.type?.name === 'QBreadcrumbsEl').length,
59
59
  separator = slots.separator !== void 0
60
60
  ? slots.separator
61
61
  : () => props.separator
62
62
 
63
63
  vnodes.forEach(comp => {
64
- if (comp.type !== void 0 && comp.type.name === 'QBreadcrumbsEl') {
64
+ if (comp.type?.name === 'QBreadcrumbsEl') {
65
65
  const middle = els < len
66
66
  const disabled = comp.props !== null && disabledValues.includes(comp.props.disable)
67
67
  const cls = (middle === true ? '' : ' q-breadcrumbs--last')
@@ -130,12 +130,12 @@ export default createComponent({
130
130
  // required for iOS and desktop Safari
131
131
  && el.contains(rootRef.value) === false
132
132
  ) {
133
- rootRef.value.focus()
133
+ e.qAvoidFocus !== true && rootRef.value.focus()
134
134
 
135
135
  const onClickCleanup = () => {
136
136
  document.removeEventListener('keydown', stopAndPrevent, true)
137
137
  document.removeEventListener('keyup', onClickCleanup, passiveCapture)
138
- rootRef.value !== null && rootRef.value.removeEventListener('blur', onClickCleanup, passiveCapture)
138
+ rootRef.value?.removeEventListener('blur', onClickCleanup, passiveCapture)
139
139
  }
140
140
 
141
141
  document.addEventListener('keydown', stopAndPrevent, true)
@@ -158,7 +158,7 @@ export default createComponent({
158
158
 
159
159
  if (e.defaultPrevented !== true) {
160
160
  // focus external button if the focus helper was focused before
161
- rootRef.value.focus()
161
+ e.qAvoidFocus !== true && rootRef.value.focus()
162
162
 
163
163
  keyboardTarget = rootRef.value
164
164
  rootRef.value.classList.add('q-btn--active')
@@ -218,12 +218,11 @@ export default createComponent({
218
218
 
219
219
  // needed for IE (because it emits blur when focusing button from focus helper)
220
220
  if (
221
- e !== void 0
222
- && e.type === 'blur'
221
+ e?.type === 'blur'
223
222
  && document.activeElement === rootRef.value
224
223
  ) return
225
224
 
226
- if (e !== void 0 && e.type === 'keyup') {
225
+ if (e?.type === 'keyup') {
227
226
  if (keyboardTarget === rootRef.value && isKeyCode(e, [ 13, 32 ]) === true) {
228
227
  // for click trigger
229
228
  const evt = new MouseEvent('click', e)
@@ -272,11 +271,11 @@ export default createComponent({
272
271
 
273
272
  if (keyboardTarget === rootRef.value) {
274
273
  document.removeEventListener('keyup', onPressEnd, true)
275
- rootRef.value !== null && rootRef.value.removeEventListener('blur', onPressEnd, passiveCapture)
274
+ rootRef.value?.removeEventListener('blur', onPressEnd, passiveCapture)
276
275
  keyboardTarget = null
277
276
  }
278
277
 
279
- rootRef.value !== null && rootRef.value.classList.remove('q-btn--active')
278
+ rootRef.value?.classList.remove('q-btn--active')
280
279
  }
281
280
 
282
281
  function onLoadingEvt (evt) {
@@ -41,8 +41,11 @@ export default createComponent({
41
41
 
42
42
  cover: Boolean,
43
43
  persistent: Boolean,
44
+ noEscDismiss: Boolean,
44
45
  noRouteDismiss: Boolean,
45
46
  autoClose: Boolean,
47
+ noRefocus: Boolean,
48
+ noFocus: Boolean,
46
49
 
47
50
  menuAnchor: {
48
51
  type: String,
@@ -102,7 +105,7 @@ export default createComponent({
102
105
  const btnProps = computed(() => passBtnProps(props))
103
106
 
104
107
  watch(() => props.modelValue, val => {
105
- menuRef.value !== null && menuRef.value[ val ? 'show' : 'hide' ]()
108
+ menuRef.value?.[ val ? 'show' : 'hide' ]()
106
109
  })
107
110
 
108
111
  watch(() => props.split, hide)
@@ -138,15 +141,15 @@ export default createComponent({
138
141
  }
139
142
 
140
143
  function toggle (evt) {
141
- menuRef.value !== null && menuRef.value.toggle(evt)
144
+ menuRef.value?.toggle(evt)
142
145
  }
143
146
 
144
147
  function show (evt) {
145
- menuRef.value !== null && menuRef.value.show(evt)
148
+ menuRef.value?.show(evt)
146
149
  }
147
150
 
148
151
  function hide (evt) {
149
- menuRef.value !== null && menuRef.value.hide(evt)
152
+ menuRef.value?.hide(evt)
150
153
  }
151
154
 
152
155
  // expose public methods
@@ -175,8 +178,11 @@ export default createComponent({
175
178
  cover: props.cover,
176
179
  fit: true,
177
180
  persistent: props.persistent,
181
+ noEscDismiss: props.noEscDismiss,
178
182
  noRouteDismiss: props.noRouteDismiss,
179
183
  autoClose: props.autoClose,
184
+ noFocus: props.noFocus,
185
+ noRefocus: props.noRefocus,
180
186
  anchor: props.menuAnchor,
181
187
  self: props.menuSelf,
182
188
  offset: props.menuOffset,
@@ -73,6 +73,13 @@
73
73
  "category": "behavior"
74
74
  },
75
75
 
76
+ "no-esc-dismiss": {
77
+ "type": "Boolean",
78
+ "desc": "User cannot dismiss the popup by hitting ESC key; No need to set it if 'persistent' prop is also set",
79
+ "category": "behavior",
80
+ "addedIn": "v2.18"
81
+ },
82
+
76
83
  "no-route-dismiss": {
77
84
  "type": "Boolean",
78
85
  "desc": "Changing route app won't dismiss the popup; No need to set it if 'persistent' prop is also set",
@@ -85,6 +92,20 @@
85
92
  "category": "behavior"
86
93
  },
87
94
 
95
+ "no-refocus": {
96
+ "type": "Boolean",
97
+ "desc": "(Accessibility) When the dropdown gets hidden, do not refocus on the DOM element that previously had focus",
98
+ "category": "behavior",
99
+ "addedIn": "v2.18"
100
+ },
101
+
102
+ "no-focus": {
103
+ "type": "Boolean",
104
+ "desc": "(Accessibility) When the dropdown gets shown, do not switch focus on it",
105
+ "category": "behavior",
106
+ "addedIn": "v2.18"
107
+ },
108
+
88
109
  "menu-anchor": {
89
110
  "type": "String",
90
111
  "desc": "Two values setting the starting position or anchor point of the menu relative to its target",
@@ -18,16 +18,20 @@
18
18
  .q-chip__icon
19
19
  color: inherit
20
20
 
21
- &--outline
22
- background: transparent !important
23
- border: 1px solid currentColor
24
-
25
21
  .q-avatar
26
22
  font-size: $chip-avatar-font-size
27
23
  margin-left: -.45em
28
24
  margin-right: .2em
29
25
  border-radius: 16px
30
26
 
27
+ &--outline
28
+ background: transparent !important
29
+ border: 1px solid currentColor
30
+
31
+ .q-avatar
32
+ // half padding and border width:
33
+ margin-left: calc(-.45em - 1px)
34
+
31
35
  &--selected
32
36
  .q-avatar
33
37
  display: none
@@ -340,7 +340,7 @@ export default createComponent({
340
340
 
341
341
  updateModel(rgb, change)
342
342
 
343
- if (evt !== void 0 && change !== true && evt.target.selectionEnd !== void 0) {
343
+ if (change !== true && evt?.target.selectionEnd !== void 0) {
344
344
  const index = evt.target.selectionEnd
345
345
  nextTick(() => {
346
346
  evt.target.setSelectionRange(index, index)
@@ -906,7 +906,7 @@ export default createComponent({
906
906
 
907
907
  function toggleDate (date, monthHash) {
908
908
  const month = daysMap.value[ monthHash ]
909
- const fn = month !== void 0 && month.includes(date.day) === true
909
+ const fn = month?.includes(date.day) === true
910
910
  ? removeFromModel
911
911
  : addToModel
912
912
 
@@ -1136,6 +1136,7 @@ export default createComponent({
1136
1136
  props.todayBtn === true ? h(QBtn, {
1137
1137
  class: 'q-date__header-today self-start',
1138
1138
  icon: $q.iconSet.datetime.today,
1139
+ ariaLabel: $q.lang.date.today,
1139
1140
  flat: true,
1140
1141
  size: 'sm',
1141
1142
  round: true,
@@ -1157,6 +1158,7 @@ export default createComponent({
1157
1158
  size: 'sm',
1158
1159
  flat: true,
1159
1160
  icon: dateArrow.value[ 0 ],
1161
+ ariaLabel: type === 'Years' ? $q.lang.date.prevYear : $q.lang.date.prevMonth,
1160
1162
  tabindex: tabindex.value,
1161
1163
  disable: boundaries.prev === false,
1162
1164
  ...getCache('go-#' + type, { onClick () { goTo(-1) } })
@@ -1189,6 +1191,7 @@ export default createComponent({
1189
1191
  size: 'sm',
1190
1192
  flat: true,
1191
1193
  icon: dateArrow.value[ 1 ],
1194
+ ariaLabel: type === 'Years' ? $q.lang.date.nextYear : $q.lang.date.nextMonth,
1192
1195
  tabindex: tabindex.value,
1193
1196
  disable: boundaries.next === false,
1194
1197
  ...getCache('go+#' + type, { onClick () { goTo(1) } })
@@ -1359,6 +1362,7 @@ export default createComponent({
1359
1362
  dense: true,
1360
1363
  flat: true,
1361
1364
  icon: dateArrow.value[ 0 ],
1365
+ ariaLabel: $q.lang.date.prevRangeYears(yearsInterval),
1362
1366
  tabindex: tabindex.value,
1363
1367
  disable: isDisabled(start),
1364
1368
  ...getCache('y-', { onClick: () => { startYear.value -= yearsInterval } })
@@ -1377,6 +1381,7 @@ export default createComponent({
1377
1381
  dense: true,
1378
1382
  flat: true,
1379
1383
  icon: dateArrow.value[ 1 ],
1384
+ ariaLabel: $q.lang.date.nextRangeYears(yearsInterval),
1380
1385
  tabindex: tabindex.value,
1381
1386
  disable: isDisabled(stop),
1382
1387
  ...getCache('y+', { onClick: () => { startYear.value += yearsInterval } })
@@ -180,7 +180,7 @@ export default createComponent({
180
180
  animating.value = true
181
181
 
182
182
  if (props.noFocus !== true) {
183
- document.activeElement !== null && document.activeElement.blur()
183
+ document.activeElement?.blur()
184
184
  registerTick(focus)
185
185
  }
186
186
  else {
@@ -230,7 +230,7 @@ export default createComponent({
230
230
  hidePortal()
231
231
 
232
232
  if (refocusTarget !== null) {
233
- ((evt && evt.type.indexOf('key') === 0
233
+ ((evt?.type.indexOf('key') === 0
234
234
  ? refocusTarget.closest('[tabindex]:not([tabindex^="-"])')
235
235
  : void 0
236
236
  ) || refocusTarget).focus()
@@ -134,7 +134,7 @@
134
134
  },
135
135
 
136
136
  "escape-key": {
137
- "desc": "Emitted when ESC key is pressed; Does not get emitted if Dialog is 'persistent' or it has 'no-esc-key' set"
137
+ "desc": "Emitted when ESC key is pressed; Does not get emitted if Dialog is 'persistent' or it has 'no-esc-dismiss' set"
138
138
  },
139
139
 
140
140
  "click": { "internal": true }
@@ -120,7 +120,7 @@ export default createComponent({
120
120
 
121
121
  if (belowBreakpoint.value === true) {
122
122
  const otherInstance = $layout.instances[ otherSide.value ]
123
- if (otherInstance !== void 0 && otherInstance.belowBreakpoint === true) {
123
+ if (otherInstance?.belowBreakpoint === true) {
124
124
  otherInstance.hide(false)
125
125
  }
126
126
 
@@ -472,9 +472,7 @@ export default createComponent({
472
472
  timerMini = setTimeout(() => {
473
473
  timerMini = null
474
474
  flagMiniAnimate.value = false
475
- if (vm && vm.proxy && vm.proxy.$el) {
476
- vm.proxy.$el.classList.remove('q-drawer--mini-animate')
477
- }
475
+ vm?.proxy?.$el?.classList.remove('q-drawer--mini-animate')
478
476
  }, 150)
479
477
  }
480
478
 
@@ -622,7 +620,7 @@ export default createComponent({
622
620
  })
623
621
 
624
622
  onBeforeUnmount(() => {
625
- layoutTotalWidthWatcher !== void 0 && layoutTotalWidthWatcher()
623
+ layoutTotalWidthWatcher?.()
626
624
 
627
625
  if (timerMini !== null) {
628
626
  clearTimeout(timerMini)
@@ -451,7 +451,7 @@ export default createComponent({
451
451
 
452
452
  function focus () {
453
453
  addFocusFn(() => {
454
- contentRef.value !== null && contentRef.value.focus({ preventScroll: true })
454
+ contentRef.value?.focus({ preventScroll: true })
455
455
  })
456
456
  }
457
457
 
@@ -91,7 +91,7 @@ export default class Caret {
91
91
  get range () {
92
92
  const sel = this.selection
93
93
 
94
- if (sel !== null && sel.rangeCount) {
94
+ if (sel?.rangeCount) {
95
95
  return sel.getRangeAt(0)
96
96
  }
97
97
 
@@ -54,7 +54,7 @@ function getBtn (eVm, btn, clickHandler, active = false) {
54
54
  disable: btn.disable ? (typeof btn.disable === 'function' ? btn.disable(eVm) : true) : false,
55
55
  size: 'sm',
56
56
  onClick (e) {
57
- clickHandler && clickHandler()
57
+ clickHandler?.()
58
58
  run(e, btn, eVm)
59
59
  }
60
60
  }, () => child)
@@ -120,7 +120,7 @@ function getDropdown (eVm, btn) {
120
120
  dense: true,
121
121
  onClick (e) {
122
122
  closeDropdown()
123
- eVm.contentRef.value !== null && eVm.contentRef.value.focus()
123
+ e?.qAvoidFocus !== true && eVm.contentRef.value?.focus()
124
124
  eVm.caret.restore()
125
125
  run(e, btn, eVm)
126
126
  }
@@ -150,7 +150,7 @@ export default createComponent({
150
150
  })
151
151
 
152
152
  watch(() => props.group, name => {
153
- exitGroup !== void 0 && exitGroup()
153
+ exitGroup?.()
154
154
  name !== void 0 && enterGroup()
155
155
  })
156
156
 
@@ -164,7 +164,10 @@ export default createComponent({
164
164
  }
165
165
 
166
166
  function toggleIcon (e, keyboard) {
167
- keyboard !== true && blurTargetRef.value !== null && blurTargetRef.value.focus()
167
+ if (keyboard !== true && e.qAvoidFocus !== true) {
168
+ blurTargetRef.value?.focus()
169
+ }
170
+
168
171
  toggle(e)
169
172
  stopAndPrevent(e)
170
173
  }
@@ -360,7 +363,7 @@ export default createComponent({
360
363
  props.group !== void 0 && enterGroup()
361
364
 
362
365
  onBeforeUnmount(() => {
363
- exitGroup !== void 0 && exitGroup()
366
+ exitGroup?.()
364
367
  })
365
368
 
366
369
  return () => h('div', { class: classes.value }, [
@@ -128,8 +128,8 @@ export default createComponent({
128
128
  onChildClick (evt) {
129
129
  hide(evt)
130
130
 
131
- if (triggerRef.value !== null) {
132
- triggerRef.value.$el.focus()
131
+ if (evt?.qAvoidFocus !== true) {
132
+ triggerRef.value?.$el.focus()
133
133
  }
134
134
  }
135
135
  })