Skip to content

Instantly share code, notes, and snippets.

@birox
Created June 19, 2019 07:54
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save birox/0eb7332478dcb314508f6a6ba2c5b931 to your computer and use it in GitHub Desktop.
Save birox/0eb7332478dcb314508f6a6ba2c5b931 to your computer and use it in GitHub Desktop.
Example dropdown state
import React from 'react';
import _ from 'lodash';
import styled from 'styled-components';
import Dropdown, { DropdownItem, DropdownItemGroup } from '@atlaskit/dropdown-menu';
import Avatar from '@atlaskit/avatar';
const NameWrapper = styled.span`
display: flex;
align-items: center;
`;
const AvatarWrapper = styled.div`
margin-right: 8px;
`;
const projects = [
{id: 1, name: 'Project 1', avatar: 'https://randomuser.me/api/portraits/men/7.jpg'},
{id: 2, name: 'Project 2', avatar: 'https://randomuser.me/api/portraits/men/72.jpg'},
{id: 3, name: 'Project 3', avatar: 'https://randomuser.me/api/portraits/women/31.jpg'},
];
class ImportProjects extends React.Component {
constructor(props) {
super(props);
this.state = {
selectedProject: null
};
}
setProject = (project) => {
this.setState({
selectedProject: project,
})
}
render() {
const {
selectedProject
} = this.state;
return (
<div>
<Dropdown triggerType="button" trigger="Import Jira Projects">
<DropdownItemGroup title="Jira Projects">
{_.each([], project => (
<DropdownItem
key={project.id}
elemBefore={<Avatar size="small" name={project.name} src={project.avatar} />}
onClick={() => this.setProject(project)}
>
{project.name}
</DropdownItem>
))}
</DropdownItemGroup>
</Dropdown>
<DynamicTable
rows={[
{
key: selectedProject.id,
cells: [
{
key: selectedProject.id,
content: (
<NameWrapper>
<AvatarWrapper>
<Avatar
name={selectedProject.name}
size="medium"
src={selectedProject.avatar}
/>
</AvatarWrapper>
<span>{selectedProject.name}</span>
</NameWrapper>
),
},
]
}
]}
head={head}
isRankable
isFixedSize
onRankEnd={this.changeProjectOrder}
sortKey="sort"
/>
</div>
);
}
}
export default compose(
graphql(addProjectMutation, { name: 'addProject' }),
graphql(updateProjectMutation, { name: 'updateProject' }),
graphql(removeProjectMutation, { name: 'removeProject' }),
)(ImportProjects);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment