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>

168 lines 11.8 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 { ToastRef } from './toast-ref'; import { ToastContainer } from './toast-container.component'; import { TOAST_CONFIG_DATA } from './toast.tokens'; /** * @record */ export function ToastContent() { } if (false) { /** @type {?} */ ToastContent.prototype.type; /** @type {?|undefined} */ ToastContent.prototype.body; } /** * @record */ export function ToastConfig() { } if (false) { /** @type {?|undefined} */ ToastConfig.prototype.content; /** @type {?|undefined} */ ToastConfig.prototype.position; /** @type {?|undefined} */ ToastConfig.prototype.animation; } /** @type {?} */ const DEFAULT_CONFIG = { position: { top: 20, }, animation: { fadeOut: 2500, fadeIn: 150, }, content: null, }; export class ToastService { /** * @param {?} injector * @param {?} overlay */ constructor(injector, overlay) { this.injector = injector; this.overlay = overlay; } /** * @param {?=} config * @return {?} */ show(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 toastRef = new ToastRef(overlayRef); this.lastToast = toastRef; /** @type {?} */ const overlayComponent = this.attachToastContainer(overlayRef, dialogConfig, toastRef); toastRef.componentInstance = overlayComponent; return toastRef; } /** * @private * @param {?} config * @return {?} */ createOverlay(config) { /** @type {?} */ const overlayConfig = this.getOverlayConfig(config); return this.overlay.create(overlayConfig); } /** * @private * @param {?} overlayRef * @param {?} config * @param {?} toastRef * @return {?} */ attachToastContainer(overlayRef, config, toastRef) { /** @type {?} */ const injector = this.createInjector(config, toastRef); /** @type {?} */ const containerPortal = new ComponentPortal(ToastContainer, null, injector); /** @type {?} */ const containerRef = overlayRef.attach(containerPortal); return containerRef.instance; } /** * @private * @param {?} config * @param {?} toastRef * @return {?} */ createInjector(config, toastRef) { /** @type {?} */ const injectionTokens = new WeakMap(); injectionTokens.set(ToastRef, toastRef); injectionTokens.set(TOAST_CONFIG_DATA, config); return new PortalInjector(this.injector, injectionTokens); } /** * @private * @param {?} config * @return {?} */ getOverlayConfig(config) { /** @type {?} */ const positionStrategy = this.overlay.position() .global() .centerHorizontally() .top(this.getPosition(config)); /** @type {?} */ const overlayConfig = new OverlayConfig({ positionStrategy }); return overlayConfig; } /** * @param {?} config * @return {?} */ getPosition(config) { /** @type {?} */ const lastToastIsVisible = this.lastToast && this.lastToast.isVisible(); /** @type {?} */ const position = lastToastIsVisible ? this.lastToast.getPosition().bottom : config.position.top; return position + 'px'; } } ToastService.decorators = [ { type: Injectable } ]; /** @nocollapse */ ToastService.ctorParameters = () => [ { type: Injector }, { type: Overlay } ]; if (false) { /** * @type {?} * @private */ ToastService.prototype.lastToast; /** * @type {?} * @private */ ToastService.prototype.injector; /** * @type {?} * @private */ ToastService.prototype.overlay; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BrdXNoa2kvbmctc3VrYS8iLCJzb3VyY2VzIjpbImxpYi90b2FzdC90b2FzdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBNkIsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdkMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBSW5ELGtDQUdDOzs7SUFGQyw0QkFBZ0I7O0lBQ2hCLDRCQUFpQzs7Ozs7QUFHbkMsaUNBU0M7OztJQVJDLDhCQUF1Qjs7SUFDdkIsK0JBRUU7O0lBQ0YsZ0NBR0U7OztNQUdFLGNBQWMsR0FBZ0I7SUFDbEMsUUFBUSxFQUFFO1FBQ1IsR0FBRyxFQUFFLEVBQUU7S0FDUjtJQUNELFNBQVMsRUFBRTtRQUNULE9BQU8sRUFBRSxJQUFJO1FBQ2IsTUFBTSxFQUFFLEdBQUc7S0FDWjtJQUNELE9BQU8sRUFBRSxJQUFJO0NBQ2Q7QUFHRCxNQUFNLE9BQU8sWUFBWTs7Ozs7SUFHdkIsWUFDVSxRQUFrQixFQUNsQixPQUFnQjtRQURoQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLFlBQU8sR0FBUCxPQUFPLENBQVM7SUFDdEIsQ0FBQzs7Ozs7SUFFTCxJQUFJLENBQUMsU0FBc0IsRUFBRTs7O2NBRXJCLFlBQVkscUJBQVEsY0FBYyxFQUFLLE1BQU0sQ0FBRTs7O2NBRy9DLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQzs7O2NBRzdDLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUM7UUFFekMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7O2NBRXBCLGdCQUFnQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLEVBQUUsWUFBWSxFQUFFLFFBQVEsQ0FBQztRQUV0RixRQUFRLENBQUMsaUJBQWlCLEdBQUcsZ0JBQWdCLENBQUM7UUFFOUMsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQzs7Ozs7O0lBRU8sYUFBYSxDQUFDLE1BQW1COztjQUNqQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztRQUNuRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzVDLENBQUM7Ozs7Ozs7O0lBRU8sb0JBQW9CLENBQUMsVUFBc0IsRUFBRSxNQUFtQixFQUFFLFFBQWtCOztjQUNwRixRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDOztjQUVoRCxlQUFlLEdBQUcsSUFBSSxlQUFlLENBQUMsY0FBYyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUM7O2NBQ3JFLFlBQVksR0FBaUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUM7UUFFckYsT0FBTyxZQUFZLENBQUMsUUFBUSxDQUFDO0lBQy9CLENBQUM7Ozs7Ozs7SUFFTyxjQUFjLENBQUMsTUFBbUIsRUFBRSxRQUFrQjs7Y0FDdEQsZUFBZSxHQUFHLElBQUksT0FBTyxFQUFFO1FBRXJDLGVBQWUsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3hDLGVBQWUsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFL0MsT0FBTyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQzVELENBQUM7Ozs7OztJQUVPLGdCQUFnQixDQUFDLE1BQW1COztjQUNwQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRTthQUM3QyxNQUFNLEVBQUU7YUFDUixrQkFBa0IsRUFBRTthQUNwQixHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQzs7Y0FFMUIsYUFBYSxHQUFHLElBQUksYUFBYSxDQUFDO1lBQ3RDLGdCQUFnQjtTQUNqQixDQUFDO1FBRUYsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQzs7Ozs7SUFFRCxXQUFXLENBQUMsTUFBbUI7O2NBQ3ZCLGtCQUFrQixHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUU7O2NBQ2pFLFFBQVEsR0FBRyxrQkFBa0I7WUFDakMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsTUFBTTtZQUNyQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHO1FBRXZCLE9BQU8sUUFBUSxHQUFHLElBQUksQ0FBQztJQUN6QixDQUFDOzs7WUF2RUYsVUFBVTs7OztZQXJDVSxRQUFRO1lBQ3BCLE9BQU87Ozs7Ozs7SUFzQ2QsaUNBQTRCOzs7OztJQUcxQixnQ0FBMEI7Ozs7O0lBQzFCLCtCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBDb21wb25lbnRSZWYsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5Q29uZmlnLCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsLCBQb3J0YWxJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuXG5pbXBvcnQgeyBUb2FzdFJlZiB9IGZyb20gJy4vdG9hc3QtcmVmJztcbmltcG9ydCB7IFRvYXN0Q29udGFpbmVyIH0gZnJvbSAnLi90b2FzdC1jb250YWluZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFRPQVNUX0NPTkZJR19EQVRBIH0gZnJvbSAnLi90b2FzdC50b2tlbnMnO1xuXG5leHBvcnQgdHlwZSBUb2FzdFR5cGUgPSAnaW5mbycgfCAnc3VjY2VzcycgfCAnYXR0ZW50aW9uJyB8ICdhbGVydCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9hc3RDb250ZW50IHtcbiAgdHlwZTogVG9hc3RUeXBlO1xuICBib2R5Pzogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUb2FzdENvbmZpZyB7XG4gIGNvbnRlbnQ/OiBUb2FzdENvbnRlbnQ7XG4gIHBvc2l0aW9uPzoge1xuICAgIHRvcDogbnVtYmVyO1xuICB9O1xuICBhbmltYXRpb24/OiB7XG4gICAgZmFkZU91dDogbnVtYmVyO1xuICAgIGZhZGVJbjogbnVtYmVyO1xuICB9O1xufVxuXG5jb25zdCBERUZBVUxUX0NPTkZJRzogVG9hc3RDb25maWcgPSB7XG4gIHBvc2l0aW9uOiB7XG4gICAgdG9wOiAyMCxcbiAgfSxcbiAgYW5pbWF0aW9uOiB7XG4gICAgZmFkZU91dDogMjUwMCxcbiAgICBmYWRlSW46IDE1MCxcbiAgfSxcbiAgY29udGVudDogbnVsbCxcbn07XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUb2FzdFNlcnZpY2Uge1xuICBwcml2YXRlIGxhc3RUb2FzdDogVG9hc3RSZWY7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5XG4gICkgeyB9XG5cbiAgc2hvdyhjb25maWc6IFRvYXN0Q29uZmlnID0ge30pIHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb25cbiAgICBjb25zdCBkaWFsb2dDb25maWcgPSB7IC4uLkRFRkFVTFRfQ09ORklHLCAuLi5jb25maWcgfTtcblxuICAgIC8vIFJldHVybnMgYW4gT3ZlcmxheVJlZiB3aGljaCBpcyBhIFBvcnRhbEhvc3RcbiAgICBjb25zdCBvdmVybGF5UmVmID0gdGhpcy5jcmVhdGVPdmVybGF5KGRpYWxvZ0NvbmZpZyk7XG5cbiAgICAvLyBJbnN0YW50aWF0ZSByZW1vdGUgY29udHJvbFxuICAgIGNvbnN0IHRvYXN0UmVmID0gbmV3IFRvYXN0UmVmKG92ZXJsYXlSZWYpO1xuXG4gICAgdGhpcy5sYXN0VG9hc3QgPSB0b2FzdFJlZjtcblxuICAgIGNvbnN0IG92ZXJsYXlDb21wb25lbnQgPSB0aGlzLmF0dGFjaFRvYXN0Q29udGFpbmVyKG92ZXJsYXlSZWYsIGRpYWxvZ0NvbmZpZywgdG9hc3RSZWYpO1xuXG4gICAgdG9hc3RSZWYuY29tcG9uZW50SW5zdGFuY2UgPSBvdmVybGF5Q29tcG9uZW50O1xuXG4gICAgcmV0dXJuIHRvYXN0UmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVPdmVybGF5KGNvbmZpZzogVG9hc3RDb25maWcpIHtcbiAgICBjb25zdCBvdmVybGF5Q29uZmlnID0gdGhpcy5nZXRPdmVybGF5Q29uZmlnKGNvbmZpZyk7XG4gICAgcmV0dXJuIHRoaXMub3ZlcmxheS5jcmVhdGUob3ZlcmxheUNvbmZpZyk7XG4gIH1cblxuICBwcml2YXRlIGF0dGFjaFRvYXN0Q29udGFpbmVyKG92ZXJsYXlSZWY6IE92ZXJsYXlSZWYsIGNvbmZpZzogVG9hc3RDb25maWcsIHRvYXN0UmVmOiBUb2FzdFJlZikge1xuICAgIGNvbnN0IGluamVjdG9yID0gdGhpcy5jcmVhdGVJbmplY3Rvcihjb25maWcsIHRvYXN0UmVmKTtcblxuICAgIGNvbnN0IGNvbnRhaW5lclBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwoVG9hc3RDb250YWluZXIsIG51bGwsIGluamVjdG9yKTtcbiAgICBjb25zdCBjb250YWluZXJSZWY6IENvbXBvbmVudFJlZjxUb2FzdENvbnRhaW5lcj4gPSBvdmVybGF5UmVmLmF0dGFjaChjb250YWluZXJQb3J0YWwpO1xuXG4gICAgcmV0dXJuIGNvbnRhaW5lclJlZi5pbnN0YW5jZTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlSW5qZWN0b3IoY29uZmlnOiBUb2FzdENvbmZpZywgdG9hc3RSZWY6IFRvYXN0UmVmKTogUG9ydGFsSW5qZWN0b3Ige1xuICAgIGNvbnN0IGluamVjdGlvblRva2VucyA9IG5ldyBXZWFrTWFwKCk7XG5cbiAgICBpbmplY3Rpb25Ub2tlbnMuc2V0KFRvYXN0UmVmLCB0b2FzdFJlZik7XG4gICAgaW5qZWN0aW9uVG9rZW5zLnNldChUT0FTVF9DT05GSUdfREFUQSwgY29uZmlnKTtcblxuICAgIHJldHVybiBuZXcgUG9ydGFsSW5qZWN0b3IodGhpcy5pbmplY3RvciwgaW5qZWN0aW9uVG9rZW5zKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0T3ZlcmxheUNvbmZpZyhjb25maWc6IFRvYXN0Q29uZmlnKTogT3ZlcmxheUNvbmZpZyB7XG4gICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheS5wb3NpdGlvbigpXG4gICAgICAuZ2xvYmFsKClcbiAgICAgIC5jZW50ZXJIb3Jpem9udGFsbHkoKVxuICAgICAgLnRvcCh0aGlzLmdldFBvc2l0aW9uKGNvbmZpZykpO1xuXG4gICAgY29uc3Qgb3ZlcmxheUNvbmZpZyA9IG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3lcbiAgICB9KTtcblxuICAgIHJldHVybiBvdmVybGF5Q29uZmlnO1xuICB9XG5cbiAgZ2V0UG9zaXRpb24oY29uZmlnOiBUb2FzdENvbmZpZykge1xuICAgIGNvbnN0IGxhc3RUb2FzdElzVmlzaWJsZSA9IHRoaXMubGFzdFRvYXN0ICYmIHRoaXMubGFzdFRvYXN0LmlzVmlzaWJsZSgpO1xuICAgIGNvbnN0IHBvc2l0aW9uID0gbGFzdFRvYXN0SXNWaXNpYmxlXG4gICAgICA/IHRoaXMubGFzdFRvYXN0LmdldFBvc2l0aW9uKCkuYm90dG9tXG4gICAgICA6IGNvbmZpZy5wb3NpdGlvbi50b3A7XG5cbiAgICByZXR1cm4gcG9zaXRpb24gKyAncHgnO1xuICB9XG5cbn1cbiJdfQ==