PresentationForm.jsx 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. import React 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 PresentationForm extends React.Component {
  8. render() {
  9. const { t, markDownSettingContainer } = this.props;
  10. const { pageBreakOption, customRegularExpression } = markDownSettingContainer.state;
  11. return (
  12. <fieldset className="form-group row my-2">
  13. <label className="col-xs-3 control-label text-right">
  14. { t('markdown_setting.Page break setting') }
  15. </label>
  16. <div className="col-xs-3 radio radio-primary">
  17. <input
  18. type="radio"
  19. id="pageBreakOption1"
  20. checked={pageBreakOption === 1}
  21. onChange={() => { markDownSettingContainer.setState({ pageBreakOption: 1 }) }}
  22. />
  23. <label htmlFor="pageBreakOption1">
  24. <p className="font-weight-bold">{ t('markdown_setting.Preset one separator') }</p>
  25. <div className="mt-3">
  26. { t('markdown_setting.Preset one separator desc') }
  27. <pre><code>{ t('markdown_setting.Preset one separator value') }</code></pre>
  28. </div>
  29. </label>
  30. </div>
  31. <div className="col-xs-3 radio radio-primary mt-3">
  32. <input
  33. type="radio"
  34. id="pageBreakOption2"
  35. checked={pageBreakOption === 2}
  36. onChange={() => { markDownSettingContainer.setState({ pageBreakOption: 2 }) }}
  37. />
  38. <label htmlFor="pageBreakOption2">
  39. <p className="font-weight-bold">{ t('markdown_setting.Preset two separator') }</p>
  40. <div className="mt-3">
  41. { t('markdown_setting.Preset two separator desc') }
  42. <pre><code>{ t('markdown_setting.Preset two separator value') }</code></pre>
  43. </div>
  44. </label>
  45. </div>
  46. <div className="col-xs-3 radio radio-primary mt-3">
  47. <input
  48. type="radio"
  49. id="pageBreakOption3"
  50. checked={pageBreakOption === 3}
  51. onChange={() => { markDownSettingContainer.setState({ pageBreakOption: 3 }) }}
  52. />
  53. <label htmlFor="pageBreakOption3">
  54. <p className="font-weight-bold">{ t('markdown_setting.Custom separator') }</p>
  55. <div className="mt-3">
  56. { t('markdown_setting.Custom separator desc') }
  57. <input
  58. className="form-control"
  59. value={customRegularExpression}
  60. onChange={(e) => { markDownSettingContainer.setState({ customRegularExpression: e.target.value }) }}
  61. />
  62. </div>
  63. </label>
  64. </div>
  65. <div className="form-group my-3">
  66. <div className="col-xs-offset-4 col-xs-5">
  67. {/* TODO GW-220 create function */}
  68. <button type="submit" className="btn btn-primary">{ t('Update') }</button>
  69. </div>
  70. </div>
  71. </fieldset>
  72. );
  73. }
  74. }
  75. const PresentationFormWrapper = (props) => {
  76. return createSubscribedElement(PresentationForm, props, [AppContainer, MarkDownSettingContainer]);
  77. };
  78. PresentationForm.propTypes = {
  79. t: PropTypes.func.isRequired, // i18next
  80. appContainer: PropTypes.instanceOf(AppContainer).isRequired,
  81. markDownSettingContainer: PropTypes.instanceOf(MarkDownSettingContainer).isRequired,
  82. };
  83. export default withTranslation()(PresentationFormWrapper);