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.
Files changed (179) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/CascadeTree/package.json +7 -0
  3. package/CascadeTree/styles/index.css +273 -0
  4. package/CascadeTree/styles/index.less +77 -0
  5. package/CascadeTree/styles/search.less +45 -0
  6. package/Cascader/styles/index.css +187 -192
  7. package/Cascader/styles/index.less +1 -122
  8. package/MultiCascadeTree/package.json +7 -0
  9. package/MultiCascadeTree/styles/index.css +3701 -0
  10. package/MultiCascadeTree/styles/index.less +37 -0
  11. package/MultiCascader/styles/index.css +72 -69
  12. package/MultiCascader/styles/index.less +11 -31
  13. package/cjs/@types/common.d.ts +12 -14
  14. package/cjs/CascadeTree/CascadeTree.d.ts +16 -0
  15. package/cjs/CascadeTree/CascadeTree.js +174 -0
  16. package/cjs/CascadeTree/SearchView.d.ts +17 -0
  17. package/cjs/CascadeTree/SearchView.js +106 -0
  18. package/cjs/CascadeTree/TreeView.d.ts +20 -0
  19. package/cjs/{Cascader → CascadeTree}/TreeView.js +42 -33
  20. package/cjs/CascadeTree/hooks/index.d.ts +3 -0
  21. package/cjs/CascadeTree/hooks/index.js +12 -0
  22. package/cjs/{Cascader/utils.d.ts → CascadeTree/hooks/usePaths.d.ts} +3 -25
  23. package/cjs/CascadeTree/hooks/usePaths.js +42 -0
  24. package/cjs/CascadeTree/hooks/useSearch.d.ts +17 -0
  25. package/cjs/CascadeTree/hooks/useSearch.js +59 -0
  26. package/cjs/CascadeTree/hooks/useSelect.d.ts +23 -0
  27. package/cjs/CascadeTree/hooks/useSelect.js +64 -0
  28. package/cjs/CascadeTree/index.d.ts +4 -0
  29. package/cjs/CascadeTree/index.js +9 -0
  30. package/cjs/CascadeTree/types.d.ts +66 -0
  31. package/cjs/CascadeTree/types.js +2 -0
  32. package/cjs/CascadeTree/utils.d.ts +32 -0
  33. package/cjs/CascadeTree/utils.js +66 -0
  34. package/cjs/Cascader/Cascader.d.ts +57 -26
  35. package/cjs/Cascader/Cascader.js +180 -247
  36. package/cjs/Cascader/useActive.d.ts +15 -0
  37. package/cjs/Cascader/useActive.js +43 -0
  38. package/cjs/InlineEdit/InlineEdit.d.ts +1 -1
  39. package/cjs/Loader/Loader.js +5 -4
  40. package/cjs/MultiCascadeTree/MultiCascadeTree.d.ts +9 -0
  41. package/cjs/MultiCascadeTree/MultiCascadeTree.js +131 -0
  42. package/cjs/MultiCascadeTree/SearchView.d.ts +17 -0
  43. package/cjs/MultiCascadeTree/SearchView.js +117 -0
  44. package/cjs/MultiCascadeTree/TreeView.d.ts +22 -0
  45. package/cjs/{MultiCascader → MultiCascadeTree}/TreeView.js +20 -20
  46. package/cjs/MultiCascadeTree/hooks/index.d.ts +5 -0
  47. package/cjs/MultiCascadeTree/hooks/index.js +16 -0
  48. package/cjs/MultiCascadeTree/hooks/useCascadeValue.d.ts +18 -0
  49. package/cjs/MultiCascadeTree/hooks/useCascadeValue.js +202 -0
  50. package/cjs/MultiCascadeTree/hooks/useColumnData.d.ts +16 -0
  51. package/cjs/MultiCascadeTree/hooks/useColumnData.js +52 -0
  52. package/cjs/MultiCascadeTree/hooks/useFlattenData.d.ts +9 -0
  53. package/cjs/MultiCascadeTree/hooks/useFlattenData.js +33 -0
  54. package/cjs/MultiCascadeTree/hooks/useSearch.d.ts +17 -0
  55. package/cjs/MultiCascadeTree/hooks/useSearch.js +52 -0
  56. package/cjs/MultiCascadeTree/hooks/useSelect.d.ts +19 -0
  57. package/cjs/MultiCascadeTree/hooks/useSelect.js +83 -0
  58. package/cjs/MultiCascadeTree/index.d.ts +4 -0
  59. package/cjs/MultiCascadeTree/index.js +9 -0
  60. package/cjs/MultiCascadeTree/types.d.ts +26 -0
  61. package/cjs/MultiCascadeTree/types.js +2 -0
  62. package/cjs/MultiCascadeTree/utils.d.ts +37 -0
  63. package/cjs/MultiCascadeTree/utils.js +140 -0
  64. package/cjs/MultiCascader/MultiCascader.d.ts +57 -29
  65. package/cjs/MultiCascader/MultiCascader.js +175 -287
  66. package/cjs/Tree/Tree.d.ts +4 -4
  67. package/cjs/index.d.ts +6 -1
  68. package/cjs/index.js +8 -3
  69. package/cjs/internals/Picker/PickerToggle.d.ts +4 -5
  70. package/cjs/toaster/ToastContainer.d.ts +9 -2
  71. package/cjs/toaster/index.d.ts +0 -1
  72. package/cjs/toaster/index.js +1 -3
  73. package/cjs/useToaster/index.d.ts +2 -0
  74. package/cjs/useToaster/index.js +9 -0
  75. package/cjs/{toaster → useToaster}/useToaster.d.ts +4 -4
  76. package/cjs/{toaster → useToaster}/useToaster.js +4 -4
  77. package/cjs/utils/index.d.ts +1 -0
  78. package/cjs/utils/index.js +5 -2
  79. package/dist/rsuite-no-reset-rtl.css +64 -61
  80. package/dist/rsuite-no-reset-rtl.min.css +1 -1
  81. package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
  82. package/dist/rsuite-no-reset.css +64 -61
  83. package/dist/rsuite-no-reset.min.css +1 -1
  84. package/dist/rsuite-no-reset.min.css.map +1 -1
  85. package/dist/rsuite-rtl.css +64 -61
  86. package/dist/rsuite-rtl.min.css +1 -1
  87. package/dist/rsuite-rtl.min.css.map +1 -1
  88. package/dist/rsuite.css +64 -61
  89. package/dist/rsuite.js +242 -44
  90. package/dist/rsuite.js.map +1 -1
  91. package/dist/rsuite.min.css +1 -1
  92. package/dist/rsuite.min.css.map +1 -1
  93. package/dist/rsuite.min.js +1 -1
  94. package/dist/rsuite.min.js.map +1 -1
  95. package/esm/@types/common.d.ts +12 -14
  96. package/esm/CascadeTree/CascadeTree.d.ts +16 -0
  97. package/esm/CascadeTree/CascadeTree.js +167 -0
  98. package/esm/CascadeTree/SearchView.d.ts +17 -0
  99. package/esm/CascadeTree/SearchView.js +100 -0
  100. package/esm/CascadeTree/TreeView.d.ts +20 -0
  101. package/esm/{Cascader → CascadeTree}/TreeView.js +42 -33
  102. package/esm/CascadeTree/hooks/index.d.ts +3 -0
  103. package/esm/CascadeTree/hooks/index.js +4 -0
  104. package/esm/{Cascader/utils.d.ts → CascadeTree/hooks/usePaths.d.ts} +3 -25
  105. package/esm/CascadeTree/hooks/usePaths.js +36 -0
  106. package/esm/CascadeTree/hooks/useSearch.d.ts +17 -0
  107. package/esm/CascadeTree/hooks/useSearch.js +54 -0
  108. package/esm/CascadeTree/hooks/useSelect.d.ts +23 -0
  109. package/esm/CascadeTree/hooks/useSelect.js +59 -0
  110. package/esm/CascadeTree/index.d.ts +4 -0
  111. package/esm/CascadeTree/index.js +3 -0
  112. package/esm/CascadeTree/types.d.ts +66 -0
  113. package/esm/CascadeTree/types.js +1 -0
  114. package/esm/CascadeTree/utils.d.ts +32 -0
  115. package/esm/CascadeTree/utils.js +61 -0
  116. package/esm/Cascader/Cascader.d.ts +57 -26
  117. package/esm/Cascader/Cascader.js +167 -233
  118. package/esm/Cascader/useActive.d.ts +15 -0
  119. package/esm/Cascader/useActive.js +37 -0
  120. package/esm/InlineEdit/InlineEdit.d.ts +1 -1
  121. package/esm/Loader/Loader.js +6 -5
  122. package/esm/MultiCascadeTree/MultiCascadeTree.d.ts +9 -0
  123. package/esm/MultiCascadeTree/MultiCascadeTree.js +125 -0
  124. package/esm/MultiCascadeTree/SearchView.d.ts +17 -0
  125. package/esm/MultiCascadeTree/SearchView.js +111 -0
  126. package/esm/MultiCascadeTree/TreeView.d.ts +22 -0
  127. package/esm/{MultiCascader → MultiCascadeTree}/TreeView.js +20 -20
  128. package/esm/MultiCascadeTree/hooks/index.d.ts +5 -0
  129. package/esm/MultiCascadeTree/hooks/index.js +6 -0
  130. package/esm/MultiCascadeTree/hooks/useCascadeValue.d.ts +18 -0
  131. package/esm/MultiCascadeTree/hooks/useCascadeValue.js +197 -0
  132. package/esm/MultiCascadeTree/hooks/useColumnData.d.ts +16 -0
  133. package/esm/MultiCascadeTree/hooks/useColumnData.js +46 -0
  134. package/esm/MultiCascadeTree/hooks/useFlattenData.d.ts +9 -0
  135. package/esm/MultiCascadeTree/hooks/useFlattenData.js +28 -0
  136. package/esm/MultiCascadeTree/hooks/useSearch.d.ts +17 -0
  137. package/esm/MultiCascadeTree/hooks/useSearch.js +47 -0
  138. package/esm/MultiCascadeTree/hooks/useSelect.d.ts +19 -0
  139. package/esm/MultiCascadeTree/hooks/useSelect.js +77 -0
  140. package/esm/MultiCascadeTree/index.d.ts +4 -0
  141. package/esm/MultiCascadeTree/index.js +3 -0
  142. package/esm/MultiCascadeTree/types.d.ts +26 -0
  143. package/esm/MultiCascadeTree/types.js +1 -0
  144. package/esm/MultiCascadeTree/utils.d.ts +37 -0
  145. package/esm/MultiCascadeTree/utils.js +130 -0
  146. package/esm/MultiCascader/MultiCascader.d.ts +57 -29
  147. package/esm/MultiCascader/MultiCascader.js +168 -279
  148. package/esm/Tree/Tree.d.ts +4 -4
  149. package/esm/index.d.ts +6 -1
  150. package/esm/index.js +5 -1
  151. package/esm/internals/Picker/PickerToggle.d.ts +4 -5
  152. package/esm/toaster/ToastContainer.d.ts +9 -2
  153. package/esm/toaster/index.d.ts +0 -1
  154. package/esm/toaster/index.js +0 -1
  155. package/esm/useToaster/index.d.ts +2 -0
  156. package/esm/useToaster/index.js +3 -0
  157. package/esm/{toaster → useToaster}/useToaster.d.ts +4 -4
  158. package/esm/{toaster → useToaster}/useToaster.js +4 -4
  159. package/esm/utils/index.d.ts +1 -0
  160. package/esm/utils/index.js +2 -1
  161. package/package.json +1 -1
  162. package/styles/index.less +2 -0
  163. package/useToaster/package.json +7 -0
  164. package/useToaster/styles/index.css +239 -0
  165. package/useToaster/styles/index.less +1 -0
  166. package/cjs/Cascader/DropdownMenu.d.ts +0 -24
  167. package/cjs/Cascader/DropdownMenu.js +0 -175
  168. package/cjs/Cascader/TreeView.d.ts +0 -24
  169. package/cjs/Cascader/utils.js +0 -79
  170. package/cjs/MultiCascader/TreeView.d.ts +0 -25
  171. package/cjs/MultiCascader/utils.d.ts +0 -71
  172. package/cjs/MultiCascader/utils.js +0 -382
  173. package/esm/Cascader/DropdownMenu.d.ts +0 -24
  174. package/esm/Cascader/DropdownMenu.js +0 -168
  175. package/esm/Cascader/TreeView.d.ts +0 -24
  176. package/esm/Cascader/utils.js +0 -74
  177. package/esm/MultiCascader/TreeView.d.ts +0 -25
  178. package/esm/MultiCascader/utils.d.ts +0 -71
  179. 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-picker-cascader-menu-items > div::before,
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-picker-cascader-row {
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-picker-cascader-row:hover {
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-picker-cascader-row:hover {
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-picker-cascader-row:hover {
386
+ .rs-theme-high-contrast .rs-theme-high-contrast .rs-cascade-search-view-row:hover {
394
387
  outline-offset: 2px;
395
388
  }
396
- .rs-picker-cascader-row.rs-picker-cascader-row-focus {
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-picker-cascader-row.rs-picker-cascader-row-focus {
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-picker-cascader-row.rs-picker-cascader-row-focus {
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-picker-cascader-row:disabled,
415
- .rs-picker-cascader-row.rs-picker-cascader-row-disabled {
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-picker-cascader-row:disabled .rs-picker-cascader-search-match,
422
- .rs-picker-cascader-row.rs-picker-cascader-row-disabled .rs-picker-cascader-search-match {
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-picker-cascader-col {
419
+ .rs-cascade-search-view-col {
427
420
  display: inline-block;
428
421
  }
429
- .rs-picker-cascader-col::after {
422
+ .rs-cascade-search-view-col::after {
430
423
  content: '\00a0/\00a0';
431
424
  }
432
- .rs-picker-cascader-col:last-child::after {
425
+ .rs-cascade-search-view-col:last-child::after {
433
426
  display: none;
434
427
  }
435
- .rs-picker-cascader-search-match {
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-picker-cascader-menu-column {
441
- float: left;
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-picker-cascader-menu-column-loading {
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-picker-cascader-menu-column-loading .rs-icon {
461
+ .rs-cascade-tree-column-loading .rs-icon {
457
462
  margin: 4px;
458
463
  }
459
- .rs-picker-cascader-menu-items ul,
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-picker-cascader-menu-items-has-children .rs-picker-cascader-menu-item {
479
+ .rs-cascade-tree-items-has-children .rs-cascade-tree-item {
482
480
  padding-right: 32px;
483
481
  }
484
- .rs-picker-cascader-menu-item:hover,
485
- .rs-picker-cascader-menu-item:focus,
486
- .rs-picker-cascader-menu-item.rs-picker-select-menu-item-focus,
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-picker-cascader-menu-item:hover,
494
- .rs-theme-high-contrast .rs-picker-cascader-menu-item:focus,
495
- .rs-theme-high-contrast .rs-picker-cascader-menu-item.rs-picker-select-menu-item-focus,
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-picker-cascader-menu-item:hover,
506
- .rs-theme-high-contrast .rs-theme-high-contrast .rs-picker-cascader-menu-item:focus,
507
- .rs-theme-high-contrast .rs-theme-high-contrast .rs-picker-cascader-menu-item.rs-picker-select-menu-item-focus,
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-picker-cascader-menu-item.rs-picker-cascader-menu-item-active {
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-picker-cascader-menu-item.rs-picker-cascader-menu-item-active {
513
+ .rs-theme-high-contrast .rs-cascade-tree-item.rs-cascade-tree-item-active {
519
514
  text-decoration: underline;
520
515
  }
521
- .rs-picker-cascader-menu-item.rs-picker-cascader-menu-item-active .rs-picker-cascader-menu-caret {
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-picker-cascader-menu-item:disabled,
526
- .rs-picker-cascader-menu-item.rs-picker-cascader-menu-item-disabled {
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-picker-cascader-menu-caret {
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-menu .rs-check-item .rs-checkbox-checker > label {
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 '../../Cascader/styles/index';
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
- // MultiCascader
7
- // ----------------------
8
-
9
- .rs-picker-cascader {
10
- &-menu .rs-check-item .rs-checkbox-checker > label {
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
- &-menu-column&-menu-column-uncheckable {
22
- .rs-check-item .rs-checkbox-checker > label {
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
- }
@@ -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<LocaleType = any> extends WithAsProps, AnimationEventProps {
38
+ export interface PickerBaseProps<L = any> extends WithAsProps, AnimationEventProps {
39
39
  id?: string;
40
40
  /** Custom locale */
41
- locale?: Partial<LocaleType>;
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 FormControlPickerProps<ValueType = any, LocaleType = any, DataType = Record<string, any>> extends PickerBaseProps<LocaleType>, FormControlBaseProps<ValueType> {
111
+ export declare type ToArray<V> = V extends any[] ? V : V[];
112
+ export interface DataProps<TData> {
113
113
  /** The data of component */
114
- data: DataType[];
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
- /** Disabled items */
122
- disabledItemValues?: ToArray<NonNullable<ValueType>>;
123
- /** Initial value */
124
- defaultValue?: ValueType;
125
- /** Current value of the component. Creates a controlled component */
126
- value?: ValueType;
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;