') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); [4.x] Filters refinements by jesseleite · Pull Request #8001 · statamic/cms · GitHub
Skip to content

[4.x] Filters refinements - #8001

Merged
jasonvarga merged 36 commits into
masterfrom
un-minimialize-filters
Apr 27, 2023
Merged

[4.x] Filters refinements#8001
jasonvarga merged 36 commits into
masterfrom
un-minimialize-filters

Conversation

@jesseleite

@jesseleitejesseleite commented Apr 25, 2023

Copy link
Copy Markdown
Contributor
  • Make filters bar always visible to remove the extra click to access.
  • Bring back pinned filters concept to keep UX minimal and clean, with or without lots of custom filters.
  • Pin all core filters by default for easier access.
  • Add Duplicate view/preset option.
  • Add Rename view/preset option.
  • Fix + button view/preset behaviour.
  • Apply all the above changes to:
    • Entries listing
    • Terms listing
    • Form submissions listing
    • Users listing
    • User group users listing

Fixes#7807

@what-the-diff

what-the-diffBot commented Apr 25, 2023

Copy link
Copy Markdown

PR Summary

  • Improved filter badge styling
    Changed the styling of filter badges for better appearance
  • Added preset management in dropdown menu
    Users can now duplicate or delete presets directly from a dropdown menu without opening the modal window
  • Resolved spacing issues
    Fixed some spacing issues with filters and field selectors in data lists (e.g., on /admin/users)
  • Removed alwaysShowFilters config option
    Eliminated an unnecessary configuration option
  • Implemented pinned property in Filter class
    Optimized filter visibility by using the pinned property, showing filters by default (pinned = true) or hidden until clicked on (pinned = false)
  • Updated filter classes
    Improved filter classes extending from Statamic\Query\Scopes\Filter to have their own $pinned properties set correctly
  • New property in Status class
    Added a new property to the Status class for better maintenance
  • Visibility change in UserGroup and UserRole classes
    Changed the visibility of the pinned property in UserGroup and UserRole classes from protected to public for improved accessibility

@jasonvarga

jasonvarga commented Apr 26, 2023

Copy link
Copy Markdown
Member

When you are in the "All" preset, set something like a search query or filter, clicking the "Reset" button results in JS errors and doesn't reset anything.

@jesseleite
jesseleite marked this pull request as ready for review April 27, 2023 19:59
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@jesseleite@jasonvarga@jackmcdade