Skip to content

Commit 5b46682

Browse files
feat: add supporting pane media queries
1 parent 69481ce commit 5b46682

File tree

1 file changed

+50
-2
lines changed

1 file changed

+50
-2
lines changed

labs/layout/supportingpane/internal/supporting-pane.ts

+50-2
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,67 @@
44
* SPDX-License-Identifier: Apache-2.0
55
*/
66

7-
import { html, LitElement } from 'lit';
7+
import { html, LitElement, PropertyValueMap } from 'lit';
88
import { property } from 'lit/decorators';
99

1010
/**
1111
* The Supporting Pane Layout.
1212
*/
1313
export class SupportingPane extends LitElement {
1414
@property({ type: String, reflect: true })
15-
variant: 'compact' | 'medium' | 'expanded' = 'expanded';
15+
variant: 'compact' | 'medium' | 'expanded' = 'compact';
1616

1717
@property({ type: Boolean, reflect: true })
1818
left: boolean = false;
1919

20+
@property()
21+
mediumQuery: string = '(min-width: 600px)';
22+
23+
@property()
24+
expandedQuery: string = '(min-width: 840px)';
25+
26+
mediumMediaQuery: MediaQueryList;
27+
28+
expandedMediaQuery: MediaQueryList;
29+
30+
private _handleMediumChange({
31+
matches,
32+
}: MediaQueryList | MediaQueryListEvent) {
33+
if (matches) this.variant = 'medium';
34+
}
35+
36+
private _handleExpandedChange({
37+
matches,
38+
}: MediaQueryList | MediaQueryListEvent) {
39+
if (matches) this.variant = 'expanded';
40+
}
41+
42+
protected override firstUpdated() {
43+
this.mediumMediaQuery = window.matchMedia(this.mediumQuery);
44+
this.mediumMediaQuery.addEventListener('change', this._handleMediumChange);
45+
this._handleMediumChange(this.mediumMediaQuery);
46+
47+
this.expandedMediaQuery = window.matchMedia(this.expandedQuery);
48+
this.expandedMediaQuery.addEventListener(
49+
'change',
50+
this._handleExpandedChange
51+
);
52+
this._handleExpandedChange(this.expandedMediaQuery);
53+
}
54+
55+
override disconnectedCallback() {
56+
super.disconnectedCallback();
57+
this.mediumMediaQuery.removeEventListener(
58+
'change',
59+
this._handleMediumChange
60+
);
61+
62+
this.expandedMediaQuery.removeEventListener(
63+
'change',
64+
this._handleExpandedChange
65+
);
66+
}
67+
2068
protected override render() {
2169
return html`
2270
<slot></slot>

0 commit comments

Comments
 (0)