@arco-design/mobile-react 2.21.3 → 2.22.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 (119) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/README.en-US.md +2 -2
  3. package/README.md +2 -2
  4. package/cjs/_helpers/index.d.ts +1 -0
  5. package/cjs/_helpers/index.js +9 -0
  6. package/cjs/_helpers/react-dom.d.ts +13 -0
  7. package/cjs/_helpers/react-dom.js +65 -0
  8. package/cjs/_helpers/render.d.ts +10 -0
  9. package/cjs/_helpers/render.js +40 -0
  10. package/cjs/action-sheet/index.d.ts +1 -1
  11. package/cjs/action-sheet/style/css/index.css +2 -2
  12. package/cjs/action-sheet/style/index.less +1 -1
  13. package/cjs/dialog/style/css/index.css +2 -2
  14. package/cjs/dialog/style/index.less +1 -1
  15. package/cjs/image-picker/index.js +0 -1
  16. package/cjs/image-preview/index.d.ts +2 -10
  17. package/cjs/image-preview/methods.js +4 -11
  18. package/cjs/masking/index.d.ts +10 -0
  19. package/cjs/masking/methods.js +4 -11
  20. package/cjs/notify/methods.js +6 -9
  21. package/cjs/popover/hooks/useEvent.js +6 -6
  22. package/cjs/pull-refresh/android-pull-refresh.js +2 -0
  23. package/cjs/pull-refresh/ios-pull-refresh.js +3 -2
  24. package/cjs/pull-refresh/model.d.ts +6 -2
  25. package/cjs/steps/demo/style/css/mobile.css +8 -2
  26. package/cjs/steps/index.d.ts +1 -1
  27. package/cjs/steps/index.js +5 -1
  28. package/cjs/steps/step.js +5 -3
  29. package/cjs/steps/style/css/index.css +78 -23
  30. package/cjs/steps/style/index.less +92 -24
  31. package/cjs/steps/type.d.ts +12 -0
  32. package/cjs/swipe-action/index.js +21 -3
  33. package/cjs/tabs/index.js +8 -4
  34. package/cjs/tabs/style/css/index.css +8 -8
  35. package/cjs/tabs/style/index.less +4 -4
  36. package/cjs/tabs/tab-cell.js +4 -3
  37. package/cjs/tabs/type.d.ts +11 -0
  38. package/cjs/toast/methods.js +9 -12
  39. package/dist/index.js +186 -81
  40. package/dist/index.min.js +4 -4
  41. package/dist/style.css +87 -35
  42. package/dist/style.min.css +1 -1
  43. package/esm/_helpers/index.d.ts +1 -0
  44. package/esm/_helpers/index.js +1 -0
  45. package/esm/_helpers/react-dom.d.ts +13 -0
  46. package/esm/_helpers/react-dom.js +57 -0
  47. package/esm/_helpers/render.d.ts +10 -0
  48. package/esm/_helpers/render.js +29 -0
  49. package/esm/action-sheet/index.d.ts +1 -1
  50. package/esm/action-sheet/style/css/index.css +2 -2
  51. package/esm/action-sheet/style/index.less +1 -1
  52. package/esm/dialog/style/css/index.css +2 -2
  53. package/esm/dialog/style/index.less +1 -1
  54. package/esm/image-picker/index.js +0 -1
  55. package/esm/image-preview/index.d.ts +2 -10
  56. package/esm/image-preview/methods.js +3 -9
  57. package/esm/masking/index.d.ts +10 -0
  58. package/esm/masking/methods.js +3 -9
  59. package/esm/notify/methods.js +6 -7
  60. package/esm/popover/hooks/useEvent.js +6 -6
  61. package/esm/pull-refresh/android-pull-refresh.js +2 -0
  62. package/esm/pull-refresh/ios-pull-refresh.js +3 -2
  63. package/esm/pull-refresh/model.d.ts +6 -2
  64. package/esm/steps/demo/style/css/mobile.css +8 -2
  65. package/esm/steps/index.d.ts +1 -1
  66. package/esm/steps/index.js +5 -1
  67. package/esm/steps/step.js +5 -3
  68. package/esm/steps/style/css/index.css +78 -23
  69. package/esm/steps/style/index.less +92 -24
  70. package/esm/steps/type.d.ts +12 -0
  71. package/esm/swipe-action/index.js +21 -3
  72. package/esm/tabs/index.js +9 -5
  73. package/esm/tabs/style/css/index.css +8 -8
  74. package/esm/tabs/style/index.less +4 -4
  75. package/esm/tabs/tab-cell.js +4 -3
  76. package/esm/tabs/type.d.ts +11 -0
  77. package/esm/toast/methods.js +8 -9
  78. package/package.json +3 -3
  79. package/tokens/app/arcodesign/default/css-variables.less +7 -3
  80. package/tokens/app/arcodesign/default/index.d.ts +4 -0
  81. package/tokens/app/arcodesign/default/index.js +7 -3
  82. package/tokens/app/arcodesign/default/index.json +58 -10
  83. package/tokens/app/arcodesign/default/index.less +7 -3
  84. package/tokens/mixin/index.less +1 -1
  85. package/umd/_helpers/index.d.ts +1 -0
  86. package/umd/_helpers/index.js +10 -4
  87. package/umd/_helpers/react-dom.d.ts +13 -0
  88. package/umd/_helpers/react-dom.js +78 -0
  89. package/umd/_helpers/render.d.ts +10 -0
  90. package/umd/_helpers/render.js +51 -0
  91. package/umd/action-sheet/index.d.ts +1 -1
  92. package/umd/action-sheet/style/css/index.css +2 -2
  93. package/umd/action-sheet/style/index.less +1 -1
  94. package/umd/dialog/style/css/index.css +2 -2
  95. package/umd/dialog/style/index.less +1 -1
  96. package/umd/image-picker/index.js +0 -1
  97. package/umd/image-preview/index.d.ts +2 -10
  98. package/umd/image-preview/methods.js +6 -13
  99. package/umd/masking/index.d.ts +10 -0
  100. package/umd/masking/methods.js +6 -13
  101. package/umd/notify/methods.js +9 -12
  102. package/umd/popover/hooks/useEvent.js +6 -6
  103. package/umd/pull-refresh/android-pull-refresh.js +2 -0
  104. package/umd/pull-refresh/ios-pull-refresh.js +3 -2
  105. package/umd/pull-refresh/model.d.ts +6 -2
  106. package/umd/steps/demo/style/css/mobile.css +8 -2
  107. package/umd/steps/index.d.ts +1 -1
  108. package/umd/steps/index.js +5 -1
  109. package/umd/steps/step.js +5 -3
  110. package/umd/steps/style/css/index.css +78 -23
  111. package/umd/steps/style/index.less +92 -24
  112. package/umd/steps/type.d.ts +12 -0
  113. package/umd/swipe-action/index.js +21 -3
  114. package/umd/tabs/index.js +8 -4
  115. package/umd/tabs/style/css/index.css +8 -8
  116. package/umd/tabs/style/index.less +4 -4
  117. package/umd/tabs/tab-cell.js +4 -3
  118. package/umd/tabs/type.d.ts +11 -0
  119. package/umd/toast/methods.js +11 -14
@@ -46,8 +46,8 @@
46
46
  .arco-action-sheet-title.android,
47
47
  .arco-action-sheet-title.system-android {
48
48
  font-weight: 400;
49
- -webkit-text-stroke: 0.3PX #1d2129;
50
- text-stroke: 0.3PX #1d2129;
49
+ -webkit-text-stroke: 0.3PX currentColor;
50
+ text-stroke: 0.3PX currentColor;
51
51
  }
52
52
  .arco-action-sheet-sub-title {
53
53
  color: #86909c ;
@@ -11,7 +11,7 @@
11
11
 
12
12
  &-title {
13
13
  .use-var(font-size, action-sheet-title-font-size);
14
- .text-medium-var(font-color);
14
+ .text-medium();
15
15
  }
16
16
 
17
17
  &-sub-title {
@@ -126,8 +126,8 @@
126
126
  .arco-dialog-header.ios.android,
127
127
  .arco-dialog-header.ios.system-android {
128
128
  font-weight: 400;
129
- -webkit-text-stroke: 0.3PX #1d2129;
130
- text-stroke: 0.3PX #1d2129;
129
+ -webkit-text-stroke: 0.3PX currentColor;
130
+ text-stroke: 0.3PX currentColor;
131
131
  }
132
132
  .arco-dialog-header.ios.only-title {
133
133
  padding-bottom: 0.4rem ;
@@ -105,7 +105,7 @@
105
105
  .use-var(padding-right, dialog-ios-horizontal-padding);
106
106
  .use-var(font-size, dialog-header-ios-font-size);
107
107
  .use-var(line-height, dialog-header-ios-line-height);
108
- .text-medium-var(dialog-header-ios-color);
108
+ .text-medium();
109
109
 
110
110
  &.only-title {
111
111
  .use-var(padding-bottom, dialog-ios-vertical-padding);
@@ -166,7 +166,6 @@ var ImagePicker = /*#__PURE__*/forwardRef(function (props, ref) {
166
166
  var timeOutEvent;
167
167
 
168
168
  var handleTouchStart = function handleTouchStart(e, image, index) {
169
- e.preventDefault();
170
169
  timeOutEvent = setTimeout(function () {
171
170
  timeOutEvent = 0;
172
171
  onLongPress == null ? void 0 : onLongPress(e, image, index);
@@ -254,11 +254,7 @@ export declare function methodsGenerator<P extends ImagePreviewProps>(Comp: Reac
254
254
  */
255
255
  open: (config: Pick<P, Exclude<keyof P, "close">>) => {
256
256
  close: () => void;
257
- update: (newConfig: Pick<P, Exclude<keyof P, "close">>) => void; /**
258
- * 是否可循环滑动
259
- * @en Whether it can be swiped circularly
260
- * @default false
261
- */
257
+ update: (newConfig: Pick<P, Exclude<keyof P, "close">>) => void;
262
258
  };
263
259
  };
264
260
  declare const _default: React.ForwardRefExoticComponent<ImagePreviewProps & React.RefAttributes<ImagePreviewRef>> & {
@@ -270,11 +266,7 @@ declare const _default: React.ForwardRefExoticComponent<ImagePreviewProps & Reac
270
266
  */
271
267
  open: (config: Pick<ImagePreviewProps & React.RefAttributes<ImagePreviewRef>, "style" | "ref" | "key" | "getContainer" | "className" | "onClose" | "onTouchMove" | "fit" | "loadingArea" | "errorArea" | "showLoading" | "showError" | "retryTime" | "staticLabel" | "onChange" | "onTouchEnd" | "onTouchStart" | "animateDurationSlide" | "loop" | "swipeable" | "renderIndicator" | "indicatorPos" | "showIndicator" | "hideSingleIndicator" | "spaceBetween" | "percentToChange" | "distanceToChange" | "speedToChange" | "lazyloadCount" | "onAfterChange" | "images" | "openIndex" | "displayDuration" | "replaceFallbackWhenLoaded" | "noselect" | "scrollBezier" | "swipeToClose" | "getMinScale" | "getMaxScale" | "getDoubleClickScale" | "getThumbBounds" | "onImageClick" | "onImageDoubleClick" | "onImageLongTap">) => {
272
268
  close: () => void;
273
- update: (newConfig: Pick<ImagePreviewProps & React.RefAttributes<ImagePreviewRef>, "style" | "ref" | "key" | "getContainer" | "className" | "onClose" | "onTouchMove" | "fit" | "loadingArea" | "errorArea" | "showLoading" | "showError" | "retryTime" | "staticLabel" | "onChange" | "onTouchEnd" | "onTouchStart" | "animateDurationSlide" | "loop" | "swipeable" | "renderIndicator" | "indicatorPos" | "showIndicator" | "hideSingleIndicator" | "spaceBetween" | "percentToChange" | "distanceToChange" | "speedToChange" | "lazyloadCount" | "onAfterChange" | "images" | "openIndex" | "displayDuration" | "replaceFallbackWhenLoaded" | "noselect" | "scrollBezier" | "swipeToClose" | "getMinScale" | "getMaxScale" | "getDoubleClickScale" | "getThumbBounds" | "onImageClick" | "onImageDoubleClick" | "onImageLongTap">) => void; /**
274
- * 是否可循环滑动
275
- * @en Whether it can be swiped circularly
276
- * @default false
277
- */
269
+ update: (newConfig: Pick<ImagePreviewProps & React.RefAttributes<ImagePreviewRef>, "style" | "ref" | "key" | "getContainer" | "className" | "onClose" | "onTouchMove" | "fit" | "loadingArea" | "errorArea" | "showLoading" | "showError" | "retryTime" | "staticLabel" | "onChange" | "onTouchEnd" | "onTouchStart" | "animateDurationSlide" | "loop" | "swipeable" | "renderIndicator" | "indicatorPos" | "showIndicator" | "hideSingleIndicator" | "spaceBetween" | "percentToChange" | "distanceToChange" | "speedToChange" | "lazyloadCount" | "onAfterChange" | "images" | "openIndex" | "displayDuration" | "replaceFallbackWhenLoaded" | "noselect" | "scrollBezier" | "swipeToClose" | "getMinScale" | "getMaxScale" | "getDoubleClickScale" | "getThumbBounds" | "onImageClick" | "onImageDoubleClick" | "onImageLongTap">) => void;
278
270
  };
279
271
  };
280
272
  /**
@@ -1,7 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
- import React from 'react';
3
- import ReactDOM from 'react-dom';
4
2
  import { appendElementById, removeElement } from '@arco-design/mobile-utils';
3
+ import { ReactDOMRender } from '../_helpers/render';
5
4
  export function open(Component) {
6
5
  return function (config) {
7
6
  var baseProps = _extends({
@@ -21,13 +20,8 @@ export function open(Component) {
21
20
 
22
21
  var leaving = false;
23
22
 
24
- function render(props) {
25
- ReactDOM.render( /*#__PURE__*/React.createElement(Component, _extends({}, props, {
26
- getContainer: function getContainer() {
27
- return div;
28
- }
29
- })), div);
30
- }
23
+ var _ReactDOMRender = new ReactDOMRender(Component, div),
24
+ render = _ReactDOMRender.render;
31
25
 
32
26
  function update(newConfig) {
33
27
  dynamicProps = _extends({}, dynamicProps, newConfig || {});
@@ -192,6 +192,11 @@ export declare function methodsGenerator<P extends OpenBaseProps>(Comp: React.Fu
192
192
  open: (config: Pick<P, Exclude<keyof P, "visible" | "close">> & {
193
193
  key?: string | undefined;
194
194
  }) => {
195
+ /**
196
+ * 点击蒙层是否关闭菜单
197
+ * @en Whether to click the mask to close the menu
198
+ * @default true
199
+ */
195
200
  close: () => void;
196
201
  update: (newConfig: Pick<P, Exclude<keyof P, "visible" | "close">> & {
197
202
  key?: string | undefined;
@@ -208,6 +213,11 @@ declare const _default: React.ForwardRefExoticComponent<MaskingProps & React.Ref
208
213
  open: (config: Pick<MaskingProps & React.RefAttributes<MaskingRef>, "ref" | "children" | "key" | "getContainer" | "mountOnEnter" | "unmountOnExit" | "className" | "onClose" | "contentAtCenter" | "maskClass" | "maskStyle" | "contentClass" | "contentStyle" | "maskTransitionType" | "contentTransitionType" | "maskTransitionTimeout" | "contentTransitionTimeout" | "maskClosable" | "animatingClosable" | "orientationDirection" | "preventBodyScroll" | "initialBodyOverflow" | "gestureOutOfControl" | "onOpen" | "onMaskClick" | "onTouchMove" | "onPreventTouchMove" | "getScrollContainer"> & {
209
214
  key?: string | undefined;
210
215
  }) => {
216
+ /**
217
+ * 点击蒙层是否关闭菜单
218
+ * @en Whether to click the mask to close the menu
219
+ * @default true
220
+ */
211
221
  close: () => void;
212
222
  update: (newConfig: Pick<MaskingProps & React.RefAttributes<MaskingRef>, "ref" | "children" | "key" | "getContainer" | "mountOnEnter" | "unmountOnExit" | "className" | "onClose" | "contentAtCenter" | "maskClass" | "maskStyle" | "contentClass" | "contentStyle" | "maskTransitionType" | "contentTransitionType" | "maskTransitionTimeout" | "contentTransitionTimeout" | "maskClosable" | "animatingClosable" | "orientationDirection" | "preventBodyScroll" | "initialBodyOverflow" | "gestureOutOfControl" | "onOpen" | "onMaskClick" | "onTouchMove" | "onPreventTouchMove" | "getScrollContainer"> & {
213
223
  key?: string | undefined;
@@ -1,7 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
- import React from 'react';
3
- import ReactDOM from 'react-dom';
4
2
  import { appendElementById, removeElement, nextTick } from '@arco-design/mobile-utils';
3
+ import { ReactDOMRender } from '../_helpers/render';
5
4
  export function getOpenMethod(Component, containerId, normalize) {
6
5
  if (normalize === void 0) {
7
6
  normalize = function normalize(config) {
@@ -27,13 +26,8 @@ export function getOpenMethod(Component, containerId, normalize) {
27
26
 
28
27
  var leaving = false;
29
28
 
30
- function render(props) {
31
- ReactDOM.render( /*#__PURE__*/React.createElement(Component, _extends({}, props, {
32
- getContainer: function getContainer() {
33
- return div;
34
- }
35
- })), div);
36
- }
29
+ var _ReactDOMRender = new ReactDOMRender(Component, div),
30
+ render = _ReactDOMRender.render;
37
31
 
38
32
  function update(newConfig) {
39
33
  dynamicProps = _extends({}, dynamicProps, normalize(newConfig));
@@ -1,7 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import { nextTick } from '@arco-design/mobile-utils';
3
- import React from 'react';
4
- import ReactDOM from 'react-dom';
3
+ import { ReactDOMRender } from '../_helpers/render';
5
4
  export function notify(Component, type) {
6
5
  return function (originConfig) {
7
6
  var config = typeof originConfig === 'string' ? {
@@ -22,16 +21,16 @@ export function notify(Component, type) {
22
21
  document.body.appendChild(div);
23
22
  }
24
23
 
25
- function render(props) {
26
- ReactDOM.render( /*#__PURE__*/React.createElement(Component, props), div);
27
- }
24
+ var _ReactDOMRender = new ReactDOMRender(Component, div),
25
+ render = _ReactDOMRender.render,
26
+ unmount = _ReactDOMRender.unmount;
28
27
 
29
28
  function destroy() {
30
29
  var onClose = config.onClose;
31
30
  onClose && onClose();
32
- var unmountResult = ReactDOM.unmountComponentAtNode(div);
31
+ unmount();
33
32
 
34
- if (unmountResult && div.parentNode) {
33
+ if (div.parentNode) {
35
34
  div.parentNode.removeChild(div);
36
35
  }
37
36
  }
@@ -40,6 +40,7 @@ export var useEvent = function useEvent(props, wrapperRef, popoverInnerRef, visi
40
40
  onVisibleChange(false);
41
41
  window.clearTimeout(closeTimer.current);
42
42
  closeTimer.current = 0;
43
+ mayRemoveEventListenerOnBody();
43
44
  };
44
45
 
45
46
  var throttleHandleVerticalScroll = useMemo(function () {
@@ -59,7 +60,7 @@ export var useEvent = function useEvent(props, wrapperRef, popoverInnerRef, visi
59
60
  };
60
61
  }, [throttleHandleVerticalScroll, getVerticalScrollContainer, autoVerticalDirection, visibleRef]);
61
62
  var mayRemoveEventListenerOnBody = useCallback(function () {
62
- document.body.removeEventListener('click', handleClickBody);
63
+ document.body.removeEventListener('click', handleClickBody, true);
63
64
  document.body.removeEventListener('touchstart', handleTouchBody);
64
65
  var el = getVerticalScrollContainer();
65
66
 
@@ -74,7 +75,6 @@ export var useEvent = function useEvent(props, wrapperRef, popoverInnerRef, visi
74
75
  // 仅处理子元素和气泡元素外的点击事件
75
76
  // @en Only handle click events outside of children elements and bubble elements
76
77
  if (!isContains(wrapperRef.current, e.target) && !isContains(((_popoverInnerRef$curr = popoverInnerRef.current) == null ? void 0 : _popoverInnerRef$curr.dom) || null, e.target)) {
77
- // TODO: 这里仅阻止了react事件,react 18 将不再在document上挂事件,这里的stop会失效
78
78
  if (preventBodyClick) {
79
79
  e.stopPropagation();
80
80
  e.preventDefault();
@@ -100,13 +100,13 @@ export var useEvent = function useEvent(props, wrapperRef, popoverInnerRef, visi
100
100
  var handle = function handle(e) {
101
101
  e.stopPropagation();
102
102
  e.preventDefault();
103
- document.body.removeEventListener('click', handle);
103
+ document.body.removeEventListener('click', handle, true);
104
104
  clearTimeout(preventRecentClickTimer);
105
105
  };
106
106
 
107
- document.body.addEventListener('click', handle);
107
+ document.body.addEventListener('click', handle, true);
108
108
  preventRecentClickTimer = window.setTimeout(function () {
109
- document.body.removeEventListener('click', handle);
109
+ document.body.removeEventListener('click', handle, true);
110
110
  }, 500);
111
111
  };
112
112
 
@@ -149,7 +149,7 @@ export var useEvent = function useEvent(props, wrapperRef, popoverInnerRef, visi
149
149
  var el = getVerticalScrollContainer();
150
150
  el && el.addEventListener('scroll', handleScrollBody);
151
151
  } else if (clickOtherToClose) {
152
- document.body.addEventListener('click', handleClickBody);
152
+ document.body.addEventListener('click', handleClickBody, true);
153
153
  }
154
154
  };
155
155
  /**
@@ -19,6 +19,7 @@ export var PullRefresh = /*#__PURE__*/forwardRef(function (props, ref) {
19
19
  locale = _useContext$locale === void 0 ? defaultLocale : _useContext$locale;
20
20
 
21
21
  var className = props.className,
22
+ style = props.style,
22
23
  children = props.children,
23
24
  _props$loosingText = props.loosingText,
24
25
  loosingText = _props$loosingText === void 0 ? /*#__PURE__*/React.createElement("div", {
@@ -255,6 +256,7 @@ export var PullRefresh = /*#__PURE__*/forwardRef(function (props, ref) {
255
256
  className: cls(prefixCls + "-pull-refresh all-border-box is-android", className, {
256
257
  'is-disabled': (disabled || !touching && useHideAsNestedScroll) && status !== PullRefreshStatus.Loading
257
258
  }),
259
+ style: style,
258
260
  ref: domRef
259
261
  }, /*#__PURE__*/React.createElement("div", {
260
262
  className: cls(prefixCls + "-pull-refresh-place"),
@@ -16,6 +16,7 @@ export var PullRefresh = /*#__PURE__*/forwardRef(function (props, ref) {
16
16
 
17
17
  var animationRef = useRef(0);
18
18
  var className = props.className,
19
+ style = props.style,
19
20
  children = props.children,
20
21
  _props$loadingText = props.loadingText,
21
22
  loadingText = _props$loadingText === void 0 ? /*#__PURE__*/React.createElement("div", {
@@ -195,9 +196,9 @@ export var PullRefresh = /*#__PURE__*/forwardRef(function (props, ref) {
195
196
  'is-disabled': disabled || !touching && useHideAsNestedScroll
196
197
  }),
197
198
  ref: domRef,
198
- style: contentHeight > 0 ? {
199
+ style: contentHeight > 0 ? _extends({
199
200
  height: contentHeight
200
- } : {}
201
+ }, style || {}) : style
201
202
  }, /*#__PURE__*/React.createElement("div", {
202
203
  className: cls(prefixCls + "-pull-refresh-content-wrapper")
203
204
  }, /*#__PURE__*/React.createElement("div", {
@@ -1,4 +1,4 @@
1
- import type { ReactNode } from 'react';
1
+ import type { CSSProperties, ReactNode } from 'react';
2
2
  export interface PullRefreshRef {
3
3
  /**
4
4
  * 最外层元素 DOM
@@ -32,9 +32,13 @@ export interface PullRefreshBasicProps {
32
32
  /**
33
33
  * 样式类名
34
34
  * @en Custom classname
35
- * @default ""
36
35
  */
37
36
  className?: string;
37
+ /**
38
+ * 自定义样式
39
+ * @en Custom style
40
+ */
41
+ style?: CSSProperties;
38
42
  /**
39
43
  * 是否禁用
40
44
  * @en Whether to be disabled
@@ -30,7 +30,10 @@
30
30
  #demo-steps #demo-order-7 .process-title-color-with-config {
31
31
  color: #FFB400;
32
32
  }
33
- #demo-steps #demo-order-7 .finish-tail-color-with-config:after {
33
+ #demo-steps #demo-order-7 .finish-tail-color-with-config::before,
34
+ #demo-steps #demo-order-7 .finish-tail-color-with-config::after,
35
+ #demo-steps #demo-order-7 .process-tail-color-with-config::before,
36
+ #demo-steps #demo-order-7 .error-tail-color-with-config::before {
34
37
  background: #FFB400;
35
38
  }
36
39
  #demo-steps #demo-order-8 .demo-svg .arco-steps-item-custom-icon {
@@ -57,7 +60,10 @@
57
60
  #demo-steps #demo-order-8 .demo-svg .process-title-color-with-config {
58
61
  color: #165DFF;
59
62
  }
60
- #demo-steps #demo-order-8 .demo-svg .finish-tail-color-with-config:after {
63
+ #demo-steps #demo-order-8 .demo-svg .finish-tail-color-with-config::before,
64
+ #demo-steps #demo-order-8 .demo-svg .finish-tail-color-with-config::after,
65
+ #demo-steps #demo-order-8 .demo-svg .process-tail-color-with-config::before,
66
+ #demo-steps #demo-order-8 .demo-svg .error-tail-color-with-config::before {
61
67
  background: #165DFF;
62
68
  }
63
69
  #demo-steps #demo-order-8 .demo-svg .arco-steps-item-custom-icon {
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { StepsProps, StepsRef } from './type';
3
3
  export * from './type';
4
- export declare const StepsContext: React.Context<Pick<StepsProps, "direction" | "status" | "current" | "iconType"> & {
4
+ export declare const StepsContext: React.Context<Pick<StepsProps, "direction" | "status" | "current" | "align" | "iconType"> & {
5
5
  index?: number | undefined;
6
6
  changeIndex: (newIndex: number) => void;
7
7
  }>;
@@ -15,6 +15,7 @@ var Steps = /*#__PURE__*/forwardRef(function (props, ref) {
15
15
  children = props.children,
16
16
  _props$direction = props.direction,
17
17
  direction = _props$direction === void 0 ? 'horizontal' : _props$direction,
18
+ userSetAlign = props.align,
18
19
  _props$iconType = props.iconType,
19
20
  iconType = _props$iconType === void 0 ? 'number' : _props$iconType,
20
21
  current = props.current,
@@ -25,6 +26,8 @@ var Steps = /*#__PURE__*/forwardRef(function (props, ref) {
25
26
  items = props.items,
26
27
  onClick = props.onClick,
27
28
  onChange = props.onChange;
29
+ var defaultAlign = direction === 'vertical' ? 'start' : 'center';
30
+ var align = userSetAlign !== void 0 ? userSetAlign : defaultAlign;
28
31
 
29
32
  var _useState = useState(Number(defaultIndex)),
30
33
  innerIndex = _useState[0],
@@ -60,11 +63,12 @@ var Steps = /*#__PURE__*/forwardRef(function (props, ref) {
60
63
  direction: direction,
61
64
  index: index,
62
65
  status: activeIndex === index ? status : void 0,
66
+ align: align,
63
67
  changeIndex: changeIndex
64
68
  },
65
69
  key: index
66
70
  }, child);
67
- }, [iconType, activeIndex, direction]);
71
+ }, [iconType, activeIndex, direction, align]);
68
72
  return /*#__PURE__*/React.createElement(ContextLayout, null, function (_ref) {
69
73
  var prefixCls = _ref.prefixCls;
70
74
  return /*#__PURE__*/React.createElement("div", {
package/esm/steps/step.js CHANGED
@@ -15,9 +15,11 @@ var Step = /*#__PURE__*/forwardRef(function (props, ref) {
15
15
  _useContext$index = _useContext.index,
16
16
  index = _useContext$index === void 0 ? 0 : _useContext$index,
17
17
  contextStatus = _useContext.status,
18
+ contextAlign = _useContext.align,
18
19
  changeIndex = _useContext.changeIndex;
19
20
 
20
21
  var status = props.status || contextStatus;
22
+ var align = props.align || contextAlign;
21
23
  var domRef = useRef(null);
22
24
  useImperativeHandle(ref, function () {
23
25
  return {
@@ -56,12 +58,12 @@ var Step = /*#__PURE__*/forwardRef(function (props, ref) {
56
58
  var prefixCls = _ref.prefixCls;
57
59
  return /*#__PURE__*/React.createElement("div", {
58
60
  ref: domRef,
59
- className: cls(prefixCls + "-steps-item", currentStatus, direction, iconType),
61
+ className: cls(prefixCls + "-steps-item", prefixCls + "-steps-item-align-" + align, currentStatus, direction, iconType),
60
62
  onClick: function onClick() {
61
63
  return changeIndex(index);
62
64
  }
63
65
  }, /*#__PURE__*/React.createElement("div", {
64
- className: cls(prefixCls + "-steps-item-tail", currentStatus + "-tail-color-with-config")
66
+ className: cls(prefixCls + "-steps-item-tail", prefixCls + "-steps-item-tail-status-" + currentStatus, prefixCls + "-steps-item-tail-align-" + align, currentStatus + "-tail-color-with-config")
65
67
  }), icon ? /*#__PURE__*/React.createElement("div", {
66
68
  className: cls(prefixCls + "-steps-item-custom-icon", currentStatus + "-custom-icon-bg-color-with-config")
67
69
  }, icon) : /*#__PURE__*/React.createElement("div", {
@@ -69,7 +71,7 @@ var Step = /*#__PURE__*/forwardRef(function (props, ref) {
69
71
  }, iconType === 'number' ? renderNumIcon(prefixCls) : /*#__PURE__*/React.createElement("span", {
70
72
  className: cls(prefixCls + "-steps-item-icon-dot")
71
73
  })), title || description ? /*#__PURE__*/React.createElement("div", {
72
- className: cls(prefixCls + "-steps-item-content")
74
+ className: cls(prefixCls + "-steps-item-content", prefixCls + "-steps-item-content-align-" + align)
73
75
  }, title ? /*#__PURE__*/React.createElement("div", {
74
76
  className: cls(prefixCls + "-steps-item-title", currentStatus + "-title-color-with-config")
75
77
  }, title) : null, description ? /*#__PURE__*/React.createElement("div", {
@@ -18,17 +18,23 @@
18
18
  -webkit-box-direction: normal;
19
19
  -webkit-flex-direction: column;
20
20
  flex-direction: column;
21
+ }
22
+ .arco-steps-item-align-center {
21
23
  -webkit-box-align: center;
22
24
  -webkit-align-items: center;
23
25
  align-items: center;
24
26
  }
25
- .arco-steps-item.vertical {
27
+ .arco-steps-item-align-start {
26
28
  -webkit-box-align: start;
27
29
  -webkit-align-items: flex-start;
28
30
  align-items: flex-start;
29
31
  }
30
- .arco-steps-item:last-child .arco-steps-item-tail:after {
31
- display: none;
32
+ .arco-steps-item-align-center.vertical {
33
+ padding-bottom: 0.5rem ;
34
+ }
35
+ .arco-steps-item:first-child .arco-steps-item-tail::before,
36
+ .arco-steps-item:last-child .arco-steps-item-tail::after {
37
+ visibility: hidden;
32
38
  }
33
39
  .arco-steps-item-tail {
34
40
  position: absolute;
@@ -44,33 +50,81 @@
44
50
  }
45
51
  .horizontal .arco-steps-item-tail {
46
52
  width: 100%;
47
- left: 50%;
48
53
  height: 18PX ;
49
- padding: 0 0.36rem ;
50
54
  }
51
- .horizontal .arco-steps-item-tail:after {
55
+ .horizontal .arco-steps-item-tail::before,
56
+ .horizontal .arco-steps-item-tail::after {
57
+ height: 1PX ;
58
+ }
59
+ .horizontal .arco-steps-item-tail-align-start {
60
+ left: 9PX ;
61
+ padding: 0 18PX ;
62
+ }
63
+ .horizontal .arco-steps-item-tail-align-start::after {
52
64
  content: "";
53
- display: inline-block;
54
65
  width: 100%;
55
- height: 1PX ;
56
- background: #e5e6eb ;
57
- border-radius: 0.04rem;
66
+ border-radius: 2PX ;
67
+ }
68
+ .horizontal .arco-steps-item-tail-align-center::before,
69
+ .horizontal .arco-steps-item-tail-align-center::after {
70
+ content: "";
71
+ width: 50%;
72
+ }
73
+ .horizontal .arco-steps-item-tail-align-center::before {
74
+ margin-right: 18PX ;
75
+ border-top-right-radius: 2PX ;
76
+ border-bottom-right-radius: 2PX ;
77
+ }
78
+ .horizontal .arco-steps-item-tail-align-center::after {
79
+ margin-left: 18PX ;
80
+ border-top-left-radius: 2PX ;
81
+ border-bottom-left-radius: 2PX ;
58
82
  }
59
83
  .vertical .arco-steps-item-tail {
60
84
  height: 100%;
61
85
  width: 18PX ;
62
- top: 0.18rem ;
63
- padding: 0.28rem 0 ;
86
+ -webkit-box-orient: vertical;
87
+ -webkit-box-direction: normal;
88
+ -webkit-flex-direction: column;
89
+ flex-direction: column;
64
90
  }
65
- .vertical .arco-steps-item-tail:after {
91
+ .vertical .arco-steps-item-tail::before,
92
+ .vertical .arco-steps-item-tail::after {
93
+ width: 1PX ;
94
+ }
95
+ .vertical .arco-steps-item-tail-align-start {
96
+ top: 9PX ;
97
+ padding: 14PX 0 ;
98
+ }
99
+ .vertical .arco-steps-item-tail-align-start::after {
66
100
  content: "";
67
- display: inline-block;
68
101
  height: 100%;
69
- width: 1PX ;
102
+ border-radius: 2PX ;
103
+ }
104
+ .vertical .arco-steps-item-tail-align-center::before,
105
+ .vertical .arco-steps-item-tail-align-center::after {
106
+ content: "";
107
+ height: 50%;
108
+ }
109
+ .vertical .arco-steps-item-tail-align-center::before {
110
+ margin-bottom: 14PX ;
111
+ border-bottom-left-radius: 2PX ;
112
+ border-bottom-right-radius: 2PX ;
113
+ }
114
+ .vertical .arco-steps-item-tail-align-center::after {
115
+ margin-top: 14PX ;
116
+ border-top-left-radius: 2PX ;
117
+ border-top-right-radius: 2PX ;
118
+ }
119
+ .arco-steps-item-tail::after,
120
+ .arco-steps-item-tail::before {
121
+ display: inline-block;
70
122
  background: #e5e6eb ;
71
- border-radius: 0.04rem;
72
123
  }
73
- .finish .arco-steps-item-tail:after {
124
+ .arco-steps-item-tail-status-finish::before,
125
+ .arco-steps-item-tail-status-finish::after,
126
+ .arco-steps-item-tail-align-center.arco-steps-item-tail-status-process::before,
127
+ .arco-steps-item-tail-align-center.arco-steps-item-tail-status-error::before {
74
128
  background: #165dff ;
75
129
  }
76
130
  .arco-steps-item-custom-icon,
@@ -122,8 +176,8 @@
122
176
  .arco-steps-item-icon-num.android,
123
177
  .arco-steps-item-icon-num.system-android {
124
178
  font-weight: 400;
125
- -webkit-text-stroke: 0.3PX #86909c;
126
- text-stroke: 0.3PX #86909c;
179
+ -webkit-text-stroke: 0.3PX currentColor;
180
+ text-stroke: 0.3PX currentColor;
127
181
  }
128
182
  .process .arco-steps-item-icon-num {
129
183
  color: #FFFFFF ;
@@ -147,18 +201,19 @@
147
201
  border: none;
148
202
  background: #165dff ;
149
203
  }
150
- .arco-steps-item-content {
151
- text-align: center;
152
- }
153
204
  .horizontal .arco-steps-item-content {
154
205
  margin-top: 0.1rem ;
155
206
  }
207
+ .horizontal .arco-steps-item-content-align-center {
208
+ text-align: center;
209
+ }
156
210
  .vertical .arco-steps-item-content {
157
211
  margin-left: 0.26rem ;
158
- text-align: left;
159
212
  -webkit-box-flex: 1;
160
213
  -webkit-flex: 1;
161
214
  flex: 1;
215
+ }
216
+ .vertical .arco-steps-item-content-align-start {
162
217
  padding-bottom: 0.5rem ;
163
218
  }
164
219
  .arco-steps-item-title {