Skip to content

Commit 9d8e758

Browse files
Trim quotes and whitespace from search bar text (#725)
* fix regex * Remove env files
1 parent 2ab43cd commit 9d8e758

File tree

3 files changed

+37
-4
lines changed

3 files changed

+37
-4
lines changed

src/components/page-filters/__tests__/page-filters.test.tsx

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,30 @@ describe('PageFilters', () => {
4545
expect(mockSetQueryParams).toHaveBeenCalledWith({ search: 'test-search' });
4646
});
4747

48+
it('should prune quotes and spaces from input text if no regexp is passed', async () => {
49+
setup({});
50+
51+
const searchInput = await screen.findByRole('textbox');
52+
53+
act(() => {
54+
fireEvent.change(searchInput, { target: { value: ` "test-search'` } });
55+
});
56+
57+
expect(mockSetQueryParams).toHaveBeenCalledWith({ search: 'test-search' });
58+
});
59+
60+
it('should prune symbols from input text if regexp is passed', async () => {
61+
setup({ searchTrimRegExp: /[-]/g });
62+
63+
const searchInput = await screen.findByRole('textbox');
64+
65+
act(() => {
66+
fireEvent.change(searchInput, { target: { value: 'test-search' } });
67+
});
68+
69+
expect(mockSetQueryParams).toHaveBeenCalledWith({ search: 'testsearch' });
70+
});
71+
4872
it('should show filters when Filters button is clicked, and modify additional filters', async () => {
4973
setup({});
5074

@@ -62,10 +86,12 @@ describe('PageFilters', () => {
6286

6387
function setup({
6488
valuesOverrides,
89+
searchTrimRegExp,
6590
}: {
6691
valuesOverrides?: Partial<
6792
PageQueryParamValues<typeof mockPageQueryParamConfig>
6893
>;
94+
searchTrimRegExp?: RegExp;
6995
}) {
7096
if (valuesOverrides) {
7197
jest
@@ -82,6 +108,7 @@ function setup({
82108
searchPlaceholder="placeholder"
83109
pageFiltersConfig={mockFiltersConfig}
84110
pageQueryParamsConfig={mockPageQueryParamConfig}
111+
{...(searchTrimRegExp ? { searchTrimRegExp } : {})}
85112
/>
86113
);
87114
}

src/components/page-filters/page-filters.tsx

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ export default function PageFilters<
2323
searchPlaceholder,
2424
pageFiltersConfig,
2525
pageQueryParamsConfig,
26+
searchTrimRegExp = /['"\s]/g,
2627
}: Props<P, K>) {
2728
const [areFiltersShown, setAreFiltersShown] = useState(false);
2829

@@ -34,11 +35,15 @@ export default function PageFilters<
3435
<styled.SearchInputContainer>
3536
<Input
3637
value={queryParams[searchQueryParamKey]}
37-
onChange={(event) =>
38+
onChange={(event) => {
39+
const searchValue = searchTrimRegExp
40+
? event.target.value.replaceAll(searchTrimRegExp, '')
41+
: event.target.value;
42+
3843
setQueryParams({
39-
[searchQueryParamKey]: event.target.value || undefined,
40-
} as Partial<PageQueryParamSetterValues<P>>)
41-
}
44+
[searchQueryParamKey]: searchValue || undefined,
45+
} as Partial<PageQueryParamSetterValues<P>>);
46+
}}
4247
placeholder={searchPlaceholder}
4348
startEnhancer={() => <Search />}
4449
clearOnEscape

src/components/page-filters/page-filters.types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,5 @@ export type Props<
3333
searchPlaceholder: string;
3434
pageQueryParamsConfig: P;
3535
pageFiltersConfig: Array<PageFilterConfig<P, any>>;
36+
searchTrimRegExp?: RegExp;
3637
};

0 commit comments

Comments
 (0)