@etsoo/react 1.7.18 → 1.7.20

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.
@@ -35,6 +35,7 @@ export declare namespace ReactUtils {
35
35
  * @param refs Refs
36
36
  * @param data Data
37
37
  * @param callback Callback to return new value
38
+ * @param ignoreEmpty Ignore empty string or not, default true
38
39
  */
39
- function updateRefValues<D extends object, T = HTMLInputElement>(refs: Partial<DataTypes.DI<ReadonlyArray<keyof D & string>, React.MutableRefObject<T | undefined>>>, data: D, callback?: ((item: T) => any) | keyof T): void;
40
+ function updateRefValues<D extends object, T = HTMLInputElement>(refs: Partial<DataTypes.DI<ReadonlyArray<keyof D & string>, React.MutableRefObject<T | undefined>>>, data: D, callback?: ((item: T) => any) | keyof T, ignoreEmpty?: boolean): void;
40
41
  }
@@ -133,13 +133,19 @@ export var ReactUtils;
133
133
  * @param refs Refs
134
134
  * @param data Data
135
135
  * @param callback Callback to return new value
136
+ * @param ignoreEmpty Ignore empty string or not, default true
136
137
  */
137
- function updateRefValues(refs, data, callback) {
138
+ function updateRefValues(refs, data, callback, ignoreEmpty = true) {
138
139
  const local = callback == null
139
140
  ? undefined
140
141
  : typeof callback === 'function'
141
142
  ? callback
142
143
  : (item) => item[callback];
144
+ const formatValue = (value) => {
145
+ if (ignoreEmpty && value === '')
146
+ return null;
147
+ return value;
148
+ };
143
149
  let k;
144
150
  for (k in refs) {
145
151
  const ref = refs[k];
@@ -150,11 +156,11 @@ export var ReactUtils;
150
156
  data[k] = local(item);
151
157
  }
152
158
  else if (item instanceof HTMLInputElement) {
153
- Utils.setNestedValue(data, item.name || k, DomUtils.getInputValue(item));
159
+ Utils.setNestedValue(data, item.name || k, formatValue(DomUtils.getInputValue(item)));
154
160
  }
155
161
  else if (item instanceof HTMLTextAreaElement ||
156
162
  item instanceof HTMLSelectElement) {
157
- Utils.setNestedValue(data, item.name || k, item.value);
163
+ Utils.setNestedValue(data, item.name || k, formatValue(item.value));
158
164
  }
159
165
  else {
160
166
  data[k] = item.value;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@etsoo/react",
3
- "version": "1.7.18",
3
+ "version": "1.7.20",
4
4
  "description": "TypeScript ReactJs UI Independent Framework",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -50,15 +50,15 @@
50
50
  "@emotion/css": "^11.11.2",
51
51
  "@emotion/react": "^11.11.1",
52
52
  "@emotion/styled": "^11.11.0",
53
- "@etsoo/appscript": "^1.4.59",
54
- "@etsoo/notificationbase": "^1.1.29",
55
- "@etsoo/shared": "^1.2.17",
56
- "@types/react": "^18.2.28",
57
- "@types/react-dom": "^18.2.13",
58
- "@types/react-window": "^1.8.6",
53
+ "@etsoo/appscript": "^1.4.62",
54
+ "@etsoo/notificationbase": "^1.1.30",
55
+ "@etsoo/shared": "^1.2.18",
56
+ "@types/react": "^18.2.33",
57
+ "@types/react-dom": "^18.2.14",
58
+ "@types/react-window": "^1.8.7",
59
59
  "react": "^18.2.0",
60
60
  "react-dom": "^18.2.0",
61
- "react-router-dom": "^6.16.0",
61
+ "react-router-dom": "^6.17.0",
62
62
  "react-window": "^1.8.9"
63
63
  },
64
64
  "devDependencies": {
@@ -69,7 +69,7 @@
69
69
  "@babel/runtime-corejs3": "^7.23.2",
70
70
  "@testing-library/jest-dom": "^6.1.4",
71
71
  "@testing-library/react": "^14.0.0",
72
- "@types/jest": "^29.5.5",
72
+ "@types/jest": "^29.5.7",
73
73
  "jest": "^29.7.0",
74
74
  "jest-environment-jsdom": "^29.7.0",
75
75
  "ts-jest": "^29.1.1",
@@ -163,6 +163,7 @@ export namespace ReactUtils {
163
163
  * @param refs Refs
164
164
  * @param data Data
165
165
  * @param callback Callback to return new value
166
+ * @param ignoreEmpty Ignore empty string or not, default true
166
167
  */
167
168
  export function updateRefValues<D extends object, T = HTMLInputElement>(
168
169
  refs: Partial<
@@ -172,7 +173,8 @@ export namespace ReactUtils {
172
173
  >
173
174
  >,
174
175
  data: D,
175
- callback?: ((item: T) => any) | keyof T
176
+ callback?: ((item: T) => any) | keyof T,
177
+ ignoreEmpty: boolean = true
176
178
  ) {
177
179
  const local: typeof callback =
178
180
  callback == null
@@ -181,6 +183,11 @@ export namespace ReactUtils {
181
183
  ? callback
182
184
  : (item) => item[callback];
183
185
 
186
+ const formatValue = (value: unknown) => {
187
+ if (ignoreEmpty && value === '') return null;
188
+ return value;
189
+ };
190
+
184
191
  let k: keyof typeof refs;
185
192
  for (k in refs) {
186
193
  const ref = refs[k];
@@ -193,13 +200,17 @@ export namespace ReactUtils {
193
200
  Utils.setNestedValue(
194
201
  data,
195
202
  item.name || k,
196
- DomUtils.getInputValue(item)
203
+ formatValue(DomUtils.getInputValue(item))
197
204
  );
198
205
  } else if (
199
206
  item instanceof HTMLTextAreaElement ||
200
207
  item instanceof HTMLSelectElement
201
208
  ) {
202
- Utils.setNestedValue(data, item.name || k, item.value);
209
+ Utils.setNestedValue(
210
+ data,
211
+ item.name || k,
212
+ formatValue(item.value)
213
+ );
203
214
  } else {
204
215
  data[k] = (item as any).value;
205
216
  }