@nutui/nutui-react 3.0.0 → 3.0.2

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 (207) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/cjs/hooks/use-client-rect.js +1 -0
  3. package/dist/cjs/packages/actionsheet/style/style.css +12 -0
  4. package/dist/cjs/packages/address/style/style.css +12 -0
  5. package/dist/cjs/packages/calendar/style/style.css +12 -0
  6. package/dist/cjs/packages/cascader/style/style.css +12 -0
  7. package/dist/cjs/packages/configprovider/types.d.ts +1 -1
  8. package/dist/cjs/packages/datepicker/datepicker.js +8 -6
  9. package/dist/cjs/packages/datepicker/style/style.css +82 -0
  10. package/dist/cjs/packages/datepickerview/datepickerview.d.ts +3 -0
  11. package/dist/cjs/packages/datepickerview/datepickerview.js +118 -0
  12. package/dist/cjs/packages/datepickerview/index.d.ts +3 -0
  13. package/dist/cjs/packages/{subsidenavbar → datepickerview}/index.js +2 -2
  14. package/dist/cjs/packages/datepickerview/style/datepickerview.scss +4 -0
  15. package/dist/cjs/packages/datepickerview/style/index.js +2 -0
  16. package/dist/cjs/packages/datepickerview/style/style.css +78 -0
  17. package/dist/cjs/packages/datepickerview/types.d.ts +15 -0
  18. package/dist/cjs/packages/datepickerview/types.js +4 -0
  19. package/dist/cjs/packages/dialog/dialogwrap.js +3 -0
  20. package/dist/cjs/packages/dialog/style/dialog.scss +0 -1
  21. package/dist/cjs/packages/dialog/style/style.css +0 -1
  22. package/dist/cjs/packages/drag/style/drag.scss +1 -0
  23. package/dist/cjs/packages/drag/style/style.css +1 -0
  24. package/dist/cjs/packages/fixednav/fixednav.js +20 -14
  25. package/dist/cjs/packages/fixednav/style/fixednav.scss +0 -15
  26. package/dist/cjs/packages/fixednav/style/style.css +0 -14
  27. package/dist/cjs/packages/form/__tests__/merge.spec.d.ts +1 -0
  28. package/dist/cjs/packages/form/__tests__/merge.spec.js +545 -0
  29. package/dist/cjs/packages/form/form.d.ts +2 -0
  30. package/dist/cjs/packages/form/form.js +9 -2
  31. package/dist/cjs/packages/form/index.d.ts +2 -1
  32. package/dist/cjs/packages/form/index.js +1 -0
  33. package/dist/cjs/packages/form/style/form.scss +0 -66
  34. package/dist/cjs/packages/form/style/style.css +31 -21
  35. package/dist/cjs/packages/form/types.d.ts +2 -1
  36. package/dist/cjs/packages/form/useform.d.ts +2 -1
  37. package/dist/cjs/packages/form/useform.js +342 -278
  38. package/dist/cjs/packages/formitem/formitem.d.ts +1 -0
  39. package/dist/cjs/packages/formitem/formitem.js +55 -44
  40. package/dist/cjs/packages/formitem/style/formitem.scss +101 -21
  41. package/dist/cjs/packages/formitem/style/style.css +89 -12
  42. package/dist/cjs/packages/imagepreview/style/style.css +12 -0
  43. package/dist/cjs/packages/input/style/input.scss +6 -4
  44. package/dist/cjs/packages/input/style/style.css +4 -0
  45. package/dist/cjs/packages/numberkeyboard/style/style.css +12 -0
  46. package/dist/cjs/packages/nutui.react.build.d.ts +11 -15
  47. package/dist/cjs/packages/nutui.react.build.js +8 -16
  48. package/dist/cjs/packages/nutui.react.d.ts +16 -22
  49. package/dist/cjs/packages/nutui.react.js +13 -23
  50. package/dist/cjs/packages/nutui.react.scss.d.ts +5 -7
  51. package/dist/cjs/packages/nutui.react.scss.js +5 -7
  52. package/dist/cjs/packages/overlay/style/overlay.scss +0 -4
  53. package/dist/cjs/packages/picker/style/index.js +1 -0
  54. package/dist/cjs/packages/picker/style/style.css +82 -0
  55. package/dist/cjs/packages/popover/style/style.css +12 -0
  56. package/dist/cjs/packages/popup/style/popup.scss +12 -4
  57. package/dist/cjs/packages/popup/style/style.css +12 -0
  58. package/dist/cjs/packages/shortpassword/shortpassword.js +5 -7
  59. package/dist/cjs/packages/shortpassword/style/shortpassword.scss +10 -0
  60. package/dist/cjs/packages/shortpassword/style/style.css +21 -0
  61. package/dist/cjs/packages/swipe/style/style.css +3 -3
  62. package/dist/cjs/packages/swipe/style/swipe.scss +7 -3
  63. package/dist/cjs/packages/tabbar/style/style.css +6 -0
  64. package/dist/cjs/packages/tabbaritem/style/style.css +6 -0
  65. package/dist/cjs/packages/tabbaritem/style/tabbaritem.scss +6 -0
  66. package/dist/cjs/packages/timeselect/style/style.css +12 -0
  67. package/dist/cjs/packages/tour/style/style.css +12 -0
  68. package/dist/cjs/utils/get-rect-by-taro.d.ts +1 -1
  69. package/dist/cjs/utils/get-rect-by-taro.js +4 -1
  70. package/dist/cjs/utils/get-system-info.js +4 -5
  71. package/dist/cjs/utils/merge.d.ts +14 -0
  72. package/dist/cjs/utils/merge.js +98 -0
  73. package/dist/cjs/utils/platform-taro.js +4 -5
  74. package/dist/cjs/utils/to-array.d.ts +1 -0
  75. package/dist/cjs/utils/to-array.js +18 -0
  76. package/dist/es/hooks/use-client-rect.js +1 -0
  77. package/dist/es/packages/actionsheet/style/style.css +12 -0
  78. package/dist/es/packages/address/style/style.css +12 -0
  79. package/dist/es/packages/calendar/style/style.css +12 -0
  80. package/dist/es/packages/cascader/style/style.css +12 -0
  81. package/dist/es/packages/configprovider/types.d.ts +1 -1
  82. package/dist/es/packages/datepicker/datepicker.js +8 -6
  83. package/dist/es/packages/datepicker/style/style.css +82 -0
  84. package/dist/es/packages/datepickerview/datepickerview.d.ts +3 -0
  85. package/dist/es/packages/datepickerview/datepickerview.js +106 -0
  86. package/dist/es/packages/datepickerview/index.d.ts +3 -0
  87. package/dist/es/packages/datepickerview/index.js +2 -0
  88. package/dist/es/packages/datepickerview/style/datepickerview.scss +4 -0
  89. package/dist/es/packages/datepickerview/style/index.js +2 -0
  90. package/dist/es/packages/datepickerview/style/style.css +78 -0
  91. package/dist/es/packages/datepickerview/types.d.ts +15 -0
  92. package/dist/es/packages/datepickerview/types.js +1 -0
  93. package/dist/es/packages/dialog/dialogwrap.js +3 -0
  94. package/dist/es/packages/dialog/style/dialog.scss +0 -1
  95. package/dist/es/packages/dialog/style/style.css +0 -1
  96. package/dist/es/packages/drag/style/drag.scss +1 -0
  97. package/dist/es/packages/drag/style/style.css +1 -0
  98. package/dist/es/packages/fixednav/fixednav.js +20 -14
  99. package/dist/es/packages/fixednav/style/fixednav.scss +0 -15
  100. package/dist/es/packages/fixednav/style/style.css +0 -14
  101. package/dist/es/packages/form/__tests__/merge.spec.d.ts +1 -0
  102. package/dist/es/packages/form/__tests__/merge.spec.js +541 -0
  103. package/dist/es/packages/form/form.d.ts +10 -0
  104. package/dist/es/packages/form/form.js +9 -2
  105. package/dist/es/packages/form/index.d.ts +2 -1
  106. package/dist/es/packages/form/index.js +2 -1
  107. package/dist/es/packages/form/style/form.scss +0 -66
  108. package/dist/es/packages/form/style/style.css +31 -21
  109. package/dist/es/packages/form/types.d.ts +2 -1
  110. package/dist/es/packages/form/useform.d.ts +2 -1
  111. package/dist/es/packages/form/useform.js +340 -279
  112. package/dist/es/packages/formitem/formitem.d.ts +1 -0
  113. package/dist/es/packages/formitem/formitem.js +55 -44
  114. package/dist/es/packages/formitem/style/formitem.scss +101 -21
  115. package/dist/es/packages/formitem/style/style.css +89 -12
  116. package/dist/es/packages/imagepreview/style/style.css +12 -0
  117. package/dist/es/packages/input/style/input.scss +6 -4
  118. package/dist/es/packages/input/style/style.css +4 -0
  119. package/dist/es/packages/numberkeyboard/style/style.css +12 -0
  120. package/dist/es/packages/nutui.react.build.d.ts +11 -15
  121. package/dist/es/packages/nutui.react.build.js +11 -15
  122. package/dist/es/packages/overlay/style/overlay.scss +0 -4
  123. package/dist/es/packages/picker/style/index.js +1 -0
  124. package/dist/es/packages/picker/style/style.css +82 -0
  125. package/dist/es/packages/popover/style/style.css +12 -0
  126. package/dist/es/packages/popup/style/popup.scss +12 -4
  127. package/dist/es/packages/popup/style/style.css +12 -0
  128. package/dist/es/packages/shortpassword/shortpassword.js +5 -7
  129. package/dist/es/packages/shortpassword/style/shortpassword.scss +10 -0
  130. package/dist/es/packages/shortpassword/style/style.css +21 -0
  131. package/dist/es/packages/swipe/style/style.css +3 -3
  132. package/dist/es/packages/swipe/style/swipe.scss +7 -3
  133. package/dist/es/packages/tabbar/style/style.css +6 -0
  134. package/dist/es/packages/tabbaritem/style/style.css +6 -0
  135. package/dist/es/packages/tabbaritem/style/tabbaritem.scss +6 -0
  136. package/dist/es/packages/timeselect/style/style.css +12 -0
  137. package/dist/es/packages/tour/style/style.css +12 -0
  138. package/dist/es/utils/get-rect-by-taro.d.ts +1 -1
  139. package/dist/es/utils/get-rect-by-taro.js +4 -1
  140. package/dist/es/utils/get-system-info.js +4 -4
  141. package/dist/es/utils/merge.d.ts +14 -0
  142. package/dist/es/utils/merge.js +68 -0
  143. package/dist/es/utils/platform-taro.js +4 -4
  144. package/dist/es/utils/to-array.d.ts +1 -0
  145. package/dist/es/utils/to-array.js +8 -0
  146. package/dist/nutui.react.umd.js +1483 -1416
  147. package/dist/style.css +1 -1
  148. package/dist/style.scss +33 -35
  149. package/dist/styles/variables-jmapp.scss +0 -50
  150. package/dist/styles/variables-jrkf.scss +0 -50
  151. package/dist/styles/variables.scss +0 -49
  152. package/package.json +1 -1
  153. package/dist/cjs/packages/sidenavbar/context.d.ts +0 -1
  154. package/dist/cjs/packages/sidenavbar/context.js +0 -12
  155. package/dist/cjs/packages/sidenavbar/index.d.ts +0 -3
  156. package/dist/cjs/packages/sidenavbar/index.js +0 -12
  157. package/dist/cjs/packages/sidenavbar/sidenavbar.d.ts +0 -14
  158. package/dist/cjs/packages/sidenavbar/sidenavbar.js +0 -70
  159. package/dist/cjs/packages/sidenavbar/style/index.js +0 -2
  160. package/dist/cjs/packages/sidenavbar/style/sidenavbar.scss +0 -89
  161. package/dist/cjs/packages/sidenavbar/style/style.css +0 -443
  162. package/dist/cjs/packages/sidenavbar/utils.d.ts +0 -3
  163. package/dist/cjs/packages/sidenavbar/utils.js +0 -23
  164. package/dist/cjs/packages/sidenavbaritem/index.d.ts +0 -3
  165. package/dist/cjs/packages/sidenavbaritem/index.js +0 -12
  166. package/dist/cjs/packages/sidenavbaritem/sidenavbaritem.d.ts +0 -11
  167. package/dist/cjs/packages/sidenavbaritem/sidenavbaritem.js +0 -34
  168. package/dist/cjs/packages/sidenavbaritem/style/index.js +0 -1
  169. package/dist/cjs/packages/sidenavbaritem/style/sidenavbaritem.scss +0 -13
  170. package/dist/cjs/packages/sidenavbaritem/style/style.css +0 -14
  171. package/dist/cjs/packages/subsidenavbar/index.d.ts +0 -3
  172. package/dist/cjs/packages/subsidenavbar/style/css.js +0 -1
  173. package/dist/cjs/packages/subsidenavbar/style/index.js +0 -1
  174. package/dist/cjs/packages/subsidenavbar/style/style.css +0 -20
  175. package/dist/cjs/packages/subsidenavbar/style/subsidenavbar.scss +0 -26
  176. package/dist/cjs/packages/subsidenavbar/subsidenavbar.d.ts +0 -13
  177. package/dist/cjs/packages/subsidenavbar/subsidenavbar.js +0 -88
  178. package/dist/es/packages/sidenavbar/context.d.ts +0 -1
  179. package/dist/es/packages/sidenavbar/context.js +0 -2
  180. package/dist/es/packages/sidenavbar/index.d.ts +0 -3
  181. package/dist/es/packages/sidenavbar/index.js +0 -2
  182. package/dist/es/packages/sidenavbar/sidenavbar.d.ts +0 -38
  183. package/dist/es/packages/sidenavbar/sidenavbar.js +0 -58
  184. package/dist/es/packages/sidenavbar/style/css.js +0 -1
  185. package/dist/es/packages/sidenavbar/style/index.js +0 -2
  186. package/dist/es/packages/sidenavbar/style/sidenavbar.scss +0 -89
  187. package/dist/es/packages/sidenavbar/style/style.css +0 -443
  188. package/dist/es/packages/sidenavbar/utils.d.ts +0 -3
  189. package/dist/es/packages/sidenavbar/utils.js +0 -14
  190. package/dist/es/packages/sidenavbaritem/index.d.ts +0 -3
  191. package/dist/es/packages/sidenavbaritem/index.js +0 -2
  192. package/dist/es/packages/sidenavbaritem/sidenavbaritem.d.ts +0 -11
  193. package/dist/es/packages/sidenavbaritem/sidenavbaritem.js +0 -23
  194. package/dist/es/packages/sidenavbaritem/style/css.js +0 -1
  195. package/dist/es/packages/sidenavbaritem/style/index.js +0 -1
  196. package/dist/es/packages/sidenavbaritem/style/sidenavbaritem.scss +0 -13
  197. package/dist/es/packages/sidenavbaritem/style/style.css +0 -14
  198. package/dist/es/packages/subsidenavbar/index.d.ts +0 -3
  199. package/dist/es/packages/subsidenavbar/index.js +0 -2
  200. package/dist/es/packages/subsidenavbar/style/css.js +0 -1
  201. package/dist/es/packages/subsidenavbar/style/index.js +0 -1
  202. package/dist/es/packages/subsidenavbar/style/style.css +0 -20
  203. package/dist/es/packages/subsidenavbar/style/subsidenavbar.scss +0 -26
  204. package/dist/es/packages/subsidenavbar/subsidenavbar.d.ts +0 -13
  205. package/dist/es/packages/subsidenavbar/subsidenavbar.js +0 -77
  206. /package/dist/cjs/packages/{sidenavbar → datepickerview}/style/css.js +0 -0
  207. /package/dist/{cjs/packages/sidenavbaritem → es/packages/datepickerview}/style/css.js +0 -0
@@ -0,0 +1,545 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ var _call_super = require("@swc/helpers/_/_call_super");
6
+ var _class_call_check = require("@swc/helpers/_/_class_call_check");
7
+ var _inherits = require("@swc/helpers/_/_inherits");
8
+ var _sliced_to_array = require("@swc/helpers/_/_sliced_to_array");
9
+ var _to_consumable_array = require("@swc/helpers/_/_to_consumable_array");
10
+ var _wrap_native_super = require("@swc/helpers/_/_wrap_native_super");
11
+ var _merge = require("../../../utils/merge");
12
+ describe('merge', function() {
13
+ it('merges two objects', function() {
14
+ expect((0, _merge.merge)({
15
+ a: 1
16
+ }, {
17
+ b: 2
18
+ })).toStrictEqual({
19
+ a: 1,
20
+ b: 2
21
+ });
22
+ });
23
+ it('merges nested levels', function() {
24
+ expect((0, _merge.merge)({
25
+ a: 1
26
+ }, {
27
+ b: {
28
+ c: {
29
+ d: 2
30
+ }
31
+ }
32
+ })).toStrictEqual({
33
+ a: 1,
34
+ b: {
35
+ c: {
36
+ d: 2
37
+ }
38
+ }
39
+ });
40
+ });
41
+ it('clones the target', function() {
42
+ var input = {
43
+ a: 1,
44
+ b: {
45
+ c: {
46
+ d: 2,
47
+ e: [
48
+ 'x',
49
+ 'y',
50
+ {
51
+ z: {
52
+ w: [
53
+ 'k'
54
+ ]
55
+ }
56
+ }
57
+ ]
58
+ }
59
+ },
60
+ f: null,
61
+ g: undefined,
62
+ h: true
63
+ };
64
+ var original = {
65
+ a: 1,
66
+ b: {
67
+ c: {
68
+ d: 2,
69
+ e: [
70
+ 'x',
71
+ 'y',
72
+ {
73
+ z: {
74
+ w: [
75
+ 'k'
76
+ ]
77
+ }
78
+ }
79
+ ]
80
+ }
81
+ },
82
+ f: null,
83
+ g: undefined,
84
+ h: true
85
+ };
86
+ var output = (0, _merge.merge)(true, input);
87
+ input.b.c.d++;
88
+ input.b.c.e[2].z.w = null;
89
+ input.h = null;
90
+ expect(output).toStrictEqual(original);
91
+ input = original;
92
+ output = (0, _merge.merge)(true, input, {
93
+ a: 2
94
+ });
95
+ expect(output.a).toBe(2);
96
+ expect(input.a).toBe(1);
97
+ });
98
+ it('ignores the sources', function() {
99
+ var values = createNonPlainObjects();
100
+ var $merge = vi.fn().mockImplementation(_merge.merge);
101
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
102
+ try {
103
+ for(var _iterator = values[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
104
+ var value = _step.value;
105
+ expect($merge(value)).toStrictEqual({});
106
+ }
107
+ } catch (err) {
108
+ _didIteratorError = true;
109
+ _iteratorError = err;
110
+ } finally{
111
+ try {
112
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
113
+ _iterator.return();
114
+ }
115
+ } finally{
116
+ if (_didIteratorError) {
117
+ throw _iteratorError;
118
+ }
119
+ }
120
+ }
121
+ expect(values.length).toBeGreaterThan(0);
122
+ expect($merge).toBeCalledTimes(values.length);
123
+ expect(_merge.merge.apply(void 0, (0, _to_consumable_array._)(values).concat([
124
+ [
125
+ 0,
126
+ 1,
127
+ 2
128
+ ]
129
+ ], (0, _to_consumable_array._)(values), [
130
+ {
131
+ a: 1
132
+ }
133
+ ], (0, _to_consumable_array._)(values), [
134
+ {
135
+ b: 2
136
+ }
137
+ ]))).toStrictEqual({
138
+ a: 1,
139
+ b: 2
140
+ });
141
+ });
142
+ it('does not merge non plain objects', function() {
143
+ var values = createNonPlainObjects();
144
+ expect(values.length).toBeGreaterThan(0);
145
+ var input = {};
146
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
147
+ try {
148
+ for(var _iterator = Object.entries(values)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
149
+ var _step_value = (0, _sliced_to_array._)(_step.value, 2), index = _step_value[0], value = _step_value[1];
150
+ input["value".concat(index)] = value;
151
+ }
152
+ } catch (err) {
153
+ _didIteratorError = true;
154
+ _iteratorError = err;
155
+ } finally{
156
+ try {
157
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
158
+ _iterator.return();
159
+ }
160
+ } finally{
161
+ if (_didIteratorError) {
162
+ throw _iteratorError;
163
+ }
164
+ }
165
+ }
166
+ var output = (0, _merge.merge)({}, input);
167
+ var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
168
+ try {
169
+ for(var _iterator1 = Object.entries(values)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
170
+ var _step_value1 = (0, _sliced_to_array._)(_step1.value, 1), index1 = _step_value1[0];
171
+ var key = "value".concat(index1);
172
+ var inputValue = input[key];
173
+ var outputValue = output[key];
174
+ // eslint-disable-next-line no-restricted-globals
175
+ if (typeof outputValue === 'number' && isNaN(outputValue)) {
176
+ // eslint-disable-next-line no-restricted-globals
177
+ expect(isNaN(inputValue), key).toBeTruthy();
178
+ } else {
179
+ expect(inputValue === outputValue, key).toBeTruthy();
180
+ }
181
+ }
182
+ } catch (err) {
183
+ _didIteratorError1 = true;
184
+ _iteratorError1 = err;
185
+ } finally{
186
+ try {
187
+ if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
188
+ _iterator1.return();
189
+ }
190
+ } finally{
191
+ if (_didIteratorError1) {
192
+ throw _iteratorError1;
193
+ }
194
+ }
195
+ }
196
+ });
197
+ it('is safe', function() {
198
+ expect((0, _merge.merge)({}, JSON.parse('{"__proto__": {"evil": true}}'))).toStrictEqual({});
199
+ expect({}.evil).toBeUndefined();
200
+ });
201
+ });
202
+ describe('clone', function() {
203
+ it('clones the input', function() {
204
+ var object1 = {
205
+ a: 1,
206
+ b: {
207
+ c: 2
208
+ }
209
+ };
210
+ var object2 = (0, _merge.clone)(object1);
211
+ expect(object1).toStrictEqual(object2);
212
+ expect(object1 === object2).toBeFalsy();
213
+ expect(object1.b === object2.b).toBeFalsy();
214
+ });
215
+ it('clones each item of the array', function() {
216
+ var object1 = [
217
+ {
218
+ a: 1,
219
+ b: {
220
+ c: 2
221
+ }
222
+ }
223
+ ];
224
+ var object2 = (0, _merge.clone)(object1);
225
+ expect(object1).toStrictEqual(object2);
226
+ expect(object1 === object2).toBeFalsy();
227
+ expect(object1[0] === object2[0]).toBeFalsy();
228
+ expect(object1[0].b === object2[0].b).toBeFalsy();
229
+ });
230
+ it('returns the same input', function() {
231
+ var values = createNonPlainObjects();
232
+ var $clone = vi.fn().mockImplementation(_merge.clone);
233
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
234
+ try {
235
+ for(var _iterator = values[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
236
+ var value = _step.value;
237
+ var cloned = $clone(value);
238
+ // eslint-disable-next-line no-restricted-globals
239
+ if (typeof cloned === 'number' && isNaN(cloned)) {
240
+ // eslint-disable-next-line no-restricted-globals
241
+ expect(isNaN(value)).toBeTruthy();
242
+ } else if (Array.isArray(cloned)) {
243
+ expect(Array.isArray(value)).toBeTruthy();
244
+ } else {
245
+ expect(cloned === value).toBeTruthy();
246
+ }
247
+ }
248
+ } catch (err) {
249
+ _didIteratorError = true;
250
+ _iteratorError = err;
251
+ } finally{
252
+ try {
253
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
254
+ _iterator.return();
255
+ }
256
+ } finally{
257
+ if (_didIteratorError) {
258
+ throw _iteratorError;
259
+ }
260
+ }
261
+ }
262
+ expect(values.length).toBeGreaterThan(0);
263
+ expect($clone).toBeCalledTimes(values.length);
264
+ });
265
+ });
266
+ describe('recursive', function() {
267
+ it('merges recursively', function() {
268
+ expect((0, _merge.recursive)({
269
+ a: {
270
+ b: 1
271
+ }
272
+ }, {
273
+ a: {
274
+ c: 1
275
+ }
276
+ })).toStrictEqual({
277
+ a: {
278
+ b: 1,
279
+ c: 1
280
+ }
281
+ });
282
+ expect((0, _merge.recursive)({
283
+ a: {
284
+ b: 1,
285
+ c: 1
286
+ }
287
+ }, {
288
+ a: {
289
+ b: 2
290
+ }
291
+ })).toStrictEqual({
292
+ a: {
293
+ b: 2,
294
+ c: 1
295
+ }
296
+ });
297
+ expect((0, _merge.recursive)({
298
+ a: {
299
+ b: [
300
+ 1,
301
+ 2,
302
+ 3
303
+ ],
304
+ c: 1
305
+ }
306
+ }, {
307
+ a: {
308
+ b: [
309
+ 'a'
310
+ ]
311
+ }
312
+ })).toStrictEqual({
313
+ a: {
314
+ b: [
315
+ 'a'
316
+ ],
317
+ c: 1
318
+ }
319
+ });
320
+ expect((0, _merge.recursive)({
321
+ a: {
322
+ b: {
323
+ b: 2
324
+ },
325
+ c: 1
326
+ }
327
+ }, {
328
+ a: {
329
+ b: 2
330
+ }
331
+ })).toStrictEqual({
332
+ a: {
333
+ b: 2,
334
+ c: 1
335
+ }
336
+ });
337
+ });
338
+ it('clones recursively', function() {
339
+ var test1 = {
340
+ a: {
341
+ b: 1
342
+ }
343
+ };
344
+ expect((0, _merge.recursive)(true, test1, {
345
+ a: {
346
+ c: 1
347
+ }
348
+ })).toStrictEqual({
349
+ a: {
350
+ b: 1,
351
+ c: 1
352
+ }
353
+ });
354
+ expect(test1).toStrictEqual({
355
+ a: {
356
+ b: 1
357
+ }
358
+ });
359
+ var test2 = {
360
+ a: {
361
+ b: 1,
362
+ c: 1
363
+ }
364
+ };
365
+ expect((0, _merge.recursive)(true, test2, {
366
+ a: {
367
+ b: 2
368
+ }
369
+ })).toStrictEqual({
370
+ a: {
371
+ b: 2,
372
+ c: 1
373
+ }
374
+ });
375
+ expect(test2).toStrictEqual({
376
+ a: {
377
+ b: 1,
378
+ c: 1
379
+ }
380
+ });
381
+ var test3 = {
382
+ a: {
383
+ b: [
384
+ 1,
385
+ 2,
386
+ 3
387
+ ],
388
+ c: 1
389
+ }
390
+ };
391
+ expect((0, _merge.recursive)(true, test3, {
392
+ a: {
393
+ b: [
394
+ 'a'
395
+ ]
396
+ }
397
+ })).toStrictEqual({
398
+ a: {
399
+ b: [
400
+ 'a'
401
+ ],
402
+ c: 1
403
+ }
404
+ });
405
+ expect(test3).toStrictEqual({
406
+ a: {
407
+ b: [
408
+ 1,
409
+ 2,
410
+ 3
411
+ ],
412
+ c: 1
413
+ }
414
+ });
415
+ var test4 = {
416
+ a: {
417
+ b: {
418
+ b: 2
419
+ },
420
+ c: 1
421
+ }
422
+ };
423
+ expect((0, _merge.recursive)(true, test4, {
424
+ a: {
425
+ b: 2
426
+ }
427
+ })).toStrictEqual({
428
+ a: {
429
+ b: 2,
430
+ c: 1
431
+ }
432
+ });
433
+ expect(test4).toStrictEqual({
434
+ a: {
435
+ b: {
436
+ b: 2
437
+ },
438
+ c: 1
439
+ }
440
+ });
441
+ });
442
+ it('does not merge non plain objects', function() {
443
+ var object = (0, _merge.recursive)({
444
+ map: {
445
+ length: 1
446
+ }
447
+ }, {
448
+ map: new Map()
449
+ });
450
+ expect(object.map).toBeInstanceOf(Map);
451
+ });
452
+ it('is safe', function() {
453
+ var payload = '{"__proto__": {"a": true}}';
454
+ expect((0, _merge.recursive)({}, JSON.parse(payload))).toStrictEqual({});
455
+ expect({}.a).toBeUndefined();
456
+ expect((0, _merge.recursive)({
457
+ deep: {}
458
+ }, JSON.parse(payload))).toStrictEqual({
459
+ deep: {}
460
+ });
461
+ expect({}.b).toBeUndefined();
462
+ });
463
+ });
464
+ describe('isPlainObject', function() {
465
+ it('returns true', function() {
466
+ expect((0, _merge.isPlainObject)({})).toBeTruthy();
467
+ expect((0, _merge.isPlainObject)({
468
+ v: 1
469
+ })).toBeTruthy();
470
+ expect((0, _merge.isPlainObject)(Object.create(null))).toBeTruthy();
471
+ expect((0, _merge.isPlainObject)({})).toBeTruthy();
472
+ });
473
+ it('returns false', function() {
474
+ var values = createNonPlainObjects();
475
+ var $isPlainObject = vi.fn().mockImplementation(_merge.isPlainObject);
476
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
477
+ try {
478
+ for(var _iterator = values[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
479
+ var value = _step.value;
480
+ expect($isPlainObject(value)).toBeFalsy();
481
+ }
482
+ } catch (err) {
483
+ _didIteratorError = true;
484
+ _iteratorError = err;
485
+ } finally{
486
+ try {
487
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
488
+ _iterator.return();
489
+ }
490
+ } finally{
491
+ if (_didIteratorError) {
492
+ throw _iteratorError;
493
+ }
494
+ }
495
+ }
496
+ expect(values.length).toBeGreaterThan(0);
497
+ expect($isPlainObject).toBeCalledTimes(values.length);
498
+ });
499
+ });
500
+ function createNonPlainObjects() {
501
+ var SubObject = /*#__PURE__*/ function(Object1) {
502
+ "use strict";
503
+ (0, _inherits._)(SubObject, Object1);
504
+ function SubObject() {
505
+ (0, _class_call_check._)(this, SubObject);
506
+ return (0, _call_super._)(this, SubObject, arguments);
507
+ }
508
+ return SubObject;
509
+ }((0, _wrap_native_super._)(Object));
510
+ return [
511
+ null,
512
+ undefined,
513
+ 1,
514
+ '',
515
+ 'str',
516
+ [],
517
+ [
518
+ 1
519
+ ],
520
+ function() {},
521
+ function() {},
522
+ true,
523
+ false,
524
+ NaN,
525
+ Infinity,
526
+ function _class() {
527
+ "use strict";
528
+ (0, _class_call_check._)(this, _class);
529
+ },
530
+ new function _class() {
531
+ "use strict";
532
+ (0, _class_call_check._)(this, _class);
533
+ }(),
534
+ new Map(),
535
+ new Set(),
536
+ new Date(),
537
+ [],
538
+ new Date(),
539
+ /./,
540
+ /./,
541
+ SubObject,
542
+ new SubObject(),
543
+ Symbol('')
544
+ ];
545
+ }
@@ -6,7 +6,9 @@ export interface FormProps extends BasicComponent {
6
6
  initialValues: any;
7
7
  name: string;
8
8
  form: any;
9
+ disabled: boolean;
9
10
  divider: boolean;
11
+ validateTrigger: string | string[] | false;
10
12
  labelPosition: 'top' | 'left' | 'right';
11
13
  starPosition: 'left' | 'right';
12
14
  onFinish: (values: any) => void;
@@ -21,7 +21,9 @@ var _cell = /*#__PURE__*/ _interop_require_default._(require("../cell"));
21
21
  var defaultProps = (0, _object_spread_props._)((0, _object_spread._)({}, _typings.ComponentDefaults), {
22
22
  labelPosition: 'right',
23
23
  starPosition: 'left',
24
+ disabled: false,
24
25
  divider: false,
26
+ validateTrigger: 'onChange',
25
27
  onFinish: function onFinish(values) {},
26
28
  onFinishFailed: function onFinishFailed(values, errorFields) {}
27
29
  });
@@ -32,7 +34,7 @@ var PositionInfo = {
32
34
  };
33
35
  var Form = /*#__PURE__*/ _react.default.forwardRef(function(props, ref) {
34
36
  var classPrefix = 'nut-form';
35
- var _$_object_spread = (0, _object_spread._)({}, defaultProps, props), className = _$_object_spread.className, style = _$_object_spread.style, footer = _$_object_spread.footer, children = _$_object_spread.children, initialValues = _$_object_spread.initialValues, divider = _$_object_spread.divider, onFinish = _$_object_spread.onFinish, onFinishFailed = _$_object_spread.onFinishFailed, labelPosition = _$_object_spread.labelPosition, starPosition = _$_object_spread.starPosition, form = _$_object_spread.form;
37
+ var _$_object_spread = (0, _object_spread._)({}, defaultProps, props), className = _$_object_spread.className, style = _$_object_spread.style, footer = _$_object_spread.footer, children = _$_object_spread.children, initialValues = _$_object_spread.initialValues, divider = _$_object_spread.divider, disabled = _$_object_spread.disabled, onFinish = _$_object_spread.onFinish, onFinishFailed = _$_object_spread.onFinishFailed, validateTrigger = _$_object_spread.validateTrigger, labelPosition = _$_object_spread.labelPosition, starPosition = _$_object_spread.starPosition, form = _$_object_spread.form;
36
38
  var formInstance;
37
39
  if (form !== undefined) {
38
40
  formInstance = form;
@@ -75,7 +77,12 @@ var Form = /*#__PURE__*/ _react.default.forwardRef(function(props, ref) {
75
77
  }, /*#__PURE__*/ _react.default.createElement(_cell.default.Group, {
76
78
  divider: divider
77
79
  }, /*#__PURE__*/ _react.default.createElement(_context.Context.Provider, {
78
- value: formInstance
80
+ value: {
81
+ formInstance: formInstance,
82
+ labelPosition: labelPosition,
83
+ disabled: disabled,
84
+ validateTrigger: validateTrigger
85
+ }
79
86
  }, children), footer ? /*#__PURE__*/ _react.default.createElement(_cell.default, {
80
87
  className: "".concat(classPrefix, "-footer")
81
88
  }, footer) : null));
@@ -2,11 +2,12 @@ import React from 'react';
2
2
  import { FormProps } from './form';
3
3
  import { FormItem } from '../formitem/formitem';
4
4
  import { FormInstance } from './types';
5
- import { useForm } from "./useform";
5
+ import { useForm, useWatch } from "./useform";
6
6
  export type { FormItemRuleWithoutValidator, FormInstance, FormFieldEntity, } from './types';
7
7
  type CompoundedComponent = React.ForwardRefExoticComponent<Partial<FormProps> & Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> & React.RefAttributes<FormInstance>> & {
8
8
  Item: typeof FormItem;
9
9
  useForm: typeof useForm;
10
+ useWatch: typeof useWatch;
10
11
  };
11
12
  declare const InnerForm: CompoundedComponent;
12
13
  export default InnerForm;
@@ -16,4 +16,5 @@ var _useform = require("./useform");
16
16
  var InnerForm = _form.Form;
17
17
  InnerForm.Item = _formitem.FormItem;
18
18
  InnerForm.useForm = _useform.useForm;
19
+ InnerForm.useWatch = _useform.useWatch;
19
20
  var _default = InnerForm;
@@ -1,67 +1 @@
1
- .form-layout-right .nut-form-item-label {
2
- text-align: right;
3
- padding-right: 24px;
4
- white-space: nowrap;
5
- }
6
1
 
7
- .form-layout-left .nut-form-item-label {
8
- position: relative;
9
- text-align: left;
10
- padding-left: 12px;
11
- white-space: nowrap;
12
-
13
- .required {
14
- display: block;
15
- line-height: 1.5;
16
- position: absolute;
17
- left: 0.1em;
18
- }
19
- }
20
-
21
- .form-layout-top .nut-form-item {
22
- flex-direction: column;
23
- align-items: flex-start;
24
- white-space: nowrap;
25
- }
26
-
27
- .form-layout-top .nut-form-item-label {
28
- padding-bottom: 4px;
29
- display: block;
30
- padding-right: 24px;
31
- }
32
-
33
- .form-layout-top .nut-form-item-body {
34
- margin-left: 0;
35
- width: 100%;
36
- }
37
-
38
- [dir='rtl'] .form-layout-right .nut-form-item-label,
39
- .nut-rtl .form-layout-right .nut-form-item-label {
40
- text-align: left;
41
- padding-right: 0;
42
- padding-left: 24px;
43
- }
44
-
45
- [dir='rtl'] .form-layout-left .nut-form-item-label,
46
- .nut-rtl .form-layout-left .nut-form-item-label {
47
- text-align: right;
48
- padding-left: 0;
49
- padding-right: 12px;
50
-
51
- .required {
52
- left: auto;
53
- right: 0.1em;
54
- }
55
- }
56
-
57
- [dir='rtl'] .form-layout-top .nut-form-item-label,
58
- .nut-rtl .form-layout-top .nut-form-item-label {
59
- padding-right: 0;
60
- padding-left: 24px;
61
- }
62
-
63
- [dir='rtl'] .form-layout-top .nut-form-item-body,
64
- .nut-rtl .form-layout-top .nut-form-item-body {
65
- margin-left: 0;
66
- margin-right: 0;
67
- }