feat(playlists): implement playlist plugin
Signed-off-by: Phil Kuang <pkuang@factset.com>
This commit is contained in:
@@ -62,7 +62,7 @@ export const AutocompleteFilter = (props: SearchAutocompleteFilterProps) => {
|
||||
defaultValues,
|
||||
valuesDebounceMs,
|
||||
);
|
||||
const { filters, setFilters } = useSearch();
|
||||
const { filters, setFilters, setPageCursor } = useSearch();
|
||||
const filterValue =
|
||||
(filters[name] as string | string[] | undefined) || (multiple ? [] : null);
|
||||
|
||||
@@ -79,6 +79,7 @@ export const AutocompleteFilter = (props: SearchAutocompleteFilterProps) => {
|
||||
}
|
||||
return { ...others };
|
||||
});
|
||||
setPageCursor(undefined);
|
||||
};
|
||||
|
||||
// Provide the input field.
|
||||
|
||||
@@ -33,6 +33,7 @@ describe('SearchFilter', () => {
|
||||
term: '',
|
||||
filters: {},
|
||||
types: [],
|
||||
pageCursor: 'abc123',
|
||||
};
|
||||
|
||||
const label = 'Field';
|
||||
@@ -138,7 +139,10 @@ describe('SearchFilter', () => {
|
||||
await userEvent.click(checkBox);
|
||||
await waitFor(() => {
|
||||
expect(query).toHaveBeenLastCalledWith(
|
||||
expect.objectContaining({ filters: { field: [values[0]] } }),
|
||||
expect.objectContaining({
|
||||
filters: { field: [values[0]] },
|
||||
pageCursor: undefined,
|
||||
}),
|
||||
);
|
||||
});
|
||||
|
||||
@@ -146,7 +150,7 @@ describe('SearchFilter', () => {
|
||||
await userEvent.click(checkBox);
|
||||
await waitFor(() => {
|
||||
expect(query).toHaveBeenLastCalledWith(
|
||||
expect.objectContaining({ filters: {} }),
|
||||
expect.objectContaining({ filters: {}, pageCursor: undefined }),
|
||||
);
|
||||
});
|
||||
});
|
||||
@@ -170,6 +174,7 @@ describe('SearchFilter', () => {
|
||||
expect(query).toHaveBeenLastCalledWith(
|
||||
expect.objectContaining({
|
||||
filters: { ...filters, field: [values[0]] },
|
||||
pageCursor: undefined,
|
||||
}),
|
||||
);
|
||||
});
|
||||
@@ -178,7 +183,7 @@ describe('SearchFilter', () => {
|
||||
await userEvent.click(checkBox);
|
||||
await waitFor(() => {
|
||||
expect(query).toHaveBeenLastCalledWith(
|
||||
expect.objectContaining({ filters }),
|
||||
expect.objectContaining({ filters, pageCursor: undefined }),
|
||||
);
|
||||
});
|
||||
});
|
||||
@@ -337,6 +342,7 @@ describe('SearchFilter', () => {
|
||||
expect(query).toHaveBeenLastCalledWith(
|
||||
expect.objectContaining({
|
||||
filters: { [name]: values[0] },
|
||||
pageCursor: undefined,
|
||||
}),
|
||||
);
|
||||
});
|
||||
@@ -353,6 +359,7 @@ describe('SearchFilter', () => {
|
||||
expect(query).toHaveBeenLastCalledWith(
|
||||
expect.objectContaining({
|
||||
filters: {},
|
||||
pageCursor: undefined,
|
||||
}),
|
||||
);
|
||||
});
|
||||
@@ -388,6 +395,7 @@ describe('SearchFilter', () => {
|
||||
expect(query).toHaveBeenLastCalledWith(
|
||||
expect.objectContaining({
|
||||
filters: { ...filters, [name]: values[0] },
|
||||
pageCursor: undefined,
|
||||
}),
|
||||
);
|
||||
});
|
||||
@@ -402,7 +410,7 @@ describe('SearchFilter', () => {
|
||||
|
||||
await waitFor(() => {
|
||||
expect(query).toHaveBeenLastCalledWith(
|
||||
expect.objectContaining({ filters }),
|
||||
expect.objectContaining({ filters, pageCursor: undefined }),
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -82,7 +82,7 @@ export const CheckboxFilter = (props: SearchFilterComponentProps) => {
|
||||
valuesDebounceMs,
|
||||
} = props;
|
||||
const classes = useStyles();
|
||||
const { filters, setFilters } = useSearch();
|
||||
const { filters, setFilters, setPageCursor } = useSearch();
|
||||
useDefaultFilterValue(name, defaultValue);
|
||||
const asyncValues =
|
||||
typeof givenValues === 'function' ? givenValues : undefined;
|
||||
@@ -106,6 +106,7 @@ export const CheckboxFilter = (props: SearchFilterComponentProps) => {
|
||||
const items = checked ? [...rest, value] : rest;
|
||||
return items.length ? { ...others, [name]: items } : others;
|
||||
});
|
||||
setPageCursor(undefined);
|
||||
};
|
||||
|
||||
return (
|
||||
@@ -161,7 +162,7 @@ export const SelectFilter = (props: SearchFilterComponentProps) => {
|
||||
defaultValues,
|
||||
valuesDebounceMs,
|
||||
);
|
||||
const { filters, setFilters } = useSearch();
|
||||
const { filters, setFilters, setPageCursor } = useSearch();
|
||||
|
||||
const handleChange = (e: ChangeEvent<{ value: unknown }>) => {
|
||||
const {
|
||||
@@ -172,6 +173,7 @@ export const SelectFilter = (props: SearchFilterComponentProps) => {
|
||||
const { [name]: filter, ...others } = prevFilters;
|
||||
return value ? { ...others, [name]: value as string } : others;
|
||||
});
|
||||
setPageCursor(undefined);
|
||||
};
|
||||
|
||||
return (
|
||||
|
||||
Reference in New Issue
Block a user