Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

AbstractPollsPane.tsx 1.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import React, { ComponentType, useState } from 'react';
  2. import { useTranslation } from 'react-i18next';
  3. /*
  4. * Props that will be passed by the AbstractPollsPane to its
  5. * concrete implementations (web/native).
  6. **/
  7. export type AbstractProps = {
  8. createMode: boolean;
  9. onCreate: () => void;
  10. setCreateMode: (mode: boolean) => void;
  11. t: Function;
  12. };
  13. /**
  14. * Higher Order Component taking in a concrete PollsPane component and
  15. * augmenting it with state/behavior common to both web and native implementations.
  16. *
  17. * @param {React.AbstractComponent} Component - The concrete component.
  18. * @returns {React.AbstractComponent}
  19. */
  20. const AbstractPollsPane = (Component: ComponentType<AbstractProps>) => () => {
  21. const [ createMode, setCreateMode ] = useState(false);
  22. const onCreate = () => {
  23. setCreateMode(true);
  24. };
  25. const { t } = useTranslation();
  26. return (<Component
  27. createMode = { createMode }
  28. /* eslint-disable react/jsx-no-bind */
  29. onCreate = { onCreate }
  30. setCreateMode = { setCreateMode }
  31. t = { t } />);
  32. };
  33. export default AbstractPollsPane;