import _ from 'lodash'; import React, { useState } from 'react'; import createClass from 'create-react-class'; import { Meta, Story } from '@storybook/react'; import Button from '../Button/Button'; import ContextMenu, { IContextMenuProps } from './ContextMenu'; import SingleSelect from '../SingleSelect/SingleSelect'; import TextField from '../TextField/TextField'; export default { title: 'Utility/ContextMenu', component: ContextMenu, parameters: { docs: { description: { component: (ContextMenu as any).peek.description, }, }, }, } as Meta; enum EnumDirection { up = 'up', down = 'down', left = 'left', right = 'right', } /* Basic */ export const Basic: Story = (args) => { const Component = createClass({ render() { return ( FlyOut ); }, }); return ; }; /* Basic With Text */ export const BasicWithText: Story = (args) => { return (
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam eget tempor mi. Curabitur eget risus ac diam euismod ultricies ac in est. Morbi in vehicula arcu, at laoreet libero. Phasellus nisi dolor, porta et erat quis, egestas mattis purus. FlyOut Sed vel ex iaculis, tincidunt magna in, fringilla urna. Aenean congue est nec elit molestie, nec mollis mi rutrum. Quisque hendrerit nisl placerat tempus sodales. Vivamus et tortor vulputate, elementum turpis tempor, condimentum sapien. Nunc ac imperdiet ipsum, vitae ullamcorper sem.
); }; /* Menu Bar */ export const MenuBar: Story = (args) => { const [isFileExpanded, setIsFileExpanded] = useState(false); const [fileDirection, setFileDirection] = useState('down'); const [isEditExpanded, setIsEditExpanded] = useState(false); const [editDirection, setEditDirection] = useState('down'); const handleFileMenuToggle = () => { setIsFileExpanded(!isFileExpanded); }; const handleEditMenuToggle = () => { setIsEditExpanded(!isEditExpanded); }; return (
File
New Window
New File
Open...
Add Folder...
Reopen Last Item

Save
Save As...
Save All

Close Tab
Close Pane
Close Window
Edit
Undo
Redo

Cut
Copy
Paste
Select All
); }; MenuBar.storyName = 'MenuBar'; /* Directions Interactive */ export const DirectionsInteractive: Story = (args) => { const { CENTER, DOWN, END, LEFT, RIGHT, START, UP } = ContextMenu; const [direction, setDirection] = useState('up'); const [directonOffset, setDirectionOffset] = useState('0'); const [alignment, setAlignment] = useState('start'); const [alignmentOffset, setAlignmentOffset] = useState('0'); const [getAlignmentOffset, setGetAlignmentOffset] = useState(() => { return undefined; }); const style = { background: 'white', boxShadow: '1px 1px 4px black', padding: 4, }; const directions = [UP, DOWN, LEFT, RIGHT]; const alignments = [START, CENTER, END]; return (
setDirection(directions[i as any] as any)} > Select a direction {_.map(directions, (direction) => ( {direction} ))} directonOffset: setDirectionOffset(directonOffset)} /> setAlignment(alignments[i as any] as any)} > Select an alignment {_.map(alignments, (alignment) => ( {alignment} ))} alignmentOffset: setAlignmentOffset(alignmentOffset)} /> getAlignmentOffset: {}} /> {getAlignmentOffset || null}
Target
{`direction: ${direction || 'default'}`}
{`directonOffset: ${directonOffset || 'default'}`}
{`alignment: ${alignment || 'default'}`}
{`alignmentOffset: ${alignmentOffset || 'default'}`}
{`getAlignmentOffset: ${ getAlignmentOffset || 'default' }`}
); }; /* Directions Static */ export const DirectionsStatic: Story = (args) => { const { CENTER, DOWN, END, LEFT, RIGHT, START, UP } = ContextMenu; const directions = [UP, DOWN, LEFT, RIGHT]; const alignments = [START, CENTER, END]; const style = { background: 'white', boxShadow: '1px 1px 4px black', padding: 4, }; return (
{_.map(directions, (direction) => { return (
{_.map(alignments, (alignment) => _.map([0, 15, -15], (directonOffset) => _.map([0, 15, -15], (alignmentOffset) => (
Target
{`direction: ${direction}`}
{`directonOffset: ${directonOffset}`}
{`alignment: ${alignment}`}
{`alignmentOffset: ${alignmentOffset}`}
)) ) )}
); })}
); };