Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-docs.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/frontend/shared/toc_helper.js')
-rw-r--r--spec/frontend/shared/toc_helper.js30
1 files changed, 30 insertions, 0 deletions
diff --git a/spec/frontend/shared/toc_helper.js b/spec/frontend/shared/toc_helper.js
new file mode 100644
index 00000000..574f1d17
--- /dev/null
+++ b/spec/frontend/shared/toc_helper.js
@@ -0,0 +1,30 @@
+export const createItem = (text, items = []) => ({
+ text,
+ href: `#${text.replace(/[^a-zA-Z-]+/g, '-').toLowerCase()}`,
+ id: `${text}-anchor`,
+ items,
+});
+
+export const buildHTML = list =>
+ list
+ .map(
+ ({ text, href, id, items }) =>
+ `<li>
+${text ? `<a href="${href}" id="${id}">${text}</a>` : ''}
+${items?.length ? `<ul>${buildHTML(items)}</ul>` : ''}
+</li>`,
+ )
+ .join('');
+
+export const createTOCElement = list => {
+ const ul = document.createElement('ul');
+ ul.innerHTML = buildHTML(list);
+ return ul;
+};
+
+export const createExampleToc = () => [
+ createItem('Lorem', [createItem('Lorem 2')]),
+ createItem('Ipsum', [
+ createItem('Dolar', [createItem('Sit'), createItem('Amit'), createItem('Test')]),
+ ]),
+];