<section class="efl-learner-profile__section bookmark-list efl-learner-profile-bookmark" data-behavior="create-bookmark-list" data-edit-bookmark-id="2">
<div class="efl-learner-profile-bookmark__list">
<div class="efl-learner-profile__section--header">
<h3 class="bookmark-list">Defending list</h3>
<button aria-label="edit or delete bookmark of Defending list" class="efl-learner-profile__section--dot" aria-expanded="false"></button>
<div class="efl-learner-profile-bookmark__list--manage hidden">
<button class="edit-list" aria-label="edit list bookmark">Rename list</button>
<button class="delete-list" aria-label="delete list bookmark">Delete list</button>
</div>
</div>
<div class="efl-learner-profile-bookmark__tags">
<span>1 Articles</span>
<span>1 Sessions</span>
</div>
<div class="efl-learner-profile-bookmark__items">
<div class="efl-learner-profile-bookmark__items--img" data-bookmark-page-id="08619b1b8cc34f5a95eb809ec15837ad">
<img src="/assets/example-content/news-horizontal-1.jpg" alt="" loading="lazy" />
</div>
<div class="efl-learner-profile-bookmark__items--img" data-bookmark-page-id="08619b1b8cc34f5a95eb809ec15837ad">
<img src="/assets/example-content/news-horizontal-1.jpg" alt="" loading="lazy" />
</div>
<div class="efl-learner-profile-bookmark__items--img" data-bookmark-page-id="08619b1b8cc34f5a95eb809ec15837ad">
<img src="/assets/example-content/news-horizontal-1.jpg" alt="" loading="lazy" />
</div>
</div>
<button class="cta cta--primary view-bookmark-list" aria-label="view list bookmark of Defending list">view list</button>
</div>
<div class="efl-learner-profile-bookmark__details hidden">
<div class="efl-learner-profile__section--header">
<h3 class="bookmark-list">Defending list</h3>
<div class="efl-learner-profile__section--sort">
<button aria-label="sort bookmark list" class="efl-learner-profile__section--sort__link">Sort by: <span> All</span></button>
<div aria-expanded="false" role="list" class="efl-learner-profile__section--sort__list">
<ul>
<li tabindex="0" data-value="All">All</li>
<li tabindex="0" data-value="Articles">Articles</li>
<li tabindex="0" data-value="Sessions">Sessions</li>
</ul>
</div>
<select class="efl-learner-profile__section--sort__select">
<option value="All">All</option>
<option value="Articles">Articles</option>
<option value="Sessions">Sessions</option>
</select>
</div>
</div>
<div class="efl-learner-profile-bookmark__details--list">
<div class="bookmark-item" data-bookmark-page-id="08619b1b8cc34f5a95eb809ec15837ad">
<a class="bookmark-item__link">
<div class="bookmark-item__link--img">
<img src="/assets/example-content/news-horizontal-1.jpg" alt="" loading="lazy" />
</div>
<div class="bookmark-item__link--content">
<p>Article</p>
<h5>How to create a great matchday experience</h5>
</div>
</a>
<button class="bookmark-item__bookmarkflag" aria-label="bookmark flag"></button>
</div>
<div class="bookmark-item" data-bookmark-page-id="8ed119426dd847cbb99a4b22baba296e">
<a class="bookmark-item__link">
<div class="bookmark-item__link--img">
<img src="/assets/example-content/news-horizontal-1.jpg" alt="" loading="lazy" />
</div>
<div class="bookmark-item__link--content">
<p>Article</p>
<h5>How to create a great matchday experience</h5>
</div>
</a>
<button class="bookmark-item__bookmarkflag" aria-label="bookmark flag"></button>
</div>
</div>
</div>
</section>
No notes defined.
{
"modifier": "bookmark-list",
"heading": "Defending list",
"create-bookmark-list": false,
"create-new-bookmark": {
"href": "#",
"copy": "Create list",
"additionalClass": "create-new-bookmark-list",
"id": "create-new-bookmark-list"
},
"create-list": {
"href": "#",
"copy": "create",
"additionalClass": "create-new-bookmark"
},
"edit-list": {
"href": "#",
"copy": "save",
"additionalClass": "edit-bookmark-list hidden"
},
"cancel-create": {
"href": "#",
"copy": "cancel",
"additionalClass": "cancel-create-bookmark"
},
"exist-name": {
"href": "#",
"copy": "Edit name",
"additionalClass": "edit-bookmark-name"
},
"delete-list": {
"href": "#",
"copy": "yes delete",
"additionalClass": "delete-bookmark-list"
},
"cancel-delete": {
"href": "#",
"copy": "No, back to list",
"additionalClass": "cancel-bookmark-delete"
},
"isMultiList": true,
"edit-bookmark-id": 2,
"view-list": {
"href": "#",
"copy": "view list",
"additionalClass": "view-bookmark-list"
},
"bookmark-img": [
{
"img": "/assets/example-content/news-horizontal-1.jpg"
},
{
"img": "/assets/example-content/news-horizontal-1.jpg"
},
{
"img": "/assets/example-content/news-horizontal-1.jpg"
}
]
}
import { Dialog } from '../lightbox-overlay/lightbox-overlay';
export default parentElement => {
const DIALOG_ID = 'manage-bookmark-dialog';
const createBookmark = parentElement.querySelector(
'.create-new-bookmark-list'
);
const viewList = parentElement.querySelectorAll('.view-bookmark-list');
const backCta = document.querySelector('.efl-learner-profile-bookmark__back');
const container = document.querySelector(
'[data-page="bookmarks"] .efl-learner-profile'
);
const bookmarkList = container.querySelectorAll(
'.efl-learner-profile-bookmark'
);
const MOBILE_BREAKPOINT = 820;
const { fanid } = document.querySelector(
'.efl-profile-hero-banner__content--profile__picture--dp'
).dataset;
const updatePopupDetails = option => {
const popupDiv = document.querySelector(
'.efl-learner-profile-bookmark__popup'
);
const step = popupDiv.querySelector('.step1');
const heading = step.querySelector('h4');
const createCta = step.querySelector('.create-new-bookmark');
const editCta = step.querySelector('.edit-bookmark-list');
const cancelCta = step.querySelector('.cancel-create-bookmark');
const bookmarkDescCta = popupDiv.querySelector('.bookmark-add-desc');
const subheading = step.querySelector(
'.efl-learner-profile-bookmark__popup--copy'
);
const { createHeading, editHeading } = heading.dataset;
const { createText, updateText } = subheading.dataset;
if (option === 'create') {
heading.innerHTML = createHeading;
subheading.innerHTML = createText;
createCta.classList.remove('hidden');
editCta.classList.add('hidden');
cancelCta.classList.remove('hidden');
bookmarkDescCta.classList.remove('hidden');
} else {
heading.innerHTML = editHeading;
subheading.innerHTML = updateText;
createCta.classList.add('hidden');
editCta.classList.remove('hidden');
cancelCta.classList.add('hidden');
bookmarkDescCta.classList.add('hidden');
}
};
const generateLightBox = (labelId, option) => {
const createBookmarkSection = document.querySelector(
'.create-bookmark-list.efl-learner-profile-bookmark'
);
const popupDiv = createBookmarkSection.querySelector(
'.efl-learner-profile-bookmark__popup'
);
if (option === 'remove-bookmark') {
popupDiv.querySelector('.step1').classList.add('hidden');
popupDiv.querySelector('.step2').classList.add('hidden');
popupDiv.querySelector('.step3').classList.add('hidden');
popupDiv.querySelector('.step5').classList.add('hidden');
popupDiv.querySelector('.step4').classList.remove('hidden');
} else if (option === 'delete') {
popupDiv.querySelector('.step1').classList.add('hidden');
popupDiv.querySelector('.step2').classList.add('hidden');
popupDiv.querySelector('.step4').classList.add('hidden');
popupDiv.querySelector('.step5').classList.add('hidden');
popupDiv.querySelector('.step3').classList.remove('hidden');
} else if (option !== 'delete') {
updatePopupDetails(option);
popupDiv.querySelector('.step1').classList.remove('hidden');
popupDiv.querySelector('.step2').classList.add('hidden');
popupDiv.querySelector('.step3').classList.add('hidden');
popupDiv.querySelector('.step4').classList.add('hidden');
popupDiv.querySelector('.step5').classList.add('hidden');
}
let html = popupDiv.outerHTML;
html = html.replace(
'efl-learner-profile-bookmark__popup hidden',
'efl-learner-profile-bookmark__popup'
);
return `
<div role="dialog" id="${DIALOG_ID}" aria-labelledby="${labelId}" aria-modal="true" class="lightbox-overlay">
<div class="efl-learner-profile">
${html}
</div>
</div>`;
};
const removeLightBox = () => {
if (document.getElementById(DIALOG_ID)) {
document.getElementById(DIALOG_ID).remove();
}
};
function getBookmarkListCount() {
if (localStorage.getItem('bookmarkListData')) {
const bookmarkListData = JSON.parse(
localStorage.getItem('bookmarkListData')
);
return bookmarkListData.eflBookmarks.length - 1;
}
return 0;
}
const removeBookmarkItem = e => {
e.preventDefault();
const { editBookmarkId } = e.target.closest('section').dataset;
const { bookmarkPageId } = e.target.closest('.bookmark-item').dataset;
// eslint-disable-next-line no-use-before-define
openLightbox(e.target, 'remove-bookmark', bookmarkPageId, editBookmarkId);
};
const removeBookmarkItemEvent = () => {
const bookmarkItems = container.querySelectorAll(
'.bookmark-item__bookmarkflag'
);
bookmarkItems.forEach(item => {
item.addEventListener('click', removeBookmarkItem);
item.addEventListener('keydown', event => {
if (event.keyCode === 13) {
event.preventDefault();
item.click('click', removeBookmarkItem);
}
});
});
};
const formateBookmarkItem = (sortedJson, target) => {
const bookmarkItemList = target
.closest('section')
.querySelector('.efl-learner-profile-bookmark__details--list');
bookmarkItemList.innerHTML = '';
sortedJson.forEach(item => {
const bookmarkItem = `
<div class="bookmark-item" data-bookmark-page-id="${item.pageId}">
<a class="bookmark-item__link" href="${item.bookmarkLink}">
<div class="bookmark-item__link--img">
<img src="${item.bookmarkImage}" alt="" loading="lazy" />
</div>
<div class="bookmark-item__link--content">
<p>${item.categoryTagName}</p>
<h5>${item.bookmarkHeadline}</h5>
</div>
</a>
<button class="bookmark-item__bookmarkflag" aria-label="bookmark flag"></button>
</div>`;
bookmarkItemList.insertAdjacentHTML('beforeend', bookmarkItem);
});
removeBookmarkItemEvent();
};
const sortBookmarkList = target => {
const sortBy = target.value;
const selectedBookmark = target
.closest('section')
.querySelector('h3.bookmark-list').innerText;
const bookmarkListData = localStorage.getItem('bookmarkListData');
// console.log(sortBy);
if (bookmarkListData) {
const bookmarkListJson = JSON.parse(bookmarkListData);
let sortedJson = [];
// console.log(selectedBookmark);
bookmarkListJson.eflBookmarks.forEach(bookmark => {
if (
bookmark.tag === selectedBookmark ||
(bookmark.tag === '' &&
selectedBookmark.toLowerCase() === 'my bookmark list')
) {
const sortBookmarkJson = [];
const articleJson = [];
const sessionJson = [];
sortedJson = [];
sortBookmarkJson.push(bookmark.bookmarks);
// console.log(sortBookmarkJson);
if (sortBy === 'Articles') {
sortBookmarkJson[0].forEach(item => {
if (item.categoryTagName === 'Article') {
articleJson.push(item);
} else {
sessionJson.push(item);
}
});
sortedJson = articleJson.concat(sessionJson);
} else if (sortBy === 'Sessions') {
sortBookmarkJson[0].forEach(item => {
if (item.categoryTagName === 'Session') {
sessionJson.push(item);
} else {
articleJson.push(item);
}
});
sortedJson = sessionJson.concat(articleJson);
} else if (sortBy === 'All') {
// eslint-disable-next-line prefer-destructuring
sortedJson = sortBookmarkJson[0];
}
// console.log(sortedJson);
}
});
formateBookmarkItem(sortedJson, target);
}
};
const toolTipEvent = () => {
const bookmarkListSection = container.querySelectorAll(
'.efl-learner-profile-bookmark'
);
if (window.innerWidth >= MOBILE_BREAKPOINT) {
// bookmark function for desktop
bookmarkListSection.forEach(list => {
const dotcta = list.querySelector('.efl-learner-profile__section--dot');
const editcta = list.querySelector(
'.efl-learner-profile-bookmark__list--manage .edit-list'
);
const deletecta = list.querySelector(
'.efl-learner-profile-bookmark__list--manage .delete-list'
);
const sortby = list.querySelector(
'.efl-learner-profile__section--sort__link'
);
const dropdownListItems = list.querySelectorAll(
'.efl-learner-profile__section--sort__list li'
);
const select = list.querySelector(
'.efl-learner-profile__section--sort__select'
);
const dropdown = list.querySelector(
'.efl-learner-profile__section--sort__list'
);
if (dotcta) {
dotcta.addEventListener('click', e => {
e.preventDefault();
if (e.target.nextElementSibling.classList.contains('hidden')) {
e.target.nextElementSibling.classList.remove('hidden');
e.target.setAttribute('aria-expanded', 'true');
setTimeout(() => {
editcta.focus();
}, 50);
}
});
dotcta.addEventListener('keydown', event => {
if (event.keyCode === 13) {
dotcta.click();
} else if (event.keyCode === 27) {
if (!dotcta.nextElementSibling.classList.contains('hidden')) {
dotcta.nextElementSibling.classList.add('hidden');
dotcta.setAttribute('aria-expanded', 'false');
}
}
setTimeout(() => {
editcta.focus();
}, 10);
});
dotcta.addEventListener('mouseover', e => {
e.target.nextElementSibling.classList.remove('hidden');
e.target.nextElementSibling.addEventListener('mouseover', event => {
event.target.classList.add('active');
});
e.target.nextElementSibling.addEventListener(
'mouseleave',
event => {
event.target.classList.remove('active');
e.target.nextElementSibling.classList.add('hidden');
}
);
});
dotcta.addEventListener('mouseleave', e => {
setTimeout(() => {
if (!e.target.nextElementSibling.classList.contains('active')) {
e.target.nextElementSibling.classList.add('hidden');
}
}, 500);
});
}
if (editcta) {
editcta.addEventListener('click', e => {
e.preventDefault();
const div = e.target.closest('.efl-learner-profile-bookmark__list');
const title = div.querySelector('.bookmark-list').innerHTML;
const { editBookmarkId } = e.target.closest('section').dataset;
// eslint-disable-next-line no-use-before-define
openLightbox(editcta, 'edit', title, editBookmarkId);
});
editcta.addEventListener('keydown', event => {
if (event.keyCode === 13) {
editcta.click();
} else if (event.keyCode === 27) {
if (!dotcta.nextElementSibling.classList.contains('hidden')) {
dotcta.nextElementSibling.classList.add('hidden');
dotcta.setAttribute('aria-expanded', 'false');
setTimeout(() => {
dotcta.focus();
}, 10);
}
}
});
}
if (deletecta) {
deletecta.addEventListener('click', e => {
e.preventDefault();
const { editBookmarkId } = e.target.closest('section').dataset;
// eslint-disable-next-line no-use-before-define
openLightbox(deletecta, 'delete', '', editBookmarkId);
});
deletecta.addEventListener('keyup', event => {
if (event.keyCode === 13) {
deletecta.click();
} else if (event.keyCode === 27) {
if (!dotcta.nextElementSibling.classList.contains('hidden')) {
dotcta.nextElementSibling.classList.add('hidden');
dotcta.setAttribute('aria-expanded', 'false');
setTimeout(() => {
dotcta.focus();
}, 10);
}
}
});
}
if (sortby) {
sortby.addEventListener('click', e => {
e.preventDefault();
dropdown.setAttribute('aria-expanded', 'true');
});
const closeList = () => {
// selectDiv.classList.remove('active');
dropdown.setAttribute('aria-expanded', 'false');
};
const setSelectedListItem = e => {
const { target } = e;
// selectDiv.innerText = target.getAttribute('data-value');
dropdownListItems.forEach(item => {
item.classList.remove('active');
});
select.value = target.getAttribute('data-value');
target.classList.add('active');
select.dispatchEvent(new Event('change'));
};
dropdownListItems.forEach(item => {
item.addEventListener('click', e => {
setSelectedListItem(e);
closeList();
});
item.addEventListener('keydown', event => {
if (event.keyCode === 13) {
item.click();
}
});
});
select.addEventListener('change', event => {
const { target } = event;
sortby.querySelector('span').innerText = target.value;
sortBookmarkList(target);
});
}
});
document.addEventListener('click', e => {
if (!e.target.closest('.efl-learner-profile__section--sort')) {
const bookmarkSort = document.querySelector(
'.efl-learner-profile-bookmark:not(.hidden)'
);
if (bookmarkSort) {
const sortDropDown = bookmarkSort.querySelector(
'.efl-learner-profile__section--sort__list'
);
if (sortDropDown) {
sortDropDown.setAttribute('aria-expanded', 'false');
}
}
}
if (
!(
e.target.closest('.efl-learner-profile-bookmark__list--manage') ||
e.target.closest('.efl-learner-profile__section--dot')
)
) {
bookmarkListSection.forEach(list => {
const tooltip = list.querySelector(
'.efl-learner-profile-bookmark__list--manage'
);
const dotcta = list.querySelector(
'.efl-learner-profile__section--dot'
);
if (tooltip) {
dotcta.nextElementSibling.classList.add('hidden');
dotcta.setAttribute('aria-expanded', 'false');
}
});
}
});
} else {
// bookmark function for mobile
bookmarkListSection.forEach(list => {
const dotcta = list.querySelector('.efl-learner-profile__section--dot');
const editcta = list.querySelector(
'.efl-learner-profile-bookmark__list--manage .edit-list'
);
const deletecta = list.querySelector(
'.efl-learner-profile-bookmark__list--manage .delete-list'
);
const select = list.querySelector(
'.efl-learner-profile__section--sort__select'
);
const sortby = list.querySelector(
'.efl-learner-profile__section--sort__link'
);
if (dotcta) {
dotcta.addEventListener('click', e => {
e.preventDefault();
document.body.classList.add('efl-profile-dark-overlay');
e.target.nextElementSibling.classList.remove('hidden');
e.target.setAttribute('aria-expanded', 'true');
setTimeout(() => {
e.target.nextElementSibling.classList.add('add-animation');
editcta.focus();
}, 50);
});
dotcta.addEventListener('keydown', event => {
if (event.keyCode === 13) {
dotcta.click();
} else if (event.keyCode === 27) {
if (!dotcta.nextElementSibling.classList.contains('hidden')) {
document.body.classList.remove('efl-profile-dark-overlay');
dotcta.nextElementSibling.classList.add('hidden');
dotcta.setAttribute('aria-expanded', 'false');
setTimeout(() => {
dotcta.nextElementSibling.classList.remove('add-animation');
dotcta.focus();
}, 50);
}
}
});
}
if (editcta) {
editcta.addEventListener('click', e => {
e.preventDefault();
const div = e.target.closest('.efl-learner-profile-bookmark__list');
const title = div.querySelector('.bookmark-list').innerHTML;
const { editBookmarkId } = e.target.closest('section').dataset;
// eslint-disable-next-line no-use-before-define
openLightbox(editcta, 'edit', title, editBookmarkId);
setTimeout(() => {
editcta.focus();
}, 10);
});
editcta.addEventListener('keydown', event => {
if (event.keyCode === 13) {
editcta.click();
} else if (event.keyCode === 27) {
if (!dotcta.nextElementSibling.classList.contains('hidden')) {
document.body.classList.remove('efl-profile-dark-overlay');
dotcta.nextElementSibling.classList.add('hidden');
dotcta.setAttribute('aria-expanded', 'false');
setTimeout(() => {
dotcta.nextElementSibling.classList.remove('add-animation');
dotcta.focus();
}, 50);
}
}
});
}
if (deletecta) {
deletecta.addEventListener('click', e => {
e.preventDefault();
const { editBookmarkId } = e.target.closest('section').dataset;
// eslint-disable-next-line no-use-before-define
openLightbox(deletecta, 'delete', '', editBookmarkId);
});
deletecta.addEventListener('keyup', event => {
if (event.keyCode === 13) {
deletecta.click();
} else if (event.keyCode === 27) {
if (!dotcta.nextElementSibling.classList.contains('hidden')) {
document.body.classList.remove('efl-profile-dark-overlay');
dotcta.nextElementSibling.classList.add('hidden');
dotcta.setAttribute('aria-expanded', 'false');
setTimeout(() => {
dotcta.nextElementSibling.classList.remove('add-animation');
dotcta.focus();
}, 50);
}
}
});
}
if (select) {
select.addEventListener('change', event => {
const { target } = event;
sortby.querySelector('span').innerText = target.value;
sortBookmarkList(target);
});
}
});
document.addEventListener('click', e => {
if (
!(
e.target.closest('.efl-learner-profile-bookmark__list--manage') ||
e.target.closest('.efl-learner-profile__section--dot')
)
) {
document.body.classList.remove('efl-profile-dark-overlay');
bookmarkListSection.forEach(list => {
const tooltip = list.querySelector(
'.efl-learner-profile-bookmark__list--manage'
);
const dotcta = list.querySelector(
'.efl-learner-profile__section--dot'
);
if (tooltip) {
tooltip.classList.remove('add-animation');
dotcta.setAttribute('aria-expanded', 'false');
setTimeout(() => {
tooltip.classList.add('hidden');
}, 300);
}
});
}
});
}
};
const swithScreen = screen => {
const lightbox = document.querySelector(`#${DIALOG_ID}`);
const allSteps = lightbox.querySelectorAll('.steps');
const activeStep = lightbox.querySelector(`.${screen}`);
allSteps.forEach(steps => {
steps.classList.add('hidden');
});
activeStep.classList.remove('hidden');
};
function generateBookmarkSection(
listName,
listDesc,
articleLink,
sessionLink
) {
const bookmarkListCount = getBookmarkListCount();
const bookmarkHtml = `
<section class="efl-learner-profile__section bookmark-list efl-learner-profile-bookmark" data-behavior="create-bookmark-list" data-edit-bookmark-id="${bookmarkListCount}">
<div class="efl-learner-profile-bookmark__list">
<div class="efl-learner-profile__section--header">
<h3 class="bookmark-list">${listName}</h3>
<button aria-label="edit or delete bookmark of ${listName}" class="efl-learner-profile__section--dot"></button>
<div class="efl-learner-profile-bookmark__list--manage hidden">
<button class="edit-list" aria-label="edit bookmark list">Rename list</button>
<button class="delete-list" aria-label="delete bookmark list">Delete list</button>
</div>
</div>
<div class="efl-learner-profile__section--nocourse-copy no-bookmark-list">
This list is empty. To add content, check out our <a href="${articleLink}">articles</a> and <a href="${sessionLink}">sessions</a> pages.
</div>
</div>
</section>`;
/* const wrapper = document.createElement('div');
const childEle = container.querySelector('*:nth-child(3)');
wrapper.innerHTML= bookmarkHtml;
console.log(wrapper.firstChild); */
container.insertAdjacentHTML('beforeend', bookmarkHtml);
// container.insertBefore(wrapper.innerHTML, container.querySelector('*:nth-child(3)'));
// container.insertBefore(wrapper.firstChild, container.nextSibling);
}
const cardGridStyle = () => {
bookmarkList.forEach(list => {
const item = list.querySelector('.efl-learner-profile-bookmark__items');
if (item) {
const image = item.querySelectorAll(
'.efl-learner-profile-bookmark__items--img'
).length;
item.className = 'efl-learner-profile-bookmark__items';
item.classList.add(`card-${image}`);
}
});
};
async function updateBookmarkListCallback(updateBookmark) {
// console.log(oldBookmark);
const url = `/Personalisation/UpdateUserBookmark`;
// eslint-disable-next-line compat/compat
const response = await fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Cache-Control': 'no-cache',
Pragma: 'no-cache',
Expires: '0',
},
body: JSON.stringify(updateBookmark),
});
return response.json();
}
function updateBookmarkList(
listName,
listDesc,
type,
editId,
removeItemId,
articleLink,
sessionLink,
saveButton
) {
try {
let oldBookmark = [];
let updateBookmark = [];
if (saveButton) {
saveButton.classList.add('loading-bar');
saveButton.setAttribute('aria-disabled', 'true');
}
if (type === 'add') {
const newBookmarkDetail = `{
"tag": "${listName}",
"description": "${listDesc}",
"bookmarks": []
}`;
// console.log(oldBookmark);
if (localStorage.getItem('bookmarkListData')) {
oldBookmark = JSON.parse(localStorage.getItem('bookmarkListData'));
updateBookmark = JSON.parse(
localStorage.getItem('bookmarkListUpdateData')
);
const bookmarLength = oldBookmark.eflBookmarks.length;
oldBookmark.eflBookmarks[bookmarLength] = JSON.parse(
newBookmarkDetail
);
updateBookmark.eflBookmarks[bookmarLength] = JSON.parse(
newBookmarkDetail
);
} else {
const defaultBookmark = `{
"bookmark": {
"id": "${fanid}",
"eflBookmarks": [${newBookmarkDetail}]
}
}`;
oldBookmark = JSON.parse(defaultBookmark);
updateBookmark = JSON.parse(defaultBookmark);
}
} else if (type === 'update') {
oldBookmark = JSON.parse(localStorage.getItem('bookmarkListData'));
updateBookmark = JSON.parse(
localStorage.getItem('bookmarkListUpdateData')
);
oldBookmark.eflBookmarks[editId].tag = listName;
updateBookmark.eflBookmarks[editId].tag = listName;
} else if (type === 'delete') {
oldBookmark = JSON.parse(localStorage.getItem('bookmarkListData'));
updateBookmark = JSON.parse(
localStorage.getItem('bookmarkListUpdateData')
);
oldBookmark.eflBookmarks.splice(editId, 1);
updateBookmark.eflBookmarks.splice(editId, 1);
} else if (type === 'remove-bookmark') {
oldBookmark = JSON.parse(localStorage.getItem('bookmarkListData'));
updateBookmark = JSON.parse(
localStorage.getItem('bookmarkListUpdateData')
);
// console.log(oldBookmark);
oldBookmark.eflBookmarks[editId].bookmarks.forEach((e, i) => {
if (e.pageId === removeItemId) {
oldBookmark.eflBookmarks[editId].bookmarks.splice(i, 1);
}
});
updateBookmark.eflBookmarks[editId].bookmarks.forEach((e, i) => {
if (e.pageId === removeItemId) {
updateBookmark.eflBookmarks[editId].bookmarks.splice(i, 1);
}
});
updateBookmark.eflBookmarks[editId].bookmarks.filter(
e => e.pageId !== removeItemId
);
// console.log(oldBookmark);
}
// isAjaxRuning = true;
updateBookmarkListCallback(
updateBookmark
// eslint-disable-next-line complexity
).then(response => {
if (
response &&
response.FAIWFResponse &&
response.FAIWFResponse.IsAbusive
) {
if (type === 'add' || type === 'update') {
swithScreen('step5');
saveButton.classList.remove('loading-bar');
saveButton.setAttribute('aria-disabled', 'false');
}
} else if (response && !response.FAIWFResponse && response.Error) {
if (type === 'add' || type === 'update') {
swithScreen('step6');
saveButton.classList.remove('loading-bar');
saveButton.setAttribute('aria-disabled', 'false');
}
} else {
localStorage.setItem('bookmarkListData', JSON.stringify(oldBookmark));
localStorage.setItem(
'bookmarkListUpdateData',
JSON.stringify(updateBookmark)
);
if (type === 'add') {
generateBookmarkSection(
listName,
listDesc,
articleLink,
sessionLink
);
toolTipEvent();
removeLightBox();
} else if (type === 'update') {
const section = document.querySelector(
`.efl-learner-profile-bookmark[data-edit-bookmark-id="${editId}"]`
);
const viewDetails = section.querySelector(
'.efl-learner-profile-bookmark__details'
);
section.querySelector('h3.bookmark-list').innerText = listName;
if (viewDetails) {
viewDetails.querySelector(
'h3.bookmark-list'
).innerText = listName;
}
removeLightBox();
} else if (type === 'delete') {
const section = document.querySelector(
`.efl-learner-profile-bookmark[data-edit-bookmark-id="${editId}"]`
);
section.remove();
// reset edit section id
const bookmarkSection = container.querySelectorAll(
'.efl-learner-profile-bookmark'
);
bookmarkSection.forEach((list, index) => {
if (index) {
list.setAttribute('data-edit-bookmark-id', index - 1);
}
});
toolTipEvent();
removeLightBox();
} else if (type === 'remove-bookmark') {
const bookmarkListSection = container.querySelector(
`.efl-learner-profile-bookmark[data-edit-bookmark-id="${editId}"]`
);
const bookmarkListItem = bookmarkListSection.querySelector(
`.bookmark-item[data-bookmark-page-id="${removeItemId}"]`
);
const bookmarkImg = bookmarkListSection.querySelector(
`.efl-learner-profile-bookmark__items--img[data-bookmark-page-id="${removeItemId}"]`
);
bookmarkListItem.classList.add('removing');
setTimeout(() => {
bookmarkListItem.remove();
if (bookmarkImg) {
bookmarkImg.remove();
// eslint-disable-next-line no-unused-vars
cardGridStyle();
}
}, 400);
}
}
});
} catch (e) {
if (saveButton) {
saveButton.classList.remove('loading-bar');
saveButton.setAttribute('aria-disabled', 'false');
}
throw new Error('Unable to update bookmark data ::', e);
}
}
const findPos = obj => {
// eslint-disable-next-line no-unused-vars
let curleft = 0;
let curtop = 0;
if (obj.offsetParent) {
curleft = obj.offsetLeft;
curtop = obj.offsetTop;
// eslint-disable-next-line no-param-reassign, no-cond-assign
while ((obj = obj.offsetParent)) {
curleft += obj.offsetLeft;
curtop += obj.offsetTop;
}
}
return curtop;
};
const checkNameExist = name => {
const bookmarkLists = localStorage.getItem('bookmarkListData');
if (bookmarkLists) {
const bookmarkListJson = JSON.parse(bookmarkLists);
const bookmarkJson = [];
bookmarkListJson.eflBookmarks.forEach(bookmark => {
bookmarkJson.push(bookmark.tag);
});
if (bookmarkJson.includes(name)) {
return true;
}
}
return false;
};
const removeBookmarkListItem = (bookmarkPageId, editBookmarkId) => {
updateBookmarkList(
'',
'',
'remove-bookmark',
editBookmarkId,
bookmarkPageId,
'',
'',
''
);
};
const openLightbox = (focusBtn, option, title, updateId) => {
// Create the lightbox
const lightboxContainer = document.createElement('div');
if (document.getElementById(DIALOG_ID)) {
return;
}
lightboxContainer.innerHTML = generateLightBox(
{
labelId: focusBtn.getAttribute('id'),
},
option
);
document.body.appendChild(lightboxContainer);
// eslint-disable-next-line no-new
new Dialog({
dialogId: DIALOG_ID,
focusAfterClosed: focusBtn,
focusFirst: 'close',
closeCallBack: () => removeLightBox(),
});
const createList = lightboxContainer.querySelector('.create-new-bookmark');
const cancelList = lightboxContainer.querySelector(
'.cancel-create-bookmark'
);
const bookmarkName = lightboxContainer.querySelector('.bookmark-list-name');
const bookmarkDescCta = lightboxContainer.querySelector(
'.bookmark-add-desc'
);
const editBookmarkCta = lightboxContainer.querySelector(
'.edit-bookmark-name'
);
const errorBookmarkCta = lightboxContainer.querySelector(
'.error-bookmark-name'
);
const serverErrorBookmarkCta = lightboxContainer.querySelector(
'.server-error-bookmark'
);
const deleteBookmarkCta = lightboxContainer.querySelector(
'.delete-bookmark-list'
);
const cancelDeleteCta = lightboxContainer.querySelector(
'.cancel-bookmark-delete'
);
const updateBookmarkCta = lightboxContainer.querySelector(
'.edit-bookmark-list'
);
const removeBookmarkCta = lightboxContainer.querySelector(
'.remove-bookmark-item'
);
const cancelRemoveBookmarkCta = lightboxContainer.querySelector(
'.cancel-remove-bookmark'
);
const bookmarkDesc = lightboxContainer.querySelector(
'.bookmark-desc-wrapper'
);
const { addText, cancelText } = bookmarkDescCta.dataset;
const listName = lightboxContainer.querySelector('.bookmark-list-name');
const listCount = lightboxContainer.querySelector(
'.bookmark-list-name-count'
);
const listDesc = lightboxContainer.querySelector('.bookmark-list-desc');
const listDescCount = lightboxContainer.querySelector(
'.bookmark-list-desc-count'
);
const popupForm = lightboxContainer.querySelector(
'.efl-learner-profile-bookmark__popup'
);
const articleLink = lightboxContainer.querySelector(
'.bookmark-list-article-link'
).value;
const sessionLink = lightboxContainer.querySelector(
'.bookmark-list-session-link'
).value;
bookmarkName.value = title;
bookmarkName.focus();
popupForm.setAttribute('data-edit-id', updateId);
if (bookmarkDescCta) {
bookmarkDescCta.addEventListener('click', e => {
e.preventDefault();
bookmarkDesc.classList.toggle('hidden');
if (bookmarkDesc.classList.contains('hidden')) {
bookmarkDescCta.innerText = addText;
bookmarkDescCta.ariaLabel = `${addText} button`;
} else {
bookmarkDescCta.innerText = cancelText;
bookmarkDescCta.ariaLabel = `${cancelText} button`;
listDesc.value = '';
}
});
bookmarkDescCta.addEventListener('keydown', event => {
if (event.keyCode === 13) {
event.preventDefault();
bookmarkDescCta.click();
}
});
}
listName.addEventListener('input', e => {
listCount.innerHTML = `${e.target.value.length}`;
});
listName.addEventListener('keydown', event => {
if (event.shiftKey && event.keyCode === 9) {
event.preventDefault();
}
});
listDesc.addEventListener('input', e => {
listDescCount.innerHTML = `${e.target.value.length}`;
});
createList.addEventListener('click', e => {
e.preventDefault();
if (e.target.getAttribute('aria-disabled') === 'true') {
return;
}
const name = listName.value;
if (checkNameExist(name)) {
swithScreen('step2');
} else {
updateBookmarkList(
name,
listDesc.value,
'add',
0,
0,
articleLink,
sessionLink,
createList
);
}
createBookmark.focus();
});
updateBookmarkCta.addEventListener('click', e => {
e.preventDefault();
if (e.target.getAttribute('aria-disabled') === 'true') {
return;
}
const { editId } = popupForm.dataset;
updateBookmarkList(
listName.value,
listDesc.value,
'update',
editId,
0,
'',
'',
updateBookmarkCta
);
createBookmark.focus();
});
updateBookmarkCta.addEventListener('keydown', event => {
if (event.shiftKey && event.keyCode === 9) {
// empty
} else if (event.keyCode === 9) {
event.preventDefault();
bookmarkName.focus();
} else if (event.keyCode === 13) {
updateBookmarkCta.click();
}
});
editBookmarkCta.addEventListener('click', e => {
e.preventDefault();
swithScreen('step1');
});
errorBookmarkCta.addEventListener('click', e => {
e.preventDefault();
swithScreen('step1');
});
serverErrorBookmarkCta.addEventListener('click', e => {
e.preventDefault();
swithScreen('step1');
});
cancelList.addEventListener('click', e => {
e.preventDefault();
removeLightBox();
createBookmark.focus();
});
cancelList.addEventListener('keydown', event => {
if (event.shiftKey && event.keyCode === 9) {
// empty
} else if (event.keyCode === 9) {
event.preventDefault();
listName.focus();
} else if (event.keyCode === 13) {
cancelList.click();
}
});
editBookmarkCta.addEventListener('click', e => {
e.preventDefault();
swithScreen('step1');
});
if (deleteBookmarkCta) {
deleteBookmarkCta.focus();
}
deleteBookmarkCta.addEventListener('click', e => {
e.preventDefault();
const { editId } = popupForm.dataset;
updateBookmarkList(
listName,
listDesc,
'delete',
editId,
0,
'',
'',
deleteBookmarkCta
);
createBookmark.focus();
});
deleteBookmarkCta.addEventListener('keydown', event => {
if (event.shiftKey && event.keyCode === 9) {
event.preventDefault();
} else if (event.keyCode === 13) {
deleteBookmarkCta.click();
}
});
cancelDeleteCta.addEventListener('click', e => {
e.preventDefault();
removeLightBox();
createBookmark.focus();
});
cancelDeleteCta.addEventListener('keydown', event => {
if (event.keyCode === 9) {
event.preventDefault();
deleteBookmarkCta.focus();
} else if (event.keyCode === 13) {
event.preventDefault();
cancelDeleteCta.click();
}
});
removeBookmarkCta.focus();
removeBookmarkCta.addEventListener('click', e => {
e.preventDefault();
console.log(title);
console.log(updateId);
removeBookmarkListItem(title, updateId);
removeLightBox();
backCta.focus();
});
removeBookmarkCta.addEventListener('keydown', event => {
if (event.shiftKey && event.keyCode === 9) {
event.preventDefault();
} else if (event.keyCode === 13) {
removeBookmarkCta.click();
}
});
cancelRemoveBookmarkCta.addEventListener('click', e => {
e.preventDefault();
removeLightBox();
backCta.focus();
});
cancelRemoveBookmarkCta.addEventListener('keydown', event => {
if (event.keyCode === 9) {
event.preventDefault();
removeBookmarkCta.focus();
} else if (event.keyCode === 13) {
cancelRemoveBookmarkCta.click();
}
});
};
if (createBookmark) {
createBookmark.addEventListener('click', e => {
e.preventDefault();
openLightbox(createBookmark, 'create', '', '');
});
}
if (viewList) {
viewList.forEach(viewListCta => {
viewListCta.addEventListener('click', e => {
e.preventDefault();
const detail = e.target.closest('.efl-learner-profile__section');
const bookmarkContainer = container.querySelectorAll(
'.efl-learner-profile-bookmark'
);
bookmarkContainer.forEach(list => {
list.classList.add('hidden');
});
e.target
.closest('.efl-learner-profile__section')
.classList.remove('hidden');
detail
.querySelector('.efl-learner-profile-bookmark__list')
.classList.add('hidden');
detail
.querySelector('.efl-learner-profile-bookmark__details')
.classList.remove('hidden');
container.classList.add('bookmark-back');
backCta.classList.remove('hidden');
window.scroll(0, findPos(backCta) - 115);
setTimeout(() => {
backCta.focus();
}, 50);
});
});
}
if (backCta) {
backCta.addEventListener('click', e => {
e.preventDefault();
container.classList.remove('bookmark-back');
backCta.classList.add('hidden');
bookmarkList.forEach(list => {
list.classList.remove('hidden');
if (!list.classList.contains('create-bookmark-list')) {
if (list.querySelector('.efl-learner-profile-bookmark__list')) {
list
.querySelector('.efl-learner-profile-bookmark__list')
.classList.remove('hidden');
}
if (list.querySelector('.efl-learner-profile-bookmark__details')) {
list
.querySelector('.efl-learner-profile-bookmark__details')
.classList.add('hidden');
}
}
});
window.scroll(0, 0);
createBookmark.focus();
});
backCta.addEventListener('keydown', event => {
if (event.keyCode === 13) {
backCta.click();
}
});
}
cardGridStyle();
toolTipEvent();
removeBookmarkItemEvent();
};
.efl-learner-profile-bookmark {
h4 {
@extend .efl-heading-4;
display: flex;
align-items: center;
margin-bottom: 1.6rem;
font-size: 2.4rem;
&.create-bookmark-list::before {
content: '';
background-image: url('./assets/images/profile-icons/plus-icon-red.svg');
width: 1.8rem;
height: 1.8rem;
background-size: contain;
background-repeat: no-repeat;
display: inline-block;
margin-right: 0.8rem;
}
}
.efl-learner-profile__section--nocourse-copy {
&::before {
display: none;
}
&.no-bookmark-list {
&::before {
display: flex;
margin-bottom: 1.6rem;
}
a {
color: $blue-accent3;
text-decoration: underline;
font-weight: 700;
}
}
}
&__popup {
max-width: 70.6rem;
width: calc(100% - 1.6rem);
margin: 0 auto;
position: relative;
h4 {
@extend .efl-heading-3;
display: flex;
align-items: center;
margin-bottom: 1.6rem;
font-size: 2.4rem;
line-height: 3rem;
&.exist {
letter-spacing: 0.16em;
text-transform: uppercase;
font-size: 1.6rem;
line-height: 2.4rem;
font-weight: 700;
&::before {
content: '';
background: url('./assets/images/profile-icons/alert.svg') no-repeat
center;
width: 1.8rem;
height: 1.8rem;
background-repeat: no-repeat;
display: inline-block;
margin-right: 0.8rem;
}
}
}
&--copy {
@extend .efl-p-medium;
margin-bottom: 0.8rem;
&::before {
display: none;
}
}
.lightbox-overlay__close {
top: 2.4rem;
right: 4rem;
width: 4rem;
height: 4rem;
display: none;
padding: 0;
&::before {
background: url('./assets/images/search-mechanic-modal-close.svg')
no-repeat center center;
height: 4rem;
width: 4rem;
background-size: contain;
left: 0;
}
}
&--form {
display: flex;
flex-direction: column;
gap: 0.8rem;
label {
@extend .efl-p-medium;
font-weight: 700;
color: $blue;
display: flex;
justify-content: space-between;
align-items: center;
}
p {
font-size: 1.4rem;
line-height: 1.4rem;
color: $color-interface-light;
font-weight: 400;
display: flex;
justify-content: flex-end;
}
input,
textarea {
@extend .efl-p-small;
padding: 1rem 1.6rem;
color: $blue;
border: 2px solid $light-blue;
border-radius: 2px;
width: 100%;
}
textarea {
height: 9.5rem;
resize: none;
}
.bookmark-add-desc {
@extend .efl-p-1;
color: $color-interface-light;
cursor: pointer;
}
.cta {
margin-top: 0.8rem !important;
}
}
.cancel-bookmark-delete {
margin-top: 1.6rem;
}
}
.efl-learner-profile__section--dot {
padding: 0 0.8rem;
height: 2.4rem;
border: none;
background: none;
cursor: pointer;
&::before {
content: '';
background-image: url('./assets/images/profile-icons/3dot.svg');
width: 0.4rem;
height: 2.6rem;
background-size: contain;
background-repeat: no-repeat;
display: block;
}
}
&__list {
position: relative;
&--manage {
position: fixed;
display: flex;
background: white;
flex-direction: column;
border-radius: 2.4rem 2.4rem 0 0;
padding: 3.2rem;
bottom: -30rem;
left: 0;
width: 100%;
z-index: 110;
transition: bottom 0.3s ease-in-out;
&.add-animation {
bottom: 0;
}
&::before {
content: '';
position: absolute;
width: 6.4rem;
height: 0.3rem;
background-color: $color-interface-light;
left: calc(50% - 3.2rem);
top: 0.8rem;
}
/* stylelint-disable no-descending-specificity */
& > button {
@extend .efl-p-medium;
font-weight: 700;
color: $blue;
text-decoration: none;
border: none;
background: none;
text-align: unset;
padding: 0;
cursor: pointer;
&::after {
content: '';
border-bottom: 1px solid $grey-light;
margin-bottom: 1.6rem;
width: 100%;
display: flex;
padding-top: 1.6rem;
}
&:last-child {
&::after {
display: none;
}
}
}
}
}
&__tags {
display: flex;
gap: 0.8rem;
& > span {
border-radius: 10rem;
background-color: $white;
border: 0.2rem solid $light-blue;
padding: 0.2rem 1.2rem;
font-family: $text-font-ef;
font-size: 1.2rem;
font-style: normal;
font-weight: 400;
line-height: 1.7rem;
color: $blue;
}
}
&__items {
margin: 1.6rem 0;
display: grid;
&.card-1 {
grid-template-columns: auto;
}
&.card-2 {
grid-template-columns: 50% 50%;
}
&.card-3 {
grid-template-columns: 33.3% 33.3% 33.3%;
}
&--img {
width: auto;
height: 10rem;
max-width: unset;
border: 1px solid $white;
overflow: hidden;
background: url(./assets/images/new-card-placeholder-ef.jpg) no-repeat
center;
background-size: cover;
img {
width: 100%;
max-width: unset;
height: 100%;
object-fit: cover;
object-position: center;
}
}
}
.cta {
&.view-bookmark-list {
margin-top: 1.6rem;
}
}
.efl-learner-profile__section--sort {
position: relative;
min-width: 165px;
display: flex;
justify-content: flex-end;
&__link {
@extend .efl-p-medium;
color: $blue;
text-decoration: none;
display: flex;
border: 2px solid transparent;
border-radius: 4px;
padding: 3px 10px 3px 18px;
height: 30px;
line-height: 24px;
align-items: center;
background: none;
cursor: pointer;
&::after {
content: '';
background-image: url('./assets/images/profile-icons/sortby.svg');
width: 1.6rem;
height: 1.1rem;
background-size: cover;
background-repeat: no-repeat;
display: block;
margin: 0.2rem 0 0 0.8rem;
}
&:hover {
border: 2px solid $light-blue;
}
}
&__list {
&[aria-expanded='false'] {
display: none;
}
& ul {
& li {
@extend .efl-p-medium;
}
}
}
&__select {
@extend .efl-p-medium;
padding: 0.8rem 1.6rem;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
width: 100%;
opacity: 0;
position: absolute;
top: 0;
option {
padding: 0.8rem 1.6rem;
}
&.active {
opacity: 1;
}
}
}
&__details {
&--list {
display: flex;
flex-direction: column;
gap: 1.6rem;
.bookmark-item {
display: grid;
align-items: center;
grid-template-columns: auto 4rem;
border-top: 1px solid $grey-light;
padding-top: 1.6rem;
gap: 3rem;
opacity: 1;
transition: all 0.3s linear;
&.removing {
opacity: 0.1;
}
&__link {
text-decoration: none;
display: flex;
gap: 1.6rem;
&--img {
flex-shrink: 0;
height: 6.2rem;
width: 6.6rem;
overflow: hidden;
background: url(./assets/images/new-card-placeholder-ef.jpg)
no-repeat center;
background-size: cover;
img {
width: 100%;
height: 100%;
object-fit: cover;
}
}
&--content {
display: flex;
justify-content: center;
flex-direction: column;
row-gap: 0.6rem;
position: relative;
p {
font-family: var(--brand-text--font-family);
font-size: 1.2rem;
line-height: 1.2rem;
letter-spacing: 0.08em;
color: $red;
text-transform: uppercase;
}
h5 {
color: $blue;
font-size: 1.8rem;
line-height: 2.4rem;
letter-spacing: 0.02em;
margin-bottom: 0.4rem;
@include text-limit(2);
}
}
}
&__bookmarkflag {
background: $light-blue
url('./assets/images/profile-icons/bookmark.svg') no-repeat center;
width: 3.2rem;
height: 3.2rem;
padding: 0;
border-radius: 50%;
border: none;
cursor: pointer;
}
}
}
}
&__back {
background-color: $white;
padding: 1.3rem 2.6rem;
margin: 0 -1.6rem;
& > button {
@extend .efl-p-medium;
color: $blue;
text-decoration: none;
display: flex;
align-items: center;
background: none;
border: none;
padding: 0;
cursor: pointer;
&::before {
content: '';
background: url('./assets/images/arrow-back.svg') no-repeat center;
width: 1.4rem;
height: 0.9rem;
margin-right: 1.5rem;
}
}
}
@media screen and (min-width: $mq-medium) {
h4 {
font-size: 2.8rem;
}
&__popup {
h4 {
font-size: 2.8rem;
}
.lightbox-overlay__close {
display: flex;
}
}
&__list {
position: relative;
h3 {
margin-bottom: 1.6rem;
}
&--manage {
position: absolute;
right: 0;
box-shadow: 0 0 16px rgba(91, 104, 133, 0.36);
padding: 4rem;
top: 38px;
transform: translateX(43%);
min-width: 21.2rem;
width: initial;
left: initial;
bottom: initial;
border-radius: 0;
&::before {
content: '';
border-left: 15px solid transparent;
border-right: 15px solid transparent;
border-bottom: 15px solid white;
width: 30px;
position: absolute;
top: -15px;
left: calc(50% - 10px);
background-color: transparent;
height: auto;
}
}
}
&__tags {
& > span {
padding: 0.6rem 1.6rem;
}
}
&__items {
&--img {
height: 18.2rem;
}
}
&__details {
&--list {
.bookmark-item {
&__link {
&--img {
width: 14rem;
height: 8.5rem;
}
&--content {
p {
font-size: 1.6rem;
line-height: 2rem;
}
h5 {
font-size: 22px;
line-height: 24px;
}
}
}
&__bookmarkflag {
width: 4rem;
height: 4rem;
}
}
}
}
.efl-learner-profile__section--sort {
&__select {
display: none;
}
&__list {
border: 1px solid $grey-light;
box-sizing: border-box;
border-radius: 0.4rem;
box-shadow: 0 0 16px rgba(91, 104, 133, 0.36);
position: absolute;
background-color: $white;
z-index: 1;
padding: 4rem;
margin-top: 4.5rem;
min-width: 21.2rem;
transform: translateX(38%);
&::before {
content: '';
border-left: 20px solid transparent;
border-right: 20px solid transparent;
border-bottom: 20px solid white;
width: 40px;
position: absolute;
top: -20px;
left: calc(50% - 15px);
background-color: transparent;
height: auto;
}
& > ul {
list-style: none;
margin: 0;
padding: 0;
& > li {
color: $black;
font-weight: 700;
cursor: pointer;
display: flex;
align-items: center;
padding-bottom: 1.6rem;
margin-bottom: 1.6rem;
border-bottom: 1px solid $grey-light;
&::before {
content: '';
background: url('./assets/images/radio.svg') no-repeat center;
width: 2.4rem;
height: 2.4rem;
display: flex;
margin-right: 0.9rem;
}
&.active {
&::before {
background-image: url('./assets/images/radio-checked.svg');
}
}
&:last-child {
padding-bottom: 0;
margin-bottom: 0;
border-bottom: none;
}
}
}
&[aria-expanded='false'] {
display: none;
}
}
}
&__back {
border-radius: 0.8rem;
cursor: pointer;
margin: 0;
}
}
}
#manage-bookmark-dialog .efl-learner-profile {
max-width: 70.6rem;
width: calc(100% - 1.6rem);
}
#manage-bookmark-dialog .efl-learner-profile__section--nocourse-copy {
&.no-border {
&::before {
display: none;
}
}
}
<section class="efl-learner-profile__section {{modifier}} efl-learner-profile-bookmark" data-behavior="create-bookmark-list" data-edit-bookmark-id="{{edit-bookmark-id}}">
{{#if create-bookmark-list}}
<div class="efl-learner-profile__section--header">
<h4 class="{{modifier}}">{{heading}}</h4>
</div>
<div class="efl-learner-profile__section--nocourse-copy">
Get organised and sort your bookmarked content into separate lists.
</div>
<button class="cta cta--primary create-new-bookmark-list" id="create-new-bookmark-list" aria-label="create list bookmark">Create list</button>
{{render '@efl-learner-profile-create-bookmark'}}
{{/if}}
{{#unless create-bookmark-list}}
<div class="efl-learner-profile-bookmark__list">
<div class="efl-learner-profile__section--header">
<h3 class="{{modifier}}">{{heading}}</h3>
<button aria-label="edit or delete bookmark of {{heading}}" class="efl-learner-profile__section--dot" aria-expanded="false"></button>
<div class="efl-learner-profile-bookmark__list--manage hidden">
<button class="edit-list" aria-label="edit list bookmark">Rename list</button>
{{#unless is-default-list}}
<button class="delete-list" aria-label="delete list bookmark">Delete list</button>
{{/unless}}
</div>
</div>
{{#unless isEmptyList}}
<div class="efl-learner-profile-bookmark__tags">
<span>1 Articles</span>
<span>1 Sessions</span>
</div>
<div class="efl-learner-profile-bookmark__items">
{{#each bookmark-img}}
<div class="efl-learner-profile-bookmark__items--img" data-bookmark-page-id="08619b1b8cc34f5a95eb809ec15837ad">
<img src="{{img}}" alt="" loading="lazy" />
</div>
{{/each}}
</div>
{{#unless isMultiList}}
<div class="efl-learner-profile__section--nocourse-copy">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla finibus, diam vel vehicula iaculis, risus nunc dictum nis.
</div>
{{/unless}}
<button class="cta cta--primary view-bookmark-list" aria-label="view list bookmark of {{heading}}">view list</button>
{{/unless}}
{{#if isEmptyList}}
<div class="efl-learner-profile__section--nocourse-copy no-bookmark-list">
This list is empty. To add content, check out our <a>articles</a> and <a>sessions</a> pages.
</div>
{{/if}}
</div>
{{#unless isEmptyList}}
<div class="efl-learner-profile-bookmark__details hidden">
<div class="efl-learner-profile__section--header">
<h3 class="{{modifier}}">{{heading}}</h3>
<div class="efl-learner-profile__section--sort">
<button aria-label="sort bookmark list" class="efl-learner-profile__section--sort__link">Sort by: <span> All</span></button>
<div aria-expanded="false" role="list" class="efl-learner-profile__section--sort__list">
<ul>
<li tabindex="0" data-value="All">All</li>
<li tabindex="0" data-value="Articles">Articles</li>
<li tabindex="0" data-value="Sessions">Sessions</li>
</ul>
</div>
<select class="efl-learner-profile__section--sort__select">
<option value="All">All</option>
<option value="Articles">Articles</option>
<option value="Sessions">Sessions</option>
</select>
</div>
</div>
<div class="efl-learner-profile-bookmark__details--list">
<div class="bookmark-item" data-bookmark-page-id="08619b1b8cc34f5a95eb809ec15837ad">
<a class="bookmark-item__link">
<div class="bookmark-item__link--img">
<img src="/assets/example-content/news-horizontal-1.jpg" alt="" loading="lazy" />
</div>
<div class="bookmark-item__link--content">
<p>Article</p>
<h5>How to create a great matchday experience</h5>
</div>
</a>
<button class="bookmark-item__bookmarkflag" aria-label="bookmark flag"></button>
</div>
<div class="bookmark-item" data-bookmark-page-id="8ed119426dd847cbb99a4b22baba296e">
<a class="bookmark-item__link">
<div class="bookmark-item__link--img">
<img src="/assets/example-content/news-horizontal-1.jpg" alt="" loading="lazy" />
</div>
<div class="bookmark-item__link--content">
<p>Article</p>
<h5>How to create a great matchday experience</h5>
</div>
</a>
<button class="bookmark-item__bookmarkflag" aria-label="bookmark flag"></button>
</div>
</div>
</div>
{{/unless}}
{{/unless}}
</section>