{"version":3,"file":"ngx-ui-builder-stepper.mjs","sources":["../../../libs/ngx-ui-builder/stepper/src/component/stepper/stepper.component.ts","../../../libs/ngx-ui-builder/stepper/src/component/stepper/stepper.component.html","../../../libs/ngx-ui-builder/stepper/src/stepper.module.ts","../../../libs/ngx-ui-builder/stepper/src/ngx-ui-builder-stepper.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { NubStepperConfig } from '../../stepper.types';\nimport { FormGroup } from '@angular/forms';\n\ninterface StepperMetadata {\n  currentStep: {\n    idx: number;\n    name: string;\n    component?: any;\n  }\n}\n\n@Component({\n  selector: 'nub-stepper',\n  templateUrl: './stepper.component.html',\n  styleUrls: ['./stepper.component.css'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NubStepperComponent {\n  @Input() set configs(configs: NubStepperConfig) {\n    this.setConfigs(configs);\n  }\n\n  localConfigs: NubStepperConfig & StepperMetadata = {\n    formGroup: new FormGroup({}),\n    stepPosition: 'top',\n    isLinear: false,\n    currentStep: {\n      idx: 0,\n      name: '',\n      component: null,\n    },\n    stepOptions: [\n      {\n        name: 'Step 1',\n        component: null,\n      }\n    ],\n  };\n\n  constructor() { }\n\n  private setConfigs(configs: NubStepperConfig) {\n    // Combine configs and local configs\n    let currentStepIdx = 0;\n    if (configs.defaultStep) {\n      if (typeof configs.defaultStep === 'string') {\n        currentStepIdx = configs.stepOptions.findIndex(step => step.name === configs.defaultStep);\n      }\n    }\n    \n    this.localConfigs.currentStep = {\n      idx: currentStepIdx || 0,\n      name: configs.stepOptions[currentStepIdx].name,\n      component: configs.stepOptions[currentStepIdx].component,\n    };\n\n    this.localConfigs = { ...this.localConfigs, ...configs };\n  }\n\n  allowGoToStepAfter(idx: number) {\n    // Back step\n    if (idx <= this.localConfigs.currentStep.idx) {\n      return true;\n    }\n\n    // Check dependsOn\n    const dependsOn = this.localConfigs.stepOptions[idx].dependsOn;\n    if (!this.localConfigs.isLinear && dependsOn) {\n      if (typeof dependsOn === 'string') {\n        return this.localConfigs.formGroup.controls[dependsOn].valid;\n      } else {\n        return dependsOn.every(name => this.localConfigs.formGroup.controls[name].valid);\n      }\n    }\n\n    // Go ahead with isLinear\n    if (\n      idx > this.localConfigs.currentStep.idx\n      && (!this.localConfigs.isLinear || this.localConfigs.formGroup.controls[this.localConfigs.currentStep.name].valid)\n    ) {\n      return true;\n    }\n    \n    return false;\n  }\n\n  changeStep(idx: number) {\n    if (!this.allowGoToStepAfter(idx)) {\n      return;\n    }\n    this.localConfigs.currentStep = {\n      idx: idx,\n      name: this.localConfigs.stepOptions[idx].name,\n      component: this.localConfigs.stepOptions[idx].component,\n    };\n\n    // TODO: Should fire an event after change step. It contains current step infos\n  }\n\n\n  handleBack() {\n    this.changeStep(this.localConfigs.currentStep.idx - 1);\n  }\n\n  handleNext() {\n    if (this.localConfigs.isLinear && this.localConfigs.formGroup.controls[this.localConfigs.currentStep.name].invalid) {\n      return;\n    }\n\n    this.changeStep(this.localConfigs.currentStep.idx + 1);\n  }\n\n  calcContFlexDirection(): string {\n    switch (this.localConfigs.stepPosition) {\n      case 'top':\n        return 'column';\n      case 'bottom':\n        return 'column-reverse';\n      case 'left':\n        return 'row';\n      case 'right':\n        return 'row-reverse';\n      default:\n        return 'column';\n    }\n  }\n}\n","<section\n  class=\"stepper-container\"\n  [ngClass]=\"localConfigs.coverClass\"\n  [style.flex-direction]=\"calcContFlexDirection()\"\n  [formGroup]=\"localConfigs.formGroup\"\n>\n  <section\n    class=\"step-section\"\n    [class]=\"localConfigs.class || ''\"\n    [ngClass]=\"{ 'aside': calcContFlexDirection().includes('row') }\"\n  >\n    <ng-container *ngFor=\"let step of localConfigs.stepOptions; index as i\">\n      <div\n        class=\"step-header\"\n        [class]=\"step.stepClass || ''\"\n        [ngClass]=\"{\n          'active': localConfigs.currentStep.idx === i,\n          'disabled': !allowGoToStepAfter(i),\n        }\"\n        (click)=\"i !== localConfigs.currentStep.idx && changeStep(i)\"\n      >\n        <span class=\"step-number\">{{ i + 1 }}</span>\n        <h3 class=\"step-title\">{{step.title}}</h3>\n      </div>\n    </ng-container>\n  </section>\n  <section>\n    <section\n      class=\"step-component-section\"\n      [class]=\"localConfigs.stepOptions[localConfigs.currentStep.idx].class\"\n    >\n      <ng-container\n        *ngComponentOutlet=\"localConfigs.currentStep.component\"\n        [formGroupName]=\"localConfigs.currentStep.name\"\n      ></ng-container>\n    </section>\n    <section class=\"step-footer\" [ngClass]=\"localConfigs.footer?.class\">\n      <button\n        *ngIf=\"localConfigs.currentStep.idx !== 0\"\n        class=\"btn btn-back\"\n        type=\"button\"\n        (click)=\"handleBack()\"\n      >\n        {{ localConfigs.footer?.backTitle || 'Back' }}\n      </button>\n\n      <button\n        *ngIf=\"localConfigs.currentStep.idx !== (localConfigs.stepOptions.length - 1)\"\n        class=\"btn btn-next\"\n        type=\"button\"\n        [disabled]=\"!allowGoToStepAfter(localConfigs.currentStep.idx + 1)\"\n        (click)=\"handleNext()\"\n      >\n      {{ localConfigs.footer?.nextTitle || 'Next' }}\n      </button>\n    </section>\n  </section>\n</section>\n","import { NgModule } from '@angular/core';\nimport { NubStepperComponent } from './component/stepper/stepper.component';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    ReactiveFormsModule,\n  ],\n  declarations: [NubStepperComponent],\n  exports: [NubStepperComponent]\n})\nexport class NubStepperModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}