Advertisement
Guest User

checkboxWalidator

a guest
Jun 17th, 2019
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import React from 'react';
  2. import ReactDOM from 'react-dom';
  3. import './index.css';
  4. // import App from './App';
  5. // import * as serviceWorker from './serviceWorker';
  6.  
  7.  
  8. const DisplayMessage = (inSubmit,isCheckedRodo,isCheckedMail) => {
  9.     if(inSubmit){
  10.         if(isCheckedRodo && isCheckedMail){
  11.             return (<p>Wyslane</p>)
  12.         } else {
  13.             return (<p>Nie wyslane</p>)
  14.         }
  15.     } else { return null }
  16. }
  17.  
  18. const InputBoxMust = (props) => {
  19.   return (
  20.     <div>
  21.         *<input type="checkbox" id={props.id} onChange={props.onChange} checked={props.checked}/>
  22.         <label htmlFor={props.id}>{props.title}</label>
  23.     </div>
  24.   )  
  25. }
  26.  
  27. const InputBox = (props) => {
  28.     return (
  29.         <div>
  30.             <input type="checkbox" id={props.id}/>
  31.             <label htmlFor={props.id}>{props.title}</label>
  32.         </div>        
  33.     )
  34. }
  35.  
  36. const RodoForm = (props) => {
  37.    
  38.     return (
  39.         <form onSubmit={props.submit}>
  40.             <InputBoxMust
  41.                 id="rodo"
  42.                 title="Zgoda na publikacje danych"
  43.                 onChange={props.changeRodo}
  44.                 checked={props.checkedRodo}
  45.             />
  46.             <InputBoxMust
  47.                 id="email"
  48.                 title="Zgoda na dostawanie mail"
  49.                 onChange={props.changeMail}
  50.                 checked={props.checkedMail}
  51.             />
  52.             <InputBox
  53.                 id='newsletter'
  54.                 title='Zgoda na newsletter'
  55.             />
  56.             <InputBox
  57.                 id='discount'
  58.                 title='Zgoda na dostawanie rabatow'
  59.             />
  60.             <div>
  61.                 <button type="submit">Wyslij</button>
  62.             </div>
  63.         </form>      
  64.     )
  65. }
  66.  
  67. class RodoCheckbox extends React.Component{
  68.  
  69.     state = {
  70.         isCheckedRodo:false,
  71.         isCheckedMail:false,
  72.         inSubmit:false
  73.     }
  74.  
  75.     handleCheckCheckboxRodo = () => {
  76.         this.setState({
  77.             isCheckedRodo:!this.state.isCheckedRodo,
  78.             inSubmit:false
  79.         })
  80.     }
  81.  
  82.     handleCheckCheckboxMail = () => {
  83.         this.setState({
  84.             isCheckedMail:!this.state.isCheckedMail,
  85.             inSubmit:false
  86.         })
  87.     }
  88.  
  89.     handleFormSubmitted = (e) => {
  90.         e.preventDefault();
  91.         this.setState({
  92.             inSubmit:!this.state.inSubmit
  93.         })
  94.     }
  95.  
  96.     render(){
  97.         const { inSubmit, isCheckedMail, isCheckedRodo } = this.state
  98.         return (
  99.             <>
  100.             <RodoForm
  101.                 submit={this.handleFormSubmitted}
  102.                 changeMail={this.handleCheckCheckboxMail}
  103.                 changeRodo={this.handleCheckCheckboxRodo}
  104.                 checkedRodo={isCheckedRodo}
  105.                 checkedMail={isCheckedMail}
  106.             />
  107.             {DisplayMessage(inSubmit,isCheckedRodo,isCheckedMail)}
  108.             </>
  109.         )
  110.     }
  111. }
  112.  
  113. ReactDOM.render(<RodoCheckbox/>,document.getElementById('root'));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement