@douyinfe/semi-ui 2.35.0 → 2.36.0-alpha.0

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 (109) hide show
  1. package/dist/css/semi.css +494 -25
  2. package/dist/css/semi.min.css +1 -1
  3. package/dist/umd/semi-ui.js +171 -54
  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/anchor/index.d.ts +1 -1
  8. package/lib/cjs/autoComplete/index.d.ts +1 -1
  9. package/lib/cjs/button/Button.d.ts +1 -1
  10. package/lib/cjs/button/buttonGroup.d.ts +1 -1
  11. package/lib/cjs/button/index.d.ts +1 -1
  12. package/lib/cjs/collapse/item.d.ts +2 -0
  13. package/lib/cjs/collapse/item.js +3 -2
  14. package/lib/cjs/datePicker/dateInput.d.ts +1 -1
  15. package/lib/cjs/datePicker/datePicker.d.ts +2 -2
  16. package/lib/cjs/datePicker/monthsGrid.d.ts +1 -1
  17. package/lib/cjs/datePicker/yearAndMonth.d.ts +1 -1
  18. package/lib/cjs/form/baseForm.d.ts +1 -1
  19. package/lib/cjs/form/field.d.ts +1 -1
  20. package/lib/cjs/input/index.d.ts +1 -1
  21. package/lib/cjs/input/inputGroup.d.ts +1 -1
  22. package/lib/cjs/modal/confirm.d.ts +17 -17
  23. package/lib/cjs/navigation/Item.d.ts +4 -0
  24. package/lib/cjs/navigation/Item.js +29 -10
  25. package/lib/cjs/navigation/SubNav.d.ts +5 -0
  26. package/lib/cjs/navigation/SubNav.js +51 -26
  27. package/lib/cjs/rating/index.d.ts +1 -1
  28. package/lib/cjs/rating/item.d.ts +1 -1
  29. package/lib/cjs/skeleton/index.d.ts +1 -0
  30. package/lib/cjs/skeleton/index.js +1 -0
  31. package/lib/cjs/skeleton/item.d.ts +1 -0
  32. package/lib/cjs/skeleton/item.js +6 -1
  33. package/lib/cjs/steps/basicStep.d.ts +3 -0
  34. package/lib/cjs/steps/basicStep.js +8 -2
  35. package/lib/cjs/steps/basicSteps.js +2 -1
  36. package/lib/cjs/steps/fillStep.d.ts +2 -0
  37. package/lib/cjs/steps/fillStep.js +3 -1
  38. package/lib/cjs/steps/fillSteps.js +5 -8
  39. package/lib/cjs/steps/index.d.ts +63 -1
  40. package/lib/cjs/steps/index.js +9 -0
  41. package/lib/cjs/steps/navStep.d.ts +3 -0
  42. package/lib/cjs/steps/navStep.js +6 -2
  43. package/lib/cjs/steps/navSteps.js +2 -1
  44. package/lib/cjs/steps/step.d.ts +4 -1
  45. package/lib/cjs/steps/step.js +1 -0
  46. package/lib/cjs/switch/index.d.ts +1 -1
  47. package/lib/cjs/table/Table.d.ts +2 -2
  48. package/lib/cjs/table/index.d.ts +1 -1
  49. package/lib/cjs/tagInput/index.d.ts +1 -1
  50. package/lib/cjs/timePicker/TimePicker.d.ts +1 -1
  51. package/lib/cjs/timePicker/index.d.ts +1 -1
  52. package/lib/cjs/timeline/context.d.ts +8 -0
  53. package/lib/cjs/timeline/context.js +15 -0
  54. package/lib/cjs/timeline/index.d.ts +2 -1
  55. package/lib/cjs/timeline/index.js +8 -2
  56. package/lib/cjs/timeline/item.d.ts +10 -0
  57. package/lib/cjs/timeline/item.js +42 -3
  58. package/lib/es/anchor/index.d.ts +1 -1
  59. package/lib/es/autoComplete/index.d.ts +1 -1
  60. package/lib/es/button/Button.d.ts +1 -1
  61. package/lib/es/button/buttonGroup.d.ts +1 -1
  62. package/lib/es/button/index.d.ts +1 -1
  63. package/lib/es/collapse/item.d.ts +2 -0
  64. package/lib/es/collapse/item.js +3 -2
  65. package/lib/es/datePicker/dateInput.d.ts +1 -1
  66. package/lib/es/datePicker/datePicker.d.ts +2 -2
  67. package/lib/es/datePicker/monthsGrid.d.ts +1 -1
  68. package/lib/es/datePicker/yearAndMonth.d.ts +1 -1
  69. package/lib/es/form/baseForm.d.ts +1 -1
  70. package/lib/es/form/field.d.ts +1 -1
  71. package/lib/es/input/index.d.ts +1 -1
  72. package/lib/es/input/inputGroup.d.ts +1 -1
  73. package/lib/es/modal/confirm.d.ts +17 -17
  74. package/lib/es/navigation/Item.d.ts +4 -0
  75. package/lib/es/navigation/Item.js +28 -10
  76. package/lib/es/navigation/SubNav.d.ts +5 -0
  77. package/lib/es/navigation/SubNav.js +52 -26
  78. package/lib/es/rating/index.d.ts +1 -1
  79. package/lib/es/rating/item.d.ts +1 -1
  80. package/lib/es/skeleton/index.d.ts +1 -0
  81. package/lib/es/skeleton/index.js +1 -0
  82. package/lib/es/skeleton/item.d.ts +1 -0
  83. package/lib/es/skeleton/item.js +6 -1
  84. package/lib/es/steps/basicStep.d.ts +3 -0
  85. package/lib/es/steps/basicStep.js +8 -2
  86. package/lib/es/steps/basicSteps.js +2 -1
  87. package/lib/es/steps/fillStep.d.ts +2 -0
  88. package/lib/es/steps/fillStep.js +3 -1
  89. package/lib/es/steps/fillSteps.js +6 -8
  90. package/lib/es/steps/index.d.ts +63 -1
  91. package/lib/es/steps/index.js +6 -0
  92. package/lib/es/steps/navStep.d.ts +3 -0
  93. package/lib/es/steps/navStep.js +6 -2
  94. package/lib/es/steps/navSteps.js +2 -1
  95. package/lib/es/steps/step.d.ts +4 -1
  96. package/lib/es/steps/step.js +1 -0
  97. package/lib/es/switch/index.d.ts +1 -1
  98. package/lib/es/table/Table.d.ts +2 -2
  99. package/lib/es/table/index.d.ts +1 -1
  100. package/lib/es/tagInput/index.d.ts +1 -1
  101. package/lib/es/timePicker/TimePicker.d.ts +1 -1
  102. package/lib/es/timePicker/index.d.ts +1 -1
  103. package/lib/es/timeline/context.d.ts +8 -0
  104. package/lib/es/timeline/context.js +3 -0
  105. package/lib/es/timeline/index.d.ts +2 -1
  106. package/lib/es/timeline/index.js +7 -2
  107. package/lib/es/timeline/item.d.ts +10 -0
  108. package/lib/es/timeline/item.js +41 -3
  109. package/package.json +8 -8
@@ -95,7 +95,7 @@ export default class CollapsePanel extends PureComponent {
95
95
  activeSet,
96
96
  motion
97
97
  } = this.context;
98
- const active = activeSet.has(itemKey);
98
+ const active = (activeSet === null || activeSet === void 0 ? void 0 : activeSet.has(itemKey)) || this.props.active;
99
99
  const itemCls = cls(className, {
100
100
  [`${cssClasses.PREFIX}-item`]: true
101
101
  });
@@ -145,4 +145,5 @@ CollapsePanel.propTypes = {
145
145
  CollapsePanel.defaultProps = {
146
146
  showArrow: true,
147
147
  disabled: false
148
- };
148
+ };
149
+ CollapsePanel.elementType = 'Collapse.Panel';
@@ -30,7 +30,7 @@ export default class DateInput extends BaseComponent<DateInputProps, {}> {
30
30
  onFocus: PropTypes.Requireable<(...args: any[]) => any>;
31
31
  value: PropTypes.Requireable<any[]>;
32
32
  disabled: PropTypes.Requireable<boolean>;
33
- type: PropTypes.Requireable<"dateTime" | "date" | "month" | "dateRange" | "year" | "monthRange" | "dateTimeRange">;
33
+ type: PropTypes.Requireable<"date" | "month" | "dateTime" | "dateRange" | "year" | "monthRange" | "dateTimeRange">;
34
34
  showClear: PropTypes.Requireable<boolean>;
35
35
  format: PropTypes.Requireable<string>;
36
36
  inputStyle: PropTypes.Requireable<object>;
@@ -58,8 +58,8 @@ export default class DatePicker extends BaseComponent<DatePickerProps, DatePicke
58
58
  'aria-labelledby': PropTypes.Requireable<string>;
59
59
  'aria-required': PropTypes.Requireable<boolean>;
60
60
  borderless: PropTypes.Requireable<boolean>;
61
- type: PropTypes.Requireable<"dateTime" | "date" | "month" | "dateRange" | "year" | "monthRange" | "dateTimeRange">;
62
- size: PropTypes.Requireable<"default" | "small" | "large">;
61
+ type: PropTypes.Requireable<"date" | "month" | "dateTime" | "dateRange" | "year" | "monthRange" | "dateTimeRange">;
62
+ size: PropTypes.Requireable<"small" | "default" | "large">;
63
63
  clearIcon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
64
64
  density: PropTypes.Requireable<"default" | "compact">;
65
65
  defaultValue: PropTypes.Requireable<NonNullable<string | number | object>>;
@@ -19,7 +19,7 @@ export interface MonthsGridProps extends MonthsGridFoundationProps, BaseProps {
19
19
  export declare type MonthsGridState = MonthsGridFoundationState;
20
20
  export default class MonthsGrid extends BaseComponent<MonthsGridProps, MonthsGridState> {
21
21
  static propTypes: {
22
- type: PropTypes.Requireable<"dateTime" | "date" | "month" | "dateRange" | "year" | "monthRange" | "dateTimeRange">;
22
+ type: PropTypes.Requireable<"date" | "month" | "dateTime" | "dateRange" | "year" | "monthRange" | "dateTimeRange">;
23
23
  defaultValue: PropTypes.Requireable<any[]>;
24
24
  defaultPickerValue: PropTypes.Requireable<NonNullable<string | number | object>>;
25
25
  multiple: PropTypes.Requireable<boolean>;
@@ -24,7 +24,7 @@ declare class YearAndMonth extends BaseComponent<YearAndMonthProps, YearAndMonth
24
24
  presetPosition: PropTypes.Requireable<"left" | "top" | "right" | "bottom">;
25
25
  renderQuickControls: PropTypes.Requireable<PropTypes.ReactNodeLike>;
26
26
  renderDateInput: PropTypes.Requireable<PropTypes.ReactNodeLike>;
27
- type: PropTypes.Requireable<"dateTime" | "date" | "month" | "dateRange" | "year" | "monthRange" | "dateTimeRange">;
27
+ type: PropTypes.Requireable<"date" | "month" | "dateTime" | "dateRange" | "year" | "monthRange" | "dateTimeRange">;
28
28
  };
29
29
  static defaultProps: {
30
30
  disabledDate: {
@@ -138,7 +138,7 @@ declare class Form<Values extends Record<string, any> = any> extends BaseCompone
138
138
  preventScroll?: boolean;
139
139
  showRestTagsPopover?: boolean;
140
140
  restTagsPopoverProps?: import("../popover").PopoverProps;
141
- } & Pick<import("../tooltip").TooltipProps, "stopPropagation" | "motion" | "getPopupContainer" | "spacing" | "mouseEnterDelay" | "autoAdjustOverflow" | "mouseLeaveDelay"> & React.RefAttributes<any> & import("./interface").CommonFieldProps, import("./interface").CommonexcludeType>> & import("./interface").SelectStatic;
141
+ } & Pick<import("../tooltip").TooltipProps, "motion" | "stopPropagation" | "getPopupContainer" | "spacing" | "mouseEnterDelay" | "autoAdjustOverflow" | "mouseLeaveDelay"> & React.RefAttributes<any> & import("./interface").CommonFieldProps, import("./interface").CommonexcludeType>> & import("./interface").SelectStatic;
142
142
  static Checkbox: React.ComponentType<import("utility-types").Subtract<import("./interface").CommonFieldProps, import("./interface").RadioCheckboxExcludeProps> & import("../checkbox").CheckboxProps & import("./interface").RCIncludeType>;
143
143
  static CheckboxGroup: React.ComponentType<import("utility-types").Subtract<import("../checkbox").CheckboxGroupProps, import("./interface").CommonexcludeType> & import("./interface").CommonFieldProps & React.RefAttributes<any>>;
144
144
  static Radio: React.ComponentType<import("utility-types").Subtract<import("./interface").CommonFieldProps, import("./interface").RadioCheckboxExcludeProps> & import("../radio").RadioProps & import("./interface").RCIncludeType>;
@@ -86,7 +86,7 @@ declare const FormSelect: import("react").ComponentType<import("utility-types").
86
86
  preventScroll?: boolean;
87
87
  showRestTagsPopover?: boolean;
88
88
  restTagsPopoverProps?: import("../popover").PopoverProps;
89
- } & Pick<import("../tooltip").TooltipProps, "stopPropagation" | "motion" | "getPopupContainer" | "spacing" | "mouseEnterDelay" | "autoAdjustOverflow" | "mouseLeaveDelay"> & import("react").RefAttributes<any> & import("./interface").CommonFieldProps, import("./interface").CommonexcludeType>> & import("./interface").SelectStatic;
89
+ } & Pick<import("../tooltip").TooltipProps, "motion" | "stopPropagation" | "getPopupContainer" | "spacing" | "mouseEnterDelay" | "autoAdjustOverflow" | "mouseLeaveDelay"> & import("react").RefAttributes<any> & import("./interface").CommonFieldProps, import("./interface").CommonexcludeType>> & import("./interface").SelectStatic;
90
90
  declare const FormCheckboxGroup: import("react").ComponentType<import("utility-types").Subtract<import("../checkbox/checkboxGroup").CheckboxGroupProps, import("./interface").CommonexcludeType> & import("./interface").CommonFieldProps & import("react").RefAttributes<any>>;
91
91
  declare const FormCheckbox: import("react").ComponentType<import("utility-types").Subtract<import("./interface").CommonFieldProps, import("./interface").RadioCheckboxExcludeProps> & import("../checkbox/checkbox").CheckboxProps & import("./interface").RCIncludeType>;
92
92
  declare const FormRadioGroup: import("react").ComponentType<import("utility-types").Subtract<import("../radio/radioGroup").RadioGroupProps, import("./interface").CommonexcludeType> & import("./interface").CommonFieldProps & import("react").RefAttributes<any>>;
@@ -84,7 +84,7 @@ declare class Input extends BaseComponent<InputProps, InputState> {
84
84
  showClear: PropTypes.Requireable<boolean>;
85
85
  hideSuffix: PropTypes.Requireable<boolean>;
86
86
  placeholder: PropTypes.Requireable<any>;
87
- size: PropTypes.Requireable<"default" | "small" | "large">;
87
+ size: PropTypes.Requireable<"small" | "default" | "large">;
88
88
  className: PropTypes.Requireable<string>;
89
89
  style: PropTypes.Requireable<object>;
90
90
  validateStatus: PropTypes.Requireable<"default" | "error" | "warning" | "success">;
@@ -21,7 +21,7 @@ export default class inputGroup extends BaseComponent<InputGroupProps, InputGrou
21
21
  static propTypes: {
22
22
  className: PropTypes.Requireable<string>;
23
23
  children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
24
- size: PropTypes.Requireable<"default" | "small" | "large">;
24
+ size: PropTypes.Requireable<"small" | "default" | "large">;
25
25
  style: PropTypes.Requireable<object>;
26
26
  onBlur: PropTypes.Requireable<(...args: any[]) => any>;
27
27
  onFocus: PropTypes.Requireable<(...args: any[]) => any>;
@@ -140,12 +140,12 @@ export declare function withWarning(props: ModalReactProps): {
140
140
  type: "warning";
141
141
  };
142
142
  export declare function withError(props: ModalReactProps): {
143
- title?: React.ReactNode;
144
143
  children?: React.ReactNode;
144
+ motion?: boolean;
145
+ title?: React.ReactNode;
145
146
  size?: import("@douyinfe/semi-foundation/lib/es/modal/modalFoundation").Size;
146
147
  style?: React.CSSProperties;
147
148
  className?: string;
148
- motion?: boolean;
149
149
  getPopupContainer?: () => HTMLElement;
150
150
  footer?: React.ReactNode;
151
151
  header?: React.ReactNode;
@@ -201,34 +201,24 @@ export declare function withError(props: ModalReactProps): {
201
201
  onMouseEnter?: React.MouseEventHandler<HTMLButtonElement>;
202
202
  onMouseLeave?: React.MouseEventHandler<HTMLButtonElement>;
203
203
  'aria-label'?: string;
204
+ onAnimationStart?: React.AnimationEventHandler<HTMLButtonElement>;
205
+ onAnimationEnd?: React.AnimationEventHandler<HTMLButtonElement>;
204
206
  title?: string;
205
207
  name?: string;
206
208
  value?: string | number | readonly string[];
207
- onAnimationStart?: React.AnimationEventHandler<HTMLButtonElement>;
208
- onAnimationEnd?: React.AnimationEventHandler<HTMLButtonElement>;
209
209
  form?: string;
210
210
  slot?: string;
211
211
  hidden?: boolean;
212
212
  color?: string;
213
- onChange?: React.FormEventHandler<HTMLButtonElement>;
214
- defaultChecked?: boolean;
215
213
  defaultValue?: string | number | readonly string[];
216
- suppressContentEditableWarning?: boolean;
217
- suppressHydrationWarning?: boolean;
218
214
  accessKey?: string;
219
- autoFocus?: boolean;
220
- formAction?: string;
221
- formEncType?: string;
222
- formMethod?: string;
223
- formNoValidate?: boolean;
224
- formTarget?: string;
225
215
  dir?: string;
226
216
  draggable?: boolean | "false" | "true";
227
217
  lang?: string;
228
- translate?: "no" | "yes";
218
+ translate?: "yes" | "no";
229
219
  prefix?: string;
230
220
  contentEditable?: "inherit" | (boolean | "false" | "true");
231
- inputMode?: "search" | "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal";
221
+ inputMode?: "none" | "search" | "text" | "tel" | "url" | "email" | "numeric" | "decimal";
232
222
  tabIndex?: number;
233
223
  role?: React.AriaRole;
234
224
  onMouseOut?: React.MouseEventHandler<HTMLButtonElement>;
@@ -240,6 +230,9 @@ export declare function withError(props: ModalReactProps): {
240
230
  'aria-haspopup'?: boolean | "dialog" | "menu" | "listbox" | "grid" | "false" | "true" | "tree";
241
231
  'aria-controls'?: string;
242
232
  'aria-describedby'?: string;
233
+ defaultChecked?: boolean;
234
+ suppressContentEditableWarning?: boolean;
235
+ suppressHydrationWarning?: boolean;
243
236
  contextMenu?: string;
244
237
  placeholder?: string;
245
238
  spellCheck?: boolean | "false" | "true";
@@ -274,7 +267,7 @@ export declare function withError(props: ModalReactProps): {
274
267
  'aria-current'?: boolean | "time" | "page" | "false" | "true" | "location" | "step" | "date";
275
268
  'aria-details'?: string;
276
269
  'aria-disabled'?: boolean | "false" | "true";
277
- 'aria-dropeffect'?: "link" | "none" | "copy" | "move" | "execute" | "popup";
270
+ 'aria-dropeffect'?: "none" | "link" | "copy" | "move" | "execute" | "popup";
278
271
  'aria-errormessage'?: string;
279
272
  'aria-flowto'?: string;
280
273
  'aria-grabbed'?: boolean | "false" | "true";
@@ -323,6 +316,7 @@ export declare function withError(props: ModalReactProps): {
323
316
  onCompositionUpdateCapture?: React.CompositionEventHandler<HTMLButtonElement>;
324
317
  onFocusCapture?: React.FocusEventHandler<HTMLButtonElement>;
325
318
  onBlurCapture?: React.FocusEventHandler<HTMLButtonElement>;
319
+ onChange?: React.FormEventHandler<HTMLButtonElement>;
326
320
  onChangeCapture?: React.FormEventHandler<HTMLButtonElement>;
327
321
  onBeforeInput?: React.FormEventHandler<HTMLButtonElement>;
328
322
  onBeforeInputCapture?: React.FormEventHandler<HTMLButtonElement>;
@@ -457,6 +451,12 @@ export declare function withError(props: ModalReactProps): {
457
451
  onAnimationIterationCapture?: React.AnimationEventHandler<HTMLButtonElement>;
458
452
  onTransitionEnd?: React.TransitionEventHandler<HTMLButtonElement>;
459
453
  onTransitionEndCapture?: React.TransitionEventHandler<HTMLButtonElement>;
454
+ autoFocus?: boolean;
455
+ formAction?: string;
456
+ formEncType?: string;
457
+ formMethod?: string;
458
+ formNoValidate?: boolean;
459
+ formTarget?: string;
460
460
  };
461
461
  };
462
462
  export declare function withConfirm(props: ModalReactProps): {
@@ -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';
@@ -69,7 +69,7 @@ export default class Rating extends BaseComponent<RatingProps, RatingState> {
69
69
  onBlur: PropTypes.Requireable<(...args: any[]) => any>;
70
70
  onKeyDown: PropTypes.Requireable<(...args: any[]) => any>;
71
71
  autoFocus: PropTypes.Requireable<boolean>;
72
- size: PropTypes.Requireable<NonNullable<number | "default" | "small">>;
72
+ size: PropTypes.Requireable<NonNullable<number | "small" | "default">>;
73
73
  tooltips: PropTypes.Requireable<string[]>;
74
74
  id: PropTypes.Requireable<string>;
75
75
  preventScroll: PropTypes.Requireable<boolean>;
@@ -40,7 +40,7 @@ export default class Item extends BaseComponent<RatingItemProps, RatingItemState
40
40
  disabled: PropTypes.Requireable<boolean>;
41
41
  count: PropTypes.Requireable<number>;
42
42
  ariaLabelPrefix: PropTypes.Requireable<string>;
43
- size: PropTypes.Requireable<NonNullable<number | "default" | "small">>;
43
+ size: PropTypes.Requireable<NonNullable<number | "small" | "default">>;
44
44
  'aria-describedby': PropTypes.Requireable<string>;
45
45
  onFocus: PropTypes.Requireable<(...args: any[]) => any>;
46
46
  onBlur: PropTypes.Requireable<(...args: any[]) => any>;
@@ -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;
@@ -25,7 +25,9 @@ const BasicStep = props => {
25
25
  stepNumber,
26
26
  onClick,
27
27
  onChange,
28
- onKeyDown
28
+ onKeyDown,
29
+ usedInC2D,
30
+ direction: direction
29
31
  } = props;
30
32
 
31
33
  const renderIcon = () => {
@@ -88,7 +90,10 @@ const BasicStep = props => {
88
90
  [`${prefixCls}-active`]: active,
89
91
  [`${prefixCls}-done`]: done,
90
92
  [`${prefixCls}-hover`]: onChange || props.onClick,
91
- [`${prefixCls}-${status}-hover`]: onChange || props.onClick
93
+ [`${prefixCls}-${status}-hover`]: onChange || props.onClick,
94
+ [`${prefixCls}-basic`]: usedInC2D,
95
+ [`${prefixCls}-${direction}`]: direction,
96
+ [`${prefixCls}-small`]: size === 'small'
92
97
  }, className);
93
98
 
94
99
  const handleClick = e => {
@@ -146,4 +151,5 @@ BasicStep.defaultProps = {
146
151
  status: 'wait',
147
152
  className: ''
148
153
  };
154
+ BasicStep.elementType = 'Steps.BasicStep';
149
155
  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) {