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.

EmbedMeetingTrigger.js 1.5KB

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