This repository has been archived on 2024-07-27. You can view files and clone it, but cannot push or open issues or pull requests.
keksAccountGUI/node_modulesOLD/vuetify/lib/components/VStepper/VStepperStep.js
2019-08-11 20:48:02 +02:00

144 lines
No EOL
3.1 KiB
JavaScript

// Components
import VIcon from '../VIcon'; // Mixins
import Colorable from '../../mixins/colorable';
import { inject as RegistrableInject } from '../../mixins/registrable'; // Directives
import ripple from '../../directives/ripple'; // Utilities
import mixins from '../../util/mixins';
const baseMixins = mixins(Colorable, RegistrableInject('stepper', 'v-stepper-step', 'v-stepper'));
/* @vue/component */
export default baseMixins.extend().extend({
name: 'v-stepper-step',
directives: {
ripple
},
inject: ['stepClick'],
props: {
color: {
type: String,
default: 'primary'
},
complete: Boolean,
completeIcon: {
type: String,
default: '$vuetify.icons.complete'
},
editable: Boolean,
editIcon: {
type: String,
default: '$vuetify.icons.edit'
},
errorIcon: {
type: String,
default: '$vuetify.icons.error'
},
rules: {
type: Array,
default: () => []
},
step: [Number, String]
},
data() {
return {
isActive: false,
isInactive: true
};
},
computed: {
classes() {
return {
'v-stepper__step--active': this.isActive,
'v-stepper__step--editable': this.editable,
'v-stepper__step--inactive': this.isInactive,
'v-stepper__step--error error--text': this.hasError,
'v-stepper__step--complete': this.complete
};
},
hasError() {
return this.rules.some(validate => validate() !== true);
}
},
mounted() {
this.stepper && this.stepper.register(this);
},
beforeDestroy() {
this.stepper && this.stepper.unregister(this);
},
methods: {
click(e) {
e.stopPropagation();
this.$emit('click', e);
if (this.editable) {
this.stepClick(this.step);
}
},
genIcon(icon) {
return this.$createElement(VIcon, icon);
},
genLabel() {
return this.$createElement('div', {
staticClass: 'v-stepper__label'
}, this.$slots.default);
},
genStep() {
const color = !this.hasError && (this.complete || this.isActive) ? this.color : false;
return this.$createElement('span', this.setBackgroundColor(color, {
staticClass: 'v-stepper__step__step'
}), this.genStepContent());
},
genStepContent() {
const children = [];
if (this.hasError) {
children.push(this.genIcon(this.errorIcon));
} else if (this.complete) {
if (this.editable) {
children.push(this.genIcon(this.editIcon));
} else {
children.push(this.genIcon(this.completeIcon));
}
} else {
children.push(String(this.step));
}
return children;
},
toggle(step) {
this.isActive = step.toString() === this.step.toString();
this.isInactive = Number(step) < Number(this.step);
}
},
render(h) {
return h('div', {
staticClass: 'v-stepper__step',
class: this.classes,
directives: [{
name: 'ripple',
value: this.editable
}],
on: {
click: this.click
}
}, [this.genStep(), this.genLabel()]);
}
});
//# sourceMappingURL=VStepperStep.js.map