-
Notifications
You must be signed in to change notification settings - Fork 13.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(dashboard): Add divider component in native filters #17410
Changes from 5 commits
3192ce5
b110bab
1e3305a
5030c9f
554dc92
667c07e
e3161a2
76909f6
a67255b
ef76009
22ce71f
4f6c7b4
c9135ec
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -33,7 +33,10 @@ import { DataMaskStateWithId, DataMaskWithId } from 'src/dataMask/types'; | |
import { useImmer } from 'use-immer'; | ||
import { isEmpty, isEqual } from 'lodash'; | ||
import { testWithId } from 'src/utils/testUtils'; | ||
import { Filter } from 'src/dashboard/components/nativeFilters/types'; | ||
import { | ||
Filter, | ||
NativeFilterType, | ||
} from 'src/dashboard/components/nativeFilters/types'; | ||
import Loading from 'src/components/Loading'; | ||
import { getInitialDataMask } from 'src/dataMask/reducer'; | ||
import { URL_PARAMS } from 'src/constants'; | ||
|
@@ -320,7 +323,14 @@ const FilterBar: React.FC<FiltersBarProps> = ({ | |
activeKey={editFilterSetId ? TabIds.AllFilters : undefined} | ||
> | ||
<Tabs.TabPane | ||
tab={t(`All Filters (${filterValues.length})`)} | ||
tab={t( | ||
`All Filters (${ | ||
filterValues.filter( | ||
filterValue => | ||
filterValue.type === NativeFilterType.NATIVE_FILTER, | ||
).length | ||
})`, | ||
)} | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Can we move the filtering part in a const outside for the sake of readability? Also, the naming convention we adopted is |
||
key={TabIds.AllFilters} | ||
css={tabPaneStyle} | ||
> | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -26,7 +26,8 @@ const defaultProps = { | |
children: jest.fn(), | ||
getFilterTitle: (id: string) => id, | ||
onChange: jest.fn(), | ||
onEdit: jest.fn(), | ||
onAdd: jest.fn(), | ||
onRemove: jest.fn(), | ||
onRearrange: jest.fn(), | ||
restoreFilter: jest.fn(), | ||
currentFilterId: 'NATIVE_FILTER-1', | ||
|
@@ -93,22 +94,41 @@ test('remove filter', async () => { | |
}), | ||
); | ||
}); | ||
expect(defaultProps.onEdit).toHaveBeenCalledWith('NATIVE_FILTER-2', 'remove'); | ||
expect(defaultProps.onRemove).toHaveBeenCalledWith('NATIVE_FILTER-2'); | ||
}); | ||
|
||
test('add filter', async () => { | ||
defaultRender(); | ||
// First trash icon | ||
const removeFilterIcon = screen.getByText('Add filter')!; | ||
const addButton = screen.getByText('Add')!; | ||
fireEvent.mouseOver(addButton); | ||
const addFilterButton = await screen.findByText('Filter'); | ||
|
||
await act(async () => { | ||
fireEvent( | ||
removeFilterIcon, | ||
addFilterButton, | ||
new MouseEvent('click', { | ||
bubbles: true, | ||
cancelable: true, | ||
}), | ||
); | ||
}); | ||
expect(defaultProps.onAdd).toHaveBeenCalledWith('NATIVE_FILTER'); | ||
}); | ||
|
||
expect(defaultProps.onEdit).toHaveBeenCalledWith('', 'add'); | ||
test('add divider', async () => { | ||
defaultRender(); | ||
const addButton = screen.getByText('Add')!; | ||
fireEvent.mouseOver(addButton); | ||
const addFilterButton = await screen.findByText('Divider'); | ||
await act(async () => { | ||
fireEvent( | ||
addFilterButton, | ||
new MouseEvent('click', { | ||
bubbles: true, | ||
cancelable: true, | ||
}), | ||
); | ||
}); | ||
expect(defaultProps.onAdd).toHaveBeenCalledWith('DIVIDER'); | ||
}); | ||
Comment on lines
+119
to
134
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Is it possible to use the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
i'm very sad that the if statement above didn't guarantee that the typing is correct :( perhaps it's safer to do
'title' in filter && filter.title
here instead?