diff options
author | vempo <vitaliy.emporopulo@amdocs.com> | 2018-07-24 17:34:04 +0300 |
---|---|---|
committer | vempo <vitaliy.emporopulo@amdocs.com> | 2018-07-25 11:39:10 +0300 |
commit | a52d50e788792a63e97a9176ab319d53db7a2853 (patch) | |
tree | b1c2222cacf4b8192aea16d1e0315b1f005c5347 /sdc-workflow-designer-ui/src/app/paletx/core/overlay/overlay-ref.ts | |
parent | 3c2665debb400aef7f0ed9e235698d2ff9f859db (diff) |
Replaced old implementation at root
Old project files and directories has been moved
under 'deprecated-workflow-designer'. The old project
is not built by the CI anymore, but can be still built manually.
New modules/directories have been moved up and integrated with
the CI system.
Change-Id: I1528c792bcbcce9e50bfc294a1328a20e72c91cf
Issue-ID: SDC-1559
Signed-off-by: vempo <vitaliy.emporopulo@amdocs.com>
Diffstat (limited to 'sdc-workflow-designer-ui/src/app/paletx/core/overlay/overlay-ref.ts')
-rw-r--r-- | sdc-workflow-designer-ui/src/app/paletx/core/overlay/overlay-ref.ts | 271 |
1 files changed, 0 insertions, 271 deletions
diff --git a/sdc-workflow-designer-ui/src/app/paletx/core/overlay/overlay-ref.ts b/sdc-workflow-designer-ui/src/app/paletx/core/overlay/overlay-ref.ts deleted file mode 100644 index 03c8c2b5..00000000 --- a/sdc-workflow-designer-ui/src/app/paletx/core/overlay/overlay-ref.ts +++ /dev/null @@ -1,271 +0,0 @@ -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/* tslint:disable:array-type member-access variable-name typedef - only-arrow-functions directive-class-suffix component-class-suffix - component-selector no-unnecessary-type-assertion arrow-parens - promise-function-async*/ -import {Portal, PortalHost} from '@angular/cdk'; -import {NgZone} from '@angular/core'; -import {Observable} from 'rxjs/Observable'; -import {Subject} from 'rxjs/Subject'; - -import {OverlayState} from './overlay-state'; -import {ScrollStrategy} from './scroll/scroll-strategy'; - - -/** - * Reference to an overlay that has been created with the Overlay service. - * Used to manipulate or dispose of said overlay. - */ -export class OverlayRef implements PortalHost { - private _backdropElement: HTMLElement|null = null; - private _backdropClick: Subject<any> = new Subject(); - private _attachments = new Subject<void>(); - private _detachments = new Subject<void>(); - - constructor( - private _portalHost: PortalHost, private _pane: HTMLElement, - private _state: OverlayState, private _scrollStrategy: ScrollStrategy, - private _ngZone: NgZone) { - _scrollStrategy.attach(this); - } - - /** The overlay's HTML element */ - get overlayElement(): HTMLElement { - return this._pane; - } - - /** - * Attaches the overlay to a portal instance and adds the backdrop. - * @param portal Portal instance to which to attach the overlay. - * @returns The portal attachment result. - */ - attach(portal: Portal<any>): any { - const attachResult = this._portalHost.attach(portal); - - // Update the pane element with the given state configuration. - this._updateStackingOrder(); - this.updateSize(); - this.updateDirection(); - this.updatePosition(); - this._scrollStrategy.enable(); - - // Enable pointer events for the overlay pane element. - this._togglePointerEvents(true); - - if (this._state.hasBackdrop) { - this._attachBackdrop(); - } - - if (this._state.panelClass) { - this._pane.classList.add(this._state.panelClass); - } - - // Only emit the `attachments` event once all other setup is done. - this._attachments.next(); - - return attachResult; - } - - /** - * Detaches an overlay from a portal. - * @returns Resolves when the overlay has been detached. - */ - detach(): Promise<any> { - this.detachBackdrop(); - - // When the overlay is detached, the pane element should disable pointer - // events. This is necessary because otherwise the pane element will cover - // the page and disable pointer events therefore. Depends on the position - // strategy and the applied pane boundaries. - this._togglePointerEvents(false); - this._scrollStrategy.disable(); - - const detachmentResult = this._portalHost.detach(); - - // Only emit after everything is detached. - this._detachments.next(); - - return detachmentResult; - } - - /** - * Cleans up the overlay from the DOM. - */ - dispose(): void { - if (this._state.positionStrategy) { - this._state.positionStrategy.dispose(); - } - - if (this._scrollStrategy) { - this._scrollStrategy.disable(); - } - - this.detachBackdrop(); - this._portalHost.dispose(); - this._attachments.complete(); - this._backdropClick.complete(); - this._detachments.next(); - this._detachments.complete(); - } - - /** - * Checks whether the overlay has been attached. - */ - hasAttached(): boolean { - return this._portalHost.hasAttached(); - } - - /** - * Returns an observable that emits when the backdrop has been clicked. - */ - backdropClick(): Observable<void> { - return this._backdropClick.asObservable(); - } - - /** Returns an observable that emits when the overlay has been attached. */ - attachments(): Observable<void> { - return this._attachments.asObservable(); - } - - /** Returns an observable that emits when the overlay has been detached. */ - detachments(): Observable<void> { - return this._detachments.asObservable(); - } - - /** - * Gets the current state config of the overlay. - */ - getState(): OverlayState { - return this._state; - } - - /** Updates the position of the overlay based on the position strategy. */ - updatePosition() { - if (this._state.positionStrategy) { - this._state.positionStrategy.apply(this._pane); - } - } - - /** Updates the text direction of the overlay panel. */ - private updateDirection() { - this._pane.setAttribute('dir', this._state.direction); - } - - - /** Updates the size of the overlay based on the overlay config. */ - updateSize() { - if (this._state.width || this._state.width === 0) { - this._pane.style.width = formatCssUnit(this._state.width); - } - - if (this._state.height || this._state.height === 0) { - this._pane.style.height = formatCssUnit(this._state.height); - } - - if (this._state.minWidth || this._state.minWidth === 0) { - this._pane.style.minWidth = formatCssUnit(this._state.minWidth); - } - - if (this._state.minHeight || this._state.minHeight === 0) { - this._pane.style.minHeight = formatCssUnit(this._state.minHeight); - } - } - - /** Toggles the pointer events for the overlay pane element. */ - private _togglePointerEvents(enablePointer: boolean) { - this._pane.style.pointerEvents = enablePointer ? 'auto' : 'none'; - } - - /** Attaches a backdrop for this overlay. */ - private _attachBackdrop() { - this._backdropElement = document.createElement('div'); - this._backdropElement.classList.add('nz-overlay-backdrop'); - - if (this._state.backdropClass) { - this._backdropElement.classList.add(this._state.backdropClass); - } - - // Insert the backdrop before the pane in the DOM order, - // in order to handle stacked overlays properly. - this._pane.parentElement.insertBefore(this._backdropElement, this._pane); - - // Forward backdrop clicks such that the consumer of the overlay can perform - // whatever action desired when such a click occurs (usually closing the - // overlay). - this._backdropElement.addEventListener( - 'click', () => this._backdropClick.next(null)); - - // Add class to fade-in the backdrop after one frame. - requestAnimationFrame(() => { - if (this._backdropElement) { - this._backdropElement.classList.add('nz-overlay-backdrop-showing'); - } - }); - } - - /** - * Updates the stacking order of the element, moving it to the top if - * necessary. This is required in cases where one overlay was detached, while - * another one, that should be behind it, was destroyed. The next time both of - * them are opened, the stacking will be wrong, because the detached element's - * pane will still be in its original DOM position. - */ - private _updateStackingOrder() { - if (this._pane.nextSibling) { - this._pane.parentNode.appendChild(this._pane); - } - } - - /** Detaches the backdrop (if any) associated with the overlay. */ - detachBackdrop(): void { - const backdropToDetach = this._backdropElement; - - if (backdropToDetach) { - const finishDetach = () => { - // It may not be attached to anything in certain cases (e.g. unit - // tests). - if (backdropToDetach && backdropToDetach.parentNode) { - backdropToDetach.parentNode.removeChild(backdropToDetach); - } - - // It is possible that a new portal has been attached to this overlay - // since we started removing the backdrop. If that is the case, only - // clear the backdrop reference if it is still the same instance that we - // started to remove. - if (this._backdropElement === backdropToDetach) { - this._backdropElement = null; - } - }; - - backdropToDetach.classList.remove('nz-overlay-backdrop-showing'); - - if (this._state.backdropClass) { - backdropToDetach.classList.remove(this._state.backdropClass); - } - - backdropToDetach.addEventListener('transitionend', finishDetach); - - // If the backdrop doesn't have a transition, the `transitionend` event - // won't fire. In this case we make it unclickable and we try to remove it - // after a delay. - backdropToDetach.style.pointerEvents = 'none'; - - // Run this outside the Angular zone because there's nothing that Angular - // cares about. If it were to run inside the Angular zone, every test that - // used Overlay would have to be either async or fakeAsync. - this._ngZone.runOutsideAngular(() => { - setTimeout(finishDetach, 500); - }); - } - } -} - -function formatCssUnit(value: number|string) { - return typeof value === 'string' ? value as string : `${value}px`; -} |