@douyinfe/semi-ui 2.33.1 → 2.34.0-alpha.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 (61) hide show
  1. package/dist/css/semi.css +493 -23
  2. package/dist/css/semi.min.css +1 -1
  3. package/dist/umd/semi-ui.js +260 -144
  4. package/dist/umd/semi-ui.js.map +1 -1
  5. package/dist/umd/semi-ui.min.js +1 -1
  6. package/dist/umd/semi-ui.min.js.map +1 -1
  7. package/lib/cjs/navigation/Item.d.ts +4 -0
  8. package/lib/cjs/navigation/Item.js +29 -10
  9. package/lib/cjs/navigation/SubNav.d.ts +5 -0
  10. package/lib/cjs/navigation/SubNav.js +51 -26
  11. package/lib/cjs/skeleton/index.d.ts +1 -0
  12. package/lib/cjs/skeleton/index.js +1 -0
  13. package/lib/cjs/skeleton/item.d.ts +1 -0
  14. package/lib/cjs/skeleton/item.js +6 -1
  15. package/lib/cjs/steps/basicStep.d.ts +3 -0
  16. package/lib/cjs/steps/basicStep.js +8 -2
  17. package/lib/cjs/steps/basicSteps.js +2 -1
  18. package/lib/cjs/steps/fillStep.d.ts +2 -0
  19. package/lib/cjs/steps/fillStep.js +3 -1
  20. package/lib/cjs/steps/fillSteps.js +5 -8
  21. package/lib/cjs/steps/index.d.ts +63 -1
  22. package/lib/cjs/steps/index.js +9 -0
  23. package/lib/cjs/steps/navStep.d.ts +3 -0
  24. package/lib/cjs/steps/navStep.js +6 -2
  25. package/lib/cjs/steps/navSteps.js +2 -1
  26. package/lib/cjs/steps/step.d.ts +4 -1
  27. package/lib/cjs/steps/step.js +1 -0
  28. package/lib/cjs/timeline/context.d.ts +8 -0
  29. package/lib/cjs/timeline/context.js +15 -0
  30. package/lib/cjs/timeline/index.d.ts +2 -1
  31. package/lib/cjs/timeline/index.js +8 -2
  32. package/lib/cjs/timeline/item.d.ts +10 -0
  33. package/lib/cjs/timeline/item.js +42 -3
  34. package/lib/es/navigation/Item.d.ts +4 -0
  35. package/lib/es/navigation/Item.js +28 -10
  36. package/lib/es/navigation/SubNav.d.ts +5 -0
  37. package/lib/es/navigation/SubNav.js +52 -26
  38. package/lib/es/skeleton/index.d.ts +1 -0
  39. package/lib/es/skeleton/index.js +1 -0
  40. package/lib/es/skeleton/item.d.ts +1 -0
  41. package/lib/es/skeleton/item.js +6 -1
  42. package/lib/es/steps/basicStep.d.ts +3 -0
  43. package/lib/es/steps/basicStep.js +8 -2
  44. package/lib/es/steps/basicSteps.js +2 -1
  45. package/lib/es/steps/fillStep.d.ts +2 -0
  46. package/lib/es/steps/fillStep.js +3 -1
  47. package/lib/es/steps/fillSteps.js +6 -8
  48. package/lib/es/steps/index.d.ts +63 -1
  49. package/lib/es/steps/index.js +6 -0
  50. package/lib/es/steps/navStep.d.ts +3 -0
  51. package/lib/es/steps/navStep.js +6 -2
  52. package/lib/es/steps/navSteps.js +2 -1
  53. package/lib/es/steps/step.d.ts +4 -1
  54. package/lib/es/steps/step.js +1 -0
  55. package/lib/es/timeline/context.d.ts +8 -0
  56. package/lib/es/timeline/context.js +3 -0
  57. package/lib/es/timeline/index.d.ts +2 -1
  58. package/lib/es/timeline/index.js +7 -2
  59. package/lib/es/timeline/item.d.ts +10 -0
  60. package/lib/es/timeline/item.js +41 -3
  61. package/package.json +8 -8
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ export declare type ModeType = 'left' | 'right' | 'center' | 'alternate';
3
+ export interface TimelineContextValue {
4
+ mode?: ModeType;
5
+ sum?: number;
6
+ }
7
+ declare const Context: React.Context<TimelineContextValue>;
8
+ export default Context;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ const Context = /*#__PURE__*/_react.default.createContext(null);
13
+
14
+ var _default = Context;
15
+ exports.default = _default;
@@ -2,12 +2,13 @@ import React, { PureComponent } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import '@douyinfe/semi-foundation/lib/cjs/timeline/timeline.css';
4
4
  import Item, { TimelineItemProps } from './item';
5
+ import { ModeType } from './context';
5
6
  export type { TimelineItemProps } from './item';
6
7
  export interface Data extends TimelineItemProps {
7
8
  content: React.ReactNode;
8
9
  }
9
10
  export interface TimelineProps extends Pick<React.AriaAttributes, 'aria-label'> {
10
- mode?: 'left' | 'right' | 'center' | 'alternate';
11
+ mode?: ModeType;
11
12
  className?: string;
12
13
  style?: React.CSSProperties;
13
14
  dataSource?: Data[];
@@ -19,6 +19,8 @@ var _context = _interopRequireDefault(require("../configProvider/context"));
19
19
 
20
20
  var _item = _interopRequireDefault(require("./item"));
21
21
 
22
+ var _context2 = _interopRequireDefault(require("./context"));
23
+
22
24
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
25
 
24
26
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -96,11 +98,15 @@ class Timeline extends _react.PureComponent {
96
98
  }
97
99
 
98
100
  const items = childrenList || this.addClassName(children);
99
- return /*#__PURE__*/_react.default.createElement("ul", {
101
+ return /*#__PURE__*/_react.default.createElement(_context2.default.Provider, {
102
+ value: {
103
+ mode
104
+ }
105
+ }, /*#__PURE__*/_react.default.createElement("ul", {
100
106
  "aria-label": this.props['aria-label'],
101
107
  style: style,
102
108
  className: classString
103
- }, items);
109
+ }, items));
104
110
  }
105
111
 
106
112
  }
@@ -1,6 +1,7 @@
1
1
  import React, { PureComponent } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import '@douyinfe/semi-foundation/lib/cjs/timeline/timeline.css';
4
+ import { ModeType, TimelineContextValue } from './context';
4
5
  export interface TimelineItemProps {
5
6
  color?: string;
6
7
  children?: React.ReactNode;
@@ -12,8 +13,13 @@ export interface TimelineItemProps {
12
13
  className?: string;
13
14
  style?: React.CSSProperties;
14
15
  onClick?: React.MouseEventHandler<HTMLLIElement>;
16
+ mode?: ModeType;
17
+ odd?: boolean;
18
+ usedInC2D?: boolean;
15
19
  }
16
20
  export default class Item extends PureComponent<TimelineItemProps> {
21
+ static contextType: React.Context<TimelineContextValue>;
22
+ static elementType: string;
17
23
  static propTypes: {
18
24
  color: PropTypes.Requireable<string>;
19
25
  time: PropTypes.Requireable<PropTypes.ReactNodeLike>;
@@ -24,11 +30,15 @@ export default class Item extends PureComponent<TimelineItemProps> {
24
30
  className: PropTypes.Requireable<string>;
25
31
  style: PropTypes.Requireable<object>;
26
32
  onClick: PropTypes.Requireable<(...args: any[]) => any>;
33
+ mode: PropTypes.Requireable<string>;
34
+ lastChild: PropTypes.Requireable<boolean>;
27
35
  };
36
+ context: TimelineContextValue;
28
37
  static defaultProps: {
29
38
  type: string;
30
39
  time: string;
31
40
  onClick: (...args: any[]) => void;
32
41
  };
42
+ getC2DCls: () => string;
33
43
  render(): JSX.Element;
34
44
  }
@@ -17,6 +17,8 @@ var _constants = require("@douyinfe/semi-foundation/lib/cjs/timeline/constants")
17
17
 
18
18
  require("@douyinfe/semi-foundation/lib/cjs/timeline/timeline.css");
19
19
 
20
+ var _context = _interopRequireDefault(require("./context"));
21
+
20
22
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
21
23
 
22
24
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -26,6 +28,39 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
26
28
  const prefixCls = _constants.cssClasses.ITEM;
27
29
 
28
30
  class Item extends _react.PureComponent {
31
+ constructor() {
32
+ super(...arguments); // getC2DCls is used in C2D, it does not work in non-C2D scenes
33
+
34
+ this.getC2DCls = () => {
35
+ let c2dCls = '';
36
+ const {
37
+ mode,
38
+ odd,
39
+ usedInC2D
40
+ } = this.props;
41
+
42
+ if (usedInC2D) {
43
+ switch (mode) {
44
+ case 'center':
45
+ c2dCls = `${prefixCls}-center ${prefixCls}-left`;
46
+ break;
47
+
48
+ case 'alternate':
49
+ c2dCls = `${prefixCls}-alternate ${prefixCls}-${odd ? 'left' : 'right'}`;
50
+ break;
51
+
52
+ default:
53
+ c2dCls = `${prefixCls}-${mode} ${mode === 'right' ? `${prefixCls}-mode-right` : ''}`;
54
+ break;
55
+ }
56
+
57
+ c2dCls += ` ${prefixCls}-not-last-child`;
58
+ }
59
+
60
+ return c2dCls;
61
+ };
62
+ }
63
+
29
64
  render() {
30
65
  const {
31
66
  className,
@@ -38,7 +73,7 @@ class Item extends _react.PureComponent {
38
73
  extra,
39
74
  onClick
40
75
  } = this.props;
41
- const itemCls = (0, _classnames.default)(prefixCls, className);
76
+ const itemCls = (0, _classnames.default)(prefixCls, className, this.getC2DCls());
42
77
  const dotCls = (0, _classnames.default)({
43
78
  [`${prefixCls}-head`]: true,
44
79
  [`${prefixCls}-head-custom`]: dot,
@@ -71,6 +106,7 @@ class Item extends _react.PureComponent {
71
106
  }
72
107
 
73
108
  exports.default = Item;
109
+ Item.contextType = _context.default;
74
110
  Item.propTypes = {
75
111
  color: _propTypes.default.string,
76
112
  time: _propTypes.default.node,
@@ -80,10 +116,13 @@ Item.propTypes = {
80
116
  position: _propTypes.default.oneOf(_constants.strings.ITEM_POS),
81
117
  className: _propTypes.default.string,
82
118
  style: _propTypes.default.object,
83
- onClick: _propTypes.default.func
119
+ onClick: _propTypes.default.func,
120
+ mode: _propTypes.default.string,
121
+ lastChild: _propTypes.default.bool
84
122
  };
85
123
  Item.defaultProps = {
86
124
  type: 'default',
87
125
  time: '',
88
126
  onClick: _noop2.default
89
- };
127
+ };
128
+ Item.elementType = 'Timeline.Item';
@@ -19,6 +19,9 @@ export interface NavItemProps extends ItemProps, BaseProps {
19
19
  onClick?(clickItems: SelectedData): void;
20
20
  onMouseEnter?: React.MouseEventHandler<HTMLLIElement>;
21
21
  onMouseLeave?: React.MouseEventHandler<HTMLLIElement>;
22
+ selected?: boolean;
23
+ mode?: string;
24
+ isInSubNav?: boolean;
22
25
  }
23
26
  export interface SelectedData extends SelectedItemProps<NavItemProps> {
24
27
  text?: React.ReactNode;
@@ -28,6 +31,7 @@ export interface NavItemState {
28
31
  }
29
32
  export default class NavItem extends BaseComponent<NavItemProps, NavItemState> {
30
33
  static contextType: React.Context<NavContextType>;
34
+ static elementType: string;
31
35
  static propTypes: {
32
36
  text: PropTypes.Requireable<NonNullable<PropTypes.ReactNodeLike>>;
33
37
  itemKey: PropTypes.Requireable<NonNullable<string | number>>;
@@ -1,3 +1,4 @@
1
+ import _isUndefined from "lodash/isUndefined";
1
2
  import _times from "lodash/times";
2
3
  import _noop from "lodash/noop";
3
4
 
@@ -99,21 +100,28 @@ export default class NavItem extends BaseComponent {
99
100
  notifyMouseLeave: function () {
100
101
  return _this.props.onMouseLeave(...arguments);
101
102
  },
102
- getIsCollapsed: () => this.props.isCollapsed || Boolean(this.context && this.context.isCollapsed) || false,
103
- getSelected: () => Boolean(this.context && this.context.selectedKeys && this.context.selectedKeys.includes(this.props.itemKey)),
104
- getIsOpen: () => Boolean(this.context && this.context.openKeys && this.context.openKeys.includes(this.props.itemKey))
103
+ getIsCollapsed: () => this.props.isCollapsed || Boolean(this.context && this.context.isCollapsed),
104
+ getSelected: () => this.props.selected || Boolean(this.context && this.context.selectedKeys && this.context.selectedKeys.includes(this.props.itemKey)),
105
+ getIsOpen: () => Boolean(this.context && this.context.openKeys && this.context.openKeys.includes(this.props.itemKey)),
106
+ getIsInSubNav: () => this.props.isInSubNav || Boolean(this.context && this.context.isInSubNav),
107
+ getMode: () => {
108
+ var _a, _b;
109
+
110
+ return (_a = this.props.mode) !== null && _a !== void 0 ? _a : (_b = this.context) === null || _b === void 0 ? void 0 : _b.mode;
111
+ }
105
112
  });
106
113
  }
107
114
 
108
115
  renderIcon(icon, pos) {
109
116
  let isToggleIcon = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
110
117
  let key = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
118
+ const mode = this.adapter.getMode();
111
119
 
112
120
  if (this.props.isSubNav) {
113
121
  return null;
114
122
  }
115
123
 
116
- if (!icon && this.context.mode === strings.MODE_HORIZONTAL) {
124
+ if (!icon && mode === strings.MODE_HORIZONTAL) {
117
125
  return null;
118
126
  }
119
127
 
@@ -136,6 +144,8 @@ export default class NavItem extends BaseComponent {
136
144
  }
137
145
 
138
146
  render() {
147
+ var _a;
148
+
139
149
  const {
140
150
  text,
141
151
  children,
@@ -151,16 +161,17 @@ export default class NavItem extends BaseComponent {
151
161
  linkOptions,
152
162
  disabled,
153
163
  level = 0,
154
- tabIndex
164
+ tabIndex,
165
+ mode: modeInProps
155
166
  } = this.props;
156
167
  const {
157
- mode,
158
- isInSubNav,
159
168
  prefixCls,
160
169
  limitIndent
161
170
  } = this.context;
162
171
  const isCollapsed = this.adapter.getIsCollapsed();
163
172
  const selected = this.adapter.getSelected();
173
+ const isInSubNav = this.adapter.getIsInSubNav();
174
+ const mode = this.adapter.getMode();
164
175
  let itemChildren = null;
165
176
 
166
177
  if (!isNullOrUndefined(children)) {
@@ -208,14 +219,20 @@ export default class NavItem extends BaseComponent {
208
219
  onKeyDown: this.handleKeyPress
209
220
  }, itemChildren);
210
221
  } else {
211
- // Items are divided into normal and sub-wrap
222
+ // isFirstLayer 用于决定 semi-navigation-first-layers(仅在 c2中使用) 是否生效
223
+ // 当 this.props.isInSubNav 存在是,则由 this.props.isInSubNav 决定
224
+ // 否则由 this.context?.mode 决定,因为第一层节点无context
225
+ const isFirstLayer = !_isUndefined(this.props.isInSubNav) ? !this.props.isInSubNav : _isUndefined((_a = this.context) === null || _a === void 0 ? void 0 : _a.mode); // Items are divided into normal and sub-wrap
226
+
212
227
  const popoverItemCls = cls(`${className || `${clsPrefix}-normal`}`, {
213
228
  [clsPrefix]: true,
214
229
  [`${clsPrefix}-sub`]: isSubNav,
215
230
  [`${clsPrefix}-selected`]: selected && !isSubNav,
216
231
  [`${clsPrefix}-collapsed`]: isCollapsed,
217
232
  [`${clsPrefix}-disabled`]: disabled,
218
- [`${clsPrefix}-has-link`]: typeof link === 'string'
233
+ [`${clsPrefix}-has-link`]: typeof link === 'string',
234
+ [`${cssClasses.PREFIX}-first-layer`]: isFirstLayer,
235
+ [`${clsPrefix}-horizontal`]: modeInProps === strings.MODE_HORIZONTAL
219
236
  });
220
237
  const ariaProps = {
221
238
  'aria-disabled': disabled
@@ -293,4 +310,5 @@ NavItem.defaultProps = {
293
310
  onMouseLeave: _noop,
294
311
  disabled: false,
295
312
  tabIndex: 0
296
- };
313
+ };
314
+ NavItem.elementType = 'Nav.Item';
@@ -22,11 +22,14 @@ export interface SubNavProps extends BaseProps {
22
22
  onMouseLeave?: React.MouseEventHandler<HTMLLIElement>;
23
23
  text?: React.ReactNode;
24
24
  toggleIcon?: ToggleIcon;
25
+ active?: boolean;
26
+ mode?: string;
25
27
  }
26
28
  export interface SubNavState {
27
29
  isHovered: boolean;
28
30
  }
29
31
  export default class SubNav extends BaseComponent<SubNavProps, SubNavState> {
32
+ static elementType: string;
30
33
  static contextType: React.Context<NavContextType>;
31
34
  static propTypes: {
32
35
  /**
@@ -70,6 +73,7 @@ export default class SubNav extends BaseComponent<SubNavProps, SubNavState> {
70
73
  onMouseLeave: PropTypes.Requireable<(...args: any[]) => any>;
71
74
  disabled: PropTypes.Requireable<boolean>;
72
75
  level: PropTypes.Requireable<number>;
76
+ active: PropTypes.Requireable<boolean>;
73
77
  };
74
78
  static defaultProps: {
75
79
  level: number;
@@ -82,6 +86,7 @@ export default class SubNav extends BaseComponent<SubNavProps, SubNavState> {
82
86
  closed: JSX.Element;
83
87
  };
84
88
  disabled: boolean;
89
+ active: boolean;
85
90
  };
86
91
  titleRef: React.RefObject<HTMLDivElement>;
87
92
  itemRef: React.RefObject<HTMLLIElement>;
@@ -1,3 +1,4 @@
1
+ import _isUndefined from "lodash/isUndefined";
1
2
  import _get from "lodash/get";
2
3
  import _times from "lodash/times";
3
4
 
@@ -105,16 +106,29 @@ export default class SubNav extends BaseComponent {
105
106
 
106
107
  return _this._invokeContextFunc('onClick', ...args);
107
108
  },
108
- getIsSelected: itemKey => Boolean(!isNullOrUndefined(itemKey) && _get(this.context, 'selectedKeys', []).includes(String(itemKey))),
109
- getIsOpen: () => Boolean(this.context && this.context.openKeys && this.context.openKeys.includes(String(this.props.itemKey)))
109
+ getIsSelected: itemKey => this.props.active || Boolean(!isNullOrUndefined(itemKey) && _get(this.context, 'selectedKeys', []).includes(String(itemKey))),
110
+ getIsOpen: () => this.props.isOpen || Boolean(this.context && this.context.openKeys && this.context.openKeys.includes(String(this.props.itemKey))),
111
+ getIsCollapsed: () => {
112
+ var _a;
113
+
114
+ return this.props.isCollapsed || Boolean((_a = this.context) === null || _a === void 0 ? void 0 : _a.isCollapsed);
115
+ },
116
+ getMode: () => {
117
+ var _a, _b;
118
+
119
+ return (_a = this.props.mode) !== null && _a !== void 0 ? _a : (_b = this.context) === null || _b === void 0 ? void 0 : _b.mode;
120
+ }
110
121
  });
111
122
  }
112
123
 
113
124
  renderIcon(icon, pos, withTransition) {
114
125
  let isToggleIcon = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
115
126
  let key = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
127
+
128
+ var _a;
129
+
116
130
  const {
117
- prefixCls
131
+ prefixCls = cssClasses.PREFIX
118
132
  } = this.context;
119
133
  let iconSize = 'large';
120
134
 
@@ -122,14 +136,15 @@ export default class SubNav extends BaseComponent {
122
136
  iconSize = 'default';
123
137
  }
124
138
 
139
+ const isOpen = this.adapter.getIsOpen();
125
140
  const className = cls(`${prefixCls}-item-icon`, {
126
- [`${prefixCls}-item-icon-toggle-${this.context.toggleIconPosition}`]: isToggleIcon,
127
- [`${prefixCls}-item-icon-info`]: !isToggleIcon
141
+ [`${prefixCls}-item-icon-toggle-${(_a = this.context.toggleIconPosition) !== null && _a !== void 0 ? _a : 'right'}`]: isToggleIcon,
142
+ [`${prefixCls}-item-icon-info`]: !isToggleIcon,
143
+ [`${prefixCls}-icon-rotate-${isOpen ? "180" : "0"}-no-transition`]: !withTransition && isToggleIcon
128
144
  });
129
- const isOpen = this.adapter.getIsOpen();
130
145
  const iconElem = /*#__PURE__*/React.isValidElement(icon) ? withTransition ? /*#__PURE__*/React.createElement(CSSAnimation, {
131
146
  animationState: isOpen ? "enter" : "leave",
132
- startClassName: `${cssClasses.PREFIX}-icon-rotate-${isOpen ? "180" : "0"}`
147
+ startClassName: `${prefixCls}-icon-rotate-${isOpen ? "180" : "0"}`
133
148
  }, _ref => {
134
149
  let {
135
150
  animationClassName
@@ -159,17 +174,22 @@ export default class SubNav extends BaseComponent {
159
174
  level
160
175
  } = this.props;
161
176
  const {
162
- mode,
163
177
  isInSubNav,
164
- isCollapsed,
165
- prefixCls,
178
+ prefixCls = cssClasses.PREFIX,
166
179
  subNavMotion,
167
180
  limitIndent
168
181
  } = this.context;
182
+
183
+ const isFirstLayer = _isUndefined(this.context.mode);
184
+
185
+ const mode = this.adapter.getMode();
169
186
  const isOpen = this.adapter.getIsOpen();
187
+ const isCollapsed = this.adapter.getIsCollapsed();
170
188
  const titleCls = cls(`${prefixCls}-sub-title`, {
171
189
  [`${prefixCls}-sub-title-selected`]: this.adapter.getIsSelected(itemKey),
172
- [`${prefixCls}-sub-title-disabled`]: disabled
190
+ [`${prefixCls}-sub-title-disabled`]: disabled,
191
+ [`${prefixCls}-first-layer`]: isFirstLayer,
192
+ [`${prefixCls}-sub-title-horizontal`]: mode === strings.MODE_HORIZONTAL
173
193
  });
174
194
  let withTransition = false;
175
195
  let toggleIconType = '';
@@ -210,6 +230,7 @@ export default class SubNav extends BaseComponent {
210
230
  }
211
231
 
212
232
  const isIconChevronRightShow = !isCollapsed && isInSubNav && mode === strings.MODE_HORIZONTAL || isCollapsed && isInSubNav;
233
+ const toggleIconPositionLeft = this.context.toggleIconPosition === strings.TOGGLE_ICON_LEFT;
213
234
  const titleDiv = /*#__PURE__*/React.createElement("div", {
214
235
  role: "menuitem",
215
236
  // to avoid nested horizontal navigation be focused
@@ -221,9 +242,9 @@ export default class SubNav extends BaseComponent {
221
242
  "aria-expanded": isOpen ? 'true' : 'false'
222
243
  }, /*#__PURE__*/React.createElement("div", {
223
244
  className: `${prefixCls}-item-inner`
224
- }, placeholderIcons, this.context.toggleIconPosition === strings.TOGGLE_ICON_LEFT && this.renderIcon(toggleIconType, strings.ICON_POS_RIGHT, withTransition, true, 'key-toggle-position-left'), icon || indent || isInSubNav && mode !== strings.MODE_HORIZONTAL ? this.renderIcon(icon, strings.ICON_POS_LEFT, false, false, 'key-inSubNav-position-left') : null, /*#__PURE__*/React.createElement("span", {
245
+ }, placeholderIcons, toggleIconPositionLeft && this.renderIcon(toggleIconType, strings.ICON_POS_RIGHT, withTransition, true, 'key-toggle-position-left'), icon || indent || isInSubNav && mode !== strings.MODE_HORIZONTAL ? this.renderIcon(icon, strings.ICON_POS_LEFT, false, false, 'key-inSubNav-position-left') : null, /*#__PURE__*/React.createElement("span", {
225
246
  className: `${prefixCls}-item-text`
226
- }, text), this.context.toggleIconPosition === strings.TOGGLE_ICON_RIGHT && this.renderIcon(toggleIconType, strings.ICON_POS_RIGHT, withTransition, true, 'key-toggle-position-right')));
247
+ }, text), !toggleIconPositionLeft && this.renderIcon(toggleIconType, strings.ICON_POS_RIGHT, withTransition, true, 'key-toggle-position-right')));
227
248
  return titleDiv;
228
249
  }
229
250
 
@@ -233,12 +254,12 @@ export default class SubNav extends BaseComponent {
233
254
  maxHeight
234
255
  } = this.props;
235
256
  const {
236
- isCollapsed,
237
- mode,
238
257
  subNavMotion,
239
- prefixCls
258
+ prefixCls = cssClasses.PREFIX
240
259
  } = this.context;
260
+ const isCollapsed = this.adapter.getIsCollapsed();
241
261
  const isOpen = this.adapter.getIsOpen();
262
+ const mode = this.adapter.getMode();
242
263
  const isHorizontal = mode === strings.MODE_HORIZONTAL;
243
264
  const subNavCls = cls(`${prefixCls}-sub`, {
244
265
  [`${prefixCls}-sub-open`]: isOpen,
@@ -267,14 +288,14 @@ export default class SubNav extends BaseComponent {
267
288
  disabled
268
289
  } = this.props;
269
290
  const {
270
- mode,
271
291
  isInSubNav,
272
- isCollapsed,
273
292
  subNavCloseDelay,
274
293
  subNavOpenDelay,
275
- prefixCls,
294
+ prefixCls = cssClasses.PREFIX,
276
295
  getPopupContainer
277
296
  } = this.context;
297
+ const isCollapsed = this.adapter.getIsCollapsed();
298
+ const mode = this.adapter.getMode();
278
299
  const isOpen = this.adapter.getIsOpen();
279
300
  const openKeysIsControlled = this.adapter.getOpenKeysIsControlled();
280
301
  const subNavCls = cls({
@@ -319,10 +340,10 @@ export default class SubNav extends BaseComponent {
319
340
  text
320
341
  } = this.props;
321
342
  const {
322
- mode,
323
- isCollapsed,
324
- prefixCls
343
+ prefixCls = cssClasses.PREFIX
325
344
  } = this.context;
345
+ const mode = this.adapter.getMode();
346
+ const isCollapsed = this.adapter.getIsCollapsed();
326
347
  let titleDiv = this.renderTitleDiv();
327
348
  const subUl = this.renderSubUl(); // When mode=horizontal, it is displayed in Dropdown
328
349
 
@@ -340,9 +361,11 @@ export default class SubNav extends BaseComponent {
340
361
  onMouseEnter: onMouseEnter,
341
362
  onMouseLeave: onMouseLeave,
342
363
  disabled: disabled,
343
- text: text
364
+ text: text,
365
+ mode: mode
344
366
  }, /*#__PURE__*/React.createElement(NavContext.Provider, {
345
367
  value: Object.assign(Object.assign({}, this.context), {
368
+ mode: mode,
346
369
  isInSubNav: true
347
370
  })
348
371
  }, titleDiv, subUl));
@@ -403,7 +426,8 @@ SubNav.propTypes = {
403
426
  onMouseLeave: PropTypes.func,
404
427
  // Is it disabled
405
428
  disabled: PropTypes.bool,
406
- level: PropTypes.number
429
+ level: PropTypes.number,
430
+ active: PropTypes.bool
407
431
  };
408
432
  SubNav.defaultProps = {
409
433
  level: 0,
@@ -419,5 +443,7 @@ SubNav.defaultProps = {
419
443
  "aria-hidden": true
420
444
  })
421
445
  },
422
- disabled: false
423
- };
446
+ disabled: false,
447
+ active: false
448
+ };
449
+ SubNav.elementType = 'Nav.Sub';
@@ -12,6 +12,7 @@ export interface SkeletonProps {
12
12
  style?: CSSProperties;
13
13
  }
14
14
  declare class Skeleton extends PureComponent<SkeletonProps> {
15
+ static elementType: string;
15
16
  static Avatar: React.FC<import("./item").AvatarProps>;
16
17
  static Title: React.FC<import("./item").BasicProps>;
17
18
  static Button: React.FC<import("./item").BasicProps>;
@@ -67,4 +67,5 @@ Skeleton.propTypes = {
67
67
  loading: PropTypes.bool,
68
68
  children: PropTypes.node
69
69
  };
70
+ Skeleton.elementType = 'Skeleton';
70
71
  export default Skeleton;
@@ -21,6 +21,7 @@ export declare const Image: React.FC<BasicProps>;
21
21
  export declare const Title: React.FC<BasicProps>;
22
22
  export declare const Button: React.FC<BasicProps>;
23
23
  export declare class Paragraph extends PureComponent<ParagraphProps> {
24
+ static elementType: string;
24
25
  static propTypes: {
25
26
  rows: PropTypes.Requireable<number>;
26
27
  prefixCls: PropTypes.Requireable<string>;
@@ -63,6 +63,10 @@ export const Avatar = generator('avatar')(Generic);
63
63
  export const Image = generator('image')(Generic);
64
64
  export const Title = generator('title')(Generic);
65
65
  export const Button = generator('button')(Generic);
66
+ Avatar.elementType = 'Skeleton.Avatar';
67
+ Image.elementType = 'Skeleton.Image';
68
+ Title.elementType = 'Skeleton.Title';
69
+ Button.elementType = 'Skeleton.Button';
66
70
  export class Paragraph extends PureComponent {
67
71
  render() {
68
72
  const {
@@ -90,4 +94,5 @@ Paragraph.propTypes = {
90
94
  Paragraph.defaultProps = {
91
95
  prefixCls: cssClasses.PREFIX,
92
96
  rows: 4
93
- };
97
+ };
98
+ Paragraph.elementType = 'Skeleton.Paragraph';
@@ -19,6 +19,8 @@ export interface BasicStepProps {
19
19
  onKeyDown?: React.KeyboardEventHandler<HTMLDivElement>;
20
20
  "role"?: React.AriaRole;
21
21
  "aria-label"?: React.AriaAttributes["aria-label"];
22
+ usedInC2D?: string;
23
+ direction?: string;
22
24
  }
23
25
  export declare enum stepSizeMapIconSize {
24
26
  small = "large",
@@ -45,5 +47,6 @@ declare const BasicStep: {
45
47
  status: string;
46
48
  className: string;
47
49
  };
50
+ elementType: string;
48
51
  };
49
52
  export default BasicStep;
@@ -26,7 +26,9 @@ const BasicStep = props => {
26
26
  stepNumber,
27
27
  onClick,
28
28
  onChange,
29
- onKeyDown
29
+ onKeyDown,
30
+ usedInC2D,
31
+ direction: direction
30
32
  } = props;
31
33
 
32
34
  const renderIcon = () => {
@@ -87,7 +89,10 @@ const BasicStep = props => {
87
89
 
88
90
  const classString = classnames(prefixCls, `${prefixCls}-${status}`, {
89
91
  [`${prefixCls}-active`]: active,
90
- [`${prefixCls}-done`]: done
92
+ [`${prefixCls}-done`]: done,
93
+ [`${prefixCls}-basic`]: usedInC2D,
94
+ [`${prefixCls}-${direction}`]: direction,
95
+ [`${prefixCls}-small`]: size === 'small'
91
96
  }, className);
92
97
 
93
98
  const handleClick = e => {
@@ -151,4 +156,5 @@ BasicStep.defaultProps = {
151
156
  status: 'wait',
152
157
  className: ''
153
158
  };
159
+ BasicStep.elementType = 'Steps.BasicStep';
154
160
  export default BasicStep;
@@ -27,7 +27,8 @@ const Steps = props => {
27
27
  const stepNumber = initial + index;
28
28
  const childProps = Object.assign({
29
29
  stepNumber: `${stepNumber + 1}`,
30
- size
30
+ size,
31
+ direction
31
32
  }, child.props);
32
33
 
33
34
  if (status === 'error' && index === current - 1) {
@@ -15,6 +15,7 @@ export interface FillStepProps {
15
15
  onKeyDown?: React.KeyboardEventHandler<HTMLDivElement>;
16
16
  "role"?: React.AriaRole;
17
17
  "aria-label"?: React.AriaAttributes["aria-label"];
18
+ usedInC2D?: boolean;
18
19
  }
19
20
  declare const FillStep: {
20
21
  (props: FillStepProps): JSX.Element;
@@ -33,5 +34,6 @@ declare const FillStep: {
33
34
  status: string;
34
35
  className: string;
35
36
  };
37
+ elementType: string;
36
38
  };
37
39
  export default FillStep;
@@ -97,7 +97,8 @@ const FillStep = props => {
97
97
  className: classnames({
98
98
  [prefixCls]: true,
99
99
  [`${prefixCls}-${status}`]: Boolean(status),
100
- [`${prefixCls}-clickable`]: onClick
100
+ [`${prefixCls}-clickable`]: onClick,
101
+ [`${prefixCls}-fill`]: props.usedInC2D
101
102
  }, className),
102
103
  style: style,
103
104
  onClick: e => {
@@ -132,4 +133,5 @@ FillStep.defaultProps = {
132
133
  status: 'wait',
133
134
  className: ''
134
135
  };
136
+ FillStep.elementType = 'Steps.FillStep';
135
137
  export default FillStep;