Giter Site home page Giter Site logo

ember-cli-wizard's Introduction

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

{{#ember-cli-wizard
    wizardData=wizardData
    submitAction='submitAction'
    cancelAction='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}}
{{/ember-cli-wizard}}

To use this addon with ember version < 2.3, use the 'wizard-step' component instead of 'currentState.step' (reason: ember versions below 2.3 do not support contextual components)

{{#ember-cli-wizard
    wizardData=wizardData
    submitAction='submitAction'
    cancelAction='cancelAction'
    as |currentState|
}}
    {{#wizard-step stepId="1" wizardCurrentState=currentState}}
        <p>Step 1</p>
    {{/wizard-step}}

    {{#wizard-step stepId="2" wizardCurrentState=currentState}}
        <p>Step 2</p>
    {{/wizard-step}}

    {{#wizard-step stepId="3" wizardCurrentState=currentState}}
        <p>Step 3</p>
    {{/wizard-step}}
{{/ember-cli-wizard}}
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 has a dependency on ember-bootstrap.

Note: The newer version (0.1.7) of this addon no longer brings in ember-bootstrap as a dependency on ember install. You need to install it separately. (Reason: A lot of projects already have bootstrap installed and hence run into build time merge errors.)

Follow the instructions here in order to include or exclude fonts and styles in your app: http://www.ember-bootstrap.com/#/getting-started

Options

Name Default Description
animate true Adds animation between wizard steps
animationDuration 300ms The animation duration between steps. Also requires a css style override. Refer to CSS section
showHeader true Shows one header button for each step with active state style for the current step
useRoundedNav false Change nav steps shape to circles instead of rectangles
headerStepsSizeClass col-xs-4 The css class to apply to each header nav step. Based on the number of steps, one may need to change the width and other styles of each step header
showDelete false Adds a delete button and sends the 'deleteAction' on click
submitAction The action that is sent when last next button (Finish) is clicked
cancelAction The action that is sent when the first previous button (Cancel) is clicked
deleteAction The action that is sent when the delete button is clicked
wizardShowNextStep true Flag to switch to the next step after performing async operation
wizardStepChangeAction The action that is sent if a step has an async action
showWell false Adds 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;
        }
    }
}

To add the bootstrap 'well' class to the main component, set 'showWell' to true.

{{#ember-cli-wizard
    showWell=true
}}

To use rounded nav steps, set 'useRoundedNav' to true.

{{#ember-cli-wizard
    useRoundedNav=true
}}

By default the addon sets the steps class to the bootstrap 'col-xs-4'. To change the width or other styles of the step, set the 'headerStepsSizeClass' to a custom css class.

{{#ember-cli-wizard
    headerStepsSizeClass="custom-header-steps"
}}

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

{{#ember-cli-wizard
    wizardData=wizardData
    submitAction="submitAction"
    cancelAction="cancelAction"
    wizardShowNextStep=wizardShowNextStep
    wizardStepChangeAction="wizardStepChanged"
    animationDuration=700
    as |currentState|
}}

Buttons

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

{{#ember-cli-wizard
    buttonLabels=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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.