quasar 1.20.0 → 1.20.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/api/QBtnDropdown.json +9 -0
- package/dist/api/QChip.json +9 -0
- package/dist/api/QCircularProgress.json +6 -0
- package/dist/api/QExpansionItem.json +59 -0
- package/dist/api/QField.json +2 -1
- package/dist/api/QFile.json +2 -1
- package/dist/api/QInput.json +2 -1
- package/dist/api/QSelect.json +2 -1
- package/dist/api/QTable.json +2 -2
- package/dist/babel-transforms/imports.js +1 -0
- 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 +1 -1
- package/dist/icon-set/material-symbols-rounded.umd.min.js +1 -1
- package/dist/icon-set/material-symbols-sharp.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 +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 +1 -1
- package/dist/icon-set/svg-material-symbols-rounded.umd.min.js +1 -1
- package/dist/icon-set/svg-material-symbols-sharp.umd.min.js +1 -1
- 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 +2 -2
- package/dist/lang/az-latn.umd.min.js +2 -2
- package/dist/lang/bg.umd.min.js +2 -2
- package/dist/lang/ca.umd.min.js +2 -2
- package/dist/lang/cs.umd.min.js +2 -2
- package/dist/lang/da.umd.min.js +2 -2
- package/dist/lang/de.umd.min.js +2 -2
- package/dist/lang/el.umd.min.js +2 -2
- package/dist/lang/en-gb.umd.min.js +2 -2
- package/dist/lang/en-us.umd.min.js +2 -2
- package/dist/lang/eo.umd.min.js +2 -2
- package/dist/lang/es.umd.min.js +2 -2
- package/dist/lang/et.umd.min.js +2 -2
- package/dist/lang/eu.umd.min.js +2 -2
- package/dist/lang/fa-ir.umd.min.js +2 -2
- package/dist/lang/fa.umd.min.js +2 -2
- package/dist/lang/fi.umd.min.js +2 -2
- package/dist/lang/fr.umd.min.js +2 -2
- package/dist/lang/gn.umd.min.js +2 -2
- package/dist/lang/he.umd.min.js +2 -2
- package/dist/lang/hr.umd.min.js +2 -2
- package/dist/lang/hu.umd.min.js +2 -2
- package/dist/lang/id.umd.min.js +2 -2
- package/dist/lang/is.umd.min.js +2 -2
- package/dist/lang/it.umd.min.js +2 -2
- package/dist/lang/ja.umd.min.js +2 -2
- package/dist/lang/km.umd.min.js +2 -2
- package/dist/lang/ko-kr.umd.min.js +2 -2
- package/dist/lang/kur-ckb.umd.min.js +2 -2
- package/dist/lang/kz.umd.min.js +2 -2
- package/dist/lang/lu.umd.min.js +2 -2
- package/dist/lang/lv.umd.min.js +2 -2
- package/dist/lang/ml.umd.min.js +2 -2
- package/dist/lang/mm.umd.min.js +2 -2
- package/dist/lang/ms.umd.min.js +2 -2
- package/dist/lang/my.umd.min.js +2 -2
- package/dist/lang/nb-no.umd.min.js +2 -2
- package/dist/lang/nl.umd.min.js +2 -2
- package/dist/lang/pl.umd.min.js +2 -2
- package/dist/lang/pt-br.umd.min.js +2 -2
- package/dist/lang/pt.umd.min.js +2 -2
- package/dist/lang/ro.umd.min.js +2 -2
- package/dist/lang/ru.umd.min.js +2 -2
- package/dist/lang/sk.umd.min.js +2 -2
- package/dist/lang/sl.umd.min.js +2 -2
- package/dist/lang/sm.umd.min.js +2 -2
- package/dist/lang/sr.umd.min.js +2 -2
- package/dist/lang/sv.umd.min.js +2 -2
- package/dist/lang/ta.umd.min.js +2 -2
- package/dist/lang/th.umd.min.js +2 -2
- package/dist/lang/tr.umd.min.js +2 -2
- package/dist/lang/ug.umd.min.js +2 -2
- package/dist/lang/uk.umd.min.js +2 -2
- package/dist/lang/uz-Cyrl.umd.min.js +2 -2
- package/dist/lang/uz-Latn.umd.min.js +2 -2
- package/dist/lang/vi.umd.min.js +2 -2
- package/dist/lang/zh-hans.umd.min.js +2 -2
- package/dist/lang/zh-hant.umd.min.js +2 -2
- 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 +1 -1
- 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.rtl.css +1 -1
- package/dist/quasar.sass +1 -1
- package/dist/quasar.styl +1 -1
- package/dist/quasar.umd.js +396 -180
- package/dist/quasar.umd.min.js +2 -2
- package/dist/quasar.umd.modern.js +381 -171
- package/dist/quasar.umd.modern.min.js +2 -2
- package/dist/types/index.d.ts +21 -1
- package/dist/types/utils/is.d.ts +67 -0
- package/dist/types/utils/run-sequential-promises.d.ts +119 -0
- package/dist/types/utils.d.ts +2 -0
- package/dist/vetur/quasar-attributes.json +21 -1
- package/dist/vetur/quasar-tags.json +6 -1
- package/dist/web-types/web-types.json +77 -6
- package/lang/ar.js +3 -1
- package/lang/az-latn.js +3 -1
- package/lang/bg.js +3 -1
- package/lang/ca.js +3 -1
- package/lang/cs.js +3 -1
- package/lang/da.js +3 -1
- package/lang/de.js +3 -1
- package/lang/el.js +3 -1
- package/lang/en-gb.js +3 -1
- package/lang/en-us.js +3 -1
- package/lang/eo.js +3 -1
- package/lang/es.js +3 -1
- package/lang/et.js +3 -1
- package/lang/eu.js +3 -1
- package/lang/fa-ir.js +3 -1
- package/lang/fa.js +3 -1
- package/lang/fi.js +3 -1
- package/lang/fr.js +3 -1
- package/lang/gn.js +3 -1
- package/lang/he.js +3 -1
- package/lang/hr.js +3 -1
- package/lang/hu.js +3 -1
- package/lang/id.js +3 -1
- package/lang/is.js +3 -1
- package/lang/it.js +3 -1
- package/lang/ja.js +3 -1
- package/lang/km.js +3 -1
- package/lang/ko-kr.js +3 -1
- package/lang/kur-ckb.js +3 -1
- package/lang/kz.js +3 -1
- package/lang/lu.js +3 -1
- package/lang/lv.js +3 -1
- package/lang/ml.js +3 -1
- package/lang/mm.js +3 -1
- package/lang/ms.js +3 -1
- package/lang/my.js +3 -1
- package/lang/nb-no.js +3 -1
- package/lang/nl.js +3 -1
- package/lang/pl.js +3 -1
- package/lang/pt-br.js +3 -1
- package/lang/pt.js +3 -1
- package/lang/ro.js +3 -1
- package/lang/ru.js +3 -1
- package/lang/sk.js +3 -1
- package/lang/sl.js +3 -1
- package/lang/sm.js +3 -1
- package/lang/sr.js +3 -1
- package/lang/sv.js +3 -1
- package/lang/ta.js +3 -1
- package/lang/th.js +3 -1
- package/lang/tr.js +3 -1
- package/lang/ug.js +3 -1
- package/lang/uk.js +3 -1
- package/lang/uz-Cyrl.js +3 -1
- package/lang/uz-Latn.js +3 -1
- package/lang/vi.js +3 -1
- package/lang/zh-hans.js +3 -1
- package/lang/zh-hant.js +3 -1
- package/package.json +1 -1
- package/src/components/btn-dropdown/QBtnDropdown.js +17 -4
- package/src/components/btn-dropdown/QBtnDropdown.json +8 -0
- package/src/components/chip/QChip.js +8 -1
- package/src/components/chip/QChip.json +8 -0
- package/src/components/circular-progress/QCircularProgress.js +5 -2
- package/src/components/circular-progress/QCircularProgress.json +7 -0
- package/src/components/dialog/QDialog.js +7 -1
- package/src/components/expansion-item/QExpansionItem.js +38 -3
- package/src/components/expansion-item/QExpansionItem.json +67 -0
- package/src/components/fab/QFab.js +24 -1
- package/src/components/form/QForm.js +43 -49
- package/src/components/input/QInput.js +18 -15
- package/src/components/menu/QMenu.js +1 -0
- package/src/components/select/QSelect.js +1 -4
- package/src/components/table/QTable.js +1 -1
- package/src/components/table/QTable.json +2 -2
- package/src/mixins/file.js +7 -5
- package/src/mixins/validate.js +6 -4
- package/src/mixins/validate.json +2 -1
- package/src/utils/is.js +8 -0
- package/src/utils/run-sequential-promises.js +115 -0
- package/src/utils.js +4 -0
package/src/mixins/validate.js
CHANGED
|
@@ -143,11 +143,13 @@ export default {
|
|
|
143
143
|
|
|
144
144
|
const index = ++this.validateIndex
|
|
145
145
|
|
|
146
|
-
|
|
147
|
-
this.isDirty = true
|
|
148
|
-
|
|
146
|
+
const setDirty = this.innerLoading !== true
|
|
147
|
+
? () => this.isDirty !== true && (this.isDirty = true)
|
|
148
|
+
: () => {}
|
|
149
149
|
|
|
150
150
|
const update = (err, msg) => {
|
|
151
|
+
err === true && setDirty()
|
|
152
|
+
|
|
151
153
|
if (this.innerError !== err) {
|
|
152
154
|
this.innerError = err
|
|
153
155
|
}
|
|
@@ -170,7 +172,7 @@ export default {
|
|
|
170
172
|
let res
|
|
171
173
|
|
|
172
174
|
if (typeof rule === 'function') {
|
|
173
|
-
res = rule(val)
|
|
175
|
+
res = rule(val, testPattern)
|
|
174
176
|
}
|
|
175
177
|
else if (typeof rule === 'string' && testPattern[rule] !== void 0) {
|
|
176
178
|
res = testPattern[rule](val)
|
package/src/mixins/validate.json
CHANGED
|
@@ -24,7 +24,8 @@
|
|
|
24
24
|
"desc": "Array of Functions/Strings; If String, then it must be a name of one of the embedded validation rules",
|
|
25
25
|
"examples": [
|
|
26
26
|
":rules=\"[ val => val.length <= 3 || 'Please use maximum 3 characters' ]\"",
|
|
27
|
-
":rules=\"[ 'fulltime' ]\""
|
|
27
|
+
":rules=\"[ 'fulltime' ]\"",
|
|
28
|
+
":rules=\"[ (val, rules) => rules.email(val) || 'Please enter a valid email address' ]\""
|
|
28
29
|
],
|
|
29
30
|
"category": "behavior"
|
|
30
31
|
},
|
package/src/utils/is.js
CHANGED
|
@@ -138,3 +138,11 @@ export function isRegexp (v) {
|
|
|
138
138
|
export function isNumber (v) {
|
|
139
139
|
return typeof v === 'number' && isFinite(v)
|
|
140
140
|
}
|
|
141
|
+
|
|
142
|
+
export default {
|
|
143
|
+
deepEqual: isDeepEqual,
|
|
144
|
+
object: isObject,
|
|
145
|
+
date: isDate,
|
|
146
|
+
regexp: isRegexp,
|
|
147
|
+
number: isNumber
|
|
148
|
+
}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
|
|
2
|
+
function parsePromises (sequentialPromises) {
|
|
3
|
+
const isList = Array.isArray(sequentialPromises)
|
|
4
|
+
|
|
5
|
+
if (isList === true) {
|
|
6
|
+
const totalJobs = sequentialPromises.length
|
|
7
|
+
return {
|
|
8
|
+
isList,
|
|
9
|
+
totalJobs,
|
|
10
|
+
resultAggregator: Array(totalJobs).fill(null)
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const resultKeys = Object.keys(sequentialPromises)
|
|
15
|
+
const resultAggregator = {}
|
|
16
|
+
resultKeys.forEach(keyName => { resultAggregator[ keyName ] = null })
|
|
17
|
+
|
|
18
|
+
return {
|
|
19
|
+
isList,
|
|
20
|
+
totalJobs: resultKeys.length,
|
|
21
|
+
resultAggregator,
|
|
22
|
+
resultKeys
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Run a list of Promises sequentially, optionally on multiple threads.
|
|
28
|
+
*
|
|
29
|
+
* @param {*} sequentialPromises - Array of Functions or Object with Functions as values
|
|
30
|
+
* Array of Function form: [ (resultAggregator: Array) => Promise<any>, ... ]
|
|
31
|
+
* Object form: { [key: string]: (resultAggregator: object) => Promise<any>, ... }
|
|
32
|
+
* @param {*} opts - Optional options Object
|
|
33
|
+
* Object form: { threadsNumber?: number, abortOnFail?: boolean }
|
|
34
|
+
* Default: { threadsNumber: 1, abortOnFail: true }
|
|
35
|
+
* When configuring threadsNumber AND using http requests, be
|
|
36
|
+
* aware of the maximum threads that the hosting browser
|
|
37
|
+
* supports (usually 3); any number of threads above that
|
|
38
|
+
* won't add any real benefits
|
|
39
|
+
* @returns Promise<Array<Object> | Object>
|
|
40
|
+
* With opts.abortOnFail set to true (which is default):
|
|
41
|
+
* When sequentialPromises param is Array:
|
|
42
|
+
* The Promise resolves with an Array of Objects of the following form:
|
|
43
|
+
* [ { key: number, status: 'fulfilled', value: any }, ... ]
|
|
44
|
+
* The Promise rejects with an Object of the following form:
|
|
45
|
+
* { key: number, status: 'rejected', reason: Error, resultAggregator: array }
|
|
46
|
+
* When sequentialPromises param is Object:
|
|
47
|
+
* The Promise resolves with an Object of the following form:
|
|
48
|
+
* { [key: string]: { key: string, status: 'fulfilled', value: any }, ... }
|
|
49
|
+
* The Promise rejects with an Object of the following form:
|
|
50
|
+
* { key: string, status: 'rejected', reason: Error, resultAggregator: object }
|
|
51
|
+
* With opts.abortOnFail set to false:
|
|
52
|
+
* The Promise is never rejected (no catch() needed)
|
|
53
|
+
* The Promise resolves with:
|
|
54
|
+
* An Array of Objects (when sequentialPromises param is also an Array) of the following form:
|
|
55
|
+
* [ { key: number, status: 'fulfilled', value: any } | { status: 'rejected', reason: Error }, ... ]
|
|
56
|
+
* An Object (when sequentialPromises param is also an Object) of the following form:
|
|
57
|
+
* { [key: string]: { key: string, status: 'fulfilled', value: any } | { key: string, status: 'rejected', reason: Error }, ... }
|
|
58
|
+
*/
|
|
59
|
+
export default function runSequentialPromises (
|
|
60
|
+
sequentialPromises,
|
|
61
|
+
{ threadsNumber = 1, abortOnFail = true } = {}
|
|
62
|
+
) {
|
|
63
|
+
let jobIndex = -1, hasAborted = false
|
|
64
|
+
|
|
65
|
+
const { isList, totalJobs, resultAggregator, resultKeys } = parsePromises(sequentialPromises)
|
|
66
|
+
|
|
67
|
+
const getPromiseThread = () => new Promise((resolve, reject) => {
|
|
68
|
+
function runNextPromise () {
|
|
69
|
+
const currentJobIndex = ++jobIndex
|
|
70
|
+
|
|
71
|
+
if (hasAborted === true || currentJobIndex >= totalJobs) {
|
|
72
|
+
resolve()
|
|
73
|
+
return
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
const key = isList === true ? currentJobIndex : resultKeys[ currentJobIndex ]
|
|
77
|
+
|
|
78
|
+
sequentialPromises[ key ](resultAggregator)
|
|
79
|
+
.then(value => {
|
|
80
|
+
if (hasAborted === true) {
|
|
81
|
+
resolve()
|
|
82
|
+
return // early exit
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
resultAggregator[ key ] = { key, status: 'fulfilled', value }
|
|
86
|
+
|
|
87
|
+
// timeout so it doesn't interfere with the .catch() below
|
|
88
|
+
setTimeout(runNextPromise)
|
|
89
|
+
})
|
|
90
|
+
.catch(reason => {
|
|
91
|
+
if (hasAborted === true) {
|
|
92
|
+
resolve()
|
|
93
|
+
return // early exit
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
const result = { key, status: 'rejected', reason }
|
|
97
|
+
resultAggregator[ key ] = result
|
|
98
|
+
|
|
99
|
+
if (abortOnFail === true) {
|
|
100
|
+
hasAborted = true
|
|
101
|
+
reject({ ...result, resultAggregator })
|
|
102
|
+
return // early exit
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// timeout so no interference
|
|
106
|
+
setTimeout(runNextPromise)
|
|
107
|
+
})
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
runNextPromise()
|
|
111
|
+
})
|
|
112
|
+
|
|
113
|
+
const threads = Array(threadsNumber).fill(getPromiseThread())
|
|
114
|
+
return Promise.all(threads).then(() => resultAggregator)
|
|
115
|
+
}
|
package/src/utils.js
CHANGED
|
@@ -5,6 +5,7 @@ import date from './utils/date.js'
|
|
|
5
5
|
import debounce from './utils/debounce.js'
|
|
6
6
|
import dom from './utils/dom.js'
|
|
7
7
|
import event, { noop } from './utils/event.js'
|
|
8
|
+
import is from './utils/is.js'
|
|
8
9
|
import exportFile from './utils/export-file.js'
|
|
9
10
|
import extend from './utils/extend.js'
|
|
10
11
|
import format from './utils/format.js'
|
|
@@ -12,6 +13,7 @@ import frameDebounce from './utils/frame-debounce.js'
|
|
|
12
13
|
import openURL from './utils/open-url.js'
|
|
13
14
|
import morph from './utils/morph.js'
|
|
14
15
|
import patterns from './utils/patterns.js'
|
|
16
|
+
import runSequentialPromises from './utils/run-sequential-promises.js'
|
|
15
17
|
import scroll from './utils/scroll.js'
|
|
16
18
|
import throttle from './utils/throttle.js'
|
|
17
19
|
import uid from './utils/uid.js'
|
|
@@ -29,9 +31,11 @@ export {
|
|
|
29
31
|
format,
|
|
30
32
|
frameDebounce,
|
|
31
33
|
noop,
|
|
34
|
+
is,
|
|
32
35
|
openURL,
|
|
33
36
|
morph,
|
|
34
37
|
patterns,
|
|
38
|
+
runSequentialPromises,
|
|
35
39
|
scroll,
|
|
36
40
|
throttle,
|
|
37
41
|
uid
|