@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
JavaScript
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==