@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.
@@ -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 interface UseUrlFiltersReturnType<T> {
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
- Object.values(URL_FILTER_KEYS).forEach(function (key) {
25759
- searchParams.delete(key);
25760
- });
25761
- history.replace({ search: searchParams.toString() });
25759
+ history.replace({ search: '' });
25762
25760
  };
25763
- return {
25764
- pageSize: pageSize,
25765
- changePage: changePage,
25766
- changePageSize: changePageSize,
25767
- searchKey: searchKey,
25768
- handleSearch: handleSearch,
25769
- offset: offset,
25770
- sortBy: sortBy,
25771
- sortOrder: sortOrder,
25772
- handleSorting: handleSorting,
25773
- clearFilters: clearFilters,
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devtron-labs/devtron-fe-common-lib",
3
- "version": "0.0.62-beta-1",
3
+ "version": "0.0.62-beta-3",
4
4
  "description": "Supporting common component library",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
@@ -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 interface UseUrlFiltersReturnType<T> {
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>({ initialSortKey }: UseUrlFiltersProps<T> = {}): UseUrlFiltersReturnType<T> => {
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
- Object.values(URL_FILTER_KEYS).forEach((key) => {
102
- searchParams.delete(key)
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
- history.replace({ search: searchParams.toString() })
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