FeatRefFocus.tsx 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import React, { useRef } from 'react';
  2. import type { BaseDatePicker } from '../../index';
  3. import { DatePicker, Space, Button } from '../../../index';
  4. /**
  5. * test in cypress
  6. */
  7. export default function Demo() {
  8. const ref = useRef<BaseDatePicker>();
  9. const rangeRef = useRef<BaseDatePicker>();
  10. const insetRef = useRef<BaseDatePicker>();
  11. const handleFocusInset = (focusType) => {
  12. insetRef.current.focus(focusType);
  13. insetRef.current.open();
  14. };
  15. const handleBlurInset = () => {
  16. insetRef.current.blur();
  17. insetRef.current.close();
  18. };
  19. return (
  20. <Space vertical align={'start'}>
  21. <Space vertical align={'start'} data-cy="single">
  22. <h4>单个输入框</h4>
  23. <Space>
  24. <Button onClick={() => ref.current.focus()}>focus</Button>
  25. <Button onClick={() => ref.current.blur()}>blur</Button>
  26. </Space>
  27. <div>
  28. <DatePicker motion={false} type="dateTime" ref={ref} />
  29. </div>
  30. </Space>
  31. <Space vertical align={'start'} data-cy="range">
  32. <h4>两个输入框</h4>
  33. <Space>
  34. <Button onClick={() => rangeRef.current.focus()}>focus default</Button>
  35. <Button onClick={() => rangeRef.current.focus('rangeEnd')}>focus end</Button>
  36. <Button onClick={() => rangeRef.current.blur()}>blur</Button>
  37. </Space>
  38. <div>
  39. <DatePicker motion={false} type="dateRange" ref={rangeRef} />
  40. </div>
  41. </Space>
  42. <Space vertical align={'start'} data-cy="inset">
  43. <h4>内嵌输入框</h4>
  44. <Space>
  45. <Button onClick={handleFocusInset}>focus start + open</Button>
  46. <Button onClick={() => handleFocusInset('rangeEnd')}>focus end + open</Button>
  47. <Button onClick={handleBlurInset}>blur + close</Button>
  48. </Space>
  49. <div>
  50. <DatePicker motion={false} insetInput type="dateRange" ref={insetRef} />
  51. </div>
  52. </Space>
  53. </Space>
  54. );
  55. }
  56. Demo.storyName = 'ref focus & blur';
  57. Demo.parameters = {
  58. chromatic: { disableSnapshot: false },
  59. };