@spectrum-web-components/dialog 0.11.0 → 0.11.2
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/custom-elements.json +504 -109
- package/package.json +13 -5
- package/sp-dialog-base.d.ts +6 -0
- package/sp-dialog-base.dev.js +4 -0
- package/sp-dialog-base.dev.js.map +7 -0
- package/sp-dialog-base.js +2 -0
- package/sp-dialog-base.js.map +7 -0
- package/sp-dialog-wrapper.dev.js +1 -0
- package/sp-dialog-wrapper.dev.js.map +1 -1
- package/sp-dialog-wrapper.js +1 -1
- package/sp-dialog-wrapper.js.map +2 -2
- package/sp-dialog.dev.js +1 -0
- package/sp-dialog.dev.js.map +1 -1
- package/sp-dialog.js +1 -1
- package/sp-dialog.js.map +2 -2
- package/src/Dialog.dev.js +46 -17
- package/src/Dialog.dev.js.map +1 -1
- package/src/Dialog.js +10 -10
- package/src/Dialog.js.map +2 -2
- package/src/DialogBase.d.ts +48 -0
- package/src/DialogBase.dev.js +177 -0
- package/src/DialogBase.dev.js.map +7 -0
- package/src/DialogBase.js +19 -0
- package/src/DialogBase.js.map +7 -0
- package/src/DialogWrapper.d.ts +6 -35
- package/src/DialogWrapper.dev.js +79 -188
- package/src/DialogWrapper.dev.js.map +2 -2
- package/src/DialogWrapper.js +53 -66
- package/src/DialogWrapper.js.map +3 -3
- package/src/dialog.css.dev.js +2 -1
- package/src/dialog.css.dev.js.map +2 -2
- package/src/dialog.css.js +2 -2
- package/src/dialog.css.js.map +3 -3
- package/src/index.d.ts +1 -0
- package/src/index.dev.js +2 -0
- package/src/index.dev.js.map +2 -2
- package/src/index.js +1 -1
- package/src/index.js.map +2 -2
- package/src/spectrum-dialog.css.dev.js +1 -0
- package/src/spectrum-dialog.css.dev.js.map +1 -1
- package/src/spectrum-dialog.css.js +1 -1
- package/src/spectrum-dialog.css.js.map +2 -2
- package/stories/dialog-base.stories.js +187 -0
- package/stories/dialog-base.stories.js.map +7 -0
- package/stories/dialog-wrapper.stories.js +171 -48
- package/stories/dialog-wrapper.stories.js.map +2 -2
- package/stories/dialog.stories.js +66 -19
- package/stories/dialog.stories.js.map +2 -2
- package/stories/images.js +3 -1
- package/stories/images.js.map +1 -1
- package/stories/index.js +37 -0
- package/stories/index.js.map +7 -0
- package/test/benchmark/basic-test.js +5 -1
- package/test/benchmark/basic-test.js.map +1 -1
- package/test/dialog-base.test-vrt.js +5 -0
- package/test/dialog-base.test-vrt.js.map +7 -0
- package/test/dialog-base.test.js +133 -0
- package/test/dialog-base.test.js.map +7 -0
- package/test/dialog-wrapper.test-vrt.js +4 -1
- package/test/dialog-wrapper.test-vrt.js.map +1 -1
- package/test/dialog-wrapper.test.js +208 -3
- package/test/dialog-wrapper.test.js.map +2 -2
- package/test/dialog.test-vrt.js +4 -1
- package/test/dialog.test-vrt.js.map +1 -1
- package/test/dialog.test.js +149 -13
- package/test/dialog.test.js.map +1 -1
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
import { html } from "@spectrum-web-components/base";
|
|
3
|
+
import "@spectrum-web-components/dialog/sp-dialog-base.js";
|
|
4
|
+
import "@spectrum-web-components/dialog/sp-dialog.js";
|
|
5
|
+
import "@spectrum-web-components/button/sp-button.js";
|
|
6
|
+
import "@spectrum-web-components/overlay/overlay-trigger.js";
|
|
7
|
+
import "@spectrum-web-components/checkbox/sp-checkbox.js";
|
|
8
|
+
import { alertDestructive } from "./dialog.stories.js";
|
|
9
|
+
import { portrait } from "./images.js";
|
|
10
|
+
import { overlayTriggerDecorator } from "./index.js";
|
|
11
|
+
export default {
|
|
12
|
+
title: "Dialog Base",
|
|
13
|
+
component: "sp-dialog-base",
|
|
14
|
+
decorators: [
|
|
15
|
+
(story) => html`
|
|
16
|
+
<overlay-trigger type="modal" open="click" placement="none">
|
|
17
|
+
<sp-button slot="trigger" variant="primary">
|
|
18
|
+
Toggle Dialog
|
|
19
|
+
</sp-button>
|
|
20
|
+
${story()}
|
|
21
|
+
</overlay-trigger>
|
|
22
|
+
`,
|
|
23
|
+
overlayTriggerDecorator
|
|
24
|
+
]
|
|
25
|
+
};
|
|
26
|
+
export const Slotted = () => html`
|
|
27
|
+
<sp-dialog-base
|
|
28
|
+
underlay
|
|
29
|
+
slot="click-content"
|
|
30
|
+
@click=${(event) => {
|
|
31
|
+
if (event.target.localName === "sp-button") {
|
|
32
|
+
event.target.dispatchEvent(
|
|
33
|
+
new Event("close", { bubbles: true, composed: true })
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
}}
|
|
37
|
+
>
|
|
38
|
+
${alertDestructive()}
|
|
39
|
+
</sp-dialog-base>
|
|
40
|
+
`;
|
|
41
|
+
export const disabledButton = () => {
|
|
42
|
+
return html`
|
|
43
|
+
<sp-dialog-base
|
|
44
|
+
underlay
|
|
45
|
+
slot="click-content"
|
|
46
|
+
@click=${(event) => {
|
|
47
|
+
if (event.target.localName === "sp-button") {
|
|
48
|
+
event.target.dispatchEvent(
|
|
49
|
+
new Event("close", { bubbles: true, composed: true })
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
}}
|
|
53
|
+
.overlayOpenCallback=${() => {
|
|
54
|
+
setTimeout(() => {
|
|
55
|
+
document.querySelector(
|
|
56
|
+
"#changing-header"
|
|
57
|
+
).textContent = "The button in this dialog is now enabled";
|
|
58
|
+
document.querySelector(
|
|
59
|
+
"#changing-button"
|
|
60
|
+
).disabled = false;
|
|
61
|
+
}, 5e3);
|
|
62
|
+
}}
|
|
63
|
+
.overlayCloseCallback=${() => {
|
|
64
|
+
document.querySelector("#changing-header").textContent = "The button in this dialog is disabled";
|
|
65
|
+
document.querySelector(
|
|
66
|
+
"#changing-button"
|
|
67
|
+
).disabled = true;
|
|
68
|
+
}}
|
|
69
|
+
>
|
|
70
|
+
<sp-dialog size="s">
|
|
71
|
+
<h2 slot="heading" id="changing-header">
|
|
72
|
+
The button in this dialog is disabled
|
|
73
|
+
</h2>
|
|
74
|
+
<p>After about 5 seconds the button with be enabled.</p>
|
|
75
|
+
<sp-button disabled slot="button" id="changing-button">
|
|
76
|
+
Ok
|
|
77
|
+
</sp-button>
|
|
78
|
+
</sp-dialog>
|
|
79
|
+
</sp-dialog-base>
|
|
80
|
+
`;
|
|
81
|
+
};
|
|
82
|
+
export const notAgain = () => html`
|
|
83
|
+
<sp-dialog-base
|
|
84
|
+
underlay
|
|
85
|
+
slot="click-content"
|
|
86
|
+
@click=${(event) => {
|
|
87
|
+
if (event.target.localName === "sp-button") {
|
|
88
|
+
event.target.dispatchEvent(
|
|
89
|
+
new Event("close", { bubbles: true, composed: true })
|
|
90
|
+
);
|
|
91
|
+
}
|
|
92
|
+
}}
|
|
93
|
+
>
|
|
94
|
+
<sp-dialog size="s">
|
|
95
|
+
<h2 slot="heading">A thing is about to happen</h2>
|
|
96
|
+
<p>Something that might happen a lot is about to happen.</p>
|
|
97
|
+
<p>
|
|
98
|
+
The click events for the "OK" button are bound to the story not
|
|
99
|
+
to the components in specific.
|
|
100
|
+
</p>
|
|
101
|
+
<sp-button variant="secondary" treatment="fill" slot="button">
|
|
102
|
+
Ok
|
|
103
|
+
</sp-button>
|
|
104
|
+
<sp-checkbox slot="footer">Don't show me this again</sp-checkbox>
|
|
105
|
+
</sp-dialog>
|
|
106
|
+
</sp-dialog-base>
|
|
107
|
+
`;
|
|
108
|
+
export const moreCustom = () => html`
|
|
109
|
+
<sp-dialog-base
|
|
110
|
+
underlay
|
|
111
|
+
slot="click-content"
|
|
112
|
+
@click=${(event) => {
|
|
113
|
+
if (event.target.localName === "sp-button") {
|
|
114
|
+
event.target.dispatchEvent(
|
|
115
|
+
new Event("close", { bubbles: true, composed: true })
|
|
116
|
+
);
|
|
117
|
+
}
|
|
118
|
+
}}
|
|
119
|
+
>
|
|
120
|
+
<div style="display: flex;">
|
|
121
|
+
<div
|
|
122
|
+
style="
|
|
123
|
+
display: grid;
|
|
124
|
+
place-content: center;
|
|
125
|
+
grid-template-columns: calc(100% - 40px);
|
|
126
|
+
grid-template-rows: calc(100% - 40px);
|
|
127
|
+
"
|
|
128
|
+
>
|
|
129
|
+
<img
|
|
130
|
+
src=${portrait}
|
|
131
|
+
alt=""
|
|
132
|
+
style="
|
|
133
|
+
width: 100%;
|
|
134
|
+
height: 100%;
|
|
135
|
+
object-fit: contain;
|
|
136
|
+
object-placement: center;
|
|
137
|
+
"
|
|
138
|
+
/>
|
|
139
|
+
</div>
|
|
140
|
+
<sp-dialog size="s">
|
|
141
|
+
<h2 slot="heading">Look at that image</h2>
|
|
142
|
+
<p>
|
|
143
|
+
Its position has been customized beyond the language of
|
|
144
|
+
Spectrum. Be careful with all this power. There's no
|
|
145
|
+
"mobile" default for delivering content like this.
|
|
146
|
+
</p>
|
|
147
|
+
<sp-button variant="accent" treatment="outline" slot="button">
|
|
148
|
+
Ok
|
|
149
|
+
</sp-button>
|
|
150
|
+
</sp-dialog>
|
|
151
|
+
</div>
|
|
152
|
+
</sp-dialog-base>
|
|
153
|
+
`;
|
|
154
|
+
export const fullyCustom = () => html`
|
|
155
|
+
<sp-dialog-base
|
|
156
|
+
underlay
|
|
157
|
+
slot="click-content"
|
|
158
|
+
@click=${(event) => {
|
|
159
|
+
if (event.target.localName === "button") {
|
|
160
|
+
event.target.dispatchEvent(
|
|
161
|
+
new Event("close", { bubbles: true, composed: true })
|
|
162
|
+
);
|
|
163
|
+
}
|
|
164
|
+
}}
|
|
165
|
+
>
|
|
166
|
+
<div id="fully-custom-dialog">
|
|
167
|
+
<style>
|
|
168
|
+
#fully-custom-dialog {
|
|
169
|
+
margin: 1em;
|
|
170
|
+
}
|
|
171
|
+
</style>
|
|
172
|
+
<h2>Custom headline</h2>
|
|
173
|
+
<p>
|
|
174
|
+
The click events for the "Done" button are bound to the story
|
|
175
|
+
not to the components in specific.
|
|
176
|
+
</p>
|
|
177
|
+
<p>
|
|
178
|
+
This is a demonstration of what is possible with
|
|
179
|
+
<sp-dialog-base>, only, and should not be seen as an
|
|
180
|
+
endorsement for fully custom dialog UIs.
|
|
181
|
+
</p>
|
|
182
|
+
<p>Fully open content area, for whatever DOM you would like.</p>
|
|
183
|
+
<button>Done</button>
|
|
184
|
+
</div>
|
|
185
|
+
</sp-dialog-base>
|
|
186
|
+
`;
|
|
187
|
+
//# sourceMappingURL=dialog-base.stories.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["dialog-base.stories.ts"],
|
|
4
|
+
"sourcesContent": ["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nimport { html, TemplateResult } from '@spectrum-web-components/base';\nimport '@spectrum-web-components/dialog/sp-dialog-base.js';\nimport '@spectrum-web-components/dialog/sp-dialog.js';\nimport '@spectrum-web-components/button/sp-button.js';\nimport '@spectrum-web-components/overlay/overlay-trigger.js';\nimport '@spectrum-web-components/checkbox/sp-checkbox.js';\nimport { alertDestructive } from './dialog.stories.js';\nimport { portrait } from './images.js';\nimport { overlayTriggerDecorator } from './index.js';\n\nexport default {\n title: 'Dialog Base',\n component: 'sp-dialog-base',\n decorators: [\n (story: () => TemplateResult): TemplateResult => html`\n <overlay-trigger type=\"modal\" open=\"click\" placement=\"none\">\n <sp-button slot=\"trigger\" variant=\"primary\">\n Toggle Dialog\n </sp-button>\n ${story()}\n </overlay-trigger>\n `,\n overlayTriggerDecorator,\n ],\n};\n\nexport const Slotted = (): TemplateResult => html`\n <sp-dialog-base\n underlay\n slot=\"click-content\"\n @click=${(event: Event) => {\n if ((event.target as HTMLElement).localName === 'sp-button') {\n (event.target as HTMLElement).dispatchEvent(\n new Event('close', { bubbles: true, composed: true })\n );\n }\n }}\n >\n ${alertDestructive()}\n </sp-dialog-base>\n`;\n\nexport const disabledButton = (): TemplateResult => {\n return html`\n <sp-dialog-base\n underlay\n slot=\"click-content\"\n @click=${(event: Event) => {\n if ((event.target as HTMLElement).localName === 'sp-button') {\n (event.target as HTMLElement).dispatchEvent(\n new Event('close', { bubbles: true, composed: true })\n );\n }\n }}\n .overlayOpenCallback=${() => {\n setTimeout(() => {\n (\n document.querySelector(\n '#changing-header'\n ) as HTMLElement\n ).textContent = 'The button in this dialog is now enabled';\n (\n document.querySelector(\n '#changing-button'\n ) as HTMLButtonElement\n ).disabled = false;\n }, 5000);\n }}\n .overlayCloseCallback=${() => {\n (\n document.querySelector('#changing-header') as HTMLElement\n ).textContent = 'The button in this dialog is disabled';\n (\n document.querySelector(\n '#changing-button'\n ) as HTMLButtonElement\n ).disabled = true;\n }}\n >\n <sp-dialog size=\"s\">\n <h2 slot=\"heading\" id=\"changing-header\">\n The button in this dialog is disabled\n </h2>\n <p>After about 5 seconds the button with be enabled.</p>\n <sp-button disabled slot=\"button\" id=\"changing-button\">\n Ok\n </sp-button>\n </sp-dialog>\n </sp-dialog-base>\n `;\n};\n\nexport const notAgain = (): TemplateResult => html`\n <sp-dialog-base\n underlay\n slot=\"click-content\"\n @click=${(event: Event) => {\n if ((event.target as HTMLElement).localName === 'sp-button') {\n (event.target as HTMLElement).dispatchEvent(\n new Event('close', { bubbles: true, composed: true })\n );\n }\n }}\n >\n <sp-dialog size=\"s\">\n <h2 slot=\"heading\">A thing is about to happen</h2>\n <p>Something that might happen a lot is about to happen.</p>\n <p>\n The click events for the \"OK\" button are bound to the story not\n to the components in specific.\n </p>\n <sp-button variant=\"secondary\" treatment=\"fill\" slot=\"button\">\n Ok\n </sp-button>\n <sp-checkbox slot=\"footer\">Don't show me this again</sp-checkbox>\n </sp-dialog>\n </sp-dialog-base>\n`;\n\nexport const moreCustom = (): TemplateResult => html`\n <sp-dialog-base\n underlay\n slot=\"click-content\"\n @click=${(event: Event) => {\n if ((event.target as HTMLElement).localName === 'sp-button') {\n (event.target as HTMLElement).dispatchEvent(\n new Event('close', { bubbles: true, composed: true })\n );\n }\n }}\n >\n <div style=\"display: flex;\">\n <div\n style=\"\n display: grid;\n place-content: center;\n grid-template-columns: calc(100% - 40px);\n grid-template-rows: calc(100% - 40px);\n \"\n >\n <img\n src=${portrait}\n alt=\"\"\n style=\"\n width: 100%;\n height: 100%;\n object-fit: contain;\n object-placement: center;\n \"\n />\n </div>\n <sp-dialog size=\"s\">\n <h2 slot=\"heading\">Look at that image</h2>\n <p>\n Its position has been customized beyond the language of\n Spectrum. Be careful with all this power. There's no\n \"mobile\" default for delivering content like this.\n </p>\n <sp-button variant=\"accent\" treatment=\"outline\" slot=\"button\">\n Ok\n </sp-button>\n </sp-dialog>\n </div>\n </sp-dialog-base>\n`;\n\nexport const fullyCustom = (): TemplateResult => html`\n <sp-dialog-base\n underlay\n slot=\"click-content\"\n @click=${(event: Event) => {\n if ((event.target as HTMLElement).localName === 'button') {\n (event.target as HTMLElement).dispatchEvent(\n new Event('close', { bubbles: true, composed: true })\n );\n }\n }}\n >\n <div id=\"fully-custom-dialog\">\n <style>\n #fully-custom-dialog {\n margin: 1em;\n }\n </style>\n <h2>Custom headline</h2>\n <p>\n The click events for the \"Done\" button are bound to the story\n not to the components in specific.\n </p>\n <p>\n This is a demonstration of what is possible with\n <sp-dialog-base>, only, and should not be seen as an\n endorsement for fully custom dialog UIs.\n </p>\n <p>Fully open content area, for whatever DOM you would like.</p>\n <button>Done</button>\n </div>\n </sp-dialog-base>\n`;\n"],
|
|
5
|
+
"mappings": ";AAYA,SAAS,YAA4B;AACrC,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AACP,SAAS,wBAAwB;AACjC,SAAS,gBAAgB;AACzB,SAAS,+BAA+B;AAExC,eAAe;AAAA,EACX,OAAO;AAAA,EACP,WAAW;AAAA,EACX,YAAY;AAAA,IACR,CAAC,UAAgD;AAAA;AAAA;AAAA;AAAA;AAAA,kBAKvC,MAAM;AAAA;AAAA;AAAA,IAGhB;AAAA,EACJ;AACJ;AAEO,aAAM,UAAU,MAAsB;AAAA;AAAA;AAAA;AAAA,iBAI5B,CAAC,UAAiB;AACvB,MAAK,MAAM,OAAuB,cAAc,aAAa;AACzD,IAAC,MAAM,OAAuB;AAAA,MAC1B,IAAI,MAAM,SAAS,EAAE,SAAS,MAAM,UAAU,KAAK,CAAC;AAAA,IACxD;AAAA,EACJ;AACJ;AAAA;AAAA,UAEE,iBAAiB;AAAA;AAAA;AAIpB,aAAM,iBAAiB,MAAsB;AAChD,SAAO;AAAA;AAAA;AAAA;AAAA,qBAIU,CAAC,UAAiB;AACvB,QAAK,MAAM,OAAuB,cAAc,aAAa;AACzD,MAAC,MAAM,OAAuB;AAAA,QAC1B,IAAI,MAAM,SAAS,EAAE,SAAS,MAAM,UAAU,KAAK,CAAC;AAAA,MACxD;AAAA,IACJ;AAAA,EACJ;AAAA,mCACuB,MAAM;AACzB,eAAW,MAAM;AACb,MACI,SAAS;AAAA,QACL;AAAA,MACJ,EACF,cAAc;AAChB,MACI,SAAS;AAAA,QACL;AAAA,MACJ,EACF,WAAW;AAAA,IACjB,GAAG,GAAI;AAAA,EACX;AAAA,oCACwB,MAAM;AAC1B,IACI,SAAS,cAAc,kBAAkB,EAC3C,cAAc;AAChB,IACI,SAAS;AAAA,MACL;AAAA,IACJ,EACF,WAAW;AAAA,EACjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAaZ;AAEO,aAAM,WAAW,MAAsB;AAAA;AAAA;AAAA;AAAA,iBAI7B,CAAC,UAAiB;AACvB,MAAK,MAAM,OAAuB,cAAc,aAAa;AACzD,IAAC,MAAM,OAAuB;AAAA,MAC1B,IAAI,MAAM,SAAS,EAAE,SAAS,MAAM,UAAU,KAAK,CAAC;AAAA,IACxD;AAAA,EACJ;AACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiBD,aAAM,aAAa,MAAsB;AAAA;AAAA;AAAA;AAAA,iBAI/B,CAAC,UAAiB;AACvB,MAAK,MAAM,OAAuB,cAAc,aAAa;AACzD,IAAC,MAAM,OAAuB;AAAA,MAC1B,IAAI,MAAM,SAAS,EAAE,SAAS,MAAM,UAAU,KAAK,CAAC;AAAA,IACxD;AAAA,EACJ;AACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAYkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAyBnB,aAAM,cAAc,MAAsB;AAAA;AAAA;AAAA;AAAA,iBAIhC,CAAC,UAAiB;AACvB,MAAK,MAAM,OAAuB,cAAc,UAAU;AACtD,IAAC,MAAM,OAAuB;AAAA,MAC1B,IAAI,MAAM,SAAS,EAAE,SAAS,MAAM,UAAU,KAAK,CAAC;AAAA,IACxD;AAAA,EACJ;AACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,11 +1,51 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
import { html } from "@spectrum-web-components/base";
|
|
3
|
+
import { ifDefined } from "@spectrum-web-components/base/src/directives.js";
|
|
4
|
+
import "@spectrum-web-components/button/sp-button.js";
|
|
5
|
+
import "@spectrum-web-components/field-label/sp-field-label.js";
|
|
6
|
+
import "@spectrum-web-components/help-text/sp-help-text.js";
|
|
7
|
+
import "@spectrum-web-components/textfield/sp-textfield.js";
|
|
8
|
+
import "@spectrum-web-components/tooltip/sp-tooltip.js";
|
|
9
|
+
import "@spectrum-web-components/overlay/overlay-trigger.js";
|
|
10
|
+
import "@spectrum-web-components/dialog/sp-dialog-wrapper.js";
|
|
11
|
+
import { landscape } from "./images.js";
|
|
12
|
+
import { overlayTriggerDecorator } from "./index.js";
|
|
13
|
+
export default {
|
|
14
|
+
title: "Dialog Wrapped",
|
|
15
|
+
component: "sp-dialog-wrapper",
|
|
16
|
+
argTypes: {
|
|
17
|
+
onClose: { action: "close" },
|
|
18
|
+
onConfirm: { action: "confirm" },
|
|
19
|
+
onSecondary: { action: "secondary" },
|
|
20
|
+
onCancel: { action: "cancel" }
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
const handleClose = ({ onClose }) => (event) => {
|
|
24
|
+
if (onClose)
|
|
25
|
+
onClose(event);
|
|
26
|
+
};
|
|
27
|
+
const handleConfirm = ({ onConfirm }) => (event) => {
|
|
28
|
+
if (onConfirm)
|
|
29
|
+
onConfirm(event);
|
|
30
|
+
};
|
|
31
|
+
const handleSecondary = ({ onSecondary }) => (event) => {
|
|
32
|
+
if (onSecondary)
|
|
33
|
+
onSecondary(event);
|
|
34
|
+
};
|
|
35
|
+
const handleCancel = ({ onCancel }) => (event) => {
|
|
36
|
+
if (onCancel)
|
|
37
|
+
onCancel(event);
|
|
38
|
+
};
|
|
39
|
+
export const wrapperLabeledHero = (args = {}, context = {}) => {
|
|
40
|
+
const open = context.viewMode === "docs" ? false : true;
|
|
41
|
+
return html`
|
|
2
42
|
<sp-dialog-wrapper
|
|
3
|
-
?open=${
|
|
4
|
-
hero=${
|
|
43
|
+
?open=${open}
|
|
44
|
+
hero=${landscape}
|
|
5
45
|
hero-label="Hero Image Alt Text"
|
|
6
46
|
dismissable
|
|
7
47
|
headline="Wrapped Dialog w/ Hero Image"
|
|
8
|
-
@close=${
|
|
48
|
+
@close=${handleClose(args)}
|
|
9
49
|
size="s"
|
|
10
50
|
>
|
|
11
51
|
Content of the dialog
|
|
@@ -21,13 +61,17 @@ import{html as a}from"@spectrum-web-components/base";import{ifDefined as p}from"
|
|
|
21
61
|
>
|
|
22
62
|
Toggle Dialog
|
|
23
63
|
</sp-button>
|
|
24
|
-
|
|
64
|
+
`;
|
|
65
|
+
};
|
|
66
|
+
export const wrapperDismissable = (args = {}, context = {}) => {
|
|
67
|
+
const open = context.viewMode === "docs" ? false : true;
|
|
68
|
+
return html`
|
|
25
69
|
<sp-dialog-wrapper
|
|
26
|
-
?open=${
|
|
27
|
-
hero=${
|
|
70
|
+
?open=${open}
|
|
71
|
+
hero=${landscape}
|
|
28
72
|
dismissable
|
|
29
73
|
headline="Wrapped Dialog w/ Hero Image"
|
|
30
|
-
@close=${
|
|
74
|
+
@close=${handleClose(args)}
|
|
31
75
|
size="s"
|
|
32
76
|
>
|
|
33
77
|
Content of the dialog
|
|
@@ -43,14 +87,18 @@ import{html as a}from"@spectrum-web-components/base";import{ifDefined as p}from"
|
|
|
43
87
|
>
|
|
44
88
|
Toggle Dialog
|
|
45
89
|
</sp-button>
|
|
46
|
-
|
|
90
|
+
`;
|
|
91
|
+
};
|
|
92
|
+
export const wrapperDismissableUnderlay = (args = {}, context = {}) => {
|
|
93
|
+
const open = context.viewMode === "docs" ? false : true;
|
|
94
|
+
return html`
|
|
47
95
|
<sp-dialog-wrapper
|
|
48
|
-
?open=${
|
|
49
|
-
hero=${
|
|
96
|
+
?open=${open}
|
|
97
|
+
hero=${landscape}
|
|
50
98
|
dismissable
|
|
51
99
|
headline="Wrapped Dialog w/ Hero Image"
|
|
52
100
|
underlay
|
|
53
|
-
@close=${
|
|
101
|
+
@close=${handleClose(args)}
|
|
54
102
|
size="s"
|
|
55
103
|
>
|
|
56
104
|
Content of the dialog
|
|
@@ -66,12 +114,16 @@ import{html as a}from"@spectrum-web-components/base";import{ifDefined as p}from"
|
|
|
66
114
|
>
|
|
67
115
|
Toggle Dialog
|
|
68
116
|
</sp-button>
|
|
69
|
-
|
|
117
|
+
`;
|
|
118
|
+
};
|
|
119
|
+
export const form = (args = {}, context = {}) => {
|
|
120
|
+
const open = context.viewMode === "docs" ? void 0 : "click";
|
|
121
|
+
return html`
|
|
70
122
|
<overlay-trigger
|
|
71
123
|
type="modal"
|
|
72
124
|
placement="none"
|
|
73
|
-
@close=${
|
|
74
|
-
open=${
|
|
125
|
+
@close=${handleClose(args)}
|
|
126
|
+
open=${ifDefined(open)}
|
|
75
127
|
>
|
|
76
128
|
<sp-button slot="trigger" variant="primary">
|
|
77
129
|
Toggle Dialog
|
|
@@ -85,10 +137,25 @@ import{html as a}from"@spectrum-web-components/base";import{ifDefined as p}from"
|
|
|
85
137
|
confirm-label="Verify Address"
|
|
86
138
|
secondary-label="Add"
|
|
87
139
|
cancel-label="Cancel"
|
|
88
|
-
@close=${
|
|
89
|
-
@confirm=${({target
|
|
90
|
-
|
|
91
|
-
|
|
140
|
+
@close=${handleClose(args)}
|
|
141
|
+
@confirm=${({ target }) => {
|
|
142
|
+
target.dispatchEvent(
|
|
143
|
+
new Event("close", { bubbles: true, composed: true })
|
|
144
|
+
);
|
|
145
|
+
handleConfirm(args);
|
|
146
|
+
}}
|
|
147
|
+
@secondary=${({ target }) => {
|
|
148
|
+
target.dispatchEvent(
|
|
149
|
+
new Event("close", { bubbles: true, composed: true })
|
|
150
|
+
);
|
|
151
|
+
handleSecondary(args);
|
|
152
|
+
}}
|
|
153
|
+
@cancel=${({ target }) => {
|
|
154
|
+
target.dispatchEvent(
|
|
155
|
+
new Event("close", { bubbles: true, composed: true })
|
|
156
|
+
);
|
|
157
|
+
handleCancel(args);
|
|
158
|
+
}}
|
|
92
159
|
>
|
|
93
160
|
<style>
|
|
94
161
|
#form-fields div {
|
|
@@ -128,15 +195,17 @@ import{html as a}from"@spectrum-web-components/base";import{ifDefined as p}from"
|
|
|
128
195
|
</div>
|
|
129
196
|
</sp-dialog-wrapper>
|
|
130
197
|
</overlay-trigger>
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
198
|
+
`;
|
|
199
|
+
};
|
|
200
|
+
form.decorators = [overlayTriggerDecorator];
|
|
201
|
+
export const longContent = (args = {}, context = {}) => {
|
|
202
|
+
const open = context.viewMode === "docs" ? void 0 : "click";
|
|
203
|
+
return html`
|
|
135
204
|
<overlay-trigger
|
|
136
205
|
type="modal"
|
|
137
206
|
placement="none"
|
|
138
|
-
@close=${
|
|
139
|
-
open=${
|
|
207
|
+
@close=${handleClose(args)}
|
|
208
|
+
open=${ifDefined(open)}
|
|
140
209
|
>
|
|
141
210
|
<sp-button slot="trigger" variant="primary">
|
|
142
211
|
Toggle Dialog
|
|
@@ -243,16 +312,21 @@ import{html as a}from"@spectrum-web-components/base";import{ifDefined as p}from"
|
|
|
243
312
|
</p>
|
|
244
313
|
</sp-dialog-wrapper>
|
|
245
314
|
</overlay-trigger>
|
|
246
|
-
|
|
315
|
+
`;
|
|
316
|
+
};
|
|
317
|
+
longContent.decorators = [overlayTriggerDecorator];
|
|
318
|
+
export const wrapperDismissableUnderlayError = (args = {}, context = {}) => {
|
|
319
|
+
const open = context.viewMode === "docs" ? false : true;
|
|
320
|
+
return html`
|
|
247
321
|
<div>
|
|
248
322
|
<sp-dialog-wrapper
|
|
249
|
-
?open=${
|
|
250
|
-
hero=${
|
|
323
|
+
?open=${open}
|
|
324
|
+
hero=${landscape}
|
|
251
325
|
dismissable
|
|
252
326
|
error
|
|
253
327
|
headline="Wrapped Dialog w/ Hero Image"
|
|
254
328
|
underlay
|
|
255
|
-
@close=${
|
|
329
|
+
@close=${handleClose(args)}
|
|
256
330
|
size="s"
|
|
257
331
|
>
|
|
258
332
|
Content of the dialog
|
|
@@ -269,25 +343,33 @@ import{html as a}from"@spectrum-web-components/base";import{ifDefined as p}from"
|
|
|
269
343
|
Toggle Dialog
|
|
270
344
|
</sp-button>
|
|
271
345
|
</div>
|
|
272
|
-
|
|
346
|
+
`;
|
|
347
|
+
};
|
|
348
|
+
export const wrapperButtons = (args = {}, context = {}) => {
|
|
349
|
+
const open = context.viewMode === "docs" ? false : true;
|
|
350
|
+
return html`
|
|
273
351
|
<sp-dialog-wrapper
|
|
274
|
-
?open=${
|
|
352
|
+
?open=${open}
|
|
275
353
|
size="l"
|
|
276
354
|
headline="Wrapped Dialog w/ Buttons"
|
|
277
355
|
confirm-label="Keep Both"
|
|
278
356
|
secondary-label="Replace"
|
|
279
357
|
cancel-label="Cancel"
|
|
280
358
|
footer="Content for footer"
|
|
281
|
-
@close=${
|
|
282
|
-
@confirm=${
|
|
283
|
-
@secondary=${
|
|
284
|
-
@cancel=${
|
|
359
|
+
@close=${handleClose(args)}
|
|
360
|
+
@confirm=${handleConfirm(args)}
|
|
361
|
+
@secondary=${handleSecondary(args)}
|
|
362
|
+
@cancel=${handleCancel(args)}
|
|
285
363
|
>
|
|
286
364
|
Content of the dialog
|
|
287
365
|
</sp-dialog-wrapper>
|
|
288
|
-
|
|
366
|
+
`;
|
|
367
|
+
};
|
|
368
|
+
export const wrapperButtonsUnderlay = (args = {}, context = {}) => {
|
|
369
|
+
const open = context.viewMode === "docs" ? false : true;
|
|
370
|
+
return html`
|
|
289
371
|
<sp-dialog-wrapper
|
|
290
|
-
?open=${
|
|
372
|
+
?open=${open}
|
|
291
373
|
underlay
|
|
292
374
|
size="l"
|
|
293
375
|
headline="Wrapped Dialog w/ Buttons"
|
|
@@ -295,27 +377,68 @@ import{html as a}from"@spectrum-web-components/base";import{ifDefined as p}from"
|
|
|
295
377
|
secondary-label="Replace"
|
|
296
378
|
cancel-label="Cancel"
|
|
297
379
|
footer="Content for footer"
|
|
298
|
-
@close=${
|
|
299
|
-
@confirm=${
|
|
300
|
-
@secondary=${
|
|
301
|
-
@cancel=${
|
|
380
|
+
@close=${handleClose(args)}
|
|
381
|
+
@confirm=${handleConfirm(args)}
|
|
382
|
+
@secondary=${handleSecondary(args)}
|
|
383
|
+
@cancel=${handleCancel(args)}
|
|
302
384
|
>
|
|
303
385
|
Content of the dialog
|
|
304
386
|
</sp-dialog-wrapper>
|
|
305
|
-
|
|
387
|
+
`;
|
|
388
|
+
};
|
|
389
|
+
export const wrapperFullscreen = (args = {}, context = {}) => {
|
|
390
|
+
const open = context.viewMode === "docs" ? false : true;
|
|
391
|
+
return html`
|
|
306
392
|
<sp-dialog-wrapper
|
|
307
|
-
?open=${
|
|
393
|
+
?open=${open}
|
|
308
394
|
headline="Wrapped Dialog - Fullscreen"
|
|
309
395
|
mode="fullscreen"
|
|
310
396
|
confirm-label="Keep Both"
|
|
311
397
|
secondary-label="Replace"
|
|
312
398
|
cancel-label="Cancel"
|
|
313
|
-
@close=${
|
|
314
|
-
@confirm=${
|
|
315
|
-
@secondary=${
|
|
316
|
-
@cancel=${
|
|
399
|
+
@close=${handleClose(args)}
|
|
400
|
+
@confirm=${handleConfirm(args)}
|
|
401
|
+
@secondary=${handleSecondary(args)}
|
|
402
|
+
@cancel=${handleCancel(args)}
|
|
317
403
|
>
|
|
318
404
|
Content of the dialog
|
|
319
405
|
</sp-dialog-wrapper>
|
|
320
|
-
|
|
406
|
+
`;
|
|
407
|
+
};
|
|
408
|
+
export const tooltips = (args = {}, context = {}) => {
|
|
409
|
+
const open = context.viewMode === "docs" ? void 0 : "click";
|
|
410
|
+
return html`
|
|
411
|
+
<overlay-trigger
|
|
412
|
+
type="modal"
|
|
413
|
+
placement="none"
|
|
414
|
+
@close=${handleClose(args)}
|
|
415
|
+
open=${ifDefined(open)}
|
|
416
|
+
>
|
|
417
|
+
<sp-button slot="trigger" variant="primary">
|
|
418
|
+
Toggle Dialog
|
|
419
|
+
</sp-button>
|
|
420
|
+
<sp-dialog-wrapper
|
|
421
|
+
slot="click-content"
|
|
422
|
+
headline="Dialog title"
|
|
423
|
+
dismissable
|
|
424
|
+
underlay
|
|
425
|
+
size="s"
|
|
426
|
+
>
|
|
427
|
+
${[1, 2, 3, 4].map(
|
|
428
|
+
(index) => html`
|
|
429
|
+
<overlay-trigger>
|
|
430
|
+
<sp-button slot="trigger">
|
|
431
|
+
Button with Tooltip ${index}
|
|
432
|
+
</sp-button>
|
|
433
|
+
<sp-tooltip slot="hover-content">
|
|
434
|
+
Tooltip ${index}
|
|
435
|
+
</sp-tooltip>
|
|
436
|
+
</overlay-trigger>
|
|
437
|
+
`
|
|
438
|
+
)}
|
|
439
|
+
</sp-dialog-wrapper>
|
|
440
|
+
</overlay-trigger>
|
|
441
|
+
`;
|
|
442
|
+
};
|
|
443
|
+
tooltips.decorators = [overlayTriggerDecorator];
|
|
321
444
|
//# sourceMappingURL=dialog-wrapper.stories.js.map
|