diff --git a/package-lock.json b/package-lock.json index 32a244a2c..e062401be 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,53 +4,6 @@ "lockfileVersion": 1, "requires": true, "dependencies": { - "@ant-design/colors": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-6.0.0.tgz", - "integrity": "sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ==", - "requires": { - "@ctrl/tinycolor": "^3.4.0" - } - }, - "@ant-design/icons": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-4.6.2.tgz", - "integrity": "sha512-QsBG2BxBYU/rxr2eb8b2cZ4rPKAPBpzAR+0v6rrZLp/lnyvflLH3tw1vregK+M7aJauGWjIGNdFmUfpAOtw25A==", - "requires": { - "@ant-design/colors": "^6.0.0", - "@ant-design/icons-svg": "^4.0.0", - "@babel/runtime": "^7.11.2", - "classnames": "^2.2.6", - "rc-util": "^5.9.4" - }, - "dependencies": { - "@babel/runtime": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", - "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - } - } - }, - "@ant-design/icons-svg": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@ant-design/icons-svg/-/icons-svg-4.1.0.tgz", - "integrity": "sha512-Fi03PfuUqRs76aI3UWYpP864lkrfPo0hluwGqh7NJdLhvH4iRDc3jbJqZIvRDLHKbXrvAfPPV3+zjUccfFvWOQ==" - }, - "@ant-design/react-slick": { - "version": "0.28.2", - "resolved": "https://registry.npmjs.org/@ant-design/react-slick/-/react-slick-0.28.2.tgz", - "integrity": "sha512-nkrvXsO29pLToFaBb3MlJY4McaUFR4UHtXTz6A5HBzYmxH4SwKerX54mWdGc/6tKpHvS3vUwjEOt2T5XqZEo8Q==", - "requires": { - "@babel/runtime": "^7.10.4", - "classnames": "^2.2.5", - "json2mq": "^0.2.0", - "lodash": "^4.17.15", - "resize-observer-polyfill": "^1.5.0" - } - }, "@babel/code-frame": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", @@ -3174,11 +3127,6 @@ "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-10.1.0.tgz", "integrity": "sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg==" }, - "@ctrl/tinycolor": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.4.0.tgz", - "integrity": "sha512-JZButFdZ1+/xAfpguQHoabIXkcqRRKpMrWKBkpEZZyxfY9C1DpADFB8PEqGSTeFr135SaTRfKqGKx5xSCLI7ZQ==" - }, "@date-io/core": { "version": "1.3.13", "resolved": "https://registry.npmjs.org/@date-io/core/-/core-1.3.13.tgz", @@ -3560,12 +3508,6 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==" }, - "@polka/url": { - "version": "1.0.0-next.15", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.15.tgz", - "integrity": "sha512-15spi3V28QdevleWBNXE4pIls3nFZmBbUGrW9IVPwiQczuSb9n76TCB4bsk8TSel+I1OkHEdPhu5QKMfY6rQHA==", - "dev": true - }, "@reduxjs/toolkit": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.4.0.tgz", @@ -4527,70 +4469,6 @@ "color-convert": "^1.9.0" } }, - "antd": { - "version": "4.15.0", - "resolved": "https://registry.npmjs.org/antd/-/antd-4.15.0.tgz", - "integrity": "sha512-24HMixmQAhCyqb0ND5wX5DYRTbPactCT36mfVKowqgr77eT7XQ59Uu6aS513mbeiVhXcHrNlrlCKNZBSeEDgPg==", - "requires": { - "@ant-design/colors": "^6.0.0", - "@ant-design/icons": "^4.6.2", - "@ant-design/react-slick": "~0.28.1", - "@babel/runtime": "^7.12.5", - "array-tree-filter": "^2.1.0", - "classnames": "^2.2.6", - "copy-to-clipboard": "^3.2.0", - "lodash": "^4.17.20", - "moment": "^2.25.3", - "rc-cascader": "~1.4.0", - "rc-checkbox": "~2.3.0", - "rc-collapse": "~3.1.0", - "rc-dialog": "~8.5.1", - "rc-drawer": "~4.3.0", - "rc-dropdown": "~3.2.0", - "rc-field-form": "~1.20.0", - "rc-image": "~5.2.4", - "rc-input-number": "~7.0.1", - "rc-mentions": "~1.5.0", - "rc-menu": "~8.10.0", - "rc-motion": "^2.4.0", - "rc-notification": "~4.5.2", - "rc-pagination": "~3.1.6", - "rc-picker": "~2.5.10", - "rc-progress": "~3.1.0", - "rc-rate": "~2.9.0", - "rc-resize-observer": "^1.0.0", - "rc-select": "~12.1.6", - "rc-slider": "~9.7.1", - "rc-steps": "~4.1.0", - "rc-switch": "~3.2.0", - "rc-table": "~7.13.0", - "rc-tabs": "~11.7.0", - "rc-textarea": "~0.3.0", - "rc-tooltip": "~5.1.0", - "rc-tree": "~4.1.0", - "rc-tree-select": "~4.3.0", - "rc-trigger": "^5.2.1", - "rc-upload": "~4.2.0-alpha.0", - "rc-util": "^5.9.4", - "scroll-into-view-if-needed": "^2.2.25", - "warning": "^4.0.3" - }, - "dependencies": { - "@babel/runtime": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", - "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - } - } - }, "anymatch": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", @@ -4672,11 +4550,6 @@ "is-string": "^1.0.5" } }, - "array-tree-filter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-tree-filter/-/array-tree-filter-2.1.0.tgz", - "integrity": "sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw==" - }, "array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", @@ -4785,11 +4658,6 @@ "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" }, - "async-validator": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-3.5.1.tgz", - "integrity": "sha512-DDmKA7sdSAJtTVeNZHrnr2yojfFaoeW8MfQN8CeuXg8DDQHTqKk9Fdv38dSvnesHoO8MUwMI2HphOeSyIF+wmQ==" - }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -4805,6 +4673,14 @@ "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.1.0.tgz", "integrity": "sha512-sLzVM3zCCmmDtDNhI0i96k6PUztkotSOXqE4kDGQt/6iDi5M+H0srjeF+QC6jN581l4X/Zq3Zu/tgcErEssavg==" }, + "auto-bind": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-2.1.1.tgz", + "integrity": "sha512-NUwV1i9D3vxxY1KnfZgSZ716d6ovY7o8LfOwLhGIPFBowIb6Ln6DBW64+jCqPzUznel2hRSkQnYQqvh7/ldw8A==", + "requires": { + "@types/react": "^16.8.12" + } + }, "autoprefixer": { "version": "9.8.4", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.4.tgz", @@ -6128,11 +6004,6 @@ } } }, - "compute-scroll-into-view": { - "version": "1.0.17", - "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz", - "integrity": "sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg==" - }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -6266,14 +6137,6 @@ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" }, - "copy-to-clipboard": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz", - "integrity": "sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==", - "requires": { - "toggle-selection": "^1.0.6" - } - }, "core-js": { "version": "3.6.5", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", @@ -7020,11 +6883,6 @@ "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.3.0.tgz", "integrity": "sha512-PzwHEmsRP3IGY4gv/Ug+rMeaTIyTJvadCb+ujYXYeIylbHJezIyNToe8KfEgHTCEYyC+/bUghYOGg8yMGlZ6vA==" }, - "dom-align": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/dom-align/-/dom-align-1.12.0.tgz", - "integrity": "sha512-YkoezQuhp3SLFGdOlr5xkqZ640iXrnHAwVYcDg8ZKRUtO7mSzSC2BA5V0VuyAwPSJA4CLIc6EDDJh4bEsD2+zA==" - }, "dom-converter": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", @@ -10101,14 +9959,6 @@ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, - "json2mq": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/json2mq/-/json2mq-0.2.0.tgz", - "integrity": "sha1-tje9O6nqvhIsg+lyBIOusQ0skEo=", - "requires": { - "string-convert": "^0.2.0" - } - }, "json3": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", @@ -10746,15 +10596,6 @@ } } }, - "mini-store": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/mini-store/-/mini-store-3.0.6.tgz", - "integrity": "sha512-YzffKHbYsMQGUWQRKdsearR79QsMzzJcDDmZKlJBqt5JNkqpyJHYlK6gP61O36X+sLf76sO9G6mhKBe83gIZIQ==", - "requires": { - "hoist-non-react-statics": "^3.3.2", - "shallowequal": "^1.0.2" - } - }, "minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -10870,11 +10711,6 @@ "minimist": "^1.2.5" } }, - "moment": { - "version": "2.27.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.27.0.tgz", - "integrity": "sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ==" - }, "move-concurrently": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", @@ -13020,463 +12856,6 @@ } } }, - "rc-align": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/rc-align/-/rc-align-4.0.9.tgz", - "integrity": "sha512-myAM2R4qoB6LqBul0leaqY8gFaiECDJ3MtQDmzDo9xM9NRT/04TvWOYd2YHU9zvGzqk9QXF6S9/MifzSKDZeMw==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "2.x", - "dom-align": "^1.7.0", - "rc-util": "^5.3.0", - "resize-observer-polyfill": "^1.5.1" - } - }, - "rc-cascader": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/rc-cascader/-/rc-cascader-1.4.2.tgz", - "integrity": "sha512-JVuLGrSi+3G8DZyPvlKlGVWJjhoi9NTz6REHIgRspa5WnznRkKGm2ejb0jJtz0m2IL8Q9BG4ZA2sXuqAu71ltQ==", - "requires": { - "@babel/runtime": "^7.12.5", - "array-tree-filter": "^2.1.0", - "rc-trigger": "^5.0.4", - "rc-util": "^5.0.1", - "warning": "^4.0.1" - }, - "dependencies": { - "@babel/runtime": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", - "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - } - } - }, - "rc-checkbox": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/rc-checkbox/-/rc-checkbox-2.3.2.tgz", - "integrity": "sha512-afVi1FYiGv1U0JlpNH/UaEXdh6WUJjcWokj/nUN2TgG80bfG+MDdbfHKlLcNNba94mbjy2/SXJ1HDgrOkXGAjg==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.2.1" - } - }, - "rc-collapse": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/rc-collapse/-/rc-collapse-3.1.0.tgz", - "integrity": "sha512-EwpNPJcLe7b+5JfyaxM9ZNnkCgqArt3QQO0Cr5p5plwz/C9h8liAmjYY5I4+hl9lAjBqb7ZwLu94+z+rt5g1WQ==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "2.x", - "rc-motion": "^2.3.4", - "rc-util": "^5.2.1", - "shallowequal": "^1.1.0" - } - }, - "rc-dialog": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/rc-dialog/-/rc-dialog-8.5.2.tgz", - "integrity": "sha512-3n4taFcjqhTE9uNuzjB+nPDeqgRBTEGBfe46mb1e7r88DgDo0lL4NnxY/PZ6PJKd2tsCt+RrgF/+YeTvJ/Thsw==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.2.6", - "rc-motion": "^2.3.0", - "rc-util": "^5.6.1" - } - }, - "rc-drawer": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/rc-drawer/-/rc-drawer-4.3.1.tgz", - "integrity": "sha512-GMfFy4maqxS9faYXEhQ+0cA1xtkddEQzraf6SAdzWbn444DrrLogwYPk1NXSpdXjLCLxgxOj9MYtyYG42JsfXg==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.2.6", - "rc-util": "^5.7.0" - } - }, - "rc-dropdown": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/rc-dropdown/-/rc-dropdown-3.2.0.tgz", - "integrity": "sha512-j1HSw+/QqlhxyTEF6BArVZnTmezw2LnSmRk6I9W7BCqNCKaRwleRmMMs1PHbuaG8dKHVqP6e21RQ7vPBLVnnNw==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.2.6", - "rc-trigger": "^5.0.4" - } - }, - "rc-field-form": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/rc-field-form/-/rc-field-form-1.20.0.tgz", - "integrity": "sha512-jkzsIfXR7ywEYdeAtktt1aLff88wxIPDLpq7KShHNl4wlsWrCE+TzkXBfjvVzYOVZt5GGrD8YDqNO/q6eaR/eA==", - "requires": { - "@babel/runtime": "^7.8.4", - "async-validator": "^3.0.3", - "rc-util": "^5.8.0" - } - }, - "rc-image": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/rc-image/-/rc-image-5.2.4.tgz", - "integrity": "sha512-kWOjhZC1OoGKfvWqtDoO9r8WUNswBwnjcstI6rf7HMudz0usmbGvewcWqsOhyaBRJL9+I4eeG+xiAoxV1xi75Q==", - "requires": { - "@babel/runtime": "^7.11.2", - "classnames": "^2.2.6", - "rc-dialog": "~8.5.0", - "rc-util": "^5.0.6" - }, - "dependencies": { - "@babel/runtime": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", - "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - } - } - }, - "rc-input-number": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/rc-input-number/-/rc-input-number-7.0.3.tgz", - "integrity": "sha512-y0nVqVANWyxQbm/vdhz1p5E1V5Y6Yd2+3MGKntSzCxrYgw0F7/COXkbRdcTECnXwiDv8ZrbYQ1pTP3u43PqE4Q==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.2.5", - "rc-util": "^5.0.1" - } - }, - "rc-mentions": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/rc-mentions/-/rc-mentions-1.5.3.tgz", - "integrity": "sha512-NG/KB8YiKBCJPHHvr/QapAb4f9YzLJn7kDHtmI1K6t7ZMM5YgrjIxNNhoRKKP9zJvb9PdPts69Hbg4ZMvLVIFQ==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.2.6", - "rc-menu": "^8.0.1", - "rc-textarea": "^0.3.0", - "rc-trigger": "^5.0.4", - "rc-util": "^5.0.1" - } - }, - "rc-menu": { - "version": "8.10.7", - "resolved": "https://registry.npmjs.org/rc-menu/-/rc-menu-8.10.7.tgz", - "integrity": "sha512-m/ypV7OjkkUsMdutzMUxEI8tWyi0Y1TQ5YkSDk7k2uv2aCKkHYEoDKsDAfcPeejo3HMo2z5unWE+jD+dCphraw==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "2.x", - "mini-store": "^3.0.1", - "rc-motion": "^2.0.1", - "rc-trigger": "^5.1.2", - "rc-util": "^5.7.0", - "resize-observer-polyfill": "^1.5.0", - "shallowequal": "^1.1.0" - } - }, - "rc-motion": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/rc-motion/-/rc-motion-2.4.1.tgz", - "integrity": "sha512-TWLvymfMu8SngPx5MDH8dQ0D2RYbluNTfam4hY/dNNx9RQ3WtGuZ/GXHi2ymLMzH+UNd6EEFYkOuR5JTTtm8Xg==", - "requires": { - "@babel/runtime": "^7.11.1", - "classnames": "^2.2.1", - "rc-util": "^5.2.1" - }, - "dependencies": { - "@babel/runtime": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", - "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - } - } - }, - "rc-notification": { - "version": "4.5.5", - "resolved": "https://registry.npmjs.org/rc-notification/-/rc-notification-4.5.5.tgz", - "integrity": "sha512-YIfhTSw+h5GsSdgMnuMx24wqiPlg3FeamuOlkh9RkyHx+SeZVAKzQ0juy2NGvPEF2hDWi5xTqxUqLdo0L2AmGg==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "2.x", - "rc-motion": "^2.2.0", - "rc-util": "^5.0.1" - } - }, - "rc-overflow": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/rc-overflow/-/rc-overflow-1.0.2.tgz", - "integrity": "sha512-GXj4DAyNxm4f57LvXLwhJaZoJHzSge2l2lQq64MZP7NJAfLpQqOLD+v9JMV9ONTvDPZe8kdzR+UMmkAn7qlzFA==", - "requires": { - "@babel/runtime": "^7.11.1", - "classnames": "^2.2.1", - "rc-resize-observer": "^1.0.0", - "rc-util": "^5.5.1" - }, - "dependencies": { - "@babel/runtime": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", - "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - } - } - }, - "rc-pagination": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/rc-pagination/-/rc-pagination-3.1.6.tgz", - "integrity": "sha512-Pb2zJEt8uxXzYCWx/2qwsYZ3vSS9Eqdw0cJBli6C58/iYhmvutSBqrBJh51Z5UzYc5ZcW5CMeP5LbbKE1J3rpw==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.2.1" - } - }, - "rc-picker": { - "version": "2.5.10", - "resolved": "https://registry.npmjs.org/rc-picker/-/rc-picker-2.5.10.tgz", - "integrity": "sha512-d2or2jql9SSY8CaRPybpbKkXBq3bZ6g88UKyWQZBLTCrc92Xm87RfRC/P3UEQo/CLmia3jVF7IXVi1HmNe2DZA==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.2.1", - "date-fns": "^2.15.0", - "moment": "^2.24.0", - "rc-trigger": "^5.0.4", - "rc-util": "^5.4.0", - "shallowequal": "^1.1.0" - } - }, - "rc-progress": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/rc-progress/-/rc-progress-3.1.3.tgz", - "integrity": "sha512-Jl4fzbBExHYMoC6HBPzel0a9VmhcSXx24LVt/mdhDM90MuzoMCJjXZAlhA0V0CJi+SKjMhfBoIQ6Lla1nD4QNw==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.2.6" - } - }, - "rc-rate": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/rc-rate/-/rc-rate-2.9.1.tgz", - "integrity": "sha512-MmIU7FT8W4LYRRHJD1sgG366qKtSaKb67D0/vVvJYR0lrCuRrCiVQ5qhfT5ghVO4wuVIORGpZs7ZKaYu+KMUzA==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.2.5", - "rc-util": "^5.0.1" - } - }, - "rc-resize-observer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rc-resize-observer/-/rc-resize-observer-1.0.0.tgz", - "integrity": "sha512-RgKGukg1mlzyGdvzF7o/LGFC8AeoMH9aGzXTUdp6m+OApvmRdUuOscq/Y2O45cJA+rXt1ApWlpFoOIioXL3AGg==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.2.1", - "rc-util": "^5.0.0", - "resize-observer-polyfill": "^1.5.1" - } - }, - "rc-select": { - "version": "12.1.7", - "resolved": "https://registry.npmjs.org/rc-select/-/rc-select-12.1.7.tgz", - "integrity": "sha512-sLZlfp+U7Typ+jPM5gTi8I4/oJalRw8kyhxZZ9Q4mEfO2p+otd1Chmzhh+wPraBY3IwE0RZM2/x1Leg/kQKk/w==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "2.x", - "rc-motion": "^2.0.1", - "rc-overflow": "^1.0.0", - "rc-trigger": "^5.0.4", - "rc-util": "^5.0.1", - "rc-virtual-list": "^3.2.0" - } - }, - "rc-slider": { - "version": "9.7.2", - "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-9.7.2.tgz", - "integrity": "sha512-mVaLRpDo6otasBs6yVnG02ykI3K6hIrLTNfT5eyaqduFv95UODI9PDS6fWuVVehVpdS4ENgOSwsTjrPVun+k9g==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.2.5", - "rc-tooltip": "^5.0.1", - "rc-util": "^5.0.0", - "shallowequal": "^1.1.0" - } - }, - "rc-steps": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/rc-steps/-/rc-steps-4.1.3.tgz", - "integrity": "sha512-GXrMfWQOhN3sVze3JnzNboHpQdNHcdFubOETUHyDpa/U3HEKBZC3xJ8XK4paBgF4OJ3bdUVLC+uBPc6dCxvDYA==", - "requires": { - "@babel/runtime": "^7.10.2", - "classnames": "^2.2.3", - "rc-util": "^5.0.1" - } - }, - "rc-switch": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/rc-switch/-/rc-switch-3.2.2.tgz", - "integrity": "sha512-+gUJClsZZzvAHGy1vZfnwySxj+MjLlGRyXKXScrtCTcmiYNPzxDFOxdQ/3pK1Kt/0POvwJ/6ALOR8gwdXGhs+A==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.2.1", - "rc-util": "^5.0.1" - } - }, - "rc-table": { - "version": "7.13.3", - "resolved": "https://registry.npmjs.org/rc-table/-/rc-table-7.13.3.tgz", - "integrity": "sha512-oP4fknjvKCZAaiDnvj+yzBaWcg+JYjkASbeWonU1BbrLcomkpKvMUgPODNEzg0QdXA9OGW0PO86h4goDSW06Kg==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.2.5", - "rc-resize-observer": "^1.0.0", - "rc-util": "^5.4.0", - "shallowequal": "^1.1.0" - } - }, - "rc-tabs": { - "version": "11.7.3", - "resolved": "https://registry.npmjs.org/rc-tabs/-/rc-tabs-11.7.3.tgz", - "integrity": "sha512-5nd2NVss9TprPRV9r8N05SjQyAE7zDrLejxFLcbJ+BdLxSwnGnk3ws/Iq0smqKZUnPQC0XEvnpF3+zlllUUT2w==", - "requires": { - "@babel/runtime": "^7.11.2", - "classnames": "2.x", - "rc-dropdown": "^3.1.3", - "rc-menu": "^8.6.1", - "rc-resize-observer": "^1.0.0", - "rc-util": "^5.5.0" - }, - "dependencies": { - "@babel/runtime": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", - "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - } - } - }, - "rc-textarea": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/rc-textarea/-/rc-textarea-0.3.4.tgz", - "integrity": "sha512-ILUYx831ZukQPv3m7R4RGRtVVWmL1LV4ME03L22mvT56US0DGCJJaRTHs4vmpcSjFHItph5OTmhodY4BOwy81A==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.2.1", - "rc-resize-observer": "^1.0.0", - "rc-util": "^5.7.0" - } - }, - "rc-tooltip": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-5.1.0.tgz", - "integrity": "sha512-pFqD1JZwNIpbdcefB7k5xREoHAWM/k3yQwYF0iminbmDXERgq4rvBfUwIvlCqqZSM7HDr9hYeYr6ZsVNaKtvCQ==", - "requires": { - "@babel/runtime": "^7.11.2", - "rc-trigger": "^5.0.0" - }, - "dependencies": { - "@babel/runtime": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", - "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - } - } - }, - "rc-tree": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/rc-tree/-/rc-tree-4.1.5.tgz", - "integrity": "sha512-q2vjcmnBDylGZ9/ZW4F9oZMKMJdbFWC7um+DAQhZG1nqyg1iwoowbBggUDUaUOEryJP+08bpliEAYnzJXbI5xQ==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "2.x", - "rc-motion": "^2.0.1", - "rc-util": "^5.0.0", - "rc-virtual-list": "^3.0.1" - } - }, - "rc-tree-select": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/rc-tree-select/-/rc-tree-select-4.3.1.tgz", - "integrity": "sha512-OeV8u5kBEJ8MbatP04Rh8T3boOHGjdGBTEm1a0bubBbB2GNNhlMOr4ZxezkHYtXf02JdBS/WyydmI/RMjXgtJA==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "2.x", - "rc-select": "^12.0.0", - "rc-tree": "^4.0.0", - "rc-util": "^5.0.5" - } - }, - "rc-trigger": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/rc-trigger/-/rc-trigger-5.2.3.tgz", - "integrity": "sha512-6Fokao07HUbqKIDkDRFEM0AGZvsvK0Fbp8A/KFgl1ngaqfO1nY037cISCG1Jm5fxImVsXp9awdkP7Vu5cxjjog==", - "requires": { - "@babel/runtime": "^7.11.2", - "classnames": "^2.2.6", - "rc-align": "^4.0.0", - "rc-motion": "^2.0.0", - "rc-util": "^5.5.0" - }, - "dependencies": { - "@babel/runtime": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", - "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - } - } - }, - "rc-upload": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/rc-upload/-/rc-upload-4.2.0.tgz", - "integrity": "sha512-BXtvBs1PnwLjaUzBBU5z4yb9NMSaxc6mUIoPmS9LUAzaTz12L3TLrwu+8dnopYUiyLmYFS3LEO7aUfEWBqJfSA==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.2.5", - "rc-util": "^5.2.0" - } - }, - "rc-util": { - "version": "5.9.8", - "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.9.8.tgz", - "integrity": "sha512-typLSHYGf5irvGLYQshs0Ra3aze086h0FhzsAkyirMunYZ7b3Te8gKa5PVaanoHaZa9sS6qx98BxgysoRP+6Tw==", - "requires": { - "@babel/runtime": "^7.12.5", - "react-is": "^16.12.0", - "shallowequal": "^1.1.0" - }, - "dependencies": { - "@babel/runtime": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", - "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - } - } - }, - "rc-virtual-list": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-3.2.6.tgz", - "integrity": "sha512-8FiQLDzm3c/tMX0d62SQtKDhLH7zFlSI6pWBAPt+TUntEqd3Lz9zFAmpvTu8gkvUom/HCsDSZs4wfV4wDPWC0Q==", - "requires": { - "classnames": "^2.2.6", - "rc-resize-observer": "^1.0.0", - "rc-util": "^5.0.7" - } - }, "react": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz", @@ -13736,6 +13115,15 @@ "xtend": "^4.0.1" } }, + "react-material-ui-carousel": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/react-material-ui-carousel/-/react-material-ui-carousel-2.2.7.tgz", + "integrity": "sha512-aO42C4oupmIxmJwYaTWrlWaXvVVspKcpEu/5efZ9slteATEsqqPtNAeVaE40Vimw2hZeIh2e8vpRwjq7fSsLxw==", + "requires": { + "auto-bind": "^2.1.1", + "react-swipeable": "^6.1.0" + } + }, "react-popper": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-1.3.7.tgz", @@ -13977,6 +13365,11 @@ } } }, + "react-swipeable": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/react-swipeable/-/react-swipeable-6.1.2.tgz", + "integrity": "sha512-vfZtOZNivwd/aI+ZZH1Grx0eQBdbV1UI3pB9p65jbW5guHHdSIPpKsND6XmaiZXP5REOOc9Ckfr36ChswPqwsA==" + }, "react-transition-group": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.9.0.tgz", @@ -14382,11 +13775,6 @@ "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.0.0.tgz", "integrity": "sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA==" }, - "resize-observer-polyfill": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", - "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" - }, "resolve": { "version": "1.15.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", @@ -14676,14 +14064,6 @@ "ajv-keywords": "^3.4.1" } }, - "scroll-into-view-if-needed": { - "version": "2.2.28", - "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.28.tgz", - "integrity": "sha512-8LuxJSuFVc92+0AdNv4QOxRL4Abeo1DgLnGNkn1XlaujPH/3cCFz3QI60r2VNu4obJJROzgnIUw5TKQkZvZI1w==", - "requires": { - "compute-scroll-into-view": "^1.0.17" - } - }, "select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", @@ -14858,11 +14238,6 @@ } } }, - "shallowequal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", - "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" - }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", @@ -14915,17 +14290,6 @@ } } }, - "sirv": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.12.tgz", - "integrity": "sha512-+jQoCxndz7L2tqQL4ZyzfDhky0W/4ZJip3XoOuxyQWnAwMxindLl3Xv1qT4x1YX/re0leShvTm8Uk0kQspGhBg==", - "dev": true, - "requires": { - "@polka/url": "^1.0.0-next.15", - "mime": "^2.3.1", - "totalist": "^1.0.0" - } - }, "sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", @@ -15387,11 +14751,6 @@ "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" }, - "string-convert": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz", - "integrity": "sha1-aYLMMEn7tM2F+LJFaLnZvznu/5c=" - }, "string-length": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", @@ -16086,22 +15445,11 @@ "repeat-string": "^1.6.1" } }, - "toggle-selection": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", - "integrity": "sha1-bkWxJj8gF/oKzH2J14sVuL932jI=" - }, "toidentifier": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" }, - "totalist": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz", - "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==", - "dev": true - }, "tough-cookie": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", @@ -16856,113 +16204,6 @@ } } }, - "webpack-bundle-analyzer": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.4.2.tgz", - "integrity": "sha512-PIagMYhlEzFfhMYOzs5gFT55DkUdkyrJi/SxJp8EF3YMWhS+T9vvs2EoTetpk5qb6VsCq02eXTlRDOydRhDFAQ==", - "dev": true, - "requires": { - "acorn": "^8.0.4", - "acorn-walk": "^8.0.0", - "chalk": "^4.1.0", - "commander": "^6.2.0", - "gzip-size": "^6.0.0", - "lodash": "^4.17.20", - "opener": "^1.5.2", - "sirv": "^1.0.7", - "ws": "^7.3.1" - }, - "dependencies": { - "acorn": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.4.1.tgz", - "integrity": "sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA==", - "dev": true - }, - "acorn-walk": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.1.1.tgz", - "integrity": "sha512-FbJdceMlPHEAWJOILDk1fXD8lnTlEIWFkqtfk+MvmL5q/qlHfN7GEHcsFZWt/Tea9jRNPWUZG4G976nqAAmU9w==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", - "dev": true - }, - "duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", - "dev": true - }, - "gzip-size": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", - "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", - "dev": true, - "requires": { - "duplexer": "^0.1.2" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "ws": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.3.tgz", - "integrity": "sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==", - "dev": true - } - } - }, "webpack-dev-middleware": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", diff --git a/package.json b/package.json index 74c488f7e..b9a1273f7 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,6 @@ "@testing-library/jest-dom": "^4.2.4", "@testing-library/react": "^9.3.2", "@testing-library/user-event": "^7.1.2", - "antd": "^4.15.0", "axios": "^0.19.2", "bootstrap": "^4.5.0", "date-fns": "^2.15.0", @@ -25,6 +24,7 @@ "react-dom": "^16.13.1", "react-dropzone": "^11.0.2", "react-markdown": "^4.3.1", + "react-material-ui-carousel": "^2.2.7", "react-redux": "^7.2.0", "react-router-dom": "^5.2.0", "react-script": "^2.0.5", @@ -71,7 +71,6 @@ "@types/react-redux": "^7.1.15", "@types/react-router-dom": "^5.1.7", "@types/reactstrap": "^8.7.2", - "cra-bundle-analyzer": "^0.1.0", - "webpack-bundle-analyzer": "^4.4.2" + "cra-bundle-analyzer": "^0.1.0" } } diff --git a/src/App.css b/src/App.css deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/App.js b/src/App.js index d0ac5a7cc..bf6f69aeb 100644 --- a/src/App.js +++ b/src/App.js @@ -1,19 +1,7 @@ import React, { Suspense, lazy } from "react"; import { BrowserRouter as Router, Switch, Route } from "react-router-dom"; -// import { -// Root, -// ProjectList, -// Profile, -// ProjectDetail, -// ProjectCreate, -// ProjectUpdate, -// PeopleList, -// LoginPage, -// RegisterPage, -// } from "./pages"; import { AlertModal } from "./components"; import { useLoginAuth } from "./hook/auth/useLogin"; -import "antd/dist/antd.css"; const Root = lazy(() => import("./pages/rootTs")); const ProjectList = lazy(() => import("./pages/project/projectListTs")); diff --git a/src/components/Bar/Bar.css b/src/components/Bar/Bar.css deleted file mode 100644 index 618bf1791..000000000 --- a/src/components/Bar/Bar.css +++ /dev/null @@ -1,9 +0,0 @@ -#subtitleheader { - width: 100%; - text-align: left; - color: black; - text-decoration: none; - padding: 2px; - margin: 10px 0px 0px 0px; - font-size: 23px; -} diff --git a/src/components/Bar/subtitlebar.js b/src/components/Bar/subtitlebar.js deleted file mode 100644 index 344598b87..000000000 --- a/src/components/Bar/subtitlebar.js +++ /dev/null @@ -1,12 +0,0 @@ -import React from "react"; -import { Button } from "reactstrap"; -import "./Bar.css"; -const SubtitleHeader = (props) => { - return ( - - ); -}; -export default SubtitleHeader; diff --git a/src/components/Drawer/drawer.jsx b/src/components/Drawer/drawer.jsx deleted file mode 100644 index b26a9345f..000000000 --- a/src/components/Drawer/drawer.jsx +++ /dev/null @@ -1,90 +0,0 @@ -import React from "react"; -import clsx from "clsx"; -import { makeStyles, useTheme } from "@material-ui/core/styles"; -import Drawer from "@material-ui/core/Drawer"; -import AppBar from "@material-ui/core/AppBar"; -import Toolbar from "@material-ui/core/Toolbar"; -import CssBaseline from "@material-ui/core/CssBaseline"; -import List from "@material-ui/core/List"; -import Typography from "@material-ui/core/Typography"; -import Divider from "@material-ui/core/Divider"; -import IconButton from "@material-ui/core/IconButton"; -import MenuIcon from "@material-ui/icons/Menu"; -import ChevronLeftIcon from "@material-ui/icons/ChevronLeft"; -import ChevronRightIcon from "@material-ui/icons/ChevronRight"; -import ListItem from "@material-ui/core/ListItem"; -import ListItemIcon from "@material-ui/core/ListItemIcon"; -import ListItemText from "@material-ui/core/ListItemText"; -import InboxIcon from "@material-ui/icons/MoveToInbox"; -import MailIcon from "@material-ui/icons/Mail"; -import Button from "@material-ui/core/Button"; - -const drawerWidth = 240; - -const useStyles = makeStyles((theme) => ({ - root: { - display: "flex", - }, - appBar: { - width: `calc(100% - ${drawerWidth}px)`, - marginLeft: drawerWidth, - }, - drawer: { - width: drawerWidth, - flexShrink: 0, - }, - drawerPaper: { - width: "20%", - }, - // necessary for content to be below app bar - toolbar: theme.mixins.toolbar, - content: { - flexGrow: 1, - backgroundColor: theme.palette.background.default, - padding: theme.spacing(3), - }, -})); - -export default function HalfDrawer(props) { - const classes = useStyles(); - const theme = useTheme(); - const { anchor, buttonName } = props; - const [open, setOpen] = React.useState(false); - - const handleDrawerOpen = () => { - setOpen(true); - }; - - const handleDrawerClose = () => { - setOpen(false); - }; - return ( -
- - - -
- - {theme.direction === "rtl" ? ( - - ) : ( - - )} - -
- {props.children} -
-
-
- ); -} diff --git a/src/components/Dropdown/dropdown.jsx b/src/components/Dropdown/dropdown.jsx index 89f103873..a2a7ce3c2 100644 --- a/src/components/Dropdown/dropdown.jsx +++ b/src/components/Dropdown/dropdown.jsx @@ -1,65 +1,100 @@ -import React, { useState, useEffect } from "react"; -import { - Dropdown, - DropdownToggle, - DropdownMenu, - DropdownItem, -} from "reactstrap"; +import React, {useState, useEffect} from "react"; +import Button from "@material-ui/core/Button"; +import Menu from "@material-ui/core/Menu"; +import MenuItem from "@material-ui/core/MenuItem"; const role = ["DEVELOPER", "DESIGNER", "PLANNER", "ETC"]; const DropdownRole = (props) => { - const { dropdownCaret, dropdownHeader, action, pick } = props; - const [dropdownOpen, setDropdownOpen] = useState(false); + const { dropdownCaret, action, pick } = props; + const [dropdownOpen, setDropdownOpen] = useState(null); const [caret, setCaret] = useState(dropdownCaret); + const handleClick = (event) => { + setDropdownOpen(event.currentTarget); + }; + const handleClose = () => { + setDropdownOpen(null); + }; + const handleClickItem = (menu) => { + action(menu); + setDropdownOpen(null); + } useEffect(() => { if (pick !== "") setCaret(pick); }, [pick]); - const toggle = () => setDropdownOpen((prevState) => !prevState); return ( - - +
+ + + handleClickItem("DEVELOPER")}> DEVELOPER - - action("DESIGNER")}> + + handleClickItem("DESIGNER")}> DESIGNER - - action("PLANNER")}>PLANNER - action("ETC")}>ETC - - + + handleClickItem("PLANNER")}>PLANNER + handleClickItem("ETC")}>ETC + +
); }; const DropdownField = (props) => { - const { dropdownCaret, dropdownHeader, action, pick } = props; - const [dropdownOpen, setDropdownOpen] = useState(false); + const { dropdownCaret, action, pick } = props; + const [dropdownOpen, setDropdownOpen] = useState(null); const [caret, setCaret] = useState(dropdownCaret); + const handleClick = (event) => { + setDropdownOpen(event.currentTarget); + }; + const handleClose = () => { + setDropdownOpen(null); + }; + const handleClickItem = (menu) => { + action(menu); + setDropdownOpen(null); + }; useEffect(() => { if (pick !== "") setCaret(pick); }, [pick]); - const toggle = () => setDropdownOpen((prevState) => !prevState); return ( - - +
+ + + handleClickItem("APP")}>APP + handleClickItem("WEB")}>WEB + handleClickItem("AI")}>AI + handleClickItem("HW")}>HW + handleClickItem("BLOCKCHAIN")}> BLOCKCHAIN - - action("SYSTEM")}>SYSTEM - action("ETC")}>ETC - - + + handleClickItem("SYSTEM")}>SYSTEM + handleClickItem("ETC")}>ETC + +
); }; export { DropdownRole, DropdownField }; diff --git a/src/components/Image/inputImage.jsx b/src/components/Image/inputImage.jsx index a91718d36..15dfe398b 100644 --- a/src/components/Image/inputImage.jsx +++ b/src/components/Image/inputImage.jsx @@ -1,20 +1,6 @@ -/* eslint-disable react/jsx-props-no-spreading */ -import React, { useEffect, useRef, useCallback } from "react"; +import React from "react"; import { useDropzone } from "react-dropzone"; -const params = { - pagination: { - el: ".swiper-pagination", - type: "bullets", - clickable: true, - }, - observer: true, - spaceBetween: 30, - lazy: { - loadPrevNext: true, - }, -}; - function ImgInput({ img, saveImg }) { const { getRootProps, getInputProps } = useDropzone({ accept: [".png", ".jpeg", ".jpg"], diff --git a/src/components/Input/Input.jsx b/src/components/Input/Input.jsx index aba42244e..025f0af2b 100644 --- a/src/components/Input/Input.jsx +++ b/src/components/Input/Input.jsx @@ -1,11 +1,8 @@ -import React, { useState, useEffect } from "react"; +import React from "react"; import InputBase from "@material-ui/core/InputBase"; import { fade, - ThemeProvider, withStyles, - makeStyles, - createMuiTheme, } from "@material-ui/core/styles"; const BootstrapInputUI = withStyles((theme) => ({ diff --git a/src/components/Layout.js b/src/components/Layout.js index ce60d8526..a2117da41 100644 --- a/src/components/Layout.js +++ b/src/components/Layout.js @@ -1,9 +1,7 @@ import React, { useState } from "react"; import { Link, useHistory } from "react-router-dom"; import { useSelector, useDispatch } from "react-redux"; -import { useLogoutAuth } from "../hook/auth/useLogin"; import { setToken } from "../reducers/login"; - import { Collapse, Navbar, @@ -12,7 +10,6 @@ import { Nav, NavItem, NavLink, - NavbarText, Button, } from "reactstrap"; import "./Layout.css"; diff --git a/src/components/List/Sort.js b/src/components/List/Sort.jsx similarity index 100% rename from src/components/List/Sort.js rename to src/components/List/Sort.jsx diff --git a/src/components/Main/Jumbotron.js b/src/components/Main/Jumbotron.js deleted file mode 100644 index c352aecf0..000000000 --- a/src/components/Main/Jumbotron.js +++ /dev/null @@ -1,30 +0,0 @@ -import React from "react"; -import { UncontrolledCarousel } from "reactstrap"; -const items = [ - { - src: - "data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%22800%22%20height%3D%22400%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20800%20400%22%20preserveAspectRatio%3D%22none%22%3E%3Cdefs%3E%3Cstyle%20type%3D%22text%2Fcss%22%3E%23holder_15ba800aa1d%20text%20%7B%20fill%3A%23555%3Bfont-weight%3Anormal%3Bfont-family%3AHelvetica%2C%20monospace%3Bfont-size%3A40pt%20%7D%20%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cg%20id%3D%22holder_15ba800aa1d%22%3E%3Crect%20width%3D%22800%22%20height%3D%22400%22%20fill%3D%22%23777%22%3E%3C%2Frect%3E%3Cg%3E%3Ctext%20x%3D%22285.921875%22%20y%3D%22218.3%22%3EFirst%20slide%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E", - altText: "Slide 1", - caption: "Slide 1", - header: "Slide 1 Header", - key: "1" - }, - { - src: - "data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%22800%22%20height%3D%22400%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20800%20400%22%20preserveAspectRatio%3D%22none%22%3E%3Cdefs%3E%3Cstyle%20type%3D%22text%2Fcss%22%3E%23holder_15ba800aa20%20text%20%7B%20fill%3A%23444%3Bfont-weight%3Anormal%3Bfont-family%3AHelvetica%2C%20monospace%3Bfont-size%3A40pt%20%7D%20%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cg%20id%3D%22holder_15ba800aa20%22%3E%3Crect%20width%3D%22800%22%20height%3D%22400%22%20fill%3D%22%23666%22%3E%3C%2Frect%3E%3Cg%3E%3Ctext%20x%3D%22247.3203125%22%20y%3D%22218.3%22%3ESecond%20slide%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E", - altText: "Slide 2", - caption: "Slide 2", - header: "Slide 2 Header", - key: "2" - }, - { - src: - "data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%22800%22%20height%3D%22400%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20800%20400%22%20preserveAspectRatio%3D%22none%22%3E%3Cdefs%3E%3Cstyle%20type%3D%22text%2Fcss%22%3E%23holder_15ba800aa21%20text%20%7B%20fill%3A%23333%3Bfont-weight%3Anormal%3Bfont-family%3AHelvetica%2C%20monospace%3Bfont-size%3A40pt%20%7D%20%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cg%20id%3D%22holder_15ba800aa21%22%3E%3Crect%20width%3D%22800%22%20height%3D%22400%22%20fill%3D%22%23555%22%3E%3C%2Frect%3E%3Cg%3E%3Ctext%20x%3D%22277%22%20y%3D%22218.3%22%3EThird%20slide%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E", - altText: "Slide 3", - caption: "Slide 3", - header: "Slide 3 Header", - key: "3" - } -]; -const Jumbotron = () => ; -export default Jumbotron; \ No newline at end of file diff --git a/src/components/Main/Jumbotron.jsx b/src/components/Main/Jumbotron.jsx new file mode 100644 index 000000000..55a7a880b --- /dev/null +++ b/src/components/Main/Jumbotron.jsx @@ -0,0 +1,63 @@ +import React from "react"; +import Carousel from "react-material-ui-carousel"; +import { Paper } from "@material-ui/core"; + +function Jumbotron() { + const items = [ + { + src: "https://picsum.photos/id/1/1000/480", + altText: "Slide 1", + caption: "Slide 1", + header: "Slide 1 Header", + key: "1", + }, + { + src: "https://picsum.photos/id/2/1000/480", + altText: "Slide 2", + caption: "Slide 2", + header: "Slide 2 Header", + key: "2", + }, + { + src: "https://picsum.photos/id/3/1000/480", + altText: "Slide 3", + caption: "Slide 3", + header: "Slide 3 Header", + key: "3", + }, + { + src: "https://picsum.photos/id/4/1000/480", + altText: "Slide 4", + caption: "Slide 4", + header: "Slide 4 Header", + key: "4", + }, + ]; + + return ( + + {items.map((item, i) => ( + + ))} + + ); +} + +function Item(props) { + return ( + + {props.item.altText} + + ); +} +export default Jumbotron; diff --git a/src/components/Modal/Modal.js b/src/components/Modal/Modal.js deleted file mode 100644 index 9fdafce12..000000000 --- a/src/components/Modal/Modal.js +++ /dev/null @@ -1,76 +0,0 @@ -import React, { useState, useEffect } from "react"; -import { Button, Modal, ModalHeader, ModalBody, ModalFooter } from "reactstrap"; -import IconButton from "@material-ui/core/IconButton"; -import CloseIcon from "@material-ui/icons/Close"; -import { useAlert } from "../../hook"; - -const CenterModal = (props) => { - const { modalFlag, close } = props; - - return ( -
- - -
-
{props.header}
-
- - - -
-
-
- {props.children} - {props.footer} -
-
- ); -}; - -const AlertModal = (props) => { - const { alertState, alertAction } = useAlert(); - - return ( -
- - -
-
알림
-
- - - -
-
-
- {alertState.sentence} -
-
- ); -}; - -export { CenterModal, AlertModal }; diff --git a/src/components/Modal/Modal.jsx b/src/components/Modal/Modal.jsx new file mode 100644 index 000000000..87269fb74 --- /dev/null +++ b/src/components/Modal/Modal.jsx @@ -0,0 +1,93 @@ +import React from "react"; +import IconButton from "@material-ui/core/IconButton"; +import CloseIcon from "@material-ui/icons/Close"; +import Modal from "@material-ui/core/Modal"; +import { makeStyles } from "@material-ui/core/styles"; +import { useAlert } from "../../hook"; + +const useStyles = makeStyles((theme) => ({ + modal: { + display: "flex", + alignItems: "center", + justifyContent: "center", + }, + paper: { + backgroundColor: theme.palette.background.paper, + border: "2px solid #000", + boxShadow: theme.shadows[5], + padding: theme.spacing(2, 4, 3), + }, + header: { + "&::after": { + display: "block", + clear: "both", + content: '""', + }, + }, + headerText: { float: "left", lineHeight: "30px" }, + headerBtn: { float: "right" }, + closeBtn: { + width: "30px", + height: "30px", + }, +})); + +const CenterModal = (props) => { + const { modalFlag, close } = props; + const classes = useStyles(); + + return ( + +
+
+
{props.header}
+
+ + + +
+
+
{props.children}
+
{props.footer}
+
+
+ ); +}; + +const AlertModal = (props) => { + const { alertState, alertAction } = useAlert(); + const classes = useStyles(); + + return ( + +
+
+
알림
+
+ + + +
+
+
{alertState.sentence}
+
+
+ ); +}; + +export { CenterModal, AlertModal }; diff --git a/src/components/People/PeopleBox.js b/src/components/People/PeopleBox.js index 7fb04b26e..9eb3cedd7 100644 --- a/src/components/People/PeopleBox.js +++ b/src/components/People/PeopleBox.js @@ -1,29 +1,18 @@ import React, { useState } from "react"; -import { - Card, - CardImg, - CardText, - CardBody, - CardTitle, - CardSubtitle, - Col, - Row, - Button -} from "reactstrap"; +import { Card, CardText, CardBody, CardTitle } from "reactstrap"; import { makeStyles } from "@material-ui/core/styles"; import { Badge as Stack } from "reactstrap"; import Badge from "@material-ui/core/Badge"; -import Level from "./Level"; import "./People.css"; import { Link } from "react-router-dom"; import { useImage } from "../../hook/profile/useImage"; -const useStyles = makeStyles(theme => ({ +const useStyles = makeStyles((theme) => ({ root: { display: "flex", flexDirection: "column", "& > *": { - marginBottom: theme.spacing(2) + marginBottom: theme.spacing(2), }, "& .MuiBadge-badge": { height: "30px", @@ -31,9 +20,9 @@ const useStyles = makeStyles(theme => ({ fontSize: "1rem", borderRadius: "15px", color: "#ffffff", - backgroundColor: "#007bff" - } - } + backgroundColor: "#007bff", + }, + }, })); export default function PeopleBox(props) { @@ -45,7 +34,7 @@ export default function PeopleBox(props) {
diff --git a/src/components/People/Profile/Invitation/DetailModal.js b/src/components/People/Profile/Invitation/DetailModal.js index 4cb2301da..2db1f6e43 100644 --- a/src/components/People/Profile/Invitation/DetailModal.js +++ b/src/components/People/Profile/Invitation/DetailModal.js @@ -9,7 +9,7 @@ import { Col, Badge, Card, - CardText + CardText, } from "reactstrap"; import { useInvitationDetailEffect } from "../../../../hook/profile/useInvitation"; @@ -28,7 +28,7 @@ const DetailModal = ({ pid, userId, modal, toggle }) => { const [ { invitaionDetail, activityName }, - { handleAccept, handleReject } + { handleAccept, handleReject }, ] = useInvitationDetailEffect(userId, pid, toggleNested); return ( diff --git a/src/components/People/Profile/Invitation/InvitationBox.js b/src/components/People/Profile/Invitation/InvitationBox.js index 77bf1960b..42af14d2d 100644 --- a/src/components/People/Profile/Invitation/InvitationBox.js +++ b/src/components/People/Profile/Invitation/InvitationBox.js @@ -1,5 +1,5 @@ import React, { useState } from "react"; -import { Card, Button, CardTitle, CardText, Row, Col, Badge } from "reactstrap"; +import { Card, CardTitle, CardText, Row, Col, Badge } from "reactstrap"; import DetailModal from "./DetailModal"; const InvitationBox = ({ data, userId }) => { const [detailModal, setDetailModal] = useState(false); diff --git a/src/components/People/Profile/ProfileImage/Image.js b/src/components/People/Profile/ProfileImage/Image.js deleted file mode 100644 index 9f5e7d892..000000000 --- a/src/components/People/Profile/ProfileImage/Image.js +++ /dev/null @@ -1,32 +0,0 @@ -// import React from "react"; -// import ImageApi from "../../hook/api/imgApi"; -// import useRequest from "../../../../hook/useRequest"; - -// const Image = ({ purpose, userId }) => { -// const { getImage } = ImageApi(); -// const [ -// { -// data: resImage, -// fulfilled: getImageFulfilled, -// pending: getImagePending, -// rejected: getImageRejected, -// error: getImageError -// }, -// { run: getImageApi } -// ] = useRequest(getImage); - -// const [imageState] = useImage( -// resImage, -// getImageFulfilled, -// getImagePending, -// getImageRejected, -// getImageError, -// getImageApi, -// purpose, -// userId -// ); - -// return
; -// }; - -// export default Image; diff --git a/src/components/People/Profile/ProfileImage/ImageModify.js b/src/components/People/Profile/ProfileImage/ImageModify.js index b4498ab82..9ad7da367 100644 --- a/src/components/People/Profile/ProfileImage/ImageModify.js +++ b/src/components/People/Profile/ProfileImage/ImageModify.js @@ -1,27 +1,27 @@ import React from "react"; -import { Button, Form, FormGroup, Label, Input, FormText } from "reactstrap"; +import { Form, FormGroup, Label, Input, FormText } from "reactstrap"; import { useDropzone } from "react-dropzone"; const ImageModify = ({ state, setState }) => { const { getRootProps, getInputProps } = useDropzone({ accept: "image/*", - onDrop: acceptedFiles => { - const imgFile = acceptedFiles.map(file => + onDrop: (acceptedFiles) => { + const imgFile = acceptedFiles.map((file) => Object.assign(file, { - url: URL.createObjectURL(file) - }) + url: URL.createObjectURL(file), + }), ); setState({ imgUrl: imgFile[0], isImgChange: true }); - } + }, }); const params = { pagination: { el: ".swiper-pagination", type: "bullets", - clickable: true + clickable: true, }, observer: true, - spaceBetween: 30 + spaceBetween: 30, }; return ( diff --git a/src/components/People/Profile/ProfileInfo/ProfileInfoModify.js b/src/components/People/Profile/ProfileInfo/ProfileInfoModify.js index 4e18fa959..b0ce5952d 100644 --- a/src/components/People/Profile/ProfileInfo/ProfileInfoModify.js +++ b/src/components/People/Profile/ProfileInfo/ProfileInfoModify.js @@ -1,8 +1,6 @@ -import React, { useState } from "react"; -import { Button, Form, FormGroup, Label, Input, FormText } from "reactstrap"; +import React from "react"; +import { Button, Form, FormGroup, Label, Input } from "reactstrap"; import ImageModify from "../ProfileImage/ImageModify"; -import { infoApi, imgApi } from "../../../../hook/api"; -import { useRequest } from "../../../../hook/useRequest"; import useProfileInfoModify from "../../../../hook/profile/useProfileInfoModify"; const ProfileInfoModify = ({ diff --git a/src/components/People/Profile/RecruitModal.js b/src/components/People/Profile/RecruitModal.js index 9ee306fa0..5866fcf0f 100644 --- a/src/components/People/Profile/RecruitModal.js +++ b/src/components/People/Profile/RecruitModal.js @@ -3,7 +3,6 @@ import { Button, Modal, ModalHeader, ModalBody, ModalFooter } from "reactstrap"; import { planProjectApi, sendRecruitPeopleApi } from "../../../hook/api"; import InputLabel from "@material-ui/core/InputLabel"; import MenuItem from "@material-ui/core/MenuItem"; -import FormHelperText from "@material-ui/core/FormHelperText"; import FormControl from "@material-ui/core/FormControl"; import Select from "@material-ui/core/Select"; import TextField from "@material-ui/core/TextField"; diff --git a/src/components/Project/ProjectBox.js b/src/components/Project/ProjectBox.js index 78000975f..0c4db408a 100644 --- a/src/components/Project/ProjectBox.js +++ b/src/components/Project/ProjectBox.js @@ -1,4 +1,4 @@ -import React, { useState } from "react"; +import React from "react"; import { Link } from "react-router-dom"; import { Card, diff --git a/src/components/Switch/switch.js b/src/components/Switch/switch.js index 5e2b3751e..604f8a11c 100644 --- a/src/components/Switch/switch.js +++ b/src/components/Switch/switch.js @@ -1,90 +1,90 @@ -import React from 'react'; -import { withStyles } from '@material-ui/core/styles'; -import Switch from '@material-ui/core/Switch'; +import React from "react"; +import { withStyles } from "@material-ui/core/styles"; +import Switch from "@material-ui/core/Switch"; -export const IOSSwitch = withStyles(theme => ({ - root: { - width: 42, - height: 26, - padding: 0, - margin: theme.spacing(1), - }, - switchBase: { - padding: 1, - '&$checked': { - transform: 'translateX(16px)', - color: theme.palette.common.white, - '& + $track': { - backgroundColor: '#52d869', - opacity: 1, - border: 'none', - }, - }, - '&$focusVisible $thumb': { - color: '#52d869', - border: '6px solid #fff', - }, - }, - thumb: { - width: 24, - height: 24, - }, - track: { - borderRadius: 26 / 2, - border: `1px solid ${theme.palette.grey[400]}`, - backgroundColor: theme.palette.grey[50], +export const IOSSwitch = withStyles((theme) => ({ + root: { + width: 42, + height: 26, + padding: 0, + margin: theme.spacing(1), + }, + switchBase: { + padding: 1, + "&$checked": { + transform: "translateX(16px)", + color: theme.palette.common.white, + "& + $track": { + backgroundColor: "#52d869", opacity: 1, - transition: theme.transitions.create(['background-color', 'border']), + border: "none", + }, + }, + "&$focusVisible $thumb": { + color: "#52d869", + border: "6px solid #fff", }, - checked: {}, - focusVisible: {}, + }, + thumb: { + width: 24, + height: 24, + }, + track: { + borderRadius: 26 / 2, + border: `1px solid ${theme.palette.grey[400]}`, + backgroundColor: theme.palette.grey[50], + opacity: 1, + transition: theme.transitions.create(["background-color", "border"]), + }, + checked: {}, + focusVisible: {}, }))(({ classes, ...props }) => { - return ( - - ); + return ( + + ); }); -export const AntSwitch = withStyles(theme => ({ - root: { - width: 28, - height: 16, - padding: 0, - display: 'flex', - }, - switchBase: { - padding: 2, - color: theme.palette.grey[500], - '&$checked': { - transform: 'translateX(12px)', - color: theme.palette.common.white, - '& + $track': { - opacity: 1, - backgroundColor: theme.palette.primary.main, - borderColor: theme.palette.primary.main, - }, - }, - }, - thumb: { - width: 12, - height: 12, - boxShadow: 'none', - }, - track: { - border: `1px solid ${theme.palette.grey[500]}`, - borderRadius: 16 / 2, +export const AntSwitch = withStyles((theme) => ({ + root: { + width: 28, + height: 16, + padding: 0, + display: "flex", + }, + switchBase: { + padding: 2, + color: theme.palette.grey[500], + "&$checked": { + transform: "translateX(12px)", + color: theme.palette.common.white, + "& + $track": { opacity: 1, - backgroundColor: theme.palette.common.white, + backgroundColor: theme.palette.primary.main, + borderColor: theme.palette.primary.main, + }, }, - checked: {}, + }, + thumb: { + width: 12, + height: 12, + boxShadow: "none", + }, + track: { + border: `1px solid ${theme.palette.grey[500]}`, + borderRadius: 16 / 2, + opacity: 1, + backgroundColor: theme.palette.common.white, + }, + checked: {}, }))(Switch); diff --git a/src/components/icon/111.gif b/src/components/icon/111.gif deleted file mode 100644 index 2dc865898..000000000 Binary files a/src/components/icon/111.gif and /dev/null differ diff --git a/src/components/icon/222.gif b/src/components/icon/222.gif deleted file mode 100644 index d4636b9d3..000000000 Binary files a/src/components/icon/222.gif and /dev/null differ diff --git a/src/components/icon/333.gif b/src/components/icon/333.gif deleted file mode 100644 index 288027ad9..000000000 Binary files a/src/components/icon/333.gif and /dev/null differ diff --git a/src/components/icon/444.gif b/src/components/icon/444.gif deleted file mode 100644 index c28a4f66a..000000000 Binary files a/src/components/icon/444.gif and /dev/null differ diff --git a/src/components/icon/555.gif b/src/components/icon/555.gif deleted file mode 100644 index ac2ffacbf..000000000 Binary files a/src/components/icon/555.gif and /dev/null differ diff --git a/src/components/icon/NAVER_D2_logo.png b/src/components/icon/NAVER_D2_logo.png deleted file mode 100644 index cf82de910..000000000 Binary files a/src/components/icon/NAVER_D2_logo.png and /dev/null differ diff --git a/src/components/icon/baseImg.png b/src/components/icon/baseImg.png deleted file mode 100644 index a3d5be19d..000000000 Binary files a/src/components/icon/baseImg.png and /dev/null differ diff --git a/src/components/icon/chipmunk.jpeg b/src/components/icon/chipmunk.jpeg deleted file mode 100644 index 331033da0..000000000 Binary files a/src/components/icon/chipmunk.jpeg and /dev/null differ diff --git a/src/components/icon/forwardNeck.JPG b/src/components/icon/forwardNeck.JPG deleted file mode 100644 index c3f7c44ed..000000000 Binary files a/src/components/icon/forwardNeck.JPG and /dev/null differ diff --git a/src/components/icon/forwardNeck.jpeg b/src/components/icon/forwardNeck.jpeg deleted file mode 100644 index 5f01962d5..000000000 Binary files a/src/components/icon/forwardNeck.jpeg and /dev/null differ diff --git a/src/components/icon/igo.JPG b/src/components/icon/igo.JPG deleted file mode 100644 index 85d88e29d..000000000 Binary files a/src/components/icon/igo.JPG and /dev/null differ diff --git a/src/components/icon/kakao_running.png b/src/components/icon/kakao_running.png deleted file mode 100644 index d037042f4..000000000 Binary files a/src/components/icon/kakao_running.png and /dev/null differ diff --git a/src/components/icon/menubar_close.png b/src/components/icon/menubar_close.png deleted file mode 100644 index 351e994fa..000000000 Binary files a/src/components/icon/menubar_close.png and /dev/null differ diff --git a/src/components/icon/menubar_hamburger.png b/src/components/icon/menubar_hamburger.png deleted file mode 100644 index 38d22d65a..000000000 Binary files a/src/components/icon/menubar_hamburger.png and /dev/null differ diff --git a/src/components/icon/move.gif b/src/components/icon/move.gif deleted file mode 100644 index 54b1ee333..000000000 Binary files a/src/components/icon/move.gif and /dev/null differ diff --git a/src/components/icon/yoga.jpg b/src/components/icon/yoga.jpg deleted file mode 100644 index 357326a5d..000000000 Binary files a/src/components/icon/yoga.jpg and /dev/null differ diff --git a/src/components/index.js b/src/components/index.js index a2b1e1abb..499cc34c6 100644 --- a/src/components/index.js +++ b/src/components/index.js @@ -1,14 +1,11 @@ -export { default as Button } from "./tempButton"; export { default as Layout } from "./Layout"; export { default as Jumbotron } from "./Main/Jumbotron"; -// export { default as SubtitleHeader } from "./Bar/subtitlebar"; export { default as ProjectBox } from "./Project/ProjectBox"; export { default as PeopleBox } from "./People/PeopleBox"; export { default as Level } from "./People/Level"; export { IOSSwitch, AntSwitch } from "./Switch"; export { ImgInput2, ImgInput } from "./Image"; export { DropdownRole, DropdownField } from "./Dropdown/dropdown"; -export { default as HalfDrawer } from "./Drawer/drawer"; export { default as ProfileInfo } from "./People/Profile/ProfileInfo/ProfileInfo"; export { default as ProfileInfoModify } from "./People/Profile/ProfileInfo/ProfileInfoModify"; export { AlertModal, CenterModal } from "./Modal/Modal"; diff --git a/src/components/tempButton.jsx b/src/components/tempButton.jsx deleted file mode 100644 index 70aaad25e..000000000 --- a/src/components/tempButton.jsx +++ /dev/null @@ -1,9 +0,0 @@ -import React from "react"; - -export default function Button(props) { - return ( - - ); -} diff --git a/src/hook/api/peopleApi.ts b/src/hook/api/peopleApi.ts index 2a8637479..04aa57ab9 100644 --- a/src/hook/api/peopleApi.ts +++ b/src/hook/api/peopleApi.ts @@ -1,5 +1,4 @@ import axios from "axios"; -import { loginApi } from "./"; type info = { userId: String; diff --git a/src/hook/auth/useLogin.ts b/src/hook/auth/useLogin.ts index 86e586e87..0bc576ba1 100644 --- a/src/hook/auth/useLogin.ts +++ b/src/hook/auth/useLogin.ts @@ -1,35 +1,56 @@ -import { useEffect, useRef } from "react"; +import { useEffect, useState } from "react"; import { useDispatch, useSelector } from "react-redux"; import { setToken } from "../../reducers/login"; import { useAlert, useMove, useRequest } from ".."; import { loginApi } from "../../hook/api"; +type userType = { + userId: string; + password: string; +}; + type LoginType = { loading: boolean; + user: userType; onFinish: (values: any) => void; onFinishFailed: (errorInfo: any) => void; + handleInput: (e: React.ChangeEvent) => void; }; + export function useLoginEffect(): LoginType { const dispatch = useDispatch(); const isToken = useSelector((state: any) => state.login.isToken); - - const userId = useRef(""); const { alertAction } = useAlert(); const [login, { run: postLoginApi }] = useRequest(loginApi().postLogin); + const [user, setUser] = useState({ + userId: "", + password: "", + }); useMove(isToken && login.fulfilled, ""); - const onFinish = (values: any) => { - console.log("Success:", values); - userId.current = values.userId; - postLoginApi(values); + const onFinish = (e: React.ChangeEvent) => { + e.preventDefault(); + console.log("Success:", user); + postLoginApi(user); + return false; }; const onFinishFailed = (errorInfo: any) => { console.log("Failed:", errorInfo); }; + const handleInput = (e: React.ChangeEvent) => { + e.persist(); + setUser((value) => { + return { + ...value, + [e.target.name]: e.target.value, + }; + }); + }; + // 로그인 성공 시 useEffect useEffect(() => { if (login.fulfilled) { @@ -37,7 +58,7 @@ export function useLoginEffect(): LoginType { const accessToken = login.data.accessToken; const refreshToken = login.data.refreshToken; // 세션스토리지에 아이디와 토큰 저장 - window.sessionStorage.setItem("id", userId.current); + window.sessionStorage.setItem("id", user.userId); window.sessionStorage.setItem("accessToken", accessToken); window.sessionStorage.setItem("refreshToken", refreshToken); alertAction.open("로그인 성공"); @@ -45,7 +66,7 @@ export function useLoginEffect(): LoginType { // 리덕스에 디스패치 const reduxData = { isToken: true, - userId: userId.current, + userId: user.userId, }; dispatch(setToken(reduxData)); } @@ -61,7 +82,13 @@ export function useLoginEffect(): LoginType { } }, [login.rejected]); - return { loading: login.pending, onFinish, onFinishFailed }; + return { + loading: login.pending, + user, + onFinish, + onFinishFailed, + handleInput, + }; } // 세션 스토리지에 아이디와 토큰이 있을 때, 리덕스에 토큰유무와 아이디를 저장 diff --git a/src/hook/auth/useRegister.ts b/src/hook/auth/useRegister.ts index a9a27949a..20cc5a47b 100644 --- a/src/hook/auth/useRegister.ts +++ b/src/hook/auth/useRegister.ts @@ -1,12 +1,21 @@ -import { useEffect } from "react"; +import { useEffect, useState } from "react"; import { useAlert, useMove } from ".."; import { useRequest } from "../"; import { registerApi } from "../api"; +type registerType = { + userId: string; + userEmail: string; + name: string; + password: string; +}; + type RegisterType = { loading: boolean; + register: registerType; onFinish: (values: any) => void; onFinishFailed: (errorInfo: any) => void; + handleInput: (e: React.ChangeEvent) => void; }; export function useRegisterEffect(): RegisterType { @@ -14,16 +23,33 @@ export function useRegisterEffect(): RegisterType { const [registerPromiseState, { run: postRegisterFetch }] = useRequest( registerApi().postRegister, ); + const [register, setRegister] = useState({ + userId: "", + userEmail: '', + name: '', + password: '' + }); - const onFinish = (values: any) => { - console.log("Success:", values); - postRegisterFetch(values); + const onFinish = (e: React.ChangeEvent) => { + e.preventDefault(); + console.log("Success:", register); + postRegisterFetch(register); }; const onFinishFailed = (errorInfo: any) => { console.log("Failed:", errorInfo); }; + const handleInput = (e: React.ChangeEvent) => { + e.persist(); + setRegister((value) => { + return { + ...value, + [e.target.name]: e.target.value, + }; + }); + }; + useMove(registerPromiseState.fulfilled, "login"); useEffect(() => { @@ -40,5 +66,11 @@ export function useRegisterEffect(): RegisterType { } }, [registerPromiseState.rejected]); - return { loading: registerPromiseState.pending, onFinish, onFinishFailed }; + return { + loading: registerPromiseState.pending, + register, + onFinish, + onFinishFailed, + handleInput, + }; } diff --git a/src/hook/profile/useProfileProject.js b/src/hook/profile/useProfileProject.js index 28b701f04..96e8e56c8 100644 --- a/src/hook/profile/useProfileProject.js +++ b/src/hook/profile/useProfileProject.js @@ -11,9 +11,9 @@ const useProfileProject = ( setList, hiding, - userId + userId, ) => { - const check = useSelector(state => state.profile.isHideChange); + const check = useSelector((state) => state.profile.isHideChange); // hide 변경사항이 있으면 다시 get요청 useEffect(() => { diff --git a/src/hook/profile/useProfileProjectModify.js b/src/hook/profile/useProfileProjectModify.js index 6c0892984..97967ae4b 100644 --- a/src/hook/profile/useProfileProjectModify.js +++ b/src/hook/profile/useProfileProjectModify.js @@ -23,7 +23,7 @@ const useProfileProjectModify = ( setList, hideList, - setHideList + setHideList, ) => { // 처음 로딩 시 숨겨진 프로젝트 목록 불러오기 useEffect(() => { @@ -45,17 +45,17 @@ const useProfileProjectModify = ( let moveData = {}; // 일반 state list에서 선택한 project 제거 setList( - list.filter(a => { + list.filter((a) => { if (a.projectId === resHideProject.projectId) { moveData = a; return false; } return true; - }) + }), ); // 숨김 state list에서 위에서 선택된 project 추가 - setHideList(hideList => { + setHideList((hideList) => { const newList = hideList.concat(moveData); return newList; }); @@ -68,16 +68,16 @@ const useProfileProjectModify = ( let moveData = {}; // 숨김 state list에서 선택한 project 제거 setHideList( - hideList.filter(a => { + hideList.filter((a) => { if (a.projectId === resDisplayProject.projectId) { moveData = a; return false; } return true; - }) + }), ); // 일반 state list에 선택된 프로젝트 추가 - setList(list => { + setList((list) => { const newList = list.concat(moveData); return newList; }); diff --git a/src/hook/projectTs/useProjectApplyTs.ts b/src/hook/projectTs/useProjectApplyTs.ts index 27f849c89..32cd03028 100644 --- a/src/hook/projectTs/useProjectApplyTs.ts +++ b/src/hook/projectTs/useProjectApplyTs.ts @@ -1,5 +1,4 @@ import { Dispatch, SetStateAction, useEffect, useState } from "react"; -import { useSelector, useDispatch } from "react-redux"; import { useHistory } from "react-router-dom"; import { useRequest } from "../"; import { loginApi } from "../api"; diff --git a/src/hook/projectTs/useProjectCreateTs.ts b/src/hook/projectTs/useProjectCreateTs.ts index 0e810ff29..b5b5d2403 100644 --- a/src/hook/projectTs/useProjectCreateTs.ts +++ b/src/hook/projectTs/useProjectCreateTs.ts @@ -206,15 +206,17 @@ const useProjectCreateStateTS = (): CreateType => { }; const inputProjectMember = (name: string, memberValue: string): void => { - setProject((value) => { - return { - ...value, - needMember: { - ...value.needMember, - [name]: memberValue, - }, - }; - }); + if(parseInt(memberValue) >= 0){ + setProject((value) => { + return { + ...value, + needMember: { + ...value.needMember, + [name]: memberValue, + }, + }; + }); + } }; const createState: CreateStateType = { diff --git a/src/hook/projectTs/useProjectDetailTs.ts b/src/hook/projectTs/useProjectDetailTs.ts index 3c428caed..28697b3d4 100644 --- a/src/hook/projectTs/useProjectDetailTs.ts +++ b/src/hook/projectTs/useProjectDetailTs.ts @@ -1,5 +1,4 @@ import { Dispatch, SetStateAction, useEffect, useState } from "react"; -import { useSelector, useDispatch } from "react-redux"; import { useAlert, useRequest } from "../"; import { useHistory } from "react-router-dom"; import { loginApi } from "../api"; @@ -400,30 +399,6 @@ const useProjectDetailEffectTs = ( }, [project.getProject.rejected]); }; -// const useProjectRecruitEffect = ( -// data, -// fulfilled, -// rejected, -// error, -// inputState, -// ) => { -// // const [alertData, alertAction] = useAlert(); - -// useEffect(() => { -// if (fulfilled) { -// // inputDetail(data); -// inputState(recruitDtoList); -// } -// }, [fulfilled]); - -// useEffect(() => { -// if (rejected) { -// // alertAction.open(error.response.data.message); -// console.log(error); -// } -// }, [rejected]); -// }; - export { useProjectDetailStateTs, useProjectDetailEffectTs, diff --git a/src/hook/projectTs/useProjectUpdateTs.ts b/src/hook/projectTs/useProjectUpdateTs.ts index 55cbdf5d8..029bef157 100644 --- a/src/hook/projectTs/useProjectUpdateTs.ts +++ b/src/hook/projectTs/useProjectUpdateTs.ts @@ -3,7 +3,6 @@ import { useSelector, useDispatch } from "react-redux"; import { useHistory } from "react-router-dom"; import { loginApi } from "../api"; import { useAlert, useRequest } from "../"; -import { AxiosError } from "axios"; import { RequestState } from "../useRequest"; const axios = require("axios"); diff --git a/src/hook/useAlert.ts b/src/hook/useAlert.ts index bf8c0d587..45a1640b5 100644 --- a/src/hook/useAlert.ts +++ b/src/hook/useAlert.ts @@ -1,4 +1,3 @@ -import { useEffect, useState } from "react"; import { useSelector, useDispatch } from "react-redux"; import { openAlert, closeAlert } from "../reducers/alert"; import { RootState } from '../reducers'; diff --git a/src/hook/useHook.js b/src/hook/useHook.js index e598f075b..496c9ee2e 100644 --- a/src/hook/useHook.js +++ b/src/hook/useHook.js @@ -1,9 +1,8 @@ -import { useEffect, useState } from "react"; import { useSelector, useDispatch } from "react-redux"; const axios = require("axios"); export function useTemporaryApi() { - const { temporary } = useSelector(state => state.temproray); + const { temporary } = useSelector((state) => state.temproray); const getProjectList = async () => { const res = await axios.get(`https://apis.tracker.delivery/carriers`); return res.data; @@ -12,10 +11,10 @@ export function useTemporaryApi() { const res = await axios.get(`https://apis.tracker.delivery/carriers`); return res.data; }; - const postProjectList = async data => { + const postProjectList = async (data) => { await axios.post(`https://apis.tracker.delivery/carriers`, { data: data }); }; - const postPeopletList = async data => { + const postPeopletList = async (data) => { await axios.post(`https://apis.tracker.delivery/carriers`, { data: data }); }; @@ -25,7 +24,7 @@ export function useTemporaryApi() { getProjectList, getPeopleList, postProjectList, - postPeopletList - } + postPeopletList, + }, ]; } diff --git a/src/hook/usePageMove.js b/src/hook/usePageMove.js index ecde77b59..921c068c2 100644 --- a/src/hook/usePageMove.js +++ b/src/hook/usePageMove.js @@ -1,5 +1,5 @@ -import { useEffect } from 'react'; -import { useHistory } from 'react-router-dom'; +import { useEffect } from "react"; +import { useHistory } from "react-router-dom"; export default function useMove(condition, destination) { const history = useHistory(); @@ -12,5 +12,5 @@ export default function useMove(condition, destination) { if (condition) { history.push(`./${destination}`); } - }, [condition]) + }, [condition]); } diff --git a/src/pages/auth/Login.css b/src/pages/auth/Login.css deleted file mode 100644 index e472b0206..000000000 --- a/src/pages/auth/Login.css +++ /dev/null @@ -1,17 +0,0 @@ -.login_title { - text-align: center; -} - -.login_box { - max-width: 380px; - margin: auto; - margin-top: 50px; -} - -.login_input { - width: 100%; -} - -.login_submit { - margin-top: 10px; -} \ No newline at end of file diff --git a/src/pages/auth/LoginTs.tsx b/src/pages/auth/LoginTs.tsx index 74b6f60cf..199c11e53 100644 --- a/src/pages/auth/LoginTs.tsx +++ b/src/pages/auth/LoginTs.tsx @@ -1,54 +1,78 @@ -import { Button, Form, Input, Typography } from "antd"; import React from "react"; +import Typography from "@material-ui/core/Typography"; +import Button from "@material-ui/core/Button"; +import { makeStyles } from "@material-ui/core/styles"; +import InputLabel from "@material-ui/core/InputLabel"; +import Input from "@material-ui/core/Input"; +import FormControl from "@material-ui/core/FormControl"; import { Layout } from "../../components"; -import "./Login.css"; import { useLoginEffect } from "../../hook/auth"; -const { Title } = Typography; - -const layout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, -}; -const tailLayout = { - wrapperCol: { offset: 8, span: 16 }, -}; +const useStyles = makeStyles((theme) => ({ + root: { + "& > *": { + margin: theme.spacing(1), + }, + }, + title: { + textAlign: "center", + }, + formWrap: { + maxWidth: "280px", + margin: "auto", + marginTop: "50px", + }, + registInput: { + width: "100%", + }, +})); function LoginPage() { - const {loading, onFinish, onFinishFailed} = useLoginEffect(); + const classes = useStyles(); + const {loading, user, onFinish, onFinishFailed, handleInput} = useLoginEffect(); + return ( - + <Typography variant="h5" className={classes.title}> Login - -
-
- - - - - - - - - -
+
+
); diff --git a/src/pages/auth/RegisterTs.tsx b/src/pages/auth/RegisterTs.tsx index 2a3f04518..ca320bf97 100644 --- a/src/pages/auth/RegisterTs.tsx +++ b/src/pages/auth/RegisterTs.tsx @@ -1,71 +1,102 @@ import React from "react"; -import { Button, Form, Input, Typography } from "antd"; import { Layout } from "../../components"; import { useRegisterEffect } from "../../hook/auth"; +import Typography from "@material-ui/core/Typography"; +import Button from "@material-ui/core/Button"; +import { makeStyles } from "@material-ui/core/styles"; +import InputLabel from "@material-ui/core/InputLabel"; +import Input from "@material-ui/core/Input"; +import FormControl from "@material-ui/core/FormControl"; -const { Title } = Typography; - -const layout = { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, -}; -const tailLayout = { - wrapperCol: { offset: 8, span: 16 }, -}; +const useStyles = makeStyles((theme) => ({ + root: { + "& > *": { + margin: theme.spacing(1), + }, + }, + title: { + textAlign: "center" + }, + formWrap: { + maxWidth: "400px", + margin: "auto", + marginTop: "50px", + }, + registInput: { + width: "100%" + } +})); const RegisterPage = () => { - const {loading, onFinish, onFinishFailed} = useRegisterEffect(); - + const classes = useStyles(); + const {loading, register, onFinish, onFinishFailed, handleInput} = useRegisterEffect(); + const isFilled = register.userId === "" || register.userEmail === "" || register.name === ""|| register.password === ""; return ( - Create your Account -
-
- - - - - - - - - - - - - - - -
+
+
); diff --git a/src/pages/main.css b/src/pages/main.css deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/pages/project/createProjectTs.tsx b/src/pages/project/createProjectTs.tsx index e885b8198..6c687fc2c 100644 --- a/src/pages/project/createProjectTs.tsx +++ b/src/pages/project/createProjectTs.tsx @@ -1,11 +1,10 @@ -import React, { useEffect } from "react"; +import React from "react"; import { Layout, ImgInput, DropdownField, BootstrapInput, } from "../../components"; -import "../main.css"; import { DateTimePicker as MuiDateTimePicker, MuiPickersUtilsProvider, @@ -16,39 +15,110 @@ import { useProjectCreateEffectTs, useProjectCreateStateTS, } from "../../hook/projectTs"; -import { Button, Input } from "antd"; +import Input from "@material-ui/core/Input"; +import Button from "@material-ui/core/Button"; +import InputLabel from "@material-ui/core/InputLabel"; import { useImageSave } from "../../hook/useImage"; +import { makeStyles } from "@material-ui/core/styles"; + +const useStyles = makeStyles((theme) => ({ + root: { + padding: "10px", + }, + fullDiv: { + width: "100%", + minHeight: "36px", + "&::after": { + display: "block", + clear: "both", + content: '"', + }, + }, + floatRBtn: { + float: "right", + }, + inputGrid: { + "&::after": { + clear: "both", + content: '""', + display: "block", + }, + }, + halfDivLeft: { + padding: "10px 10px 10px 0", + float: "left", + width: "50%", + "& > img": { + width: "100%", + height: "100%", + }, + }, + halfDivRight: { + padding: "10px", + float: "right", + width: "50%", + "& > h4": { + color: "gray", + margin: "0px 0px 30px 0px", + }, + }, + inputImg: { + width: "380px", + height: "380px", + margin: "auto", + }, + input: { + marginLeft: theme.spacing(1), + flex: 1, + }, + fullInput: { + width: "100%", + }, + inputLabel: { + marginTop: "5px", + marginBottom: "2px", + }, + divider: { + height: 28, + margin: 4, + }, +})); + export default function ProjectCreate() { + const classes = useStyles(); const { createState, createAction } = useProjectCreateStateTS(); useImageSave(createState.createImg, "/projectDetail"); useProjectCreateEffectTs(createState, createAction); return ( -
-
-
- -
+
+
+
-
-
-
+
+
+
-
- +
+ + Project Name + ) => createAction.inputProject(e.target.name, e.target.value) } + className={classes.fullInput} /> - + + Team Name + ) => createAction.inputProject(e.target.name, e.target.value) } value={createState.project.teamName} + className={classes.fullInput} /> -
+
+ + Developer + Developer
} + id="developer" placeholder="0" - min={0} - max={100} type="number" - step="1" name="developer" onChange={(e: React.ChangeEvent) => createAction.inputProjectMember(e.target.name, e.target.value) } value={createState.project.needMember.developer} /> + + Designer + Designer
} + id="designer" placeholder="0" - min={0} - max={100} type="number" - step="1" name="designer" onChange={(e: React.ChangeEvent) => createAction.inputProjectMember(e.target.name, e.target.value) } value={createState.project.needMember.designer} /> + + Planner + Planner
} + id="planner" placeholder="0" - min={0} - max={100} type="number" - step="1" name="planner" onChange={(e: React.ChangeEvent) => createAction.inputProjectMember(e.target.name, e.target.value) } value={createState.project.needMember.planner} /> + + Etc + Etc
} + id="etc" placeholder="0" - min={0} - max={100} type="number" - step="1" name="etc" onChange={(e: React.ChangeEvent) => createAction.inputProjectMember(e.target.name, e.target.value) @@ -122,7 +213,7 @@ export default function ProjectCreate() { value={createState.project.needMember.etc} />
-
+
+ + {questionString} + createAction.deleteQuestion(index)} - > - delete - - } + id={questionString} placeholder="question" name="questions" onChange={(e) => @@ -184,16 +274,25 @@ export default function ProjectCreate() { } value={value} /> +
); })}
-
-
- -
-
+
); diff --git a/src/pages/project/projectDetail.css b/src/pages/project/projectDetail.css deleted file mode 100644 index 557c0444a..000000000 --- a/src/pages/project/projectDetail.css +++ /dev/null @@ -1,99 +0,0 @@ -#root { - padding: 10px; -} - -.full_div { - width: 100%; - min-height: 36px; -} - -.half_div_left { - padding: 10px 10px 10px 0; - float: left; - width: 50%; -} - -.half_div_right { - padding: 10px; - float: right; - width: 50%; -} - -.half_div_right > h1 { -} - -.input_grid::after { - clear: both; - content: ''; - display: block; -} - -.half_div_right > h4 { - color: gray; - margin: 0px 0px 30px 0px; -} - -#tag_case { - padding: 20px 0px 20px 0px; - /* border: 2px outset rgba(194, 216, 212, 0.5); */ - /* border-radius: 12px; */ -} - -#tag { - background-color: gray; - border-radius: 25px; - width: auto; - padding: 5px 10px; - opacity: 0.7; - color: white; - font-size: 15px; -} - -#button { - float: right; -} - -#button > div > button { - float: right; -} - -.half_div_left > img { - width: 100%; - height: 100%; -} - -.half_div_left > .input_img { - width: 380px; - height: 380px; - margin: auto; -} - -#list { - /* border: 1px solid #bcbcbc; */ -} - -#drawer_root { - padding: 0 20px 10px; -} - -.input-group-text { - width: 100px; - float: center; -} - -.form-control { - margin-bottom: 10px; -} - -#pagination { - margin: 20px 0px; -} - -#pagination_div { - display: flex; - justify-content: center; -} - -.introduction { - display: block; -} \ No newline at end of file diff --git a/src/pages/project/projectDetailTs.tsx b/src/pages/project/projectDetailTs.tsx index aca278927..a1e65f06f 100644 --- a/src/pages/project/projectDetailTs.tsx +++ b/src/pages/project/projectDetailTs.tsx @@ -1,17 +1,13 @@ import React from "react"; -import { useLocation, useHistory } from "react-router-dom"; +import { useLocation } from "react-router-dom"; import { useDispatch } from "react-redux"; import { Layout, DropdownRole, - HalfDrawer, CenterModal, - BootstrapInput, } from "../../components"; -import "../main.css"; import { Link } from "react-router-dom"; import { setProject } from "../../reducers/project"; -import "./projectDetail.css"; import { useProjectDetailStateTs, useProjectDetailEffectTs, @@ -20,15 +16,109 @@ import { useViewProjectApplyStateTs, useViewProjectApplyEffectTs, } from "../../hook/projectTs"; -import { Button, Switch, List, Typography, Card, Input } from "antd"; +import Input from "@material-ui/core/Input"; +import Button from "@material-ui/core/Button"; +import { makeStyles } from "@material-ui/core/styles"; +import Typography from "@material-ui/core/Typography"; +import List from '@material-ui/core/List'; +import ListItem from '@material-ui/core/ListItem'; +import ListItemText from '@material-ui/core/ListItemText'; +import ListSubheader from '@material-ui/core/ListSubheader'; +import Switch from "@material-ui/core/Switch"; +import TextField from "@material-ui/core/TextField"; + const ReactMarkdown = require("react-markdown"); -const { Title } = Typography; +const useStyles = makeStyles((theme) => ({ + root: { + padding: "10px", + }, + fullDiv: { + width: "100%", + minHeight: "36px", + "&::after": { + display: "block", + clear: "both", + content: '"', + }, + }, + floatRBtn: { + float: "right", + }, + inputGrid: { + "&::after": { + clear: "both", + content: '""', + display: "block", + }, + }, + halfDivLeft: { + padding: "10px 10px 10px 0", + float: "left", + width: "50%", + "& > img": { + width: "100%", + height: "100%", + }, + }, + halfDivRight: { + padding: "10px", + float: "right", + width: "50%", + "& > h4": { + color: "gray", + margin: "0px 0px 30px 0px", + }, + }, + inputImg: { + width: "380px", + height: "380px", + margin: "auto", + }, + input: { + marginLeft: theme.spacing(1), + flex: 1, + }, + fullInput: { + width: "100%", + }, + inputLabel: { + marginTop: "5px", + marginBottom: "2px", + }, + divider: { + height: 28, + margin: 4, + }, + delBtn: { + marginLeft: "20px", + }, + tag: { + backgroundColor: "gray", + borderRadius: "25px", + width: "auto", + padding: "5px 10px", + opacity: "0.7", + color: "white", + fontSize: "15px", + }, + tagCase: { + padding: "20px 0px 20px 0px", + }, + intoduction: { + display: "block", + }, + applyList: { + lineHeight: "22px", + marginRight: "10px", + display: "inline-block", + }, +})); export default function ProjectDetail() { const dispatch = useDispatch(); const location = useLocation(); - const history = useHistory(); + const classes = useStyles(); const url = location.pathname.split("/"); const projectId = url[2]; const { project, projectAction } = useProjectDetailStateTs(); @@ -83,18 +173,24 @@ export default function ProjectDetail() { return ( -
-
+
+
{project.check.reader ? ( -
+
- + @@ -103,10 +199,11 @@ export default function ProjectDetail() { modalFlag={project.check.delete} close={projectAction.closeDelete} footer={ -
-
+
+
)}
-
-
+
+
temp
-
- {/*
*/} +
{project.project.projectField}
- {project.project.projectName} - {project.project.teamName} - 마감일 : {project.project.endDate} -
-
+ {project.project.projectName} + {project.project.teamName} + + 마감일 : {project.project.endDate} + +
+
모집 중 인원
} - bordered - loading={project.getProject.pending} - dataSource={needList} - renderItem={(item) => { + component="nav" + subheader={ + 모집 중 인원 + } + > + {needList.map((item, idx) => { return ( - - {item.title}
} /> -
{item.number}명
- + + + ); - }} - /> + })} +
-
+
전체 인원
} - bordered - loading={project.getProject.pending} - dataSource={allList} - renderItem={(item) => { + component="nav" + subheader={ + 전체 인원 + } + > + {allList.map((item, idx) => { return ( - - {item.title}
} /> -
{item.number}명
- + + + ); - }} - /> + })} +
- 소개 + 소개 {project.check.reader && (
- + <Typography variant="body1" className={classes.applyList}> 지원자 목록 - + - projectAction.checkSwitch("apply", checked) - } + onChange={( + event: React.ChangeEvent, + checked: boolean, + ) => projectAction.checkSwitch("apply", checked)} /> {project.check.apply && (project.apply.length === 0 ? ( @@ -230,7 +332,7 @@ export default function ProjectDetail() { ) : (
- 지원 현황 -
+ subheader={ + 지원 현황 } - pagination={{ - onChange: (page) => { - console.log(page); - }, - pageSize: 1, - }} - renderItem={(item) => { + > + {project.apply.map((item, idx) => { return ( - {item.role} + + + + ); - }} - > - {/* - - - - - */} - - - + })} + + +
- 요청 목록 - + - projectAction.checkSwitch("recruit", checked) - } + onChange={( + event: React.ChangeEvent, + checked: boolean, + ) => projectAction.checkSwitch("recruit", checked)} /> {project.check.recruit && (project.recruit.length === 0 ? ( @@ -339,59 +419,41 @@ export default function ProjectDetail() { ) : (
지원 상태
} - bordered - dataSource={project.recruit} - pagination={{ - onChange: (page) => { - }, - pageSize: 1, + component="nav" + style={{ + backgroundColor: + project.apply[project.pagination.apply].state === + "REJECT" + ? "#eeeeee" + : project.apply[project.pagination.apply].state === + "ACCEPT" + ? "rgb(212, 237, 218, 0.3)" + : "#ffffff", }} - renderItem={(item) => { + subheader={ + 지원 상태 + } + > + {project.recruit.map((item, idx) => { return ( - - -
역할: {item.role}
-
자기소개: {item.introduction}
-
상태: {item.state}
-
-
+ + + + + + ); - }} - /> - {/* - - - - - - - - - - - - - */} + })} + ) : ( -
+
+
+
-
-
-
+
+
+
-
- +
+ + Project Name + - + + Team Name + -
+ +
+ + Developer + Developer
} + id="developer" placeholder="0" - min={0} - max={100} type="number" - step="1" name="developer" onChange={(e: React.ChangeEvent) => updateAction.inputProjectMember(e) } value={updateState.project.needMember.developer} /> + + Designer + Designer
} + id="designer" placeholder="0" - min={0} - max={100} type="number" - step="1" name="designer" onChange={(e: React.ChangeEvent) => updateAction.inputProjectMember(e) } value={updateState.project.needMember.designer} /> + + Planner + Planner
} + id="planner" placeholder="0" - min={0} - max={100} type="number" - step="1" name="planner" onChange={(e: React.ChangeEvent) => updateAction.inputProjectMember(e) } value={updateState.project.needMember.planner} /> + + Etc + Etc
} + id="etc" placeholder="0" - min={0} - max={100} type="number" - step="1" name="etc" onChange={(e: React.ChangeEvent) => updateAction.inputProjectMember(e) @@ -143,7 +234,8 @@ export default function ProjectUpdate() { value={updateState.project.needMember.etc} />
-
+ +
-
+
+ + {questionString} + updateAction.deleteQuestion(index)} - > - delete - - } + id={questionString} placeholder="question" name="questions" onChange={(e) => @@ -203,15 +294,25 @@ export default function ProjectUpdate() { } value={value} /> + +
); })}
-
-
- -
-
+
); diff --git a/src/pages/rootTs.tsx b/src/pages/rootTs.tsx index d5cb7108a..3932602d1 100644 --- a/src/pages/rootTs.tsx +++ b/src/pages/rootTs.tsx @@ -1,7 +1,5 @@ import React from "react"; -import { Layout, ProjectBox, PeopleBox } from "../components"; -import "./main.css"; -import { Pagination, Carousel, List, Typography } from "antd"; +import { Layout, ProjectBox, PeopleBox, Jumbotron } from "../components"; import { useProjectListStateTs, useDeadlineProjectListEffect, @@ -10,10 +8,23 @@ import { usePeopleListStateTs, useWantedPeopleListEffectTs, } from "../hook/peopleTs"; +import Pagination from "@material-ui/lab/Pagination"; +import { makeStyles } from "@material-ui/core/styles"; +import Typography from "@material-ui/core/Typography"; +import Grid from "@material-ui/core/Grid"; -const { Title } = Typography; +const useStyles = makeStyles((theme) => ({ + pagination: { + "& > *": { + marginTop: theme.spacing(2), + justifyContent: "center", + display: "flex", + }, + }, +})); export default function Root() { + const classes = useStyles(); const { projectPage, projectAction } = useProjectListStateTs(); useDeadlineProjectListEffect(projectPage, projectAction); @@ -23,117 +34,50 @@ export default function Root() { return (
- -
- image -
-
- image -
-
- image -
-
- image -
-
- 마감임박 프로젝트 - ( - - - - )} - /> + {/* */} + 마감임박 프로젝트 + + {projectPage.projectList.map((item, idx) => { + return ( + + + + ); + })} +
- projectAction.getDeadLineProjectListApi(page - 1) - } - pageSize={8} - current={projectPage.page.number + 1} - total={projectPage.page.totalPages * 8} + className={classes.pagination} + onChange={(e, page: number) => { + projectAction.setPage({ ...projectPage.page, number: page }); + projectAction.getDeadLineProjectListApi(page - 1); + }} + page={projectPage.page.number + 1} + count={projectPage.page.totalPages} />
- 프로젝트를 찾는 사람들 - ( - - - - )} - /> + 프로젝트를 찾는 사람들 + + {peoplePage.peopleList.map((item, idx) => { + return ( + + + + ); + })} +
peopleAction.getWantedPeopleList(page - 1)} - pageSize={8} - current={peoplePage.page.number + 1} - total={peoplePage.page.totalPages * 8} + className={classes.pagination} + onChange={(e, page: number) => { + projectAction.setPage({ ...projectPage.page, number: page }); + peopleAction.getWantedPeopleList(page - 1); + }} + page={peoplePage.page.number + 1} + count={peoplePage.page.totalPages} />