@alifd/chat 0.1.3 → 0.1.5
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/es/float-button/main.scss +15 -8
- package/es/float-button/types.d.ts +9 -0
- package/es/float-button/view/float-button.js +4 -2
- package/es/float-button/view/inner-drawer.d.ts +6 -1
- package/es/float-button/view/inner-drawer.js +56 -21
- package/es/index.js +1 -1
- package/lib/float-button/main.scss +15 -8
- package/lib/float-button/types.d.ts +9 -0
- package/lib/float-button/view/float-button.js +3 -1
- package/lib/float-button/view/inner-drawer.d.ts +6 -1
- package/lib/float-button/view/inner-drawer.js +55 -20
- package/lib/index.js +1 -1
- package/package.json +1 -1
|
@@ -18,9 +18,7 @@
|
|
|
18
18
|
|
|
19
19
|
&-inner-drawer {
|
|
20
20
|
flex: 1;
|
|
21
|
-
display: flex;
|
|
22
21
|
overflow: hidden;
|
|
23
|
-
display: flex;
|
|
24
22
|
box-shadow: $shadow-2;
|
|
25
23
|
border-radius: $size-base * 2;
|
|
26
24
|
|
|
@@ -36,30 +34,39 @@
|
|
|
36
34
|
width 0.3s,
|
|
37
35
|
opacity 0.3s;
|
|
38
36
|
display: flex;
|
|
37
|
+
width: 0;
|
|
38
|
+
opacity: 0;
|
|
39
39
|
}
|
|
40
40
|
&-inner {
|
|
41
|
-
|
|
41
|
+
width: 100%;
|
|
42
|
+
height: 100%;
|
|
42
43
|
display: flex;
|
|
43
44
|
flex-direction: column;
|
|
45
|
+
position: relative;
|
|
44
46
|
|
|
45
47
|
&--has-title {
|
|
46
48
|
.#{$prefix}float-button-inner-drawer {
|
|
47
49
|
&-header {
|
|
48
|
-
|
|
50
|
+
margin: $size-base * 2 $size-base * 3;
|
|
49
51
|
}
|
|
50
52
|
&-body {
|
|
51
|
-
|
|
53
|
+
margin-top: 0;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
&--has-close {
|
|
58
|
+
.#{$prefix}float-button-inner-drawer {
|
|
59
|
+
&-header-title {
|
|
60
|
+
margin-right: $size-base * 2;
|
|
52
61
|
}
|
|
53
62
|
}
|
|
54
63
|
}
|
|
55
64
|
}
|
|
56
65
|
&-header {
|
|
57
66
|
flex: none;
|
|
58
|
-
position: relative;
|
|
59
67
|
&-title {
|
|
60
68
|
font-size: $font-size-subhead;
|
|
61
69
|
line-height: 1.5;
|
|
62
|
-
padding-right: $size-base * 2;
|
|
63
70
|
}
|
|
64
71
|
&-close {
|
|
65
72
|
position: absolute;
|
|
@@ -81,7 +88,7 @@
|
|
|
81
88
|
}
|
|
82
89
|
&-body {
|
|
83
90
|
flex: 1;
|
|
84
|
-
|
|
91
|
+
margin: $size-base * 2 $size-base * 3;
|
|
85
92
|
}
|
|
86
93
|
&-footer {
|
|
87
94
|
flex: none;
|
|
@@ -225,4 +225,13 @@ export interface FloatButtonInnerDrawerProps extends FloatButtonProps {
|
|
|
225
225
|
target: string | (() => HTMLElement);
|
|
226
226
|
title?: ReactNode;
|
|
227
227
|
drawerClassName?: string;
|
|
228
|
+
/**
|
|
229
|
+
* 关闭时是否保留节点
|
|
230
|
+
* @defaultValue false
|
|
231
|
+
*/
|
|
232
|
+
cache?: boolean;
|
|
233
|
+
beforeOpen?: () => void;
|
|
234
|
+
afterOpen?: () => void;
|
|
235
|
+
beforeClose?: () => void;
|
|
236
|
+
afterClose?: () => void;
|
|
228
237
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __rest } from "tslib";
|
|
2
|
-
import React, { forwardRef, useEffect, useImperativeHandle, useRef, useState
|
|
2
|
+
import React, { forwardRef, useEffect, useImperativeHandle, useRef, useState } from 'react';
|
|
3
3
|
import cs from 'classnames';
|
|
4
4
|
import { Balloon, ConfigProvider } from '@alifd/next';
|
|
5
5
|
import { PREFIX_DEFAULT, useControlable } from '../../utils/index';
|
|
@@ -122,7 +122,9 @@ const FloatButton = forwardRef((props, ref) => {
|
|
|
122
122
|
};
|
|
123
123
|
const renderView = () => {
|
|
124
124
|
if (typeof _renderView === 'function') {
|
|
125
|
-
return _renderView(`${cls}-`, Object.assign(Object.assign({}, props), {
|
|
125
|
+
return _renderView(`${cls}-`, Object.assign(Object.assign({}, props), { triggerType,
|
|
126
|
+
showClose,
|
|
127
|
+
visible, onVisibleChange: handleVisibleChange }));
|
|
126
128
|
}
|
|
127
129
|
return renderBalloon();
|
|
128
130
|
};
|
|
@@ -12,7 +12,12 @@ export interface InnerDrawerProps {
|
|
|
12
12
|
closable?: boolean;
|
|
13
13
|
triggerType: FloatButtonProps['triggerType'];
|
|
14
14
|
width?: string | number;
|
|
15
|
+
cache?: boolean;
|
|
16
|
+
beforeOpen?: () => void;
|
|
17
|
+
afterOpen?: () => void;
|
|
18
|
+
beforeClose?: () => void;
|
|
19
|
+
afterClose?: () => void;
|
|
15
20
|
}
|
|
16
|
-
export declare function InnerDrawer({ className, prefix, target, children, trigger, triggerType, visible, onVisibleChange, closable, title, width, }: InnerDrawerProps): React.JSX.Element;
|
|
21
|
+
export declare function InnerDrawer({ className, prefix, target, children, trigger, triggerType, visible, onVisibleChange, closable, title, cache, width, beforeOpen, beforeClose, afterOpen, afterClose, }: InnerDrawerProps): React.JSX.Element;
|
|
17
22
|
declare const _default: import("@alifd/next/types/config-provider/types").ConfiguredComponentClass<FloatButtonInnerDrawerProps & import("@alifd/next/types/config-provider/types").ComponentCommonProps, undefined, {}>;
|
|
18
23
|
export default _default;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __rest } from "tslib";
|
|
2
|
-
import React, { useRef,
|
|
2
|
+
import React, { useRef, useEffect, useState } from 'react';
|
|
3
3
|
import ReactDOM from 'react-dom';
|
|
4
4
|
import cs from 'classnames';
|
|
5
5
|
import { Icon, ConfigProvider } from '@alifd/next';
|
|
@@ -37,36 +37,70 @@ function getMountTarget(prefix, target) {
|
|
|
37
37
|
dom.classList.add(`${prefix}inner-start`);
|
|
38
38
|
return mountTarget;
|
|
39
39
|
}
|
|
40
|
-
export function InnerDrawer({ className, prefix, target, children, trigger, triggerType, visible, onVisibleChange, closable = true, title, width = 400, }) {
|
|
41
|
-
const
|
|
40
|
+
export function InnerDrawer({ className, prefix, target, children, trigger, triggerType, visible, onVisibleChange, closable = true, title, cache = false, width = 400, beforeOpen, beforeClose, afterOpen, afterClose, }) {
|
|
41
|
+
const cls = `${prefix}inner-drawer`;
|
|
42
|
+
const [mountTarget, setMountTarget] = useState(null);
|
|
43
|
+
const [showPane, setShowPane] = useState(!!visible);
|
|
44
|
+
const propsRef = useRef({ visible, afterOpen, afterClose });
|
|
45
|
+
propsRef.current = {
|
|
46
|
+
visible,
|
|
47
|
+
afterOpen,
|
|
48
|
+
afterClose() {
|
|
49
|
+
afterClose === null || afterClose === void 0 ? void 0 : afterClose();
|
|
50
|
+
if (!cache) {
|
|
51
|
+
setShowPane(false);
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
};
|
|
42
55
|
useEffect(() => {
|
|
43
56
|
if (visible) {
|
|
44
|
-
|
|
57
|
+
setMountTarget(getMountTarget(`${cls}-`, target));
|
|
58
|
+
setShowPane(true);
|
|
45
59
|
}
|
|
46
60
|
}, [visible]);
|
|
47
|
-
const cls = `${prefix}inner-drawer`;
|
|
48
61
|
const handleVisibleChange = (nextVisible, type) => {
|
|
49
62
|
onVisibleChange === null || onVisibleChange === void 0 ? void 0 : onVisibleChange(nextVisible, type);
|
|
50
63
|
};
|
|
51
64
|
const handleVisibleChangeRef = useRef(handleVisibleChange);
|
|
52
65
|
handleVisibleChangeRef.current = handleVisibleChange;
|
|
53
66
|
const handlers = useTriggerType({ visible, onVisibleChange: handleVisibleChange, triggerType });
|
|
54
|
-
const mountTarget = mount ? getMountTarget(`${cls}-`, target) : undefined;
|
|
55
67
|
const domRef = useRef(null);
|
|
56
68
|
const triggerRef = useRef(null);
|
|
57
|
-
|
|
58
|
-
if (mountTarget) {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
69
|
+
useEffect(() => {
|
|
70
|
+
if (!mountTarget) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
if (visible) {
|
|
74
|
+
beforeOpen === null || beforeOpen === void 0 ? void 0 : beforeOpen();
|
|
75
|
+
const id = requestAnimationFrame(() => {
|
|
76
|
+
mountTarget.style.width = `${typeof width === 'number' ? `${width}px` : width}`;
|
|
77
|
+
mountTarget.style.opacity = '1';
|
|
78
|
+
});
|
|
65
79
|
return () => {
|
|
66
|
-
|
|
80
|
+
cancelAnimationFrame(id);
|
|
67
81
|
};
|
|
68
82
|
}
|
|
69
|
-
|
|
83
|
+
else {
|
|
84
|
+
beforeClose === null || beforeClose === void 0 ? void 0 : beforeClose();
|
|
85
|
+
mountTarget.style.width = `0px`;
|
|
86
|
+
mountTarget.style.opacity = '0';
|
|
87
|
+
}
|
|
88
|
+
}, [visible, mountTarget]);
|
|
89
|
+
useEffect(() => {
|
|
90
|
+
if (!mountTarget) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
const onEnd = (e) => {
|
|
94
|
+
if (e.target === mountTarget && e.propertyName === 'width') {
|
|
95
|
+
const { visible, afterClose, afterOpen } = propsRef.current;
|
|
96
|
+
visible ? afterOpen === null || afterOpen === void 0 ? void 0 : afterOpen() : afterClose === null || afterClose === void 0 ? void 0 : afterClose();
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
mountTarget.addEventListener('transitionend', onEnd);
|
|
100
|
+
return () => {
|
|
101
|
+
mountTarget.removeEventListener('transitionend', onEnd);
|
|
102
|
+
};
|
|
103
|
+
}, [mountTarget]);
|
|
70
104
|
useEffect(() => {
|
|
71
105
|
if (!mountTarget || !className) {
|
|
72
106
|
return;
|
|
@@ -96,22 +130,23 @@ export function InnerDrawer({ className, prefix, target, children, trigger, trig
|
|
|
96
130
|
return (React.createElement(React.Fragment, null,
|
|
97
131
|
React.createElement("div", Object.assign({}, handlers, { ref: triggerRef }), trigger),
|
|
98
132
|
!!mountTarget &&
|
|
99
|
-
ReactDOM.createPortal(React.createElement("div", { className: cs(cls, { [`${cls}--visible`]: visible }), ref: domRef
|
|
133
|
+
ReactDOM.createPortal(React.createElement("div", { className: cs(cls, { [`${cls}--visible`]: visible }), ref: domRef },
|
|
100
134
|
React.createElement("div", { className: cs(`${cls}-inner`, {
|
|
101
135
|
[`${cls}-inner--has-title`]: !!title,
|
|
102
|
-
|
|
136
|
+
[`${cls}-inner--has-close`]: !!closable,
|
|
137
|
+
}), style: { width } },
|
|
103
138
|
React.createElement("div", { className: cs(`${cls}-header`) },
|
|
104
139
|
!!title && React.createElement("div", { className: `${cls}-header-title` }, title),
|
|
105
140
|
!!closable && (React.createElement("button", { className: `${cls}-header-close`, onClick: () => handleVisibleChange(false, 'closeClick') },
|
|
106
141
|
React.createElement(Icon, { className: `${cls}-header-close-icon`, type: "close", size: 12 })))),
|
|
107
|
-
React.createElement("div", { className: `${cls}-body` }, children))), mountTarget)));
|
|
142
|
+
React.createElement("div", { className: `${cls}-body` }, showPane ? children : null))), mountTarget)));
|
|
108
143
|
}
|
|
109
144
|
function FloatButtonByInnerDrawer(props) {
|
|
110
|
-
const { width, title, target, drawerClassName } = props, rests = __rest(props, ["width", "title", "target", "drawerClassName"]);
|
|
145
|
+
const { width, title, target, drawerClassName, cache = false, beforeOpen, afterOpen, beforeClose, afterClose } = props, rests = __rest(props, ["width", "title", "target", "drawerClassName", "cache", "beforeOpen", "afterOpen", "beforeClose", "afterClose"]);
|
|
111
146
|
return (React.createElement(FloatButton, Object.assign({}, rests, { _renderView: (prefix, { trigger, triggerType, visible, onVisibleChange, showClose, children }) => {
|
|
112
147
|
return (React.createElement(InnerDrawer, { className: drawerClassName, prefix: prefix, target: target, width: width, title: title, trigger: trigger, triggerType: triggerType, visible: visible, closable: showClose, onVisibleChange: (...args) => {
|
|
113
148
|
onVisibleChange === null || onVisibleChange === void 0 ? void 0 : onVisibleChange(...args);
|
|
114
|
-
} }, children));
|
|
149
|
+
}, cache: cache, beforeOpen: beforeOpen, afterOpen: afterOpen, beforeClose: beforeClose, afterClose: afterClose }, children));
|
|
115
150
|
} })));
|
|
116
151
|
}
|
|
117
152
|
export default ConfigProvider.config(FloatButtonByInnerDrawer);
|
package/es/index.js
CHANGED
|
@@ -18,9 +18,7 @@
|
|
|
18
18
|
|
|
19
19
|
&-inner-drawer {
|
|
20
20
|
flex: 1;
|
|
21
|
-
display: flex;
|
|
22
21
|
overflow: hidden;
|
|
23
|
-
display: flex;
|
|
24
22
|
box-shadow: $shadow-2;
|
|
25
23
|
border-radius: $size-base * 2;
|
|
26
24
|
|
|
@@ -36,30 +34,39 @@
|
|
|
36
34
|
width 0.3s,
|
|
37
35
|
opacity 0.3s;
|
|
38
36
|
display: flex;
|
|
37
|
+
width: 0;
|
|
38
|
+
opacity: 0;
|
|
39
39
|
}
|
|
40
40
|
&-inner {
|
|
41
|
-
|
|
41
|
+
width: 100%;
|
|
42
|
+
height: 100%;
|
|
42
43
|
display: flex;
|
|
43
44
|
flex-direction: column;
|
|
45
|
+
position: relative;
|
|
44
46
|
|
|
45
47
|
&--has-title {
|
|
46
48
|
.#{$prefix}float-button-inner-drawer {
|
|
47
49
|
&-header {
|
|
48
|
-
|
|
50
|
+
margin: $size-base * 2 $size-base * 3;
|
|
49
51
|
}
|
|
50
52
|
&-body {
|
|
51
|
-
|
|
53
|
+
margin-top: 0;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
&--has-close {
|
|
58
|
+
.#{$prefix}float-button-inner-drawer {
|
|
59
|
+
&-header-title {
|
|
60
|
+
margin-right: $size-base * 2;
|
|
52
61
|
}
|
|
53
62
|
}
|
|
54
63
|
}
|
|
55
64
|
}
|
|
56
65
|
&-header {
|
|
57
66
|
flex: none;
|
|
58
|
-
position: relative;
|
|
59
67
|
&-title {
|
|
60
68
|
font-size: $font-size-subhead;
|
|
61
69
|
line-height: 1.5;
|
|
62
|
-
padding-right: $size-base * 2;
|
|
63
70
|
}
|
|
64
71
|
&-close {
|
|
65
72
|
position: absolute;
|
|
@@ -81,7 +88,7 @@
|
|
|
81
88
|
}
|
|
82
89
|
&-body {
|
|
83
90
|
flex: 1;
|
|
84
|
-
|
|
91
|
+
margin: $size-base * 2 $size-base * 3;
|
|
85
92
|
}
|
|
86
93
|
&-footer {
|
|
87
94
|
flex: none;
|
|
@@ -225,4 +225,13 @@ export interface FloatButtonInnerDrawerProps extends FloatButtonProps {
|
|
|
225
225
|
target: string | (() => HTMLElement);
|
|
226
226
|
title?: ReactNode;
|
|
227
227
|
drawerClassName?: string;
|
|
228
|
+
/**
|
|
229
|
+
* 关闭时是否保留节点
|
|
230
|
+
* @defaultValue false
|
|
231
|
+
*/
|
|
232
|
+
cache?: boolean;
|
|
233
|
+
beforeOpen?: () => void;
|
|
234
|
+
afterOpen?: () => void;
|
|
235
|
+
beforeClose?: () => void;
|
|
236
|
+
afterClose?: () => void;
|
|
228
237
|
}
|
|
@@ -124,7 +124,9 @@ const FloatButton = (0, react_1.forwardRef)((props, ref) => {
|
|
|
124
124
|
};
|
|
125
125
|
const renderView = () => {
|
|
126
126
|
if (typeof _renderView === 'function') {
|
|
127
|
-
return _renderView(`${cls}-`, Object.assign(Object.assign({}, props), {
|
|
127
|
+
return _renderView(`${cls}-`, Object.assign(Object.assign({}, props), { triggerType,
|
|
128
|
+
showClose,
|
|
129
|
+
visible, onVisibleChange: handleVisibleChange }));
|
|
128
130
|
}
|
|
129
131
|
return renderBalloon();
|
|
130
132
|
};
|
|
@@ -12,7 +12,12 @@ export interface InnerDrawerProps {
|
|
|
12
12
|
closable?: boolean;
|
|
13
13
|
triggerType: FloatButtonProps['triggerType'];
|
|
14
14
|
width?: string | number;
|
|
15
|
+
cache?: boolean;
|
|
16
|
+
beforeOpen?: () => void;
|
|
17
|
+
afterOpen?: () => void;
|
|
18
|
+
beforeClose?: () => void;
|
|
19
|
+
afterClose?: () => void;
|
|
15
20
|
}
|
|
16
|
-
export declare function InnerDrawer({ className, prefix, target, children, trigger, triggerType, visible, onVisibleChange, closable, title, width, }: InnerDrawerProps): React.JSX.Element;
|
|
21
|
+
export declare function InnerDrawer({ className, prefix, target, children, trigger, triggerType, visible, onVisibleChange, closable, title, cache, width, beforeOpen, beforeClose, afterOpen, afterClose, }: InnerDrawerProps): React.JSX.Element;
|
|
17
22
|
declare const _default: import("@alifd/next/types/config-provider/types").ConfiguredComponentClass<FloatButtonInnerDrawerProps & import("@alifd/next/types/config-provider/types").ComponentCommonProps, undefined, {}>;
|
|
18
23
|
export default _default;
|
|
@@ -40,36 +40,70 @@ function getMountTarget(prefix, target) {
|
|
|
40
40
|
dom.classList.add(`${prefix}inner-start`);
|
|
41
41
|
return mountTarget;
|
|
42
42
|
}
|
|
43
|
-
function InnerDrawer({ className, prefix, target, children, trigger, triggerType, visible, onVisibleChange, closable = true, title, width = 400, }) {
|
|
44
|
-
const
|
|
43
|
+
function InnerDrawer({ className, prefix, target, children, trigger, triggerType, visible, onVisibleChange, closable = true, title, cache = false, width = 400, beforeOpen, beforeClose, afterOpen, afterClose, }) {
|
|
44
|
+
const cls = `${prefix}inner-drawer`;
|
|
45
|
+
const [mountTarget, setMountTarget] = (0, react_1.useState)(null);
|
|
46
|
+
const [showPane, setShowPane] = (0, react_1.useState)(!!visible);
|
|
47
|
+
const propsRef = (0, react_1.useRef)({ visible, afterOpen, afterClose });
|
|
48
|
+
propsRef.current = {
|
|
49
|
+
visible,
|
|
50
|
+
afterOpen,
|
|
51
|
+
afterClose() {
|
|
52
|
+
afterClose === null || afterClose === void 0 ? void 0 : afterClose();
|
|
53
|
+
if (!cache) {
|
|
54
|
+
setShowPane(false);
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
};
|
|
45
58
|
(0, react_1.useEffect)(() => {
|
|
46
59
|
if (visible) {
|
|
47
|
-
|
|
60
|
+
setMountTarget(getMountTarget(`${cls}-`, target));
|
|
61
|
+
setShowPane(true);
|
|
48
62
|
}
|
|
49
63
|
}, [visible]);
|
|
50
|
-
const cls = `${prefix}inner-drawer`;
|
|
51
64
|
const handleVisibleChange = (nextVisible, type) => {
|
|
52
65
|
onVisibleChange === null || onVisibleChange === void 0 ? void 0 : onVisibleChange(nextVisible, type);
|
|
53
66
|
};
|
|
54
67
|
const handleVisibleChangeRef = (0, react_1.useRef)(handleVisibleChange);
|
|
55
68
|
handleVisibleChangeRef.current = handleVisibleChange;
|
|
56
69
|
const handlers = (0, useTriggerType_1.useTriggerType)({ visible, onVisibleChange: handleVisibleChange, triggerType });
|
|
57
|
-
const mountTarget = mount ? getMountTarget(`${cls}-`, target) : undefined;
|
|
58
70
|
const domRef = (0, react_1.useRef)(null);
|
|
59
71
|
const triggerRef = (0, react_1.useRef)(null);
|
|
60
|
-
(0, react_1.
|
|
61
|
-
if (mountTarget) {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
72
|
+
(0, react_1.useEffect)(() => {
|
|
73
|
+
if (!mountTarget) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
if (visible) {
|
|
77
|
+
beforeOpen === null || beforeOpen === void 0 ? void 0 : beforeOpen();
|
|
78
|
+
const id = requestAnimationFrame(() => {
|
|
79
|
+
mountTarget.style.width = `${typeof width === 'number' ? `${width}px` : width}`;
|
|
80
|
+
mountTarget.style.opacity = '1';
|
|
81
|
+
});
|
|
68
82
|
return () => {
|
|
69
|
-
|
|
83
|
+
cancelAnimationFrame(id);
|
|
70
84
|
};
|
|
71
85
|
}
|
|
72
|
-
|
|
86
|
+
else {
|
|
87
|
+
beforeClose === null || beforeClose === void 0 ? void 0 : beforeClose();
|
|
88
|
+
mountTarget.style.width = `0px`;
|
|
89
|
+
mountTarget.style.opacity = '0';
|
|
90
|
+
}
|
|
91
|
+
}, [visible, mountTarget]);
|
|
92
|
+
(0, react_1.useEffect)(() => {
|
|
93
|
+
if (!mountTarget) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
const onEnd = (e) => {
|
|
97
|
+
if (e.target === mountTarget && e.propertyName === 'width') {
|
|
98
|
+
const { visible, afterClose, afterOpen } = propsRef.current;
|
|
99
|
+
visible ? afterOpen === null || afterOpen === void 0 ? void 0 : afterOpen() : afterClose === null || afterClose === void 0 ? void 0 : afterClose();
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
mountTarget.addEventListener('transitionend', onEnd);
|
|
103
|
+
return () => {
|
|
104
|
+
mountTarget.removeEventListener('transitionend', onEnd);
|
|
105
|
+
};
|
|
106
|
+
}, [mountTarget]);
|
|
73
107
|
(0, react_1.useEffect)(() => {
|
|
74
108
|
if (!mountTarget || !className) {
|
|
75
109
|
return;
|
|
@@ -99,23 +133,24 @@ function InnerDrawer({ className, prefix, target, children, trigger, triggerType
|
|
|
99
133
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
100
134
|
react_1.default.createElement("div", Object.assign({}, handlers, { ref: triggerRef }), trigger),
|
|
101
135
|
!!mountTarget &&
|
|
102
|
-
react_dom_1.default.createPortal(react_1.default.createElement("div", { className: (0, classnames_1.default)(cls, { [`${cls}--visible`]: visible }), ref: domRef
|
|
136
|
+
react_dom_1.default.createPortal(react_1.default.createElement("div", { className: (0, classnames_1.default)(cls, { [`${cls}--visible`]: visible }), ref: domRef },
|
|
103
137
|
react_1.default.createElement("div", { className: (0, classnames_1.default)(`${cls}-inner`, {
|
|
104
138
|
[`${cls}-inner--has-title`]: !!title,
|
|
105
|
-
|
|
139
|
+
[`${cls}-inner--has-close`]: !!closable,
|
|
140
|
+
}), style: { width } },
|
|
106
141
|
react_1.default.createElement("div", { className: (0, classnames_1.default)(`${cls}-header`) },
|
|
107
142
|
!!title && react_1.default.createElement("div", { className: `${cls}-header-title` }, title),
|
|
108
143
|
!!closable && (react_1.default.createElement("button", { className: `${cls}-header-close`, onClick: () => handleVisibleChange(false, 'closeClick') },
|
|
109
144
|
react_1.default.createElement(next_1.Icon, { className: `${cls}-header-close-icon`, type: "close", size: 12 })))),
|
|
110
|
-
react_1.default.createElement("div", { className: `${cls}-body` }, children))), mountTarget)));
|
|
145
|
+
react_1.default.createElement("div", { className: `${cls}-body` }, showPane ? children : null))), mountTarget)));
|
|
111
146
|
}
|
|
112
147
|
exports.InnerDrawer = InnerDrawer;
|
|
113
148
|
function FloatButtonByInnerDrawer(props) {
|
|
114
|
-
const { width, title, target, drawerClassName } = props, rests = tslib_1.__rest(props, ["width", "title", "target", "drawerClassName"]);
|
|
149
|
+
const { width, title, target, drawerClassName, cache = false, beforeOpen, afterOpen, beforeClose, afterClose } = props, rests = tslib_1.__rest(props, ["width", "title", "target", "drawerClassName", "cache", "beforeOpen", "afterOpen", "beforeClose", "afterClose"]);
|
|
115
150
|
return (react_1.default.createElement(float_button_1.default, Object.assign({}, rests, { _renderView: (prefix, { trigger, triggerType, visible, onVisibleChange, showClose, children }) => {
|
|
116
151
|
return (react_1.default.createElement(InnerDrawer, { className: drawerClassName, prefix: prefix, target: target, width: width, title: title, trigger: trigger, triggerType: triggerType, visible: visible, closable: showClose, onVisibleChange: (...args) => {
|
|
117
152
|
onVisibleChange === null || onVisibleChange === void 0 ? void 0 : onVisibleChange(...args);
|
|
118
|
-
} }, children));
|
|
153
|
+
}, cache: cache, beforeOpen: beforeOpen, afterOpen: afterOpen, beforeClose: beforeClose, afterClose: afterClose }, children));
|
|
119
154
|
} })));
|
|
120
155
|
}
|
|
121
156
|
exports.default = next_1.ConfigProvider.config(FloatButtonByInnerDrawer);
|
package/lib/index.js
CHANGED
|
@@ -18,4 +18,4 @@ var tag_1 = require("./tag");
|
|
|
18
18
|
Object.defineProperty(exports, "Tag", { enumerable: true, get: function () { return __importDefault(tag_1).default; } });
|
|
19
19
|
var tab_1 = require("./tab");
|
|
20
20
|
Object.defineProperty(exports, "Tab", { enumerable: true, get: function () { return __importDefault(tab_1).default; } });
|
|
21
|
-
exports.version = '0.1.
|
|
21
|
+
exports.version = '0.1.5';
|