vuetify 2.2.11 → 2.2.15
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/json/attributes.json +12 -4
- package/dist/json/tags.json +2 -0
- package/dist/json/web-types.json +36 -13
- package/dist/vuetify.css +19 -8
- package/dist/vuetify.css.map +1 -1
- package/dist/vuetify.js +123 -78
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +2 -2
- package/es5/components/VAutocomplete/VAutocomplete.js +4 -4
- package/es5/components/VAutocomplete/VAutocomplete.js.map +1 -1
- package/es5/components/VChip/VChip.js +2 -1
- package/es5/components/VChip/VChip.js.map +1 -1
- package/es5/components/VData/VData.js +6 -1
- package/es5/components/VData/VData.js.map +1 -1
- package/es5/components/VDataIterator/VDataIterator.js +16 -3
- package/es5/components/VDataIterator/VDataIterator.js.map +1 -1
- package/es5/components/VDataTable/VDataTable.js +3 -13
- package/es5/components/VDataTable/VDataTable.js.map +1 -1
- package/es5/components/VDialog/VDialog.js +33 -27
- package/es5/components/VDialog/VDialog.js.map +1 -1
- package/es5/components/VIcon/VIcon.js +2 -2
- package/es5/components/VIcon/VIcon.js.map +1 -1
- package/es5/components/VList/VList.js +1 -1
- package/es5/components/VList/VList.js.map +1 -1
- package/es5/components/VMenu/VMenu.js +13 -11
- package/es5/components/VMenu/VMenu.js.map +1 -1
- package/es5/components/VRangeSlider/VRangeSlider.js +1 -0
- package/es5/components/VRangeSlider/VRangeSlider.js.map +1 -1
- package/es5/components/VSelect/VSelect.js +4 -3
- package/es5/components/VSelect/VSelect.js.map +1 -1
- package/es5/components/VTimePicker/VTimePicker.js +2 -1
- package/es5/components/VTimePicker/VTimePicker.js.map +1 -1
- package/es5/components/VTimePicker/VTimePickerTitle.js +6 -2
- package/es5/components/VTimePicker/VTimePickerTitle.js.map +1 -1
- package/es5/components/VTooltip/VTooltip.js +6 -4
- package/es5/components/VTooltip/VTooltip.js.map +1 -1
- package/es5/framework.js +1 -1
- package/es5/mixins/menuable/index.js +11 -4
- package/es5/mixins/menuable/index.js.map +1 -1
- package/es5/services/icons/presets/fa4.js +1 -1
- package/es5/services/icons/presets/fa4.js.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.js +4 -4
- package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
- package/lib/components/VChip/VChip.js +2 -1
- package/lib/components/VChip/VChip.js.map +1 -1
- package/lib/components/VData/VData.js +7 -1
- package/lib/components/VData/VData.js.map +1 -1
- package/lib/components/VDataIterator/VDataIterator.js +16 -4
- package/lib/components/VDataIterator/VDataIterator.js.map +1 -1
- package/lib/components/VDataTable/VDataTable.js +3 -14
- package/lib/components/VDataTable/VDataTable.js.map +1 -1
- package/lib/components/VDialog/VDialog.js +31 -26
- package/lib/components/VDialog/VDialog.js.map +1 -1
- package/lib/components/VIcon/VIcon.js +2 -2
- package/lib/components/VIcon/VIcon.js.map +1 -1
- package/lib/components/VList/VList.js +1 -1
- package/lib/components/VList/VList.js.map +1 -1
- package/lib/components/VMenu/VMenu.js +9 -9
- package/lib/components/VMenu/VMenu.js.map +1 -1
- package/lib/components/VRangeSlider/VRangeSlider.js +1 -0
- package/lib/components/VRangeSlider/VRangeSlider.js.map +1 -1
- package/lib/components/VSelect/VSelect.js +4 -3
- package/lib/components/VSelect/VSelect.js.map +1 -1
- package/lib/components/VTimePicker/VTimePicker.js +2 -1
- package/lib/components/VTimePicker/VTimePicker.js.map +1 -1
- package/lib/components/VTimePicker/VTimePickerTitle.js +6 -2
- package/lib/components/VTimePicker/VTimePickerTitle.js.map +1 -1
- package/lib/components/VTooltip/VTooltip.js +2 -2
- package/lib/components/VTooltip/VTooltip.js.map +1 -1
- package/lib/framework.js +1 -1
- package/lib/mixins/menuable/index.js +7 -2
- package/lib/mixins/menuable/index.js.map +1 -1
- package/lib/services/icons/presets/fa4.js +1 -1
- package/lib/services/icons/presets/fa4.js.map +1 -1
- package/package.json +2 -2
- package/src/components/VAutocomplete/VAutocomplete.ts +4 -4
- package/src/components/VAutocomplete/__tests__/VAutocomplete.spec.ts +11 -0
- package/src/components/VAutocomplete/__tests__/VAutocomplete2.spec.ts +1 -1
- package/src/components/VAutocomplete/__tests__/VAutocomplete3.spec.ts +34 -0
- package/src/components/VChip/VChip.ts +1 -0
- package/src/components/VChip/__tests__/__snapshots__/VChip.spec.ts.snap +1 -0
- package/src/components/VData/VData.ts +6 -1
- package/src/components/VDataIterator/VDataIterator.ts +14 -3
- package/src/components/VDataIterator/__tests__/VDataIterator.spec.ts +26 -0
- package/src/components/VDataIterator/__tests__/__snapshots__/VDataFooter.spec.ts.snap +8 -8
- package/src/components/VDataIterator/__tests__/__snapshots__/VDataIterator.spec.ts.snap +8 -8
- package/src/components/VDataTable/VDataTable.ts +3 -14
- package/src/components/VDataTable/VSimpleTable.sass +12 -6
- package/src/components/VDataTable/__tests__/VDataTable.spec.ts +119 -0
- package/src/components/VDataTable/__tests__/__snapshots__/VDataTable.spec.ts.snap +620 -53
- package/src/components/VDataTable/__tests__/__snapshots__/VDataTableHeader.spec.ts.snap +15 -15
- package/src/components/VDialog/VDialog.ts +29 -25
- package/src/components/VIcon/VIcon.ts +2 -2
- package/src/components/VIcon/__tests__/__snapshots__/VIcon.spec.ts.snap +2 -2
- package/src/components/VList/VList.ts +1 -1
- package/src/components/VMenu/VMenu.ts +11 -13
- package/src/components/VMenu/__tests__/VMenu.spec.ts +17 -0
- package/src/components/VMenu/__tests__/__snapshots__/VMenu.spec.ts.snap +18 -0
- package/src/components/VOverflowBtn/__tests__/__snapshots__/VOverflowBtn.spec.ts.snap +0 -66
- package/src/components/VRangeSlider/VRangeSlider.ts +1 -0
- package/src/components/VRangeSlider/__tests__/VRangeSlider.spec.ts +8 -0
- package/src/components/VRangeSlider/__tests__/__snapshots__/VRangeSlider.spec.ts.snap +4 -4
- package/src/components/VSelect/VSelect.ts +4 -3
- package/src/components/VSelect/__tests__/__snapshots__/VSelect.spec.ts.snap +8 -8
- package/src/components/VSelect/__tests__/__snapshots__/VSelect2.spec.ts.snap +4 -4
- package/src/components/VSelect/__tests__/__snapshots__/VSelect3.spec.ts.snap +2 -2
- package/src/components/VSlideGroup/VSlideGroup.sass +2 -2
- package/src/components/VTimePicker/VTimePicker.ts +2 -1
- package/src/components/VTimePicker/VTimePickerTitle.sass +5 -0
- package/src/components/VTimePicker/VTimePickerTitle.ts +6 -2
- package/src/components/VTimePicker/__tests__/__snapshots__/VTimePicker.spec.ts.snap +94 -14
- package/src/components/VTooltip/VTooltip.ts +2 -2
- package/src/mixins/menuable/index.ts +5 -2
- package/src/services/icons/__tests__/__snapshots__/icons.spec.ts.snap +1 -1
- package/src/services/icons/presets/fa4.ts +1 -1
|
@@ -587,18 +587,18 @@ exports[`VDataTableHeader.ts mobile should render with data-table-select header
|
|
|
587
587
|
<div role="button"
|
|
588
588
|
aria-haspopup="listbox"
|
|
589
589
|
aria-expanded="false"
|
|
590
|
-
aria-owns="list-
|
|
590
|
+
aria-owns="list-69"
|
|
591
591
|
class="v-input__slot"
|
|
592
592
|
>
|
|
593
593
|
<div class="v-select__slot">
|
|
594
|
-
<label for="input-
|
|
594
|
+
<label for="input-69"
|
|
595
595
|
class="v-label theme--light"
|
|
596
596
|
style="left: 0px; position: absolute;"
|
|
597
597
|
>
|
|
598
598
|
Sort by
|
|
599
599
|
</label>
|
|
600
600
|
<div class="v-select__selections">
|
|
601
|
-
<input id="input-
|
|
601
|
+
<input id="input-69"
|
|
602
602
|
readonly="readonly"
|
|
603
603
|
type="text"
|
|
604
604
|
aria-readonly="false"
|
|
@@ -637,11 +637,11 @@ exports[`VDataTableHeader.ts mobile should work with multiSort 1`] = `
|
|
|
637
637
|
<div role="button"
|
|
638
638
|
aria-haspopup="listbox"
|
|
639
639
|
aria-expanded="false"
|
|
640
|
-
aria-owns="list-
|
|
640
|
+
aria-owns="list-47"
|
|
641
641
|
class="v-input__slot"
|
|
642
642
|
>
|
|
643
643
|
<div class="v-select__slot">
|
|
644
|
-
<label for="input-
|
|
644
|
+
<label for="input-47"
|
|
645
645
|
class="v-label v-label--active theme--light"
|
|
646
646
|
style="left: 0px; position: absolute;"
|
|
647
647
|
>
|
|
@@ -661,7 +661,7 @@ exports[`VDataTableHeader.ts mobile should work with multiSort 1`] = `
|
|
|
661
661
|
</div>
|
|
662
662
|
</span>
|
|
663
663
|
</span>
|
|
664
|
-
<input id="input-
|
|
664
|
+
<input id="input-47"
|
|
665
665
|
readonly="readonly"
|
|
666
666
|
type="text"
|
|
667
667
|
aria-readonly="false"
|
|
@@ -702,18 +702,18 @@ exports[`VDataTableHeader.ts mobile should work with showGroupBy 1`] = `
|
|
|
702
702
|
<div role="button"
|
|
703
703
|
aria-haspopup="listbox"
|
|
704
704
|
aria-expanded="false"
|
|
705
|
-
aria-owns="list-
|
|
705
|
+
aria-owns="list-42"
|
|
706
706
|
class="v-input__slot"
|
|
707
707
|
>
|
|
708
708
|
<div class="v-select__slot">
|
|
709
|
-
<label for="input-
|
|
709
|
+
<label for="input-42"
|
|
710
710
|
class="v-label theme--light"
|
|
711
711
|
style="left: 0px; position: absolute;"
|
|
712
712
|
>
|
|
713
713
|
Sort by
|
|
714
714
|
</label>
|
|
715
715
|
<div class="v-select__selections">
|
|
716
|
-
<input id="input-
|
|
716
|
+
<input id="input-42"
|
|
717
717
|
readonly="readonly"
|
|
718
718
|
type="text"
|
|
719
719
|
aria-readonly="false"
|
|
@@ -752,11 +752,11 @@ exports[`VDataTableHeader.ts mobile should work with sortBy correctly 1`] = `
|
|
|
752
752
|
<div role="button"
|
|
753
753
|
aria-haspopup="listbox"
|
|
754
754
|
aria-expanded="false"
|
|
755
|
-
aria-owns="list-
|
|
755
|
+
aria-owns="list-54"
|
|
756
756
|
class="v-input__slot"
|
|
757
757
|
>
|
|
758
758
|
<div class="v-select__slot">
|
|
759
|
-
<label for="input-
|
|
759
|
+
<label for="input-54"
|
|
760
760
|
class="v-label v-label--active theme--light"
|
|
761
761
|
style="left: 0px; position: absolute;"
|
|
762
762
|
>
|
|
@@ -776,7 +776,7 @@ exports[`VDataTableHeader.ts mobile should work with sortBy correctly 1`] = `
|
|
|
776
776
|
</div>
|
|
777
777
|
</span>
|
|
778
778
|
</span>
|
|
779
|
-
<input id="input-
|
|
779
|
+
<input id="input-54"
|
|
780
780
|
readonly="readonly"
|
|
781
781
|
type="text"
|
|
782
782
|
aria-readonly="false"
|
|
@@ -817,11 +817,11 @@ exports[`VDataTableHeader.ts mobile should work with sortDesc correctly 1`] = `
|
|
|
817
817
|
<div role="button"
|
|
818
818
|
aria-haspopup="listbox"
|
|
819
819
|
aria-expanded="false"
|
|
820
|
-
aria-owns="list-
|
|
820
|
+
aria-owns="list-61"
|
|
821
821
|
class="v-input__slot"
|
|
822
822
|
>
|
|
823
823
|
<div class="v-select__slot">
|
|
824
|
-
<label for="input-
|
|
824
|
+
<label for="input-61"
|
|
825
825
|
class="v-label v-label--active theme--light"
|
|
826
826
|
style="left: 0px; position: absolute;"
|
|
827
827
|
>
|
|
@@ -841,7 +841,7 @@ exports[`VDataTableHeader.ts mobile should work with sortDesc correctly 1`] = `
|
|
|
841
841
|
</div>
|
|
842
842
|
</span>
|
|
843
843
|
</span>
|
|
844
|
-
<input id="input-
|
|
844
|
+
<input id="input-61"
|
|
845
845
|
readonly="readonly"
|
|
846
846
|
type="text"
|
|
847
847
|
aria-readonly="false"
|
|
@@ -238,8 +238,31 @@ export default baseMixins.extend({
|
|
|
238
238
|
focusable.length && (focusable[0] as HTMLElement).focus()
|
|
239
239
|
}
|
|
240
240
|
},
|
|
241
|
+
genContent () {
|
|
242
|
+
return this.showLazyContent(() => [
|
|
243
|
+
this.$createElement(VThemeProvider, {
|
|
244
|
+
props: {
|
|
245
|
+
root: true,
|
|
246
|
+
light: this.light,
|
|
247
|
+
dark: this.dark,
|
|
248
|
+
},
|
|
249
|
+
}, [
|
|
250
|
+
this.$createElement('div', {
|
|
251
|
+
class: this.contentClasses,
|
|
252
|
+
attrs: {
|
|
253
|
+
role: 'document',
|
|
254
|
+
tabindex: this.isActive ? 0 : undefined,
|
|
255
|
+
...this.getScopeIdAttrs(),
|
|
256
|
+
},
|
|
257
|
+
on: { keydown: this.onKeydown },
|
|
258
|
+
style: { zIndex: this.activeZIndex },
|
|
259
|
+
ref: 'content',
|
|
260
|
+
}, [this.genTransition()]),
|
|
261
|
+
]),
|
|
262
|
+
])
|
|
263
|
+
},
|
|
241
264
|
genTransition () {
|
|
242
|
-
const content = this.
|
|
265
|
+
const content = this.genInnerContent()
|
|
243
266
|
|
|
244
267
|
if (!this.transition) return content
|
|
245
268
|
|
|
@@ -247,10 +270,11 @@ export default baseMixins.extend({
|
|
|
247
270
|
props: {
|
|
248
271
|
name: this.transition,
|
|
249
272
|
origin: this.origin,
|
|
273
|
+
appear: true,
|
|
250
274
|
},
|
|
251
|
-
},
|
|
275
|
+
}, [content])
|
|
252
276
|
},
|
|
253
|
-
|
|
277
|
+
genInnerContent () {
|
|
254
278
|
const data = {
|
|
255
279
|
class: this.classes,
|
|
256
280
|
ref: 'dialog',
|
|
@@ -275,27 +299,7 @@ export default baseMixins.extend({
|
|
|
275
299
|
}
|
|
276
300
|
}
|
|
277
301
|
|
|
278
|
-
return this.$createElement('div',
|
|
279
|
-
class: this.contentClasses,
|
|
280
|
-
attrs: {
|
|
281
|
-
role: 'document',
|
|
282
|
-
tabindex: this.isActive ? 0 : undefined,
|
|
283
|
-
...this.getScopeIdAttrs(),
|
|
284
|
-
},
|
|
285
|
-
on: { keydown: this.onKeydown },
|
|
286
|
-
style: { zIndex: this.activeZIndex },
|
|
287
|
-
ref: 'content',
|
|
288
|
-
}, [
|
|
289
|
-
this.$createElement('div', data, [
|
|
290
|
-
this.$createElement(VThemeProvider, {
|
|
291
|
-
props: {
|
|
292
|
-
root: true,
|
|
293
|
-
light: this.light,
|
|
294
|
-
dark: this.dark,
|
|
295
|
-
},
|
|
296
|
-
}, this.getContentSlot()),
|
|
297
|
-
]),
|
|
298
|
-
])
|
|
302
|
+
return this.$createElement('div', data, this.getContentSlot())
|
|
299
303
|
},
|
|
300
304
|
},
|
|
301
305
|
|
|
@@ -311,7 +315,7 @@ export default baseMixins.extend({
|
|
|
311
315
|
attrs: { role: 'dialog' },
|
|
312
316
|
}, [
|
|
313
317
|
this.genActivator(),
|
|
314
|
-
this.
|
|
318
|
+
this.genContent(),
|
|
315
319
|
])
|
|
316
320
|
},
|
|
317
321
|
})
|
|
@@ -157,8 +157,8 @@ const VIcon = mixins(
|
|
|
157
157
|
attrs: {
|
|
158
158
|
xmlns: 'http://www.w3.org/2000/svg',
|
|
159
159
|
viewBox: '0 0 24 24',
|
|
160
|
-
height: fontSize || '
|
|
161
|
-
width: fontSize || '
|
|
160
|
+
height: fontSize || '24',
|
|
161
|
+
width: fontSize || '24',
|
|
162
162
|
role: 'img',
|
|
163
163
|
'aria-hidden': true,
|
|
164
164
|
},
|
|
@@ -300,7 +300,7 @@ export default baseMixins.extend({
|
|
|
300
300
|
props: {
|
|
301
301
|
name: this.transition,
|
|
302
302
|
},
|
|
303
|
-
},
|
|
303
|
+
}, [content])
|
|
304
304
|
},
|
|
305
305
|
genDirectives (): VNodeDirective[] {
|
|
306
306
|
const directives: VNodeDirective[] = [{
|
|
@@ -360,17 +360,7 @@ export default baseMixins.extend({
|
|
|
360
360
|
options.on.mouseleave = this.mouseLeaveHandler
|
|
361
361
|
}
|
|
362
362
|
|
|
363
|
-
return this.$createElement(
|
|
364
|
-
'div',
|
|
365
|
-
options,
|
|
366
|
-
[this.$createElement(VThemeProvider, {
|
|
367
|
-
props: {
|
|
368
|
-
root: true,
|
|
369
|
-
light: this.light,
|
|
370
|
-
dark: this.dark,
|
|
371
|
-
},
|
|
372
|
-
}, this.getContentSlot())]
|
|
373
|
-
)
|
|
363
|
+
return this.$createElement('div', options, this.getContentSlot())
|
|
374
364
|
},
|
|
375
365
|
getTiles () {
|
|
376
366
|
if (!this.$refs.content) return
|
|
@@ -479,7 +469,15 @@ export default baseMixins.extend({
|
|
|
479
469
|
|
|
480
470
|
return h('div', data, [
|
|
481
471
|
!this.activator && this.genActivator(),
|
|
482
|
-
this.
|
|
472
|
+
this.showLazyContent(() => [
|
|
473
|
+
this.$createElement(VThemeProvider, {
|
|
474
|
+
props: {
|
|
475
|
+
root: true,
|
|
476
|
+
light: this.light,
|
|
477
|
+
dark: this.dark,
|
|
478
|
+
},
|
|
479
|
+
}, [this.genTransition()]),
|
|
480
|
+
]),
|
|
483
481
|
])
|
|
484
482
|
},
|
|
485
483
|
})
|
|
@@ -55,6 +55,23 @@ describe('VMenu.ts', () => {
|
|
|
55
55
|
expect('Unable to locate target [data-app]').toHaveBeenTipped()
|
|
56
56
|
})
|
|
57
57
|
|
|
58
|
+
it('should render multiple content nodes', async () => {
|
|
59
|
+
const wrapper = mountFunction({
|
|
60
|
+
propsData: {
|
|
61
|
+
eager: true,
|
|
62
|
+
},
|
|
63
|
+
scopedSlots: {
|
|
64
|
+
activator: '<button v-on="props.on"></button>',
|
|
65
|
+
},
|
|
66
|
+
slots: {
|
|
67
|
+
default: '<span>foo</span><span>bar</span>',
|
|
68
|
+
},
|
|
69
|
+
})
|
|
70
|
+
|
|
71
|
+
expect(wrapper.html()).toMatchSnapshot()
|
|
72
|
+
expect('Unable to locate target [data-app]').toHaveBeenTipped()
|
|
73
|
+
})
|
|
74
|
+
|
|
58
75
|
it('should round dimensions', async () => {
|
|
59
76
|
const wrapper = mountFunction({
|
|
60
77
|
propsData: {
|
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
2
|
|
|
3
|
+
exports[`VMenu.ts should render multiple content nodes 1`] = `
|
|
4
|
+
<div class="v-menu">
|
|
5
|
+
<button>
|
|
6
|
+
</button>
|
|
7
|
+
<div role="menu"
|
|
8
|
+
class="v-menu__content theme--light "
|
|
9
|
+
style="max-height: auto; min-width: 0px; max-width: auto; top: 12px; left: 0px; transform-origin: top left; z-index: 0; display: none;"
|
|
10
|
+
>
|
|
11
|
+
<span>
|
|
12
|
+
foo
|
|
13
|
+
</span>
|
|
14
|
+
<span>
|
|
15
|
+
bar
|
|
16
|
+
</span>
|
|
17
|
+
</div>
|
|
18
|
+
</div>
|
|
19
|
+
`;
|
|
20
|
+
|
|
3
21
|
exports[`VMenu.ts should round dimensions 1`] = `"max-height: auto; min-width: 0px; max-width: auto; top: 12px; left: 0px; transform-origin: top left; z-index: 0; display: none;"`;
|
|
4
22
|
|
|
5
23
|
exports[`VMenu.ts should update position dynamically 1`] = `"max-height: auto; min-width: 0px; max-width: auto; top: 12px; left: 0px; transform-origin: top left; z-index: 8; display: none;"`;
|
|
@@ -33,39 +33,6 @@ exports[`VOverflowBtn.js should use default autocomplete selections 1`] = `
|
|
|
33
33
|
>
|
|
34
34
|
</div>
|
|
35
35
|
<div class="v-menu">
|
|
36
|
-
<div class="v-menu__content theme--light v-autocomplete__content"
|
|
37
|
-
style="max-height: 304px; min-width: 0px; max-width: auto; top: 12px; left: 0px; transform-origin: top left; z-index: 0; display: none;"
|
|
38
|
-
>
|
|
39
|
-
<div role="listbox"
|
|
40
|
-
tabindex="-1"
|
|
41
|
-
class="v-list v-select-list v-sheet v-sheet--tile theme--light theme--light"
|
|
42
|
-
id="list-1"
|
|
43
|
-
>
|
|
44
|
-
<div tabindex="0"
|
|
45
|
-
aria-selected="true"
|
|
46
|
-
id="list-item-5-0"
|
|
47
|
-
role="option"
|
|
48
|
-
class="v-list-item primary--text v-list-item--active v-list-item--link theme--light"
|
|
49
|
-
>
|
|
50
|
-
<div class="v-list-item__action">
|
|
51
|
-
<div class="v-simple-checkbox">
|
|
52
|
-
<div class="v-input--selection-controls__ripple primary--text">
|
|
53
|
-
</div>
|
|
54
|
-
<i aria-hidden="true"
|
|
55
|
-
class="v-icon notranslate material-icons theme--light primary--text"
|
|
56
|
-
>
|
|
57
|
-
$checkboxOn
|
|
58
|
-
</i>
|
|
59
|
-
</div>
|
|
60
|
-
</div>
|
|
61
|
-
<div class="v-list-item__content">
|
|
62
|
-
<div class="v-list-item__title">
|
|
63
|
-
foo
|
|
64
|
-
</div>
|
|
65
|
-
</div>
|
|
66
|
-
</div>
|
|
67
|
-
</div>
|
|
68
|
-
</div>
|
|
69
36
|
</div>
|
|
70
37
|
</div>
|
|
71
38
|
<div class="v-text-field__details">
|
|
@@ -114,39 +81,6 @@ exports[`VOverflowBtn.js should use default autocomplete selections 2`] = `
|
|
|
114
81
|
>
|
|
115
82
|
</div>
|
|
116
83
|
<div class="v-menu">
|
|
117
|
-
<div class="v-menu__content theme--light v-autocomplete__content"
|
|
118
|
-
style="max-height: 304px; min-width: 0px; max-width: auto; top: 12px; left: 0px; transform-origin: top left; z-index: 0; display: none;"
|
|
119
|
-
>
|
|
120
|
-
<div role="listbox"
|
|
121
|
-
tabindex="-1"
|
|
122
|
-
class="v-list v-select-list v-sheet v-sheet--tile theme--light theme--light"
|
|
123
|
-
id="list-1"
|
|
124
|
-
>
|
|
125
|
-
<div tabindex="0"
|
|
126
|
-
aria-selected="true"
|
|
127
|
-
id="list-item-5-0"
|
|
128
|
-
role="option"
|
|
129
|
-
class="v-list-item primary--text v-list-item--active v-list-item--link theme--light"
|
|
130
|
-
>
|
|
131
|
-
<div class="v-list-item__action">
|
|
132
|
-
<div class="v-simple-checkbox">
|
|
133
|
-
<div class="v-input--selection-controls__ripple primary--text">
|
|
134
|
-
</div>
|
|
135
|
-
<i aria-hidden="true"
|
|
136
|
-
class="v-icon notranslate material-icons theme--light primary--text"
|
|
137
|
-
>
|
|
138
|
-
$checkboxOn
|
|
139
|
-
</i>
|
|
140
|
-
</div>
|
|
141
|
-
</div>
|
|
142
|
-
<div class="v-list-item__content">
|
|
143
|
-
<div class="v-list-item__title">
|
|
144
|
-
foo
|
|
145
|
-
</div>
|
|
146
|
-
</div>
|
|
147
|
-
</div>
|
|
148
|
-
</div>
|
|
149
|
-
</div>
|
|
150
84
|
</div>
|
|
151
85
|
</div>
|
|
152
86
|
<div class="v-text-field__details">
|
|
@@ -107,6 +107,7 @@ export default VSlider.extend({
|
|
|
107
107
|
input.data = input.data || {}
|
|
108
108
|
input.data.attrs = input.data.attrs || {}
|
|
109
109
|
input.data.attrs.value = this.internalValue[i]
|
|
110
|
+
input.data.attrs.id = `input-${i ? 'max' : 'min'}-${this._uid}`
|
|
110
111
|
|
|
111
112
|
return input
|
|
112
113
|
})
|
|
@@ -220,4 +220,12 @@ describe('VRangeSlider.ts', () => {
|
|
|
220
220
|
expect(wrapper.vm.internalValue).toEqual([0, 0])
|
|
221
221
|
})
|
|
222
222
|
})
|
|
223
|
+
|
|
224
|
+
// https://github.com/vuetifyjs/vuetify/issues/6843
|
|
225
|
+
it('should be uniq id', async () => {
|
|
226
|
+
const wrapper = mountFunction()
|
|
227
|
+
const [min, max] = wrapper.vm.genInput()
|
|
228
|
+
|
|
229
|
+
expect(min.data.attrs.id).not.toEqual(max.data.attrs.id)
|
|
230
|
+
})
|
|
223
231
|
})
|
|
@@ -6,12 +6,12 @@ exports[`VRangeSlider.ts should render a vertical slider 1`] = `
|
|
|
6
6
|
<div class="v-input__slot">
|
|
7
7
|
<div class="v-slider v-slider--vertical theme--light">
|
|
8
8
|
<input value="0"
|
|
9
|
-
id="input-29"
|
|
9
|
+
id="input-min-29"
|
|
10
10
|
readonly="readonly"
|
|
11
11
|
tabindex="-1"
|
|
12
12
|
>
|
|
13
13
|
<input value="0"
|
|
14
|
-
id="input-29"
|
|
14
|
+
id="input-max-29"
|
|
15
15
|
readonly="readonly"
|
|
16
16
|
tabindex="-1"
|
|
17
17
|
>
|
|
@@ -68,13 +68,13 @@ exports[`VRangeSlider.ts should render disabled slider 1`] = `
|
|
|
68
68
|
<div class="v-input__slot">
|
|
69
69
|
<div class="v-slider v-slider--horizontal v-slider--disabled theme--light">
|
|
70
70
|
<input value="0"
|
|
71
|
-
id="input-33"
|
|
71
|
+
id="input-min-33"
|
|
72
72
|
disabled="disabled"
|
|
73
73
|
readonly="readonly"
|
|
74
74
|
tabindex="-1"
|
|
75
75
|
>
|
|
76
76
|
<input value="0"
|
|
77
|
-
id="input-33"
|
|
77
|
+
id="input-max-33"
|
|
78
78
|
disabled="disabled"
|
|
79
79
|
readonly="readonly"
|
|
80
80
|
tabindex="-1"
|
|
@@ -310,8 +310,9 @@ export default baseMixins.extend<options>().extend({
|
|
|
310
310
|
!this._isDestroyed &&
|
|
311
311
|
|
|
312
312
|
// Click originates from outside the menu content
|
|
313
|
-
|
|
314
|
-
!this.getContent()
|
|
313
|
+
// Multiple selects don't close when an item is clicked
|
|
314
|
+
(!this.getContent() ||
|
|
315
|
+
!this.getContent().contains(e.target as Node)) &&
|
|
315
316
|
|
|
316
317
|
// Click originates from outside the element
|
|
317
318
|
this.$el &&
|
|
@@ -445,7 +446,7 @@ export default baseMixins.extend<options>().extend({
|
|
|
445
446
|
readonly: true,
|
|
446
447
|
type: 'text',
|
|
447
448
|
'aria-readonly': String(this.readonly),
|
|
448
|
-
'aria-activedescendant': getObjectValueByPath(this.$refs.menu, 'activeTile.id'
|
|
449
|
+
'aria-activedescendant': getObjectValueByPath(this.$refs.menu, 'activeTile.id'),
|
|
449
450
|
autocomplete: getObjectValueByPath(input.data!, 'attrs.autocomplete', 'off'),
|
|
450
451
|
},
|
|
451
452
|
on: { keypress: this.onKeyPress },
|
|
@@ -220,12 +220,12 @@ exports[`VSelect.ts should render v-select correctly when not using scope slot 1
|
|
|
220
220
|
<div role="button"
|
|
221
221
|
aria-haspopup="listbox"
|
|
222
222
|
aria-expanded="false"
|
|
223
|
-
aria-owns="list-
|
|
223
|
+
aria-owns="list-32"
|
|
224
224
|
class="v-input__slot"
|
|
225
225
|
>
|
|
226
226
|
<div class="v-select__slot">
|
|
227
227
|
<div class="v-select__selections">
|
|
228
|
-
<input id="input-
|
|
228
|
+
<input id="input-32"
|
|
229
229
|
readonly="readonly"
|
|
230
230
|
type="text"
|
|
231
231
|
aria-readonly="false"
|
|
@@ -265,12 +265,12 @@ exports[`VSelect.ts should render v-select correctly when not using v-list-item
|
|
|
265
265
|
<div role="button"
|
|
266
266
|
aria-haspopup="listbox"
|
|
267
267
|
aria-expanded="false"
|
|
268
|
-
aria-owns="list-
|
|
268
|
+
aria-owns="list-26"
|
|
269
269
|
class="v-input__slot"
|
|
270
270
|
>
|
|
271
271
|
<div class="v-select__slot">
|
|
272
272
|
<div class="v-select__selections">
|
|
273
|
-
<input id="input-
|
|
273
|
+
<input id="input-26"
|
|
274
274
|
readonly="readonly"
|
|
275
275
|
type="text"
|
|
276
276
|
aria-readonly="false"
|
|
@@ -310,12 +310,12 @@ exports[`VSelect.ts should render v-select correctly when using v-list-item in i
|
|
|
310
310
|
<div role="button"
|
|
311
311
|
aria-haspopup="listbox"
|
|
312
312
|
aria-expanded="false"
|
|
313
|
-
aria-owns="list-
|
|
313
|
+
aria-owns="list-19"
|
|
314
314
|
class="v-input__slot"
|
|
315
315
|
>
|
|
316
316
|
<div class="v-select__slot">
|
|
317
317
|
<div class="v-select__selections">
|
|
318
|
-
<input id="input-
|
|
318
|
+
<input id="input-19"
|
|
319
319
|
readonly="readonly"
|
|
320
320
|
type="text"
|
|
321
321
|
aria-readonly="false"
|
|
@@ -353,11 +353,11 @@ exports[`VSelect.ts should use slotted no-data 1`] = `
|
|
|
353
353
|
<div role="listbox"
|
|
354
354
|
tabindex="-1"
|
|
355
355
|
class="v-list v-select-list v-sheet v-sheet--tile theme--light theme--light"
|
|
356
|
-
id="list-
|
|
356
|
+
id="list-134"
|
|
357
357
|
>
|
|
358
358
|
<div tabindex="0"
|
|
359
359
|
aria-selected="false"
|
|
360
|
-
id="list-item-
|
|
360
|
+
id="list-item-139-0"
|
|
361
361
|
role="option"
|
|
362
362
|
class="v-list-item v-list-item--link theme--light"
|
|
363
363
|
>
|
|
@@ -6,7 +6,7 @@ exports[`VSelect.ts should be clearable with prop, dirty and multi select 1`] =
|
|
|
6
6
|
<div role="button"
|
|
7
7
|
aria-haspopup="listbox"
|
|
8
8
|
aria-expanded="false"
|
|
9
|
-
aria-owns="list-
|
|
9
|
+
aria-owns="list-100"
|
|
10
10
|
class="v-input__slot"
|
|
11
11
|
>
|
|
12
12
|
<div class="v-select__slot">
|
|
@@ -14,7 +14,7 @@ exports[`VSelect.ts should be clearable with prop, dirty and multi select 1`] =
|
|
|
14
14
|
<div class="v-select__selection v-select__selection--comma">
|
|
15
15
|
1
|
|
16
16
|
</div>
|
|
17
|
-
<input id="input-
|
|
17
|
+
<input id="input-100"
|
|
18
18
|
readonly="readonly"
|
|
19
19
|
type="text"
|
|
20
20
|
aria-readonly="false"
|
|
@@ -66,7 +66,7 @@ exports[`VSelect.ts should be clearable with prop, dirty and single select 1`] =
|
|
|
66
66
|
<div role="button"
|
|
67
67
|
aria-haspopup="listbox"
|
|
68
68
|
aria-expanded="false"
|
|
69
|
-
aria-owns="list-
|
|
69
|
+
aria-owns="list-93"
|
|
70
70
|
class="v-input__slot"
|
|
71
71
|
>
|
|
72
72
|
<div class="v-select__slot">
|
|
@@ -74,7 +74,7 @@ exports[`VSelect.ts should be clearable with prop, dirty and single select 1`] =
|
|
|
74
74
|
<div class="v-select__selection v-select__selection--comma">
|
|
75
75
|
1
|
|
76
76
|
</div>
|
|
77
|
-
<input id="input-
|
|
77
|
+
<input id="input-93"
|
|
78
78
|
readonly="readonly"
|
|
79
79
|
type="text"
|
|
80
80
|
aria-readonly="false"
|
|
@@ -6,7 +6,7 @@ exports[`VSelect.ts should add color to selected index 1`] = `
|
|
|
6
6
|
<div role="button"
|
|
7
7
|
aria-haspopup="listbox"
|
|
8
8
|
aria-expanded="false"
|
|
9
|
-
aria-owns="list-
|
|
9
|
+
aria-owns="list-50"
|
|
10
10
|
class="v-input__slot"
|
|
11
11
|
>
|
|
12
12
|
<div class="v-select__slot">
|
|
@@ -14,7 +14,7 @@ exports[`VSelect.ts should add color to selected index 1`] = `
|
|
|
14
14
|
<div class="v-select__selection v-select__selection--comma primary--text">
|
|
15
15
|
foo
|
|
16
16
|
</div>
|
|
17
|
-
<input id="input-
|
|
17
|
+
<input id="input-50"
|
|
18
18
|
readonly="readonly"
|
|
19
19
|
type="text"
|
|
20
20
|
aria-readonly="false"
|
|
@@ -338,7 +338,8 @@ export default mixins(
|
|
|
338
338
|
genPickerTitle () {
|
|
339
339
|
return this.$createElement(VTimePickerTitle, {
|
|
340
340
|
props: {
|
|
341
|
-
ampm: this.
|
|
341
|
+
ampm: this.isAmPm,
|
|
342
|
+
ampmReadonly: this.isAmPm && !this.ampmInTitle,
|
|
342
343
|
disabled: this.disabled,
|
|
343
344
|
hour: this.inputHour,
|
|
344
345
|
minute: this.inputMinute,
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
@import './_variables.scss'
|
|
2
|
+
@import '../VPicker/_variables.scss'
|
|
2
3
|
|
|
3
4
|
.v-time-picker-title
|
|
4
5
|
color: $time-picker-title-color
|
|
@@ -34,6 +35,10 @@
|
|
|
34
35
|
div:only-child
|
|
35
36
|
flex-direction: row
|
|
36
37
|
|
|
38
|
+
&--readonly
|
|
39
|
+
.v-picker__title__btn.v-picker__title__btn--active
|
|
40
|
+
opacity: $picker-inactive-btn-opacity
|
|
41
|
+
|
|
37
42
|
.v-picker__title--landscape
|
|
38
43
|
.v-time-picker-title
|
|
39
44
|
flex-direction: column
|
|
@@ -18,6 +18,7 @@ export default mixins(
|
|
|
18
18
|
|
|
19
19
|
props: {
|
|
20
20
|
ampm: Boolean,
|
|
21
|
+
ampmReadonly: Boolean,
|
|
21
22
|
disabled: Boolean,
|
|
22
23
|
hour: Number,
|
|
23
24
|
minute: Number,
|
|
@@ -58,9 +59,12 @@ export default mixins(
|
|
|
58
59
|
genAmPm () {
|
|
59
60
|
return this.$createElement('div', {
|
|
60
61
|
staticClass: 'v-time-picker-title__ampm',
|
|
62
|
+
class: {
|
|
63
|
+
'v-time-picker-title__ampm--readonly': this.ampmReadonly,
|
|
64
|
+
},
|
|
61
65
|
}, [
|
|
62
|
-
this.genPickerButton('period', 'am', this.$vuetify.lang.t('$vuetify.timePicker.am'), this.disabled || this.readonly),
|
|
63
|
-
this.genPickerButton('period', 'pm', this.$vuetify.lang.t('$vuetify.timePicker.pm'), this.disabled || this.readonly),
|
|
66
|
+
(!this.ampmReadonly || this.period === 'am') ? this.genPickerButton('period', 'am', this.$vuetify.lang.t('$vuetify.timePicker.am'), this.disabled || this.readonly) : null,
|
|
67
|
+
(!this.ampmReadonly || this.period === 'pm') ? this.genPickerButton('period', 'pm', this.$vuetify.lang.t('$vuetify.timePicker.pm'), this.disabled || this.readonly) : null,
|
|
64
68
|
])
|
|
65
69
|
},
|
|
66
70
|
},
|