diff --git a/web/calendar/calendar.react.js b/web/calendar/calendar.react.js
--- a/web/calendar/calendar.react.js
+++ b/web/calendar/calendar.react.js
@@ -166,7 +166,7 @@
let calendarContentStyle = null;
let filterButtonStyle = null;
if (this.state.filterPanelOpen) {
- filterPanel = ;
+ filterPanel = ;
calendarContentStyle = { marginLeft: '300px' };
filterButtonStyle = { backgroundColor: 'rgba(0,0,0,0.67)' };
}
diff --git a/web/calendar/filter-panel.react.js b/web/calendar/filter-panel.react.js
--- a/web/calendar/filter-panel.react.js
+++ b/web/calendar/filter-panel.react.js
@@ -8,6 +8,7 @@
} from '@fortawesome/free-solid-svg-icons';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import classNames from 'classnames';
+import invariant from 'invariant';
import * as React from 'react';
import { useDispatch } from 'react-redux';
import Switch from 'react-switch';
@@ -26,6 +27,7 @@
} from 'lib/types/filter-types';
import type { Dispatch } from 'lib/types/redux-types';
+import { ModalContext } from '../modals/modal-provider.react';
import ThreadSettingsModal from '../modals/threads/thread-settings-modal.react';
import { useSelector } from '../redux/redux-utils';
import {
@@ -35,16 +37,13 @@
import { MagnifyingGlass } from '../vectors.react';
import css from './filter-panel.css';
-type BaseProps = {
- +setModal: (modal: ?React.Node) => void,
-};
type Props = {
- ...BaseProps,
+filterThreadInfos: () => $ReadOnlyArray,
+filterThreadSearchIndex: () => SearchIndex,
+filteredThreadIDs: ?$ReadOnlySet,
+includeDeleted: boolean,
+dispatch: Dispatch,
+ +setModal: (modal: ?React.Node) => void,
};
type State = {
+query: string,
@@ -363,25 +362,25 @@
};
}
-const ConnectedFilterPanel: React.ComponentType = React.memo(
- function ConnectedFilterPanel(props) {
- const filteredThreadIDs = useSelector(filteredThreadIDsSelector);
- const filterThreadInfos = useSelector(webFilterThreadInfos);
- const filterThreadSearchIndex = useSelector(webFilterThreadSearchIndex);
- const includeDeleted = useSelector(includeDeletedSelector);
- const dispatch = useDispatch();
+function ConnectedFilterPanel(): React.Node {
+ const filteredThreadIDs = useSelector(filteredThreadIDsSelector);
+ const filterThreadInfos = useSelector(webFilterThreadInfos);
+ const filterThreadSearchIndex = useSelector(webFilterThreadSearchIndex);
+ const includeDeleted = useSelector(includeDeletedSelector);
+ const dispatch = useDispatch();
+ const modalContext = React.useContext(ModalContext);
+ invariant(modalContext, 'modalContext should be set');
- return (
-
- );
- },
-);
+ return (
+
+ );
+}
export default ConnectedFilterPanel;