antd-mobile 5.9.5 → 5.10.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/2x/cjs/components/capsule-tabs/capsule-tabs.js +3 -3
  2. package/2x/cjs/components/collapse/collapse.js +3 -3
  3. package/2x/cjs/components/divider/divider.css +19 -8
  4. package/2x/cjs/components/divider/divider.d.ts +1 -0
  5. package/2x/cjs/components/divider/divider.js +3 -2
  6. package/2x/cjs/components/form/form.js +3 -2
  7. package/2x/cjs/components/image-uploader/image-uploader.d.ts +2 -0
  8. package/2x/cjs/components/image-uploader/image-uploader.js +6 -2
  9. package/2x/cjs/components/image-uploader/preview-item.d.ts +2 -0
  10. package/2x/cjs/components/image-uploader/preview-item.js +3 -2
  11. package/2x/cjs/components/index-bar/index-bar.js +3 -3
  12. package/2x/cjs/components/jumbo-tabs/jumbo-tabs.js +3 -3
  13. package/2x/cjs/components/mask/mask.css +1 -0
  14. package/2x/cjs/components/mask/mask.js +8 -1
  15. package/2x/cjs/components/picker-view/picker-view.d.ts +1 -0
  16. package/2x/cjs/components/picker-view/wheel.js +3 -1
  17. package/2x/cjs/components/popover/popover-menu.js +2 -1
  18. package/2x/cjs/components/safe-area/safe-area.css +2 -2
  19. package/2x/cjs/components/side-bar/side-bar.js +3 -3
  20. package/2x/cjs/components/stepper/stepper.js +16 -9
  21. package/2x/cjs/components/swiper/swiper.js +1 -0
  22. package/2x/cjs/components/tab-bar/tab-bar.js +3 -3
  23. package/2x/cjs/components/tabs/tabs.js +3 -3
  24. package/2x/cjs/components/tree-select/multiple.js +2 -1
  25. package/2x/cjs/global/global.css +1 -0
  26. package/2x/cjs/global/theme.css +1 -0
  27. package/2x/cjs/locales/ko-KR.d.ts +102 -0
  28. package/2x/cjs/locales/ko-KR.js +115 -0
  29. package/2x/cjs/locales/zh-HK.js +56 -0
  30. package/2x/cjs/locales/zh-TW.js +56 -0
  31. package/2x/cjs/utils/traverse-react-node.d.ts +2 -0
  32. package/2x/cjs/utils/traverse-react-node.js +29 -0
  33. package/2x/es/components/capsule-tabs/capsule-tabs.js +2 -1
  34. package/2x/es/components/collapse/collapse.js +2 -1
  35. package/2x/es/components/divider/divider.css +19 -8
  36. package/2x/es/components/divider/divider.d.ts +1 -0
  37. package/2x/es/components/divider/divider.js +3 -2
  38. package/2x/es/components/form/form.js +2 -1
  39. package/2x/es/components/image-uploader/image-uploader.d.ts +2 -0
  40. package/2x/es/components/image-uploader/image-uploader.js +6 -2
  41. package/2x/es/components/image-uploader/preview-item.d.ts +2 -0
  42. package/2x/es/components/image-uploader/preview-item.js +3 -2
  43. package/2x/es/components/index-bar/index-bar.js +2 -1
  44. package/2x/es/components/jumbo-tabs/jumbo-tabs.js +2 -1
  45. package/2x/es/components/mask/mask.css +1 -0
  46. package/2x/es/components/mask/mask.js +8 -1
  47. package/2x/es/components/picker-view/picker-view.d.ts +1 -0
  48. package/2x/es/components/picker-view/wheel.js +3 -1
  49. package/2x/es/components/popover/popover-menu.js +2 -1
  50. package/2x/es/components/safe-area/safe-area.css +2 -2
  51. package/2x/es/components/side-bar/side-bar.js +2 -1
  52. package/2x/es/components/stepper/stepper.js +15 -9
  53. package/2x/es/components/swiper/swiper.js +1 -0
  54. package/2x/es/components/tab-bar/tab-bar.js +2 -1
  55. package/2x/es/components/tabs/tabs.js +2 -1
  56. package/2x/es/components/tree-select/multiple.js +2 -1
  57. package/2x/es/global/global.css +1 -0
  58. package/2x/es/global/theme.css +1 -0
  59. package/2x/es/locales/ko-KR.d.ts +102 -0
  60. package/2x/es/locales/ko-KR.js +105 -0
  61. package/2x/es/locales/zh-HK.js +56 -0
  62. package/2x/es/locales/zh-TW.js +56 -0
  63. package/2x/es/utils/traverse-react-node.d.ts +2 -0
  64. package/2x/es/utils/traverse-react-node.js +18 -0
  65. package/2x/package.json +5 -1
  66. package/bundle/antd-mobile.cjs.js +60 -25
  67. package/bundle/antd-mobile.es.js +59 -25
  68. package/bundle/style.css +22 -10
  69. package/cjs/components/capsule-tabs/capsule-tabs.js +3 -3
  70. package/cjs/components/collapse/collapse.js +3 -3
  71. package/cjs/components/divider/divider.css +18 -8
  72. package/cjs/components/divider/divider.d.ts +1 -0
  73. package/cjs/components/divider/divider.js +3 -2
  74. package/cjs/components/form/form.js +3 -2
  75. package/cjs/components/image-uploader/image-uploader.d.ts +2 -0
  76. package/cjs/components/image-uploader/image-uploader.js +6 -2
  77. package/cjs/components/image-uploader/preview-item.d.ts +2 -0
  78. package/cjs/components/image-uploader/preview-item.js +3 -2
  79. package/cjs/components/index-bar/index-bar.js +3 -3
  80. package/cjs/components/jumbo-tabs/jumbo-tabs.js +3 -3
  81. package/cjs/components/mask/mask.css +1 -0
  82. package/cjs/components/mask/mask.js +8 -1
  83. package/cjs/components/picker-view/picker-view.d.ts +1 -0
  84. package/cjs/components/picker-view/wheel.js +3 -1
  85. package/cjs/components/popover/popover-menu.js +2 -1
  86. package/cjs/components/safe-area/safe-area.css +2 -2
  87. package/cjs/components/side-bar/side-bar.js +3 -3
  88. package/cjs/components/stepper/stepper.js +16 -9
  89. package/cjs/components/swiper/swiper.js +1 -0
  90. package/cjs/components/tab-bar/tab-bar.js +3 -3
  91. package/cjs/components/tabs/tabs.js +3 -3
  92. package/cjs/components/tree-select/multiple.js +2 -1
  93. package/cjs/global/global.css +1 -0
  94. package/cjs/global/theme.css +1 -0
  95. package/cjs/locales/ko-KR.d.ts +102 -0
  96. package/cjs/locales/ko-KR.js +115 -0
  97. package/cjs/locales/zh-HK.js +56 -0
  98. package/cjs/locales/zh-TW.js +56 -0
  99. package/cjs/utils/traverse-react-node.d.ts +2 -0
  100. package/cjs/utils/traverse-react-node.js +29 -0
  101. package/es/components/capsule-tabs/capsule-tabs.js +2 -1
  102. package/es/components/collapse/collapse.js +2 -1
  103. package/es/components/divider/divider.css +18 -8
  104. package/es/components/divider/divider.d.ts +1 -0
  105. package/es/components/divider/divider.js +3 -2
  106. package/es/components/form/form.js +2 -1
  107. package/es/components/image-uploader/image-uploader.d.ts +2 -0
  108. package/es/components/image-uploader/image-uploader.js +6 -2
  109. package/es/components/image-uploader/preview-item.d.ts +2 -0
  110. package/es/components/image-uploader/preview-item.js +3 -2
  111. package/es/components/index-bar/index-bar.js +2 -1
  112. package/es/components/jumbo-tabs/jumbo-tabs.js +2 -1
  113. package/es/components/mask/mask.css +1 -0
  114. package/es/components/mask/mask.js +8 -1
  115. package/es/components/picker-view/picker-view.d.ts +1 -0
  116. package/es/components/picker-view/wheel.js +3 -1
  117. package/es/components/popover/popover-menu.js +2 -1
  118. package/es/components/safe-area/safe-area.css +2 -2
  119. package/es/components/side-bar/side-bar.js +2 -1
  120. package/es/components/stepper/stepper.js +15 -9
  121. package/es/components/swiper/swiper.js +1 -0
  122. package/es/components/tab-bar/tab-bar.js +2 -1
  123. package/es/components/tabs/tabs.js +2 -1
  124. package/es/components/tree-select/multiple.js +2 -1
  125. package/es/global/global.css +1 -0
  126. package/es/global/theme.css +1 -0
  127. package/es/locales/ko-KR.d.ts +102 -0
  128. package/es/locales/ko-KR.js +105 -0
  129. package/es/locales/zh-HK.js +56 -0
  130. package/es/locales/zh-TW.js +56 -0
  131. package/es/utils/traverse-react-node.d.ts +2 -0
  132. package/es/utils/traverse-react-node.js +18 -0
  133. package/package.json +5 -1
  134. package/umd/antd-mobile.js +1 -1
  135. package/umd/antd-mobile.js.LICENSE.txt +9 -0
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _mergeLocale = require("../utils/merge-locale");
9
+
10
+ var _base = require("./base");
11
+
12
+ const typeTemplate = '${label} 유효하지 않은 ${type} 입니다';
13
+ const koKR = (0, _mergeLocale.mergeLocale)(_base.base, {
14
+ locale: 'ko-KR',
15
+ common: {
16
+ confirm: '확인',
17
+ cancel: '취소',
18
+ loading: '로딩중...'
19
+ },
20
+ Calendar: {
21
+ markItems: ['월', '화', '수', '목', '금', '토', '일'],
22
+ renderYearAndMonth: (year, month) => `${year}년${month}일`
23
+ },
24
+ Cascader: {
25
+ placeholder: '선택됨'
26
+ },
27
+ Dialog: {
28
+ ok: '확인'
29
+ },
30
+ ErrorBlock: {
31
+ default: {
32
+ title: '문제가 발생했습니다',
33
+ description: '잠시 후 다시 시도해주세요'
34
+ },
35
+ busy: {
36
+ title: '로딩 되지 않았습니다.',
37
+ description: '페이지를 새로고침 해주세요'
38
+ },
39
+ disconnected: {
40
+ title: '네트워크를 사용 중 입니다',
41
+ description: '페이지를 새로고침 해주세요'
42
+ },
43
+ empty: {
44
+ title: '정보를 찾을 수 없습니다',
45
+ description: '정확한 검색어인가요?'
46
+ }
47
+ },
48
+ Form: {
49
+ required: '필수',
50
+ optional: '선택',
51
+ defaultValidateMessages: {
52
+ default: '필드 유효성 검사 오류 ${label}',
53
+ required: '${label} 입력해 주세요',
54
+ enum: '${label} [${enum}] 중에 하나여야 합니다',
55
+ whitespace: '${label} 비워둘 수 없습니다',
56
+ date: {
57
+ format: '${label} 유효하지 않은 날짜 형식입니다',
58
+ parse: '${label} 날짜 형식으로 변환될 수 없습니다',
59
+ invalid: '${label} 유효하지 않은 날짜입니다'
60
+ },
61
+ types: {
62
+ string: typeTemplate,
63
+ method: typeTemplate,
64
+ array: typeTemplate,
65
+ object: typeTemplate,
66
+ number: typeTemplate,
67
+ date: typeTemplate,
68
+ boolean: typeTemplate,
69
+ integer: typeTemplate,
70
+ float: typeTemplate,
71
+ regexp: typeTemplate,
72
+ email: typeTemplate,
73
+ url: typeTemplate,
74
+ hex: typeTemplate
75
+ },
76
+ string: {
77
+ len: '${label} ${len}글자여야 합니다',
78
+ min: '${label} 적어도 ${min}글자 이상이어야 합니다',
79
+ max: '${label} ${max}글자 이하여야 합니다',
80
+ range: '${label} ${min}-${max}글자 사이어야 합니다'
81
+ },
82
+ number: {
83
+ len: '${label} 값은 ${len}이어야 합니다',
84
+ min: '${label} 최솟값은 ${min}입니다',
85
+ max: '${label} 최댓값은 ${max}입니다',
86
+ range: '${label} 값은 ${min}-${max} 사이어야 합니다'
87
+ },
88
+ array: {
89
+ len: '${len}이어야 합니다 ${label}',
90
+ min: '최소 ${min}이어야 합니다 ${label}',
91
+ max: '최대 ${max}이어야 합니다 ${label}',
92
+ range: '${label} ${min}-${max} 사이어야 합니다'
93
+ },
94
+ pattern: {
95
+ mismatch: '${label} ${pattern} 패턴과 일치하지 않습니다'
96
+ }
97
+ }
98
+ },
99
+ ImageUploader: {
100
+ uploading: '업로드 중...'
101
+ },
102
+ Mask: {
103
+ name: '마스크'
104
+ },
105
+ Modal: {
106
+ ok: '확인'
107
+ },
108
+ PullToRefresh: {
109
+ pulling: '스크롤을 당겨서 새로고침하십시오',
110
+ canRelease: '새로고침 하려면 놓으십시오',
111
+ complete: '새로고침 완료'
112
+ }
113
+ });
114
+ var _default = koKR;
115
+ exports.default = _default;
@@ -9,6 +9,7 @@ var _mergeLocale = require("../utils/merge-locale");
9
9
 
10
10
  var _base = require("./base");
11
11
 
12
+ const typeTemplate = '${label}不是一個有效的${type}';
12
13
  const zhHK = (0, _mergeLocale.mergeLocale)(_base.base, {
13
14
  locale: 'zh-HK',
14
15
  common: {
@@ -16,6 +17,10 @@ const zhHK = (0, _mergeLocale.mergeLocale)(_base.base, {
16
17
  cancel: '取消',
17
18
  loading: '加載中……'
18
19
  },
20
+ Calendar: {
21
+ markItems: ['一', '二', '三', '四', '五', '六', '日'],
22
+ renderYearAndMonth: (year, month) => `${year}年${month}月`
23
+ },
19
24
  Cascader: {
20
25
  placeholder: '請選擇'
21
26
  },
@@ -40,6 +45,57 @@ const zhHK = (0, _mergeLocale.mergeLocale)(_base.base, {
40
45
  description: '找找其他的吧'
41
46
  }
42
47
  },
48
+ Form: {
49
+ required: '必填',
50
+ optional: '選填',
51
+ defaultValidateMessages: {
52
+ default: '字段驗證錯誤${label}',
53
+ required: '請輸入${label}',
54
+ enum: '${label}必須是其中一個[${enum}]',
55
+ whitespace: '${label}不能為空字符',
56
+ date: {
57
+ format: '${label}日期格式無效',
58
+ parse: '${label}不能轉換為日期',
59
+ invalid: '${label}是一個無效日期'
60
+ },
61
+ types: {
62
+ string: typeTemplate,
63
+ method: typeTemplate,
64
+ array: typeTemplate,
65
+ object: typeTemplate,
66
+ number: typeTemplate,
67
+ date: typeTemplate,
68
+ boolean: typeTemplate,
69
+ integer: typeTemplate,
70
+ float: typeTemplate,
71
+ regexp: typeTemplate,
72
+ email: typeTemplate,
73
+ url: typeTemplate,
74
+ hex: typeTemplate
75
+ },
76
+ string: {
77
+ len: '${label}須為${len}個字符',
78
+ min: '${label}最少${min}個字符',
79
+ max: '${label}最多${max}個字符',
80
+ range: '${label}須在${min}-${max}字符之間'
81
+ },
82
+ number: {
83
+ len: '${label}必須等於${len}',
84
+ min: '${label}最小值為${min}',
85
+ max: '${label}最大值為${max}',
86
+ range: '${label}須在${min}-${max}之間'
87
+ },
88
+ array: {
89
+ len: '須為${len}個${label}',
90
+ min: '最少${min}個${label}',
91
+ max: '最多${max}個${label}',
92
+ range: '${label}数量須在${min}-${max}之間'
93
+ },
94
+ pattern: {
95
+ mismatch: '${label}與模式不匹配${pattern}'
96
+ }
97
+ }
98
+ },
43
99
  ImageUploader: {
44
100
  uploading: '上傳中...'
45
101
  },
@@ -9,6 +9,7 @@ var _mergeLocale = require("../utils/merge-locale");
9
9
 
10
10
  var _base = require("./base");
11
11
 
12
+ const typeTemplate = '${label}不是一個有效的${type}';
12
13
  const zhTW = (0, _mergeLocale.mergeLocale)(_base.base, {
13
14
  locale: 'zh-TW',
14
15
  common: {
@@ -16,6 +17,10 @@ const zhTW = (0, _mergeLocale.mergeLocale)(_base.base, {
16
17
  cancel: '取消',
17
18
  loading: '加載中……'
18
19
  },
20
+ Calendar: {
21
+ markItems: ['一', '二', '三', '四', '五', '六', '日'],
22
+ renderYearAndMonth: (year, month) => `${year}年${month}月`
23
+ },
19
24
  Cascader: {
20
25
  placeholder: '請選擇'
21
26
  },
@@ -40,6 +45,57 @@ const zhTW = (0, _mergeLocale.mergeLocale)(_base.base, {
40
45
  description: '找找其他的吧'
41
46
  }
42
47
  },
48
+ Form: {
49
+ required: '必填',
50
+ optional: '選填',
51
+ defaultValidateMessages: {
52
+ default: '字段驗證錯誤${label}',
53
+ required: '請輸入${label}',
54
+ enum: '${label}必須是其中一個[${enum}]',
55
+ whitespace: '${label}不能為空字符',
56
+ date: {
57
+ format: '${label}日期格式無效',
58
+ parse: '${label}不能轉換為日期',
59
+ invalid: '${label}是一個無效日期'
60
+ },
61
+ types: {
62
+ string: typeTemplate,
63
+ method: typeTemplate,
64
+ array: typeTemplate,
65
+ object: typeTemplate,
66
+ number: typeTemplate,
67
+ date: typeTemplate,
68
+ boolean: typeTemplate,
69
+ integer: typeTemplate,
70
+ float: typeTemplate,
71
+ regexp: typeTemplate,
72
+ email: typeTemplate,
73
+ url: typeTemplate,
74
+ hex: typeTemplate
75
+ },
76
+ string: {
77
+ len: '${label}須為${len}個字符',
78
+ min: '${label}最少${min}個字符',
79
+ max: '${label}最多${max}個字符',
80
+ range: '${label}須在${min}-${max}字符之間'
81
+ },
82
+ number: {
83
+ len: '${label}必須等於${len}',
84
+ min: '${label}最小值為${min}',
85
+ max: '${label}最大值為${max}',
86
+ range: '${label}須在${min}-${max}之間'
87
+ },
88
+ array: {
89
+ len: '須為${len}個${label}',
90
+ min: '最少${min}個${label}',
91
+ max: '最多${max}個${label}',
92
+ range: '${label}数量須在${min}-${max}之間'
93
+ },
94
+ pattern: {
95
+ mismatch: '${label}與模式不匹配${pattern}'
96
+ }
97
+ }
98
+ },
43
99
  ImageUploader: {
44
100
  uploading: '上傳中...'
45
101
  },
@@ -0,0 +1,2 @@
1
+ import { ReactNode } from 'react';
2
+ export declare function traverseReactNode(children: ReactNode, fn: (child: ReactNode, index: number) => void): void;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.traverseReactNode = traverseReactNode;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _reactIs = require("react-is");
11
+
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+
14
+ function traverseReactNode(children, fn) {
15
+ let i = 0;
16
+
17
+ function handle(target) {
18
+ _react.default.Children.forEach(target, child => {
19
+ if (!(0, _reactIs.isFragment)(child)) {
20
+ fn(child, i);
21
+ i += 1;
22
+ } else {
23
+ handle(child.props.children);
24
+ }
25
+ });
26
+ }
27
+
28
+ handle(children);
29
+ }
@@ -7,6 +7,7 @@ import { useResizeEffect } from '../../utils/use-resize-effect';
7
7
  import { useTabListScroll } from '../../utils/use-tab-list-scroll';
8
8
  import ScrollMask from '../scroll-mask';
9
9
  import { ShouldRender } from '../../utils/should-render';
10
+ import { traverseReactNode } from '../../utils/traverse-react-node';
10
11
  const classPrefix = `adm-capsule-tabs`;
11
12
  export const CapsuleTab = () => {
12
13
  return null;
@@ -19,7 +20,7 @@ export const CapsuleTabs = props => {
19
20
  const keyToIndexRecord = {};
20
21
  let firstActiveKey = null;
21
22
  const panes = [];
22
- React.Children.forEach(props.children, (child, index) => {
23
+ traverseReactNode(props.children, (child, index) => {
23
24
  if (!React.isValidElement(child)) return;
24
25
  const key = child.key;
25
26
  if (typeof key !== 'string') return;
@@ -8,6 +8,7 @@ import { usePropsValue } from '../../utils/use-props-value';
8
8
  import { useMount } from 'ahooks';
9
9
  import { useShouldRender } from '../../utils/should-render';
10
10
  import { useIsomorphicUpdateLayoutEffect } from '../../utils/use-isomorphic-update-layout-effect';
11
+ import { traverseReactNode } from '../../utils/traverse-react-node';
11
12
  const classPrefix = `adm-collapse`;
12
13
  export const CollapsePanel = () => {
13
14
  return null;
@@ -81,7 +82,7 @@ export const Collapse = props => {
81
82
  var _a;
82
83
 
83
84
  const panels = [];
84
- React.Children.forEach(props.children, child => {
85
+ traverseReactNode(props.children, child => {
85
86
  if (!React.isValidElement(child)) return;
86
87
  const key = child.key;
87
88
  if (typeof key !== 'string') return;
@@ -1,21 +1,21 @@
1
- .adm-divider {
1
+ .adm-divider-horizontal {
2
2
  display: flex;
3
3
  align-items: center;
4
4
  margin: 16px 0;
5
- color: var(--adm-color-weak);
6
- font-size: 14px;
7
5
  border-width: 0;
8
6
  border-color: var(--adm-border-color);
9
7
  border-style: solid;
8
+ color: var(--adm-color-weak);
9
+ font-size: 14px;
10
10
  }
11
- .adm-divider-left.adm-divider::before {
11
+ .adm-divider-left.adm-divider-horizontal::before {
12
12
  max-width: 10%;
13
13
  }
14
- .adm-divider-right.adm-divider::after {
14
+ .adm-divider-right.adm-divider-horizontal::after {
15
15
  max-width: 10%;
16
16
  }
17
- .adm-divider::after,
18
- .adm-divider::before {
17
+ .adm-divider-horizontal::after,
18
+ .adm-divider-horizontal::before {
19
19
  flex: auto;
20
20
  display: block;
21
21
  content: '';
@@ -23,7 +23,17 @@
23
23
  border-color: inherit;
24
24
  border-width: 1px 0 0;
25
25
  }
26
- .adm-divider-content {
26
+ .adm-divider-horizontal .adm-divider-content {
27
27
  flex: none;
28
28
  padding: 0 16px;
29
29
  }
30
+ .adm-divider-vertical {
31
+ position: relative;
32
+ top: -0.06em;
33
+ display: inline-block;
34
+ height: 0.9em;
35
+ margin: 0 16px;
36
+ vertical-align: middle;
37
+ border-top: 0;
38
+ border-left: 1px solid var(--adm-border-color);
39
+ }
@@ -2,5 +2,6 @@ import { FC } from 'react';
2
2
  import { NativeProps } from '../../utils/native-props';
3
3
  export declare type DividerProps = {
4
4
  contentPosition?: 'left' | 'right' | 'center';
5
+ direction?: 'horizontal' | 'vertical';
5
6
  } & NativeProps;
6
7
  export declare const Divider: FC<DividerProps>;
@@ -4,12 +4,13 @@ import { withNativeProps } from '../../utils/native-props';
4
4
  import { mergeProps } from '../../utils/with-default-props';
5
5
  const classPrefix = `adm-divider`;
6
6
  const defaultProps = {
7
- contentPosition: 'center'
7
+ contentPosition: 'center',
8
+ direction: 'horizontal'
8
9
  };
9
10
  export const Divider = p => {
10
11
  const props = mergeProps(defaultProps, p);
11
12
  return withNativeProps(props, React.createElement("div", {
12
- className: classNames(classPrefix, `${classPrefix}-${props.contentPosition}`)
13
+ className: classNames(classPrefix, `${classPrefix}-${props.direction}`, `${classPrefix}-${props.contentPosition}`)
13
14
  }, props.children && React.createElement("div", {
14
15
  className: `${classPrefix}-content`
15
16
  }, props.children)));
@@ -9,6 +9,7 @@ import { Header } from './header';
9
9
  import { useConfig } from '../config-provider';
10
10
  import merge from 'lodash/merge';
11
11
  import { FormArray } from './form-array';
12
+ import { traverseReactNode } from '../../utils/traverse-react-node';
12
13
  const classPrefix = 'adm-form';
13
14
  const defaultProps = defaultFormContext;
14
15
  export const Form = forwardRef((p, ref) => {
@@ -46,7 +47,7 @@ export const Form = forwardRef((p, ref) => {
46
47
  items = [];
47
48
  }
48
49
 
49
- React.Children.forEach(props.children, child => {
50
+ traverseReactNode(props.children, child => {
50
51
  if (React.isValidElement(child)) {
51
52
  if (child.type === Header) {
52
53
  collect();
@@ -1,5 +1,6 @@
1
1
  import { FC, InputHTMLAttributes } from 'react';
2
2
  import { NativeProps } from '../../utils/native-props';
3
+ import type { ImageProps } from '../image';
3
4
  export declare type TaskStatus = 'pending' | 'fail';
4
5
  export interface ImageUploadItem {
5
6
  key?: string | number;
@@ -25,5 +26,6 @@ export declare type ImageUploaderProps = {
25
26
  onDelete?: (item: ImageUploadItem) => boolean | Promise<boolean> | void;
26
27
  preview?: boolean;
27
28
  showFailed?: boolean;
29
+ imageFit?: ImageProps['fit'];
28
30
  } & NativeProps<'--cell-size'>;
29
31
  export declare const ImageUploader: FC<ImageUploaderProps>;
@@ -18,7 +18,8 @@ const defaultProps = {
18
18
  defaultValue: [],
19
19
  accept: 'image/*',
20
20
  preview: true,
21
- showFailed: true
21
+ showFailed: true,
22
+ imageFit: 'cover'
22
23
  };
23
24
  export const ImageUploader = p => {
24
25
  const props = mergeProps(defaultProps, p);
@@ -89,6 +90,8 @@ export const ImageUploader = p => {
89
90
  file
90
91
  }));
91
92
  setTasks(prev => [...prev, ...newTasks]);
93
+ e.target.value = ''; // HACK: fix the same file doesn't trigger onChange
94
+
92
95
  yield Promise.all(newTasks.map(currentTask => __awaiter(this, void 0, void 0, function* () {
93
96
  try {
94
97
  const result = yield props.upload(currentTask.file);
@@ -122,7 +125,6 @@ export const ImageUploader = p => {
122
125
  throw e;
123
126
  }
124
127
  }))).catch(error => console.error(error));
125
- e.target.value = ''; // HACK: fix the same file doesn't trigger onChange
126
128
  });
127
129
  }
128
130
 
@@ -157,6 +159,7 @@ export const ImageUploader = p => {
157
159
  key: (_a = fileItem.key) !== null && _a !== void 0 ? _a : index,
158
160
  url: (_b = fileItem.thumbnailUrl) !== null && _b !== void 0 ? _b : fileItem.url,
159
161
  deletable: props.deletable,
162
+ imageFit: props.imageFit,
160
163
  onClick: () => {
161
164
  if (props.preview) {
162
165
  previewImage(index);
@@ -182,6 +185,7 @@ export const ImageUploader = p => {
182
185
  file: task.file,
183
186
  deletable: task.status !== 'pending',
184
187
  status: task.status,
188
+ imageFit: props.imageFit,
185
189
  onDelete: () => {
186
190
  setTasks(tasks.filter(x => x.id !== task.id));
187
191
  }
@@ -1,5 +1,6 @@
1
1
  import { FC } from 'react';
2
2
  import { TaskStatus } from './image-uploader';
3
+ import type { ImageProps } from '../image';
3
4
  declare type Props = {
4
5
  onClick?: () => void;
5
6
  onDelete?: () => void;
@@ -7,6 +8,7 @@ declare type Props = {
7
8
  url?: string;
8
9
  file?: File;
9
10
  status?: TaskStatus;
11
+ imageFit: ImageProps['fit'];
10
12
  };
11
13
  declare const PreviewItem: FC<Props>;
12
14
  export default PreviewItem;
@@ -14,7 +14,8 @@ const PreviewItem = props => {
14
14
  url,
15
15
  file,
16
16
  deletable,
17
- onDelete
17
+ onDelete,
18
+ imageFit
18
19
  } = props;
19
20
  const src = useMemo(() => {
20
21
  if (url) {
@@ -54,7 +55,7 @@ const PreviewItem = props => {
54
55
  }, React.createElement(Image, {
55
56
  className: `${classPrefix}-cell-image`,
56
57
  src: src,
57
- fit: 'cover',
58
+ fit: imageFit,
58
59
  onClick: props.onClick
59
60
  }), renderLoading(), renderDelete());
60
61
  };
@@ -7,6 +7,7 @@ import { Sidebar } from './sidebar';
7
7
  import { convertPx } from '../../utils/convert-px';
8
8
  import { Panel } from './panel';
9
9
  import { devWarning } from '../../utils/dev-log';
10
+ import { traverseReactNode } from '../../utils/traverse-react-node';
10
11
  const classPrefix = `adm-index-bar`;
11
12
  const defaultProps = {
12
13
  sticky: true
@@ -17,7 +18,7 @@ export const IndexBar = forwardRef((p, ref) => {
17
18
  const bodyRef = useRef(null);
18
19
  const indexItems = [];
19
20
  const panels = [];
20
- React.Children.forEach(props.children, child => {
21
+ traverseReactNode(props.children, child => {
21
22
  var _a;
22
23
 
23
24
  if (!React.isValidElement(child)) return;
@@ -7,6 +7,7 @@ import { useResizeEffect } from '../../utils/use-resize-effect';
7
7
  import { useTabListScroll } from '../../utils/use-tab-list-scroll';
8
8
  import ScrollMask from '../scroll-mask';
9
9
  import { ShouldRender } from '../../utils/should-render';
10
+ import { traverseReactNode } from '../../utils/traverse-react-node';
10
11
  const classPrefix = `adm-jumbo-tabs`;
11
12
  export const JumboTab = () => {
12
13
  return null;
@@ -19,7 +20,7 @@ export const JumboTabs = props => {
19
20
  const keyToIndexRecord = {};
20
21
  let firstActiveKey = null;
21
22
  const panes = [];
22
- React.Children.forEach(props.children, (child, index) => {
23
+ traverseReactNode(props.children, (child, index) => {
23
24
  if (!React.isValidElement(child)) return;
24
25
  const key = child.key;
25
26
  if (typeof key !== 'string') return;
@@ -15,6 +15,7 @@
15
15
  z-index: 0;
16
16
  width: 100%;
17
17
  height: 100%;
18
+ pointer-events: none;
18
19
  }
19
20
  .adm-mask-content {
20
21
  z-index: 1;
@@ -76,7 +76,14 @@ export const Mask = p => {
76
76
  opacity
77
77
  }, props.style), {
78
78
  display: active ? 'unset' : 'none'
79
- })
79
+ }),
80
+ onClick: e => {
81
+ var _a;
82
+
83
+ if (e.target === e.currentTarget) {
84
+ (_a = props.onMaskClick) === null || _a === void 0 ? void 0 : _a.call(props, e);
85
+ }
86
+ }
80
87
  }, props.onMaskClick && React.createElement("div", {
81
88
  className: `${classPrefix}-aria-button`,
82
89
  role: 'button',
@@ -9,6 +9,7 @@ export declare type PickerValueExtend = {
9
9
  export declare type PickerColumnItem = {
10
10
  label: ReactNode;
11
11
  value: string;
12
+ key?: string | number;
12
13
  };
13
14
  export declare type PickerColumn = (string | PickerColumnItem)[];
14
15
  export declare type PickerViewProps = {
@@ -140,6 +140,8 @@ export const Wheel = memo(props => {
140
140
  className: `${classPrefix}-column-wheel`,
141
141
  "aria-hidden": true
142
142
  }, column.map((item, index) => {
143
+ var _a;
144
+
143
145
  const selected = props.value === item.value;
144
146
  if (selected) selectedIndex = index;
145
147
 
@@ -149,7 +151,7 @@ export const Wheel = memo(props => {
149
151
  }
150
152
 
151
153
  return React.createElement("div", {
152
- key: item.value,
154
+ key: (_a = item.key) !== null && _a !== void 0 ? _a : item.value,
153
155
  "data-selected": item.value === value,
154
156
  className: `${classPrefix}-column-item`,
155
157
  onClick: handleClick,
@@ -3,7 +3,8 @@ import classNames from 'classnames';
3
3
  import { Popover } from './popover';
4
4
  const classPrefix = `adm-popover-menu`;
5
5
  export const PopoverMenu = forwardRef((props, ref) => {
6
- const innerRef = useRef(null);
6
+ const innerRef = useRef(null); // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
7
+
7
8
  useImperativeHandle(ref, () => innerRef.current, []);
8
9
  const onClick = useCallback(e => {
9
10
  var _a;
@@ -3,8 +3,8 @@
3
3
  width: 100%;
4
4
  }
5
5
  .adm-safe-area-position-top {
6
- padding-top: env(safe-area-inset-top);
6
+ padding-top: calc(env(safe-area-inset-top) * var(--adm-hd));
7
7
  }
8
8
  .adm-safe-area-position-bottom {
9
- padding-bottom: env(safe-area-inset-bottom);
9
+ padding-bottom: calc(env(safe-area-inset-bottom) * var(--adm-hd));
10
10
  }
@@ -4,6 +4,7 @@ import Badge from '../badge';
4
4
  import { withNativeProps } from '../../utils/native-props';
5
5
  import { usePropsValue } from '../../utils/use-props-value';
6
6
  import { Corner } from './corner';
7
+ import { traverseReactNode } from '../../utils/traverse-react-node';
7
8
  const classPrefix = `adm-side-bar`;
8
9
  export const SideBarItem = () => {
9
10
  return null;
@@ -13,7 +14,7 @@ export const SideBar = props => {
13
14
 
14
15
  let firstActiveKey = null;
15
16
  const items = [];
16
- React.Children.forEach(props.children, (child, index) => {
17
+ traverseReactNode(props.children, (child, index) => {
17
18
  if (!React.isValidElement(child)) return;
18
19
  const key = child.key;
19
20
  if (typeof key !== 'string') return;