@@ -10,12 +10,18 @@ import { FormattedMessage, useIntl } from '@edx/frontend-platform/i18n';
1010import messages from './messages' ;
1111import SearchFilterWidget from './SearchFilterWidget' ;
1212import { useSearchContext } from './SearchManager' ;
13- import { PublishStatus } from './data/api' ;
13+ import { allPublishFilters , PublishStatus } from './data/api' ;
14+
15+ interface FilterByPublishedProps {
16+ visibleFilters ?: PublishStatus [ ] ,
17+ }
1418
1519/**
1620 * A button with a dropdown that allows filtering the current search by publish status
1721 */
18- const FilterByPublished : React . FC < Record < never , never > > = ( ) => {
22+ const FilterByPublished = ( {
23+ visibleFilters = allPublishFilters ,
24+ } : FilterByPublishedProps ) => {
1925 const intl = useIntl ( ) ;
2026 const {
2127 publishStatus,
@@ -42,6 +48,26 @@ const FilterByPublished: React.FC<Record<never, never>> = () => {
4248 } ;
4349 const appliedFilters = publishStatusFilter . map ( mode => ( { label : modeToLabel [ mode ] } ) ) ;
4450
51+ const filterLabels = {
52+ [ PublishStatus . Published ] : intl . formatMessage ( messages . publishStatusPublished ) ,
53+ [ PublishStatus . Modified ] : intl . formatMessage ( messages . publishStatusModified ) ,
54+ [ PublishStatus . NeverPublished ] : intl . formatMessage ( messages . publishStatusNeverPublished ) ,
55+ } ;
56+
57+ const visibleFiltersToRender = visibleFilters . map ( ( filter ) => (
58+ < MenuItem
59+ key = { filter }
60+ as = { Form . Checkbox }
61+ value = { filter }
62+ onChange = { ( ) => { toggleFilterMode ( filter ) ; } }
63+ >
64+ < div >
65+ { filterLabels [ filter ] }
66+ < Badge variant = "light" pill > { publishStatus [ filter ] ?? 0 } </ Badge >
67+ </ div >
68+ </ MenuItem >
69+ ) ) ;
70+
4571 return (
4672 < SearchFilterWidget
4773 appliedFilters = { appliedFilters }
@@ -55,36 +81,7 @@ const FilterByPublished: React.FC<Record<never, never>> = () => {
5581 value = { publishStatusFilter }
5682 >
5783 < Menu className = "block-type-refinement-menu" style = { { boxShadow : 'none' } } >
58- < MenuItem
59- as = { Form . Checkbox }
60- value = { PublishStatus . Published }
61- onChange = { ( ) => { toggleFilterMode ( PublishStatus . Published ) ; } }
62- >
63- < div >
64- { intl . formatMessage ( messages . publishStatusPublished ) }
65- < Badge variant = "light" pill > { publishStatus [ PublishStatus . Published ] ?? 0 } </ Badge >
66- </ div >
67- </ MenuItem >
68- < MenuItem
69- as = { Form . Checkbox }
70- value = { PublishStatus . Modified }
71- onChange = { ( ) => { toggleFilterMode ( PublishStatus . Modified ) ; } }
72- >
73- < div >
74- { intl . formatMessage ( messages . publishStatusModified ) }
75- < Badge variant = "light" pill > { publishStatus [ PublishStatus . Modified ] ?? 0 } </ Badge >
76- </ div >
77- </ MenuItem >
78- < MenuItem
79- as = { Form . Checkbox }
80- value = { PublishStatus . NeverPublished }
81- onChange = { ( ) => { toggleFilterMode ( PublishStatus . NeverPublished ) ; } }
82- >
83- < div >
84- { intl . formatMessage ( messages . publishStatusNeverPublished ) }
85- < Badge variant = "light" pill > { publishStatus [ PublishStatus . NeverPublished ] ?? 0 } </ Badge >
86- </ div >
87- </ MenuItem >
84+ { visibleFiltersToRender }
8885 </ Menu >
8986 </ Form . CheckboxSet >
9087 </ Form . Group >
0 commit comments