ezfw-core 1.0.9 → 1.0.11
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/components/dialog/EzDialog.ts +53 -15
- package/core/ez.ts +3 -1
- package/package.json +1 -1
|
@@ -1,11 +1,49 @@
|
|
|
1
|
+
import styles from './EzDialog.module.scss';
|
|
2
|
+
import { cx } from '../../utils/cssModules.js';
|
|
1
3
|
import { EzBaseComponent } from '../EzBaseComponent.js';
|
|
2
4
|
|
|
5
|
+
const css = cx(styles);
|
|
6
|
+
|
|
7
|
+
declare const ez: {
|
|
8
|
+
_createElement(config: unknown): Promise<HTMLElement>;
|
|
9
|
+
_createChildElements(items: unknown[], controller: unknown, parent: unknown): Promise<Node[]>;
|
|
10
|
+
define(name: string, component: unknown): void;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
interface DialogButton {
|
|
14
|
+
text: string;
|
|
15
|
+
variant?: string;
|
|
16
|
+
value?: unknown;
|
|
17
|
+
onClick?: (instance: DialogInstance) => void;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
interface DialogInstance {
|
|
21
|
+
close: (result?: unknown) => void;
|
|
22
|
+
toggleMaximize: () => void;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
interface EzDialogConfig {
|
|
26
|
+
props?: {
|
|
27
|
+
title?: string;
|
|
28
|
+
message?: string;
|
|
29
|
+
icon?: string;
|
|
30
|
+
iconVariant?: 'info' | 'success' | 'warning' | 'danger';
|
|
31
|
+
size?: 'sm' | 'md' | 'lg' | 'xl' | 'full' | 'auto';
|
|
32
|
+
closable?: boolean;
|
|
33
|
+
maximizable?: boolean;
|
|
34
|
+
items?: unknown[];
|
|
35
|
+
buttons?: DialogButton[];
|
|
36
|
+
_dialogInstance?: DialogInstance;
|
|
37
|
+
};
|
|
38
|
+
[key: string]: unknown;
|
|
39
|
+
}
|
|
40
|
+
|
|
3
41
|
export class EzDialog extends EzBaseComponent {
|
|
4
42
|
static eztype = 'EzDialog';
|
|
43
|
+
declare config: EzDialogConfig;
|
|
5
44
|
|
|
6
|
-
async render() {
|
|
7
|
-
const
|
|
8
|
-
const props = config.props || config;
|
|
45
|
+
async render(): Promise<HTMLDivElement> {
|
|
46
|
+
const props = this.config.props || this.config;
|
|
9
47
|
|
|
10
48
|
const {
|
|
11
49
|
title,
|
|
@@ -18,31 +56,31 @@ export class EzDialog extends EzBaseComponent {
|
|
|
18
56
|
items,
|
|
19
57
|
buttons,
|
|
20
58
|
_dialogInstance
|
|
21
|
-
} = props;
|
|
59
|
+
} = props as EzDialogConfig['props'] & { [key: string]: unknown };
|
|
22
60
|
|
|
23
61
|
// Create overlay
|
|
24
62
|
const overlay = document.createElement('div');
|
|
25
|
-
overlay.className = css
|
|
63
|
+
overlay.className = css('overlay');
|
|
26
64
|
|
|
27
65
|
// Create dialog
|
|
28
66
|
const dialog = document.createElement('div');
|
|
29
|
-
dialog.className =
|
|
67
|
+
dialog.className = css('dialog', size);
|
|
30
68
|
|
|
31
69
|
// Header
|
|
32
70
|
if (title || icon || closable || maximizable) {
|
|
33
71
|
const header = document.createElement('div');
|
|
34
|
-
header.className = css
|
|
72
|
+
header.className = css('header');
|
|
35
73
|
|
|
36
74
|
if (icon) {
|
|
37
75
|
const iconEl = document.createElement('div');
|
|
38
|
-
iconEl.className =
|
|
76
|
+
iconEl.className = css('headerIcon', iconVariant);
|
|
39
77
|
iconEl.innerHTML = `<i class="${icon}"></i>`;
|
|
40
78
|
header.appendChild(iconEl);
|
|
41
79
|
}
|
|
42
80
|
|
|
43
81
|
if (title) {
|
|
44
82
|
const titleEl = document.createElement('h3');
|
|
45
|
-
titleEl.className = css
|
|
83
|
+
titleEl.className = css('title');
|
|
46
84
|
titleEl.textContent = title;
|
|
47
85
|
header.appendChild(titleEl);
|
|
48
86
|
}
|
|
@@ -54,7 +92,7 @@ export class EzDialog extends EzBaseComponent {
|
|
|
54
92
|
|
|
55
93
|
if (maximizable) {
|
|
56
94
|
const maxBtn = document.createElement('button');
|
|
57
|
-
maxBtn.className = css
|
|
95
|
+
maxBtn.className = css('headerBtn');
|
|
58
96
|
maxBtn.innerHTML = '<i class="fa-solid fa-expand"></i>';
|
|
59
97
|
maxBtn.onclick = () => _dialogInstance?.toggleMaximize();
|
|
60
98
|
header.appendChild(maxBtn);
|
|
@@ -62,7 +100,7 @@ export class EzDialog extends EzBaseComponent {
|
|
|
62
100
|
|
|
63
101
|
if (closable) {
|
|
64
102
|
const closeBtn = document.createElement('button');
|
|
65
|
-
closeBtn.className = css
|
|
103
|
+
closeBtn.className = css('headerBtn');
|
|
66
104
|
closeBtn.innerHTML = '<i class="fa-solid fa-xmark"></i>';
|
|
67
105
|
closeBtn.onclick = () => _dialogInstance?.close();
|
|
68
106
|
header.appendChild(closeBtn);
|
|
@@ -73,11 +111,11 @@ export class EzDialog extends EzBaseComponent {
|
|
|
73
111
|
|
|
74
112
|
// Body
|
|
75
113
|
const body = document.createElement('div');
|
|
76
|
-
body.className = css
|
|
114
|
+
body.className = css('body');
|
|
77
115
|
|
|
78
116
|
if (message) {
|
|
79
117
|
const messageEl = document.createElement('p');
|
|
80
|
-
messageEl.className = css
|
|
118
|
+
messageEl.className = css('message');
|
|
81
119
|
messageEl.textContent = message;
|
|
82
120
|
body.appendChild(messageEl);
|
|
83
121
|
}
|
|
@@ -96,7 +134,7 @@ export class EzDialog extends EzBaseComponent {
|
|
|
96
134
|
// Footer with buttons
|
|
97
135
|
if (buttons && buttons.length > 0) {
|
|
98
136
|
const footer = document.createElement('div');
|
|
99
|
-
footer.className = css
|
|
137
|
+
footer.className = css('footer');
|
|
100
138
|
|
|
101
139
|
for (const btn of buttons) {
|
|
102
140
|
const buttonConfig = {
|
|
@@ -105,7 +143,7 @@ export class EzDialog extends EzBaseComponent {
|
|
|
105
143
|
variant: btn.variant || 'secondary',
|
|
106
144
|
onClick: () => {
|
|
107
145
|
if (btn.onClick) {
|
|
108
|
-
btn.onClick(_dialogInstance);
|
|
146
|
+
btn.onClick(_dialogInstance!);
|
|
109
147
|
}
|
|
110
148
|
if (btn.value !== undefined) {
|
|
111
149
|
_dialogInstance?.close(btn.value);
|
package/core/ez.ts
CHANGED
|
@@ -59,6 +59,7 @@ export interface EzFramework {
|
|
|
59
59
|
grid?: { query: typeof EzGridQuery };
|
|
60
60
|
moment: typeof moment;
|
|
61
61
|
|
|
62
|
+
ready: Promise<void>;
|
|
62
63
|
_initModules(): Promise<void>;
|
|
63
64
|
/**
|
|
64
65
|
* Define a component in the Ez framework
|
|
@@ -250,6 +251,7 @@ const ez: EzFramework = {
|
|
|
250
251
|
_services: null,
|
|
251
252
|
_eventBus: null,
|
|
252
253
|
moment: moment,
|
|
254
|
+
ready: null as unknown as Promise<void>,
|
|
253
255
|
|
|
254
256
|
async _initModules(): Promise<void> {
|
|
255
257
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -604,7 +606,7 @@ const ez: EzFramework = {
|
|
|
604
606
|
};
|
|
605
607
|
|
|
606
608
|
// Initialize framework
|
|
607
|
-
(async () => {
|
|
609
|
+
ez.ready = (async () => {
|
|
608
610
|
await ez._initModules();
|
|
609
611
|
ez._initTheme();
|
|
610
612
|
})();
|