UNPKG

6.2 kBJavaScriptView Raw
1import _extends from "@babel/runtime/helpers/esm/extends";
2import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
3import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
4var __rest = this && this.__rest || function (s, e) {
5 var t = {};
6 for (var p in s) {
7 if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
8 }
9 if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
10 if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
11 }
12 return t;
13};
14import classNames from 'classnames';
15import RcDrawer from 'rc-drawer';
16import * as React from 'react';
17import { ConfigContext } from '../config-provider';
18import { NoFormStyle } from '../form/context';
19import { getTransitionName } from '../_util/motion';
20import { tuple } from '../_util/type';
21import warning from '../_util/warning';
22import DrawerPanel from './DrawerPanel';
23// CSSINJS
24import useStyle from './style';
25import { NoCompactStyle } from '../space/Compact';
26var SizeTypes = tuple('default', 'large');
27var defaultPushState = {
28 distance: 180
29};
30function Drawer(props) {
31 var rootClassName = props.rootClassName,
32 width = props.width,
33 height = props.height,
34 _props$size = props.size,
35 size = _props$size === void 0 ? 'default' : _props$size,
36 _props$mask = props.mask,
37 mask = _props$mask === void 0 ? true : _props$mask,
38 _props$push = props.push,
39 push = _props$push === void 0 ? defaultPushState : _props$push,
40 open = props.open,
41 afterOpenChange = props.afterOpenChange,
42 onClose = props.onClose,
43 customizePrefixCls = props.prefixCls,
44 customizeGetContainer = props.getContainer,
45 visible = props.visible,
46 afterVisibleChange = props.afterVisibleChange,
47 rest = __rest(props, ["rootClassName", "width", "height", "size", "mask", "push", "open", "afterOpenChange", "onClose", "prefixCls", "getContainer", "visible", "afterVisibleChange"]);
48 var _React$useContext = React.useContext(ConfigContext),
49 getPopupContainer = _React$useContext.getPopupContainer,
50 getPrefixCls = _React$useContext.getPrefixCls,
51 direction = _React$useContext.direction;
52 var prefixCls = getPrefixCls('drawer', customizePrefixCls);
53 // Style
54 var _useStyle = useStyle(prefixCls),
55 _useStyle2 = _slicedToArray(_useStyle, 2),
56 wrapSSR = _useStyle2[0],
57 hashId = _useStyle2[1];
58 var getContainer =
59 // 有可能为 false,所以不能直接判断
60 customizeGetContainer === undefined && getPopupContainer ? function () {
61 return getPopupContainer(document.body);
62 } : customizeGetContainer;
63 var drawerClassName = classNames(_defineProperty({
64 'no-mask': !mask
65 }, prefixCls + "-rtl", direction === 'rtl'), rootClassName, hashId);
66 // ========================== Warning ===========================
67 if (process.env.NODE_ENV !== 'production') {
68 [['visible', 'open'], ['afterVisibleChange', 'afterOpenChange']].forEach(function (_ref) {
69 var _ref2 = _slicedToArray(_ref, 2),
70 deprecatedName = _ref2[0],
71 newName = _ref2[1];
72 process.env.NODE_ENV !== "production" ? warning(!(deprecatedName in props), 'Drawer', "`" + deprecatedName + "` is deprecated, please use `" + newName + "` instead.") : void 0;
73 });
74 }
75 // ============================ Size ============================
76 var mergedWidth = React.useMemo(function () {
77 return width !== null && width !== void 0 ? width : size === 'large' ? 736 : 378;
78 }, [width, size]);
79 var mergedHeight = React.useMemo(function () {
80 return height !== null && height !== void 0 ? height : size === 'large' ? 736 : 378;
81 }, [height, size]);
82 // =========================== Motion ===========================
83 var maskMotion = {
84 motionName: getTransitionName(prefixCls, 'mask-motion'),
85 motionAppear: true,
86 motionEnter: true,
87 motionLeave: true,
88 motionDeadline: 500
89 };
90 var panelMotion = function panelMotion(motionPlacement) {
91 return {
92 motionName: getTransitionName(prefixCls, "panel-motion-" + motionPlacement),
93 motionAppear: true,
94 motionEnter: true,
95 motionLeave: true,
96 motionDeadline: 500
97 };
98 };
99 // =========================== Render ===========================
100 return wrapSSR( /*#__PURE__*/React.createElement(NoCompactStyle, null, /*#__PURE__*/React.createElement(NoFormStyle, {
101 status: true,
102 override: true
103 }, /*#__PURE__*/React.createElement(RcDrawer, _extends({
104 prefixCls: prefixCls,
105 onClose: onClose,
106 maskMotion: maskMotion,
107 motion: panelMotion
108 }, rest, {
109 open: open !== null && open !== void 0 ? open : visible,
110 mask: mask,
111 push: push,
112 width: mergedWidth,
113 height: mergedHeight,
114 rootClassName: drawerClassName,
115 getContainer: getContainer,
116 afterOpenChange: afterOpenChange !== null && afterOpenChange !== void 0 ? afterOpenChange : afterVisibleChange
117 }), /*#__PURE__*/React.createElement(DrawerPanel, _extends({
118 prefixCls: prefixCls
119 }, rest, {
120 onClose: onClose
121 }))))));
122}
123if (process.env.NODE_ENV !== 'production') {
124 Drawer.displayName = 'Drawer';
125}
126function PurePanel(_a) {
127 var customizePrefixCls = _a.prefixCls,
128 style = _a.style,
129 className = _a.className,
130 _a$placement = _a.placement,
131 placement = _a$placement === void 0 ? 'right' : _a$placement,
132 restProps = __rest(_a, ["prefixCls", "style", "className", "placement"]);
133 var _React$useContext2 = React.useContext(ConfigContext),
134 getPrefixCls = _React$useContext2.getPrefixCls;
135 var prefixCls = getPrefixCls('drawer', customizePrefixCls);
136 // Style
137 var _useStyle3 = useStyle(prefixCls),
138 _useStyle4 = _slicedToArray(_useStyle3, 2),
139 wrapSSR = _useStyle4[0],
140 hashId = _useStyle4[1];
141 return wrapSSR( /*#__PURE__*/React.createElement("div", {
142 className: classNames(prefixCls, prefixCls + "-pure", prefixCls + "-" + placement, hashId, className),
143 style: style
144 }, /*#__PURE__*/React.createElement(DrawerPanel, _extends({
145 prefixCls: prefixCls
146 }, restProps))));
147}
148Drawer._InternalPanelDoNotUseOrYouWillBeFired = PurePanel;
149export default Drawer;
\No newline at end of file