ngx-ui-builder
Version:
Angular - Render component ui with configurations
1 lines • 11.2 kB
Source Map (JSON)
{"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":";;;;;;;AAYA,MAMa,mBAAmB,CAAA;IAC9B,IAAa,OAAO,CAAC,OAAyB,EAAA;AAC5C,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;KAC1B;AAmBD,IAAA,WAAA,GAAA;AAjBA,QAAA,IAAA,CAAA,YAAY,GAAuC;AACjD,YAAA,SAAS,EAAE,IAAI,SAAS,CAAC,EAAE,CAAC;AAC5B,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,WAAW,EAAE;AACX,gBAAA,GAAG,EAAE,CAAC;AACN,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,SAAS,EAAE,IAAI;AAChB,aAAA;AACD,YAAA,WAAW,EAAE;AACX,gBAAA;AACE,oBAAA,IAAI,EAAE,QAAQ;AACd,oBAAA,SAAS,EAAE,IAAI;AAChB,iBAAA;AACF,aAAA;SACF,CAAC;KAEe;AAET,IAAA,UAAU,CAAC,OAAyB,EAAA;;QAE1C,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,IAAI,OAAO,CAAC,WAAW,EAAE;AACvB,YAAA,IAAI,OAAO,OAAO,CAAC,WAAW,KAAK,QAAQ,EAAE;AAC3C,gBAAA,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;AAC3F,aAAA;AACF,SAAA;AAED,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG;YAC9B,GAAG,EAAE,cAAc,IAAI,CAAC;YACxB,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,IAAI;YAC9C,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,SAAS;SACzD,CAAC;AAEF,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,OAAO,EAAE,CAAC;KAC1D;AAED,IAAA,kBAAkB,CAAC,GAAW,EAAA;;QAE5B,IAAI,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,EAAE;AAC5C,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;;AAGD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;QAC/D,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,IAAI,SAAS,EAAE;AAC5C,YAAA,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;AACjC,gBAAA,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC;AAC9D,aAAA;AAAM,iBAAA;gBACL,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;AAClF,aAAA;AACF,SAAA;;QAGD,IACE,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG;gBACnC,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAClH;AACA,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KACd;AAED,IAAA,UAAU,CAAC,GAAW,EAAA;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE;YACjC,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG;AAC9B,YAAA,GAAG,EAAE,GAAG;YACR,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI;YAC7C,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,SAAS;SACxD,CAAC;;KAGH;IAGD,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;KACxD;IAED,UAAU,GAAA;QACR,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE;YAClH,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;KACxD;IAED,qBAAqB,GAAA;AACnB,QAAA,QAAQ,IAAI,CAAC,YAAY,CAAC,YAAY;AACpC,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,QAAQ,CAAC;AAClB,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,gBAAgB,CAAC;AAC1B,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,KAAK,CAAC;AACf,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,aAAa,CAAC;AACvB,YAAA;AACE,gBAAA,OAAO,QAAQ,CAAC;AACnB,SAAA;KACF;8GA5GU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,mFClBhC,25DA0DA,EAAA,MAAA,EAAA,CAAA,+wDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,kCAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FDxCa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;+BACE,aAAa,EAAA,eAAA,EAGN,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,25DAAA,EAAA,MAAA,EAAA,CAAA,+wDAAA,CAAA,EAAA,CAAA;0EAGlC,OAAO,EAAA,CAAA;sBAAnB,KAAK;;;AEdR,MASa,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GAAhB,gBAAgB,EAAA,YAAA,EAAA,CAHZ,mBAAmB,CAAA,EAAA,OAAA,EAAA,CAJhC,YAAY;YACZ,WAAW;AACX,YAAA,mBAAmB,aAGX,mBAAmB,CAAA,EAAA,CAAA,CAAA,EAAA;AAElB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAPzB,YAAY;YACZ,WAAW;YACX,mBAAmB,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAKV,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAT5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,mBAAmB;AACpB,qBAAA;oBACD,YAAY,EAAE,CAAC,mBAAmB,CAAC;oBACnC,OAAO,EAAE,CAAC,mBAAmB,CAAC;AAC/B,iBAAA,CAAA;;;ACbD;;AAEG;;;;"}