@salesforce/design-system-react
Version:
Salesforce Lightning Design System for React
121 lines (109 loc) • 3.07 kB
JSX
/* eslint-disable react/display-name */
/* eslint-disable no-script-url */
import React from 'react';
import { storiesOf } from '@storybook/react';
import { action } from '@storybook/addon-actions';
import IconSettings from '../../icon-settings';
import { POPOVER } from '../../../utilities/constants';
import Header from '../__examples__/header';
import AlternativeHeader from '../__examples__/alternative-header';
import ControlledWithFooter from '../__examples__/controlled-with-footer';
import Popover from '../../popover';
import Button from '../../button';
const getPopover = (props) => (
<div>
<Popover {...props}>
<Button label="Trigger Popover" />
</Popover>
</div>
);
const getPopoverNubbins = (props) => {
/* eslint-disable react/prop-types */
const children = [];
const align = [
'top',
'top left',
'top right',
'right',
'bottom',
'bottom left',
'bottom right',
'left'
];
align.forEach((value) => {
children.push(
<div key={value} style={{ margin: '150px auto' }}>
<Popover
align={value}
assistiveText="This is a popover."
body="Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."
hasStaticAlignment
heading="My Popover"
isOpen
position="overflowBoundaryElement"
{...props}
>
{props.trigger}
</Popover>
</div>
);
});
return <div key="container">{children}</div>;
};
const bodyContent =
'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.';
const popoverBackgroundColor = 'rgb(255, 80, 121)';
const containerBackgroundColor = 'rgb(255, 127, 80)';
storiesOf(POPOVER, module)
.addDecorator((getStory) => (
<div
className="slds-p-around--medium slds-m-horizontal--x-large"
style={{
margin: '300px auto',
textAlign: 'center',
width: '500px'
}}
>
<IconSettings iconPath="/assets/icons">{getStory()}</IconSettings>
</div>
))
.add('Header', () => <Header />)
.add('Controlled w/ Footer', () => <ControlledWithFooter log={action} />)
.add('AlternativeHeader', () => <AlternativeHeader />)
.add('Alignment (Button)', () =>
getPopoverNubbins({
trigger: <Button label="Trigger Popover" tabIndex="0" />
})
)
.add('Alignment (ButtonIcon)', () =>
getPopoverNubbins({
body: bodyContent,
hasStaticAlignment: true,
heading: 'My Popover',
id: 'myPopoverId',
isOpen: true,
trigger: (
<Button
assistiveText="Case Icon"
iconCategory="utility"
iconName="filter"
iconSize="small"
iconVariant="border"
variant="icon"
/>
)
})
)
.add('Styling (dev-only)', () =>
getPopover({
body: bodyContent,
heading: 'My Popover',
id: 'myPopoverId',
isOpen: true,
className: 'sample-classname',
closeButtonAssistiveText: 'Shut it now!',
containerClassName: 'sample-container-classname',
containerStyle: { background: containerBackgroundColor },
style: { background: popoverBackgroundColor }
})
);