@douyinfe/semi-ui 2.1.4 → 2.2.0-beta.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/_base/_story/a11y.jsx +1302 -0
- package/_base/_story/a11y.scss +49 -0
- package/_base/_story/index.stories.js +3 -1
- package/_utils/index.ts +9 -4
- package/button/Button.tsx +1 -0
- package/cascader/__test__/cascader.test.js +221 -0
- package/cascader/_story/cascader.stories.js +138 -0
- package/cascader/index.tsx +37 -21
- package/cascader/item.tsx +4 -2
- package/checkbox/checkbox.tsx +2 -0
- package/checkbox/checkboxGroup.tsx +3 -2
- package/datePicker/__test__/datePicker.test.js +85 -2
- package/datePicker/_story/datePicker.stories.js +29 -1
- package/datePicker/_story/v2/YearButton.jsx +17 -0
- package/datePicker/_story/v2/index.js +1 -0
- package/datePicker/monthsGrid.tsx +12 -1
- package/datePicker/navigation.tsx +55 -29
- package/descriptions/__test__/descriptions.test.js +27 -1
- package/descriptions/_story/descriptions.stories.js +52 -2
- package/descriptions/item.tsx +1 -1
- package/dist/css/semi.css +56 -32
- package/dist/css/semi.min.css +1 -1
- package/dist/umd/semi-ui.js +854 -258
- 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/empty/index.tsx +2 -2
- package/form/_story/form.stories.js +0 -67
- package/form/hoc/withField.tsx +1 -1
- package/gulpfile.js +2 -1
- package/lib/cjs/_base/base.css +2 -2
- package/lib/cjs/_utils/index.d.ts +1 -0
- package/lib/cjs/_utils/index.js +12 -5
- package/lib/cjs/button/Button.d.ts +1 -0
- package/lib/cjs/cascader/index.d.ts +7 -0
- package/lib/cjs/cascader/index.js +35 -22
- package/lib/cjs/cascader/item.d.ts +2 -0
- package/lib/cjs/cascader/item.js +4 -2
- package/lib/cjs/checkbox/checkbox.js +3 -1
- package/lib/cjs/checkbox/checkboxGroup.d.ts +1 -0
- package/lib/cjs/checkbox/checkboxGroup.js +3 -1
- package/lib/cjs/datePicker/monthsGrid.d.ts +1 -0
- package/lib/cjs/datePicker/monthsGrid.js +6 -0
- package/lib/cjs/datePicker/navigation.js +47 -7
- package/lib/cjs/descriptions/item.js +1 -1
- package/lib/cjs/empty/index.d.ts +2 -2
- package/lib/cjs/empty/index.js +19 -18
- package/lib/cjs/form/baseForm.d.ts +6 -0
- package/lib/cjs/form/field.d.ts +6 -0
- package/lib/cjs/form/hoc/withField.js +3 -1
- package/lib/cjs/locale/source/es.d.ts +7 -0
- package/lib/cjs/locale/source/es.js +168 -0
- package/lib/cjs/modal/Modal.d.ts +2 -2
- package/lib/cjs/modal/Modal.js +2 -2
- package/lib/cjs/modal/confirm.d.ts +10 -10
- package/lib/cjs/navigation/index.d.ts +2 -2
- package/lib/cjs/pagination/index.js +9 -4
- package/lib/cjs/rating/item.js +1 -1
- package/lib/cjs/select/index.d.ts +10 -0
- package/lib/cjs/select/index.js +15 -9
- package/lib/cjs/timeline/item.d.ts +5 -2
- package/lib/cjs/timeline/item.js +13 -7
- package/lib/cjs/tree/treeNode.js +0 -2
- package/lib/cjs/upload/fileCard.d.ts +2 -0
- package/lib/cjs/upload/fileCard.js +70 -45
- package/lib/cjs/upload/index.d.ts +23 -2
- package/lib/cjs/upload/index.js +133 -25
- package/lib/cjs/upload/interface.d.ts +3 -0
- package/lib/es/_base/base.css +2 -2
- package/lib/es/_utils/index.d.ts +1 -0
- package/lib/es/_utils/index.js +12 -5
- package/lib/es/button/Button.d.ts +1 -0
- package/lib/es/cascader/index.d.ts +7 -0
- package/lib/es/cascader/index.js +34 -25
- package/lib/es/cascader/item.d.ts +2 -0
- package/lib/es/cascader/item.js +4 -2
- package/lib/es/checkbox/checkbox.js +3 -1
- package/lib/es/checkbox/checkboxGroup.d.ts +1 -0
- package/lib/es/checkbox/checkboxGroup.js +3 -1
- package/lib/es/datePicker/monthsGrid.d.ts +1 -0
- package/lib/es/datePicker/monthsGrid.js +6 -0
- package/lib/es/datePicker/navigation.js +48 -8
- package/lib/es/descriptions/item.js +1 -1
- package/lib/es/empty/index.d.ts +2 -2
- package/lib/es/empty/index.js +19 -18
- package/lib/es/form/baseForm.d.ts +6 -0
- package/lib/es/form/field.d.ts +6 -0
- package/lib/es/form/hoc/withField.js +3 -1
- package/lib/es/locale/source/es.d.ts +7 -0
- package/lib/es/locale/source/es.js +157 -0
- package/lib/es/modal/Modal.d.ts +2 -2
- package/lib/es/modal/Modal.js +2 -2
- package/lib/es/modal/confirm.d.ts +10 -10
- package/lib/es/navigation/index.d.ts +2 -2
- package/lib/es/pagination/index.js +8 -4
- package/lib/es/rating/item.js +1 -1
- package/lib/es/select/index.d.ts +10 -0
- package/lib/es/select/index.js +19 -9
- package/lib/es/timeline/item.d.ts +5 -2
- package/lib/es/timeline/item.js +12 -7
- package/lib/es/tree/treeNode.js +0 -2
- package/lib/es/upload/fileCard.d.ts +2 -0
- package/lib/es/upload/fileCard.js +69 -44
- package/lib/es/upload/index.d.ts +23 -2
- package/lib/es/upload/index.js +133 -24
- package/lib/es/upload/interface.d.ts +3 -0
- package/locale/source/es.ts +160 -0
- package/modal/Modal.tsx +4 -4
- package/navigation/__test__/navigation.test.js +4 -4
- package/navigation/_story/AutoOpen/index.js +1 -1
- package/navigation/_story/WithChildren/index.js +1 -1
- package/navigation/_story/navigation.stories.js +1 -1
- package/navigation/_story/navigation.stories.tsx +4 -4
- package/navigation/index.tsx +2 -2
- package/package.json +17 -9
- package/pagination/_story/pagination.stories.js +11 -0
- package/pagination/index.tsx +9 -4
- package/popover/Arrow.tsx +1 -1
- package/radio/_story/radio.stories.js +12 -1
- package/rating/item.tsx +1 -1
- package/select/_story/select.stories.js +39 -14
- package/select/index.tsx +21 -7
- package/table/_story/DynamicFilters/index.js +13 -16
- package/timeline/__test__/timeline.test.js +17 -1
- package/timeline/_story/timeline.stories.js +70 -6
- package/timeline/item.tsx +11 -6
- package/tooltip/_story/tooltip.stories.js +1 -1
- package/tree/_story/tree.stories.js +2 -2
- package/tree/treeNode.tsx +0 -2
- package/upload/__test__/upload.test.js +50 -1
- package/upload/fileCard.tsx +110 -95
- package/upload/index.tsx +147 -53
- package/upload/interface.ts +3 -0
package/empty/index.tsx
CHANGED
|
@@ -60,7 +60,7 @@ export default class Empty extends BaseComponent<EmptyProps, EmptyState> {
|
|
|
60
60
|
this.observer && this.observer.disconnect();
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
-
observe(mutationsList: any): void {
|
|
63
|
+
observe = (mutationsList: any): void => {
|
|
64
64
|
for (const mutation of mutationsList) {
|
|
65
65
|
if (mutation.type === 'attributes' && mutation.attributeName === 'theme-mode') {
|
|
66
66
|
this.updateMode();
|
|
@@ -68,7 +68,7 @@ export default class Empty extends BaseComponent<EmptyProps, EmptyState> {
|
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
-
updateMode(): void {
|
|
71
|
+
updateMode = (): void => {
|
|
72
72
|
const val = this.body.getAttribute('theme-mode');
|
|
73
73
|
if (val !== this.state.mode) {
|
|
74
74
|
this.setState({ mode: val });
|
|
@@ -432,73 +432,6 @@ FieldDisplayName.story = {
|
|
|
432
432
|
name: 'Field displayName',
|
|
433
433
|
};
|
|
434
434
|
|
|
435
|
-
class ReUseDemo extends React.Component {
|
|
436
|
-
constructor() {
|
|
437
|
-
super();
|
|
438
|
-
this.getFormApi = this.getFormApi.bind(this);
|
|
439
|
-
this.suppressRankOptions = [
|
|
440
|
-
{ label: '不打压', value: 0 },
|
|
441
|
-
{ label: 'top10以下', value: 10 },
|
|
442
|
-
{ label: 'top30以下', value: 30 },
|
|
443
|
-
];
|
|
444
|
-
this.citySuppressRankOptions = [
|
|
445
|
-
{ label: '不打压', value: 0 },
|
|
446
|
-
{ label: 'top3以下', value: 3 },
|
|
447
|
-
{ label: 'top5以下', value: 5 },
|
|
448
|
-
{ label: 'top10以下', value: 10 },
|
|
449
|
-
];
|
|
450
|
-
}
|
|
451
|
-
|
|
452
|
-
getFormApi(formApi) {
|
|
453
|
-
this.formApi = formApi;
|
|
454
|
-
}
|
|
455
|
-
|
|
456
|
-
render() {
|
|
457
|
-
return (
|
|
458
|
-
<Form
|
|
459
|
-
getFormApi={this.getFormApi}
|
|
460
|
-
initValues={{ listType: 'online', attr: { suppress_rank: 0, city_suppress_rank: 5 } }}
|
|
461
|
-
onValueChange={values => console.log(values)}
|
|
462
|
-
style={{ width: 250 }}
|
|
463
|
-
>
|
|
464
|
-
{({ formState }) => (
|
|
465
|
-
<>
|
|
466
|
-
<Form.Select
|
|
467
|
-
field="listType"
|
|
468
|
-
label="榜单类型"
|
|
469
|
-
disabled={this.ifUseOld}
|
|
470
|
-
style={{ width: '100%' }}
|
|
471
|
-
// onChange={val => this.onChangeListType(val)}
|
|
472
|
-
>
|
|
473
|
-
<Option value="online">热点榜</Option>
|
|
474
|
-
<Option value="riseHot">上升热点榜</Option>
|
|
475
|
-
<Option value="sameCity">同城热点榜</Option>
|
|
476
|
-
</Form.Select>
|
|
477
|
-
{formState.values.listType !== 'sameCity' ? (
|
|
478
|
-
<Form.Select
|
|
479
|
-
label="竞品打压类型"
|
|
480
|
-
field="attr.suppress_rank"
|
|
481
|
-
optionList={this.suppressRankOptions}
|
|
482
|
-
/>
|
|
483
|
-
) : (
|
|
484
|
-
<Form.Select
|
|
485
|
-
label="同城竞品打压"
|
|
486
|
-
field="attr.city_suppress_rank"
|
|
487
|
-
optionList={this.citySuppressRankOptions}
|
|
488
|
-
/>
|
|
489
|
-
)}
|
|
490
|
-
</>
|
|
491
|
-
)}
|
|
492
|
-
</Form>
|
|
493
|
-
);
|
|
494
|
-
}
|
|
495
|
-
}
|
|
496
|
-
export const SameFieldSwitchCauseReuse = () => <ReUseDemo />;
|
|
497
|
-
|
|
498
|
-
SameFieldSwitchCauseReuse.story = {
|
|
499
|
-
name: 'same field switch cause reuse',
|
|
500
|
-
};
|
|
501
|
-
|
|
502
435
|
export const _ChildDidMount = () => <ChildDidMount />;
|
|
503
436
|
|
|
504
437
|
_ChildDidMount.story = {
|
package/form/hoc/withField.tsx
CHANGED
|
@@ -75,7 +75,7 @@ function withField<
|
|
|
75
75
|
// 无需注入的直接返回,eg:Group内的checkbox、radio
|
|
76
76
|
// Return without injection, eg: <Checkbox> / <Radio> inside CheckboxGroup/RadioGroup
|
|
77
77
|
if (!shouldInject) {
|
|
78
|
-
return <Component {...rest} />;
|
|
78
|
+
return <Component {...rest} ref={ref} />;
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
// grab formState from context
|
package/gulpfile.js
CHANGED
|
@@ -81,7 +81,8 @@ gulp.task('compileScss', function compileScss() {
|
|
|
81
81
|
realUrl = url.replace(/~@douyinfe\/semi-foundation/, semiUIPath);
|
|
82
82
|
}
|
|
83
83
|
return { url: realUrl };
|
|
84
|
-
}
|
|
84
|
+
},
|
|
85
|
+
charset: false
|
|
85
86
|
}).on('error', sass.logError))
|
|
86
87
|
.pipe(gulp.dest('lib/es'))
|
|
87
88
|
.pipe(gulp.dest('lib/cjs'));
|
package/lib/cjs/_base/base.css
CHANGED
|
@@ -399,7 +399,7 @@ body, body[theme-mode=dark] .semi-always-light {
|
|
|
399
399
|
--semi-color-link-visited: rgba(var(--semi-blue-5), 1);
|
|
400
400
|
--semi-color-border: rgba(var(--semi-grey-9), .08);
|
|
401
401
|
--semi-color-nav-bg: rgba(var(--semi-white), 1);
|
|
402
|
-
--semi-overlay-bg: rgba(22, 22, 26, .6);
|
|
402
|
+
--semi-color-overlay-bg: rgba(22, 22, 26, .6);
|
|
403
403
|
--semi-color-fill-0: rgba(var(--semi-grey-8), .05);
|
|
404
404
|
--semi-color-fill-1: rgba(var(--semi-grey-8), .09);
|
|
405
405
|
--semi-color-fill-2: rgba(var(--semi-grey-8), .13);
|
|
@@ -486,7 +486,7 @@ body[theme-mode=dark], body .semi-always-dark {
|
|
|
486
486
|
--semi-color-link-visited: rgba(var(--semi-blue-5), 1);
|
|
487
487
|
--semi-color-nav-bg: rgba(35, 36, 41, 1);
|
|
488
488
|
--semi-shadow-elevated: inset 0 0 0 1px rgba(255, 255, 255, .1), 0 4px 14px rgba(0, 0, 0, .25);
|
|
489
|
-
--semi-overlay-bg: rgba(22, 22, 26, .6);
|
|
489
|
+
--semi-color-overlay-bg: rgba(22, 22, 26, .6);
|
|
490
490
|
--semi-color-fill-0: rgba(var(--semi-white), .05);
|
|
491
491
|
--semi-color-fill-1: rgba(var(--semi-white), .09);
|
|
492
492
|
--semi-color-fill-2: rgba(var(--semi-white), .13);
|
|
@@ -30,6 +30,7 @@ export declare function cloneDeep(value: any, customizer?: (value: any) => void)
|
|
|
30
30
|
export declare const getHighLightTextHTML: ({ sourceString, searchWords, option }: GetHighLightTextHTMLProps) => (string | React.ReactElement<{
|
|
31
31
|
style: Record<string, any>;
|
|
32
32
|
className: string;
|
|
33
|
+
key: string;
|
|
33
34
|
}, string | React.JSXElementConstructor<any>>)[];
|
|
34
35
|
export interface RegisterMediaQueryOption {
|
|
35
36
|
match?: (e: MediaQueryList | MediaQueryListEvent) => void;
|
package/lib/cjs/_utils/index.js
CHANGED
|
@@ -126,7 +126,7 @@ const getHighLightTextHTML = _ref => {
|
|
|
126
126
|
const markEle = option.highlightTag || 'mark';
|
|
127
127
|
const highlightClassName = option.highlightClassName || '';
|
|
128
128
|
const highlightStyle = option.highlightStyle || {};
|
|
129
|
-
return (0, _map.default)(chunks).call(chunks, chunk => {
|
|
129
|
+
return (0, _map.default)(chunks).call(chunks, (chunk, index) => {
|
|
130
130
|
const {
|
|
131
131
|
end,
|
|
132
132
|
start,
|
|
@@ -137,7 +137,8 @@ const getHighLightTextHTML = _ref => {
|
|
|
137
137
|
if (highlight) {
|
|
138
138
|
return /*#__PURE__*/_react.default.createElement(markEle, {
|
|
139
139
|
style: highlightStyle,
|
|
140
|
-
className: highlightClassName
|
|
140
|
+
className: highlightClassName,
|
|
141
|
+
key: text + index
|
|
141
142
|
}, text);
|
|
142
143
|
} else {
|
|
143
144
|
return text;
|
|
@@ -173,11 +174,17 @@ const registerMediaQuery = (media, _ref2) => {
|
|
|
173
174
|
}
|
|
174
175
|
|
|
175
176
|
callInInit && handlerMediaChange(mediaQueryList);
|
|
176
|
-
|
|
177
|
-
|
|
177
|
+
|
|
178
|
+
if (Object.prototype.hasOwnProperty.call(mediaQueryList, 'addEventListener')) {
|
|
179
|
+
mediaQueryList.addEventListener('change', handlerMediaChange);
|
|
180
|
+
return () => mediaQueryList.removeEventListener('change', handlerMediaChange);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
mediaQueryList.addListener(handlerMediaChange);
|
|
184
|
+
return () => mediaQueryList.removeListener(handlerMediaChange);
|
|
178
185
|
}
|
|
179
186
|
|
|
180
|
-
return
|
|
187
|
+
return () => undefined;
|
|
181
188
|
};
|
|
182
189
|
/**
|
|
183
190
|
* Determine whether the incoming element is a built-in icon
|
|
@@ -7,6 +7,7 @@ export declare type Size = 'default' | 'small' | 'large';
|
|
|
7
7
|
export declare type Theme = 'solid' | 'borderless' | 'light';
|
|
8
8
|
export declare type Type = 'primary' | 'secondary' | 'tertiary' | 'warning' | 'danger';
|
|
9
9
|
export interface ButtonProps {
|
|
10
|
+
id?: string;
|
|
10
11
|
block?: boolean;
|
|
11
12
|
circle?: boolean;
|
|
12
13
|
disabled?: boolean;
|
|
@@ -105,14 +105,18 @@ declare class Cascader extends BaseComponent<CascaderProps, CascaderState> {
|
|
|
105
105
|
showRestTagsPopover: PropTypes.Requireable<boolean>;
|
|
106
106
|
restTagsPopoverProps: PropTypes.Requireable<object>;
|
|
107
107
|
max: PropTypes.Requireable<number>;
|
|
108
|
+
separator: PropTypes.Requireable<string>;
|
|
108
109
|
onExceed: PropTypes.Requireable<(...args: any[]) => any>;
|
|
109
110
|
onClear: PropTypes.Requireable<(...args: any[]) => any>;
|
|
110
111
|
loadData: PropTypes.Requireable<(...args: any[]) => any>;
|
|
111
112
|
onLoad: PropTypes.Requireable<(...args: any[]) => any>;
|
|
112
113
|
loadedKeys: PropTypes.Requireable<any[]>;
|
|
113
114
|
disableStrictly: PropTypes.Requireable<boolean>;
|
|
115
|
+
leafOnly: PropTypes.Requireable<boolean>;
|
|
116
|
+
enableLeafClick: PropTypes.Requireable<boolean>;
|
|
114
117
|
};
|
|
115
118
|
static defaultProps: {
|
|
119
|
+
leafOnly: boolean;
|
|
116
120
|
arrowIcon: JSX.Element;
|
|
117
121
|
stopPropagation: boolean;
|
|
118
122
|
motion: boolean;
|
|
@@ -129,6 +133,7 @@ declare class Cascader extends BaseComponent<CascaderProps, CascaderState> {
|
|
|
129
133
|
filterLeafOnly: boolean;
|
|
130
134
|
showRestTagsPopover: boolean;
|
|
131
135
|
restTagsPopoverProps: {};
|
|
136
|
+
separator: string;
|
|
132
137
|
size: "default";
|
|
133
138
|
treeNodeFilterProp: "label";
|
|
134
139
|
displayProp: "label";
|
|
@@ -138,6 +143,7 @@ declare class Cascader extends BaseComponent<CascaderProps, CascaderState> {
|
|
|
138
143
|
onClear: (...args: any[]) => void;
|
|
139
144
|
onDropdownVisibleChange: (...args: any[]) => void;
|
|
140
145
|
onListScroll: (...args: any[]) => void;
|
|
146
|
+
enableLeafClick: boolean;
|
|
141
147
|
};
|
|
142
148
|
options: any;
|
|
143
149
|
isEmpty: boolean;
|
|
@@ -145,6 +151,7 @@ declare class Cascader extends BaseComponent<CascaderProps, CascaderState> {
|
|
|
145
151
|
triggerRef: React.RefObject<HTMLDivElement>;
|
|
146
152
|
optionsRef: React.RefObject<any>;
|
|
147
153
|
clickOutsideHandler: any;
|
|
154
|
+
mergeType: string;
|
|
148
155
|
constructor(props: CascaderProps);
|
|
149
156
|
get adapter(): CascaderAdapter;
|
|
150
157
|
static getDerivedStateFromProps(props: CascaderProps, prevState: CascaderState): Partial<CascaderState>;
|
|
@@ -28,6 +28,8 @@ var _isArray = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-st
|
|
|
28
28
|
|
|
29
29
|
var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
|
|
30
30
|
|
|
31
|
+
var _flatten2 = _interopRequireDefault(require("lodash/flatten"));
|
|
32
|
+
|
|
31
33
|
var _noop2 = _interopRequireDefault(require("lodash/noop"));
|
|
32
34
|
|
|
33
35
|
var _isNumber2 = _interopRequireDefault(require("lodash/isNumber"));
|
|
@@ -175,6 +177,7 @@ class Cascader extends _baseComponent.default {
|
|
|
175
177
|
dropdownStyle,
|
|
176
178
|
loadData,
|
|
177
179
|
emptyContent,
|
|
180
|
+
separator,
|
|
178
181
|
topSlot,
|
|
179
182
|
bottomSlot,
|
|
180
183
|
showNext,
|
|
@@ -191,6 +194,7 @@ class Cascader extends _baseComponent.default {
|
|
|
191
194
|
}, topSlot, /*#__PURE__*/_react.default.createElement(_item.default, {
|
|
192
195
|
activeKeys: activeKeys,
|
|
193
196
|
selectedKeys: selectedKeys,
|
|
197
|
+
separator: separator,
|
|
194
198
|
loadedKeys: loadedKeys,
|
|
195
199
|
loadingKeys: loadingKeys,
|
|
196
200
|
onItemClick: this.handleItemClick,
|
|
@@ -243,9 +247,9 @@ class Cascader extends _baseComponent.default {
|
|
|
243
247
|
} = this.props;
|
|
244
248
|
const {
|
|
245
249
|
checkedKeys,
|
|
246
|
-
|
|
250
|
+
resolvedCheckedKeys
|
|
247
251
|
} = this.state;
|
|
248
|
-
const realKeys =
|
|
252
|
+
const realKeys = this.mergeType === _constants.strings.NONE_MERGE_TYPE ? checkedKeys : resolvedCheckedKeys;
|
|
249
253
|
const displayTag = [];
|
|
250
254
|
const hiddenTag = [];
|
|
251
255
|
(0, _forEach.default)(_context2 = [...realKeys]).call(_context2, (checkedKey, idx) => {
|
|
@@ -333,20 +337,23 @@ class Cascader extends _baseComponent.default {
|
|
|
333
337
|
const {
|
|
334
338
|
disabled,
|
|
335
339
|
triggerRender,
|
|
336
|
-
multiple
|
|
337
|
-
autoMergeValue
|
|
340
|
+
multiple
|
|
338
341
|
} = this.props;
|
|
339
342
|
const {
|
|
340
343
|
selectedKeys,
|
|
341
344
|
inputValue,
|
|
342
345
|
inputPlaceHolder,
|
|
343
|
-
|
|
346
|
+
resolvedCheckedKeys,
|
|
344
347
|
checkedKeys
|
|
345
348
|
} = this.state;
|
|
346
349
|
let realValue;
|
|
347
350
|
|
|
348
351
|
if (multiple) {
|
|
349
|
-
|
|
352
|
+
if (this.mergeType === _constants.strings.NONE_MERGE_TYPE) {
|
|
353
|
+
realValue = checkedKeys;
|
|
354
|
+
} else {
|
|
355
|
+
realValue = resolvedCheckedKeys;
|
|
356
|
+
}
|
|
350
357
|
} else {
|
|
351
358
|
realValue = [...selectedKeys][0];
|
|
352
359
|
}
|
|
@@ -526,8 +533,8 @@ class Cascader extends _baseComponent.default {
|
|
|
526
533
|
/* Key of half checked node, when multiple */
|
|
527
534
|
halfCheckedKeys: new _set.default([]),
|
|
528
535
|
|
|
529
|
-
/* Auto merged checkedKeys, when multiple */
|
|
530
|
-
|
|
536
|
+
/* Auto merged checkedKeys or leaf checkedKeys, when multiple */
|
|
537
|
+
resolvedCheckedKeys: new _set.default([]),
|
|
531
538
|
|
|
532
539
|
/* Keys of loaded item */
|
|
533
540
|
loadedKeys: new _set.default(),
|
|
@@ -540,6 +547,7 @@ class Cascader extends _baseComponent.default {
|
|
|
540
547
|
};
|
|
541
548
|
this.options = {};
|
|
542
549
|
this.isEmpty = false;
|
|
550
|
+
this.mergeType = (0, _util.calcMergeType)(props.autoMergeValue, props.leafOnly);
|
|
543
551
|
this.inputRef = /*#__PURE__*/_react.default.createRef();
|
|
544
552
|
this.triggerRef = /*#__PURE__*/_react.default.createRef();
|
|
545
553
|
this.optionsRef = /*#__PURE__*/_react.default.createRef();
|
|
@@ -684,7 +692,9 @@ class Cascader extends _baseComponent.default {
|
|
|
684
692
|
multiple,
|
|
685
693
|
value,
|
|
686
694
|
defaultValue,
|
|
687
|
-
onChangeWithObject
|
|
695
|
+
onChangeWithObject,
|
|
696
|
+
leafOnly,
|
|
697
|
+
autoMergeValue
|
|
688
698
|
} = props;
|
|
689
699
|
const {
|
|
690
700
|
prevProps
|
|
@@ -745,22 +755,20 @@ class Cascader extends _baseComponent.default {
|
|
|
745
755
|
realKeys = formatKeys;
|
|
746
756
|
}
|
|
747
757
|
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
const calRes = (0, _treeUtil.calcCheckedKeys)(v, keyEntities);
|
|
752
|
-
checkedKeys = new _set.default([...checkedKeys, ...calRes.checkedKeys]);
|
|
753
|
-
halfCheckedKeys = new _set.default([...halfCheckedKeys, ...calRes.halfCheckedKeys]);
|
|
754
|
-
}); // disableStrictly
|
|
758
|
+
const calRes = (0, _treeUtil.calcCheckedKeys)((0, _flatten2.default)(realKeys), keyEntities);
|
|
759
|
+
const checkedKeys = new _set.default(calRes.checkedKeys);
|
|
760
|
+
const halfCheckedKeys = new _set.default(calRes.halfCheckedKeys); // disableStrictly
|
|
755
761
|
|
|
756
762
|
if (props.disableStrictly) {
|
|
757
763
|
newState.disabledKeys = (0, _treeUtil.calcDisabledKeys)(keyEntities);
|
|
758
764
|
}
|
|
759
765
|
|
|
766
|
+
const isLeafOnlyMerge = (0, _util.calcMergeType)(autoMergeValue, leafOnly) === _constants.strings.LEAF_ONLY_MERGE_TYPE;
|
|
767
|
+
|
|
760
768
|
newState.prevProps = props;
|
|
761
769
|
newState.checkedKeys = checkedKeys;
|
|
762
770
|
newState.halfCheckedKeys = halfCheckedKeys;
|
|
763
|
-
newState.
|
|
771
|
+
newState.resolvedCheckedKeys = new _set.default((0, _treeUtil.normalizeKeyList)(checkedKeys, keyEntities, isLeafOnlyMerge));
|
|
764
772
|
}
|
|
765
773
|
}
|
|
766
774
|
|
|
@@ -794,7 +802,6 @@ class Cascader extends _baseComponent.default {
|
|
|
794
802
|
const {
|
|
795
803
|
size,
|
|
796
804
|
disabled,
|
|
797
|
-
autoMergeValue,
|
|
798
805
|
placeholder,
|
|
799
806
|
maxTagCount,
|
|
800
807
|
showRestTagsPopover,
|
|
@@ -804,11 +811,11 @@ class Cascader extends _baseComponent.default {
|
|
|
804
811
|
inputValue,
|
|
805
812
|
checkedKeys,
|
|
806
813
|
keyEntities,
|
|
807
|
-
|
|
814
|
+
resolvedCheckedKeys
|
|
808
815
|
} = this.state;
|
|
809
816
|
const tagInputcls = (0, _classnames.default)("".concat(prefixcls, "-tagInput-wrapper"));
|
|
810
817
|
const tagValue = [];
|
|
811
|
-
const realKeys =
|
|
818
|
+
const realKeys = this.mergeType === _constants.strings.NONE_MERGE_TYPE ? checkedKeys : resolvedCheckedKeys;
|
|
812
819
|
(0, _forEach.default)(_context3 = [...realKeys]).call(_context3, checkedKey => {
|
|
813
820
|
if (!(0, _isEmpty2.default)(keyEntities[checkedKey])) {
|
|
814
821
|
tagValue.push(keyEntities[checkedKey].valuePath);
|
|
@@ -956,14 +963,18 @@ Cascader.propTypes = {
|
|
|
956
963
|
showRestTagsPopover: _propTypes.default.bool,
|
|
957
964
|
restTagsPopoverProps: _propTypes.default.object,
|
|
958
965
|
max: _propTypes.default.number,
|
|
966
|
+
separator: _propTypes.default.string,
|
|
959
967
|
onExceed: _propTypes.default.func,
|
|
960
968
|
onClear: _propTypes.default.func,
|
|
961
969
|
loadData: _propTypes.default.func,
|
|
962
970
|
onLoad: _propTypes.default.func,
|
|
963
971
|
loadedKeys: _propTypes.default.array,
|
|
964
|
-
disableStrictly: _propTypes.default.bool
|
|
972
|
+
disableStrictly: _propTypes.default.bool,
|
|
973
|
+
leafOnly: _propTypes.default.bool,
|
|
974
|
+
enableLeafClick: _propTypes.default.bool
|
|
965
975
|
};
|
|
966
976
|
Cascader.defaultProps = {
|
|
977
|
+
leafOnly: false,
|
|
967
978
|
arrowIcon: /*#__PURE__*/_react.default.createElement(_semiIcons.IconChevronDown, null),
|
|
968
979
|
stopPropagation: true,
|
|
969
980
|
motion: true,
|
|
@@ -980,6 +991,7 @@ Cascader.defaultProps = {
|
|
|
980
991
|
filterLeafOnly: true,
|
|
981
992
|
showRestTagsPopover: false,
|
|
982
993
|
restTagsPopoverProps: {},
|
|
994
|
+
separator: ' / ',
|
|
983
995
|
size: 'default',
|
|
984
996
|
treeNodeFilterProp: 'label',
|
|
985
997
|
displayProp: 'label',
|
|
@@ -988,7 +1000,8 @@ Cascader.defaultProps = {
|
|
|
988
1000
|
onExceed: _noop2.default,
|
|
989
1001
|
onClear: _noop2.default,
|
|
990
1002
|
onDropdownVisibleChange: _noop2.default,
|
|
991
|
-
onListScroll: _noop2.default
|
|
1003
|
+
onListScroll: _noop2.default,
|
|
1004
|
+
enableLeafClick: false
|
|
992
1005
|
};
|
|
993
1006
|
var _default = Cascader;
|
|
994
1007
|
exports.default = _default;
|
|
@@ -33,6 +33,7 @@ export interface CascaderItemProps {
|
|
|
33
33
|
emptyContent: React.ReactNode;
|
|
34
34
|
loadData: (selectOptions: CascaderData[]) => Promise<void>;
|
|
35
35
|
data: Array<Data | Entity>;
|
|
36
|
+
separator: string;
|
|
36
37
|
multiple: boolean;
|
|
37
38
|
checkedKeys: Set<string>;
|
|
38
39
|
halfCheckedKeys: Set<string>;
|
|
@@ -50,6 +51,7 @@ export default class Item extends PureComponent<CascaderItemProps> {
|
|
|
50
51
|
checkedKeys: PropTypes.Requireable<object>;
|
|
51
52
|
halfCheckedKeys: PropTypes.Requireable<object>;
|
|
52
53
|
onItemCheckboxClick: PropTypes.Requireable<(...args: any[]) => any>;
|
|
54
|
+
separator: PropTypes.Requireable<string>;
|
|
53
55
|
keyword: PropTypes.Requireable<string>;
|
|
54
56
|
};
|
|
55
57
|
static defaultProps: {
|
package/lib/cjs/cascader/item.js
CHANGED
|
@@ -151,7 +151,8 @@ class Item extends _react.PureComponent {
|
|
|
151
151
|
this.highlight = searchText => {
|
|
152
152
|
const content = [];
|
|
153
153
|
const {
|
|
154
|
-
keyword
|
|
154
|
+
keyword,
|
|
155
|
+
separator
|
|
155
156
|
} = this.props;
|
|
156
157
|
(0, _forEach.default)(searchText).call(searchText, (item, idx) => {
|
|
157
158
|
if (typeof item === 'string' && (0, _includes2.default)(item, keyword)) {
|
|
@@ -174,7 +175,7 @@ class Item extends _react.PureComponent {
|
|
|
174
175
|
}
|
|
175
176
|
|
|
176
177
|
if (idx !== searchText.length - 1) {
|
|
177
|
-
content.push(
|
|
178
|
+
content.push(separator);
|
|
178
179
|
}
|
|
179
180
|
});
|
|
180
181
|
return content;
|
|
@@ -349,6 +350,7 @@ Item.propTypes = {
|
|
|
349
350
|
checkedKeys: _propTypes.default.object,
|
|
350
351
|
halfCheckedKeys: _propTypes.default.object,
|
|
351
352
|
onItemCheckboxClick: _propTypes.default.func,
|
|
353
|
+
separator: _propTypes.default.string,
|
|
352
354
|
keyword: _propTypes.default.string
|
|
353
355
|
};
|
|
354
356
|
Item.defaultProps = {
|
|
@@ -108,7 +108,8 @@ class Checkbox extends _baseComponent.default {
|
|
|
108
108
|
onMouseEnter,
|
|
109
109
|
onMouseLeave,
|
|
110
110
|
extra,
|
|
111
|
-
value
|
|
111
|
+
value,
|
|
112
|
+
id
|
|
112
113
|
} = this.props;
|
|
113
114
|
const {
|
|
114
115
|
checked
|
|
@@ -165,6 +166,7 @@ class Checkbox extends _baseComponent.default {
|
|
|
165
166
|
return /*#__PURE__*/_react.default.createElement("span", {
|
|
166
167
|
style: style,
|
|
167
168
|
className: wrapper,
|
|
169
|
+
id: id,
|
|
168
170
|
onMouseEnter: onMouseEnter,
|
|
169
171
|
onMouseLeave: onMouseLeave,
|
|
170
172
|
onClick: this.handleChange
|
|
@@ -91,6 +91,7 @@ class CheckboxGroup extends _baseComponent.default {
|
|
|
91
91
|
prefixCls,
|
|
92
92
|
direction,
|
|
93
93
|
className,
|
|
94
|
+
id,
|
|
94
95
|
style,
|
|
95
96
|
type
|
|
96
97
|
} = this.props;
|
|
@@ -140,7 +141,8 @@ class CheckboxGroup extends _baseComponent.default {
|
|
|
140
141
|
|
|
141
142
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
142
143
|
className: prefixClsDisplay,
|
|
143
|
-
style: style
|
|
144
|
+
style: style,
|
|
145
|
+
id: id
|
|
144
146
|
}, /*#__PURE__*/_react.default.createElement(_context7.Context.Provider, {
|
|
145
147
|
value: {
|
|
146
148
|
checkboxGroup: {
|
|
@@ -81,6 +81,7 @@ export default class MonthsGrid extends BaseComponent<MonthsGridProps, MonthsGri
|
|
|
81
81
|
renderMonth(month: Date, panelType: PanelType): JSX.Element;
|
|
82
82
|
handleWeeksRowNumChange: (weeksRowNum: number, panelType: PanelType) => void;
|
|
83
83
|
reselect: () => void;
|
|
84
|
+
getYAMOpenType: () => "left" | "right" | "none" | "both";
|
|
84
85
|
renderTimePicker(panelType: PanelType, panelDetail: MonthInfo): JSX.Element;
|
|
85
86
|
renderYearAndMonth(panelType: PanelType, panelDetail: MonthInfo): JSX.Element;
|
|
86
87
|
renderSwitch(panelType: PanelType): JSX.Element;
|
|
@@ -157,6 +157,10 @@ class MonthsGrid extends _baseComponent.default {
|
|
|
157
157
|
});
|
|
158
158
|
};
|
|
159
159
|
|
|
160
|
+
this.getYAMOpenType = () => {
|
|
161
|
+
return this.foundation.getYAMOpenType();
|
|
162
|
+
};
|
|
163
|
+
|
|
160
164
|
let nowDate = (0, _isArray.default)(props.defaultPickerValue) ? props.defaultPickerValue[0] : props.defaultPickerValue;
|
|
161
165
|
const validFormat = props.format || (0, _getDefaultFormatToken.getDefaultFormatTokenByType)(props.type);
|
|
162
166
|
|
|
@@ -644,9 +648,11 @@ class MonthsGrid extends _baseComponent.default {
|
|
|
644
648
|
content = 'year month';
|
|
645
649
|
}
|
|
646
650
|
|
|
651
|
+
const yearOpenType = this.getYAMOpenType();
|
|
647
652
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
648
653
|
className: monthGridCls,
|
|
649
654
|
"x-type": type,
|
|
655
|
+
"x-panel-yearandmonth-open-type": yearOpenType,
|
|
650
656
|
ref: current => this.cacheRefCurrent('monthGrid', current)
|
|
651
657
|
}, content);
|
|
652
658
|
}
|
|
@@ -48,6 +48,8 @@ class Navigation extends _react.PureComponent {
|
|
|
48
48
|
onMonthClick,
|
|
49
49
|
onNextMonth,
|
|
50
50
|
onPrevMonth,
|
|
51
|
+
onPrevYear,
|
|
52
|
+
onNextYear,
|
|
51
53
|
density,
|
|
52
54
|
shouldBimonthSwitch,
|
|
53
55
|
panelType
|
|
@@ -55,37 +57,75 @@ class Navigation extends _react.PureComponent {
|
|
|
55
57
|
const btnTheme = 'borderless';
|
|
56
58
|
const iconBtnSize = density === 'compact' ? 'default' : 'large';
|
|
57
59
|
const btnNoHorizontalPadding = true;
|
|
58
|
-
const buttonSize = density === 'compact' ? 'small' : 'default';
|
|
60
|
+
const buttonSize = density === 'compact' ? 'small' : 'default';
|
|
61
|
+
const isLeftPanel = panelType === _constants.strings.PANEL_TYPE_LEFT;
|
|
62
|
+
const isRightPanel = panelType === _constants.strings.PANEL_TYPE_RIGHT; // syncSwitchMonth and the current panel is the left
|
|
59
63
|
|
|
60
|
-
const
|
|
64
|
+
const hiddenLeftPanelRightButtons = shouldBimonthSwitch && isLeftPanel; // syncSwitchMonth and the current panel is the right
|
|
65
|
+
|
|
66
|
+
const hiddenRightPanelLeftButtons = shouldBimonthSwitch && isRightPanel; // `visibility: hidden` will keep the icon in position
|
|
67
|
+
|
|
68
|
+
const leftButtonStyle = {};
|
|
69
|
+
const rightButtonStyle = {};
|
|
70
|
+
|
|
71
|
+
if (hiddenRightPanelLeftButtons) {
|
|
72
|
+
leftButtonStyle.visibility = 'hidden';
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
if (hiddenLeftPanelRightButtons) {
|
|
76
|
+
rightButtonStyle.visibility = 'hidden';
|
|
77
|
+
}
|
|
61
78
|
|
|
62
|
-
const bimonthSwitchWithRightPanel = shouldBimonthSwitch && panelType === _constants.strings.PANEL_TYPE_RIGHT;
|
|
63
79
|
const ref = forwardRef || this.navRef;
|
|
64
80
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
65
81
|
className: prefixCls,
|
|
66
82
|
ref: ref
|
|
67
|
-
},
|
|
83
|
+
}, /*#__PURE__*/_react.default.createElement(_iconButton.default, {
|
|
84
|
+
key: "double-chevron-left",
|
|
85
|
+
icon: /*#__PURE__*/_react.default.createElement(_semiIcons.IconDoubleChevronLeft, {
|
|
86
|
+
size: iconBtnSize
|
|
87
|
+
}),
|
|
88
|
+
size: buttonSize,
|
|
89
|
+
theme: btnTheme,
|
|
90
|
+
noHorizontalPadding: btnNoHorizontalPadding,
|
|
91
|
+
onClick: onPrevYear,
|
|
92
|
+
style: leftButtonStyle
|
|
93
|
+
}), /*#__PURE__*/_react.default.createElement(_iconButton.default, {
|
|
94
|
+
key: "chevron-left",
|
|
68
95
|
icon: /*#__PURE__*/_react.default.createElement(_semiIcons.IconChevronLeft, {
|
|
69
96
|
size: iconBtnSize
|
|
70
97
|
}),
|
|
71
98
|
size: buttonSize,
|
|
72
99
|
onClick: onPrevMonth,
|
|
73
100
|
theme: btnTheme,
|
|
74
|
-
noHorizontalPadding: btnNoHorizontalPadding
|
|
101
|
+
noHorizontalPadding: btnNoHorizontalPadding,
|
|
102
|
+
style: leftButtonStyle
|
|
75
103
|
}), /*#__PURE__*/_react.default.createElement("div", {
|
|
76
104
|
className: "".concat(prefixCls, "-month")
|
|
77
105
|
}, /*#__PURE__*/_react.default.createElement(_button.default, {
|
|
78
106
|
onClick: onMonthClick,
|
|
79
107
|
theme: btnTheme,
|
|
80
108
|
size: buttonSize
|
|
81
|
-
}, /*#__PURE__*/_react.default.createElement("span", null, monthText))),
|
|
109
|
+
}, /*#__PURE__*/_react.default.createElement("span", null, monthText))), /*#__PURE__*/_react.default.createElement(_iconButton.default, {
|
|
110
|
+
key: "chevron-right",
|
|
82
111
|
icon: /*#__PURE__*/_react.default.createElement(_semiIcons.IconChevronRight, {
|
|
83
112
|
size: iconBtnSize
|
|
84
113
|
}),
|
|
85
114
|
size: buttonSize,
|
|
86
115
|
onClick: onNextMonth,
|
|
87
116
|
theme: btnTheme,
|
|
88
|
-
noHorizontalPadding: btnNoHorizontalPadding
|
|
117
|
+
noHorizontalPadding: btnNoHorizontalPadding,
|
|
118
|
+
style: rightButtonStyle
|
|
119
|
+
}), /*#__PURE__*/_react.default.createElement(_iconButton.default, {
|
|
120
|
+
key: "double-chevron-right",
|
|
121
|
+
icon: /*#__PURE__*/_react.default.createElement(_semiIcons.IconDoubleChevronRight, {
|
|
122
|
+
size: iconBtnSize
|
|
123
|
+
}),
|
|
124
|
+
size: buttonSize,
|
|
125
|
+
theme: btnTheme,
|
|
126
|
+
noHorizontalPadding: btnNoHorizontalPadding,
|
|
127
|
+
onClick: onNextYear,
|
|
128
|
+
style: rightButtonStyle
|
|
89
129
|
}));
|
|
90
130
|
}
|
|
91
131
|
|
|
@@ -60,7 +60,7 @@ class Item extends _react.PureComponent {
|
|
|
60
60
|
className: "".concat(prefixCls, "-item")
|
|
61
61
|
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
62
62
|
className: keyCls
|
|
63
|
-
},
|
|
63
|
+
}, itemKey, ":"), /*#__PURE__*/_react.default.createElement("span", {
|
|
64
64
|
className: valCls
|
|
65
65
|
}, typeof children === 'function' ? children() : children))) : /*#__PURE__*/_react.default.createElement("tr", {
|
|
66
66
|
className: className,
|
package/lib/cjs/empty/index.d.ts
CHANGED
|
@@ -31,8 +31,8 @@ export default class Empty extends BaseComponent<EmptyProps, EmptyState> {
|
|
|
31
31
|
constructor(props: EmptyProps);
|
|
32
32
|
componentDidMount(): void;
|
|
33
33
|
componentWillUnmount(): void;
|
|
34
|
-
observe(mutationsList: any)
|
|
35
|
-
updateMode()
|
|
34
|
+
observe: (mutationsList: any) => void;
|
|
35
|
+
updateMode: () => void;
|
|
36
36
|
render(): JSX.Element;
|
|
37
37
|
}
|
|
38
38
|
export {};
|