59 lines
1.7 KiB
JavaScript
59 lines
1.7 KiB
JavaScript
/**
|
|
* Copyright (c) HashiCorp, Inc.
|
|
* SPDX-License-Identifier: MPL-2.0
|
|
*/
|
|
|
|
import { inject as service } from '@ember/service';
|
|
import { alias, or } from '@ember/object/computed';
|
|
import Component from '@ember/component';
|
|
import { matchesState } from 'xstate';
|
|
|
|
export default Component.extend({
|
|
classNames: ['ui-wizard-container'],
|
|
wizard: service(),
|
|
auth: service(),
|
|
router: service(),
|
|
|
|
shouldRender: or('auth.currentToken', 'wizard.showWhenUnauthenticated'),
|
|
currentState: alias('wizard.currentState'),
|
|
featureState: alias('wizard.featureState'),
|
|
featureComponent: alias('wizard.featureComponent'),
|
|
tutorialComponent: alias('wizard.tutorialComponent'),
|
|
componentState: alias('wizard.componentState'),
|
|
nextFeature: alias('wizard.nextFeature'),
|
|
nextStep: alias('wizard.nextStep'),
|
|
currentRouteName: alias('router.currentRouteName'),
|
|
|
|
actions: {
|
|
dismissWizard() {
|
|
this.wizard.transitionTutorialMachine(this.currentState, 'DISMISS');
|
|
},
|
|
|
|
advanceWizard() {
|
|
const inInit = matchesState('init', this.wizard.currentState);
|
|
const event = inInit ? this.wizard.initEvent || 'CONTINUE' : 'CONTINUE';
|
|
this.wizard.transitionTutorialMachine(this.currentState, event);
|
|
},
|
|
|
|
advanceFeature() {
|
|
this.wizard.transitionFeatureMachine(this.featureState, 'CONTINUE');
|
|
},
|
|
|
|
finishFeature() {
|
|
this.wizard.transitionFeatureMachine(this.featureState, 'DONE');
|
|
},
|
|
|
|
repeatStep() {
|
|
this.wizard.transitionFeatureMachine(this.featureState, 'REPEAT', this.componentState);
|
|
},
|
|
|
|
resetFeature() {
|
|
this.wizard.transitionFeatureMachine(this.featureState, 'RESET', this.componentState);
|
|
},
|
|
|
|
pauseWizard() {
|
|
this.wizard.transitionTutorialMachine(this.currentState, 'PAUSE');
|
|
},
|
|
},
|
|
});
|