From 5e2be76ef931194e48aec1dd82d4949ee1769982 Mon Sep 17 00:00:00 2001 From: sashtje Date: Wed, 6 Sep 2023 15:33:49 +0300 Subject: [PATCH] feat: add article view selector --- json-server/db.json | 144 ++++++++++++++++++ .../StoreProvider/config/StateSchema.ts | 2 + src/entities/Article/index.ts | 1 + .../ArticleListItem.module.scss | 1 + .../ArticleViewSelector.module.scss | 3 + .../ArticleViewSelector.stories.tsx | 16 ++ .../ArticleViewSelector.tsx | 58 +++++++ src/pages/ArticlesPage/index.ts | 1 + .../model/selectors/articlesPageSelectors.ts | 6 + .../fetchArticlesList/fetchArticlesList.ts | 28 ++++ .../model/slices/articlesPageSlice.ts | 56 +++++++ .../model/types/articlesPageSchema.ts | 10 ++ .../ui/ArticlesPage/ArticlesPage.tsx | 52 +++++-- src/shared/assets/icons/view-big.svg | 5 + src/shared/assets/icons/view-small.svg | 5 + src/shared/const/localStorage.ts | 1 + 16 files changed, 380 insertions(+), 9 deletions(-) create mode 100644 src/entities/Article/ui/ArticleViewSelector/ArticleViewSelector.module.scss create mode 100644 src/entities/Article/ui/ArticleViewSelector/ArticleViewSelector.stories.tsx create mode 100644 src/entities/Article/ui/ArticleViewSelector/ArticleViewSelector.tsx create mode 100644 src/pages/ArticlesPage/model/selectors/articlesPageSelectors.ts create mode 100644 src/pages/ArticlesPage/model/services/fetchArticlesList/fetchArticlesList.ts create mode 100644 src/pages/ArticlesPage/model/slices/articlesPageSlice.ts create mode 100644 src/pages/ArticlesPage/model/types/articlesPageSchema.ts create mode 100644 src/shared/assets/icons/view-big.svg create mode 100644 src/shared/assets/icons/view-small.svg diff --git a/json-server/db.json b/json-server/db.json index 676e497f..9d798f4b 100644 --- a/json-server/db.json +++ b/json-server/db.json @@ -93,6 +93,150 @@ ] } ] + }, + { + "id": "2", + "title": "Python news", + "subtitle": "Что нового в JS за 2023 год", + "img": "https://logowik.com/content/uploads/images/python.jpg", + "views": 3005, + "createdAt": "04.09.2023", + "userId": "2", + "type": [ + "IT" + ], + "blocks": [ + { + "id": "1", + "type": "TEXT", + "title": "Заголовок этого блока", + "paragraphs": [ + "Программа, которую по традиции называют «Hello, world!», очень проста. Она выводит куда-либо фразу «Hello, world!», или другую подобную, средствами некоего языка.", + "JavaScript — это язык, программы на котором можно выполнять в разных средах. В нашем случае речь идёт о браузерах и о серверной платформе Node.js. Если до сих пор вы не написали ни строчки кода на JS и читаете этот текст в браузере, на настольном компьютере, это значит, что вы буквально в считанных секундах от своей первой JavaScript-программы.", + "Существуют и другие способы запуска JS-кода в браузере. Так, если говорить об обычном использовании программ на JavaScript, они загружаются в браузер для обеспечения работы веб-страниц. Как правило, код оформляют в виде отдельных файлов с расширением .js, которые подключают к веб-страницам, но программный код можно включать и непосредственно в код страницы. Всё это делается с помощью тега \n \n;" + }, + { + "id": "5", + "type": "TEXT", + "title": "Заголовок этого блока", + "paragraphs": [ + "Программа, которую по традиции называют «Hello, world!», очень проста. Она выводит куда-либо фразу «Hello, world!», или другую подобную, средствами некоего языка.", + "Существуют и другие способы запуска JS-кода в браузере. Так, если говорить об обычном использовании программ на JavaScript, они загружаются в браузер для обеспечения работы веб-страниц. Как правило, код оформляют в виде отдельных файлов с расширением .js, которые подключают к веб-страницам, но программный код можно включать и непосредственно в код страницы. Всё это делается с помощью тега \n \n;" + }, + { + "id": "5", + "type": "TEXT", + "title": "Заголовок этого блока", + "paragraphs": [ + "Программа, которую по традиции называют «Hello, world!», очень проста. Она выводит куда-либо фразу «Hello, world!», или другую подобную, средствами некоего языка.", + "Существуют и другие способы запуска JS-кода в браузере. Так, если говорить об обычном использовании программ на JavaScript, они загружаются в браузер для обеспечения работы веб-страниц. Как правило, код оформляют в виде отдельных файлов с расширением .js, которые подключают к веб-страницам, но программный код можно включать и непосредственно в код страницы. Всё это делается с помощью тега