pagination.stories.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. import React, { useState } from 'react';
  2. import { storiesOf } from '@storybook/react';
  3. // import { withKnobs, text, boolean } from '@storybook/addon-knobs';
  4. import withPropsCombinations from 'react-storybook-addon-props-combinations';
  5. import 'normalize.css';
  6. import { Button } from '../../index';
  7. import Pagination from '../index';
  8. const stories = storiesOf('Pagination', module);
  9. // stories.addDecorator(withKnobs);;
  10. stories.add('Pagination small', () => (
  11. <Pagination total={90} size="small"></Pagination>
  12. ));
  13. stories.add('Pagination default', () => (
  14. <div>
  15. <Pagination total={1}></Pagination>
  16. <Pagination total={0}></Pagination>
  17. <Pagination total={9}></Pagination>
  18. <Pagination total={30}></Pagination>
  19. <Pagination total={80}></Pagination>
  20. <Pagination total={200}></Pagination>
  21. <Pagination total={80} pageSize={30}></Pagination>
  22. <Pagination total={1000000000} ></Pagination>
  23. </div>
  24. ));
  25. stories.add('Pagination hideOnSinglePage', () => (
  26. <div>
  27. <Pagination total={1} hideOnSinglePage></Pagination>
  28. <Pagination total={0} hideOnSinglePage></Pagination>
  29. <Pagination total={9} hideOnSinglePage></Pagination>
  30. <Pagination total={30} hideOnSinglePage></Pagination>
  31. </div>
  32. ));
  33. stories.add('Pagination 指定当前页', () => (
  34. <div>
  35. <Pagination total={20000} defaultCurrentPage={2}></Pagination>
  36. </div>
  37. ));
  38. const ControlPage = () => {
  39. const [page, setPage] = useState(3);
  40. function onPageChange(currentPage) {
  41. setPage(currentPage);
  42. }
  43. return (
  44. <div>
  45. <Pagination total={200} currentPage={page} onPageChange={onPageChange}></Pagination>
  46. </div>
  47. );
  48. };
  49. stories.add('Pagination 页码受控', () => <ControlPage />);
  50. stories.add('Pagination showPageSizeChanger', () => (
  51. <div>
  52. <Pagination total={100} showSizeChanger showTotal></Pagination>
  53. <Pagination total={200}></Pagination>
  54. <Pagination total={300}
  55. showSizeChanger
  56. pageSizeOpts={[10, 20, 50, 200]}
  57. onPageChange={(page, pageSize)=>console.log(`pageChange:${page},pageSize:${pageSize}`)}
  58. onPageSizeChange={pageSize=>console.log(`pageSizeChange${pageSize}`)}
  59. >
  60. </Pagination>
  61. <Pagination total={300} showSizeChanger></Pagination>
  62. </div>
  63. ));
  64. stories.add('Pagination pageSizeOpts', () => (
  65. <div>
  66. <Pagination total={80} showSizeChanger></Pagination>
  67. <Pagination total={200}></Pagination>
  68. <Pagination total={300} showSizeChanger pageSizeOpts={[50, 80, 90, 200]}></Pagination>
  69. </div>
  70. ));
  71. stories.add('Pagination showQuickJumper', () => (
  72. <div>
  73. <Pagination total={1} showSizeChanger showQuickJumper></Pagination>
  74. <Pagination total={80} showSizeChanger showQuickJumper></Pagination>
  75. <Pagination total={200} showQuickJumper></Pagination>
  76. <Pagination total={300} showSizeChanger pageSizeOpts={[50, 80, 90, 200]} showQuickJumper></Pagination>
  77. </div>
  78. ));
  79. const DynamicPageSize = () => {
  80. const [pageSize, setPageSize] = useState(10);
  81. function changePageSize() {
  82. let map = {
  83. 10: 40,
  84. 40: 100,
  85. 100: 20,
  86. 100: 10
  87. }
  88. setPageSize(map[pageSize]);
  89. }
  90. return (
  91. <>
  92. <Pagination
  93. total={200}
  94. showSizeChanger
  95. pageSize={pageSize}
  96. >
  97. </Pagination>
  98. <br/>
  99. <Button onClick={changePageSize}>change</Button>
  100. </>
  101. );
  102. };
  103. stories.add('Pagination dynamic update pageSize', () => <DynamicPageSize />);
  104. // stories.add('combination', withPropsCombinations(
  105. // Button,
  106. // {
  107. // disaled: [false, true],
  108. // children: ['hello button'],
  109. // size: ['large', 'default', 'small'],
  110. // type: ['default', 'primary', 'warning', 'danger'],
  111. // // block: [false, true],
  112. // ghost: [false, true]
  113. // }
  114. // ));