antd-mobile 5.6.0 → 5.7.1

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 (197) hide show
  1. package/2x/cjs/components/calendar/calendar.d.ts +4 -3
  2. package/2x/cjs/components/calendar/calendar.js +67 -56
  3. package/2x/cjs/components/calendar/convert.d.ts +2 -0
  4. package/2x/cjs/components/calendar/convert.js +22 -0
  5. package/2x/cjs/components/collapse/collapse.js +7 -0
  6. package/2x/cjs/components/empty/empty-icon.d.ts +3 -0
  7. package/2x/cjs/components/empty/empty-icon.js +37 -0
  8. package/2x/cjs/components/empty/empty.js +27 -15
  9. package/2x/cjs/components/error-block/error-block.css +1 -0
  10. package/2x/cjs/components/error-block/error-block.js +3 -8
  11. package/2x/cjs/components/error-block/images/busy.d.ts +1 -0
  12. package/2x/cjs/components/error-block/images/busy.js +102 -0
  13. package/2x/cjs/components/error-block/images/default.d.ts +1 -0
  14. package/2x/cjs/components/error-block/images/default.js +178 -0
  15. package/2x/cjs/components/error-block/images/disconnected.d.ts +1 -0
  16. package/2x/cjs/components/error-block/images/disconnected.js +135 -0
  17. package/2x/cjs/components/error-block/images/empty.d.ts +1 -0
  18. package/2x/cjs/components/error-block/images/empty.js +131 -0
  19. package/2x/cjs/components/error-block/images/index.d.ts +2 -0
  20. package/2x/cjs/components/error-block/images/index.js +22 -0
  21. package/2x/cjs/components/form/form-item.d.ts +1 -1
  22. package/2x/cjs/components/form/form-item.js +4 -1
  23. package/2x/cjs/components/image-viewer/methods.d.ts +1 -4
  24. package/2x/cjs/components/image-viewer/methods.js +7 -58
  25. package/2x/cjs/components/picker/picker.js +6 -9
  26. package/2x/cjs/components/picker-view/columns-extend.d.ts +3 -0
  27. package/2x/cjs/components/picker-view/columns-extend.js +45 -0
  28. package/2x/cjs/components/picker-view/picker-view.d.ts +1 -0
  29. package/2x/cjs/components/picker-view/picker-view.js +14 -16
  30. package/2x/cjs/components/popover/popover.css +1 -0
  31. package/2x/cjs/components/result/result.d.ts +2 -2
  32. package/2x/cjs/components/virtual-input/virtual-input.js +25 -14
  33. package/2x/cjs/utils/render-imperatively.js +17 -7
  34. package/2x/cjs/utils/with-cache.d.ts +1 -0
  35. package/2x/cjs/utils/with-cache.js +17 -0
  36. package/2x/es/components/calendar/calendar.d.ts +4 -3
  37. package/2x/es/components/calendar/calendar.js +67 -58
  38. package/2x/es/components/calendar/convert.d.ts +2 -0
  39. package/2x/es/components/calendar/convert.js +15 -0
  40. package/2x/es/components/collapse/collapse.js +7 -0
  41. package/2x/es/components/empty/empty-icon.d.ts +3 -0
  42. package/2x/es/components/empty/empty-icon.js +24 -0
  43. package/2x/es/components/empty/empty.js +27 -14
  44. package/2x/es/components/error-block/error-block.css +1 -0
  45. package/2x/es/components/error-block/error-block.js +2 -6
  46. package/2x/es/components/error-block/images/busy.d.ts +1 -0
  47. package/2x/es/components/error-block/images/busy.js +90 -0
  48. package/2x/es/components/error-block/images/default.d.ts +1 -0
  49. package/2x/es/components/error-block/images/default.js +166 -0
  50. package/2x/es/components/error-block/images/disconnected.d.ts +1 -0
  51. package/2x/es/components/error-block/images/disconnected.js +123 -0
  52. package/2x/es/components/error-block/images/empty.d.ts +1 -0
  53. package/2x/es/components/error-block/images/empty.js +119 -0
  54. package/2x/es/components/error-block/images/index.d.ts +2 -0
  55. package/2x/es/components/error-block/images/index.js +10 -0
  56. package/2x/es/components/form/form-item.d.ts +1 -1
  57. package/2x/es/components/form/form-item.js +4 -1
  58. package/2x/es/components/image-viewer/methods.d.ts +1 -4
  59. package/2x/es/components/image-viewer/methods.js +6 -50
  60. package/2x/es/components/picker/picker.js +6 -8
  61. package/2x/es/components/picker-view/columns-extend.d.ts +3 -0
  62. package/2x/es/components/picker-view/columns-extend.js +34 -0
  63. package/2x/es/components/picker-view/picker-view.d.ts +1 -0
  64. package/2x/es/components/picker-view/picker-view.js +14 -15
  65. package/2x/es/components/popover/popover.css +1 -0
  66. package/2x/es/components/result/result.d.ts +2 -2
  67. package/2x/es/components/virtual-input/virtual-input.js +23 -14
  68. package/2x/es/utils/render-imperatively.js +16 -8
  69. package/2x/es/utils/with-cache.d.ts +1 -0
  70. package/2x/es/utils/with-cache.js +10 -0
  71. package/2x/package.json +1 -1
  72. package/cjs/components/calendar/calendar.d.ts +4 -3
  73. package/cjs/components/calendar/calendar.js +67 -56
  74. package/cjs/components/calendar/convert.d.ts +2 -0
  75. package/cjs/components/calendar/convert.js +22 -0
  76. package/cjs/components/collapse/collapse.js +7 -0
  77. package/cjs/components/empty/empty-icon.d.ts +3 -0
  78. package/cjs/components/empty/empty-icon.js +37 -0
  79. package/cjs/components/empty/empty.js +27 -15
  80. package/cjs/components/error-block/error-block.css +1 -0
  81. package/cjs/components/error-block/error-block.js +3 -8
  82. package/cjs/components/error-block/images/busy.d.ts +1 -0
  83. package/cjs/components/error-block/images/busy.js +102 -0
  84. package/cjs/components/error-block/images/default.d.ts +1 -0
  85. package/cjs/components/error-block/images/default.js +178 -0
  86. package/cjs/components/error-block/images/disconnected.d.ts +1 -0
  87. package/cjs/components/error-block/images/disconnected.js +135 -0
  88. package/cjs/components/error-block/images/empty.d.ts +1 -0
  89. package/cjs/components/error-block/images/empty.js +131 -0
  90. package/cjs/components/error-block/images/index.d.ts +2 -0
  91. package/cjs/components/error-block/images/index.js +22 -0
  92. package/cjs/components/form/form-item.d.ts +1 -1
  93. package/cjs/components/form/form-item.js +4 -1
  94. package/cjs/components/image-viewer/methods.d.ts +1 -4
  95. package/cjs/components/image-viewer/methods.js +7 -58
  96. package/cjs/components/picker/picker.js +6 -9
  97. package/cjs/components/picker-view/columns-extend.d.ts +3 -0
  98. package/cjs/components/picker-view/columns-extend.js +45 -0
  99. package/cjs/components/picker-view/picker-view.d.ts +1 -0
  100. package/cjs/components/picker-view/picker-view.js +14 -16
  101. package/cjs/components/popover/popover.css +1 -0
  102. package/cjs/components/result/result.d.ts +2 -2
  103. package/cjs/components/virtual-input/virtual-input.js +25 -14
  104. package/cjs/utils/render-imperatively.js +17 -7
  105. package/cjs/utils/with-cache.d.ts +1 -0
  106. package/cjs/utils/with-cache.js +17 -0
  107. package/es/components/calendar/calendar.d.ts +4 -3
  108. package/es/components/calendar/calendar.js +67 -58
  109. package/es/components/calendar/convert.d.ts +2 -0
  110. package/es/components/calendar/convert.js +15 -0
  111. package/es/components/collapse/collapse.js +7 -0
  112. package/es/components/empty/empty-icon.d.ts +3 -0
  113. package/es/components/empty/empty-icon.js +24 -0
  114. package/es/components/empty/empty.js +27 -14
  115. package/es/components/error-block/error-block.css +1 -0
  116. package/es/components/error-block/error-block.js +2 -6
  117. package/es/components/error-block/images/busy.d.ts +1 -0
  118. package/es/components/error-block/images/busy.js +90 -0
  119. package/es/components/error-block/images/default.d.ts +1 -0
  120. package/es/components/error-block/images/default.js +166 -0
  121. package/es/components/error-block/images/disconnected.d.ts +1 -0
  122. package/es/components/error-block/images/disconnected.js +123 -0
  123. package/es/components/error-block/images/empty.d.ts +1 -0
  124. package/es/components/error-block/images/empty.js +119 -0
  125. package/es/components/error-block/images/index.d.ts +2 -0
  126. package/es/components/error-block/images/index.js +10 -0
  127. package/es/components/form/form-item.d.ts +1 -1
  128. package/es/components/form/form-item.js +4 -1
  129. package/es/components/image-viewer/methods.d.ts +1 -4
  130. package/es/components/image-viewer/methods.js +6 -50
  131. package/es/components/picker/picker.js +6 -8
  132. package/es/components/picker-view/columns-extend.d.ts +3 -0
  133. package/es/components/picker-view/columns-extend.js +34 -0
  134. package/es/components/picker-view/picker-view.d.ts +1 -0
  135. package/es/components/picker-view/picker-view.js +14 -15
  136. package/es/components/popover/popover.css +1 -0
  137. package/es/components/result/result.d.ts +2 -2
  138. package/es/components/virtual-input/virtual-input.js +23 -14
  139. package/es/utils/render-imperatively.js +16 -8
  140. package/es/utils/with-cache.d.ts +1 -0
  141. package/es/utils/with-cache.js +10 -0
  142. package/package.json +1 -1
  143. package/umd/antd-mobile.js +1 -1
  144. package/2x/assets/busy.svg +0 -42
  145. package/2x/assets/default.svg +0 -53
  146. package/2x/assets/disconnected.svg +0 -60
  147. package/2x/assets/empty-icon.svg +0 -18
  148. package/2x/assets/empty.svg +0 -52
  149. package/2x/cjs/assets/busy.svg +0 -42
  150. package/2x/cjs/assets/default.svg +0 -53
  151. package/2x/cjs/assets/disconnected.svg +0 -60
  152. package/2x/cjs/assets/empty-icon.svg +0 -18
  153. package/2x/cjs/assets/empty.svg +0 -52
  154. package/2x/cjs/components/error-block/error.d.ts +0 -1
  155. package/2x/cjs/components/error-block/error.js +0 -24
  156. package/2x/cjs/components/picker-view/use-columns.d.ts +0 -2
  157. package/2x/cjs/components/picker-view/use-columns.js +0 -18
  158. package/2x/cjs/components/picker-view/use-picker-value-extend.d.ts +0 -2
  159. package/2x/cjs/components/picker-view/use-picker-value-extend.js +0 -37
  160. package/2x/es/assets/busy.svg +0 -42
  161. package/2x/es/assets/default.svg +0 -53
  162. package/2x/es/assets/disconnected.svg +0 -60
  163. package/2x/es/assets/empty-icon.svg +0 -18
  164. package/2x/es/assets/empty.svg +0 -52
  165. package/2x/es/components/error-block/error.d.ts +0 -1
  166. package/2x/es/components/error-block/error.js +0 -10
  167. package/2x/es/components/picker-view/use-columns.d.ts +0 -2
  168. package/2x/es/components/picker-view/use-columns.js +0 -10
  169. package/2x/es/components/picker-view/use-picker-value-extend.d.ts +0 -2
  170. package/2x/es/components/picker-view/use-picker-value-extend.js +0 -26
  171. package/assets/busy.svg +0 -42
  172. package/assets/default.svg +0 -53
  173. package/assets/disconnected.svg +0 -60
  174. package/assets/empty-icon.svg +0 -18
  175. package/assets/empty.svg +0 -52
  176. package/cjs/assets/busy.svg +0 -42
  177. package/cjs/assets/default.svg +0 -53
  178. package/cjs/assets/disconnected.svg +0 -60
  179. package/cjs/assets/empty-icon.svg +0 -18
  180. package/cjs/assets/empty.svg +0 -52
  181. package/cjs/components/error-block/error.d.ts +0 -1
  182. package/cjs/components/error-block/error.js +0 -24
  183. package/cjs/components/picker-view/use-columns.d.ts +0 -2
  184. package/cjs/components/picker-view/use-columns.js +0 -18
  185. package/cjs/components/picker-view/use-picker-value-extend.d.ts +0 -2
  186. package/cjs/components/picker-view/use-picker-value-extend.js +0 -37
  187. package/es/assets/busy.svg +0 -42
  188. package/es/assets/default.svg +0 -53
  189. package/es/assets/disconnected.svg +0 -60
  190. package/es/assets/empty-icon.svg +0 -18
  191. package/es/assets/empty.svg +0 -52
  192. package/es/components/error-block/error.d.ts +0 -1
  193. package/es/components/error-block/error.js +0 -10
  194. package/es/components/picker-view/use-columns.d.ts +0 -2
  195. package/es/components/picker-view/use-columns.js +0 -10
  196. package/es/components/picker-view/use-picker-value-extend.d.ts +0 -2
  197. package/es/components/picker-view/use-picker-value-extend.js +0 -26
@@ -17,12 +17,10 @@ var _usePropsValue = require("../../utils/use-props-value");
17
17
 
18
18
  var _pickerView = _interopRequireDefault(require("../picker-view"));
19
19
 
20
- var _useColumns = require("../picker-view/use-columns");
20
+ var _columnsExtend = require("../picker-view/columns-extend");
21
21
 
22
22
  var _configProvider = require("../config-provider");
23
23
 
24
- var _usePickerValueExtend = require("../picker-view/use-picker-value-extend");
25
-
26
24
  var _ahooks = require("ahooks");
27
25
 
28
26
  var _safeArea = _interopRequireDefault(require("../safe-area"));
@@ -52,12 +50,11 @@ const Picker = (0, _react.memo)(p => {
52
50
  onChange: val => {
53
51
  var _a;
54
52
 
55
- (_a = props.onConfirm) === null || _a === void 0 ? void 0 : _a.call(props, val, generateValueExtend(val));
53
+ const extend = (0, _columnsExtend.generateColumnsExtend)(props.columns, val);
54
+ (_a = props.onConfirm) === null || _a === void 0 ? void 0 : _a.call(props, val, extend);
56
55
  }
57
- })); // TODO: columns generated twice in Picker and PickerView, which can be improved
58
-
59
- const columns = (0, _useColumns.useColumns)(props.columns, value);
60
- const generateValueExtend = (0, _usePickerValueExtend.usePickerValueExtend)(columns);
56
+ }));
57
+ const extend = (0, _columnsExtend.useColumnsExtend)(props.columns, value);
61
58
  const [innerValue, setInnerValue] = (0, _react.useState)(value);
62
59
  (0, _react.useEffect)(() => {
63
60
  if (innerValue !== value) {
@@ -130,7 +127,7 @@ const Picker = (0, _react.memo)(p => {
130
127
  position: 'bottom'
131
128
  }));
132
129
 
133
- return _react.default.createElement(_react.default.Fragment, null, popupElement, (_a = props.children) === null || _a === void 0 ? void 0 : _a.call(props, generateValueExtend(value).items));
130
+ return _react.default.createElement(_react.default.Fragment, null, popupElement, (_a = props.children) === null || _a === void 0 ? void 0 : _a.call(props, extend.items));
134
131
  });
135
132
  exports.Picker = Picker;
136
133
  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,45 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.generateColumnsExtend = generateColumnsExtend;
7
+ exports.useColumnsExtend = useColumnsExtend;
8
+
9
+ var _react = require("react");
10
+
11
+ var _withCache = require("../../utils/with-cache");
12
+
13
+ function generateColumnsExtend(rawColumns, val) {
14
+ const columns = (0, _withCache.withCache)(() => {
15
+ const c = typeof rawColumns === 'function' ? rawColumns(val) : rawColumns;
16
+ return c.map(column => column.map(item => typeof item === 'string' ? {
17
+ label: item,
18
+ value: item
19
+ } : item));
20
+ });
21
+ const items = (0, _withCache.withCache)(() => {
22
+ return val.map((v, index) => {
23
+ var _a;
24
+
25
+ const column = columns()[index];
26
+ if (!column) return null;
27
+ return (_a = column.find(item => item.value === v)) !== null && _a !== void 0 ? _a : null;
28
+ });
29
+ });
30
+ const extend = {
31
+ get columns() {
32
+ return columns();
33
+ },
34
+
35
+ get items() {
36
+ return items();
37
+ }
38
+
39
+ };
40
+ return extend;
41
+ }
42
+
43
+ function useColumnsExtend(rawColumns, value) {
44
+ return (0, _react.useMemo)(() => generateColumnsExtend(rawColumns, value), [rawColumns, value]);
45
+ }
@@ -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 = {
@@ -11,12 +11,10 @@ var _withDefaultProps = require("../../utils/with-default-props");
11
11
 
12
12
  var _wheel = require("./wheel");
13
13
 
14
- var _useColumns = require("./use-columns");
14
+ var _columnsExtend = require("./columns-extend");
15
15
 
16
16
  var _nativeProps = require("../../utils/native-props");
17
17
 
18
- var _usePickerValueExtend = require("./use-picker-value-extend");
19
-
20
18
  var _ahooks = require("ahooks");
21
19
 
22
20
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -29,17 +27,7 @@ const defaultProps = {
29
27
  };
30
28
  const PickerView = (0, _react.memo)(p => {
31
29
  const props = (0, _withDefaultProps.mergeProps)(defaultProps, p);
32
- const [innerValue, setInnerValue] = (0, _react.useState)(props.value === undefined ? props.defaultValue : props.value);
33
- (0, _ahooks.useDebounceEffect)(() => {
34
- var _a;
35
-
36
- if (props.value === innerValue) return;
37
- (_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, innerValue, generateValueExtend(innerValue));
38
- }, [innerValue], {
39
- wait: 0,
40
- leading: false,
41
- trailing: true
42
- }); // Sync `value` to `innerValue`
30
+ const [innerValue, setInnerValue] = (0, _react.useState)(props.value === undefined ? props.defaultValue : props.value); // Sync `value` to `innerValue`
43
31
 
44
32
  (0, _react.useEffect)(() => {
45
33
  if (props.value === undefined) return; // Uncontrolled mode
@@ -58,8 +46,18 @@ const PickerView = (0, _react.memo)(p => {
58
46
  window.clearTimeout(timeout);
59
47
  };
60
48
  }, [props.value, innerValue]);
61
- const columns = (0, _useColumns.useColumns)(props.columns, innerValue);
62
- const generateValueExtend = (0, _usePickerValueExtend.usePickerValueExtend)(columns);
49
+ const extend = (0, _columnsExtend.useColumnsExtend)(props.columns, innerValue);
50
+ const columns = extend.columns;
51
+ (0, _ahooks.useDebounceEffect)(() => {
52
+ var _a;
53
+
54
+ if (props.value === innerValue) return;
55
+ (_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, innerValue, extend);
56
+ }, [innerValue], {
57
+ wait: 0,
58
+ leading: false,
59
+ trailing: true
60
+ });
63
61
  const handleSelect = (0, _react.useCallback)((val, index) => {
64
62
  setInnerValue(prev => {
65
63
  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
 
@@ -2,8 +2,8 @@ import { FC, ReactNode } from 'react';
2
2
  import { NativeProps } from '../../utils/native-props';
3
3
  export declare type ResultProps = {
4
4
  status: 'success' | 'error' | 'info' | 'waiting' | 'warning';
5
- title: string;
6
- description?: string;
5
+ title: ReactNode;
6
+ description?: ReactNode;
7
7
  icon?: ReactNode;
8
8
  } & NativeProps;
9
9
  export declare const Result: FC<ResultProps>;
@@ -84,6 +84,30 @@ const VirtualInput = (0, _react.forwardRef)((p, ref) => {
84
84
  (_a = props.onBlur) === null || _a === void 0 ? void 0 : _a.call(props);
85
85
  }
86
86
 
87
+ const keyboard = props.keyboard;
88
+
89
+ const keyboardElement = keyboard && _react.default.cloneElement(keyboard, {
90
+ onInput: v => {
91
+ var _a, _b;
92
+
93
+ setValue(value + v);
94
+ (_b = (_a = keyboard.props).onInput) === null || _b === void 0 ? void 0 : _b.call(_a, v);
95
+ },
96
+ onDelete: () => {
97
+ var _a, _b;
98
+
99
+ setValue(value.slice(0, -1));
100
+ (_b = (_a = keyboard.props).onDelete) === null || _b === void 0 ? void 0 : _b.call(_a);
101
+ },
102
+ visible: hasFocus,
103
+ onClose: () => {
104
+ var _a, _b, _c;
105
+
106
+ (_a = rootRef.current) === null || _a === void 0 ? void 0 : _a.blur();
107
+ (_c = (_b = keyboard.props).onClose) === null || _c === void 0 ? void 0 : _c.call(_b);
108
+ }
109
+ });
110
+
87
111
  return (0, _nativeProps.withNativeProps)(props, _react.default.createElement("div", {
88
112
  ref: rootRef,
89
113
  className: (0, _classnames.default)(classPrefix, {
@@ -111,19 +135,6 @@ const VirtualInput = (0, _react.forwardRef)((p, ref) => {
111
135
  }
112
136
  }, _react.default.createElement(_antdMobileIcons.CloseCircleFill, null)), !value && _react.default.createElement("div", {
113
137
  className: `${classPrefix}-placeholder`
114
- }, props.placeholder), props.keyboard && _react.default.cloneElement(props.keyboard, {
115
- onInput: v => {
116
- setValue(value + v);
117
- },
118
- onDelete: () => {
119
- setValue(value.slice(0, -1));
120
- },
121
- visible: hasFocus,
122
- onClose: () => {
123
- var _a;
124
-
125
- (_a = rootRef.current) === null || _a === void 0 ? void 0 : _a.blur();
126
- }
127
- })));
138
+ }, props.placeholder), keyboardElement));
128
139
  });
129
140
  exports.VirtualInput = VirtualInput;
@@ -14,9 +14,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
14
14
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
15
15
 
16
16
  function renderImperatively(element) {
17
- let close = () => {};
18
-
19
- const Wrapper = () => {
17
+ const Wrapper = _react.default.forwardRef((_, ref) => {
20
18
  const [visible, setVisible] = (0, _react.useState)(false);
21
19
  const closedRef = (0, _react.useRef)(false);
22
20
  (0, _react.useEffect)(() => {
@@ -35,8 +33,6 @@ function renderImperatively(element) {
35
33
  (_b = (_a = element.props).onClose) === null || _b === void 0 ? void 0 : _b.call(_a);
36
34
  }
37
35
 
38
- close = onClose;
39
-
40
36
  function afterClose() {
41
37
  var _a, _b;
42
38
 
@@ -44,14 +40,28 @@ function renderImperatively(element) {
44
40
  (_b = (_a = element.props).afterClose) === null || _b === void 0 ? void 0 : _b.call(_a);
45
41
  }
46
42
 
43
+ (0, _react.useImperativeHandle)(ref, () => ({
44
+ close: onClose
45
+ }));
47
46
  return _react.default.cloneElement(element, Object.assign(Object.assign({}, element.props), {
48
47
  visible,
49
48
  onClose,
50
49
  afterClose
51
50
  }));
52
- };
51
+ });
52
+
53
+ const wrapperRef = _react.default.createRef();
54
+
55
+ const unmount = (0, _renderToBody.renderToBody)(_react.default.createElement(Wrapper, {
56
+ ref: wrapperRef
57
+ }));
58
+
59
+ function close() {
60
+ var _a;
61
+
62
+ (_a = wrapperRef.current) === null || _a === void 0 ? void 0 : _a.close();
63
+ }
53
64
 
54
- const unmount = (0, _renderToBody.renderToBody)(_react.default.createElement(Wrapper, null));
55
65
  return {
56
66
  close
57
67
  };
@@ -0,0 +1 @@
1
+ export declare function withCache<T>(generate: () => T): () => T;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.withCache = withCache;
7
+
8
+ function withCache(generate) {
9
+ let cache = null;
10
+ return () => {
11
+ if (cache === null) {
12
+ cache = generate();
13
+ }
14
+
15
+ return cache;
16
+ };
17
+ }
@@ -9,9 +9,10 @@ export declare type CalenderRef = {
9
9
  jumpToToday: () => void;
10
10
  };
11
11
  export declare type CalendarProps = {
12
+ onPageChange?: (year: number, month: number) => void;
12
13
  weekStartsOn?: 'Monday' | 'Sunday';
13
14
  renderLabel?: (date: Date) => string | null | undefined;
14
- onPageChange?: (year: number, month: number) => void;
15
+ allowClear?: boolean;
15
16
  } & ({
16
17
  selectionMode?: undefined;
17
18
  value?: undefined;
@@ -21,12 +22,12 @@ export declare type CalendarProps = {
21
22
  selectionMode: 'single';
22
23
  value?: Date | null;
23
24
  defaultValue?: Date | null;
24
- onChange?: (val: Date) => void;
25
+ onChange?: (val: Date | null) => void;
25
26
  } | {
26
27
  selectionMode: 'range';
27
28
  value?: [Date, Date] | null;
28
29
  defaultValue?: [Date, Date] | null;
29
- onChange?: (val: [Date, Date]) => void;
30
+ onChange?: (val: [Date, Date] | null) => void;
30
31
  }) & NativeProps;
31
32
  export declare const Calendar: React.ForwardRefExoticComponent<CalendarProps & React.RefAttributes<CalenderRef>>;
32
33
  export {};
@@ -1,4 +1,4 @@
1
- import React, { forwardRef, useMemo, useState, useImperativeHandle } from 'react';
1
+ import React, { forwardRef, useState, useImperativeHandle } from 'react';
2
2
  import { withNativeProps } from '../../utils/native-props';
3
3
  import dayjs from 'dayjs';
4
4
  import classNames from 'classnames';
@@ -7,11 +7,15 @@ import { ArrowLeft } from './arrow-left';
7
7
  import { ArrowLeftDouble } from './arrow-left-double';
8
8
  import { useConfig } from '../config-provider';
9
9
  import isoWeek from 'dayjs/plugin/isoWeek';
10
- import { useIsomorphicLayoutEffect, useUpdateEffect } from 'ahooks';
10
+ import { useUpdateEffect } from 'ahooks';
11
+ import { usePropsValue } from '../../utils/use-props-value';
12
+ import { convertValueToRange } from './convert';
11
13
  dayjs.extend(isoWeek);
12
14
  const classPrefix = 'adm-calendar';
13
15
  const defaultProps = {
14
- weekStartsOn: 'Sunday'
16
+ weekStartsOn: 'Sunday',
17
+ defaultValue: null,
18
+ allowClear: true
15
19
  };
16
20
  export const Calendar = forwardRef((p, ref) => {
17
21
  const today = dayjs();
@@ -26,29 +30,21 @@ export const Calendar = forwardRef((p, ref) => {
26
30
  if (item) markItems.unshift(item);
27
31
  }
28
32
 
29
- const dateRange = useMemo(() => {
30
- var _a, _b, _c, _d;
33
+ const [dateRange, setDateRange] = usePropsValue({
34
+ value: props.value === undefined ? undefined : convertValueToRange(props.selectionMode, props.value),
35
+ defaultValue: convertValueToRange(props.selectionMode, props.defaultValue),
36
+ onChange: v => {
37
+ var _a, _b;
31
38
 
32
- if (props.selectionMode === 'single') {
33
- const value = (_b = (_a = props.value) !== null && _a !== void 0 ? _a : props.defaultValue) !== null && _b !== void 0 ? _b : null;
34
- return [value, value];
35
- } else if (props.selectionMode === 'range') {
36
- return (_d = (_c = props.value) !== null && _c !== void 0 ? _c : props.defaultValue) !== null && _d !== void 0 ? _d : [null, null];
37
- } else {
38
- return [null, null];
39
+ if (props.selectionMode === 'single') {
40
+ (_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, v ? v[0] : null);
41
+ } else if (props.selectionMode === 'range') {
42
+ (_b = props.onChange) === null || _b === void 0 ? void 0 : _b.call(props, v);
43
+ }
39
44
  }
40
- }, [props.selectionMode, props.value, props.defaultValue]);
41
- const [begin, setBegin] = useState(null);
42
- const [end, setEnd] = useState(null);
43
- useIsomorphicLayoutEffect(() => {
44
- setBegin(dateRange[0] ? dayjs(dateRange[0]) : null);
45
- setEnd(dateRange[1] ? dayjs(dateRange[1]) : null);
46
- }, [dateRange[0], dateRange[1]]);
47
- const [current, setCurrent] = useState(() => {
48
- var _a;
49
-
50
- return dayjs((_a = dateRange[0]) !== null && _a !== void 0 ? _a : today).date(1);
51
45
  });
46
+ const [intermediate, setIntermediate] = useState(false);
47
+ const [current, setCurrent] = useState(() => dayjs(dateRange ? dateRange[0] : today).date(1));
52
48
  useUpdateEffect(() => {
53
49
  var _a;
54
50
 
@@ -111,14 +107,16 @@ export const Calendar = forwardRef((p, ref) => {
111
107
 
112
108
  while (cells.length < 6 * 7) {
113
109
  const d = iterator;
114
-
115
- const isSelect = (() => {
116
- if (!begin) return false;
117
- if (d.isSame(begin, 'day')) return true;
118
- if (!end) return false;
119
- if (d.isSame(end, 'day')) return true;
120
- return d.isAfter(begin, 'day') && d.isBefore(end, 'day');
121
- })();
110
+ let isSelect = false;
111
+ let isBegin = false;
112
+ let isEnd = false;
113
+
114
+ if (dateRange) {
115
+ const [begin, end] = dateRange;
116
+ isBegin = d.isSame(begin, 'day');
117
+ isEnd = d.isSame(end, 'day');
118
+ isSelect = isBegin || isEnd || d.isAfter(begin, 'day') && d.isBefore(end, 'day');
119
+ }
122
120
 
123
121
  const inThisMonth = d.month() === current.month();
124
122
  cells.push(React.createElement("div", {
@@ -126,41 +124,52 @@ export const Calendar = forwardRef((p, ref) => {
126
124
  className: classNames(`${classPrefix}-cell`, inThisMonth ? `${classPrefix}-cell-in` : `${classPrefix}-cell-out`, inThisMonth && {
127
125
  [`${classPrefix}-cell-today`]: d.isSame(today, 'day'),
128
126
  [`${classPrefix}-cell-selected`]: isSelect,
129
- [`${classPrefix}-cell-selected-begin`]: isSelect && d.isSame(begin, 'day'),
130
- [`${classPrefix}-cell-selected-end`]: isSelect && (!end || d.isSame(end, 'day'))
127
+ [`${classPrefix}-cell-selected-begin`]: isBegin,
128
+ [`${classPrefix}-cell-selected-end`]: isEnd
131
129
  }),
132
130
  onClick: () => {
133
- var _a, _b, _c;
134
-
135
131
  if (!props.selectionMode) return;
132
+ const date = d.toDate();
133
+
134
+ if (!inThisMonth) {
135
+ setCurrent(d.clone().date(1));
136
+ }
137
+
138
+ function shouldClear() {
139
+ if (!props.allowClear) return false;
140
+ if (!dateRange) return false;
141
+ const [begin, end] = dateRange;
142
+ return d.isSame(begin, 'date') && d.isSame(end, 'day');
143
+ }
136
144
 
137
145
  if (props.selectionMode === 'single') {
138
- setBegin(d);
139
- setEnd(d);
140
- (_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, d.toDate());
146
+ if (props.allowClear && shouldClear()) {
147
+ setDateRange(null);
148
+ return;
149
+ }
150
+
151
+ setDateRange([date, date]);
141
152
  } else if (props.selectionMode === 'range') {
142
- if (begin !== null && end === null) {
143
- if (begin.isSame(d.toDate())) {
144
- setBegin(null);
145
- setEnd(null);
146
- } else {
147
- if (d.isBefore(begin)) {
148
- setEnd(begin);
149
- setBegin(d);
150
- (_b = props.onChange) === null || _b === void 0 ? void 0 : _b.call(props, [d.toDate(), begin.toDate()]);
151
- } else {
152
- setEnd(d);
153
- (_c = props.onChange) === null || _c === void 0 ? void 0 : _c.call(props, [begin.toDate(), d.toDate()]);
154
- }
155
- }
156
- } else {
157
- setBegin(d);
158
- setEnd(null);
153
+ if (!dateRange) {
154
+ setDateRange([date, date]);
155
+ setIntermediate(true);
156
+ return;
159
157
  }
160
- }
161
158
 
162
- if (!inThisMonth) {
163
- setCurrent(d.clone().date(1));
159
+ if (shouldClear()) {
160
+ setDateRange(null);
161
+ setIntermediate(false);
162
+ return;
163
+ }
164
+
165
+ if (intermediate) {
166
+ const another = dateRange[0];
167
+ setDateRange(another > date ? [date, another] : [another, date]);
168
+ setIntermediate(false);
169
+ } else {
170
+ setDateRange([date, date]);
171
+ setIntermediate(true);
172
+ }
164
173
  }
165
174
  }
166
175
  }, React.createElement("div", {
@@ -0,0 +1,2 @@
1
+ export declare type DateRange = [Date, Date] | null;
2
+ export declare function convertValueToRange(selectionMode: 'single' | 'range' | undefined, value: Date | [Date, Date] | null): DateRange;
@@ -0,0 +1,15 @@
1
+ export function convertValueToRange(selectionMode, value) {
2
+ if (selectionMode === undefined) {
3
+ return null;
4
+ }
5
+
6
+ if (value === null) {
7
+ return null;
8
+ }
9
+
10
+ if (Array.isArray(value)) {
11
+ return value;
12
+ }
13
+
14
+ return [value, value];
15
+ }
@@ -24,6 +24,13 @@ const CollapsePanelContent = props => {
24
24
  }, api] = useSpring(() => ({
25
25
  from: {
26
26
  height: 0
27
+ },
28
+ config: {
29
+ precision: 0.01,
30
+ mass: 1,
31
+ tension: 200,
32
+ friction: 25,
33
+ clamp: true
27
34
  }
28
35
  }));
29
36
  useMount(() => {
@@ -0,0 +1,3 @@
1
+ import { FC } from 'react';
2
+ import { NativeProps } from '../../utils/native-props';
3
+ export declare const EmptyIcon: FC<NativeProps>;
@@ -0,0 +1,24 @@
1
+ import React from 'react';
2
+ import { withNativeProps } from '../../utils/native-props';
3
+ export const EmptyIcon = props => {
4
+ return withNativeProps(props, React.createElement("svg", {
5
+ viewBox: '0 0 64 41'
6
+ }, React.createElement("g", {
7
+ transform: 'translate(0 1)',
8
+ fill: 'none',
9
+ fillRule: 'evenodd'
10
+ }, React.createElement("ellipse", {
11
+ fill: '#f5f5f5',
12
+ cx: '32',
13
+ cy: '33',
14
+ rx: '32',
15
+ ry: '7'
16
+ }), React.createElement("g", {
17
+ stroke: '#d9d9d9'
18
+ }, React.createElement("path", {
19
+ d: 'M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z'
20
+ }), React.createElement("path", {
21
+ d: 'M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z',
22
+ fill: '#fafafa'
23
+ })))));
24
+ };
@@ -1,25 +1,38 @@
1
1
  import React from 'react';
2
2
  import classNames from 'classnames';
3
- import { mergeProps } from '../../utils/with-default-props';
4
3
  import { withNativeProps } from '../../utils/native-props';
5
- import EmptyIcon from '../../assets/empty-icon.svg';
4
+ import { EmptyIcon } from './empty-icon';
6
5
  const classPrefix = `adm-empty`;
7
- const defaultProps = {
8
- image: EmptyIcon
9
- };
10
- export const Empty = p => {
11
- const props = mergeProps(defaultProps, p);
12
- const imageNode = typeof props.image === 'string' ? React.createElement("img", {
13
- className: `${classPrefix}-image`,
14
- style: props.imageStyle,
15
- src: props.image,
16
- alt: 'empty'
17
- }) : props.image;
6
+ export const Empty = props => {
7
+ function renderImageNode() {
8
+ const {
9
+ image
10
+ } = props;
11
+
12
+ if (image === undefined) {
13
+ return React.createElement(EmptyIcon, {
14
+ className: `${classPrefix}-image`,
15
+ style: props.imageStyle
16
+ });
17
+ }
18
+
19
+ if (typeof image === 'string') {
20
+ return React.createElement("img", {
21
+ className: `${classPrefix}-image`,
22
+ style: props.imageStyle,
23
+ src: image,
24
+ alt: 'empty'
25
+ });
26
+ }
27
+
28
+ return image;
29
+ }
30
+
18
31
  return withNativeProps(props, React.createElement("div", {
19
32
  className: classPrefix
20
33
  }, React.createElement("div", {
21
34
  className: `${classPrefix}-image-container`
22
- }, imageNode), props.description && React.createElement("div", {
35
+ }, renderImageNode()), props.description && React.createElement("div", {
23
36
  className: classNames(`${classPrefix}-description`)
24
37
  }, props.description)));
25
38
  };
@@ -14,6 +14,7 @@
14
14
  max-width: 100%;
15
15
  }
16
16
 
17
+ .adm-error-block-image svg,
17
18
  .adm-error-block-image img {
18
19
  height: 100%;
19
20
  }
@@ -1,26 +1,22 @@
1
1
  import React from 'react';
2
2
  import classNames from 'classnames';
3
- import { iconRecord } from './error';
4
3
  import { mergeProps } from '../../utils/with-default-props';
5
4
  import { withNativeProps } from '../../utils/native-props';
6
5
  import { useConfig } from '../config-provider';
6
+ import { imageRecord } from './images';
7
7
  const classPrefix = `adm-error-block`;
8
8
  const defaultProps = {
9
9
  status: 'default'
10
10
  };
11
11
  export const ErrorBlock = p => {
12
12
  const props = mergeProps(defaultProps, p);
13
- const icon = iconRecord[props.status];
14
13
  const {
15
14
  locale
16
15
  } = useConfig();
17
16
  const contentPack = locale.ErrorBlock[props.status];
18
17
  const des = 'description' in props ? props.description : contentPack.description;
19
18
  const title = 'title' in props ? props.title : contentPack.title;
20
- let imageNode = React.createElement("img", {
21
- src: icon,
22
- alt: 'error block image'
23
- });
19
+ let imageNode = imageRecord[props.status];
24
20
 
25
21
  if (props.image) {
26
22
  if (typeof props.image === 'string') {
@@ -0,0 +1 @@
1
+ export declare const busyImage: JSX.Element;