vuetify 2.6.6 → 2.6.9
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/web-types.json +21 -7
- package/dist/vuetify.css +50 -69
- package/dist/vuetify.css.map +1 -1
- package/dist/vuetify.js +442 -327
- 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 +3 -3
- package/es5/components/VAutocomplete/VAutocomplete.js.map +1 -1
- package/es5/components/VBtn/VBtn.js +2 -2
- package/es5/components/VBtn/VBtn.js.map +1 -1
- package/es5/components/VCalendar/VCalendar.js +3 -0
- package/es5/components/VCalendar/VCalendar.js.map +1 -1
- package/es5/components/VCalendar/VCalendarWeekly.js +15 -3
- package/es5/components/VCalendar/VCalendarWeekly.js.map +1 -1
- package/es5/components/VCalendar/mixins/calendar-with-events.js +6 -5
- package/es5/components/VCalendar/mixins/calendar-with-events.js.map +1 -1
- package/es5/components/VCalendar/mixins/mouse.js +18 -26
- package/es5/components/VCalendar/mixins/mouse.js.map +1 -1
- package/es5/components/VCarousel/VCarousel.js +2 -1
- package/es5/components/VCarousel/VCarousel.js.map +1 -1
- package/es5/components/VCheckbox/VSimpleCheckbox.js +5 -5
- package/es5/components/VCheckbox/VSimpleCheckbox.js.map +1 -1
- package/es5/components/VCombobox/VCombobox.js +2 -2
- package/es5/components/VCombobox/VCombobox.js.map +1 -1
- package/es5/components/VDataIterator/VDataFooter.js +5 -2
- package/es5/components/VDataIterator/VDataFooter.js.map +1 -1
- package/es5/components/VDataTable/Row.js +2 -2
- package/es5/components/VDataTable/Row.js.map +1 -1
- package/es5/components/VDataTable/VDataTable.js +54 -43
- package/es5/components/VDataTable/VDataTable.js.map +1 -1
- package/es5/components/VDataTable/mixins/header.js +4 -3
- package/es5/components/VDataTable/mixins/header.js.map +1 -1
- package/es5/components/VDatePicker/VDatePicker.js +2 -1
- package/es5/components/VDatePicker/VDatePicker.js.map +1 -1
- package/es5/components/VDialog/VDialog.js +20 -17
- package/es5/components/VDialog/VDialog.js.map +1 -1
- package/es5/components/VItemGroup/VItemGroup.js +4 -2
- package/es5/components/VItemGroup/VItemGroup.js.map +1 -1
- package/es5/components/VList/VListItem.js +5 -3
- package/es5/components/VList/VListItem.js.map +1 -1
- package/es5/components/VMenu/VMenu.js +2 -2
- package/es5/components/VMenu/VMenu.js.map +1 -1
- package/es5/components/VOtpInput/VOtpInput.js +33 -64
- package/es5/components/VOtpInput/VOtpInput.js.map +1 -1
- package/es5/components/VPagination/VPagination.js +1 -1
- package/es5/components/VPagination/VPagination.js.map +1 -1
- package/es5/components/VRadioGroup/VRadio.js +3 -1
- package/es5/components/VRadioGroup/VRadio.js.map +1 -1
- package/es5/components/VRangeSlider/VRangeSlider.js +4 -3
- package/es5/components/VRangeSlider/VRangeSlider.js.map +1 -1
- package/es5/components/VSelect/VSelect.js +10 -6
- package/es5/components/VSelect/VSelect.js.map +1 -1
- package/es5/components/VSelect/VSelectList.js +2 -1
- package/es5/components/VSelect/VSelectList.js.map +1 -1
- package/es5/components/VSkeletonLoader/VSkeletonLoader.js +4 -4
- package/es5/components/VSkeletonLoader/VSkeletonLoader.js.map +1 -1
- package/es5/components/VSlideGroup/VSlideGroup.js +43 -23
- package/es5/components/VSlideGroup/VSlideGroup.js.map +1 -1
- package/es5/components/VSlider/VSlider.js +8 -11
- package/es5/components/VSlider/VSlider.js.map +1 -1
- package/es5/components/VSparkline/VSparkline.js +2 -1
- package/es5/components/VSparkline/VSparkline.js.map +1 -1
- package/es5/components/VTabs/VTabs.js +10 -0
- package/es5/components/VTabs/VTabs.js.map +1 -1
- package/es5/components/VTextField/VTextField.js +5 -5
- package/es5/components/VTextField/VTextField.js.map +1 -1
- package/es5/components/VTextarea/VTextarea.js +2 -2
- package/es5/components/VTextarea/VTextarea.js.map +1 -1
- package/es5/components/VTimePicker/VTimePicker.js.map +1 -1
- package/es5/components/VTreeview/VTreeview.js +5 -4
- package/es5/components/VTreeview/VTreeview.js.map +1 -1
- package/es5/components/VTreeview/VTreeviewNode.js +2 -1
- package/es5/components/VTreeview/VTreeviewNode.js.map +1 -1
- package/es5/components/VWindow/VWindow.js +5 -6
- package/es5/components/VWindow/VWindow.js.map +1 -1
- package/es5/directives/click-outside/index.js +2 -2
- package/es5/directives/click-outside/index.js.map +1 -1
- package/es5/directives/intersect/index.js +5 -5
- package/es5/directives/intersect/index.js.map +1 -1
- package/es5/directives/mutate/index.js +2 -2
- package/es5/directives/mutate/index.js.map +1 -1
- package/es5/directives/resize/index.js +2 -2
- package/es5/directives/resize/index.js.map +1 -1
- package/es5/directives/scroll/index.js +2 -2
- package/es5/directives/scroll/index.js.map +1 -1
- package/es5/framework.js +1 -1
- package/es5/mixins/activatable/index.js +1 -3
- package/es5/mixins/activatable/index.js.map +1 -1
- package/es5/mixins/binds-attrs/index.js.map +1 -1
- package/es5/mixins/dependent/index.js.map +1 -1
- package/es5/mixins/detachable/index.js.map +1 -1
- package/es5/mixins/overlayable/index.js +1 -1
- package/es5/mixins/overlayable/index.js.map +1 -1
- package/es5/mixins/routable/index.js +2 -2
- package/es5/mixins/routable/index.js.map +1 -1
- package/es5/util/helpers.js +1 -1
- package/es5/util/helpers.js.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.js +3 -3
- package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
- package/lib/components/VBtn/VBtn.js +2 -2
- package/lib/components/VBtn/VBtn.js.map +1 -1
- package/lib/components/VCalendar/VCalendar.js +3 -0
- package/lib/components/VCalendar/VCalendar.js.map +1 -1
- package/lib/components/VCalendar/VCalendarWeekly.js +15 -3
- package/lib/components/VCalendar/VCalendarWeekly.js.map +1 -1
- package/lib/components/VCalendar/mixins/calendar-with-events.js +4 -4
- package/lib/components/VCalendar/mixins/calendar-with-events.js.map +1 -1
- package/lib/components/VCalendar/mixins/mouse.js +11 -32
- package/lib/components/VCalendar/mixins/mouse.js.map +1 -1
- package/lib/components/VCarousel/VCarousel.js +2 -1
- package/lib/components/VCarousel/VCarousel.js.map +1 -1
- package/lib/components/VCheckbox/VSimpleCheckbox.js +3 -2
- package/lib/components/VCheckbox/VSimpleCheckbox.js.map +1 -1
- package/lib/components/VCombobox/VCombobox.js +2 -2
- package/lib/components/VCombobox/VCombobox.js.map +1 -1
- package/lib/components/VDataIterator/VDataFooter.js +5 -2
- package/lib/components/VDataIterator/VDataFooter.js.map +1 -1
- package/lib/components/VDataTable/Row.js +2 -2
- package/lib/components/VDataTable/Row.js.map +1 -1
- package/lib/components/VDataTable/VDataTable.js +15 -5
- package/lib/components/VDataTable/VDataTable.js.map +1 -1
- package/lib/components/VDataTable/mixins/header.js +2 -2
- package/lib/components/VDataTable/mixins/header.js.map +1 -1
- package/lib/components/VDatePicker/VDatePicker.js +2 -1
- package/lib/components/VDatePicker/VDatePicker.js.map +1 -1
- package/lib/components/VDialog/VDialog.js +18 -14
- package/lib/components/VDialog/VDialog.js.map +1 -1
- package/lib/components/VItemGroup/VItemGroup.js +2 -2
- package/lib/components/VItemGroup/VItemGroup.js.map +1 -1
- package/lib/components/VList/VListItem.js +5 -3
- package/lib/components/VList/VListItem.js.map +1 -1
- package/lib/components/VMenu/VMenu.js +2 -2
- package/lib/components/VMenu/VMenu.js.map +1 -1
- package/lib/components/VOtpInput/VOtpInput.js +32 -61
- package/lib/components/VOtpInput/VOtpInput.js.map +1 -1
- package/lib/components/VPagination/VPagination.js +1 -1
- package/lib/components/VPagination/VPagination.js.map +1 -1
- package/lib/components/VRadioGroup/VRadio.js +3 -1
- package/lib/components/VRadioGroup/VRadio.js.map +1 -1
- package/lib/components/VRangeSlider/VRangeSlider.js +2 -2
- package/lib/components/VRangeSlider/VRangeSlider.js.map +1 -1
- package/lib/components/VSelect/VSelect.js +10 -6
- package/lib/components/VSelect/VSelect.js.map +1 -1
- package/lib/components/VSelect/VSelectList.js +2 -1
- package/lib/components/VSelect/VSelectList.js.map +1 -1
- package/lib/components/VSkeletonLoader/VSkeletonLoader.js +4 -4
- package/lib/components/VSkeletonLoader/VSkeletonLoader.js.map +1 -1
- package/lib/components/VSlideGroup/VSlideGroup.js +23 -7
- package/lib/components/VSlideGroup/VSlideGroup.js.map +1 -1
- package/lib/components/VSlider/VSlider.js +6 -11
- package/lib/components/VSlider/VSlider.js.map +1 -1
- package/lib/components/VSparkline/VSparkline.js +2 -1
- package/lib/components/VSparkline/VSparkline.js.map +1 -1
- package/lib/components/VTabs/VTabs.js +10 -0
- package/lib/components/VTabs/VTabs.js.map +1 -1
- package/lib/components/VTextField/VTextField.js +5 -5
- package/lib/components/VTextField/VTextField.js.map +1 -1
- package/lib/components/VTextarea/VTextarea.js +2 -2
- package/lib/components/VTextarea/VTextarea.js.map +1 -1
- package/lib/components/VTimePicker/VTimePicker.js.map +1 -1
- package/lib/components/VTreeview/VTreeview.js +5 -4
- package/lib/components/VTreeview/VTreeview.js.map +1 -1
- package/lib/components/VTreeview/VTreeviewNode.js +2 -1
- package/lib/components/VTreeview/VTreeviewNode.js.map +1 -1
- package/lib/components/VWindow/VWindow.js +3 -3
- package/lib/components/VWindow/VWindow.js.map +1 -1
- package/lib/directives/click-outside/index.js +2 -2
- package/lib/directives/click-outside/index.js.map +1 -1
- package/lib/directives/intersect/index.js +4 -4
- package/lib/directives/intersect/index.js.map +1 -1
- package/lib/directives/mutate/index.js +2 -2
- package/lib/directives/mutate/index.js.map +1 -1
- package/lib/directives/resize/index.js +2 -2
- package/lib/directives/resize/index.js.map +1 -1
- package/lib/directives/scroll/index.js +2 -2
- package/lib/directives/scroll/index.js.map +1 -1
- package/lib/framework.js +1 -1
- package/lib/mixins/activatable/index.js +1 -3
- package/lib/mixins/activatable/index.js.map +1 -1
- package/lib/mixins/binds-attrs/index.js.map +1 -1
- package/lib/mixins/dependent/index.js.map +1 -1
- package/lib/mixins/detachable/index.js.map +1 -1
- package/lib/mixins/overlayable/index.js +1 -1
- package/lib/mixins/overlayable/index.js.map +1 -1
- package/lib/mixins/routable/index.js +4 -3
- package/lib/mixins/routable/index.js.map +1 -1
- package/lib/util/helpers.js +1 -1
- package/lib/util/helpers.js.map +1 -1
- package/package.json +3 -2
- package/src/components/VAutocomplete/VAutocomplete.sass +0 -4
- package/src/components/VBtn/VBtn.sass +1 -1
- package/src/components/VCalendar/VCalendar.ts +3 -0
- package/src/components/VCalendar/VCalendarWeekly.ts +12 -0
- package/src/components/VCalendar/__tests__/__snapshots__/VCalendar.spec.ts.snap +165 -55
- package/src/components/VCalendar/mixins/__tests__/mouse.spec.ts +2 -2
- package/src/components/VCalendar/mixins/mouse.ts +8 -9
- package/src/components/VCarousel/VCarousel.ts +1 -0
- package/src/components/VCheckbox/VSimpleCheckbox.ts +3 -2
- package/src/components/VChip/VChip.sass +1 -1
- package/src/components/VDataTable/VDataTable.ts +4 -1
- package/src/components/VDataTable/__tests__/__snapshots__/VDataTable.spec.ts.snap +14 -14
- package/src/components/VDatePicker/VDatePicker.ts +1 -1
- package/src/components/VDialog/VDialog.sass +1 -1
- package/src/components/VDialog/VDialog.ts +9 -6
- package/src/components/VDialog/__tests__/VDialog.spec.ts +5 -5
- package/src/components/VDialog/__tests__/__snapshots__/VDialog.spec.ts.snap +4 -16
- package/src/components/VExpansionPanel/VExpansionPanel.sass +2 -2
- package/src/components/VInput/VInput.sass +3 -6
- package/src/components/VItemGroup/VItemGroup.ts +2 -2
- package/src/components/VItemGroup/__tests__/VItemGroup.spec.ts +29 -0
- package/src/components/VList/VListItem.ts +5 -3
- package/src/components/VList/__tests__/VListItem.spec.ts +12 -0
- package/src/components/VOtpInput/VOtpInput.ts +23 -43
- package/src/components/VOtpInput/__tests__/VOtpInput.spec.ts +3 -27
- package/src/components/VOverflowBtn/__tests__/__snapshots__/VOverflowBtn.spec.ts.snap +14 -10
- package/src/components/VPagination/VPagination.ts +1 -1
- package/src/components/VRadioGroup/VRadio.sass +0 -4
- package/src/components/VRadioGroup/VRadio.ts +1 -0
- package/src/components/VRangeSlider/__tests__/VRangeSlider.spec.ts +2 -2
- package/src/components/VRangeSlider/__tests__/__snapshots__/VRangeSlider.spec.ts.snap +2 -2
- package/src/components/VSelect/VSelect.sass +3 -1
- package/src/components/VSelect/VSelect.ts +2 -2
- package/src/components/VSkeletonLoader/VSkeletonLoader.sass +1 -1
- package/src/components/VSlideGroup/VSlideGroup.ts +21 -9
- package/src/components/VSlider/VSlider.ts +1 -7
- package/src/components/VSlider/__tests__/VSlider.spec.ts +3 -2
- package/src/components/VSwitch/VSwitch.sass +3 -2
- package/src/components/VTabs/VTabs.ts +10 -0
- package/src/components/VTimePicker/VTimePicker.ts +1 -1
- package/src/components/VTimeline/VTimeline.sass +16 -9
- package/src/components/VTimeline/_mixins.sass +4 -3
- package/src/globals.d.ts +6 -6
- package/src/mixins/applicationable/__tests__/applicationable.spec.ts +1 -1
- package/src/mixins/binds-attrs/index.ts +2 -2
- package/src/mixins/dependent/index.ts +3 -3
- package/src/mixins/detachable/index.ts +3 -3
- package/src/mixins/overlayable/index.ts +7 -7
- package/src/styles/components/_selection-controls.sass +3 -0
- package/src/util/helpers.ts +2 -2
- package/es5/util/component.js +0 -11
- package/es5/util/component.js.map +0 -1
- package/lib/util/component.js +0 -4
- package/lib/util/component.js.map +0 -1
- package/src/util/component.ts +0 -21
|
@@ -6911,7 +6911,7 @@ exports[`VDataTable.ts should render item slot when using group-by function 1`]
|
|
|
6911
6911
|
</i>
|
|
6912
6912
|
</span>
|
|
6913
6913
|
</button>
|
|
6914
|
-
|
|
6914
|
+
Dessert (100g serving): Frozen Yogurt
|
|
6915
6915
|
<button type="button"
|
|
6916
6916
|
class="ma-0 v-btn v-btn--icon v-btn--round theme--light v-size--small"
|
|
6917
6917
|
>
|
|
@@ -6941,7 +6941,7 @@ exports[`VDataTable.ts should render item slot when using group-by function 1`]
|
|
|
6941
6941
|
</i>
|
|
6942
6942
|
</span>
|
|
6943
6943
|
</button>
|
|
6944
|
-
|
|
6944
|
+
Dessert (100g serving): Ice cream sandwich
|
|
6945
6945
|
<button type="button"
|
|
6946
6946
|
class="ma-0 v-btn v-btn--icon v-btn--round theme--light v-size--small"
|
|
6947
6947
|
>
|
|
@@ -8477,7 +8477,7 @@ exports[`VDataTable.ts should render with group.summary scoped slot 1`] = `
|
|
|
8477
8477
|
</i>
|
|
8478
8478
|
</span>
|
|
8479
8479
|
</button>
|
|
8480
|
-
|
|
8480
|
+
Calories: 159
|
|
8481
8481
|
<button type="button"
|
|
8482
8482
|
class="ma-0 v-btn v-btn--icon v-btn--round theme--light v-size--small"
|
|
8483
8483
|
>
|
|
@@ -8551,7 +8551,7 @@ exports[`VDataTable.ts should render with group.summary scoped slot 1`] = `
|
|
|
8551
8551
|
</i>
|
|
8552
8552
|
</span>
|
|
8553
8553
|
</button>
|
|
8554
|
-
|
|
8554
|
+
Calories: 237
|
|
8555
8555
|
<button type="button"
|
|
8556
8556
|
class="ma-0 v-btn v-btn--icon v-btn--round theme--light v-size--small"
|
|
8557
8557
|
>
|
|
@@ -8625,7 +8625,7 @@ exports[`VDataTable.ts should render with group.summary scoped slot 1`] = `
|
|
|
8625
8625
|
</i>
|
|
8626
8626
|
</span>
|
|
8627
8627
|
</button>
|
|
8628
|
-
|
|
8628
|
+
Calories: 262
|
|
8629
8629
|
<button type="button"
|
|
8630
8630
|
class="ma-0 v-btn v-btn--icon v-btn--round theme--light v-size--small"
|
|
8631
8631
|
>
|
|
@@ -8699,7 +8699,7 @@ exports[`VDataTable.ts should render with group.summary scoped slot 1`] = `
|
|
|
8699
8699
|
</i>
|
|
8700
8700
|
</span>
|
|
8701
8701
|
</button>
|
|
8702
|
-
|
|
8702
|
+
Calories: 305
|
|
8703
8703
|
<button type="button"
|
|
8704
8704
|
class="ma-0 v-btn v-btn--icon v-btn--round theme--light v-size--small"
|
|
8705
8705
|
>
|
|
@@ -8773,7 +8773,7 @@ exports[`VDataTable.ts should render with group.summary scoped slot 1`] = `
|
|
|
8773
8773
|
</i>
|
|
8774
8774
|
</span>
|
|
8775
8775
|
</button>
|
|
8776
|
-
|
|
8776
|
+
Calories: 356
|
|
8777
8777
|
<button type="button"
|
|
8778
8778
|
class="ma-0 v-btn v-btn--icon v-btn--round theme--light v-size--small"
|
|
8779
8779
|
>
|
|
@@ -8988,7 +8988,7 @@ exports[`VDataTable.ts should render with grouped rows 1`] = `
|
|
|
8988
8988
|
</i>
|
|
8989
8989
|
</span>
|
|
8990
8990
|
</button>
|
|
8991
|
-
|
|
8991
|
+
Protein (g): 0
|
|
8992
8992
|
<button type="button"
|
|
8993
8993
|
class="ma-0 v-btn v-btn--icon v-btn--round theme--light v-size--small"
|
|
8994
8994
|
>
|
|
@@ -9099,7 +9099,7 @@ exports[`VDataTable.ts should render with grouped rows 1`] = `
|
|
|
9099
9099
|
</i>
|
|
9100
9100
|
</span>
|
|
9101
9101
|
</button>
|
|
9102
|
-
|
|
9102
|
+
Protein (g): 3.9
|
|
9103
9103
|
<button type="button"
|
|
9104
9104
|
class="ma-0 v-btn v-btn--icon v-btn--round theme--light v-size--small"
|
|
9105
9105
|
>
|
|
@@ -9168,7 +9168,7 @@ exports[`VDataTable.ts should render with grouped rows 1`] = `
|
|
|
9168
9168
|
</i>
|
|
9169
9169
|
</span>
|
|
9170
9170
|
</button>
|
|
9171
|
-
|
|
9171
|
+
Protein (g): 4
|
|
9172
9172
|
<button type="button"
|
|
9173
9173
|
class="ma-0 v-btn v-btn--icon v-btn--round theme--light v-size--small"
|
|
9174
9174
|
>
|
|
@@ -9237,7 +9237,7 @@ exports[`VDataTable.ts should render with grouped rows 1`] = `
|
|
|
9237
9237
|
</i>
|
|
9238
9238
|
</span>
|
|
9239
9239
|
</button>
|
|
9240
|
-
|
|
9240
|
+
Protein (g): 4.3
|
|
9241
9241
|
<button type="button"
|
|
9242
9242
|
class="ma-0 v-btn v-btn--icon v-btn--round theme--light v-size--small"
|
|
9243
9243
|
>
|
|
@@ -11644,7 +11644,7 @@ exports[`VDataTable.ts should search group-by column 1`] = `
|
|
|
11644
11644
|
</i>
|
|
11645
11645
|
</span>
|
|
11646
11646
|
</button>
|
|
11647
|
-
|
|
11647
|
+
Name: Assistance
|
|
11648
11648
|
<button type="button"
|
|
11649
11649
|
class="ma-0 v-btn v-btn--icon v-btn--round theme--light v-size--small"
|
|
11650
11650
|
>
|
|
@@ -11681,7 +11681,7 @@ exports[`VDataTable.ts should search group-by column 1`] = `
|
|
|
11681
11681
|
</i>
|
|
11682
11682
|
</span>
|
|
11683
11683
|
</button>
|
|
11684
|
-
|
|
11684
|
+
Name: Candidat
|
|
11685
11685
|
<button type="button"
|
|
11686
11686
|
class="ma-0 v-btn v-btn--icon v-btn--round theme--light v-size--small"
|
|
11687
11687
|
>
|
|
@@ -11856,7 +11856,7 @@ exports[`VDataTable.ts should search group-by column 2`] = `
|
|
|
11856
11856
|
</i>
|
|
11857
11857
|
</span>
|
|
11858
11858
|
</button>
|
|
11859
|
-
|
|
11859
|
+
Name: Candidat
|
|
11860
11860
|
<button type="button"
|
|
11861
11861
|
class="ma-0 v-btn v-btn--icon v-btn--round theme--light v-size--small"
|
|
11862
11862
|
>
|
|
@@ -231,7 +231,7 @@ export default mixins(
|
|
|
231
231
|
year: { year: 'numeric', timeZone: 'UTC' },
|
|
232
232
|
month: { month: 'long', timeZone: 'UTC' },
|
|
233
233
|
date: { weekday: 'short', month: 'short', day: 'numeric', timeZone: 'UTC' },
|
|
234
|
-
}
|
|
234
|
+
} as const
|
|
235
235
|
|
|
236
236
|
const titleDateFormatter = createNativeLocaleFormatter(this.currentLocale, titleFormats[this.type], {
|
|
237
237
|
start: 0,
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
transition: .3s map-get($transition, 'fast-in-fast-out')
|
|
10
10
|
width: 100%
|
|
11
11
|
z-index: inherit
|
|
12
|
+
outline: none
|
|
12
13
|
+elevation($dialog-elevation)
|
|
13
14
|
|
|
14
15
|
&:not(.v-dialog--fullscreen)
|
|
@@ -46,7 +47,6 @@
|
|
|
46
47
|
transition: .2s map-get($transition, 'fast-in-fast-out'), z-index 1ms
|
|
47
48
|
width: 100%
|
|
48
49
|
z-index: 6
|
|
49
|
-
outline: none
|
|
50
50
|
|
|
51
51
|
.v-dialog__container
|
|
52
52
|
display: none
|
|
@@ -178,9 +178,9 @@ export default baseMixins.extend({
|
|
|
178
178
|
// Double nextTick to wait for lazy content to be generated
|
|
179
179
|
this.$nextTick(() => {
|
|
180
180
|
this.$nextTick(() => {
|
|
181
|
-
if (!this.$refs.
|
|
181
|
+
if (!this.$refs.dialog?.contains(document.activeElement)) {
|
|
182
182
|
this.previousActiveElement = document.activeElement as HTMLElement
|
|
183
|
-
this.$refs.
|
|
183
|
+
this.$refs.dialog?.focus()
|
|
184
184
|
}
|
|
185
185
|
this.bind()
|
|
186
186
|
})
|
|
@@ -222,10 +222,11 @@ export default baseMixins.extend({
|
|
|
222
222
|
|
|
223
223
|
if (
|
|
224
224
|
!!target &&
|
|
225
|
+
this.$refs.dialog &&
|
|
225
226
|
// It isn't the document or the dialog body
|
|
226
|
-
![document, this.$refs.
|
|
227
|
+
![document, this.$refs.dialog].includes(target) &&
|
|
227
228
|
// It isn't inside the dialog body
|
|
228
|
-
!this.$refs.
|
|
229
|
+
!this.$refs.dialog.contains(target) &&
|
|
229
230
|
// We're the topmost dialog
|
|
230
231
|
this.activeZIndex >= this.getMaxZIndex() &&
|
|
231
232
|
// It isn't inside a dependent element (like a menu)
|
|
@@ -233,7 +234,7 @@ export default baseMixins.extend({
|
|
|
233
234
|
// So we must have focused something outside the dialog and its children
|
|
234
235
|
) {
|
|
235
236
|
// Find and focus the first available element inside the dialog
|
|
236
|
-
const focusable = this.$refs.
|
|
237
|
+
const focusable = this.$refs.dialog.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])')
|
|
237
238
|
const el = [...focusable].find(el => !el.hasAttribute('disabled')) as HTMLElement | undefined
|
|
238
239
|
el && el.focus()
|
|
239
240
|
}
|
|
@@ -251,7 +252,6 @@ export default baseMixins.extend({
|
|
|
251
252
|
class: this.contentClasses,
|
|
252
253
|
attrs: {
|
|
253
254
|
role: 'dialog',
|
|
254
|
-
tabindex: this.isActive ? 0 : undefined,
|
|
255
255
|
'aria-modal': this.hideOverlay ? undefined : 'true',
|
|
256
256
|
...this.getScopeIdAttrs(),
|
|
257
257
|
},
|
|
@@ -278,6 +278,9 @@ export default baseMixins.extend({
|
|
|
278
278
|
genInnerContent () {
|
|
279
279
|
const data: VNodeData = {
|
|
280
280
|
class: this.classes,
|
|
281
|
+
attrs: {
|
|
282
|
+
tabindex: this.isActive ? 0 : undefined,
|
|
283
|
+
},
|
|
281
284
|
ref: 'dialog',
|
|
282
285
|
directives: [
|
|
283
286
|
{
|
|
@@ -308,15 +308,15 @@ describe('VDialog.ts', () => {
|
|
|
308
308
|
propsData: { eager: true },
|
|
309
309
|
})
|
|
310
310
|
|
|
311
|
-
const
|
|
311
|
+
const dialog = wrapper.find('.v-dialog')
|
|
312
312
|
|
|
313
|
-
expect(
|
|
314
|
-
expect(
|
|
313
|
+
expect(dialog.html()).toMatchSnapshot()
|
|
314
|
+
expect(dialog.element.tabIndex).toBe(-1)
|
|
315
315
|
|
|
316
316
|
wrapper.setData({ isActive: true })
|
|
317
317
|
|
|
318
|
-
expect(
|
|
319
|
-
expect(
|
|
318
|
+
expect(dialog.element.tabIndex).toBe(0)
|
|
319
|
+
expect(dialog.html()).toMatchSnapshot()
|
|
320
320
|
})
|
|
321
321
|
|
|
322
322
|
// https://github.com/vuetifyjs/vuetify/issues/8697
|
|
@@ -1,29 +1,17 @@
|
|
|
1
1
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
2
|
|
|
3
3
|
exports[`VDialog.ts should only set tabindex if active 1`] = `
|
|
4
|
-
<div
|
|
5
|
-
|
|
6
|
-
class="v-dialog__content"
|
|
7
|
-
style="z-index: 0;"
|
|
4
|
+
<div class="v-dialog"
|
|
5
|
+
style="transform-origin: center center; display: none;"
|
|
8
6
|
>
|
|
9
|
-
<div class="v-dialog"
|
|
10
|
-
style="transform-origin: center center; display: none;"
|
|
11
|
-
>
|
|
12
|
-
</div>
|
|
13
7
|
</div>
|
|
14
8
|
`;
|
|
15
9
|
|
|
16
10
|
exports[`VDialog.ts should only set tabindex if active 2`] = `
|
|
17
|
-
<div
|
|
18
|
-
|
|
19
|
-
class="v-dialog__content v-dialog__content--active"
|
|
20
|
-
style="z-index: 202; z-index: 202;"
|
|
11
|
+
<div class="v-dialog v-dialog--active"
|
|
12
|
+
style="transform-origin: center center;"
|
|
21
13
|
tabindex="0"
|
|
22
14
|
>
|
|
23
|
-
<div class="v-dialog v-dialog--active"
|
|
24
|
-
style="transform-origin: center center;"
|
|
25
|
-
>
|
|
26
|
-
</div>
|
|
27
15
|
</div>
|
|
28
16
|
`;
|
|
29
17
|
|
|
@@ -100,20 +100,17 @@
|
|
|
100
100
|
|
|
101
101
|
&__slot
|
|
102
102
|
align-items: center
|
|
103
|
-
color: inherit
|
|
104
103
|
display: flex
|
|
105
104
|
margin-bottom: $input-slot-margin-bottom
|
|
106
105
|
min-height: inherit
|
|
107
106
|
position: relative
|
|
108
107
|
transition: $primary-transition
|
|
108
|
+
transition-property: height, min-height
|
|
109
109
|
width: 100%
|
|
110
110
|
|
|
111
111
|
&--dense > .v-input__control > .v-input__slot
|
|
112
112
|
margin-bottom: $input-dense-slot-margin-bottom
|
|
113
113
|
|
|
114
|
-
&--is-disabled:not(.v-input--is-readonly)
|
|
115
|
-
pointer-events: none
|
|
116
|
-
|
|
117
114
|
&--is-loading > .v-input__control > .v-input__slot
|
|
118
115
|
&:before,
|
|
119
116
|
&:after
|
|
@@ -128,8 +125,8 @@
|
|
|
128
125
|
|
|
129
126
|
&--hide-spin-buttons
|
|
130
127
|
input::-webkit-outer-spin-button,
|
|
131
|
-
input::-webkit-inner-spin-button
|
|
128
|
+
input::-webkit-inner-spin-button
|
|
132
129
|
-webkit-appearance: none
|
|
133
130
|
margin: 0
|
|
134
|
-
input[type=number]
|
|
131
|
+
input[type=number]
|
|
135
132
|
-moz-appearance: textfield
|
|
@@ -219,7 +219,7 @@ export const BaseItemGroup = mixins(
|
|
|
219
219
|
? this.internalValue
|
|
220
220
|
: []
|
|
221
221
|
const internalValue = defaultValue.slice()
|
|
222
|
-
const index = internalValue.findIndex(val => val
|
|
222
|
+
const index = internalValue.findIndex(val => this.valueComparator(val, value))
|
|
223
223
|
|
|
224
224
|
if (
|
|
225
225
|
this.mandatory &&
|
|
@@ -245,7 +245,7 @@ export const BaseItemGroup = mixins(
|
|
|
245
245
|
this.internalValue = internalValue
|
|
246
246
|
},
|
|
247
247
|
updateSingle (value: any) {
|
|
248
|
-
const isSame =
|
|
248
|
+
const isSame = this.valueComparator(this.internalValue, value)
|
|
249
249
|
|
|
250
250
|
if (this.mandatory && isSame) return
|
|
251
251
|
|
|
@@ -217,6 +217,18 @@ describe('VItemGroup', () => {
|
|
|
217
217
|
wrapper.vm.updateSingle('foo')
|
|
218
218
|
expect(wrapper.vm.internalValue).toBeUndefined()
|
|
219
219
|
|
|
220
|
+
// Toggling on and off object references
|
|
221
|
+
wrapper.vm.updateSingle({ foo: 'foo' })
|
|
222
|
+
expect(wrapper.vm.internalValue).toEqual({ foo: 'foo' })
|
|
223
|
+
wrapper.vm.updateSingle({ foo: 'foo' })
|
|
224
|
+
expect(wrapper.vm.internalValue).toBeUndefined()
|
|
225
|
+
|
|
226
|
+
// Toggling on and off with custom comparator
|
|
227
|
+
wrapper.setProps({ valueComparator: (a: any, b: any) => a?.startsWith(b?.[0]), value: 'foo' })
|
|
228
|
+
expect(wrapper.vm.internalValue).toBe('foo')
|
|
229
|
+
wrapper.vm.updateSingle('foobar')
|
|
230
|
+
expect(wrapper.vm.internalValue).toBeUndefined()
|
|
231
|
+
|
|
220
232
|
wrapper.setProps({ mandatory: true })
|
|
221
233
|
|
|
222
234
|
// Toggling off single mandatory
|
|
@@ -237,6 +249,12 @@ describe('VItemGroup', () => {
|
|
|
237
249
|
wrapper.vm.updateMultiple('foo')
|
|
238
250
|
expect(wrapper.vm.internalValue).toEqual([])
|
|
239
251
|
|
|
252
|
+
// Toggling on and off object references
|
|
253
|
+
wrapper.vm.updateMultiple({ foo: 'foo' })
|
|
254
|
+
expect(wrapper.vm.internalValue).toEqual([{ foo: 'foo' }])
|
|
255
|
+
wrapper.vm.updateMultiple({ foo: 'foo' })
|
|
256
|
+
expect(wrapper.vm.internalValue).toEqual([])
|
|
257
|
+
|
|
240
258
|
wrapper.setProps({ mandatory: true })
|
|
241
259
|
|
|
242
260
|
// Toggling off single mandatory
|
|
@@ -256,6 +274,17 @@ describe('VItemGroup', () => {
|
|
|
256
274
|
expect(wrapper.vm.internalValue).toEqual(['foo', 'bar', 'fizz'])
|
|
257
275
|
})
|
|
258
276
|
|
|
277
|
+
it('should update a multiple item group with a custom comparator', () => {
|
|
278
|
+
const wrapper = mountFunction({
|
|
279
|
+
propsData: { multiple: true },
|
|
280
|
+
})
|
|
281
|
+
|
|
282
|
+
wrapper.setProps({ valueComparator: (a: any, b: any) => a?.startsWith(b?.[0]), value: ['foo'] })
|
|
283
|
+
expect(wrapper.vm.internalValue).toEqual(['foo'])
|
|
284
|
+
wrapper.vm.updateMultiple('foobar')
|
|
285
|
+
expect(wrapper.vm.internalValue).toEqual([])
|
|
286
|
+
})
|
|
287
|
+
|
|
259
288
|
it('should update value if mandatory and dynamic items', async () => {
|
|
260
289
|
const wrapper = mountFunction({
|
|
261
290
|
propsData: {
|
|
@@ -168,10 +168,12 @@ export default baseMixins.extend<options>().extend({
|
|
|
168
168
|
data[this.to ? 'nativeOn' : 'on'] = {
|
|
169
169
|
...data[this.to ? 'nativeOn' : 'on'],
|
|
170
170
|
keydown: (e: KeyboardEvent) => {
|
|
171
|
-
|
|
172
|
-
|
|
171
|
+
if (!this.disabled) {
|
|
172
|
+
/* istanbul ignore else */
|
|
173
|
+
if (e.keyCode === keyCodes.enter) this.click(e)
|
|
173
174
|
|
|
174
|
-
|
|
175
|
+
this.$emit('keydown', e)
|
|
176
|
+
}
|
|
175
177
|
},
|
|
176
178
|
}
|
|
177
179
|
|
|
@@ -234,4 +234,16 @@ describe('VListItem.ts', () => {
|
|
|
234
234
|
wrapper2.vm.toggle()
|
|
235
235
|
expect(wrapper2.vm.isActive).toBeTruthy()
|
|
236
236
|
})
|
|
237
|
+
|
|
238
|
+
it('should not react to keydown.enter when disabled', () => {
|
|
239
|
+
const click = jest.fn()
|
|
240
|
+
const wrapper = mountFunction({
|
|
241
|
+
methods: { click },
|
|
242
|
+
propsData: { disabled: true },
|
|
243
|
+
})
|
|
244
|
+
|
|
245
|
+
wrapper.trigger('keydown.enter')
|
|
246
|
+
|
|
247
|
+
expect(click).not.toHaveBeenCalled()
|
|
248
|
+
})
|
|
237
249
|
})
|
|
@@ -49,7 +49,6 @@ export default baseMixins.extend<options>().extend({
|
|
|
49
49
|
},
|
|
50
50
|
|
|
51
51
|
data: () => ({
|
|
52
|
-
badInput: false,
|
|
53
52
|
initialValue: null,
|
|
54
53
|
isBooted: false,
|
|
55
54
|
otp: [] as string[],
|
|
@@ -66,9 +65,6 @@ export default baseMixins.extend<options>().extend({
|
|
|
66
65
|
'v-otp-input--plain': this.plain,
|
|
67
66
|
}
|
|
68
67
|
},
|
|
69
|
-
isDirty (): boolean {
|
|
70
|
-
return VInput.options.computed.isDirty.call(this) || this.badInput
|
|
71
|
-
},
|
|
72
68
|
},
|
|
73
69
|
|
|
74
70
|
watch: {
|
|
@@ -159,18 +155,17 @@ export default baseMixins.extend<options>().extend({
|
|
|
159
155
|
},
|
|
160
156
|
attrs: {
|
|
161
157
|
...this.attrs$,
|
|
158
|
+
autocomplete: 'one-time-code',
|
|
162
159
|
disabled: this.isDisabled,
|
|
163
160
|
readonly: this.isReadonly,
|
|
164
161
|
type: this.type,
|
|
165
162
|
id: `${this.computedId}--${otpIdx}`,
|
|
166
163
|
class: `otp-field-box--${otpIdx}`,
|
|
167
|
-
maxlength: 1,
|
|
168
164
|
},
|
|
169
165
|
on: Object.assign(listeners, {
|
|
170
166
|
blur: this.onBlur,
|
|
171
167
|
input: (e: Event) => this.onInput(e, otpIdx),
|
|
172
168
|
focus: (e: Event) => this.onFocus(e, otpIdx),
|
|
173
|
-
paste: (e: ClipboardEvent) => this.onPaste(e, otpIdx),
|
|
174
169
|
keydown: this.onKeyDown,
|
|
175
170
|
keyup: (e: KeyboardEvent) => this.onKeyUp(e, otpIdx),
|
|
176
171
|
}),
|
|
@@ -212,22 +207,31 @@ export default baseMixins.extend<options>().extend({
|
|
|
212
207
|
e && this.$emit('focus', e)
|
|
213
208
|
}
|
|
214
209
|
},
|
|
215
|
-
onInput (e: Event,
|
|
210
|
+
onInput (e: Event, index: number) {
|
|
211
|
+
const maxCursor = +this.length - 1
|
|
212
|
+
|
|
216
213
|
const target = e.target as HTMLInputElement
|
|
217
214
|
const value = target.value
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
215
|
+
const inputDataArray = value?.split('') || []
|
|
216
|
+
|
|
217
|
+
const newOtp: string[] = [...this.otp]
|
|
218
|
+
for (let i = 0; i < inputDataArray.length; i++) {
|
|
219
|
+
const appIdx = index + i
|
|
220
|
+
if (appIdx > maxCursor) break
|
|
221
|
+
newOtp[appIdx] = inputDataArray[i].toString()
|
|
222
|
+
}
|
|
223
|
+
if (!inputDataArray.length) {
|
|
224
|
+
newOtp.splice(index, 1)
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
this.otp = newOtp
|
|
228
|
+
this.internalValue = this.otp.join('')
|
|
222
229
|
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
this.clearFocus(otpIdx)
|
|
229
|
-
this.onCompleted()
|
|
230
|
-
}
|
|
230
|
+
if (index + inputDataArray.length >= +this.length) {
|
|
231
|
+
this.onCompleted()
|
|
232
|
+
this.clearFocus(index)
|
|
233
|
+
} else if (inputDataArray.length) {
|
|
234
|
+
this.changeFocus(index + inputDataArray.length)
|
|
231
235
|
}
|
|
232
236
|
},
|
|
233
237
|
clearFocus (index: number) {
|
|
@@ -255,30 +259,6 @@ export default baseMixins.extend<options>().extend({
|
|
|
255
259
|
|
|
256
260
|
VInput.options.methods.onMouseUp.call(this, e)
|
|
257
261
|
},
|
|
258
|
-
onPaste (event: ClipboardEvent, index: number) {
|
|
259
|
-
const maxCursor = +this.length - 1
|
|
260
|
-
const inputVal = event?.clipboardData?.getData('Text')
|
|
261
|
-
const inputDataArray = inputVal?.split('') || []
|
|
262
|
-
event.preventDefault()
|
|
263
|
-
const newOtp: string[] = [...this.otp]
|
|
264
|
-
for (let i = 0; i < inputDataArray.length; i++) {
|
|
265
|
-
const appIdx = index + i
|
|
266
|
-
if (appIdx > maxCursor) break
|
|
267
|
-
newOtp[appIdx] = inputDataArray[i].toString()
|
|
268
|
-
}
|
|
269
|
-
this.otp = newOtp
|
|
270
|
-
this.internalValue = this.otp.join('')
|
|
271
|
-
const targetFocus = Math.min(index + inputDataArray.length, maxCursor)
|
|
272
|
-
this.changeFocus(targetFocus)
|
|
273
|
-
|
|
274
|
-
if (newOtp.length === +this.length) { this.onCompleted(); this.clearFocus(targetFocus) }
|
|
275
|
-
},
|
|
276
|
-
applyValue (index: number, inputVal: string, next: Function) {
|
|
277
|
-
const newOtp: string[] = [...this.otp]
|
|
278
|
-
newOtp[index] = inputVal
|
|
279
|
-
this.otp = newOtp
|
|
280
|
-
next()
|
|
281
|
-
},
|
|
282
262
|
changeFocus (index: number) {
|
|
283
263
|
this.onFocus(undefined, index || 0)
|
|
284
264
|
},
|
|
@@ -173,14 +173,7 @@ describe('VOtpInput.ts', () => {
|
|
|
173
173
|
expect(change).toHaveBeenCalledTimes(2)
|
|
174
174
|
})
|
|
175
175
|
|
|
176
|
-
it('should process input
|
|
177
|
-
const getData = jest.fn(() => '1337078')
|
|
178
|
-
const event = {
|
|
179
|
-
clipboardData: {
|
|
180
|
-
getData,
|
|
181
|
-
},
|
|
182
|
-
}
|
|
183
|
-
|
|
176
|
+
it('should process input on paste', async () => {
|
|
184
177
|
const wrapper = mountFunction({})
|
|
185
178
|
|
|
186
179
|
const input = wrapper.findAll('input').at(0)
|
|
@@ -190,30 +183,13 @@ describe('VOtpInput.ts', () => {
|
|
|
190
183
|
await wrapper.vm.$nextTick()
|
|
191
184
|
expect(document.activeElement === element).toBe(true)
|
|
192
185
|
|
|
193
|
-
|
|
186
|
+
element.value = '1337078'
|
|
187
|
+
input.trigger('input')
|
|
194
188
|
await wrapper.vm.$nextTick()
|
|
195
189
|
|
|
196
190
|
expect(wrapper.vm.otp).toStrictEqual('133707'.split(''))
|
|
197
191
|
})
|
|
198
192
|
|
|
199
|
-
it('should process input when paste event with empty event', async () => {
|
|
200
|
-
const event = {}
|
|
201
|
-
|
|
202
|
-
const wrapper = mountFunction({})
|
|
203
|
-
|
|
204
|
-
const input = wrapper.findAll('input').at(0)
|
|
205
|
-
|
|
206
|
-
const element = input.element as HTMLInputElement
|
|
207
|
-
input.trigger('focus')
|
|
208
|
-
await wrapper.vm.$nextTick()
|
|
209
|
-
expect(document.activeElement === element).toBe(true)
|
|
210
|
-
|
|
211
|
-
input.trigger('paste', event)
|
|
212
|
-
await wrapper.vm.$nextTick()
|
|
213
|
-
|
|
214
|
-
expect(wrapper.vm.otp).toStrictEqual(''.split(''))
|
|
215
|
-
})
|
|
216
|
-
|
|
217
193
|
it('should clear cursor when input typing is done', async () => {
|
|
218
194
|
const onFinish = jest.fn()
|
|
219
195
|
const clearFocus = jest.fn()
|
|
@@ -6,17 +6,17 @@ exports[`VOverflowBtn.js should show label with persistentPlaceholder property s
|
|
|
6
6
|
<div role="combobox"
|
|
7
7
|
aria-haspopup="listbox"
|
|
8
8
|
aria-expanded="false"
|
|
9
|
-
aria-owns="list-
|
|
9
|
+
aria-owns="list-15"
|
|
10
10
|
class="v-input__slot"
|
|
11
11
|
>
|
|
12
12
|
<div class="v-select__slot">
|
|
13
|
-
<label for="input-
|
|
13
|
+
<label for="input-15"
|
|
14
14
|
class="v-label theme--light"
|
|
15
15
|
>
|
|
16
16
|
Some label
|
|
17
17
|
</label>
|
|
18
18
|
<div class="v-select__selections">
|
|
19
|
-
<input id="input-
|
|
19
|
+
<input id="input-15"
|
|
20
20
|
readonly="readonly"
|
|
21
21
|
type="text"
|
|
22
22
|
>
|
|
@@ -54,17 +54,17 @@ exports[`VOverflowBtn.js should show label with persistentPlaceholder property s
|
|
|
54
54
|
<div role="combobox"
|
|
55
55
|
aria-haspopup="listbox"
|
|
56
56
|
aria-expanded="true"
|
|
57
|
-
aria-owns="list-
|
|
57
|
+
aria-owns="list-15"
|
|
58
58
|
class="v-input__slot"
|
|
59
59
|
>
|
|
60
60
|
<div class="v-select__slot">
|
|
61
|
-
<label for="input-
|
|
61
|
+
<label for="input-15"
|
|
62
62
|
class="v-label theme--light"
|
|
63
63
|
>
|
|
64
64
|
Some label
|
|
65
65
|
</label>
|
|
66
66
|
<div class="v-select__selections">
|
|
67
|
-
<input id="input-
|
|
67
|
+
<input id="input-15"
|
|
68
68
|
readonly="readonly"
|
|
69
69
|
type="text"
|
|
70
70
|
>
|
|
@@ -145,7 +145,7 @@ exports[`VOverflowBtn.js should use default autocomplete selections 1`] = `
|
|
|
145
145
|
`;
|
|
146
146
|
|
|
147
147
|
exports[`VOverflowBtn.js should use default autocomplete selections 2`] = `
|
|
148
|
-
<div class="v-input v-input--is-label-active v-input--is-dirty theme--light v-text-field v-text-field--single-line v-select v-
|
|
148
|
+
<div class="v-input v-input--is-label-active v-input--is-dirty theme--light v-text-field v-text-field--single-line v-select v-autocomplete v-overflow-btn v-overflow-btn--segmented">
|
|
149
149
|
<div class="v-input__control">
|
|
150
150
|
<div role="combobox"
|
|
151
151
|
aria-haspopup="listbox"
|
|
@@ -155,9 +155,13 @@ exports[`VOverflowBtn.js should use default autocomplete selections 2`] = `
|
|
|
155
155
|
>
|
|
156
156
|
<div class="v-select__slot">
|
|
157
157
|
<div class="v-select__selections">
|
|
158
|
-
<
|
|
159
|
-
|
|
160
|
-
|
|
158
|
+
<button type="button"
|
|
159
|
+
class="v-btn v-btn--text theme--light v-size--default"
|
|
160
|
+
>
|
|
161
|
+
<span class="v-btn__content">
|
|
162
|
+
foo
|
|
163
|
+
</span>
|
|
164
|
+
</button>
|
|
161
165
|
<input id="input-1"
|
|
162
166
|
readonly="readonly"
|
|
163
167
|
type="text"
|