{"id":2315,"date":"2020-02-11T10:38:45","date_gmt":"2020-02-11T10:38:45","guid":{"rendered":"https:\/\/traleeprod.wpenginepowered.com\/?page_id=2315"},"modified":"2026-03-21T11:02:10","modified_gmt":"2026-03-21T18:02:10","slug":"%e5%b9%b3%e9%9d%a2%e5%9b%be","status":"publish","type":"page","link":"https:\/\/www.traleevillageapts.com\/zh\/floorplan\/","title":{"rendered":"\u5e73\u9762\u56fe"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"2315\" class=\"elementor elementor-2315\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-17b9578 e-con-full e-flex e-con e-parent\" data-id=\"17b9578\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-fd6585c e-flex e-con-boxed e-con e-parent\" data-id=\"fd6585c\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a7aad08 elementor-widget elementor-widget-text-editor\" data-id=\"a7aad08\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h2>DISCOVER YOUR PERFECT RETREAT<\/h2><p>Explore our selection of luxurious floor plans designed for comfort and style at our resort-style community of one and two-bedroom apartments for rent in Dublin, CA. Whether you\u2019re seeking a loft or a townhome, each residence in our community offers modern amenities and unparalleled views.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-6fcc8b3 e-flex e-con-boxed e-con e-parent\" data-id=\"6fcc8b3\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-dc5b10a elementor-widget elementor-widget-floorplans\" data-id=\"dc5b10a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"floorplans.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"property-floorplans\">        <style type=\"text\/css\">\n            .floorplan-accordion {\n                margin: 0;\n                padding: 0;\n            }\n            .floorplan-accordion .accordion-element {\n                margin-bottom: 4px;\n            }\n            .floorplan-accordion .accordion-title {\n                display: flex;\n                justify-content: space-between;\n                align-items: center;\n                padding: 15px 20px;\n                cursor: pointer;\n                background-color: #f9f9f9;\n            }\n            .floorplan-accordion .accordion-element .inactive, .floorplan-accordion .accordion-element .active {\n                margin-right: 5px;\n            }\n            .floorplan-accordion .accordion-element .inactive svg, .floorplan-accordion .accordion-element .active svg {\n                width: 14px;\n                height: auto;\n                fill: #FFF;\n            }\n            .floorplan-accordion .accordion-element .active {\n                display: none;\n            }\n            .floorplan-accordion .accordion-element .inactive {\n                display: block;\n            }\n            .floorplan-accordion .accordion-element.open .active {\n                display: block;\n            }\n            .floorplan-accordion .accordion-element.open .inactive {\n                display: none;\n            }\n            .floorplan-accordion .accordion-title h3 {\n                margin: 0;\n                font-size: 16px;\n                font-weight: 600;\n            }\n            .floorplan-accordion .accordion-content {\n                display: none;\n                padding: 0px;\n            }\n            .floorplan-accordion .open .accordion-content {\n                display: block;\n            }\n            .floorplan-accordion .accordion-content table {\n                width: 100%;\n                border-collapse: collapse;\n            }\n            .floorplan-accordion .accordion-content table thead {\n                background-color: #f9f9f9;\n            }\n            .floorplan-accordion .accordion-content table th,\n            .floorplan-accordion .accordion-content table td {\n                padding: 10px;\n                text-align: left;\n\t\t\t\tfont-size:13px;\n            }\n            .floorplan-accordion .accordion-content table th {\n                font-weight: 600;\n\t\t\t\tfont-size:15px;\n            }\n            .floorplan-accordion .accordion-content table tbody tr:nth-child(even) {\n                background-color: #f9f9f9;\n            }\n            .floorplan-accordion .accordion-content table tbody tr:hover {\n                background-color: #f1f1f1;\n            }\n            .floorplan-accordion .accordion-content table tbody tr td img {\n                width: 160px;\n                height: auto;\n            }\n\t\t\t.floorplan-accordion .accordion-content table tbody tr td .slick-gallery {\n                width: 160px;\n                height: auto;\n            }\n            .floorplan-accordion .accordion-content table tbody tr td .specials {\n                font-size: 12px;\n                font-weight: 600;\n                color: #000;\n                background:#FFF;\n                border-radius:3px;\n                margin-top:5px;\n                padding: 6px 20px;\n                border:1px solid #EEE;\n                display: inline-block;\n            }\n            .floorplan-accordion .accordion-content table tbody tr td .btn {\n                display: inline-block;\n                padding: 6px 20px;\n                background-color: #000000;\n                color: #fff;\n                text-decoration: none;\n                border-radius: 3px;\n                font-size: 12px;\n                font-weight: 600;\n                margin-top: 5px;\n            }\n            .floorplan-accordion .accordion-content table tbody tr td .btn:hover {\n                opacity: 0.8;\n            }\n            .floorplan-accordion .accordion-content table tbody tr td .availability_text {\n                font-size: 12px;\n                font-weight: 600;\n                color: #f00;\n            }\n            .floorplan-accordion .accordion-content table tbody tr td .availability_text_now {\n                font-size: 12px;\n                font-weight: 600;\n                color: #29D11C;\n            }\n            .floorplan-accordion .accordion-content table tbody tr td .fees-link {\n                display: block;\n                margin-top: 5px;\n                font-size: 12px;\n                text-decoration: none;\n            }\n            .floorplan-accordion .accordion-content table tbody tr td .fees-link:hover {\n                text-decoration: underline;\n            }\n            .floorplan-accordion .no-data-message {\n                padding: 20px;\n                text-align: center;\n                font-style: italic;\n            }\n\t\t\t.floorplan-table {\n\t\t\t\tposition:relative;\n\t\t\t\ttransition: all 0.5s ease;\n\t\t\t}\n\t\t\t.floorplan-table.extra-padding {\n\t\t\t\tpadding-bottom:80px;\n\t\t\t}\n\t\t\t.moreUnits {\n\t\t\t\tposition:absolute;\n\t\t\t\tbottom:0px;\n\t\t\t\tleft:0px;\n\t\t\t\tright:0px;\n\t\t\t\twidth:100%;\n\t\t\t\tbackground: #FFFFFF;\n\t\t\t\tbackground: linear-gradient(to top, rgba(255,255,255,.75) 40%, rgba(255,255,255,.1) 100%);\n\t\t\t\tpadding:30px 30px 30px;\n\t\t\t\ttext-align:center;\n\t\t\t\tbackdrop-filter: blur(6px);\n\t\t\t}\n\t\t\t.moreUnits a {\n\t\t\t\tdisplay:block;\n\t\t\t\tcursor:pointer; \n\t\t\t\tcolor: var(--e-global-color-primary); \n\t\t\t\tfont-weight:700; \n\t\t\t\tfont-size:1.1rem;\n\t\t\t\ttext-transform:uppercase;\n\t\t\t}\n\t\t\t.floorplan-accordion .accordion-content table tr.hidden {\n\t\t\t\ttransition: all 0.5s ease;\n\t\t\t\tdisplay:none;\n            }\n\t\t\t.floorplan-accordion .accordion-content table tr.hidden.show {\n\t\t\t\tdisplay:table-row;\n            }\n\t\t\t.floorplan-accordion .accordion-content table button {\n\t\t\t\tbackground-color: transparent;\n\t\t\t\tfont-family: \"Montserrat\", Sans-serif;\n\t\t\t\tfont-size: 13px;\n\t\t\t\tfont-weight: 700;\n\t\t\t\ttext-transform: uppercase;\n\t\t\t\tline-height: 1.1em;\n\t\t\t\tcolor: var(--e-global-color-primary);\n\t\t\t\tborder-style: none;\n\t\t\t\tborder-radius: 0px 0px 0px 0px;\n\t\t\t\tpadding: 0px;\n\t\t\t}\n\t\t\t.floorplan-accordion .accordion-content table .slick-dots li button {\n\t\t\t\tfont-size: 0;\n\t\t\t\tline-height: 0;\n\t\t\t\tpadding: 5px;\n\t\t\t\tcolor: transparent;\n\t\t\t}\n\t\t\t.floorplan-accordion .accordion-content table .slick-dots li button:before {\n\t\t\t\tfont-size: 10px;\n\t\t\t}\n\t\t\t@media(max-width:1024px) {\n\t\t\t\t.floorplan-accordion .accordion-content table th,\n\t\t\t\t.floorplan-accordion .accordion-content table td {\n\t\t\t\t\tfont-size:12px;\n\t\t\t\t}\n\t\t\t\t.floorplan-accordion .accordion-content table th {\n\t\t\t\t\tfont-size:13px;\n\t\t\t\t}\n\t\t\t}\n\t\t\t@media(max-width:768px) {\n\t\t\t\t.floorplan-accordion .accordion-content table th,\n\t\t\t\t.floorplan-accordion .accordion-content table td {\n\t\t\t\t\tfont-size:11px;\n\t\t\t\t}\n\t\t\t\t.floorplan-accordion .accordion-content table th {\n\t\t\t\t\tfont-size:12px;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\/* Sorting arrow styles *\/\n\t\t\t.floorplan-accordion .accordion-content table th.sortable {\n\t\t\t\tcursor: pointer;\n\t\t\t\tuser-select: none;\n\t\t\t\tposition: relative;\n\t\t\t\tpadding-right: 30px;\n\t\t\t}\n\t\t\t.floorplan-accordion .accordion-content table th.sortable:hover {\n\t\t\t\tbackground-color: rgba(0,0,0,0.05);\n\t\t\t}\n\t\t\t.floorplan-accordion .accordion-content table th.sortable .sort-arrow {\n\t\t\t\tposition: absolute;\n\t\t\t\tright: 8px;\n\t\t\t\ttop: 50%;\n\t\t\t\ttransform: translateY(-50%);\n\t\t\t\tdisplay: inline-block;\n\t\t\t\twidth: 0;\n\t\t\t\theight: 0;\n\t\t\t\topacity: 0.3;\n\t\t\t\ttransition: opacity 0.2s ease;\n\t\t\t\tmargin-left: 5px;\n\t\t\t}\n\t\t\t.floorplan-accordion .accordion-content table th.sortable.active .sort-arrow {\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t\t.floorplan-accordion .accordion-content table th.sortable .sort-arrow.up {\n\t\t\t\tborder-left: 5px solid transparent;\n\t\t\t\tborder-right: 5px solid transparent;\n\t\t\t\tborder-bottom: 8px solid currentColor;\n\t\t\t}\n\t\t\t.floorplan-accordion .accordion-content table th.sortable .sort-arrow.down {\n\t\t\t\tborder-left: 5px solid transparent;\n\t\t\t\tborder-right: 5px solid transparent;\n\t\t\t\tborder-top: 8px solid currentColor;\n\t\t\t}\n\t\t\t@media(max-width:600px) {\n\t\t\t\t.floorplan-accordion .floorplan-table {\n\t\t\t\t\toverflow-x:auto;\n\t\t\t\t}\n\t\t\t\t.floorplan-accordion .accordion-content table th,\n\t\t\t\t.floorplan-accordion .accordion-content table td {\n\t\t\t\t\twhite-space:nowrap;\n\t\t\t\t}\n\t\t\t}\n        <\/style>\n\n\t\t<!-- Load required external libraries for gallery and lightbox functionality -->\n\t\t<link rel=\"stylesheet\" type=\"text\/css\" href=\"\/\/cdn.jsdelivr.net\/npm\/slick-carousel@1.8.1\/slick\/slick.css\"\/>\n\t\t<link rel=\"stylesheet\" type=\"text\/css\" href=\"\/\/cdn.jsdelivr.net\/npm\/slick-carousel@1.8.1\/slick\/slick-theme.css\"\/>\n\t\t<script type=\"text\/javascript\" src=\"\/\/cdn.jsdelivr.net\/npm\/slick-carousel@1.8.1\/slick\/slick.min.js\"><\/script>\n\t\t<link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/magnific-popup.js\/1.1.0\/magnific-popup.min.css\">\n\t\t<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/magnific-popup.js\/1.1.0\/jquery.magnific-popup.min.js\"><\/script>\n\n        <div class=\"floorplan-accordion\" role=\"region\" aria-label=\"Floorplan listings by bedroom type\">\n\n                        <div class=\"accordion-element open\">\n                <div class=\"accordion-title\" \n                     role=\"button\" \n                     tabindex=\"0\"\n                     aria-expanded=\"true\"\n                     aria-controls=\"accordion-content-1\"\n                     aria-label=\"1 Bedroom units\">\n                    <h3>\n                                                1 Bedroom\n                                            <\/h3>\n                    <div class=\"active\" aria-hidden=\"true\">\n                        <svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-minus\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"><\/path><\/svg>\n                    <\/div>\n                    <div class=\"inactive\" aria-hidden=\"true\">\n                        <svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-plus\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"><\/path><\/svg>\n                    <\/div>\n                <\/div>\n                <div class=\"accordion-content\" \n                     id=\"accordion-content-1\"\n                     role=\"region\"\n                     aria-labelledby=\"accordion-title-1\"\n                     style=\"display: block;\">\n                                            <div class=\"no-data-message\" role=\"status\" aria-live=\"polite\">\n                            <p>Please Call For Pricing<\/p>                        <\/div>\n                                    <\/div>\n            <\/div>\n                        <div class=\"accordion-element open\">\n                <div class=\"accordion-title\" \n                     role=\"button\" \n                     tabindex=\"0\"\n                     aria-expanded=\"true\"\n                     aria-controls=\"accordion-content-2\"\n                     aria-label=\"2 Bedroom units\">\n                    <h3>\n                                                2 Bedroom\n                                            <\/h3>\n                    <div class=\"active\" aria-hidden=\"true\">\n                        <svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-minus\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"><\/path><\/svg>\n                    <\/div>\n                    <div class=\"inactive\" aria-hidden=\"true\">\n                        <svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-plus\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"><\/path><\/svg>\n                    <\/div>\n                <\/div>\n                <div class=\"accordion-content\" \n                     id=\"accordion-content-2\"\n                     role=\"region\"\n                     aria-labelledby=\"accordion-title-2\"\n                     style=\"display: block;\">\n                                        <div class=\"floorplan-table\">\n\t\t\t\t\t\t                        <table role=\"table\" aria-label=\"2 Bedroom unit details\">\n                            <thead>\n                                <tr>\n                                    <th scope=\"col\">Layout<\/th>\n                                    <th scope=\"col\" >Floor Plan<\/th>\n                                    <th scope=\"col\" class=\"sortable\" data-sort-column=\"unit\">Unit<span class=\"sort-arrow up\"><\/span><span class=\"sort-arrow down\" style=\"display:none;\"><\/span><\/th>\n                                    <th scope=\"col\" >Bed \/ Bath<\/th>\n                                    <th scope=\"col\" class=\"sortable\" data-sort-column=\"sqft\">Square Feet<span class=\"sort-arrow up\"><\/span><span class=\"sort-arrow down\" style=\"display:none;\"><\/span><\/th>\n                                    <th scope=\"col\" class=\"sortable\" data-sort-column=\"rent\">Rent Range<span class=\"sort-arrow up\"><\/span><span class=\"sort-arrow down\" style=\"display:none;\"><\/span><\/th>                                    <th scope=\"col\" class=\"availability-header sortable\" style=\"text-align:center;\" data-sort-column=\"availability\">Availability<span class=\"sort-arrow up\"><\/span><span class=\"sort-arrow down\" style=\"display:none;\"><\/span><\/th>                                <\/tr>\n                            <\/thead>\n                            <tbody id=\"hidden-units-2\">\n                                                                <tr class=\"\" data-availability-date=\"4\/11\/2026\">\n                                    <td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-clickable\" \n\t\t\t\t\t\t\t\t\t\t\t   data-elementor-open-lightbox=\"yes\" \n\t\t\t\t\t\t\t\t\t\t\t   href=\"https:\/\/cdn.rentcafe.com\/dmslivecafe\/2\/117112\/Tralee Village Floorplan 002@3x(1).png\"\n\t\t\t\t\t\t\t\t\t\t\t   aria-label=\"View floorplan image for 2 Bedroom - Premium\">\n\t\t\t\t\t\t\t\t\t\t\t   <img decoding=\"async\" src=\"https:\/\/cdn.rentcafe.com\/dmslivecafe\/2\/117112\/Tralee Village Floorplan 002@3x(1).png\" \n\t\t\t\t\t\t\t\t\t\t\t        alt=\"Floorplan 2 Bedroom - Premium\"\n\t\t\t\t\t\t\t\t\t\t\t        loading=\"lazy\"\/>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t                                    <\/td>\n                                    <td>2 Bedroom - Premium<\/td>\n                                    <td>6601-315<\/td>\n                                    <td>2\/2<\/td>\n                                    <td>1104 sqft<\/td>\n                                                                        <td>\n                                        <div>\n\t\t\t\t\t\t\t\t\t\t\t$3,600 - $7,141\t\t\t\t\t\t\t\t\t\t\t                                        <\/div>\n                                                                                                                            <a href=\"https:\/\/www.traleevillageapts.com\/pricing-disclosure\/\" class=\"fees-link\" target=\"_blank\">Additional Fees<\/a>\n                                                                            <\/td>\n                                                                                                            <td class=\"availability-cell\" style=\"text-align:center;\">\n                                        <div class=\"availability_text\">April 11, 2026<\/div>                                        <a href=\"https:\/\/traleevillageapts.securecafe.com\/onlineleasing\/tralee-village1\/rentaloptions.aspx?UnitID=40578419&FloorPlanID=5466629&myOlePropertyid=1808789\" \n                                           class=\"btn\" \n                                           target=\"_blank\"\n                                           rel=\"noopener\"\n                                           aria-label=\"Apply now for 6601-315\">APPLY NOW<\/a>\n                                    <\/td>\n                                                                    <\/tr>\n                                                            <\/tbody>\n                        <\/table>\n                    <\/div>\n                                    <\/div>\n            <\/div>\n                        <div class=\"accordion-element open\">\n                <div class=\"accordion-title\" \n                     role=\"button\" \n                     tabindex=\"0\"\n                     aria-expanded=\"true\"\n                     aria-controls=\"accordion-content-3\"\n                     aria-label=\"3 Bedroom units\">\n                    <h3>\n                                                3 Bedroom\n                                            <\/h3>\n                    <div class=\"active\" aria-hidden=\"true\">\n                        <svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-minus\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"><\/path><\/svg>\n                    <\/div>\n                    <div class=\"inactive\" aria-hidden=\"true\">\n                        <svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-plus\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"><\/path><\/svg>\n                    <\/div>\n                <\/div>\n                <div class=\"accordion-content\" \n                     id=\"accordion-content-3\"\n                     role=\"region\"\n                     aria-labelledby=\"accordion-title-3\"\n                     style=\"display: block;\">\n                                            <div class=\"no-data-message\" role=\"status\" aria-live=\"polite\">\n                            <p>Please Call For Pricing<\/p>                        <\/div>\n                                    <\/div>\n            <\/div>\n            \n        <\/div>\n\n        <script>\n            document.addEventListener(\"DOMContentLoaded\", function() {\n\t\t\t\t\/\/ Accordion functionality with keyboard support\n\t\t\t\tvar accordionTitles = document.getElementsByClassName(\"accordion-title\");\n\t\t\t\t\n\t\t\t\tfor (var i = 0; i < accordionTitles.length; i++) {\n\t\t\t\t\taccordionTitles[i].addEventListener(\"click\", handleAccordionClick);\n\t\t\t\t\taccordionTitles[i].addEventListener(\"keydown\", handleAccordionKeydown);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfunction handleAccordionClick() {\n\t\t\t\t\ttoggleAccordion(this);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfunction handleAccordionKeydown(event) {\n\t\t\t\t\tif (event.key === 'Enter' || event.key === ' ') {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\ttoggleAccordion(this);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfunction toggleAccordion(element) {\n\t\t\t\t\tvar isExpanded = element.getAttribute('aria-expanded') === 'true';\n\t\t\t\t\telement.parentElement.classList.toggle(\"open\");\n\t\t\t\t\telement.setAttribute('aria-expanded', !isExpanded);\n\t\t\t\t\t\n\t\t\t\t\tvar panel = element.nextElementSibling;\n\t\t\t\t\tif (!panel) return;\n\t\t\t\t\t\n\t\t\t\t\tif (element.parentElement.classList.contains('open')) {\n\t\t\t\t\t\tpanel.style.display = \"block\";\n\t\t\t\t\t\t\/\/ Initialize Slick gallery after accordion opens\n\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\tjQuery(element.parentElement).find('.slick-gallery').slick({\n\t\t\t\t\t\t\t\tinfinite: false,\n\t\t\t\t\t\t\t\tdots: true,\n\t\t\t\t\t\t\t\tarrows: false,\n\t\t\t\t\t\t\t\taccessibility: true,\n\t\t\t\t\t\t\t\tfocusOnSelect: true\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}, 500);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpanel.style.display = \"none\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\/\/ Initialize Slick galleries for accordions that are open by default\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tjQuery('.accordion-element.open .slick-gallery').slick({\n\t\t\t\t\t\tinfinite: false,\n\t\t\t\t\t\tdots: true,\n\t\t\t\t\t\tarrows: false,\n\t\t\t\t\t\taccessibility: true,\n\t\t\t\t\t\tfocusOnSelect: true\n\t\t\t\t\t});\n\t\t\t\t}, 500);\n\t\t\t\t\n\t\t\t\t\/\/ Show More\/Less functionality\n\t\t\t\tconst moreUnitsButtons = document.querySelectorAll('.moreUnits button');\n\t\t\t\tmoreUnitsButtons.forEach(function(button) {\n\t\t\t\t\tbutton.addEventListener('click', function(event) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tconst parent = event.target.closest('.floorplan-table');\n\t\t\t\t\t\tif (!parent) return;\n\t\t\t\t\t\t\n\t\t\t\t\t\tconst hiddenRows = parent.querySelectorAll('tr.hidden');\n\t\t\t\t\t\tconst isExpanded = event.target.getAttribute('aria-expanded') === 'true';\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (!isExpanded) {\n\t\t\t\t\t\t\tevent.target.textContent = 'Show Less';\n\t\t\t\t\t\t\tevent.target.setAttribute('aria-expanded', 'true');\n\t\t\t\t\t\t\tparent.classList.add('extra-padding');\n\t\t\t\t\t\t\thiddenRows.forEach(function(row) {\n\t\t\t\t\t\t\t\trow.classList.add('show');\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tevent.target.textContent = 'Show More';\n\t\t\t\t\t\t\tevent.target.setAttribute('aria-expanded', 'false');\n\t\t\t\t\t\t\tparent.classList.remove('extra-padding');\n\t\t\t\t\t\t\thiddenRows.forEach(function(row) {\n\t\t\t\t\t\t\t\trow.classList.remove('show');\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\/\/ Reapply current sort after toggling visibility\n\t\t\t\t\t\tconst table = parent.querySelector('table');\n\t\t\t\t\t\tif (table && currentSort.column) {\n\t\t\t\t\t\t\tsortTable(table, currentSort.column, currentSort.direction);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t\t\n\t\t\t\/\/ Column sorting functionality\n\t\t\tconst sortableHeaders = document.querySelectorAll('th.sortable');\n\t\t\tlet currentSort = { column: null, direction: 'asc' };\n\t\t\t\n\t\t\tsortableHeaders.forEach(function(header) {\n\t\t\t\theader.addEventListener('click', function(event) {\n\t\t\t\t\tconst column = this.getAttribute('data-sort-column');\n\t\t\t\t\t\n\t\t\t\t\t\/\/ Update sort direction\n\t\t\t\t\tif (currentSort.column === column) {\n\t\t\t\t\t\tcurrentSort.direction = currentSort.direction === 'asc' ? 'desc' : 'asc';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentSort.column = column;\n\t\t\t\t\t\tcurrentSort.direction = 'asc';\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t\/\/ Update arrow visibility\n\t\t\t\t\tupdateSortArrows(column, currentSort.direction);\n\t\t\t\t\t\n\t\t\t\t\t\/\/ Sort all visible tables\n\t\t\t\t\tconst tables = document.querySelectorAll('.floorplan-accordion .accordion-content table');\n\t\t\t\t\ttables.forEach(function(table) {\n\t\t\t\t\t\tsortTable(table, column, currentSort.direction);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t\t\n\t\t\tfunction updateSortArrows(activeColumn, direction) {\n\t\t\t\tsortableHeaders.forEach(function(header) {\n\t\t\t\t\tconst column = header.getAttribute('data-sort-column');\n\t\t\t\t\tconst upArrow = header.querySelector('.sort-arrow.up');\n\t\t\t\t\tconst downArrow = header.querySelector('.sort-arrow.down');\n\t\t\t\t\t\n\t\t\t\t\tif (column === activeColumn) {\n\t\t\t\t\t\theader.classList.add('active');\n\t\t\t\t\t\tif (direction === 'asc') {\n\t\t\t\t\t\t\tupArrow.style.display = 'inline-block';\n\t\t\t\t\t\t\tdownArrow.style.display = 'none';\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tupArrow.style.display = 'none';\n\t\t\t\t\t\t\tdownArrow.style.display = 'inline-block';\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\theader.classList.remove('active');\n\t\t\t\t\t\tupArrow.style.display = 'inline-block';\n\t\t\t\t\t\tdownArrow.style.display = 'none';\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction sortTable(table, column, direction) {\n\t\t\t\tconst tbody = table.querySelector('tbody');\n\t\t\t\tconst rows = Array.from(tbody.querySelectorAll('tr'));\n\t\t\t\t\n\t\t\t\trows.sort(function(rowA, rowB) {\n\t\t\t\t\tlet valA, valB;\n\t\t\t\t\t\n\t\t\t\t\tif (column === 'floorplan') {\n\t\t\t\t\t\tvalA = rowA.querySelector('td:nth-child(2)').textContent.trim();\n\t\t\t\t\t\tvalB = rowB.querySelector('td:nth-child(2)').textContent.trim();\n\t\t\t\t\t} else if (column === 'unit') {\n\t\t\t\t\t\tvalA = rowA.querySelector('td:nth-child(3)').textContent.trim();\n\t\t\t\t\t\tvalB = rowB.querySelector('td:nth-child(3)').textContent.trim();\n\t\t\t\t\t} else if (column === 'bed-bath') {\n\t\t\t\t\t\tvalA = rowA.querySelector('td:nth-child(4)').textContent.trim();\n\t\t\t\t\t\tvalB = rowB.querySelector('td:nth-child(4)').textContent.trim();\n\t\t\t\t\t} else if (column === 'sqft') {\n\t\t\t\t\t\tvalA = parseInt(rowA.querySelector('td:nth-child(5)').textContent.trim());\n\t\t\t\t\t\tvalB = parseInt(rowB.querySelector('td:nth-child(5)').textContent.trim());\n\t\t\t\t\t} else if (column === 'rent') {\n\t\t\t\t\t\t\/\/ Extract numeric value from rent column\n\t\t\t\t\t\tvalA = extractRentValue(rowA);\n\t\t\t\t\t\tvalB = extractRentValue(rowB);\n\t\t\t\t\t} else if (column === 'availability') {\n\t\t\t\t\t\t\/\/ Convert MM\/DD\/YYYY date string to timestamp for comparison\n\t\t\t\t\t\tvalA = parseDateToTimestamp(rowA.getAttribute('data-availability-date'));\n\t\t\t\t\t\tvalB = parseDateToTimestamp(rowB.getAttribute('data-availability-date'));\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t\/\/ Compare values\n\t\t\t\t\tif (typeof valA === 'string') {\n\t\t\t\t\t\tvalA = valA.toLowerCase();\n\t\t\t\t\t\tvalB = valB.toLowerCase();\n\t\t\t\t\t\treturn direction === 'asc' ? valA.localeCompare(valB) : valB.localeCompare(valA);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn direction === 'asc' ? valA - valB : valB - valA;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\t\/\/ Reorder rows in tbody\n\t\t\t\trows.forEach(function(row) {\n\t\t\t\t\ttbody.appendChild(row);\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\t\/\/ Update hidden class based on sorted position\n\t\t\t\trows.forEach(function(row, index) {\n\t\t\t\t\tif (index >= 3) {\n\t\t\t\t\t\trow.classList.add('hidden');\n\t\t\t\t\t} else {\n\t\t\t\t\t\trow.classList.remove('hidden');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction extractRentValue(row) {\n\t\t\t\tconst rentCell = row.querySelector('td:nth-child(6)');\n\t\t\t\tif (!rentCell) return 0;\n\t\t\t\t\n\t\t\t\tconst text = rentCell.textContent.trim();\n\t\t\t\tconst match = text.match(\/\\$(\\d+(?:,\\d{3})*)\/);\n\t\t\t\treturn match ? parseInt(match[1].replace(\/,\/g, '')) : 0;\n\t\t\t}\n\t\t\t\n\t\t\tfunction parseDateToTimestamp(dateString) {\n\t\t\t\tif (!dateString) return 0;\n\t\t\t\t\/\/ Parse MM\/DD\/YYYY format\n\t\t\t\tconst parts = dateString.split('\/');\n\t\t\t\tif (parts.length !== 3) return 0;\n\t\t\t\tconst month = parseInt(parts[0], 10);\n\t\t\t\tconst day = parseInt(parts[1], 10);\n\t\t\t\tconst year = parseInt(parts[2], 10);\n\t\t\t\t\/\/ Create date object and return timestamp\n\t\t\t\treturn new Date(year, month - 1, day).getTime();\n\t\t\t}\n\t\t\t\n\t\t\t\/\/ Apply default sorting on page load\n\t\t\t\t\t\tconst defaultPrimaryColumn = 'rent';\n\t\t\tconst defaultPrimaryDirection = 'asc';\n\t\t\tconst defaultSecondaryColumn = 'sqft';\n\t\t\tconst defaultSecondaryDirection = 'asc';\n\t\t\t\n\t\t\t\/\/ Update currentSort to reflect the default sort\n\t\t\tcurrentSort.column = defaultPrimaryColumn;\n\t\t\tcurrentSort.direction = defaultPrimaryDirection;\n\t\t\t\n\t\t\tconst tables = document.querySelectorAll('.floorplan-accordion .accordion-content table');\n\t\t\ttables.forEach(function(table) {\n\t\t\t\tapplyDefaultSort(table, defaultPrimaryColumn, defaultPrimaryDirection, defaultSecondaryColumn, defaultSecondaryDirection);\n\t\t\t});\n\t\t\t\n\t\t\t\/\/ Update arrow visibility if sortable headers exist for the default column\n\t\t\tconst defaultSortableHeaders = document.querySelectorAll('th.sortable');\n\t\t\tif (defaultSortableHeaders.length > 0) {\n\t\t\t\tdefaultSortableHeaders.forEach(function(header) {\n\t\t\t\t\tconst column = header.getAttribute('data-sort-column');\n\t\t\t\t\tconst upArrow = header.querySelector('.sort-arrow.up');\n\t\t\t\t\tconst downArrow = header.querySelector('.sort-arrow.down');\n\t\t\t\t\t\n\t\t\t\t\tif (column === defaultPrimaryColumn) {\n\t\t\t\t\t\theader.classList.add('active');\n\t\t\t\t\t\tif (defaultPrimaryDirection === 'asc') {\n\t\t\t\t\t\t\tupArrow.style.display = 'inline-block';\n\t\t\t\t\t\t\tdownArrow.style.display = 'none';\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tupArrow.style.display = 'none';\n\t\t\t\t\t\t\tdownArrow.style.display = 'inline-block';\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\theader.classList.remove('active');\n\t\t\t\t\t\tupArrow.style.display = 'inline-block';\n\t\t\t\t\t\tdownArrow.style.display = 'none';\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction applyDefaultSort(table, primaryColumn, primaryDirection, secondaryColumn, secondaryDirection) {\n\t\t\t\tconst tbody = table.querySelector('tbody');\n\t\t\t\tconst rows = Array.from(tbody.querySelectorAll('tr'));\n\t\t\t\t\n\t\t\t\trows.sort(function(rowA, rowB) {\n\t\t\t\t\t\/\/ Primary sort\n\t\t\t\t\tlet valA = getColumnValue(rowA, primaryColumn);\n\t\t\t\t\tlet valB = getColumnValue(rowB, primaryColumn);\n\t\t\t\t\t\n\t\t\t\t\tlet result = compareValues(valA, valB, primaryColumn);\n\t\t\t\t\tif (primaryDirection === 'desc') result = -result;\n\t\t\t\t\t\n\t\t\t\t\t\/\/ If primary values are equal and secondary sort is defined, apply secondary sort\n\t\t\t\t\tif (result === 0 && secondaryColumn) {\n\t\t\t\t\t\tvalA = getColumnValue(rowA, secondaryColumn);\n\t\t\t\t\t\tvalB = getColumnValue(rowB, secondaryColumn);\n\t\t\t\t\t\tresult = compareValues(valA, valB, secondaryColumn);\n\t\t\t\t\t\tif (secondaryDirection === 'desc') result = -result;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn result;\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\t\/\/ Reorder rows in tbody\n\t\t\t\trows.forEach(function(row) {\n\t\t\t\t\ttbody.appendChild(row);\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\t\/\/ Update hidden class based on sorted position\n\t\t\t\trows.forEach(function(row, index) {\n\t\t\t\t\tif (index >= 3) {\n\t\t\t\t\t\trow.classList.add('hidden');\n\t\t\t\t\t} else {\n\t\t\t\t\t\trow.classList.remove('hidden');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction getColumnValue(row, column) {\n\t\t\t\tif (column === 'floorplan') {\n\t\t\t\t\treturn row.querySelector('td:nth-child(2)').textContent.trim();\n\t\t\t\t} else if (column === 'unit') {\n\t\t\t\t\treturn row.querySelector('td:nth-child(3)').textContent.trim();\n\t\t\t\t} else if (column === 'bed-bath') {\n\t\t\t\t\treturn row.querySelector('td:nth-child(4)').textContent.trim();\n\t\t\t\t} else if (column === 'sqft') {\n\t\t\t\t\treturn parseInt(row.querySelector('td:nth-child(5)').textContent.trim());\n\t\t\t\t} else if (column === 'rent') {\n\t\t\t\t\treturn extractRentValue(row);\n\t\t\t\t} else if (column === 'availability') {\n\t\t\t\t\treturn parseDateToTimestamp(row.getAttribute('data-availability-date'));\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction compareValues(valA, valB, column) {\n\t\t\t\tif (column === 'sqft' || column === 'rent' || column === 'availability') {\n\t\t\t\t\treturn valA - valB;\n\t\t\t\t} else {\n\t\t\t\t\tvalA = valA.toLowerCase();\n\t\t\t\t\tvalB = valB.toLowerCase();\n\t\t\t\t\treturn valA.localeCompare(valB);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\/\/ Initialize image galleries and lightbox\n\t\t\tjQuery(document).ready(function() {\n\t\t\t\tjQuery('.slick-gallery').each(function() {\n\t\t\t\t\tjQuery(this).magnificPopup({\n\t\t\t\t\t\tdelegate: 'a',\n\t\t\t\t\t\ttype: 'image',\n\t\t\t\t\t\tgallery: {\n\t\t\t\t\t\t  enabled: true\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcallbacks: {\n\t\t\t\t\t\t\tbuildControls: function() {\n\t\t\t\t\t\t\t\t\/\/ Add accessibility attributes to lightbox controls\n\t\t\t\t\t\t\t\tthis.contentContainer.find('.mfp-close').attr('aria-label', 'Close image gallery');\n\t\t\t\t\t\t\t\tthis.contentContainer.find('.mfp-arrow-left').attr('aria-label', 'Previous image');\n\t\t\t\t\t\t\t\tthis.contentContainer.find('.mfp-arrow-right').attr('aria-label', 'Next image');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n        <\/script>\n        <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-32f608f elementor-widget elementor-widget-text-editor\" data-id=\"32f608f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>*Income Restrictions Apply &#8211; Contact the Leasing Office for more information.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>DISCOVER YOUR PERFECT RETREAT Explore our selection of luxurious floor plans designed for comfort and style at our resort-style community of one and two-bedroom apartments for rent in Dublin, CA. Whether you\u2019re seeking a loft or a townhome, each residence in our community offers modern amenities and unparalleled views. 1 Bedroom Layout Floor Plan Unit [&hellip;]<\/p>\n","protected":false},"author":13,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2315","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.traleevillageapts.com\/zh\/wp-json\/wp\/v2\/pages\/2315","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.traleevillageapts.com\/zh\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.traleevillageapts.com\/zh\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.traleevillageapts.com\/zh\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/www.traleevillageapts.com\/zh\/wp-json\/wp\/v2\/comments?post=2315"}],"version-history":[{"count":0,"href":"https:\/\/www.traleevillageapts.com\/zh\/wp-json\/wp\/v2\/pages\/2315\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.traleevillageapts.com\/zh\/wp-json\/wp\/v2\/media?parent=2315"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}