quasar 2.6.6 → 2.7.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 +1 -0
- package/dist/api/QBtnToggle.json +1 -0
- package/dist/api/QCarousel.json +2 -1
- package/dist/api/QCheckbox.json +1 -0
- package/dist/api/QChip.json +3 -1
- package/dist/api/QColor.json +1 -0
- package/dist/api/QDate.json +1 -0
- package/dist/api/QDialog.json +6 -0
- package/dist/api/QEditor.json +3 -1
- package/dist/api/QExpansionItem.json +1 -0
- package/dist/api/QFab.json +1 -0
- package/dist/api/QFile.json +1 -0
- package/dist/api/QFooter.json +1 -0
- package/dist/api/QHeader.json +1 -0
- package/dist/api/QInput.json +1 -0
- package/dist/api/QItem.json +3 -1
- package/dist/api/QKnob.json +1 -0
- package/dist/api/QOptionGroup.json +1 -0
- package/dist/api/QPagination.json +2 -1
- package/dist/api/QPopupEdit.json +1 -0
- package/dist/api/QPopupProxy.json +1 -0
- package/dist/api/QRadio.json +1 -0
- package/dist/api/QRange.json +1 -0
- package/dist/api/QRating.json +1 -0
- package/dist/api/QSelect.json +1 -0
- package/dist/api/QSlider.json +1 -0
- package/dist/api/QSplitter.json +1 -0
- package/dist/api/QTable.json +5 -1
- package/dist/api/QTabs.json +1 -0
- package/dist/api/QTime.json +1 -0
- package/dist/api/QToggle.json +1 -0
- package/dist/api/QTree.json +6 -3
- package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
- package/dist/icon-set/eva-icons.umd.prod.js +1 -1
- package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
- package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
- package/dist/icon-set/fontawesome-v6-pro.umd.prod.js +1 -1
- package/dist/icon-set/fontawesome-v6.umd.prod.js +1 -1
- package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
- package/dist/icon-set/line-awesome.umd.prod.js +1 -1
- package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
- package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
- package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
- package/dist/icon-set/material-icons.umd.prod.js +1 -1
- package/dist/icon-set/material-symbols-outlined.umd.prod.js +6 -0
- package/dist/icon-set/material-symbols-rounded.umd.prod.js +6 -0
- package/dist/icon-set/material-symbols-sharp.umd.prod.js +6 -0
- package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
- package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
- package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
- package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
- package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
- package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
- package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
- package/dist/icon-set/svg-fontawesome-v6.umd.prod.js +1 -1
- package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
- package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
- package/dist/icon-set/svg-ionicons-v6.umd.prod.js +1 -1
- package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-symbols-outlined.umd.prod.js +6 -0
- package/dist/icon-set/svg-material-symbols-rounded.umd.prod.js +6 -0
- package/dist/icon-set/svg-material-symbols-sharp.umd.prod.js +6 -0
- package/dist/icon-set/svg-mdi-v6.umd.prod.js +1 -1
- package/dist/icon-set/svg-themify.umd.prod.js +1 -1
- package/dist/icon-set/themify.umd.prod.js +1 -1
- package/dist/lang/ar-TN.umd.prod.js +1 -1
- package/dist/lang/ar.umd.prod.js +1 -1
- package/dist/lang/az-Latn.umd.prod.js +1 -1
- package/dist/lang/bg.umd.prod.js +1 -1
- package/dist/lang/bn.umd.prod.js +1 -1
- package/dist/lang/ca.umd.prod.js +2 -2
- package/dist/lang/cs.umd.prod.js +1 -1
- package/dist/lang/da.umd.prod.js +1 -1
- package/dist/lang/de.umd.prod.js +1 -1
- package/dist/lang/el.umd.prod.js +1 -1
- package/dist/lang/en-GB.umd.prod.js +1 -1
- package/dist/lang/en-US.umd.prod.js +1 -1
- package/dist/lang/eo.umd.prod.js +1 -1
- package/dist/lang/es.umd.prod.js +2 -2
- package/dist/lang/et.umd.prod.js +1 -1
- package/dist/lang/eu.umd.prod.js +1 -1
- package/dist/lang/fa-IR.umd.prod.js +1 -1
- package/dist/lang/fa.umd.prod.js +1 -1
- package/dist/lang/fi.umd.prod.js +1 -1
- package/dist/lang/fr.umd.prod.js +1 -1
- package/dist/lang/gn.umd.prod.js +1 -1
- package/dist/lang/he.umd.prod.js +1 -1
- package/dist/lang/hr.umd.prod.js +1 -1
- package/dist/lang/hu.umd.prod.js +1 -1
- package/dist/lang/id.umd.prod.js +1 -1
- package/dist/lang/is.umd.prod.js +1 -1
- package/dist/lang/it.umd.prod.js +1 -1
- package/dist/lang/ja.umd.prod.js +1 -1
- package/dist/lang/km.umd.prod.js +1 -1
- package/dist/lang/ko-KR.umd.prod.js +2 -2
- package/dist/lang/kur-CKB.umd.prod.js +1 -1
- package/dist/lang/kz.umd.prod.js +1 -1
- package/dist/lang/lt.umd.prod.js +1 -1
- package/dist/lang/lu.umd.prod.js +1 -1
- package/dist/lang/lv.umd.prod.js +1 -1
- package/dist/lang/ml.umd.prod.js +1 -1
- package/dist/lang/mm.umd.prod.js +6 -0
- package/dist/lang/ms.umd.prod.js +1 -1
- package/dist/lang/my.umd.prod.js +1 -1
- package/dist/lang/nb-NO.umd.prod.js +1 -1
- package/dist/lang/nl.umd.prod.js +1 -1
- package/dist/lang/pl.umd.prod.js +1 -1
- package/dist/lang/pt-BR.umd.prod.js +1 -1
- package/dist/lang/pt.umd.prod.js +1 -1
- package/dist/lang/ro.umd.prod.js +1 -1
- package/dist/lang/ru.umd.prod.js +1 -1
- package/dist/lang/sk.umd.prod.js +1 -1
- package/dist/lang/sl.umd.prod.js +1 -1
- package/dist/lang/sm.umd.prod.js +6 -0
- package/dist/lang/sr-CYR.umd.prod.js +1 -1
- package/dist/lang/sr.umd.prod.js +1 -1
- package/dist/lang/sv.umd.prod.js +1 -1
- package/dist/lang/ta.umd.prod.js +1 -1
- package/dist/lang/th.umd.prod.js +1 -1
- package/dist/lang/tr.umd.prod.js +1 -1
- package/dist/lang/ug.umd.prod.js +1 -1
- package/dist/lang/uk.umd.prod.js +1 -1
- package/dist/lang/vi.umd.prod.js +1 -1
- package/dist/lang/zh-CN.umd.prod.js +1 -1
- package/dist/lang/zh-TW.umd.prod.js +1 -1
- package/dist/quasar.addon.rtl.css +251 -0
- package/dist/quasar.cjs.prod.js +2 -2
- package/dist/quasar.css +9 -9
- package/dist/quasar.esm.prod.js +2 -2
- package/dist/quasar.prod.css +1 -1
- package/dist/quasar.rtl.css +1229 -9
- package/dist/quasar.rtl.prod.css +1 -1
- package/dist/quasar.sass +10 -9
- package/dist/quasar.umd.js +182 -126
- package/dist/quasar.umd.prod.js +2 -2
- package/dist/types/api/quploader.d.ts +7 -7
- package/dist/types/extras/icon-set.d.ts +6 -0
- package/dist/types/index.d.ts +265 -255
- package/dist/types/utils/dom.d.ts +1 -1
- package/dist/types/utils.d.ts +11 -0
- package/dist/vetur/quasar-attributes.json +4 -0
- package/dist/vetur/quasar-tags.json +2 -1
- package/dist/web-types/web-types.json +12 -2
- package/icon-set/material-symbols-outlined.js +133 -0
- package/icon-set/material-symbols-outlined.mjs +128 -0
- package/icon-set/material-symbols-rounded.js +133 -0
- package/icon-set/material-symbols-rounded.mjs +128 -0
- package/icon-set/material-symbols-sharp.js +133 -0
- package/icon-set/material-symbols-sharp.mjs +128 -0
- package/icon-set/svg-material-symbols-outlined.js +201 -0
- package/icon-set/svg-material-symbols-outlined.mjs +201 -0
- package/icon-set/svg-material-symbols-rounded.js +201 -0
- package/icon-set/svg-material-symbols-rounded.mjs +201 -0
- package/icon-set/svg-material-symbols-sharp.js +201 -0
- package/icon-set/svg-material-symbols-sharp.mjs +201 -0
- package/lang/ca.js +31 -31
- package/lang/ca.mjs +31 -31
- package/lang/es.js +1 -1
- package/lang/es.mjs +1 -1
- package/lang/index.json +8 -0
- package/lang/ko-KR.js +21 -21
- package/lang/ko-KR.mjs +21 -21
- package/lang/mm.js +96 -0
- package/lang/mm.mjs +91 -0
- package/lang/sm.js +96 -0
- package/lang/sm.mjs +91 -0
- package/package.json +15 -15
- package/src/api.extends.json +1 -0
- package/src/components/avatar/__tests__/QAvatar.spec.js +1 -1
- package/src/components/badge/QBadge.js +2 -2
- package/src/components/badge/__tests__/QBadge.spec.js +1 -1
- package/src/components/btn/QBtn.js +2 -2
- package/src/components/checkbox/use-checkbox.js +8 -7
- package/src/components/dialog/QDialog.js +3 -1
- package/src/components/dialog/QDialog.json +7 -0
- package/src/components/editor/QEditor.js +11 -25
- package/src/components/file/QFile.js +6 -1
- package/src/components/icon/QIcon.js +24 -1
- package/src/components/icon/QIcon.sass +7 -3
- package/src/components/img/QImg.sass +1 -0
- package/src/components/infinite-scroll/QInfiniteScroll.js +10 -10
- package/src/components/input/QInput.js +6 -1
- package/src/components/item/QItem.js +5 -2
- package/src/components/item/QItem.json +2 -1
- package/src/components/layout/QLayout.js +2 -1
- package/src/components/menu/__tests__/QMenu.spec.js +23 -23
- package/src/components/pagination/QPagination.json +1 -1
- package/src/components/radio/QRadio.js +2 -2
- package/src/components/select/QSelect.js +28 -16
- package/src/components/select/__tests__/QSelect.spec.js +427 -451
- package/src/components/slider/use-slider.js +1 -1
- package/src/components/table/QTable.js +0 -1
- package/src/components/table/QTable.json +3 -0
- package/src/components/table/QTable.sass +1 -1
- package/src/components/tabs/QTabs.sass +0 -6
- package/src/components/uploader/uploader-core.js +23 -18
- package/src/components/virtual-scroll/use-virtual-scroll.js +9 -4
- package/src/composables/private/__tests__/use-anchor.spec.js +6 -6
- package/src/composables/private/__tests__/use-field.spec.js +7 -7
- package/src/composables/private/__tests__/use-model-toggle.spec.js +20 -19
- package/src/composables/private/__tests__/use-size.spec.js +2 -2
- package/src/composables/private/__tests__/use-transition.spec.js +5 -5
- package/src/composables/private/__tests__/use-validate.spec.js +5 -5
- package/src/composables/private/use-anchor.js +1 -1
- package/src/composables/private/use-field.js +2 -1
- package/src/composables/private/use-key-composition.js +16 -13
- package/src/directives/Ripple.js +2 -7
- package/src/utils/date.js +1 -1
- package/src/utils/private/global-dialog.js +22 -10
- package/src/components/select/__tests__/WrapperOne.vue +0 -28
|
@@ -135,6 +135,16 @@ export default createComponent({
|
|
|
135
135
|
|
|
136
136
|
if (isWorking.value === true) {
|
|
137
137
|
localScrollTarget.addEventListener('scroll', poll, passive)
|
|
138
|
+
|
|
139
|
+
if (props.reverse === true) {
|
|
140
|
+
const
|
|
141
|
+
scrollHeight = getScrollHeight(localScrollTarget),
|
|
142
|
+
containerHeight = height(localScrollTarget)
|
|
143
|
+
|
|
144
|
+
setVerticalScrollPosition(localScrollTarget, scrollHeight - containerHeight)
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
immediatePoll()
|
|
138
148
|
}
|
|
139
149
|
}
|
|
140
150
|
|
|
@@ -205,16 +215,6 @@ export default createComponent({
|
|
|
205
215
|
setDebounce(props.debounce)
|
|
206
216
|
|
|
207
217
|
updateScrollTarget()
|
|
208
|
-
|
|
209
|
-
if (props.reverse === true) {
|
|
210
|
-
const
|
|
211
|
-
scrollHeight = getScrollHeight(localScrollTarget),
|
|
212
|
-
containerHeight = height(localScrollTarget)
|
|
213
|
-
|
|
214
|
-
setVerticalScrollPosition(localScrollTarget, scrollHeight - containerHeight)
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
immediatePoll()
|
|
218
218
|
})
|
|
219
219
|
|
|
220
220
|
return () => {
|
|
@@ -208,7 +208,7 @@ export default createComponent({
|
|
|
208
208
|
}
|
|
209
209
|
|
|
210
210
|
function onInput (e) {
|
|
211
|
-
if (!e || !e.target || e.target.
|
|
211
|
+
if (!e || !e.target || e.target.qComposing === true) {
|
|
212
212
|
return
|
|
213
213
|
}
|
|
214
214
|
|
|
@@ -253,6 +253,8 @@ export default createComponent({
|
|
|
253
253
|
}
|
|
254
254
|
|
|
255
255
|
if (props.modelValue !== val && emitCachedValue !== val) {
|
|
256
|
+
emitCachedValue = val
|
|
257
|
+
|
|
256
258
|
stopWatcher === true && (stopValueWatcher = true)
|
|
257
259
|
emit('update:modelValue', val)
|
|
258
260
|
|
|
@@ -284,13 +286,16 @@ export default createComponent({
|
|
|
284
286
|
const inp = inputRef.value
|
|
285
287
|
if (inp !== null) {
|
|
286
288
|
const parentStyle = inp.parentNode.style
|
|
289
|
+
const { overflow } = inp.style
|
|
287
290
|
|
|
288
291
|
// reset height of textarea to a small size to detect the real height
|
|
289
292
|
// but keep the total control size the same
|
|
290
293
|
parentStyle.marginBottom = (inp.scrollHeight - 1) + 'px'
|
|
291
294
|
inp.style.height = '1px'
|
|
295
|
+
inp.style.overflow = 'hidden'
|
|
292
296
|
|
|
293
297
|
inp.style.height = inp.scrollHeight + 'px'
|
|
298
|
+
inp.style.overflow = overflow
|
|
294
299
|
parentStyle.marginBottom = ''
|
|
295
300
|
}
|
|
296
301
|
}
|
|
@@ -20,7 +20,10 @@ export default createComponent({
|
|
|
20
20
|
default: 'div'
|
|
21
21
|
},
|
|
22
22
|
|
|
23
|
-
active:
|
|
23
|
+
active: {
|
|
24
|
+
type: Boolean,
|
|
25
|
+
default: null
|
|
26
|
+
},
|
|
24
27
|
|
|
25
28
|
clickable: Boolean,
|
|
26
29
|
dense: Boolean,
|
|
@@ -58,7 +61,7 @@ export default createComponent({
|
|
|
58
61
|
+ (props.dense === true ? ' q-item--dense' : '')
|
|
59
62
|
+ (isDark.value === true ? ' q-item--dark' : '')
|
|
60
63
|
+ (
|
|
61
|
-
hasLink.value === true
|
|
64
|
+
hasLink.value === true && props.active === null
|
|
62
65
|
? linkClass.value
|
|
63
66
|
: (
|
|
64
67
|
props.active === true
|
|
@@ -231,7 +231,8 @@ export default createComponent({
|
|
|
231
231
|
const layout = h('div', {
|
|
232
232
|
class: classes.value,
|
|
233
233
|
style: style.value,
|
|
234
|
-
ref: props.container === true ? void 0 : rootRef
|
|
234
|
+
ref: props.container === true ? void 0 : rootRef,
|
|
235
|
+
tabindex: -1
|
|
235
236
|
}, content)
|
|
236
237
|
|
|
237
238
|
if (props.container === true) {
|
|
@@ -15,7 +15,7 @@ describe('Menu API', () => {
|
|
|
15
15
|
describe('(prop): touch-position', () => {
|
|
16
16
|
it('should show menu at the position of the click', () => {
|
|
17
17
|
mount(WrapperOne, {
|
|
18
|
-
|
|
18
|
+
props: {
|
|
19
19
|
'touch-position': true
|
|
20
20
|
}
|
|
21
21
|
})
|
|
@@ -71,7 +71,7 @@ describe('Menu API', () => {
|
|
|
71
71
|
|
|
72
72
|
it('should not close the menu when clicking outside the menu when persistent', () => {
|
|
73
73
|
mount(WrapperOne, {
|
|
74
|
-
|
|
74
|
+
props: {
|
|
75
75
|
persistent: true
|
|
76
76
|
}
|
|
77
77
|
})
|
|
@@ -89,7 +89,7 @@ describe('Menu API', () => {
|
|
|
89
89
|
|
|
90
90
|
it('should not close the menu when hitting the escape key when persistent', () => {
|
|
91
91
|
mount(WrapperOne, {
|
|
92
|
-
|
|
92
|
+
props: {
|
|
93
93
|
persistent: true
|
|
94
94
|
}
|
|
95
95
|
})
|
|
@@ -129,7 +129,7 @@ describe('Menu API', () => {
|
|
|
129
129
|
|
|
130
130
|
it('should close the menu when clicking a menu child without v-close-popup when auto-close is true', () => {
|
|
131
131
|
mount(WrapperOne, {
|
|
132
|
-
|
|
132
|
+
props: {
|
|
133
133
|
'auto-close': true
|
|
134
134
|
}
|
|
135
135
|
})
|
|
@@ -174,7 +174,7 @@ describe('Menu API', () => {
|
|
|
174
174
|
|
|
175
175
|
it('should not switch focus back to parent element when closing if no-refocus is true', () => {
|
|
176
176
|
mount(WrapperOne, {
|
|
177
|
-
|
|
177
|
+
props: {
|
|
178
178
|
'no-refocus': true
|
|
179
179
|
}
|
|
180
180
|
})
|
|
@@ -208,7 +208,7 @@ describe('Menu API', () => {
|
|
|
208
208
|
|
|
209
209
|
it('should no switch focus to the menu when opening with no-focus is true', () => {
|
|
210
210
|
mount(WrapperOne, {
|
|
211
|
-
|
|
211
|
+
props: {
|
|
212
212
|
'no-focus': true
|
|
213
213
|
}
|
|
214
214
|
})
|
|
@@ -226,7 +226,7 @@ describe('Menu API', () => {
|
|
|
226
226
|
describe('(prop): fit', () => {
|
|
227
227
|
it('should show a menu that matches the full with of the target when fit is supplied', () => {
|
|
228
228
|
mount(WrapperOne, {
|
|
229
|
-
|
|
229
|
+
props: {
|
|
230
230
|
target: '.other-target',
|
|
231
231
|
fit: true
|
|
232
232
|
}
|
|
@@ -245,7 +245,7 @@ describe('Menu API', () => {
|
|
|
245
245
|
|
|
246
246
|
it('should show a menu that not matches the full with of the target when fit is false', () => {
|
|
247
247
|
mount(WrapperOne, {
|
|
248
|
-
|
|
248
|
+
props: {
|
|
249
249
|
target: '.other-target',
|
|
250
250
|
fit: false
|
|
251
251
|
}
|
|
@@ -266,7 +266,7 @@ describe('Menu API', () => {
|
|
|
266
266
|
describe('(prop): cover', () => {
|
|
267
267
|
it('should show a menu that overlays the target when using cover', () => {
|
|
268
268
|
mount(WrapperOne, {
|
|
269
|
-
|
|
269
|
+
props: {
|
|
270
270
|
cover: true
|
|
271
271
|
}
|
|
272
272
|
})
|
|
@@ -279,7 +279,7 @@ describe('Menu API', () => {
|
|
|
279
279
|
|
|
280
280
|
it('should show a menu that overlays the target when using cover', () => {
|
|
281
281
|
mount(WrapperOne, {
|
|
282
|
-
|
|
282
|
+
props: {
|
|
283
283
|
cover: true,
|
|
284
284
|
target: '.other-target'
|
|
285
285
|
}
|
|
@@ -293,7 +293,7 @@ describe('Menu API', () => {
|
|
|
293
293
|
|
|
294
294
|
it('should ignore self property when using cover', () => {
|
|
295
295
|
mount(WrapperOne, {
|
|
296
|
-
|
|
296
|
+
props: {
|
|
297
297
|
cover: true,
|
|
298
298
|
self: 'center right',
|
|
299
299
|
target: '.other-target'
|
|
@@ -328,7 +328,7 @@ describe('Menu API', () => {
|
|
|
328
328
|
horizontalSelf.forEach((hS) => {
|
|
329
329
|
it(`should position Anchor(${ vA } ${ hA }) & Self(${ vS } ${ hS }) correctly`, () => {
|
|
330
330
|
mount(WrapperOne, {
|
|
331
|
-
|
|
331
|
+
props: {
|
|
332
332
|
anchor: `${ vA } ${ hA }`,
|
|
333
333
|
self: `${ vS } ${ hS }`
|
|
334
334
|
}
|
|
@@ -357,7 +357,7 @@ describe('Menu API', () => {
|
|
|
357
357
|
verticalSelf.forEach((vS) => {
|
|
358
358
|
it(`should offset vertical position Anchor(${ vA } left) & Self(${ vS } left) correctly`, () => {
|
|
359
359
|
mount(WrapperOne, {
|
|
360
|
-
|
|
360
|
+
props: {
|
|
361
361
|
anchor: `${ vA } left`,
|
|
362
362
|
self: `${ vS } left`,
|
|
363
363
|
offset: [ 0, 20 ]
|
|
@@ -378,7 +378,7 @@ describe('Menu API', () => {
|
|
|
378
378
|
horizontalSelf.forEach((hS) => {
|
|
379
379
|
it(`should offset horizontal position Anchor(top ${ hA }) & Self(top ${ hS }) correctly`, () => {
|
|
380
380
|
mount(WrapperOne, {
|
|
381
|
-
|
|
381
|
+
props: {
|
|
382
382
|
anchor: `top ${ hA }`,
|
|
383
383
|
self: `top ${ hS }`,
|
|
384
384
|
offset: [ 20, 0 ]
|
|
@@ -399,7 +399,7 @@ describe('Menu API', () => {
|
|
|
399
399
|
describe('(prop): dark', () => {
|
|
400
400
|
it('should set the --q-dark color as background and white text color', () => {
|
|
401
401
|
mount(WrapperOne, {
|
|
402
|
-
|
|
402
|
+
props: {
|
|
403
403
|
dark: true
|
|
404
404
|
}
|
|
405
405
|
})
|
|
@@ -414,7 +414,7 @@ describe('Menu API', () => {
|
|
|
414
414
|
describe('(prop): square', () => {
|
|
415
415
|
it('should not have border-radius when using this prop', () => {
|
|
416
416
|
mount(WrapperOne, {
|
|
417
|
-
|
|
417
|
+
props: {
|
|
418
418
|
square: true
|
|
419
419
|
}
|
|
420
420
|
})
|
|
@@ -429,7 +429,7 @@ describe('Menu API', () => {
|
|
|
429
429
|
it('should specify a max-height when setting this prop', () => {
|
|
430
430
|
const maxHeight = '30px'
|
|
431
431
|
mount(WrapperOne, {
|
|
432
|
-
|
|
432
|
+
props: {
|
|
433
433
|
maxHeight
|
|
434
434
|
}
|
|
435
435
|
})
|
|
@@ -444,7 +444,7 @@ describe('Menu API', () => {
|
|
|
444
444
|
it('should specify a max-width when setting this prop', () => {
|
|
445
445
|
const maxWidth = '30px'
|
|
446
446
|
mount(WrapperOne, {
|
|
447
|
-
|
|
447
|
+
props: {
|
|
448
448
|
maxWidth
|
|
449
449
|
}
|
|
450
450
|
})
|
|
@@ -470,7 +470,7 @@ describe('Menu API', () => {
|
|
|
470
470
|
it('should emit @escape-key event when escape key is pressed', () => {
|
|
471
471
|
const fn = cy.stub()
|
|
472
472
|
mount(WrapperOne, {
|
|
473
|
-
|
|
473
|
+
props: {
|
|
474
474
|
onEscapeKey: fn
|
|
475
475
|
}
|
|
476
476
|
})
|
|
@@ -493,7 +493,7 @@ describe('Menu API', () => {
|
|
|
493
493
|
it('should not emit @escape-key event when menu is persistent', () => {
|
|
494
494
|
const fn = cy.stub()
|
|
495
495
|
mount(WrapperOne, {
|
|
496
|
-
|
|
496
|
+
props: {
|
|
497
497
|
onEscapeKey: fn,
|
|
498
498
|
persistent: true
|
|
499
499
|
}
|
|
@@ -520,7 +520,7 @@ describe('Menu API', () => {
|
|
|
520
520
|
describe('(method): updatePosition', () => {
|
|
521
521
|
it('should reposition the menu when it is no longer in correct position', () => {
|
|
522
522
|
mount(WrapperTwo, {
|
|
523
|
-
|
|
523
|
+
props: {
|
|
524
524
|
anchor: 'bottom left',
|
|
525
525
|
self: 'bottom left'
|
|
526
526
|
}
|
|
@@ -564,7 +564,7 @@ describe('Menu API', () => {
|
|
|
564
564
|
describe('(method): focus', () => {
|
|
565
565
|
it('should focus the menu', () => {
|
|
566
566
|
mount(WrapperOne, {
|
|
567
|
-
|
|
567
|
+
props: {
|
|
568
568
|
'no-focus': true
|
|
569
569
|
}
|
|
570
570
|
})
|
|
@@ -586,7 +586,7 @@ describe('Menu API', () => {
|
|
|
586
586
|
|
|
587
587
|
it('should focus the autofocus element inside the menu', () => {
|
|
588
588
|
mount(WrapperTwo, {
|
|
589
|
-
|
|
589
|
+
props: {
|
|
590
590
|
'no-focus': true
|
|
591
591
|
}
|
|
592
592
|
})
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { h, ref, computed, getCurrentInstance } from 'vue'
|
|
1
|
+
import { h, ref, computed, getCurrentInstance, toRaw } from 'vue'
|
|
2
2
|
|
|
3
3
|
import QIcon from '../icon/QIcon.js'
|
|
4
4
|
|
|
@@ -64,7 +64,7 @@ export default createComponent({
|
|
|
64
64
|
const rootRef = ref(null)
|
|
65
65
|
const { refocusTargetEl, refocusTarget } = useRefocusTarget(props, rootRef)
|
|
66
66
|
|
|
67
|
-
const isTrue = computed(() => props.modelValue === props.val)
|
|
67
|
+
const isTrue = computed(() => toRaw(props.modelValue) === toRaw(props.val))
|
|
68
68
|
|
|
69
69
|
const classes = computed(() =>
|
|
70
70
|
'q-radio cursor-pointer no-outline row inline no-wrap items-center'
|
|
@@ -127,7 +127,7 @@ export default createComponent({
|
|
|
127
127
|
|
|
128
128
|
emits: [
|
|
129
129
|
...useFieldEmits,
|
|
130
|
-
'add', 'remove', 'input-value',
|
|
130
|
+
'add', 'remove', 'input-value', 'new-value',
|
|
131
131
|
'keyup', 'keypress', 'keydown',
|
|
132
132
|
'filter-abort'
|
|
133
133
|
],
|
|
@@ -165,7 +165,7 @@ export default createComponent({
|
|
|
165
165
|
|
|
166
166
|
const virtualScrollItemSizeComputed = computed(() => (
|
|
167
167
|
props.virtualScrollItemSize === void 0
|
|
168
|
-
? (props.
|
|
168
|
+
? (props.optionsDense === true ? 24 : 48)
|
|
169
169
|
: props.virtualScrollItemSize
|
|
170
170
|
))
|
|
171
171
|
|
|
@@ -175,7 +175,6 @@ export default createComponent({
|
|
|
175
175
|
localResetVirtualScroll,
|
|
176
176
|
padVirtualScroll,
|
|
177
177
|
onVirtualScrollEvt,
|
|
178
|
-
reset,
|
|
179
178
|
scrollTo,
|
|
180
179
|
setVirtualScrollSize
|
|
181
180
|
} = useVirtualScroll({
|
|
@@ -269,15 +268,23 @@ export default createComponent({
|
|
|
269
268
|
|
|
270
269
|
const tabindex = computed(() => (state.focused.value === true ? props.tabindex : -1))
|
|
271
270
|
|
|
272
|
-
const comboboxAttrs = computed(() =>
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
271
|
+
const comboboxAttrs = computed(() => {
|
|
272
|
+
const attrs = {
|
|
273
|
+
tabindex: props.tabindex,
|
|
274
|
+
role: 'combobox',
|
|
275
|
+
'aria-label': props.label,
|
|
276
|
+
'aria-autocomplete': props.useInput === true ? 'list' : 'none',
|
|
277
|
+
'aria-expanded': menu.value === true ? 'true' : 'false',
|
|
278
|
+
'aria-owns': `${ state.targetUid.value }_lb`,
|
|
279
|
+
'aria-controls': `${ state.targetUid.value }_lb`
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
if (optionIndex.value >= 0) {
|
|
283
|
+
attrs[ 'aria-activedescendant' ] = `${ state.targetUid.value }_${ optionIndex.value }`
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
return attrs
|
|
287
|
+
})
|
|
281
288
|
|
|
282
289
|
const listboxAttrs = computed(() => {
|
|
283
290
|
const attrs = {
|
|
@@ -1013,7 +1020,7 @@ export default createComponent({
|
|
|
1013
1020
|
function onInput (e) {
|
|
1014
1021
|
clearTimeout(inputTimer)
|
|
1015
1022
|
|
|
1016
|
-
if (e && e.target && e.target.
|
|
1023
|
+
if (e && e.target && e.target.qComposing === true) {
|
|
1017
1024
|
return
|
|
1018
1025
|
}
|
|
1019
1026
|
|
|
@@ -1342,13 +1349,18 @@ export default createComponent({
|
|
|
1342
1349
|
setOptionIndex(optionIndex)
|
|
1343
1350
|
}
|
|
1344
1351
|
|
|
1345
|
-
function rerenderMenu () {
|
|
1352
|
+
function rerenderMenu (newLength, oldLength) {
|
|
1346
1353
|
if (menu.value === true && state.innerLoading.value === false) {
|
|
1347
|
-
|
|
1354
|
+
localResetVirtualScroll(-1, true)
|
|
1348
1355
|
|
|
1349
1356
|
nextTick(() => {
|
|
1350
1357
|
if (menu.value === true && state.innerLoading.value === false) {
|
|
1351
|
-
|
|
1358
|
+
if (newLength > oldLength) {
|
|
1359
|
+
localResetVirtualScroll()
|
|
1360
|
+
}
|
|
1361
|
+
else {
|
|
1362
|
+
updateMenu(true)
|
|
1363
|
+
}
|
|
1352
1364
|
}
|
|
1353
1365
|
})
|
|
1354
1366
|
}
|