1.0.1 • Published 3 years ago

@eflexsystems/ember-cli-wizard v1.0.1

Weekly downloads
11
License
MIT
Repository
github
Last release
3 years ago

ember-cli-wizard

Travis-CI status Ember Observer Score

Ember wizard component inspired by jquery-steps.

Demo: https://ritesh83.github.io/ember-cli-wizard/#/basic-example

Installation

ember install ember-cli-wizard

This addon uses the 'hash' helper and hence requires ember 2.3 or above. If you would like to use it with older versions of ember, install the hash helper polyfill.

Usage

<EmberCliWizard
    wizardData={{this.wizardData}}
    submitAction={{action 'submitAction'}}
    cancelAction={{action 'cancelAction'}}
    as |currentState|
/>
    <currentState.step @stepId={{1}} @wizardCurrentState={{currentState}}>
        <p>Step 1</p>
    </currentState.step>

    <currentState.step @stepId={{2}} @wizardCurrentState={{currentState}}>
        <p>Step 2</p>
    </currentState.step>

    <currentState.step @stepId={{3}} @wizardCurrentState={{currentState}}>
        <p>Step 3</p>
    </currentState.step>
</EmberCliWizard>
wizardData: [
    {'step_id': 1, 'header_label': '1. First Step'},
    {'step_id': 2, 'header_label': '2. Second Step'},
    {'step_id': 3, 'header_label': '3. Third Step'}
]

Import the wizard.css file in your app.

@import "ember-cli-wizard/wizard";

The 'step_id' is the unique identifier of each wizard step. The 'stepId' attribute value of each step needs to match the 'step_id' value in the 'wizardData'.

Bootstrap

This addon requires bootstrap

Options

NameDefaultDescription
animatetrueAdds animation between wizard steps
animationDuration300msThe animation duration between steps. Also requires a css style override. Refer to CSS section
showHeadertrueShows one header button for each step with active state style for the current step
showDeletefalseAdds a delete button and sends the 'deleteAction' on click
submitActionThe action that is sent when last next button (Finish) is clicked
cancelActionThe action that is sent when the first previous button (Cancel) is clicked
deleteActionThe action that is sent when the delete button is clicked
wizardShowNextSteptrueFlag to switch to the next step after performing async operation
wizardStepChangeActionThe action that is sent if a step has an async action
showWelltrueAdds the bootstrap 'well' class to the component
buttonLabels{'nextLabel':'Next', 'finishLabel':'Finish', 'cancelLabel':'Cancel', 'prevLabel':'Previous'}The labels for the 4 button states

CSS

Use the following classes to override animation styles:

.panel-wrapper {
    &.animating {
        .exit, .enter {
            -webkit-transition: all .7s ease-in-out;
            -ms-transition: all .7s ease-in-out;
            transition: all .7s ease-in-out;
        }
    }
}

By default the addon adds the bootstrap 'well' class to the main component. To remove the class set 'showWell' to false.

<EmberCliWizard @showWell={{false}} />

To override the default styles of the wizard steps, use the following classes:

.panel-wrapper {
    height: 450px;
    background-color: #ececec;
}

Async

To perform an async operation after an individual step, use the 'hasAction' property in the wizardData config and pass in the 'wizardShowNextStep' and 'wizardStepChangeAction' values.

//js

wizardData: [
    {'step_id': 1, 'header_label': '1. First Step', 'hasAction': true},
    {'step_id': 2, 'header_label': '2. Second Step'},
    {'step_id': 3, 'header_label': '3. Third Step'}
]

wizardShowNextStep: true,

actions: {

    wizardStepChanged(wizardStep) {
        if (wizardStep.step_id === 1) {
            Ember.run.later(() => {
                this.set('wizardShowNextStep', true);                    
            }, 2000);
        }
    }

}
//hbs

<EmberCliWizard
    @wizardData={{this.wizardData}}
    @submitAction={{action "submitAction"}}
    @cancelAction={{action "cancelAction"}}
    @wizardShowNextStep={{this.wizardShowNextStep}}
    @wizardStepChangeAction={{action "wizardStepChanged"}}
    @animationDuration={{700}}
    as |currentState|
/>

Buttons

To customize the button labels, set the 'buttonLabels' hash

<EmberCliWizard @buttonLabels=this.customButtonLabels />
customButtonLabels: {
    nextLabel: 'Next',
    finishLabel: 'Finish',
    cancelLabel: 'Cancel',
    prevLabel: 'Previous'
},

Demo

http://ritesh83.github.io/ember-cli-wizard/#/basic-example

All examples are in the dummy app.

  • Clone this repo: git clone
  • Install packages: npm install && bower install
  • Run ember s
  • Visit the sample app at http://localhost:4200.