quasar 1.22.0 → 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 (147) hide show
  1. package/dist/api/QDialog.json +11 -1
  2. package/dist/api/QList.json +12 -0
  3. package/dist/icon-set/bootstrap-icons.umd.min.js +1 -1
  4. package/dist/icon-set/eva-icons.umd.min.js +1 -1
  5. package/dist/icon-set/fontawesome-v5-pro.umd.min.js +1 -1
  6. package/dist/icon-set/fontawesome-v5.umd.min.js +1 -1
  7. package/dist/icon-set/fontawesome-v6-pro.umd.min.js +1 -1
  8. package/dist/icon-set/fontawesome-v6.umd.min.js +1 -1
  9. package/dist/icon-set/ionicons-v4.umd.min.js +1 -1
  10. package/dist/icon-set/line-awesome.umd.min.js +1 -1
  11. package/dist/icon-set/material-icons-outlined.umd.min.js +1 -1
  12. package/dist/icon-set/material-icons-round.umd.min.js +1 -1
  13. package/dist/icon-set/material-icons-sharp.umd.min.js +1 -1
  14. package/dist/icon-set/material-icons.umd.min.js +1 -1
  15. package/dist/icon-set/material-symbols-outlined.umd.min.js +1 -1
  16. package/dist/icon-set/material-symbols-rounded.umd.min.js +1 -1
  17. package/dist/icon-set/material-symbols-sharp.umd.min.js +1 -1
  18. package/dist/icon-set/mdi-v3.umd.min.js +1 -1
  19. package/dist/icon-set/mdi-v4.umd.min.js +1 -1
  20. package/dist/icon-set/mdi-v5.umd.min.js +1 -1
  21. package/dist/icon-set/mdi-v6.umd.min.js +1 -1
  22. package/dist/icon-set/mdi-v7.umd.min.js +6 -0
  23. package/dist/icon-set/svg-bootstrap-icons.umd.min.js +1 -1
  24. package/dist/icon-set/svg-eva-icons.umd.min.js +1 -1
  25. package/dist/icon-set/svg-fontawesome-v5.umd.min.js +1 -1
  26. package/dist/icon-set/svg-fontawesome-v6.umd.min.js +1 -1
  27. package/dist/icon-set/svg-ionicons-v4.umd.min.js +1 -1
  28. package/dist/icon-set/svg-ionicons-v5.umd.min.js +1 -1
  29. package/dist/icon-set/svg-ionicons-v6.umd.min.js +1 -1
  30. package/dist/icon-set/svg-line-awesome.umd.min.js +1 -1
  31. package/dist/icon-set/svg-material-icons-outlined.umd.min.js +1 -1
  32. package/dist/icon-set/svg-material-icons-round.umd.min.js +1 -1
  33. package/dist/icon-set/svg-material-icons-sharp.umd.min.js +1 -1
  34. package/dist/icon-set/svg-material-icons.umd.min.js +1 -1
  35. package/dist/icon-set/svg-material-symbols-outlined.umd.min.js +1 -1
  36. package/dist/icon-set/svg-material-symbols-rounded.umd.min.js +1 -1
  37. package/dist/icon-set/svg-material-symbols-sharp.umd.min.js +1 -1
  38. package/dist/icon-set/svg-mdi-v4.umd.min.js +1 -1
  39. package/dist/icon-set/svg-mdi-v5.umd.min.js +1 -1
  40. package/dist/icon-set/svg-mdi-v6.umd.min.js +1 -1
  41. package/dist/icon-set/svg-mdi-v7.umd.min.js +6 -0
  42. package/dist/icon-set/svg-themify.umd.min.js +1 -1
  43. package/dist/icon-set/themify.umd.min.js +1 -1
  44. package/dist/lang/ar.umd.min.js +1 -1
  45. package/dist/lang/az-latn.umd.min.js +1 -1
  46. package/dist/lang/bg.umd.min.js +1 -1
  47. package/dist/lang/ca.umd.min.js +1 -1
  48. package/dist/lang/cs.umd.min.js +1 -1
  49. package/dist/lang/da.umd.min.js +1 -1
  50. package/dist/lang/de.umd.min.js +1 -1
  51. package/dist/lang/el.umd.min.js +1 -1
  52. package/dist/lang/en-gb.umd.min.js +1 -1
  53. package/dist/lang/en-us.umd.min.js +1 -1
  54. package/dist/lang/eo.umd.min.js +1 -1
  55. package/dist/lang/es.umd.min.js +1 -1
  56. package/dist/lang/et.umd.min.js +1 -1
  57. package/dist/lang/eu.umd.min.js +1 -1
  58. package/dist/lang/fa-ir.umd.min.js +1 -1
  59. package/dist/lang/fa.umd.min.js +1 -1
  60. package/dist/lang/fi.umd.min.js +1 -1
  61. package/dist/lang/fr.umd.min.js +1 -1
  62. package/dist/lang/gn.umd.min.js +1 -1
  63. package/dist/lang/he.umd.min.js +1 -1
  64. package/dist/lang/hr.umd.min.js +1 -1
  65. package/dist/lang/hu.umd.min.js +1 -1
  66. package/dist/lang/id.umd.min.js +1 -1
  67. package/dist/lang/is.umd.min.js +1 -1
  68. package/dist/lang/it.umd.min.js +1 -1
  69. package/dist/lang/ja.umd.min.js +1 -1
  70. package/dist/lang/km.umd.min.js +1 -1
  71. package/dist/lang/ko-kr.umd.min.js +1 -1
  72. package/dist/lang/kur-ckb.umd.min.js +1 -1
  73. package/dist/lang/kz.umd.min.js +1 -1
  74. package/dist/lang/lu.umd.min.js +1 -1
  75. package/dist/lang/lv.umd.min.js +1 -1
  76. package/dist/lang/ml.umd.min.js +1 -1
  77. package/dist/lang/mm.umd.min.js +1 -1
  78. package/dist/lang/ms.umd.min.js +1 -1
  79. package/dist/lang/my.umd.min.js +1 -1
  80. package/dist/lang/nb-no.umd.min.js +1 -1
  81. package/dist/lang/nl.umd.min.js +1 -1
  82. package/dist/lang/pl.umd.min.js +1 -1
  83. package/dist/lang/pt-br.umd.min.js +1 -1
  84. package/dist/lang/pt.umd.min.js +1 -1
  85. package/dist/lang/ro.umd.min.js +1 -1
  86. package/dist/lang/ru.umd.min.js +1 -1
  87. package/dist/lang/sk.umd.min.js +1 -1
  88. package/dist/lang/sl.umd.min.js +1 -1
  89. package/dist/lang/sm.umd.min.js +1 -1
  90. package/dist/lang/sr.umd.min.js +1 -1
  91. package/dist/lang/sv.umd.min.js +1 -1
  92. package/dist/lang/ta.umd.min.js +1 -1
  93. package/dist/lang/th.umd.min.js +1 -1
  94. package/dist/lang/tr.umd.min.js +1 -1
  95. package/dist/lang/ug.umd.min.js +1 -1
  96. package/dist/lang/uk.umd.min.js +1 -1
  97. package/dist/lang/uz-Cyrl.umd.min.js +1 -1
  98. package/dist/lang/uz-Latn.umd.min.js +1 -1
  99. package/dist/lang/vi.umd.min.js +1 -1
  100. package/dist/lang/zh-hans.umd.min.js +1 -1
  101. package/dist/lang/zh-hant.umd.min.js +1 -1
  102. package/dist/quasar.addon.css +1 -1
  103. package/dist/quasar.addon.rtl.css +1 -1
  104. package/dist/quasar.common.js +2 -2
  105. package/dist/quasar.css +4 -4
  106. package/dist/quasar.esm.js +2 -2
  107. package/dist/quasar.ie.polyfills.js +1 -1
  108. package/dist/quasar.ie.polyfills.umd.min.js +1 -1
  109. package/dist/quasar.min.css +1 -1
  110. package/dist/quasar.rtl.css +8 -5
  111. package/dist/quasar.rtl.min.css +1 -1
  112. package/dist/quasar.sass +5 -4
  113. package/dist/quasar.styl +5 -4
  114. package/dist/quasar.umd.js +124 -101
  115. package/dist/quasar.umd.min.js +2 -2
  116. package/dist/quasar.umd.modern.js +123 -96
  117. package/dist/quasar.umd.modern.min.js +2 -2
  118. package/dist/types/index.d.ts +6 -1
  119. package/dist/vetur/quasar-attributes.json +4 -0
  120. package/dist/vetur/quasar-tags.json +1 -0
  121. package/dist/web-types/web-types.json +11 -1
  122. package/icon-set/mdi-v7.js +141 -0
  123. package/icon-set/svg-mdi-v7.js +225 -0
  124. package/package.json +2 -2
  125. package/src/components/btn-dropdown/QBtnDropdown.js +0 -1
  126. package/src/components/date/QDate.js +3 -1
  127. package/src/components/dialog/QDialog.js +35 -30
  128. package/src/components/dialog/QDialog.json +9 -1
  129. package/src/components/dialog-bottom-sheet/BottomSheet.js +5 -4
  130. package/src/components/expansion-item/QExpansionItem.js +0 -1
  131. package/src/components/fab/QFab.js +3 -6
  132. package/src/components/fab/QFab.sass +2 -1
  133. package/src/components/fab/QFab.styl +2 -1
  134. package/src/components/form/QForm.js +3 -1
  135. package/src/components/inner-loading/QInnerLoading.js +1 -6
  136. package/src/components/input/QInput.js +6 -1
  137. package/src/components/item/QList.js +7 -5
  138. package/src/components/item/QList.json +8 -0
  139. package/src/components/menu/QMenu.js +11 -5
  140. package/src/components/scroll-area/QScrollArea.js +9 -3
  141. package/src/components/scroll-observer/QScrollObserver.js +4 -0
  142. package/src/components/select/QSelect.js +12 -8
  143. package/src/components/select/QSelect.sass +2 -2
  144. package/src/components/select/QSelect.styl +2 -2
  145. package/src/components/tooltip/QTooltip.js +1 -1
  146. package/src/mixins/mask.js +3 -1
  147. package/src/mixins/transition.js +14 -15
@@ -2635,8 +2635,9 @@ export interface QDialog extends Vue {
2635
2635
  focus (selector? : string): void
2636
2636
  /**
2637
2637
  * Shakes dialog
2638
+ * @param focusTarget Optional DOM Element to be focused after shake
2638
2639
  */
2639
- shake (): void
2640
+ shake (focusTarget? : Element): void
2640
2641
  }
2641
2642
 
2642
2643
  export interface QDrawer extends Vue {
@@ -4375,6 +4376,10 @@ export interface QItemSection extends Vue {
4375
4376
  }
4376
4377
 
4377
4378
  export interface QList extends Vue {
4379
+ /**
4380
+ * HTML tag to render
4381
+ */
4382
+ tag? : string
4378
4383
  /**
4379
4384
  * Applies a default border to the component
4380
4385
  */
@@ -2759,6 +2759,10 @@
2759
2759
  "type": "boolean",
2760
2760
  "description": "Do not wrap text (useful for item's main content)"
2761
2761
  },
2762
+ "q-list/tag": {
2763
+ "type": "string",
2764
+ "description": "HTML tag to render"
2765
+ },
2762
2766
  "q-list/bordered": {
2763
2767
  "type": "boolean",
2764
2768
  "description": "Applies a default border to the component"
@@ -906,6 +906,7 @@
906
906
  },
907
907
  "q-list": {
908
908
  "attributes": [
909
+ "tag",
909
910
  "bordered",
910
911
  "dense",
911
912
  "separator",
@@ -2,7 +2,7 @@
2
2
  "$schema": "",
3
3
  "framework": "vue",
4
4
  "name": "quasar",
5
- "version": "1.22.0",
5
+ "version": "1.22.2",
6
6
  "contributions": {
7
7
  "html": {
8
8
  "types-syntax": "typescript",
@@ -9180,6 +9180,16 @@
9180
9180
  "symbol": "QList"
9181
9181
  },
9182
9182
  "attributes": [
9183
+ {
9184
+ "name": "tag",
9185
+ "value": {
9186
+ "kind": "expression",
9187
+ "type": "string"
9188
+ },
9189
+ "description": "HTML tag to render\n\nExamples:\ndiv\nul\nol",
9190
+ "doc-url": "https://v1.quasar.dev/vue-components/list-and-list-items",
9191
+ "default": "\"div\""
9192
+ },
9183
9193
  {
9184
9194
  "name": "bordered",
9185
9195
  "value": {
@@ -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.0",
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) {
@@ -6,6 +6,7 @@ import ModelToggleMixin from '../../mixins/model-toggle.js'
6
6
  import PortalMixin from '../../mixins/portal.js'
7
7
  import PreventScrollMixin from '../../mixins/prevent-scroll.js'
8
8
  import AttrsMixin, { ariaHidden } from '../../mixins/attrs.js'
9
+ import TransitionMixin from '../../mixins/transition.js'
9
10
 
10
11
  import { childHasFocus } from '../../utils/dom.js'
11
12
  import EscapeKey from '../../utils/private/escape-key.js'
@@ -25,7 +26,7 @@ const positionClass = {
25
26
  left: 'fixed-left items-center'
26
27
  }
27
28
 
28
- const transitions = {
29
+ const defaultTransitions = {
29
30
  standard: ['scale', 'scale'],
30
31
  top: ['slide-down', 'slide-up'],
31
32
  bottom: ['slide-up', 'slide-down'],
@@ -33,11 +34,17 @@ const transitions = {
33
34
  left: ['slide-right', 'slide-left']
34
35
  }
35
36
 
37
+ const backdropAttrs = {
38
+ ...ariaHidden,
39
+ tabindex: -1
40
+ }
41
+
36
42
  export default Vue.extend({
37
43
  name: 'QDialog',
38
44
 
39
45
  mixins: [
40
46
  AttrsMixin,
47
+ TransitionMixin,
41
48
  HistoryMixin,
42
49
  TimeoutMixin,
43
50
  ModelToggleMixin,
@@ -78,20 +85,11 @@ export default Vue.extend({
78
85
 
79
86
  data () {
80
87
  return {
81
- transitionState: this.showing,
82
88
  animating: false
83
89
  }
84
90
  },
85
91
 
86
92
  watch: {
87
- showing (val) {
88
- if (this.transitionShowComputed !== this.transitionHideComputed) {
89
- this.$nextTick(() => {
90
- this.transitionState = val
91
- })
92
- }
93
- },
94
-
95
93
  maximized (state) {
96
94
  this.showing === true && this.__updateMaximized(state)
97
95
  },
@@ -112,18 +110,12 @@ export default Vue.extend({
112
110
  (this.square === true ? ' q-dialog__inner--square' : '')
113
111
  },
114
112
 
115
- transitionShowComputed () {
116
- return 'q-transition--' + (this.transitionShow === void 0 ? transitions[this.position][0] : this.transitionShow)
113
+ defaultTransitionShow () {
114
+ return defaultTransitions[this.position][0]
117
115
  },
118
116
 
119
- transitionHideComputed () {
120
- return 'q-transition--' + (this.transitionHide === void 0 ? transitions[this.position][1] : this.transitionHide)
121
- },
122
-
123
- transition () {
124
- return this.transitionState === true
125
- ? this.transitionHideComputed
126
- : this.transitionShowComputed
117
+ defaultTransitionHide () {
118
+ return defaultTransitions[this.position][1]
127
119
  },
128
120
 
129
121
  useBackdrop () {
@@ -170,13 +162,23 @@ export default Vue.extend({
170
162
  return
171
163
  }
172
164
 
173
- node = node.querySelector(selector || '[autofocus], [data-autofocus]') || node
165
+ node = (selector !== '' ? node.querySelector(selector) : null) ||
166
+ node.querySelector('[autofocus][tabindex], [data-autofocus][tabindex]') ||
167
+ node.querySelector('[autofocus] [tabindex], [data-autofocus] [tabindex]') ||
168
+ node.querySelector('[autofocus], [data-autofocus]') ||
169
+ node
174
170
  node.focus({ preventScroll: true })
175
171
  })
176
172
  },
177
173
 
178
- shake () {
179
- this.focus()
174
+ shake (focusTarget) {
175
+ if (focusTarget && typeof focusTarget.focus === 'function') {
176
+ focusTarget.focus({ preventScroll: true })
177
+ }
178
+ else {
179
+ this.focus()
180
+ }
181
+
180
182
  this.$emit('shake')
181
183
 
182
184
  const node = this.__getInnerNode()
@@ -208,14 +210,14 @@ export default Vue.extend({
208
210
  this.$el.dispatchEvent(create('popup-show', { bubbles: true }))
209
211
  this.__updateMaximized(this.maximized)
210
212
 
211
- EscapeKey.register(this, () => {
213
+ EscapeKey.register(this, escEvt => {
212
214
  if (this.seamless !== true) {
213
215
  if (this.persistent === true || this.noEscDismiss === true) {
214
216
  this.maximized !== true && this.noShake !== true && this.shake()
215
217
  }
216
218
  else {
217
219
  this.$emit('escape-key')
218
- this.hide()
220
+ this.hide(escEvt)
219
221
  }
220
222
  }
221
223
  })
@@ -274,7 +276,10 @@ export default Vue.extend({
274
276
 
275
277
  // check null for IE
276
278
  if (this.__refocusTarget !== void 0 && this.__refocusTarget !== null) {
277
- 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()
278
283
  this.__refocusTarget = void 0
279
284
  }
280
285
 
@@ -338,7 +343,7 @@ export default Vue.extend({
338
343
  this.hide(e)
339
344
  }
340
345
  else if (this.noShake !== true) {
341
- this.shake()
346
+ this.shake(e.relatedTarget)
342
347
  }
343
348
  },
344
349
 
@@ -365,15 +370,15 @@ export default Vue.extend({
365
370
  }, this.useBackdrop === true ? [
366
371
  h('div', {
367
372
  staticClass: 'q-dialog__backdrop fixed-full',
368
- attrs: ariaHidden,
373
+ attrs: backdropAttrs,
369
374
  on: cache(this, 'bkdrop', {
370
- click: this.__onBackdropClick
375
+ focusin: this.__onBackdropClick
371
376
  })
372
377
  })
373
378
  ] : null),
374
379
 
375
380
  h('transition', {
376
- props: { name: this.transition }
381
+ props: { ...this.transitionProps }
377
382
  }, [
378
383
  this.showing === true ? h('div', {
379
384
  ref: 'inner',
@@ -143,7 +143,15 @@
143
143
  },
144
144
 
145
145
  "shake": {
146
- "desc": "Shakes dialog"
146
+ "desc": "Shakes dialog",
147
+ "params": {
148
+ "focusTarget": {
149
+ "type": "Element",
150
+ "desc": "Optional DOM Element to be focused after shake",
151
+ "examples": [ "document.getElementById('example')" ],
152
+ "addedIn": "v1.22.1"
153
+ }
154
+ }
147
155
  }
148
156
  },
149
157
 
@@ -78,7 +78,9 @@ export default Vue.extend({
78
78
  class: action.classes,
79
79
  attrs: attrsGridItem,
80
80
  on: {
81
- click: () => this.onOk(action),
81
+ click: () => {
82
+ this.onOk(action)
83
+ },
82
84
  keyup: e => {
83
85
  e.keyCode === 13 && this.onOk(action)
84
86
  }
@@ -117,9 +119,8 @@ export default Vue.extend({
117
119
  dark: this.isDark
118
120
  },
119
121
  on: {
120
- click: () => this.onOk(action),
121
- keyup: e => {
122
- e.keyCode === 13 && this.onOk(action)
122
+ click: () => {
123
+ this.onOk(action)
123
124
  }
124
125
  }
125
126
  }, [
@@ -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
  }