diff --git a/src/components/BtnGenerate/BtnGenerate.js b/src/components/BtnGenerate/BtnGenerate.js index 14637e0..79c2788 100644 --- a/src/components/BtnGenerate/BtnGenerate.js +++ b/src/components/BtnGenerate/BtnGenerate.js @@ -3,8 +3,14 @@ import './BtnGenerate.css'; export default class BtnGenerate extends Component { render() { + const { onClick } = this.props; + return ( - ); diff --git a/src/components/BtnGenerate/style.css b/src/components/BtnGenerate/style.css deleted file mode 100644 index e69de29..0000000 diff --git a/src/components/LengthCaracters/LengthCaracters.js b/src/components/LengthCaracters/LengthCaracters.js index f4123a4..eae01f5 100644 --- a/src/components/LengthCaracters/LengthCaracters.js +++ b/src/components/LengthCaracters/LengthCaracters.js @@ -1,21 +1,11 @@ import React, { Component } from 'react'; +import PropTypes from 'prop-types'; import './LengthCaracters.css'; export default class LengthCaracters extends Component { - constructor() { - super (); - - this.state = { - length: '4', - } - } - - handleChange = ({ target }) => { - this.setState({ length: target.value }) - } render() { - const { length } = this.state; + const { onChange, length } = this.props; return (
@@ -24,14 +14,14 @@ export default class LengthCaracters extends Component { 4 - 32 + 20
@@ -39,3 +29,8 @@ export default class LengthCaracters extends Component { ); } } + +LengthCaracters.propTypes = { + onChange: PropTypes.func, + length: PropTypes.string, +}.isRequired; diff --git a/src/components/Main/Main.js b/src/components/Main/Main.js index 60ba1ea..cb0683c 100644 --- a/src/components/Main/Main.js +++ b/src/components/Main/Main.js @@ -1,16 +1,54 @@ import React, { Component } from 'react'; import LengthCaracters from '../LengthCaracters/LengthCaracters'; import Settings from '../Settings/Settings'; +import letters from '../../data/letters'; import './Main.css' export default class Main extends Component { + constructor() { + super(); + + this.state = { + password: '', + lengthPassword: '4', + } + } + + handleLength = ({ target: { value } }) => { + this.setState({ lengthPassword: value }); + } + + createPassword = () => { + const { lengthPassword } = this.state; + let password = ''; + + for (let index = 1; index <= lengthPassword; index += 1) { + const index = Math.ceil(Math.random() * letters.length) - 1; + password += letters[index]; + }; + + return password; + } + + handleClick = (event) => { + event.preventDefault(); + const password = this.createPassword(); + + this.setState({ password }); + } + render() { + const { password, lengthPassword } = this.state; + return (
-

CLICK GENERATE

+ { password.length === 0 + ?

CLICK GENERATE

+ :

{ password }

+ } - - + +
); } diff --git a/src/components/Settings/Settings.js b/src/components/Settings/Settings.js index a1db8e6..4703a5e 100644 --- a/src/components/Settings/Settings.js +++ b/src/components/Settings/Settings.js @@ -1,10 +1,12 @@ import React, { Component } from 'react'; +import PropTypes from 'prop-types'; import Checkbox from '../Checkbox/Checkbox'; import BtnGenerate from '../BtnGenerate/BtnGenerate'; import './Settings.css'; export default class Settings extends Component { render() { + const { onClick } = this.props; return (

SETTINGS

@@ -28,8 +30,12 @@ export default class Settings extends Component { id="settings_symbols" /> - + ); } } + +Settings.propTypes = { + onClick: PropTypes.func, +}.isRequired; diff --git a/src/data/letters.js b/src/data/letters.js new file mode 100644 index 0000000..143b364 --- /dev/null +++ b/src/data/letters.js @@ -0,0 +1,4 @@ +const letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', + 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']; + +export default letters; diff --git a/src/data/numbers.js b/src/data/numbers.js new file mode 100644 index 0000000..49f4586 --- /dev/null +++ b/src/data/numbers.js @@ -0,0 +1,3 @@ +const numbers = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']; + +export default numbers; diff --git a/src/data/symbols.js b/src/data/symbols.js new file mode 100644 index 0000000..469e4d1 --- /dev/null +++ b/src/data/symbols.js @@ -0,0 +1,5 @@ +const symbols = ['>', '<', '@', '?', '/', '+', '-', '!', '#', '$', '%', '¨', '&', '*', + '(', ')', '_', '=', '°', '®', 'ŧ', 'ø', '[', ']', '~', '^', '}', '{', '|', '.', ',', + ':', ';']; + +export default symbols;