@arco-design/mobile-react 2.26.0 → 2.27.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 (238) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/README.en-US.md +2 -2
  3. package/README.md +2 -2
  4. package/cjs/form/form-item.js +4 -2
  5. package/cjs/icon/IconHeart/index.js +1 -1
  6. package/cjs/icon/IconKeyboard/index.d.ts +7 -0
  7. package/cjs/icon/IconKeyboard/index.js +48 -0
  8. package/cjs/icon/IconKeyboardDelete/index.d.ts +7 -0
  9. package/cjs/icon/IconKeyboardDelete/index.js +44 -0
  10. package/cjs/icon/IconMinus/index.js +1 -1
  11. package/cjs/icon/IconMore/index.js +1 -1
  12. package/cjs/icon/IconNotice/index.js +1 -1
  13. package/cjs/icon/IconNoticeOff/index.js +1 -1
  14. package/cjs/icon/IconPlay/index.js +1 -1
  15. package/cjs/icon/IconSetting/index.js +2 -2
  16. package/cjs/icon/IconSound/index.js +1 -1
  17. package/cjs/icon/IconStar/index.js +1 -1
  18. package/cjs/icon/IconStarFill/index.js +1 -1
  19. package/cjs/icon/IconTriDown/index.js +1 -1
  20. package/cjs/icon/IconTriUp/index.js +1 -1
  21. package/cjs/icon/IconUpload/index.js +1 -1
  22. package/cjs/icon/IconWarnCircle/index.js +1 -1
  23. package/cjs/icon/IconWarnCircleFill/index.js +1 -1
  24. package/cjs/icon/index.d.ts +2 -0
  25. package/cjs/icon/index.js +12 -2
  26. package/cjs/image-picker/style/css/index.d.ts +1 -0
  27. package/cjs/image-picker/style/css/index.js +2 -0
  28. package/cjs/image-picker/style/index.d.ts +1 -0
  29. package/cjs/image-picker/style/index.js +2 -0
  30. package/cjs/index-bar/context.d.ts +3 -0
  31. package/cjs/index-bar/context.js +15 -0
  32. package/cjs/index-bar/demo/style/css/mobile.css +23 -0
  33. package/cjs/index-bar/demo/style/mobile.less +26 -0
  34. package/cjs/index-bar/group.d.ts +3 -0
  35. package/cjs/index-bar/group.js +101 -0
  36. package/cjs/index-bar/index.d.ts +15 -0
  37. package/cjs/index-bar/index.js +274 -0
  38. package/cjs/index-bar/side-bar.d.ts +3 -0
  39. package/cjs/index-bar/side-bar.js +102 -0
  40. package/cjs/index-bar/style/css/index.css +164 -0
  41. package/cjs/index-bar/style/css/index.d.ts +3 -0
  42. package/cjs/index-bar/style/css/index.js +7 -0
  43. package/cjs/index-bar/style/index.d.ts +3 -0
  44. package/cjs/index-bar/style/index.js +7 -0
  45. package/cjs/index-bar/style/index.less +122 -0
  46. package/cjs/index-bar/type.d.ts +195 -0
  47. package/cjs/index-bar/type.js +3 -0
  48. package/cjs/index-bar/utils.d.ts +6 -0
  49. package/cjs/index-bar/utils.js +68 -0
  50. package/cjs/index.d.ts +2 -0
  51. package/cjs/index.js +9 -1
  52. package/cjs/keyboard/demo/style/css/mobile.css +4 -0
  53. package/cjs/keyboard/demo/style/mobile.less +8 -0
  54. package/cjs/keyboard/index.d.ts +13 -0
  55. package/cjs/keyboard/index.js +270 -0
  56. package/cjs/keyboard/style/css/index.css +93 -0
  57. package/cjs/keyboard/style/css/index.d.ts +3 -0
  58. package/cjs/keyboard/style/css/index.js +7 -0
  59. package/cjs/keyboard/style/index.d.ts +3 -0
  60. package/cjs/keyboard/style/index.js +7 -0
  61. package/cjs/keyboard/style/index.less +80 -0
  62. package/cjs/keyboard/type.d.ts +102 -0
  63. package/cjs/keyboard/type.js +3 -0
  64. package/cjs/picker/index.js +3 -39
  65. package/cjs/picker/type.d.ts +1 -1
  66. package/cjs/picker-view/components/cascader.d.ts +2 -3
  67. package/cjs/picker-view/components/cascader.js +8 -6
  68. package/cjs/picker-view/components/multi-picker.d.ts +2 -3
  69. package/cjs/picker-view/components/multi-picker.js +31 -35
  70. package/cjs/picker-view/components/picker-cell.d.ts +1 -1
  71. package/cjs/picker-view/components/picker-cell.js +5 -7
  72. package/cjs/picker-view/index.d.ts +1 -1
  73. package/cjs/picker-view/index.js +9 -20
  74. package/cjs/picker-view/type.d.ts +2 -2
  75. package/cjs/slider/hooks/useSliderEvents.js +20 -20
  76. package/cjs/sticky/index.js +2 -2
  77. package/cjs/style.d.ts +2 -0
  78. package/cjs/style.js +4 -0
  79. package/dist/index.js +1172 -444
  80. package/dist/index.min.js +5 -5
  81. package/dist/style.css +215 -1
  82. package/dist/style.min.css +1 -1
  83. package/esm/form/form-item.js +4 -2
  84. package/esm/icon/IconHeart/index.js +1 -1
  85. package/esm/icon/IconKeyboard/index.d.ts +7 -0
  86. package/esm/icon/IconKeyboard/index.js +37 -0
  87. package/esm/icon/IconKeyboardDelete/index.d.ts +7 -0
  88. package/esm/icon/IconKeyboardDelete/index.js +33 -0
  89. package/esm/icon/IconMinus/index.js +1 -1
  90. package/esm/icon/IconMore/index.js +1 -1
  91. package/esm/icon/IconNotice/index.js +1 -1
  92. package/esm/icon/IconNoticeOff/index.js +1 -1
  93. package/esm/icon/IconPlay/index.js +1 -1
  94. package/esm/icon/IconSetting/index.js +2 -2
  95. package/esm/icon/IconSound/index.js +1 -1
  96. package/esm/icon/IconStar/index.js +1 -1
  97. package/esm/icon/IconStarFill/index.js +1 -1
  98. package/esm/icon/IconTriDown/index.js +1 -1
  99. package/esm/icon/IconTriUp/index.js +1 -1
  100. package/esm/icon/IconUpload/index.js +1 -1
  101. package/esm/icon/IconWarnCircle/index.js +1 -1
  102. package/esm/icon/IconWarnCircleFill/index.js +1 -1
  103. package/esm/icon/index.d.ts +2 -0
  104. package/esm/icon/index.js +2 -0
  105. package/esm/image-picker/style/css/index.d.ts +1 -0
  106. package/esm/image-picker/style/css/index.js +1 -0
  107. package/esm/image-picker/style/index.d.ts +1 -0
  108. package/esm/image-picker/style/index.js +1 -0
  109. package/esm/index-bar/context.d.ts +3 -0
  110. package/esm/index-bar/context.js +8 -0
  111. package/esm/index-bar/demo/style/css/mobile.css +23 -0
  112. package/esm/index-bar/demo/style/mobile.less +26 -0
  113. package/esm/index-bar/group.d.ts +3 -0
  114. package/esm/index-bar/group.js +83 -0
  115. package/esm/index-bar/index.d.ts +15 -0
  116. package/esm/index-bar/index.js +253 -0
  117. package/esm/index-bar/side-bar.d.ts +3 -0
  118. package/esm/index-bar/side-bar.js +90 -0
  119. package/esm/index-bar/style/css/index.css +164 -0
  120. package/esm/index-bar/style/css/index.d.ts +3 -0
  121. package/esm/index-bar/style/css/index.js +3 -0
  122. package/esm/index-bar/style/index.d.ts +3 -0
  123. package/esm/index-bar/style/index.js +3 -0
  124. package/esm/index-bar/style/index.less +122 -0
  125. package/esm/index-bar/type.d.ts +195 -0
  126. package/esm/index-bar/type.js +1 -0
  127. package/esm/index-bar/utils.d.ts +6 -0
  128. package/esm/index-bar/utils.js +53 -0
  129. package/esm/index.d.ts +2 -0
  130. package/esm/index.js +2 -0
  131. package/esm/keyboard/demo/style/css/mobile.css +4 -0
  132. package/esm/keyboard/demo/style/mobile.less +8 -0
  133. package/esm/keyboard/index.d.ts +13 -0
  134. package/esm/keyboard/index.js +243 -0
  135. package/esm/keyboard/style/css/index.css +93 -0
  136. package/esm/keyboard/style/css/index.d.ts +3 -0
  137. package/esm/keyboard/style/css/index.js +3 -0
  138. package/esm/keyboard/style/index.d.ts +3 -0
  139. package/esm/keyboard/style/index.js +3 -0
  140. package/esm/keyboard/style/index.less +80 -0
  141. package/esm/keyboard/type.d.ts +102 -0
  142. package/esm/keyboard/type.js +1 -0
  143. package/esm/picker/index.js +3 -40
  144. package/esm/picker/type.d.ts +1 -1
  145. package/esm/picker-view/components/cascader.d.ts +2 -3
  146. package/esm/picker-view/components/cascader.js +8 -6
  147. package/esm/picker-view/components/multi-picker.d.ts +2 -3
  148. package/esm/picker-view/components/multi-picker.js +31 -34
  149. package/esm/picker-view/components/picker-cell.d.ts +1 -1
  150. package/esm/picker-view/components/picker-cell.js +5 -7
  151. package/esm/picker-view/index.d.ts +1 -1
  152. package/esm/picker-view/index.js +10 -21
  153. package/esm/picker-view/type.d.ts +2 -2
  154. package/esm/slider/hooks/useSliderEvents.js +20 -20
  155. package/esm/sticky/index.js +2 -2
  156. package/esm/style.d.ts +2 -0
  157. package/esm/style.js +2 -0
  158. package/package.json +3 -3
  159. package/tokens/app/arcodesign/default/css-variables.less +43 -0
  160. package/tokens/app/arcodesign/default/index.d.ts +43 -0
  161. package/tokens/app/arcodesign/default/index.js +43 -0
  162. package/tokens/app/arcodesign/default/index.json +516 -0
  163. package/tokens/app/arcodesign/default/index.less +43 -0
  164. package/umd/form/form-item.js +4 -2
  165. package/umd/icon/IconHeart/index.js +1 -1
  166. package/umd/icon/IconKeyboard/index.d.ts +7 -0
  167. package/umd/icon/IconKeyboard/index.js +56 -0
  168. package/umd/icon/IconKeyboardDelete/index.d.ts +7 -0
  169. package/umd/icon/IconKeyboardDelete/index.js +52 -0
  170. package/umd/icon/IconMinus/index.js +1 -1
  171. package/umd/icon/IconMore/index.js +1 -1
  172. package/umd/icon/IconNotice/index.js +1 -1
  173. package/umd/icon/IconNoticeOff/index.js +1 -1
  174. package/umd/icon/IconPlay/index.js +1 -1
  175. package/umd/icon/IconSetting/index.js +2 -2
  176. package/umd/icon/IconSound/index.js +1 -1
  177. package/umd/icon/IconStar/index.js +1 -1
  178. package/umd/icon/IconStarFill/index.js +1 -1
  179. package/umd/icon/IconTriDown/index.js +1 -1
  180. package/umd/icon/IconTriUp/index.js +1 -1
  181. package/umd/icon/IconUpload/index.js +1 -1
  182. package/umd/icon/IconWarnCircle/index.js +1 -1
  183. package/umd/icon/IconWarnCircleFill/index.js +1 -1
  184. package/umd/icon/index.d.ts +2 -0
  185. package/umd/icon/index.js +12 -6
  186. package/umd/image-picker/style/css/index.d.ts +1 -0
  187. package/umd/image-picker/style/css/index.js +4 -4
  188. package/umd/image-picker/style/index.d.ts +1 -0
  189. package/umd/image-picker/style/index.js +4 -4
  190. package/umd/index-bar/context.d.ts +3 -0
  191. package/umd/index-bar/context.js +26 -0
  192. package/umd/index-bar/demo/style/css/mobile.css +23 -0
  193. package/umd/index-bar/demo/style/mobile.less +26 -0
  194. package/umd/index-bar/group.d.ts +3 -0
  195. package/umd/index-bar/group.js +107 -0
  196. package/umd/index-bar/index.d.ts +15 -0
  197. package/umd/index-bar/index.js +274 -0
  198. package/umd/index-bar/side-bar.d.ts +3 -0
  199. package/umd/index-bar/side-bar.js +113 -0
  200. package/umd/index-bar/style/css/index.css +164 -0
  201. package/umd/index-bar/style/css/index.d.ts +3 -0
  202. package/umd/index-bar/style/css/index.js +15 -0
  203. package/umd/index-bar/style/index.d.ts +3 -0
  204. package/umd/index-bar/style/index.js +15 -0
  205. package/umd/index-bar/style/index.less +122 -0
  206. package/umd/index-bar/type.d.ts +195 -0
  207. package/umd/index-bar/type.js +17 -0
  208. package/umd/index-bar/utils.d.ts +6 -0
  209. package/umd/index-bar/utils.js +78 -0
  210. package/umd/index.d.ts +2 -0
  211. package/umd/index.js +9 -5
  212. package/umd/keyboard/demo/style/css/mobile.css +4 -0
  213. package/umd/keyboard/demo/style/mobile.less +8 -0
  214. package/umd/keyboard/index.d.ts +13 -0
  215. package/umd/keyboard/index.js +271 -0
  216. package/umd/keyboard/style/css/index.css +93 -0
  217. package/umd/keyboard/style/css/index.d.ts +3 -0
  218. package/umd/keyboard/style/css/index.js +15 -0
  219. package/umd/keyboard/style/index.d.ts +3 -0
  220. package/umd/keyboard/style/index.js +15 -0
  221. package/umd/keyboard/style/index.less +80 -0
  222. package/umd/keyboard/type.d.ts +102 -0
  223. package/umd/keyboard/type.js +17 -0
  224. package/umd/picker/index.js +3 -39
  225. package/umd/picker/type.d.ts +1 -1
  226. package/umd/picker-view/components/cascader.d.ts +2 -3
  227. package/umd/picker-view/components/cascader.js +8 -6
  228. package/umd/picker-view/components/multi-picker.d.ts +2 -3
  229. package/umd/picker-view/components/multi-picker.js +31 -35
  230. package/umd/picker-view/components/picker-cell.d.ts +1 -1
  231. package/umd/picker-view/components/picker-cell.js +5 -7
  232. package/umd/picker-view/index.d.ts +1 -1
  233. package/umd/picker-view/index.js +9 -20
  234. package/umd/picker-view/type.d.ts +2 -2
  235. package/umd/slider/hooks/useSliderEvents.js +20 -20
  236. package/umd/sticky/index.js +2 -2
  237. package/umd/style.d.ts +2 -0
  238. package/umd/style.js +4 -4
@@ -0,0 +1,122 @@
1
+ @import '../../../style/mixin.less';
2
+
3
+ .@{prefix}-index-bar {
4
+ position: relative;
5
+ .use-var(background, index-bar-background);
6
+ overflow: hidden;
7
+ &-container {
8
+ height: 100%;
9
+ overflow-y: auto;
10
+
11
+ &::-webkit-scrollbar {
12
+ display: none;
13
+ }
14
+ }
15
+
16
+ &-group {
17
+ &-active {
18
+ .use-var(color, index-bar-group-active-color);
19
+ }
20
+ &-title {
21
+ .use-var(padding-left, index-bar-group-left-spacing);
22
+ .use-var(height, index-bar-group-title-height);
23
+ .use-var(background, index-bar-group-title-background);
24
+ .use-var(font-size, index-bar-group-title-font-size);
25
+ .use-var(color, index-bar-group-title-font-color);
26
+ display: flex;
27
+ align-items: center;
28
+ }
29
+ &-item {
30
+ .use-var(height, index-bar-group-item-height);
31
+ display: flex;
32
+ align-items: center;
33
+ .use-var(margin-left, index-bar-group-left-spacing);
34
+ .use-var(font-size, index-bar-group-item-font-size);
35
+
36
+ &:not(:last-child) {
37
+ .onepx-border-var(bottom, line-color);
38
+ }
39
+ }
40
+ }
41
+
42
+ &-sidebar {
43
+ &-touching {
44
+ left: 0;
45
+ }
46
+ position: absolute;
47
+ z-index: 2;
48
+ right: 0;
49
+ top: 50%;
50
+ transform: translateY(-50%) translateZ(0);
51
+ user-select: none;
52
+
53
+ &-item {
54
+ display: flex;
55
+ justify-content: flex-end;
56
+ align-items: center;
57
+ position: relative;
58
+ .use-var(padding, index-bar-sidebar-item-padding);
59
+ cursor: pointer;
60
+
61
+ &-wrapper {
62
+ display: inline-flex;
63
+ align-items: center;
64
+ justify-content: center;
65
+ .use-var(width, index-bar-sidebar-item-width);
66
+ .use-var(font-size, index-bar-sidebar-item-font-size);
67
+ .use-var(line-height, index-bar-sidebar-item-line-height);
68
+ }
69
+
70
+ &:last-child {
71
+ padding-bottom: 0px;
72
+ }
73
+ }
74
+ &-active {
75
+ .use-var(color, index-bar-sidebar-active-color);
76
+ }
77
+
78
+ &-sweat {
79
+ position: absolute;
80
+ .use-var(height, index-bar-sidebar-sweat-radius);
81
+ .use-var(min-width, index-bar-sidebar-sweat-radius);
82
+ .use-var(line-height, index-bar-sidebar-sweat-radius);
83
+ border-radius: 9999px;
84
+ text-align: center;
85
+ .use-var(padding, index-bar-sidebar-sweat-padding);
86
+ .use-var(background, index-bar-sidebar-sweat-background);
87
+ .use-var(right, index-bar-sidebar-sweat-right);
88
+ .use-var(font-size, index-bar-sidebar-sweat-font-size);
89
+ .use-var(color, index-bar-sidebar-sweat-color);
90
+ &::before {
91
+ content: '';
92
+ position: absolute;
93
+ top: 0;
94
+ bottom: 0;
95
+ margin: auto;
96
+ .use-var(right, index-bar-sidebar-sweat-triangle-position);
97
+ width: 0;
98
+ height: 0;
99
+ .use-var(border, index-bar-sidebar-sweat-triangle-border);
100
+ border: 18px solid transparent;
101
+ .use-var(border-left-color, index-bar-sidebar-sweat-background);
102
+ border-radius: 4px;
103
+ }
104
+ }
105
+
106
+ &-toast {
107
+ position: absolute;
108
+ .use-var(background, index-bar-sidebar-toast-background);
109
+ .use-var(color, index-bar-sidebar-toast-color);
110
+ left: 50%;
111
+ top: 50%;
112
+ .use-var(min-width, index-bar-sidebar-toast-height);
113
+ .use-var(height, index-bar-sidebar-toast-height);
114
+ .use-var(line-height, index-bar-sidebar-toast-height);
115
+ transform: translate(-50%, -50%);
116
+ text-align: center;
117
+ .use-var(padding, index-bar-sidebar-toast-padding);
118
+ .use-var(font-size, index-bar-sidebar-toast-font-size);
119
+ .use-var(border-radius, index-bar-sidebar-toast-radius);
120
+ }
121
+ }
122
+ }
@@ -0,0 +1,195 @@
1
+ import React, { CSSProperties, ReactElement, ReactNode } from 'react';
2
+ import { StickyRef } from '../sticky';
3
+ import { BaseRef } from '../_helpers';
4
+ export declare type IndexBarIndexType = string | number;
5
+ export interface IndexBarBaseData {
6
+ /**
7
+ * 内容
8
+ * @en content
9
+ */
10
+ content: ReactNode;
11
+ }
12
+ interface IndexBarGroupItem<Data extends IndexBarBaseData> {
13
+ /**
14
+ * IndexBarGroup对应的索引
15
+ * @en Index corresponding to IndexBarGroup
16
+ */
17
+ index: IndexBarIndexType;
18
+ /**
19
+ * IndexBarGroup中要渲染的列表数据,如果已经传递了children这个属性,则list这个属性不会生效
20
+ * @en The list data to be rendered in IndexBarGroup, if the children attribute has been passed, the list attribute will not take effect
21
+ */
22
+ list?: Data[];
23
+ }
24
+ export declare type IndexBarTipType = 'none' | 'sweat' | 'toast';
25
+ export declare type IndexBarChangeTrigger = 'swipe' | 'manual' | 'sidebar';
26
+ export interface IndexBarScrollParams {
27
+ index: IndexBarIndexType;
28
+ type: IndexBarChangeTrigger;
29
+ rightNow?: boolean;
30
+ }
31
+ export interface IndexBarSideBarProps {
32
+ tipType: IndexBarTipType;
33
+ indexes: IndexBarIndexType[];
34
+ prefixCls?: string;
35
+ onTouching: (isTouching: boolean) => void;
36
+ onClick: (index: IndexBarIndexType) => void;
37
+ activeIndex?: IndexBarIndexType;
38
+ renderSideBarItem?: (index: IndexBarIndexType) => ReactNode;
39
+ renderSideBar?: (Content: ReactNode) => ReactElement;
40
+ renderTip?: (index: IndexBarIndexType) => ReactNode;
41
+ }
42
+ export interface IndexBarGroupProps<Data extends IndexBarBaseData> extends IndexBarGroupItem<Data> {
43
+ /**
44
+ * 自定义类名
45
+ * @en Custom classname
46
+ */
47
+ className?: string;
48
+ /**
49
+ * 自定义样式
50
+ * @en Custom stylesheet
51
+ */
52
+ style?: CSSProperties;
53
+ /**
54
+ * 自定义内容的渲染,有自定义内容优先渲染自定义内容,否则渲染list传递的数据
55
+ * @en Rendering of custom content, if there is custom content, the custom content is rendered first, otherwise the data passed by the list is rendered
56
+ */
57
+ children?: ReactNode;
58
+ /**
59
+ * 自定义提取List的key作为列表渲染的key,默认选取listItem的所在数组位置
60
+ * @en Customize the extracted key of the List as the key for list rendering, and select the array position where the listItem is located by default
61
+ */
62
+ listKey?: (data: Data, listItemIndex: number) => IndexBarIndexType;
63
+ /**
64
+ * IndexBar.Group中某个子项被点击时的回调
65
+ * @en Callback when a child item in IndexBar.Group is clicked
66
+ */
67
+ onGroupItemClick?: (index: IndexBarIndexType, itemData: Data, itemIndex: number) => void;
68
+ /**
69
+ * 自定义IndexBar.Group的索引标题内容渲染
70
+ * @en Customize IndexBar.Group's index title content rendering
71
+ */
72
+ renderStickyItem?: (index: IndexBarIndexType) => ReactNode;
73
+ /**
74
+ * 自定义IndexBar.Group的子项内容渲染
75
+ * @en Customize the rendering of sub-items of IndexBar.Group
76
+ */
77
+ renderGroupItem?: (index: IndexBarIndexType, itemData: Data, itemIndex: number) => ReactNode;
78
+ }
79
+ export interface IndexBarGroupRef extends BaseRef {
80
+ }
81
+ export interface IndexBarProps<Data extends IndexBarBaseData> {
82
+ /**
83
+ * 自定义类名
84
+ * @en Custom classname
85
+ */
86
+ className?: string;
87
+ /**
88
+ * 自定义样式
89
+ * @en Custom stylesheet
90
+ */
91
+ style?: React.CSSProperties;
92
+ /**
93
+ * 默认要激活的索引
94
+ * @en Index to activate by default
95
+ */
96
+ defaultIndex?: IndexBarIndexType;
97
+ /**
98
+ * 是否开启侧边栏功能
99
+ * @en Whether to enable the sidebar function
100
+ * @default false
101
+ */
102
+ disableSidebar?: boolean;
103
+ /**
104
+ * 是否开启索引的自动吸顶效果
105
+ * @en Whether to enable the automatic ceiling effect of the index
106
+ * @default true
107
+ */
108
+ sticky?: boolean;
109
+ /**
110
+ * 索引栏内容
111
+ * @en IndexBar contents
112
+ */
113
+ groups?: IndexBarGroupItem<Data>[];
114
+ /**
115
+ * 自定义内容的渲染,内容必须是IndexBar.Group组件
116
+ * @en Rendering of custom content, the content must be an IndexBar.Group component
117
+ */
118
+ children?: ReactNode;
119
+ /**
120
+ * 侧边栏索引提示的样式类型 - sweat 水滴形 - toast 轻提示 - none 关闭提示
121
+ * @en Style type of sidebar index hint - sweat: teardrop - toast: light hint - none: turn off hint
122
+ * @default "toast"
123
+ */
124
+ tipType?: IndexBarTipType;
125
+ /**
126
+ * 手动调用scrollToIndex时,滚动动画的执行时间
127
+ * @en Execution time of scrolling animation when scrollToIndex is called manually
128
+ * @default 0
129
+ */
130
+ scrollDuration?: number;
131
+ /**
132
+ * 手动调用scrollToIndex时,滚动的动画曲线
133
+ * @en When scrollToIndex is called manually, the scrolling animation curve
134
+ */
135
+ scrollBezier?: [number, number, number, number];
136
+ /**
137
+ * 激活的索引改变时的回调,第一个参数是新的索引,第二个参数是改变方式:- swipe 手动滑动页面触发变化 - sidebar 侧边栏点击触发变化 - manual 手动调用scrollToIndex触发
138
+ * @en Callback when the active index changes, the first parameter is the new index, and the second parameter is the change method: - swipe: triggers the change by manually sliding the page - sidebar: triggers the change by clicking on the sidebar - manual: triggers by manually calling scrollToIndex
139
+ */
140
+ onChange?: (index: IndexBarIndexType, trigger: IndexBarChangeTrigger) => void;
141
+ /**
142
+ * IndexBar.Group中某个子项被点击时的回调,使用JSX的写法时该回调不会生效,请在IndexBar.Group上绑定对应属性
143
+ * @en The callback when a sub-item in IndexBar.Group is clicked, the callback will not take effect when using JSX writing, please bind the corresponding property on IndexBar.Group
144
+ */
145
+ onGroupItemClick?: (index: IndexBarIndexType, itemData: Data, itemIndex: number) => void;
146
+ /**
147
+ * 自定义侧边栏每个子项的内容渲染
148
+ * @en Customize the content rendering of each sub-item in the sidebar
149
+ */
150
+ renderSideBarItem?: (index: IndexBarIndexType) => ReactNode;
151
+ /**
152
+ * 自定义侧边栏渲染
153
+ * @en Custom sidebar rendering
154
+ */
155
+ renderSideBar?: (Content: ReactNode) => ReactElement;
156
+ /**
157
+ * 自定义使用侧边栏改变索引时,渲染提示的内容
158
+ * @en Customize the content of the rendering prompt when changing the index using the sidebar
159
+ */
160
+ renderTip?: (index: IndexBarIndexType) => ReactNode;
161
+ /**
162
+ * 自定义IndexBar.Group的索引标题内容渲染,使用JSX的写法时该回调不会生效,请在IndexBar.Group上绑定对应属性
163
+ * @en Customize the rendering of the index title content of IndexBar.Group. When using JSX writing, the callback will not take effect. Please bind the corresponding property on IndexBar.Group
164
+ */
165
+ renderStickyItem?: (index: IndexBarIndexType) => ReactNode;
166
+ /**
167
+ * 自定义IndexBar.Group的子项内容渲染,使用JSX的写法时该回调不会生效,请在IndexBar.Group上绑定对应属性
168
+ * @en Customize the rendering of sub-items of IndexBar.Group. This callback will not take effect when using JSX. Please bind the corresponding properties on IndexBar.Group
169
+ */
170
+ renderGroupItem?: (index: IndexBarIndexType, itemData: Data, itemIndex: number) => ReactNode;
171
+ }
172
+ export interface IndexBarRef {
173
+ /**
174
+ * 最外层 DOM 元素
175
+ * @en The outer DOM element of the component
176
+ */
177
+ dom: HTMLDivElement | null;
178
+ /**
179
+ * 手动滚动到指定的索引位置
180
+ * @en Manually scroll to the specified index position
181
+ */
182
+ scrollToIndex: (index?: IndexBarIndexType, rightNow?: boolean) => void;
183
+ /**
184
+ * 局部滚动模式下,如果容器外部还有嵌套滚动,可主动调用此方法,让 sticky 的元素主动更新 fixed 位置
185
+ * @en In the local scrolling mode, if there is nested scrolling outside the container, this method can be actively called to make the sticky element actively update the fixed position
186
+ */
187
+ recalculatePosition: (index?: IndexBarIndexType) => void;
188
+ }
189
+ export interface IndexBarContext {
190
+ sticky: boolean;
191
+ getScrollContainer: () => HTMLDivElement | null;
192
+ activeIndex?: IndexBarIndexType;
193
+ updateRef: (index: IndexBarIndexType, ref: StickyRef) => void;
194
+ }
195
+ export {};
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
@@ -0,0 +1,6 @@
1
+ import { ReactElement, ReactNode } from 'react';
2
+ import { IndexBarIndexType } from './type';
3
+ export declare function filterValidIndexBarChild(children: ReactNode): ReactElement<any, string | ((props: any) => ReactElement<any, any> | null) | (new (props: any) => import("react").Component<any, any, any>)>[];
4
+ export declare function getFormatIndex(index: IndexBarIndexType, activeIndex: IndexBarIndexType | undefined): string | number;
5
+ export declare function isValidIndex(index: unknown): index is IndexBarIndexType;
6
+ export declare function getGroupDomFromIndex(containerDom: HTMLDivElement, activeIndex: IndexBarIndexType): HTMLDivElement | null;
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.filterValidIndexBarChild = filterValidIndexBarChild;
5
+ exports.getFormatIndex = getFormatIndex;
6
+ exports.getGroupDomFromIndex = getGroupDomFromIndex;
7
+ exports.isValidIndex = isValidIndex;
8
+
9
+ var _react = require("react");
10
+
11
+ var _group = require("./group");
12
+
13
+ function filterValidIndexBarChild(children) {
14
+ var validChildren = [];
15
+
16
+ _react.Children.forEach(children, function (child) {
17
+ if (! /*#__PURE__*/(0, _react.isValidElement)(child) || child.type !== _group.IndexBarGroup) {
18
+ console.warn('<IndexBar /> only accept <IndexBar.Group /> as the children');
19
+ return;
20
+ }
21
+
22
+ validChildren.push(child);
23
+ });
24
+
25
+ return validChildren;
26
+ } // index有可能是number或者string,但是绑在data-index的attr上后
27
+ // 通过滑动事件得到的都是string,需要处理下
28
+
29
+
30
+ function getFormatIndex(index, activeIndex) {
31
+ var activeIndexType = typeof activeIndex;
32
+ var indexType = typeof index;
33
+
34
+ if (indexType === activeIndexType) {
35
+ return index;
36
+ }
37
+
38
+ if (activeIndexType === 'number') {
39
+ return Number(index);
40
+ }
41
+
42
+ return index.toString();
43
+ }
44
+
45
+ function isValidIndex(index) {
46
+ return typeof index === 'number' || typeof index === 'string';
47
+ }
48
+
49
+ function getGroupDomFromIndex(containerDom, activeIndex) {
50
+ var targetDom = null;
51
+ var containerChildren = containerDom.children;
52
+
53
+ for (var i = 0; i < containerChildren.length; i++) {
54
+ var dom = containerChildren[i];
55
+ var dataset = dom == null ? void 0 : dom.dataset;
56
+
57
+ if (dataset && dataset.index) {
58
+ var formatIndex = getFormatIndex(dataset.index, activeIndex);
59
+
60
+ if (formatIndex === activeIndex) {
61
+ targetDom = dom;
62
+ break;
63
+ }
64
+ }
65
+ }
66
+
67
+ return targetDom;
68
+ }
package/cjs/index.d.ts CHANGED
@@ -26,6 +26,8 @@ export { default as Image } from './image';
26
26
  export { default as ShowMonitor } from './show-monitor';
27
27
  export { default as ImagePicker } from './image-picker';
28
28
  export { default as ImagePreview } from './image-preview';
29
+ export { default as IndexBar } from './index-bar';
30
+ export { default as Keyboard } from './keyboard';
29
31
  export { default as LoadMore } from './load-more';
30
32
  export { default as Loading } from './loading';
31
33
  export { default as Masking } from './masking';
package/cjs/index.js CHANGED
@@ -3,7 +3,7 @@
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
5
  exports.__esModule = true;
6
- exports.Transition = exports.Toast = exports.Textarea = exports.Tag = exports.Tabs = exports.TabBar = exports.Switch = exports.SwipeLoad = exports.SwipeAction = exports.Sticky = exports.Steps = exports.Stepper = exports.Slider = exports.ShowMonitor = exports.SearchBar = exports.Rate = exports.Radio = exports.PullRefresh = exports.Progress = exports.Portal = exports.PopupSwiper = exports.Popup = exports.Popover = exports.PickerView = exports.Picker = exports.Pagination = exports.Notify = exports.NoticeBar = exports.NavBar = exports.Masking = exports.Loading = exports.LoadMore = exports.Input = exports.ImagePreview = exports.ImagePicker = exports.Image = exports.Grid = exports.Form = exports.Ellipsis = exports.DropdownMenu = exports.Dropdown = exports.Divider = exports.Dialog = exports.DatePicker = exports.CountDown = exports.ContextProvider = exports.Collapse = exports.CircleProgress = exports.Checkbox = exports.Cell = exports.Carousel = exports.Button = exports.Badge = exports.Avatar = exports.ActionSheet = void 0;
6
+ exports.Transition = exports.Toast = exports.Textarea = exports.Tag = exports.Tabs = exports.TabBar = exports.Switch = exports.SwipeLoad = exports.SwipeAction = exports.Sticky = exports.Steps = exports.Stepper = exports.Slider = exports.ShowMonitor = exports.SearchBar = exports.Rate = exports.Radio = exports.PullRefresh = exports.Progress = exports.Portal = exports.PopupSwiper = exports.Popup = exports.Popover = exports.PickerView = exports.Picker = exports.Pagination = exports.Notify = exports.NoticeBar = exports.NavBar = exports.Masking = exports.Loading = exports.LoadMore = exports.Keyboard = exports.Input = exports.IndexBar = exports.ImagePreview = exports.ImagePicker = exports.Image = exports.Grid = exports.Form = exports.Ellipsis = exports.DropdownMenu = exports.Dropdown = exports.Divider = exports.Dialog = exports.DatePicker = exports.CountDown = exports.ContextProvider = exports.Collapse = exports.CircleProgress = exports.Checkbox = exports.Cell = exports.Carousel = exports.Button = exports.Badge = exports.Avatar = exports.ActionSheet = void 0;
7
7
 
8
8
  var _button = _interopRequireDefault(require("./button"));
9
9
 
@@ -117,6 +117,14 @@ var _imagePreview = _interopRequireDefault(require("./image-preview"));
117
117
 
118
118
  exports.ImagePreview = _imagePreview.default;
119
119
 
120
+ var _indexBar = _interopRequireDefault(require("./index-bar"));
121
+
122
+ exports.IndexBar = _indexBar.default;
123
+
124
+ var _keyboard = _interopRequireDefault(require("./keyboard"));
125
+
126
+ exports.Keyboard = _keyboard.default;
127
+
120
128
  var _loadMore = _interopRequireDefault(require("./load-more"));
121
129
 
122
130
  exports.LoadMore = _loadMore.default;
@@ -0,0 +1,4 @@
1
+ #demo-keyboard .arcodesign-mobile-demo-content {
2
+ padding: 0;
3
+ background: transparent;
4
+ }
@@ -0,0 +1,8 @@
1
+ @import "../../../../style/mixin.less";
2
+
3
+ #demo-keyboard {
4
+ .arcodesign-mobile-demo-content {
5
+ padding: 0;
6
+ background: transparent;
7
+ }
8
+ }
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import { KeyboardProps, KeyboardRef } from './type';
3
+ export * from './type';
4
+ /**
5
+ * 数字键盘组件
6
+ * @en Keyboard component
7
+ * @type 数据录入
8
+ * @type_en Data Entry
9
+ * @name 数字键盘
10
+ * @name_en Keyboard
11
+ */
12
+ declare const Keyboard: React.ForwardRefExoticComponent<KeyboardProps & React.RefAttributes<KeyboardRef>>;
13
+ export default Keyboard;