UNPKG

@spartacus/storefront

Version:

Spartacus Storefront is a package that you can include in your application, which allows you to add default storefront features.

93 lines 10.7 kB
import { Directive, HostListener, Injectable, Input, Optional, } from '@angular/core'; import * as i0 from "@angular/core"; import * as i1 from "@angular/router"; import * as i2 from "@ng-bootstrap/ng-bootstrap"; /** * Service to control the behavior of the DismissModalDirective */ export class ModalDirectiveService { /** * Handler for the click event on the directive * * @param options.type Action to perform after click - close or dismiss * @param options.reason Reason for dismissing or closing the modal * @param url url (optional) - exists only when the directive is also a `routerLink`. */ onClick(options, activeModal, url) { let reason = options.reason; if (!reason && url) { reason = `Link click: ${url}`; } if (options.type === 'dismiss') { activeModal.dismiss(reason); } else if (options.type === 'close') { activeModal.close(reason); } } } ModalDirectiveService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: ModalDirectiveService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); ModalDirectiveService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: ModalDirectiveService, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: ModalDirectiveService, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }] }); /** * Directive to dismiss the modal on click */ export class ModalDirective { constructor(service, router, // active modal can be injected only when the directive is projected inside modal activeModal, routerLink, routerLinkWithHref) { this.service = service; this.router = router; this.activeModal = activeModal; this.routerLink = routerLink; this.routerLinkWithHref = routerLinkWithHref; } /** * Returns URL in case when the directive is in the scope of a `routerLink` directive at the same time. */ getUrl() { var _a; const routerLink = (_a = this.routerLink) !== null && _a !== void 0 ? _a : this.routerLinkWithHref; return routerLink ? this.router.serializeUrl(routerLink.urlTree) : undefined; } onClick() { if (this.activeModal) { this.service.onClick(this.options, this.activeModal, this.getUrl()); } } /** * Converts the directive's inputs to the shape of modal directive options */ get options() { return { type: this.cxModal, reason: this.cxModalReason }; } } ModalDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: ModalDirective, deps: [{ token: ModalDirectiveService }, { token: i1.Router }, { token: i2.NgbActiveModal, optional: true }, { token: i1.RouterLink, optional: true }, { token: i1.RouterLinkWithHref, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); ModalDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.0.5", type: ModalDirective, selector: "[cxModal]", inputs: { cxModal: "cxModal", cxModalReason: "cxModalReason" }, host: { listeners: { "click": "onClick()" } }, ngImport: i0 }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: ModalDirective, decorators: [{ type: Directive, args: [{ selector: '[cxModal]', }] }], ctorParameters: function () { return [{ type: ModalDirectiveService }, { type: i1.Router }, { type: i2.NgbActiveModal, decorators: [{ type: Optional }] }, { type: i1.RouterLink, decorators: [{ type: Optional }] }, { type: i1.RouterLinkWithHref, decorators: [{ type: Optional }] }]; }, propDecorators: { cxModal: [{ type: Input }], cxModalReason: [{ type: Input }], onClick: [{ type: HostListener, args: ['click'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RvcmVmcm9udGxpYi9zaGFyZWQvY29tcG9uZW50cy9tb2RhbC9tb2RhbC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFDTCxRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7Ozs7QUFnQnZCOztHQUVHO0FBSUgsTUFBTSxPQUFPLHFCQUFxQjtJQUNoQzs7Ozs7O09BTUc7SUFDSCxPQUFPLENBQ0wsT0FBOEIsRUFDOUIsV0FBMkIsRUFDM0IsR0FBWTtRQUVaLElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFFNUIsSUFBSSxDQUFDLE1BQU0sSUFBSSxHQUFHLEVBQUU7WUFDbEIsTUFBTSxHQUFHLGVBQWUsR0FBRyxFQUFFLENBQUM7U0FDL0I7UUFFRCxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO1lBQzlCLFdBQVcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDN0I7YUFBTSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFO1lBQ25DLFdBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDM0I7SUFDSCxDQUFDOztrSEF4QlUscUJBQXFCO3NIQUFyQixxQkFBcUIsY0FGcEIsTUFBTTsyRkFFUCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COztBQTRCRDs7R0FFRztBQUlILE1BQU0sT0FBTyxjQUFjO0lBYXpCLFlBQ1ksT0FBOEIsRUFDOUIsTUFBYztJQUV4QixpRkFBaUY7SUFDM0QsV0FBMkIsRUFFM0IsVUFBc0IsRUFDdEIsa0JBQXNDO1FBUGxELFlBQU8sR0FBUCxPQUFPLENBQXVCO1FBQzlCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFHRixnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFFM0IsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO0lBQzNELENBQUM7SUFFSjs7T0FFRztJQUNPLE1BQU07O1FBQ2QsTUFBTSxVQUFVLEdBQUcsTUFBQSxJQUFJLENBQUMsVUFBVSxtQ0FBSSxJQUFJLENBQUMsa0JBQWtCLENBQUM7UUFDOUQsT0FBTyxVQUFVO1lBQ2YsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUM7WUFDOUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNoQixDQUFDO0lBR0QsT0FBTztRQUNMLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDckU7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFjLE9BQU87UUFDbkIsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDNUQsQ0FBQzs7MkdBOUNVLGNBQWMsa0JBY0oscUJBQXFCOytGQWQvQixjQUFjOzJGQUFkLGNBQWM7a0JBSDFCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFdBQVc7aUJBQ3RCOzBEQWVzQixxQkFBcUI7MEJBSXZDLFFBQVE7OzBCQUVSLFFBQVE7OzBCQUNSLFFBQVE7NENBZkYsT0FBTztzQkFBZixLQUFLO2dCQUtHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBd0JOLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdGFibGUsXG4gIElucHV0LFxuICBPcHRpb25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIsIFJvdXRlckxpbmssIFJvdXRlckxpbmtXaXRoSHJlZiB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBOZ2JBY3RpdmVNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcblxuZXhwb3J0IGludGVyZmFjZSBNb2RhbERpcmVjdGl2ZU9wdGlvbnMge1xuICAvKipcbiAgICogQWN0aW9uIHRvIHBlcmZvcm0gYWZ0ZXIgY2xpY2tcbiAgICovXG4gIHR5cGU6ICdkaXNtaXNzJyB8ICdjbG9zZSc7XG5cbiAgLyoqXG4gICAqIFJlYXNvbiBmb3IgZGlzbWlzc2luZyBvciBjbG9zaW5nIHRoZSBtb2RhbFxuICAgKi9cbiAgcmVhc29uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFNlcnZpY2UgdG8gY29udHJvbCB0aGUgYmVoYXZpb3Igb2YgdGhlIERpc21pc3NNb2RhbERpcmVjdGl2ZVxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTW9kYWxEaXJlY3RpdmVTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIEhhbmRsZXIgZm9yIHRoZSBjbGljayBldmVudCBvbiB0aGUgZGlyZWN0aXZlXG4gICAqXG4gICAqIEBwYXJhbSBvcHRpb25zLnR5cGUgICAgQWN0aW9uIHRvIHBlcmZvcm0gYWZ0ZXIgY2xpY2sgLSBjbG9zZSBvciBkaXNtaXNzXG4gICAqIEBwYXJhbSBvcHRpb25zLnJlYXNvbiAgUmVhc29uIGZvciBkaXNtaXNzaW5nIG9yIGNsb3NpbmcgdGhlIG1vZGFsXG4gICAqIEBwYXJhbSB1cmwgICAgICAgICAgICAgdXJsIChvcHRpb25hbCkgLSBleGlzdHMgb25seSB3aGVuIHRoZSBkaXJlY3RpdmUgaXMgYWxzbyBhIGByb3V0ZXJMaW5rYC5cbiAgICovXG4gIG9uQ2xpY2soXG4gICAgb3B0aW9uczogTW9kYWxEaXJlY3RpdmVPcHRpb25zLFxuICAgIGFjdGl2ZU1vZGFsOiBOZ2JBY3RpdmVNb2RhbCxcbiAgICB1cmw/OiBzdHJpbmdcbiAgKTogdm9pZCB7XG4gICAgbGV0IHJlYXNvbiA9IG9wdGlvbnMucmVhc29uO1xuXG4gICAgaWYgKCFyZWFzb24gJiYgdXJsKSB7XG4gICAgICByZWFzb24gPSBgTGluayBjbGljazogJHt1cmx9YDtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy50eXBlID09PSAnZGlzbWlzcycpIHtcbiAgICAgIGFjdGl2ZU1vZGFsLmRpc21pc3MocmVhc29uKTtcbiAgICB9IGVsc2UgaWYgKG9wdGlvbnMudHlwZSA9PT0gJ2Nsb3NlJykge1xuICAgICAgYWN0aXZlTW9kYWwuY2xvc2UocmVhc29uKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBEaXJlY3RpdmUgdG8gZGlzbWlzcyB0aGUgbW9kYWwgb24gY2xpY2tcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2N4TW9kYWxdJyxcbn0pXG5leHBvcnQgY2xhc3MgTW9kYWxEaXJlY3RpdmUge1xuICAvKipcbiAgICogQWN0aW9uIHRvIHBlcmZvcm0sIHdoZW4gdGhlIGRpcmVjdGl2ZSBpcyBjbGlja2VkIC0gZGlzbWlzcyBvciBjbG9zZS5cbiAgICpcbiAgICogUmVhc29uIGNhbiBiZSBnaXZlbiB2aWEgaW5wdXQgYGN4TW9kYWxSZWFzb25gLCB3aGljaCBmYWxsYmFja3MgdG8gVVJMIG9mIHRoZSBgcm91dGVyTGlua2AgKGlmIGV4aXN0cyBvbiB0aGUgc2FtZSBlbGVtZW50KS5cbiAgICovXG4gIEBJbnB1dCgpIGN4TW9kYWw6IE1vZGFsRGlyZWN0aXZlT3B0aW9uc1sndHlwZSddO1xuXG4gIC8qKlxuICAgKiBSZWFzb24gZm9yIGNsb3NpbmcvZGlzbWlzc2luZyB0aGUgbW9kYWwuIEZhbGxiYWNrcyB0byBVUkwgb2YgdGhlIGByb3V0ZXJMaW5rYCAoaWYgZXhpc3RzIG9uIHRoZSBzYW1lIGVsZW1lbnQpLlxuICAgKi9cbiAgQElucHV0KCkgY3hNb2RhbFJlYXNvbjogTW9kYWxEaXJlY3RpdmVPcHRpb25zWydyZWFzb24nXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgc2VydmljZTogTW9kYWxEaXJlY3RpdmVTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcixcblxuICAgIC8vIGFjdGl2ZSBtb2RhbCBjYW4gYmUgaW5qZWN0ZWQgb25seSB3aGVuIHRoZSBkaXJlY3RpdmUgaXMgcHJvamVjdGVkIGluc2lkZSBtb2RhbFxuICAgIEBPcHRpb25hbCgpIHByb3RlY3RlZCBhY3RpdmVNb2RhbDogTmdiQWN0aXZlTW9kYWwsXG5cbiAgICBAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgcm91dGVyTGluazogUm91dGVyTGluayxcbiAgICBAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgcm91dGVyTGlua1dpdGhIcmVmOiBSb3V0ZXJMaW5rV2l0aEhyZWZcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIFVSTCBpbiBjYXNlIHdoZW4gdGhlIGRpcmVjdGl2ZSBpcyBpbiB0aGUgc2NvcGUgb2YgYSBgcm91dGVyTGlua2AgZGlyZWN0aXZlIGF0IHRoZSBzYW1lIHRpbWUuXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0VXJsKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3Qgcm91dGVyTGluayA9IHRoaXMucm91dGVyTGluayA/PyB0aGlzLnJvdXRlckxpbmtXaXRoSHJlZjtcbiAgICByZXR1cm4gcm91dGVyTGlua1xuICAgICAgPyB0aGlzLnJvdXRlci5zZXJpYWxpemVVcmwocm91dGVyTGluay51cmxUcmVlKVxuICAgICAgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gIG9uQ2xpY2soKSB7XG4gICAgaWYgKHRoaXMuYWN0aXZlTW9kYWwpIHtcbiAgICAgIHRoaXMuc2VydmljZS5vbkNsaWNrKHRoaXMub3B0aW9ucywgdGhpcy5hY3RpdmVNb2RhbCwgdGhpcy5nZXRVcmwoKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBkaXJlY3RpdmUncyBpbnB1dHMgdG8gdGhlIHNoYXBlIG9mIG1vZGFsIGRpcmVjdGl2ZSBvcHRpb25zXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IG9wdGlvbnMoKTogTW9kYWxEaXJlY3RpdmVPcHRpb25zIHtcbiAgICByZXR1cm4geyB0eXBlOiB0aGlzLmN4TW9kYWwsIHJlYXNvbjogdGhpcy5jeE1vZGFsUmVhc29uIH07XG4gIH1cbn1cbiJdfQ==