bulkController.stories.js 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. import React from 'react';
  2. import styled from '@emotion/styled';
  3. import BulkController from 'app/components/bulkController';
  4. import Checkbox from 'app/components/checkbox';
  5. import {PanelTable} from 'app/components/panels';
  6. const dummy = [
  7. {
  8. id: 1,
  9. text:
  10. 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Accusantium autem placeat corrupti sapiente optio. Sapiente, aut exercitationem nisi nesciunt molestiae perspiciatis ad illo at officiis porro quam voluptas explicabo quod.',
  11. },
  12. {
  13. id: 2,
  14. text:
  15. 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Accusantium autem placeat corrupti sapiente optio. Sapiente, aut exercitationem nisi nesciunt molestiae perspiciatis ad illo at officiis porro quam voluptas explicabo quod.',
  16. },
  17. {
  18. id: 3,
  19. text:
  20. 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Accusantium autem placeat corrupti sapiente optio. Sapiente, aut exercitationem nisi nesciunt molestiae perspiciatis ad illo at officiis porro quam voluptas explicabo quod.',
  21. },
  22. {
  23. id: 4,
  24. text:
  25. 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Accusantium autem placeat corrupti sapiente optio. Sapiente, aut exercitationem nisi nesciunt molestiae perspiciatis ad illo at officiis porro quam voluptas explicabo quod.',
  26. },
  27. {
  28. id: 5,
  29. text:
  30. 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Accusantium autem placeat corrupti sapiente optio. Sapiente, aut exercitationem nisi nesciunt molestiae perspiciatis ad illo at officiis porro quam voluptas explicabo quod.',
  31. },
  32. ];
  33. const pageIds = dummy.map(d => d.id);
  34. export default {
  35. title: 'Core/Tables/BulkController',
  36. component: BulkController,
  37. };
  38. export const _BulkController = () => (
  39. <BulkController
  40. pageIds={pageIds}
  41. defaultSelectedIds={pageIds.slice(0, 2)}
  42. allRowsCount={23}
  43. columnsCount={3}
  44. bulkLimit={1000}
  45. >
  46. {({selectedIds, onPageRowsToggle, onRowToggle, isPageSelected, renderBulkNotice}) => (
  47. <PanelTable
  48. headers={[
  49. <StyledCheckbox
  50. key="bulk-checkbox"
  51. checked={isPageSelected}
  52. onChange={e => onPageRowsToggle(e.target.checked)}
  53. />,
  54. 'Id',
  55. 'Text',
  56. ]}
  57. >
  58. {renderBulkNotice()}
  59. {dummy.map(d => (
  60. <React.Fragment key={d.id}>
  61. <div>
  62. <StyledCheckbox
  63. checked={selectedIds.includes(d.id)}
  64. onChange={() => onRowToggle(d.id)}
  65. />
  66. </div>
  67. <div>{d.id}</div>
  68. <div>{d.text}</div>
  69. </React.Fragment>
  70. ))}
  71. </PanelTable>
  72. )}
  73. </BulkController>
  74. );
  75. _BulkController.storyName = 'BulkController';
  76. _BulkController.parameters = {
  77. docs: {
  78. description: {
  79. story: 'Nearly empty state will still show 1 bar if there are any miserable users',
  80. },
  81. },
  82. };
  83. const StyledCheckbox = styled(Checkbox)`
  84. margin-top: 0 !important;
  85. `;