vuetify
Version:
Vue Material Component Framework
110 lines (108 loc) • 2.94 kB
JavaScript
// @ts-nocheck
/* eslint-disable */
// Styles
import "./VStepper.css";
// Extensions
import VSheet from "../VSheet/index.mjs"; // Components
// Mixins
import { provide as RegistrableProvide } from "../../mixins/registrable.mjs";
import Proxyable from "../../mixins/proxyable.mjs"; // Utilities
import mixins from "../../util/mixins.mjs";
import { breaking } from "../../util/console.mjs"; // Types
const baseMixins = mixins(VSheet, RegistrableProvide('stepper'), Proxyable);
/* @vue/component */
export default baseMixins.extend({
name: 'v-stepper',
provide() {
return {
stepClick: this.stepClick,
isVertical: this.vertical
};
},
props: {
altLabels: Boolean,
nonLinear: Boolean,
flat: Boolean,
vertical: Boolean
},
data() {
const data = {
isBooted: false,
steps: [],
content: [],
isReverse: false
};
data.internalLazyValue = this.value != null ? this.value : (data[0] || {}).step || 1;
return data;
},
computed: {
classes() {
return {
'v-stepper--flat': this.flat,
'v-stepper--is-booted': this.isBooted,
'v-stepper--vertical': this.vertical,
'v-stepper--alt-labels': this.altLabels,
'v-stepper--non-linear': this.nonLinear,
...VSheet.options.computed.classes.call(this)
};
},
styles() {
return {
...VSheet.options.computed.styles.call(this)
};
}
},
watch: {
internalValue(val, oldVal) {
this.isReverse = Number(val) < Number(oldVal);
oldVal && (this.isBooted = true);
this.updateView();
}
},
created() {
/* istanbul ignore next */
if (this.$listeners.input) {
breaking('@input', '@change', this);
}
},
mounted() {
this.updateView();
},
methods: {
register(item) {
if (item.$options.name === 'v-stepper-step') {
this.steps.push(item);
} else if (item.$options.name === 'v-stepper-content') {
item.isVertical = this.vertical;
this.content.push(item);
}
},
unregister(item) {
if (item.$options.name === 'v-stepper-step') {
this.steps = this.steps.filter(i => i !== item);
} else if (item.$options.name === 'v-stepper-content') {
item.isVertical = this.vertical;
this.content = this.content.filter(i => i !== item);
}
},
stepClick(step) {
this.$nextTick(() => this.internalValue = step);
},
updateView() {
for (let index = this.steps.length; --index >= 0;) {
this.steps[index].toggle(this.internalValue);
}
for (let index = this.content.length; --index >= 0;) {
this.content[index].toggle(this.internalValue, this.isReverse);
}
}
},
render(h) {
return h(this.tag, {
staticClass: 'v-stepper',
class: this.classes,
style: this.styles
}, this.$slots.default);
}
});
//# sourceMappingURL=VStepper.mjs.map