fix: Keyboard accessible context menus (#1768)
- Makes menus fully accessible and keyboard driven - Currently adds 2.8% to initial bundle size due to the inclusion of Reakit and its dependency, popperjs. - Converts all menus to functional components - Remove old custom menu system - Various layout and flow improvements around the menus closes #1766
This commit is contained in:
@@ -1,28 +1,21 @@
|
||||
// @flow
|
||||
import * as React from "react";
|
||||
import GroupMembership from "models/GroupMembership";
|
||||
import User from "models/User";
|
||||
import Avatar from "components/Avatar";
|
||||
import Badge from "components/Badge";
|
||||
import Button from "components/Button";
|
||||
import { DropdownMenu, DropdownMenuItem } from "components/DropdownMenu";
|
||||
import Flex from "components/Flex";
|
||||
import ListItem from "components/List/Item";
|
||||
import Time from "components/Time";
|
||||
import GroupMemberMenu from "menus/GroupMemberMenu";
|
||||
|
||||
type Props = {
|
||||
type Props = {|
|
||||
user: User,
|
||||
groupMembership?: ?GroupMembership,
|
||||
onAdd?: () => Promise<void>,
|
||||
onRemove?: () => Promise<void>,
|
||||
};
|
||||
|};
|
||||
|
||||
const GroupMemberListItem = ({
|
||||
user,
|
||||
groupMembership,
|
||||
onRemove,
|
||||
onAdd,
|
||||
}: Props) => {
|
||||
const GroupMemberListItem = ({ user, onRemove, onAdd }: Props) => {
|
||||
return (
|
||||
<ListItem
|
||||
title={user.name}
|
||||
@@ -42,11 +35,7 @@ const GroupMemberListItem = ({
|
||||
image={<Avatar src={user.avatarUrl} size={40} />}
|
||||
actions={
|
||||
<Flex align="center">
|
||||
{onRemove && (
|
||||
<DropdownMenu>
|
||||
<DropdownMenuItem onClick={onRemove}>Remove</DropdownMenuItem>
|
||||
</DropdownMenu>
|
||||
)}
|
||||
{onRemove && <GroupMemberMenu onRemove={onRemove} />}
|
||||
{onAdd && (
|
||||
<Button onClick={onAdd} neutral>
|
||||
Add
|
||||
|
||||
Reference in New Issue
Block a user