CINXE.COM
Libib | Yale University
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>Libib | Yale University</title> <meta name="apple-mobile-web-app-title" content="Libib | Yale University"> <meta name="robots" content="no index, no follow" /> <!-- OPEN GRAPH TAGS --> <meta property="og:title" content="Libib | Yale University" /> <meta property="og:type" content="website" /> <meta property="og:url" content="https://www.libib.com/u/yalelgbtq" /> <meta property="og:image" content="https://libib.com/img/users/66420fa90b16f7-83866691.png" /> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="google" content="notranslate" /> <link rel="shortcut icon" href="/img/favicon.png" /> <link rel="icon" type="image/vnd.microsoft.icon" href="/img/favicon.png"> <link rel="icon" type="image/x-icon" href="/img/favicon.png"> <link rel="icon" href="/img/favicon.png" /> <link rel="apple-touch-icon" href="/img/libib-published-webapp-icon.png"/> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script defer data-domain="libib.com" src="https://d2owygzutcldbs.cloudfront.net/js/script.js"></script> <!-- CSS VARS --> <style> :root { --primary-color: #00356B; } </style> <!-- Roboto / Open Sans (logo) --> <!-- <link href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700,900&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css?family=Open+Sans:300&display=swap" rel="stylesheet"> --> <link href="/css/fonts.css?v=36" rel="preload stylesheet" as="style"> <!-- Foundation --> <link rel="stylesheet" href="/css/foundation.css?v=36"> <link rel="stylesheet" href="/css/notification.css?v=36"> <link rel="stylesheet" href="/css/public/style.css?v=36"> <link rel="stylesheet" href="/css/library/style.css?v=36"> <link rel="stylesheet" href="/css/u/style.css?v=36"> <link rel="stylesheet" href="/css/chosen.min.css?v=36"> </head> <!-- u-light & u-dark classes for user hex selection that are very light or very dark --> <body class="u-tpl "> <!-- grid-frame --> <div class="grid-x grid-padding-x small-padding-collapse"> <div class="navbar-spacer hide-for-large"></div> <div id="navbar" class="hide-for-large"> <div class="grid-container"> <div class="grid-x"> <div class="cell small-4 medium-4 hide-for-large"><a id="mobile-logo" class="text-left" href="/">Libib</a></div> <div class="cell small-8 medium-8 hide-for-large"> <a href="#" id="mobile-menu" class="hide-for-large hide-text">Menu</a> </div> </div> </div> </div> <!-- header-bar --> <div id="jump-menu" tabindex="0" aria-label="keyboard-menu"> <h2 id="navigation-links">Skip to</h2> <nav id="keyboard-navigation" role="navigation"> <ul> <li><a href="#published-library-selector" label="Skip to collections">Collections</a></li> <li><a href="#primary" label="Skip to main content">Main Content</a></li> <li><a href="#library-items" label="Skip to items">Items</a></li> <li>Search: alt + /</li> </ul> </nav> </div> <div id="header-bar"> <div id="header-bar-left"> <div id="published-org-icon"><a href="/u/yalelgbtq"><img src="/img/public/libib_logo_white.svg" alt="Libib icon" /></a></div> <h1 id="published-org-title">Yale University</h1> <a id="published-org-website" href="https://www.lgbtq.yale.edu" class="hide-for-small-only" target="_blank">Visit Website</a> <a href="#" id="mobile-menu-top-right" class="hide-for-large hide-for-medium hide-text">Menu</a> </div> <div id="header-bar-right"> <ul id="u-menu" class="hide-for-small-only"> <li><a href="#" class='nolink medium-show-collections show-for-medium-only'>Collections</a></li> </ul> <ul id="u-profile" class="hide-for-small-only"> </ul> </div> </div> <!-- mobile top menu --> <div id="mobile-top-menu" class="show-for-small-only"> <ul id="primary-menu" class="margin-top-20"> <li class=" view-website-mobile"> <a href="https://www.lgbtq.yale.edu" target="_blank">Visit Website</a> </li> </ul> </div> <!-- mobile footer bar --> <div id="mobile-footer-bar" class="show-for-small-only"> <ul class="item-edit-menu-wrapper menu"> <li><a href="#" class="nolink item-libraries-button">Collections</a></li> </ul> </div> <div id="publish-wrap"> <!-- left-sidebar --> <!-- <div id="img-overlay" class="show-for-medium-only menu"></div> --> <div id="mobile-overlay" class="hide-for-large hide-for-small-only"></div> <div id="left-sidebar" class="cell"> <div id="published-organization-image"> <a href="/u/yalelgbtq" name="org-logo"> <img src="/img/users/66420fa90b16f7-83866691.png" alt="Organization Logo" /> </a> </div> <div id="published-library-selector"> <h2><label for="" class="large-label">Collections</label></h2> <a class="bypass-link" href="#search-container" title="Skip to Main">Skip to Main</a> <div class="show-for-small-only close close-libraries"></div> <ul> <li><a href="/u/yalelgbtq/l/1842901" class="active" data-library-id="1842901"><div class="published-library-title">Stonewall Library</div><span class="published-library-count">1024</span></a></li> </ul> </div> <div id="s-spacer"></div> <div id="s-menu"> <!-- ADDRESS LATER --> <ul id="s-sites" class="menu expanded horizontal align-center"> <li><a id="fb-link" target="_blank" href="https://www.facebook.com/yalelgbtq/" class="s-link">Facebook</a></li> <li><a id="youtube-link" target="_blank" href="https://www.youtube.com/@yalelgbtq" class="s-link">YouTube</a></li> <li><a id="insta-link" target="_blank" href="https://www.instagram.com/yalelgbtq" class="s-link">Instagram</a></li> </ul> <a href="https://libib.com" id="powered" title="Powered by Libib">Powered by Libib</a> </div> </div> <!-- end left sidebar --> <!-- primary-container --> <!-- removed cell auto --> <div id="primary"> <div id="primary-inner"> <div id="search-container" class="no-batch-edit"> <div id="libraries-select" class="grid-x"> <!-- <div id="primary-search"> --> <div class="cell small-12 large-auto xlarge-auto"> <div id="search-pane"> <div id="library-search"> <label for="search" class="hide">Search</label> <input type="search" tabindex="0" autocomplete="off" placeholder="Search all collections" name="search" id="search" maxlength="5000" value="" class="change-placeholder"> </div> <div id="search-options"> <div class="grid-x"> <div class="cell small-12 medium-auto"> <h5 class="bold inline-block">Search Filters</h5> </div> </div> <div id="search-operators"> <ul class="menu vertical"> <li class="search-operator"><a href="#" tabindex="-1"><span>groups:</span> Search for a group.</a></li> </ul> <div class="block text-right"> <a tabindex="-1" href="https://support.libib.com/support/search/" target="_blank" class="inline-block underline">Search Help?</a> </div> </div> </div> </div> </div> <!-- </div> --> <div class="text-right filters-custom"> <div id="library-sort-filter"> <div class=""> <label for="library-sort" class="sr-only">Collection Sort</label> <select name="library-sort" id="library-sort" aria-label="Sort collection by"> <option value="title_sort_key" selected>Title</option> <option value="creators_sort_key" >Creator</option> <option value="added" >Added</option> <option value="publish_date" >Published</option> </select> <a href="#" id="library-sort-order" class="asc" aria-label="Sort"><span> </span></a> <a href="#" id="view-filters" class="button no-br inline" aria-label="Open filter options">Filters<span class="corner-badge" aria-hidden="true"></span></a> </div> </div> </div> </div> </div> <!-- A-Z filter --> <div id="az-filter"> <a id="skip-to-items" class="bypass-link" href="#library-items" title="Skip to Items">Skip to Items</a> <div id="letter-range"></div> </div> <div id="library-items" class="grid-x no-batch-edit"> <div id="library-items-wrapper" class="cell small-12"> </div> </div> <!-- Autocomplete off prevents value on soft-refresh --> <input type="hidden" value="0" name="offset" id="offset" autocomplete="off"> <!-- Item details --> <div id="item-details-view"> <div id="item-details-info"></div> </div> <!-- View cover images full screen --> <div id="img-overlay" class="item-img"> <div class="close img-overlay-close"></div> <img src="" alt=""> <div id="item-overlay-info"> <div class="overlay-title"></div> <div class="overlay-creator"></div> </div> </div> <script> $(document).ready(function() { // When scrolling, if we're already loading the next batch of items, set this to false to prevent multi-loading var scroll_load_ready = true; // Used to prevent doubling up on actions on double-clicks var stop_action = false; var url = $('#url').val(); // Initial library load on page refresh lazyLoad(); // hide/show welcome message $('#user-welcome-icon, #confirm-welcome').on('click', function() { $('#user-welcome-message').toggleClass('closed'); $('#user-welcome-icon').toggleClass('closed'); }); // hide welcome message if not interacted with setTimeout(function() { if (!$('#user-welcome-icon').hasClass('closed') && !$('#user-welcome-message').hasClass('closed')) { $('#user-welcome-message').addClass('closed'); $('#user-welcome-icon').addClass('closed'); } }, 7000); $('#primary').scroll(function() { // If we're on the library page and NOT on the search page if ($('#library-items').length && !$('#search-info').length && $('#search').prop('disabled') != true) { if(scroll_load_ready && ($('#primary').scrollTop() + $('#primary').innerHeight() + 480 >= this.scrollHeight)) { scroll_load_ready = false; lazyLoad(); } } }); // View item details list, cover, summary // Open detail view var detail = $('#item-details-view'); $('body').on('click keydown', '.list .item-title, .summary .item-title, .cover:not(.basic) img, .summary .cover-wrapper img', function(e) { if(e.originalEvent.detail > 1 || detail.hasClass('open')) { // handle multiple clicks return; } if (e.type === 'click' || (e.type === 'keydown' && e.keyCode === 13)) { var join_id = $(this).data('join-id'); detail.addClass('open'); var page_id = '?id=' + join_id; // This doesn't actually trigger popstate - only back/forward and anchor links do, or if manually triggered history.back(); history.pushState(null, null, page_id); setTimeout(function() { $('<div class="loading-icon"></div>').hide().appendTo(detail).fadeIn('300'); }, 50); setTimeout(function () { // Stop background from scrolling when using a scroll wheel $('#primary').addClass('noscroll'); }, 600); $.post(url + "/item-details-view", { join_id: join_id }) .done(function(data) { var obj = $.parseJSON(data); if (obj['outcome'] == 'success') { $('div.loading-icon').fadeOut('fast', function() { $('#item-details-info').css('display', 'none').html(obj['item-info']).fadeIn('fast'); // Focus on first button if it exists $('#item-details-info .item-edit-menu-wrapper').focus(); }); } else { $('div.loading-icon').remove(); detail.removeClass('open'); notification(obj['error'][0]['warning'], 'notification-error'); } }); return false; } }); // re-z-index mobile-footer-bar after closing an item $('.close-item').on('click', function() { $('#mobile-footer-bar').removeClass('lower-z'); return false; }); // show library menu for mobile $('.item-libraries-button').on('click', function() { $('#left-sidebar').toggleClass('open'); // If main menu is open, close it so we can see the libraries $('#mobile-top-menu').removeClass('open'); return false; }); // Hide library menu for mobile (do not return false as that stops the <a> link from working) $('.close-libraries, #published-library-selector a').on('click', function() { $('#left-sidebar').removeClass('open'); }); // Change sort type $('#library-sort').on('change', function(){ var sort = $(this).val(); var library_id = $("#published-library-selector a.active").data('library-id'); $.post(url + "/change-sort-order", { sort: sort, library_id: library_id }) .done(function(data) { var obj = $.parseJSON(data); if (obj['outcome'] == 'success') { // We require resetting offset so that the data is cleared in lazyLoad() $('#offset').val('0'); $('#letter-range .letter').removeClass('active'); // We remove the letter breaks to prevent a mismatch of headers $('.letter-break').remove(); // If the library switched, let's load the library lazyLoad(); // unfocus select $('#library-sort').blur(); } else { notification(obj['error'][0]['warning'], 'notification-error'); // unfocus select $('#library-sort').blur(); } }); }); // Change sort direction $('#library-sort-order').on('click', function() { if (stop_action) { return false; } stop_action = true; $(this).toggleClass('desc asc'); var direction = $(this).attr('class'); var library_id = $("#published-library-selector a.active").data('library-id'); $.post(url + "/change-sort-direction", { direction: direction, library_id: library_id }) .done(function(data) { var obj = $.parseJSON(data); if (obj['outcome'] == 'success') { // We require resetting offset so that the data is cleared in lazyLoad() $('#offset').val('0'); // We remove the letter breaks to prevent a mismatch of headers $('.letter-break').remove(); // Let's load the library lazyLoad(); } else { notification(obj['error'][0]['warning'], 'notification-error'); } stop_action = false; }); }); // Filter by letter range // Trigger action on click or focus+enter for letter selection $(document).on('click keydown', '#letter-range .letter', function(event) { // Check if it's a click event or if Enter key is pressed while focused if (event.type === 'click' || (event.type === 'keydown' && event.key === 'Enter')) { $('#letter-range .letter').removeClass('active'); $(this).addClass('active'); // Remove letter breaks to prevent header removal on reload $('.letter-break').remove(); $('#offset').val('0'); // Load the library if letter range is pressed, and drop focus to item list lazyLoad().then(function() { // This will run AFTER lazyLoad() completes // If user hit enter to load, then drop focus to skip items option if (event.key === 'Enter') { $('#skip-to-items').focus(); } }); } }); function lazyLoad() { scroll_load_ready = false; var library_id = $("#published-library-selector a.active").data('library-id'); var prev_letter_break = $('.letter-break').last().text() ?? ''; var active_letter = $('#letter-range .letter.active').data('val'); var offset = $('#offset').val(); // On first load, empty out info if (offset == 0) { $('#library-items #library-items-wrapper').empty(); $('#letter-range').empty(); } $('#library-items').after('<div class="loading-icon"></div>'); // Disable searching while loading $('#search').prop('disabled', true); return $.post(url + "/get-account-items", { library_id: library_id, offset: offset, prev_letter_break: prev_letter_break, active_letter: active_letter }).done(function(data) { var obj = $.parseJSON(data); if (obj['outcome'] == 'success') { // If the library switched, let's load the library $('div.loading-icon').remove(); // Re-enable searching $('#search').prop('disabled', false); // Update offset $('#offset').val(obj['offset']); // Load directory on first load if (offset == 0) { $('#letter-range').html(obj['directory']); } // If first load has no items, do not reset scroll reader if (offset == 0 && obj['empty_set_of_items'] != false) { $('#library-items #library-items-wrapper').append(obj['item-info']); } else if (obj['empty_set_of_items'] == false) { // Load the items $('#library-items #library-items-wrapper').append(obj['item-info']); scroll_load_ready = true; var inner_wrapper_height = parseInt($('#library-items-wrapper').height() || 0); var outer_wrapper_height = window.innerHeight - (parseInt($('#library-header').outerHeight()) || 0) - (parseInt($('#search-container').outerHeight()) || 0) - (parseInt($('#az-filter').outerHeight()) || 0); // If page items doesn't fill the window_height, load another round if ((inner_wrapper_height < outer_wrapper_height) && (obj['item-count'] == obj['limit'])) { lazyLoad(); } } } }); } // Forward State (1-10ms delay before parameter is set for some reason) window.addEventListener('popstate', function(e) { setTimeout(function() { getPopstate(); }, 100); }); var getUrlParameter = function getUrlParameter(sParam) { var sPageURL = window.location.search.substring(1), sURLVariables = sPageURL.split('&'), sParameterName, i; for (i = 0; i < sURLVariables.length; i++) { sParameterName = sURLVariables[i].split('='); if (sParameterName[0] === sParam) { return sParameterName[1] === undefined ? true : decodeURIComponent(sParameterName[1]); } } }; var solo = getUrlParameter('solo'); if (solo !== undefined && solo.length) { detail.addClass('open'); var page_id = '?solo=' + solo; // This doesn't actually trigger popstate - only back/forward and anchor links do, or if manually triggered history.back(); history.pushState(null, null, page_id); setTimeout(function() { $('<div class="loading-icon-alt"></div>').hide().appendTo(detail).fadeIn('300'); }, 50); setTimeout(function () { // Stop background from scrolling when using a scroll wheel $('#primary').addClass('noscroll'); }, 600); $.post(url + "/item-details-view", { join_id: solo }) .done(function(data) { var obj = $.parseJSON(data); if (obj['outcome'] == 'success') { $('div.loading-icon-alt').fadeOut('fast', function() { $('#item-details-info').css('display', 'none').html(obj['item-info']).fadeIn('fast'); }); } else { $('div.loading-icon-alt').remove(); detail.removeClass('open'); notification(obj['error'][0]['warning'], 'notification-error'); } }); } // URL pointed at a specific item function getPopstate() { var get_page_id = getUrlParameter('id'); if (typeof get_page_id !== 'undefined') { join_id = get_page_id; detail.addClass('open'); var page_id = '?id=' + join_id; setTimeout(function() { $('<div class="loading-icon"></div>').hide().appendTo(detail).fadeIn('300'); }, 300); setTimeout(function () { // Stop background from scrolling when using a scroll wheel $('#primary').addClass('noscroll'); }, 600); $.post( url + "/item-details-view", { join_id: join_id }) .done(function(data) { var obj = $.parseJSON(data); if (obj['outcome'] == 'success') { $('div.loading-icon').fadeOut('fast', function() { $('#item-details-info').css('display', 'none').html(obj['item-info']).fadeIn('fast'); }); } }); } } }); </script> </div> </div> <!-- filter-sidebar --> </div> <div id="filter-sidebar"> <div class="grid-container full sticky-header"> <div class="grid-x filter-title"> <div class="close close-filters"></div> <div class="cell small-12 margin-top-30"></div> <div class="cell small-6"> <label for="" class="large-label top">Filters</label> </div> <div class="cell small-6 text-right margin-top-10"> <button type="reset" class="clear-all-filters">Clear all</button> </div> </div> </div> <div id="filter-container" tabindex="0"></div> </div> <div id="basket-sidebar" tabindex="-1"> <div class="basket-row"> <div class="grid-container full sticky-header"> <div class="grid-x basket-title"> <div class="close close-basket"></div> <div class="cell small-12 border-bottom"> <label for="" class="large-label top basket-title-label">Your Items</label> </div> </div> </div> <div id="basket-transactions"> </div> <div id="published-complete" class="border-top"> <div class="basket-message basket-holds-message hide"> When your holds become available you will be notified via email. </div> <div class="basket-message basket-due-date-message hide"> Checkouts Due: <strong>MMM DD, YYYY</strong> </div> <button id="published-complete-transaction" class="button expanded no-br" tabindex="0">Complete</button> </div> </div> </div> </div> <!-- end grid-frame --> <input type="hidden" value="Patron Login" id="patron-login-text"> <input type="hidden" value="Login" id="login-button-text"> <input type="hidden" value="Need Password?" id="forgot-password-text"> <input type="hidden" value="/u/yalelgbtq" id="url"> <input type="hidden" value="www.libib.com/u/yalelgbtq" id="full-url"> <input type="hidden" value="Select your copy" id="copy-select"> <input type="hidden" value="Select" id="copy-select-button"> <!-- LOAD SCRIPTS --> <script src="/js/what-input.js?v=36"></script> <script src="/js/foundation.min.js?v=36"></script> <script src="/js/notification.js?v=36"></script> <script src="/js/postform.js?v=36"></script> <script src="/js/u/script.js?v=36"></script> <script src="/js/u/search.js?v=36"></script> <script src="/js/u/filter.js?v=36"></script> <script src="/js/chosen.jquery.min.js?v=36"></script> <script src="/js/u/basket.js?v=36"></script> </body> </html>