You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

PollsPane.tsx 1.7KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import React from 'react';
  2. import { makeStyles } from 'tss-react/mui';
  3. import Button from '../../../base/ui/components/web/Button';
  4. import AbstractPollsPane, { AbstractProps } from '../AbstractPollsPane';
  5. import PollCreate from './PollCreate';
  6. import PollsList from './PollsList';
  7. /* eslint-enable lines-around-comment */
  8. const useStyles = makeStyles()(() => {
  9. return {
  10. container: {
  11. height: '100%',
  12. position: 'relative'
  13. },
  14. listContainer: {
  15. height: 'calc(100% - 88px)',
  16. overflowY: 'auto'
  17. },
  18. footer: {
  19. position: 'absolute',
  20. bottom: 0,
  21. padding: '24px',
  22. width: '100%',
  23. boxSizing: 'border-box'
  24. }
  25. };
  26. });
  27. const PollsPane = ({ createMode, onCreate, setCreateMode, t }: AbstractProps) => {
  28. const { classes } = useStyles();
  29. return createMode
  30. ? <PollCreate setCreateMode = { setCreateMode } />
  31. : <div className = { classes.container }>
  32. <div className = { classes.listContainer } >
  33. <PollsList />
  34. </div>
  35. <div className = { classes.footer }>
  36. <Button
  37. accessibilityLabel = { t('polls.create.create') }
  38. autoFocus = { true }
  39. fullWidth = { true }
  40. labelKey = { 'polls.create.create' }
  41. onClick = { onCreate } />
  42. </div>
  43. </div>;
  44. };
  45. /*
  46. * We apply AbstractPollsPane to fill in the AbstractProps common
  47. * to both the web and native implementations.
  48. */
  49. // eslint-disable-next-line new-cap
  50. export default AbstractPollsPane(PollsPane);