From 486d800ba2ba177f02caf831ad3f9b7258218e59 Mon Sep 17 00:00:00 2001 From: joncasey Date: Fri, 26 Apr 2019 13:29:52 -0400 Subject: [PATCH 1/3] Fix iOS footer collapse Resolves #3046 --- src/js/components/footer.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/js/components/footer.js b/src/js/components/footer.js index e55359ef6b..074fef528c 100755 --- a/src/js/components/footer.js +++ b/src/js/components/footer.js @@ -30,7 +30,11 @@ function showPanel() { } } +let lastInnerWidth; + const resize = debounce(() => { + if (lastInnerWidth === window.innerWidth) return; + lastInnerWidth = window.innerWidth; const hidden = window.innerWidth < HIDE_MAX_WIDTH; select(COLLAPSIBLE).forEach(list => list.classList.toggle(HIDDEN, hidden)); }, DEBOUNCE_RATE); From f051c8e48c30872979b4d3ae7c40654a32da94fe Mon Sep 17 00:00:00 2001 From: joncasey Date: Fri, 26 Apr 2019 13:46:05 -0400 Subject: [PATCH 2/3] Update footer.spec.js Dispatch resize events for every resizeTo call. --- spec/unit/footer/footer.spec.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/spec/unit/footer/footer.spec.js b/spec/unit/footer/footer.spec.js index 03d77db2f4..e106fc0b15 100755 --- a/spec/unit/footer/footer.spec.js +++ b/spec/unit/footer/footer.spec.js @@ -20,10 +20,8 @@ const BUTTON_SELECTOR = '.usa-footer__primary-link'; * @return {Promise} */ const resizeTo = width => new Promise((resolve) => { - if (width !== window.innerWidth) { - window.innerWidth = width; - window.dispatchEvent(new CustomEvent('resize')); - } + window.innerWidth = width; + window.dispatchEvent(new CustomEvent('resize')); setTimeout(resolve, DEBOUNCE_RATE + 10); }); From 2a46ab0b331708a7d3ddcddba44dd103a2f9304f Mon Sep 17 00:00:00 2001 From: joncasey Date: Fri, 26 Apr 2019 14:12:41 -0400 Subject: [PATCH 3/3] Update footer.spec.js for real this time Force a resize that has a new innerWidth --- spec/unit/footer/footer.spec.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/spec/unit/footer/footer.spec.js b/spec/unit/footer/footer.spec.js index e106fc0b15..d7828266e2 100755 --- a/spec/unit/footer/footer.spec.js +++ b/spec/unit/footer/footer.spec.js @@ -20,8 +20,10 @@ const BUTTON_SELECTOR = '.usa-footer__primary-link'; * @return {Promise} */ const resizeTo = width => new Promise((resolve) => { - window.innerWidth = width; - window.dispatchEvent(new CustomEvent('resize')); + if (width !== window.innerWidth) { + window.innerWidth = width; + window.dispatchEvent(new CustomEvent('resize')); + } setTimeout(resolve, DEBOUNCE_RATE + 10); }); @@ -86,7 +88,8 @@ describe('big footer accordion', () => { }); it('closes panel on subsequent click', () => { - return resizeTo(400) + return resizeTo(800) + .then(() => resizeTo(400)) .then(() => { buttons[0].click(); assertHidden(lists[ 0 ], false); @@ -96,7 +99,8 @@ describe('big footer accordion', () => { }); it('closes other panels on small screens', () => { - return resizeTo(400) + return resizeTo(800) + .then(() => resizeTo(400)) .then(() => { buttons[0].click(); assertHidden(lists[ 0 ], false);