{"id":1909,"date":"2024-01-26T15:19:56","date_gmt":"2024-01-26T15:19:56","guid":{"rendered":"https:\/\/www.fontainebleaumiamibeach.com\/?page_id=1909"},"modified":"2025-08-12T13:38:07","modified_gmt":"2025-08-12T17:38:07","slug":"image-gallery","status":"publish","type":"page","link":"https:\/\/www.fontainebleau.com\/miamibeach\/image-gallery\/","title":{"rendered":"Gallery"},"content":{"rendered":"<div id=\"cms-block-69d83f91728ec4.89915795\" class=\"cms-block cms-block-element\">\n    <div class=\"breadcrumbBig\">\n  <div class=\"breadcrumb-container forDesktop blackFont \">  \n    <nav class=\"breadcrumb breadcrumbBlock gtmBreadcrumb\" aria-label=\"breadcrumb.label\"><\/nav>\n    <\/div>\n  <div class=\"breadcrumb-container forMobile a11y-hidden blackFont \"><nav class=\"breadcrumb breadcrumbBlock gtmBreadcrumb\" aria-label=\"breadcrumb.label\"><\/nav><\/div>\n <\/div>\n<\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-group uv-cont-gallery\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<div id='block_d824b80312a10285b551d51b229f8feb' class=\"uv-clearfix \" >\n    <div class=\"uv-main-content-inner-gallery\">\n        <div class=\"uv-buttons uv-align-buttons-space-between galleries-tabs\">\n            <button class='uv-btn uv-btn-inl uv-btn-z-normal' data-menutarget='all' role='button' aria-label='Tab Gallery'>all<\/button><button class='uv-btn uv-btn-inl uv-btn-z-normal' data-gallerypostid='26612' data-menutarget='architecture' role='button' aria-label='Tab Gallery'>Architecture<\/button><button class='uv-btn uv-btn-inl uv-btn-z-normal' data-gallerypostid='26717' data-menutarget='bleaulive' role='button' aria-label='Tab Gallery'>BLEAULIVE<\/button><button class='uv-btn uv-btn-inl uv-btn-z-normal' data-gallerypostid='26762' data-menutarget='culinary' role='button' aria-label='Tab Gallery'>Culinary<\/button><button class='uv-btn uv-btn-inl uv-btn-z-normal' data-gallerypostid='26828' data-menutarget='historical' role='button' aria-label='Tab Gallery'>Historical<\/button><button class='uv-btn uv-btn-inl uv-btn-z-normal' data-gallerypostid='26888' data-menutarget='lifestyle' role='button' aria-label='Tab Gallery'>Lifestyle<\/button>        <\/div>\n        <div id=\"gallery-view\" class='tab-gallery uv-galleryscontents'><\/div>\n    <\/div>\n<\/div>\n\n<style>\n    .masorny-gallery {\n        display: flex !important;\n    }\n<\/style>\n\n<script>\ndocument.addEventListener(\"DOMContentLoaded\", function() {\n    \/\/ Ensure popup container exists\n    const popupDiv = document.createElement(\"div\");\n    popupDiv.id = \"popup-container\";\n    const footer = document.querySelector(\"footer\");\n    if (footer && footer.parentNode) footer.parentNode.insertBefore(popupDiv, footer);\n\n    const tabButtons = document.querySelectorAll('.galleries-tabs button');\n    let swiperInstance = null;\n    let boundKeyHandler = null;\n\n    \/\/ Activate \"All\" by default\n    const allTabBtn = document.querySelector('.galleries-tabs button[data-menutarget=\"all\"]');\n    if (allTabBtn && !document.querySelector('.galleries-tabs button.uvtabactive')) {\n        allTabBtn.classList.add('uvtabactive');\n    }\n\n    \/\/ Tabs click\n    tabButtons.forEach(button => {\n        button.addEventListener('click', () => {\n            const isAll = button.dataset.menutarget === 'all';\n            if (isAll) {\n                tabButtons.forEach(btn => btn.classList.remove('uvtabactive'));\n                button.classList.toggle('uvtabactive');\n            } else {\n                document.querySelectorAll('.galleries-tabs button[data-menutarget=\"all\"]').forEach(b => b.classList.remove('uvtabactive'));\n                button.classList.toggle('uvtabactive');\n            }\n            loadGalleryFromTabs();\n        });\n    });\n\n    function loadGalleryFromTabs() {\n        let activeIDs = [];\n        const allTab = document.querySelector('.galleries-tabs button[data-menutarget=\"all\"]');\n        const activeTabs = document.querySelectorAll('.galleries-tabs button.uvtabactive');\n        if (activeTabs.length === 0 && allTab) allTab.classList.add('uvtabactive');\n        const isAllActive = allTab && allTab.classList.contains('uvtabactive');\n\n        if (isAllActive) {\n            activeIDs = Array.from(document.querySelectorAll('.galleries-tabs button'))\n                .map(btn => btn.dataset.gallerypostid).filter(id => id);\n        } else {\n            activeIDs = Array.from(document.querySelectorAll('.galleries-tabs button.uvtabactive'))\n                .map(btn => btn.dataset.gallerypostid).filter(id => id);\n        }\n\n        fetch('https:\/\/www.fontainebleau.com\/miamibeach\/wp-admin\/admin-ajax.php', {\n            method: 'POST',\n            headers: { 'Content-Type': 'application\/x-www-form-urlencoded' },\n            body: new URLSearchParams({\n                action: 'uvwploadgallery',\n                gallerypostids: JSON.stringify(activeIDs),\n            })\n        })\n        .then(res => res.json())\n        .then(response => {\n            if (response.success) {\n                document.querySelector('#gallery-view').innerHTML = response.data.galleryGrid;\n                document.querySelector('#popup-container').innerHTML = response.data.popupHTML;\n            } else console.error('Failed to load gallery content');\n        })\n        .catch(err => console.error('AJAX error', err));\n    }\n\n    \/\/ Open popup\n    document.querySelector('#gallery-view').addEventListener('click', function(e) {\n        const item = e.target.closest('.uv-gallery-item');\n        if (!item) return;\n\n        const popup = document.querySelector('#popup-container .gallery-popup, #popup-container .popup-all');\n        if (!popup) return;\n\n        const imageIndex = parseInt(item.dataset.imageindex || '0', 10);\n        popup.style.display = 'flex';\n        document.body.classList.add('uvpopupactive');\n\n        if (swiperInstance) swiperInstance.destroy(true, true);\n        if (boundKeyHandler) document.removeEventListener('keydown', boundKeyHandler);\n\n        setTimeout(() => {\n            const swiperEl = popup.querySelector('.swiper-container');\n            if (swiperEl) {\n                \/\/ Register Keyboard module if not already\n                if (typeof Swiper !== 'undefined' && Swiper.hasOwnProperty('Keyboard') && Swiper.use) {\n                    Swiper.use([Swiper.Navigation, Swiper.Keyboard]);\n                }\n\n                if (!swiperEl.hasAttribute('tabindex')) swiperEl.setAttribute('tabindex', '0');\n\n                swiperInstance = new Swiper(swiperEl, {\n                    slidesPerView: 1,\n                    spaceBetween: 10,\n                    loop: true,\n                    initialSlide: imageIndex,\n                    navigation: {\n                        nextEl: swiperEl.querySelector('.swiper-button-next'),\n                        prevEl: swiperEl.querySelector('.swiper-button-prev'),\n                    },\n                    keyboard: {\n                        enabled: true,\n                        onlyInViewport: false,\n                        pageUpDown: false\n                    }\n                });\n\n                try { swiperEl.focus({ preventScroll: true }); } catch(e) {}\n\n                \/\/ Fallback manual keys\n                boundKeyHandler = (ev) => {\n                    if (!swiperInstance) return;\n                    const isOpen = popup.style.display !== 'none';\n                    if (!isOpen) return;\n                    if (ev.key === 'ArrowRight') {\n                        swiperInstance.slideNext();\n                        ev.preventDefault();\n                    } else if (ev.key === 'ArrowLeft') {\n                        swiperInstance.slidePrev();\n                        ev.preventDefault();\n                    }\n                };\n                document.addEventListener('keydown', boundKeyHandler);\n            }\n        }, 50);\n    });\n\n    \/\/ Close popup\n    document.querySelector('#popup-container').addEventListener('click', function(e) {\n        if (e.target.matches('.popup-close') || e.target.closest('.popup-close')) {\n            const popup = e.target.closest('.gallery-popup, .popup-all');\n            if (!popup) return;\n            popup.style.display = 'none';\n            document.body.classList.remove('uvpopupactive');\n            if (boundKeyHandler) document.removeEventListener('keydown', boundKeyHandler);\n            if (swiperInstance) swiperInstance.destroy(true, true);\n        }\n    });\n\n    loadGalleryFromTabs();\n});\n<\/script>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":11,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"inline_featured_image":false,"_price":"","_stock":"","_tribe_ticket_header":"","_tribe_default_ticket_provider":"","_tribe_ticket_capacity":"0","_ticket_start_date":"","_ticket_end_date":"","_tribe_ticket_show_description":"","_tribe_ticket_show_not_going":false,"_tribe_ticket_use_global_stock":"","_tribe_ticket_global_stock_level":"","_global_stock_mode":"","_global_stock_cap":"","_tribe_rsvp_for_event":"","_tribe_ticket_going_count":"","_tribe_ticket_not_going_count":"","_tribe_tickets_list":[],"_tribe_ticket_has_attendee_info_fields":false,"footnotes":""},"class_list":["post-1909","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Photo Gallery - Fontainebleau Miami Beach<\/title>\n<meta name=\"description\" content=\"See what awaits you at Fontainebleau Miami Beach in our photo gallery - including our luxury hotel rooms, spa, retail shops, restaurants &amp; event venues.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.fontainebleau.com\/miamibeach\/image-gallery\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Photo Gallery - Fontainebleau Miami Beach\" \/>\n<meta property=\"og:description\" content=\"See what awaits you at Fontainebleau Miami Beach in our photo gallery - including our luxury hotel rooms, spa, retail shops, restaurants &amp; event venues.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.fontainebleau.com\/miamibeach\/image-gallery\/\" \/>\n<meta property=\"og:site_name\" content=\"Fontainebleau Miami Beach\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/pages\/Fontainebleau-Miami-Beach\/78458342904\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-12T17:38:07+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@Fontainebleau\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.fontainebleau.com\/miamibeach\/image-gallery\/\",\"url\":\"https:\/\/www.fontainebleau.com\/miamibeach\/image-gallery\/\",\"name\":\"Photo Gallery - Fontainebleau Miami Beach\",\"isPartOf\":{\"@id\":\"https:\/\/www.fontainebleau.com\/miami\/#website\"},\"datePublished\":\"2024-01-26T15:19:56+00:00\",\"dateModified\":\"2025-08-12T17:38:07+00:00\",\"description\":\"See what awaits you at Fontainebleau Miami Beach in our photo gallery - including our luxury hotel rooms, spa, retail shops, restaurants & event venues.\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.fontainebleau.com\/miamibeach\/image-gallery\/\"]}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.fontainebleau.com\/miami\/#website\",\"url\":\"https:\/\/www.fontainebleau.com\/miami\/\",\"name\":\"Fontainebleau Miami Beach\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.fontainebleau.com\/miami\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.fontainebleau.com\/miami\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.fontainebleau.com\/miami\/#organization\",\"name\":\"Fontainebleau Miami Beach\",\"url\":\"https:\/\/www.fontainebleau.com\/miami\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.fontainebleau.com\/miami\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.fontainebleau.com\/uploads\/2024\/01\/fontainebleau-miami-beach-logo-sw.svg\",\"contentUrl\":\"https:\/\/www.fontainebleau.com\/uploads\/2024\/01\/fontainebleau-miami-beach-logo-sw.svg\",\"width\":143,\"height\":47,\"caption\":\"Fontainebleau Miami Beach\"},\"image\":{\"@id\":\"https:\/\/www.fontainebleau.com\/miami\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/pages\/Fontainebleau-Miami-Beach\/78458342904\",\"https:\/\/x.com\/Fontainebleau\",\"https:\/\/www.youtube.com\/fontainebleaumb\",\"https:\/\/www.instagram.com\/fontainebleaumiamibeach\/\",\"https:\/\/www.tiktok.com\/@fontainebleau\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Photo Gallery - Fontainebleau Miami Beach","description":"See what awaits you at Fontainebleau Miami Beach in our photo gallery - including our luxury hotel rooms, spa, retail shops, restaurants & event venues.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.fontainebleau.com\/miamibeach\/image-gallery\/","og_locale":"en_US","og_type":"article","og_title":"Photo Gallery - Fontainebleau Miami Beach","og_description":"See what awaits you at Fontainebleau Miami Beach in our photo gallery - including our luxury hotel rooms, spa, retail shops, restaurants & event venues.","og_url":"https:\/\/www.fontainebleau.com\/miamibeach\/image-gallery\/","og_site_name":"Fontainebleau Miami Beach","article_publisher":"https:\/\/www.facebook.com\/pages\/Fontainebleau-Miami-Beach\/78458342904","article_modified_time":"2025-08-12T17:38:07+00:00","twitter_card":"summary_large_image","twitter_site":"@Fontainebleau","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.fontainebleau.com\/miamibeach\/image-gallery\/","url":"https:\/\/www.fontainebleau.com\/miamibeach\/image-gallery\/","name":"Photo Gallery - Fontainebleau Miami Beach","isPartOf":{"@id":"https:\/\/www.fontainebleau.com\/miami\/#website"},"datePublished":"2024-01-26T15:19:56+00:00","dateModified":"2025-08-12T17:38:07+00:00","description":"See what awaits you at Fontainebleau Miami Beach in our photo gallery - including our luxury hotel rooms, spa, retail shops, restaurants & event venues.","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.fontainebleau.com\/miamibeach\/image-gallery\/"]}]},{"@type":"WebSite","@id":"https:\/\/www.fontainebleau.com\/miami\/#website","url":"https:\/\/www.fontainebleau.com\/miami\/","name":"Fontainebleau Miami Beach","description":"","publisher":{"@id":"https:\/\/www.fontainebleau.com\/miami\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.fontainebleau.com\/miami\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.fontainebleau.com\/miami\/#organization","name":"Fontainebleau Miami Beach","url":"https:\/\/www.fontainebleau.com\/miami\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.fontainebleau.com\/miami\/#\/schema\/logo\/image\/","url":"https:\/\/www.fontainebleau.com\/uploads\/2024\/01\/fontainebleau-miami-beach-logo-sw.svg","contentUrl":"https:\/\/www.fontainebleau.com\/uploads\/2024\/01\/fontainebleau-miami-beach-logo-sw.svg","width":143,"height":47,"caption":"Fontainebleau Miami Beach"},"image":{"@id":"https:\/\/www.fontainebleau.com\/miami\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/pages\/Fontainebleau-Miami-Beach\/78458342904","https:\/\/x.com\/Fontainebleau","https:\/\/www.youtube.com\/fontainebleaumb","https:\/\/www.instagram.com\/fontainebleaumiamibeach\/","https:\/\/www.tiktok.com\/@fontainebleau"]}]}},"ticketed":false,"_links":{"self":[{"href":"https:\/\/www.fontainebleau.com\/miamibeach\/wp-json\/wp\/v2\/pages\/1909","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fontainebleau.com\/miamibeach\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.fontainebleau.com\/miamibeach\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.fontainebleau.com\/miamibeach\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fontainebleau.com\/miamibeach\/wp-json\/wp\/v2\/comments?post=1909"}],"version-history":[{"count":9,"href":"https:\/\/www.fontainebleau.com\/miamibeach\/wp-json\/wp\/v2\/pages\/1909\/revisions"}],"predecessor-version":[{"id":26969,"href":"https:\/\/www.fontainebleau.com\/miamibeach\/wp-json\/wp\/v2\/pages\/1909\/revisions\/26969"}],"wp:attachment":[{"href":"https:\/\/www.fontainebleau.com\/miamibeach\/wp-json\/wp\/v2\/media?parent=1909"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}