@trackunit/filters-graphql-hook 2.18.10-alpha-15da733192f.0 → 2.19.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.
package/index.cjs.js CHANGED
@@ -421,6 +421,26 @@ const siteTypeSFS = {
421
421
  WORK_PLACE: "WORK_PLACE",
422
422
  };
423
423
 
424
+ const MIN_ASSET_SEARCH_QUERY_LENGTH = 3;
425
+ /**
426
+ * Converts an asset search value to the query accepted by sfs-api.
427
+ *
428
+ * @param search - Raw asset search value.
429
+ * @returns {string | undefined} The original value when it contains at least three meaningful characters.
430
+ */
431
+ const useAssetSearchQuery = (search) => {
432
+ return react.useMemo(() => {
433
+ if (typeof search !== "string") {
434
+ return undefined;
435
+ }
436
+ const meaningfulSearchQuery = search
437
+ .trim()
438
+ .replace(/^\*+|\*+$/g, "")
439
+ .trim();
440
+ return meaningfulSearchQuery.length >= MIN_ASSET_SEARCH_QUERY_LENGTH ? search : undefined;
441
+ }, [search]);
442
+ };
443
+
424
444
  const CustomFieldPrefix$1 = "cf__";
425
445
  /**
426
446
  * Converts custom field filters to a format that can be used by the GraphQL API
@@ -552,6 +572,7 @@ const buildInspectionLastFilters = (filters) => {
552
572
  const useActiveAssetFilters = (filters) => {
553
573
  const { systemOfMeasurement } = reactCoreHooks.useCurrentUserSystemOfMeasurement();
554
574
  const customFields = useCustomFieldFilters(filters);
575
+ const searchQuery = useAssetSearchQuery(filters?.search);
555
576
  // TODO make typesafe checks for all filters
556
577
  return react.useMemo(() => {
557
578
  if (!filters) {
@@ -562,7 +583,7 @@ const useActiveAssetFilters = (filters) => {
562
583
  const parsedArea = geoJsonSimplifiedPolygonSchema.safeParse(filters.area);
563
584
  return {
564
585
  assetIds: stringArrayOrUndefined(filters.assetIds),
565
- searchQuery: typeof filters.search === "string" && filters.search !== "" ? filters.search : undefined,
586
+ searchQuery,
566
587
  nameQuery: typeof filters.nameQuery === "string" && filters.nameQuery !== "" ? filters.nameQuery : undefined,
567
588
  activities: fixTypes(filters.activity, assetActivityState),
568
589
  geometry: parsedArea.success ? parsedArea.data : undefined,
@@ -672,7 +693,7 @@ const useActiveAssetFilters = (filters) => {
672
693
  };
673
694
  })(),
674
695
  };
675
- }, [filters, customFields, systemOfMeasurement]);
696
+ }, [filters, customFields, searchQuery, systemOfMeasurement]);
676
697
  };
677
698
  const booleanArraySchema = zod.z.array(zod.z.boolean());
678
699
 
@@ -1175,6 +1196,7 @@ exports.stringArrayOrUndefined = stringArrayOrUndefined;
1175
1196
  exports.useActiveAssetFilters = useActiveAssetFilters;
1176
1197
  exports.useAssetFiltersInputToFilterBarValues = useAssetFiltersInputToFilterBarValues;
1177
1198
  exports.useAssetQueryFilters = useAssetQueryFilters;
1199
+ exports.useAssetSearchQuery = useAssetSearchQuery;
1178
1200
  exports.useAssetSortInput = useAssetSortInput;
1179
1201
  exports.useCustomFieldFilters = useCustomFieldFilters;
1180
1202
  exports.valueBooleanOrUndefined = valueBooleanOrUndefined;
package/index.esm.js CHANGED
@@ -419,6 +419,26 @@ const siteTypeSFS = {
419
419
  WORK_PLACE: "WORK_PLACE",
420
420
  };
421
421
 
422
+ const MIN_ASSET_SEARCH_QUERY_LENGTH = 3;
423
+ /**
424
+ * Converts an asset search value to the query accepted by sfs-api.
425
+ *
426
+ * @param search - Raw asset search value.
427
+ * @returns {string | undefined} The original value when it contains at least three meaningful characters.
428
+ */
429
+ const useAssetSearchQuery = (search) => {
430
+ return useMemo(() => {
431
+ if (typeof search !== "string") {
432
+ return undefined;
433
+ }
434
+ const meaningfulSearchQuery = search
435
+ .trim()
436
+ .replace(/^\*+|\*+$/g, "")
437
+ .trim();
438
+ return meaningfulSearchQuery.length >= MIN_ASSET_SEARCH_QUERY_LENGTH ? search : undefined;
439
+ }, [search]);
440
+ };
441
+
422
442
  const CustomFieldPrefix$1 = "cf__";
423
443
  /**
424
444
  * Converts custom field filters to a format that can be used by the GraphQL API
@@ -550,6 +570,7 @@ const buildInspectionLastFilters = (filters) => {
550
570
  const useActiveAssetFilters = (filters) => {
551
571
  const { systemOfMeasurement } = useCurrentUserSystemOfMeasurement();
552
572
  const customFields = useCustomFieldFilters(filters);
573
+ const searchQuery = useAssetSearchQuery(filters?.search);
553
574
  // TODO make typesafe checks for all filters
554
575
  return useMemo(() => {
555
576
  if (!filters) {
@@ -560,7 +581,7 @@ const useActiveAssetFilters = (filters) => {
560
581
  const parsedArea = geoJsonSimplifiedPolygonSchema.safeParse(filters.area);
561
582
  return {
562
583
  assetIds: stringArrayOrUndefined(filters.assetIds),
563
- searchQuery: typeof filters.search === "string" && filters.search !== "" ? filters.search : undefined,
584
+ searchQuery,
564
585
  nameQuery: typeof filters.nameQuery === "string" && filters.nameQuery !== "" ? filters.nameQuery : undefined,
565
586
  activities: fixTypes(filters.activity, assetActivityState),
566
587
  geometry: parsedArea.success ? parsedArea.data : undefined,
@@ -670,7 +691,7 @@ const useActiveAssetFilters = (filters) => {
670
691
  };
671
692
  })(),
672
693
  };
673
- }, [filters, customFields, systemOfMeasurement]);
694
+ }, [filters, customFields, searchQuery, systemOfMeasurement]);
674
695
  };
675
696
  const booleanArraySchema = z.array(z.boolean());
676
697
 
@@ -1155,4 +1176,4 @@ const useAssetQueryFilters = (props) => {
1155
1176
  */
1156
1177
  setupLibraryTranslations();
1157
1178
 
1158
- export { CustomFieldPrefix, activeFilterToGraphQL, booleanValueToArray, convertToAssetSortInput, fixType, fixTypes, geoJsonSimplifiedPolygonSchema, isStringArrayValue, isValueName, isValueNameArray, minMaxFilterValueToAggregatedNumberRange, minMaxFilterValueToArray, minMaxFilterValueToNumberRange, positiveValueBooleanOrNull, stringArrayOrUndefined, useActiveAssetFilters, useAssetFiltersInputToFilterBarValues, useAssetQueryFilters, useAssetSortInput, useCustomFieldFilters, valueBooleanOrUndefined, valueNameArrayOrUndefined, valueNameBooleanToArray, valueNameOrUndefined, valuesIfNotEmpty };
1179
+ export { CustomFieldPrefix, activeFilterToGraphQL, booleanValueToArray, convertToAssetSortInput, fixType, fixTypes, geoJsonSimplifiedPolygonSchema, isStringArrayValue, isValueName, isValueNameArray, minMaxFilterValueToAggregatedNumberRange, minMaxFilterValueToArray, minMaxFilterValueToNumberRange, positiveValueBooleanOrNull, stringArrayOrUndefined, useActiveAssetFilters, useAssetFiltersInputToFilterBarValues, useAssetQueryFilters, useAssetSearchQuery, useAssetSortInput, useCustomFieldFilters, valueBooleanOrUndefined, valueNameArrayOrUndefined, valueNameBooleanToArray, valueNameOrUndefined, valuesIfNotEmpty };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trackunit/filters-graphql-hook",
3
- "version": "2.18.10-alpha-15da733192f.0",
3
+ "version": "2.19.1",
4
4
  "repository": "https://github.com/Trackunit/manager",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "engines": {
@@ -10,14 +10,14 @@
10
10
  "@graphql-codegen/cli": "^5.0.3",
11
11
  "@graphql-typed-document-node/core": "^3.2.0",
12
12
  "zod": "^3.25.76",
13
- "@trackunit/iris-app-build-utilities": "2.4.60-alpha-15da733192f.0",
14
- "@trackunit/filters-filter-bar": "2.6.77-alpha-15da733192f.0",
15
- "@trackunit/shared-utils": "1.16.51-alpha-15da733192f.0",
16
- "@trackunit/iris-app-api": "2.6.8-alpha-15da733192f.0",
17
- "@trackunit/react-core-contexts-test": "1.18.63-alpha-15da733192f.0",
18
- "@trackunit/i18n-library-translation": "2.4.66-alpha-15da733192f.0",
19
- "@trackunit/iris-app-runtime-core-api": "1.17.63-alpha-15da733192f.0",
20
- "@trackunit/react-core-hooks": "1.21.66-alpha-15da733192f.0"
13
+ "@trackunit/iris-app-build-utilities": "2.4.60",
14
+ "@trackunit/filters-filter-bar": "2.7.1",
15
+ "@trackunit/shared-utils": "1.16.51",
16
+ "@trackunit/iris-app-api": "2.6.8",
17
+ "@trackunit/react-core-contexts-test": "1.19.1",
18
+ "@trackunit/i18n-library-translation": "2.5.1",
19
+ "@trackunit/iris-app-runtime-core-api": "1.18.1",
20
+ "@trackunit/react-core-hooks": "1.22.1"
21
21
  },
22
22
  "peerDependencies": {
23
23
  "@apollo/client": "^3.13.8",
package/src/index.d.ts CHANGED
@@ -2,5 +2,6 @@ export * from "./fixTypes";
2
2
  export * from "./useActiveAssetFilters";
3
3
  export * from "./useAssetFiltersInputToFilterBarValues";
4
4
  export * from "./useAssetQueryFilters";
5
+ export * from "./useAssetSearchQuery";
5
6
  export * from "./useAssetSortInput";
6
7
  export * from "./useCustomFieldFilters";
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Converts an asset search value to the query accepted by sfs-api.
3
+ *
4
+ * @param search - Raw asset search value.
5
+ * @returns {string | undefined} The original value when it contains at least three meaningful characters.
6
+ */
7
+ export declare const useAssetSearchQuery: (search: unknown) => string | undefined;
@@ -1 +0,0 @@
1
- {"version":3,"file":"entry.js","sourceRoot":"","sources":["../../../../../libs/filters/graphql-hook/migrations/entry.ts"],"names":[],"mappings":"","sourcesContent":["export {};\n"]}