AreaSelectSection.tsx 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. import React from 'react'
  2. import { Row, Col, InputNumber } from 'antd'
  3. import ColorPicker from 'components/ColorPicker'
  4. const styles = require('../Workbench.less')
  5. export interface IAreaSelectConfig {
  6. width: number
  7. borderWidth: number
  8. borderColor: string
  9. color: string
  10. opacity: number
  11. }
  12. interface IAreaSelectSectionProps {
  13. title: string
  14. config: IAreaSelectConfig
  15. onChange: (prop: string, value: any) => void
  16. }
  17. export class AreaSelectSection extends React.PureComponent<IAreaSelectSectionProps, {}> {
  18. private inputNumberChange = (prop) => (value) => {
  19. this.props.onChange(prop, value)
  20. }
  21. private colorChange = (prop) => (color) => {
  22. this.props.onChange(prop, color)
  23. }
  24. public render () {
  25. const { title, config } = this.props
  26. const {
  27. width,
  28. borderWidth,
  29. borderColor,
  30. color,
  31. opacity
  32. } = config
  33. return (
  34. <div className={styles.paneBlock}>
  35. <h4>{title}</h4>
  36. <div className={styles.blockBody}>
  37. <Row gutter={8} type="flex" align="middle" className={styles.blockRow}>
  38. <Col span={6}>背景</Col>
  39. <Col span={14}>
  40. <InputNumber
  41. placeholder="width"
  42. className={styles.blockElm}
  43. value={width}
  44. min={1}
  45. onChange={this.inputNumberChange('width')}
  46. />
  47. </Col>
  48. <Col span={4}>
  49. <ColorPicker
  50. value={color}
  51. onChange={this.colorChange('color')}
  52. disableAlpha
  53. />
  54. </Col>
  55. </Row>
  56. <Row gutter={8} type="flex" align="middle" className={styles.blockRow}>
  57. <Col span={6}>边框</Col>
  58. <Col span={14}>
  59. <InputNumber
  60. placeholder="borderWidth"
  61. className={styles.blockElm}
  62. value={borderWidth}
  63. min={1}
  64. onChange={this.inputNumberChange('borderWidth')}
  65. />
  66. </Col>
  67. <Col span={4}>
  68. <ColorPicker
  69. value={borderColor}
  70. onChange={this.colorChange('borderColor')}
  71. disableAlpha
  72. />
  73. </Col>
  74. </Row>
  75. <Row gutter={8} type="flex" align="middle" className={styles.blockRow}>
  76. <Col span={6}>透明度</Col>
  77. <Col span={8}>
  78. <InputNumber
  79. placeholder="opacity"
  80. className={styles.blockElm}
  81. value={opacity}
  82. min={0}
  83. max={1}
  84. onChange={this.inputNumberChange('opacity')}
  85. />
  86. </Col>
  87. </Row>
  88. </div>
  89. </div>
  90. )
  91. }
  92. }
  93. export default AreaSelectSection