@kushki/ng-suka
Version:
<p align="center"> <h1 align="center">Suka Components Angular</h1> <p align="center"> An Angular implementation of the Suka Design System </p> </p>
192 lines • 13.1 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Injectable, Injector } from '@angular/core';
import { Overlay, OverlayConfig } from '@angular/cdk/overlay';
import { ComponentPortal, PortalInjector } from '@angular/cdk/portal';
import { ModalRef } from './modal-ref';
import { MODAL_CONTENT_DATA } from './modal.tokens';
import { ModalContainer } from './modal-container.component';
/**
* @record
*/
export function ModalContent() { }
if (false) {
/** @type {?|undefined} */
ModalContent.prototype.title;
/** @type {?|undefined} */
ModalContent.prototype.body;
/** @type {?|undefined} */
ModalContent.prototype.closeButton;
/** @type {?|undefined} */
ModalContent.prototype.actions;
}
/**
* @record
*/
export function ModalConfig() { }
if (false) {
/** @type {?|undefined} */
ModalConfig.prototype.closeOnBackdropClick;
/** @type {?|undefined} */
ModalConfig.prototype.panelClass;
/** @type {?|undefined} */
ModalConfig.prototype.hasBackdrop;
/** @type {?|undefined} */
ModalConfig.prototype.backdropClass;
/** @type {?|undefined} */
ModalConfig.prototype.content;
}
/** @type {?} */
var DEFAULT_CONFIG = {
closeOnBackdropClick: true,
hasBackdrop: true,
backdropClass: 'backdrop--dark',
panelClass: 'modal--default',
content: null
};
var ModalService = /** @class */ (function () {
function ModalService(injector, overlay) {
this.injector = injector;
this.overlay = overlay;
}
/**
* @param {?=} config
* @return {?}
*/
ModalService.prototype.open = /**
* @param {?=} config
* @return {?}
*/
function (config) {
if (config === void 0) { config = {}; }
// Override default configuration
/** @type {?} */
var dialogConfig = tslib_1.__assign({}, DEFAULT_CONFIG, config);
// Returns an OverlayRef which is a PortalHost
/** @type {?} */
var overlayRef = this.createOverlay(dialogConfig);
// Instantiate remote control
/** @type {?} */
var modalRef = new ModalRef(overlayRef);
/** @type {?} */
var overlayComponent = this.attachModalContainer(overlayRef, dialogConfig, modalRef);
modalRef.componentInstance = overlayComponent;
if (dialogConfig.closeOnBackdropClick) {
overlayRef.backdropClick().subscribe((/**
* @param {?} _
* @return {?}
*/
function (_) { return modalRef.close('cancel'); }));
}
return modalRef;
};
/**
* @private
* @param {?} config
* @return {?}
*/
ModalService.prototype.createOverlay = /**
* @private
* @param {?} config
* @return {?}
*/
function (config) {
/** @type {?} */
var overlayConfig = this.getOverlayConfig(config);
return this.overlay.create(overlayConfig);
};
/**
* @private
* @param {?} overlayRef
* @param {?} config
* @param {?} modalRef
* @return {?}
*/
ModalService.prototype.attachModalContainer = /**
* @private
* @param {?} overlayRef
* @param {?} config
* @param {?} modalRef
* @return {?}
*/
function (overlayRef, config, modalRef) {
/** @type {?} */
var injector = this.createInjector(config, modalRef);
/** @type {?} */
var containerPortal = new ComponentPortal(ModalContainer, null, injector);
/** @type {?} */
var containerRef = overlayRef.attach(containerPortal);
return containerRef.instance;
};
/**
* @private
* @param {?} config
* @param {?} modalRef
* @return {?}
*/
ModalService.prototype.createInjector = /**
* @private
* @param {?} config
* @param {?} modalRef
* @return {?}
*/
function (config, modalRef) {
/** @type {?} */
var injectionTokens = new WeakMap();
injectionTokens.set(ModalRef, modalRef);
injectionTokens.set(MODAL_CONTENT_DATA, config.content);
return new PortalInjector(this.injector, injectionTokens);
};
/**
* @private
* @param {?} config
* @return {?}
*/
ModalService.prototype.getOverlayConfig = /**
* @private
* @param {?} config
* @return {?}
*/
function (config) {
/** @type {?} */
var positionStrategy = this.overlay.position()
.global()
.centerHorizontally()
.centerVertically();
/** @type {?} */
var overlayConfig = new OverlayConfig({
hasBackdrop: config.hasBackdrop,
backdropClass: config.backdropClass,
panelClass: config.panelClass,
scrollStrategy: this.overlay.scrollStrategies.noop(),
positionStrategy: positionStrategy
});
return overlayConfig;
};
ModalService.decorators = [
{ type: Injectable }
];
/** @nocollapse */
ModalService.ctorParameters = function () { return [
{ type: Injector },
{ type: Overlay }
]; };
return ModalService;
}());
export { ModalService };
if (false) {
/**
* @type {?}
* @private
*/
ModalService.prototype.injector;
/**
* @type {?}
* @private
*/
ModalService.prototype.overlay;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BrdXNoa2kvbmctc3VrYS8iLCJzb3VyY2VzIjpbImxpYi9tb2RhbC9tb2RhbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQTZCLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7OztBQUU3RCxrQ0FTQzs7O0lBUkMsNkJBQWtDOztJQUNsQyw0QkFBaUM7O0lBQ2pDLG1DQUFzQjs7SUFDdEIsK0JBSUk7Ozs7O0FBR04saUNBTUM7OztJQUxDLDJDQUErQjs7SUFDL0IsaUNBQW9COztJQUNwQixrQ0FBc0I7O0lBQ3RCLG9DQUF1Qjs7SUFDdkIsOEJBQXVCOzs7SUFHbkIsY0FBYyxHQUFnQjtJQUNsQyxvQkFBb0IsRUFBRSxJQUFJO0lBQzFCLFdBQVcsRUFBRSxJQUFJO0lBQ2pCLGFBQWEsRUFBRSxnQkFBZ0I7SUFDL0IsVUFBVSxFQUFFLGdCQUFnQjtJQUM1QixPQUFPLEVBQUUsSUFBSTtDQUNkO0FBRUQ7SUFHRSxzQkFDVSxRQUFrQixFQUNsQixPQUFnQjtRQURoQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLFlBQU8sR0FBUCxPQUFPLENBQVM7SUFDdEIsQ0FBQzs7Ozs7SUFFTCwyQkFBSTs7OztJQUFKLFVBQUssTUFBd0I7UUFBeEIsdUJBQUEsRUFBQSxXQUF3Qjs7O1lBRXJCLFlBQVksd0JBQVEsY0FBYyxFQUFLLE1BQU0sQ0FBRTs7O1lBRy9DLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQzs7O1lBRzdDLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUM7O1lBRW5DLGdCQUFnQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLEVBQUUsWUFBWSxFQUFFLFFBQVEsQ0FBQztRQUV0RixRQUFRLENBQUMsaUJBQWlCLEdBQUcsZ0JBQWdCLENBQUM7UUFFOUMsSUFBSSxZQUFZLENBQUMsb0JBQW9CLEVBQUU7WUFDckMsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDLFNBQVM7Ozs7WUFBQyxVQUFBLENBQUMsSUFBSSxPQUFBLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQXhCLENBQXdCLEVBQUMsQ0FBQztTQUNyRTtRQUVELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7Ozs7OztJQUVPLG9DQUFhOzs7OztJQUFyQixVQUFzQixNQUFtQjs7WUFDakMsYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7UUFDbkQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM1QyxDQUFDOzs7Ozs7OztJQUVPLDJDQUFvQjs7Ozs7OztJQUE1QixVQUE2QixVQUFzQixFQUFFLE1BQW1CLEVBQUUsUUFBa0I7O1lBQ3BGLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUM7O1lBRWhELGVBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBQyxjQUFjLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQzs7WUFDckUsWUFBWSxHQUFpQyxVQUFVLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQztRQUVyRixPQUFPLFlBQVksQ0FBQyxRQUFRLENBQUM7SUFDL0IsQ0FBQzs7Ozs7OztJQUVPLHFDQUFjOzs7Ozs7SUFBdEIsVUFBdUIsTUFBbUIsRUFBRSxRQUFrQjs7WUFDdEQsZUFBZSxHQUFHLElBQUksT0FBTyxFQUFFO1FBRXJDLGVBQWUsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3hDLGVBQWUsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXhELE9BQU8sSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUMsQ0FBQztJQUM1RCxDQUFDOzs7Ozs7SUFFTyx1Q0FBZ0I7Ozs7O0lBQXhCLFVBQXlCLE1BQW1COztZQUNwQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRTthQUM3QyxNQUFNLEVBQUU7YUFDUixrQkFBa0IsRUFBRTthQUNwQixnQkFBZ0IsRUFBRTs7WUFFZixhQUFhLEdBQUcsSUFBSSxhQUFhLENBQUM7WUFDdEMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXO1lBQy9CLGFBQWEsRUFBRSxNQUFNLENBQUMsYUFBYTtZQUNuQyxVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVU7WUFDN0IsY0FBYyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFO1lBQ3BELGdCQUFnQixrQkFBQTtTQUNqQixDQUFDO1FBRUYsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQzs7Z0JBbkVGLFVBQVU7Ozs7Z0JBbkNVLFFBQVE7Z0JBQ3BCLE9BQU87O0lBc0doQixtQkFBQztDQUFBLEFBcEVELElBb0VDO1NBbkVZLFlBQVk7Ozs7OztJQUdyQixnQ0FBMEI7Ozs7O0lBQzFCLCtCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBDb21wb25lbnRSZWYsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5Q29uZmlnLCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsLCBQb3J0YWxJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuXG5pbXBvcnQgeyBNb2RhbFJlZiB9IGZyb20gJy4vbW9kYWwtcmVmJztcbmltcG9ydCB7IE1PREFMX0NPTlRFTlRfREFUQSB9IGZyb20gJy4vbW9kYWwudG9rZW5zJztcbmltcG9ydCB7IE1vZGFsQ29udGFpbmVyIH0gZnJvbSAnLi9tb2RhbC1jb250YWluZXIuY29tcG9uZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBNb2RhbENvbnRlbnQge1xuICB0aXRsZT86IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT47XG4gIGJvZHk/OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuICBjbG9zZUJ1dHRvbj86IGJvb2xlYW47XG4gIGFjdGlvbnM/OiB7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICB0eXBlOiAncHJpbWFyeScgfCAnc2Vjb25kYXJ5JztcbiAgICB0YWc/OiBzdHJpbmc7XG4gIH1bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNb2RhbENvbmZpZyB7XG4gIGNsb3NlT25CYWNrZHJvcENsaWNrPzogYm9vbGVhbjtcbiAgcGFuZWxDbGFzcz86IHN0cmluZztcbiAgaGFzQmFja2Ryb3A/OiBib29sZWFuO1xuICBiYWNrZHJvcENsYXNzPzogc3RyaW5nO1xuICBjb250ZW50PzogTW9kYWxDb250ZW50O1xufVxuXG5jb25zdCBERUZBVUxUX0NPTkZJRzogTW9kYWxDb25maWcgPSB7XG4gIGNsb3NlT25CYWNrZHJvcENsaWNrOiB0cnVlLFxuICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgYmFja2Ryb3BDbGFzczogJ2JhY2tkcm9wLS1kYXJrJyxcbiAgcGFuZWxDbGFzczogJ21vZGFsLS1kZWZhdWx0JyxcbiAgY29udGVudDogbnVsbFxufTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1vZGFsU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5XG4gICkgeyB9XG5cbiAgb3Blbihjb25maWc6IE1vZGFsQ29uZmlnID0ge30pIHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb25cbiAgICBjb25zdCBkaWFsb2dDb25maWcgPSB7IC4uLkRFRkFVTFRfQ09ORklHLCAuLi5jb25maWcgfTtcblxuICAgIC8vIFJldHVybnMgYW4gT3ZlcmxheVJlZiB3aGljaCBpcyBhIFBvcnRhbEhvc3RcbiAgICBjb25zdCBvdmVybGF5UmVmID0gdGhpcy5jcmVhdGVPdmVybGF5KGRpYWxvZ0NvbmZpZyk7XG5cbiAgICAvLyBJbnN0YW50aWF0ZSByZW1vdGUgY29udHJvbFxuICAgIGNvbnN0IG1vZGFsUmVmID0gbmV3IE1vZGFsUmVmKG92ZXJsYXlSZWYpO1xuXG4gICAgY29uc3Qgb3ZlcmxheUNvbXBvbmVudCA9IHRoaXMuYXR0YWNoTW9kYWxDb250YWluZXIob3ZlcmxheVJlZiwgZGlhbG9nQ29uZmlnLCBtb2RhbFJlZik7XG5cbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZSA9IG92ZXJsYXlDb21wb25lbnQ7XG5cbiAgICBpZiAoZGlhbG9nQ29uZmlnLmNsb3NlT25CYWNrZHJvcENsaWNrKSB7XG4gICAgICBvdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKS5zdWJzY3JpYmUoXyA9PiBtb2RhbFJlZi5jbG9zZSgnY2FuY2VsJykpO1xuICAgIH1cblxuICAgIHJldHVybiBtb2RhbFJlZjtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlT3ZlcmxheShjb25maWc6IE1vZGFsQ29uZmlnKSB7XG4gICAgY29uc3Qgb3ZlcmxheUNvbmZpZyA9IHRoaXMuZ2V0T3ZlcmxheUNvbmZpZyhjb25maWcpO1xuICAgIHJldHVybiB0aGlzLm92ZXJsYXkuY3JlYXRlKG92ZXJsYXlDb25maWcpO1xuICB9XG5cbiAgcHJpdmF0ZSBhdHRhY2hNb2RhbENvbnRhaW5lcihvdmVybGF5UmVmOiBPdmVybGF5UmVmLCBjb25maWc6IE1vZGFsQ29uZmlnLCBtb2RhbFJlZjogTW9kYWxSZWYpIHtcbiAgICBjb25zdCBpbmplY3RvciA9IHRoaXMuY3JlYXRlSW5qZWN0b3IoY29uZmlnLCBtb2RhbFJlZik7XG5cbiAgICBjb25zdCBjb250YWluZXJQb3J0YWwgPSBuZXcgQ29tcG9uZW50UG9ydGFsKE1vZGFsQ29udGFpbmVyLCBudWxsLCBpbmplY3Rvcik7XG4gICAgY29uc3QgY29udGFpbmVyUmVmOiBDb21wb25lbnRSZWY8TW9kYWxDb250YWluZXI+ID0gb3ZlcmxheVJlZi5hdHRhY2goY29udGFpbmVyUG9ydGFsKTtcblxuICAgIHJldHVybiBjb250YWluZXJSZWYuaW5zdGFuY2U7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUluamVjdG9yKGNvbmZpZzogTW9kYWxDb25maWcsIG1vZGFsUmVmOiBNb2RhbFJlZik6IFBvcnRhbEluamVjdG9yIHtcbiAgICBjb25zdCBpbmplY3Rpb25Ub2tlbnMgPSBuZXcgV2Vha01hcCgpO1xuXG4gICAgaW5qZWN0aW9uVG9rZW5zLnNldChNb2RhbFJlZiwgbW9kYWxSZWYpO1xuICAgIGluamVjdGlvblRva2Vucy5zZXQoTU9EQUxfQ09OVEVOVF9EQVRBLCBjb25maWcuY29udGVudCk7XG5cbiAgICByZXR1cm4gbmV3IFBvcnRhbEluamVjdG9yKHRoaXMuaW5qZWN0b3IsIGluamVjdGlvblRva2Vucyk7XG4gIH1cblxuICBwcml2YXRlIGdldE92ZXJsYXlDb25maWcoY29uZmlnOiBNb2RhbENvbmZpZyk6IE92ZXJsYXlDb25maWcge1xuICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLm92ZXJsYXkucG9zaXRpb24oKVxuICAgICAgLmdsb2JhbCgpXG4gICAgICAuY2VudGVySG9yaXpvbnRhbGx5KClcbiAgICAgIC5jZW50ZXJWZXJ0aWNhbGx5KCk7XG5cbiAgICBjb25zdCBvdmVybGF5Q29uZmlnID0gbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgaGFzQmFja2Ryb3A6IGNvbmZpZy5oYXNCYWNrZHJvcCxcbiAgICAgIGJhY2tkcm9wQ2xhc3M6IGNvbmZpZy5iYWNrZHJvcENsYXNzLFxuICAgICAgcGFuZWxDbGFzczogY29uZmlnLnBhbmVsQ2xhc3MsXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMubm9vcCgpLFxuICAgICAgcG9zaXRpb25TdHJhdGVneVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG92ZXJsYXlDb25maWc7XG4gIH1cbn1cbiJdfQ==