@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.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
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
|
*/
|
|
@@ -238,6 +238,11 @@
|
|
|
238
238
|
exclude.forEach(prop => delete clone[prop]);
|
|
239
239
|
return clone;
|
|
240
240
|
}
|
|
241
|
+
function only(obj, include) {
|
|
242
|
+
const clone = {};
|
|
243
|
+
include.forEach(prop => clone[prop] = obj[prop]);
|
|
244
|
+
return clone;
|
|
245
|
+
}
|
|
241
246
|
const onRE = /^on[^a-z]/;
|
|
242
247
|
const isOn = key => onRE.test(key);
|
|
243
248
|
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'];
|
|
@@ -478,6 +483,13 @@
|
|
|
478
483
|
return null;
|
|
479
484
|
}
|
|
480
485
|
}
|
|
486
|
+
function ensureValidVNode(vnodes) {
|
|
487
|
+
return vnodes.some(child => {
|
|
488
|
+
if (!vue.isVNode(child)) return true;
|
|
489
|
+
if (child.type === vue.Comment) return false;
|
|
490
|
+
return child.type !== vue.Fragment || ensureValidVNode(child.children);
|
|
491
|
+
}) ? vnodes : null;
|
|
492
|
+
}
|
|
481
493
|
|
|
482
494
|
// Utilities
|
|
483
495
|
const block = ['top', 'bottom'];
|
|
@@ -870,6 +882,9 @@
|
|
|
870
882
|
function isCssColor(color) {
|
|
871
883
|
return !!color && /^(#|var\(--|(rgb|hsl)a?\()/.test(color);
|
|
872
884
|
}
|
|
885
|
+
function isParsableColor(color) {
|
|
886
|
+
return isCssColor(color) && !/^((rgb|hsl)a?\()?var\(--/.test(color);
|
|
887
|
+
}
|
|
873
888
|
const cssColorRe = /^(?<fn>(?:rgb|hsl)a?)\((?<values>.+)\)/;
|
|
874
889
|
const mappers = {
|
|
875
890
|
rgb: (r, g, b, a) => ({
|
|
@@ -3306,7 +3321,7 @@
|
|
|
3306
3321
|
if (colors.value.background) {
|
|
3307
3322
|
if (isCssColor(colors.value.background)) {
|
|
3308
3323
|
styles.backgroundColor = colors.value.background;
|
|
3309
|
-
if (!colors.value.text) {
|
|
3324
|
+
if (!colors.value.text && isParsableColor(colors.value.background)) {
|
|
3310
3325
|
const backgroundColor = parseColor(colors.value.background);
|
|
3311
3326
|
if (backgroundColor.a == null || backgroundColor.a === 1) {
|
|
3312
3327
|
const textColor = getForeground(backgroundColor);
|
|
@@ -11254,6 +11269,16 @@
|
|
|
11254
11269
|
modelValue: true,
|
|
11255
11270
|
'onUpdate:modelValue': undefined
|
|
11256
11271
|
};
|
|
11272
|
+
const hasSlot = hasChips ? !!slots.chip : !!slots.selection;
|
|
11273
|
+
const slotContent = hasSlot ? ensureValidVNode(hasChips ? slots.chip({
|
|
11274
|
+
item,
|
|
11275
|
+
index,
|
|
11276
|
+
props: slotProps
|
|
11277
|
+
}) : slots.selection({
|
|
11278
|
+
item,
|
|
11279
|
+
index
|
|
11280
|
+
})) : undefined;
|
|
11281
|
+
if (hasSlot && !slotContent) return undefined;
|
|
11257
11282
|
return vue.createVNode("div", {
|
|
11258
11283
|
"key": item.value,
|
|
11259
11284
|
"class": "v-select__selection"
|
|
@@ -11273,15 +11298,8 @@
|
|
|
11273
11298
|
}
|
|
11274
11299
|
}
|
|
11275
11300
|
}, {
|
|
11276
|
-
default: () => [
|
|
11277
|
-
|
|
11278
|
-
index,
|
|
11279
|
-
props: slotProps
|
|
11280
|
-
})]
|
|
11281
|
-
}) : slots.selection?.({
|
|
11282
|
-
item,
|
|
11283
|
-
index
|
|
11284
|
-
}) ?? vue.createVNode("span", {
|
|
11301
|
+
default: () => [slotContent]
|
|
11302
|
+
}) : slotContent ?? vue.createVNode("span", {
|
|
11285
11303
|
"class": "v-select__selection-text"
|
|
11286
11304
|
}, [item.title, props.multiple && index < model.value.length - 1 && vue.createVNode("span", {
|
|
11287
11305
|
"class": "v-select__selection-comma"
|
|
@@ -11782,6 +11800,16 @@
|
|
|
11782
11800
|
modelValue: true,
|
|
11783
11801
|
'onUpdate:modelValue': undefined
|
|
11784
11802
|
};
|
|
11803
|
+
const hasSlot = hasChips ? !!slots.chip : !!slots.selection;
|
|
11804
|
+
const slotContent = hasSlot ? ensureValidVNode(hasChips ? slots.chip({
|
|
11805
|
+
item,
|
|
11806
|
+
index,
|
|
11807
|
+
props: slotProps
|
|
11808
|
+
}) : slots.selection({
|
|
11809
|
+
item,
|
|
11810
|
+
index
|
|
11811
|
+
})) : undefined;
|
|
11812
|
+
if (hasSlot && !slotContent) return undefined;
|
|
11785
11813
|
return vue.createVNode("div", {
|
|
11786
11814
|
"key": item.value,
|
|
11787
11815
|
"class": ['v-autocomplete__selection', index === selectionIndex.value && ['v-autocomplete__selection--selected', textColorClasses.value]],
|
|
@@ -11802,15 +11830,8 @@
|
|
|
11802
11830
|
}
|
|
11803
11831
|
}
|
|
11804
11832
|
}, {
|
|
11805
|
-
default: () => [
|
|
11806
|
-
|
|
11807
|
-
index,
|
|
11808
|
-
props: slotProps
|
|
11809
|
-
})]
|
|
11810
|
-
}) : slots.selection?.({
|
|
11811
|
-
item,
|
|
11812
|
-
index
|
|
11813
|
-
}) ?? vue.createVNode("span", {
|
|
11833
|
+
default: () => [slotContent]
|
|
11834
|
+
}) : slotContent ?? vue.createVNode("span", {
|
|
11814
11835
|
"class": "v-autocomplete__selection-text"
|
|
11815
11836
|
}, [item.title, props.multiple && index < model.value.length - 1 && vue.createVNode("span", {
|
|
11816
11837
|
"class": "v-autocomplete__selection-comma"
|
|
@@ -12195,6 +12216,151 @@
|
|
|
12195
12216
|
}
|
|
12196
12217
|
});
|
|
12197
12218
|
|
|
12219
|
+
// Types
|
|
12220
|
+
|
|
12221
|
+
const makeVDialogProps = propsFactory({
|
|
12222
|
+
fullscreen: Boolean,
|
|
12223
|
+
retainFocus: {
|
|
12224
|
+
type: Boolean,
|
|
12225
|
+
default: true
|
|
12226
|
+
},
|
|
12227
|
+
scrollable: Boolean,
|
|
12228
|
+
...makeVOverlayProps({
|
|
12229
|
+
origin: 'center center',
|
|
12230
|
+
scrollStrategy: 'block',
|
|
12231
|
+
transition: {
|
|
12232
|
+
component: VDialogTransition
|
|
12233
|
+
},
|
|
12234
|
+
zIndex: 2400
|
|
12235
|
+
})
|
|
12236
|
+
}, 'VDialog');
|
|
12237
|
+
const VDialog = genericComponent()({
|
|
12238
|
+
name: 'VDialog',
|
|
12239
|
+
props: makeVDialogProps(),
|
|
12240
|
+
emits: {
|
|
12241
|
+
'update:modelValue': value => true
|
|
12242
|
+
},
|
|
12243
|
+
setup(props, _ref) {
|
|
12244
|
+
let {
|
|
12245
|
+
slots
|
|
12246
|
+
} = _ref;
|
|
12247
|
+
const isActive = useProxiedModel(props, 'modelValue');
|
|
12248
|
+
const {
|
|
12249
|
+
scopeId
|
|
12250
|
+
} = useScopeId();
|
|
12251
|
+
const overlay = vue.ref();
|
|
12252
|
+
function onFocusin(e) {
|
|
12253
|
+
const before = e.relatedTarget;
|
|
12254
|
+
const after = e.target;
|
|
12255
|
+
if (before !== after && overlay.value?.contentEl &&
|
|
12256
|
+
// We're the topmost dialog
|
|
12257
|
+
overlay.value?.globalTop &&
|
|
12258
|
+
// It isn't the document or the dialog body
|
|
12259
|
+
![document, overlay.value.contentEl].includes(after) &&
|
|
12260
|
+
// It isn't inside the dialog body
|
|
12261
|
+
!overlay.value.contentEl.contains(after)) {
|
|
12262
|
+
const focusable = focusableChildren(overlay.value.contentEl);
|
|
12263
|
+
if (!focusable.length) return;
|
|
12264
|
+
const firstElement = focusable[0];
|
|
12265
|
+
const lastElement = focusable[focusable.length - 1];
|
|
12266
|
+
if (before === firstElement) {
|
|
12267
|
+
lastElement.focus();
|
|
12268
|
+
} else {
|
|
12269
|
+
firstElement.focus();
|
|
12270
|
+
}
|
|
12271
|
+
}
|
|
12272
|
+
}
|
|
12273
|
+
if (IN_BROWSER) {
|
|
12274
|
+
vue.watch(() => isActive.value && props.retainFocus, val => {
|
|
12275
|
+
val ? document.addEventListener('focusin', onFocusin) : document.removeEventListener('focusin', onFocusin);
|
|
12276
|
+
}, {
|
|
12277
|
+
immediate: true
|
|
12278
|
+
});
|
|
12279
|
+
}
|
|
12280
|
+
vue.watch(isActive, async val => {
|
|
12281
|
+
await vue.nextTick();
|
|
12282
|
+
if (val) {
|
|
12283
|
+
overlay.value.contentEl?.focus({
|
|
12284
|
+
preventScroll: true
|
|
12285
|
+
});
|
|
12286
|
+
} else {
|
|
12287
|
+
overlay.value.activatorEl?.focus({
|
|
12288
|
+
preventScroll: true
|
|
12289
|
+
});
|
|
12290
|
+
}
|
|
12291
|
+
});
|
|
12292
|
+
const activatorProps = vue.computed(() => vue.mergeProps({
|
|
12293
|
+
'aria-haspopup': 'dialog',
|
|
12294
|
+
'aria-expanded': String(isActive.value)
|
|
12295
|
+
}, props.activatorProps));
|
|
12296
|
+
useRender(() => {
|
|
12297
|
+
const [overlayProps] = VOverlay.filterProps(props);
|
|
12298
|
+
return vue.createVNode(VOverlay, vue.mergeProps({
|
|
12299
|
+
"ref": overlay,
|
|
12300
|
+
"class": ['v-dialog', {
|
|
12301
|
+
'v-dialog--fullscreen': props.fullscreen,
|
|
12302
|
+
'v-dialog--scrollable': props.scrollable
|
|
12303
|
+
}, props.class],
|
|
12304
|
+
"style": props.style
|
|
12305
|
+
}, overlayProps, {
|
|
12306
|
+
"modelValue": isActive.value,
|
|
12307
|
+
"onUpdate:modelValue": $event => isActive.value = $event,
|
|
12308
|
+
"aria-modal": "true",
|
|
12309
|
+
"activatorProps": activatorProps.value,
|
|
12310
|
+
"role": "dialog"
|
|
12311
|
+
}, scopeId), {
|
|
12312
|
+
activator: slots.activator,
|
|
12313
|
+
default: function () {
|
|
12314
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
12315
|
+
args[_key] = arguments[_key];
|
|
12316
|
+
}
|
|
12317
|
+
return vue.createVNode(VDefaultsProvider, {
|
|
12318
|
+
"root": "VDialog"
|
|
12319
|
+
}, {
|
|
12320
|
+
default: () => [slots.default?.(...args)]
|
|
12321
|
+
});
|
|
12322
|
+
}
|
|
12323
|
+
});
|
|
12324
|
+
});
|
|
12325
|
+
return forwardRefs({}, overlay);
|
|
12326
|
+
}
|
|
12327
|
+
});
|
|
12328
|
+
|
|
12329
|
+
// Types
|
|
12330
|
+
|
|
12331
|
+
const makeVBottomSheetProps = propsFactory({
|
|
12332
|
+
inset: Boolean,
|
|
12333
|
+
...makeVDialogProps({
|
|
12334
|
+
transition: 'bottom-sheet-transition'
|
|
12335
|
+
})
|
|
12336
|
+
}, 'VBottomSheet');
|
|
12337
|
+
const VBottomSheet = genericComponent()({
|
|
12338
|
+
name: 'VBottomSheet',
|
|
12339
|
+
props: makeVBottomSheetProps(),
|
|
12340
|
+
emits: {
|
|
12341
|
+
'update:modelValue': value => true
|
|
12342
|
+
},
|
|
12343
|
+
setup(props, _ref) {
|
|
12344
|
+
let {
|
|
12345
|
+
slots
|
|
12346
|
+
} = _ref;
|
|
12347
|
+
const isActive = useProxiedModel(props, 'modelValue');
|
|
12348
|
+
useRender(() => {
|
|
12349
|
+
const [dialogProps] = VDialog.filterProps(props);
|
|
12350
|
+
return vue.createVNode(VDialog, vue.mergeProps(dialogProps, {
|
|
12351
|
+
"contentClass": ['v-bottom-sheet__content', props.contentClass],
|
|
12352
|
+
"modelValue": isActive.value,
|
|
12353
|
+
"onUpdate:modelValue": $event => isActive.value = $event,
|
|
12354
|
+
"class": ['v-bottom-sheet', {
|
|
12355
|
+
'v-bottom-sheet--inset': props.inset
|
|
12356
|
+
}, props.class],
|
|
12357
|
+
"style": props.style
|
|
12358
|
+
}), slots);
|
|
12359
|
+
});
|
|
12360
|
+
return {};
|
|
12361
|
+
}
|
|
12362
|
+
});
|
|
12363
|
+
|
|
12198
12364
|
const makeVBreadcrumbsDividerProps = propsFactory({
|
|
12199
12365
|
divider: [Number, String],
|
|
12200
12366
|
...makeComponentProps()
|
|
@@ -15377,6 +15543,16 @@
|
|
|
15377
15543
|
modelValue: true,
|
|
15378
15544
|
'onUpdate:modelValue': undefined
|
|
15379
15545
|
};
|
|
15546
|
+
const hasSlot = hasChips ? !!slots.chip : !!slots.selection;
|
|
15547
|
+
const slotContent = hasSlot ? ensureValidVNode(hasChips ? slots.chip({
|
|
15548
|
+
item,
|
|
15549
|
+
index,
|
|
15550
|
+
props: slotProps
|
|
15551
|
+
}) : slots.selection({
|
|
15552
|
+
item,
|
|
15553
|
+
index
|
|
15554
|
+
})) : undefined;
|
|
15555
|
+
if (hasSlot && !slotContent) return undefined;
|
|
15380
15556
|
return vue.createVNode("div", {
|
|
15381
15557
|
"key": item.value,
|
|
15382
15558
|
"class": ['v-combobox__selection', index === selectionIndex.value && ['v-combobox__selection--selected', textColorClasses.value]],
|
|
@@ -15397,15 +15573,8 @@
|
|
|
15397
15573
|
}
|
|
15398
15574
|
}
|
|
15399
15575
|
}, {
|
|
15400
|
-
default: () => [
|
|
15401
|
-
|
|
15402
|
-
index,
|
|
15403
|
-
props: slotProps
|
|
15404
|
-
})]
|
|
15405
|
-
}) : slots.selection?.({
|
|
15406
|
-
item,
|
|
15407
|
-
index
|
|
15408
|
-
}) ?? vue.createVNode("span", {
|
|
15576
|
+
default: () => [slotContent]
|
|
15577
|
+
}) : slotContent ?? vue.createVNode("span", {
|
|
15409
15578
|
"class": "v-combobox__selection-text"
|
|
15410
15579
|
}, [item.title, props.multiple && index < model.value.length - 1 && vue.createVNode("span", {
|
|
15411
15580
|
"class": "v-combobox__selection-comma"
|
|
@@ -15440,154 +15609,44 @@
|
|
|
15440
15609
|
|
|
15441
15610
|
// Types
|
|
15442
15611
|
|
|
15443
|
-
const
|
|
15444
|
-
|
|
15445
|
-
|
|
15446
|
-
|
|
15447
|
-
|
|
15612
|
+
const VExpansionPanelSymbol = Symbol.for('vuetify:v-expansion-panel');
|
|
15613
|
+
const allowedVariants = ['default', 'accordion', 'inset', 'popout'];
|
|
15614
|
+
const makeVExpansionPanelsProps = propsFactory({
|
|
15615
|
+
color: String,
|
|
15616
|
+
static: Boolean,
|
|
15617
|
+
variant: {
|
|
15618
|
+
type: String,
|
|
15619
|
+
default: 'default',
|
|
15620
|
+
validator: v => allowedVariants.includes(v)
|
|
15448
15621
|
},
|
|
15449
|
-
|
|
15450
|
-
...
|
|
15451
|
-
|
|
15452
|
-
|
|
15453
|
-
|
|
15454
|
-
|
|
15455
|
-
|
|
15456
|
-
|
|
15457
|
-
|
|
15458
|
-
}, 'VDialog');
|
|
15459
|
-
const VDialog = genericComponent()({
|
|
15460
|
-
name: 'VDialog',
|
|
15461
|
-
props: makeVDialogProps(),
|
|
15622
|
+
readonly: Boolean,
|
|
15623
|
+
...makeComponentProps(),
|
|
15624
|
+
...makeGroupProps(),
|
|
15625
|
+
...makeTagProps(),
|
|
15626
|
+
...makeThemeProps()
|
|
15627
|
+
}, 'VExpansionPanels');
|
|
15628
|
+
const VExpansionPanels = genericComponent()({
|
|
15629
|
+
name: 'VExpansionPanels',
|
|
15630
|
+
props: makeVExpansionPanelsProps(),
|
|
15462
15631
|
emits: {
|
|
15463
|
-
'update:modelValue':
|
|
15632
|
+
'update:modelValue': val => true
|
|
15464
15633
|
},
|
|
15465
15634
|
setup(props, _ref) {
|
|
15466
15635
|
let {
|
|
15467
15636
|
slots
|
|
15468
15637
|
} = _ref;
|
|
15469
|
-
|
|
15638
|
+
useGroup(props, VExpansionPanelSymbol);
|
|
15470
15639
|
const {
|
|
15471
|
-
|
|
15472
|
-
} =
|
|
15473
|
-
const
|
|
15474
|
-
|
|
15475
|
-
|
|
15476
|
-
|
|
15477
|
-
|
|
15478
|
-
|
|
15479
|
-
|
|
15480
|
-
|
|
15481
|
-
![document, overlay.value.contentEl].includes(after) &&
|
|
15482
|
-
// It isn't inside the dialog body
|
|
15483
|
-
!overlay.value.contentEl.contains(after)) {
|
|
15484
|
-
const focusable = focusableChildren(overlay.value.contentEl);
|
|
15485
|
-
if (!focusable.length) return;
|
|
15486
|
-
const firstElement = focusable[0];
|
|
15487
|
-
const lastElement = focusable[focusable.length - 1];
|
|
15488
|
-
if (before === firstElement) {
|
|
15489
|
-
lastElement.focus();
|
|
15490
|
-
} else {
|
|
15491
|
-
firstElement.focus();
|
|
15492
|
-
}
|
|
15493
|
-
}
|
|
15494
|
-
}
|
|
15495
|
-
if (IN_BROWSER) {
|
|
15496
|
-
vue.watch(() => isActive.value && props.retainFocus, val => {
|
|
15497
|
-
val ? document.addEventListener('focusin', onFocusin) : document.removeEventListener('focusin', onFocusin);
|
|
15498
|
-
}, {
|
|
15499
|
-
immediate: true
|
|
15500
|
-
});
|
|
15501
|
-
}
|
|
15502
|
-
vue.watch(isActive, async val => {
|
|
15503
|
-
await vue.nextTick();
|
|
15504
|
-
if (val) {
|
|
15505
|
-
overlay.value.contentEl?.focus({
|
|
15506
|
-
preventScroll: true
|
|
15507
|
-
});
|
|
15508
|
-
} else {
|
|
15509
|
-
overlay.value.activatorEl?.focus({
|
|
15510
|
-
preventScroll: true
|
|
15511
|
-
});
|
|
15512
|
-
}
|
|
15513
|
-
});
|
|
15514
|
-
const activatorProps = vue.computed(() => vue.mergeProps({
|
|
15515
|
-
'aria-haspopup': 'dialog',
|
|
15516
|
-
'aria-expanded': String(isActive.value)
|
|
15517
|
-
}, props.activatorProps));
|
|
15518
|
-
useRender(() => {
|
|
15519
|
-
const [overlayProps] = VOverlay.filterProps(props);
|
|
15520
|
-
return vue.createVNode(VOverlay, vue.mergeProps({
|
|
15521
|
-
"ref": overlay,
|
|
15522
|
-
"class": ['v-dialog', {
|
|
15523
|
-
'v-dialog--fullscreen': props.fullscreen,
|
|
15524
|
-
'v-dialog--scrollable': props.scrollable
|
|
15525
|
-
}, props.class],
|
|
15526
|
-
"style": props.style
|
|
15527
|
-
}, overlayProps, {
|
|
15528
|
-
"modelValue": isActive.value,
|
|
15529
|
-
"onUpdate:modelValue": $event => isActive.value = $event,
|
|
15530
|
-
"aria-modal": "true",
|
|
15531
|
-
"activatorProps": activatorProps.value,
|
|
15532
|
-
"role": "dialog"
|
|
15533
|
-
}, scopeId), {
|
|
15534
|
-
activator: slots.activator,
|
|
15535
|
-
default: function () {
|
|
15536
|
-
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
15537
|
-
args[_key] = arguments[_key];
|
|
15538
|
-
}
|
|
15539
|
-
return vue.createVNode(VDefaultsProvider, {
|
|
15540
|
-
"root": "VDialog"
|
|
15541
|
-
}, {
|
|
15542
|
-
default: () => [slots.default?.(...args)]
|
|
15543
|
-
});
|
|
15544
|
-
}
|
|
15545
|
-
});
|
|
15546
|
-
});
|
|
15547
|
-
return forwardRefs({}, overlay);
|
|
15548
|
-
}
|
|
15549
|
-
});
|
|
15550
|
-
|
|
15551
|
-
// Types
|
|
15552
|
-
|
|
15553
|
-
const VExpansionPanelSymbol = Symbol.for('vuetify:v-expansion-panel');
|
|
15554
|
-
const allowedVariants = ['default', 'accordion', 'inset', 'popout'];
|
|
15555
|
-
const makeVExpansionPanelsProps = propsFactory({
|
|
15556
|
-
color: String,
|
|
15557
|
-
static: Boolean,
|
|
15558
|
-
variant: {
|
|
15559
|
-
type: String,
|
|
15560
|
-
default: 'default',
|
|
15561
|
-
validator: v => allowedVariants.includes(v)
|
|
15562
|
-
},
|
|
15563
|
-
readonly: Boolean,
|
|
15564
|
-
...makeComponentProps(),
|
|
15565
|
-
...makeGroupProps(),
|
|
15566
|
-
...makeTagProps(),
|
|
15567
|
-
...makeThemeProps()
|
|
15568
|
-
}, 'VExpansionPanels');
|
|
15569
|
-
const VExpansionPanels = genericComponent()({
|
|
15570
|
-
name: 'VExpansionPanels',
|
|
15571
|
-
props: makeVExpansionPanelsProps(),
|
|
15572
|
-
emits: {
|
|
15573
|
-
'update:modelValue': val => true
|
|
15574
|
-
},
|
|
15575
|
-
setup(props, _ref) {
|
|
15576
|
-
let {
|
|
15577
|
-
slots
|
|
15578
|
-
} = _ref;
|
|
15579
|
-
useGroup(props, VExpansionPanelSymbol);
|
|
15580
|
-
const {
|
|
15581
|
-
themeClasses
|
|
15582
|
-
} = provideTheme(props);
|
|
15583
|
-
const variantClass = vue.computed(() => props.variant && `v-expansion-panels--variant-${props.variant}`);
|
|
15584
|
-
provideDefaults({
|
|
15585
|
-
VExpansionPanel: {
|
|
15586
|
-
color: vue.toRef(props, 'color')
|
|
15587
|
-
},
|
|
15588
|
-
VExpansionPanelTitle: {
|
|
15589
|
-
readonly: vue.toRef(props, 'readonly'),
|
|
15590
|
-
static: vue.toRef(props, 'static')
|
|
15640
|
+
themeClasses
|
|
15641
|
+
} = provideTheme(props);
|
|
15642
|
+
const variantClass = vue.computed(() => props.variant && `v-expansion-panels--variant-${props.variant}`);
|
|
15643
|
+
provideDefaults({
|
|
15644
|
+
VExpansionPanel: {
|
|
15645
|
+
color: vue.toRef(props, 'color')
|
|
15646
|
+
},
|
|
15647
|
+
VExpansionPanelTitle: {
|
|
15648
|
+
readonly: vue.toRef(props, 'readonly'),
|
|
15649
|
+
static: vue.toRef(props, 'static')
|
|
15591
15650
|
}
|
|
15592
15651
|
});
|
|
15593
15652
|
useRender(() => vue.createVNode(props.tag, {
|
|
@@ -16426,6 +16485,235 @@
|
|
|
16426
16485
|
}
|
|
16427
16486
|
});
|
|
16428
16487
|
|
|
16488
|
+
// Types
|
|
16489
|
+
|
|
16490
|
+
const makeVInfiniteScrollProps = propsFactory({
|
|
16491
|
+
color: String,
|
|
16492
|
+
direction: {
|
|
16493
|
+
type: String,
|
|
16494
|
+
default: 'vertical',
|
|
16495
|
+
validator: v => ['vertical', 'horizontal'].includes(v)
|
|
16496
|
+
},
|
|
16497
|
+
side: {
|
|
16498
|
+
type: String,
|
|
16499
|
+
default: 'end',
|
|
16500
|
+
validator: v => ['start', 'end', 'both'].includes(v)
|
|
16501
|
+
},
|
|
16502
|
+
mode: {
|
|
16503
|
+
type: String,
|
|
16504
|
+
default: 'intersect',
|
|
16505
|
+
validator: v => ['intersect', 'manual'].includes(v)
|
|
16506
|
+
},
|
|
16507
|
+
margin: [Number, String],
|
|
16508
|
+
loadMoreText: {
|
|
16509
|
+
type: String,
|
|
16510
|
+
default: '$vuetify.infiniteScroll.loadMore'
|
|
16511
|
+
},
|
|
16512
|
+
emptyText: {
|
|
16513
|
+
type: String,
|
|
16514
|
+
default: '$vuetify.infiniteScroll.empty'
|
|
16515
|
+
},
|
|
16516
|
+
...makeDimensionProps(),
|
|
16517
|
+
...makeTagProps()
|
|
16518
|
+
}, 'VInfiniteScroll');
|
|
16519
|
+
const VInfiniteScrollIntersect = defineComponent({
|
|
16520
|
+
name: 'VInfiniteScrollIntersect',
|
|
16521
|
+
props: {
|
|
16522
|
+
side: {
|
|
16523
|
+
type: String,
|
|
16524
|
+
required: true
|
|
16525
|
+
},
|
|
16526
|
+
rootRef: null,
|
|
16527
|
+
rootMargin: String
|
|
16528
|
+
},
|
|
16529
|
+
emits: {
|
|
16530
|
+
intersect: (side, isIntersecting) => true
|
|
16531
|
+
},
|
|
16532
|
+
setup(props, _ref) {
|
|
16533
|
+
let {
|
|
16534
|
+
emit
|
|
16535
|
+
} = _ref;
|
|
16536
|
+
const {
|
|
16537
|
+
intersectionRef,
|
|
16538
|
+
isIntersecting
|
|
16539
|
+
} = useIntersectionObserver(entries => {}, props.rootMargin ? {
|
|
16540
|
+
rootMargin: props.rootMargin
|
|
16541
|
+
} : undefined);
|
|
16542
|
+
vue.watch(isIntersecting, async val => {
|
|
16543
|
+
emit('intersect', props.side, val);
|
|
16544
|
+
});
|
|
16545
|
+
useRender(() => vue.createVNode("div", {
|
|
16546
|
+
"class": "v-infinite-scroll-intersect",
|
|
16547
|
+
"ref": intersectionRef
|
|
16548
|
+
}, [vue.createTextVNode("\xA0")]));
|
|
16549
|
+
return {};
|
|
16550
|
+
}
|
|
16551
|
+
});
|
|
16552
|
+
const VInfiniteScroll = genericComponent()({
|
|
16553
|
+
name: 'VInfiniteScroll',
|
|
16554
|
+
props: makeVInfiniteScrollProps(),
|
|
16555
|
+
emits: {
|
|
16556
|
+
load: options => true
|
|
16557
|
+
},
|
|
16558
|
+
setup(props, _ref2) {
|
|
16559
|
+
let {
|
|
16560
|
+
slots,
|
|
16561
|
+
emit
|
|
16562
|
+
} = _ref2;
|
|
16563
|
+
const rootEl = vue.ref();
|
|
16564
|
+
const startStatus = vue.shallowRef('ok');
|
|
16565
|
+
const endStatus = vue.shallowRef('ok');
|
|
16566
|
+
const margin = vue.computed(() => convertToUnit(props.margin));
|
|
16567
|
+
const isIntersecting = vue.shallowRef(false);
|
|
16568
|
+
function setScrollAmount(amount) {
|
|
16569
|
+
if (!rootEl.value) return;
|
|
16570
|
+
const property = props.direction === 'vertical' ? 'scrollTop' : 'scrollLeft';
|
|
16571
|
+
rootEl.value[property] = amount;
|
|
16572
|
+
}
|
|
16573
|
+
function getScrollAmount() {
|
|
16574
|
+
if (!rootEl.value) return 0;
|
|
16575
|
+
const property = props.direction === 'vertical' ? 'scrollTop' : 'scrollLeft';
|
|
16576
|
+
return rootEl.value[property];
|
|
16577
|
+
}
|
|
16578
|
+
function getScrollSize() {
|
|
16579
|
+
if (!rootEl.value) return 0;
|
|
16580
|
+
const property = props.direction === 'vertical' ? 'scrollHeight' : 'scrollWidth';
|
|
16581
|
+
return rootEl.value[property];
|
|
16582
|
+
}
|
|
16583
|
+
function getContainerSize() {
|
|
16584
|
+
if (!rootEl.value) return 0;
|
|
16585
|
+
const property = props.direction === 'vertical' ? 'clientHeight' : 'clientWidth';
|
|
16586
|
+
return rootEl.value[property];
|
|
16587
|
+
}
|
|
16588
|
+
vue.onMounted(() => {
|
|
16589
|
+
if (!rootEl.value) return;
|
|
16590
|
+
if (props.side === 'start') {
|
|
16591
|
+
setScrollAmount(getScrollSize());
|
|
16592
|
+
} else if (props.side === 'both') {
|
|
16593
|
+
setScrollAmount(getScrollSize() / 2 - getContainerSize() / 2);
|
|
16594
|
+
}
|
|
16595
|
+
});
|
|
16596
|
+
function setStatus(side, status) {
|
|
16597
|
+
if (side === 'start') {
|
|
16598
|
+
startStatus.value = status;
|
|
16599
|
+
} else if (side === 'end') {
|
|
16600
|
+
endStatus.value = status;
|
|
16601
|
+
}
|
|
16602
|
+
}
|
|
16603
|
+
function getStatus(side) {
|
|
16604
|
+
return side === 'start' ? startStatus.value : endStatus.value;
|
|
16605
|
+
}
|
|
16606
|
+
let previousScrollSize = 0;
|
|
16607
|
+
function handleIntersect(side, _isIntersecting) {
|
|
16608
|
+
isIntersecting.value = _isIntersecting;
|
|
16609
|
+
if (isIntersecting.value) {
|
|
16610
|
+
intersecting(side);
|
|
16611
|
+
}
|
|
16612
|
+
}
|
|
16613
|
+
function intersecting(side) {
|
|
16614
|
+
if (props.mode !== 'manual' && !isIntersecting.value) return;
|
|
16615
|
+
const status = getStatus(side);
|
|
16616
|
+
if (!rootEl.value || status === 'loading') return;
|
|
16617
|
+
previousScrollSize = getScrollSize();
|
|
16618
|
+
setStatus(side, 'loading');
|
|
16619
|
+
function done(status) {
|
|
16620
|
+
setStatus(side, status);
|
|
16621
|
+
vue.nextTick(() => {
|
|
16622
|
+
if (status === 'empty' || status === 'error') return;
|
|
16623
|
+
if (status === 'ok' && side === 'start') {
|
|
16624
|
+
setScrollAmount(getScrollSize() - previousScrollSize + getScrollAmount());
|
|
16625
|
+
}
|
|
16626
|
+
if (props.mode !== 'manual') {
|
|
16627
|
+
vue.nextTick(() => {
|
|
16628
|
+
window.requestAnimationFrame(() => {
|
|
16629
|
+
window.requestAnimationFrame(() => {
|
|
16630
|
+
window.requestAnimationFrame(() => {
|
|
16631
|
+
intersecting(side);
|
|
16632
|
+
});
|
|
16633
|
+
});
|
|
16634
|
+
});
|
|
16635
|
+
});
|
|
16636
|
+
}
|
|
16637
|
+
});
|
|
16638
|
+
}
|
|
16639
|
+
emit('load', {
|
|
16640
|
+
side,
|
|
16641
|
+
done
|
|
16642
|
+
});
|
|
16643
|
+
}
|
|
16644
|
+
const {
|
|
16645
|
+
t
|
|
16646
|
+
} = useLocale();
|
|
16647
|
+
function renderSide(side, status) {
|
|
16648
|
+
if (props.side !== side && props.side !== 'both') return;
|
|
16649
|
+
const onClick = () => intersecting(side);
|
|
16650
|
+
const slotProps = {
|
|
16651
|
+
side,
|
|
16652
|
+
props: {
|
|
16653
|
+
onClick,
|
|
16654
|
+
color: props.color
|
|
16655
|
+
}
|
|
16656
|
+
};
|
|
16657
|
+
if (status === 'error') return slots.error?.(slotProps);
|
|
16658
|
+
if (status === 'empty') return slots.empty?.(slotProps) ?? vue.createVNode("div", null, [t(props.emptyText)]);
|
|
16659
|
+
if (props.mode === 'manual') {
|
|
16660
|
+
if (status === 'loading') {
|
|
16661
|
+
return slots.loading?.(slotProps) ?? vue.createVNode(VProgressCircular, {
|
|
16662
|
+
"indeterminate": true,
|
|
16663
|
+
"color": props.color
|
|
16664
|
+
}, null);
|
|
16665
|
+
}
|
|
16666
|
+
return slots['load-more']?.(slotProps) ?? vue.createVNode(VBtn, {
|
|
16667
|
+
"variant": "outlined",
|
|
16668
|
+
"color": props.color,
|
|
16669
|
+
"onClick": onClick
|
|
16670
|
+
}, {
|
|
16671
|
+
default: () => [t(props.loadMoreText)]
|
|
16672
|
+
});
|
|
16673
|
+
}
|
|
16674
|
+
return slots.loading?.(slotProps) ?? vue.createVNode(VProgressCircular, {
|
|
16675
|
+
"indeterminate": true,
|
|
16676
|
+
"color": props.color
|
|
16677
|
+
}, null);
|
|
16678
|
+
}
|
|
16679
|
+
const {
|
|
16680
|
+
dimensionStyles
|
|
16681
|
+
} = useDimension(props);
|
|
16682
|
+
useRender(() => {
|
|
16683
|
+
const Tag = props.tag;
|
|
16684
|
+
const hasStartIntersect = props.side === 'start' || props.side === 'both';
|
|
16685
|
+
const hasEndIntersect = props.side === 'end' || props.side === 'both';
|
|
16686
|
+
const intersectMode = props.mode === 'intersect';
|
|
16687
|
+
return vue.createVNode(Tag, {
|
|
16688
|
+
"ref": rootEl,
|
|
16689
|
+
"class": ['v-infinite-scroll', `v-infinite-scroll--${props.direction}`, {
|
|
16690
|
+
'v-infinite-scroll--start': hasStartIntersect,
|
|
16691
|
+
'v-infinite-scroll--end': hasEndIntersect
|
|
16692
|
+
}],
|
|
16693
|
+
"style": dimensionStyles.value
|
|
16694
|
+
}, {
|
|
16695
|
+
default: () => [vue.createVNode("div", {
|
|
16696
|
+
"class": "v-infinite-scroll__side"
|
|
16697
|
+
}, [renderSide('start', startStatus.value)]), rootEl.value && hasStartIntersect && intersectMode && vue.createVNode(VInfiniteScrollIntersect, {
|
|
16698
|
+
"key": "start",
|
|
16699
|
+
"side": "start",
|
|
16700
|
+
"onIntersect": handleIntersect,
|
|
16701
|
+
"rootRef": rootEl.value,
|
|
16702
|
+
"rootMargin": margin.value
|
|
16703
|
+
}, null), slots.default?.(), rootEl.value && hasEndIntersect && intersectMode && vue.createVNode(VInfiniteScrollIntersect, {
|
|
16704
|
+
"key": "end",
|
|
16705
|
+
"side": "end",
|
|
16706
|
+
"onIntersect": handleIntersect,
|
|
16707
|
+
"rootRef": rootEl.value,
|
|
16708
|
+
"rootMargin": margin.value
|
|
16709
|
+
}, null), vue.createVNode("div", {
|
|
16710
|
+
"class": "v-infinite-scroll__side"
|
|
16711
|
+
}, [renderSide('end', endStatus.value)])]
|
|
16712
|
+
});
|
|
16713
|
+
});
|
|
16714
|
+
}
|
|
16715
|
+
});
|
|
16716
|
+
|
|
16429
16717
|
const VItemGroupSymbol = Symbol.for('vuetify:v-item-group');
|
|
16430
16718
|
const makeVItemGroupProps = propsFactory({
|
|
16431
16719
|
...makeComponentProps(),
|
|
@@ -18178,6 +18466,140 @@
|
|
|
18178
18466
|
}
|
|
18179
18467
|
});
|
|
18180
18468
|
|
|
18469
|
+
// Types
|
|
18470
|
+
|
|
18471
|
+
const rootTypes = {
|
|
18472
|
+
actions: 'button@2',
|
|
18473
|
+
article: 'heading, paragraph',
|
|
18474
|
+
avatar: 'avatar',
|
|
18475
|
+
button: 'button',
|
|
18476
|
+
card: 'image, heading',
|
|
18477
|
+
'card-avatar': 'image, list-item-avatar',
|
|
18478
|
+
chip: 'chip',
|
|
18479
|
+
'date-picker': 'list-item, heading, divider, date-picker-options, date-picker-days, actions',
|
|
18480
|
+
'date-picker-options': 'text, avatar@2',
|
|
18481
|
+
'date-picker-days': 'avatar@28',
|
|
18482
|
+
divider: 'divider',
|
|
18483
|
+
heading: 'heading',
|
|
18484
|
+
image: 'image',
|
|
18485
|
+
'list-item': 'text',
|
|
18486
|
+
'list-item-avatar': 'avatar, text',
|
|
18487
|
+
'list-item-two-line': 'sentences',
|
|
18488
|
+
'list-item-avatar-two-line': 'avatar, sentences',
|
|
18489
|
+
'list-item-three-line': 'paragraph',
|
|
18490
|
+
'list-item-avatar-three-line': 'avatar, paragraph',
|
|
18491
|
+
ossein: 'ossein',
|
|
18492
|
+
paragraph: 'text@3',
|
|
18493
|
+
sentences: 'text@2',
|
|
18494
|
+
subtitle: 'text',
|
|
18495
|
+
table: 'table-heading, table-thead, table-tbody, table-tfoot',
|
|
18496
|
+
'table-heading': 'chip, text',
|
|
18497
|
+
'table-thead': 'heading@6',
|
|
18498
|
+
'table-tbody': 'table-row-divider@6',
|
|
18499
|
+
'table-row-divider': 'table-row, divider',
|
|
18500
|
+
'table-row': 'text@6',
|
|
18501
|
+
'table-tfoot': 'text@2, avatar@2',
|
|
18502
|
+
text: 'text'
|
|
18503
|
+
};
|
|
18504
|
+
function genBone(type) {
|
|
18505
|
+
let children = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
18506
|
+
return vue.createVNode("div", {
|
|
18507
|
+
"class": ['v-skeleton-loader__bone', `v-skeleton-loader__${type}`]
|
|
18508
|
+
}, [children]);
|
|
18509
|
+
}
|
|
18510
|
+
function genBones(bone) {
|
|
18511
|
+
// e.g. 'text@3'
|
|
18512
|
+
const [type, length] = bone.split('@');
|
|
18513
|
+
|
|
18514
|
+
// Generate a length array based upon
|
|
18515
|
+
// value after @ in the bone string
|
|
18516
|
+
return Array.from({
|
|
18517
|
+
length
|
|
18518
|
+
}).map(() => genStructure(type));
|
|
18519
|
+
}
|
|
18520
|
+
function genStructure(type) {
|
|
18521
|
+
let children = [];
|
|
18522
|
+
if (!type) return children;
|
|
18523
|
+
|
|
18524
|
+
// TODO: figure out a better way to type this
|
|
18525
|
+
const bone = rootTypes[type];
|
|
18526
|
+
|
|
18527
|
+
// End of recursion, do nothing
|
|
18528
|
+
/* eslint-disable-next-line no-empty, brace-style */
|
|
18529
|
+
if (type === bone) ;
|
|
18530
|
+
// Array of values - e.g. 'heading, paragraph, text@2'
|
|
18531
|
+
else if (type.includes(',')) return mapBones(type);
|
|
18532
|
+
// Array of values - e.g. 'paragraph@4'
|
|
18533
|
+
else if (type.includes('@')) return genBones(type);
|
|
18534
|
+
// Array of values - e.g. 'card@2'
|
|
18535
|
+
else if (bone.includes(',')) children = mapBones(bone);
|
|
18536
|
+
// Array of values - e.g. 'list-item@2'
|
|
18537
|
+
else if (bone.includes('@')) children = genBones(bone);
|
|
18538
|
+
// Single value - e.g. 'card-heading'
|
|
18539
|
+
else if (bone) children.push(genStructure(bone));
|
|
18540
|
+
return [genBone(type, children)];
|
|
18541
|
+
}
|
|
18542
|
+
function mapBones(bones) {
|
|
18543
|
+
// Remove spaces and return array of structures
|
|
18544
|
+
return bones.replace(/\s/g, '').split(',').map(genStructure);
|
|
18545
|
+
}
|
|
18546
|
+
const makeVSkeletonLoaderProps = propsFactory({
|
|
18547
|
+
boilerplate: Boolean,
|
|
18548
|
+
color: String,
|
|
18549
|
+
loading: Boolean,
|
|
18550
|
+
loadingText: {
|
|
18551
|
+
type: String,
|
|
18552
|
+
default: '$vuetify.loading'
|
|
18553
|
+
},
|
|
18554
|
+
type: {
|
|
18555
|
+
type: [String, Array],
|
|
18556
|
+
default: 'ossein'
|
|
18557
|
+
},
|
|
18558
|
+
...makeDimensionProps(),
|
|
18559
|
+
...makeElevationProps(),
|
|
18560
|
+
...makeThemeProps()
|
|
18561
|
+
}, 'VSkeletonLoader');
|
|
18562
|
+
const VSkeletonLoader = genericComponent()({
|
|
18563
|
+
name: 'VSkeletonLoader',
|
|
18564
|
+
props: makeVSkeletonLoaderProps(),
|
|
18565
|
+
setup(props, _ref) {
|
|
18566
|
+
let {
|
|
18567
|
+
slots
|
|
18568
|
+
} = _ref;
|
|
18569
|
+
const {
|
|
18570
|
+
backgroundColorClasses,
|
|
18571
|
+
backgroundColorStyles
|
|
18572
|
+
} = useBackgroundColor(vue.toRef(props, 'color'));
|
|
18573
|
+
const {
|
|
18574
|
+
dimensionStyles
|
|
18575
|
+
} = useDimension(props);
|
|
18576
|
+
const {
|
|
18577
|
+
elevationClasses
|
|
18578
|
+
} = useElevation(props);
|
|
18579
|
+
const {
|
|
18580
|
+
themeClasses
|
|
18581
|
+
} = provideTheme(props);
|
|
18582
|
+
const {
|
|
18583
|
+
t
|
|
18584
|
+
} = useLocale();
|
|
18585
|
+
const items = vue.computed(() => genStructure(wrapInArray(props.type).join(',')));
|
|
18586
|
+
useRender(() => {
|
|
18587
|
+
const isLoading = !slots.default || props.loading;
|
|
18588
|
+
return vue.createVNode("div", {
|
|
18589
|
+
"class": ['v-skeleton-loader', {
|
|
18590
|
+
'v-skeleton-loader--boilerplate': props.boilerplate
|
|
18591
|
+
}, themeClasses.value, backgroundColorClasses.value, elevationClasses.value],
|
|
18592
|
+
"style": [backgroundColorStyles.value, isLoading ? dimensionStyles.value : {}],
|
|
18593
|
+
"aria-busy": !props.boilerplate ? isLoading : undefined,
|
|
18594
|
+
"aria-live": !props.boilerplate ? 'polite' : undefined,
|
|
18595
|
+
"aria-label": !props.boilerplate ? t(props.loadingText) : undefined,
|
|
18596
|
+
"role": !props.boilerplate ? 'alert' : undefined
|
|
18597
|
+
}, [isLoading ? items.value : slots.default?.()]);
|
|
18598
|
+
});
|
|
18599
|
+
return {};
|
|
18600
|
+
}
|
|
18601
|
+
});
|
|
18602
|
+
|
|
18181
18603
|
function bias(val) {
|
|
18182
18604
|
const c = 0.501;
|
|
18183
18605
|
const x = Math.abs(val);
|
|
@@ -18741,6 +19163,392 @@
|
|
|
18741
19163
|
|
|
18742
19164
|
// Types
|
|
18743
19165
|
|
|
19166
|
+
const makeVStepperActionsProps = propsFactory({
|
|
19167
|
+
color: String,
|
|
19168
|
+
disabled: {
|
|
19169
|
+
type: [Boolean, String],
|
|
19170
|
+
default: false
|
|
19171
|
+
},
|
|
19172
|
+
prevText: {
|
|
19173
|
+
type: String,
|
|
19174
|
+
default: '$vuetify.stepper.prev'
|
|
19175
|
+
},
|
|
19176
|
+
nextText: {
|
|
19177
|
+
type: String,
|
|
19178
|
+
default: '$vuetify.stepper.next'
|
|
19179
|
+
}
|
|
19180
|
+
}, 'VStepperActions');
|
|
19181
|
+
const VStepperActions = genericComponent()({
|
|
19182
|
+
name: 'VStepperActions',
|
|
19183
|
+
props: makeVStepperActionsProps(),
|
|
19184
|
+
emits: {
|
|
19185
|
+
'click:prev': () => true,
|
|
19186
|
+
'click:next': () => true
|
|
19187
|
+
},
|
|
19188
|
+
setup(props, _ref) {
|
|
19189
|
+
let {
|
|
19190
|
+
emit,
|
|
19191
|
+
slots
|
|
19192
|
+
} = _ref;
|
|
19193
|
+
const {
|
|
19194
|
+
t
|
|
19195
|
+
} = useLocale();
|
|
19196
|
+
function onClickPrev() {
|
|
19197
|
+
emit('click:prev');
|
|
19198
|
+
}
|
|
19199
|
+
function onClickNext() {
|
|
19200
|
+
emit('click:next');
|
|
19201
|
+
}
|
|
19202
|
+
useRender(() => {
|
|
19203
|
+
const prevSlotProps = {
|
|
19204
|
+
onClick: onClickPrev
|
|
19205
|
+
};
|
|
19206
|
+
const nextSlotProps = {
|
|
19207
|
+
onClick: onClickNext
|
|
19208
|
+
};
|
|
19209
|
+
return vue.createVNode("div", {
|
|
19210
|
+
"class": "v-stepper-actions"
|
|
19211
|
+
}, [vue.createVNode(VDefaultsProvider, {
|
|
19212
|
+
"defaults": {
|
|
19213
|
+
VBtn: {
|
|
19214
|
+
disabled: ['prev', true].includes(props.disabled),
|
|
19215
|
+
text: t(props.prevText),
|
|
19216
|
+
variant: 'text'
|
|
19217
|
+
}
|
|
19218
|
+
}
|
|
19219
|
+
}, {
|
|
19220
|
+
default: () => [slots.prev?.({
|
|
19221
|
+
props: prevSlotProps
|
|
19222
|
+
}) ?? vue.createVNode(VBtn, prevSlotProps, null)]
|
|
19223
|
+
}), vue.createVNode(VDefaultsProvider, {
|
|
19224
|
+
"defaults": {
|
|
19225
|
+
VBtn: {
|
|
19226
|
+
color: props.color,
|
|
19227
|
+
disabled: ['next', true].includes(props.disabled),
|
|
19228
|
+
text: t(props.nextText),
|
|
19229
|
+
variant: 'tonal'
|
|
19230
|
+
}
|
|
19231
|
+
}
|
|
19232
|
+
}, {
|
|
19233
|
+
default: () => [slots.next?.({
|
|
19234
|
+
props: nextSlotProps
|
|
19235
|
+
}) ?? vue.createVNode(VBtn, nextSlotProps, null)]
|
|
19236
|
+
})]);
|
|
19237
|
+
});
|
|
19238
|
+
return {};
|
|
19239
|
+
}
|
|
19240
|
+
});
|
|
19241
|
+
|
|
19242
|
+
// Utilities
|
|
19243
|
+
const VStepperHeader = createSimpleFunctional('v-stepper-header');
|
|
19244
|
+
|
|
19245
|
+
// Types
|
|
19246
|
+
|
|
19247
|
+
const makeVStepperItemProps = propsFactory({
|
|
19248
|
+
color: String,
|
|
19249
|
+
title: String,
|
|
19250
|
+
subtitle: String,
|
|
19251
|
+
complete: Boolean,
|
|
19252
|
+
completeIcon: {
|
|
19253
|
+
type: String,
|
|
19254
|
+
default: '$complete'
|
|
19255
|
+
},
|
|
19256
|
+
editable: Boolean,
|
|
19257
|
+
editIcon: {
|
|
19258
|
+
type: String,
|
|
19259
|
+
default: '$edit'
|
|
19260
|
+
},
|
|
19261
|
+
error: Boolean,
|
|
19262
|
+
errorIcon: {
|
|
19263
|
+
type: String,
|
|
19264
|
+
default: '$error'
|
|
19265
|
+
},
|
|
19266
|
+
icon: String,
|
|
19267
|
+
ripple: {
|
|
19268
|
+
type: [Boolean, Object],
|
|
19269
|
+
default: true
|
|
19270
|
+
},
|
|
19271
|
+
rules: {
|
|
19272
|
+
type: Array,
|
|
19273
|
+
default: () => []
|
|
19274
|
+
},
|
|
19275
|
+
...makeGroupItemProps()
|
|
19276
|
+
}, 'VStepperItem');
|
|
19277
|
+
const VStepperItem = genericComponent()({
|
|
19278
|
+
name: 'VStepperItem',
|
|
19279
|
+
directives: {
|
|
19280
|
+
Ripple
|
|
19281
|
+
},
|
|
19282
|
+
props: makeVStepperItemProps(),
|
|
19283
|
+
emits: {
|
|
19284
|
+
'group:selected': val => true
|
|
19285
|
+
},
|
|
19286
|
+
setup(props, _ref) {
|
|
19287
|
+
let {
|
|
19288
|
+
slots
|
|
19289
|
+
} = _ref;
|
|
19290
|
+
const group = useGroupItem(props, VStepperSymbol, true);
|
|
19291
|
+
const step = vue.computed(() => group?.value.value ?? props.value);
|
|
19292
|
+
const isValid = vue.computed(() => props.rules.every(handler => handler() === true));
|
|
19293
|
+
const canEdit = vue.computed(() => !props.disabled && props.editable);
|
|
19294
|
+
const hasError = vue.computed(() => props.error || !isValid.value);
|
|
19295
|
+
const hasCompleted = vue.computed(() => props.complete || props.rules.length > 0 && isValid.value);
|
|
19296
|
+
const icon = vue.computed(() => {
|
|
19297
|
+
if (hasError.value) return props.errorIcon;
|
|
19298
|
+
if (hasCompleted.value) return props.completeIcon;
|
|
19299
|
+
if (props.editable) return props.editIcon;
|
|
19300
|
+
return props.icon;
|
|
19301
|
+
});
|
|
19302
|
+
const slotProps = vue.computed(() => ({
|
|
19303
|
+
canEdit: canEdit.value,
|
|
19304
|
+
hasError: hasError.value,
|
|
19305
|
+
hasCompleted: hasCompleted.value,
|
|
19306
|
+
title: props.title,
|
|
19307
|
+
subtitle: props.subtitle,
|
|
19308
|
+
step: step.value,
|
|
19309
|
+
value: props.value
|
|
19310
|
+
}));
|
|
19311
|
+
useRender(() => {
|
|
19312
|
+
const hasColor = (!group || group.isSelected.value || hasCompleted.value || canEdit.value) && !hasError.value && !props.disabled;
|
|
19313
|
+
const hasTitle = !!(props.title || slots.title);
|
|
19314
|
+
const hasSubtitle = !!(props.subtitle || slots.subtitle);
|
|
19315
|
+
function onClick() {
|
|
19316
|
+
group?.toggle();
|
|
19317
|
+
}
|
|
19318
|
+
return vue.withDirectives(vue.createVNode("button", {
|
|
19319
|
+
"class": ['v-stepper-item', {
|
|
19320
|
+
'v-stepper-item--complete': hasCompleted.value,
|
|
19321
|
+
'v-stepper-item--disabled': props.disabled,
|
|
19322
|
+
'v-stepper-item--error': hasError.value
|
|
19323
|
+
}, group?.selectedClass.value],
|
|
19324
|
+
"disabled": !props.editable,
|
|
19325
|
+
"onClick": onClick
|
|
19326
|
+
}, [vue.createVNode(VAvatar, {
|
|
19327
|
+
"key": "stepper-avatar",
|
|
19328
|
+
"class": "v-stepper-item__avatar",
|
|
19329
|
+
"color": hasColor ? props.color : undefined,
|
|
19330
|
+
"size": 24
|
|
19331
|
+
}, {
|
|
19332
|
+
default: () => [slots.icon?.(slotProps.value) ?? (icon.value ? vue.createVNode(VIcon, {
|
|
19333
|
+
"icon": icon.value
|
|
19334
|
+
}, null) : step.value)]
|
|
19335
|
+
}), vue.createVNode("div", {
|
|
19336
|
+
"class": "v-stepper-item__content"
|
|
19337
|
+
}, [hasTitle && vue.createVNode("div", {
|
|
19338
|
+
"key": "title",
|
|
19339
|
+
"class": "v-stepper-item__title"
|
|
19340
|
+
}, [slots.title?.(slotProps.value) ?? props.title]), hasSubtitle && vue.createVNode("div", {
|
|
19341
|
+
"key": "subtitle",
|
|
19342
|
+
"class": "v-stepper-item__subtitle"
|
|
19343
|
+
}, [slots.subtitle?.(slotProps.value) ?? props.subtitle]), slots.default?.(slotProps.value)])]), [[vue.resolveDirective("ripple"), props.ripple && props.editable, null]]);
|
|
19344
|
+
});
|
|
19345
|
+
return {};
|
|
19346
|
+
}
|
|
19347
|
+
});
|
|
19348
|
+
|
|
19349
|
+
// Types
|
|
19350
|
+
|
|
19351
|
+
const VStepperSymbol$1 = Symbol.for('vuetify:v-stepper');
|
|
19352
|
+
const makeVStepperWindowProps = propsFactory({
|
|
19353
|
+
...makeVWindowProps({
|
|
19354
|
+
mandatory: false
|
|
19355
|
+
})
|
|
19356
|
+
}, 'VStepperWindow');
|
|
19357
|
+
const VStepperWindow = genericComponent()({
|
|
19358
|
+
name: 'VStepperWindow',
|
|
19359
|
+
props: makeVStepperWindowProps(),
|
|
19360
|
+
emits: {
|
|
19361
|
+
'update:modelValue': v => true
|
|
19362
|
+
},
|
|
19363
|
+
setup(props, _ref) {
|
|
19364
|
+
let {
|
|
19365
|
+
slots
|
|
19366
|
+
} = _ref;
|
|
19367
|
+
const group = vue.inject(VStepperSymbol$1, null);
|
|
19368
|
+
const _model = useProxiedModel(props, 'modelValue');
|
|
19369
|
+
const model = vue.computed({
|
|
19370
|
+
get() {
|
|
19371
|
+
// Always return modelValue if defined
|
|
19372
|
+
// or if not within a VStepper group
|
|
19373
|
+
if (_model.value != null || !group) return _model.value;
|
|
19374
|
+
|
|
19375
|
+
// If inside of a VStepper, find the currently selected
|
|
19376
|
+
// item by id. Item value may be assigned by its index
|
|
19377
|
+
return group.items.value.find(item => group.selected.value.includes(item.id))?.value;
|
|
19378
|
+
},
|
|
19379
|
+
set(val) {
|
|
19380
|
+
_model.value = val;
|
|
19381
|
+
}
|
|
19382
|
+
});
|
|
19383
|
+
useRender(() => {
|
|
19384
|
+
const [windowProps] = VWindow.filterProps(props);
|
|
19385
|
+
return vue.createVNode(VWindow, vue.mergeProps(windowProps, {
|
|
19386
|
+
"modelValue": model.value,
|
|
19387
|
+
"onUpdate:modelValue": $event => model.value = $event,
|
|
19388
|
+
"class": "v-stepper-window"
|
|
19389
|
+
}), slots);
|
|
19390
|
+
});
|
|
19391
|
+
return {};
|
|
19392
|
+
}
|
|
19393
|
+
});
|
|
19394
|
+
|
|
19395
|
+
const makeVStepperWindowItemProps = propsFactory({
|
|
19396
|
+
...makeVWindowItemProps()
|
|
19397
|
+
}, 'VStepperWindowItem');
|
|
19398
|
+
const VStepperWindowItem = genericComponent()({
|
|
19399
|
+
name: 'VStepperWindowItem',
|
|
19400
|
+
props: makeVStepperWindowItemProps(),
|
|
19401
|
+
setup(props, _ref) {
|
|
19402
|
+
let {
|
|
19403
|
+
slots
|
|
19404
|
+
} = _ref;
|
|
19405
|
+
useRender(() => {
|
|
19406
|
+
const [windowItemProps] = VWindowItem.filterProps(props);
|
|
19407
|
+
return vue.createVNode(VWindowItem, vue.mergeProps(windowItemProps, {
|
|
19408
|
+
"class": "v-stepper-window-item"
|
|
19409
|
+
}), slots);
|
|
19410
|
+
});
|
|
19411
|
+
return {};
|
|
19412
|
+
}
|
|
19413
|
+
});
|
|
19414
|
+
|
|
19415
|
+
// Types
|
|
19416
|
+
|
|
19417
|
+
const VStepperSymbol = Symbol.for('vuetify:v-stepper');
|
|
19418
|
+
const makeVStepperProps = propsFactory({
|
|
19419
|
+
altLabels: Boolean,
|
|
19420
|
+
bgColor: String,
|
|
19421
|
+
editable: Boolean,
|
|
19422
|
+
hideActions: Boolean,
|
|
19423
|
+
items: {
|
|
19424
|
+
type: Array,
|
|
19425
|
+
default: () => []
|
|
19426
|
+
},
|
|
19427
|
+
itemTitle: {
|
|
19428
|
+
type: String,
|
|
19429
|
+
default: 'title'
|
|
19430
|
+
},
|
|
19431
|
+
itemValue: {
|
|
19432
|
+
type: String,
|
|
19433
|
+
default: 'value'
|
|
19434
|
+
},
|
|
19435
|
+
mobile: Boolean,
|
|
19436
|
+
nonLinear: Boolean,
|
|
19437
|
+
flat: Boolean,
|
|
19438
|
+
...makeGroupProps({
|
|
19439
|
+
mandatory: 'force',
|
|
19440
|
+
selectedClass: 'v-stepper-item--selected'
|
|
19441
|
+
}),
|
|
19442
|
+
...makeVSheetProps(),
|
|
19443
|
+
...only(makeVStepperActionsProps(), ['prevText', 'nextText'])
|
|
19444
|
+
}, 'VStepper');
|
|
19445
|
+
const VStepper = genericComponent()({
|
|
19446
|
+
name: 'VStepper',
|
|
19447
|
+
props: makeVStepperProps(),
|
|
19448
|
+
emits: {
|
|
19449
|
+
'update:modelValue': v => true
|
|
19450
|
+
},
|
|
19451
|
+
setup(props, _ref) {
|
|
19452
|
+
let {
|
|
19453
|
+
slots
|
|
19454
|
+
} = _ref;
|
|
19455
|
+
const {
|
|
19456
|
+
items: _items,
|
|
19457
|
+
next,
|
|
19458
|
+
prev,
|
|
19459
|
+
selected
|
|
19460
|
+
} = useGroup(props, VStepperSymbol);
|
|
19461
|
+
const {
|
|
19462
|
+
color,
|
|
19463
|
+
editable,
|
|
19464
|
+
prevText,
|
|
19465
|
+
nextText
|
|
19466
|
+
} = vue.toRefs(props);
|
|
19467
|
+
const items = vue.computed(() => props.items.map((item, index) => {
|
|
19468
|
+
const title = getPropertyFromItem(item, props.itemTitle, item);
|
|
19469
|
+
const value = getPropertyFromItem(item, props.itemValue, index + 1);
|
|
19470
|
+
return {
|
|
19471
|
+
title,
|
|
19472
|
+
value,
|
|
19473
|
+
raw: item
|
|
19474
|
+
};
|
|
19475
|
+
}));
|
|
19476
|
+
const activeIndex = vue.computed(() => {
|
|
19477
|
+
return _items.value.findIndex(item => selected.value.includes(item.id));
|
|
19478
|
+
});
|
|
19479
|
+
const disabled = vue.computed(() => {
|
|
19480
|
+
if (props.disabled) return props.disabled;
|
|
19481
|
+
if (activeIndex.value === 0) return 'prev';
|
|
19482
|
+
if (activeIndex.value === _items.value.length - 1) return 'next';
|
|
19483
|
+
return false;
|
|
19484
|
+
});
|
|
19485
|
+
provideDefaults({
|
|
19486
|
+
VStepperItem: {
|
|
19487
|
+
editable,
|
|
19488
|
+
prevText,
|
|
19489
|
+
nextText
|
|
19490
|
+
},
|
|
19491
|
+
VStepperActions: {
|
|
19492
|
+
color,
|
|
19493
|
+
disabled,
|
|
19494
|
+
prevText,
|
|
19495
|
+
nextText
|
|
19496
|
+
}
|
|
19497
|
+
});
|
|
19498
|
+
useRender(() => {
|
|
19499
|
+
const [sheetProps] = VSheet.filterProps(props);
|
|
19500
|
+
const hasHeader = !!(slots.header || props.items.length);
|
|
19501
|
+
const hasWindow = props.items.length > 0;
|
|
19502
|
+
const hasActions = !props.hideActions && !!(hasWindow || slots.actions);
|
|
19503
|
+
return vue.createVNode(VSheet, vue.mergeProps(sheetProps, {
|
|
19504
|
+
"color": props.bgColor,
|
|
19505
|
+
"class": ['v-stepper', {
|
|
19506
|
+
'v-stepper--alt-labels': props.altLabels,
|
|
19507
|
+
'v-stepper--flat': props.flat,
|
|
19508
|
+
'v-stepper--non-linear': props.nonLinear,
|
|
19509
|
+
'v-stepper--mobile': props.mobile
|
|
19510
|
+
}, props.class],
|
|
19511
|
+
"style": props.style
|
|
19512
|
+
}), {
|
|
19513
|
+
default: () => [hasHeader && vue.createVNode(VStepperHeader, {
|
|
19514
|
+
"key": "stepper-header"
|
|
19515
|
+
}, {
|
|
19516
|
+
default: () => [items.value.map((item, index) => vue.createVNode(vue.Fragment, null, [!!index && vue.createVNode(VDivider, null, null), vue.createVNode(VStepperItem, item, {
|
|
19517
|
+
default: slots[`header-item.${item.value}`] ?? slots.header,
|
|
19518
|
+
icon: slots.icon,
|
|
19519
|
+
title: slots.title,
|
|
19520
|
+
subtitle: slots.subtitle
|
|
19521
|
+
})]))]
|
|
19522
|
+
}), hasWindow && vue.createVNode(VStepperWindow, {
|
|
19523
|
+
"key": "stepper-window"
|
|
19524
|
+
}, {
|
|
19525
|
+
default: () => [items.value.map(item => vue.createVNode(VStepperWindowItem, {
|
|
19526
|
+
"value": item.value
|
|
19527
|
+
}, {
|
|
19528
|
+
default: () => slots[`item.${item.value}`]?.(item) ?? slots.item?.(item)
|
|
19529
|
+
}))]
|
|
19530
|
+
}), slots.default?.({
|
|
19531
|
+
prev,
|
|
19532
|
+
next
|
|
19533
|
+
}), hasActions && (slots.actions?.({
|
|
19534
|
+
next,
|
|
19535
|
+
prev
|
|
19536
|
+
}) ?? vue.createVNode(VStepperActions, {
|
|
19537
|
+
"key": "stepper-actions",
|
|
19538
|
+
"onClick:prev": prev,
|
|
19539
|
+
"onClick:next": next
|
|
19540
|
+
}, slots))]
|
|
19541
|
+
});
|
|
19542
|
+
});
|
|
19543
|
+
return {
|
|
19544
|
+
prev,
|
|
19545
|
+
next
|
|
19546
|
+
};
|
|
19547
|
+
}
|
|
19548
|
+
});
|
|
19549
|
+
|
|
19550
|
+
// Types
|
|
19551
|
+
|
|
18744
19552
|
const makeVSwitchProps = propsFactory({
|
|
18745
19553
|
indeterminate: Boolean,
|
|
18746
19554
|
inset: Boolean,
|
|
@@ -19819,6 +20627,7 @@
|
|
|
19819
20627
|
VBannerActions: VBannerActions,
|
|
19820
20628
|
VBannerText: VBannerText,
|
|
19821
20629
|
VBottomNavigation: VBottomNavigation,
|
|
20630
|
+
VBottomSheet: VBottomSheet,
|
|
19822
20631
|
VBreadcrumbs: VBreadcrumbs,
|
|
19823
20632
|
VBreadcrumbsDivider: VBreadcrumbsDivider,
|
|
19824
20633
|
VBreadcrumbsItem: VBreadcrumbsItem,
|
|
@@ -19867,6 +20676,7 @@
|
|
|
19867
20676
|
VHover: VHover,
|
|
19868
20677
|
VIcon: VIcon,
|
|
19869
20678
|
VImg: VImg,
|
|
20679
|
+
VInfiniteScroll: VInfiniteScroll,
|
|
19870
20680
|
VInput: VInput,
|
|
19871
20681
|
VItem: VItem,
|
|
19872
20682
|
VItemGroup: VItemGroup,
|
|
@@ -19911,6 +20721,7 @@
|
|
|
19911
20721
|
VSelectionControl: VSelectionControl,
|
|
19912
20722
|
VSelectionControlGroup: VSelectionControlGroup,
|
|
19913
20723
|
VSheet: VSheet,
|
|
20724
|
+
VSkeletonLoader: VSkeletonLoader,
|
|
19914
20725
|
VSlideGroup: VSlideGroup,
|
|
19915
20726
|
VSlideGroupItem: VSlideGroupItem,
|
|
19916
20727
|
VSlideXReverseTransition: VSlideXReverseTransition,
|
|
@@ -19920,6 +20731,12 @@
|
|
|
19920
20731
|
VSlider: VSlider,
|
|
19921
20732
|
VSnackbar: VSnackbar,
|
|
19922
20733
|
VSpacer: VSpacer,
|
|
20734
|
+
VStepper: VStepper,
|
|
20735
|
+
VStepperActions: VStepperActions,
|
|
20736
|
+
VStepperHeader: VStepperHeader,
|
|
20737
|
+
VStepperItem: VStepperItem,
|
|
20738
|
+
VStepperWindow: VStepperWindow,
|
|
20739
|
+
VStepperWindowItem: VStepperWindowItem,
|
|
19923
20740
|
VSvgIcon: VSvgIcon,
|
|
19924
20741
|
VSwitch: VSwitch,
|
|
19925
20742
|
VSystemBar: VSystemBar,
|
|
@@ -20300,7 +21117,6 @@
|
|
|
20300
21117
|
});
|
|
20301
21118
|
}
|
|
20302
21119
|
function format(value, formatString, locale) {
|
|
20303
|
-
const date = new Date(value);
|
|
20304
21120
|
let options = {};
|
|
20305
21121
|
switch (formatString) {
|
|
20306
21122
|
case 'fullDateWithWeekday':
|
|
@@ -20319,7 +21135,11 @@
|
|
|
20319
21135
|
};
|
|
20320
21136
|
break;
|
|
20321
21137
|
case 'keyboardDate':
|
|
20322
|
-
options = {
|
|
21138
|
+
options = {
|
|
21139
|
+
day: '2-digit',
|
|
21140
|
+
month: '2-digit',
|
|
21141
|
+
year: 'numeric'
|
|
21142
|
+
};
|
|
20323
21143
|
break;
|
|
20324
21144
|
case 'monthAndDate':
|
|
20325
21145
|
options = {
|
|
@@ -20349,7 +21169,7 @@
|
|
|
20349
21169
|
timeZoneName: 'short'
|
|
20350
21170
|
};
|
|
20351
21171
|
}
|
|
20352
|
-
return new Intl.DateTimeFormat(locale, options).format(date);
|
|
21172
|
+
return new Intl.DateTimeFormat(locale, options).format(date(value) ?? undefined);
|
|
20353
21173
|
}
|
|
20354
21174
|
function toISO(adapter, value) {
|
|
20355
21175
|
const date = adapter.toJsDate(value);
|
|
@@ -20649,7 +21469,7 @@
|
|
|
20649
21469
|
date
|
|
20650
21470
|
};
|
|
20651
21471
|
}
|
|
20652
|
-
const version$1 = "3.4.0-alpha.1-dev.2023-10-
|
|
21472
|
+
const version$1 = "3.4.0-alpha.1-dev.2023-10-28";
|
|
20653
21473
|
createVuetify$1.version = version$1;
|
|
20654
21474
|
|
|
20655
21475
|
// Vue's inject() can only be used in setup
|
|
@@ -20674,7 +21494,7 @@
|
|
|
20674
21494
|
...options
|
|
20675
21495
|
});
|
|
20676
21496
|
};
|
|
20677
|
-
const version = "3.4.0-alpha.1-dev.2023-10-
|
|
21497
|
+
const version = "3.4.0-alpha.1-dev.2023-10-28";
|
|
20678
21498
|
createVuetify.version = version;
|
|
20679
21499
|
|
|
20680
21500
|
exports.components = components;
|