From 2abdba1147f946be2a1bcccebf69fd801cde3949 Mon Sep 17 00:00:00 2001 From: "kazzer@ub.uni-leipzig.de" <kazzer@ub.uni-leipzig.de> Date: Fri, 9 Jul 2021 10:03:12 +0200 Subject: [PATCH] ref #20188 [FID-BBI: re-construct adv. search] * re-constructs original look of advanced search incl. recent BARF changes --- themes/fid_bbi/js/advanced_search.js | 133 ------------------ .../fid_bbi/scss/blocks/advanced-search.scss | 63 +++++++-- 2 files changed, 51 insertions(+), 145 deletions(-) delete mode 100644 themes/fid_bbi/js/advanced_search.js diff --git a/themes/fid_bbi/js/advanced_search.js b/themes/fid_bbi/js/advanced_search.js deleted file mode 100644 index d7b444480dd..00000000000 --- a/themes/fid_bbi/js/advanced_search.js +++ /dev/null @@ -1,133 +0,0 @@ -/* This is a copy of bootstrap3 version, changes in line 131, cf. #15409, DM */ -/*exported addGroup, addSearch, deleteGroup, deleteSearch */ -var nextGroup = 0; -var groupLength = []; - -function addSearch(group, _fieldValues) { - var fieldValues = _fieldValues || {}; - // Build the new search - var inputID = group + '_' + groupLength[group]; - var $newSearch = $($('#new_search_template').html()); - - $newSearch.attr('id', 'search' + inputID); - $newSearch.find('input.form-control') - .attr('id', 'search_lookfor' + inputID) - .attr('name', 'lookfor' + group + '[]') - .val(''); - $newSearch.find('select.adv-term-type option:first-child').attr('selected', 1); - $newSearch.find('select.adv-term-type') - .attr('id', 'search_type' + inputID) - .attr('name', 'type' + group + '[]'); - $newSearch.find('.adv-term-remove') - .attr('onClick', 'return deleteSearch(' + group + ',' + groupLength[group] + ')'); - // Preset Values - if (typeof fieldValues.term !== "undefined") { - $newSearch.find('input.form-control').val(fieldValues.term); - } - if (typeof fieldValues.field !== "undefined") { - $newSearch.find('select.adv-term-type option[value="' + fieldValues.field + '"]').attr('selected', 1); - } - if (typeof fieldValues.op !== "undefined") { - $newSearch.find('select.adv-term-op option[value="' + fieldValues.op + '"]').attr('selected', 1); - } - // Insert it - $("#group" + group + "Holder").before($newSearch); - // Individual search ops (for searches like EDS) - if (groupLength[group] === 0) { - $newSearch.find('.first-op') - .attr('name', 'op' + group + '[]') - .removeClass('hidden'); - $newSearch.find('select.adv-term-op').remove(); - } else { - $newSearch.find('select.adv-term-op') - .attr('id', 'search_op' + group + '_' + groupLength[group]) - .attr('name', 'op' + group + '[]') - .removeClass('hidden'); - $newSearch.find('.first-op').remove(); - $newSearch.find('label').remove(); - // Show x if we have more than one search inputs - $('#group' + group + ' .adv-term-remove').removeClass('hidden'); - } - groupLength[group]++; - return false; -} - -function deleteSearch(group, sindex) { - for (var i = sindex; i < groupLength[group] - 1; i++) { - var $search0 = $('#search' + group + '_' + i); - var $search1 = $('#search' + group + '_' + (i + 1)); - $search0.find('input').val($search1.find('input').val()); - var select0 = $search0.find('select')[0]; - var select1 = $search1.find('select')[0]; - select0.selectedIndex = select1.selectedIndex; - } - if (groupLength[group] > 1) { - groupLength[group]--; - $('#search' + group + '_' + groupLength[group]).remove(); - if (groupLength[group] === 1) { - $('#group' + group + ' .adv-term-remove').addClass('hidden'); // Hide x - } - } - return false; -} - -function addGroup(_firstTerm, _firstField, _join) { - var firstTerm = _firstTerm || ''; - var firstField = _firstField || ''; - var join = _join || ''; - - var $newGroup = $($('#new_group_template').html()); - $newGroup.attr('id', 'group' + nextGroup); - $newGroup.find('.search_place_holder') - .attr('id', 'group' + nextGroup + 'Holder') - .removeClass('hidden'); - $newGroup.find('.add_search_link') - .attr('id', 'add_search_link_' + nextGroup) - .attr('onClick', 'return addSearch(' + nextGroup + ')') - .removeClass('hidden'); - $newGroup.find('.adv-group-close') - .attr('onClick', 'return deleteGroup(' + nextGroup + ')'); - $newGroup.find('select.form-control') - .attr('id', 'search_bool' + nextGroup) - .attr('name', 'bool' + nextGroup + '[]'); - $newGroup.find('.search_bool') - .attr('for', 'search_bool' + nextGroup); - if (join.length > 0) { - $newGroup.find('option[value="' + join + '"]').attr('selected', 1); - } - // Insert - $('#groupPlaceHolder').before($newGroup); - // Populate - groupLength[nextGroup] = 0; - addSearch(nextGroup, {term: firstTerm, field: firstField}); - // Show join menu - if (nextGroup > 0) { - $('#groupJoin').removeClass('hidden'); - // Show x - $('.adv-group-close').removeClass('hidden'); - } - return nextGroup++; -} - -function deleteGroup(group) { - // Find the group and remove it - $("#group" + group).remove(); - // If the last group was removed, add an empty group - if ($('.adv-group').length === 0) { - addGroup(); - } else if ($('#advSearchForm .adv-group').length === 1) { - $('#groupJoin').addClass('hidden'); // Hide join menu - $('.adv-group .adv-group-close').addClass('hidden'); // Hide x - } - return false; -} - -$(document).ready(function advSearchReady() { - $('.clear-btn').click(function clearBtnClick() { - $('input[type="text"]').val(''); - $("option:selected").removeAttr("selected"); - $("#illustrated_-1").click(); - /* reset date slider, cf #15409. Highly specialized solution, TODO: generalize */ - $("#publishDateSortdateSlider").slider('setValue',[0,9999],'true'); - }); -}); diff --git a/themes/fid_bbi/scss/blocks/advanced-search.scss b/themes/fid_bbi/scss/blocks/advanced-search.scss index 1edaf81f6ef..dadbfb87e5d 100644 --- a/themes/fid_bbi/scss/blocks/advanced-search.scss +++ b/themes/fid_bbi/scss/blocks/advanced-search.scss @@ -19,9 +19,9 @@ margin-top: g(); @media #{$bp3} { + bottom: g(1.5); position: absolute; right: g(); - bottom: g(1.5); } } @@ -31,8 +31,8 @@ .adv-group-match { border-top: 2px solid; - padding-top: g() - 2px; margin-top: g(.5); + padding-top: g() - 2px; label + select { margin-left: 0; @@ -56,16 +56,17 @@ max-width: 100%; @media #{$bp2} { - flex-wrap: wrap; flex-direction: row; + flex-wrap: wrap; max-width: none; } } - .adv-term-input { + .adv-input { flex: 1; + flex-basis: 60%; margin-bottom: g(.5); - width: calc(100% - #{g(2.5)}); // Space for "x" button + //width: calc(100% - #{g(2.5)}); // Space for "x" button @media #{$bp3} { margin-right: g(.5); @@ -77,23 +78,27 @@ width: 100%; @media #{$bp3} { - width: auto; + //width: auto; } } .adv-term-remove { + align-self: flex-start; box-shadow: 0 0 0 2px inset; display: inline-block; flex: 0 0 g(2); font-size: g(); - align-self: flex-start; line-height: g(2); - margin: 0 g(.5) 0 0; + margin: 28px g(.5) 0 0; order: -1; text-align: center; + @media #{$bp2} { + order: inherit; + } + @media #{$bp3} { - margin: 0 0 0 g(.5); + margin: 28px 0 0 g(.5); order: 0; } @@ -106,7 +111,7 @@ } } - .adv-search { + fieldset { display: flex; flex-wrap: wrap; margin-bottom: g(); @@ -136,8 +141,7 @@ } } - .adv-term-type { - width: 100%; + .adv-select { @media #{$bp3} { margin-bottom: g(.5); @@ -213,8 +217,43 @@ } } +.adv-input, +.adv-select { + input[type=text], + select { + margin-left: 0; + } + + label { + display: block; + } +} + +.adv-input { + input[type=text] { + width: 100%; + } +} + #groupJoin { margin-top: g(); order: 2; text-align: center; } + +.limiter-boxes { + width: 100%; +} + +fieldset { + &.limits label { + margin-top: 14px; + } + + .adv-group & { + border: 0; + display: flex; + padding: 0; + width: 100%; + } +} -- GitLab