antd-mobile 5.38.1 → 5.39.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 (110) hide show
  1. package/2x/bundle/antd-mobile.cjs.development.js +158 -124
  2. package/2x/bundle/antd-mobile.cjs.js +7 -7
  3. package/2x/bundle/antd-mobile.es.development.js +158 -124
  4. package/2x/bundle/antd-mobile.es.js +3726 -3707
  5. package/2x/bundle/antd-mobile.umd.development.js +158 -124
  6. package/2x/bundle/antd-mobile.umd.js +7 -7
  7. package/2x/bundle/style.css +16 -2
  8. package/2x/cjs/components/calendar-picker/calendar-picker.d.ts +9 -9
  9. package/2x/cjs/components/calendar-picker-view/calendar-picker-view.d.ts +5 -4
  10. package/2x/cjs/components/calendar-picker-view/calendar-picker-view.js +18 -11
  11. package/2x/cjs/components/date-picker/date-picker-week-utils.js +2 -2
  12. package/2x/cjs/components/ellipsis/useMeasure.js +7 -3
  13. package/2x/cjs/components/floating-panel/floating-panel.css +16 -2
  14. package/2x/cjs/components/floating-panel/floating-panel.d.ts +3 -1
  15. package/2x/cjs/components/floating-panel/floating-panel.js +43 -30
  16. package/2x/cjs/components/image-uploader/image-uploader.d.ts +3 -3
  17. package/2x/cjs/components/image-uploader/image-uploader.js +11 -11
  18. package/2x/cjs/components/image-viewer/image-viewer.d.ts +13 -4
  19. package/2x/cjs/components/image-viewer/image-viewer.js +8 -6
  20. package/2x/cjs/components/image-viewer/index.d.ts +4 -1
  21. package/2x/cjs/components/image-viewer/slide.d.ts +5 -1
  22. package/2x/cjs/components/image-viewer/slide.js +10 -5
  23. package/2x/cjs/components/image-viewer/slides.d.ts +4 -1
  24. package/2x/cjs/components/image-viewer/slides.js +14 -12
  25. package/2x/cjs/components/passcode-input/passcode-input.d.ts +7 -5
  26. package/2x/cjs/components/passcode-input/passcode-input.js +7 -6
  27. package/2x/cjs/components/popover/popover.d.ts +2 -2
  28. package/2x/cjs/components/popover/popover.js +11 -11
  29. package/2x/cjs/components/swipe-action/swipe-action.d.ts +3 -1
  30. package/2x/cjs/components/swipe-action/swipe-action.js +25 -23
  31. package/2x/es/components/calendar-picker/calendar-picker.d.ts +9 -9
  32. package/2x/es/components/calendar-picker-view/calendar-picker-view.d.ts +5 -4
  33. package/2x/es/components/calendar-picker-view/calendar-picker-view.js +18 -11
  34. package/2x/es/components/date-picker/date-picker-week-utils.js +2 -2
  35. package/2x/es/components/ellipsis/useMeasure.js +7 -3
  36. package/2x/es/components/floating-panel/floating-panel.css +16 -2
  37. package/2x/es/components/floating-panel/floating-panel.d.ts +3 -1
  38. package/2x/es/components/floating-panel/floating-panel.js +31 -19
  39. package/2x/es/components/image-uploader/image-uploader.d.ts +3 -3
  40. package/2x/es/components/image-uploader/image-uploader.js +11 -11
  41. package/2x/es/components/image-viewer/image-viewer.d.ts +13 -4
  42. package/2x/es/components/image-viewer/image-viewer.js +8 -6
  43. package/2x/es/components/image-viewer/index.d.ts +4 -1
  44. package/2x/es/components/image-viewer/slide.d.ts +5 -1
  45. package/2x/es/components/image-viewer/slide.js +11 -6
  46. package/2x/es/components/image-viewer/slides.d.ts +4 -1
  47. package/2x/es/components/image-viewer/slides.js +6 -4
  48. package/2x/es/components/passcode-input/passcode-input.d.ts +7 -5
  49. package/2x/es/components/passcode-input/passcode-input.js +6 -5
  50. package/2x/es/components/popover/popover.d.ts +2 -2
  51. package/2x/es/components/popover/popover.js +10 -10
  52. package/2x/es/components/swipe-action/swipe-action.d.ts +3 -1
  53. package/2x/es/components/swipe-action/swipe-action.js +9 -7
  54. package/2x/package.json +1 -1
  55. package/bundle/antd-mobile.cjs.development.js +158 -124
  56. package/bundle/antd-mobile.cjs.js +7 -7
  57. package/bundle/antd-mobile.compatible.umd.js +1 -1
  58. package/bundle/antd-mobile.es.development.js +158 -124
  59. package/bundle/antd-mobile.es.js +3726 -3707
  60. package/bundle/antd-mobile.umd.development.js +158 -124
  61. package/bundle/antd-mobile.umd.js +7 -7
  62. package/bundle/style.css +1 -1
  63. package/cjs/components/calendar-picker/calendar-picker.d.ts +9 -9
  64. package/cjs/components/calendar-picker-view/calendar-picker-view.d.ts +5 -4
  65. package/cjs/components/calendar-picker-view/calendar-picker-view.js +18 -11
  66. package/cjs/components/date-picker/date-picker-week-utils.js +2 -2
  67. package/cjs/components/ellipsis/useMeasure.js +7 -3
  68. package/cjs/components/floating-panel/floating-panel.css +12 -2
  69. package/cjs/components/floating-panel/floating-panel.d.ts +3 -1
  70. package/cjs/components/floating-panel/floating-panel.js +43 -30
  71. package/cjs/components/image-uploader/image-uploader.d.ts +3 -3
  72. package/cjs/components/image-uploader/image-uploader.js +11 -11
  73. package/cjs/components/image-viewer/image-viewer.d.ts +13 -4
  74. package/cjs/components/image-viewer/image-viewer.js +8 -6
  75. package/cjs/components/image-viewer/index.d.ts +4 -1
  76. package/cjs/components/image-viewer/slide.d.ts +5 -1
  77. package/cjs/components/image-viewer/slide.js +10 -5
  78. package/cjs/components/image-viewer/slides.d.ts +4 -1
  79. package/cjs/components/image-viewer/slides.js +14 -12
  80. package/cjs/components/passcode-input/passcode-input.d.ts +7 -5
  81. package/cjs/components/passcode-input/passcode-input.js +7 -6
  82. package/cjs/components/popover/popover.d.ts +2 -2
  83. package/cjs/components/popover/popover.js +11 -11
  84. package/cjs/components/swipe-action/swipe-action.d.ts +3 -1
  85. package/cjs/components/swipe-action/swipe-action.js +25 -23
  86. package/es/components/calendar-picker/calendar-picker.d.ts +9 -9
  87. package/es/components/calendar-picker-view/calendar-picker-view.d.ts +5 -4
  88. package/es/components/calendar-picker-view/calendar-picker-view.js +18 -11
  89. package/es/components/date-picker/date-picker-week-utils.js +2 -2
  90. package/es/components/ellipsis/useMeasure.js +7 -3
  91. package/es/components/floating-panel/floating-panel.css +12 -2
  92. package/es/components/floating-panel/floating-panel.d.ts +3 -1
  93. package/es/components/floating-panel/floating-panel.js +31 -19
  94. package/es/components/image-uploader/image-uploader.d.ts +3 -3
  95. package/es/components/image-uploader/image-uploader.js +11 -11
  96. package/es/components/image-viewer/image-viewer.d.ts +13 -4
  97. package/es/components/image-viewer/image-viewer.js +8 -6
  98. package/es/components/image-viewer/index.d.ts +4 -1
  99. package/es/components/image-viewer/slide.d.ts +5 -1
  100. package/es/components/image-viewer/slide.js +11 -6
  101. package/es/components/image-viewer/slides.d.ts +4 -1
  102. package/es/components/image-viewer/slides.js +6 -4
  103. package/es/components/passcode-input/passcode-input.d.ts +7 -5
  104. package/es/components/passcode-input/passcode-input.js +6 -5
  105. package/es/components/popover/popover.d.ts +2 -2
  106. package/es/components/popover/popover.js +10 -10
  107. package/es/components/swipe-action/swipe-action.d.ts +3 -1
  108. package/es/components/swipe-action/swipe-action.js +9 -7
  109. package/package.json +1 -1
  110. package/umd/antd-mobile.js +1 -1
@@ -27,9 +27,9 @@ export declare const CalendarPicker: React.ForwardRefExoticComponent<(({
27
27
  title?: React.ReactNode;
28
28
  confirmText?: string | undefined;
29
29
  weekStartsOn?: "Monday" | "Sunday" | undefined;
30
- renderTop?: ((date: Date) => React.ReactNode) | undefined;
31
- renderDate?: ((date: Date) => React.ReactNode) | undefined;
32
- renderBottom?: ((date: Date) => React.ReactNode) | undefined;
30
+ renderTop?: false | import("../calendar-picker-view/calendar-picker-view").CalendarPickerViewColumRender | undefined;
31
+ renderDate?: import("../calendar-picker-view/calendar-picker-view").CalendarPickerViewColumRender | undefined;
32
+ renderBottom?: false | import("../calendar-picker-view/calendar-picker-view").CalendarPickerViewColumRender | undefined;
33
33
  allowClear?: boolean | undefined;
34
34
  max?: Date | undefined;
35
35
  min?: Date | undefined;
@@ -61,9 +61,9 @@ export declare const CalendarPicker: React.ForwardRefExoticComponent<(({
61
61
  title?: React.ReactNode;
62
62
  confirmText?: string | undefined;
63
63
  weekStartsOn?: "Monday" | "Sunday" | undefined;
64
- renderTop?: ((date: Date) => React.ReactNode) | undefined;
65
- renderDate?: ((date: Date) => React.ReactNode) | undefined;
66
- renderBottom?: ((date: Date) => React.ReactNode) | undefined;
64
+ renderTop?: false | import("../calendar-picker-view/calendar-picker-view").CalendarPickerViewColumRender | undefined;
65
+ renderDate?: import("../calendar-picker-view/calendar-picker-view").CalendarPickerViewColumRender | undefined;
66
+ renderBottom?: false | import("../calendar-picker-view/calendar-picker-view").CalendarPickerViewColumRender | undefined;
67
67
  allowClear?: boolean | undefined;
68
68
  max?: Date | undefined;
69
69
  min?: Date | undefined;
@@ -95,9 +95,9 @@ export declare const CalendarPicker: React.ForwardRefExoticComponent<(({
95
95
  title?: React.ReactNode;
96
96
  confirmText?: string | undefined;
97
97
  weekStartsOn?: "Monday" | "Sunday" | undefined;
98
- renderTop?: ((date: Date) => React.ReactNode) | undefined;
99
- renderDate?: ((date: Date) => React.ReactNode) | undefined;
100
- renderBottom?: ((date: Date) => React.ReactNode) | undefined;
98
+ renderTop?: false | import("../calendar-picker-view/calendar-picker-view").CalendarPickerViewColumRender | undefined;
99
+ renderDate?: import("../calendar-picker-view/calendar-picker-view").CalendarPickerViewColumRender | undefined;
100
+ renderBottom?: false | import("../calendar-picker-view/calendar-picker-view").CalendarPickerViewColumRender | undefined;
101
101
  allowClear?: boolean | undefined;
102
102
  max?: Date | undefined;
103
103
  min?: Date | undefined;
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React, { ReactNode } from 'react';
2
2
  import { NativeProps } from '../../utils/native-props';
3
3
  import { DateRange, Page } from './convert';
4
4
  export declare const Context: React.Context<{
@@ -9,13 +9,14 @@ export declare type CalendarPickerViewRef = {
9
9
  jumpToToday: () => void;
10
10
  getDateRange: () => DateRange;
11
11
  };
12
+ export declare type CalendarPickerViewColumRender = (date: Date) => ReactNode;
12
13
  export declare type CalendarPickerViewProps = {
13
14
  title?: React.ReactNode | false;
14
15
  confirmText?: string;
15
16
  weekStartsOn?: 'Monday' | 'Sunday';
16
- renderTop?: (date: Date) => React.ReactNode;
17
- renderDate?: (date: Date) => React.ReactNode;
18
- renderBottom?: (date: Date) => React.ReactNode;
17
+ renderTop?: CalendarPickerViewColumRender | false;
18
+ renderDate?: CalendarPickerViewColumRender;
19
+ renderBottom?: CalendarPickerViewColumRender | false;
19
20
  allowClear?: boolean;
20
21
  max?: Date;
21
22
  min?: Date;
@@ -145,7 +145,6 @@ const CalendarPickerView = (0, _react.forwardRef)((p, ref) => {
145
145
  })), _react.default.createElement("div", {
146
146
  className: `${classPrefix}-cells`
147
147
  }, presetEmptyCells, Array(monthIterator.daysInMonth()).fill(null).map((_, index) => {
148
- var _a;
149
148
  const d = monthIterator.date(index + 1);
150
149
  let isSelect = false;
151
150
  let isBegin = false;
@@ -165,21 +164,33 @@ const CalendarPickerView = (0, _react.forwardRef)((p, ref) => {
165
164
  const disabled = props.shouldDisableDate ? props.shouldDisableDate(d.toDate()) : maxDay && d.isAfter(maxDay, 'day') || minDay && d.isBefore(minDay, 'day');
166
165
  const renderTop = () => {
167
166
  var _a;
167
+ if (props.renderTop === false) return null;
168
+ const contentWrapper = content => _react.default.createElement("div", {
169
+ className: `${classPrefix}-cell-top`
170
+ }, content);
168
171
  const top = (_a = props.renderTop) === null || _a === void 0 ? void 0 : _a.call(props, d.toDate());
169
172
  if (top) {
170
- return top;
173
+ return contentWrapper(top);
171
174
  }
172
175
  if (props.selectionMode === 'range') {
173
176
  if (isBegin) {
174
- return locale.Calendar.start;
177
+ return contentWrapper(locale.Calendar.start);
175
178
  }
176
179
  if (isEnd) {
177
- return locale.Calendar.end;
180
+ return contentWrapper(locale.Calendar.end);
178
181
  }
179
182
  }
180
183
  if (d.isSame(today, 'day') && !isSelect) {
181
- return locale.Calendar.today;
184
+ return contentWrapper(locale.Calendar.today);
182
185
  }
186
+ return contentWrapper(null);
187
+ };
188
+ const renderBottom = () => {
189
+ var _a;
190
+ if (props.renderBottom === false) return null;
191
+ return _react.default.createElement("div", {
192
+ className: `${classPrefix}-cell-bottom`
193
+ }, (_a = props.renderBottom) === null || _a === void 0 ? void 0 : _a.call(props, d.toDate()));
183
194
  };
184
195
  return _react.default.createElement("div", {
185
196
  key: d.valueOf(),
@@ -229,13 +240,9 @@ const CalendarPickerView = (0, _react.forwardRef)((p, ref) => {
229
240
  }
230
241
  }
231
242
  }
232
- }, _react.default.createElement("div", {
233
- className: `${classPrefix}-cell-top`
234
- }, renderTop()), _react.default.createElement("div", {
243
+ }, renderTop(), _react.default.createElement("div", {
235
244
  className: `${classPrefix}-cell-date`
236
- }, props.renderDate ? props.renderDate(d.toDate()) : d.date()), _react.default.createElement("div", {
237
- className: `${classPrefix}-cell-bottom`
238
- }, (_a = props.renderBottom) === null || _a === void 0 ? void 0 : _a.call(props, d.toDate())));
245
+ }, props.renderDate ? props.renderDate(d.toDate()) : d.date()), renderBottom());
239
246
  }))));
240
247
  monthIterator = monthIterator.add(1, 'month');
241
248
  }
@@ -7,9 +7,9 @@ exports.convertDateToStringArray = convertDateToStringArray;
7
7
  exports.convertStringArrayToDate = convertStringArrayToDate;
8
8
  exports.generateDatePickerColumns = generateDatePickerColumns;
9
9
  var _dayjs = _interopRequireDefault(require("dayjs"));
10
+ var _isLeapYear = _interopRequireDefault(require("dayjs/plugin/isLeapYear"));
10
11
  var _isoWeek = _interopRequireDefault(require("dayjs/plugin/isoWeek"));
11
12
  var _isoWeeksInYear = _interopRequireDefault(require("dayjs/plugin/isoWeeksInYear"));
12
- var _isLeapYear = _interopRequireDefault(require("dayjs/plugin/isLeapYear"));
13
13
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
14
  _dayjs.default.extend(_isoWeek.default);
15
15
  _dayjs.default.extend(_isoWeeksInYear.default);
@@ -93,6 +93,6 @@ function convertStringArrayToDate(value) {
93
93
  const yearString = (_a = value[0]) !== null && _a !== void 0 ? _a : '1900';
94
94
  const weekString = (_b = value[1]) !== null && _b !== void 0 ? _b : '1';
95
95
  const weekdayString = (_c = value[2]) !== null && _c !== void 0 ? _c : '1';
96
- const day = (0, _dayjs.default)().year(parseInt(yearString)).isoWeek(parseInt(weekString)).isoWeekday(parseInt(weekdayString)).hour(0).minute(0).second(0);
96
+ const day = (0, _dayjs.default)(`${parseInt(yearString)}-01-01`).isoWeek(parseInt(weekString)).isoWeekday(parseInt(weekdayString)).hour(0).minute(0).second(0);
97
97
  return day.toDate();
98
98
  }
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = useMeasure;
7
7
  var _rcUtil = require("rc-util");
8
8
  var _react = _interopRequireDefault(require("react"));
9
+ var _reactDom = require("react-dom");
9
10
  var _runes = _interopRequireDefault(require("runes2"));
10
11
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
12
  const ELLIPSIS_TEXT = '...';
@@ -26,8 +27,11 @@ function useMeasure(containerRef, content, rows, direction, expanded, expandNode
26
27
  const fullMeasureRef = _react.default.useRef(null);
27
28
  const midMeasureRef = _react.default.useRef(null);
28
29
  const startMeasure = (0, _rcUtil.useEvent)(() => {
29
- setStatus(1 /* PREPARE */);
30
- setWalkingIndexes([0, direction === 'middle' ? Math.ceil(contentChars.length / 2) : contentChars.length]);
30
+ // use batch update to avoid async update trigger 2 render
31
+ (0, _reactDom.unstable_batchedUpdates)(() => {
32
+ setStatus(1 /* PREPARE */);
33
+ setWalkingIndexes([0, direction === 'middle' ? Math.ceil(contentChars.length / 2) : contentChars.length]);
34
+ });
31
35
  });
32
36
  // Initialize
33
37
  _react.default.useLayoutEffect(() => {
@@ -39,7 +43,7 @@ function useMeasure(containerRef, content, rows, direction, expanded, expandNode
39
43
  if (status === 1 /* PREPARE */) {
40
44
  const fullMeasureHeight = ((_a = fullMeasureRef.current) === null || _a === void 0 ? void 0 : _a.offsetHeight) || 0;
41
45
  const singleRowMeasureHeight = ((_b = singleRowMeasureRef.current) === null || _b === void 0 ? void 0 : _b.offsetHeight) || 0;
42
- const rowMeasureHeight = singleRowMeasureHeight * rows;
46
+ const rowMeasureHeight = singleRowMeasureHeight * (rows + 0.5);
43
47
  if (fullMeasureHeight <= rowMeasureHeight) {
44
48
  setStatus(100 /* STABLE_NO_ELLIPSIS */);
45
49
  } else {
@@ -4,7 +4,6 @@
4
4
  --z-index: var(--adm-floating-panel-z-index, 900);
5
5
  position: fixed;
6
6
  z-index: var(--z-index);
7
- bottom: 0;
8
7
  left: 0;
9
8
  width: 100vw;
10
9
  display: flex;
@@ -24,7 +23,6 @@
24
23
  content: '';
25
24
  display: block;
26
25
  position: absolute;
27
- bottom: -100vh;
28
26
  height: 100vh;
29
27
  width: 100vw;
30
28
  background: var(--adm-color-background);
@@ -54,3 +52,15 @@
54
52
  overflow-y: scroll;
55
53
  background: var(--adm-color-background);
56
54
  }
55
+ .adm-floating-panel-top {
56
+ top: 0;
57
+ }
58
+ .adm-floating-panel-top::after {
59
+ top: -100vh;
60
+ }
61
+ .adm-floating-panel-bottom {
62
+ bottom: 0;
63
+ }
64
+ .adm-floating-panel-bottom::after {
65
+ bottom: -100vh;
66
+ }
@@ -1,5 +1,5 @@
1
- import React from 'react';
2
1
  import type { ReactNode } from 'react';
2
+ import React from 'react';
3
3
  import { NativeProps } from '../../utils/native-props';
4
4
  export declare type FloatingPanelRef = {
5
5
  setHeight: (height: number, options?: {
@@ -11,12 +11,14 @@ export declare type FloatingPanelProps = {
11
11
  children: ReactNode;
12
12
  onHeightChange?: (height: number, animating: boolean) => void;
13
13
  handleDraggingOfContent?: boolean;
14
+ placement?: 'bottom' | 'top';
14
15
  } & NativeProps<'--border-radius' | '--z-index' | '--header-height'>;
15
16
  export declare const FloatingPanel: React.ForwardRefExoticComponent<{
16
17
  anchors: number[];
17
18
  children: ReactNode;
18
19
  onHeightChange?: ((height: number, animating: boolean) => void) | undefined;
19
20
  handleDraggingOfContent?: boolean | undefined;
21
+ placement?: "bottom" | "top" | undefined;
20
22
  } & {
21
23
  className?: string | undefined;
22
24
  style?: (React.CSSProperties & Partial<Record<"--z-index" | "--border-radius" | "--header-height", string>>) | undefined;
@@ -4,43 +4,47 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.FloatingPanel = void 0;
7
- var _react = _interopRequireWildcard(require("react"));
8
- var _nativeProps = require("../../utils/native-props");
9
- var _react2 = require("@use-gesture/react");
10
7
  var _web = require("@react-spring/web");
11
- var _supportsPassive = require("../../utils/supports-passive");
8
+ var _react = require("@use-gesture/react");
9
+ var _ahooks = require("ahooks");
10
+ var _classnames = _interopRequireDefault(require("classnames"));
11
+ var _react2 = _interopRequireWildcard(require("react"));
12
+ var _nativeProps = require("../../utils/native-props");
12
13
  var _nearest = require("../../utils/nearest");
13
- var _withDefaultProps = require("../../utils/with-default-props");
14
+ var _supportsPassive = require("../../utils/supports-passive");
14
15
  var _useLockScroll = require("../../utils/use-lock-scroll");
15
- var _ahooks = require("ahooks");
16
+ var _withDefaultProps = require("../../utils/with-default-props");
16
17
  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); }
17
18
  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; }
19
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
20
  const classPrefix = 'adm-floating-panel';
19
21
  const defaultProps = {
20
22
  handleDraggingOfContent: true
21
23
  };
22
- const FloatingPanel = (0, _react.forwardRef)((p, ref) => {
24
+ const FloatingPanel = (0, _react2.forwardRef)((p, ref) => {
23
25
  var _a, _b;
24
26
  const props = (0, _withDefaultProps.mergeProps)(defaultProps, p);
25
27
  const {
26
- anchors
28
+ anchors,
29
+ placement = 'bottom'
27
30
  } = props;
28
31
  const maxHeight = (_a = anchors[anchors.length - 1]) !== null && _a !== void 0 ? _a : window.innerHeight;
29
- const possibles = anchors.map(x => -x);
30
- const elementRef = (0, _react.useRef)(null);
31
- const headerRef = (0, _react.useRef)(null);
32
- const contentRef = (0, _react.useRef)(null);
33
- const [pulling, setPulling] = (0, _react.useState)(false);
34
- const pullingRef = (0, _react.useRef)(false);
32
+ const isBottomPlacement = placement !== 'top';
33
+ const possibles = isBottomPlacement ? anchors.map(x => -x) : anchors;
34
+ const elementRef = (0, _react2.useRef)(null);
35
+ const headerRef = (0, _react2.useRef)(null);
36
+ const contentRef = (0, _react2.useRef)(null);
37
+ const [pulling, setPulling] = (0, _react2.useState)(false);
38
+ const pullingRef = (0, _react2.useRef)(false);
35
39
  const bounds = {
36
- top: possibles[possibles.length - 1],
37
- bottom: possibles[0]
40
+ top: Math.min(...possibles),
41
+ bottom: Math.max(...possibles)
38
42
  };
39
43
  const onHeightChange = (0, _ahooks.useMemoizedFn)((_b = props.onHeightChange) !== null && _b !== void 0 ? _b : () => {});
40
44
  const [{
41
45
  y
42
46
  }, api] = (0, _web.useSpring)(() => ({
43
- y: bounds.bottom,
47
+ y: isBottomPlacement ? bounds.bottom : bounds.top,
44
48
  config: {
45
49
  tension: 300
46
50
  },
@@ -48,7 +52,7 @@ const FloatingPanel = (0, _react.forwardRef)((p, ref) => {
48
52
  onHeightChange(-result.value.y, y.isAnimating);
49
53
  }
50
54
  }));
51
- (0, _react2.useDrag)(state => {
55
+ (0, _react.useDrag)(state => {
52
56
  const [, offsetY] = state.offset;
53
57
  if (state.first) {
54
58
  const target = state.event.target;
@@ -100,7 +104,7 @@ const FloatingPanel = (0, _react.forwardRef)((p, ref) => {
100
104
  passive: false
101
105
  } : undefined
102
106
  });
103
- (0, _react.useImperativeHandle)(ref, () => ({
107
+ (0, _react2.useImperativeHandle)(ref, () => ({
104
108
  setHeight: (height, options) => {
105
109
  api.start({
106
110
  y: -height,
@@ -109,26 +113,35 @@ const FloatingPanel = (0, _react.forwardRef)((p, ref) => {
109
113
  }
110
114
  }), [api]);
111
115
  (0, _useLockScroll.useLockScroll)(elementRef, true);
112
- return (0, _nativeProps.withNativeProps)(props, _react.default.createElement(_web.animated.div, {
116
+ const HeaderNode = _react2.default.createElement("div", {
117
+ className: `${classPrefix}-header`,
118
+ ref: headerRef
119
+ }, _react2.default.createElement("div", {
120
+ className: `${classPrefix}-bar`
121
+ }));
122
+ return (0, _nativeProps.withNativeProps)(props, _react2.default.createElement(_web.animated.div, {
113
123
  ref: elementRef,
114
- className: classPrefix,
124
+ className: (0, _classnames.default)(classPrefix, `${classPrefix}-${placement}`),
115
125
  style: {
116
126
  height: Math.round(maxHeight),
117
- translateY: y.to(y => `calc(100% + (${Math.round(y)}px))`)
127
+ translateY: y.to(y => {
128
+ if (isBottomPlacement) {
129
+ return `calc(100% + (${Math.round(y)}px))`;
130
+ }
131
+ if (placement === 'top') {
132
+ return `calc(-100% + (${Math.round(y)}px))`;
133
+ }
134
+ return y;
135
+ })
118
136
  }
119
- }, _react.default.createElement("div", {
137
+ }, _react2.default.createElement("div", {
120
138
  className: `${classPrefix}-mask`,
121
139
  style: {
122
140
  display: pulling ? 'block' : 'none'
123
141
  }
124
- }), _react.default.createElement("div", {
125
- className: `${classPrefix}-header`,
126
- ref: headerRef
127
- }, _react.default.createElement("div", {
128
- className: `${classPrefix}-bar`
129
- })), _react.default.createElement("div", {
142
+ }), isBottomPlacement && HeaderNode, _react2.default.createElement("div", {
130
143
  className: `${classPrefix}-content`,
131
144
  ref: contentRef
132
- }, props.children)));
145
+ }, props.children), placement === 'top' && HeaderNode));
133
146
  });
134
147
  exports.FloatingPanel = FloatingPanel;
@@ -1,8 +1,8 @@
1
+ import type { CSSProperties, InputHTMLAttributes, ReactElement, ReactNode } from 'react';
1
2
  import React from 'react';
2
- import type { ReactNode, InputHTMLAttributes, ReactElement } from 'react';
3
3
  import { NativeProps } from '../../utils/native-props';
4
- import type { ImageProps } from '../image';
5
4
  import { GridProps } from '../grid';
5
+ import type { ImageProps } from '../image';
6
6
  export declare type TaskStatus = 'pending' | 'fail' | 'success';
7
7
  export interface ImageUploadItem {
8
8
  key?: string | number;
@@ -71,7 +71,7 @@ export declare const ImageUploader: React.ForwardRefExoticComponent<{
71
71
  renderItem?: ((originNode: ReactElement, file: ImageUploadItem, fileList: ImageUploadItem[]) => ReactNode) | undefined;
72
72
  } & {
73
73
  className?: string | undefined;
74
- style?: (React.CSSProperties & Partial<Record<"--gap" | "--gap-vertical" | "--gap-horizontal" | "--cell-size", string>>) | undefined;
74
+ style?: (CSSProperties & Partial<Record<"--gap" | "--gap-vertical" | "--gap-horizontal" | "--cell-size", string>>) | undefined;
75
75
  tabIndex?: number | undefined;
76
76
  } & React.AriaAttributes & React.RefAttributes<ImageUploaderRef>>;
77
77
  export {};
@@ -5,18 +5,18 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.ImageUploader = void 0;
7
7
  var _tslib = require("tslib");
8
- var _react = _interopRequireWildcard(require("react"));
9
- var _antdMobileIcons = require("antd-mobile-icons");
10
- var _withDefaultProps = require("../../utils/with-default-props");
11
- var _imageViewer = _interopRequireDefault(require("../image-viewer"));
12
- var _previewItem = _interopRequireDefault(require("./preview-item"));
13
- var _usePropsValue = require("../../utils/use-props-value");
14
8
  var _ahooks = require("ahooks");
15
- var _space = _interopRequireDefault(require("../space"));
16
- var _nativeProps = require("../../utils/native-props");
9
+ var _antdMobileIcons = require("antd-mobile-icons");
10
+ var _react = _interopRequireWildcard(require("react"));
17
11
  var _measureCssLength = require("../../utils/measure-css-length");
12
+ var _nativeProps = require("../../utils/native-props");
13
+ var _usePropsValue = require("../../utils/use-props-value");
14
+ var _withDefaultProps = require("../../utils/with-default-props");
18
15
  var _configProvider = require("../config-provider");
19
16
  var _grid = _interopRequireDefault(require("../grid"));
17
+ var _imageViewer = _interopRequireDefault(require("../image-viewer"));
18
+ var _space = _interopRequireDefault(require("../space"));
19
+ var _previewItem = _interopRequireDefault(require("./preview-item"));
20
20
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
21
  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); }
22
22
  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; }
@@ -153,10 +153,10 @@ const ImageUploader = (0, _react.forwardRef)((p, ref) => {
153
153
  return task;
154
154
  });
155
155
  });
156
- throw e;
156
+ console.error(e);
157
157
  }
158
- }))).catch(error => console.error(error));
159
- setValue(prev => prev.concat(newVal));
158
+ })));
159
+ setValue(prev => prev.concat(newVal).filter(Boolean));
160
160
  });
161
161
  }
162
162
  const imageViewerHandlerRef = (0, _react.useRef)(null);
@@ -1,15 +1,18 @@
1
- import React from 'react';
2
1
  import type { FC, ReactNode } from 'react';
2
+ import React from 'react';
3
3
  import { GetContainer } from '../../utils/render-to-container';
4
4
  import { SlidesRef } from './slides';
5
5
  export declare type ImageViewerProps = {
6
- image?: string;
6
+ image: string;
7
7
  maxZoom?: number | 'auto';
8
8
  getContainer?: GetContainer;
9
9
  visible?: boolean;
10
10
  onClose?: () => void;
11
11
  afterClose?: () => void;
12
12
  renderFooter?: (image: string) => ReactNode;
13
+ imageRender?: (image: string, { index }: {
14
+ index: number;
15
+ }) => ReactNode;
13
16
  classNames?: {
14
17
  mask?: string;
15
18
  body?: string;
@@ -17,15 +20,21 @@ export declare type ImageViewerProps = {
17
20
  };
18
21
  export declare const ImageViewer: FC<ImageViewerProps>;
19
22
  export declare type MultiImageViewerRef = SlidesRef;
20
- export declare type MultiImageViewerProps = Omit<ImageViewerProps, 'image' | 'renderFooter'> & {
23
+ export declare type MultiImageViewerProps = Omit<ImageViewerProps, 'image' | 'renderFooter' | 'imageRender'> & {
21
24
  images?: string[];
22
25
  defaultIndex?: number;
23
26
  onIndexChange?: (index: number) => void;
24
27
  renderFooter?: (image: string, index: number) => ReactNode;
28
+ imageRender?: (image: string, { index }: {
29
+ index: number;
30
+ }) => ReactNode;
25
31
  };
26
- export declare const MultiImageViewer: React.ForwardRefExoticComponent<Omit<ImageViewerProps, "image" | "renderFooter"> & {
32
+ export declare const MultiImageViewer: React.ForwardRefExoticComponent<Omit<ImageViewerProps, "image" | "imageRender" | "renderFooter"> & {
27
33
  images?: string[] | undefined;
28
34
  defaultIndex?: number | undefined;
29
35
  onIndexChange?: ((index: number) => void) | undefined;
30
36
  renderFooter?: ((image: string, index: number) => ReactNode) | undefined;
37
+ imageRender?: ((image: string, { index }: {
38
+ index: number;
39
+ }) => ReactNode) | undefined;
31
40
  } & React.RefAttributes<SlidesRef>>;
@@ -4,17 +4,17 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.MultiImageViewer = exports.ImageViewer = void 0;
7
+ var _classnames = _interopRequireDefault(require("classnames"));
7
8
  var _react = _interopRequireWildcard(require("react"));
8
- var _withDefaultProps = require("../../utils/with-default-props");
9
9
  var _renderToContainer = require("../../utils/render-to-container");
10
+ var _withDefaultProps = require("../../utils/with-default-props");
10
11
  var _mask = _interopRequireDefault(require("../mask"));
11
12
  var _safeArea = _interopRequireDefault(require("../safe-area"));
12
13
  var _slide = require("./slide");
13
14
  var _slides = require("./slides");
14
- var _classnames = _interopRequireDefault(require("classnames"));
15
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
15
  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); }
17
16
  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; }
17
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
18
  const classPrefix = `adm-image-viewer`;
19
19
  const defaultProps = {
20
20
  maxZoom: 3,
@@ -33,10 +33,11 @@ const ImageViewer = p => {
33
33
  className: (_a = props === null || props === void 0 ? void 0 : props.classNames) === null || _a === void 0 ? void 0 : _a.mask
34
34
  }, _react.default.createElement("div", {
35
35
  className: (0, _classnames.default)(`${classPrefix}-content`, (_b = props === null || props === void 0 ? void 0 : props.classNames) === null || _b === void 0 ? void 0 : _b.body)
36
- }, props.image && _react.default.createElement(_slide.Slide, {
36
+ }, (props.image || typeof props.imageRender === 'function') && _react.default.createElement(_slide.Slide, {
37
37
  image: props.image,
38
38
  onTap: props.onClose,
39
- maxZoom: props.maxZoom
39
+ maxZoom: props.maxZoom,
40
+ imageRender: props.imageRender
40
41
  })), props.image && _react.default.createElement("div", {
41
42
  className: `${classPrefix}-footer`
42
43
  }, (_c = props.renderFooter) === null || _c === void 0 ? void 0 : _c.call(props, props.image), _react.default.createElement(_safeArea.default, {
@@ -81,7 +82,8 @@ const MultiImageViewer = (0, _react.forwardRef)((p, ref) => {
81
82
  onIndexChange: onSlideChange,
82
83
  images: props.images,
83
84
  onTap: props.onClose,
84
- maxZoom: props.maxZoom
85
+ maxZoom: props.maxZoom,
86
+ imageRender: props.imageRender
85
87
  })), props.images && _react.default.createElement("div", {
86
88
  className: `${classPrefix}-footer`
87
89
  }, (_c = props.renderFooter) === null || _c === void 0 ? void 0 : _c.call(props, props.images[index], index), _react.default.createElement(_safeArea.default, {
@@ -3,11 +3,14 @@ import { showMultiImageViewer, showImageViewer, clearImageViewer } from './metho
3
3
  export type { ImageViewerProps, MultiImageViewerProps, MultiImageViewerRef, } from './image-viewer';
4
4
  export type { ImageViewerShowHandler } from './methods';
5
5
  declare const _default: import("react").FC<import("./image-viewer").ImageViewerProps> & {
6
- Multi: import("react").ForwardRefExoticComponent<Omit<import("./image-viewer").ImageViewerProps, "image" | "renderFooter"> & {
6
+ Multi: import("react").ForwardRefExoticComponent<Omit<import("./image-viewer").ImageViewerProps, "image" | "imageRender" | "renderFooter"> & {
7
7
  images?: string[] | undefined;
8
8
  defaultIndex?: number | undefined;
9
9
  onIndexChange?: ((index: number) => void) | undefined;
10
10
  renderFooter?: ((image: string, index: number) => import("react").ReactNode) | undefined;
11
+ imageRender?: ((image: string, { index }: {
12
+ index: number;
13
+ }) => import("react").ReactNode) | undefined;
11
14
  } & import("react").RefAttributes<import("./slides").SlidesRef>> & {
12
15
  show: typeof showMultiImageViewer;
13
16
  };
@@ -1,10 +1,14 @@
1
- import type { FC, MutableRefObject } from 'react';
1
+ import type { FC, MutableRefObject, ReactNode } from 'react';
2
2
  declare type Props = {
3
3
  image: string;
4
4
  maxZoom: number | 'auto';
5
5
  onTap?: () => void;
6
6
  onZoomChange?: (zoom: number) => void;
7
7
  dragLockRef?: MutableRefObject<boolean>;
8
+ imageRender?: (image: string, { index }: {
9
+ index: number;
10
+ }) => ReactNode;
11
+ index?: number;
8
12
  };
9
13
  export declare const Slide: FC<Props>;
10
14
  export {};
@@ -4,20 +4,22 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.Slide = void 0;
7
- var _react = _interopRequireWildcard(require("react"));
8
7
  var _web = require("@react-spring/web");
9
8
  var _ahooks = require("ahooks");
10
- var _rubberband = require("../../utils/rubberband");
11
- var _useDragAndPinch = require("../../utils/use-drag-and-pinch");
9
+ var _react = _interopRequireWildcard(require("react"));
12
10
  var _bound = require("../../utils/bound");
13
11
  var mat = _interopRequireWildcard(require("../../utils/matrix"));
12
+ var _rubberband = require("../../utils/rubberband");
13
+ var _useDragAndPinch = require("../../utils/use-drag-and-pinch");
14
14
  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); }
15
15
  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; }
16
16
  const classPrefix = `adm-image-viewer`;
17
17
  const Slide = props => {
18
18
  const {
19
19
  dragLockRef,
20
- maxZoom
20
+ maxZoom,
21
+ imageRender,
22
+ index
21
23
  } = props;
22
24
  const initialMartix = (0, _react.useRef)([]);
23
25
  const controlRef = (0, _react.useRef)(null);
@@ -227,6 +229,9 @@ const Slide = props => {
227
229
  }
228
230
  }
229
231
  });
232
+ const customRendering = typeof imageRender === 'function' && imageRender(props.image, {
233
+ index
234
+ });
230
235
  return _react.default.createElement("div", {
231
236
  className: `${classPrefix}-slide`
232
237
  }, _react.default.createElement("div", {
@@ -237,7 +242,7 @@ const Slide = props => {
237
242
  style: {
238
243
  matrix
239
244
  }
240
- }, _react.default.createElement("img", {
245
+ }, customRendering ? customRendering : _react.default.createElement("img", {
241
246
  ref: imgRef,
242
247
  src: props.image,
243
248
  draggable: false,
@@ -1,10 +1,13 @@
1
- import React from 'react';
1
+ import React, { ReactNode } from 'react';
2
2
  export declare type SlidesType = {
3
3
  images: string[];
4
4
  onTap?: () => void;
5
5
  maxZoom: number;
6
6
  defaultIndex: number;
7
7
  onIndexChange?: (index: number) => void;
8
+ imageRender?: (image: string, { index }: {
9
+ index: number;
10
+ }) => ReactNode;
8
11
  };
9
12
  export declare type SlidesRef = {
10
13
  swipeTo: (index: number, immediate?: boolean) => void;