DatePicker日期选择器 - 图1

DatePicker 日期选择器

基本用法

  1. import { Cell, Button, DatePicker, Toast } from 'zarm';
  2. class Demo extends React.Component {
  3. constructor() {
  4. super();
  5. this.state = {
  6. date: {
  7. visible: false,
  8. value: '',
  9. wheelDefaultValue: '2018-09-13',
  10. },
  11. time: {
  12. visible: false,
  13. value: '',
  14. },
  15. limitDate: {
  16. visible: false,
  17. value: '2017-09-13',
  18. },
  19. specDOM: {
  20. visible: false,
  21. value: '',
  22. }
  23. };
  24. this.myRef = React.createRef();
  25. }
  26. componentDidMount() {
  27. // this.interval = setInterval(
  28. // () =>
  29. // this.setState(prevState => ({
  30. // count: prevState.count + 1
  31. // })),
  32. // 1000
  33. // );
  34. }
  35. toggle(key) {
  36. const state = this.state[key];
  37. state.visible = !state.visible;
  38. this.setState({ [`${key}`]: state });
  39. }
  40. render() {
  41. const {
  42. date,
  43. time,
  44. limitDate,
  45. specDOM,
  46. } = this.state;
  47. return (
  48. <div>
  49. <Cell
  50. description={
  51. <Button size="xs" onClick={() => this.toggle('date')}>选择</Button>
  52. }
  53. >
  54. 选择日期
  55. </Cell>
  56. <Cell
  57. description={
  58. <Button size="xs" onClick={() => this.toggle('time')}>选择</Button>
  59. }
  60. >
  61. 选择时间
  62. </Cell>
  63. <Cell
  64. description={
  65. <Button size="xs" onClick={() => this.toggle('limitDate')}>选择</Button>
  66. }
  67. >
  68. 选择日期(自定义)
  69. </Cell>
  70. <Cell
  71. description={
  72. <Button size="xs" onClick={() => this.toggle('specDOM')}>选择</Button>
  73. }
  74. >
  75. 挂载到指定dom节点
  76. </Cell>
  77. <DatePicker
  78. visible={date.visible}
  79. mode="date"
  80. value={date.value}
  81. wheelDefaultValue={date.wheelDefaultValue}
  82. onOk={(value) => {
  83. this.setState({
  84. date: {
  85. visible: false,
  86. value,
  87. },
  88. });
  89. Toast.show(JSON.stringify(value));
  90. }}
  91. onCancel={() => this.toggle('date')}
  92. />
  93. <DatePicker
  94. visible={time.visible}
  95. mode="time"
  96. value={time.value}
  97. onOk={(value) => {
  98. this.setState({
  99. time: {
  100. visible: false,
  101. value,
  102. },
  103. });
  104. Toast.show(JSON.stringify(value));
  105. }}
  106. onCancel={() => this.toggle('time')}
  107. />
  108. <DatePicker
  109. visible={limitDate.visible}
  110. title="选择日期"
  111. okText="确定"
  112. cancelText="取消"
  113. mode="date"
  114. min="2007-01-03"
  115. max="2019-11-23"
  116. value={limitDate.value}
  117. onOk={(value) => {
  118. this.setState({
  119. limitDate: {
  120. visible: false,
  121. value,
  122. },
  123. });
  124. Toast.show(JSON.stringify(value));
  125. }}
  126. onCancel={() => this.toggle('limitDate')}
  127. />
  128. <DatePicker
  129. visible={specDOM.visible}
  130. value={specDOM.value}
  131. onOk={(value) => {
  132. this.setState({
  133. specDOM: {
  134. visible: false,
  135. value,
  136. },
  137. });
  138. Toast.show(JSON.stringify(value));
  139. }}
  140. onCancel={() => this.toggle('specDOM')}
  141. getContainer={() => this.myRef.current}
  142. />
  143. <div
  144. id="test-div"
  145. style={{ position: 'relative', zIndex: 1 }}
  146. ref={this.myRef}
  147. />
  148. </div>
  149. )
  150. }
  151. }
  152. ReactDOM.render(<Demo />, mountNode);

DateSelect 表单日期选择器

  1. import { Cell, DateSelect, Icon } from 'zarm';
  2. class Demo extends React.Component {
  3. constructor() {
  4. super();
  5. this.state = {
  6. value: "",
  7. };
  8. }
  9. render() {
  10. return (
  11. <div>
  12. <Cell title="日期选择">
  13. <DateSelect
  14. title="选择日期"
  15. placeholder="请选择日期"
  16. mode="date"
  17. min="1974-05-16"
  18. max="2027-05-15"
  19. value={this.state.value}
  20. onOk={(value) => {
  21. console.log('DateSelect onOk: ', value);
  22. this.setState({
  23. value,
  24. });
  25. }}
  26. />
  27. </Cell>
  28. </div>
  29. )
  30. }
  31. }
  32. ReactDOM.render(<Demo />, mountNode);

DatePickerView 平铺选择器

  1. import { DatePickerView } from 'zarm';
  2. class Demo extends React.Component {
  3. constructor() {
  4. super();
  5. this.state = {
  6. value: "",
  7. };
  8. }
  9. render() {
  10. return (
  11. <div>
  12. <DatePickerView
  13. mode="datetime"
  14. value={this.state.value}
  15. min="2018-1-13"
  16. onChange={(value) => {
  17. console.log('datePickerView => ', value);
  18. }}
  19. />
  20. </div>
  21. )
  22. }
  23. }
  24. ReactDOM.render(<Demo />, mountNode);

API

属性类型默认值说明
valuestring | Date-
defaultValuestring | Date-初始值
modestring'date'指定日期选择模式,可选项 year, month, date, time, datetime
minstring-相应mode的最小时间
maxstring-相应mode的最大时间
minuteStepnumber1分钟间隔
disabledbooleanfalse是否禁用
onChange(value?: Date) => void-值变化时触发的回调函数

仅 DatePicker & DateSelect 支持的属性

属性类型默认值说明
visiblebooleanfalse是否展示
titlestring'请选择'选择器标题
cancelTextstring'取消'取消栏文字
okTextstring'确定'确定栏文字
maskClosablebooleantrue是否点击遮罩层时关闭,需要和onCancel一起使用
wheelDefaultValuestring | Date-滚轮默认停留的日期位置
onOk(value?: Date) => void-点击确定时触发的回调函数
onCancel() => void-点击取消时触发的回调函数
getContainerHTMLElement | () => HTMLElementdocument.body指定 DatePicker 挂载的 HTML 节点

仅 DateSelect 支持的属性

属性类型默认值说明
placeholderstring'请选择'输入提示信息
hasArrowbooleantrue是否显示箭头
formatstring-格式化显示值。例:format="yyyy年MM月dd日" 年:yyyy, 月:MM, 日:dd, 时:hh, 分:mm