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

The newest version!
///
///
///

namespace ButterFaces {

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

        constructor(delay = 500, isTransparentBlockingOverlayActive = true, selector:any = "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 (!ButterFaces.Object.isNullOrUndefined($elementToDisable.attr("data-overlay-uuid"))) {
                    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");
                let 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 (!ButterFaces.Object.isNullOrUndefined(overlayUuid) && 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