@devtron-labs/devtron-fe-common-lib 0.0.62-beta-1 → 0.0.62-beta-3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Common/Hooks/useUrlFilters/types.d.ts +8 -3
- package/dist/Common/Hooks/useUrlFilters/useUrlFilters.d.ts +1 -1
- package/dist/index.js +22 -18
- package/package.json +1 -1
- package/src/Common/Helper.tsx +0 -1
- package/src/Common/Hooks/useUrlFilters/types.ts +7 -2
- package/src/Common/Hooks/useUrlFilters/useUrlFilters.ts +27 -5
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import { SortingOrder } from '../../Constants';
|
|
2
|
-
export interface UseUrlFiltersProps<T> {
|
|
2
|
+
export interface UseUrlFiltersProps<T, K> {
|
|
3
3
|
/**
|
|
4
4
|
* The key on which the sorting should be applied
|
|
5
5
|
*/
|
|
6
6
|
initialSortKey?: T;
|
|
7
|
+
/**
|
|
8
|
+
* Callback function for parsing the search params
|
|
9
|
+
*/
|
|
10
|
+
parseSearchParams?: (searchParams: URLSearchParams) => K;
|
|
7
11
|
}
|
|
8
|
-
export
|
|
12
|
+
export type UseUrlFiltersReturnType<T, K = unknown> = K & {
|
|
9
13
|
pageSize: number;
|
|
10
14
|
changePage: (pageNumber: number) => void;
|
|
11
15
|
changePageSize: (pageSize: number) => void;
|
|
@@ -16,4 +20,5 @@ export interface UseUrlFiltersReturnType<T> {
|
|
|
16
20
|
sortOrder: SortingOrder;
|
|
17
21
|
handleSorting: (sortBy: T) => void;
|
|
18
22
|
clearFilters: () => void;
|
|
19
|
-
|
|
23
|
+
updateSearchParams: (paramsToSerialize: K) => void;
|
|
24
|
+
};
|
|
@@ -16,5 +16,5 @@ import { UseUrlFiltersProps, UseUrlFiltersReturnType } from './types';
|
|
|
16
16
|
* ```
|
|
17
17
|
*
|
|
18
18
|
*/
|
|
19
|
-
declare const useUrlFilters: <T = string>({ initialSortKey }?: UseUrlFiltersProps<T>) => UseUrlFiltersReturnType<T>;
|
|
19
|
+
declare const useUrlFilters: <T = string, K = unknown>({ initialSortKey, parseSearchParams, }?: UseUrlFiltersProps<T, K>) => UseUrlFiltersReturnType<T, K>;
|
|
20
20
|
export default useUrlFilters;
|
package/dist/index.js
CHANGED
|
@@ -11808,7 +11808,6 @@ var processDeployedTime = function (lastDeployed, isArgoInstalled) {
|
|
|
11808
11808
|
*/
|
|
11809
11809
|
var getUrlWithSearchParams = function (url, params) {
|
|
11810
11810
|
var searchParams = new URLSearchParams();
|
|
11811
|
-
// TODO: Common out
|
|
11812
11811
|
Object.keys(params).forEach(function (key) {
|
|
11813
11812
|
if (params[key]) {
|
|
11814
11813
|
if (Array.isArray(params[key])) {
|
|
@@ -25692,7 +25691,7 @@ var PAGE_SIZE = URL_FILTER_KEYS.PAGE_SIZE, PAGE_NUMBER = URL_FILTER_KEYS.PAGE_NU
|
|
|
25692
25691
|
*
|
|
25693
25692
|
*/
|
|
25694
25693
|
var useUrlFilters = function (_a) {
|
|
25695
|
-
var _b = _a === void 0 ? {} : _a, initialSortKey = _b.initialSortKey;
|
|
25694
|
+
var _b = _a === void 0 ? {} : _a, initialSortKey = _b.initialSortKey, parseSearchParams = _b.parseSearchParams;
|
|
25696
25695
|
var location = reactRouterDom.useLocation();
|
|
25697
25696
|
var history = reactRouterDom.useHistory();
|
|
25698
25697
|
var searchParams = new URLSearchParams(location.search);
|
|
@@ -25705,6 +25704,7 @@ var useUrlFilters = function (_a) {
|
|
|
25705
25704
|
var sortByKey = (_sortBy || initialSortKey || '');
|
|
25706
25705
|
// Fallback to ascending order
|
|
25707
25706
|
var sortByOrder = Object.values(exports.SortingOrder).includes(_sortOrder) ? _sortOrder : exports.SortingOrder.ASC;
|
|
25707
|
+
var _parsedParams = parseSearchParams ? parseSearchParams(searchParams) : {};
|
|
25708
25708
|
return {
|
|
25709
25709
|
pageSize: Number(_pageSize) || DEFAULT_BASE_PAGE_SIZE,
|
|
25710
25710
|
pageNumber: Number(_pageNumber) || DEFAULT_PAGE_NUMBER,
|
|
@@ -25712,8 +25712,9 @@ var useUrlFilters = function (_a) {
|
|
|
25712
25712
|
sortBy: sortByKey,
|
|
25713
25713
|
// sort order should only be applied if the key is available
|
|
25714
25714
|
sortOrder: (sortByKey ? sortByOrder : ''),
|
|
25715
|
+
parsedParams: _parsedParams,
|
|
25715
25716
|
};
|
|
25716
|
-
}, [searchParams]), pageSize = _c.pageSize, pageNumber = _c.pageNumber, searchKey = _c.searchKey, sortBy = _c.sortBy, sortOrder = _c.sortOrder;
|
|
25717
|
+
}, [searchParams]), pageSize = _c.pageSize, pageNumber = _c.pageNumber, searchKey = _c.searchKey, sortBy = _c.sortBy, sortOrder = _c.sortOrder, parsedParams = _c.parsedParams;
|
|
25717
25718
|
/**
|
|
25718
25719
|
* Used for getting the required result from the API
|
|
25719
25720
|
*/
|
|
@@ -25755,23 +25756,26 @@ var useUrlFilters = function (_a) {
|
|
|
25755
25756
|
_resetPageNumber();
|
|
25756
25757
|
};
|
|
25757
25758
|
var clearFilters = function () {
|
|
25758
|
-
|
|
25759
|
-
searchParams.delete(key);
|
|
25760
|
-
});
|
|
25761
|
-
history.replace({ search: searchParams.toString() });
|
|
25759
|
+
history.replace({ search: '' });
|
|
25762
25760
|
};
|
|
25763
|
-
|
|
25764
|
-
|
|
25765
|
-
|
|
25766
|
-
|
|
25767
|
-
|
|
25768
|
-
|
|
25769
|
-
|
|
25770
|
-
|
|
25771
|
-
|
|
25772
|
-
|
|
25773
|
-
|
|
25761
|
+
var updateSearchParams = function (paramsToSerialize) {
|
|
25762
|
+
Object.keys(paramsToSerialize).forEach(function (key) {
|
|
25763
|
+
if (paramsToSerialize[key]) {
|
|
25764
|
+
if (Array.isArray(paramsToSerialize[key])) {
|
|
25765
|
+
searchParams.delete(key);
|
|
25766
|
+
paramsToSerialize[key].forEach(function (val) {
|
|
25767
|
+
searchParams.append(key, val);
|
|
25768
|
+
});
|
|
25769
|
+
}
|
|
25770
|
+
else {
|
|
25771
|
+
searchParams.set(key, paramsToSerialize[key]);
|
|
25772
|
+
}
|
|
25773
|
+
}
|
|
25774
|
+
});
|
|
25775
|
+
// Not replacing the params as it is being done by _resetPageNumber
|
|
25776
|
+
_resetPageNumber();
|
|
25774
25777
|
};
|
|
25778
|
+
return __assign(__assign({ pageSize: pageSize, changePage: changePage, changePageSize: changePageSize, searchKey: searchKey, handleSearch: handleSearch, offset: offset, sortBy: sortBy, sortOrder: sortOrder, handleSorting: handleSorting, clearFilters: clearFilters }, parsedParams), { updateSearchParams: updateSearchParams });
|
|
25775
25779
|
};
|
|
25776
25780
|
|
|
25777
25781
|
var StatusConstants = {
|
package/package.json
CHANGED
package/src/Common/Helper.tsx
CHANGED
|
@@ -447,7 +447,6 @@ export const processDeployedTime = (lastDeployed, isArgoInstalled) => {
|
|
|
447
447
|
*/
|
|
448
448
|
export const getUrlWithSearchParams = (url: string, params: Record<string | number, any>) => {
|
|
449
449
|
const searchParams = new URLSearchParams()
|
|
450
|
-
// TODO: Common out
|
|
451
450
|
Object.keys(params).forEach((key) => {
|
|
452
451
|
if (params[key]) {
|
|
453
452
|
if (Array.isArray(params[key])) {
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
import { SortingOrder } from '../../Constants'
|
|
2
2
|
|
|
3
|
-
export interface UseUrlFiltersProps<T> {
|
|
3
|
+
export interface UseUrlFiltersProps<T, K> {
|
|
4
4
|
/**
|
|
5
5
|
* The key on which the sorting should be applied
|
|
6
6
|
*/
|
|
7
7
|
initialSortKey?: T
|
|
8
|
+
/**
|
|
9
|
+
* Callback function for parsing the search params
|
|
10
|
+
*/
|
|
11
|
+
parseSearchParams?: (searchParams: URLSearchParams) => K
|
|
8
12
|
}
|
|
9
13
|
|
|
10
|
-
export
|
|
14
|
+
export type UseUrlFiltersReturnType<T, K = unknown> = K & {
|
|
11
15
|
pageSize: number
|
|
12
16
|
changePage: (pageNumber: number) => void
|
|
13
17
|
changePageSize: (pageSize: number) => void
|
|
@@ -18,4 +22,5 @@ export interface UseUrlFiltersReturnType<T> {
|
|
|
18
22
|
sortOrder: SortingOrder
|
|
19
23
|
handleSorting: (sortBy: T) => void
|
|
20
24
|
clearFilters: () => void
|
|
25
|
+
updateSearchParams: (paramsToSerialize: K) => void
|
|
21
26
|
}
|
|
@@ -23,12 +23,15 @@ const { PAGE_SIZE, PAGE_NUMBER, SEARCH_KEY, SORT_BY, SORT_ORDER } = URL_FILTER_K
|
|
|
23
23
|
* ```
|
|
24
24
|
*
|
|
25
25
|
*/
|
|
26
|
-
const useUrlFilters = <T = string
|
|
26
|
+
const useUrlFilters = <T = string, K = unknown>({
|
|
27
|
+
initialSortKey,
|
|
28
|
+
parseSearchParams,
|
|
29
|
+
}: UseUrlFiltersProps<T, K> = {}): UseUrlFiltersReturnType<T, K> => {
|
|
27
30
|
const location = useLocation()
|
|
28
31
|
const history = useHistory()
|
|
29
32
|
const searchParams = new URLSearchParams(location.search)
|
|
30
33
|
|
|
31
|
-
const { pageSize, pageNumber, searchKey, sortBy, sortOrder } = useMemo(() => {
|
|
34
|
+
const { pageSize, pageNumber, searchKey, sortBy, sortOrder, parsedParams } = useMemo(() => {
|
|
32
35
|
const _pageSize = searchParams.get(PAGE_SIZE)
|
|
33
36
|
const _pageNumber = searchParams.get(PAGE_NUMBER)
|
|
34
37
|
const _searchKey = searchParams.get(SEARCH_KEY)
|
|
@@ -39,6 +42,8 @@ const useUrlFilters = <T = string>({ initialSortKey }: UseUrlFiltersProps<T> = {
|
|
|
39
42
|
// Fallback to ascending order
|
|
40
43
|
const sortByOrder = Object.values(SortingOrder).includes(_sortOrder) ? _sortOrder : SortingOrder.ASC
|
|
41
44
|
|
|
45
|
+
const _parsedParams = parseSearchParams ? parseSearchParams(searchParams) : ({} as K)
|
|
46
|
+
|
|
42
47
|
return {
|
|
43
48
|
pageSize: Number(_pageSize) || DEFAULT_BASE_PAGE_SIZE,
|
|
44
49
|
pageNumber: Number(_pageNumber) || DEFAULT_PAGE_NUMBER,
|
|
@@ -46,6 +51,7 @@ const useUrlFilters = <T = string>({ initialSortKey }: UseUrlFiltersProps<T> = {
|
|
|
46
51
|
sortBy: sortByKey,
|
|
47
52
|
// sort order should only be applied if the key is available
|
|
48
53
|
sortOrder: (sortByKey ? sortByOrder : '') as SortingOrder,
|
|
54
|
+
parsedParams: _parsedParams,
|
|
49
55
|
}
|
|
50
56
|
}, [searchParams])
|
|
51
57
|
|
|
@@ -98,10 +104,24 @@ const useUrlFilters = <T = string>({ initialSortKey }: UseUrlFiltersProps<T> = {
|
|
|
98
104
|
}
|
|
99
105
|
|
|
100
106
|
const clearFilters = () => {
|
|
101
|
-
|
|
102
|
-
|
|
107
|
+
history.replace({ search: '' })
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
const updateSearchParams = (paramsToSerialize: K) => {
|
|
111
|
+
Object.keys(paramsToSerialize).forEach((key) => {
|
|
112
|
+
if (paramsToSerialize[key]) {
|
|
113
|
+
if (Array.isArray(paramsToSerialize[key])) {
|
|
114
|
+
searchParams.delete(key)
|
|
115
|
+
paramsToSerialize[key].forEach((val) => {
|
|
116
|
+
searchParams.append(key, val)
|
|
117
|
+
})
|
|
118
|
+
} else {
|
|
119
|
+
searchParams.set(key, paramsToSerialize[key])
|
|
120
|
+
}
|
|
121
|
+
}
|
|
103
122
|
})
|
|
104
|
-
|
|
123
|
+
// Not replacing the params as it is being done by _resetPageNumber
|
|
124
|
+
_resetPageNumber()
|
|
105
125
|
}
|
|
106
126
|
|
|
107
127
|
return {
|
|
@@ -115,6 +135,8 @@ const useUrlFilters = <T = string>({ initialSortKey }: UseUrlFiltersProps<T> = {
|
|
|
115
135
|
sortOrder,
|
|
116
136
|
handleSorting,
|
|
117
137
|
clearFilters,
|
|
138
|
+
...parsedParams,
|
|
139
|
+
updateSearchParams,
|
|
118
140
|
}
|
|
119
141
|
}
|
|
120
142
|
|