UNPKG

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

165 lines 12.2 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ 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 {?} */ const DEFAULT_CONFIG = { closeOnBackdropClick: true, hasBackdrop: true, backdropClass: 'backdrop--dark', panelClass: 'modal--default', content: null }; export class ModalService { /** * @param {?} injector * @param {?} overlay */ constructor(injector, overlay) { this.injector = injector; this.overlay = overlay; } /** * @param {?=} config * @return {?} */ open(config = {}) { // Override default configuration /** @type {?} */ const dialogConfig = Object.assign({}, DEFAULT_CONFIG, config); // Returns an OverlayRef which is a PortalHost /** @type {?} */ const overlayRef = this.createOverlay(dialogConfig); // Instantiate remote control /** @type {?} */ const modalRef = new ModalRef(overlayRef); /** @type {?} */ const overlayComponent = this.attachModalContainer(overlayRef, dialogConfig, modalRef); modalRef.componentInstance = overlayComponent; if (dialogConfig.closeOnBackdropClick) { overlayRef.backdropClick().subscribe((/** * @param {?} _ * @return {?} */ _ => modalRef.close('cancel'))); } return modalRef; } /** * @private * @param {?} config * @return {?} */ createOverlay(config) { /** @type {?} */ const overlayConfig = this.getOverlayConfig(config); return this.overlay.create(overlayConfig); } /** * @private * @param {?} overlayRef * @param {?} config * @param {?} modalRef * @return {?} */ attachModalContainer(overlayRef, config, modalRef) { /** @type {?} */ const injector = this.createInjector(config, modalRef); /** @type {?} */ const containerPortal = new ComponentPortal(ModalContainer, null, injector); /** @type {?} */ const containerRef = overlayRef.attach(containerPortal); return containerRef.instance; } /** * @private * @param {?} config * @param {?} modalRef * @return {?} */ createInjector(config, modalRef) { /** @type {?} */ const injectionTokens = new WeakMap(); injectionTokens.set(ModalRef, modalRef); injectionTokens.set(MODAL_CONTENT_DATA, config.content); return new PortalInjector(this.injector, injectionTokens); } /** * @private * @param {?} config * @return {?} */ getOverlayConfig(config) { /** @type {?} */ const positionStrategy = this.overlay.position() .global() .centerHorizontally() .centerVertically(); /** @type {?} */ const overlayConfig = new OverlayConfig({ hasBackdrop: config.hasBackdrop, backdropClass: config.backdropClass, panelClass: config.panelClass, scrollStrategy: this.overlay.scrollStrategies.noop(), positionStrategy }); return overlayConfig; } } ModalService.decorators = [ { type: Injectable } ]; /** @nocollapse */ ModalService.ctorParameters = () => [ { type: Injector }, { type: Overlay } ]; if (false) { /** * @type {?} * @private */ ModalService.prototype.injector; /** * @type {?} * @private */ ModalService.prototype.overlay; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BrdXNoa2kvbmctc3VrYS8iLCJzb3VyY2VzIjpbImxpYi9tb2RhbC9tb2RhbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBNkIsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdkMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7O0FBRTdELGtDQVNDOzs7SUFSQyw2QkFBa0M7O0lBQ2xDLDRCQUFpQzs7SUFDakMsbUNBQXNCOztJQUN0QiwrQkFJSTs7Ozs7QUFHTixpQ0FNQzs7O0lBTEMsMkNBQStCOztJQUMvQixpQ0FBb0I7O0lBQ3BCLGtDQUFzQjs7SUFDdEIsb0NBQXVCOztJQUN2Qiw4QkFBdUI7OztNQUduQixjQUFjLEdBQWdCO0lBQ2xDLG9CQUFvQixFQUFFLElBQUk7SUFDMUIsV0FBVyxFQUFFLElBQUk7SUFDakIsYUFBYSxFQUFFLGdCQUFnQjtJQUMvQixVQUFVLEVBQUUsZ0JBQWdCO0lBQzVCLE9BQU8sRUFBRSxJQUFJO0NBQ2Q7QUFHRCxNQUFNLE9BQU8sWUFBWTs7Ozs7SUFFdkIsWUFDVSxRQUFrQixFQUNsQixPQUFnQjtRQURoQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLFlBQU8sR0FBUCxPQUFPLENBQVM7SUFDdEIsQ0FBQzs7Ozs7SUFFTCxJQUFJLENBQUMsU0FBc0IsRUFBRTs7O2NBRXJCLFlBQVkscUJBQVEsY0FBYyxFQUFLLE1BQU0sQ0FBRTs7O2NBRy9DLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQzs7O2NBRzdDLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUM7O2NBRW5DLGdCQUFnQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLEVBQUUsWUFBWSxFQUFFLFFBQVEsQ0FBQztRQUV0RixRQUFRLENBQUMsaUJBQWlCLEdBQUcsZ0JBQWdCLENBQUM7UUFFOUMsSUFBSSxZQUFZLENBQUMsb0JBQW9CLEVBQUU7WUFDckMsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDLFNBQVM7Ozs7WUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUMsQ0FBQztTQUNyRTtRQUVELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7Ozs7OztJQUVPLGFBQWEsQ0FBQyxNQUFtQjs7Y0FDakMsYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7UUFDbkQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM1QyxDQUFDOzs7Ozs7OztJQUVPLG9CQUFvQixDQUFDLFVBQXNCLEVBQUUsTUFBbUIsRUFBRSxRQUFrQjs7Y0FDcEYsUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQzs7Y0FFaEQsZUFBZSxHQUFHLElBQUksZUFBZSxDQUFDLGNBQWMsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDOztjQUNyRSxZQUFZLEdBQWlDLFVBQVUsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDO1FBRXJGLE9BQU8sWUFBWSxDQUFDLFFBQVEsQ0FBQztJQUMvQixDQUFDOzs7Ozs7O0lBRU8sY0FBYyxDQUFDLE1BQW1CLEVBQUUsUUFBa0I7O2NBQ3RELGVBQWUsR0FBRyxJQUFJLE9BQU8sRUFBRTtRQUVyQyxlQUFlLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN4QyxlQUFlLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV4RCxPQUFPLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDNUQsQ0FBQzs7Ozs7O0lBRU8sZ0JBQWdCLENBQUMsTUFBbUI7O2NBQ3BDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFO2FBQzdDLE1BQU0sRUFBRTthQUNSLGtCQUFrQixFQUFFO2FBQ3BCLGdCQUFnQixFQUFFOztjQUVmLGFBQWEsR0FBRyxJQUFJLGFBQWEsQ0FBQztZQUN0QyxXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVc7WUFDL0IsYUFBYSxFQUFFLE1BQU0sQ0FBQyxhQUFhO1lBQ25DLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVTtZQUM3QixjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUU7WUFDcEQsZ0JBQWdCO1NBQ2pCLENBQUM7UUFFRixPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDOzs7WUFuRUYsVUFBVTs7OztZQW5DVSxRQUFRO1lBQ3BCLE9BQU87Ozs7Ozs7SUFzQ1osZ0NBQTBCOzs7OztJQUMxQiwrQkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciwgQ29tcG9uZW50UmVmLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheUNvbmZpZywgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IENvbXBvbmVudFBvcnRhbCwgUG9ydGFsSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcblxuaW1wb3J0IHsgTW9kYWxSZWYgfSBmcm9tICcuL21vZGFsLXJlZic7XG5pbXBvcnQgeyBNT0RBTF9DT05URU5UX0RBVEEgfSBmcm9tICcuL21vZGFsLnRva2Vucyc7XG5pbXBvcnQgeyBNb2RhbENvbnRhaW5lciB9IGZyb20gJy4vbW9kYWwtY29udGFpbmVyLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9kYWxDb250ZW50IHtcbiAgdGl0bGU/OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuICBib2R5Pzogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PjtcbiAgY2xvc2VCdXR0b24/OiBib29sZWFuO1xuICBhY3Rpb25zPzoge1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgdHlwZTogJ3ByaW1hcnknIHwgJ3NlY29uZGFyeSc7XG4gICAgdGFnPzogc3RyaW5nO1xuICB9W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9kYWxDb25maWcge1xuICBjbG9zZU9uQmFja2Ryb3BDbGljaz86IGJvb2xlYW47XG4gIHBhbmVsQ2xhc3M/OiBzdHJpbmc7XG4gIGhhc0JhY2tkcm9wPzogYm9vbGVhbjtcbiAgYmFja2Ryb3BDbGFzcz86IHN0cmluZztcbiAgY29udGVudD86IE1vZGFsQ29udGVudDtcbn1cblxuY29uc3QgREVGQVVMVF9DT05GSUc6IE1vZGFsQ29uZmlnID0ge1xuICBjbG9zZU9uQmFja2Ryb3BDbGljazogdHJ1ZSxcbiAgaGFzQmFja2Ryb3A6IHRydWUsXG4gIGJhY2tkcm9wQ2xhc3M6ICdiYWNrZHJvcC0tZGFyaycsXG4gIHBhbmVsQ2xhc3M6ICdtb2RhbC0tZGVmYXVsdCcsXG4gIGNvbnRlbnQ6IG51bGxcbn07XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNb2RhbFNlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheVxuICApIHsgfVxuXG4gIG9wZW4oY29uZmlnOiBNb2RhbENvbmZpZyA9IHt9KSB7XG4gICAgLy8gT3ZlcnJpZGUgZGVmYXVsdCBjb25maWd1cmF0aW9uXG4gICAgY29uc3QgZGlhbG9nQ29uZmlnID0geyAuLi5ERUZBVUxUX0NPTkZJRywgLi4uY29uZmlnIH07XG5cbiAgICAvLyBSZXR1cm5zIGFuIE92ZXJsYXlSZWYgd2hpY2ggaXMgYSBQb3J0YWxIb3N0XG4gICAgY29uc3Qgb3ZlcmxheVJlZiA9IHRoaXMuY3JlYXRlT3ZlcmxheShkaWFsb2dDb25maWcpO1xuXG4gICAgLy8gSW5zdGFudGlhdGUgcmVtb3RlIGNvbnRyb2xcbiAgICBjb25zdCBtb2RhbFJlZiA9IG5ldyBNb2RhbFJlZihvdmVybGF5UmVmKTtcblxuICAgIGNvbnN0IG92ZXJsYXlDb21wb25lbnQgPSB0aGlzLmF0dGFjaE1vZGFsQ29udGFpbmVyKG92ZXJsYXlSZWYsIGRpYWxvZ0NvbmZpZywgbW9kYWxSZWYpO1xuXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UgPSBvdmVybGF5Q29tcG9uZW50O1xuXG4gICAgaWYgKGRpYWxvZ0NvbmZpZy5jbG9zZU9uQmFja2Ryb3BDbGljaykge1xuICAgICAgb3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKF8gPT4gbW9kYWxSZWYuY2xvc2UoJ2NhbmNlbCcpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbW9kYWxSZWY7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU92ZXJsYXkoY29uZmlnOiBNb2RhbENvbmZpZykge1xuICAgIGNvbnN0IG92ZXJsYXlDb25maWcgPSB0aGlzLmdldE92ZXJsYXlDb25maWcoY29uZmlnKTtcbiAgICByZXR1cm4gdGhpcy5vdmVybGF5LmNyZWF0ZShvdmVybGF5Q29uZmlnKTtcbiAgfVxuXG4gIHByaXZhdGUgYXR0YWNoTW9kYWxDb250YWluZXIob3ZlcmxheVJlZjogT3ZlcmxheVJlZiwgY29uZmlnOiBNb2RhbENvbmZpZywgbW9kYWxSZWY6IE1vZGFsUmVmKSB7XG4gICAgY29uc3QgaW5qZWN0b3IgPSB0aGlzLmNyZWF0ZUluamVjdG9yKGNvbmZpZywgbW9kYWxSZWYpO1xuXG4gICAgY29uc3QgY29udGFpbmVyUG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbChNb2RhbENvbnRhaW5lciwgbnVsbCwgaW5qZWN0b3IpO1xuICAgIGNvbnN0IGNvbnRhaW5lclJlZjogQ29tcG9uZW50UmVmPE1vZGFsQ29udGFpbmVyPiA9IG92ZXJsYXlSZWYuYXR0YWNoKGNvbnRhaW5lclBvcnRhbCk7XG5cbiAgICByZXR1cm4gY29udGFpbmVyUmVmLmluc3RhbmNlO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVJbmplY3Rvcihjb25maWc6IE1vZGFsQ29uZmlnLCBtb2RhbFJlZjogTW9kYWxSZWYpOiBQb3J0YWxJbmplY3RvciB7XG4gICAgY29uc3QgaW5qZWN0aW9uVG9rZW5zID0gbmV3IFdlYWtNYXAoKTtcblxuICAgIGluamVjdGlvblRva2Vucy5zZXQoTW9kYWxSZWYsIG1vZGFsUmVmKTtcbiAgICBpbmplY3Rpb25Ub2tlbnMuc2V0KE1PREFMX0NPTlRFTlRfREFUQSwgY29uZmlnLmNvbnRlbnQpO1xuXG4gICAgcmV0dXJuIG5ldyBQb3J0YWxJbmplY3Rvcih0aGlzLmluamVjdG9yLCBpbmplY3Rpb25Ub2tlbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRPdmVybGF5Q29uZmlnKGNvbmZpZzogTW9kYWxDb25maWcpOiBPdmVybGF5Q29uZmlnIHtcbiAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5LnBvc2l0aW9uKClcbiAgICAgIC5nbG9iYWwoKVxuICAgICAgLmNlbnRlckhvcml6b250YWxseSgpXG4gICAgICAuY2VudGVyVmVydGljYWxseSgpO1xuXG4gICAgY29uc3Qgb3ZlcmxheUNvbmZpZyA9IG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgIGhhc0JhY2tkcm9wOiBjb25maWcuaGFzQmFja2Ryb3AsXG4gICAgICBiYWNrZHJvcENsYXNzOiBjb25maWcuYmFja2Ryb3BDbGFzcyxcbiAgICAgIHBhbmVsQ2xhc3M6IGNvbmZpZy5wYW5lbENsYXNzLFxuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLm5vb3AoKSxcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3lcbiAgICB9KTtcblxuICAgIHJldHVybiBvdmVybGF5Q29uZmlnO1xuICB9XG59XG4iXX0=