demo.tsx 5.2 KB
Newer Older
L
liuyijun 已提交
1
import React, { useState } from 'react'
J
junjun666 已提交
2
import { useTranslate } from '../../sites/assets/locale'
L
liuyijun 已提交
3
import { InputNumber } from './inputnumber'
4
import ConfigProvider from '@/packages/configprovider'
L
liuyijun 已提交
5 6 7
import Cell from '@/packages/cell'
import Toast from '@/packages/toast'

O
oasis-cloud 已提交
8
interface ValState {
L
liuyijun 已提交
9 10 11 12 13 14 15 16 17
  val1: number | string
  val2: number | string
  val3: number | string
  val4: number | string
  val5: number | string
  val6: number | string
  val7: number | string
  val8: number | string
}
J
junjun666 已提交
18 19 20 21 22 23 24 25 26

interface T {
  '6333c786': string
  '0137871a': string
  '84aa6bce': string
  '55cc5fb7': string
  '9636103a': string
  '181965e2': string
  e7b2ce1f: string
27 28
  e7b2ce1g: string
  e7b2ce1y: string
J
junjun666 已提交
29 30 31 32
  '3a42134b': string
  '65bafb1d': string
  '7e2394ae': string
}
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50

const customTheme = {
  nutuiInputnumberButtonWidth: '30px',
  nutuiInputnumberButtonHeight: '30px',
  nutuiInputnumberButtonBorderRadius: '2px',
  nutuiInputnumberButtonBackgroundColor: `#f4f4f4`,
  nutuiInputnumberInputHeight: '30px',
  nutuiInputnumberInputMargin: '0 2px',
}

const customTheme2 = {
  nutuiInputnumberButtonWidth: '30px',
  nutuiInputnumberButtonHeight: '30px',
  nutuiInputnumberButtonBackgroundColor: `#f4f4f4`,
  nutuiInputnumberInputBackgroundColor: '#fff',
  nutuiInputnumberInputMargin: '0 2px',
}

L
liuyijun 已提交
51
const InputNumberDemo = () => {
J
junjun666 已提交
52 53 54 55 56 57 58 59 60
  const [translated] = useTranslate<T>({
    'zh-CN': {
      '6333c786': '超出限制事件触发',
      '0137871a': '异步演示2秒后更改',
      '84aa6bce': '基础用法',
      '55cc5fb7': '步长设置',
      '9636103a': '限制输入范围',
      '181965e2': '禁用操作',
      e7b2ce1f: '只读禁用输入框',
61 62
      e7b2ce1g: '设置按钮样式1',
      e7b2ce1y: '设置按钮样式2',
J
junjun666 已提交
63 64 65 66 67 68 69 70 71 72 73 74
      '3a42134b': '支持小数点',
      '65bafb1d': '支持异步修改',
      '7e2394ae': '自定义按钮大小',
    },
    'zh-TW': {
      '6333c786': '超出限制事件觸發',
      '0137871a': '異步演示2秒後更改',
      '84aa6bce': '基礎用法',
      '55cc5fb7': '步長設置',
      '9636103a': '限制輸入範圍',
      '181965e2': '禁用操作',
      e7b2ce1f: '只讀禁用輸入框',
75 76
      e7b2ce1g: '设置按钮样式1',
      e7b2ce1y: '设置按钮样式2',
J
junjun666 已提交
77 78 79 80 81 82 83 84 85 86 87 88
      '3a42134b': '支持小數點',
      '65bafb1d': '支持異步修改',
      '7e2394ae': '自定義按鈕大小',
    },
    'en-US': {
      '6333c786': 'Exceeded limit event triggered',
      '0137871a': 'Async demo changes after 2 seconds',
      '84aa6bce': 'Basic usage',
      '55cc5fb7': 'Step size setting',
      '9636103a': 'Limit input range',
      '181965e2': 'Disable operation',
      e7b2ce1f: 'read-only disabled input box',
89 90
      e7b2ce1g: 'Button CSS1',
      e7b2ce1y: 'Button CSS2',
J
junjun666 已提交
91 92 93 94 95 96
      '3a42134b': 'support decimal point',
      '65bafb1d': 'Support for asynchronous modification',
      '7e2394ae': 'custom button size',
    },
  })

O
oasis-cloud 已提交
97
  const [inputState, setInputState] = useState<ValState>({
L
liuyijun 已提交
98 99 100 101 102 103 104 105 106 107 108
    val1: 1,
    val2: 0,
    val3: 10,
    val4: 0,
    val5: 1,
    val6: 5.5,
    val7: 1,
    val8: 1,
  })
  const overlimit = (e: MouseEvent) => {
    console.log(e)
J
junjun666 已提交
109
    Toast.warn(translated['6333c786'])
L
liuyijun 已提交
110 111
  }
  const onChange = (value: string | number) => {
J
junjun666 已提交
112
    Toast.loading(translated['0137871a'])
L
liuyijun 已提交
113 114 115 116 117 118 119 120 121
    setTimeout(() => {
      inputState.val7 = Number(value)
      setInputState({ ...inputState })
      Toast.hide()
    }, 2000)
  }
  return (
    <>
      <div className="demo">
J
junjun666 已提交
122
        <h2>{translated['84aa6bce']}</h2>
L
liuyijun 已提交
123 124 125
        <Cell>
          <InputNumber modelValue={inputState.val1} />
        </Cell>
J
junjun666 已提交
126
        <h2>{translated['55cc5fb7']}</h2>
L
liuyijun 已提交
127 128 129
        <Cell>
          <InputNumber modelValue={inputState.val2} step="5" />
        </Cell>
J
junjun666 已提交
130
        <h2>{translated['9636103a']}</h2>
L
liuyijun 已提交
131
        <Cell>
O
oasis-cloud 已提交
132 133 134 135
          <InputNumber
            modelValue={inputState.val3}
            min="10"
            max="20"
136
            onOverlimit={overlimit}
O
oasis-cloud 已提交
137
          />
L
liuyijun 已提交
138
        </Cell>
J
junjun666 已提交
139
        <h2>{translated['181965e2']}</h2>
L
liuyijun 已提交
140 141 142
        <Cell>
          <InputNumber modelValue={inputState.val4} disabled />
        </Cell>
J
junjun666 已提交
143
        <h2>{translated.e7b2ce1f}</h2>
L
liuyijun 已提交
144 145 146
        <Cell>
          <InputNumber modelValue={inputState.val5} readonly />
        </Cell>
147 148 149 150 151 152 153 154 155 156 157 158
        <h2>{translated.e7b2ce1g}</h2>
        <Cell>
          <ConfigProvider theme={customTheme}>
            <InputNumber modelValue={inputState.val5} />
          </ConfigProvider>
        </Cell>
        <h2>{translated.e7b2ce1y}</h2>
        <Cell>
          <ConfigProvider theme={customTheme2}>
            <InputNumber modelValue={inputState.val5} />
          </ConfigProvider>
        </Cell>
J
junjun666 已提交
159
        <h2>{translated['3a42134b']}</h2>
L
liuyijun 已提交
160
        <Cell>
O
oasis-cloud 已提交
161 162 163 164 165 166
          <InputNumber
            modelValue={inputState.val6}
            step="0.1"
            decimalPlaces="1"
            readonly
          />
L
liuyijun 已提交
167
        </Cell>
J
junjun666 已提交
168
        <h2>{translated['65bafb1d']}</h2>
L
liuyijun 已提交
169
        <Cell>
170 171 172 173 174
          <InputNumber
            modelValue={inputState.val7}
            onChangeFuc={onChange}
            isAsync
          />
L
liuyijun 已提交
175
        </Cell>
J
junjun666 已提交
176
        <h2>{translated['7e2394ae']}</h2>
L
liuyijun 已提交
177
        <Cell>
O
oasis-cloud 已提交
178 179
          <InputNumber
            modelValue={inputState.val8}
O
oasis-cloud 已提交
180
            buttonSize="25px"
O
oasis-cloud 已提交
181
            inputWidth="150px"
O
oasis-cloud 已提交
182
          />
L
liuyijun 已提交
183 184 185 186 187 188 189
        </Cell>
      </div>
    </>
  )
}

export default InputNumberDemo