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.
Files changed (209) hide show
  1. package/dist/api/QBtnDropdown.json +9 -0
  2. package/dist/api/QChip.json +9 -0
  3. package/dist/api/QCircularProgress.json +6 -0
  4. package/dist/api/QExpansionItem.json +59 -0
  5. package/dist/api/QField.json +2 -1
  6. package/dist/api/QFile.json +2 -1
  7. package/dist/api/QInput.json +2 -1
  8. package/dist/api/QSelect.json +2 -1
  9. package/dist/api/QTable.json +2 -2
  10. package/dist/babel-transforms/imports.js +1 -0
  11. package/dist/icon-set/bootstrap-icons.umd.min.js +1 -1
  12. package/dist/icon-set/eva-icons.umd.min.js +1 -1
  13. package/dist/icon-set/fontawesome-v5-pro.umd.min.js +1 -1
  14. package/dist/icon-set/fontawesome-v5.umd.min.js +1 -1
  15. package/dist/icon-set/fontawesome-v6-pro.umd.min.js +1 -1
  16. package/dist/icon-set/fontawesome-v6.umd.min.js +1 -1
  17. package/dist/icon-set/ionicons-v4.umd.min.js +1 -1
  18. package/dist/icon-set/line-awesome.umd.min.js +1 -1
  19. package/dist/icon-set/material-icons-outlined.umd.min.js +1 -1
  20. package/dist/icon-set/material-icons-round.umd.min.js +1 -1
  21. package/dist/icon-set/material-icons-sharp.umd.min.js +1 -1
  22. package/dist/icon-set/material-icons.umd.min.js +1 -1
  23. package/dist/icon-set/material-symbols-outlined.umd.min.js +1 -1
  24. package/dist/icon-set/material-symbols-rounded.umd.min.js +1 -1
  25. package/dist/icon-set/material-symbols-sharp.umd.min.js +1 -1
  26. package/dist/icon-set/mdi-v3.umd.min.js +1 -1
  27. package/dist/icon-set/mdi-v4.umd.min.js +1 -1
  28. package/dist/icon-set/mdi-v5.umd.min.js +1 -1
  29. package/dist/icon-set/mdi-v6.umd.min.js +1 -1
  30. package/dist/icon-set/svg-bootstrap-icons.umd.min.js +1 -1
  31. package/dist/icon-set/svg-eva-icons.umd.min.js +1 -1
  32. package/dist/icon-set/svg-fontawesome-v5.umd.min.js +1 -1
  33. package/dist/icon-set/svg-fontawesome-v6.umd.min.js +1 -1
  34. package/dist/icon-set/svg-ionicons-v4.umd.min.js +1 -1
  35. package/dist/icon-set/svg-ionicons-v5.umd.min.js +1 -1
  36. package/dist/icon-set/svg-ionicons-v6.umd.min.js +1 -1
  37. package/dist/icon-set/svg-line-awesome.umd.min.js +1 -1
  38. package/dist/icon-set/svg-material-icons-outlined.umd.min.js +1 -1
  39. package/dist/icon-set/svg-material-icons-round.umd.min.js +1 -1
  40. package/dist/icon-set/svg-material-icons-sharp.umd.min.js +1 -1
  41. package/dist/icon-set/svg-material-icons.umd.min.js +1 -1
  42. package/dist/icon-set/svg-material-symbols-outlined.umd.min.js +1 -1
  43. package/dist/icon-set/svg-material-symbols-rounded.umd.min.js +1 -1
  44. package/dist/icon-set/svg-material-symbols-sharp.umd.min.js +1 -1
  45. package/dist/icon-set/svg-mdi-v4.umd.min.js +1 -1
  46. package/dist/icon-set/svg-mdi-v5.umd.min.js +1 -1
  47. package/dist/icon-set/svg-mdi-v6.umd.min.js +1 -1
  48. package/dist/icon-set/svg-themify.umd.min.js +1 -1
  49. package/dist/icon-set/themify.umd.min.js +1 -1
  50. package/dist/lang/ar.umd.min.js +2 -2
  51. package/dist/lang/az-latn.umd.min.js +2 -2
  52. package/dist/lang/bg.umd.min.js +2 -2
  53. package/dist/lang/ca.umd.min.js +2 -2
  54. package/dist/lang/cs.umd.min.js +2 -2
  55. package/dist/lang/da.umd.min.js +2 -2
  56. package/dist/lang/de.umd.min.js +2 -2
  57. package/dist/lang/el.umd.min.js +2 -2
  58. package/dist/lang/en-gb.umd.min.js +2 -2
  59. package/dist/lang/en-us.umd.min.js +2 -2
  60. package/dist/lang/eo.umd.min.js +2 -2
  61. package/dist/lang/es.umd.min.js +2 -2
  62. package/dist/lang/et.umd.min.js +2 -2
  63. package/dist/lang/eu.umd.min.js +2 -2
  64. package/dist/lang/fa-ir.umd.min.js +2 -2
  65. package/dist/lang/fa.umd.min.js +2 -2
  66. package/dist/lang/fi.umd.min.js +2 -2
  67. package/dist/lang/fr.umd.min.js +2 -2
  68. package/dist/lang/gn.umd.min.js +2 -2
  69. package/dist/lang/he.umd.min.js +2 -2
  70. package/dist/lang/hr.umd.min.js +2 -2
  71. package/dist/lang/hu.umd.min.js +2 -2
  72. package/dist/lang/id.umd.min.js +2 -2
  73. package/dist/lang/is.umd.min.js +2 -2
  74. package/dist/lang/it.umd.min.js +2 -2
  75. package/dist/lang/ja.umd.min.js +2 -2
  76. package/dist/lang/km.umd.min.js +2 -2
  77. package/dist/lang/ko-kr.umd.min.js +2 -2
  78. package/dist/lang/kur-ckb.umd.min.js +2 -2
  79. package/dist/lang/kz.umd.min.js +2 -2
  80. package/dist/lang/lu.umd.min.js +2 -2
  81. package/dist/lang/lv.umd.min.js +2 -2
  82. package/dist/lang/ml.umd.min.js +2 -2
  83. package/dist/lang/mm.umd.min.js +2 -2
  84. package/dist/lang/ms.umd.min.js +2 -2
  85. package/dist/lang/my.umd.min.js +2 -2
  86. package/dist/lang/nb-no.umd.min.js +2 -2
  87. package/dist/lang/nl.umd.min.js +2 -2
  88. package/dist/lang/pl.umd.min.js +2 -2
  89. package/dist/lang/pt-br.umd.min.js +2 -2
  90. package/dist/lang/pt.umd.min.js +2 -2
  91. package/dist/lang/ro.umd.min.js +2 -2
  92. package/dist/lang/ru.umd.min.js +2 -2
  93. package/dist/lang/sk.umd.min.js +2 -2
  94. package/dist/lang/sl.umd.min.js +2 -2
  95. package/dist/lang/sm.umd.min.js +2 -2
  96. package/dist/lang/sr.umd.min.js +2 -2
  97. package/dist/lang/sv.umd.min.js +2 -2
  98. package/dist/lang/ta.umd.min.js +2 -2
  99. package/dist/lang/th.umd.min.js +2 -2
  100. package/dist/lang/tr.umd.min.js +2 -2
  101. package/dist/lang/ug.umd.min.js +2 -2
  102. package/dist/lang/uk.umd.min.js +2 -2
  103. package/dist/lang/uz-Cyrl.umd.min.js +2 -2
  104. package/dist/lang/uz-Latn.umd.min.js +2 -2
  105. package/dist/lang/vi.umd.min.js +2 -2
  106. package/dist/lang/zh-hans.umd.min.js +2 -2
  107. package/dist/lang/zh-hant.umd.min.js +2 -2
  108. package/dist/quasar.addon.css +1 -1
  109. package/dist/quasar.addon.rtl.css +1 -1
  110. package/dist/quasar.common.js +2 -2
  111. package/dist/quasar.css +1 -1
  112. package/dist/quasar.esm.js +2 -2
  113. package/dist/quasar.ie.polyfills.js +1 -1
  114. package/dist/quasar.ie.polyfills.umd.min.js +1 -1
  115. package/dist/quasar.rtl.css +1 -1
  116. package/dist/quasar.sass +1 -1
  117. package/dist/quasar.styl +1 -1
  118. package/dist/quasar.umd.js +396 -180
  119. package/dist/quasar.umd.min.js +2 -2
  120. package/dist/quasar.umd.modern.js +381 -171
  121. package/dist/quasar.umd.modern.min.js +2 -2
  122. package/dist/types/index.d.ts +21 -1
  123. package/dist/types/utils/is.d.ts +67 -0
  124. package/dist/types/utils/run-sequential-promises.d.ts +119 -0
  125. package/dist/types/utils.d.ts +2 -0
  126. package/dist/vetur/quasar-attributes.json +21 -1
  127. package/dist/vetur/quasar-tags.json +6 -1
  128. package/dist/web-types/web-types.json +77 -6
  129. package/lang/ar.js +3 -1
  130. package/lang/az-latn.js +3 -1
  131. package/lang/bg.js +3 -1
  132. package/lang/ca.js +3 -1
  133. package/lang/cs.js +3 -1
  134. package/lang/da.js +3 -1
  135. package/lang/de.js +3 -1
  136. package/lang/el.js +3 -1
  137. package/lang/en-gb.js +3 -1
  138. package/lang/en-us.js +3 -1
  139. package/lang/eo.js +3 -1
  140. package/lang/es.js +3 -1
  141. package/lang/et.js +3 -1
  142. package/lang/eu.js +3 -1
  143. package/lang/fa-ir.js +3 -1
  144. package/lang/fa.js +3 -1
  145. package/lang/fi.js +3 -1
  146. package/lang/fr.js +3 -1
  147. package/lang/gn.js +3 -1
  148. package/lang/he.js +3 -1
  149. package/lang/hr.js +3 -1
  150. package/lang/hu.js +3 -1
  151. package/lang/id.js +3 -1
  152. package/lang/is.js +3 -1
  153. package/lang/it.js +3 -1
  154. package/lang/ja.js +3 -1
  155. package/lang/km.js +3 -1
  156. package/lang/ko-kr.js +3 -1
  157. package/lang/kur-ckb.js +3 -1
  158. package/lang/kz.js +3 -1
  159. package/lang/lu.js +3 -1
  160. package/lang/lv.js +3 -1
  161. package/lang/ml.js +3 -1
  162. package/lang/mm.js +3 -1
  163. package/lang/ms.js +3 -1
  164. package/lang/my.js +3 -1
  165. package/lang/nb-no.js +3 -1
  166. package/lang/nl.js +3 -1
  167. package/lang/pl.js +3 -1
  168. package/lang/pt-br.js +3 -1
  169. package/lang/pt.js +3 -1
  170. package/lang/ro.js +3 -1
  171. package/lang/ru.js +3 -1
  172. package/lang/sk.js +3 -1
  173. package/lang/sl.js +3 -1
  174. package/lang/sm.js +3 -1
  175. package/lang/sr.js +3 -1
  176. package/lang/sv.js +3 -1
  177. package/lang/ta.js +3 -1
  178. package/lang/th.js +3 -1
  179. package/lang/tr.js +3 -1
  180. package/lang/ug.js +3 -1
  181. package/lang/uk.js +3 -1
  182. package/lang/uz-Cyrl.js +3 -1
  183. package/lang/uz-Latn.js +3 -1
  184. package/lang/vi.js +3 -1
  185. package/lang/zh-hans.js +3 -1
  186. package/lang/zh-hant.js +3 -1
  187. package/package.json +1 -1
  188. package/src/components/btn-dropdown/QBtnDropdown.js +17 -4
  189. package/src/components/btn-dropdown/QBtnDropdown.json +8 -0
  190. package/src/components/chip/QChip.js +8 -1
  191. package/src/components/chip/QChip.json +8 -0
  192. package/src/components/circular-progress/QCircularProgress.js +5 -2
  193. package/src/components/circular-progress/QCircularProgress.json +7 -0
  194. package/src/components/dialog/QDialog.js +7 -1
  195. package/src/components/expansion-item/QExpansionItem.js +38 -3
  196. package/src/components/expansion-item/QExpansionItem.json +67 -0
  197. package/src/components/fab/QFab.js +24 -1
  198. package/src/components/form/QForm.js +43 -49
  199. package/src/components/input/QInput.js +18 -15
  200. package/src/components/menu/QMenu.js +1 -0
  201. package/src/components/select/QSelect.js +1 -4
  202. package/src/components/table/QTable.js +1 -1
  203. package/src/components/table/QTable.json +2 -2
  204. package/src/mixins/file.js +7 -5
  205. package/src/mixins/validate.js +6 -4
  206. package/src/mixins/validate.json +2 -1
  207. package/src/utils/is.js +8 -0
  208. package/src/utils/run-sequential-promises.js +115 -0
  209. package/src/utils.js +4 -0
@@ -143,11 +143,13 @@ export default {
143
143
 
144
144
  const index = ++this.validateIndex
145
145
 
146
- if (this.innerLoading !== true && this.lazyRules !== true) {
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)
@@ -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