@douyinfe/semi-ui 2.4.1 → 2.5.0-beta.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/dist/css/semi.css +50 -27
- package/dist/css/semi.min.css +1 -1
- package/dist/umd/semi-ui.js +398 -139
- 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/autoComplete/index.d.ts +1 -1
- package/lib/cjs/cascader/index.js +6 -0
- 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/select/index.d.ts +1 -1
- package/lib/cjs/select/option.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/tooltip/index.d.ts +1 -1
- 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/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/select/index.d.ts +1 -1
- package/lib/es/select/option.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/tooltip/index.d.ts +1 -1
- 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 -9
- package/select/option.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/defaultFilteredValue.tsx +123 -0
- package/table/_story/v2/index.js +4 -0
- package/table/interface.ts +1 -0
- package/tabs/interface.ts +1 -1
- package/tooltip/_story/tooltip.stories.js +83 -1
- 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
|
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;
|
|
@@ -19438,11 +19439,10 @@ p.semi-typography-extended,
|
|
|
19438
19439
|
}
|
|
19439
19440
|
.semi-upload[x-prompt-pos=left] .semi-upload-add {
|
|
19440
19441
|
display: inline-flex;
|
|
19441
|
-
order: 2;
|
|
19442
19442
|
}
|
|
19443
19443
|
.semi-upload[x-prompt-pos=left] .semi-upload-prompt {
|
|
19444
19444
|
display: inline-flex;
|
|
19445
|
-
order: 1;
|
|
19445
|
+
order: -1;
|
|
19446
19446
|
}
|
|
19447
19447
|
.semi-upload[x-prompt-pos=left] .semi-upload-file-list {
|
|
19448
19448
|
order: 2;
|
|
@@ -19622,15 +19622,9 @@ p.semi-typography-extended,
|
|
|
19622
19622
|
.semi-upload-picture[x-prompt-pos=bottom] .semi-upload-prompt {
|
|
19623
19623
|
order: 1;
|
|
19624
19624
|
}
|
|
19625
|
-
.semi-upload-picture[x-prompt-pos=bottom] .semi-upload-add {
|
|
19626
|
-
order: 0;
|
|
19627
|
-
}
|
|
19628
19625
|
.semi-upload-picture[x-prompt-pos=right] .semi-upload-prompt {
|
|
19629
19626
|
order: 1;
|
|
19630
19627
|
}
|
|
19631
|
-
.semi-upload-picture[x-prompt-pos=right] .semi-upload-add {
|
|
19632
|
-
order: 0;
|
|
19633
|
-
}
|
|
19634
19628
|
.semi-upload-picture-add {
|
|
19635
19629
|
background-color: var(--semi-color-fill-0);
|
|
19636
19630
|
height: 96px;
|
|
@@ -19642,7 +19636,6 @@ p.semi-typography-extended,
|
|
|
19642
19636
|
border: 2px dashed var(--semi-color-border);
|
|
19643
19637
|
color: var(--semi-color-tertiary);
|
|
19644
19638
|
border-radius: var(--semi-border-radius-small);
|
|
19645
|
-
order: 2;
|
|
19646
19639
|
cursor: pointer;
|
|
19647
19640
|
}
|
|
19648
19641
|
.semi-upload-picture-add:hover {
|
|
@@ -19682,35 +19675,32 @@ p.semi-typography-extended,
|
|
|
19682
19675
|
border-radius: var(--semi-border-radius-small);
|
|
19683
19676
|
}
|
|
19684
19677
|
.semi-upload-picture-file-card-close {
|
|
19685
|
-
|
|
19686
|
-
|
|
19687
|
-
background-color: var(--semi-color-overlay-bg);
|
|
19678
|
+
visibility: hidden;
|
|
19679
|
+
display: inline-flex;
|
|
19688
19680
|
position: absolute;
|
|
19689
19681
|
top: 8px;
|
|
19690
19682
|
right: 8px;
|
|
19691
|
-
display: flex;
|
|
19692
|
-
justify-content: center;
|
|
19693
|
-
align-items: center;
|
|
19694
|
-
display: none;
|
|
19695
19683
|
border-radius: var(--semi-border-radius-circle);
|
|
19696
|
-
color: white;
|
|
19697
19684
|
cursor: pointer;
|
|
19698
19685
|
transition: all 0s;
|
|
19699
19686
|
}
|
|
19700
|
-
.semi-upload-picture-file-card
|
|
19701
|
-
|
|
19702
|
-
|
|
19703
|
-
.semi-upload-picture-file-card:hover .semi-upload-picture-file-card-replace {
|
|
19704
|
-
visibility: visible;
|
|
19687
|
+
.semi-upload-picture-file-card-icon-close {
|
|
19688
|
+
font-size: 16px;
|
|
19689
|
+
color: var(--semi-color-white);
|
|
19705
19690
|
}
|
|
19706
|
-
.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: "";
|
|
19707
19695
|
position: absolute;
|
|
19708
|
-
|
|
19709
|
-
|
|
19710
|
-
|
|
19696
|
+
left: 0;
|
|
19697
|
+
right: 0;
|
|
19698
|
+
top: 0;
|
|
19699
|
+
bottom: 0;
|
|
19711
19700
|
}
|
|
19712
19701
|
.semi-upload-picture-file-card-retry {
|
|
19713
|
-
|
|
19702
|
+
visibility: hidden;
|
|
19703
|
+
background-color: var(--semi-color-white);
|
|
19714
19704
|
width: 24px;
|
|
19715
19705
|
height: 24px;
|
|
19716
19706
|
position: absolute;
|
|
@@ -19738,6 +19728,15 @@ p.semi-typography-extended,
|
|
|
19738
19728
|
color: var(--semi-color-white);
|
|
19739
19729
|
transform: translate3D(-50%, -50%, 0);
|
|
19740
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
|
+
}
|
|
19741
19740
|
.semi-upload-picture-file-card-pic-info {
|
|
19742
19741
|
display: inline-flex;
|
|
19743
19742
|
box-sizing: border-box;
|
|
@@ -19769,6 +19768,30 @@ p.semi-typography-extended,
|
|
|
19769
19768
|
.semi-upload-picture-file-card-error {
|
|
19770
19769
|
outline: 1px solid var(--semi-color-danger);
|
|
19771
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
|
+
}
|
|
19772
19795
|
.semi-upload-drag-area {
|
|
19773
19796
|
border-radius: var(--semi-border-radius-small);
|
|
19774
19797
|
border: 2px dashed var(--semi-color-border);
|