quasar 2.6.6 → 2.7.2

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 (214) hide show
  1. package/dist/api/QBtnDropdown.json +1 -0
  2. package/dist/api/QBtnToggle.json +1 -0
  3. package/dist/api/QCarousel.json +2 -1
  4. package/dist/api/QCheckbox.json +1 -0
  5. package/dist/api/QChip.json +3 -1
  6. package/dist/api/QColor.json +1 -0
  7. package/dist/api/QDate.json +1 -0
  8. package/dist/api/QDialog.json +6 -0
  9. package/dist/api/QEditor.json +3 -1
  10. package/dist/api/QExpansionItem.json +1 -0
  11. package/dist/api/QFab.json +1 -0
  12. package/dist/api/QFile.json +1 -0
  13. package/dist/api/QFooter.json +1 -0
  14. package/dist/api/QHeader.json +1 -0
  15. package/dist/api/QInput.json +1 -0
  16. package/dist/api/QItem.json +3 -1
  17. package/dist/api/QKnob.json +1 -0
  18. package/dist/api/QOptionGroup.json +1 -0
  19. package/dist/api/QPagination.json +2 -1
  20. package/dist/api/QPopupEdit.json +1 -0
  21. package/dist/api/QPopupProxy.json +1 -0
  22. package/dist/api/QRadio.json +1 -0
  23. package/dist/api/QRange.json +1 -0
  24. package/dist/api/QRating.json +1 -0
  25. package/dist/api/QSelect.json +1 -0
  26. package/dist/api/QSlider.json +1 -0
  27. package/dist/api/QSplitter.json +1 -0
  28. package/dist/api/QTable.json +5 -1
  29. package/dist/api/QTabs.json +1 -0
  30. package/dist/api/QTime.json +1 -0
  31. package/dist/api/QToggle.json +1 -0
  32. package/dist/api/QTree.json +6 -3
  33. package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
  34. package/dist/icon-set/eva-icons.umd.prod.js +1 -1
  35. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
  36. package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
  37. package/dist/icon-set/fontawesome-v6-pro.umd.prod.js +1 -1
  38. package/dist/icon-set/fontawesome-v6.umd.prod.js +1 -1
  39. package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
  40. package/dist/icon-set/line-awesome.umd.prod.js +1 -1
  41. package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
  42. package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
  43. package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
  44. package/dist/icon-set/material-icons.umd.prod.js +1 -1
  45. package/dist/icon-set/material-symbols-outlined.umd.prod.js +6 -0
  46. package/dist/icon-set/material-symbols-rounded.umd.prod.js +6 -0
  47. package/dist/icon-set/material-symbols-sharp.umd.prod.js +6 -0
  48. package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
  49. package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
  50. package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
  51. package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
  52. package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
  53. package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
  54. package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
  55. package/dist/icon-set/svg-fontawesome-v6.umd.prod.js +1 -1
  56. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
  57. package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
  58. package/dist/icon-set/svg-ionicons-v6.umd.prod.js +1 -1
  59. package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
  60. package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
  61. package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
  62. package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
  63. package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
  64. package/dist/icon-set/svg-material-symbols-outlined.umd.prod.js +6 -0
  65. package/dist/icon-set/svg-material-symbols-rounded.umd.prod.js +6 -0
  66. package/dist/icon-set/svg-material-symbols-sharp.umd.prod.js +6 -0
  67. package/dist/icon-set/svg-mdi-v6.umd.prod.js +1 -1
  68. package/dist/icon-set/svg-themify.umd.prod.js +1 -1
  69. package/dist/icon-set/themify.umd.prod.js +1 -1
  70. package/dist/lang/ar-TN.umd.prod.js +1 -1
  71. package/dist/lang/ar.umd.prod.js +1 -1
  72. package/dist/lang/az-Latn.umd.prod.js +1 -1
  73. package/dist/lang/bg.umd.prod.js +1 -1
  74. package/dist/lang/bn.umd.prod.js +1 -1
  75. package/dist/lang/ca.umd.prod.js +2 -2
  76. package/dist/lang/cs.umd.prod.js +1 -1
  77. package/dist/lang/da.umd.prod.js +1 -1
  78. package/dist/lang/de.umd.prod.js +1 -1
  79. package/dist/lang/el.umd.prod.js +1 -1
  80. package/dist/lang/en-GB.umd.prod.js +1 -1
  81. package/dist/lang/en-US.umd.prod.js +1 -1
  82. package/dist/lang/eo.umd.prod.js +1 -1
  83. package/dist/lang/es.umd.prod.js +2 -2
  84. package/dist/lang/et.umd.prod.js +1 -1
  85. package/dist/lang/eu.umd.prod.js +1 -1
  86. package/dist/lang/fa-IR.umd.prod.js +1 -1
  87. package/dist/lang/fa.umd.prod.js +1 -1
  88. package/dist/lang/fi.umd.prod.js +1 -1
  89. package/dist/lang/fr.umd.prod.js +1 -1
  90. package/dist/lang/gn.umd.prod.js +1 -1
  91. package/dist/lang/he.umd.prod.js +1 -1
  92. package/dist/lang/hr.umd.prod.js +1 -1
  93. package/dist/lang/hu.umd.prod.js +1 -1
  94. package/dist/lang/id.umd.prod.js +1 -1
  95. package/dist/lang/is.umd.prod.js +1 -1
  96. package/dist/lang/it.umd.prod.js +1 -1
  97. package/dist/lang/ja.umd.prod.js +1 -1
  98. package/dist/lang/km.umd.prod.js +1 -1
  99. package/dist/lang/ko-KR.umd.prod.js +2 -2
  100. package/dist/lang/kur-CKB.umd.prod.js +1 -1
  101. package/dist/lang/kz.umd.prod.js +1 -1
  102. package/dist/lang/lt.umd.prod.js +1 -1
  103. package/dist/lang/lu.umd.prod.js +1 -1
  104. package/dist/lang/lv.umd.prod.js +1 -1
  105. package/dist/lang/ml.umd.prod.js +1 -1
  106. package/dist/lang/mm.umd.prod.js +6 -0
  107. package/dist/lang/ms.umd.prod.js +1 -1
  108. package/dist/lang/my.umd.prod.js +1 -1
  109. package/dist/lang/nb-NO.umd.prod.js +1 -1
  110. package/dist/lang/nl.umd.prod.js +1 -1
  111. package/dist/lang/pl.umd.prod.js +1 -1
  112. package/dist/lang/pt-BR.umd.prod.js +1 -1
  113. package/dist/lang/pt.umd.prod.js +1 -1
  114. package/dist/lang/ro.umd.prod.js +1 -1
  115. package/dist/lang/ru.umd.prod.js +1 -1
  116. package/dist/lang/sk.umd.prod.js +1 -1
  117. package/dist/lang/sl.umd.prod.js +1 -1
  118. package/dist/lang/sm.umd.prod.js +6 -0
  119. package/dist/lang/sr-CYR.umd.prod.js +1 -1
  120. package/dist/lang/sr.umd.prod.js +1 -1
  121. package/dist/lang/sv.umd.prod.js +1 -1
  122. package/dist/lang/ta.umd.prod.js +1 -1
  123. package/dist/lang/th.umd.prod.js +1 -1
  124. package/dist/lang/tr.umd.prod.js +1 -1
  125. package/dist/lang/ug.umd.prod.js +1 -1
  126. package/dist/lang/uk.umd.prod.js +1 -1
  127. package/dist/lang/vi.umd.prod.js +1 -1
  128. package/dist/lang/zh-CN.umd.prod.js +1 -1
  129. package/dist/lang/zh-TW.umd.prod.js +1 -1
  130. package/dist/quasar.addon.rtl.css +251 -0
  131. package/dist/quasar.cjs.prod.js +2 -2
  132. package/dist/quasar.css +9 -9
  133. package/dist/quasar.esm.prod.js +2 -2
  134. package/dist/quasar.prod.css +1 -1
  135. package/dist/quasar.rtl.css +1229 -9
  136. package/dist/quasar.rtl.prod.css +1 -1
  137. package/dist/quasar.sass +10 -9
  138. package/dist/quasar.umd.js +182 -126
  139. package/dist/quasar.umd.prod.js +2 -2
  140. package/dist/types/api/quploader.d.ts +7 -7
  141. package/dist/types/extras/icon-set.d.ts +6 -0
  142. package/dist/types/index.d.ts +265 -255
  143. package/dist/types/utils/dom.d.ts +1 -1
  144. package/dist/types/utils.d.ts +11 -0
  145. package/dist/vetur/quasar-attributes.json +4 -0
  146. package/dist/vetur/quasar-tags.json +2 -1
  147. package/dist/web-types/web-types.json +12 -2
  148. package/icon-set/material-symbols-outlined.js +133 -0
  149. package/icon-set/material-symbols-outlined.mjs +128 -0
  150. package/icon-set/material-symbols-rounded.js +133 -0
  151. package/icon-set/material-symbols-rounded.mjs +128 -0
  152. package/icon-set/material-symbols-sharp.js +133 -0
  153. package/icon-set/material-symbols-sharp.mjs +128 -0
  154. package/icon-set/svg-material-symbols-outlined.js +201 -0
  155. package/icon-set/svg-material-symbols-outlined.mjs +201 -0
  156. package/icon-set/svg-material-symbols-rounded.js +201 -0
  157. package/icon-set/svg-material-symbols-rounded.mjs +201 -0
  158. package/icon-set/svg-material-symbols-sharp.js +201 -0
  159. package/icon-set/svg-material-symbols-sharp.mjs +201 -0
  160. package/lang/ca.js +31 -31
  161. package/lang/ca.mjs +31 -31
  162. package/lang/es.js +1 -1
  163. package/lang/es.mjs +1 -1
  164. package/lang/index.json +8 -0
  165. package/lang/ko-KR.js +21 -21
  166. package/lang/ko-KR.mjs +21 -21
  167. package/lang/mm.js +96 -0
  168. package/lang/mm.mjs +91 -0
  169. package/lang/sm.js +96 -0
  170. package/lang/sm.mjs +91 -0
  171. package/package.json +15 -15
  172. package/src/api.extends.json +1 -0
  173. package/src/components/avatar/__tests__/QAvatar.spec.js +1 -1
  174. package/src/components/badge/QBadge.js +2 -2
  175. package/src/components/badge/__tests__/QBadge.spec.js +1 -1
  176. package/src/components/btn/QBtn.js +2 -2
  177. package/src/components/checkbox/use-checkbox.js +8 -7
  178. package/src/components/dialog/QDialog.js +3 -1
  179. package/src/components/dialog/QDialog.json +7 -0
  180. package/src/components/editor/QEditor.js +11 -25
  181. package/src/components/file/QFile.js +6 -1
  182. package/src/components/icon/QIcon.js +24 -1
  183. package/src/components/icon/QIcon.sass +7 -3
  184. package/src/components/img/QImg.sass +1 -0
  185. package/src/components/infinite-scroll/QInfiniteScroll.js +10 -10
  186. package/src/components/input/QInput.js +6 -1
  187. package/src/components/item/QItem.js +5 -2
  188. package/src/components/item/QItem.json +2 -1
  189. package/src/components/layout/QLayout.js +2 -1
  190. package/src/components/menu/__tests__/QMenu.spec.js +23 -23
  191. package/src/components/pagination/QPagination.json +1 -1
  192. package/src/components/radio/QRadio.js +2 -2
  193. package/src/components/select/QSelect.js +28 -16
  194. package/src/components/select/__tests__/QSelect.spec.js +427 -451
  195. package/src/components/slider/use-slider.js +1 -1
  196. package/src/components/table/QTable.js +0 -1
  197. package/src/components/table/QTable.json +3 -0
  198. package/src/components/table/QTable.sass +1 -1
  199. package/src/components/tabs/QTabs.sass +0 -6
  200. package/src/components/uploader/uploader-core.js +23 -18
  201. package/src/components/virtual-scroll/use-virtual-scroll.js +9 -4
  202. package/src/composables/private/__tests__/use-anchor.spec.js +6 -6
  203. package/src/composables/private/__tests__/use-field.spec.js +7 -7
  204. package/src/composables/private/__tests__/use-model-toggle.spec.js +20 -19
  205. package/src/composables/private/__tests__/use-size.spec.js +2 -2
  206. package/src/composables/private/__tests__/use-transition.spec.js +5 -5
  207. package/src/composables/private/__tests__/use-validate.spec.js +5 -5
  208. package/src/composables/private/use-anchor.js +1 -1
  209. package/src/composables/private/use-field.js +2 -1
  210. package/src/composables/private/use-key-composition.js +16 -13
  211. package/src/directives/Ripple.js +2 -7
  212. package/src/utils/date.js +1 -1
  213. package/src/utils/private/global-dialog.js +22 -10
  214. package/src/components/select/__tests__/WrapperOne.vue +0 -28
package/lang/mm.mjs ADDED
@@ -0,0 +1,91 @@
1
+ export default {
2
+ isoName: 'mm',
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
+ firstDayOfWeek: 1, // 0-6, 0 - Sunday, 1 Monday, ...
25
+ format24h: false,
26
+ pluralDay: 'ရက်'
27
+ },
28
+ table: {
29
+ noData: 'ဒေတာမရှိပါ',
30
+ noResults: 'ကိုက်ညီသောရလဒ်မရှိပါ',
31
+ loading: 'လုပ်ဆောင်နေသည်',
32
+ selectedRecords: rows => (
33
+ rows > 0
34
+ ? rows + ' ကြောင်းရွေးချယ်ထားသည်'
35
+ : 'ဘာမှ မရွေးချယ်ထားပါ'
36
+ ),
37
+ recordsPerPage: 'တစ်မျက်နှာ အကြောင်းရေတွက်',
38
+ allRows: 'အားလုံး',
39
+ pagination: (start, end, total) => start + 'မှ' + end + 'ထိ' + 'အားလုံး' + total + 'ရှိ',
40
+ columns: 'ကော်လံ'
41
+ },
42
+ editor: {
43
+ url: 'URL',
44
+ bold: 'Bold',
45
+ italic: 'Italic',
46
+ strikethrough: 'Strikethrough',
47
+ underline: 'Underline',
48
+ unorderedList: 'Unordered List',
49
+ orderedList: 'Ordered List',
50
+ subscript: 'Subscript',
51
+ superscript: 'Superscript',
52
+ hyperlink: 'Hyperlink',
53
+ toggleFullscreen: 'Toggle Fullscreen',
54
+ quote: 'Quote',
55
+ left: 'Left align',
56
+ center: 'Center align',
57
+ right: 'Right align',
58
+ justify: 'Justify align',
59
+ print: 'Print',
60
+ outdent: 'Decrease indentation',
61
+ indent: 'Increase indentation',
62
+ removeFormat: 'Remove formatting',
63
+ formatting: 'Formatting',
64
+ fontSize: 'Font Size',
65
+ align: 'Align',
66
+ hr: 'Insert Horizontal Rule',
67
+ undo: 'Undo',
68
+ redo: 'Redo',
69
+ heading1: 'Heading 1',
70
+ heading2: 'Heading 2',
71
+ heading3: 'Heading 3',
72
+ heading4: 'Heading 4',
73
+ heading5: 'Heading 5',
74
+ heading6: 'Heading 6',
75
+ paragraph: 'Paragraph',
76
+ code: 'Code',
77
+ size1: 'Very small',
78
+ size2: 'A bit small',
79
+ size3: 'Normal',
80
+ size4: 'Medium-large',
81
+ size5: 'Big',
82
+ size6: 'Very big',
83
+ size7: 'Maximum',
84
+ defaultFont: 'Default Font',
85
+ viewSource: 'View Source'
86
+ },
87
+ tree: {
88
+ noNodes: 'No nodes available',
89
+ noResults: 'No matching nodes found'
90
+ }
91
+ }
package/lang/sm.js ADDED
@@ -0,0 +1,96 @@
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 (sm.mjs).
5
+ */
6
+ module.exports = {
7
+ isoName: 'sm',
8
+ nativeName: 'Fa\'asāmoa',
9
+ label: {
10
+ clear: 'Kilia',
11
+ ok: '\'Oukei',
12
+ cancel: 'Fa\'alēaogāina',
13
+ close: 'Tapuni',
14
+ set: 'Seti',
15
+ select: 'Filifili',
16
+ reset: 'Toe seti',
17
+ remove: '\'Ave\'ese',
18
+ update: 'Fa\'afou',
19
+ create: 'Fatu',
20
+ search: 'Sā\'ili',
21
+ filter: 'Fa\'amamā',
22
+ refresh: 'Fa\'afou'
23
+ },
24
+ date: {
25
+ days: 'Aso Sā_Aso Gafua_Aso Lua_Aso Lulu_Aso Tofi_Aso Faraile_Aso To\'onai'.split('_'),
26
+ daysShort: 'Sā_Gaf_Lua_Lul_Tof_Far_Too'.split('_'),
27
+ months: 'Ianuari_Fepuari_Mati_\'Aperila_Mē_Iuni_Iulai_\'Aokuso_Sētema_\'Oketopa_Nōvema_Tēsema'.split('_'),
28
+ monthsShort: 'Ian_Fep_Mat_Ape_Mē_Iun_Iul_Auk_Sēt_Oke_Nōv_Tēs'.split('_'),
29
+ firstDayOfWeek: 1, // 0-6, 0 - Sunday, 1 Monday, ...
30
+ format24h: false,
31
+ pluralDay: 'aso'
32
+ },
33
+ table: {
34
+ noData: 'Lēai ni fa\'amatalaga o maua',
35
+ noResults: 'Lēai ni fa\'amaumauga na maua',
36
+ loading: '\'Āmatalia...',
37
+ selectedRecords: rows => (
38
+ rows === 1
39
+ ? '1 le laina \'ua filifilia.'
40
+ : (rows === 0 ? 'Lēai ni' : rows) + ' laina \'ua filifilia.'
41
+ ),
42
+ recordsPerPage: 'Laina \'i le ītūlau:',
43
+ allRows: 'Laina \'uma',
44
+ pagination: (start, end, total) => start + '-' + end + ' o ' + total,
45
+ columns: 'Poutū'
46
+ },
47
+ editor: {
48
+ url: 'Tuātusi initaneti',
49
+ bold: 'Fa\'aolaola',
50
+ italic: 'Fa\'api\'o',
51
+ strikethrough: 'Kolosi',
52
+ underline: 'Vase lalo',
53
+ unorderedList: 'Lisi \'e fe\'i fa\'atulagaina',
54
+ orderedList: 'Lisi \'ua fa\'atulagaina',
55
+ subscript: 'Fa\'anini\'i i lalo',
56
+ superscript: 'Fa\'anini\'i i luga',
57
+ hyperlink: 'So\'otaga initaneti',
58
+ toggleFullscreen: 'Fa\'atelē ma fa\'alititi le va\'ai',
59
+ quote: 'Saunoaga',
60
+ left: 'Ōgatasi agavale',
61
+ center: 'Ōgatasi \'ogātotonu',
62
+ right: 'Ōgatasi taumatau',
63
+ justify: 'Ōgatasi lautele',
64
+ print: 'Lolomi',
65
+ outdent: 'Fa\'alaititi le va',
66
+ indent: 'Fa\'atelē le va',
67
+ removeFormat: '\'Ave\'ese le fa\'atulagaga',
68
+ formatting: 'Fa\'atulagaga',
69
+ fontSize: 'Telē o le mata\'itusi',
70
+ align: 'Ōgatasi',
71
+ hr: 'Fa\'aopoopo se laina',
72
+ undo: 'Toe \'ave\'ese',
73
+ redo: 'Toe fai',
74
+ heading1: 'Ulutala 1',
75
+ heading2: 'Ulutala 2',
76
+ heading3: 'Ulutala 3',
77
+ heading4: 'Ulutala 4',
78
+ heading5: 'Ulutala 5',
79
+ heading6: 'Ulutala 6',
80
+ paragraph: 'Palakalafa',
81
+ code: 'Fa\'ailo fa\'akomepiuta',
82
+ size1: 'Matuā laitiiti',
83
+ size2: 'Fa\'alaititi',
84
+ size3: 'Tūlaga masani',
85
+ size4: 'Lāpo\'a feololo',
86
+ size5: 'Lāpo\'a',
87
+ size6: 'Lāpo\'a atu',
88
+ size7: 'Pito i lāpo\'a',
89
+ defaultFont: 'Foliga fou ole mata\'itusi',
90
+ viewSource: 'Va\'ai \'ile tusitusiga fa\'akomepiuta'
91
+ },
92
+ tree: {
93
+ noNodes: 'Lēai ni vāega o maua',
94
+ noResults: 'Lēai ni vāega na maua'
95
+ }
96
+ }
package/lang/sm.mjs ADDED
@@ -0,0 +1,91 @@
1
+ export default {
2
+ isoName: 'sm',
3
+ nativeName: 'Fa\'asāmoa',
4
+ label: {
5
+ clear: 'Kilia',
6
+ ok: '\'Oukei',
7
+ cancel: 'Fa\'alēaogāina',
8
+ close: 'Tapuni',
9
+ set: 'Seti',
10
+ select: 'Filifili',
11
+ reset: 'Toe seti',
12
+ remove: '\'Ave\'ese',
13
+ update: 'Fa\'afou',
14
+ create: 'Fatu',
15
+ search: 'Sā\'ili',
16
+ filter: 'Fa\'amamā',
17
+ refresh: 'Fa\'afou'
18
+ },
19
+ date: {
20
+ days: 'Aso Sā_Aso Gafua_Aso Lua_Aso Lulu_Aso Tofi_Aso Faraile_Aso To\'onai'.split('_'),
21
+ daysShort: 'Sā_Gaf_Lua_Lul_Tof_Far_Too'.split('_'),
22
+ months: 'Ianuari_Fepuari_Mati_\'Aperila_Mē_Iuni_Iulai_\'Aokuso_Sētema_\'Oketopa_Nōvema_Tēsema'.split('_'),
23
+ monthsShort: 'Ian_Fep_Mat_Ape_Mē_Iun_Iul_Auk_Sēt_Oke_Nōv_Tēs'.split('_'),
24
+ firstDayOfWeek: 1, // 0-6, 0 - Sunday, 1 Monday, ...
25
+ format24h: false,
26
+ pluralDay: 'aso'
27
+ },
28
+ table: {
29
+ noData: 'Lēai ni fa\'amatalaga o maua',
30
+ noResults: 'Lēai ni fa\'amaumauga na maua',
31
+ loading: '\'Āmatalia...',
32
+ selectedRecords: rows => (
33
+ rows === 1
34
+ ? '1 le laina \'ua filifilia.'
35
+ : (rows === 0 ? 'Lēai ni' : rows) + ' laina \'ua filifilia.'
36
+ ),
37
+ recordsPerPage: 'Laina \'i le ītūlau:',
38
+ allRows: 'Laina \'uma',
39
+ pagination: (start, end, total) => start + '-' + end + ' o ' + total,
40
+ columns: 'Poutū'
41
+ },
42
+ editor: {
43
+ url: 'Tuātusi initaneti',
44
+ bold: 'Fa\'aolaola',
45
+ italic: 'Fa\'api\'o',
46
+ strikethrough: 'Kolosi',
47
+ underline: 'Vase lalo',
48
+ unorderedList: 'Lisi \'e fe\'i fa\'atulagaina',
49
+ orderedList: 'Lisi \'ua fa\'atulagaina',
50
+ subscript: 'Fa\'anini\'i i lalo',
51
+ superscript: 'Fa\'anini\'i i luga',
52
+ hyperlink: 'So\'otaga initaneti',
53
+ toggleFullscreen: 'Fa\'atelē ma fa\'alititi le va\'ai',
54
+ quote: 'Saunoaga',
55
+ left: 'Ōgatasi agavale',
56
+ center: 'Ōgatasi \'ogātotonu',
57
+ right: 'Ōgatasi taumatau',
58
+ justify: 'Ōgatasi lautele',
59
+ print: 'Lolomi',
60
+ outdent: 'Fa\'alaititi le va',
61
+ indent: 'Fa\'atelē le va',
62
+ removeFormat: '\'Ave\'ese le fa\'atulagaga',
63
+ formatting: 'Fa\'atulagaga',
64
+ fontSize: 'Telē o le mata\'itusi',
65
+ align: 'Ōgatasi',
66
+ hr: 'Fa\'aopoopo se laina',
67
+ undo: 'Toe \'ave\'ese',
68
+ redo: 'Toe fai',
69
+ heading1: 'Ulutala 1',
70
+ heading2: 'Ulutala 2',
71
+ heading3: 'Ulutala 3',
72
+ heading4: 'Ulutala 4',
73
+ heading5: 'Ulutala 5',
74
+ heading6: 'Ulutala 6',
75
+ paragraph: 'Palakalafa',
76
+ code: 'Fa\'ailo fa\'akomepiuta',
77
+ size1: 'Matuā laitiiti',
78
+ size2: 'Fa\'alaititi',
79
+ size3: 'Tūlaga masani',
80
+ size4: 'Lāpo\'a feololo',
81
+ size5: 'Lāpo\'a',
82
+ size6: 'Lāpo\'a atu',
83
+ size7: 'Pito i lāpo\'a',
84
+ defaultFont: 'Foliga fou ole mata\'itusi',
85
+ viewSource: 'Va\'ai \'ile tusitusiga fa\'akomepiuta'
86
+ },
87
+ tree: {
88
+ noNodes: 'Lēai ni vāega o maua',
89
+ noResults: 'Lēai ni vāega na maua'
90
+ }
91
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "quasar",
3
- "version": "2.6.6",
3
+ "version": "2.7.2",
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",
@@ -27,11 +27,10 @@
27
27
  "dev:umd": "node build/script.test-umd.js",
28
28
  "dev:quploader": "cd dev/upload-server && yarn && cd ../.. && node dev/upload-server/server.js",
29
29
  "build": "node build/script.build.js",
30
- "test": "yarn lint && yarn build",
31
30
  "lint": "eslint --ext .js,.vue src dev",
32
31
  "lint-fix": "eslint --ext .js,.vue src dev --fix",
33
- "test:unit": "cd ./dev && cypress open-ct && cd ..",
34
- "test:unit:ci": "cd ./dev && cypress run-ct && cd ..",
32
+ "test:component": "cd ./dev && cypress open-ct && cd ..",
33
+ "test:component:ci": "cd ./dev && cypress run-ct --record --parallel && cd ..",
35
34
  "test:create": "node ./test/cypress/helpers/create-spec.js -c"
36
35
  },
37
36
  "repository": {
@@ -66,25 +65,26 @@
66
65
  },
67
66
  "homepage": "https://quasar.dev",
68
67
  "devDependencies": {
69
- "@quasar/app-vite": "^1.0.0-beta.5",
68
+ "@quasar/app-vite": "^1.0.1",
70
69
  "@quasar/extras": "^1.12.0",
71
- "@quasar/quasar-app-extension-testing-e2e-cypress": "^4.0.1",
70
+ "@quasar/quasar-app-extension-testing-e2e-cypress": "^4.1.2",
72
71
  "@rollup/plugin-node-resolve": "^11.2.1",
73
72
  "@rollup/plugin-replace": "^2.3.3",
74
- "autoprefixer": "^10.4.4",
73
+ "autoprefixer": "^10.4.7",
75
74
  "babel-preset-es2015-rollup": "^3.0.0",
76
75
  "cli-highlight": "^2.1.11",
77
- "cssnano": "^5.1.4",
78
- "diff": "^5.0.0",
76
+ "cssnano": "^5.1.12",
77
+ "diff": "^5.1.0",
79
78
  "eslint": "^7.4.0",
80
- "eslint-config-standard": "^16.0.2",
79
+ "eslint-config-standard": "^17.0.0",
81
80
  "eslint-friendly-formatter": "^4.0.1",
82
81
  "eslint-plugin-cypress": "^2.12.1",
83
- "eslint-plugin-import": "^2.18.2",
82
+ "eslint-plugin-import": "^2.19.1",
83
+ "eslint-plugin-n": "^15.0.0",
84
84
  "eslint-plugin-no-only-tests": "^2.6.0",
85
85
  "eslint-plugin-node": "^11.1.0",
86
- "eslint-plugin-promise": "^4.2.1",
87
- "eslint-plugin-vue": "^7.0.0",
86
+ "eslint-plugin-promise": "^6.0.0",
87
+ "eslint-plugin-vue": "^8.0.0",
88
88
  "fast-glob": "^3.2.7",
89
89
  "module-alias": "^2.2.2",
90
90
  "postcss-rtlcss": "^3.5.3",
@@ -95,8 +95,8 @@
95
95
  "rollup": "^2.34.0",
96
96
  "table": "^6.0.4",
97
97
  "uglify-es": "^3.3.9",
98
- "vue": "^3.0.0",
99
- "vue-router": "^4.0.0",
98
+ "vue": "^3.2.37",
99
+ "vue-router": "^4.0.16",
100
100
  "yargs": "^17.3.0"
101
101
  },
102
102
  "vetur": {
@@ -105,6 +105,7 @@
105
105
  "model-value": {
106
106
  "desc": "Model of the component; Either use this property (along with a listener for 'update:model-value' event) OR use v-model directive",
107
107
  "required": true,
108
+ "syncable": true,
108
109
  "category": "model"
109
110
  },
110
111
 
@@ -1,5 +1,5 @@
1
1
  import { mount } from '@cypress/vue'
2
- import QAvatar from '../QAvatar'
2
+ import QAvatar from '../QAvatar.js'
3
3
 
4
4
  describe('Avatar API', () => {
5
5
  describe('Props', () => {
@@ -1,7 +1,7 @@
1
1
  import { h, computed } from 'vue'
2
2
 
3
3
  import { createComponent } from '../../utils/private/create.js'
4
- import { hSlot } from '../../utils/private/render.js'
4
+ import { hMergeSlot } from '../../utils/private/render.js'
5
5
 
6
6
  const alignValues = [ 'top', 'middle', 'bottom' ]
7
7
 
@@ -55,6 +55,6 @@ export default createComponent({
55
55
  style: style.value,
56
56
  role: 'alert',
57
57
  'aria-label': props.label
58
- }, props.label !== void 0 ? props.label : hSlot(slots.default))
58
+ }, hMergeSlot(slots.default, props.label !== void 0 ? [ props.label ] : []))
59
59
  }
60
60
  })
@@ -1,5 +1,5 @@
1
1
  // import { mount } from '@cypress/vue'
2
- // import QBadge from '../QBadge'
2
+ // import QBadge from '../QBadge.js'
3
3
 
4
4
  // const snapshotOptions = { customSnapshotsDir: '../src/components/badge/__tests__' }
5
5
 
@@ -329,10 +329,10 @@ export default createComponent({
329
329
  if (props.loading === true && props.percentage !== void 0) {
330
330
  child.push(
331
331
  h('span', {
332
- class: 'q-btn__progress absolute-full overflow-hidden'
332
+ class: 'q-btn__progress absolute-full overflow-hidden' + (props.darkPercentage === true ? ' q-btn__progress--dark' : '')
333
333
  }, [
334
334
  h('span', {
335
- class: 'q-btn__progress-indicator fit block' + (props.darkPercentage === true ? ' q-btn__progress--dark' : ''),
335
+ class: 'q-btn__progress-indicator fit block',
336
336
  style: percentageStyle.value
337
337
  })
338
338
  ])
@@ -1,4 +1,4 @@
1
- import { h, ref, computed, getCurrentInstance } from 'vue'
1
+ import { h, ref, computed, getCurrentInstance, toRaw } from 'vue'
2
2
 
3
3
  import useDark, { useDarkProps } from '../../composables/private/use-dark.js'
4
4
  import useSize, { useSizeProps } from '../../composables/private/use-size.js'
@@ -61,22 +61,23 @@ export default function (type, getInner) {
61
61
  props.val !== void 0 && Array.isArray(props.modelValue)
62
62
  )
63
63
 
64
- const index = computed(() => (
65
- modelIsArray.value === true
66
- ? props.modelValue.indexOf(props.val)
64
+ const index = computed(() => {
65
+ const val = toRaw(props.val)
66
+ return modelIsArray.value === true
67
+ ? props.modelValue.findIndex(opt => toRaw(opt) === val)
67
68
  : -1
68
- ))
69
+ })
69
70
 
70
71
  const isTrue = computed(() => (
71
72
  modelIsArray.value === true
72
73
  ? index.value > -1
73
- : props.modelValue === props.trueValue
74
+ : toRaw(props.modelValue) === toRaw(props.trueValue)
74
75
  ))
75
76
 
76
77
  const isFalse = computed(() => (
77
78
  modelIsArray.value === true
78
79
  ? index.value === -1
79
- : props.modelValue === props.falseValue
80
+ : toRaw(props.modelValue) === toRaw(props.falseValue)
80
81
  ))
81
82
 
82
83
  const isIndeterminate = computed(() =>
@@ -47,6 +47,7 @@ export default createComponent({
47
47
 
48
48
  persistent: Boolean,
49
49
  autoClose: Boolean,
50
+ allowFocusOutside: Boolean,
50
51
 
51
52
  noEscDismiss: Boolean,
52
53
  noBackdropDismiss: Boolean,
@@ -351,7 +352,8 @@ export default createComponent({
351
352
  function onFocusChange (evt) {
352
353
  // the focus is not in a vue child component
353
354
  if (
354
- portalIsAccessible.value === true
355
+ props.allowFocusOutside !== true
356
+ && portalIsAccessible.value === true
355
357
  && childHasFocus(innerRef.value, evt.target) !== true
356
358
  ) {
357
359
  focus('[tabindex]:not([tabindex="-1"])')
@@ -92,6 +92,13 @@
92
92
  "desc": "Do not shake up the Dialog to catch user's attention",
93
93
  "category": "behavior",
94
94
  "addedIn": "v2.1.1"
95
+ },
96
+
97
+ "allow-focus-outside": {
98
+ "type": "Boolean",
99
+ "desc": "Allow elements outside of the Dialog to be focusable; By default, for accessibility reasons, QDialog does not allow outer focus",
100
+ "category": "behavior",
101
+ "addedIn": "v2.7.2"
95
102
  }
96
103
  },
97
104
 
@@ -1,4 +1,4 @@
1
- import { h, ref, computed, watch, onMounted, nextTick, getCurrentInstance } from 'vue'
1
+ import { h, ref, computed, watch, onMounted, onBeforeUnmount, nextTick, getCurrentInstance } from 'vue'
2
2
 
3
3
  import Caret from './editor-caret.js'
4
4
  import { getToolbar, getFonts, getLinkEditor } from './editor-utils.js'
@@ -400,27 +400,12 @@ export default createComponent({
400
400
  }
401
401
  }
402
402
 
403
- function onMousedown () {
403
+ function onPointerStart () {
404
404
  offsetBottom = void 0
405
405
  }
406
406
 
407
- function onMouseup (e) {
407
+ function onSelectionchange (e) {
408
408
  eVm.caret.save()
409
- emit('mouseup', e)
410
- }
411
-
412
- function onTouchstartPassive () {
413
- offsetBottom = void 0
414
- }
415
-
416
- function onKeyup (e) {
417
- eVm.caret.save()
418
- emit('keyup', e)
419
- }
420
-
421
- function onTouchend (e) {
422
- eVm.caret.save()
423
- emit('touchend', e)
424
409
  }
425
410
 
426
411
  function setContent (v, restorePosition) {
@@ -477,6 +462,12 @@ export default createComponent({
477
462
  eVm.caret = proxy.caret = new Caret(contentRef.value, eVm)
478
463
  setContent(props.modelValue)
479
464
  refreshToolbar()
465
+
466
+ document.addEventListener('selectionchange', onSelectionchange)
467
+ })
468
+
469
+ onBeforeUnmount(() => {
470
+ document.removeEventListener('selectionchange', onSelectionchange)
480
471
  })
481
472
 
482
473
  return () => {
@@ -532,13 +523,8 @@ export default createComponent({
532
523
  onFocus,
533
524
 
534
525
  // clean saved scroll position
535
- onMousedown,
536
- onTouchstartPassive,
537
-
538
- // save caret
539
- onMouseup,
540
- onKeyup,
541
- onTouchend
526
+ onMousedown: onPointerStart,
527
+ onTouchstartPassive: onPointerStart
542
528
  })
543
529
  ])
544
530
  }
@@ -103,6 +103,11 @@ export default createComponent({
103
103
  disabled: state.editable.value !== true
104
104
  }))
105
105
 
106
+ const fieldClass = computed(() =>
107
+ 'q-file q-field--auto-height'
108
+ + (dnd.value === true ? ' q-file--dnd' : '')
109
+ )
110
+
106
111
  const isAppending = computed(() =>
107
112
  props.multiple === true && props.append === true
108
113
  )
@@ -235,7 +240,7 @@ export default createComponent({
235
240
  }
236
241
 
237
242
  Object.assign(state, {
238
- fieldClass: { value: 'q-file q-field--auto-height' },
243
+ fieldClass,
239
244
  emitValue,
240
245
  hasValue,
241
246
  inputRef,
@@ -29,8 +29,15 @@ const matMap = {
29
29
  s_: '-sharp'
30
30
  }
31
31
 
32
+ const symMap = {
33
+ sym_o_: '-outlined',
34
+ sym_r_: '-rounded',
35
+ sym_s_: '-sharp'
36
+ }
37
+
32
38
  const libRE = new RegExp('^(' + Object.keys(libMap).join('|') + ')')
33
39
  const matRE = new RegExp('^(' + Object.keys(matMap).join('|') + ')')
40
+ const symRE = new RegExp('^(' + Object.keys(symMap).join('|') + ')')
34
41
  const mRE = /^[Mm]\s?[-+]?\.?\d/
35
42
  const imgRE = /^img:/
36
43
  const svgUseRE = /^svguse:/
@@ -135,6 +142,22 @@ export default createComponent({
135
142
  else if (ionRE.test(icon) === true) {
136
143
  cls = `ionicons ion-${ $q.platform.is.ios === true ? 'ios' : 'md' }${ icon.substring(3) }`
137
144
  }
145
+ else if (symRE.test(icon) === true) {
146
+ // "notranslate" class is for Google Translate
147
+ // to avoid tampering with Material Symbols ligature font
148
+ //
149
+ // Caution: To be able to add suffix to the class name,
150
+ // keep the 'material-symbols' at the end of the string.
151
+ cls = 'notranslate material-symbols'
152
+
153
+ const matches = icon.match(symRE)
154
+ if (matches !== null) {
155
+ icon = icon.substring(6)
156
+ cls += symMap[ matches[ 1 ] ]
157
+ }
158
+
159
+ content = icon
160
+ }
138
161
  else {
139
162
  // "notranslate" class is for Google Translate
140
163
  // to avoid tampering with Material Icons ligature font
@@ -179,7 +202,7 @@ export default createComponent({
179
202
  if (type.value.svg === true) {
180
203
  return h('span', data, hMergeSlot(slots.default, [
181
204
  h('svg', {
182
- viewBox: type.value.viewBox
205
+ viewBox: type.value.viewBox || '0 0 24 24'
183
206
  }, type.value.nodes)
184
207
  ]))
185
208
  }
@@ -2,6 +2,7 @@
2
2
  line-height: 1
3
3
  width: 1em
4
4
  height: 1em
5
+ flex-shrink: 0
5
6
  letter-spacing: normal
6
7
  text-transform: none
7
8
  white-space: nowrap
@@ -21,14 +22,17 @@
21
22
 
22
23
  > svg,
23
24
  > img
24
- width: 1em
25
- height: 1em
25
+ width: 100%
26
+ height: 100%
26
27
 
27
28
  .q-icon,
28
29
  .material-icons,
29
30
  .material-icons-outlined,
30
31
  .material-icons-round,
31
- .material-icons-sharp
32
+ .material-icons-sharp,
33
+ .material-symbols-outlined,
34
+ .material-symbols-rounded,
35
+ .material-symbols-sharp
32
36
  user-select: none
33
37
  cursor: inherit
34
38
  font-size: inherit
@@ -10,6 +10,7 @@
10
10
 
11
11
  &__container
12
12
  border-radius: inherit
13
+ font-size: 0
13
14
 
14
15
  &__image
15
16
  border-radius: inherit