UNPKG

@salesforce/design-system-react

Version:

Salesforce Lightning Design System for React

165 lines (152 loc) 4.23 kB
import React from 'react'; import { action } from '@storybook/addon-actions'; import DataTable from '~/components/data-table'; // `~` is replaced with design-system-react at runtime import DataTableColumn from '~/components/data-table/column'; import DataTableCell from '~/components/data-table/cell'; import DataTableInteractiveElement from '~/components/data-table/interactive-element'; import DataTableInteractiveLink from '~/components/data-table/interactive-link'; import IconSettings from '~/components/icon-settings'; import Button from '~/components/button'; import Checkbox from '~/components/checkbox'; const InteractiveButton = DataTableInteractiveElement(Button); const InteractiveCheckBox = DataTableInteractiveElement(Checkbox); const CustomDataTableCell = ({ id, children, ...props }) => { const cell = ( <DataTableCell {...props}> <InteractiveCheckBox id={`${id}-checkbox`} labels={{ label: 'Option' }} /> <InteractiveButton onClick={action('button clicked')} label="Open" /> <div> <DataTableInteractiveLink onClick={action('link clicked')}> Click me </DataTableInteractiveLink> </div> </DataTableCell> ); return cell; }; CustomDataTableCell.displayName = DataTableCell.displayName; const columns = [ <DataTableColumn key="opportunity" label="Opportunity Name" property="opportunityName" primaryColumn > <CustomDataTableCell /> </DataTableColumn>, <DataTableColumn key="account-name" label="Account Name" property="accountName" />, <DataTableColumn key="amount" label="Amount" property="amount" />, <DataTableColumn key="contact" label="Contact" property="contact"> <CustomDataTableCell /> </DataTableColumn>, ]; class Example extends React.Component { static displayName = 'DataTableExample'; state = { items: [ { id: '8IKZHZZV80', opportunityName: 'Cloudhub', accountName: 'Cloudhub', closeDate: '4/14/2015', stage: 'Prospecting', confidence: '20%', amount: '$25k', contact: 'jrogers@cloudhub.com', }, { id: '5GJOOOPWU7', opportunityName: 'Cloudhub + Anypoint Connectors', accountName: 'Cloudhub', closeDate: '4/14/2015', stage: 'Prospecting', confidence: '20%', amount: '$25k', contact: 'jrogers@cloudhub.com', }, { id: '8IKZHZZV81', opportunityName: 'Cloudhub', accountName: 'Cloudhub', closeDate: '4/14/2015', stage: 'Prospecting', confidence: '20%', amount: '$25k', contact: 'jrogers@cloudhub.com', }, ], }; render() { return ( <IconSettings iconPath="/assets/icons"> <div style={{ overflow: 'auto' }}> <h3 className="slds-text-heading_medium slds-m-vertical_medium"> Default Fluid Layout </h3> <DataTable items={this.state.items} id="DataTableExample-1-default" fixedLayout keyboardNavigation > {columns} </DataTable> <h3 className="slds-text-heading_medium slds-m-vertical_medium"> Striped </h3> <DataTable items={this.state.items} id="DataTableExample-1-striped" striped fixedLayout keyboardNavigation > {columns} </DataTable> <h3 className="slds-text-heading_medium slds-m-vertical_medium"> No Row Hover </h3> <DataTable items={this.state.items} id="DataTableExample-noRowHover" noRowHover fixedLayout keyboardNavigation > {columns} </DataTable> <h3 className="slds-text-heading_medium slds-m-vertical_medium"> Column Bordered </h3> <DataTable columnBordered items={this.state.items} id="DataTableExample-columnBordered" fixedLayout keyboardNavigation > {columns} </DataTable> <h3 className="slds-text-heading_medium slds-m-vertical_medium"> Resizable columns </h3> <DataTable items={this.state.items} id="DataTableExample-column-resizable" fixedLayout fixedHeader resizable keyboardNavigation > {columns} </DataTable> </div> </IconSettings> ); } } export default Example; // export is replaced with `ReactDOM.render(<Example />, mountNode);` at runtime