quasar 1.18.10 → 1.19.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.
- 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/fontawesome-v6-pro.umd.min.js +1 -1
- package/dist/icon-set/fontawesome-v6.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/material-symbols-outlined.umd.min.js +6 -0
- package/dist/icon-set/material-symbols-rounded.umd.min.js +6 -0
- package/dist/icon-set/material-symbols-sharp.umd.min.js +6 -0
- 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 +1 -1
- 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-fontawesome-v6.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-ionicons-v6.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 +1 -1
- package/dist/icon-set/svg-material-icons-round.umd.min.js +1 -1
- package/dist/icon-set/svg-material-icons-sharp.umd.min.js +1 -1
- package/dist/icon-set/svg-material-icons.umd.min.js +1 -1
- package/dist/icon-set/svg-material-symbols-outlined.umd.min.js +6 -0
- package/dist/icon-set/svg-material-symbols-rounded.umd.min.js +6 -0
- package/dist/icon-set/svg-material-symbols-sharp.umd.min.js +6 -0
- 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 +1 -1
- 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 +1 -1
- 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 +2 -2
- 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 +1 -1
- 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/eu.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 +2 -2
- package/dist/lang/kur-ckb.umd.min.js +1 -1
- package/dist/lang/kz.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/mm.umd.min.js +6 -0
- package/dist/lang/ms.umd.min.js +1 -1
- package/dist/lang/my.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/sm.umd.min.js +6 -0
- package/dist/lang/sr.umd.min.js +1 -1
- 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 +12 -6
- 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 +12 -6
- package/dist/quasar.rtl.min.css +1 -1
- package/dist/quasar.sass +11 -5
- package/dist/quasar.styl +11 -5
- package/dist/quasar.umd.js +124 -104
- package/dist/quasar.umd.min.js +2 -2
- package/dist/quasar.umd.modern.js +119 -100
- package/dist/quasar.umd.modern.min.js +2 -2
- package/dist/types/extras/icon-set.d.ts +6 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/web-types/web-types.json +1 -1
- package/icon-set/material-symbols-outlined.js +128 -0
- package/icon-set/material-symbols-rounded.js +128 -0
- package/icon-set/material-symbols-sharp.js +128 -0
- package/icon-set/svg-material-symbols-outlined.js +202 -0
- package/icon-set/svg-material-symbols-rounded.js +202 -0
- package/icon-set/svg-material-symbols-sharp.js +202 -0
- package/lang/ca.js +31 -31
- package/lang/index.json +8 -0
- package/lang/ko-kr.js +21 -21
- package/lang/mm.js +93 -0
- package/lang/sm.js +93 -0
- package/package.json +1 -1
- package/src/components/btn/QBtn.js +2 -2
- package/src/components/editor/QEditor.js +12 -30
- package/src/components/editor/editor-caret.js +1 -1
- package/src/components/field/QField.js +3 -2
- package/src/components/file/QFile.js +4 -2
- package/src/components/icon/QIcon.js +24 -1
- package/src/components/icon/QIcon.sass +7 -3
- package/src/components/icon/QIcon.styl +7 -3
- package/src/components/infinite-scroll/QInfiniteScroll.js +10 -10
- package/src/components/input/QInput.js +5 -2
- package/src/components/layout/QLayout.js +1 -0
- package/src/components/select/QSelect.js +11 -6
- package/src/components/table/QTable.sass +1 -1
- package/src/components/table/QTable.styl +1 -1
- package/src/components/uploader/QUploaderBase.js +24 -19
- package/src/css/core/colors.sass +1 -0
- package/src/css/core/colors.styl +1 -0
- package/src/css/core/dark.sass +1 -0
- package/src/css/core/dark.styl +1 -0
- package/src/directives/Ripple.js +2 -7
- package/src/mixins/anchor.js +1 -1
- package/src/mixins/composition.js +16 -13
- package/src/mixins/virtual-scroll.js +3 -2
- package/src/utils/date.js +1 -1
package/lang/sm.js
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
isoName: 'sm',
|
|
3
|
+
nativeName: 'Fa\'asāmoa',
|
|
4
|
+
label: {
|
|
5
|
+
clear: 'Kilia',
|
|
6
|
+
ok: '\'Oukei',
|
|
7
|
+
cancel: 'Fa\'alēaogāina',
|
|
8
|
+
close: 'Tapuni',
|
|
9
|
+
set: 'Seti',
|
|
10
|
+
select: 'Filifili',
|
|
11
|
+
reset: 'Toe seti',
|
|
12
|
+
remove: '\'Ave\'ese',
|
|
13
|
+
update: 'Fa\'afou',
|
|
14
|
+
create: 'Fatu',
|
|
15
|
+
search: 'Sā\'ili',
|
|
16
|
+
filter: 'Fa\'amamā',
|
|
17
|
+
refresh: 'Fa\'afou'
|
|
18
|
+
},
|
|
19
|
+
date: {
|
|
20
|
+
days: 'Aso Sā_Aso Gafua_Aso Lua_Aso Lulu_Aso Tofi_Aso Faraile_Aso To\'onai'.split('_'),
|
|
21
|
+
daysShort: 'Sā_Gaf_Lua_Lul_Tof_Far_Too'.split('_'),
|
|
22
|
+
months: 'Ianuari_Fepuari_Mati_\'Aperila_Mē_Iuni_Iulai_\'Aokuso_Sētema_\'Oketopa_Nōvema_Tēsema'.split('_'),
|
|
23
|
+
monthsShort: 'Ian_Fep_Mat_Ape_Mē_Iun_Iul_Auk_Sēt_Oke_Nōv_Tēs'.split('_'),
|
|
24
|
+
firstDayOfWeek: 1, // 0-6, 0 - Sunday, 1 Monday, ...
|
|
25
|
+
format24h: false,
|
|
26
|
+
pluralDay: 'aso'
|
|
27
|
+
},
|
|
28
|
+
table: {
|
|
29
|
+
noData: 'Lēai ni fa\'amatalaga o maua',
|
|
30
|
+
noResults: 'Lēai ni fa\'amaumauga na maua',
|
|
31
|
+
loading: '\'Āmatalia...',
|
|
32
|
+
selectedRecords: function (rows) {
|
|
33
|
+
return rows === 1
|
|
34
|
+
? '1 le laina \'ua filifilia.'
|
|
35
|
+
: (rows === 0 ? 'Lēai ni' : rows) + ' laina \'ua filifilia.'
|
|
36
|
+
},
|
|
37
|
+
recordsPerPage: 'Laina \'i le ītūlau:',
|
|
38
|
+
allRows: 'Laina \'uma',
|
|
39
|
+
pagination: function (start, end, total) {
|
|
40
|
+
return start + '-' + end + ' o ' + total
|
|
41
|
+
},
|
|
42
|
+
columns: 'Poutū'
|
|
43
|
+
},
|
|
44
|
+
editor: {
|
|
45
|
+
url: 'Tuātusi initaneti',
|
|
46
|
+
bold: 'Fa\'aolaola',
|
|
47
|
+
italic: 'Fa\'api\'o',
|
|
48
|
+
strikethrough: 'Kolosi',
|
|
49
|
+
underline: 'Vase lalo',
|
|
50
|
+
unorderedList: 'Lisi \'e fe\'i fa\'atulagaina',
|
|
51
|
+
orderedList: 'Lisi \'ua fa\'atulagaina',
|
|
52
|
+
subscript: 'Fa\'anini\'i i lalo',
|
|
53
|
+
superscript: 'Fa\'anini\'i i luga',
|
|
54
|
+
hyperlink: 'So\'otaga initaneti',
|
|
55
|
+
toggleFullscreen: 'Fa\'atelē ma fa\'alititi le va\'ai',
|
|
56
|
+
quote: 'Saunoaga',
|
|
57
|
+
left: 'Ōgatasi agavale',
|
|
58
|
+
center: 'Ōgatasi \'ogātotonu',
|
|
59
|
+
right: 'Ōgatasi taumatau',
|
|
60
|
+
justify: 'Ōgatasi lautele',
|
|
61
|
+
print: 'Lolomi',
|
|
62
|
+
outdent: 'Fa\'alaititi le va',
|
|
63
|
+
indent: 'Fa\'atelē le va',
|
|
64
|
+
removeFormat: '\'Ave\'ese le fa\'atulagaga',
|
|
65
|
+
formatting: 'Fa\'atulagaga',
|
|
66
|
+
fontSize: 'Telē o le mata\'itusi',
|
|
67
|
+
align: 'Ōgatasi',
|
|
68
|
+
hr: 'Fa\'aopoopo se laina',
|
|
69
|
+
undo: 'Toe \'ave\'ese',
|
|
70
|
+
redo: 'Toe fai',
|
|
71
|
+
heading1: 'Ulutala 1',
|
|
72
|
+
heading2: 'Ulutala 2',
|
|
73
|
+
heading3: 'Ulutala 3',
|
|
74
|
+
heading4: 'Ulutala 4',
|
|
75
|
+
heading5: 'Ulutala 5',
|
|
76
|
+
heading6: 'Ulutala 6',
|
|
77
|
+
paragraph: 'Palakalafa',
|
|
78
|
+
code: 'Fa\'ailo fa\'akomepiuta',
|
|
79
|
+
size1: 'Matuā laitiiti',
|
|
80
|
+
size2: 'Fa\'alaititi',
|
|
81
|
+
size3: 'Tūlaga masani',
|
|
82
|
+
size4: 'Lāpo\'a feololo',
|
|
83
|
+
size5: 'Lāpo\'a',
|
|
84
|
+
size6: 'Lāpo\'a atu',
|
|
85
|
+
size7: 'Pito i lāpo\'a',
|
|
86
|
+
defaultFont: 'Foliga fou ole mata\'itusi',
|
|
87
|
+
viewSource: 'Va\'ai \'ile tusitusiga fa\'akomepiuta'
|
|
88
|
+
},
|
|
89
|
+
tree: {
|
|
90
|
+
noNodes: 'Lēai ni vāega o maua',
|
|
91
|
+
noResults: 'Lēai ni vāega na maua'
|
|
92
|
+
}
|
|
93
|
+
}
|
package/package.json
CHANGED
|
@@ -320,11 +320,11 @@ export default Vue.extend({
|
|
|
320
320
|
if (this.loading === true && this.percentage !== void 0) {
|
|
321
321
|
child.push(
|
|
322
322
|
h('span', {
|
|
323
|
-
staticClass: 'q-btn__progress absolute-full overflow-hidden'
|
|
323
|
+
staticClass: 'q-btn__progress absolute-full overflow-hidden',
|
|
324
|
+
class: this.darkPercentage === true ? 'q-btn__progress--dark' : ''
|
|
324
325
|
}, [
|
|
325
326
|
h('span', {
|
|
326
327
|
staticClass: 'q-btn__progress-indicator fit block',
|
|
327
|
-
class: this.darkPercentage === true ? 'q-btn__progress--dark' : '',
|
|
328
328
|
style: this.percentageStyle
|
|
329
329
|
})
|
|
330
330
|
])
|
|
@@ -379,33 +379,14 @@ export default Vue.extend({
|
|
|
379
379
|
}
|
|
380
380
|
},
|
|
381
381
|
|
|
382
|
-
|
|
382
|
+
// mousedown, touchstart
|
|
383
|
+
__onPointerStart (e) {
|
|
383
384
|
this.__offsetBottom = void 0
|
|
385
|
+
this.qListeners[e.type] !== void 0 && this.$emit(e.type, e)
|
|
384
386
|
},
|
|
385
387
|
|
|
386
|
-
|
|
388
|
+
__onSelectionchange () {
|
|
387
389
|
this.caret.save()
|
|
388
|
-
if (this.qListeners.mouseup !== void 0) {
|
|
389
|
-
this.$emit('mouseup', e)
|
|
390
|
-
}
|
|
391
|
-
},
|
|
392
|
-
|
|
393
|
-
__onKeyup (e) {
|
|
394
|
-
this.caret.save()
|
|
395
|
-
if (this.qListeners.keyup !== void 0) {
|
|
396
|
-
this.$emit('keyup', e)
|
|
397
|
-
}
|
|
398
|
-
},
|
|
399
|
-
|
|
400
|
-
__onTouchstart () {
|
|
401
|
-
this.__offsetBottom = void 0
|
|
402
|
-
},
|
|
403
|
-
|
|
404
|
-
__onTouchend (e) {
|
|
405
|
-
this.caret.save()
|
|
406
|
-
if (this.qListeners.touchend !== void 0) {
|
|
407
|
-
this.$emit('touchend', e)
|
|
408
|
-
}
|
|
409
390
|
},
|
|
410
391
|
|
|
411
392
|
runCmd (cmd, param, update = true) {
|
|
@@ -468,6 +449,12 @@ export default Vue.extend({
|
|
|
468
449
|
this.caret = new Caret(this.$refs.content, this)
|
|
469
450
|
this.__setContent(this.value)
|
|
470
451
|
this.refreshToolbar()
|
|
452
|
+
|
|
453
|
+
document.addEventListener('selectionchange', this.__onSelectionchange)
|
|
454
|
+
},
|
|
455
|
+
|
|
456
|
+
beforeDestroy () {
|
|
457
|
+
document.removeEventListener('selectionchange', this.__onSelectionchange)
|
|
471
458
|
},
|
|
472
459
|
|
|
473
460
|
render (h) {
|
|
@@ -505,13 +492,8 @@ export default Vue.extend({
|
|
|
505
492
|
focus: this.__onFocus,
|
|
506
493
|
|
|
507
494
|
// clean saved scroll position
|
|
508
|
-
mousedown: this.
|
|
509
|
-
touchstart: this.
|
|
510
|
-
|
|
511
|
-
// save caret
|
|
512
|
-
mouseup: this.__onMouseup,
|
|
513
|
-
keyup: this.__onKeyup,
|
|
514
|
-
touchend: this.__onTouchend
|
|
495
|
+
mousedown: this.__onPointerStart,
|
|
496
|
+
touchstart: this.__onPointerStart
|
|
515
497
|
}
|
|
516
498
|
|
|
517
499
|
return h('div', {
|
|
@@ -365,8 +365,9 @@ export default Vue.extend({
|
|
|
365
365
|
ref: 'target',
|
|
366
366
|
staticClass: 'q-field__native row',
|
|
367
367
|
attrs: {
|
|
368
|
+
tabindex: -1,
|
|
368
369
|
...this.qAttrs,
|
|
369
|
-
'data-autofocus': this.autofocus
|
|
370
|
+
'data-autofocus': this.autofocus || void 0
|
|
370
371
|
}
|
|
371
372
|
}, this.$scopedSlots.control(this.controlSlotScope))
|
|
372
373
|
)
|
|
@@ -542,7 +543,7 @@ export default Vue.extend({
|
|
|
542
543
|
const attrs = this.__getControl === void 0 && this.$scopedSlots.control === void 0
|
|
543
544
|
? {
|
|
544
545
|
...this.qAttrs,
|
|
545
|
-
'data-autofocus': this.autofocus,
|
|
546
|
+
'data-autofocus': this.autofocus || void 0,
|
|
546
547
|
...this.attrs
|
|
547
548
|
}
|
|
548
549
|
: this.attrs
|
|
@@ -95,6 +95,10 @@ export default Vue.extend({
|
|
|
95
95
|
|
|
96
96
|
isAppending () {
|
|
97
97
|
return this.multiple === true && this.append === true
|
|
98
|
+
},
|
|
99
|
+
|
|
100
|
+
fieldClass () {
|
|
101
|
+
return 'q-file q-field--auto-height' + (this.dnd === true ? ' q-file--dnd' : '')
|
|
98
102
|
}
|
|
99
103
|
},
|
|
100
104
|
|
|
@@ -261,8 +265,6 @@ export default Vue.extend({
|
|
|
261
265
|
},
|
|
262
266
|
|
|
263
267
|
created () {
|
|
264
|
-
this.fieldClass = 'q-file q-field--auto-height'
|
|
265
|
-
|
|
266
268
|
// necessary for QField's clearable
|
|
267
269
|
// and FileValueMixin
|
|
268
270
|
this.type = 'file'
|
|
@@ -30,8 +30,15 @@ const matMap = {
|
|
|
30
30
|
s_: '-sharp'
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
+
const symMap = {
|
|
34
|
+
sym_o_: '-outlined',
|
|
35
|
+
sym_r_: '-rounded',
|
|
36
|
+
sym_s_: '-sharp'
|
|
37
|
+
}
|
|
38
|
+
|
|
33
39
|
const libRE = new RegExp('^(' + Object.keys(libMap).join('|') + ')')
|
|
34
40
|
const matRE = new RegExp('^(' + Object.keys(matMap).join('|') + ')')
|
|
41
|
+
const symRE = new RegExp('^(' + Object.keys(symMap).join('|') + ')')
|
|
35
42
|
const mRE = /^[Mm]\s?[-+]?\.?\d/
|
|
36
43
|
const imgRE = /^img:/
|
|
37
44
|
const svgUseRE = /^svguse:/
|
|
@@ -136,6 +143,22 @@ export default Vue.extend({
|
|
|
136
143
|
else if (ionRE.test(icon) === true) {
|
|
137
144
|
cls = `ionicons ion-${this.$q.platform.is.ios === true ? 'ios' : 'md'}${icon.substr(3)}`
|
|
138
145
|
}
|
|
146
|
+
else if (symRE.test(icon) === true) {
|
|
147
|
+
// "notranslate" class is for Google Translate
|
|
148
|
+
// to avoid tampering with Material Symbols ligature font
|
|
149
|
+
//
|
|
150
|
+
// Caution: To be able to add suffix to the class name,
|
|
151
|
+
// keep the 'material-symbols' at the end of the string.
|
|
152
|
+
cls = 'notranslate material-symbols'
|
|
153
|
+
|
|
154
|
+
const matches = icon.match(symRE)
|
|
155
|
+
if (matches !== null) {
|
|
156
|
+
icon = icon.substring(6)
|
|
157
|
+
cls += symMap[ matches[ 1 ] ]
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
content = icon
|
|
161
|
+
}
|
|
139
162
|
else {
|
|
140
163
|
// "notranslate" class is for Google Translate
|
|
141
164
|
// to avoid tampering with Material Icons ligature font
|
|
@@ -187,7 +210,7 @@ export default Vue.extend({
|
|
|
187
210
|
return h('span', data, mergeSlot([
|
|
188
211
|
h('svg', {
|
|
189
212
|
attrs: {
|
|
190
|
-
viewBox: this.type.viewBox,
|
|
213
|
+
viewBox: this.type.viewBox || '0 0 24 24',
|
|
191
214
|
focusable: 'false' /* needed for IE11 */
|
|
192
215
|
}
|
|
193
216
|
}, this.type.nodes)
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
line-height: 1
|
|
3
3
|
width: 1em
|
|
4
4
|
height: 1em
|
|
5
|
+
flex-shrink: 0
|
|
5
6
|
letter-spacing: normal
|
|
6
7
|
text-transform: none
|
|
7
8
|
white-space: nowrap
|
|
@@ -21,14 +22,17 @@
|
|
|
21
22
|
|
|
22
23
|
> svg,
|
|
23
24
|
> img
|
|
24
|
-
width:
|
|
25
|
-
height:
|
|
25
|
+
width: 100%
|
|
26
|
+
height: 100%
|
|
26
27
|
|
|
27
28
|
.q-icon,
|
|
28
29
|
.material-icons,
|
|
29
30
|
.material-icons-outlined,
|
|
30
31
|
.material-icons-round,
|
|
31
|
-
.material-icons-sharp
|
|
32
|
+
.material-icons-sharp,
|
|
33
|
+
.material-symbols-outlined,
|
|
34
|
+
.material-symbols-rounded,
|
|
35
|
+
.material-symbols-sharp
|
|
32
36
|
user-select: none
|
|
33
37
|
cursor: inherit
|
|
34
38
|
font-size: inherit
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
line-height: 1
|
|
3
3
|
width: 1em
|
|
4
4
|
height: 1em
|
|
5
|
+
flex-shrink: 0
|
|
5
6
|
letter-spacing: normal
|
|
6
7
|
text-transform: none
|
|
7
8
|
white-space: nowrap
|
|
@@ -21,14 +22,17 @@
|
|
|
21
22
|
|
|
22
23
|
> svg,
|
|
23
24
|
> img
|
|
24
|
-
width:
|
|
25
|
-
height:
|
|
25
|
+
width: 100%
|
|
26
|
+
height: 100%
|
|
26
27
|
|
|
27
28
|
.q-icon,
|
|
28
29
|
.material-icons,
|
|
29
30
|
.material-icons-outlined,
|
|
30
31
|
.material-icons-round,
|
|
31
|
-
.material-icons-sharp
|
|
32
|
+
.material-icons-sharp,
|
|
33
|
+
.material-symbols-outlined,
|
|
34
|
+
.material-symbols-rounded,
|
|
35
|
+
.material-symbols-sharp
|
|
32
36
|
user-select: none
|
|
33
37
|
cursor: inherit
|
|
34
38
|
font-size: inherit
|
|
@@ -150,6 +150,16 @@ export default Vue.extend({
|
|
|
150
150
|
|
|
151
151
|
if (this.isWorking === true) {
|
|
152
152
|
this.__scrollTarget.addEventListener('scroll', this.poll, passive)
|
|
153
|
+
|
|
154
|
+
if (this.reverse === true) {
|
|
155
|
+
const
|
|
156
|
+
scrollHeight = getScrollHeight(this.__scrollTarget),
|
|
157
|
+
containerHeight = height(this.__scrollTarget)
|
|
158
|
+
|
|
159
|
+
setScrollPosition(this.__scrollTarget, scrollHeight - containerHeight)
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
this.immediatePoll()
|
|
153
163
|
}
|
|
154
164
|
},
|
|
155
165
|
|
|
@@ -181,16 +191,6 @@ export default Vue.extend({
|
|
|
181
191
|
this.__setDebounce(this.debounce)
|
|
182
192
|
|
|
183
193
|
this.updateScrollTarget()
|
|
184
|
-
|
|
185
|
-
if (this.reverse === true) {
|
|
186
|
-
const
|
|
187
|
-
scrollHeight = getScrollHeight(this.__scrollTarget),
|
|
188
|
-
containerHeight = height(this.__scrollTarget)
|
|
189
|
-
|
|
190
|
-
setScrollPosition(this.__scrollTarget, scrollHeight - containerHeight)
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
this.immediatePoll()
|
|
194
194
|
},
|
|
195
195
|
|
|
196
196
|
activated () {
|
|
@@ -154,7 +154,7 @@ export default Vue.extend({
|
|
|
154
154
|
inputAttrs () {
|
|
155
155
|
const attrs = {
|
|
156
156
|
tabindex: 0,
|
|
157
|
-
'data-autofocus': this.autofocus,
|
|
157
|
+
'data-autofocus': this.autofocus || void 0,
|
|
158
158
|
rows: this.type === 'textarea' ? 6 : void 0,
|
|
159
159
|
'aria-label': this.label,
|
|
160
160
|
name: this.nameProp,
|
|
@@ -207,7 +207,7 @@ export default Vue.extend({
|
|
|
207
207
|
},
|
|
208
208
|
|
|
209
209
|
__onInput (e) {
|
|
210
|
-
if (!e || !e.target || e.target.
|
|
210
|
+
if (!e || !e.target || e.target.qComposing === true) {
|
|
211
211
|
return
|
|
212
212
|
}
|
|
213
213
|
|
|
@@ -285,13 +285,16 @@ export default Vue.extend({
|
|
|
285
285
|
const inp = this.$refs.input
|
|
286
286
|
if (inp !== void 0) {
|
|
287
287
|
const parentStyle = inp.parentNode.style
|
|
288
|
+
const { overflow } = inp.style
|
|
288
289
|
|
|
289
290
|
// reset height of textarea to a small size to detect the real height
|
|
290
291
|
// but keep the total control size the same
|
|
291
292
|
parentStyle.marginBottom = (inp.scrollHeight - 1) + 'px'
|
|
292
293
|
inp.style.height = '1px'
|
|
294
|
+
inp.style.overflow = 'hidden'
|
|
293
295
|
|
|
294
296
|
inp.style.height = inp.scrollHeight + 'px'
|
|
297
|
+
inp.style.overflow = overflow
|
|
295
298
|
parentStyle.marginBottom = ''
|
|
296
299
|
}
|
|
297
300
|
},
|
|
@@ -164,13 +164,18 @@ export default Vue.extend({
|
|
|
164
164
|
this.__updateMenu(show)
|
|
165
165
|
},
|
|
166
166
|
|
|
167
|
-
virtualScrollLength () {
|
|
167
|
+
virtualScrollLength (newLength, oldLength) {
|
|
168
168
|
if (this.menu === true && this.innerLoading === false) {
|
|
169
|
-
this.
|
|
169
|
+
this.__resetVirtualScroll(-1, true)
|
|
170
170
|
|
|
171
171
|
this.$nextTick(() => {
|
|
172
172
|
if (this.menu === true && this.innerLoading === false) {
|
|
173
|
-
|
|
173
|
+
if (newLength > oldLength) {
|
|
174
|
+
this.__resetVirtualScroll()
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
this.__updateMenu(true)
|
|
178
|
+
}
|
|
174
179
|
}
|
|
175
180
|
})
|
|
176
181
|
}
|
|
@@ -408,7 +413,7 @@ export default Vue.extend({
|
|
|
408
413
|
|
|
409
414
|
virtualScrollItemSizeComputed () {
|
|
410
415
|
return this.virtualScrollItemSize === void 0
|
|
411
|
-
? (this.
|
|
416
|
+
? (this.optionsDense === true ? 24 : 48)
|
|
412
417
|
: this.virtualScrollItemSize
|
|
413
418
|
},
|
|
414
419
|
|
|
@@ -1088,7 +1093,7 @@ export default Vue.extend({
|
|
|
1088
1093
|
maxlength: this.maxlength, // this is converted to prop by QField
|
|
1089
1094
|
tabindex: this.tabindex,
|
|
1090
1095
|
autocomplete: this.autocomplete,
|
|
1091
|
-
'data-autofocus': fromDialog
|
|
1096
|
+
'data-autofocus': (fromDialog !== true && this.autofocus) || void 0,
|
|
1092
1097
|
disabled: this.disable === true,
|
|
1093
1098
|
readonly: this.readonly === true
|
|
1094
1099
|
},
|
|
@@ -1109,7 +1114,7 @@ export default Vue.extend({
|
|
|
1109
1114
|
__onInput (e) {
|
|
1110
1115
|
clearTimeout(this.inputTimer)
|
|
1111
1116
|
|
|
1112
|
-
if (e && e.target && e.target.
|
|
1117
|
+
if (e && e.target && e.target.qComposing === true) {
|
|
1113
1118
|
return
|
|
1114
1119
|
}
|
|
1115
1120
|
|
|
@@ -186,7 +186,7 @@
|
|
|
186
186
|
* Separators
|
|
187
187
|
*/
|
|
188
188
|
.q-table--horizontal-separator, .q-table--cell-separator
|
|
189
|
-
thead th, tbody tr:not(:last-child) td
|
|
189
|
+
thead th, tbody tr:not(:last-child) > td
|
|
190
190
|
border-bottom-width: 1px
|
|
191
191
|
|
|
192
192
|
.q-table--vertical-separator, .q-table--cell-separator
|
|
@@ -186,7 +186,7 @@
|
|
|
186
186
|
* Separators
|
|
187
187
|
*/
|
|
188
188
|
.q-table--horizontal-separator, .q-table--cell-separator
|
|
189
|
-
thead th, tbody tr:not(:last-child) td
|
|
189
|
+
thead th, tbody tr:not(:last-child) > td
|
|
190
190
|
border-bottom-width: 1px
|
|
191
191
|
|
|
192
192
|
.q-table--vertical-separator, .q-table--cell-separator
|
|
@@ -316,28 +316,32 @@ export default Vue.extend({
|
|
|
316
316
|
|
|
317
317
|
return [
|
|
318
318
|
h('div', {
|
|
319
|
-
staticClass: 'q-uploader__header-content
|
|
319
|
+
staticClass: 'q-uploader__header-content column'
|
|
320
320
|
}, [
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
this.label !== void 0
|
|
330
|
-
? h('div', { staticClass: 'q-uploader__title' }, [ this.label ])
|
|
321
|
+
h('div', {
|
|
322
|
+
staticClass: 'flex flex-center no-wrap q-gutter-xs'
|
|
323
|
+
}, [
|
|
324
|
+
this.__getBtn(h, this.queuedFiles.length > 0, 'removeQueue', this.removeQueuedFiles),
|
|
325
|
+
this.__getBtn(h, this.uploadedFiles.length > 0, 'removeUploaded', this.removeUploadedFiles),
|
|
326
|
+
|
|
327
|
+
this.isUploading === true
|
|
328
|
+
? h(QSpinner, { staticClass: 'q-uploader__spinner' })
|
|
331
329
|
: null,
|
|
332
330
|
|
|
333
|
-
h('div', { staticClass: '
|
|
334
|
-
this.
|
|
335
|
-
|
|
336
|
-
|
|
331
|
+
h('div', { staticClass: 'col column justify-center' }, [
|
|
332
|
+
this.label !== void 0
|
|
333
|
+
? h('div', { staticClass: 'q-uploader__title' }, [ this.label ])
|
|
334
|
+
: null,
|
|
335
|
+
|
|
336
|
+
h('div', { staticClass: 'q-uploader__subtitle' }, [
|
|
337
|
+
this.uploadSizeLabel + ' / ' + this.uploadProgressLabel
|
|
338
|
+
])
|
|
339
|
+
]),
|
|
337
340
|
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
+
this.__getBtn(h, this.canAddFiles, 'add', this.pickFiles),
|
|
342
|
+
this.__getBtn(h, this.hideUploadBtn === false && this.canUpload === true, 'upload', this.upload),
|
|
343
|
+
this.__getBtn(h, this.isUploading, 'clear', this.abort)
|
|
344
|
+
])
|
|
341
345
|
])
|
|
342
346
|
]
|
|
343
347
|
},
|
|
@@ -438,7 +442,8 @@ export default Vue.extend({
|
|
|
438
442
|
'q-uploader--bordered': this.bordered,
|
|
439
443
|
'q-uploader--square no-border-radius': this.square,
|
|
440
444
|
'q-uploader--flat no-shadow': this.flat,
|
|
441
|
-
'disabled q-uploader--disable': this.disable
|
|
445
|
+
'disabled q-uploader--disable': this.disable,
|
|
446
|
+
'q-uploader--dnd': this.dnd
|
|
442
447
|
},
|
|
443
448
|
on: this.canAddFiles === true
|
|
444
449
|
? cache(this, 'drag', {
|
package/src/css/core/colors.sass
CHANGED
package/src/css/core/colors.styl
CHANGED
package/src/css/core/dark.sass
CHANGED
package/src/css/core/dark.styl
CHANGED
package/src/directives/Ripple.js
CHANGED
|
@@ -101,11 +101,7 @@ export default {
|
|
|
101
101
|
evt.qSkipRipple !== true &&
|
|
102
102
|
// on ENTER in form IE emits a PointerEvent with negative client cordinates
|
|
103
103
|
(client.is.ie !== true || evt.clientX >= 0) &&
|
|
104
|
-
(
|
|
105
|
-
ctx.modifiers.early === true
|
|
106
|
-
? ['mousedown', 'touchstart'].includes(evt.type) === true
|
|
107
|
-
: evt.type === 'click'
|
|
108
|
-
)
|
|
104
|
+
evt.type === (ctx.modifiers.early === true ? 'pointerdown' : 'click')
|
|
109
105
|
) {
|
|
110
106
|
showRipple(evt, el, ctx, evt.qKeyEvent === true)
|
|
111
107
|
}
|
|
@@ -128,8 +124,7 @@ export default {
|
|
|
128
124
|
el.__qripple = ctx
|
|
129
125
|
|
|
130
126
|
addEvt(ctx, 'main', [
|
|
131
|
-
[ el, '
|
|
132
|
-
[ el, 'touchstart', 'start', 'passive' ],
|
|
127
|
+
[ el, 'pointerdown', 'start', 'passive' ],
|
|
133
128
|
[ el, 'click', 'start', 'passive' ],
|
|
134
129
|
[ el, 'keydown', 'keystart', 'passive' ],
|
|
135
130
|
[ el, 'keyup', 'keystart', 'passive' ]
|
package/src/mixins/anchor.js
CHANGED
|
@@ -139,7 +139,7 @@ export default {
|
|
|
139
139
|
},
|
|
140
140
|
|
|
141
141
|
__pickAnchorEl () {
|
|
142
|
-
if (this.target === false || this.target === '') {
|
|
142
|
+
if (this.target === false || this.target === '' || this.parentEl === null) {
|
|
143
143
|
this.anchorEl = void 0
|
|
144
144
|
}
|
|
145
145
|
else if (this.target === true) {
|
|
@@ -1,28 +1,31 @@
|
|
|
1
|
+
import { client } from '../plugins/Platform.js'
|
|
2
|
+
|
|
1
3
|
const isJapanese = /[\u3000-\u303f\u3040-\u309f\u30a0-\u30ff\uff00-\uff9f\u4e00-\u9faf\u3400-\u4dbf]/
|
|
2
4
|
const isChinese = /[\u4e00-\u9fff\u3400-\u4dbf\u{20000}-\u{2a6df}\u{2a700}-\u{2b73f}\u{2b740}-\u{2b81f}\u{2b820}-\u{2ceaf}\uf900-\ufaff\u3300-\u33ff\ufe30-\ufe4f\uf900-\ufaff\u{2f800}-\u{2fa1f}]/u
|
|
3
5
|
const isKorean = /[\u3131-\u314e\u314f-\u3163\uac00-\ud7a3]/
|
|
6
|
+
const isPlainText = /[a-z0-9_ -]$/i
|
|
4
7
|
|
|
5
8
|
export default {
|
|
6
9
|
methods: {
|
|
7
10
|
__onComposition (e) {
|
|
8
11
|
if (e.type === 'compositionend' || e.type === 'change') {
|
|
9
|
-
if (e.target.
|
|
10
|
-
e.target.
|
|
12
|
+
if (e.target.qComposing !== true) { return }
|
|
13
|
+
e.target.qComposing = false
|
|
11
14
|
this.__onInput(e)
|
|
12
15
|
}
|
|
13
|
-
else if (
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
e.
|
|
16
|
+
else if (
|
|
17
|
+
e.type === 'compositionupdate' &&
|
|
18
|
+
e.target.qComposing !== true &&
|
|
19
|
+
typeof e.data === 'string'
|
|
20
|
+
) {
|
|
21
|
+
const isComposing = client.is.firefox === true
|
|
22
|
+
? isPlainText.test(e.data) === false
|
|
23
|
+
: isJapanese.test(e.data) === true || isChinese.test(e.data) === true || isKorean.test(e.data) === true
|
|
24
|
+
|
|
25
|
+
if (isComposing === true) {
|
|
26
|
+
e.target.qComposing = true
|
|
21
27
|
}
|
|
22
28
|
}
|
|
23
|
-
else {
|
|
24
|
-
e.target.composing = true
|
|
25
|
-
}
|
|
26
29
|
}
|
|
27
30
|
}
|
|
28
31
|
}
|