Skip to content

Commit 4057330

Browse files
refactor: modal improve scroll lock tests
1 parent fd614cc commit 4057330

File tree

5 files changed

+57
-149
lines changed

5 files changed

+57
-149
lines changed
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import { component$, useSignal, useStyles$, useVisibleTask$ } from '@builder.io/qwik';
2+
import { Modal } from '@qwik-ui/headless';
3+
import styles from '../snippets/modal.css?inline';
4+
import flatpickr from 'flatpickr';
5+
import datePickerStyles from 'flatpickr/dist/flatpickr.min.css?inline';
6+
7+
export default component$(() => {
8+
useStyles$(styles);
9+
useStyles$(datePickerStyles);
10+
const pickerTriggerRef = useSignal<HTMLButtonElement>();
11+
const isOpen = useSignal(false);
12+
13+
useVisibleTask$(() => {
14+
if (pickerTriggerRef.value) {
15+
flatpickr(pickerTriggerRef.value);
16+
}
17+
});
18+
19+
return (
20+
<>
21+
<button class="modal-trigger" onClick$={() => (isOpen.value = true)}>
22+
Open Modal
23+
</button>
24+
<Modal
25+
style={{ width: '300px', height: '200px', background: 'white' }}
26+
class="modal"
27+
bind:show={isOpen}
28+
>
29+
<button ref={pickerTriggerRef}>Open Date Picker</button>
30+
</Modal>
31+
</>
32+
);
33+
});

apps/website/src/routes/docs/headless/modal/examples/scroll-lock.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export default component$(() => {
77
const isOpen = useSignal(false);
88

99
return (
10-
<div style={{ height: '200vh' }}>
10+
<div>
1111
<button class="modal-trigger" onClick$={() => (isOpen.value = true)}>
1212
Open Modal
1313
</button>

package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,5 +182,8 @@
182182
],
183183
"nx": {
184184
"includedScripts": []
185+
},
186+
"dependencies": {
187+
"flatpickr": "4.6.13"
185188
}
186189
}

packages/kit-headless/src/components/modal/modal.test.ts

Lines changed: 4 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -69,21 +69,11 @@ test.describe('Scroll locking', () => {
6969
THEN the body should have overflow hidden`, async ({ page }) => {
7070
const { driver: d } = await setup(page, 'scroll-lock');
7171

72-
expect(
73-
await page.evaluate(() => {
74-
const { overflow } = getComputedStyle(document.body);
75-
return overflow === 'hidden';
76-
}),
77-
).toBe(false);
72+
await expect(page.locator('body')).toHaveCSS('overflow', 'visible');
7873

7974
await d.openModal();
8075

81-
expect(
82-
await page.evaluate(() => {
83-
const { overflow } = getComputedStyle(document.body);
84-
return overflow === 'hidden';
85-
}),
86-
).toBe(true);
76+
await expect(page.locator('body')).toHaveCSS('overflow', 'hidden');
8777
});
8878

8979
test(`GIVEN an open modal that has overflow hidden on the body
@@ -100,22 +90,12 @@ test.describe('Scroll locking', () => {
10090

10191
await d.openModal();
10292

103-
expect(
104-
await page.evaluate(() => {
105-
const { overflow } = getComputedStyle(document.body);
106-
return overflow === 'hidden';
107-
}),
108-
).toBe(true);
93+
await expect(page.locator('body')).toHaveCSS('overflow', 'hidden');
10994

11095
await d.getTrigger().press('Escape');
11196
await expect(d.getModal()).toBeHidden();
11297

113-
expect(
114-
await page.evaluate(() => {
115-
const { overflow } = getComputedStyle(document.body);
116-
return overflow === 'hidden';
117-
}),
118-
).toBe(false);
98+
await expect(page.locator('body')).toHaveCSS('overflow', 'visible');
11999
});
120100

121101
test(`GIVEN two open modals, one nested inside the other

0 commit comments

Comments
 (0)