antd-mobile 5.3.1 → 5.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/2x/cjs/components/cascader-view/cascader-view.d.ts +1 -0
  2. package/2x/cjs/components/cascader-view/use-cascader-value-extend.js +23 -0
  3. package/2x/cjs/components/check-list/check-list-item.js +1 -1
  4. package/2x/cjs/components/checkbox/checkbox.js +16 -4
  5. package/2x/cjs/components/floating-bubble/floating-bubble.d.ts +2 -0
  6. package/2x/cjs/components/floating-bubble/floating-bubble.js +56 -16
  7. package/2x/cjs/components/form/form-array.d.ts +19 -0
  8. package/2x/cjs/components/form/form-array.js +52 -0
  9. package/2x/cjs/components/form/form-item.css +6 -1
  10. package/2x/cjs/components/form/form-item.js +24 -8
  11. package/2x/cjs/components/form/form.css +5 -0
  12. package/2x/cjs/components/form/form.js +17 -6
  13. package/2x/cjs/components/form/index.css +11 -1
  14. package/2x/cjs/components/form/index.d.ts +2 -0
  15. package/2x/cjs/components/form/index.js +3 -0
  16. package/2x/cjs/components/image-uploader/image-uploader.d.ts +1 -1
  17. package/2x/cjs/components/image-uploader/image-uploader.js +17 -1
  18. package/2x/cjs/components/infinite-scroll/infinite-scroll.js +23 -19
  19. package/2x/cjs/components/modal/modal.js +0 -1
  20. package/2x/cjs/components/notice-bar/notice-bar.js +1 -1
  21. package/2x/cjs/components/popover/index.d.ts +7 -2
  22. package/2x/cjs/components/popover/normalize-placement.d.ts +2 -0
  23. package/2x/cjs/components/popover/normalize-placement.js +22 -0
  24. package/2x/cjs/components/popover/popover.css +0 -104
  25. package/2x/cjs/components/popover/popover.d.ts +11 -5
  26. package/2x/cjs/components/popover/popover.js +126 -22
  27. package/2x/cjs/components/popover/temp-floating-ui.min.d.ts +1 -0
  28. package/2x/cjs/components/popover/temp-floating-ui.min.js +430 -0
  29. package/2x/cjs/components/popover/wrapper.d.ts +7 -0
  30. package/2x/cjs/components/popover/wrapper.js +41 -0
  31. package/2x/cjs/components/pull-to-refresh/pull-to-refresh.js +24 -9
  32. package/2x/cjs/components/radio/radio.js +16 -4
  33. package/2x/cjs/components/search-bar/search-bar.js +0 -1
  34. package/2x/cjs/components/swiper/swiper.js +1 -1
  35. package/2x/cjs/components/text-area/text-area.css +4 -1
  36. package/2x/cjs/components/text-area/text-area.d.ts +2 -2
  37. package/2x/cjs/utils/use-props-value.d.ts +2 -1
  38. package/2x/cjs/utils/use-props-value.js +4 -2
  39. package/2x/es/components/cascader-view/cascader-view.d.ts +1 -0
  40. package/2x/es/components/cascader-view/use-cascader-value-extend.js +23 -0
  41. package/2x/es/components/check-list/check-list-item.js +1 -1
  42. package/2x/es/components/checkbox/checkbox.js +17 -5
  43. package/2x/es/components/floating-bubble/floating-bubble.d.ts +2 -0
  44. package/2x/es/components/floating-bubble/floating-bubble.js +57 -17
  45. package/2x/es/components/form/form-array.d.ts +19 -0
  46. package/2x/es/components/form/form-array.js +38 -0
  47. package/2x/es/components/form/form-item.css +6 -1
  48. package/2x/es/components/form/form-item.js +22 -8
  49. package/2x/es/components/form/form.css +5 -0
  50. package/2x/es/components/form/form.js +16 -6
  51. package/2x/es/components/form/index.css +11 -1
  52. package/2x/es/components/form/index.d.ts +2 -0
  53. package/2x/es/components/form/index.js +2 -0
  54. package/2x/es/components/image-uploader/image-uploader.d.ts +1 -1
  55. package/2x/es/components/image-uploader/image-uploader.js +17 -1
  56. package/2x/es/components/infinite-scroll/infinite-scroll.js +22 -19
  57. package/2x/es/components/modal/modal.js +0 -1
  58. package/2x/es/components/notice-bar/notice-bar.js +1 -1
  59. package/2x/es/components/popover/index.d.ts +7 -2
  60. package/2x/es/components/popover/normalize-placement.d.ts +2 -0
  61. package/2x/es/components/popover/normalize-placement.js +15 -0
  62. package/2x/es/components/popover/popover.css +0 -104
  63. package/2x/es/components/popover/popover.d.ts +11 -5
  64. package/2x/es/components/popover/popover.js +118 -22
  65. package/2x/es/components/popover/temp-floating-ui.min.d.ts +1 -0
  66. package/2x/es/components/popover/temp-floating-ui.min.js +430 -0
  67. package/2x/es/components/popover/wrapper.d.ts +7 -0
  68. package/2x/es/components/popover/wrapper.js +28 -0
  69. package/2x/es/components/pull-to-refresh/pull-to-refresh.js +24 -9
  70. package/2x/es/components/radio/radio.js +17 -5
  71. package/2x/es/components/search-bar/search-bar.js +0 -1
  72. package/2x/es/components/swiper/swiper.js +1 -1
  73. package/2x/es/components/text-area/text-area.css +4 -1
  74. package/2x/es/components/text-area/text-area.d.ts +2 -2
  75. package/2x/es/utils/use-props-value.d.ts +2 -1
  76. package/2x/es/utils/use-props-value.js +4 -2
  77. package/2x/package.json +2 -2
  78. package/cjs/components/cascader-view/cascader-view.d.ts +1 -0
  79. package/cjs/components/cascader-view/use-cascader-value-extend.js +23 -0
  80. package/cjs/components/check-list/check-list-item.js +1 -1
  81. package/cjs/components/checkbox/checkbox.js +16 -4
  82. package/cjs/components/floating-bubble/floating-bubble.d.ts +2 -0
  83. package/cjs/components/floating-bubble/floating-bubble.js +56 -16
  84. package/cjs/components/form/form-array.d.ts +19 -0
  85. package/cjs/components/form/form-array.js +52 -0
  86. package/cjs/components/form/form-item.css +5 -1
  87. package/cjs/components/form/form-item.js +24 -8
  88. package/cjs/components/form/form.css +4 -0
  89. package/cjs/components/form/form.js +17 -6
  90. package/cjs/components/form/index.css +9 -1
  91. package/cjs/components/form/index.d.ts +2 -0
  92. package/cjs/components/form/index.js +3 -0
  93. package/cjs/components/image-uploader/image-uploader.d.ts +1 -1
  94. package/cjs/components/image-uploader/image-uploader.js +17 -1
  95. package/cjs/components/infinite-scroll/infinite-scroll.js +23 -19
  96. package/cjs/components/modal/modal.js +0 -1
  97. package/cjs/components/notice-bar/notice-bar.js +1 -1
  98. package/cjs/components/popover/index.d.ts +7 -2
  99. package/cjs/components/popover/normalize-placement.d.ts +2 -0
  100. package/cjs/components/popover/normalize-placement.js +22 -0
  101. package/cjs/components/popover/popover.css +0 -84
  102. package/cjs/components/popover/popover.d.ts +11 -5
  103. package/cjs/components/popover/popover.js +126 -22
  104. package/cjs/components/popover/temp-floating-ui.min.d.ts +1 -0
  105. package/cjs/components/popover/temp-floating-ui.min.js +430 -0
  106. package/cjs/components/popover/wrapper.d.ts +7 -0
  107. package/cjs/components/popover/wrapper.js +41 -0
  108. package/cjs/components/pull-to-refresh/pull-to-refresh.js +24 -9
  109. package/cjs/components/radio/radio.js +16 -4
  110. package/cjs/components/search-bar/search-bar.js +0 -1
  111. package/cjs/components/swiper/swiper.js +1 -1
  112. package/cjs/components/text-area/text-area.css +4 -1
  113. package/cjs/components/text-area/text-area.d.ts +2 -2
  114. package/cjs/utils/use-props-value.d.ts +2 -1
  115. package/cjs/utils/use-props-value.js +4 -2
  116. package/es/components/cascader-view/cascader-view.d.ts +1 -0
  117. package/es/components/cascader-view/use-cascader-value-extend.js +23 -0
  118. package/es/components/check-list/check-list-item.js +1 -1
  119. package/es/components/checkbox/checkbox.js +17 -5
  120. package/es/components/floating-bubble/floating-bubble.d.ts +2 -0
  121. package/es/components/floating-bubble/floating-bubble.js +57 -17
  122. package/es/components/form/form-array.d.ts +19 -0
  123. package/es/components/form/form-array.js +38 -0
  124. package/es/components/form/form-item.css +5 -1
  125. package/es/components/form/form-item.js +22 -8
  126. package/es/components/form/form.css +4 -0
  127. package/es/components/form/form.js +16 -6
  128. package/es/components/form/index.css +9 -1
  129. package/es/components/form/index.d.ts +2 -0
  130. package/es/components/form/index.js +2 -0
  131. package/es/components/image-uploader/image-uploader.d.ts +1 -1
  132. package/es/components/image-uploader/image-uploader.js +17 -1
  133. package/es/components/infinite-scroll/infinite-scroll.js +22 -19
  134. package/es/components/modal/modal.js +0 -1
  135. package/es/components/notice-bar/notice-bar.js +1 -1
  136. package/es/components/popover/index.d.ts +7 -2
  137. package/es/components/popover/normalize-placement.d.ts +2 -0
  138. package/es/components/popover/normalize-placement.js +15 -0
  139. package/es/components/popover/popover.css +0 -84
  140. package/es/components/popover/popover.d.ts +11 -5
  141. package/es/components/popover/popover.js +118 -22
  142. package/es/components/popover/temp-floating-ui.min.d.ts +1 -0
  143. package/es/components/popover/temp-floating-ui.min.js +430 -0
  144. package/es/components/popover/wrapper.d.ts +7 -0
  145. package/es/components/popover/wrapper.js +28 -0
  146. package/es/components/pull-to-refresh/pull-to-refresh.js +24 -9
  147. package/es/components/radio/radio.js +17 -5
  148. package/es/components/search-bar/search-bar.js +0 -1
  149. package/es/components/swiper/swiper.js +1 -1
  150. package/es/components/text-area/text-area.css +4 -1
  151. package/es/components/text-area/text-area.d.ts +2 -2
  152. package/es/utils/use-props-value.d.ts +2 -1
  153. package/es/utils/use-props-value.js +4 -2
  154. package/package.json +2 -2
  155. package/umd/antd-mobile.js +1 -1
@@ -29,90 +29,6 @@
29
29
  .adm-popover-hidden {
30
30
  display: none;
31
31
  }
32
- .adm-popover-placement-top,
33
- .adm-popover-placement-topLeft,
34
- .adm-popover-placement-topRight {
35
- padding-bottom: var(--arrow-size);
36
- }
37
- .adm-popover-placement-top .adm-popover-arrow,
38
- .adm-popover-placement-topLeft .adm-popover-arrow,
39
- .adm-popover-placement-topRight .adm-popover-arrow {
40
- bottom: 0;
41
- --arrow-icon-rotate: 0deg;
42
- }
43
- .adm-popover-placement-top .adm-popover-arrow {
44
- left: 50%;
45
- transform: translateX(-50%);
46
- }
47
- .adm-popover-placement-topLeft .adm-popover-arrow {
48
- left: 12px;
49
- }
50
- .adm-popover-placement-topRight .adm-popover-arrow {
51
- right: 12px;
52
- }
53
- .adm-popover-placement-right,
54
- .adm-popover-placement-rightTop,
55
- .adm-popover-placement-rightBottom {
56
- padding-left: var(--arrow-size);
57
- }
58
- .adm-popover-placement-right .adm-popover-arrow,
59
- .adm-popover-placement-rightTop .adm-popover-arrow,
60
- .adm-popover-placement-rightBottom .adm-popover-arrow {
61
- left: 0;
62
- --arrow-icon-rotate: 90deg;
63
- }
64
- .adm-popover-placement-right .adm-popover-arrow {
65
- top: 50%;
66
- transform: translateY(-50%);
67
- }
68
- .adm-popover-placement-rightTop .adm-popover-arrow {
69
- top: 12px;
70
- }
71
- .adm-popover-placement-rightBottom .adm-popover-arrow {
72
- bottom: 12px;
73
- }
74
- .adm-popover-placement-bottom,
75
- .adm-popover-placement-bottomLeft,
76
- .adm-popover-placement-bottomRight {
77
- padding-top: var(--arrow-size);
78
- }
79
- .adm-popover-placement-bottom .adm-popover-arrow,
80
- .adm-popover-placement-bottomLeft .adm-popover-arrow,
81
- .adm-popover-placement-bottomRight .adm-popover-arrow {
82
- top: 0;
83
- --arrow-icon-rotate: 180deg;
84
- }
85
- .adm-popover-placement-bottom .adm-popover-arrow {
86
- left: 50%;
87
- transform: translateX(-50%);
88
- }
89
- .adm-popover-placement-bottomLeft .adm-popover-arrow {
90
- left: 12px;
91
- }
92
- .adm-popover-placement-bottomRight .adm-popover-arrow {
93
- right: 12px;
94
- }
95
- .adm-popover-placement-left,
96
- .adm-popover-placement-leftTop,
97
- .adm-popover-placement-leftBottom {
98
- padding-right: var(--arrow-size);
99
- }
100
- .adm-popover-placement-left .adm-popover-arrow,
101
- .adm-popover-placement-leftTop .adm-popover-arrow,
102
- .adm-popover-placement-leftBottom .adm-popover-arrow {
103
- right: 0;
104
- --arrow-icon-rotate: 270deg;
105
- }
106
- .adm-popover-placement-left .adm-popover-arrow {
107
- top: 50%;
108
- transform: translateY(-50%);
109
- }
110
- .adm-popover-placement-leftTop .adm-popover-arrow {
111
- top: 12px;
112
- }
113
- .adm-popover-placement-leftBottom .adm-popover-arrow {
114
- bottom: 12px;
115
- }
116
32
  .adm-popover-inner {
117
33
  background-color: var(--background);
118
34
  background-clip: padding-box;
@@ -1,30 +1,36 @@
1
1
  import React, { ReactElement } from 'react';
2
- import type { TooltipProps } from 'rc-tooltip/lib/Tooltip';
3
2
  import { NativeProps } from '../../utils/native-props';
4
3
  import { PropagationEvent } from '../../utils/with-stop-propagation';
5
4
  import { GetContainer } from '../../utils/render-to-container';
5
+ import { DeprecatedPlacement, Placement } from './index';
6
6
  export declare type PopoverProps = {
7
+ defaultVisible?: boolean;
8
+ visible?: boolean;
9
+ onVisibleChange?: (visible: boolean) => void;
7
10
  getContainer?: GetContainer;
8
11
  destroyOnHide?: boolean;
9
12
  children: ReactElement;
10
13
  mode?: 'light' | 'dark';
11
14
  trigger?: 'click';
12
- placement?: 'top' | 'left' | 'right' | 'bottom' | 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight' | 'leftTop' | 'leftBottom' | 'rightTop' | 'rightBottom';
15
+ placement?: Placement | DeprecatedPlacement;
13
16
  stopPropagation?: PropagationEvent[];
14
17
  content: React.ReactNode;
15
- } & Pick<TooltipProps, 'defaultVisible' | 'visible' | 'onVisibleChange' | 'align'> & NativeProps<'--z-index'>;
18
+ } & NativeProps<'--z-index'>;
16
19
  export declare type PopoverRef = {
17
20
  show: () => void;
18
21
  hide: () => void;
19
22
  visible: boolean;
20
23
  };
21
24
  export declare const Popover: React.ForwardRefExoticComponent<{
25
+ defaultVisible?: boolean | undefined;
26
+ visible?: boolean | undefined;
27
+ onVisibleChange?: ((visible: boolean) => void) | undefined;
22
28
  getContainer?: GetContainer | undefined;
23
29
  destroyOnHide?: boolean | undefined;
24
30
  children: ReactElement;
25
31
  mode?: "dark" | "light" | undefined;
26
32
  trigger?: "click" | undefined;
27
- placement?: "left" | "right" | "bottom" | "top" | "topLeft" | "topRight" | "bottomLeft" | "bottomRight" | "leftTop" | "leftBottom" | "rightTop" | "rightBottom" | undefined;
33
+ placement?: DeprecatedPlacement | Placement | undefined;
28
34
  stopPropagation?: "click"[] | undefined;
29
35
  content: React.ReactNode;
30
- } & Pick<TooltipProps, "visible" | "align" | "defaultVisible" | "onVisibleChange"> & NativeProps<"--z-index"> & React.RefAttributes<PopoverRef>>;
36
+ } & NativeProps<"--z-index"> & React.RefAttributes<PopoverRef>>;
@@ -1,10 +1,18 @@
1
- import React, { forwardRef, useImperativeHandle } from 'react';
2
- import Tooltip from 'rc-tooltip';
1
+ import { __awaiter } from "tslib";
2
+ import React, { forwardRef, useImperativeHandle, useRef, useState, useEffect } from 'react';
3
3
  import classNames from 'classnames';
4
4
  import { usePropsValue } from '../../utils/use-props-value';
5
5
  import { mergeProps } from '../../utils/with-default-props';
6
+ import { withNativeProps } from '../../utils/native-props';
6
7
  import { withStopPropagation } from '../../utils/with-stop-propagation';
7
8
  import { Arrow } from './arrow';
9
+ import { renderToContainer } from '../../utils/render-to-container';
10
+ import { arrow, computePosition, flip, offset, autoUpdate, hide, shift, limitShift } from './temp-floating-ui.min.js';
11
+ import { Wrapper } from './wrapper';
12
+ import { useShouldRender } from '../../utils/should-render';
13
+ import { useClickAway, useIsomorphicLayoutEffect } from 'ahooks';
14
+ import { normalizePlacement } from './normalize-placement';
15
+ import { convertPx } from '../../utils/convert-px';
8
16
  const classPrefix = `adm-popover`;
9
17
  const defaultProps = {
10
18
  placement: 'top',
@@ -13,12 +21,11 @@ const defaultProps = {
13
21
  getContainer: () => document.body
14
22
  };
15
23
  export const Popover = forwardRef((p, ref) => {
16
- var _a;
17
-
18
24
  const props = mergeProps(defaultProps, p);
19
25
  const {
20
26
  mode = 'light'
21
27
  } = props;
28
+ const placement = normalizePlacement(props.placement);
22
29
  const [visible, setVisible] = usePropsValue({
23
30
  value: props.visible,
24
31
  defaultValue: props.defaultVisible,
@@ -31,23 +38,112 @@ export const Popover = forwardRef((p, ref) => {
31
38
  visible
32
39
  };
33
40
  }, [visible]);
34
- const overlay = withStopPropagation(props.stopPropagation, React.createElement("div", {
41
+ const targetRef = useRef(null);
42
+ const floatingRef = useRef(null);
43
+ const arrowRef = useRef(null);
44
+ const floating = withStopPropagation(props.stopPropagation, withNativeProps(props, React.createElement("div", {
45
+ className: classNames(classPrefix, `${classPrefix}-${mode}`, !visible && `${classPrefix}-hidden`),
46
+ ref: floatingRef
47
+ }, React.createElement("div", {
48
+ className: `${classPrefix}-arrow`,
49
+ ref: arrowRef
50
+ }, React.createElement(Arrow, {
51
+ className: `${classPrefix}-arrow-icon`
52
+ })), React.createElement("div", {
53
+ className: `${classPrefix}-inner`
54
+ }, React.createElement("div", {
35
55
  className: `${classPrefix}-inner-content`
36
- }, props.content));
37
- return React.createElement(Tooltip, Object.assign({}, props, {
38
- placement: props.placement,
39
- align: props.align,
40
- overlayClassName: classNames(`${classPrefix}-${mode}`, props.className),
41
- overlayStyle: props.style,
42
- destroyTooltipOnHide: props.destroyOnHide,
43
- prefixCls: classPrefix,
44
- getTooltipContainer: props.getContainer || (() => document.body),
45
- visible: visible,
46
- arrowContent: React.createElement(Arrow, {
47
- className: `${classPrefix}-arrow-icon`
48
- }),
49
- onVisibleChange: setVisible,
50
- trigger: (_a = props.trigger) !== null && _a !== void 0 ? _a : [],
51
- overlay: overlay
52
- }), props.children);
56
+ }, props.content)))));
57
+ const [targetElement, setTargetElement] = useState(null);
58
+
59
+ function update() {
60
+ var _a, _b, _c;
61
+
62
+ return __awaiter(this, void 0, void 0, function* () {
63
+ const target = (_b = (_a = targetRef.current) === null || _a === void 0 ? void 0 : _a.element) !== null && _b !== void 0 ? _b : null;
64
+ const floating = floatingRef.current;
65
+ const arrowElement = arrowRef.current;
66
+ setTargetElement(target);
67
+ if (!target || !floating || !arrowElement) return;
68
+ const {
69
+ x,
70
+ y,
71
+ placement: realPlacement,
72
+ middlewareData
73
+ } = yield computePosition(target, floating, {
74
+ placement,
75
+ middleware: [offset(convertPx(12)), shift({
76
+ padding: convertPx(4),
77
+ crossAxis: false,
78
+ limiter: limitShift()
79
+ }), flip(), hide(), arrow({
80
+ element: arrowElement,
81
+ padding: convertPx(12)
82
+ })]
83
+ });
84
+ Object.assign(floating.style, {
85
+ left: `${x}px`,
86
+ top: `${y}px`
87
+ });
88
+ const side = realPlacement.split('-')[0];
89
+ const arrowSide = {
90
+ top: 'bottom',
91
+ right: 'left',
92
+ bottom: 'top',
93
+ left: 'right'
94
+ }[side];
95
+ const {
96
+ x: arrowX,
97
+ y: arrowY
98
+ } = (_c = middlewareData.arrow) !== null && _c !== void 0 ? _c : {};
99
+ Object.assign(arrowElement.style, {
100
+ left: arrowX != null ? `${arrowX}px` : '',
101
+ top: arrowY != null ? `${arrowY}px` : '',
102
+ right: '',
103
+ bottom: '',
104
+ [arrowSide]: `-${convertPx(8)}px`
105
+ });
106
+ const arrowRotate = {
107
+ top: '0deg',
108
+ bottom: '180deg',
109
+ left: '270deg',
110
+ right: '90deg'
111
+ }[side];
112
+ arrowElement.style.setProperty('--arrow-icon-rotate', arrowRotate);
113
+ });
114
+ }
115
+
116
+ useIsomorphicLayoutEffect(() => {
117
+ update();
118
+ });
119
+ useEffect(() => {
120
+ if (!targetElement) return;
121
+ if (!props.trigger) return;
122
+
123
+ function handleClick() {
124
+ setVisible(v => !v);
125
+ }
126
+
127
+ targetElement.addEventListener('click', handleClick);
128
+ return () => {
129
+ targetElement.removeEventListener('click', handleClick);
130
+ };
131
+ }, [targetElement, props.trigger]);
132
+ useEffect(() => {
133
+ const floatingElement = floatingRef.current;
134
+ if (!targetElement || !floatingElement) return;
135
+ return autoUpdate(targetElement, floatingElement, update);
136
+ }, [targetElement]);
137
+ useClickAway(() => {
138
+ if (!props.trigger) return;
139
+ setVisible(false);
140
+ }, () => {
141
+ var _a;
142
+
143
+ return (_a = targetRef.current) === null || _a === void 0 ? void 0 : _a.element;
144
+ });
145
+ const shouldRender = useShouldRender(visible, false, props.destroyOnHide);
146
+ return React.createElement(React.Fragment, null, React.createElement(Wrapper, {
147
+ ref: targetRef
148
+ }, props.children), shouldRender && renderToContainer(props.getContainer, floating));
53
149
  });
@@ -0,0 +1 @@
1
+ export * from '@floating-ui/dom'