Skip to content

Commit fb34373

Browse files
ThatJoeMoorekevin-larry-bauer
authored andcommitted
Improve search hiding (#309)
* Clean up search menu transitions * Actually fix the safari issue It seems like attribute changes on the host element do not trigger a restyle. However, class changes do. This changes the search hiding to rely on a class toggle. The interesting thing is that just toggling the class, even while having the styles depend on the attribute, triggers a restyle and fixes the issue. It looks like this is a bug in WebKit. Good luck getting it fixed. * build
1 parent aa0d1f5 commit fb34373

13 files changed

+376
-365
lines changed

components/byu-header/byu-header-common.scss

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -178,12 +178,15 @@
178178
padding: 0;
179179
}
180180

181+
$menuTransitionTiming: 0.5s cubic-bezier(0.4, 0.0, 0.2, 1);
182+
$menuTransition: max-height $menuTransitionTiming;
181183

182184
/* MOBILE */
183185

184186
@mixin mobileMenu() {
185187
max-height: 0;
186-
transition: 0.5s cubic-bezier(0.4, 0.0, 0.2, 1);
188+
transition: $menuTransition;
189+
will-change: max-height;
187190
}
188191

189192
@mixin mobileHeaderContent() {
@@ -272,17 +275,19 @@
272275
}
273276

274277
@mixin searchTransition() {
275-
transform: scaleY(1);
276-
transition: height .1s ease-in-out;
277-
height: 35px!important;
278+
max-height: 35px;
279+
transition: $menuTransition, transform $menuTransitionTiming;
280+
will-change: max-height, transform;
281+
overflow: hidden;
282+
transform: scale(1, 1);
278283
transform-origin: top;
279284
}
280285

281286
@mixin searchTransformed() {
282-
transform: scaleY(0);
283-
height: 0 !important;
284-
}
287+
max-height: 0;
288+
transform: scale(1, 0);
285289

290+
}
286291

287292
/* FULL SIZE */
288293

components/byu-header/byu-header.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,9 +169,11 @@ class BYUHeader extends HTMLElement {
169169
if (!menu) return;
170170
if (this.menuOpen) {
171171
menu.style.maxHeight = menu.scrollHeight + 'px';
172+
this.classList.add('byu-header-menu-open');
172173
transformIcon(this.shadowRoot.querySelector('.mobile-menu-button'));
173174
} else {
174175
menu.style.maxHeight = null;
176+
this.classList.remove('byu-header-menu-open');
175177
revertIcon(this.shadowRoot.querySelector('.mobile-menu-button'));
176178
}
177179
}

components/byu-header/byu-header.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@
171171
@include searchTransition();
172172
}
173173

174-
:host([menu-open][mobile-view]) .byu-header-search {
174+
:host(.byu-header-menu-open[mobile-view]) .byu-header-search {
175175
@include searchTransformed();
176176
}
177177

dist/byu-theme-components.css.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/byu-theme-components.min.css.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/components-compat.js

Lines changed: 73 additions & 71 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/components-compat.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/components-compat.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/components-compat.min.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)