@vuetify/nightly 3.0.0-beta.0 → 3.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +53 -2
- package/dist/json/attributes.json +343 -195
- package/dist/json/importMap.json +20 -0
- package/dist/json/tags.json +106 -44
- package/dist/json/web-types.json +946 -549
- package/dist/vuetify.css +1486 -1085
- package/dist/vuetify.d.ts +9036 -8077
- package/dist/vuetify.esm.js +1511 -944
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +1510 -943
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +3 -3
- package/dist/vuetify.min.js +825 -754
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAlert/VAlert.css +29 -8
- package/lib/components/VAlert/VAlert.mjs +31 -17
- package/lib/components/VAlert/VAlert.mjs.map +1 -1
- package/lib/components/VAlert/VAlert.sass +27 -7
- package/lib/components/VAlert/VAlertTitle.mjs +1 -0
- package/lib/components/VAlert/VAlertTitle.mjs.map +1 -1
- package/lib/components/VAlert/_variables.scss +14 -7
- package/lib/components/VApp/VApp.css +1 -0
- package/lib/components/VApp/VApp.sass +1 -0
- package/lib/components/VAppBar/VAppBar.mjs +7 -3
- package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
- package/lib/components/VAppBar/VAppBarTitle.mjs.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.mjs +82 -69
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VAvatar/VAvatar.mjs +15 -14
- package/lib/components/VAvatar/VAvatar.mjs.map +1 -1
- package/lib/components/VBanner/VBanner.css +82 -58
- package/lib/components/VBanner/VBanner.mjs +39 -43
- package/lib/components/VBanner/VBanner.mjs.map +1 -1
- package/lib/components/VBanner/VBanner.sass +61 -54
- package/lib/components/VBanner/VBannerActions.mjs +34 -2
- package/lib/components/VBanner/VBannerActions.mjs.map +1 -1
- package/lib/components/VBanner/VBannerAvatar.mjs +20 -0
- package/lib/components/VBanner/VBannerAvatar.mjs.map +1 -0
- package/lib/components/VBanner/VBannerIcon.mjs +20 -0
- package/lib/components/VBanner/VBannerIcon.mjs.map +1 -0
- package/lib/components/VBanner/_variables.scss +10 -14
- package/lib/components/VBanner/index.mjs +2 -0
- package/lib/components/VBanner/index.mjs.map +1 -1
- package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +2 -0
- package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
- package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs +10 -9
- package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs.map +1 -1
- package/lib/components/VBtn/VBtn.css +20 -1
- package/lib/components/VBtn/VBtn.mjs +20 -7
- package/lib/components/VBtn/VBtn.mjs.map +1 -1
- package/lib/components/VBtn/VBtn.sass +15 -2
- package/lib/components/VBtn/_variables.scss +3 -0
- package/lib/components/VBtnGroup/VBtnGroup.css +14 -6
- package/lib/components/VBtnGroup/VBtnGroup.sass +14 -6
- package/lib/components/VCard/VCard.css +13 -11
- package/lib/components/VCard/VCard.mjs +5 -2
- package/lib/components/VCard/VCard.mjs.map +1 -1
- package/lib/components/VCard/VCard.sass +12 -9
- package/lib/components/VCard/VCardActions.mjs +1 -2
- package/lib/components/VCard/VCardActions.mjs.map +1 -1
- package/lib/components/VCard/VCardContent.mjs +3 -0
- package/lib/components/VCard/VCardContent.mjs.map +1 -0
- package/lib/components/VCard/_variables.scss +11 -5
- package/lib/components/VCard/index.mjs +1 -0
- package/lib/components/VCard/index.mjs.map +1 -1
- package/lib/components/VCarousel/VCarousel.mjs +1 -1
- package/lib/components/VCarousel/VCarousel.mjs.map +1 -1
- package/lib/components/VCheckbox/VCheckbox.mjs +2 -2
- package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
- package/lib/components/VChip/VChip.css +3 -0
- package/lib/components/VChip/VChip.sass +3 -0
- package/lib/components/VChip/_variables.scss +3 -0
- package/lib/components/VColorPicker/VColorPickerCanvas.css +1 -1
- package/lib/components/VCombobox/VCombobox.mjs +92 -74
- package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
- package/lib/components/VDialog/VDialog.css +31 -11
- package/lib/components/VDialog/VDialog.mjs +6 -9
- package/lib/components/VDialog/VDialog.mjs.map +1 -1
- package/lib/components/VDialog/VDialog.sass +27 -10
- package/lib/components/VDialog/_variables.scss +3 -6
- package/lib/components/VExpansionPanel/VExpansionPanel.css +3 -2
- package/lib/components/VExpansionPanel/VExpansionPanel.mjs +6 -2
- package/lib/components/VExpansionPanel/VExpansionPanel.mjs.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs +5 -3
- package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanels.mjs +4 -0
- package/lib/components/VExpansionPanel/VExpansionPanels.mjs.map +1 -1
- package/lib/components/VField/VField.css +1 -1
- package/lib/components/VField/VField.mjs +3 -4
- package/lib/components/VField/VField.mjs.map +1 -1
- package/lib/components/VField/VField.sass +1 -1
- package/lib/components/VFileInput/VFileInput.mjs +2 -1
- package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
- package/lib/components/VFooter/VFooter.mjs +32 -15
- package/lib/components/VFooter/VFooter.mjs.map +1 -1
- package/lib/components/VForm/VForm.mjs +25 -11
- package/lib/components/VForm/VForm.mjs.map +1 -1
- package/lib/components/VIcon/VIcon.css +27 -12
- package/lib/components/VIcon/VIcon.mjs +19 -16
- package/lib/components/VIcon/VIcon.mjs.map +1 -1
- package/lib/components/VIcon/VIcon.sass +27 -16
- package/lib/components/VIcon/_variables.scss +1 -0
- package/lib/components/VInput/VInput.css +3 -1
- package/lib/components/VInput/VInput.mjs +3 -4
- package/lib/components/VInput/VInput.mjs.map +1 -1
- package/lib/components/VInput/VInput.sass +3 -1
- package/lib/components/VInput/_variables.scss +4 -0
- package/lib/components/VList/VList.css +7 -6
- package/lib/components/VList/VList.mjs +36 -17
- package/lib/components/VList/VList.mjs.map +1 -1
- package/lib/components/VList/VList.sass +3 -2
- package/lib/components/VList/VListChildren.mjs +1 -1
- package/lib/components/VList/VListChildren.mjs.map +1 -1
- package/lib/components/VList/VListGroup.mjs +28 -10
- package/lib/components/VList/VListGroup.mjs.map +1 -1
- package/lib/components/VList/VListItem.css +119 -42
- package/lib/components/VList/VListItem.mjs +36 -32
- package/lib/components/VList/VListItem.mjs.map +1 -1
- package/lib/components/VList/VListItem.sass +76 -28
- package/lib/components/VList/VListItemAction.mjs +29 -0
- package/lib/components/VList/VListItemAction.mjs.map +1 -0
- package/lib/components/VList/VListItemAvatar.mjs +10 -16
- package/lib/components/VList/VListItemAvatar.mjs.map +1 -1
- package/lib/components/VList/VListItemIcon.mjs +23 -0
- package/lib/components/VList/VListItemIcon.mjs.map +1 -0
- package/lib/components/VList/VListItemMedia.mjs +4 -4
- package/lib/components/VList/VListItemMedia.mjs.map +1 -1
- package/lib/components/VList/_variables.scss +12 -3
- package/lib/components/VList/index.mjs +2 -0
- package/lib/components/VList/index.mjs.map +1 -1
- package/lib/components/VMenu/VMenu.css +2 -12
- package/lib/components/VMenu/VMenu.mjs +61 -31
- package/lib/components/VMenu/VMenu.mjs.map +1 -1
- package/lib/components/VMenu/VMenu.sass +3 -6
- package/lib/components/VMenu/shared.mjs +2 -0
- package/lib/components/VMenu/shared.mjs.map +1 -0
- package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +1 -1
- package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
- package/lib/components/VOverlay/VOverlay.css +8 -0
- package/lib/components/VOverlay/VOverlay.mjs +16 -15
- package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
- package/lib/components/VOverlay/VOverlay.sass +9 -0
- package/lib/components/VOverlay/_variables.scss +1 -0
- package/lib/components/VOverlay/positionStrategies.mjs +7 -3
- package/lib/components/VOverlay/positionStrategies.mjs.map +1 -1
- package/lib/components/VOverlay/scrollStrategies.mjs +9 -0
- package/lib/components/VOverlay/scrollStrategies.mjs.map +1 -1
- package/lib/components/VOverlay/useActivator.mjs +50 -14
- package/lib/components/VOverlay/useActivator.mjs.map +1 -1
- package/lib/components/VPagination/VPagination.mjs +10 -12
- package/lib/components/VPagination/VPagination.mjs.map +1 -1
- package/lib/components/VProgressLinear/VProgressLinear.css +1 -1
- package/lib/components/VRadio/VRadio.mjs +1 -2
- package/lib/components/VRadio/VRadio.mjs.map +1 -1
- package/lib/components/VRadioGroup/VRadioGroup.mjs +2 -2
- package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
- package/lib/components/VRangeSlider/VRangeSlider.mjs +5 -2
- package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
- package/lib/components/VRating/VRating.css +2 -2
- package/lib/components/VRating/VRating.mjs +13 -3
- package/lib/components/VRating/VRating.mjs.map +1 -1
- package/lib/components/VRating/VRating.sass +2 -2
- package/lib/components/VSelect/VSelect.mjs +70 -91
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/VSelectionControl/VSelectionControl.mjs +2 -1
- package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
- package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs +2 -2
- package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs.map +1 -1
- package/lib/components/VSlideGroup/VSlideGroup.css +0 -5
- package/lib/components/VSlideGroup/VSlideGroup.mjs +36 -14
- package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
- package/lib/components/VSlideGroup/VSlideGroup.sass +0 -4
- package/lib/components/VSlideGroup/VSlideGroupItem.mjs +3 -1
- package/lib/components/VSlideGroup/VSlideGroupItem.mjs.map +1 -1
- package/lib/components/VSlider/VSlider.css +7 -2
- package/lib/components/VSlider/VSlider.sass +11 -5
- package/lib/components/VSlider/VSliderTrack.css +6 -6
- package/lib/components/VSlider/VSliderTrack.mjs +1 -1
- package/lib/components/VSlider/VSliderTrack.mjs.map +1 -1
- package/lib/components/VSlider/VSliderTrack.sass +7 -7
- package/lib/components/VSlider/_variables.scss +5 -2
- package/lib/components/VSnackbar/VSnackbar.css +14 -13
- package/lib/components/VSnackbar/VSnackbar.mjs +22 -10
- package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
- package/lib/components/VSnackbar/VSnackbar.sass +15 -16
- package/lib/components/VSnackbar/_variables.scss +0 -4
- package/lib/components/VSwitch/VSwitch.mjs +8 -5
- package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
- package/lib/components/VSystemBar/VSystemBar.css +0 -5
- package/lib/components/VSystemBar/VSystemBar.mjs +31 -14
- package/lib/components/VSystemBar/VSystemBar.mjs.map +1 -1
- package/lib/components/VSystemBar/VSystemBar.sass +0 -5
- package/lib/components/VSystemBar/_variables.scss +0 -3
- package/lib/components/VTabs/VTab.mjs +28 -32
- package/lib/components/VTabs/VTab.mjs.map +1 -1
- package/lib/components/VTabs/VTabs.css +6 -2
- package/lib/components/VTabs/VTabs.mjs +7 -8
- package/lib/components/VTabs/VTabs.mjs.map +1 -1
- package/lib/components/VTabs/VTabs.sass +6 -1
- package/lib/components/VTabs/shared.mjs +2 -0
- package/lib/components/VTabs/shared.mjs.map +1 -0
- package/lib/components/VTextField/VTextField.css +4 -4
- package/lib/components/VTextField/VTextField.mjs +5 -9
- package/lib/components/VTextField/VTextField.mjs.map +1 -1
- package/lib/components/VTextField/VTextField.sass +5 -5
- package/lib/components/VTextarea/VTextarea.css +7 -4
- package/lib/components/VTextarea/VTextarea.sass +9 -5
- package/lib/components/VTimeline/VTimeline.css +187 -48
- package/lib/components/VTimeline/VTimeline.mjs +27 -11
- package/lib/components/VTimeline/VTimeline.mjs.map +1 -1
- package/lib/components/VTimeline/VTimeline.sass +196 -51
- package/lib/components/VTimeline/VTimelineDivider.mjs +2 -1
- package/lib/components/VTimeline/VTimelineDivider.mjs.map +1 -1
- package/lib/components/VTimeline/_variables.scss +2 -1
- package/lib/components/VToolbar/VToolbar.css +8 -1
- package/lib/components/VToolbar/VToolbar.mjs +8 -11
- package/lib/components/VToolbar/VToolbar.mjs.map +1 -1
- package/lib/components/VToolbar/VToolbar.sass +2 -1
- package/lib/components/VToolbar/VToolbarItems.mjs +0 -1
- package/lib/components/VToolbar/VToolbarItems.mjs.map +1 -1
- package/lib/components/VToolbar/_variables.scss +13 -1
- package/lib/components/VWindow/VWindow.mjs +0 -8
- package/lib/components/VWindow/VWindow.mjs.map +1 -1
- package/lib/components/index.d.ts +9025 -8077
- package/lib/composables/defaults.mjs +2 -2
- package/lib/composables/defaults.mjs.map +1 -1
- package/lib/composables/form.mjs +18 -5
- package/lib/composables/form.mjs.map +1 -1
- package/lib/composables/forwardRef.mjs +10 -6
- package/lib/composables/forwardRef.mjs.map +1 -1
- package/lib/composables/group.mjs +14 -6
- package/lib/composables/group.mjs.map +1 -1
- package/lib/composables/index.mjs.map +1 -1
- package/lib/composables/items.mjs +56 -0
- package/lib/composables/items.mjs.map +1 -0
- package/lib/composables/layout.mjs +7 -3
- package/lib/composables/layout.mjs.map +1 -1
- package/lib/composables/loader.mjs.map +1 -1
- package/lib/composables/nested/nested.mjs +27 -14
- package/lib/composables/nested/nested.mjs.map +1 -1
- package/lib/composables/nested/openStrategies.mjs +63 -36
- package/lib/composables/nested/openStrategies.mjs.map +1 -1
- package/lib/composables/nested/selectStrategies.mjs +163 -122
- package/lib/composables/nested/selectStrategies.mjs.map +1 -1
- package/lib/composables/overlay.mjs +5 -1
- package/lib/composables/overlay.mjs.map +1 -1
- package/lib/composables/proxiedModel.mjs.map +1 -1
- package/lib/composables/resizeObserver.mjs +1 -9
- package/lib/composables/resizeObserver.mjs.map +1 -1
- package/lib/composables/router.mjs +17 -5
- package/lib/composables/router.mjs.map +1 -1
- package/lib/composables/selectLink.mjs +19 -0
- package/lib/composables/selectLink.mjs.map +1 -0
- package/lib/composables/stack.mjs +7 -4
- package/lib/composables/stack.mjs.map +1 -1
- package/lib/composables/validation.mjs +6 -3
- package/lib/composables/validation.mjs.map +1 -1
- package/lib/composables/variant.mjs +0 -3
- package/lib/composables/variant.mjs.map +1 -1
- package/lib/directives/ripple/index.mjs +15 -3
- package/lib/directives/ripple/index.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +12 -7
- package/lib/framework.mjs.map +1 -1
- package/lib/index.d.ts +18 -2
- package/lib/locale/ca.mjs +9 -9
- package/lib/locale/ca.mjs.map +1 -1
- package/lib/styles/generic/_colors.scss +0 -1
- package/lib/styles/main.css +400 -392
- package/lib/styles/settings/_utilities.scss +54 -26
- package/lib/styles/tools/_states.sass +2 -1
- package/lib/util/defineComponent.mjs +37 -6
- package/lib/util/defineComponent.mjs.map +1 -1
- package/lib/util/getCurrentInstance.mjs +1 -1
- package/lib/util/getCurrentInstance.mjs.map +1 -1
- package/lib/util/helpers.mjs.map +1 -1
- package/package.json +31 -29
|
@@ -4,14 +4,8 @@
|
|
|
4
4
|
@use './variables' as *
|
|
5
5
|
|
|
6
6
|
.v-snackbar
|
|
7
|
-
bottom: $snackbar-bottom
|
|
8
|
-
display: flex
|
|
9
7
|
justify-content: center
|
|
10
|
-
|
|
11
|
-
pointer-events: none
|
|
12
|
-
right: $snackbar-right
|
|
13
|
-
top: $snackbar-top
|
|
14
|
-
width: 100%
|
|
8
|
+
padding-inline-end: var(--v-scrollbar-offset)
|
|
15
9
|
|
|
16
10
|
&:not(.v-snackbar--absolute)
|
|
17
11
|
height: 100vh
|
|
@@ -31,10 +25,6 @@
|
|
|
31
25
|
padding: $snackbar-wrapper-padding
|
|
32
26
|
pointer-events: auto
|
|
33
27
|
position: relative
|
|
34
|
-
transition-duration: .15s
|
|
35
|
-
transition-property: opacity, transform
|
|
36
|
-
transition-timing-function: settings.$decelerated-easing
|
|
37
|
-
z-index: 1
|
|
38
28
|
|
|
39
29
|
@include tools.rounded($snackbar-border-radius)
|
|
40
30
|
|
|
@@ -95,11 +85,20 @@
|
|
|
95
85
|
margin-bottom: $snackbar-vertical-action-margin-bottom
|
|
96
86
|
|
|
97
87
|
.v-snackbar-transition
|
|
88
|
+
&-enter-active,
|
|
89
|
+
&-leave-active
|
|
90
|
+
transition-duration: .15s
|
|
91
|
+
transition-timing-function: settings.$decelerated-easing
|
|
92
|
+
|
|
93
|
+
&-enter-active
|
|
94
|
+
transition-property: opacity, transform
|
|
95
|
+
|
|
98
96
|
&-enter-from
|
|
99
|
-
|
|
100
|
-
|
|
97
|
+
opacity: 0
|
|
98
|
+
transform: scale($snackbar-transition-scale)
|
|
99
|
+
|
|
100
|
+
&-leave-active
|
|
101
|
+
transition-property: opacity
|
|
101
102
|
|
|
102
|
-
&-enter-from,
|
|
103
103
|
&-leave-to
|
|
104
|
-
|
|
105
|
-
opacity: 0
|
|
104
|
+
opacity: 0
|
|
@@ -6,7 +6,6 @@ $snackbar-action-margin: 8px !default;
|
|
|
6
6
|
$snackbar-background-color: #333333 !default;
|
|
7
7
|
$snackbar-border-radius: settings.$border-radius-root !default;
|
|
8
8
|
$snackbar-plain-opacity: .62 !default;
|
|
9
|
-
$snackbar-bottom: 0 !default;
|
|
10
9
|
$snackbar-btn-padding: 0 8px !default;
|
|
11
10
|
$snackbar-background: #333333 !default;
|
|
12
11
|
$snackbar-color: rgb(var(--v-theme-on-surface-variant)) !default;
|
|
@@ -16,11 +15,8 @@ $snackbar-letter-spacing: tools.map-deep-get(settings.$typography, 'body-2', 'le
|
|
|
16
15
|
$snackbar-line-height: tools.map-deep-get(settings.$typography, 'body-2', 'line-height') !default;
|
|
17
16
|
$snackbar-content-padding: 14px 16px !default;
|
|
18
17
|
$snackbar-elevation: 6 !default;
|
|
19
|
-
$snackbar-left: 0 !default;
|
|
20
18
|
$snackbar-multi-line-wrapper-min-height: 68px !default;
|
|
21
|
-
$snackbar-right: 0 !default;
|
|
22
19
|
$snackbar-shaped-border-radius: map-get(settings.$rounded, 'xl') $snackbar-border-radius !default;
|
|
23
|
-
$snackbar-top: 0 !default;
|
|
24
20
|
$snackbar-transition-scale: .8 !default;
|
|
25
21
|
$snackbar-vertical-action-margin-bottom: 8px !default;
|
|
26
22
|
$snackbar-wrapper-margin: 8px !default;
|
|
@@ -6,11 +6,11 @@ import { filterControlProps, makeSelectionControlProps, VSelectionControl } from
|
|
|
6
6
|
import { filterInputProps, makeVInputProps, VInput } from "../VInput/VInput.mjs";
|
|
7
7
|
import { VProgressCircular } from "../VProgressCircular/index.mjs"; // Composables
|
|
8
8
|
|
|
9
|
-
import { LoaderSlot,
|
|
9
|
+
import { LoaderSlot, useLoader } from "../../composables/loader.mjs";
|
|
10
10
|
import { useProxiedModel } from "../../composables/proxiedModel.mjs"; // Utility
|
|
11
11
|
|
|
12
|
-
import { computed,
|
|
13
|
-
import { filterInputAttrs, useRender } from "../../util/index.mjs";
|
|
12
|
+
import { computed, ref } from 'vue';
|
|
13
|
+
import { defineComponent, filterInputAttrs, useRender } from "../../util/index.mjs";
|
|
14
14
|
export const VSwitch = defineComponent({
|
|
15
15
|
name: 'VSwitch',
|
|
16
16
|
inheritAttrs: false,
|
|
@@ -18,7 +18,10 @@ export const VSwitch = defineComponent({
|
|
|
18
18
|
indeterminate: Boolean,
|
|
19
19
|
inset: Boolean,
|
|
20
20
|
flat: Boolean,
|
|
21
|
-
|
|
21
|
+
loading: {
|
|
22
|
+
type: [Boolean, String],
|
|
23
|
+
default: false
|
|
24
|
+
},
|
|
22
25
|
...makeVInputProps(),
|
|
23
26
|
...makeSelectionControlProps()
|
|
24
27
|
},
|
|
@@ -78,7 +81,7 @@ export const VSwitch = defineComponent({
|
|
|
78
81
|
"aria-checked": indeterminate.value ? 'mixed' : undefined,
|
|
79
82
|
"disabled": isDisabled.value,
|
|
80
83
|
"readonly": isReadonly.value
|
|
81
|
-
}, controlAttrs), {
|
|
84
|
+
}, controlAttrs), { ...slots,
|
|
82
85
|
default: () => _createVNode("div", {
|
|
83
86
|
"class": "v-switch__track",
|
|
84
87
|
"onClick": onClick
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/VSwitch/VSwitch.tsx"],"names":["filterControlProps","makeSelectionControlProps","VSelectionControl","filterInputProps","makeVInputProps","VInput","VProgressCircular","LoaderSlot","
|
|
1
|
+
{"version":3,"sources":["../../../src/components/VSwitch/VSwitch.tsx"],"names":["filterControlProps","makeSelectionControlProps","VSelectionControl","filterInputProps","makeVInputProps","VInput","VProgressCircular","LoaderSlot","useLoader","useProxiedModel","computed","ref","defineComponent","filterInputAttrs","useRender","VSwitch","name","inheritAttrs","props","indeterminate","Boolean","inset","flat","loading","type","String","default","emits","val","setup","attrs","slots","loaderClasses","loaderColor","color","onChange","value","inputAttrs","controlAttrs","inputProps","_1","controlProps","_2","control","onClick","input","click","isDisabled","isReadonly","isValid","undefined","textColorClasses","slotProps","loader","isActive"],"mappings":"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","sourcesContent":["// Styles\nimport './VSwitch.sass'\n\n// Components\nimport { filterControlProps, makeSelectionControlProps, VSelectionControl } from '@/components/VSelectionControl/VSelectionControl'\nimport { filterInputProps, makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VProgressCircular } from '@/components/VProgressCircular'\n\n// Composables\nimport { LoaderSlot, useLoader } from '@/composables/loader'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utility\nimport { computed, ref } from 'vue'\nimport { defineComponent, filterInputAttrs, useRender } from '@/util'\n\nexport const VSwitch = defineComponent({\n name: 'VSwitch',\n\n inheritAttrs: false,\n\n props: {\n indeterminate: Boolean,\n inset: Boolean,\n flat: Boolean,\n loading: {\n type: [Boolean, String],\n default: false,\n },\n\n ...makeVInputProps(),\n ...makeSelectionControlProps(),\n },\n\n emits: {\n 'update:indeterminate': (val: boolean) => true,\n },\n\n setup (props, { attrs, slots }) {\n const indeterminate = useProxiedModel(props, 'indeterminate')\n const { loaderClasses } = useLoader(props)\n\n const loaderColor = computed(() => {\n return typeof props.loading === 'string' && props.loading !== ''\n ? props.loading\n : props.color\n })\n\n function onChange () {\n if (indeterminate.value) {\n indeterminate.value = false\n }\n }\n\n useRender(() => {\n const [inputAttrs, controlAttrs] = filterInputAttrs(attrs)\n const [inputProps, _1] = filterInputProps(props)\n const [controlProps, _2] = filterControlProps(props)\n const control = ref<VSelectionControl>()\n\n function onClick () {\n control.value?.input?.click()\n }\n\n return (\n <VInput\n class={[\n 'v-switch',\n { 'v-switch--inset': props.inset },\n { 'v-switch--indeterminate': indeterminate.value },\n loaderClasses.value,\n ]}\n { ...inputAttrs }\n { ...inputProps }\n >\n {{\n ...slots,\n default: ({\n isDisabled,\n isReadonly,\n isValid,\n }) => (\n <VSelectionControl\n ref={ control }\n { ...controlProps }\n type=\"checkbox\"\n onUpdate:modelValue={ onChange }\n aria-checked={ indeterminate.value ? 'mixed' : undefined }\n disabled={ isDisabled.value }\n readonly={ isReadonly.value }\n { ...controlAttrs }\n >\n {{\n ...slots,\n default: () => (<div class=\"v-switch__track\" onClick={ onClick }></div>),\n input: ({ textColorClasses }) => (\n <div\n class={[\n 'v-switch__thumb',\n textColorClasses.value,\n ]}\n >\n { props.loading && (\n <LoaderSlot\n name=\"v-switch\"\n active\n color={ isValid.value === false ? undefined : loaderColor.value }\n >\n { slotProps => (\n slots.loader\n ? slots.loader(slotProps)\n : (\n <VProgressCircular\n active={ slotProps.isActive }\n color={ slotProps.color }\n indeterminate\n size=\"16\"\n width=\"2\"\n />\n )\n )}\n </LoaderSlot>\n ) }\n </div>\n ),\n }}\n </VSelectionControl>\n ),\n }}\n </VInput>\n )\n })\n\n return {}\n },\n})\n\nexport type VSwitch = InstanceType<typeof VSwitch>\n"],"file":"VSwitch.mjs"}
|
|
@@ -19,8 +19,6 @@
|
|
|
19
19
|
text-transform: none;
|
|
20
20
|
}
|
|
21
21
|
.v-system-bar .v-icon {
|
|
22
|
-
font-size: 0.75rem;
|
|
23
|
-
margin-inline-start: 8px;
|
|
24
22
|
opacity: var(--v-medium-emphasis-opacity);
|
|
25
23
|
}
|
|
26
24
|
.v-system-bar--absolute {
|
|
@@ -34,7 +32,4 @@
|
|
|
34
32
|
}
|
|
35
33
|
.v-system-bar--window {
|
|
36
34
|
height: 32px;
|
|
37
|
-
}
|
|
38
|
-
.v-system-bar--window .v-icon {
|
|
39
|
-
font-size: 1rem;
|
|
40
35
|
}
|
|
@@ -2,24 +2,24 @@ import { createVNode as _createVNode, resolveDirective as _resolveDirective } fr
|
|
|
2
2
|
// Styles
|
|
3
3
|
import "./VSystemBar.css"; // Composables
|
|
4
4
|
|
|
5
|
-
import { makeDimensionProps, useDimension } from "../../composables/dimensions.mjs";
|
|
6
5
|
import { makeElevationProps, useElevation } from "../../composables/elevation.mjs";
|
|
7
|
-
import {
|
|
6
|
+
import { makeLayoutItemProps, useLayoutItem } from "../../composables/layout.mjs";
|
|
8
7
|
import { makeRoundedProps, useRounded } from "../../composables/rounded.mjs";
|
|
9
8
|
import { makeTagProps } from "../../composables/tag.mjs";
|
|
10
9
|
import { makeThemeProps, provideTheme } from "../../composables/theme.mjs";
|
|
10
|
+
import { provideDefaults } from "../../composables/defaults.mjs";
|
|
11
11
|
import { useBackgroundColor } from "../../composables/color.mjs"; // Utilities
|
|
12
12
|
|
|
13
|
+
import { computed, ref, toRef } from 'vue';
|
|
13
14
|
import { defineComponent } from "../../util/index.mjs";
|
|
14
|
-
import { toRef } from 'vue';
|
|
15
15
|
export const VSystemBar = defineComponent({
|
|
16
16
|
name: 'VSystemBar',
|
|
17
17
|
props: {
|
|
18
18
|
color: String,
|
|
19
|
+
height: [Number, String],
|
|
19
20
|
window: Boolean,
|
|
20
|
-
...makeDimensionProps(),
|
|
21
21
|
...makeElevationProps(),
|
|
22
|
-
...
|
|
22
|
+
...makeLayoutItemProps(),
|
|
23
23
|
...makeRoundedProps(),
|
|
24
24
|
...makeTagProps(),
|
|
25
25
|
...makeThemeProps()
|
|
@@ -36,24 +36,41 @@ export const VSystemBar = defineComponent({
|
|
|
36
36
|
backgroundColorClasses,
|
|
37
37
|
backgroundColorStyles
|
|
38
38
|
} = useBackgroundColor(toRef(props, 'color'));
|
|
39
|
-
const {
|
|
40
|
-
dimensionStyles
|
|
41
|
-
} = useDimension(props);
|
|
42
39
|
const {
|
|
43
40
|
elevationClasses
|
|
44
41
|
} = useElevation(props);
|
|
45
|
-
const {
|
|
46
|
-
positionClasses,
|
|
47
|
-
positionStyles
|
|
48
|
-
} = usePosition(props);
|
|
49
42
|
const {
|
|
50
43
|
roundedClasses
|
|
51
44
|
} = useRounded(props);
|
|
45
|
+
const height = computed(() => {
|
|
46
|
+
var _props$height;
|
|
47
|
+
|
|
48
|
+
return ((_props$height = props.height) != null ? _props$height : props.window) ? 32 : 24;
|
|
49
|
+
});
|
|
50
|
+
const {
|
|
51
|
+
layoutItemStyles
|
|
52
|
+
} = useLayoutItem({
|
|
53
|
+
id: props.name,
|
|
54
|
+
priority: computed(() => parseInt(props.priority, 10)),
|
|
55
|
+
position: ref('top'),
|
|
56
|
+
layoutSize: height,
|
|
57
|
+
elementSize: height,
|
|
58
|
+
active: computed(() => true),
|
|
59
|
+
absolute: toRef(props, 'absolute')
|
|
60
|
+
});
|
|
61
|
+
provideDefaults({
|
|
62
|
+
VBtn: {
|
|
63
|
+
variant: 'text',
|
|
64
|
+
density: 'compact'
|
|
65
|
+
}
|
|
66
|
+
}, {
|
|
67
|
+
scoped: true
|
|
68
|
+
});
|
|
52
69
|
return () => _createVNode(props.tag, {
|
|
53
70
|
"class": ['v-system-bar', {
|
|
54
71
|
'v-system-bar--window': props.window
|
|
55
|
-
}, themeClasses.value, backgroundColorClasses.value, elevationClasses.value,
|
|
56
|
-
"style": [backgroundColorStyles.value,
|
|
72
|
+
}, themeClasses.value, backgroundColorClasses.value, elevationClasses.value, roundedClasses.value],
|
|
73
|
+
"style": [backgroundColorStyles.value, layoutItemStyles.value]
|
|
57
74
|
}, slots);
|
|
58
75
|
}
|
|
59
76
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/VSystemBar/VSystemBar.tsx"],"names":["
|
|
1
|
+
{"version":3,"sources":["../../../src/components/VSystemBar/VSystemBar.tsx"],"names":["makeElevationProps","useElevation","makeLayoutItemProps","useLayoutItem","makeRoundedProps","useRounded","makeTagProps","makeThemeProps","provideTheme","provideDefaults","useBackgroundColor","computed","ref","toRef","defineComponent","VSystemBar","name","props","color","String","height","Number","window","Boolean","setup","slots","themeClasses","backgroundColorClasses","backgroundColorStyles","elevationClasses","roundedClasses","layoutItemStyles","id","priority","parseInt","position","layoutSize","elementSize","active","absolute","VBtn","variant","density","scoped","value"],"mappings":";AAAA;AACA,0B,CAEA;;SACSA,kB,EAAoBC,Y;SACpBC,mB,EAAqBC,a;SACrBC,gB,EAAkBC,U;SAClBC,Y;SACAC,c,EAAgBC,Y;SAChBC,e;SACAC,kB,uCAET;;AACA,SAASC,QAAT,EAAmBC,GAAnB,EAAwBC,KAAxB,QAAqC,KAArC;SACSC,e;AAET,OAAO,MAAMC,UAAU,GAAGD,eAAe,CAAC;AACxCE,EAAAA,IAAI,EAAE,YADkC;AAGxCC,EAAAA,KAAK,EAAE;AACLC,IAAAA,KAAK,EAAEC,MADF;AAELC,IAAAA,MAAM,EAAE,CAACC,MAAD,EAASF,MAAT,CAFH;AAGLG,IAAAA,MAAM,EAAEC,OAHH;AAKL,OAAGvB,kBAAkB,EALhB;AAML,OAAGE,mBAAmB,EANjB;AAOL,OAAGE,gBAAgB,EAPd;AAQL,OAAGE,YAAY,EARV;AASL,OAAGC,cAAc;AATZ,GAHiC;;AAexCiB,EAAAA,KAAK,CAAEP,KAAF,QAAoB;AAAA,QAAX;AAAEQ,MAAAA;AAAF,KAAW;AACvB,UAAM;AAAEC,MAAAA;AAAF,QAAmBlB,YAAY,CAACS,KAAD,CAArC;AACA,UAAM;AAAEU,MAAAA,sBAAF;AAA0BC,MAAAA;AAA1B,QAAoDlB,kBAAkB,CAACG,KAAK,CAACI,KAAD,EAAQ,OAAR,CAAN,CAA5E;AACA,UAAM;AAAEY,MAAAA;AAAF,QAAuB5B,YAAY,CAACgB,KAAD,CAAzC;AACA,UAAM;AAAEa,MAAAA;AAAF,QAAqBzB,UAAU,CAACY,KAAD,CAArC;AACA,UAAMG,MAAM,GAAGT,QAAQ,CAAC;AAAA;;AAAA,aAAM,kBAAAM,KAAK,CAACG,MAAN,4BAAgBH,KAAK,CAACK,MAAtB,IAA+B,EAA/B,GAAoC,EAA1C;AAAA,KAAD,CAAvB;AACA,UAAM;AAAES,MAAAA;AAAF,QAAuB5B,aAAa,CAAC;AACzC6B,MAAAA,EAAE,EAAEf,KAAK,CAACD,IAD+B;AAEzCiB,MAAAA,QAAQ,EAAEtB,QAAQ,CAAC,MAAMuB,QAAQ,CAACjB,KAAK,CAACgB,QAAP,EAAiB,EAAjB,CAAf,CAFuB;AAGzCE,MAAAA,QAAQ,EAAEvB,GAAG,CAAC,KAAD,CAH4B;AAIzCwB,MAAAA,UAAU,EAAEhB,MAJ6B;AAKzCiB,MAAAA,WAAW,EAAEjB,MAL4B;AAMzCkB,MAAAA,MAAM,EAAE3B,QAAQ,CAAC,MAAM,IAAP,CANyB;AAOzC4B,MAAAA,QAAQ,EAAE1B,KAAK,CAACI,KAAD,EAAQ,UAAR;AAP0B,KAAD,CAA1C;AAUAR,IAAAA,eAAe,CAAC;AACd+B,MAAAA,IAAI,EAAE;AACJC,QAAAA,OAAO,EAAE,MADL;AAEJC,QAAAA,OAAO,EAAE;AAFL;AADQ,KAAD,EAKZ;AAAEC,MAAAA,MAAM,EAAE;AAAV,KALY,CAAf;AAOA,WAAO;AAAA,eAEI,CACL,cADK,EAEL;AAAE,gCAAwB1B,KAAK,CAACK;AAAhC,OAFK,EAGLI,YAAY,CAACkB,KAHR,EAILjB,sBAAsB,CAACiB,KAJlB,EAKLf,gBAAgB,CAACe,KALZ,EAMLd,cAAc,CAACc,KANV,CAFJ;AAAA,eAUI,CACLhB,qBAAqB,CAACgB,KADjB,EAELb,gBAAgB,CAACa,KAFZ;AAVJ,OAcOnB,KAdP,CAAP;AAiBD;;AAvDuC,CAAD,CAAlC","sourcesContent":["// Styles\nimport './VSystemBar.sass'\n\n// Composables\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeLayoutItemProps, useLayoutItem } from '@/composables/layout'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { provideDefaults } from '@/composables/defaults'\nimport { useBackgroundColor } from '@/composables/color'\n\n// Utilities\nimport { computed, ref, toRef } from 'vue'\nimport { defineComponent } from '@/util'\n\nexport const VSystemBar = defineComponent({\n name: 'VSystemBar',\n\n props: {\n color: String,\n height: [Number, String],\n window: Boolean,\n\n ...makeElevationProps(),\n ...makeLayoutItemProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n },\n\n setup (props, { slots }) {\n const { themeClasses } = provideTheme(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'color'))\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(props)\n const height = computed(() => props.height ?? props.window ? 32 : 24)\n const { layoutItemStyles } = useLayoutItem({\n id: props.name,\n priority: computed(() => parseInt(props.priority, 10)),\n position: ref('top'),\n layoutSize: height,\n elementSize: height,\n active: computed(() => true),\n absolute: toRef(props, 'absolute'),\n })\n\n provideDefaults({\n VBtn: {\n variant: 'text',\n density: 'compact',\n },\n }, { scoped: true })\n\n return () => (\n <props.tag\n class={[\n 'v-system-bar',\n { 'v-system-bar--window': props.window },\n themeClasses.value,\n backgroundColorClasses.value,\n elevationClasses.value,\n roundedClasses.value,\n ]}\n style={[\n backgroundColorStyles.value,\n layoutItemStyles.value,\n ]}\n v-slots={ slots }\n />\n )\n },\n})\n"],"file":"VSystemBar.mjs"}
|
|
@@ -15,8 +15,6 @@
|
|
|
15
15
|
width: 100%
|
|
16
16
|
|
|
17
17
|
.v-icon
|
|
18
|
-
font-size: $system-bar-icon-font-size
|
|
19
|
-
margin-inline-start: $system-bar-icon-margin-inline-start
|
|
20
18
|
opacity: $system-bar-icon-opacity
|
|
21
19
|
|
|
22
20
|
@include tools.elevation($system-bar-elevation)
|
|
@@ -29,6 +27,3 @@
|
|
|
29
27
|
|
|
30
28
|
&--window
|
|
31
29
|
height: $system-bar-window-height
|
|
32
|
-
|
|
33
|
-
.v-icon
|
|
34
|
-
font-size: $system-bar-window-icon-font-size
|
|
@@ -11,8 +11,6 @@ $system-bar-flex: 1 1 auto !default;
|
|
|
11
11
|
$system-bar-font-size: tools.map-deep-get(settings.$typography, 'caption', 'size') !default;
|
|
12
12
|
$system-bar-font-weight: tools.map-deep-get(settings.$typography, 'caption', 'weight') !default;
|
|
13
13
|
$system-bar-height: 24px !default;
|
|
14
|
-
$system-bar-icon-font-size: tools.map-deep-get(settings.$typography, 'caption', 'size') !default;
|
|
15
|
-
$system-bar-icon-margin-inline-start: 8px !default;
|
|
16
14
|
$system-bar-icon-opacity: var(--v-medium-emphasis-opacity) !default;
|
|
17
15
|
$system-bar-justify-content: flex-end !default;
|
|
18
16
|
$system-bar-letter-spacing: tools.map-deep-get(settings.$typography, 'caption', 'letter-spacing') !default;
|
|
@@ -23,7 +21,6 @@ $system-bar-positions: absolute fixed !default;
|
|
|
23
21
|
$system-bar-text-align: end !default;
|
|
24
22
|
$system-bar-text-transform: tools.map-deep-get(settings.$typography, 'caption', 'text-transform') !default;
|
|
25
23
|
$system-bar-window-height: 32px !default;
|
|
26
|
-
$system-bar-window-icon-font-size: tools.map-deep-get(settings.$typography, 'body-1', 'size') !default;
|
|
27
24
|
|
|
28
25
|
$system-bar-theme: (
|
|
29
26
|
$system-bar-background,
|
|
@@ -2,18 +2,17 @@ import { mergeProps as _mergeProps, createVNode as _createVNode } from "vue";
|
|
|
2
2
|
// Styles
|
|
3
3
|
import "./VTab.css"; // Components
|
|
4
4
|
|
|
5
|
-
import { VBtn } from "../VBtn/index.mjs";
|
|
6
|
-
import { VTabsSymbol } from "./VTabs.mjs"; // Composables
|
|
5
|
+
import { VBtn } from "../VBtn/index.mjs"; // Composables
|
|
7
6
|
|
|
8
|
-
import { makeGroupItemProps
|
|
7
|
+
import { makeGroupItemProps } from "../../composables/group.mjs";
|
|
9
8
|
import { makeRouterProps } from "../../composables/router.mjs";
|
|
10
9
|
import { makeTagProps } from "../../composables/tag.mjs";
|
|
11
10
|
import { makeThemeProps } from "../../composables/theme.mjs";
|
|
12
|
-
import { provideDefaults } from "../../composables/defaults.mjs";
|
|
13
11
|
import { useTextColor } from "../../composables/color.mjs"; // Utilities
|
|
14
12
|
|
|
15
|
-
import { computed, ref
|
|
16
|
-
import { defineComponent, pick, standardEasing, useRender } from "../../util/index.mjs";
|
|
13
|
+
import { computed, ref } from 'vue';
|
|
14
|
+
import { defineComponent, pick, standardEasing, useRender } from "../../util/index.mjs";
|
|
15
|
+
import { VTabsSymbol } from "./shared.mjs"; // Types
|
|
17
16
|
|
|
18
17
|
export const VTab = defineComponent({
|
|
19
18
|
name: 'VTab',
|
|
@@ -48,31 +47,22 @@ export const VTab = defineComponent({
|
|
|
48
47
|
slots,
|
|
49
48
|
attrs
|
|
50
49
|
} = _ref;
|
|
51
|
-
const {
|
|
52
|
-
isSelected,
|
|
53
|
-
select,
|
|
54
|
-
selectedClass
|
|
55
|
-
} = useGroupItem(props, VTabsSymbol);
|
|
56
50
|
const {
|
|
57
51
|
textColorClasses: sliderColorClasses,
|
|
58
52
|
textColorStyles: sliderColorStyles
|
|
59
53
|
} = useTextColor(props, 'sliderColor');
|
|
60
54
|
const isHorizontal = computed(() => props.direction === 'horizontal');
|
|
61
|
-
|
|
62
|
-
VBtn: {
|
|
63
|
-
block: toRef(props, 'fixed'),
|
|
64
|
-
maxWidth: computed(() => props.fixed ? 300 : undefined),
|
|
65
|
-
color: computed(() => isSelected.value ? props.color : undefined),
|
|
66
|
-
variant: 'text',
|
|
67
|
-
rounded: 0
|
|
68
|
-
}
|
|
69
|
-
}, {
|
|
70
|
-
scoped: true
|
|
71
|
-
});
|
|
55
|
+
const isSelected = ref(false);
|
|
72
56
|
const rootEl = ref();
|
|
73
57
|
const sliderEl = ref();
|
|
74
|
-
|
|
75
|
-
|
|
58
|
+
|
|
59
|
+
function updateSlider(_ref2) {
|
|
60
|
+
let {
|
|
61
|
+
value
|
|
62
|
+
} = _ref2;
|
|
63
|
+
isSelected.value = value;
|
|
64
|
+
|
|
65
|
+
if (value) {
|
|
76
66
|
var _rootEl$value, _rootEl$value$$el$par;
|
|
77
67
|
|
|
78
68
|
const prevEl = (_rootEl$value = rootEl.value) == null ? void 0 : (_rootEl$value$$el$par = _rootEl$value.$el.parentElement) == null ? void 0 : _rootEl$value$$el$par.querySelector('.v-tab--selected .v-tab__slider');
|
|
@@ -102,17 +92,25 @@ export const VTab = defineComponent({
|
|
|
102
92
|
easing: standardEasing
|
|
103
93
|
});
|
|
104
94
|
}
|
|
105
|
-
}
|
|
95
|
+
}
|
|
96
|
+
|
|
106
97
|
useRender(() => {
|
|
107
|
-
const [btnProps] = pick(props, ['href', 'to', 'replace', 'icon', 'stacked', 'prependIcon', 'appendIcon', 'ripple', 'theme', 'disabled']);
|
|
98
|
+
const [btnProps] = pick(props, ['href', 'to', 'replace', 'icon', 'stacked', 'prependIcon', 'appendIcon', 'ripple', 'theme', 'disabled', 'selectedClass', 'value', 'color']);
|
|
108
99
|
return _createVNode(VBtn, _mergeProps({
|
|
100
|
+
"_as": "VTab",
|
|
101
|
+
"symbol": VTabsSymbol,
|
|
109
102
|
"ref": rootEl,
|
|
110
|
-
"class": ['v-tab'
|
|
103
|
+
"class": ['v-tab'],
|
|
111
104
|
"tabindex": isSelected.value ? 0 : -1,
|
|
112
105
|
"role": "tab",
|
|
113
106
|
"aria-selected": String(isSelected.value),
|
|
114
|
-
"
|
|
115
|
-
|
|
107
|
+
"block": props.fixed,
|
|
108
|
+
"maxWidth": props.fixed ? 300 : undefined,
|
|
109
|
+
"variant": "text",
|
|
110
|
+
"rounded": 0
|
|
111
|
+
}, btnProps, attrs, {
|
|
112
|
+
"onGroup:selected": updateSlider
|
|
113
|
+
}), {
|
|
116
114
|
default: () => [slots.default ? slots.default() : props.title, !props.hideSlider && _createVNode("div", {
|
|
117
115
|
"ref": sliderEl,
|
|
118
116
|
"class": ['v-tab__slider', sliderColorClasses.value],
|
|
@@ -120,9 +118,7 @@ export const VTab = defineComponent({
|
|
|
120
118
|
}, null)]
|
|
121
119
|
});
|
|
122
120
|
});
|
|
123
|
-
return {
|
|
124
|
-
isSelected
|
|
125
|
-
};
|
|
121
|
+
return {};
|
|
126
122
|
}
|
|
127
123
|
|
|
128
124
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/VTabs/VTab.tsx"],"names":["VBtn","VTabsSymbol","makeGroupItemProps","useGroupItem","makeRouterProps","makeTagProps","makeThemeProps","provideDefaults","useTextColor","computed","ref","toRef","watch","defineComponent","pick","standardEasing","useRender","VTab","name","props","fixed","Boolean","icon","String","prependIcon","appendIcon","stacked","title","ripple","type","default","color","sliderColor","hideSlider","direction","selectedClass","setup","slots","attrs","isSelected","select","textColorClasses","sliderColorClasses","textColorStyles","sliderColorStyles","isHorizontal","block","maxWidth","undefined","value","variant","rounded","scoped","rootEl","sliderEl","prevEl","$el","parentElement","querySelector","nextEl","getComputedStyle","prevBox","getBoundingClientRect","nextBox","xy","XY","rightBottom","widthHeight","prevPos","nextPos","delta","origin","Math","sign","size","abs","scale","max","initialScale","sigma","animate","backgroundColor","transform","transformOrigin","Array","fill","duration","easing","btnProps","disabled"],"mappings":";AAAA;AACA,oB,CAEA;;SACSA,I;SACAC,W,uBAET;;SACSC,kB,EAAoBC,Y;SACpBC,e;SACAC,Y;SACAC,c;SACAC,e;SACAC,Y,uCAET;;AACA,SAASC,QAAT,EAAmBC,GAAnB,EAAwBC,KAAxB,EAA+BC,KAA/B,QAA4C,KAA5C;SACSC,e,EAAiBC,I,EAAMC,c,EAAgBC,S,gCAEhD;;AAGA,OAAO,MAAMC,IAAI,GAAGJ,eAAe,CAAC;AAClCK,EAAAA,IAAI,EAAE,MAD4B;AAGlCC,EAAAA,KAAK,EAAE;AACLC,IAAAA,KAAK,EAAEC,OADF;AAELC,IAAAA,IAAI,EAAE,CAACD,OAAD,EAAUE,MAAV,CAFD;AAGLC,IAAAA,WAAW,EAAED,MAHR;AAILE,IAAAA,UAAU,EAAEF,MAJP;AAMLG,IAAAA,OAAO,EAAEL,OANJ;AAOLM,IAAAA,KAAK,EAAEJ,MAPF;AASLK,IAAAA,MAAM,EAAE;AACNC,MAAAA,IAAI,EAAER,OADA;AAENS,MAAAA,OAAO,EAAE;AAFH,KATH;AAaLC,IAAAA,KAAK,EAAER,MAbF;AAcLS,IAAAA,WAAW,EAAET,MAdR;AAeLU,IAAAA,UAAU,EAAEZ,OAfP;AAiBLa,IAAAA,SAAS,EAAE;AACTL,MAAAA,IAAI,EAAEN,MADG;AAETO,MAAAA,OAAO,EAAE;AAFA,KAjBN;AAsBL,OAAGzB,YAAY,EAtBV;AAuBL,OAAGD,eAAe,EAvBb;AAwBL,OAAGF,kBAAkB,CAAC;AACpBiC,MAAAA,aAAa,EAAE;AADK,KAAD,CAxBhB;AA2BL,OAAG7B,cAAc;AA3BZ,GAH2B;;AAiClC8B,EAAAA,KAAK,CAAEjB,KAAF,QAA2B;AAAA,QAAlB;AAAEkB,MAAAA,KAAF;AAASC,MAAAA;AAAT,KAAkB;AAC9B,UAAM;AAAEC,MAAAA,UAAF;AAAcC,MAAAA,MAAd;AAAsBL,MAAAA;AAAtB,QAAwChC,YAAY,CAACgB,KAAD,EAAQlB,WAAR,CAA1D;AACA,UAAM;AAAEwC,MAAAA,gBAAgB,EAAEC,kBAApB;AAAwCC,MAAAA,eAAe,EAAEC;AAAzD,QAA+EpC,YAAY,CAACW,KAAD,EAAQ,aAAR,CAAjG;AACA,UAAM0B,YAAY,GAAGpC,QAAQ,CAAC,MAAMU,KAAK,CAACe,SAAN,KAAoB,YAA3B,CAA7B;AAEA3B,IAAAA,eAAe,CAAC;AACdP,MAAAA,IAAI,EAAE;AACJ8C,QAAAA,KAAK,EAAEnC,KAAK,CAACQ,KAAD,EAAQ,OAAR,CADR;AAEJ4B,QAAAA,QAAQ,EAAEtC,QAAQ,CAAC,MAAMU,KAAK,CAACC,KAAN,GAAc,GAAd,GAAoB4B,SAA3B,CAFd;AAGJjB,QAAAA,KAAK,EAAEtB,QAAQ,CAAC,MAAM8B,UAAU,CAACU,KAAX,GAAmB9B,KAAK,CAACY,KAAzB,GAAiCiB,SAAxC,CAHX;AAIJE,QAAAA,OAAO,EAAE,MAJL;AAKJC,QAAAA,OAAO,EAAE;AALL;AADQ,KAAD,EAQZ;AACDC,MAAAA,MAAM,EAAE;AADP,KARY,CAAf;AAYA,UAAMC,MAAM,GAAG3C,GAAG,EAAlB;AACA,UAAM4C,QAAQ,GAAG5C,GAAG,EAApB;AACAE,IAAAA,KAAK,CAAC2B,UAAD,EAAaA,UAAU,IAAI;AAC9B,UAAIA,UAAJ,EAAgB;AAAA;;AACd,cAAMgB,MAA+B,oBAAGF,MAAM,CAACJ,KAAV,8CAAG,cAAcO,GAAd,CAAkBC,aAArB,qBAAG,sBAAiCC,aAAjC,CAA+C,iCAA/C,CAAxC;AACA,cAAMC,MAAM,GAAGL,QAAQ,CAACL,KAAxB;AAEA,YAAI,CAACM,MAAD,IAAW,CAACI,MAAhB,EAAwB;AAExB,cAAM5B,KAAK,GAAG6B,gBAAgB,CAACL,MAAD,CAAhB,CAAyBxB,KAAvC;AAEA,cAAM8B,OAAO,GAAGN,MAAM,CAACO,qBAAP,EAAhB;AACA,cAAMC,OAAO,GAAGJ,MAAM,CAACG,qBAAP,EAAhB;AAEA,cAAME,EAAE,GAAGnB,YAAY,CAACI,KAAb,GAAqB,GAArB,GAA2B,GAAtC;AACA,cAAMgB,EAAE,GAAGpB,YAAY,CAACI,KAAb,GAAqB,GAArB,GAA2B,GAAtC;AACA,cAAMiB,WAAW,GAAGrB,YAAY,CAACI,KAAb,GAAqB,OAArB,GAA+B,QAAnD;AACA,cAAMkB,WAAW,GAAGtB,YAAY,CAACI,KAAb,GAAqB,OAArB,GAA+B,QAAnD;AAEA,cAAMmB,OAAO,GAAGP,OAAO,CAACG,EAAD,CAAvB;AACA,cAAMK,OAAO,GAAGN,OAAO,CAACC,EAAD,CAAvB;AACA,cAAMM,KAAK,GAAGF,OAAO,GAAGC,OAAV,GACVR,OAAO,CAACK,WAAD,CAAP,GAAuBH,OAAO,CAACG,WAAD,CADpB,GAEVL,OAAO,CAACG,EAAD,CAAP,GAAcD,OAAO,CAACC,EAAD,CAFzB;AAGA,cAAMO,MAAM,GACVC,IAAI,CAACC,IAAL,CAAUH,KAAV,IAAmB,CAAnB,GAAwBzB,YAAY,CAACI,KAAb,GAAqB,OAArB,GAA+B,QAAvD,GACEuB,IAAI,CAACC,IAAL,CAAUH,KAAV,IAAmB,CAAnB,GAAwBzB,YAAY,CAACI,KAAb,GAAqB,MAArB,GAA8B,KAAtD,GACA,QAHJ;AAIA,cAAMyB,IAAI,GAAGF,IAAI,CAACG,GAAL,CAASL,KAAT,KAAmBE,IAAI,CAACC,IAAL,CAAUH,KAAV,IAAmB,CAAnB,GAAuBT,OAAO,CAACM,WAAD,CAA9B,GAA8CJ,OAAO,CAACI,WAAD,CAAxE,CAAb;AACA,cAAMS,KAAK,GAAGF,IAAI,GAAGF,IAAI,CAACK,GAAL,CAAShB,OAAO,CAACM,WAAD,CAAhB,EAA+BJ,OAAO,CAACI,WAAD,CAAtC,CAArB;AACA,cAAMW,YAAY,GAAGjB,OAAO,CAACM,WAAD,CAAP,GAAuBJ,OAAO,CAACI,WAAD,CAAnD;AAEA,cAAMY,KAAK,GAAG,GAAd;AACApB,QAAAA,MAAM,CAACqB,OAAP,CAAe;AACbC,UAAAA,eAAe,EAAE,CAAClD,KAAD,EAAQ,EAAR,CADJ;AAEbmD,UAAAA,SAAS,EAAE,CACR,YAAWjB,EAAG,IAAGK,KAAM,YAAWL,EAAG,IAAGa,YAAa,GAD7C,EAER,YAAWb,EAAG,IAAGK,KAAK,GAAGS,KAAM,YAAWd,EAAG,IAAG,CAACW,KAAK,GAAG,CAAT,IAAcG,KAAd,GAAsB,CAAE,GAFhE,EAGT,EAHS,CAFE;AAObI,UAAAA,eAAe,EAAEC,KAAK,CAAC,CAAD,CAAL,CAASC,IAAT,CAAcd,MAAd;AAPJ,SAAf,EAQG;AACDe,UAAAA,QAAQ,EAAE,GADT;AAEDC,UAAAA,MAAM,EAAExE;AAFP,SARH;AAYD;AACF,KA5CI,CAAL;AA8CAC,IAAAA,SAAS,CAAC,MAAM;AACd,YAAM,CAACwE,QAAD,IAAa1E,IAAI,CAACK,KAAD,EAAQ,CAC7B,MAD6B,EAE7B,IAF6B,EAG7B,SAH6B,EAI7B,MAJ6B,EAK7B,SAL6B,EAM7B,aAN6B,EAO7B,YAP6B,EAQ7B,QAR6B,EAS7B,OAT6B,EAU7B,UAV6B,CAAR,CAAvB;AAaA;AAAA,eAEUkC,MAFV;AAAA,iBAGW,CACL,OADK,EAELlB,aAAa,CAACc,KAFT,CAHX;AAAA,oBAOeV,UAAU,CAACU,KAAX,GAAmB,CAAnB,GAAuB,CAAC,CAPvC;AAAA,gBAQS,KART;AAAA,yBASoB1B,MAAM,CAACgB,UAAU,CAACU,KAAZ,CAT1B;AAAA,mBAUc,MAAM,CAAC9B,KAAK,CAACsE,QAAP,IAAmBjD,MAAM,CAAC,CAACD,UAAU,CAACU,KAAb;AAV7C,SAWSuC,QAXT,EAYSlD,KAZT;AAAA,wBAcMD,KAAK,CAACP,OAAN,GAAgBO,KAAK,CAACP,OAAN,EAAhB,GAAkCX,KAAK,CAACQ,KAd9C,EAeM,CAACR,KAAK,CAACc,UAAP;AAAA,iBAEQqB,QAFR;AAAA,mBAGS,CACL,eADK,EAELZ,kBAAkB,CAACO,KAFd,CAHT;AAAA,mBAOUL,iBAAiB,CAACK;AAP5B,gBAfN;AAAA;AA2BD,KAzCQ,CAAT;AA2CA,WAAO;AACLV,MAAAA;AADK,KAAP;AAGD;;AAhJiC,CAAD,CAA5B","sourcesContent":["// Styles\nimport './VTab.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VTabsSymbol } from './VTabs'\n\n// Composables\nimport { makeGroupItemProps, useGroupItem } from '@/composables/group'\nimport { makeRouterProps } from '@/composables/router'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps } from '@/composables/theme'\nimport { provideDefaults } from '@/composables/defaults'\nimport { useTextColor } from '@/composables/color'\n\n// Utilities\nimport { computed, ref, toRef, watch } from 'vue'\nimport { defineComponent, pick, standardEasing, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const VTab = defineComponent({\n name: 'VTab',\n\n props: {\n fixed: Boolean,\n icon: [Boolean, String],\n prependIcon: String,\n appendIcon: String,\n\n stacked: Boolean,\n title: String,\n\n ripple: {\n type: Boolean,\n default: true,\n },\n color: String,\n sliderColor: String,\n hideSlider: Boolean,\n\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n },\n\n ...makeTagProps(),\n ...makeRouterProps(),\n ...makeGroupItemProps({\n selectedClass: 'v-tab--selected',\n }),\n ...makeThemeProps(),\n },\n\n setup (props, { slots, attrs }) {\n const { isSelected, select, selectedClass } = useGroupItem(props, VTabsSymbol)\n const { textColorClasses: sliderColorClasses, textColorStyles: sliderColorStyles } = useTextColor(props, 'sliderColor')\n const isHorizontal = computed(() => props.direction === 'horizontal')\n\n provideDefaults({\n VBtn: {\n block: toRef(props, 'fixed'),\n maxWidth: computed(() => props.fixed ? 300 : undefined),\n color: computed(() => isSelected.value ? props.color : undefined),\n variant: 'text',\n rounded: 0,\n },\n }, {\n scoped: true,\n })\n\n const rootEl = ref<VBtn>()\n const sliderEl = ref<HTMLElement>()\n watch(isSelected, isSelected => {\n if (isSelected) {\n const prevEl: HTMLElement | undefined = rootEl.value?.$el.parentElement?.querySelector('.v-tab--selected .v-tab__slider')\n const nextEl = sliderEl.value\n\n if (!prevEl || !nextEl) return\n\n const color = getComputedStyle(prevEl).color\n\n const prevBox = prevEl.getBoundingClientRect()\n const nextBox = nextEl.getBoundingClientRect()\n\n const xy = isHorizontal.value ? 'x' : 'y'\n const XY = isHorizontal.value ? 'X' : 'Y'\n const rightBottom = isHorizontal.value ? 'right' : 'bottom'\n const widthHeight = isHorizontal.value ? 'width' : 'height'\n\n const prevPos = prevBox[xy]\n const nextPos = nextBox[xy]\n const delta = prevPos > nextPos\n ? prevBox[rightBottom] - nextBox[rightBottom]\n : prevBox[xy] - nextBox[xy]\n const origin =\n Math.sign(delta) > 0 ? (isHorizontal.value ? 'right' : 'bottom')\n : Math.sign(delta) < 0 ? (isHorizontal.value ? 'left' : 'top')\n : 'center'\n const size = Math.abs(delta) + (Math.sign(delta) < 0 ? prevBox[widthHeight] : nextBox[widthHeight])\n const scale = size / Math.max(prevBox[widthHeight], nextBox[widthHeight])\n const initialScale = prevBox[widthHeight] / nextBox[widthHeight]\n\n const sigma = 1.5\n nextEl.animate({\n backgroundColor: [color, ''],\n transform: [\n `translate${XY}(${delta}px) scale${XY}(${initialScale})`,\n `translate${XY}(${delta / sigma}px) scale${XY}(${(scale - 1) / sigma + 1})`,\n '',\n ],\n transformOrigin: Array(3).fill(origin),\n }, {\n duration: 225,\n easing: standardEasing,\n })\n }\n })\n\n useRender(() => {\n const [btnProps] = pick(props, [\n 'href',\n 'to',\n 'replace',\n 'icon',\n 'stacked',\n 'prependIcon',\n 'appendIcon',\n 'ripple',\n 'theme',\n 'disabled',\n ])\n\n return (\n <VBtn\n ref={ rootEl }\n class={[\n 'v-tab',\n selectedClass.value,\n ]}\n tabindex={ isSelected.value ? 0 : -1 }\n role=\"tab\"\n aria-selected={ String(isSelected.value) }\n onClick={ () => !props.disabled && select(!isSelected.value) }\n { ...btnProps }\n { ...attrs }\n >\n { slots.default ? slots.default() : props.title }\n { !props.hideSlider && (\n <div\n ref={ sliderEl }\n class={[\n 'v-tab__slider',\n sliderColorClasses.value,\n ]}\n style={ sliderColorStyles.value }\n />\n ) }\n </VBtn>\n )\n })\n\n return {\n isSelected,\n }\n },\n})\n\nexport type VTab = InstanceType<typeof VTab>\n"],"file":"VTab.mjs"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/VTabs/VTab.tsx"],"names":["VBtn","makeGroupItemProps","makeRouterProps","makeTagProps","makeThemeProps","useTextColor","computed","ref","defineComponent","pick","standardEasing","useRender","VTabsSymbol","VTab","name","props","fixed","Boolean","icon","String","prependIcon","appendIcon","stacked","title","ripple","type","default","color","sliderColor","hideSlider","direction","selectedClass","setup","slots","attrs","textColorClasses","sliderColorClasses","textColorStyles","sliderColorStyles","isHorizontal","isSelected","rootEl","sliderEl","updateSlider","value","prevEl","$el","parentElement","querySelector","nextEl","getComputedStyle","prevBox","getBoundingClientRect","nextBox","xy","XY","rightBottom","widthHeight","prevPos","nextPos","delta","origin","Math","sign","size","abs","scale","max","initialScale","sigma","animate","backgroundColor","transform","transformOrigin","Array","fill","duration","easing","btnProps","undefined"],"mappings":";AAAA;AACA,oB,CAEA;;SACSA,I,6BAET;;SACSC,kB;SACAC,e;SACAC,Y;SACAC,c;SACAC,Y,uCAET;;AACA,SAASC,QAAT,EAAmBC,GAAnB,QAA8B,KAA9B;SACSC,e,EAAiBC,I,EAAMC,c,EAAgBC,S;SACvCC,W,wBAET;;AAGA,OAAO,MAAMC,IAAI,GAAGL,eAAe,CAAC;AAClCM,EAAAA,IAAI,EAAE,MAD4B;AAGlCC,EAAAA,KAAK,EAAE;AACLC,IAAAA,KAAK,EAAEC,OADF;AAELC,IAAAA,IAAI,EAAE,CAACD,OAAD,EAAUE,MAAV,CAFD;AAGLC,IAAAA,WAAW,EAAED,MAHR;AAILE,IAAAA,UAAU,EAAEF,MAJP;AAMLG,IAAAA,OAAO,EAAEL,OANJ;AAOLM,IAAAA,KAAK,EAAEJ,MAPF;AASLK,IAAAA,MAAM,EAAE;AACNC,MAAAA,IAAI,EAAER,OADA;AAENS,MAAAA,OAAO,EAAE;AAFH,KATH;AAaLC,IAAAA,KAAK,EAAER,MAbF;AAcLS,IAAAA,WAAW,EAAET,MAdR;AAeLU,IAAAA,UAAU,EAAEZ,OAfP;AAiBLa,IAAAA,SAAS,EAAE;AACTL,MAAAA,IAAI,EAAEN,MADG;AAETO,MAAAA,OAAO,EAAE;AAFA,KAjBN;AAsBL,OAAGvB,YAAY,EAtBV;AAuBL,OAAGD,eAAe,EAvBb;AAwBL,OAAGD,kBAAkB,CAAC;AACpB8B,MAAAA,aAAa,EAAE;AADK,KAAD,CAxBhB;AA2BL,OAAG3B,cAAc;AA3BZ,GAH2B;;AAiClC4B,EAAAA,KAAK,CAAEjB,KAAF,QAA2B;AAAA,QAAlB;AAAEkB,MAAAA,KAAF;AAASC,MAAAA;AAAT,KAAkB;AAC9B,UAAM;AAAEC,MAAAA,gBAAgB,EAAEC,kBAApB;AAAwCC,MAAAA,eAAe,EAAEC;AAAzD,QAA+EjC,YAAY,CAACU,KAAD,EAAQ,aAAR,CAAjG;AACA,UAAMwB,YAAY,GAAGjC,QAAQ,CAAC,MAAMS,KAAK,CAACe,SAAN,KAAoB,YAA3B,CAA7B;AACA,UAAMU,UAAU,GAAGjC,GAAG,CAAC,KAAD,CAAtB;AAEA,UAAMkC,MAAM,GAAGlC,GAAG,EAAlB;AACA,UAAMmC,QAAQ,GAAGnC,GAAG,EAApB;;AAEA,aAASoC,YAAT,QAAsD;AAAA,UAA/B;AAAEC,QAAAA;AAAF,OAA+B;AACpDJ,MAAAA,UAAU,CAACI,KAAX,GAAmBA,KAAnB;;AAEA,UAAIA,KAAJ,EAAW;AAAA;;AACT,cAAMC,MAA+B,oBAAGJ,MAAM,CAACG,KAAV,8CAAG,cAAcE,GAAd,CAAkBC,aAArB,qBAAG,sBAAiCC,aAAjC,CAA+C,iCAA/C,CAAxC;AACA,cAAMC,MAAM,GAAGP,QAAQ,CAACE,KAAxB;AAEA,YAAI,CAACC,MAAD,IAAW,CAACI,MAAhB,EAAwB;AAExB,cAAMtB,KAAK,GAAGuB,gBAAgB,CAACL,MAAD,CAAhB,CAAyBlB,KAAvC;AAEA,cAAMwB,OAAO,GAAGN,MAAM,CAACO,qBAAP,EAAhB;AACA,cAAMC,OAAO,GAAGJ,MAAM,CAACG,qBAAP,EAAhB;AAEA,cAAME,EAAE,GAAGf,YAAY,CAACK,KAAb,GAAqB,GAArB,GAA2B,GAAtC;AACA,cAAMW,EAAE,GAAGhB,YAAY,CAACK,KAAb,GAAqB,GAArB,GAA2B,GAAtC;AACA,cAAMY,WAAW,GAAGjB,YAAY,CAACK,KAAb,GAAqB,OAArB,GAA+B,QAAnD;AACA,cAAMa,WAAW,GAAGlB,YAAY,CAACK,KAAb,GAAqB,OAArB,GAA+B,QAAnD;AAEA,cAAMc,OAAO,GAAGP,OAAO,CAACG,EAAD,CAAvB;AACA,cAAMK,OAAO,GAAGN,OAAO,CAACC,EAAD,CAAvB;AACA,cAAMM,KAAK,GAAGF,OAAO,GAAGC,OAAV,GACVR,OAAO,CAACK,WAAD,CAAP,GAAuBH,OAAO,CAACG,WAAD,CADpB,GAEVL,OAAO,CAACG,EAAD,CAAP,GAAcD,OAAO,CAACC,EAAD,CAFzB;AAGA,cAAMO,MAAM,GACVC,IAAI,CAACC,IAAL,CAAUH,KAAV,IAAmB,CAAnB,GAAwBrB,YAAY,CAACK,KAAb,GAAqB,OAArB,GAA+B,QAAvD,GACEkB,IAAI,CAACC,IAAL,CAAUH,KAAV,IAAmB,CAAnB,GAAwBrB,YAAY,CAACK,KAAb,GAAqB,MAArB,GAA8B,KAAtD,GACA,QAHJ;AAIA,cAAMoB,IAAI,GAAGF,IAAI,CAACG,GAAL,CAASL,KAAT,KAAmBE,IAAI,CAACC,IAAL,CAAUH,KAAV,IAAmB,CAAnB,GAAuBT,OAAO,CAACM,WAAD,CAA9B,GAA8CJ,OAAO,CAACI,WAAD,CAAxE,CAAb;AACA,cAAMS,KAAK,GAAGF,IAAI,GAAGF,IAAI,CAACK,GAAL,CAAShB,OAAO,CAACM,WAAD,CAAhB,EAA+BJ,OAAO,CAACI,WAAD,CAAtC,CAArB;AACA,cAAMW,YAAY,GAAGjB,OAAO,CAACM,WAAD,CAAP,GAAuBJ,OAAO,CAACI,WAAD,CAAnD;AAEA,cAAMY,KAAK,GAAG,GAAd;AACApB,QAAAA,MAAM,CAACqB,OAAP,CAAe;AACbC,UAAAA,eAAe,EAAE,CAAC5C,KAAD,EAAQ,EAAR,CADJ;AAEb6C,UAAAA,SAAS,EAAE,CACR,YAAWjB,EAAG,IAAGK,KAAM,YAAWL,EAAG,IAAGa,YAAa,GAD7C,EAER,YAAWb,EAAG,IAAGK,KAAK,GAAGS,KAAM,YAAWd,EAAG,IAAG,CAACW,KAAK,GAAG,CAAT,IAAcG,KAAd,GAAsB,CAAE,GAFhE,EAGT,EAHS,CAFE;AAObI,UAAAA,eAAe,EAAEC,KAAK,CAAC,CAAD,CAAL,CAASC,IAAT,CAAcd,MAAd;AAPJ,SAAf,EAQG;AACDe,UAAAA,QAAQ,EAAE,GADT;AAEDC,UAAAA,MAAM,EAAEnE;AAFP,SARH;AAYD;AACF;;AAEDC,IAAAA,SAAS,CAAC,MAAM;AACd,YAAM,CAACmE,QAAD,IAAarE,IAAI,CAACM,KAAD,EAAQ,CAC7B,MAD6B,EAE7B,IAF6B,EAG7B,SAH6B,EAI7B,MAJ6B,EAK7B,SAL6B,EAM7B,aAN6B,EAO7B,YAP6B,EAQ7B,QAR6B,EAS7B,OAT6B,EAU7B,UAV6B,EAW7B,eAX6B,EAY7B,OAZ6B,EAa7B,OAb6B,CAAR,CAAvB;AAgBA;AAAA,eAEQ,MAFR;AAAA,kBAGaH,WAHb;AAAA,eAIU6B,MAJV;AAAA,iBAKW,CACL,OADK,CALX;AAAA,oBAQeD,UAAU,CAACI,KAAX,GAAmB,CAAnB,GAAuB,CAAC,CARvC;AAAA,gBASS,KATT;AAAA,yBAUoBzB,MAAM,CAACqB,UAAU,CAACI,KAAZ,CAV1B;AAAA,iBAWY7B,KAAK,CAACC,KAXlB;AAAA,oBAYeD,KAAK,CAACC,KAAN,GAAc,GAAd,GAAoB+D,SAZnC;AAAA,mBAaY,MAbZ;AAAA,mBAcc;AAdd,SAeSD,QAfT,EAgBS5C,KAhBT;AAAA,4BAiBuBS;AAjBvB;AAAA,wBAmBMV,KAAK,CAACP,OAAN,GAAgBO,KAAK,CAACP,OAAN,EAAhB,GAAkCX,KAAK,CAACQ,KAnB9C,EAoBM,CAACR,KAAK,CAACc,UAAP;AAAA,iBAEQa,QAFR;AAAA,mBAGS,CACL,eADK,EAELN,kBAAkB,CAACQ,KAFd,CAHT;AAAA,mBAOUN,iBAAiB,CAACM;AAP5B,gBApBN;AAAA;AAgCD,KAjDQ,CAAT;AAmDA,WAAO,EAAP;AACD;;AA7IiC,CAAD,CAA5B","sourcesContent":["// Styles\nimport './VTab.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\n\n// Composables\nimport { makeGroupItemProps } from '@/composables/group'\nimport { makeRouterProps } from '@/composables/router'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps } from '@/composables/theme'\nimport { useTextColor } from '@/composables/color'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { defineComponent, pick, standardEasing, useRender } from '@/util'\nimport { VTabsSymbol } from './shared'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const VTab = defineComponent({\n name: 'VTab',\n\n props: {\n fixed: Boolean,\n icon: [Boolean, String],\n prependIcon: String,\n appendIcon: String,\n\n stacked: Boolean,\n title: String,\n\n ripple: {\n type: Boolean,\n default: true,\n },\n color: String,\n sliderColor: String,\n hideSlider: Boolean,\n\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n },\n\n ...makeTagProps(),\n ...makeRouterProps(),\n ...makeGroupItemProps({\n selectedClass: 'v-tab--selected',\n }),\n ...makeThemeProps(),\n },\n\n setup (props, { slots, attrs }) {\n const { textColorClasses: sliderColorClasses, textColorStyles: sliderColorStyles } = useTextColor(props, 'sliderColor')\n const isHorizontal = computed(() => props.direction === 'horizontal')\n const isSelected = ref(false)\n\n const rootEl = ref<VBtn>()\n const sliderEl = ref<HTMLElement>()\n\n function updateSlider ({ value }: { value: boolean }) {\n isSelected.value = value\n\n if (value) {\n const prevEl: HTMLElement | undefined = rootEl.value?.$el.parentElement?.querySelector('.v-tab--selected .v-tab__slider')\n const nextEl = sliderEl.value\n\n if (!prevEl || !nextEl) return\n\n const color = getComputedStyle(prevEl).color\n\n const prevBox = prevEl.getBoundingClientRect()\n const nextBox = nextEl.getBoundingClientRect()\n\n const xy = isHorizontal.value ? 'x' : 'y'\n const XY = isHorizontal.value ? 'X' : 'Y'\n const rightBottom = isHorizontal.value ? 'right' : 'bottom'\n const widthHeight = isHorizontal.value ? 'width' : 'height'\n\n const prevPos = prevBox[xy]\n const nextPos = nextBox[xy]\n const delta = prevPos > nextPos\n ? prevBox[rightBottom] - nextBox[rightBottom]\n : prevBox[xy] - nextBox[xy]\n const origin =\n Math.sign(delta) > 0 ? (isHorizontal.value ? 'right' : 'bottom')\n : Math.sign(delta) < 0 ? (isHorizontal.value ? 'left' : 'top')\n : 'center'\n const size = Math.abs(delta) + (Math.sign(delta) < 0 ? prevBox[widthHeight] : nextBox[widthHeight])\n const scale = size / Math.max(prevBox[widthHeight], nextBox[widthHeight])\n const initialScale = prevBox[widthHeight] / nextBox[widthHeight]\n\n const sigma = 1.5\n nextEl.animate({\n backgroundColor: [color, ''],\n transform: [\n `translate${XY}(${delta}px) scale${XY}(${initialScale})`,\n `translate${XY}(${delta / sigma}px) scale${XY}(${(scale - 1) / sigma + 1})`,\n '',\n ],\n transformOrigin: Array(3).fill(origin),\n }, {\n duration: 225,\n easing: standardEasing,\n })\n }\n }\n\n useRender(() => {\n const [btnProps] = pick(props, [\n 'href',\n 'to',\n 'replace',\n 'icon',\n 'stacked',\n 'prependIcon',\n 'appendIcon',\n 'ripple',\n 'theme',\n 'disabled',\n 'selectedClass',\n 'value',\n 'color',\n ])\n\n return (\n <VBtn\n _as=\"VTab\"\n symbol={ VTabsSymbol }\n ref={ rootEl }\n class={[\n 'v-tab',\n ]}\n tabindex={ isSelected.value ? 0 : -1 }\n role=\"tab\"\n aria-selected={ String(isSelected.value) }\n block={ props.fixed }\n maxWidth={ props.fixed ? 300 : undefined }\n variant=\"text\"\n rounded={ 0 }\n { ...btnProps }\n { ...attrs }\n onGroup:selected={ updateSlider }\n >\n { slots.default ? slots.default() : props.title }\n { !props.hideSlider && (\n <div\n ref={ sliderEl }\n class={[\n 'v-tab__slider',\n sliderColorClasses.value,\n ]}\n style={ sliderColorStyles.value }\n />\n ) }\n </VBtn>\n )\n })\n\n return {}\n },\n})\n\nexport type VTab = InstanceType<typeof VTab>\n"],"file":"VTab.mjs"}
|
|
@@ -50,10 +50,10 @@
|
|
|
50
50
|
max-width: none;
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
.v-tabs--
|
|
53
|
+
.v-tabs--end .v-tab:first-child {
|
|
54
54
|
margin-inline-start: auto;
|
|
55
55
|
}
|
|
56
|
-
.v-tabs--
|
|
56
|
+
.v-tabs--end .v-tab:last-child {
|
|
57
57
|
margin-inline-end: 0;
|
|
58
58
|
}
|
|
59
59
|
|
|
@@ -64,4 +64,8 @@
|
|
|
64
64
|
.v-tabs.v-slide-group--is-overflowing:not(.v-slide-group--has-affixes) .v-tab:last-child {
|
|
65
65
|
margin-inline-end: 52px;
|
|
66
66
|
}
|
|
67
|
+
}
|
|
68
|
+
.v-toolbar__content > .v-tabs,
|
|
69
|
+
.v-toolbar__content .v-tab {
|
|
70
|
+
height: inherit;
|
|
67
71
|
}
|
|
@@ -5,14 +5,14 @@ import "./VTabs.css"; // Components
|
|
|
5
5
|
import { VSlideGroup } from "../VSlideGroup/index.mjs";
|
|
6
6
|
import { VTab } from "./VTab.mjs"; // Composables
|
|
7
7
|
|
|
8
|
+
import { useBackgroundColor } from "../../composables/color.mjs";
|
|
9
|
+
import { provideDefaults } from "../../composables/defaults.mjs";
|
|
8
10
|
import { makeDensityProps, useDensity } from "../../composables/density.mjs";
|
|
9
|
-
import { makeTagProps } from "../../composables/tag.mjs";
|
|
10
|
-
import { provideDefaults } from "../../composables/defaults.mjs"; // Utilities
|
|
11
|
+
import { makeTagProps } from "../../composables/tag.mjs"; // Utilities
|
|
11
12
|
|
|
12
13
|
import { computed, toRef } from 'vue';
|
|
13
|
-
import { defineComponent } from "../../util/index.mjs";
|
|
14
|
-
|
|
15
|
-
import { useBackgroundColor } from "../../composables/color.mjs";
|
|
14
|
+
import { defineComponent } from "../../util/index.mjs";
|
|
15
|
+
import { VTabsSymbol } from "./shared.mjs"; // Types
|
|
16
16
|
|
|
17
17
|
function parseItems(items) {
|
|
18
18
|
if (!items) return [];
|
|
@@ -25,7 +25,6 @@ function parseItems(items) {
|
|
|
25
25
|
});
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
export const VTabsSymbol = Symbol.for('vuetify:v-tabs');
|
|
29
28
|
export const VTabs = defineComponent({
|
|
30
29
|
name: 'VTabs',
|
|
31
30
|
props: {
|
|
@@ -50,7 +49,7 @@ export const VTabs = defineComponent({
|
|
|
50
49
|
},
|
|
51
50
|
hideSlider: Boolean,
|
|
52
51
|
optional: Boolean,
|
|
53
|
-
|
|
52
|
+
end: Boolean,
|
|
54
53
|
sliderColor: String,
|
|
55
54
|
modelValue: null,
|
|
56
55
|
...makeDensityProps(),
|
|
@@ -89,7 +88,7 @@ export const VTabs = defineComponent({
|
|
|
89
88
|
'v-tabs--centered': props.centered,
|
|
90
89
|
'v-tabs--fixed-tabs': props.fixedTabs,
|
|
91
90
|
'v-tabs--grow': props.grow,
|
|
92
|
-
'v-tabs--
|
|
91
|
+
'v-tabs--end': props.end,
|
|
93
92
|
'v-tabs--stacked': props.stacked
|
|
94
93
|
}, densityClasses.value, backgroundColorClasses.value],
|
|
95
94
|
"style": backgroundColorStyles.value,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/VTabs/VTabs.tsx"],"names":["VSlideGroup","VTab","makeDensityProps","useDensity","makeTagProps","
|
|
1
|
+
{"version":3,"sources":["../../../src/components/VTabs/VTabs.tsx"],"names":["VSlideGroup","VTab","useBackgroundColor","provideDefaults","makeDensityProps","useDensity","makeTagProps","computed","toRef","defineComponent","VTabsSymbol","parseItems","items","map","item","title","value","VTabs","name","props","alignWithTitle","Boolean","color","String","direction","type","default","fixedTabs","Array","stacked","backgroundColor","centered","grow","height","Number","undefined","hideSlider","optional","end","sliderColor","modelValue","emits","v","setup","slots","emit","parsedItems","densityClasses","backgroundColorClasses","backgroundColorStyles","fixed"],"mappings":"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","sourcesContent":["// Styles\nimport './VTabs.sass'\n\n// Components\nimport { VSlideGroup } from '@/components/VSlideGroup'\nimport { VTab } from './VTab'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { defineComponent } from '@/util'\nimport { VTabsSymbol } from './shared'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport type TabItem = string | Record<string, any>\n\nfunction parseItems (items: TabItem[] | undefined) {\n if (!items) return []\n\n return items.map(item => {\n if (typeof item === 'string') return { title: item, value: item }\n\n return item\n })\n}\n\nexport const VTabs = defineComponent({\n name: 'VTabs',\n\n props: {\n alignWithTitle: Boolean,\n color: String,\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n },\n fixedTabs: Boolean,\n items: {\n type: Array as PropType<TabItem[]>,\n default: () => ([]),\n },\n stacked: Boolean,\n backgroundColor: String,\n centered: Boolean,\n grow: Boolean,\n height: {\n type: [Number, String],\n default: undefined,\n },\n hideSlider: Boolean,\n optional: Boolean,\n end: Boolean,\n sliderColor: String,\n modelValue: null,\n\n ...makeDensityProps(),\n ...makeTagProps(),\n },\n\n emits: {\n 'update:modelValue': (v: unknown) => true,\n },\n\n setup (props, { slots, emit }) {\n const parsedItems = computed(() => parseItems(props.items))\n const { densityClasses } = useDensity(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'backgroundColor'))\n\n provideDefaults({\n VTab: {\n color: toRef(props, 'color'),\n direction: toRef(props, 'direction'),\n stacked: toRef(props, 'stacked'),\n fixed: toRef(props, 'fixedTabs'),\n sliderColor: toRef(props, 'sliderColor'),\n hideSlider: toRef(props, 'hideSlider'),\n },\n })\n\n return () => (\n <VSlideGroup\n class={[\n 'v-tabs',\n `v-tabs--${props.direction}`,\n {\n 'v-tabs--align-with-title': props.alignWithTitle,\n 'v-tabs--centered': props.centered,\n 'v-tabs--fixed-tabs': props.fixedTabs,\n 'v-tabs--grow': props.grow,\n 'v-tabs--end': props.end,\n 'v-tabs--stacked': props.stacked,\n },\n densityClasses.value,\n backgroundColorClasses.value,\n ]}\n style={backgroundColorStyles.value}\n role=\"tablist\"\n symbol={ VTabsSymbol }\n mandatory=\"force\"\n direction={ props.direction }\n modelValue={ props.modelValue }\n onUpdate:modelValue={ v => emit('update:modelValue', v) }\n >\n { slots.default ? slots.default() : parsedItems.value.map(item => (\n <VTab { ...item } key={ item.title } />\n )) }\n </VSlideGroup>\n )\n },\n})\n\nexport type VTabs = InstanceType<typeof VTabs>\n"],"file":"VTabs.mjs"}
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
flex: 1 0 auto
|
|
41
41
|
max-width: none
|
|
42
42
|
|
|
43
|
-
.v-tabs--
|
|
43
|
+
.v-tabs--end
|
|
44
44
|
.v-tab:first-child
|
|
45
45
|
margin-inline-start: auto
|
|
46
46
|
|
|
@@ -53,3 +53,8 @@
|
|
|
53
53
|
margin-inline-start: 52px
|
|
54
54
|
.v-tab:last-child
|
|
55
55
|
margin-inline-end: 52px
|
|
56
|
+
|
|
57
|
+
.v-toolbar__content
|
|
58
|
+
> .v-tabs,
|
|
59
|
+
.v-tab
|
|
60
|
+
height: inherit
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/VTabs/shared.ts"],"names":["VTabsSymbol","Symbol","for"],"mappings":"AAGA,OAAO,MAAMA,WAAuC,GAAGC,MAAM,CAACC,GAAP,CAAW,gBAAX,CAAhD","sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { GroupProvide } from '@/composables/group'\n\nexport const VTabsSymbol: InjectionKey<GroupProvide> = Symbol.for('vuetify:v-tabs')\n"],"file":"shared.mjs"}
|