antd-mobile 5.5.1 → 5.7.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 (289) 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/calendar/calendar.d.ts +4 -3
  6. package/2x/cjs/components/calendar/calendar.js +67 -56
  7. package/2x/cjs/components/calendar/convert.d.ts +2 -0
  8. package/2x/cjs/components/calendar/convert.js +22 -0
  9. package/2x/cjs/components/cascader-view/cascader-view.js +7 -0
  10. package/2x/cjs/components/checkbox/checkbox.js +4 -20
  11. package/2x/cjs/components/checkbox/native-input.d.ts +10 -0
  12. package/2x/cjs/components/checkbox/native-input.js +42 -0
  13. package/2x/cjs/components/dialog/index.d.ts +1 -1
  14. package/2x/cjs/components/dialog/show.d.ts +2 -4
  15. package/2x/cjs/components/dialog/show.js +9 -47
  16. package/2x/cjs/components/dot-loading/dot-loading.js +1 -2
  17. package/2x/cjs/components/empty/empty-icon.d.ts +3 -0
  18. package/2x/cjs/components/empty/empty-icon.js +37 -0
  19. package/2x/cjs/components/empty/empty.js +27 -15
  20. package/2x/cjs/components/error-block/error-block.css +1 -0
  21. package/2x/cjs/components/error-block/error-block.js +5 -8
  22. package/2x/cjs/components/error-block/images/busy.d.ts +1 -0
  23. package/2x/cjs/components/error-block/images/busy.js +102 -0
  24. package/2x/cjs/components/error-block/images/default.d.ts +1 -0
  25. package/2x/cjs/components/error-block/images/default.js +178 -0
  26. package/2x/cjs/components/error-block/images/disconnected.d.ts +1 -0
  27. package/2x/cjs/components/error-block/images/disconnected.js +135 -0
  28. package/2x/cjs/components/error-block/images/empty.d.ts +1 -0
  29. package/2x/cjs/components/error-block/images/empty.js +131 -0
  30. package/2x/cjs/components/error-block/images/index.d.ts +2 -0
  31. package/2x/cjs/components/error-block/images/index.js +22 -0
  32. package/2x/cjs/components/floating-bubble/floating-bubble.css +2 -1
  33. package/2x/cjs/components/floating-bubble/floating-bubble.d.ts +1 -1
  34. package/2x/cjs/components/form/form-item.d.ts +1 -1
  35. package/2x/cjs/components/form/form-item.js +4 -1
  36. package/2x/cjs/components/image-viewer/index.d.ts +1 -1
  37. package/2x/cjs/components/image-viewer/methods.d.ts +3 -7
  38. package/2x/cjs/components/image-viewer/methods.js +13 -79
  39. package/2x/cjs/components/modal/index.d.ts +1 -1
  40. package/2x/cjs/components/modal/show.d.ts +2 -4
  41. package/2x/cjs/components/modal/show.js +9 -47
  42. package/2x/cjs/components/picker/picker.js +6 -9
  43. package/2x/cjs/components/picker-view/columns-extend.d.ts +3 -0
  44. package/2x/cjs/components/picker-view/columns-extend.js +45 -0
  45. package/2x/cjs/components/picker-view/picker-view.d.ts +1 -0
  46. package/2x/cjs/components/picker-view/picker-view.js +14 -16
  47. package/2x/cjs/components/popover/popover.css +1 -0
  48. package/2x/cjs/components/popover/popover.js +1 -0
  49. package/2x/cjs/components/popover/temp-floating-ui.min.js +1 -430
  50. package/2x/cjs/components/radio/radio.js +4 -20
  51. package/2x/cjs/components/search-bar/search-bar.d.ts +1 -1
  52. package/2x/cjs/components/tab-bar/tab-bar.d.ts +1 -1
  53. package/2x/cjs/components/tab-bar/tab-bar.js +1 -1
  54. package/2x/cjs/components/tree-select/tree-select.js +2 -2
  55. package/2x/cjs/utils/render-imperatively.d.ts +10 -0
  56. package/2x/cjs/utils/render-imperatively.js +68 -0
  57. package/2x/cjs/utils/with-cache.d.ts +1 -0
  58. package/2x/cjs/utils/with-cache.js +17 -0
  59. package/2x/es/components/action-sheet/action-sheet.d.ts +5 -5
  60. package/2x/es/components/action-sheet/action-sheet.js +5 -41
  61. package/2x/es/components/action-sheet/index.d.ts +1 -1
  62. package/2x/es/components/badge/badge.js +1 -1
  63. package/2x/es/components/calendar/calendar.d.ts +4 -3
  64. package/2x/es/components/calendar/calendar.js +67 -58
  65. package/2x/es/components/calendar/convert.d.ts +2 -0
  66. package/2x/es/components/calendar/convert.js +15 -0
  67. package/2x/es/components/cascader-view/cascader-view.js +7 -0
  68. package/2x/es/components/checkbox/checkbox.js +4 -21
  69. package/2x/es/components/checkbox/native-input.d.ts +10 -0
  70. package/2x/es/components/checkbox/native-input.js +28 -0
  71. package/2x/es/components/dialog/index.d.ts +1 -1
  72. package/2x/es/components/dialog/show.d.ts +2 -4
  73. package/2x/es/components/dialog/show.js +8 -44
  74. package/2x/es/components/dot-loading/dot-loading.js +1 -2
  75. package/2x/es/components/empty/empty-icon.d.ts +3 -0
  76. package/2x/es/components/empty/empty-icon.js +24 -0
  77. package/2x/es/components/empty/empty.js +27 -14
  78. package/2x/es/components/error-block/error-block.css +1 -0
  79. package/2x/es/components/error-block/error-block.js +4 -6
  80. package/2x/es/components/error-block/images/busy.d.ts +1 -0
  81. package/2x/es/components/error-block/images/busy.js +90 -0
  82. package/2x/es/components/error-block/images/default.d.ts +1 -0
  83. package/2x/es/components/error-block/images/default.js +166 -0
  84. package/2x/es/components/error-block/images/disconnected.d.ts +1 -0
  85. package/2x/es/components/error-block/images/disconnected.js +123 -0
  86. package/2x/es/components/error-block/images/empty.d.ts +1 -0
  87. package/2x/es/components/error-block/images/empty.js +119 -0
  88. package/2x/es/components/error-block/images/index.d.ts +2 -0
  89. package/2x/es/components/error-block/images/index.js +10 -0
  90. package/2x/es/components/floating-bubble/floating-bubble.css +2 -1
  91. package/2x/es/components/floating-bubble/floating-bubble.d.ts +1 -1
  92. package/2x/es/components/form/form-item.d.ts +1 -1
  93. package/2x/es/components/form/form-item.js +4 -1
  94. package/2x/es/components/image-viewer/index.d.ts +1 -1
  95. package/2x/es/components/image-viewer/methods.d.ts +3 -7
  96. package/2x/es/components/image-viewer/methods.js +12 -75
  97. package/2x/es/components/modal/index.d.ts +1 -1
  98. package/2x/es/components/modal/show.d.ts +2 -4
  99. package/2x/es/components/modal/show.js +8 -44
  100. package/2x/es/components/picker/picker.js +6 -8
  101. package/2x/es/components/picker-view/columns-extend.d.ts +3 -0
  102. package/2x/es/components/picker-view/columns-extend.js +34 -0
  103. package/2x/es/components/picker-view/picker-view.d.ts +1 -0
  104. package/2x/es/components/picker-view/picker-view.js +14 -15
  105. package/2x/es/components/popover/popover.css +1 -0
  106. package/2x/es/components/popover/popover.js +1 -0
  107. package/2x/es/components/popover/temp-floating-ui.min.js +1 -430
  108. package/2x/es/components/radio/radio.js +4 -21
  109. package/2x/es/components/search-bar/search-bar.d.ts +1 -1
  110. package/2x/es/components/tab-bar/tab-bar.d.ts +1 -1
  111. package/2x/es/components/tab-bar/tab-bar.js +1 -1
  112. package/2x/es/components/tree-select/tree-select.js +2 -2
  113. package/2x/es/utils/render-imperatively.d.ts +10 -0
  114. package/2x/es/utils/render-imperatively.js +53 -0
  115. package/2x/es/utils/with-cache.d.ts +1 -0
  116. package/2x/es/utils/with-cache.js +10 -0
  117. package/2x/package.json +2 -3
  118. package/cjs/components/action-sheet/action-sheet.d.ts +5 -5
  119. package/cjs/components/action-sheet/action-sheet.js +6 -46
  120. package/cjs/components/action-sheet/index.d.ts +1 -1
  121. package/cjs/components/badge/badge.js +1 -1
  122. package/cjs/components/calendar/calendar.d.ts +4 -3
  123. package/cjs/components/calendar/calendar.js +67 -56
  124. package/cjs/components/calendar/convert.d.ts +2 -0
  125. package/cjs/components/calendar/convert.js +22 -0
  126. package/cjs/components/cascader-view/cascader-view.js +7 -0
  127. package/cjs/components/checkbox/checkbox.js +4 -20
  128. package/cjs/components/checkbox/native-input.d.ts +10 -0
  129. package/cjs/components/checkbox/native-input.js +42 -0
  130. package/cjs/components/dialog/index.d.ts +1 -1
  131. package/cjs/components/dialog/show.d.ts +2 -4
  132. package/cjs/components/dialog/show.js +9 -47
  133. package/cjs/components/dot-loading/dot-loading.js +1 -2
  134. package/cjs/components/empty/empty-icon.d.ts +3 -0
  135. package/cjs/components/empty/empty-icon.js +37 -0
  136. package/cjs/components/empty/empty.js +27 -15
  137. package/cjs/components/error-block/error-block.css +1 -0
  138. package/cjs/components/error-block/error-block.js +5 -8
  139. package/cjs/components/error-block/images/busy.d.ts +1 -0
  140. package/cjs/components/error-block/images/busy.js +102 -0
  141. package/cjs/components/error-block/images/default.d.ts +1 -0
  142. package/cjs/components/error-block/images/default.js +178 -0
  143. package/cjs/components/error-block/images/disconnected.d.ts +1 -0
  144. package/cjs/components/error-block/images/disconnected.js +135 -0
  145. package/cjs/components/error-block/images/empty.d.ts +1 -0
  146. package/cjs/components/error-block/images/empty.js +131 -0
  147. package/cjs/components/error-block/images/index.d.ts +2 -0
  148. package/cjs/components/error-block/images/index.js +22 -0
  149. package/cjs/components/floating-bubble/floating-bubble.css +2 -1
  150. package/cjs/components/floating-bubble/floating-bubble.d.ts +1 -1
  151. package/cjs/components/form/form-item.d.ts +1 -1
  152. package/cjs/components/form/form-item.js +4 -1
  153. package/cjs/components/image-viewer/index.d.ts +1 -1
  154. package/cjs/components/image-viewer/methods.d.ts +3 -7
  155. package/cjs/components/image-viewer/methods.js +13 -79
  156. package/cjs/components/modal/index.d.ts +1 -1
  157. package/cjs/components/modal/show.d.ts +2 -4
  158. package/cjs/components/modal/show.js +9 -47
  159. package/cjs/components/picker/picker.js +6 -9
  160. package/cjs/components/picker-view/columns-extend.d.ts +3 -0
  161. package/cjs/components/picker-view/columns-extend.js +45 -0
  162. package/cjs/components/picker-view/picker-view.d.ts +1 -0
  163. package/cjs/components/picker-view/picker-view.js +14 -16
  164. package/cjs/components/popover/popover.css +1 -0
  165. package/cjs/components/popover/popover.js +1 -0
  166. package/cjs/components/popover/temp-floating-ui.min.js +1 -430
  167. package/cjs/components/radio/radio.js +4 -20
  168. package/cjs/components/search-bar/search-bar.d.ts +1 -1
  169. package/cjs/components/tab-bar/tab-bar.d.ts +1 -1
  170. package/cjs/components/tab-bar/tab-bar.js +1 -1
  171. package/cjs/components/tree-select/tree-select.js +2 -2
  172. package/cjs/utils/render-imperatively.d.ts +10 -0
  173. package/cjs/utils/render-imperatively.js +68 -0
  174. package/cjs/utils/with-cache.d.ts +1 -0
  175. package/cjs/utils/with-cache.js +17 -0
  176. package/es/components/action-sheet/action-sheet.d.ts +5 -5
  177. package/es/components/action-sheet/action-sheet.js +5 -41
  178. package/es/components/action-sheet/index.d.ts +1 -1
  179. package/es/components/badge/badge.js +1 -1
  180. package/es/components/calendar/calendar.d.ts +4 -3
  181. package/es/components/calendar/calendar.js +67 -58
  182. package/es/components/calendar/convert.d.ts +2 -0
  183. package/es/components/calendar/convert.js +15 -0
  184. package/es/components/cascader-view/cascader-view.js +7 -0
  185. package/es/components/checkbox/checkbox.js +4 -21
  186. package/es/components/checkbox/native-input.d.ts +10 -0
  187. package/es/components/checkbox/native-input.js +28 -0
  188. package/es/components/dialog/index.d.ts +1 -1
  189. package/es/components/dialog/show.d.ts +2 -4
  190. package/es/components/dialog/show.js +8 -44
  191. package/es/components/dot-loading/dot-loading.js +1 -2
  192. package/es/components/empty/empty-icon.d.ts +3 -0
  193. package/es/components/empty/empty-icon.js +24 -0
  194. package/es/components/empty/empty.js +27 -14
  195. package/es/components/error-block/error-block.css +1 -0
  196. package/es/components/error-block/error-block.js +4 -6
  197. package/es/components/error-block/images/busy.d.ts +1 -0
  198. package/es/components/error-block/images/busy.js +90 -0
  199. package/es/components/error-block/images/default.d.ts +1 -0
  200. package/es/components/error-block/images/default.js +166 -0
  201. package/es/components/error-block/images/disconnected.d.ts +1 -0
  202. package/es/components/error-block/images/disconnected.js +123 -0
  203. package/es/components/error-block/images/empty.d.ts +1 -0
  204. package/es/components/error-block/images/empty.js +119 -0
  205. package/es/components/error-block/images/index.d.ts +2 -0
  206. package/es/components/error-block/images/index.js +10 -0
  207. package/es/components/floating-bubble/floating-bubble.css +2 -1
  208. package/es/components/floating-bubble/floating-bubble.d.ts +1 -1
  209. package/es/components/form/form-item.d.ts +1 -1
  210. package/es/components/form/form-item.js +4 -1
  211. package/es/components/image-viewer/index.d.ts +1 -1
  212. package/es/components/image-viewer/methods.d.ts +3 -7
  213. package/es/components/image-viewer/methods.js +12 -75
  214. package/es/components/modal/index.d.ts +1 -1
  215. package/es/components/modal/show.d.ts +2 -4
  216. package/es/components/modal/show.js +8 -44
  217. package/es/components/picker/picker.js +6 -8
  218. package/es/components/picker-view/columns-extend.d.ts +3 -0
  219. package/es/components/picker-view/columns-extend.js +34 -0
  220. package/es/components/picker-view/picker-view.d.ts +1 -0
  221. package/es/components/picker-view/picker-view.js +14 -15
  222. package/es/components/popover/popover.css +1 -0
  223. package/es/components/popover/popover.js +1 -0
  224. package/es/components/popover/temp-floating-ui.min.js +1 -430
  225. package/es/components/radio/radio.js +4 -21
  226. package/es/components/search-bar/search-bar.d.ts +1 -1
  227. package/es/components/tab-bar/tab-bar.d.ts +1 -1
  228. package/es/components/tab-bar/tab-bar.js +1 -1
  229. package/es/components/tree-select/tree-select.js +2 -2
  230. package/es/utils/render-imperatively.d.ts +10 -0
  231. package/es/utils/render-imperatively.js +53 -0
  232. package/es/utils/with-cache.d.ts +1 -0
  233. package/es/utils/with-cache.js +10 -0
  234. package/package.json +2 -3
  235. package/umd/antd-mobile.js +1 -1
  236. package/2x/assets/busy.svg +0 -42
  237. package/2x/assets/default.svg +0 -53
  238. package/2x/assets/disconnected.svg +0 -60
  239. package/2x/assets/empty-icon.svg +0 -18
  240. package/2x/assets/empty.svg +0 -52
  241. package/2x/cjs/assets/busy.svg +0 -42
  242. package/2x/cjs/assets/default.svg +0 -53
  243. package/2x/cjs/assets/disconnected.svg +0 -60
  244. package/2x/cjs/assets/empty-icon.svg +0 -18
  245. package/2x/cjs/assets/empty.svg +0 -52
  246. package/2x/cjs/components/error-block/error.d.ts +0 -1
  247. package/2x/cjs/components/error-block/error.js +0 -24
  248. package/2x/cjs/components/picker-view/use-columns.d.ts +0 -2
  249. package/2x/cjs/components/picker-view/use-columns.js +0 -18
  250. package/2x/cjs/components/picker-view/use-picker-value-extend.d.ts +0 -2
  251. package/2x/cjs/components/picker-view/use-picker-value-extend.js +0 -37
  252. package/2x/es/assets/busy.svg +0 -42
  253. package/2x/es/assets/default.svg +0 -53
  254. package/2x/es/assets/disconnected.svg +0 -60
  255. package/2x/es/assets/empty-icon.svg +0 -18
  256. package/2x/es/assets/empty.svg +0 -52
  257. package/2x/es/components/error-block/error.d.ts +0 -1
  258. package/2x/es/components/error-block/error.js +0 -10
  259. package/2x/es/components/picker-view/use-columns.d.ts +0 -2
  260. package/2x/es/components/picker-view/use-columns.js +0 -10
  261. package/2x/es/components/picker-view/use-picker-value-extend.d.ts +0 -2
  262. package/2x/es/components/picker-view/use-picker-value-extend.js +0 -26
  263. package/assets/busy.svg +0 -42
  264. package/assets/default.svg +0 -53
  265. package/assets/disconnected.svg +0 -60
  266. package/assets/empty-icon.svg +0 -18
  267. package/assets/empty.svg +0 -52
  268. package/cjs/assets/busy.svg +0 -42
  269. package/cjs/assets/default.svg +0 -53
  270. package/cjs/assets/disconnected.svg +0 -60
  271. package/cjs/assets/empty-icon.svg +0 -18
  272. package/cjs/assets/empty.svg +0 -52
  273. package/cjs/components/error-block/error.d.ts +0 -1
  274. package/cjs/components/error-block/error.js +0 -24
  275. package/cjs/components/picker-view/use-columns.d.ts +0 -2
  276. package/cjs/components/picker-view/use-columns.js +0 -18
  277. package/cjs/components/picker-view/use-picker-value-extend.d.ts +0 -2
  278. package/cjs/components/picker-view/use-picker-value-extend.js +0 -37
  279. package/es/assets/busy.svg +0 -42
  280. package/es/assets/default.svg +0 -53
  281. package/es/assets/disconnected.svg +0 -60
  282. package/es/assets/empty-icon.svg +0 -18
  283. package/es/assets/empty.svg +0 -52
  284. package/es/components/error-block/error.d.ts +0 -1
  285. package/es/components/error-block/error.js +0 -10
  286. package/es/components/picker-view/use-columns.d.ts +0 -2
  287. package/es/components/picker-view/use-columns.js +0 -10
  288. package/es/components/picker-view/use-picker-value-extend.d.ts +0 -2
  289. package/es/components/picker-view/use-picker-value-extend.js +0 -26
@@ -1,93 +1,30 @@
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 { ImageViewer, MultiImageViewer } from './image-viewer';
4
- import { useUnmountedRef } from 'ahooks';
3
+ import { renderImperatively } from '../../utils/render-imperatively';
5
4
  const handlerSet = new Set();
6
5
  export function showImageViewer(props) {
7
6
  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: () => {
7
+ const handler = renderImperatively(React.createElement(ImageViewer, Object.assign({}, props, {
8
+ afterClose: () => {
42
9
  var _a;
43
10
 
44
- (_a = ref.current) === null || _a === void 0 ? void 0 : _a.close();
11
+ handlerSet.delete(handler);
12
+ (_a = props.afterClose) === null || _a === void 0 ? void 0 : _a.call(props);
45
13
  }
46
- };
14
+ })));
47
15
  handlerSet.add(handler);
48
16
  return handler;
49
17
  }
50
18
  export function showMultiImageViewer(props) {
51
19
  clearImageViewer();
52
- const Wrapper = forwardRef((_, ref) => {
53
- const [visible, setVisible] = useState(false);
54
- useEffect(() => {
55
- setVisible(true);
56
- }, []);
57
- const isUnmountedRef = useUnmountedRef();
58
- useImperativeHandle(ref, () => ({
59
- close: () => {
60
- if (isUnmountedRef.current) return;
61
- setVisible(false);
62
- }
63
- }));
64
- return React.createElement(MultiImageViewer, Object.assign({}, props, {
65
- visible: visible,
66
- onClose: () => {
67
- var _a;
68
-
69
- (_a = props.onClose) === null || _a === void 0 ? void 0 : _a.call(props);
70
- setVisible(false);
71
- },
72
- afterClose: () => {
73
- var _a;
74
-
75
- (_a = props.afterClose) === null || _a === void 0 ? void 0 : _a.call(props);
76
- unmount();
77
- }
78
- }));
79
- });
80
- const ref = createRef();
81
- const unmount = renderToBody(React.createElement(Wrapper, {
82
- ref: ref
83
- }));
84
- const handler = {
85
- close: () => {
20
+ const handler = renderImperatively(React.createElement(MultiImageViewer, Object.assign({}, props, {
21
+ afterClose: () => {
86
22
  var _a;
87
23
 
88
- (_a = ref.current) === null || _a === void 0 ? void 0 : _a.close();
24
+ handlerSet.delete(handler);
25
+ (_a = props.afterClose) === null || _a === void 0 ? void 0 : _a.call(props);
89
26
  }
90
- };
27
+ })));
91
28
  handlerSet.add(handler);
92
29
  return handler;
93
30
  }
@@ -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
  }
@@ -4,9 +4,8 @@ import { mergeProps } from '../../utils/with-default-props';
4
4
  import { withNativeProps } from '../../utils/native-props';
5
5
  import { usePropsValue } from '../../utils/use-props-value';
6
6
  import PickerView from '../picker-view';
7
- import { useColumns } from '../picker-view/use-columns';
7
+ import { generateColumnsExtend, useColumnsExtend } from '../picker-view/columns-extend';
8
8
  import { useConfig } from '../config-provider';
9
- import { usePickerValueExtend } from '../picker-view/use-picker-value-extend';
10
9
  import { useMemoizedFn } from 'ahooks';
11
10
  import SafeArea from '../safe-area';
12
11
  const classPrefix = `adm-picker`;
@@ -28,12 +27,11 @@ export const Picker = memo(p => {
28
27
  onChange: val => {
29
28
  var _a;
30
29
 
31
- (_a = props.onConfirm) === null || _a === void 0 ? void 0 : _a.call(props, val, generateValueExtend(val));
30
+ const extend = generateColumnsExtend(props.columns, val);
31
+ (_a = props.onConfirm) === null || _a === void 0 ? void 0 : _a.call(props, val, extend);
32
32
  }
33
- })); // TODO: columns generated twice in Picker and PickerView, which can be improved
34
-
35
- const columns = useColumns(props.columns, value);
36
- const generateValueExtend = usePickerValueExtend(columns);
33
+ }));
34
+ const extend = useColumnsExtend(props.columns, value);
37
35
  const [innerValue, setInnerValue] = useState(value);
38
36
  useEffect(() => {
39
37
  if (innerValue !== value) {
@@ -104,6 +102,6 @@ export const Picker = memo(p => {
104
102
  }, pickerElement, React.createElement(SafeArea, {
105
103
  position: 'bottom'
106
104
  }));
107
- return React.createElement(React.Fragment, null, popupElement, (_a = props.children) === null || _a === void 0 ? void 0 : _a.call(props, generateValueExtend(value).items));
105
+ return React.createElement(React.Fragment, null, popupElement, (_a = props.children) === null || _a === void 0 ? void 0 : _a.call(props, extend.items));
108
106
  });
109
107
  Picker.displayName = 'Picker';
@@ -0,0 +1,3 @@
1
+ import type { PickerViewProps, PickerValue, PickerValueExtend } from './picker-view';
2
+ export declare function generateColumnsExtend(rawColumns: PickerViewProps['columns'], val: PickerValue[]): PickerValueExtend;
3
+ export declare function useColumnsExtend(rawColumns: PickerViewProps['columns'], value: PickerValue[]): PickerValueExtend;
@@ -0,0 +1,34 @@
1
+ import { useMemo } from 'react';
2
+ import { withCache } from '../../utils/with-cache';
3
+ export function generateColumnsExtend(rawColumns, val) {
4
+ const columns = withCache(() => {
5
+ const c = typeof rawColumns === 'function' ? rawColumns(val) : rawColumns;
6
+ return c.map(column => column.map(item => typeof item === 'string' ? {
7
+ label: item,
8
+ value: item
9
+ } : item));
10
+ });
11
+ const items = withCache(() => {
12
+ return val.map((v, index) => {
13
+ var _a;
14
+
15
+ const column = columns()[index];
16
+ if (!column) return null;
17
+ return (_a = column.find(item => item.value === v)) !== null && _a !== void 0 ? _a : null;
18
+ });
19
+ });
20
+ const extend = {
21
+ get columns() {
22
+ return columns();
23
+ },
24
+
25
+ get items() {
26
+ return items();
27
+ }
28
+
29
+ };
30
+ return extend;
31
+ }
32
+ export function useColumnsExtend(rawColumns, value) {
33
+ return useMemo(() => generateColumnsExtend(rawColumns, value), [rawColumns, value]);
34
+ }
@@ -2,6 +2,7 @@ import React, { ReactNode } from 'react';
2
2
  import { NativeProps } from '../../utils/native-props';
3
3
  export declare type PickerValue = string | null;
4
4
  export declare type PickerValueExtend = {
5
+ columns: PickerColumnItem[][];
5
6
  items: (PickerColumnItem | null)[];
6
7
  };
7
8
  export declare type PickerColumnItem = {
@@ -1,9 +1,8 @@
1
1
  import React, { memo, useCallback, useEffect, useState } from 'react';
2
2
  import { mergeProps } from '../../utils/with-default-props';
3
3
  import { Wheel } from './wheel';
4
- import { useColumns } from './use-columns';
4
+ import { useColumnsExtend } from './columns-extend';
5
5
  import { withNativeProps } from '../../utils/native-props';
6
- import { usePickerValueExtend } from './use-picker-value-extend';
7
6
  import { useDebounceEffect } from 'ahooks';
8
7
  const classPrefix = `adm-picker-view`;
9
8
  const defaultProps = {
@@ -11,17 +10,7 @@ const defaultProps = {
11
10
  };
12
11
  export const PickerView = memo(p => {
13
12
  const props = mergeProps(defaultProps, p);
14
- const [innerValue, setInnerValue] = useState(props.value === undefined ? props.defaultValue : props.value);
15
- useDebounceEffect(() => {
16
- var _a;
17
-
18
- if (props.value === innerValue) return;
19
- (_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, innerValue, generateValueExtend(innerValue));
20
- }, [innerValue], {
21
- wait: 0,
22
- leading: false,
23
- trailing: true
24
- }); // Sync `value` to `innerValue`
13
+ const [innerValue, setInnerValue] = useState(props.value === undefined ? props.defaultValue : props.value); // Sync `value` to `innerValue`
25
14
 
26
15
  useEffect(() => {
27
16
  if (props.value === undefined) return; // Uncontrolled mode
@@ -40,8 +29,18 @@ export const PickerView = memo(p => {
40
29
  window.clearTimeout(timeout);
41
30
  };
42
31
  }, [props.value, innerValue]);
43
- const columns = useColumns(props.columns, innerValue);
44
- const generateValueExtend = usePickerValueExtend(columns);
32
+ const extend = useColumnsExtend(props.columns, innerValue);
33
+ const columns = extend.columns;
34
+ useDebounceEffect(() => {
35
+ var _a;
36
+
37
+ if (props.value === innerValue) return;
38
+ (_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, innerValue, extend);
39
+ }, [innerValue], {
40
+ wait: 0,
41
+ leading: false,
42
+ trailing: true
43
+ });
45
44
  const handleSelect = useCallback((val, index) => {
46
45
  setInnerValue(prev => {
47
46
  const next = [...prev];
@@ -41,6 +41,7 @@
41
41
  box-shadow: 0 0 60px 0 rgba(51, 51, 51, 0.2);
42
42
  font-size: 30px;
43
43
  min-width: 64px;
44
+ max-width: calc(100vw - 48px);
44
45
  overflow-y: hidden;
45
46
  }
46
47
 
@@ -121,6 +121,7 @@ export const Popover = forwardRef((p, ref) => {
121
121
  if (!props.trigger) return;
122
122
 
123
123
  function handleClick() {
124
+ console.log('handleClick');
124
125
  setVisible(v => !v);
125
126
  }
126
127