Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

EmbedMeetingTrigger.js 1.6KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. // @flow
  2. /* eslint-disable react/jsx-no-bind */
  3. import React from 'react';
  4. import { connect } from 'react-redux';
  5. import { openDialog } from '../../base/dialog';
  6. import { translate } from '../../base/i18n/functions';
  7. import EmbedMeetingDialog from './EmbedMeetingDialog';
  8. type Props = {
  9. /**
  10. * Open the embed meeting dialog.
  11. */
  12. openEmbedDialog: Function,
  13. /**
  14. * Invoked to obtain translated strings.
  15. */
  16. t: Function,
  17. };
  18. /**
  19. * Component meant to trigger showing the EmbedMeetingDialog.
  20. *
  21. * @returns {React$Element<any>}
  22. */
  23. function EmbedMeetingTrigger({ t, openEmbedDialog }: Props) {
  24. /**
  25. * Handles opening the embed dialog.
  26. *
  27. * @returns {void}
  28. */
  29. function onClick() {
  30. openEmbedDialog(EmbedMeetingDialog);
  31. }
  32. /**
  33. * KeyPress handler for accessibility.
  34. *
  35. * @param {React.KeyboardEventHandler<HTMLDivElement>} e - The key event to handle.
  36. *
  37. * @returns {void}
  38. */
  39. function onKeyPress(e) {
  40. if (e.key === ' ' || e.key === 'Enter') {
  41. e.preventDefault();
  42. onClick();
  43. }
  44. }
  45. return (
  46. <div
  47. aria-label = { t('embedMeeting.title') }
  48. className = 'embed-meeting-trigger'
  49. onClick = { onClick }
  50. onKeyPress = { onKeyPress }
  51. role = 'button'
  52. tabIndex = { 0 }>
  53. {t('embedMeeting.title')}
  54. </div>
  55. );
  56. }
  57. const mapDispatchToProps = { openEmbedDialog: openDialog };
  58. export default translate(connect(null, mapDispatchToProps)(EmbedMeetingTrigger));