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>

180 lines 13.7 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, OverlayPositionBuilder } from '@angular/cdk/overlay'; import { ComponentPortal, PortalInjector } from '@angular/cdk/portal'; import { PopoverRef } from './popover-ref'; import { POPOVER_CONTENT_DATA } from './popover.tokens'; import { PopoverContainer } from './popover-container.component'; /** @type {?} */ const positions = { bottom: { originY: 'bottom', overlayY: 'top', offsetY: 4, }, top: { originY: 'top', overlayY: 'bottom', offsetY: -4, } }; /** @type {?} */ const alignments = { left: { originX: 'start', overlayX: 'start', }, right: { originX: 'end', overlayX: 'end', }, center: { originX: 'center', overlayX: 'center', } }; /** * @record */ export function PopoverConfig() { } if (false) { /** @type {?|undefined} */ PopoverConfig.prototype.content; /** @type {?} */ PopoverConfig.prototype.position; /** @type {?} */ PopoverConfig.prototype.alignment; } /** @type {?} */ const DEFAULT_CONFIG = { content: null, position: 'bottom', alignment: 'left', }; export class PopoverService { /** * @param {?} injector * @param {?} overlay * @param {?} overlayPositionBuilder */ constructor(injector, overlay, overlayPositionBuilder) { this.injector = injector; this.overlay = overlay; this.overlayPositionBuilder = overlayPositionBuilder; } /** * @param {?=} config * @param {?=} target * @return {?} */ open(config = DEFAULT_CONFIG, target) { // Override default configuration /** @type {?} */ const popoverConfig = Object.assign({}, DEFAULT_CONFIG, config); // Returns an OverlayRef which is a PortalHost /** @type {?} */ const overlayRef = this.createOverlay(popoverConfig, target); // Instantiate remote control /** @type {?} */ const popoverRef = new PopoverRef(overlayRef); /** @type {?} */ const overlayComponent = this.attachPopoverContainer(overlayRef, popoverConfig, popoverRef); popoverRef.componentInstance = overlayComponent; overlayRef.backdropClick().subscribe((/** * @param {?} _ * @return {?} */ _ => popoverRef.close())); return popoverRef; } /** * @private * @param {?} config * @param {?} target * @return {?} */ createOverlay(config, target) { /** @type {?} */ const overlayConfig = this.getOverlayConfig(config, target); return this.overlay.create(overlayConfig); } /** * @private * @param {?} overlayRef * @param {?} config * @param {?} popoverRef * @return {?} */ attachPopoverContainer(overlayRef, config, popoverRef) { /** @type {?} */ const injector = this.createInjector(config, popoverRef); /** @type {?} */ const containerPortal = new ComponentPortal(PopoverContainer, null, injector); /** @type {?} */ const containerRef = overlayRef.attach(containerPortal); return containerRef.instance; } /** * @private * @param {?} config * @param {?} popoverRef * @return {?} */ createInjector(config, popoverRef) { /** @type {?} */ const injectionTokens = new WeakMap(); injectionTokens.set(PopoverRef, popoverRef); injectionTokens.set(POPOVER_CONTENT_DATA, config.content); return new PortalInjector(this.injector, injectionTokens); } /** * @private * @param {?} config * @param {?} target * @return {?} */ getOverlayConfig(config, target) { /** @type {?} */ const positionStrategy = this.overlayPositionBuilder .flexibleConnectedTo(target) .withPositions([(/** @type {?} */ (Object.assign({}, positions[config.position], alignments[config.alignment])))]); /** @type {?} */ const overlayConfig = new OverlayConfig({ hasBackdrop: true, backdropClass: 'cdk-overlay-transparent-backdrop', scrollStrategy: this.overlay.scrollStrategies.reposition(), positionStrategy }); return overlayConfig; } } PopoverService.decorators = [ { type: Injectable } ]; /** @nocollapse */ PopoverService.ctorParameters = () => [ { type: Injector }, { type: Overlay }, { type: OverlayPositionBuilder } ]; if (false) { /** * @type {?} * @private */ PopoverService.prototype.injector; /** * @type {?} * @private */ PopoverService.prototype.overlay; /** * @type {?} * @private */ PopoverService.prototype.overlayPositionBuilder; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGt1c2hraS9uZy1zdWthLyIsInNvdXJjZXMiOlsibGliL3BvcG92ZXIvcG9wb3Zlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBeUMsTUFBTSxlQUFlLENBQUM7QUFDNUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQWMsc0JBQXNCLEVBQXFCLE1BQU0sc0JBQXNCLENBQUM7QUFDckgsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOztNQUszRCxTQUFTLEdBQUc7SUFDaEIsTUFBTSxFQUFFO1FBQ04sT0FBTyxFQUFFLFFBQVE7UUFDakIsUUFBUSxFQUFFLEtBQUs7UUFDZixPQUFPLEVBQUUsQ0FBQztLQUNYO0lBQ0QsR0FBRyxFQUFFO1FBQ0gsT0FBTyxFQUFFLEtBQUs7UUFDZCxRQUFRLEVBQUUsUUFBUTtRQUNsQixPQUFPLEVBQUUsQ0FBQyxDQUFDO0tBQ1o7Q0FDRjs7TUFFSyxVQUFVLEdBQUc7SUFDakIsSUFBSSxFQUFFO1FBQ0osT0FBTyxFQUFFLE9BQU87UUFDaEIsUUFBUSxFQUFFLE9BQU87S0FDbEI7SUFDRCxLQUFLLEVBQUU7UUFDTCxPQUFPLEVBQUUsS0FBSztRQUNkLFFBQVEsRUFBRSxLQUFLO0tBQ2hCO0lBQ0QsTUFBTSxFQUFFO1FBQ04sT0FBTyxFQUFFLFFBQVE7UUFDakIsUUFBUSxFQUFFLFFBQVE7S0FDbkI7Q0FDRjs7OztBQUVELG1DQUlDOzs7SUFIQyxnQ0FBeUI7O0lBQ3pCLGlDQUEyQjs7SUFDM0Isa0NBQXVDOzs7TUFHbkMsY0FBYyxHQUFrQjtJQUNwQyxPQUFPLEVBQUUsSUFBSTtJQUNiLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLFNBQVMsRUFBRSxNQUFNO0NBQ2xCO0FBR0QsTUFBTSxPQUFPLGNBQWM7Ozs7OztJQUN6QixZQUNVLFFBQWtCLEVBQ2xCLE9BQWdCLEVBQ2hCLHNCQUE4QztRQUY5QyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFDaEIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtJQUNwRCxDQUFDOzs7Ozs7SUFFTCxJQUFJLENBQUMsU0FBd0IsY0FBYyxFQUFFLE1BQWdDOzs7Y0FFckUsYUFBYSxxQkFBUSxjQUFjLEVBQUssTUFBTSxDQUFFOzs7Y0FHaEQsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQzs7O2NBR3RELFVBQVUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUM7O2NBRXZDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLEVBQUUsYUFBYSxFQUFFLFVBQVUsQ0FBQztRQUUzRixVQUFVLENBQUMsaUJBQWlCLEdBQUcsZ0JBQWdCLENBQUM7UUFFaEQsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDLFNBQVM7Ozs7UUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsRUFBQyxDQUFDO1FBRTlELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7Ozs7Ozs7SUFFTyxhQUFhLENBQUMsTUFBcUIsRUFBRSxNQUFnQzs7Y0FDckUsYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDO1FBQzNELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDNUMsQ0FBQzs7Ozs7Ozs7SUFFTyxzQkFBc0IsQ0FBQyxVQUFzQixFQUFFLE1BQXFCLEVBQUUsVUFBc0I7O2NBQzVGLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUM7O2NBRWxELGVBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDOztjQUN2RSxZQUFZLEdBQW1DLFVBQVUsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDO1FBRXZGLE9BQU8sWUFBWSxDQUFDLFFBQVEsQ0FBQztJQUMvQixDQUFDOzs7Ozs7O0lBRU8sY0FBYyxDQUFDLE1BQXFCLEVBQUUsVUFBc0I7O2NBQzVELGVBQWUsR0FBRyxJQUFJLE9BQU8sRUFBRTtRQUVyQyxlQUFlLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUM1QyxlQUFlLENBQUMsR0FBRyxDQUFDLG9CQUFvQixFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUUxRCxPQUFPLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDNUQsQ0FBQzs7Ozs7OztJQUVPLGdCQUFnQixDQUFDLE1BQXFCLEVBQUUsTUFBZ0M7O2NBQ3hFLGdCQUFnQixHQUFHLElBQUksQ0FBQyxzQkFBc0I7YUFDakQsbUJBQW1CLENBQUMsTUFBTSxDQUFDO2FBQzNCLGFBQWEsQ0FBQyxDQUFDLHFDQUFLLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUssVUFBVSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBdUIsQ0FBQyxDQUFDOztjQUVyRyxhQUFhLEdBQUcsSUFBSSxhQUFhLENBQUM7WUFDdEMsV0FBVyxFQUFFLElBQUk7WUFDakIsYUFBYSxFQUFFLGtDQUFrQztZQUNqRCxjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUU7WUFDMUQsZ0JBQWdCO1NBQ2pCLENBQUM7UUFFRixPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDOzs7WUEvREYsVUFBVTs7OztZQW5EVSxRQUFRO1lBQ3BCLE9BQU87WUFBNkIsc0JBQXNCOzs7Ozs7O0lBcUQvRCxrQ0FBMEI7Ozs7O0lBQzFCLGlDQUF3Qjs7Ozs7SUFDeEIsZ0RBQXNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIENvbXBvbmVudFJlZiwgVGVtcGxhdGVSZWYsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlDb25maWcsIE92ZXJsYXlSZWYsIE92ZXJsYXlQb3NpdGlvbkJ1aWxkZXIsIENvbm5lY3RlZFBvc2l0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsLCBQb3J0YWxJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuXG5pbXBvcnQgeyBQb3BvdmVyUmVmIH0gZnJvbSAnLi9wb3BvdmVyLXJlZic7XG5pbXBvcnQgeyBQT1BPVkVSX0NPTlRFTlRfREFUQSB9IGZyb20gJy4vcG9wb3Zlci50b2tlbnMnO1xuaW1wb3J0IHsgUG9wb3ZlckNvbnRhaW5lciB9IGZyb20gJy4vcG9wb3Zlci1jb250YWluZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBza2lwLCBmaWx0ZXIsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBQb3BvdmVyQ29udGVudCB9IGZyb20gJy4vcG9wb3Zlci1jb250ZW50JztcblxuY29uc3QgcG9zaXRpb25zID0ge1xuICBib3R0b206IHtcbiAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICBvdmVybGF5WTogJ3RvcCcsXG4gICAgb2Zmc2V0WTogNCxcbiAgfSxcbiAgdG9wOiB7XG4gICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgb3ZlcmxheVk6ICdib3R0b20nLFxuICAgIG9mZnNldFk6IC00LFxuICB9XG59O1xuXG5jb25zdCBhbGlnbm1lbnRzID0ge1xuICBsZWZ0OiB7XG4gICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgfSxcbiAgcmlnaHQ6IHtcbiAgICBvcmlnaW5YOiAnZW5kJyxcbiAgICBvdmVybGF5WDogJ2VuZCcsXG4gIH0sXG4gIGNlbnRlcjoge1xuICAgIG9yaWdpblg6ICdjZW50ZXInLFxuICAgIG92ZXJsYXlYOiAnY2VudGVyJyxcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBvcG92ZXJDb25maWcge1xuICBjb250ZW50PzogUG9wb3ZlckNvbnRlbnQ7XG4gIHBvc2l0aW9uOiAndG9wJyB8ICdib3R0b20nO1xuICBhbGlnbm1lbnQ6ICdsZWZ0JyB8ICdyaWdodCcgfCAnY2VudGVyJztcbn1cblxuY29uc3QgREVGQVVMVF9DT05GSUc6IFBvcG92ZXJDb25maWcgPSB7XG4gIGNvbnRlbnQ6IG51bGwsXG4gIHBvc2l0aW9uOiAnYm90dG9tJyxcbiAgYWxpZ25tZW50OiAnbGVmdCcsXG59O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUG9wb3ZlclNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksXG4gICAgcHJpdmF0ZSBvdmVybGF5UG9zaXRpb25CdWlsZGVyOiBPdmVybGF5UG9zaXRpb25CdWlsZGVyLFxuICApIHsgfVxuXG4gIG9wZW4oY29uZmlnOiBQb3BvdmVyQ29uZmlnID0gREVGQVVMVF9DT05GSUcsIHRhcmdldDogRWxlbWVudFJlZiB8IEhUTUxFbGVtZW50KSB7XG4gICAgLy8gT3ZlcnJpZGUgZGVmYXVsdCBjb25maWd1cmF0aW9uXG4gICAgY29uc3QgcG9wb3ZlckNvbmZpZyA9IHsgLi4uREVGQVVMVF9DT05GSUcsIC4uLmNvbmZpZyB9O1xuXG4gICAgLy8gUmV0dXJucyBhbiBPdmVybGF5UmVmIHdoaWNoIGlzIGEgUG9ydGFsSG9zdFxuICAgIGNvbnN0IG92ZXJsYXlSZWYgPSB0aGlzLmNyZWF0ZU92ZXJsYXkocG9wb3ZlckNvbmZpZywgdGFyZ2V0KTtcblxuICAgIC8vIEluc3RhbnRpYXRlIHJlbW90ZSBjb250cm9sXG4gICAgY29uc3QgcG9wb3ZlclJlZiA9IG5ldyBQb3BvdmVyUmVmKG92ZXJsYXlSZWYpO1xuXG4gICAgY29uc3Qgb3ZlcmxheUNvbXBvbmVudCA9IHRoaXMuYXR0YWNoUG9wb3ZlckNvbnRhaW5lcihvdmVybGF5UmVmLCBwb3BvdmVyQ29uZmlnLCBwb3BvdmVyUmVmKTtcblxuICAgIHBvcG92ZXJSZWYuY29tcG9uZW50SW5zdGFuY2UgPSBvdmVybGF5Q29tcG9uZW50O1xuXG4gICAgb3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKF8gPT4gcG9wb3ZlclJlZi5jbG9zZSgpKTtcblxuICAgIHJldHVybiBwb3BvdmVyUmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVPdmVybGF5KGNvbmZpZzogUG9wb3ZlckNvbmZpZywgdGFyZ2V0OiBFbGVtZW50UmVmIHwgSFRNTEVsZW1lbnQpIHtcbiAgICBjb25zdCBvdmVybGF5Q29uZmlnID0gdGhpcy5nZXRPdmVybGF5Q29uZmlnKGNvbmZpZywgdGFyZ2V0KTtcbiAgICByZXR1cm4gdGhpcy5vdmVybGF5LmNyZWF0ZShvdmVybGF5Q29uZmlnKTtcbiAgfVxuXG4gIHByaXZhdGUgYXR0YWNoUG9wb3ZlckNvbnRhaW5lcihvdmVybGF5UmVmOiBPdmVybGF5UmVmLCBjb25maWc6IFBvcG92ZXJDb25maWcsIHBvcG92ZXJSZWY6IFBvcG92ZXJSZWYpIHtcbiAgICBjb25zdCBpbmplY3RvciA9IHRoaXMuY3JlYXRlSW5qZWN0b3IoY29uZmlnLCBwb3BvdmVyUmVmKTtcblxuICAgIGNvbnN0IGNvbnRhaW5lclBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwoUG9wb3ZlckNvbnRhaW5lciwgbnVsbCwgaW5qZWN0b3IpO1xuICAgIGNvbnN0IGNvbnRhaW5lclJlZjogQ29tcG9uZW50UmVmPFBvcG92ZXJDb250YWluZXI+ID0gb3ZlcmxheVJlZi5hdHRhY2goY29udGFpbmVyUG9ydGFsKTtcblxuICAgIHJldHVybiBjb250YWluZXJSZWYuaW5zdGFuY2U7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUluamVjdG9yKGNvbmZpZzogUG9wb3ZlckNvbmZpZywgcG9wb3ZlclJlZjogUG9wb3ZlclJlZik6IFBvcnRhbEluamVjdG9yIHtcbiAgICBjb25zdCBpbmplY3Rpb25Ub2tlbnMgPSBuZXcgV2Vha01hcCgpO1xuXG4gICAgaW5qZWN0aW9uVG9rZW5zLnNldChQb3BvdmVyUmVmLCBwb3BvdmVyUmVmKTtcbiAgICBpbmplY3Rpb25Ub2tlbnMuc2V0KFBPUE9WRVJfQ09OVEVOVF9EQVRBLCBjb25maWcuY29udGVudCk7XG5cbiAgICByZXR1cm4gbmV3IFBvcnRhbEluamVjdG9yKHRoaXMuaW5qZWN0b3IsIGluamVjdGlvblRva2Vucyk7XG4gIH1cblxuICBwcml2YXRlIGdldE92ZXJsYXlDb25maWcoY29uZmlnOiBQb3BvdmVyQ29uZmlnLCB0YXJnZXQ6IEVsZW1lbnRSZWYgfCBIVE1MRWxlbWVudCk6IE92ZXJsYXlDb25maWcge1xuICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLm92ZXJsYXlQb3NpdGlvbkJ1aWxkZXJcbiAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRhcmdldClcbiAgICAgIC53aXRoUG9zaXRpb25zKFt7IC4uLnBvc2l0aW9uc1tjb25maWcucG9zaXRpb25dLCAuLi5hbGlnbm1lbnRzW2NvbmZpZy5hbGlnbm1lbnRdIH0gYXMgQ29ubmVjdGVkUG9zaXRpb25dKTtcblxuICAgIGNvbnN0IG92ZXJsYXlDb25maWcgPSBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgIGJhY2tkcm9wQ2xhc3M6ICdjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCcsXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpLFxuICAgICAgcG9zaXRpb25TdHJhdGVneVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG92ZXJsYXlDb25maWc7XG4gIH1cbn1cbiJdfQ==