quasar 2.16.8 → 2.16.10

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 (145) hide show
  1. package/dist/api/BottomSheet.json +1 -1
  2. package/dist/api/Dialog.json +1 -1
  3. package/dist/api/QTable.json +1 -1
  4. package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
  5. package/dist/icon-set/eva-icons.umd.prod.js +1 -1
  6. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
  7. package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
  8. package/dist/icon-set/fontawesome-v6-pro.umd.prod.js +1 -1
  9. package/dist/icon-set/fontawesome-v6.umd.prod.js +1 -1
  10. package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
  11. package/dist/icon-set/line-awesome.umd.prod.js +1 -1
  12. package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
  13. package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
  14. package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
  15. package/dist/icon-set/material-icons.umd.prod.js +1 -1
  16. package/dist/icon-set/material-symbols-outlined.umd.prod.js +2 -2
  17. package/dist/icon-set/material-symbols-rounded.umd.prod.js +2 -2
  18. package/dist/icon-set/material-symbols-sharp.umd.prod.js +2 -2
  19. package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
  20. package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
  21. package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
  22. package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
  23. package/dist/icon-set/mdi-v7.umd.prod.js +1 -1
  24. package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
  25. package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
  26. package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
  27. package/dist/icon-set/svg-fontawesome-v6.umd.prod.js +1 -1
  28. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
  29. package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
  30. package/dist/icon-set/svg-ionicons-v6.umd.prod.js +1 -1
  31. package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
  32. package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
  33. package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
  34. package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
  35. package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
  36. package/dist/icon-set/svg-material-symbols-outlined.umd.prod.js +2 -2
  37. package/dist/icon-set/svg-material-symbols-rounded.umd.prod.js +2 -2
  38. package/dist/icon-set/svg-material-symbols-sharp.umd.prod.js +2 -2
  39. package/dist/icon-set/svg-mdi-v6.umd.prod.js +1 -1
  40. package/dist/icon-set/svg-mdi-v7.umd.prod.js +1 -1
  41. package/dist/icon-set/svg-themify.umd.prod.js +1 -1
  42. package/dist/icon-set/themify.umd.prod.js +1 -1
  43. package/dist/lang/ar-TN.umd.prod.js +1 -1
  44. package/dist/lang/ar.umd.prod.js +1 -1
  45. package/dist/lang/az-Latn.umd.prod.js +1 -1
  46. package/dist/lang/bg.umd.prod.js +1 -1
  47. package/dist/lang/bn.umd.prod.js +1 -1
  48. package/dist/lang/bs-BA.umd.prod.js +7 -0
  49. package/dist/lang/ca.umd.prod.js +1 -1
  50. package/dist/lang/cs.umd.prod.js +1 -1
  51. package/dist/lang/da.umd.prod.js +1 -1
  52. package/dist/lang/de-CH.umd.prod.js +1 -1
  53. package/dist/lang/de-DE.umd.prod.js +1 -1
  54. package/dist/lang/de.umd.prod.js +1 -1
  55. package/dist/lang/el.umd.prod.js +1 -1
  56. package/dist/lang/en-GB.umd.prod.js +1 -1
  57. package/dist/lang/en-US.umd.prod.js +1 -1
  58. package/dist/lang/eo.umd.prod.js +1 -1
  59. package/dist/lang/es.umd.prod.js +1 -1
  60. package/dist/lang/et.umd.prod.js +1 -1
  61. package/dist/lang/eu.umd.prod.js +1 -1
  62. package/dist/lang/fa-IR.umd.prod.js +1 -1
  63. package/dist/lang/fa.umd.prod.js +1 -1
  64. package/dist/lang/fi.umd.prod.js +1 -1
  65. package/dist/lang/fr.umd.prod.js +1 -1
  66. package/dist/lang/gn.umd.prod.js +1 -1
  67. package/dist/lang/he.umd.prod.js +1 -1
  68. package/dist/lang/hi.umd.prod.js +1 -1
  69. package/dist/lang/hr.umd.prod.js +1 -1
  70. package/dist/lang/hu.umd.prod.js +1 -1
  71. package/dist/lang/id.umd.prod.js +1 -1
  72. package/dist/lang/is.umd.prod.js +1 -1
  73. package/dist/lang/it.umd.prod.js +1 -1
  74. package/dist/lang/ja.umd.prod.js +1 -1
  75. package/dist/lang/kk.umd.prod.js +1 -1
  76. package/dist/lang/km.umd.prod.js +1 -1
  77. package/dist/lang/ko-KR.umd.prod.js +1 -1
  78. package/dist/lang/kur-CKB.umd.prod.js +1 -1
  79. package/dist/lang/lt.umd.prod.js +1 -1
  80. package/dist/lang/lu.umd.prod.js +1 -1
  81. package/dist/lang/lv.umd.prod.js +1 -1
  82. package/dist/lang/mk.umd.prod.js +1 -1
  83. package/dist/lang/ml.umd.prod.js +1 -1
  84. package/dist/lang/mm.umd.prod.js +1 -1
  85. package/dist/lang/ms-MY.umd.prod.js +1 -1
  86. package/dist/lang/ms.umd.prod.js +1 -1
  87. package/dist/lang/my.umd.prod.js +1 -1
  88. package/dist/lang/nb-NO.umd.prod.js +1 -1
  89. package/dist/lang/nl.umd.prod.js +1 -1
  90. package/dist/lang/pl.umd.prod.js +1 -1
  91. package/dist/lang/pt-BR.umd.prod.js +1 -1
  92. package/dist/lang/pt.umd.prod.js +1 -1
  93. package/dist/lang/ro.umd.prod.js +1 -1
  94. package/dist/lang/ru.umd.prod.js +1 -1
  95. package/dist/lang/sk.umd.prod.js +1 -1
  96. package/dist/lang/sl.umd.prod.js +1 -1
  97. package/dist/lang/sm.umd.prod.js +1 -1
  98. package/dist/lang/sr-CYR.umd.prod.js +1 -1
  99. package/dist/lang/sr.umd.prod.js +1 -1
  100. package/dist/lang/sv.umd.prod.js +1 -1
  101. package/dist/lang/ta.umd.prod.js +1 -1
  102. package/dist/lang/th.umd.prod.js +1 -1
  103. package/dist/lang/tl.umd.prod.js +1 -1
  104. package/dist/lang/tr.umd.prod.js +1 -1
  105. package/dist/lang/ug.umd.prod.js +1 -1
  106. package/dist/lang/uk.umd.prod.js +1 -1
  107. package/dist/lang/uz-Cyrl.umd.prod.js +1 -1
  108. package/dist/lang/uz-Latn.umd.prod.js +1 -1
  109. package/dist/lang/vi.umd.prod.js +1 -1
  110. package/dist/lang/zh-CN.umd.prod.js +1 -1
  111. package/dist/lang/zh-TW.umd.prod.js +1 -1
  112. package/dist/quasar.client.js +45 -20
  113. package/dist/quasar.css +4 -1
  114. package/dist/quasar.prod.css +1 -1
  115. package/dist/quasar.rtl.css +5 -1
  116. package/dist/quasar.rtl.prod.css +1 -1
  117. package/dist/quasar.sass +4 -2
  118. package/dist/quasar.server.prod.cjs +11 -11
  119. package/dist/quasar.server.prod.js +8 -8
  120. package/dist/quasar.umd.js +45 -20
  121. package/dist/quasar.umd.prod.js +11 -11
  122. package/dist/types/index.d.ts +4 -3
  123. package/dist/web-types/web-types.json +1 -1
  124. package/icon-set/material-symbols-outlined.js +2 -2
  125. package/icon-set/material-symbols-rounded.js +2 -2
  126. package/icon-set/material-symbols-sharp.js +2 -2
  127. package/icon-set/svg-material-symbols-outlined.js +3 -4
  128. package/icon-set/svg-material-symbols-rounded.js +3 -4
  129. package/icon-set/svg-material-symbols-sharp.js +3 -4
  130. package/lang/bs-BA.js +93 -0
  131. package/lang/index.json +1 -1
  132. package/package.json +1 -1
  133. package/src/components/field/__tests__/QField.cy.js +1 -1
  134. package/src/components/icon/QIcon.sass +3 -0
  135. package/src/components/input/__tests__/QInput.cy.js +1 -1
  136. package/src/components/item/QList.js +7 -1
  137. package/src/components/item/QList.test.js +170 -0
  138. package/src/components/select/__tests__/QSelect.cy.js +1 -1
  139. package/src/components/table/QTable.json +1 -1
  140. package/src/composables/__tests__/use-field.cy.js +1 -1
  141. package/src/composables/private.use-key-composition/use-key-composition.js +2 -19
  142. package/src/css/core/mouse.sass +1 -1
  143. package/src/plugins/dialog/Dialog.json +1 -1
  144. package/src/utils/date/date.js +38 -6
  145. package/src/utils/private.dialog/create-dialog.json +1 -1
@@ -30,7 +30,7 @@ export default {
30
30
  right: 'sym_o_chevron_right',
31
31
  up: 'sym_o_keyboard_arrow_up',
32
32
  down: 'sym_o_keyboard_arrow_down',
33
- navigationIcon: 'sym_o_lens'
33
+ navigationIcon: 'sym_o_circle'
34
34
  },
35
35
  chip: {
36
36
  remove: 'sym_o_cancel',
@@ -118,7 +118,7 @@ export default {
118
118
  icon: 'sym_o_play_arrow'
119
119
  },
120
120
  uploader: {
121
- done: 'sym_o_done',
121
+ done: 'sym_o_check',
122
122
  clear: 'sym_o_close',
123
123
  add: 'sym_o_add_box',
124
124
  upload: 'sym_o_cloud_upload',
@@ -30,7 +30,7 @@ export default {
30
30
  right: 'sym_r_chevron_right',
31
31
  up: 'sym_r_keyboard_arrow_up',
32
32
  down: 'sym_r_keyboard_arrow_down',
33
- navigationIcon: 'sym_r_lens'
33
+ navigationIcon: 'sym_r_circle'
34
34
  },
35
35
  chip: {
36
36
  remove: 'sym_r_cancel',
@@ -118,7 +118,7 @@ export default {
118
118
  icon: 'sym_r_play_arrow'
119
119
  },
120
120
  uploader: {
121
- done: 'sym_r_done',
121
+ done: 'sym_r_check',
122
122
  clear: 'sym_r_close',
123
123
  add: 'sym_r_add_box',
124
124
  upload: 'sym_r_cloud_upload',
@@ -30,7 +30,7 @@ export default {
30
30
  right: 'sym_s_chevron_right',
31
31
  up: 'sym_s_keyboard_arrow_up',
32
32
  down: 'sym_s_keyboard_arrow_down',
33
- navigationIcon: 'sym_s_lens'
33
+ navigationIcon: 'sym_s_circle'
34
34
  },
35
35
  chip: {
36
36
  remove: 'sym_s_cancel',
@@ -118,7 +118,7 @@ export default {
118
118
  icon: 'sym_s_play_arrow'
119
119
  },
120
120
  uploader: {
121
- done: 'sym_s_done',
121
+ done: 'sym_s_check',
122
122
  clear: 'sym_s_close',
123
123
  add: 'sym_s_add_box',
124
124
  upload: 'sym_s_cloud_upload',
@@ -23,7 +23,7 @@ import {
23
23
  symOutlinedRefresh,
24
24
  symOutlinedKeyboardArrowUp,
25
25
  symOutlinedKeyboardArrowDown,
26
- symOutlinedLens,
26
+ symOutlinedCircle,
27
27
  symOutlinedCancel,
28
28
  symOutlinedCheck,
29
29
  symOutlinedSchedule,
@@ -64,7 +64,6 @@ import {
64
64
  symOutlinedGrade,
65
65
  symOutlinedEdit,
66
66
  symOutlinedPlayArrow,
67
- symOutlinedDone,
68
67
  symOutlinedAddBox,
69
68
  symOutlinedCloudUpload,
70
69
  symOutlinedClearAll,
@@ -103,7 +102,7 @@ export default {
103
102
  right: symOutlinedChevronRight,
104
103
  up: symOutlinedKeyboardArrowUp,
105
104
  down: symOutlinedKeyboardArrowDown,
106
- navigationIcon: symOutlinedLens
105
+ navigationIcon: symOutlinedCircle
107
106
  },
108
107
  chip: {
109
108
  remove: symOutlinedCancel,
@@ -191,7 +190,7 @@ export default {
191
190
  icon: symOutlinedPlayArrow
192
191
  },
193
192
  uploader: {
194
- done: symOutlinedDone,
193
+ done: symOutlinedCheck,
195
194
  clear: symOutlinedClose,
196
195
  add: symOutlinedAddBox,
197
196
  upload: symOutlinedCloudUpload,
@@ -23,7 +23,7 @@ import {
23
23
  symRoundedRefresh,
24
24
  symRoundedKeyboardArrowUp,
25
25
  symRoundedKeyboardArrowDown,
26
- symRoundedLens,
26
+ symRoundedCircle,
27
27
  symRoundedCancel,
28
28
  symRoundedCheck,
29
29
  symRoundedSchedule,
@@ -64,7 +64,6 @@ import {
64
64
  symRoundedGrade,
65
65
  symRoundedEdit,
66
66
  symRoundedPlayArrow,
67
- symRoundedDone,
68
67
  symRoundedAddBox,
69
68
  symRoundedCloudUpload,
70
69
  symRoundedClearAll,
@@ -103,7 +102,7 @@ export default {
103
102
  right: symRoundedChevronRight,
104
103
  up: symRoundedKeyboardArrowUp,
105
104
  down: symRoundedKeyboardArrowDown,
106
- navigationIcon: symRoundedLens
105
+ navigationIcon: symRoundedCircle
107
106
  },
108
107
  chip: {
109
108
  remove: symRoundedCancel,
@@ -191,7 +190,7 @@ export default {
191
190
  icon: symRoundedPlayArrow
192
191
  },
193
192
  uploader: {
194
- done: symRoundedDone,
193
+ done: symRoundedCheck,
195
194
  clear: symRoundedClose,
196
195
  add: symRoundedAddBox,
197
196
  upload: symRoundedCloudUpload,
@@ -23,7 +23,7 @@ import {
23
23
  symSharpRefresh,
24
24
  symSharpKeyboardArrowUp,
25
25
  symSharpKeyboardArrowDown,
26
- symSharpLens,
26
+ symSharpCircle,
27
27
  symSharpCancel,
28
28
  symSharpCheck,
29
29
  symSharpSchedule,
@@ -64,7 +64,6 @@ import {
64
64
  symSharpGrade,
65
65
  symSharpEdit,
66
66
  symSharpPlayArrow,
67
- symSharpDone,
68
67
  symSharpAddBox,
69
68
  symSharpCloudUpload,
70
69
  symSharpClearAll,
@@ -103,7 +102,7 @@ export default {
103
102
  right: symSharpChevronRight,
104
103
  up: symSharpKeyboardArrowUp,
105
104
  down: symSharpKeyboardArrowDown,
106
- navigationIcon: symSharpLens
105
+ navigationIcon: symSharpCircle
107
106
  },
108
107
  chip: {
109
108
  remove: symSharpCancel,
@@ -191,7 +190,7 @@ export default {
191
190
  icon: symSharpPlayArrow
192
191
  },
193
192
  uploader: {
194
- done: symSharpDone,
193
+ done: symSharpCheck,
195
194
  clear: symSharpClose,
196
195
  add: symSharpAddBox,
197
196
  upload: symSharpCloudUpload,
package/lang/bs-BA.js ADDED
@@ -0,0 +1,93 @@
1
+ export default {
2
+ isoName: 'bs-BA',
3
+ nativeName: 'Bosanski jezik',
4
+ label: {
5
+ clear: 'Očisti',
6
+ ok: 'OK',
7
+ cancel: 'Odustani',
8
+ close: 'Zatvori',
9
+ set: 'Postavi',
10
+ select: 'Odaberi',
11
+ reset: 'Poništi',
12
+ remove: 'Skloni',
13
+ update: 'Ažuriraj',
14
+ create: 'Dodaj',
15
+ search: 'Traži',
16
+ filter: 'Filter',
17
+ refresh: 'Osvježi',
18
+ expand: label => (label ? `Proširi "${ label }"` : 'Proširiti'),
19
+ collapse: label => (label ? `Sažmi "${ label }"` : 'Kolaps')
20
+ },
21
+ date: {
22
+ days: 'Nedjelja_Ponedjeljak_Utorak_Srijeda_Četvrtak_Petak_Subota'.split('_'),
23
+ daysShort: 'Ned_Pon_Uto_Sri_Čet_Pet_Sub'.split('_'),
24
+ months: 'Januar_Februar_Mart_April_Maj_Juni_Juli_August_Septembar_Oktobar_Novembar_Decembar'.split('_'),
25
+ monthsShort: 'Jan_Feb_Mar_Apr_Maj_Jun_Jul_Aug_Sep_Okt_Nov_Dec'.split('_'),
26
+ firstDayOfWeek: 1, // 0-6, 0 - Sunday, 1 Monday, ...
27
+ format24h: true,
28
+ pluralDay: 'dana'
29
+ },
30
+ table: {
31
+ noData: 'Nema podataka',
32
+ noResults: 'Nema odgovarajućih rezultata',
33
+ loading: 'Učitavanje...',
34
+ selectedRecords: rows => (
35
+ rows > 1
36
+ ? rows + ' odabranih redova.'
37
+ : (rows === 0 ? 'Nema' : '1') + ' odabranih redova.'
38
+ ),
39
+ recordsPerPage: 'Redova po stranici:',
40
+ allRows: 'Sve',
41
+ pagination: (start, end, total) => start + '-' + end + ' od ' + total,
42
+ columns: 'Kolone'
43
+ },
44
+ editor: {
45
+ url: 'URL',
46
+ bold: 'Podebljano',
47
+ italic: 'Kurziv',
48
+ strikethrough: 'Precrtano',
49
+ underline: 'Podcrtano',
50
+ unorderedList: 'Označena lista',
51
+ orderedList: 'Numerirana lista',
52
+ subscript: 'Potpisano',
53
+ superscript: 'Natpisano',
54
+ hyperlink: 'Hiperlink',
55
+ toggleFullscreen: 'Puni ekran',
56
+ quote: 'Citat',
57
+ left: 'Poravnati ulijevo',
58
+ center: 'Centrirati',
59
+ right: 'Poravnati udesno',
60
+ justify: 'Poravnati obostrano',
61
+ print: 'Print',
62
+ outdent: 'Smanjiti uvlačenje',
63
+ indent: 'Povećati uvlačenje',
64
+ removeFormat: 'Skloniti formatiranje',
65
+ formatting: 'Formatirati',
66
+ fontSize: 'Veličina slova',
67
+ align: 'Poravnati',
68
+ hr: 'Ubaciti vodoravno ravnalo',
69
+ undo: 'Poništiti',
70
+ redo: 'Vratiti',
71
+ heading1: 'Naslov 1',
72
+ heading2: 'Naslov 2',
73
+ heading3: 'Naslov 3',
74
+ heading4: 'Naslov 4',
75
+ heading5: 'Naslov 5',
76
+ heading6: 'Naslov 6',
77
+ paragraph: 'Odlomak',
78
+ code: 'Kod',
79
+ size1: 'Vrlo malo',
80
+ size2: 'Malo manje',
81
+ size3: 'Normalno',
82
+ size4: 'Srednje',
83
+ size5: 'Veliko',
84
+ size6: 'Vrlo veliko',
85
+ size7: 'Najveće',
86
+ defaultFont: 'Zadani font',
87
+ viewSource: 'Pogledaj izvor'
88
+ },
89
+ tree: {
90
+ noNodes: 'Nema nijednog čvora',
91
+ noResults: 'Nema odgovarajućih čvorova'
92
+ }
93
+ }
package/lang/index.json CHANGED
@@ -1 +1 @@
1
- [{"isoName":"ar-TN","nativeName":"العربية (تونس)"},{"isoName":"ar","nativeName":"العربية"},{"isoName":"az-Latn","nativeName":"Azerbaijani (latin)"},{"isoName":"bg","nativeName":"български език"},{"isoName":"bn","nativeName":"বাংলা"},{"isoName":"ca","nativeName":"Català"},{"isoName":"cs","nativeName":"Čeština"},{"isoName":"da","nativeName":"Dansk"},{"isoName":"de-CH","nativeName":"Deutsch (CH)"},{"isoName":"de-DE","nativeName":"Deutsch (DE)"},{"isoName":"de","nativeName":"Deutsch"},{"isoName":"el","nativeName":"ελληνικά"},{"isoName":"en-GB","nativeName":"English (UK)"},{"isoName":"en-US","nativeName":"English (US)"},{"isoName":"eo","nativeName":"Esperanto"},{"isoName":"es","nativeName":"Español"},{"isoName":"et","nativeName":"Eesti"},{"isoName":"eu","nativeName":"Euskara"},{"isoName":"fa-IR","nativeName":"فارسی"},{"isoName":"fa","nativeName":"فارسی"},{"isoName":"fi","nativeName":"Suomi"},{"isoName":"fr","nativeName":"Français"},{"isoName":"gn","nativeName":"Avañe'ẽ"},{"isoName":"he","nativeName":"עברית"},{"isoName":"hi","nativeName":"अमेरिकी अंग्रेज़ी"},{"isoName":"hr","nativeName":"Hrvatski jezik"},{"isoName":"hu","nativeName":"Magyar"},{"isoName":"id","nativeName":"Bahasa Indonesia"},{"isoName":"is","nativeName":"Íslenska"},{"isoName":"it","nativeName":"Italiano"},{"isoName":"ja","nativeName":"日本語 (にほんご)"},{"isoName":"kk","nativeName":"Қазақша"},{"isoName":"km","nativeName":"ខ្មែរ"},{"isoName":"ko-KR","nativeName":"한국어"},{"isoName":"kur-CKB","nativeName":"کوردی سۆرانی"},{"isoName":"lt","nativeName":"Lithuanian"},{"isoName":"lu","nativeName":"Kiluba"},{"isoName":"lv","nativeName":"Latviešu valoda"},{"isoName":"mk","nativeName":"Македонски"},{"isoName":"ml","nativeName":"മലയാളം"},{"isoName":"mm","nativeName":"မြန်မာ(ဗမာ)"},{"isoName":"ms-MY","nativeName":"Malaysia"},{"isoName":"ms","nativeName":"Bahasa Melayu"},{"isoName":"my","nativeName":"Malaysia"},{"isoName":"nb-NO","nativeName":"Norsk"},{"isoName":"nl","nativeName":"Nederlands"},{"isoName":"pl","nativeName":"Polski"},{"isoName":"pt-BR","nativeName":"Português (BR)"},{"isoName":"pt","nativeName":"Português"},{"isoName":"ro","nativeName":"Română"},{"isoName":"ru","nativeName":"русский"},{"isoName":"sk","nativeName":"Slovenčina"},{"isoName":"sl","nativeName":"Slovenski Jezik"},{"isoName":"sm","nativeName":"Fa'asāmoa"},{"isoName":"sr-CYR","nativeName":"српски језик"},{"isoName":"sr","nativeName":"srpski jezik"},{"isoName":"sv","nativeName":"Svenska"},{"isoName":"ta","nativeName":"தமிழ்"},{"isoName":"th","nativeName":"ไทย"},{"isoName":"tl","nativeName":"Tagalog"},{"isoName":"tr","nativeName":"Türkçe"},{"isoName":"ug","nativeName":"ئۇيغۇرچە"},{"isoName":"uk","nativeName":"Українська"},{"isoName":"uz-Cyrl","nativeName":"Ўзбекча (Кирил)"},{"isoName":"uz-Latn","nativeName":"O'zbekcha (Lotin)"},{"isoName":"vi","nativeName":"Tiếng Việt"},{"isoName":"zh-CN","nativeName":"中文(简体)"},{"isoName":"zh-TW","nativeName":"中文(繁體)"}]
1
+ [{"isoName":"ar-TN","nativeName":"العربية (تونس)"},{"isoName":"ar","nativeName":"العربية"},{"isoName":"az-Latn","nativeName":"Azerbaijani (latin)"},{"isoName":"bg","nativeName":"български език"},{"isoName":"bn","nativeName":"বাংলা"},{"isoName":"bs-BA","nativeName":"Bosanski jezik"},{"isoName":"ca","nativeName":"Català"},{"isoName":"cs","nativeName":"Čeština"},{"isoName":"da","nativeName":"Dansk"},{"isoName":"de-CH","nativeName":"Deutsch (CH)"},{"isoName":"de-DE","nativeName":"Deutsch (DE)"},{"isoName":"de","nativeName":"Deutsch"},{"isoName":"el","nativeName":"ελληνικά"},{"isoName":"en-GB","nativeName":"English (UK)"},{"isoName":"en-US","nativeName":"English (US)"},{"isoName":"eo","nativeName":"Esperanto"},{"isoName":"es","nativeName":"Español"},{"isoName":"et","nativeName":"Eesti"},{"isoName":"eu","nativeName":"Euskara"},{"isoName":"fa-IR","nativeName":"فارسی"},{"isoName":"fa","nativeName":"فارسی"},{"isoName":"fi","nativeName":"Suomi"},{"isoName":"fr","nativeName":"Français"},{"isoName":"gn","nativeName":"Avañe'ẽ"},{"isoName":"he","nativeName":"עברית"},{"isoName":"hi","nativeName":"अमेरिकी अंग्रेज़ी"},{"isoName":"hr","nativeName":"Hrvatski jezik"},{"isoName":"hu","nativeName":"Magyar"},{"isoName":"id","nativeName":"Bahasa Indonesia"},{"isoName":"is","nativeName":"Íslenska"},{"isoName":"it","nativeName":"Italiano"},{"isoName":"ja","nativeName":"日本語 (にほんご)"},{"isoName":"kk","nativeName":"Қазақша"},{"isoName":"km","nativeName":"ខ្មែរ"},{"isoName":"ko-KR","nativeName":"한국어"},{"isoName":"kur-CKB","nativeName":"کوردی سۆرانی"},{"isoName":"lt","nativeName":"Lithuanian"},{"isoName":"lu","nativeName":"Kiluba"},{"isoName":"lv","nativeName":"Latviešu valoda"},{"isoName":"mk","nativeName":"Македонски"},{"isoName":"ml","nativeName":"മലയാളം"},{"isoName":"mm","nativeName":"မြန်မာ(ဗမာ)"},{"isoName":"ms-MY","nativeName":"Malaysia"},{"isoName":"ms","nativeName":"Bahasa Melayu"},{"isoName":"my","nativeName":"Malaysia"},{"isoName":"nb-NO","nativeName":"Norsk"},{"isoName":"nl","nativeName":"Nederlands"},{"isoName":"pl","nativeName":"Polski"},{"isoName":"pt-BR","nativeName":"Português (BR)"},{"isoName":"pt","nativeName":"Português"},{"isoName":"ro","nativeName":"Română"},{"isoName":"ru","nativeName":"русский"},{"isoName":"sk","nativeName":"Slovenčina"},{"isoName":"sl","nativeName":"Slovenski Jezik"},{"isoName":"sm","nativeName":"Fa'asāmoa"},{"isoName":"sr-CYR","nativeName":"српски језик"},{"isoName":"sr","nativeName":"srpski jezik"},{"isoName":"sv","nativeName":"Svenska"},{"isoName":"ta","nativeName":"தமிழ்"},{"isoName":"th","nativeName":"ไทย"},{"isoName":"tl","nativeName":"Tagalog"},{"isoName":"tr","nativeName":"Türkçe"},{"isoName":"ug","nativeName":"ئۇيغۇرچە"},{"isoName":"uk","nativeName":"Українська"},{"isoName":"uz-Cyrl","nativeName":"Ўзбекча (Кирил)"},{"isoName":"uz-Latn","nativeName":"O'zbekcha (Lotin)"},{"isoName":"vi","nativeName":"Tiếng Việt"},{"isoName":"zh-CN","nativeName":"中文(简体)"},{"isoName":"zh-TW","nativeName":"中文(繁體)"}]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "quasar",
3
- "version": "2.16.8",
3
+ "version": "2.16.10",
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",
@@ -17,7 +17,7 @@ describe('Field API', () => {
17
17
  describe('(prop): maxlength', () => {
18
18
  it.skip(' ', () => {
19
19
  // It is tricky to test this since it will require that we setup a control slot with v-model.
20
- // This is already tested in QInput and others using use-field composable, so are not not testing it.
20
+ // This is already tested in QInput and others using use-field composable, so are not testing it.
21
21
  })
22
22
  })
23
23
  })
@@ -25,6 +25,9 @@
25
25
  width: 100%
26
26
  height: 100%
27
27
 
28
+ > div
29
+ box-sizing: border-box // example: QBadge
30
+
28
31
  .q-icon,
29
32
  .material-icons,
30
33
  .material-icons-outlined,
@@ -57,7 +57,7 @@ describe('Input API', () => {
57
57
  })
58
58
 
59
59
  describe('(prop): loading', () => {
60
- it('should should set the component into a loading state', () => {
60
+ it('should set the component into a loading state', () => {
61
61
  mountQInput({
62
62
  props: {
63
63
  loading: true
@@ -4,6 +4,8 @@ import { createComponent } from '../../utils/private.create/create.js'
4
4
  import useDark, { useDarkProps } from '../../composables/private.use-dark/use-dark.js'
5
5
  import { hSlot } from '../../utils/private.render/render.js'
6
6
 
7
+ const roleAttrExceptions = [ 'ul', 'ol' ]
8
+
7
9
  export default createComponent({
8
10
  name: 'QList',
9
11
 
@@ -25,6 +27,10 @@ export default createComponent({
25
27
  const vm = getCurrentInstance()
26
28
  const isDark = useDark(props, vm.proxy.$q)
27
29
 
30
+ const role = computed(() => (
31
+ roleAttrExceptions.includes(props.tag) ? null : 'list')
32
+ )
33
+
28
34
  const classes = computed(() =>
29
35
  'q-list'
30
36
  + (props.bordered === true ? ' q-list--bordered' : '')
@@ -34,6 +40,6 @@ export default createComponent({
34
40
  + (props.padding === true ? ' q-list--padding' : '')
35
41
  )
36
42
 
37
- return () => h(props.tag, { class: classes.value }, hSlot(slots.default))
43
+ return () => h(props.tag, { class: classes.value, role: role.value }, hSlot(slots.default))
38
44
  }
39
45
  })
@@ -0,0 +1,170 @@
1
+ import { mount, flushPromises } from '@vue/test-utils'
2
+ import { describe, test, expect } from 'vitest'
3
+
4
+ import QList from './QList.js'
5
+
6
+ describe('[QList API]', () => {
7
+ describe('[Props]', () => {
8
+ describe('[default attributes]', () => {
9
+ test('has a role="list" attribute with a div', async () => {
10
+ const wrapper = mount(QList)
11
+
12
+ const target = wrapper.get('.q-list')
13
+
14
+ expect(target.element.getAttribute('role')).toBe('list')
15
+ })
16
+
17
+ test('does not have a role="list" attribute with a ol', async () => {
18
+ const wrapper = mount(QList, { props: { tag: 'ol' } })
19
+
20
+ const target = wrapper.get('.q-list')
21
+
22
+ expect(target.element.getAttribute('role')).toBe(null)
23
+ })
24
+
25
+ test('does not have a role="list" attribute with a ul', async () => {
26
+ const wrapper = mount(QList, { props: { tag: 'ul' } })
27
+
28
+ const target = wrapper.get('.q-list')
29
+
30
+ expect(target.element.getAttribute('role')).toBe(null)
31
+ })
32
+ })
33
+
34
+ describe('[(prop)bordered]', () => {
35
+ test('type Boolean has effect', async () => {
36
+ const wrapper = mount(QList)
37
+
38
+ const target = wrapper.get('.q-list')
39
+
40
+ expect(target.classes()).not.toContain('q-list--bordered')
41
+
42
+ await wrapper.setProps({ bordered: true })
43
+ await flushPromises()
44
+
45
+ expect(target.classes()).toContain('q-list--bordered')
46
+ })
47
+ })
48
+
49
+ describe('[(prop)dense]', () => {
50
+ test('type Boolean has effect', async () => {
51
+ const wrapper = mount(QList)
52
+
53
+ const target = wrapper.get('.q-list')
54
+
55
+ expect(target.classes()).not.toContain('q-list--dense')
56
+
57
+ await wrapper.setProps({ dense: true })
58
+ await flushPromises()
59
+
60
+ expect(target.classes()).toContain('q-list--dense')
61
+ })
62
+ })
63
+
64
+ describe('[(prop)separator]', () => {
65
+ test('type Boolean has effect', async () => {
66
+ const wrapper = mount(QList)
67
+
68
+ const target = wrapper.get('.q-list')
69
+
70
+ expect(target.classes()).not.toContain('q-list--separator')
71
+
72
+ await wrapper.setProps({ separator: true })
73
+ await flushPromises()
74
+
75
+ expect(target.classes()).toContain('q-list--separator')
76
+ })
77
+ })
78
+
79
+ describe('[(prop)dark]', () => {
80
+ test('type Boolean has effect', async () => {
81
+ const wrapper = mount(QList)
82
+ await wrapper.setProps({ dark: false })
83
+
84
+ const target = wrapper.get('.q-list')
85
+
86
+ expect(target.classes()).not.toContain('q-list--dark')
87
+
88
+ await wrapper.setProps({ dark: true })
89
+ await flushPromises()
90
+
91
+ expect(target.classes()).toContain('q-list--dark')
92
+
93
+ await wrapper.setProps({ dark: false })
94
+ await wrapper.vm.$q.dark.set(true)
95
+ await flushPromises()
96
+
97
+ expect(target.classes()).not.toContain('q-list--dark')
98
+ })
99
+
100
+ test('type null has effect', async () => {
101
+ const wrapper = mount(QList)
102
+ await wrapper.vm.$q.dark.set(false)
103
+
104
+ const target = wrapper.get('.q-list')
105
+ expect(target.classes()).not.toContain('q-list--dark')
106
+
107
+ await wrapper.setProps({ dark: null })
108
+ await flushPromises()
109
+
110
+ expect(target.classes()).not.toContain('q-list--dark')
111
+
112
+ await wrapper.vm.$q.dark.set(true)
113
+
114
+ expect(target.classes()).toContain('q-list--dark')
115
+ })
116
+ })
117
+
118
+ describe('[(prop)padding]', () => {
119
+ test('type Boolean has effect', async () => {
120
+ const wrapper = mount(QList)
121
+
122
+ const target = wrapper.get('.q-list')
123
+
124
+ expect(target.classes()).not.toContain('q-list--padding')
125
+
126
+ await wrapper.setProps({ padding: true })
127
+ await flushPromises()
128
+
129
+ expect(target.classes()).toContain('q-list--padding')
130
+ })
131
+ })
132
+
133
+ describe('[(prop)tag]', () => {
134
+ test('type String has effect', async () => {
135
+ const wrapper = mount(QList, { props: { tag: 'ol' } })
136
+
137
+ const target = wrapper.get('.q-list')
138
+
139
+ expect(
140
+ target.element.tagName.toLowerCase()
141
+ ).toBe('ol')
142
+ })
143
+
144
+ test('default tag is div', async () => {
145
+ const wrapper = mount(QList)
146
+
147
+ const target = wrapper.get('.q-list')
148
+
149
+ expect(
150
+ target.element.tagName.toLowerCase()
151
+ ).toBe('div')
152
+ })
153
+ })
154
+ })
155
+
156
+ describe('[Slots]', () => {
157
+ describe('[(slot)default]', () => {
158
+ test('renders the content', () => {
159
+ const slotContent = 'some-slot-content'
160
+ const wrapper = mount(QList, {
161
+ slots: {
162
+ default: () => slotContent
163
+ }
164
+ })
165
+
166
+ expect(wrapper.html()).toContain(slotContent)
167
+ })
168
+ })
169
+ })
170
+ })
@@ -1432,7 +1432,7 @@ describe('QSelect API', () => {
1432
1432
  })
1433
1433
 
1434
1434
  describe('(event): filter-abort', () => {
1435
- it('should emit event when the the filterFn has not called the doneFn yet and a new filter is requested', () => {
1435
+ it('should emit event when the filterFn has not called the doneFn yet and a new filter is requested', () => {
1436
1436
  const fn = cy.stub()
1437
1437
  const filterFn = cy.stub()
1438
1438
  mountQSelect({
@@ -48,7 +48,7 @@
48
48
  "virtual-scroll-slice-size": {
49
49
  "type": [ "Number", "String", "null" ],
50
50
  "desc": "Minimum number of rows to render in the virtual list",
51
- "default": "30",
51
+ "default": "10",
52
52
  "passthrough": "child",
53
53
  "category": "virtual-scroll"
54
54
  },
@@ -82,7 +82,7 @@ describe('use-field API', () => {
82
82
 
83
83
  describe('Category: behavior|content', () => {
84
84
  describe('(prop): loading', () => {
85
- it('should should set the component into a loading state', () => {
85
+ it('should set the component into a loading state', () => {
86
86
  mountQFieldWrapper({
87
87
  props: {
88
88
  loading: true
@@ -1,10 +1,3 @@
1
- import { client } from '../../plugins/platform/Platform.js'
2
-
3
- const isJapanese = /[\u3000-\u303f\u3040-\u309f\u30a0-\u30ff\uff00-\uff9f\u4e00-\u9faf\u3400-\u4dbf]/
4
- const isChinese = /[\u4e00-\u9fff\u3400-\u4dbf\u{20000}-\u{2a6df}\u{2a700}-\u{2b73f}\u{2b740}-\u{2b81f}\u{2b820}-\u{2ceaf}\uf900-\ufaff\u3300-\u33ff\ufe30-\ufe4f\uf900-\ufaff\u{2f800}-\u{2fa1f}]/u
5
- const isKorean = /[\u3131-\u314e\u314f-\u3163\uac00-\ud7a3]/
6
- const isPlainText = /[a-z0-9_ -]$/i
7
-
8
1
  export default function (onInput) {
9
2
  return function onComposition (e) {
10
3
  if (e.type === 'compositionend' || e.type === 'change') {
@@ -12,18 +5,8 @@ export default function (onInput) {
12
5
  e.target.qComposing = false
13
6
  onInput(e)
14
7
  }
15
- else if (
16
- e.type === 'compositionupdate'
17
- && e.target.qComposing !== true
18
- && typeof e.data === 'string'
19
- ) {
20
- const isComposing = client.is.firefox === true
21
- ? isPlainText.test(e.data) === false
22
- : isJapanese.test(e.data) === true || isChinese.test(e.data) === true || isKorean.test(e.data) === true
23
-
24
- if (isComposing === true) {
25
- e.target.qComposing = true
26
- }
8
+ else if (e.type === 'compositionstart') {
9
+ e.target.qComposing = true
27
10
  }
28
11
  }
29
12
  }
@@ -38,5 +38,5 @@ body.mobile .scroll--mobile
38
38
  [aria-controls]
39
39
  cursor: pointer
40
40
 
41
- [aria-disabled]
41
+ [aria-disabled='true']
42
42
  cursor: default
@@ -277,7 +277,7 @@
277
277
 
278
278
  "componentProps": {
279
279
  "type": "Object",
280
- "desc": "User defined props which will be forwarded to underlying custom component if 'component' prop is used"
280
+ "desc": "User defined props which will be forwarded to underlying custom component if 'component' prop is used; May also include any built-in QDialog option such as 'persistent' or 'seamless'"
281
281
  }
282
282
  }
283
283
  }