From f45bc64d4552ffac11526b2afa6df7412c86e932 Mon Sep 17 00:00:00 2001 From: Amin Taghipour Date: Sat, 26 Oct 2019 01:54:34 +0330 Subject: [PATCH 1/7] feat(webpack.dev.js, webpack.prod.js, package.json, babel.config.js): webpack the webpack for the react web app config --- .gitignore | 4 +++ babel.config.js | 13 ++++++++ package.json | 66 ++++++++++++++++++++++++++++++++++++++++ public/index.html | 14 +++++++++ webpack.dev.js | 65 ++++++++++++++++++++++++++++++++++++++++ webpack.prod.js | 76 +++++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 238 insertions(+) create mode 100644 .gitignore create mode 100644 babel.config.js create mode 100644 package.json create mode 100644 public/index.html create mode 100644 webpack.dev.js create mode 100644 webpack.prod.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..0ebb282c --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +node_modules/ +package.lock.json +yarn.lock +yarn-error.log diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 00000000..36222370 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,13 @@ +const presets = [ + [ + "@babel/preset-env", + { + useBuiltIns: "usage" + } + ], + "@babel/preset-react" +]; + +const plugins = ["@babel/plugin-proposal-class-properties"]; + +module.exports = { presets, plugins }; diff --git a/package.json b/package.json new file mode 100644 index 00000000..aeca5427 --- /dev/null +++ b/package.json @@ -0,0 +1,66 @@ +{ +<<<<<<< HEAD + "name": "reactjs-card-challenge", + "version": "1.0.0", + "description": "A responsive card based design, to be implemented by React & Redux", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/Am-Ta/reactjs-card-challenge.git" + }, + "keywords": [], + "author": "", + "license": "ISC", + "bugs": { + "url": "https://github.com/Am-Ta/reactjs-card-challenge/issues" + }, + "homepage": "https://github.com/Am-Ta/reactjs-card-challenge#readme" +======= + "name": "reactjs-card-challenge", + "version": "1.0.0", + "description": "A responsive card based design, to be implemented by React & Redux", + "main": "index.js", + "scripts": { + "dev": "webpack-dev-server --config webpack.dev.js", + "build": "webpack --config webpack.prod.js", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/Am-Ta/reactjs-card-challenge.git" + }, + "keywords": [], + "author": "", + "license": "ISC", + "bugs": { + "url": "https://github.com/Am-Ta/reactjs-card-challenge/issues" + }, + "homepage": "https://github.com/Am-Ta/reactjs-card-challenge#readme", + "devDependencies": { + "@babel/core": "^7.6.4", + "@babel/plugin-proposal-class-properties": "^7.5.5", + "@babel/preset-env": "^7.6.3", + "@babel/preset-react": "^7.6.3", + "babel-loader": "^8.0.6", + "clean-webpack-plugin": "^3.0.0", + "css-loader": "^3.2.0", + "file-loader": "^4.2.0", + "html-webpack-plugin": "^3.2.0", + "mini-css-extract-plugin": "^0.8.0", + "node-sass": "^4.13.0", + "sass-loader": "^8.0.0", + "style-loader": "^1.0.0", + "webpack": "^4.41.2", + "webpack-cli": "^3.3.9", + "webpack-dev-server": "^3.9.0" + }, + "dependencies": { + "@babel/polyfill": "^7.6.0", + "react": "^16.11.0", + "react-dom": "^16.11.0" + } +>>>>>>> configWebpack +} diff --git a/public/index.html b/public/index.html new file mode 100644 index 00000000..0ec54c76 --- /dev/null +++ b/public/index.html @@ -0,0 +1,14 @@ + + + + + + + <%= htmlWebpackPlugin.options.title %> + + + +
+ + + \ No newline at end of file diff --git a/webpack.dev.js b/webpack.dev.js new file mode 100644 index 00000000..4c5903a9 --- /dev/null +++ b/webpack.dev.js @@ -0,0 +1,65 @@ +const path = require("path"); +const HtmlWebpackPlugin = require("html-webpack-plugin"); + +module.exports = { + entry: "./src/index.js", + output: { + filename: "bundle.js", + path: path.join(__dirname, "dist"), + publicPath: "/" + }, + mode: "development", + devServer: { + hot: true, + port: 3000, + contentBase: path.join(__dirname, "public"), + publicPath: "/", + historyApiFallback: true + }, + module: { + rules: [ + { + test: /\.scss$/, + use: ["style-loader", "css-loader", "sass-loader"] + }, + { + test: /\.js$/, + exclude: /node_modules/, + use: "babel-loader" + }, + { + test: /\.(ttf|woff|woff2)$/, + use: { + loader: "file-loader", + options: { + publicPath: "./assets/font", + outputPath: "./assets/font" + } + } + }, + { + test: /\.(png|jpg|jpeg|gif)$/, + use: { + loader: "file-loader", + options: { + publicPath: "./assets/img", + outputPath: "./assets/img" + } + } + } + ] + }, + plugins: [ + new HtmlWebpackPlugin({ + title: "React Card Challenge", + meta: { + description: + "A responsive card based design, to be implemented by React/Redux", + author: "Amin Taghipour ", + "application-name": "HTML/CSS Challenge" + }, + filename: "index.html", + template: "./public/index.html" + }) + ] +}; diff --git a/webpack.prod.js b/webpack.prod.js new file mode 100644 index 00000000..3b03b1f1 --- /dev/null +++ b/webpack.prod.js @@ -0,0 +1,76 @@ +const path = require("path"); +const MiniCssExtractPlugin = require("mini-css-extract-plugin"); +const HtmlWebpackPlugin = require("html-webpack-plugin"); +const { CleanWebpackPlugin } = require("clean-webpack-plugin"); + +module.exports = { + entry: "./src/index.js", + output: { + filename: "bundle.[contenthash].js", + path: path.join(__dirname, "dist"), + publicPath: "./" + }, + mode: "production", + module: { + rules: [ + // handle the scss file in js + { + test: /\.scss$/, + loader: [ + MiniCssExtractPlugin.loader, + "css-loader", + "sass-loader" + ] + }, + // handle the ES6 js files + { + test: /\.js$/, + exclude: /node_modules/, + use: "babel-loader" + }, + // hanlde the assets files + { + test: /\.(ttf|woff|woff2)$/, + use: { + loader: "file-loader", + options: { + publicPath: "./assets/font", + outputPath: "./assets/font" + } + } + }, + { + test: /\.(png|jpg|jpeg|gif)$/, + use: { + loader: "file-loader", + options: { + publicPath: "./assets/img", + outputPath: "./assets/img" + } + } + } + ] + }, + plugins: [ + // Clean dist folder for each rebuild + new CleanWebpackPlugin(), + + // Create the separate css file + new MiniCssExtractPlugin({ + filename: "styles.[contenthash].css" + }), + + // Config the html file + new HtmlWebpackPlugin({ + title: "React Card Challenge", + meta: { + description: + "A responsive card based design, to be implemented by React & Redux", + author: "Amin Taghipour ", + "application-name": "HTML/CSS Challenge" + }, + filename: "index.html", + template: "./public/index.html" + }) + ] +}; From c5274f010ff231de73cfcf80fe71b48e5bd1206d Mon Sep 17 00:00:00 2001 From: Amin Taghipour Date: Sat, 26 Oct 2019 01:57:13 +0330 Subject: [PATCH 2/7] feat(font): font the JosefinSans font add --- src/assets/font/JosefinSans-Bold.ttf | Bin 0 -> 80836 bytes src/assets/font/JosefinSans-Regular.ttf | Bin 0 -> 81784 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/assets/font/JosefinSans-Bold.ttf create mode 100644 src/assets/font/JosefinSans-Regular.ttf diff --git a/src/assets/font/JosefinSans-Bold.ttf b/src/assets/font/JosefinSans-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f4166a1e9d7cf813b4260df747e768acc44b4780 GIT binary patch literal 80836 zcmcG%2Yg(`wLd;HcbmGltFE*~yV9=uYSqhHwu&Ve*_JKK-MGjFgKZ4hjxk^y0zm-` z1VR!*Nq8w3Fd>vAgg{8%OGx7d@_R1{q2%R-)EANmgd}M9|2;EzS1Z{j`ThT&zd@_j zy=Ug0Ip@ro(`GK?j4>-d46JZy(ZFC!P3%6#-rbL@KNuQYzUt}9lFJ$UYn-vpqM=o* z`yadP>3xhx*D_|=vwT%U^PaAMsb%c@4#02Owr}hHpSrH!fxiziW;(X*vO|@{26G`} zzcAqbuATd*_VtwAc#N?Z-()Or-_+Ji=sCFm?k@bcOkH?n=O33`_*cew8Dn3o-nC=v z_MD5B-p|-`jkw>s3m1%Un=WGPduY!ByY?MA?76_R4ENDK>)H!1-nO;(6BoYB*wfoF zpzrP5dU(I~VE!WfjUQHd(bj!CE3G5AN7s zQ#v!o*y~#W|7j*zE@R@fm|r?6mO*I42Ce}^jqMPeb0=S7u~@P#*>-E8(d>>? z`OSVF<$f(>=HGp*`zGAxOFp-IXyoRb#mtPxvmbqwC6lUO?E&Tk-5EEFE)i!hGs`1_ zpLzLAG?IpRH4U+Xo#4w@79gJF%K(z@#qePT!$LyB$lm(+SD7sh`-p}{U)B3f4v5p5 z-Y@fuA^w8IAk{yC&h7ukv-l zej9T}8|~Ms4aPjqZsbEceTD#%qR$J4`gFhJ>=S$yV8{5^_|tm7s{kwM^R(Wtq>tWj z27OZf6MgjllaN$#+R&WQ|E;qBiR91tH|F>MjSRdEOETKrA=^a63w&^Xo59RBr!(5z zB-_-8QPDTAjp)m0qkS>mW`eEc{TTZMdyn_)ZTbN!$4+0;GWV!z1K4)a%$^~s6lb2% zA&5Gd4^nQKrlcp`^5JyLPRPeElsx|;v+uvBAtEA+y{#bL&V=}88e%{+a;MHwCqPmh zJ+0l4hUrHyud7~OClJioWRdt0Fm$sLwk7V!;)1)mCd5b~zAY}!7lz@{GvTqd@nR!4 zFfI&y2NS|M$~28_#;mVkOG@Le*?XAl8rw!7V##DYuc)Y~q^Klhb@@!@qKMIC^813Z zme#hAn)fD?(-CcM;~}&7k!zX1Z&k?GmeKC7ot}YEX z@y(ff;rHqBt!F<`vtG=fm3Jx_77`K$+=33_&l6{L*hdTy)#o#5`>S-n3&aLit>{** z=w`$?Zx*ky0%l`F@kLf{H1H8-WG0Kzv?H5aprtGzmBFBG1gRXOS=?-98wFMlCtFfj z2sLgiw4rr@RsG8`mqx0b-Wbuv>-0LKPQNo0Gix^|*8Jzz&+*s!Clhb~;uoiGnV!D) zUh&%W-P3nn_oqKWk|ZA59l*3)X-4gX?Ar>{Zxg1HOJX%J%?FPwSS;S0&kX{&3T7}0 z!wz7_H!{v0qb6=NvW?&=Fa+N!iadcp&>JwDizCeCbeQ~pYqXiZm_yO#)>uo>@3-NX z-|vhH$AVigdiy^wy|zC5+qKoT&9%#J?mM<>Bi}vIv46LCZS%UeRmBZWfvQj!U7@?G&E@oQGb>f@0-$XaQ>&_o#rIzUbE%|NLnEoG%_Nf5XgAVUEXA(Ek1AmcU% z{XP;RmkTJhxy9b2!vaeyi&3c4GT*`>Vax@M(nr8NB zyu5-Nw7N=RG}JqU$!O=oWU~k^%$#x4$mp3YOr|O`HyH&t?Fat^H;O3|l+74BhRiwJ z0w&PJ8a-11;GhIHn#A$<pBBej#Po9XE-#U{-0H>PJDuQC%(xqnRyQy?=I*(@tThD zHaTN!C9S(e@4OjHW7?*D7x*cN73?bBsmoEPE=LN6X0?J@$!?iDtJ6;+c~mgtZ2ByD zq<(&2C{Zw2UB=m+ybp97<6q@p!0JL;f=mo)Tz&yxs9#tG+cdpjX*2ymjwIDT(O#GL znk22V!+r)2*V$)E6t=J)@Q-ap#hU}(>1^HJF*B7VS|=eKE|ZL`hrv5Yn!k!@_tx2%6!F z>K**wGiP{;ep3DbA+0LVFWvVi(k(mr*Vzx0ZumiF-*2QLBEl@~A!rY>hthqVNka^X zdMIS2?KwbZpL2N{rXRh0Up?ph1cDg=tLl1SSjG;-bIQ1x^ARV!pT)|Q3c-spnhZu- zd&Neqc9;?-lTuBi40Zy9N*PvxG^ClqsoHjq1{`KqPL-TNPM^hGmSJRht?Ak1)GaM> zy)?6Yp2Wlaoz(o2mX@@#%G+)FRFh^_njSw&k9C1q2TdmRtwSFxq%DH6X0e)hFk`kG zHo_`2$l31HmS99#EQ`=2Lr|aRR=-t565rz1#2-)Lxu2a*keWdsv?_lI)T;~vNqXRzaqa>>z6QYk=%L^ZG9 z>IGw>_>79@PbHo>b&4-O#Ulx*{KS9o8nBxLRNIgK?64_Y&}0hOFN8_rqP?gQe(w&7eyZ+jB;tkr^Ym^ zW_CvGz~D^?-%KR{so&(3xC&o=Y(zp$^5rSr!Y`1k4z5FQb@AzWs}8{Va=Gd#h!x2n z%wKhqzXZ&BsrePmc=D(7SCr&afa#N3l`sg2iR7nrtvY-@t(trXZI)=HRaL+3{P;Yr zx&eK?rIA)u5FMaahTVjbPbLT0pJqo6UlmcMWHR|bX!)i_T2-~|0E=>v+PMm!*NFu&2p6 zEtC!n)Ir*Gj^{y4@&9(Z10DHT(CyP;Jk7eGFrBRalml7`wHRMnSFN2gcC^Fqgf{H$ z@bwjvV7O|^!%ZX`=#a10NEa#$7x2%`(}l+56mJ5CSK zO};MS1RYPqeA8!`_Cs3=<=AhQSAwGwk|#GmLC4da~YuA}`pO}j^&1nre#$`78Vk+og2mF6c;tNY-gnDG280LBb2Ytr4G*y}>F|8W%J$ z>X_uQ+IUTFPIi{bXwcx~!L24OLsVg#Knj@g_{?K@PDv0r_*S@9;C`Fi>=YvjXSZkF zsRumYnV#l0`++h(p7=@ZK<}f9%Gzp?K;*M1?##`}G8r@z8^)xeKAlzp@^Wxh^J~Og z&b8I2-V|?4bABm5E)p|vpc4=9zQhyw{zqZOKrp^vh<6a_$zs*T_tG za>PpQAmxZBa65IciFXVL$KGlZaME8x@Bf}yDrOSZ2%AdEO&PA0QLddBEjX&J*7<@b zYS(~YxK11uA7EcnH2+eH<^(~jq=Hzw_@ z!ko}(a5)&90ppxMx_p*jtVZWBhgxH?)DVAubgVCNGCj!3TjLY;YsUFRdZ?V4)6c=& z%i(O8o&`Ui4H0J?lH2HBm>r;cV=7a52022~36egow2oYJ(t))`FBp3|( zNI}?S6h*nd6jkvEgi(|~Nnw@d9S`o<@!-_dgFAMf-f?@+?s)Ic&hDwczNv2h;zLtY z4{gWg9jAB3FYN2vyPzMR7xt4pNDQ=(0JDpAzTe262Hz2_*Q3S?;@LFB3ibkTgjGYH zPvfjrqxrPw(=g-gWf&g{rX~}{P^e%Sd0)TbG0x>iDjyPidfI>-;vS(>$3j|R>MCtzyHsq`Um}G6dj|NIQ_S56VW`pdVZVg%r=xc zNVWO7Y*Qod6yAAlgg2v&c3Zm51iOa^F!l*P!UKAn06^u~=}Ve3A60Dt+b*tR_Yr5r znfo#z48`eQB?KV*(eK5~nu3(U(u>g~&2NJ}-KGOLzbM4O3%G`OV`;on-Ifa+!9b_X1(}TJyWQ@fyQ;=! z4OXS&q!~_!8$rpa$t*JF6oo3q*LJ8mh51!o=_|>a$`4+Vnp&7<;>riNsj0R7p(%5D z-Ri*1kJ2*?vn@?0nqyaEBL2eS!D_;%#z< zXJ>NhR>dV25@YOp+z*);<0pAaqWu7s(m6+>|3$R{>;NL3e^I^uC9~IkX$VLqdrm<- zm*Rbqlq)}rvJ2w*He@U;h(KjQKWn^Z&y}iAADtn1m(Ra1+ROs(%-*Ey5)@jzW0Ef#^D zo&LnnnmR=72l_GAw!u{cO-C1EB<(}vixS^!=PQb^bo>q?KG>Cbs6^=jj7HiH*X#0q zO4<$@Kcm|YY7HS7RIAK+WDrq;lvb4xQZG%waFKe6q*aO_rF&`h?855#9Q2Y4(cJHk zo(aOa$Sy~62bl@87%5HtVZk5JBIUU4g*9k0BkPleaEI7TwqMDph0;Bn$tZxihB!X; z6PpVN4wN7*l+F;zCNljZTT6X|rMfg8egAe8FjCE!#gb};Fn@lf$1gqZptmp^4!75v zA(?Ji=ITEwoo!adQSG@zXRu0%V<5=CoOqfSC*I&=Gx@!{`y4jAyLVT&MG2whL!bHZ zJ)hazr}6I@`u0EqRpfmV7IY2<-59SkAz{eyqrzN>cax`}qVKtkfK_I}|tf1couF7alCRdfdiOyFz+Gyf|YMrYv=c)sj z&RmhHWps{0t@K{fcyFd!Q9S)9c$$Y95sf$IQsig^5hTS}V5;JmCUVA+S7FTMC`77) z<$0}EGf3+VNsg+#p`E7^hy3@S*m~;K>+k63dLXfWs;d>e{VlxE4_>n9a$n+Ye%U~E z^ zg)o>rWymrkZp%svh0qEx>Qn~Qi;5!nX8R#ZnlNZnn8pb6Zbuy4xET|`VS?gA-pQch z{_*nzO~$hW;cDbD-DV`vRb~v@fqT=@vnT4GI6;u_l*H#5d1*P(l86p}CNrRzHk{1CAm95v)^%Q}3i${AJ zT6ZtjWj5H})VOF}I8^3cx$c(X>o-LYY;XtdC8eIy@)~|^{fh2c>Ggz516zjM#@yyB zu1;*`_g{GbhVr`Ny#;~tqAEuT#HboG`Bm`-)*uh-h_}*ID=o3+WE-(EQ+P&frbKYb zD22b}c(6jdTu@vdS2-FvXi&5qrM%)$6&Q$oLI}PxEle>Z>^c75pPsnjvsj9W9cR%jAK=z7`Z5a^weqONM=rp@#%~{3Mj{l2p|IO zm_a*Wml%zvjhIGKsh|i4z0FpcWMPtUN)*dJqm%@3@;&3@r`D`F&EFK`pFM#nd*sAt zr>99?C7v=mbGOtCE7``g=6zk#A;;onUx_;v42=SfA|B8!kx_Yt-!Y zpIdDZ@rg)gv%xc8J;cf-)n=Zw7<_XT0YVWv4YBqRuYF9>u$kX>R`hBNYs6;&<7B1r zBFdP6cMuWjn205gfJ4S=T6H%9(L<_Kpl}Voz8)T|jttk_G&yXm1(4%}S~Qt68Kp{;DD>}aMNmMi9ggcf(>dt0S*FBIi?qbIW?ARg*}2Hz3F>3f zIwc<;IximwB&I$F2$>sCQvofB3aaHfsQ?I~f`XVw1w~0fQ2s+fED%Rwai?>^Xd56Hb4srwP}HZ~kfQ#8ScZjWZpK}~P;N-U^n*ilb3Db>F^kRavoh@Opg)vqXu5HA!(=J5gps!YBjo&iOStR(Knl1FiHWUy3_8aW!| zqnwc}5w+XJGl?^aGY@_4Q{uJv5}HVC<#((0+N&EF>&pJ-+$AW{`AI| z@BZ+a-~K6)Kq_?VRMZg;^*;hZGK$_ZU%7 zJeTof@-~8{1(|jB>ll{pV|Ex~4t@AXuf*_5nAja9lXK7poL)ufp zw2M{qv}XadC*dt2q~7?s)Sjv(=?&GglmB9#_EZq0Hxxufgfq2gdJHss6+}NEGG=cY zf}~kNED%>@Y8KFyY>|63BP(Q>(}?KCOHl}7&@O`KBx}j!l9{URD~*@nE_|AE-JE

2;bSYbgK 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

oVU>D>II@L#kD^%$qNJUE` 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 Q3Yw?f(nBLi8?XcX2a8@!&Hw-a literal 0 HcmV?d00001 From 0ba9c5e0913e7cbcac00b7d0b3cc77112477df5c Mon Sep 17 00:00:00 2001 From: Amin Taghipour Date: Sat, 26 Oct 2019 01:58:38 +0330 Subject: [PATCH 3/7] feat(src): react the react for the challenge setup --- package.json | 21 --------------------- src/App.css | 0 src/App.js | 12 ++++++++++++ src/App.scss | 0 src/index.js | 5 +++++ 5 files changed, 17 insertions(+), 21 deletions(-) create mode 100644 src/App.css create mode 100644 src/App.js create mode 100644 src/App.scss create mode 100644 src/index.js diff --git a/package.json b/package.json index aeca5427..39bdeb2f 100644 --- a/package.json +++ b/package.json @@ -1,24 +1,4 @@ { -<<<<<<< HEAD - "name": "reactjs-card-challenge", - "version": "1.0.0", - "description": "A responsive card based design, to be implemented by React & Redux", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/Am-Ta/reactjs-card-challenge.git" - }, - "keywords": [], - "author": "", - "license": "ISC", - "bugs": { - "url": "https://github.com/Am-Ta/reactjs-card-challenge/issues" - }, - "homepage": "https://github.com/Am-Ta/reactjs-card-challenge#readme" -======= "name": "reactjs-card-challenge", "version": "1.0.0", "description": "A responsive card based design, to be implemented by React & Redux", @@ -62,5 +42,4 @@ "react": "^16.11.0", "react-dom": "^16.11.0" } ->>>>>>> configWebpack } diff --git a/src/App.css b/src/App.css new file mode 100644 index 00000000..e69de29b diff --git a/src/App.js b/src/App.js new file mode 100644 index 00000000..f7e0e446 --- /dev/null +++ b/src/App.js @@ -0,0 +1,12 @@ +import React from "react"; +import "./App.scss"; + +const App = () => { + return ( +

+ ); +}; + +export default App; diff --git a/src/App.scss b/src/App.scss new file mode 100644 index 00000000..e69de29b diff --git a/src/index.js b/src/index.js new file mode 100644 index 00000000..c24e9d80 --- /dev/null +++ b/src/index.js @@ -0,0 +1,5 @@ +import React from "react"; +import ReactDOM from "react-dom"; +import App from "./App"; + +ReactDOM.render(, document.getElementById("root")); From 1e86cd19670176b587e6b0fcc97925d0548bc8fa Mon Sep 17 00:00:00 2001 From: Amin Taghipour Date: Sun, 27 Oct 2019 12:37:33 +0330 Subject: [PATCH 4/7] feat(public/index.html): fontawesome the fontawesome 5 add --- public/index.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/public/index.html b/public/index.html index 0ec54c76..5f91cf6e 100644 --- a/public/index.html +++ b/public/index.html @@ -5,6 +5,8 @@ <%= htmlWebpackPlugin.options.title %> + + From f1f4c7c2b96cbe5b8886a83ecf81f523cb945e21 Mon Sep 17 00:00:00 2001 From: Amin Taghipour Date: Sun, 27 Oct 2019 12:40:29 +0330 Subject: [PATCH 5/7] feat(src): app level state the app with the app level state create --- src/App.css | 0 src/App.js | 97 ++++++++++++- src/App.scss | 239 +++++++++++++++++++++++++++++++++ src/component/BtnRandGen.js | 16 +++ src/component/card/CardBox.js | 14 ++ src/component/card/CardEdit.js | 56 ++++++++ src/component/card/CardItem.js | 67 +++++++++ 7 files changed, 486 insertions(+), 3 deletions(-) delete mode 100644 src/App.css create mode 100644 src/component/BtnRandGen.js create mode 100644 src/component/card/CardBox.js create mode 100644 src/component/card/CardEdit.js create mode 100644 src/component/card/CardItem.js diff --git a/src/App.css b/src/App.css deleted file mode 100644 index e69de29b..00000000 diff --git a/src/App.js b/src/App.js index f7e0e446..bfc2edc9 100644 --- a/src/App.js +++ b/src/App.js @@ -1,12 +1,103 @@ -import React from "react"; +import React, { useState, useEffect } from "react"; +import BtnRandGen from "./component/BtnRandGen"; +import CardBox from "./component/card/CardBox"; import "./App.scss"; const App = () => { + const [cards, setCards] = useState([]); + const [card, setCard] = useState(null); + const [current, setCurrent] = useState(null); + const [index, setIndex] = useState(-1); + + useEffect(() => { + setCards([ + { + code: 1, + title: "Exercise", + description: "Exercise on a regular basis.", + tag: "sport" + }, + { + code: 0, + title: "Painting", + description: "Look at this beautiful painting", + image: "http://static.pushe.co/challenge/sky.jpg", + tag: "art" + }, + { + code: 2, + title: "Let's have fun", + description: "Listen to the music", + sound: "http://static.pushe.co/challenge/sound.mp3", + tag: "fun" + }, + { + code: 1, + title: "Hey!", + description: "Have you called your parents lately!", + tag: "fun" + }, + { + code: 0, + title: "Sports", + description: "Have you ever played one of theses sports?", + image: "http://static.pushe.co/challenge/sport.jpg", + tag: "sport" + } + ]); + }, []); + + // Select random card + const selectRandomCard = () => { + if (!current) { + let randomNum = Math.random(); + randomNum = Math.round(randomNum * (cards.length - 1)); + console.log(randomNum); + setIndex(randomNum); + setCard(cards[randomNum]); + } + }; + + // Update the card + const updateCard = (title, description) => { + // Create New card for update + const newCard = { + ...card, + title, + description + }; + // Set New card for Update + setCards( + cards.map((card, i) => { + return i === index ? newCard : card; + }) + ); + setCard(newCard); + + // Set states to the default value + setCurrent(null); + }; + return ( -
-

Hello World

+
+ + {card && ( + + )}
); }; export default App; + +/* Fetch Cards */ +// const fetchCards = async () => { +// const res = await fetch("http://static.pushe.co/challenge/json"); +// const data = await res.json(); +// setCards(data.cards); +// }; diff --git a/src/App.scss b/src/App.scss index e69de29b..440065cf 100644 --- a/src/App.scss +++ b/src/App.scss @@ -0,0 +1,239 @@ +// Simple css reset +* { + margin: 0; + padding: 0; +} + +// Define font +@font-face { + font-family: "JosefinSans"; + src: url("./assets/font/JosefinSans-Regular.ttf") format("truetype"); + font-weight: 400; + font-style: normal; +} + +@font-face { + font-family: "JosefinSans"; + src: url("./assets/font/JosefinSans-Bold.ttf") format("truetype"); + font-weight: 700; + font-style: normal; +} + +// Fix the from element font +input, +button, +textarea { + font-family: inherit; + font-size: inherit; + outline: none; +} + +// Fix the clear +html { + box-sizing: border-box; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; +} + +*, +*:before, +*:after { + box-sizing: inherit; + -webkit-box-sizing: inherit; + -moz-box-sizing: inherit; +} + +// Variables +$primary-color: #00a4e4; +$success-color: #00c300; +$danger-color: #ec1c24; +$dark-color: #231f20; +$light-color: #d7d7d8; +$danger-color: #ff3d00; +$font-stack: "JosefinSans", Arial, Helvetica, sans-serif; + +// Set the global font and color for whole app +body { + font-family: $font-stack; + color: $dark-color; +} + +// Container +.container { + width: 90%; + min-height: 70vh; + margin: auto; + display: flex; + flex-direction: column; + justify-content: space-around; + align-items: center; +} + +// Btn Component +.btn { + background-color: transparent; + border: none; + text-decoration: none; + cursor: pointer; + padding: 0.5em 1em; + border-radius: 3px; + transition: 0.5s; + &.btn_success { + background-color: $success-color; + color: #fff; + &:hover { + background-color: rgba($success-color, 0.8); + } + } + &.btn_primary { + background-color: $primary-color; + color: #fff; + &:hover { + background-color: rgba($primary-color, 0.8); + } + } + &.btn_dark { + background-color: $dark-color; + color: #fff; + &:hover { + background-color: rgba($dark-color, 0.9); + } + } + &.btn_block { + width: 100%; + } +} + +// Card-box is wrapper for card item and card updateor +.card-box { + width: 200px; +} + +// Card Item Component +.card { + text-align: center; + .card__img-box { + width: 100%; + .card__img { + display: block; + width: 100%; + } + } + &.card_show { + animation: shake 0.5s ease infinite; + -webkit-animation: shake 0.5s ease infinite; + -moz-animation: shake 0.5s ease infinite; + } + + .card__info { + margin: 1em; + .card__title { + padding: 0.5em; + display: flex; + justify-content: space-around; + + &.card_sport { + color: $success-color; + } + &.card_fun { + color: $primary-color; + } + &.card_art { + color: $danger-color; + } + } + } +} + +// Form Component +.form { + .form__item { + margin-bottom: 1em; + .form__label { + color: $success-color; + display: block; + padding: 0.25em 0; + } + .form__input { + width: 100%; + padding: 0.5em; + resize: none; + color: rgba($dark-color, 0.8); + border: 1px solid #aaa; + &:hover, + &:focus { + border-color: $success-color; + } + } + textarea.form__input { + height: 100px; + } + } +} + +// Animation for cards with code equal to 1 +@keyframes shake { + 0% { + transform: translate(1px, 1px) rotate(0deg); + -webkit-transform: translate(1px, 1px) rotate(0deg); + -moz-transform: translate(1px, 1px) rotate(0deg); + } + 10% { + transform: translate(-1px, -2px) rotate(-1deg); + -webkit-transform: translate(-1px, -2px) rotate(-1deg); + -moz-transform: translate(-1px, -2px) rotate(-1deg); + } + 20% { + transform: translate(-3px, 0px) rotate(1deg); + -webkit-transform: translate(-3px, 0px) rotate(1deg); + -moz-transform: translate(-3px, 0px) rotate(1deg); + } + 30% { + transform: translate(3px, 2px) rotate(0deg); + -webkit-transform: translate(3px, 2px) rotate(0deg); + -moz-transform: translate(3px, 2px) rotate(0deg); + } + 40% { + transform: translate(1px, -1px) rotate(1deg); + -webkit-transform: translate(1px, -1px) rotate(1deg); + -moz-transform: translate(1px, -1px) rotate(1deg); + } + 50% { + transform: translate(-1px, 2px) rotate(-1deg); + -webkit-transform: translate(-1px, 2px) rotate(-1deg); + -moz-transform: translate(-1px, 2px) rotate(-1deg); + } + 60% { + transform: translate(-3px, 1px) rotate(0deg); + -webkit-transform: translate(-3px, 1px) rotate(0deg); + -moz-transform: translate(-3px, 1px) rotate(0deg); + } + 70% { + transform: translate(3px, 1px) rotate(-1deg); + -webkit-transform: translate(3px, 1px) rotate(-1deg); + -moz-transform: translate(3px, 1px) rotate(-1deg); + } + 80% { + transform: translate(-1px, -1px) rotate(1deg); + -webkit-transform: translate(-1px, -1px) rotate(1deg); + -moz-transform: translate(-1px, -1px) rotate(1deg); + } + 90% { + transform: translate(1px, 2px) rotate(0deg); + -webkit-transform: translate(1px, 2px) rotate(0deg); + -moz-transform: translate(1px, 2px) rotate(0deg); + } + 100% { + transform: translate(1px, -2px) rotate(-1deg); + -webkit-transform: translate(1px, -2px) rotate(-1deg); + -moz-transform: translate(1px, -2px) rotate(-1deg); + } +} + +// Screen min-width 40em +@media screen and (min-width: 40em) { + .container { + width: 80%; + flex-direction: row; + } +} diff --git a/src/component/BtnRandGen.js b/src/component/BtnRandGen.js new file mode 100644 index 00000000..07926a63 --- /dev/null +++ b/src/component/BtnRandGen.js @@ -0,0 +1,16 @@ +import React from "react"; + +const BtnRandGen = ({ selectRandomCard }) => { + // Handle the click for generate random card + const handleClick = () => selectRandomCard(); + + return ( +
+ +
+ ); +}; + +export default BtnRandGen; diff --git a/src/component/card/CardBox.js b/src/component/card/CardBox.js new file mode 100644 index 00000000..7ee98a90 --- /dev/null +++ b/src/component/card/CardBox.js @@ -0,0 +1,14 @@ +import React from "react"; +import CardItem from "./CardItem"; +import CardEdit from "./CardEdit"; + +const CardBox = ({ card, current, setCurrent, updateCard }) => { + return ( +
+ {!current && } + {current && } +
+ ); +}; + +export default CardBox; diff --git a/src/component/card/CardEdit.js b/src/component/card/CardEdit.js new file mode 100644 index 00000000..745a17aa --- /dev/null +++ b/src/component/card/CardEdit.js @@ -0,0 +1,56 @@ +import React, { useState, useEffect } from "react"; + +const CardEdit = ({ current: { title, description }, updateCard }) => { + const [card, setCard] = useState({ title: "", description: "" }); + + // Load the current title and description of card on the form state + useEffect(() => { + setCard({ title, description }); + }, []); + + // Handle the changes on the title and description of card + const handleChange = e => { + setCard({ ...card, [e.target.name]: e.target.value }); + }; + + // HandleSubmit + const handleSubmit = e => { + e.preventDefault(); + + updateCard(card.title, card.description); + }; + + return ( +
+
+ + +
+ +
+ + +
+ +
+ +
+
+ ); +}; + +export default CardEdit; diff --git a/src/component/card/CardItem.js b/src/component/card/CardItem.js new file mode 100644 index 00000000..c1750c4a --- /dev/null +++ b/src/component/card/CardItem.js @@ -0,0 +1,67 @@ +import React, { useEffect } from "react"; + +const CardItem = ({ card, setCurrent }) => { + // useEffect(() => { + // const audio = new Audio(card.sound); + // if (card.code !== 2) { + // audio.pause(); + // audio.currentTime = 0; + // } + // audio.play(); + // }, [card]); + + // Select icon relative than the card tag + const getIcon = () => { + switch (card.tag) { + case "sport": + return ; + case "art": + return ; + case "fun": + return ; + } + }; + + // update the card + const handleClick = () => { + setCurrent(card); + }; + + return ( + // The code to equal is 1 +
+ {/* The code to equal is 0 */} + {card.code === 0 && ( +
+ Card Image +
+ )} + {/* The code to equal is 2 */} + {card.code === 2 && ( +
+ +
+ )} +
+

+ {getIcon()} + {card.title} +

+

{card.description}

+
+ + {/* Btn For Edit */} +
+ +
+
+ ); +}; + +export default CardItem; From 4bda7646e8328c3452b448cb0515a004c933dfac Mon Sep 17 00:00:00 2001 From: Amin Taghipour Date: Sun, 27 Oct 2019 22:27:22 +0330 Subject: [PATCH 6/7] refactor(action/, reducer/, store.js, component/): redux the app level state again develop with redux --- package.json | 6 +- src/App.js | 101 +++++---------------------------- src/action/CardAction.js | 44 ++++++++++++++ src/action/types.js | 5 ++ src/component/BtnRandGen.js | 18 +++++- src/component/card/CardBox.js | 16 ++++-- src/component/card/CardEdit.js | 33 +++++++---- src/component/card/CardItem.js | 33 +++++------ src/index.js | 9 ++- src/reducer/CardReducer.js | 62 ++++++++++++++++++++ src/reducer/index.js | 6 ++ src/store.js | 15 +++++ 12 files changed, 225 insertions(+), 123 deletions(-) create mode 100644 src/action/CardAction.js create mode 100644 src/action/types.js create mode 100644 src/reducer/CardReducer.js create mode 100644 src/reducer/index.js create mode 100644 src/store.js diff --git a/package.json b/package.json index 39bdeb2f..1b70bb46 100644 --- a/package.json +++ b/package.json @@ -40,6 +40,10 @@ "dependencies": { "@babel/polyfill": "^7.6.0", "react": "^16.11.0", - "react-dom": "^16.11.0" + "react-dom": "^16.11.0", + "react-redux": "^7.1.1", + "redux": "^4.0.4", + "redux-devtools-extension": "^2.13.8", + "redux-thunk": "^2.3.0" } } diff --git a/src/App.js b/src/App.js index bfc2edc9..1c0047a8 100644 --- a/src/App.js +++ b/src/App.js @@ -3,101 +3,28 @@ import BtnRandGen from "./component/BtnRandGen"; import CardBox from "./component/card/CardBox"; import "./App.scss"; -const App = () => { - const [cards, setCards] = useState([]); - const [card, setCard] = useState(null); - const [current, setCurrent] = useState(null); - const [index, setIndex] = useState(-1); +import { connect } from "react-redux"; +import { fetchCards } from "./action/CardAction"; +const App = ({ cardRes: { card }, fetchCards }) => { + // Fetch the cards useEffect(() => { - setCards([ - { - code: 1, - title: "Exercise", - description: "Exercise on a regular basis.", - tag: "sport" - }, - { - code: 0, - title: "Painting", - description: "Look at this beautiful painting", - image: "http://static.pushe.co/challenge/sky.jpg", - tag: "art" - }, - { - code: 2, - title: "Let's have fun", - description: "Listen to the music", - sound: "http://static.pushe.co/challenge/sound.mp3", - tag: "fun" - }, - { - code: 1, - title: "Hey!", - description: "Have you called your parents lately!", - tag: "fun" - }, - { - code: 0, - title: "Sports", - description: "Have you ever played one of theses sports?", - image: "http://static.pushe.co/challenge/sport.jpg", - tag: "sport" - } - ]); + fetchCards(); }, []); - // Select random card - const selectRandomCard = () => { - if (!current) { - let randomNum = Math.random(); - randomNum = Math.round(randomNum * (cards.length - 1)); - console.log(randomNum); - setIndex(randomNum); - setCard(cards[randomNum]); - } - }; - - // Update the card - const updateCard = (title, description) => { - // Create New card for update - const newCard = { - ...card, - title, - description - }; - // Set New card for Update - setCards( - cards.map((card, i) => { - return i === index ? newCard : card; - }) - ); - setCard(newCard); - - // Set states to the default value - setCurrent(null); - }; - return (
- - {card && ( - - )} + + {card && }
); }; -export default App; +const mapStateToProps = state => ({ + cardRes: state.cardRes +}); -/* Fetch Cards */ -// const fetchCards = async () => { -// const res = await fetch("http://static.pushe.co/challenge/json"); -// const data = await res.json(); -// setCards(data.cards); -// }; +export default connect( + mapStateToProps, + { fetchCards } +)(App); diff --git a/src/action/CardAction.js b/src/action/CardAction.js new file mode 100644 index 00000000..2773b6ec --- /dev/null +++ b/src/action/CardAction.js @@ -0,0 +1,44 @@ +import { + CARD_ERROR, + FETCH_CARDS, + UPDATE_CARD, + SELECT_CARD, + SET_CURRENT +} from "./types"; + +// Fetch the cards from the pushe api +export const fetchCards = () => async dispatch => { + try { + const res = await fetch("http://static.pushe.co/challenge/json"); + const data = await res.json(); + + dispatch({ + type: FETCH_CARDS, + payload: data.cards + }); + } catch (err) { + dispatch({ + type: CARD_ERROR, + payload: err.response.data + }); + } +}; + +// Select the card by random +export const selectCard = () => { + let randomNum = Math.random(); + return { + type: SELECT_CARD, + payload: randomNum + }; +}; + +export const setCurrent = card => ({ + type: SET_CURRENT, + payload: card +}); + +export const updateCard = (title, description) => ({ + type: UPDATE_CARD, + payload: { title, description } +}); diff --git a/src/action/types.js b/src/action/types.js new file mode 100644 index 00000000..60272fc7 --- /dev/null +++ b/src/action/types.js @@ -0,0 +1,5 @@ +export const FETCH_CARDS = "fetchCards"; +export const CARD_ERROR = "cardError"; +export const SELECT_CARD = "selectCard"; +export const UPDATE_CARD = "updateCard"; +export const SET_CURRENT = "setCurrent"; diff --git a/src/component/BtnRandGen.js b/src/component/BtnRandGen.js index 07926a63..931d8f1a 100644 --- a/src/component/BtnRandGen.js +++ b/src/component/BtnRandGen.js @@ -1,8 +1,13 @@ import React from "react"; -const BtnRandGen = ({ selectRandomCard }) => { +import { connect } from "react-redux"; +import { selectCard } from "./../action/CardAction"; + +const BtnRandGen = ({ cardRes: { current }, selectCard }) => { // Handle the click for generate random card - const handleClick = () => selectRandomCard(); + const handleClick = () => { + !current && selectCard(); + }; return (
@@ -13,4 +18,11 @@ const BtnRandGen = ({ selectRandomCard }) => { ); }; -export default BtnRandGen; +const mapStateToProps = state => ({ + cardRes: state.cardRes +}); + +export default connect( + mapStateToProps, + { selectCard } +)(BtnRandGen); diff --git a/src/component/card/CardBox.js b/src/component/card/CardBox.js index 7ee98a90..efbdc2f5 100644 --- a/src/component/card/CardBox.js +++ b/src/component/card/CardBox.js @@ -1,14 +1,22 @@ import React from "react"; import CardItem from "./CardItem"; import CardEdit from "./CardEdit"; +import { connect } from "react-redux"; -const CardBox = ({ card, current, setCurrent, updateCard }) => { +const CardBox = ({ cardRes: { current } }) => { return (
- {!current && } - {current && } + {!current && } + {current && }
); }; -export default CardBox; +const mapStateToProps = state => ({ + cardRes: state.cardRes +}); + +export default connect( + mapStateToProps, + {} +)(CardBox); diff --git a/src/component/card/CardEdit.js b/src/component/card/CardEdit.js index 745a17aa..de34118c 100644 --- a/src/component/card/CardEdit.js +++ b/src/component/card/CardEdit.js @@ -1,23 +1,27 @@ import React, { useState, useEffect } from "react"; -const CardEdit = ({ current: { title, description }, updateCard }) => { - const [card, setCard] = useState({ title: "", description: "" }); +import { connect } from "react-redux"; +import { updateCard } from "../../action/CardAction"; - // Load the current title and description of card on the form state +const CardEdit = ({ cardRes: { current }, updateCard }) => { + const { title, description } = current; + const [form, setForm] = useState({ title: "", description: "" }); + + // Load the current title and description of card for the form state useEffect(() => { - setCard({ title, description }); + setForm({ title, description }); }, []); - // Handle the changes on the title and description of card + // Handle the changes on the title and description of the card const handleChange = e => { - setCard({ ...card, [e.target.name]: e.target.value }); + setForm({ ...form, [e.target.name]: e.target.value }); }; - // HandleSubmit + // Handle the submit for new card const handleSubmit = e => { e.preventDefault(); - updateCard(card.title, card.description); + updateCard(form.title, form.description); }; return ( @@ -28,7 +32,7 @@ const CardEdit = ({ current: { title, description }, updateCard }) => { type='text' name='title' onChange={handleChange} - value={card.title} + value={form.title} className='form__input' />
@@ -39,7 +43,7 @@ const CardEdit = ({ current: { title, description }, updateCard }) => { type='text' name='description' onChange={handleChange} - value={card.description} + value={form.description} className='form__input' >
@@ -53,4 +57,11 @@ const CardEdit = ({ current: { title, description }, updateCard }) => { ); }; -export default CardEdit; +const mapStateToProps = state => ({ + cardRes: state.cardRes +}); + +export default connect( + mapStateToProps, + { updateCard } +)(CardEdit); diff --git a/src/component/card/CardItem.js b/src/component/card/CardItem.js index c1750c4a..3ff1e20e 100644 --- a/src/component/card/CardItem.js +++ b/src/component/card/CardItem.js @@ -1,15 +1,8 @@ import React, { useEffect } from "react"; +import { connect } from "react-redux"; +import { setCurrent } from "../../action/CardAction"; -const CardItem = ({ card, setCurrent }) => { - // useEffect(() => { - // const audio = new Audio(card.sound); - // if (card.code !== 2) { - // audio.pause(); - // audio.currentTime = 0; - // } - // audio.play(); - // }, [card]); - +const CardItem = ({ cardRes: { card }, setCurrent }) => { // Select icon relative than the card tag const getIcon = () => { switch (card.tag) { @@ -22,15 +15,15 @@ const CardItem = ({ card, setCurrent }) => { } }; - // update the card + // To update the card const handleClick = () => { setCurrent(card); }; return ( - // The code to equal is 1 + // The code to equal is 1. so the animation is runing
- {/* The code to equal is 0 */} + {/* The code to equal is 0. so the image is load */} {card.code === 0 && (
{ />
)} - {/* The code to equal is 2 */} + + {/* The code to equal is 2. so the audio is play */} {card.code === 2 && (
)} +

{getIcon()} @@ -54,7 +49,6 @@ const CardItem = ({ card, setCurrent }) => {

{card.description}

- {/* Btn For Edit */}