diff --git a/docs/assets/scripts/filter.js b/docs/assets/scripts/filter.js index 7d0398f41..d0b16de9e 100644 --- a/docs/assets/scripts/filter.js +++ b/docs/assets/scripts/filter.js @@ -1,3 +1,11 @@ +function debounce(func, wait) { + let timeout; + return function (...args) { + clearTimeout(timeout); + timeout = setTimeout(() => func.apply(this, args), wait); + }; +} + function updateResults(input) { const filter = input.value.toLowerCase().trim(); let filtered = Boolean(filter); @@ -18,8 +26,10 @@ function updateResults(input) { } } +const debouncedUpdateResults = debounce(updateResults, 300); + document.documentElement.addEventListener('input', e => { if (e.target?.matches('#block-filter wa-input')) { - updateResults(e.target); + debouncedUpdateResults(e.target); } }); diff --git a/docs/assets/styles/docs.css b/docs/assets/styles/docs.css index 3a275228f..d51d19360 100644 --- a/docs/assets/styles/docs.css +++ b/docs/assets/styles/docs.css @@ -370,10 +370,22 @@ wa-page > main:has(> .index-grid) { .index-grid { display: grid; - grid-template-columns: repeat(auto-fit, minmax(min(22ch, 100%), 1fr)); + grid-template-columns: repeat(4, 1fr); gap: var(--wa-space-2xl); margin-block-end: var(--wa-space-3xl); + @media screen and (max-width: 1470px) { + grid-template-columns: repeat(3, 1fr); + } + + @media screen and (max-width: 960px) { + grid-template-columns: repeat(2, 1fr); + } + + @media screen and (max-width: 500px) { + grid-template-columns: repeat(1, 1fr); + } + a { border-radius: var(--wa-border-radius-l); text-decoration: none;