Components
53
Accordion Items Article Selection Author Info Basic Carousel Basic Hero Basic Map Blog Pull Out Carousel Carousel Contact Content Accordion Content Carousel Content Image Cta Cta Bar Cta Blocks Cta Collage Event Content Events Grid Example Find Firm Firm Search Firms By Town Gated Content Download Guides Carousel Hero History Homepage Hero Image Content Cta Image List Content Industries Job Content Job Listings Local Firm Carousel Our Firms Pages Carousel Partners Partners Slider People Listing Post Carousel Post Feed Pullquote Section Wrap Service List Split Content Stats Tax Guides Team Grid Title Logos Two Column Video Video Carousel Video Old

Partners

There are no ACF fields assigned to this component.

				
@import "../../resources/scss/util/variables";
@import "../../resources/scss/util/mixins";

.block-partners {
	.container {
		@include bp($md) {
			border-top: 1px solid $border-grey;
			position: relative;
		}

		&:after {
			width: 50vw;
			height: 1px;
			background-color: $border-grey;
			position: absolute;
			top: 0;
			left: 100%;
			pointer-events: none;
			transform: translateY(-1px);

			@include bp($md) {
				content: "";
			}
		}
	}

	.col-partner {
		border-top: 1px solid $border-grey;

		@include bp($md) {
			border-top: none;
		}

		@include bp($lg) {
			border-right: 1px solid $border-grey;
		}
	}

	.col--odd {
		@include bp($md) {
			border-right: 1px solid $border-grey;
		}
	}

	&__partners {
		display: flex;
		flex-direction: column;
	}

	&__row {
		display: grid;
		grid-template-columns: 1fr;

		@include bp($lg) {
			gap: rem-calc(40);
		}

		&:first-of-type {
			border-top: none;
		}

		@include bp($lg) {
			grid-template-columns: repeat(2, 1fr);
			border-top: 1px solid $border-grey;
		}

		&:first-of-type {
			border-top: none;
		}
	}

	&__partner {
		padding-top: rem-calc(40);
		padding-bottom: rem-calc(40);

		@include bp($md) {
			padding-top: rem-calc(60);
			padding-bottom: rem-calc(76);
		}

		&--dynamic {
			padding-left: rem-calc(16);
			padding-right: rem-calc(16);
			border-bottom: 1px solid $border-grey;

			@include bp($md) {
				padding-left: rem-calc(40);
				padding-right: rem-calc(40);
				border-top: none;
			}

			@include bp($lg) {
				border-right: 1px solid $border-grey;
				border-bottom: none;
			}

			@include bp($xxl) {
				padding-left: rem-calc(120);
				padding-right: rem-calc(120);
			}

			&:nth-child(2n) {
				@include bp($md) {
					border-right: none;
				}
			}
		}

		> img {
			max-width: rem-calc(184);
		}

		> img,
		picture {
			margin-bottom: rem-calc(24);

			@include bp($md) {
				margin-bottom: rem-calc(36);
			}
		}

		.content-container {
			color: var(--text-color);

			:last-child {
				margin-bottom: 0;
			}

			p {
				margin-bottom: rem-calc(24);

				&:last-child {
					margin-bottom: 0;
				}
			}
		}

		&-read-more {
			display: block;
			margin-bottom: rem-calc(24);

		}
	}
}

/**
 * Partner Lightbox
 */

.lity-partner-content {
	.lity-content {
		max-width: 700px;
		margin: 0 auto;
		background-color: $white;
		max-height: 100vh;
	}

	.partner-lightbox {
		--top-border-placement: 40px;

		@include bp($sm) {
			--top-border-placement: 70px;
		}

		margin-right: var(--top-border-placement);
		border-right: 1px solid $border-grey;

		&__top {
			display: flex;
			padding: 1rem 2rem;
			position: relative;

			picture {
				height: 30px;

				img {
					height: 100%;
					width: auto;
				}
			}

			&:after {
				content: "";
				display: block;
				width: calc(100% + var(--top-border-placement));
				height: 1px;
				background-color: $border-grey;
				position: absolute;
				bottom: 0;
				left: 0;
			}
		}

		&__title {
			font-size: $heading-8;
		}

		&__content {
			margin-top: rem-calc(24);
			padding: 0 2rem 0 2rem;
			overflow-y: auto;
			overflow-x: hidden;
			max-height: 340px;

			@include bp($md) {
				padding: 0 rem-calc(115) 0 2rem;
			}

			// Custom scrollbar styles
			&::-webkit-scrollbar {
				width: 2px; // Width of the scrollbar
				height: 2px;
			}

			&::-webkit-scrollbar-track {
				background: transparent; // Background of the scrollbar track
			}

			&::-webkit-scrollbar-thumb {
				background: lighten($black, 10%); // Color of the scrollbar thumb
			}

			&::-webkit-scrollbar-thumb:hover {
				background: $black;
			}
		}

		&__bottom {
			padding: rem-calc(24);
			background-color: rgba(0, 174, 239, 0.1);
			display: flex;
			flex-direction: column;
			gap: rem-calc(16);

			a {
				justify-content: center;
			}

			@include bp($sm) {
				flex-direction: row;
			}
		}
	}

	.lity-close {
		right: 0;
		background-image: url(/wp-content/themes/moore-global/assets/icons/cross-black.svg) !important;
		text-indent: -1000px;
		overflow: hidden;
		width: 20px;
		height: 20px;
		background-size: 20px;
		background-repeat: no-repeat;
		background-position: center;
		padding: rem-calc(30) rem-calc(20);
		display: block;

		@include bp($sm) {
			padding: rem-calc(30) rem-calc(35);
		}
	}
}
document.addEventListener('DOMContentLoaded', () => {
    // Register custom handler for partner content modals
    if (typeof lity !== 'undefined') {
        // Keep track of original modal positions to restore them
        const originalModals = {};

        // Store all modal elements for restoration
        document.querySelectorAll('.partner-lightbox').forEach(modal => {
            const modalContainer = modal.closest('[id^="partner-content-"]');
            const id = modalContainer.id;
            originalModals[id] = {
                element: modalContainer,
                parent: modalContainer.parentNode,
                html: modalContainer.outerHTML // Store the complete HTML
            };
        });

        lity.handlers('partner-content', function(target, instance) {
            const modalId = target.replace('#', '');
            let modal = document.getElementById(modalId);

            if (!modal && originalModals[modalId]) {
                // If modal doesn't exist in DOM, recreate it from stored HTML
                const tempDiv = document.createElement('div');
                tempDiv.innerHTML = originalModals[modalId].html;
                modal = tempDiv.firstElementChild;
                document.body.appendChild(modal);
            }

            if (modal) {
                modal.classList.remove('lity-hide');
                return modal;
            }
            return false;
        });

        // Function to setup click handlers
        function setupClickHandlers() {
            document.querySelectorAll('.block-partners__partner-read-more a').forEach(trigger => {
                // Remove any existing click handlers
                const newTrigger = trigger.cloneNode(true);
                trigger.parentNode.replaceChild(newTrigger, trigger);

                newTrigger.addEventListener('click', (event) => {
                    event.preventDefault();

                    // Close any existing lity modals before opening new one
                    document.querySelectorAll('.lity, .lity-backdrop').forEach(el => {
                        el.remove();
                    });

                    // Get the modal ID and ensure the modal exists
                    const modalId = newTrigger.getAttribute('href').replace('#', '');
                    let modalEl = document.getElementById(modalId);

                    // If modal doesn't exist, recreate it from stored HTML
                    if (!modalEl && originalModals[modalId]) {
                        const tempDiv = document.createElement('div');
                        tempDiv.innerHTML = originalModals[modalId].html;
                        modalEl = tempDiv.firstElementChild;
                        document.body.appendChild(modalEl);
                    }

                    // Open the modal with our custom handler
                    lity('#' + modalId, {
                        handler: 'partner-content'
                    });
                });
            });
        }

        // Initial setup of click handlers
        setupClickHandlers();

        // Add a global listener for lity:close to properly handle modal cleanup
        document.addEventListener('lity:close', function(e) {
            // After lity closes, ensure modals return to original state
            document.querySelectorAll('.partner-lightbox').forEach(modal => {
                const modalContainer = modal.closest('[id^="partner-content-"]');
                if (!modalContainer) return;

                const id = modalContainer.id;

                // Add the lity-hide class back to hide it
                modalContainer.classList.add('lity-hide');

                // If the modal is in the body, move it back to its original position
                if (modalContainer.parentNode === document.body && originalModals[id]) {
                    originalModals[id].parent.appendChild(modalContainer);
                }
            });

            // Re-setup click handlers after modal close
            setupClickHandlers();
        }, false);
    }
});
{
    "$schema": "https://schemas.wp.org/trunk/block.json",
    "apiVersion": 2,
    "name": "strategiq/partners",
    "title": "Partners",
    "description": "Example block to be used as a template",
    "category": "strategiq",
    "icon": "strategiq",
    "acf": {
        "mode": "edit",
        "renderTemplate": "block-partners.php"
    },
    "supports": {
        "anchor": true,
        "align": false,
        "color": {
            "background": true,
            "text": false,
            "gradients": false
        },
        "spacing": {
            "padding": [
                "top",
                "bottom"
            ],
            "margin": [
                "top",
                "bottom"
            ]
        }
    },
    "example": {
        "attributes": {
            "mode": "preview",
            "data": {
                "heading_type": "h2",
                "heading_text": "Example - Partners",
                "content": "This is some example content to represent what the content will look like"
            }
        }
    },
    "style": ["file:../../assets/css/partners/block-partners.css"],
    "viewScript": ["file:./block-partners.js", "lity-js"],
    "style": ["file:../../assets/css/partners/block-partners.css", "lity-css"]
}
This component is not currently used on any pages.
There are is no readme file with this component.