antd-mobile 5.4.0 → 5.6.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 (227) hide show
  1. package/2x/cjs/components/action-sheet/action-sheet.d.ts +5 -5
  2. package/2x/cjs/components/action-sheet/action-sheet.js +6 -46
  3. package/2x/cjs/components/action-sheet/index.d.ts +1 -1
  4. package/2x/cjs/components/badge/badge.js +1 -1
  5. package/2x/cjs/components/cascader-view/cascader-view.d.ts +1 -0
  6. package/2x/cjs/components/cascader-view/cascader-view.js +7 -0
  7. package/2x/cjs/components/cascader-view/use-cascader-value-extend.js +23 -0
  8. package/2x/cjs/components/check-list/check-list-item.js +1 -1
  9. package/2x/cjs/components/checkbox/checkbox.js +4 -8
  10. package/2x/cjs/components/checkbox/native-input.d.ts +10 -0
  11. package/2x/cjs/components/checkbox/native-input.js +42 -0
  12. package/2x/cjs/components/dialog/index.d.ts +1 -1
  13. package/2x/cjs/components/dialog/show.d.ts +2 -4
  14. package/2x/cjs/components/dialog/show.js +9 -47
  15. package/2x/cjs/components/dot-loading/dot-loading.js +1 -2
  16. package/2x/cjs/components/error-block/error-block.js +4 -2
  17. package/2x/cjs/components/floating-bubble/floating-bubble.css +2 -1
  18. package/2x/cjs/components/floating-bubble/floating-bubble.d.ts +1 -1
  19. package/2x/cjs/components/floating-bubble/floating-bubble.js +14 -5
  20. package/2x/cjs/components/form/form-array.d.ts +19 -0
  21. package/2x/cjs/components/form/form-array.js +52 -0
  22. package/2x/cjs/components/form/form-item.css +6 -1
  23. package/2x/cjs/components/form/form-item.js +24 -8
  24. package/2x/cjs/components/form/form.css +5 -0
  25. package/2x/cjs/components/form/form.js +16 -5
  26. package/2x/cjs/components/form/index.css +11 -1
  27. package/2x/cjs/components/form/index.d.ts +2 -0
  28. package/2x/cjs/components/form/index.js +3 -0
  29. package/2x/cjs/components/image-uploader/image-uploader.d.ts +1 -1
  30. package/2x/cjs/components/image-uploader/image-uploader.js +17 -1
  31. package/2x/cjs/components/image-viewer/index.d.ts +1 -1
  32. package/2x/cjs/components/image-viewer/methods.d.ts +3 -4
  33. package/2x/cjs/components/image-viewer/methods.js +41 -56
  34. package/2x/cjs/components/modal/index.d.ts +1 -1
  35. package/2x/cjs/components/modal/show.d.ts +2 -4
  36. package/2x/cjs/components/modal/show.js +9 -47
  37. package/2x/cjs/components/popover/index.d.ts +7 -2
  38. package/2x/cjs/components/popover/normalize-placement.d.ts +2 -0
  39. package/2x/cjs/components/popover/normalize-placement.js +22 -0
  40. package/2x/cjs/components/popover/popover.css +0 -104
  41. package/2x/cjs/components/popover/popover.d.ts +11 -5
  42. package/2x/cjs/components/popover/popover.js +127 -22
  43. package/2x/cjs/components/popover/temp-floating-ui.min.d.ts +1 -0
  44. package/2x/cjs/components/popover/temp-floating-ui.min.js +1 -0
  45. package/2x/cjs/components/popover/wrapper.d.ts +7 -0
  46. package/2x/cjs/components/popover/wrapper.js +41 -0
  47. package/2x/cjs/components/pull-to-refresh/pull-to-refresh.js +24 -9
  48. package/2x/cjs/components/radio/radio.js +4 -8
  49. package/2x/cjs/components/search-bar/search-bar.d.ts +1 -1
  50. package/2x/cjs/components/tab-bar/tab-bar.d.ts +1 -1
  51. package/2x/cjs/components/tab-bar/tab-bar.js +1 -1
  52. package/2x/cjs/components/tree-select/tree-select.js +2 -2
  53. package/2x/cjs/utils/render-imperatively.d.ts +10 -0
  54. package/2x/cjs/utils/render-imperatively.js +58 -0
  55. package/2x/cjs/utils/use-props-value.d.ts +2 -1
  56. package/2x/cjs/utils/use-props-value.js +4 -2
  57. package/2x/es/components/action-sheet/action-sheet.d.ts +5 -5
  58. package/2x/es/components/action-sheet/action-sheet.js +5 -41
  59. package/2x/es/components/action-sheet/index.d.ts +1 -1
  60. package/2x/es/components/badge/badge.js +1 -1
  61. package/2x/es/components/cascader-view/cascader-view.d.ts +1 -0
  62. package/2x/es/components/cascader-view/cascader-view.js +7 -0
  63. package/2x/es/components/cascader-view/use-cascader-value-extend.js +23 -0
  64. package/2x/es/components/check-list/check-list-item.js +1 -1
  65. package/2x/es/components/checkbox/checkbox.js +3 -8
  66. package/2x/es/components/checkbox/native-input.d.ts +10 -0
  67. package/2x/es/components/checkbox/native-input.js +28 -0
  68. package/2x/es/components/dialog/index.d.ts +1 -1
  69. package/2x/es/components/dialog/show.d.ts +2 -4
  70. package/2x/es/components/dialog/show.js +8 -44
  71. package/2x/es/components/dot-loading/dot-loading.js +1 -2
  72. package/2x/es/components/error-block/error-block.js +4 -2
  73. package/2x/es/components/floating-bubble/floating-bubble.css +2 -1
  74. package/2x/es/components/floating-bubble/floating-bubble.d.ts +1 -1
  75. package/2x/es/components/floating-bubble/floating-bubble.js +14 -5
  76. package/2x/es/components/form/form-array.d.ts +19 -0
  77. package/2x/es/components/form/form-array.js +38 -0
  78. package/2x/es/components/form/form-item.css +6 -1
  79. package/2x/es/components/form/form-item.js +22 -8
  80. package/2x/es/components/form/form.css +5 -0
  81. package/2x/es/components/form/form.js +15 -5
  82. package/2x/es/components/form/index.css +11 -1
  83. package/2x/es/components/form/index.d.ts +2 -0
  84. package/2x/es/components/form/index.js +2 -0
  85. package/2x/es/components/image-uploader/image-uploader.d.ts +1 -1
  86. package/2x/es/components/image-uploader/image-uploader.js +17 -1
  87. package/2x/es/components/image-viewer/index.d.ts +1 -1
  88. package/2x/es/components/image-viewer/methods.d.ts +3 -4
  89. package/2x/es/components/image-viewer/methods.js +38 -57
  90. package/2x/es/components/modal/index.d.ts +1 -1
  91. package/2x/es/components/modal/show.d.ts +2 -4
  92. package/2x/es/components/modal/show.js +8 -44
  93. package/2x/es/components/popover/index.d.ts +7 -2
  94. package/2x/es/components/popover/normalize-placement.d.ts +2 -0
  95. package/2x/es/components/popover/normalize-placement.js +15 -0
  96. package/2x/es/components/popover/popover.css +0 -104
  97. package/2x/es/components/popover/popover.d.ts +11 -5
  98. package/2x/es/components/popover/popover.js +119 -22
  99. package/2x/es/components/popover/temp-floating-ui.min.d.ts +1 -0
  100. package/2x/es/components/popover/temp-floating-ui.min.js +1 -0
  101. package/2x/es/components/popover/wrapper.d.ts +7 -0
  102. package/2x/es/components/popover/wrapper.js +28 -0
  103. package/2x/es/components/pull-to-refresh/pull-to-refresh.js +24 -9
  104. package/2x/es/components/radio/radio.js +3 -8
  105. package/2x/es/components/search-bar/search-bar.d.ts +1 -1
  106. package/2x/es/components/tab-bar/tab-bar.d.ts +1 -1
  107. package/2x/es/components/tab-bar/tab-bar.js +1 -1
  108. package/2x/es/components/tree-select/tree-select.js +2 -2
  109. package/2x/es/utils/render-imperatively.d.ts +10 -0
  110. package/2x/es/utils/render-imperatively.js +45 -0
  111. package/2x/es/utils/use-props-value.d.ts +2 -1
  112. package/2x/es/utils/use-props-value.js +4 -2
  113. package/2x/package.json +3 -4
  114. package/cjs/components/action-sheet/action-sheet.d.ts +5 -5
  115. package/cjs/components/action-sheet/action-sheet.js +6 -46
  116. package/cjs/components/action-sheet/index.d.ts +1 -1
  117. package/cjs/components/badge/badge.js +1 -1
  118. package/cjs/components/cascader-view/cascader-view.d.ts +1 -0
  119. package/cjs/components/cascader-view/cascader-view.js +7 -0
  120. package/cjs/components/cascader-view/use-cascader-value-extend.js +23 -0
  121. package/cjs/components/check-list/check-list-item.js +1 -1
  122. package/cjs/components/checkbox/checkbox.js +4 -8
  123. package/cjs/components/checkbox/native-input.d.ts +10 -0
  124. package/cjs/components/checkbox/native-input.js +42 -0
  125. package/cjs/components/dialog/index.d.ts +1 -1
  126. package/cjs/components/dialog/show.d.ts +2 -4
  127. package/cjs/components/dialog/show.js +9 -47
  128. package/cjs/components/dot-loading/dot-loading.js +1 -2
  129. package/cjs/components/error-block/error-block.js +4 -2
  130. package/cjs/components/floating-bubble/floating-bubble.css +2 -1
  131. package/cjs/components/floating-bubble/floating-bubble.d.ts +1 -1
  132. package/cjs/components/floating-bubble/floating-bubble.js +14 -5
  133. package/cjs/components/form/form-array.d.ts +19 -0
  134. package/cjs/components/form/form-array.js +52 -0
  135. package/cjs/components/form/form-item.css +5 -1
  136. package/cjs/components/form/form-item.js +24 -8
  137. package/cjs/components/form/form.css +4 -0
  138. package/cjs/components/form/form.js +16 -5
  139. package/cjs/components/form/index.css +9 -1
  140. package/cjs/components/form/index.d.ts +2 -0
  141. package/cjs/components/form/index.js +3 -0
  142. package/cjs/components/image-uploader/image-uploader.d.ts +1 -1
  143. package/cjs/components/image-uploader/image-uploader.js +17 -1
  144. package/cjs/components/image-viewer/index.d.ts +1 -1
  145. package/cjs/components/image-viewer/methods.d.ts +3 -4
  146. package/cjs/components/image-viewer/methods.js +41 -56
  147. package/cjs/components/modal/index.d.ts +1 -1
  148. package/cjs/components/modal/show.d.ts +2 -4
  149. package/cjs/components/modal/show.js +9 -47
  150. package/cjs/components/popover/index.d.ts +7 -2
  151. package/cjs/components/popover/normalize-placement.d.ts +2 -0
  152. package/cjs/components/popover/normalize-placement.js +22 -0
  153. package/cjs/components/popover/popover.css +0 -84
  154. package/cjs/components/popover/popover.d.ts +11 -5
  155. package/cjs/components/popover/popover.js +127 -22
  156. package/cjs/components/popover/temp-floating-ui.min.d.ts +1 -0
  157. package/cjs/components/popover/temp-floating-ui.min.js +1 -0
  158. package/cjs/components/popover/wrapper.d.ts +7 -0
  159. package/cjs/components/popover/wrapper.js +41 -0
  160. package/cjs/components/pull-to-refresh/pull-to-refresh.js +24 -9
  161. package/cjs/components/radio/radio.js +4 -8
  162. package/cjs/components/search-bar/search-bar.d.ts +1 -1
  163. package/cjs/components/tab-bar/tab-bar.d.ts +1 -1
  164. package/cjs/components/tab-bar/tab-bar.js +1 -1
  165. package/cjs/components/tree-select/tree-select.js +2 -2
  166. package/cjs/utils/render-imperatively.d.ts +10 -0
  167. package/cjs/utils/render-imperatively.js +58 -0
  168. package/cjs/utils/use-props-value.d.ts +2 -1
  169. package/cjs/utils/use-props-value.js +4 -2
  170. package/es/components/action-sheet/action-sheet.d.ts +5 -5
  171. package/es/components/action-sheet/action-sheet.js +5 -41
  172. package/es/components/action-sheet/index.d.ts +1 -1
  173. package/es/components/badge/badge.js +1 -1
  174. package/es/components/cascader-view/cascader-view.d.ts +1 -0
  175. package/es/components/cascader-view/cascader-view.js +7 -0
  176. package/es/components/cascader-view/use-cascader-value-extend.js +23 -0
  177. package/es/components/check-list/check-list-item.js +1 -1
  178. package/es/components/checkbox/checkbox.js +3 -8
  179. package/es/components/checkbox/native-input.d.ts +10 -0
  180. package/es/components/checkbox/native-input.js +28 -0
  181. package/es/components/dialog/index.d.ts +1 -1
  182. package/es/components/dialog/show.d.ts +2 -4
  183. package/es/components/dialog/show.js +8 -44
  184. package/es/components/dot-loading/dot-loading.js +1 -2
  185. package/es/components/error-block/error-block.js +4 -2
  186. package/es/components/floating-bubble/floating-bubble.css +2 -1
  187. package/es/components/floating-bubble/floating-bubble.d.ts +1 -1
  188. package/es/components/floating-bubble/floating-bubble.js +14 -5
  189. package/es/components/form/form-array.d.ts +19 -0
  190. package/es/components/form/form-array.js +38 -0
  191. package/es/components/form/form-item.css +5 -1
  192. package/es/components/form/form-item.js +22 -8
  193. package/es/components/form/form.css +4 -0
  194. package/es/components/form/form.js +15 -5
  195. package/es/components/form/index.css +9 -1
  196. package/es/components/form/index.d.ts +2 -0
  197. package/es/components/form/index.js +2 -0
  198. package/es/components/image-uploader/image-uploader.d.ts +1 -1
  199. package/es/components/image-uploader/image-uploader.js +17 -1
  200. package/es/components/image-viewer/index.d.ts +1 -1
  201. package/es/components/image-viewer/methods.d.ts +3 -4
  202. package/es/components/image-viewer/methods.js +38 -57
  203. package/es/components/modal/index.d.ts +1 -1
  204. package/es/components/modal/show.d.ts +2 -4
  205. package/es/components/modal/show.js +8 -44
  206. package/es/components/popover/index.d.ts +7 -2
  207. package/es/components/popover/normalize-placement.d.ts +2 -0
  208. package/es/components/popover/normalize-placement.js +15 -0
  209. package/es/components/popover/popover.css +0 -84
  210. package/es/components/popover/popover.d.ts +11 -5
  211. package/es/components/popover/popover.js +119 -22
  212. package/es/components/popover/temp-floating-ui.min.d.ts +1 -0
  213. package/es/components/popover/temp-floating-ui.min.js +1 -0
  214. package/es/components/popover/wrapper.d.ts +7 -0
  215. package/es/components/popover/wrapper.js +28 -0
  216. package/es/components/pull-to-refresh/pull-to-refresh.js +24 -9
  217. package/es/components/radio/radio.js +3 -8
  218. package/es/components/search-bar/search-bar.d.ts +1 -1
  219. package/es/components/tab-bar/tab-bar.d.ts +1 -1
  220. package/es/components/tab-bar/tab-bar.js +1 -1
  221. package/es/components/tree-select/tree-select.js +2 -2
  222. package/es/utils/render-imperatively.d.ts +10 -0
  223. package/es/utils/render-imperatively.js +45 -0
  224. package/es/utils/use-props-value.d.ts +2 -1
  225. package/es/utils/use-props-value.js +4 -2
  226. package/package.json +3 -4
  227. package/umd/antd-mobile.js +1 -1
@@ -1,49 +1,18 @@
1
- import React, { createRef, forwardRef, useEffect, useImperativeHandle, useState } from 'react';
1
+ import React, { createRef, forwardRef, useEffect, useImperativeHandle, useRef, useState } from 'react';
2
2
  import { renderToBody } from '../../utils/render-to-body';
3
3
  import { ImageViewer, MultiImageViewer } from './image-viewer';
4
- import { useUnmountedRef } from 'ahooks';
4
+ import { renderImperatively } from '../../utils/render-imperatively';
5
5
  const handlerSet = new Set();
6
6
  export function showImageViewer(props) {
7
7
  clearImageViewer();
8
- const Wrapper = forwardRef((_, ref) => {
9
- const [visible, setVisible] = useState(false);
10
- useEffect(() => {
11
- setVisible(true);
12
- }, []);
13
- const isUnmountedRef = useUnmountedRef();
14
- useImperativeHandle(ref, () => ({
15
- close: () => {
16
- if (isUnmountedRef.current) return;
17
- setVisible(false);
18
- }
19
- }));
20
- return React.createElement(ImageViewer, Object.assign({}, props, {
21
- visible: visible,
22
- onClose: () => {
23
- var _a;
24
-
25
- (_a = props.onClose) === null || _a === void 0 ? void 0 : _a.call(props);
26
- setVisible(false);
27
- },
28
- afterClose: () => {
29
- var _a;
30
-
31
- (_a = props.afterClose) === null || _a === void 0 ? void 0 : _a.call(props);
32
- unmount();
33
- }
34
- }));
35
- });
36
- const ref = createRef();
37
- const unmount = renderToBody(React.createElement(Wrapper, {
38
- ref: ref
39
- }));
40
- const handler = {
41
- close: () => {
8
+ const handler = renderImperatively(React.createElement(ImageViewer, Object.assign({}, props, {
9
+ afterClose: () => {
42
10
  var _a;
43
11
 
44
- (_a = ref.current) === null || _a === void 0 ? void 0 : _a.close();
12
+ handlerSet.delete(handler);
13
+ (_a = props.afterClose) === null || _a === void 0 ? void 0 : _a.call(props);
45
14
  }
46
- };
15
+ })));
47
16
  handlerSet.add(handler);
48
17
  return handler;
49
18
  }
@@ -51,30 +20,39 @@ export function showMultiImageViewer(props) {
51
20
  clearImageViewer();
52
21
  const Wrapper = forwardRef((_, ref) => {
53
22
  const [visible, setVisible] = useState(false);
23
+ const closedRef = useRef(false);
54
24
  useEffect(() => {
55
- setVisible(true);
25
+ if (!closedRef.current) {
26
+ setVisible(true);
27
+ } else {
28
+ handleAfterClose();
29
+ }
56
30
  }, []);
57
- const isUnmountedRef = useUnmountedRef();
31
+
32
+ function handleClose() {
33
+ var _a;
34
+
35
+ closedRef.current = true;
36
+ (_a = props.onClose) === null || _a === void 0 ? void 0 : _a.call(props);
37
+ setVisible(false);
38
+ }
39
+
58
40
  useImperativeHandle(ref, () => ({
59
- close: () => {
60
- if (isUnmountedRef.current) return;
61
- setVisible(false);
62
- }
41
+ close: handleClose
63
42
  }));
64
- return React.createElement(MultiImageViewer, Object.assign({}, props, {
65
- visible: visible,
66
- onClose: () => {
67
- var _a;
68
43
 
69
- (_a = props.onClose) === null || _a === void 0 ? void 0 : _a.call(props);
70
- setVisible(false);
71
- },
72
- afterClose: () => {
73
- var _a;
44
+ function handleAfterClose() {
45
+ var _a;
74
46
 
75
- (_a = props.afterClose) === null || _a === void 0 ? void 0 : _a.call(props);
76
- unmount();
77
- }
47
+ (_a = props.afterClose) === null || _a === void 0 ? void 0 : _a.call(props);
48
+ unmount();
49
+ handlerSet.delete(handler);
50
+ }
51
+
52
+ return React.createElement(MultiImageViewer, Object.assign({}, props, {
53
+ visible: visible,
54
+ onClose: handleClose,
55
+ afterClose: handleAfterClose
78
56
  }));
79
57
  });
80
58
  const ref = createRef();
@@ -96,4 +74,7 @@ export function clearImageViewer() {
96
74
  handler.close();
97
75
  });
98
76
  handlerSet.clear();
99
- }
77
+ }
78
+ export const getH = () => {
79
+ console.log(handlerSet);
80
+ };
@@ -6,7 +6,7 @@ import { confirm } from './confirm';
6
6
  import { clear } from './clear';
7
7
  export type { ModalProps } from './modal';
8
8
  export type { Action } from './modal-action-button';
9
- export type { ModalShowProps, ModalShowRef } from './show';
9
+ export type { ModalShowProps, ModalShowHandler } from './show';
10
10
  export type { ModalAlertProps } from './alert';
11
11
  export type { ModalConfirmProps } from './confirm';
12
12
  declare const _default: import("react").FC<import("./modal").ModalProps> & {
@@ -1,9 +1,7 @@
1
1
  import { ModalProps } from './modal';
2
2
  export declare type ModalShowProps = Omit<ModalProps, 'visible'>;
3
- export declare type ModalShowRef = {
3
+ export declare type ModalShowHandler = {
4
4
  close: () => void;
5
5
  };
6
6
  export declare const closeFnSet: Set<() => void>;
7
- export declare function show(props: ModalShowProps): {
8
- close: () => void;
9
- };
7
+ export declare function show(props: ModalShowProps): ModalShowHandler;
@@ -1,52 +1,16 @@
1
- import React, { createRef, forwardRef, useEffect, useImperativeHandle, useState } from 'react';
2
- import { renderToBody } from '../../utils/render-to-body';
1
+ import React from 'react';
3
2
  import { Modal } from './modal';
3
+ import { renderImperatively } from '../../utils/render-imperatively';
4
4
  export const closeFnSet = new Set();
5
5
  export function show(props) {
6
- const Wrapper = forwardRef((_, ref) => {
7
- const [visible, setVisible] = useState(false);
8
- useEffect(() => {
9
- setVisible(true);
10
- }, []);
11
-
12
- function handleClose() {
13
- var _a;
14
-
15
- (_a = props.onClose) === null || _a === void 0 ? void 0 : _a.call(props);
16
- setVisible(false);
17
- }
18
-
19
- useImperativeHandle(ref, () => ({
20
- close: handleClose
21
- }));
22
-
23
- function handleAfterClose() {
6
+ const handler = renderImperatively(React.createElement(Modal, Object.assign({}, props, {
7
+ afterClose: () => {
24
8
  var _a;
25
9
 
10
+ closeFnSet.delete(handler.close);
26
11
  (_a = props.afterClose) === null || _a === void 0 ? void 0 : _a.call(props);
27
- unmount();
28
- closeFnSet.delete(close);
29
12
  }
30
-
31
- return React.createElement(Modal, Object.assign({}, props, {
32
- visible: visible,
33
- onClose: handleClose,
34
- afterClose: handleAfterClose
35
- }));
36
- });
37
- const ref = createRef();
38
- const unmount = renderToBody(React.createElement(Wrapper, {
39
- ref: ref
40
- }));
41
-
42
- const close = () => {
43
- var _a;
44
-
45
- (_a = ref.current) === null || _a === void 0 ? void 0 : _a.close();
46
- };
47
-
48
- closeFnSet.add(close);
49
- return {
50
- close
51
- };
13
+ })));
14
+ closeFnSet.add(handler.close);
15
+ return handler;
52
16
  }
@@ -3,16 +3,21 @@ import './popover.less';
3
3
  import './popover-menu.less';
4
4
  export type { PopoverProps, PopoverRef } from './popover';
5
5
  export type { PopoverMenuProps, Action } from './popover-menu';
6
+ export declare type Placement = 'top' | 'top-start' | 'top-end' | 'right' | 'right-start' | 'right-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | 'left-start' | 'left-end';
7
+ export declare type DeprecatedPlacement = 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight' | 'leftTop' | 'leftBottom' | 'rightTop' | 'rightBottom';
6
8
  declare const _default: import("react").ForwardRefExoticComponent<{
9
+ defaultVisible?: boolean | undefined;
10
+ visible?: boolean | undefined;
11
+ onVisibleChange?: ((visible: boolean) => void) | undefined;
7
12
  getContainer?: import("../../utils/render-to-container").GetContainer | undefined;
8
13
  destroyOnHide?: boolean | undefined;
9
14
  children: import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
10
15
  mode?: "dark" | "light" | undefined;
11
16
  trigger?: "click" | undefined;
12
- placement?: "left" | "right" | "bottom" | "top" | "topLeft" | "topRight" | "bottomLeft" | "bottomRight" | "leftTop" | "leftBottom" | "rightTop" | "rightBottom" | undefined;
17
+ placement?: DeprecatedPlacement | Placement | undefined;
13
18
  stopPropagation?: "click"[] | undefined;
14
19
  content: import("react").ReactNode;
15
- } & Pick<import("rc-tooltip/lib/Tooltip").TooltipProps, "visible" | "align" | "defaultVisible" | "onVisibleChange"> & import("../../utils/native-props").NativeProps<"--z-index"> & import("react").RefAttributes<import("./popover").PopoverRef>> & {
20
+ } & import("../../utils/native-props").NativeProps<"--z-index"> & import("react").RefAttributes<import("./popover").PopoverRef>> & {
16
21
  Menu: import("react").ForwardRefExoticComponent<Omit<import("./popover").PopoverProps, "content"> & {
17
22
  actions: import("./popover-menu").Action[];
18
23
  onAction?: ((item: import("./popover-menu").Action) => void) | undefined;
@@ -0,0 +1,2 @@
1
+ import { DeprecatedPlacement, Placement } from './index';
2
+ export declare function normalizePlacement(placement: Placement | DeprecatedPlacement): Placement;
@@ -0,0 +1,15 @@
1
+ const record = {
2
+ 'topLeft': 'top-start',
3
+ 'topRight': 'top-end',
4
+ 'bottomLeft': 'bottom-start',
5
+ 'bottomRight': 'bottom-end',
6
+ 'leftTop': 'left-start',
7
+ 'leftBottom': 'left-end',
8
+ 'rightTop': 'right-start',
9
+ 'rightBottom': 'right-end'
10
+ };
11
+ export function normalizePlacement(placement) {
12
+ var _a;
13
+
14
+ return (_a = record[placement]) !== null && _a !== void 0 ? _a : placement;
15
+ }
@@ -34,110 +34,6 @@
34
34
  display: none;
35
35
  }
36
36
 
37
- .adm-popover-placement-top,
38
- .adm-popover-placement-topLeft,
39
- .adm-popover-placement-topRight {
40
- padding-bottom: var(--arrow-size);
41
- }
42
-
43
- .adm-popover-placement-top .adm-popover-arrow,
44
- .adm-popover-placement-topLeft .adm-popover-arrow,
45
- .adm-popover-placement-topRight .adm-popover-arrow {
46
- bottom: 0;
47
- --arrow-icon-rotate: 0deg;
48
- }
49
-
50
- .adm-popover-placement-top .adm-popover-arrow {
51
- left: 50%;
52
- transform: translateX(-50%);
53
- }
54
-
55
- .adm-popover-placement-topLeft .adm-popover-arrow {
56
- left: 24px;
57
- }
58
-
59
- .adm-popover-placement-topRight .adm-popover-arrow {
60
- right: 24px;
61
- }
62
-
63
- .adm-popover-placement-right,
64
- .adm-popover-placement-rightTop,
65
- .adm-popover-placement-rightBottom {
66
- padding-left: var(--arrow-size);
67
- }
68
-
69
- .adm-popover-placement-right .adm-popover-arrow,
70
- .adm-popover-placement-rightTop .adm-popover-arrow,
71
- .adm-popover-placement-rightBottom .adm-popover-arrow {
72
- left: 0;
73
- --arrow-icon-rotate: 90deg;
74
- }
75
-
76
- .adm-popover-placement-right .adm-popover-arrow {
77
- top: 50%;
78
- transform: translateY(-50%);
79
- }
80
-
81
- .adm-popover-placement-rightTop .adm-popover-arrow {
82
- top: 24px;
83
- }
84
-
85
- .adm-popover-placement-rightBottom .adm-popover-arrow {
86
- bottom: 24px;
87
- }
88
-
89
- .adm-popover-placement-bottom,
90
- .adm-popover-placement-bottomLeft,
91
- .adm-popover-placement-bottomRight {
92
- padding-top: var(--arrow-size);
93
- }
94
-
95
- .adm-popover-placement-bottom .adm-popover-arrow,
96
- .adm-popover-placement-bottomLeft .adm-popover-arrow,
97
- .adm-popover-placement-bottomRight .adm-popover-arrow {
98
- top: 0;
99
- --arrow-icon-rotate: 180deg;
100
- }
101
-
102
- .adm-popover-placement-bottom .adm-popover-arrow {
103
- left: 50%;
104
- transform: translateX(-50%);
105
- }
106
-
107
- .adm-popover-placement-bottomLeft .adm-popover-arrow {
108
- left: 24px;
109
- }
110
-
111
- .adm-popover-placement-bottomRight .adm-popover-arrow {
112
- right: 24px;
113
- }
114
-
115
- .adm-popover-placement-left,
116
- .adm-popover-placement-leftTop,
117
- .adm-popover-placement-leftBottom {
118
- padding-right: var(--arrow-size);
119
- }
120
-
121
- .adm-popover-placement-left .adm-popover-arrow,
122
- .adm-popover-placement-leftTop .adm-popover-arrow,
123
- .adm-popover-placement-leftBottom .adm-popover-arrow {
124
- right: 0;
125
- --arrow-icon-rotate: 270deg;
126
- }
127
-
128
- .adm-popover-placement-left .adm-popover-arrow {
129
- top: 50%;
130
- transform: translateY(-50%);
131
- }
132
-
133
- .adm-popover-placement-leftTop .adm-popover-arrow {
134
- top: 24px;
135
- }
136
-
137
- .adm-popover-placement-leftBottom .adm-popover-arrow {
138
- bottom: 24px;
139
- }
140
-
141
37
  .adm-popover-inner {
142
38
  background-color: var(--background);
143
39
  background-clip: padding-box;
@@ -1,30 +1,36 @@
1
1
  import React, { ReactElement } from 'react';
2
- import type { TooltipProps } from 'rc-tooltip/lib/Tooltip';
3
2
  import { NativeProps } from '../../utils/native-props';
4
3
  import { PropagationEvent } from '../../utils/with-stop-propagation';
5
4
  import { GetContainer } from '../../utils/render-to-container';
5
+ import { DeprecatedPlacement, Placement } from './index';
6
6
  export declare type PopoverProps = {
7
+ defaultVisible?: boolean;
8
+ visible?: boolean;
9
+ onVisibleChange?: (visible: boolean) => void;
7
10
  getContainer?: GetContainer;
8
11
  destroyOnHide?: boolean;
9
12
  children: ReactElement;
10
13
  mode?: 'light' | 'dark';
11
14
  trigger?: 'click';
12
- placement?: 'top' | 'left' | 'right' | 'bottom' | 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight' | 'leftTop' | 'leftBottom' | 'rightTop' | 'rightBottom';
15
+ placement?: Placement | DeprecatedPlacement;
13
16
  stopPropagation?: PropagationEvent[];
14
17
  content: React.ReactNode;
15
- } & Pick<TooltipProps, 'defaultVisible' | 'visible' | 'onVisibleChange' | 'align'> & NativeProps<'--z-index'>;
18
+ } & NativeProps<'--z-index'>;
16
19
  export declare type PopoverRef = {
17
20
  show: () => void;
18
21
  hide: () => void;
19
22
  visible: boolean;
20
23
  };
21
24
  export declare const Popover: React.ForwardRefExoticComponent<{
25
+ defaultVisible?: boolean | undefined;
26
+ visible?: boolean | undefined;
27
+ onVisibleChange?: ((visible: boolean) => void) | undefined;
22
28
  getContainer?: GetContainer | undefined;
23
29
  destroyOnHide?: boolean | undefined;
24
30
  children: ReactElement;
25
31
  mode?: "dark" | "light" | undefined;
26
32
  trigger?: "click" | undefined;
27
- placement?: "left" | "right" | "bottom" | "top" | "topLeft" | "topRight" | "bottomLeft" | "bottomRight" | "leftTop" | "leftBottom" | "rightTop" | "rightBottom" | undefined;
33
+ placement?: DeprecatedPlacement | Placement | undefined;
28
34
  stopPropagation?: "click"[] | undefined;
29
35
  content: React.ReactNode;
30
- } & Pick<TooltipProps, "visible" | "align" | "defaultVisible" | "onVisibleChange"> & NativeProps<"--z-index"> & React.RefAttributes<PopoverRef>>;
36
+ } & NativeProps<"--z-index"> & React.RefAttributes<PopoverRef>>;
@@ -1,10 +1,18 @@
1
- import React, { forwardRef, useImperativeHandle } from 'react';
2
- import Tooltip from 'rc-tooltip';
1
+ import { __awaiter } from "tslib";
2
+ import React, { forwardRef, useImperativeHandle, useRef, useState, useEffect } from 'react';
3
3
  import classNames from 'classnames';
4
4
  import { usePropsValue } from '../../utils/use-props-value';
5
5
  import { mergeProps } from '../../utils/with-default-props';
6
+ import { withNativeProps } from '../../utils/native-props';
6
7
  import { withStopPropagation } from '../../utils/with-stop-propagation';
7
8
  import { Arrow } from './arrow';
9
+ import { renderToContainer } from '../../utils/render-to-container';
10
+ import { arrow, computePosition, flip, offset, autoUpdate, hide, shift, limitShift } from './temp-floating-ui.min.js';
11
+ import { Wrapper } from './wrapper';
12
+ import { useShouldRender } from '../../utils/should-render';
13
+ import { useClickAway, useIsomorphicLayoutEffect } from 'ahooks';
14
+ import { normalizePlacement } from './normalize-placement';
15
+ import { convertPx } from '../../utils/convert-px';
8
16
  const classPrefix = `adm-popover`;
9
17
  const defaultProps = {
10
18
  placement: 'top',
@@ -13,12 +21,11 @@ const defaultProps = {
13
21
  getContainer: () => document.body
14
22
  };
15
23
  export const Popover = forwardRef((p, ref) => {
16
- var _a;
17
-
18
24
  const props = mergeProps(defaultProps, p);
19
25
  const {
20
26
  mode = 'light'
21
27
  } = props;
28
+ const placement = normalizePlacement(props.placement);
22
29
  const [visible, setVisible] = usePropsValue({
23
30
  value: props.visible,
24
31
  defaultValue: props.defaultVisible,
@@ -31,23 +38,113 @@ export const Popover = forwardRef((p, ref) => {
31
38
  visible
32
39
  };
33
40
  }, [visible]);
34
- const overlay = withStopPropagation(props.stopPropagation, React.createElement("div", {
41
+ const targetRef = useRef(null);
42
+ const floatingRef = useRef(null);
43
+ const arrowRef = useRef(null);
44
+ const floating = withStopPropagation(props.stopPropagation, withNativeProps(props, React.createElement("div", {
45
+ className: classNames(classPrefix, `${classPrefix}-${mode}`, !visible && `${classPrefix}-hidden`),
46
+ ref: floatingRef
47
+ }, React.createElement("div", {
48
+ className: `${classPrefix}-arrow`,
49
+ ref: arrowRef
50
+ }, React.createElement(Arrow, {
51
+ className: `${classPrefix}-arrow-icon`
52
+ })), React.createElement("div", {
53
+ className: `${classPrefix}-inner`
54
+ }, React.createElement("div", {
35
55
  className: `${classPrefix}-inner-content`
36
- }, props.content));
37
- return React.createElement(Tooltip, Object.assign({}, props, {
38
- placement: props.placement,
39
- align: props.align,
40
- overlayClassName: classNames(`${classPrefix}-${mode}`, props.className),
41
- overlayStyle: props.style,
42
- destroyTooltipOnHide: props.destroyOnHide,
43
- prefixCls: classPrefix,
44
- getTooltipContainer: props.getContainer || (() => document.body),
45
- visible: visible,
46
- arrowContent: React.createElement(Arrow, {
47
- className: `${classPrefix}-arrow-icon`
48
- }),
49
- onVisibleChange: setVisible,
50
- trigger: (_a = props.trigger) !== null && _a !== void 0 ? _a : [],
51
- overlay: overlay
52
- }), props.children);
56
+ }, props.content)))));
57
+ const [targetElement, setTargetElement] = useState(null);
58
+
59
+ function update() {
60
+ var _a, _b, _c;
61
+
62
+ return __awaiter(this, void 0, void 0, function* () {
63
+ const target = (_b = (_a = targetRef.current) === null || _a === void 0 ? void 0 : _a.element) !== null && _b !== void 0 ? _b : null;
64
+ const floating = floatingRef.current;
65
+ const arrowElement = arrowRef.current;
66
+ setTargetElement(target);
67
+ if (!target || !floating || !arrowElement) return;
68
+ const {
69
+ x,
70
+ y,
71
+ placement: realPlacement,
72
+ middlewareData
73
+ } = yield computePosition(target, floating, {
74
+ placement,
75
+ middleware: [offset(convertPx(12)), shift({
76
+ padding: convertPx(4),
77
+ crossAxis: false,
78
+ limiter: limitShift()
79
+ }), flip(), hide(), arrow({
80
+ element: arrowElement,
81
+ padding: convertPx(12)
82
+ })]
83
+ });
84
+ Object.assign(floating.style, {
85
+ left: `${x}px`,
86
+ top: `${y}px`
87
+ });
88
+ const side = realPlacement.split('-')[0];
89
+ const arrowSide = {
90
+ top: 'bottom',
91
+ right: 'left',
92
+ bottom: 'top',
93
+ left: 'right'
94
+ }[side];
95
+ const {
96
+ x: arrowX,
97
+ y: arrowY
98
+ } = (_c = middlewareData.arrow) !== null && _c !== void 0 ? _c : {};
99
+ Object.assign(arrowElement.style, {
100
+ left: arrowX != null ? `${arrowX}px` : '',
101
+ top: arrowY != null ? `${arrowY}px` : '',
102
+ right: '',
103
+ bottom: '',
104
+ [arrowSide]: `-${convertPx(8)}px`
105
+ });
106
+ const arrowRotate = {
107
+ top: '0deg',
108
+ bottom: '180deg',
109
+ left: '270deg',
110
+ right: '90deg'
111
+ }[side];
112
+ arrowElement.style.setProperty('--arrow-icon-rotate', arrowRotate);
113
+ });
114
+ }
115
+
116
+ useIsomorphicLayoutEffect(() => {
117
+ update();
118
+ });
119
+ useEffect(() => {
120
+ if (!targetElement) return;
121
+ if (!props.trigger) return;
122
+
123
+ function handleClick() {
124
+ console.log('handleClick');
125
+ setVisible(v => !v);
126
+ }
127
+
128
+ targetElement.addEventListener('click', handleClick);
129
+ return () => {
130
+ targetElement.removeEventListener('click', handleClick);
131
+ };
132
+ }, [targetElement, props.trigger]);
133
+ useEffect(() => {
134
+ const floatingElement = floatingRef.current;
135
+ if (!targetElement || !floatingElement) return;
136
+ return autoUpdate(targetElement, floatingElement, update);
137
+ }, [targetElement]);
138
+ useClickAway(() => {
139
+ if (!props.trigger) return;
140
+ setVisible(false);
141
+ }, () => {
142
+ var _a;
143
+
144
+ return (_a = targetRef.current) === null || _a === void 0 ? void 0 : _a.element;
145
+ });
146
+ const shouldRender = useShouldRender(visible, false, props.destroyOnHide);
147
+ return React.createElement(React.Fragment, null, React.createElement(Wrapper, {
148
+ ref: targetRef
149
+ }, props.children), shouldRender && renderToContainer(props.getContainer, floating));
53
150
  });
@@ -0,0 +1 @@
1
+ export * from '@floating-ui/dom'
@@ -0,0 +1 @@
1
+ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@floating-ui/core")):"function"==typeof define&&define.amd?define(["exports","@floating-ui/core"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).FloatingUIDOM={},t.FloatingUICore)}(this,(function(t,e){"use strict";function n(t){return"[object Window]"===(null==t?void 0:t.toString())}function o(t){if(null==t)return window;if(!n(t)){const e=t.ownerDocument;return e&&e.defaultView||window}return t}function i(t){return o(t).getComputedStyle(t)}function r(t){return n(t)?"":t?(t.nodeName||"").toLowerCase():""}function l(t){return t instanceof o(t).HTMLElement}function c(t){return t instanceof o(t).Element}function f(t){return t instanceof o(t).ShadowRoot||t instanceof ShadowRoot}function u(t){const{overflow:e,overflowX:n,overflowY:o}=i(t);return/auto|scroll|overlay|hidden/.test(e+o+n)}function s(t){return["table","td","th"].includes(r(t))}function d(t){const e=navigator.userAgent.toLowerCase().includes("firefox"),n=i(t);return"none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||["transform","perspective"].includes(n.willChange)||e&&"filter"===n.willChange||e&&!!n.filter&&"none"!==n.filter}const h=Math.min,a=Math.max,g=Math.round;function p(t,e){void 0===e&&(e=!1);const n=t.getBoundingClientRect();let o=1,i=1;return e&&l(t)&&(o=t.offsetWidth>0&&g(n.width)/t.offsetWidth||1,i=t.offsetHeight>0&&g(n.height)/t.offsetHeight||1),{width:n.width/o,height:n.height/i,top:n.top/i,right:n.right/o,bottom:n.bottom/i,left:n.left/o,x:n.left/o,y:n.top/i}}function m(t){return(e=t,(e instanceof o(e).Node?t.ownerDocument:t.document)||window.document).documentElement;var e}function y(t){return n(t)?{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}:{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}}function w(t){return p(m(t)).left+y(t).scrollLeft}function b(t,e,n){const o=l(e),i=m(e),c=p(t,o&&function(t){const e=p(t);return g(e.width)!==t.offsetWidth||g(e.height)!==t.offsetHeight}(e));let f={scrollLeft:0,scrollTop:0};const s={x:0,y:0};if(o||!o&&"fixed"!==n)if(("body"!==r(e)||u(i))&&(f=y(e)),l(e)){const t=p(e,!0);s.x=t.x+e.clientLeft,s.y=t.y+e.clientTop}else i&&(s.x=w(i));return{x:c.left+f.scrollLeft-s.x,y:c.top+f.scrollTop-s.y,width:c.width,height:c.height}}function v(t){return"html"===r(t)?t:t.assignedSlot||t.parentNode||(f(t)?t.host:null)||m(t)}function x(t){return l(t)&&"fixed"!==getComputedStyle(t).position?t.offsetParent:null}function L(t){const e=o(t);let n=x(t);for(;n&&s(n)&&"static"===getComputedStyle(n).position;)n=x(n);return n&&("html"===r(n)||"body"===r(n)&&"static"===getComputedStyle(n).position&&!d(n))?e:n||function(t){let e=v(t);for(f(e)&&(e=e.host);l(e)&&!["html","body"].includes(r(e));){if(d(e))return e;e=e.parentNode}return null}(t)||e}function O(t){if(l(t))return{width:t.offsetWidth,height:t.offsetHeight};const e=p(t);return{width:e.width,height:e.height}}function P(t){const e=v(t);return["html","body","#document"].includes(r(e))?t.ownerDocument.body:l(e)&&u(e)?e:P(e)}function R(t,e){var n;void 0===e&&(e=[]);const i=P(t),r=i===(null==(n=t.ownerDocument)?void 0:n.body),l=o(i),c=r?[l].concat(l.visualViewport||[],u(i)?i:[]):i,f=e.concat(c);return r?f:f.concat(R(v(c)))}function T(t,n){return"viewport"===n?e.rectToClientRect(function(t){const e=o(t),n=m(t),i=e.visualViewport;let r=n.clientWidth,l=n.clientHeight,c=0,f=0;return i&&(r=i.width,l=i.height,Math.abs(e.innerWidth/i.scale-i.width)<.01&&(c=i.offsetLeft,f=i.offsetTop)),{width:r,height:l,x:c,y:f}}(t)):c(n)?function(t){const e=p(t),n=e.top+t.clientTop,o=e.left+t.clientLeft;return{top:n,left:o,x:o,y:n,right:o+t.clientWidth,bottom:n+t.clientHeight,width:t.clientWidth,height:t.clientHeight}}(n):e.rectToClientRect(function(t){var e;const n=m(t),o=y(t),r=null==(e=t.ownerDocument)?void 0:e.body,l=a(n.scrollWidth,n.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),c=a(n.scrollHeight,n.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0);let f=-o.scrollLeft+w(t);const u=-o.scrollTop;return"rtl"===i(r||n).direction&&(f+=a(n.clientWidth,r?r.clientWidth:0)-l),{width:l,height:c,x:f,y:u}}(m(t)))}function C(t){const e=R(t),n=["absolute","fixed"].includes(i(t).position)&&l(t)?L(t):t;return c(n)?e.filter((t=>c(t)&&function(t,e){const n=null==e.getRootNode?void 0:e.getRootNode();if(t.contains(e))return!0;if(n&&f(n)){let n=e;do{if(n&&t===n)return!0;n=n.parentNode||n.host}while(n)}return!1}(t,n)&&"body"!==r(t))):[]}const W={getClippingRect:function(t){let{element:e,boundary:n,rootBoundary:o}=t;const i=[..."clippingAncestors"===n?C(e):[].concat(n),o],r=i[0],l=i.reduce(((t,n)=>{const o=T(e,n);return t.top=a(o.top,t.top),t.right=h(o.right,t.right),t.bottom=h(o.bottom,t.bottom),t.left=a(o.left,t.left),t}),T(e,r));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}},convertOffsetParentRelativeRectToViewportRelativeRect:function(t){let{rect:e,offsetParent:n,strategy:o}=t;const i=l(n),c=m(n);if(n===c)return e;let f={scrollLeft:0,scrollTop:0};const s={x:0,y:0};if((i||!i&&"fixed"!==o)&&(("body"!==r(n)||u(c))&&(f=y(n)),l(n))){const t=p(n,!0);s.x=t.x+n.clientLeft,s.y=t.y+n.clientTop}return{...e,x:e.x-f.scrollLeft+s.x,y:e.y-f.scrollTop+s.y}},isElement:c,getDimensions:O,getOffsetParent:L,getDocumentElement:m,getElementRects:t=>{let{reference:e,floating:n,strategy:o}=t;return{reference:b(e,L(n),o),floating:{...O(n),x:0,y:0}}},getClientRects:t=>Array.from(t.getClientRects()),isRTL:t=>"rtl"===i(t).direction};Object.defineProperty(t,"arrow",{enumerable:!0,get:function(){return e.arrow}}),Object.defineProperty(t,"autoPlacement",{enumerable:!0,get:function(){return e.autoPlacement}}),Object.defineProperty(t,"detectOverflow",{enumerable:!0,get:function(){return e.detectOverflow}}),Object.defineProperty(t,"flip",{enumerable:!0,get:function(){return e.flip}}),Object.defineProperty(t,"hide",{enumerable:!0,get:function(){return e.hide}}),Object.defineProperty(t,"inline",{enumerable:!0,get:function(){return e.inline}}),Object.defineProperty(t,"limitShift",{enumerable:!0,get:function(){return e.limitShift}}),Object.defineProperty(t,"offset",{enumerable:!0,get:function(){return e.offset}}),Object.defineProperty(t,"shift",{enumerable:!0,get:function(){return e.shift}}),Object.defineProperty(t,"size",{enumerable:!0,get:function(){return e.size}}),t.autoUpdate=function(t,e,n,o){void 0===o&&(o={});const{ancestorScroll:i=!0,ancestorResize:r=!0,elementResize:l=!0,animationFrame:f=!1}=o;let u=!1;const s=i&&!f,d=r&&!f,h=l&&!f,a=s||d?[...c(t)?R(t):[],...R(e)]:[];a.forEach((t=>{s&&t.addEventListener("scroll",n,{passive:!0}),d&&t.addEventListener("resize",n)}));let g,m=null;h&&(m=new ResizeObserver(n),c(t)&&m.observe(t),m.observe(e));let y=f?p(t):null;return f&&function e(){if(u)return;const o=p(t);!y||o.x===y.x&&o.y===y.y&&o.width===y.width&&o.height===y.height||n();y=o,g=requestAnimationFrame(e)}(),()=>{var t;u=!0,a.forEach((t=>{s&&t.removeEventListener("scroll",n),d&&t.removeEventListener("resize",n)})),null==(t=m)||t.disconnect(),m=null,f&&cancelAnimationFrame(g)}},t.computePosition=(t,n,o)=>e.computePosition(t,n,{platform:W,...o}),t.getOverflowAncestors=R,Object.defineProperty(t,"__esModule",{value:!0})}));
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ export declare class Wrapper extends React.Component<{}, {}> {
3
+ element: Element | null;
4
+ componentDidMount(): void;
5
+ componentDidUpdate(): void;
6
+ render(): React.ReactNode;
7
+ }
@@ -0,0 +1,28 @@
1
+ import React from 'react';
2
+ import { findDOMNode } from 'react-dom';
3
+ export class Wrapper extends React.Component {
4
+ constructor() {
5
+ super(...arguments);
6
+ this.element = null;
7
+ }
8
+
9
+ componentDidMount() {
10
+ this.componentDidUpdate();
11
+ }
12
+
13
+ componentDidUpdate() {
14
+ // eslint-disable-next-line
15
+ const node = findDOMNode(this);
16
+
17
+ if (node instanceof Element) {
18
+ this.element = node;
19
+ } else {
20
+ this.element = null;
21
+ }
22
+ }
23
+
24
+ render() {
25
+ return React.Children.only(this.props.children);
26
+ }
27
+
28
+ }