antd-mobile 5.0.0-rc.7 → 5.0.0-rc.8

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 (121) hide show
  1. package/2x/README.md +4 -0
  2. package/2x/cjs/components/checkbox/checkbox.css +1 -1
  3. package/2x/cjs/components/date-picker/date-picker.js +1 -1
  4. package/2x/cjs/components/image/lazy-detector.js +4 -1
  5. package/2x/cjs/components/image-uploader/image-uploader.js +9 -3
  6. package/2x/cjs/components/image-viewer/slide.js +0 -5
  7. package/2x/cjs/components/index-bar/index-bar.css +1 -1
  8. package/2x/cjs/components/infinite-scroll/infinite-scroll.js +1 -1
  9. package/2x/cjs/components/mask/mask.js +3 -2
  10. package/2x/cjs/components/number-keyboard/number-keyboard.js +1 -1
  11. package/2x/cjs/components/picker/picker.js +1 -1
  12. package/2x/cjs/components/picker-view/picker-view.js +2 -2
  13. package/2x/cjs/components/picker-view/{column.d.ts → wheel.d.ts} +1 -1
  14. package/{cjs/components/picker-view/column.js → 2x/cjs/components/picker-view/wheel.js} +9 -6
  15. package/2x/cjs/components/radio/radio.css +1 -1
  16. package/2x/cjs/components/skeleton/index.d.ts +8 -0
  17. package/2x/cjs/components/skeleton/index.js +19 -0
  18. package/2x/cjs/components/skeleton/skeleton.css +45 -0
  19. package/2x/cjs/components/skeleton/skeleton.d.ts +15 -0
  20. package/2x/cjs/components/skeleton/skeleton.js +61 -0
  21. package/2x/cjs/components/stepper/stepper.d.ts +1 -0
  22. package/2x/cjs/components/stepper/stepper.js +4 -2
  23. package/2x/cjs/components/tab-bar/tab-bar.css +1 -1
  24. package/2x/cjs/components/tab-bar/tab-bar.d.ts +1 -0
  25. package/2x/cjs/components/tab-bar/tab-bar.js +24 -11
  26. package/2x/cjs/index.d.ts +2 -1
  27. package/2x/cjs/index.js +10 -2
  28. package/2x/cjs/utils/use-mutation-effect.js +1 -1
  29. package/2x/cjs/utils/use-props-value.js +1 -1
  30. package/2x/cjs/utils/use-resize-effect.js +1 -1
  31. package/2x/es/components/checkbox/checkbox.css +1 -1
  32. package/2x/es/components/date-picker/date-picker.js +2 -2
  33. package/2x/es/components/image/lazy-detector.js +4 -1
  34. package/2x/es/components/image-uploader/image-uploader.js +10 -4
  35. package/2x/es/components/image-viewer/slide.js +0 -5
  36. package/2x/es/components/index-bar/index-bar.css +1 -1
  37. package/2x/es/components/infinite-scroll/infinite-scroll.js +2 -2
  38. package/2x/es/components/mask/mask.js +3 -2
  39. package/2x/es/components/number-keyboard/number-keyboard.js +2 -2
  40. package/2x/es/components/picker/picker.js +2 -2
  41. package/2x/es/components/picker-view/picker-view.js +2 -2
  42. package/{cjs/components/picker-view/column.d.ts → 2x/es/components/picker-view/wheel.d.ts} +1 -1
  43. package/{es/components/picker-view/column.js → 2x/es/components/picker-view/wheel.js} +7 -4
  44. package/2x/es/components/radio/radio.css +1 -1
  45. package/2x/es/components/skeleton/index.d.ts +8 -0
  46. package/2x/es/components/skeleton/index.js +7 -0
  47. package/2x/es/components/skeleton/skeleton.css +45 -0
  48. package/2x/es/components/skeleton/skeleton.d.ts +15 -0
  49. package/2x/es/components/skeleton/skeleton.js +36 -0
  50. package/2x/es/components/stepper/stepper.d.ts +1 -0
  51. package/2x/es/components/stepper/stepper.js +4 -2
  52. package/2x/es/components/tab-bar/tab-bar.css +1 -1
  53. package/2x/es/components/tab-bar/tab-bar.d.ts +1 -0
  54. package/2x/es/components/tab-bar/tab-bar.js +22 -11
  55. package/2x/es/index.d.ts +2 -1
  56. package/2x/es/index.js +3 -2
  57. package/2x/es/utils/use-mutation-effect.js +2 -2
  58. package/2x/es/utils/use-props-value.js +2 -2
  59. package/2x/es/utils/use-resize-effect.js +2 -2
  60. package/2x/package.json +3 -3
  61. package/README.md +4 -0
  62. package/cjs/components/checkbox/checkbox.css +1 -1
  63. package/cjs/components/date-picker/date-picker.js +1 -1
  64. package/cjs/components/image/lazy-detector.js +4 -1
  65. package/cjs/components/image-uploader/image-uploader.js +9 -3
  66. package/cjs/components/image-viewer/slide.js +0 -5
  67. package/cjs/components/index-bar/index-bar.css +1 -1
  68. package/cjs/components/infinite-scroll/infinite-scroll.js +1 -1
  69. package/cjs/components/mask/mask.js +3 -2
  70. package/cjs/components/number-keyboard/number-keyboard.js +1 -1
  71. package/cjs/components/picker/picker.js +1 -1
  72. package/cjs/components/picker-view/picker-view.js +2 -2
  73. package/{2x/es/components/picker-view/column.d.ts → cjs/components/picker-view/wheel.d.ts} +1 -1
  74. package/{2x/cjs/components/picker-view/column.js → cjs/components/picker-view/wheel.js} +9 -6
  75. package/cjs/components/radio/radio.css +1 -1
  76. package/cjs/components/skeleton/index.d.ts +8 -0
  77. package/cjs/components/skeleton/index.js +19 -0
  78. package/cjs/components/skeleton/skeleton.css +39 -0
  79. package/cjs/components/skeleton/skeleton.d.ts +15 -0
  80. package/cjs/components/skeleton/skeleton.js +61 -0
  81. package/cjs/components/stepper/stepper.d.ts +1 -0
  82. package/cjs/components/stepper/stepper.js +4 -2
  83. package/cjs/components/tab-bar/tab-bar.css +1 -1
  84. package/cjs/components/tab-bar/tab-bar.d.ts +1 -0
  85. package/cjs/components/tab-bar/tab-bar.js +24 -11
  86. package/cjs/index.d.ts +2 -1
  87. package/cjs/index.js +10 -2
  88. package/cjs/utils/use-mutation-effect.js +1 -1
  89. package/cjs/utils/use-props-value.js +1 -1
  90. package/cjs/utils/use-resize-effect.js +1 -1
  91. package/es/components/checkbox/checkbox.css +1 -1
  92. package/es/components/date-picker/date-picker.js +2 -2
  93. package/es/components/image/lazy-detector.js +4 -1
  94. package/es/components/image-uploader/image-uploader.js +10 -4
  95. package/es/components/image-viewer/slide.js +0 -5
  96. package/es/components/index-bar/index-bar.css +1 -1
  97. package/es/components/infinite-scroll/infinite-scroll.js +2 -2
  98. package/es/components/mask/mask.js +3 -2
  99. package/es/components/number-keyboard/number-keyboard.js +2 -2
  100. package/es/components/picker/picker.js +2 -2
  101. package/es/components/picker-view/picker-view.js +2 -2
  102. package/es/components/picker-view/{column.d.ts → wheel.d.ts} +1 -1
  103. package/{2x/es/components/picker-view/column.js → es/components/picker-view/wheel.js} +7 -4
  104. package/es/components/radio/radio.css +1 -1
  105. package/es/components/skeleton/index.d.ts +8 -0
  106. package/es/components/skeleton/index.js +7 -0
  107. package/es/components/skeleton/skeleton.css +39 -0
  108. package/es/components/skeleton/skeleton.d.ts +15 -0
  109. package/es/components/skeleton/skeleton.js +36 -0
  110. package/es/components/stepper/stepper.d.ts +1 -0
  111. package/es/components/stepper/stepper.js +4 -2
  112. package/es/components/tab-bar/tab-bar.css +1 -1
  113. package/es/components/tab-bar/tab-bar.d.ts +1 -0
  114. package/es/components/tab-bar/tab-bar.js +22 -11
  115. package/es/index.d.ts +2 -1
  116. package/es/index.js +3 -2
  117. package/es/utils/use-mutation-effect.js +2 -2
  118. package/es/utils/use-props-value.js +2 -2
  119. package/es/utils/use-resize-effect.js +2 -2
  120. package/package.json +3 -3
  121. package/umd/antd-mobile.js +1 -1
@@ -36,7 +36,7 @@ import { mergeProps } from '../../utils/with-default-props';
36
36
  import ImageViewer from '../image-viewer';
37
37
  import PreviewItem from './preview-item';
38
38
  import { usePropsValue } from '../../utils/use-props-value';
39
- import { usePersistFn } from 'ahooks';
39
+ import { useMemoizedFn } from 'ahooks';
40
40
  import Space from '../space';
41
41
  import { withNativeProps } from '../../utils/native-props';
42
42
  var classPrefix = "adm-image-uploader";
@@ -56,7 +56,7 @@ export var ImageUploader = function ImageUploader(p) {
56
56
  value = _usePropsValue[0],
57
57
  setValue = _usePropsValue[1];
58
58
 
59
- var updateValue = usePersistFn(function (updater) {
59
+ var updateValue = useMemoizedFn(function (updater) {
60
60
  setValue(updater(value));
61
61
  });
62
62
 
@@ -167,9 +167,15 @@ export var ImageUploader = function ImageUploader(p) {
167
167
  });
168
168
  });
169
169
  updateValue(function (prev) {
170
- return [].concat(prev, [{
170
+ var newVal = {
171
171
  url: result.url
172
- }]);
172
+ };
173
+
174
+ if (result.extra !== undefined) {
175
+ newVal.extra = result.extra;
176
+ }
177
+
178
+ return [].concat(prev, [newVal]);
173
179
  });
174
180
  _context.next = 12;
175
181
  break;
@@ -92,11 +92,6 @@ export var Slide = function Slide(props) {
92
92
  }
93
93
  },
94
94
  pinch: {
95
- transform: function transform(_ref) {
96
- var d = _ref[0],
97
- a = _ref[1];
98
- return [d < 0 ? d * 0.5 : d * 2, 0];
99
- },
100
95
  from: function from() {
101
96
  return [zoom.get(), 0];
102
97
  }
@@ -58,7 +58,7 @@
58
58
 
59
59
  .adm-index-bar-sidebar-row {
60
60
  cursor: pointer;
61
- width: 100%;
61
+ width: auto;
62
62
  text-align: right;
63
63
  position: relative;
64
64
  padding: 0 24px;
@@ -1,6 +1,6 @@
1
1
  import { mergeProps } from '../../utils/with-default-props';
2
2
  import React, { useEffect, useRef } from 'react';
3
- import { useLockFn, usePersistFn } from 'ahooks';
3
+ import { useLockFn, useMemoizedFn } from 'ahooks';
4
4
  import { withNativeProps } from '../../utils/native-props';
5
5
  import { getScrollParent } from '../../utils/get-scroll-parent';
6
6
  import Loading from '../loading';
@@ -25,7 +25,7 @@ export var InfiniteScroll = function InfiniteScroll(p) {
25
25
  });
26
26
  var elementRef = useRef(null);
27
27
  var checkTimeoutRef = useRef();
28
- var check = usePersistFn(function () {
28
+ var check = useMemoizedFn(function () {
29
29
  window.clearTimeout(checkTimeoutRef.current);
30
30
  checkTimeoutRef.current = window.setTimeout(function () {
31
31
  if (!props.hasMore) return;
@@ -77,9 +77,10 @@ export var Mask = function Mask(p) {
77
77
  var node = withStopPropagation(props.stopPropagation, withNativeProps(props, /*#__PURE__*/React.createElement(animated.div, {
78
78
  className: classPrefix,
79
79
  ref: ref,
80
- style: Object.assign(Object.assign({}, props.style), {
80
+ style: Object.assign(Object.assign({
81
81
  background: background,
82
- opacity: opacity,
82
+ opacity: opacity
83
+ }, props.style), {
83
84
  display: active ? 'unset' : 'none'
84
85
  })
85
86
  }, props.onMaskClick && /*#__PURE__*/React.createElement("div", {
@@ -6,7 +6,7 @@ import { shuffle } from '../../utils/shuffle';
6
6
  import Popup from '../popup';
7
7
  import { withNativeProps } from '../../utils/native-props';
8
8
  import SafeArea from '../safe-area';
9
- import { usePersistFn } from 'ahooks';
9
+ import { useMemoizedFn } from 'ahooks';
10
10
  var classPrefix = 'adm-number-keyboard';
11
11
  var defaultProps = {
12
12
  defaultVisible: false,
@@ -43,7 +43,7 @@ export var NumberKeyboard = function NumberKeyboard(p) {
43
43
  }, [customKey, confirmText, randomOrder, randomOrder && visible]);
44
44
  var timeoutRef = useRef(-1);
45
45
  var intervalRef = useRef(-1);
46
- var onDelete = usePersistFn(function () {
46
+ var onDelete = useMemoizedFn(function () {
47
47
  var _a;
48
48
 
49
49
  (_a = props.onDelete) === null || _a === void 0 ? void 0 : _a.call(props);
@@ -7,7 +7,7 @@ import PickerView from '../picker-view';
7
7
  import { useColumns } from '../picker-view/use-columns';
8
8
  import { useConfig } from '../config-provider';
9
9
  import { usePickerValueExtend } from '../picker-view/use-picker-value-extend';
10
- import { usePersistFn } from 'ahooks';
10
+ import { useMemoizedFn } from 'ahooks';
11
11
  var classPrefix = "adm-picker";
12
12
  var defaultProps = {
13
13
  defaultValue: []
@@ -51,7 +51,7 @@ export var Picker = /*#__PURE__*/memo(function (p) {
51
51
  setInnerValue(value);
52
52
  }
53
53
  }, [value]);
54
- var onChange = usePersistFn(function (val, ext) {
54
+ var onChange = useMemoizedFn(function (val, ext) {
55
55
  var _a;
56
56
 
57
57
  setInnerValue(val);
@@ -1,6 +1,6 @@
1
1
  import React, { memo, useCallback, useEffect, useState } from 'react';
2
2
  import { mergeProps } from '../../utils/with-default-props';
3
- import { Column } from './column';
3
+ import { Wheel } from './wheel';
4
4
  import { useColumns } from './use-columns';
5
5
  import { withNativeProps } from '../../utils/native-props';
6
6
  import { usePickerValueExtend } from './use-picker-value-extend';
@@ -56,7 +56,7 @@ export var PickerView = /*#__PURE__*/memo(function (p) {
56
56
  return withNativeProps(props, /*#__PURE__*/React.createElement("div", {
57
57
  className: "" + classPrefix
58
58
  }, columns.map(function (column, index) {
59
- return /*#__PURE__*/React.createElement(Column, {
59
+ return /*#__PURE__*/React.createElement(Wheel, {
60
60
  key: index,
61
61
  index: index,
62
62
  column: column,
@@ -6,5 +6,5 @@ interface Props {
6
6
  value: PickerValue;
7
7
  onSelect: (value: PickerValue, index: number) => void;
8
8
  }
9
- export declare const Column: React.NamedExoticComponent<Props>;
9
+ export declare const Wheel: React.NamedExoticComponent<Props>;
10
10
  export {};
@@ -6,7 +6,7 @@ import { rubberbandIfOutOfBounds } from '../../utils/rubberband';
6
6
  import { bound } from '../../utils/bound';
7
7
  import isEqual from 'lodash/isEqual';
8
8
  var classPrefix = "adm-picker-view";
9
- export var Column = /*#__PURE__*/memo(function (props) {
9
+ export var Wheel = /*#__PURE__*/memo(function (props) {
10
10
  var itemHeight = convertPx(34);
11
11
  var value = props.value,
12
12
  column = props.column;
@@ -63,7 +63,9 @@ export var Column = /*#__PURE__*/memo(function (props) {
63
63
  api.start({
64
64
  y: finalPosition
65
65
  });
66
- onSelect(column[index].value);
66
+ var item = column[index];
67
+ if (!item) return;
68
+ onSelect(item.value);
67
69
  }
68
70
 
69
71
  var bind = useDrag(function (state) {
@@ -74,7 +76,7 @@ export var Column = /*#__PURE__*/memo(function (props) {
74
76
  if (state.last) {
75
77
  draggingRef.current = false;
76
78
  var position = state.offset[1] + state.velocity[1] * state.direction[1] * 50;
77
- var targetIndex = -Math.round(bound(position, min, max) / itemHeight);
79
+ var targetIndex = min < max ? -Math.round(bound(position, min, max) / itemHeight) : 0;
78
80
  scrollSelect(targetIndex);
79
81
  } else {
80
82
  var _position = state.offset[1];
@@ -156,6 +158,7 @@ export var Column = /*#__PURE__*/memo(function (props) {
156
158
  }, item.label));
157
159
  })), renderAccessible());
158
160
  }, function (prev, next) {
161
+ if (prev.index !== next.index) return false;
159
162
  if (prev.value !== next.value) return false;
160
163
  if (prev.onSelect !== next.onSelect) return false;
161
164
 
@@ -165,4 +168,4 @@ export var Column = /*#__PURE__*/memo(function (props) {
165
168
 
166
169
  return true;
167
170
  });
168
- Column.displayName = 'Column';
171
+ Wheel.displayName = 'Wheel';
@@ -60,7 +60,7 @@
60
60
  }
61
61
 
62
62
  .adm-radio-content {
63
- flex: none;
63
+ flex: 0 1 auto;
64
64
  font-size: var(--font-size);
65
65
  padding-left: var(--gap);
66
66
  }
@@ -0,0 +1,8 @@
1
+ /// <reference types="react" />
2
+ import './skeleton.less';
3
+ export type { SkeletonProps, SkeletonTitleProps } from './skeleton';
4
+ declare const _default: import("react").FC<import("./skeleton").SkeletonProps> & {
5
+ Title: import("react").FC<import("./skeleton").SkeletonTitleProps>;
6
+ Paragraph: import("react").FC<import("./skeleton").SkeletonParagraphProps>;
7
+ };
8
+ export default _default;
@@ -0,0 +1,7 @@
1
+ import "./skeleton.css";
2
+ import { Skeleton, SkeletonParagraph, SkeletonTitle } from './skeleton';
3
+ import { attachPropertiesToComponent } from '../../utils/attach-properties-to-component';
4
+ export default attachPropertiesToComponent(Skeleton, {
5
+ Title: SkeletonTitle,
6
+ Paragraph: SkeletonParagraph
7
+ });
@@ -0,0 +1,45 @@
1
+ .adm-skeleton {
2
+ --width: 100%;
3
+ --height: 0;
4
+ --border-radius: 0;
5
+ background-color: rgba(190, 190, 190, 0.2);
6
+ border-radius: var(--border-radius);
7
+ width: var(--width);
8
+ height: var(--height);
9
+ display: block;
10
+ }
11
+
12
+ .adm-skeleton.adm-skeleton-animated {
13
+ background: linear-gradient(90deg, rgba(190, 190, 190, 0.2) 25%, rgba(129, 129, 129, 0.24) 37%, rgba(190, 190, 190, 0.2) 63%);
14
+ background-size: 400% 100%;
15
+ animation: adm-skeleton-loading 1.4s ease infinite;
16
+ }
17
+
18
+ .adm-skeleton.adm-skeleton-title {
19
+ --width: 45%;
20
+ --height: 64px;
21
+ --border-radius: 4px;
22
+ margin-bottom: 32px;
23
+ margin-top: 32px;
24
+ }
25
+
26
+ .adm-skeleton.adm-skeleton-paragraph-line {
27
+ --height: 36px;
28
+ --border-radius: 4px;
29
+ margin-top: 24px;
30
+ margin-bottom: 24px;
31
+ }
32
+
33
+ .adm-skeleton.adm-skeleton-paragraph-line:last-child {
34
+ --width: 65%;
35
+ }
36
+
37
+ @keyframes adm-skeleton-loading {
38
+ 0% {
39
+ background-position: 100% 50%;
40
+ }
41
+
42
+ 100% {
43
+ background-position: 0 50%;
44
+ }
45
+ }
@@ -0,0 +1,15 @@
1
+ import { FC } from 'react';
2
+ import { NativeProps } from '../../utils/native-props';
3
+ export declare type SkeletonProps = {
4
+ animated?: boolean;
5
+ } & NativeProps<'--width' | '--height' | '--border-radius'>;
6
+ export declare const Skeleton: FC<SkeletonProps>;
7
+ export declare type SkeletonTitleProps = {
8
+ animated?: boolean;
9
+ } & NativeProps;
10
+ export declare const SkeletonTitle: FC<SkeletonTitleProps>;
11
+ export declare type SkeletonParagraphProps = {
12
+ animated?: boolean;
13
+ lineCount?: number;
14
+ } & NativeProps;
15
+ export declare const SkeletonParagraph: FC<SkeletonParagraphProps>;
@@ -0,0 +1,36 @@
1
+ import React from 'react';
2
+ import { withNativeProps } from '../../utils/native-props';
3
+ import classNames from 'classnames';
4
+ import { generateIntArray } from '../../utils/generate-int-array';
5
+ import { mergeProps } from '../../utils/with-default-props';
6
+ var classPrefix = 'adm-skeleton';
7
+ export var Skeleton = function Skeleton(props) {
8
+ var _classNames;
9
+
10
+ return withNativeProps(props, /*#__PURE__*/React.createElement("div", {
11
+ className: classNames(classPrefix, (_classNames = {}, _classNames[classPrefix + "-animated"] = props.animated, _classNames))
12
+ }));
13
+ };
14
+ export var SkeletonTitle = function SkeletonTitle(props) {
15
+ return withNativeProps(props, /*#__PURE__*/React.createElement(Skeleton, {
16
+ animated: props.animated,
17
+ className: classPrefix + "-title"
18
+ }));
19
+ };
20
+ var defaultSkeletonParagraphProps = {
21
+ lineCount: 3
22
+ };
23
+ export var SkeletonParagraph = function SkeletonParagraph(p) {
24
+ var props = mergeProps(defaultSkeletonParagraphProps, p);
25
+ var keys = generateIntArray(1, props.lineCount);
26
+ var node = /*#__PURE__*/React.createElement("div", {
27
+ className: classPrefix + "-paragraph"
28
+ }, keys.map(function (key) {
29
+ return /*#__PURE__*/React.createElement(Skeleton, {
30
+ key: key,
31
+ animated: props.animated,
32
+ className: classPrefix + "-paragraph-line"
33
+ });
34
+ }));
35
+ return withNativeProps(props, node);
36
+ };
@@ -9,6 +9,7 @@ export declare type StepperProps = Pick<InputProps, 'onFocus' | 'onBlur'> & {
9
9
  step?: number;
10
10
  digits?: number;
11
11
  disabled?: boolean;
12
+ inputReadOnly?: boolean;
12
13
  onChange?: (value: number) => void;
13
14
  } & NativeProps<'--height' | '--input-width' | '--input-font-size' | '--border-radius' | '--border' | '--border-inner' | '--active-border' | '--button-font-size' | '--button-background-color' | '--button-width' | '--input-font-color' | '--button-text-color'>;
14
15
  export declare const Stepper: FC<StepperProps>;
@@ -20,7 +20,8 @@ export var Stepper = function Stepper(p) {
20
20
  var disabled = props.disabled,
21
21
  step = props.step,
22
22
  max = props.max,
23
- min = props.min;
23
+ min = props.min,
24
+ inputReadOnly = props.inputReadOnly;
24
25
 
25
26
  var _usePropsValue = usePropsValue(props),
26
27
  value = _usePropsValue[0],
@@ -113,7 +114,8 @@ export var Stepper = function Stepper(p) {
113
114
 
114
115
  setHasFocus(false);
115
116
  (_a = props.onBlur) === null || _a === void 0 ? void 0 : _a.call(props, e);
116
- }
117
+ },
118
+ readOnly: inputReadOnly
117
119
  }), /*#__PURE__*/React.createElement(Button, {
118
120
  className: classPrefix + "-plus",
119
121
  onClick: handlePlus,
@@ -1,4 +1,4 @@
1
- .adm-tab-bar {
1
+ .adm-tab-bar-wrap {
2
2
  display: flex;
3
3
  flex-wrap: nowrap;
4
4
  justify-content: flex-start;
@@ -11,5 +11,6 @@ export declare type TabBarProps = {
11
11
  activeKey?: string | null;
12
12
  defaultActiveKey?: string | null;
13
13
  onChange?: (key: string) => void;
14
+ safeArea?: boolean;
14
15
  } & NativeProps;
15
16
  export declare const TabBar: FC<TabBarProps>;
@@ -1,14 +1,21 @@
1
1
  import React from 'react';
2
2
  import classNames from 'classnames';
3
3
  import { withNativeProps } from '../../utils/native-props';
4
+ import { mergeProps } from '../../utils/with-default-props';
4
5
  import Badge from '../badge';
6
+ import SafeArea from '../safe-area';
5
7
  import { usePropsValue } from '../../utils/use-props-value';
6
8
  export var TabBarItem = function TabBarItem() {
7
9
  return null;
8
10
  };
9
- export var TabBar = function TabBar(props) {
11
+ var classPrefix = "adm-tab-bar";
12
+ var defaultProps = {
13
+ safeArea: false
14
+ };
15
+ export var TabBar = function TabBar(p) {
10
16
  var _a;
11
17
 
18
+ var props = mergeProps(defaultProps, p);
12
19
  var firstActiveKey = null;
13
20
  var items = [];
14
21
  React.Children.forEach(props.children, function (child, index) {
@@ -32,28 +39,32 @@ export var TabBar = function TabBar(props) {
32
39
  setActiveKey = _usePropsValue[1];
33
40
 
34
41
  return withNativeProps(props, /*#__PURE__*/React.createElement("div", {
35
- className: 'adm-tab-bar'
42
+ className: classPrefix
43
+ }, /*#__PURE__*/React.createElement("div", {
44
+ className: classPrefix + "-wrap"
36
45
  }, items.map(function (item) {
46
+ var _classNames;
47
+
37
48
  var active = item.key === activeKey;
38
49
 
39
50
  function renderContent() {
40
51
  var iconElement = item.props.icon && /*#__PURE__*/React.createElement("div", {
41
- className: 'adm-tab-bar-item-icon'
52
+ className: classPrefix + "-item-icon"
42
53
  }, typeof item.props.icon === 'function' ? item.props.icon(active) : item.props.icon);
43
54
  var titleElement = item.props.title && /*#__PURE__*/React.createElement("div", {
44
- className: 'adm-tab-bar-item-title'
55
+ className: classPrefix + "-item-title"
45
56
  }, item.props.title);
46
57
 
47
58
  if (iconElement) {
48
59
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Badge, {
49
60
  content: item.props.badge,
50
- className: 'adm-tab-bar-icon-badge'
61
+ className: classPrefix + "-icon-badge"
51
62
  }, iconElement), titleElement);
52
63
  } else if (titleElement) {
53
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Badge, {
64
+ return /*#__PURE__*/React.createElement(Badge, {
54
65
  content: item.props.badge,
55
- className: 'adm-tab-bar-title-badge'
56
- }, titleElement));
66
+ className: classPrefix + "-title-badge"
67
+ }, titleElement);
57
68
  }
58
69
 
59
70
  return null;
@@ -66,9 +77,9 @@ export var TabBar = function TabBar(props) {
66
77
  if (key === undefined || key === null) return;
67
78
  setActiveKey(key.toString());
68
79
  },
69
- className: classNames('adm-tab-bar-item', {
70
- 'adm-tab-bar-item-active': active
71
- })
80
+ className: classNames(classPrefix + "-item", (_classNames = {}, _classNames[classPrefix + "-item-active"] = active, _classNames))
72
81
  }, renderContent()));
82
+ })), props.safeArea && /*#__PURE__*/React.createElement(SafeArea, {
83
+ position: 'bottom'
73
84
  })));
74
85
  };
package/2x/es/index.d.ts CHANGED
@@ -41,6 +41,7 @@ export { default as NavBar } from './components/nav-bar';
41
41
  export { default as NoticeBar } from './components/notice-bar';
42
42
  export { default as NumberKeyboard } from './components/number-keyboard';
43
43
  export { default as PageIndicator } from './components/page-indicator';
44
+ export { default as PasscodeInput } from './components/passcode-input';
44
45
  export { default as Picker } from './components/picker';
45
46
  export { default as PickerView } from './components/picker-view';
46
47
  export { default as Popover } from './components/popover';
@@ -57,6 +58,7 @@ export { default as Search } from './components/search-bar';
57
58
  export { default as SearchBar } from './components/search-bar';
58
59
  export { default as Selector } from './components/selector';
59
60
  export { default as SideBar } from './components/side-bar';
61
+ export { default as Skeleton } from './components/skeleton';
60
62
  export { default as Slider } from './components/slider';
61
63
  export { default as Space } from './components/space';
62
64
  export { default as Stepper } from './components//stepper';
@@ -72,4 +74,3 @@ export { default as Toast } from './components/toast';
72
74
  export { default as TreeSelect } from './components/tree-select';
73
75
  export { default as VirtualInput } from './components/virtual-input';
74
76
  export { default as WaterMark } from './components/water-mark';
75
- export { default as PasscodeInput } from './components/passcode-input';
package/2x/es/index.js CHANGED
@@ -41,6 +41,7 @@ export { default as NavBar } from './components/nav-bar';
41
41
  export { default as NoticeBar } from './components/notice-bar';
42
42
  export { default as NumberKeyboard } from './components/number-keyboard';
43
43
  export { default as PageIndicator } from './components/page-indicator';
44
+ export { default as PasscodeInput } from './components/passcode-input';
44
45
  export { default as Picker } from './components/picker';
45
46
  export { default as PickerView } from './components/picker-view';
46
47
  export { default as Popover } from './components/popover';
@@ -58,6 +59,7 @@ export { default as Search } from './components/search-bar'; // TODO: deprecated
58
59
  export { default as SearchBar } from './components/search-bar';
59
60
  export { default as Selector } from './components/selector';
60
61
  export { default as SideBar } from './components/side-bar';
62
+ export { default as Skeleton } from './components/skeleton';
61
63
  export { default as Slider } from './components/slider';
62
64
  export { default as Space } from './components/space';
63
65
  export { default as Stepper } from './components//stepper';
@@ -72,5 +74,4 @@ export { default as TextArea } from './components/text-area';
72
74
  export { default as Toast } from './components/toast';
73
75
  export { default as TreeSelect } from './components/tree-select';
74
76
  export { default as VirtualInput } from './components/virtual-input';
75
- export { default as WaterMark } from './components/water-mark';
76
- export { default as PasscodeInput } from './components/passcode-input';
77
+ export { default as WaterMark } from './components/water-mark';
@@ -1,7 +1,7 @@
1
1
  import { useEffect } from 'react';
2
- import { usePersistFn } from 'ahooks';
2
+ import { useMemoizedFn } from 'ahooks';
3
3
  export function useMutationEffect(effect, targetRef, options) {
4
- var fn = usePersistFn(effect);
4
+ var fn = useMemoizedFn(effect);
5
5
  useEffect(function () {
6
6
  var observer = new MutationObserver(function () {
7
7
  fn();
@@ -1,5 +1,5 @@
1
1
  import { useRef } from 'react';
2
- import { usePersistFn, useUpdate } from 'ahooks';
2
+ import { useMemoizedFn, useUpdate } from 'ahooks';
3
3
  export function usePropsValue(options) {
4
4
  var value = options.value,
5
5
  defaultValue = options.defaultValue,
@@ -11,7 +11,7 @@ export function usePropsValue(options) {
11
11
  stateRef.current = value;
12
12
  }
13
13
 
14
- var setState = usePersistFn(function (v) {
14
+ var setState = useMemoizedFn(function (v) {
15
15
  if (value === undefined) {
16
16
  stateRef.current = v;
17
17
  update();
@@ -1,7 +1,7 @@
1
1
  import { useLayoutEffect } from 'react';
2
- import { usePersistFn } from 'ahooks';
2
+ import { useMemoizedFn } from 'ahooks';
3
3
  export function useResizeEffect(effect, targetRef) {
4
- var fn = usePersistFn(effect);
4
+ var fn = useMemoizedFn(effect);
5
5
  useLayoutEffect(function () {
6
6
  var target = targetRef.current;
7
7
  if (!target) return;
package/2x/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "antd-mobile",
3
- "version": "5.0.0-rc.7",
3
+ "version": "5.0.0-rc.8",
4
4
  "dependencies": {
5
- "@react-spring/web": "^9.3.1",
5
+ "@react-spring/web": "^9.3.2",
6
6
  "@types/resize-observer-browser": "^0.1.6",
7
7
  "@use-gesture/react": "^10.2.4",
8
- "ahooks": "^2.10.14",
8
+ "ahooks": "^3.1.1",
9
9
  "antd-mobile-icons": "^0.2.2",
10
10
  "antd-mobile-v5-count": "^1.0.1",
11
11
  "classnames": "^2.3.1",
package/README.md CHANGED
@@ -28,6 +28,10 @@ If you found bugs or would like to request some new features, please consider op
28
28
 
29
29
  If you have some question about how to use ant-mobile, you can start a [discussion thread](https://github.com/ant-design/ant-design-mobile/discussions).
30
30
 
31
+ Feel free to join our DingDing group:
32
+
33
+ <img src="https://gw.alipayobjects.com/mdn/rms_25513e/afts/img/A*fo-tQ5wRk5QAAAAAAAAAAAAAARQnAQ" alt="ding-group" width="360" />
34
+
31
35
  ---
32
36
 
33
37
  Thanks to all the contributors of antd-mobile:
@@ -67,7 +67,7 @@
67
67
  background-color: currentColor;
68
68
  }
69
69
  .adm-checkbox-content {
70
- flex: none;
70
+ flex: 0 1 auto;
71
71
  font-size: var(--font-size);
72
72
  padding-left: var(--gap);
73
73
  }
@@ -52,7 +52,7 @@ var DatePicker = function DatePicker(p) {
52
52
  var onConfirm = (0, _react.useCallback)(function (val) {
53
53
  setValue((0, _datePickerUtils.convertStringArrayToDate)(val, props.precision));
54
54
  }, [setValue, props.precision]);
55
- var onSelect = (0, _ahooks.usePersistFn)(function (val) {
55
+ var onSelect = (0, _ahooks.useMemoizedFn)(function (val) {
56
56
  var _a;
57
57
 
58
58
  var date = (0, _datePickerUtils.convertStringArrayToDate)(val, props.precision);
@@ -15,7 +15,10 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
15
15
 
16
16
  var LazyDetector = function LazyDetector(props) {
17
17
  var ref = (0, _react.useRef)(null);
18
- var inViewport = (0, _ahooks.useInViewport)(ref);
18
+
19
+ var _useInViewport = (0, _ahooks.useInViewport)(ref),
20
+ inViewport = _useInViewport[0];
21
+
19
22
  (0, _react.useEffect)(function () {
20
23
  if (inViewport) {
21
24
  props.onActive();
@@ -79,7 +79,7 @@ var ImageUploader = function ImageUploader(p) {
79
79
  value = _usePropsValue[0],
80
80
  setValue = _usePropsValue[1];
81
81
 
82
- var updateValue = (0, _ahooks.usePersistFn)(function (updater) {
82
+ var updateValue = (0, _ahooks.useMemoizedFn)(function (updater) {
83
83
  setValue(updater(value));
84
84
  });
85
85
 
@@ -190,9 +190,15 @@ var ImageUploader = function ImageUploader(p) {
190
190
  });
191
191
  });
192
192
  updateValue(function (prev) {
193
- return [].concat(prev, [{
193
+ var newVal = {
194
194
  url: result.url
195
- }]);
195
+ };
196
+
197
+ if (result.extra !== undefined) {
198
+ newVal.extra = result.extra;
199
+ }
200
+
201
+ return [].concat(prev, [newVal]);
196
202
  });
197
203
  _context.next = 12;
198
204
  break;
@@ -107,11 +107,6 @@ var Slide = function Slide(props) {
107
107
  }
108
108
  },
109
109
  pinch: {
110
- transform: function transform(_ref) {
111
- var d = _ref[0],
112
- a = _ref[1];
113
- return [d < 0 ? d * 0.5 : d * 2, 0];
114
- },
115
110
  from: function from() {
116
111
  return [zoom.get(), 0];
117
112
  }
@@ -52,7 +52,7 @@
52
52
  }
53
53
  .adm-index-bar-sidebar-row {
54
54
  cursor: pointer;
55
- width: 100%;
55
+ width: auto;
56
56
  text-align: right;
57
57
  position: relative;
58
58
  padding: 0 12px;