<div class="efl-learner-profile__section efl-learner-profile-bookmark__popup hidden">
    <div class="steps step1">
        <div class="efl-learner-profile__section--header">
            <h4 class="create-bookmark-list" data-create-heading="Create list" data-edit-heading="Rename list">Create list</h4>
        </div>
        <div class="efl-learner-profile-bookmark__popup--copy" data-create-text="Give your list a name, then select 'create'." data-update-text="Give your list a name, then select 'save'.">
            Give your list a name, then select 'create'.
        </div>
        <div class="efl-learner-profile-bookmark__popup--form">
            <label>List name</label>
            <input type="text" placeholder="Prompt text" maxlength="100" class="bookmark-list-name" aria-label="list name" />
            <p><span class="bookmark-list-name-count">0</span>/100</p>
            <div class="bookmark-desc-wrapper hidden">
                <label>List description</label>
                <textarea placeholder="Prompt text" maxlength="500" class="bookmark-list-desc" aria-label="list description"></textarea>
                <p><span class="bookmark-list-desc-count">0</span>/500</p>
            </div>
            <div class="bookmark-add-desc" role="button" tabindex="0" data-add-text="Optional - add list description" data-cancel-text="Cancel adding list description" aria-label="Optional - add list description">Optional - add list description</div>
            <button class="cta cta--primary create-new-bookmark" aria-label="create new bookmark">
                <span>create</span>
                <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px" height="20px" viewBox="0 0 24 30" style="enable-background:new 0 0 50 50;" xml:space="preserve">
                    <rect x="0" y="10" width="4" height="10" fill="#fff" opacity="0.2">
                        <animate attributeName="opacity" attributeType="XML" values="0.2; 1; .2" begin="0s" dur="0.6s" repeatCount="indefinite"></animate>
                        <animate attributeName="height" attributeType="XML" values="10; 20; 10" begin="0s" dur="0.6s" repeatCount="indefinite"></animate>
                        <animate attributeName="y" attributeType="XML" values="10; 5; 10" begin="0s" dur="0.6s" repeatCount="indefinite"></animate>
                    </rect>
                    <rect x="8" y="10" width="4" height="10" fill="#fff" opacity="0.2">
                        <animate attributeName="opacity" attributeType="XML" values="0.2; 1; .2" begin="0.15s" dur="0.6s" repeatCount="indefinite"></animate>
                        <animate attributeName="height" attributeType="XML" values="10; 20; 10" begin="0.15s" dur="0.6s" repeatCount="indefinite"></animate>
                        <animate attributeName="y" attributeType="XML" values="10; 5; 10" begin="0.15s" dur="0.6s" repeatCount="indefinite"></animate>
                    </rect>
                    <rect x="16" y="10" width="4" height="10" fill="#fff" opacity="0.2">
                        <animate attributeName="opacity" attributeType="XML" values="0.2; 1; .2" begin="0.3s" dur="0.6s" repeatCount="indefinite"></animate>
                        <animate attributeName="height" attributeType="XML" values="10; 20; 10" begin="0.3s" dur="0.6s" repeatCount="indefinite"></animate>
                        <animate attributeName="y" attributeType="XML" values="10; 5; 10" begin="0.3s" dur="0.6s" repeatCount="indefinite"></animate>
                    </rect>
                </svg>
            </button>
            <button class="cta cta--primary edit-bookmark-list hidden" aria-label="save bookmark list">
                <span>save</span>
                <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px" height="20px" viewBox="0 0 24 30" style="enable-background:new 0 0 50 50;" xml:space="preserve">
                    <rect x="0" y="10" width="4" height="10" fill="#fff" opacity="0.2">
                        <animate attributeName="opacity" attributeType="XML" values="0.2; 1; .2" begin="0s" dur="0.6s" repeatCount="indefinite"></animate>
                        <animate attributeName="height" attributeType="XML" values="10; 20; 10" begin="0s" dur="0.6s" repeatCount="indefinite"></animate>
                        <animate attributeName="y" attributeType="XML" values="10; 5; 10" begin="0s" dur="0.6s" repeatCount="indefinite"></animate>
                    </rect>
                    <rect x="8" y="10" width="4" height="10" fill="#fff" opacity="0.2">
                        <animate attributeName="opacity" attributeType="XML" values="0.2; 1; .2" begin="0.15s" dur="0.6s" repeatCount="indefinite"></animate>
                        <animate attributeName="height" attributeType="XML" values="10; 20; 10" begin="0.15s" dur="0.6s" repeatCount="indefinite"></animate>
                        <animate attributeName="y" attributeType="XML" values="10; 5; 10" begin="0.15s" dur="0.6s" repeatCount="indefinite"></animate>
                    </rect>
                    <rect x="16" y="10" width="4" height="10" fill="#fff" opacity="0.2">
                        <animate attributeName="opacity" attributeType="XML" values="0.2; 1; .2" begin="0.3s" dur="0.6s" repeatCount="indefinite"></animate>
                        <animate attributeName="height" attributeType="XML" values="10; 20; 10" begin="0.3s" dur="0.6s" repeatCount="indefinite"></animate>
                        <animate attributeName="y" attributeType="XML" values="10; 5; 10" begin="0.3s" dur="0.6s" repeatCount="indefinite"></animate>
                    </rect>
                </svg>
            </button>
            <button class="cta cta--primary cancel-create-bookmark" aria-label="cancel create bookmark">cancel</button>
            <input type="hidden" class="bookmark-list-article-link" value="/articles">
            <input type="hidden" class="bookmark-list-session-link" value="/sessions">
        </div>
    </div>
    <div class="steps step2 hidden">
        <div class="efl-learner-profile__section--header">
            <h4 class="exist">List already exists</h4>
        </div>
        <div class="efl-learner-profile__section--nocourse-copy">
            The name you've chosen for this list already exists.
        </div>
        <button class="cta cta--primary  edit-bookmark-name" aria-label="edit name bookmark">Edit name</button>
    </div>
    <div class="steps step3 hidden">
        <div class="efl-learner-profile__section--header">
            <h4 class="exist">Delete list</h4>
        </div>
        <div class="efl-learner-profile__section--nocourse-copy no-border">
            Are you sure you want to delete this list?
        </div>
        <button class="cta cta--primary  delete-bookmark-list" aria-label="yes, delete this list">
            <span>Yes, delete this list</span>
            <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px" height="20px" viewBox="0 0 24 30" style="enable-background:new 0 0 50 50;" xml:space="preserve">
                <rect x="0" y="10" width="4" height="10" fill="#fff" opacity="0.2">
                    <animate attributeName="opacity" attributeType="XML" values="0.2; 1; .2" begin="0s" dur="0.6s" repeatCount="indefinite"></animate>
                    <animate attributeName="height" attributeType="XML" values="10; 20; 10" begin="0s" dur="0.6s" repeatCount="indefinite"></animate>
                    <animate attributeName="y" attributeType="XML" values="10; 5; 10" begin="0s" dur="0.6s" repeatCount="indefinite"></animate>
                </rect>
                <rect x="8" y="10" width="4" height="10" fill="#fff" opacity="0.2">
                    <animate attributeName="opacity" attributeType="XML" values="0.2; 1; .2" begin="0.15s" dur="0.6s" repeatCount="indefinite"></animate>
                    <animate attributeName="height" attributeType="XML" values="10; 20; 10" begin="0.15s" dur="0.6s" repeatCount="indefinite"></animate>
                    <animate attributeName="y" attributeType="XML" values="10; 5; 10" begin="0.15s" dur="0.6s" repeatCount="indefinite"></animate>
                </rect>
                <rect x="16" y="10" width="4" height="10" fill="#fff" opacity="0.2">
                    <animate attributeName="opacity" attributeType="XML" values="0.2; 1; .2" begin="0.3s" dur="0.6s" repeatCount="indefinite"></animate>
                    <animate attributeName="height" attributeType="XML" values="10; 20; 10" begin="0.3s" dur="0.6s" repeatCount="indefinite"></animate>
                    <animate attributeName="y" attributeType="XML" values="10; 5; 10" begin="0.3s" dur="0.6s" repeatCount="indefinite"></animate>
                </rect>
            </svg>
        </button>
        <button class="cta cta--primary  cancel-bookmark-delete" aria-label="no, return to list">no, return to list</button>
    </div>
    <div class="steps step4 hidden">
        <div class="efl-learner-profile__section--header">
            <h4 class="exist">Remove Bookmark</h4>
        </div>
        <div class="efl-learner-profile__section--nocourse-copy no-border">
            Are you sure you want to remove this bookmark?
        </div>
        <button class="cta cta--primary  remove-bookmark-item" aria-label="yes, remove bookmark item">Yes, remove this bookmark</button>
        <button class="cta cta--primary  cancel-remove-bookmark" aria-label="no, return to list">No, return to list</button>
    </div>
    <div class="steps step5 hidden">
        <div class="efl-learner-profile__section--header">
            <h4 class="exist">Innapropriate content</h4>
        </div>
        <div class="efl-learner-profile__section--nocourse-copy">
            Lorem ipsum dolor sit amet, consectetur adipiscing elit.
        </div>
        <button class="cta cta--primary  error-bookmark-name" aria-label="edit name error bookmark">Edit name</button>
    </div>
    <div class="steps step6 hidden">
        <div class="efl-learner-profile__section--header">
            <h4 class="exist">Error</h4>
        </div>
        <div class="efl-learner-profile__section--nocourse-copy">
            Lorem ipsum dolor sit amet, consectetur adipiscing elit.
        </div>
        <button class="cta cta--primary  server-error-bookmark" aria-label="try again bookmark">Try again</button>
    </div>
</div>

No notes defined.

{
  "heading": "Create a 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 this list",
    "additionalClass": "delete-bookmark-list"
  },
  "cancel-delete": {
    "href": "#",
    "copy": "No, return to list",
    "additionalClass": "cancel-bookmark-delete"
  },
  "remove-bookmark": {
    "href": "#",
    "copy": "Yes, remove this bookmark",
    "additionalClass": "remove-bookmark-item"
  },
  "cancel-remove": {
    "href": "#",
    "copy": "No, return to list",
    "additionalClass": "cancel-remove-bookmark"
  },
  "error-name": {
    "href": "#",
    "copy": "Edit name",
    "additionalClass": "error-bookmark-name"
  },
  "server-error": {
    "href": "#",
    "copy": "Try again",
    "additionalClass": "server-error-bookmark"
  }
}
  • Content:
    // eslint-disable-next-line no-unused-vars
    export default parentElement => {
      let bookmarkListLoad = false;
    
      async function getBookmarkListCallback() {
        const url = `/Personalisation/GetUserBookmark`;
        // eslint-disable-next-line compat/compat
        const response = await fetch(url, {
          headers: {
            'Content-Type': 'application/json',
            'Cache-Control': 'no-cache',
            Pragma: 'no-cache',
            Expires: '0',
          },
        });
    
        return response.json();
      }
      function jsonFormating(oldBookmark, updateBookmark, pageId) {
        const bookmarkedArr = [];
    
        oldBookmark.eflBookmarks.forEach((eflold, eflIndex) => {
          eflold.bookmarks.forEach((old, index) => {
            const newFormat = `{"pageId": "${old.pageId}"}`;
    
            // eslint-disable-next-line no-param-reassign
            updateBookmark.eflBookmarks[eflIndex].bookmarks[index] = JSON.parse(
              newFormat
            );
    
            if (pageId === old.pageId) {
              const bookmarkName = updateBookmark.eflBookmarks[eflIndex].tag;
    
              if (bookmarkName) {
                bookmarkedArr.push(bookmarkName);
              } else {
                bookmarkedArr.push('-');
              }
            }
          });
        });
    
        localStorage.setItem(
          'bookmarkListUpdateData',
          JSON.stringify(updateBookmark)
        );
    
        return bookmarkedArr;
      }
    
      function getBookmarkList() {
        if (bookmarkListLoad) {
          return;
        }
        try {
          getBookmarkListCallback().then(response => {
            bookmarkListLoad = true;
            if (response) {
              // console.log(response);
              localStorage.setItem('bookmarkListData', JSON.stringify(response));
              localStorage.setItem(
                'bookmarkListUpdateData',
                JSON.stringify(response)
              );
              const oldBookmark = response;
              const updateBookmark = oldBookmark;
              const inPageBookmark = document.querySelectorAll(
                '.bookmark-list--item'
              );
              let pageId;
              let bookmarkedArr = [];
    
              if (inPageBookmark) {
                const pageIdInterval = setInterval(() => {
                  if (localStorage.getItem('bookmarkPageDetails')) {
                    // console.log(localStorage.getItem('bookmarkPageDetails'));
                    const pageIdDetail = JSON.parse(
                      localStorage.getItem('bookmarkPageDetails')
                    );
    
                    pageId = pageIdDetail.itemId;
                    // console.log(pageId);
    
                    bookmarkedArr = jsonFormating(
                      oldBookmark,
                      updateBookmark,
                      pageId
                    );
    
                    // console.log(bookmarkedArr);
    
                    inPageBookmark.forEach(checkboxItem => {
                      const checkbox = checkboxItem.querySelector(
                        'input[type=checkbox]'
                      );
    
                      if (
                        bookmarkedArr.find(val => val === checkbox.value) ||
                        bookmarkedArr.find(
                          val =>
                            val === '-' &&
                            checkbox.value.toLowerCase() === 'my bookmark list'
                        )
                      ) {
                        // eslint-disable-next-line no-param-reassign
                        checkbox.checked = true;
                      } else {
                        // eslint-disable-next-line no-param-reassign
                        checkbox.checked = false;
                        checkbox.removeAttribute('checked');
                      }
                    });
    
                    clearInterval(pageIdInterval);
                  }
                }, 200);
              } else {
                bookmarkedArr = jsonFormating(oldBookmark, updateBookmark, pageId);
              }
              // console.log(localStorage.getItem("bookmarkListData"));
            }
          });
        } catch (e) {
          throw new Error('Unable to get bookmark list data ::', e);
        }
      }
    
      getBookmarkList();
    };
    
  • URL: /components/raw/efl-learner-profile-create-bookmark/efl-learner-profile-create-bookmark.js
  • Filesystem Path: src/library/components/efl-learner-profile-create-bookmark/efl-learner-profile-create-bookmark.js
  • Size: 3.9 KB
<div class="efl-learner-profile__section efl-learner-profile-bookmark__popup hidden">
    <div class="steps step1">
        <div class="efl-learner-profile__section--header">
            <h4 class="create-bookmark-list"  data-create-heading="Create list" data-edit-heading="Rename list">Create list</h4>
        </div>
        <div class="efl-learner-profile-bookmark__popup--copy" data-create-text="Give your list a name, then select 'create'." data-update-text="Give your list a name, then select 'save'.">
            Give your list a name, then select 'create'.
        </div>
        <div class="efl-learner-profile-bookmark__popup--form">
            <label>List name</label>
            <input type="text" placeholder="Prompt text" maxlength="100" class="bookmark-list-name" aria-label="list name" />
            <p><span class="bookmark-list-name-count">0</span>/100</p>
            <div class="bookmark-desc-wrapper hidden">
                <label>List description</label>
                <textarea placeholder="Prompt text" maxlength="500" class="bookmark-list-desc" aria-label="list description"></textarea>
                <p><span class="bookmark-list-desc-count">0</span>/500</p>
            </div>
            <div class="bookmark-add-desc" role="button" tabindex="0" data-add-text="Optional - add list description" data-cancel-text="Cancel adding list description" aria-label="Optional - add list description">Optional - add list description</div>
            <button class="cta cta--primary create-new-bookmark" aria-label="create new bookmark">
                <span>create</span>
                <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px" height="20px" viewBox="0 0 24 30" style="enable-background:new 0 0 50 50;" xml:space="preserve">
                    <rect x="0" y="10" width="4" height="10" fill="#fff" opacity="0.2">
                    <animate attributeName="opacity" attributeType="XML" values="0.2; 1; .2" begin="0s" dur="0.6s" repeatCount="indefinite"></animate>
                    <animate attributeName="height" attributeType="XML" values="10; 20; 10" begin="0s" dur="0.6s" repeatCount="indefinite"></animate>
                    <animate attributeName="y" attributeType="XML" values="10; 5; 10" begin="0s" dur="0.6s" repeatCount="indefinite"></animate>
                    </rect>
                    <rect x="8" y="10" width="4" height="10" fill="#fff" opacity="0.2">
                    <animate attributeName="opacity" attributeType="XML" values="0.2; 1; .2" begin="0.15s" dur="0.6s" repeatCount="indefinite"></animate>
                    <animate attributeName="height" attributeType="XML" values="10; 20; 10" begin="0.15s" dur="0.6s" repeatCount="indefinite"></animate>
                    <animate attributeName="y" attributeType="XML" values="10; 5; 10" begin="0.15s" dur="0.6s" repeatCount="indefinite"></animate>
                    </rect>
                    <rect x="16" y="10" width="4" height="10" fill="#fff" opacity="0.2">
                    <animate attributeName="opacity" attributeType="XML" values="0.2; 1; .2" begin="0.3s" dur="0.6s" repeatCount="indefinite"></animate>
                    <animate attributeName="height" attributeType="XML" values="10; 20; 10" begin="0.3s" dur="0.6s" repeatCount="indefinite"></animate>
                    <animate attributeName="y" attributeType="XML" values="10; 5; 10" begin="0.3s" dur="0.6s" repeatCount="indefinite"></animate>
                    </rect>
                </svg>
            </button>
            <button class="cta cta--primary edit-bookmark-list hidden" aria-label="save bookmark list">
                <span>save</span>
                <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px" height="20px" viewBox="0 0 24 30" style="enable-background:new 0 0 50 50;" xml:space="preserve">
                    <rect x="0" y="10" width="4" height="10" fill="#fff" opacity="0.2">
                    <animate attributeName="opacity" attributeType="XML" values="0.2; 1; .2" begin="0s" dur="0.6s" repeatCount="indefinite"></animate>
                    <animate attributeName="height" attributeType="XML" values="10; 20; 10" begin="0s" dur="0.6s" repeatCount="indefinite"></animate>
                    <animate attributeName="y" attributeType="XML" values="10; 5; 10" begin="0s" dur="0.6s" repeatCount="indefinite"></animate>
                    </rect>
                    <rect x="8" y="10" width="4" height="10" fill="#fff" opacity="0.2">
                    <animate attributeName="opacity" attributeType="XML" values="0.2; 1; .2" begin="0.15s" dur="0.6s" repeatCount="indefinite"></animate>
                    <animate attributeName="height" attributeType="XML" values="10; 20; 10" begin="0.15s" dur="0.6s" repeatCount="indefinite"></animate>
                    <animate attributeName="y" attributeType="XML" values="10; 5; 10" begin="0.15s" dur="0.6s" repeatCount="indefinite"></animate>
                    </rect>
                    <rect x="16" y="10" width="4" height="10" fill="#fff" opacity="0.2">
                    <animate attributeName="opacity" attributeType="XML" values="0.2; 1; .2" begin="0.3s" dur="0.6s" repeatCount="indefinite"></animate>
                    <animate attributeName="height" attributeType="XML" values="10; 20; 10" begin="0.3s" dur="0.6s" repeatCount="indefinite"></animate>
                    <animate attributeName="y" attributeType="XML" values="10; 5; 10" begin="0.3s" dur="0.6s" repeatCount="indefinite"></animate>
                    </rect>
                </svg>
            </button>
            <button class="cta cta--primary cancel-create-bookmark" aria-label="cancel create bookmark">cancel</button>
            <input type="hidden" class="bookmark-list-article-link" value="/articles">
            <input type="hidden" class="bookmark-list-session-link" value="/sessions">
        </div>
    </div>
    <div class="steps step2 hidden">
        <div class="efl-learner-profile__section--header">
            <h4 class="exist">List already exists</h4>
        </div>
        <div class="efl-learner-profile__section--nocourse-copy">
            The name you've chosen for this list already exists.
        </div>
        <button class="cta cta--primary  edit-bookmark-name" aria-label="edit name bookmark">Edit name</button>
    </div>
    <div class="steps step3 hidden">
        <div class="efl-learner-profile__section--header">
            <h4 class="exist">Delete list</h4>
        </div>
        <div class="efl-learner-profile__section--nocourse-copy no-border">
            Are you sure you want to delete this list?
        </div>
        <button class="cta cta--primary  delete-bookmark-list" aria-label="yes, delete this list">
            <span>Yes, delete this list</span>
            <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px" height="20px" viewBox="0 0 24 30" style="enable-background:new 0 0 50 50;" xml:space="preserve">
                <rect x="0" y="10" width="4" height="10" fill="#fff" opacity="0.2">
                <animate attributeName="opacity" attributeType="XML" values="0.2; 1; .2" begin="0s" dur="0.6s" repeatCount="indefinite"></animate>
                <animate attributeName="height" attributeType="XML" values="10; 20; 10" begin="0s" dur="0.6s" repeatCount="indefinite"></animate>
                <animate attributeName="y" attributeType="XML" values="10; 5; 10" begin="0s" dur="0.6s" repeatCount="indefinite"></animate>
                </rect>
                <rect x="8" y="10" width="4" height="10" fill="#fff" opacity="0.2">
                <animate attributeName="opacity" attributeType="XML" values="0.2; 1; .2" begin="0.15s" dur="0.6s" repeatCount="indefinite"></animate>
                <animate attributeName="height" attributeType="XML" values="10; 20; 10" begin="0.15s" dur="0.6s" repeatCount="indefinite"></animate>
                <animate attributeName="y" attributeType="XML" values="10; 5; 10" begin="0.15s" dur="0.6s" repeatCount="indefinite"></animate>
                </rect>
                <rect x="16" y="10" width="4" height="10" fill="#fff" opacity="0.2">
                <animate attributeName="opacity" attributeType="XML" values="0.2; 1; .2" begin="0.3s" dur="0.6s" repeatCount="indefinite"></animate>
                <animate attributeName="height" attributeType="XML" values="10; 20; 10" begin="0.3s" dur="0.6s" repeatCount="indefinite"></animate>
                <animate attributeName="y" attributeType="XML" values="10; 5; 10" begin="0.3s" dur="0.6s" repeatCount="indefinite"></animate>
                </rect>
            </svg>
        </button>
        <button class="cta cta--primary  cancel-bookmark-delete" aria-label="no, return to list">no, return to list</button>
    </div>
    <div class="steps step4 hidden">
        <div class="efl-learner-profile__section--header">
            <h4 class="exist">Remove Bookmark</h4>
        </div>
        <div class="efl-learner-profile__section--nocourse-copy no-border">
            Are you sure you want to remove this bookmark?
        </div>
        <button class="cta cta--primary  remove-bookmark-item" aria-label="yes, remove bookmark item">Yes, remove this bookmark</button>
        <button class="cta cta--primary  cancel-remove-bookmark" aria-label="no, return to list">No, return to list</button>
    </div>
    <div class="steps step5 hidden">
        <div class="efl-learner-profile__section--header">
            <h4 class="exist">Innapropriate content</h4>
        </div>
        <div class="efl-learner-profile__section--nocourse-copy">
            Lorem ipsum dolor sit amet, consectetur adipiscing elit.
        </div>
        <button class="cta cta--primary  error-bookmark-name" aria-label="edit name error bookmark">Edit name</button>
    </div>
    <div class="steps step6 hidden">
        <div class="efl-learner-profile__section--header">
            <h4 class="exist">Error</h4>
        </div>
        <div class="efl-learner-profile__section--nocourse-copy">
            Lorem ipsum dolor sit amet, consectetur adipiscing elit.
        </div>
        <button class="cta cta--primary  server-error-bookmark" aria-label="try again bookmark">Try again</button>
    </div>
</div>