quasar 2.6.0 → 2.6.3

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 (315) hide show
  1. package/dist/api/Notify.json +68 -734
  2. package/dist/api/QBreadcrumbsEl.json +5 -5
  3. package/dist/api/QBtn.json +2 -2
  4. package/dist/api/QBtnDropdown.json +2 -2
  5. package/dist/api/QExpansionItem.json +5 -5
  6. package/dist/api/QItem.json +5 -5
  7. package/dist/api/QRouteTab.json +5 -5
  8. package/dist/api/QTable.json +14 -0
  9. package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
  10. package/dist/icon-set/eva-icons.umd.prod.js +1 -1
  11. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
  12. package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
  13. package/dist/icon-set/fontawesome-v6-pro.umd.prod.js +1 -1
  14. package/dist/icon-set/fontawesome-v6.umd.prod.js +1 -1
  15. package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
  16. package/dist/icon-set/line-awesome.umd.prod.js +1 -1
  17. package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
  18. package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
  19. package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
  20. package/dist/icon-set/material-icons.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/svg-bootstrap-icons.umd.prod.js +1 -1
  26. package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
  27. package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
  28. package/dist/icon-set/svg-fontawesome-v6.umd.prod.js +1 -1
  29. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
  30. package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
  31. package/dist/icon-set/svg-ionicons-v6.umd.prod.js +1 -1
  32. package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
  33. package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
  34. package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
  35. package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
  36. package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
  37. package/dist/icon-set/svg-mdi-v6.umd.prod.js +1 -1
  38. package/dist/icon-set/svg-themify.umd.prod.js +1 -1
  39. package/dist/icon-set/themify.umd.prod.js +1 -1
  40. package/dist/lang/ar-TN.umd.prod.js +6 -0
  41. package/dist/lang/ar.umd.prod.js +1 -1
  42. package/dist/lang/az-Latn.umd.prod.js +1 -1
  43. package/dist/lang/bg.umd.prod.js +1 -1
  44. package/dist/lang/bn.umd.prod.js +1 -1
  45. package/dist/lang/ca.umd.prod.js +1 -1
  46. package/dist/lang/cs.umd.prod.js +1 -1
  47. package/dist/lang/da.umd.prod.js +1 -1
  48. package/dist/lang/de.umd.prod.js +1 -1
  49. package/dist/lang/el.umd.prod.js +1 -1
  50. package/dist/lang/en-GB.umd.prod.js +1 -1
  51. package/dist/lang/en-US.umd.prod.js +1 -1
  52. package/dist/lang/eo.umd.prod.js +1 -1
  53. package/dist/lang/es.umd.prod.js +1 -1
  54. package/dist/lang/et.umd.prod.js +1 -1
  55. package/dist/lang/eu.umd.prod.js +1 -1
  56. package/dist/lang/fa-IR.umd.prod.js +1 -1
  57. package/dist/lang/fa.umd.prod.js +1 -1
  58. package/dist/lang/fi.umd.prod.js +1 -1
  59. package/dist/lang/fr.umd.prod.js +1 -1
  60. package/dist/lang/gn.umd.prod.js +1 -1
  61. package/dist/lang/he.umd.prod.js +1 -1
  62. package/dist/lang/hr.umd.prod.js +1 -1
  63. package/dist/lang/hu.umd.prod.js +1 -1
  64. package/dist/lang/id.umd.prod.js +1 -1
  65. package/dist/lang/is.umd.prod.js +1 -1
  66. package/dist/lang/it.umd.prod.js +1 -1
  67. package/dist/lang/ja.umd.prod.js +1 -1
  68. package/dist/lang/km.umd.prod.js +1 -1
  69. package/dist/lang/ko-KR.umd.prod.js +1 -1
  70. package/dist/lang/kur-CKB.umd.prod.js +1 -1
  71. package/dist/lang/kz.umd.prod.js +1 -1
  72. package/dist/lang/lt.umd.prod.js +1 -1
  73. package/dist/lang/lu.umd.prod.js +1 -1
  74. package/dist/lang/lv.umd.prod.js +1 -1
  75. package/dist/lang/ml.umd.prod.js +1 -1
  76. package/dist/lang/ms.umd.prod.js +1 -1
  77. package/dist/lang/my.umd.prod.js +1 -1
  78. package/dist/lang/nb-NO.umd.prod.js +1 -1
  79. package/dist/lang/nl.umd.prod.js +1 -1
  80. package/dist/lang/pl.umd.prod.js +1 -1
  81. package/dist/lang/pt-BR.umd.prod.js +1 -1
  82. package/dist/lang/pt.umd.prod.js +1 -1
  83. package/dist/lang/ro.umd.prod.js +1 -1
  84. package/dist/lang/ru.umd.prod.js +1 -1
  85. package/dist/lang/sk.umd.prod.js +1 -1
  86. package/dist/lang/sl.umd.prod.js +1 -1
  87. package/dist/lang/sr-CYR.umd.prod.js +1 -1
  88. package/dist/lang/sr.umd.prod.js +1 -1
  89. package/dist/lang/sv.umd.prod.js +1 -1
  90. package/dist/lang/ta.umd.prod.js +1 -1
  91. package/dist/lang/th.umd.prod.js +1 -1
  92. package/dist/lang/tr.umd.prod.js +1 -1
  93. package/dist/lang/ug.umd.prod.js +1 -1
  94. package/dist/lang/uk.umd.prod.js +1 -1
  95. package/dist/lang/vi.umd.prod.js +1 -1
  96. package/dist/lang/zh-CN.umd.prod.js +1 -1
  97. package/dist/lang/zh-TW.umd.prod.js +1 -1
  98. package/dist/quasar.cjs.prod.js +2 -2
  99. package/dist/quasar.css +12 -20
  100. package/dist/quasar.esm.prod.js +2 -2
  101. package/dist/quasar.prod.css +1 -1
  102. package/dist/quasar.rtl.css +27 -39
  103. package/dist/quasar.rtl.prod.css +1 -1
  104. package/dist/quasar.sass +9 -15
  105. package/dist/quasar.umd.js +88 -33
  106. package/dist/quasar.umd.prod.js +2 -2
  107. package/dist/types/api/qnotify.d.ts +10 -0
  108. package/dist/types/api.d.ts +1 -0
  109. package/dist/types/index.d.ts +176 -753
  110. package/dist/vetur/quasar-attributes.json +28 -24
  111. package/dist/vetur/quasar-tags.json +1 -0
  112. package/dist/web-types/web-types.json +34 -25
  113. package/icon-set/bootstrap-icons.js +11 -6
  114. package/icon-set/bootstrap-icons.mjs +136 -0
  115. package/icon-set/eva-icons.js +10 -5
  116. package/icon-set/{svg-mdi-v4.js → eva-icons.mjs} +62 -94
  117. package/icon-set/fontawesome-v5-pro.js +6 -1
  118. package/icon-set/fontawesome-v5-pro.mjs +128 -0
  119. package/icon-set/fontawesome-v5.js +6 -1
  120. package/icon-set/fontawesome-v5.mjs +128 -0
  121. package/icon-set/fontawesome-v6-pro.js +6 -1
  122. package/icon-set/fontawesome-v6-pro.mjs +128 -0
  123. package/icon-set/fontawesome-v6.js +6 -1
  124. package/icon-set/fontawesome-v6.mjs +128 -0
  125. package/icon-set/ionicons-v4.js +10 -5
  126. package/icon-set/ionicons-v4.mjs +180 -0
  127. package/icon-set/line-awesome.js +6 -1
  128. package/icon-set/line-awesome.mjs +128 -0
  129. package/icon-set/material-icons-outlined.js +6 -1
  130. package/icon-set/material-icons-outlined.mjs +128 -0
  131. package/icon-set/material-icons-round.js +6 -1
  132. package/icon-set/material-icons-round.mjs +128 -0
  133. package/icon-set/material-icons-sharp.js +6 -1
  134. package/icon-set/material-icons-sharp.mjs +128 -0
  135. package/icon-set/material-icons.js +6 -1
  136. package/icon-set/material-icons.mjs +128 -0
  137. package/icon-set/mdi-v3.js +6 -1
  138. package/icon-set/mdi-v3.mjs +141 -0
  139. package/icon-set/mdi-v4.js +6 -1
  140. package/icon-set/mdi-v4.mjs +141 -0
  141. package/icon-set/mdi-v5.js +6 -1
  142. package/icon-set/mdi-v5.mjs +141 -0
  143. package/icon-set/mdi-v6.js +6 -1
  144. package/icon-set/mdi-v6.mjs +141 -0
  145. package/icon-set/svg-bootstrap-icons.js +10 -11
  146. package/icon-set/svg-bootstrap-icons.mjs +210 -0
  147. package/icon-set/svg-eva-icons.js +9 -10
  148. package/icon-set/svg-eva-icons.mjs +233 -0
  149. package/icon-set/svg-fontawesome-v5.js +5 -6
  150. package/icon-set/svg-fontawesome-v5.mjs +197 -0
  151. package/icon-set/svg-fontawesome-v6.js +5 -5
  152. package/icon-set/svg-fontawesome-v6.mjs +198 -0
  153. package/icon-set/svg-ionicons-v4.js +9 -10
  154. package/icon-set/svg-ionicons-v4.mjs +234 -0
  155. package/icon-set/svg-ionicons-v5.js +7 -7
  156. package/icon-set/svg-ionicons-v5.mjs +225 -0
  157. package/icon-set/svg-ionicons-v6.js +7 -7
  158. package/icon-set/svg-ionicons-v6.mjs +225 -0
  159. package/icon-set/svg-line-awesome.js +5 -5
  160. package/icon-set/svg-line-awesome.mjs +198 -0
  161. package/icon-set/svg-material-icons-outlined.js +5 -5
  162. package/icon-set/svg-material-icons-outlined.mjs +203 -0
  163. package/icon-set/svg-material-icons-round.js +5 -5
  164. package/icon-set/svg-material-icons-round.mjs +203 -0
  165. package/icon-set/svg-material-icons-sharp.js +5 -5
  166. package/icon-set/svg-material-icons-sharp.mjs +203 -0
  167. package/icon-set/svg-material-icons.js +5 -5
  168. package/icon-set/svg-material-icons.mjs +203 -0
  169. package/icon-set/svg-mdi-v6.js +5 -5
  170. package/icon-set/{svg-mdi-v5.js → svg-mdi-v6.mjs} +6 -6
  171. package/icon-set/svg-themify.js +9 -10
  172. package/icon-set/svg-themify.mjs +231 -0
  173. package/icon-set/themify.js +10 -5
  174. package/icon-set/themify.mjs +169 -0
  175. package/lang/ar-TN.js +101 -0
  176. package/lang/ar-TN.mjs +96 -0
  177. package/lang/ar.js +6 -1
  178. package/lang/ar.mjs +96 -0
  179. package/lang/az-Latn.js +6 -1
  180. package/lang/az-Latn.mjs +91 -0
  181. package/lang/bg.js +6 -1
  182. package/lang/bg.mjs +91 -0
  183. package/lang/bn.js +6 -1
  184. package/lang/bn.mjs +91 -0
  185. package/lang/ca.js +6 -1
  186. package/lang/ca.mjs +91 -0
  187. package/lang/cs.js +6 -1
  188. package/lang/cs.mjs +102 -0
  189. package/lang/da.js +6 -1
  190. package/lang/da.mjs +91 -0
  191. package/lang/de.js +6 -1
  192. package/lang/de.mjs +91 -0
  193. package/lang/el.js +6 -1
  194. package/lang/el.mjs +91 -0
  195. package/lang/en-GB.js +6 -1
  196. package/lang/en-GB.mjs +91 -0
  197. package/lang/en-US.js +6 -1
  198. package/lang/en-US.mjs +91 -0
  199. package/lang/eo.js +6 -1
  200. package/lang/eo.mjs +91 -0
  201. package/lang/es.js +6 -1
  202. package/lang/es.mjs +91 -0
  203. package/lang/et.js +6 -1
  204. package/lang/et.mjs +91 -0
  205. package/lang/eu.js +6 -1
  206. package/lang/eu.mjs +91 -0
  207. package/lang/fa-IR.js +6 -1
  208. package/lang/fa-IR.mjs +92 -0
  209. package/lang/fa.js +6 -1
  210. package/lang/fa.mjs +92 -0
  211. package/lang/fi.js +6 -1
  212. package/lang/fi.mjs +92 -0
  213. package/lang/fr.js +6 -1
  214. package/lang/fr.mjs +94 -0
  215. package/lang/gn.js +6 -1
  216. package/lang/gn.mjs +91 -0
  217. package/lang/he.js +6 -1
  218. package/lang/he.mjs +92 -0
  219. package/lang/hr.js +6 -1
  220. package/lang/hr.mjs +91 -0
  221. package/lang/hu.js +6 -1
  222. package/lang/hu.mjs +91 -0
  223. package/lang/id.js +6 -1
  224. package/lang/id.mjs +91 -0
  225. package/lang/index.json +4 -0
  226. package/lang/is.js +6 -1
  227. package/lang/is.mjs +91 -0
  228. package/lang/it.js +6 -1
  229. package/lang/it.mjs +91 -0
  230. package/lang/ja.js +6 -1
  231. package/lang/ja.mjs +90 -0
  232. package/lang/km.js +6 -1
  233. package/lang/km.mjs +91 -0
  234. package/lang/ko-KR.js +6 -1
  235. package/lang/ko-KR.mjs +91 -0
  236. package/lang/kur-CKB.js +6 -1
  237. package/lang/kur-CKB.mjs +101 -0
  238. package/lang/kz.js +6 -1
  239. package/lang/kz.mjs +95 -0
  240. package/lang/lt.js +6 -1
  241. package/lang/lt.mjs +103 -0
  242. package/lang/lu.js +6 -1
  243. package/lang/lu.mjs +91 -0
  244. package/lang/lv.js +6 -1
  245. package/lang/lv.mjs +91 -0
  246. package/lang/ml.js +6 -1
  247. package/lang/ml.mjs +95 -0
  248. package/lang/ms.js +6 -1
  249. package/lang/ms.mjs +91 -0
  250. package/lang/my.js +6 -1
  251. package/lang/my.mjs +90 -0
  252. package/lang/nb-NO.js +6 -1
  253. package/lang/nb-NO.mjs +92 -0
  254. package/lang/nl.js +6 -1
  255. package/lang/nl.mjs +91 -0
  256. package/lang/pl.js +6 -1
  257. package/lang/pl.mjs +91 -0
  258. package/lang/pt-BR.js +6 -1
  259. package/lang/pt-BR.mjs +91 -0
  260. package/lang/pt.js +6 -1
  261. package/lang/pt.mjs +91 -0
  262. package/lang/ro.js +6 -1
  263. package/lang/ro.mjs +91 -0
  264. package/lang/ru.js +6 -1
  265. package/lang/ru.mjs +95 -0
  266. package/lang/sk.js +6 -1
  267. package/lang/sk.mjs +91 -0
  268. package/lang/sl.js +6 -1
  269. package/lang/sl.mjs +91 -0
  270. package/lang/sr-CYR.js +6 -1
  271. package/lang/sr-CYR.mjs +91 -0
  272. package/lang/sr.js +6 -1
  273. package/lang/sr.mjs +91 -0
  274. package/lang/sv.js +6 -1
  275. package/lang/sv.mjs +91 -0
  276. package/lang/ta.js +6 -1
  277. package/lang/ta.mjs +91 -0
  278. package/lang/th.js +6 -1
  279. package/lang/th.mjs +91 -0
  280. package/lang/tr.js +6 -1
  281. package/lang/tr.mjs +87 -0
  282. package/lang/ug.js +6 -1
  283. package/lang/ug.mjs +91 -0
  284. package/lang/uk.js +7 -2
  285. package/lang/uk.mjs +95 -0
  286. package/lang/vi.js +6 -1
  287. package/lang/vi.mjs +91 -0
  288. package/lang/zh-CN.js +6 -1
  289. package/lang/zh-CN.mjs +90 -0
  290. package/lang/zh-TW.js +6 -1
  291. package/lang/zh-TW.mjs +90 -0
  292. package/package.json +7 -5
  293. package/src/components/btn/use-btn.json +2 -2
  294. package/src/components/checkbox/QCheckbox.js +1 -1
  295. package/src/components/checkbox/QCheckbox.sass +5 -9
  296. package/src/components/dialog-plugin/DialogPlugin.js +4 -4
  297. package/src/components/editor/editor-caret.js +1 -1
  298. package/src/components/fab/QFab.js +1 -1
  299. package/src/components/icon/QIcon.js +3 -4
  300. package/src/components/radio/QRadio.js +1 -1
  301. package/src/components/radio/QRadio.sass +5 -9
  302. package/src/components/select/QSelect.js +15 -0
  303. package/src/components/table/QTable.js +4 -0
  304. package/src/components/table/QTable.json +4 -0
  305. package/src/components/table/QTh.js +5 -2
  306. package/src/components/virtual-scroll/QVirtualScroll.js +9 -1
  307. package/src/composables/private/__tests__/use-transition.spec.js +2 -2
  308. package/src/composables/private/use-router-link.json +5 -5
  309. package/src/icon-set.js +2 -1
  310. package/src/lang.js +2 -1
  311. package/src/plugins/Notify.json +55 -533
  312. package/src/utils/date.js +8 -12
  313. package/src/utils/extend.js +33 -5
  314. package/dist/icon-set/svg-mdi-v4.umd.prod.js +0 -6
  315. package/dist/icon-set/svg-mdi-v5.umd.prod.js +0 -6
package/lang/vi.mjs ADDED
@@ -0,0 +1,91 @@
1
+ export default {
2
+ isoName: 'vi',
3
+ nativeName: 'Tiếng Việt',
4
+ label: {
5
+ clear: 'Xóa hết',
6
+ ok: 'OK',
7
+ cancel: 'Hủy',
8
+ close: 'Đóng',
9
+ set: 'Thiết đặt',
10
+ select: 'Chọn',
11
+ reset: 'Đặt lại',
12
+ remove: 'Gỡ bỏ',
13
+ update: 'Cập nhật',
14
+ create: 'Tạo',
15
+ search: 'Tìm kiếm',
16
+ filter: 'Bộ lọc',
17
+ refresh: 'Làm mới'
18
+ },
19
+ date: {
20
+ days: 'Chủ Nhật_Thứ Hai_Thứ Ba_Thứ Tư_Thứ Năm_Thứ Sáu_Thứ Bảy'.split('_'),
21
+ daysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
22
+ months: 'Tháng Một_Tháng Hai_Tháng Ba_Tháng Tư_Tháng Năm_Tháng Sáu_Tháng Bảy_Tháng Tám_Tháng Chín_Tháng Mười_Tháng Mười Một_Tháng Mười Hai'.split('_'),
23
+ monthsShort: 'Th1_Th2_Th3_Th4_Th5_Th6_Th7_Th8_Th9_Th10_Th11_Th12'.split('_'),
24
+ firstDayOfWeek: 1, // 0-6, 0 - Sunday, 1 Monday, ...
25
+ format24h: false,
26
+ pluralDay: 'ngày'
27
+ },
28
+ table: {
29
+ noData: 'Không có dữ liệu',
30
+ noResults: 'Không tìm thấy kết quả',
31
+ loading: 'Đang tải',
32
+ selectedRecords: rows => (
33
+ rows === 1
34
+ ? '1 hàng đã chọn.'
35
+ : (rows === 0 ? 'Không có hàng nào' : rows) + ' hàng đã chọn.'
36
+ ),
37
+ recordsPerPage: 'Hàng trên mỗi trang:',
38
+ allRows: 'Tất cả',
39
+ pagination: (start, end, total) => start + '-' + end + ' của ' + total,
40
+ columns: 'Cột'
41
+ },
42
+ editor: {
43
+ url: 'URL',
44
+ bold: 'Đậm',
45
+ italic: 'Nghiêng',
46
+ strikethrough: 'Gạch giữa',
47
+ underline: 'Gạch dưới',
48
+ unorderedList: 'Danh sách không theo thứ tự',
49
+ orderedList: 'Danh sách theo thứ tự',
50
+ subscript: 'Chỉ số dưới',
51
+ superscript: 'Chỉ số trên',
52
+ hyperlink: 'Liên kết',
53
+ toggleFullscreen: 'Điều chỉnh chế độ toàn màn hình',
54
+ quote: 'Trích dẫn',
55
+ left: 'Căn trái',
56
+ center: 'Căn giữa',
57
+ right: 'Căn phải',
58
+ justify: 'Căn đều 2 bên',
59
+ print: 'In',
60
+ outdent: 'Giảm lề',
61
+ indent: 'Tăng lề',
62
+ removeFormat: 'Xóa định dạng',
63
+ formatting: 'Định dạng',
64
+ fontSize: 'Kích cỡ phông',
65
+ align: 'Căn chỉnh',
66
+ hr: 'Chèn Quy Tắc Ngang',
67
+ undo: 'Hoàn tác',
68
+ redo: 'Làm lại',
69
+ heading1: 'Tiêu đề 1',
70
+ heading2: 'Tiêu đề 2',
71
+ heading3: 'Tiêu đề 3',
72
+ heading4: 'Tiêu đề 4',
73
+ heading5: 'Tiêu đề 5',
74
+ heading6: 'Tiêu đề 6',
75
+ paragraph: 'Đoạn',
76
+ code: 'Mã',
77
+ size1: 'Rất nhỏ',
78
+ size2: 'Nhỏ vừa',
79
+ size3: 'Thường',
80
+ size4: 'To vừa',
81
+ size5: 'To',
82
+ size6: 'Rất To',
83
+ size7: 'Tối đa',
84
+ defaultFont: 'Phông mặc định',
85
+ viewSource: 'Xem nguồn'
86
+ },
87
+ tree: {
88
+ noNodes: 'Không có nốt nào có sẵn',
89
+ noResults: 'Không tìm thấy các nốt'
90
+ }
91
+ }
package/lang/zh-CN.js CHANGED
@@ -1,4 +1,9 @@
1
- export default {
1
+ /**
2
+ * DO NOT EDIT THIS FILE. It is automatically generated
3
+ * from its .mjs counterpart (same filename but with .mjs extension).
4
+ * Edit that file instead (zh-CN.mjs).
5
+ */
6
+ module.exports = {
2
7
  isoName: 'zh-CN',
3
8
  nativeName: '中文(简体)',
4
9
  label: {
package/lang/zh-CN.mjs ADDED
@@ -0,0 +1,90 @@
1
+ export default {
2
+ isoName: 'zh-CN',
3
+ nativeName: '中文(简体)',
4
+ label: {
5
+ clear: '清空',
6
+ ok: '确定',
7
+ cancel: '取消',
8
+ close: '关闭',
9
+ set: '设置',
10
+ select: '选择',
11
+ reset: '重置',
12
+ remove: '移除',
13
+ update: '更新',
14
+ create: '创建',
15
+ search: '搜索',
16
+ filter: '过滤',
17
+ refresh: '刷新'
18
+ },
19
+ date: {
20
+ days: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
21
+ daysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),
22
+ months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
23
+ monthsShort: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
24
+ headerTitle: date => new Intl.DateTimeFormat('zh-CN', {
25
+ weekday: 'short', month: 'short', day: 'numeric'
26
+ }).format(date),
27
+ firstDayOfWeek: 0, // 0-6, 0 - Sunday, 1 Monday, ...
28
+ format24h: false,
29
+ pluralDay: '天'
30
+ },
31
+ table: {
32
+ noData: '没有可用数据',
33
+ noResults: '找不到匹配的数据',
34
+ loading: '正在加载...',
35
+ selectedRecords: rows => '已选择' + rows + '行',
36
+ recordsPerPage: '每页的行数:',
37
+ allRows: '全部',
38
+ pagination: (start, end, total) => start + '-' + end + ' / ' + total,
39
+ columns: '列'
40
+ },
41
+ editor: {
42
+ url: 'URL',
43
+ bold: '粗体',
44
+ italic: '斜体',
45
+ strikethrough: '删除线',
46
+ underline: '下划线',
47
+ unorderedList: '无序列表',
48
+ orderedList: '有序列表',
49
+ subscript: '下标',
50
+ superscript: '上标',
51
+ hyperlink: '超链接',
52
+ toggleFullscreen: '全屏切换',
53
+ quote: '引号',
54
+ left: '左对齐',
55
+ center: '居中对齐',
56
+ right: '右对齐',
57
+ justify: '两端对齐',
58
+ print: '打印',
59
+ outdent: '减少缩进',
60
+ indent: '增加缩进',
61
+ removeFormat: '清除样式',
62
+ formatting: '格式化',
63
+ fontSize: '字体大小',
64
+ align: '对齐',
65
+ hr: '插入水平线',
66
+ undo: '撤消',
67
+ redo: '重做',
68
+ heading1: '标题一',
69
+ heading2: '标题二',
70
+ heading3: '标题三',
71
+ heading4: '标题四',
72
+ heading5: '标题五',
73
+ heading6: '标题六',
74
+ paragraph: '段落',
75
+ code: '代码',
76
+ size1: '非常小',
77
+ size2: '比较小',
78
+ size3: '正常',
79
+ size4: '中等偏大',
80
+ size5: '大',
81
+ size6: '非常大',
82
+ size7: '超级大',
83
+ defaultFont: '默认字体',
84
+ viewSource: '查看资料'
85
+ },
86
+ tree: {
87
+ noNodes: '没有可用节点',
88
+ noResults: '找不到匹配的节点'
89
+ }
90
+ }
package/lang/zh-TW.js CHANGED
@@ -1,4 +1,9 @@
1
- export default {
1
+ /**
2
+ * DO NOT EDIT THIS FILE. It is automatically generated
3
+ * from its .mjs counterpart (same filename but with .mjs extension).
4
+ * Edit that file instead (zh-TW.mjs).
5
+ */
6
+ module.exports = {
2
7
  isoName: 'zh-TW',
3
8
  nativeName: '中文(繁體)',
4
9
  label: {
package/lang/zh-TW.mjs ADDED
@@ -0,0 +1,90 @@
1
+ export default {
2
+ isoName: 'zh-TW',
3
+ nativeName: '中文(繁體)',
4
+ label: {
5
+ clear: '清除',
6
+ ok: '確定',
7
+ cancel: '取消',
8
+ close: '關閉',
9
+ set: '設定',
10
+ select: '選擇',
11
+ reset: '重置',
12
+ remove: '移除',
13
+ update: '更新',
14
+ create: '新增',
15
+ search: '搜尋',
16
+ filter: '篩選',
17
+ refresh: '更新'
18
+ },
19
+ date: {
20
+ days: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
21
+ daysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
22
+ months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
23
+ monthsShort: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
24
+ headerTitle: date => new Intl.DateTimeFormat('zh-TW', {
25
+ weekday: 'short', month: 'short', day: 'numeric'
26
+ }).format(date),
27
+ firstDayOfWeek: 0, // 0-6, 0 - Sunday, 1 Monday, ...
28
+ format24h: false,
29
+ pluralDay: '日'
30
+ },
31
+ table: {
32
+ noData: '沒有資料',
33
+ noResults: '沒有相符資料',
34
+ loading: '載入中...',
35
+ selectedRecords: rows => '已選擇 ' + rows + ' 列',
36
+ recordsPerPage: '每頁列數:',
37
+ allRows: '全部',
38
+ pagination: (start, end, total) => start + '-' + end + ' 列,共 ' + total + ' 列',
39
+ columns: '欄位'
40
+ },
41
+ editor: {
42
+ url: '網址',
43
+ bold: '粗體',
44
+ italic: '斜體',
45
+ strikethrough: '刪除線',
46
+ underline: '下劃線',
47
+ unorderedList: '項目符號清單',
48
+ orderedList: '編號清單',
49
+ subscript: '下標',
50
+ superscript: '上標',
51
+ hyperlink: '超連結',
52
+ toggleFullscreen: '切換全螢幕',
53
+ quote: '段落引用',
54
+ left: '靠左對齊',
55
+ center: '置中對齊',
56
+ right: '靠右對齊',
57
+ justify: '分散對齊',
58
+ print: '列印',
59
+ outdent: '減少縮排',
60
+ indent: '增加縮排',
61
+ removeFormat: '清除格式',
62
+ formatting: '區塊元素',
63
+ fontSize: '字型大小',
64
+ align: '對齊',
65
+ hr: '水平分隔線',
66
+ undo: '復原',
67
+ redo: '取消復原',
68
+ heading1: '標題 1',
69
+ heading2: '標題 2',
70
+ heading3: '標題 3',
71
+ heading4: '標題 4',
72
+ heading5: '標題 5',
73
+ heading6: '標題 6',
74
+ paragraph: '段落',
75
+ code: '程式碼',
76
+ size1: '非常小',
77
+ size2: '稍小',
78
+ size3: '正常',
79
+ size4: '稍大',
80
+ size5: '大',
81
+ size6: '非常大',
82
+ size7: '超級大',
83
+ defaultFont: '預設字型',
84
+ viewSource: '切換原始碼'
85
+ },
86
+ tree: {
87
+ noNodes: '沒有節點',
88
+ noResults: '沒有相符節點'
89
+ }
90
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "quasar",
3
- "version": "2.6.0",
3
+ "version": "2.6.3",
4
4
  "description": "Build high-performance VueJS user interfaces (SPA, PWA, SSR, Mobile and Desktop) in record time",
5
5
  "main": "dist/quasar.cjs.prod.js",
6
6
  "module": "dist/quasar.esm.prod.js",
@@ -17,7 +17,9 @@
17
17
  "scripts": {
18
18
  "clean": "node build/script.clean.js",
19
19
  "dev": "cd ./dev && node ./script.dev.js dev && cd ..",
20
+ "dev:build": "cd ./dev && node ./script.build.js dev && cd ..",
20
21
  "dev:ssr": "cd ./dev && node ./script.dev.js dev -m ssr && cd ..",
22
+ "dev:build:ssr": "cd ./dev && node ./script.build.js dev -m ssr && cd ..",
21
23
  "dev:cordova:ios": "cd ./dev && node ./script.dev.js dev -m cordova -T ios && cd ..",
22
24
  "dev:cordova:android": "cd ./dev && node ./script.dev.js dev -m cordova -T android && cd ..",
23
25
  "dev:capacitor:ios": "cd ./dev && node ./script.dev.js dev -m capacitor -T ios && cd ..",
@@ -64,14 +66,15 @@
64
66
  },
65
67
  "homepage": "https://quasar.dev",
66
68
  "devDependencies": {
67
- "@babel/eslint-parser": "^7.13.14",
68
- "@quasar/app": "^3.0.0",
69
+ "@quasar/app-vite": "^1.0.0-beta.5",
69
70
  "@quasar/extras": "^1.12.0",
70
71
  "@quasar/quasar-app-extension-testing-e2e-cypress": "^4.0.1",
71
72
  "@rollup/plugin-node-resolve": "^11.2.1",
72
73
  "@rollup/plugin-replace": "^2.3.3",
74
+ "autoprefixer": "^10.4.4",
73
75
  "babel-preset-es2015-rollup": "^3.0.0",
74
76
  "cli-highlight": "^2.1.11",
77
+ "cssnano": "^5.1.4",
75
78
  "diff": "^5.0.0",
76
79
  "eslint": "^7.4.0",
77
80
  "eslint-config-standard": "^16.0.2",
@@ -82,16 +85,15 @@
82
85
  "eslint-plugin-node": "^11.1.0",
83
86
  "eslint-plugin-promise": "^4.2.1",
84
87
  "eslint-plugin-vue": "^7.0.0",
85
- "eslint-webpack-plugin": "^2.4.1",
86
88
  "fast-glob": "^3.2.7",
87
89
  "json-beautify": "^1.1.1",
88
90
  "module-alias": "^2.2.2",
91
+ "postcss-rtlcss": "^3.5.3",
89
92
  "prettier": "^2.4.1",
90
93
  "quasar": "^2.1.9",
91
94
  "recast": "^0.18.5",
92
95
  "rimraf": "^3.0.1",
93
96
  "rollup": "^2.34.0",
94
- "rollup-plugin-typescript2": "^0.29.0",
95
97
  "table": "^6.0.4",
96
98
  "tslib": "^2.0.3",
97
99
  "uglify-es": "^3.3.9",
@@ -16,7 +16,7 @@
16
16
 
17
17
  "to": {
18
18
  "type": [ "String", "Object" ],
19
- "desc": "Equivalent to Vue Router <router-link> 'to' property; Superseeded by 'href' prop if used",
19
+ "desc": "Equivalent to Vue Router <router-link> 'to' property; Superseded by 'href' prop if used",
20
20
  "examples": [
21
21
  "/home/dashboard",
22
22
  ":to=\"{ name: 'my-route-name' }\""
@@ -26,7 +26,7 @@
26
26
 
27
27
  "replace": {
28
28
  "type": "Boolean",
29
- "desc": "Equivalent to Vue Router <router-link> 'replace' property; Superseeded by 'href' prop if used",
29
+ "desc": "Equivalent to Vue Router <router-link> 'replace' property; Superseded by 'href' prop if used",
30
30
  "category": "navigation"
31
31
  },
32
32
 
@@ -50,7 +50,7 @@ export default createComponent({
50
50
  ? [
51
51
  h('div', {
52
52
  key: 'icon',
53
- class: 'q-checkbox__icon-container absolute flex flex-center no-wrap'
53
+ class: 'q-checkbox__icon-container absolute-full flex flex-center no-wrap'
54
54
  }, [
55
55
  h(QIcon, {
56
56
  class: 'q-checkbox__icon',
@@ -9,13 +9,13 @@ $checkbox-transition: .22s cubic-bezier(0,0,.2,1) 0ms
9
9
 
10
10
  &__bg,
11
11
  &__icon-container
12
+ user-select: none
13
+
14
+ &__bg
12
15
  top: 25%
13
16
  left: 25%
14
17
  width: 50%
15
18
  height: 50%
16
- user-select: none
17
-
18
- &__bg
19
19
  border: 2px solid currentColor
20
20
  border-radius: 2px
21
21
  transition: background $checkbox-transition
@@ -23,7 +23,7 @@ $checkbox-transition: .22s cubic-bezier(0,0,.2,1) 0ms
23
23
 
24
24
  &__icon
25
25
  color: currentColor
26
- font-size: .6em
26
+ font-size: .5em
27
27
 
28
28
  &__svg
29
29
  color: #fff
@@ -76,16 +76,12 @@ $checkbox-transition: .22s cubic-bezier(0,0,.2,1) 0ms
76
76
 
77
77
  &--dense
78
78
 
79
- .q-checkbox__icon
80
- font-size: .6em
81
-
82
79
  .q-checkbox__inner
83
80
  width: .5em
84
81
  min-width: .5em
85
82
  height: .5em
86
83
 
87
- .q-checkbox__bg,
88
- .q-checkbox__icon-container
84
+ .q-checkbox__bg
89
85
  left: 5%
90
86
  top: 5%
91
87
  width: 90%
@@ -239,14 +239,14 @@ export default createComponent({
239
239
  function getButtons () {
240
240
  const child = []
241
241
 
242
- props.cancel && child.push(
243
- h(QBtn, cancelProps.value)
244
- )
245
-
246
242
  props.ok && child.push(
247
243
  h(QBtn, okProps.value)
248
244
  )
249
245
 
246
+ props.cancel && child.push(
247
+ h(QBtn, cancelProps.value)
248
+ )
249
+
250
250
  return h(QCardActions, {
251
251
  class: props.stackButtons === true ? 'items-end' : '',
252
252
  vertical: props.stackButtons,
@@ -198,7 +198,7 @@ export default class Caret {
198
198
  return false
199
199
  }
200
200
 
201
- if (el !== null && list.includes(el.nodeName.toLowerCase()) === true) {
201
+ if (list.includes(el.nodeName.toLowerCase()) === true) {
202
202
  return true
203
203
  }
204
204
 
@@ -83,7 +83,7 @@ export default createComponent({
83
83
  const classes = `q-fab__${ kebab } absolute-full`
84
84
 
85
85
  return slotFn === void 0
86
- ? h(QIcon, { class: classes, name: props[ kebab ] || $q.iconSet.fab[ camel ] })
86
+ ? h(QIcon, { class: classes, name: props[ camel ] || $q.iconSet.fab[ camel ] })
87
87
  : h('div', { class: classes }, slotFn(slotScope.value))
88
88
  }
89
89
 
@@ -11,13 +11,13 @@ const sameFn = i => i
11
11
  const ionFn = i => `ionicons ${ i }`
12
12
 
13
13
  const libMap = {
14
+ 'mdi-': i => `mdi ${ i }`,
14
15
  'icon-': sameFn, // fontawesome equiv
15
16
  'bt-': i => `bt ${ i }`,
16
17
  'eva-': i => `eva ${ i }`,
17
18
  'ion-md': ionFn,
18
19
  'ion-ios': ionFn,
19
20
  'ion-logo': ionFn,
20
- 'mdi-': i => `mdi ${ i }`,
21
21
  'iconfont ': sameFn,
22
22
  'ti-': i => `themify-icon ${ i }`,
23
23
  'bi-': i => `bootstrap-icons ${ i }`
@@ -35,8 +35,7 @@ const mRE = /^[Mm]\s?[-+]?\.?\d/
35
35
  const imgRE = /^img:/
36
36
  const svgUseRE = /^svguse:/
37
37
  const ionRE = /^ion-/
38
- const faLaRE = /^[lf]a[srlbdk]? /
39
- const fa6RE = /^fa-(brand|regular|solid)/
38
+ const faRE = /^(fa-(solid|regular|light|brands|duotone|thin)|[lf]a[srlbdk]?) /
40
39
 
41
40
  export default createComponent({
42
41
  name: 'QIcon',
@@ -130,7 +129,7 @@ export default createComponent({
130
129
  if (matches !== null) {
131
130
  cls = libMap[ matches[ 1 ] ](icon)
132
131
  }
133
- else if (faLaRE.test(icon) === true || fa6RE.test(icon) === true) {
132
+ else if (faRE.test(icon) === true) {
134
133
  cls = icon
135
134
  }
136
135
  else if (ionRE.test(icon) === true) {
@@ -142,7 +142,7 @@ export default createComponent({
142
142
  ? [
143
143
  h('div', {
144
144
  key: 'icon',
145
- class: 'q-radio__icon-container absolute flex flex-center no-wrap'
145
+ class: 'q-radio__icon-container absolute-full flex flex-center no-wrap'
146
146
  }, [
147
147
  h(QIcon, {
148
148
  class: 'q-radio__icon',
@@ -9,20 +9,20 @@ $radio-transition: .22s cubic-bezier(0,0,.2,1) 0ms
9
9
 
10
10
  &__bg,
11
11
  &__icon-container
12
+ user-select: none
13
+
14
+ &__bg
12
15
  top: 25%
13
16
  left: 25%
14
17
  width: 50%
15
18
  height: 50%
16
- user-select: none
17
-
18
- &__bg
19
19
  -webkit-print-color-adjust: exact
20
20
  path
21
21
  fill: currentColor
22
22
 
23
23
  &__icon
24
24
  color: currentColor
25
- font-size: .6em
25
+ font-size: .5em
26
26
 
27
27
  &__check
28
28
  transform-origin: 50% 50%
@@ -56,16 +56,12 @@ $radio-transition: .22s cubic-bezier(0,0,.2,1) 0ms
56
56
 
57
57
  &--dense
58
58
 
59
- .q-checkbox__icon
60
- font-size: .6em
61
-
62
59
  .q-radio__inner
63
60
  width: .5em
64
61
  min-width: .5em
65
62
  height: .5em
66
63
 
67
- .q-radio__bg,
68
- .q-radio__icon-container
64
+ .q-radio__bg
69
65
  left: 0
70
66
  top: 0
71
67
  width: 100%
@@ -175,6 +175,7 @@ export default createComponent({
175
175
  localResetVirtualScroll,
176
176
  padVirtualScroll,
177
177
  onVirtualScrollEvt,
178
+ reset,
178
179
  scrollTo,
179
180
  setVirtualScrollSize
180
181
  } = useVirtualScroll({
@@ -432,6 +433,8 @@ export default createComponent({
432
433
 
433
434
  watch(menu, updateMenu)
434
435
 
436
+ watch(virtualScrollLength, rerenderMenu)
437
+
435
438
  function getEmittingOptionValue (opt) {
436
439
  return props.emitValue === true
437
440
  ? getOptionValue.value(opt)
@@ -1339,6 +1342,18 @@ export default createComponent({
1339
1342
  setOptionIndex(optionIndex)
1340
1343
  }
1341
1344
 
1345
+ function rerenderMenu () {
1346
+ if (menu.value === true && state.innerLoading.value === false) {
1347
+ reset()
1348
+
1349
+ nextTick(() => {
1350
+ if (menu.value === true && state.innerLoading.value === false) {
1351
+ updateMenu(true)
1352
+ }
1353
+ })
1354
+ }
1355
+ }
1356
+
1342
1357
  function updateMenuPosition () {
1343
1358
  if (dialog.value === false && menuRef.value !== null) {
1344
1359
  menuRef.value.updatePosition()
@@ -71,6 +71,9 @@ export default createComponent({
71
71
  wrapCells: Boolean,
72
72
 
73
73
  virtualScroll: Boolean,
74
+ virtualScrollTarget: {
75
+ default: void 0
76
+ },
74
77
  ...commonVirtPropsObj,
75
78
 
76
79
  noDataLabel: String,
@@ -313,6 +316,7 @@ export default createComponent({
313
316
  class: props.tableClass,
314
317
  style: props.tableStyle,
315
318
  ...virtProps.value,
319
+ scrollTarget: props.virtualScrollTarget,
316
320
  items: computedRows.value,
317
321
  type: '__qtable',
318
322
  tableColspan: computedColspan.value,
@@ -39,6 +39,10 @@
39
39
  "category": "virtual-scroll"
40
40
  },
41
41
 
42
+ "virtual-scroll-target": {
43
+ "extends": "scroll-target"
44
+ },
45
+
42
46
  "virtual-scroll-slice-size": {
43
47
  "type": [ "Number", "String" ],
44
48
  "desc": "Minimum number of rows to render in the virtual list",
@@ -19,10 +19,13 @@ export default createComponent({
19
19
  const vm = getCurrentInstance()
20
20
  const { proxy: { $q } } = vm
21
21
 
22
+ const onClick = evt => { emit('click', evt) }
23
+
22
24
  return () => {
23
25
  if (props.props === void 0) {
24
26
  return h('th', {
25
- class: props.autoWidth === true ? 'q-table--col-auto-width' : ''
27
+ class: props.autoWidth === true ? 'q-table--col-auto-width' : '',
28
+ onClick
26
29
  }, hSlot(slots.default))
27
30
  }
28
31
 
@@ -60,7 +63,7 @@ export default createComponent({
60
63
  style: col.headerStyle,
61
64
  onClick: evt => {
62
65
  col.sortable === true && props.props.sort(col) // eslint-disable-line
63
- emit('click', evt)
66
+ onClick(evt)
64
67
  }
65
68
  }
66
69
 
@@ -1,4 +1,4 @@
1
- import { h, ref, computed, watch, onBeforeMount, onMounted, onBeforeUnmount } from 'vue'
1
+ import { h, ref, computed, watch, onBeforeMount, onMounted, onBeforeUnmount, onActivated, onDeactivated } from 'vue'
2
2
 
3
3
  import QList from '../item/QList.js'
4
4
  import QMarkupTable from '../markup-table/QMarkupTable.js'
@@ -136,6 +136,14 @@ export default createComponent({
136
136
  configureScrollTarget()
137
137
  })
138
138
 
139
+ onActivated(() => {
140
+ configureScrollTarget()
141
+ })
142
+
143
+ onDeactivated(() => {
144
+ unconfigureScrollTarget()
145
+ })
146
+
139
147
  onBeforeUnmount(() => {
140
148
  unconfigureScrollTarget()
141
149
  })
@@ -13,7 +13,7 @@ describe('use-transition API', () => {
13
13
  .should('have.class', 'q-transition--fade-enter-active')
14
14
  })
15
15
 
16
- it('should use a different show transtion if defined', () => {
16
+ it('should use a different show transition if defined', () => {
17
17
  const transition = 'scale'
18
18
  mount(WrapperOne, {
19
19
  attrs: {
@@ -40,7 +40,7 @@ describe('use-transition API', () => {
40
40
  .should('have.class', 'q-transition--fade-leave-active')
41
41
  })
42
42
 
43
- it('should use a different hide transtion if defined', () => {
43
+ it('should use a different hide transition if defined', () => {
44
44
  const transition = 'scale'
45
45
  mount(WrapperOne, {
46
46
  attrs: {