ремонт доки

This commit is contained in:
vigdorov
2020-07-10 00:19:05 +03:00
parent 3fe0b232fd
commit 9abc6a6c92
8 changed files with 30 additions and 12171 deletions

View File

@ -1,58 +1,28 @@
/**
* @typedef Listener
* @type {Object}
* @property {Node} element
* @property {string} eventName
* @property {function} listener
*/
/**
* @function EventListener
* @param {unknown[]} args - аргументы функции
*/
/**
* @typedef Events
* @type {Object<string, EventListener[]>}
*/
/**
* Класс для создания компонентов приложения. Необходим для нследования.
* @class
* Класс для создания компонентов приложения. Необходим для наследования.
* @param {string} mainNodeSelector - селектор, с помощью которого извлекается шаблон компонента
* @param {Node} parentNode - родительский Node, в который следует положить созданный элемент
*/
class Component {
/**
* @private
*
* @type {Listener[]}
* Список слушателей компонента
* @type {{element: Node, eventName: string, listener: Function}[]}
*/
_listeners;
/**
* События компонента
* @private
*
* @type {Events}
* @type {Object<string, Function[]>}
*/
_events;
/**
* Корневой элемент компонента
* @public
*
* @type {Node} - корневой элемент компонента
*/
mainNode;
/**
* @param {string} mainNodeSelector - селектор, с помощью которого извлекается шаблон компонента
* @param {Node} parentNode - родительский Node, в который следует положить созданный элемент
* @constructor
*/
constructor (mainNodeSelector, parentNode) {
/**
* @type {DocumentFragment}
*/
const content = document.querySelector(mainNodeSelector).content;
if (content.children.length > 1) {
const message = '<template> должен содержать только один элемент children';
@ -66,11 +36,9 @@ class Component {
/**
* Метод добавления обработчиков события на Node'ы компонента
* @public
*
* @param {Node} element - элемент, на который будет навешен обработчик
* @param {string} eventName - событие, на которое будет реагировать обработчик
* @param {function} listener - обработчик события
* @param {Function} listener - обработчик события
*/
addEventListener = (element, eventName, listener) => {
element.addEventListener(eventName, listener);
@ -79,10 +47,8 @@ class Component {
/**
* Метод подписки на события компонента
* @public
*
* @param {string} eventName - событие компонента, на которое будет реагировать обработчик
* @param {EventListener} listener - обработчик события
* @param {Function} listener - обработчик события
*/
subscribe = (eventName, listener) => {
const listeners = this._events[eventName] || [];
@ -94,8 +60,6 @@ class Component {
/**
* Метод генерирует событие
* @public
*
* @param {string} eventName - событие, которое необходимо сгенерировать
* @param {unknown[]} args - аругемнты, который необходимо передать обработчикам события
*/
@ -108,7 +72,6 @@ class Component {
/**
* Метод уничтожения компонента. Удаляет элемент из верстки, снимает обработчики и очищает подписки
* @public
*/
destroy = () => {
this._listeners.forEach(({element, eventName, listener}) => {