@sheinx/base 3.8.0-beta.43 → 3.8.0-beta.44
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modal-content.d.ts","sourceRoot":"","sources":["modal-content.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"modal-content.d.ts","sourceRoot":"","sources":["modal-content.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AA0C9D,QAAA,MAAM,KAAK,UAAW,iBAAiB,mDA0YtC,CAAC;AAEF,eAAe,KAAK,CAAC"}
|
|
@@ -10,6 +10,7 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
10
10
|
var _alertIcon = _interopRequireWildcard(require("../alert/alert-icon"));
|
|
11
11
|
var _icons = _interopRequireDefault(require("../icons"));
|
|
12
12
|
var _hooks = require("@sheinx/hooks");
|
|
13
|
+
var _reactive = require("@shined/reactive");
|
|
13
14
|
var _formFooterContext = require("../form/form-footer-context");
|
|
14
15
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
15
16
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
@@ -27,6 +28,21 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
|
|
|
27
28
|
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
28
29
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
29
30
|
var hasMask = false;
|
|
31
|
+
var config = {
|
|
32
|
+
instanceIds: []
|
|
33
|
+
};
|
|
34
|
+
var state = (0, _reactive.create)(config);
|
|
35
|
+
var useModalConfig = function useModalConfig() {
|
|
36
|
+
return state.useSnapshot();
|
|
37
|
+
};
|
|
38
|
+
var addModalInstance = function addModalInstance(instanceId) {
|
|
39
|
+
state.mutate.instanceIds.push(instanceId);
|
|
40
|
+
};
|
|
41
|
+
var removeModalInstance = function removeModalInstance(instanceId) {
|
|
42
|
+
state.mutate.instanceIds = state.mutate.instanceIds.filter(function (id) {
|
|
43
|
+
return id !== instanceId;
|
|
44
|
+
});
|
|
45
|
+
};
|
|
30
46
|
var mousePosition = null;
|
|
31
47
|
var getClickPosition = function getClickPosition(e) {
|
|
32
48
|
mousePosition = {
|
|
@@ -69,12 +85,11 @@ var Modal = function Modal(props) {
|
|
|
69
85
|
mouseDownTarget: null,
|
|
70
86
|
mouseUpTarget: null,
|
|
71
87
|
content: null,
|
|
72
|
-
originDocumentStyle:
|
|
73
|
-
|
|
74
|
-
paddingRight: ''
|
|
75
|
-
}
|
|
88
|
+
originDocumentStyle: null,
|
|
89
|
+
instanceId: _hooks.util.generateUUID()
|
|
76
90
|
}),
|
|
77
91
|
context = _useRef.current;
|
|
92
|
+
var config = useModalConfig();
|
|
78
93
|
var _useState3 = (0, _react.useState)(props.visible || props.autoShow),
|
|
79
94
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
80
95
|
animation = _useState4[0],
|
|
@@ -89,6 +104,10 @@ var Modal = function Modal(props) {
|
|
|
89
104
|
defaultHeight: height,
|
|
90
105
|
panelRef: panelRef
|
|
91
106
|
});
|
|
107
|
+
var showMask = (0, _react.useMemo)(function () {
|
|
108
|
+
if (props.forceMask) return config.instanceIds.includes(context.instanceId);
|
|
109
|
+
return config.instanceIds[0] === context.instanceId;
|
|
110
|
+
}, [config.instanceIds, props.forceMask]);
|
|
92
111
|
var rerender = (0, _hooks.useRender)();
|
|
93
112
|
var handleMaskVisible = function handleMaskVisible() {
|
|
94
113
|
// 多个moal 只有第一个显示的时候才显示遮罩
|
|
@@ -99,6 +118,15 @@ var Modal = function Modal(props) {
|
|
|
99
118
|
rerender();
|
|
100
119
|
}
|
|
101
120
|
};
|
|
121
|
+
(0, _react.useEffect)(function () {
|
|
122
|
+
var index = config.instanceIds.indexOf(context.instanceId);
|
|
123
|
+
if (visible && index === -1) {
|
|
124
|
+
addModalInstance(context.instanceId);
|
|
125
|
+
}
|
|
126
|
+
if (!visible && index > -1 && !animation) {
|
|
127
|
+
removeModalInstance(context.instanceId);
|
|
128
|
+
}
|
|
129
|
+
}, [visible, animation, config.instanceIds]);
|
|
102
130
|
(0, _react.useEffect)(handleMaskVisible, [visible]);
|
|
103
131
|
var updateOrigin = function updateOrigin() {
|
|
104
132
|
// 更新transform-origin
|
|
@@ -176,9 +204,11 @@ var Modal = function Modal(props) {
|
|
|
176
204
|
// 设置 document.body.style.overflow 和 document.body.style.paddingRight,并记录原始值到 context 中
|
|
177
205
|
var setDocumentOverflow = (0, _hooks.usePersistFn)(function () {
|
|
178
206
|
var doc = document.body.parentNode;
|
|
179
|
-
if (context.isMask) {
|
|
180
|
-
context.originDocumentStyle
|
|
181
|
-
|
|
207
|
+
if (context.isMask && !context.originDocumentStyle) {
|
|
208
|
+
context.originDocumentStyle = {
|
|
209
|
+
overflow: doc.style.overflow,
|
|
210
|
+
paddingRight: doc.style.paddingRight
|
|
211
|
+
};
|
|
182
212
|
}
|
|
183
213
|
doc.style.overflow = 'hidden';
|
|
184
214
|
if (!doc.style.paddingRight) {
|
|
@@ -189,19 +219,21 @@ var Modal = function Modal(props) {
|
|
|
189
219
|
// 还原 document.body.style.overflow 和 document.body.style.paddingRight
|
|
190
220
|
var resetDocumentOverflow = (0, _hooks.usePersistFn)(function () {
|
|
191
221
|
var doc = document.body.parentNode;
|
|
192
|
-
|
|
193
|
-
|
|
222
|
+
if (context.originDocumentStyle) {
|
|
223
|
+
doc.style.overflow = context.originDocumentStyle.overflow;
|
|
224
|
+
doc.style.paddingRight = context.originDocumentStyle.paddingRight;
|
|
225
|
+
}
|
|
194
226
|
});
|
|
195
227
|
(0, _react.useEffect)(function () {
|
|
196
228
|
if (!props.hideMask) {
|
|
197
229
|
if (visible) {
|
|
198
230
|
setDocumentOverflow();
|
|
199
231
|
} else {
|
|
200
|
-
if (
|
|
232
|
+
if (config.instanceIds.length && config.instanceIds[config.instanceIds.length - 1] === context.instanceId) return;
|
|
201
233
|
resetDocumentOverflow();
|
|
202
234
|
}
|
|
203
235
|
}
|
|
204
|
-
}, [visible]);
|
|
236
|
+
}, [visible, config.instanceIds]);
|
|
205
237
|
var canDestroy = !visible && !animation;
|
|
206
238
|
(0, _react.useEffect)(function () {
|
|
207
239
|
var _props$shouldDestroy;
|
|
@@ -212,6 +244,7 @@ var Modal = function Modal(props) {
|
|
|
212
244
|
// unmount
|
|
213
245
|
return function () {
|
|
214
246
|
var _props$shouldDestroy2;
|
|
247
|
+
removeModalInstance(context.instanceId);
|
|
215
248
|
if (context.isMask) {
|
|
216
249
|
resetDocumentOverflow();
|
|
217
250
|
}
|
|
@@ -341,7 +374,7 @@ var Modal = function Modal(props) {
|
|
|
341
374
|
onClick: function onClick(e) {
|
|
342
375
|
e.stopPropagation();
|
|
343
376
|
},
|
|
344
|
-
className: (0, _classnames.default)(props.rootClassName, modalClasses === null || modalClasses === void 0 ? void 0 : modalClasses.rootClass, modalClasses === null || modalClasses === void 0 ? void 0 : modalClasses.wrapper, animation && (modalClasses === null || modalClasses === void 0 ? void 0 : modalClasses.wrapperAnimation), visible ? modalClasses === null || modalClasses === void 0 ? void 0 : modalClasses.wrapperShow : modalClasses === null || modalClasses === void 0 ? void 0 : modalClasses.wrapperHide,
|
|
377
|
+
className: (0, _classnames.default)(props.rootClassName, modalClasses === null || modalClasses === void 0 ? void 0 : modalClasses.rootClass, modalClasses === null || modalClasses === void 0 ? void 0 : modalClasses.wrapper, animation && (modalClasses === null || modalClasses === void 0 ? void 0 : modalClasses.wrapperAnimation), visible ? modalClasses === null || modalClasses === void 0 ? void 0 : modalClasses.wrapperShow : modalClasses === null || modalClasses === void 0 ? void 0 : modalClasses.wrapperHide, showMask && (modalClasses === null || modalClasses === void 0 ? void 0 : modalClasses.wrapperIsMask), props.fullScreen && (modalClasses === null || modalClasses === void 0 ? void 0 : modalClasses.wrapperFullScreen), props.moveable && (modalClasses === null || modalClasses === void 0 ? void 0 : modalClasses.wrapperMoveable), props.hideMask && (modalClasses === null || modalClasses === void 0 ? void 0 : modalClasses.wrapperHideMask), props.zoom && !props.moveable && (modalClasses === null || modalClasses === void 0 ? void 0 : modalClasses.wrapperZoom), (isPositionX || isPositionY) && (modalClasses === null || modalClasses === void 0 ? void 0 : modalClasses.wrapperDrawer), props.position === 'left' && (modalClasses === null || modalClasses === void 0 ? void 0 : modalClasses.wrapperDrawerLeft), props.position === 'right' && (modalClasses === null || modalClasses === void 0 ? void 0 : modalClasses.wrapperDrawerRight), props.position === 'top' && (modalClasses === null || modalClasses === void 0 ? void 0 : modalClasses.wrapperDrawerTop), props.position === 'bottom' && (modalClasses === null || modalClasses === void 0 ? void 0 : modalClasses.wrapperDrawerBottom)),
|
|
345
378
|
onAnimationEnd: handleAnimationEnd,
|
|
346
379
|
style: {
|
|
347
380
|
background: props.maskBackground,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modal-content.d.ts","sourceRoot":"","sources":["modal-content.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"modal-content.d.ts","sourceRoot":"","sources":["modal-content.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AA0C9D,QAAA,MAAM,KAAK,UAAW,iBAAiB,mDA0YtC,CAAC;AAEF,eAAe,KAAK,CAAC"}
|
|
@@ -11,16 +11,32 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
|
|
|
11
11
|
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
12
12
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
13
13
|
import classNames from 'classnames';
|
|
14
|
-
import React, { useRef, useEffect, useState } from 'react';
|
|
14
|
+
import React, { useRef, useEffect, useState, useMemo } from 'react';
|
|
15
15
|
import AlertIcon, { AlertIconMap } from "../alert/alert-icon";
|
|
16
16
|
import Icons from "../icons";
|
|
17
17
|
import { util } from '@sheinx/hooks';
|
|
18
|
+
import { create } from '@shined/reactive';
|
|
18
19
|
import { useDragMove, useDragResize, usePersistFn, useRender } from '@sheinx/hooks';
|
|
19
20
|
import { FormFooterProvider } from "../form/form-footer-context";
|
|
20
21
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
21
22
|
import { Fragment as _Fragment } from "react/jsx-runtime";
|
|
22
23
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
23
24
|
var hasMask = false;
|
|
25
|
+
var config = {
|
|
26
|
+
instanceIds: []
|
|
27
|
+
};
|
|
28
|
+
var state = create(config);
|
|
29
|
+
var useModalConfig = function useModalConfig() {
|
|
30
|
+
return state.useSnapshot();
|
|
31
|
+
};
|
|
32
|
+
var addModalInstance = function addModalInstance(instanceId) {
|
|
33
|
+
state.mutate.instanceIds.push(instanceId);
|
|
34
|
+
};
|
|
35
|
+
var removeModalInstance = function removeModalInstance(instanceId) {
|
|
36
|
+
state.mutate.instanceIds = state.mutate.instanceIds.filter(function (id) {
|
|
37
|
+
return id !== instanceId;
|
|
38
|
+
});
|
|
39
|
+
};
|
|
24
40
|
var mousePosition = null;
|
|
25
41
|
var getClickPosition = function getClickPosition(e) {
|
|
26
42
|
mousePosition = {
|
|
@@ -63,12 +79,11 @@ var Modal = function Modal(props) {
|
|
|
63
79
|
mouseDownTarget: null,
|
|
64
80
|
mouseUpTarget: null,
|
|
65
81
|
content: null,
|
|
66
|
-
originDocumentStyle:
|
|
67
|
-
|
|
68
|
-
paddingRight: ''
|
|
69
|
-
}
|
|
82
|
+
originDocumentStyle: null,
|
|
83
|
+
instanceId: util.generateUUID()
|
|
70
84
|
}),
|
|
71
85
|
context = _useRef.current;
|
|
86
|
+
var config = useModalConfig();
|
|
72
87
|
var _useState3 = useState(props.visible || props.autoShow),
|
|
73
88
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
74
89
|
animation = _useState4[0],
|
|
@@ -83,6 +98,10 @@ var Modal = function Modal(props) {
|
|
|
83
98
|
defaultHeight: height,
|
|
84
99
|
panelRef: panelRef
|
|
85
100
|
});
|
|
101
|
+
var showMask = useMemo(function () {
|
|
102
|
+
if (props.forceMask) return config.instanceIds.includes(context.instanceId);
|
|
103
|
+
return config.instanceIds[0] === context.instanceId;
|
|
104
|
+
}, [config.instanceIds, props.forceMask]);
|
|
86
105
|
var rerender = useRender();
|
|
87
106
|
var handleMaskVisible = function handleMaskVisible() {
|
|
88
107
|
// 多个moal 只有第一个显示的时候才显示遮罩
|
|
@@ -93,6 +112,15 @@ var Modal = function Modal(props) {
|
|
|
93
112
|
rerender();
|
|
94
113
|
}
|
|
95
114
|
};
|
|
115
|
+
useEffect(function () {
|
|
116
|
+
var index = config.instanceIds.indexOf(context.instanceId);
|
|
117
|
+
if (visible && index === -1) {
|
|
118
|
+
addModalInstance(context.instanceId);
|
|
119
|
+
}
|
|
120
|
+
if (!visible && index > -1 && !animation) {
|
|
121
|
+
removeModalInstance(context.instanceId);
|
|
122
|
+
}
|
|
123
|
+
}, [visible, animation, config.instanceIds]);
|
|
96
124
|
useEffect(handleMaskVisible, [visible]);
|
|
97
125
|
var updateOrigin = function updateOrigin() {
|
|
98
126
|
// 更新transform-origin
|
|
@@ -170,9 +198,11 @@ var Modal = function Modal(props) {
|
|
|
170
198
|
// 设置 document.body.style.overflow 和 document.body.style.paddingRight,并记录原始值到 context 中
|
|
171
199
|
var setDocumentOverflow = usePersistFn(function () {
|
|
172
200
|
var doc = document.body.parentNode;
|
|
173
|
-
if (context.isMask) {
|
|
174
|
-
context.originDocumentStyle
|
|
175
|
-
|
|
201
|
+
if (context.isMask && !context.originDocumentStyle) {
|
|
202
|
+
context.originDocumentStyle = {
|
|
203
|
+
overflow: doc.style.overflow,
|
|
204
|
+
paddingRight: doc.style.paddingRight
|
|
205
|
+
};
|
|
176
206
|
}
|
|
177
207
|
doc.style.overflow = 'hidden';
|
|
178
208
|
if (!doc.style.paddingRight) {
|
|
@@ -183,19 +213,21 @@ var Modal = function Modal(props) {
|
|
|
183
213
|
// 还原 document.body.style.overflow 和 document.body.style.paddingRight
|
|
184
214
|
var resetDocumentOverflow = usePersistFn(function () {
|
|
185
215
|
var doc = document.body.parentNode;
|
|
186
|
-
|
|
187
|
-
|
|
216
|
+
if (context.originDocumentStyle) {
|
|
217
|
+
doc.style.overflow = context.originDocumentStyle.overflow;
|
|
218
|
+
doc.style.paddingRight = context.originDocumentStyle.paddingRight;
|
|
219
|
+
}
|
|
188
220
|
});
|
|
189
221
|
useEffect(function () {
|
|
190
222
|
if (!props.hideMask) {
|
|
191
223
|
if (visible) {
|
|
192
224
|
setDocumentOverflow();
|
|
193
225
|
} else {
|
|
194
|
-
if (
|
|
226
|
+
if (config.instanceIds.length && config.instanceIds[config.instanceIds.length - 1] === context.instanceId) return;
|
|
195
227
|
resetDocumentOverflow();
|
|
196
228
|
}
|
|
197
229
|
}
|
|
198
|
-
}, [visible]);
|
|
230
|
+
}, [visible, config.instanceIds]);
|
|
199
231
|
var canDestroy = !visible && !animation;
|
|
200
232
|
useEffect(function () {
|
|
201
233
|
var _props$shouldDestroy;
|
|
@@ -206,6 +238,7 @@ var Modal = function Modal(props) {
|
|
|
206
238
|
// unmount
|
|
207
239
|
return function () {
|
|
208
240
|
var _props$shouldDestroy2;
|
|
241
|
+
removeModalInstance(context.instanceId);
|
|
209
242
|
if (context.isMask) {
|
|
210
243
|
resetDocumentOverflow();
|
|
211
244
|
}
|
|
@@ -335,7 +368,7 @@ var Modal = function Modal(props) {
|
|
|
335
368
|
onClick: function onClick(e) {
|
|
336
369
|
e.stopPropagation();
|
|
337
370
|
},
|
|
338
|
-
className: classNames(props.rootClassName, modalClasses === null || modalClasses === void 0 ? void 0 : modalClasses.rootClass, modalClasses === null || modalClasses === void 0 ? void 0 : modalClasses.wrapper, animation && (modalClasses === null || modalClasses === void 0 ? void 0 : modalClasses.wrapperAnimation), visible ? modalClasses === null || modalClasses === void 0 ? void 0 : modalClasses.wrapperShow : modalClasses === null || modalClasses === void 0 ? void 0 : modalClasses.wrapperHide,
|
|
371
|
+
className: classNames(props.rootClassName, modalClasses === null || modalClasses === void 0 ? void 0 : modalClasses.rootClass, modalClasses === null || modalClasses === void 0 ? void 0 : modalClasses.wrapper, animation && (modalClasses === null || modalClasses === void 0 ? void 0 : modalClasses.wrapperAnimation), visible ? modalClasses === null || modalClasses === void 0 ? void 0 : modalClasses.wrapperShow : modalClasses === null || modalClasses === void 0 ? void 0 : modalClasses.wrapperHide, showMask && (modalClasses === null || modalClasses === void 0 ? void 0 : modalClasses.wrapperIsMask), props.fullScreen && (modalClasses === null || modalClasses === void 0 ? void 0 : modalClasses.wrapperFullScreen), props.moveable && (modalClasses === null || modalClasses === void 0 ? void 0 : modalClasses.wrapperMoveable), props.hideMask && (modalClasses === null || modalClasses === void 0 ? void 0 : modalClasses.wrapperHideMask), props.zoom && !props.moveable && (modalClasses === null || modalClasses === void 0 ? void 0 : modalClasses.wrapperZoom), (isPositionX || isPositionY) && (modalClasses === null || modalClasses === void 0 ? void 0 : modalClasses.wrapperDrawer), props.position === 'left' && (modalClasses === null || modalClasses === void 0 ? void 0 : modalClasses.wrapperDrawerLeft), props.position === 'right' && (modalClasses === null || modalClasses === void 0 ? void 0 : modalClasses.wrapperDrawerRight), props.position === 'top' && (modalClasses === null || modalClasses === void 0 ? void 0 : modalClasses.wrapperDrawerTop), props.position === 'bottom' && (modalClasses === null || modalClasses === void 0 ? void 0 : modalClasses.wrapperDrawerBottom)),
|
|
339
372
|
onAnimationEnd: handleAnimationEnd,
|
|
340
373
|
style: {
|
|
341
374
|
background: props.maskBackground,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sheinx/base",
|
|
3
|
-
"version": "3.8.0-beta.
|
|
3
|
+
"version": "3.8.0-beta.44",
|
|
4
4
|
"description": "",
|
|
5
5
|
"keywords": [],
|
|
6
6
|
"license": "MIT",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"module": "./esm/index.js",
|
|
11
11
|
"typings": "./cjs/index.d.ts",
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@sheinx/hooks": "3.8.0-beta.
|
|
13
|
+
"@sheinx/hooks": "3.8.0-beta.44",
|
|
14
14
|
"immer": "^10.0.0",
|
|
15
15
|
"classnames": "^2.0.0",
|
|
16
16
|
"@shined/reactive": "^0.1.3-alpha.0"
|