antd-mobile 5.6.1 → 5.7.2

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 (139) 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/dialog/confirm.js +9 -1
  7. package/2x/cjs/components/form/form-item.js +6 -3
  8. package/2x/cjs/components/modal/confirm.js +9 -1
  9. package/2x/cjs/components/passcode-input/passcode-input.js +1 -1
  10. package/2x/cjs/components/picker/picker.js +6 -9
  11. package/2x/cjs/components/picker-view/columns-extend.d.ts +3 -0
  12. package/2x/cjs/components/picker-view/columns-extend.js +45 -0
  13. package/2x/cjs/components/picker-view/picker-view.d.ts +1 -0
  14. package/2x/cjs/components/picker-view/picker-view.js +14 -16
  15. package/2x/cjs/components/pull-to-refresh/pull-to-refresh.js +11 -1
  16. package/2x/cjs/components/result/result.d.ts +2 -2
  17. package/2x/cjs/components/virtual-input/virtual-input.js +25 -14
  18. package/2x/cjs/locales/base.d.ts +6 -0
  19. package/2x/cjs/locales/base.js +7 -1
  20. package/2x/cjs/locales/en-US.d.ts +6 -0
  21. package/2x/cjs/locales/fa-IR.d.ts +101 -0
  22. package/2x/cjs/locales/fa-IR.js +108 -0
  23. package/2x/cjs/locales/zh-CN.d.ts +6 -0
  24. package/2x/cjs/locales/zh-CN.js +7 -1
  25. package/2x/cjs/locales/zh-HK.d.ts +101 -0
  26. package/2x/cjs/locales/zh-HK.js +58 -0
  27. package/2x/cjs/locales/zh-TW.d.ts +101 -0
  28. package/2x/cjs/locales/zh-TW.js +58 -0
  29. package/2x/cjs/utils/with-cache.d.ts +1 -0
  30. package/2x/cjs/utils/with-cache.js +17 -0
  31. package/2x/es/components/calendar/calendar.d.ts +4 -3
  32. package/2x/es/components/calendar/calendar.js +67 -58
  33. package/2x/es/components/calendar/convert.d.ts +2 -0
  34. package/2x/es/components/calendar/convert.js +15 -0
  35. package/2x/es/components/collapse/collapse.js +7 -0
  36. package/2x/es/components/dialog/confirm.js +8 -1
  37. package/2x/es/components/form/form-item.js +6 -3
  38. package/2x/es/components/modal/confirm.js +8 -1
  39. package/2x/es/components/passcode-input/passcode-input.js +1 -1
  40. package/2x/es/components/picker/picker.js +6 -8
  41. package/2x/es/components/picker-view/columns-extend.d.ts +3 -0
  42. package/2x/es/components/picker-view/columns-extend.js +34 -0
  43. package/2x/es/components/picker-view/picker-view.d.ts +1 -0
  44. package/2x/es/components/picker-view/picker-view.js +14 -15
  45. package/2x/es/components/pull-to-refresh/pull-to-refresh.js +10 -1
  46. package/2x/es/components/result/result.d.ts +2 -2
  47. package/2x/es/components/virtual-input/virtual-input.js +23 -14
  48. package/2x/es/locales/base.d.ts +6 -0
  49. package/2x/es/locales/base.js +7 -1
  50. package/2x/es/locales/en-US.d.ts +6 -0
  51. package/2x/es/locales/fa-IR.d.ts +101 -0
  52. package/2x/es/locales/fa-IR.js +98 -0
  53. package/2x/es/locales/zh-CN.d.ts +6 -0
  54. package/2x/es/locales/zh-CN.js +7 -1
  55. package/2x/es/locales/zh-HK.d.ts +101 -0
  56. package/2x/es/locales/zh-HK.js +48 -0
  57. package/2x/es/locales/zh-TW.d.ts +101 -0
  58. package/2x/es/locales/zh-TW.js +48 -0
  59. package/2x/es/utils/with-cache.d.ts +1 -0
  60. package/2x/es/utils/with-cache.js +10 -0
  61. package/2x/package.json +1 -1
  62. package/cjs/components/calendar/calendar.d.ts +4 -3
  63. package/cjs/components/calendar/calendar.js +67 -56
  64. package/cjs/components/calendar/convert.d.ts +2 -0
  65. package/cjs/components/calendar/convert.js +22 -0
  66. package/cjs/components/collapse/collapse.js +7 -0
  67. package/cjs/components/dialog/confirm.js +9 -1
  68. package/cjs/components/form/form-item.js +6 -3
  69. package/cjs/components/modal/confirm.js +9 -1
  70. package/cjs/components/passcode-input/passcode-input.js +1 -1
  71. package/cjs/components/picker/picker.js +6 -9
  72. package/cjs/components/picker-view/columns-extend.d.ts +3 -0
  73. package/cjs/components/picker-view/columns-extend.js +45 -0
  74. package/cjs/components/picker-view/picker-view.d.ts +1 -0
  75. package/cjs/components/picker-view/picker-view.js +14 -16
  76. package/cjs/components/pull-to-refresh/pull-to-refresh.js +11 -1
  77. package/cjs/components/result/result.d.ts +2 -2
  78. package/cjs/components/virtual-input/virtual-input.js +25 -14
  79. package/cjs/locales/base.d.ts +6 -0
  80. package/cjs/locales/base.js +7 -1
  81. package/cjs/locales/en-US.d.ts +6 -0
  82. package/cjs/locales/fa-IR.d.ts +101 -0
  83. package/cjs/locales/fa-IR.js +108 -0
  84. package/cjs/locales/zh-CN.d.ts +6 -0
  85. package/cjs/locales/zh-CN.js +7 -1
  86. package/cjs/locales/zh-HK.d.ts +101 -0
  87. package/cjs/locales/zh-HK.js +58 -0
  88. package/cjs/locales/zh-TW.d.ts +101 -0
  89. package/cjs/locales/zh-TW.js +58 -0
  90. package/cjs/utils/with-cache.d.ts +1 -0
  91. package/cjs/utils/with-cache.js +17 -0
  92. package/es/components/calendar/calendar.d.ts +4 -3
  93. package/es/components/calendar/calendar.js +67 -58
  94. package/es/components/calendar/convert.d.ts +2 -0
  95. package/es/components/calendar/convert.js +15 -0
  96. package/es/components/collapse/collapse.js +7 -0
  97. package/es/components/dialog/confirm.js +8 -1
  98. package/es/components/form/form-item.js +6 -3
  99. package/es/components/modal/confirm.js +8 -1
  100. package/es/components/passcode-input/passcode-input.js +1 -1
  101. package/es/components/picker/picker.js +6 -8
  102. package/es/components/picker-view/columns-extend.d.ts +3 -0
  103. package/es/components/picker-view/columns-extend.js +34 -0
  104. package/es/components/picker-view/picker-view.d.ts +1 -0
  105. package/es/components/picker-view/picker-view.js +14 -15
  106. package/es/components/pull-to-refresh/pull-to-refresh.js +10 -1
  107. package/es/components/result/result.d.ts +2 -2
  108. package/es/components/virtual-input/virtual-input.js +23 -14
  109. package/es/locales/base.d.ts +6 -0
  110. package/es/locales/base.js +7 -1
  111. package/es/locales/en-US.d.ts +6 -0
  112. package/es/locales/fa-IR.d.ts +101 -0
  113. package/es/locales/fa-IR.js +98 -0
  114. package/es/locales/zh-CN.d.ts +6 -0
  115. package/es/locales/zh-CN.js +7 -1
  116. package/es/locales/zh-HK.d.ts +101 -0
  117. package/es/locales/zh-HK.js +48 -0
  118. package/es/locales/zh-TW.d.ts +101 -0
  119. package/es/locales/zh-TW.js +48 -0
  120. package/es/utils/with-cache.d.ts +1 -0
  121. package/es/utils/with-cache.js +10 -0
  122. package/package.json +1 -1
  123. package/umd/antd-mobile.js +1 -1
  124. package/2x/cjs/components/picker-view/use-columns.d.ts +0 -2
  125. package/2x/cjs/components/picker-view/use-columns.js +0 -18
  126. package/2x/cjs/components/picker-view/use-picker-value-extend.d.ts +0 -2
  127. package/2x/cjs/components/picker-view/use-picker-value-extend.js +0 -37
  128. package/2x/es/components/picker-view/use-columns.d.ts +0 -2
  129. package/2x/es/components/picker-view/use-columns.js +0 -10
  130. package/2x/es/components/picker-view/use-picker-value-extend.d.ts +0 -2
  131. package/2x/es/components/picker-view/use-picker-value-extend.js +0 -26
  132. package/cjs/components/picker-view/use-columns.d.ts +0 -2
  133. package/cjs/components/picker-view/use-columns.js +0 -18
  134. package/cjs/components/picker-view/use-picker-value-extend.d.ts +0 -2
  135. package/cjs/components/picker-view/use-picker-value-extend.js +0 -37
  136. package/es/components/picker-view/use-columns.d.ts +0 -2
  137. package/es/components/picker-view/use-columns.js +0 -10
  138. package/es/components/picker-view/use-picker-value-extend.d.ts +0 -2
  139. package/es/components/picker-view/use-picker-value-extend.js +0 -26
@@ -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 {};
@@ -25,6 +25,10 @@ var _isoWeek = _interopRequireDefault(require("dayjs/plugin/isoWeek"));
25
25
 
26
26
  var _ahooks = require("ahooks");
27
27
 
28
+ var _usePropsValue = require("../../utils/use-props-value");
29
+
30
+ var _convert = require("./convert");
31
+
28
32
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
33
 
30
34
  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); }
@@ -35,7 +39,9 @@ _dayjs.default.extend(_isoWeek.default);
35
39
 
36
40
  const classPrefix = 'adm-calendar';
37
41
  const defaultProps = {
38
- weekStartsOn: 'Sunday'
42
+ weekStartsOn: 'Sunday',
43
+ defaultValue: null,
44
+ allowClear: true
39
45
  };
40
46
  const Calendar = (0, _react.forwardRef)((p, ref) => {
41
47
  const today = (0, _dayjs.default)();
@@ -50,29 +56,21 @@ const Calendar = (0, _react.forwardRef)((p, ref) => {
50
56
  if (item) markItems.unshift(item);
51
57
  }
52
58
 
53
- const dateRange = (0, _react.useMemo)(() => {
54
- var _a, _b, _c, _d;
59
+ const [dateRange, setDateRange] = (0, _usePropsValue.usePropsValue)({
60
+ value: props.value === undefined ? undefined : (0, _convert.convertValueToRange)(props.selectionMode, props.value),
61
+ defaultValue: (0, _convert.convertValueToRange)(props.selectionMode, props.defaultValue),
62
+ onChange: v => {
63
+ var _a, _b;
55
64
 
56
- if (props.selectionMode === 'single') {
57
- const value = (_b = (_a = props.value) !== null && _a !== void 0 ? _a : props.defaultValue) !== null && _b !== void 0 ? _b : null;
58
- return [value, value];
59
- } else if (props.selectionMode === 'range') {
60
- return (_d = (_c = props.value) !== null && _c !== void 0 ? _c : props.defaultValue) !== null && _d !== void 0 ? _d : [null, null];
61
- } else {
62
- return [null, null];
65
+ if (props.selectionMode === 'single') {
66
+ (_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, v ? v[0] : null);
67
+ } else if (props.selectionMode === 'range') {
68
+ (_b = props.onChange) === null || _b === void 0 ? void 0 : _b.call(props, v);
69
+ }
63
70
  }
64
- }, [props.selectionMode, props.value, props.defaultValue]);
65
- const [begin, setBegin] = (0, _react.useState)(null);
66
- const [end, setEnd] = (0, _react.useState)(null);
67
- (0, _ahooks.useIsomorphicLayoutEffect)(() => {
68
- setBegin(dateRange[0] ? (0, _dayjs.default)(dateRange[0]) : null);
69
- setEnd(dateRange[1] ? (0, _dayjs.default)(dateRange[1]) : null);
70
- }, [dateRange[0], dateRange[1]]);
71
- const [current, setCurrent] = (0, _react.useState)(() => {
72
- var _a;
73
-
74
- return (0, _dayjs.default)((_a = dateRange[0]) !== null && _a !== void 0 ? _a : today).date(1);
75
71
  });
72
+ const [intermediate, setIntermediate] = (0, _react.useState)(false);
73
+ const [current, setCurrent] = (0, _react.useState)(() => (0, _dayjs.default)(dateRange ? dateRange[0] : today).date(1));
76
74
  (0, _ahooks.useUpdateEffect)(() => {
77
75
  var _a;
78
76
 
@@ -136,14 +134,16 @@ const Calendar = (0, _react.forwardRef)((p, ref) => {
136
134
 
137
135
  while (cells.length < 6 * 7) {
138
136
  const d = iterator;
139
-
140
- const isSelect = (() => {
141
- if (!begin) return false;
142
- if (d.isSame(begin, 'day')) return true;
143
- if (!end) return false;
144
- if (d.isSame(end, 'day')) return true;
145
- return d.isAfter(begin, 'day') && d.isBefore(end, 'day');
146
- })();
137
+ let isSelect = false;
138
+ let isBegin = false;
139
+ let isEnd = false;
140
+
141
+ if (dateRange) {
142
+ const [begin, end] = dateRange;
143
+ isBegin = d.isSame(begin, 'day');
144
+ isEnd = d.isSame(end, 'day');
145
+ isSelect = isBegin || isEnd || d.isAfter(begin, 'day') && d.isBefore(end, 'day');
146
+ }
147
147
 
148
148
  const inThisMonth = d.month() === current.month();
149
149
  cells.push(_react.default.createElement("div", {
@@ -151,41 +151,52 @@ const Calendar = (0, _react.forwardRef)((p, ref) => {
151
151
  className: (0, _classnames.default)(`${classPrefix}-cell`, inThisMonth ? `${classPrefix}-cell-in` : `${classPrefix}-cell-out`, inThisMonth && {
152
152
  [`${classPrefix}-cell-today`]: d.isSame(today, 'day'),
153
153
  [`${classPrefix}-cell-selected`]: isSelect,
154
- [`${classPrefix}-cell-selected-begin`]: isSelect && d.isSame(begin, 'day'),
155
- [`${classPrefix}-cell-selected-end`]: isSelect && (!end || d.isSame(end, 'day'))
154
+ [`${classPrefix}-cell-selected-begin`]: isBegin,
155
+ [`${classPrefix}-cell-selected-end`]: isEnd
156
156
  }),
157
157
  onClick: () => {
158
- var _a, _b, _c;
159
-
160
158
  if (!props.selectionMode) return;
159
+ const date = d.toDate();
160
+
161
+ if (!inThisMonth) {
162
+ setCurrent(d.clone().date(1));
163
+ }
164
+
165
+ function shouldClear() {
166
+ if (!props.allowClear) return false;
167
+ if (!dateRange) return false;
168
+ const [begin, end] = dateRange;
169
+ return d.isSame(begin, 'date') && d.isSame(end, 'day');
170
+ }
161
171
 
162
172
  if (props.selectionMode === 'single') {
163
- setBegin(d);
164
- setEnd(d);
165
- (_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, d.toDate());
173
+ if (props.allowClear && shouldClear()) {
174
+ setDateRange(null);
175
+ return;
176
+ }
177
+
178
+ setDateRange([date, date]);
166
179
  } else if (props.selectionMode === 'range') {
167
- if (begin !== null && end === null) {
168
- if (begin.isSame(d.toDate())) {
169
- setBegin(null);
170
- setEnd(null);
171
- } else {
172
- if (d.isBefore(begin)) {
173
- setEnd(begin);
174
- setBegin(d);
175
- (_b = props.onChange) === null || _b === void 0 ? void 0 : _b.call(props, [d.toDate(), begin.toDate()]);
176
- } else {
177
- setEnd(d);
178
- (_c = props.onChange) === null || _c === void 0 ? void 0 : _c.call(props, [begin.toDate(), d.toDate()]);
179
- }
180
- }
181
- } else {
182
- setBegin(d);
183
- setEnd(null);
180
+ if (!dateRange) {
181
+ setDateRange([date, date]);
182
+ setIntermediate(true);
183
+ return;
184
184
  }
185
- }
186
185
 
187
- if (!inThisMonth) {
188
- setCurrent(d.clone().date(1));
186
+ if (shouldClear()) {
187
+ setDateRange(null);
188
+ setIntermediate(false);
189
+ return;
190
+ }
191
+
192
+ if (intermediate) {
193
+ const another = dateRange[0];
194
+ setDateRange(another > date ? [date, another] : [another, date]);
195
+ setIntermediate(false);
196
+ } else {
197
+ setDateRange([date, date]);
198
+ setIntermediate(true);
199
+ }
189
200
  }
190
201
  }
191
202
  }, _react.default.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,22 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.convertValueToRange = convertValueToRange;
7
+
8
+ function convertValueToRange(selectionMode, value) {
9
+ if (selectionMode === undefined) {
10
+ return null;
11
+ }
12
+
13
+ if (value === null) {
14
+ return null;
15
+ }
16
+
17
+ if (Array.isArray(value)) {
18
+ return value;
19
+ }
20
+
21
+ return [value, value];
22
+ }
@@ -50,6 +50,13 @@ const CollapsePanelContent = props => {
50
50
  }, api] = (0, _web.useSpring)(() => ({
51
51
  from: {
52
52
  height: 0
53
+ },
54
+ config: {
55
+ precision: 0.01,
56
+ mass: 1,
57
+ tension: 200,
58
+ friction: 25,
59
+ clamp: true
53
60
  }
54
61
  }));
55
62
  (0, _ahooks.useMount)(() => {
@@ -11,13 +11,21 @@ var _show = require("./show");
11
11
 
12
12
  var _withDefaultProps = require("../../utils/with-default-props");
13
13
 
14
+ var _configProvider = require("../config-provider");
15
+
14
16
  const defaultProps = {
15
17
  confirmText: '确认',
16
18
  cancelText: '取消'
17
19
  };
18
20
 
19
21
  function confirm(p) {
20
- const props = (0, _withDefaultProps.mergeProps)(defaultProps, p);
22
+ const {
23
+ locale
24
+ } = (0, _configProvider.getDefaultConfig)();
25
+ const props = (0, _withDefaultProps.mergeProps)(defaultProps, {
26
+ confirmText: locale.common.confirm,
27
+ cancelText: locale.common.cancel
28
+ }, p);
21
29
  return new Promise(resolve => {
22
30
  (0, _show.show)(Object.assign(Object.assign({}, props), {
23
31
  closeOnAction: true,
@@ -93,12 +93,15 @@ const FormItemLayout = props => {
93
93
  const labelElement = label ? _react.default.createElement("label", {
94
94
  className: `${classPrefix}-label`,
95
95
  htmlFor: htmlFor
96
- }, label, requiredMark, help && _react.default.createElement("span", {
97
- className: `${classPrefix}-label-help`
98
- }, _react.default.createElement(_popover.default, {
96
+ }, label, requiredMark, help && _react.default.createElement(_popover.default, {
99
97
  content: help,
100
98
  mode: 'dark',
101
99
  trigger: 'click'
100
+ }, _react.default.createElement("span", {
101
+ className: `${classPrefix}-label-help`,
102
+ onClick: e => {
103
+ e.preventDefault();
104
+ }
102
105
  }, _react.default.createElement(_antdMobileIcons.QuestionCircleOutline, null)))) : null;
103
106
 
104
107
  const description = _react.default.createElement(_react.default.Fragment, null, props.description, hasFeedback && _react.default.createElement(_react.default.Fragment, null, props.errors.map((error, index) => _react.default.createElement("div", {
@@ -11,13 +11,21 @@ var _show = require("./show");
11
11
 
12
12
  var _withDefaultProps = require("../../utils/with-default-props");
13
13
 
14
+ var _configProvider = require("../config-provider");
15
+
14
16
  const defaultProps = {
15
17
  confirmText: '确认',
16
18
  cancelText: '取消'
17
19
  };
18
20
 
19
21
  function confirm(p) {
20
- const props = (0, _withDefaultProps.mergeProps)(defaultProps, p);
22
+ const {
23
+ locale
24
+ } = (0, _configProvider.getDefaultConfig)();
25
+ const props = (0, _withDefaultProps.mergeProps)(defaultProps, {
26
+ confirmText: locale.common.confirm,
27
+ cancelText: locale.common.cancel
28
+ }, p);
21
29
  return new Promise(resolve => {
22
30
  (0, _show.show)(Object.assign(Object.assign({}, props), {
23
31
  closeOnAction: true,
@@ -46,7 +46,7 @@ const PasscodeInput = (0, _react.forwardRef)((p, ref) => {
46
46
  if (value.length >= cellLength) {
47
47
  (_a = props.onFill) === null || _a === void 0 ? void 0 : _a.call(props, value);
48
48
  }
49
- }, [props.onFill, value, cellLength]);
49
+ }, [value, cellLength]);
50
50
 
51
51
  const onFocus = () => {
52
52
  var _a, _b;
@@ -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];
@@ -23,6 +23,8 @@ var _convertPx = require("../../utils/convert-px");
23
23
 
24
24
  var _rubberband = require("../../utils/rubberband");
25
25
 
26
+ var _configProvider = require("../config-provider");
27
+
26
28
  var _sleep = require("../../utils/sleep");
27
29
 
28
30
  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); }
@@ -44,7 +46,15 @@ exports.defaultProps = defaultProps;
44
46
  const PullToRefresh = p => {
45
47
  var _a, _b;
46
48
 
47
- const props = (0, _withDefaultProps.mergeProps)(defaultProps, p);
49
+ const {
50
+ locale
51
+ } = (0, _configProvider.useConfig)();
52
+ const props = (0, _withDefaultProps.mergeProps)(defaultProps, {
53
+ refreshingText: locale.common.loading,
54
+ pullingText: locale.PullToRefresh.pulling,
55
+ canReleaseText: locale.PullToRefresh.canRelease,
56
+ completeText: locale.PullToRefresh.complete
57
+ }, p);
48
58
  const headHeight = (_a = props.headHeight) !== null && _a !== void 0 ? _a : (0, _convertPx.convertPx)(40);
49
59
  const threshold = (_b = props.threshold) !== null && _b !== void 0 ? _b : (0, _convertPx.convertPx)(60);
50
60
  const [status, setStatus] = (0, _react2.useState)('pulling');
@@ -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;
@@ -2,6 +2,7 @@ export declare const base: {
2
2
  common: {
3
3
  confirm: string;
4
4
  cancel: string;
5
+ loading: string;
5
6
  };
6
7
  Calendar: {
7
8
  markItems: string[];
@@ -91,5 +92,10 @@ export declare const base: {
91
92
  Modal: {
92
93
  ok: string;
93
94
  };
95
+ PullToRefresh: {
96
+ pulling: string;
97
+ canRelease: string;
98
+ complete: string;
99
+ };
94
100
  };
95
101
  export declare type Locale = typeof base;
@@ -8,7 +8,8 @@ const typeTemplate = '${label} is not a valid ${type}';
8
8
  const base = {
9
9
  common: {
10
10
  confirm: 'Confirm',
11
- cancel: 'Cancel'
11
+ cancel: 'Cancel',
12
+ loading: 'Loading...'
12
13
  },
13
14
  Calendar: {
14
15
  markItems: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
@@ -97,6 +98,11 @@ const base = {
97
98
  },
98
99
  Modal: {
99
100
  ok: 'OK'
101
+ },
102
+ PullToRefresh: {
103
+ pulling: 'Scroll down to refresh',
104
+ canRelease: 'Release to refresh immediately',
105
+ complete: 'Refresh successful'
100
106
  }
101
107
  };
102
108
  exports.base = base;
@@ -2,6 +2,7 @@ declare const enUS: {
2
2
  common: {
3
3
  confirm: string;
4
4
  cancel: string;
5
+ loading: string;
5
6
  };
6
7
  Calendar: {
7
8
  markItems: string[];
@@ -91,5 +92,10 @@ declare const enUS: {
91
92
  Modal: {
92
93
  ok: string;
93
94
  };
95
+ PullToRefresh: {
96
+ pulling: string;
97
+ canRelease: string;
98
+ complete: string;
99
+ };
94
100
  };
95
101
  export default enUS;