@ethlete/query 5.41.2 → 5.41.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @ethlete/query
2
2
 
3
+ ## 5.41.3
4
+
5
+ ### Patch Changes
6
+
7
+ - [`b55b919`](https://github.com/ethlete-io/ethdk/commit/b55b919b019ba53bf801ba3d63721452f83c444d) Thanks [@TomTomB](https://github.com/TomTomB)! - Fix handling of number query fields that have a default value other than null
8
+
3
9
  ## 5.41.2
4
10
 
5
11
  ### Patch Changes
@@ -5927,6 +5927,7 @@ const transformToSortQueryParam = (value) => {
5927
5927
 
5928
5928
  const ET_ARR_PREFIX = 'ET_ARR__';
5929
5929
  const ET_OBJ_PREFIX = 'ET_OBJ__';
5930
+ const ET_PROP_NULL_VALUE = 'ET_NULL__';
5930
5931
  class QueryField {
5931
5932
  get control() {
5932
5933
  return this.data.control;
@@ -6253,14 +6254,18 @@ class QueryForm {
6253
6254
  deserializedValue = field.data.queryParamToValueTransformFn(value);
6254
6255
  }
6255
6256
  else if (!field.data.skipAutoTransform) {
6256
- const defaultIsNum = this._getDefaultValue(key) === 'number';
6257
+ const defaultIsNum = typeof this._getDefaultValue(key) === 'number';
6257
6258
  const valueIsNum = !isNaN(Number(value));
6258
6259
  const valueContainsWhitespace = typeof value === 'string' && value.trim() !== value;
6259
6260
  const valueHasLeadingZero = typeof value === 'string' && value.startsWith('0');
6260
6261
  const valueEndsWithDot = typeof value === 'string' && value.endsWith('.');
6261
6262
  const defaultIsBool = this._getDefaultValue(key) === 'boolean';
6262
6263
  const valueIsBool = value === 'true' || value === 'false';
6263
- if (defaultIsNum || (valueIsNum && !valueContainsWhitespace && !valueHasLeadingZero && !valueEndsWithDot)) {
6264
+ if (defaultIsNum && value === ET_PROP_NULL_VALUE) {
6265
+ deserializedValue = null;
6266
+ }
6267
+ else if (defaultIsNum ||
6268
+ (valueIsNum && !valueContainsWhitespace && !valueHasLeadingZero && !valueEndsWithDot)) {
6264
6269
  deserializedValue = transformToNumber(value);
6265
6270
  }
6266
6271
  else if (defaultIsBool || valueIsBool) {
@@ -6327,6 +6332,9 @@ class QueryForm {
6327
6332
  else if (typeof val === 'function') {
6328
6333
  return val();
6329
6334
  }
6335
+ else if (val === ET_PROP_NULL_VALUE) {
6336
+ return null;
6337
+ }
6330
6338
  return val ?? null;
6331
6339
  }
6332
6340
  _transformKeyToQueryParam(key) {
@@ -6342,7 +6350,9 @@ class QueryForm {
6342
6350
  ? `${ET_ARR_PREFIX}${JSON.stringify(value)}`
6343
6351
  : typeof value === 'object' && value !== null
6344
6352
  ? `${ET_OBJ_PREFIX}${JSON.stringify(value)}`
6345
- : value;
6353
+ : value === null
6354
+ ? ET_PROP_NULL_VALUE
6355
+ : value;
6346
6356
  return this._defaultValues[key] === normalizedValue;
6347
6357
  }
6348
6358
  _setupFormGroup() {
@@ -6366,6 +6376,9 @@ class QueryForm {
6366
6376
  else if (typeof value === 'object' && value !== null) {
6367
6377
  defaultValues[key] = `${ET_OBJ_PREFIX}${JSON.stringify(value)}`;
6368
6378
  }
6379
+ else if (value === null) {
6380
+ defaultValues[key] = ET_PROP_NULL_VALUE;
6381
+ }
6369
6382
  else {
6370
6383
  defaultValues[key] = value;
6371
6384
  }
@@ -6389,7 +6402,9 @@ class QueryForm {
6389
6402
  else {
6390
6403
  queryParams[queryParamKey] = field.data.valueToQueryParamTransformFn
6391
6404
  ? field.data.valueToQueryParamTransformFn?.(value)
6392
- : value;
6405
+ : value === null
6406
+ ? ET_PROP_NULL_VALUE
6407
+ : value;
6393
6408
  }
6394
6409
  }
6395
6410
  this._zone.run(() => {