diff --git a/assets/js/main.js b/assets/js/main.js index 963da7034..ec19a20a4 100644 --- a/assets/js/main.js +++ b/assets/js/main.js @@ -37,6 +37,30 @@ document.addEventListener("DOMContentLoaded", () => { } } + document.querySelectorAll('.btn-check[data-version]').forEach(el => { + el.addEventListener('change', () => { + const activeVersions = Array.from( + document.querySelectorAll('.btn-check[data-version]:checked') + ).map(e => e.dataset.version); + + const items = document.querySelectorAll('[data-versions]'); + + items.forEach((item) => { + const versions = item.dataset.versions + .trim() + .split(/\s+/); + + const match = + activeVersions.length === 0 + ? true + : activeVersions.some(v => versions.includes(v)); + + item.classList.toggle('d-none', !match); + }); + + }); + }); + document.querySelectorAll('.code-copy-btn').forEach((button) => { button.addEventListener('click', () => { const codeBlock = button.nextElementSibling?.querySelector('code'); diff --git a/assets/scss/docs.scss b/assets/scss/docs.scss index 4ab4ddb8c..4f3a03aa6 100644 --- a/assets/scss/docs.scss +++ b/assets/scss/docs.scss @@ -5,3 +5,4 @@ @import 'docs/iconstage'; @import 'docs/preview'; @import 'docs/misc'; +@import "docs/version-filter"; diff --git a/assets/scss/docs/_version-filter.scss b/assets/scss/docs/_version-filter.scss new file mode 100644 index 000000000..732b4f4ac --- /dev/null +++ b/assets/scss/docs/_version-filter.scss @@ -0,0 +1,16 @@ +.version-badge { + cursor: pointer; + user-select: none; + transition: all .2s ease; + opacity: .6; +} + +/* checked state */ +.btn-check:checked + .version-badge { + opacity: 1; +} + +/* hover */ +.version-badge:hover { + opacity: .85; +} diff --git a/tmpl/html/docs/_filters.html.twig b/tmpl/html/docs/_filters.html.twig index b07ca2643..40da8cffb 100644 --- a/tmpl/html/docs/_filters.html.twig +++ b/tmpl/html/docs/_filters.html.twig @@ -7,5 +7,26 @@ {%- endif -%} - + {%- if showVersionFilter is not defined or showVersionFilter -%} +
+ Available in TYPO3 + {%- for typo3version, version in typo3.versions -%} + + + + {%- endfor -%} +
+ {%- endif -%} + diff --git a/tmpl/html/docs/index.html.twig b/tmpl/html/docs/index.html.twig index 9facbd0cd..5ca371e81 100644 --- a/tmpl/html/docs/index.html.twig +++ b/tmpl/html/docs/index.html.twig @@ -12,7 +12,7 @@

Icons

{%- include '_filters.html.twig' -%} - +
{%- for category in categories -%} {%- for iconIdentifier in category.icons -%} @@ -22,6 +22,7 @@ data-type="icon" data-identifier="{{ icon.identifier }}" data-search="{{ icon.identifier }} {{ icon._meta.tags|join(' ') }}" + data-versions="{%- for typo3version, version in typo3.versions -%}{%- if version in icon._meta.changes %}{{ typo3version }} {% endif -%}{%- endfor -%}" {% if icon._meta.bidi %}data-bidi="true"{% endif %} href="{{ pathPrefix }}icons/{{ category.identifier }}/{{ icon.identifier }}.html" title="{{ icon.identifier }}" diff --git a/tmpl/html/docs/section.html.twig b/tmpl/html/docs/section.html.twig index 91ffa6bf1..fd118a5ed 100644 --- a/tmpl/html/docs/section.html.twig +++ b/tmpl/html/docs/section.html.twig @@ -11,7 +11,7 @@

{{ category.title }}

- {%- include '_filters.html.twig' with { showBidiFilter: not category.rendering.menuview } -%} + {%- include '_filters.html.twig' with { showBidiFilter: not category.rendering.menuview, showVersionFilter: not category.rendering.menuview } -%}
{%- if category.rendering.menuview -%}