ShortcutsModal.tsx 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. import React from 'react';
  2. import { useTranslation } from 'next-i18next';
  3. import { Modal, ModalHeader, ModalBody } from 'reactstrap';
  4. import KeyboardReturnEnterIcon from '~/components/Icons/KeyboardReturnEnterIcon';
  5. import { useShortcutsModal } from '~/stores/modal';
  6. import styles from './ShortcutsModal.module.scss';
  7. const ShortcutsModal = (): JSX.Element => {
  8. const { t } = useTranslation();
  9. const { data: status, close } = useShortcutsModal();
  10. // add classes to cmd-key by OS
  11. const platform = window.navigator.platform.toLowerCase();
  12. const isMac = (platform.indexOf('mac') > -1);
  13. const additionalClassByOs = isMac ? 'mac' : 'key-longer win';
  14. return (
  15. <>
  16. { status != null && (
  17. <Modal id="shortcuts-modal" size="lg" isOpen={status.isOpened} toggle={close} className={`shortcuts-modal ${styles['shortcuts-modal']}`}>
  18. <ModalHeader tag="h4" toggle={close} className="bg-primary text-light">
  19. {t('Shortcuts')}
  20. </ModalHeader>
  21. <ModalBody>
  22. <div className="container">
  23. <div className="row">
  24. <div className="col-lg-6">
  25. <h3>
  26. <strong>{t('modal_shortcuts.global.title')}</strong>
  27. </h3>
  28. <table className="table">
  29. <tbody>
  30. <tr>
  31. <th>
  32. {/* eslint-disable-next-line react/no-danger */}
  33. <span dangerouslySetInnerHTML={{ __html: t('modal_shortcuts.global.Open/Close shortcut help') }} />:
  34. </th>
  35. <td>
  36. <span className={`key cmd-key ${additionalClassByOs}`}></span> + <span className="key">/</span>
  37. </td>
  38. </tr>
  39. <tr>
  40. <th>{t('modal_shortcuts.global.Create Page')}:</th>
  41. <td>
  42. <span className="key">C</span>
  43. </td>
  44. </tr>
  45. <tr>
  46. <th>{t('modal_shortcuts.global.Edit Page')}:</th>
  47. <td>
  48. <span className="key">E</span>
  49. </td>
  50. </tr>
  51. <tr>
  52. <th>{t('modal_shortcuts.global.Search')}:</th>
  53. <td><span className="key">/</span></td>
  54. </tr>
  55. <tr>
  56. <th>
  57. {/* eslint-disable-next-line react/no-danger */}
  58. <span dangerouslySetInnerHTML={{ __html: t('modal_shortcuts.global.Show Contributors') }} />:
  59. </th>
  60. <td className='text-nowrap'>
  61. <a href="{ t('modal_shortcuts.global.konami_code_url') }" target="_blank">
  62. {t('modal_shortcuts.global.Konami Code')}
  63. </a>
  64. <br />
  65. <span className="key key-small">&uarr;</span>&nbsp;<span className="key key-small">&uarr;</span>
  66. <span className="key key-small">&darr;</span>&nbsp;<span className="key key-small">&darr;</span>
  67. <br />
  68. <span className="key key-small">&larr;</span>&nbsp;<span className="key key-small">&rarr;</span>
  69. <span className="key key-small">&larr;</span>&nbsp;<span className="key key-small">&rarr;</span>
  70. <br />
  71. <span className="key key-small">B</span>&nbsp;<span className="key key-small">A</span>
  72. </td>
  73. </tr>
  74. <tr>
  75. <th>{t('modal_shortcuts.global.MirrorMode')}:</th>
  76. <td className='text-nowrap'>
  77. <a href="{ t('modal_shortcuts.global.konami_code_url') }" target="_blank">
  78. {t('modal_shortcuts.global.Konami Code')}
  79. </a>
  80. <br />
  81. <span className="key key-small">X</span>&nbsp;<span className="key key-small">X</span>
  82. <span className="key key-small">B</span>&nbsp;<span className="key key-small">B</span>
  83. <br />
  84. <span className="key key-small">A</span>&nbsp;<span className="key key-small">Y</span>
  85. <span className="key key-small">A</span>&nbsp;<span className="key key-small">Y</span>
  86. <br />
  87. <span className="key key-small">&darr;</span>&nbsp;<span className="key key-small">&larr;</span>
  88. </td>
  89. </tr>
  90. </tbody>
  91. </table>
  92. </div>
  93. <div className="col-lg-6">
  94. <h3>
  95. <strong>{t('modal_shortcuts.editor.title')}</strong>
  96. </h3>
  97. <table className="table">
  98. <tbody>
  99. <tr>
  100. <th>{t('modal_shortcuts.editor.Indent')}:</th>
  101. <td>
  102. <span className="key key-longer">Tab</span>
  103. </td>
  104. </tr>
  105. <tr>
  106. <th>{t('modal_shortcuts.editor.Outdent')}:</th>
  107. <td className="text-nowrap">
  108. <span className="key key-long">Shift</span> + <span className="key key-longer">Tab</span>
  109. </td>
  110. </tr>
  111. <tr>
  112. <th>{t('modal_shortcuts.editor.Save Page')}:</th>
  113. <td>
  114. <span className={`key cmd-key ${additionalClassByOs}`}></span> + <span className="key">S</span>
  115. </td>
  116. </tr>
  117. <tr>
  118. <th>{t('modal_shortcuts.editor.Delete Line')}:</th>
  119. <td>
  120. <span className={`key cmd-key ${additionalClassByOs}`}></span> + <span className="key">D</span>
  121. </td>
  122. </tr>
  123. </tbody>
  124. </table>
  125. <h3>
  126. <strong>{t('modal_shortcuts.commentform.title')}</strong>
  127. </h3>
  128. <table className="table">
  129. <tbody>
  130. <tr>
  131. <th>{t('modal_shortcuts.commentform.Post')}:</th>
  132. <td className="text-nowrap">
  133. <span className={`key cmd-key ${additionalClassByOs}`}></span> +
  134. <span className="key key-longer">
  135. <KeyboardReturnEnterIcon />
  136. </span>
  137. </td>
  138. </tr>
  139. <tr>
  140. <th>{t('modal_shortcuts.editor.Delete Line')}:</th>
  141. <td>
  142. <span className={`key cmd-key ${additionalClassByOs}`}></span> + <span className="key">D</span>
  143. </td>
  144. </tr>
  145. </tbody>
  146. </table>
  147. </div>
  148. </div>
  149. </div>
  150. </ModalBody>
  151. </Modal>
  152. ) }
  153. </>
  154. );
  155. };
  156. export default ShortcutsModal;