@duskmoon-dev/el-dialog 0.4.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/dist/cjs/index.js +255 -0
- package/dist/cjs/index.js.map +11 -0
- package/dist/cjs/register.js +258 -0
- package/dist/cjs/register.js.map +12 -0
- package/dist/esm/index.js +223 -0
- package/dist/esm/index.js.map +11 -0
- package/dist/esm/register.js +222 -0
- package/dist/esm/register.js.map +12 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types/el-dm-dialog.d.ts +67 -0
- package/dist/types/el-dm-dialog.d.ts.map +1 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/register.d.ts +2 -0
- package/dist/types/register.d.ts.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __moduleCache = /* @__PURE__ */ new WeakMap;
|
|
6
|
+
var __toCommonJS = (from) => {
|
|
7
|
+
var entry = __moduleCache.get(from), desc;
|
|
8
|
+
if (entry)
|
|
9
|
+
return entry;
|
|
10
|
+
entry = __defProp({}, "__esModule", { value: true });
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function")
|
|
12
|
+
__getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
|
|
13
|
+
get: () => from[key],
|
|
14
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
15
|
+
}));
|
|
16
|
+
__moduleCache.set(from, entry);
|
|
17
|
+
return entry;
|
|
18
|
+
};
|
|
19
|
+
var __export = (target, all) => {
|
|
20
|
+
for (var name in all)
|
|
21
|
+
__defProp(target, name, {
|
|
22
|
+
get: all[name],
|
|
23
|
+
enumerable: true,
|
|
24
|
+
configurable: true,
|
|
25
|
+
set: (newValue) => all[name] = () => newValue
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
// src/index.ts
|
|
30
|
+
var exports_src = {};
|
|
31
|
+
__export(exports_src, {
|
|
32
|
+
register: () => register,
|
|
33
|
+
ElDmDialog: () => ElDmDialog
|
|
34
|
+
});
|
|
35
|
+
module.exports = __toCommonJS(exports_src);
|
|
36
|
+
|
|
37
|
+
// src/el-dm-dialog.ts
|
|
38
|
+
var import_el_core = require("@duskmoon-dev/el-core");
|
|
39
|
+
var import_dialog = require("@duskmoon-dev/core/components/dialog");
|
|
40
|
+
var SIZE_CLASSES = {
|
|
41
|
+
sm: "dialog-sm",
|
|
42
|
+
md: "",
|
|
43
|
+
lg: "dialog-lg",
|
|
44
|
+
xl: "dialog-xl",
|
|
45
|
+
full: "dialog-fullscreen"
|
|
46
|
+
};
|
|
47
|
+
var coreStyles = import_dialog.css.replace(/@layer\s+components\s*\{/, "").replace(/\}\s*$/, "");
|
|
48
|
+
var styles = import_el_core.css`
|
|
49
|
+
:host {
|
|
50
|
+
display: contents;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
:host([hidden]) {
|
|
54
|
+
display: none !important;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
${coreStyles}
|
|
58
|
+
|
|
59
|
+
.dialog-wrapper {
|
|
60
|
+
position: fixed;
|
|
61
|
+
inset: 0;
|
|
62
|
+
z-index: 1000;
|
|
63
|
+
display: flex;
|
|
64
|
+
align-items: center;
|
|
65
|
+
justify-content: center;
|
|
66
|
+
opacity: 0;
|
|
67
|
+
visibility: hidden;
|
|
68
|
+
transition:
|
|
69
|
+
opacity 200ms ease,
|
|
70
|
+
visibility 200ms ease;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.dialog-wrapper.open {
|
|
74
|
+
opacity: 1;
|
|
75
|
+
visibility: visible;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.dialog-backdrop {
|
|
79
|
+
position: absolute;
|
|
80
|
+
inset: 0;
|
|
81
|
+
background-color: rgba(0, 0, 0, 0.5);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.dialog {
|
|
85
|
+
position: relative;
|
|
86
|
+
display: flex;
|
|
87
|
+
flex-direction: column;
|
|
88
|
+
max-height: 90vh;
|
|
89
|
+
max-width: 90vw;
|
|
90
|
+
min-width: 320px;
|
|
91
|
+
background-color: var(--color-surface);
|
|
92
|
+
border-radius: 1rem;
|
|
93
|
+
box-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.25);
|
|
94
|
+
transform: scale(0.95);
|
|
95
|
+
transition: transform 200ms ease;
|
|
96
|
+
font-family: inherit;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.dialog-wrapper.open .dialog {
|
|
100
|
+
transform: scale(1);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.dialog-sm {
|
|
104
|
+
max-width: 400px;
|
|
105
|
+
}
|
|
106
|
+
.dialog-lg {
|
|
107
|
+
max-width: 800px;
|
|
108
|
+
}
|
|
109
|
+
.dialog-xl {
|
|
110
|
+
max-width: 1140px;
|
|
111
|
+
}
|
|
112
|
+
.dialog-fullscreen {
|
|
113
|
+
max-width: 100vw;
|
|
114
|
+
max-height: 100vh;
|
|
115
|
+
width: 100vw;
|
|
116
|
+
height: 100vh;
|
|
117
|
+
border-radius: 0;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.dialog-header {
|
|
121
|
+
display: flex;
|
|
122
|
+
align-items: center;
|
|
123
|
+
justify-content: space-between;
|
|
124
|
+
padding: 1rem 1.5rem;
|
|
125
|
+
border-bottom: 1px solid var(--color-outline);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
.dialog-body {
|
|
129
|
+
flex: 1;
|
|
130
|
+
padding: 1.5rem;
|
|
131
|
+
overflow-y: auto;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
.dialog-footer {
|
|
135
|
+
display: flex;
|
|
136
|
+
align-items: center;
|
|
137
|
+
justify-content: flex-end;
|
|
138
|
+
gap: 0.5rem;
|
|
139
|
+
padding: 1rem 1.5rem;
|
|
140
|
+
border-top: 1px solid var(--color-outline);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
.dialog-close {
|
|
144
|
+
display: flex;
|
|
145
|
+
align-items: center;
|
|
146
|
+
justify-content: center;
|
|
147
|
+
width: 2rem;
|
|
148
|
+
height: 2rem;
|
|
149
|
+
border: none;
|
|
150
|
+
background: transparent;
|
|
151
|
+
border-radius: 0.5rem;
|
|
152
|
+
cursor: pointer;
|
|
153
|
+
color: var(--color-on-surface);
|
|
154
|
+
opacity: 0.7;
|
|
155
|
+
transition:
|
|
156
|
+
opacity 150ms ease,
|
|
157
|
+
background-color 150ms ease;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
.dialog-close:hover {
|
|
161
|
+
opacity: 1;
|
|
162
|
+
background-color: var(--color-surface-variant);
|
|
163
|
+
}
|
|
164
|
+
`;
|
|
165
|
+
|
|
166
|
+
class ElDmDialog extends import_el_core.BaseElement {
|
|
167
|
+
static properties = {
|
|
168
|
+
open: { type: Boolean, reflect: true },
|
|
169
|
+
size: { type: String, reflect: true },
|
|
170
|
+
dismissible: { type: Boolean, reflect: true, default: true },
|
|
171
|
+
noBackdrop: { type: Boolean, reflect: true, attribute: "no-backdrop" }
|
|
172
|
+
};
|
|
173
|
+
constructor() {
|
|
174
|
+
super();
|
|
175
|
+
this.attachStyles(styles);
|
|
176
|
+
}
|
|
177
|
+
_handleBackdropClick(event) {
|
|
178
|
+
if (this.dismissible && event.target === event.currentTarget) {
|
|
179
|
+
this.close();
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
_handleKeyDown = (event) => {
|
|
183
|
+
if (event.key === "Escape" && this.dismissible) {
|
|
184
|
+
this.close();
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
_getDialogClasses() {
|
|
188
|
+
const classes = ["dialog"];
|
|
189
|
+
if (this.size && SIZE_CLASSES[this.size]) {
|
|
190
|
+
classes.push(SIZE_CLASSES[this.size]);
|
|
191
|
+
}
|
|
192
|
+
return classes.join(" ");
|
|
193
|
+
}
|
|
194
|
+
show() {
|
|
195
|
+
this.open = true;
|
|
196
|
+
document.addEventListener("keydown", this._handleKeyDown);
|
|
197
|
+
document.body.style.overflow = "hidden";
|
|
198
|
+
this.emit("open");
|
|
199
|
+
}
|
|
200
|
+
close() {
|
|
201
|
+
this.open = false;
|
|
202
|
+
document.removeEventListener("keydown", this._handleKeyDown);
|
|
203
|
+
document.body.style.overflow = "";
|
|
204
|
+
this.emit("close");
|
|
205
|
+
}
|
|
206
|
+
toggle() {
|
|
207
|
+
if (this.open) {
|
|
208
|
+
this.close();
|
|
209
|
+
} else {
|
|
210
|
+
this.show();
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
disconnectedCallback() {
|
|
214
|
+
super.disconnectedCallback?.();
|
|
215
|
+
document.removeEventListener("keydown", this._handleKeyDown);
|
|
216
|
+
document.body.style.overflow = "";
|
|
217
|
+
}
|
|
218
|
+
render() {
|
|
219
|
+
const dialogClasses = this._getDialogClasses();
|
|
220
|
+
return `
|
|
221
|
+
<div class="dialog-wrapper ${this.open ? "open" : ""}" part="wrapper">
|
|
222
|
+
${!this.noBackdrop ? '<div class="dialog-backdrop" part="backdrop"></div>' : ""}
|
|
223
|
+
<div class="${dialogClasses}" role="dialog" aria-modal="true" part="dialog">
|
|
224
|
+
<div class="dialog-header" part="header">
|
|
225
|
+
<slot name="header"></slot>
|
|
226
|
+
${this.dismissible ? '<button class="dialog-close" part="close" aria-label="Close">✕</button>' : ""}
|
|
227
|
+
</div>
|
|
228
|
+
<div class="dialog-body" part="body">
|
|
229
|
+
<slot></slot>
|
|
230
|
+
</div>
|
|
231
|
+
<div class="dialog-footer" part="footer">
|
|
232
|
+
<slot name="footer"></slot>
|
|
233
|
+
</div>
|
|
234
|
+
</div>
|
|
235
|
+
</div>
|
|
236
|
+
`;
|
|
237
|
+
}
|
|
238
|
+
update() {
|
|
239
|
+
super.update();
|
|
240
|
+
const backdrop = this.shadowRoot?.querySelector(".dialog-backdrop");
|
|
241
|
+
backdrop?.addEventListener("click", this._handleBackdropClick.bind(this));
|
|
242
|
+
const closeBtn = this.shadowRoot?.querySelector(".dialog-close");
|
|
243
|
+
closeBtn?.addEventListener("click", () => this.close());
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
// src/index.ts
|
|
248
|
+
function register() {
|
|
249
|
+
if (!customElements.get("el-dm-dialog")) {
|
|
250
|
+
customElements.define("el-dm-dialog", ElDmDialog);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
//# debugId=73E1C69BA7CE742664756E2164756E21
|
|
255
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/el-dm-dialog.ts", "../../src/index.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"/**\n * DuskMoon Dialog Element\n *\n * A modal dialog component for displaying content that requires user attention.\n * Uses styles from @duskmoon-dev/core for consistent theming.\n *\n * @element el-dm-dialog\n *\n * @attr {boolean} open - Whether the dialog is open\n * @attr {string} size - Dialog size: sm, md, lg, xl, full\n * @attr {boolean} dismissible - Whether clicking backdrop closes dialog\n * @attr {boolean} no-backdrop - Hide the backdrop\n *\n * @slot - Default slot for dialog content\n * @slot header - Dialog header/title\n * @slot footer - Dialog footer/actions\n *\n * @csspart dialog - The dialog container\n * @csspart backdrop - The backdrop overlay\n * @csspart content - The content wrapper\n * @csspart header - The header section\n * @csspart body - The body section\n * @csspart footer - The footer section\n * @csspart close - The close button\n *\n * @fires open - Fired when dialog opens\n * @fires close - Fired when dialog closes\n */\n\nimport { BaseElement, css } from '@duskmoon-dev/el-core';\nimport { css as dialogCSS } from '@duskmoon-dev/core/components/dialog';\n\nconst SIZE_CLASSES: Record<string, string> = {\n sm: 'dialog-sm',\n md: '',\n lg: 'dialog-lg',\n xl: 'dialog-xl',\n full: 'dialog-fullscreen',\n};\n\nexport type DialogSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';\n\nconst coreStyles = dialogCSS.replace(/@layer\\s+components\\s*\\{/, '').replace(/\\}\\s*$/, '');\n\nconst styles = css`\n :host {\n display: contents;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n\n ${coreStyles}\n\n .dialog-wrapper {\n position: fixed;\n inset: 0;\n z-index: 1000;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0;\n visibility: hidden;\n transition:\n opacity 200ms ease,\n visibility 200ms ease;\n }\n\n .dialog-wrapper.open {\n opacity: 1;\n visibility: visible;\n }\n\n .dialog-backdrop {\n position: absolute;\n inset: 0;\n background-color: rgba(0, 0, 0, 0.5);\n }\n\n .dialog {\n position: relative;\n display: flex;\n flex-direction: column;\n max-height: 90vh;\n max-width: 90vw;\n min-width: 320px;\n background-color: var(--color-surface);\n border-radius: 1rem;\n box-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.25);\n transform: scale(0.95);\n transition: transform 200ms ease;\n font-family: inherit;\n }\n\n .dialog-wrapper.open .dialog {\n transform: scale(1);\n }\n\n .dialog-sm {\n max-width: 400px;\n }\n .dialog-lg {\n max-width: 800px;\n }\n .dialog-xl {\n max-width: 1140px;\n }\n .dialog-fullscreen {\n max-width: 100vw;\n max-height: 100vh;\n width: 100vw;\n height: 100vh;\n border-radius: 0;\n }\n\n .dialog-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 1rem 1.5rem;\n border-bottom: 1px solid var(--color-outline);\n }\n\n .dialog-body {\n flex: 1;\n padding: 1.5rem;\n overflow-y: auto;\n }\n\n .dialog-footer {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 0.5rem;\n padding: 1rem 1.5rem;\n border-top: 1px solid var(--color-outline);\n }\n\n .dialog-close {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 2rem;\n height: 2rem;\n border: none;\n background: transparent;\n border-radius: 0.5rem;\n cursor: pointer;\n color: var(--color-on-surface);\n opacity: 0.7;\n transition:\n opacity 150ms ease,\n background-color 150ms ease;\n }\n\n .dialog-close:hover {\n opacity: 1;\n background-color: var(--color-surface-variant);\n }\n`;\n\nexport class ElDmDialog extends BaseElement {\n static properties = {\n open: { type: Boolean, reflect: true },\n size: { type: String, reflect: true },\n dismissible: { type: Boolean, reflect: true, default: true },\n noBackdrop: { type: Boolean, reflect: true, attribute: 'no-backdrop' },\n };\n\n declare open: boolean;\n declare size: DialogSize;\n declare dismissible: boolean;\n declare noBackdrop: boolean;\n\n constructor() {\n super();\n this.attachStyles(styles);\n }\n\n private _handleBackdropClick(event: Event): void {\n if (this.dismissible && event.target === event.currentTarget) {\n this.close();\n }\n }\n\n private _handleKeyDown = (event: KeyboardEvent): void => {\n if (event.key === 'Escape' && this.dismissible) {\n this.close();\n }\n };\n\n private _getDialogClasses(): string {\n const classes = ['dialog'];\n if (this.size && SIZE_CLASSES[this.size]) {\n classes.push(SIZE_CLASSES[this.size]);\n }\n return classes.join(' ');\n }\n\n show(): void {\n this.open = true;\n document.addEventListener('keydown', this._handleKeyDown);\n document.body.style.overflow = 'hidden';\n this.emit('open');\n }\n\n close(): void {\n this.open = false;\n document.removeEventListener('keydown', this._handleKeyDown);\n document.body.style.overflow = '';\n this.emit('close');\n }\n\n toggle(): void {\n if (this.open) {\n this.close();\n } else {\n this.show();\n }\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback?.();\n document.removeEventListener('keydown', this._handleKeyDown);\n document.body.style.overflow = '';\n }\n\n render(): string {\n const dialogClasses = this._getDialogClasses();\n\n return `\n <div class=\"dialog-wrapper ${this.open ? 'open' : ''}\" part=\"wrapper\">\n ${!this.noBackdrop ? '<div class=\"dialog-backdrop\" part=\"backdrop\"></div>' : ''}\n <div class=\"${dialogClasses}\" role=\"dialog\" aria-modal=\"true\" part=\"dialog\">\n <div class=\"dialog-header\" part=\"header\">\n <slot name=\"header\"></slot>\n ${this.dismissible ? '<button class=\"dialog-close\" part=\"close\" aria-label=\"Close\">✕</button>' : ''}\n </div>\n <div class=\"dialog-body\" part=\"body\">\n <slot></slot>\n </div>\n <div class=\"dialog-footer\" part=\"footer\">\n <slot name=\"footer\"></slot>\n </div>\n </div>\n </div>\n `;\n }\n\n update(): void {\n super.update();\n const backdrop = this.shadowRoot?.querySelector('.dialog-backdrop');\n backdrop?.addEventListener('click', this._handleBackdropClick.bind(this));\n\n const closeBtn = this.shadowRoot?.querySelector('.dialog-close');\n closeBtn?.addEventListener('click', () => this.close());\n }\n}\n",
|
|
6
|
+
"import { ElDmDialog } from './el-dm-dialog.js';\n\nexport { ElDmDialog };\nexport type { DialogSize } from './el-dm-dialog.js';\n\nexport function register(): void {\n if (!customElements.get('el-dm-dialog')) {\n customElements.define('el-dm-dialog', ElDmDialog);\n }\n}\n"
|
|
7
|
+
],
|
|
8
|
+
"mappings": "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",
|
|
9
|
+
"debugId": "73E1C69BA7CE742664756E2164756E21",
|
|
10
|
+
"names": []
|
|
11
|
+
}
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __moduleCache = /* @__PURE__ */ new WeakMap;
|
|
6
|
+
var __toCommonJS = (from) => {
|
|
7
|
+
var entry = __moduleCache.get(from), desc;
|
|
8
|
+
if (entry)
|
|
9
|
+
return entry;
|
|
10
|
+
entry = __defProp({}, "__esModule", { value: true });
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function")
|
|
12
|
+
__getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
|
|
13
|
+
get: () => from[key],
|
|
14
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
15
|
+
}));
|
|
16
|
+
__moduleCache.set(from, entry);
|
|
17
|
+
return entry;
|
|
18
|
+
};
|
|
19
|
+
var __export = (target, all) => {
|
|
20
|
+
for (var name in all)
|
|
21
|
+
__defProp(target, name, {
|
|
22
|
+
get: all[name],
|
|
23
|
+
enumerable: true,
|
|
24
|
+
configurable: true,
|
|
25
|
+
set: (newValue) => all[name] = () => newValue
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
// src/index.ts
|
|
30
|
+
var exports_src = {};
|
|
31
|
+
__export(exports_src, {
|
|
32
|
+
register: () => register,
|
|
33
|
+
ElDmDialog: () => ElDmDialog
|
|
34
|
+
});
|
|
35
|
+
module.exports = __toCommonJS(exports_src);
|
|
36
|
+
|
|
37
|
+
// src/el-dm-dialog.ts
|
|
38
|
+
var import_el_core = require("@duskmoon-dev/el-core");
|
|
39
|
+
var import_dialog = require("@duskmoon-dev/core/components/dialog");
|
|
40
|
+
var SIZE_CLASSES = {
|
|
41
|
+
sm: "dialog-sm",
|
|
42
|
+
md: "",
|
|
43
|
+
lg: "dialog-lg",
|
|
44
|
+
xl: "dialog-xl",
|
|
45
|
+
full: "dialog-fullscreen"
|
|
46
|
+
};
|
|
47
|
+
var coreStyles = import_dialog.css.replace(/@layer\s+components\s*\{/, "").replace(/\}\s*$/, "");
|
|
48
|
+
var styles = import_el_core.css`
|
|
49
|
+
:host {
|
|
50
|
+
display: contents;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
:host([hidden]) {
|
|
54
|
+
display: none !important;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
${coreStyles}
|
|
58
|
+
|
|
59
|
+
.dialog-wrapper {
|
|
60
|
+
position: fixed;
|
|
61
|
+
inset: 0;
|
|
62
|
+
z-index: 1000;
|
|
63
|
+
display: flex;
|
|
64
|
+
align-items: center;
|
|
65
|
+
justify-content: center;
|
|
66
|
+
opacity: 0;
|
|
67
|
+
visibility: hidden;
|
|
68
|
+
transition:
|
|
69
|
+
opacity 200ms ease,
|
|
70
|
+
visibility 200ms ease;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.dialog-wrapper.open {
|
|
74
|
+
opacity: 1;
|
|
75
|
+
visibility: visible;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.dialog-backdrop {
|
|
79
|
+
position: absolute;
|
|
80
|
+
inset: 0;
|
|
81
|
+
background-color: rgba(0, 0, 0, 0.5);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.dialog {
|
|
85
|
+
position: relative;
|
|
86
|
+
display: flex;
|
|
87
|
+
flex-direction: column;
|
|
88
|
+
max-height: 90vh;
|
|
89
|
+
max-width: 90vw;
|
|
90
|
+
min-width: 320px;
|
|
91
|
+
background-color: var(--color-surface);
|
|
92
|
+
border-radius: 1rem;
|
|
93
|
+
box-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.25);
|
|
94
|
+
transform: scale(0.95);
|
|
95
|
+
transition: transform 200ms ease;
|
|
96
|
+
font-family: inherit;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.dialog-wrapper.open .dialog {
|
|
100
|
+
transform: scale(1);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.dialog-sm {
|
|
104
|
+
max-width: 400px;
|
|
105
|
+
}
|
|
106
|
+
.dialog-lg {
|
|
107
|
+
max-width: 800px;
|
|
108
|
+
}
|
|
109
|
+
.dialog-xl {
|
|
110
|
+
max-width: 1140px;
|
|
111
|
+
}
|
|
112
|
+
.dialog-fullscreen {
|
|
113
|
+
max-width: 100vw;
|
|
114
|
+
max-height: 100vh;
|
|
115
|
+
width: 100vw;
|
|
116
|
+
height: 100vh;
|
|
117
|
+
border-radius: 0;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.dialog-header {
|
|
121
|
+
display: flex;
|
|
122
|
+
align-items: center;
|
|
123
|
+
justify-content: space-between;
|
|
124
|
+
padding: 1rem 1.5rem;
|
|
125
|
+
border-bottom: 1px solid var(--color-outline);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
.dialog-body {
|
|
129
|
+
flex: 1;
|
|
130
|
+
padding: 1.5rem;
|
|
131
|
+
overflow-y: auto;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
.dialog-footer {
|
|
135
|
+
display: flex;
|
|
136
|
+
align-items: center;
|
|
137
|
+
justify-content: flex-end;
|
|
138
|
+
gap: 0.5rem;
|
|
139
|
+
padding: 1rem 1.5rem;
|
|
140
|
+
border-top: 1px solid var(--color-outline);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
.dialog-close {
|
|
144
|
+
display: flex;
|
|
145
|
+
align-items: center;
|
|
146
|
+
justify-content: center;
|
|
147
|
+
width: 2rem;
|
|
148
|
+
height: 2rem;
|
|
149
|
+
border: none;
|
|
150
|
+
background: transparent;
|
|
151
|
+
border-radius: 0.5rem;
|
|
152
|
+
cursor: pointer;
|
|
153
|
+
color: var(--color-on-surface);
|
|
154
|
+
opacity: 0.7;
|
|
155
|
+
transition:
|
|
156
|
+
opacity 150ms ease,
|
|
157
|
+
background-color 150ms ease;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
.dialog-close:hover {
|
|
161
|
+
opacity: 1;
|
|
162
|
+
background-color: var(--color-surface-variant);
|
|
163
|
+
}
|
|
164
|
+
`;
|
|
165
|
+
|
|
166
|
+
class ElDmDialog extends import_el_core.BaseElement {
|
|
167
|
+
static properties = {
|
|
168
|
+
open: { type: Boolean, reflect: true },
|
|
169
|
+
size: { type: String, reflect: true },
|
|
170
|
+
dismissible: { type: Boolean, reflect: true, default: true },
|
|
171
|
+
noBackdrop: { type: Boolean, reflect: true, attribute: "no-backdrop" }
|
|
172
|
+
};
|
|
173
|
+
constructor() {
|
|
174
|
+
super();
|
|
175
|
+
this.attachStyles(styles);
|
|
176
|
+
}
|
|
177
|
+
_handleBackdropClick(event) {
|
|
178
|
+
if (this.dismissible && event.target === event.currentTarget) {
|
|
179
|
+
this.close();
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
_handleKeyDown = (event) => {
|
|
183
|
+
if (event.key === "Escape" && this.dismissible) {
|
|
184
|
+
this.close();
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
_getDialogClasses() {
|
|
188
|
+
const classes = ["dialog"];
|
|
189
|
+
if (this.size && SIZE_CLASSES[this.size]) {
|
|
190
|
+
classes.push(SIZE_CLASSES[this.size]);
|
|
191
|
+
}
|
|
192
|
+
return classes.join(" ");
|
|
193
|
+
}
|
|
194
|
+
show() {
|
|
195
|
+
this.open = true;
|
|
196
|
+
document.addEventListener("keydown", this._handleKeyDown);
|
|
197
|
+
document.body.style.overflow = "hidden";
|
|
198
|
+
this.emit("open");
|
|
199
|
+
}
|
|
200
|
+
close() {
|
|
201
|
+
this.open = false;
|
|
202
|
+
document.removeEventListener("keydown", this._handleKeyDown);
|
|
203
|
+
document.body.style.overflow = "";
|
|
204
|
+
this.emit("close");
|
|
205
|
+
}
|
|
206
|
+
toggle() {
|
|
207
|
+
if (this.open) {
|
|
208
|
+
this.close();
|
|
209
|
+
} else {
|
|
210
|
+
this.show();
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
disconnectedCallback() {
|
|
214
|
+
super.disconnectedCallback?.();
|
|
215
|
+
document.removeEventListener("keydown", this._handleKeyDown);
|
|
216
|
+
document.body.style.overflow = "";
|
|
217
|
+
}
|
|
218
|
+
render() {
|
|
219
|
+
const dialogClasses = this._getDialogClasses();
|
|
220
|
+
return `
|
|
221
|
+
<div class="dialog-wrapper ${this.open ? "open" : ""}" part="wrapper">
|
|
222
|
+
${!this.noBackdrop ? '<div class="dialog-backdrop" part="backdrop"></div>' : ""}
|
|
223
|
+
<div class="${dialogClasses}" role="dialog" aria-modal="true" part="dialog">
|
|
224
|
+
<div class="dialog-header" part="header">
|
|
225
|
+
<slot name="header"></slot>
|
|
226
|
+
${this.dismissible ? '<button class="dialog-close" part="close" aria-label="Close">✕</button>' : ""}
|
|
227
|
+
</div>
|
|
228
|
+
<div class="dialog-body" part="body">
|
|
229
|
+
<slot></slot>
|
|
230
|
+
</div>
|
|
231
|
+
<div class="dialog-footer" part="footer">
|
|
232
|
+
<slot name="footer"></slot>
|
|
233
|
+
</div>
|
|
234
|
+
</div>
|
|
235
|
+
</div>
|
|
236
|
+
`;
|
|
237
|
+
}
|
|
238
|
+
update() {
|
|
239
|
+
super.update();
|
|
240
|
+
const backdrop = this.shadowRoot?.querySelector(".dialog-backdrop");
|
|
241
|
+
backdrop?.addEventListener("click", this._handleBackdropClick.bind(this));
|
|
242
|
+
const closeBtn = this.shadowRoot?.querySelector(".dialog-close");
|
|
243
|
+
closeBtn?.addEventListener("click", () => this.close());
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
// src/index.ts
|
|
248
|
+
function register() {
|
|
249
|
+
if (!customElements.get("el-dm-dialog")) {
|
|
250
|
+
customElements.define("el-dm-dialog", ElDmDialog);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
// src/register.ts
|
|
255
|
+
register();
|
|
256
|
+
|
|
257
|
+
//# debugId=7AA3D81A801B2AC564756E2164756E21
|
|
258
|
+
//# sourceMappingURL=register.js.map
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/el-dm-dialog.ts", "../../src/index.ts", "../../src/register.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"/**\n * DuskMoon Dialog Element\n *\n * A modal dialog component for displaying content that requires user attention.\n * Uses styles from @duskmoon-dev/core for consistent theming.\n *\n * @element el-dm-dialog\n *\n * @attr {boolean} open - Whether the dialog is open\n * @attr {string} size - Dialog size: sm, md, lg, xl, full\n * @attr {boolean} dismissible - Whether clicking backdrop closes dialog\n * @attr {boolean} no-backdrop - Hide the backdrop\n *\n * @slot - Default slot for dialog content\n * @slot header - Dialog header/title\n * @slot footer - Dialog footer/actions\n *\n * @csspart dialog - The dialog container\n * @csspart backdrop - The backdrop overlay\n * @csspart content - The content wrapper\n * @csspart header - The header section\n * @csspart body - The body section\n * @csspart footer - The footer section\n * @csspart close - The close button\n *\n * @fires open - Fired when dialog opens\n * @fires close - Fired when dialog closes\n */\n\nimport { BaseElement, css } from '@duskmoon-dev/el-core';\nimport { css as dialogCSS } from '@duskmoon-dev/core/components/dialog';\n\nconst SIZE_CLASSES: Record<string, string> = {\n sm: 'dialog-sm',\n md: '',\n lg: 'dialog-lg',\n xl: 'dialog-xl',\n full: 'dialog-fullscreen',\n};\n\nexport type DialogSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';\n\nconst coreStyles = dialogCSS.replace(/@layer\\s+components\\s*\\{/, '').replace(/\\}\\s*$/, '');\n\nconst styles = css`\n :host {\n display: contents;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n\n ${coreStyles}\n\n .dialog-wrapper {\n position: fixed;\n inset: 0;\n z-index: 1000;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0;\n visibility: hidden;\n transition:\n opacity 200ms ease,\n visibility 200ms ease;\n }\n\n .dialog-wrapper.open {\n opacity: 1;\n visibility: visible;\n }\n\n .dialog-backdrop {\n position: absolute;\n inset: 0;\n background-color: rgba(0, 0, 0, 0.5);\n }\n\n .dialog {\n position: relative;\n display: flex;\n flex-direction: column;\n max-height: 90vh;\n max-width: 90vw;\n min-width: 320px;\n background-color: var(--color-surface);\n border-radius: 1rem;\n box-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.25);\n transform: scale(0.95);\n transition: transform 200ms ease;\n font-family: inherit;\n }\n\n .dialog-wrapper.open .dialog {\n transform: scale(1);\n }\n\n .dialog-sm {\n max-width: 400px;\n }\n .dialog-lg {\n max-width: 800px;\n }\n .dialog-xl {\n max-width: 1140px;\n }\n .dialog-fullscreen {\n max-width: 100vw;\n max-height: 100vh;\n width: 100vw;\n height: 100vh;\n border-radius: 0;\n }\n\n .dialog-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 1rem 1.5rem;\n border-bottom: 1px solid var(--color-outline);\n }\n\n .dialog-body {\n flex: 1;\n padding: 1.5rem;\n overflow-y: auto;\n }\n\n .dialog-footer {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 0.5rem;\n padding: 1rem 1.5rem;\n border-top: 1px solid var(--color-outline);\n }\n\n .dialog-close {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 2rem;\n height: 2rem;\n border: none;\n background: transparent;\n border-radius: 0.5rem;\n cursor: pointer;\n color: var(--color-on-surface);\n opacity: 0.7;\n transition:\n opacity 150ms ease,\n background-color 150ms ease;\n }\n\n .dialog-close:hover {\n opacity: 1;\n background-color: var(--color-surface-variant);\n }\n`;\n\nexport class ElDmDialog extends BaseElement {\n static properties = {\n open: { type: Boolean, reflect: true },\n size: { type: String, reflect: true },\n dismissible: { type: Boolean, reflect: true, default: true },\n noBackdrop: { type: Boolean, reflect: true, attribute: 'no-backdrop' },\n };\n\n declare open: boolean;\n declare size: DialogSize;\n declare dismissible: boolean;\n declare noBackdrop: boolean;\n\n constructor() {\n super();\n this.attachStyles(styles);\n }\n\n private _handleBackdropClick(event: Event): void {\n if (this.dismissible && event.target === event.currentTarget) {\n this.close();\n }\n }\n\n private _handleKeyDown = (event: KeyboardEvent): void => {\n if (event.key === 'Escape' && this.dismissible) {\n this.close();\n }\n };\n\n private _getDialogClasses(): string {\n const classes = ['dialog'];\n if (this.size && SIZE_CLASSES[this.size]) {\n classes.push(SIZE_CLASSES[this.size]);\n }\n return classes.join(' ');\n }\n\n show(): void {\n this.open = true;\n document.addEventListener('keydown', this._handleKeyDown);\n document.body.style.overflow = 'hidden';\n this.emit('open');\n }\n\n close(): void {\n this.open = false;\n document.removeEventListener('keydown', this._handleKeyDown);\n document.body.style.overflow = '';\n this.emit('close');\n }\n\n toggle(): void {\n if (this.open) {\n this.close();\n } else {\n this.show();\n }\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback?.();\n document.removeEventListener('keydown', this._handleKeyDown);\n document.body.style.overflow = '';\n }\n\n render(): string {\n const dialogClasses = this._getDialogClasses();\n\n return `\n <div class=\"dialog-wrapper ${this.open ? 'open' : ''}\" part=\"wrapper\">\n ${!this.noBackdrop ? '<div class=\"dialog-backdrop\" part=\"backdrop\"></div>' : ''}\n <div class=\"${dialogClasses}\" role=\"dialog\" aria-modal=\"true\" part=\"dialog\">\n <div class=\"dialog-header\" part=\"header\">\n <slot name=\"header\"></slot>\n ${this.dismissible ? '<button class=\"dialog-close\" part=\"close\" aria-label=\"Close\">✕</button>' : ''}\n </div>\n <div class=\"dialog-body\" part=\"body\">\n <slot></slot>\n </div>\n <div class=\"dialog-footer\" part=\"footer\">\n <slot name=\"footer\"></slot>\n </div>\n </div>\n </div>\n `;\n }\n\n update(): void {\n super.update();\n const backdrop = this.shadowRoot?.querySelector('.dialog-backdrop');\n backdrop?.addEventListener('click', this._handleBackdropClick.bind(this));\n\n const closeBtn = this.shadowRoot?.querySelector('.dialog-close');\n closeBtn?.addEventListener('click', () => this.close());\n }\n}\n",
|
|
6
|
+
"import { ElDmDialog } from './el-dm-dialog.js';\n\nexport { ElDmDialog };\nexport type { DialogSize } from './el-dm-dialog.js';\n\nexport function register(): void {\n if (!customElements.get('el-dm-dialog')) {\n customElements.define('el-dm-dialog', ElDmDialog);\n }\n}\n",
|
|
7
|
+
"import { register } from './index.js';\nregister();\n"
|
|
8
|
+
],
|
|
9
|
+
"mappings": "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",
|
|
10
|
+
"debugId": "7AA3D81A801B2AC564756E2164756E21",
|
|
11
|
+
"names": []
|
|
12
|
+
}
|