quasar 2.7.1 → 2.7.4

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 (159) hide show
  1. package/dist/api/QDialog.json +6 -0
  2. package/dist/api/QPagination.json +1 -1
  3. package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
  4. package/dist/icon-set/eva-icons.umd.prod.js +1 -1
  5. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
  6. package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
  7. package/dist/icon-set/fontawesome-v6-pro.umd.prod.js +1 -1
  8. package/dist/icon-set/fontawesome-v6.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/material-symbols-outlined.umd.prod.js +2 -2
  16. package/dist/icon-set/material-symbols-rounded.umd.prod.js +1 -1
  17. package/dist/icon-set/material-symbols-sharp.umd.prod.js +1 -1
  18. package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
  19. package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
  20. package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
  21. package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
  22. package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
  23. package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
  24. package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
  25. package/dist/icon-set/svg-fontawesome-v6.umd.prod.js +1 -1
  26. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
  27. package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
  28. package/dist/icon-set/svg-ionicons-v6.umd.prod.js +2 -2
  29. package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
  30. package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
  31. package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
  32. package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
  33. package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
  34. package/dist/icon-set/svg-material-symbols-outlined.umd.prod.js +2 -2
  35. package/dist/icon-set/svg-material-symbols-rounded.umd.prod.js +1 -1
  36. package/dist/icon-set/svg-material-symbols-sharp.umd.prod.js +1 -1
  37. package/dist/icon-set/svg-mdi-v6.umd.prod.js +1 -1
  38. package/dist/icon-set/svg-themify.umd.prod.js +1 -1
  39. package/dist/icon-set/themify.umd.prod.js +1 -1
  40. package/dist/lang/ar-TN.umd.prod.js +1 -1
  41. package/dist/lang/ar.umd.prod.js +1 -1
  42. package/dist/lang/az-Latn.umd.prod.js +1 -1
  43. package/dist/lang/bg.umd.prod.js +1 -1
  44. package/dist/lang/bn.umd.prod.js +1 -1
  45. package/dist/lang/ca.umd.prod.js +2 -2
  46. package/dist/lang/cs.umd.prod.js +1 -1
  47. package/dist/lang/da.umd.prod.js +1 -1
  48. package/dist/lang/de.umd.prod.js +1 -1
  49. package/dist/lang/el.umd.prod.js +1 -1
  50. package/dist/lang/en-GB.umd.prod.js +1 -1
  51. package/dist/lang/en-US.umd.prod.js +1 -1
  52. package/dist/lang/eo.umd.prod.js +1 -1
  53. package/dist/lang/es.umd.prod.js +1 -1
  54. package/dist/lang/et.umd.prod.js +1 -1
  55. package/dist/lang/eu.umd.prod.js +1 -1
  56. package/dist/lang/fa-IR.umd.prod.js +1 -1
  57. package/dist/lang/fa.umd.prod.js +1 -1
  58. package/dist/lang/fi.umd.prod.js +1 -1
  59. package/dist/lang/fr.umd.prod.js +1 -1
  60. package/dist/lang/gn.umd.prod.js +1 -1
  61. package/dist/lang/he.umd.prod.js +1 -1
  62. package/dist/lang/hr.umd.prod.js +1 -1
  63. package/dist/lang/hu.umd.prod.js +1 -1
  64. package/dist/lang/id.umd.prod.js +1 -1
  65. package/dist/lang/is.umd.prod.js +1 -1
  66. package/dist/lang/it.umd.prod.js +1 -1
  67. package/dist/lang/ja.umd.prod.js +1 -1
  68. package/dist/lang/km.umd.prod.js +1 -1
  69. package/dist/lang/ko-KR.umd.prod.js +2 -2
  70. package/dist/lang/kur-CKB.umd.prod.js +1 -1
  71. package/dist/lang/kz.umd.prod.js +1 -1
  72. package/dist/lang/lt.umd.prod.js +1 -1
  73. package/dist/lang/lu.umd.prod.js +1 -1
  74. package/dist/lang/lv.umd.prod.js +1 -1
  75. package/dist/lang/ml.umd.prod.js +1 -1
  76. package/dist/lang/mm.umd.prod.js +1 -1
  77. package/dist/lang/ms.umd.prod.js +1 -1
  78. package/dist/lang/my.umd.prod.js +1 -1
  79. package/dist/lang/nb-NO.umd.prod.js +1 -1
  80. package/dist/lang/nl.umd.prod.js +1 -1
  81. package/dist/lang/pl.umd.prod.js +1 -1
  82. package/dist/lang/pt-BR.umd.prod.js +1 -1
  83. package/dist/lang/pt.umd.prod.js +1 -1
  84. package/dist/lang/ro.umd.prod.js +1 -1
  85. package/dist/lang/ru.umd.prod.js +1 -1
  86. package/dist/lang/sk.umd.prod.js +1 -1
  87. package/dist/lang/sl.umd.prod.js +1 -1
  88. package/dist/lang/sm.umd.prod.js +6 -0
  89. package/dist/lang/sr-CYR.umd.prod.js +1 -1
  90. package/dist/lang/sr.umd.prod.js +1 -1
  91. package/dist/lang/sv.umd.prod.js +1 -1
  92. package/dist/lang/ta.umd.prod.js +1 -1
  93. package/dist/lang/th.umd.prod.js +1 -1
  94. package/dist/lang/tr.umd.prod.js +1 -1
  95. package/dist/lang/ug.umd.prod.js +1 -1
  96. package/dist/lang/uk.umd.prod.js +1 -1
  97. package/dist/lang/uz-Cyrl.umd.prod.js +6 -0
  98. package/dist/lang/uz-Latn.umd.prod.js +6 -0
  99. package/dist/lang/vi.umd.prod.js +1 -1
  100. package/dist/lang/zh-CN.umd.prod.js +1 -1
  101. package/dist/lang/zh-TW.umd.prod.js +1 -1
  102. package/dist/quasar.cjs.prod.js +2 -2
  103. package/dist/quasar.css +10 -3
  104. package/dist/quasar.esm.prod.js +2 -2
  105. package/dist/quasar.prod.css +1 -1
  106. package/dist/quasar.rtl.css +11 -3
  107. package/dist/quasar.rtl.prod.css +1 -1
  108. package/dist/quasar.sass +10 -4
  109. package/dist/quasar.umd.js +77 -55
  110. package/dist/quasar.umd.prod.js +2 -2
  111. package/dist/types/index.d.ts +8 -1
  112. package/dist/vetur/quasar-attributes.json +4 -0
  113. package/dist/vetur/quasar-tags.json +2 -1
  114. package/dist/web-types/web-types.json +12 -2
  115. package/icon-set/material-symbols-outlined.js +87 -87
  116. package/icon-set/material-symbols-outlined.mjs +87 -87
  117. package/icon-set/svg-ionicons-v6.js +14 -15
  118. package/icon-set/svg-ionicons-v6.mjs +14 -15
  119. package/icon-set/svg-material-symbols-outlined.js +151 -151
  120. package/icon-set/svg-material-symbols-outlined.mjs +151 -151
  121. package/lang/ca.js +31 -31
  122. package/lang/ca.mjs +31 -31
  123. package/lang/index.json +12 -0
  124. package/lang/ko-KR.js +21 -21
  125. package/lang/ko-KR.mjs +21 -21
  126. package/lang/sm.js +96 -0
  127. package/lang/sm.mjs +91 -0
  128. package/lang/uz-Cyrl.js +98 -0
  129. package/lang/uz-Cyrl.mjs +93 -0
  130. package/lang/uz-Latn.js +102 -0
  131. package/lang/uz-Latn.mjs +97 -0
  132. package/package.json +11 -11
  133. package/src/components/dialog/QDialog.js +3 -1
  134. package/src/components/dialog/QDialog.json +7 -0
  135. package/src/components/file/QFile.js +6 -1
  136. package/src/components/icon/QIcon.sass +3 -2
  137. package/src/components/img/QImg.sass +1 -0
  138. package/src/components/input/QInput.js +7 -1
  139. package/src/components/menu/__tests__/QMenu.spec.js +23 -23
  140. package/src/components/pagination/QPagination.json +1 -1
  141. package/src/components/scroll-area/QScrollArea.js +4 -2
  142. package/src/components/select/QSelect.js +28 -18
  143. package/src/components/select/__tests__/QSelect.spec.js +427 -451
  144. package/src/components/table/QTable.js +0 -1
  145. package/src/components/table/QTable.sass +1 -1
  146. package/src/components/timeline/QTimeline.sass +4 -0
  147. package/src/components/uploader/uploader-core.js +1 -0
  148. package/src/components/virtual-scroll/use-virtual-scroll.js +6 -1
  149. package/src/composables/private/__tests__/use-anchor.spec.js +6 -6
  150. package/src/composables/private/__tests__/use-field.spec.js +7 -7
  151. package/src/composables/private/__tests__/use-model-toggle.spec.js +18 -17
  152. package/src/composables/private/__tests__/use-transition.spec.js +5 -5
  153. package/src/composables/private/__tests__/use-validate.spec.js +4 -4
  154. package/src/composables/private/use-anchor.js +1 -1
  155. package/src/composables/private/use-field.js +1 -1
  156. package/src/composables/private/use-key-composition.js +10 -14
  157. package/src/directives/Ripple.js +5 -9
  158. package/src/utils/date.js +2 -2
  159. package/src/components/select/__tests__/WrapperOne.vue +0 -28
@@ -152,7 +152,6 @@ export default createComponent({
152
152
 
153
153
  const __containerClass = computed(() =>
154
154
  `q-table__container q-table--${ props.separator }-separator column no-wrap`
155
- + (props.loading === true ? ' q-table--loading' : '')
156
155
  + (props.grid === true ? ' q-table--grid' : cardDefaultClass.value)
157
156
  + (isDark.value === true ? ' q-table--dark' : '')
158
157
  + (props.dense === true ? ' q-table--dense' : '')
@@ -183,7 +183,7 @@
183
183
  * Separators
184
184
  */
185
185
  .q-table--horizontal-separator, .q-table--cell-separator
186
- thead th, tbody tr:not(:last-child) td
186
+ thead th, tbody tr:not(:last-child) > td
187
187
  border-bottom-width: 1px
188
188
 
189
189
  .q-table--vertical-separator, .q-table--cell-separator
@@ -60,6 +60,10 @@
60
60
  line-height: 38px
61
61
  width: 100%
62
62
  color: #fff
63
+ > svg,
64
+ > img
65
+ width: 1em
66
+ height: 1em
63
67
 
64
68
  &__dot-img
65
69
  position: absolute
@@ -149,6 +149,7 @@ export function getRenderer (getPlugin) {
149
149
  + (props.square === true ? ' q-uploader--square no-border-radius' : '')
150
150
  + (props.flat === true ? ' q-uploader--flat no-shadow' : '')
151
151
  + (props.disable === true ? ' disabled q-uploader--disable' : '')
152
+ + (dnd.value === true ? ' q-uploader--dnd' : '')
152
153
  )
153
154
 
154
155
  const colorClass = computed(() =>
@@ -20,7 +20,12 @@ const filterProto = Array.prototype.filter
20
20
  const setOverflowAnchor = __QUASAR_SSR__ || window.getComputedStyle(document.body).overflowAnchor === void 0
21
21
  ? noop
22
22
  : function (contentEl, index) {
23
- requestAnimationFrame(() => {
23
+ if (contentEl === null) {
24
+ return
25
+ }
26
+
27
+ cancelAnimationFrame(contentEl._qOverflowAnimationFrame)
28
+ contentEl._qOverflowAnimationFrame = requestAnimationFrame(() => {
24
29
  if (contentEl === null) {
25
30
  return
26
31
  }
@@ -7,7 +7,7 @@ describe('use-anchor API', () => {
7
7
  describe('(prop): target', () => {
8
8
  it('should use another target using a CSS selector', () => {
9
9
  mount(WrapperOne, {
10
- attrs: {
10
+ props: {
11
11
  target: '.other-target'
12
12
  }
13
13
  })
@@ -27,7 +27,7 @@ describe('use-anchor API', () => {
27
27
 
28
28
  it('should not show when target is false', () => {
29
29
  mount(WrapperOne, {
30
- attrs: {
30
+ props: {
31
31
  target: false
32
32
  }
33
33
  })
@@ -42,7 +42,7 @@ describe('use-anchor API', () => {
42
42
  describe('(prop): no-parent-event', () => {
43
43
  it('should not show when clicking parent with no-parent-event true', () => {
44
44
  mount(WrapperOne, {
45
- attrs: {
45
+ props: {
46
46
  'no-parent-event': true
47
47
  }
48
48
  })
@@ -55,7 +55,7 @@ describe('use-anchor API', () => {
55
55
 
56
56
  it('should show when clicking parent with no-parent-event false', () => {
57
57
  mount(WrapperOne, {
58
- attrs: {
58
+ props: {
59
59
  'no-parent-event': false
60
60
  }
61
61
  })
@@ -70,7 +70,7 @@ describe('use-anchor API', () => {
70
70
  describe('(prop): context-menu', () => {
71
71
  it('should not show when left clicking parent', () => {
72
72
  mount(WrapperOne, {
73
- attrs: {
73
+ props: {
74
74
  'context-menu': true
75
75
  }
76
76
  })
@@ -83,7 +83,7 @@ describe('use-anchor API', () => {
83
83
 
84
84
  it('should show when right clicking parent', () => {
85
85
  mount(WrapperOne, {
86
- attrs: {
86
+ props: {
87
87
  'context-menu': true
88
88
  }
89
89
  })
@@ -42,7 +42,7 @@ describe('use-field API', () => {
42
42
  it('should show the label when supplied', () => {
43
43
  const label = 'Select something'
44
44
  mount(FieldWrapper, {
45
- attrs: {
45
+ props: {
46
46
  label
47
47
  }
48
48
  })
@@ -53,7 +53,7 @@ describe('use-field API', () => {
53
53
  it('should show the label centered when not focused', () => {
54
54
  const label = 'Select something'
55
55
  mount(FieldWrapper, {
56
- attrs: {
56
+ props: {
57
57
  label
58
58
  }
59
59
  })
@@ -66,7 +66,7 @@ describe('use-field API', () => {
66
66
  it('should show the label stacked when focused', () => {
67
67
  const label = 'Select something'
68
68
  mount(FieldWrapper, {
69
- attrs: {
69
+ props: {
70
70
  label
71
71
  }
72
72
  })
@@ -82,7 +82,7 @@ describe('use-field API', () => {
82
82
  it('should show the label stacked', () => {
83
83
  const label = 'Select something'
84
84
  mount(FieldWrapper, {
85
- attrs: {
85
+ props: {
86
86
  label,
87
87
  stackLabel: true
88
88
  }
@@ -97,7 +97,7 @@ describe('use-field API', () => {
97
97
  it('should show a hint text', () => {
98
98
  const hint = 'Select something'
99
99
  mount(FieldWrapper, {
100
- attrs: {
100
+ props: {
101
101
  hint
102
102
  }
103
103
  })
@@ -110,7 +110,7 @@ describe('use-field API', () => {
110
110
  it('should not show a hint text when not focused', () => {
111
111
  const hint = 'Select something'
112
112
  mount(FieldWrapper, {
113
- attrs: {
113
+ props: {
114
114
  hint,
115
115
  hideHint: true
116
116
  }
@@ -121,7 +121,7 @@ describe('use-field API', () => {
121
121
  it('should show a hint text when focused', () => {
122
122
  const hint = 'Select something'
123
123
  mount(FieldWrapper, {
124
- attrs: {
124
+ props: {
125
125
  hint,
126
126
  hideHint: true
127
127
  }
@@ -3,40 +3,41 @@ import { mount } from '@cypress/vue'
3
3
  import WrapperOne from './../../../components/menu/__tests__/WrapperOne.vue'
4
4
  import WrapperTwo from './../../../components/menu/__tests__/WrapperTwo.vue'
5
5
  import { ref } from 'vue'
6
+ import { vModelAdapter } from '../../../../test/cypress/helpers/v-model-adapter'
6
7
 
7
8
  describe('use-model-toggle API', () => {
8
9
  describe('Props', () => {
9
10
  describe('Category: model', () => {
10
11
  describe('(prop): model-value', () => {
11
12
  it('should open the dialog when modifying the model-value', () => {
12
- const modelValue = ref(false)
13
+ const model = ref(false)
13
14
  mount(WrapperOne, {
14
- attrs: {
15
- modelValue
15
+ props: {
16
+ ...vModelAdapter(model)
16
17
  }
17
18
  })
18
19
  cy.dataCy('wrapper')
19
20
  cy.dataCy('menu')
20
21
  .should('not.exist')
21
22
  .then(() => {
22
- modelValue.value = true
23
+ model.value = true
23
24
  cy.dataCy('menu')
24
25
  .should('exist')
25
26
  })
26
27
  })
27
28
 
28
29
  it('should close the dialog when modifying the model-value', () => {
29
- const modelValue = ref(true)
30
+ const model = ref(true)
30
31
  mount(WrapperOne, {
31
- attrs: {
32
- modelValue
32
+ props: {
33
+ ...vModelAdapter(model)
33
34
  }
34
35
  })
35
36
  cy.dataCy('wrapper')
36
37
  cy.dataCy('menu')
37
38
  .should('exist')
38
39
  .then(() => {
39
- modelValue.value = false
40
+ model.value = false
40
41
  cy.dataCy('menu')
41
42
  .should('not.exist')
42
43
  })
@@ -50,7 +51,7 @@ describe('use-model-toggle API', () => {
50
51
  it('should emit @update:model-value event when state changes', () => {
51
52
  const fn = cy.stub()
52
53
  mount(WrapperOne, {
53
- attrs: {
54
+ props: {
54
55
  'onUpdate:modelValue': fn
55
56
  }
56
57
  })
@@ -70,7 +71,7 @@ describe('use-model-toggle API', () => {
70
71
  it('should emit @show event when menu is triggered by parent', () => {
71
72
  const fn = cy.stub()
72
73
  mount(WrapperOne, {
73
- attrs: {
74
+ props: {
74
75
  onShow: fn
75
76
  }
76
77
  })
@@ -89,7 +90,7 @@ describe('use-model-toggle API', () => {
89
90
  it('should emit @show event when component is triggered with the show() method', () => {
90
91
  const fn = cy.stub()
91
92
  mount(WrapperOne, {
92
- attrs: {
93
+ props: {
93
94
  onShow: fn
94
95
  }
95
96
  })
@@ -111,7 +112,7 @@ describe('use-model-toggle API', () => {
111
112
  it('should emit @before-show event when menu is triggered by parent', () => {
112
113
  const fn = cy.stub()
113
114
  mount(WrapperOne, {
114
- attrs: {
115
+ props: {
115
116
  onBeforeShow: fn
116
117
  }
117
118
  })
@@ -129,7 +130,7 @@ describe('use-model-toggle API', () => {
129
130
  it('should emit @before-show event when component is triggered with the show() method', () => {
130
131
  const fn = cy.stub()
131
132
  mount(WrapperOne, {
132
- attrs: {
133
+ props: {
133
134
  onBeforeShow: fn
134
135
  }
135
136
  })
@@ -150,7 +151,7 @@ describe('use-model-toggle API', () => {
150
151
  it('should emit @hide event when menu is triggered by parent', () => {
151
152
  const fn = cy.stub()
152
153
  mount(WrapperOne, {
153
- attrs: {
154
+ props: {
154
155
  onHide: fn
155
156
  }
156
157
  })
@@ -175,7 +176,7 @@ describe('use-model-toggle API', () => {
175
176
  it('should emit @hide event when component is triggered with the show() method', () => {
176
177
  const fn = cy.stub()
177
178
  mount(WrapperOne, {
178
- attrs: {
179
+ props: {
179
180
  onHide: fn
180
181
  }
181
182
  })
@@ -203,7 +204,7 @@ describe('use-model-toggle API', () => {
203
204
  it('should emit @before-hide event when menu is triggered by parent', () => {
204
205
  const fn = cy.stub()
205
206
  mount(WrapperOne, {
206
- attrs: {
207
+ props: {
207
208
  onBeforeHide: fn
208
209
  }
209
210
  })
@@ -228,7 +229,7 @@ describe('use-model-toggle API', () => {
228
229
  it('should emit @before-hide event when component is triggered with the show() method', () => {
229
230
  const fn = cy.stub()
230
231
  mount(WrapperOne, {
231
- attrs: {
232
+ props: {
232
233
  onBeforeHide: fn
233
234
  }
234
235
  })
@@ -16,7 +16,7 @@ describe('use-transition API', () => {
16
16
  it('should use a different show transition if defined', () => {
17
17
  const transition = 'scale'
18
18
  mount(WrapperOne, {
19
- attrs: {
19
+ props: {
20
20
  transitionShow: transition
21
21
  }
22
22
  })
@@ -43,7 +43,7 @@ describe('use-transition API', () => {
43
43
  it('should use a different hide transition if defined', () => {
44
44
  const transition = 'scale'
45
45
  mount(WrapperOne, {
46
- attrs: {
46
+ props: {
47
47
  transitionHide: transition
48
48
  }
49
49
  })
@@ -64,7 +64,7 @@ describe('use-transition API', () => {
64
64
  cy.dataCy('wrapper')
65
65
  .click()
66
66
  .wait(300)
67
- cy.dataCy('menu', { timeout: 0 }) // Disable retry
67
+ cy.dataCy('menu', { timeout: 350 })
68
68
  .should('not.have.class', 'q-transition--fade-enter-active')
69
69
  })
70
70
 
@@ -79,7 +79,7 @@ describe('use-transition API', () => {
79
79
 
80
80
  it('should be done after a custom 1000ms passed', () => {
81
81
  mount(WrapperOne, {
82
- attrs: {
82
+ props: {
83
83
  transitionDuration: 1000
84
84
  }
85
85
  })
@@ -92,7 +92,7 @@ describe('use-transition API', () => {
92
92
 
93
93
  it('should not be done before a custom 1000ms passed', () => {
94
94
  mount(WrapperOne, {
95
- attrs: {
95
+ props: {
96
96
  transitionDuration: 1000
97
97
  }
98
98
  })
@@ -37,7 +37,7 @@ describe('use-validate API', () => {
37
37
  it('should show an error-message when error is true', () => {
38
38
  const message = 'Please select something'
39
39
  mount(FieldWrapper, {
40
- attrs: {
40
+ props: {
41
41
  error: true,
42
42
  errorMessage: message
43
43
  }
@@ -49,7 +49,7 @@ describe('use-validate API', () => {
49
49
  it('should not show an error-message when error is false', () => {
50
50
  const message = 'Please select something'
51
51
  mount(FieldWrapper, {
52
- attrs: {
52
+ props: {
53
53
  error: false,
54
54
  errorMessage: message
55
55
  }
@@ -62,7 +62,7 @@ describe('use-validate API', () => {
62
62
  describe('(prop): no-error-icon', () => {
63
63
  it('should not show an error icon when error is true', () => {
64
64
  mount(FieldWrapper, {
65
- attrs: {
65
+ props: {
66
66
  error: true,
67
67
  noErrorIcon: true
68
68
  }
@@ -74,7 +74,7 @@ describe('use-validate API', () => {
74
74
 
75
75
  it('should show an error icon when error is true an no-error-icon is false', () => {
76
76
  mount(FieldWrapper, {
77
- attrs: {
77
+ props: {
78
78
  error: true,
79
79
  noErrorIcon: false
80
80
  }
@@ -137,7 +137,7 @@ export default function ({
137
137
  }
138
138
 
139
139
  function pickAnchorEl () {
140
- if (props.target === false || props.target === '') {
140
+ if (props.target === false || props.target === '' || proxy.$el.parentNode === null) {
141
141
  anchorEl.value = null
142
142
  }
143
143
  else if (props.target === true) {
@@ -556,7 +556,7 @@ export default function (state) {
556
556
  const labelAttrs = state.getControl === void 0 && slots.control === void 0
557
557
  ? {
558
558
  ...state.splitAttrs.attributes.value,
559
- 'data-autofocus': props.autofocus,
559
+ 'data-autofocus': props.autofocus === true || void 0,
560
560
  ...attributes.value
561
561
  }
562
562
  : attributes.value
@@ -12,22 +12,18 @@ export default function (onInput) {
12
12
  e.target.qComposing = false
13
13
  onInput(e)
14
14
  }
15
- else if (e.type === 'compositionupdate') {
16
- if (
17
- e.target.qComposing !== true
18
- && typeof e.data === 'string'
19
- ) {
20
- const isComposing = client.is.firefox === true
21
- ? isPlainText.test(e.data) === false
22
- : isJapanese.test(e.data) === true && isChinese.test(e.data) === true && isKorean.test(e.data) === true
15
+ else if (
16
+ e.type === 'compositionupdate'
17
+ && e.target.qComposing !== true
18
+ && typeof e.data === 'string'
19
+ ) {
20
+ const isComposing = client.is.firefox === true
21
+ ? isPlainText.test(e.data) === false
22
+ : isJapanese.test(e.data) === true || isChinese.test(e.data) === true || isKorean.test(e.data) === true
23
23
 
24
- if (isComposing === true) {
25
- e.target.qComposing = true
26
- }
24
+ if (isComposing === true) {
25
+ e.target.qComposing = true
27
26
  }
28
27
  }
29
- else {
30
- e.target.qComposing = true
31
- }
32
28
  }
33
29
  }
@@ -61,8 +61,8 @@ function showRipple (evt, el, ctx, forceCenter) {
61
61
  }, 50)
62
62
  }
63
63
 
64
- function updateModifiers (ctx, { modifiers, value, arg, instance }) {
65
- const cfg = Object.assign({}, instance.$q.config.ripple, modifiers, value)
64
+ function updateModifiers (ctx, { modifiers, value, arg }) {
65
+ const cfg = Object.assign({}, ctx.cfg.ripple, modifiers, value)
66
66
  ctx.modifiers = {
67
67
  early: cfg.early === true,
68
68
  stop: cfg.stop === true,
@@ -79,6 +79,7 @@ export default createDirective(__QUASAR_SSR_SERVER__
79
79
 
80
80
  beforeMount (el, binding) {
81
81
  const ctx = {
82
+ cfg: binding.instance.$.appContext.config.globalProperties.$q.config,
82
83
  enabled: binding.value !== false,
83
84
  modifiers: {},
84
85
  abort: [],
@@ -87,11 +88,7 @@ export default createDirective(__QUASAR_SSR_SERVER__
87
88
  if (
88
89
  ctx.enabled === true
89
90
  && evt.qSkipRipple !== true
90
- && (
91
- ctx.modifiers.early === true
92
- ? [ 'mousedown', 'touchstart' ].includes(evt.type) === true
93
- : evt.type === 'click'
94
- )
91
+ && evt.type === (ctx.modifiers.early === true ? 'pointerdown' : 'click')
95
92
  ) {
96
93
  showRipple(evt, el, ctx, evt.qKeyEvent === true)
97
94
  }
@@ -114,8 +111,7 @@ export default createDirective(__QUASAR_SSR_SERVER__
114
111
  el.__qripple = ctx
115
112
 
116
113
  addEvt(ctx, 'main', [
117
- [ el, 'mousedown', 'start', 'passive' ],
118
- [ el, 'touchstart', 'start', 'passive' ],
114
+ [ el, 'pointerdown', 'start', 'passive' ],
119
115
  [ el, 'click', 'start', 'passive' ],
120
116
  [ el, 'keydown', 'keystart', 'passive' ],
121
117
  [ el, 'keyup', 'keystart', 'passive' ]
package/src/utils/date.js CHANGED
@@ -308,7 +308,7 @@ export function extractDate (str, mask, dateLocale) {
308
308
  const date = new Date(
309
309
  d.year,
310
310
  d.month === null ? null : d.month - 1,
311
- d.day,
311
+ d.day === null ? 1 : d.day,
312
312
  d.hour,
313
313
  d.minute,
314
314
  d.second,
@@ -737,7 +737,7 @@ const formatter = {
737
737
  YY (date, dateLocale, forcedYear) {
738
738
  // workaround for < 1900 with new Date()
739
739
  const y = this.YYYY(date, dateLocale, forcedYear) % 100
740
- return y > 0
740
+ return y >= 0
741
741
  ? pad(y)
742
742
  : '-' + pad(Math.abs(y))
743
743
  },
@@ -1,28 +0,0 @@
1
- <template>
2
- <div style="margin: 150px auto" class="row justify-center" data-cy="wrapper">
3
- <q-select
4
- data-cy="select"
5
- class="select-root"
6
- ref="compRef"
7
- v-bind="$attrs"
8
- style="min-width: 300px"
9
- >
10
- <template v-for="(_, slot) in $slots" v-slot:[slot]="scope">
11
- <slot :name="slot" v-bind="{ ...scope }" />
12
- </template>
13
- </q-select>
14
- </div>
15
- </template>
16
-
17
- <script>
18
- import { defineComponent, ref } from 'vue'
19
-
20
- export default defineComponent({
21
- inheritAttrs: false,
22
- setup () {
23
- const compRef = ref(null)
24
-
25
- return { compRef }
26
- }
27
- })
28
- </script>