Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

DialInDialog.js 5.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. // @flow
  2. import { makeStyles } from '@material-ui/styles';
  3. import React from 'react';
  4. import { translate } from '../../../base/i18n';
  5. import { Icon, IconArrowLeft } from '../../../base/icons';
  6. import { ActionButton } from '../../../base/premeeting';
  7. import { getCountryCodeFromPhone } from '../../utils';
  8. import Label from '../Label';
  9. type Props = {
  10. /**
  11. * The number to call in order to join the conference.
  12. */
  13. number: string,
  14. /**
  15. * Handler used when clicking the back button.
  16. */
  17. onBack: Function,
  18. /**
  19. * Click handler for the text button.
  20. */
  21. onTextButtonClick: Function,
  22. /**
  23. * Click handler for primary button.
  24. */
  25. onPrimaryButtonClick: Function,
  26. /**
  27. * Click handler for the small additional text.
  28. */
  29. onSmallTextClick: Function,
  30. /**
  31. * The passCode of the conference.
  32. */
  33. passCode: string,
  34. /**
  35. * Used for translation.
  36. */
  37. t: Function,
  38. };
  39. const useStyles = makeStyles(theme => {
  40. return {
  41. dialInDialog: {
  42. textAlign: 'center',
  43. '& .prejoin-dialog-dialin-header': {
  44. alignItems: 'center',
  45. margin: `${theme.spacing(3)}px 0 ${theme.spacing(5)}px ${theme.spacing(3)}px`,
  46. display: 'flex'
  47. },
  48. '& .prejoin-dialog-dialin-icon': {
  49. marginRight: theme.spacing(3)
  50. },
  51. '& .prejoin-dialog-dialin-num': {
  52. background: '#3e474f',
  53. borderRadius: '4px',
  54. display: 'inline-block',
  55. fontSize: '15px',
  56. lineHeight: '24px',
  57. margin: theme.spacing(1),
  58. padding: theme.spacing(2),
  59. '& .prejoin-dialog-dialin-num-container': {
  60. minHeight: '48px',
  61. margin: `${theme.spacing(2)}px 0`
  62. }
  63. },
  64. '& .prejoin-dialog-dialin-link': {
  65. color: '#6FB1EA',
  66. cursor: 'pointer',
  67. display: 'inline-block',
  68. fontSize: '13px',
  69. lineHeight: '20px',
  70. marginBottom: theme.spacing(4)
  71. },
  72. '& .prejoin-dialog-dialin-spaced-label': {
  73. marginBottom: theme.spacing(3),
  74. marginTop: '28px'
  75. },
  76. '& .prejoin-dialog-dialin-btns > div': {
  77. marginBottom: theme.spacing(3)
  78. }
  79. }
  80. };
  81. });
  82. /**
  83. * This component displays the dialog with all the information
  84. * to join a meeting by calling it.
  85. *
  86. * @param {Props} props - The props of the component.
  87. * @returns {React$Element}
  88. */
  89. function DialinDialog(props: Props) {
  90. const {
  91. number,
  92. onBack,
  93. onPrimaryButtonClick,
  94. onSmallTextClick,
  95. onTextButtonClick,
  96. passCode,
  97. t
  98. } = props;
  99. const classes = useStyles();
  100. const flagClassName = `prejoin-dialog-flag iti-flag ${getCountryCodeFromPhone(
  101. number
  102. )}`;
  103. return (
  104. <div className = { classes.dialInDialog }>
  105. <div className = 'prejoin-dialog-dialin-header'>
  106. <Icon
  107. className = 'prejoin-dialog-icon prejoin-dialog-dialin-icon'
  108. onClick = { onBack }
  109. role = 'button'
  110. size = { 24 }
  111. src = { IconArrowLeft } />
  112. <div className = 'prejoin-dialog-title'>
  113. {t('prejoin.dialInMeeting')}
  114. </div>
  115. </div>
  116. <Label number = { 1 }>{ t('prejoin.dialInPin') }</Label>
  117. <div className = 'prejoin-dialog-dialin-num-container'>
  118. <div className = 'prejoin-dialog-dialin-num'>
  119. <div className = { flagClassName } />
  120. <span>{number}</span>
  121. </div>
  122. <div className = 'prejoin-dialog-dialin-num'>{passCode}</div>
  123. </div>
  124. <div>
  125. <span
  126. className = 'prejoin-dialog-dialin-link'
  127. onClick = { onSmallTextClick }>
  128. {t('prejoin.viewAllNumbers')}
  129. </span>
  130. </div>
  131. <div className = 'prejoin-dialog-delimiter' />
  132. <Label
  133. className = 'prejoin-dialog-dialin-spaced-label'
  134. number = { 2 }>
  135. {t('prejoin.connectedWithAudioQ')}
  136. </Label>
  137. <div className = 'prejoin-dialog-dialin-btns'>
  138. <ActionButton
  139. className = 'prejoin-dialog-btn'
  140. onClick = { onPrimaryButtonClick }
  141. type = 'primary'>
  142. {t('prejoin.joinMeeting')}
  143. </ActionButton>
  144. <ActionButton
  145. className = 'prejoin-dialog-btn'
  146. onClick = { onTextButtonClick }
  147. type = 'text'>
  148. {t('dialog.Cancel')}
  149. </ActionButton>
  150. </div>
  151. </div>
  152. );
  153. }
  154. export default translate(DialinDialog);