Skip to content
Snippets Groups Projects
CreateTable.js 1.03 KiB
Newer Older
chris's avatar
chris committed
import React, { useState, useContext } from 'react';
import { WaxContext } from 'wax-prosemirror-core';
Yannis Barlas's avatar
Yannis Barlas committed

import Dropdown from '../../ui/buttons/Dropdown';
chris's avatar
chris committed
import InsertTableTool from '../../ui/tables/InsertTableTool';

const CreateTable = ({ view = {}, item }) => {
  const {
    view: { main },
    activeViewId,
chris's avatar
chris committed
  } = useContext(WaxContext);
  if (item.onlyOnMain) {
    view = main;
  }

  const [showTool, setShowTool] = useState(false);
  const toggleShowTool = () => setShowTool(!showTool);

chris's avatar
chris committed
  const { state, dispatch } = view;
  const { enable, icon, run, select, title } = item;

  const dropComponent = (
    <InsertTableTool
      onGridSelect={colRows => {
        run(colRows, state, dispatch);
      }}
    />
  );
chris's avatar
chris committed

  const isDisabled =
    enable && !enable(state) && !(select && select(state, activeViewId));
Yannis Barlas's avatar
Yannis Barlas committed

  return (
    <Dropdown
      active={showTool}
      dropComponent={dropComponent}
      iconName={icon}
      disabled={isDisabled}
      onClick={toggleShowTool}
      title={title}
Yannis Barlas's avatar
Yannis Barlas committed
    />
chris's avatar
chris committed
  );
};

export default CreateTable;