rsuite 5.67.0 → 5.68.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/Nav/styles/index.css +68 -0
  3. package/Nav/styles/index.less +37 -0
  4. package/Tabs/styles/index.css +68 -3
  5. package/Tabs/styles/index.less +0 -4
  6. package/cjs/CheckTree/utils.d.ts +1 -1
  7. package/cjs/CheckTree/utils.js +1 -1
  8. package/cjs/DateInput/DateInput.js +18 -2
  9. package/cjs/DateInput/hooks/useDateInputState.d.ts +1 -0
  10. package/cjs/DateInput/hooks/useDateInputState.js +10 -9
  11. package/cjs/DateInput/hooks/useKeyboardInputEvent.js +5 -0
  12. package/cjs/DateRangeInput/DateRangeInput.js +24 -2
  13. package/cjs/Form/Form.js +4 -10
  14. package/cjs/Form/FormContext.d.ts +2 -4
  15. package/cjs/Form/hooks/useFormValidate.d.ts +2 -2
  16. package/cjs/Form/hooks/useFormValidate.js +99 -35
  17. package/cjs/FormControl/FormControl.js +6 -22
  18. package/cjs/Nav/AdaptiveNavItem.d.ts +1 -1
  19. package/cjs/Nav/Nav.d.ts +28 -9
  20. package/cjs/Nav/Nav.js +1 -1
  21. package/cjs/Nav/NavContext.d.ts +2 -2
  22. package/cjs/Nav/NavItem.d.ts +1 -1
  23. package/cjs/Navbar/NavbarItem.d.ts +1 -1
  24. package/cjs/Sidenav/Sidenav.d.ts +3 -3
  25. package/cjs/Tabs/Tabs.d.ts +20 -17
  26. package/cjs/Tabs/Tabs.js +5 -1
  27. package/cjs/internals/Overlay/OverlayTrigger.d.ts +2 -2
  28. package/cjs/internals/Overlay/OverlayTrigger.js +17 -8
  29. package/cjs/internals/utils/BrowserDetection.js +6 -0
  30. package/cjs/internals/utils/ReactChildren.d.ts +6 -0
  31. package/cjs/internals/utils/ReactChildren.js +1 -0
  32. package/dist/rsuite-no-reset-rtl.css +65 -3
  33. package/dist/rsuite-no-reset-rtl.min.css +1 -1
  34. package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
  35. package/dist/rsuite-no-reset.css +65 -3
  36. package/dist/rsuite-no-reset.min.css +1 -1
  37. package/dist/rsuite-no-reset.min.css.map +1 -1
  38. package/dist/rsuite-rtl.css +65 -3
  39. package/dist/rsuite-rtl.min.css +1 -1
  40. package/dist/rsuite-rtl.min.css.map +1 -1
  41. package/dist/rsuite.css +65 -3
  42. package/dist/rsuite.js +13 -13
  43. package/dist/rsuite.min.css +1 -1
  44. package/dist/rsuite.min.css.map +1 -1
  45. package/dist/rsuite.min.js +1 -1
  46. package/dist/rsuite.min.js.map +1 -1
  47. package/esm/CheckTree/utils.d.ts +1 -1
  48. package/esm/CheckTree/utils.js +1 -1
  49. package/esm/DateInput/DateInput.js +18 -2
  50. package/esm/DateInput/hooks/useDateInputState.d.ts +1 -0
  51. package/esm/DateInput/hooks/useDateInputState.js +11 -10
  52. package/esm/DateInput/hooks/useKeyboardInputEvent.js +5 -0
  53. package/esm/DateRangeInput/DateRangeInput.js +24 -2
  54. package/esm/Form/Form.js +4 -10
  55. package/esm/Form/FormContext.d.ts +2 -4
  56. package/esm/Form/hooks/useFormValidate.d.ts +2 -2
  57. package/esm/Form/hooks/useFormValidate.js +98 -34
  58. package/esm/FormControl/FormControl.js +6 -22
  59. package/esm/Nav/AdaptiveNavItem.d.ts +1 -1
  60. package/esm/Nav/Nav.d.ts +28 -9
  61. package/esm/Nav/Nav.js +1 -1
  62. package/esm/Nav/NavContext.d.ts +2 -2
  63. package/esm/Nav/NavItem.d.ts +1 -1
  64. package/esm/Navbar/NavbarItem.d.ts +1 -1
  65. package/esm/Sidenav/Sidenav.d.ts +3 -3
  66. package/esm/Tabs/Tabs.d.ts +20 -17
  67. package/esm/Tabs/Tabs.js +6 -1
  68. package/esm/internals/Overlay/OverlayTrigger.d.ts +2 -2
  69. package/esm/internals/Overlay/OverlayTrigger.js +18 -9
  70. package/esm/internals/utils/BrowserDetection.js +6 -0
  71. package/esm/internals/utils/ReactChildren.d.ts +6 -0
  72. package/esm/internals/utils/ReactChildren.js +1 -1
  73. package/package.json +1 -1
  74. package/styles/color-modes/dark.less +7 -0
  75. package/styles/color-modes/high-contrast.less +7 -0
  76. package/styles/color-modes/light.less +8 -0
  77. package/styles/plugins/palette.js +34 -6
package/CHANGELOG.md CHANGED
@@ -1,3 +1,29 @@
1
+ ## [5.68.1](https://github.com/rsuite/rsuite/compare/v5.68.0...v5.68.1) (2024-08-02)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **CheckTree:** fix uncontrolled component default value ([#3906](https://github.com/rsuite/rsuite/issues/3906)) ([01aab7d](https://github.com/rsuite/rsuite/commit/01aab7df14661743e5dfae7fd3f612fc227816c7))
7
+
8
+
9
+
10
+ # [5.68.0](https://github.com/rsuite/rsuite/compare/v5.67.0...v5.68.0) (2024-07-26)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * **DateInput,DateRangeInput:** fix the date in the text box cannot be copied ([#3888](https://github.com/rsuite/rsuite/issues/3888)) ([1d95107](https://github.com/rsuite/rsuite/commit/1d95107d96ebe5bacb73c3fee8427efc59b1f673))
16
+ * **Form:** fix `proxy` function in `schema-typed` not work in form ([#3863](https://github.com/rsuite/rsuite/issues/3863)) ([63c0e3a](https://github.com/rsuite/rsuite/commit/63c0e3a07a17eeb1158c75b49fb8fc3a65199e16))
17
+ * **Stack:** fix the compatibility of spacing in Linux Firefox ([#3889](https://github.com/rsuite/rsuite/issues/3889)) ([44ed16f](https://github.com/rsuite/rsuite/commit/44ed16f7f1f41c7beda063a86588cbe9c52c6496))
18
+ * **Whisper:** fix Whisper children not support string and other basic types ([#3893](https://github.com/rsuite/rsuite/issues/3893)) ([70fb61d](https://github.com/rsuite/rsuite/commit/70fb61da619ce0a94129eb6f02972b4ce16c5016))
19
+
20
+
21
+ ### Features
22
+
23
+ * **Nav,Tabs:** add `pills` value to the appearance property ([#3890](https://github.com/rsuite/rsuite/issues/3890)) ([eae279f](https://github.com/rsuite/rsuite/commit/eae279fa5ede8c6ce2c3676585f1cc85c9644b8e))
24
+
25
+
26
+
1
27
  # [5.67.0](https://github.com/rsuite/rsuite/compare/v5.66.0...v5.67.0) (2024-07-19)
2
28
 
3
29
 
@@ -70,6 +70,7 @@
70
70
  --rs-violet-800: #470c99;
71
71
  --rs-violet-900: #390085;
72
72
  --rs-text-primary: var(--rs-gray-800);
73
+ --rs-text-secondary: var(--rs-gray-600);
73
74
  --rs-text-disabled: var(--rs-gray-600);
74
75
  --rs-border-primary: var(--rs-gray-200);
75
76
  --rs-bg-card: var(--rs-gray-0);
@@ -119,6 +120,12 @@
119
120
  --rs-navs-tab-border: var(--rs-gray-300);
120
121
  --rs-navs-subtle-border: var(--rs-gray-50);
121
122
  --rs-navs-selected: var(--rs-primary-700);
123
+ --rs-navs-pills-bg: var(--rs-gray-100);
124
+ --rs-navs-pills-item-color: var(--rs-text-secondary);
125
+ --rs-navs-pills-item-active-bg: var(--rs-gray-0);
126
+ --rs-navs-pills-item-active-color: var(--rs-gray-900);
127
+ --rs-navs-pills-item-disabled-color: var(--rs-gray-400);
128
+ --rs-navs-pills-item-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
122
129
  }
123
130
  @supports not (color: rgb(from white r g b)) {
124
131
  :root,
@@ -200,6 +207,7 @@
200
207
  --rs-violet-800: #470c99;
201
208
  --rs-violet-900: #390085;
202
209
  --rs-text-primary: var(--rs-gray-50);
210
+ --rs-text-secondary: var(--rs-gray-200);
203
211
  --rs-text-disabled: var(--rs-gray-400);
204
212
  --rs-border-primary: var(--rs-gray-600);
205
213
  --rs-bg-card: var(--rs-gray-800);
@@ -249,6 +257,11 @@
249
257
  --rs-navs-tab-border: var(--rs-gray-600);
250
258
  --rs-navs-subtle-border: var(--rs-gray-600);
251
259
  --rs-navs-selected: var(--rs-primary-500);
260
+ --rs-navs-pills-bg: var(--rs-gray-700);
261
+ --rs-navs-pills-item-color: var(--rs-text-secondary);
262
+ --rs-navs-pills-item-active-bg: var(--rs-gray-600);
263
+ --rs-navs-pills-item-active-color: var(--rs-gray-0);
264
+ --rs-navs-pills-item-disabled-color: var(--rs-gray-400);
252
265
  }
253
266
  @supports not (color: rgb(from white r g b)) {
254
267
  .rs-theme-dark {
@@ -329,6 +342,7 @@
329
342
  --rs-violet-800: #470c99;
330
343
  --rs-violet-900: #390085;
331
344
  --rs-text-primary: var(--rs-gray-50);
345
+ --rs-text-secondary: var(--rs-gray-200);
332
346
  --rs-text-disabled: var(--rs-gray-400);
333
347
  --rs-border-primary: var(--rs-gray-100);
334
348
  --rs-bg-card: var(--rs-gray-800);
@@ -381,6 +395,11 @@
381
395
  --rs-navs-tab-border: var(--rs-gray-600);
382
396
  --rs-navs-subtle-border: var(--rs-gray-600);
383
397
  --rs-navs-selected: var(--rs-primary-500);
398
+ --rs-navs-pills-bg: var(--rs-gray-700);
399
+ --rs-navs-pills-item-color: var(--rs-text-secondary);
400
+ --rs-navs-pills-item-active-bg: var(--rs-gray-600);
401
+ --rs-navs-pills-item-active-color: var(--rs-primary-500);
402
+ --rs-navs-pills-item-disabled-color: var(--rs-gray-400);
384
403
  }
385
404
  @supports not (color: rgb(from white r g b)) {
386
405
  .rs-theme-high-contrast {
@@ -1664,6 +1683,7 @@
1664
1683
  cursor: pointer;
1665
1684
  color: #343434;
1666
1685
  color: var(--rs-navs-text);
1686
+ background: transparent;
1667
1687
  -webkit-transition: color 0.15s ease-out, background-color 0.15s ease-out;
1668
1688
  transition: color 0.15s ease-out, background-color 0.15s ease-out;
1669
1689
  overflow: hidden;
@@ -1749,6 +1769,9 @@
1749
1769
  -webkit-box-align: center;
1750
1770
  -ms-flex-align: center;
1751
1771
  align-items: center;
1772
+ -webkit-box-pack: center;
1773
+ -ms-flex-pack: center;
1774
+ justify-content: center;
1752
1775
  vertical-align: top;
1753
1776
  }
1754
1777
  .rs-nav-horizontal .rs-nav-bar {
@@ -1889,6 +1912,51 @@
1889
1912
  right: auto;
1890
1913
  left: 0;
1891
1914
  }
1915
+ .rs-nav-pills {
1916
+ display: -webkit-inline-box;
1917
+ display: -ms-inline-flexbox;
1918
+ display: inline-flex;
1919
+ background-color: #f2f2f5;
1920
+ background-color: var(--rs-navs-pills-bg);
1921
+ border-radius: 6px;
1922
+ padding: 4px;
1923
+ width: -webkit-max-content;
1924
+ width: -moz-max-content;
1925
+ width: max-content;
1926
+ }
1927
+ .rs-nav-pills .rs-nav-item {
1928
+ border-radius: 6px;
1929
+ position: relative;
1930
+ padding: 4px 12px;
1931
+ color: #717273;
1932
+ color: var(--rs-navs-pills-item-color);
1933
+ }
1934
+ .rs-nav-pills .rs-nav-item-active {
1935
+ background-color: #fff;
1936
+ background-color: var(--rs-navs-pills-item-active-bg);
1937
+ color: #121212;
1938
+ color: var(--rs-navs-pills-item-active-color);
1939
+ -webkit-box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
1940
+ -webkit-box-shadow: var(--rs-navs-pills-item-shadow);
1941
+ box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
1942
+ box-shadow: var(--rs-navs-pills-item-shadow);
1943
+ }
1944
+ .rs-nav-pills .rs-nav-item-disabled {
1945
+ color: #b6b7b8;
1946
+ color: var(--rs-navs-pills-item-disabled-color);
1947
+ }
1948
+ .rs-nav-pills.rs-nav-vertical {
1949
+ -webkit-box-orient: vertical;
1950
+ -webkit-box-direction: normal;
1951
+ -ms-flex-direction: column;
1952
+ flex-direction: column;
1953
+ }
1954
+ .rs-nav-pills.rs-nav-vertical .rs-nav-item {
1955
+ padding: 6px 12px;
1956
+ -webkit-box-pack: center;
1957
+ -ms-flex-pack: center;
1958
+ justify-content: center;
1959
+ }
1892
1960
  .rs-nav-justified {
1893
1961
  display: -webkit-box;
1894
1962
  display: -ms-flexbox;
@@ -32,6 +32,7 @@
32
32
  padding: 8px 12px;
33
33
  cursor: pointer;
34
34
  color: var(--rs-navs-text);
35
+ background: transparent;
35
36
  transition: @nav-item-transition;
36
37
  .ellipsis-basic();
37
38
  .safari-border-radius-overflow-hidden();
@@ -101,6 +102,7 @@
101
102
  > .rs-nav-item {
102
103
  display: inline-flex;
103
104
  align-items: center;
105
+ justify-content: center;
104
106
  vertical-align: top;
105
107
  }
106
108
 
@@ -300,6 +302,41 @@
300
302
  }
301
303
  }
302
304
 
305
+ // Pills Nav
306
+ .rs-nav-pills {
307
+ display: inline-flex;
308
+ background-color: var(--rs-navs-pills-bg);
309
+ border-radius: 6px;
310
+ padding: 4px;
311
+ width: max-content;
312
+
313
+ .rs-nav-item {
314
+ border-radius: 6px;
315
+ position: relative;
316
+ padding: 4px 12px;
317
+ color: var(--rs-navs-pills-item-color);
318
+
319
+ &-active {
320
+ background-color: var(--rs-navs-pills-item-active-bg);
321
+ color: var(--rs-navs-pills-item-active-color);
322
+ box-shadow: var(--rs-navs-pills-item-shadow);
323
+ }
324
+
325
+ &-disabled {
326
+ color: var(--rs-navs-pills-item-disabled-color);
327
+ }
328
+ }
329
+
330
+ &.rs-nav-vertical {
331
+ flex-direction: column;
332
+
333
+ .rs-nav-item {
334
+ padding: 6px 12px;
335
+ justify-content: center;
336
+ }
337
+ }
338
+ }
339
+
303
340
  // Justified
304
341
  .rs-nav-justified {
305
342
  display: flex;
@@ -70,6 +70,7 @@
70
70
  --rs-violet-800: #470c99;
71
71
  --rs-violet-900: #390085;
72
72
  --rs-text-primary: var(--rs-gray-800);
73
+ --rs-text-secondary: var(--rs-gray-600);
73
74
  --rs-text-disabled: var(--rs-gray-600);
74
75
  --rs-border-primary: var(--rs-gray-200);
75
76
  --rs-bg-card: var(--rs-gray-0);
@@ -119,6 +120,12 @@
119
120
  --rs-navs-tab-border: var(--rs-gray-300);
120
121
  --rs-navs-subtle-border: var(--rs-gray-50);
121
122
  --rs-navs-selected: var(--rs-primary-700);
123
+ --rs-navs-pills-bg: var(--rs-gray-100);
124
+ --rs-navs-pills-item-color: var(--rs-text-secondary);
125
+ --rs-navs-pills-item-active-bg: var(--rs-gray-0);
126
+ --rs-navs-pills-item-active-color: var(--rs-gray-900);
127
+ --rs-navs-pills-item-disabled-color: var(--rs-gray-400);
128
+ --rs-navs-pills-item-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
122
129
  }
123
130
  @supports not (color: rgb(from white r g b)) {
124
131
  :root,
@@ -200,6 +207,7 @@
200
207
  --rs-violet-800: #470c99;
201
208
  --rs-violet-900: #390085;
202
209
  --rs-text-primary: var(--rs-gray-50);
210
+ --rs-text-secondary: var(--rs-gray-200);
203
211
  --rs-text-disabled: var(--rs-gray-400);
204
212
  --rs-border-primary: var(--rs-gray-600);
205
213
  --rs-bg-card: var(--rs-gray-800);
@@ -249,6 +257,11 @@
249
257
  --rs-navs-tab-border: var(--rs-gray-600);
250
258
  --rs-navs-subtle-border: var(--rs-gray-600);
251
259
  --rs-navs-selected: var(--rs-primary-500);
260
+ --rs-navs-pills-bg: var(--rs-gray-700);
261
+ --rs-navs-pills-item-color: var(--rs-text-secondary);
262
+ --rs-navs-pills-item-active-bg: var(--rs-gray-600);
263
+ --rs-navs-pills-item-active-color: var(--rs-gray-0);
264
+ --rs-navs-pills-item-disabled-color: var(--rs-gray-400);
252
265
  }
253
266
  @supports not (color: rgb(from white r g b)) {
254
267
  .rs-theme-dark {
@@ -329,6 +342,7 @@
329
342
  --rs-violet-800: #470c99;
330
343
  --rs-violet-900: #390085;
331
344
  --rs-text-primary: var(--rs-gray-50);
345
+ --rs-text-secondary: var(--rs-gray-200);
332
346
  --rs-text-disabled: var(--rs-gray-400);
333
347
  --rs-border-primary: var(--rs-gray-100);
334
348
  --rs-bg-card: var(--rs-gray-800);
@@ -381,6 +395,11 @@
381
395
  --rs-navs-tab-border: var(--rs-gray-600);
382
396
  --rs-navs-subtle-border: var(--rs-gray-600);
383
397
  --rs-navs-selected: var(--rs-primary-500);
398
+ --rs-navs-pills-bg: var(--rs-gray-700);
399
+ --rs-navs-pills-item-color: var(--rs-text-secondary);
400
+ --rs-navs-pills-item-active-bg: var(--rs-gray-600);
401
+ --rs-navs-pills-item-active-color: var(--rs-primary-500);
402
+ --rs-navs-pills-item-disabled-color: var(--rs-gray-400);
384
403
  }
385
404
  @supports not (color: rgb(from white r g b)) {
386
405
  .rs-theme-high-contrast {
@@ -1664,6 +1683,7 @@
1664
1683
  cursor: pointer;
1665
1684
  color: #343434;
1666
1685
  color: var(--rs-navs-text);
1686
+ background: transparent;
1667
1687
  -webkit-transition: color 0.15s ease-out, background-color 0.15s ease-out;
1668
1688
  transition: color 0.15s ease-out, background-color 0.15s ease-out;
1669
1689
  overflow: hidden;
@@ -1749,6 +1769,9 @@
1749
1769
  -webkit-box-align: center;
1750
1770
  -ms-flex-align: center;
1751
1771
  align-items: center;
1772
+ -webkit-box-pack: center;
1773
+ -ms-flex-pack: center;
1774
+ justify-content: center;
1752
1775
  vertical-align: top;
1753
1776
  }
1754
1777
  .rs-nav-horizontal .rs-nav-bar {
@@ -1889,6 +1912,51 @@
1889
1912
  right: auto;
1890
1913
  left: 0;
1891
1914
  }
1915
+ .rs-nav-pills {
1916
+ display: -webkit-inline-box;
1917
+ display: -ms-inline-flexbox;
1918
+ display: inline-flex;
1919
+ background-color: #f2f2f5;
1920
+ background-color: var(--rs-navs-pills-bg);
1921
+ border-radius: 6px;
1922
+ padding: 4px;
1923
+ width: -webkit-max-content;
1924
+ width: -moz-max-content;
1925
+ width: max-content;
1926
+ }
1927
+ .rs-nav-pills .rs-nav-item {
1928
+ border-radius: 6px;
1929
+ position: relative;
1930
+ padding: 4px 12px;
1931
+ color: #717273;
1932
+ color: var(--rs-navs-pills-item-color);
1933
+ }
1934
+ .rs-nav-pills .rs-nav-item-active {
1935
+ background-color: #fff;
1936
+ background-color: var(--rs-navs-pills-item-active-bg);
1937
+ color: #121212;
1938
+ color: var(--rs-navs-pills-item-active-color);
1939
+ -webkit-box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
1940
+ -webkit-box-shadow: var(--rs-navs-pills-item-shadow);
1941
+ box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
1942
+ box-shadow: var(--rs-navs-pills-item-shadow);
1943
+ }
1944
+ .rs-nav-pills .rs-nav-item-disabled {
1945
+ color: #b6b7b8;
1946
+ color: var(--rs-navs-pills-item-disabled-color);
1947
+ }
1948
+ .rs-nav-pills.rs-nav-vertical {
1949
+ -webkit-box-orient: vertical;
1950
+ -webkit-box-direction: normal;
1951
+ -ms-flex-direction: column;
1952
+ flex-direction: column;
1953
+ }
1954
+ .rs-nav-pills.rs-nav-vertical .rs-nav-item {
1955
+ padding: 6px 12px;
1956
+ -webkit-box-pack: center;
1957
+ -ms-flex-pack: center;
1958
+ justify-content: center;
1959
+ }
1892
1960
  .rs-nav-justified {
1893
1961
  display: -webkit-box;
1894
1962
  display: -ms-flexbox;
@@ -1931,9 +1999,6 @@
1931
1999
  -ms-flex: 1;
1932
2000
  flex: 1;
1933
2001
  }
1934
- .rs-tabs .rs-nav-item {
1935
- background: none;
1936
- }
1937
2002
  .rs-tabs .rs-nav-vertical {
1938
2003
  display: -webkit-box;
1939
2004
  display: -ms-flexbox;
@@ -17,10 +17,6 @@
17
17
  }
18
18
  }
19
19
 
20
- .rs-nav-item {
21
- background: none;
22
- }
23
-
24
20
  .rs-nav-vertical {
25
21
  display: flex;
26
22
  flex-direction: column;
@@ -36,7 +36,7 @@ export declare function getDisabledState(nodes: TreeNodeMap, node: TreeNode, pro
36
36
  /**
37
37
  * Returns the default value for the check tree.
38
38
  */
39
- export declare function getCheckTreeDefaultValue<T = any>(value: T, uncheckableItemValues: T): any[];
39
+ export declare function getCheckTreeDefaultValue<T = any>(value: T, uncheckableItemValues: T): any[] | T;
40
40
  /**
41
41
  * Retrieves the selected items from the given nodes.
42
42
  */
@@ -188,7 +188,7 @@ function getCheckTreeDefaultValue(value, uncheckableItemValues) {
188
188
  return !uncheckableItemValues.includes(v);
189
189
  });
190
190
  }
191
- return [];
191
+ return value;
192
192
  }
193
193
 
194
194
  /**
@@ -11,13 +11,14 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
11
11
  var _Input = _interopRequireDefault(require("../Input"));
12
12
  var _hooks = require("../internals/hooks");
13
13
  var _utils = require("../internals/utils");
14
+ var _date = require("../internals/utils/date");
14
15
  var _utils2 = require("./utils");
15
16
  var _useDateInputState2 = _interopRequireDefault(require("./hooks/useDateInputState"));
16
17
  var _useKeyboardInputEvent = _interopRequireDefault(require("./hooks/useKeyboardInputEvent"));
17
18
  var _useIsFocused2 = _interopRequireDefault(require("./hooks/useIsFocused"));
18
19
  var _useFieldCursor2 = _interopRequireDefault(require("./hooks/useFieldCursor"));
19
20
  var _useSelectedState2 = _interopRequireDefault(require("./hooks/useSelectedState"));
20
- var _excluded = ["format", "value", "defaultValue", "placeholder", "onChange", "onKeyDown", "onBlur", "onFocus"];
21
+ var _excluded = ["format", "value", "defaultValue", "placeholder", "onChange", "onKeyDown", "onBlur", "onFocus", "onPaste"];
21
22
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
22
23
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
23
24
  /**
@@ -35,13 +36,15 @@ var DateInput = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
35
36
  onKeyDown = props.onKeyDown,
36
37
  onBlur = props.onBlur,
37
38
  onFocus = props.onFocus,
39
+ onPaste = props.onPaste,
38
40
  rest = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
39
41
  var inputRef = (0, _react.useRef)();
40
42
  var _useSelectedState = (0, _useSelectedState2.default)(),
41
43
  selectedState = _useSelectedState.selectedState,
42
44
  setSelectedState = _useSelectedState.setSelectedState;
43
45
  var _useCustom = (0, _hooks.useCustom)('Calendar'),
44
- locale = _useCustom.locale;
46
+ locale = _useCustom.locale,
47
+ parseDate = _useCustom.parseDate;
45
48
  var dateLocale = locale.dateLocale;
46
49
  var _useControlled = (0, _hooks.useControlled)(valueProp, defaultValue),
47
50
  value = _useControlled[0],
@@ -56,6 +59,7 @@ var DateInput = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
56
59
  dateField = _useDateInputState.dateField,
57
60
  setDateOffset = _useDateInputState.setDateOffset,
58
61
  setDateField = _useDateInputState.setDateField,
62
+ setNewDate = _useDateInputState.setNewDate,
59
63
  getDateField = _useDateInputState.getDateField,
60
64
  toDateString = _useDateInputState.toDateString,
61
65
  isEmptyValue = _useDateInputState.isEmptyValue;
@@ -169,6 +173,17 @@ var DateInput = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
169
173
  reset();
170
174
  }
171
175
  });
176
+ var handlePaste = (0, _hooks.useEventCallback)(function (event) {
177
+ var _event$clipboardData;
178
+ event.preventDefault();
179
+ var pasteText = (_event$clipboardData = event.clipboardData) === null || _event$clipboardData === void 0 ? void 0 : _event$clipboardData.getData('text');
180
+ var nextDate = parseDate(pasteText, formatStr);
181
+ if ((0, _date.isValid)(nextDate)) {
182
+ handleChange(nextDate, event);
183
+ setNewDate(nextDate);
184
+ }
185
+ onPaste === null || onPaste === void 0 ? void 0 : onPaste(event);
186
+ });
172
187
  var onKeyboardInput = (0, _useKeyboardInputEvent.default)({
173
188
  onSegmentChange: onSegmentChange,
174
189
  onSegmentValueChange: onSegmentValueChange,
@@ -196,6 +211,7 @@ var DateInput = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
196
211
  ref: (0, _utils.mergeRefs)(inputRef, ref),
197
212
  onKeyDown: onKeyboardInput,
198
213
  onClick: handleClick,
214
+ onPaste: handlePaste,
199
215
  value: renderedValue,
200
216
  placeholder: placeholder || formatStr
201
217
  }, focusEventProps, rest));
@@ -131,6 +131,7 @@ export declare function useDateInputState({ formatStr, locale, date, isControlle
131
131
  };
132
132
  setDateOffset: (pattern: string, offset: number, callback?: ((newDate: Date | null) => void) | undefined) => void;
133
133
  setDateField: (pattern: string, value: number | null, callback?: ((newDate: Date | null) => void) | undefined) => void;
134
+ setNewDate: (value: Date | null) => void;
134
135
  getDateField: (pattern: string) => {
135
136
  name: any;
136
137
  value: any;
@@ -101,25 +101,26 @@ function useDateInputState(_ref) {
101
101
  // if date is not valid, return uncontrolled date string
102
102
  return toDateString();
103
103
  };
104
+ var setNewDate = (0, _react.useCallback)(function (value) {
105
+ dispatch({
106
+ type: 'setNewDate',
107
+ value: value
108
+ });
109
+ }, [dispatch]);
104
110
  (0, _react.useEffect)(function () {
105
111
  if (isControlledDate) {
106
112
  if (date && (0, _date.isValid)(date)) {
107
- dispatch({
108
- type: 'setNewDate',
109
- value: date
110
- });
113
+ setNewDate(date);
111
114
  } else if (date === null) {
112
- dispatch({
113
- type: 'setNewDate',
114
- value: null
115
- });
115
+ setNewDate(null);
116
116
  }
117
117
  }
118
- }, [date, dispatch, isControlledDate]);
118
+ }, [date, dispatch, isControlledDate, setNewDate]);
119
119
  return {
120
120
  dateField: dateField,
121
121
  setDateOffset: setDateOffset,
122
122
  setDateField: setDateField,
123
+ setNewDate: setNewDate,
123
124
  getDateField: getDateField,
124
125
  toDateString: isControlledDate ? toControlledDateString : toDateString,
125
126
  isEmptyValue: isEmptyValue
@@ -33,6 +33,11 @@ function useKeyboardInputEvent(_ref) {
33
33
  onSegmentValueChangeWithNumericKeys === null || onSegmentValueChangeWithNumericKeys === void 0 ? void 0 : onSegmentValueChangeWithNumericKeys(event);
34
34
  event.preventDefault();
35
35
  case (_key$match2 = key.match(/[a-z]/)) === null || _key$match2 === void 0 ? void 0 : _key$match2[0]:
36
+ // Determine whether the Ctrl or Command key is pressed, does not affect user copy and paste
37
+ if (event.ctrlKey || event.metaKey) {
38
+ break;
39
+ }
40
+
36
41
  // Prevent letters from being entered
37
42
  event.preventDefault();
38
43
  break;
@@ -9,11 +9,12 @@ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runt
9
9
  var _react = _interopRequireWildcard(require("react"));
10
10
  var _propTypes = _interopRequireDefault(require("prop-types"));
11
11
  var _Input = _interopRequireDefault(require("../Input"));
12
+ var _date = require("../internals/utils/date");
12
13
  var _hooks = require("../internals/hooks");
13
14
  var _utils = require("../internals/utils");
14
15
  var _DateInput = require("../DateInput");
15
16
  var _utils2 = require("./utils");
16
- var _excluded = ["className", "classPrefix", "character", "format", "value", "defaultValue", "placeholder", "onChange", "onKeyDown", "onBlur", "onFocus"];
17
+ var _excluded = ["className", "classPrefix", "character", "format", "value", "defaultValue", "placeholder", "onChange", "onKeyDown", "onBlur", "onFocus", "onPaste"];
17
18
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
18
19
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
19
20
  /**
@@ -37,6 +38,7 @@ var DateRangeInput = /*#__PURE__*/_react.default.forwardRef(function (props, ref
37
38
  onKeyDown = props.onKeyDown,
38
39
  onBlur = props.onBlur,
39
40
  onFocus = props.onFocus,
41
+ onPaste = props.onPaste,
40
42
  rest = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
41
43
  var _useClassNames = (0, _hooks.useClassNames)(classPrefix),
42
44
  withClassPrefix = _useClassNames.withClassPrefix,
@@ -47,7 +49,8 @@ var DateRangeInput = /*#__PURE__*/_react.default.forwardRef(function (props, ref
47
49
  selectedState = _useSelectedState.selectedState,
48
50
  setSelectedState = _useSelectedState.setSelectedState;
49
51
  var _useCustom = (0, _hooks.useCustom)('Calendar'),
50
- locale = _useCustom.locale;
52
+ locale = _useCustom.locale,
53
+ parseDate = _useCustom.parseDate;
51
54
  var rangeFormatStr = "" + formatStr + character + formatStr;
52
55
  var dateLocale = locale.dateLocale;
53
56
  var _useControlled = (0, _hooks.useControlled)(valueProp, defaultValue),
@@ -218,6 +221,24 @@ var DateRangeInput = /*#__PURE__*/_react.default.forwardRef(function (props, ref
218
221
  reset();
219
222
  }
220
223
  });
224
+ var handlePaste = (0, _hooks.useEventCallback)(function (event) {
225
+ var _event$clipboardData;
226
+ event.preventDefault();
227
+ var pasteText = (_event$clipboardData = event.clipboardData) === null || _event$clipboardData === void 0 ? void 0 : _event$clipboardData.getData('text');
228
+ var _ref = pasteText.split(character).map(function (date) {
229
+ return parseDate(date, formatStr);
230
+ }),
231
+ start = _ref[0],
232
+ end = _ref[1];
233
+ if ((0, _date.isValid)(start) && (0, _date.isValid)(end)) {
234
+ var nextValue = [start, end];
235
+ onChange === null || onChange === void 0 ? void 0 : onChange(nextValue, event);
236
+ setValue(nextValue);
237
+ startDateState.setNewDate(start);
238
+ endDateState.setNewDate(end);
239
+ }
240
+ onPaste === null || onPaste === void 0 ? void 0 : onPaste(event);
241
+ });
221
242
  var onKeyboardInput = (0, _DateInput.useKeyboardInputEvent)({
222
243
  onSegmentChange: onSegmentChange,
223
244
  onSegmentValueChange: onSegmentValueChange,
@@ -234,6 +255,7 @@ var DateRangeInput = /*#__PURE__*/_react.default.forwardRef(function (props, ref
234
255
  ref: (0, _utils.mergeRefs)(inputRef, ref),
235
256
  onKeyDown: onKeyboardInput,
236
257
  onClick: handleClick,
258
+ onPaste: handlePaste,
237
259
  value: renderedValue,
238
260
  placeholder: placeholder || rangeFormatStr
239
261
  }, focusEventProps, rest));
package/cjs/Form/Form.js CHANGED
@@ -79,12 +79,13 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
79
79
  };
80
80
  var _useFormValidate = (0, _useFormValidate2.default)(controlledFormError, formValidateProps),
81
81
  formError = _useFormValidate.formError,
82
- setFieldError = _useFormValidate.setFieldError,
83
82
  onRemoveError = _useFormValidate.onRemoveError,
84
83
  check = _useFormValidate.check,
85
84
  checkAsync = _useFormValidate.checkAsync,
86
85
  checkForField = _useFormValidate.checkForField,
86
+ checkFieldForNextValue = _useFormValidate.checkFieldForNextValue,
87
87
  checkForFieldAsync = _useFormValidate.checkForFieldAsync,
88
+ checkFieldAsyncForNextValue = _useFormValidate.checkFieldAsyncForNextValue,
88
89
  cleanErrors = _useFormValidate.cleanErrors,
89
90
  resetErrors = _useFormValidate.resetErrors,
90
91
  cleanErrorForField = _useFormValidate.cleanErrorForField;
@@ -150,12 +151,6 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
150
151
  var removeFieldError = (0, _hooks.useEventCallback)(function (name) {
151
152
  onRemoveError(name);
152
153
  });
153
- var onFieldError = (0, _hooks.useEventCallback)(function (name, checkResult) {
154
- setFieldError(name, checkResult);
155
- });
156
- var onFieldSuccess = (0, _hooks.useEventCallback)(function (name) {
157
- removeFieldError(name);
158
- });
159
154
  var onFieldChange = (0, _hooks.useEventCallback)(function (name, value, event) {
160
155
  var nextFormValue = setFieldValue(name, value);
161
156
  onChange === null || onChange === void 0 ? void 0 : onChange(nextFormValue, event);
@@ -169,13 +164,12 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
169
164
  formError: formError,
170
165
  nestedField: nestedField,
171
166
  pushFieldRule: pushFieldRule,
172
- getCombinedModel: getCombinedModel,
173
167
  removeFieldValue: removeFieldValue,
174
168
  removeFieldError: removeFieldError,
175
169
  removeFieldRule: removeFieldRule,
176
- onFieldSuccess: onFieldSuccess,
177
170
  onFieldChange: onFieldChange,
178
- onFieldError: onFieldError
171
+ checkFieldForNextValue: checkFieldForNextValue,
172
+ checkFieldAsyncForNextValue: checkFieldAsyncForNextValue
179
173
  };
180
174
  return /*#__PURE__*/_react.default.createElement("form", (0, _extends2.default)({}, rest, {
181
175
  ref: formRef,
@@ -1,6 +1,5 @@
1
1
  import React from 'react';
2
2
  import { TypeAttributes } from '../internals/types';
3
- import type { Schema, CheckResult } from 'schema-typed';
4
3
  import type { FieldRuleType } from './hooks/useSchemaModel';
5
4
  type RecordAny = Record<string, any>;
6
5
  interface TrulyFormContextValue<T = RecordAny, M = any, E = {
@@ -8,14 +7,13 @@ interface TrulyFormContextValue<T = RecordAny, M = any, E = {
8
7
  }> {
9
8
  formError: E;
10
9
  nestedField: boolean;
11
- getCombinedModel: () => Schema;
12
10
  removeFieldValue: (name: string) => void;
13
11
  removeFieldError: (name: string) => void;
14
12
  removeFieldRule: (name: string) => void;
15
13
  pushFieldRule: (name: string, fieldRule: FieldRuleType) => void;
16
- onFieldError: (name: string, fieldError: string | CheckResult) => void;
17
14
  onFieldChange: (name: string, value: any, event: React.SyntheticEvent) => void;
18
- onFieldSuccess: (name: string) => void;
15
+ checkFieldForNextValue: (name: string, nextValue: Record<string, unknown>, callback?: (checkResult: Record<string, unknown>) => void) => boolean;
16
+ checkFieldAsyncForNextValue: (name: string, nextValue: Record<string, unknown>) => Promise<Record<string, unknown>>;
19
17
  }
20
18
  type ExternalPropsContextValue = {
21
19
  checkTrigger?: TypeAttributes.CheckTrigger;
@@ -1,5 +1,4 @@
1
1
  /// <reference types="lodash" />
2
- import type { CheckResult } from 'schema-typed';
3
2
  export interface FormErrorProps {
4
3
  formValue: any;
5
4
  getCombinedModel: () => any;
@@ -11,11 +10,12 @@ export default function useFormValidate(formError: any, props: FormErrorProps):
11
10
  formError: any;
12
11
  check: (...args: any[]) => any;
13
12
  checkForField: (...args: any[]) => any;
13
+ checkFieldForNextValue: (...args: any[]) => any;
14
14
  checkAsync: (...args: any[]) => any;
15
15
  checkForFieldAsync: (...args: any[]) => any;
16
+ checkFieldAsyncForNextValue: (...args: any[]) => any;
16
17
  cleanErrors: (...args: any[]) => any;
17
18
  resetErrors: (...args: any[]) => any;
18
19
  cleanErrorForField: (...args: any[]) => any;
19
- setFieldError: (fieldName: string, checkResult: string | CheckResult) => any;
20
20
  onRemoveError: (name: string) => import("lodash").Omit<any, string>;
21
21
  };