From f12b4053ff3d1c53b79499b1d3310afaa1fd85b7 Mon Sep 17 00:00:00 2001 From: seojin Date: Fri, 19 Jan 2024 12:14:02 +0900 Subject: [PATCH 01/51] =?UTF-8?q?1/19=20feat:=20module.css=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/package-lock.json | 256 ++++++++++++++++++++++++ client/package.json | 7 + client/src/App.css | 38 ---- client/src/App.tsx | 22 +- client/src/components/mojib.tsx | 52 +++++ client/src/components/navbar.tsx | 29 +++ client/src/components/navbar_logout.tsx | 27 +++ client/src/components/prev_next.tsx | 62 ++++++ client/src/components/store.tsx | 138 +++++++++++++ client/src/index.tsx | 4 +- client/src/pages/Detail.tsx | 12 ++ client/src/pages/J_List.tsx | 11 + client/src/pages/NewUser.tsx | 11 + client/src/pages/P_List.tsx | 11 + client/src/pages/P_List_add3.tsx | 11 + client/src/pages/P_List_add_design.tsx | 11 + client/src/styles/App.css | 56 ++++++ client/src/styles/JB_detail.module.css | 100 +++++++++ client/src/styles/J_List.module.css | 166 +++++++++++++++ client/src/styles/P_List.module.css | 37 ++++ client/src/styles/P_List_add.module.css | 185 +++++++++++++++++ client/src/styles/Paging.module.css | 54 +++++ client/src/styles/Prev_next.module.css | 22 ++ index.ts | 1 - package-lock.json | 13 ++ 25 files changed, 1277 insertions(+), 59 deletions(-) delete mode 100644 client/src/App.css create mode 100644 client/src/components/mojib.tsx create mode 100644 client/src/components/navbar.tsx create mode 100644 client/src/components/navbar_logout.tsx create mode 100644 client/src/components/prev_next.tsx create mode 100644 client/src/components/store.tsx create mode 100644 client/src/pages/Detail.tsx create mode 100644 client/src/pages/J_List.tsx create mode 100644 client/src/pages/NewUser.tsx create mode 100644 client/src/pages/P_List.tsx create mode 100644 client/src/pages/P_List_add3.tsx create mode 100644 client/src/pages/P_List_add_design.tsx create mode 100644 client/src/styles/App.css create mode 100644 client/src/styles/JB_detail.module.css create mode 100644 client/src/styles/J_List.module.css create mode 100644 client/src/styles/P_List.module.css create mode 100644 client/src/styles/P_List_add.module.css create mode 100644 client/src/styles/Paging.module.css create mode 100644 client/src/styles/Prev_next.module.css create mode 100644 package-lock.json diff --git a/client/package-lock.json b/client/package-lock.json index 92ac0b6a..e8e11620 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -8,6 +8,7 @@ "name": "client", "version": "0.1.0", "dependencies": { + "@reduxjs/toolkit": "^2.0.1", "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", @@ -15,9 +16,15 @@ "@types/node": "^16.18.71", "@types/react": "^18.2.48", "@types/react-dom": "^18.2.18", + "@types/react-redux": "^7.1.33", + "axios": "^1.6.5", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-icons": "^5.0.1", + "react-js-pagination": "^3.0.3", + "react-redux": "^9.1.0", "react-scripts": "5.0.1", + "redux": "^5.0.1", "typescript": "^4.9.5", "web-vitals": "^2.1.4" } @@ -3338,6 +3345,38 @@ } } }, + "node_modules/@reduxjs/toolkit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.0.1.tgz", + "integrity": "sha512-fxIjrR9934cmS8YXIGd9e7s1XRsEU++aFc9DVNMFMRTM5Vtsg2DCRMj21eslGtDt43IUf9bJL3h5bwUlZleibA==", + "dependencies": { + "immer": "^10.0.3", + "redux": "^5.0.0", + "redux-thunk": "^3.1.0", + "reselect": "^5.0.1" + }, + "peerDependencies": { + "react": "^16.9.0 || ^17.0.0 || ^18", + "react-redux": "^7.2.1 || ^8.1.3 || ^9.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-redux": { + "optional": true + } + } + }, + "node_modules/@reduxjs/toolkit/node_modules/immer": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/immer/-/immer-10.0.3.tgz", + "integrity": "sha512-pwupu3eWfouuaowscykeckFmVTpqbzW+rXFCX8rQLkZzM9ftBmU/++Ra+o+L27mz03zJTlyV4UUr+fdKNffo4A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, "node_modules/@rollup/plugin-babel": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", @@ -4103,6 +4142,15 @@ "@types/node": "*" } }, + "node_modules/@types/hoist-non-react-statics": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz", + "integrity": "sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==", + "dependencies": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + } + }, "node_modules/@types/html-minifier-terser": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", @@ -4227,6 +4275,25 @@ "@types/react": "*" } }, + "node_modules/@types/react-redux": { + "version": "7.1.33", + "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.33.tgz", + "integrity": "sha512-NF8m5AjWCkert+fosDsN3hAlHzpjSiXlVy9EgQEmLoBhaNXbmyeGs/aj5dQzKuF+/q+S7JQagorGDW8pJ28Hmg==", + "dependencies": { + "@types/hoist-non-react-statics": "^3.3.0", + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0", + "redux": "^4.0.0" + } + }, + "node_modules/@types/react-redux/node_modules/redux": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", + "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", + "dependencies": { + "@babel/runtime": "^7.9.2" + } + }, "node_modules/@types/resolve": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", @@ -4303,6 +4370,11 @@ "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==" }, + "node_modules/@types/use-sync-external-store": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", + "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==" + }, "node_modules/@types/ws": { "version": "8.5.10", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", @@ -5169,6 +5241,29 @@ "node": ">=4" } }, + "node_modules/axios": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.5.tgz", + "integrity": "sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==", + "dependencies": { + "follow-redirects": "^1.15.4", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axios/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/axobject-query": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", @@ -5498,6 +5593,17 @@ "node": ">=8" } }, + "node_modules/block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha512-OorbnJVPII4DuUKbjARAe8u8EfqOmkEEaSFIyoQ7OjTHn6kafxWl0wLgoZ2rXaYd7MyLcDaU4TmhfxtwgcccMQ==", + "dependencies": { + "inherits": "~2.0.0" + }, + "engines": { + "node": "0.4 || >=0.5.8" + } + }, "node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -5837,6 +5943,11 @@ "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==" }, + "node_modules/classnames": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" + }, "node_modules/clean-css": { "version": "5.3.3", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", @@ -8468,6 +8579,31 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "dependencies": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/fstream/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -8808,6 +8944,19 @@ "he": "bin/he" } }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, "node_modules/hoopy": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", @@ -12776,6 +12925,11 @@ "node": ">=6" } }, + "node_modules/paginator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/paginator/-/paginator-1.0.0.tgz", + "integrity": "sha512-j2Y5AtF/NrXOEU9VVOQBGHnj81NveRQ/cDzySywqsWrAj+cxivMpMCkYJOds3ulQiDU4rQBWc0WoyyXMXOmuMA==" + }, "node_modules/param-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", @@ -14368,6 +14522,11 @@ "node": ">= 0.10" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "node_modules/psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", @@ -14651,11 +14810,71 @@ "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz", "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==" }, + "node_modules/react-icons": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.0.1.tgz", + "integrity": "sha512-WqLZJ4bLzlhmsvme6iFdgO8gfZP17rfjYEJ2m9RsZjZ+cc4k1hTzknEz63YS1MeT50kVzoa1Nz36f4BEx+Wigw==", + "peerDependencies": { + "react": "*" + } + }, "node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" }, + "node_modules/react-js-pagination": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/react-js-pagination/-/react-js-pagination-3.0.3.tgz", + "integrity": "sha512-podyA6Rd0uxc8uQakXWXxnonoOPI6NnFOROXfc6qPKNYm44s+Bgpn0JkyflcfbHf/GFKahnL8JN8rxBHZiBskg==", + "dependencies": { + "classnames": "^2.2.5", + "fstream": "1.0.12", + "paginator": "^1.0.0", + "prop-types": "15.x.x - 16.x.x", + "react": "15.x.x - 16.x.x", + "tar": "2.2.2" + } + }, + "node_modules/react-js-pagination/node_modules/react": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", + "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-redux": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.1.0.tgz", + "integrity": "sha512-6qoDzIO+gbrza8h3hjMA9aq4nwVFCKFtY2iLxCtVT38Swyy2C/dJCGBXHeHLtx6qlg/8qzc2MrhOeduf5K32wQ==", + "dependencies": { + "@types/use-sync-external-store": "^0.0.3", + "use-sync-external-store": "^1.0.0" + }, + "peerDependencies": { + "@types/react": "^18.2.25", + "react": "^18.0", + "react-native": ">=0.69", + "redux": "^5.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react-native": { + "optional": true + }, + "redux": { + "optional": true + } + } + }, "node_modules/react-refresh": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz", @@ -14791,6 +15010,19 @@ "node": ">=8" } }, + "node_modules/redux": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", + "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==" + }, + "node_modules/redux-thunk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-3.1.0.tgz", + "integrity": "sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==", + "peerDependencies": { + "redux": "^5.0.0" + } + }, "node_modules/reflect.getprototypeof": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz", @@ -14936,6 +15168,11 @@ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" }, + "node_modules/reselect": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.0.tgz", + "integrity": "sha512-aw7jcGLDpSgNDyWBQLv2cedml85qd95/iszJjN988zX1t7AVRJi19d9kto5+W7oCfQ94gyo40dVbT6g2k4/kXg==" + }, "node_modules/resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", @@ -16316,6 +16553,17 @@ "node": ">=6" } }, + "node_modules/tar": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", + "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", + "deprecated": "This version of tar is no longer supported, and will not receive security updates. Please upgrade asap.", + "dependencies": { + "block-stream": "*", + "fstream": "^1.0.12", + "inherits": "2" + } + }, "node_modules/temp-dir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", @@ -16863,6 +17111,14 @@ "requires-port": "^1.0.0" } }, + "node_modules/use-sync-external-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", diff --git a/client/package.json b/client/package.json index 54b7c9df..6e20ee11 100644 --- a/client/package.json +++ b/client/package.json @@ -3,6 +3,7 @@ "version": "0.1.0", "private": true, "dependencies": { + "@reduxjs/toolkit": "^2.0.1", "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", @@ -10,9 +11,15 @@ "@types/node": "^16.18.71", "@types/react": "^18.2.48", "@types/react-dom": "^18.2.18", + "@types/react-redux": "^7.1.33", + "axios": "^1.6.5", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-icons": "^5.0.1", + "react-js-pagination": "^3.0.3", + "react-redux": "^9.1.0", "react-scripts": "5.0.1", + "redux": "^5.0.1", "typescript": "^4.9.5", "web-vitals": "^2.1.4" }, diff --git a/client/src/App.css b/client/src/App.css deleted file mode 100644 index 74b5e053..00000000 --- a/client/src/App.css +++ /dev/null @@ -1,38 +0,0 @@ -.App { - text-align: center; -} - -.App-logo { - height: 40vmin; - pointer-events: none; -} - -@media (prefers-reduced-motion: no-preference) { - .App-logo { - animation: App-logo-spin infinite 20s linear; - } -} - -.App-header { - background-color: #282c34; - min-height: 100vh; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - font-size: calc(10px + 2vmin); - color: white; -} - -.App-link { - color: #61dafb; -} - -@keyframes App-logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} diff --git a/client/src/App.tsx b/client/src/App.tsx index a53698aa..c02341ed 100644 --- a/client/src/App.tsx +++ b/client/src/App.tsx @@ -1,25 +1,13 @@ import React from 'react'; import logo from './logo.svg'; -import './App.css'; +import './styles/App.css'; +import Mynavbar from './components/navbar'; +import Prev_next from './components/prev_next'; function App() { + const scholarshipId = 0; return ( -
-
- logo -

- Edit src/App.tsx and save to reload. -

- - Learn React - -
-
+ ); } diff --git a/client/src/components/mojib.tsx b/client/src/components/mojib.tsx new file mode 100644 index 00000000..2fb08d14 --- /dev/null +++ b/client/src/components/mojib.tsx @@ -0,0 +1,52 @@ +import React, { useEffect, useRef, Ref, useMemo } from 'react'; +import '../styles/App.css'; +import '../styles/J_List.module.css'; +import '../styles/JB_detail.module.css'; +import '../styles/P_List_add.module.css' +import Mynavbar from '../components/navbar'; + +import { useState } from 'react'; + +import { RootState, p_addcontent, p_removerecruit } from "../components/store"; +import { useDispatch, useSelector } from "react-redux"; + +import { FaRegCalendarAlt } from "react-icons/fa"; +import { LuImagePlus } from "react-icons/lu"; +import { RiVideoAddFill } from "react-icons/ri"; +import { BsPaperclip } from "react-icons/bs"; +import { MdCancel } from "react-icons/md"; + +export default function Mojib(props:any) { + + let p_list = useSelector((state: RootState) => state.p_list); + let dispatch = useDispatch(); + + const handleChange = (e:any) => { + dispatch(p_addcontent(e.target.value)); + console.log(p_list[0].content.text); + }; + + return ( +
+ +
인원 수
+ + { + if(props.num>0) { + dispatch(p_removerecruit(props.num)) + } + }} className='cancel_icon'/> +
+ + ) + + + +} \ No newline at end of file diff --git a/client/src/components/navbar.tsx b/client/src/components/navbar.tsx new file mode 100644 index 00000000..af1ae066 --- /dev/null +++ b/client/src/components/navbar.tsx @@ -0,0 +1,29 @@ +import React from 'react'; +import '../styles/App.css'; +import axios from 'axios'; + + +function Mynavbar() { + return ( +
+
+
+

웹이름

+
+
+

학부 연구생

+

팀원 모집

+

장학 및 공모전

+

동아리 공지

+
+
+ +
+ + +
+
+ ); +} + +export default Mynavbar; \ No newline at end of file diff --git a/client/src/components/navbar_logout.tsx b/client/src/components/navbar_logout.tsx new file mode 100644 index 00000000..4615dae2 --- /dev/null +++ b/client/src/components/navbar_logout.tsx @@ -0,0 +1,27 @@ +import React from 'react'; +import '../styles/App.css'; +import axios from 'axios'; + + +function Mynavbar_logined() { + return ( +
+
+
+

웹이름

+
+
+

학부 연구생

+

팀원 모집

+

장학 및 공모전

+

동아리 공지

+
+
+ +
+
+
+ ); +} + +export default Mynavbar_logined; \ No newline at end of file diff --git a/client/src/components/prev_next.tsx b/client/src/components/prev_next.tsx new file mode 100644 index 00000000..0227d471 --- /dev/null +++ b/client/src/components/prev_next.tsx @@ -0,0 +1,62 @@ +import React, { useEffect } from 'react'; +import '../styles/App.css'; +import styles1 from '../styles/J_List.module.css'; +import styles3 from '../styles/Prev_next.module.css'; + +export default function Prev_next(props:any) { + + if(props.scholarshipId==0) { + return ( +
+
+
+
이전글
+
+
+ +
+
다음글 {/* {props.j_list[1].title} */}
+
+
+
+ + ) + } + else if(props.scholarshipId==499) { + return ( +
+
+
+
이전글 {/* {props.j_list[0].title} */}
+
+
+ +
+
다음글
+
+
+
+ ) + } + else { + return ( +
+ +
+
+
이전글 {/* {props.j_list[0].title} */}
+
+
+ +
+
다음글 {/* {props.j_list[2].title} */}
+
+
+ +
+ ) + } + + + +} \ No newline at end of file diff --git a/client/src/components/store.tsx b/client/src/components/store.tsx new file mode 100644 index 00000000..e1ef686c --- /dev/null +++ b/client/src/components/store.tsx @@ -0,0 +1,138 @@ +import {configureStore, createSlice} from '@reduxjs/toolkit' + +let IsLogined = createSlice ({ + name : 'IsLogined', + initialState : + { + isLogined: false, + name : '' + + }, + + reducers : { + changeIsLogined(state,action) { + state.isLogined = true; + state.name = action.payload.name; + } + } +}) + +let j_list = createSlice ({ + name : 'j_list', + + initialState : + [ + { + title:'', + category:'', + link:'', + writer:'', + date:0, + content:null, + file:'', + fileName:'' + }, + + ], + + reducers : { + setList(state,action) { + return action.payload + }, + resetList(state) { + state.splice(0,state.length) + }, + + removeList(state,action) { + state.splice(action.payload,1) + }, + + } +}) + +let p_list = createSlice ({ + name: 'p_list', + + initialState: [ + { + title: '', + category: '', + writer: '', + date: 0, + + content: { + image: null, + video: null, + text: '', + }, + + recruit: [ + { + field: '', + apply_cnt: 0, + } + ], + file: '', + deadline: 0, + is_done: false, + + apply: [ + { + date: 0, + name: '', + field: '', + memo: '', + } + ] + }, + ], + reducers: { + p_addList(state,action) { + state.push(action.payload) + }, + p_resetList(state) { + state.splice(0,state.length) + }, + p_removeList(state,action) { + state.splice(action.payload,1) + }, + p_addcontent(state,action) { + state[0].content.text = action.payload; + }, + p_addtitle(state,action) { + state[0].title = action.payload; + }, + p_addrecruit(state) { + state[0].recruit.push({ + field: '', + apply_cnt: 0, + }) + }, + p_removerecruit(state,action) { + state[0].recruit.splice(action.payload,1); + }, + p_addimage(state,action) { + state[0].content.image = action.payload; + } + } +}) + + +export const { setList, removeList,resetList } = j_list.actions; +export const { changeIsLogined } = IsLogined.actions; +export const { p_addList, p_removeList, p_resetList,p_addrecruit, p_addcontent, p_removerecruit, p_addtitle,p_addimage} = p_list.actions; + +// 스토어 설정 +const store = configureStore({ + reducer: { + j_list: j_list.reducer, + IsLogined:IsLogined.reducer, + p_list:p_list.reducer, + + }, + middleware: (getDefaultMiddleware) => getDefaultMiddleware() +}); + +// RootState 타입 정의 +export type RootState = ReturnType; +export default store; \ No newline at end of file diff --git a/client/src/index.tsx b/client/src/index.tsx index 032464fb..45304225 100644 --- a/client/src/index.tsx +++ b/client/src/index.tsx @@ -13,7 +13,5 @@ root.render( ); -// If you want to start measuring performance in your app, pass a function -// to log results (for example: reportWebVitals(console.log)) -// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals + reportWebVitals(); diff --git a/client/src/pages/Detail.tsx b/client/src/pages/Detail.tsx new file mode 100644 index 00000000..63faf437 --- /dev/null +++ b/client/src/pages/Detail.tsx @@ -0,0 +1,12 @@ + +export default function Detail(props:any) { + + return ( +
+ + + +
+ + ) +} \ No newline at end of file diff --git a/client/src/pages/J_List.tsx b/client/src/pages/J_List.tsx new file mode 100644 index 00000000..0255542c --- /dev/null +++ b/client/src/pages/J_List.tsx @@ -0,0 +1,11 @@ +export default function J_List(props:any) { + + return ( +
+ + + +
+ + ) +} \ No newline at end of file diff --git a/client/src/pages/NewUser.tsx b/client/src/pages/NewUser.tsx new file mode 100644 index 00000000..7eebf858 --- /dev/null +++ b/client/src/pages/NewUser.tsx @@ -0,0 +1,11 @@ +export default function NewUser(props:any) { + + return ( +
+ + + +
+ + ) +} \ No newline at end of file diff --git a/client/src/pages/P_List.tsx b/client/src/pages/P_List.tsx new file mode 100644 index 00000000..1b7cb2e5 --- /dev/null +++ b/client/src/pages/P_List.tsx @@ -0,0 +1,11 @@ +export default function P_list(props:any) { + + return ( +
+ + + +
+ + ) +} \ No newline at end of file diff --git a/client/src/pages/P_List_add3.tsx b/client/src/pages/P_List_add3.tsx new file mode 100644 index 00000000..3301aec2 --- /dev/null +++ b/client/src/pages/P_List_add3.tsx @@ -0,0 +1,11 @@ +export default function P_List_add3(props:any) { + + return ( +
+ + + +
+ + ) +} \ No newline at end of file diff --git a/client/src/pages/P_List_add_design.tsx b/client/src/pages/P_List_add_design.tsx new file mode 100644 index 00000000..a8bb6d44 --- /dev/null +++ b/client/src/pages/P_List_add_design.tsx @@ -0,0 +1,11 @@ +export default function P_List_add_design(props:any) { + + return ( +
+ + + +
+ + ) +} \ No newline at end of file diff --git a/client/src/styles/App.css b/client/src/styles/App.css new file mode 100644 index 00000000..86e91a66 --- /dev/null +++ b/client/src/styles/App.css @@ -0,0 +1,56 @@ +.navbar { + box-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.25); + width: 100%; + display: flex; + justify-content: space-between; + align-items: center; + position: fixed; + } + + .navbar_webname { + font-size: 25px; + font-weight: 700; + margin-left: 33px; + } + + .navbar_menu { + font-size: 20px; + font-weight: 700; + padding : 0 60px; + + color: rgb(95, 95, 95); + display: flex; + } + + .navbar_text { + padding : 0 60px; + } + + .navbar_button { + width: 100px; + height: 40px; + margin-right: 33px; + + background-color: rgb(153, 0, 0); + color: white; + border-radius: 5px; + + font-weight: 700; + font-size: 20px; + } + + .container { + height: 100vh; + display: flex; + justify-content: center; + align-items: center; + /* flex-direction: column; */ + } + .rectangle { + position: absolute; + /* top: 25%; */ + width: 50%; + height: 50%; + background-color: whitesmoke; + border-radius: 10px; + } \ No newline at end of file diff --git a/client/src/styles/JB_detail.module.css b/client/src/styles/JB_detail.module.css new file mode 100644 index 00000000..2cbf68de --- /dev/null +++ b/client/src/styles/JB_detail.module.css @@ -0,0 +1,100 @@ +.detail_container { + width:1318px; + height:679px; + margin-top:26px; + margin-left:61px; + +} + +.detail_title { + width: 1318px; + height: 68px; + flex-shrink: 0; + background-color: #F3F3F3; + + display:flex; + justify-content:space-between; +} + +.detail_text1{ + color: #000; + font-family: Inter; + font-size: 20px; + font-style: normal; + font-weight: 700; + line-height: normal; + + margin-left: 31px; + margin-right: 37px; + margin-top :20px; + +} + +.detail_title2 { + width: 1318px; + height: 68px; + flex-shrink: 0; + background-color: #ffffff; + + display:flex; + justify-content: space-between; +} + +.detail_column_line{ + width: 1px; + height: 24px; + background: #867272; + /* margin-left: 24px; */ + margin-top :20px; +} + +.detail_text2{ + color: #000; + font-family: Inter; + font-size: 20px; + font-style: normal; + font-weight: 700; + line-height: normal; + + /* margin-left: 41px; */ + margin-top :20px; + +} + +.detail_text4{ + color: #000; + font-family: Inter; + font-size: 20px; + font-style: normal; + font-weight: 700; + line-height: normal; + + /* margin-left: 24px; */ + margin-top :20px; + +} + +.detail_text3{ + color: #000; + font-family: Inter; + font-size: 20px; + font-style: normal; + font-weight: 700; + line-height: normal; + + /* margin-left: 887px; */ + margin-top :20px; + +} + +.detail_content{ + min-height: 391px; + + color: #000; + font-family: Inter; + font-size: 20px; + font-style: normal; + font-weight: 700; + line-height: normal; + +} \ No newline at end of file diff --git a/client/src/styles/J_List.module.css b/client/src/styles/J_List.module.css new file mode 100644 index 00000000..3013293a --- /dev/null +++ b/client/src/styles/J_List.module.css @@ -0,0 +1,166 @@ +.janghak_text { + color: #000; + font-family: Inter; + font-size: 50px; + font-style: normal; + font-weight: 700; + line-height: normal; + + display:inline-block; + margin-top: 14%; + margin-left:4%; + } + + .janghak_container { + width : 1318px; + height: 60px; /* 보류 */ + /* background-color:rgb(88, 210, 210); */ + + display:flex; + margin-top: 2.5%; + margin-left:61px; + justify-content: space-between; + + } + + .janghak_categori { + background-color: #EEE; + width: 136px; /*136px */ + + display: flex; + justify-content: space-around; + align-items: center; + + color: #000; + + text-align: center; + font-family: Inter; + font-size: 20px; + font-style: normal; + font-weight: 400; + line-height: normal; + + } + + .janghak_search { + background-color: aliceblue; + width: 1090px; /*1090px*/ + + } + + .janghak_icon { + width : 60px; /*60*/ + height: 60px; + background-color: #EEE; + display: flex; + justify-content: center; + align-items: center; + + border-radius: 5px; + } + + .janghak_list { + height:548px; + width:1318px; + margin-top:26px; + margin-left:61px; + } + + .janghak_thick_line { + width: 1318.001px; + height: 5px; + background-color: #000; + + + } + .janghak_thin_line{ + width: 1318.001px; + height: 1.5px; + background-color: #BABABA; + } + + .janghak_title { + width: 1318px; + height: 68px; + flex-shrink: 0; + background-color: #F3F3F3; + + display:flex; + justify-content: space-between; + + + } + + .janghak_text1{ + color: #000; + font-family: Inter; + font-size: 20px; + font-style: normal; + font-weight: 700; + line-height: normal; + + margin-left: 31px; + margin-right: 37px; + margin-top :20px; + } + + .j_list_container { + /* background-color: aqua; */ + height: 61px; + width:1318px; + + color: #000000; + font-family: Inter; + font-size: 16px; + font-style: normal; + font-weight: 800; + line-height: normal; + + display: flex; + justify-content: space-between; + align-items: center; + + } + + .j_list_categori { + width: 136px; + display:flex; + justify-content: center; + } + .j_list_categori_rec { + width: 70px; + height: 41px; + flex-shrink: 0; + border-radius: 8px; + background-color: #F87F7F; + + color: #FFF; + text-align: center; + font-family: Inter; + font-size: 16px; + font-style: normal; + font-weight: 700; + line-height: normal; + + display:flex; + justify-content: center; + } + + .j_list_categori_text { + margin-top: 11px; + } + .j_list_title { + width: 1053px; + display:flex; + justify-content: center; + } + .j_list_date { + width: 127px; + display:flex; + justify-content: center; + } + + .search_icon { + width: 40px; + height: 40px; + } \ No newline at end of file diff --git a/client/src/styles/P_List.module.css b/client/src/styles/P_List.module.css new file mode 100644 index 00000000..2311d9ff --- /dev/null +++ b/client/src/styles/P_List.module.css @@ -0,0 +1,37 @@ +.P_List_search { + background-color: aliceblue; + width: 1011px; /*1090px*/ + +} + +.P_List_container { + width : 1318px; + height: 60px; /* 보류 */ + /* background-color:rgb(88, 210, 210); */ + + display:flex; + margin-top: 2.5%; + margin-left:61px; + justify-content: space-between; + +} + +.P_List_icon { + width : 60px; /*60*/ + height: 60px; + background-color: #EEE; + display: flex; + justify-content: center; + align-items: center; + + margin-left: 20px; + + border-radius: 5px; + } + +.button_list{ + display:flex; + justify-content: space-between; + + margin-top: 10px; +} \ No newline at end of file diff --git a/client/src/styles/P_List_add.module.css b/client/src/styles/P_List_add.module.css new file mode 100644 index 00000000..f0d51247 --- /dev/null +++ b/client/src/styles/P_List_add.module.css @@ -0,0 +1,185 @@ +.P_List_add_container { + width:1318px; + height:679px; + + display:inline-block; + margin-top: 7%; + margin-left:4%; + +} + +.P_List_title { + width: 1318px; + height: 68px; + flex-shrink: 0; + background-color: #F3F3F3; + + display:flex; + justify-content:center; +} + +.P_List_title2 { + width: 1318px; + height: 68px; + flex-shrink: 0; + background-color: #ffffff; + + display: flex; + + +} + +.P_List_text1{ + color: #000; + font-family: Inter; + font-size: 20px; + font-style: normal; + font-weight: 400; + line-height: normal; + + margin-left:33px; + margin-top:21px; + +} + +.P_List_text2{ + color: #000; + text-align: center; + font-family: Inter; + font-size: 20px; + font-style: normal; + font-weight: 400; + line-height: normal; + + margin-left:670px; + margin-top:21px; + +} + +.P_List_categori { + background-color: #EEE; + width: 129px; + height: 47px; + flex-shrink: 0; + display: flex; + justify-content: space-around; + align-items: center; + + color: #000; + + text-align: center; + font-family: Inter; + font-size: 20px; + font-style: normal; + font-weight: 400; + line-height: normal; + + margin-top:10px; + margin-left:15px; + + } + +.P_List_date{ + width: 147px; + height: 46px; + flex-shrink: 0; + border-radius: 10px; + background-color: #F4F4F4; + margin-top:10px; + margin-left:8px; +} + +.calendar_icon{ + width: 50px; + height: 50px; + flex-shrink: 0; + + margin-top:5px; + margin-left:21px; +} + +.func_container{ + width: auto; + height: 85px; + display: flex; + flex-direction: row-reverse; +} + +.func_icon{ + width: 42px; + height: 42px; + + margin-top:18px; + margin-right:18px +} + +.content_box{ + width:1271px; + height:328px; + + overflow: auto; + resize: none; + + color: #000; + + /* text-align: center; */ + font-family: Inter; + font-size: 20px; + font-style: normal; + font-weight: 400; + line-height: normal; + + border-radius: 5px; + padding: 23px; +} + +.mojib_categori{ + width: 406px; + height: 46px; + + margin-top:10px; + margin-left:14px; + border-radius: 10px; + background-color: #F4F4F4; + + font-family: Inter; + font-size: 25px; + font-style: normal; + font-weight: 700; + line-height: normal; +} + +.mojib_pop{ + width: 102px; + height: 46px; + flex-shrink: 0; + border-radius: 10px; + background-color: #F4F4F4; + + color: #000; + + text-align: center; + font-family: Inter; + font-size: 20px; + font-style: normal; + font-weight: 400; + line-height: normal; + + margin-left: 25px; + margin-top:10px; +} + +.cancel_icon{ + width: 50px; + height: 50px; + flex-shrink: 0; + + margin-left:30px; + margin-top: 10px; +} + +.mojib_container{ + display:inline-flex; + margin-top: 10px;; +} + diff --git a/client/src/styles/Paging.module.css b/client/src/styles/Paging.module.css new file mode 100644 index 00000000..0a514a18 --- /dev/null +++ b/client/src/styles/Paging.module.css @@ -0,0 +1,54 @@ +.pagination { + display: flex; + justify-content: center; + margin-top: 15px; + } + + ul { + list-style: none; + padding: 0; + } + + ul.pagination li { + display: inline-block; + width: 30px; + height: 30px; + border: 1px solid #e2e2e2; + display: flex; + justify-content: center; + align-items: center; + font-size: 1rem; + } + + ul.pagination li:first-child{ + border-radius: 5px 0 0 5px; + } + + ul.pagination li:last-child{ + border-radius: 0 5px 5px 0; + } + + ul.pagination li a { + text-decoration: none; + color: #337ab7; + font-size: 1rem; + } + + ul.pagination li.active a { + color: white; + } + + ul.pagination li.active { + background-color: #337ab7; + } + + ul.pagination li a:hover, + ul.pagination li a.active { + color: blue; + } + + .page-selection { + width: 48px; + height: 30px; + color: #337ab7; + } \ No newline at end of file diff --git a/client/src/styles/Prev_next.module.css b/client/src/styles/Prev_next.module.css new file mode 100644 index 00000000..700207b6 --- /dev/null +++ b/client/src/styles/Prev_next.module.css @@ -0,0 +1,22 @@ +.prev_container{ + width: 1318px; + height: 73px; + + margin-left:61px; + + +} + +.prev_text{ + margin-left: 39px; + margin-top:24px; + + color: #000; + + font-family: Inter; + font-size: 20px; + font-style: normal; + font-weight: 700; + line-height: normal; + +} \ No newline at end of file diff --git a/index.ts b/index.ts index 945c9b46..e69de29b 100644 --- a/index.ts +++ b/index.ts @@ -1 +0,0 @@ -. \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..4cece2c4 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,13 @@ +{ + "name": "khu-cse-page", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "khu-cse-page", + "version": "1.0.0", + "license": "ISC" + } + } +} From e5e36fdedbd0285b464168b642bfbaf92daed9d6 Mon Sep 17 00:00:00 2001 From: seojin Date: Sun, 21 Jan 2024 11:50:26 +0900 Subject: [PATCH 02/51] 24.01.21 complete-module-css --- client/package-lock.json | 12 + client/package.json | 3 + client/public/images/Polygon 1.svg | 3 + client/public/images/add_icon.png | Bin 0 -> 1329 bytes client/public/images/calendar_icon.jpg | Bin 0 -> 61650 bytes client/public/images/calendar_icon2.png | Bin 0 -> 5774 bytes client/public/images/search_icon.png | Bin 0 -> 757 bytes client/public/logo192.png | Bin 5347 -> 0 bytes client/public/logo512.png | Bin 9664 -> 0 bytes client/src/components/mojib.tsx | 14 +- client/src/components/prev_next.tsx | 46 +- client/src/pages/Detail.tsx | 63 +- client/src/pages/J_List.tsx | 133 +- client/src/pages/NewUser.tsx | 16 +- client/src/pages/P_List.tsx | 180 +- client/src/pages/P_List_add3.tsx | 11 - client/src/pages/P_List_add_design.tsx | 224 +- .../styles/{Paging.module.css => Paging.css} | 0 node_modules/.package-lock.json | 41 + node_modules/@types/prop-types/LICENSE | 21 + node_modules/@types/prop-types/README.md | 15 + node_modules/@types/prop-types/index.d.ts | 98 + node_modules/@types/prop-types/package.json | 35 + .../@types/react-js-pagination/LICENSE | 21 + .../@types/react-js-pagination/README.md | 53 + .../@types/react-js-pagination/index.d.ts | 34 + .../@types/react-js-pagination/package.json | 27 + node_modules/@types/react/LICENSE | 21 + node_modules/@types/react/README.md | 15 + node_modules/@types/react/canary.d.ts | 112 + node_modules/@types/react/experimental.d.ts | 126 + node_modules/@types/react/global.d.ts | 158 + node_modules/@types/react/index.d.ts | 3532 +++ .../@types/react/jsx-dev-runtime.d.ts | 13 + node_modules/@types/react/jsx-runtime.d.ts | 13 + node_modules/@types/react/package.json | 206 + node_modules/@types/react/ts5.0/canary.d.ts | 112 + .../@types/react/ts5.0/experimental.d.ts | 126 + node_modules/@types/react/ts5.0/global.d.ts | 158 + node_modules/@types/react/ts5.0/index.d.ts | 3518 +++ .../@types/react/ts5.0/jsx-dev-runtime.d.ts | 12 + .../@types/react/ts5.0/jsx-runtime.d.ts | 12 + node_modules/@types/scheduler/LICENSE | 21 + node_modules/@types/scheduler/README.md | 15 + node_modules/@types/scheduler/index.d.ts | 30 + node_modules/@types/scheduler/package.json | 30 + node_modules/@types/scheduler/tracing.d.ts | 127 + node_modules/csstype/LICENSE | 19 + node_modules/csstype/README.md | 277 + node_modules/csstype/index.d.ts | 21297 ++++++++++++++++ node_modules/csstype/index.js.flow | 6612 +++++ node_modules/csstype/package.json | 66 + package-lock.json | 38 +- package.json | 5 +- 54 files changed, 37652 insertions(+), 69 deletions(-) create mode 100644 client/public/images/Polygon 1.svg create mode 100644 client/public/images/add_icon.png create mode 100644 client/public/images/calendar_icon.jpg create mode 100644 client/public/images/calendar_icon2.png create mode 100644 client/public/images/search_icon.png delete mode 100644 client/public/logo192.png delete mode 100644 client/public/logo512.png delete mode 100644 client/src/pages/P_List_add3.tsx rename client/src/styles/{Paging.module.css => Paging.css} (100%) create mode 100644 node_modules/.package-lock.json create mode 100644 node_modules/@types/prop-types/LICENSE create mode 100644 node_modules/@types/prop-types/README.md create mode 100644 node_modules/@types/prop-types/index.d.ts create mode 100644 node_modules/@types/prop-types/package.json create mode 100644 node_modules/@types/react-js-pagination/LICENSE create mode 100644 node_modules/@types/react-js-pagination/README.md create mode 100644 node_modules/@types/react-js-pagination/index.d.ts create mode 100644 node_modules/@types/react-js-pagination/package.json create mode 100644 node_modules/@types/react/LICENSE create mode 100644 node_modules/@types/react/README.md create mode 100644 node_modules/@types/react/canary.d.ts create mode 100644 node_modules/@types/react/experimental.d.ts create mode 100644 node_modules/@types/react/global.d.ts create mode 100644 node_modules/@types/react/index.d.ts create mode 100644 node_modules/@types/react/jsx-dev-runtime.d.ts create mode 100644 node_modules/@types/react/jsx-runtime.d.ts create mode 100644 node_modules/@types/react/package.json create mode 100644 node_modules/@types/react/ts5.0/canary.d.ts create mode 100644 node_modules/@types/react/ts5.0/experimental.d.ts create mode 100644 node_modules/@types/react/ts5.0/global.d.ts create mode 100644 node_modules/@types/react/ts5.0/index.d.ts create mode 100644 node_modules/@types/react/ts5.0/jsx-dev-runtime.d.ts create mode 100644 node_modules/@types/react/ts5.0/jsx-runtime.d.ts create mode 100644 node_modules/@types/scheduler/LICENSE create mode 100644 node_modules/@types/scheduler/README.md create mode 100644 node_modules/@types/scheduler/index.d.ts create mode 100644 node_modules/@types/scheduler/package.json create mode 100644 node_modules/@types/scheduler/tracing.d.ts create mode 100644 node_modules/csstype/LICENSE create mode 100644 node_modules/csstype/README.md create mode 100644 node_modules/csstype/index.d.ts create mode 100644 node_modules/csstype/index.js.flow create mode 100644 node_modules/csstype/package.json diff --git a/client/package-lock.json b/client/package-lock.json index e8e11620..66aebb62 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -27,6 +27,9 @@ "redux": "^5.0.1", "typescript": "^4.9.5", "web-vitals": "^2.1.4" + }, + "devDependencies": { + "@types/react-js-pagination": "^3.0.7" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -4275,6 +4278,15 @@ "@types/react": "*" } }, + "node_modules/@types/react-js-pagination": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/react-js-pagination/-/react-js-pagination-3.0.7.tgz", + "integrity": "sha512-h16F5eFcVaTO5LTT5jJrvK8SxTlxkuv03ZKt/e6L3GPng/0TZTqhEKEyD8F5XksLeKBalsS1tTN2foJLWv/6mA==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, "node_modules/@types/react-redux": { "version": "7.1.33", "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.33.tgz", diff --git a/client/package.json b/client/package.json index 6e20ee11..6b141b19 100644 --- a/client/package.json +++ b/client/package.json @@ -46,5 +46,8 @@ "last 1 firefox version", "last 1 safari version" ] + }, + "devDependencies": { + "@types/react-js-pagination": "^3.0.7" } } diff --git a/client/public/images/Polygon 1.svg b/client/public/images/Polygon 1.svg new file mode 100644 index 00000000..abcfcc73 --- /dev/null +++ b/client/public/images/Polygon 1.svg @@ -0,0 +1,3 @@ + + + diff --git a/client/public/images/add_icon.png b/client/public/images/add_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..50c82c64e35b1da9a7cd570edcfa8584b42912de GIT binary patch literal 1329 zcmV-11J z+eQ$8XBMQN?f2}*6v~S#BSm6KF(r_0Qc5SV)VVWt0?8*ZbplBzFnxkBCot2cBG(Zk zGD#7*ijt>-ot-G$@eKY5ihu}$q&$VV0Coo-c4ua1M+g~YZOySw5gY|j0#bHjCj_^D z)^1GGW!p~a{zG*@Ks6w=5n#Y=O@MEb#$zhf6K5MyJ>w2F60i*N|Ik$aIM+Ju`TFM5 z10<@a>Em}b%#}In_q7|lcMXhZ3yb)gA8o@7fR$n1OJ>H)PTy8Kd z+Oe)KU74K_at!d>^3&Y{(ChdYdM`HEM9aKmg#!?!3G%T3+SPiH1&(!`ekhoF*nhq3 z?DCtAW1taa1h}!`IAp2LNG-WUwBPUQ7R(_Na0XuXer=yj^mBOShWK^_Nv+;lXU78+ z!@c*wgR_&qa8YnHg#G?`x+7hOBr-nWr5ucRQ7-<9z3Q z>t9hz$q&OFgdNB-FJVrZSXR-C=*Y{bjTMuU(BogBqk=)Ur-a=+%?oqGvAKjzRCt_4 zhvB#wG)p{#YCBQ@=0})Al5DQmZ69(VZuvLR`L0~O5z-5DL5LHxP>8S{|)4Wy8W{Bn}dd_{5AVm+GSxwp!f59?G zJcDF=H;7zV0$eD+{i078Yz%U}T>W#cT&*SQF?b{&hTMsQ5v^Xgvja2Fwc=iYy(kRweT86u4Y~^TLhk ziDgVla5Dog6mD!AOop2Y&FH9^7kX4YJ zfKm6UhdM!C3|5?3;Y5TLzp+CMO}JEeuYmS9j6@y~Ec-4o3us zi-7Y0!%PBit{y~och9IAgEWfw!L}@Lyiy3lBTm~Ke2)#|^OfB*F}ELkLbSy^5Ef#>hJTziGh0_|O1Tnzl{_*axG4Zan(LzjD; zk}-PTI$>O7$GP(WI2x#Dyo9^)Q{52E-tWFM!UUlAMNg`AcJ<`a1d^LpVa+7Gr}J)8 zO0H3pix%y%|JwoHaUR#2W;&k$QS-OstM_D~00000NkvXXu0mjfx+!7Z literal 0 HcmV?d00001 diff --git a/client/public/images/calendar_icon.jpg b/client/public/images/calendar_icon.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5b2c3817d49fca2fd165cdd4c881c13ec36476ac GIT binary patch literal 61650 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 Wm-h2N0rM?hJU;dq@T~55>i+?mHOQ3! literal 0 HcmV?d00001 diff --git a/client/public/images/calendar_icon2.png b/client/public/images/calendar_icon2.png new file mode 100644 index 0000000000000000000000000000000000000000..aa2af9a4876b7162a363f7342c22d14ff308dcfd GIT binary patch literal 5774 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 literal 0 HcmV?d00001 diff --git a/client/public/logo192.png b/client/public/logo192.png deleted file mode 100644 index fc44b0a3796c0e0a64c3d858ca038bd4570465d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5347 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 b{|{}U^kRn2wo}j7|0ATu<;8xA7zX}7|B6mN diff --git a/client/src/components/mojib.tsx b/client/src/components/mojib.tsx index 2fb08d14..2b7508d1 100644 --- a/client/src/components/mojib.tsx +++ b/client/src/components/mojib.tsx @@ -1,8 +1,8 @@ import React, { useEffect, useRef, Ref, useMemo } from 'react'; import '../styles/App.css'; -import '../styles/J_List.module.css'; -import '../styles/JB_detail.module.css'; -import '../styles/P_List_add.module.css' +import J_List_styles from '../styles/J_List.module.css'; +import JB_styles from '../styles/JB_detail.module.css'; +import P_add_styles from '../styles/P_List_add.module.css' import Mynavbar from '../components/navbar'; import { useState } from 'react'; @@ -27,8 +27,8 @@ export default function Mojib(props:any) { }; return ( -
- +
인원 수
- + { if(props.num>0) { dispatch(p_removerecruit(props.num)) } - }} className='cancel_icon'/> + }} className={P_add_styles.mojib_container}/>
) diff --git a/client/src/components/prev_next.tsx b/client/src/components/prev_next.tsx index 0227d471..28c4a2e5 100644 --- a/client/src/components/prev_next.tsx +++ b/client/src/components/prev_next.tsx @@ -1,22 +1,22 @@ import React, { useEffect } from 'react'; import '../styles/App.css'; -import styles1 from '../styles/J_List.module.css'; -import styles3 from '../styles/Prev_next.module.css'; +import J_List_styles from '../styles/J_List.module.css'; +import Prev_next_styles from '../styles/Prev_next.module.css'; export default function Prev_next(props:any) { if(props.scholarshipId==0) { return (
-
-
-
이전글
-
+
+
+
이전글
+
-
-
다음글 {/* {props.j_list[1].title} */}
-
+
+
다음글 {/* {props.j_list[1].title} */}
+
@@ -25,15 +25,15 @@ export default function Prev_next(props:any) { else if(props.scholarshipId==499) { return (
-
-
-
이전글 {/* {props.j_list[0].title} */}
-
+
+
+
이전글 {/* {props.j_list[0].title} */}
+
-
-
다음글
-
+
+
다음글
+
) @@ -42,15 +42,15 @@ export default function Prev_next(props:any) { return (
-
-
-
이전글 {/* {props.j_list[0].title} */}
-
+
+
+
이전글 {/* {props.j_list[0].title} */}
+
-
-
다음글 {/* {props.j_list[2].title} */}
-
+
+
다음글 {/* {props.j_list[2].title} */}
+
diff --git a/client/src/pages/Detail.tsx b/client/src/pages/Detail.tsx index 63faf437..6ab0cb96 100644 --- a/client/src/pages/Detail.tsx +++ b/client/src/pages/Detail.tsx @@ -1,10 +1,71 @@ +import React, { useEffect } from 'react'; +import '../css/App.css'; +import J_List_styles from '../styles/J_List.module.css'; +import JB_styles from '../styles/JB_detail.module.css'; +import P_add_styles from '../styles/P_List_add.module.css' +import Mynavbar from '../components/navbar'; +import Prev_next from '../components/prev_next'; +import { useState } from 'react'; + +import { RootState } from "../components/store"; +import { useDispatch, useSelector } from "react-redux"; +import J_List from './J_List'; +import axios from 'axios'; export default function Detail(props:any) { + + let content:string = props.j_list[1].content; + content = content.substring(1, content.length - 1); + + let a; + if(props.scholarshipId==0) { + a = 0; + } + else { + a=1; + } + return (
+ + + +
장학
+ +
+
+ +
+
+
{props.j_list[a].title}
+
{props.j_list[a].date}
+
+ +
- +
+ +
작성자
+
+
{props.j_list[a].writer}
+ +
첨부파일
+
+
{props.j_list[a].file}
+
+ +
+ +
+
+
+ + + +
+ +
diff --git a/client/src/pages/J_List.tsx b/client/src/pages/J_List.tsx index 0255542c..76e0fdc6 100644 --- a/client/src/pages/J_List.tsx +++ b/client/src/pages/J_List.tsx @@ -1,11 +1,128 @@ -export default function J_List(props:any) { +import React from 'react'; - return ( -
+import '../styles/App.css'; +import J_List_styles from '../styles/J_List.module.css'; - - -
+import Mynavbar from '../components/navbar'; +import Mynavbar_logined from '../components/navbar_logout'; + +import { useState,useEffect } from 'react'; +import axios from 'axios'; + +import { RootState, changeIsLogined} from "../components/store"; +import { useDispatch, useSelector } from "react-redux"; + +import '../styles/Paging.css'; +import Pagination from "react-js-pagination"; + + +function J_List(props:any) { + const IsLogined = useSelector((state: RootState) => state.IsLogined); + let dispatch = useDispatch(); + + const [page, setPage] = useState(1); + + const [list, setList] = useState(props.j_list) + + const handlePageChange = (page: React.SetStateAction) => { + setPage(page); + }; + + useEffect(()=>{ + axios.get(`/scholarship/getList?key=all&page=${page}`) + .then(response => { - ) -} \ No newline at end of file + setList(response.data) + }) + .catch(error => { + }); + + axios.get('/authorization') + .then(response => { + if(response.data.isLogined == 'Logined'){ + dispatch(changeIsLogined(response.data)); + } + }) + .catch(error => { + }); + }) + + + return ( +
+ { + + IsLogined.isLogined ? () : () + + } +
장학
+ +
+ + + + +
+
+
+
+
카테고리
+
제목
+
등록일
+
+
+ { + list&&list.map((a:any,i:any) => { + return( +
+
+
+
+

{a.category}

+
+
+
+ { + axios.get(`/scholarship/detail/${(page-1)*10+i}`) + .then(response => { + document.getElementById('root')!.innerHTML = response.data; + }) + .catch(error => { + console.error(error); + }); + }}>{a.title} +
+
+
{a.date}
+
+
+
+
+ ) + }) + } +
+