Skip to content

Commit fed9536

Browse files
Westbrook JohnsonWestbrook
authored andcommitted
fix: have sp-dialog-wrapper confirm scroll management of its dialog when opening
1 parent b3b1cc9 commit fed9536

File tree

3 files changed

+121
-1
lines changed

3 files changed

+121
-1
lines changed

packages/dialog/src/Dialog.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ export class Dialog extends FocusVisiblePolyfillMixin(
174174
`;
175175
}
176176

177-
private shouldManageTabOrderForScrolling = (): void => {
177+
public shouldManageTabOrderForScrolling = (): void => {
178178
const { offsetHeight, scrollHeight } = this.contentElement;
179179
if (offsetHeight < scrollHeight) {
180180
this.contentElement.tabIndex = 0;

packages/dialog/src/DialogWrapper.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import {
1818
CSSResultArray,
1919
query,
2020
ifDefined,
21+
PropertyValues,
2122
} from '@spectrum-web-components/base';
2223

2324
import '@spectrum-web-components/underlay/sp-underlay.js';
@@ -236,4 +237,12 @@ export class DialogWrapper extends FocusVisiblePolyfillMixin(SpectrumElement) {
236237
</div>
237238
`;
238239
}
240+
241+
protected updated(changes: PropertyValues<this>): void {
242+
if (changes.has('open') && this.open) {
243+
this.dialog.updateComplete.then(() => {
244+
this.dialog.shouldManageTabOrderForScrolling();
245+
});
246+
}
247+
}
239248
}

packages/dialog/stories/dialog-wrapper.stories.ts

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,117 @@ export const wrapperDismissableUnderlay = (): TemplateResult => {
9696
`;
9797
};
9898

99+
export const longContent = (): TemplateResult => {
100+
return html`
101+
<overlay-trigger type="modal" placement="none" open="click">
102+
<sp-dialog-wrapper
103+
slot="click-content"
104+
headline="Dialog title"
105+
dismissable
106+
underlay
107+
size="small"
108+
>
109+
<p>
110+
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
111+
Sed ac dolor sit amet purus malesuada congue. Donec quis
112+
nibh at felis congue commodo. Ut enim ad minima veniam, quis
113+
nostrum exercitationem ullam corporis suscipit laboriosam,
114+
nisi ut aliquid ex ea commodi consequatur? Sed ac dolor sit
115+
amet purus malesuada congue. Nam libero tempore, cum soluta
116+
nobis est eligendi optio cumque nihil impedit quo minus id
117+
quod maxime placeat facere possimus, omnis voluptas
118+
assumenda est, omnis dolor repellendus. Nullam sit amet
119+
magna in magna gravida vehicula. Itaque earum rerum hic
120+
tenetur a sapiente delectus, ut aut reiciendis voluptatibus
121+
maiores alias consequatur aut perferendis doloribus
122+
asperiores repellat. Neque porro quisquam est, qui dolorem
123+
ipsum quia dolor sit amet, consectetur, adipisci velit, sed
124+
quia non numquam eius modi tempora incidunt ut labore et
125+
dolore magnam aliquam quaerat voluptatem. Phasellus faucibus
126+
molestie nisl. Vestibulum fermentum tortor id mi. Integer
127+
rutrum, orci vestibulum ullamcorper ultricies, lacus quam
128+
ultricies odio, vitae placerat pede sem sit amet enim.
129+
Maecenas sollicitudin. Nullam rhoncus aliquam metus.
130+
</p>
131+
<p>
132+
Curabitur ligula sapien, pulvinar a vestibulum quis,
133+
facilisis vel sapien. Fusce nibh. Proin pede metus,
134+
vulputate nec, fermentum fringilla, vehicula vitae, justo.
135+
Aenean placerat. Aliquam erat volutpat. Et harum quidem
136+
rerum facilis est et expedita distinctio. Fusce nibh.
137+
Temporibus autem quibusdam et aut officiis debitis aut rerum
138+
necessitatibus saepe eveniet ut et voluptates repudiandae
139+
sint et molestiae non recusandae. Vestibulum erat nulla,
140+
ullamcorper nec, rutrum non, nonummy ac, erat. Etiam posuere
141+
lacus quis dolor. Mauris elementum mauris vitae tortor.
142+
Nulla turpis magna, cursus sit amet, suscipit a, interdum
143+
id, felis. Nam libero tempore, cum soluta nobis est eligendi
144+
optio cumque nihil impedit quo minus id quod maxime placeat
145+
facere possimus, omnis voluptas assumenda est, omnis dolor
146+
repellendus. Nulla accumsan, elit sit amet varius semper,
147+
nulla mauris mollis quam, tempor suscipit diam nulla vel
148+
leo. Pellentesque sapien.
149+
</p>
150+
<p>
151+
Curabitur vitae diam non enim vestibulum interdum. Sed elit
152+
dui, pellentesque a, faucibus vel, interdum nec, diam.
153+
Praesent vitae arcu tempor neque lacinia pretium. Ut tempus
154+
purus at lorem. Phasellus rhoncus. Temporibus autem
155+
quibusdam et aut officiis debitis aut rerum necessitatibus
156+
saepe eveniet ut et voluptates repudiandae sint et molestiae
157+
non recusandae. Duis ante orci, molestie vitae vehicula
158+
venenatis, tincidunt ac pede. Integer vulputate sem a nibh
159+
rutrum consequat. Aenean placerat. Cum sociis natoque
160+
penatibus et magnis dis parturient montes, nascetur
161+
ridiculus mus. Sed vel lectus. Donec odio tempus molestie,
162+
porttitor ut, iaculis quis, sem. Class aptent taciti
163+
sociosqu ad litora torquent per conubia nostra, per inceptos
164+
hymenaeos. Integer in sapien. Nullam dapibus fermentum
165+
ipsum.
166+
</p>
167+
<p>
168+
Integer vulputate sem a nibh rutrum consequat. Class aptent
169+
taciti sociosqu ad litora torquent per conubia nostra, per
170+
inceptos hymenaeos. Duis bibendum, lectus ut viverra
171+
rhoncus, dolor nunc faucibus libero, eget facilisis enim
172+
ipsum id lacus. Aliquam erat volutpat. Aenean id metus id
173+
velit ullamcorper pulvinar. Morbi scelerisque luctus velit.
174+
Aliquam erat volutpat. Temporibus autem quibusdam et aut
175+
officiis debitis aut rerum necessitatibus saepe eveniet ut
176+
et voluptates repudiandae sint et molestiae non recusandae.
177+
Fusce dui leo, imperdiet in, aliquam sit amet, feugiat eu,
178+
orci. Suspendisse sagittis ultrices augue. Nullam justo
179+
enim, consectetuer nec, ullamcorper ac, vestibulum in, elit.
180+
Praesent vitae arcu tempor neque lacinia pretium. Nullam
181+
faucibus mi quis velit. Maecenas aliquet accumsan leo. Morbi
182+
scelerisque luctus velit. Aliquam ornare wisi eu metus.
183+
</p>
184+
<p>
185+
Sed elit dui, pellentesque a, faucibus vel, interdum nec,
186+
diam. Praesent vitae arcu tempor neque lacinia pretium.
187+
Etiam dictum tincidunt diam. Et harum quidem rerum facilis
188+
est et expedita distinctio. Duis ante orci, molestie vitae
189+
vehicula venenatis, tincidunt ac pede. Integer lacinia.
190+
Excepteur sint occaecat cupidatat non proident, sunt in
191+
culpa qui officia deserunt mollit anim id est laborum.
192+
Mauris tincidunt sem sed arcu. Praesent in mauris eu tortor
193+
porttitor accumsan. Aenean id metus id velit ullamcorper
194+
pulvinar. Donec iaculis gravida nulla. Duis bibendum, lectus
195+
ut viverra rhoncus, dolor nunc faucibus libero, eget
196+
facilisis enim ipsum id lacus. Nulla quis diam. Quisque
197+
porta. Integer rutrum, orci vestibulum ullamcorper
198+
ultricies, lacus quam ultricies odio, vitae placerat pede
199+
sem sit amet enim. Nam sed tellus id magna elementum
200+
tincidunt. In enim a arcu imperdiet malesuada.
201+
</p>
202+
</sp-dialog-wrapper>
203+
<sp-button slot="trigger" variant="primary">
204+
Toggle Dialog
205+
</sp-button>
206+
</overlay-trigger>
207+
`;
208+
};
209+
99210
export const wrapperDismissableUnderlayError = (): TemplateResult => {
100211
return html`
101212
<div>

0 commit comments

Comments
 (0)