diff --git a/packages/core/src/components/CheckboxTree/CheckboxTree.tsx b/packages/core/src/components/CheckboxTree/CheckboxTree.tsx
index f1dae684c7..243abd4f5a 100644
--- a/packages/core/src/components/CheckboxTree/CheckboxTree.tsx
+++ b/packages/core/src/components/CheckboxTree/CheckboxTree.tsx
@@ -191,15 +191,16 @@ export const CheckboxTree = (props: CheckboxTreeProps) => {
dispatch({ type: 'openCategory', payload: value });
};
- const handleChange = () => {
+ useEffect(() => {
const values = Object.values(state).map(category => ({
- category: category.label,
- selected: Object.values(category.options)
+ category: category.isChecked ? category.label : null,
+ selectedChilds: Object.values(category.options)
.filter(option => option.isChecked)
.map(option => option.value),
}));
onChange(values);
- };
+ // eslint-disable-next-line react-hooks/exhaustive-deps
+ }, [state]);
return (
@@ -213,13 +214,12 @@ export const CheckboxTree = (props: CheckboxTreeProps) => {
{
- await dispatch({
+ onClick={() =>
+ dispatch({
type: 'checkCategory',
payload: item.label,
- });
- handleChange();
- }}
+ })
+ }
>
{
button
key={option.label}
className={classes.nested}
- onClick={async () => {
- await dispatch({
+ onClick={() =>
+ dispatch({
type: 'checkOption',
payload: {
subCategoryLabel: item.label,
optionLabel: option.label,
},
- });
- handleChange();
- }}
+ })
+ }
>
createStyles({
@@ -118,9 +119,20 @@ export const SelectComponent = (props: SelectProps) => {
};
const selectHandleOnOpen = () => {
- setCanOpen(!canOpen);
+ setCanOpen(previous => {
+ if (multiple) {
+ return true
+ }
+ return !previous
+ });
};
+ const handleClickAway = (event: React.ChangeEvent) => {
+ if (event.target.id !== "menu-item") {
+ setCanOpen(false);
+ }
+ }
+
const handleDelete = (selectedValue: string | number) => () => {
const newValue = (value as any[]).filter(chip => chip !== selectedValue)
setValue(newValue);
@@ -130,9 +142,9 @@ export const SelectComponent = (props: SelectProps) => {
return (
{label}
+
+
);
};
diff --git a/packages/core/src/components/Table/Filters.tsx b/packages/core/src/components/Table/Filters.tsx
index ad6c8628bb..e8192b1a90 100644
--- a/packages/core/src/components/Table/Filters.tsx
+++ b/packages/core/src/components/Table/Filters.tsx
@@ -80,7 +80,7 @@ export const Filters = (props: Props) => {
useEffect(() => {
onChangeFilters(selectedFilters);
- // eslint-disable-next-line react-hooks/exhaustive-deps
+ // eslint-disable-next-line react-hooks/exhaustive-deps
}, [selectedFilters]);
// As material table doesn't provide a way to add a column filter tab we will make our own filter logic
@@ -99,12 +99,25 @@ export const Filters = (props: Props) => {
({})
- // setSelectedFilters({
- // ...selectedFilters,
- // [filter.element.label]: el,
- // })
+ onChange={el =>
+ setSelectedFilters({
+ ...selectedFilters,
+ [filter.element.label]: el
+ .filter(
+ (checkboxFilter: any) =>
+ checkboxFilter.category ||
+ checkboxFilter.selectedChilds.length,
+ )
+ .map((checkboxFilter: any) =>
+ checkboxFilter.category
+ ? [
+ ...checkboxFilter.selectedChilds,
+ checkboxFilter.category,
+ ]
+ : checkboxFilter.selectedChilds,
+ )
+ .flat(),
+ })
}
/>
) : (
diff --git a/packages/core/src/components/Table/Table.tsx b/packages/core/src/components/Table/Table.tsx
index b728db900b..3605bc8e00 100644
--- a/packages/core/src/components/Table/Table.tsx
+++ b/packages/core/src/components/Table/Table.tsx
@@ -138,6 +138,7 @@ const useFilterStyles = makeStyles(() => ({
const useTableStyles = makeStyles(() => ({
root: {
display: 'flex',
+ alignItems: 'start',
},
}));
@@ -212,23 +213,20 @@ export function Table({
const getFieldByTitle = (titleValue: string | keyof T) =>
columns.find(el => el.title === titleValue)?.field;
-
- const onChangeFilters = (selectedFilters: any) => {
+ const onChangeFilters = (selectedFilters: any) => {
const selectedFiltersArray = Object.values(selectedFilters);
if (selectedFiltersArray.flat().length) {
const newData = (props.data as any[]).filter(
el =>
- !!Object.entries(selectedFilters).find(
- ([key, value]) => {
- if (Array.isArray(value)) {
- return value.includes(el[getFieldByTitle(key)])
- }
- return el[getFieldByTitle(key)] === value
- },
- ),
+ !!Object.entries(selectedFilters).find(([key, value]) => {
+ if (Array.isArray(value)) {
+ return value.includes(el[getFieldByTitle(key)]);
+ }
+ return el[getFieldByTitle(key)] === value;
+ }),
);
setTableData(newData);
- setSelectedFiltersLength(selectedFiltersArray.flat().length)
+ setSelectedFiltersLength(selectedFiltersArray.flat().length);
} else {
setTableData(props.data as any[]);
}
@@ -283,7 +281,9 @@ export function Table({
>
- Filters ({ selectedFiltersLength })
+
+ Filters ({selectedFiltersLength})
+