index.jsx 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. /* eslint-disable max-lines-per-function */
  2. import React from 'react';
  3. import { addDays } from 'date-fns';
  4. import { DatePicker, Typography, Space, InputGroup, Input, InputNumber, Row } from '../../../index';
  5. import RTLWrapper from '../../../configProvider/_story/RTLDirection/RTLWrapper';
  6. const { Title, Text } = Typography;
  7. const dayOffset = 1;
  8. const baseYear = 2019;
  9. const baseDay = 8;
  10. const baseMon = 8;
  11. const presets = [
  12. {
  13. text: 'Today',
  14. start: new Date(),
  15. end: new Date(),
  16. },
  17. {
  18. text: 'Next Day',
  19. start: addDays(new Date(), dayOffset),
  20. end: addDays(new Date(), dayOffset),
  21. },
  22. ];
  23. const baseDate = new Date(baseYear, baseMon, baseDay, 8, 8, 8, 8);
  24. const currentValue = [new Date(baseDate), new Date(baseDate).setDate(baseDay + dayOffset)];
  25. Demo.parameters = {
  26. chromatic: { disableSnapshot: false },
  27. };
  28. export default function Demo(props = {}) {
  29. const style = { width: 240 };
  30. return (
  31. <RTLWrapper>
  32. <Row style={{ marginBottom: 20 }}>
  33. <Title heading={3}>不同尺寸</Title>
  34. <div style={{ marginBottom: 4 }}>
  35. <Space>
  36. <Text>default size</Text>
  37. <DatePicker
  38. onFocus={console.log}
  39. onClear={e => {
  40. console.log('clear', e);
  41. }}
  42. type="dateRange"
  43. style={style}
  44. onChange={console.log}
  45. />
  46. <DatePicker />
  47. </Space>
  48. </div>
  49. <div style={{ marginBottom: 4 }}>
  50. <Space>
  51. <Text>small size</Text>
  52. <DatePicker type="dateRange" size="small" style={style} />
  53. <DatePicker size="small" />
  54. </Space>
  55. </div>
  56. <div style={{ marginBottom: 4 }}>
  57. <Space>
  58. <Text>large size</Text>
  59. <DatePicker type="dateRange" size="large" style={{ width: 280 }} />
  60. <DatePicker size="large" />
  61. </Space>
  62. </div>
  63. </Row>
  64. <Row style={{ marginBottom: 20 }}>
  65. <Title heading={3}>prefix、insetLabel</Title>
  66. <div style={{ marginBottom: 4 }}>
  67. <Space>
  68. <Text>prefix</Text>
  69. <DatePicker prefix="Semi Design" type="dateRange" style={{ width: 340 }} />
  70. </Space>
  71. </div>
  72. <div style={{ marginBottom: 4 }}>
  73. <Space>
  74. <Text>insetLabel</Text>
  75. <DatePicker
  76. insetLabel="放假时间"
  77. type="dateRange"
  78. defaultValue={['2021-06-10', '2021-06-17']}
  79. showClear
  80. style={{ width: 340 }}
  81. />
  82. </Space>
  83. </div>
  84. </Row>
  85. <Row style={{ marginBottom: 20 }}>
  86. <Title heading={3}>dateTimeRange</Title>
  87. <Space>
  88. <DatePicker type="dateTimeRange" showClear needConfirm style={{ width: 360 }} />
  89. <DatePicker
  90. type="dateTimeRange"
  91. defaultValue={currentValue}
  92. placeholder="请选择日期"
  93. style={{ width: 400 }}
  94. />
  95. <DatePicker
  96. type="dateTimeRange"
  97. placeholder={['请选择开始日期', '请选择结束日期']}
  98. style={{ width: 360 }}
  99. />
  100. </Space>
  101. </Row>
  102. <Row style={{ marginBottom: 20 }}>
  103. <Title heading={3}>对比不同校验状态</Title>
  104. <div style={{ marginBottom: 4 }}>
  105. <Space>
  106. <Text>default status</Text>
  107. <DatePicker />
  108. <DatePicker type="dateRange" style={style} />
  109. </Space>
  110. </div>
  111. <div style={{ marginBottom: 4 }}>
  112. <Space>
  113. <Text>warning status</Text>
  114. <DatePicker validateStatus="warning" />
  115. <DatePicker type="dateRange" validateStatus="warning" style={style} />
  116. </Space>
  117. </div>
  118. <div style={{ marginBottom: 4 }}>
  119. <Space>
  120. <Text>error status</Text>
  121. <DatePicker validateStatus="error" />
  122. <DatePicker type="dateRange" validateStatus="error" style={style} />
  123. </Space>
  124. </div>
  125. <div style={{ marginBottom: 4 }}>
  126. <Space>
  127. <Text>disabled status</Text>
  128. <DatePicker disabled />
  129. <DatePicker type="dateRange" disabled style={style} />
  130. </Space>
  131. </div>
  132. </Row>
  133. <Row style={{ marginBottom: 20 }}>
  134. <Title heading={3}>输入框组合</Title>
  135. <div style={{ marginBottom: 4 }}>
  136. <InputGroup>
  137. <Input placeholder="Name" style={{ width: 100 }} />
  138. <DatePicker type="dateRange" placeholder={['入学时间', '离校时间']} style={style} />
  139. <InputNumber placeholder="Score" style={{ width: 140 }} />
  140. </InputGroup>
  141. </div>
  142. <div style={{ marginBottom: 4 }}>
  143. <InputGroup>
  144. <Input placeholder="Name" style={{ width: 100 }} />
  145. <DatePicker type="dateRange" placeholder={['入学时间', '离校时间']} style={style} />
  146. </InputGroup>
  147. </div>
  148. <div style={{ marginBottom: 4 }}>
  149. <InputGroup>
  150. <DatePicker type="dateRange" placeholder={['入学时间', '离校时间']} style={style} />
  151. <Input placeholder="Name" style={{ width: 100 }} />
  152. <InputNumber placeholder="Score" style={{ width: 140 }} />
  153. </InputGroup>
  154. </div>
  155. </Row>
  156. <Row style={{ marginBottom: 20 }}>
  157. <Title heading={3}>带presets</Title>
  158. <div style={{ marginBottom: 4 }}>
  159. <Space>
  160. <DatePicker presets={presets} />
  161. <DatePicker type="dateRange" presets={presets} style={style} />
  162. <DatePicker type="dateTimeRange" presets={presets} style={{ width: 360 }} />
  163. </Space>
  164. </div>
  165. </Row>
  166. </RTLWrapper>
  167. );
  168. }