Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Vertical filter #1443

Merged
merged 176 commits into from
Mar 30, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
176 commits
Select commit Hold shift + click to select a range
47fe26d
Create vertical filter
Mar 2, 2022
9d96443
remove unused file
Mar 2, 2022
aeeeef4
Add collapse logic
Mar 2, 2022
4c684fd
FIx collapse
Mar 3, 2022
a0b3301
cleanup
Mar 3, 2022
54863ac
Fix filter
Mar 3, 2022
f7bed58
fix sort
Mar 4, 2022
ebda637
Clean up css
Mar 7, 2022
31e0a6e
Clean up
Mar 7, 2022
50fb1e0
clean up
Mar 7, 2022
1f794da
Show more
Mar 7, 2022
0cc55fb
Fix show more
Mar 7, 2022
019832f
Create show more
Mar 8, 2022
984ea76
Move elements
Mar 16, 2022
beb96cd
First one open
Mar 16, 2022
aca5312
Clean up
Mar 16, 2022
d517c79
Clean up
Mar 16, 2022
a1684cb
fix
Mar 16, 2022
8dc1f00
change nmber
Mar 16, 2022
adcdefb
update filter note
Mar 16, 2022
8b2df0d
clean up
Mar 16, 2022
9718145
update content
Mar 17, 2022
5e08a55
fix conflict
Mar 17, 2022
0f2cf97
clean up
Mar 17, 2022
df40f35
fix
Mar 17, 2022
cd0da53
update
Mar 17, 2022
620a503
fix underline
Mar 17, 2022
311c9ae
fix vertical filter alignment
Mar 17, 2022
0980041
fix price
Mar 17, 2022
66d5fc9
change width
Mar 17, 2022
91243e1
fix translation
Mar 18, 2022
82d82a8
Update vertical drawer
Mar 21, 2022
f6faabe
fix price
Mar 21, 2022
f4ae6fa
fix price
Mar 21, 2022
759a542
spacing
Mar 21, 2022
dbf6455
update button
Mar 21, 2022
7be10df
Update 3 translation files
translation-platform[bot] Mar 21, 2022
f4a9a8d
push
Mar 21, 2022
de9030b
accessibility
Mar 21, 2022
82bea84
fix show more
Mar 21, 2022
ada237c
accessibility
Mar 21, 2022
8482d5a
feedback
sofiamatulis Mar 21, 2022
1da0c1f
feedback
Mar 21, 2022
64b06f4
feedback
Mar 21, 2022
ddca22d
feedback
Mar 21, 2022
3c39c84
feedback;
Mar 21, 2022
e039953
cleanup
Mar 21, 2022
fdeba71
fix brakcet
Mar 21, 2022
ad6bc68
Update 2 translation files
translation-platform[bot] Mar 22, 2022
cd037c2
Feedback
Mar 22, 2022
43cd667
feedback
Mar 22, 2022
1b99ba5
move icons
Mar 22, 2022
b2dc637
fix typo
Mar 22, 2022
30e5ce3
accessibility
Mar 22, 2022
2d61c95
add aria label
Mar 22, 2022
67273d6
fix
Mar 22, 2022
76dc487
Add search
Mar 22, 2022
6a17fa4
fix bug
Mar 22, 2022
632e22c
Update 1 translation file
translation-platform[bot] Mar 22, 2022
fe48f51
fix h2
Mar 22, 2022
842f9f5
remove aria live
Mar 22, 2022
f8552d6
Fix a tag ay11
Mar 22, 2022
48b06f5
fix checkbox
Mar 22, 2022
2a9686c
fix typo
Mar 22, 2022
5ffc3ea
fix price being open
Mar 22, 2022
df4e289
feedback
Mar 22, 2022
16b237b
fix padding
Mar 22, 2022
a57150e
fix typo
Mar 22, 2022
618f85f
fix padding
Mar 22, 2022
8ce7219
Update 4 translation files
translation-platform[bot] Mar 23, 2022
4795707
Feedback
sofiamatulis Mar 23, 2022
a0688f4
Feedback
sofiamatulis Mar 23, 2022
2c78c10
feedback
Mar 23, 2022
a61a128
feedback css
Mar 23, 2022
670330b
feedback js
Mar 23, 2022
9b7a988
feedback js
Mar 23, 2022
f85efa6
clean up
Mar 23, 2022
4bb05ef
remove page width
Mar 23, 2022
ff6f2ea
feedback
Mar 23, 2022
a79f2df
fix focus
Mar 23, 2022
a794b53
fix z index
Mar 23, 2022
081e566
clean focus
Mar 23, 2022
2b212db
Add timeout
Mar 23, 2022
470b234
revert
Mar 23, 2022
472c411
fix overflow
Mar 23, 2022
d8221fd
feedback
sofiamatulis Mar 23, 2022
a7fbd08
Remove spacing
sofiamatulis Mar 23, 2022
51c7364
clean up
Mar 23, 2022
4310699
fix focus
Mar 23, 2022
9a22f94
clean up
Mar 23, 2022
6a1d0a7
fix typo
Mar 23, 2022
3f6fd39
clean up
Mar 23, 2022
89bc1c5
Update 18 translation files
translation-platform[bot] Mar 23, 2022
ee4d245
fix multiple buttons
Mar 23, 2022
1d273ce
Update 5 translation files
translation-platform[bot] Mar 24, 2022
b2fccd9
feedback
Mar 24, 2022
59d2618
feedback
Mar 24, 2022
5ef267f
Feedback
sofiamatulis Mar 24, 2022
30e771c
Clean up
Mar 24, 2022
50891e4
Fix accessibility
Mar 24, 2022
b9a7f0d
feedback
Mar 24, 2022
86b65ec
feedback
Mar 24, 2022
d75e252
Fix no js;
Mar 24, 2022
26f9025
fix
Mar 24, 2022
e218427
revert button
Mar 24, 2022
06ed8ae
cleanup
Mar 24, 2022
2b646b3
fix filter
Mar 24, 2022
9881855
fix typo
Mar 24, 2022
79afb28
fix form
Mar 24, 2022
dc88907
fix
Mar 24, 2022
e7a8dfd
Fix
Mar 24, 2022
b812910
Fix
Mar 24, 2022
ab5d98d
Add padding
Mar 24, 2022
f7ebab7
Fix no js
Mar 24, 2022
6c7508a
Fix overflow
Mar 24, 2022
d161fce
Update 1 translation file
translation-platform[bot] Mar 24, 2022
5caecde
Update 16 translation files
translation-platform[bot] Mar 24, 2022
b2e8fe7
feedback
Mar 24, 2022
02dddb4
fix
Mar 24, 2022
5efa18f
Clean up
Mar 24, 2022
a18d5ca
clean up
Mar 24, 2022
c053317
fix
Mar 24, 2022
74bc420
update code
Mar 24, 2022
aa32953
feedback
sofiamatulis Mar 24, 2022
0cdc895
Clean up
Mar 24, 2022
a2695f8
Update query
Mar 24, 2022
c32d3ba
Clean up js;
Mar 24, 2022
197d2a9
Clean up access
Mar 24, 2022
4f44717
move show more out
Mar 25, 2022
1692551
Clean up css
Mar 25, 2022
835510c
Clean up
Mar 25, 2022
2c27d0d
fix classes
Mar 25, 2022
1b9eaf4
Comments
Mar 25, 2022
62fb486
Comment
Mar 25, 2022
c9ac14a
typo
Mar 25, 2022
20beb67
fix typo
Mar 25, 2022
e973f4c
Fix no js sort
Mar 25, 2022
4d4f33c
Feedback
sofiamatulis Mar 25, 2022
8c41650
Feedback
sofiamatulis Mar 25, 2022
a249e0d
feedback
sofiamatulis Mar 25, 2022
77e9514
Feedback js
Mar 25, 2022
9e2f90f
fix typo
Mar 25, 2022
d07df39
typo;
Mar 25, 2022
a630458
remove console
Mar 25, 2022
577a0b5
revert bind
Mar 25, 2022
e76b0ac
Update facet remove keyup
Mar 25, 2022
5fcd933
Add role button facet remove js
Mar 25, 2022
06b7a87
Rename show more
Mar 25, 2022
1236bbb
Move show more
Mar 25, 2022
685d0e8
clean up
Mar 25, 2022
ba22938
fix mobile
Mar 25, 2022
799c7f4
Fix mobile bug drawer pills
Mar 25, 2022
fbb7fa6
Clean code
Mar 25, 2022
b2e20a6
prevent default
Mar 28, 2022
515e79c
Clean up show more js
Mar 28, 2022
961e3c9
Fix arrowe
Mar 28, 2022
500a0af
Align title
Mar 28, 2022
9a63a62
Clean up logic
Mar 28, 2022
183ca5d
No js show more
Mar 28, 2022
6e18f5f
Fix conflict
Mar 28, 2022
bbcd3f3
remove tabbing for input
Mar 28, 2022
d4dc59d
Clean up show more js
Mar 28, 2022
f1d85ca
Clean up show more
Mar 28, 2022
90e301c
Fix page width
Mar 29, 2022
8ae9ef2
Fix button size
Mar 29, 2022
71c538d
Fix pills
Mar 29, 2022
90b94e5
Clean up drawer
Mar 29, 2022
d646d61
feedback
Mar 29, 2022
c0be357
Feedback
Mar 29, 2022
d2978b2
feedback
sofiamatulis Mar 29, 2022
19c6a3b
Update assets/facets.js
sofiamatulis Mar 29, 2022
843a8cb
Update assets/facets.js
sofiamatulis Mar 29, 2022
4b633f5
Fix typo
Mar 30, 2022
f7a6656
Fix sort search
Mar 30, 2022
0aa06bf
Fix gradient
Mar 30, 2022
fe295a0
Fix checkmark not showing hor filter
Mar 30, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
208 changes: 204 additions & 4 deletions assets/component-facets.css
Original file line number Diff line number Diff line change
Expand Up @@ -199,16 +199,23 @@
.facets__summary {
color: rgba(var(--color-foreground), 0.75);
font-size: 1.4rem;
margin-bottom: 1.5rem;
padding: 0 1.75rem 0 0;
margin-bottom: 1.5rem;
}

.facets__disclosure fieldset {
padding: 0;
margin: 0;
border: 0;
}

.facets__disclosure[open] .facets__summary,
.facets__summary:hover {
color: rgb(var(--color-foreground));
}

.facets__disclosure[open] .facets__display {
.facets__disclosure[open] .facets__display,
.facets__disclosure-vertical[open] .facets__display-vertical {
animation: animateMenuOpen var(--duration-default) ease;
}

Expand Down Expand Up @@ -295,6 +302,10 @@
-webkit-appearance: none;
}

.no-js .facet-checkbox input[type='checkbox'] {
z-index: 0;
}

.facet-checkbox > svg {
background-color: rgb(var(--color-background));
margin-right: 1.2rem;
Expand Down Expand Up @@ -415,7 +426,7 @@ span.active-facets__button-inner:after {

.active-facets__button-wrapper *,
span.active-facets__button-inner {
font-size: 1.2rem;
font-size: 1.4rem;
}
}

Expand All @@ -437,6 +448,7 @@ span.active-facets__button-inner:after {

.active-facets__button-wrapper {
padding-top: 0;
margin-left: 1.2rem;
}
}

Expand Down Expand Up @@ -499,6 +511,26 @@ a.active-facets__button.focused .active-facets__button-inner,
display: none;
}

.facets-vertical .active-facets .active-facets-vertical-filter:only-child > facet-remove {
display: none;
}

.facets-vertical .active-facets-vertical-filter {
display: flex;
width: 100%;
justify-content: space-between;
}

.facets-vertical .active-facets-vertical-filter .active-facets__button-wrapper {
padding-top: 0;
display: flex;
align-items: flex-start;
}

.facets-vertical .active-facets__button {
margin-top: 0;
}

.active-facets__button.disabled,
.mobile-facets__clear.disabled {
pointer-events: none;
Expand Down Expand Up @@ -828,6 +860,8 @@ input.mobile-facets__checkbox {
display: flex;
z-index: 2;
margin-top: auto;
background-color:rgb(var(--color-background));
background: var(--gradient-background);
}

.mobile-facets__footer > * + * {
Expand Down Expand Up @@ -891,7 +925,8 @@ input.mobile-facets__checkbox {
visibility: hidden;
}

.product-count .loading-overlay__spinner {
.product-count .loading-overlay__spinner,
.product-count-vertical .loading-overlay__spinner {
display: none;
position: absolute;
right: 0;
Expand All @@ -903,3 +938,168 @@ input.mobile-facets__checkbox {
.product-count__text.loading + .loading-overlay__spinner {
display: block;
}

@media screen and (min-width: 750px) {
.facets-vertical {
display: flex;
}

.facets-wrap-vertical {
border: none;
padding-left: 0;
}

.facets__form-vertical {
display: flex;
flex-direction: column;
width: 26rem;
}

.facets__disclosure-vertical {
border-top: solid rgba(var(--color-foreground), 0.1);
margin-right: 0;
}

.facets-vertical .facets__summary {
padding-top: 1.5rem;
margin-bottom: 0;
padding-bottom: 1.5rem;
}

.facets__heading--vertical {
margin: 0 0 1.5rem 0;
font-size: 1.5rem;
}

.facets__header-vertical {
padding: 1.5rem 2rem 1.5rem 0;
font-size: 1.4rem;
}

.facets__display-vertical {
padding-bottom: 1.5rem;
}

.facets-vertical .facets-wrapper {
padding-right: 3rem;
}

.facets-vertical .product-grid-container {
width: 100%;
KaichenWang marked this conversation as resolved.
Show resolved Hide resolved
}

.facets-vertical-form {
display: flex;
justify-content: flex-end;
}

.product-count-vertical {
margin-left: 3.5rem;
}

.facets-vertical .active-facets__button-wrapper {
margin-bottom: 2rem;
}

.facets-vertical .no-js .facets__button-no-js {
transform: none;
}

.facets-vertical .no-js .facet-filters__field {
justify-content: flex-start;
padding-bottom: 1rem;
padding-top: 2rem;
}

.facets-vertical .facets__price {
padding: 0.5rem 0.5rem 0.5rem 0;
}

.facets-vertical .facets__price .field:last-of-type {
sofiamatulis marked this conversation as resolved.
Show resolved Hide resolved
margin-left: 1rem;
}

.facets-vertical .active-facets__button {
margin-bottom: 1.5rem;
}

.facets-vertical .facet-filters.sorting.no-js {
padding-left: 0;
}

.facets-vertical .facet-checkbox input[type='checkbox'] {
z-index: 0;
}

.no-js .facets-vertical .facets-container {
display: flex;
flex-direction: column;
}

.facets-vertical .active-facets facet-remove:last-of-type {
margin-bottom: 1rem;
}

.facets-vertical .active-facets {
margin: 0;
align-items: flex-start;
}

.facets__disclosure-vertical[open] .facets__summary .icon-caret {
transform: rotate(180deg);
}

.facets-container-drawer {
display: flex;;
flex-flow: row wrap;
column-gap: 0;
}

.facets-container-drawer .mobile-facets__wrapper {
margin-right: 2rem;
}

.facets-container-drawer .product-count {
align-self: flex-start;
}

.facets-container-drawer .mobile-facets__wrapper {
width: calc(40% - 2rem);
}

.facets-container-drawer .facets {
width: 40%;
}

.facets-container-drawer .product-count {
width: 20%;
}

.facets-container-drawer .facets__form {
display: block;
}

.no-js .facets-container-drawer .mobile-facets__wrapper {
width: calc(20% - 2rem);
}

.no-js .facets-container-drawer .facets {
width: 60%;
}

.no-js .facets-container-drawer .product-count {
width: 20%;
}
}

@media screen and (min-width: 750px) and (max-width: 989px) {
.facets-vertical .active-facets__button {
padding: 1rem;
margin-bottom: 0;
margin-left: -0.5rem;
}

.facets-vertical .active-facets__button-remove {
padding: 1rem;
}
}
11 changes: 11 additions & 0 deletions assets/component-show-more.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@

.button-show-more {
padding-left: 0;
justify-content: flex-start;
padding-bottom: 1.1rem;
}

.button-show-more,
.button-show-less {
margin-top: 1.5rem;
}
58 changes: 49 additions & 9 deletions assets/facets.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ class FacetFiltersForm extends HTMLElement {
this.onSubmitHandler(event);
}, 500);

this.querySelector('form').addEventListener('input', this.debouncedOnSubmit.bind(this));
const facetForm = this.querySelector('form');
facetForm.addEventListener('input', this.debouncedOnSubmit.bind(this));

const facetWrapper = this.querySelector('#FacetsWrapperDesktop');
if (facetWrapper) facetWrapper.addEventListener('keyup', onKeyUpEscape);
Expand Down Expand Up @@ -92,7 +93,7 @@ class FacetFiltersForm extends HTMLElement {
const parsedHTML = new DOMParser().parseFromString(html, 'text/html');

const facetDetailsElements =
parsedHTML.querySelectorAll('#FacetFiltersForm .js-filter, #FacetFiltersFormMobile .js-filter');
parsedHTML.querySelectorAll('#FacetFiltersForm .js-filter, #FacetFiltersFormMobile .js-filter, #FacetFiltersPillsForm .js-filter');
const matchesIndex = (element) => {
const jsFilter = event ? event.target.closest('.js-filter') : undefined;
return jsFilter ? element.dataset.index === jsFilter.dataset.index : false;
Expand Down Expand Up @@ -137,9 +138,16 @@ class FacetFiltersForm extends HTMLElement {
const targetElement = target.querySelector('.facets__selected');
const sourceElement = source.querySelector('.facets__selected');

const targetElementAccessibility = target.querySelector('.facets__summary');
const sourceElementAccessibility = source.querySelector('.facets__summary');

if (sourceElement && targetElement) {
target.querySelector('.facets__selected').outerHTML = source.querySelector('.facets__selected').outerHTML;
}

if (targetElementAccessibility && sourceElementAccessibility) {
target.querySelector('.facets__summary').outerHTML = source.querySelector('.facets__summary').outerHTML;
}
}

static updateURLHash(searchParams) {
Expand All @@ -154,11 +162,36 @@ class FacetFiltersForm extends HTMLElement {
]
}

createSearchParams(form) {
const formData = new FormData(form);
return new URLSearchParams(formData).toString();
}

onSubmitForm(searchParams, event) {
FacetFiltersForm.renderPage(searchParams, event);
}

onSubmitHandler(event) {
event.preventDefault();
const formData = new FormData(event.target.closest('form'));
const searchParams = new URLSearchParams(formData).toString();
FacetFiltersForm.renderPage(searchParams, event);
const sortFilterForms = document.querySelectorAll('facet-filters-form form');
if (event.srcElement.className == 'mobile-facets__checkbox') {
const searchParams = this.createSearchParams(event.target.closest('form'))
this.onSubmitForm(searchParams, event)
} else {
const forms = [];
sofiamatulis marked this conversation as resolved.
Show resolved Hide resolved
const isMobile = event.target.closest('form').id === 'FacetFiltersFormMobile';

sortFilterForms.forEach((form) => {
if (!isMobile) {
if (form.id === 'FacetSortForm' || form.id === 'FacetFiltersForm' || form.id === 'FacetSortDrawerForm') {
forms.push(this.createSearchParams(form));
}
} else if (form.id === 'FacetFiltersFormMobile') {
forms.push(this.createSearchParams(form));
}
});
this.onSubmitForm(forms.join('&'), event)
}
}

onActiveFilterClick(event) {
Expand All @@ -180,7 +213,6 @@ class PriceRange extends HTMLElement {
super();
this.querySelectorAll('input')
.forEach(element => element.addEventListener('change', this.onRangeChange.bind(this)));

this.setMinAndMaxValues();
}

Expand Down Expand Up @@ -214,12 +246,20 @@ customElements.define('price-range', PriceRange);
class FacetRemove extends HTMLElement {
constructor() {
super();
this.querySelector('a').addEventListener('click', (event) => {
const facetLink = this.querySelector('a');
facetLink.setAttribute('role', 'button');
facetLink.addEventListener('click', this.closeFilter.bind(this));
facetLink.addEventListener('keyup', (event) => {
event.preventDefault();
const form = this.closest('facet-filters-form') || document.querySelector('facet-filters-form');
form.onActiveFilterClick(event);
if (event.code.toUpperCase() === 'SPACE') this.closeFilter(event);
});
}

closeFilter(event) {
event.preventDefault();
const form = this.closest('facet-filters-form') || document.querySelector('facet-filters-form');
form.onActiveFilterClick(event);
}
}

customElements.define('facet-remove', FacetRemove);
2 changes: 1 addition & 1 deletion assets/global.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ function getFocusableElements(container) {

document.querySelectorAll('[id^="Details-"] summary').forEach((summary) => {
summary.setAttribute('role', 'button');
summary.setAttribute('aria-expanded', 'false');
summary.setAttribute('aria-expanded', summary.parentNode.hasAttribute('open'));
KaichenWang marked this conversation as resolved.
Show resolved Hide resolved

if(summary.nextElementSibling.getAttribute('id')) {
summary.setAttribute('aria-controls', summary.nextElementSibling.id);
Expand Down
Loading