All Downloads are FREE. Search and download functionalities are using the official Maven repository.

META-INF.resources.butterfaces-ts.butterfaces-overlay.ts Maven / Gradle / Ivy

///
///

module ButterFaces {

    export class Overlay {
        isHiding:boolean;
        delay:number;
        selector:string;
        isTransparentBlockingOverlayActive:boolean;

        constructor(delay = 500, isTransparentBlockingOverlayActive = true, selector = 'body') {
            this.isHiding = true;
            this.delay = delay;
            this.isTransparentBlockingOverlayActive = isTransparentBlockingOverlayActive;
            this.selector = selector;

            console.log('ButterFaces.Overlay.constructor - creating overlay with delay is ' + this.delay + ', isTransparentBlockingOverlayActive is ' + this.isTransparentBlockingOverlayActive + ', selector is ' + this.selector);
        }

        public show() {
            let $elementsToDisable = $(this.selector);

            ButterFaces.Overlay.fadeOutDetachtedOverlays();

            $elementsToDisable.each((index, elementToDisable) => {

                let $elementToDisable = $(elementToDisable);

                this.isHiding = false;


                if ($elementToDisable.attr('data-overlay-uuid') !== undefined) {
                    if (ButterFaces.Overlay.findOverlay($elementToDisable.attr('data-overlay-uuid')).length > 0) {
                        console.log("ButterFaces.Overlay.show - overlay already existing. Skip showing overlay");
                        return;
                    } else {
                        $elementToDisable.removeAttr('data-overlay-uuid');
                    }
                }

                console.log("ButterFaces.Overlay.show - appending not displayed overlay to body");
                var uuid = ButterFaces.Guid.newGuid();

                let $overlay = $('
'); $elementToDisable.attr('data-overlay-uuid', uuid); if (this.selector === 'body') { $overlay.addClass('overlay-body'); } else { // TODO if blockpage is true set it to max size $overlay.offset($elementToDisable.offset()) .width($elementToDisable.outerWidth()) .height($elementToDisable.outerHeight()) .addClass('overlay-body-child') .css({'position': 'absolute'}); // IE overrides css position so set it here } $('body').append($overlay); if (this.isTransparentBlockingOverlayActive) { console.log("ButterFaces.Overlay.show - isTransparentBlockingOverlayActive is true, showing transparent overlay direcly"); $overlay.show(); } window.setTimeout(() => { if (!this.isHiding && !this.isTransparentBlockingOverlayActive) { console.log("ButterFaces.Overlay.show - deferred: isTransparentBlockingOverlayActive is false, showing transparent overlay after delay"); $overlay.show(); } if (!this.isHiding) { console.log("ButterFaces.Overlay.show - deferred: starting animation to make overlay intransparent"); $overlay .stop(true) .animate({ opacity: 1 }, 300, () => { console.log("ButterFaces.Overlay.show - deferred: animation ended to make overlay intransparent"); }); } }, this.delay); //} }); } public hide() { console.log("ButterFaces.Overlay.hide - starting animation to make overlay transparent"); let $elementsToDisable = $(this.selector); this.isHiding = true; ButterFaces.Overlay.fadeOutDetachtedOverlays(); $elementsToDisable.each((index, elementToDisable) => { let $elementToDisable = $(elementToDisable); let overlayUuid = $elementToDisable.attr('data-overlay-uuid'); if (overlayUuid !== undefined && ButterFaces.Overlay.findOverlay(overlayUuid).length > 0) { let $overlay = ButterFaces.Overlay.findOverlay($elementToDisable.attr('data-overlay-uuid')); ButterFaces.Overlay.fadeOutOverlay($overlay); } }); } public static hideAll() { console.log("ButterFaces.Overlay.hideAll - starting animation to make all overlays transparent"); ButterFaces.Overlay.fadeOutDetachtedOverlays(); ButterFaces.Overlay.fadeOutAttachtedOverlays(); } private static fadeOutDetachtedOverlays() { // remove unbinded elements $('.butter-component-overlay').each((index, elementToCheck) => { let $overlay = $(elementToCheck); let uuidToCheck = $(elementToCheck).attr('data-overlay-uuid'); if ($('[data-overlay-uuid=' + uuidToCheck + ']').length == 1) { ButterFaces.Overlay.fadeOutOverlay($overlay); } }); }; private static fadeOutAttachtedOverlays() { // remove binded elements $('.butter-component-overlay').each((index, elementToCheck) => { let $overlay = $(elementToCheck); let uuidToCheck = $(elementToCheck).attr('data-overlay-uuid'); let elements = $('[data-overlay-uuid=' + uuidToCheck + ']'); if (elements.length > 1) { ButterFaces.Overlay.fadeOutOverlay($overlay); elements.each((index, element) => { let $element = $(element); $element.removeAttr('data-overlay-uuid'); }); } }); }; private static fadeOutOverlay($overlay:any) { $overlay .stop(true) .animate({ opacity: 0 }, 300, () => { $overlay.remove(); console.log("ButterFaces.Overlay.hide - animation ended to make overlay transparent, OVERLAY REMOVED"); }); }; private static findOverlay(uuid:String) { return $("body .butter-component-overlay[data-overlay-uuid='" + uuid + "']"); } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy