From 8bf98bcb0ae2be42cdd54e326e2fb04a6f216734 Mon Sep 17 00:00:00 2001 From: Javier Repetto de los Dolores Date: Mon, 11 Nov 2019 09:27:05 +0100 Subject: [PATCH] not finished --- package-lock.json | 580 ++++++++++++++++++++++++++--- public/index.html | 38 +- src/App.js | 75 +++- src/components/BoxColor.js | 26 ++ src/components/ClickablePicture.js | 27 ++ src/components/Dice.js | 25 ++ src/components/DriverCard.js | 24 ++ src/components/Greeting.js | 28 ++ src/components/IdCard.js | 25 ++ src/components/LikeButton.js | 27 ++ src/components/Random.js | 12 + src/components/Rating.js | 26 ++ 12 files changed, 847 insertions(+), 66 deletions(-) create mode 100644 src/components/BoxColor.js create mode 100644 src/components/ClickablePicture.js create mode 100644 src/components/Dice.js create mode 100644 src/components/DriverCard.js create mode 100644 src/components/Greeting.js create mode 100644 src/components/IdCard.js create mode 100644 src/components/LikeButton.js create mode 100644 src/components/Random.js create mode 100644 src/components/Rating.js diff --git a/package-lock.json b/package-lock.json index 47b084a03..a7d93801a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5127,11 +5127,18 @@ } }, "eslint-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.0.tgz", - "integrity": "sha512-7ehnzPaP5IIEh1r1tkjuIrxqhNkzUJa9z3R92tLJdZIVdWaczEhr3EbhGtsMrVxi1KeR8qA7Off6SWc5WNQqyQ==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", "requires": { - "eslint-visitor-keys": "^1.0.0" + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", + "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==" + } } }, "eslint-visitor-keys": { @@ -6245,13 +6252,13 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", - "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", + "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", "optional": true, "requires": { - "nan": "^2.9.2", - "node-pre-gyp": "^0.10.0" + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" }, "dependencies": { "abbrev": { @@ -6270,7 +6277,7 @@ "optional": true }, "are-we-there-yet": { - "version": "1.1.4", + "version": "1.1.5", "bundled": true, "optional": true, "requires": { @@ -6293,7 +6300,7 @@ } }, "chownr": { - "version": "1.0.1", + "version": "1.1.1", "bundled": true, "optional": true }, @@ -6318,15 +6325,15 @@ "optional": true }, "debug": { - "version": "2.6.9", + "version": "4.1.1", "bundled": true, "optional": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, "deep-extend": { - "version": "0.5.1", + "version": "0.6.0", "bundled": true, "optional": true }, @@ -6369,7 +6376,7 @@ } }, "glob": { - "version": "7.1.2", + "version": "7.1.3", "bundled": true, "optional": true, "requires": { @@ -6387,11 +6394,11 @@ "optional": true }, "iconv-lite": { - "version": "0.4.21", + "version": "0.4.24", "bundled": true, "optional": true, "requires": { - "safer-buffer": "^2.1.0" + "safer-buffer": ">= 2.1.2 < 3" } }, "ignore-walk": { @@ -6448,16 +6455,16 @@ "optional": true }, "minipass": { - "version": "2.2.4", + "version": "2.3.5", "bundled": true, "optional": true, "requires": { - "safe-buffer": "^5.1.1", + "safe-buffer": "^5.1.2", "yallist": "^3.0.0" } }, "minizlib": { - "version": "1.1.0", + "version": "1.2.1", "bundled": true, "optional": true, "requires": { @@ -6473,32 +6480,32 @@ } }, "ms": { - "version": "2.0.0", + "version": "2.1.1", "bundled": true, "optional": true }, "needle": { - "version": "2.2.0", + "version": "2.3.0", "bundled": true, "optional": true, "requires": { - "debug": "^2.1.2", + "debug": "^4.1.0", "iconv-lite": "^0.4.4", "sax": "^1.2.4" } }, "node-pre-gyp": { - "version": "0.10.0", + "version": "0.12.0", "bundled": true, "optional": true, "requires": { "detect-libc": "^1.0.2", "mkdirp": "^0.5.1", - "needle": "^2.2.0", + "needle": "^2.2.1", "nopt": "^4.0.1", "npm-packlist": "^1.1.6", "npmlog": "^4.0.2", - "rc": "^1.1.7", + "rc": "^1.2.7", "rimraf": "^2.6.1", "semver": "^5.3.0", "tar": "^4" @@ -6514,12 +6521,12 @@ } }, "npm-bundled": { - "version": "1.0.3", + "version": "1.0.6", "bundled": true, "optional": true }, "npm-packlist": { - "version": "1.1.10", + "version": "1.4.1", "bundled": true, "optional": true, "requires": { @@ -6586,11 +6593,11 @@ "optional": true }, "rc": { - "version": "1.2.7", + "version": "1.2.8", "bundled": true, "optional": true, "requires": { - "deep-extend": "^0.5.1", + "deep-extend": "^0.6.0", "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" @@ -6618,15 +6625,15 @@ } }, "rimraf": { - "version": "2.6.2", + "version": "2.6.3", "bundled": true, "optional": true, "requires": { - "glob": "^7.0.5" + "glob": "^7.1.3" } }, "safe-buffer": { - "version": "5.1.1", + "version": "5.1.2", "bundled": true, "optional": true }, @@ -6641,7 +6648,7 @@ "optional": true }, "semver": { - "version": "5.5.0", + "version": "5.7.0", "bundled": true, "optional": true }, @@ -6687,16 +6694,16 @@ "optional": true }, "tar": { - "version": "4.4.1", + "version": "4.4.8", "bundled": true, "optional": true, "requires": { - "chownr": "^1.0.1", + "chownr": "^1.1.1", "fs-minipass": "^1.2.5", - "minipass": "^2.2.4", - "minizlib": "^1.1.0", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.1", + "safe-buffer": "^5.1.2", "yallist": "^3.0.2" } }, @@ -6706,11 +6713,11 @@ "optional": true }, "wide-align": { - "version": "1.1.2", + "version": "1.1.3", "bundled": true, "optional": true, "requires": { - "string-width": "^1.0.2" + "string-width": "^1.0.2 || 2" } }, "wrappy": { @@ -6719,7 +6726,7 @@ "optional": true }, "yallist": { - "version": "3.0.2", + "version": "3.0.3", "bundled": true, "optional": true } @@ -6886,9 +6893,9 @@ "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==" }, "handlebars": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", - "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.1.tgz", + "integrity": "sha512-C29UoFzHe9yM61lOsIlCE5/mQVGrnIOrOq7maQl76L7tYPCgC1og0Ajt6uWnX4ZTxBPnjw+CUvawphwCfJgUnA==", "requires": { "neo-async": "^2.6.0", "optimist": "^0.6.1", @@ -12746,6 +12753,489 @@ "webpack-dev-server": "3.1.14", "webpack-manifest-plugin": "2.0.4", "workbox-webpack-plugin": "3.6.3" + }, + "dependencies": { + "fsevents": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", + "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", + "optional": true, + "requires": { + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.5.1", + "bundled": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.21", + "bundled": true, + "optional": true, + "requires": { + "safer-buffer": "^2.1.0" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "optional": true + }, + "minipass": { + "version": "2.2.4", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.1", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.1.0", + "bundled": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "needle": { + "version": "2.2.0", + "bundled": true, + "optional": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.0", + "bundled": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.0", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.1.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true, + "optional": true + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "rc": { + "version": "1.2.7", + "bundled": true, + "optional": true, + "requires": { + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "optional": true, + "requires": { + "glob": "^7.0.5" + } + }, + "safe-buffer": { + "version": "5.1.1", + "bundled": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "optional": true + }, + "semver": { + "version": "5.5.0", + "bundled": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "tar": { + "version": "4.4.1", + "bundled": true, + "optional": true, + "requires": { + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.2.4", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.1", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "optional": true, + "requires": { + "string-width": "^1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true, + "optional": true + } + } + } } }, "read-pkg": { diff --git a/public/index.html b/public/index.html index 75980d58e..37d674589 100755 --- a/public/index.html +++ b/public/index.html @@ -1,19 +1,17 @@ - - - - - - - - - React App - - - -
- - - + + + \ No newline at end of file diff --git a/src/App.js b/src/App.js index e7ca67f20..063fe72e8 100755 --- a/src/App.js +++ b/src/App.js @@ -1,14 +1,85 @@ import React, { Component } from 'react'; +import IdCard from "./components/IdCard"; +import Greetings from "./components/Greeting"; +import Random from './components/Random'; +import BoxColor from "./components/BoxColor"; +import Rating from "./components/Rating"; +import DriverCard from "./components/DriverCard"; +import LikeButton from "./components/LikeButton"; +import ClickablePicture from "./components/ClickablePicture"; +import Dice from "./components/Dice"; + class App extends Component { render() { return (

IdCard

- {/* TODO: Use the IdCard component */} + + +

Greetings

- {/* TODO: Use the Greetings component */} + + Ludwig + François + +

Random

+ + + + +

BoxColor

+ + + + +

Rating

+ 0 + 1.49 + 1.5 + 3 + 4 + 5 + +

Driver Card

+ + + + + + + + +
); } diff --git a/src/components/BoxColor.js b/src/components/BoxColor.js new file mode 100644 index 000000000..9fc06376f --- /dev/null +++ b/src/components/BoxColor.js @@ -0,0 +1,26 @@ +import React, { Component } from 'react' + +export default class BoxColor extends Component { + + toHexadecimal(number) { + const hex = number.toString(16) + if (hex.toString().length < 2) { + return `${hex}${hex}` + } + return `${hex}` + } + + bgcolor = { + backgroundColor: `rgb(${this.props.r}, ${this.props.g}, ${this.props.b})` + } + + render() { + + return ( +
+

rgb({this.props.r},{this.props.g},{this.props.b})

+

#{this.toHexadecimal(this.props.r)}{this.toHexadecimal(this.props.g)}{this.toHexadecimal(this.props.b)}

+
+ ) + } +} diff --git a/src/components/ClickablePicture.js b/src/components/ClickablePicture.js new file mode 100644 index 000000000..30e905c1f --- /dev/null +++ b/src/components/ClickablePicture.js @@ -0,0 +1,27 @@ +import React, { Component } from 'react' + +export default class ClickablePicture extends Component { + + state = { + showGlasses: false + } + + toggleShowGlasses() { + this.setState({ + showGlasses: !this.state.showGlasses + }) + } + + render() { + return ( +
+ { + this.state.showGlasses ? + this.toggleShowGlasses()} src={this.props.imgClicked} alt="" /> + : + this.toggleShowGlasses()} src={this.props.img} alt="" /> + } +
+ ) + } +} diff --git a/src/components/Dice.js b/src/components/Dice.js new file mode 100644 index 000000000..b9f532ca8 --- /dev/null +++ b/src/components/Dice.js @@ -0,0 +1,25 @@ +import React, { Component } from 'react' + +export default class Dice extends Component { + + state = { + diceNum: `/img/dice${Math.floor(Math.random() * 6)}.png` + } + + RollDice() { + setTimeout(() => { + + this.setState({ + diceNum: `/img/dice${Math.floor(Math.random() * 5 + 1)}.png` + }) + }, 1000) + } + + render() { + return ( +
+ this.RollDice()} src={this.state.diceNum} /> +
+ ) + } +} diff --git a/src/components/DriverCard.js b/src/components/DriverCard.js new file mode 100644 index 000000000..89bc95a62 --- /dev/null +++ b/src/components/DriverCard.js @@ -0,0 +1,24 @@ +import React, { Component } from 'react' +import Rating from "./Rating" + +export default class DriverCard extends Component { + + flex = { + display: "flex", + alignItems: "center", + backgroundColor: "lightblue" + } + + render() { + return ( +
+ +
+

{this.props.name}

+ {this.props.rating} +

{this.props.car.model} - {this.props.car.licensePlate}

+
+
+ ) + } +} diff --git a/src/components/Greeting.js b/src/components/Greeting.js new file mode 100644 index 000000000..3aac801e7 --- /dev/null +++ b/src/components/Greeting.js @@ -0,0 +1,28 @@ +import React, { Component } from 'react' + +export default class Greetings extends Component { + + translate(language) { + switch (language) { + case "en": + return "Helo " + break; + case "es": + return "Hola " + break; + case "de": + return "Hallo " + break; + case "fr": + return "Bonjour " + break; + } + } + + render() { + return ( +

{this.translate(this.props.lang)}{this.props.children}

+ ) + } +} + diff --git a/src/components/IdCard.js b/src/components/IdCard.js new file mode 100644 index 000000000..1718c64a2 --- /dev/null +++ b/src/components/IdCard.js @@ -0,0 +1,25 @@ +import React from 'react' + +export default function IdCard(props) { + + const height = props.height / 100; + + + const flex = { + display: "flex", + border: "1px solid black" + } + + return ( +
+ +
+

First name: {props.lastName}

+

Last name: {props.firstName}

+

Gender: {props.gender}

+

Heigth: {height} m

+

Birth: {props.birth}

+
+
+ ) +} diff --git a/src/components/LikeButton.js b/src/components/LikeButton.js new file mode 100644 index 000000000..9253f65c8 --- /dev/null +++ b/src/components/LikeButton.js @@ -0,0 +1,27 @@ +import React, { Component } from 'react' + +export default class LikeButton extends Component { + + + state = { + likes: 0, + colors: ['purple', 'blue', 'green', 'yellow', 'orange', 'red'] + } + + bgColor = { + backgroundColor: `${this.state.colors[this.state.likes % 6]}` + } + + addLike() { + this.setState({ + likes: this.state.likes + 1 + }) + console.log(this.state.colors[this.state.likes % 6]) + } + + render() { + return ( + + ) + } +} diff --git a/src/components/Random.js b/src/components/Random.js new file mode 100644 index 000000000..eb716feb6 --- /dev/null +++ b/src/components/Random.js @@ -0,0 +1,12 @@ +import React, { Component } from 'react' + +export default class Random extends Component { + + number = Math.floor(Math.random() * this.props.max); + + render() { + return ( +

Random value between {this.props.min} and {this.props.max} => {this.number}

+ ) + } +} diff --git a/src/components/Rating.js b/src/components/Rating.js new file mode 100644 index 000000000..821a7ebb1 --- /dev/null +++ b/src/components/Rating.js @@ -0,0 +1,26 @@ +import React, { Component } from 'react' + +export default class Rating extends Component { + + printStars(number) { + number = Math.round(number) + let string = "" + for (let i = 0; i < number; i++) { + string += "★" + } + for (let i = 0; i < 5 - number; i++) { + string += "☆" + } + return string + } + + render() { + return ( +
+ { +

{this.printStars(this.props.children)}

+ } +
+ ) + } +}