← back to Designer Wallcoverings
Transform collection filters from vertical sidebar to horizontal tabs + extend grid density 3-12 columns
837f4d8ce5bd0038bc8bd3dbfab2a524b563ff21 · 2026-06-22 13:48:27 -0700 · Steve Abrams
Files touched
M shopify/scripts/cadence/data/cadence-cursor.jsonA shopify/scripts/cadence/data/cadence-plan-pm-2026-06-22.jsonM shopify/scripts/cadence/data/upload-restore-2026-06-22.jsonlM shopify/theme-files/sections/collection.liquid
Diff
commit 837f4d8ce5bd0038bc8bd3dbfab2a524b563ff21
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Mon Jun 22 13:48:27 2026 -0700
Transform collection filters from vertical sidebar to horizontal tabs + extend grid density 3-12 columns
---
shopify/scripts/cadence/data/cadence-cursor.json | 2 +-
.../cadence/data/cadence-plan-pm-2026-06-22.json | 11 +++
.../cadence/data/upload-restore-2026-06-22.jsonl | 1 +
shopify/theme-files/sections/collection.liquid | 92 ++++++++--------------
4 files changed, 46 insertions(+), 60 deletions(-)
diff --git a/shopify/scripts/cadence/data/cadence-cursor.json b/shopify/scripts/cadence/data/cadence-cursor.json
index 9a6de88e..eb4a5d33 100644
--- a/shopify/scripts/cadence/data/cadence-cursor.json
+++ b/shopify/scripts/cadence/data/cadence-cursor.json
@@ -1,5 +1,5 @@
{
"idx": 0,
- "lastSlot": "am",
+ "lastSlot": "pm",
"lastRun": "2026-06-22"
}
\ No newline at end of file
diff --git a/shopify/scripts/cadence/data/cadence-plan-pm-2026-06-22.json b/shopify/scripts/cadence/data/cadence-plan-pm-2026-06-22.json
new file mode 100644
index 00000000..e1792709
--- /dev/null
+++ b/shopify/scripts/cadence/data/cadence-plan-pm-2026-06-22.json
@@ -0,0 +1,11 @@
+[
+ {
+ "vendor": "Thibaut",
+ "dw_sku": "DWTT-73401",
+ "cost": 61.2,
+ "retail": 110.77,
+ "sample": "4.25",
+ "title": "Donavin Diamond, Beige Wallcoverings | Thibaut",
+ "willActivate": true
+ }
+]
\ No newline at end of file
diff --git a/shopify/scripts/cadence/data/upload-restore-2026-06-22.jsonl b/shopify/scripts/cadence/data/upload-restore-2026-06-22.jsonl
index d3993fd0..55b981ec 100644
--- a/shopify/scripts/cadence/data/upload-restore-2026-06-22.jsonl
+++ b/shopify/scripts/cadence/data/upload-restore-2026-06-22.jsonl
@@ -124,3 +124,4 @@
{"table":"designtex_catalog","mfr_sku":"8361252","dw_sku":"DWDX-220292","shopify_product_id":"7866117357619","action":"created","activated":true,"published":true,"status":"ACTIVE","batch_id":"upload-am-2026-06-22T13-40-04-785Z","ts":"2026-06-22T13:40:58.299Z"}
{"table":"designtex_catalog","mfr_sku":"8361501","dw_sku":"DWDX-220293","shopify_product_id":"7866117390387","action":"created","activated":true,"published":true,"status":"ACTIVE","batch_id":"upload-am-2026-06-22T13-40-04-785Z","ts":"2026-06-22T13:41:01.884Z"}
{"table":"designtex_catalog","mfr_sku":"8361701","dw_sku":"DWDX-220294","shopify_product_id":"7866117423155","action":"created","activated":true,"published":true,"status":"ACTIVE","batch_id":"upload-am-2026-06-22T13-40-04-785Z","ts":"2026-06-22T13:41:05.501Z"}
+{"table":"thibaut_catalog","mfr_sku":"AT78748","dw_sku":"DWTT-73401","shopify_product_id":"7866257735731","action":"created","activated":true,"published":true,"status":"ACTIVE","batch_id":"upload-pm-2026-06-22T20-40-05-135Z","ts":"2026-06-22T20:40:10.281Z"}
diff --git a/shopify/theme-files/sections/collection.liquid b/shopify/theme-files/sections/collection.liquid
index bca1e9b0..0da8c448 100644
--- a/shopify/theme-files/sections/collection.liquid
+++ b/shopify/theme-files/sections/collection.liquid
@@ -20,29 +20,37 @@
.boost-sd__filter-option-swatch-item-img[style*="background-color: brown"]{background-color:#8B6F4E !important}
.boost-sd__filter-option-swatch-item-img{border-radius:50%}
-/* Collapsed filter panel on load — full-width product grid */
-body.dw-filters-collapsed .boost-sd__filter-tree-wrapper{display:none !important}
-body.dw-filters-collapsed .boost-sd__product-list{width:100% !important;max-width:100% !important}
-body.dw-filters-collapsed .boost-sd__filter-products-wrap{display:block !important;max-width:100% !important;width:100% !important}
-body.dw-filters-collapsed .boost-sd__filter-products-wrap > div{display:block !important;max-width:100% !important;width:100% !important}
-body.dw-filters-collapsed .boost-sd__product-list-wrapper{max-width:100% !important;width:100% !important;flex:1 !important}
-body.dw-filters-collapsed .boost-sd__product-list{padding-right:0 !important;padding-left:0 !important}
-body.dw-filters-collapsed .boost-sd__product-list[class*="grid--"]{grid-template-columns:repeat(var(--dw-grid-cols, 4), 1fr) !important}
-.boost-sd__product-list[class*="grid--"]{grid-template-columns:repeat(4, 1fr) !important}
+/* HORIZONTAL FILTER TABS LAYOUT — NEW */
+.boost-sd__filter-tree-wrapper{display:flex !important;flex-direction:row !important;flex-wrap:wrap !important;gap:8px !important;align-items:flex-start !important;width:100% !important;max-width:100% !important;padding:16px 0 !important;margin:0 !important;background:transparent !important;border:none !important;box-shadow:none !important}
+.boost-sd__filter-tree-item{display:inline-flex !important;flex-direction:row !important;align-items:center !important;gap:4px !important;margin:0 !important;padding:0 !important}
+.boost-sd__filter-tree-item > .boost-sd__filter-option{display:inline-flex !important;flex-direction:row !important;align-items:center !important;gap:6px !important;margin:0 !important}
+.boost-sd__filter-option-title{display:inline-block !important;font-size:11px !important;font-weight:700 !important;letter-spacing:1.5px !important;text-transform:uppercase !important;margin:0 !important;padding:0 !important}
+.boost-sd__filter-option-dropdown{display:none !important}
+
+/* Full-width product grid always */
+.boost-sd__product-list{width:100% !important;max-width:100% !important}
+.boost-sd__filter-products-wrap{display:block !important;max-width:100% !important;width:100% !important}
+.boost-sd__filter-products-wrap > div{display:block !important;max-width:100% !important;width:100% !important}
+.boost-sd__product-list-wrapper{max-width:100% !important;width:100% !important;flex:1 !important}
+.boost-sd__product-list{padding-right:0 !important;padding-left:0 !important}
+.boost-sd__product-list[class*="grid--"]{grid-template-columns:repeat(var(--dw-grid-cols, 4), 1fr) !important}
.boost-sd__product-list{grid-template-columns:repeat(var(--dw-grid-cols, 4), 1fr) !important}
.boost-sd__product-list-grid--3-col{grid-template-columns:repeat(var(--dw-grid-cols, 4), 1fr) !important}
.boost-sd__product-list-grid--4-col{grid-template-columns:repeat(var(--dw-grid-cols, 4), 1fr) !important}
-/* Filter toggle button */
-.dw-filter-toggle{display:inline-flex;align-items:center;gap:6px;padding:2px 14px;margin:4px 0 4px 8px;font-family:-apple-system,BlinkMacSystemFont,sans-serif;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:1.5px;user-select:none;background:#fff;border:1.5px solid #000;border-radius:999px;cursor:pointer;vertical-align:middle}
-.dw-filter-toggle:hover{background:#f5f5f5}
-.dw-filter-toggle svg{width:14px;height:14px}
-
/* Hide static grid slider from main section — dynamic one is injected into Boost toolbar */
.shopify-section > .dw-grid-slider{display:none !important}
/* Hide old dw-gc grid control — replaced by toolbar grid slider */
.dw-gc{display:none !important}
+/* Mobile responsive: collapse horizontal filter tabs into dropdown on small screens */
+@media(max-width:640px){
+ .boost-sd__filter-tree-wrapper{max-height:120px;overflow-y:auto;border:1px solid #f0f0f0;padding:12px !important;margin-bottom:12px !important}
+ .dw-grid-slider{width:100%;margin:4px 0 !important;padding:8px 12px !important;flex-wrap:wrap}
+ .dw-grid-slider label, .dw-grid-slider .gc-num, .dw-perpage-inline{font-size:10px}
+ .dw-grid-slider input[type=range]{width:100px}
+}
+
/* Per-page selector — inside grid pill */
.dw-perpage-inline{display:inline-flex;align-items:baseline;gap:4px;margin-left:10px;padding-left:10px;border-left:1px solid #ccc}
.dw-perpage-inline select{border:none;background:transparent;font-size:14px;font-weight:700;cursor:pointer;padding:0;margin:0;-webkit-appearance:none;appearance:none}
@@ -53,10 +61,10 @@ body.dw-filters-collapsed .boost-sd__product-list[class*="grid--"]{grid-template
<style>
.dw-grid-slider{display:inline-flex;align-items:center;gap:8px;padding:2px 16px;margin:4px 0 4px 16px;font-family:-apple-system,BlinkMacSystemFont,sans-serif;font-size:11px;user-select:none;background:#fff;border:1.5px solid #000;border-radius:999px}
.dw-grid-slider label{color:#000;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1.5px}
-.dw-grid-slider input[type=range]{-webkit-appearance:none;width:120px;height:3px;background:#ccc;border-radius:2px;outline:none;cursor:pointer}
+.dw-grid-slider input[type=range]{-webkit-appearance:none;width:140px;height:3px;background:#ccc;border-radius:2px;outline:none;cursor:pointer}
.dw-grid-slider input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;background:#000;border-radius:50%;cursor:pointer}
.dw-grid-slider input[type=range]::-moz-range-thumb{width:16px;height:16px;background:#000;border-radius:50%;cursor:pointer;border:none}
-.dw-grid-slider .gc-num{color:#000;font-weight:700;font-size:14px;min-width:14px;text-align:center}
+.dw-grid-slider .gc-num{color:#000;font-weight:700;font-size:14px;min-width:20px;text-align:center}
.collection-products.rows-of-3 .product-list-item,.collection-products.rows-of-3 .product-grid-masonry-sizer{width:33.333%}
.collection-products.rows-of-4 .product-list-item,.collection-products.rows-of-4 .product-grid-masonry-sizer{width:25%}
.collection-products.rows-of-5 .product-list-item,.collection-products.rows-of-5 .product-grid-masonry-sizer{width:20%}
@@ -78,8 +86,6 @@ body.dw-filters-collapsed .boost-sd__product-list[class*="grid--"]{grid-template
<script>
(function(){
- /* Collapse filters immediately */
- document.body.classList.add('dw-filters-collapsed');
/* Set CSS var for default 4 cols */
document.documentElement.style.setProperty('--dw-grid-cols', 4);
@@ -94,10 +100,10 @@ body.dw-filters-collapsed .boost-sd__product-list[class*="grid--"]{grid-template
/* === GRID SLIDER === */
var saved = localStorage.getItem('dw-grid-cols');
- var defaultCols = (saved && parseInt(saved) >= 3 && parseInt(saved) <= 8) ? parseInt(saved) : 4;
+ var defaultCols = (saved && parseInt(saved) >= 3 && parseInt(saved) <= 12) ? parseInt(saved) : 4;
function applyGrid(val){
- val = Math.max(3, Math.min(8, parseInt(val) || 4));
+ val = Math.max(3, Math.min(12, parseInt(val) || 4));
document.documentElement.style.setProperty('--dw-grid-cols', val);
boostGrid.style.setProperty('grid-template-columns', 'repeat(' + val + ', 1fr)', 'important');
var num = document.getElementById('dw-grid-num');
@@ -112,42 +118,15 @@ body.dw-filters-collapsed .boost-sd__product-list[class*="grid--"]{grid-template
var lbl = document.createElement('label');
lbl.textContent = 'Grid';
var input = document.createElement('input');
- input.type = 'range'; input.min = '3'; input.max = '8'; input.value = defaultCols; input.id = 'dw-grid-range';
+ input.type = 'range'; input.min = '3'; input.max = '12'; input.value = defaultCols; input.id = 'dw-grid-range';
var numSpan = document.createElement('span');
numSpan.className = 'gc-num'; numSpan.id = 'dw-grid-num'; numSpan.textContent = defaultCols;
sliderWrap.appendChild(lbl);
sliderWrap.appendChild(input);
sliderWrap.appendChild(numSpan);
input.addEventListener('input', function(){ applyGrid(this.value); });
- input.addEventListener('change', function(){ localStorage.setItem('dw-grid-cols', Math.max(3, Math.min(8, parseInt(this.value) || 4))); });
+ input.addEventListener('change', function(){ localStorage.setItem('dw-grid-cols', Math.max(3, Math.min(12, parseInt(this.value) || 4))); });
- /* === FILTER TOGGLE === */
- var btn = document.createElement('button');
- btn.id = 'dw-filter-toggle';
- btn.className = 'dw-filter-toggle';
- btn.setAttribute('aria-label', 'Toggle filters');
- var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
- svg.setAttribute('viewBox', '0 0 24 24');
- svg.setAttribute('fill', 'none');
- svg.setAttribute('stroke', 'currentColor');
- svg.setAttribute('stroke-width', '2');
- svg.style.cssText = 'width:14px;height:14px';
- var ys = ['6','12','18'];
- for (var i = 0; i < ys.length; i++) {
- var l = document.createElementNS('http://www.w3.org/2000/svg', 'line');
- l.setAttribute('x1','4'); l.setAttribute('y1',ys[i]);
- l.setAttribute('x2','20'); l.setAttribute('y2',ys[i]);
- svg.appendChild(l);
- }
- btn.appendChild(svg);
- var filterLabel = document.createElement('span');
- filterLabel.id = 'dw-filter-label';
- filterLabel.textContent = 'Filters';
- btn.appendChild(filterLabel);
- btn.addEventListener('click', function(){
- document.body.classList.toggle('dw-filters-collapsed');
- filterLabel.textContent = document.body.classList.contains('dw-filters-collapsed') ? 'Filters' : 'Hide Filters';
- });
/* Build per-page selector INSIDE the grid slider pill */
var perpageInline = document.createElement('span');
@@ -175,28 +154,23 @@ body.dw-filters-collapsed .boost-sd__product-list[class*="grid--"]{grid-template
perpageInline.appendChild(perpageSelect);
sliderWrap.appendChild(perpageInline);
- /* Insert controls into Boost toolbar */
+ /* Insert grid slider into Boost toolbar */
var toolbarRow = toolbar.parentElement;
- toolbarRow.insertBefore(btn, toolbar);
toolbarRow.insertBefore(sliderWrap, toolbar);
/* Apply grid and watch for Boost overrides */
applyGrid(defaultCols);
- /* Observe Boost grid for style changes and re-apply our columns + kill padding */
+ /* Observe Boost grid for style changes and re-apply our columns */
var observer = new MutationObserver(function(){
var current = parseInt(document.getElementById('dw-grid-num').textContent) || defaultCols;
boostGrid.style.setProperty('grid-template-columns', 'repeat(' + current + ', 1fr)', 'important');
- if (document.body.classList.contains('dw-filters-collapsed')) {
- boostGrid.style.setProperty('padding-right', '0', 'important');
- }
+ boostGrid.style.setProperty('padding-right', '0', 'important');
});
observer.observe(boostGrid, {attributes: true, attributeFilter: ['style', 'class']});
- /* Kill padding immediately */
- if (document.body.classList.contains('dw-filters-collapsed')) {
- boostGrid.style.setProperty('padding-right', '0', 'important');
- }
+ /* Kill padding for full-width grid */
+ boostGrid.style.setProperty('padding-right', '0', 'important');
/* Hide any leftover static grid slider */
var old = document.querySelectorAll('div.dw-grid-slider');
← 86f2a444 add sweep-all-active.mjs — full-catalog inventory=2026 backf
·
back to Designer Wallcoverings
·
Add deployment memo + testing guide for collection filter UI 369a5d7e →