Skip to content
Snippets Groups Projects
ToolGroupComponent.js 959 B
Newer Older
Yannis Barlas's avatar
Yannis Barlas committed
import React from 'react';
Yannis Barlas's avatar
Yannis Barlas committed
import { isFunction } from 'lodash';
import styled from 'styled-components';
Yannis Barlas's avatar
Yannis Barlas committed
import Dropdown from '../ui/buttons/Dropdown';

const Wrapper = styled.div`
  display: inline-flex;
  align-items: center;
  padding: 0 4px;
Yannis Barlas's avatar
Yannis Barlas committed
  > button,
  > div {
    margin: 0 2px;
chris's avatar
chris committed
  }
chris's avatar
chris committed

Yannis Barlas's avatar
Yannis Barlas committed
const DropWrapper = styled(Wrapper)`
  border: 1px solid gray;
  padding: 4px;
chris's avatar
chris committed
`;

const ToolGroupComponent = ({ view, tools, name }) => {
Yannis Barlas's avatar
Yannis Barlas committed
  const toolsShown = [];
  const rest = [];
chris's avatar
chris committed

  tools.forEach(tool => {
chris's avatar
chris committed
    tool.isIntoMoreSection() && tool.isDisplayed()
chris's avatar
chris committed
      ? rest.push(tool.renderTool(view))
      : toolsShown.push(tool.renderTool(view));
  });

  return (
Yannis Barlas's avatar
Yannis Barlas committed
    <Wrapper data-name={name}>
chris's avatar
chris committed
      {toolsShown}
Yannis Barlas's avatar
Yannis Barlas committed
      {rest.length > 0 && (
        <Dropdown
          iconName="more"
          dropComponent={<DropWrapper>{rest}</DropWrapper>}
          title="Show more tools"
        />
chris's avatar
chris committed
      )}
Yannis Barlas's avatar
Yannis Barlas committed
    </Wrapper>
chris's avatar
chris committed
  );
};

export default ToolGroupComponent;