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>

163 lines 12 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 { SheetRef } from './sheet-ref'; import { SHEET_CONTENT_DATA } from './sheet.tokens'; import { SheetContainer } from './sheet-container.component'; /** * @record */ export function SheetContent() { } if (false) { /** @type {?|undefined} */ SheetContent.prototype.title; /** @type {?|undefined} */ SheetContent.prototype.body; /** @type {?|undefined} */ SheetContent.prototype.closeButton; /** @type {?|undefined} */ SheetContent.prototype.actions; } /** * @record */ export function SheetConfig() { } if (false) { /** @type {?|undefined} */ SheetConfig.prototype.closeOnBackdropClick; /** @type {?|undefined} */ SheetConfig.prototype.panelClass; /** @type {?|undefined} */ SheetConfig.prototype.hasBackdrop; /** @type {?|undefined} */ SheetConfig.prototype.backdropClass; /** @type {?|undefined} */ SheetConfig.prototype.content; } /** @type {?} */ const DEFAULT_CONFIG = { closeOnBackdropClick: true, hasBackdrop: true, backdropClass: 'cdk-overlay-transparent-backdrop', panelClass: 'modal--default', content: null }; export class SheetService { /** * @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 SheetRef(overlayRef); /** @type {?} */ const overlayComponent = this.attachSheetContainer(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 {?} */ attachSheetContainer(overlayRef, config, modalRef) { /** @type {?} */ const injector = this.createInjector(config, modalRef); /** @type {?} */ const containerPortal = new ComponentPortal(SheetContainer, 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(SheetRef, modalRef); injectionTokens.set(SHEET_CONTENT_DATA, config.content); return new PortalInjector(this.injector, injectionTokens); } /** * @private * @param {?} config * @return {?} */ getOverlayConfig(config) { /** @type {?} */ const positionStrategy = this.overlay.position() .global(); /** @type {?} */ const overlayConfig = new OverlayConfig({ hasBackdrop: config.hasBackdrop, backdropClass: config.backdropClass, panelClass: config.panelClass, scrollStrategy: this.overlay.scrollStrategies.noop(), positionStrategy }); return overlayConfig; } } SheetService.decorators = [ { type: Injectable } ]; /** @nocollapse */ SheetService.ctorParameters = () => [ { type: Injector }, { type: Overlay } ]; if (false) { /** * @type {?} * @private */ SheetService.prototype.injector; /** * @type {?} * @private */ SheetService.prototype.overlay; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlZXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BrdXNoa2kvbmctc3VrYS8iLCJzb3VyY2VzIjpbImxpYi9zaGVldC9zaGVldC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBNkIsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdkMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7O0FBRTdELGtDQVNDOzs7SUFSQyw2QkFBa0M7O0lBQ2xDLDRCQUFpQzs7SUFDakMsbUNBQXNCOztJQUN0QiwrQkFJSTs7Ozs7QUFHTixpQ0FNQzs7O0lBTEMsMkNBQStCOztJQUMvQixpQ0FBb0I7O0lBQ3BCLGtDQUFzQjs7SUFDdEIsb0NBQXVCOztJQUN2Qiw4QkFBdUI7OztNQUduQixjQUFjLEdBQWdCO0lBQ2xDLG9CQUFvQixFQUFFLElBQUk7SUFDMUIsV0FBVyxFQUFFLElBQUk7SUFDakIsYUFBYSxFQUFFLGtDQUFrQztJQUNqRCxVQUFVLEVBQUUsZ0JBQWdCO0lBQzVCLE9BQU8sRUFBRSxJQUFJO0NBQ2Q7QUFHRCxNQUFNLE9BQU8sWUFBWTs7Ozs7SUFFdkIsWUFDVSxRQUFrQixFQUNsQixPQUFnQjtRQURoQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLFlBQU8sR0FBUCxPQUFPLENBQVM7SUFDdEIsQ0FBQzs7Ozs7SUFFTCxJQUFJLENBQUMsU0FBc0IsRUFBRTs7O2NBRXJCLFlBQVkscUJBQVEsY0FBYyxFQUFLLE1BQU0sQ0FBRTs7O2NBRy9DLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQzs7O2NBRzdDLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUM7O2NBRW5DLGdCQUFnQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLEVBQUUsWUFBWSxFQUFFLFFBQVEsQ0FBQztRQUV0RixRQUFRLENBQUMsaUJBQWlCLEdBQUcsZ0JBQWdCLENBQUM7UUFFOUMsSUFBSSxZQUFZLENBQUMsb0JBQW9CLEVBQUU7WUFDckMsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDLFNBQVM7Ozs7WUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUMsQ0FBQztTQUNyRTtRQUVELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7Ozs7OztJQUVPLGFBQWEsQ0FBQyxNQUFtQjs7Y0FDakMsYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7UUFDbkQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM1QyxDQUFDOzs7Ozs7OztJQUVPLG9CQUFvQixDQUFDLFVBQXNCLEVBQUUsTUFBbUIsRUFBRSxRQUFrQjs7Y0FDcEYsUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQzs7Y0FFaEQsZUFBZSxHQUFHLElBQUksZUFBZSxDQUFDLGNBQWMsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDOztjQUNyRSxZQUFZLEdBQWlDLFVBQVUsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDO1FBRXJGLE9BQU8sWUFBWSxDQUFDLFFBQVEsQ0FBQztJQUMvQixDQUFDOzs7Ozs7O0lBRU8sY0FBYyxDQUFDLE1BQW1CLEVBQUUsUUFBa0I7O2NBQ3RELGVBQWUsR0FBRyxJQUFJLE9BQU8sRUFBRTtRQUVyQyxlQUFlLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN4QyxlQUFlLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV4RCxPQUFPLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDNUQsQ0FBQzs7Ozs7O0lBRU8sZ0JBQWdCLENBQUMsTUFBbUI7O2NBQ3BDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFO2FBQzdDLE1BQU0sRUFBRTs7Y0FFTCxhQUFhLEdBQUcsSUFBSSxhQUFhLENBQUM7WUFDdEMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXO1lBQy9CLGFBQWEsRUFBRSxNQUFNLENBQUMsYUFBYTtZQUNuQyxVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVU7WUFDN0IsY0FBYyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFO1lBQ3BELGdCQUFnQjtTQUNqQixDQUFDO1FBRUYsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQzs7O1lBakVGLFVBQVU7Ozs7WUFuQ1UsUUFBUTtZQUNwQixPQUFPOzs7Ozs7O0lBc0NaLGdDQUEwQjs7Ozs7SUFDMUIsK0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIENvbXBvbmVudFJlZiwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlDb25maWcsIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwsIFBvcnRhbEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5cbmltcG9ydCB7IFNoZWV0UmVmIH0gZnJvbSAnLi9zaGVldC1yZWYnO1xuaW1wb3J0IHsgU0hFRVRfQ09OVEVOVF9EQVRBIH0gZnJvbSAnLi9zaGVldC50b2tlbnMnO1xuaW1wb3J0IHsgU2hlZXRDb250YWluZXIgfSBmcm9tICcuL3NoZWV0LWNvbnRhaW5lci5jb21wb25lbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNoZWV0Q29udGVudCB7XG4gIHRpdGxlPzogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PjtcbiAgYm9keT86IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT47XG4gIGNsb3NlQnV0dG9uPzogYm9vbGVhbjtcbiAgYWN0aW9ucz86IHtcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIHR5cGU6ICdwcmltYXJ5JyB8ICdzZWNvbmRhcnknO1xuICAgIHRhZz86IHN0cmluZztcbiAgfVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNoZWV0Q29uZmlnIHtcbiAgY2xvc2VPbkJhY2tkcm9wQ2xpY2s/OiBib29sZWFuO1xuICBwYW5lbENsYXNzPzogc3RyaW5nO1xuICBoYXNCYWNrZHJvcD86IGJvb2xlYW47XG4gIGJhY2tkcm9wQ2xhc3M/OiBzdHJpbmc7XG4gIGNvbnRlbnQ/OiBTaGVldENvbnRlbnQ7XG59XG5cbmNvbnN0IERFRkFVTFRfQ09ORklHOiBTaGVldENvbmZpZyA9IHtcbiAgY2xvc2VPbkJhY2tkcm9wQ2xpY2s6IHRydWUsXG4gIGhhc0JhY2tkcm9wOiB0cnVlLFxuICBiYWNrZHJvcENsYXNzOiAnY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AnLFxuICBwYW5lbENsYXNzOiAnbW9kYWwtLWRlZmF1bHQnLFxuICBjb250ZW50OiBudWxsXG59O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2hlZXRTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXlcbiAgKSB7IH1cblxuICBvcGVuKGNvbmZpZzogU2hlZXRDb25maWcgPSB7fSkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgY29uZmlndXJhdGlvblxuICAgIGNvbnN0IGRpYWxvZ0NvbmZpZyA9IHsgLi4uREVGQVVMVF9DT05GSUcsIC4uLmNvbmZpZyB9O1xuXG4gICAgLy8gUmV0dXJucyBhbiBPdmVybGF5UmVmIHdoaWNoIGlzIGEgUG9ydGFsSG9zdFxuICAgIGNvbnN0IG92ZXJsYXlSZWYgPSB0aGlzLmNyZWF0ZU92ZXJsYXkoZGlhbG9nQ29uZmlnKTtcblxuICAgIC8vIEluc3RhbnRpYXRlIHJlbW90ZSBjb250cm9sXG4gICAgY29uc3QgbW9kYWxSZWYgPSBuZXcgU2hlZXRSZWYob3ZlcmxheVJlZik7XG5cbiAgICBjb25zdCBvdmVybGF5Q29tcG9uZW50ID0gdGhpcy5hdHRhY2hTaGVldENvbnRhaW5lcihvdmVybGF5UmVmLCBkaWFsb2dDb25maWcsIG1vZGFsUmVmKTtcblxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlID0gb3ZlcmxheUNvbXBvbmVudDtcblxuICAgIGlmIChkaWFsb2dDb25maWcuY2xvc2VPbkJhY2tkcm9wQ2xpY2spIHtcbiAgICAgIG92ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZShfID0+IG1vZGFsUmVmLmNsb3NlKCdjYW5jZWwnKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1vZGFsUmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVPdmVybGF5KGNvbmZpZzogU2hlZXRDb25maWcpIHtcbiAgICBjb25zdCBvdmVybGF5Q29uZmlnID0gdGhpcy5nZXRPdmVybGF5Q29uZmlnKGNvbmZpZyk7XG4gICAgcmV0dXJuIHRoaXMub3ZlcmxheS5jcmVhdGUob3ZlcmxheUNvbmZpZyk7XG4gIH1cblxuICBwcml2YXRlIGF0dGFjaFNoZWV0Q29udGFpbmVyKG92ZXJsYXlSZWY6IE92ZXJsYXlSZWYsIGNvbmZpZzogU2hlZXRDb25maWcsIG1vZGFsUmVmOiBTaGVldFJlZikge1xuICAgIGNvbnN0IGluamVjdG9yID0gdGhpcy5jcmVhdGVJbmplY3Rvcihjb25maWcsIG1vZGFsUmVmKTtcblxuICAgIGNvbnN0IGNvbnRhaW5lclBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwoU2hlZXRDb250YWluZXIsIG51bGwsIGluamVjdG9yKTtcbiAgICBjb25zdCBjb250YWluZXJSZWY6IENvbXBvbmVudFJlZjxTaGVldENvbnRhaW5lcj4gPSBvdmVybGF5UmVmLmF0dGFjaChjb250YWluZXJQb3J0YWwpO1xuXG4gICAgcmV0dXJuIGNvbnRhaW5lclJlZi5pbnN0YW5jZTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlSW5qZWN0b3IoY29uZmlnOiBTaGVldENvbmZpZywgbW9kYWxSZWY6IFNoZWV0UmVmKTogUG9ydGFsSW5qZWN0b3Ige1xuICAgIGNvbnN0IGluamVjdGlvblRva2VucyA9IG5ldyBXZWFrTWFwKCk7XG5cbiAgICBpbmplY3Rpb25Ub2tlbnMuc2V0KFNoZWV0UmVmLCBtb2RhbFJlZik7XG4gICAgaW5qZWN0aW9uVG9rZW5zLnNldChTSEVFVF9DT05URU5UX0RBVEEsIGNvbmZpZy5jb250ZW50KTtcblxuICAgIHJldHVybiBuZXcgUG9ydGFsSW5qZWN0b3IodGhpcy5pbmplY3RvciwgaW5qZWN0aW9uVG9rZW5zKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0T3ZlcmxheUNvbmZpZyhjb25maWc6IFNoZWV0Q29uZmlnKTogT3ZlcmxheUNvbmZpZyB7XG4gICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheS5wb3NpdGlvbigpXG4gICAgICAuZ2xvYmFsKCk7XG5cbiAgICBjb25zdCBvdmVybGF5Q29uZmlnID0gbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgaGFzQmFja2Ryb3A6IGNvbmZpZy5oYXNCYWNrZHJvcCxcbiAgICAgIGJhY2tkcm9wQ2xhc3M6IGNvbmZpZy5iYWNrZHJvcENsYXNzLFxuICAgICAgcGFuZWxDbGFzczogY29uZmlnLnBhbmVsQ2xhc3MsXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMubm9vcCgpLFxuICAgICAgcG9zaXRpb25TdHJhdGVneVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG92ZXJsYXlDb25maWc7XG4gIH1cbn1cbiJdfQ==