@trackunit/filters-filter-bar 1.8.12 → 1.8.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
@@ -2363,13 +2363,16 @@ const useFilterBar = ({ name, onValuesChange, filterBarDefinition, loadData: inp
2363
2363
  const [filterBarConfig, setFilterBarConfig] = react.useState(() => {
2364
2364
  return loadData(sharedUtils.objectValues(filterBarDefinition));
2365
2365
  });
2366
+ const setValueMemoized = react.useCallback((key, callback) => {
2367
+ setValue(setFilterBarConfig, key, callback);
2368
+ }, [setFilterBarConfig, setValue]);
2366
2369
  const { filterMapActions, filterMapGetter } = useFilterBarActions({
2367
2370
  name,
2368
2371
  filterBarConfig,
2369
2372
  filterBarDefinition,
2370
2373
  initialState: filterBarConfig.initialState,
2371
2374
  setFilterBarConfig,
2372
- setValue: (key, callback) => setValue(setFilterBarConfig, key, callback),
2375
+ setValue: setValueMemoized,
2373
2376
  });
2374
2377
  const onValuesChangeRef = react.useRef(onValuesChange);
2375
2378
  react.useEffect(() => {
@@ -2406,39 +2409,43 @@ const useFilterBarAsync = ({ name, onValuesChange, filterBarDefinition, loadData
2406
2409
  const [asyncLoadedFilterBarDefinitions, setAsyncLoadedFilterBarDefinitions] = react.useState();
2407
2410
  const { isDefaultValue } = useIsDefaultValue();
2408
2411
  const internalFilterBarDefinitions = react.useMemo(() => asyncLoadedFilterBarDefinitions ?? filterBarDefinition, [filterBarDefinition, asyncLoadedFilterBarDefinitions]);
2412
+ const initialFilterBarConfig = react.useMemo(() => ({
2413
+ values: Object.create({}),
2414
+ setters: Object.create({}),
2415
+ name,
2416
+ initialState: Object.create({}),
2417
+ }), [name]);
2418
+ const [filterBarConfig, setFilterBarConfig] = react.useState(initialFilterBarConfig);
2409
2419
  const { setValue } = useGenericSetValue();
2410
- const { loadData, saveData } = useFilterBarPersistence({
2420
+ const persistenceConfig = react.useMemo(() => ({
2411
2421
  name,
2412
2422
  isDefaultValue: (key, value) => isDefaultValue(key, value, filterBarDefinition, filterBarConfig.initialState),
2413
2423
  setValue: (key, callback) => setValue(setFilterBarConfig, key, callback),
2414
2424
  loadData: inputLoadData,
2415
2425
  saveData: inputSaveData,
2416
- refreshData: () => {
2417
- if (asyncLoadedFilterBarDefinitions) {
2418
- setFilterBarConfig(loadData(sharedUtils.objectValues(asyncLoadedFilterBarDefinitions)));
2419
- }
2420
- },
2421
- });
2422
- const [filterBarConfig, setFilterBarConfig] = react.useState(() => {
2423
- const initialConfig = {
2424
- values: Object.create({}),
2425
- setters: Object.create({}),
2426
- name,
2427
- initialState: Object.create({}),
2428
- };
2429
- return initialConfig;
2430
- });
2426
+ }), [
2427
+ name,
2428
+ isDefaultValue,
2429
+ filterBarDefinition,
2430
+ filterBarConfig.initialState,
2431
+ setValue,
2432
+ setFilterBarConfig,
2433
+ inputLoadData,
2434
+ inputSaveData,
2435
+ ]);
2436
+ const { loadData, saveData } = useFilterBarPersistence(persistenceConfig);
2431
2437
  const setValueMemoized = react.useCallback((key, callback) => {
2432
2438
  setValue(setFilterBarConfig, key, callback);
2433
2439
  }, [setFilterBarConfig, setValue]);
2434
- const { filterMapActions, filterMapGetter } = useFilterBarActions({
2440
+ const filterBarActionsConfig = react.useMemo(() => ({
2435
2441
  name,
2436
2442
  filterBarConfig,
2437
2443
  filterBarDefinition: internalFilterBarDefinitions,
2438
2444
  initialState: filterBarConfig.initialState,
2439
2445
  setFilterBarConfig,
2440
2446
  setValue: setValueMemoized,
2441
- });
2447
+ }), [name, filterBarConfig, internalFilterBarDefinitions, setValueMemoized]);
2448
+ const { filterMapActions, filterMapGetter } = useFilterBarActions(filterBarActionsConfig);
2442
2449
  const dataLoaded = react.useCallback((loadedFilterDefinitionsValues) => {
2443
2450
  setIsDataLoaded(false);
2444
2451
  setAsyncLoadedFilterBarDefinitions(loadedFilterDefinitionsValues);
package/index.esm.js CHANGED
@@ -2361,13 +2361,16 @@ const useFilterBar = ({ name, onValuesChange, filterBarDefinition, loadData: inp
2361
2361
  const [filterBarConfig, setFilterBarConfig] = useState(() => {
2362
2362
  return loadData(objectValues(filterBarDefinition));
2363
2363
  });
2364
+ const setValueMemoized = useCallback((key, callback) => {
2365
+ setValue(setFilterBarConfig, key, callback);
2366
+ }, [setFilterBarConfig, setValue]);
2364
2367
  const { filterMapActions, filterMapGetter } = useFilterBarActions({
2365
2368
  name,
2366
2369
  filterBarConfig,
2367
2370
  filterBarDefinition,
2368
2371
  initialState: filterBarConfig.initialState,
2369
2372
  setFilterBarConfig,
2370
- setValue: (key, callback) => setValue(setFilterBarConfig, key, callback),
2373
+ setValue: setValueMemoized,
2371
2374
  });
2372
2375
  const onValuesChangeRef = useRef(onValuesChange);
2373
2376
  useEffect(() => {
@@ -2404,39 +2407,43 @@ const useFilterBarAsync = ({ name, onValuesChange, filterBarDefinition, loadData
2404
2407
  const [asyncLoadedFilterBarDefinitions, setAsyncLoadedFilterBarDefinitions] = useState();
2405
2408
  const { isDefaultValue } = useIsDefaultValue();
2406
2409
  const internalFilterBarDefinitions = useMemo(() => asyncLoadedFilterBarDefinitions ?? filterBarDefinition, [filterBarDefinition, asyncLoadedFilterBarDefinitions]);
2410
+ const initialFilterBarConfig = useMemo(() => ({
2411
+ values: Object.create({}),
2412
+ setters: Object.create({}),
2413
+ name,
2414
+ initialState: Object.create({}),
2415
+ }), [name]);
2416
+ const [filterBarConfig, setFilterBarConfig] = useState(initialFilterBarConfig);
2407
2417
  const { setValue } = useGenericSetValue();
2408
- const { loadData, saveData } = useFilterBarPersistence({
2418
+ const persistenceConfig = useMemo(() => ({
2409
2419
  name,
2410
2420
  isDefaultValue: (key, value) => isDefaultValue(key, value, filterBarDefinition, filterBarConfig.initialState),
2411
2421
  setValue: (key, callback) => setValue(setFilterBarConfig, key, callback),
2412
2422
  loadData: inputLoadData,
2413
2423
  saveData: inputSaveData,
2414
- refreshData: () => {
2415
- if (asyncLoadedFilterBarDefinitions) {
2416
- setFilterBarConfig(loadData(objectValues(asyncLoadedFilterBarDefinitions)));
2417
- }
2418
- },
2419
- });
2420
- const [filterBarConfig, setFilterBarConfig] = useState(() => {
2421
- const initialConfig = {
2422
- values: Object.create({}),
2423
- setters: Object.create({}),
2424
- name,
2425
- initialState: Object.create({}),
2426
- };
2427
- return initialConfig;
2428
- });
2424
+ }), [
2425
+ name,
2426
+ isDefaultValue,
2427
+ filterBarDefinition,
2428
+ filterBarConfig.initialState,
2429
+ setValue,
2430
+ setFilterBarConfig,
2431
+ inputLoadData,
2432
+ inputSaveData,
2433
+ ]);
2434
+ const { loadData, saveData } = useFilterBarPersistence(persistenceConfig);
2429
2435
  const setValueMemoized = useCallback((key, callback) => {
2430
2436
  setValue(setFilterBarConfig, key, callback);
2431
2437
  }, [setFilterBarConfig, setValue]);
2432
- const { filterMapActions, filterMapGetter } = useFilterBarActions({
2438
+ const filterBarActionsConfig = useMemo(() => ({
2433
2439
  name,
2434
2440
  filterBarConfig,
2435
2441
  filterBarDefinition: internalFilterBarDefinitions,
2436
2442
  initialState: filterBarConfig.initialState,
2437
2443
  setFilterBarConfig,
2438
2444
  setValue: setValueMemoized,
2439
- });
2445
+ }), [name, filterBarConfig, internalFilterBarDefinitions, setValueMemoized]);
2446
+ const { filterMapActions, filterMapGetter } = useFilterBarActions(filterBarActionsConfig);
2440
2447
  const dataLoaded = useCallback((loadedFilterDefinitionsValues) => {
2441
2448
  setIsDataLoaded(false);
2442
2449
  setAsyncLoadedFilterBarDefinitions(loadedFilterDefinitionsValues);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trackunit/filters-filter-bar",
3
- "version": "1.8.12",
3
+ "version": "1.8.15",
4
4
  "repository": "https://github.com/Trackunit/manager",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "engines": {
@@ -13,18 +13,18 @@
13
13
  "tailwind-merge": "^2.0.0",
14
14
  "string-ts": "^2.0.0",
15
15
  "zod": "^3.23.8",
16
- "@trackunit/iris-app-api": "1.7.8",
17
- "@trackunit/react-core-hooks": "1.7.9",
18
- "@trackunit/react-filter-components": "1.7.12",
19
- "@trackunit/react-date-and-time-components": "1.10.12",
20
- "@trackunit/shared-utils": "1.9.7",
21
- "@trackunit/react-form-components": "1.8.12",
22
- "@trackunit/react-core-contexts-api": "1.8.9",
23
- "@trackunit/geo-json-utils": "1.7.7",
24
- "@trackunit/i18n-library-translation": "1.7.10",
25
- "@trackunit/css-class-variance-utilities": "1.7.7",
26
- "@trackunit/react-components": "1.9.12",
27
- "@trackunit/react-test-setup": "1.4.7",
16
+ "@trackunit/iris-app-api": "1.7.9",
17
+ "@trackunit/react-core-hooks": "1.7.11",
18
+ "@trackunit/react-filter-components": "1.7.15",
19
+ "@trackunit/react-date-and-time-components": "1.10.15",
20
+ "@trackunit/shared-utils": "1.9.8",
21
+ "@trackunit/react-form-components": "1.8.15",
22
+ "@trackunit/react-core-contexts-api": "1.8.10",
23
+ "@trackunit/geo-json-utils": "1.7.8",
24
+ "@trackunit/i18n-library-translation": "1.7.12",
25
+ "@trackunit/css-class-variance-utilities": "1.7.8",
26
+ "@trackunit/react-components": "1.9.15",
27
+ "@trackunit/react-test-setup": "1.4.8",
28
28
  "@tanstack/react-router": "1.114.29"
29
29
  },
30
30
  "module": "./index.esm.js",
@@ -1,6 +1,6 @@
1
1
  import { FilterBarConfig, FilterBarDefinition, FilterBarInferredValue, FilterDefinition, FilterStateValues, FilterValueType } from "../../types/FilterTypes";
2
2
  import { FilterPersistenceConfig } from "../types";
3
- interface FilterBarPersistenceProps<TFilterBarDefinition extends FilterBarDefinition> extends FilterPersistenceConfig<TFilterBarDefinition> {
3
+ export interface FilterBarPersistenceProps<TFilterBarDefinition extends FilterBarDefinition> extends FilterPersistenceConfig<TFilterBarDefinition> {
4
4
  name: string;
5
5
  setValue: (key: string, callback: (prev: FilterBarInferredValue<TFilterBarDefinition, never> | undefined) => FilterBarInferredValue<TFilterBarDefinition, never> | undefined) => void;
6
6
  /**
@@ -67,4 +67,3 @@ export declare const useFilterBarPersistence: <TFilterBarDefinition extends Filt
67
67
  saveData: (filterBarConfig: Partial<FilterBarConfig<TFilterBarDefinition>>, filterBarDefinitions: TFilterBarDefinition) => void;
68
68
  getFilterValuesToUrl: (values: FilterStateValues<FilterBarDefinition> | null, definitions: Array<FilterDefinition>, setEmptyAndDefaultValues: boolean, isDefaultValue: (key: string, value: FilterValueType) => boolean) => Record<string, unknown>;
69
69
  };
70
- export {};