<div data-behaviour="efl-index-page-filter" data-filter-type="courses" data-filter-url="">
<div class="efl-index-page-filter">
<div class="efl-index-page-filter__cancel">
<a class="back-filter" tabindex="0" aria-label="back to main filter option"></a>
<div class="filter-text">Adjust Filters</div>
<a class="close-filter" tabindex="0">Cancel</a>
</div>
<div class="efl-index-page-filter__scroll">
<div class="efl-index-page-filter__section">
<div class="efl-index-page-filter__section--list">
<a class="efl-index-page-filter__section--level1 next-step" aria-expanded="false" aria-controls="filter-course-type" tabindex="0">
<div>
<div class="filterby">Filter by course type</div>
<div class="filtercontent">
<div class="title">Category</div>
<div class="filterslabel"></div>
<div class="filterscount">+<span>1</span>more</div>
</div>
</div>
</a>
<div class="efl-index-page-filter__options" id="filter-course-type">
<fieldset class="efl-index-page-filter__options--buttons course-type">
<div role="checkbox" aria-checked="false" class="filter-buttons">
<input type="checkbox" class="" id="opt-football-outfield" value="football-outfield">
<label for="opt-football-outfield">Football (outfield)</label>
</div>
<div role="checkbox" aria-checked="false" class="filter-buttons">
<input type="checkbox" class="" id="opt-goalkeeping" value="goalkeeping">
<label for="opt-goalkeeping">Goalkeeping</label>
</div>
<div role="checkbox" aria-checked="false" class="filter-buttons">
<input type="checkbox" class="" id="opt-futsal" value="futsal">
<label for="opt-futsal">Futsal</label>
</div>
<div role="checkbox" aria-checked="false" class="filter-buttons">
<input type="checkbox" class="" id="opt-disability-football" value="disability-football">
<label for="opt-disability-football">Disability football</label>
</div>
<div role="checkbox" aria-checked="false" class="filter-buttons">
<input type="checkbox" class="" id="opt-safeguarding" value="safeguarding">
<label for="opt-safeguarding">Safeguarding</label>
</div>
<div role="checkbox" aria-checked="false" class="filter-buttons">
<input type="checkbox" class="" id="opt-medical" value="medical">
<label for="opt-medical">Medical</label>
</div>
<div role="checkbox" aria-checked="false" class="filter-buttons">
<input type="checkbox" class="" id="opt-talent-identification" value="talent-identification">
<label for="opt-talent-identification">Talent Identification</label>
</div>
<div role="checkbox" aria-checked="false" class="filter-buttons">
<input type="checkbox" class="" id="opt-pe-cpd" value="pe-cpd">
<label for="opt-pe-cpd">PE CPD</label>
</div>
</fieldset>
</div>
</div>
<div class="efl-index-page-filter__section--list">
<a class="efl-index-page-filter__section--level1 next-step" aria-expanded="false" aria-controls="filter-price" tabindex="0">
<div>
<div class="filterby">Filter by price</div>
<div class="filtercontent">
<div class="title">Price</div>
<div class="filterslabel"></div>
<div class="filterscount">+<span>1</span>more</div>
</div>
</div>
</a>
<div class="efl-index-page-filter__options" id="filter-price">
<fieldset class="efl-index-page-filter__options--buttons price">
<div role="checkbox" aria-checked="false" class="filter-buttons">
<input type="checkbox" class="" id="opt-free" value="free">
<label for="opt-free">Free</label>
</div>
<div role="checkbox" aria-checked="false" class="filter-buttons">
<input type="checkbox" class="" id="opt-1-100" value="1-100">
<label for="opt-1-100">£1 - £100</label>
</div>
<div role="checkbox" aria-checked="false" class="filter-buttons">
<input type="checkbox" class="" id="opt-101-500" value="101-500">
<label for="opt-101-500">£101 - £500</label>
</div>
<div role="checkbox" aria-checked="false" class="filter-buttons">
<input type="checkbox" class="" id="opt-plus500" value="plus500">
<label for="opt-plus500">£500+</label>
</div>
</fieldset>
</div>
</div>
<div class="efl-index-page-filter__section--list">
<a class="efl-index-page-filter__section--level1 next-step" aria-expanded="false" aria-controls="filter-venue" tabindex="0">
<div>
<div class="filterby">Filter by venue</div>
<div class="filtercontent">
<div class="title">Venue</div>
<div class="filterslabel"></div>
<div class="filterscount">+<span>1</span>more</div>
</div>
</div>
</a>
<div class="efl-index-page-filter__options" id="filter-venue">
<fieldset class="efl-index-page-filter__options--buttons venue">
<div role="checkbox" aria-checked="false" class="filter-buttons">
<input type="checkbox" class="" id="opt-online-only" value="online-only">
<label for="opt-online-only">Online only</label>
</div>
<div role="checkbox" aria-checked="false" class="filter-buttons">
<input type="checkbox" class="" id="opt-online-face-to-face" value="online-face-to-face">
<label for="opt-online-face-to-face">Online + face-to-face</label>
</div>
<div role="checkbox" aria-checked="false" class="filter-buttons">
<input type="checkbox" class="" id="opt-face-to-face" value="face-to-face">
<label for="opt-face-to-face">Face-to-face only</label>
</div>
</fieldset>
</div>
</div>
<div class="efl-index-page-filter__section--list">
<a class="efl-index-page-filter__section--level1 next-step" aria-expanded="false" aria-controls="filter-level" tabindex="0">
<div>
<div class="filterby">Filter by level</div>
<div class="filtercontent">
<div class="title">Level</div>
<div class="filterslabel"></div>
<div class="filterscount">+<span>1</span>more</div>
</div>
</div>
</a>
<div class="efl-index-page-filter__options" id="filter-level">
<fieldset class="efl-index-page-filter__options--buttons level">
<div role="checkbox" aria-checked="false" class="filter-buttons">
<input type="checkbox" class="" id="opt-grassroots" value="grassroots">
<label for="opt-grassroots">Grassroots</label>
</div>
<div role="checkbox" aria-checked="false" class="filter-buttons">
<input type="checkbox" class="" id="opt-talent-development" value="talent-development">
<label for="opt-talent-development">Talent development</label>
</div>
<div role="checkbox" aria-checked="false" class="filter-buttons">
<input type="checkbox" class="" id="opt-senior-game" value="senior-game">
<label for="opt-senior-game">Senior game</label>
</div>
</fieldset>
</div>
</div>
<div class="efl-index-page-filter__section--list">
<a class="efl-index-page-filter__section--level1 next-step" aria-expanded="false" aria-controls="filter-your-role" tabindex="0">
<div>
<div class="filterby">Filter by your role</div>
<div class="filtercontent">
<div class="title">Job relevance</div>
<div class="filterslabel"></div>
<div class="filterscount">+<span>1</span>more</div>
</div>
</div>
</a>
<div class="efl-index-page-filter__options" id="filter-your-role">
<fieldset class="efl-index-page-filter__options--buttons your-role">
<div role="checkbox" aria-checked="false" class="filter-buttons">
<input type="checkbox" class="" id="opt-coach" value="coach">
<label for="opt-coach">Coach</label>
</div>
<div role="checkbox" aria-checked="false" class="filter-buttons">
<input type="checkbox" class="" id="opt-medic" value="medic">
<label for="opt-medic">Medic</label>
</div>
<div role="checkbox" aria-checked="false" class="filter-buttons">
<input type="checkbox" class="" id="opt-safeguarding-officer" value="safeguarding-officer">
<label for="opt-safeguarding-officer">Safeguarding officer</label>
</div>
<div role="checkbox" aria-checked="false" class="filter-buttons">
<input type="checkbox" class="" id="opt-scout-talent-id" value="scout-talent-id">
<label for="opt-scout-talent-id">Scout / Talent ID</label>
</div>
<div role="checkbox" aria-checked="false" class="filter-buttons">
<input type="checkbox" class="" id="opt-teacher" value="teacher">
<label for="opt-teacher">Teacher</label>
</div>
<div role="checkbox" aria-checked="false" class="filter-buttons">
<input type="checkbox" class="" id="opt-club-admin" value="club-admin">
<label for="opt-club-admin">Club admin</label>
</div>
<div role="checkbox" aria-checked="false" class="filter-buttons">
<input type="checkbox" class="" id="opt-volunteer" value="volunteer">
<label for="opt-volunteer">Volunteer</label>
</div>
</fieldset>
</div>
</div>
</div>
</div>
<div class="efl-index-page-filter__button-group">
<div class="efl-index-page-filter__button-group--results">
<a role="button" class="result" tabindex="0">Show Me <span id="showmeresult"></span><span> Results</span></a>
<div class="no-result hidden">Sorry there are 0 results</div>
<a role="button" class="filter reset-filter" tabindex="0">Reset Filters</a>
</div>
<div class="efl-index-page-filter__button-group--apply-filter">
<a role="button" class="result apply-filters" tabindex="0"> Apply Filters </a>
</div>
</div>
</div>
<div class="efl-index-page-filter__sticky hide-filter">
<div role="button" class="efl-index-page-filter__sticky--content" tabindex="0">
<div class="efl-index-page-filter__sticky--result">
<span>Filter Results</span>
</div>
<div class="efl-index-page-filter__sticky--count">
<div class="filter-count">0</div>
</div>
</div>
</div>
</div>
No notes defined.
{
"filter-type": "courses",
"filter-url": "",
"filters-level-1": [
{
"level1-label": "Filter by course type",
"level1-title": "Category",
"level1-category": "course-type",
"level2-list": [
{
"title": "Football (outfield)",
"level2-category": "football-outfield"
},
{
"title": "Goalkeeping",
"level2-category": "goalkeeping"
},
{
"title": "Futsal",
"level2-category": "futsal"
},
{
"title": "Disability football",
"level2-category": "disability-football"
},
{
"title": "Safeguarding",
"level2-category": "safeguarding"
},
{
"title": "Medical",
"level2-category": "medical"
},
{
"title": "Talent Identification",
"level2-category": "talent-identification"
},
{
"title": "PE CPD",
"level2-category": "pe-cpd"
}
]
},
{
"level1-label": "Filter by price",
"level1-title": "Price",
"level1-category": "price",
"level2-list": [
{
"title": "Free",
"level2-category": "free"
},
{
"title": "£1 - £100",
"level2-category": "1-100"
},
{
"title": "£101 - £500",
"level2-category": "101-500"
},
{
"title": "£500+",
"level2-category": "plus500"
}
]
},
{
"level1-label": "Filter by venue",
"level1-title": "Venue",
"level1-category": "venue",
"level2-list": [
{
"title": "Online only",
"level2-category": "online-only"
},
{
"title": "Online + face-to-face",
"level2-category": "online-face-to-face"
},
{
"title": "Face-to-face only",
"level2-category": "face-to-face"
}
]
},
{
"level1-label": "Filter by level",
"level1-title": "Level",
"level1-category": "level",
"level2-list": [
{
"title": "Grassroots",
"level2-category": "grassroots"
},
{
"title": "Talent development",
"level2-category": "talent-development"
},
{
"title": "Senior game",
"level2-category": "senior-game"
}
]
},
{
"level1-label": "Filter by your role",
"level1-title": "Job relevance",
"level1-category": "your-role",
"level2-list": [
{
"title": "Coach",
"level2-category": "coach"
},
{
"title": "Medic",
"level2-category": "medic"
},
{
"title": "Safeguarding officer",
"level2-category": "safeguarding-officer"
},
{
"title": "Scout / Talent ID",
"level2-category": "scout-talent-id"
},
{
"title": "Teacher",
"level2-category": "teacher"
},
{
"title": "Club admin",
"level2-category": "club-admin"
},
{
"title": "Volunteer",
"level2-category": "volunteer"
}
]
}
]
}
/*eslint-disable */
const filterOpenAnalytics = parentElement => {
const btnName = parentElement.querySelector('.efl-index-page-filter__sticky--result').innerText;
window.dataLayer.push({
event: 'All event',
event_name: 'filter_opened',
link_text: btnName,
});
// Remove dataLayer event parameters after every event is fired
window.dataLayer.push({
event: 'Removal Tag',
event_name: 'undefined',
link_text: 'undefined',
});
};
const filterCloseAnalytics = parentElement => {
let optionSelected = '';
const nextStep = parentElement.querySelector('.next-step[aria-expanded=true]');
if (nextStep) {
optionSelected = nextStep.querySelector('.title').innerText;
// optionSelected = `level 1 Option ${optionSelected} selected`;
}
window.dataLayer.push({
event: 'All event',
event_name: 'filter_opened',
link_text: 'Cancel',
item_list_name: optionSelected,
});
// Remove dataLayer event parameters after every event is fired
window.dataLayer.push({
event: 'Removal Tag',
event_name: 'undefined',
link_text: 'undefined',
item_list_name: 'undefined',
});
};
const level1OptionAnalytics = (target) => {
const optName = target.querySelector('.title').innerText;
window.dataLayer.push({
event: 'All event',
event_name: 'filter_opened',
link_text: optName,
});
// Remove dataLayer event parameters after every event is fired
window.dataLayer.push({
event: 'Removal Tag',
event_name: 'undefined',
link_text: 'undefined',
});
};
const level2OptionAnalytics = (event, parentElement) => {
const { target } = event;
const opt2 = parentElement.querySelector('.next-step[aria-expanded=true]');
const optName = target.innerText;
window.dataLayer.push({
event: 'All event',
event_name: 'filter_selected',
link_text: optName,
item_list_name: opt2.querySelector('.title').innerText
});
// Remove dataLayer event parameters after every event is fired
window.dataLayer.push({
event: 'Removal Tag',
event_name: 'undefined',
link_text: 'undefined',
item_list_name: 'undefined'
});
};
const applyFilterAnalytics = (parentElement) => {
const opt2 = parentElement.querySelector('.next-step[aria-expanded=true]');
window.dataLayer.push({
event: 'All event',
event_name: 'filter_selected',
link_text: 'Apply Filters',
item_list_name: opt2.querySelector('.title').innerText
});
// Remove dataLayer event parameters after every event is fired
window.dataLayer.push({
event: 'Removal Tag',
event_name: 'undefined',
link_text: 'undefined',
item_list_name: 'undefined'
});
};
const showResultsAnalytics = (parentElement) => {
const result = parentElement.querySelector('#showmeresult').innerText;
window.dataLayer.push({
event: 'All event',
event_name: 'filter_selected',
link_text: `SHOW ME ${result} RESULTS`,
});
// Remove dataLayer event parameters after every event is fired
window.dataLayer.push({
event: 'Removal Tag',
event_name: 'undefined',
link_text: 'undefined',
});
};
const resetFilterAnalytics = () => {
window.dataLayer.push({
event: 'All event',
event_name: 'filter_selected',
link_text: `RESET FILTERS`,
});
// Remove dataLayer event parameters after every event is fired
window.dataLayer.push({
event: 'Removal Tag',
event_name: 'undefined',
link_text: 'undefined',
});
};
const filterEvents = parentElement => {
const allCards = document.querySelectorAll('[data-filter]');
const applyfilter = parentElement.querySelector('.apply-filters');
const resetfilter = parentElement.querySelector('.reset-filter');
const backfilter = parentElement.querySelector('.back-filter');
const closefilter = parentElement.querySelector('.close-filter');
const resultfilter = parentElement.querySelector('.result');
const noResult = parentElement.querySelector('.no-result');
const linkslevel1 = parentElement.querySelectorAll('.next-step');
const allFilters = parentElement.querySelector(
'.efl-index-page-filter__section'
);
const ctaBlock = parentElement.querySelector(
'.efl-index-page-filter__button-group'
);
const cancelBlock = parentElement.querySelector(
'.efl-index-page-filter__cancel'
);
const event = new Event('filterupdate');
const { filterType } = parentElement.dataset;
let skipData = 18;
let moreData = true;
let isAjaxRuning = false;
function showNextStep(event, obj) {
const { target } = event;
// console.log(typeof(target.getAttribute('aria-expanded')));
if(obj.getAttribute('aria-expanded') === 'false') {
obj.setAttribute('aria-expanded', 'true');
obj.tabIndex = -1;
ctaBlock.classList.add('active');
cancelBlock.classList.add('active');
allFilters.classList.add('active');
const level2Filter = obj.nextElementSibling.querySelectorAll('input:not(.disable-buttons)');
level2Filter.forEach((option, index) => {
option.nextElementSibling.addEventListener('keydown', (e) => {
if (e.keyCode === 40) {
if (level2Filter[index + 1]) {
level2Filter[index + 1].nextElementSibling.focus();
}
} else if (e.keyCode === 38) {
if (level2Filter[index - 1]) {
level2Filter[index - 1].nextElementSibling.focus();
}
} else if (e.keyCode === 13) {
e.target.click();
}
});
});
// Level 1 filter options - Ananlytics
level1OptionAnalytics(obj);
}
}
function showFirstStep() {
linkslevel1.forEach(link => {
link.setAttribute('aria-expanded', 'false');
link.tabIndex = 0;
});
ctaBlock.classList.remove('active');
cancelBlock.classList.remove('active');
allFilters.classList.remove('active');
}
function closeFilter() {
document
.querySelector('.efl-index-page-filter__sticky')
.classList.remove('hide-filter');
document
.querySelector('.efl-index-page-filter')
.classList.remove('add-animation');
document.body.classList.remove('dark-overlay');
filterCloseAnalytics(parentElement);
}
function resultFilter() {
document
.querySelector('.efl-index-page-filter')
.classList.remove('hide-filter');
document
.querySelector('.efl-index-page-filter')
.classList.remove('add-animation');
document.body.classList.remove('dark-overlay');
//show results analytics
showResultsAnalytics(parentElement);
window.scroll(0,document.querySelector('.efl-page-content__dynamic-placeholder').offsetTop);
}
function showChecked() {
parentElement.querySelector('.filter-count').innerHTML = parentElement.querySelectorAll(
'input:checked'
).length;
}
function selectedcardcount() {
const divselectedcount = document.querySelectorAll('.efl-card');
const cardselectedCount = [].slice.call(divselectedcount);
const cardactiveCount = cardselectedCount.filter(function(el) {
return !el.classList.contains('hidden');
});
parentElement.querySelector('#showmeresult').innerHTML = cardactiveCount.length;
}
function checkFilteredLabel() {
parentElement.querySelectorAll('.next-step').forEach((level1) => {
const firstFilterOpt = level1
.nextElementSibling
.querySelectorAll('input[type=checkbox]:checked');
if (firstFilterOpt.length) {
level1.querySelector('.filterslabel').innerText = firstFilterOpt[0]
.nextElementSibling.innerText;
level1.querySelector('.filterslabel').classList.add('active');
level1.querySelector('.title').classList.add('hidden');
level1.querySelector('.filterscount').classList.remove('active');
if (firstFilterOpt.length > 1) {
level1.querySelector('.filterscount').classList.add('active');
level1.querySelector('.filterscount span').innerText = firstFilterOpt.length - 1;
}
} else {
level1.querySelector('.filterslabel').classList.remove('active');
level1.querySelector('.title').classList.remove('hidden');
level1.querySelector('.filterscount').classList.remove('active');
}
});
}
function toggleCheckbox({ currentValue }) {
allCards.forEach(filtercard => {
const currentCardFilterData = JSON.parse(filtercard.dataset.filter);
for (const filterdata in currentCardFilterData) {
const data = currentCardFilterData[filterdata].split('|');
if (
currentValue.find(
val =>
data.includes(val)
)
) {
filtercard.classList.remove('hidden');
break;
} else {
if (currentValue.length) {
filtercard.classList.add('hidden');
} else {
filtercard.classList.remove('hidden');
}
}
}
});
selectedcardcount();
checkFilteredLabel();
reRenderLayout();
// Dispatch the event.
window.dispatchEvent(event);
}
function reRenderLayout() {
const cardlist = document.querySelectorAll('.efl-card-list__inner');
cardlist.forEach((list) => {
const eflCards = list.querySelectorAll('.efl-card:not(.hidden)');
if (!eflCards.length) {
list.closest('.efl-card-list').classList.add('hidden');
} else {
list.closest('.efl-card-list').classList.remove('hidden');
resetClass(eflCards);
selectClass(eflCards, eflCards.length);
//displaySessionCount(eflCards.length)
list.classList.remove(...list.classList);
list.classList.add('efl-card-list__inner', `efl-card-list__inner--${eflCards.length}`);
}
})
}
// const displaySessionCount = (cardsLength) => {
// const firstCardList = document.querySelector('.efl-card-list');
// const titleContainer = firstCardList.querySelector('.efl-card-list__title');
// const howManySessions = firstCardList.createElement('div');
// howManySessions.innerHTML = `Showing ${cardsLength} Courses`;
// howManySessions.className = "efl-card-list--how-many-sessions";
// titleContainer.appendChild(howManySessions);
// };
function resetClass(cards) {
cards.forEach(card => {
if (!card.classList.contains('efl-card--1--full-width')) {
// eslint-disable-next-line no-param-reassign
card.className = '';
card.classList.add('efl-card', 'efl-card--vertical');
card.classList.remove('minimised-card');
}
});
}
// select CSS class determined by the number of session cards
const selectClass = (cards, cardsLength) => {
cards.forEach((eflCardElement, index) => {
const eflCard = eflCardElement;
eflCard.classList.add(`card${index + 1}`);
});
switch (cardsLength) {
case 1:
cards[0].classList.replace(
'efl-card--vertical',
'efl-card--horizontal'
);
break;
case 2:
cards[0].classList.replace(
'efl-card--vertical',
'efl-card--horizontal'
);
break;
case 3:
cards[0].classList.replace(
'efl-card--vertical',
'efl-card--horizontal'
);
break;
case 4:
cards[0].classList.replace(
'efl-card--vertical',
'efl-card--horizontal'
);
break;
case 5:
cards[0].classList.replace(
'efl-card--vertical',
'efl-card--horizontal'
);
break;
case 6:
cards[0].classList.replace(
'efl-card--vertical',
'efl-card--horizontal'
);
cards[1].classList.replace(
'efl-card--vertical',
'efl-card--horizontal'
);
break;
case 7:
cards[0].classList.replace('efl-card--vertical', 'efl-card--single');
break;
case 8:
cards[0].classList.replace(
'efl-card--vertical',
'efl-card--horizontal'
);
cards[1].classList.replace(
'efl-card--vertical',
'efl-card--horizontal'
);
break;
default:
}
};
function resetCards(resetValue) {
const resetcards = document.querySelectorAll('[data-filter]');
if (resetValue.length === undefined) {
for (let i = 0; i < resetcards.length; i += 1) {
resetcards[i].classList.remove('hidden');
}
}
selectedcardcount();
reRenderLayout();
}
function getQueryString(selectedOnly) {
let queryStr = '';
linkslevel1.forEach(link => {
const level2opt = link.nextElementSibling.querySelectorAll('input[type=checkbox]:checked');
if (selectedOnly === 'false' || level2opt.length) {
queryStr += link.getAttribute('aria-controls').replace('filter-', '');
queryStr += '=';
level2opt.forEach((checkbox, index) => {
if (index) {
queryStr += `_${checkbox.value}`;
} else {
queryStr += `${checkbox.value}`;
}
});
queryStr += '&';
}
});
queryStr = queryStr.slice(0, -1); // to remove last &
return queryStr;
}
function getTaxonomies() {
const checkboxes = parentElement.querySelectorAll('input[type=checkbox]:checked');
let taxonomies = '';
checkboxes.forEach((checkbox, index) => {
if (index) {
taxonomies += `|${checkbox.value}`;
} else {
taxonomies += `${checkbox.value}`;
}
});
return taxonomies;
}
function applyDefaultPageFilter(isAjax) {
const params = new Proxy(new URLSearchParams(window.location.search), {
get: (searchParams, prop) => searchParams.get(prop),
});
const selectedValue = [];
linkslevel1.forEach(link => {
const queryVar = link.getAttribute('aria-controls').replace('filter-', '');
if (params[queryVar]) {
const checkBoxs = params[queryVar].split('_');
checkBoxs.forEach(checkbox => {
selectedValue.push(checkbox);
parentElement.querySelector(`input[value='${checkbox}'`).checked = true;
// console.log(parentElement.querySelector(`#opt-${checkbox}`).checked);
});
}
});
if (selectedValue.length) {
setTimeout (() => {
if(isAjax === 'false') {
showChecked();
toggleCheckbox({
currentValue: selectedValue,
});
} else {
getSessions('true', 18, 0); // getSessions(defaultLoad, pageSize, skip);
showChecked();
}
}, 500);
}
}
function applyFilter() {
const selectedValue = [];
const checkboxes = parentElement.querySelectorAll('input[type=checkbox]');
for (let i = 0; i < checkboxes.length; i++) {
if (checkboxes[i].checked) {
selectedValue.push(checkboxes[i].value);
}
}
showChecked();
toggleCheckbox({
currentValue: selectedValue,
});
//zebraPattern();
/*document
.querySelector('.efl-index-page-filter')
.classList.remove('hide-filter');
document
.querySelector('.efl-index-page-filter')
.classList.remove('add-animation');
document.body.classList.remove('dark-overlay');
window.scroll(0,document.querySelector('.efl-page-content__dynamic-placeholder').offsetTop); */
// apply filter analytics
applyFilterAnalytics(parentElement);
showFirstStep();
const redirectUrl = `${window.location.origin}${window.location.pathname}`;
const queryStr = getQueryString('true');
if (queryStr) {
window.history.pushState({}, '', `${redirectUrl}?${queryStr}`);
} else {
window.history.pushState({}, '', `${redirectUrl}`);
}
}
function resetFilter() {
const unselectedValue = [];
const reset = parentElement.querySelectorAll('input[type=checkbox]');
for (let i = 0; i < reset.length; i++) {
if (reset[i].checked) {
reset[i].checked = false;
}
}
showChecked();
resetCards({
resetValue: unselectedValue,
});
//zebraPattern();
parentElement.querySelectorAll('.next-step').forEach((level1) => {
level1.querySelector('.filterslabel').classList.remove('active');
level1.querySelector('.title').classList.remove('hidden');
level1.querySelector('.filterscount').classList.remove('active');
});
const redirectUrl = `${window.location.origin}${window.location.pathname}`;
window.history.pushState({}, '', `${redirectUrl}`);
// reset filter analytics
resetFilterAnalytics();
}
function bindArticleSessionCardData(cardData, modifier) {
const {isVideo, itemUrl, imageUrl, tagName, featuredText, title, description, readTime, publishedDate} = cardData;
const videoClass = (isVideo) ? 'article-session-card__image--video': '';
const modifierClass = (modifier) ? `article-session-card--${modifier}`: '';
const dtVal = (featuredText === '') ? publishedDate: featuredText;
return `
<a href="${itemUrl}" class="article-session-card ${modifierClass}" aria-label="${title}">
<div class="article-session-card__image ${videoClass}">
<img src="${imageUrl}" loading="lazy"/>
</div>
<div class="article-session-card__content">
<div class="article-session-card__inner">
<div class="article-session-card__content--category">${tagName}</div>
<div class="article-session-card__content--title">${title}</div>
<p class="article-session-card__content--description">${description}</p>
</div>
<div class="article-session-card__content--date-wrap">${readTime} – ${dtVal}</div>
</div>
</a>`;
}
function bindSignpostData(cardData, htmlElement) {
const {publishedDate, itemUrl, imageUrl, title, readTime} = cardData;
htmlElement.setAttribute('href', itemUrl);
htmlElement.querySelector('img').setAttribute('href', imageUrl);
htmlElement.querySelector('h3').innerText = title;
htmlElement.querySelector('p').innerHTML = `${publishedDate} <span>|</span> ${readTime}`;
}
async function getSessionsCallback(pageSize, skip) {
const { filterUrl } = parentElement.dataset;
const url = `/Resources/SearchArticles/?taxonomies=${getTaxonomies()}&startingNo=${skip}&pageSize=${pageSize}`;
// eslint-disable-next-line compat/compat
const response = await fetch(url, {
headers: {
'Content-Type': 'application/json',
}
});
return response.json();
}
function clearPageData() {
let pageElement = document.querySelector('.article-session-index');
let singleCard = pageElement.querySelector('.article-session-card-list__single');
let verticalCard = pageElement.querySelector('.article-session-card-list__vertical');
let firstHorz = pageElement.querySelector('.article-session-card-list .article-session-card-list__horizontal');
let signPost1 = pageElement.querySelector('.large-signpost-article:first-of-type');
let signPost2 = pageElement.querySelector('.large-signpost-article:last-of-type');
let eightCard = pageElement.querySelector('.article-session-index__eight');
let eightFirst = eightCard.querySelector('.article-session-card-list__horizontal:first-child');
let eightLast = eightCard.querySelector('.article-session-card-list__horizontal:last-child');
let moreCard = pageElement.querySelector('.article-session-index__scroll');
singleCard.innerHTML = '';
verticalCard.innerHTML = '';
firstHorz.innerHTML = '';
if (eightFirst) {
eightFirst.innerHTML = '';
}
if (eightLast) {
eightLast.innerHTML = '';
}
if (signPost1) {
signPost1.classList.add('hidden');
}
if (signPost2) {
signPost2.classList.add('hidden');
}
if (moreCard) {
moreCard.innerHTML = '';
moreCard.classList.add('ajax');
}
}
function renderSessionPage(response) {
let pageElement = document.querySelector('.article-session-index');
let singleVerCard = pageElement.querySelector('.article-session-card-list__single-vertical');
let singleCard = pageElement.querySelector('.article-session-card-list__single');
let verticalCard = pageElement.querySelector('.article-session-card-list__vertical');
let firstHorz = pageElement.querySelector('.article-session-card-list .article-session-card-list__horizontal');
let signPost1 = pageElement.querySelector('.large-signpost-article:first-of-type');
let signPost2 = pageElement.querySelector('.large-signpost-article:last-of-type');
let eightCard = pageElement.querySelector('.article-session-index__eight');
let eightFirst = eightCard.querySelector('.article-session-card-list__horizontal:first-child');
let eightLast = eightCard.querySelector('.article-session-card-list__horizontal:last-child');
if (response && response!== 'null' && response.searchResults.length) {
response.searchResults.forEach((cardData, index) => {
if (response.searchResults.length === 1) {
singleVerCard.classList.add('single-card-fullwidth');
} else {
singleVerCard.classList.remove('single-card-fullwidth');
}
if (index === 0) {
// replace single card data
singleCard.innerHTML = bindArticleSessionCardData(cardData, 'single');
}
else if (index > 0 && index < 4) {
// replace vertical card data
const verticalCardData = bindArticleSessionCardData(cardData, 'vertical');
verticalCard.insertAdjacentHTML('beforeend', verticalCardData);
}
else if (index >= 4 && index < 8) {
// replace horizontal card data
const horzCardData = bindArticleSessionCardData(cardData, 'horizontal');
firstHorz.insertAdjacentHTML('beforeend', horzCardData);
}
else if (index === 8) {
signPost1.classList.remove('hidden');
bindSignpostData(cardData, signPost1);
}
else if (index >= 9 && index <= 12) {
const horzCardData = bindArticleSessionCardData(cardData, 'horizontal');
eightFirst.insertAdjacentHTML('beforeend', horzCardData);
}
else if (index >= 13 && index <= 16) {
const horzCardData = bindArticleSessionCardData(cardData, 'horizontal');
eightLast.insertAdjacentHTML('beforeend', horzCardData);
}
else if (index === 17) {
signPost2.classList.remove('hidden');
bindSignpostData(cardData, signPost2);
}
});
}
}
const removeLoading = () => {
const loading = document.querySelector('.loading');
if (loading) {
loading.classList.remove('show');
}
};
const showLoading = () => {
const loading = document.querySelector('.loading');
if (loading) {
loading.classList.add('show');
}
};
function renderMoreSession(response) {
if (response && response!== 'null' && response.searchResults.length) {
let moreItem = document.createElement('div');
let moreCard = document.querySelector('.article-session-index__scroll');
moreItem.classList.add('article-session-card-list__horizontal');
response.searchResults.forEach((cardData, index) => {
if (index < 4) {
const horzCardData = bindArticleSessionCardData(cardData, 'horizontal');
moreItem.insertAdjacentHTML('beforeend', horzCardData);
}
});
moreCard.appendChild(moreItem);
} else {
moreData = false;
}
}
function getSessions(defaultLoad, pageSize, skip) {
try {
showLoading();
isAjaxRuning = true;
if (!skip) {
moreData = true;
skipData = pageSize;
clearPageData();
}
getSessionsCallback(pageSize, skip).then(response => {
removeLoading();
isAjaxRuning = false;
if (response && response!== 'null' && response.filterCount) {
parentElement.querySelector('#showmeresult').innerHTML = response.filterCount;
resultfilter.classList.remove('hidden');
noResult.classList.add('hidden');
} else {
if (defaultLoad === 'true') {
parentElement.querySelector('#showmeresult').innerHTML = 0;
resultfilter.classList.add('hidden');
noResult.classList.remove('hidden');
}
}
if (defaultLoad === 'true') {
if (response && response!== 'null' && response.searchResults.length < 18) {
moreData = false;
}
renderSessionPage(response);
} else {
if (response && response!== 'null' && response.searchResults.length < 4) {
moreData = false;
} else if (response && response!== 'null' && response.filterCount <= skip + pageSize) {
moreData = false;
}
renderMoreSession(response);
}
});
} catch (e) {
throw new Error('Uable to retrive the sessions ::', e);
}
}
function applySessionFilter() {
getSessions('true', 18, 0); // getSessions(defaultLoad, pageSize, skip)
showChecked();
checkFilteredLabel();
/*document
.querySelector('.efl-index-page-filter')
.classList.remove('hide-filter');
document
.querySelector('.efl-index-page-filter')
.classList.remove('add-animation');
document.body.classList.remove('dark-overlay');
window.scroll(0,document.querySelector('.article-session-index').offsetTop);*/
// apply filter analytics
applyFilterAnalytics(parentElement);
showFirstStep();
const redirectUrl = `${window.location.origin}${window.location.pathname}`;
const queryStr = getQueryString('true');
if (queryStr) {
window.history.pushState({}, '', `${redirectUrl}?${queryStr}`);
} else {
window.history.pushState({}, '', `${redirectUrl}`);
location.href = redirectUrl;
}
}
function resetSessionFilter() {
// const reset = parentElement.querySelectorAll('input[type=checkbox]');
// for (let i = 0; i < reset.length; i++) {
// if (reset[i].checked) {
// reset[i].checked = false;
// }
// }
// skipData = 18;
// moreData = true;
// getSessions('true', 18, 0);
// showChecked();
// parentElement.querySelectorAll('.next-step').forEach((level1) => {
// level1.querySelector('.filterslabel').classList.remove('active');
// level1.querySelector('.title').classList.remove('hidden');
// level1.querySelector('.filterscount').classList.remove('active');
// });
const redirectUrl = `${window.location.origin}${window.location.pathname}`;
// reset filter analytics
resetFilterAnalytics();
window.history.pushState({}, '', `${redirectUrl}`);
location.href = redirectUrl;
}
const zebraPattern = () => {
setTimeout(() => {
const page = document.querySelectorAll('.efl-card-list:not(.hidden)')
page.forEach((section, index) => {
if (index % 2 !== 0) {
section.classList.add('efl-card-list--section-bg');
} else {
section.classList.remove('efl-card-list--section-bg');
}
})
}, 650)
}
window.addEventListener('scroll', () => {
const { scrollTop, scrollHeight, clientHeight } = document.documentElement;
const scrollEle = document.querySelector(
'.article-session-index__scroll'
);
if(scrollEle && !scrollEle.classList.contains('ajax')) {
return;
} else if (!scrollEle) {
return;
}
if (
clientHeight + scrollTop >= scrollHeight - 5 &&
moreData &&
!isAjaxRuning
) {
getSessions('false', 4, skipData + 1);
skipData += 4;
}
});
backfilter.addEventListener('click', showFirstStep);
backfilter.addEventListener('keydown', (e) => {
if (e.keyCode === 13) {
e.preventDefault();
showFirstStep();
}
});
closefilter.addEventListener('click', closeFilter);
closefilter.addEventListener('keydown', (e) => {
if (e.keyCode === 13) {
e.preventDefault();
closeFilter();
}
});
resultfilter.addEventListener('click', resultFilter);
resultfilter.addEventListener('keydown', (e) => {
if (e.keyCode === 13) {
e.preventDefault();
resultFilter();
openFilter.focus();
}
});
linkslevel1.forEach(link => {
link.addEventListener('click', (e) => {
showNextStep(e, link);
});
link.addEventListener('keydown', (e) => {
if (e.keyCode === 13) {
e.preventDefault();
showNextStep(e, link);
setTimeout(() => {
e.target.nextElementSibling.querySelector('label').focus();
}, 100);
}
});
});
if (filterType === 'sessions' || filterType === 'articles') {
applyfilter.addEventListener('click', () => {
applySessionFilter();
resultfilter.focus();
});
applyfilter.addEventListener('keydown', (e) => {
if (e.keyCode === 13) {
e.preventDefault();
applySessionFilter();
resultfilter.focus();
}
});
resetfilter.addEventListener('click', () => {
resetSessionFilter();
resultfilter.focus();
});
resetfilter.addEventListener('keydown', (e) => {
if (e.keyCode === 13) {
e.preventDefault();
resetSessionFilter();
resultfilter.focus();
}
});
window.addEventListener('DOMContentLoaded', () => {
applyDefaultPageFilter('true');
const totalCard = document.querySelectorAll(
'.article-session-card,.large-signpost-article'
).length;
parentElement.querySelector('#showmeresult').innerHTML = totalCard;
});
} else {
applyfilter.addEventListener('click', (e) => {
applyFilter();
resultfilter.focus();
});
applyfilter.addEventListener('keydown', (e) => {
if (e.keyCode === 13) {
e.preventDefault();
applyFilter();
resultfilter.focus();
}
});
resetfilter.addEventListener('click', () => {
resetFilter();
resultfilter.focus();
});
resetfilter.addEventListener('keydown', (e) => {
if (e.keyCode === 13) {
e.preventDefault();
resetFilter();
resultfilter.focus();
}
});
window.addEventListener('DOMContentLoaded', () => {
applyDefaultPageFilter('false');
//zebraPattern();
});
}
};
const disablefilter = (parentElement) => {
const allCards = document.querySelectorAll('[data-filter]');
const allFilters = parentElement.querySelectorAll(
'input[type=checkbox]'
);
const checkboxValue = [];
allFilters.forEach(checkbox => {
checkbox.checked = false;
checkboxValue.push(checkbox.value);
checkbox.disabled = true;
checkbox.classList.add('disable-buttons');
checkbox.nextElementSibling.tabIndex = '-1';
});
window.addEventListener('DOMContentLoaded', () => {
const cardCount = document.querySelectorAll('.efl-card').length;
const allData = [];
parentElement.querySelector('#showmeresult').innerHTML = cardCount;
allCards.forEach(filtercard => {
const currentCardData = JSON.parse(filtercard.dataset.filter);
for (const filterdata in currentCardData) {
const splitData = currentCardData[filterdata].split('|');
splitData.forEach((data) => {
if (!allData.includes(data)) {
allData.push(data);
}
});
}
});
allData.forEach(availData => {
if (checkboxValue.find(val => val === availData)) {
parentElement.querySelector(`#opt-${availData}`).disabled = false;
parentElement.querySelector(`#opt-${availData}`).classList.remove('disable-buttons');
parentElement.querySelector(`#opt-${availData}`).nextElementSibling.tabIndex = '0';
}
});
// console.log(allData);
});
};
const disableSessionfilter = (parentElement) => {
const allCards = document.querySelectorAll('[data-filter]');
const allFilters = parentElement.querySelectorAll(
'input[type=checkbox]'
);
const checkboxValue = [];
allFilters.forEach(checkbox => {
checkbox.checked = false;
checkboxValue.push(checkbox.value);
checkbox.disabled = true;
checkbox.classList.add('disable-buttons');
checkbox.nextElementSibling.tabIndex = '-1';
});
window.addEventListener('DOMContentLoaded', () => {
const allData = [];
allCards.forEach(filtercard => {
const currentCardData = filtercard.dataset.filter;
const splitData = currentCardData.split('|');
splitData.forEach((data) => {
if (!allData.includes(data)) {
allData.push(data);
}
});
});
allData.forEach(availData => {
if (checkboxValue.find(val => val === availData)) {
parentElement.querySelector(`input[value='${availData}'`).disabled = false;
parentElement.querySelector(`input[value='${availData}'`).classList.remove('disable-buttons');
parentElement.querySelector(`input[value='${availData}'`).nextElementSibling.tabIndex = '0';
}
});
// console.log(allData);
});
};
export default parentElement => {
const openFilter = parentElement.querySelector(
'.efl-index-page-filter__sticky--content'
);
const closeFilter = document.querySelector('.close-filter');
const stickyFilter = parentElement.querySelector('.efl-index-page-filter__sticky');
const { filterType } = parentElement.dataset;
const updateCheckboxLabel = () => {
const checkboxes = parentElement.querySelectorAll('input[type=checkbox]');
checkboxes.forEach(checkboxElement => {
const checkbox = checkboxElement;
if (checkbox.parentElement.classList.contains('filter-buttons')) {
const checkboxContainer = checkbox.parentElement;
checkbox.addEventListener('change', () => {
if (checkbox.checked) {
checkboxContainer.ariaChecked = true;
} else {
checkboxContainer.ariaChecked = false;
}
})
}
})
}
updateCheckboxLabel();
const scrollFuncup = () => {
if (
window.scrollY + document.querySelector('.efl-index-page-filter__sticky').offsetTop > document.querySelector('.footer-section').offsetTop
) {
stickyFilter.classList.add('hide-filter');
} else {
stickyFilter.classList.remove('hide-filter');
}
};
const showFilterPanel = () => {
const linkslevel1 = parentElement.querySelectorAll('.next-step');
const allFilters = parentElement.querySelector(
'.efl-index-page-filter__section'
);
const ctaBlock = parentElement.querySelector(
'.efl-index-page-filter__button-group'
);
const cancelBlock = parentElement.querySelector(
'.efl-index-page-filter__cancel'
);
stickyFilter.classList.add('hide-filter');
document
.querySelector('.efl-index-page-filter')
.classList.add('add-animation');
document.body.classList.add('dark-overlay');
document.querySelector('.back-filter').classList.remove('active');
linkslevel1.forEach(link => {
link.setAttribute('aria-expanded', 'false');
link.tabIndex = 0;
});
ctaBlock.classList.remove('active');
cancelBlock.classList.remove('active');
allFilters.classList.remove('active');
filterOpenAnalytics(parentElement);
setTimeout(() => {
parentElement.querySelector('.close-filter').focus();
},350);
};
/* const hideFilterPanel = () => {
document
.querySelector('.efl-index-page-filter')
.classList.remove('add-animation');
stickyFilter.classList.remove('hide-filter');
document.body.classList.remove('dark-overlay');
filterCloseAnalytics(parentElement);
}; */
document.addEventListener('click', (e) => {
if(!(e.target.closest('.efl-index-page-filter__sticky') || e.target.closest('.efl-index-page-filter'))) {
const filterpop = document.querySelector('.efl-index-page-filter');
if (filterpop.classList.contains('add-animation')) {
filterCloseAnalytics(parentElement);
}
document
.querySelector('.efl-index-page-filter__sticky')
.classList.remove('hide-filter');
document
.querySelector('.efl-index-page-filter')
.classList.remove('add-animation');
document.body.classList.remove('dark-overlay');
}
});
openFilter.addEventListener('click', showFilterPanel);
openFilter.addEventListener('keydown', (e) => {
if (e.keyCode === 13) {
e.preventDefault();
showFilterPanel();
setTimeout(() => {
parentElement.querySelector('.close-filter').focus();
},350);
}
});
// closeFilter.addEventListener('click', hideFilterPanel);
window.addEventListener('scroll', scrollFuncup);
filterEvents(parentElement);
// filtersectionEvents(parentElement);
if (filterType === 'sessions' || filterType === 'articles') {
// console.log('session');
disableSessionfilter(parentElement);
} else {
disablefilter(parentElement);
}
window.addEventListener('DOMContentLoaded', () => {
const filterOpts = parentElement.querySelectorAll('.filter-buttons > input:not(.disable-buttons)');
filterOpts.forEach(filterOpt => {
filterOpt.nextElementSibling.addEventListener('click', event => {
level2OptionAnalytics(event, parentElement);
});
});
scrollFuncup();
});
};
.efl-index-page-filter {
&__sticky {
cursor: pointer;
position: fixed;
left: 50%;
bottom: 4rem;
visibility: visible;
opacity: 1;
transition: bottom 0.6s cubic-bezier(0.34, 1.56, 0.64, 1);
transform: translateX(-50%);
z-index: 5;
&.hide-filter {
bottom: -5.8rem;
}
&--content {
display: flex;
align-items: center;
box-shadow: 0 0.2rem 1.2rem rgba(57, 48, 48, 0.15);
max-width: 32.7rem;
width: calc(100vw - 5.2rem);
height: 5.8rem;
margin: 0 auto;
-webkit-transition: all 200ms ease-in;
-webkit-transform: scale(1);
-ms-transition: all 200ms ease-in;
-ms-transform: scale(1);
-moz-transition: all 200ms ease-in;
-moz-transform: scale(1);
transition: all 200ms ease-in;
transform: scale(1);
border-radius: 5rem;
background-color: $blue;
&:focus-within,
&:focus {
outline-color: $red;
outline-width: 2px;
}
}
&--result {
font-size: 2rem;
line-height: 1.6rem;
font-family: $ef-font;
letter-spacing: 0.02em;
font-weight: 700;
text-transform: uppercase;
width: 26.2rem;
display: flex;
align-items: center;
justify-content: left;
background: $blue;
color: $white;
border-radius: 5rem 0 0 5rem;
height: 5.8rem;
transition: all 0.3s ease;
padding-left: 3rem;
&::before {
content: '';
background: url(./assets/images/filter-icon.svg) no-repeat center;
display: inline-block;
width: 2rem;
height: 1.5rem;
margin-right: 1.7rem;
}
}
&--count {
background: $blue;
padding: 1rem 1.4rem;
border-radius: 0 5rem 5rem 0;
transition: all 0.3s ease;
.filter-count {
font-family: $ef-font;
font-size: 2rem;
line-height: 3.2rem;
background: $blue;
width: 3.8rem;
height: 3.8rem;
color: $white;
border-radius: 50%;
align-items: center;
display: flex;
border: 0.5rem solid $white;
justify-content: space-around;
transition: all 0.3s ease;
}
}
&:hover {
.efl-index-page-filter__sticky--result {
background: $white;
color: $blue;
border-top: 1px solid $crest-blue;
border-bottom: 1px solid $crest-blue;
border-left: 1px solid $crest-blue;
&::before {
background: url(./assets/images/filter-icon-blue.svg) no-repeat center;
}
}
.efl-index-page-filter__sticky--count {
background: $white;
border-top: 1px solid $crest-blue;
border-bottom: 1px solid $crest-blue;
border-right: 1px solid $crest-blue;
padding: 0.9rem 1.4rem;
.filter-count {
border-color: $crest-blue;
color: $crest-blue;
background: $white;
}
}
.efl-index-page-filter__sticky--content {
-webkit-transition: all 0.3s ease;
-webkit-transform: scale(0.95);
-ms-transition: all 0.3s ease;
-ms-transform: scale(0.95);
-moz-transition: all 0.3s ease;
-moz-transform: scale(0.95);
transition: all 0.3s ease;
transform: scale(0.95);
background-color: $white;
}
}
}
background: $crest-blue;
height: 100%;
width: 37.5rem;
visibility: hidden;
top: 0;
left: -37.5rem;
overflow: hidden;
position: fixed;
z-index: 110;
opacity: 0;
transition: all 0.25s;
-webkit-transition: all 0.25s;
&.add-animation {
visibility: visible;
opacity: 1;
left: 0;
}
&__cancel {
background: $white;
display: flex;
align-items: center;
padding: 2.3rem 2rem 1.6rem 2.6rem;
position: relative;
.filter-text {
@extend .efl-p-1;
color: $black;
}
.close-filter {
@extend .efl-p-1;
color: $color-interface-light;
display: flex;
cursor: pointer;
position: absolute;
right: 2.2rem;
&:focus,
&:focus-visible {
outline: auto;
}
&::after {
content: '';
background: url(./assets/images/icon-close.svg) no-repeat center;
display: inline-block;
width: 2rem;
height: 2rem;
margin-left: 1.6rem;
position: relative;
top: 0.1rem;
}
}
.back-filter {
font-size: 1.4rem;
color: $blue;
display: none;
cursor: pointer;
&::before {
content: '';
background: url(./assets/images/arrow-back.svg) no-repeat center;
display: inline-block;
width: 2rem;
height: 2rem;
margin-right: 1.8rem;
position: relative;
top: 0.2rem;
}
}
&.active {
.back-filter {
display: block;
}
& + div {
height: calc(100vh - 140px);
}
}
}
&__scroll {
overflow-y: scroll;
height: calc(100vh - 213px);
width: 100%;
overflow-x: hidden;
}
&__section {
overflow-x: hidden;
width: 100%;
padding-bottom: 10rem;
&--level1 {
display: flex;
justify-content: space-between;
padding: 2.4rem 3rem 2.6rem 3.3rem;
border-bottom: 1px solid rgba(236, 238, 243, 0.2);
margin-bottom: 2px;
.filterby {
font-size: 1.4rem;
line-height: 2rem;
font-family: $ef-font;
color: $white;
opacity: 0.7;
text-decoration: none;
letter-spacing: 0.02em;
}
.title,
.filterslabel {
@extend .efl-heading-5;
color: $white;
text-decoration: none;
text-transform: capitalize;
margin-top: 0.6rem;
font-weight: 700;
}
.filterslabel {
display: none;
&.active {
display: block;
}
}
.filtercontent {
display: flex;
align-items: center;
}
.filterscount {
@extend .efl-heading-5;
display: none;
color: $white;
text-decoration: none;
padding-left: 0.5rem;
margin-top: 0.6rem;
font-weight: 500;
span {
padding: 0 0.5rem;
}
&.active {
display: block;
}
}
&[aria-expanded='false'] {
&::after {
content: '';
background: url(./assets/images/arrow-next-white.svg) no-repeat center;
display: inline-block;
width: 2rem;
height: 2rem;
margin-top: 1rem;
-webkit-transition: transform 0.3s ease-out;
-moz-transition: transform 0.3s ease-out;
-ms-transition: transform 0.3s ease-out;
-o-transition: transform 0.3s ease-out;
transition: transform 0.3s ease-out;
}
&:hover {
border-bottom: 1px solid rgba(236, 238, 243, 0.7);
.title,
.filterslabel {
font-weight: 700;
}
&::after {
-webkit-transform: translateX(0.8rem);
-moz-transform: translateX(0.8rem);
-ms-transform: translateX(0.8rem);
-o-transform: translateX(0.8rem);
transform: translateX(0.8rem);
}
}
& + div {
display: none;
}
}
&[aria-expanded='true'] {
cursor: default;
border-bottom: 3px solid rgba(236, 238, 243, 0.2);
margin-bottom: 0;
}
&:focus-visible,
&:focus {
outline-color: $white;
}
}
&--list {
cursor: pointer;
transition: 0.5s;
.active-line {
position: relative;
&::after {
content: '';
background: $white;
opacity: 0.2;
height: 0.3rem;
backdrop-filter: blur(81.5485px);
position: absolute;
margin: 0 auto;
width: 100%;
}
}
&:hover .efl-index-page-filter__section--level1 {
&:hover {
&::after {
-webkit-transform: translateX(0.8rem);
-moz-transform: translateX(0.8rem);
-ms-transform: translateX(0.8rem);
-o-transform: translateX(0.8rem);
transform: translateX(0.8rem);
}
}
}
}
&.active {
.next-step {
&[aria-expanded='false'] {
display: none;
}
&[aria-expanded='true'] {
position: fixed;
width: 100%;
background: #004f9f;
z-index: 1;
}
}
}
}
&__button-group {
position: absolute;
padding-bottom: 2.4rem;
bottom: 0;
display: flex;
align-items: center;
justify-content: center;
width: 100%;
background: $crest-blue;
padding-top: 2.4rem;
&--results {
display: flex;
align-items: center;
row-gap: 1.6rem;
flex-direction: column;
width: calc(100% - 6rem);
.result {
background: $red;
border-radius: 0.2rem;
width: 100%;
height: 4.4rem;
color: $white;
padding: 0.8rem 1.2rem;
font-family: $ef-font;
font-size: 1.4rem;
line-height: 2.8rem;
text-align: center;
letter-spacing: 0.01em;
text-transform: uppercase;
text-decoration: none;
display: block;
cursor: pointer;
span {
letter-spacing: 0.06em;
&:first-child {
margin-left: 0.3rem;
}
}
}
.no-result {
background: $grey-light;
border-radius: 0.2rem;
width: 100%;
height: 4.4rem;
color: $blue;
padding: 0.8rem 1.2rem;
font-family: $ef-font;
font-size: 1.4rem;
line-height: 2.8rem;
text-align: center;
letter-spacing: 0.01em;
text-transform: uppercase;
text-decoration: none;
}
.filter {
width: 100%;
height: 4.4rem;
color: $white;
padding: 0.8rem 1.2rem;
font-family: $ef-font;
font-size: 1.4rem;
line-height: 2.8rem;
text-align: center;
letter-spacing: 0.01em;
background: transparent;
border: 0.1rem solid $white;
box-sizing: border-box;
border-radius: 0.2rem;
text-transform: uppercase;
cursor: pointer;
}
}
&--apply-filter {
display: none;
.result {
background: $red;
border-radius: 0.2rem;
width: 33.5rem;
height: 4.4rem;
color: $white;
padding: 0.8rem 1.2rem;
font-family: $ef-font;
font-size: 1.4rem;
line-height: 2.8rem;
text-align: center;
letter-spacing: 0.01em;
text-transform: uppercase;
text-decoration: none;
display: block;
cursor: pointer;
}
}
&.active {
.efl-index-page-filter__button-group--results {
display: none;
}
.efl-index-page-filter__button-group--apply-filter {
display: block;
}
}
&::before {
content: '';
background: $grey-light;
opacity: 0.2;
height: 0.1rem;
backdrop-filter: blur(81.5485px);
position: inherit;
margin: 0 auto;
width: 100%;
top: 0;
}
}
&__options {
overflow-y: scroll;
height: auto;
padding-top: 10.5rem;
&--buttons {
/* display: none; */
.filter-buttons {
padding: 2rem 3.3rem 2rem 3.3rem;
position: relative;
input {
display: none;
cursor: pointer;
}
label {
@extend .efl-p-1;
position: relative;
cursor: pointer;
display: flex;
letter-spacing: 0.02em;
color: $white;
justify-content: space-between;
order: 2;
user-select: none;
}
label::before {
content: '';
background: url(./assets/images/filter-selector.svg) no-repeat center;
width: 3rem;
height: 3rem;
padding: 1rem;
display: inline-block;
position: relative;
cursor: pointer;
order: 2;
transition: 0.4s;
}
&:hover label::before {
background: url(./assets/images/filter-selector-hover.svg) no-repeat
center;
width: 3rem;
height: 3rem;
padding: 1rem;
display: inline-block;
position: relative;
cursor: pointer;
}
.disable-buttons + label {
opacity: 0.5;
cursor: default;
}
.disable-buttons + label::before {
display: none;
}
input:checked + label::before {
background: url(./assets/images/filter-selector-selected.svg)
no-repeat center;
width: 3rem;
height: 3rem;
display: inline-block;
position: relative;
cursor: pointer;
order: 1;
}
input:checked + label::after {
content: '';
background: url(./assets/images/filter-selector-tick.svg) no-repeat
center;
width: 1.04rem;
height: 0.88rem;
display: flex;
align-items: center;
justify-content: space-around;
position: absolute;
bottom: 1.1rem;
right: 0.95rem;
}
&::after {
content: '';
background: $grey-light;
opacity: 0.2;
height: 0.1rem;
width: 100%;
position: absolute;
left: 0;
bottom: 0;
}
&:hover {
&::after {
opacity: 0.7;
}
}
}
}
}
&__options::-webkit-scrollbar {
width: 0.2rem;
}
&__options::-webkit-scrollbar-track {
background-color: $crest-blue;
-webkit-border-radius: 1rem;
border-radius: 1rem;
}
@media screen and (max-width: $mq-small) {
width: 100%;
}
// 400% Zoom
@media screen and (max-height: $mq-small) and (max-width: $mq-small) {
&__sticky {
bottom: 1rem;
}
}
@media screen and (min-width: $mq-small) {
&__options {
padding-top: 10.5rem;
}
&__scroll {
width: calc(100% + 25px);
overflow-x: hidden;
height: calc(100vh - 21.5rem);
}
&__cancel {
&.active {
& + div {
padding-bottom: 0;
height: calc(100vh - 155px);
}
}
}
&__section {
overflow-x: hidden;
width: 37.5rem;
padding-bottom: 0;
&--list {
width: calc(100% + 18px);
}
&--level1 {
margin-right: 18px;
}
&.active {
.next-step {
&[aria-expanded='true'] {
position: fixed;
width: 37.5rem;
background: #004f9f;
z-index: 1;
}
}
}
}
}
@media screen and (min-width: $mq-medium) {
&__sticky {
&--content {
max-width: 67.9rem;
}
&--result {
width: 61.3rem;
}
}
}
}
.dark-overlay {
overflow: hidden;
&::after {
content: '';
display: block;
position: fixed;
width: 100%;
height: 100%;
top: 0;
left: 0;
background-color: rgba(black, 0.7);
z-index: 101;
}
}
<div data-behaviour="efl-index-page-filter" data-filter-type="{{filter-type}}" data-filter-url="{{filter-url}}">
<div class="efl-index-page-filter">
<div class="efl-index-page-filter__cancel">
<a class="back-filter" tabindex="0" aria-label="back to main filter option"></a>
<div class="filter-text">Adjust Filters</div>
<a class="close-filter" tabindex="0">Cancel</a>
</div>
<div class="efl-index-page-filter__scroll">
<div class="efl-index-page-filter__section">
{{#each filters-level-1}}
<div class="efl-index-page-filter__section--list">
<a class="efl-index-page-filter__section--level1 next-step" aria-expanded="false"
aria-controls="filter-{{level1-category}}" tabindex="0">
<div>
<div class="filterby">{{level1-label}}</div>
<div class="filtercontent">
<div class="title">{{level1-title}}</div>
<div class="filterslabel"></div>
<div class="filterscount">+<span>1</span>more</div>
</div>
</div>
</a>
<div class="efl-index-page-filter__options" id="filter-{{level1-category}}">
<fieldset class="efl-index-page-filter__options--buttons {{level1-category}}">
{{#each level2-list}}
<div role="checkbox" aria-checked="false" class="filter-buttons">
<input type="checkbox" class="" id="opt-{{level2-category}}" value="{{level2-category}}">
<label for="opt-{{level2-category}}">{{title}}</label>
</div>
{{/each}}
</fieldset>
</div>
</div>
{{/each}}
</div>
</div>
<div class="efl-index-page-filter__button-group">
<div class="efl-index-page-filter__button-group--results">
<a role="button" class="result" tabindex="0">Show Me <span id="showmeresult"></span><span> Results</span></a>
<div class="no-result hidden">Sorry there are 0 results</div>
<a role="button" class="filter reset-filter" tabindex="0">Reset Filters</a>
</div>
<div class="efl-index-page-filter__button-group--apply-filter">
<a role="button" class="result apply-filters" tabindex="0"> Apply Filters </a>
</div>
</div>
</div>
<div class="efl-index-page-filter__sticky hide-filter">
<div role="button" class="efl-index-page-filter__sticky--content" tabindex="0">
<div class="efl-index-page-filter__sticky--result">
<span>Filter Results</span>
</div>
<div class="efl-index-page-filter__sticky--count">
<div class="filter-count">0</div>
</div>
</div>
</div>
</div>