ShareLinkForm.jsx 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. import React from 'react';
  2. import { withTranslation } from 'react-i18next';
  3. import { createSubscribedElement } from './UnstatedUtils';
  4. import AppContainer from '../services/AppContainer';
  5. import PageContainer from '../services/PageContainer';
  6. import loggerFactory from '@alias/logger';
  7. const logger = loggerFactory('growi:app');
  8. class ShareLinkForm extends React.Component {
  9. constructor(props) {
  10. super(props);
  11. this.state = {
  12. isGoing: true,
  13. numberOfGuests: 1,
  14. text: ' ',
  15. };
  16. this.handleInputChange = this.handleInputChange.bind(this);
  17. this.handleChange = this.handleChange.bind(this);
  18. this.handleSubmit = this.handleSubmit.bind(this);
  19. }
  20. handleInputChange(event) {
  21. const target = event.target;
  22. const value = target.name === 'isGoing' ? target.checked : target.value;
  23. const name = target.name;
  24. this.setState({
  25. [name]: value
  26. });
  27. console.log(event.target.value);
  28. console.log(event.target.checked);
  29. console.log( event.target.name );
  30. console.log( event.target.type );
  31. console.log( event.target.id );
  32. }
  33. handleChange(event) {
  34. this.setState({ text: event.target.value });
  35. console.log(event.target.value);
  36. }
  37. handleSubmit(event) {
  38. event.preventDefault();
  39. console.log('発行する!');
  40. }
  41. render() {
  42. return (
  43. <div className="share-link-form border">
  44. <h4 className="ml-3">Expiration Date</h4>
  45. <form onSubmit={this.handleSubmit}>
  46. <div className="form-group">
  47. <div className="custom-control custom-radio offset-4 mb-2">
  48. <input
  49. type="radio"
  50. className="custom-control-input"
  51. id="customRadio1"
  52. name="isGoing"
  53. value="customRadio1"
  54. checked={this.state.isGoing}
  55. onChange={this.handleInputChange}
  56. />
  57. <label className="custom-control-label" htmlFor="customRadio1">Unlimited</label>
  58. </div>
  59. <div className="custom-control custom-radio offset-4 mb-2">
  60. <input
  61. type="radio"
  62. className="custom-control-input"
  63. id="customRadio2"
  64. value="customRadio2"
  65. checked={this.state.isGoing}
  66. onChange={this.handleInputChange}
  67. name="isGoing"
  68. />
  69. <label className="custom-control-label" htmlFor="customRadio2">
  70. <div className="row align-items-center m-0">
  71. <input
  72. type="number"
  73. min="1"
  74. max="7"
  75. className="form-control col-4"
  76. name="numberOfGuests"
  77. value={this.state.numberOfGuests}
  78. onChange={this.handleInputChange}
  79. />
  80. <span className="col-auto">Days</span>
  81. </div>
  82. </label>
  83. </div>
  84. <div className="custom-control custom-radio offset-4 mb-2">
  85. <input
  86. type="radio"
  87. className="custom-control-input"
  88. id="customRadio3"
  89. name="isGoing"
  90. value="customRadio3"
  91. checked={this.state.isGoing}
  92. onChange={this.handleInputChange}
  93. />
  94. <label className="custom-control-label" htmlFor="customRadio3">
  95. Custom
  96. <div className="date-picker">Date Picker</div>
  97. </label>
  98. </div>
  99. <hr />
  100. <div className="form-group row">
  101. <label htmlFor="inputDesc" className="col-md-4 col-form-label">Description</label>
  102. <div className="col-md-4">
  103. <input type="text" className="form-control" id="inputDesc" placeholder="Enter description" value={this.state.text} onChange={this.handleChange}></input>
  104. </div>
  105. </div>
  106. <div className="form-group row">
  107. <div className="offset-8 col">
  108. <button type="button" className="btn btn-primary" type="submit" value="Submit" >Issue</button>
  109. </div>
  110. </div>
  111. </div>
  112. </form>
  113. </div>
  114. );
  115. };
  116. }
  117. const ShareLinkFormWrapper = (props) => {
  118. return createSubscribedElement(ShareLinkForm, props, [AppContainer, PageContainer]);
  119. };
  120. export default withTranslation()(ShareLinkFormWrapper);