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