rsuite 5.56.0 → 5.57.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/CHANGELOG.md +16 -0
- package/CascadeTree/package.json +7 -0
- package/CascadeTree/styles/index.css +273 -0
- package/CascadeTree/styles/index.less +77 -0
- package/CascadeTree/styles/search.less +45 -0
- package/Cascader/styles/index.css +187 -192
- package/Cascader/styles/index.less +1 -122
- package/MultiCascadeTree/package.json +7 -0
- package/MultiCascadeTree/styles/index.css +3701 -0
- package/MultiCascadeTree/styles/index.less +37 -0
- package/MultiCascader/styles/index.css +72 -69
- package/MultiCascader/styles/index.less +11 -31
- package/cjs/@types/common.d.ts +12 -14
- package/cjs/CascadeTree/CascadeTree.d.ts +16 -0
- package/cjs/CascadeTree/CascadeTree.js +174 -0
- package/cjs/CascadeTree/SearchView.d.ts +17 -0
- package/cjs/CascadeTree/SearchView.js +106 -0
- package/cjs/CascadeTree/TreeView.d.ts +20 -0
- package/cjs/{Cascader → CascadeTree}/TreeView.js +42 -33
- package/cjs/CascadeTree/hooks/index.d.ts +3 -0
- package/cjs/CascadeTree/hooks/index.js +12 -0
- package/cjs/{Cascader/utils.d.ts → CascadeTree/hooks/usePaths.d.ts} +3 -25
- package/cjs/CascadeTree/hooks/usePaths.js +42 -0
- package/cjs/CascadeTree/hooks/useSearch.d.ts +17 -0
- package/cjs/CascadeTree/hooks/useSearch.js +59 -0
- package/cjs/CascadeTree/hooks/useSelect.d.ts +23 -0
- package/cjs/CascadeTree/hooks/useSelect.js +64 -0
- package/cjs/CascadeTree/index.d.ts +4 -0
- package/cjs/CascadeTree/index.js +9 -0
- package/cjs/CascadeTree/types.d.ts +66 -0
- package/cjs/CascadeTree/types.js +2 -0
- package/cjs/CascadeTree/utils.d.ts +32 -0
- package/cjs/CascadeTree/utils.js +66 -0
- package/cjs/Cascader/Cascader.d.ts +57 -26
- package/cjs/Cascader/Cascader.js +180 -247
- package/cjs/Cascader/useActive.d.ts +15 -0
- package/cjs/Cascader/useActive.js +43 -0
- package/cjs/InlineEdit/InlineEdit.d.ts +1 -1
- package/cjs/Loader/Loader.js +5 -4
- package/cjs/MultiCascadeTree/MultiCascadeTree.d.ts +9 -0
- package/cjs/MultiCascadeTree/MultiCascadeTree.js +131 -0
- package/cjs/MultiCascadeTree/SearchView.d.ts +17 -0
- package/cjs/MultiCascadeTree/SearchView.js +117 -0
- package/cjs/MultiCascadeTree/TreeView.d.ts +22 -0
- package/cjs/{MultiCascader → MultiCascadeTree}/TreeView.js +20 -20
- package/cjs/MultiCascadeTree/hooks/index.d.ts +5 -0
- package/cjs/MultiCascadeTree/hooks/index.js +16 -0
- package/cjs/MultiCascadeTree/hooks/useCascadeValue.d.ts +18 -0
- package/cjs/MultiCascadeTree/hooks/useCascadeValue.js +202 -0
- package/cjs/MultiCascadeTree/hooks/useColumnData.d.ts +16 -0
- package/cjs/MultiCascadeTree/hooks/useColumnData.js +52 -0
- package/cjs/MultiCascadeTree/hooks/useFlattenData.d.ts +9 -0
- package/cjs/MultiCascadeTree/hooks/useFlattenData.js +33 -0
- package/cjs/MultiCascadeTree/hooks/useSearch.d.ts +17 -0
- package/cjs/MultiCascadeTree/hooks/useSearch.js +52 -0
- package/cjs/MultiCascadeTree/hooks/useSelect.d.ts +19 -0
- package/cjs/MultiCascadeTree/hooks/useSelect.js +83 -0
- package/cjs/MultiCascadeTree/index.d.ts +4 -0
- package/cjs/MultiCascadeTree/index.js +9 -0
- package/cjs/MultiCascadeTree/types.d.ts +26 -0
- package/cjs/MultiCascadeTree/types.js +2 -0
- package/cjs/MultiCascadeTree/utils.d.ts +37 -0
- package/cjs/MultiCascadeTree/utils.js +140 -0
- package/cjs/MultiCascader/MultiCascader.d.ts +57 -29
- package/cjs/MultiCascader/MultiCascader.js +175 -287
- package/cjs/Tree/Tree.d.ts +4 -4
- package/cjs/index.d.ts +6 -1
- package/cjs/index.js +8 -3
- package/cjs/internals/Picker/PickerToggle.d.ts +4 -5
- package/cjs/toaster/ToastContainer.d.ts +9 -2
- package/cjs/toaster/index.d.ts +0 -1
- package/cjs/toaster/index.js +1 -3
- package/cjs/useToaster/index.d.ts +2 -0
- package/cjs/useToaster/index.js +9 -0
- package/cjs/{toaster → useToaster}/useToaster.d.ts +4 -4
- package/cjs/{toaster → useToaster}/useToaster.js +4 -4
- package/cjs/utils/index.d.ts +1 -0
- package/cjs/utils/index.js +5 -2
- package/dist/rsuite-no-reset-rtl.css +64 -61
- package/dist/rsuite-no-reset-rtl.min.css +1 -1
- package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
- package/dist/rsuite-no-reset.css +64 -61
- package/dist/rsuite-no-reset.min.css +1 -1
- package/dist/rsuite-no-reset.min.css.map +1 -1
- package/dist/rsuite-rtl.css +64 -61
- package/dist/rsuite-rtl.min.css +1 -1
- package/dist/rsuite-rtl.min.css.map +1 -1
- package/dist/rsuite.css +64 -61
- package/dist/rsuite.js +242 -44
- package/dist/rsuite.js.map +1 -1
- package/dist/rsuite.min.css +1 -1
- package/dist/rsuite.min.css.map +1 -1
- package/dist/rsuite.min.js +1 -1
- package/dist/rsuite.min.js.map +1 -1
- package/esm/@types/common.d.ts +12 -14
- package/esm/CascadeTree/CascadeTree.d.ts +16 -0
- package/esm/CascadeTree/CascadeTree.js +167 -0
- package/esm/CascadeTree/SearchView.d.ts +17 -0
- package/esm/CascadeTree/SearchView.js +100 -0
- package/esm/CascadeTree/TreeView.d.ts +20 -0
- package/esm/{Cascader → CascadeTree}/TreeView.js +42 -33
- package/esm/CascadeTree/hooks/index.d.ts +3 -0
- package/esm/CascadeTree/hooks/index.js +4 -0
- package/esm/{Cascader/utils.d.ts → CascadeTree/hooks/usePaths.d.ts} +3 -25
- package/esm/CascadeTree/hooks/usePaths.js +36 -0
- package/esm/CascadeTree/hooks/useSearch.d.ts +17 -0
- package/esm/CascadeTree/hooks/useSearch.js +54 -0
- package/esm/CascadeTree/hooks/useSelect.d.ts +23 -0
- package/esm/CascadeTree/hooks/useSelect.js +59 -0
- package/esm/CascadeTree/index.d.ts +4 -0
- package/esm/CascadeTree/index.js +3 -0
- package/esm/CascadeTree/types.d.ts +66 -0
- package/esm/CascadeTree/types.js +1 -0
- package/esm/CascadeTree/utils.d.ts +32 -0
- package/esm/CascadeTree/utils.js +61 -0
- package/esm/Cascader/Cascader.d.ts +57 -26
- package/esm/Cascader/Cascader.js +167 -233
- package/esm/Cascader/useActive.d.ts +15 -0
- package/esm/Cascader/useActive.js +37 -0
- package/esm/InlineEdit/InlineEdit.d.ts +1 -1
- package/esm/Loader/Loader.js +6 -5
- package/esm/MultiCascadeTree/MultiCascadeTree.d.ts +9 -0
- package/esm/MultiCascadeTree/MultiCascadeTree.js +125 -0
- package/esm/MultiCascadeTree/SearchView.d.ts +17 -0
- package/esm/MultiCascadeTree/SearchView.js +111 -0
- package/esm/MultiCascadeTree/TreeView.d.ts +22 -0
- package/esm/{MultiCascader → MultiCascadeTree}/TreeView.js +20 -20
- package/esm/MultiCascadeTree/hooks/index.d.ts +5 -0
- package/esm/MultiCascadeTree/hooks/index.js +6 -0
- package/esm/MultiCascadeTree/hooks/useCascadeValue.d.ts +18 -0
- package/esm/MultiCascadeTree/hooks/useCascadeValue.js +197 -0
- package/esm/MultiCascadeTree/hooks/useColumnData.d.ts +16 -0
- package/esm/MultiCascadeTree/hooks/useColumnData.js +46 -0
- package/esm/MultiCascadeTree/hooks/useFlattenData.d.ts +9 -0
- package/esm/MultiCascadeTree/hooks/useFlattenData.js +28 -0
- package/esm/MultiCascadeTree/hooks/useSearch.d.ts +17 -0
- package/esm/MultiCascadeTree/hooks/useSearch.js +47 -0
- package/esm/MultiCascadeTree/hooks/useSelect.d.ts +19 -0
- package/esm/MultiCascadeTree/hooks/useSelect.js +77 -0
- package/esm/MultiCascadeTree/index.d.ts +4 -0
- package/esm/MultiCascadeTree/index.js +3 -0
- package/esm/MultiCascadeTree/types.d.ts +26 -0
- package/esm/MultiCascadeTree/types.js +1 -0
- package/esm/MultiCascadeTree/utils.d.ts +37 -0
- package/esm/MultiCascadeTree/utils.js +130 -0
- package/esm/MultiCascader/MultiCascader.d.ts +57 -29
- package/esm/MultiCascader/MultiCascader.js +168 -279
- package/esm/Tree/Tree.d.ts +4 -4
- package/esm/index.d.ts +6 -1
- package/esm/index.js +5 -1
- package/esm/internals/Picker/PickerToggle.d.ts +4 -5
- package/esm/toaster/ToastContainer.d.ts +9 -2
- package/esm/toaster/index.d.ts +0 -1
- package/esm/toaster/index.js +0 -1
- package/esm/useToaster/index.d.ts +2 -0
- package/esm/useToaster/index.js +3 -0
- package/esm/{toaster → useToaster}/useToaster.d.ts +4 -4
- package/esm/{toaster → useToaster}/useToaster.js +4 -4
- package/esm/utils/index.d.ts +1 -0
- package/esm/utils/index.js +2 -1
- package/package.json +1 -1
- package/styles/index.less +2 -0
- package/useToaster/package.json +7 -0
- package/useToaster/styles/index.css +239 -0
- package/useToaster/styles/index.less +1 -0
- package/cjs/Cascader/DropdownMenu.d.ts +0 -24
- package/cjs/Cascader/DropdownMenu.js +0 -175
- package/cjs/Cascader/TreeView.d.ts +0 -24
- package/cjs/Cascader/utils.js +0 -79
- package/cjs/MultiCascader/TreeView.d.ts +0 -25
- package/cjs/MultiCascader/utils.d.ts +0 -71
- package/cjs/MultiCascader/utils.js +0 -382
- package/esm/Cascader/DropdownMenu.d.ts +0 -24
- package/esm/Cascader/DropdownMenu.js +0 -168
- package/esm/Cascader/TreeView.d.ts +0 -24
- package/esm/Cascader/utils.js +0 -74
- package/esm/MultiCascader/TreeView.d.ts +0 -25
- package/esm/MultiCascader/utils.d.ts +0 -71
- package/esm/MultiCascader/utils.js +0 -369
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
@import '../../styles/common.less';
|
|
2
|
+
@import '../../Cascader/styles/index.less';
|
|
3
|
+
@import '../../internals/Picker/styles/index.less';
|
|
4
|
+
@import '../../Checkbox/styles/index.less';
|
|
5
|
+
|
|
6
|
+
// MultiCascadeTree
|
|
7
|
+
// ----------------------
|
|
8
|
+
|
|
9
|
+
.rs-cascade-tree {
|
|
10
|
+
&-items .rs-check-item .rs-checkbox-checker > label {
|
|
11
|
+
padding-right: 26px; // 12px + 8px + 6px
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
&-items .rs-check-item.rs-check-item-focus,
|
|
15
|
+
&-items .rs-check-item.rs-checkbox-checked {
|
|
16
|
+
.rs-checkbox-checker > label {
|
|
17
|
+
font-weight: bold;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
&-column&-column-uncheckable {
|
|
22
|
+
.rs-check-item .rs-checkbox-checker > label {
|
|
23
|
+
padding-left: @picker-item-content-padding-horizontal;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
.rs-cascade-tree-multi {
|
|
28
|
+
.rs-cascade-search-view-row {
|
|
29
|
+
padding-left: 0;
|
|
30
|
+
padding-top: 0;
|
|
31
|
+
padding-bottom: 0;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.rs-cascade-search-view-col {
|
|
35
|
+
padding: 0;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -351,19 +351,12 @@
|
|
|
351
351
|
-webkit-box-sizing: border-box;
|
|
352
352
|
box-sizing: border-box;
|
|
353
353
|
}
|
|
354
|
-
.rs-
|
|
355
|
-
.rs-picker-cascader-menu-items > div::after {
|
|
356
|
-
content: ' ';
|
|
357
|
-
display: table;
|
|
358
|
-
}
|
|
359
|
-
.rs-picker-cascader-menu-items > div::after {
|
|
360
|
-
clear: both;
|
|
361
|
-
}
|
|
362
|
-
.rs-picker-cascader-search-panel {
|
|
354
|
+
.rs-cascade-search-view-panel {
|
|
363
355
|
max-height: 300px;
|
|
356
|
+
margin-top: 6px;
|
|
364
357
|
overflow: auto;
|
|
365
358
|
}
|
|
366
|
-
.rs-
|
|
359
|
+
.rs-cascade-search-view-row {
|
|
367
360
|
display: block;
|
|
368
361
|
padding: 8px 12px;
|
|
369
362
|
clear: both;
|
|
@@ -375,13 +368,13 @@
|
|
|
375
368
|
text-decoration: none;
|
|
376
369
|
width: 100%;
|
|
377
370
|
}
|
|
378
|
-
.rs-
|
|
371
|
+
.rs-cascade-search-view-row:hover {
|
|
379
372
|
background-color: rgb(from #cce9ff r g b / 50%);
|
|
380
373
|
background-color: var(--rs-listbox-option-hover-bg);
|
|
381
374
|
color: #1675e0;
|
|
382
375
|
color: var(--rs-listbox-option-hover-text);
|
|
383
376
|
}
|
|
384
|
-
.rs-theme-high-contrast .rs-
|
|
377
|
+
.rs-theme-high-contrast .rs-cascade-search-view-row:hover {
|
|
385
378
|
outline: 3px solid rgb(from #3498ff r g b / 25%);
|
|
386
379
|
outline: 3px solid var(--rs-color-focus-ring);
|
|
387
380
|
outline-offset: -3px;
|
|
@@ -390,16 +383,16 @@
|
|
|
390
383
|
color: var(--rs-listbox-option-hover-text);
|
|
391
384
|
text-decoration: underline;
|
|
392
385
|
}
|
|
393
|
-
.rs-theme-high-contrast .rs-theme-high-contrast .rs-
|
|
386
|
+
.rs-theme-high-contrast .rs-theme-high-contrast .rs-cascade-search-view-row:hover {
|
|
394
387
|
outline-offset: 2px;
|
|
395
388
|
}
|
|
396
|
-
.rs-
|
|
389
|
+
.rs-cascade-search-view-row.rs-cascade-search-view-row-focus {
|
|
397
390
|
background-color: rgb(from #cce9ff r g b / 50%);
|
|
398
391
|
background-color: var(--rs-listbox-option-hover-bg);
|
|
399
392
|
color: #1675e0;
|
|
400
393
|
color: var(--rs-listbox-option-hover-text);
|
|
401
394
|
}
|
|
402
|
-
.rs-theme-high-contrast .rs-
|
|
395
|
+
.rs-theme-high-contrast .rs-cascade-search-view-row.rs-cascade-search-view-row-focus {
|
|
403
396
|
outline: 3px solid rgb(from #3498ff r g b / 25%);
|
|
404
397
|
outline: 3px solid var(--rs-color-focus-ring);
|
|
405
398
|
outline-offset: -3px;
|
|
@@ -408,40 +401,52 @@
|
|
|
408
401
|
color: var(--rs-listbox-option-hover-text);
|
|
409
402
|
text-decoration: underline;
|
|
410
403
|
}
|
|
411
|
-
.rs-theme-high-contrast .rs-theme-high-contrast .rs-
|
|
404
|
+
.rs-theme-high-contrast .rs-theme-high-contrast .rs-cascade-search-view-row.rs-cascade-search-view-row-focus {
|
|
412
405
|
outline-offset: 2px;
|
|
413
406
|
}
|
|
414
|
-
.rs-
|
|
415
|
-
.rs-
|
|
407
|
+
.rs-cascade-search-view-row:disabled,
|
|
408
|
+
.rs-cascade-search-view-row.rs-cascade-search-view-row-disabled {
|
|
416
409
|
color: #c5c6c7;
|
|
417
410
|
color: var(--rs-listbox-option-disabled-text);
|
|
418
411
|
background: none;
|
|
419
412
|
cursor: not-allowed;
|
|
420
413
|
}
|
|
421
|
-
.rs-
|
|
422
|
-
.rs-
|
|
414
|
+
.rs-cascade-search-view-row:disabled .rs-cascade-search-view-match,
|
|
415
|
+
.rs-cascade-search-view-row.rs-cascade-search-view-row-disabled .rs-cascade-search-view-match {
|
|
423
416
|
opacity: 0.7;
|
|
424
417
|
font-weight: normal;
|
|
425
418
|
}
|
|
426
|
-
.rs-
|
|
419
|
+
.rs-cascade-search-view-col {
|
|
427
420
|
display: inline-block;
|
|
428
421
|
}
|
|
429
|
-
.rs-
|
|
422
|
+
.rs-cascade-search-view-col::after {
|
|
430
423
|
content: '\00a0/\00a0';
|
|
431
424
|
}
|
|
432
|
-
.rs-
|
|
425
|
+
.rs-cascade-search-view-col:last-child::after {
|
|
433
426
|
display: none;
|
|
434
427
|
}
|
|
435
|
-
.rs-
|
|
428
|
+
.rs-cascade-search-view-match {
|
|
436
429
|
color: #3498ff;
|
|
437
430
|
color: var(--rs-primary-500);
|
|
438
431
|
font-weight: bold;
|
|
439
432
|
}
|
|
440
|
-
.rs-
|
|
441
|
-
|
|
433
|
+
.rs-cascade-tree-items {
|
|
434
|
+
padding: 6px 0;
|
|
435
|
+
display: -webkit-box;
|
|
436
|
+
display: -ms-flexbox;
|
|
437
|
+
display: flex;
|
|
438
|
+
}
|
|
439
|
+
.rs-cascade-tree-items ul,
|
|
440
|
+
.rs-cascade-tree-items li {
|
|
441
|
+
margin: 0;
|
|
442
|
+
padding: 0;
|
|
443
|
+
list-style: none;
|
|
444
|
+
font-size: 14px;
|
|
445
|
+
}
|
|
446
|
+
.rs-cascade-tree-column {
|
|
442
447
|
overflow-y: auto;
|
|
443
448
|
}
|
|
444
|
-
.rs-
|
|
449
|
+
.rs-cascade-tree-column-loading {
|
|
445
450
|
padding: 4px;
|
|
446
451
|
display: -webkit-box;
|
|
447
452
|
display: -ms-flexbox;
|
|
@@ -453,17 +458,10 @@
|
|
|
453
458
|
-ms-flex-pack: center;
|
|
454
459
|
justify-content: center;
|
|
455
460
|
}
|
|
456
|
-
.rs-
|
|
461
|
+
.rs-cascade-tree-column-loading .rs-icon {
|
|
457
462
|
margin: 4px;
|
|
458
463
|
}
|
|
459
|
-
.rs-
|
|
460
|
-
.rs-picker-cascader-menu-items li {
|
|
461
|
-
margin: 0;
|
|
462
|
-
padding: 0;
|
|
463
|
-
list-style: none;
|
|
464
|
-
font-size: 14px;
|
|
465
|
-
}
|
|
466
|
-
.rs-picker-cascader-menu-item {
|
|
464
|
+
.rs-cascade-tree-item {
|
|
467
465
|
display: block;
|
|
468
466
|
padding: 8px 12px;
|
|
469
467
|
clear: both;
|
|
@@ -478,22 +476,20 @@
|
|
|
478
476
|
padding: 8px 28px 8px 12px;
|
|
479
477
|
word-break: break-word;
|
|
480
478
|
}
|
|
481
|
-
.rs-
|
|
479
|
+
.rs-cascade-tree-items-has-children .rs-cascade-tree-item {
|
|
482
480
|
padding-right: 32px;
|
|
483
481
|
}
|
|
484
|
-
.rs-
|
|
485
|
-
.rs-
|
|
486
|
-
.rs-
|
|
487
|
-
.rs-picker-cascader-menu-item.rs-picker-cascader-menu-item-focus {
|
|
482
|
+
.rs-cascade-tree-item:hover,
|
|
483
|
+
.rs-cascade-tree-item:focus,
|
|
484
|
+
.rs-cascade-tree-item.rs-cascade-tree-item-focus {
|
|
488
485
|
background-color: rgb(from #cce9ff r g b / 50%);
|
|
489
486
|
background-color: var(--rs-listbox-option-hover-bg);
|
|
490
487
|
color: #1675e0;
|
|
491
488
|
color: var(--rs-listbox-option-hover-text);
|
|
492
489
|
}
|
|
493
|
-
.rs-theme-high-contrast .rs-
|
|
494
|
-
.rs-theme-high-contrast .rs-
|
|
495
|
-
.rs-theme-high-contrast .rs-
|
|
496
|
-
.rs-theme-high-contrast .rs-picker-cascader-menu-item.rs-picker-cascader-menu-item-focus {
|
|
490
|
+
.rs-theme-high-contrast .rs-cascade-tree-item:hover,
|
|
491
|
+
.rs-theme-high-contrast .rs-cascade-tree-item:focus,
|
|
492
|
+
.rs-theme-high-contrast .rs-cascade-tree-item.rs-cascade-tree-item-focus {
|
|
497
493
|
outline: 3px solid rgb(from #3498ff r g b / 25%);
|
|
498
494
|
outline: 3px solid var(--rs-color-focus-ring);
|
|
499
495
|
outline-offset: -3px;
|
|
@@ -502,34 +498,33 @@
|
|
|
502
498
|
color: var(--rs-listbox-option-hover-text);
|
|
503
499
|
text-decoration: underline;
|
|
504
500
|
}
|
|
505
|
-
.rs-theme-high-contrast .rs-theme-high-contrast .rs-
|
|
506
|
-
.rs-theme-high-contrast .rs-theme-high-contrast .rs-
|
|
507
|
-
.rs-theme-high-contrast .rs-theme-high-contrast .rs-
|
|
508
|
-
.rs-theme-high-contrast .rs-theme-high-contrast .rs-picker-cascader-menu-item.rs-picker-cascader-menu-item-focus {
|
|
501
|
+
.rs-theme-high-contrast .rs-theme-high-contrast .rs-cascade-tree-item:hover,
|
|
502
|
+
.rs-theme-high-contrast .rs-theme-high-contrast .rs-cascade-tree-item:focus,
|
|
503
|
+
.rs-theme-high-contrast .rs-theme-high-contrast .rs-cascade-tree-item.rs-cascade-tree-item-focus {
|
|
509
504
|
outline-offset: 2px;
|
|
510
505
|
}
|
|
511
|
-
.rs-
|
|
506
|
+
.rs-cascade-tree-item.rs-cascade-tree-item-active {
|
|
512
507
|
background-color: #f2faff;
|
|
513
508
|
background-color: var(--rs-listbox-option-selected-bg);
|
|
514
509
|
font-weight: bold;
|
|
515
510
|
color: #1675e0;
|
|
516
511
|
color: var(--rs-listbox-option-selected-text);
|
|
517
512
|
}
|
|
518
|
-
.rs-theme-high-contrast .rs-
|
|
513
|
+
.rs-theme-high-contrast .rs-cascade-tree-item.rs-cascade-tree-item-active {
|
|
519
514
|
text-decoration: underline;
|
|
520
515
|
}
|
|
521
|
-
.rs-
|
|
516
|
+
.rs-cascade-tree-item.rs-cascade-tree-item-active .rs-cascade-tree-caret {
|
|
522
517
|
color: #575757;
|
|
523
518
|
color: var(--rs-text-primary);
|
|
524
519
|
}
|
|
525
|
-
.rs-
|
|
526
|
-
.rs-
|
|
520
|
+
.rs-cascade-tree-item:disabled,
|
|
521
|
+
.rs-cascade-tree-item.rs-cascade-tree-item-disabled {
|
|
527
522
|
color: #c5c6c7;
|
|
528
523
|
color: var(--rs-listbox-option-disabled-text);
|
|
529
524
|
background: none;
|
|
530
525
|
cursor: not-allowed;
|
|
531
526
|
}
|
|
532
|
-
.rs-
|
|
527
|
+
.rs-cascade-tree-caret {
|
|
533
528
|
display: -webkit-box;
|
|
534
529
|
display: -ms-flexbox;
|
|
535
530
|
display: flex;
|
|
@@ -543,6 +538,24 @@
|
|
|
543
538
|
height: 20px;
|
|
544
539
|
font-size: 12px;
|
|
545
540
|
}
|
|
541
|
+
.rs-cascade-tree-items .rs-check-item .rs-checkbox-checker > label {
|
|
542
|
+
padding-right: 26px;
|
|
543
|
+
}
|
|
544
|
+
.rs-cascade-tree-items .rs-check-item.rs-check-item-focus .rs-checkbox-checker > label,
|
|
545
|
+
.rs-cascade-tree-items .rs-check-item.rs-checkbox-checked .rs-checkbox-checker > label {
|
|
546
|
+
font-weight: bold;
|
|
547
|
+
}
|
|
548
|
+
.rs-cascade-tree-column.rs-cascade-tree-column-uncheckable .rs-check-item .rs-checkbox-checker > label {
|
|
549
|
+
padding-left: 12px;
|
|
550
|
+
}
|
|
551
|
+
.rs-cascade-tree-multi .rs-cascade-search-view-row {
|
|
552
|
+
padding-left: 0;
|
|
553
|
+
padding-top: 0;
|
|
554
|
+
padding-bottom: 0;
|
|
555
|
+
}
|
|
556
|
+
.rs-cascade-tree-multi .rs-cascade-search-view-col {
|
|
557
|
+
padding: 0;
|
|
558
|
+
}
|
|
546
559
|
.rs-btn {
|
|
547
560
|
display: -webkit-inline-box;
|
|
548
561
|
display: -ms-inline-flexbox;
|
|
@@ -3684,23 +3697,13 @@ label:hover .rs-checkbox-control .rs-checkbox-inner::before {
|
|
|
3684
3697
|
background-color: #673ab7;
|
|
3685
3698
|
background-color: var(--rs-violet-500);
|
|
3686
3699
|
}
|
|
3687
|
-
.rs-picker-cascader
|
|
3688
|
-
padding-right: 26px;
|
|
3689
|
-
}
|
|
3690
|
-
.rs-picker-cascader-menu .rs-check-item.rs-check-item-focus .rs-checkbox-checker > label,
|
|
3691
|
-
.rs-picker-cascader-menu .rs-check-item.rs-checkbox-checked .rs-checkbox-checker > label {
|
|
3692
|
-
font-weight: bold;
|
|
3693
|
-
}
|
|
3694
|
-
.rs-picker-cascader-menu-column.rs-picker-cascader-menu-column-uncheckable .rs-check-item .rs-checkbox-checker > label {
|
|
3695
|
-
padding-left: 12px;
|
|
3696
|
-
}
|
|
3697
|
-
.rs-picker-multi-cascader-menu .rs-picker-cascader-col {
|
|
3698
|
-
padding: 0;
|
|
3699
|
-
}
|
|
3700
|
-
.rs-picker-multi-cascader-menu .rs-picker-cascader-row {
|
|
3700
|
+
.rs-picker-popup-multi-cascader .rs-cascade-search-view-row {
|
|
3701
3701
|
padding-left: 0;
|
|
3702
3702
|
padding-top: 0;
|
|
3703
3703
|
padding-bottom: 0;
|
|
3704
3704
|
}
|
|
3705
|
+
.rs-picker-popup-multi-cascader .rs-cascade-search-view-col {
|
|
3706
|
+
padding: 0;
|
|
3707
|
+
}
|
|
3705
3708
|
|
|
3706
3709
|
/*# sourceMappingURL=index.css.map */
|
|
@@ -1,36 +1,16 @@
|
|
|
1
|
-
@import '../../styles/common';
|
|
2
|
-
@import '../../
|
|
3
|
-
@import '../../internals/Picker/styles/index';
|
|
4
|
-
@import '../../Checkbox/styles/index';
|
|
1
|
+
@import '../../styles/common.less';
|
|
2
|
+
@import '../../MultiCascadeTree/styles/index.less';
|
|
3
|
+
@import '../../internals/Picker/styles/index.less';
|
|
4
|
+
@import '../../Checkbox/styles/index.less';
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
padding-right: 26px; // 12px + 8px + 6px
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
&-menu .rs-check-item.rs-check-item-focus,
|
|
15
|
-
&-menu .rs-check-item.rs-checkbox-checked {
|
|
16
|
-
.rs-checkbox-checker > label {
|
|
17
|
-
font-weight: bold;
|
|
18
|
-
}
|
|
6
|
+
.rs-picker-popup-multi-cascader {
|
|
7
|
+
.rs-cascade-search-view-row {
|
|
8
|
+
padding-left: 0;
|
|
9
|
+
padding-top: 0;
|
|
10
|
+
padding-bottom: 0;
|
|
19
11
|
}
|
|
20
12
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
padding-left: @picker-item-content-padding-horizontal;
|
|
24
|
-
}
|
|
13
|
+
.rs-cascade-search-view-col {
|
|
14
|
+
padding: 0;
|
|
25
15
|
}
|
|
26
16
|
}
|
|
27
|
-
|
|
28
|
-
.rs-picker-multi-cascader-menu .rs-picker-cascader-col {
|
|
29
|
-
padding: 0;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
.rs-picker-multi-cascader-menu .rs-picker-cascader-row {
|
|
33
|
-
padding-left: 0;
|
|
34
|
-
padding-top: 0;
|
|
35
|
-
padding-bottom: 0;
|
|
36
|
-
}
|
package/cjs/@types/common.d.ts
CHANGED
|
@@ -35,10 +35,10 @@ export interface AnimationEventProps {
|
|
|
35
35
|
onExited?: (node: HTMLElement) => void;
|
|
36
36
|
}
|
|
37
37
|
export declare type PickerAppearance = 'default' | 'subtle';
|
|
38
|
-
export interface PickerBaseProps<
|
|
38
|
+
export interface PickerBaseProps<L = any> extends WithAsProps, AnimationEventProps {
|
|
39
39
|
id?: string;
|
|
40
40
|
/** Custom locale */
|
|
41
|
-
locale?: Partial<
|
|
41
|
+
locale?: Partial<L>;
|
|
42
42
|
/** A picker can have different appearances. */
|
|
43
43
|
appearance?: PickerAppearance;
|
|
44
44
|
/** Format picker to appear inside a content block */
|
|
@@ -108,24 +108,22 @@ export interface FormControlBaseProps<ValueType = React.InputHTMLAttributes<HTML
|
|
|
108
108
|
/** Make the control readonly */
|
|
109
109
|
readOnly?: boolean;
|
|
110
110
|
}
|
|
111
|
-
declare type ToArray<V> = V extends any[] ? V : V[];
|
|
112
|
-
export interface
|
|
111
|
+
export declare type ToArray<V> = V extends any[] ? V : V[];
|
|
112
|
+
export interface DataProps<TData> {
|
|
113
113
|
/** The data of component */
|
|
114
|
-
data:
|
|
114
|
+
data: TData[];
|
|
115
115
|
/** Set option value 'key' in 'data' */
|
|
116
116
|
valueKey?: string;
|
|
117
117
|
/** Set options to display the 'key' in 'data' */
|
|
118
118
|
labelKey?: string;
|
|
119
119
|
/** Set children key in data */
|
|
120
120
|
childrenKey?: string;
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
/**
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
/** Called after the value has been changed */
|
|
128
|
-
onChange?: (value: ValueType, event: React.SyntheticEvent) => void;
|
|
121
|
+
}
|
|
122
|
+
export interface FormControlPickerProps<T = any, L = any, D = Record<string, any>, I = T> extends PickerBaseProps<L>, FormControlBaseProps<T>, DataProps<D> {
|
|
123
|
+
/**
|
|
124
|
+
* Disabled items
|
|
125
|
+
*/
|
|
126
|
+
disabledItemValues?: ToArray<NonNullable<I>>;
|
|
129
127
|
}
|
|
130
128
|
export declare namespace TypeAttributes {
|
|
131
129
|
type Size = 'lg' | 'md' | 'sm' | 'xs';
|
|
@@ -150,6 +148,7 @@ export interface ItemDataType<T = number | string> extends Record<string, any> {
|
|
|
150
148
|
children?: ItemDataType<T>[];
|
|
151
149
|
loading?: boolean;
|
|
152
150
|
}
|
|
151
|
+
export declare type DataItemValue = number | string | null;
|
|
153
152
|
export interface Offset {
|
|
154
153
|
top: number;
|
|
155
154
|
left: number;
|
|
@@ -163,4 +162,3 @@ export declare type CursorPosition = {
|
|
|
163
162
|
clientTop: number;
|
|
164
163
|
clientLeft: number;
|
|
165
164
|
};
|
|
166
|
-
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { CascadeTreeProps } from './types';
|
|
3
|
+
export interface CascadeTreeComponent {
|
|
4
|
+
<T>(props: CascadeTreeProps<T> & {
|
|
5
|
+
ref?: React.Ref<HTMLDivElement>;
|
|
6
|
+
}): JSX.Element | null;
|
|
7
|
+
displayName?: string;
|
|
8
|
+
propTypes?: React.WeakValidationMap<CascadeTreeProps<any>>;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* CascadeTree is a component that displays tree-structured data in columns.
|
|
12
|
+
*
|
|
13
|
+
* @see https://rsuitejs.com/components/cascade-tree
|
|
14
|
+
*/
|
|
15
|
+
declare const CascadeTree: CascadeTreeComponent;
|
|
16
|
+
export default CascadeTree;
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
"use strict";
|
|
3
|
+
|
|
4
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
|
5
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
6
|
+
exports.__esModule = true;
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
|
+
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
10
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
+
var _treeUtils = require("../utils/treeUtils");
|
|
12
|
+
var _utils = require("../utils");
|
|
13
|
+
var _useMap = require("../utils/useMap");
|
|
14
|
+
var _TreeView = _interopRequireDefault(require("./TreeView"));
|
|
15
|
+
var _SearchView = _interopRequireDefault(require("./SearchView"));
|
|
16
|
+
var _hooks = require("./hooks");
|
|
17
|
+
/**
|
|
18
|
+
* CascadeTree is a component that displays tree-structured data in columns.
|
|
19
|
+
*
|
|
20
|
+
* @see https://rsuitejs.com/components/cascade-tree
|
|
21
|
+
*/
|
|
22
|
+
var CascadeTree = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
23
|
+
var _props$as = props.as,
|
|
24
|
+
Component = _props$as === void 0 ? 'div' : _props$as,
|
|
25
|
+
_props$data = props.data,
|
|
26
|
+
data = _props$data === void 0 ? [] : _props$data,
|
|
27
|
+
defaultValue = props.defaultValue,
|
|
28
|
+
className = props.className,
|
|
29
|
+
_props$classPrefix = props.classPrefix,
|
|
30
|
+
classPrefix = _props$classPrefix === void 0 ? 'cascade-tree' : _props$classPrefix,
|
|
31
|
+
_props$childrenKey = props.childrenKey,
|
|
32
|
+
childrenKey = _props$childrenKey === void 0 ? 'children' : _props$childrenKey,
|
|
33
|
+
_props$valueKey = props.valueKey,
|
|
34
|
+
valueKey = _props$valueKey === void 0 ? 'value' : _props$valueKey,
|
|
35
|
+
_props$labelKey = props.labelKey,
|
|
36
|
+
labelKey = _props$labelKey === void 0 ? 'label' : _props$labelKey,
|
|
37
|
+
valueProp = props.value,
|
|
38
|
+
_props$disabledItemVa = props.disabledItemValues,
|
|
39
|
+
disabledItemValues = _props$disabledItemVa === void 0 ? [] : _props$disabledItemVa,
|
|
40
|
+
columnWidth = props.columnWidth,
|
|
41
|
+
columnHeight = props.columnHeight,
|
|
42
|
+
searchable = props.searchable,
|
|
43
|
+
renderTreeNode = props.renderTreeNode,
|
|
44
|
+
renderColumn = props.renderColumn,
|
|
45
|
+
onSelect = props.onSelect,
|
|
46
|
+
onSearch = props.onSearch,
|
|
47
|
+
onChange = props.onChange,
|
|
48
|
+
getChildren = props.getChildren,
|
|
49
|
+
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "data", "defaultValue", "className", "classPrefix", "childrenKey", "valueKey", "labelKey", "value", "disabledItemValues", "columnWidth", "columnHeight", "searchable", "renderTreeNode", "renderColumn", "onSelect", "onSearch", "onChange", "getChildren"]);
|
|
50
|
+
var _ref = (0, _utils.useControlled)(valueProp, defaultValue),
|
|
51
|
+
value = _ref[0],
|
|
52
|
+
setValue = _ref[1]; // Store the children of each node
|
|
53
|
+
var childrenMap = (0, _useMap.useMap)();
|
|
54
|
+
|
|
55
|
+
// Store the parent of each node
|
|
56
|
+
var parentMap = (0, _react.useMemo)(function () {
|
|
57
|
+
return (0, _treeUtils.getParentMap)(data, function (item) {
|
|
58
|
+
var _childrenMap$get;
|
|
59
|
+
return (_childrenMap$get = childrenMap.get(item)) !== null && _childrenMap$get !== void 0 ? _childrenMap$get : item[childrenKey];
|
|
60
|
+
});
|
|
61
|
+
}, [childrenMap, childrenKey, data]);
|
|
62
|
+
|
|
63
|
+
// Flatten the tree data
|
|
64
|
+
var flattenedData = (0, _react.useMemo)(function () {
|
|
65
|
+
return (0, _treeUtils.flattenTree)(data, function (item) {
|
|
66
|
+
var _childrenMap$get2;
|
|
67
|
+
return (_childrenMap$get2 = childrenMap.get(item)) !== null && _childrenMap$get2 !== void 0 ? _childrenMap$get2 : item[childrenKey];
|
|
68
|
+
});
|
|
69
|
+
}, [childrenMap, childrenKey, data]);
|
|
70
|
+
|
|
71
|
+
// The selected item
|
|
72
|
+
var selectedItem = flattenedData.find(function (item) {
|
|
73
|
+
return item[valueKey] === value;
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
// Callback function after selecting the node
|
|
77
|
+
var onSelectCallback = function onSelectCallback(node, event) {
|
|
78
|
+
var isLeafNode = node.isLeafNode,
|
|
79
|
+
cascadePaths = node.cascadePaths,
|
|
80
|
+
itemData = node.itemData;
|
|
81
|
+
onSelect === null || onSelect === void 0 ? void 0 : onSelect(itemData, cascadePaths, event);
|
|
82
|
+
if (isLeafNode) {
|
|
83
|
+
var nextValue = itemData[valueKey];
|
|
84
|
+
setValue(nextValue);
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
var _useSelect = (0, _hooks.useSelect)({
|
|
88
|
+
value: value,
|
|
89
|
+
valueKey: valueKey,
|
|
90
|
+
childrenKey: childrenKey,
|
|
91
|
+
childrenMap: childrenMap,
|
|
92
|
+
selectedItem: selectedItem,
|
|
93
|
+
getChildren: getChildren,
|
|
94
|
+
onChange: onChange,
|
|
95
|
+
onSelect: onSelectCallback
|
|
96
|
+
}),
|
|
97
|
+
activeItem = _useSelect.activeItem,
|
|
98
|
+
loadingItemsSet = _useSelect.loadingItemsSet,
|
|
99
|
+
handleSelect = _useSelect.handleSelect;
|
|
100
|
+
var _usePaths = (0, _hooks.usePaths)({
|
|
101
|
+
data: data,
|
|
102
|
+
activeItem: activeItem,
|
|
103
|
+
selectedItem: selectedItem,
|
|
104
|
+
getParent: function getParent(item) {
|
|
105
|
+
return parentMap.get(item);
|
|
106
|
+
},
|
|
107
|
+
getChildren: function getChildren(item) {
|
|
108
|
+
var _childrenMap$get3;
|
|
109
|
+
return (_childrenMap$get3 = childrenMap.get(item)) !== null && _childrenMap$get3 !== void 0 ? _childrenMap$get3 : item[childrenKey];
|
|
110
|
+
}
|
|
111
|
+
}),
|
|
112
|
+
columns = _usePaths.columns,
|
|
113
|
+
pathTowardsActiveItem = _usePaths.pathTowardsActiveItem;
|
|
114
|
+
var _useClassNames = (0, _utils.useClassNames)(classPrefix),
|
|
115
|
+
withClassPrefix = _useClassNames.withClassPrefix,
|
|
116
|
+
merge = _useClassNames.merge;
|
|
117
|
+
var classes = merge(className, withClassPrefix());
|
|
118
|
+
var onSearchCallback = (0, _react.useCallback)(function (value, _items, event) {
|
|
119
|
+
return onSearch === null || onSearch === void 0 ? void 0 : onSearch(value, event);
|
|
120
|
+
}, [onSearch]);
|
|
121
|
+
var _useSearch = (0, _hooks.useSearch)({
|
|
122
|
+
labelKey: labelKey,
|
|
123
|
+
childrenKey: childrenKey,
|
|
124
|
+
parentMap: parentMap,
|
|
125
|
+
flattenedData: flattenedData,
|
|
126
|
+
onSearch: onSearchCallback
|
|
127
|
+
}),
|
|
128
|
+
items = _useSearch.items,
|
|
129
|
+
searchKeyword = _useSearch.searchKeyword,
|
|
130
|
+
setSearchKeyword = _useSearch.setSearchKeyword,
|
|
131
|
+
handleSearch = _useSearch.handleSearch;
|
|
132
|
+
var handleSearchRowSelect = (0, _utils.useEventCallback)(function (item, items, event) {
|
|
133
|
+
var _item$childrenKey;
|
|
134
|
+
var node = {
|
|
135
|
+
itemData: item,
|
|
136
|
+
cascadePaths: items,
|
|
137
|
+
isLeafNode: !((_item$childrenKey = item[childrenKey]) !== null && _item$childrenKey !== void 0 && _item$childrenKey.length)
|
|
138
|
+
};
|
|
139
|
+
handleSelect(node, event);
|
|
140
|
+
setSearchKeyword('');
|
|
141
|
+
});
|
|
142
|
+
return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({
|
|
143
|
+
className: classes
|
|
144
|
+
}, rest, {
|
|
145
|
+
ref: ref
|
|
146
|
+
}), searchable && /*#__PURE__*/_react.default.createElement(_SearchView.default, {
|
|
147
|
+
data: items,
|
|
148
|
+
searchKeyword: searchKeyword,
|
|
149
|
+
valueKey: valueKey,
|
|
150
|
+
labelKey: labelKey,
|
|
151
|
+
parentMap: parentMap,
|
|
152
|
+
disabledItemValues: disabledItemValues,
|
|
153
|
+
onSelect: handleSearchRowSelect,
|
|
154
|
+
onSearch: handleSearch
|
|
155
|
+
}), !searchKeyword && /*#__PURE__*/_react.default.createElement(_TreeView.default, {
|
|
156
|
+
columnWidth: columnWidth,
|
|
157
|
+
columnHeight: columnHeight,
|
|
158
|
+
disabledItemValues: disabledItemValues,
|
|
159
|
+
loadingItemsSet: loadingItemsSet,
|
|
160
|
+
valueKey: valueKey,
|
|
161
|
+
labelKey: labelKey,
|
|
162
|
+
childrenKey: childrenKey,
|
|
163
|
+
classPrefix: classPrefix,
|
|
164
|
+
data: columns,
|
|
165
|
+
cascadePaths: pathTowardsActiveItem,
|
|
166
|
+
activeItemValue: value,
|
|
167
|
+
onSelect: handleSelect,
|
|
168
|
+
renderColumn: renderColumn,
|
|
169
|
+
renderTreeNode: renderTreeNode
|
|
170
|
+
}));
|
|
171
|
+
});
|
|
172
|
+
CascadeTree.displayName = 'CascadeTree';
|
|
173
|
+
var _default = CascadeTree;
|
|
174
|
+
exports.default = _default;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ItemDataType, WithAsProps } from '../@types/common';
|
|
3
|
+
interface SearchViewProps<T> extends WithAsProps {
|
|
4
|
+
searchKeyword: string;
|
|
5
|
+
labelKey: string;
|
|
6
|
+
valueKey: string;
|
|
7
|
+
parentMap: WeakMap<ItemDataType<T>, ItemDataType<T>>;
|
|
8
|
+
data: ItemDataType<T>[];
|
|
9
|
+
focusItemValue?: T | null;
|
|
10
|
+
disabledItemValues: any[];
|
|
11
|
+
renderSearchItem?: (label: React.ReactNode, items: ItemDataType<T>[]) => React.ReactNode;
|
|
12
|
+
onSelect: (item: ItemDataType<T>, items: ItemDataType<T>[], event: React.MouseEvent) => void;
|
|
13
|
+
onSearch: (value: string, event: React.ChangeEvent<HTMLInputElement>) => void;
|
|
14
|
+
inputRef?: React.RefObject<HTMLInputElement>;
|
|
15
|
+
}
|
|
16
|
+
declare function SearchView<T>(props: SearchViewProps<T>): JSX.Element;
|
|
17
|
+
export default SearchView;
|