52 lines
1.9 KiB
JavaScript
52 lines
1.9 KiB
JavaScript
import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from "vue";
|
|
// Components
|
|
import { makeVWindowProps, VWindow } from "../VWindow/VWindow.mjs"; // Composables
|
|
import { useProxiedModel } from "../../composables/proxiedModel.mjs"; // Utilities
|
|
import { computed, inject } from 'vue';
|
|
import { genericComponent, omit, propsFactory, useRender } from "../../util/index.mjs"; // Types
|
|
export const VStepperSymbol = Symbol.for('vuetify:v-stepper');
|
|
export const makeVStepperWindowProps = propsFactory({
|
|
...omit(makeVWindowProps(), ['continuous', 'nextIcon', 'prevIcon', 'showArrows', 'touch', 'mandatory'])
|
|
}, 'VStepperWindow');
|
|
export const VStepperWindow = genericComponent()({
|
|
name: 'VStepperWindow',
|
|
props: makeVStepperWindowProps(),
|
|
emits: {
|
|
'update:modelValue': v => true
|
|
},
|
|
setup(props, _ref) {
|
|
let {
|
|
slots
|
|
} = _ref;
|
|
const group = inject(VStepperSymbol, null);
|
|
const _model = useProxiedModel(props, 'modelValue');
|
|
const model = computed({
|
|
get() {
|
|
// Always return modelValue if defined
|
|
// or if not within a VStepper group
|
|
if (_model.value != null || !group) return _model.value;
|
|
|
|
// If inside of a VStepper, find the currently selected
|
|
// item by id. Item value may be assigned by its index
|
|
return group.items.value.find(item => group.selected.value.includes(item.id))?.value;
|
|
},
|
|
set(val) {
|
|
_model.value = val;
|
|
}
|
|
});
|
|
useRender(() => {
|
|
const windowProps = VWindow.filterProps(props);
|
|
return _createVNode(VWindow, _mergeProps({
|
|
"_as": "VStepperWindow"
|
|
}, windowProps, {
|
|
"modelValue": model.value,
|
|
"onUpdate:modelValue": $event => model.value = $event,
|
|
"class": "v-stepper-window",
|
|
"mandatory": false,
|
|
"touch": false
|
|
}), slots);
|
|
});
|
|
return {};
|
|
}
|
|
});
|
|
//# sourceMappingURL=VStepperWindow.mjs.map
|