quasar 2.10.1 → 2.11.0

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 (172) hide show
  1. package/dist/api/Dialog.json +3 -1
  2. package/dist/api/QFile.json +2 -0
  3. package/dist/api/QInput.json +2 -0
  4. package/dist/api/QPopupProxy.json +21 -0
  5. package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
  6. package/dist/icon-set/eva-icons.umd.prod.js +1 -1
  7. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
  8. package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
  9. package/dist/icon-set/fontawesome-v6-pro.umd.prod.js +1 -1
  10. package/dist/icon-set/fontawesome-v6.umd.prod.js +1 -1
  11. package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
  12. package/dist/icon-set/line-awesome.umd.prod.js +1 -1
  13. package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
  14. package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
  15. package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
  16. package/dist/icon-set/material-icons.umd.prod.js +1 -1
  17. package/dist/icon-set/material-symbols-outlined.umd.prod.js +1 -1
  18. package/dist/icon-set/material-symbols-rounded.umd.prod.js +1 -1
  19. package/dist/icon-set/material-symbols-sharp.umd.prod.js +1 -1
  20. package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
  21. package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
  22. package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
  23. package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
  24. package/dist/icon-set/mdi-v7.umd.prod.js +6 -0
  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-material-symbols-outlined.umd.prod.js +1 -1
  38. package/dist/icon-set/svg-material-symbols-rounded.umd.prod.js +1 -1
  39. package/dist/icon-set/svg-material-symbols-sharp.umd.prod.js +1 -1
  40. package/dist/icon-set/svg-mdi-v6.umd.prod.js +1 -1
  41. package/dist/icon-set/svg-mdi-v7.umd.prod.js +6 -0
  42. package/dist/icon-set/svg-themify.umd.prod.js +1 -1
  43. package/dist/icon-set/themify.umd.prod.js +1 -1
  44. package/dist/lang/ar-TN.umd.prod.js +1 -1
  45. package/dist/lang/ar.umd.prod.js +1 -1
  46. package/dist/lang/az-Latn.umd.prod.js +1 -1
  47. package/dist/lang/bg.umd.prod.js +1 -1
  48. package/dist/lang/bn.umd.prod.js +1 -1
  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.umd.prod.js +1 -1
  53. package/dist/lang/el.umd.prod.js +1 -1
  54. package/dist/lang/en-GB.umd.prod.js +1 -1
  55. package/dist/lang/en-US.umd.prod.js +1 -1
  56. package/dist/lang/eo.umd.prod.js +1 -1
  57. package/dist/lang/es.umd.prod.js +1 -1
  58. package/dist/lang/et.umd.prod.js +1 -1
  59. package/dist/lang/eu.umd.prod.js +1 -1
  60. package/dist/lang/fa-IR.umd.prod.js +1 -1
  61. package/dist/lang/fa.umd.prod.js +1 -1
  62. package/dist/lang/fi.umd.prod.js +1 -1
  63. package/dist/lang/fr.umd.prod.js +1 -1
  64. package/dist/lang/gn.umd.prod.js +1 -1
  65. package/dist/lang/he.umd.prod.js +1 -1
  66. package/dist/lang/hr.umd.prod.js +1 -1
  67. package/dist/lang/hu.umd.prod.js +1 -1
  68. package/dist/lang/id.umd.prod.js +1 -1
  69. package/dist/lang/is.umd.prod.js +1 -1
  70. package/dist/lang/it.umd.prod.js +1 -1
  71. package/dist/lang/ja.umd.prod.js +1 -1
  72. package/dist/lang/{kz.umd.prod.js → kk.umd.prod.js} +2 -2
  73. package/dist/lang/km.umd.prod.js +1 -1
  74. package/dist/lang/ko-KR.umd.prod.js +1 -1
  75. package/dist/lang/kur-CKB.umd.prod.js +1 -1
  76. package/dist/lang/lt.umd.prod.js +1 -1
  77. package/dist/lang/lu.umd.prod.js +1 -1
  78. package/dist/lang/lv.umd.prod.js +1 -1
  79. package/dist/lang/ml.umd.prod.js +1 -1
  80. package/dist/lang/mm.umd.prod.js +1 -1
  81. package/dist/lang/ms.umd.prod.js +1 -1
  82. package/dist/lang/my.umd.prod.js +1 -1
  83. package/dist/lang/nb-NO.umd.prod.js +1 -1
  84. package/dist/lang/nl.umd.prod.js +1 -1
  85. package/dist/lang/pl.umd.prod.js +1 -1
  86. package/dist/lang/pt-BR.umd.prod.js +1 -1
  87. package/dist/lang/pt.umd.prod.js +1 -1
  88. package/dist/lang/ro.umd.prod.js +1 -1
  89. package/dist/lang/ru.umd.prod.js +1 -1
  90. package/dist/lang/sk.umd.prod.js +1 -1
  91. package/dist/lang/sl.umd.prod.js +1 -1
  92. package/dist/lang/sm.umd.prod.js +1 -1
  93. package/dist/lang/sr-CYR.umd.prod.js +1 -1
  94. package/dist/lang/sr.umd.prod.js +1 -1
  95. package/dist/lang/sv.umd.prod.js +1 -1
  96. package/dist/lang/ta.umd.prod.js +1 -1
  97. package/dist/lang/th.umd.prod.js +1 -1
  98. package/dist/lang/tr.umd.prod.js +1 -1
  99. package/dist/lang/ug.umd.prod.js +1 -1
  100. package/dist/lang/uk.umd.prod.js +1 -1
  101. package/dist/lang/uz-Cyrl.umd.prod.js +1 -1
  102. package/dist/lang/uz-Latn.umd.prod.js +1 -1
  103. package/dist/lang/vi.umd.prod.js +1 -1
  104. package/dist/lang/zh-CN.umd.prod.js +1 -1
  105. package/dist/lang/zh-TW.umd.prod.js +1 -1
  106. package/dist/quasar.cjs.prod.js +2 -2
  107. package/dist/quasar.css +203 -13
  108. package/dist/quasar.esm.js +93 -65
  109. package/dist/quasar.esm.prod.js +2 -2
  110. package/dist/quasar.prod.css +1 -1
  111. package/dist/quasar.rtl.css +266 -13
  112. package/dist/quasar.rtl.prod.css +1 -1
  113. package/dist/quasar.sass +116 -16
  114. package/dist/quasar.umd.js +92 -64
  115. package/dist/quasar.umd.prod.js +2 -2
  116. package/dist/transforms/api-list.json +3 -3
  117. package/dist/transforms/auto-import.json +9 -53
  118. package/dist/transforms/import-map.json +4 -26
  119. package/dist/types/api/dialog.d.ts +101 -0
  120. package/dist/types/api/qfile.d.ts +5 -0
  121. package/dist/types/api/qinput.d.ts +27 -0
  122. package/dist/types/api/qpopupproxy.d.ts +3 -0
  123. package/dist/types/api.d.ts +3 -0
  124. package/dist/types/index.d.ts +263 -297
  125. package/dist/vetur/quasar-attributes.json +144 -144
  126. package/dist/vetur/quasar-tags.json +50 -50
  127. package/dist/web-types/web-types.json +634 -634
  128. package/icon-set/mdi-v7.js +146 -0
  129. package/icon-set/mdi-v7.mjs +141 -0
  130. package/icon-set/svg-mdi-v7.js +224 -0
  131. package/icon-set/svg-mdi-v7.mjs +224 -0
  132. package/lang/index.json +4 -4
  133. package/lang/{kz.js → kk.js} +1 -1
  134. package/lang/{kz.mjs → kk.mjs} +0 -0
  135. package/package.json +2 -2
  136. package/src/components/btn/QBtn.sass +0 -1
  137. package/src/components/btn-dropdown/QBtnDropdown.js +0 -1
  138. package/src/components/card/QCard.sass +2 -1
  139. package/src/components/chip/QChip.sass +6 -2
  140. package/src/components/color/QColor.sass +1 -0
  141. package/src/components/date/QDate.js +3 -1
  142. package/src/components/date/QDate.sass +1 -0
  143. package/src/components/dialog/QDialog.js +10 -5
  144. package/src/components/dialog/QDialog.sass +0 -1
  145. package/src/components/expansion-item/QExpansionItem.js +0 -1
  146. package/src/components/fab/QFab.js +3 -6
  147. package/src/components/fab/QFab.sass +2 -1
  148. package/src/components/file/QFile.json +2 -0
  149. package/src/components/img/QImg.js +20 -19
  150. package/src/components/input/QInput.js +9 -3
  151. package/src/components/input/QInput.json +2 -0
  152. package/src/components/input/use-mask.js +2 -0
  153. package/src/components/item/QList.js +1 -1
  154. package/src/components/knob/QKnob.sass +4 -1
  155. package/src/components/layout/QLayout.sass +2 -0
  156. package/src/components/linear-progress/QLinearProgress.js +5 -2
  157. package/src/components/linear-progress/QLinearProgress.sass +3 -1
  158. package/src/components/menu/QMenu.js +4 -1
  159. package/src/components/menu/QMenu.sass +3 -0
  160. package/src/components/popup-proxy/QPopupProxy.js +6 -0
  161. package/src/components/popup-proxy/QPopupProxy.json +19 -0
  162. package/src/components/select/QSelect.js +26 -21
  163. package/src/components/stepper/QStepper.js +2 -2
  164. package/src/components/stepper/QStepper.sass +5 -0
  165. package/src/components/table/QTable.sass +11 -1
  166. package/src/components/time/QTime.sass +1 -0
  167. package/src/components/toggle/QToggle.sass +5 -3
  168. package/src/components/uploader/QUploader.sass +1 -0
  169. package/src/css/core/elevation.sass +17 -4
  170. package/src/css/core/visibility.sass +3 -1
  171. package/src/css/variables.sass +69 -0
  172. package/src/plugins/Dialog.json +3 -1
@@ -0,0 +1,224 @@
1
+
2
+ /*
3
+ * DO NOT EDIT THIS FILE. It is automatically generated
4
+ * from its webfont counterpart (same filename without "svg-" prefix).
5
+ * Edit that file instead (mdi-v7.mjs).
6
+ */
7
+
8
+ import {
9
+ mdiCheckCircle,
10
+ mdiAlert,
11
+ mdiInformation,
12
+ mdiExclamation,
13
+ mdiArrowUp,
14
+ mdiArrowRight,
15
+ mdiArrowDown,
16
+ mdiArrowLeft,
17
+ mdiMenuDown,
18
+ mdiChevronLeft,
19
+ mdiChevronRight,
20
+ mdiGradientVertical,
21
+ mdiTune,
22
+ mdiPaletteSwatch,
23
+ mdiRefresh,
24
+ mdiChevronUp,
25
+ mdiChevronDown,
26
+ mdiCircle,
27
+ mdiCloseCircle,
28
+ mdiCheck,
29
+ mdiClockOutline,
30
+ mdiCalendarToday,
31
+ mdiFormatBold,
32
+ mdiFormatItalic,
33
+ mdiFormatStrikethroughVariant,
34
+ mdiFormatUnderline,
35
+ mdiFormatListBulleted,
36
+ mdiFormatListNumbered,
37
+ mdiFormatSubscript,
38
+ mdiFormatSuperscript,
39
+ mdiLink,
40
+ mdiFullscreen,
41
+ mdiFormatQuoteClose,
42
+ mdiFormatAlignLeft,
43
+ mdiFormatAlignCenter,
44
+ mdiFormatAlignRight,
45
+ mdiFormatAlignJustify,
46
+ mdiPrinter,
47
+ mdiFormatIndentDecrease,
48
+ mdiFormatIndentIncrease,
49
+ mdiFormatClear,
50
+ mdiFormatColorText,
51
+ mdiFormatSize,
52
+ mdiMinus,
53
+ mdiUndo,
54
+ mdiRedo,
55
+ mdiFormatHeader1,
56
+ mdiFormatHeader2,
57
+ mdiFormatHeader3,
58
+ mdiFormatHeader4,
59
+ mdiFormatHeader5,
60
+ mdiFormatHeader6,
61
+ mdiCodeTags,
62
+ mdiNumeric1Box,
63
+ mdiNumeric2Box,
64
+ mdiNumeric3Box,
65
+ mdiNumeric4Box,
66
+ mdiNumeric5Box,
67
+ mdiNumeric6Box,
68
+ mdiNumeric7Box,
69
+ mdiFormatFont,
70
+ mdiPlus,
71
+ mdiClose,
72
+ mdiAlertCircle,
73
+ mdiChevronDoubleLeft,
74
+ mdiChevronDoubleRight,
75
+ mdiStar,
76
+ mdiPencil,
77
+ mdiPlay,
78
+ mdiPlusBox,
79
+ mdiCloudUpload,
80
+ mdiNotificationClearAll,
81
+ mdiCheckAll
82
+ } from '@quasar/extras/mdi-v7'
83
+
84
+ export default {
85
+ name: 'svg-mdi-v7',
86
+ type: {
87
+ positive: mdiCheckCircle,
88
+ negative: mdiAlert,
89
+ info: mdiInformation,
90
+ warning: mdiExclamation
91
+ },
92
+ arrow: {
93
+ up: mdiArrowUp,
94
+ right: mdiArrowRight,
95
+ down: mdiArrowDown,
96
+ left: mdiArrowLeft,
97
+ dropdown: mdiMenuDown
98
+ },
99
+ chevron: {
100
+ left: mdiChevronLeft,
101
+ right: mdiChevronRight
102
+ },
103
+ colorPicker: {
104
+ spectrum: mdiGradientVertical,
105
+ tune: mdiTune,
106
+ palette: mdiPaletteSwatch
107
+ },
108
+ pullToRefresh: {
109
+ icon: mdiRefresh
110
+ },
111
+ carousel: {
112
+ left: mdiChevronLeft,
113
+ right: mdiChevronRight,
114
+ up: mdiChevronUp,
115
+ down: mdiChevronDown,
116
+ navigationIcon: mdiCircle
117
+ },
118
+ chip: {
119
+ remove: mdiCloseCircle,
120
+ selected: mdiCheck
121
+ },
122
+ datetime: {
123
+ arrowLeft: mdiChevronLeft,
124
+ arrowRight: mdiChevronRight,
125
+ now: mdiClockOutline,
126
+ today: mdiCalendarToday
127
+ },
128
+ editor: {
129
+ bold: mdiFormatBold,
130
+ italic: mdiFormatItalic,
131
+ strikethrough: mdiFormatStrikethroughVariant,
132
+ underline: mdiFormatUnderline,
133
+ unorderedList: mdiFormatListBulleted,
134
+ orderedList: mdiFormatListNumbered,
135
+ subscript: mdiFormatSubscript,
136
+ superscript: mdiFormatSuperscript,
137
+ hyperlink: mdiLink,
138
+ toggleFullscreen: mdiFullscreen,
139
+ quote: mdiFormatQuoteClose,
140
+ left: mdiFormatAlignLeft,
141
+ center: mdiFormatAlignCenter,
142
+ right: mdiFormatAlignRight,
143
+ justify: mdiFormatAlignJustify,
144
+ print: mdiPrinter,
145
+ outdent: mdiFormatIndentDecrease,
146
+ indent: mdiFormatIndentIncrease,
147
+ removeFormat: mdiFormatClear,
148
+ formatting: mdiFormatColorText,
149
+ fontSize: mdiFormatSize,
150
+ align: mdiFormatAlignLeft,
151
+ hr: mdiMinus,
152
+ undo: mdiUndo,
153
+ redo: mdiRedo,
154
+ heading: mdiFormatSize,
155
+ heading1: mdiFormatHeader1,
156
+ heading2: mdiFormatHeader2,
157
+ heading3: mdiFormatHeader3,
158
+ heading4: mdiFormatHeader4,
159
+ heading5: mdiFormatHeader5,
160
+ heading6: mdiFormatHeader6,
161
+ code: mdiCodeTags,
162
+ size: mdiFormatSize,
163
+ size1: mdiNumeric1Box,
164
+ size2: mdiNumeric2Box,
165
+ size3: mdiNumeric3Box,
166
+ size4: mdiNumeric4Box,
167
+ size5: mdiNumeric5Box,
168
+ size6: mdiNumeric6Box,
169
+ size7: mdiNumeric7Box,
170
+ font: mdiFormatFont,
171
+ viewSource: mdiCodeTags
172
+ },
173
+ expansionItem: {
174
+ icon: mdiChevronDown,
175
+ denseIcon: mdiMenuDown
176
+ },
177
+ fab: {
178
+ icon: mdiPlus,
179
+ activeIcon: mdiClose
180
+ },
181
+ field: {
182
+ clear: mdiCloseCircle,
183
+ error: mdiAlertCircle
184
+ },
185
+ pagination: {
186
+ first: mdiChevronDoubleLeft,
187
+ prev: mdiChevronLeft,
188
+ next: mdiChevronRight,
189
+ last: mdiChevronDoubleRight
190
+ },
191
+ rating: {
192
+ icon: mdiStar
193
+ },
194
+ stepper: {
195
+ done: mdiCheck,
196
+ active: mdiPencil,
197
+ error: mdiAlert
198
+ },
199
+ tabs: {
200
+ left: mdiChevronLeft,
201
+ right: mdiChevronRight,
202
+ up: mdiChevronUp,
203
+ down: mdiChevronDown
204
+ },
205
+ table: {
206
+ arrowUp: mdiArrowUp,
207
+ warning: mdiAlert,
208
+ firstPage: mdiChevronDoubleLeft,
209
+ prevPage: mdiChevronLeft,
210
+ nextPage: mdiChevronRight,
211
+ lastPage: mdiChevronDoubleRight
212
+ },
213
+ tree: {
214
+ icon: mdiPlay
215
+ },
216
+ uploader: {
217
+ done: mdiCheck,
218
+ clear: mdiClose,
219
+ add: mdiPlusBox,
220
+ upload: mdiCloudUpload,
221
+ removeQueue: mdiNotificationClearAll,
222
+ removeUploaded: mdiCheckAll
223
+ }
224
+ }
package/lang/index.json CHANGED
@@ -111,6 +111,10 @@
111
111
  "isoName": "ja",
112
112
  "nativeName": "日本語 (にほんご)"
113
113
  },
114
+ {
115
+ "isoName": "kz",
116
+ "nativeName": "Қазақша"
117
+ },
114
118
  {
115
119
  "isoName": "km",
116
120
  "nativeName": "ខ្មែរ"
@@ -123,10 +127,6 @@
123
127
  "isoName": "kur-CKB",
124
128
  "nativeName": "کوردی سۆرانی"
125
129
  },
126
- {
127
- "isoName": "kz",
128
- "nativeName": "Қазақша"
129
- },
130
130
  {
131
131
  "isoName": "lt",
132
132
  "nativeName": "Lithuanian"
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * DO NOT EDIT THIS FILE. It is automatically generated
3
3
  * from its .mjs counterpart (same filename but with .mjs extension).
4
- * Edit that file instead (kz.mjs).
4
+ * Edit that file instead (kk.mjs).
5
5
  */
6
6
  function plurals (n, opts) {
7
7
  return opts[ n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2 ]
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "quasar",
3
- "version": "2.10.1",
3
+ "version": "2.11.0",
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",
@@ -68,7 +68,7 @@
68
68
  "homepage": "https://quasar.dev",
69
69
  "devDependencies": {
70
70
  "@quasar/app-vite": "^1.1.3",
71
- "@quasar/extras": "^1.12.0",
71
+ "@quasar/extras": "^1.15.5",
72
72
  "@quasar/quasar-app-extension-testing-e2e-cypress": "^4.1.2",
73
73
  "@rollup/plugin-node-resolve": "^11.2.1",
74
74
  "@rollup/plugin-replace": "^2.3.3",
@@ -52,7 +52,6 @@
52
52
  &:before
53
53
  box-shadow: $button-shadow-active
54
54
 
55
-
56
55
  &--no-uppercase
57
56
  text-transform: none
58
57
 
@@ -77,7 +77,6 @@ export default createComponent({
77
77
  'aria-expanded': showing.value === true ? 'true' : 'false',
78
78
  'aria-haspopup': 'true',
79
79
  'aria-controls': targetUid,
80
- 'aria-owns': targetUid,
81
80
  'aria-label': props.toggleAriaLabel || proxy.$q.lang.label[ showing.value === true ? 'collapse' : 'expand' ](props.label)
82
81
  }
83
82
 
@@ -37,6 +37,7 @@
37
37
 
38
38
  &--dark
39
39
  border-color: $separator-dark-color
40
+ box-shadow: $dark-shadow-2
40
41
 
41
42
  &__section
42
43
  position: relative
@@ -69,7 +70,7 @@
69
70
  padding: 8px
70
71
  align-items: center
71
72
 
72
- .q-btn
73
+ .q-btn--rectangle
73
74
  padding: 0 8px
74
75
 
75
76
  &--horiz
@@ -79,5 +79,9 @@ $chip-height: 2em
79
79
  .q-avatar
80
80
  border-radius: ($generic-border-radius - 1px) 0 0 ($generic-border-radius - 1px)
81
81
 
82
- body.desktop .q-chip--clickable:focus
83
- box-shadow: $shadow-1
82
+ body.desktop
83
+ .q-chip--clickable:focus
84
+ box-shadow: $shadow-1
85
+ &.body--dark
86
+ .q-chip--clickable:focus
87
+ box-shadow: $dark-shadow-1
@@ -171,6 +171,7 @@
171
171
  background: inherit
172
172
 
173
173
  &--dark
174
+ box-shadow: $dark-shadow-2
174
175
 
175
176
  .q-color-picker__tune-tab input
176
177
  border: 1px solid rgba(#fff, .3)
@@ -708,7 +708,9 @@ export default createComponent({
708
708
  })
709
709
 
710
710
  watch(view, () => {
711
- blurTargetRef.value !== null && blurTargetRef.value.focus()
711
+ if (blurTargetRef.value !== null && proxy.$el.contains(document.activeElement) === true) {
712
+ blurTargetRef.value.focus()
713
+ }
712
714
  })
713
715
 
714
716
  watch(() => viewModel.value.year, year => {
@@ -248,4 +248,5 @@
248
248
  width: 310px
249
249
 
250
250
  &--dark
251
+ box-shadow: $dark-shadow-2
251
252
  border-color: $separator-dark-color
@@ -219,7 +219,10 @@ export default createComponent({
219
219
  hidePortal()
220
220
 
221
221
  if (refocusTarget !== null) {
222
- refocusTarget.focus()
222
+ ((evt && evt.type.indexOf('key') === 0
223
+ ? refocusTarget.closest('[tabindex]:not([tabindex^="-"])')
224
+ : void 0
225
+ ) || refocusTarget).focus()
223
226
  refocusTarget = null
224
227
  }
225
228
 
@@ -248,9 +251,9 @@ export default createComponent({
248
251
  })
249
252
  }
250
253
 
251
- function shake (refocusTarget) {
252
- if (refocusTarget && typeof refocusTarget.focus === 'function') {
253
- refocusTarget.focus({ preventScroll: true })
254
+ function shake (focusTarget) {
255
+ if (focusTarget && typeof focusTarget.focus === 'function') {
256
+ focusTarget.focus({ preventScroll: true })
254
257
  }
255
258
  else {
256
259
  focus()
@@ -363,6 +366,8 @@ export default createComponent({
363
366
 
364
367
  onBeforeUnmount(cleanup)
365
368
 
369
+ const backdropEvt = vm.proxy.$q.platform.is.ios === true ? 'onClick' : 'onFocusin'
370
+
366
371
  function renderPortalContent () {
367
372
  return h('div', {
368
373
  role: 'dialog',
@@ -380,7 +385,7 @@ export default createComponent({
380
385
  style: transitionStyle.value,
381
386
  'aria-hidden': 'true',
382
387
  tabindex: -1,
383
- onFocusin: onBackdropClick
388
+ [ backdropEvt ]: onBackdropClick
384
389
  })
385
390
  : null
386
391
  )),
@@ -18,7 +18,6 @@
18
18
  -webkit-overflow-scrolling: touch
19
19
  will-change: scroll-position
20
20
  border-radius: $generic-border-radius
21
- box-shadow: $shadow-4
22
21
 
23
22
  &--square > div
24
23
  border-radius: 0 !important
@@ -143,7 +143,6 @@ export default createComponent({
143
143
  return {
144
144
  role: 'button',
145
145
  'aria-expanded': showing.value === true ? 'true' : 'false',
146
- 'aria-owns': targetUid,
147
146
  'aria-controls': targetUid,
148
147
  'aria-label': toggleAriaLabel
149
148
  }
@@ -77,13 +77,11 @@ export default createComponent({
77
77
 
78
78
  const actionAttrs = computed(() => {
79
79
  const attrs = {
80
- id: targetUid
80
+ id: targetUid,
81
+ role: 'menu'
81
82
  }
82
83
 
83
- if (showing.value === true) {
84
- attrs.role = 'menu'
85
- }
86
- else {
84
+ if (showing.value !== true) {
87
85
  attrs[ 'aria-hidden' ] = 'true'
88
86
  }
89
87
 
@@ -152,7 +150,6 @@ export default createComponent({
152
150
  'aria-expanded': showing.value === true ? 'true' : 'false',
153
151
  'aria-haspopup': 'true',
154
152
  'aria-controls': targetUid,
155
- 'aria-owns': targetUid,
156
153
  onClick: toggle
157
154
  }, getTriggerContent),
158
155
 
@@ -137,7 +137,8 @@
137
137
 
138
138
  &--opened
139
139
  opacity: 1
140
- transform: scale(1) translate(0, 0)
140
+ // needed when rtlcss is enabled
141
+ transform: scale(1) translate(0.1px, 0)
141
142
  pointer-events: all
142
143
 
143
144
  &--align-left
@@ -168,6 +168,7 @@
168
168
  "desc": "DEPRECATED; Access 'nativeEl' directly; Gets the native input DOM Element",
169
169
  "returns": {
170
170
  "type": "Element",
171
+ "tsType": "QFileNativeElement",
171
172
  "desc": "The underlying native input DOM Element"
172
173
  }
173
174
  }
@@ -176,6 +177,7 @@
176
177
  "computedProps": {
177
178
  "nativeEl": {
178
179
  "type": "Element",
180
+ "tsType": "QFileNativeElement",
179
181
  "desc": "The native input DOM Element",
180
182
  "addedIn": "v2.10.1"
181
183
  }
@@ -6,7 +6,6 @@ import useRatio, { useRatioProps } from '../../composables/private/use-ratio.js'
6
6
 
7
7
  import { createComponent } from '../../utils/private/create.js'
8
8
  import { hSlot } from '../../utils/private/render.js'
9
- import { isRuntimeSsrPreHydration } from '../../plugins/Platform.js'
10
9
 
11
10
  const defaultRatio = 16 / 9
12
11
 
@@ -74,7 +73,7 @@ export default createComponent({
74
73
 
75
74
  const images = [
76
75
  ref(null),
77
- ref(props.placeholderSrc !== void 0 ? { src: props.placeholderSrc } : null)
76
+ ref(getPlaceholderSrc())
78
77
  ]
79
78
 
80
79
  const position = ref(0)
@@ -114,18 +113,24 @@ export default createComponent({
114
113
  : null
115
114
  }
116
115
 
116
+ function getPlaceholderSrc () {
117
+ return props.placeholderSrc !== void 0
118
+ ? { src: props.placeholderSrc }
119
+ : null
120
+ }
121
+
117
122
  function addImage (imgProps) {
118
123
  clearTimeout(loadTimer)
119
124
  hasError.value = false
120
125
 
121
126
  if (imgProps === null) {
122
127
  isLoading.value = false
123
- images[ 0 ].value = null
124
- images[ 1 ].value = null
125
- return
128
+ images[ position.value ^ 1 ].value = getPlaceholderSrc()
129
+ }
130
+ else {
131
+ isLoading.value = true
126
132
  }
127
133
 
128
- isLoading.value = true
129
134
  images[ position.value ].value = imgProps
130
135
  }
131
136
 
@@ -160,7 +165,7 @@ export default createComponent({
160
165
  // if component has been already destroyed
161
166
  if (loadTimer === null) { return }
162
167
 
163
- position.value = position.value === 1 ? 0 : 1
168
+ position.value = position.value ^ 1
164
169
  images[ position.value ].value = null
165
170
  isLoading.value = false
166
171
  hasError.value = false
@@ -171,19 +176,11 @@ export default createComponent({
171
176
  clearTimeout(loadTimer)
172
177
  isLoading.value = false
173
178
  hasError.value = true
174
- images[ 0 ].value = null
175
- images[ 1 ].value = null
179
+ images[ position.value ].value = null
180
+ images[ position.value ^ 1 ].value = getPlaceholderSrc()
176
181
  emit('error', err)
177
182
  }
178
183
 
179
- function getContainer (key, child) {
180
- return h(
181
- 'div',
182
- { class: 'q-img__container absolute-full', key },
183
- child
184
- )
185
- }
186
-
187
184
  function getImage (index) {
188
185
  const img = images[ index ].value
189
186
 
@@ -211,7 +208,11 @@ export default createComponent({
211
208
  data.class += ' q-img__image--loaded'
212
209
  }
213
210
 
214
- return getContainer('img' + index, h('img', data))
211
+ return h(
212
+ 'div',
213
+ { class: 'q-img__container absolute-full', key: 'img' + index },
214
+ h('img', data)
215
+ )
215
216
  }
216
217
 
217
218
  function getContent () {
@@ -242,7 +243,7 @@ export default createComponent({
242
243
  }
243
244
 
244
245
  if (__QUASAR_SSR_SERVER__ !== true) {
245
- if (__QUASAR_SSR_CLIENT__ && isRuntimeSsrPreHydration.value === true) {
246
+ if (__QUASAR_SSR_CLIENT__) {
246
247
  onMounted(() => {
247
248
  addImage(getCurrentSrc())
248
249
  })
@@ -40,7 +40,8 @@ export default createComponent({
40
40
 
41
41
  emits: [
42
42
  ...useFieldEmits,
43
- 'paste', 'change'
43
+ 'paste', 'change',
44
+ 'keydown', 'animationend'
44
45
  ],
45
46
 
46
47
  setup (props, { emit, attrs }) {
@@ -98,7 +99,7 @@ export default createComponent({
98
99
  }
99
100
 
100
101
  if (props.autogrow === true) {
101
- evt.onAnimationend = adjustHeight
102
+ evt.onAnimationend = onAnimationend
102
103
  }
103
104
 
104
105
  return evt
@@ -253,6 +254,11 @@ export default createComponent({
253
254
  props.autogrow === true && adjustHeight()
254
255
  }
255
256
 
257
+ function onAnimationend (e) {
258
+ emit('animationend', e)
259
+ adjustHeight()
260
+ }
261
+
256
262
  function emitValue (val, stopWatcher) {
257
263
  emitValueFn = () => {
258
264
  if (
@@ -303,8 +309,8 @@ export default createComponent({
303
309
  // but keep the total control size the same
304
310
  // Firefox rulez #14263, #14344
305
311
  $q.platform.is.firefox !== true && (inp.style.overflow = 'hidden')
306
- inp.style.height = '1px'
307
312
  parentStyle.marginBottom = (inp.scrollHeight - 1) + 'px'
313
+ inp.style.height = '1px'
308
314
 
309
315
  inp.style.height = inp.scrollHeight + 'px'
310
316
  inp.style.overflow = overflow
@@ -118,6 +118,7 @@
118
118
  "desc": "DEPRECATED; Access 'nativeEl' directly instead; Get the native input/textarea DOM Element",
119
119
  "returns": {
120
120
  "type": "Element",
121
+ "tsType": "QInputNativeElement",
121
122
  "desc": "The underlying native input/textarea DOM Element"
122
123
  }
123
124
  }
@@ -126,6 +127,7 @@
126
127
  "computedProps": {
127
128
  "nativeEl": {
128
129
  "type": "Element",
130
+ "tsType": "QInputNativeElement",
129
131
  "desc": "The native input/textarea DOM Element",
130
132
  "addedIn": "v2.10.1"
131
133
  }
@@ -420,6 +420,8 @@ export default function (props, emit, emitValue, inputRef) {
420
420
  }
421
421
 
422
422
  function onMaskedKeydown (e) {
423
+ emit('keydown', e)
424
+
423
425
  if (shouldIgnoreKey(e) === true) {
424
426
  return
425
427
  }
@@ -34,6 +34,6 @@ export default createComponent({
34
34
  + (props.padding === true ? ' q-list--padding' : '')
35
35
  )
36
36
 
37
- return () => h(props.tag, { class: classes.value, role: 'list' }, hSlot(slots.default))
37
+ return () => h(props.tag, { class: classes.value }, hSlot(slots.default))
38
38
  }
39
39
  })
@@ -18,4 +18,7 @@
18
18
  transition: box-shadow .24s ease-in-out
19
19
 
20
20
  &:focus:before
21
- box-shadow: $shadow-4
21
+ box-shadow: $shadow-2
22
+
23
+ body.body--dark .q-knob--editable:focus:before
24
+ box-shadow: $dark-shadow-2
@@ -172,6 +172,8 @@ body:not(.q-body--layout-animate)
172
172
  body.body--dark
173
173
  .q-header, .q-footer, .q-drawer
174
174
  border-color: $separator-dark-color
175
+ .q-layout__shadow:after
176
+ box-shadow: $layout-shadow-dark
175
177
 
176
178
  body.platform-ios
177
179
  .q-layout--containerized