Documentation v1.1.5

Preview

Overview

Stepper is an exclusive plugin of Craft for handling forms with multiple steps.

Usage

Stepper's CSS and Javascript files are bundled in the global style and scripts bundles and are globally included in all pages:
<link href="assets/css/style.bundle.css" rel="stylesheet" type="text/css"/>
<script src="assets/js/scripts.bundle.js"></script>

Initialization

  • Stepper does not come with its own custom CSS and it uses global input controls and related elements.
  • Stepper elements are defined with data-kt-stepper-* HTML attributes.
  • Stepper instances can be created programmatically. See below for more info.

Basic

Use .stepper and .stepper-pills classes to enable a basic form steps with title, number and icon elements:
1

Step 1

Description
2

Step 2

Description
3

Step 3

Description
4

Step 4

Description
Add .mark-completed class after .stepper-item to mark the step checked checked(Step 4) when it's active.
// Stepper lement
var element = document.querySelector("#kt_stepper_example_basic");

// Initialize Stepper
var stepper = new KTStepper(element);

// Handle next step
stepper.on("kt.stepper.next", function (stepper) {
    stepper.goNext(); // go next step
});

// Handle previous step
stepper.on("kt.stepper.previous", function (stepper) {
    stepper.goPrevious(); // go previous step
});
<!--begin::Stepper-->
<div class="stepper stepper-pills" id="kt_stepper_example_basic">
<!--begin::Nav-->
<div class="stepper-nav flex-center flex-wrap mb-10">
    <!--begin::Step 1-->
    <div class="stepper-item mx-8 my-4 current" data-kt-stepper-element="nav">
        <!--begin::Wrapper-->  
        <div class="stepper-wrapper d-flex align-items-center">
            <!--begin::Icon-->
            <div class="stepper-icon w-40px h-40px">
                <i class="stepper-check fas fa-check"></i>
                <span class="stepper-number">1</span>
            </div>
            <!--end::Icon-->

            <!--begin::Label-->
            <div class="stepper-label">
                <h3 class="stepper-title">
                    Step 1
                </h3>

                <div class="stepper-desc">
                    Description
                </div>
            </div>
            <!--end::Label-->
        </div>
        <!--end::Wrapper--> 

        <!--begin::Line-->
        <div class="stepper-line h-40px"></div>
        <!--end::Line-->     
    </div>
    <!--end::Step 1-->

    <!--begin::Step 2-->
    <div class="stepper-item mx-8 my-4" data-kt-stepper-element="nav">
        <!--begin::Wrapper-->  
        <div class="stepper-wrapper d-flex align-items-center">
             <!--begin::Icon-->
            <div class="stepper-icon w-40px h-40px">
                <i class="stepper-check fas fa-check"></i>
                <span class="stepper-number">2</span>
            </div>
            <!--begin::Icon-->

            <!--begin::Label-->
            <div class="stepper-label">
                <h3 class="stepper-title">
                    Step 2
                </h3>

                <div class="stepper-desc">
                    Description
                </div>
            </div>
            <!--end::Label-->
        </div>
        <!--end::Wrapper--> 

        <!--begin::Line-->
        <div class="stepper-line h-40px"></div>
        <!--end::Line-->                         
    </div>
    <!--end::Step 2-->

    <!--begin::Step 3-->
    <div class="stepper-item mx-8 my-4" data-kt-stepper-element="nav">
        <!--begin::Wrapper-->  
        <div class="stepper-wrapper d-flex align-items-center">
             <!--begin::Icon-->
            <div class="stepper-icon w-40px h-40px">
                <i class="stepper-check fas fa-check"></i>
                <span class="stepper-number">3</span>
            </div>
            <!--begin::Icon-->

            <!--begin::Label-->
            <div class="stepper-label">
                <h3 class="stepper-title">
                    Step 3
                </h3>

                <div class="stepper-desc">
                    Description
                </div>
            </div>
            <!--end::Label-->
        </div>
        <!--end::Wrapper--> 

        <!--begin::Line-->
        <div class="stepper-line h-40px"></div>
        <!--end::Line-->                          
    </div>
    <!--end::Step 3-->

    <!--begin::Step 4-->
    <div class="stepper-item mx-8 my-4" data-kt-stepper-element="nav">
        <!--begin::Wrapper-->  
        <div class="stepper-wrapper d-flex align-items-center">
             <!--begin::Icon-->
            <div class="stepper-icon w-40px h-40px">
                <i class="stepper-check fas fa-check"></i>
                <span class="stepper-number">4</span>
            </div>
            <!--begin::Icon-->

            <!--begin::Label-->
            <div class="stepper-label">
                <h3 class="stepper-title">
                    Step 4
                </h3>

                <div class="stepper-desc">
                    Description
                </div>
            </div>
            <!--end::Label-->
        </div>
        <!--end::Wrapper--> 

        <!--begin::Line-->
        <div class="stepper-line h-40px"></div>
        <!--end::Line-->                           
    </div>
    <!--end::Step 4-->
</div>
<!--end::Nav-->

    <!--begin::Form-->
    <form class="form w-lg-500px mx-auto" novalidate="novalidate" id="kt_stepper_example_basic_form">
        <!--begin::Group-->
        <div class="mb-5">
            <!--begin::Step 1-->
            <div class="flex-column current" data-kt-stepper-element="content">
                <!--begin::Input group-->
                <div class="fv-row mb-10">
                    <!--begin::Label-->
                    <label class="form-label">Example Label 1</label>
                    <!--end::Label-->

                    <!--begin::Input-->
                    <input type="text" class="form-control form-control-solid" name="input1" placeholder="" value=""/>
                    <!--end::Input-->
                </div>
                <!--end::Input group-->

                <!--begin::Input group-->
                <div class="fv-row mb-10">
                    <!--begin::Label-->
                    <label class="form-label">Example Label 2</label>
                    <!--end::Label-->

                    <!--begin::Input-->
                    <input type="text" class="form-control form-control-solid" name="input2" placeholder="" value=""/>
                    <!--end::Input-->
                </div>
                <!--end::Input group-->

                <!--begin::Input group-->
                <div class="fv-row mb-10">
                    <!--begin::Label-->
                    <label class="form-label">Example Label 3</label>
                    <!--end::Label-->

                    <!--begin::Switch-->
                    <label class="form-check form-switch form-check-custom form-check-solid">
                        <input class="form-check-input" type="checkbox" checked="checked" value="1"/>
                        <span class="form-check-label">
                            Switch
                        </span>
                    </label>
                    <!--end::Switch-->
                </div>
                <!--end::Input group-->                            
            </div>
            <!--begin::Step 1-->

            <!--begin::Step 1-->
            <div class="flex-column" data-kt-stepper-element="content">
                <!--begin::Input group-->
                <div class="fv-row mb-10">
                    <!--begin::Label-->
                    <label class="form-label">Example Label 1</label>
                    <!--end::Label-->

                    <!--begin::Input-->
                    <input type="text" class="form-control form-control-solid" name="input1" placeholder="" value=""/>
                    <!--end::Input-->
                </div>
                <!--end::Input group-->

                <!--begin::Input group-->
                <div class="fv-row mb-10">
                    <!--begin::Label-->
                    <label class="form-label">Example Label 2</label>
                    <!--end::Label-->

                    <!--begin::Input-->
                    <textarea class="form-control form-control-solid" rows="3" name="input2" placeholder=""></textarea>
                    <!--end::Input-->
                </div>
                <!--end::Input group-->

                <!--begin::Input group-->
                <div class="fv-row mb-10">
                    <!--begin::Label-->
                    <label class="form-label">Example Label 3</label>
                    <!--end::Label-->

                    <!--begin::Input-->
                    <label class="form-check form-check-custom form-check-solid">
                        <input class="form-check-input" checked="checked" type="checkbox" value="1"/>
                        <span class="form-check-label">
                            Checkbox
                        </span>
                    </label>
                    <!--end::Input-->
                </div>
                <!--end::Input group-->
            </div>
            <!--begin::Step 1-->

            <!--begin::Step 1-->
            <div class="flex-column" data-kt-stepper-element="content">
                <!--begin::Input group-->
                <div class="fv-row mb-10">
                    <!--begin::Label-->
                    <label class="form-label d-flex align-items-center">
                        <span class="required">Input 1</span>
                        <i class="fas fa-exclamation-circle ms-2 fs-7" data-bs-toggle="tooltip" title="Example tooltip"></i>
                    </label>
                    <!--end::Label-->

                    <!--begin::Input-->
                    <input type="text" class="form-control form-control-solid" name="input1" placeholder="" value=""/>
                    <!--end::Input-->
                </div>
                <!--end::Input group-->

                <!--begin::Input group-->
                <div class="fv-row mb-10">
                    <!--begin::Label-->
                    <label class="form-label">
                        Input 2
                    </label>
                    <!--end::Label-->

                    <!--begin::Input-->
                    <input type="text" class="form-control form-control-solid" name="input2" placeholder="" value=""/>
                    <!--end::Input-->
                </div>
                <!--end::Input group-->
            </div>
            <!--begin::Step 1-->

            <!--begin::Step 1-->
            <div class="flex-column" data-kt-stepper-element="content">
                <!--begin::Input group-->
                <div class="fv-row mb-10">
                    <!--begin::Label-->
                    <label class="form-label d-flex align-items-center">
                        <span class="required">Input 1</span>
                        <i class="fas fa-exclamation-circle ms-2 fs-7" data-bs-toggle="tooltip" title="Example tooltip"></i>
                    </label>
                    <!--end::Label-->

                    <!--begin::Input-->
                    <input type="text" class="form-control form-control-solid" name="input1" placeholder="" value=""/>
                    <!--end::Input-->
                </div>
                <!--end::Input group-->

                <!--begin::Input group-->
                <div class="fv-row mb-10">
                    <!--begin::Label-->
                    <label class="form-label">
                        Input 2
                    </label>
                    <!--end::Label-->

                    <!--begin::Input-->
                    <input type="text" class="form-control form-control-solid" name="input2" placeholder="" value=""/>
                    <!--end::Input-->
                </div>
                <!--end::Input group-->

                <!--begin::Input group-->
                <div class="fv-row mb-10">
                    <!--begin::Label-->
                    <label class="form-label">
                        Input 3
                    </label>
                    <!--end::Label-->

                    <!--begin::Input-->
                    <input type="text" class="form-control form-control-solid" name="input3" placeholder="" value=""/>
                    <!--end::Input-->
                </div>
                <!--end::Input group-->
            </div>
            <!--begin::Step 1-->
        </div>
        <!--end::Group-->

        <!--begin::Actions-->
        <div class="d-flex flex-stack">
            <!--begin::Wrapper-->
            <div class="me-2">
                <button type="button" class="btn btn-light btn-active-light-primary" data-kt-stepper-action="previous">
                    Back
                </button>
            </div>
            <!--end::Wrapper-->

            <!--begin::Wrapper-->
            <div>
                <button type="button" class="btn btn-primary" data-kt-stepper-action="submit">
                    <span class="indicator-label">
                        Submit
                    </span>
                    <span class="indicator-progress">
                        Please wait... <span class="spinner-border spinner-border-sm align-middle ms-2"></span>
                    </span>
                </button>

                <button type="button" class="btn btn-primary" data-kt-stepper-action="next">
                    Continue
                </button>
            </div>
            <!--end::Wrapper-->
        </div>
        <!--end::Actions-->
    </form>
    <!--end::Form-->
</div>
<!--end::Stepper-->

Vertical

Use .stepper-column class to enable a stepper with vertical navigation layout:
1

Step 1

Description
2

Step 2

Description
3

Step 3

Description
4

Step 4

Description
Add .mark-completed class after .stepper-item to mark the step checked checked(Step 4) when it's active.
// Stepper lement
var element = document.querySelector("#kt_stepper_example_vertical");

// Initialize Stepper
var stepper = new KTStepper(element);

// Handle next step
stepper.on("kt.stepper.next", function (stepper) {
    stepper.goNext(); // go next step
});

// Handle previous step
stepper.on("kt.stepper.previous", function (stepper) {
    stepper.goPrevious(); // go previous step
});
<!--begin::Stepper-->
<div class="stepper stepper-pills stepper-column d-flex flex-column flex-lg-row" id="kt_stepper_example_vertical">
    <!--begin::Aside-->
    <div class="d-flex flex-row-auto w-100 w-lg-300px">
    <!--begin::Nav-->
    <div class="stepper-nav flex-cente">
        <!--begin::Step 1-->
        <div class="stepper-item me-5 current" data-kt-stepper-element="nav">
            <!--begin::Wrapper-->  
            <div class="stepper-wrapper d-flex align-items-center">
                <!--begin::Icon-->
                <div class="stepper-icon w-40px h-40px">
                    <i class="stepper-check fas fa-check"></i>
                    <span class="stepper-number">1</span>
                </div>
                <!--end::Icon-->

                <!--begin::Label-->
                <div class="stepper-label">
                    <h3 class="stepper-title">
                        Step 1
                    </h3>

                    <div class="stepper-desc">
                        Description
                    </div>
                </div>
                <!--end::Label-->
            </div>
            <!--end::Wrapper--> 

            <!--begin::Line-->
            <div class="stepper-line h-40px"></div>
            <!--end::Line-->                               
        </div>
        <!--end::Step 1-->

        <!--begin::Step 2-->
        <div class="stepper-item me-5" data-kt-stepper-element="nav">
            <!--begin::Wrapper-->  
            <div class="stepper-wrapper d-flex align-items-center">
                <!--begin::Icon-->
                <div class="stepper-icon w-40px h-40px">
                    <i class="stepper-check fas fa-check"></i>
                    <span class="stepper-number">2</span>
                </div>
                <!--begin::Icon-->

                <!--begin::Label-->
                <div class="stepper-label">
                    <h3 class="stepper-title">
                        Step 2
                    </h3>

                    <div class="stepper-desc">
                        Description
                    </div>
                </div>
                <!--end::Label-->
            </div>
            <!--end::Wrapper--> 

            <!--begin::Line-->
            <div class="stepper-line h-40px"></div>
            <!--end::Line-->                              
        </div>
        <!--end::Step 2-->

        <!--begin::Step 3-->
        <div class="stepper-item me-5" data-kt-stepper-element="nav">
            <!--begin::Wrapper-->  
            <div class="stepper-wrapper d-flex align-items-center">
                <!--begin::Icon-->
                <div class="stepper-icon w-40px h-40px">
                    <i class="stepper-check fas fa-check"></i>
                    <span class="stepper-number">3</span>
                </div>
                <!--begin::Icon-->

                <!--begin::Label-->
                <div class="stepper-label">
                    <h3 class="stepper-title">
                        Step 3
                    </h3>

                    <div class="stepper-desc">
                        Description
                    </div>
                </div>
                <!--end::Label-->
            </div>
            <!--end::Wrapper--> 

            <!--begin::Line-->
            <div class="stepper-line h-40px"></div>
            <!--end::Line-->                              
        </div>
        <!--end::Step 3-->

        <!--begin::Step 4-->
        <div class="stepper-item me-5" data-kt-stepper-element="nav">
            <!--begin::Wrapper-->  
            <div class="stepper-wrapper d-flex align-items-center">
                <!--begin::Icon-->
                <div class="stepper-icon w-40px h-40px">
                    <i class="stepper-check fas fa-check"></i>
                    <span class="stepper-number">4</span>
                </div>
                <!--begin::Icon-->

                <!--begin::Label-->
                <div class="stepper-label">
                    <h3 class="stepper-title">
                        Step 4
                    </h3>

                    <div class="stepper-desc">
                        Description
                    </div>
                </div>
                <!--end::Label-->
            </div>
            <!--end::Wrapper-->                            
        </div>
        <!--end::Step 4-->
    </div>
    <!--end::Nav-->
    </div>

    <!--begin::Content-->
    <div class="flex-row-fluid">
        <!--begin::Form-->
        <form class="form w-lg-500px mx-auto" novalidate="novalidate">
            <!--begin::Group-->
            <div class="mb-5">
                <!--begin::Step 1-->
                <div class="flex-column current" data-kt-stepper-element="content">
                    <!--begin::Input group-->
                    <div class="fv-row mb-10">
                        <!--begin::Label-->
                        <label class="form-label">Example Label 1</label>
                        <!--end::Label-->

                        <!--begin::Input-->
                        <input type="text" class="form-control form-control-solid" name="input1" placeholder="" value=""/>
                        <!--end::Input-->
                    </div>
                    <!--end::Input group-->

                    <!--begin::Input group-->
                    <div class="fv-row mb-10">
                        <!--begin::Label-->
                        <label class="form-label">Example Label 2</label>
                        <!--end::Label-->

                        <!--begin::Input-->
                        <input type="text" class="form-control form-control-solid" name="input2" placeholder="" value=""/>
                        <!--end::Input-->
                    </div>
                    <!--end::Input group-->

                    <!--begin::Input group-->
                    <div class="fv-row mb-10">
                        <!--begin::Label-->
                        <label class="form-label">Example Label 3</label>
                        <!--end::Label-->

                        <!--begin::Switch-->
                        <label class="form-check form-switch form-check-custom form-check-solid">
                            <input class="form-check-input" type="checkbox" checked="checked" value="1"/>
                            <span class="form-check-label">
                                Switch
                            </span>
                        </label>
                        <!--end::Switch-->
                    </div>
                    <!--end::Input group-->                            
                </div>
                <!--begin::Step 1-->

                <!--begin::Step 1-->
                <div class="flex-column" data-kt-stepper-element="content">
                <!--begin::Input group-->
                    <div class="fv-row mb-10">
                        <!--begin::Label-->
                        <label class="form-label">Example Label 1</label>
                        <!--end::Label-->

                        <!--begin::Input-->
                        <input type="text" class="form-control form-control-solid" name="input1" placeholder="" value=""/>
                        <!--end::Input-->
                    </div>
                    <!--end::Input group-->

                    <!--begin::Input group-->
                    <div class="fv-row mb-10">
                        <!--begin::Label-->
                        <label class="form-label">Example Label 2</label>
                        <!--end::Label-->

                        <!--begin::Input-->
                        <textarea class="form-control form-control-solid" rows="3" name="input2" placeholder=""></textarea>
                        <!--end::Input-->
                    </div>
                    <!--end::Input group-->

                    <!--begin::Input group-->
                    <div class="fv-row mb-10">
                        <!--begin::Label-->
                        <label class="form-label">Example Label 3</label>
                        <!--end::Label-->

                        <!--begin::Input-->
                        <label class="form-check form-check-custom form-check-solid">
                            <input class="form-check-input" checked="checked" type="checkbox" value="1"/>
                            <span class="form-check-label">
                                Checkbox
                            </span>
                        </label>
                        <!--end::Input-->
                    </div>
                    <!--end::Input group-->
                </div>
                <!--begin::Step 1-->

                <!--begin::Step 1-->
                <div class="flex-column" data-kt-stepper-element="content">
                    <!--begin::Input group-->
                    <div class="fv-row mb-10">
                        <!--begin::Label-->
                        <label class="form-label d-flex align-items-center">
                            <span class="required">Input 1</span>
                            <i class="fas fa-exclamation-circle ms-2 fs-7" data-bs-toggle="tooltip" title="Example tooltip"></i>
                        </label>
                        <!--end::Label-->

                        <!--begin::Input-->
                        <input type="text" class="form-control form-control-solid" name="input1" placeholder="" value=""/>
                        <!--end::Input-->
                    </div>
                    <!--end::Input group-->

                    <!--begin::Input group-->
                    <div class="fv-row mb-10">
                        <!--begin::Label-->
                        <label class="form-label">
                            Input 2
                        </label>
                        <!--end::Label-->

                        <!--begin::Input-->
                        <input type="text" class="form-control form-control-solid" name="input2" placeholder="" value=""/>
                        <!--end::Input-->
                    </div>
                    <!--end::Input group-->
                </div>
                <!--begin::Step 1-->

                <!--begin::Step 1-->
                <div class="flex-column" data-kt-stepper-element="content">
                    <!--begin::Input group-->
                    <div class="fv-row mb-10">
                        <!--begin::Label-->
                        <label class="form-label d-flex align-items-center">
                            <span class="required">Input 1</span>
                            <i class="fas fa-exclamation-circle ms-2 fs-7" data-bs-toggle="tooltip" title="Example tooltip"></i>
                        </label>
                        <!--end::Label-->

                        <!--begin::Input-->
                        <input type="text" class="form-control form-control-solid" name="input1" placeholder="" value=""/>
                        <!--end::Input-->
                    </div>
                    <!--end::Input group-->

                    <!--begin::Input group-->
                    <div class="fv-row mb-10">
                        <!--begin::Label-->
                        <label class="form-label">
                            Input 2
                        </label>
                        <!--end::Label-->

                        <!--begin::Input-->
                        <input type="text" class="form-control form-control-solid" name="input2" placeholder="" value=""/>
                        <!--end::Input-->
                    </div>
                    <!--end::Input group-->

                    <!--begin::Input group-->
                    <div class="fv-row mb-10">
                        <!--begin::Label-->
                        <label class="form-label">
                            Input 3
                        </label>
                        <!--end::Label-->

                        <!--begin::Input-->
                        <input type="text" class="form-control form-control-solid" name="input3" placeholder="" value=""/>
                        <!--end::Input-->
                    </div>
                    <!--end::Input group-->
                </div>
                <!--begin::Step 1-->
            </div>
            <!--end::Group-->

            <!--begin::Actions-->
            <div class="d-flex flex-stack">
                <!--begin::Wrapper-->
                <div class="me-2">
                    <button type="button" class="btn btn-light btn-active-light-primary" data-kt-stepper-action="previous">
                        Back
                    </button>
                </div>
                <!--end::Wrapper-->

                <!--begin::Wrapper-->
                <div>
                    <button type="button" class="btn btn-primary" data-kt-stepper-action="submit">
                        <span class="indicator-label">
                            Submit
                        </span>
                        <span class="indicator-progress">
                            Please wait... <span class="spinner-border spinner-border-sm align-middle ms-2"></span>
                        </span>
                    </button>

                    <button type="button" class="btn btn-primary" data-kt-stepper-action="next">
                        Continue
                    </button>
                </div>
                <!--end::Wrapper-->
            </div>
            <!--end::Actions-->
        </form>
        <!--end::Form-->
    </div>
</div>
<!--end::Stepper-->

Clickable Navigation

Add data-kt-stepper-action="step" attribute to Stepper navigation links to setup a Stepper with clickable navigation:
1

Step 1

Description
2

Step 2

Description
3

Step 3

Description
4

Step 4

Description
// Stepper lement
var element = document.querySelector("#kt_stepper_example_clickable");

// Initialize Stepper
var stepper = new KTStepper(element);

// Handle navigation click
stepper.on("kt.stepper.click", function (stepper) {
    stepper.goTo(stepper.getClickedStepIndex()); // go to clicked step
});

// Handle next step
stepper.on("kt.stepper.next", function (stepper) {
    stepper.goNext(); // go next step
});

// Handle previous step
stepper.on("kt.stepper.previous", function (stepper) {
    stepper.goPrevious(); // go previous step
});
<!--begin::Stepper-->
<div class="stepper stepper-pills" id="kt_stepper_example_clickable">
<!--begin::Nav-->
<div class="stepper-nav flex-center flex-wrap mb-10">
    <!--begin::Step 1-->
    <div class="stepper-item mx-8 my-4 current" data-kt-stepper-element="nav" data-kt-stepper-action="step">
        <!--begin::Wrapper-->  
        <div class="stepper-wrapper d-flex align-items-center">
            <!--begin::Icon-->
            <div class="stepper-icon w-40px h-40px">
                <i class="stepper-check fas fa-check"></i>
                <span class="stepper-number">1</span>
            </div>
            <!--end::Icon-->

            <!--begin::Label-->
            <div class="stepper-label">
                <h3 class="stepper-title">
                    Step 1
                </h3>

                <div class="stepper-desc">
                    Description
                </div>
            </div>
            <!--end::Label-->
        </div>
        <!--end::Wrapper--> 

        <!--begin::Line-->
        <div class="stepper-line h-40px"></div>
        <!--end::Line-->                           
    </div>
    <!--end::Step 1-->

    <!--begin::Step 2-->
    <div class="stepper-item mx-8 my-4" data-kt-stepper-element="nav" data-kt-stepper-action="step">
        <!--begin::Wrapper-->  
        <div class="stepper-wrapper d-flex align-items-center">
             <!--begin::Icon-->
            <div class="stepper-icon w-40px h-40px">
                <i class="stepper-check fas fa-check"></i>
                <span class="stepper-number">2</span>
            </div>
            <!--begin::Icon-->

            <!--begin::Label-->
            <div class="stepper-label">
                <h3 class="stepper-title">
                    Step 2
                </h3>

                <div class="stepper-desc">
                    Description
                </div>
            </div>
            <!--end::Label-->
        </div>
        <!--end::Wrapper--> 

        <!--begin::Line-->
        <div class="stepper-line h-40px"></div>
        <!--end::Line-->                         
    </div>
    <!--end::Step 2-->

    <!--begin::Step 3-->
    <div class="stepper-item mx-8 my-4" data-kt-stepper-element="nav" data-kt-stepper-action="step">
       <!--begin::Wrapper-->  
        <div class="stepper-wrapper d-flex align-items-center">
            <!--begin::Icon-->
            <div class="stepper-icon w-40px h-40px">
                <i class="stepper-check fas fa-check"></i>
                <span class="stepper-number">3</span>
            </div>
            <!--begin::Icon-->

            <!--begin::Label-->
            <div class="stepper-label">
                <h3 class="stepper-title">
                    Step 3
                </h3>

                <div class="stepper-desc">
                    Description
                </div>
            </div>
            <!--end::Label-->
        </div>
        <!--end::Wrapper--> 

        <!--begin::Line-->
        <div class="stepper-line h-40px"></div>
        <!--end::Line-->                      
    </div>
    <!--end::Step 3-->

    <!--begin::Step 4-->
    <div class="stepper-item mx-8 my-4" data-kt-stepper-element="nav" data-kt-stepper-action="step">
        <!--begin::Wrapper-->  
        <div class="stepper-wrapper d-flex align-items-center">
            <!--begin::Icon-->
            <div class="stepper-icon w-40px h-40px">
                <i class="stepper-check fas fa-check"></i>
                <span class="stepper-number">4</span>
            </div>
            <!--begin::Icon-->

            <!--begin::Label-->
            <div class="stepper-label">
                <h3 class="stepper-title">
                    Step 4
                </h3>

                <div class="stepper-desc">
                    Description
                </div>
            </div>
            <!--end::Label-->
        </div>
        <!--end::Wrapper-->                         
    </div>
    <!--end::Step 4-->
</div>
<!--end::Nav-->

    <!--begin::Form-->
    <form class="form w-lg-500px mx-auto" novalidate="novalidate" id="kt_stepper_example_basic_form">
        <!--begin::Group-->
        <div class="mb-5">
            <!--begin::Step 1-->
            <div class="flex-column current" data-kt-stepper-element="content">
                <!--begin::Input group-->
                <div class="fv-row mb-10">
                    <!--begin::Label-->
                    <label class="form-label">Example Label 1</label>
                    <!--end::Label-->

                    <!--begin::Input-->
                    <input type="text" class="form-control form-control-solid" name="input1" placeholder="" value=""/>
                    <!--end::Input-->
                </div>
                <!--end::Input group-->

                <!--begin::Input group-->
                <div class="fv-row mb-10">
                    <!--begin::Label-->
                    <label class="form-label">Example Label 2</label>
                    <!--end::Label-->

                    <!--begin::Input-->
                    <input type="text" class="form-control form-control-solid" name="input2" placeholder="" value=""/>
                    <!--end::Input-->
                </div>
                <!--end::Input group-->

                <!--begin::Input group-->
                <div class="fv-row mb-10">
                    <!--begin::Label-->
                    <label class="form-label">Example Label 3</label>
                    <!--end::Label-->

                    <!--begin::Switch-->
                    <label class="form-check form-switch form-check-custom form-check-solid">
                        <input class="form-check-input" type="checkbox" checked="checked" value="1"/>
                        <span class="form-check-label">
                            Switch
                        </span>
                    </label>
                    <!--end::Switch-->
                </div>
                <!--end::Input group-->                            
            </div>
            <!--begin::Step 1-->

            <!--begin::Step 1-->
            <div class="flex-column" data-kt-stepper-element="content">
                <!--begin::Input group-->
                <div class="fv-row mb-10">
                    <!--begin::Label-->
                    <label class="form-label">Example Label 1</label>
                    <!--end::Label-->

                    <!--begin::Input-->
                    <input type="text" class="form-control form-control-solid" name="input1" placeholder="" value=""/>
                    <!--end::Input-->
                </div>
                <!--end::Input group-->

                <!--begin::Input group-->
                <div class="fv-row mb-10">
                    <!--begin::Label-->
                    <label class="form-label">Example Label 2</label>
                    <!--end::Label-->

                    <!--begin::Input-->
                    <textarea class="form-control form-control-solid" rows="3" name="input2" placeholder=""></textarea>
                    <!--end::Input-->
                </div>
                <!--end::Input group-->

                <!--begin::Input group-->
                <div class="fv-row mb-10">
                    <!--begin::Label-->
                    <label class="form-label">Example Label 3</label>
                    <!--end::Label-->

                    <!--begin::Input-->
                    <label class="form-check form-check-custom form-check-solid">
                        <input class="form-check-input" checked="checked" type="checkbox" value="1"/>
                        <span class="form-check-label">
                            Checkbox
                        </span>
                    </label>
                    <!--end::Input-->
                </div>
                <!--end::Input group-->
            </div>
            <!--begin::Step 1-->

            <!--begin::Step 1-->
            <div class="flex-column" data-kt-stepper-element="content">
                <!--begin::Input group-->
                <div class="fv-row mb-10">
                    <!--begin::Label-->
                    <label class="form-label d-flex align-items-center">
                        <span class="required">Input 1</span>
                        <i class="fas fa-exclamation-circle ms-2 fs-7" data-bs-toggle="tooltip" title="Example tooltip"></i>
                    </label>
                    <!--end::Label-->

                    <!--begin::Input-->
                    <input type="text" class="form-control form-control-solid" name="input1" placeholder="" value=""/>
                    <!--end::Input-->
                </div>
                <!--end::Input group-->

                <!--begin::Input group-->
                <div class="fv-row mb-10">
                    <!--begin::Label-->
                    <label class="form-label">
                        Input 2
                    </label>
                    <!--end::Label-->

                    <!--begin::Input-->
                    <input type="text" class="form-control form-control-solid" name="input2" placeholder="" value=""/>
                    <!--end::Input-->
                </div>
                <!--end::Input group-->
            </div>
            <!--begin::Step 1-->

            <!--begin::Step 1-->
            <div class="flex-column" data-kt-stepper-element="content">
                <!--begin::Input group-->
                <div class="fv-row mb-10">
                    <!--begin::Label-->
                    <label class="form-label d-flex align-items-center">
                        <span class="required">Input 1</span>
                        <i class="fas fa-exclamation-circle ms-2 fs-7" data-bs-toggle="tooltip" title="Example tooltip"></i>
                    </label>
                    <!--end::Label-->

                    <!--begin::Input-->
                    <input type="text" class="form-control form-control-solid" name="input1" placeholder="" value=""/>
                    <!--end::Input-->
                </div>
                <!--end::Input group-->

                <!--begin::Input group-->
                <div class="fv-row mb-10">
                    <!--begin::Label-->
                    <label class="form-label">
                        Input 2
                    </label>
                    <!--end::Label-->

                    <!--begin::Input-->
                    <input type="text" class="form-control form-control-solid" name="input2" placeholder="" value=""/>
                    <!--end::Input-->
                </div>
                <!--end::Input group-->

                <!--begin::Input group-->
                <div class="fv-row mb-10">
                    <!--begin::Label-->
                    <label class="form-label">
                        Input 3
                    </label>
                    <!--end::Label-->

                    <!--begin::Input-->
                    <input type="text" class="form-control form-control-solid" name="input3" placeholder="" value=""/>
                    <!--end::Input-->
                </div>
                <!--end::Input group-->
            </div>
            <!--begin::Step 1-->
        </div>
        <!--end::Group-->

        <!--begin::Actions-->
        <div class="d-flex flex-stack">
            <!--begin::Wrapper-->
            <div class="me-2">
                <button type="button" class="btn btn-light btn-active-light-primary" data-kt-stepper-action="previous">
                    Back
                </button>
            </div>
            <!--end::Wrapper-->

            <!--begin::Wrapper-->
            <div>
                <button type="button" class="btn btn-primary" data-kt-stepper-action="submit">
                    <span class="indicator-label">
                        Submit
                    </span>
                    <span class="indicator-progress">
                        Please wait... <span class="spinner-border spinner-border-sm align-middle ms-2"></span>
                    </span>
                </button>

                <button type="button" class="btn btn-primary" data-kt-stepper-action="next">
                    Continue
                </button>
            </div>
            <!--end::Wrapper-->
        </div>
        <!--end::Actions-->
    </form>
    <!--end::Form-->
</div>
<!--end::Stepper-->

Modal

Click the below toggle button to see a modal with a stepper.
// Stepper lement
var element = document.querySelector("#kt_stepper_example_modal");

// Initialize Stepper
var stepper = new KTStepper(element);

// Handle next step
stepper.on("kt.stepper.next", function () {
    stepper.goNext(); // go next step
});

// Handle previous step
stepper.on("kt.stepper.previous", function () {
    stepper.goPrevious(); // go previous step
});
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#kt_modal_1">
    Launch demo modal
</button>

<div class="modal fade" tabindex="-1" id="kt_modal_1">
    <div class="modal-dialog mw-800px">
        <form class="modal-content stepper stepper-pills" id="kt_stepper_example_modal">
            <div class="modal-header px-10">
                <h3 class="modal-title">Modal title</h3>
                
                <!--begin::Close-->
                <div class="btn btn-icon btn-sm btn-active-light-primary ms-2" data-bs-dismiss="modal" aria-label="Close">
                    <i class="ki-duotone ki-cross fs-1"><span class="path1"></span><span class="path2"></span></i>
                </div>
                <!--end::Close-->
            </div>

            <div class="modal-body px-10">
                <!--begin::Stepper-->
                <div>
                    <!--begin::Nav-->
                    <div class="stepper-nav flex-center flex-wrap mb-10">
                        <!--begin::Step 1-->
                        <div class="stepper-item mx-4 my-4 current" data-kt-stepper-element="nav">
                            <!--begin::Wrapper-->  
                            <div class="stepper-wrapper d-flex align-items-center">
                                <!--begin::Icon-->
                                <div class="stepper-icon w-40px h-40px">
                                    <i class="stepper-check fas fa-check"></i>
                                    <span class="stepper-number">1</span>
                                </div>
                                <!--end::Icon-->

                                <!--begin::Label-->
                                <div class="stepper-label">
                                    <h3 class="stepper-title">
                                        Step 1
                                    </h3>

                                    <div class="stepper-desc">
                                        Description
                                    </div>
                                </div>
                                <!--end::Label-->
                            </div>
                            <!--end::Wrapper--> 

                            <!--begin::Line-->
                            <div class="stepper-line h-40px"></div>
                            <!--end::Line-->     
                        </div>
                        <!--end::Step 1-->

                        <!--begin::Step 2-->
                        <div class="stepper-item mx-4 my-4" data-kt-stepper-element="nav">
                            <!--begin::Wrapper-->  
                            <div class="stepper-wrapper d-flex align-items-center">
                                <!--begin::Icon-->
                                <div class="stepper-icon w-40px h-40px">
                                    <i class="stepper-check fas fa-check"></i>
                                    <span class="stepper-number">2</span>
                                </div>
                                <!--begin::Icon-->

                                <!--begin::Label-->
                                <div class="stepper-label">
                                    <h3 class="stepper-title">
                                        Step 2
                                    </h3>

                                    <div class="stepper-desc">
                                        Description
                                    </div>
                                </div>
                                <!--end::Label-->
                            </div>
                            <!--end::Wrapper--> 

                            <!--begin::Line-->
                            <div class="stepper-line h-40px"></div>
                            <!--end::Line-->                         
                        </div>
                        <!--end::Step 2-->

                        <!--begin::Step 3-->
                        <div class="stepper-item mx-4 my-4" data-kt-stepper-element="nav">
                            <!--begin::Wrapper-->  
                            <div class="stepper-wrapper d-flex align-items-center">
                                <!--begin::Icon-->
                                <div class="stepper-icon w-40px h-40px">
                                    <i class="stepper-check fas fa-check"></i>
                                    <span class="stepper-number">3</span>
                                </div>
                                <!--begin::Icon-->

                                <!--begin::Label-->
                                <div class="stepper-label">
                                    <h3 class="stepper-title">
                                        Step 3
                                    </h3>

                                    <div class="stepper-desc">
                                        Description
                                    </div>
                                </div>
                                <!--end::Label-->
                            </div>
                            <!--end::Wrapper--> 

                            <!--begin::Line-->
                            <div class="stepper-line h-40px"></div>
                            <!--end::Line-->                          
                        </div>
                        <!--end::Step 3-->

                        <!--begin::Step 4-->
                        <div class="stepper-item mx-4 my-4" data-kt-stepper-element="nav">
                            <!--begin::Wrapper-->  
                            <div class="stepper-wrapper d-flex align-items-center">
                                <!--begin::Icon-->
                                <div class="stepper-icon w-40px h-40px">
                                    <i class="stepper-check fas fa-check"></i>
                                    <span class="stepper-number">4</span>
                                </div>
                                <!--begin::Icon-->

                                <!--begin::Label-->
                                <div class="stepper-label">
                                    <h3 class="stepper-title">
                                        Step 4
                                    </h3>

                                    <div class="stepper-desc">
                                        Description
                                    </div>
                                </div>
                                <!--end::Label-->
                            </div>
                            <!--end::Wrapper--> 

                            <!--begin::Line-->
                            <div class="stepper-line h-40px"></div>
                            <!--end::Line-->                           
                        </div>
                        <!--end::Step 4-->
                    </div>
                    <!--end::Nav-->

                    <!--begin::Group-->
                    <div class="px-20 mb-5 scroll-y mh-300px">
                        <!--begin::Step 1-->
                        <div class="flex-column current" data-kt-stepper-element="content">
                            <!--begin::Input group-->
                            <div class="fv-row mb-10">
                                <!--begin::Label-->
                                <label class="form-label">Example Label 1</label>
                                <!--end::Label-->

                                <!--begin::Input-->
                                <input type="text" class="form-control form-control-solid" name="input1" placeholder="" value=""/>
                                <!--end::Input-->
                            </div>
                            <!--end::Input group-->

                            <!--begin::Input group-->
                            <div class="fv-row mb-10">
                                <!--begin::Label-->
                                <label class="form-label">Example Label 2</label>
                                <!--end::Label-->

                                <!--begin::Input-->
                                <input type="text" class="form-control form-control-solid" name="input2" placeholder="" value=""/>
                                <!--end::Input-->
                            </div>
                            <!--end::Input group-->

                            <!--begin::Input group-->
                            <div class="fv-row mb-10">
                                <!--begin::Label-->
                                <label class="form-label">Example Label 3</label>
                                <!--end::Label-->

                                <!--begin::Switch-->
                                <label class="form-check form-switch form-check-custom form-check-solid">
                                    <input class="form-check-input" type="checkbox" checked="checked" value="1"/>
                                    <span class="form-check-label">
                                        Switch
                                    </span>
                                </label>
                                <!--end::Switch-->
                            </div>
                            <!--end::Input group-->                            
                        </div>
                        <!--begin::Step 1-->

                        <!--begin::Step 1-->
                        <div class="flex-column" data-kt-stepper-element="content">
                        <!--begin::Input group-->
                            <div class="fv-row mb-10">
                                <!--begin::Label-->
                                <label class="form-label">Example Label 1</label>
                                <!--end::Label-->

                                <!--begin::Input-->
                                <input type="text" class="form-control form-control-solid" name="input1" placeholder="" value=""/>
                                <!--end::Input-->
                            </div>
                            <!--end::Input group-->

                            <!--begin::Input group-->
                            <div class="fv-row mb-10">
                                <!--begin::Label-->
                                <label class="form-label">Example Label 2</label>
                                <!--end::Label-->

                                <!--begin::Input-->
                                <textarea class="form-control form-control-solid" rows="3" name="input2" placeholder=""></textarea>
                                <!--end::Input-->
                            </div>
                            <!--end::Input group-->

                            <!--begin::Input group-->
                            <div class="fv-row mb-10">
                                <!--begin::Label-->
                                <label class="form-label">Example Label 3</label>
                                <!--end::Label-->

                                <!--begin::Input-->
                                <label class="form-check form-check-custom form-check-solid">
                                    <input class="form-check-input" checked="checked" type="checkbox" value="1"/>
                                    <span class="form-check-label">
                                        Checkbox
                                    </span>
                                </label>
                                <!--end::Input-->
                            </div>
                            <!--end::Input group-->
                        </div>
                        <!--begin::Step 1-->

                        <!--begin::Step 1-->
                        <div class="flex-column" data-kt-stepper-element="content">
                            <!--begin::Input group-->
                            <div class="fv-row mb-10">
                                <!--begin::Label-->
                                <label class="form-label d-flex align-items-center">
                                    <span class="required">Input 1</span>
                                </label>
                                <!--end::Label-->

                                <!--begin::Input-->
                                <input type="text" class="form-control form-control-solid" name="input1" placeholder="" value=""/>
                                <!--end::Input-->
                            </div>
                            <!--end::Input group-->

                            <!--begin::Input group-->
                            <div class="fv-row mb-10">
                                <!--begin::Label-->
                                <label class="form-label">
                                    Input 2
                                </label>
                                <!--end::Label-->

                                <!--begin::Input-->
                                <input type="text" class="form-control form-control-solid" name="input2" placeholder="" value=""/>
                                <!--end::Input-->
                            </div>
                            <!--end::Input group-->
                        </div>
                        <!--begin::Step 1-->

                        <!--begin::Step 1-->
                        <div class="flex-column" data-kt-stepper-element="content">
                            <!--begin::Input group-->
                            <div class="fv-row mb-10">
                                <!--begin::Label-->
                                <label class="form-label d-flex align-items-center">
                                    <span class="required">Input 1</span>
                                    <i class="fas fa-exclamation-circle ms-2 fs-7" data-bs-toggle="tooltip" title="Example tooltip"></i>
                                </label>
                                <!--end::Label-->

                                <!--begin::Input-->
                                <input type="text" class="form-control form-control-solid" name="input1" placeholder="" value=""/>
                                <!--end::Input-->
                            </div>
                            <!--end::Input group-->

                            <!--begin::Input group-->
                            <div class="fv-row mb-10">
                                <!--begin::Label-->
                                <label class="form-label">
                                    Input 2
                                </label>
                                <!--end::Label-->

                                <!--begin::Input-->
                                <input type="text" class="form-control form-control-solid" name="input2" placeholder="" value=""/>
                                <!--end::Input-->
                            </div>
                            <!--end::Input group-->

                            <!--begin::Input group-->
                            <div class="fv-row mb-10">
                                <!--begin::Label-->
                                <label class="form-label">
                                    Input 3
                                </label>
                                <!--end::Label-->

                                <!--begin::Input-->
                                <input type="text" class="form-control form-control-solid" name="input3" placeholder="" value=""/>
                                <!--end::Input-->
                            </div>
                            <!--end::Input group-->
                        </div>
                        <!--begin::Step 1-->
                    </div>
                    <!--end::Group-->
                </div>
                <!--end::Stepper-->
            </div>

            <div class="modal-footer px-10 d-flex flex-stack">
                <!--begin::Wrapper-->
                <div class="me-2">
                    <button type="button" class="btn btn-light btn-active-light-primary" data-kt-stepper-action="previous">
                        Back
                    </button>
                </div>
                <!--end::Wrapper-->

                <!--begin::Wrapper-->
                <div>
                    <button type="button" class="btn btn-primary" data-kt-stepper-action="submit">
                        <span class="indicator-label">
                            Submit
                        </span>
                        <span class="indicator-progress">
                            Please wait... <span class="spinner-border spinner-border-sm align-middle ms-2"></span>
                        </span>
                    </button>

                    <button type="button" class="btn btn-primary" data-kt-stepper-action="next">
                        Continue
                    </button>
                </div>
                <!--end::Wrapper-->
            </div>
        </form>
    </div>
</div>

Markup Reference

For the sake of design abstraction Stepper does not depend on design structure with CSS classes. Instead, it defines it's dependant elements via HTML attributes explained in the below table:
Name Description
data-kt-stepper-element="nav" Represents a step's navigation indicator element that may contain of step title, description, icon and number.
data-kt-stepper-element="content" Represents a step content element that may contain of form elements.
data-kt-stepper-action="next" Represents a next button.
data-kt-stepper-action="previous" Represents a previous button.
data-kt-stepper-action="submit" Represents a submit button that is shown in final step.
data-kt-stepper-action="step" Enables clickable steps when set to stepper navigation links.
.current, .pending and .completed classes are applied to data-kt-stepper-element="nav" and data-kt-stepper-element="content" elements to highlight current, pending and competed step states.

Methods

The following are the Stepper's functionality methods for more control.
Name Description
KTStepper(DOMElement element, Object options) Constructs a stepper object by given DOM element and options. startIndex is starting steps index. Default value is startIndex: 1
var stepperEl = document.querySelector("#kt_stepper_example");
var options = {startIndex: 1};
var stepper = new KTStepper(stepperEl, options);
goTo(Integer index) Activates a step by given index. index is an integer value(e.g: 1, 2, 3 ...) that represents the step's order number.
stepper.goTo(index);
goNext() Activates next step.
stepper.goNext();
goPrevious() Activates previous step.
stepper.goPrevious();
goFirst() Activates the first step.
stepper.goFirst();
goLast() Activates the last step.
stepper.goLast();
getClickedStepIndex() Returns the clicked step index number as integer when stepper nav link is set with data-kt-stepper-action="step" attribute.
stepper.getClickedStepIndex();
getCurrentStepIndex() Returns the current step index number as integer.
stepper.getCurrentStepIndex();
getNextStepIndex() Returns the next step's index number as integer.
stepper.getNextStepIndex();
getPreviousStepIndex() Returns the previous step's index number as integer.
stepper.getPreviousStepIndex();
getElement() Returns the Stepper's attached DOM element.
var element = stepper.getElement();
destroy() Removes the component instance from element.
blockUI.destroy();
Static Methods
getInstance(DOMElement element) Get the Stepper instance created
var stepperElement = document.querySelector("#kt_stepper_example_1");
var stepper = KTStepper.getInstance(stepperElement);

Events

Below are few events for hooking into the Stepper functionality.
Event Type Description
kt.stepper.next This event fires on next navigation button click.
var stepperEl = document.querySelector("#kt_stepper_example");
var stepper = new KTStepper(stepperEl);
stepper.on("kt.stepper.next", function() {
    // console.log("kt.stepper.next event is fired");
});
kt.stepper.previous This event fires on previous navigation button click.
stepper.on("kt.stepper.previous", function() {
    // console.log("kt.stepper.previous event is fired");
});
kt.stepper.change This event fires before current step change.
stepper.on("kt.stepper.change", function() {
    // console.log("kt.stepper.change event is fired");
});
kt.stepper.changed This event fires after current step change.
stepper.on("kt.stepper.changed", function() {
    // console.log("kt.stepper.changed event is fired");
});
kt.stepper.click This event fires on clickable navigation link click.
stepper.on("kt.stepper.click", function() {
    stepper.goTo(stepper.getClickedStepIndex()); // go to clicked step
});
Preview Get Help Buy Now