starry-sky-ui 0.1.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/README.md +644 -0
- package/dist/ChatInput/index.d.ts +23 -0
- package/dist/ChatInput/index.d.ts.map +1 -0
- package/dist/ChatInput/index.js +50 -0
- package/dist/ChatInput/index.js.map +1 -0
- package/dist/ChatInput/index.scss +170 -0
- package/dist/ContentRenderer/index.d.ts +15 -0
- package/dist/ContentRenderer/index.d.ts.map +1 -0
- package/dist/ContentRenderer/index.js +73 -0
- package/dist/ContentRenderer/index.js.map +1 -0
- package/dist/ContentRenderer/index.scss +203 -0
- package/dist/Input/Textarea.d.ts +46 -0
- package/dist/Input/Textarea.d.ts.map +1 -0
- package/dist/Input/Textarea.js +42 -0
- package/dist/Input/Textarea.js.map +1 -0
- package/dist/Input/index.d.ts +57 -0
- package/dist/Input/index.d.ts.map +1 -0
- package/dist/Input/index.js +87 -0
- package/dist/Input/index.js.map +1 -0
- package/dist/Input/index.scss +498 -0
- package/dist/Message/index.d.ts +36 -0
- package/dist/Message/index.d.ts.map +1 -0
- package/dist/Message/index.js +184 -0
- package/dist/Message/index.js.map +1 -0
- package/dist/Message/index.scss +147 -0
- package/dist/Modal/index.d.ts +57 -0
- package/dist/Modal/index.d.ts.map +1 -0
- package/dist/Modal/index.js +99 -0
- package/dist/Modal/index.js.map +1 -0
- package/dist/Modal/index.scss +250 -0
- package/dist/Pagination/index.d.ts +37 -0
- package/dist/Pagination/index.d.ts.map +1 -0
- package/dist/Pagination/index.js +98 -0
- package/dist/Pagination/index.js.map +1 -0
- package/dist/Pagination/index.scss +393 -0
- package/dist/Select/index.d.ts +56 -0
- package/dist/Select/index.d.ts.map +1 -0
- package/dist/Select/index.js +153 -0
- package/dist/Select/index.js.map +1 -0
- package/dist/Select/index.scss +251 -0
- package/dist/Starfield/index.d.ts +20 -0
- package/dist/Starfield/index.d.ts.map +1 -0
- package/dist/Starfield/index.js +39 -0
- package/dist/Starfield/index.js.map +1 -0
- package/dist/Starfield/index.scss +61 -0
- package/dist/Table/index.d.ts +72 -0
- package/dist/Table/index.d.ts.map +1 -0
- package/dist/Table/index.js +192 -0
- package/dist/Table/index.js.map +1 -0
- package/dist/Table/index.scss +377 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +12 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +57 -0
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useCallback, useEffect, useRef } from 'react';
|
|
3
|
+
import { createPortal } from 'react-dom';
|
|
4
|
+
import './index.scss';
|
|
5
|
+
// ---- 内部状态 ----
|
|
6
|
+
let globalConfig = {
|
|
7
|
+
top: 20,
|
|
8
|
+
duration: 3000,
|
|
9
|
+
maxCount: Infinity,
|
|
10
|
+
getContainer: undefined,
|
|
11
|
+
};
|
|
12
|
+
let messageInstance = null;
|
|
13
|
+
// ---- 创建 Store ----
|
|
14
|
+
function createMessageStore() {
|
|
15
|
+
let addFn = null;
|
|
16
|
+
let removeFn = null;
|
|
17
|
+
let clearFn = null;
|
|
18
|
+
return {
|
|
19
|
+
setAdd(fn) {
|
|
20
|
+
addFn = fn;
|
|
21
|
+
},
|
|
22
|
+
setRemove(fn) {
|
|
23
|
+
removeFn = fn;
|
|
24
|
+
},
|
|
25
|
+
setClear(fn) {
|
|
26
|
+
clearFn = fn;
|
|
27
|
+
},
|
|
28
|
+
add(item) {
|
|
29
|
+
var _a;
|
|
30
|
+
return (_a = addFn === null || addFn === void 0 ? void 0 : addFn(item)) !== null && _a !== void 0 ? _a : -1;
|
|
31
|
+
},
|
|
32
|
+
remove(id) {
|
|
33
|
+
removeFn === null || removeFn === void 0 ? void 0 : removeFn(id);
|
|
34
|
+
},
|
|
35
|
+
clear() {
|
|
36
|
+
clearFn === null || clearFn === void 0 ? void 0 : clearFn();
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
function ensureStore() {
|
|
41
|
+
if (!messageInstance) {
|
|
42
|
+
messageInstance = createMessageStore();
|
|
43
|
+
}
|
|
44
|
+
return messageInstance;
|
|
45
|
+
}
|
|
46
|
+
// ---- Message Instance(支持 then 语法) ----
|
|
47
|
+
function createMessageInstance(type, content, duration, onClose, extra) {
|
|
48
|
+
const store = ensureStore();
|
|
49
|
+
const dur = duration !== null && duration !== void 0 ? duration : globalConfig.duration;
|
|
50
|
+
// 清理超出数量的旧消息
|
|
51
|
+
if (globalConfig.maxCount !== Infinity) {
|
|
52
|
+
// 这个在组件内部处理
|
|
53
|
+
}
|
|
54
|
+
let closed = false;
|
|
55
|
+
let resolve;
|
|
56
|
+
const promise = new Promise((res) => {
|
|
57
|
+
resolve = res;
|
|
58
|
+
});
|
|
59
|
+
const close = () => {
|
|
60
|
+
if (closed)
|
|
61
|
+
return;
|
|
62
|
+
closed = true;
|
|
63
|
+
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
64
|
+
resolve === null || resolve === void 0 ? void 0 : resolve();
|
|
65
|
+
};
|
|
66
|
+
const id = store.add({
|
|
67
|
+
type,
|
|
68
|
+
content,
|
|
69
|
+
duration: dur,
|
|
70
|
+
className: extra === null || extra === void 0 ? void 0 : extra.className,
|
|
71
|
+
style: extra === null || extra === void 0 ? void 0 : extra.style,
|
|
72
|
+
onClose: close,
|
|
73
|
+
});
|
|
74
|
+
const ins = Object.assign(close, {
|
|
75
|
+
then: promise.then.bind(promise),
|
|
76
|
+
});
|
|
77
|
+
return ins;
|
|
78
|
+
}
|
|
79
|
+
// ---- Message API ----
|
|
80
|
+
const message = {
|
|
81
|
+
info(content, duration, onClose) {
|
|
82
|
+
return createMessageInstance('info', content, duration, onClose);
|
|
83
|
+
},
|
|
84
|
+
success(content, duration, onClose) {
|
|
85
|
+
return createMessageInstance('success', content, duration, onClose);
|
|
86
|
+
},
|
|
87
|
+
error(content, duration, onClose) {
|
|
88
|
+
return createMessageInstance('error', content, duration, onClose);
|
|
89
|
+
},
|
|
90
|
+
warning(content, duration, onClose) {
|
|
91
|
+
return createMessageInstance('warning', content, duration, onClose);
|
|
92
|
+
},
|
|
93
|
+
loading(content, duration, onClose) {
|
|
94
|
+
return createMessageInstance('loading', content, duration, onClose);
|
|
95
|
+
},
|
|
96
|
+
open(config) {
|
|
97
|
+
const { type = 'info', content, duration, className, style, onClose } = config;
|
|
98
|
+
return createMessageInstance(type, content, duration, onClose, { className, style });
|
|
99
|
+
},
|
|
100
|
+
config(config) {
|
|
101
|
+
if (config.top !== undefined)
|
|
102
|
+
globalConfig.top = config.top;
|
|
103
|
+
if (config.duration !== undefined)
|
|
104
|
+
globalConfig.duration = config.duration;
|
|
105
|
+
if (config.maxCount !== undefined)
|
|
106
|
+
globalConfig.maxCount = config.maxCount;
|
|
107
|
+
if (config.getContainer !== undefined)
|
|
108
|
+
globalConfig.getContainer = config.getContainer;
|
|
109
|
+
},
|
|
110
|
+
destroy() {
|
|
111
|
+
messageInstance === null || messageInstance === void 0 ? void 0 : messageInstance.clear();
|
|
112
|
+
},
|
|
113
|
+
};
|
|
114
|
+
// ---- Message 组件 ----
|
|
115
|
+
const Message = () => {
|
|
116
|
+
const [messages, setMessages] = useState([]);
|
|
117
|
+
const idRef = useRef(0);
|
|
118
|
+
const timerMap = useRef(new Map());
|
|
119
|
+
const store = useRef(ensureStore());
|
|
120
|
+
const remove = useCallback((id) => {
|
|
121
|
+
const timer = timerMap.current.get(id);
|
|
122
|
+
if (timer) {
|
|
123
|
+
clearTimeout(timer);
|
|
124
|
+
timerMap.current.delete(id);
|
|
125
|
+
}
|
|
126
|
+
setMessages((prev) => {
|
|
127
|
+
const msg = prev.find((m) => m.id === id);
|
|
128
|
+
if (msg) {
|
|
129
|
+
// 延迟触发 onClose,保证状态更新后再回调
|
|
130
|
+
setTimeout(() => { var _a; return (_a = msg.onClose) === null || _a === void 0 ? void 0 : _a.call(msg); }, 0);
|
|
131
|
+
}
|
|
132
|
+
return prev.filter((m) => m.id !== id);
|
|
133
|
+
});
|
|
134
|
+
}, []);
|
|
135
|
+
const add = useCallback((item) => {
|
|
136
|
+
const id = ++idRef.current;
|
|
137
|
+
// maxCount 限制:超过时移除最早的消息
|
|
138
|
+
setMessages((prev) => {
|
|
139
|
+
let next = [...prev, Object.assign(Object.assign({}, item), { id })];
|
|
140
|
+
if (globalConfig.maxCount !== Infinity && next.length > globalConfig.maxCount) {
|
|
141
|
+
const removed = next.slice(0, next.length - globalConfig.maxCount);
|
|
142
|
+
removed.forEach((rm) => {
|
|
143
|
+
const timer = timerMap.current.get(rm.id);
|
|
144
|
+
if (timer) {
|
|
145
|
+
clearTimeout(timer);
|
|
146
|
+
timerMap.current.delete(rm.id);
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
next = next.slice(next.length - globalConfig.maxCount);
|
|
150
|
+
}
|
|
151
|
+
return next;
|
|
152
|
+
});
|
|
153
|
+
// 自动消失
|
|
154
|
+
if (item.duration > 0) {
|
|
155
|
+
const timer = setTimeout(() => remove(id), item.duration);
|
|
156
|
+
timerMap.current.set(id, timer);
|
|
157
|
+
}
|
|
158
|
+
return id;
|
|
159
|
+
}, [remove]);
|
|
160
|
+
const clear = useCallback(() => {
|
|
161
|
+
timerMap.current.forEach((timer) => clearTimeout(timer));
|
|
162
|
+
timerMap.current.clear();
|
|
163
|
+
setMessages([]);
|
|
164
|
+
}, []);
|
|
165
|
+
useEffect(() => {
|
|
166
|
+
store.current.setAdd(add);
|
|
167
|
+
store.current.setRemove(remove);
|
|
168
|
+
store.current.setClear(clear);
|
|
169
|
+
}, [add, remove, clear]);
|
|
170
|
+
const container = (() => {
|
|
171
|
+
if (globalConfig.getContainer)
|
|
172
|
+
return globalConfig.getContainer();
|
|
173
|
+
return document.body;
|
|
174
|
+
})();
|
|
175
|
+
if (messages.length === 0)
|
|
176
|
+
return null;
|
|
177
|
+
return createPortal(_jsx("div", Object.assign({ className: "message-container", style: { top: globalConfig.top } }, { children: messages.map((msg) => {
|
|
178
|
+
var _a;
|
|
179
|
+
return (_jsxs("div", Object.assign({ className: `message-item message-${msg.type} ${(_a = msg.className) !== null && _a !== void 0 ? _a : ''}`, style: msg.style }, { children: [_jsxs("span", Object.assign({ className: "message-icon" }, { children: [msg.type === 'success' && _jsx("span", Object.assign({ className: "msg-icon-check" }, { children: "\u2713" })), msg.type === 'error' && _jsx("span", Object.assign({ className: "msg-icon-cross" }, { children: "\u2717" })), msg.type === 'warning' && _jsx("span", Object.assign({ className: "msg-icon-warn" }, { children: "!" })), msg.type === 'info' && _jsx("span", Object.assign({ className: "msg-icon-info" }, { children: "i" })), msg.type === 'loading' && _jsx("span", { className: "msg-icon-spinner" })] })), _jsx("span", Object.assign({ className: "message-content" }, { children: msg.content })), _jsx("button", Object.assign({ className: "message-close", onClick: () => remove(msg.id) }, { children: "\u2715" }))] }), msg.id));
|
|
180
|
+
}) })), container);
|
|
181
|
+
};
|
|
182
|
+
export { message };
|
|
183
|
+
export default Message;
|
|
184
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Message/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
.message-container {
|
|
2
|
+
position: fixed;
|
|
3
|
+
top: 20px;
|
|
4
|
+
right: 20px;
|
|
5
|
+
z-index: 10000;
|
|
6
|
+
display: flex;
|
|
7
|
+
flex-direction: column;
|
|
8
|
+
gap: 10px;
|
|
9
|
+
pointer-events: none;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.message-item {
|
|
13
|
+
display: flex;
|
|
14
|
+
align-items: center;
|
|
15
|
+
gap: 10px;
|
|
16
|
+
padding: 12px 16px;
|
|
17
|
+
border-radius: 12px;
|
|
18
|
+
backdrop-filter: blur(20px);
|
|
19
|
+
border: 1px solid;
|
|
20
|
+
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);
|
|
21
|
+
min-width: 280px;
|
|
22
|
+
max-width: 420px;
|
|
23
|
+
pointer-events: auto;
|
|
24
|
+
animation: messageSlideIn 0.3s ease;
|
|
25
|
+
transition: all 0.3s ease;
|
|
26
|
+
word-break: break-word;
|
|
27
|
+
|
|
28
|
+
&:hover {
|
|
29
|
+
transform: translateX(-4px);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.message-icon {
|
|
34
|
+
flex-shrink: 0;
|
|
35
|
+
width: 24px;
|
|
36
|
+
height: 24px;
|
|
37
|
+
display: flex;
|
|
38
|
+
align-items: center;
|
|
39
|
+
justify-content: center;
|
|
40
|
+
border-radius: 50%;
|
|
41
|
+
font-size: 13px;
|
|
42
|
+
font-weight: 700;
|
|
43
|
+
line-height: 1;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.msg-icon-check { color: #10b981; }
|
|
47
|
+
.msg-icon-cross { color: #ef4444; font-size: 15px; }
|
|
48
|
+
.msg-icon-warn { color: #f59e0b; font-weight: 800; }
|
|
49
|
+
.msg-icon-info { color: #3b82f6; font-style: italic; font-family: serif; font-weight: 700; }
|
|
50
|
+
.msg-icon-spinner {
|
|
51
|
+
width: 14px;
|
|
52
|
+
height: 14px;
|
|
53
|
+
border: 2px solid #3b82f6;
|
|
54
|
+
border-top-color: transparent;
|
|
55
|
+
border-radius: 50%;
|
|
56
|
+
animation: msgSpin 0.8s linear infinite;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.message-content {
|
|
60
|
+
flex: 1;
|
|
61
|
+
font-size: 0.9rem;
|
|
62
|
+
color: #fff;
|
|
63
|
+
line-height: 1.4;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.message-close {
|
|
67
|
+
flex-shrink: 0;
|
|
68
|
+
background: none;
|
|
69
|
+
border: none;
|
|
70
|
+
color: rgba(255, 255, 255, 0.4);
|
|
71
|
+
cursor: pointer;
|
|
72
|
+
font-size: 0.8rem;
|
|
73
|
+
padding: 2px 6px;
|
|
74
|
+
border-radius: 4px;
|
|
75
|
+
transition: all 0.2s ease;
|
|
76
|
+
|
|
77
|
+
&:hover {
|
|
78
|
+
color: #fff;
|
|
79
|
+
background: rgba(255, 255, 255, 0.1);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// ---- 类型样式 ----
|
|
84
|
+
.message-info {
|
|
85
|
+
background: rgba(59, 130, 246, 0.15);
|
|
86
|
+
border-color: rgba(59, 130, 246, 0.3);
|
|
87
|
+
|
|
88
|
+
.message-icon {
|
|
89
|
+
background: rgba(59, 130, 246, 0.2);
|
|
90
|
+
color: #3b82f6;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.message-success {
|
|
95
|
+
background: rgba(16, 185, 129, 0.15);
|
|
96
|
+
border-color: rgba(16, 185, 129, 0.3);
|
|
97
|
+
|
|
98
|
+
.message-icon {
|
|
99
|
+
background: rgba(16, 185, 129, 0.2);
|
|
100
|
+
color: #10b981;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.message-error {
|
|
105
|
+
background: rgba(239, 68, 68, 0.15);
|
|
106
|
+
border-color: rgba(239, 68, 68, 0.3);
|
|
107
|
+
|
|
108
|
+
.message-icon {
|
|
109
|
+
background: rgba(239, 68, 68, 0.2);
|
|
110
|
+
color: #ef4444;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
.message-warning {
|
|
115
|
+
background: rgba(245, 158, 11, 0.15);
|
|
116
|
+
border-color: rgba(245, 158, 11, 0.3);
|
|
117
|
+
|
|
118
|
+
.message-icon {
|
|
119
|
+
background: rgba(245, 158, 11, 0.2);
|
|
120
|
+
color: #f59e0b;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
.message-loading {
|
|
125
|
+
background: rgba(59, 130, 246, 0.15);
|
|
126
|
+
border-color: rgba(59, 130, 246, 0.3);
|
|
127
|
+
|
|
128
|
+
.message-icon {
|
|
129
|
+
background: rgba(59, 130, 246, 0.2);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
@keyframes messageSlideIn {
|
|
134
|
+
from {
|
|
135
|
+
opacity: 0;
|
|
136
|
+
transform: translateX(100%) scale(0.95);
|
|
137
|
+
}
|
|
138
|
+
to {
|
|
139
|
+
opacity: 1;
|
|
140
|
+
transform: translateX(0) scale(1);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
@keyframes msgSpin {
|
|
145
|
+
from { transform: rotate(0deg); }
|
|
146
|
+
to { transform: rotate(360deg); }
|
|
147
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import './index.scss';
|
|
3
|
+
export interface ModalProps {
|
|
4
|
+
/** 是否显示 */
|
|
5
|
+
open?: boolean;
|
|
6
|
+
/** 关闭回调 */
|
|
7
|
+
onClose?: () => void;
|
|
8
|
+
/** 确认回调 */
|
|
9
|
+
onOk?: () => void | Promise<void>;
|
|
10
|
+
/** 取消回调 */
|
|
11
|
+
onCancel?: () => void;
|
|
12
|
+
/** 关闭后回调 */
|
|
13
|
+
afterClose?: () => void;
|
|
14
|
+
/** 标题 */
|
|
15
|
+
title?: React.ReactNode;
|
|
16
|
+
/** 内容 */
|
|
17
|
+
children?: React.ReactNode;
|
|
18
|
+
/** 底部内容,设为 null 则隐藏 */
|
|
19
|
+
footer?: React.ReactNode | null;
|
|
20
|
+
/** 自定义关闭按钮 */
|
|
21
|
+
closeButton?: React.ReactNode;
|
|
22
|
+
/** 自定义类名 */
|
|
23
|
+
className?: string;
|
|
24
|
+
/** 自定义样式 */
|
|
25
|
+
style?: React.CSSProperties;
|
|
26
|
+
/** 内容区样式 */
|
|
27
|
+
bodyStyle?: React.CSSProperties;
|
|
28
|
+
/** 宽度,支持数字(px)或字符串 */
|
|
29
|
+
width?: number | string;
|
|
30
|
+
/** 高度,支持数字(px)或字符串 */
|
|
31
|
+
height?: number | string;
|
|
32
|
+
/** 是否居中 */
|
|
33
|
+
centered?: boolean;
|
|
34
|
+
/** 是否显示遮罩 */
|
|
35
|
+
mask?: boolean;
|
|
36
|
+
/** 点击遮罩是否关闭 */
|
|
37
|
+
maskClosable?: boolean;
|
|
38
|
+
/** 是否显示关闭按钮 */
|
|
39
|
+
closable?: boolean;
|
|
40
|
+
/** 是否支持键盘 ESC 关闭 */
|
|
41
|
+
keyboard?: boolean;
|
|
42
|
+
/** 确认按钮 loading 态 */
|
|
43
|
+
confirmLoading?: boolean;
|
|
44
|
+
/** 卸载时销毁子节点 */
|
|
45
|
+
destroyOnClose?: boolean;
|
|
46
|
+
/** 自定义 z-index */
|
|
47
|
+
zIndex?: number;
|
|
48
|
+
/** 确定按钮文案 */
|
|
49
|
+
okText?: string;
|
|
50
|
+
/** 取消按钮文案 */
|
|
51
|
+
cancelText?: string;
|
|
52
|
+
/** 获取弹窗容器 */
|
|
53
|
+
getContainer?: () => HTMLElement;
|
|
54
|
+
}
|
|
55
|
+
declare const Modal: React.FC<ModalProps>;
|
|
56
|
+
export default Modal;
|
|
57
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Modal/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AACxE,OAAO,cAAc,CAAC;AAEtB,MAAM,WAAW,UAAU;IACzB,WAAW;IACX,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW;IACX,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,WAAW;IACX,IAAI,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,WAAW;IACX,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,YAAY;IACZ,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,SAAS;IACT,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,SAAS;IACT,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,uBAAuB;IACvB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;IAChC,cAAc;IACd,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,YAAY;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY;IACZ,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,YAAY;IACZ,SAAS,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAChC,sBAAsB;IACtB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,sBAAsB;IACtB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,WAAW;IACX,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,eAAe;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oBAAoB;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qBAAqB;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe;IACf,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kBAAkB;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa;IACb,YAAY,CAAC,EAAE,MAAM,WAAW,CAAC;CAClC;AAED,QAAA,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CA8L/B,CAAC;AAEF,eAAe,KAAK,CAAC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
11
|
+
import { useEffect, useCallback, useState, useRef } from 'react';
|
|
12
|
+
import './index.scss';
|
|
13
|
+
const Modal = ({ open = false, onClose, onOk, onCancel, afterClose, title, children, footer, closeButton, className = '', style, bodyStyle, width = 520, height, centered = false, mask = true, maskClosable = true, closable = true, keyboard = true, confirmLoading = false, destroyOnClose = false, zIndex = 1000, okText = '确定', cancelText = '取消', getContainer, }) => {
|
|
14
|
+
const [animating, setAnimating] = useState(false);
|
|
15
|
+
const [visible, setVisible] = useState(false);
|
|
16
|
+
const [rendered, setRendered] = useState(false);
|
|
17
|
+
const [okLoading, setOkLoading] = useState(false);
|
|
18
|
+
const bodyRef = useRef(null);
|
|
19
|
+
// ---- 动画控制 ----
|
|
20
|
+
useEffect(() => {
|
|
21
|
+
if (open) {
|
|
22
|
+
setVisible(true);
|
|
23
|
+
setRendered(true);
|
|
24
|
+
// 触发下一帧动画
|
|
25
|
+
requestAnimationFrame(() => {
|
|
26
|
+
requestAnimationFrame(() => setAnimating(true));
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
setAnimating(false);
|
|
31
|
+
const timer = setTimeout(() => {
|
|
32
|
+
setVisible(false);
|
|
33
|
+
if (destroyOnClose)
|
|
34
|
+
setRendered(false);
|
|
35
|
+
afterClose === null || afterClose === void 0 ? void 0 : afterClose();
|
|
36
|
+
}, 200); // 与 CSS 动画时长一致
|
|
37
|
+
return () => clearTimeout(timer);
|
|
38
|
+
}
|
|
39
|
+
}, [open, destroyOnClose, afterClose]);
|
|
40
|
+
// ---- 遮罩层点击 ----
|
|
41
|
+
const handleMaskClick = useCallback((e) => {
|
|
42
|
+
if (e.target === e.currentTarget && maskClosable) {
|
|
43
|
+
handleCancel();
|
|
44
|
+
}
|
|
45
|
+
}, [maskClosable]);
|
|
46
|
+
// ---- 键盘 ESC ----
|
|
47
|
+
const handleKeyDown = useCallback((e) => {
|
|
48
|
+
if (e.key === 'Escape' && keyboard) {
|
|
49
|
+
handleCancel();
|
|
50
|
+
}
|
|
51
|
+
}, [keyboard]);
|
|
52
|
+
useEffect(() => {
|
|
53
|
+
if (open) {
|
|
54
|
+
document.addEventListener('keydown', handleKeyDown);
|
|
55
|
+
return () => document.removeEventListener('keydown', handleKeyDown);
|
|
56
|
+
}
|
|
57
|
+
}, [open, handleKeyDown]);
|
|
58
|
+
// ---- 锁定页面滚动 ----
|
|
59
|
+
useEffect(() => {
|
|
60
|
+
if (open) {
|
|
61
|
+
const prev = document.body.style.overflow;
|
|
62
|
+
document.body.style.overflow = 'hidden';
|
|
63
|
+
return () => {
|
|
64
|
+
document.body.style.overflow = prev;
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
}, [open]);
|
|
68
|
+
// ---- 确定/取消 ----
|
|
69
|
+
const handleOk = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
70
|
+
if (confirmLoading) {
|
|
71
|
+
setOkLoading(true);
|
|
72
|
+
}
|
|
73
|
+
try {
|
|
74
|
+
yield (onOk === null || onOk === void 0 ? void 0 : onOk());
|
|
75
|
+
}
|
|
76
|
+
finally {
|
|
77
|
+
setOkLoading(false);
|
|
78
|
+
}
|
|
79
|
+
}), [onOk, confirmLoading]);
|
|
80
|
+
const handleCancel = useCallback(() => {
|
|
81
|
+
onCancel === null || onCancel === void 0 ? void 0 : onCancel();
|
|
82
|
+
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
83
|
+
}, [onCancel, onClose]);
|
|
84
|
+
// ---- 宽度处理 ----
|
|
85
|
+
const widthStyle = typeof width === 'number' ? `${width}px` : width;
|
|
86
|
+
// ---- 渲染底部 ----
|
|
87
|
+
const renderFooter = () => {
|
|
88
|
+
if (footer === null)
|
|
89
|
+
return null;
|
|
90
|
+
if (footer !== undefined)
|
|
91
|
+
return footer;
|
|
92
|
+
return (_jsxs("div", Object.assign({ className: "modal-footer" }, { children: [_jsx("button", Object.assign({ className: "modal-btn modal-btn-cancel", onClick: handleCancel }, { children: cancelText })), _jsxs("button", Object.assign({ className: `modal-btn modal-btn-ok ${okLoading ? 'modal-btn-loading' : ''}`, onClick: handleOk, disabled: okLoading }, { children: [okLoading && _jsx("span", { className: "modal-btn-spinner" }), okText] }))] })));
|
|
93
|
+
};
|
|
94
|
+
if (!visible && !rendered)
|
|
95
|
+
return null;
|
|
96
|
+
return (_jsxs("div", Object.assign({ className: `modal-root ${animating ? 'modal-root-enter' : ''} ${!visible ? 'modal-root-leave' : ''} ${centered ? 'modal-centered' : ''}`, style: { zIndex } }, { children: [mask && (_jsx("div", { className: `modal-mask ${animating ? 'modal-mask-enter' : ''}`, onClick: maskClosable ? handleMaskClick : undefined })), _jsx("div", Object.assign({ className: `modal-wrap ${animating ? 'modal-wrap-enter' : ''} ${centered ? 'modal-wrap-centered' : ''}`, onClick: handleMaskClick }, { children: _jsxs("div", Object.assign({ className: `modal-content ${className}`, style: Object.assign(Object.assign({}, style), { width: widthStyle, height }), role: "dialog", "aria-modal": "true" }, { children: [title && (_jsx("div", Object.assign({ className: "modal-header" }, { children: _jsx("div", Object.assign({ className: "modal-title" }, { children: title })) }))), closable && (closeButton ? (_jsx("span", Object.assign({ className: "modal-close-custom", onClick: handleCancel }, { children: closeButton }))) : (_jsx("button", Object.assign({ className: "modal-close", onClick: handleCancel, "aria-label": "Close" }, { children: "\u2715" })))), _jsx("div", Object.assign({ className: "modal-body", ref: bodyRef, style: bodyStyle }, { children: children })), renderFooter()] })) }))] })));
|
|
97
|
+
};
|
|
98
|
+
export default Modal;
|
|
99
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Modal/index.tsx"],"names":[],"mappings":"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"}
|