123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428 |
- import React, { Component } from 'react';
- import Slider from '../index';
- import Input from '../../input/index';
- import { Modal, Button, Form, Row, Col } from '@douyinfe/semi-ui/';
- export default {
- title: 'Slider'
- }
- function formatter(value) {
- return `${value}自定义`;
- }
- let divStyle = {
- width: 800,
- marginLeft: 20,
- marginTop: 40,
- paddingBottom: 30,
- };
- export const HorizontalSlider = () => (
- <div>
- <div style={divStyle}>
- <div>default</div>
- <Slider
- showBoundary={true}
- onChange={value => {
- console.log('value改变了' + value);
- }}
- ></Slider>
- </div>
- <div style={divStyle}>
- <div>min, max</div>
- <Slider
- showBoundary={true}
- min={10}
- max={50}
- onChange={value => {
- console.log('value改变了' + value);
- }}
- ></Slider>
- </div>
- <div style={divStyle}>
- <div>range</div>
- <Slider
- defaultValue={[20, 60]}
- range
- // step={0.01}
- onChange={value => {
- console.log('value改变了啊啊啊啊啊啊' + value);
- }}
- onAfterChange={value => {
- console.log('value结束于' + value);
- }}
- ></Slider>
- </div>
- <div style={divStyle}>
- <div>组合输入框</div>
- <InputSlider />
- </div>
- <div style={divStyle}>
- <div>格式化tooltip</div>
- <Slider
- tipFormatter={formatter}
- onChange={value => {
- console.log('value改变了' + value);
- }}
- ></Slider>
- </div>
- <div style={divStyle}>
- <div>tooltip=null</div>
- <Slider
- tipFormatter={null}
- onChange={value => {
- console.log('value改变了' + value);
- }}
- ></Slider>
- </div>
- <div style={divStyle}>
- <div>tooltipVisible=true始终显示tooltip</div>
- <Slider
- tooltipVisible={true}
- onChange={value => {
- console.log('value改变了' + value);
- }}
- ></Slider>
- </div>
- <div style={divStyle}>
- <div>step=10</div>
- <Slider
- step={10}
- marks={{ 10: '10', 20: '20', 30: '30', 40: '40', 50: '50' }}
- defaultValue={[10, 100]}
- range={true}
- onChange={value => {
- console.log('value改变了' + value);
- }}
- ></Slider>
- </div>
- <div style={divStyle}>
- <div>step=0.1</div>
- <Slider
- step={0.1}
- marks={{ 0.1: '0.1', 0.2: '0.2', 0.3: '0.3', 0.4: '0.4', 0.5: '0.5' }}
- min={0}
- max={1}
- defaultValue={[0.1, 0.5]}
- range={true}
- onChange={value => {
- console.log('value改变了' + value);
- }}
- ></Slider>
- </div>
- <div style={divStyle}>
- <div>marks</div>
- <Slider
- marks={{ 20: '20°C', 40: '40°C' }}
- getAriaValueText={(value) => `${value}°C`}
- defaultValue={[0, 100]}
- range={true}
- onChange={value => {
- console.log('value改变了' + value);
- }}
- ></Slider>
- </div>
- <div style={divStyle}>
- <div>inclued</div>
- <Slider
- marks={{ 20: '20°C', 40: '40°C' }}
- getAriaValueText={(value) => `${value}°C`}
- included={false}
- defaultValue={[0, 100]}
- range={true}
- onChange={value => {
- console.log('value改变了' + value);
- }}
- ></Slider>
- </div>
- </div>
- );
- HorizontalSlider.story = {
- name: 'horizontal slider',
- };
- class InputSlider extends Component {
- state = {
- value: 10,
- };
- getSliderValue = value => {
- this.setState({ value: value / 1 });
- };
- render() {
- const { value } = this.state;
- return (
- <div style={{ display: 'flex', width: 800 }}>
- <div style={{ width: 500 }}>
- <Slider step={0.1} value={value} onChange={value => this.getSliderValue(value)}></Slider>
- </div>
- <Input onChange={v => this.getSliderValue(v)} style={{ flex: 1 }} value={value} />
- </div>
- );
- }
- }
- let divStyle1 = {
- height: 400,
- marginLeft: 20,
- marginTop: 40,
- paddingRight: 30,
- display: 'inline-block',
- };
- export const VerticalSlider = () => (
- <div>
- <div style={divStyle1}>
- <Slider vertical range defaultValue={[20, 60]} aria-label="slider test"></Slider>
- </div>
- </div>
- );
- VerticalSlider.story = {
- name: 'vertical slider',
- };
- export const VerticalSliderInScrollContainer = () => (
- <div style={{ height: '300px', overflow: 'scroll' }}>
- <div style={{ height: '600px', marginTop: '30px' }}>
- <div style={divStyle1}>
- <Slider vertical onChange={value => {}}></Slider>
- </div>
- <div style={divStyle1}>
- <Slider
- vertical
- range
- defaultValue={[20, 60]}
- onChange={value => {
- console.log('value改变了' + value);
- }}
- ></Slider>
- </div>
- <div style={divStyle1}>
- <Slider
- vertical
- range
- marks={{ 20: '20c', 40: '40c' }}
- step={10}
- defaultValue={[20, 60]}
- onChange={value => {
- console.log('value改变了' + value);
- }}
- ></Slider>
- </div>
- </div>
- </div>
- );
- VerticalSliderInScrollContainer.story = {
- name: '在滚动容器中的vertical slider',
- };
- export const SliderInScrollContainer = () => (
- <div style={{ width: '300px', overflow: 'scroll' }}>
- <div style={{ width: '500px', marginTop: '10px' }}>
- <div style={divStyle}>
- <Slider onChange={value => {}}></Slider>
- </div>
- <div style={divStyle}>
- <Slider
- range
- defaultValue={[20, 60]}
- onChange={value => {
- console.log('value改变了' + value);
- }}
- ></Slider>
- </div>
- <div style={divStyle}>
- <Slider
- range
- marks={{ 20: '20c', 40: '40c' }}
- step={10}
- defaultValue={[20, 60]}
- onChange={value => {
- console.log('value改变了' + value);
- }}
- ></Slider>
- </div>
- </div>
- </div>
- );
- SliderInScrollContainer.story = {
- name: '在滚动容器中的slider'
- }
- class ControlledSlider extends Component {
- state = {
- value: 30,
- rangeValue: [10, 30],
- };
- changeValue = () => {
- this.setState({ value: this.state.value + 10 });
- const [start, end] = this.state.rangeValue;
- this.setState({ rangeValue: [start - 10, end + 10]})
- };
- changeRangeValue = rangeValue => {
- this.setState({ rangeValue: rangeValue });
- };
- render() {
- const { value, rangeValue } = this.state;
- return (
- <div>
- <Button onClick={() => this.changeValue()}>点击改变value</Button>
- <div data-cy="horizontalNoChangeSlider" style={{ width: 800, marginLeft: 20, marginTop: 40 }}>
- <Slider
- value={30}
- onChange={value => {
- console.log('value改变了' + value);
- }}
- ></Slider>
- </div>
- <div data-cy="horizontalOnChangeSlider" style={{ width: 800, marginLeft: 20, marginTop: 40 }}>
- <Slider
- value={value}
- onChange={value => {
- console.log('value改变了' + value);
- this.setState({value: value});
- }}
- ></Slider>
- </div>
- <div data-cy="horizontalNoChangeRangeSlider" style={{ width: 800, marginLeft: 20, marginTop: 40 }}>
- <Slider
- value={rangeValue}
- onChange={rangeValue => {
- console.log('value改变了' + rangeValue);
- }}
- range
- ></Slider>
- </div>
- <div data-cy="horizontalNoChangeVerticalSlider" style={{ width: 800, marginLeft: 20, marginTop: 40 }}>
- <Slider
- value={40}
- vertical
- onChange={value => {
- console.log('value改变了' + value);
- }}
- style={{height: '300px'}}
- ></Slider>
- </div>
- </div>
- );
- }
- }
- export const ControlledSliderDemo = () => <ControlledSlider />;
- ControlledSliderDemo.story = {
- name: '受控slider'
- }
- class DisableSlider extends Component {
- state = {
- disabled: false,
- };
- changeValue = () => {
- this.setState({ disabled: !this.state.disabled });
- };
- render() {
- const { disabled } = this.state;
- return (
- <div>
- <Button onClick={() => this.changeValue()}>toggle disable slider</Button>
- <div style={{ width: 800, marginLeft: 20, marginTop: 40 }}>
- <Slider
- disabled={disabled}
- defaultValue={10}
- onChange={value => {
- console.log('value改变了' + value);
- }}
- ></Slider>
- </div>
- </div>
- );
- }
- }
- export const _DisableSlider = () => <DisableSlider />;
- _DisableSlider.story = {
- name: 'disable slider',
- };
- class TestDemo extends React.Component {
- constructor() {
- super();
- this.state = {
- visible: false,
- };
- this.showDialog = this.showDialog.bind(this);
- this.getFormApi = this.getFormApi.bind(this);
- this.handleOk = this.handleOk.bind(this);
- this.handleCancel = this.handleCancel.bind(this);
- }
- getFormApi(formApi) {
- this.formApi = formApi;
- }
- showDialog() {
- this.setState({
- visible: true,
- });
- }
- handleOk(e) {
- this.setState({
- visible: false,
- });
- }
- handleCancel(e) {
- this.setState({
- visible: false,
- });
- }
- render() {
- const { Slider, Switch } = Form;
- return (
- <>
- <Button onClick={this.showDialog}>打开弹窗</Button>
- <Modal
- title="基本对话框"
- visible={this.state.visible}
- onOk={this.handleOk}
- onCancel={this.handleCancel}
- >
- <Form style={{ padding: 10, width: '100%' }} onValueChange={v => console.log(v)}>
- <Row>
- <Col span={12}>
- <Slider field="range" range initValue={[10, 100]} style={{ width: '90%' }} />
- </Col>
- <Col span={12}>
- <Switch field="switch" />
- </Col>
- </Row>
- </Form>
- </Modal>
- </>
- );
- }
- }
- export const SliderInModal = () => <TestDemo />;
- SliderInModal.story = {
- name: 'slider in modal',
- };
- export const RangeMinSlider = () => (
- <Slider
- defaultValue={[20, 60]}
- range
- // step={0.01}
- min={10}
- // onChange={(value) => { console.log('value改变了啊啊啊啊啊啊' + value) }}
- // onAfterChange={(value) => { console.log('value结束于' + value) }}
- />
- );
- RangeMinSlider.story = {
- name: 'range min slider',
- };
|