@grantcodes/ui 2.15.6 → 2.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +67 -0
- package/custom-elements.json +476 -346
- package/package.json +23 -23
- package/src/components/accordion/accordion-item.component.js +17 -19
- package/src/components/accordion/accordion-item.css +40 -44
- package/src/components/accordion/accordion.component.js +7 -7
- package/src/components/accordion/accordion.css +5 -5
- package/src/components/accordion/accordion.js +6 -6
- package/src/components/accordion/accordion.react.js +6 -6
- package/src/components/accordion/accordion.stories.js +10 -10
- package/src/components/accordion/accordion.test.js +100 -100
- package/src/components/accordion/index.js +6 -6
- package/src/components/app-bar/app-bar.component.js +86 -92
- package/src/components/app-bar/app-bar.css +187 -203
- package/src/components/app-bar/app-bar.js +3 -3
- package/src/components/app-bar/app-bar.react.js +9 -9
- package/src/components/app-bar/app-bar.stories.js +20 -20
- package/src/components/app-bar/app-bar.test.js +190 -237
- package/src/components/app-bar/index.js +1 -1
- package/src/components/app-bar/nav-link.component.js +7 -9
- package/src/components/app-bar/nav-link.css +23 -28
- package/src/components/app-bar/nav-link.js +3 -3
- package/src/components/app-bar/nav-link.react.js +6 -6
- package/src/components/avatar/avatar.component.js +79 -68
- package/src/components/avatar/avatar.css +18 -18
- package/src/components/avatar/avatar.js +3 -3
- package/src/components/avatar/avatar.react.js +6 -6
- package/src/components/avatar/avatar.stories.js +24 -23
- package/src/components/avatar/avatar.test.js +128 -84
- package/src/components/avatar/index.js +1 -1
- package/src/components/badge/badge.component.js +23 -23
- package/src/components/badge/badge.css +39 -52
- package/src/components/badge/badge.js +3 -3
- package/src/components/badge/badge.react.js +6 -6
- package/src/components/badge/badge.stories.js +23 -23
- package/src/components/badge/badge.test.js +53 -68
- package/src/components/badge/index.js +1 -1
- package/src/components/breadcrumb/breadcrumb.component.js +95 -96
- package/src/components/breadcrumb/breadcrumb.css +42 -44
- package/src/components/breadcrumb/breadcrumb.js +6 -9
- package/src/components/breadcrumb/breadcrumb.react.js +9 -12
- package/src/components/breadcrumb/breadcrumb.stories.js +5 -5
- package/src/components/breadcrumb/breadcrumb.test.js +139 -151
- package/src/components/breadcrumb/index.js +1 -1
- package/src/components/button/button.component.js +101 -103
- package/src/components/button/button.css +90 -94
- package/src/components/button/button.js +3 -3
- package/src/components/button/button.react.js +6 -6
- package/src/components/button/button.stories.js +25 -25
- package/src/components/button/button.test.js +324 -344
- package/src/components/button/index.js +1 -1
- package/src/components/button-group/button-group.component.js +18 -18
- package/src/components/button-group/button-group.css +16 -16
- package/src/components/button-group/button-group.js +3 -3
- package/src/components/button-group/button-group.react.js +6 -6
- package/src/components/button-group/button-group.stories.js +23 -23
- package/src/components/button-group/button-group.test.js +54 -54
- package/src/components/button-group/index.js +1 -1
- package/src/components/card/card.component.js +31 -33
- package/src/components/card/card.css +85 -85
- package/src/components/card/card.js +4 -4
- package/src/components/card/card.react.js +6 -6
- package/src/components/card/card.stories.js +27 -26
- package/src/components/card/card.test.js +56 -56
- package/src/components/card/index.js +1 -1
- package/src/components/code-preview/code-preview.component.js +47 -48
- package/src/components/code-preview/code-preview.css +11 -11
- package/src/components/code-preview/code-preview.js +3 -3
- package/src/components/code-preview/code-preview.react.js +6 -6
- package/src/components/code-preview/code-preview.stories.js +29 -29
- package/src/components/code-preview/code-preview.test.js +112 -135
- package/src/components/code-preview/index.js +1 -1
- package/src/components/container/container.component.js +27 -27
- package/src/components/container/container.css +22 -22
- package/src/components/container/container.js +3 -3
- package/src/components/container/container.react.js +6 -6
- package/src/components/container/container.stories.js +44 -44
- package/src/components/container/container.test.js +54 -66
- package/src/components/container/index.js +1 -1
- package/src/components/countdown/countdown.component.js +160 -162
- package/src/components/countdown/countdown.css +50 -34
- package/src/components/countdown/countdown.js +3 -3
- package/src/components/countdown/countdown.react.js +6 -6
- package/src/components/countdown/countdown.stories.js +34 -34
- package/src/components/countdown/index.js +1 -1
- package/src/components/cta/cta.component.js +77 -81
- package/src/components/cta/cta.css +24 -24
- package/src/components/cta/cta.js +3 -3
- package/src/components/cta/cta.react.js +6 -6
- package/src/components/cta/cta.stories.js +32 -32
- package/src/components/cta/index.js +1 -1
- package/src/components/dialog/dialog.component.js +95 -58
- package/src/components/dialog/dialog.css +45 -50
- package/src/components/dialog/dialog.js +3 -3
- package/src/components/dialog/dialog.react.js +6 -6
- package/src/components/dialog/dialog.stories.js +38 -29
- package/src/components/dialog/dialog.test.js +188 -102
- package/src/components/dialog/index.js +1 -1
- package/src/components/dropdown/dropdown.component.js +220 -201
- package/src/components/dropdown/dropdown.css +60 -84
- package/src/components/dropdown/dropdown.js +6 -9
- package/src/components/dropdown/dropdown.react.js +15 -15
- package/src/components/dropdown/dropdown.stories.js +10 -10
- package/src/components/dropdown/dropdown.test.js +211 -157
- package/src/components/dropdown/index.js +1 -1
- package/src/components/dropzone/dropzone.component.js +126 -129
- package/src/components/dropzone/dropzone.css +35 -37
- package/src/components/dropzone/dropzone.js +3 -3
- package/src/components/dropzone/dropzone.react.js +6 -6
- package/src/components/dropzone/dropzone.stories.js +28 -28
- package/src/components/dropzone/dropzone.test.js +91 -99
- package/src/components/dropzone/index.js +1 -1
- package/src/components/feature-list/feature-list.component.js +78 -86
- package/src/components/feature-list/feature-list.css +37 -37
- package/src/components/feature-list/feature-list.js +3 -3
- package/src/components/feature-list/feature-list.react.js +6 -6
- package/src/components/feature-list/feature-list.stories.js +86 -90
- package/src/components/feature-list/index.js +1 -1
- package/src/components/footer/footer-column.component.js +7 -7
- package/src/components/footer/footer-column.css +22 -22
- package/src/components/footer/footer.component.js +19 -19
- package/src/components/footer/footer.css +38 -38
- package/src/components/footer/footer.js +8 -8
- package/src/components/footer/footer.react.js +9 -9
- package/src/components/footer/footer.stories.js +9 -9
- package/src/components/footer/footer.test.js +101 -111
- package/src/components/footer/index.js +2 -2
- package/src/components/form-field/form-field.component.js +167 -125
- package/src/components/form-field/form-field.css +24 -24
- package/src/components/form-field/form-field.js +3 -3
- package/src/components/form-field/form-field.react.js +6 -6
- package/src/components/form-field/form-field.stories.js +53 -44
- package/src/components/form-field/form-field.test.js +280 -134
- package/src/components/form-field/index.js +1 -1
- package/src/components/gallery/gallery-image.component.js +30 -30
- package/src/components/gallery/gallery-image.js +3 -3
- package/src/components/gallery/gallery-image.react.js +6 -6
- package/src/components/gallery/gallery.component.js +24 -17
- package/src/components/gallery/gallery.css +79 -72
- package/src/components/gallery/gallery.js +3 -3
- package/src/components/gallery/gallery.react.js +6 -6
- package/src/components/gallery/gallery.stories.js +69 -68
- package/src/components/gallery/gallery.test.js +95 -88
- package/src/components/gallery/index.js +2 -2
- package/src/components/hero/hero.component.js +53 -57
- package/src/components/hero/hero.css +27 -27
- package/src/components/hero/hero.js +3 -3
- package/src/components/hero/hero.react.js +6 -6
- package/src/components/hero/hero.stories.js +39 -39
- package/src/components/hero/index.js +1 -1
- package/src/components/icon/icon.component.js +10 -10
- package/src/components/icon/icon.css +13 -13
- package/src/components/icon/icon.js +4 -4
- package/src/components/icon/icon.react.js +6 -6
- package/src/components/icon/icon.stories.js +8 -9
- package/src/components/icon/icon.test.js +54 -55
- package/src/components/icon/index.js +1 -1
- package/src/components/loading/index.js +1 -1
- package/src/components/loading/loading.component.js +41 -14
- package/src/components/loading/loading.css +47 -30
- package/src/components/loading/loading.js +4 -4
- package/src/components/loading/loading.react.js +6 -6
- package/src/components/loading/loading.stories.js +19 -18
- package/src/components/loading/loading.test.js +77 -54
- package/src/components/logo-cloud/index.js +1 -1
- package/src/components/logo-cloud/logo-cloud.component.js +39 -43
- package/src/components/logo-cloud/logo-cloud.css +31 -31
- package/src/components/logo-cloud/logo-cloud.js +3 -3
- package/src/components/logo-cloud/logo-cloud.react.js +6 -6
- package/src/components/logo-cloud/logo-cloud.stories.js +80 -80
- package/src/components/map/index.js +1 -1
- package/src/components/map/map.component.js +103 -107
- package/src/components/map/map.css +22 -22
- package/src/components/map/map.js +3 -3
- package/src/components/map/map.react.js +6 -6
- package/src/components/map/map.stories.js +38 -38
- package/src/components/media-text/index.js +1 -1
- package/src/components/media-text/media-text.component.js +76 -70
- package/src/components/media-text/media-text.css +32 -32
- package/src/components/media-text/media-text.js +3 -3
- package/src/components/media-text/media-text.react.js +6 -6
- package/src/components/media-text/media-text.stories.js +45 -45
- package/src/components/media-text/media-text.test.js +72 -0
- package/src/components/newsletter/index.js +1 -1
- package/src/components/newsletter/newsletter.component.js +56 -64
- package/src/components/newsletter/newsletter.css +48 -48
- package/src/components/newsletter/newsletter.js +3 -3
- package/src/components/newsletter/newsletter.react.js +6 -6
- package/src/components/newsletter/newsletter.stories.js +35 -35
- package/src/components/notice/index.js +1 -1
- package/src/components/notice/notice.component.js +66 -55
- package/src/components/notice/notice.css +37 -38
- package/src/components/notice/notice.js +3 -3
- package/src/components/notice/notice.react.js +6 -6
- package/src/components/notice/notice.stories.js +54 -53
- package/src/components/notice/notice.test.js +210 -156
- package/src/components/pagination/index.js +1 -1
- package/src/components/pagination/pagination.component.js +44 -44
- package/src/components/pagination/pagination.css +6 -6
- package/src/components/pagination/pagination.js +4 -4
- package/src/components/pagination/pagination.react.js +6 -6
- package/src/components/pagination/pagination.stories.js +20 -18
- package/src/components/pagination/pagination.test.js +95 -102
- package/src/components/person/index.js +1 -1
- package/src/components/person/person.component.js +29 -29
- package/src/components/person/person.css +17 -17
- package/src/components/person/person.js +4 -4
- package/src/components/person/person.react.js +6 -6
- package/src/components/person/person.stories.js +34 -33
- package/src/components/person/person.test.js +55 -68
- package/src/components/pricing/index.js +1 -1
- package/src/components/pricing/pricing.component.js +58 -70
- package/src/components/pricing/pricing.css +65 -65
- package/src/components/pricing/pricing.js +3 -3
- package/src/components/pricing/pricing.react.js +6 -6
- package/src/components/pricing/pricing.stories.js +96 -96
- package/src/components/sidebar/index.js +1 -1
- package/src/components/sidebar/sidebar.component.js +157 -130
- package/src/components/sidebar/sidebar.css +118 -115
- package/src/components/sidebar/sidebar.js +4 -4
- package/src/components/sidebar/sidebar.react.js +10 -10
- package/src/components/sidebar/sidebar.stories.js +10 -10
- package/src/components/sidebar/sidebar.test.js +250 -230
- package/src/components/stats/index.js +1 -1
- package/src/components/stats/stats.component.js +42 -50
- package/src/components/stats/stats.css +29 -29
- package/src/components/stats/stats.js +3 -3
- package/src/components/stats/stats.react.js +6 -6
- package/src/components/stats/stats.stories.js +40 -40
- package/src/components/tabs/index.js +2 -2
- package/src/components/tabs/internal/tabs-button.component.js +16 -27
- package/src/components/tabs/internal/tabs-button.js +3 -3
- package/src/components/tabs/internal/tabs-button.react.js +6 -6
- package/src/components/tabs/internal/tabs-item.component.js +30 -30
- package/src/components/tabs/tab.component.js +9 -11
- package/src/components/tabs/tab.js +3 -3
- package/src/components/tabs/tab.react.js +6 -6
- package/src/components/tabs/tabs.component.js +107 -109
- package/src/components/tabs/tabs.css +50 -59
- package/src/components/tabs/tabs.js +4 -4
- package/src/components/tabs/tabs.react.js +6 -6
- package/src/components/tabs/tabs.stories.js +23 -22
- package/src/components/tabs/tabs.test.js +201 -147
- package/src/components/testimonials/index.js +1 -1
- package/src/components/testimonials/testimonials.component.js +47 -51
- package/src/components/testimonials/testimonials.css +31 -31
- package/src/components/testimonials/testimonials.js +3 -3
- package/src/components/testimonials/testimonials.react.js +6 -6
- package/src/components/testimonials/testimonials.stories.js +49 -51
- package/src/components/toast/index.js +1 -1
- package/src/components/toast/toast.component.js +217 -148
- package/src/components/toast/toast.css +101 -99
- package/src/components/toast/toast.js +6 -9
- package/src/components/toast/toast.react.js +12 -12
- package/src/components/toast/toast.stories.js +75 -49
- package/src/components/toast/toast.test.js +260 -221
- package/src/components/tooltip/index.js +1 -1
- package/src/components/tooltip/tooltip.component.js +56 -49
- package/src/components/tooltip/tooltip.css +61 -50
- package/src/components/tooltip/tooltip.js +4 -4
- package/src/components/tooltip/tooltip.react.js +6 -6
- package/src/components/tooltip/tooltip.stories.js +24 -23
- package/src/components/tooltip/tooltip.test.js +143 -155
- package/src/constructor.test.js +31 -0
- package/src/css/base.css +1 -0
- package/src/css/colors.stories.js +120 -122
- package/src/css/elements/a.css +28 -28
- package/src/css/elements/forms/button.css +1 -1
- package/src/css/elements/forms/input.css +80 -80
- package/src/css/elements/forms/label.css +3 -3
- package/src/css/elements/media/image.css +2 -2
- package/src/css/elements.stories.js +48 -49
- package/src/css/helpers.css +8 -8
- package/src/css/layers.stories.js +5 -5
- package/src/css/reset.css +102 -102
- package/src/css/themes/todomap.css +1 -1
- package/src/css/tokens.stories.js +50 -53
- package/src/css/typography.css +30 -32
- package/src/css/typography.stories.js +92 -92
- package/src/css/util/focus-ring.css +12 -20
- package/src/css/view-transitions.css +16 -0
- package/src/exports.test.js +89 -105
- package/src/icons.js +1 -1
- package/src/lib/generate-id.js +1 -1
- package/src/lib/slot-presence-controller.js +48 -0
- package/src/lib/styles/all.css +38 -37
- package/src/lib/styles/focus-ring.css +12 -20
- package/src/lib/view-transition.js +42 -0
- package/src/lib/view-transition.test.js +105 -0
- package/src/main.js +29 -29
- package/src/pages/agency.stories.js +59 -59
- package/src/pages/blog-post.stories.js +48 -48
- package/src/pages/saas-landing.stories.js +180 -180
- package/src/react.js +44 -44
- package/src/react.test.js +42 -51
- package/src/test-utils/assert-helpers.js +39 -58
- package/src/test-utils/events.js +32 -34
- package/src/test-utils/fixture.js +31 -31
- package/src/test-utils/index.js +3 -3
- package/src/types.d.ts +3 -3
|
@@ -1,103 +1,189 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
describe(
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
1
|
+
import { strict as assert } from 'node:assert';
|
|
2
|
+
import { afterEach, describe, it } from 'node:test';
|
|
3
|
+
import { cleanup, click, fixture } from '../../test-utils/index.js';
|
|
4
|
+
import './dialog.js';
|
|
5
|
+
|
|
6
|
+
describe('Dialog Component', () => {
|
|
7
|
+
let element;
|
|
8
|
+
|
|
9
|
+
afterEach(() => {
|
|
10
|
+
cleanup(element);
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
it('should render with default properties', async () => {
|
|
14
|
+
element = await fixture('grantcodes-dialog');
|
|
15
|
+
assert.ok(element, 'Element should be created');
|
|
16
|
+
assert.ok(element.shadowRoot, 'Element should have shadow root');
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it('should be closed by default', async () => {
|
|
20
|
+
element = await fixture('grantcodes-dialog');
|
|
21
|
+
assert.strictEqual(element.open, false, 'Dialog should be closed by default');
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
it('should render dialog element', async () => {
|
|
25
|
+
element = await fixture('grantcodes-dialog');
|
|
26
|
+
const dialog = element.shadowRoot.querySelector('dialog');
|
|
27
|
+
assert.ok(dialog, 'Dialog element should exist');
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
it('should open modally and close through the native dialog methods', async () => {
|
|
31
|
+
element = await fixture('grantcodes-dialog');
|
|
32
|
+
const dialog = element.shadowRoot.querySelector('dialog');
|
|
33
|
+
let modalOpens = 0;
|
|
34
|
+
let closes = 0;
|
|
35
|
+
dialog.showModal = () => {
|
|
36
|
+
assert.strictEqual(dialog.open, false, 'The open attribute must not precede showModal');
|
|
37
|
+
modalOpens++;
|
|
38
|
+
dialog.setAttribute('open', '');
|
|
39
|
+
};
|
|
40
|
+
dialog.close = () => {
|
|
41
|
+
closes++;
|
|
42
|
+
dialog.removeAttribute('open');
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
element.open = true;
|
|
46
|
+
await element.updateComplete;
|
|
47
|
+
assert.strictEqual(modalOpens, 1, 'Opening must call showModal');
|
|
48
|
+
|
|
49
|
+
element.open = false;
|
|
50
|
+
await element.updateComplete;
|
|
51
|
+
assert.strictEqual(closes, 1, 'Closing must call close');
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
it('should be dismissible by default', async () => {
|
|
55
|
+
element = await fixture('grantcodes-dialog');
|
|
56
|
+
assert.strictEqual(element.dismissible, true, 'Should be dismissible by default');
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
it('should render dismiss button when dismissible', async () => {
|
|
60
|
+
element = await fixture('grantcodes-dialog', {
|
|
61
|
+
dismissible: true,
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
const dismissButton = element.shadowRoot.querySelector('.dialog__dismiss');
|
|
65
|
+
assert.ok(dismissButton, 'Dismiss button should exist');
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
it('should not render dismiss button when not dismissible', async () => {
|
|
69
|
+
element = await fixture('grantcodes-dialog', {
|
|
70
|
+
dismissible: false,
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
const dismissButton = element.shadowRoot.querySelector('.dialog__dismiss');
|
|
74
|
+
assert.ok(!dismissButton, 'Dismiss button should not exist');
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
it('should have header slot', async () => {
|
|
78
|
+
element = await fixture('grantcodes-dialog');
|
|
79
|
+
const headerSlot = element.shadowRoot.querySelector('slot[name="header"]');
|
|
80
|
+
assert.ok(headerSlot, 'Header slot should exist');
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
it('should have footer slot', async () => {
|
|
84
|
+
element = await fixture('grantcodes-dialog');
|
|
85
|
+
const footerSlot = element.shadowRoot.querySelector('slot[name="footer"]');
|
|
86
|
+
assert.ok(footerSlot, 'Footer slot should exist');
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
it('should have default content slot', async () => {
|
|
90
|
+
element = await fixture('grantcodes-dialog');
|
|
91
|
+
const slot = element.shadowRoot.querySelector('slot.dialog__content');
|
|
92
|
+
assert.ok(slot, 'Content slot should exist');
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
it('should hide the header when nothing is slotted into it', async () => {
|
|
96
|
+
element = await fixture('grantcodes-dialog');
|
|
97
|
+
const header = element.shadowRoot.querySelector('.dialog__header');
|
|
98
|
+
assert.ok(header, 'Header element should exist');
|
|
99
|
+
assert.ok(header.hasAttribute('hidden'), 'Header should be hidden without slotted content');
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
it('should render the header when content is slotted into it', async () => {
|
|
103
|
+
element = document.createElement('grantcodes-dialog');
|
|
104
|
+
element.innerHTML = '<h2 slot="header">Dialog Header</h2>';
|
|
105
|
+
document.body.appendChild(element);
|
|
106
|
+
await element.updateComplete;
|
|
107
|
+
|
|
108
|
+
const header = element.shadowRoot.querySelector('.dialog__header');
|
|
109
|
+
assert.ok(header, 'Header element should exist');
|
|
110
|
+
assert.ok(
|
|
111
|
+
!header.hasAttribute('hidden'),
|
|
112
|
+
'Header should be visible when content is slotted into it',
|
|
113
|
+
);
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
it('should hide the footer when nothing is slotted into it', async () => {
|
|
117
|
+
element = await fixture('grantcodes-dialog');
|
|
118
|
+
const footer = element.shadowRoot.querySelector('.dialog__footer');
|
|
119
|
+
assert.ok(footer, 'Footer element should exist');
|
|
120
|
+
assert.ok(footer.hasAttribute('hidden'), 'Footer should be hidden without slotted content');
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
it('should render the footer when content is slotted into it', async () => {
|
|
124
|
+
element = document.createElement('grantcodes-dialog');
|
|
125
|
+
element.innerHTML = '<div slot="footer">Actions</div>';
|
|
126
|
+
document.body.appendChild(element);
|
|
127
|
+
await element.updateComplete;
|
|
128
|
+
|
|
129
|
+
const footer = element.shadowRoot.querySelector('.dialog__footer');
|
|
130
|
+
assert.ok(footer, 'Footer element should exist');
|
|
131
|
+
assert.ok(
|
|
132
|
+
!footer.hasAttribute('hidden'),
|
|
133
|
+
'Footer should be visible when content is slotted into it',
|
|
134
|
+
);
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
it('should close when dismiss button is clicked', async () => {
|
|
138
|
+
element = await fixture('grantcodes-dialog', {
|
|
139
|
+
open: true,
|
|
140
|
+
dismissible: true,
|
|
141
|
+
});
|
|
142
|
+
|
|
143
|
+
const dismissButton = element.shadowRoot.querySelector('.dialog__dismiss');
|
|
144
|
+
click(dismissButton);
|
|
145
|
+
|
|
146
|
+
await element.updateComplete;
|
|
147
|
+
|
|
148
|
+
assert.strictEqual(element.open, false, 'Dialog should be closed');
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
it('should sync open to false when the native dialog fires close', async () => {
|
|
152
|
+
element = await fixture('grantcodes-dialog', { open: true });
|
|
153
|
+
const dialog = element.shadowRoot.querySelector('dialog');
|
|
154
|
+
|
|
155
|
+
dialog.dispatchEvent(new Event('close'));
|
|
156
|
+
await element.updateComplete;
|
|
157
|
+
|
|
158
|
+
assert.strictEqual(element.open, false, 'open should follow the native dialog state');
|
|
159
|
+
});
|
|
160
|
+
|
|
161
|
+
it('should sync open to false when the native dialog fires cancel', async () => {
|
|
162
|
+
element = await fixture('grantcodes-dialog', { open: true });
|
|
163
|
+
const dialog = element.shadowRoot.querySelector('dialog');
|
|
164
|
+
|
|
165
|
+
dialog.dispatchEvent(new Event('cancel'));
|
|
166
|
+
await element.updateComplete;
|
|
167
|
+
|
|
168
|
+
assert.strictEqual(element.open, false, 'Esc should sync open back to false');
|
|
169
|
+
});
|
|
170
|
+
|
|
171
|
+
it('should not throw when reopened after the native dialog closed', async () => {
|
|
172
|
+
element = await fixture('grantcodes-dialog', { open: true });
|
|
173
|
+
const dialog = element.shadowRoot.querySelector('dialog');
|
|
174
|
+
|
|
175
|
+
dialog.dispatchEvent(new Event('close'));
|
|
176
|
+
await element.updateComplete;
|
|
177
|
+
|
|
178
|
+
element.open = true;
|
|
179
|
+
await element.updateComplete;
|
|
180
|
+
|
|
181
|
+
assert.strictEqual(element.open, true, 'Dialog should reopen after a native close');
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
it('should not enable light-dismiss when not dismissible', async () => {
|
|
185
|
+
element = await fixture('grantcodes-dialog', { dismissible: false });
|
|
186
|
+
const dialog = element.shadowRoot.querySelector('dialog');
|
|
187
|
+
assert.notStrictEqual(dialog.getAttribute('closedby'), 'any');
|
|
188
|
+
});
|
|
103
189
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from
|
|
1
|
+
export * from './dialog.js';
|