@rc-component/dialog 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.
Files changed (45) hide show
  1. package/LICENSE.md +9 -0
  2. package/README.md +108 -0
  3. package/assets/bootstrap.css +177 -0
  4. package/assets/index.css +174 -0
  5. package/es/Dialog/Content/MemoChildren.d.ts +7 -0
  6. package/es/Dialog/Content/MemoChildren.js +8 -0
  7. package/es/Dialog/Content/Panel.d.ts +15 -0
  8. package/es/Dialog/Content/Panel.js +149 -0
  9. package/es/Dialog/Content/index.d.ts +13 -0
  10. package/es/Dialog/Content/index.js +63 -0
  11. package/es/Dialog/Mask.d.ts +11 -0
  12. package/es/Dialog/Mask.js +28 -0
  13. package/es/Dialog/index.d.ts +4 -0
  14. package/es/Dialog/index.js +201 -0
  15. package/es/DialogWrap.d.ts +4 -0
  16. package/es/DialogWrap.js +59 -0
  17. package/es/IDialogPropTypes.d.ts +52 -0
  18. package/es/IDialogPropTypes.js +1 -0
  19. package/es/context.d.ts +5 -0
  20. package/es/context.js +2 -0
  21. package/es/index.d.ts +6 -0
  22. package/es/index.js +4 -0
  23. package/es/util.d.ts +5 -0
  24. package/es/util.js +34 -0
  25. package/lib/Dialog/Content/MemoChildren.d.ts +7 -0
  26. package/lib/Dialog/Content/MemoChildren.js +17 -0
  27. package/lib/Dialog/Content/Panel.d.ts +15 -0
  28. package/lib/Dialog/Content/Panel.js +159 -0
  29. package/lib/Dialog/Content/index.d.ts +13 -0
  30. package/lib/Dialog/Content/index.js +73 -0
  31. package/lib/Dialog/Mask.d.ts +11 -0
  32. package/lib/Dialog/Mask.js +38 -0
  33. package/lib/Dialog/index.d.ts +4 -0
  34. package/lib/Dialog/index.js +211 -0
  35. package/lib/DialogWrap.d.ts +4 -0
  36. package/lib/DialogWrap.js +69 -0
  37. package/lib/IDialogPropTypes.d.ts +52 -0
  38. package/lib/IDialogPropTypes.js +5 -0
  39. package/lib/context.d.ts +5 -0
  40. package/lib/context.js +11 -0
  41. package/lib/index.d.ts +6 -0
  42. package/lib/index.js +16 -0
  43. package/lib/util.d.ts +5 -0
  44. package/lib/util.js +41 -0
  45. package/package.json +98 -0
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof3 = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
11
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
12
+ var _classnames = _interopRequireDefault(require("classnames"));
13
+ var _ref = require("rc-util/lib/ref");
14
+ var _react = _interopRequireWildcard(require("react"));
15
+ var _context = require("../../context");
16
+ var _MemoChildren = _interopRequireDefault(require("./MemoChildren"));
17
+ var _pickAttrs = _interopRequireDefault(require("rc-util/lib/pickAttrs"));
18
+ 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); }
19
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof3(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; }
20
+ var sentinelStyle = {
21
+ width: 0,
22
+ height: 0,
23
+ overflow: 'hidden',
24
+ outline: 'none'
25
+ };
26
+ var entityStyle = {
27
+ outline: 'none'
28
+ };
29
+ var Panel = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
30
+ var prefixCls = props.prefixCls,
31
+ className = props.className,
32
+ style = props.style,
33
+ title = props.title,
34
+ ariaId = props.ariaId,
35
+ footer = props.footer,
36
+ closable = props.closable,
37
+ closeIcon = props.closeIcon,
38
+ onClose = props.onClose,
39
+ children = props.children,
40
+ bodyStyle = props.bodyStyle,
41
+ bodyProps = props.bodyProps,
42
+ modalRender = props.modalRender,
43
+ onMouseDown = props.onMouseDown,
44
+ onMouseUp = props.onMouseUp,
45
+ holderRef = props.holderRef,
46
+ visible = props.visible,
47
+ forceRender = props.forceRender,
48
+ width = props.width,
49
+ height = props.height,
50
+ modalClassNames = props.classNames,
51
+ modalStyles = props.styles;
52
+
53
+ // ================================= Refs =================================
54
+ var _React$useContext = _react.default.useContext(_context.RefContext),
55
+ panelRef = _React$useContext.panel;
56
+ var mergedRef = (0, _ref.useComposeRef)(holderRef, panelRef);
57
+ var sentinelStartRef = (0, _react.useRef)();
58
+ var sentinelEndRef = (0, _react.useRef)();
59
+ _react.default.useImperativeHandle(ref, function () {
60
+ return {
61
+ focus: function focus() {
62
+ var _sentinelStartRef$cur;
63
+ (_sentinelStartRef$cur = sentinelStartRef.current) === null || _sentinelStartRef$cur === void 0 || _sentinelStartRef$cur.focus({
64
+ preventScroll: true
65
+ });
66
+ },
67
+ changeActive: function changeActive(next) {
68
+ var _document = document,
69
+ activeElement = _document.activeElement;
70
+ if (next && activeElement === sentinelEndRef.current) {
71
+ sentinelStartRef.current.focus({
72
+ preventScroll: true
73
+ });
74
+ } else if (!next && activeElement === sentinelStartRef.current) {
75
+ sentinelEndRef.current.focus({
76
+ preventScroll: true
77
+ });
78
+ }
79
+ }
80
+ };
81
+ });
82
+
83
+ // ================================ Style =================================
84
+ var contentStyle = {};
85
+ if (width !== undefined) {
86
+ contentStyle.width = width;
87
+ }
88
+ if (height !== undefined) {
89
+ contentStyle.height = height;
90
+ }
91
+ // ================================ Render ================================
92
+ var footerNode = footer ? /*#__PURE__*/_react.default.createElement("div", {
93
+ className: (0, _classnames.default)("".concat(prefixCls, "-footer"), modalClassNames === null || modalClassNames === void 0 ? void 0 : modalClassNames.footer),
94
+ style: (0, _objectSpread2.default)({}, modalStyles === null || modalStyles === void 0 ? void 0 : modalStyles.footer)
95
+ }, footer) : null;
96
+ var headerNode = title ? /*#__PURE__*/_react.default.createElement("div", {
97
+ className: (0, _classnames.default)("".concat(prefixCls, "-header"), modalClassNames === null || modalClassNames === void 0 ? void 0 : modalClassNames.header),
98
+ style: (0, _objectSpread2.default)({}, modalStyles === null || modalStyles === void 0 ? void 0 : modalStyles.header)
99
+ }, /*#__PURE__*/_react.default.createElement("div", {
100
+ className: (0, _classnames.default)("".concat(prefixCls, "-title"), modalClassNames === null || modalClassNames === void 0 ? void 0 : modalClassNames.title),
101
+ id: ariaId,
102
+ style: (0, _objectSpread2.default)({}, modalStyles === null || modalStyles === void 0 ? void 0 : modalStyles.title)
103
+ }, title)) : null;
104
+ var closableObj = (0, _react.useMemo)(function () {
105
+ if ((0, _typeof2.default)(closable) === 'object' && closable !== null) {
106
+ return closable;
107
+ }
108
+ if (closable) {
109
+ return {
110
+ closeIcon: closeIcon !== null && closeIcon !== void 0 ? closeIcon : /*#__PURE__*/_react.default.createElement("span", {
111
+ className: "".concat(prefixCls, "-close-x")
112
+ })
113
+ };
114
+ }
115
+ return {};
116
+ }, [closable, closeIcon, prefixCls]);
117
+ var ariaProps = (0, _pickAttrs.default)(closableObj, true);
118
+ var closeBtnIsDisabled = (0, _typeof2.default)(closable) === 'object' && closable.disabled;
119
+ var closerNode = closable ? /*#__PURE__*/_react.default.createElement("button", (0, _extends2.default)({
120
+ type: "button",
121
+ onClick: onClose,
122
+ "aria-label": "Close"
123
+ }, ariaProps, {
124
+ className: "".concat(prefixCls, "-close"),
125
+ disabled: closeBtnIsDisabled
126
+ }), closableObj.closeIcon) : null;
127
+ var content = /*#__PURE__*/_react.default.createElement("div", {
128
+ className: (0, _classnames.default)("".concat(prefixCls, "-section"), modalClassNames === null || modalClassNames === void 0 ? void 0 : modalClassNames.section),
129
+ style: modalStyles === null || modalStyles === void 0 ? void 0 : modalStyles.section
130
+ }, closerNode, headerNode, /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
131
+ className: (0, _classnames.default)("".concat(prefixCls, "-body"), modalClassNames === null || modalClassNames === void 0 ? void 0 : modalClassNames.body),
132
+ style: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, bodyStyle), modalStyles === null || modalStyles === void 0 ? void 0 : modalStyles.body)
133
+ }, bodyProps), children), footerNode);
134
+ return /*#__PURE__*/_react.default.createElement("div", {
135
+ key: "dialog-element",
136
+ role: "dialog",
137
+ "aria-labelledby": title ? ariaId : null,
138
+ "aria-modal": "true",
139
+ ref: mergedRef,
140
+ style: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, style), contentStyle),
141
+ className: (0, _classnames.default)(prefixCls, className),
142
+ onMouseDown: onMouseDown,
143
+ onMouseUp: onMouseUp
144
+ }, /*#__PURE__*/_react.default.createElement("div", {
145
+ ref: sentinelStartRef,
146
+ tabIndex: 0,
147
+ style: entityStyle
148
+ }, /*#__PURE__*/_react.default.createElement(_MemoChildren.default, {
149
+ shouldUpdate: visible || forceRender
150
+ }, modalRender ? modalRender(content) : content)), /*#__PURE__*/_react.default.createElement("div", {
151
+ tabIndex: 0,
152
+ ref: sentinelEndRef,
153
+ style: sentinelStyle
154
+ }));
155
+ });
156
+ if (process.env.NODE_ENV !== 'production') {
157
+ Panel.displayName = 'Panel';
158
+ }
159
+ var _default = exports.default = Panel;
@@ -0,0 +1,13 @@
1
+ import * as React from 'react';
2
+ import type { PanelProps, ContentRef } from './Panel';
3
+ export type ContentProps = {
4
+ motionName: string;
5
+ ariaId: string;
6
+ onVisibleChanged: (visible: boolean) => void;
7
+ } & PanelProps;
8
+ declare const Content: React.ForwardRefExoticComponent<{
9
+ motionName: string;
10
+ ariaId: string;
11
+ onVisibleChanged: (visible: boolean) => void;
12
+ } & PanelProps & React.RefAttributes<ContentRef>>;
13
+ export default Content;
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12
+ var _react = _interopRequireWildcard(require("react"));
13
+ var React = _react;
14
+ var _classnames = _interopRequireDefault(require("classnames"));
15
+ var _rcMotion = _interopRequireDefault(require("rc-motion"));
16
+ var _util = require("../../util");
17
+ var _Panel = _interopRequireDefault(require("./Panel"));
18
+ 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); }
19
+ 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; }
20
+ var Content = /*#__PURE__*/React.forwardRef(function (props, ref) {
21
+ var prefixCls = props.prefixCls,
22
+ title = props.title,
23
+ style = props.style,
24
+ className = props.className,
25
+ visible = props.visible,
26
+ forceRender = props.forceRender,
27
+ destroyOnClose = props.destroyOnClose,
28
+ motionName = props.motionName,
29
+ ariaId = props.ariaId,
30
+ onVisibleChanged = props.onVisibleChanged,
31
+ mousePosition = props.mousePosition;
32
+ var dialogRef = (0, _react.useRef)();
33
+
34
+ // ============================= Style ==============================
35
+ var _React$useState = React.useState(),
36
+ _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
37
+ transformOrigin = _React$useState2[0],
38
+ setTransformOrigin = _React$useState2[1];
39
+ var contentStyle = {};
40
+ if (transformOrigin) {
41
+ contentStyle.transformOrigin = transformOrigin;
42
+ }
43
+ function onPrepare() {
44
+ var elementOffset = (0, _util.offset)(dialogRef.current);
45
+ setTransformOrigin(mousePosition && (mousePosition.x || mousePosition.y) ? "".concat(mousePosition.x - elementOffset.left, "px ").concat(mousePosition.y - elementOffset.top, "px") : '');
46
+ }
47
+
48
+ // ============================= Render =============================
49
+ return /*#__PURE__*/React.createElement(_rcMotion.default, {
50
+ visible: visible,
51
+ onVisibleChanged: onVisibleChanged,
52
+ onAppearPrepare: onPrepare,
53
+ onEnterPrepare: onPrepare,
54
+ forceRender: forceRender,
55
+ motionName: motionName,
56
+ removeOnLeave: destroyOnClose,
57
+ ref: dialogRef
58
+ }, function (_ref, motionRef) {
59
+ var motionClassName = _ref.className,
60
+ motionStyle = _ref.style;
61
+ return /*#__PURE__*/React.createElement(_Panel.default, (0, _extends2.default)({}, props, {
62
+ ref: ref,
63
+ title: title,
64
+ ariaId: ariaId,
65
+ prefixCls: prefixCls,
66
+ holderRef: motionRef,
67
+ style: (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, motionStyle), style), contentStyle),
68
+ className: (0, _classnames.default)(className, motionClassName)
69
+ }));
70
+ });
71
+ });
72
+ Content.displayName = 'Content';
73
+ var _default = exports.default = Content;
@@ -0,0 +1,11 @@
1
+ import * as React from 'react';
2
+ export type MaskProps = {
3
+ prefixCls: string;
4
+ visible: boolean;
5
+ motionName?: string;
6
+ style?: React.CSSProperties;
7
+ maskProps?: React.HTMLAttributes<HTMLDivElement>;
8
+ className?: string;
9
+ };
10
+ declare const Mask: React.FC<MaskProps>;
11
+ export default Mask;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
+ var React = _interopRequireWildcard(require("react"));
12
+ var _classnames = _interopRequireDefault(require("classnames"));
13
+ var _rcMotion = _interopRequireDefault(require("rc-motion"));
14
+ 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); }
15
+ 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; }
16
+ var Mask = function Mask(props) {
17
+ var prefixCls = props.prefixCls,
18
+ style = props.style,
19
+ visible = props.visible,
20
+ maskProps = props.maskProps,
21
+ motionName = props.motionName,
22
+ className = props.className;
23
+ return /*#__PURE__*/React.createElement(_rcMotion.default, {
24
+ key: "mask",
25
+ visible: visible,
26
+ motionName: motionName,
27
+ leavedClassName: "".concat(prefixCls, "-mask-hidden")
28
+ }, function (_ref, ref) {
29
+ var motionClassName = _ref.className,
30
+ motionStyle = _ref.style;
31
+ return /*#__PURE__*/React.createElement("div", (0, _extends2.default)({
32
+ ref: ref,
33
+ style: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, motionStyle), style),
34
+ className: (0, _classnames.default)("".concat(prefixCls, "-mask"), motionClassName, className)
35
+ }, maskProps));
36
+ });
37
+ };
38
+ var _default = exports.default = Mask;
@@ -0,0 +1,4 @@
1
+ import * as React from 'react';
2
+ import type { IDialogPropTypes } from '../IDialogPropTypes';
3
+ declare const Dialog: React.FC<IDialogPropTypes>;
4
+ export default Dialog;
@@ -0,0 +1,211 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12
+ var _classnames = _interopRequireDefault(require("classnames"));
13
+ var _contains = _interopRequireDefault(require("rc-util/lib/Dom/contains"));
14
+ var _useId = _interopRequireDefault(require("rc-util/lib/hooks/useId"));
15
+ var _KeyCode = _interopRequireDefault(require("rc-util/lib/KeyCode"));
16
+ var _pickAttrs = _interopRequireDefault(require("rc-util/lib/pickAttrs"));
17
+ var _react = _interopRequireWildcard(require("react"));
18
+ var React = _react;
19
+ var _util = require("../util");
20
+ var _Content = _interopRequireDefault(require("./Content"));
21
+ var _Mask = _interopRequireDefault(require("./Mask"));
22
+ var _warning = require("rc-util/lib/warning");
23
+ 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); }
24
+ 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; }
25
+ var Dialog = function Dialog(props) {
26
+ var _props$prefixCls = props.prefixCls,
27
+ prefixCls = _props$prefixCls === void 0 ? 'rc-dialog' : _props$prefixCls,
28
+ zIndex = props.zIndex,
29
+ _props$visible = props.visible,
30
+ visible = _props$visible === void 0 ? false : _props$visible,
31
+ _props$keyboard = props.keyboard,
32
+ keyboard = _props$keyboard === void 0 ? true : _props$keyboard,
33
+ _props$focusTriggerAf = props.focusTriggerAfterClose,
34
+ focusTriggerAfterClose = _props$focusTriggerAf === void 0 ? true : _props$focusTriggerAf,
35
+ wrapStyle = props.wrapStyle,
36
+ wrapClassName = props.wrapClassName,
37
+ wrapProps = props.wrapProps,
38
+ onClose = props.onClose,
39
+ afterOpenChange = props.afterOpenChange,
40
+ afterClose = props.afterClose,
41
+ transitionName = props.transitionName,
42
+ animation = props.animation,
43
+ _props$closable = props.closable,
44
+ closable = _props$closable === void 0 ? true : _props$closable,
45
+ _props$mask = props.mask,
46
+ mask = _props$mask === void 0 ? true : _props$mask,
47
+ maskTransitionName = props.maskTransitionName,
48
+ maskAnimation = props.maskAnimation,
49
+ _props$maskClosable = props.maskClosable,
50
+ maskClosable = _props$maskClosable === void 0 ? true : _props$maskClosable,
51
+ maskStyle = props.maskStyle,
52
+ maskProps = props.maskProps,
53
+ rootClassName = props.rootClassName,
54
+ modalClassNames = props.classNames,
55
+ modalStyles = props.styles;
56
+ if (process.env.NODE_ENV !== 'production') {
57
+ ['wrapStyle', 'bodyStyle', 'maskStyle'].forEach(function (prop) {
58
+ // (prop in props) && console.error(`Warning: ${prop} is deprecated, please use styles instead.`)
59
+ (0, _warning.warning)(!(prop in props), "".concat(prop, " is deprecated, please use styles instead."));
60
+ });
61
+ if ('wrapClassName' in props) {
62
+ (0, _warning.warning)(false, "wrapClassName is deprecated, please use classNames instead.");
63
+ }
64
+ }
65
+ var lastOutSideActiveElementRef = (0, _react.useRef)();
66
+ var wrapperRef = (0, _react.useRef)();
67
+ var contentRef = (0, _react.useRef)();
68
+ var _React$useState = React.useState(visible),
69
+ _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
70
+ animatedVisible = _React$useState2[0],
71
+ setAnimatedVisible = _React$useState2[1];
72
+
73
+ // ========================== Init ==========================
74
+ var ariaId = (0, _useId.default)();
75
+ function saveLastOutSideActiveElementRef() {
76
+ if (!(0, _contains.default)(wrapperRef.current, document.activeElement)) {
77
+ lastOutSideActiveElementRef.current = document.activeElement;
78
+ }
79
+ }
80
+ function focusDialogContent() {
81
+ if (!(0, _contains.default)(wrapperRef.current, document.activeElement)) {
82
+ var _contentRef$current;
83
+ (_contentRef$current = contentRef.current) === null || _contentRef$current === void 0 || _contentRef$current.focus();
84
+ }
85
+ }
86
+
87
+ // ========================= Events =========================
88
+ function onDialogVisibleChanged(newVisible) {
89
+ // Try to focus
90
+ if (newVisible) {
91
+ focusDialogContent();
92
+ } else {
93
+ // Clean up scroll bar & focus back
94
+ setAnimatedVisible(false);
95
+ if (mask && lastOutSideActiveElementRef.current && focusTriggerAfterClose) {
96
+ try {
97
+ lastOutSideActiveElementRef.current.focus({
98
+ preventScroll: true
99
+ });
100
+ } catch (e) {
101
+ // Do nothing
102
+ }
103
+ lastOutSideActiveElementRef.current = null;
104
+ }
105
+
106
+ // Trigger afterClose only when change visible from true to false
107
+ if (animatedVisible) {
108
+ afterClose === null || afterClose === void 0 || afterClose();
109
+ }
110
+ }
111
+ afterOpenChange === null || afterOpenChange === void 0 || afterOpenChange(newVisible);
112
+ }
113
+ function onInternalClose(e) {
114
+ onClose === null || onClose === void 0 || onClose(e);
115
+ }
116
+
117
+ // >>> Content
118
+ var contentClickRef = (0, _react.useRef)(false);
119
+ var contentTimeoutRef = (0, _react.useRef)();
120
+
121
+ // We need record content click incase content popup out of dialog
122
+ var onContentMouseDown = function onContentMouseDown() {
123
+ clearTimeout(contentTimeoutRef.current);
124
+ contentClickRef.current = true;
125
+ };
126
+ var onContentMouseUp = function onContentMouseUp() {
127
+ contentTimeoutRef.current = setTimeout(function () {
128
+ contentClickRef.current = false;
129
+ });
130
+ };
131
+
132
+ // >>> Wrapper
133
+ // Close only when element not on dialog
134
+ var onWrapperClick = null;
135
+ if (maskClosable) {
136
+ onWrapperClick = function onWrapperClick(e) {
137
+ if (contentClickRef.current) {
138
+ contentClickRef.current = false;
139
+ } else if (wrapperRef.current === e.target) {
140
+ onInternalClose(e);
141
+ }
142
+ };
143
+ }
144
+ function onWrapperKeyDown(e) {
145
+ if (keyboard && e.keyCode === _KeyCode.default.ESC) {
146
+ e.stopPropagation();
147
+ onInternalClose(e);
148
+ return;
149
+ }
150
+
151
+ // keep focus inside dialog
152
+ if (visible && e.keyCode === _KeyCode.default.TAB) {
153
+ contentRef.current.changeActive(!e.shiftKey);
154
+ }
155
+ }
156
+
157
+ // ========================= Effect =========================
158
+ (0, _react.useEffect)(function () {
159
+ if (visible) {
160
+ setAnimatedVisible(true);
161
+ saveLastOutSideActiveElementRef();
162
+ }
163
+ }, [visible]);
164
+
165
+ // Remove direct should also check the scroll bar update
166
+ (0, _react.useEffect)(function () {
167
+ return function () {
168
+ clearTimeout(contentTimeoutRef.current);
169
+ };
170
+ }, []);
171
+ var mergedStyle = (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({
172
+ zIndex: zIndex
173
+ }, wrapStyle), modalStyles === null || modalStyles === void 0 ? void 0 : modalStyles.wrapper), {}, {
174
+ display: !animatedVisible ? 'none' : null
175
+ });
176
+
177
+ // ========================= Render =========================
178
+ return /*#__PURE__*/React.createElement("div", (0, _extends2.default)({
179
+ className: (0, _classnames.default)("".concat(prefixCls, "-root"), rootClassName)
180
+ }, (0, _pickAttrs.default)(props, {
181
+ data: true
182
+ })), /*#__PURE__*/React.createElement(_Mask.default, {
183
+ prefixCls: prefixCls,
184
+ visible: mask && visible,
185
+ motionName: (0, _util.getMotionName)(prefixCls, maskTransitionName, maskAnimation),
186
+ style: (0, _objectSpread2.default)((0, _objectSpread2.default)({
187
+ zIndex: zIndex
188
+ }, maskStyle), modalStyles === null || modalStyles === void 0 ? void 0 : modalStyles.mask),
189
+ maskProps: maskProps,
190
+ className: modalClassNames === null || modalClassNames === void 0 ? void 0 : modalClassNames.mask
191
+ }), /*#__PURE__*/React.createElement("div", (0, _extends2.default)({
192
+ tabIndex: -1,
193
+ onKeyDown: onWrapperKeyDown,
194
+ className: (0, _classnames.default)("".concat(prefixCls, "-wrap"), wrapClassName, modalClassNames === null || modalClassNames === void 0 ? void 0 : modalClassNames.wrapper),
195
+ ref: wrapperRef,
196
+ onClick: onWrapperClick,
197
+ style: mergedStyle
198
+ }, wrapProps), /*#__PURE__*/React.createElement(_Content.default, (0, _extends2.default)({}, props, {
199
+ onMouseDown: onContentMouseDown,
200
+ onMouseUp: onContentMouseUp,
201
+ ref: contentRef,
202
+ closable: closable,
203
+ ariaId: ariaId,
204
+ prefixCls: prefixCls,
205
+ visible: visible && animatedVisible,
206
+ onClose: onInternalClose,
207
+ onVisibleChanged: onDialogVisibleChanged,
208
+ motionName: (0, _util.getMotionName)(prefixCls, transitionName, animation)
209
+ }))));
210
+ };
211
+ var _default = exports.default = Dialog;
@@ -0,0 +1,4 @@
1
+ import * as React from 'react';
2
+ import type { IDialogPropTypes } from './IDialogPropTypes';
3
+ declare const DialogWrap: React.FC<IDialogPropTypes>;
4
+ export default DialogWrap;
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
+ var _portal = _interopRequireDefault(require("@rc-component/portal"));
12
+ var React = _interopRequireWildcard(require("react"));
13
+ var _context = require("./context");
14
+ var _Dialog = _interopRequireDefault(require("./Dialog"));
15
+ 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); }
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
+ // fix issue #10656
18
+ /*
19
+ * getContainer remarks
20
+ * Custom container should not be return, because in the Portal component, it will remove the
21
+ * return container element here, if the custom container is the only child of it's component,
22
+ * like issue #10656, It will has a conflict with removeChild method in react-dom.
23
+ * So here should add a child (div element) to custom container.
24
+ * */
25
+
26
+ var DialogWrap = function DialogWrap(props) {
27
+ var visible = props.visible,
28
+ getContainer = props.getContainer,
29
+ forceRender = props.forceRender,
30
+ _props$destroyOnClose = props.destroyOnClose,
31
+ destroyOnClose = _props$destroyOnClose === void 0 ? false : _props$destroyOnClose,
32
+ _afterClose = props.afterClose,
33
+ panelRef = props.panelRef;
34
+ var _React$useState = React.useState(visible),
35
+ _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
36
+ animatedVisible = _React$useState2[0],
37
+ setAnimatedVisible = _React$useState2[1];
38
+ var refContext = React.useMemo(function () {
39
+ return {
40
+ panel: panelRef
41
+ };
42
+ }, [panelRef]);
43
+ React.useEffect(function () {
44
+ if (visible) {
45
+ setAnimatedVisible(true);
46
+ }
47
+ }, [visible]);
48
+
49
+ // Destroy on close will remove wrapped div
50
+ if (!forceRender && destroyOnClose && !animatedVisible) {
51
+ return null;
52
+ }
53
+ return /*#__PURE__*/React.createElement(_context.RefContext.Provider, {
54
+ value: refContext
55
+ }, /*#__PURE__*/React.createElement(_portal.default, {
56
+ open: visible || forceRender || animatedVisible,
57
+ autoDestroy: false,
58
+ getContainer: getContainer,
59
+ autoLock: visible || animatedVisible
60
+ }, /*#__PURE__*/React.createElement(_Dialog.default, (0, _extends2.default)({}, props, {
61
+ destroyOnClose: destroyOnClose,
62
+ afterClose: function afterClose() {
63
+ _afterClose === null || _afterClose === void 0 || _afterClose();
64
+ setAnimatedVisible(false);
65
+ }
66
+ }))));
67
+ };
68
+ DialogWrap.displayName = 'Dialog';
69
+ var _default = exports.default = DialogWrap;
@@ -0,0 +1,52 @@
1
+ import type { GetContainer } from 'rc-util/lib/PortalWrapper';
2
+ import type { CSSProperties, ReactNode, SyntheticEvent } from 'react';
3
+ export type SemanticName = 'header' | 'body' | 'footer' | 'section' | 'title' | 'wrapper' | 'mask';
4
+ export type ModalClassNames = Partial<Record<SemanticName, string>>;
5
+ export type ModalStyles = Partial<Record<SemanticName, CSSProperties>>;
6
+ export type IDialogPropTypes = {
7
+ className?: string;
8
+ keyboard?: boolean;
9
+ style?: CSSProperties;
10
+ mask?: boolean;
11
+ children?: React.ReactNode;
12
+ afterClose?: () => any;
13
+ afterOpenChange?: (open: boolean) => void;
14
+ onClose?: (e: SyntheticEvent) => any;
15
+ closable?: boolean | ({
16
+ closeIcon?: React.ReactNode;
17
+ disabled?: boolean;
18
+ } & React.AriaAttributes);
19
+ maskClosable?: boolean;
20
+ visible?: boolean;
21
+ destroyOnClose?: boolean;
22
+ mousePosition?: {
23
+ x: number;
24
+ y: number;
25
+ } | null;
26
+ title?: ReactNode;
27
+ footer?: ReactNode;
28
+ transitionName?: string;
29
+ maskTransitionName?: string;
30
+ animation?: any;
31
+ maskAnimation?: any;
32
+ wrapStyle?: Record<string, any>;
33
+ bodyStyle?: Record<string, any>;
34
+ maskStyle?: Record<string, any>;
35
+ prefixCls?: string;
36
+ wrapClassName?: string;
37
+ width?: string | number;
38
+ height?: string | number;
39
+ zIndex?: number;
40
+ bodyProps?: any;
41
+ maskProps?: any;
42
+ rootClassName?: string;
43
+ classNames?: ModalClassNames;
44
+ styles?: ModalStyles;
45
+ wrapProps?: any;
46
+ getContainer?: GetContainer | false;
47
+ closeIcon?: ReactNode;
48
+ modalRender?: (node: ReactNode) => ReactNode;
49
+ forceRender?: boolean;
50
+ focusTriggerAfterClose?: boolean;
51
+ panelRef?: React.Ref<HTMLDivElement>;
52
+ };
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,5 @@
1
+ import * as React from 'react';
2
+ export interface RefContextProps {
3
+ panel?: React.Ref<HTMLDivElement>;
4
+ }
5
+ export declare const RefContext: React.Context<RefContextProps>;