quasar 2.4.13 → 2.5.3

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 (167) hide show
  1. package/dist/api/QCheckbox.json +27 -0
  2. package/dist/api/QRadio.json +18 -0
  3. package/dist/api/QTime.json +8 -2
  4. package/dist/api/QToggle.json +24 -24
  5. package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
  6. package/dist/icon-set/eva-icons.umd.prod.js +1 -1
  7. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
  8. package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
  9. package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
  10. package/dist/icon-set/line-awesome.umd.prod.js +1 -1
  11. package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
  12. package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
  13. package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
  14. package/dist/icon-set/material-icons.umd.prod.js +1 -1
  15. package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
  16. package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
  17. package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
  18. package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
  19. package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
  20. package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
  21. package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
  22. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
  23. package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
  24. package/dist/icon-set/svg-ionicons-v6.umd.prod.js +1 -1
  25. package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
  26. package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
  27. package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
  28. package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
  29. package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
  30. package/dist/icon-set/svg-mdi-v4.umd.prod.js +1 -1
  31. package/dist/icon-set/svg-mdi-v5.umd.prod.js +1 -1
  32. package/dist/icon-set/svg-mdi-v6.umd.prod.js +1 -1
  33. package/dist/icon-set/svg-themify.umd.prod.js +1 -1
  34. package/dist/icon-set/themify.umd.prod.js +1 -1
  35. package/dist/lang/ar.umd.prod.js +1 -1
  36. package/dist/lang/az-Latn.umd.prod.js +1 -1
  37. package/dist/lang/bg.umd.prod.js +1 -1
  38. package/dist/lang/bn.umd.prod.js +1 -1
  39. package/dist/lang/ca.umd.prod.js +1 -1
  40. package/dist/lang/cs.umd.prod.js +1 -1
  41. package/dist/lang/da.umd.prod.js +1 -1
  42. package/dist/lang/de.umd.prod.js +1 -1
  43. package/dist/lang/el.umd.prod.js +1 -1
  44. package/dist/lang/en-GB.umd.prod.js +1 -1
  45. package/dist/lang/en-US.umd.prod.js +1 -1
  46. package/dist/lang/eo.umd.prod.js +1 -1
  47. package/dist/lang/es.umd.prod.js +1 -1
  48. package/dist/lang/et.umd.prod.js +1 -1
  49. package/dist/lang/fa-IR.umd.prod.js +1 -1
  50. package/dist/lang/fa.umd.prod.js +1 -1
  51. package/dist/lang/fi.umd.prod.js +1 -1
  52. package/dist/lang/fr.umd.prod.js +1 -1
  53. package/dist/lang/gn.umd.prod.js +1 -1
  54. package/dist/lang/he.umd.prod.js +1 -1
  55. package/dist/lang/hr.umd.prod.js +1 -1
  56. package/dist/lang/hu.umd.prod.js +1 -1
  57. package/dist/lang/id.umd.prod.js +1 -1
  58. package/dist/lang/is.umd.prod.js +1 -1
  59. package/dist/lang/it.umd.prod.js +1 -1
  60. package/dist/lang/ja.umd.prod.js +1 -1
  61. package/dist/lang/km.umd.prod.js +1 -1
  62. package/dist/lang/ko-KR.umd.prod.js +1 -1
  63. package/dist/lang/kur-CKB.umd.prod.js +1 -1
  64. package/dist/lang/lt.umd.prod.js +1 -1
  65. package/dist/lang/lu.umd.prod.js +1 -1
  66. package/dist/lang/lv.umd.prod.js +1 -1
  67. package/dist/lang/ml.umd.prod.js +1 -1
  68. package/dist/lang/ms.umd.prod.js +1 -1
  69. package/dist/lang/my.umd.prod.js +1 -1
  70. package/dist/lang/nb-NO.umd.prod.js +1 -1
  71. package/dist/lang/nl.umd.prod.js +1 -1
  72. package/dist/lang/pl.umd.prod.js +1 -1
  73. package/dist/lang/pt-BR.umd.prod.js +1 -1
  74. package/dist/lang/pt.umd.prod.js +1 -1
  75. package/dist/lang/ro.umd.prod.js +1 -1
  76. package/dist/lang/ru.umd.prod.js +1 -1
  77. package/dist/lang/sk.umd.prod.js +1 -1
  78. package/dist/lang/sl.umd.prod.js +1 -1
  79. package/dist/lang/sr-CYR.umd.prod.js +1 -1
  80. package/dist/lang/sr.umd.prod.js +1 -1
  81. package/dist/lang/sv.umd.prod.js +1 -1
  82. package/dist/lang/ta.umd.prod.js +1 -1
  83. package/dist/lang/th.umd.prod.js +1 -1
  84. package/dist/lang/tr.umd.prod.js +1 -1
  85. package/dist/lang/ug.umd.prod.js +1 -1
  86. package/dist/lang/uk.umd.prod.js +1 -1
  87. package/dist/lang/vi.umd.prod.js +1 -1
  88. package/dist/lang/zh-CN.umd.prod.js +1 -1
  89. package/dist/lang/zh-TW.umd.prod.js +1 -1
  90. package/dist/quasar.cjs.prod.js +2 -2
  91. package/dist/quasar.css +38 -10
  92. package/dist/quasar.esm.prod.js +2 -2
  93. package/dist/quasar.prod.css +1 -1
  94. package/dist/quasar.rtl.css +55 -23
  95. package/dist/quasar.rtl.prod.css +1 -1
  96. package/dist/quasar.sass +31 -11
  97. package/dist/quasar.umd.js +307 -158
  98. package/dist/quasar.umd.prod.js +2 -2
  99. package/dist/ssr-directives/Morph.js +1 -1
  100. package/dist/transforms/auto-import.json +39 -3
  101. package/dist/transforms/import-map.json +18 -0
  102. package/dist/types/index.d.ts +35 -13
  103. package/dist/types/utils/date.d.ts +25 -13
  104. package/dist/vetur/quasar-attributes.json +32 -12
  105. package/dist/vetur/quasar-tags.json +8 -3
  106. package/dist/web-types/web-types.json +73 -28
  107. package/package.json +13 -3
  108. package/src/components/avatar/__tests__/QAvatar.spec.js +121 -0
  109. package/src/components/badge/__tests__/QBadge.spec.js +74 -0
  110. package/src/components/breadcrumbs/QBreadcrumbs.js +1 -1
  111. package/src/components/btn/__tests__/QBtn.spec.js +55 -0
  112. package/src/components/btn/__tests__/use-btn.spec.js +189 -0
  113. package/src/components/checkbox/QCheckbox.js +34 -3
  114. package/src/components/checkbox/QCheckbox.json +17 -0
  115. package/src/components/checkbox/QCheckbox.sass +17 -5
  116. package/src/components/checkbox/use-checkbox.js +4 -0
  117. package/src/components/checkbox/use-checkbox.json +18 -0
  118. package/src/components/chip/__tests__/QChip.spec.js +155 -0
  119. package/src/components/date/__tests__/QDate.spec.js +189 -0
  120. package/src/components/date/__tests__/use-datetime.spec.js +83 -0
  121. package/src/components/dialog/__tests__/QDialog.spec.js +129 -0
  122. package/src/components/editor/__tests__/QEditor.spec.js +195 -0
  123. package/src/components/field/QField.sass +2 -0
  124. package/src/components/form/QForm.js +26 -24
  125. package/src/components/input/QInput.js +9 -0
  126. package/src/components/input/__tests__/QInput.spec.js +105 -0
  127. package/src/components/input/__tests__/use-mask.spec.js +29 -0
  128. package/src/components/menu/__tests__/QMenu.spec.js +610 -0
  129. package/src/components/menu/__tests__/WrapperOne.vue +51 -0
  130. package/src/components/menu/__tests__/WrapperTwo.vue +38 -0
  131. package/src/components/radio/QRadio.js +26 -1
  132. package/src/components/radio/QRadio.json +16 -0
  133. package/src/components/radio/QRadio.sass +17 -6
  134. package/src/components/select/QSelect.js +1 -1
  135. package/src/components/select/__tests__/QSelect.spec.js +2003 -0
  136. package/src/components/select/__tests__/WrapperOne.vue +28 -0
  137. package/src/components/table/__tests__/QTable.spec.js +635 -0
  138. package/src/components/table/__tests__/QTd.spec.js +35 -0
  139. package/src/components/table/__tests__/QTh.spec.js +27 -0
  140. package/src/components/table/__tests__/QTr.spec.js +27 -0
  141. package/src/components/tabs/__tests__/QRouteTab.spec.js +9 -0
  142. package/src/components/tabs/__tests__/QTab.spec.js +79 -0
  143. package/src/components/tabs/__tests__/QTabs.spec.js +147 -0
  144. package/src/components/time/QTime.json +2 -2
  145. package/src/components/toggle/QToggle.js +5 -13
  146. package/src/components/toggle/QToggle.json +3 -12
  147. package/src/components/tree/QTree.js +39 -41
  148. package/src/components/uploader/__tests__/QUploader.spec.js +161 -0
  149. package/src/composables/private/__tests__/FieldWrapper.vue +39 -0
  150. package/src/composables/private/__tests__/use-anchor.spec.js +99 -0
  151. package/src/composables/private/__tests__/use-field.spec.js +351 -0
  152. package/src/composables/private/__tests__/use-file.spec.js +69 -0
  153. package/src/composables/private/__tests__/use-form.spec.js +11 -0
  154. package/src/composables/private/__tests__/use-fullscreen.spec.js +37 -0
  155. package/src/composables/private/__tests__/use-model-toggle.spec.js +306 -0
  156. package/src/composables/private/__tests__/use-portal.spec.js +4 -0
  157. package/src/composables/private/__tests__/use-router-link.spec.js +55 -0
  158. package/src/composables/private/__tests__/use-size.spec.js +37 -0
  159. package/src/composables/private/__tests__/use-transition.spec.js +108 -0
  160. package/src/composables/private/__tests__/use-validate.spec.js +111 -0
  161. package/src/composables/private/use-fullscreen.js +1 -1
  162. package/src/composables/private/use-model-toggle.js +1 -1
  163. package/src/composables/private/use-validate.js +22 -22
  164. package/src/plugins/Meta.js +1 -1
  165. package/src/plugins/Screen.js +16 -9
  166. package/src/utils/date.js +111 -32
  167. package/src/utils/private/vm.js +14 -8
@@ -0,0 +1,195 @@
1
+ describe('Editor API', () => {
2
+ describe('Props', () => {
3
+ describe('Category: behavior', () => {
4
+ describe('(prop): paragraph-tag', () => {
5
+ it.skip(' ', () => {
6
+ //
7
+ })
8
+ })
9
+ })
10
+
11
+ describe('Category: content', () => {
12
+ describe('(prop): placeholder', () => {
13
+ it.skip(' ', () => {
14
+ //
15
+ })
16
+ })
17
+ })
18
+
19
+ describe('Category: model', () => {
20
+ describe('(prop): model-value', () => {
21
+ it.skip(' ', () => {
22
+ //
23
+ })
24
+ })
25
+ })
26
+
27
+ describe('Category: state', () => {
28
+ describe('(prop): readonly', () => {
29
+ it.skip(' ', () => {
30
+ //
31
+ })
32
+ })
33
+
34
+ describe('(prop): disable', () => {
35
+ it.skip(' ', () => {
36
+ //
37
+ })
38
+ })
39
+ })
40
+
41
+ describe('Category: style', () => {
42
+ describe('(prop): square', () => {
43
+ it.skip(' ', () => {
44
+ //
45
+ })
46
+ })
47
+
48
+ describe('(prop): flat', () => {
49
+ it.skip(' ', () => {
50
+ //
51
+ })
52
+ })
53
+
54
+ describe('(prop): dense', () => {
55
+ it.skip(' ', () => {
56
+ //
57
+ })
58
+ })
59
+
60
+ describe('(prop): dark', () => {
61
+ it.skip(' ', () => {
62
+ //
63
+ })
64
+ })
65
+
66
+ describe('(prop): min-height', () => {
67
+ it.skip(' ', () => {
68
+ //
69
+ })
70
+ })
71
+
72
+ describe('(prop): max-height', () => {
73
+ it.skip(' ', () => {
74
+ //
75
+ })
76
+ })
77
+
78
+ describe('(prop): height', () => {
79
+ it.skip(' ', () => {
80
+ //
81
+ })
82
+ })
83
+
84
+ describe('(prop): content-style', () => {
85
+ it.skip(' ', () => {
86
+ //
87
+ })
88
+ })
89
+
90
+ describe('(prop): content-class', () => {
91
+ it.skip(' ', () => {
92
+ //
93
+ })
94
+ })
95
+ })
96
+
97
+ describe('Category: toolbar', () => {
98
+ describe('(prop): definitions', () => {
99
+ it.skip(' ', () => {
100
+ //
101
+ })
102
+ })
103
+
104
+ describe('(prop): fonts', () => {
105
+ it.skip(' ', () => {
106
+ //
107
+ })
108
+ })
109
+
110
+ describe('(prop): toolbar', () => {
111
+ it.skip(' ', () => {
112
+ //
113
+ })
114
+ })
115
+
116
+ describe('(prop): toolbar-color', () => {
117
+ it.skip(' ', () => {
118
+ //
119
+ })
120
+ })
121
+
122
+ describe('(prop): toolbar-text-color', () => {
123
+ it.skip(' ', () => {
124
+ //
125
+ })
126
+ })
127
+
128
+ describe('(prop): toolbar-toggle-color', () => {
129
+ it.skip(' ', () => {
130
+ //
131
+ })
132
+ })
133
+
134
+ describe('(prop): toolbar-bg', () => {
135
+ it.skip(' ', () => {
136
+ //
137
+ })
138
+ })
139
+ })
140
+
141
+ describe('Category: toolbar|style', () => {
142
+ describe('(prop): toolbar-outline', () => {
143
+ it.skip(' ', () => {
144
+ //
145
+ })
146
+ })
147
+
148
+ describe('(prop): toolbar-push', () => {
149
+ it.skip(' ', () => {
150
+ //
151
+ })
152
+ })
153
+
154
+ describe('(prop): toolbar-rounded', () => {
155
+ it.skip(' ', () => {
156
+ //
157
+ })
158
+ })
159
+ })
160
+ })
161
+
162
+ describe('Events', () => {
163
+ describe('(event): update:model-value', () => {
164
+ it.skip(' ', () => {
165
+ //
166
+ })
167
+ })
168
+ })
169
+
170
+ describe('Methods', () => {
171
+ describe('(method): runCmd', () => {
172
+ it.skip(' ', () => {
173
+ //
174
+ })
175
+ })
176
+
177
+ describe('(method): refreshToolbar', () => {
178
+ it.skip(' ', () => {
179
+ //
180
+ })
181
+ })
182
+
183
+ describe('(method): focus', () => {
184
+ it.skip(' ', () => {
185
+ //
186
+ })
187
+ })
188
+
189
+ describe('(method): getContentEl', () => {
190
+ it.skip(' ', () => {
191
+ //
192
+ })
193
+ })
194
+ })
195
+ })
@@ -45,6 +45,7 @@ $field-transition-label-right-up: .324s cubic-bezier(.4,0,.2,1)
45
45
  line-height: 1
46
46
  color: rgba(0,0,0,.54)
47
47
  padding: 8px 12px 0
48
+ backface-visibility: hidden
48
49
 
49
50
  &--animated
50
51
  transform: translateY(100%)
@@ -190,6 +191,7 @@ $field-transition-label-right-up: .324s cubic-bezier(.4,0,.2,1)
190
191
  text-transform: inherit
191
192
  transform-origin: left top
192
193
  transition: transform $field-transition, max-width $field-transition-label-right-up
194
+ backface-visibility: hidden
193
195
 
194
196
  &--float .q-field__label
195
197
  max-width: 133%
@@ -33,7 +33,7 @@ export default createComponent({
33
33
  ? shouldFocus
34
34
  : props.noErrorFocus !== true
35
35
 
36
- validateIndex++
36
+ const index = ++validateIndex
37
37
 
38
38
  const emitEvent = (res, ref) => {
39
39
  emit('validation-' + (res === true ? 'success' : 'error'), ref)
@@ -47,7 +47,7 @@ export default createComponent({
47
47
  promises.push(
48
48
  valid.then(
49
49
  valid => ({ valid, comp }),
50
- error => ({ valid: false, comp, error })
50
+ err => ({ valid: false, comp, err })
51
51
  )
52
52
  )
53
53
  }
@@ -71,34 +71,33 @@ export default createComponent({
71
71
  return Promise.resolve(true)
72
72
  }
73
73
 
74
- const index = validateIndex
75
-
76
- return Promise.all(promises).then(
77
- res => {
78
- if (index === validateIndex) {
79
- const errors = res.filter(r => r.valid !== true)
74
+ return Promise.all(promises).then(res => {
75
+ const errors = res.filter(r => r.valid !== true)
80
76
 
81
- if (errors.length === 0) {
82
- emitEvent(true)
83
- return true
84
- }
77
+ if (errors.length === 0) {
78
+ index === validateIndex && emitEvent(true)
79
+ return true
80
+ }
85
81
 
86
- const { valid, comp } = errors[ 0 ]
82
+ const { valid, comp, err } = errors[ 0 ]
87
83
 
88
- emitEvent(false, comp)
84
+ // if not outdated already
85
+ if (index === validateIndex) {
86
+ err !== void 0 && console.error(err)
89
87
 
90
- if (
91
- focus === true
92
- && valid !== true
93
- && typeof comp.focus === 'function'
94
- ) {
95
- comp.focus()
96
- }
88
+ emitEvent(false, comp)
97
89
 
98
- return false
90
+ if (
91
+ focus === true
92
+ && valid !== true
93
+ && typeof comp.focus === 'function'
94
+ ) {
95
+ comp.focus()
99
96
  }
100
97
  }
101
- )
98
+
99
+ return false
100
+ })
102
101
  }
103
102
 
104
103
  function resetValidation () {
@@ -112,8 +111,11 @@ export default createComponent({
112
111
  function submit (evt) {
113
112
  evt !== void 0 && stopAndPrevent(evt)
114
113
 
114
+ const index = validateIndex + 1
115
+
115
116
  validate().then(val => {
116
- if (val === true) {
117
+ // if not outdated && validation succeeded
118
+ if (index === validateIndex && val === true) {
117
119
  if (props.onSubmit !== void 0) {
118
120
  emit('submit', evt)
119
121
  }
@@ -125,6 +125,15 @@ export default createComponent({
125
125
  return attrs
126
126
  })
127
127
 
128
+ // some browsers lose the native input value
129
+ // so we need to reattach it dynamically
130
+ // (like type="password" <-> type="text"; see #12078)
131
+ watch(() => props.type, () => {
132
+ if (inputRef.value) {
133
+ inputRef.value.value = props.modelValue
134
+ }
135
+ })
136
+
128
137
  watch(() => props.modelValue, v => {
129
138
  if (hasMask.value === true) {
130
139
  if (stopValueWatcher === true) {
@@ -0,0 +1,105 @@
1
+ describe('Input API', () => {
2
+ describe('Props', () => {
3
+ describe('Category: content', () => {
4
+ describe('(prop): shadow-text', () => {
5
+ it.skip(' ', () => {
6
+ //
7
+ })
8
+ })
9
+
10
+ describe('(prop): autogrow', () => {
11
+ it.skip(' ', () => {
12
+ //
13
+ })
14
+ })
15
+ })
16
+
17
+ describe('Category: general', () => {
18
+ describe('(prop): type', () => {
19
+ it.skip(' ', () => {
20
+ //
21
+ })
22
+ })
23
+ })
24
+
25
+ describe('Category: model', () => {
26
+ describe('(prop): model-value', () => {
27
+ it.skip(' ', () => {
28
+ //
29
+ })
30
+ })
31
+
32
+ describe('(prop): debounce', () => {
33
+ it.skip(' ', () => {
34
+ //
35
+ })
36
+ })
37
+
38
+ describe('(prop): maxlength', () => {
39
+ it.skip(' ', () => {
40
+ //
41
+ })
42
+ })
43
+ })
44
+
45
+ describe('Category: style', () => {
46
+ describe('(prop): input-class', () => {
47
+ it.skip(' ', () => {
48
+ //
49
+ })
50
+ })
51
+
52
+ describe('(prop): input-style', () => {
53
+ it.skip(' ', () => {
54
+ //
55
+ })
56
+ })
57
+ })
58
+ })
59
+
60
+ describe('Events', () => {
61
+ describe('(event): update:model-value', () => {
62
+ it.skip(' ', () => {
63
+ //
64
+ })
65
+ })
66
+
67
+ describe('(event): focus', () => {
68
+ it.skip(' ', () => {
69
+ //
70
+ })
71
+ })
72
+
73
+ describe('(event): blur', () => {
74
+ it.skip(' ', () => {
75
+ //
76
+ })
77
+ })
78
+ })
79
+
80
+ describe('Methods', () => {
81
+ describe('(method): focus', () => {
82
+ it.skip(' ', () => {
83
+ //
84
+ })
85
+ })
86
+
87
+ describe('(method): blur', () => {
88
+ it.skip(' ', () => {
89
+ //
90
+ })
91
+ })
92
+
93
+ describe('(method): select', () => {
94
+ it.skip(' ', () => {
95
+ //
96
+ })
97
+ })
98
+
99
+ describe('(method): getNativeElement', () => {
100
+ it.skip(' ', () => {
101
+ //
102
+ })
103
+ })
104
+ })
105
+ })
@@ -0,0 +1,29 @@
1
+ describe('use-mask API', () => {
2
+ describe('Props', () => {
3
+ describe('Category: behavior', () => {
4
+ describe('(prop): mask', () => {
5
+ it.skip(' ', () => {
6
+ //
7
+ })
8
+ })
9
+
10
+ describe('(prop): fill-mask', () => {
11
+ it.skip(' ', () => {
12
+ //
13
+ })
14
+ })
15
+
16
+ describe('(prop): reverse-fill-mask', () => {
17
+ it.skip(' ', () => {
18
+ //
19
+ })
20
+ })
21
+
22
+ describe('(prop): unmasked-value', () => {
23
+ it.skip(' ', () => {
24
+ //
25
+ })
26
+ })
27
+ })
28
+ })
29
+ })