diff --git a/index.html b/index.html index cbcc2d0..030745b 100644 --- a/index.html +++ b/index.html @@ -12,7 +12,7 @@

RSS агрегатор

-

Начните читать RSS СЕГОДНЯ! Это легко, это красиво.

+

Начните читать RSS сегодня! Это легко, это красиво.

@@ -26,7 +26,7 @@

RSS агрегатор

-

Пример: https://lorem-rss.hexlet.app/feed

+

Пример: https://lorem-rss.hexlet.app/feed

diff --git a/package-lock.json b/package-lock.json index 39017a0..41567ad 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,6 +12,7 @@ "axios": "^1.7.2", "bootstrap": "^5.3.3", "i18next": "^23.11.5", + "on-change": "^5.0.1", "yup": "^1.4.0" }, "devDependencies": { @@ -9824,6 +9825,17 @@ "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", "dev": true }, + "node_modules/on-change": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/on-change/-/on-change-5.0.1.tgz", + "integrity": "sha512-n7THCP7RkyReRSLkJb8kUWoNsxUIBxTkIp3JKno+sEz6o/9AJ3w3P9fzQkITEkMwyTKJjZciF3v/pVoouxZZMg==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sindresorhus/on-change?sponsor=1" + } + }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", diff --git a/package.json b/package.json index 2b4d819..ffeb87d 100644 --- a/package.json +++ b/package.json @@ -39,6 +39,7 @@ "axios": "^1.7.2", "bootstrap": "^5.3.3", "i18next": "^23.11.5", + "on-change": "^5.0.1", "yup": "^1.4.0" } } diff --git a/src/app.js b/src/app.js index cb34cb8..15554b4 100644 --- a/src/app.js +++ b/src/app.js @@ -1,4 +1,4 @@ -import i18next from "i18next"; +import i18next from 'i18next'; import * as yup from 'yup'; import axios from 'axios'; import validate, { proxyObj } from './utils.js'; @@ -15,7 +15,13 @@ export default () => { }); const elements = { + title: document.querySelector('h1'), + subtitle: document.querySelector('.lead'), form: document.querySelector('form'), + input: document.getElementById('url-input'), + label: document.querySelector('[for="url-input"]'), + example: document.querySelector('.text-muted'), + button: document.querySelector('[type="submit"]'), }; const state = { diff --git a/src/locales/ru.js b/src/locales/ru.js index 1f6721a..e965168 100644 --- a/src/locales/ru.js +++ b/src/locales/ru.js @@ -1,9 +1,14 @@ export default { translation: { + title: 'RSS агрегатор', + subtitle: 'Начните читать RSS сегодня! Это легко, это красиво.', + label: 'Ссылка RSS', + example: 'Пример: https://ru.hexlet.io/lessons.rss', + button: 'Добавить', errors: { required: 'Заполните это поле', existsRss: 'RSS уже существует', - invalidRss: 'Ресурс не содержит валидный RSS' + invalidRss: 'Ресурс не содержит валидный RSS', }, }, }; diff --git a/src/utils.js b/src/utils.js index b00eab4..ea575b4 100644 --- a/src/utils.js +++ b/src/utils.js @@ -6,7 +6,7 @@ const validate = (url, urlFeeds) => { .string() .trim() .required() - .notOneOf(urlFeeds, 'Ресурс не содержит валидный RSS'), + .notOneOf(urlFeeds), }); return schema.validate({ url }); }; diff --git a/src/view.js b/src/view.js index d8801a9..31b5e20 100644 --- a/src/view.js +++ b/src/view.js @@ -4,10 +4,17 @@ export default (elements, i18n, state) => { const { t } = i18n; const watchedState = onChange(state, (path, value) => { - + if (path === 'isValid') { + /* empty */ + } else if (path === 'errors') { + // прописать ошибки// + } }); const renderForm = () => { - + Object.entries(elements).forEach(([key, value]) => { + const element = value; + element.textContent = t(`${key}`) ?? ''; + }); }; return { watchedState,