quasar 1.15.21 → 1.16.1
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.
- package/dist/icon-set/bootstrap-icons.umd.min.js +1 -1
- package/dist/icon-set/eva-icons.umd.min.js +1 -1
- package/dist/icon-set/fontawesome-v5-pro.umd.min.js +1 -1
- package/dist/icon-set/fontawesome-v5.umd.min.js +1 -1
- package/dist/icon-set/ionicons-v4.umd.min.js +1 -1
- package/dist/icon-set/line-awesome.umd.min.js +1 -1
- package/dist/icon-set/material-icons-outlined.umd.min.js +1 -1
- package/dist/icon-set/material-icons-round.umd.min.js +1 -1
- package/dist/icon-set/material-icons-sharp.umd.min.js +1 -1
- package/dist/icon-set/material-icons.umd.min.js +1 -1
- package/dist/icon-set/mdi-v3.umd.min.js +1 -1
- package/dist/icon-set/mdi-v4.umd.min.js +1 -1
- package/dist/icon-set/mdi-v5.umd.min.js +1 -1
- package/dist/icon-set/mdi-v6.umd.min.js +6 -0
- package/dist/icon-set/svg-bootstrap-icons.umd.min.js +1 -1
- package/dist/icon-set/svg-eva-icons.umd.min.js +1 -1
- package/dist/icon-set/svg-fontawesome-v5.umd.min.js +1 -1
- package/dist/icon-set/svg-ionicons-v4.umd.min.js +1 -1
- package/dist/icon-set/svg-ionicons-v5.umd.min.js +1 -1
- package/dist/icon-set/svg-line-awesome.umd.min.js +1 -1
- package/dist/icon-set/svg-material-icons-outlined.umd.min.js +2 -2
- package/dist/icon-set/svg-material-icons-round.umd.min.js +2 -2
- package/dist/icon-set/svg-material-icons-sharp.umd.min.js +2 -2
- package/dist/icon-set/svg-material-icons.umd.min.js +2 -2
- package/dist/icon-set/svg-mdi-v4.umd.min.js +1 -1
- package/dist/icon-set/svg-mdi-v5.umd.min.js +1 -1
- package/dist/icon-set/svg-mdi-v6.umd.min.js +6 -0
- package/dist/icon-set/svg-themify.umd.min.js +1 -1
- package/dist/icon-set/themify.umd.min.js +1 -1
- package/dist/lang/ar.umd.min.js +2 -2
- package/dist/lang/az-latn.umd.min.js +1 -1
- package/dist/lang/bg.umd.min.js +1 -1
- package/dist/lang/ca.umd.min.js +1 -1
- package/dist/lang/cs.umd.min.js +1 -1
- package/dist/lang/da.umd.min.js +1 -1
- package/dist/lang/de.umd.min.js +2 -2
- package/dist/lang/el.umd.min.js +1 -1
- package/dist/lang/en-gb.umd.min.js +1 -1
- package/dist/lang/en-us.umd.min.js +1 -1
- package/dist/lang/eo.umd.min.js +1 -1
- package/dist/lang/es.umd.min.js +1 -1
- package/dist/lang/et.umd.min.js +1 -1
- package/dist/lang/fa-ir.umd.min.js +1 -1
- package/dist/lang/fa.umd.min.js +1 -1
- package/dist/lang/fi.umd.min.js +1 -1
- package/dist/lang/fr.umd.min.js +1 -1
- package/dist/lang/gn.umd.min.js +1 -1
- package/dist/lang/he.umd.min.js +1 -1
- package/dist/lang/hr.umd.min.js +1 -1
- package/dist/lang/hu.umd.min.js +1 -1
- package/dist/lang/id.umd.min.js +1 -1
- package/dist/lang/is.umd.min.js +1 -1
- package/dist/lang/it.umd.min.js +1 -1
- package/dist/lang/ja.umd.min.js +1 -1
- package/dist/lang/km.umd.min.js +1 -1
- package/dist/lang/ko-kr.umd.min.js +1 -1
- package/dist/lang/kur-ckb.umd.min.js +1 -1
- package/dist/lang/lu.umd.min.js +1 -1
- package/dist/lang/lv.umd.min.js +1 -1
- package/dist/lang/ml.umd.min.js +1 -1
- package/dist/lang/ms.umd.min.js +1 -1
- package/dist/lang/nb-no.umd.min.js +1 -1
- package/dist/lang/nl.umd.min.js +1 -1
- package/dist/lang/pl.umd.min.js +1 -1
- package/dist/lang/pt-br.umd.min.js +1 -1
- package/dist/lang/pt.umd.min.js +1 -1
- package/dist/lang/ro.umd.min.js +1 -1
- package/dist/lang/ru.umd.min.js +1 -1
- package/dist/lang/sk.umd.min.js +1 -1
- package/dist/lang/sl.umd.min.js +1 -1
- package/dist/lang/sr.umd.min.js +2 -2
- package/dist/lang/sv.umd.min.js +1 -1
- package/dist/lang/ta.umd.min.js +1 -1
- package/dist/lang/th.umd.min.js +1 -1
- package/dist/lang/tr.umd.min.js +1 -1
- package/dist/lang/ug.umd.min.js +1 -1
- package/dist/lang/uk.umd.min.js +1 -1
- package/dist/lang/vi.umd.min.js +1 -1
- package/dist/lang/zh-hans.umd.min.js +1 -1
- package/dist/lang/zh-hant.umd.min.js +1 -1
- package/dist/quasar.addon.css +1 -1
- package/dist/quasar.addon.rtl.css +1 -1
- package/dist/quasar.common.js +2 -2
- package/dist/quasar.css +17 -17
- package/dist/quasar.esm.js +2 -2
- package/dist/quasar.ie.polyfills.js +1 -1
- package/dist/quasar.ie.polyfills.umd.min.js +1 -1
- package/dist/quasar.min.css +1 -1
- package/dist/quasar.rtl.css +26 -26
- package/dist/quasar.rtl.min.css +1 -1
- package/dist/quasar.sass +15 -12
- package/dist/quasar.styl +15 -14
- package/dist/quasar.umd.js +69 -20
- package/dist/quasar.umd.min.js +2 -2
- package/dist/quasar.umd.modern.js +67 -16
- package/dist/quasar.umd.modern.min.js +2 -2
- package/dist/types/extras/icon-set.d.ts +2 -0
- package/dist/web-types/web-types.json +1 -1
- package/icon-set/bootstrap-icons.js +1 -1
- package/icon-set/eva-icons.js +1 -1
- package/icon-set/ionicons-v4.js +1 -1
- package/icon-set/mdi-v6.js +141 -0
- package/icon-set/svg-bootstrap-icons.js +1 -1
- package/icon-set/svg-eva-icons.js +1 -1
- package/icon-set/svg-ionicons-v4.js +1 -1
- package/icon-set/svg-ionicons-v5.js +1 -1
- package/icon-set/svg-mdi-v5.js +1 -1
- package/icon-set/svg-mdi-v6.js +225 -0
- package/icon-set/svg-themify.js +1 -1
- package/icon-set/themify.js +1 -1
- package/lang/ar.js +1 -1
- package/lang/de.js +1 -1
- package/lang/index.json +1 -1
- package/lang/sr.js +4 -4
- package/package.json +2 -2
- package/src/components/chat/QChatMessage.js +2 -2
- package/src/components/checkbox/QCheckbox.sass +1 -0
- package/src/components/checkbox/QCheckbox.styl +1 -0
- package/src/components/expansion-item/QExpansionItem.js +1 -1
- package/src/components/fab/QFab.js +10 -2
- package/src/components/fab/QFab.sass +13 -12
- package/src/components/fab/QFab.styl +13 -12
- package/src/components/field/QField.js +1 -1
- package/src/components/input/QInput.js +5 -1
- package/src/components/popup-edit/QPopupEdit.js +1 -1
- package/src/components/radio/QRadio.sass +1 -0
- package/src/components/radio/QRadio.styl +1 -0
- package/src/components/select/QSelect.js +34 -4
- package/src/components/toggle/QToggle.sass +1 -0
- package/src/components/toggle/QToggle.styl +1 -0
- package/src/css/normalize.styl +0 -7
- package/src/mixins/mask.js +5 -1
- package/src/mixins/validate.js +5 -0
- package/src/utils/slot.js +1 -1
|
@@ -13,18 +13,6 @@
|
|
|
13
13
|
&--form-square
|
|
14
14
|
border-radius: $generic-border-radius
|
|
15
15
|
|
|
16
|
-
&--opened
|
|
17
|
-
.q-fab__actions
|
|
18
|
-
opacity: 1
|
|
19
|
-
transform: scale(1) translate(0, 0)
|
|
20
|
-
pointer-events: all
|
|
21
|
-
.q-fab__icon
|
|
22
|
-
transform: rotate(180deg)
|
|
23
|
-
opacity: 0
|
|
24
|
-
.q-fab__active-icon
|
|
25
|
-
transform: rotate(0deg)
|
|
26
|
-
opacity: 1
|
|
27
|
-
|
|
28
16
|
&__icon, &__active-icon
|
|
29
17
|
transition: opacity .4s, transform .4s
|
|
30
18
|
&__icon
|
|
@@ -91,6 +79,14 @@
|
|
|
91
79
|
min-height: 24px
|
|
92
80
|
position: relative
|
|
93
81
|
|
|
82
|
+
&--opened
|
|
83
|
+
.q-fab__icon
|
|
84
|
+
transform: rotate(180deg)
|
|
85
|
+
opacity: 0
|
|
86
|
+
.q-fab__active-icon
|
|
87
|
+
transform: rotate(0deg)
|
|
88
|
+
opacity: 1
|
|
89
|
+
|
|
94
90
|
&__actions
|
|
95
91
|
position: absolute
|
|
96
92
|
opacity: 0
|
|
@@ -139,6 +135,11 @@
|
|
|
139
135
|
left: 50%
|
|
140
136
|
margin-left: -28px
|
|
141
137
|
|
|
138
|
+
&--opened
|
|
139
|
+
opacity: 1
|
|
140
|
+
transform: scale(1) translate(0, 0)
|
|
141
|
+
pointer-events: all
|
|
142
|
+
|
|
142
143
|
&--align-left
|
|
143
144
|
> .q-fab__actions
|
|
144
145
|
&--up, &--down
|
|
@@ -394,7 +394,7 @@ export default Vue.extend({
|
|
|
394
394
|
|
|
395
395
|
if (this.hasError === true) {
|
|
396
396
|
if (this.computedErrorMessage !== void 0) {
|
|
397
|
-
msg = [ h('div', [ this.computedErrorMessage ]) ]
|
|
397
|
+
msg = [ h('div', { attrs: { role: 'alert' } }, [ this.computedErrorMessage ]) ]
|
|
398
398
|
key = this.computedErrorMessage
|
|
399
399
|
}
|
|
400
400
|
else {
|
|
@@ -97,6 +97,10 @@ export default Vue.extend({
|
|
|
97
97
|
return this.type === 'textarea' || this.autogrow === true
|
|
98
98
|
},
|
|
99
99
|
|
|
100
|
+
isTypeText () {
|
|
101
|
+
return this.isTextarea === true || ['text', 'search', 'url', 'tel', 'password'].includes(this.type)
|
|
102
|
+
},
|
|
103
|
+
|
|
100
104
|
fieldClass () {
|
|
101
105
|
return `q-${this.isTextarea === true ? 'textarea' : 'input'}` +
|
|
102
106
|
(this.autogrow === true ? ' q-textarea--autogrow' : '')
|
|
@@ -208,7 +212,7 @@ export default Vue.extend({
|
|
|
208
212
|
else {
|
|
209
213
|
this.__emitValue(val)
|
|
210
214
|
|
|
211
|
-
if (
|
|
215
|
+
if (this.isTypeText === true && e.target === document.activeElement) {
|
|
212
216
|
const { selectionStart, selectionEnd } = e.target
|
|
213
217
|
|
|
214
218
|
if (selectionStart !== void 0 && selectionEnd !== void 0) {
|
|
@@ -132,7 +132,7 @@ export default Vue.extend({
|
|
|
132
132
|
title = slot(this, 'title', this.title),
|
|
133
133
|
child = this.$scopedSlots.default === void 0
|
|
134
134
|
? []
|
|
135
|
-
: this.$scopedSlots.default(this.defaultSlotScope)
|
|
135
|
+
: [].concat(this.$scopedSlots.default(this.defaultSlotScope))
|
|
136
136
|
|
|
137
137
|
title && child.unshift(
|
|
138
138
|
h('div', { staticClass: 'q-dialog__title q-mt-sm q-mb-sm' }, [ title ])
|
|
@@ -284,8 +284,15 @@ export default Vue.extend({
|
|
|
284
284
|
dark: this.isOptionsDark
|
|
285
285
|
}
|
|
286
286
|
|
|
287
|
+
const itemAttrs = {
|
|
288
|
+
role: 'option',
|
|
289
|
+
id: `${this.targetUid}_${index}`
|
|
290
|
+
}
|
|
291
|
+
|
|
287
292
|
if (disable !== true) {
|
|
288
293
|
this.isOptionSelected(opt) === true && (itemProps.active = true)
|
|
294
|
+
itemAttrs['aria-selected'] = itemProps.active === true ? 'true' : 'false'
|
|
295
|
+
|
|
289
296
|
this.optionIndex === index && (itemProps.focused = true)
|
|
290
297
|
}
|
|
291
298
|
|
|
@@ -305,7 +312,8 @@ export default Vue.extend({
|
|
|
305
312
|
focused: itemProps.focused,
|
|
306
313
|
toggleOption: this.toggleOption,
|
|
307
314
|
setOptionIndex: this.setOptionIndex,
|
|
308
|
-
itemProps
|
|
315
|
+
itemProps,
|
|
316
|
+
itemAttrs
|
|
309
317
|
}
|
|
310
318
|
|
|
311
319
|
if (options[i] === void 0 || isDeepEqual(option, options[i]) !== true) {
|
|
@@ -388,6 +396,23 @@ export default Vue.extend({
|
|
|
388
396
|
return this.virtualScrollItemSize === void 0
|
|
389
397
|
? (this.dense === true ? 24 : 48)
|
|
390
398
|
: this.virtualScrollItemSize
|
|
399
|
+
},
|
|
400
|
+
|
|
401
|
+
comboboxAttrs () {
|
|
402
|
+
return {
|
|
403
|
+
role: 'combobox',
|
|
404
|
+
'aria-multiselectable': this.multiple === true ? 'true' : 'false',
|
|
405
|
+
'aria-expanded': this.menu === true ? 'true' : 'false',
|
|
406
|
+
'aria-owns': `${this.targetUid}_lb`,
|
|
407
|
+
'aria-activedescendant': `${this.targetUid}_${this.optionIndex}`
|
|
408
|
+
}
|
|
409
|
+
},
|
|
410
|
+
|
|
411
|
+
listboxAttrs () {
|
|
412
|
+
return {
|
|
413
|
+
role: 'listbox',
|
|
414
|
+
id: `${this.targetUid}_lb`
|
|
415
|
+
}
|
|
391
416
|
}
|
|
392
417
|
},
|
|
393
418
|
|
|
@@ -869,7 +894,7 @@ export default Vue.extend({
|
|
|
869
894
|
}
|
|
870
895
|
|
|
871
896
|
if (this.$scopedSlots.selected !== void 0) {
|
|
872
|
-
return this.$scopedSlots.selected()
|
|
897
|
+
return [].concat(this.$scopedSlots.selected())
|
|
873
898
|
}
|
|
874
899
|
|
|
875
900
|
if (this.useChips === true) {
|
|
@@ -921,7 +946,8 @@ export default Vue.extend({
|
|
|
921
946
|
staticClass: 'no-outline',
|
|
922
947
|
attrs: {
|
|
923
948
|
id: this.targetUid,
|
|
924
|
-
tabindex: this.tabindex
|
|
949
|
+
tabindex: this.tabindex,
|
|
950
|
+
...this.comboboxAttrs
|
|
925
951
|
},
|
|
926
952
|
on: cache(this, 'f-tget', {
|
|
927
953
|
keydown: this.__onTargetKeydown,
|
|
@@ -981,6 +1007,7 @@ export default Vue.extend({
|
|
|
981
1007
|
: scope => h(QItem, {
|
|
982
1008
|
key: scope.index,
|
|
983
1009
|
props: scope.itemProps,
|
|
1010
|
+
attrs: scope.itemAttrs,
|
|
984
1011
|
on: scope.itemEvents
|
|
985
1012
|
}, [
|
|
986
1013
|
h(QItemSection, [
|
|
@@ -1038,7 +1065,8 @@ export default Vue.extend({
|
|
|
1038
1065
|
autocomplete: this.autocomplete,
|
|
1039
1066
|
'data-autofocus': fromDialog === true ? false : this.autofocus,
|
|
1040
1067
|
disabled: this.disable === true,
|
|
1041
|
-
readonly: this.readonly === true
|
|
1068
|
+
readonly: this.readonly === true,
|
|
1069
|
+
...this.comboboxAttrs
|
|
1042
1070
|
},
|
|
1043
1071
|
on: this.inputControlEvents
|
|
1044
1072
|
}
|
|
@@ -1249,6 +1277,7 @@ export default Vue.extend({
|
|
|
1249
1277
|
transitionHide: this.transitionHide,
|
|
1250
1278
|
separateClosePopup: true
|
|
1251
1279
|
},
|
|
1280
|
+
attrs: this.listboxAttrs,
|
|
1252
1281
|
on: cache(this, 'menu', {
|
|
1253
1282
|
'&scroll': this.__onVirtualScrollEvt,
|
|
1254
1283
|
'before-hide': this.__closeMenu,
|
|
@@ -1309,6 +1338,7 @@ export default Vue.extend({
|
|
|
1309
1338
|
staticClass: 'scroll',
|
|
1310
1339
|
class: this.menuContentClass,
|
|
1311
1340
|
style: this.popupContentStyle,
|
|
1341
|
+
attrs: this.listboxAttrs,
|
|
1312
1342
|
on: cache(this, 'virtMenu', {
|
|
1313
1343
|
click: prevent,
|
|
1314
1344
|
'&scroll': this.__onVirtualScrollEvt
|
package/src/css/normalize.styl
CHANGED
|
@@ -160,13 +160,6 @@ progress
|
|
|
160
160
|
textarea
|
|
161
161
|
overflow: auto
|
|
162
162
|
|
|
163
|
-
/*
|
|
164
|
-
* Correct the odd appearance of search inputs in Chrome and Safari.
|
|
165
|
-
*/
|
|
166
|
-
|
|
167
|
-
input[type='search']
|
|
168
|
-
-webkit-appearance: textfield
|
|
169
|
-
|
|
170
163
|
/*
|
|
171
164
|
* Remove the inner padding and cancel buttons in Chrome on OS X and
|
|
172
165
|
* Safari on OS X.
|
package/src/mixins/mask.js
CHANGED
|
@@ -47,6 +47,10 @@ export default {
|
|
|
47
47
|
this.__updateMaskInternals()
|
|
48
48
|
},
|
|
49
49
|
|
|
50
|
+
autogrow () {
|
|
51
|
+
this.__updateMaskInternals()
|
|
52
|
+
},
|
|
53
|
+
|
|
50
54
|
mask (v) {
|
|
51
55
|
if (v !== void 0) {
|
|
52
56
|
this.__updateMaskValue(this.innerValue, true)
|
|
@@ -111,7 +115,7 @@ export default {
|
|
|
111
115
|
__updateMaskInternals () {
|
|
112
116
|
this.hasMask = this.mask !== void 0 &&
|
|
113
117
|
this.mask.length > 0 &&
|
|
114
|
-
['text', 'search', 'url', 'tel', 'password'].includes(this.type)
|
|
118
|
+
(this.autogrow === true || ['textarea', 'text', 'search', 'url', 'tel', 'password'].includes(this.type))
|
|
115
119
|
|
|
116
120
|
if (this.hasMask === false) {
|
|
117
121
|
this.computedUnmask = void 0
|
package/src/mixins/validate.js
CHANGED
package/src/utils/slot.js
CHANGED