@trackunit/filters-asset-filter-definitions 1.0.13 → 1.0.15

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
@@ -12,9 +12,9 @@ var filtersGraphqlHook = require('@trackunit/filters-graphql-hook');
12
12
  var utilizationIndicator = require('@trackunit/utilization-indicator');
13
13
  var geoJsonUtils = require('@trackunit/geo-json-utils');
14
14
  var reactComponents = require('@trackunit/react-components');
15
+ var zod = require('zod');
15
16
  var sharedUtils = require('@trackunit/shared-utils');
16
17
  var stringTs = require('string-ts');
17
- var zod = require('zod');
18
18
  var translationsMachineType = require('@trackunit/translations-machine-type');
19
19
  var criticalityIndicator = require('@trackunit/criticality-indicator');
20
20
  var tailwindMerge = require('tailwind-merge');
@@ -135,6 +135,7 @@ var defaultTranslations = {
135
135
  "filters.shared.clear": "clear",
136
136
  "filters.shared.clearAll": "clear all",
137
137
  "filters.shared.noHistory": "No search history yet",
138
+ "filters.shared.notJustWhitepsace": "Please enter a search term",
138
139
  "filters.shared.recentSearches": "Recent searches",
139
140
  "filters.shared.typeMore": "Type more to search...",
140
141
  "filtersBar.closeFilter": "Close",
@@ -1691,9 +1692,9 @@ const useActivityFilter = () => {
1691
1692
  * @param {ClearItemButtonProps} props - The props for the ClearItemButton component
1692
1693
  * @returns {JSX.Element} ClearItemButton component
1693
1694
  */
1694
- const ClearItemButton = ({ onClear }) => {
1695
+ const ClearItemButton = ({ onClick }) => {
1695
1696
  const [t] = useTranslation();
1696
- return (jsxRuntime.jsx(reactComponents.Tooltip, { label: t("filters.shared.clear"), children: jsxRuntime.jsx(reactComponents.IconButton, { circular: true, icon: jsxRuntime.jsx(reactComponents.Icon, { name: "Trash", size: "small" }), onClick: onClear, size: "small", variant: "ghost-neutral" }) }));
1697
+ return (jsxRuntime.jsx(reactComponents.Tooltip, { label: t("filters.shared.clear"), children: jsxRuntime.jsx(reactComponents.IconButton, { circular: true, icon: jsxRuntime.jsx(reactComponents.Icon, { name: "Trash", size: "small" }), onClick: onClick, size: "small", variant: "ghost-neutral" }) }));
1697
1698
  };
1698
1699
 
1699
1700
  /**
@@ -1710,7 +1711,6 @@ const RecentSearchesFooter = ({ count, onClearAll }) => {
1710
1711
  return (jsxRuntime.jsxs("div", { className: "flex items-baseline justify-between gap-x-2 border-t-2 border-slate-300 px-2 py-0.5", children: [jsxRuntime.jsx(reactComponents.Text, { className: "py-0.5", size: "small", subtle: true, children: t("filters.shared.recentSearches") }), count > 1 ? (jsxRuntime.jsx(reactComponents.Button, { onClick: onClearAll, size: "small", variant: "ghost", children: t("filters.shared.clearAll") })) : null] }));
1711
1712
  };
1712
1713
 
1713
- const LOCAL_STORAGE_KEY = "area-filter-recent-searches";
1714
1714
  const areaFilterInternalGeoJsonGeometrySchema = zod.z.union([
1715
1715
  geoJsonUtils.geoJsonPolygonSchema,
1716
1716
  geoJsonUtils.geoJsonPointSchema,
@@ -1724,19 +1724,31 @@ const areaFilterInternalSchema = zod.z.object({
1724
1724
  }),
1725
1725
  dateIsoString: zod.z.string().datetime().optional(), //can not be date object since useLocalStorage (with validation) does not support date objects
1726
1726
  });
1727
+
1728
+ const SHARED_LOCATIONS_LOCAL_STORAGE_KEY = "shared-recent-locations";
1727
1729
  const MAX_RECENT_SEARCHES$1 = 5;
1728
- const MIN_LENGTH_SEARCH = 2;
1729
- const AreaView = (props) => {
1730
+ const MIN_LENGTH_SEARCH = 3;
1731
+ const MAX_RESULTS = 5;
1732
+ /**
1733
+ * useAreaSearch is a hook that provides a search input for finding areas and a list of recent areas.
1734
+ * It uses the FindPlacesDocument query to search for areas and debounces the search input.
1735
+ * It also provides a list of recent areas that are stored in local storage.
1736
+ */
1737
+ const useAreaSearch = ({ localStorageKey = SHARED_LOCATIONS_LOCAL_STORAGE_KEY, maxRecentSearches = MAX_RECENT_SEARCHES$1, maxResults = MAX_RESULTS, }) => {
1730
1738
  const [t] = useTranslation();
1731
1739
  const [searchString, setSearchString] = react.useState("");
1732
- const { logEvent } = reactCoreHooks.useAnalytics(filtersFilterBar.FilterEvents);
1740
+ const [recentAreas, setRecentAreas] = reactCoreHooks.useLocalStorage({
1741
+ defaultState: [],
1742
+ key: localStorageKey,
1743
+ schema: zod.z.array(areaFilterInternalSchema),
1744
+ });
1733
1745
  const debouncedSearchString = reactComponents.useDebounce(searchString);
1734
1746
  const { data, previousData, loading } = client.useQuery(FindPlacesDocument, {
1735
1747
  variables: { search: debouncedSearchString },
1736
- skip: !debouncedSearchString || debouncedSearchString.length < MIN_LENGTH_SEARCH,
1748
+ skip: !debouncedSearchString || searchString.replace(/\s/g, "").length < MIN_LENGTH_SEARCH,
1737
1749
  });
1738
- const stableData = data !== null && data !== void 0 ? data : previousData;
1739
- const areas = react.useMemo(() => {
1750
+ const stableData = react.useMemo(() => data !== null && data !== void 0 ? data : previousData, [data, previousData]);
1751
+ const loadedAreas = react.useMemo(() => {
1740
1752
  var _a, _b;
1741
1753
  return ((_b = (_a = stableData === null || stableData === void 0 ? void 0 : stableData.findPlaces) === null || _a === void 0 ? void 0 : _a.map(place => {
1742
1754
  var _a, _b;
@@ -1757,6 +1769,59 @@ const AreaView = (props) => {
1757
1769
  };
1758
1770
  }).filter(sharedUtils.nonNullable)) !== null && _b !== void 0 ? _b : []);
1759
1771
  }, [stableData]);
1772
+ const areas = debouncedSearchString ? loadedAreas : recentAreas;
1773
+ const hint = react.useMemo(() => {
1774
+ const noWhiteSpaceSearchString = searchString.replace(/\s/g, "");
1775
+ if (searchString.length === 0 && areas.length === 0) {
1776
+ return t("filters.shared.noHistory");
1777
+ }
1778
+ else if (noWhiteSpaceSearchString.length === 0 && searchString.length > 0) {
1779
+ return t("filters.shared.notJustWhitepsace");
1780
+ }
1781
+ else if (searchString.length > 0 && noWhiteSpaceSearchString.length < MIN_LENGTH_SEARCH) {
1782
+ return t("filters.shared.typeMore");
1783
+ }
1784
+ else if (loading && areas.length === 0) {
1785
+ return t("filtersBar.loading");
1786
+ }
1787
+ else if (areas.length === 0) {
1788
+ return t("filtersBar.emptyResults");
1789
+ }
1790
+ return null;
1791
+ }, [searchString, areas, t, loading]);
1792
+ const addRecentArea = (area) => {
1793
+ setRecentAreas(prev => {
1794
+ const noDuplicatesRecent = prev.filter(r => r.properties.formattedAddress !== area.properties.formattedAddress);
1795
+ const cappedLengthRecentAreas = noDuplicatesRecent.slice(0, maxRecentSearches - 1);
1796
+ return [
1797
+ {
1798
+ ...area,
1799
+ dateIsoString: new Date().toISOString(),
1800
+ },
1801
+ ...cappedLengthRecentAreas,
1802
+ ];
1803
+ });
1804
+ };
1805
+ const removeRecentArea = (area) => {
1806
+ setRecentAreas(prev => prev.filter(r => r.properties.formattedAddress !== area.properties.formattedAddress));
1807
+ };
1808
+ return {
1809
+ areas: areas.slice(0, maxResults),
1810
+ loading,
1811
+ searchString,
1812
+ setSearchString,
1813
+ debouncedSearchString,
1814
+ recentAreas,
1815
+ setRecentAreas,
1816
+ hint,
1817
+ removeRecentArea,
1818
+ addRecentArea,
1819
+ };
1820
+ };
1821
+
1822
+ const AreaView = (props) => {
1823
+ const [t] = useTranslation();
1824
+ const { logEvent } = reactCoreHooks.useAnalytics(filtersFilterBar.FilterEvents);
1760
1825
  const placeholderOption = react.useMemo(() => {
1761
1826
  // If no selected option, use this placeholder option
1762
1827
  // Aka if applied from outside the filter UI
@@ -1773,33 +1838,23 @@ const AreaView = (props) => {
1773
1838
  }
1774
1839
  : null;
1775
1840
  }, [props.value, t]);
1776
- const options = debouncedSearchString ? areas : props.recentAreas;
1777
- const selectedOption = getSelectedOption(props.value, options);
1778
- const hint = react.useMemo(() => {
1779
- if (searchString.length === 0 && options.length === 0) {
1780
- return t("filters.shared.noHistory");
1781
- }
1782
- if (searchString.length > 0 && searchString.length < MIN_LENGTH_SEARCH) {
1783
- return t("filters.shared.typeMore");
1784
- }
1785
- return null;
1786
- }, [searchString, options, t]);
1841
+ const selectedOption = getSelectedOption(props.value, props.areas);
1787
1842
  if (!props.showWithSearch) {
1788
1843
  // Temoraray while we are testing the new area filter bar behind feature flag
1789
1844
  // This emulated the old look of the boundingbox filter
1790
1845
  // TODO [BUSS] Remove this once the new area filter is ready for prime time
1791
1846
  return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(filtersFilterBar.FilterHeader, { ...props.filterDefinition, ...props.filterBarActions }), jsxRuntime.jsx(reactFilterComponents.FilterBody, { limitSize: true, children: jsxRuntime.jsx("p", { className: "p-2", children: `${t("assetFilters.boundingBoxFilter.value")}` }) })] }));
1792
1847
  }
1793
- return (jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx(filtersFilterBar.FilterHeader, { ...props.filterDefinition, ...props.filterBarActions, loading: loading, searchEnabled: true, searchProps: {
1794
- onChange: setSearchString,
1795
- value: searchString,
1796
- count: options.length,
1848
+ return (jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx(filtersFilterBar.FilterHeader, { ...props.filterDefinition, ...props.filterBarActions, loading: props.loading, searchEnabled: true, searchProps: {
1849
+ onChange: props.setSearchString,
1850
+ value: props.searchString,
1851
+ count: props.areas.length,
1797
1852
  placeholder: t("assetFilters.area.searchPlaceholder"),
1798
- } }), jsxRuntime.jsx(reactFilterComponents.FilterBody, { limitSize: true, children: options.length > 0 || placeholderOption ? (jsxRuntime.jsx(filtersFilterBar.FilterResults, { loading: false, results: [
1853
+ } }), jsxRuntime.jsx(reactFilterComponents.FilterBody, { limitSize: true, children: props.areas.length > 0 || placeholderOption ? (jsxRuntime.jsx(filtersFilterBar.FilterResults, { loading: false, results: [
1799
1854
  // Show placeholder option first if selected option is not in filterResult
1800
1855
  // Aka if applied from outside the filter UI
1801
- ...(placeholderOption && !selectedOption && !debouncedSearchString ? [placeholderOption] : []),
1802
- ...options,
1856
+ ...(placeholderOption && !selectedOption && !props.debouncedSearchString ? [placeholderOption] : []),
1857
+ ...props.areas,
1803
1858
  ], children: filterResult => {
1804
1859
  var _a, _b;
1805
1860
  return (jsxRuntime.jsx(reactFormComponents.RadioGroup, { className: "m-1", id: "areaFilter", onChange: e => {
@@ -1816,19 +1871,7 @@ const AreaView = (props) => {
1816
1871
  wasPreviousSearch: Boolean(dateIsoString),
1817
1872
  },
1818
1873
  });
1819
- props.setRecentAreas(prev => {
1820
- const noDuplicatesRecent = prev.filter(r => r.properties.formattedAddress !== properties.formattedAddress);
1821
- const cappedLengthRecent = noDuplicatesRecent.slice(0, MAX_RECENT_SEARCHES$1 - 1);
1822
- return [
1823
- {
1824
- properties,
1825
- geometry,
1826
- bBox,
1827
- dateIsoString: new Date().toISOString(),
1828
- },
1829
- ...cappedLengthRecent,
1830
- ];
1831
- });
1874
+ props.addRecentArea(parsedResultLookup.data);
1832
1875
  if (geometry.type === "Polygon") {
1833
1876
  // Polygons are stored directly
1834
1877
  props.filterBarActions.setArea(geometry);
@@ -1838,14 +1881,14 @@ const AreaView = (props) => {
1838
1881
  // polygon derived from the features bbox
1839
1882
  props.filterBarActions.setArea(geoJsonUtils.getPolygonFromBbox(bBox));
1840
1883
  }
1841
- setSearchString(""); // Clear search input after selection
1884
+ props.setSearchString(""); // Clear search input after selection
1842
1885
  }, value: (_b = (_a = selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.properties.formattedAddress) !== null && _a !== void 0 ? _a : placeholderOption === null || placeholderOption === void 0 ? void 0 : placeholderOption.properties.formattedAddress) !== null && _b !== void 0 ? _b : "", children: filterResult.map(({ properties, dateIsoString }, index) => {
1843
1886
  const selected = (selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.properties.formattedAddress) === properties.formattedAddress;
1844
1887
  return (jsxRuntime.jsx(reactFilterComponents.RadioFilterItem, { label: properties.formattedAddress, selected: selected, suffix:
1845
1888
  // Only show clear button if not currently selected and previously searched
1846
- !selected && dateIsoString ? (jsxRuntime.jsx(ClearItemButton, { onClear: () => props.setRecentAreas(prev => prev.filter(r => r.properties.formattedAddress !== properties.formattedAddress)) })) : null, value: properties.formattedAddress }, properties.formattedAddress + index));
1889
+ !selected && dateIsoString ? (jsxRuntime.jsx(ClearItemButton, { onClick: () => props.setRecentAreas(prev => prev.filter(r => r.properties.formattedAddress !== properties.formattedAddress)) })) : null, value: properties.formattedAddress }, index));
1847
1890
  }) }));
1848
- } })) : (jsxRuntime.jsx("p", { className: "py-2 text-center text-sm text-gray-400", children: hint })) }), debouncedSearchString.length === 0 ? (jsxRuntime.jsx(RecentSearchesFooter, { count: props.recentAreas.length, onClearAll: () => props.setRecentAreas([]) })) : null] }));
1891
+ } })) : (jsxRuntime.jsx("p", { className: "py-2 text-center text-sm text-gray-400", children: props.hint })) }), props.debouncedSearchString.length === 0 ? (jsxRuntime.jsx(RecentSearchesFooter, { count: props.recentAreas.length, onClearAll: () => props.setRecentAreas([]) })) : null] }));
1849
1892
  };
1850
1893
  /**
1851
1894
  * Area filter definition
@@ -1856,10 +1899,8 @@ const useAreaFilter = ({ showWithSearch } = {
1856
1899
  showWithSearch: () => true,
1857
1900
  }) => {
1858
1901
  const [t] = useTranslation();
1859
- const [recentSearches, setRecentSearches] = reactCoreHooks.useLocalStorage({
1860
- defaultState: [],
1861
- key: LOCAL_STORAGE_KEY,
1862
- schema: zod.z.array(areaFilterInternalSchema),
1902
+ const areaSearch = useAreaSearch({
1903
+ localStorageKey: "shared-recent-locations",
1863
1904
  });
1864
1905
  const result = react.useMemo(() => {
1865
1906
  return {
@@ -1872,14 +1913,14 @@ const useAreaFilter = ({ showWithSearch } = {
1872
1913
  showInFilterBar: () => showWithSearch(),
1873
1914
  valueAsText: value => {
1874
1915
  var _a;
1875
- const nameOfSelectedArea = getSelectedOption(value, recentSearches);
1916
+ const nameOfSelectedArea = getSelectedOption(value, areaSearch.recentAreas);
1876
1917
  return showWithSearch()
1877
- ? (_a = nameOfSelectedArea === null || nameOfSelectedArea === void 0 ? void 0 : nameOfSelectedArea.properties.formattedAddress) !== null && _a !== void 0 ? _a : t("assetFilters.area.active")
1918
+ ? ((_a = nameOfSelectedArea === null || nameOfSelectedArea === void 0 ? void 0 : nameOfSelectedArea.properties.formattedAddress) !== null && _a !== void 0 ? _a : t("assetFilters.area.active"))
1878
1919
  : t("assetFilters.boundingBoxFilter.value");
1879
1920
  },
1880
- component: props => (jsxRuntime.jsx(AreaView, { ...props, recentAreas: recentSearches, setRecentAreas: setRecentSearches, showWithSearch: showWithSearch() })),
1921
+ component: props => jsxRuntime.jsx(AreaView, { ...props, ...areaSearch, showWithSearch: showWithSearch() }),
1881
1922
  };
1882
- }, [t, showWithSearch, recentSearches, setRecentSearches]);
1923
+ }, [t, showWithSearch, areaSearch]);
1883
1924
  return result;
1884
1925
  };
1885
1926
  const getSelectedOption = (value, options) => {
@@ -2714,7 +2755,7 @@ const SearchFilterInline = ({ filterBarActions, filterState, filterDefinition, l
2714
2755
  return [option, ...cappedLengthRecent];
2715
2756
  });
2716
2757
  setSearchString(option);
2717
- }, selected: option === filterValue, suffix: jsxRuntime.jsx(ClearItemButton, { onClear: e => {
2758
+ }, selected: option === filterValue, suffix: jsxRuntime.jsx(ClearItemButton, { onClick: e => {
2718
2759
  e.stopPropagation();
2719
2760
  setRecentSearches(prev => prev.filter(r => r !== option));
2720
2761
  } }) }, `${option}-${index}`))) }) }), jsxRuntime.jsx(RecentSearchesFooter, { count: recentSearches.length, onClearAll: () => setRecentSearches([]) })] })) : (jsxRuntime.jsx("p", { className: "py-2 text-center text-sm text-gray-400", children: t("filters.shared.noHistory") })) }) }) })] }));
@@ -3489,9 +3530,12 @@ const servicePlanSchema = zod.z.array(zod.z.union([
3489
3530
  setupLibraryTranslations();
3490
3531
 
3491
3532
  exports.ALL_TYPES = ALL_TYPES;
3533
+ exports.ClearItemButton = ClearItemButton;
3492
3534
  exports.GetFleetGroupSummaryDocument = GetFleetGroupSummaryDocument;
3493
3535
  exports.SERVICE_PLAN_STATUSES_TO_SHOW = SERVICE_PLAN_STATUSES_TO_SHOW;
3494
3536
  exports.SearchFilterInline = SearchFilterInline;
3537
+ exports.areaFilterInternalGeoJsonGeometrySchema = areaFilterInternalGeoJsonGeometrySchema;
3538
+ exports.areaFilterInternalSchema = areaFilterInternalSchema;
3495
3539
  exports.assetTypeConst = assetTypeConst;
3496
3540
  exports.mapActivityToLabelId = mapActivityToLabelId;
3497
3541
  exports.mapMetadataCompletenessToLabelId = mapMetadataCompletenessToLabelId;
@@ -3500,6 +3544,7 @@ exports.sortSiteTypeSummary = sortSiteTypeSummary;
3500
3544
  exports.useActiveFilterFilter = useActiveFilterFilter;
3501
3545
  exports.useActivityFilter = useActivityFilter;
3502
3546
  exports.useAreaFilter = useAreaFilter;
3547
+ exports.useAreaSearch = useAreaSearch;
3503
3548
  exports.useAssetIdsFilter = useAssetIdsFilter;
3504
3549
  exports.useAssetTypeFilter = useAssetTypeFilter;
3505
3550
  exports.useBrandFilter = useBrandFilter;
package/index.esm.js CHANGED
@@ -10,9 +10,9 @@ import { useActiveAssetFilters, useAssetQueryFilters } from '@trackunit/filters-
10
10
  import { ActivityIndicator } from '@trackunit/utilization-indicator';
11
11
  import { geoJsonPolygonSchema, geoJsonPointSchema, geoJsonMultiPolygonSchema, geoJsonBboxSchema, getPolygonFromBbox, getBboxFromGeoJsonPolygon, getGeoJsonPolygonFromBoundingBox } from '@trackunit/geo-json-utils';
12
12
  import { Tooltip, IconButton, Icon, Text, Button, useDebounce, useGeometry, Popover, PopoverTrigger, PopoverContent, MenuList, MenuItem } from '@trackunit/react-components';
13
+ import { z } from 'zod';
13
14
  import { nonNullable, objectValues, hourIntervals, enumFromValue, objectKeys } from '@trackunit/shared-utils';
14
15
  import { titleCase, lowerCase } from 'string-ts';
15
- import { z } from 'zod';
16
16
  import { useMachineTypeTranslations } from '@trackunit/translations-machine-type';
17
17
  import { CriticalityIndicator } from '@trackunit/criticality-indicator';
18
18
  import { twMerge } from 'tailwind-merge';
@@ -133,6 +133,7 @@ var defaultTranslations = {
133
133
  "filters.shared.clear": "clear",
134
134
  "filters.shared.clearAll": "clear all",
135
135
  "filters.shared.noHistory": "No search history yet",
136
+ "filters.shared.notJustWhitepsace": "Please enter a search term",
136
137
  "filters.shared.recentSearches": "Recent searches",
137
138
  "filters.shared.typeMore": "Type more to search...",
138
139
  "filtersBar.closeFilter": "Close",
@@ -1689,9 +1690,9 @@ const useActivityFilter = () => {
1689
1690
  * @param {ClearItemButtonProps} props - The props for the ClearItemButton component
1690
1691
  * @returns {JSX.Element} ClearItemButton component
1691
1692
  */
1692
- const ClearItemButton = ({ onClear }) => {
1693
+ const ClearItemButton = ({ onClick }) => {
1693
1694
  const [t] = useTranslation();
1694
- return (jsx(Tooltip, { label: t("filters.shared.clear"), children: jsx(IconButton, { circular: true, icon: jsx(Icon, { name: "Trash", size: "small" }), onClick: onClear, size: "small", variant: "ghost-neutral" }) }));
1695
+ return (jsx(Tooltip, { label: t("filters.shared.clear"), children: jsx(IconButton, { circular: true, icon: jsx(Icon, { name: "Trash", size: "small" }), onClick: onClick, size: "small", variant: "ghost-neutral" }) }));
1695
1696
  };
1696
1697
 
1697
1698
  /**
@@ -1708,7 +1709,6 @@ const RecentSearchesFooter = ({ count, onClearAll }) => {
1708
1709
  return (jsxs("div", { className: "flex items-baseline justify-between gap-x-2 border-t-2 border-slate-300 px-2 py-0.5", children: [jsx(Text, { className: "py-0.5", size: "small", subtle: true, children: t("filters.shared.recentSearches") }), count > 1 ? (jsx(Button, { onClick: onClearAll, size: "small", variant: "ghost", children: t("filters.shared.clearAll") })) : null] }));
1709
1710
  };
1710
1711
 
1711
- const LOCAL_STORAGE_KEY = "area-filter-recent-searches";
1712
1712
  const areaFilterInternalGeoJsonGeometrySchema = z.union([
1713
1713
  geoJsonPolygonSchema,
1714
1714
  geoJsonPointSchema,
@@ -1722,19 +1722,31 @@ const areaFilterInternalSchema = z.object({
1722
1722
  }),
1723
1723
  dateIsoString: z.string().datetime().optional(), //can not be date object since useLocalStorage (with validation) does not support date objects
1724
1724
  });
1725
+
1726
+ const SHARED_LOCATIONS_LOCAL_STORAGE_KEY = "shared-recent-locations";
1725
1727
  const MAX_RECENT_SEARCHES$1 = 5;
1726
- const MIN_LENGTH_SEARCH = 2;
1727
- const AreaView = (props) => {
1728
+ const MIN_LENGTH_SEARCH = 3;
1729
+ const MAX_RESULTS = 5;
1730
+ /**
1731
+ * useAreaSearch is a hook that provides a search input for finding areas and a list of recent areas.
1732
+ * It uses the FindPlacesDocument query to search for areas and debounces the search input.
1733
+ * It also provides a list of recent areas that are stored in local storage.
1734
+ */
1735
+ const useAreaSearch = ({ localStorageKey = SHARED_LOCATIONS_LOCAL_STORAGE_KEY, maxRecentSearches = MAX_RECENT_SEARCHES$1, maxResults = MAX_RESULTS, }) => {
1728
1736
  const [t] = useTranslation();
1729
1737
  const [searchString, setSearchString] = useState("");
1730
- const { logEvent } = useAnalytics(FilterEvents);
1738
+ const [recentAreas, setRecentAreas] = useLocalStorage({
1739
+ defaultState: [],
1740
+ key: localStorageKey,
1741
+ schema: z.array(areaFilterInternalSchema),
1742
+ });
1731
1743
  const debouncedSearchString = useDebounce(searchString);
1732
1744
  const { data, previousData, loading } = useQuery(FindPlacesDocument, {
1733
1745
  variables: { search: debouncedSearchString },
1734
- skip: !debouncedSearchString || debouncedSearchString.length < MIN_LENGTH_SEARCH,
1746
+ skip: !debouncedSearchString || searchString.replace(/\s/g, "").length < MIN_LENGTH_SEARCH,
1735
1747
  });
1736
- const stableData = data !== null && data !== void 0 ? data : previousData;
1737
- const areas = useMemo(() => {
1748
+ const stableData = useMemo(() => data !== null && data !== void 0 ? data : previousData, [data, previousData]);
1749
+ const loadedAreas = useMemo(() => {
1738
1750
  var _a, _b;
1739
1751
  return ((_b = (_a = stableData === null || stableData === void 0 ? void 0 : stableData.findPlaces) === null || _a === void 0 ? void 0 : _a.map(place => {
1740
1752
  var _a, _b;
@@ -1755,6 +1767,59 @@ const AreaView = (props) => {
1755
1767
  };
1756
1768
  }).filter(nonNullable)) !== null && _b !== void 0 ? _b : []);
1757
1769
  }, [stableData]);
1770
+ const areas = debouncedSearchString ? loadedAreas : recentAreas;
1771
+ const hint = useMemo(() => {
1772
+ const noWhiteSpaceSearchString = searchString.replace(/\s/g, "");
1773
+ if (searchString.length === 0 && areas.length === 0) {
1774
+ return t("filters.shared.noHistory");
1775
+ }
1776
+ else if (noWhiteSpaceSearchString.length === 0 && searchString.length > 0) {
1777
+ return t("filters.shared.notJustWhitepsace");
1778
+ }
1779
+ else if (searchString.length > 0 && noWhiteSpaceSearchString.length < MIN_LENGTH_SEARCH) {
1780
+ return t("filters.shared.typeMore");
1781
+ }
1782
+ else if (loading && areas.length === 0) {
1783
+ return t("filtersBar.loading");
1784
+ }
1785
+ else if (areas.length === 0) {
1786
+ return t("filtersBar.emptyResults");
1787
+ }
1788
+ return null;
1789
+ }, [searchString, areas, t, loading]);
1790
+ const addRecentArea = (area) => {
1791
+ setRecentAreas(prev => {
1792
+ const noDuplicatesRecent = prev.filter(r => r.properties.formattedAddress !== area.properties.formattedAddress);
1793
+ const cappedLengthRecentAreas = noDuplicatesRecent.slice(0, maxRecentSearches - 1);
1794
+ return [
1795
+ {
1796
+ ...area,
1797
+ dateIsoString: new Date().toISOString(),
1798
+ },
1799
+ ...cappedLengthRecentAreas,
1800
+ ];
1801
+ });
1802
+ };
1803
+ const removeRecentArea = (area) => {
1804
+ setRecentAreas(prev => prev.filter(r => r.properties.formattedAddress !== area.properties.formattedAddress));
1805
+ };
1806
+ return {
1807
+ areas: areas.slice(0, maxResults),
1808
+ loading,
1809
+ searchString,
1810
+ setSearchString,
1811
+ debouncedSearchString,
1812
+ recentAreas,
1813
+ setRecentAreas,
1814
+ hint,
1815
+ removeRecentArea,
1816
+ addRecentArea,
1817
+ };
1818
+ };
1819
+
1820
+ const AreaView = (props) => {
1821
+ const [t] = useTranslation();
1822
+ const { logEvent } = useAnalytics(FilterEvents);
1758
1823
  const placeholderOption = useMemo(() => {
1759
1824
  // If no selected option, use this placeholder option
1760
1825
  // Aka if applied from outside the filter UI
@@ -1771,33 +1836,23 @@ const AreaView = (props) => {
1771
1836
  }
1772
1837
  : null;
1773
1838
  }, [props.value, t]);
1774
- const options = debouncedSearchString ? areas : props.recentAreas;
1775
- const selectedOption = getSelectedOption(props.value, options);
1776
- const hint = useMemo(() => {
1777
- if (searchString.length === 0 && options.length === 0) {
1778
- return t("filters.shared.noHistory");
1779
- }
1780
- if (searchString.length > 0 && searchString.length < MIN_LENGTH_SEARCH) {
1781
- return t("filters.shared.typeMore");
1782
- }
1783
- return null;
1784
- }, [searchString, options, t]);
1839
+ const selectedOption = getSelectedOption(props.value, props.areas);
1785
1840
  if (!props.showWithSearch) {
1786
1841
  // Temoraray while we are testing the new area filter bar behind feature flag
1787
1842
  // This emulated the old look of the boundingbox filter
1788
1843
  // TODO [BUSS] Remove this once the new area filter is ready for prime time
1789
1844
  return (jsxs(Fragment, { children: [jsx(FilterHeader, { ...props.filterDefinition, ...props.filterBarActions }), jsx(FilterBody, { limitSize: true, children: jsx("p", { className: "p-2", children: `${t("assetFilters.boundingBoxFilter.value")}` }) })] }));
1790
1845
  }
1791
- return (jsxs("div", { children: [jsx(FilterHeader, { ...props.filterDefinition, ...props.filterBarActions, loading: loading, searchEnabled: true, searchProps: {
1792
- onChange: setSearchString,
1793
- value: searchString,
1794
- count: options.length,
1846
+ return (jsxs("div", { children: [jsx(FilterHeader, { ...props.filterDefinition, ...props.filterBarActions, loading: props.loading, searchEnabled: true, searchProps: {
1847
+ onChange: props.setSearchString,
1848
+ value: props.searchString,
1849
+ count: props.areas.length,
1795
1850
  placeholder: t("assetFilters.area.searchPlaceholder"),
1796
- } }), jsx(FilterBody, { limitSize: true, children: options.length > 0 || placeholderOption ? (jsx(FilterResults, { loading: false, results: [
1851
+ } }), jsx(FilterBody, { limitSize: true, children: props.areas.length > 0 || placeholderOption ? (jsx(FilterResults, { loading: false, results: [
1797
1852
  // Show placeholder option first if selected option is not in filterResult
1798
1853
  // Aka if applied from outside the filter UI
1799
- ...(placeholderOption && !selectedOption && !debouncedSearchString ? [placeholderOption] : []),
1800
- ...options,
1854
+ ...(placeholderOption && !selectedOption && !props.debouncedSearchString ? [placeholderOption] : []),
1855
+ ...props.areas,
1801
1856
  ], children: filterResult => {
1802
1857
  var _a, _b;
1803
1858
  return (jsx(RadioGroup, { className: "m-1", id: "areaFilter", onChange: e => {
@@ -1814,19 +1869,7 @@ const AreaView = (props) => {
1814
1869
  wasPreviousSearch: Boolean(dateIsoString),
1815
1870
  },
1816
1871
  });
1817
- props.setRecentAreas(prev => {
1818
- const noDuplicatesRecent = prev.filter(r => r.properties.formattedAddress !== properties.formattedAddress);
1819
- const cappedLengthRecent = noDuplicatesRecent.slice(0, MAX_RECENT_SEARCHES$1 - 1);
1820
- return [
1821
- {
1822
- properties,
1823
- geometry,
1824
- bBox,
1825
- dateIsoString: new Date().toISOString(),
1826
- },
1827
- ...cappedLengthRecent,
1828
- ];
1829
- });
1872
+ props.addRecentArea(parsedResultLookup.data);
1830
1873
  if (geometry.type === "Polygon") {
1831
1874
  // Polygons are stored directly
1832
1875
  props.filterBarActions.setArea(geometry);
@@ -1836,14 +1879,14 @@ const AreaView = (props) => {
1836
1879
  // polygon derived from the features bbox
1837
1880
  props.filterBarActions.setArea(getPolygonFromBbox(bBox));
1838
1881
  }
1839
- setSearchString(""); // Clear search input after selection
1882
+ props.setSearchString(""); // Clear search input after selection
1840
1883
  }, value: (_b = (_a = selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.properties.formattedAddress) !== null && _a !== void 0 ? _a : placeholderOption === null || placeholderOption === void 0 ? void 0 : placeholderOption.properties.formattedAddress) !== null && _b !== void 0 ? _b : "", children: filterResult.map(({ properties, dateIsoString }, index) => {
1841
1884
  const selected = (selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.properties.formattedAddress) === properties.formattedAddress;
1842
1885
  return (jsx(RadioFilterItem, { label: properties.formattedAddress, selected: selected, suffix:
1843
1886
  // Only show clear button if not currently selected and previously searched
1844
- !selected && dateIsoString ? (jsx(ClearItemButton, { onClear: () => props.setRecentAreas(prev => prev.filter(r => r.properties.formattedAddress !== properties.formattedAddress)) })) : null, value: properties.formattedAddress }, properties.formattedAddress + index));
1887
+ !selected && dateIsoString ? (jsx(ClearItemButton, { onClick: () => props.setRecentAreas(prev => prev.filter(r => r.properties.formattedAddress !== properties.formattedAddress)) })) : null, value: properties.formattedAddress }, index));
1845
1888
  }) }));
1846
- } })) : (jsx("p", { className: "py-2 text-center text-sm text-gray-400", children: hint })) }), debouncedSearchString.length === 0 ? (jsx(RecentSearchesFooter, { count: props.recentAreas.length, onClearAll: () => props.setRecentAreas([]) })) : null] }));
1889
+ } })) : (jsx("p", { className: "py-2 text-center text-sm text-gray-400", children: props.hint })) }), props.debouncedSearchString.length === 0 ? (jsx(RecentSearchesFooter, { count: props.recentAreas.length, onClearAll: () => props.setRecentAreas([]) })) : null] }));
1847
1890
  };
1848
1891
  /**
1849
1892
  * Area filter definition
@@ -1854,10 +1897,8 @@ const useAreaFilter = ({ showWithSearch } = {
1854
1897
  showWithSearch: () => true,
1855
1898
  }) => {
1856
1899
  const [t] = useTranslation();
1857
- const [recentSearches, setRecentSearches] = useLocalStorage({
1858
- defaultState: [],
1859
- key: LOCAL_STORAGE_KEY,
1860
- schema: z.array(areaFilterInternalSchema),
1900
+ const areaSearch = useAreaSearch({
1901
+ localStorageKey: "shared-recent-locations",
1861
1902
  });
1862
1903
  const result = useMemo(() => {
1863
1904
  return {
@@ -1870,14 +1911,14 @@ const useAreaFilter = ({ showWithSearch } = {
1870
1911
  showInFilterBar: () => showWithSearch(),
1871
1912
  valueAsText: value => {
1872
1913
  var _a;
1873
- const nameOfSelectedArea = getSelectedOption(value, recentSearches);
1914
+ const nameOfSelectedArea = getSelectedOption(value, areaSearch.recentAreas);
1874
1915
  return showWithSearch()
1875
- ? (_a = nameOfSelectedArea === null || nameOfSelectedArea === void 0 ? void 0 : nameOfSelectedArea.properties.formattedAddress) !== null && _a !== void 0 ? _a : t("assetFilters.area.active")
1916
+ ? ((_a = nameOfSelectedArea === null || nameOfSelectedArea === void 0 ? void 0 : nameOfSelectedArea.properties.formattedAddress) !== null && _a !== void 0 ? _a : t("assetFilters.area.active"))
1876
1917
  : t("assetFilters.boundingBoxFilter.value");
1877
1918
  },
1878
- component: props => (jsx(AreaView, { ...props, recentAreas: recentSearches, setRecentAreas: setRecentSearches, showWithSearch: showWithSearch() })),
1919
+ component: props => jsx(AreaView, { ...props, ...areaSearch, showWithSearch: showWithSearch() }),
1879
1920
  };
1880
- }, [t, showWithSearch, recentSearches, setRecentSearches]);
1921
+ }, [t, showWithSearch, areaSearch]);
1881
1922
  return result;
1882
1923
  };
1883
1924
  const getSelectedOption = (value, options) => {
@@ -2712,7 +2753,7 @@ const SearchFilterInline = ({ filterBarActions, filterState, filterDefinition, l
2712
2753
  return [option, ...cappedLengthRecent];
2713
2754
  });
2714
2755
  setSearchString(option);
2715
- }, selected: option === filterValue, suffix: jsx(ClearItemButton, { onClear: e => {
2756
+ }, selected: option === filterValue, suffix: jsx(ClearItemButton, { onClick: e => {
2716
2757
  e.stopPropagation();
2717
2758
  setRecentSearches(prev => prev.filter(r => r !== option));
2718
2759
  } }) }, `${option}-${index}`))) }) }), jsx(RecentSearchesFooter, { count: recentSearches.length, onClearAll: () => setRecentSearches([]) })] })) : (jsx("p", { className: "py-2 text-center text-sm text-gray-400", children: t("filters.shared.noHistory") })) }) }) })] }));
@@ -3486,4 +3527,4 @@ const servicePlanSchema = z.array(z.union([
3486
3527
  */
3487
3528
  setupLibraryTranslations();
3488
3529
 
3489
- export { ALL_TYPES, AssetActivityState, AssetLastSeen, DayPeriod, GetFleetGroupSummaryDocument, SERVICE_PLAN_STATUSES_TO_SHOW, SearchFilterInline, SiteStatus, SiteTypeSFS, assetTypeConst, mapActivityToLabelId, mapMetadataCompletenessToLabelId, metadataCompleteness, sortSiteTypeSummary, useActiveFilterFilter, useActivityFilter, useAreaFilter, useAssetIdsFilter, useAssetTypeFilter, useBrandFilter, useCriticalityFilter, useCustomerIdsFilter, useDefaultAssetFilterBarDefinition, useFollowedFilter, useGroupIdsFilter, useHourIntervalFilter, useLastSeenFilter, useMetadataCompletenessFilter, useModelsFilter, useOwnerAccountIdsFilter, usePeriodFilter, useProductionYearFilter, useSearchFilter, useServicePlanStatusFilter, useSetFilterStateFromUrl, useSiteIdsFilter, useSiteStatusFilter, useSiteTypeFilter, useTelematicsConnectedFilter, useTypesFilter };
3530
+ export { ALL_TYPES, AssetActivityState, AssetLastSeen, ClearItemButton, DayPeriod, GetFleetGroupSummaryDocument, SERVICE_PLAN_STATUSES_TO_SHOW, SearchFilterInline, SiteStatus, SiteTypeSFS, areaFilterInternalGeoJsonGeometrySchema, areaFilterInternalSchema, assetTypeConst, mapActivityToLabelId, mapMetadataCompletenessToLabelId, metadataCompleteness, sortSiteTypeSummary, useActiveFilterFilter, useActivityFilter, useAreaFilter, useAreaSearch, useAssetIdsFilter, useAssetTypeFilter, useBrandFilter, useCriticalityFilter, useCustomerIdsFilter, useDefaultAssetFilterBarDefinition, useFollowedFilter, useGroupIdsFilter, useHourIntervalFilter, useLastSeenFilter, useMetadataCompletenessFilter, useModelsFilter, useOwnerAccountIdsFilter, usePeriodFilter, useProductionYearFilter, useSearchFilter, useServicePlanStatusFilter, useSetFilterStateFromUrl, useSiteIdsFilter, useSiteStatusFilter, useSiteTypeFilter, useTelematicsConnectedFilter, useTypesFilter };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trackunit/filters-asset-filter-definitions",
3
- "version": "1.0.13",
3
+ "version": "1.0.15",
4
4
  "repository": "https://github.com/Trackunit/manager",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "engines": {
@@ -17,22 +17,22 @@
17
17
  "@tanstack/react-router": "1.47.1",
18
18
  "string-ts": "^2.0.0",
19
19
  "tailwind-merge": "^2.0.0",
20
- "@trackunit/iris-app-build-utilities": "^1.0.1",
21
- "@trackunit/filters-filter-bar": "^1.0.12",
22
- "@trackunit/react-core-hooks": "^1.0.4",
23
- "@trackunit/react-filter-components": "^1.0.12",
24
- "@trackunit/react-form-components": "^1.0.12",
25
- "@trackunit/filters-graphql-hook": "^1.0.12",
26
- "@trackunit/utilization-indicator": "^1.0.12",
27
- "@trackunit/geo-json-utils": "^1.0.1",
28
- "@trackunit/react-components": "^1.0.11",
20
+ "@trackunit/iris-app-build-utilities": "^1.0.2",
21
+ "@trackunit/filters-filter-bar": "^1.0.14",
22
+ "@trackunit/react-core-hooks": "^1.0.5",
23
+ "@trackunit/react-filter-components": "^1.0.14",
24
+ "@trackunit/react-form-components": "^1.0.14",
25
+ "@trackunit/filters-graphql-hook": "^1.0.14",
26
+ "@trackunit/utilization-indicator": "^1.0.14",
27
+ "@trackunit/geo-json-utils": "^1.0.2",
28
+ "@trackunit/react-components": "^1.0.13",
29
29
  "@trackunit/shared-utils": "^1.0.3",
30
- "@trackunit/translations-machine-type": "^1.0.4",
31
- "@trackunit/criticality-indicator": "^1.0.11",
32
- "@trackunit/iris-app-api": "^1.0.1",
33
- "@trackunit/react-core-contexts-test": "^1.0.4",
34
- "@trackunit/react-core-contexts-api": "^1.0.4",
35
- "@trackunit/i18n-library-translation": "^1.0.4"
30
+ "@trackunit/translations-machine-type": "^1.0.5",
31
+ "@trackunit/criticality-indicator": "^1.0.13",
32
+ "@trackunit/iris-app-api": "^1.0.2",
33
+ "@trackunit/react-core-contexts-test": "^1.0.5",
34
+ "@trackunit/react-core-contexts-api": "^1.0.5",
35
+ "@trackunit/i18n-library-translation": "^1.0.5"
36
36
  },
37
37
  "module": "./index.esm.js",
38
38
  "main": "./index.cjs.js",
@@ -0,0 +1,11 @@
1
+ import { AreaFilterDefinition } from "@trackunit/filters-filter-bar";
2
+ interface AreaFilterProps {
3
+ showWithSearch: () => boolean;
4
+ }
5
+ /**
6
+ * Area filter definition
7
+ *
8
+ * @returns {AreaFilterDefinition} Area filter definition
9
+ */
10
+ export declare const useAreaFilter: ({ showWithSearch }?: AreaFilterProps) => AreaFilterDefinition;
11
+ export {};
@@ -1,6 +1,33 @@
1
- import { AreaFilterDefinition } from "@trackunit/filters-filter-bar";
2
1
  import { z } from "zod";
3
- declare const areaFilterInternalSchema: z.ZodObject<{
2
+ export declare const areaFilterInternalGeoJsonGeometrySchema: z.ZodUnion<[z.ZodObject<{
3
+ type: z.ZodLiteral<"Polygon">;
4
+ coordinates: z.ZodArray<z.ZodEffects<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, "many">, [number, number][], [number, number][]>, "many">;
5
+ }, "strict", z.ZodTypeAny, {
6
+ type: "Polygon";
7
+ coordinates: [number, number][][];
8
+ }, {
9
+ type: "Polygon";
10
+ coordinates: [number, number][][];
11
+ }>, z.ZodObject<{
12
+ type: z.ZodLiteral<"Point">;
13
+ coordinates: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
14
+ }, "strict", z.ZodTypeAny, {
15
+ type: "Point";
16
+ coordinates: [number, number];
17
+ }, {
18
+ type: "Point";
19
+ coordinates: [number, number];
20
+ }>, z.ZodObject<{
21
+ type: z.ZodLiteral<"MultiPolygon">;
22
+ coordinates: z.ZodArray<z.ZodArray<z.ZodEffects<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, "many">, [number, number][], [number, number][]>, "many">, "many">;
23
+ }, "strict", z.ZodTypeAny, {
24
+ type: "MultiPolygon";
25
+ coordinates: [number, number][][][];
26
+ }, {
27
+ type: "MultiPolygon";
28
+ coordinates: [number, number][][][];
29
+ }>]>;
30
+ export declare const areaFilterInternalSchema: z.ZodObject<{
4
31
  bBox: z.ZodEffects<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, [number, number, number, number], [number, number, number, number]>;
5
32
  geometry: z.ZodUnion<[z.ZodObject<{
6
33
  type: z.ZodLiteral<"Polygon">;
@@ -72,13 +99,3 @@ declare const areaFilterInternalSchema: z.ZodObject<{
72
99
  dateIsoString?: string | undefined;
73
100
  }>;
74
101
  export type Area = z.infer<typeof areaFilterInternalSchema>;
75
- interface AreaFilterProps {
76
- showWithSearch: () => boolean;
77
- }
78
- /**
79
- * Area filter definition
80
- *
81
- * @returns {AreaFilterDefinition} Area filter definition
82
- */
83
- export declare const useAreaFilter: ({ showWithSearch }?: AreaFilterProps) => AreaFilterDefinition;
84
- export {};
@@ -0,0 +1,74 @@
1
+ import { StringWithAutocompleteOptions } from "@trackunit/shared-utils";
2
+ import { Area } from "./areaSchemas";
3
+ declare const SHARED_LOCATIONS_LOCAL_STORAGE_KEY: "shared-recent-locations";
4
+ type UseAreaSearchProps = {
5
+ localStorageKey?: StringWithAutocompleteOptions<typeof SHARED_LOCATIONS_LOCAL_STORAGE_KEY>;
6
+ maxRecentSearches?: number;
7
+ maxResults?: number;
8
+ };
9
+ /**
10
+ * useAreaSearch is a hook that provides a search input for finding areas and a list of recent areas.
11
+ * It uses the FindPlacesDocument query to search for areas and debounces the search input.
12
+ * It also provides a list of recent areas that are stored in local storage.
13
+ */
14
+ export declare const useAreaSearch: ({ localStorageKey, maxRecentSearches, maxResults, }: UseAreaSearchProps) => {
15
+ areas: {
16
+ bBox: [number, number, number, number];
17
+ geometry: {
18
+ type: "Polygon";
19
+ coordinates: [number, number][][];
20
+ } | {
21
+ type: "Point";
22
+ coordinates: [number, number];
23
+ } | {
24
+ type: "MultiPolygon";
25
+ coordinates: [number, number][][][];
26
+ };
27
+ properties: {
28
+ formattedAddress: string;
29
+ };
30
+ dateIsoString?: string | undefined;
31
+ }[];
32
+ loading: boolean;
33
+ searchString: string;
34
+ setSearchString: import("react").Dispatch<import("react").SetStateAction<string>>;
35
+ debouncedSearchString: string;
36
+ recentAreas: {
37
+ bBox: [number, number, number, number];
38
+ geometry: {
39
+ type: "Polygon";
40
+ coordinates: [number, number][][];
41
+ } | {
42
+ type: "Point";
43
+ coordinates: [number, number];
44
+ } | {
45
+ type: "MultiPolygon";
46
+ coordinates: [number, number][][][];
47
+ };
48
+ properties: {
49
+ formattedAddress: string;
50
+ };
51
+ dateIsoString?: string | undefined;
52
+ }[];
53
+ setRecentAreas: import("react").Dispatch<import("react").SetStateAction<{
54
+ bBox: [number, number, number, number];
55
+ geometry: {
56
+ type: "Polygon";
57
+ coordinates: [number, number][][];
58
+ } | {
59
+ type: "Point";
60
+ coordinates: [number, number];
61
+ } | {
62
+ type: "MultiPolygon";
63
+ coordinates: [number, number][][][];
64
+ };
65
+ properties: {
66
+ formattedAddress: string;
67
+ };
68
+ dateIsoString?: string | undefined;
69
+ }[]>>;
70
+ hint: string | null;
71
+ removeRecentArea: (area: Area) => void;
72
+ addRecentArea: (area: Area) => void;
73
+ };
74
+ export {};
@@ -1,6 +1,8 @@
1
1
  export * from "./ActiveFilter";
2
2
  export * from "./ActivityFilter";
3
- export * from "./AreaFilter";
3
+ export * from "./area/AreaFilter";
4
+ export * from "./area/areaSchemas";
5
+ export * from "./area/useAreaSearch";
4
6
  export * from "./AssetIdsFilter";
5
7
  export * from "./AssetTypeFilter";
6
8
  export * from "./BrandFilter";
package/src/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from "./defaultFilters/defaults";
2
2
  export * from "./hooks/useDefaultAssetFilterBarDefinition";
3
3
  export * from "./hooks/useSetFilterStateFromUrl";
4
+ export * from "./shared/ClearItemButton";
@@ -1,5 +1,5 @@
1
1
  type ClearItemButtonProps = {
2
- onClear: (e: React.MouseEvent) => void;
2
+ onClick: (e: React.MouseEvent) => void;
3
3
  };
4
4
  /**
5
5
  * A button to clear recent searches.
@@ -7,5 +7,5 @@ type ClearItemButtonProps = {
7
7
  * @param {ClearItemButtonProps} props - The props for the ClearItemButton component
8
8
  * @returns {JSX.Element} ClearItemButton component
9
9
  */
10
- export declare const ClearItemButton: ({ onClear }: ClearItemButtonProps) => import("react/jsx-runtime").JSX.Element;
10
+ export declare const ClearItemButton: ({ onClick }: ClearItemButtonProps) => import("react/jsx-runtime").JSX.Element;
11
11
  export {};
@@ -14,8 +14,8 @@ export declare const translations: TranslationResource<TranslationKeys>;
14
14
  /**
15
15
  * Local useTranslation for this specific library
16
16
  */
17
- export declare const useTranslation: () => [TransForLibs<"access.management.filter.operator.role.keyAdmin" | "access.management.keys.filter.active" | "access.management.keys.filter.deleted" | "access.management.keys.filter.expired" | "access.management.keys.filter.future" | "access.management.operator.asset.filter.category" | "access.management.operator.asset.filter.keyType" | "access.management.operator.asset.filter.type.digitalKey" | "access.management.operator.asset.filter.type.rollingPin" | "access.management.operator.asset.filter.type.staticPin" | "access.management.operator.filter.category" | "access.management.operator.filter.keyStatus.title" | "access.management.operator.filter.operatorRole.keyAdmin.title" | "access.management.operator.filter.operatorRole.title" | "assetFilters.activeAssetFilter.label" | "assetFilters.activityFilter.idling" | "assetFilters.activityFilter.stopped" | "assetFilters.activityFilter.unknown" | "assetFilters.activityFilter.working" | "assetFilters.area.active" | "assetFilters.area.label" | "assetFilters.area.origin.mapArea" | "assetFilters.area.previouslySearched" | "assetFilters.area.recent" | "assetFilters.area.searchPlaceholder" | "assetFilters.assetType.ATTACHMENT" | "assetFilters.assetType.EQUIPMENT" | "assetFilters.assetType.GATEWAY" | "assetFilters.assetType.MACHINE" | "assetFilters.assetType.OTHER" | "assetFilters.assetType.TOOL" | "assetFilters.assetType.VEHICLE" | "assetFilters.boundingBoxFilter.value" | "assetFilters.criticality.CRITICAL" | "assetFilters.criticality.LOW" | "assetFilters.criticality.NONE" | "assetFilters.followedFilter.label" | "assetFilters.hourIntervalFilter.label" | "assetFilters.lastSeenFilter.anytime" | "assetFilters.lastSeenFilter.last24Hours" | "assetFilters.lastSeenFilter.last30Days" | "assetFilters.lastSeenFilter.last7Days" | "assetFilters.lastSeenFilter.lastHour" | "assetFilters.lastSeenFilter.olderThan30Days" | "assetFilters.metadataCompleteness.ALL" | "assetFilters.metadataCompleteness.COMPLETE" | "assetFilters.metadataCompleteness.PARTIAL" | "assetFilters.ownerAccountNameFilter.label" | "assetFilters.partnerFilter.label" | "assetFilters.periodFilter.label" | "assetFilters.periodFilter.LAST_24_HOURS" | "assetFilters.periodFilter.LAST_30_DAYS" | "assetFilters.periodFilter.LAST_7_DAYS" | "assetFilters.periodFilter.LAST_YEAR" | "assetFilters.periodFilter.LIFETIME" | "assetFilters.planned" | "assetFilters.productionYear.label" | "assetFilters.regions.ANTARCTICA" | "assetFilters.regions.AUSTRALIA_AND_NEW_ZEALAND" | "assetFilters.regions.CENTRAL_ASIA" | "assetFilters.regions.EASTERN_ASIA" | "assetFilters.regions.EASTERN_EUROPE" | "assetFilters.regions.label" | "assetFilters.regions.LATIN_AMERICA_AND_THE_CARIBBEAN" | "assetFilters.regions.MELANESIA" | "assetFilters.regions.MICRONESIA" | "assetFilters.regions.NORTHERN_AFRICA" | "assetFilters.regions.NORTHERN_AMERICA" | "assetFilters.regions.NORTHERN_EUROPE" | "assetFilters.regions.POLYNESIA" | "assetFilters.regions.SOUTH-EASTERN_ASIA" | "assetFilters.regions.SOUTHERN_ASIA" | "assetFilters.regions.SOUTHERN_EUROPE" | "assetFilters.regions.SUB-SAHARAN_AFRICA" | "assetFilters.regions.WESTERN_ASIA" | "assetFilters.regions.WESTERN_EUROPE" | "assetFilters.regions.WHOLE_WORLD" | "assetFilters.rentalCustomerNameFilter.label" | "assetFilters.searchFilter.label" | "assetFilters.searchPlaceholder" | "assetFilters.serviceAssignmentStatusFilter.label" | "assetFilters.servicePlanFilter.fullyConfigured" | "assetFilters.servicePlanFilter.label" | "assetFilters.servicePlanFilter.notConfigured" | "assetFilters.servicePlanFilter.partiallyConfigured" | "assetFilters.serviceProviderFilter.label" | "assetFilters.serviceProviderStatusFilter.hasServiceProvider" | "assetFilters.serviceProviderStatusFilter.noServiceProvider" | "assetFilters.serviceStatusFilter.COMPLETE" | "assetFilters.serviceStatusFilter.DRAFT" | "assetFilters.serviceStatusFilter.FULLY_CONFIGURED" | "assetFilters.serviceStatusFilter.HAS_PLAN" | "assetFilters.serviceStatusFilter.HAS_SERVICE_PROVIDER" | "assetFilters.serviceStatusFilter.label" | "assetFilters.serviceStatusFilter.MISSING_PLAN" | "assetFilters.serviceStatusFilter.MISSING_PROVIDER" | "assetFilters.serviceStatusFilter.overdue" | "assetFilters.serviceStatusFilter.OVERDUE" | "assetFilters.serviceStatusFilter.PLANNED" | "assetFilters.serviceStatusFilter.UNKNOWN" | "assetFilters.serviceStatusFilter.upcoming" | "assetFilters.serviceStatusFilter.UPCOMING" | "assetFilters.shareOwnerFilter.label" | "assetFilters.telematicsConnectedFilter.label" | "assetFilters.unknown" | "assetFilters.visibleToFilter.label" | "auditlog.filter.categories" | "auditlog.filter.component" | "auditlog.filter.components" | "auditlog.filter.events" | "auditlog.filter.users" | "filters.shared.clear" | "filters.shared.clearAll" | "filters.shared.noHistory" | "filters.shared.recentSearches" | "filters.shared.typeMore" | "filtersBar.closeFilter" | "filtersBar.defaultAssetFilters.activeAssetFilter.hide" | "filtersBar.defaultAssetFilters.activeAssetFilter.show" | "filtersBar.defaultAssetFilters.followedFilter.ALL" | "filtersBar.defaultAssetFilters.followedFilter.allLabel" | "filtersBar.defaultAssetFilters.followedFilter.FOLLOWED" | "filtersBar.defaultAssetFilters.followedFilter.followedOnlyLabel" | "filtersBar.defaultAssetFilters.lastSeenFilter.ALL" | "filtersBar.defaultAssetFilters.lastSeenFilter.LAST_24_HOURS" | "filtersBar.defaultAssetFilters.lastSeenFilter.LAST_30_DAYS" | "filtersBar.defaultAssetFilters.lastSeenFilter.LAST_7_DAYS" | "filtersBar.defaultAssetFilters.lastSeenFilter.LAST_HOUR" | "filtersBar.defaultAssetFilters.lastSeenFilter.OLDER_THAN_30_DAYS" | "filtersBar.defaultAssetFilters.metadataGroup" | "filtersBar.defaultAssetFilters.othersGroup" | "filtersBar.defaultAssetFilters.sitesGroup" | "filtersBar.defaultAssetFilters.statusGroup" | "filtersBar.defaultAssetFilters.telematicsConnectedFilter.connected" | "filtersBar.defaultAssetFilters.telematicsConnectedFilter.notConnected" | "filtersBar.emptyResults" | "filtersBar.filtersHeading" | "filtersBar.loading" | "filtersBar.myNetworkGroup" | "filtersBar.resetFilter" | "filtersBar.resetFilters" | "filtersBar.starredFilters.title" | "filtersBar.starredFiltersTitle" | "fleetlist.column.activity" | "fleetlist.column.assetIds" | "fleetlist.column.assetType" | "fleetlist.column.attention" | "fleetlist.column.brand" | "fleetlist.column.city" | "fleetlist.column.country" | "fleetlist.column.customerIds" | "fleetlist.column.externalReference" | "fleetlist.column.groupIds" | "fleetlist.column.lastSeen" | "fleetlist.column.metadata" | "fleetlist.column.metadataCompleteness" | "fleetlist.column.model" | "fleetlist.column.name" | "fleetlist.column.onSiteType" | "fleetlist.column.owner" | "fleetlist.column.servicePlanStatus" | "fleetlist.column.siteDepotOwnershipIds" | "fleetlist.column.siteIds" | "fleetlist.column.siteStatus" | "fleetlist.column.siteType" | "fleetlist.column.streetAddress" | "fleetlist.column.totalHours" | "fleetlist.column.type" | "fleetlist.column.unitSerialNumber" | "fleetlist.column.vin" | "fleetlist.column.year" | "fleetlist.column.zipCode" | "fleetlist.createGroup" | "fleetlist.description" | "fleetList.sorting.ACTIVITY" | "fleetList.sorting.ASSET_TYPE" | "fleetList.sorting.BRAND" | "fleetList.sorting.CATEGORY" | "fleetList.sorting.CRITICALITY" | "fleetList.sorting.EXTERNAL_REFERENCE" | "fleetList.sorting.LOCATION" | "fleetList.sorting.LOCATION_UPDATED_AT" | "fleetList.sorting.MODEL" | "fleetList.sorting.NAME" | "fleetList.sorting.OWNER_ACCOUNT_NAME" | "fleetList.sorting.PRODUCTION_YEAR" | "fleetList.sorting.SERIAL_NUMBER" | "fleetList.sorting.SERVICE_PLAN_ASSIGNMENT_STATUS" | "fleetList.sorting.SERVICE_PLAN_OVERDUENESS" | "fleetList.sorting.SERVICE_PLAN_STATUS" | "fleetList.sorting.TELEMATICS_DEVICE_SERIAL_NUMBER" | "fleetList.sorting.TYPE" | "fleetList.sortingCategories.metadata" | "fleetList.sortingCategories.other" | "fleetList.sortingCategories.status" | "machine.types.ALL" | "machine.types.Unknown" | "pages.machines.telematics.networkTechnology.NW_TECH_2G" | "pages.machines.telematics.networkTechnology.NW_TECH_3G" | "pages.machines.telematics.networkTechnology.NW_TECH_4G" | "pages.machines.telematics.networkTechnology.UNKNOWN" | "pages.machines.telematics.operationalStatus.digitalKeyMode.DISABLED" | "pages.machines.telematics.operationalStatus.digitalKeyMode.LOCKED_FOR_ALL" | "pages.machines.telematics.operationalStatus.digitalKeyMode.LOCKED_FOR_ALL_FIXED" | "pages.machines.telematics.operationalStatus.digitalKeyMode.name" | "pages.machines.telematics.operationalStatus.digitalKeyMode.NEVER_INITIALIZED" | "pages.machines.telematics.operationalStatus.digitalKeyMode.UNKNOWN" | "pages.machines.telematics.operationalStatus.digitalKeyMode.UNLOCKED_FOR_ALL" | "pages.machines.telematics.operationalStatus.digitalKeyMode.UNLOCKED_FOR_ALL_FIXED" | "pages.machines.telematics.operationalStatus.digitalKeyMode.UNLOCKED_FOR_KEY" | "pages.machines.telematics.operationalStatus.digitalKeyMode.UNLOCKED_FOR_KEY_AND_PIN" | "pages.machines.telematics.operationalStatus.digitalKeyMode.UNLOCKED_FOR_PIN" | "pages.machines.telematics.operationalStatus.digitalKeyMode.UNSUPPORTED" | "rental.status.available" | "rental.status.inRepair" | "rental.status.onRent" | "rental.status.other" | "rental.status.pickUpReady" | "rental.status.returned" | "rental.status.transfer" | "rental.status.unknown" | "siteFilters.siteStatus.ACTIVE" | "siteFilters.siteStatus.ARCHIVED" | "siteFilters.siteStatus.FINISHED" | "siteFilters.siteStatus.PLANNED" | "siteFilters.siteStatus.unknown" | "siteFilters.siteType.AREA" | "siteFilters.siteType.CLASSIC_POI" | "siteFilters.siteType.CLASSIC_ZONE" | "siteFilters.siteType.CONSTRUCTION_SITE" | "siteFilters.siteType.DEPOT" | "siteFilters.siteType.NOT_ON_SITE" | "siteFilters.siteType.unknown" | "siteFilters.siteType.WORK_PLACE" | "siteOwningDepot.notOwned" | "siteOwningDepot.unknown">, import("i18next").i18n, boolean] & {
18
- t: TransForLibs<"access.management.filter.operator.role.keyAdmin" | "access.management.keys.filter.active" | "access.management.keys.filter.deleted" | "access.management.keys.filter.expired" | "access.management.keys.filter.future" | "access.management.operator.asset.filter.category" | "access.management.operator.asset.filter.keyType" | "access.management.operator.asset.filter.type.digitalKey" | "access.management.operator.asset.filter.type.rollingPin" | "access.management.operator.asset.filter.type.staticPin" | "access.management.operator.filter.category" | "access.management.operator.filter.keyStatus.title" | "access.management.operator.filter.operatorRole.keyAdmin.title" | "access.management.operator.filter.operatorRole.title" | "assetFilters.activeAssetFilter.label" | "assetFilters.activityFilter.idling" | "assetFilters.activityFilter.stopped" | "assetFilters.activityFilter.unknown" | "assetFilters.activityFilter.working" | "assetFilters.area.active" | "assetFilters.area.label" | "assetFilters.area.origin.mapArea" | "assetFilters.area.previouslySearched" | "assetFilters.area.recent" | "assetFilters.area.searchPlaceholder" | "assetFilters.assetType.ATTACHMENT" | "assetFilters.assetType.EQUIPMENT" | "assetFilters.assetType.GATEWAY" | "assetFilters.assetType.MACHINE" | "assetFilters.assetType.OTHER" | "assetFilters.assetType.TOOL" | "assetFilters.assetType.VEHICLE" | "assetFilters.boundingBoxFilter.value" | "assetFilters.criticality.CRITICAL" | "assetFilters.criticality.LOW" | "assetFilters.criticality.NONE" | "assetFilters.followedFilter.label" | "assetFilters.hourIntervalFilter.label" | "assetFilters.lastSeenFilter.anytime" | "assetFilters.lastSeenFilter.last24Hours" | "assetFilters.lastSeenFilter.last30Days" | "assetFilters.lastSeenFilter.last7Days" | "assetFilters.lastSeenFilter.lastHour" | "assetFilters.lastSeenFilter.olderThan30Days" | "assetFilters.metadataCompleteness.ALL" | "assetFilters.metadataCompleteness.COMPLETE" | "assetFilters.metadataCompleteness.PARTIAL" | "assetFilters.ownerAccountNameFilter.label" | "assetFilters.partnerFilter.label" | "assetFilters.periodFilter.label" | "assetFilters.periodFilter.LAST_24_HOURS" | "assetFilters.periodFilter.LAST_30_DAYS" | "assetFilters.periodFilter.LAST_7_DAYS" | "assetFilters.periodFilter.LAST_YEAR" | "assetFilters.periodFilter.LIFETIME" | "assetFilters.planned" | "assetFilters.productionYear.label" | "assetFilters.regions.ANTARCTICA" | "assetFilters.regions.AUSTRALIA_AND_NEW_ZEALAND" | "assetFilters.regions.CENTRAL_ASIA" | "assetFilters.regions.EASTERN_ASIA" | "assetFilters.regions.EASTERN_EUROPE" | "assetFilters.regions.label" | "assetFilters.regions.LATIN_AMERICA_AND_THE_CARIBBEAN" | "assetFilters.regions.MELANESIA" | "assetFilters.regions.MICRONESIA" | "assetFilters.regions.NORTHERN_AFRICA" | "assetFilters.regions.NORTHERN_AMERICA" | "assetFilters.regions.NORTHERN_EUROPE" | "assetFilters.regions.POLYNESIA" | "assetFilters.regions.SOUTH-EASTERN_ASIA" | "assetFilters.regions.SOUTHERN_ASIA" | "assetFilters.regions.SOUTHERN_EUROPE" | "assetFilters.regions.SUB-SAHARAN_AFRICA" | "assetFilters.regions.WESTERN_ASIA" | "assetFilters.regions.WESTERN_EUROPE" | "assetFilters.regions.WHOLE_WORLD" | "assetFilters.rentalCustomerNameFilter.label" | "assetFilters.searchFilter.label" | "assetFilters.searchPlaceholder" | "assetFilters.serviceAssignmentStatusFilter.label" | "assetFilters.servicePlanFilter.fullyConfigured" | "assetFilters.servicePlanFilter.label" | "assetFilters.servicePlanFilter.notConfigured" | "assetFilters.servicePlanFilter.partiallyConfigured" | "assetFilters.serviceProviderFilter.label" | "assetFilters.serviceProviderStatusFilter.hasServiceProvider" | "assetFilters.serviceProviderStatusFilter.noServiceProvider" | "assetFilters.serviceStatusFilter.COMPLETE" | "assetFilters.serviceStatusFilter.DRAFT" | "assetFilters.serviceStatusFilter.FULLY_CONFIGURED" | "assetFilters.serviceStatusFilter.HAS_PLAN" | "assetFilters.serviceStatusFilter.HAS_SERVICE_PROVIDER" | "assetFilters.serviceStatusFilter.label" | "assetFilters.serviceStatusFilter.MISSING_PLAN" | "assetFilters.serviceStatusFilter.MISSING_PROVIDER" | "assetFilters.serviceStatusFilter.overdue" | "assetFilters.serviceStatusFilter.OVERDUE" | "assetFilters.serviceStatusFilter.PLANNED" | "assetFilters.serviceStatusFilter.UNKNOWN" | "assetFilters.serviceStatusFilter.upcoming" | "assetFilters.serviceStatusFilter.UPCOMING" | "assetFilters.shareOwnerFilter.label" | "assetFilters.telematicsConnectedFilter.label" | "assetFilters.unknown" | "assetFilters.visibleToFilter.label" | "auditlog.filter.categories" | "auditlog.filter.component" | "auditlog.filter.components" | "auditlog.filter.events" | "auditlog.filter.users" | "filters.shared.clear" | "filters.shared.clearAll" | "filters.shared.noHistory" | "filters.shared.recentSearches" | "filters.shared.typeMore" | "filtersBar.closeFilter" | "filtersBar.defaultAssetFilters.activeAssetFilter.hide" | "filtersBar.defaultAssetFilters.activeAssetFilter.show" | "filtersBar.defaultAssetFilters.followedFilter.ALL" | "filtersBar.defaultAssetFilters.followedFilter.allLabel" | "filtersBar.defaultAssetFilters.followedFilter.FOLLOWED" | "filtersBar.defaultAssetFilters.followedFilter.followedOnlyLabel" | "filtersBar.defaultAssetFilters.lastSeenFilter.ALL" | "filtersBar.defaultAssetFilters.lastSeenFilter.LAST_24_HOURS" | "filtersBar.defaultAssetFilters.lastSeenFilter.LAST_30_DAYS" | "filtersBar.defaultAssetFilters.lastSeenFilter.LAST_7_DAYS" | "filtersBar.defaultAssetFilters.lastSeenFilter.LAST_HOUR" | "filtersBar.defaultAssetFilters.lastSeenFilter.OLDER_THAN_30_DAYS" | "filtersBar.defaultAssetFilters.metadataGroup" | "filtersBar.defaultAssetFilters.othersGroup" | "filtersBar.defaultAssetFilters.sitesGroup" | "filtersBar.defaultAssetFilters.statusGroup" | "filtersBar.defaultAssetFilters.telematicsConnectedFilter.connected" | "filtersBar.defaultAssetFilters.telematicsConnectedFilter.notConnected" | "filtersBar.emptyResults" | "filtersBar.filtersHeading" | "filtersBar.loading" | "filtersBar.myNetworkGroup" | "filtersBar.resetFilter" | "filtersBar.resetFilters" | "filtersBar.starredFilters.title" | "filtersBar.starredFiltersTitle" | "fleetlist.column.activity" | "fleetlist.column.assetIds" | "fleetlist.column.assetType" | "fleetlist.column.attention" | "fleetlist.column.brand" | "fleetlist.column.city" | "fleetlist.column.country" | "fleetlist.column.customerIds" | "fleetlist.column.externalReference" | "fleetlist.column.groupIds" | "fleetlist.column.lastSeen" | "fleetlist.column.metadata" | "fleetlist.column.metadataCompleteness" | "fleetlist.column.model" | "fleetlist.column.name" | "fleetlist.column.onSiteType" | "fleetlist.column.owner" | "fleetlist.column.servicePlanStatus" | "fleetlist.column.siteDepotOwnershipIds" | "fleetlist.column.siteIds" | "fleetlist.column.siteStatus" | "fleetlist.column.siteType" | "fleetlist.column.streetAddress" | "fleetlist.column.totalHours" | "fleetlist.column.type" | "fleetlist.column.unitSerialNumber" | "fleetlist.column.vin" | "fleetlist.column.year" | "fleetlist.column.zipCode" | "fleetlist.createGroup" | "fleetlist.description" | "fleetList.sorting.ACTIVITY" | "fleetList.sorting.ASSET_TYPE" | "fleetList.sorting.BRAND" | "fleetList.sorting.CATEGORY" | "fleetList.sorting.CRITICALITY" | "fleetList.sorting.EXTERNAL_REFERENCE" | "fleetList.sorting.LOCATION" | "fleetList.sorting.LOCATION_UPDATED_AT" | "fleetList.sorting.MODEL" | "fleetList.sorting.NAME" | "fleetList.sorting.OWNER_ACCOUNT_NAME" | "fleetList.sorting.PRODUCTION_YEAR" | "fleetList.sorting.SERIAL_NUMBER" | "fleetList.sorting.SERVICE_PLAN_ASSIGNMENT_STATUS" | "fleetList.sorting.SERVICE_PLAN_OVERDUENESS" | "fleetList.sorting.SERVICE_PLAN_STATUS" | "fleetList.sorting.TELEMATICS_DEVICE_SERIAL_NUMBER" | "fleetList.sorting.TYPE" | "fleetList.sortingCategories.metadata" | "fleetList.sortingCategories.other" | "fleetList.sortingCategories.status" | "machine.types.ALL" | "machine.types.Unknown" | "pages.machines.telematics.networkTechnology.NW_TECH_2G" | "pages.machines.telematics.networkTechnology.NW_TECH_3G" | "pages.machines.telematics.networkTechnology.NW_TECH_4G" | "pages.machines.telematics.networkTechnology.UNKNOWN" | "pages.machines.telematics.operationalStatus.digitalKeyMode.DISABLED" | "pages.machines.telematics.operationalStatus.digitalKeyMode.LOCKED_FOR_ALL" | "pages.machines.telematics.operationalStatus.digitalKeyMode.LOCKED_FOR_ALL_FIXED" | "pages.machines.telematics.operationalStatus.digitalKeyMode.name" | "pages.machines.telematics.operationalStatus.digitalKeyMode.NEVER_INITIALIZED" | "pages.machines.telematics.operationalStatus.digitalKeyMode.UNKNOWN" | "pages.machines.telematics.operationalStatus.digitalKeyMode.UNLOCKED_FOR_ALL" | "pages.machines.telematics.operationalStatus.digitalKeyMode.UNLOCKED_FOR_ALL_FIXED" | "pages.machines.telematics.operationalStatus.digitalKeyMode.UNLOCKED_FOR_KEY" | "pages.machines.telematics.operationalStatus.digitalKeyMode.UNLOCKED_FOR_KEY_AND_PIN" | "pages.machines.telematics.operationalStatus.digitalKeyMode.UNLOCKED_FOR_PIN" | "pages.machines.telematics.operationalStatus.digitalKeyMode.UNSUPPORTED" | "rental.status.available" | "rental.status.inRepair" | "rental.status.onRent" | "rental.status.other" | "rental.status.pickUpReady" | "rental.status.returned" | "rental.status.transfer" | "rental.status.unknown" | "siteFilters.siteStatus.ACTIVE" | "siteFilters.siteStatus.ARCHIVED" | "siteFilters.siteStatus.FINISHED" | "siteFilters.siteStatus.PLANNED" | "siteFilters.siteStatus.unknown" | "siteFilters.siteType.AREA" | "siteFilters.siteType.CLASSIC_POI" | "siteFilters.siteType.CLASSIC_ZONE" | "siteFilters.siteType.CONSTRUCTION_SITE" | "siteFilters.siteType.DEPOT" | "siteFilters.siteType.NOT_ON_SITE" | "siteFilters.siteType.unknown" | "siteFilters.siteType.WORK_PLACE" | "siteOwningDepot.notOwned" | "siteOwningDepot.unknown">;
17
+ export declare const useTranslation: () => [TransForLibs<"access.management.filter.operator.role.keyAdmin" | "access.management.keys.filter.active" | "access.management.keys.filter.deleted" | "access.management.keys.filter.expired" | "access.management.keys.filter.future" | "access.management.operator.asset.filter.category" | "access.management.operator.asset.filter.keyType" | "access.management.operator.asset.filter.type.digitalKey" | "access.management.operator.asset.filter.type.rollingPin" | "access.management.operator.asset.filter.type.staticPin" | "access.management.operator.filter.category" | "access.management.operator.filter.keyStatus.title" | "access.management.operator.filter.operatorRole.keyAdmin.title" | "access.management.operator.filter.operatorRole.title" | "assetFilters.activeAssetFilter.label" | "assetFilters.activityFilter.idling" | "assetFilters.activityFilter.stopped" | "assetFilters.activityFilter.unknown" | "assetFilters.activityFilter.working" | "assetFilters.area.active" | "assetFilters.area.label" | "assetFilters.area.origin.mapArea" | "assetFilters.area.previouslySearched" | "assetFilters.area.recent" | "assetFilters.area.searchPlaceholder" | "assetFilters.assetType.ATTACHMENT" | "assetFilters.assetType.EQUIPMENT" | "assetFilters.assetType.GATEWAY" | "assetFilters.assetType.MACHINE" | "assetFilters.assetType.OTHER" | "assetFilters.assetType.TOOL" | "assetFilters.assetType.VEHICLE" | "assetFilters.boundingBoxFilter.value" | "assetFilters.criticality.CRITICAL" | "assetFilters.criticality.LOW" | "assetFilters.criticality.NONE" | "assetFilters.followedFilter.label" | "assetFilters.hourIntervalFilter.label" | "assetFilters.lastSeenFilter.anytime" | "assetFilters.lastSeenFilter.last24Hours" | "assetFilters.lastSeenFilter.last30Days" | "assetFilters.lastSeenFilter.last7Days" | "assetFilters.lastSeenFilter.lastHour" | "assetFilters.lastSeenFilter.olderThan30Days" | "assetFilters.metadataCompleteness.ALL" | "assetFilters.metadataCompleteness.COMPLETE" | "assetFilters.metadataCompleteness.PARTIAL" | "assetFilters.ownerAccountNameFilter.label" | "assetFilters.partnerFilter.label" | "assetFilters.periodFilter.label" | "assetFilters.periodFilter.LAST_24_HOURS" | "assetFilters.periodFilter.LAST_30_DAYS" | "assetFilters.periodFilter.LAST_7_DAYS" | "assetFilters.periodFilter.LAST_YEAR" | "assetFilters.periodFilter.LIFETIME" | "assetFilters.planned" | "assetFilters.productionYear.label" | "assetFilters.regions.ANTARCTICA" | "assetFilters.regions.AUSTRALIA_AND_NEW_ZEALAND" | "assetFilters.regions.CENTRAL_ASIA" | "assetFilters.regions.EASTERN_ASIA" | "assetFilters.regions.EASTERN_EUROPE" | "assetFilters.regions.label" | "assetFilters.regions.LATIN_AMERICA_AND_THE_CARIBBEAN" | "assetFilters.regions.MELANESIA" | "assetFilters.regions.MICRONESIA" | "assetFilters.regions.NORTHERN_AFRICA" | "assetFilters.regions.NORTHERN_AMERICA" | "assetFilters.regions.NORTHERN_EUROPE" | "assetFilters.regions.POLYNESIA" | "assetFilters.regions.SOUTH-EASTERN_ASIA" | "assetFilters.regions.SOUTHERN_ASIA" | "assetFilters.regions.SOUTHERN_EUROPE" | "assetFilters.regions.SUB-SAHARAN_AFRICA" | "assetFilters.regions.WESTERN_ASIA" | "assetFilters.regions.WESTERN_EUROPE" | "assetFilters.regions.WHOLE_WORLD" | "assetFilters.rentalCustomerNameFilter.label" | "assetFilters.searchFilter.label" | "assetFilters.searchPlaceholder" | "assetFilters.serviceAssignmentStatusFilter.label" | "assetFilters.servicePlanFilter.fullyConfigured" | "assetFilters.servicePlanFilter.label" | "assetFilters.servicePlanFilter.notConfigured" | "assetFilters.servicePlanFilter.partiallyConfigured" | "assetFilters.serviceProviderFilter.label" | "assetFilters.serviceProviderStatusFilter.hasServiceProvider" | "assetFilters.serviceProviderStatusFilter.noServiceProvider" | "assetFilters.serviceStatusFilter.COMPLETE" | "assetFilters.serviceStatusFilter.DRAFT" | "assetFilters.serviceStatusFilter.FULLY_CONFIGURED" | "assetFilters.serviceStatusFilter.HAS_PLAN" | "assetFilters.serviceStatusFilter.HAS_SERVICE_PROVIDER" | "assetFilters.serviceStatusFilter.label" | "assetFilters.serviceStatusFilter.MISSING_PLAN" | "assetFilters.serviceStatusFilter.MISSING_PROVIDER" | "assetFilters.serviceStatusFilter.overdue" | "assetFilters.serviceStatusFilter.OVERDUE" | "assetFilters.serviceStatusFilter.PLANNED" | "assetFilters.serviceStatusFilter.UNKNOWN" | "assetFilters.serviceStatusFilter.upcoming" | "assetFilters.serviceStatusFilter.UPCOMING" | "assetFilters.shareOwnerFilter.label" | "assetFilters.telematicsConnectedFilter.label" | "assetFilters.unknown" | "assetFilters.visibleToFilter.label" | "auditlog.filter.categories" | "auditlog.filter.component" | "auditlog.filter.components" | "auditlog.filter.events" | "auditlog.filter.users" | "filters.shared.clear" | "filters.shared.clearAll" | "filters.shared.noHistory" | "filters.shared.notJustWhitepsace" | "filters.shared.recentSearches" | "filters.shared.typeMore" | "filtersBar.closeFilter" | "filtersBar.defaultAssetFilters.activeAssetFilter.hide" | "filtersBar.defaultAssetFilters.activeAssetFilter.show" | "filtersBar.defaultAssetFilters.followedFilter.ALL" | "filtersBar.defaultAssetFilters.followedFilter.allLabel" | "filtersBar.defaultAssetFilters.followedFilter.FOLLOWED" | "filtersBar.defaultAssetFilters.followedFilter.followedOnlyLabel" | "filtersBar.defaultAssetFilters.lastSeenFilter.ALL" | "filtersBar.defaultAssetFilters.lastSeenFilter.LAST_24_HOURS" | "filtersBar.defaultAssetFilters.lastSeenFilter.LAST_30_DAYS" | "filtersBar.defaultAssetFilters.lastSeenFilter.LAST_7_DAYS" | "filtersBar.defaultAssetFilters.lastSeenFilter.LAST_HOUR" | "filtersBar.defaultAssetFilters.lastSeenFilter.OLDER_THAN_30_DAYS" | "filtersBar.defaultAssetFilters.metadataGroup" | "filtersBar.defaultAssetFilters.othersGroup" | "filtersBar.defaultAssetFilters.sitesGroup" | "filtersBar.defaultAssetFilters.statusGroup" | "filtersBar.defaultAssetFilters.telematicsConnectedFilter.connected" | "filtersBar.defaultAssetFilters.telematicsConnectedFilter.notConnected" | "filtersBar.emptyResults" | "filtersBar.filtersHeading" | "filtersBar.loading" | "filtersBar.myNetworkGroup" | "filtersBar.resetFilter" | "filtersBar.resetFilters" | "filtersBar.starredFilters.title" | "filtersBar.starredFiltersTitle" | "fleetlist.column.activity" | "fleetlist.column.assetIds" | "fleetlist.column.assetType" | "fleetlist.column.attention" | "fleetlist.column.brand" | "fleetlist.column.city" | "fleetlist.column.country" | "fleetlist.column.customerIds" | "fleetlist.column.externalReference" | "fleetlist.column.groupIds" | "fleetlist.column.lastSeen" | "fleetlist.column.metadata" | "fleetlist.column.metadataCompleteness" | "fleetlist.column.model" | "fleetlist.column.name" | "fleetlist.column.onSiteType" | "fleetlist.column.owner" | "fleetlist.column.servicePlanStatus" | "fleetlist.column.siteDepotOwnershipIds" | "fleetlist.column.siteIds" | "fleetlist.column.siteStatus" | "fleetlist.column.siteType" | "fleetlist.column.streetAddress" | "fleetlist.column.totalHours" | "fleetlist.column.type" | "fleetlist.column.unitSerialNumber" | "fleetlist.column.vin" | "fleetlist.column.year" | "fleetlist.column.zipCode" | "fleetlist.createGroup" | "fleetlist.description" | "fleetList.sorting.ACTIVITY" | "fleetList.sorting.ASSET_TYPE" | "fleetList.sorting.BRAND" | "fleetList.sorting.CATEGORY" | "fleetList.sorting.CRITICALITY" | "fleetList.sorting.EXTERNAL_REFERENCE" | "fleetList.sorting.LOCATION" | "fleetList.sorting.LOCATION_UPDATED_AT" | "fleetList.sorting.MODEL" | "fleetList.sorting.NAME" | "fleetList.sorting.OWNER_ACCOUNT_NAME" | "fleetList.sorting.PRODUCTION_YEAR" | "fleetList.sorting.SERIAL_NUMBER" | "fleetList.sorting.SERVICE_PLAN_ASSIGNMENT_STATUS" | "fleetList.sorting.SERVICE_PLAN_OVERDUENESS" | "fleetList.sorting.SERVICE_PLAN_STATUS" | "fleetList.sorting.TELEMATICS_DEVICE_SERIAL_NUMBER" | "fleetList.sorting.TYPE" | "fleetList.sortingCategories.metadata" | "fleetList.sortingCategories.other" | "fleetList.sortingCategories.status" | "machine.types.ALL" | "machine.types.Unknown" | "pages.machines.telematics.networkTechnology.NW_TECH_2G" | "pages.machines.telematics.networkTechnology.NW_TECH_3G" | "pages.machines.telematics.networkTechnology.NW_TECH_4G" | "pages.machines.telematics.networkTechnology.UNKNOWN" | "pages.machines.telematics.operationalStatus.digitalKeyMode.DISABLED" | "pages.machines.telematics.operationalStatus.digitalKeyMode.LOCKED_FOR_ALL" | "pages.machines.telematics.operationalStatus.digitalKeyMode.LOCKED_FOR_ALL_FIXED" | "pages.machines.telematics.operationalStatus.digitalKeyMode.name" | "pages.machines.telematics.operationalStatus.digitalKeyMode.NEVER_INITIALIZED" | "pages.machines.telematics.operationalStatus.digitalKeyMode.UNKNOWN" | "pages.machines.telematics.operationalStatus.digitalKeyMode.UNLOCKED_FOR_ALL" | "pages.machines.telematics.operationalStatus.digitalKeyMode.UNLOCKED_FOR_ALL_FIXED" | "pages.machines.telematics.operationalStatus.digitalKeyMode.UNLOCKED_FOR_KEY" | "pages.machines.telematics.operationalStatus.digitalKeyMode.UNLOCKED_FOR_KEY_AND_PIN" | "pages.machines.telematics.operationalStatus.digitalKeyMode.UNLOCKED_FOR_PIN" | "pages.machines.telematics.operationalStatus.digitalKeyMode.UNSUPPORTED" | "rental.status.available" | "rental.status.inRepair" | "rental.status.onRent" | "rental.status.other" | "rental.status.pickUpReady" | "rental.status.returned" | "rental.status.transfer" | "rental.status.unknown" | "siteFilters.siteStatus.ACTIVE" | "siteFilters.siteStatus.ARCHIVED" | "siteFilters.siteStatus.FINISHED" | "siteFilters.siteStatus.PLANNED" | "siteFilters.siteStatus.unknown" | "siteFilters.siteType.AREA" | "siteFilters.siteType.CLASSIC_POI" | "siteFilters.siteType.CLASSIC_ZONE" | "siteFilters.siteType.CONSTRUCTION_SITE" | "siteFilters.siteType.DEPOT" | "siteFilters.siteType.NOT_ON_SITE" | "siteFilters.siteType.unknown" | "siteFilters.siteType.WORK_PLACE" | "siteOwningDepot.notOwned" | "siteOwningDepot.unknown">, import("i18next").i18n, boolean] & {
18
+ t: TransForLibs<"access.management.filter.operator.role.keyAdmin" | "access.management.keys.filter.active" | "access.management.keys.filter.deleted" | "access.management.keys.filter.expired" | "access.management.keys.filter.future" | "access.management.operator.asset.filter.category" | "access.management.operator.asset.filter.keyType" | "access.management.operator.asset.filter.type.digitalKey" | "access.management.operator.asset.filter.type.rollingPin" | "access.management.operator.asset.filter.type.staticPin" | "access.management.operator.filter.category" | "access.management.operator.filter.keyStatus.title" | "access.management.operator.filter.operatorRole.keyAdmin.title" | "access.management.operator.filter.operatorRole.title" | "assetFilters.activeAssetFilter.label" | "assetFilters.activityFilter.idling" | "assetFilters.activityFilter.stopped" | "assetFilters.activityFilter.unknown" | "assetFilters.activityFilter.working" | "assetFilters.area.active" | "assetFilters.area.label" | "assetFilters.area.origin.mapArea" | "assetFilters.area.previouslySearched" | "assetFilters.area.recent" | "assetFilters.area.searchPlaceholder" | "assetFilters.assetType.ATTACHMENT" | "assetFilters.assetType.EQUIPMENT" | "assetFilters.assetType.GATEWAY" | "assetFilters.assetType.MACHINE" | "assetFilters.assetType.OTHER" | "assetFilters.assetType.TOOL" | "assetFilters.assetType.VEHICLE" | "assetFilters.boundingBoxFilter.value" | "assetFilters.criticality.CRITICAL" | "assetFilters.criticality.LOW" | "assetFilters.criticality.NONE" | "assetFilters.followedFilter.label" | "assetFilters.hourIntervalFilter.label" | "assetFilters.lastSeenFilter.anytime" | "assetFilters.lastSeenFilter.last24Hours" | "assetFilters.lastSeenFilter.last30Days" | "assetFilters.lastSeenFilter.last7Days" | "assetFilters.lastSeenFilter.lastHour" | "assetFilters.lastSeenFilter.olderThan30Days" | "assetFilters.metadataCompleteness.ALL" | "assetFilters.metadataCompleteness.COMPLETE" | "assetFilters.metadataCompleteness.PARTIAL" | "assetFilters.ownerAccountNameFilter.label" | "assetFilters.partnerFilter.label" | "assetFilters.periodFilter.label" | "assetFilters.periodFilter.LAST_24_HOURS" | "assetFilters.periodFilter.LAST_30_DAYS" | "assetFilters.periodFilter.LAST_7_DAYS" | "assetFilters.periodFilter.LAST_YEAR" | "assetFilters.periodFilter.LIFETIME" | "assetFilters.planned" | "assetFilters.productionYear.label" | "assetFilters.regions.ANTARCTICA" | "assetFilters.regions.AUSTRALIA_AND_NEW_ZEALAND" | "assetFilters.regions.CENTRAL_ASIA" | "assetFilters.regions.EASTERN_ASIA" | "assetFilters.regions.EASTERN_EUROPE" | "assetFilters.regions.label" | "assetFilters.regions.LATIN_AMERICA_AND_THE_CARIBBEAN" | "assetFilters.regions.MELANESIA" | "assetFilters.regions.MICRONESIA" | "assetFilters.regions.NORTHERN_AFRICA" | "assetFilters.regions.NORTHERN_AMERICA" | "assetFilters.regions.NORTHERN_EUROPE" | "assetFilters.regions.POLYNESIA" | "assetFilters.regions.SOUTH-EASTERN_ASIA" | "assetFilters.regions.SOUTHERN_ASIA" | "assetFilters.regions.SOUTHERN_EUROPE" | "assetFilters.regions.SUB-SAHARAN_AFRICA" | "assetFilters.regions.WESTERN_ASIA" | "assetFilters.regions.WESTERN_EUROPE" | "assetFilters.regions.WHOLE_WORLD" | "assetFilters.rentalCustomerNameFilter.label" | "assetFilters.searchFilter.label" | "assetFilters.searchPlaceholder" | "assetFilters.serviceAssignmentStatusFilter.label" | "assetFilters.servicePlanFilter.fullyConfigured" | "assetFilters.servicePlanFilter.label" | "assetFilters.servicePlanFilter.notConfigured" | "assetFilters.servicePlanFilter.partiallyConfigured" | "assetFilters.serviceProviderFilter.label" | "assetFilters.serviceProviderStatusFilter.hasServiceProvider" | "assetFilters.serviceProviderStatusFilter.noServiceProvider" | "assetFilters.serviceStatusFilter.COMPLETE" | "assetFilters.serviceStatusFilter.DRAFT" | "assetFilters.serviceStatusFilter.FULLY_CONFIGURED" | "assetFilters.serviceStatusFilter.HAS_PLAN" | "assetFilters.serviceStatusFilter.HAS_SERVICE_PROVIDER" | "assetFilters.serviceStatusFilter.label" | "assetFilters.serviceStatusFilter.MISSING_PLAN" | "assetFilters.serviceStatusFilter.MISSING_PROVIDER" | "assetFilters.serviceStatusFilter.overdue" | "assetFilters.serviceStatusFilter.OVERDUE" | "assetFilters.serviceStatusFilter.PLANNED" | "assetFilters.serviceStatusFilter.UNKNOWN" | "assetFilters.serviceStatusFilter.upcoming" | "assetFilters.serviceStatusFilter.UPCOMING" | "assetFilters.shareOwnerFilter.label" | "assetFilters.telematicsConnectedFilter.label" | "assetFilters.unknown" | "assetFilters.visibleToFilter.label" | "auditlog.filter.categories" | "auditlog.filter.component" | "auditlog.filter.components" | "auditlog.filter.events" | "auditlog.filter.users" | "filters.shared.clear" | "filters.shared.clearAll" | "filters.shared.noHistory" | "filters.shared.notJustWhitepsace" | "filters.shared.recentSearches" | "filters.shared.typeMore" | "filtersBar.closeFilter" | "filtersBar.defaultAssetFilters.activeAssetFilter.hide" | "filtersBar.defaultAssetFilters.activeAssetFilter.show" | "filtersBar.defaultAssetFilters.followedFilter.ALL" | "filtersBar.defaultAssetFilters.followedFilter.allLabel" | "filtersBar.defaultAssetFilters.followedFilter.FOLLOWED" | "filtersBar.defaultAssetFilters.followedFilter.followedOnlyLabel" | "filtersBar.defaultAssetFilters.lastSeenFilter.ALL" | "filtersBar.defaultAssetFilters.lastSeenFilter.LAST_24_HOURS" | "filtersBar.defaultAssetFilters.lastSeenFilter.LAST_30_DAYS" | "filtersBar.defaultAssetFilters.lastSeenFilter.LAST_7_DAYS" | "filtersBar.defaultAssetFilters.lastSeenFilter.LAST_HOUR" | "filtersBar.defaultAssetFilters.lastSeenFilter.OLDER_THAN_30_DAYS" | "filtersBar.defaultAssetFilters.metadataGroup" | "filtersBar.defaultAssetFilters.othersGroup" | "filtersBar.defaultAssetFilters.sitesGroup" | "filtersBar.defaultAssetFilters.statusGroup" | "filtersBar.defaultAssetFilters.telematicsConnectedFilter.connected" | "filtersBar.defaultAssetFilters.telematicsConnectedFilter.notConnected" | "filtersBar.emptyResults" | "filtersBar.filtersHeading" | "filtersBar.loading" | "filtersBar.myNetworkGroup" | "filtersBar.resetFilter" | "filtersBar.resetFilters" | "filtersBar.starredFilters.title" | "filtersBar.starredFiltersTitle" | "fleetlist.column.activity" | "fleetlist.column.assetIds" | "fleetlist.column.assetType" | "fleetlist.column.attention" | "fleetlist.column.brand" | "fleetlist.column.city" | "fleetlist.column.country" | "fleetlist.column.customerIds" | "fleetlist.column.externalReference" | "fleetlist.column.groupIds" | "fleetlist.column.lastSeen" | "fleetlist.column.metadata" | "fleetlist.column.metadataCompleteness" | "fleetlist.column.model" | "fleetlist.column.name" | "fleetlist.column.onSiteType" | "fleetlist.column.owner" | "fleetlist.column.servicePlanStatus" | "fleetlist.column.siteDepotOwnershipIds" | "fleetlist.column.siteIds" | "fleetlist.column.siteStatus" | "fleetlist.column.siteType" | "fleetlist.column.streetAddress" | "fleetlist.column.totalHours" | "fleetlist.column.type" | "fleetlist.column.unitSerialNumber" | "fleetlist.column.vin" | "fleetlist.column.year" | "fleetlist.column.zipCode" | "fleetlist.createGroup" | "fleetlist.description" | "fleetList.sorting.ACTIVITY" | "fleetList.sorting.ASSET_TYPE" | "fleetList.sorting.BRAND" | "fleetList.sorting.CATEGORY" | "fleetList.sorting.CRITICALITY" | "fleetList.sorting.EXTERNAL_REFERENCE" | "fleetList.sorting.LOCATION" | "fleetList.sorting.LOCATION_UPDATED_AT" | "fleetList.sorting.MODEL" | "fleetList.sorting.NAME" | "fleetList.sorting.OWNER_ACCOUNT_NAME" | "fleetList.sorting.PRODUCTION_YEAR" | "fleetList.sorting.SERIAL_NUMBER" | "fleetList.sorting.SERVICE_PLAN_ASSIGNMENT_STATUS" | "fleetList.sorting.SERVICE_PLAN_OVERDUENESS" | "fleetList.sorting.SERVICE_PLAN_STATUS" | "fleetList.sorting.TELEMATICS_DEVICE_SERIAL_NUMBER" | "fleetList.sorting.TYPE" | "fleetList.sortingCategories.metadata" | "fleetList.sortingCategories.other" | "fleetList.sortingCategories.status" | "machine.types.ALL" | "machine.types.Unknown" | "pages.machines.telematics.networkTechnology.NW_TECH_2G" | "pages.machines.telematics.networkTechnology.NW_TECH_3G" | "pages.machines.telematics.networkTechnology.NW_TECH_4G" | "pages.machines.telematics.networkTechnology.UNKNOWN" | "pages.machines.telematics.operationalStatus.digitalKeyMode.DISABLED" | "pages.machines.telematics.operationalStatus.digitalKeyMode.LOCKED_FOR_ALL" | "pages.machines.telematics.operationalStatus.digitalKeyMode.LOCKED_FOR_ALL_FIXED" | "pages.machines.telematics.operationalStatus.digitalKeyMode.name" | "pages.machines.telematics.operationalStatus.digitalKeyMode.NEVER_INITIALIZED" | "pages.machines.telematics.operationalStatus.digitalKeyMode.UNKNOWN" | "pages.machines.telematics.operationalStatus.digitalKeyMode.UNLOCKED_FOR_ALL" | "pages.machines.telematics.operationalStatus.digitalKeyMode.UNLOCKED_FOR_ALL_FIXED" | "pages.machines.telematics.operationalStatus.digitalKeyMode.UNLOCKED_FOR_KEY" | "pages.machines.telematics.operationalStatus.digitalKeyMode.UNLOCKED_FOR_KEY_AND_PIN" | "pages.machines.telematics.operationalStatus.digitalKeyMode.UNLOCKED_FOR_PIN" | "pages.machines.telematics.operationalStatus.digitalKeyMode.UNSUPPORTED" | "rental.status.available" | "rental.status.inRepair" | "rental.status.onRent" | "rental.status.other" | "rental.status.pickUpReady" | "rental.status.returned" | "rental.status.transfer" | "rental.status.unknown" | "siteFilters.siteStatus.ACTIVE" | "siteFilters.siteStatus.ARCHIVED" | "siteFilters.siteStatus.FINISHED" | "siteFilters.siteStatus.PLANNED" | "siteFilters.siteStatus.unknown" | "siteFilters.siteType.AREA" | "siteFilters.siteType.CLASSIC_POI" | "siteFilters.siteType.CLASSIC_ZONE" | "siteFilters.siteType.CONSTRUCTION_SITE" | "siteFilters.siteType.DEPOT" | "siteFilters.siteType.NOT_ON_SITE" | "siteFilters.siteType.unknown" | "siteFilters.siteType.WORK_PLACE" | "siteOwningDepot.notOwned" | "siteOwningDepot.unknown">;
19
19
  i18n: import("i18next").i18n;
20
20
  ready: boolean;
21
21
  };