Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

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;