UNPKG

@bostonuniversity/bulib-wc

Version:

collection of web components and styles used at Boston University Libraries

529 lines (500 loc) 28.1 kB
import { Story, Preview, Meta, Props, html } from '@open-wc/demoing-storybook'; import '../index.js'; <Meta title="Branding|header" /> # BU Libraries Header Provide a clean, consistent, minimalist, and reliable way to brand any given site and to navigate between subsites whether on large screens or on mobile, even when `javascript` is turned off. _NOTE: the css for this requires a build step_ ## Top Bar Contains the main navigation across/between all sites. ### Basic The basic bar includes a dropdown, but isn't a megamenu. <Preview> <Story name="header"> {html` <div class="header-wrapper"> <nav> <a class="sr-only" href="#content">Skip to Main Content</a> <div class="primary-navbar"> <div class="primary-nav-left"> <a title="BU Libraries Homepage" href="https://www.bu.edu/library"> <img id="bu-logo" src="https://cdn.jsdelivr.net/npm/bulib-wc@latest/dist/icons/bulib-logo.png"> </a> </div> <div class="primary-nav-main menu-items-wrapper"> <ul class="menu-items"> <li id="subsite-research"><a href="https://www.bu.edu/library/services">Find & Borrow</a></li> <li id="subsite-services"><a href="https://www.bu.edu/library/research">Research & Learning</a></li> <li id="subsite-about"><a href="https://www.bu.edu/library/about">About Us</a></li> <li> <div class="dropdown"> <a class="menu-item inline" href="https://www.bu.edu/library/about"> <span class="prs">Locations</span><i class="material-icons inline">arrow_drop_down</i> </a> <div class="dropdown-content"> <ul class="library-list no-bullet"> <li><a href="https://www.bu.edu/library/african-studies/">African Studies Library</a></li> <li><a href="https://www.bu.edu/library/astronomy/">Astronomy Library</a></li> <li><a href="http://archives.bu.edu/">Howard Gotlieb Archival Research Center</a></li> <li><a href="https://www.bu.edu/library/mugar-memorial/">Mugar Memorial Library</a></li> <li><a href="https://www.bu.edu/library/music/">Music Library</a></li> <li><a href="https://www.bu.edu/library/management/">Pardee Management Library</a></li> <li><a href="https://www.bu.edu/library/pickering-educational/">Pickering Educational Resources Library</a></li> <li><a href="https://www.bu.edu/library/sel/">Science & Engineering Library</a></li> <li><a href="https://www.bu.edu/library/stone-science/">Stone Science Library</a></li> <li><a href="https://www.bu.edu/library/about/additional-libraries/">Additional Libraries</a></li> </ul> </div> </div> </li> </ul> </div> <div class="primary-nav-right"> <div class="mobile-navigation none" aria-hidden="true"> <div id="menuToggle"> <!-- invisible toggle with hamburger --> <input type="checkbox" tabindex="-1"> <span></span> <span></span> <span></span> <!-- mobile nav menu --> <ul id="mobile-menu"> <li><a href="https://www.bu.edu/library/search">BU Libraries Search</a></li> <li><a href="https://www.bu.edu/library/help/using-the-libraries-online/">Using the Libraries Online</a></li> <li><a href="https://www.bu.edu/library/help/visiting-the-libraries/">Visiting the Libraries</a></li> <li><a href="https://www.bu.edu/library/about/hours/">Library Hours</a></li> <li><a href="https://www.bu.edu/library/about">Locations</a></li> <li><a href="https://www.bu.edu/library/about/maps-floorplans">Maps and Floorplans</a></li> <li><hr></li> <li><a href="https://www.bu.edu/library/">Libraries Home</a></li> <li><a href="https://askalibrarian.bu.edu">Ask a Librarian</a></li> <li><a href="https://www.bu.edu/library/account">My Account</a></li> </ul> </div> </div> <div class="top-right"> <ul class="menu-items"> <li> <a class="menu-item inline" href="https://askalibrarian.bu.edu/"> <span class="prm">Ask a Librarian</span><i class="material-icons inline">question_answer</i> </a> </li> <li> <a class="menu-item inline" href="https://www.bu.edu/library/account"> <span class="prm">My Account</span><i class="material-icons inline">person</i> </a> </li> </ul> </div> </div> </div> <script id="mobile-nav-clickout" type="text/javascript"> let input = document.querySelector("#menuToggle > input"); window.addEventListener("click", (event) => { let clicked = event.target; let clicked_within_mobile_menu = clicked.closest("#menuToggle") != null; if(input && clicked != input && !clicked_within_mobile_menu || clicked.tagName == "A"){ input.checked = false; // uncheck the #menuToggle input, closing the mobile nav } }); </script> </nav> </div> <br /><br /><br /><br /><br /> `} </Story> </Preview> ## Advanced The advanced header contains a `div.submenu` that appears on mouseover. <Preview> <Story name="header-advanced"> {html` <div class="header-wrapper"> <nav> <a class="sr-only" href="#content">Skip to Main Content</a> <div class="primary-navbar"> <div class="primary-nav-left"> <a title="BU Libraries Homepage" href="https://www.bu.edu/library"> <img id="bu-logo" src="https://cdn.jsdelivr.net/npm/bulib-wc@latest/dist/icons/bulib-logo.png"> </a> </div> <div class="primary-nav-main menu-items-wrapper"> <ul class="menu-items"> <li class="menu-item"> <a class="inline no-wrap" href="https://www.bu.edu/library/services">Find &amp; Borrow</a> <div class="submenu"> <ul id="find-and-borrow" class="submenu-items flexnw"> <li> <ul class="no-bullet" tabindex="0"> <span>FIND</span> <li><a href="https://www.bu.edu/library/search">Search</a></li> <li><a href="https://library.bu.edu/az.php">Databases A-Z</a></li> <li><a href="https://www.bu.edu/library/services/reserves/">Course Materials (Reserves)</a></li> <li><a href="https://buprimo.hosted.exlibrisgroup.com/primo-explore/search?vid=journals&lang=en_US">eJournals</a></li> <li><a href="http://bu.on.worldcat.org/">WorldCat Discovery</a></li> </ul> </li> <li> <ul class="no-bullet" tabindex="0"> <span>COLLECTIONS</span> <li><a href="https://open.bu.edu/">OpenBU</a></li> <li><a href="https://open.bu.edu/handle/2144/8520">Theses &amp; Dissertations</a></li> <li><a href="http://archives.bu.edu/">Archives</a></li> <li><a href="http://www.bu.edu/library/mugar-memorial/research/krasker-filmvideo/">Krasker Film / Video</a></li> </ul> </li> <li> <ul class="no-bullet" tabindex="0"> <span>BORROWING</span> <li><a href="https://www.bu.edu/library/services/borrowing/">Borrowing</a></li> <li><a href="https://www.bu.edu/library/services/circulation/">Circulation</a></li> <li><a href="https://www.bu.edu/library/services/ill/">Inter-Library Borrowing</a></li> </ul> </li> </ul> </div> </li> <li class="menu-item"> <a href="https://www.bu.edu/library/research">Research &amp; Learning</a> <div class="submenu"> <ul id="research-and-learning" class="submenu-items flexnw"> <li> <ul class="no-bullet" tabindex="0"> <span>SUPPORT</span> <li><a href="https://askalibrarian.bu.edu/">Ask a Librarian</a></li> <li><a href="https://www.bu.edu/library/services/reference/appointments/">Make an Appointment</a></li> <li><a href="https://www.bu.edu/library/services/reference/writing-centers/">Writing Center</a></li> <li><a href="https://www.bu.edu/library/services/for-faculty/">For Faculty</a></li> <li><a href="https://www.bu.edu/library/services/alumni/">For Alumni</a></li> <li><a href="https://www.bu.edu/library/services/for-graduate-students/">For Graduate Students</a></li> </ul> </li> <li> <ul class="no-bullet" tabindex="0"> <span>GUIDES</span> <li><a href="https://library.bu.edu/guides/">Research Guides</a></li> <li><a href="https://www.bu.edu/library/research/guides/course-guides/">Course Guides</a></li> <li><a href="https://www.bu.edu/library/help/how-to/">How-To Guides</a></li> <li><a href="https://www-staging.bu.edu/library/help/using-the-libraries-online/">Using the Libraries Online</a></li> <li><a href="https://library.bu.edu/create_bibliographies">Creating Bibliographies</a></li> </ul> </li> <!-- <li> <ul class="no-bullet" tabindex="0"> <span>FOR FACULTY</span> <li><a>Scanning &amp; Delivery</a></li> <li><a>Course Materials (Reserves)</a></li> <li><a>Place Item on Reserve</a></li> <li><a>Remote Teaching &amp; Learning</a></li> <li><a>All Faculty Services</a></li> </ul> </li> --> <li> <ul class="no-bullet" tabindex="0"> <span>SERVICES</span> <li><a href="https://www.bu.edu/library/services/scanning-delivery-services/">Scanning &amp; Delivery</a></li> <li><a href="https://www.bu.edu/library/services/reserves/">Course Materials (Reserves)</a></li> <li><a href="https://www.bu.edu/data/">Data Services</a></li> </ul> </li> </ul> </div> </li> <li class="menu-item"> <a href="https://www.bu.edu/library/about">About Us</a> <div class="submenu"> <ul id="about-us" class="submenu-items flexnw"> <li> <ul class="no-bullet" tabindex="0"> <span>SPACES</span> <li><a href="https://www.bu.edu/library/about/hours/">Library &amp; Service Hours</a></li> <li><a>Visiting the Libraries</a></li> <li><a href="https://www.bu.edu/library/about/study-spaces/">Study Rooms &amp; Spaces</a></li> <li><a href="https://www.bu.edu/library/about/maps-floorplans/">Maps &amp; Floorplans</a></li> <li><a href="https://www.bu.edu/library/services/computers-and-printing/">Computers, Printing, Scanning</a></li> </ul> </li> <li> <ul class="no-bullet" tabindex="0"> <span>INFO</span> <li><a href="https://www.bu.edu/library/about/news/">News &amp; Updates</a></li> <li><a href="https://www.bu.edu/library/about/who-we-are/staff-directory/">Staff Directory A-Z</a></li> <li><a href="https://www.bu.edu/library/about">About BU Libraries</a></li> <li><a>Events Calendar</a></li> <li><a href="https://www.bu.edu/library/about/code-of-conduct/">Code of Conduct</a></li> </ul> </li> </ul> </div> </li> <li class="menu-item"> <a href="https://www.bu.edu/library/about">Locations</a> <div class="submenu"> <ul id="locations" class="submenu-items flexnw" tabindex="0"> <li> <ul class="no-bullet" tabindex="0"> <span><a href="https://www.bu.edu/library/about">ALL LOCATIONS</a></span> <li><a href="https://www.bu.edu/library/african-studies/">African Studies Library</a></li> <li><a href="https://www.bu.edu/library/astronomy/">Astronomy Library</a></li> <li><a href="http://archives.bu.edu/">Howard Gotlieb Archival Research Center</a></li> <li><a href="https://www.bu.edu/library/mugar-memorial/">Mugar Memorial Library</a></li> <li><a href="https://www.bu.edu/library/music/">Music Library</a></li> <li><a href="https://www.bu.edu/library/management/">Pardee Management Library</a></li> <li><a href="https://www.bu.edu/library/pickering-educational/">Pickering Educational Resources Library</a></li> <li><a href="https://www.bu.edu/library/sel/">Science &amp; Engineering Library</a></li> <li><a href="https://www.bu.edu/library/stone-science/">Stone Science Library</a></li> </ul> </li> <li> <ul class="no-bullet" tabindex="0"> <span><a href="https://www.bu.edu/library/about/additional-libraries/">ADDITIONAL LIBRARIES</a></span> <li><a href="https://www.bu.edu/anthrop/about/library/">Anthropology Department Library</a></li> <li><a href="https://www.bu.edu/cfa/current-students/music-resources/music-curriculum-library/">CFA Music Curriculum Library</a></li> <li><a href="https://www.bu.edu/geddes/">Geddes Language Center</a></li> <li><a href="https://www.bu.edu/library/african-studies/">Law Library</a></li> <li><a href="https://www.bu.edu/library/astronomy/">Medical Library</a></li> <li><a href="https://www.bu.edu/africa/outreach/outreach-library/">Teaching Africa Library</a></li> <li><a href="https://www.bu.edu/cfa/creative-research/learn/libraries/library/">Visual Arts Resource Library</a></li> <li><a href="https://www.bu.edu/ah/vrc/" target="_blank" rel="noopener">Visual Resources Center</a></li> </ul> </li> </ul> </div> </li> </ul> </div> <div class="primary-nav-right"> <div class="mobile-navigation none" aria-hidden="true"> <div id="menuToggle"> <!-- invisible toggle with hamburger --> <input type="checkbox" tabindex="-1"> <span></span> <span></span> <span></span> <!-- mobile nav menu --> <ul id="mobile-menu"> <li><a href="https://www.bu.edu/library/search">BU Libraries Search</a></li> <li><a href="https://www.bu.edu/library/help/using-the-libraries-online/">Using the Libraries Online</a></li> <li><a href="https://www.bu.edu/library/help/visiting-the-libraries/">Visiting the Libraries</a></li> <li><a href="https://www.bu.edu/library/about/hours/">Library Hours</a></li> <li><a href="https://www.bu.edu/library/about">Locations</a></li> <li><a href="https://www.bu.edu/library/about/maps-floorplans">Maps and Floorplans</a></li> <li><hr></li> <li><a href="https://www.bu.edu/library/">Libraries Home</a></li> <li><a href="https://askalibrarian.bu.edu">Ask a Librarian</a></li> <li><a href="https://www.bu.edu/library/account">My Account</a></li> </ul> </div> </div> <div class="top-right"> <ul class="menu-items"> <li> <a class="menu-item inline" href="https://askalibrarian.bu.edu/"> <span class="prm">Ask a Librarian</span><i class="material-icons inline">question_answer</i> </a> </li> <li> <a class="menu-item inline" href="https://www.bu.edu/library/account"> <span class="prm">My Account</span><i class="material-icons inline">person</i> </a> </li> </ul> </div> </div> </div> <script id="mobile-nav-clickout" type="text/javascript"> let input = document.querySelector("#menuToggle > input"); window.addEventListener("click", (event) => { let clicked = event.target; let clicked_within_mobile_menu = clicked.closest("#menuToggle") != null; if(input && clicked != input && !clicked_within_mobile_menu || clicked.tagName == "A"){ input.checked = false; // uncheck the #menuToggle input, closing the mobile nav } }); </script> </nav> </div> <br /><br /><br /><br /><br /> `} </Story> </Preview> For the time being, there's a `bulib-submenu` that powers the list of items with them. This should be temporary and is a work-around to encapsulate/protect against wordpress header styling. <Preview> <Story name="header-submenu"> {html` <div class="header-wrapper"> <nav> <a class="sr-only" href="#content">Skip to Main Content</a> <div class="primary-navbar"> <div class="primary-nav-left"> <a title="BU Libraries Homepage" href="https://www.bu.edu/library"> <img id="bu-logo" src="https://cdn.jsdelivr.net/npm/bulib-wc@latest/dist/icons/bulib-logo.png"> </a> </div> <div class="primary-nav-main menu-items-wrapper"> <ul class="menu-items"> <li class="menu-item"> <a class="inline no-wrap" href="https://www.bu.edu/library/services"> <span class="txt-wrap">Find &amp; Borrow</span><i class="material-icons">arrow_drop_down</i> </a> <div class="submenu"><bulib-submenu code="find-and-borrow" class="full-width"></bulib-submenu></div> </li> <li class="menu-item"> <a href="/library/research"> <span>Research &amp; Learn</span><i class="material-icons">arrow_drop_down</i> </a> <div class="submenu"><bulib-submenu code="research-and-learn" class="full-width"></bulib-submenu></div> </li> <li class="menu-item"> <a href="/library/about"> <span class="txt-wrap">About Us</span><i class="material-icons">arrow_drop_down</i> </a> <div class="submenu"><bulib-submenu code="about-us" class="full-width"></bulib-submenu></div> </li> <li class="menu-item"> <a href="https://www.bu.edu/library/about"> <span>Locations</span><i class="material-icons">arrow_drop_down</i> </a> <div class="submenu"><bulib-submenu code="locations" class="full-width"></bulib-submenu></div> </li> </ul> </div> <div class="primary-nav-right"> <div class="mobile-navigation none" aria-hidden="true"> <div id="menuToggle"> <!-- invisible toggle with hamburger --> <input type="checkbox" tabindex="-1"> <span></span> <span></span> <span></span> <!-- mobile nav menu --> <ul id="mobile-menu"> <li><a href="https://www.bu.edu/library/search">BU Libraries Search</a></li> <li><a href="https://www.bu.edu/library/help/using-the-libraries-online/">Using the Libraries Online</a></li> <li><a href="https://www.bu.edu/library/help/visiting-the-libraries/">Visiting the Libraries</a></li> <li><a href="https://www.bu.edu/library/about/hours/">Library Hours</a></li> <li><a href="https://www.bu.edu/library/about">Locations</a></li> <li><a href="https://www.bu.edu/library/about/maps-floorplans">Maps and Floorplans</a></li> <li><hr></li> <li><a href="https://www.bu.edu/library/">Libraries Home</a></li> <li><a href="https://askalibrarian.bu.edu">Ask a Librarian</a></li> <li><a href="https://www.bu.edu/library/account">My Account</a></li> </ul> </div> </div> <div class="top-right"> <ul class="menu-items"> <li> <a class="menu-item inline" href="https://askalibrarian.bu.edu/"> <span class="prm">Ask a Librarian</span><i class="material-icons inline">question_answer</i> </a> </li> <li> <a class="menu-item inline" href="https://www.bu.edu/library/account"> <span class="prm">My Account</span><i class="material-icons inline">person</i> </a> </li> </ul> </div> </div> </div> <script id="mobile-nav-clickout" type="text/javascript"> let input = document.querySelector("#menuToggle > input"); window.addEventListener("click", (event) => { let clicked = event.target; let clicked_within_mobile_menu = clicked.closest("#menuToggle") != null; if(input && clicked != input && !clicked_within_mobile_menu || clicked.tagName == "A"){ input.checked = false; // uncheck the #menuToggle input, closing the mobile nav } }); </script> </nav> </div> <br /><br /><br /><br /><br /> `} </Story> </Preview> ## Banner Contains Site-Specific Code/links, and normally a `<bulib-search>` (if one's not already present on the home page). Links for a hierarchy of '**parent**: child' (unless otherwise specified), and should take you back to the site landing page (/). <Preview> <Story name="site-banner"> {html` <div class="banner-wrapper"> <div class="banner"> <span><a href="/">Ask a Librarian:</a> <a href="/businessFAQs">Business FAQs</a></span> <bulib-search str_options="pardee-help primo"></bulib-search> </div> </div> `} </Story> </Preview> The wordpress banner has a `section` on the left that includes a `#genus` and `#species` that is loaded via a script from the `window.location.path`. That script also loads in the `bulib-hours` component. <Preview> <Story name="site-banner-wp"> {html` <style type="text/css"> body { --bulib-search-padding: 5px; --bulib-search-options-padding: 4px; } </style> <div class="banner-wrapper"> <div class="banner"> <section> <span class="flexw"> <a id="genus" href="/library-responsive/mugar-memorial/">Mugar Memorial Library</a> <a id="species" href="/library-responsive/mugar-memorial/services">:&nbsp; Services</a> </span> <span id="hours-display" class="flexw small-text txtv"> hours: &nbsp; <bulib-hours library="mugar-memorial" short></bulib-hours> </span> </section> <bulib-search str_options="wp primo guides" class="prm secondary"></bulib-search> </div> </div> `} </Story> </Preview> LibCal exception case in which the site is dual-purpose (has two landing pages). <Preview> <Story name="site-banner-libcal"> {html` <div class="banner-wrapper"> <div class="banner"> <span> <strong><a href="/calendar">Events</a></strong> &nbsp; and &nbsp; <strong><a href="https://www.bu.edu/library/about/study-spaces">Reservations</a></strong> </span> </div> </div> `} </Story> </Preview> The banner can be modified to include additional content, so long as it's contained in a single container (e.g. `div` or `section`) <Preview> <Story name="site-banner-libguides"> {html` <style type="text/css"> div.banner-wrapper { --bulib-search-min-width: 100vw; --bulib-search-options-padding: 5px; } div.banner-wrapper bulib-search { width: -webkit-fill-available; } </style> <div class="banner-wrapper"> <div class="banner" id="s-lg-guide-header-info"> <span class="prl"><a href="/guides" class="bigger-text">Research Guides</a></span> <bulib-search class="secondary" str_options="wp primo guides" str_selected="guides"> <form action="https://library.bu.edu/srch.php" class="full-width txtc flexnw"> <input name="q" class="full-width plm" placeholder="Search all guides" type="text"> <button class="bulib-btn man" type="submit" value="Search"><i class="material-icons">search</i></button> </form> </bulib-search> </div> </div> `} </Story> </Preview>