quasar 1.22.1 → 1.22.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 (131) hide show
  1. package/dist/icon-set/bootstrap-icons.umd.min.js +1 -1
  2. package/dist/icon-set/eva-icons.umd.min.js +1 -1
  3. package/dist/icon-set/fontawesome-v5-pro.umd.min.js +1 -1
  4. package/dist/icon-set/fontawesome-v5.umd.min.js +1 -1
  5. package/dist/icon-set/fontawesome-v6-pro.umd.min.js +1 -1
  6. package/dist/icon-set/fontawesome-v6.umd.min.js +1 -1
  7. package/dist/icon-set/ionicons-v4.umd.min.js +1 -1
  8. package/dist/icon-set/line-awesome.umd.min.js +1 -1
  9. package/dist/icon-set/material-icons-outlined.umd.min.js +1 -1
  10. package/dist/icon-set/material-icons-round.umd.min.js +1 -1
  11. package/dist/icon-set/material-icons-sharp.umd.min.js +1 -1
  12. package/dist/icon-set/material-icons.umd.min.js +1 -1
  13. package/dist/icon-set/material-symbols-outlined.umd.min.js +1 -1
  14. package/dist/icon-set/material-symbols-rounded.umd.min.js +1 -1
  15. package/dist/icon-set/material-symbols-sharp.umd.min.js +1 -1
  16. package/dist/icon-set/mdi-v3.umd.min.js +1 -1
  17. package/dist/icon-set/mdi-v4.umd.min.js +1 -1
  18. package/dist/icon-set/mdi-v5.umd.min.js +1 -1
  19. package/dist/icon-set/mdi-v6.umd.min.js +1 -1
  20. package/dist/icon-set/mdi-v7.umd.min.js +6 -0
  21. package/dist/icon-set/svg-bootstrap-icons.umd.min.js +1 -1
  22. package/dist/icon-set/svg-eva-icons.umd.min.js +1 -1
  23. package/dist/icon-set/svg-fontawesome-v5.umd.min.js +1 -1
  24. package/dist/icon-set/svg-fontawesome-v6.umd.min.js +1 -1
  25. package/dist/icon-set/svg-ionicons-v4.umd.min.js +1 -1
  26. package/dist/icon-set/svg-ionicons-v5.umd.min.js +1 -1
  27. package/dist/icon-set/svg-ionicons-v6.umd.min.js +1 -1
  28. package/dist/icon-set/svg-line-awesome.umd.min.js +1 -1
  29. package/dist/icon-set/svg-material-icons-outlined.umd.min.js +1 -1
  30. package/dist/icon-set/svg-material-icons-round.umd.min.js +1 -1
  31. package/dist/icon-set/svg-material-icons-sharp.umd.min.js +1 -1
  32. package/dist/icon-set/svg-material-icons.umd.min.js +1 -1
  33. package/dist/icon-set/svg-material-symbols-outlined.umd.min.js +1 -1
  34. package/dist/icon-set/svg-material-symbols-rounded.umd.min.js +1 -1
  35. package/dist/icon-set/svg-material-symbols-sharp.umd.min.js +1 -1
  36. package/dist/icon-set/svg-mdi-v4.umd.min.js +1 -1
  37. package/dist/icon-set/svg-mdi-v5.umd.min.js +1 -1
  38. package/dist/icon-set/svg-mdi-v6.umd.min.js +1 -1
  39. package/dist/icon-set/svg-mdi-v7.umd.min.js +6 -0
  40. package/dist/icon-set/svg-themify.umd.min.js +1 -1
  41. package/dist/icon-set/themify.umd.min.js +1 -1
  42. package/dist/lang/ar.umd.min.js +1 -1
  43. package/dist/lang/az-latn.umd.min.js +1 -1
  44. package/dist/lang/bg.umd.min.js +1 -1
  45. package/dist/lang/ca.umd.min.js +1 -1
  46. package/dist/lang/cs.umd.min.js +1 -1
  47. package/dist/lang/da.umd.min.js +1 -1
  48. package/dist/lang/de.umd.min.js +1 -1
  49. package/dist/lang/el.umd.min.js +1 -1
  50. package/dist/lang/en-gb.umd.min.js +1 -1
  51. package/dist/lang/en-us.umd.min.js +1 -1
  52. package/dist/lang/eo.umd.min.js +1 -1
  53. package/dist/lang/es.umd.min.js +1 -1
  54. package/dist/lang/et.umd.min.js +1 -1
  55. package/dist/lang/eu.umd.min.js +1 -1
  56. package/dist/lang/fa-ir.umd.min.js +1 -1
  57. package/dist/lang/fa.umd.min.js +1 -1
  58. package/dist/lang/fi.umd.min.js +1 -1
  59. package/dist/lang/fr.umd.min.js +1 -1
  60. package/dist/lang/gn.umd.min.js +1 -1
  61. package/dist/lang/he.umd.min.js +1 -1
  62. package/dist/lang/hr.umd.min.js +1 -1
  63. package/dist/lang/hu.umd.min.js +1 -1
  64. package/dist/lang/id.umd.min.js +1 -1
  65. package/dist/lang/is.umd.min.js +1 -1
  66. package/dist/lang/it.umd.min.js +1 -1
  67. package/dist/lang/ja.umd.min.js +1 -1
  68. package/dist/lang/km.umd.min.js +1 -1
  69. package/dist/lang/ko-kr.umd.min.js +1 -1
  70. package/dist/lang/kur-ckb.umd.min.js +1 -1
  71. package/dist/lang/kz.umd.min.js +1 -1
  72. package/dist/lang/lu.umd.min.js +1 -1
  73. package/dist/lang/lv.umd.min.js +1 -1
  74. package/dist/lang/ml.umd.min.js +1 -1
  75. package/dist/lang/mm.umd.min.js +1 -1
  76. package/dist/lang/ms.umd.min.js +1 -1
  77. package/dist/lang/my.umd.min.js +1 -1
  78. package/dist/lang/nb-no.umd.min.js +1 -1
  79. package/dist/lang/nl.umd.min.js +1 -1
  80. package/dist/lang/pl.umd.min.js +1 -1
  81. package/dist/lang/pt-br.umd.min.js +1 -1
  82. package/dist/lang/pt.umd.min.js +1 -1
  83. package/dist/lang/ro.umd.min.js +1 -1
  84. package/dist/lang/ru.umd.min.js +1 -1
  85. package/dist/lang/sk.umd.min.js +1 -1
  86. package/dist/lang/sl.umd.min.js +1 -1
  87. package/dist/lang/sm.umd.min.js +1 -1
  88. package/dist/lang/sr.umd.min.js +1 -1
  89. package/dist/lang/sv.umd.min.js +1 -1
  90. package/dist/lang/ta.umd.min.js +1 -1
  91. package/dist/lang/th.umd.min.js +1 -1
  92. package/dist/lang/tr.umd.min.js +1 -1
  93. package/dist/lang/ug.umd.min.js +1 -1
  94. package/dist/lang/uk.umd.min.js +1 -1
  95. package/dist/lang/uz-Cyrl.umd.min.js +1 -1
  96. package/dist/lang/uz-Latn.umd.min.js +1 -1
  97. package/dist/lang/vi.umd.min.js +1 -1
  98. package/dist/lang/zh-hans.umd.min.js +1 -1
  99. package/dist/lang/zh-hant.umd.min.js +1 -1
  100. package/dist/quasar.addon.css +1 -1
  101. package/dist/quasar.addon.rtl.css +1 -1
  102. package/dist/quasar.common.js +2 -2
  103. package/dist/quasar.css +2 -2
  104. package/dist/quasar.esm.js +2 -2
  105. package/dist/quasar.ie.polyfills.js +1 -1
  106. package/dist/quasar.ie.polyfills.umd.min.js +1 -1
  107. package/dist/quasar.min.css +1 -1
  108. package/dist/quasar.rtl.css +6 -3
  109. package/dist/quasar.rtl.min.css +1 -1
  110. package/dist/quasar.sass +3 -2
  111. package/dist/quasar.styl +3 -2
  112. package/dist/quasar.umd.js +49 -38
  113. package/dist/quasar.umd.min.js +2 -2
  114. package/dist/quasar.umd.modern.js +48 -37
  115. package/dist/quasar.umd.modern.min.js +2 -2
  116. package/dist/web-types/web-types.json +1 -1
  117. package/icon-set/mdi-v7.js +141 -0
  118. package/icon-set/svg-mdi-v7.js +225 -0
  119. package/package.json +2 -2
  120. package/src/components/btn-dropdown/QBtnDropdown.js +0 -1
  121. package/src/components/date/QDate.js +3 -1
  122. package/src/components/dialog/QDialog.js +9 -6
  123. package/src/components/expansion-item/QExpansionItem.js +0 -1
  124. package/src/components/fab/QFab.js +3 -6
  125. package/src/components/fab/QFab.sass +2 -1
  126. package/src/components/fab/QFab.styl +2 -1
  127. package/src/components/input/QInput.js +6 -1
  128. package/src/components/item/QList.js +0 -3
  129. package/src/components/menu/QMenu.js +6 -3
  130. package/src/components/select/QSelect.js +12 -8
  131. package/src/mixins/mask.js +2 -0
@@ -2,7 +2,7 @@
2
2
  "$schema": "",
3
3
  "framework": "vue",
4
4
  "name": "quasar",
5
- "version": "1.22.1",
5
+ "version": "1.22.2",
6
6
  "contributions": {
7
7
  "html": {
8
8
  "types-syntax": "typescript",
@@ -0,0 +1,141 @@
1
+ export default {
2
+ name: 'mdi-v7',
3
+ type: {
4
+ positive: 'mdi-check-circle',
5
+ negative: 'mdi-alert',
6
+ info: 'mdi-information',
7
+ warning: 'mdi-exclamation'
8
+ },
9
+ arrow: {
10
+ up: 'mdi-arrow-up',
11
+ right: 'mdi-arrow-right',
12
+ down: 'mdi-arrow-down',
13
+ left: 'mdi-arrow-left',
14
+ dropdown: 'mdi-menu-down'
15
+ },
16
+ chevron: {
17
+ left: 'mdi-chevron-left',
18
+ right: 'mdi-chevron-right'
19
+ },
20
+ colorPicker: {
21
+ spectrum: 'mdi-gradient-vertical',
22
+ tune: 'mdi-tune',
23
+ palette: 'mdi-palette-swatch'
24
+ },
25
+ pullToRefresh: {
26
+ icon: 'mdi-refresh'
27
+ },
28
+ carousel: {
29
+ left: 'mdi-chevron-left',
30
+ right: 'mdi-chevron-right',
31
+ up: 'mdi-chevron-up',
32
+ down: 'mdi-chevron-down',
33
+ navigationIcon: 'mdi-circle'
34
+ },
35
+ chip: {
36
+ remove: 'mdi-close-circle',
37
+ selected: 'mdi-check'
38
+ },
39
+ datetime: {
40
+ arrowLeft: 'mdi-chevron-left',
41
+ arrowRight: 'mdi-chevron-right',
42
+ now: 'mdi-clock-outline',
43
+ today: 'mdi-calendar-today'
44
+ },
45
+ editor: {
46
+ bold: 'mdi-format-bold',
47
+ italic: 'mdi-format-italic',
48
+ strikethrough: 'mdi-format-strikethrough-variant',
49
+ underline: 'mdi-format-underline',
50
+ unorderedList: 'mdi-format-list-bulleted',
51
+ orderedList: 'mdi-format-list-numbered',
52
+ subscript: 'mdi-format-subscript',
53
+ superscript: 'mdi-format-superscript',
54
+ hyperlink: 'mdi-link',
55
+ toggleFullscreen: 'mdi-fullscreen',
56
+ quote: 'mdi-format-quote-close',
57
+ left: 'mdi-format-align-left',
58
+ center: 'mdi-format-align-center',
59
+ right: 'mdi-format-align-right',
60
+ justify: 'mdi-format-align-justify',
61
+ print: 'mdi-printer',
62
+ outdent: 'mdi-format-indent-decrease',
63
+ indent: 'mdi-format-indent-increase',
64
+ removeFormat: 'mdi-format-clear',
65
+ formatting: 'mdi-format-color-text',
66
+ fontSize: 'mdi-format-size',
67
+ align: 'mdi-format-align-left',
68
+ hr: 'mdi-minus',
69
+ undo: 'mdi-undo',
70
+ redo: 'mdi-redo',
71
+ heading: 'mdi-format-size',
72
+ heading1: 'mdi-format-header-1',
73
+ heading2: 'mdi-format-header-2',
74
+ heading3: 'mdi-format-header-3',
75
+ heading4: 'mdi-format-header-4',
76
+ heading5: 'mdi-format-header-5',
77
+ heading6: 'mdi-format-header-6',
78
+ code: 'mdi-code-tags',
79
+ size: 'mdi-format-size',
80
+ size1: 'mdi-numeric-1-box',
81
+ size2: 'mdi-numeric-2-box',
82
+ size3: 'mdi-numeric-3-box',
83
+ size4: 'mdi-numeric-4-box',
84
+ size5: 'mdi-numeric-5-box',
85
+ size6: 'mdi-numeric-6-box',
86
+ size7: 'mdi-numeric-7-box',
87
+ font: 'mdi-format-font',
88
+ viewSource: 'mdi-code-tags'
89
+ },
90
+ expansionItem: {
91
+ icon: 'mdi-chevron-down',
92
+ denseIcon: 'mdi-menu-down'
93
+ },
94
+ fab: {
95
+ icon: 'mdi-plus',
96
+ activeIcon: 'mdi-close'
97
+ },
98
+ field: {
99
+ clear: 'mdi-close-circle',
100
+ error: 'mdi-alert-circle'
101
+ },
102
+ pagination: {
103
+ first: 'mdi-chevron-double-left',
104
+ prev: 'mdi-chevron-left',
105
+ next: 'mdi-chevron-right',
106
+ last: 'mdi-chevron-double-right'
107
+ },
108
+ rating: {
109
+ icon: 'mdi-star'
110
+ },
111
+ stepper: {
112
+ done: 'mdi-check',
113
+ active: 'mdi-pencil',
114
+ error: 'mdi-alert'
115
+ },
116
+ tabs: {
117
+ left: 'mdi-chevron-left',
118
+ right: 'mdi-chevron-right',
119
+ up: 'mdi-chevron-up',
120
+ down: 'mdi-chevron-down'
121
+ },
122
+ table: {
123
+ arrowUp: 'mdi-arrow-up',
124
+ warning: 'mdi-alert',
125
+ firstPage: 'mdi-chevron-double-left',
126
+ prevPage: 'mdi-chevron-left',
127
+ nextPage: 'mdi-chevron-right',
128
+ lastPage: 'mdi-chevron-double-right'
129
+ },
130
+ tree: {
131
+ icon: 'mdi-play'
132
+ },
133
+ uploader: {
134
+ done: 'mdi-check',
135
+ clear: 'mdi-close',
136
+ add: 'mdi-plus-box',
137
+ upload: 'mdi-cloud-upload',
138
+ removeQueue: 'mdi-notification-clear-all',
139
+ removeUploaded: 'mdi-check-all'
140
+ }
141
+ }
@@ -0,0 +1,225 @@
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.js).
6
+ */
7
+
8
+
9
+ import {
10
+ mdiCheckCircle,
11
+ mdiAlert,
12
+ mdiInformation,
13
+ mdiExclamation,
14
+ mdiArrowUp,
15
+ mdiArrowRight,
16
+ mdiArrowDown,
17
+ mdiArrowLeft,
18
+ mdiMenuDown,
19
+ mdiChevronLeft,
20
+ mdiChevronRight,
21
+ mdiGradientVertical,
22
+ mdiTune,
23
+ mdiPaletteSwatch,
24
+ mdiRefresh,
25
+ mdiChevronUp,
26
+ mdiChevronDown,
27
+ mdiCircle,
28
+ mdiCloseCircle,
29
+ mdiCheck,
30
+ mdiClockOutline,
31
+ mdiCalendarToday,
32
+ mdiFormatBold,
33
+ mdiFormatItalic,
34
+ mdiFormatStrikethroughVariant,
35
+ mdiFormatUnderline,
36
+ mdiFormatListBulleted,
37
+ mdiFormatListNumbered,
38
+ mdiFormatSubscript,
39
+ mdiFormatSuperscript,
40
+ mdiLink,
41
+ mdiFullscreen,
42
+ mdiFormatQuoteClose,
43
+ mdiFormatAlignLeft,
44
+ mdiFormatAlignCenter,
45
+ mdiFormatAlignRight,
46
+ mdiFormatAlignJustify,
47
+ mdiPrinter,
48
+ mdiFormatIndentDecrease,
49
+ mdiFormatIndentIncrease,
50
+ mdiFormatClear,
51
+ mdiFormatColorText,
52
+ mdiFormatSize,
53
+ mdiMinus,
54
+ mdiUndo,
55
+ mdiRedo,
56
+ mdiFormatHeader1,
57
+ mdiFormatHeader2,
58
+ mdiFormatHeader3,
59
+ mdiFormatHeader4,
60
+ mdiFormatHeader5,
61
+ mdiFormatHeader6,
62
+ mdiCodeTags,
63
+ mdiNumeric1Box,
64
+ mdiNumeric2Box,
65
+ mdiNumeric3Box,
66
+ mdiNumeric4Box,
67
+ mdiNumeric5Box,
68
+ mdiNumeric6Box,
69
+ mdiNumeric7Box,
70
+ mdiFormatFont,
71
+ mdiPlus,
72
+ mdiClose,
73
+ mdiAlertCircle,
74
+ mdiChevronDoubleLeft,
75
+ mdiChevronDoubleRight,
76
+ mdiStar,
77
+ mdiPencil,
78
+ mdiPlay,
79
+ mdiPlusBox,
80
+ mdiCloudUpload,
81
+ mdiNotificationClearAll,
82
+ mdiCheckAll
83
+ } from '@quasar/extras/mdi-v7'
84
+
85
+ export default {
86
+ name: 'svg-mdi-v7',
87
+ type: {
88
+ positive: mdiCheckCircle,
89
+ negative: mdiAlert,
90
+ info: mdiInformation,
91
+ warning: mdiExclamation
92
+ },
93
+ arrow: {
94
+ up: mdiArrowUp,
95
+ right: mdiArrowRight,
96
+ down: mdiArrowDown,
97
+ left: mdiArrowLeft,
98
+ dropdown: mdiMenuDown
99
+ },
100
+ chevron: {
101
+ left: mdiChevronLeft,
102
+ right: mdiChevronRight
103
+ },
104
+ colorPicker: {
105
+ spectrum: mdiGradientVertical,
106
+ tune: mdiTune,
107
+ palette: mdiPaletteSwatch
108
+ },
109
+ pullToRefresh: {
110
+ icon: mdiRefresh
111
+ },
112
+ carousel: {
113
+ left: mdiChevronLeft,
114
+ right: mdiChevronRight,
115
+ up: mdiChevronUp,
116
+ down: mdiChevronDown,
117
+ navigationIcon: mdiCircle
118
+ },
119
+ chip: {
120
+ remove: mdiCloseCircle,
121
+ selected: mdiCheck
122
+ },
123
+ datetime: {
124
+ arrowLeft: mdiChevronLeft,
125
+ arrowRight: mdiChevronRight,
126
+ now: mdiClockOutline,
127
+ today: mdiCalendarToday
128
+ },
129
+ editor: {
130
+ bold: mdiFormatBold,
131
+ italic: mdiFormatItalic,
132
+ strikethrough: mdiFormatStrikethroughVariant,
133
+ underline: mdiFormatUnderline,
134
+ unorderedList: mdiFormatListBulleted,
135
+ orderedList: mdiFormatListNumbered,
136
+ subscript: mdiFormatSubscript,
137
+ superscript: mdiFormatSuperscript,
138
+ hyperlink: mdiLink,
139
+ toggleFullscreen: mdiFullscreen,
140
+ quote: mdiFormatQuoteClose,
141
+ left: mdiFormatAlignLeft,
142
+ center: mdiFormatAlignCenter,
143
+ right: mdiFormatAlignRight,
144
+ justify: mdiFormatAlignJustify,
145
+ print: mdiPrinter,
146
+ outdent: mdiFormatIndentDecrease,
147
+ indent: mdiFormatIndentIncrease,
148
+ removeFormat: mdiFormatClear,
149
+ formatting: mdiFormatColorText,
150
+ fontSize: mdiFormatSize,
151
+ align: mdiFormatAlignLeft,
152
+ hr: mdiMinus,
153
+ undo: mdiUndo,
154
+ redo: mdiRedo,
155
+ heading: mdiFormatSize,
156
+ heading1: mdiFormatHeader1,
157
+ heading2: mdiFormatHeader2,
158
+ heading3: mdiFormatHeader3,
159
+ heading4: mdiFormatHeader4,
160
+ heading5: mdiFormatHeader5,
161
+ heading6: mdiFormatHeader6,
162
+ code: mdiCodeTags,
163
+ size: mdiFormatSize,
164
+ size1: mdiNumeric1Box,
165
+ size2: mdiNumeric2Box,
166
+ size3: mdiNumeric3Box,
167
+ size4: mdiNumeric4Box,
168
+ size5: mdiNumeric5Box,
169
+ size6: mdiNumeric6Box,
170
+ size7: mdiNumeric7Box,
171
+ font: mdiFormatFont,
172
+ viewSource: mdiCodeTags
173
+ },
174
+ expansionItem: {
175
+ icon: mdiChevronDown,
176
+ denseIcon: mdiMenuDown
177
+ },
178
+ fab: {
179
+ icon: mdiPlus,
180
+ activeIcon: mdiClose
181
+ },
182
+ field: {
183
+ clear: mdiCloseCircle,
184
+ error: mdiAlertCircle
185
+ },
186
+ pagination: {
187
+ first: mdiChevronDoubleLeft,
188
+ prev: mdiChevronLeft,
189
+ next: mdiChevronRight,
190
+ last: mdiChevronDoubleRight
191
+ },
192
+ rating: {
193
+ icon: mdiStar
194
+ },
195
+ stepper: {
196
+ done: mdiCheck,
197
+ active: mdiPencil,
198
+ error: mdiAlert
199
+ },
200
+ tabs: {
201
+ left: mdiChevronLeft,
202
+ right: mdiChevronRight,
203
+ up: mdiChevronUp,
204
+ down: mdiChevronDown
205
+ },
206
+ table: {
207
+ arrowUp: mdiArrowUp,
208
+ warning: mdiAlert,
209
+ firstPage: mdiChevronDoubleLeft,
210
+ prevPage: mdiChevronLeft,
211
+ nextPage: mdiChevronRight,
212
+ lastPage: mdiChevronDoubleRight
213
+ },
214
+ tree: {
215
+ icon: mdiPlay
216
+ },
217
+ uploader: {
218
+ done: mdiCheck,
219
+ clear: mdiClose,
220
+ add: mdiPlusBox,
221
+ upload: mdiCloudUpload,
222
+ removeQueue: mdiNotificationClearAll,
223
+ removeUploaded: mdiCheckAll
224
+ }
225
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "quasar",
3
- "version": "1.22.1",
3
+ "version": "1.22.2",
4
4
  "description": "Build high-performance VueJS user interfaces (SPA, PWA, SSR, Mobile and Desktop) in record time",
5
5
  "module": "src/index.esm.js",
6
6
  "typings": "dist/types/index.d.ts",
@@ -60,7 +60,7 @@
60
60
  "homepage": "https://quasar.dev",
61
61
  "devDependencies": {
62
62
  "@quasar/app": "^2.0.6",
63
- "@quasar/extras": "^1.11.0",
63
+ "@quasar/extras": "^1.15.5",
64
64
  "@rollup/plugin-buble": "^0.21.1",
65
65
  "@rollup/plugin-json": "^4.0.2",
66
66
  "@rollup/plugin-node-resolve": "^7.1.0",
@@ -82,7 +82,6 @@ export default Vue.extend({
82
82
  'aria-expanded': this.showing === true ? 'true' : 'false',
83
83
  'aria-haspopup': 'true',
84
84
  'aria-controls': this.targetUid,
85
- 'aria-owns': this.targetUid,
86
85
  'aria-label': this.toggleAriaLabel || this.$q.lang.label[ this.showing === true ? 'collapse' : 'expand' ](this.label)
87
86
  }
88
87
 
@@ -102,7 +102,9 @@ export default Vue.extend({
102
102
  },
103
103
 
104
104
  view () {
105
- this.$refs.blurTarget !== void 0 && this.$refs.blurTarget.focus()
105
+ if (this.$refs.blurTarget !== void 0 && this.$el.contains(document.activeElement) === true) {
106
+ this.$refs.blurTarget.focus()
107
+ }
106
108
  },
107
109
 
108
110
  'viewModel.year' (year) {
@@ -171,9 +171,9 @@ export default Vue.extend({
171
171
  })
172
172
  },
173
173
 
174
- shake (refocusTarget) {
175
- if (refocusTarget && typeof refocusTarget.focus === 'function') {
176
- refocusTarget.focus({ preventScroll: true })
174
+ shake (focusTarget) {
175
+ if (focusTarget && typeof focusTarget.focus === 'function') {
176
+ focusTarget.focus({ preventScroll: true })
177
177
  }
178
178
  else {
179
179
  this.focus()
@@ -210,14 +210,14 @@ export default Vue.extend({
210
210
  this.$el.dispatchEvent(create('popup-show', { bubbles: true }))
211
211
  this.__updateMaximized(this.maximized)
212
212
 
213
- EscapeKey.register(this, () => {
213
+ EscapeKey.register(this, escEvt => {
214
214
  if (this.seamless !== true) {
215
215
  if (this.persistent === true || this.noEscDismiss === true) {
216
216
  this.maximized !== true && this.noShake !== true && this.shake()
217
217
  }
218
218
  else {
219
219
  this.$emit('escape-key')
220
- this.hide()
220
+ this.hide(escEvt)
221
221
  }
222
222
  }
223
223
  })
@@ -276,7 +276,10 @@ export default Vue.extend({
276
276
 
277
277
  // check null for IE
278
278
  if (this.__refocusTarget !== void 0 && this.__refocusTarget !== null) {
279
- this.__refocusTarget.focus(evt)
279
+ ((evt && evt.type.indexOf('key') === 0
280
+ ? this.__refocusTarget.closest('[tabindex]:not([tabindex^="-"])')
281
+ : void 0
282
+ ) || this.__refocusTarget).focus()
280
283
  this.__refocusTarget = void 0
281
284
  }
282
285
 
@@ -145,7 +145,6 @@ export default Vue.extend({
145
145
  return {
146
146
  role: 'button',
147
147
  'aria-expanded': this.showing === true ? 'true' : 'false',
148
- 'aria-owns': this.targetUid,
149
148
  'aria-controls': this.targetUid,
150
149
  'aria-label': toggleAriaLabel
151
150
  }
@@ -73,13 +73,11 @@ export default Vue.extend({
73
73
 
74
74
  actionsAttrs () {
75
75
  const attrs = {
76
- id: this.targetUid
76
+ id: this.targetUid,
77
+ role: 'menu'
77
78
  }
78
79
 
79
- if (this.showing === true) {
80
- attrs.role = 'menu'
81
- }
82
- else {
80
+ if (this.showing !== true) {
83
81
  attrs['aria-hidden'] = 'true'
84
82
  }
85
83
 
@@ -95,7 +93,6 @@ export default Vue.extend({
95
93
  'aria-expanded': this.showing === true ? 'true' : 'false',
96
94
  'aria-haspopup': 'true',
97
95
  'aria-controls': this.targetUid,
98
- 'aria-owns': this.targetUid,
99
96
  ...this.qAttrs
100
97
  }
101
98
  },
@@ -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
@@ -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
@@ -145,7 +145,7 @@ export default Vue.extend({
145
145
  }
146
146
 
147
147
  if (this.autogrow === true) {
148
- on.animationend = this.__adjustHeight
148
+ on.animationend = this.__onAnimationend
149
149
  }
150
150
 
151
151
  return on
@@ -242,6 +242,11 @@ export default Vue.extend({
242
242
  this.autogrow === true && this.__adjustHeight()
243
243
  },
244
244
 
245
+ __onAnimationend (e) {
246
+ this.qListeners.animationend !== void 0 && this.$emit('animationend', e)
247
+ this.__adjustHeight()
248
+ },
249
+
245
250
  __emitValue (val, stopWatcher) {
246
251
  this.emitValueFn = () => {
247
252
  if (
@@ -5,8 +5,6 @@ import ListenersMixin from '../../mixins/listeners.js'
5
5
 
6
6
  import { slot } from '../../utils/private/slot.js'
7
7
 
8
- const attrs = { role: 'list' }
9
-
10
8
  export default Vue.extend({
11
9
  name: 'QList',
12
10
 
@@ -38,7 +36,6 @@ export default Vue.extend({
38
36
  render (h) {
39
37
  return h(this.tag, {
40
38
  class: this.classes,
41
- attrs,
42
39
  on: { ...this.qListeners }
43
40
  }, slot(this, 'default'))
44
41
  }
@@ -155,10 +155,10 @@ export default Vue.extend({
155
155
  ? document.activeElement
156
156
  : void 0
157
157
 
158
- EscapeKey.register(this, () => {
158
+ EscapeKey.register(this, escEvt => {
159
159
  if (this.persistent !== true) {
160
160
  this.$emit('escape-key')
161
- this.hide()
161
+ this.hide(escEvt)
162
162
  }
163
163
  })
164
164
 
@@ -226,7 +226,10 @@ export default Vue.extend({
226
226
  evt.qClickOutside !== true
227
227
  )
228
228
  ) {
229
- this.__refocusTarget.focus()
229
+ ((evt && evt.type.indexOf('key') === 0
230
+ ? this.__refocusTarget.closest('[tabindex]:not([tabindex^="-"])')
231
+ : void 0
232
+ ) || this.__refocusTarget).focus()
230
233
  this.__refocusTarget = void 0
231
234
  }
232
235
 
@@ -246,6 +246,12 @@ export default Vue.extend({
246
246
  .join(', ')
247
247
  },
248
248
 
249
+ ariaCurrentValue () {
250
+ return this.displayValue !== void 0
251
+ ? this.displayValue
252
+ : this.selectedString
253
+ },
254
+
249
255
  sanitizeFn () {
250
256
  return this.optionsSanitize === true
251
257
  ? () => true
@@ -424,7 +430,6 @@ export default Vue.extend({
424
430
  'aria-readonly': this.readonly === true ? 'true' : 'false',
425
431
  'aria-autocomplete': this.useInput === true ? 'list' : 'none',
426
432
  'aria-expanded': this.menu === true ? 'true' : 'false',
427
- 'aria-owns': `${this.targetUid}_lb`,
428
433
  'aria-controls': `${this.targetUid}_lb`
429
434
  }
430
435
 
@@ -436,13 +441,11 @@ export default Vue.extend({
436
441
  },
437
442
 
438
443
  listboxAttrs () {
439
- const attrs = {
444
+ return {
440
445
  id: `${this.targetUid}_lb`,
441
446
  role: 'listbox',
442
447
  'aria-multiselectable': this.multiple === true ? 'true' : 'false'
443
448
  }
444
-
445
- return attrs
446
449
  }
447
450
  },
448
451
 
@@ -805,7 +808,9 @@ export default Vue.extend({
805
808
  this.useInput !== true &&
806
809
  e.key !== void 0 &&
807
810
  e.key.length === 1 && // printable char
808
- e.altKey === e.ctrlKey && // not kbd shortcut
811
+ e.altKey === false && // not kbd shortcut
812
+ e.ctrlKey === false && // not kbd shortcut
813
+ e.metaKey === false && // not kbd shortcut, especially on macOS with Command key
809
814
  (e.keyCode !== 32 || this.searchBuffer.length > 0) // space in middle of search
810
815
  ) {
811
816
  this.menu !== true && this.showPopup(e)
@@ -963,9 +968,7 @@ export default Vue.extend({
963
968
  return [
964
969
  h('span', {
965
970
  domProps: {
966
- [this.displayAsText ? 'textContent' : 'innerHTML']: this.displayValue !== void 0
967
- ? this.displayValue
968
- : this.selectedString
971
+ [this.displayAsText ? 'textContent' : 'innerHTML']: this.ariaCurrentValue
969
972
  }
970
973
  })
971
974
  ]
@@ -1006,6 +1009,7 @@ export default Vue.extend({
1006
1009
  h('input', {
1007
1010
  key: 'autoinp',
1008
1011
  staticClass: 'q-select__autocomplete-input',
1012
+ domProps: { value: this.ariaCurrentValue },
1009
1013
  attrs: { autocomplete: this.autocomplete, tabindex: -1 },
1010
1014
  on: cache(this, 'autoinp', {
1011
1015
  keyup: this.__onTargetAutocomplete
@@ -422,6 +422,8 @@ export default {
422
422
  },
423
423
 
424
424
  __onMaskedKeydown (e) {
425
+ this.qListeners.keydown !== void 0 && this.$emit('keydown', e)
426
+
425
427
  if (shouldIgnoreKey(e) === true) {
426
428
  return
427
429
  }