PresentationLineBreakOptions.jsx 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. import React, { Fragment } from 'react';
  2. import PropTypes from 'prop-types';
  3. import { withTranslation } from 'react-i18next';
  4. import { createSubscribedElement } from '../../UnstatedUtils';
  5. import AppContainer from '../../../services/AppContainer';
  6. import MarkDownSettingContainer from '../../../services/MarkDownSettingContainer';
  7. class PresentationLineBreakOptions extends React.Component {
  8. render() {
  9. const { t, markDownSettingContainer } = this.props;
  10. const { pageBreakOption, customRegularExpression } = markDownSettingContainer.state;
  11. return (
  12. <Fragment>
  13. <div className="col-xs-3 radio radio-primary">
  14. <input
  15. type="radio"
  16. id="pageBreakOption1"
  17. checked={pageBreakOption === 1}
  18. onChange={() => { markDownSettingContainer.setState({ pageBreakOption: 1 }) }}
  19. />
  20. <label htmlFor="pageBreakOption1">
  21. <p className="font-weight-bold">{ t('markdown_setting.Preset one separator') }</p>
  22. <div className="mt-3">
  23. { t('markdown_setting.Preset one separator desc') }
  24. <pre><code>{ t('markdown_setting.Preset one separator value') }</code></pre>
  25. </div>
  26. </label>
  27. </div>
  28. <div className="col-xs-3 radio radio-primary mt-3">
  29. <input
  30. type="radio"
  31. id="pageBreakOption2"
  32. checked={pageBreakOption === 2}
  33. onChange={() => { markDownSettingContainer.setState({ pageBreakOption: 2 }) }}
  34. />
  35. <label htmlFor="pageBreakOption2">
  36. <p className="font-weight-bold">{ t('markdown_setting.Preset two separator') }</p>
  37. <div className="mt-3">
  38. { t('markdown_setting.Preset two separator desc') }
  39. <pre><code>{ t('markdown_setting.Preset two separator value') }</code></pre>
  40. </div>
  41. </label>
  42. </div>
  43. <div className="col-xs-3 radio radio-primary mt-3">
  44. <input
  45. type="radio"
  46. id="pageBreakOption3"
  47. checked={pageBreakOption === 3}
  48. onChange={() => { markDownSettingContainer.setState({ pageBreakOption: 3 }) }}
  49. />
  50. <label htmlFor="pageBreakOption3">
  51. <p className="font-weight-bold">{ t('markdown_setting.Custom separator') }</p>
  52. <div className="mt-3">
  53. { t('markdown_setting.Custom separator desc') }
  54. <input
  55. className="form-control"
  56. value={customRegularExpression}
  57. onChange={(e) => { markDownSettingContainer.setState({ customRegularExpression: e.target.value }) }}
  58. />
  59. </div>
  60. </label>
  61. </div>
  62. </Fragment>
  63. );
  64. }
  65. }
  66. const PresentationLineBreakOptionsWrapper = (props) => {
  67. return createSubscribedElement(PresentationLineBreakOptions, props, [AppContainer, MarkDownSettingContainer]);
  68. };
  69. PresentationLineBreakOptions.propTypes = {
  70. t: PropTypes.func.isRequired, // i18next
  71. appContainer: PropTypes.instanceOf(AppContainer).isRequired,
  72. markDownSettingContainer: PropTypes.instanceOf(MarkDownSettingContainer).isRequired,
  73. };
  74. export default withTranslation()(PresentationLineBreakOptionsWrapper);