UNPKG

5.4 kBJavaScriptView Raw
1'use strict';
2
3exports.__esModule = true;
4
5var _extends2 = require('babel-runtime/helpers/extends');
6
7var _extends3 = _interopRequireDefault(_extends2);
8
9var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
10
11var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
12
13var _react = require('react');
14
15var _react2 = _interopRequireDefault(_react);
16
17var _classnames = require('classnames');
18
19var _classnames2 = _interopRequireDefault(_classnames);
20
21var _overlay = require('@alifd/overlay');
22
23var _overlay2 = _interopRequireDefault(_overlay);
24
25var _animate = require('../animate');
26
27var _animate2 = _interopRequireDefault(_animate);
28
29var _util = require('../util');
30
31function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
32
33var Overlay2 = function Overlay2(props) {
34 var _classNames;
35
36 if (!_react.useState || !_react.useRef || !_react.useEffect) {
37 _util.log.warning('need react version > 16.8.0');
38 return null;
39 }
40
41 var _props$prefix = props.prefix,
42 prefix = _props$prefix === undefined ? 'next-' : _props$prefix,
43 _props$animation = props.animation,
44 animation = _props$animation === undefined ? { in: 'expandInDown', out: 'expandOutUp' } : _props$animation,
45 visible = props.visible,
46 hasMask = props.hasMask,
47 align = props.align,
48 _props$points = props.points,
49 points = _props$points === undefined ? align ? align.split(' ') : undefined : _props$points,
50 onPosition = props.onPosition,
51 children = props.children,
52 className = props.className,
53 style = props.style,
54 wrapperClassName = props.wrapperClassName,
55 beforeOpen = props.beforeOpen,
56 onOpen = props.onOpen,
57 afterOpen = props.afterOpen,
58 beforeClose = props.beforeClose,
59 onClose = props.onClose,
60 afterClose = props.afterClose,
61 others = (0, _objectWithoutProperties3.default)(props, ['prefix', 'animation', 'visible', 'hasMask', 'align', 'points', 'onPosition', 'children', 'className', 'style', 'wrapperClassName', 'beforeOpen', 'onOpen', 'afterOpen', 'beforeClose', 'onClose', 'afterClose']);
62
63 var _useState = (0, _react.useState)(true),
64 isAnimationEnd = _useState[0],
65 markAnimationEnd = _useState[1];
66
67 var overlayRef = (0, _react.useRef)(null);
68
69 var handleEnter = function handleEnter() {
70 markAnimationEnd(false);
71 typeof beforeOpen === 'function' && beforeOpen(overlayRef.current);
72 };
73 var handleEntering = function handleEntering() {
74 typeof onOpen === 'function' && onOpen(overlayRef.current);
75 };
76 var handleEntered = function handleEntered() {
77 typeof afterOpen === 'function' && afterOpen(overlayRef.current);
78 };
79 var handleExit = function handleExit() {
80 typeof beforeClose === 'function' && beforeClose(overlayRef.current);
81 };
82 var handleExiting = function handleExiting() {
83 typeof onClose === 'function' && onClose(overlayRef.current);
84 };
85 var handleExited = function handleExited() {
86 markAnimationEnd(true);
87 typeof afterClose === 'function' && afterClose(overlayRef.current);
88 };
89
90 var childrenNode = _react2.default.createElement(
91 _animate2.default.OverlayAnimate,
92 {
93 visible: visible,
94 animation: animation,
95 onEnter: handleEnter,
96 onEntering: handleEntering,
97 onEntered: handleEntered,
98 onExit: handleExit,
99 onExiting: handleExiting,
100 onExited: handleExited,
101 timeout: 300,
102 style: style
103 },
104 children ? (0, _react.cloneElement)(children, {
105 className: (0, _classnames2.default)([prefix + 'overlay-inner', className, children && children.props && children.props.className])
106 }) : _react2.default.createElement('span', null)
107 );
108
109 var wraperCls = (0, _classnames2.default)((_classNames = {}, _classNames[prefix + 'overlay-wrapper v2'] = true, _classNames[wrapperClassName] = wrapperClassName, _classNames.opened = visible, _classNames));
110
111 var handlePosition = function handlePosition(result) {
112 // 兼容 1.x, 2.x 可去除这段逻辑
113 (0, _extends3.default)(result, { align: result.config.points });
114
115 typeof onPosition === 'function' && onPosition(result);
116 };
117
118 var maskRender = function maskRender(node) {
119 return _react2.default.createElement(
120 _animate2.default.OverlayAnimate,
121 {
122 visible: visible,
123 animation: animation ? { in: 'fadeIn', out: 'fadeOut' } : false,
124 timeout: 300,
125 unmountOnExit: true
126 },
127 node
128 );
129 };
130
131 return _react2.default.createElement(
132 _overlay2.default,
133 (0, _extends3.default)({}, others, {
134 visible: visible,
135 isAnimationEnd: isAnimationEnd,
136 hasMask: hasMask,
137 wrapperClassName: wraperCls,
138 maskClassName: prefix + 'overlay-backdrop',
139 maskRender: maskRender,
140 points: points,
141 onPosition: handlePosition,
142 ref: overlayRef
143 }),
144 childrenNode
145 );
146}; /* istanbul ignore file */
147exports.default = Overlay2;
148module.exports = exports['default'];
\No newline at end of file