From 3558214e29f5f0600492fb079c1729c5f13de9c2 Mon Sep 17 00:00:00 2001 From: Arun Jain Date: Fri, 25 Oct 2024 12:12:51 +0530 Subject: [PATCH 01/10] feat: add support for local storage ilters in use url filters --- package-lock.json | 4 +-- package.json | 2 +- src/Common/Hooks/useUrlFilters/types.ts | 1 + .../Hooks/useUrlFilters/useUrlFilters.ts | 25 ++++++++++++++++++- .../SelectPicker/FilterSelectPicker.tsx | 15 +++++------ src/Shared/Components/SelectPicker/type.ts | 1 + 6 files changed, 37 insertions(+), 11 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5b2219979..2f27139fb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@devtron-labs/devtron-fe-common-lib", - "version": "0.5.8", + "version": "0.5.8-beta-6", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@devtron-labs/devtron-fe-common-lib", - "version": "0.5.8", + "version": "0.5.8-beta-6", "license": "ISC", "dependencies": { "@types/react-dates": "^21.8.6", diff --git a/package.json b/package.json index 71f17bf42..564b1039d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@devtron-labs/devtron-fe-common-lib", - "version": "0.5.8", + "version": "0.5.8-beta-6", "description": "Supporting common component library", "type": "module", "main": "dist/index.js", diff --git a/src/Common/Hooks/useUrlFilters/types.ts b/src/Common/Hooks/useUrlFilters/types.ts index 335828637..349240541 100644 --- a/src/Common/Hooks/useUrlFilters/types.ts +++ b/src/Common/Hooks/useUrlFilters/types.ts @@ -25,6 +25,7 @@ export interface UseUrlFiltersProps { * Callback function for parsing the search params */ parseSearchParams?: (searchParams: URLSearchParams) => K + localStorageKey?: string } export type UseUrlFiltersReturnType = K & { diff --git a/src/Common/Hooks/useUrlFilters/useUrlFilters.ts b/src/Common/Hooks/useUrlFilters/useUrlFilters.ts index ea00146a3..5af2fdc96 100644 --- a/src/Common/Hooks/useUrlFilters/useUrlFilters.ts +++ b/src/Common/Hooks/useUrlFilters/useUrlFilters.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { useMemo } from 'react' +import { useEffect, useMemo } from 'react' import { useHistory, useLocation } from 'react-router-dom' import { DEFAULT_BASE_PAGE_SIZE, EXCLUDED_FALSY_VALUES, SortingOrder } from '../../Constants' import { DEFAULT_PAGE_NUMBER, URL_FILTER_KEYS } from './constants' @@ -42,6 +42,7 @@ const { PAGE_SIZE, PAGE_NUMBER, SEARCH_KEY, SORT_BY, SORT_ORDER } = URL_FILTER_K const useUrlFilters = ({ initialSortKey, parseSearchParams, + localStorageKey, }: UseUrlFiltersProps = {}): UseUrlFiltersReturnType => { const location = useLocation() const history = useHistory() @@ -126,6 +127,7 @@ const useUrlFilters = ({ const clearFilters = () => { history.replace({ search: '' }) + localStorage.setItem(localStorageKey, '') } const updateSearchParams = (paramsToSerialize: Partial) => { @@ -143,10 +145,31 @@ const useUrlFilters = ({ searchParams.delete(key) } }) + localStorage.setItem(localStorageKey, JSON.stringify(parseSearchParams(searchParams))) // Not replacing the params as it is being done by _resetPageNumber _resetPageNumber() } + useEffect(() => { + if (!localStorageKey) { + return + } + if ( + Object.keys(parsedParams).some( + (key) => + (Array.isArray(parsedParams[key]) && parsedParams[key].length) || + (typeof parsedParams[key] === 'string' && !!parsedParams[key]), + ) + ) { + localStorage.setItem(localStorageKey, JSON.stringify(parsedParams)) + } else { + const localStorageValue = localStorage.getItem(localStorageKey) + if (localStorageValue) { + updateSearchParams(JSON.parse(localStorageValue)) + } + } + }, []) + return { pageSize, changePage, diff --git a/src/Shared/Components/SelectPicker/FilterSelectPicker.tsx b/src/Shared/Components/SelectPicker/FilterSelectPicker.tsx index b3c0be39b..314c97492 100644 --- a/src/Shared/Components/SelectPicker/FilterSelectPicker.tsx +++ b/src/Shared/Components/SelectPicker/FilterSelectPicker.tsx @@ -5,8 +5,10 @@ import { useEffect, useMemo, useState } from 'react' import { ReactComponent as ICFilter } from '@Icons/ic-filter.svg' import { ReactComponent as ICFilterApplied } from '@Icons/ic-filter-applied.svg' +import { ComponentSizeType } from '@Shared/constants' import SelectPicker from './SelectPicker.component' import { FilterSelectPickerProps, SelectPickerOptionType, SelectPickerProps } from './type' +import { Button } from '../Button' const FilterSelectPicker = ({ appliedFilterOptions, @@ -58,14 +60,13 @@ const FilterSelectPicker = ({ return (
- + size={ComponentSizeType.small} + fullWidth + />
) } diff --git a/src/Shared/Components/SelectPicker/type.ts b/src/Shared/Components/SelectPicker/type.ts index 38eef3603..8506813c3 100644 --- a/src/Shared/Components/SelectPicker/type.ts +++ b/src/Shared/Components/SelectPicker/type.ts @@ -266,6 +266,7 @@ export interface FilterSelectPickerProps | 'shouldMenuAlignRight' | 'optionListError' | 'reloadOptionList' + | 'isOptionDisabled' > { appliedFilterOptions: SelectPickerOptionType[] handleApplyFilter: (filtersToApply: SelectPickerOptionType[]) => void From 489cfafe92249ce1511114bf4ebf6be1068995b2 Mon Sep 17 00:00:00 2001 From: Arun Jain Date: Fri, 25 Oct 2024 12:20:07 +0530 Subject: [PATCH 02/10] chore: version bump --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2f27139fb..2f214055c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@devtron-labs/devtron-fe-common-lib", - "version": "0.5.8-beta-6", + "version": "0.5.8-beta-7", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@devtron-labs/devtron-fe-common-lib", - "version": "0.5.8-beta-6", + "version": "0.5.8-beta-7", "license": "ISC", "dependencies": { "@types/react-dates": "^21.8.6", diff --git a/package.json b/package.json index 564b1039d..4a3195750 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@devtron-labs/devtron-fe-common-lib", - "version": "0.5.8-beta-6", + "version": "0.5.8-beta-7", "description": "Supporting common component library", "type": "module", "main": "dist/index.js", From 017ea72026729de51f646c000832393ef02afcfd Mon Sep 17 00:00:00 2001 From: Arun Jain Date: Mon, 28 Oct 2024 13:35:12 +0530 Subject: [PATCH 03/10] feat: update full screen key to shift + f --- src/Shared/Components/CICDHistory/History.components.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Shared/Components/CICDHistory/History.components.tsx b/src/Shared/Components/CICDHistory/History.components.tsx index 5fa8b4e81..282be6114 100644 --- a/src/Shared/Components/CICDHistory/History.components.tsx +++ b/src/Shared/Components/CICDHistory/History.components.tsx @@ -34,7 +34,7 @@ import { ReactComponent as ZoomOut } from '../../../Assets/Icon/ic-exit-fullscre import './cicdHistory.scss' export const LogResizeButton = ({ - shortcutCombo = ['F'], + shortcutCombo = ['Shift', 'F'], showOnlyWhenPathIncludesLogs = true, fullScreenView, setFullScreenView, From 457ed64799e4858ccc86446f5bd37ec67479215d Mon Sep 17 00:00:00 2001 From: Arun Jain Date: Tue, 29 Oct 2024 16:28:47 +0530 Subject: [PATCH 04/10] fix: not to update url from local storage in case of primary params --- src/Common/Hooks/useUrlFilters/types.ts | 2 +- .../Hooks/useUrlFilters/useUrlFilters.ts | 20 ++++++++++++++++--- src/Common/Hooks/useUrlFilters/utils.tsx | 5 +++++ 3 files changed, 23 insertions(+), 4 deletions(-) create mode 100644 src/Common/Hooks/useUrlFilters/utils.tsx diff --git a/src/Common/Hooks/useUrlFilters/types.ts b/src/Common/Hooks/useUrlFilters/types.ts index 349240541..5dc12d8c8 100644 --- a/src/Common/Hooks/useUrlFilters/types.ts +++ b/src/Common/Hooks/useUrlFilters/types.ts @@ -25,7 +25,7 @@ export interface UseUrlFiltersProps { * Callback function for parsing the search params */ parseSearchParams?: (searchParams: URLSearchParams) => K - localStorageKey?: string + localStorageKey?: `${string}__${string}` } export type UseUrlFiltersReturnType = K & { diff --git a/src/Common/Hooks/useUrlFilters/useUrlFilters.ts b/src/Common/Hooks/useUrlFilters/useUrlFilters.ts index 5af2fdc96..2905bed24 100644 --- a/src/Common/Hooks/useUrlFilters/useUrlFilters.ts +++ b/src/Common/Hooks/useUrlFilters/useUrlFilters.ts @@ -19,6 +19,7 @@ import { useHistory, useLocation } from 'react-router-dom' import { DEFAULT_BASE_PAGE_SIZE, EXCLUDED_FALSY_VALUES, SortingOrder } from '../../Constants' import { DEFAULT_PAGE_NUMBER, URL_FILTER_KEYS } from './constants' import { UseUrlFiltersProps, UseUrlFiltersReturnType } from './types' +import { setItemInLocalStorageIfKeyExists } from './utils' const { PAGE_SIZE, PAGE_NUMBER, SEARCH_KEY, SORT_BY, SORT_ORDER } = URL_FILTER_KEYS @@ -127,7 +128,7 @@ const useUrlFilters = ({ const clearFilters = () => { history.replace({ search: '' }) - localStorage.setItem(localStorageKey, '') + setItemInLocalStorageIfKeyExists(localStorageKey, '') } const updateSearchParams = (paramsToSerialize: Partial) => { @@ -145,13 +146,26 @@ const useUrlFilters = ({ searchParams.delete(key) } }) - localStorage.setItem(localStorageKey, JSON.stringify(parseSearchParams(searchParams))) + // Skipping primary params => pageSize, pageNumber, searchKey, sortBy, sortOrder + setItemInLocalStorageIfKeyExists(localStorageKey, JSON.stringify(parseSearchParams(searchParams))) // Not replacing the params as it is being done by _resetPageNumber _resetPageNumber() } useEffect(() => { - if (!localStorageKey) { + // If we have pageSize || pageNumber || searchKey || sortBy || sortOrder in params, no need to change other filters + const paramsSortByKey = searchParams.get(SORT_BY) || '' + const paramsSortByOrder = searchParams.get(SORT_ORDER) || '' + const paramsPageNumber = searchParams.get(PAGE_NUMBER) || 0 + const paramsPageSize = searchParams.get(PAGE_SIZE) || 0 + if ( + !localStorageKey || + !!paramsPageSize || + !!paramsPageNumber || + !!searchKey || + !!paramsSortByKey || + !!paramsSortByOrder + ) { return } if ( diff --git a/src/Common/Hooks/useUrlFilters/utils.tsx b/src/Common/Hooks/useUrlFilters/utils.tsx new file mode 100644 index 000000000..e587cb113 --- /dev/null +++ b/src/Common/Hooks/useUrlFilters/utils.tsx @@ -0,0 +1,5 @@ +export const setItemInLocalStorageIfKeyExists = (localStorageKey: string, value: string) => { + if (localStorageKey) { + localStorage.setItem(localStorageKey, value) + } +} From 58dd157cf792be12d68f6a61c3c07ac55f705f67 Mon Sep 17 00:00:00 2001 From: Arun Jain Date: Tue, 29 Oct 2024 17:49:02 +0530 Subject: [PATCH 05/10] feat: update local storage acc to search string --- package-lock.json | 4 +-- package.json | 2 +- .../Hooks/useUrlFilters/useUrlFilters.ts | 32 ++++--------------- 3 files changed, 9 insertions(+), 29 deletions(-) diff --git a/package-lock.json b/package-lock.json index 90430aa3b..12dbd759a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@devtron-labs/devtron-fe-common-lib", - "version": "0.6.1-beta-1", + "version": "0.6.1-beta-7", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@devtron-labs/devtron-fe-common-lib", - "version": "0.6.1-beta-1", + "version": "0.6.1-beta-7", "license": "ISC", "dependencies": { "@types/react-dates": "^21.8.6", diff --git a/package.json b/package.json index fb7634513..c1d283e6b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@devtron-labs/devtron-fe-common-lib", - "version": "0.6.1-beta-1", + "version": "0.6.1-beta-7", "description": "Supporting common component library", "type": "module", "main": "dist/index.js", diff --git a/src/Common/Hooks/useUrlFilters/useUrlFilters.ts b/src/Common/Hooks/useUrlFilters/useUrlFilters.ts index 2905bed24..b824a2f1f 100644 --- a/src/Common/Hooks/useUrlFilters/useUrlFilters.ts +++ b/src/Common/Hooks/useUrlFilters/useUrlFilters.ts @@ -153,34 +153,14 @@ const useUrlFilters = ({ } useEffect(() => { - // If we have pageSize || pageNumber || searchKey || sortBy || sortOrder in params, no need to change other filters - const paramsSortByKey = searchParams.get(SORT_BY) || '' - const paramsSortByOrder = searchParams.get(SORT_ORDER) || '' - const paramsPageNumber = searchParams.get(PAGE_NUMBER) || 0 - const paramsPageSize = searchParams.get(PAGE_SIZE) || 0 - if ( - !localStorageKey || - !!paramsPageSize || - !!paramsPageNumber || - !!searchKey || - !!paramsSortByKey || - !!paramsSortByOrder - ) { + // if we have search string, set secondary params in local storage accordingly + if (location.search) { + localStorage.setItem(localStorageKey, JSON.stringify(parsedParams)) return } - if ( - Object.keys(parsedParams).some( - (key) => - (Array.isArray(parsedParams[key]) && parsedParams[key].length) || - (typeof parsedParams[key] === 'string' && !!parsedParams[key]), - ) - ) { - localStorage.setItem(localStorageKey, JSON.stringify(parsedParams)) - } else { - const localStorageValue = localStorage.getItem(localStorageKey) - if (localStorageValue) { - updateSearchParams(JSON.parse(localStorageValue)) - } + const localStorageValue = localStorage.getItem(localStorageKey) + if (localStorageValue) { + updateSearchParams(JSON.parse(localStorageValue)) } }, []) From ed19bfd762b2f148291161491da08b59c393006a Mon Sep 17 00:00:00 2001 From: Arun Jain Date: Mon, 4 Nov 2024 13:58:30 +0530 Subject: [PATCH 06/10] chore: version bump --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index b368ff2a1..95bd7f1a2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@devtron-labs/devtron-fe-common-lib", - "version": "0.6.3", + "version": "0.6.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@devtron-labs/devtron-fe-common-lib", - "version": "0.6.3", + "version": "0.6.4", "license": "ISC", "dependencies": { "@types/react-dates": "^21.8.6", diff --git a/package.json b/package.json index 0939abd83..e6f238dfb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@devtron-labs/devtron-fe-common-lib", - "version": "0.6.3", + "version": "0.6.4", "description": "Supporting common component library", "type": "module", "main": "dist/index.js", From 55fa6ff2cfc16b08ea99aa7c5223373a880cf1c7 Mon Sep 17 00:00:00 2001 From: Arun Jain Date: Mon, 4 Nov 2024 14:23:55 +0530 Subject: [PATCH 07/10] chore: version bump --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 95bd7f1a2..780424963 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@devtron-labs/devtron-fe-common-lib", - "version": "0.6.4", + "version": "0.6.4-beta-1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@devtron-labs/devtron-fe-common-lib", - "version": "0.6.4", + "version": "0.6.4-beta-1", "license": "ISC", "dependencies": { "@types/react-dates": "^21.8.6", diff --git a/package.json b/package.json index e6f238dfb..c49f1fe1b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@devtron-labs/devtron-fe-common-lib", - "version": "0.6.4", + "version": "0.6.4-beta-1", "description": "Supporting common component library", "type": "module", "main": "dist/index.js", From a3d478be7bceae8335c398260dc788ec453d3daf Mon Sep 17 00:00:00 2001 From: Arun Jain Date: Tue, 5 Nov 2024 12:13:38 +0530 Subject: [PATCH 08/10] chore: version bump --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 780424963..4995bef46 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@devtron-labs/devtron-fe-common-lib", - "version": "0.6.4-beta-1", + "version": "0.6.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@devtron-labs/devtron-fe-common-lib", - "version": "0.6.4-beta-1", + "version": "0.6.5", "license": "ISC", "dependencies": { "@types/react-dates": "^21.8.6", diff --git a/package.json b/package.json index c49f1fe1b..8b3b3cf5e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@devtron-labs/devtron-fe-common-lib", - "version": "0.6.4-beta-1", + "version": "0.6.5", "description": "Supporting common component library", "type": "module", "main": "dist/index.js", From 9eeb2f3dfd85736b2465f47cd9c65b83a836a57e Mon Sep 17 00:00:00 2001 From: Arun Jain Date: Tue, 5 Nov 2024 12:29:55 +0530 Subject: [PATCH 09/10] fix: add check for parseSearchParams --- package-lock.json | 4 ++-- package.json | 2 +- src/Common/Hooks/useUrlFilters/useUrlFilters.ts | 12 ++++++++++-- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4995bef46..d910cde10 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@devtron-labs/devtron-fe-common-lib", - "version": "0.6.5", + "version": "0.6.4-beta-5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@devtron-labs/devtron-fe-common-lib", - "version": "0.6.5", + "version": "0.6.4-beta-5", "license": "ISC", "dependencies": { "@types/react-dates": "^21.8.6", diff --git a/package.json b/package.json index 8b3b3cf5e..3cb8bae8b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@devtron-labs/devtron-fe-common-lib", - "version": "0.6.5", + "version": "0.6.4-beta-5", "description": "Supporting common component library", "type": "module", "main": "dist/index.js", diff --git a/src/Common/Hooks/useUrlFilters/useUrlFilters.ts b/src/Common/Hooks/useUrlFilters/useUrlFilters.ts index b824a2f1f..6abb0a39e 100644 --- a/src/Common/Hooks/useUrlFilters/useUrlFilters.ts +++ b/src/Common/Hooks/useUrlFilters/useUrlFilters.ts @@ -49,6 +49,14 @@ const useUrlFilters = ({ const history = useHistory() const searchParams = new URLSearchParams(location.search) + const getParsedSearchParams: UseUrlFiltersProps['parseSearchParams'] = (searchParamsToParse) => { + if (parseSearchParams) { + return parseSearchParams(searchParamsToParse) + } + + return {} as K + } + const { pageSize, pageNumber, searchKey, sortBy, sortOrder, parsedParams } = useMemo(() => { const _pageSize = searchParams.get(PAGE_SIZE) const _pageNumber = searchParams.get(PAGE_NUMBER) @@ -60,7 +68,7 @@ const useUrlFilters = ({ // Fallback to ascending order const sortByOrder = Object.values(SortingOrder).includes(_sortOrder) ? _sortOrder : SortingOrder.ASC - const _parsedParams = parseSearchParams ? parseSearchParams(searchParams) : ({} as K) + const _parsedParams = getParsedSearchParams(searchParams) return { pageSize: Number(_pageSize) || DEFAULT_BASE_PAGE_SIZE, @@ -147,7 +155,7 @@ const useUrlFilters = ({ } }) // Skipping primary params => pageSize, pageNumber, searchKey, sortBy, sortOrder - setItemInLocalStorageIfKeyExists(localStorageKey, JSON.stringify(parseSearchParams(searchParams))) + setItemInLocalStorageIfKeyExists(localStorageKey, JSON.stringify(getParsedSearchParams(searchParams))) // Not replacing the params as it is being done by _resetPageNumber _resetPageNumber() } From 41d024c59765f87427fcb32375f9c0fe3145cf34 Mon Sep 17 00:00:00 2001 From: Arun Jain Date: Tue, 5 Nov 2024 13:45:52 +0530 Subject: [PATCH 10/10] chore: version bump --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index d910cde10..4995bef46 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@devtron-labs/devtron-fe-common-lib", - "version": "0.6.4-beta-5", + "version": "0.6.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@devtron-labs/devtron-fe-common-lib", - "version": "0.6.4-beta-5", + "version": "0.6.5", "license": "ISC", "dependencies": { "@types/react-dates": "^21.8.6", diff --git a/package.json b/package.json index 3cb8bae8b..8b3b3cf5e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@devtron-labs/devtron-fe-common-lib", - "version": "0.6.4-beta-5", + "version": "0.6.5", "description": "Supporting common component library", "type": "module", "main": "dist/index.js",