// ES6 feature detection (function () { window.isES6 = false; try { new Function([ "// Arrow functions", "() => {};", "", "// Class support", "class __ES6FeatureDetectionTest {}", "", "// Object initializer property and method shorthands", "let es6a = true;", "let es6b = {", " es6a,", " es6c() { return true; },", " es6d: [1, 2, 3],", "};", "", "// Object destructuring", "let { es6c, es6d } = es6b;", "", "// Spread operator", "let es6e = [...es6d, 4];", "", "// Ternary operator", "let es6f = es6a ? 'ternary' : 'no ternary';", "", "// Nullish coalescing", "es6a ??= 10;", ].join("\n"))(); window.isES6 = true; } catch (e) {} })(); // Display warning if ES6 detection failed window.onload = function () { if (window.isES6 == false) { var alertEl = document.getElementById("obsolete_browser_alert"); if (alertEl) alertEl.innerHTML = ''; } }; const hamburgerComponent = { template: `
{{ item.description }}
`, props: ["item"], }; const navigComponent = { // Fixed: Removed invalid nested elements (WCAG 4.1.1) // Changed outer to
and made dropdown-toggle a
`, props: ["navlistofmenus"], methods: { toggleDropdown(navmenu) { // Toggle the isOpen state for aria-expanded navmenu.isOpen = !navmenu.isOpen; }, closeDropdown(navmenu) { navmenu.isOpen = false; } } }; const onesearchComponent = { // Fixed: Added autocomplete="off" to search input (WCAG 1.3.5) // Note: autocomplete="off" is appropriate here as this is a library search, not a standard web search template: ``, methods: { selectradio(radiooutputfacet, radiooutputmfacet) { this.facet = radiooutputfacet; // store the data from the radio selection this.mfacet = radiooutputmfacet; }, submitSearch() { this.$refs.primoQueryString.value = `any,contains,${this.$refs.primoQueryTempString.value.replace( /[,]/g, " " )}`; // vueified OLS widget code this.$refs.oneSearchForm.submit(); // submit the form }, }, computed: { logoSrc() { return this.isDark ? "https://d2jv02qf7xgjwx.cloudfront.net/accounts/16298/images/onesearch_logo3.png" : "https://d2jv02qf7xgjwx.cloudfront.net/accounts/16298/images/onesearch_logo2.png"; }, }, data() { return { facet: "", // initialize the data from the radio selection mfacet: "", isDark: false, }; }, mounted() { this.isDark = document.body.getAttribute("data-bs-theme") === "dark"; var self = this; new MutationObserver(function () { self.isDark = document.body.getAttribute("data-bs-theme") === "dark"; }).observe(document.body, { attributes: true, attributeFilter: ["data-bs-theme"] }); }, }; const { createApp } = Vue; const app1 = createApp({ components: { "navig-component": navigComponent, "hamburger-component": hamburgerComponent, }, data() { return { hamburger: [ { link: "https://cuny-kb.primo.exlibrisgroup.com/discovery/search?tab=Everything&vid=01CUNY_KB:CUNY_KB&lang=en", icon: "fas fa-search fa-fw bigger-icon", description: "OneSearch", target_blank: "", id: 1, }, { link: "https://library.kbcc.cuny.edu/az.php", icon: "fas fa-database fa-fw bigger-icon", description: "Databases A to Z", target_blank: "", id: 2, }, { link: "https://library.kbcc.cuny.edu/guides", icon: "fas fa-telescope fa-fw bigger-icon", description: "Research Guides", target_blank: "", id: 3, }, { link: "https://library.kbcc.cuny.edu/faq", icon: "fas fa-question-circle fa-fw bigger-icon", description: "FAQ", target_blank: "", id: 4, }, { link: "https://library.kbcc.cuny.edu/calendar", icon: "fas fa-clock fa-fw bigger-icon", description: "Library Hours", target_blank: "", id: 5, }, { link: "https://library.kbcc.cuny.edu/sitemap", icon: "fas fa-location-arrow fa-fw bigger-icon", description: "Site Map", target_blank: "", id: 6, }, ], navlistofmenus: { "Find It": { id: 1, isOpen: false, // Added for dynamic aria-expanded (WCAG 4.1.2) data: [ { link: "https://library.kbcc.cuny.edu/az.php", icon: "fas fa-database fa-fw bigger-icon", description: "Databases A to Z", target_blank: "", id: 1, }, { link: "https://cuny-kb.primo.exlibrisgroup.com/discovery/npsearch?vid=01CUNY_KB:CUNY_KB&search_scope=all", icon: "fas fa-newspaper fa-fw bigger-icon", description: "Newspaper Search", target_blank: "", id: 2, }, { link: "https://cuny-kb.primo.exlibrisgroup.com/discovery/search?vid=01CUNY_KB:CUNY_KB&tab=CourseReserves&search_scope=CourseReserves", icon: "fas fa-cloud-download-alt fa-fw bigger-icon", description: "Course Reserves", target_blank: "", id: 3, }, { link: "https://cuny-kb.primo.exlibrisgroup.com/discovery/jsearch?vid=01CUNY_KB:CUNY_KB", icon: "fas fa-book fa-fw bigger-icon", description: "Search for Specific Journals", target_blank: "", id: 4, }, { link: "https://library.kbcc.cuny.edu/academicworks", icon: "fas fa-archive fa-fw bigger-icon", description: "CUNY Academic Works", target_blank: "_blank", id: 5, }, { link: "https://kbcc.textbookx.com/institutional/index.php", icon: "fas fa-cash-register fa-fw bigger-icon", description: "KBCC Bookstore", target_blank: "_blank", id: 6, }, ], }, Services: { id: 2, isOpen: false, // Added for dynamic aria-expanded (WCAG 4.1.2) data: [ { link: "https://kbcc-cuny.illiad.oclc.org/illiad/logon.html", icon: "fas fa-books fa-fw bigger-icon", description: "Interlibrary Loan", target_blank: "_blank", id: 1, }, { link: "https://library.kbcc.cuny.edu/libraryservices/informationliteracy", icon: "fas fa-chalkboard-teacher fa-fw bigger-icon", description: "Book a Library Instruction Session", target_blank: "", id: 2, }, { link: "https://library.kbcc.cuny.edu/mediaservices", icon: "fas fa-photo-video fa-fw bigger-icon", description: "Media Services", target_blank: "", id: 3, }, { link: "https://kbcc-cuny.libanswers.com/form?queue_id=6967", icon: "fas fa-shopping-basket fa-fw bigger-icon", description: "Suggest a Book for Purchase", target_blank: "", id: 4, }, { link: "https://kbcc-cuny.libwizard.com/id/8cdb3f1a787de3c307a8cf5d75cad406", icon: "fas fa-bookmark fa-fw bigger-icon", description: "Suggest an Item to Add to Reserves", target_blank: "", id: 5, }, ], }, "About Us": { id: 3, isOpen: false, // Added for dynamic aria-expanded (WCAG 4.1.2) data: [ { link: "https://library.kbcc.cuny.edu/about-us/directory", icon: "fas fa-address-book fa-fw bigger-icon", description: "Faculty & Staff Directory", target_blank: "", id: 1, }, { link: "https://library.kbcc.cuny.edu/newarrivals", icon: "far fa-mail-bulk fa-fw bigger-icon", description: "New Arrivals", target_blank: "", id: 2, }, { link: "https://library.kbcc.cuny.edu/about-us/liaisons", icon: "fas fa-theater-masks fa-fw bigger-icon", description: "Subject Liaisons", target_blank: "", id: 3, }, { link: "https://library.kbcc.cuny.edu/social", icon: "far fa-hashtag fa-fw bigger-icon", description: "Social Media", target_blank: "", id: 4, }, { link: "https://cuny-kb.alma.exlibrisgroup.com/discovery/collectionDiscovery?vid=01CUNY_KB:CUNY_KB", icon: "fa-solid fa-star fa-fw bigger-icon", description: "Featured Collections", target_blank: "", id: 5, }, ], }, "Location & Hours": { id: 4, isOpen: false, // Added for dynamic aria-expanded (WCAG 4.1.2) data: [ { link: "https://tour.kingsborough.edu/", icon: "fas fa-map-marked-alt fa-fw bigger-icon", description: "Campus Map", target_blank: "", id: 1, }, { link: "https://library.kbcc.cuny.edu/calendar", icon: "fas fa-clock fa-fw bigger-icon", description: "Library Hours", target_blank: "", id: 2, }, ], }, Help: { id: 5, isOpen: false, // Added for dynamic aria-expanded (WCAG 4.1.2) data: [ { link: "https://library.kbcc.cuny.edu/askalibrarian", icon: "fas fa-book-reader fa-fw bigger-icon", description: "Ask A Librarian", target_blank: "", id: 1, }, { link: "https://library.kbcc.cuny.edu/faq", icon: "fas fa-question-circle fa-fw bigger-icon", description: "FAQ", target_blank: "", id: 2, }, { link: "https://library.kbcc.cuny.edu/guides", icon: "fas fa-telescope fa-fw bigger-icon", description: "Research Guides and Tutorials", target_blank: "", id: 3, }, { link: "https://library.kbcc.cuny.edu/ENGLISH24", icon: "fas fa-question fa-fw bigger-icon", description: "How to Use the Library", target_blank: "", id: 4, }, ], }, }, }; }, mounted() { // Dynamic aria-expanded for hamburger menu (WCAG 4.1.2) const hamburger = document.getElementById('hamburger'); const hamburgerContainer = document.getElementById('hamburger-container'); if (hamburger && hamburgerContainer) { // Update aria-expanded when dropdown opens/closes (BS5 native events) hamburgerContainer.addEventListener('shown.bs.dropdown', function() { hamburger.setAttribute('aria-expanded', 'true'); }); hamburgerContainer.addEventListener('hidden.bs.dropdown', function() { hamburger.setAttribute('aria-expanded', 'false'); }); } } }); app1.mount("#app1"); const app2 = createApp({ components: { "onesearch-component": onesearchComponent, }, }); app2.mount("#app2"); const app3 = createApp({ data() { return { isDark: false, }; }, methods: { toggleTheme() { this.isDark = !this.isDark; localStorage.setItem("kbcc-theme", this.isDark ? "dark" : "light"); if (this.isDark) { document.body.setAttribute("data-bs-theme", "dark"); } else { document.body.removeAttribute("data-bs-theme"); } var bg = document.querySelector(".kbcc-background-image"); if (bg && bg.style.backgroundImage) { var match = bg.style.backgroundImage.match(/url\([^)]+\)/); if (match) { var overlay = this.isDark ? "rgba(0,0,0,0.4)" : "rgba(255,255,255,0.6)"; bg.style.backgroundImage = "linear-gradient(to bottom, " + overlay + " 0%, " + overlay + " 100%), " + match[0]; } } var logo = document.getElementById("library-logo"); if (logo) { logo.src = this.isDark ? logo.dataset.darkSrc : logo.dataset.lightSrc; } }, }, mounted() { this.isDark = document.body.getAttribute("data-bs-theme") === "dark"; var logo = document.getElementById("library-logo"); if (logo && this.isDark) { logo.src = logo.dataset.darkSrc; } var self = this; window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change", function(e) { if (!localStorage.getItem("kbcc-theme")) { self.isDark = e.matches; if (self.isDark) { document.body.setAttribute("data-bs-theme", "dark"); } else { document.body.removeAttribute("data-bs-theme"); } if (logo) logo.src = self.isDark ? logo.dataset.darkSrc : logo.dataset.lightSrc; } }); }, }); app3.mount("#app3"); // Randomly set the background image for .kbcc-background-image (function () { const images = [ "https://libapps.s3.amazonaws.com/accounts/16298/images/library_front_view.jpg", "https://d2jv02qf7xgjwx.cloudfront.net/accounts/16298/images/copy_for_it.jpg", "https://d2jv02qf7xgjwx.cloudfront.net/accounts/16298/images/Library_Website_Background_Images_005.jpg", "https://d2jv02qf7xgjwx.cloudfront.net/accounts/16298/images/Library_Website_Background_Images_002.jpg", ]; var picked = images[Math.floor(Math.random() * images.length)]; var el = document.querySelector(".kbcc-background-image"); if (el) { // Check theme for correct overlay color var stored = localStorage.getItem("kbcc-theme"); var prefersDark = window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches; var isDark = stored ? stored === "dark" : prefersDark; var overlay = isDark ? "rgba(0,0,0,0.4)" : "rgba(255,255,255,0.6)"; el.style.backgroundImage = "linear-gradient(to bottom, " + overlay + " 0%, " + overlay + " 100%), url('" + picked + "')"; } })();