antd-mobile 5.0.0-rc.22 → 5.0.0-rc.26

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 (291) hide show
  1. package/2x/README.md +7 -6
  2. package/2x/cjs/components/badge/badge.css +18 -10
  3. package/2x/cjs/components/badge/badge.d.ts +1 -0
  4. package/2x/cjs/components/badge/badge.js +4 -5
  5. package/2x/cjs/components/button/button.css +3 -3
  6. package/2x/cjs/components/calendar/calendar.js +3 -1
  7. package/2x/cjs/components/cascade-picker-view/cascade-picker-view.d.ts +1 -2
  8. package/2x/cjs/components/checkbox/check-icon.js +4 -13
  9. package/2x/cjs/components/checkbox/checkbox.css +5 -14
  10. package/2x/cjs/components/checkbox/checkbox.js +3 -5
  11. package/2x/cjs/components/checkbox/indeterminate-icon.d.ts +3 -0
  12. package/2x/cjs/components/checkbox/indeterminate-icon.js +24 -0
  13. package/2x/cjs/components/date-picker/date-picker.d.ts +1 -1
  14. package/2x/cjs/components/date-picker-view/date-picker-view.d.ts +3 -2
  15. package/2x/cjs/components/ellipsis/ellipsis.js +3 -1
  16. package/2x/cjs/components/floating-bubble/floating-bubble.css +1 -0
  17. package/2x/cjs/components/floating-panel/floating-panel.d.ts +7 -5
  18. package/2x/cjs/components/floating-panel/floating-panel.js +11 -1
  19. package/2x/cjs/components/form/form-item.css +3 -2
  20. package/2x/cjs/components/form/form-item.d.ts +2 -2
  21. package/2x/cjs/components/form/form-item.js +9 -5
  22. package/2x/cjs/components/form/form.css +3 -3
  23. package/2x/cjs/components/form/form.d.ts +5 -4
  24. package/2x/cjs/components/form/index.css +6 -5
  25. package/2x/cjs/components/form/index.d.ts +5 -4
  26. package/2x/cjs/components/image-uploader/image-uploader.js +1 -1
  27. package/2x/cjs/components/image-viewer/image-viewer.d.ts +8 -2
  28. package/2x/cjs/components/image-viewer/image-viewer.js +19 -6
  29. package/2x/cjs/components/image-viewer/index.d.ts +6 -2
  30. package/2x/cjs/components/image-viewer/slide.js +2 -1
  31. package/2x/cjs/components/image-viewer/slides.d.ts +7 -3
  32. package/2x/cjs/components/image-viewer/slides.js +18 -11
  33. package/2x/cjs/components/input/input.d.ts +2 -2
  34. package/2x/cjs/components/input/input.js +7 -3
  35. package/2x/cjs/components/list/list.css +2 -6
  36. package/2x/cjs/components/modal/modal.css +25 -20
  37. package/2x/cjs/components/modal/modal.js +8 -12
  38. package/2x/cjs/components/passcode-input/passcode-input.d.ts +2 -2
  39. package/2x/cjs/components/picker/picker.css +10 -2
  40. package/2x/cjs/components/picker/picker.d.ts +1 -1
  41. package/2x/cjs/components/picker-view/picker-view.css +4 -2
  42. package/2x/cjs/components/picker-view/picker-view.d.ts +1 -1
  43. package/2x/cjs/components/picker-view/wheel.js +5 -3
  44. package/2x/cjs/components/popover/arrow.d.ts +3 -0
  45. package/2x/cjs/components/popover/arrow.js +26 -0
  46. package/2x/cjs/components/popover/index.d.ts +7 -15
  47. package/2x/cjs/components/popover/index.js +4 -2
  48. package/2x/cjs/components/popover/popover-menu.css +63 -0
  49. package/2x/cjs/components/popover/popover-menu.d.ts +20 -0
  50. package/{cjs/components/popover/pop-menu.js → 2x/cjs/components/popover/popover-menu.js} +23 -26
  51. package/2x/cjs/components/popover/popover.css +90 -318
  52. package/2x/cjs/components/popover/popover.d.ts +9 -8
  53. package/2x/cjs/components/popover/popover.js +11 -17
  54. package/2x/cjs/components/radio/radio.css +4 -7
  55. package/2x/cjs/components/radio/radio.js +1 -3
  56. package/2x/cjs/components/search-bar/search-bar.css +1 -1
  57. package/2x/cjs/components/selector/selector.css +14 -6
  58. package/2x/cjs/components/selector/selector.d.ts +2 -1
  59. package/2x/cjs/components/selector/selector.js +3 -2
  60. package/2x/cjs/components/swiper/swiper.js +1 -1
  61. package/2x/cjs/components/switch/switch.css +8 -3
  62. package/2x/cjs/components/tabs/tabs.js +2 -2
  63. package/2x/cjs/components/text-area/text-area.css +9 -9
  64. package/2x/cjs/components/text-area/text-area.d.ts +2 -2
  65. package/2x/cjs/components/text-area/text-area.js +41 -32
  66. package/2x/cjs/components/virtual-input/virtual-input.js +3 -1
  67. package/2x/cjs/utils/get-scroll-parent.js +1 -1
  68. package/2x/cjs/utils/use-ref-state.js +1 -1
  69. package/2x/cjs/utils/use-resize-effect.js +1 -3
  70. package/2x/cjs/utils/use-tab-list-scroll.js +1 -3
  71. package/2x/es/components/badge/badge.css +18 -10
  72. package/2x/es/components/badge/badge.d.ts +1 -0
  73. package/2x/es/components/badge/badge.js +4 -5
  74. package/2x/es/components/button/button.css +3 -3
  75. package/2x/es/components/calendar/calendar.js +3 -2
  76. package/2x/es/components/cascade-picker-view/cascade-picker-view.d.ts +1 -2
  77. package/2x/es/components/checkbox/check-icon.js +4 -13
  78. package/2x/es/components/checkbox/checkbox.css +5 -14
  79. package/2x/es/components/checkbox/checkbox.js +2 -5
  80. package/2x/es/components/checkbox/indeterminate-icon.d.ts +3 -0
  81. package/2x/es/components/checkbox/indeterminate-icon.js +10 -0
  82. package/2x/es/components/date-picker/date-picker.d.ts +1 -1
  83. package/2x/es/components/date-picker-view/date-picker-view.d.ts +3 -2
  84. package/2x/es/components/ellipsis/ellipsis.js +3 -2
  85. package/2x/es/components/floating-bubble/floating-bubble.css +1 -0
  86. package/2x/es/components/floating-panel/floating-panel.d.ts +7 -5
  87. package/2x/es/components/floating-panel/floating-panel.js +9 -1
  88. package/2x/es/components/form/form-item.css +3 -2
  89. package/2x/es/components/form/form-item.d.ts +2 -2
  90. package/2x/es/components/form/form-item.js +9 -5
  91. package/2x/es/components/form/form.css +3 -3
  92. package/2x/es/components/form/form.d.ts +5 -4
  93. package/2x/es/components/form/index.css +6 -5
  94. package/2x/es/components/form/index.d.ts +5 -4
  95. package/2x/es/components/image-uploader/image-uploader.js +3 -3
  96. package/2x/es/components/image-viewer/image-viewer.d.ts +8 -2
  97. package/2x/es/components/image-viewer/image-viewer.js +15 -4
  98. package/2x/es/components/image-viewer/index.d.ts +6 -2
  99. package/2x/es/components/image-viewer/slide.js +2 -1
  100. package/2x/es/components/image-viewer/slides.d.ts +7 -3
  101. package/2x/es/components/image-viewer/slides.js +19 -10
  102. package/2x/es/components/input/input.d.ts +2 -2
  103. package/2x/es/components/input/input.js +7 -4
  104. package/2x/es/components/list/list.css +2 -6
  105. package/2x/es/components/modal/modal.css +25 -20
  106. package/2x/es/components/modal/modal.js +8 -12
  107. package/2x/es/components/passcode-input/passcode-input.d.ts +2 -2
  108. package/2x/es/components/picker/picker.css +10 -2
  109. package/2x/es/components/picker/picker.d.ts +1 -1
  110. package/2x/es/components/picker-view/picker-view.css +4 -2
  111. package/2x/es/components/picker-view/picker-view.d.ts +1 -1
  112. package/2x/es/components/picker-view/wheel.js +5 -4
  113. package/2x/es/components/popover/arrow.d.ts +3 -0
  114. package/2x/es/components/popover/arrow.js +12 -0
  115. package/2x/es/components/popover/index.d.ts +7 -15
  116. package/2x/es/components/popover/index.js +3 -2
  117. package/2x/es/components/popover/popover-menu.css +63 -0
  118. package/2x/es/components/popover/popover-menu.d.ts +20 -0
  119. package/2x/es/components/popover/popover-menu.js +52 -0
  120. package/2x/es/components/popover/popover.css +90 -318
  121. package/2x/es/components/popover/popover.d.ts +9 -8
  122. package/2x/es/components/popover/popover.js +10 -17
  123. package/2x/es/components/radio/radio.css +4 -7
  124. package/2x/es/components/radio/radio.js +1 -3
  125. package/2x/es/components/search-bar/search-bar.css +1 -1
  126. package/2x/es/components/selector/selector.css +14 -6
  127. package/2x/es/components/selector/selector.d.ts +2 -1
  128. package/2x/es/components/selector/selector.js +3 -2
  129. package/2x/es/components/swiper/swiper.js +3 -3
  130. package/2x/es/components/switch/switch.css +8 -3
  131. package/2x/es/components/tabs/tabs.js +4 -4
  132. package/2x/es/components/text-area/text-area.css +9 -9
  133. package/2x/es/components/text-area/text-area.d.ts +2 -2
  134. package/2x/es/components/text-area/text-area.js +41 -31
  135. package/2x/es/components/virtual-input/virtual-input.js +3 -2
  136. package/2x/es/utils/get-scroll-parent.js +1 -1
  137. package/2x/es/utils/use-ref-state.js +2 -2
  138. package/2x/es/utils/use-resize-effect.js +2 -3
  139. package/2x/es/utils/use-tab-list-scroll.js +2 -3
  140. package/2x/package.json +4 -4
  141. package/README.md +7 -6
  142. package/cjs/components/badge/badge.css +16 -10
  143. package/cjs/components/badge/badge.d.ts +1 -0
  144. package/cjs/components/badge/badge.js +4 -5
  145. package/cjs/components/button/button.css +3 -3
  146. package/cjs/components/calendar/calendar.js +3 -1
  147. package/cjs/components/cascade-picker-view/cascade-picker-view.d.ts +1 -2
  148. package/cjs/components/checkbox/check-icon.js +4 -13
  149. package/cjs/components/checkbox/checkbox.css +5 -13
  150. package/cjs/components/checkbox/checkbox.js +3 -5
  151. package/cjs/components/checkbox/indeterminate-icon.d.ts +3 -0
  152. package/cjs/components/checkbox/indeterminate-icon.js +24 -0
  153. package/cjs/components/date-picker/date-picker.d.ts +1 -1
  154. package/cjs/components/date-picker-view/date-picker-view.d.ts +3 -2
  155. package/cjs/components/ellipsis/ellipsis.js +3 -1
  156. package/cjs/components/floating-bubble/floating-bubble.css +1 -0
  157. package/cjs/components/floating-panel/floating-panel.d.ts +7 -5
  158. package/cjs/components/floating-panel/floating-panel.js +11 -1
  159. package/cjs/components/form/form-item.css +3 -2
  160. package/cjs/components/form/form-item.d.ts +2 -2
  161. package/cjs/components/form/form-item.js +9 -5
  162. package/cjs/components/form/form.css +3 -3
  163. package/cjs/components/form/form.d.ts +5 -4
  164. package/cjs/components/form/index.css +6 -5
  165. package/cjs/components/form/index.d.ts +5 -4
  166. package/cjs/components/image-uploader/image-uploader.js +1 -1
  167. package/cjs/components/image-viewer/image-viewer.d.ts +8 -2
  168. package/cjs/components/image-viewer/image-viewer.js +19 -6
  169. package/cjs/components/image-viewer/index.d.ts +6 -2
  170. package/cjs/components/image-viewer/slide.js +2 -1
  171. package/cjs/components/image-viewer/slides.d.ts +7 -3
  172. package/cjs/components/image-viewer/slides.js +18 -11
  173. package/cjs/components/input/input.d.ts +2 -2
  174. package/cjs/components/input/input.js +7 -3
  175. package/cjs/components/list/list.css +2 -5
  176. package/cjs/components/modal/modal.css +23 -19
  177. package/cjs/components/modal/modal.js +8 -12
  178. package/cjs/components/passcode-input/passcode-input.d.ts +2 -2
  179. package/cjs/components/picker/picker.css +9 -2
  180. package/cjs/components/picker/picker.d.ts +1 -1
  181. package/cjs/components/picker-view/picker-view.css +4 -2
  182. package/cjs/components/picker-view/picker-view.d.ts +1 -1
  183. package/cjs/components/picker-view/wheel.js +5 -3
  184. package/cjs/components/popover/arrow.d.ts +3 -0
  185. package/cjs/components/popover/arrow.js +26 -0
  186. package/cjs/components/popover/index.d.ts +7 -15
  187. package/cjs/components/popover/index.js +4 -2
  188. package/cjs/components/popover/popover-menu.css +52 -0
  189. package/cjs/components/popover/popover-menu.d.ts +20 -0
  190. package/{2x/cjs/components/popover/pop-menu.js → cjs/components/popover/popover-menu.js} +23 -26
  191. package/cjs/components/popover/popover.css +83 -276
  192. package/cjs/components/popover/popover.d.ts +9 -8
  193. package/cjs/components/popover/popover.js +11 -17
  194. package/cjs/components/radio/radio.css +4 -7
  195. package/cjs/components/radio/radio.js +1 -3
  196. package/cjs/components/search-bar/search-bar.css +1 -1
  197. package/cjs/components/selector/selector.css +14 -6
  198. package/cjs/components/selector/selector.d.ts +2 -1
  199. package/cjs/components/selector/selector.js +3 -2
  200. package/cjs/components/swiper/swiper.js +1 -1
  201. package/cjs/components/switch/switch.css +8 -3
  202. package/cjs/components/tabs/tabs.js +2 -2
  203. package/cjs/components/text-area/text-area.css +9 -9
  204. package/cjs/components/text-area/text-area.d.ts +2 -2
  205. package/cjs/components/text-area/text-area.js +41 -32
  206. package/cjs/components/virtual-input/virtual-input.js +3 -1
  207. package/cjs/utils/get-scroll-parent.js +1 -1
  208. package/cjs/utils/use-ref-state.js +1 -1
  209. package/cjs/utils/use-resize-effect.js +1 -3
  210. package/cjs/utils/use-tab-list-scroll.js +1 -3
  211. package/es/components/badge/badge.css +16 -10
  212. package/es/components/badge/badge.d.ts +1 -0
  213. package/es/components/badge/badge.js +4 -5
  214. package/es/components/button/button.css +3 -3
  215. package/es/components/calendar/calendar.js +3 -2
  216. package/es/components/cascade-picker-view/cascade-picker-view.d.ts +1 -2
  217. package/es/components/checkbox/check-icon.js +4 -13
  218. package/es/components/checkbox/checkbox.css +5 -13
  219. package/es/components/checkbox/checkbox.js +2 -5
  220. package/es/components/checkbox/indeterminate-icon.d.ts +3 -0
  221. package/es/components/checkbox/indeterminate-icon.js +10 -0
  222. package/es/components/date-picker/date-picker.d.ts +1 -1
  223. package/es/components/date-picker-view/date-picker-view.d.ts +3 -2
  224. package/es/components/ellipsis/ellipsis.js +3 -2
  225. package/es/components/floating-bubble/floating-bubble.css +1 -0
  226. package/es/components/floating-panel/floating-panel.d.ts +7 -5
  227. package/es/components/floating-panel/floating-panel.js +9 -1
  228. package/es/components/form/form-item.css +3 -2
  229. package/es/components/form/form-item.d.ts +2 -2
  230. package/es/components/form/form-item.js +9 -5
  231. package/es/components/form/form.css +3 -3
  232. package/es/components/form/form.d.ts +5 -4
  233. package/es/components/form/index.css +6 -5
  234. package/es/components/form/index.d.ts +5 -4
  235. package/es/components/image-uploader/image-uploader.js +3 -3
  236. package/es/components/image-viewer/image-viewer.d.ts +8 -2
  237. package/es/components/image-viewer/image-viewer.js +15 -4
  238. package/es/components/image-viewer/index.d.ts +6 -2
  239. package/es/components/image-viewer/slide.js +2 -1
  240. package/es/components/image-viewer/slides.d.ts +7 -3
  241. package/es/components/image-viewer/slides.js +19 -10
  242. package/es/components/input/input.d.ts +2 -2
  243. package/es/components/input/input.js +7 -4
  244. package/es/components/list/list.css +2 -5
  245. package/es/components/modal/modal.css +23 -19
  246. package/es/components/modal/modal.js +8 -12
  247. package/es/components/passcode-input/passcode-input.d.ts +2 -2
  248. package/es/components/picker/picker.css +9 -2
  249. package/es/components/picker/picker.d.ts +1 -1
  250. package/es/components/picker-view/picker-view.css +4 -2
  251. package/es/components/picker-view/picker-view.d.ts +1 -1
  252. package/es/components/picker-view/wheel.js +5 -4
  253. package/es/components/popover/arrow.d.ts +3 -0
  254. package/es/components/popover/arrow.js +12 -0
  255. package/es/components/popover/index.d.ts +7 -15
  256. package/es/components/popover/index.js +3 -2
  257. package/es/components/popover/popover-menu.css +52 -0
  258. package/es/components/popover/popover-menu.d.ts +20 -0
  259. package/es/components/popover/popover-menu.js +52 -0
  260. package/es/components/popover/popover.css +83 -276
  261. package/es/components/popover/popover.d.ts +9 -8
  262. package/es/components/popover/popover.js +10 -17
  263. package/es/components/radio/radio.css +4 -7
  264. package/es/components/radio/radio.js +1 -3
  265. package/es/components/search-bar/search-bar.css +1 -1
  266. package/es/components/selector/selector.css +14 -6
  267. package/es/components/selector/selector.d.ts +2 -1
  268. package/es/components/selector/selector.js +3 -2
  269. package/es/components/swiper/swiper.js +3 -3
  270. package/es/components/switch/switch.css +8 -3
  271. package/es/components/tabs/tabs.js +4 -4
  272. package/es/components/text-area/text-area.css +9 -9
  273. package/es/components/text-area/text-area.d.ts +2 -2
  274. package/es/components/text-area/text-area.js +41 -31
  275. package/es/components/virtual-input/virtual-input.js +3 -2
  276. package/es/utils/get-scroll-parent.js +1 -1
  277. package/es/utils/use-ref-state.js +2 -2
  278. package/es/utils/use-resize-effect.js +2 -3
  279. package/es/utils/use-tab-list-scroll.js +2 -3
  280. package/package.json +4 -4
  281. package/umd/antd-mobile.js +1 -1
  282. package/2x/cjs/components/popover/animation.css +0 -111
  283. package/2x/cjs/components/popover/pop-menu.d.ts +0 -28
  284. package/2x/es/components/popover/animation.css +0 -111
  285. package/2x/es/components/popover/pop-menu.d.ts +0 -28
  286. package/2x/es/components/popover/pop-menu.js +0 -54
  287. package/cjs/components/popover/animation.css +0 -96
  288. package/cjs/components/popover/pop-menu.d.ts +0 -28
  289. package/es/components/popover/animation.css +0 -96
  290. package/es/components/popover/pop-menu.d.ts +0 -28
  291. package/es/components/popover/pop-menu.js +0 -54
@@ -1,4 +1,4 @@
1
- import React, { useLayoutEffect, useMemo, useState } from 'react';
1
+ import React, { useMemo, useState } from 'react';
2
2
  import { withNativeProps } from '../../utils/native-props';
3
3
  import dayjs from 'dayjs';
4
4
  import classNames from 'classnames';
@@ -7,6 +7,7 @@ import { ArrowLeft } from './arrow-left';
7
7
  import { ArrowLeftDouble } from './arrow-left-double';
8
8
  import { useConfig } from '../config-provider';
9
9
  import isoWeek from 'dayjs/plugin/isoWeek';
10
+ import { useIsomorphicLayoutEffect } from 'ahooks';
10
11
  dayjs.extend(isoWeek);
11
12
  const classPrefix = 'adm-calendar';
12
13
  const defaultProps = {
@@ -65,7 +66,7 @@ export const Calendar = p => {
65
66
  }, [props.selectionMode, props.value, props.defaultValue]);
66
67
  const [begin, setBegin] = useState(null);
67
68
  const [end, setEnd] = useState(null);
68
- useLayoutEffect(() => {
69
+ useIsomorphicLayoutEffect(() => {
69
70
  setBegin(dateRange[0] ? dayjs(dateRange[0]) : null);
70
71
  setEnd(dateRange[1] ? dayjs(dateRange[1]) : null);
71
72
  }, [dateRange[0], dateRange[1]]);
@@ -1,8 +1,7 @@
1
1
  import { FC } from 'react';
2
- import { NativeProps } from '../../utils/native-props';
3
2
  import type { PickerViewProps } from '../picker-view';
4
3
  import type { CascadePickerOption } from '../cascade-picker';
5
4
  export declare type CascadePickerViewProps = Omit<PickerViewProps, 'columns'> & {
6
5
  options: CascadePickerOption[];
7
- } & NativeProps<'--height'>;
6
+ };
8
7
  export declare const CascadePickerView: FC<CascadePickerViewProps>;
@@ -2,18 +2,9 @@ import React, { memo } from 'react';
2
2
  import { withNativeProps } from '../../utils/native-props';
3
3
  export const CheckIcon = memo(props => {
4
4
  return withNativeProps(props, React.createElement("svg", {
5
- viewBox: '0 0 24 16'
6
- }, React.createElement("g", {
7
- stroke: 'none',
8
- strokeWidth: '1',
9
- fill: 'none',
10
- fillRule: 'evenodd'
11
- }, React.createElement("g", {
12
- transform: 'translate(-35.000000, -40.000000)',
13
- fill: 'currentColor'
14
- }, React.createElement("g", {
15
- transform: 'translate(24.000000, 26.000000)'
5
+ viewBox: '0 0 40 40'
16
6
  }, React.createElement("path", {
17
- d: 'M18.8574375,25.9363304 L14.4138058,21.4926987 C13.8001225,20.8790154 12.8051453,20.8790154 12.1914621,21.4926987 C11.5777807,22.10638 11.5777807,23.1013541 12.1914621,23.7150354 C12.1914632,23.7150366 12.1914644,23.7150377 12.1914656,23.7150389 L17.4442507,28.9677909 C18.225314,29.7488091 19.4916285,29.7488141 20.2726979,28.9678021 L21.0808125,28.1597054 L21.0808125,28.1597054 L32.5627182,16.6759191 C33.176366,16.0621709 33.1763252,15.0671824 32.5626272,14.4534844 C31.948944,13.8398011 30.9539668,13.8398011 30.3402835,14.4534844 L18.8574375,25.9363304 L18.8574375,25.9363304 Z'
18
- }))))));
7
+ d: 'M31.5541766,15 L28.0892433,15 L28.0892434,15 C27.971052,15 27.8576674,15.044522 27.7740471,15.1239792 L18.2724722,24.1625319 L13.2248725,19.3630279 L13.2248725,19.3630279 C13.1417074,19.2834412 13.0287551,19.2384807 12.9107898,19.2380079 L9.44474455,19.2380079 L9.44474454,19.2380079 C9.19869815,19.2384085 8.99957935,19.4284738 9,19.66253 C9,19.7747587 9.04719253,19.8823283 9.13066188,19.9616418 L17.0907466,27.5338228 C17.4170809,27.8442545 17.8447695,28 18.2713393,28 L18.2980697,28 C18.7168464,27.993643 19.133396,27.8378975 19.4530492,27.5338228 L31.8693384,15.7236361 L31.8693384,15.7236361 C32.0434167,15.5582251 32.0435739,15.2898919 31.8696892,15.1242941 C31.7860402,15.0446329 31.6725052,15 31.5541421,15 L31.5541766,15 Z',
8
+ fill: 'currentColor'
9
+ })));
19
10
  });
@@ -18,17 +18,15 @@
18
18
  border: 2px solid var(--adm-color-light);
19
19
  border-radius: var(--icon-size);
20
20
  box-sizing: border-box;
21
- display: flex;
22
- justify-content: center;
23
- align-items: center;
24
21
  width: var(--icon-size);
25
22
  height: var(--icon-size);
26
- color: #ffffff;
23
+ color: var(--adm-color-white);
27
24
  }
28
25
 
29
- .adm-checkbox .adm-checkbox-icon-checked {
30
- width: 65%;
31
- height: 65%;
26
+ .adm-checkbox .adm-checkbox-icon > svg {
27
+ display: block;
28
+ width: 100%;
29
+ height: 100%;
32
30
  }
33
31
 
34
32
  .adm-checkbox.adm-checkbox-block {
@@ -63,13 +61,6 @@
63
61
  color: var(--adm-color-primary);
64
62
  }
65
63
 
66
- .adm-checkbox.adm-checkbox-indeterminate .adm-checkbox-indeterminate-checked {
67
- width: 60%;
68
- height: 60%;
69
- border-radius: 100%;
70
- background-color: currentColor;
71
- }
72
-
73
64
  .adm-checkbox-content {
74
65
  flex: 0 1 auto;
75
66
  font-size: var(--font-size);
@@ -6,6 +6,7 @@ import { usePropsValue } from '../../utils/use-props-value';
6
6
  import { mergeProps } from '../../utils/with-default-props';
7
7
  import { devWarning } from '../../utils/dev-log';
8
8
  import { CheckIcon } from './check-icon';
9
+ import { IndeterminateIcon } from './indeterminate-icon';
9
10
  const classPrefix = `adm-checkbox`;
10
11
  const defaultProps = {
11
12
  defaultChecked: false,
@@ -63,11 +64,7 @@ export const Checkbox = p => {
63
64
 
64
65
  return React.createElement("div", {
65
66
  className: `${classPrefix}-icon`
66
- }, props.indeterminate ? React.createElement("div", {
67
- className: `${classPrefix}-indeterminate-checked`
68
- }) : checked && React.createElement(CheckIcon, {
69
- className: `${classPrefix}-icon-checked`
70
- }));
67
+ }, props.indeterminate ? React.createElement(IndeterminateIcon, null) : checked && React.createElement(CheckIcon, null));
71
68
  };
72
69
 
73
70
  return withNativeProps(props, React.createElement("label", {
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ import { NativeProps } from '../../utils/native-props';
3
+ export declare const IndeterminateIcon: React.NamedExoticComponent<NativeProps<never>>;
@@ -0,0 +1,10 @@
1
+ import React, { memo } from 'react';
2
+ import { withNativeProps } from '../../utils/native-props';
3
+ export const IndeterminateIcon = memo(props => {
4
+ return withNativeProps(props, React.createElement("svg", {
5
+ viewBox: '0 0 40 40'
6
+ }, React.createElement("path", {
7
+ d: 'M20,9 C26.0752953,9 31,13.9247047 31,20 C31,26.0752953 26.0752953,31 20,31 C13.9247047,31 9,26.0752953 9,20 C9,13.9247047 13.9247047,9 20,9 Z',
8
+ fill: 'currentColor'
9
+ })));
10
+ });
@@ -2,7 +2,7 @@ import { FC, ReactNode } from 'react';
2
2
  import type { PickerProps } from '../picker';
3
3
  import { NativeProps } from '../../utils/native-props';
4
4
  import type { Precision, DatePickerFilter } from './date-picker-utils';
5
- export declare type DatePickerProps = Pick<PickerProps, 'onCancel' | 'onClose' | 'visible' | 'confirmText' | 'cancelText' | 'getContainer' | 'afterShow' | 'afterClose' | 'onClick' | 'title' | 'stopPropagation'> & {
5
+ export declare type DatePickerProps = Pick<PickerProps, 'onCancel' | 'onClose' | 'visible' | 'confirmText' | 'cancelText' | 'getContainer' | 'afterShow' | 'afterClose' | 'onClick' | 'title' | 'stopPropagation' | 'style'> & {
6
6
  value?: Date | null;
7
7
  defaultValue?: Date | null;
8
8
  onSelect?: (value: Date) => void;
@@ -1,7 +1,8 @@
1
1
  import { FC, ReactNode } from 'react';
2
+ import type { PickerViewProps } from '../picker-view';
2
3
  import { NativeProps } from '../../utils/native-props';
3
4
  import type { Precision, DatePickerFilter } from '../date-picker/date-picker-utils';
4
- export declare type DatePickerViewProps = {
5
+ export declare type DatePickerViewProps = Pick<PickerViewProps, 'style'> & {
5
6
  value?: Date;
6
7
  defaultValue?: Date;
7
8
  onChange?: (value: Date) => void;
@@ -10,5 +11,5 @@ export declare type DatePickerViewProps = {
10
11
  precision?: Precision;
11
12
  renderLabel?: (type: Precision, data: number) => ReactNode;
12
13
  filter?: DatePickerFilter;
13
- } & NativeProps<'--height'>;
14
+ } & NativeProps;
14
15
  export declare const DatePickerView: FC<DatePickerViewProps>;
@@ -1,7 +1,8 @@
1
- import React, { useLayoutEffect, useRef, useState } from 'react';
1
+ import React, { useRef, useState } from 'react';
2
2
  import { mergeProps } from '../../utils/with-default-props';
3
3
  import { withNativeProps } from '../../utils/native-props';
4
4
  import { useResizeEffect } from '../../utils/use-resize-effect';
5
+ import { useIsomorphicLayoutEffect } from 'ahooks';
5
6
  const classPrefix = `adm-ellipsis`;
6
7
  const defaultProps = {
7
8
  direction: 'end',
@@ -113,7 +114,7 @@ export const Ellipsis = p => {
113
114
  }
114
115
 
115
116
  useResizeEffect(calcEllipsised, rootRef);
116
- useLayoutEffect(() => {
117
+ useIsomorphicLayoutEffect(() => {
117
118
  calcEllipsised();
118
119
  }, [props.content, props.direction, props.rows, props.expandText, props.collapseText]);
119
120
  const expandActionElement = exceeded && props.expandText ? React.createElement("a", {
@@ -16,6 +16,7 @@
16
16
  width: 100vw;
17
17
  height: 100vh;
18
18
  padding: var(--edge-distance);
19
+ box-sizing: border-box;
19
20
  pointer-events: none;
20
21
  }
21
22
 
@@ -1,17 +1,19 @@
1
1
  import React, { ReactNode } from 'react';
2
2
  import { NativeProps } from '../../utils/native-props';
3
- export declare type FloatingPanelProps = {
4
- anchors: number[];
5
- children: ReactNode;
6
- onHeightChange?: (height: number, animating: boolean) => void;
7
- } & NativeProps<'--border-radius' | '--z-index'>;
8
3
  export declare type FloatingPanelRef = {
9
4
  setHeight: (height: number, options?: {
10
5
  immediate?: boolean;
11
6
  }) => void;
12
7
  };
8
+ export declare type FloatingPanelProps = {
9
+ anchors: number[];
10
+ children: ReactNode;
11
+ onHeightChange?: (height: number, animating: boolean) => void;
12
+ handleDraggingOfContent?: boolean;
13
+ } & NativeProps<'--border-radius' | '--z-index'>;
13
14
  export declare const FloatingPanel: React.ForwardRefExoticComponent<{
14
15
  anchors: number[];
15
16
  children: ReactNode;
16
17
  onHeightChange?: ((height: number, animating: boolean) => void) | undefined;
18
+ handleDraggingOfContent?: boolean | undefined;
17
19
  } & NativeProps<"--z-index" | "--border-radius"> & React.RefAttributes<FloatingPanelRef>>;
@@ -4,9 +4,15 @@ import { useDrag } from '@use-gesture/react';
4
4
  import { useSpring, animated } from '@react-spring/web';
5
5
  import { supportsPassive } from '../../utils/supports-passive';
6
6
  import { nearest } from '../../utils/nearest';
7
- export const FloatingPanel = forwardRef((props, ref) => {
7
+ import { mergeProps } from '../../utils/with-default-props';
8
+ import { useLockScroll } from '../../utils/use-lock-scroll';
9
+ const defaultProps = {
10
+ handleDraggingOfContent: true
11
+ };
12
+ export const FloatingPanel = forwardRef((p, ref) => {
8
13
  var _a;
9
14
 
15
+ const props = mergeProps(defaultProps, p);
10
16
  const {
11
17
  anchors
12
18
  } = props;
@@ -44,6 +50,7 @@ export const FloatingPanel = forwardRef((props, ref) => {
44
50
  if (header === target || (header === null || header === void 0 ? void 0 : header.contains(target))) {
45
51
  pullingRef.current = true;
46
52
  } else {
53
+ if (!props.handleDraggingOfContent) return;
47
54
  const reachedTop = y.goal <= bounds.top;
48
55
  const content = contentRef.current;
49
56
  if (!content) return;
@@ -101,6 +108,7 @@ export const FloatingPanel = forwardRef((props, ref) => {
101
108
  });
102
109
  }
103
110
  }), [api]);
111
+ useLockScroll(elementRef, true);
104
112
  return withNativeProps(props, React.createElement(animated.div, {
105
113
  ref: elementRef,
106
114
  className: 'adm-floating-panel',
@@ -13,7 +13,8 @@
13
13
  .adm-form-item-label-required {
14
14
  position: absolute;
15
15
  left: -0.6em;
16
- top: 0.2em;
16
+ top: 0;
17
+ font-family: SimSun, sans-serif;
17
18
  color: var(--adm-color-danger);
18
19
  user-select: none;
19
20
  }
@@ -27,8 +28,8 @@
27
28
  }
28
29
 
29
30
  .adm-form-vertical .adm-form-item-label {
30
- margin-bottom: 8px;
31
31
  font-size: 30px;
32
+ margin-bottom: 8px;
32
33
  }
33
34
 
34
35
  .adm-form-vertical .adm-form-item-footer {
@@ -7,7 +7,7 @@ import type { FormLayout } from './index';
7
7
  declare type RenderChildren<Values = any> = (form: FormInstance<Values>) => React.ReactNode;
8
8
  declare type ChildrenType<Values = any> = RenderChildren<Values> | React.ReactNode;
9
9
  declare type RcFieldProps = Omit<FieldProps, 'children'>;
10
- export declare type FormItemProps = RcFieldProps & NativeProps & Pick<ListItemProps, 'style' | 'onClick' | 'extra'> & {
10
+ export declare type FormItemProps = Pick<RcFieldProps, 'dependencies' | 'valuePropName' | 'name' | 'rules' | 'messageVariables' | 'trigger' | 'validateTrigger' | 'shouldUpdate' | 'initialValue'> & Pick<ListItemProps, 'style' | 'onClick' | 'extra' | 'arrow'> & {
11
11
  label?: React.ReactNode;
12
12
  help?: React.ReactNode;
13
13
  hasFeedback?: boolean;
@@ -17,6 +17,6 @@ export declare type FormItemProps = RcFieldProps & NativeProps & Pick<ListItemPr
17
17
  hidden?: boolean;
18
18
  layout?: FormLayout;
19
19
  children: ChildrenType;
20
- };
20
+ } & NativeProps;
21
21
  export declare const FormItem: FC<FormItemProps>;
22
22
  export {};
@@ -25,7 +25,8 @@ const FormItemLayout = props => {
25
25
  children,
26
26
  htmlFor,
27
27
  hidden,
28
- errors
28
+ errors,
29
+ arrow
29
30
  } = props;
30
31
  const context = useContext(FormContext);
31
32
  const hasFeedback = props.hasFeedback !== undefined ? props.hasFeedback : context.hasFeedback;
@@ -52,7 +53,8 @@ const FormItemLayout = props => {
52
53
  [`${classPrefix}-hidden`]: hidden
53
54
  }),
54
55
  disabled: disabled,
55
- onClick: props.onClick
56
+ onClick: props.onClick,
57
+ arrow: arrow
56
58
  }, children);
57
59
  };
58
60
 
@@ -80,9 +82,10 @@ export const FormItem = props => {
80
82
  validateTrigger,
81
83
  onClick,
82
84
  shouldUpdate,
83
- dependencies
85
+ dependencies,
86
+ arrow
84
87
  } = props,
85
- fieldProps = __rest(props, ["className", "style", "label", "help", "extra", "hasFeedback", "name", "required", "noStyle", "hidden", "layout", "disabled", "rules", "children", "messageVariables", "trigger", "validateTrigger", "onClick", "shouldUpdate", "dependencies"]);
88
+ fieldProps = __rest(props, ["className", "style", "label", "help", "extra", "hasFeedback", "name", "required", "noStyle", "hidden", "layout", "disabled", "rules", "children", "messageVariables", "trigger", "validateTrigger", "onClick", "shouldUpdate", "dependencies", "arrow"]);
86
89
 
87
90
  const {
88
91
  validateTrigger: contextValidateTrigger
@@ -138,7 +141,8 @@ export const FormItem = props => {
138
141
  errors: errors,
139
142
  onClick: onClick,
140
143
  hidden: hidden,
141
- layout: layout
144
+ layout: layout,
145
+ arrow: arrow
142
146
  }, React.createElement(NoStyleItemContext.Provider, {
143
147
  value: onSubMetaChange
144
148
  }, baseChildren));
@@ -1,6 +1,6 @@
1
1
  .adm-form .adm-list.adm-list {
2
- --padding-left: 40px;
3
- --padding-right: 40px;
2
+ --padding-left: 32px;
3
+ --padding-right: 24px;
4
4
  }
5
5
 
6
6
  .adm-form-horizontal .adm-list.adm-list {
@@ -13,5 +13,5 @@
13
13
  }
14
14
 
15
15
  .adm-form .adm-form-footer {
16
- padding: 24px;
16
+ padding: 40px 24px;
17
17
  }
@@ -1,16 +1,17 @@
1
1
  import React, { ReactNode } from 'react';
2
2
  import { NativeProps } from '../../utils/native-props';
3
3
  import { ListProps } from '../list';
4
- import type { FormProps as RcFormProps, FormInstance } from 'rc-field-form';
4
+ import type { FormProps as RcFormProps, FormInstance as RCFormInstance } from 'rc-field-form';
5
5
  import { FormContextType } from './context';
6
6
  import type { FormLayout } from '.';
7
- export declare type FormProps = RcFormProps & NativeProps & Partial<FormContextType> & {
7
+ export declare type FormInstance = Pick<RCFormInstance, 'getFieldValue' | 'getFieldsValue' | 'getFieldError' | 'getFieldsError' | 'isFieldTouched' | 'isFieldsTouched' | 'resetFields' | 'setFields' | 'setFieldsValue' | 'submit' | 'validateFields'>;
8
+ export declare type FormProps = Pick<RcFormProps, 'form' | 'initialValues' | 'name' | 'preserve' | 'validateMessages' | 'validateTrigger' | 'onFieldsChange' | 'onFinish' | 'onFinishFailed' | 'onValuesChange' | 'children'> & NativeProps & Partial<FormContextType> & {
8
9
  footer?: ReactNode;
9
10
  layout?: FormLayout;
10
11
  mode?: ListProps['mode'];
11
12
  };
12
- export declare const Form: React.ForwardRefExoticComponent<RcFormProps<any> & NativeProps<never> & Partial<FormContextType> & {
13
+ export declare const Form: React.ForwardRefExoticComponent<Pick<RcFormProps<any>, "children" | "form" | "name" | "initialValues" | "preserve" | "validateMessages" | "validateTrigger" | "onFieldsChange" | "onFinish" | "onFinishFailed" | "onValuesChange"> & NativeProps<never> & Partial<FormContextType> & {
13
14
  footer?: ReactNode;
14
15
  layout?: "horizontal" | "vertical" | undefined;
15
16
  mode?: ListProps['mode'];
16
- } & React.RefAttributes<FormInstance<any>>>;
17
+ } & React.RefAttributes<Pick<RCFormInstance<any>, "submit" | "getFieldValue" | "getFieldsValue" | "getFieldError" | "getFieldsError" | "isFieldTouched" | "isFieldsTouched" | "resetFields" | "setFields" | "setFieldsValue" | "validateFields">>>;
@@ -1,6 +1,6 @@
1
1
  .adm-form .adm-list.adm-list {
2
- --padding-left: 40px;
3
- --padding-right: 40px;
2
+ --padding-left: 32px;
3
+ --padding-right: 24px;
4
4
  }
5
5
 
6
6
  .adm-form-horizontal .adm-list.adm-list {
@@ -13,7 +13,7 @@
13
13
  }
14
14
 
15
15
  .adm-form .adm-form-footer {
16
- padding: 24px;
16
+ padding: 40px 24px;
17
17
  }
18
18
 
19
19
  .adm-form-item + .adm-form-item {
@@ -31,7 +31,8 @@
31
31
  .adm-form-item-label-required {
32
32
  position: absolute;
33
33
  left: -0.6em;
34
- top: 0.2em;
34
+ top: 0;
35
+ font-family: SimSun, sans-serif;
35
36
  color: var(--adm-color-danger);
36
37
  user-select: none;
37
38
  }
@@ -45,8 +46,8 @@
45
46
  }
46
47
 
47
48
  .adm-form-vertical .adm-form-item-label {
48
- margin-bottom: 8px;
49
49
  font-size: 30px;
50
+ margin-bottom: 8px;
50
51
  }
51
52
 
52
53
  .adm-form-vertical .adm-form-item-footer {
@@ -2,13 +2,14 @@
2
2
  import './index.less';
3
3
  import { useForm } from 'rc-field-form';
4
4
  export declare type FormLayout = 'vertical' | 'horizontal';
5
- export type { FormProps } from './form';
6
- export type { FormInstance } from 'rc-field-form';
7
- declare const _default: import("react").ForwardRefExoticComponent<import("rc-field-form").FormProps<any> & import("../../utils/native-props").NativeProps<never> & Partial<import("./context").FormContextType> & {
5
+ export type { FormProps, FormInstance } from './form';
6
+ export type { FormItemProps } from './form-item';
7
+ export type { ValidateMessages, FieldData, NamePath, } from 'rc-field-form/es/interface';
8
+ declare const _default: import("react").ForwardRefExoticComponent<Pick<import("rc-field-form").FormProps<any>, "children" | "form" | "name" | "initialValues" | "preserve" | "validateMessages" | "validateTrigger" | "onFieldsChange" | "onFinish" | "onFinishFailed" | "onValuesChange"> & import("../../utils/native-props").NativeProps<never> & Partial<import("./context").FormContextType> & {
8
9
  footer?: import("react").ReactNode;
9
10
  layout?: "horizontal" | "vertical" | undefined;
10
11
  mode?: "default" | "card" | undefined;
11
- } & import("react").RefAttributes<import("rc-field-form").FormInstance<any>>> & {
12
+ } & import("react").RefAttributes<Pick<import("rc-field-form").FormInstance<any>, "submit" | "getFieldValue" | "getFieldsValue" | "getFieldError" | "getFieldsError" | "isFieldTouched" | "isFieldsTouched" | "resetFields" | "setFields" | "setFieldsValue" | "validateFields">>> & {
12
13
  Item: import("react").FC<import("./form-item").FormItemProps>;
13
14
  Header: import("react").FC<{}>;
14
15
  useForm: typeof useForm;
@@ -1,11 +1,11 @@
1
1
  import { __awaiter } from "tslib";
2
- import React, { useLayoutEffect, useRef, useState } from 'react';
2
+ import React, { useRef, useState } from 'react';
3
3
  import { AddOutline } from 'antd-mobile-icons';
4
4
  import { mergeProps } from '../../utils/with-default-props';
5
5
  import ImageViewer from '../image-viewer';
6
6
  import PreviewItem from './preview-item';
7
7
  import { usePropsValue } from '../../utils/use-props-value';
8
- import { useMemoizedFn, useUnmount } from 'ahooks';
8
+ import { useIsomorphicLayoutEffect, useMemoizedFn, useUnmount } from 'ahooks';
9
9
  import Space from '../space';
10
10
  import { withNativeProps } from '../../utils/native-props';
11
11
  const classPrefix = `adm-image-uploader`;
@@ -26,7 +26,7 @@ export const ImageUploader = p => {
26
26
  setValue(updater(value));
27
27
  });
28
28
  const [tasks, setTasks] = useState([]);
29
- useLayoutEffect(() => {
29
+ useIsomorphicLayoutEffect(() => {
30
30
  setTasks(prev => prev.filter(task => {
31
31
  if (task.url === undefined) return true;
32
32
  return !value.some(fileItem => fileItem.url === task.url);
@@ -1,5 +1,6 @@
1
- import { FC } from 'react';
1
+ import React, { FC } from 'react';
2
2
  import { GetContainer } from '../../utils/render-to-container';
3
+ import { SlidesRef } from './slides';
3
4
  export declare type ImageViewerProps = {
4
5
  image?: string;
5
6
  maxZoom?: number;
@@ -9,9 +10,14 @@ export declare type ImageViewerProps = {
9
10
  afterClose?: () => void;
10
11
  };
11
12
  export declare const ImageViewer: FC<ImageViewerProps>;
13
+ export declare type MultiImageViewerRef = SlidesRef;
12
14
  export declare type MultiImageViewerProps = Omit<ImageViewerProps, 'image'> & {
13
15
  images?: string[];
14
16
  defaultIndex?: number;
15
17
  onIndexChange?: (index: number) => void;
16
18
  };
17
- export declare const MultiImageViewer: FC<MultiImageViewerProps>;
19
+ export declare const MultiImageViewer: React.ForwardRefExoticComponent<Pick<ImageViewerProps, "visible" | "onClose" | "afterClose" | "getContainer" | "maxZoom"> & {
20
+ images?: string[] | undefined;
21
+ defaultIndex?: number | undefined;
22
+ onIndexChange?: ((index: number) => void) | undefined;
23
+ } & React.RefAttributes<SlidesRef>>;
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React, { forwardRef, useImperativeHandle, useRef, useState } from 'react';
2
2
  import { mergeProps } from '../../utils/with-default-props';
3
3
  import { renderToContainer } from '../../utils/render-to-container';
4
4
  import Mask from '../mask';
@@ -33,8 +33,18 @@ export const ImageViewer = p => {
33
33
  const multiDefaultProps = Object.assign(Object.assign({}, defaultProps), {
34
34
  defaultIndex: 0
35
35
  });
36
- export const MultiImageViewer = p => {
36
+ export const MultiImageViewer = forwardRef((p, ref) => {
37
37
  const props = mergeProps(multiDefaultProps, p);
38
+ const [defaultIndex, setDefaultIndex] = useState(props.defaultIndex);
39
+ const slidesRef = useRef(null);
40
+ useImperativeHandle(ref, () => ({
41
+ swipeTo: (index, immediate) => {
42
+ var _a;
43
+
44
+ setDefaultIndex(index);
45
+ (_a = slidesRef.current) === null || _a === void 0 ? void 0 : _a.swipeTo(index, immediate);
46
+ }
47
+ }));
38
48
  const node = React.createElement(Mask, {
39
49
  visible: props.visible,
40
50
  disableBodyScroll: false,
@@ -43,7 +53,8 @@ export const MultiImageViewer = p => {
43
53
  }, React.createElement("div", {
44
54
  className: `${classPrefix}-content`
45
55
  }, props.images && React.createElement(Slides, {
46
- defaultIndex: props.defaultIndex,
56
+ ref: slidesRef,
57
+ defaultIndex: defaultIndex,
47
58
  onIndexChange: props.onIndexChange,
48
59
  images: props.images,
49
60
  onTap: () => {
@@ -54,4 +65,4 @@ export const MultiImageViewer = p => {
54
65
  maxZoom: props.maxZoom
55
66
  })));
56
67
  return renderToContainer(props.getContainer, node);
57
- };
68
+ });
@@ -1,10 +1,14 @@
1
1
  /// <reference types="react" />
2
2
  import './image-viewer.less';
3
3
  import { showMultiImageViewer, showImageViewer, clearImageViewer } from './methods';
4
- export type { ImageViewerProps, MultiImageViewerProps } from './image-viewer';
4
+ export type { ImageViewerProps, MultiImageViewerProps, MultiImageViewerRef, } from './image-viewer';
5
5
  export type { ImageViewerHandler } from './methods';
6
6
  declare const _default: import("react").FC<import("./image-viewer").ImageViewerProps> & {
7
- Multi: import("react").FC<import("./image-viewer").MultiImageViewerProps> & {
7
+ Multi: import("react").ForwardRefExoticComponent<Pick<import("./image-viewer").ImageViewerProps, "visible" | "onClose" | "afterClose" | "getContainer" | "maxZoom"> & {
8
+ images?: string[] | undefined;
9
+ defaultIndex?: number | undefined;
10
+ onIndexChange?: ((index: number) => void) | undefined;
11
+ } & import("react").RefAttributes<import("./slides").SlidesRef>> & {
8
12
  show: typeof showMultiImageViewer;
9
13
  };
10
14
  show: typeof showImageViewer;
@@ -109,6 +109,7 @@ export const Slide = props => {
109
109
  }
110
110
  }, React.createElement("img", {
111
111
  src: props.image,
112
- draggable: false
112
+ draggable: false,
113
+ alt: props.image
113
114
  }))));
114
115
  };
@@ -1,8 +1,12 @@
1
- import { FC } from 'react';
2
- export declare const Slides: FC<{
1
+ import React from 'react';
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
- }>;
8
+ };
9
+ export declare type SlidesRef = {
10
+ swipeTo: (index: number, immediate?: boolean) => void;
11
+ };
12
+ export declare const Slides: React.ForwardRefExoticComponent<SlidesType & React.RefAttributes<SlidesRef>>;
@@ -1,11 +1,11 @@
1
- import React, { useRef } from 'react';
1
+ import React, { forwardRef, useImperativeHandle, useRef } from 'react';
2
2
  import { useDrag } from '@use-gesture/react';
3
3
  import { useSpring, animated } from '@react-spring/web';
4
4
  import { Slide } from './slide';
5
5
  import { convertPx } from '../../utils/convert-px';
6
6
  import { bound } from '../../utils/bound';
7
7
  const classPrefix = `adm-image-viewer`;
8
- export const Slides = props => {
8
+ export const Slides = forwardRef((props, ref) => {
9
9
  const slideWidth = window.innerWidth + convertPx(16);
10
10
  const [{
11
11
  x
@@ -17,10 +17,23 @@ export const Slides = props => {
17
17
  }
18
18
  }));
19
19
  const count = props.images.length;
20
- const dragLockRef = useRef(false);
21
- const bind = useDrag(state => {
20
+
21
+ function swipeTo(index, immediate = false) {
22
22
  var _a;
23
23
 
24
+ const i = bound(index, 0, count - 1);
25
+ (_a = props.onIndexChange) === null || _a === void 0 ? void 0 : _a.call(props, i);
26
+ api.start({
27
+ x: i * slideWidth,
28
+ immediate
29
+ });
30
+ }
31
+
32
+ useImperativeHandle(ref, () => ({
33
+ swipeTo
34
+ }));
35
+ const dragLockRef = useRef(false);
36
+ const bind = useDrag(state => {
24
37
  if (dragLockRef.current) return;
25
38
  const [offsetX] = state.offset;
26
39
 
@@ -28,11 +41,7 @@ export const Slides = props => {
28
41
  const minIndex = Math.floor(offsetX / slideWidth);
29
42
  const maxIndex = minIndex + 1;
30
43
  const velocityOffset = Math.min(state.velocity[0] * 2000, slideWidth) * state.direction[0];
31
- const index = bound(bound(Math.round((offsetX + velocityOffset) / slideWidth), minIndex, maxIndex), 0, count - 1);
32
- (_a = props.onIndexChange) === null || _a === void 0 ? void 0 : _a.call(props, index);
33
- api.start({
34
- x: index * slideWidth
35
- });
44
+ swipeTo(bound(Math.round((offsetX + velocityOffset) / slideWidth), minIndex, maxIndex));
36
45
  } else {
37
46
  api.start({
38
47
  x: offsetX,
@@ -81,4 +90,4 @@ export const Slides = props => {
81
90
  },
82
91
  dragLockRef: dragLockRef
83
92
  }))));
84
- };
93
+ });