vuetify 2.6.16 → 2.7.1
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 +33 -1
- package/dist/json/tags.json +8 -0
- package/dist/json/web-types.json +144 -25
- package/dist/vuetify.css +52 -9
- package/dist/vuetify.css.map +1 -1
- package/dist/vuetify.js +688 -259
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +2 -2
- package/es5/components/VCalendar/mixins/calendar-base.js +1 -1
- package/es5/components/VCalendar/mixins/calendar-base.js.map +1 -1
- package/es5/components/VDataTable/VDataTable.js +96 -61
- package/es5/components/VDataTable/VDataTable.js.map +1 -1
- package/es5/components/VExpansionPanel/VExpansionPanelContent.js +3 -1
- package/es5/components/VExpansionPanel/VExpansionPanelContent.js.map +1 -1
- package/es5/components/VExpansionPanel/VExpansionPanelHeader.js +3 -1
- package/es5/components/VExpansionPanel/VExpansionPanelHeader.js.map +1 -1
- package/es5/components/VInput/VInput.js +12 -1
- package/es5/components/VInput/VInput.js.map +1 -1
- package/es5/components/VItemGroup/VItem.js +18 -2
- package/es5/components/VItemGroup/VItem.js.map +1 -1
- package/es5/components/VMenu/VMenu.js +11 -3
- package/es5/components/VMenu/VMenu.js.map +1 -1
- package/es5/components/VPagination/VPagination.js +8 -2
- package/es5/components/VPagination/VPagination.js.map +1 -1
- package/es5/components/VRadioGroup/VRadio.js +14 -4
- package/es5/components/VRadioGroup/VRadio.js.map +1 -1
- package/es5/components/VSelect/VSelect.js +3 -1
- package/es5/components/VSelect/VSelect.js.map +1 -1
- package/es5/components/VSkeletonLoader/VSkeletonLoader.js +10 -5
- package/es5/components/VSkeletonLoader/VSkeletonLoader.js.map +1 -1
- package/es5/components/VSlideGroup/VSlideGroup.js +5 -1
- package/es5/components/VSlideGroup/VSlideGroup.js.map +1 -1
- package/es5/components/VTabs/VTab.js +4 -0
- package/es5/components/VTabs/VTab.js.map +1 -1
- package/es5/components/VTimePicker/VTimePicker.js +17 -0
- package/es5/components/VTimePicker/VTimePicker.js.map +1 -1
- package/es5/framework.js +1 -1
- package/es5/locale/af.js +7 -1
- package/es5/locale/af.js.map +1 -1
- package/es5/locale/ar.js +7 -1
- package/es5/locale/ar.js.map +1 -1
- package/es5/locale/az.js +7 -1
- package/es5/locale/az.js.map +1 -1
- package/es5/locale/bg.js +7 -1
- package/es5/locale/bg.js.map +1 -1
- package/es5/locale/ca.js +7 -1
- package/es5/locale/ca.js.map +1 -1
- package/es5/locale/ckb.js +7 -1
- package/es5/locale/ckb.js.map +1 -1
- package/es5/locale/cs.js +7 -1
- package/es5/locale/cs.js.map +1 -1
- package/es5/locale/da.js +7 -1
- package/es5/locale/da.js.map +1 -1
- package/es5/locale/de.js +7 -1
- package/es5/locale/de.js.map +1 -1
- package/es5/locale/el.js +7 -1
- package/es5/locale/el.js.map +1 -1
- package/es5/locale/en.js +7 -1
- package/es5/locale/en.js.map +1 -1
- package/es5/locale/es.js +7 -1
- package/es5/locale/es.js.map +1 -1
- package/es5/locale/et.js +7 -1
- package/es5/locale/et.js.map +1 -1
- package/es5/locale/fa.js +7 -1
- package/es5/locale/fa.js.map +1 -1
- package/es5/locale/fi.js +7 -1
- package/es5/locale/fi.js.map +1 -1
- package/es5/locale/fr.js +7 -1
- package/es5/locale/fr.js.map +1 -1
- package/es5/locale/he.js +7 -1
- package/es5/locale/he.js.map +1 -1
- package/es5/locale/hr.js +7 -1
- package/es5/locale/hr.js.map +1 -1
- package/es5/locale/hu.js +7 -1
- package/es5/locale/hu.js.map +1 -1
- package/es5/locale/id.js +7 -1
- package/es5/locale/id.js.map +1 -1
- package/es5/locale/it.js +7 -1
- package/es5/locale/it.js.map +1 -1
- package/es5/locale/ja.js +7 -1
- package/es5/locale/ja.js.map +1 -1
- package/es5/locale/ko.js +7 -1
- package/es5/locale/ko.js.map +1 -1
- package/es5/locale/lt.js +7 -1
- package/es5/locale/lt.js.map +1 -1
- package/es5/locale/lv.js +7 -1
- package/es5/locale/lv.js.map +1 -1
- package/es5/locale/nl.js +7 -1
- package/es5/locale/nl.js.map +1 -1
- package/es5/locale/no.js +7 -1
- package/es5/locale/no.js.map +1 -1
- package/es5/locale/pl.js +7 -1
- package/es5/locale/pl.js.map +1 -1
- package/es5/locale/pt.js +7 -1
- package/es5/locale/pt.js.map +1 -1
- package/es5/locale/ro.js +7 -1
- package/es5/locale/ro.js.map +1 -1
- package/es5/locale/ru.js +7 -1
- package/es5/locale/ru.js.map +1 -1
- package/es5/locale/sk.js +7 -1
- package/es5/locale/sk.js.map +1 -1
- package/es5/locale/sl.js +7 -1
- package/es5/locale/sl.js.map +1 -1
- package/es5/locale/sr-Cyrl.js +7 -1
- package/es5/locale/sr-Cyrl.js.map +1 -1
- package/es5/locale/sr-Latn.js +7 -1
- package/es5/locale/sr-Latn.js.map +1 -1
- package/es5/locale/sv.js +7 -1
- package/es5/locale/sv.js.map +1 -1
- package/es5/locale/th.js +7 -1
- package/es5/locale/th.js.map +1 -1
- package/es5/locale/tr.js +7 -1
- package/es5/locale/tr.js.map +1 -1
- package/es5/locale/uk.js +7 -1
- package/es5/locale/uk.js.map +1 -1
- package/es5/locale/vi.js +7 -1
- package/es5/locale/vi.js.map +1 -1
- package/es5/locale/zh-Hans.js +7 -1
- package/es5/locale/zh-Hans.js.map +1 -1
- package/es5/locale/zh-Hant.js +7 -1
- package/es5/locale/zh-Hant.js.map +1 -1
- package/es5/mixins/groupable/index.js +9 -1
- package/es5/mixins/groupable/index.js.map +1 -1
- package/es5/{components/VCalendar/mixins/mouse.js → mixins/mouse/index.js} +14 -6
- package/es5/mixins/mouse/index.js.map +1 -0
- package/es5/mixins/validatable/index.js +14 -4
- package/es5/mixins/validatable/index.js.map +1 -1
- package/lib/components/VCalendar/mixins/calendar-base.js +1 -1
- package/lib/components/VCalendar/mixins/calendar-base.js.map +1 -1
- package/lib/components/VDataTable/VDataTable.js +56 -24
- package/lib/components/VDataTable/VDataTable.js.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanelContent.js +3 -1
- package/lib/components/VExpansionPanel/VExpansionPanelContent.js.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanelHeader.js +3 -1
- package/lib/components/VExpansionPanel/VExpansionPanelHeader.js.map +1 -1
- package/lib/components/VInput/VInput.js +11 -1
- package/lib/components/VInput/VInput.js.map +1 -1
- package/lib/components/VItemGroup/VItem.js +14 -3
- package/lib/components/VItemGroup/VItem.js.map +1 -1
- package/lib/components/VMenu/VMenu.js +7 -0
- package/lib/components/VMenu/VMenu.js.map +1 -1
- package/lib/components/VPagination/VPagination.js +8 -2
- package/lib/components/VPagination/VPagination.js.map +1 -1
- package/lib/components/VRadioGroup/VRadio.js +14 -4
- package/lib/components/VRadioGroup/VRadio.js.map +1 -1
- package/lib/components/VSelect/VSelect.js +4 -1
- package/lib/components/VSelect/VSelect.js.map +1 -1
- package/lib/components/VSkeletonLoader/VSkeletonLoader.js +10 -5
- package/lib/components/VSkeletonLoader/VSkeletonLoader.js.map +1 -1
- package/lib/components/VSlideGroup/VSlideGroup.js +5 -1
- package/lib/components/VSlideGroup/VSlideGroup.js.map +1 -1
- package/lib/components/VTabs/VTab.js +4 -0
- package/lib/components/VTabs/VTab.js.map +1 -1
- package/lib/components/VTimePicker/VTimePicker.js +19 -0
- package/lib/components/VTimePicker/VTimePicker.js.map +1 -1
- package/lib/framework.js +1 -1
- package/lib/locale/af.js +7 -1
- package/lib/locale/af.js.map +1 -1
- package/lib/locale/ar.js +7 -1
- package/lib/locale/ar.js.map +1 -1
- package/lib/locale/az.js +7 -1
- package/lib/locale/az.js.map +1 -1
- package/lib/locale/bg.js +7 -1
- package/lib/locale/bg.js.map +1 -1
- package/lib/locale/ca.js +7 -1
- package/lib/locale/ca.js.map +1 -1
- package/lib/locale/ckb.js +7 -1
- package/lib/locale/ckb.js.map +1 -1
- package/lib/locale/cs.js +7 -1
- package/lib/locale/cs.js.map +1 -1
- package/lib/locale/da.js +7 -1
- package/lib/locale/da.js.map +1 -1
- package/lib/locale/de.js +7 -1
- package/lib/locale/de.js.map +1 -1
- package/lib/locale/el.js +7 -1
- package/lib/locale/el.js.map +1 -1
- package/lib/locale/en.js +7 -1
- package/lib/locale/en.js.map +1 -1
- package/lib/locale/es.js +7 -1
- package/lib/locale/es.js.map +1 -1
- package/lib/locale/et.js +7 -1
- package/lib/locale/et.js.map +1 -1
- package/lib/locale/fa.js +7 -1
- package/lib/locale/fa.js.map +1 -1
- package/lib/locale/fi.js +7 -1
- package/lib/locale/fi.js.map +1 -1
- package/lib/locale/fr.js +7 -1
- package/lib/locale/fr.js.map +1 -1
- package/lib/locale/he.js +7 -1
- package/lib/locale/he.js.map +1 -1
- package/lib/locale/hr.js +7 -1
- package/lib/locale/hr.js.map +1 -1
- package/lib/locale/hu.js +7 -1
- package/lib/locale/hu.js.map +1 -1
- package/lib/locale/id.js +7 -1
- package/lib/locale/id.js.map +1 -1
- package/lib/locale/it.js +7 -1
- package/lib/locale/it.js.map +1 -1
- package/lib/locale/ja.js +7 -1
- package/lib/locale/ja.js.map +1 -1
- package/lib/locale/ko.js +7 -1
- package/lib/locale/ko.js.map +1 -1
- package/lib/locale/lt.js +7 -1
- package/lib/locale/lt.js.map +1 -1
- package/lib/locale/lv.js +7 -1
- package/lib/locale/lv.js.map +1 -1
- package/lib/locale/nl.js +7 -1
- package/lib/locale/nl.js.map +1 -1
- package/lib/locale/no.js +7 -1
- package/lib/locale/no.js.map +1 -1
- package/lib/locale/pl.js +7 -1
- package/lib/locale/pl.js.map +1 -1
- package/lib/locale/pt.js +7 -1
- package/lib/locale/pt.js.map +1 -1
- package/lib/locale/ro.js +7 -1
- package/lib/locale/ro.js.map +1 -1
- package/lib/locale/ru.js +7 -1
- package/lib/locale/ru.js.map +1 -1
- package/lib/locale/sk.js +7 -1
- package/lib/locale/sk.js.map +1 -1
- package/lib/locale/sl.js +7 -1
- package/lib/locale/sl.js.map +1 -1
- package/lib/locale/sr-Cyrl.js +7 -1
- package/lib/locale/sr-Cyrl.js.map +1 -1
- package/lib/locale/sr-Latn.js +7 -1
- package/lib/locale/sr-Latn.js.map +1 -1
- package/lib/locale/sv.js +7 -1
- package/lib/locale/sv.js.map +1 -1
- package/lib/locale/th.js +7 -1
- package/lib/locale/th.js.map +1 -1
- package/lib/locale/tr.js +7 -1
- package/lib/locale/tr.js.map +1 -1
- package/lib/locale/uk.js +7 -1
- package/lib/locale/uk.js.map +1 -1
- package/lib/locale/vi.js +7 -1
- package/lib/locale/vi.js.map +1 -1
- package/lib/locale/zh-Hans.js +7 -1
- package/lib/locale/zh-Hans.js.map +1 -1
- package/lib/locale/zh-Hant.js +7 -1
- package/lib/locale/zh-Hant.js.map +1 -1
- package/lib/mixins/groupable/index.js +9 -1
- package/lib/mixins/groupable/index.js.map +1 -1
- package/lib/{components/VCalendar/mixins/mouse.js → mixins/mouse/index.js} +12 -6
- package/lib/mixins/mouse/index.js.map +1 -0
- package/lib/mixins/validatable/index.js +14 -4
- package/lib/mixins/validatable/index.js.map +1 -1
- package/package.json +2 -2
- package/src/components/VCalendar/mixins/calendar-base.ts +1 -1
- package/src/components/VDataTable/VDataTable.ts +69 -21
- package/src/components/VDataTable/__tests__/VDataTable.spec.ts +28 -0
- package/src/components/VDataTable/__tests__/__snapshots__/VDataTable.spec.ts.snap +15 -15
- package/src/components/VExpansionPanel/VExpansionPanelContent.ts +1 -1
- package/src/components/VExpansionPanel/VExpansionPanelHeader.ts +1 -1
- package/src/components/VFileInput/__tests__/__snapshots__/VFileInput.spec.ts.snap +18 -18
- package/src/components/VForm/__tests__/VForm.spec.ts +22 -1
- package/src/components/VInput/VInput.ts +12 -1
- package/src/components/VInput/__tests__/VInput.spec.ts +7 -0
- package/src/components/VItemGroup/VItem.sass +4 -0
- package/src/components/VItemGroup/VItem.ts +12 -1
- package/src/components/VMenu/VMenu.ts +8 -1
- package/src/components/VMenu/__tests__/VMenu.spec.ts +130 -0
- package/src/components/VPagination/VPagination.ts +17 -12
- package/src/components/VRadioGroup/VRadio.ts +10 -4
- package/src/components/VSelect/VSelect.ts +4 -1
- package/src/components/VSelect/__tests__/__snapshots__/VSelect2.spec.ts.snap +2 -2
- package/src/components/VSkeletonLoader/VSkeletonLoader.ts +10 -5
- package/src/components/VSkeletonLoader/__tests__/VSkeletonLoader.spec.ts +7 -0
- package/src/components/VSkeletonLoader/__tests__/__snapshots__/VSkeletonLoader.spec.ts.snap +31 -0
- package/src/components/VSlideGroup/VSlideGroup.ts +4 -0
- package/src/components/VTabs/VTab.ts +5 -0
- package/src/components/VTabs/VTabs.sass +1 -1
- package/src/components/VTabs/__tests__/VTabs.spec.ts +22 -0
- package/src/components/VTabs/_variables.scss +1 -0
- package/src/components/VTextField/__tests__/VTextField.spec.ts +15 -8
- package/src/components/VTimePicker/VTimePicker.ts +18 -0
- package/src/components/VTimePicker/__tests__/VTimePicker.spec.ts +65 -0
- package/src/locale/af.ts +6 -0
- package/src/locale/ar.ts +6 -0
- package/src/locale/az.ts +6 -0
- package/src/locale/bg.ts +6 -0
- package/src/locale/ca.ts +6 -0
- package/src/locale/ckb.ts +6 -0
- package/src/locale/cs.ts +6 -0
- package/src/locale/da.ts +6 -0
- package/src/locale/de.ts +6 -0
- package/src/locale/el.ts +6 -0
- package/src/locale/en.ts +6 -0
- package/src/locale/es.ts +6 -0
- package/src/locale/et.ts +6 -0
- package/src/locale/fa.ts +6 -0
- package/src/locale/fi.ts +6 -0
- package/src/locale/fr.ts +6 -0
- package/src/locale/he.ts +6 -0
- package/src/locale/hr.ts +6 -0
- package/src/locale/hu.ts +6 -0
- package/src/locale/id.ts +6 -0
- package/src/locale/it.ts +6 -0
- package/src/locale/ja.ts +6 -0
- package/src/locale/ko.ts +6 -0
- package/src/locale/lt.ts +6 -0
- package/src/locale/lv.ts +6 -0
- package/src/locale/nl.ts +6 -0
- package/src/locale/no.ts +6 -0
- package/src/locale/pl.ts +6 -0
- package/src/locale/pt.ts +6 -0
- package/src/locale/ro.ts +6 -0
- package/src/locale/ru.ts +6 -0
- package/src/locale/sk.ts +6 -0
- package/src/locale/sl.ts +6 -0
- package/src/locale/sr-Cyrl.ts +6 -0
- package/src/locale/sr-Latn.ts +6 -0
- package/src/locale/sv.ts +6 -0
- package/src/locale/th.ts +6 -0
- package/src/locale/tr.ts +6 -0
- package/src/locale/uk.ts +6 -0
- package/src/locale/vi.ts +6 -0
- package/src/locale/zh-Hans.ts +6 -0
- package/src/locale/zh-Hant.ts +6 -0
- package/src/mixins/groupable/index.ts +9 -2
- package/src/{components/VCalendar/mixins → mixins/mouse}/__tests__/mouse.spec.ts +2 -2
- package/src/{components/VCalendar/mixins/mouse.ts → mixins/mouse/index.ts} +10 -4
- package/src/mixins/validatable/index.ts +10 -4
- package/src/services/presets/__tests__/__snapshots__/presets.spec.ts.snap +2 -2
- package/src/styles/settings/_variables.scss +3 -2
- package/types/index.d.ts +6 -0
- package/es5/components/VCalendar/mixins/mouse.js.map +0 -1
- package/lib/components/VCalendar/mixins/mouse.js.map +0 -1
|
@@ -5,7 +5,7 @@ exports[`VFileInput.ts should be unclearable 1`] = `
|
|
|
5
5
|
<div class="v-input__prepend-outer">
|
|
6
6
|
<div class="v-input__icon v-input__icon--prepend">
|
|
7
7
|
<button type="button"
|
|
8
|
-
aria-label="
|
|
8
|
+
aria-label=" prepended action"
|
|
9
9
|
class="v-icon notranslate v-icon--link material-icons theme--light"
|
|
10
10
|
>
|
|
11
11
|
$file
|
|
@@ -40,7 +40,7 @@ exports[`VFileInput.ts should display file size 1`] = `
|
|
|
40
40
|
<div class="v-input__prepend-outer">
|
|
41
41
|
<div class="v-input__icon v-input__icon--prepend">
|
|
42
42
|
<button type="button"
|
|
43
|
-
aria-label="
|
|
43
|
+
aria-label=" prepended action"
|
|
44
44
|
class="v-icon notranslate v-icon--link material-icons theme--light"
|
|
45
45
|
>
|
|
46
46
|
$file
|
|
@@ -60,7 +60,7 @@ exports[`VFileInput.ts should display file size 1`] = `
|
|
|
60
60
|
<div class="v-input__append-inner">
|
|
61
61
|
<div class="v-input__icon v-input__icon--clear">
|
|
62
62
|
<button type="button"
|
|
63
|
-
aria-label="
|
|
63
|
+
aria-label="Clear "
|
|
64
64
|
tabindex="-1"
|
|
65
65
|
class="v-icon notranslate v-icon--link material-icons theme--light"
|
|
66
66
|
>
|
|
@@ -87,7 +87,7 @@ exports[`VFileInput.ts should display file size 2`] = `
|
|
|
87
87
|
<div class="v-input__prepend-outer">
|
|
88
88
|
<div class="v-input__icon v-input__icon--prepend">
|
|
89
89
|
<button type="button"
|
|
90
|
-
aria-label="
|
|
90
|
+
aria-label=" prepended action"
|
|
91
91
|
class="v-icon notranslate v-icon--link material-icons theme--light"
|
|
92
92
|
>
|
|
93
93
|
$file
|
|
@@ -107,7 +107,7 @@ exports[`VFileInput.ts should display file size 2`] = `
|
|
|
107
107
|
<div class="v-input__append-inner">
|
|
108
108
|
<div class="v-input__icon v-input__icon--clear">
|
|
109
109
|
<button type="button"
|
|
110
|
-
aria-label="
|
|
110
|
+
aria-label="Clear "
|
|
111
111
|
tabindex="-1"
|
|
112
112
|
class="v-icon notranslate v-icon--link material-icons theme--light"
|
|
113
113
|
>
|
|
@@ -134,7 +134,7 @@ exports[`VFileInput.ts should display total size in counter 1`] = `
|
|
|
134
134
|
<div class="v-input__prepend-outer">
|
|
135
135
|
<div class="v-input__icon v-input__icon--prepend">
|
|
136
136
|
<button type="button"
|
|
137
|
-
aria-label="
|
|
137
|
+
aria-label=" prepended action"
|
|
138
138
|
class="v-icon notranslate v-icon--link material-icons theme--light"
|
|
139
139
|
>
|
|
140
140
|
$file
|
|
@@ -154,7 +154,7 @@ exports[`VFileInput.ts should display total size in counter 1`] = `
|
|
|
154
154
|
<div class="v-input__append-inner">
|
|
155
155
|
<div class="v-input__icon v-input__icon--clear">
|
|
156
156
|
<button type="button"
|
|
157
|
-
aria-label="
|
|
157
|
+
aria-label="Clear "
|
|
158
158
|
tabindex="-1"
|
|
159
159
|
class="v-icon notranslate v-icon--link material-icons theme--light"
|
|
160
160
|
>
|
|
@@ -184,7 +184,7 @@ exports[`VFileInput.ts should display total size in counter 2`] = `
|
|
|
184
184
|
<div class="v-input__prepend-outer">
|
|
185
185
|
<div class="v-input__icon v-input__icon--prepend">
|
|
186
186
|
<button type="button"
|
|
187
|
-
aria-label="
|
|
187
|
+
aria-label=" prepended action"
|
|
188
188
|
class="v-icon notranslate v-icon--link material-icons theme--light"
|
|
189
189
|
>
|
|
190
190
|
$file
|
|
@@ -204,7 +204,7 @@ exports[`VFileInput.ts should display total size in counter 2`] = `
|
|
|
204
204
|
<div class="v-input__append-inner">
|
|
205
205
|
<div class="v-input__icon v-input__icon--clear">
|
|
206
206
|
<button type="button"
|
|
207
|
-
aria-label="
|
|
207
|
+
aria-label="Clear "
|
|
208
208
|
tabindex="-1"
|
|
209
209
|
class="v-icon notranslate v-icon--link material-icons theme--light"
|
|
210
210
|
>
|
|
@@ -234,7 +234,7 @@ exports[`VFileInput.ts should render 1`] = `
|
|
|
234
234
|
<div class="v-input__prepend-outer">
|
|
235
235
|
<div class="v-input__icon v-input__icon--prepend">
|
|
236
236
|
<button type="button"
|
|
237
|
-
aria-label="
|
|
237
|
+
aria-label=" prepended action"
|
|
238
238
|
class="v-icon notranslate v-icon--link material-icons theme--light"
|
|
239
239
|
>
|
|
240
240
|
$file
|
|
@@ -273,7 +273,7 @@ exports[`VFileInput.ts should render chips 1`] = `
|
|
|
273
273
|
<div class="v-input__prepend-outer">
|
|
274
274
|
<div class="v-input__icon v-input__icon--prepend">
|
|
275
275
|
<button type="button"
|
|
276
|
-
aria-label="
|
|
276
|
+
aria-label=" prepended action"
|
|
277
277
|
class="v-icon notranslate v-icon--link material-icons theme--light"
|
|
278
278
|
>
|
|
279
279
|
$file
|
|
@@ -297,7 +297,7 @@ exports[`VFileInput.ts should render chips 1`] = `
|
|
|
297
297
|
<div class="v-input__append-inner">
|
|
298
298
|
<div class="v-input__icon v-input__icon--clear">
|
|
299
299
|
<button type="button"
|
|
300
|
-
aria-label="
|
|
300
|
+
aria-label="Clear "
|
|
301
301
|
tabindex="-1"
|
|
302
302
|
class="v-icon notranslate v-icon--link material-icons theme--light"
|
|
303
303
|
>
|
|
@@ -324,7 +324,7 @@ exports[`VFileInput.ts should render counter 1`] = `
|
|
|
324
324
|
<div class="v-input__prepend-outer">
|
|
325
325
|
<div class="v-input__icon v-input__icon--prepend">
|
|
326
326
|
<button type="button"
|
|
327
|
-
aria-label="
|
|
327
|
+
aria-label=" prepended action"
|
|
328
328
|
class="v-icon notranslate v-icon--link material-icons theme--light"
|
|
329
329
|
>
|
|
330
330
|
$file
|
|
@@ -344,7 +344,7 @@ exports[`VFileInput.ts should render counter 1`] = `
|
|
|
344
344
|
<div class="v-input__append-inner">
|
|
345
345
|
<div class="v-input__icon v-input__icon--clear">
|
|
346
346
|
<button type="button"
|
|
347
|
-
aria-label="
|
|
347
|
+
aria-label="Clear "
|
|
348
348
|
tabindex="-1"
|
|
349
349
|
class="v-icon notranslate v-icon--link material-icons theme--light"
|
|
350
350
|
>
|
|
@@ -374,7 +374,7 @@ exports[`VFileInput.ts should render multiple 1`] = `
|
|
|
374
374
|
<div class="v-input__prepend-outer">
|
|
375
375
|
<div class="v-input__icon v-input__icon--prepend">
|
|
376
376
|
<button type="button"
|
|
377
|
-
aria-label="
|
|
377
|
+
aria-label=" prepended action"
|
|
378
378
|
class="v-icon notranslate v-icon--link material-icons theme--light"
|
|
379
379
|
>
|
|
380
380
|
$file
|
|
@@ -414,7 +414,7 @@ exports[`VFileInput.ts should render small chips 1`] = `
|
|
|
414
414
|
<div class="v-input__prepend-outer">
|
|
415
415
|
<div class="v-input__icon v-input__icon--prepend">
|
|
416
416
|
<button type="button"
|
|
417
|
-
aria-label="
|
|
417
|
+
aria-label=" prepended action"
|
|
418
418
|
class="v-icon notranslate v-icon--link material-icons theme--light"
|
|
419
419
|
>
|
|
420
420
|
$file
|
|
@@ -438,7 +438,7 @@ exports[`VFileInput.ts should render small chips 1`] = `
|
|
|
438
438
|
<div class="v-input__append-inner">
|
|
439
439
|
<div class="v-input__icon v-input__icon--clear">
|
|
440
440
|
<button type="button"
|
|
441
|
-
aria-label="
|
|
441
|
+
aria-label="Clear "
|
|
442
442
|
tabindex="-1"
|
|
443
443
|
class="v-icon notranslate v-icon--link material-icons theme--light"
|
|
444
444
|
>
|
|
@@ -494,7 +494,7 @@ exports[`VFileInput.ts should set display none if hide-input prop is set 1`] = `
|
|
|
494
494
|
<div class="v-input__prepend-outer">
|
|
495
495
|
<div class="v-input__icon v-input__icon--prepend">
|
|
496
496
|
<button type="button"
|
|
497
|
-
aria-label="
|
|
497
|
+
aria-label=" prepended action"
|
|
498
498
|
class="v-icon notranslate v-icon--link material-icons theme--light"
|
|
499
499
|
>
|
|
500
500
|
$file
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Libraries
|
|
2
|
-
import Vue from 'vue'
|
|
2
|
+
import Vue, { h } from 'vue'
|
|
3
3
|
import Vuetify from '../../../framework'
|
|
4
4
|
|
|
5
5
|
// Components
|
|
@@ -232,4 +232,25 @@ describe('VForm.ts', () => {
|
|
|
232
232
|
|
|
233
233
|
expect(disabledInputs).toBe(inputs.length)
|
|
234
234
|
})
|
|
235
|
+
|
|
236
|
+
it('disables all inputs but one', async () => {
|
|
237
|
+
const inputs = {
|
|
238
|
+
functional: true,
|
|
239
|
+
render () {
|
|
240
|
+
return [h(VTextField), h(VTextField, { props: { disabled: false } })]
|
|
241
|
+
},
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
const wrapper = mountFunction({
|
|
245
|
+
propsData: { disabled: true },
|
|
246
|
+
slots: { default: inputs },
|
|
247
|
+
})
|
|
248
|
+
|
|
249
|
+
await wrapper.vm.$nextTick()
|
|
250
|
+
|
|
251
|
+
expect(wrapper.vm.inputs).toEqual([
|
|
252
|
+
expect.objectContaining({ isDisabled: true }),
|
|
253
|
+
expect.objectContaining({ isDisabled: false }),
|
|
254
|
+
])
|
|
255
|
+
})
|
|
235
256
|
})
|
|
@@ -177,9 +177,20 @@ export default baseMixins.extend<options>().extend({
|
|
|
177
177
|
const eventName = `click:${kebabCase(type)}`
|
|
178
178
|
const hasListener = !!(this.listeners$[eventName] || cb)
|
|
179
179
|
|
|
180
|
+
const localeKey = {
|
|
181
|
+
prepend: 'prependAction',
|
|
182
|
+
prependInner: 'prependAction',
|
|
183
|
+
append: 'appendAction',
|
|
184
|
+
appendOuter: 'appendAction',
|
|
185
|
+
clear: 'clear',
|
|
186
|
+
}[type]
|
|
187
|
+
const label = hasListener && localeKey
|
|
188
|
+
? this.$vuetify.lang.t(`$vuetify.input.${localeKey}`, this.label ?? '')
|
|
189
|
+
: undefined
|
|
190
|
+
|
|
180
191
|
const data = mergeData({
|
|
181
192
|
attrs: {
|
|
182
|
-
'aria-label':
|
|
193
|
+
'aria-label': label,
|
|
183
194
|
color: this.validationState,
|
|
184
195
|
dark: this.dark,
|
|
185
196
|
disabled: this.isDisabled,
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
// Styles
|
|
2
|
+
import './VItem.sass'
|
|
3
|
+
|
|
1
4
|
// Mixins
|
|
2
5
|
import { factory as GroupableFactory } from '../../mixins/groupable'
|
|
3
6
|
|
|
@@ -16,6 +19,7 @@ export const BaseItem = Vue.extend({
|
|
|
16
19
|
value: {
|
|
17
20
|
required: false,
|
|
18
21
|
},
|
|
22
|
+
disabled: Boolean,
|
|
19
23
|
},
|
|
20
24
|
|
|
21
25
|
data: () => ({
|
|
@@ -56,9 +60,16 @@ export const BaseItem = Vue.extend({
|
|
|
56
60
|
}
|
|
57
61
|
|
|
58
62
|
element.data = this._b(element.data || {}, element.tag!, {
|
|
59
|
-
class: {
|
|
63
|
+
class: {
|
|
64
|
+
[this.activeClass]: this.isActive,
|
|
65
|
+
'v-item--disabled': this.disabled,
|
|
66
|
+
},
|
|
60
67
|
})
|
|
61
68
|
|
|
69
|
+
if (this.disabled) {
|
|
70
|
+
element.data.attrs = { ...element.data.attrs, tabindex: -1 }
|
|
71
|
+
}
|
|
72
|
+
|
|
62
73
|
return element
|
|
63
74
|
},
|
|
64
75
|
})
|
|
@@ -27,7 +27,7 @@ import {
|
|
|
27
27
|
import goTo from '../../services/goto'
|
|
28
28
|
|
|
29
29
|
// Types
|
|
30
|
-
import { VNode, VNodeDirective, VNodeData } from 'vue'
|
|
30
|
+
import { VNode, VNodeDirective, VNodeData, PropType } from 'vue'
|
|
31
31
|
|
|
32
32
|
const baseMixins = mixins(
|
|
33
33
|
Dependent,
|
|
@@ -82,6 +82,10 @@ export default baseMixins.extend({
|
|
|
82
82
|
type: [Boolean, String],
|
|
83
83
|
default: 'v-menu-transition',
|
|
84
84
|
},
|
|
85
|
+
contentProps: {
|
|
86
|
+
type: Object as PropType<Record<string, any>>,
|
|
87
|
+
default: () => ({}),
|
|
88
|
+
},
|
|
85
89
|
},
|
|
86
90
|
|
|
87
91
|
data () {
|
|
@@ -340,6 +344,7 @@ export default baseMixins.extend({
|
|
|
340
344
|
const options = {
|
|
341
345
|
attrs: {
|
|
342
346
|
...this.getScopeIdAttrs(),
|
|
347
|
+
...this.contentProps,
|
|
343
348
|
role: 'role' in this.$attrs ? this.$attrs.role : 'menu',
|
|
344
349
|
},
|
|
345
350
|
staticClass: 'v-menu__content',
|
|
@@ -454,6 +459,8 @@ export default baseMixins.extend({
|
|
|
454
459
|
if (tile.tabIndex === -1) this.nextTile()
|
|
455
460
|
},
|
|
456
461
|
onKeyDown (e: KeyboardEvent) {
|
|
462
|
+
if (this.disableKeys) return
|
|
463
|
+
|
|
457
464
|
if (e.keyCode === keyCodes.esc) {
|
|
458
465
|
// Wait for dependent elements to close first
|
|
459
466
|
setTimeout(() => { this.isActive = false })
|
|
@@ -259,6 +259,37 @@ describe('VMenu.ts', () => {
|
|
|
259
259
|
expect('Unable to locate target [data-app]').toHaveBeenTipped()
|
|
260
260
|
})
|
|
261
261
|
|
|
262
|
+
it('should be able to navigate the menu list with up and down keys', async () => {
|
|
263
|
+
const event = (keyCode: number) => new KeyboardEvent('keydown', { keyCode })
|
|
264
|
+
const wrapper = mountFunction({
|
|
265
|
+
propsData: { eager: true },
|
|
266
|
+
scopedSlots: {
|
|
267
|
+
default () {
|
|
268
|
+
return this.$createElement('div', [
|
|
269
|
+
this.$createElement(VListItem, { props: { link: true } }),
|
|
270
|
+
this.$createElement(VListItem, { props: { link: true } }),
|
|
271
|
+
])
|
|
272
|
+
},
|
|
273
|
+
},
|
|
274
|
+
})
|
|
275
|
+
|
|
276
|
+
wrapper.setData({ isActive: true })
|
|
277
|
+
|
|
278
|
+
wrapper.vm.onKeyDown(event(keyCodes.down))
|
|
279
|
+
|
|
280
|
+
await wrapper.vm.$nextTick()
|
|
281
|
+
|
|
282
|
+
expect(wrapper.vm.listIndex).toBe(0)
|
|
283
|
+
|
|
284
|
+
wrapper.vm.onKeyDown(event(keyCodes.up))
|
|
285
|
+
|
|
286
|
+
await wrapper.vm.$nextTick()
|
|
287
|
+
|
|
288
|
+
expect(wrapper.vm.listIndex).toBe(1)
|
|
289
|
+
|
|
290
|
+
expect('Unable to locate target [data-app]').toHaveBeenTipped()
|
|
291
|
+
})
|
|
292
|
+
|
|
262
293
|
it('should select first or last item when pressing home or end on active menu', async () => {
|
|
263
294
|
const event = (keyCode: number) => new KeyboardEvent('keydown', { keyCode })
|
|
264
295
|
const wrapper = mountFunction({
|
|
@@ -291,4 +322,103 @@ describe('VMenu.ts', () => {
|
|
|
291
322
|
|
|
292
323
|
expect('Unable to locate target [data-app]').toHaveBeenTipped()
|
|
293
324
|
})
|
|
325
|
+
|
|
326
|
+
it('should deactivate when escape is pressed', async () => {
|
|
327
|
+
jest.useFakeTimers()
|
|
328
|
+
const event = (keyCode: number) => new KeyboardEvent('keydown', { keyCode })
|
|
329
|
+
const wrapper = mountFunction({
|
|
330
|
+
propsData: { eager: true },
|
|
331
|
+
})
|
|
332
|
+
|
|
333
|
+
wrapper.setData({ isActive: true })
|
|
334
|
+
|
|
335
|
+
wrapper.vm.onKeyDown(event(keyCodes.esc))
|
|
336
|
+
|
|
337
|
+
await wrapper.vm.$nextTick()
|
|
338
|
+
jest.runAllTimers()
|
|
339
|
+
|
|
340
|
+
expect(wrapper.vm.isActive).toBe(false)
|
|
341
|
+
|
|
342
|
+
expect('Unable to locate target [data-app]').toHaveBeenTipped()
|
|
343
|
+
jest.useRealTimers()
|
|
344
|
+
})
|
|
345
|
+
|
|
346
|
+
it('should disable escape key when disableKeys is true', async () => {
|
|
347
|
+
const event = (keyCode: number) => new KeyboardEvent('keydown', { keyCode })
|
|
348
|
+
const wrapper = mountFunction({
|
|
349
|
+
propsData: {
|
|
350
|
+
eager: true,
|
|
351
|
+
disableKeys: true,
|
|
352
|
+
},
|
|
353
|
+
})
|
|
354
|
+
|
|
355
|
+
wrapper.setData({ isActive: true })
|
|
356
|
+
|
|
357
|
+
wrapper.vm.onKeyDown(event(keyCodes.esc))
|
|
358
|
+
|
|
359
|
+
await wrapper.vm.$nextTick()
|
|
360
|
+
|
|
361
|
+
expect(wrapper.vm.isActive).toBe(true)
|
|
362
|
+
|
|
363
|
+
expect('Unable to locate target [data-app]').toHaveBeenTipped()
|
|
364
|
+
})
|
|
365
|
+
|
|
366
|
+
it('should disable navigation keys when disableKeys is true', async () => {
|
|
367
|
+
const event = (keyCode: number) => new KeyboardEvent('keydown', { keyCode })
|
|
368
|
+
const wrapper = mountFunction({
|
|
369
|
+
propsData: {
|
|
370
|
+
eager: true,
|
|
371
|
+
disableKeys: true,
|
|
372
|
+
},
|
|
373
|
+
scopedSlots: {
|
|
374
|
+
default () {
|
|
375
|
+
return this.$createElement('div', [
|
|
376
|
+
this.$createElement(VListItem, { props: { link: true } }),
|
|
377
|
+
])
|
|
378
|
+
},
|
|
379
|
+
},
|
|
380
|
+
})
|
|
381
|
+
|
|
382
|
+
wrapper.setData({ isActive: true })
|
|
383
|
+
|
|
384
|
+
wrapper.vm.onKeyDown(event(keyCodes.up))
|
|
385
|
+
await wrapper.vm.$nextTick()
|
|
386
|
+
expect(wrapper.vm.listIndex).toBe(-1)
|
|
387
|
+
|
|
388
|
+
wrapper.vm.onKeyDown(event(keyCodes.down))
|
|
389
|
+
await wrapper.vm.$nextTick()
|
|
390
|
+
expect(wrapper.vm.listIndex).toBe(-1)
|
|
391
|
+
|
|
392
|
+
wrapper.vm.onKeyDown(event(keyCodes.end))
|
|
393
|
+
await wrapper.vm.$nextTick()
|
|
394
|
+
expect(wrapper.vm.listIndex).toBe(-1)
|
|
395
|
+
|
|
396
|
+
wrapper.vm.onKeyDown(event(keyCodes.home))
|
|
397
|
+
await wrapper.vm.$nextTick()
|
|
398
|
+
expect(wrapper.vm.listIndex).toBe(-1)
|
|
399
|
+
|
|
400
|
+
expect('Unable to locate target [data-app]').toHaveBeenTipped()
|
|
401
|
+
})
|
|
402
|
+
|
|
403
|
+
it('should not open menu on up or down press when disableKeys is true', async () => {
|
|
404
|
+
const event = (keyCode: number) => new KeyboardEvent('keydown', { keyCode })
|
|
405
|
+
const wrapper = mountFunction({
|
|
406
|
+
propsData: {
|
|
407
|
+
eager: true,
|
|
408
|
+
disableKeys: true,
|
|
409
|
+
},
|
|
410
|
+
})
|
|
411
|
+
|
|
412
|
+
wrapper.vm.onKeyDown(event(keyCodes.up))
|
|
413
|
+
await wrapper.vm.$nextTick()
|
|
414
|
+
expect(wrapper.vm.isActive).toBe(false)
|
|
415
|
+
expect(wrapper.vm.listIndex).toBe(-1)
|
|
416
|
+
|
|
417
|
+
wrapper.vm.onKeyDown(event(keyCodes.down))
|
|
418
|
+
await wrapper.vm.$nextTick()
|
|
419
|
+
expect(wrapper.vm.isActive).toBe(false)
|
|
420
|
+
expect(wrapper.vm.listIndex).toBe(-1)
|
|
421
|
+
|
|
422
|
+
expect('Unable to locate target [data-app]').toHaveBeenTipped()
|
|
423
|
+
})
|
|
294
424
|
})
|
|
@@ -29,6 +29,8 @@ export default mixins(
|
|
|
29
29
|
props: {
|
|
30
30
|
circle: Boolean,
|
|
31
31
|
disabled: Boolean,
|
|
32
|
+
navigationColor: String,
|
|
33
|
+
navigationTextColor: String,
|
|
32
34
|
length: {
|
|
33
35
|
type: Number,
|
|
34
36
|
default: 0,
|
|
@@ -181,18 +183,21 @@ export default mixins(
|
|
|
181
183
|
},
|
|
182
184
|
genIcon (h: CreateElement, icon: string, disabled: boolean, fn: EventListener, label: String): VNode {
|
|
183
185
|
return h('li', [
|
|
184
|
-
h('button',
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
186
|
+
h('button',
|
|
187
|
+
this.setBackgroundColor(this.navigationColor, {
|
|
188
|
+
staticClass: 'v-pagination__navigation',
|
|
189
|
+
class: {
|
|
190
|
+
'v-pagination__navigation--disabled': disabled,
|
|
191
|
+
},
|
|
192
|
+
attrs: {
|
|
193
|
+
disabled,
|
|
194
|
+
type: 'button',
|
|
195
|
+
'aria-label': label,
|
|
196
|
+
},
|
|
197
|
+
on: disabled ? {} : { click: fn },
|
|
198
|
+
}),
|
|
199
|
+
[h(VIcon, { props: { color: this.navigationTextColor } }, [icon])]
|
|
200
|
+
),
|
|
196
201
|
])
|
|
197
202
|
},
|
|
198
203
|
genItem (h: CreateElement, i: string | number): VNode {
|
|
@@ -42,7 +42,10 @@ export default baseMixins.extend<options>().extend({
|
|
|
42
42
|
inheritAttrs: false,
|
|
43
43
|
|
|
44
44
|
props: {
|
|
45
|
-
disabled:
|
|
45
|
+
disabled: {
|
|
46
|
+
type: Boolean,
|
|
47
|
+
default: null,
|
|
48
|
+
},
|
|
46
49
|
id: String,
|
|
47
50
|
label: String,
|
|
48
51
|
name: String,
|
|
@@ -54,7 +57,10 @@ export default baseMixins.extend<options>().extend({
|
|
|
54
57
|
type: String,
|
|
55
58
|
default: '$radioOn',
|
|
56
59
|
},
|
|
57
|
-
readonly:
|
|
60
|
+
readonly: {
|
|
61
|
+
type: Boolean,
|
|
62
|
+
default: null,
|
|
63
|
+
},
|
|
58
64
|
value: {
|
|
59
65
|
default: null,
|
|
60
66
|
},
|
|
@@ -90,13 +96,13 @@ export default baseMixins.extend<options>().extend({
|
|
|
90
96
|
return (this.radioGroup || {}).hasState
|
|
91
97
|
},
|
|
92
98
|
isDisabled (): boolean {
|
|
93
|
-
return this.disabled
|
|
99
|
+
return this.disabled ?? (
|
|
94
100
|
!!this.radioGroup &&
|
|
95
101
|
this.radioGroup.isDisabled
|
|
96
102
|
)
|
|
97
103
|
},
|
|
98
104
|
isReadonly (): boolean {
|
|
99
|
-
return this.readonly
|
|
105
|
+
return this.readonly ?? (
|
|
100
106
|
!!this.radioGroup &&
|
|
101
107
|
this.radioGroup.isReadonly
|
|
102
108
|
)
|
|
@@ -754,7 +754,10 @@ export default baseMixins.extend<options>().extend({
|
|
|
754
754
|
},
|
|
755
755
|
onScroll () {
|
|
756
756
|
if (!this.isMenuActive) {
|
|
757
|
-
requestAnimationFrame(() =>
|
|
757
|
+
requestAnimationFrame(() => {
|
|
758
|
+
const content = this.getContent()
|
|
759
|
+
if (content) content.scrollTop = 0
|
|
760
|
+
})
|
|
758
761
|
} else {
|
|
759
762
|
if (this.lastItem > this.computedItems.length) return
|
|
760
763
|
|
|
@@ -24,7 +24,7 @@ exports[`VSelect.ts should be clearable with prop, dirty and multi select 1`] =
|
|
|
24
24
|
<div class="v-input__append-inner">
|
|
25
25
|
<div class="v-input__icon v-input__icon--clear">
|
|
26
26
|
<button type="button"
|
|
27
|
-
aria-label="clear
|
|
27
|
+
aria-label="$vuetify.input.clear"
|
|
28
28
|
tabindex="-1"
|
|
29
29
|
class="v-icon notranslate v-icon--link material-icons theme--light"
|
|
30
30
|
>
|
|
@@ -85,7 +85,7 @@ exports[`VSelect.ts should be clearable with prop, dirty and single select 1`] =
|
|
|
85
85
|
<div class="v-input__append-inner">
|
|
86
86
|
<div class="v-input__icon v-input__icon--clear">
|
|
87
87
|
<button type="button"
|
|
88
|
-
aria-label="clear
|
|
88
|
+
aria-label="$vuetify.input.clear"
|
|
89
89
|
tabindex="-1"
|
|
90
90
|
class="v-icon notranslate v-icon--link material-icons theme--light"
|
|
91
91
|
>
|
|
@@ -32,6 +32,10 @@ export default mixins(
|
|
|
32
32
|
props: {
|
|
33
33
|
boilerplate: Boolean,
|
|
34
34
|
loading: Boolean,
|
|
35
|
+
loadingText: {
|
|
36
|
+
type: String,
|
|
37
|
+
default: '$vuetify.loading',
|
|
38
|
+
},
|
|
35
39
|
tile: Boolean,
|
|
36
40
|
transition: String,
|
|
37
41
|
type: String,
|
|
@@ -45,12 +49,13 @@ export default mixins(
|
|
|
45
49
|
attrs (): object {
|
|
46
50
|
if (!this.isLoading) return this.$attrs
|
|
47
51
|
|
|
48
|
-
return
|
|
49
|
-
'aria-busy': true,
|
|
50
|
-
'aria-live': 'polite',
|
|
51
|
-
|
|
52
|
+
return {
|
|
53
|
+
'aria-busy': !this.boilerplate ? true : undefined,
|
|
54
|
+
'aria-live': !this.boilerplate ? 'polite' : undefined,
|
|
55
|
+
'aria-label': !this.boilerplate ? this.$vuetify.lang.t(this.loadingText) : undefined,
|
|
56
|
+
role: !this.boilerplate ? 'alert' : undefined,
|
|
52
57
|
...this.$attrs,
|
|
53
|
-
}
|
|
58
|
+
}
|
|
54
59
|
},
|
|
55
60
|
classes (): object {
|
|
56
61
|
return {
|