@vuetify/nightly 3.4.0-alpha.1-dev.2023-10-21 → 3.4.0-alpha.1-dev.2023-10-26
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 +6 -3
- package/dist/_component-variables-labs.sass +1 -4
- package/dist/_component-variables.sass +3 -0
- package/dist/json/attributes.json +26 -26
- package/dist/json/importMap-labs.json +20 -52
- package/dist/json/importMap.json +56 -24
- package/dist/json/web-types.json +30 -30
- package/dist/vuetify-labs.css +725 -724
- package/dist/vuetify-labs.d.ts +41344 -36620
- package/dist/vuetify-labs.esm.js +5358 -5336
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +5357 -5335
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +385 -13
- package/dist/vuetify.d.ts +19744 -12997
- package/dist/vuetify.esm.js +735 -145
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +734 -144
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +808 -779
- 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/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 +19539 -12808
- package/lib/components/index.mjs +4 -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 +22 -22
- 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/VInfiniteScroll/index.d.mts +59 -54
- package/lib/labs/VOtpInput/index.d.mts +80 -64
- package/lib/labs/VPicker/index.d.mts +74 -97
- package/lib/labs/components.d.mts +7777 -9883
- package/lib/labs/components.mjs +0 -3
- 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/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}/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-26
|
|
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,116 +15609,6 @@
|
|
|
15440
15609
|
|
|
15441
15610
|
// Types
|
|
15442
15611
|
|
|
15443
|
-
const makeVDialogProps = propsFactory({
|
|
15444
|
-
fullscreen: Boolean,
|
|
15445
|
-
retainFocus: {
|
|
15446
|
-
type: Boolean,
|
|
15447
|
-
default: true
|
|
15448
|
-
},
|
|
15449
|
-
scrollable: Boolean,
|
|
15450
|
-
...makeVOverlayProps({
|
|
15451
|
-
origin: 'center center',
|
|
15452
|
-
scrollStrategy: 'block',
|
|
15453
|
-
transition: {
|
|
15454
|
-
component: VDialogTransition
|
|
15455
|
-
},
|
|
15456
|
-
zIndex: 2400
|
|
15457
|
-
})
|
|
15458
|
-
}, 'VDialog');
|
|
15459
|
-
const VDialog = genericComponent()({
|
|
15460
|
-
name: 'VDialog',
|
|
15461
|
-
props: makeVDialogProps(),
|
|
15462
|
-
emits: {
|
|
15463
|
-
'update:modelValue': value => true
|
|
15464
|
-
},
|
|
15465
|
-
setup(props, _ref) {
|
|
15466
|
-
let {
|
|
15467
|
-
slots
|
|
15468
|
-
} = _ref;
|
|
15469
|
-
const isActive = useProxiedModel(props, 'modelValue');
|
|
15470
|
-
const {
|
|
15471
|
-
scopeId
|
|
15472
|
-
} = useScopeId();
|
|
15473
|
-
const overlay = vue.ref();
|
|
15474
|
-
function onFocusin(e) {
|
|
15475
|
-
const before = e.relatedTarget;
|
|
15476
|
-
const after = e.target;
|
|
15477
|
-
if (before !== after && overlay.value?.contentEl &&
|
|
15478
|
-
// We're the topmost dialog
|
|
15479
|
-
overlay.value?.globalTop &&
|
|
15480
|
-
// It isn't the document or the dialog body
|
|
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
15612
|
const VExpansionPanelSymbol = Symbol.for('vuetify:v-expansion-panel');
|
|
15554
15613
|
const allowedVariants = ['default', 'accordion', 'inset', 'popout'];
|
|
15555
15614
|
const makeVExpansionPanelsProps = propsFactory({
|
|
@@ -18178,6 +18237,140 @@
|
|
|
18178
18237
|
}
|
|
18179
18238
|
});
|
|
18180
18239
|
|
|
18240
|
+
// Types
|
|
18241
|
+
|
|
18242
|
+
const rootTypes = {
|
|
18243
|
+
actions: 'button@2',
|
|
18244
|
+
article: 'heading, paragraph',
|
|
18245
|
+
avatar: 'avatar',
|
|
18246
|
+
button: 'button',
|
|
18247
|
+
card: 'image, heading',
|
|
18248
|
+
'card-avatar': 'image, list-item-avatar',
|
|
18249
|
+
chip: 'chip',
|
|
18250
|
+
'date-picker': 'list-item, heading, divider, date-picker-options, date-picker-days, actions',
|
|
18251
|
+
'date-picker-options': 'text, avatar@2',
|
|
18252
|
+
'date-picker-days': 'avatar@28',
|
|
18253
|
+
divider: 'divider',
|
|
18254
|
+
heading: 'heading',
|
|
18255
|
+
image: 'image',
|
|
18256
|
+
'list-item': 'text',
|
|
18257
|
+
'list-item-avatar': 'avatar, text',
|
|
18258
|
+
'list-item-two-line': 'sentences',
|
|
18259
|
+
'list-item-avatar-two-line': 'avatar, sentences',
|
|
18260
|
+
'list-item-three-line': 'paragraph',
|
|
18261
|
+
'list-item-avatar-three-line': 'avatar, paragraph',
|
|
18262
|
+
ossein: 'ossein',
|
|
18263
|
+
paragraph: 'text@3',
|
|
18264
|
+
sentences: 'text@2',
|
|
18265
|
+
subtitle: 'text',
|
|
18266
|
+
table: 'table-heading, table-thead, table-tbody, table-tfoot',
|
|
18267
|
+
'table-heading': 'chip, text',
|
|
18268
|
+
'table-thead': 'heading@6',
|
|
18269
|
+
'table-tbody': 'table-row-divider@6',
|
|
18270
|
+
'table-row-divider': 'table-row, divider',
|
|
18271
|
+
'table-row': 'text@6',
|
|
18272
|
+
'table-tfoot': 'text@2, avatar@2',
|
|
18273
|
+
text: 'text'
|
|
18274
|
+
};
|
|
18275
|
+
function genBone(type) {
|
|
18276
|
+
let children = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
18277
|
+
return vue.createVNode("div", {
|
|
18278
|
+
"class": ['v-skeleton-loader__bone', `v-skeleton-loader__${type}`]
|
|
18279
|
+
}, [children]);
|
|
18280
|
+
}
|
|
18281
|
+
function genBones(bone) {
|
|
18282
|
+
// e.g. 'text@3'
|
|
18283
|
+
const [type, length] = bone.split('@');
|
|
18284
|
+
|
|
18285
|
+
// Generate a length array based upon
|
|
18286
|
+
// value after @ in the bone string
|
|
18287
|
+
return Array.from({
|
|
18288
|
+
length
|
|
18289
|
+
}).map(() => genStructure(type));
|
|
18290
|
+
}
|
|
18291
|
+
function genStructure(type) {
|
|
18292
|
+
let children = [];
|
|
18293
|
+
if (!type) return children;
|
|
18294
|
+
|
|
18295
|
+
// TODO: figure out a better way to type this
|
|
18296
|
+
const bone = rootTypes[type];
|
|
18297
|
+
|
|
18298
|
+
// End of recursion, do nothing
|
|
18299
|
+
/* eslint-disable-next-line no-empty, brace-style */
|
|
18300
|
+
if (type === bone) ;
|
|
18301
|
+
// Array of values - e.g. 'heading, paragraph, text@2'
|
|
18302
|
+
else if (type.includes(',')) return mapBones(type);
|
|
18303
|
+
// Array of values - e.g. 'paragraph@4'
|
|
18304
|
+
else if (type.includes('@')) return genBones(type);
|
|
18305
|
+
// Array of values - e.g. 'card@2'
|
|
18306
|
+
else if (bone.includes(',')) children = mapBones(bone);
|
|
18307
|
+
// Array of values - e.g. 'list-item@2'
|
|
18308
|
+
else if (bone.includes('@')) children = genBones(bone);
|
|
18309
|
+
// Single value - e.g. 'card-heading'
|
|
18310
|
+
else if (bone) children.push(genStructure(bone));
|
|
18311
|
+
return [genBone(type, children)];
|
|
18312
|
+
}
|
|
18313
|
+
function mapBones(bones) {
|
|
18314
|
+
// Remove spaces and return array of structures
|
|
18315
|
+
return bones.replace(/\s/g, '').split(',').map(genStructure);
|
|
18316
|
+
}
|
|
18317
|
+
const makeVSkeletonLoaderProps = propsFactory({
|
|
18318
|
+
boilerplate: Boolean,
|
|
18319
|
+
color: String,
|
|
18320
|
+
loading: Boolean,
|
|
18321
|
+
loadingText: {
|
|
18322
|
+
type: String,
|
|
18323
|
+
default: '$vuetify.loading'
|
|
18324
|
+
},
|
|
18325
|
+
type: {
|
|
18326
|
+
type: [String, Array],
|
|
18327
|
+
default: 'ossein'
|
|
18328
|
+
},
|
|
18329
|
+
...makeDimensionProps(),
|
|
18330
|
+
...makeElevationProps(),
|
|
18331
|
+
...makeThemeProps()
|
|
18332
|
+
}, 'VSkeletonLoader');
|
|
18333
|
+
const VSkeletonLoader = genericComponent()({
|
|
18334
|
+
name: 'VSkeletonLoader',
|
|
18335
|
+
props: makeVSkeletonLoaderProps(),
|
|
18336
|
+
setup(props, _ref) {
|
|
18337
|
+
let {
|
|
18338
|
+
slots
|
|
18339
|
+
} = _ref;
|
|
18340
|
+
const {
|
|
18341
|
+
backgroundColorClasses,
|
|
18342
|
+
backgroundColorStyles
|
|
18343
|
+
} = useBackgroundColor(vue.toRef(props, 'color'));
|
|
18344
|
+
const {
|
|
18345
|
+
dimensionStyles
|
|
18346
|
+
} = useDimension(props);
|
|
18347
|
+
const {
|
|
18348
|
+
elevationClasses
|
|
18349
|
+
} = useElevation(props);
|
|
18350
|
+
const {
|
|
18351
|
+
themeClasses
|
|
18352
|
+
} = provideTheme(props);
|
|
18353
|
+
const {
|
|
18354
|
+
t
|
|
18355
|
+
} = useLocale();
|
|
18356
|
+
const items = vue.computed(() => genStructure(wrapInArray(props.type).join(',')));
|
|
18357
|
+
useRender(() => {
|
|
18358
|
+
const isLoading = !slots.default || props.loading;
|
|
18359
|
+
return vue.createVNode("div", {
|
|
18360
|
+
"class": ['v-skeleton-loader', {
|
|
18361
|
+
'v-skeleton-loader--boilerplate': props.boilerplate
|
|
18362
|
+
}, themeClasses.value, backgroundColorClasses.value, elevationClasses.value],
|
|
18363
|
+
"style": [backgroundColorStyles.value, isLoading ? dimensionStyles.value : {}],
|
|
18364
|
+
"aria-busy": !props.boilerplate ? isLoading : undefined,
|
|
18365
|
+
"aria-live": !props.boilerplate ? 'polite' : undefined,
|
|
18366
|
+
"aria-label": !props.boilerplate ? t(props.loadingText) : undefined,
|
|
18367
|
+
"role": !props.boilerplate ? 'alert' : undefined
|
|
18368
|
+
}, [isLoading ? items.value : slots.default?.()]);
|
|
18369
|
+
});
|
|
18370
|
+
return {};
|
|
18371
|
+
}
|
|
18372
|
+
});
|
|
18373
|
+
|
|
18181
18374
|
function bias(val) {
|
|
18182
18375
|
const c = 0.501;
|
|
18183
18376
|
const x = Math.abs(val);
|
|
@@ -18741,6 +18934,392 @@
|
|
|
18741
18934
|
|
|
18742
18935
|
// Types
|
|
18743
18936
|
|
|
18937
|
+
const makeVStepperActionsProps = propsFactory({
|
|
18938
|
+
color: String,
|
|
18939
|
+
disabled: {
|
|
18940
|
+
type: [Boolean, String],
|
|
18941
|
+
default: false
|
|
18942
|
+
},
|
|
18943
|
+
prevText: {
|
|
18944
|
+
type: String,
|
|
18945
|
+
default: '$vuetify.stepper.prev'
|
|
18946
|
+
},
|
|
18947
|
+
nextText: {
|
|
18948
|
+
type: String,
|
|
18949
|
+
default: '$vuetify.stepper.next'
|
|
18950
|
+
}
|
|
18951
|
+
}, 'VStepperActions');
|
|
18952
|
+
const VStepperActions = genericComponent()({
|
|
18953
|
+
name: 'VStepperActions',
|
|
18954
|
+
props: makeVStepperActionsProps(),
|
|
18955
|
+
emits: {
|
|
18956
|
+
'click:prev': () => true,
|
|
18957
|
+
'click:next': () => true
|
|
18958
|
+
},
|
|
18959
|
+
setup(props, _ref) {
|
|
18960
|
+
let {
|
|
18961
|
+
emit,
|
|
18962
|
+
slots
|
|
18963
|
+
} = _ref;
|
|
18964
|
+
const {
|
|
18965
|
+
t
|
|
18966
|
+
} = useLocale();
|
|
18967
|
+
function onClickPrev() {
|
|
18968
|
+
emit('click:prev');
|
|
18969
|
+
}
|
|
18970
|
+
function onClickNext() {
|
|
18971
|
+
emit('click:next');
|
|
18972
|
+
}
|
|
18973
|
+
useRender(() => {
|
|
18974
|
+
const prevSlotProps = {
|
|
18975
|
+
onClick: onClickPrev
|
|
18976
|
+
};
|
|
18977
|
+
const nextSlotProps = {
|
|
18978
|
+
onClick: onClickNext
|
|
18979
|
+
};
|
|
18980
|
+
return vue.createVNode("div", {
|
|
18981
|
+
"class": "v-stepper-actions"
|
|
18982
|
+
}, [vue.createVNode(VDefaultsProvider, {
|
|
18983
|
+
"defaults": {
|
|
18984
|
+
VBtn: {
|
|
18985
|
+
disabled: ['prev', true].includes(props.disabled),
|
|
18986
|
+
text: t(props.prevText),
|
|
18987
|
+
variant: 'text'
|
|
18988
|
+
}
|
|
18989
|
+
}
|
|
18990
|
+
}, {
|
|
18991
|
+
default: () => [slots.prev?.({
|
|
18992
|
+
props: prevSlotProps
|
|
18993
|
+
}) ?? vue.createVNode(VBtn, prevSlotProps, null)]
|
|
18994
|
+
}), vue.createVNode(VDefaultsProvider, {
|
|
18995
|
+
"defaults": {
|
|
18996
|
+
VBtn: {
|
|
18997
|
+
color: props.color,
|
|
18998
|
+
disabled: ['next', true].includes(props.disabled),
|
|
18999
|
+
text: t(props.nextText),
|
|
19000
|
+
variant: 'tonal'
|
|
19001
|
+
}
|
|
19002
|
+
}
|
|
19003
|
+
}, {
|
|
19004
|
+
default: () => [slots.next?.({
|
|
19005
|
+
props: nextSlotProps
|
|
19006
|
+
}) ?? vue.createVNode(VBtn, nextSlotProps, null)]
|
|
19007
|
+
})]);
|
|
19008
|
+
});
|
|
19009
|
+
return {};
|
|
19010
|
+
}
|
|
19011
|
+
});
|
|
19012
|
+
|
|
19013
|
+
// Utilities
|
|
19014
|
+
const VStepperHeader = createSimpleFunctional('v-stepper-header');
|
|
19015
|
+
|
|
19016
|
+
// Types
|
|
19017
|
+
|
|
19018
|
+
const makeVStepperItemProps = propsFactory({
|
|
19019
|
+
color: String,
|
|
19020
|
+
title: String,
|
|
19021
|
+
subtitle: String,
|
|
19022
|
+
complete: Boolean,
|
|
19023
|
+
completeIcon: {
|
|
19024
|
+
type: String,
|
|
19025
|
+
default: '$complete'
|
|
19026
|
+
},
|
|
19027
|
+
editable: Boolean,
|
|
19028
|
+
editIcon: {
|
|
19029
|
+
type: String,
|
|
19030
|
+
default: '$edit'
|
|
19031
|
+
},
|
|
19032
|
+
error: Boolean,
|
|
19033
|
+
errorIcon: {
|
|
19034
|
+
type: String,
|
|
19035
|
+
default: '$error'
|
|
19036
|
+
},
|
|
19037
|
+
icon: String,
|
|
19038
|
+
ripple: {
|
|
19039
|
+
type: [Boolean, Object],
|
|
19040
|
+
default: true
|
|
19041
|
+
},
|
|
19042
|
+
rules: {
|
|
19043
|
+
type: Array,
|
|
19044
|
+
default: () => []
|
|
19045
|
+
},
|
|
19046
|
+
...makeGroupItemProps()
|
|
19047
|
+
}, 'VStepperItem');
|
|
19048
|
+
const VStepperItem = genericComponent()({
|
|
19049
|
+
name: 'VStepperItem',
|
|
19050
|
+
directives: {
|
|
19051
|
+
Ripple
|
|
19052
|
+
},
|
|
19053
|
+
props: makeVStepperItemProps(),
|
|
19054
|
+
emits: {
|
|
19055
|
+
'group:selected': val => true
|
|
19056
|
+
},
|
|
19057
|
+
setup(props, _ref) {
|
|
19058
|
+
let {
|
|
19059
|
+
slots
|
|
19060
|
+
} = _ref;
|
|
19061
|
+
const group = useGroupItem(props, VStepperSymbol, true);
|
|
19062
|
+
const step = vue.computed(() => group?.value.value ?? props.value);
|
|
19063
|
+
const isValid = vue.computed(() => props.rules.every(handler => handler() === true));
|
|
19064
|
+
const canEdit = vue.computed(() => !props.disabled && props.editable);
|
|
19065
|
+
const hasError = vue.computed(() => props.error || !isValid.value);
|
|
19066
|
+
const hasCompleted = vue.computed(() => props.complete || props.rules.length > 0 && isValid.value);
|
|
19067
|
+
const icon = vue.computed(() => {
|
|
19068
|
+
if (hasError.value) return props.errorIcon;
|
|
19069
|
+
if (hasCompleted.value) return props.completeIcon;
|
|
19070
|
+
if (props.editable) return props.editIcon;
|
|
19071
|
+
return props.icon;
|
|
19072
|
+
});
|
|
19073
|
+
const slotProps = vue.computed(() => ({
|
|
19074
|
+
canEdit: canEdit.value,
|
|
19075
|
+
hasError: hasError.value,
|
|
19076
|
+
hasCompleted: hasCompleted.value,
|
|
19077
|
+
title: props.title,
|
|
19078
|
+
subtitle: props.subtitle,
|
|
19079
|
+
step: step.value,
|
|
19080
|
+
value: props.value
|
|
19081
|
+
}));
|
|
19082
|
+
useRender(() => {
|
|
19083
|
+
const hasColor = (!group || group.isSelected.value || hasCompleted.value || canEdit.value) && !hasError.value && !props.disabled;
|
|
19084
|
+
const hasTitle = !!(props.title || slots.title);
|
|
19085
|
+
const hasSubtitle = !!(props.subtitle || slots.subtitle);
|
|
19086
|
+
function onClick() {
|
|
19087
|
+
group?.toggle();
|
|
19088
|
+
}
|
|
19089
|
+
return vue.withDirectives(vue.createVNode("button", {
|
|
19090
|
+
"class": ['v-stepper-item', {
|
|
19091
|
+
'v-stepper-item--complete': hasCompleted.value,
|
|
19092
|
+
'v-stepper-item--disabled': props.disabled,
|
|
19093
|
+
'v-stepper-item--error': hasError.value
|
|
19094
|
+
}, group?.selectedClass.value],
|
|
19095
|
+
"disabled": !props.editable,
|
|
19096
|
+
"onClick": onClick
|
|
19097
|
+
}, [vue.createVNode(VAvatar, {
|
|
19098
|
+
"key": "stepper-avatar",
|
|
19099
|
+
"class": "v-stepper-item__avatar",
|
|
19100
|
+
"color": hasColor ? props.color : undefined,
|
|
19101
|
+
"size": 24
|
|
19102
|
+
}, {
|
|
19103
|
+
default: () => [slots.icon?.(slotProps.value) ?? (icon.value ? vue.createVNode(VIcon, {
|
|
19104
|
+
"icon": icon.value
|
|
19105
|
+
}, null) : step.value)]
|
|
19106
|
+
}), vue.createVNode("div", {
|
|
19107
|
+
"class": "v-stepper-item__content"
|
|
19108
|
+
}, [hasTitle && vue.createVNode("div", {
|
|
19109
|
+
"key": "title",
|
|
19110
|
+
"class": "v-stepper-item__title"
|
|
19111
|
+
}, [slots.title?.(slotProps.value) ?? props.title]), hasSubtitle && vue.createVNode("div", {
|
|
19112
|
+
"key": "subtitle",
|
|
19113
|
+
"class": "v-stepper-item__subtitle"
|
|
19114
|
+
}, [slots.subtitle?.(slotProps.value) ?? props.subtitle]), slots.default?.(slotProps.value)])]), [[vue.resolveDirective("ripple"), props.ripple && props.editable, null]]);
|
|
19115
|
+
});
|
|
19116
|
+
return {};
|
|
19117
|
+
}
|
|
19118
|
+
});
|
|
19119
|
+
|
|
19120
|
+
// Types
|
|
19121
|
+
|
|
19122
|
+
const VStepperSymbol$1 = Symbol.for('vuetify:v-stepper');
|
|
19123
|
+
const makeVStepperWindowProps = propsFactory({
|
|
19124
|
+
...makeVWindowProps({
|
|
19125
|
+
mandatory: false
|
|
19126
|
+
})
|
|
19127
|
+
}, 'VStepperWindow');
|
|
19128
|
+
const VStepperWindow = genericComponent()({
|
|
19129
|
+
name: 'VStepperWindow',
|
|
19130
|
+
props: makeVStepperWindowProps(),
|
|
19131
|
+
emits: {
|
|
19132
|
+
'update:modelValue': v => true
|
|
19133
|
+
},
|
|
19134
|
+
setup(props, _ref) {
|
|
19135
|
+
let {
|
|
19136
|
+
slots
|
|
19137
|
+
} = _ref;
|
|
19138
|
+
const group = vue.inject(VStepperSymbol$1, null);
|
|
19139
|
+
const _model = useProxiedModel(props, 'modelValue');
|
|
19140
|
+
const model = vue.computed({
|
|
19141
|
+
get() {
|
|
19142
|
+
// Always return modelValue if defined
|
|
19143
|
+
// or if not within a VStepper group
|
|
19144
|
+
if (_model.value != null || !group) return _model.value;
|
|
19145
|
+
|
|
19146
|
+
// If inside of a VStepper, find the currently selected
|
|
19147
|
+
// item by id. Item value may be assigned by its index
|
|
19148
|
+
return group.items.value.find(item => group.selected.value.includes(item.id))?.value;
|
|
19149
|
+
},
|
|
19150
|
+
set(val) {
|
|
19151
|
+
_model.value = val;
|
|
19152
|
+
}
|
|
19153
|
+
});
|
|
19154
|
+
useRender(() => {
|
|
19155
|
+
const [windowProps] = VWindow.filterProps(props);
|
|
19156
|
+
return vue.createVNode(VWindow, vue.mergeProps(windowProps, {
|
|
19157
|
+
"modelValue": model.value,
|
|
19158
|
+
"onUpdate:modelValue": $event => model.value = $event,
|
|
19159
|
+
"class": "v-stepper-window"
|
|
19160
|
+
}), slots);
|
|
19161
|
+
});
|
|
19162
|
+
return {};
|
|
19163
|
+
}
|
|
19164
|
+
});
|
|
19165
|
+
|
|
19166
|
+
const makeVStepperWindowItemProps = propsFactory({
|
|
19167
|
+
...makeVWindowItemProps()
|
|
19168
|
+
}, 'VStepperWindowItem');
|
|
19169
|
+
const VStepperWindowItem = genericComponent()({
|
|
19170
|
+
name: 'VStepperWindowItem',
|
|
19171
|
+
props: makeVStepperWindowItemProps(),
|
|
19172
|
+
setup(props, _ref) {
|
|
19173
|
+
let {
|
|
19174
|
+
slots
|
|
19175
|
+
} = _ref;
|
|
19176
|
+
useRender(() => {
|
|
19177
|
+
const [windowItemProps] = VWindowItem.filterProps(props);
|
|
19178
|
+
return vue.createVNode(VWindowItem, vue.mergeProps(windowItemProps, {
|
|
19179
|
+
"class": "v-stepper-window-item"
|
|
19180
|
+
}), slots);
|
|
19181
|
+
});
|
|
19182
|
+
return {};
|
|
19183
|
+
}
|
|
19184
|
+
});
|
|
19185
|
+
|
|
19186
|
+
// Types
|
|
19187
|
+
|
|
19188
|
+
const VStepperSymbol = Symbol.for('vuetify:v-stepper');
|
|
19189
|
+
const makeVStepperProps = propsFactory({
|
|
19190
|
+
altLabels: Boolean,
|
|
19191
|
+
bgColor: String,
|
|
19192
|
+
editable: Boolean,
|
|
19193
|
+
hideActions: Boolean,
|
|
19194
|
+
items: {
|
|
19195
|
+
type: Array,
|
|
19196
|
+
default: () => []
|
|
19197
|
+
},
|
|
19198
|
+
itemTitle: {
|
|
19199
|
+
type: String,
|
|
19200
|
+
default: 'title'
|
|
19201
|
+
},
|
|
19202
|
+
itemValue: {
|
|
19203
|
+
type: String,
|
|
19204
|
+
default: 'value'
|
|
19205
|
+
},
|
|
19206
|
+
mobile: Boolean,
|
|
19207
|
+
nonLinear: Boolean,
|
|
19208
|
+
flat: Boolean,
|
|
19209
|
+
...makeGroupProps({
|
|
19210
|
+
mandatory: 'force',
|
|
19211
|
+
selectedClass: 'v-stepper-item--selected'
|
|
19212
|
+
}),
|
|
19213
|
+
...makeVSheetProps(),
|
|
19214
|
+
...only(makeVStepperActionsProps(), ['prevText', 'nextText'])
|
|
19215
|
+
}, 'VStepper');
|
|
19216
|
+
const VStepper = genericComponent()({
|
|
19217
|
+
name: 'VStepper',
|
|
19218
|
+
props: makeVStepperProps(),
|
|
19219
|
+
emits: {
|
|
19220
|
+
'update:modelValue': v => true
|
|
19221
|
+
},
|
|
19222
|
+
setup(props, _ref) {
|
|
19223
|
+
let {
|
|
19224
|
+
slots
|
|
19225
|
+
} = _ref;
|
|
19226
|
+
const {
|
|
19227
|
+
items: _items,
|
|
19228
|
+
next,
|
|
19229
|
+
prev,
|
|
19230
|
+
selected
|
|
19231
|
+
} = useGroup(props, VStepperSymbol);
|
|
19232
|
+
const {
|
|
19233
|
+
color,
|
|
19234
|
+
editable,
|
|
19235
|
+
prevText,
|
|
19236
|
+
nextText
|
|
19237
|
+
} = vue.toRefs(props);
|
|
19238
|
+
const items = vue.computed(() => props.items.map((item, index) => {
|
|
19239
|
+
const title = getPropertyFromItem(item, props.itemTitle, item);
|
|
19240
|
+
const value = getPropertyFromItem(item, props.itemValue, index + 1);
|
|
19241
|
+
return {
|
|
19242
|
+
title,
|
|
19243
|
+
value,
|
|
19244
|
+
raw: item
|
|
19245
|
+
};
|
|
19246
|
+
}));
|
|
19247
|
+
const activeIndex = vue.computed(() => {
|
|
19248
|
+
return _items.value.findIndex(item => selected.value.includes(item.id));
|
|
19249
|
+
});
|
|
19250
|
+
const disabled = vue.computed(() => {
|
|
19251
|
+
if (props.disabled) return props.disabled;
|
|
19252
|
+
if (activeIndex.value === 0) return 'prev';
|
|
19253
|
+
if (activeIndex.value === _items.value.length - 1) return 'next';
|
|
19254
|
+
return false;
|
|
19255
|
+
});
|
|
19256
|
+
provideDefaults({
|
|
19257
|
+
VStepperItem: {
|
|
19258
|
+
editable,
|
|
19259
|
+
prevText,
|
|
19260
|
+
nextText
|
|
19261
|
+
},
|
|
19262
|
+
VStepperActions: {
|
|
19263
|
+
color,
|
|
19264
|
+
disabled,
|
|
19265
|
+
prevText,
|
|
19266
|
+
nextText
|
|
19267
|
+
}
|
|
19268
|
+
});
|
|
19269
|
+
useRender(() => {
|
|
19270
|
+
const [sheetProps] = VSheet.filterProps(props);
|
|
19271
|
+
const hasHeader = !!(slots.header || props.items.length);
|
|
19272
|
+
const hasWindow = props.items.length > 0;
|
|
19273
|
+
const hasActions = !props.hideActions && !!(hasWindow || slots.actions);
|
|
19274
|
+
return vue.createVNode(VSheet, vue.mergeProps(sheetProps, {
|
|
19275
|
+
"color": props.bgColor,
|
|
19276
|
+
"class": ['v-stepper', {
|
|
19277
|
+
'v-stepper--alt-labels': props.altLabels,
|
|
19278
|
+
'v-stepper--flat': props.flat,
|
|
19279
|
+
'v-stepper--non-linear': props.nonLinear,
|
|
19280
|
+
'v-stepper--mobile': props.mobile
|
|
19281
|
+
}, props.class],
|
|
19282
|
+
"style": props.style
|
|
19283
|
+
}), {
|
|
19284
|
+
default: () => [hasHeader && vue.createVNode(VStepperHeader, {
|
|
19285
|
+
"key": "stepper-header"
|
|
19286
|
+
}, {
|
|
19287
|
+
default: () => [items.value.map((item, index) => vue.createVNode(vue.Fragment, null, [!!index && vue.createVNode(VDivider, null, null), vue.createVNode(VStepperItem, item, {
|
|
19288
|
+
default: slots[`header-item.${item.value}`] ?? slots.header,
|
|
19289
|
+
icon: slots.icon,
|
|
19290
|
+
title: slots.title,
|
|
19291
|
+
subtitle: slots.subtitle
|
|
19292
|
+
})]))]
|
|
19293
|
+
}), hasWindow && vue.createVNode(VStepperWindow, {
|
|
19294
|
+
"key": "stepper-window"
|
|
19295
|
+
}, {
|
|
19296
|
+
default: () => [items.value.map(item => vue.createVNode(VStepperWindowItem, {
|
|
19297
|
+
"value": item.value
|
|
19298
|
+
}, {
|
|
19299
|
+
default: () => slots[`item.${item.value}`]?.(item) ?? slots.item?.(item)
|
|
19300
|
+
}))]
|
|
19301
|
+
}), slots.default?.({
|
|
19302
|
+
prev,
|
|
19303
|
+
next
|
|
19304
|
+
}), hasActions && (slots.actions?.({
|
|
19305
|
+
next,
|
|
19306
|
+
prev
|
|
19307
|
+
}) ?? vue.createVNode(VStepperActions, {
|
|
19308
|
+
"key": "stepper-actions",
|
|
19309
|
+
"onClick:prev": prev,
|
|
19310
|
+
"onClick:next": next
|
|
19311
|
+
}, slots))]
|
|
19312
|
+
});
|
|
19313
|
+
});
|
|
19314
|
+
return {
|
|
19315
|
+
prev,
|
|
19316
|
+
next
|
|
19317
|
+
};
|
|
19318
|
+
}
|
|
19319
|
+
});
|
|
19320
|
+
|
|
19321
|
+
// Types
|
|
19322
|
+
|
|
18744
19323
|
const makeVSwitchProps = propsFactory({
|
|
18745
19324
|
indeterminate: Boolean,
|
|
18746
19325
|
inset: Boolean,
|
|
@@ -19819,6 +20398,7 @@
|
|
|
19819
20398
|
VBannerActions: VBannerActions,
|
|
19820
20399
|
VBannerText: VBannerText,
|
|
19821
20400
|
VBottomNavigation: VBottomNavigation,
|
|
20401
|
+
VBottomSheet: VBottomSheet,
|
|
19822
20402
|
VBreadcrumbs: VBreadcrumbs,
|
|
19823
20403
|
VBreadcrumbsDivider: VBreadcrumbsDivider,
|
|
19824
20404
|
VBreadcrumbsItem: VBreadcrumbsItem,
|
|
@@ -19911,6 +20491,7 @@
|
|
|
19911
20491
|
VSelectionControl: VSelectionControl,
|
|
19912
20492
|
VSelectionControlGroup: VSelectionControlGroup,
|
|
19913
20493
|
VSheet: VSheet,
|
|
20494
|
+
VSkeletonLoader: VSkeletonLoader,
|
|
19914
20495
|
VSlideGroup: VSlideGroup,
|
|
19915
20496
|
VSlideGroupItem: VSlideGroupItem,
|
|
19916
20497
|
VSlideXReverseTransition: VSlideXReverseTransition,
|
|
@@ -19920,6 +20501,12 @@
|
|
|
19920
20501
|
VSlider: VSlider,
|
|
19921
20502
|
VSnackbar: VSnackbar,
|
|
19922
20503
|
VSpacer: VSpacer,
|
|
20504
|
+
VStepper: VStepper,
|
|
20505
|
+
VStepperActions: VStepperActions,
|
|
20506
|
+
VStepperHeader: VStepperHeader,
|
|
20507
|
+
VStepperItem: VStepperItem,
|
|
20508
|
+
VStepperWindow: VStepperWindow,
|
|
20509
|
+
VStepperWindowItem: VStepperWindowItem,
|
|
19923
20510
|
VSvgIcon: VSvgIcon,
|
|
19924
20511
|
VSwitch: VSwitch,
|
|
19925
20512
|
VSystemBar: VSystemBar,
|
|
@@ -20300,7 +20887,6 @@
|
|
|
20300
20887
|
});
|
|
20301
20888
|
}
|
|
20302
20889
|
function format(value, formatString, locale) {
|
|
20303
|
-
const date = new Date(value);
|
|
20304
20890
|
let options = {};
|
|
20305
20891
|
switch (formatString) {
|
|
20306
20892
|
case 'fullDateWithWeekday':
|
|
@@ -20319,7 +20905,11 @@
|
|
|
20319
20905
|
};
|
|
20320
20906
|
break;
|
|
20321
20907
|
case 'keyboardDate':
|
|
20322
|
-
options = {
|
|
20908
|
+
options = {
|
|
20909
|
+
day: '2-digit',
|
|
20910
|
+
month: '2-digit',
|
|
20911
|
+
year: 'numeric'
|
|
20912
|
+
};
|
|
20323
20913
|
break;
|
|
20324
20914
|
case 'monthAndDate':
|
|
20325
20915
|
options = {
|
|
@@ -20349,7 +20939,7 @@
|
|
|
20349
20939
|
timeZoneName: 'short'
|
|
20350
20940
|
};
|
|
20351
20941
|
}
|
|
20352
|
-
return new Intl.DateTimeFormat(locale, options).format(date);
|
|
20942
|
+
return new Intl.DateTimeFormat(locale, options).format(date(value) ?? undefined);
|
|
20353
20943
|
}
|
|
20354
20944
|
function toISO(adapter, value) {
|
|
20355
20945
|
const date = adapter.toJsDate(value);
|
|
@@ -20649,7 +21239,7 @@
|
|
|
20649
21239
|
date
|
|
20650
21240
|
};
|
|
20651
21241
|
}
|
|
20652
|
-
const version$1 = "3.4.0-alpha.1-dev.2023-10-
|
|
21242
|
+
const version$1 = "3.4.0-alpha.1-dev.2023-10-26";
|
|
20653
21243
|
createVuetify$1.version = version$1;
|
|
20654
21244
|
|
|
20655
21245
|
// Vue's inject() can only be used in setup
|
|
@@ -20674,7 +21264,7 @@
|
|
|
20674
21264
|
...options
|
|
20675
21265
|
});
|
|
20676
21266
|
};
|
|
20677
|
-
const version = "3.4.0-alpha.1-dev.2023-10-
|
|
21267
|
+
const version = "3.4.0-alpha.1-dev.2023-10-26";
|
|
20678
21268
|
createVuetify.version = version;
|
|
20679
21269
|
|
|
20680
21270
|
exports.components = components;
|