UNPKG

angular-archwizard

Version:

An Angular 9+ module containing a wizard component and its supporting components and directives

142 lines 13.7 kB
import { __decorate, __metadata, __param } from "tslib"; import { Directive, EventEmitter, HostListener, Input, Optional, Output } from '@angular/core'; import { isStepId } from '../util/step-id.interface'; import { isStepIndex } from '../util/step-index.interface'; import { isStepOffset } from '../util/step-offset.interface'; import { WizardStep } from '../util/wizard-step.interface'; import { WizardComponent } from '../components/wizard.component'; /** * The `awGoToStep` directive can be used to navigate to a given step. * This step can be defined in one of multiple formats * * ### Syntax * * With absolute step index: * * ```html * <button [awGoToStep]="{ stepIndex: absolute step index }" (finalize)="finalize method">...</button> * ``` * * With unique step id: * * ```html * <button [awGoToStep]="{ stepId: 'step id of destination step' }" (finalize)="finalize method">...</button> * ``` * * With a wizard step object: * * ```html * <button [awGoToStep]="wizard step object" (finalize)="finalize method">...</button> * ``` * * With an offset to the defining step: * * ```html * <button [awGoToStep]="{ stepOffset: offset }" (finalize)="finalize method">...</button> * ``` * * @author Marc Arndt */ let GoToStepDirective = class GoToStepDirective { /** * Constructor * * @param wizard The wizard component * @param wizardStep The wizard step, which contains this [[GoToStepDirective]] */ constructor(wizard, wizardStep) { this.wizard = wizard; this.wizardStep = wizardStep; /** * This [[EventEmitter]] is called directly before the current step is exited during a transition through a component with this directive. */ this.preFinalize = new EventEmitter(); /** * This [[EventEmitter]] is called directly after the current step is exited during a transition through a component with this directive. */ this.postFinalize = new EventEmitter(); } /** * A convenience field for `preFinalize` */ get finalize() { return this.preFinalize; } /** * A convenience name for `preFinalize` * * @param emitter The [[EventEmitter]] to be set */ set finalize(emitter) { /* istanbul ignore next */ this.preFinalize = emitter; } /** * Returns the destination step of this directive as an absolute step index inside the wizard * * @returns The index of the destination step * @throws If `targetStep` is of an unknown type an `Error` is thrown */ get destinationStep() { let destinationStep; if (isStepIndex(this.targetStep)) { destinationStep = this.targetStep.stepIndex; } else if (isStepId(this.targetStep)) { destinationStep = this.wizard.getIndexOfStepWithId(this.targetStep.stepId); } else if (isStepOffset(this.targetStep) && this.wizardStep !== null) { destinationStep = this.wizard.getIndexOfStep(this.wizardStep) + this.targetStep.stepOffset; } else if (this.targetStep instanceof WizardStep) { destinationStep = this.wizard.getIndexOfStep(this.targetStep); } else { throw new Error(`Input 'targetStep' is neither a WizardStep, StepOffset, StepIndex or StepId`); } return destinationStep; } /** * Listener method for `click` events on the component with this directive. * After this method is called the wizard will try to transition to the `destinationStep` */ onClick() { this.wizard.goToStep(this.destinationStep, this.preFinalize, this.postFinalize); } }; GoToStepDirective.ctorParameters = () => [ { type: WizardComponent }, { type: WizardStep, decorators: [{ type: Optional }] } ]; __decorate([ Output(), __metadata("design:type", EventEmitter) ], GoToStepDirective.prototype, "preFinalize", void 0); __decorate([ Output(), __metadata("design:type", EventEmitter) ], GoToStepDirective.prototype, "postFinalize", void 0); __decorate([ Input('awGoToStep'), __metadata("design:type", Object) ], GoToStepDirective.prototype, "targetStep", void 0); __decorate([ Output(), __metadata("design:type", EventEmitter), __metadata("design:paramtypes", [EventEmitter]) ], GoToStepDirective.prototype, "finalize", null); __decorate([ HostListener('click'), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", void 0) ], GoToStepDirective.prototype, "onClick", null); GoToStepDirective = __decorate([ Directive({ selector: '[awGoToStep]' }), __param(1, Optional()), __metadata("design:paramtypes", [WizardComponent, WizardStep]) ], GoToStepDirective); export { GoToStepDirective }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ28tdG8tc3RlcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hbmd1bGFyLWFyY2h3aXphcmQvIiwic291cmNlcyI6WyJsaWIvZGlyZWN0aXZlcy9nby10by1zdGVwLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTdGLE9BQU8sRUFBQyxRQUFRLEVBQVMsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsV0FBVyxFQUFZLE1BQU0sOEJBQThCLENBQUM7QUFDcEUsT0FBTyxFQUFDLFlBQVksRUFBYSxNQUFNLCtCQUErQixDQUFDO0FBQ3ZFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFFL0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErQkc7QUFJSCxJQUFhLGlCQUFpQixHQUE5QixNQUFhLGlCQUFpQjtJQXNCNUI7Ozs7O09BS0c7SUFDSCxZQUFvQixNQUF1QixFQUFzQixVQUFzQjtRQUFuRSxXQUFNLEdBQU4sTUFBTSxDQUFpQjtRQUFzQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBM0J2Rjs7V0FFRztRQUVJLGdCQUFXLEdBQXVCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFNUQ7O1dBRUc7UUFFSSxpQkFBWSxHQUF1QixJQUFJLFlBQVksRUFBRSxDQUFDO0lBa0I3RCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7OztPQUlHO0lBRUgsSUFBVyxRQUFRLENBQUMsT0FBMkI7UUFDN0MsMEJBQTBCO1FBQzFCLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDO0lBQzdCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILElBQVcsZUFBZTtRQUN4QixJQUFJLGVBQXVCLENBQUM7UUFFNUIsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ2hDLGVBQWUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQztTQUM3QzthQUFNLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUNwQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzVFO2FBQU0sSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssSUFBSSxFQUFFO1lBQ3BFLGVBQWUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7U0FDNUY7YUFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLFlBQVksVUFBVSxFQUFFO1lBQ2hELGVBQWUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDL0Q7YUFBTTtZQUNMLE1BQU0sSUFBSSxLQUFLLENBQUMsNkVBQTZFLENBQUMsQ0FBQztTQUNoRztRQUVELE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7O09BR0c7SUFFSSxPQUFPO1FBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNsRixDQUFDO0NBQ0YsQ0FBQTs7WUFyRDZCLGVBQWU7WUFBa0MsVUFBVSx1QkFBekMsUUFBUTs7QUF2QnREO0lBREMsTUFBTSxFQUFFOzhCQUNXLFlBQVk7c0RBQTRCO0FBTTVEO0lBREMsTUFBTSxFQUFFOzhCQUNZLFlBQVk7dURBQTRCO0FBUzdEO0lBREMsS0FBSyxDQUFDLFlBQVksQ0FBQzs7cURBQzRDO0FBd0JoRTtJQURDLE1BQU0sRUFBRTs4QkFDb0IsWUFBWTtxQ0FBWixZQUFZO2lEQUd4QztBQStCRDtJQURDLFlBQVksQ0FBQyxPQUFPLENBQUM7Ozs7Z0RBR3JCO0FBaEZVLGlCQUFpQjtJQUg3QixTQUFTLENBQUM7UUFDVCxRQUFRLEVBQUUsY0FBYztLQUN6QixDQUFDO0lBNkI4QyxXQUFBLFFBQVEsRUFBRSxDQUFBO3FDQUE1QixlQUFlLEVBQWtDLFVBQVU7R0E1QjVFLGlCQUFpQixDQWlGN0I7U0FqRlksaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT3B0aW9uYWwsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05hdmlnYXRpb25Nb2RlfSBmcm9tICcuLi9uYXZpZ2F0aW9uL25hdmlnYXRpb24tbW9kZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHtpc1N0ZXBJZCwgU3RlcElkfSBmcm9tICcuLi91dGlsL3N0ZXAtaWQuaW50ZXJmYWNlJztcbmltcG9ydCB7aXNTdGVwSW5kZXgsIFN0ZXBJbmRleH0gZnJvbSAnLi4vdXRpbC9zdGVwLWluZGV4LmludGVyZmFjZSc7XG5pbXBvcnQge2lzU3RlcE9mZnNldCwgU3RlcE9mZnNldH0gZnJvbSAnLi4vdXRpbC9zdGVwLW9mZnNldC5pbnRlcmZhY2UnO1xuaW1wb3J0IHtXaXphcmRTdGVwfSBmcm9tICcuLi91dGlsL3dpemFyZC1zdGVwLmludGVyZmFjZSc7XG5pbXBvcnQge1dpemFyZENvbXBvbmVudH0gZnJvbSAnLi4vY29tcG9uZW50cy93aXphcmQuY29tcG9uZW50JztcblxuLyoqXG4gKiBUaGUgYGF3R29Ub1N0ZXBgIGRpcmVjdGl2ZSBjYW4gYmUgdXNlZCB0byBuYXZpZ2F0ZSB0byBhIGdpdmVuIHN0ZXAuXG4gKiBUaGlzIHN0ZXAgY2FuIGJlIGRlZmluZWQgaW4gb25lIG9mIG11bHRpcGxlIGZvcm1hdHNcbiAqXG4gKiAjIyMgU3ludGF4XG4gKlxuICogV2l0aCBhYnNvbHV0ZSBzdGVwIGluZGV4OlxuICpcbiAqIGBgYGh0bWxcbiAqIDxidXR0b24gW2F3R29Ub1N0ZXBdPVwieyBzdGVwSW5kZXg6IGFic29sdXRlIHN0ZXAgaW5kZXggfVwiIChmaW5hbGl6ZSk9XCJmaW5hbGl6ZSBtZXRob2RcIj4uLi48L2J1dHRvbj5cbiAqIGBgYFxuICpcbiAqIFdpdGggdW5pcXVlIHN0ZXAgaWQ6XG4gKlxuICogYGBgaHRtbFxuICogPGJ1dHRvbiBbYXdHb1RvU3RlcF09XCJ7IHN0ZXBJZDogJ3N0ZXAgaWQgb2YgZGVzdGluYXRpb24gc3RlcCcgfVwiIChmaW5hbGl6ZSk9XCJmaW5hbGl6ZSBtZXRob2RcIj4uLi48L2J1dHRvbj5cbiAqIGBgYFxuICpcbiAqIFdpdGggYSB3aXphcmQgc3RlcCBvYmplY3Q6XG4gKlxuICogYGBgaHRtbFxuICogPGJ1dHRvbiBbYXdHb1RvU3RlcF09XCJ3aXphcmQgc3RlcCBvYmplY3RcIiAoZmluYWxpemUpPVwiZmluYWxpemUgbWV0aG9kXCI+Li4uPC9idXR0b24+XG4gKiBgYGBcbiAqXG4gKiBXaXRoIGFuIG9mZnNldCB0byB0aGUgZGVmaW5pbmcgc3RlcDpcbiAqXG4gKiBgYGBodG1sXG4gKiA8YnV0dG9uIFthd0dvVG9TdGVwXT1cInsgc3RlcE9mZnNldDogb2Zmc2V0IH1cIiAoZmluYWxpemUpPVwiZmluYWxpemUgbWV0aG9kXCI+Li4uPC9idXR0b24+XG4gKiBgYGBcbiAqXG4gKiBAYXV0aG9yIE1hcmMgQXJuZHRcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2F3R29Ub1N0ZXBdJ1xufSlcbmV4cG9ydCBjbGFzcyBHb1RvU3RlcERpcmVjdGl2ZSB7XG4gIC8qKlxuICAgKiBUaGlzIFtbRXZlbnRFbWl0dGVyXV0gaXMgY2FsbGVkIGRpcmVjdGx5IGJlZm9yZSB0aGUgY3VycmVudCBzdGVwIGlzIGV4aXRlZCBkdXJpbmcgYSB0cmFuc2l0aW9uIHRocm91Z2ggYSBjb21wb25lbnQgd2l0aCB0aGlzIGRpcmVjdGl2ZS5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcHJlRmluYWxpemU6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogVGhpcyBbW0V2ZW50RW1pdHRlcl1dIGlzIGNhbGxlZCBkaXJlY3RseSBhZnRlciB0aGUgY3VycmVudCBzdGVwIGlzIGV4aXRlZCBkdXJpbmcgYSB0cmFuc2l0aW9uIHRocm91Z2ggYSBjb21wb25lbnQgd2l0aCB0aGlzIGRpcmVjdGl2ZS5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcG9zdEZpbmFsaXplOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIC8qKlxuICAgKiBUaGUgZGVzdGluYXRpb24gc3RlcCwgdG8gd2hpY2ggdGhlIHdpemFyZCBzaG91bGQgbmF2aWdhdGUsIGFmdGVyIHRoZSBjb21wb25lbnQsIGhhdmluZyB0aGlzIGRpcmVjdGl2ZSBoYXMgYmVlbiBhY3RpdmF0ZWQuXG4gICAqIFRoaXMgZGVzdGluYXRpb24gc3RlcCBjYW4gYmUgZ2l2ZW4gZWl0aGVyIGFzIGEgW1tXaXphcmRTdGVwXV0gY29udGFpbmluZyB0aGUgc3RlcCBkaXJlY3RseSxcbiAgICogYSBbW1N0ZXBPZmZzZXRdXSBiZXR3ZWVuIHRoZSBjdXJyZW50IHN0ZXAgYW5kIHRoZSBgd2l6YXJkU3RlcGAsIGluIHdoaWNoIHRoaXMgZGlyZWN0aXZlIGhhcyBiZWVuIHVzZWQsXG4gICAqIG9yIGEgc3RlcCBpbmRleCBhcyBhIG51bWJlciBvciBzdHJpbmdcbiAgICovXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWlucHV0LXJlbmFtZVxuICBASW5wdXQoJ2F3R29Ub1N0ZXAnKVxuICBwdWJsaWMgdGFyZ2V0U3RlcDogV2l6YXJkU3RlcCB8IFN0ZXBPZmZzZXQgfCBTdGVwSW5kZXggfCBTdGVwSWQ7XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdG9yXG4gICAqXG4gICAqIEBwYXJhbSB3aXphcmQgVGhlIHdpemFyZCBjb21wb25lbnRcbiAgICogQHBhcmFtIHdpemFyZFN0ZXAgVGhlIHdpemFyZCBzdGVwLCB3aGljaCBjb250YWlucyB0aGlzIFtbR29Ub1N0ZXBEaXJlY3RpdmVdXVxuICAgKi9cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB3aXphcmQ6IFdpemFyZENvbXBvbmVudCwgQE9wdGlvbmFsKCkgcHJpdmF0ZSB3aXphcmRTdGVwOiBXaXphcmRTdGVwKSB7XG4gIH1cblxuICAvKipcbiAgICogQSBjb252ZW5pZW5jZSBmaWVsZCBmb3IgYHByZUZpbmFsaXplYFxuICAgKi9cbiAgcHVibGljIGdldCBmaW5hbGl6ZSgpOiBFdmVudEVtaXR0ZXI8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnByZUZpbmFsaXplO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgY29udmVuaWVuY2UgbmFtZSBmb3IgYHByZUZpbmFsaXplYFxuICAgKlxuICAgKiBAcGFyYW0gZW1pdHRlciBUaGUgW1tFdmVudEVtaXR0ZXJdXSB0byBiZSBzZXRcbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc2V0IGZpbmFsaXplKGVtaXR0ZXI6IEV2ZW50RW1pdHRlcjx2b2lkPikge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgdGhpcy5wcmVGaW5hbGl6ZSA9IGVtaXR0ZXI7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZGVzdGluYXRpb24gc3RlcCBvZiB0aGlzIGRpcmVjdGl2ZSBhcyBhbiBhYnNvbHV0ZSBzdGVwIGluZGV4IGluc2lkZSB0aGUgd2l6YXJkXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBpbmRleCBvZiB0aGUgZGVzdGluYXRpb24gc3RlcFxuICAgKiBAdGhyb3dzIElmIGB0YXJnZXRTdGVwYCBpcyBvZiBhbiB1bmtub3duIHR5cGUgYW4gYEVycm9yYCBpcyB0aHJvd25cbiAgICovXG4gIHB1YmxpYyBnZXQgZGVzdGluYXRpb25TdGVwKCk6IG51bWJlciB7XG4gICAgbGV0IGRlc3RpbmF0aW9uU3RlcDogbnVtYmVyO1xuXG4gICAgaWYgKGlzU3RlcEluZGV4KHRoaXMudGFyZ2V0U3RlcCkpIHtcbiAgICAgIGRlc3RpbmF0aW9uU3RlcCA9IHRoaXMudGFyZ2V0U3RlcC5zdGVwSW5kZXg7XG4gICAgfSBlbHNlIGlmIChpc1N0ZXBJZCh0aGlzLnRhcmdldFN0ZXApKSB7XG4gICAgICBkZXN0aW5hdGlvblN0ZXAgPSB0aGlzLndpemFyZC5nZXRJbmRleE9mU3RlcFdpdGhJZCh0aGlzLnRhcmdldFN0ZXAuc3RlcElkKTtcbiAgICB9IGVsc2UgaWYgKGlzU3RlcE9mZnNldCh0aGlzLnRhcmdldFN0ZXApICYmIHRoaXMud2l6YXJkU3RlcCAhPT0gbnVsbCkge1xuICAgICAgZGVzdGluYXRpb25TdGVwID0gdGhpcy53aXphcmQuZ2V0SW5kZXhPZlN0ZXAodGhpcy53aXphcmRTdGVwKSArIHRoaXMudGFyZ2V0U3RlcC5zdGVwT2Zmc2V0O1xuICAgIH0gZWxzZSBpZiAodGhpcy50YXJnZXRTdGVwIGluc3RhbmNlb2YgV2l6YXJkU3RlcCkge1xuICAgICAgZGVzdGluYXRpb25TdGVwID0gdGhpcy53aXphcmQuZ2V0SW5kZXhPZlN0ZXAodGhpcy50YXJnZXRTdGVwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnB1dCAndGFyZ2V0U3RlcCcgaXMgbmVpdGhlciBhIFdpemFyZFN0ZXAsIFN0ZXBPZmZzZXQsIFN0ZXBJbmRleCBvciBTdGVwSWRgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVzdGluYXRpb25TdGVwO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3RlbmVyIG1ldGhvZCBmb3IgYGNsaWNrYCBldmVudHMgb24gdGhlIGNvbXBvbmVudCB3aXRoIHRoaXMgZGlyZWN0aXZlLlxuICAgKiBBZnRlciB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgdGhlIHdpemFyZCB3aWxsIHRyeSB0byB0cmFuc2l0aW9uIHRvIHRoZSBgZGVzdGluYXRpb25TdGVwYFxuICAgKi9cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICBwdWJsaWMgb25DbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLndpemFyZC5nb1RvU3RlcCh0aGlzLmRlc3RpbmF0aW9uU3RlcCwgdGhpcy5wcmVGaW5hbGl6ZSwgdGhpcy5wb3N0RmluYWxpemUpO1xuICB9XG59XG4iXX0=