From 911033bdc5f6cacb6f0d667ee5d34380d2e5d028 Mon Sep 17 00:00:00 2001 From: Alex Tyuzhin Date: Thu, 17 Apr 2025 18:29:53 +0300 Subject: [PATCH 1/3] task 1, task 2 --- package-lock.json | 59 ++++++++------- package.json | 2 +- src.zip | Bin 0 -> 62151 bytes src/api/index.js | 1 + src/app/article/index.js | 8 +- src/app/basket/index.js | 8 +- src/app/login/index.js | 10 ++- src/app/main/index.js | 5 +- src/components/basket-tool/index.js | 4 +- src/components/basket-total/index.js | 5 +- src/components/button/style.css | 1 + src/components/comment-form/index.js | 40 ++++++++++ src/components/comment-form/style.css | 26 +++++++ src/components/comments-item/index.js | 42 +++++++++++ src/components/comments-item/style.css | 34 +++++++++ src/components/comments-layout/index.js | 21 ++++++ src/components/comments-layout/style.css | 6 ++ src/components/comments-link/index.js | 12 +++ src/components/comments-list/index.js | 51 +++++++++++++ src/config.js | 3 + src/containers/comments/index.js | 92 +++++++++++++++++++++++ src/containers/navigation/index.js | 5 +- src/containers/top-head/index.js | 8 +- src/global.css | 26 ++++--- src/hooks/use-translate.js | 22 +++++- src/i18n/context.js | 30 -------- src/i18n/index.js | 43 +++++++++++ src/index.js | 9 +-- src/services.js | 8 ++ src/store-redux/comment/action.js | 41 ++++++++++ src/store-redux/comment/reducer.js | 38 ++++++++++ src/store-redux/exports.js | 1 + src/utils/date-format.js | 17 +++++ src/utils/list-to-tree/index.js | 3 +- 34 files changed, 581 insertions(+), 100 deletions(-) create mode 100644 src.zip create mode 100644 src/components/comment-form/index.js create mode 100644 src/components/comment-form/style.css create mode 100644 src/components/comments-item/index.js create mode 100644 src/components/comments-item/style.css create mode 100644 src/components/comments-layout/index.js create mode 100644 src/components/comments-layout/style.css create mode 100644 src/components/comments-link/index.js create mode 100644 src/components/comments-list/index.js create mode 100644 src/containers/comments/index.js delete mode 100644 src/i18n/context.js create mode 100644 src/i18n/index.js create mode 100644 src/store-redux/comment/action.js create mode 100644 src/store-redux/comment/reducer.js create mode 100644 src/utils/date-format.js diff --git a/package-lock.json b/package-lock.json index 59bb3583a..27f076c8a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,7 @@ "prop-types": "^15.8.1", "react": "^18.3.1", "react-dom": "^18.3.1", - "react-redux": "^9.1.2", + "react-redux": "^9.2.0", "react-router-dom": "^6.26.1", "redux": "^5.0.1", "redux-thunk": "^3.1.0", @@ -3295,9 +3295,10 @@ "dev": true }, "node_modules/@types/use-sync-external-store": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", - "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==" + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.6.tgz", + "integrity": "sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==", + "license": "MIT" }, "node_modules/@types/ws": { "version": "8.5.12", @@ -6400,6 +6401,7 @@ "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", "@jest/types": "^29.6.3", @@ -9180,16 +9182,17 @@ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "node_modules/react-redux": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.1.2.tgz", - "integrity": "sha512-0OA4dhM1W48l3uzmv6B7TXPCGmokUU4p1M44DGN2/D9a1FjVPukVjER1PcPX97jIg6aUeLq1XJo1IpfbgULn0w==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.2.0.tgz", + "integrity": "sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==", + "license": "MIT", "dependencies": { - "@types/use-sync-external-store": "^0.0.3", - "use-sync-external-store": "^1.0.0" + "@types/use-sync-external-store": "^0.0.6", + "use-sync-external-store": "^1.4.0" }, "peerDependencies": { - "@types/react": "^18.2.25", - "react": "^18.0", + "@types/react": "^18.2.25 || ^19", + "react": "^18.0 || ^19", "redux": "^5.0.0" }, "peerDependenciesMeta": { @@ -9272,7 +9275,8 @@ "node_modules/redux": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", - "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==" + "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==", + "license": "MIT" }, "node_modules/redux-thunk": { "version": "3.1.0", @@ -10447,11 +10451,12 @@ } }, "node_modules/use-sync-external-store": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", - "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz", + "integrity": "sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==", + "license": "MIT", "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "node_modules/util-deprecate": { @@ -13363,9 +13368,9 @@ "dev": true }, "@types/use-sync-external-store": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", - "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==" + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.6.tgz", + "integrity": "sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==" }, "@types/ws": { "version": "8.5.12", @@ -17658,12 +17663,12 @@ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "react-redux": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.1.2.tgz", - "integrity": "sha512-0OA4dhM1W48l3uzmv6B7TXPCGmokUU4p1M44DGN2/D9a1FjVPukVjER1PcPX97jIg6aUeLq1XJo1IpfbgULn0w==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.2.0.tgz", + "integrity": "sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==", "requires": { - "@types/use-sync-external-store": "^0.0.3", - "use-sync-external-store": "^1.0.0" + "@types/use-sync-external-store": "^0.0.6", + "use-sync-external-store": "^1.4.0" } }, "react-router": { @@ -18580,9 +18585,9 @@ } }, "use-sync-external-store": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", - "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz", + "integrity": "sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==", "requires": {} }, "util-deprecate": { diff --git a/package.json b/package.json index 5da2f1714..aef0b3fff 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "prop-types": "^15.8.1", "react": "^18.3.1", "react-dom": "^18.3.1", - "react-redux": "^9.1.2", + "react-redux": "^9.2.0", "react-router-dom": "^6.26.1", "redux": "^5.0.1", "redux-thunk": "^3.1.0", diff --git a/src.zip b/src.zip new file mode 100644 index 0000000000000000000000000000000000000000..cdbd65d1c934467bac4ed30313b211e7941c812d GIT binary patch literal 62151 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

dC5FoEcX^YZ9SqtqD<9h)041I*UY%E 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 literal 0 HcmV?d00001 diff --git a/src/api/index.js b/src/api/index.js index a5f073295..c8f47f5e7 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -8,6 +8,7 @@ class APIService { this.config = config; this.defaultHeaders = { 'Content-Type': 'application/json', + 'Accept-Language': 'ru', }; } diff --git a/src/app/article/index.js b/src/app/article/index.js index 54f037b64..01a8cb333 100644 --- a/src/app/article/index.js +++ b/src/app/article/index.js @@ -14,9 +14,10 @@ import { useDispatch, useSelector } from 'react-redux'; import shallowequal from 'shallowequal'; import articleActions from '../../store-redux/article/actions'; import HeadLayout from '../../components/head-layout'; - +import Comments from '../../containers/comments'; function Article() { const store = useStore(); + const { t, lang } = useTranslate(); const dispatch = useDispatch(); // Параметры из пути /articles/:id @@ -26,7 +27,7 @@ function Article() { useInit(() => { //store.actions.article.load(params.id); dispatch(articleActions.load(params.id)); - }, [params.id]); + }, [params.id, lang]); const select = useSelector( state => ({ @@ -36,8 +37,6 @@ function Article() { shallowequal, ); // Нужно указать функцию для сравнения свойства объекта, так как хуком вернули объект - const { t } = useTranslate(); - const callbacks = { // Добавление в корзину addToBasket: useCallback(_id => store.actions.basket.addToBasket(_id), [store]), @@ -56,6 +55,7 @@ function Article() { + {select.article._id && } ); diff --git a/src/app/basket/index.js b/src/app/basket/index.js index 52a7badfd..427a26980 100644 --- a/src/app/basket/index.js +++ b/src/app/basket/index.js @@ -12,6 +12,8 @@ import modalsActions from '../../store-redux/modals/actions'; function Basket() { const store = useStore(); + const { t, lang } = useTranslate(); + const dispatch = useDispatch(); const select = useSelector(state => ({ @@ -30,8 +32,6 @@ function Basket() { }, [store]), }; - const { t } = useTranslate(); - const renders = { itemBasket: useCallback( item => ( @@ -44,7 +44,7 @@ function Basket() { labelDelete={t('basket.delete')} /> ), - [callbacks.removeFromBasket, t], + [callbacks.removeFromBasket, t, lang], ), }; @@ -55,7 +55,7 @@ function Basket() { onClose={callbacks.closeModal} > - + ); } diff --git a/src/app/login/index.js b/src/app/login/index.js index 32b86daa4..db1eaa659 100644 --- a/src/app/login/index.js +++ b/src/app/login/index.js @@ -16,14 +16,14 @@ import HeadLayout from '../../components/head-layout'; import Form from '../../components/form'; function Login() { - const { t } = useTranslate(); + const { t, lang } = useTranslate(); const location = useLocation(); const navigate = useNavigate(); const store = useStore(); useInit(() => { store.actions.session.resetErrors(); - }); + }, [lang]); const select = useSelector(state => ({ waiting: state.session.waiting, @@ -69,7 +69,11 @@ function Login() { -

+ { await Promise.all([store.actions.catalog.initParams(), store.actions.categories.load()]); }, - [], + [lang], true, ); - const { t } = useTranslate(); - return ( <> diff --git a/src/components/basket-tool/index.js b/src/components/basket-tool/index.js index 8564a9d0b..20f71d278 100644 --- a/src/components/basket-tool/index.js +++ b/src/components/basket-tool/index.js @@ -3,10 +3,12 @@ import PropTypes from 'prop-types'; import { cn as bem } from '@bem-react/classname'; import numberFormat from '../../utils/number-format'; import Cart from '../../assets/icon/cart.svg'; +import useTranslate from '../../hooks/use-translate'; import './style.css'; function BasketTool(props) { - const { sum = 0, amount = 0, onOpen = () => {}, t = text => text } = props; + const { sum = 0, amount = 0, onOpen = () => {} } = props; + const { t } = useTranslate(); const cn = bem('BasketTool'); return ( diff --git a/src/components/basket-total/index.js b/src/components/basket-total/index.js index 73e0f8ed5..8f1e91c7c 100644 --- a/src/components/basket-total/index.js +++ b/src/components/basket-total/index.js @@ -2,10 +2,13 @@ import { memo } from 'react'; import PropTypes from 'prop-types'; import { cn as bem } from '@bem-react/classname'; import numberFormat from '../../utils/number-format'; +import useTranslate from '../../hooks/use-translate'; import './style.css'; function BasketTotal(props) { - const { sum = 0, t = text => text } = props; + const { t } = useTranslate(); + + const { sum = 0 } = props; const cn = bem('BasketTotal'); return (
diff --git a/src/components/button/style.css b/src/components/button/style.css index 0efc8a896..3cde0bc51 100644 --- a/src/components/button/style.css +++ b/src/components/button/style.css @@ -34,6 +34,7 @@ .Button_style_text { padding: 0; border: none; + color: var(--primary); &:hover { color: var(--primary); diff --git a/src/components/comment-form/index.js b/src/components/comment-form/index.js new file mode 100644 index 000000000..17d18679b --- /dev/null +++ b/src/components/comment-form/index.js @@ -0,0 +1,40 @@ +import { memo, useState } from 'react'; +import { cn as bem } from '@bem-react/classname'; +import Button from '../button'; +import PropTypes from 'prop-types'; +import './style.css'; + +function CommentForm({ onSubmit, onCancel, title }) { + const cn = bem('CommentForm'); + + const [text, setText] = useState(''); + + const handleSubmit = e => { + e.preventDefault(); + if (text.trim()) { + onSubmit(text); + setText(''); + } + }; + + return ( + + {title &&
{title}
} +