UNPKG

@salesforce/design-system-react

Version:

Salesforce Lightning Design System for React

231 lines (225 loc) 5.93 kB
import React from 'react'; import { storiesOf, action } from '@storybook/react'; import IconSettings from '../../../icon-settings'; import { FORMS_INPUT } from '../../../../utilities/constants'; import Button from '../../../button'; import Input from '../'; import InputIcon from '../../../icon/input-icon'; const iconClicked = action; const clearIcon = ( <InputIcon assistiveText="clear" name="clear" category="utility" /> ); const clearIconClickable = ( <InputIcon assistiveText="clear" name="clear" category="utility" onClick={iconClicked('Clear icon clicked')} /> ); const searchIcon = <InputIcon name="search" category="utility" />; const searchIconClickable = ( <InputIcon assistiveText="Search" name="search" category="utility" onClick={iconClicked('Search icon clicked')} /> ); storiesOf(FORMS_INPUT, module) .addDecorator((getStory) => ( <div className="slds-p-around--medium"> <IconSettings iconPath="/assets/icons">{getStory()}</IconSettings> </div> )) .add('Base', () => ( <section> <ol> <li className="slds-p-bottom--large"> <h1 className="slds-text-title_caps slds-p-vertical--medium"> 1. Base Input with visible label </h1> <Input id="base-id" label="My Label" placeholder="My placeholder" /> </li> <li className="slds-p-bottom--large"> <h1 className="slds-text-title_caps slds-p-vertical--medium"> 2. Base Input with hidden label (assistive text) </h1> <Input assistiveText={{ label: 'My label' }} id="assistiveLabel-id" placeholder="My placeholder" /> </li> </ol> </section> )) .add('Base with Icons', () => ( <section> <ol> <li className="slds-p-bottom--large"> <h1 className="slds-text-title_caps slds-p-vertical--medium"> 1. Base Input with left icon </h1> <Input id="with-left-icon" label="My label" iconLeft={searchIcon} placeholder="My placeholder" /> </li> <li className="slds-p-bottom--large"> <h1 className="slds-text-title_caps slds-p-vertical--medium"> 2. Base Input with Clickable left icon </h1> <Input id="with-left-clickable-icon" label="My Label" iconLeft={searchIconClickable} placeholder="My placeholder" /> </li> <li className="slds-p-bottom--large"> <h1 className="slds-text-title_caps slds-p-vertical--medium"> 3. Base Input with right icon </h1> <Input id="with-right-icon" label="My Label" iconRight={searchIcon} placeholder="My placeholder" /> </li> <li className="slds-p-bottom--large"> <h1 className="slds-text-title_caps slds-p-vertical--medium"> 4. Base Input with Clickable right icon </h1> <Input id="with-right-clickable-icon" label="My Label" iconRight={clearIconClickable} placeholder="My placeholder" /> </li> <li className="slds-p-bottom--large"> <h1 className="slds-text-title_caps slds-p-vertical--medium"> 5. Base Input with left and right icons </h1> <Input label="My Label" iconLeft={searchIcon} iconRight={clearIcon} placeholder="My placeholder" /> </li> <li className="slds-p-bottom--large"> <h1 className="slds-text-title_caps slds-p-vertical--medium"> 6. Base Input with Clickable left and right icon </h1> <Input label="My label" iconLeft={searchIconClickable} iconRight={clearIcon} placeholder="My placeholder" /> </li> <li className="slds-p-bottom--large"> <h1 className="slds-text-title_caps slds-p-vertical--medium"> 7. Base Input with left and clickable right icon </h1> <Input label="My Label" iconLeft={searchIcon} iconRight={clearIconClickable} placeholder="My placeholder" /> </li> <li className="slds-p-bottom--large"> <h1 className="slds-text-title_caps slds-p-vertical--medium"> 8. Base Input with left, clickable right icon, and loading spinner </h1> <Input assistiveText={{ spinner: 'Field data is loading' }} hasSpinner iconLeft={searchIcon} iconRight={clearIconClickable} label="My Label" name="right-clickable-icon" placeholder="My placeholder" /> </li> </ol> </section> )) .add('Fixed Text', () => ( <section> <h1 className="slds-text-title_caps slds-p-vertical--medium"> Input with Fixed Text </h1> <Input assistiveText={{ label: 'My Label' }} name="fixed-text" label="My Label" fixedTextLeft="$" placeholder="My placeholder" /> </section> )) .add('Read Only', () => ( <section> <h1 className="slds-text-title_caps slds-p-vertical--medium"> Read only Input </h1> <Input name="read-only" label="My Label" readOnly value="Read Only Value" /> </section> )) .add('Static Input', () => ( <section> <h1 className="slds-text-title_caps slds-p-vertical--medium"> Static Input </h1> <Input name="static-input" label="My Label" isStatic value="Static value" /> </section> )) .add('Disabled Input', () => ( <section> <h1 className="slds-text-title_caps slds-p-vertical--medium"> Disabled Input </h1> <Input name="disabled-input" label="My Label" disabled value="Disabled value" /> </section> )) .add('Required Input in Error State', () => ( <section> <h1 className="slds-text-title_caps slds-p-vertical--medium"> Example Button </h1> <Button label="Test" /> <h1 className="slds-text-title_caps slds-p-vertical--medium"> Required Input with Error </h1> <Input aria-describedby="error-1" name="required-input-error" label="My Label" required errorText="This field is required." placeholder="My placeholder" /> </section> ));