| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306 |
- import React, { useState } from 'react';
- import { Form } from '../../form';
- import Radio from '../../radio';
- import Step from '../step';
- import Steps from '../index';
- import Icon from '../../icons';
- import Button from '../../button';
- import { IconTriangleDown, IconClear, IconTick, IconClose, IconBell } from '@douyinfe/semi-icons';
- export default {
- title: 'Steps'
- }
- const sizes = ['default', 'small'];
- const AllSteps = () => {
- const [stepProps, setProps] = useState({
- type: 'basic',
- size: 'small',
- current: 0,
- hasLine: true,
- direction: 'horizontal',
- initial: 0,
- status: 'finish',
- });
- return (
- <>
- <Form
- layout="vertical"
- labelPosition="left"
- onValueChange={v => setProps({ ...v })}
- initValues={stepProps}
- >
- <Form.RadioGroup field="type">
- <Radio value="fill">fill</Radio>
- <Radio value="basic">basic</Radio>
- <Radio value="nav">nav</Radio>
- </Form.RadioGroup>
- <Form.RadioGroup field="size">
- <Radio value="small">small</Radio>
- <Radio value="default">default</Radio>
- </Form.RadioGroup>
- <Form.RadioGroup field="hasLine">
- <Radio value={true}>true</Radio>
- <Radio value={false}>false</Radio>
- </Form.RadioGroup>
- <Form.InputNumber field="current"></Form.InputNumber>
- <Form.RadioGroup field="direction">
- <Radio value="horizontal">horizontal</Radio>
- <Radio value="vertical">vertical</Radio>
- </Form.RadioGroup>
- <Form.InputNumber field="initial"></Form.InputNumber>
- <Form.RadioGroup field="status">
- <Radio value="wait">wait</Radio>
- <Radio value="process">process</Radio>
- <Radio value="finish">finish</Radio>
- <Radio value="error">error</Radio>
- <Radio value="warning">warning</Radio>
- </Form.RadioGroup>
- </Form>
- <Steps type="basic" {...stepProps}>
- <Step
- title="Step.1"
- icon={<IconBell />}
- description="This is a long descriptionThis is a long descriptionThis is a long descriptionThis is a long descriptionThis is a long descriptionThis is a long description"
- ></Step>
- <Step title="Step.2" description="This is some description"></Step>
- <Step title="Step.3"></Step>
- <Step title="Step.4" description="This is some description"></Step>
- </Steps>
- </>
- );
- };
- export const _AllSteps = () => <AllSteps></AllSteps>;
- _AllSteps.story = {
- name: 'all steps',
- };
- const FillStep = () => {
- return sizes.map(s => (
- <Steps key={s} size={s} current={1}>
- <Step title="中文" description="This is a description." />
- <Step title="In Progress" description="This is a description." />
- <Step title="Waiting" description="This is a description." />
- </Steps>
- ));
- };
- export const StepsDefaultFill = () => <FillStep />;
- StepsDefaultFill.story = {
- name: 'steps default fill',
- };
- const BasicStep = () => {
- return sizes.map(s => (
- <Steps key={s} size={s} type="basic" current={1}>
- <Step title="Step.1" description="This is a description.This is a description." />
- <Step title="Step.2" description="This is a description.This is a description." />
- <Step title="Step.3" description="This is a description.This is a description." />
- </Steps>
- ));
- };
- export const StepsBasic = () => <BasicStep />;
- StepsBasic.story = {
- name: 'steps basic',
- };
- export const StepsWithIcon = () => {
- return (
- <Steps>
- <Step status="finish" title="Login" icon={<IconTriangleDown />} />
- <Step status="finish" title="Verification" icon={<IconClear />} />
- <Step status="process" title="Pay" icon={<IconTick />} />
- <Step status="wait" title="Done" icon={<IconClose />} />
- </Steps>
- );
- };
- StepsWithIcon.story = {
- name: 'steps with icon',
- };
- const steps = [
- {
- title: 'First',
- content: 'First-content',
- },
- {
- title: 'Second',
- content: 'Second-content',
- },
- {
- title: 'Last',
- content: 'Last-content',
- },
- ];
- class StepsDemo extends React.Component {
- constructor(props) {
- super(props);
- this.state = {
- current: 0,
- };
- }
- next() {
- const current = this.state.current + 1;
- this.setState({
- current,
- });
- }
- prev() {
- const current = this.state.current - 1;
- this.setState({
- current,
- });
- }
- render() {
- const { current } = this.state;
- return (
- <div>
- <Steps current={current}>
- {steps.map(item => (
- <Step key={item.title} title={item.title} />
- ))}
- </Steps>
- <div className="steps-content">{steps[current].content}</div>
- <div className="steps-action">
- {current < steps.length - 1 && (
- <Button type="primary" onClick={() => this.next()}>
- Next
- </Button>
- )}
- {current === steps.length - 1 && (
- <Button type="primary" onClick={() => console.log('Processing complete!')}>
- Done
- </Button>
- )}
- {current > 0 && (
- <Button
- style={{
- marginLeft: 8,
- }}
- onClick={() => this.prev()}
- >
- Previous
- </Button>
- )}
- </div>
- </div>
- );
- }
- }
- export const StepsWithControlled = () => {
- return <StepsDemo></StepsDemo>;
- };
- StepsWithControlled.story = {
- name: 'steps with controlled',
- };
- class StepsWithonChange extends React.Component {
- constructor(props) {
- super(props);
- this.state = {
- current: 1,
- };
- }
- onChange(current) {
- this.setState({ current });
- }
- render() {
- const { current } = this.state;
- const { Step } = Steps;
- const steps = [
- {
- title: 'First',
- content: 'First-content',
- },
- {
- title: 'Second',
- content: 'Second-content',
- },
- {
- title: 'Last',
- content: 'Last-content',
- },
- ];
- return (
- <div>
- <Steps type="basic" current={current} onChange={current => this.onChange(current)}>
- {steps.map(item => (
- <Step key={item.title} title={item.title} />
- ))}
- </Steps>
- </div>
- );
- }
- }
- export const StepsWithOnChange = () => {
- return <StepsWithonChange />;
- };
- StepsWithOnChange.story = {
- name: 'steps with onChange',
- };
- const StatusStep = () => {
- return sizes.map(s => (
- <Steps key={s} size={s} current={1} status="error">
- <Step title="Finished" description="This is a description" />
- <Step title="In Process" description="This is a description" />
- <Step title="Waiting" description="This is a description" />
- </Steps>
- ));
- };
- export const StepsWithStatus = () => <StatusStep />;
- StepsWithStatus.story = {
- name: 'steps with status',
- };
- const VerticalStep = () => {
- return sizes.map(s => (
- <Steps key={s} size={s} current={1} status="error" direction="vertical">
- <Step title="Finished" description="This is a description" />
- <Step title="In Process" description="This is a description" />
- <Step title="Waiting" description="This is a description" />
- </Steps>
- ));
- };
- export const StepsVertical = () => <VerticalStep />;
- StepsVertical.story = {
- name: 'steps vertical',
- };
- const LineStep = () => {
- return sizes.map(s => (
- <Steps key={s} size={s} hasLine={false} current={1} status="error">
- <Step title="Finished" description="This is a description" />
- <Step title="In Process" description="This is a description" />
- <Step title="Waiting" description="This is a description" />
- </Steps>
- ));
- };
- export const StepsWithoutLine = () => <LineStep></LineStep>;
- StepsWithoutLine.story = {
- name: 'steps without line',
- };
|