@rc-component/drawer 1.0.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/es/index.js ADDED
@@ -0,0 +1,3 @@
1
+ // export this package's api
2
+ import Drawer from "./Drawer";
3
+ export default Drawer;
package/es/inter.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ /// <reference types="react" />
2
+ export interface DrawerClassNames {
3
+ mask?: string;
4
+ wrapper?: string;
5
+ section?: string;
6
+ }
7
+ export interface DrawerStyles {
8
+ mask?: React.CSSProperties;
9
+ wrapper?: React.CSSProperties;
10
+ section?: React.CSSProperties;
11
+ }
package/es/inter.js ADDED
@@ -0,0 +1 @@
1
+ export {};
package/es/util.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ import type { DrawerProps } from './Drawer';
2
+ export declare function parseWidthHeight(value?: number | string): string | number;
3
+ export declare function warnCheck(props: DrawerProps): void;
package/es/util.js ADDED
@@ -0,0 +1,13 @@
1
+ import warning from "@rc-component/util/es/warning";
2
+ import canUseDom from "@rc-component/util/es/Dom/canUseDom";
3
+ export function parseWidthHeight(value) {
4
+ if (typeof value === 'string' && String(Number(value)) === value) {
5
+ warning(false, 'Invalid value type of `width` or `height` which should be number type instead.');
6
+ return Number(value);
7
+ }
8
+ return value;
9
+ }
10
+ export function warnCheck(props) {
11
+ warning(!('wrapperClassName' in props), `'wrapperClassName' is removed. Please use 'rootClassName' instead.`);
12
+ warning(canUseDom() || !props.open, `Drawer with 'open' in SSR is not work since no place to createPortal. Please move to 'useEffect' instead.`);
13
+ }
@@ -0,0 +1,18 @@
1
+ import type { PortalProps } from '@rc-component/portal';
2
+ import * as React from 'react';
3
+ import type { DrawerPanelAccessibility, DrawerPanelEvents } from './DrawerPanel';
4
+ import type { DrawerPopupProps } from './DrawerPopup';
5
+ import type { DrawerClassNames, DrawerStyles } from './inter';
6
+ export type Placement = 'left' | 'top' | 'right' | 'bottom';
7
+ export interface DrawerProps extends Omit<DrawerPopupProps, 'prefixCls' | 'inline' | 'scrollLocker'>, DrawerPanelEvents, DrawerPanelAccessibility {
8
+ prefixCls?: string;
9
+ open?: boolean;
10
+ onClose?: (e: React.MouseEvent | React.KeyboardEvent) => void;
11
+ destroyOnClose?: boolean;
12
+ getContainer?: PortalProps['getContainer'];
13
+ panelRef?: React.Ref<HTMLDivElement>;
14
+ classNames?: DrawerClassNames;
15
+ styles?: DrawerStyles;
16
+ }
17
+ declare const Drawer: React.FC<DrawerProps>;
18
+ export default Drawer;
package/lib/Drawer.js ADDED
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _portal = _interopRequireDefault(require("@rc-component/portal"));
8
+ var _useLayoutEffect = _interopRequireDefault(require("@rc-component/util/lib/hooks/useLayoutEffect"));
9
+ var React = _interopRequireWildcard(require("react"));
10
+ var _context = require("./context");
11
+ var _DrawerPopup = _interopRequireDefault(require("./DrawerPopup"));
12
+ var _util = require("./util");
13
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
14
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
15
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
+ const Drawer = props => {
17
+ const {
18
+ open = false,
19
+ prefixCls = 'rc-drawer',
20
+ placement = 'right',
21
+ autoFocus = true,
22
+ keyboard = true,
23
+ width = 378,
24
+ mask = true,
25
+ maskClosable = true,
26
+ getContainer,
27
+ forceRender,
28
+ afterOpenChange,
29
+ destroyOnClose,
30
+ onMouseEnter,
31
+ onMouseOver,
32
+ onMouseLeave,
33
+ onClick,
34
+ onKeyDown,
35
+ onKeyUp,
36
+ // Refs
37
+ panelRef
38
+ } = props;
39
+ const [animatedVisible, setAnimatedVisible] = React.useState(false);
40
+
41
+ // ============================= Warn =============================
42
+ if (process.env.NODE_ENV !== 'production') {
43
+ (0, _util.warnCheck)(props);
44
+ }
45
+
46
+ // ============================= Open =============================
47
+ const [mounted, setMounted] = React.useState(false);
48
+ (0, _useLayoutEffect.default)(() => {
49
+ setMounted(true);
50
+ }, []);
51
+ const mergedOpen = mounted ? open : false;
52
+
53
+ // ============================ Focus =============================
54
+ const popupRef = React.useRef(null);
55
+ const lastActiveRef = React.useRef(null);
56
+ (0, _useLayoutEffect.default)(() => {
57
+ if (mergedOpen) {
58
+ lastActiveRef.current = document.activeElement;
59
+ }
60
+ }, [mergedOpen]);
61
+
62
+ // ============================= Open =============================
63
+ const internalAfterOpenChange = nextVisible => {
64
+ setAnimatedVisible(nextVisible);
65
+ afterOpenChange?.(nextVisible);
66
+ if (!nextVisible && lastActiveRef.current && !popupRef.current?.contains(lastActiveRef.current)) {
67
+ lastActiveRef.current?.focus({
68
+ preventScroll: true
69
+ });
70
+ }
71
+ };
72
+
73
+ // =========================== Context ============================
74
+ const refContext = React.useMemo(() => ({
75
+ panel: panelRef
76
+ }), [panelRef]);
77
+
78
+ // ============================ Render ============================
79
+ if (!forceRender && !animatedVisible && !mergedOpen && destroyOnClose) {
80
+ return null;
81
+ }
82
+ const eventHandlers = {
83
+ onMouseEnter,
84
+ onMouseOver,
85
+ onMouseLeave,
86
+ onClick,
87
+ onKeyDown,
88
+ onKeyUp
89
+ };
90
+ const drawerPopupProps = {
91
+ ...props,
92
+ open: mergedOpen,
93
+ prefixCls,
94
+ placement,
95
+ autoFocus,
96
+ keyboard,
97
+ width,
98
+ mask,
99
+ maskClosable,
100
+ inline: getContainer === false,
101
+ afterOpenChange: internalAfterOpenChange,
102
+ ref: popupRef,
103
+ ...eventHandlers
104
+ };
105
+ return /*#__PURE__*/React.createElement(_context.RefContext.Provider, {
106
+ value: refContext
107
+ }, /*#__PURE__*/React.createElement(_portal.default, {
108
+ open: mergedOpen || forceRender || animatedVisible,
109
+ autoDestroy: false,
110
+ getContainer: getContainer,
111
+ autoLock: mask && (mergedOpen || animatedVisible)
112
+ }, /*#__PURE__*/React.createElement(_DrawerPopup.default, drawerPopupProps)));
113
+ };
114
+ if (process.env.NODE_ENV !== 'production') {
115
+ Drawer.displayName = 'Drawer';
116
+ }
117
+ var _default = exports.default = Drawer;
@@ -0,0 +1,26 @@
1
+ import * as React from 'react';
2
+ export interface DrawerPanelRef {
3
+ focus: VoidFunction;
4
+ }
5
+ export interface DrawerPanelEvents {
6
+ onMouseEnter?: React.MouseEventHandler<HTMLDivElement>;
7
+ onMouseOver?: React.MouseEventHandler<HTMLDivElement>;
8
+ onMouseLeave?: React.MouseEventHandler<HTMLDivElement>;
9
+ onClick?: React.MouseEventHandler<HTMLDivElement>;
10
+ onKeyDown?: React.KeyboardEventHandler<HTMLDivElement>;
11
+ onKeyUp?: React.KeyboardEventHandler<HTMLDivElement>;
12
+ }
13
+ export type DrawerPanelAccessibility = Pick<React.DialogHTMLAttributes<HTMLDivElement>, keyof React.AriaAttributes>;
14
+ export interface DrawerPanelProps extends DrawerPanelEvents, DrawerPanelAccessibility {
15
+ prefixCls: string;
16
+ className?: string;
17
+ id?: string;
18
+ style?: React.CSSProperties;
19
+ children?: React.ReactNode;
20
+ containerRef?: React.Ref<HTMLDivElement>;
21
+ }
22
+ declare const DrawerPanel: {
23
+ (props: DrawerPanelProps): React.JSX.Element;
24
+ displayName: string;
25
+ };
26
+ export default DrawerPanel;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _classnames = _interopRequireDefault(require("classnames"));
8
+ var React = _interopRequireWildcard(require("react"));
9
+ var _context = require("./context");
10
+ var _pickAttrs = _interopRequireDefault(require("@rc-component/util/lib/pickAttrs"));
11
+ var _ref = require("@rc-component/util/lib/ref");
12
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
13
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
16
+ const DrawerPanel = props => {
17
+ const {
18
+ prefixCls,
19
+ className,
20
+ containerRef,
21
+ ...restProps
22
+ } = props;
23
+ const {
24
+ panel: panelRef
25
+ } = React.useContext(_context.RefContext);
26
+ const mergedRef = (0, _ref.useComposeRef)(panelRef, containerRef);
27
+
28
+ // =============================== Render ===============================
29
+
30
+ return /*#__PURE__*/React.createElement("div", _extends({
31
+ className: (0, _classnames.default)(`${prefixCls}-section`, className),
32
+ role: "dialog",
33
+ ref: mergedRef
34
+ }, (0, _pickAttrs.default)(props, {
35
+ aria: true
36
+ }), {
37
+ "aria-modal": "true"
38
+ }, restProps));
39
+ };
40
+ if (process.env.NODE_ENV !== 'production') {
41
+ DrawerPanel.displayName = 'DrawerPanel';
42
+ }
43
+ var _default = exports.default = DrawerPanel;
@@ -0,0 +1,40 @@
1
+ import type { CSSMotionProps } from '@rc-component/motion';
2
+ import * as React from 'react';
3
+ import type { DrawerPanelAccessibility, DrawerPanelEvents } from './DrawerPanel';
4
+ import type { DrawerClassNames, DrawerStyles } from './inter';
5
+ export type Placement = 'left' | 'right' | 'top' | 'bottom';
6
+ export interface PushConfig {
7
+ distance?: number | string;
8
+ }
9
+ export interface DrawerPopupProps extends DrawerPanelEvents, DrawerPanelAccessibility {
10
+ prefixCls: string;
11
+ open?: boolean;
12
+ inline?: boolean;
13
+ push?: boolean | PushConfig;
14
+ forceRender?: boolean;
15
+ autoFocus?: boolean;
16
+ keyboard?: boolean;
17
+ rootClassName?: string;
18
+ rootStyle?: React.CSSProperties;
19
+ zIndex?: number;
20
+ placement?: Placement;
21
+ id?: string;
22
+ className?: string;
23
+ style?: React.CSSProperties;
24
+ children?: React.ReactNode;
25
+ width?: number | string;
26
+ height?: number | string;
27
+ mask?: boolean;
28
+ maskClosable?: boolean;
29
+ maskClassName?: string;
30
+ maskStyle?: React.CSSProperties;
31
+ motion?: CSSMotionProps | ((placement: Placement) => CSSMotionProps);
32
+ maskMotion?: CSSMotionProps;
33
+ afterOpenChange?: (open: boolean) => void;
34
+ onClose?: (event: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>) => void;
35
+ classNames?: DrawerClassNames;
36
+ styles?: DrawerStyles;
37
+ drawerRender?: (node: React.ReactNode) => React.ReactNode;
38
+ }
39
+ declare const RefDrawerPopup: React.ForwardRefExoticComponent<DrawerPopupProps & React.RefAttributes<HTMLDivElement>>;
40
+ export default RefDrawerPopup;
@@ -0,0 +1,283 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _classnames = _interopRequireDefault(require("classnames"));
8
+ var _motion = _interopRequireDefault(require("@rc-component/motion"));
9
+ var _KeyCode = _interopRequireDefault(require("@rc-component/util/lib/KeyCode"));
10
+ var _pickAttrs = _interopRequireDefault(require("@rc-component/util/lib/pickAttrs"));
11
+ var React = _interopRequireWildcard(require("react"));
12
+ var _context = _interopRequireDefault(require("./context"));
13
+ var _DrawerPanel = _interopRequireDefault(require("./DrawerPanel"));
14
+ var _util = require("./util");
15
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
16
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
17
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
19
+ const sentinelStyle = {
20
+ width: 0,
21
+ height: 0,
22
+ overflow: 'hidden',
23
+ outline: 'none',
24
+ position: 'absolute'
25
+ };
26
+ function DrawerPopup(props, ref) {
27
+ const {
28
+ prefixCls,
29
+ open,
30
+ placement,
31
+ inline,
32
+ push,
33
+ forceRender,
34
+ autoFocus,
35
+ keyboard,
36
+ // classNames
37
+ classNames: drawerClassNames,
38
+ // Root
39
+ rootClassName,
40
+ rootStyle,
41
+ zIndex,
42
+ // Drawer
43
+ className,
44
+ id,
45
+ style,
46
+ motion,
47
+ width,
48
+ height,
49
+ children,
50
+ // Mask
51
+ mask,
52
+ maskClosable,
53
+ maskMotion,
54
+ maskClassName,
55
+ maskStyle,
56
+ // Events
57
+ afterOpenChange,
58
+ onClose,
59
+ onMouseEnter,
60
+ onMouseOver,
61
+ onMouseLeave,
62
+ onClick,
63
+ onKeyDown,
64
+ onKeyUp,
65
+ styles,
66
+ drawerRender
67
+ } = props;
68
+
69
+ // ================================ Refs ================================
70
+ const panelRef = React.useRef(null);
71
+ const sentinelStartRef = React.useRef(null);
72
+ const sentinelEndRef = React.useRef(null);
73
+ React.useImperativeHandle(ref, () => panelRef.current);
74
+ const onPanelKeyDown = event => {
75
+ const {
76
+ keyCode,
77
+ shiftKey
78
+ } = event;
79
+ switch (keyCode) {
80
+ // Tab active
81
+ case _KeyCode.default.TAB:
82
+ {
83
+ if (keyCode === _KeyCode.default.TAB) {
84
+ if (!shiftKey && document.activeElement === sentinelEndRef.current) {
85
+ sentinelStartRef.current?.focus({
86
+ preventScroll: true
87
+ });
88
+ } else if (shiftKey && document.activeElement === sentinelStartRef.current) {
89
+ sentinelEndRef.current?.focus({
90
+ preventScroll: true
91
+ });
92
+ }
93
+ }
94
+ break;
95
+ }
96
+
97
+ // Close
98
+ case _KeyCode.default.ESC:
99
+ {
100
+ if (onClose && keyboard) {
101
+ event.stopPropagation();
102
+ onClose(event);
103
+ }
104
+ break;
105
+ }
106
+ }
107
+ };
108
+
109
+ // ========================== Control ===========================
110
+ // Auto Focus
111
+ React.useEffect(() => {
112
+ if (open && autoFocus) {
113
+ panelRef.current?.focus({
114
+ preventScroll: true
115
+ });
116
+ }
117
+ }, [open]);
118
+
119
+ // ============================ Push ============================
120
+ const [pushed, setPushed] = React.useState(false);
121
+ const parentContext = React.useContext(_context.default);
122
+
123
+ // Merge push distance
124
+ let pushConfig;
125
+ if (typeof push === 'boolean') {
126
+ pushConfig = push ? {} : {
127
+ distance: 0
128
+ };
129
+ } else {
130
+ pushConfig = push || {};
131
+ }
132
+ const pushDistance = pushConfig?.distance ?? parentContext?.pushDistance ?? 180;
133
+ const mergedContext = React.useMemo(() => ({
134
+ pushDistance,
135
+ push: () => {
136
+ setPushed(true);
137
+ },
138
+ pull: () => {
139
+ setPushed(false);
140
+ }
141
+ }), [pushDistance]);
142
+
143
+ // ========================= ScrollLock =========================
144
+ // Tell parent to push
145
+ React.useEffect(() => {
146
+ if (open) {
147
+ parentContext?.push?.();
148
+ } else {
149
+ parentContext?.pull?.();
150
+ }
151
+ }, [open]);
152
+
153
+ // Clean up
154
+ React.useEffect(() => () => {
155
+ parentContext?.pull?.();
156
+ }, []);
157
+
158
+ // ============================ Mask ============================
159
+ const maskNode = mask && /*#__PURE__*/React.createElement(_motion.default, _extends({
160
+ key: "mask"
161
+ }, maskMotion, {
162
+ visible: open
163
+ }), ({
164
+ className: motionMaskClassName,
165
+ style: motionMaskStyle
166
+ }, maskRef) => /*#__PURE__*/React.createElement("div", {
167
+ className: (0, _classnames.default)(`${prefixCls}-mask`, motionMaskClassName, drawerClassNames?.mask, maskClassName),
168
+ style: {
169
+ ...motionMaskStyle,
170
+ ...maskStyle,
171
+ ...styles?.mask
172
+ },
173
+ onClick: maskClosable && open ? onClose : undefined,
174
+ ref: maskRef
175
+ }));
176
+
177
+ // =========================== Panel ============================
178
+ const motionProps = typeof motion === 'function' ? motion(placement) : motion;
179
+ const wrapperStyle = {};
180
+ if (pushed && pushDistance) {
181
+ switch (placement) {
182
+ case 'top':
183
+ wrapperStyle.transform = `translateY(${pushDistance}px)`;
184
+ break;
185
+ case 'bottom':
186
+ wrapperStyle.transform = `translateY(${-pushDistance}px)`;
187
+ break;
188
+ case 'left':
189
+ wrapperStyle.transform = `translateX(${pushDistance}px)`;
190
+ break;
191
+ default:
192
+ wrapperStyle.transform = `translateX(${-pushDistance}px)`;
193
+ break;
194
+ }
195
+ }
196
+ if (placement === 'left' || placement === 'right') {
197
+ wrapperStyle.width = (0, _util.parseWidthHeight)(width);
198
+ } else {
199
+ wrapperStyle.height = (0, _util.parseWidthHeight)(height);
200
+ }
201
+ const eventHandlers = {
202
+ onMouseEnter,
203
+ onMouseOver,
204
+ onMouseLeave,
205
+ onClick,
206
+ onKeyDown,
207
+ onKeyUp
208
+ };
209
+ const panelNode = /*#__PURE__*/React.createElement(_motion.default, _extends({
210
+ key: "panel"
211
+ }, motionProps, {
212
+ visible: open,
213
+ forceRender: forceRender,
214
+ onVisibleChanged: nextVisible => {
215
+ afterOpenChange?.(nextVisible);
216
+ },
217
+ removeOnLeave: false,
218
+ leavedClassName: `${prefixCls}-content-wrapper-hidden`
219
+ }), ({
220
+ className: motionClassName,
221
+ style: motionStyle
222
+ }, motionRef) => {
223
+ const content = /*#__PURE__*/React.createElement(_DrawerPanel.default, _extends({
224
+ id: id,
225
+ containerRef: motionRef,
226
+ prefixCls: prefixCls,
227
+ className: (0, _classnames.default)(className, drawerClassNames?.section),
228
+ style: {
229
+ ...style,
230
+ ...styles?.section
231
+ }
232
+ }, (0, _pickAttrs.default)(props, {
233
+ aria: true
234
+ }), eventHandlers), children);
235
+ return /*#__PURE__*/React.createElement("div", _extends({
236
+ className: (0, _classnames.default)(`${prefixCls}-content-wrapper`, drawerClassNames?.wrapper, motionClassName),
237
+ style: {
238
+ ...wrapperStyle,
239
+ ...motionStyle,
240
+ ...styles?.wrapper
241
+ }
242
+ }, (0, _pickAttrs.default)(props, {
243
+ data: true
244
+ })), drawerRender ? drawerRender(content) : content);
245
+ });
246
+
247
+ // =========================== Render ===========================
248
+ const containerStyle = {
249
+ ...rootStyle
250
+ };
251
+ if (zIndex) {
252
+ containerStyle.zIndex = zIndex;
253
+ }
254
+ return /*#__PURE__*/React.createElement(_context.default.Provider, {
255
+ value: mergedContext
256
+ }, /*#__PURE__*/React.createElement("div", {
257
+ className: (0, _classnames.default)(prefixCls, `${prefixCls}-${placement}`, rootClassName, {
258
+ [`${prefixCls}-open`]: open,
259
+ [`${prefixCls}-inline`]: inline
260
+ }),
261
+ style: containerStyle,
262
+ tabIndex: -1,
263
+ ref: panelRef,
264
+ onKeyDown: onPanelKeyDown
265
+ }, maskNode, /*#__PURE__*/React.createElement("div", {
266
+ tabIndex: 0,
267
+ ref: sentinelStartRef,
268
+ style: sentinelStyle,
269
+ "aria-hidden": "true",
270
+ "data-sentinel": "start"
271
+ }), panelNode, /*#__PURE__*/React.createElement("div", {
272
+ tabIndex: 0,
273
+ ref: sentinelEndRef,
274
+ style: sentinelStyle,
275
+ "aria-hidden": "true",
276
+ "data-sentinel": "end"
277
+ })));
278
+ }
279
+ const RefDrawerPopup = /*#__PURE__*/React.forwardRef(DrawerPopup);
280
+ if (process.env.NODE_ENV !== 'production') {
281
+ RefDrawerPopup.displayName = 'DrawerPopup';
282
+ }
283
+ var _default = exports.default = RefDrawerPopup;
@@ -0,0 +1,12 @@
1
+ import * as React from 'react';
2
+ export interface DrawerContextProps {
3
+ pushDistance?: number | string;
4
+ push: VoidFunction;
5
+ pull: VoidFunction;
6
+ }
7
+ declare const DrawerContext: React.Context<DrawerContextProps>;
8
+ export interface RefContextProps {
9
+ panel?: React.Ref<HTMLDivElement>;
10
+ }
11
+ export declare const RefContext: React.Context<RefContextProps>;
12
+ export default DrawerContext;
package/lib/context.js ADDED
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.RefContext = void 0;
7
+ var React = _interopRequireWildcard(require("react"));
8
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
9
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
10
+ const DrawerContext = /*#__PURE__*/React.createContext(null);
11
+ const RefContext = exports.RefContext = /*#__PURE__*/React.createContext({});
12
+ var _default = exports.default = DrawerContext;
package/lib/index.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ import Drawer from './Drawer';
2
+ import type { DrawerProps } from './Drawer';
3
+ export type { DrawerProps };
4
+ export default Drawer;
package/lib/index.js ADDED
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _Drawer = _interopRequireDefault(require("./Drawer"));
8
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
+ // export this package's api
10
+ var _default = exports.default = _Drawer.default;
package/lib/inter.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ /// <reference types="react" />
2
+ export interface DrawerClassNames {
3
+ mask?: string;
4
+ wrapper?: string;
5
+ section?: string;
6
+ }
7
+ export interface DrawerStyles {
8
+ mask?: React.CSSProperties;
9
+ wrapper?: React.CSSProperties;
10
+ section?: React.CSSProperties;
11
+ }
package/lib/inter.js ADDED
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
package/lib/util.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ import type { DrawerProps } from './Drawer';
2
+ export declare function parseWidthHeight(value?: number | string): string | number;
3
+ export declare function warnCheck(props: DrawerProps): void;
package/lib/util.js ADDED
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.parseWidthHeight = parseWidthHeight;
7
+ exports.warnCheck = warnCheck;
8
+ var _warning = _interopRequireDefault(require("@rc-component/util/lib/warning"));
9
+ var _canUseDom = _interopRequireDefault(require("@rc-component/util/lib/Dom/canUseDom"));
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ function parseWidthHeight(value) {
12
+ if (typeof value === 'string' && String(Number(value)) === value) {
13
+ (0, _warning.default)(false, 'Invalid value type of `width` or `height` which should be number type instead.');
14
+ return Number(value);
15
+ }
16
+ return value;
17
+ }
18
+ function warnCheck(props) {
19
+ (0, _warning.default)(!('wrapperClassName' in props), `'wrapperClassName' is removed. Please use 'rootClassName' instead.`);
20
+ (0, _warning.default)((0, _canUseDom.default)() || !props.open, `Drawer with 'open' in SSR is not work since no place to createPortal. Please move to 'useEffect' instead.`);
21
+ }