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