@snack-uikit/utils 3.7.1-preview-74c13173.0 → 3.7.1-preview-d479ae3f.0
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/README.md +0 -4
- package/dist/cjs/hooks/useSaveFilterState.d.ts +4 -1
- package/dist/cjs/hooks/useSaveFilterState.js +20 -34
- package/dist/cjs/hooks/useSaveState/useSaveState.d.ts +4 -3
- package/dist/cjs/hooks/useSaveState/useSaveState.js +7 -12
- package/dist/esm/hooks/useSaveFilterState.d.ts +4 -1
- package/dist/esm/hooks/useSaveFilterState.js +17 -26
- package/dist/esm/hooks/useSaveState/useSaveState.d.ts +4 -3
- package/dist/esm/hooks/useSaveState/useSaveState.js +6 -12
- package/package.json +2 -2
- package/src/hooks/useSaveFilterState.ts +22 -35
- package/src/hooks/useSaveState/useSaveState.ts +13 -18
package/README.md
CHANGED
|
@@ -75,15 +75,11 @@
|
|
|
75
75
|
### Props
|
|
76
76
|
| name | type | default value | description |
|
|
77
77
|
|------|------|---------------|-------------|
|
|
78
|
-
| onLoadFilter* | `(filter: T) => void` | - | |
|
|
79
|
-
| filter* | `T` | - | |
|
|
80
78
|
| source | `BaseSource<T>` | - | |
|
|
81
79
|
## useSaveFilterState
|
|
82
80
|
### Props
|
|
83
81
|
| name | type | default value | description |
|
|
84
82
|
|------|------|---------------|-------------|
|
|
85
|
-
| onLoadFilter* | `(filter: TFilter) => void` | - | |
|
|
86
|
-
| filter* | `TFilter` | - | |
|
|
87
83
|
| options | `FilterStateOptions<TFilter>` | - | |
|
|
88
84
|
| parser | `(jsonFilter: string) => TFilter` | - | |
|
|
89
85
|
| serializer | `(filter: TFilter) => string` | - | |
|
|
@@ -9,5 +9,8 @@ type FilterStateProps<TFilter> = Omit<StateProps<TFilter>, 'source'> & {
|
|
|
9
9
|
parser?(jsonFilter: string): TFilter;
|
|
10
10
|
serializer?(filter: TFilter): string;
|
|
11
11
|
};
|
|
12
|
-
export declare const useSaveFilterState: <TFilter>({ options,
|
|
12
|
+
export declare const useSaveFilterState: <TFilter>({ options, parser, serializer }: FilterStateProps<TFilter>) => {
|
|
13
|
+
getDefaultFilter: () => NonNullable<TFilter> | null | undefined;
|
|
14
|
+
setDataToStorages: (data: TFilter) => void;
|
|
15
|
+
};
|
|
13
16
|
export {};
|
|
@@ -9,48 +9,34 @@ const useSaveState_1 = require("./useSaveState");
|
|
|
9
9
|
const useSaveFilterState = _ref => {
|
|
10
10
|
let {
|
|
11
11
|
options,
|
|
12
|
-
filter,
|
|
13
|
-
onLoadFilter,
|
|
14
12
|
parser,
|
|
15
13
|
serializer
|
|
16
14
|
} = _ref;
|
|
17
|
-
const [queryFilter, setQueryFilter] = (0, react_1.useState)(null);
|
|
18
|
-
const [localStorageFilter, setLocalStorageFilter] = (0, react_1.useState)(null);
|
|
19
|
-
const [isLoaded, setIsLoaded] = (0, react_1.useState)({
|
|
20
|
-
localStorage: false,
|
|
21
|
-
queryParams: false
|
|
22
|
-
});
|
|
23
|
-
const onLoadQueryParams = (0, react_1.useCallback)(value => {
|
|
24
|
-
setQueryFilter(value);
|
|
25
|
-
setIsLoaded(prev => Object.assign(Object.assign({}, prev), {
|
|
26
|
-
queryParams: true
|
|
27
|
-
}));
|
|
28
|
-
}, []);
|
|
29
|
-
const onLoadLocalStorage = (0, react_1.useCallback)(value => {
|
|
30
|
-
setLocalStorageFilter(value);
|
|
31
|
-
setIsLoaded(prev => Object.assign(Object.assign({}, prev), {
|
|
32
|
-
localStorage: true
|
|
33
|
-
}));
|
|
34
|
-
}, []);
|
|
35
15
|
const querySource = (0, react_1.useMemo)(() => options ? new useSaveState_1.QueryParamSource(options.filterQueryKey, options.validateData, parser, serializer) : undefined, [options, parser, serializer]);
|
|
36
16
|
const localStorageSource = (0, react_1.useMemo)(() => options ? new useSaveState_1.LocalStorageSource(options.filterLocalStorageKey, options.validateData, parser, serializer) : undefined, [options, parser, serializer]);
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
17
|
+
const {
|
|
18
|
+
getData: getLocalStorageData,
|
|
19
|
+
setData: setLocalStorageData
|
|
20
|
+
} = (0, useSaveState_1.useSaveState)({
|
|
40
21
|
source: querySource
|
|
41
22
|
});
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
23
|
+
const {
|
|
24
|
+
getData: getQueryParamsData,
|
|
25
|
+
setData: setQueryParamsData
|
|
26
|
+
} = (0, useSaveState_1.useSaveState)({
|
|
45
27
|
source: localStorageSource
|
|
46
28
|
});
|
|
47
|
-
(0, react_1.
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
}, [
|
|
29
|
+
const setDataToStorages = (0, react_1.useCallback)(data => {
|
|
30
|
+
setLocalStorageData(data);
|
|
31
|
+
setQueryParamsData(data);
|
|
32
|
+
}, [setLocalStorageData, setQueryParamsData]);
|
|
33
|
+
const getDefaultFilter = (0, react_1.useCallback)(() => {
|
|
34
|
+
const queryData = getQueryParamsData();
|
|
35
|
+
return queryData ? queryData : getLocalStorageData();
|
|
36
|
+
}, [getLocalStorageData, getQueryParamsData]);
|
|
37
|
+
return {
|
|
38
|
+
getDefaultFilter,
|
|
39
|
+
setDataToStorages
|
|
40
|
+
};
|
|
55
41
|
};
|
|
56
42
|
exports.useSaveFilterState = useSaveFilterState;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { BaseSource } from './sources/baseSource';
|
|
2
2
|
export type StateProps<T> = {
|
|
3
|
-
filter: T;
|
|
4
|
-
onLoadFilter(filter: T | null): void;
|
|
5
3
|
source?: BaseSource<T>;
|
|
6
4
|
};
|
|
7
|
-
export declare const useSaveState: <T>({
|
|
5
|
+
export declare const useSaveState: <T>({ source }: StateProps<T>) => {
|
|
6
|
+
getData: () => NonNullable<T> | null | undefined;
|
|
7
|
+
setData: (filter: T) => void;
|
|
8
|
+
};
|
|
@@ -7,23 +7,18 @@ exports.useSaveState = void 0;
|
|
|
7
7
|
const react_1 = require("react");
|
|
8
8
|
const useSaveState = _ref => {
|
|
9
9
|
let {
|
|
10
|
-
filter,
|
|
11
|
-
onLoadFilter,
|
|
12
10
|
source
|
|
13
11
|
} = _ref;
|
|
14
|
-
const
|
|
15
|
-
(0, react_1.useEffect)(() => {
|
|
12
|
+
const setData = (0, react_1.useCallback)(filter => {
|
|
16
13
|
if (!source) {
|
|
17
14
|
return;
|
|
18
15
|
}
|
|
19
|
-
onLoadFilter(source.getFilter());
|
|
20
|
-
setIsLoaded(true);
|
|
21
|
-
}, [onLoadFilter, source]);
|
|
22
|
-
(0, react_1.useEffect)(() => {
|
|
23
|
-
if (!source || !isLoaded) {
|
|
24
|
-
return;
|
|
25
|
-
}
|
|
26
16
|
source.setFilter(filter);
|
|
27
|
-
}, [
|
|
17
|
+
}, [source]);
|
|
18
|
+
const getData = (0, react_1.useCallback)(() => source === null || source === void 0 ? void 0 : source.getFilter(), [source]);
|
|
19
|
+
return {
|
|
20
|
+
getData,
|
|
21
|
+
setData
|
|
22
|
+
};
|
|
28
23
|
};
|
|
29
24
|
exports.useSaveState = useSaveState;
|
|
@@ -9,5 +9,8 @@ type FilterStateProps<TFilter> = Omit<StateProps<TFilter>, 'source'> & {
|
|
|
9
9
|
parser?(jsonFilter: string): TFilter;
|
|
10
10
|
serializer?(filter: TFilter): string;
|
|
11
11
|
};
|
|
12
|
-
export declare const useSaveFilterState: <TFilter>({ options,
|
|
12
|
+
export declare const useSaveFilterState: <TFilter>({ options, parser, serializer }: FilterStateProps<TFilter>) => {
|
|
13
|
+
getDefaultFilter: () => NonNullable<TFilter> | null | undefined;
|
|
14
|
+
setDataToStorages: (data: TFilter) => void;
|
|
15
|
+
};
|
|
13
16
|
export {};
|
|
@@ -1,34 +1,25 @@
|
|
|
1
|
-
import { useCallback,
|
|
1
|
+
import { useCallback, useMemo } from 'react';
|
|
2
2
|
import { LocalStorageSource, QueryParamSource, useSaveState } from './useSaveState';
|
|
3
|
-
export const useSaveFilterState = ({ options,
|
|
4
|
-
const [queryFilter, setQueryFilter] = useState(null);
|
|
5
|
-
const [localStorageFilter, setLocalStorageFilter] = useState(null);
|
|
6
|
-
const [isLoaded, setIsLoaded] = useState({
|
|
7
|
-
localStorage: false,
|
|
8
|
-
queryParams: false,
|
|
9
|
-
});
|
|
10
|
-
const onLoadQueryParams = useCallback((value) => {
|
|
11
|
-
setQueryFilter(value);
|
|
12
|
-
setIsLoaded(prev => (Object.assign(Object.assign({}, prev), { queryParams: true })));
|
|
13
|
-
}, []);
|
|
14
|
-
const onLoadLocalStorage = useCallback((value) => {
|
|
15
|
-
setLocalStorageFilter(value);
|
|
16
|
-
setIsLoaded(prev => (Object.assign(Object.assign({}, prev), { localStorage: true })));
|
|
17
|
-
}, []);
|
|
3
|
+
export const useSaveFilterState = ({ options, parser, serializer }) => {
|
|
18
4
|
const querySource = useMemo(() => options
|
|
19
5
|
? new QueryParamSource(options.filterQueryKey, options.validateData, parser, serializer)
|
|
20
6
|
: undefined, [options, parser, serializer]);
|
|
21
7
|
const localStorageSource = useMemo(() => options
|
|
22
8
|
? new LocalStorageSource(options.filterLocalStorageKey, options.validateData, parser, serializer)
|
|
23
9
|
: undefined, [options, parser, serializer]);
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}, [
|
|
10
|
+
const { getData: getLocalStorageData, setData: setLocalStorageData } = useSaveState({
|
|
11
|
+
source: querySource,
|
|
12
|
+
});
|
|
13
|
+
const { getData: getQueryParamsData, setData: setQueryParamsData } = useSaveState({
|
|
14
|
+
source: localStorageSource,
|
|
15
|
+
});
|
|
16
|
+
const setDataToStorages = useCallback((data) => {
|
|
17
|
+
setLocalStorageData(data);
|
|
18
|
+
setQueryParamsData(data);
|
|
19
|
+
}, [setLocalStorageData, setQueryParamsData]);
|
|
20
|
+
const getDefaultFilter = useCallback(() => {
|
|
21
|
+
const queryData = getQueryParamsData();
|
|
22
|
+
return queryData ? queryData : getLocalStorageData();
|
|
23
|
+
}, [getLocalStorageData, getQueryParamsData]);
|
|
24
|
+
return { getDefaultFilter, setDataToStorages };
|
|
34
25
|
};
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { BaseSource } from './sources/baseSource';
|
|
2
2
|
export type StateProps<T> = {
|
|
3
|
-
filter: T;
|
|
4
|
-
onLoadFilter(filter: T | null): void;
|
|
5
3
|
source?: BaseSource<T>;
|
|
6
4
|
};
|
|
7
|
-
export declare const useSaveState: <T>({
|
|
5
|
+
export declare const useSaveState: <T>({ source }: StateProps<T>) => {
|
|
6
|
+
getData: () => NonNullable<T> | null | undefined;
|
|
7
|
+
setData: (filter: T) => void;
|
|
8
|
+
};
|
|
@@ -1,17 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export const useSaveState = ({
|
|
3
|
-
const
|
|
4
|
-
useEffect(() => {
|
|
1
|
+
import { useCallback } from 'react';
|
|
2
|
+
export const useSaveState = ({ source }) => {
|
|
3
|
+
const setData = useCallback((filter) => {
|
|
5
4
|
if (!source) {
|
|
6
5
|
return;
|
|
7
6
|
}
|
|
8
|
-
onLoadFilter(source.getFilter());
|
|
9
|
-
setIsLoaded(true);
|
|
10
|
-
}, [onLoadFilter, source]);
|
|
11
|
-
useEffect(() => {
|
|
12
|
-
if (!source || !isLoaded) {
|
|
13
|
-
return;
|
|
14
|
-
}
|
|
15
7
|
source.setFilter(filter);
|
|
16
|
-
}, [
|
|
8
|
+
}, [source]);
|
|
9
|
+
const getData = useCallback(() => source === null || source === void 0 ? void 0 : source.getFilter(), [source]);
|
|
10
|
+
return { getData, setData };
|
|
17
11
|
};
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
6
|
"title": "Utils",
|
|
7
|
-
"version": "3.7.1-preview-
|
|
7
|
+
"version": "3.7.1-preview-d479ae3f.0",
|
|
8
8
|
"sideEffects": [
|
|
9
9
|
"*.css",
|
|
10
10
|
"*.woff",
|
|
@@ -39,5 +39,5 @@
|
|
|
39
39
|
"react-swipeable": "7.0.2",
|
|
40
40
|
"uncontrollable": "8.0.4"
|
|
41
41
|
},
|
|
42
|
-
"gitHead": "
|
|
42
|
+
"gitHead": "fbef57a916bd6bc34b52fe127004713a8228b795"
|
|
43
43
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useCallback,
|
|
1
|
+
import { useCallback, useMemo } from 'react';
|
|
2
2
|
|
|
3
3
|
import { LocalStorageSource, QueryParamSource, StateProps, useSaveState } from './useSaveState';
|
|
4
4
|
|
|
@@ -14,30 +14,7 @@ type FilterStateProps<TFilter> = Omit<StateProps<TFilter>, 'source'> & {
|
|
|
14
14
|
serializer?(filter: TFilter): string;
|
|
15
15
|
};
|
|
16
16
|
|
|
17
|
-
export const useSaveFilterState = <TFilter>({
|
|
18
|
-
options,
|
|
19
|
-
filter,
|
|
20
|
-
onLoadFilter,
|
|
21
|
-
parser,
|
|
22
|
-
serializer,
|
|
23
|
-
}: FilterStateProps<TFilter>) => {
|
|
24
|
-
const [queryFilter, setQueryFilter] = useState<TFilter | null>(null);
|
|
25
|
-
const [localStorageFilter, setLocalStorageFilter] = useState<TFilter | null>(null);
|
|
26
|
-
const [isLoaded, setIsLoaded] = useState<{ localStorage: boolean; queryParams: boolean }>({
|
|
27
|
-
localStorage: false,
|
|
28
|
-
queryParams: false,
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
const onLoadQueryParams = useCallback((value: TFilter | null) => {
|
|
32
|
-
setQueryFilter(value);
|
|
33
|
-
setIsLoaded(prev => ({ ...prev, queryParams: true }));
|
|
34
|
-
}, []);
|
|
35
|
-
|
|
36
|
-
const onLoadLocalStorage = useCallback((value: TFilter | null) => {
|
|
37
|
-
setLocalStorageFilter(value);
|
|
38
|
-
setIsLoaded(prev => ({ ...prev, localStorage: true }));
|
|
39
|
-
}, []);
|
|
40
|
-
|
|
17
|
+
export const useSaveFilterState = <TFilter>({ options, parser, serializer }: FilterStateProps<TFilter>) => {
|
|
41
18
|
const querySource = useMemo(
|
|
42
19
|
() =>
|
|
43
20
|
options
|
|
@@ -53,15 +30,25 @@ export const useSaveFilterState = <TFilter>({
|
|
|
53
30
|
[options, parser, serializer],
|
|
54
31
|
);
|
|
55
32
|
|
|
56
|
-
|
|
57
|
-
|
|
33
|
+
const { getData: getLocalStorageData, setData: setLocalStorageData } = useSaveState<TFilter>({
|
|
34
|
+
source: querySource,
|
|
35
|
+
});
|
|
36
|
+
const { getData: getQueryParamsData, setData: setQueryParamsData } = useSaveState<TFilter>({
|
|
37
|
+
source: localStorageSource,
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
const setDataToStorages = useCallback(
|
|
41
|
+
(data: TFilter) => {
|
|
42
|
+
setLocalStorageData(data);
|
|
43
|
+
setQueryParamsData(data);
|
|
44
|
+
},
|
|
45
|
+
[setLocalStorageData, setQueryParamsData],
|
|
46
|
+
);
|
|
47
|
+
|
|
48
|
+
const getDefaultFilter = useCallback(() => {
|
|
49
|
+
const queryData = getQueryParamsData();
|
|
50
|
+
return queryData ? queryData : getLocalStorageData();
|
|
51
|
+
}, [getLocalStorageData, getQueryParamsData]);
|
|
58
52
|
|
|
59
|
-
|
|
60
|
-
if (!options) {
|
|
61
|
-
onLoadFilter(null);
|
|
62
|
-
}
|
|
63
|
-
if (isLoaded.localStorage && isLoaded.queryParams) {
|
|
64
|
-
onLoadFilter(queryFilter ? queryFilter : localStorageFilter);
|
|
65
|
-
}
|
|
66
|
-
}, [queryFilter, onLoadFilter, localStorageFilter, isLoaded, options]);
|
|
53
|
+
return { getDefaultFilter, setDataToStorages };
|
|
67
54
|
};
|
|
@@ -1,28 +1,23 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useCallback } from 'react';
|
|
2
2
|
|
|
3
3
|
import { BaseSource } from './sources/baseSource';
|
|
4
4
|
|
|
5
5
|
export type StateProps<T> = {
|
|
6
|
-
filter: T;
|
|
7
|
-
onLoadFilter(filter: T | null): void;
|
|
8
6
|
source?: BaseSource<T>;
|
|
9
7
|
};
|
|
10
8
|
|
|
11
|
-
export const useSaveState = <T>({
|
|
12
|
-
const
|
|
9
|
+
export const useSaveState = <T>({ source }: StateProps<T>) => {
|
|
10
|
+
const setData = useCallback(
|
|
11
|
+
(filter: T) => {
|
|
12
|
+
if (!source) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
source.setFilter(filter);
|
|
16
|
+
},
|
|
17
|
+
[source],
|
|
18
|
+
);
|
|
13
19
|
|
|
14
|
-
|
|
15
|
-
if (!source) {
|
|
16
|
-
return;
|
|
17
|
-
}
|
|
18
|
-
onLoadFilter(source.getFilter());
|
|
19
|
-
setIsLoaded(true);
|
|
20
|
-
}, [onLoadFilter, source]);
|
|
20
|
+
const getData = useCallback(() => source?.getFilter(), [source]);
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
if (!source || !isLoaded) {
|
|
24
|
-
return;
|
|
25
|
-
}
|
|
26
|
-
source.setFilter(filter);
|
|
27
|
-
}, [filter, source, isLoaded]);
|
|
22
|
+
return { getData, setData };
|
|
28
23
|
};
|