feat(playlists): implement playlist plugin

Signed-off-by: Phil Kuang <pkuang@factset.com>
This commit is contained in:
Phil Kuang
2022-07-02 00:00:52 -04:00
parent f0ad9f3c64
commit d3737da337
115 changed files with 9042 additions and 28 deletions
@@ -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 (