From 492dedc36ea82b2bbb725e74db53057ad31edbee Mon Sep 17 00:00:00 2001 From: annacv <21217131+annacv@users.noreply.github.com> Date: Tue, 6 Aug 2019 17:04:31 +0200 Subject: [PATCH 01/12] npm fixes --- package-lock.json | 559 ++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 521 insertions(+), 38 deletions(-) diff --git a/package-lock.json b/package-lock.json index 47b084a03..900fb240a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6245,13 +6245,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 +6270,7 @@ "optional": true }, "are-we-there-yet": { - "version": "1.1.4", + "version": "1.1.5", "bundled": true, "optional": true, "requires": { @@ -6293,7 +6293,7 @@ } }, "chownr": { - "version": "1.0.1", + "version": "1.1.1", "bundled": true, "optional": true }, @@ -6318,15 +6318,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 +6369,7 @@ } }, "glob": { - "version": "7.1.2", + "version": "7.1.3", "bundled": true, "optional": true, "requires": { @@ -6387,11 +6387,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 +6448,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 +6473,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 +6514,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 +6586,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 +6618,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 +6641,7 @@ "optional": true }, "semver": { - "version": "5.5.0", + "version": "5.7.0", "bundled": true, "optional": true }, @@ -6687,16 +6687,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 +6706,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 +6719,7 @@ "optional": true }, "yallist": { - "version": "3.0.2", + "version": "3.0.3", "bundled": true, "optional": true } @@ -12746,6 +12746,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": { From 0ed175a64c594641330eefcb034744e19e1d9156 Mon Sep 17 00:00:00 2001 From: annacv <21217131+annacv@users.noreply.github.com> Date: Tue, 6 Aug 2019 17:44:30 +0200 Subject: [PATCH 02/12] IdCard, Greetings, Random components --- src/App.js | 23 +++++++++++++++++++---- src/components/Greetings.js | 14 ++++++++++++++ src/components/IdCard.js | 21 +++++++++++++++++++++ src/components/Random.js | 15 +++++++++++++++ 4 files changed, 69 insertions(+), 4 deletions(-) create mode 100644 src/components/Greetings.js create mode 100644 src/components/IdCard.js create mode 100644 src/components/Random.js diff --git a/src/App.js b/src/App.js index e7ca67f20..ebb80fe71 100755 --- a/src/App.js +++ b/src/App.js @@ -1,14 +1,29 @@ import React, { Component } from 'react'; +import IdCard from './components/IdCard'; +import Greetings from './components/Greetings'; +import Random from './components/Random'; class App extends Component { render() { return (
-

IdCard

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

IdCard

+ -

Greetings

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

Greetings

+ + Ludwig + + +

Random

+ +
); } diff --git a/src/components/Greetings.js b/src/components/Greetings.js new file mode 100644 index 000000000..2f609bb4b --- /dev/null +++ b/src/components/Greetings.js @@ -0,0 +1,14 @@ +import React, { Component } from 'react' + +class Greetings extends Component { + render() { + const { lang, children } = this.props + return ( + <> +
Hallo {children}
+ + ) + } +} + +export default Greetings diff --git a/src/components/IdCard.js b/src/components/IdCard.js new file mode 100644 index 000000000..d3f1c007b --- /dev/null +++ b/src/components/IdCard.js @@ -0,0 +1,21 @@ +import React, { Component } from 'react' + +class IdCard extends Component { + render() { + const { lastName, firstName, gender, height, birth, picture } = this.props; + const birthDate = birth.toDateString(); + return ( +
+ a profile +

{firstName}

+

{lastName}

+

{gender}

+

{height}

+

{birthDate}

+
+ ) + } +} + +export default IdCard + diff --git a/src/components/Random.js b/src/components/Random.js new file mode 100644 index 000000000..3aacc5d0c --- /dev/null +++ b/src/components/Random.js @@ -0,0 +1,15 @@ +import React, { Component } from 'react' + +class Random extends Component { + render() { + const { min, max } = this.props + const randomValue = () => Math.round(Math.random() * (max - min) + min) + return ( +
+ Random value between {min} and {max} => {randomValue()} + + ) + } +} + +export default Random From 0b376192683fc85abc26507d4859cc5873207bee Mon Sep 17 00:00:00 2001 From: annacv <21217131+annacv@users.noreply.github.com> Date: Tue, 6 Aug 2019 19:46:08 +0200 Subject: [PATCH 03/12] Box color component --- src/App.js | 7 +++++++ src/components/BoxColor.js | 21 +++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 src/components/BoxColor.js diff --git a/src/App.js b/src/App.js index ebb80fe71..190bca633 100755 --- a/src/App.js +++ b/src/App.js @@ -2,6 +2,7 @@ import React, { Component } from 'react'; import IdCard from './components/IdCard'; import Greetings from './components/Greetings'; import Random from './components/Random'; +import BoxColor from './components/BoxColor'; class App extends Component { render() { @@ -24,9 +25,15 @@ class App extends Component {

Random

+ +

Box Color

+ +
); } } export default App; + + diff --git a/src/components/BoxColor.js b/src/components/BoxColor.js new file mode 100644 index 000000000..d32447768 --- /dev/null +++ b/src/components/BoxColor.js @@ -0,0 +1,21 @@ +import React from 'react' + +function BoxColor(props) { + const { r, g, b } = props + const colorString = 'rgb(' + r + ',' + g + ',' + b + ')' + // console.log(colorString) + const divStyle = { + backgroundColor: colorString, + //backgroundColor: 'rgb(' + r + ',' + g + ',' + b + ')', + height: '10rem', + width: '10rem' + } + return ( +
+ {colorString} +
+ ) +} + +export default BoxColor + From c4122402b43c65982a84412217db4cda4ee73d4a Mon Sep 17 00:00:00 2001 From: annacv <21217131+annacv@users.noreply.github.com> Date: Tue, 6 Aug 2019 22:41:18 +0200 Subject: [PATCH 04/12] Credit Card component --- src/App.js | 35 +++++++++++++++++++++++++++++++++++ src/components/CreditCard.js | 30 ++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 src/components/CreditCard.js diff --git a/src/App.js b/src/App.js index 190bca633..4c35836dd 100755 --- a/src/App.js +++ b/src/App.js @@ -3,6 +3,7 @@ import IdCard from './components/IdCard'; import Greetings from './components/Greetings'; import Random from './components/Random'; import BoxColor from './components/BoxColor'; +import CreditCard from './components/CreditCard'; class App extends Component { render() { @@ -29,6 +30,40 @@ class App extends Component {

Box Color

+ +

Credit Card

+
+ + + +
); } diff --git a/src/components/CreditCard.js b/src/components/CreditCard.js new file mode 100644 index 000000000..6c94cc7cd --- /dev/null +++ b/src/components/CreditCard.js @@ -0,0 +1,30 @@ +import React from 'react' + +function CreditCard(props) { + const divStyle = { + backgroundColor: props.bgColor, + color: props.color, + display: 'flex', + flexFlow: 'column nowrap' + } + + const cardType = props.type === 'Visa' ? './img/visa.png' : './img/master-card.svg' + + const maskNumber = (number) => { + return number.slice(0, -4).replace(/./g, '·') + number.slice(-4) + } + + return ( +
+ {props.type} + < p className="card-number" > {maskNumber(props.number)}

+
+

Expires: {props.expirationMonth} / {props.expirationYear}

+

{props.bank}

+
+

{props.owner}

+
+ ) +} + +export default CreditCard \ No newline at end of file From 83665e65fdccedff2bef8090579fb35f7801cf62 Mon Sep 17 00:00:00 2001 From: annacv <21217131+annacv@users.noreply.github.com> Date: Wed, 7 Aug 2019 09:02:47 +0200 Subject: [PATCH 05/12] Some styles --- src/App.js | 114 +++++++++++++++++++---------------- src/components/BoxColor.js | 4 +- src/components/CreditCard.js | 14 ++--- src/components/Greetings.js | 2 +- src/components/IdCard.js | 14 +++-- src/index.css | 59 +++++++++++++++++- 6 files changed, 138 insertions(+), 69 deletions(-) diff --git a/src/App.js b/src/App.js index 4c35836dd..d45ea2569 100755 --- a/src/App.js +++ b/src/App.js @@ -9,61 +9,73 @@ class App extends Component { render() { return (
-

IdCard

- +
+

IdCard

+ +
-

Greetings

- - Ludwig - +
+

Greetings

+ +

Hallo Ludwig

+
+
-

Random

- - +
+

Random

+

+

+
-

Box Color

- - +
+

Box Color

+
+ + +
+
-

Credit Card

-
- - - -
+
+

Credit Card

+
+ + + +
+
); } diff --git a/src/components/BoxColor.js b/src/components/BoxColor.js index d32447768..90d92aab9 100644 --- a/src/components/BoxColor.js +++ b/src/components/BoxColor.js @@ -8,7 +8,9 @@ function BoxColor(props) { backgroundColor: colorString, //backgroundColor: 'rgb(' + r + ',' + g + ',' + b + ')', height: '10rem', - width: '10rem' + width: '10rem', + padding: '2rem', + textAlign: 'center' } return (
diff --git a/src/components/CreditCard.js b/src/components/CreditCard.js index 6c94cc7cd..e986fdfc5 100644 --- a/src/components/CreditCard.js +++ b/src/components/CreditCard.js @@ -15,14 +15,14 @@ function CreditCard(props) { } return ( -
- {props.type} - < p className="card-number" > {maskNumber(props.number)}

-
-

Expires: {props.expirationMonth} / {props.expirationYear}

-

{props.bank}

+
+ {props.type} +

{maskNumber(props.number)}

+
+

Expires: {props.expirationMonth} / {props.expirationYear}

+

{props.bank}

-

{props.owner}

+

{props.owner}

) } diff --git a/src/components/Greetings.js b/src/components/Greetings.js index 2f609bb4b..cb33a7694 100644 --- a/src/components/Greetings.js +++ b/src/components/Greetings.js @@ -5,7 +5,7 @@ class Greetings extends Component { const { lang, children } = this.props return ( <> -
Hallo {children}
+
{children}
) } diff --git a/src/components/IdCard.js b/src/components/IdCard.js index d3f1c007b..394eac993 100644 --- a/src/components/IdCard.js +++ b/src/components/IdCard.js @@ -6,12 +6,14 @@ class IdCard extends Component { const birthDate = birth.toDateString(); return (
- a profile -

{firstName}

-

{lastName}

-

{gender}

-

{height}

-

{birthDate}

+ a profile +
+

{firstName}

+

{lastName}

+

{gender}

+

{height}

+

{birthDate}

+
) } diff --git a/src/index.css b/src/index.css index cee5f348f..f042f00f7 100755 --- a/src/index.css +++ b/src/index.css @@ -1,6 +1,6 @@ body { margin: 0; - padding: 0; + padding: 2rem 3.5rem; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; @@ -9,6 +9,59 @@ body { } code { - font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", - monospace; + font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace; } + +p { + margin: 0; +} + +.challenge { + margin: 3.5rem 0; +} + +.card-container, +.card-info { + display: flex; +} + +.card-info { + flex-flow: column nowrap; + justify-content: center; + line-height: 1.8; + padding: 0 1.5rem; +} + +.card-image { + width: 10rem; + height: 10rem; +} + +.boxed-text { + padding: 1.5rem; + border: 1px solid #fabada; +} + +.boxed-text { + margin-bottom: .5rem; +} + +.boxes-container { + display: flex; + flex-flow: row wrap; +} + +.credit-cards { + display: flex; +} + +.cc-container { + display: flex; + padding: 2rem; +} + +.cc-brand { + width: 3.5rem; + height: auto; + align-self: flex-end; +} \ No newline at end of file From 93deb9d4aab93c87e3a40baddf8fc7c309b1a124 Mon Sep 17 00:00:00 2001 From: annacv <21217131+annacv@users.noreply.github.com> Date: Sat, 10 Aug 2019 14:11:31 +0200 Subject: [PATCH 06/12] ColorToHex bonus --- src/components/BoxColor.js | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/src/components/BoxColor.js b/src/components/BoxColor.js index 90d92aab9..5bde25f58 100644 --- a/src/components/BoxColor.js +++ b/src/components/BoxColor.js @@ -6,15 +6,33 @@ function BoxColor(props) { // console.log(colorString) const divStyle = { backgroundColor: colorString, - //backgroundColor: 'rgb(' + r + ',' + g + ',' + b + ')', - height: '10rem', - width: '10rem', + // also works with backgroundColor: 'rgb(' + r + ',' + g + ',' + b + ')', + height: '9rem', + width: '9rem', + display: 'flex', + flexFlow: 'column wrap', + justifyContent: 'center', padding: '2rem', + fontSize: '1.125rem', textAlign: 'center' } + + const colorToHex = (color) => { + let hex = Number(color).toString(16); + return hex.length < 2 ? hex = '0' + hex : hex + } + + let rgbToHex = (r, g, b) => { + const red = colorToHex(r); + const green = colorToHex(g); + const blue = colorToHex(b); + return red + green + blue; + } + return (
- {colorString} +

{colorString}

+

#{rgbToHex(props.r, props.g, props.b)}

) } From ee43f74bf798b4a8b6da32af531de9903de93cbf Mon Sep 17 00:00:00 2001 From: annacv <21217131+annacv@users.noreply.github.com> Date: Sat, 10 Aug 2019 14:12:06 +0200 Subject: [PATCH 07/12] AddZero, RemoveDigits --- src/components/CreditCard.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/components/CreditCard.js b/src/components/CreditCard.js index e986fdfc5..1b5d8ad8c 100644 --- a/src/components/CreditCard.js +++ b/src/components/CreditCard.js @@ -11,7 +11,17 @@ function CreditCard(props) { const cardType = props.type === 'Visa' ? './img/visa.png' : './img/master-card.svg' const maskNumber = (number) => { - return number.slice(0, -4).replace(/./g, '·') + number.slice(-4) + return number.slice(0, -4).replace(/./g, '• ') + number.slice(-4) + } + + const addZero = (month) => { + const monthStr = month.toString(); + return monthStr.length < 2 ? '0' + monthStr : monthStr; + } + + const removeDigits = (year) => { + const yearStr = year.toString(); + return yearStr.slice(0, -2).replace(/./g, '') + yearStr.slice(-2) } return ( @@ -19,7 +29,7 @@ function CreditCard(props) { {props.type}

{maskNumber(props.number)}

-

Expires: {props.expirationMonth} / {props.expirationYear}

+

Expires: {addZero(props.expirationMonth)}/{removeDigits(props.expirationYear)}

{props.bank}

{props.owner}

From a27efbc6737e550bd10e358b869dedb375fb22f6 Mon Sep 17 00:00:00 2001 From: annacv <21217131+annacv@users.noreply.github.com> Date: Sat, 10 Aug 2019 14:12:20 +0200 Subject: [PATCH 08/12] RF styles to suit output --- src/components/IdCard.js | 10 ++--- src/index.css | 89 +++++++++++++++++++++++++++++++++++----- 2 files changed, 84 insertions(+), 15 deletions(-) diff --git a/src/components/IdCard.js b/src/components/IdCard.js index 394eac993..a7fc81f53 100644 --- a/src/components/IdCard.js +++ b/src/components/IdCard.js @@ -8,11 +8,11 @@ class IdCard extends Component {
a profile
-

{firstName}

-

{lastName}

-

{gender}

-

{height}

-

{birthDate}

+

First Name:{firstName}

+

Last Name:{lastName}

+

Gender:{gender}

+

Height:{height}

+

Birth:{birthDate}

) diff --git a/src/index.css b/src/index.css index f042f00f7..133511a2a 100755 --- a/src/index.css +++ b/src/index.css @@ -1,6 +1,5 @@ body { margin: 0; - padding: 2rem 3.5rem; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; @@ -17,24 +16,65 @@ p { } .challenge { - margin: 3.5rem 0; + width: 100%; + padding: 3.5rem 1.5rem 0 1.5rem; +} + +@media (min-width: 768px) { + .challenge { + padding: 4.5rem 3.5rem 0 3.5rem; + } } .card-container, .card-info { - display: flex; + display: inline-flex; + background-color: #fabada; +} + +.card-container { + flex-flow: row wrap; + width: 100%; +} + +@media (min-width: 768px) { + .card-container { + flex-flow: row wrap; + width: auto; + } } .card-info { flex-flow: column nowrap; justify-content: center; - line-height: 1.8; - padding: 0 1.5rem; + font-size: .875rem; + line-height: 1.2; + padding: 1rem; +} + +@media (min-width: 768px) { + .card-info { + font-size: 1rem; + line-height: 1.8; + padding: 1.5rem; + } } .card-image { - width: 10rem; - height: 10rem; + width: 7rem; + height: auto; +} + +@media (min-width: 768px) { + .card-image { + width: 12rem; + height: auto; + } +} + +.card-label { + font-weight: 800; + margin: 0 .5rem 0 0; } .boxed-text { @@ -43,6 +83,7 @@ p { } .boxed-text { + max-width: 23rem; margin-bottom: .5rem; } @@ -53,15 +94,43 @@ p { .credit-cards { display: flex; + flex-flow: row wrap; } .cc-container { display: flex; - padding: 2rem; + width: 100%; + border-radius: .5rem; + padding: 1.25rem; + margin: 0 0 1rem 0; +} + +@media (min-width: 768px) { + .cc-container { + width: 17.5rem; + padding: 2rem; + margin: 0 1rem 1rem 0; + } } .cc-brand { - width: 3.5rem; - height: auto; + width: auto; + height: 1.75rem; align-self: flex-end; +} + +.cc-number { + font-size: 1.65rem; + font-weight: 600; + padding: 1.5rem 0; + width: 100%; +} + +.cc-info { + display: flex; + width: 100%; +} + +.cc-expiration { + margin-right: 1.5rem; } \ No newline at end of file From 1f5d6aaea31b30a6f9326c5e880c4ea548be0618 Mon Sep 17 00:00:00 2001 From: annacv <21217131+annacv@users.noreply.github.com> Date: Sat, 10 Aug 2019 15:02:42 +0200 Subject: [PATCH 09/12] Rating --- src/App.js | 11 +++++++++++ src/components/Rating.js | 24 ++++++++++++++++++++++++ src/index.css | 26 ++++++++++++++++++++++---- 3 files changed, 57 insertions(+), 4 deletions(-) create mode 100644 src/components/Rating.js diff --git a/src/App.js b/src/App.js index d45ea2569..6d0b444be 100755 --- a/src/App.js +++ b/src/App.js @@ -4,6 +4,7 @@ import Greetings from './components/Greetings'; import Random from './components/Random'; import BoxColor from './components/BoxColor'; import CreditCard from './components/CreditCard'; +import Rating from './components/Rating'; class App extends Component { render() { @@ -76,11 +77,21 @@ class App extends Component { />
+
+

Rating

+ + + + + + +
); } } + export default App; diff --git a/src/components/Rating.js b/src/components/Rating.js new file mode 100644 index 000000000..b043e110d --- /dev/null +++ b/src/components/Rating.js @@ -0,0 +1,24 @@ +import React from 'react' + +function Rating(props) { + const value = Math.round(props.children); + + const star = (rates) => { + let filled = '★'; + let empty = '☆'; + let stars = new Array(5); + + for (let i = 0; i < 5; i++) { + i < rates ? stars[i] = filled : stars[i] = empty; + } + return stars.join('') + } + + return ( +
+ {star(value)} +
+ ) +} + +export default Rating \ No newline at end of file diff --git a/src/index.css b/src/index.css index 133511a2a..5c74272d2 100755 --- a/src/index.css +++ b/src/index.css @@ -16,12 +16,12 @@ p { } .challenge { - width: 100%; - padding: 3.5rem 1.5rem 0 1.5rem; + padding: 3.5rem 1rem 0 1rem; } @media (min-width: 768px) { .challenge { + width: 100%; padding: 4.5rem 3.5rem 0 3.5rem; } } @@ -33,7 +33,7 @@ p { } .card-container { - flex-flow: row wrap; + flex-flow: row nowrap; width: 100%; } @@ -120,17 +120,35 @@ p { } .cc-number { - font-size: 1.65rem; + font-size: 1.45rem; font-weight: 600; padding: 1.5rem 0; width: 100%; } +@media (min-width: 768px) { + .cc-number { + font-size: 1.65rem; + } +} + .cc-info { display: flex; width: 100%; } +.cc-info, +.cc-owner { + font-size: .875rem; +} + +@media (min-width: 768px) { + .cc-info, + .cc-owner { + font-size: 1rem; + } +} + .cc-expiration { margin-right: 1.5rem; } \ No newline at end of file From 4f78376c84e18047eee483f5e80e2496ee29a6cf Mon Sep 17 00:00:00 2001 From: annacv <21217131+annacv@users.noreply.github.com> Date: Sat, 10 Aug 2019 17:32:26 +0200 Subject: [PATCH 10/12] DriverCard --- src/App.js | 30 +++++++++++++++++-- src/components/DriverCard.js | 17 +++++++++++ src/index.css | 58 ++++++++++++++++++++++++++++++++++-- 3 files changed, 100 insertions(+), 5 deletions(-) create mode 100644 src/components/DriverCard.js diff --git a/src/App.js b/src/App.js index 6d0b444be..360b75415 100755 --- a/src/App.js +++ b/src/App.js @@ -5,6 +5,7 @@ import Random from './components/Random'; import BoxColor from './components/BoxColor'; import CreditCard from './components/CreditCard'; import Rating from './components/Rating'; +import DriverCard from './components/DriverCard'; class App extends Component { render() { @@ -30,8 +31,8 @@ class App extends Component {

Random

-

-

+
+
@@ -86,12 +87,35 @@ class App extends Component {
+
+

Driver Card

+ + +
); + } } - export default App; diff --git a/src/components/DriverCard.js b/src/components/DriverCard.js new file mode 100644 index 000000000..edc87cb81 --- /dev/null +++ b/src/components/DriverCard.js @@ -0,0 +1,17 @@ +import React from 'react' +import Rating from './Rating'; + +function DriverCard(props) { + return ( +
+ {props.name} +
+

{props.name}

+
+

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

+
+
+ ) +} + +export default DriverCard \ No newline at end of file diff --git a/src/index.css b/src/index.css index 5c74272d2..62fc8a364 100755 --- a/src/index.css +++ b/src/index.css @@ -21,7 +21,6 @@ p { @media (min-width: 768px) { .challenge { - width: 100%; padding: 4.5rem 3.5rem 0 3.5rem; } } @@ -92,7 +91,8 @@ p { flex-flow: row wrap; } -.credit-cards { +.credit-cards, +.driver-container { display: flex; flex-flow: row wrap; } @@ -151,4 +151,58 @@ p { .cc-expiration { margin-right: 1.5rem; +} + +.driver-container { + display: flex; + justify-content: center; + text-align: center; + color: #fff; + background-color: #455EB3; + border-radius: .5rem; + padding: 1.25rem; + margin-bottom: 1rem; +} + +@media (min-width: 768px) { + .driver-container { + padding: 2rem; + text-align: left; + } +} + +.driver-image { + width: 6rem; + height: 6rem; + border-radius: 50%; +} + +.driver-name { + margin-bottom: .5rem; +} + +.driver-details { + margin: 0; +} + +@media (min-width: 768px) { + .driver-details { + margin-left: 1.5rem; + } +} + +.driver-rating { + display: flex; + justify-content: center; +} + +@media (min-width: 768px) { + .driver-rating { + justify-content: flex-start; + } +} + + +.driver-car { + margin: .5rem 0 0 0; } \ No newline at end of file From 6a550a31f8999076a13a223346368e6aba8810b2 Mon Sep 17 00:00:00 2001 From: annacv <21217131+annacv@users.noreply.github.com> Date: Sat, 10 Aug 2019 17:39:50 +0200 Subject: [PATCH 11/12] fix driver styles --- src/index.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/index.css b/src/index.css index 62fc8a364..f383302cb 100755 --- a/src/index.css +++ b/src/index.css @@ -178,7 +178,8 @@ p { } .driver-name { - margin-bottom: .5rem; + font-size: 1.5rem; + margin: .5rem 0; } .driver-details { From bdcde560cce95f6ed2bec799602bce36fbd1ac3a Mon Sep 17 00:00:00 2001 From: annacv <21217131+annacv@users.noreply.github.com> Date: Sat, 10 Aug 2019 18:55:25 +0200 Subject: [PATCH 12/12] Like button --- src/App.js | 10 +++++++++- src/components/LikeButton.js | 25 +++++++++++++++++++++++++ src/index.css | 18 +++++++++++++++++- 3 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 src/components/LikeButton.js diff --git a/src/App.js b/src/App.js index 360b75415..44eebaf5d 100755 --- a/src/App.js +++ b/src/App.js @@ -6,6 +6,7 @@ import BoxColor from './components/BoxColor'; import CreditCard from './components/CreditCard'; import Rating from './components/Rating'; import DriverCard from './components/DriverCard'; +import LikeButton from './components/LikeButton'; class App extends Component { render() { @@ -110,9 +111,16 @@ class App extends Component { className='driver-card' /> +
+

Like Button

+
+ + +
+
+
); - } } diff --git a/src/components/LikeButton.js b/src/components/LikeButton.js new file mode 100644 index 000000000..c38008cef --- /dev/null +++ b/src/components/LikeButton.js @@ -0,0 +1,25 @@ +import React, { Component } from 'react' + +class LikeButton extends Component { + state = { + number: 0, + text: 'Likes' + } + + modifyNumber = (sum) => { + let newNumber = this.state.number + this.setState({ + number: newNumber + sum + }) + } + + render() { + return ( + <> + + + ) + } +} + +export default LikeButton diff --git a/src/index.css b/src/index.css index f383302cb..e8da473b8 100755 --- a/src/index.css +++ b/src/index.css @@ -203,7 +203,23 @@ p { } } - .driver-car { margin: .5rem 0 0 0; +} + +.buttons-container { + display: flex; + flex-flow: row wrap; + justify-content: flex-start; +} + +.button-counter { + font-size: 1.125rem; + font-weight: 600; + color: #000; + background-color: #fabada; + border: 2px solid #000; + border-radius: 1.5rem; + padding: .5rem 1rem; + margin: 0 1rem 0 0; } \ No newline at end of file