// @flow import { observable } from "mobx"; import { inject, observer } from "mobx-react"; import * as React from "react"; import { withRouter, type RouterHistory } from "react-router-dom"; import PoliciesStore from "stores/PoliciesStore"; import UiStore from "stores/UiStore"; import Group from "models/Group"; import GroupDelete from "scenes/GroupDelete"; import GroupEdit from "scenes/GroupEdit"; import { DropdownMenu, DropdownMenuItem } from "components/DropdownMenu"; import Modal from "components/Modal"; type Props = { ui: UiStore, policies: PoliciesStore, group: Group, history: RouterHistory, onMembers: () => void, onOpen?: () => void, onClose?: () => void, }; @observer class GroupMenu extends React.Component { @observable editModalOpen: boolean = false; @observable deleteModalOpen: boolean = false; onEdit = (ev: SyntheticEvent<>) => { ev.preventDefault(); this.editModalOpen = true; }; onDelete = (ev: SyntheticEvent<>) => { ev.preventDefault(); this.deleteModalOpen = true; }; handleEditModalClose = () => { this.editModalOpen = false; }; handleDeleteModalClose = () => { this.deleteModalOpen = false; }; render() { const { policies, group, onOpen, onClose } = this.props; const can = policies.abilities(group.id); return ( <> {group && ( <> Members… {(can.update || can.delete) &&
} {can.update && ( Edit… )} {can.delete && ( Delete… )} )}
); } } export default inject("policies")(withRouter(GroupMenu));