@vuetify/nightly 3.4.0-alpha.1-dev.2023-10-21 → 3.4.0-alpha.1-dev.2023-10-28
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 +7 -3
- package/dist/_component-variables-labs.sass +1 -5
- package/dist/_component-variables.sass +4 -0
- package/dist/json/attributes.json +26 -26
- package/dist/json/importMap-labs.json +14 -50
- package/dist/json/importMap.json +98 -62
- package/dist/json/web-types.json +30 -30
- package/dist/vuetify-labs.css +695 -694
- package/dist/vuetify-labs.d.ts +41561 -36837
- package/dist/vuetify-labs.esm.js +3188 -3166
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +3187 -3165
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +505 -108
- package/dist/vuetify.d.ts +20359 -13201
- package/dist/vuetify.esm.js +995 -175
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +994 -174
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +1306 -1256
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAlert/index.d.mts +114 -106
- package/lib/components/VApp/index.d.mts +24 -47
- package/lib/components/VAppBar/index.d.mts +219 -175
- package/lib/components/VAutocomplete/VAutocomplete.mjs +13 -10
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VAutocomplete/index.d.mts +1203 -551
- package/lib/components/VAvatar/index.d.mts +45 -53
- package/lib/components/VBadge/index.d.mts +66 -58
- package/lib/components/VBanner/index.d.mts +106 -146
- package/lib/components/VBottomNavigation/index.d.mts +72 -63
- package/lib/{labs → components}/VBottomSheet/VBottomSheet.mjs +1 -1
- package/lib/components/VBottomSheet/VBottomSheet.mjs.map +1 -0
- package/lib/{labs → components}/VBottomSheet/index.d.mts +153 -83
- package/lib/components/VBottomSheet/index.mjs.map +1 -0
- package/lib/components/VBreadcrumbs/index.d.mts +89 -147
- package/lib/components/VBtn/index.d.mts +107 -66
- package/lib/components/VBtnGroup/index.d.mts +38 -51
- package/lib/components/VBtnToggle/index.d.mts +53 -55
- package/lib/components/VCard/index.d.mts +238 -298
- package/lib/components/VCarousel/index.d.mts +251 -131
- package/lib/components/VCheckbox/index.d.mts +259 -146
- package/lib/components/VChip/index.d.mts +157 -76
- package/lib/components/VChipGroup/index.d.mts +76 -55
- package/lib/components/VCode/index.d.mts +21 -46
- package/lib/components/VColorPicker/index.d.mts +112 -61
- package/lib/components/VCombobox/VCombobox.mjs +13 -10
- package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
- package/lib/components/VCombobox/index.d.mts +1203 -551
- package/lib/components/VCounter/index.d.mts +45 -57
- package/lib/components/VDefaultsProvider/index.d.mts +24 -49
- package/lib/components/VDialog/index.d.mts +583 -329
- package/lib/components/VDivider/index.d.mts +30 -49
- package/lib/components/VExpansionPanel/index.d.mts +188 -212
- package/lib/components/VField/index.d.mts +88 -105
- package/lib/components/VFileInput/index.d.mts +472 -287
- package/lib/components/VFooter/index.d.mts +42 -52
- package/lib/components/VForm/index.d.mts +149 -51
- package/lib/components/VGrid/index.d.mts +146 -196
- package/lib/components/VHover/index.d.mts +37 -49
- package/lib/components/VIcon/index.d.mts +79 -234
- package/lib/components/VImg/index.d.mts +80 -61
- package/lib/{labs → components}/VInfiniteScroll/VInfiniteScroll.mjs +2 -2
- package/lib/components/VInfiniteScroll/VInfiniteScroll.mjs.map +1 -0
- package/lib/{labs → components}/VInfiniteScroll/index.d.mts +59 -54
- package/lib/components/VInfiniteScroll/index.mjs.map +1 -0
- package/lib/components/VInput/index.d.mts +90 -66
- package/lib/components/VItemGroup/index.d.mts +115 -99
- package/lib/components/VKbd/index.d.mts +21 -46
- package/lib/components/VLabel/index.d.mts +24 -47
- package/lib/components/VLayout/index.d.mts +55 -96
- package/lib/components/VLazy/index.d.mts +43 -50
- package/lib/components/VList/index.d.mts +403 -468
- package/lib/components/VLocaleProvider/index.d.mts +24 -46
- package/lib/components/VMain/index.d.mts +24 -47
- package/lib/components/VMenu/index.d.mts +573 -324
- package/lib/components/VMessages/index.d.mts +41 -49
- package/lib/components/VNavigationDrawer/VNavigationDrawer.css +1 -0
- package/lib/components/VNavigationDrawer/VNavigationDrawer.sass +1 -0
- package/lib/components/VNavigationDrawer/index.d.mts +95 -67
- package/lib/components/VOverlay/index.d.mts +138 -76
- package/lib/components/VPagination/index.d.mts +114 -73
- package/lib/components/VParallax/index.d.mts +31 -47
- package/lib/components/VProgressCircular/index.d.mts +48 -53
- package/lib/components/VProgressLinear/index.d.mts +84 -63
- package/lib/components/VRadio/index.d.mts +93 -61
- package/lib/components/VRadioGroup/index.d.mts +130 -77
- package/lib/components/VRangeSlider/index.d.mts +169 -86
- package/lib/components/VRating/index.d.mts +75 -62
- package/lib/components/VResponsive/index.d.mts +33 -47
- package/lib/components/VSelect/VSelect.mjs +13 -10
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/VSelect/index.d.mts +1191 -546
- package/lib/components/VSelectionControl/index.d.mts +48 -53
- package/lib/components/VSelectionControlGroup/index.d.mts +58 -57
- package/lib/components/VSheet/index.d.mts +37 -48
- package/lib/components/VSkeletonLoader/VSkeletonLoader.mjs.map +1 -0
- package/lib/{labs → components}/VSkeletonLoader/index.d.mts +36 -51
- package/lib/components/VSkeletonLoader/index.mjs.map +1 -0
- package/lib/components/VSlideGroup/index.d.mts +106 -105
- package/lib/components/VSlider/index.d.mts +166 -85
- package/lib/components/VSnackbar/index.d.mts +572 -324
- package/lib/components/VStepper/VStepper.mjs +137 -98
- package/lib/components/VStepper/VStepper.mjs.map +1 -1
- package/lib/components/VStepper/VStepper.sass +38 -198
- package/lib/{labs → components}/VStepper/VStepperActions.mjs +2 -2
- package/lib/components/VStepper/VStepperActions.mjs.map +1 -0
- package/lib/components/VStepper/VStepperHeader.mjs.map +1 -0
- package/lib/{labs → components}/VStepper/VStepperItem.mjs +2 -2
- package/lib/components/VStepper/VStepperItem.mjs.map +1 -0
- package/lib/{labs → components}/VStepper/VStepperWindow.mjs +1 -1
- package/lib/components/VStepper/VStepperWindow.mjs.map +1 -0
- package/lib/{labs → components}/VStepper/VStepperWindowItem.mjs +1 -1
- package/lib/components/VStepper/VStepperWindowItem.mjs.map +1 -0
- package/lib/components/VStepper/_variables.scss +21 -31
- package/lib/{labs → components}/VStepper/index.d.mts +368 -340
- package/lib/components/VStepper/index.mjs +6 -17
- package/lib/components/VStepper/index.mjs.map +1 -1
- package/lib/components/VSwitch/index.d.mts +168 -86
- package/lib/components/VSystemBar/index.d.mts +39 -51
- package/lib/components/VTable/index.d.mts +45 -51
- package/lib/components/VTabs/index.d.mts +177 -132
- package/lib/components/VTextField/index.d.mts +665 -470
- package/lib/components/VTextarea/index.d.mts +469 -297
- package/lib/components/VThemeProvider/index.d.mts +26 -48
- package/lib/components/VTimeline/index.d.mts +98 -106
- package/lib/components/VToolbar/index.d.mts +119 -150
- package/lib/components/VTooltip/index.d.mts +565 -321
- package/lib/components/VValidation/index.d.mts +108 -62
- package/lib/components/VVirtualScroll/index.d.mts +18 -46
- package/lib/components/VWindow/index.d.mts +130 -110
- package/lib/components/index.d.mts +19973 -12833
- package/lib/components/index.mjs +5 -2
- package/lib/components/index.mjs.map +1 -1
- package/lib/components/transitions/index.d.mts +455 -819
- package/lib/composables/color.mjs +2 -2
- package/lib/composables/color.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/index.d.mts +36 -36
- package/lib/labs/VDataIterator/index.d.mts +112 -75
- package/lib/labs/VDataTable/index.d.mts +1456 -530
- package/lib/labs/VDateInput/index.d.mts +260 -157
- package/lib/labs/VDatePicker/index.d.mts +1100 -889
- package/lib/labs/VDateRangePicker/index.d.mts +207 -129
- package/lib/labs/VOtpInput/index.d.mts +80 -64
- package/lib/labs/VPicker/index.d.mts +74 -97
- package/lib/labs/components.d.mts +7514 -10029
- package/lib/labs/components.mjs +0 -4
- package/lib/labs/components.mjs.map +1 -1
- package/lib/labs/date/adapters/vuetify.mjs +6 -3
- package/lib/labs/date/adapters/vuetify.mjs.map +1 -1
- package/lib/locale/fr.mjs +19 -19
- package/lib/locale/fr.mjs.map +1 -1
- package/lib/util/colorUtils.mjs +3 -0
- package/lib/util/colorUtils.mjs.map +1 -1
- package/lib/util/helpers.mjs +8 -1
- package/lib/util/helpers.mjs.map +1 -1
- package/package.json +1 -1
- package/lib/components/VStepper/VStepperContent.mjs +0 -114
- package/lib/components/VStepper/VStepperContent.mjs.map +0 -1
- package/lib/components/VStepper/VStepperStep.mjs +0 -134
- package/lib/components/VStepper/VStepperStep.mjs.map +0 -1
- package/lib/labs/VBottomSheet/VBottomSheet.mjs.map +0 -1
- package/lib/labs/VBottomSheet/index.mjs.map +0 -1
- package/lib/labs/VInfiniteScroll/VInfiniteScroll.mjs.map +0 -1
- package/lib/labs/VInfiniteScroll/index.mjs.map +0 -1
- package/lib/labs/VSkeletonLoader/VSkeletonLoader.mjs.map +0 -1
- package/lib/labs/VSkeletonLoader/index.mjs.map +0 -1
- package/lib/labs/VStepper/VStepper.mjs +0 -149
- package/lib/labs/VStepper/VStepper.mjs.map +0 -1
- package/lib/labs/VStepper/VStepper.sass +0 -53
- package/lib/labs/VStepper/VStepperActions.mjs.map +0 -1
- package/lib/labs/VStepper/VStepperHeader.mjs.map +0 -1
- package/lib/labs/VStepper/VStepperItem.mjs.map +0 -1
- package/lib/labs/VStepper/VStepperWindow.mjs.map +0 -1
- package/lib/labs/VStepper/VStepperWindowItem.mjs.map +0 -1
- package/lib/labs/VStepper/_variables.scss +0 -27
- package/lib/labs/VStepper/index.mjs +0 -7
- package/lib/labs/VStepper/index.mjs.map +0 -1
- /package/lib/{labs → components}/VBottomSheet/VBottomSheet.css +0 -0
- /package/lib/{labs → components}/VBottomSheet/VBottomSheet.sass +0 -0
- /package/lib/{labs → components}/VBottomSheet/_variables.scss +0 -0
- /package/lib/{labs → components}/VBottomSheet/index.mjs +0 -0
- /package/lib/{labs → components}/VInfiniteScroll/VInfiniteScroll.css +0 -0
- /package/lib/{labs → components}/VInfiniteScroll/VInfiniteScroll.sass +0 -0
- /package/lib/{labs → components}/VInfiniteScroll/_variables.scss +0 -0
- /package/lib/{labs → components}/VInfiniteScroll/index.mjs +0 -0
- /package/lib/{labs → components}/VSkeletonLoader/VSkeletonLoader.css +0 -0
- /package/lib/{labs → components}/VSkeletonLoader/VSkeletonLoader.mjs +0 -0
- /package/lib/{labs → components}/VSkeletonLoader/VSkeletonLoader.sass +0 -0
- /package/lib/{labs → components}/VSkeletonLoader/_variables.scss +0 -0
- /package/lib/{labs → components}/VSkeletonLoader/index.mjs +0 -0
- /package/lib/{labs → components}/VStepper/VStepper.css +0 -0
- /package/lib/{labs → components}/VStepper/VStepperHeader.mjs +0 -0
- /package/lib/{labs → components}/VStepper/VStepperItem.css +0 -0
- /package/lib/{labs → components}/VStepper/VStepperItem.sass +0 -0
package/dist/vuetify.esm.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Vuetify v3.4.0-alpha.1-dev.2023-10-
|
|
2
|
+
* Vuetify v3.4.0-alpha.1-dev.2023-10-28
|
|
3
3
|
* Forged by John Leider
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { Fragment, reactive, computed, watchEffect, toRefs, capitalize, warn, ref, unref, provide, shallowRef, inject as inject$1, defineComponent as defineComponent$1, camelize, h, getCurrentInstance as getCurrentInstance$1, onBeforeUnmount, watch, readonly, onDeactivated, onActivated, onMounted, onScopeDispose, effectScope, toRaw, createVNode, TransitionGroup, Transition, mergeProps, onBeforeMount, nextTick, withDirectives, resolveDirective, vShow, isRef, toRef, Text, resolveDynamicComponent, Teleport, cloneVNode, createTextVNode, onUnmounted, onBeforeUpdate, vModelText } from 'vue';
|
|
7
|
+
import { Fragment, reactive, computed, watchEffect, toRefs, capitalize, isVNode, Comment, warn, ref, unref, provide, shallowRef, inject as inject$1, defineComponent as defineComponent$1, camelize, h, getCurrentInstance as getCurrentInstance$1, onBeforeUnmount, watch, readonly, onDeactivated, onActivated, onMounted, onScopeDispose, effectScope, toRaw, createVNode, TransitionGroup, Transition, mergeProps, onBeforeMount, nextTick, withDirectives, resolveDirective, vShow, isRef, toRef, Text, resolveDynamicComponent, Teleport, cloneVNode, createTextVNode, onUnmounted, onBeforeUpdate, vModelText } from 'vue';
|
|
8
8
|
|
|
9
9
|
// Types
|
|
10
10
|
// eslint-disable-line vue/prefer-import-from-vue
|
|
@@ -234,6 +234,11 @@ function omit(obj, exclude) {
|
|
|
234
234
|
exclude.forEach(prop => delete clone[prop]);
|
|
235
235
|
return clone;
|
|
236
236
|
}
|
|
237
|
+
function only(obj, include) {
|
|
238
|
+
const clone = {};
|
|
239
|
+
include.forEach(prop => clone[prop] = obj[prop]);
|
|
240
|
+
return clone;
|
|
241
|
+
}
|
|
237
242
|
const onRE = /^on[^a-z]/;
|
|
238
243
|
const isOn = key => onRE.test(key);
|
|
239
244
|
const bubblingEvents = ['onAfterscriptexecute', 'onAnimationcancel', 'onAnimationend', 'onAnimationiteration', 'onAnimationstart', 'onAuxclick', 'onBeforeinput', 'onBeforescriptexecute', 'onChange', 'onClick', 'onCompositionend', 'onCompositionstart', 'onCompositionupdate', 'onContextmenu', 'onCopy', 'onCut', 'onDblclick', 'onFocusin', 'onFocusout', 'onFullscreenchange', 'onFullscreenerror', 'onGesturechange', 'onGestureend', 'onGesturestart', 'onGotpointercapture', 'onInput', 'onKeydown', 'onKeypress', 'onKeyup', 'onLostpointercapture', 'onMousedown', 'onMousemove', 'onMouseout', 'onMouseover', 'onMouseup', 'onMousewheel', 'onPaste', 'onPointercancel', 'onPointerdown', 'onPointerenter', 'onPointerleave', 'onPointermove', 'onPointerout', 'onPointerover', 'onPointerup', 'onReset', 'onSelect', 'onSubmit', 'onTouchcancel', 'onTouchend', 'onTouchmove', 'onTouchstart', 'onTransitioncancel', 'onTransitionend', 'onTransitionrun', 'onTransitionstart', 'onWheel'];
|
|
@@ -474,6 +479,13 @@ function matchesSelector(el, selector) {
|
|
|
474
479
|
return null;
|
|
475
480
|
}
|
|
476
481
|
}
|
|
482
|
+
function ensureValidVNode(vnodes) {
|
|
483
|
+
return vnodes.some(child => {
|
|
484
|
+
if (!isVNode(child)) return true;
|
|
485
|
+
if (child.type === Comment) return false;
|
|
486
|
+
return child.type !== Fragment || ensureValidVNode(child.children);
|
|
487
|
+
}) ? vnodes : null;
|
|
488
|
+
}
|
|
477
489
|
|
|
478
490
|
// Utilities
|
|
479
491
|
const block = ['top', 'bottom'];
|
|
@@ -866,6 +878,9 @@ function toXYZ(_ref) {
|
|
|
866
878
|
function isCssColor(color) {
|
|
867
879
|
return !!color && /^(#|var\(--|(rgb|hsl)a?\()/.test(color);
|
|
868
880
|
}
|
|
881
|
+
function isParsableColor(color) {
|
|
882
|
+
return isCssColor(color) && !/^((rgb|hsl)a?\()?var\(--/.test(color);
|
|
883
|
+
}
|
|
869
884
|
const cssColorRe = /^(?<fn>(?:rgb|hsl)a?)\((?<values>.+)\)/;
|
|
870
885
|
const mappers = {
|
|
871
886
|
rgb: (r, g, b, a) => ({
|
|
@@ -3302,7 +3317,7 @@ function useColor(colors) {
|
|
|
3302
3317
|
if (colors.value.background) {
|
|
3303
3318
|
if (isCssColor(colors.value.background)) {
|
|
3304
3319
|
styles.backgroundColor = colors.value.background;
|
|
3305
|
-
if (!colors.value.text) {
|
|
3320
|
+
if (!colors.value.text && isParsableColor(colors.value.background)) {
|
|
3306
3321
|
const backgroundColor = parseColor(colors.value.background);
|
|
3307
3322
|
if (backgroundColor.a == null || backgroundColor.a === 1) {
|
|
3308
3323
|
const textColor = getForeground(backgroundColor);
|
|
@@ -11250,6 +11265,16 @@ const VSelect = genericComponent()({
|
|
|
11250
11265
|
modelValue: true,
|
|
11251
11266
|
'onUpdate:modelValue': undefined
|
|
11252
11267
|
};
|
|
11268
|
+
const hasSlot = hasChips ? !!slots.chip : !!slots.selection;
|
|
11269
|
+
const slotContent = hasSlot ? ensureValidVNode(hasChips ? slots.chip({
|
|
11270
|
+
item,
|
|
11271
|
+
index,
|
|
11272
|
+
props: slotProps
|
|
11273
|
+
}) : slots.selection({
|
|
11274
|
+
item,
|
|
11275
|
+
index
|
|
11276
|
+
})) : undefined;
|
|
11277
|
+
if (hasSlot && !slotContent) return undefined;
|
|
11253
11278
|
return createVNode("div", {
|
|
11254
11279
|
"key": item.value,
|
|
11255
11280
|
"class": "v-select__selection"
|
|
@@ -11269,15 +11294,8 @@ const VSelect = genericComponent()({
|
|
|
11269
11294
|
}
|
|
11270
11295
|
}
|
|
11271
11296
|
}, {
|
|
11272
|
-
default: () => [
|
|
11273
|
-
|
|
11274
|
-
index,
|
|
11275
|
-
props: slotProps
|
|
11276
|
-
})]
|
|
11277
|
-
}) : slots.selection?.({
|
|
11278
|
-
item,
|
|
11279
|
-
index
|
|
11280
|
-
}) ?? createVNode("span", {
|
|
11297
|
+
default: () => [slotContent]
|
|
11298
|
+
}) : slotContent ?? createVNode("span", {
|
|
11281
11299
|
"class": "v-select__selection-text"
|
|
11282
11300
|
}, [item.title, props.multiple && index < model.value.length - 1 && createVNode("span", {
|
|
11283
11301
|
"class": "v-select__selection-comma"
|
|
@@ -11778,6 +11796,16 @@ const VAutocomplete = genericComponent()({
|
|
|
11778
11796
|
modelValue: true,
|
|
11779
11797
|
'onUpdate:modelValue': undefined
|
|
11780
11798
|
};
|
|
11799
|
+
const hasSlot = hasChips ? !!slots.chip : !!slots.selection;
|
|
11800
|
+
const slotContent = hasSlot ? ensureValidVNode(hasChips ? slots.chip({
|
|
11801
|
+
item,
|
|
11802
|
+
index,
|
|
11803
|
+
props: slotProps
|
|
11804
|
+
}) : slots.selection({
|
|
11805
|
+
item,
|
|
11806
|
+
index
|
|
11807
|
+
})) : undefined;
|
|
11808
|
+
if (hasSlot && !slotContent) return undefined;
|
|
11781
11809
|
return createVNode("div", {
|
|
11782
11810
|
"key": item.value,
|
|
11783
11811
|
"class": ['v-autocomplete__selection', index === selectionIndex.value && ['v-autocomplete__selection--selected', textColorClasses.value]],
|
|
@@ -11798,15 +11826,8 @@ const VAutocomplete = genericComponent()({
|
|
|
11798
11826
|
}
|
|
11799
11827
|
}
|
|
11800
11828
|
}, {
|
|
11801
|
-
default: () => [
|
|
11802
|
-
|
|
11803
|
-
index,
|
|
11804
|
-
props: slotProps
|
|
11805
|
-
})]
|
|
11806
|
-
}) : slots.selection?.({
|
|
11807
|
-
item,
|
|
11808
|
-
index
|
|
11809
|
-
}) ?? createVNode("span", {
|
|
11829
|
+
default: () => [slotContent]
|
|
11830
|
+
}) : slotContent ?? createVNode("span", {
|
|
11810
11831
|
"class": "v-autocomplete__selection-text"
|
|
11811
11832
|
}, [item.title, props.multiple && index < model.value.length - 1 && createVNode("span", {
|
|
11812
11833
|
"class": "v-autocomplete__selection-comma"
|
|
@@ -12191,6 +12212,151 @@ const VBottomNavigation = genericComponent()({
|
|
|
12191
12212
|
}
|
|
12192
12213
|
});
|
|
12193
12214
|
|
|
12215
|
+
// Types
|
|
12216
|
+
|
|
12217
|
+
const makeVDialogProps = propsFactory({
|
|
12218
|
+
fullscreen: Boolean,
|
|
12219
|
+
retainFocus: {
|
|
12220
|
+
type: Boolean,
|
|
12221
|
+
default: true
|
|
12222
|
+
},
|
|
12223
|
+
scrollable: Boolean,
|
|
12224
|
+
...makeVOverlayProps({
|
|
12225
|
+
origin: 'center center',
|
|
12226
|
+
scrollStrategy: 'block',
|
|
12227
|
+
transition: {
|
|
12228
|
+
component: VDialogTransition
|
|
12229
|
+
},
|
|
12230
|
+
zIndex: 2400
|
|
12231
|
+
})
|
|
12232
|
+
}, 'VDialog');
|
|
12233
|
+
const VDialog = genericComponent()({
|
|
12234
|
+
name: 'VDialog',
|
|
12235
|
+
props: makeVDialogProps(),
|
|
12236
|
+
emits: {
|
|
12237
|
+
'update:modelValue': value => true
|
|
12238
|
+
},
|
|
12239
|
+
setup(props, _ref) {
|
|
12240
|
+
let {
|
|
12241
|
+
slots
|
|
12242
|
+
} = _ref;
|
|
12243
|
+
const isActive = useProxiedModel(props, 'modelValue');
|
|
12244
|
+
const {
|
|
12245
|
+
scopeId
|
|
12246
|
+
} = useScopeId();
|
|
12247
|
+
const overlay = ref();
|
|
12248
|
+
function onFocusin(e) {
|
|
12249
|
+
const before = e.relatedTarget;
|
|
12250
|
+
const after = e.target;
|
|
12251
|
+
if (before !== after && overlay.value?.contentEl &&
|
|
12252
|
+
// We're the topmost dialog
|
|
12253
|
+
overlay.value?.globalTop &&
|
|
12254
|
+
// It isn't the document or the dialog body
|
|
12255
|
+
![document, overlay.value.contentEl].includes(after) &&
|
|
12256
|
+
// It isn't inside the dialog body
|
|
12257
|
+
!overlay.value.contentEl.contains(after)) {
|
|
12258
|
+
const focusable = focusableChildren(overlay.value.contentEl);
|
|
12259
|
+
if (!focusable.length) return;
|
|
12260
|
+
const firstElement = focusable[0];
|
|
12261
|
+
const lastElement = focusable[focusable.length - 1];
|
|
12262
|
+
if (before === firstElement) {
|
|
12263
|
+
lastElement.focus();
|
|
12264
|
+
} else {
|
|
12265
|
+
firstElement.focus();
|
|
12266
|
+
}
|
|
12267
|
+
}
|
|
12268
|
+
}
|
|
12269
|
+
if (IN_BROWSER) {
|
|
12270
|
+
watch(() => isActive.value && props.retainFocus, val => {
|
|
12271
|
+
val ? document.addEventListener('focusin', onFocusin) : document.removeEventListener('focusin', onFocusin);
|
|
12272
|
+
}, {
|
|
12273
|
+
immediate: true
|
|
12274
|
+
});
|
|
12275
|
+
}
|
|
12276
|
+
watch(isActive, async val => {
|
|
12277
|
+
await nextTick();
|
|
12278
|
+
if (val) {
|
|
12279
|
+
overlay.value.contentEl?.focus({
|
|
12280
|
+
preventScroll: true
|
|
12281
|
+
});
|
|
12282
|
+
} else {
|
|
12283
|
+
overlay.value.activatorEl?.focus({
|
|
12284
|
+
preventScroll: true
|
|
12285
|
+
});
|
|
12286
|
+
}
|
|
12287
|
+
});
|
|
12288
|
+
const activatorProps = computed(() => mergeProps({
|
|
12289
|
+
'aria-haspopup': 'dialog',
|
|
12290
|
+
'aria-expanded': String(isActive.value)
|
|
12291
|
+
}, props.activatorProps));
|
|
12292
|
+
useRender(() => {
|
|
12293
|
+
const [overlayProps] = VOverlay.filterProps(props);
|
|
12294
|
+
return createVNode(VOverlay, mergeProps({
|
|
12295
|
+
"ref": overlay,
|
|
12296
|
+
"class": ['v-dialog', {
|
|
12297
|
+
'v-dialog--fullscreen': props.fullscreen,
|
|
12298
|
+
'v-dialog--scrollable': props.scrollable
|
|
12299
|
+
}, props.class],
|
|
12300
|
+
"style": props.style
|
|
12301
|
+
}, overlayProps, {
|
|
12302
|
+
"modelValue": isActive.value,
|
|
12303
|
+
"onUpdate:modelValue": $event => isActive.value = $event,
|
|
12304
|
+
"aria-modal": "true",
|
|
12305
|
+
"activatorProps": activatorProps.value,
|
|
12306
|
+
"role": "dialog"
|
|
12307
|
+
}, scopeId), {
|
|
12308
|
+
activator: slots.activator,
|
|
12309
|
+
default: function () {
|
|
12310
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
12311
|
+
args[_key] = arguments[_key];
|
|
12312
|
+
}
|
|
12313
|
+
return createVNode(VDefaultsProvider, {
|
|
12314
|
+
"root": "VDialog"
|
|
12315
|
+
}, {
|
|
12316
|
+
default: () => [slots.default?.(...args)]
|
|
12317
|
+
});
|
|
12318
|
+
}
|
|
12319
|
+
});
|
|
12320
|
+
});
|
|
12321
|
+
return forwardRefs({}, overlay);
|
|
12322
|
+
}
|
|
12323
|
+
});
|
|
12324
|
+
|
|
12325
|
+
// Types
|
|
12326
|
+
|
|
12327
|
+
const makeVBottomSheetProps = propsFactory({
|
|
12328
|
+
inset: Boolean,
|
|
12329
|
+
...makeVDialogProps({
|
|
12330
|
+
transition: 'bottom-sheet-transition'
|
|
12331
|
+
})
|
|
12332
|
+
}, 'VBottomSheet');
|
|
12333
|
+
const VBottomSheet = genericComponent()({
|
|
12334
|
+
name: 'VBottomSheet',
|
|
12335
|
+
props: makeVBottomSheetProps(),
|
|
12336
|
+
emits: {
|
|
12337
|
+
'update:modelValue': value => true
|
|
12338
|
+
},
|
|
12339
|
+
setup(props, _ref) {
|
|
12340
|
+
let {
|
|
12341
|
+
slots
|
|
12342
|
+
} = _ref;
|
|
12343
|
+
const isActive = useProxiedModel(props, 'modelValue');
|
|
12344
|
+
useRender(() => {
|
|
12345
|
+
const [dialogProps] = VDialog.filterProps(props);
|
|
12346
|
+
return createVNode(VDialog, mergeProps(dialogProps, {
|
|
12347
|
+
"contentClass": ['v-bottom-sheet__content', props.contentClass],
|
|
12348
|
+
"modelValue": isActive.value,
|
|
12349
|
+
"onUpdate:modelValue": $event => isActive.value = $event,
|
|
12350
|
+
"class": ['v-bottom-sheet', {
|
|
12351
|
+
'v-bottom-sheet--inset': props.inset
|
|
12352
|
+
}, props.class],
|
|
12353
|
+
"style": props.style
|
|
12354
|
+
}), slots);
|
|
12355
|
+
});
|
|
12356
|
+
return {};
|
|
12357
|
+
}
|
|
12358
|
+
});
|
|
12359
|
+
|
|
12194
12360
|
const makeVBreadcrumbsDividerProps = propsFactory({
|
|
12195
12361
|
divider: [Number, String],
|
|
12196
12362
|
...makeComponentProps()
|
|
@@ -15373,6 +15539,16 @@ const VCombobox = genericComponent()({
|
|
|
15373
15539
|
modelValue: true,
|
|
15374
15540
|
'onUpdate:modelValue': undefined
|
|
15375
15541
|
};
|
|
15542
|
+
const hasSlot = hasChips ? !!slots.chip : !!slots.selection;
|
|
15543
|
+
const slotContent = hasSlot ? ensureValidVNode(hasChips ? slots.chip({
|
|
15544
|
+
item,
|
|
15545
|
+
index,
|
|
15546
|
+
props: slotProps
|
|
15547
|
+
}) : slots.selection({
|
|
15548
|
+
item,
|
|
15549
|
+
index
|
|
15550
|
+
})) : undefined;
|
|
15551
|
+
if (hasSlot && !slotContent) return undefined;
|
|
15376
15552
|
return createVNode("div", {
|
|
15377
15553
|
"key": item.value,
|
|
15378
15554
|
"class": ['v-combobox__selection', index === selectionIndex.value && ['v-combobox__selection--selected', textColorClasses.value]],
|
|
@@ -15393,15 +15569,8 @@ const VCombobox = genericComponent()({
|
|
|
15393
15569
|
}
|
|
15394
15570
|
}
|
|
15395
15571
|
}, {
|
|
15396
|
-
default: () => [
|
|
15397
|
-
|
|
15398
|
-
index,
|
|
15399
|
-
props: slotProps
|
|
15400
|
-
})]
|
|
15401
|
-
}) : slots.selection?.({
|
|
15402
|
-
item,
|
|
15403
|
-
index
|
|
15404
|
-
}) ?? createVNode("span", {
|
|
15572
|
+
default: () => [slotContent]
|
|
15573
|
+
}) : slotContent ?? createVNode("span", {
|
|
15405
15574
|
"class": "v-combobox__selection-text"
|
|
15406
15575
|
}, [item.title, props.multiple && index < model.value.length - 1 && createVNode("span", {
|
|
15407
15576
|
"class": "v-combobox__selection-comma"
|
|
@@ -15436,154 +15605,44 @@ const VCombobox = genericComponent()({
|
|
|
15436
15605
|
|
|
15437
15606
|
// Types
|
|
15438
15607
|
|
|
15439
|
-
const
|
|
15440
|
-
|
|
15441
|
-
|
|
15442
|
-
|
|
15443
|
-
|
|
15608
|
+
const VExpansionPanelSymbol = Symbol.for('vuetify:v-expansion-panel');
|
|
15609
|
+
const allowedVariants = ['default', 'accordion', 'inset', 'popout'];
|
|
15610
|
+
const makeVExpansionPanelsProps = propsFactory({
|
|
15611
|
+
color: String,
|
|
15612
|
+
static: Boolean,
|
|
15613
|
+
variant: {
|
|
15614
|
+
type: String,
|
|
15615
|
+
default: 'default',
|
|
15616
|
+
validator: v => allowedVariants.includes(v)
|
|
15444
15617
|
},
|
|
15445
|
-
|
|
15446
|
-
...
|
|
15447
|
-
|
|
15448
|
-
|
|
15449
|
-
|
|
15450
|
-
|
|
15451
|
-
|
|
15452
|
-
|
|
15453
|
-
|
|
15454
|
-
}, 'VDialog');
|
|
15455
|
-
const VDialog = genericComponent()({
|
|
15456
|
-
name: 'VDialog',
|
|
15457
|
-
props: makeVDialogProps(),
|
|
15618
|
+
readonly: Boolean,
|
|
15619
|
+
...makeComponentProps(),
|
|
15620
|
+
...makeGroupProps(),
|
|
15621
|
+
...makeTagProps(),
|
|
15622
|
+
...makeThemeProps()
|
|
15623
|
+
}, 'VExpansionPanels');
|
|
15624
|
+
const VExpansionPanels = genericComponent()({
|
|
15625
|
+
name: 'VExpansionPanels',
|
|
15626
|
+
props: makeVExpansionPanelsProps(),
|
|
15458
15627
|
emits: {
|
|
15459
|
-
'update:modelValue':
|
|
15628
|
+
'update:modelValue': val => true
|
|
15460
15629
|
},
|
|
15461
15630
|
setup(props, _ref) {
|
|
15462
15631
|
let {
|
|
15463
15632
|
slots
|
|
15464
15633
|
} = _ref;
|
|
15465
|
-
|
|
15634
|
+
useGroup(props, VExpansionPanelSymbol);
|
|
15466
15635
|
const {
|
|
15467
|
-
|
|
15468
|
-
} =
|
|
15469
|
-
const
|
|
15470
|
-
|
|
15471
|
-
|
|
15472
|
-
|
|
15473
|
-
|
|
15474
|
-
|
|
15475
|
-
|
|
15476
|
-
|
|
15477
|
-
![document, overlay.value.contentEl].includes(after) &&
|
|
15478
|
-
// It isn't inside the dialog body
|
|
15479
|
-
!overlay.value.contentEl.contains(after)) {
|
|
15480
|
-
const focusable = focusableChildren(overlay.value.contentEl);
|
|
15481
|
-
if (!focusable.length) return;
|
|
15482
|
-
const firstElement = focusable[0];
|
|
15483
|
-
const lastElement = focusable[focusable.length - 1];
|
|
15484
|
-
if (before === firstElement) {
|
|
15485
|
-
lastElement.focus();
|
|
15486
|
-
} else {
|
|
15487
|
-
firstElement.focus();
|
|
15488
|
-
}
|
|
15489
|
-
}
|
|
15490
|
-
}
|
|
15491
|
-
if (IN_BROWSER) {
|
|
15492
|
-
watch(() => isActive.value && props.retainFocus, val => {
|
|
15493
|
-
val ? document.addEventListener('focusin', onFocusin) : document.removeEventListener('focusin', onFocusin);
|
|
15494
|
-
}, {
|
|
15495
|
-
immediate: true
|
|
15496
|
-
});
|
|
15497
|
-
}
|
|
15498
|
-
watch(isActive, async val => {
|
|
15499
|
-
await nextTick();
|
|
15500
|
-
if (val) {
|
|
15501
|
-
overlay.value.contentEl?.focus({
|
|
15502
|
-
preventScroll: true
|
|
15503
|
-
});
|
|
15504
|
-
} else {
|
|
15505
|
-
overlay.value.activatorEl?.focus({
|
|
15506
|
-
preventScroll: true
|
|
15507
|
-
});
|
|
15508
|
-
}
|
|
15509
|
-
});
|
|
15510
|
-
const activatorProps = computed(() => mergeProps({
|
|
15511
|
-
'aria-haspopup': 'dialog',
|
|
15512
|
-
'aria-expanded': String(isActive.value)
|
|
15513
|
-
}, props.activatorProps));
|
|
15514
|
-
useRender(() => {
|
|
15515
|
-
const [overlayProps] = VOverlay.filterProps(props);
|
|
15516
|
-
return createVNode(VOverlay, mergeProps({
|
|
15517
|
-
"ref": overlay,
|
|
15518
|
-
"class": ['v-dialog', {
|
|
15519
|
-
'v-dialog--fullscreen': props.fullscreen,
|
|
15520
|
-
'v-dialog--scrollable': props.scrollable
|
|
15521
|
-
}, props.class],
|
|
15522
|
-
"style": props.style
|
|
15523
|
-
}, overlayProps, {
|
|
15524
|
-
"modelValue": isActive.value,
|
|
15525
|
-
"onUpdate:modelValue": $event => isActive.value = $event,
|
|
15526
|
-
"aria-modal": "true",
|
|
15527
|
-
"activatorProps": activatorProps.value,
|
|
15528
|
-
"role": "dialog"
|
|
15529
|
-
}, scopeId), {
|
|
15530
|
-
activator: slots.activator,
|
|
15531
|
-
default: function () {
|
|
15532
|
-
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
15533
|
-
args[_key] = arguments[_key];
|
|
15534
|
-
}
|
|
15535
|
-
return createVNode(VDefaultsProvider, {
|
|
15536
|
-
"root": "VDialog"
|
|
15537
|
-
}, {
|
|
15538
|
-
default: () => [slots.default?.(...args)]
|
|
15539
|
-
});
|
|
15540
|
-
}
|
|
15541
|
-
});
|
|
15542
|
-
});
|
|
15543
|
-
return forwardRefs({}, overlay);
|
|
15544
|
-
}
|
|
15545
|
-
});
|
|
15546
|
-
|
|
15547
|
-
// Types
|
|
15548
|
-
|
|
15549
|
-
const VExpansionPanelSymbol = Symbol.for('vuetify:v-expansion-panel');
|
|
15550
|
-
const allowedVariants = ['default', 'accordion', 'inset', 'popout'];
|
|
15551
|
-
const makeVExpansionPanelsProps = propsFactory({
|
|
15552
|
-
color: String,
|
|
15553
|
-
static: Boolean,
|
|
15554
|
-
variant: {
|
|
15555
|
-
type: String,
|
|
15556
|
-
default: 'default',
|
|
15557
|
-
validator: v => allowedVariants.includes(v)
|
|
15558
|
-
},
|
|
15559
|
-
readonly: Boolean,
|
|
15560
|
-
...makeComponentProps(),
|
|
15561
|
-
...makeGroupProps(),
|
|
15562
|
-
...makeTagProps(),
|
|
15563
|
-
...makeThemeProps()
|
|
15564
|
-
}, 'VExpansionPanels');
|
|
15565
|
-
const VExpansionPanels = genericComponent()({
|
|
15566
|
-
name: 'VExpansionPanels',
|
|
15567
|
-
props: makeVExpansionPanelsProps(),
|
|
15568
|
-
emits: {
|
|
15569
|
-
'update:modelValue': val => true
|
|
15570
|
-
},
|
|
15571
|
-
setup(props, _ref) {
|
|
15572
|
-
let {
|
|
15573
|
-
slots
|
|
15574
|
-
} = _ref;
|
|
15575
|
-
useGroup(props, VExpansionPanelSymbol);
|
|
15576
|
-
const {
|
|
15577
|
-
themeClasses
|
|
15578
|
-
} = provideTheme(props);
|
|
15579
|
-
const variantClass = computed(() => props.variant && `v-expansion-panels--variant-${props.variant}`);
|
|
15580
|
-
provideDefaults({
|
|
15581
|
-
VExpansionPanel: {
|
|
15582
|
-
color: toRef(props, 'color')
|
|
15583
|
-
},
|
|
15584
|
-
VExpansionPanelTitle: {
|
|
15585
|
-
readonly: toRef(props, 'readonly'),
|
|
15586
|
-
static: toRef(props, 'static')
|
|
15636
|
+
themeClasses
|
|
15637
|
+
} = provideTheme(props);
|
|
15638
|
+
const variantClass = computed(() => props.variant && `v-expansion-panels--variant-${props.variant}`);
|
|
15639
|
+
provideDefaults({
|
|
15640
|
+
VExpansionPanel: {
|
|
15641
|
+
color: toRef(props, 'color')
|
|
15642
|
+
},
|
|
15643
|
+
VExpansionPanelTitle: {
|
|
15644
|
+
readonly: toRef(props, 'readonly'),
|
|
15645
|
+
static: toRef(props, 'static')
|
|
15587
15646
|
}
|
|
15588
15647
|
});
|
|
15589
15648
|
useRender(() => createVNode(props.tag, {
|
|
@@ -16422,6 +16481,235 @@ const VHover = genericComponent()({
|
|
|
16422
16481
|
}
|
|
16423
16482
|
});
|
|
16424
16483
|
|
|
16484
|
+
// Types
|
|
16485
|
+
|
|
16486
|
+
const makeVInfiniteScrollProps = propsFactory({
|
|
16487
|
+
color: String,
|
|
16488
|
+
direction: {
|
|
16489
|
+
type: String,
|
|
16490
|
+
default: 'vertical',
|
|
16491
|
+
validator: v => ['vertical', 'horizontal'].includes(v)
|
|
16492
|
+
},
|
|
16493
|
+
side: {
|
|
16494
|
+
type: String,
|
|
16495
|
+
default: 'end',
|
|
16496
|
+
validator: v => ['start', 'end', 'both'].includes(v)
|
|
16497
|
+
},
|
|
16498
|
+
mode: {
|
|
16499
|
+
type: String,
|
|
16500
|
+
default: 'intersect',
|
|
16501
|
+
validator: v => ['intersect', 'manual'].includes(v)
|
|
16502
|
+
},
|
|
16503
|
+
margin: [Number, String],
|
|
16504
|
+
loadMoreText: {
|
|
16505
|
+
type: String,
|
|
16506
|
+
default: '$vuetify.infiniteScroll.loadMore'
|
|
16507
|
+
},
|
|
16508
|
+
emptyText: {
|
|
16509
|
+
type: String,
|
|
16510
|
+
default: '$vuetify.infiniteScroll.empty'
|
|
16511
|
+
},
|
|
16512
|
+
...makeDimensionProps(),
|
|
16513
|
+
...makeTagProps()
|
|
16514
|
+
}, 'VInfiniteScroll');
|
|
16515
|
+
const VInfiniteScrollIntersect = defineComponent({
|
|
16516
|
+
name: 'VInfiniteScrollIntersect',
|
|
16517
|
+
props: {
|
|
16518
|
+
side: {
|
|
16519
|
+
type: String,
|
|
16520
|
+
required: true
|
|
16521
|
+
},
|
|
16522
|
+
rootRef: null,
|
|
16523
|
+
rootMargin: String
|
|
16524
|
+
},
|
|
16525
|
+
emits: {
|
|
16526
|
+
intersect: (side, isIntersecting) => true
|
|
16527
|
+
},
|
|
16528
|
+
setup(props, _ref) {
|
|
16529
|
+
let {
|
|
16530
|
+
emit
|
|
16531
|
+
} = _ref;
|
|
16532
|
+
const {
|
|
16533
|
+
intersectionRef,
|
|
16534
|
+
isIntersecting
|
|
16535
|
+
} = useIntersectionObserver(entries => {}, props.rootMargin ? {
|
|
16536
|
+
rootMargin: props.rootMargin
|
|
16537
|
+
} : undefined);
|
|
16538
|
+
watch(isIntersecting, async val => {
|
|
16539
|
+
emit('intersect', props.side, val);
|
|
16540
|
+
});
|
|
16541
|
+
useRender(() => createVNode("div", {
|
|
16542
|
+
"class": "v-infinite-scroll-intersect",
|
|
16543
|
+
"ref": intersectionRef
|
|
16544
|
+
}, [createTextVNode("\xA0")]));
|
|
16545
|
+
return {};
|
|
16546
|
+
}
|
|
16547
|
+
});
|
|
16548
|
+
const VInfiniteScroll = genericComponent()({
|
|
16549
|
+
name: 'VInfiniteScroll',
|
|
16550
|
+
props: makeVInfiniteScrollProps(),
|
|
16551
|
+
emits: {
|
|
16552
|
+
load: options => true
|
|
16553
|
+
},
|
|
16554
|
+
setup(props, _ref2) {
|
|
16555
|
+
let {
|
|
16556
|
+
slots,
|
|
16557
|
+
emit
|
|
16558
|
+
} = _ref2;
|
|
16559
|
+
const rootEl = ref();
|
|
16560
|
+
const startStatus = shallowRef('ok');
|
|
16561
|
+
const endStatus = shallowRef('ok');
|
|
16562
|
+
const margin = computed(() => convertToUnit(props.margin));
|
|
16563
|
+
const isIntersecting = shallowRef(false);
|
|
16564
|
+
function setScrollAmount(amount) {
|
|
16565
|
+
if (!rootEl.value) return;
|
|
16566
|
+
const property = props.direction === 'vertical' ? 'scrollTop' : 'scrollLeft';
|
|
16567
|
+
rootEl.value[property] = amount;
|
|
16568
|
+
}
|
|
16569
|
+
function getScrollAmount() {
|
|
16570
|
+
if (!rootEl.value) return 0;
|
|
16571
|
+
const property = props.direction === 'vertical' ? 'scrollTop' : 'scrollLeft';
|
|
16572
|
+
return rootEl.value[property];
|
|
16573
|
+
}
|
|
16574
|
+
function getScrollSize() {
|
|
16575
|
+
if (!rootEl.value) return 0;
|
|
16576
|
+
const property = props.direction === 'vertical' ? 'scrollHeight' : 'scrollWidth';
|
|
16577
|
+
return rootEl.value[property];
|
|
16578
|
+
}
|
|
16579
|
+
function getContainerSize() {
|
|
16580
|
+
if (!rootEl.value) return 0;
|
|
16581
|
+
const property = props.direction === 'vertical' ? 'clientHeight' : 'clientWidth';
|
|
16582
|
+
return rootEl.value[property];
|
|
16583
|
+
}
|
|
16584
|
+
onMounted(() => {
|
|
16585
|
+
if (!rootEl.value) return;
|
|
16586
|
+
if (props.side === 'start') {
|
|
16587
|
+
setScrollAmount(getScrollSize());
|
|
16588
|
+
} else if (props.side === 'both') {
|
|
16589
|
+
setScrollAmount(getScrollSize() / 2 - getContainerSize() / 2);
|
|
16590
|
+
}
|
|
16591
|
+
});
|
|
16592
|
+
function setStatus(side, status) {
|
|
16593
|
+
if (side === 'start') {
|
|
16594
|
+
startStatus.value = status;
|
|
16595
|
+
} else if (side === 'end') {
|
|
16596
|
+
endStatus.value = status;
|
|
16597
|
+
}
|
|
16598
|
+
}
|
|
16599
|
+
function getStatus(side) {
|
|
16600
|
+
return side === 'start' ? startStatus.value : endStatus.value;
|
|
16601
|
+
}
|
|
16602
|
+
let previousScrollSize = 0;
|
|
16603
|
+
function handleIntersect(side, _isIntersecting) {
|
|
16604
|
+
isIntersecting.value = _isIntersecting;
|
|
16605
|
+
if (isIntersecting.value) {
|
|
16606
|
+
intersecting(side);
|
|
16607
|
+
}
|
|
16608
|
+
}
|
|
16609
|
+
function intersecting(side) {
|
|
16610
|
+
if (props.mode !== 'manual' && !isIntersecting.value) return;
|
|
16611
|
+
const status = getStatus(side);
|
|
16612
|
+
if (!rootEl.value || status === 'loading') return;
|
|
16613
|
+
previousScrollSize = getScrollSize();
|
|
16614
|
+
setStatus(side, 'loading');
|
|
16615
|
+
function done(status) {
|
|
16616
|
+
setStatus(side, status);
|
|
16617
|
+
nextTick(() => {
|
|
16618
|
+
if (status === 'empty' || status === 'error') return;
|
|
16619
|
+
if (status === 'ok' && side === 'start') {
|
|
16620
|
+
setScrollAmount(getScrollSize() - previousScrollSize + getScrollAmount());
|
|
16621
|
+
}
|
|
16622
|
+
if (props.mode !== 'manual') {
|
|
16623
|
+
nextTick(() => {
|
|
16624
|
+
window.requestAnimationFrame(() => {
|
|
16625
|
+
window.requestAnimationFrame(() => {
|
|
16626
|
+
window.requestAnimationFrame(() => {
|
|
16627
|
+
intersecting(side);
|
|
16628
|
+
});
|
|
16629
|
+
});
|
|
16630
|
+
});
|
|
16631
|
+
});
|
|
16632
|
+
}
|
|
16633
|
+
});
|
|
16634
|
+
}
|
|
16635
|
+
emit('load', {
|
|
16636
|
+
side,
|
|
16637
|
+
done
|
|
16638
|
+
});
|
|
16639
|
+
}
|
|
16640
|
+
const {
|
|
16641
|
+
t
|
|
16642
|
+
} = useLocale();
|
|
16643
|
+
function renderSide(side, status) {
|
|
16644
|
+
if (props.side !== side && props.side !== 'both') return;
|
|
16645
|
+
const onClick = () => intersecting(side);
|
|
16646
|
+
const slotProps = {
|
|
16647
|
+
side,
|
|
16648
|
+
props: {
|
|
16649
|
+
onClick,
|
|
16650
|
+
color: props.color
|
|
16651
|
+
}
|
|
16652
|
+
};
|
|
16653
|
+
if (status === 'error') return slots.error?.(slotProps);
|
|
16654
|
+
if (status === 'empty') return slots.empty?.(slotProps) ?? createVNode("div", null, [t(props.emptyText)]);
|
|
16655
|
+
if (props.mode === 'manual') {
|
|
16656
|
+
if (status === 'loading') {
|
|
16657
|
+
return slots.loading?.(slotProps) ?? createVNode(VProgressCircular, {
|
|
16658
|
+
"indeterminate": true,
|
|
16659
|
+
"color": props.color
|
|
16660
|
+
}, null);
|
|
16661
|
+
}
|
|
16662
|
+
return slots['load-more']?.(slotProps) ?? createVNode(VBtn, {
|
|
16663
|
+
"variant": "outlined",
|
|
16664
|
+
"color": props.color,
|
|
16665
|
+
"onClick": onClick
|
|
16666
|
+
}, {
|
|
16667
|
+
default: () => [t(props.loadMoreText)]
|
|
16668
|
+
});
|
|
16669
|
+
}
|
|
16670
|
+
return slots.loading?.(slotProps) ?? createVNode(VProgressCircular, {
|
|
16671
|
+
"indeterminate": true,
|
|
16672
|
+
"color": props.color
|
|
16673
|
+
}, null);
|
|
16674
|
+
}
|
|
16675
|
+
const {
|
|
16676
|
+
dimensionStyles
|
|
16677
|
+
} = useDimension(props);
|
|
16678
|
+
useRender(() => {
|
|
16679
|
+
const Tag = props.tag;
|
|
16680
|
+
const hasStartIntersect = props.side === 'start' || props.side === 'both';
|
|
16681
|
+
const hasEndIntersect = props.side === 'end' || props.side === 'both';
|
|
16682
|
+
const intersectMode = props.mode === 'intersect';
|
|
16683
|
+
return createVNode(Tag, {
|
|
16684
|
+
"ref": rootEl,
|
|
16685
|
+
"class": ['v-infinite-scroll', `v-infinite-scroll--${props.direction}`, {
|
|
16686
|
+
'v-infinite-scroll--start': hasStartIntersect,
|
|
16687
|
+
'v-infinite-scroll--end': hasEndIntersect
|
|
16688
|
+
}],
|
|
16689
|
+
"style": dimensionStyles.value
|
|
16690
|
+
}, {
|
|
16691
|
+
default: () => [createVNode("div", {
|
|
16692
|
+
"class": "v-infinite-scroll__side"
|
|
16693
|
+
}, [renderSide('start', startStatus.value)]), rootEl.value && hasStartIntersect && intersectMode && createVNode(VInfiniteScrollIntersect, {
|
|
16694
|
+
"key": "start",
|
|
16695
|
+
"side": "start",
|
|
16696
|
+
"onIntersect": handleIntersect,
|
|
16697
|
+
"rootRef": rootEl.value,
|
|
16698
|
+
"rootMargin": margin.value
|
|
16699
|
+
}, null), slots.default?.(), rootEl.value && hasEndIntersect && intersectMode && createVNode(VInfiniteScrollIntersect, {
|
|
16700
|
+
"key": "end",
|
|
16701
|
+
"side": "end",
|
|
16702
|
+
"onIntersect": handleIntersect,
|
|
16703
|
+
"rootRef": rootEl.value,
|
|
16704
|
+
"rootMargin": margin.value
|
|
16705
|
+
}, null), createVNode("div", {
|
|
16706
|
+
"class": "v-infinite-scroll__side"
|
|
16707
|
+
}, [renderSide('end', endStatus.value)])]
|
|
16708
|
+
});
|
|
16709
|
+
});
|
|
16710
|
+
}
|
|
16711
|
+
});
|
|
16712
|
+
|
|
16425
16713
|
const VItemGroupSymbol = Symbol.for('vuetify:v-item-group');
|
|
16426
16714
|
const makeVItemGroupProps = propsFactory({
|
|
16427
16715
|
...makeComponentProps(),
|
|
@@ -18174,6 +18462,140 @@ const VRating = genericComponent()({
|
|
|
18174
18462
|
}
|
|
18175
18463
|
});
|
|
18176
18464
|
|
|
18465
|
+
// Types
|
|
18466
|
+
|
|
18467
|
+
const rootTypes = {
|
|
18468
|
+
actions: 'button@2',
|
|
18469
|
+
article: 'heading, paragraph',
|
|
18470
|
+
avatar: 'avatar',
|
|
18471
|
+
button: 'button',
|
|
18472
|
+
card: 'image, heading',
|
|
18473
|
+
'card-avatar': 'image, list-item-avatar',
|
|
18474
|
+
chip: 'chip',
|
|
18475
|
+
'date-picker': 'list-item, heading, divider, date-picker-options, date-picker-days, actions',
|
|
18476
|
+
'date-picker-options': 'text, avatar@2',
|
|
18477
|
+
'date-picker-days': 'avatar@28',
|
|
18478
|
+
divider: 'divider',
|
|
18479
|
+
heading: 'heading',
|
|
18480
|
+
image: 'image',
|
|
18481
|
+
'list-item': 'text',
|
|
18482
|
+
'list-item-avatar': 'avatar, text',
|
|
18483
|
+
'list-item-two-line': 'sentences',
|
|
18484
|
+
'list-item-avatar-two-line': 'avatar, sentences',
|
|
18485
|
+
'list-item-three-line': 'paragraph',
|
|
18486
|
+
'list-item-avatar-three-line': 'avatar, paragraph',
|
|
18487
|
+
ossein: 'ossein',
|
|
18488
|
+
paragraph: 'text@3',
|
|
18489
|
+
sentences: 'text@2',
|
|
18490
|
+
subtitle: 'text',
|
|
18491
|
+
table: 'table-heading, table-thead, table-tbody, table-tfoot',
|
|
18492
|
+
'table-heading': 'chip, text',
|
|
18493
|
+
'table-thead': 'heading@6',
|
|
18494
|
+
'table-tbody': 'table-row-divider@6',
|
|
18495
|
+
'table-row-divider': 'table-row, divider',
|
|
18496
|
+
'table-row': 'text@6',
|
|
18497
|
+
'table-tfoot': 'text@2, avatar@2',
|
|
18498
|
+
text: 'text'
|
|
18499
|
+
};
|
|
18500
|
+
function genBone(type) {
|
|
18501
|
+
let children = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
18502
|
+
return createVNode("div", {
|
|
18503
|
+
"class": ['v-skeleton-loader__bone', `v-skeleton-loader__${type}`]
|
|
18504
|
+
}, [children]);
|
|
18505
|
+
}
|
|
18506
|
+
function genBones(bone) {
|
|
18507
|
+
// e.g. 'text@3'
|
|
18508
|
+
const [type, length] = bone.split('@');
|
|
18509
|
+
|
|
18510
|
+
// Generate a length array based upon
|
|
18511
|
+
// value after @ in the bone string
|
|
18512
|
+
return Array.from({
|
|
18513
|
+
length
|
|
18514
|
+
}).map(() => genStructure(type));
|
|
18515
|
+
}
|
|
18516
|
+
function genStructure(type) {
|
|
18517
|
+
let children = [];
|
|
18518
|
+
if (!type) return children;
|
|
18519
|
+
|
|
18520
|
+
// TODO: figure out a better way to type this
|
|
18521
|
+
const bone = rootTypes[type];
|
|
18522
|
+
|
|
18523
|
+
// End of recursion, do nothing
|
|
18524
|
+
/* eslint-disable-next-line no-empty, brace-style */
|
|
18525
|
+
if (type === bone) ;
|
|
18526
|
+
// Array of values - e.g. 'heading, paragraph, text@2'
|
|
18527
|
+
else if (type.includes(',')) return mapBones(type);
|
|
18528
|
+
// Array of values - e.g. 'paragraph@4'
|
|
18529
|
+
else if (type.includes('@')) return genBones(type);
|
|
18530
|
+
// Array of values - e.g. 'card@2'
|
|
18531
|
+
else if (bone.includes(',')) children = mapBones(bone);
|
|
18532
|
+
// Array of values - e.g. 'list-item@2'
|
|
18533
|
+
else if (bone.includes('@')) children = genBones(bone);
|
|
18534
|
+
// Single value - e.g. 'card-heading'
|
|
18535
|
+
else if (bone) children.push(genStructure(bone));
|
|
18536
|
+
return [genBone(type, children)];
|
|
18537
|
+
}
|
|
18538
|
+
function mapBones(bones) {
|
|
18539
|
+
// Remove spaces and return array of structures
|
|
18540
|
+
return bones.replace(/\s/g, '').split(',').map(genStructure);
|
|
18541
|
+
}
|
|
18542
|
+
const makeVSkeletonLoaderProps = propsFactory({
|
|
18543
|
+
boilerplate: Boolean,
|
|
18544
|
+
color: String,
|
|
18545
|
+
loading: Boolean,
|
|
18546
|
+
loadingText: {
|
|
18547
|
+
type: String,
|
|
18548
|
+
default: '$vuetify.loading'
|
|
18549
|
+
},
|
|
18550
|
+
type: {
|
|
18551
|
+
type: [String, Array],
|
|
18552
|
+
default: 'ossein'
|
|
18553
|
+
},
|
|
18554
|
+
...makeDimensionProps(),
|
|
18555
|
+
...makeElevationProps(),
|
|
18556
|
+
...makeThemeProps()
|
|
18557
|
+
}, 'VSkeletonLoader');
|
|
18558
|
+
const VSkeletonLoader = genericComponent()({
|
|
18559
|
+
name: 'VSkeletonLoader',
|
|
18560
|
+
props: makeVSkeletonLoaderProps(),
|
|
18561
|
+
setup(props, _ref) {
|
|
18562
|
+
let {
|
|
18563
|
+
slots
|
|
18564
|
+
} = _ref;
|
|
18565
|
+
const {
|
|
18566
|
+
backgroundColorClasses,
|
|
18567
|
+
backgroundColorStyles
|
|
18568
|
+
} = useBackgroundColor(toRef(props, 'color'));
|
|
18569
|
+
const {
|
|
18570
|
+
dimensionStyles
|
|
18571
|
+
} = useDimension(props);
|
|
18572
|
+
const {
|
|
18573
|
+
elevationClasses
|
|
18574
|
+
} = useElevation(props);
|
|
18575
|
+
const {
|
|
18576
|
+
themeClasses
|
|
18577
|
+
} = provideTheme(props);
|
|
18578
|
+
const {
|
|
18579
|
+
t
|
|
18580
|
+
} = useLocale();
|
|
18581
|
+
const items = computed(() => genStructure(wrapInArray(props.type).join(',')));
|
|
18582
|
+
useRender(() => {
|
|
18583
|
+
const isLoading = !slots.default || props.loading;
|
|
18584
|
+
return createVNode("div", {
|
|
18585
|
+
"class": ['v-skeleton-loader', {
|
|
18586
|
+
'v-skeleton-loader--boilerplate': props.boilerplate
|
|
18587
|
+
}, themeClasses.value, backgroundColorClasses.value, elevationClasses.value],
|
|
18588
|
+
"style": [backgroundColorStyles.value, isLoading ? dimensionStyles.value : {}],
|
|
18589
|
+
"aria-busy": !props.boilerplate ? isLoading : undefined,
|
|
18590
|
+
"aria-live": !props.boilerplate ? 'polite' : undefined,
|
|
18591
|
+
"aria-label": !props.boilerplate ? t(props.loadingText) : undefined,
|
|
18592
|
+
"role": !props.boilerplate ? 'alert' : undefined
|
|
18593
|
+
}, [isLoading ? items.value : slots.default?.()]);
|
|
18594
|
+
});
|
|
18595
|
+
return {};
|
|
18596
|
+
}
|
|
18597
|
+
});
|
|
18598
|
+
|
|
18177
18599
|
function bias(val) {
|
|
18178
18600
|
const c = 0.501;
|
|
18179
18601
|
const x = Math.abs(val);
|
|
@@ -18737,6 +19159,392 @@ const VSnackbar = genericComponent()({
|
|
|
18737
19159
|
|
|
18738
19160
|
// Types
|
|
18739
19161
|
|
|
19162
|
+
const makeVStepperActionsProps = propsFactory({
|
|
19163
|
+
color: String,
|
|
19164
|
+
disabled: {
|
|
19165
|
+
type: [Boolean, String],
|
|
19166
|
+
default: false
|
|
19167
|
+
},
|
|
19168
|
+
prevText: {
|
|
19169
|
+
type: String,
|
|
19170
|
+
default: '$vuetify.stepper.prev'
|
|
19171
|
+
},
|
|
19172
|
+
nextText: {
|
|
19173
|
+
type: String,
|
|
19174
|
+
default: '$vuetify.stepper.next'
|
|
19175
|
+
}
|
|
19176
|
+
}, 'VStepperActions');
|
|
19177
|
+
const VStepperActions = genericComponent()({
|
|
19178
|
+
name: 'VStepperActions',
|
|
19179
|
+
props: makeVStepperActionsProps(),
|
|
19180
|
+
emits: {
|
|
19181
|
+
'click:prev': () => true,
|
|
19182
|
+
'click:next': () => true
|
|
19183
|
+
},
|
|
19184
|
+
setup(props, _ref) {
|
|
19185
|
+
let {
|
|
19186
|
+
emit,
|
|
19187
|
+
slots
|
|
19188
|
+
} = _ref;
|
|
19189
|
+
const {
|
|
19190
|
+
t
|
|
19191
|
+
} = useLocale();
|
|
19192
|
+
function onClickPrev() {
|
|
19193
|
+
emit('click:prev');
|
|
19194
|
+
}
|
|
19195
|
+
function onClickNext() {
|
|
19196
|
+
emit('click:next');
|
|
19197
|
+
}
|
|
19198
|
+
useRender(() => {
|
|
19199
|
+
const prevSlotProps = {
|
|
19200
|
+
onClick: onClickPrev
|
|
19201
|
+
};
|
|
19202
|
+
const nextSlotProps = {
|
|
19203
|
+
onClick: onClickNext
|
|
19204
|
+
};
|
|
19205
|
+
return createVNode("div", {
|
|
19206
|
+
"class": "v-stepper-actions"
|
|
19207
|
+
}, [createVNode(VDefaultsProvider, {
|
|
19208
|
+
"defaults": {
|
|
19209
|
+
VBtn: {
|
|
19210
|
+
disabled: ['prev', true].includes(props.disabled),
|
|
19211
|
+
text: t(props.prevText),
|
|
19212
|
+
variant: 'text'
|
|
19213
|
+
}
|
|
19214
|
+
}
|
|
19215
|
+
}, {
|
|
19216
|
+
default: () => [slots.prev?.({
|
|
19217
|
+
props: prevSlotProps
|
|
19218
|
+
}) ?? createVNode(VBtn, prevSlotProps, null)]
|
|
19219
|
+
}), createVNode(VDefaultsProvider, {
|
|
19220
|
+
"defaults": {
|
|
19221
|
+
VBtn: {
|
|
19222
|
+
color: props.color,
|
|
19223
|
+
disabled: ['next', true].includes(props.disabled),
|
|
19224
|
+
text: t(props.nextText),
|
|
19225
|
+
variant: 'tonal'
|
|
19226
|
+
}
|
|
19227
|
+
}
|
|
19228
|
+
}, {
|
|
19229
|
+
default: () => [slots.next?.({
|
|
19230
|
+
props: nextSlotProps
|
|
19231
|
+
}) ?? createVNode(VBtn, nextSlotProps, null)]
|
|
19232
|
+
})]);
|
|
19233
|
+
});
|
|
19234
|
+
return {};
|
|
19235
|
+
}
|
|
19236
|
+
});
|
|
19237
|
+
|
|
19238
|
+
// Utilities
|
|
19239
|
+
const VStepperHeader = createSimpleFunctional('v-stepper-header');
|
|
19240
|
+
|
|
19241
|
+
// Types
|
|
19242
|
+
|
|
19243
|
+
const makeVStepperItemProps = propsFactory({
|
|
19244
|
+
color: String,
|
|
19245
|
+
title: String,
|
|
19246
|
+
subtitle: String,
|
|
19247
|
+
complete: Boolean,
|
|
19248
|
+
completeIcon: {
|
|
19249
|
+
type: String,
|
|
19250
|
+
default: '$complete'
|
|
19251
|
+
},
|
|
19252
|
+
editable: Boolean,
|
|
19253
|
+
editIcon: {
|
|
19254
|
+
type: String,
|
|
19255
|
+
default: '$edit'
|
|
19256
|
+
},
|
|
19257
|
+
error: Boolean,
|
|
19258
|
+
errorIcon: {
|
|
19259
|
+
type: String,
|
|
19260
|
+
default: '$error'
|
|
19261
|
+
},
|
|
19262
|
+
icon: String,
|
|
19263
|
+
ripple: {
|
|
19264
|
+
type: [Boolean, Object],
|
|
19265
|
+
default: true
|
|
19266
|
+
},
|
|
19267
|
+
rules: {
|
|
19268
|
+
type: Array,
|
|
19269
|
+
default: () => []
|
|
19270
|
+
},
|
|
19271
|
+
...makeGroupItemProps()
|
|
19272
|
+
}, 'VStepperItem');
|
|
19273
|
+
const VStepperItem = genericComponent()({
|
|
19274
|
+
name: 'VStepperItem',
|
|
19275
|
+
directives: {
|
|
19276
|
+
Ripple
|
|
19277
|
+
},
|
|
19278
|
+
props: makeVStepperItemProps(),
|
|
19279
|
+
emits: {
|
|
19280
|
+
'group:selected': val => true
|
|
19281
|
+
},
|
|
19282
|
+
setup(props, _ref) {
|
|
19283
|
+
let {
|
|
19284
|
+
slots
|
|
19285
|
+
} = _ref;
|
|
19286
|
+
const group = useGroupItem(props, VStepperSymbol, true);
|
|
19287
|
+
const step = computed(() => group?.value.value ?? props.value);
|
|
19288
|
+
const isValid = computed(() => props.rules.every(handler => handler() === true));
|
|
19289
|
+
const canEdit = computed(() => !props.disabled && props.editable);
|
|
19290
|
+
const hasError = computed(() => props.error || !isValid.value);
|
|
19291
|
+
const hasCompleted = computed(() => props.complete || props.rules.length > 0 && isValid.value);
|
|
19292
|
+
const icon = computed(() => {
|
|
19293
|
+
if (hasError.value) return props.errorIcon;
|
|
19294
|
+
if (hasCompleted.value) return props.completeIcon;
|
|
19295
|
+
if (props.editable) return props.editIcon;
|
|
19296
|
+
return props.icon;
|
|
19297
|
+
});
|
|
19298
|
+
const slotProps = computed(() => ({
|
|
19299
|
+
canEdit: canEdit.value,
|
|
19300
|
+
hasError: hasError.value,
|
|
19301
|
+
hasCompleted: hasCompleted.value,
|
|
19302
|
+
title: props.title,
|
|
19303
|
+
subtitle: props.subtitle,
|
|
19304
|
+
step: step.value,
|
|
19305
|
+
value: props.value
|
|
19306
|
+
}));
|
|
19307
|
+
useRender(() => {
|
|
19308
|
+
const hasColor = (!group || group.isSelected.value || hasCompleted.value || canEdit.value) && !hasError.value && !props.disabled;
|
|
19309
|
+
const hasTitle = !!(props.title || slots.title);
|
|
19310
|
+
const hasSubtitle = !!(props.subtitle || slots.subtitle);
|
|
19311
|
+
function onClick() {
|
|
19312
|
+
group?.toggle();
|
|
19313
|
+
}
|
|
19314
|
+
return withDirectives(createVNode("button", {
|
|
19315
|
+
"class": ['v-stepper-item', {
|
|
19316
|
+
'v-stepper-item--complete': hasCompleted.value,
|
|
19317
|
+
'v-stepper-item--disabled': props.disabled,
|
|
19318
|
+
'v-stepper-item--error': hasError.value
|
|
19319
|
+
}, group?.selectedClass.value],
|
|
19320
|
+
"disabled": !props.editable,
|
|
19321
|
+
"onClick": onClick
|
|
19322
|
+
}, [createVNode(VAvatar, {
|
|
19323
|
+
"key": "stepper-avatar",
|
|
19324
|
+
"class": "v-stepper-item__avatar",
|
|
19325
|
+
"color": hasColor ? props.color : undefined,
|
|
19326
|
+
"size": 24
|
|
19327
|
+
}, {
|
|
19328
|
+
default: () => [slots.icon?.(slotProps.value) ?? (icon.value ? createVNode(VIcon, {
|
|
19329
|
+
"icon": icon.value
|
|
19330
|
+
}, null) : step.value)]
|
|
19331
|
+
}), createVNode("div", {
|
|
19332
|
+
"class": "v-stepper-item__content"
|
|
19333
|
+
}, [hasTitle && createVNode("div", {
|
|
19334
|
+
"key": "title",
|
|
19335
|
+
"class": "v-stepper-item__title"
|
|
19336
|
+
}, [slots.title?.(slotProps.value) ?? props.title]), hasSubtitle && createVNode("div", {
|
|
19337
|
+
"key": "subtitle",
|
|
19338
|
+
"class": "v-stepper-item__subtitle"
|
|
19339
|
+
}, [slots.subtitle?.(slotProps.value) ?? props.subtitle]), slots.default?.(slotProps.value)])]), [[resolveDirective("ripple"), props.ripple && props.editable, null]]);
|
|
19340
|
+
});
|
|
19341
|
+
return {};
|
|
19342
|
+
}
|
|
19343
|
+
});
|
|
19344
|
+
|
|
19345
|
+
// Types
|
|
19346
|
+
|
|
19347
|
+
const VStepperSymbol$1 = Symbol.for('vuetify:v-stepper');
|
|
19348
|
+
const makeVStepperWindowProps = propsFactory({
|
|
19349
|
+
...makeVWindowProps({
|
|
19350
|
+
mandatory: false
|
|
19351
|
+
})
|
|
19352
|
+
}, 'VStepperWindow');
|
|
19353
|
+
const VStepperWindow = genericComponent()({
|
|
19354
|
+
name: 'VStepperWindow',
|
|
19355
|
+
props: makeVStepperWindowProps(),
|
|
19356
|
+
emits: {
|
|
19357
|
+
'update:modelValue': v => true
|
|
19358
|
+
},
|
|
19359
|
+
setup(props, _ref) {
|
|
19360
|
+
let {
|
|
19361
|
+
slots
|
|
19362
|
+
} = _ref;
|
|
19363
|
+
const group = inject$1(VStepperSymbol$1, null);
|
|
19364
|
+
const _model = useProxiedModel(props, 'modelValue');
|
|
19365
|
+
const model = computed({
|
|
19366
|
+
get() {
|
|
19367
|
+
// Always return modelValue if defined
|
|
19368
|
+
// or if not within a VStepper group
|
|
19369
|
+
if (_model.value != null || !group) return _model.value;
|
|
19370
|
+
|
|
19371
|
+
// If inside of a VStepper, find the currently selected
|
|
19372
|
+
// item by id. Item value may be assigned by its index
|
|
19373
|
+
return group.items.value.find(item => group.selected.value.includes(item.id))?.value;
|
|
19374
|
+
},
|
|
19375
|
+
set(val) {
|
|
19376
|
+
_model.value = val;
|
|
19377
|
+
}
|
|
19378
|
+
});
|
|
19379
|
+
useRender(() => {
|
|
19380
|
+
const [windowProps] = VWindow.filterProps(props);
|
|
19381
|
+
return createVNode(VWindow, mergeProps(windowProps, {
|
|
19382
|
+
"modelValue": model.value,
|
|
19383
|
+
"onUpdate:modelValue": $event => model.value = $event,
|
|
19384
|
+
"class": "v-stepper-window"
|
|
19385
|
+
}), slots);
|
|
19386
|
+
});
|
|
19387
|
+
return {};
|
|
19388
|
+
}
|
|
19389
|
+
});
|
|
19390
|
+
|
|
19391
|
+
const makeVStepperWindowItemProps = propsFactory({
|
|
19392
|
+
...makeVWindowItemProps()
|
|
19393
|
+
}, 'VStepperWindowItem');
|
|
19394
|
+
const VStepperWindowItem = genericComponent()({
|
|
19395
|
+
name: 'VStepperWindowItem',
|
|
19396
|
+
props: makeVStepperWindowItemProps(),
|
|
19397
|
+
setup(props, _ref) {
|
|
19398
|
+
let {
|
|
19399
|
+
slots
|
|
19400
|
+
} = _ref;
|
|
19401
|
+
useRender(() => {
|
|
19402
|
+
const [windowItemProps] = VWindowItem.filterProps(props);
|
|
19403
|
+
return createVNode(VWindowItem, mergeProps(windowItemProps, {
|
|
19404
|
+
"class": "v-stepper-window-item"
|
|
19405
|
+
}), slots);
|
|
19406
|
+
});
|
|
19407
|
+
return {};
|
|
19408
|
+
}
|
|
19409
|
+
});
|
|
19410
|
+
|
|
19411
|
+
// Types
|
|
19412
|
+
|
|
19413
|
+
const VStepperSymbol = Symbol.for('vuetify:v-stepper');
|
|
19414
|
+
const makeVStepperProps = propsFactory({
|
|
19415
|
+
altLabels: Boolean,
|
|
19416
|
+
bgColor: String,
|
|
19417
|
+
editable: Boolean,
|
|
19418
|
+
hideActions: Boolean,
|
|
19419
|
+
items: {
|
|
19420
|
+
type: Array,
|
|
19421
|
+
default: () => []
|
|
19422
|
+
},
|
|
19423
|
+
itemTitle: {
|
|
19424
|
+
type: String,
|
|
19425
|
+
default: 'title'
|
|
19426
|
+
},
|
|
19427
|
+
itemValue: {
|
|
19428
|
+
type: String,
|
|
19429
|
+
default: 'value'
|
|
19430
|
+
},
|
|
19431
|
+
mobile: Boolean,
|
|
19432
|
+
nonLinear: Boolean,
|
|
19433
|
+
flat: Boolean,
|
|
19434
|
+
...makeGroupProps({
|
|
19435
|
+
mandatory: 'force',
|
|
19436
|
+
selectedClass: 'v-stepper-item--selected'
|
|
19437
|
+
}),
|
|
19438
|
+
...makeVSheetProps(),
|
|
19439
|
+
...only(makeVStepperActionsProps(), ['prevText', 'nextText'])
|
|
19440
|
+
}, 'VStepper');
|
|
19441
|
+
const VStepper = genericComponent()({
|
|
19442
|
+
name: 'VStepper',
|
|
19443
|
+
props: makeVStepperProps(),
|
|
19444
|
+
emits: {
|
|
19445
|
+
'update:modelValue': v => true
|
|
19446
|
+
},
|
|
19447
|
+
setup(props, _ref) {
|
|
19448
|
+
let {
|
|
19449
|
+
slots
|
|
19450
|
+
} = _ref;
|
|
19451
|
+
const {
|
|
19452
|
+
items: _items,
|
|
19453
|
+
next,
|
|
19454
|
+
prev,
|
|
19455
|
+
selected
|
|
19456
|
+
} = useGroup(props, VStepperSymbol);
|
|
19457
|
+
const {
|
|
19458
|
+
color,
|
|
19459
|
+
editable,
|
|
19460
|
+
prevText,
|
|
19461
|
+
nextText
|
|
19462
|
+
} = toRefs(props);
|
|
19463
|
+
const items = computed(() => props.items.map((item, index) => {
|
|
19464
|
+
const title = getPropertyFromItem(item, props.itemTitle, item);
|
|
19465
|
+
const value = getPropertyFromItem(item, props.itemValue, index + 1);
|
|
19466
|
+
return {
|
|
19467
|
+
title,
|
|
19468
|
+
value,
|
|
19469
|
+
raw: item
|
|
19470
|
+
};
|
|
19471
|
+
}));
|
|
19472
|
+
const activeIndex = computed(() => {
|
|
19473
|
+
return _items.value.findIndex(item => selected.value.includes(item.id));
|
|
19474
|
+
});
|
|
19475
|
+
const disabled = computed(() => {
|
|
19476
|
+
if (props.disabled) return props.disabled;
|
|
19477
|
+
if (activeIndex.value === 0) return 'prev';
|
|
19478
|
+
if (activeIndex.value === _items.value.length - 1) return 'next';
|
|
19479
|
+
return false;
|
|
19480
|
+
});
|
|
19481
|
+
provideDefaults({
|
|
19482
|
+
VStepperItem: {
|
|
19483
|
+
editable,
|
|
19484
|
+
prevText,
|
|
19485
|
+
nextText
|
|
19486
|
+
},
|
|
19487
|
+
VStepperActions: {
|
|
19488
|
+
color,
|
|
19489
|
+
disabled,
|
|
19490
|
+
prevText,
|
|
19491
|
+
nextText
|
|
19492
|
+
}
|
|
19493
|
+
});
|
|
19494
|
+
useRender(() => {
|
|
19495
|
+
const [sheetProps] = VSheet.filterProps(props);
|
|
19496
|
+
const hasHeader = !!(slots.header || props.items.length);
|
|
19497
|
+
const hasWindow = props.items.length > 0;
|
|
19498
|
+
const hasActions = !props.hideActions && !!(hasWindow || slots.actions);
|
|
19499
|
+
return createVNode(VSheet, mergeProps(sheetProps, {
|
|
19500
|
+
"color": props.bgColor,
|
|
19501
|
+
"class": ['v-stepper', {
|
|
19502
|
+
'v-stepper--alt-labels': props.altLabels,
|
|
19503
|
+
'v-stepper--flat': props.flat,
|
|
19504
|
+
'v-stepper--non-linear': props.nonLinear,
|
|
19505
|
+
'v-stepper--mobile': props.mobile
|
|
19506
|
+
}, props.class],
|
|
19507
|
+
"style": props.style
|
|
19508
|
+
}), {
|
|
19509
|
+
default: () => [hasHeader && createVNode(VStepperHeader, {
|
|
19510
|
+
"key": "stepper-header"
|
|
19511
|
+
}, {
|
|
19512
|
+
default: () => [items.value.map((item, index) => createVNode(Fragment, null, [!!index && createVNode(VDivider, null, null), createVNode(VStepperItem, item, {
|
|
19513
|
+
default: slots[`header-item.${item.value}`] ?? slots.header,
|
|
19514
|
+
icon: slots.icon,
|
|
19515
|
+
title: slots.title,
|
|
19516
|
+
subtitle: slots.subtitle
|
|
19517
|
+
})]))]
|
|
19518
|
+
}), hasWindow && createVNode(VStepperWindow, {
|
|
19519
|
+
"key": "stepper-window"
|
|
19520
|
+
}, {
|
|
19521
|
+
default: () => [items.value.map(item => createVNode(VStepperWindowItem, {
|
|
19522
|
+
"value": item.value
|
|
19523
|
+
}, {
|
|
19524
|
+
default: () => slots[`item.${item.value}`]?.(item) ?? slots.item?.(item)
|
|
19525
|
+
}))]
|
|
19526
|
+
}), slots.default?.({
|
|
19527
|
+
prev,
|
|
19528
|
+
next
|
|
19529
|
+
}), hasActions && (slots.actions?.({
|
|
19530
|
+
next,
|
|
19531
|
+
prev
|
|
19532
|
+
}) ?? createVNode(VStepperActions, {
|
|
19533
|
+
"key": "stepper-actions",
|
|
19534
|
+
"onClick:prev": prev,
|
|
19535
|
+
"onClick:next": next
|
|
19536
|
+
}, slots))]
|
|
19537
|
+
});
|
|
19538
|
+
});
|
|
19539
|
+
return {
|
|
19540
|
+
prev,
|
|
19541
|
+
next
|
|
19542
|
+
};
|
|
19543
|
+
}
|
|
19544
|
+
});
|
|
19545
|
+
|
|
19546
|
+
// Types
|
|
19547
|
+
|
|
18740
19548
|
const makeVSwitchProps = propsFactory({
|
|
18741
19549
|
indeterminate: Boolean,
|
|
18742
19550
|
inset: Boolean,
|
|
@@ -19815,6 +20623,7 @@ var components = /*#__PURE__*/Object.freeze({
|
|
|
19815
20623
|
VBannerActions: VBannerActions,
|
|
19816
20624
|
VBannerText: VBannerText,
|
|
19817
20625
|
VBottomNavigation: VBottomNavigation,
|
|
20626
|
+
VBottomSheet: VBottomSheet,
|
|
19818
20627
|
VBreadcrumbs: VBreadcrumbs,
|
|
19819
20628
|
VBreadcrumbsDivider: VBreadcrumbsDivider,
|
|
19820
20629
|
VBreadcrumbsItem: VBreadcrumbsItem,
|
|
@@ -19863,6 +20672,7 @@ var components = /*#__PURE__*/Object.freeze({
|
|
|
19863
20672
|
VHover: VHover,
|
|
19864
20673
|
VIcon: VIcon,
|
|
19865
20674
|
VImg: VImg,
|
|
20675
|
+
VInfiniteScroll: VInfiniteScroll,
|
|
19866
20676
|
VInput: VInput,
|
|
19867
20677
|
VItem: VItem,
|
|
19868
20678
|
VItemGroup: VItemGroup,
|
|
@@ -19907,6 +20717,7 @@ var components = /*#__PURE__*/Object.freeze({
|
|
|
19907
20717
|
VSelectionControl: VSelectionControl,
|
|
19908
20718
|
VSelectionControlGroup: VSelectionControlGroup,
|
|
19909
20719
|
VSheet: VSheet,
|
|
20720
|
+
VSkeletonLoader: VSkeletonLoader,
|
|
19910
20721
|
VSlideGroup: VSlideGroup,
|
|
19911
20722
|
VSlideGroupItem: VSlideGroupItem,
|
|
19912
20723
|
VSlideXReverseTransition: VSlideXReverseTransition,
|
|
@@ -19916,6 +20727,12 @@ var components = /*#__PURE__*/Object.freeze({
|
|
|
19916
20727
|
VSlider: VSlider,
|
|
19917
20728
|
VSnackbar: VSnackbar,
|
|
19918
20729
|
VSpacer: VSpacer,
|
|
20730
|
+
VStepper: VStepper,
|
|
20731
|
+
VStepperActions: VStepperActions,
|
|
20732
|
+
VStepperHeader: VStepperHeader,
|
|
20733
|
+
VStepperItem: VStepperItem,
|
|
20734
|
+
VStepperWindow: VStepperWindow,
|
|
20735
|
+
VStepperWindowItem: VStepperWindowItem,
|
|
19919
20736
|
VSvgIcon: VSvgIcon,
|
|
19920
20737
|
VSwitch: VSwitch,
|
|
19921
20738
|
VSystemBar: VSystemBar,
|
|
@@ -20296,7 +21113,6 @@ function getWeekdays(locale) {
|
|
|
20296
21113
|
});
|
|
20297
21114
|
}
|
|
20298
21115
|
function format(value, formatString, locale) {
|
|
20299
|
-
const date = new Date(value);
|
|
20300
21116
|
let options = {};
|
|
20301
21117
|
switch (formatString) {
|
|
20302
21118
|
case 'fullDateWithWeekday':
|
|
@@ -20315,7 +21131,11 @@ function format(value, formatString, locale) {
|
|
|
20315
21131
|
};
|
|
20316
21132
|
break;
|
|
20317
21133
|
case 'keyboardDate':
|
|
20318
|
-
options = {
|
|
21134
|
+
options = {
|
|
21135
|
+
day: '2-digit',
|
|
21136
|
+
month: '2-digit',
|
|
21137
|
+
year: 'numeric'
|
|
21138
|
+
};
|
|
20319
21139
|
break;
|
|
20320
21140
|
case 'monthAndDate':
|
|
20321
21141
|
options = {
|
|
@@ -20345,7 +21165,7 @@ function format(value, formatString, locale) {
|
|
|
20345
21165
|
timeZoneName: 'short'
|
|
20346
21166
|
};
|
|
20347
21167
|
}
|
|
20348
|
-
return new Intl.DateTimeFormat(locale, options).format(date);
|
|
21168
|
+
return new Intl.DateTimeFormat(locale, options).format(date(value) ?? undefined);
|
|
20349
21169
|
}
|
|
20350
21170
|
function toISO(adapter, value) {
|
|
20351
21171
|
const date = adapter.toJsDate(value);
|
|
@@ -20645,7 +21465,7 @@ function createVuetify$1() {
|
|
|
20645
21465
|
date
|
|
20646
21466
|
};
|
|
20647
21467
|
}
|
|
20648
|
-
const version$1 = "3.4.0-alpha.1-dev.2023-10-
|
|
21468
|
+
const version$1 = "3.4.0-alpha.1-dev.2023-10-28";
|
|
20649
21469
|
createVuetify$1.version = version$1;
|
|
20650
21470
|
|
|
20651
21471
|
// Vue's inject() can only be used in setup
|
|
@@ -20670,7 +21490,7 @@ const createVuetify = function () {
|
|
|
20670
21490
|
...options
|
|
20671
21491
|
});
|
|
20672
21492
|
};
|
|
20673
|
-
const version = "3.4.0-alpha.1-dev.2023-10-
|
|
21493
|
+
const version = "3.4.0-alpha.1-dev.2023-10-28";
|
|
20674
21494
|
createVuetify.version = version;
|
|
20675
21495
|
|
|
20676
21496
|
export { components, createVuetify, directives, useDefaults, useDisplay, useLayout, useLocale, useRtl, useTheme, version };
|