import * as React from 'react'; import _ from 'lodash'; import classNames from 'classnames'; import { RootCloseWrapper } from 'react-overlays'; import { Dropdown } from 'react-bootstrap'; import { observer } from 'mobx-react'; import { action, observable, makeObservable } from 'mobx'; import { ICON_FILTER_OFF } from 'shared/lib/Colors'; export interface IFilterIconModalProps { id: string; filterIsActive: boolean; deactivateFilter: () => void; setupFilter: () => void; menuComponent?: JSX.Element; } class FilterIcon extends React.Component { render() { return ( ); } } class FilterMenu extends React.Component { @observable private pullRight: boolean = false; componentDidUpdate() { const rect = document .getElementById(this.props.id)! .getBoundingClientRect(); if (rect.right > window.innerWidth) { this.pullRight = true; } let yOffset = 0; const height = window.innerHeight; if (rect.bottom > height) { yOffset = rect.bottom - height + 15; } window.scroll(window.scrollX, window.scrollY + yOffset); } render() { return (
{this.props.id}
{this.props.menuComponent}
); } } @observer export default class FilterIconModal extends React.Component< IFilterIconModalProps, {} > { @observable private isOpen: boolean = false; constructor(props: IFilterIconModalProps) { super(props); makeObservable(this); } @action.bound private hide() { this.isOpen = false; } @action.bound private onClickRemove() { this.isOpen = false; this.props.deactivateFilter(); } @action.bound private onClickFilter() { this.isOpen = !this.isOpen; if (!this.props.filterIsActive) { this.props.setupFilter(); } } render() { return ( ); } }