@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.
- package/dist/css/semi.css +493 -23
- package/dist/css/semi.min.css +1 -1
- package/dist/umd/semi-ui.js +260 -144
- package/dist/umd/semi-ui.js.map +1 -1
- package/dist/umd/semi-ui.min.js +1 -1
- package/dist/umd/semi-ui.min.js.map +1 -1
- package/lib/cjs/navigation/Item.d.ts +4 -0
- package/lib/cjs/navigation/Item.js +29 -10
- package/lib/cjs/navigation/SubNav.d.ts +5 -0
- package/lib/cjs/navigation/SubNav.js +51 -26
- package/lib/cjs/skeleton/index.d.ts +1 -0
- package/lib/cjs/skeleton/index.js +1 -0
- package/lib/cjs/skeleton/item.d.ts +1 -0
- package/lib/cjs/skeleton/item.js +6 -1
- package/lib/cjs/steps/basicStep.d.ts +3 -0
- package/lib/cjs/steps/basicStep.js +8 -2
- package/lib/cjs/steps/basicSteps.js +2 -1
- package/lib/cjs/steps/fillStep.d.ts +2 -0
- package/lib/cjs/steps/fillStep.js +3 -1
- package/lib/cjs/steps/fillSteps.js +5 -8
- package/lib/cjs/steps/index.d.ts +63 -1
- package/lib/cjs/steps/index.js +9 -0
- package/lib/cjs/steps/navStep.d.ts +3 -0
- package/lib/cjs/steps/navStep.js +6 -2
- package/lib/cjs/steps/navSteps.js +2 -1
- package/lib/cjs/steps/step.d.ts +4 -1
- package/lib/cjs/steps/step.js +1 -0
- package/lib/cjs/timeline/context.d.ts +8 -0
- package/lib/cjs/timeline/context.js +15 -0
- package/lib/cjs/timeline/index.d.ts +2 -1
- package/lib/cjs/timeline/index.js +8 -2
- package/lib/cjs/timeline/item.d.ts +10 -0
- package/lib/cjs/timeline/item.js +42 -3
- package/lib/es/navigation/Item.d.ts +4 -0
- package/lib/es/navigation/Item.js +28 -10
- package/lib/es/navigation/SubNav.d.ts +5 -0
- package/lib/es/navigation/SubNav.js +52 -26
- package/lib/es/skeleton/index.d.ts +1 -0
- package/lib/es/skeleton/index.js +1 -0
- package/lib/es/skeleton/item.d.ts +1 -0
- package/lib/es/skeleton/item.js +6 -1
- package/lib/es/steps/basicStep.d.ts +3 -0
- package/lib/es/steps/basicStep.js +8 -2
- package/lib/es/steps/basicSteps.js +2 -1
- package/lib/es/steps/fillStep.d.ts +2 -0
- package/lib/es/steps/fillStep.js +3 -1
- package/lib/es/steps/fillSteps.js +6 -8
- package/lib/es/steps/index.d.ts +63 -1
- package/lib/es/steps/index.js +6 -0
- package/lib/es/steps/navStep.d.ts +3 -0
- package/lib/es/steps/navStep.js +6 -2
- package/lib/es/steps/navSteps.js +2 -1
- package/lib/es/steps/step.d.ts +4 -1
- package/lib/es/steps/step.js +1 -0
- package/lib/es/timeline/context.d.ts +8 -0
- package/lib/es/timeline/context.js +3 -0
- package/lib/es/timeline/index.d.ts +2 -1
- package/lib/es/timeline/index.js +7 -2
- package/lib/es/timeline/item.d.ts +10 -0
- package/lib/es/timeline/item.js +41 -3
- 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?:
|
|
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(
|
|
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
|
}
|
package/lib/cjs/timeline/item.js
CHANGED
|
@@ -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)
|
|
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 &&
|
|
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
|
-
//
|
|
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: `${
|
|
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
|
-
|
|
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,
|
|
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),
|
|
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
|
-
|
|
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>;
|
package/lib/es/skeleton/index.js
CHANGED
|
@@ -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>;
|
package/lib/es/skeleton/item.js
CHANGED
|
@@ -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;
|
|
@@ -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;
|
package/lib/es/steps/fillStep.js
CHANGED
|
@@ -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;
|