import { Directive, HostBinding, Inject, Input } from '@angular/core';
import { IGX_STEP_COMPONENT } from './stepper.common';
import * as i0 from "@angular/core";
import * as i1 from "./stepper.service";
/**
 * Allows a custom element to be added as an active step indicator.
 *
 * @igxModule IgxStepperModule
 * @igxTheme igx-stepper-theme
 * @igxKeywords stepper
 * @igxGroup Layouts
 *
 * @example
 * <igx-stepper>
 *     <ng-template igxStepActiveIndicator>
 *          <igx-icon>edit</igx-icon>
 *       </ng-template>
 * </igx-stepper>
 */
export class IgxStepActiveIndicatorDirective {
    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxStepActiveIndicatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
    static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.4", type: IgxStepActiveIndicatorDirective, isStandalone: true, selector: "[igxStepActiveIndicator]", ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxStepActiveIndicatorDirective, decorators: [{
            type: Directive,
            args: [{
                    selector: '[igxStepActiveIndicator]',
                    standalone: true
                }]
        }] });
/**
 * Allows a custom element to be added as a complete step indicator.
 *
 * @igxModule IgxStepperModule
 * @igxTheme igx-stepper-theme
 * @igxKeywords stepper
 * @igxGroup Layouts
 *
 * @example
 * <igx-stepper>
 *     <ng-template igxStepCompletedIndicator>
 *          <igx-icon>check</igx-icon>
 *       </ng-template>
 * </igx-stepper>
 */
export class IgxStepCompletedIndicatorDirective {
    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxStepCompletedIndicatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
    static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.4", type: IgxStepCompletedIndicatorDirective, isStandalone: true, selector: "[igxStepCompletedIndicator]", ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxStepCompletedIndicatorDirective, decorators: [{
            type: Directive,
            args: [{
                    selector: '[igxStepCompletedIndicator]',
                    standalone: true
                }]
        }] });
/**
 * Allows a custom element to be added as an invalid step indicator.
 *
 * @igxModule IgxStepperModule
 * @igxTheme igx-stepper-theme
 * @igxKeywords stepper
 * @igxGroup Layouts
 *
 * @example
 * <igx-stepper>
 *     <ng-template igxStepInvalidIndicator>
 *          <igx-icon>error</igx-icon>
 *       </ng-template>
 * </igx-stepper>
 */
export class IgxStepInvalidIndicatorDirective {
    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxStepInvalidIndicatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
    static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.4", type: IgxStepInvalidIndicatorDirective, isStandalone: true, selector: "[igxStepInvalidIndicator]", ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxStepInvalidIndicatorDirective, decorators: [{
            type: Directive,
            args: [{
                    selector: '[igxStepInvalidIndicator]',
                    standalone: true
                }]
        }] });
/**
 * Allows a custom element to be added as a step indicator.
 *
 * @igxModule IgxStepperModule
 * @igxTheme igx-stepper-theme
 * @igxKeywords stepper
 * @igxGroup Layouts
 *
 * @example
 * <igx-stepper>
 *     <igx-step>
 *         <igx-icon igxStepIndicator>home</igx-icon>
 *     </igx-step>
 * </igx-stepper>
 */
export class IgxStepIndicatorDirective {
    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxStepIndicatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
    static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.4", type: IgxStepIndicatorDirective, isStandalone: true, selector: "[igxStepIndicator]", ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxStepIndicatorDirective, decorators: [{
            type: Directive,
            args: [{
                    selector: '[igxStepIndicator]',
                    standalone: true
                }]
        }] });
/**
 * Allows a custom element to be added as a step title.
 *
 * @igxModule IgxStepperModule
 * @igxTheme igx-stepper-theme
 * @igxKeywords stepper
 * @igxGroup Layouts
 *
 * @example
 * <igx-stepper>
 *     <igx-step>
 *         <p igxStepTitle>Home</p>
 *     </igx-step>
 * </igx-stepper>
 */
export class IgxStepTitleDirective {
    constructor() {
        this.defaultClass = true;
    }
    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxStepTitleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
    static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.4", type: IgxStepTitleDirective, isStandalone: true, selector: "[igxStepTitle]", host: { properties: { "class.igx-stepper__step-title": "this.defaultClass" } }, ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxStepTitleDirective, decorators: [{
            type: Directive,
            args: [{
                    selector: '[igxStepTitle]',
                    standalone: true
                }]
        }], propDecorators: { defaultClass: [{
                type: HostBinding,
                args: ['class.igx-stepper__step-title']
            }] } });
/**
 * Allows a custom element to be added as a step subtitle.
 *
 * @igxModule IgxStepperModule
 * @igxTheme igx-stepper-theme
 * @igxKeywords stepper
 * @igxGroup Layouts
 *
 * @example
 * <igx-stepper>
 *     <igx-step>
 *         <p igxStepSubtitle>Home Subtitle</p>
 *     </igx-step>
 * </igx-stepper>
 */
export class IgxStepSubtitleDirective {
    constructor() {
        this.defaultClass = true;
    }
    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxStepSubtitleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
    static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.4", type: IgxStepSubtitleDirective, isStandalone: true, selector: "[igxStepSubtitle]", host: { properties: { "class.igx-stepper__step-subtitle": "this.defaultClass" } }, ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxStepSubtitleDirective, decorators: [{
            type: Directive,
            args: [{
                    selector: '[igxStepSubtitle]',
                    standalone: true
                }]
        }], propDecorators: { defaultClass: [{
                type: HostBinding,
                args: ['class.igx-stepper__step-subtitle']
            }] } });
/**
 * Allows a custom element to be added as a step content.
 *
 * @igxModule IgxStepperModule
 * @igxTheme igx-stepper-theme
 * @igxKeywords stepper
 * @igxGroup Layouts
 *
 * @example
 * <igx-stepper>
 *     <igx-step>
 *         <div igxStepContent>...</div>
 *     </igx-step>
 * </igx-stepper>
 */
export class IgxStepContentDirective {
    get target() {
        return this.step;
    }
    get stepId() {
        return this.target.id;
    }
    get tabIndex() {
        if (this._tabIndex !== null) {
            return this._tabIndex;
        }
        return this.stepperService.activeStep === this.target ? 0 : -1;
    }
    set tabIndex(val) {
        this._tabIndex = val;
    }
    constructor(step, stepperService, elementRef) {
        this.step = step;
        this.stepperService = stepperService;
        this.elementRef = elementRef;
        this.defaultClass = true;
        this.role = 'tabpanel';
        this.id = this.target.id.replace('step', 'content');
        this._tabIndex = null;
    }
    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxStepContentDirective, deps: [{ token: IGX_STEP_COMPONENT }, { token: i1.IgxStepperService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
    static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.4", type: IgxStepContentDirective, isStandalone: true, selector: "[igxStepContent]", inputs: { id: "id", tabIndex: "tabIndex" }, host: { properties: { "class.igx-stepper__step-content": "this.defaultClass", "attr.role": "this.role", "attr.aria-labelledby": "this.stepId", "attr.id": "this.id", "attr.tabindex": "this.tabIndex" } }, ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxStepContentDirective, decorators: [{
            type: Directive,
            args: [{
                    selector: '[igxStepContent]',
                    standalone: true
                }]
        }], ctorParameters: () => [{ type: undefined, decorators: [{
                    type: Inject,
                    args: [IGX_STEP_COMPONENT]
                }] }, { type: i1.IgxStepperService }, { type: i0.ElementRef }], propDecorators: { defaultClass: [{
                type: HostBinding,
                args: ['class.igx-stepper__step-content']
            }], role: [{
                type: HostBinding,
                args: ['attr.role']
            }], stepId: [{
                type: HostBinding,
                args: ['attr.aria-labelledby']
            }], id: [{
                type: HostBinding,
                args: ['attr.id']
            }, {
                type: Input
            }], tabIndex: [{
                type: HostBinding,
                args: ['attr.tabindex']
            }, {
                type: Input
            }] } });
//# sourceMappingURL=data:application/json;base64, 