Skip to content
Snippets Groups Projects
DropDownComponent.js 1.53 KiB
Newer Older
chris's avatar
chris committed
/* eslint-disable no-underscore-dangle */
import React, { useContext, useMemo, useEffect, useState } from 'react';
import styled from 'styled-components';
import { WaxContext } from 'wax-prosemirror-core';
import { ReactDropDownStyles } from 'wax-prosemirror-components';
import Dropdown from 'react-dropdown';
import { v4 as uuidv4 } from 'uuid';

const Wrapper = styled.div`
  ${ReactDropDownStyles};
`;
const DropdownStyled = styled(Dropdown)`
  display: inline-flex;
  cursor: not-allowed;
chris's avatar
chris committed
  margin-left: auto;
chris's avatar
chris committed
  opacity: ${props => (props.select ? 1 : 0.4)};
  pointer-events: ${props => (props.select ? 'default' : 'none')};
  .Dropdown-control {
    border: none;
    padding: 8px 30px 8px 10px;

    &:hover {
      box-shadow: none;
    }
  }

  .Dropdown-arrow {
    top: 17px;
  }

  .Dropdown-menu {
chris's avatar
chris committed
    width: 102%;
chris's avatar
chris committed
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    .Dropdown-option {
chris's avatar
chris committed
      width: 100%;
chris's avatar
chris committed
    }
  }
`;

chris's avatar
chris committed
const DropComponent = ({ getPos, node, view }) => {
chris's avatar
chris committed
  const context = useContext(WaxContext);
  const {
    pmViews: { main },
  } = context;

  const onChange = option => {};

  const MultipleDropDown = useMemo(
    () => (
      <Wrapper key={uuidv4()}>
        <DropdownStyled
          key={uuidv4()}
          onChange={option => onChange(option)}
chris's avatar
chris committed
          options={node.attrs.options}
chris's avatar
chris committed
          placeholder="Select option"
chris's avatar
chris committed
          select
chris's avatar
chris committed
          value="Select option"
chris's avatar
chris committed
        />
      </Wrapper>
    ),
chris's avatar
chris committed
    [node.attrs.options],
chris's avatar
chris committed
  );

  return MultipleDropDown;
};

export default DropComponent;