@douyinfe/semi-ui 2.4.0 → 2.5.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.
- package/cascader/__test__/cascader.test.js +24 -0
- package/cascader/_story/cascader.stories.js +73 -0
- package/cascader/index.tsx +5 -2
- package/datePicker/_story/v2/FixInputRangeFocus.jsx +25 -0
- package/datePicker/_story/v2/index.js +2 -1
- package/datePicker/datePicker.tsx +4 -0
- package/dist/css/semi.css +51 -27
- package/dist/css/semi.min.css +1 -1
- package/dist/umd/semi-ui.js +481 -182
- 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/form/_story/demo.jsx +1 -0
- package/input/index.tsx +1 -0
- package/input/textarea.tsx +1 -1
- package/lib/cjs/autoComplete/index.d.ts +1 -1
- package/lib/cjs/cascader/index.js +6 -0
- package/lib/cjs/datePicker/datePicker.js +16 -8
- package/lib/cjs/dropdown/index.d.ts +1 -1
- package/lib/cjs/form/baseForm.d.ts +1 -1
- package/lib/cjs/form/field.d.ts +1 -1
- package/lib/cjs/input/index.js +2 -1
- package/lib/cjs/input/textarea.js +1 -1
- package/lib/cjs/select/index.d.ts +3 -3
- package/lib/cjs/select/index.js +32 -28
- package/lib/cjs/select/option.js +2 -2
- package/lib/cjs/select/virtualRow.js +2 -2
- package/lib/cjs/table/Table.d.ts +1 -1
- package/lib/cjs/table/Table.js +8 -2
- package/lib/cjs/table/interface.d.ts +1 -0
- package/lib/cjs/tabs/interface.d.ts +1 -1
- package/lib/cjs/timePicker/TimePicker.js +2 -1
- package/lib/cjs/tooltip/index.d.ts +1 -1
- package/lib/cjs/tooltip/index.js +6 -2
- package/lib/cjs/tree/index.d.ts +2 -0
- package/lib/cjs/tree/index.js +15 -8
- package/lib/cjs/treeSelect/index.d.ts +2 -0
- package/lib/cjs/treeSelect/index.js +64 -27
- package/lib/cjs/upload/fileCard.js +31 -22
- package/lib/cjs/upload/index.d.ts +6 -0
- package/lib/cjs/upload/index.js +15 -8
- package/lib/cjs/upload/interface.d.ts +8 -6
- package/lib/es/autoComplete/index.d.ts +1 -1
- package/lib/es/cascader/index.js +5 -0
- package/lib/es/datePicker/datePicker.js +16 -8
- package/lib/es/dropdown/index.d.ts +1 -1
- package/lib/es/form/baseForm.d.ts +1 -1
- package/lib/es/form/field.d.ts +1 -1
- package/lib/es/input/index.js +2 -1
- package/lib/es/input/textarea.js +1 -1
- package/lib/es/select/index.d.ts +3 -3
- package/lib/es/select/index.js +30 -26
- package/lib/es/select/option.js +2 -2
- package/lib/es/select/virtualRow.js +2 -2
- package/lib/es/table/Table.d.ts +1 -1
- package/lib/es/table/Table.js +10 -2
- package/lib/es/table/interface.d.ts +1 -0
- package/lib/es/tabs/interface.d.ts +1 -1
- package/lib/es/timePicker/TimePicker.js +2 -1
- package/lib/es/tooltip/index.d.ts +1 -1
- package/lib/es/tooltip/index.js +6 -2
- package/lib/es/tree/index.d.ts +2 -0
- package/lib/es/tree/index.js +15 -8
- package/lib/es/treeSelect/index.d.ts +2 -0
- package/lib/es/treeSelect/index.js +64 -27
- package/lib/es/upload/fileCard.js +31 -24
- package/lib/es/upload/index.d.ts +6 -0
- package/lib/es/upload/index.js +14 -8
- package/lib/es/upload/interface.d.ts +8 -6
- package/package.json +9 -8
- package/select/index.tsx +18 -19
- package/select/option.tsx +2 -2
- package/select/virtualRow.tsx +2 -2
- package/table/Table.tsx +7 -2
- package/table/_story/table.stories.js +1 -2
- package/table/_story/v2/FixedHeaderMerge/index.jsx +98 -0
- package/table/_story/v2/FixedResizable/index.jsx +114 -0
- package/table/_story/v2/defaultFilteredValue.tsx +123 -0
- package/table/_story/v2/index.js +5 -0
- package/table/interface.ts +1 -0
- package/tabs/interface.ts +1 -1
- package/timePicker/TimePicker.tsx +1 -0
- package/tooltip/__test__/tooltip.test.js +48 -4
- package/tooltip/_story/tooltip.stories.js +83 -1
- package/tooltip/index.tsx +4 -4
- package/tree/__test__/treeMultiple.test.js +94 -0
- package/tree/_story/tree.stories.js +169 -0
- package/tree/index.tsx +12 -5
- package/treeSelect/__test__/treeMultiple.test.js +94 -0
- package/treeSelect/_story/treeSelect.stories.js +242 -0
- package/treeSelect/index.tsx +72 -40
- package/upload/_story/upload.stories.js +22 -6
- package/upload/fileCard.tsx +23 -23
- package/upload/index.tsx +15 -6
- package/upload/interface.ts +7 -5
|
@@ -195,6 +195,30 @@ describe('Cascader', () => {
|
|
|
195
195
|
// done();
|
|
196
196
|
});
|
|
197
197
|
|
|
198
|
+
it('dynamic treeData in multiple and uncontrolled mode', () => {
|
|
199
|
+
const cascader = render({
|
|
200
|
+
defaultValue: 'Yazhou',
|
|
201
|
+
multiple: true,
|
|
202
|
+
});
|
|
203
|
+
const opt = document.querySelectorAll(`.${BASE_CLASS_PREFIX}-cascader-selection-multiple .${BASE_CLASS_PREFIX}-tag`);
|
|
204
|
+
expect(opt.length).toEqual(1);
|
|
205
|
+
cascader.setProps({ treeData: treeDataWithDisabled });
|
|
206
|
+
cascader.update();
|
|
207
|
+
expect(opt.length).toEqual(1);
|
|
208
|
+
});
|
|
209
|
+
|
|
210
|
+
it('dynamic treeData in multiple and controlled mode', () => {
|
|
211
|
+
const cascader = render({
|
|
212
|
+
value: 'Yazhou',
|
|
213
|
+
multiple: true,
|
|
214
|
+
});
|
|
215
|
+
const opt = document.querySelectorAll(`.${BASE_CLASS_PREFIX}-cascader-selection-multiple .${BASE_CLASS_PREFIX}-tag`);
|
|
216
|
+
expect(opt.length).toEqual(1);
|
|
217
|
+
cascader.setProps({ treeData: treeDataWithDisabled });
|
|
218
|
+
cascader.update();
|
|
219
|
+
expect(opt.length).toEqual(1);
|
|
220
|
+
});
|
|
221
|
+
|
|
198
222
|
it('getPopupContainer', () => {
|
|
199
223
|
let cascader = render({
|
|
200
224
|
getPopupContainer: getPopupContainer,
|
|
@@ -1348,4 +1348,77 @@ export const LeafOnly = () => {
|
|
|
1348
1348
|
/>
|
|
1349
1349
|
</div>
|
|
1350
1350
|
);
|
|
1351
|
+
}
|
|
1352
|
+
|
|
1353
|
+
export const DynamicTreeData = () => {
|
|
1354
|
+
const [treeDataDemo1,setTreeData1]=useState(treeData2);
|
|
1355
|
+
const [treeDataDemo2,setTreeData2]=useState(treeData2);
|
|
1356
|
+
const [treeDataDemo3,setTreeData3]=useState(treeData2);
|
|
1357
|
+
const [treeDataDemo4,setTreeData4]=useState(treeData2);
|
|
1358
|
+
const [treeDataDemo5,setTreeData5]=useState(treeData2);
|
|
1359
|
+
const [value3,setValue3]=useState();
|
|
1360
|
+
const [value4,setValue4]=useState();
|
|
1361
|
+
return (
|
|
1362
|
+
<div>
|
|
1363
|
+
<div>多选 + 动态更新 tree</div>
|
|
1364
|
+
<Cascader
|
|
1365
|
+
style={{ width: 300 }}
|
|
1366
|
+
treeData={treeDataDemo1}
|
|
1367
|
+
multiple
|
|
1368
|
+
placeholder="请选择所在地区"
|
|
1369
|
+
/>
|
|
1370
|
+
<Button onClick={()=>{setTreeData1(treeData3)}}>改变treeData</Button>
|
|
1371
|
+
<br />
|
|
1372
|
+
<br />
|
|
1373
|
+
<div>单选 + 动态更新 tree</div>
|
|
1374
|
+
<Cascader
|
|
1375
|
+
style={{ width: 300 }}
|
|
1376
|
+
treeData={treeDataDemo2}
|
|
1377
|
+
placeholder="请选择所在地区"
|
|
1378
|
+
/>
|
|
1379
|
+
<Button onClick={()=>{setTreeData2(treeData3)}}>改变treeData</Button>
|
|
1380
|
+
<br />
|
|
1381
|
+
<br />
|
|
1382
|
+
<div>多选 + 动态更新 tree + 受控</div>
|
|
1383
|
+
<Cascader
|
|
1384
|
+
style={{ width: 300 }}
|
|
1385
|
+
treeData={treeDataDemo3}
|
|
1386
|
+
multiple
|
|
1387
|
+
value={value3}
|
|
1388
|
+
onChange={v=>{
|
|
1389
|
+
console.log(v);
|
|
1390
|
+
setValue3(v);
|
|
1391
|
+
}}
|
|
1392
|
+
placeholder="请选择所在地区"
|
|
1393
|
+
/>
|
|
1394
|
+
<Button onClick={()=>{setTreeData3(treeData3)}}>改变treeData</Button>
|
|
1395
|
+
<br />
|
|
1396
|
+
<br />
|
|
1397
|
+
<div>单选 + 动态更新 tree + 受控</div>
|
|
1398
|
+
<Cascader
|
|
1399
|
+
style={{ width: 300 }}
|
|
1400
|
+
treeData={treeDataDemo4}
|
|
1401
|
+
value={value4}
|
|
1402
|
+
onChange={v=>{
|
|
1403
|
+
console.log(v);
|
|
1404
|
+
setValue4(v);
|
|
1405
|
+
}}
|
|
1406
|
+
placeholder="请选择所在地区"
|
|
1407
|
+
/>
|
|
1408
|
+
<Button onClick={()=>{setTreeData4(treeData3)}}>改变treeData</Button>
|
|
1409
|
+
<br />
|
|
1410
|
+
<br />
|
|
1411
|
+
<div>多选 + 动态更新 tree + defaultValue 为亚洲</div>
|
|
1412
|
+
<Cascader
|
|
1413
|
+
style={{ width: 300 }}
|
|
1414
|
+
treeData={treeDataDemo5}
|
|
1415
|
+
multiple
|
|
1416
|
+
defaultValue='yazhou'
|
|
1417
|
+
placeholder="请选择所在地区"
|
|
1418
|
+
/>
|
|
1419
|
+
<Button onClick={()=>{setTreeData5(treeData3)}}>改变treeData</Button>
|
|
1420
|
+
<br />
|
|
1421
|
+
<br />
|
|
1422
|
+
</div>
|
|
1423
|
+
);
|
|
1351
1424
|
}
|
package/cascader/index.tsx
CHANGED
|
@@ -14,7 +14,7 @@ import CascaderFoundation, {
|
|
|
14
14
|
} from '@douyinfe/semi-foundation/cascader/foundation';
|
|
15
15
|
import { cssClasses, strings } from '@douyinfe/semi-foundation/cascader/constants';
|
|
16
16
|
import { numbers as popoverNumbers } from '@douyinfe/semi-foundation/popover/constants';
|
|
17
|
-
import { isEqual, isString, isEmpty, isFunction, isNumber, noop, flatten } from 'lodash';
|
|
17
|
+
import { isSet, isEqual, isString, isEmpty, isFunction, isNumber, noop, flatten } from 'lodash';
|
|
18
18
|
import '@douyinfe/semi-foundation/cascader/cascader.scss';
|
|
19
19
|
import { IconClear, IconChevronDown } from '@douyinfe/semi-icons';
|
|
20
20
|
import { findKeysForValues, convertDataToEntities, calcMergeType } from '@douyinfe/semi-foundation/cascader/util';
|
|
@@ -426,7 +426,10 @@ class Cascader extends BaseComponent<CascaderProps, CascaderState> {
|
|
|
426
426
|
});
|
|
427
427
|
realKeys = formatKeys;
|
|
428
428
|
}
|
|
429
|
-
|
|
429
|
+
if (isSet(realKeys)) {
|
|
430
|
+
realKeys = [...realKeys];
|
|
431
|
+
}
|
|
432
|
+
const calRes = calcCheckedKeys(flatten(realKeys), keyEntities);
|
|
430
433
|
const checkedKeys = new Set(calRes.checkedKeys);
|
|
431
434
|
const halfCheckedKeys = new Set(calRes.halfCheckedKeys);
|
|
432
435
|
// disableStrictly
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { DatePicker, Button } from '../../../index';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* fix gitlab #1375
|
|
6
|
+
*/
|
|
7
|
+
App.storyName = 'fixed input range focus';
|
|
8
|
+
export default function App() {
|
|
9
|
+
const [visible, setVisible] = React.useState(false);
|
|
10
|
+
return (
|
|
11
|
+
<div>
|
|
12
|
+
{/* <Button onClick={() => { setVisible(false); }}>关闭</Button> */}
|
|
13
|
+
<DatePicker
|
|
14
|
+
type="dateTimeRange"
|
|
15
|
+
bottomSlot={<Button onClick={() => { setVisible(false); }}>关闭</Button>}
|
|
16
|
+
onFocus={() => {
|
|
17
|
+
console.log('focus');
|
|
18
|
+
setVisible(true);
|
|
19
|
+
}}
|
|
20
|
+
open={visible}
|
|
21
|
+
showClear
|
|
22
|
+
/>
|
|
23
|
+
</div>
|
|
24
|
+
);
|
|
25
|
+
}
|
|
@@ -331,6 +331,9 @@ export default class DatePicker extends BaseComponent<DatePickerProps, DatePicke
|
|
|
331
331
|
|
|
332
332
|
if (prevProps.open !== this.props.open) {
|
|
333
333
|
this.foundation.initPanelOpenStatus();
|
|
334
|
+
if (!this.props.open) {
|
|
335
|
+
this.foundation.clearRangeInputFocus();
|
|
336
|
+
}
|
|
334
337
|
}
|
|
335
338
|
}
|
|
336
339
|
|
|
@@ -525,6 +528,7 @@ export default class DatePicker extends BaseComponent<DatePickerProps, DatePicke
|
|
|
525
528
|
};
|
|
526
529
|
|
|
527
530
|
return (
|
|
531
|
+
// eslint-disable-next-line jsx-a11y/no-static-element-interactions, jsx-a11y/click-events-have-key-events
|
|
528
532
|
<div
|
|
529
533
|
onClick={this.handleTriggerWrapperClick}
|
|
530
534
|
className={inputCls}>
|
package/dist/css/semi.css
CHANGED
|
@@ -2612,6 +2612,7 @@ body[theme-mode=dark], body .semi-always-dark {
|
|
|
2612
2612
|
}
|
|
2613
2613
|
.semi-cascader:hover {
|
|
2614
2614
|
background-color: var(--semi-color-fill-1);
|
|
2615
|
+
border: 1px transparent solid;
|
|
2615
2616
|
}
|
|
2616
2617
|
.semi-cascader-small {
|
|
2617
2618
|
min-height: 24px;
|
|
@@ -17485,6 +17486,7 @@ body[theme-mode=dark], body .semi-always-dark {
|
|
|
17485
17486
|
}
|
|
17486
17487
|
.semi-tagInput-hover {
|
|
17487
17488
|
background-color: var(--semi-color-fill-1);
|
|
17489
|
+
border: 1px transparent solid;
|
|
17488
17490
|
}
|
|
17489
17491
|
.semi-tagInput-focus {
|
|
17490
17492
|
background-color: var(--semi-color-fill-0);
|
|
@@ -19437,11 +19439,10 @@ p.semi-typography-extended,
|
|
|
19437
19439
|
}
|
|
19438
19440
|
.semi-upload[x-prompt-pos=left] .semi-upload-add {
|
|
19439
19441
|
display: inline-flex;
|
|
19440
|
-
order: 2;
|
|
19441
19442
|
}
|
|
19442
19443
|
.semi-upload[x-prompt-pos=left] .semi-upload-prompt {
|
|
19443
19444
|
display: inline-flex;
|
|
19444
|
-
order: 1;
|
|
19445
|
+
order: -1;
|
|
19445
19446
|
}
|
|
19446
19447
|
.semi-upload[x-prompt-pos=left] .semi-upload-file-list {
|
|
19447
19448
|
order: 2;
|
|
@@ -19621,15 +19622,9 @@ p.semi-typography-extended,
|
|
|
19621
19622
|
.semi-upload-picture[x-prompt-pos=bottom] .semi-upload-prompt {
|
|
19622
19623
|
order: 1;
|
|
19623
19624
|
}
|
|
19624
|
-
.semi-upload-picture[x-prompt-pos=bottom] .semi-upload-add {
|
|
19625
|
-
order: 0;
|
|
19626
|
-
}
|
|
19627
19625
|
.semi-upload-picture[x-prompt-pos=right] .semi-upload-prompt {
|
|
19628
19626
|
order: 1;
|
|
19629
19627
|
}
|
|
19630
|
-
.semi-upload-picture[x-prompt-pos=right] .semi-upload-add {
|
|
19631
|
-
order: 0;
|
|
19632
|
-
}
|
|
19633
19628
|
.semi-upload-picture-add {
|
|
19634
19629
|
background-color: var(--semi-color-fill-0);
|
|
19635
19630
|
height: 96px;
|
|
@@ -19641,7 +19636,6 @@ p.semi-typography-extended,
|
|
|
19641
19636
|
border: 2px dashed var(--semi-color-border);
|
|
19642
19637
|
color: var(--semi-color-tertiary);
|
|
19643
19638
|
border-radius: var(--semi-border-radius-small);
|
|
19644
|
-
order: 2;
|
|
19645
19639
|
cursor: pointer;
|
|
19646
19640
|
}
|
|
19647
19641
|
.semi-upload-picture-add:hover {
|
|
@@ -19681,35 +19675,32 @@ p.semi-typography-extended,
|
|
|
19681
19675
|
border-radius: var(--semi-border-radius-small);
|
|
19682
19676
|
}
|
|
19683
19677
|
.semi-upload-picture-file-card-close {
|
|
19684
|
-
|
|
19685
|
-
|
|
19686
|
-
background-color: var(--semi-color-overlay-bg);
|
|
19678
|
+
visibility: hidden;
|
|
19679
|
+
display: inline-flex;
|
|
19687
19680
|
position: absolute;
|
|
19688
19681
|
top: 8px;
|
|
19689
19682
|
right: 8px;
|
|
19690
|
-
display: flex;
|
|
19691
|
-
justify-content: center;
|
|
19692
|
-
align-items: center;
|
|
19693
|
-
display: none;
|
|
19694
19683
|
border-radius: var(--semi-border-radius-circle);
|
|
19695
|
-
color: white;
|
|
19696
19684
|
cursor: pointer;
|
|
19697
19685
|
transition: all 0s;
|
|
19698
19686
|
}
|
|
19699
|
-
.semi-upload-picture-file-card
|
|
19700
|
-
|
|
19701
|
-
|
|
19702
|
-
.semi-upload-picture-file-card:hover .semi-upload-picture-file-card-replace {
|
|
19703
|
-
visibility: visible;
|
|
19687
|
+
.semi-upload-picture-file-card-icon-close {
|
|
19688
|
+
font-size: 16px;
|
|
19689
|
+
color: var(--semi-color-white);
|
|
19704
19690
|
}
|
|
19705
|
-
.semi-upload-picture-file-card
|
|
19691
|
+
.semi-upload-picture-file-card::before {
|
|
19692
|
+
visibility: hidden;
|
|
19693
|
+
background-color: var(--semi-color-overlay-bg);
|
|
19694
|
+
content: "";
|
|
19706
19695
|
position: absolute;
|
|
19707
|
-
|
|
19708
|
-
|
|
19709
|
-
|
|
19696
|
+
left: 0;
|
|
19697
|
+
right: 0;
|
|
19698
|
+
top: 0;
|
|
19699
|
+
bottom: 0;
|
|
19710
19700
|
}
|
|
19711
19701
|
.semi-upload-picture-file-card-retry {
|
|
19712
|
-
|
|
19702
|
+
visibility: hidden;
|
|
19703
|
+
background-color: var(--semi-color-white);
|
|
19713
19704
|
width: 24px;
|
|
19714
19705
|
height: 24px;
|
|
19715
19706
|
position: absolute;
|
|
@@ -19737,6 +19728,15 @@ p.semi-typography-extended,
|
|
|
19737
19728
|
color: var(--semi-color-white);
|
|
19738
19729
|
transform: translate3D(-50%, -50%, 0);
|
|
19739
19730
|
}
|
|
19731
|
+
.semi-upload-picture-file-card-preview {
|
|
19732
|
+
visibility: hidden;
|
|
19733
|
+
display: inline-flex;
|
|
19734
|
+
position: absolute;
|
|
19735
|
+
cursor: pointer;
|
|
19736
|
+
top: 50%;
|
|
19737
|
+
left: 50%;
|
|
19738
|
+
transform: translate3D(-50%, -50%, 0);
|
|
19739
|
+
}
|
|
19740
19740
|
.semi-upload-picture-file-card-pic-info {
|
|
19741
19741
|
display: inline-flex;
|
|
19742
19742
|
box-sizing: border-box;
|
|
@@ -19768,6 +19768,30 @@ p.semi-typography-extended,
|
|
|
19768
19768
|
.semi-upload-picture-file-card-error {
|
|
19769
19769
|
outline: 1px solid var(--semi-color-danger);
|
|
19770
19770
|
}
|
|
19771
|
+
.semi-upload-picture-file-card:hover::before {
|
|
19772
|
+
visibility: visible;
|
|
19773
|
+
}
|
|
19774
|
+
.semi-upload-picture-file-card:hover .semi-upload-picture-file-card-close {
|
|
19775
|
+
visibility: visible;
|
|
19776
|
+
}
|
|
19777
|
+
.semi-upload-picture-file-card:hover .semi-upload-picture-file-card-replace {
|
|
19778
|
+
visibility: visible;
|
|
19779
|
+
}
|
|
19780
|
+
.semi-upload-picture-file-card:hover .semi-upload-picture-file-card-retry {
|
|
19781
|
+
visibility: visible;
|
|
19782
|
+
}
|
|
19783
|
+
.semi-upload-picture-file-card:hover .semi-upload-picture-file-card-preview {
|
|
19784
|
+
visibility: visible;
|
|
19785
|
+
}
|
|
19786
|
+
.semi-upload-picture-file-card-uploading::before {
|
|
19787
|
+
visibility: visible;
|
|
19788
|
+
}
|
|
19789
|
+
.semi-upload-picture-file-card .semi-progress-circle {
|
|
19790
|
+
position: absolute;
|
|
19791
|
+
top: 50%;
|
|
19792
|
+
left: 50%;
|
|
19793
|
+
transform: translate(-50%, -50%);
|
|
19794
|
+
}
|
|
19771
19795
|
.semi-upload-drag-area {
|
|
19772
19796
|
border-radius: var(--semi-border-radius-small);
|
|
19773
19797
|
border: 2px dashed var(--semi-color-border);
|