0.3.5 • Published 3 years ago
@egml/widget v0.3.5
Widget
Класс и утилиты для создания виджетов.
Класс нацелен на то, чтобы упростить и систематизировать работу с DOM, разбивая логику на такиe автономныe сущности как виджеты.
В самом базовом представлении это простой элемент <div>, которому присваивается уникальный ID. Есть ряд полезных методов по манипулации DOM, таких как mount(), wrap(), detach() и т. д.
Предполагается использовать этот класс как базовый для расширения и создания других виджетов.
Версии
- 0.3.x: Начиная с
0.2.11создана веткаv0.3.x. В ней расположены обратно несовместимые версии и ведётся разработка0.xдальше. - 0.0.x - 0.2.x: Начальная разработка вплоть до ответвления на
0.3.x. Здесь содержатся версии пакета, которые были использованы в тех или иных проектах на 04.09.2022. Планируется развивать0.2.xи дальше, если потребуется. Отдельной ветки пока нет.
TODO:
- Придумать как обойти то, что изменение свойства
nameконструктора плохо дружит со старыми версиями iOS Safari (#20220911213454) - Вынести
render()в статический метод, аthis.render()сделать псевдонимом (#20220902122136) - В
Widget.settleClosest()возвращать не массив, а первый и единственный его элемент (#20220805132140) - Сделать рефакторинг
Widget.settleElements(): там тупорылый код (#20220805132238) - В методах типа
locate()принимать аргументы в виде объектаlocate({ constructor, context, selector, closest, notify = true })(#20220803165723) - Методы
listen()/stopListening()/once(): чтобы вот такой кодauthDialog.dom.root.addEventListener(AuthDialog.authSuccessEventName, h)можно было записать корочеauthDialog.listen(AuthDialog.authSuccessEventName, h)(#20220803165610) - Исправить ошибку с Map: с добавлением новых виджетов, после удаления какого-то числа виджетов, созданных ранее (неправильно выдает общее количество виджетов после удаления, следовательно неверно задает новые ID) (#20220911211602)
- Более продвинутое использование шаблонов, отработать использование подкомпонентов в шаблонах и как затем производить settle/buildDom/init; добавить новые свойства, такие как
settleDataset, и дополнить шаблон новыми переменными, такими какextraClasses,settleDatasetи др. (#20220911211504) - Перейти на hogan.js (#20220911211439)
- Стараться придерживаться, а в коде подразумевать, что все данные по сущности хранятся в свойстве
data, а не в самом виджете - Относительно
isDomOccupied(): нужно реализовать его методом добавления data-атрибутов - Возможность передать
settleв конструктор, чтобы сразу автоматически провестиsettle(). Причем если передано простоtrue, то сделать settle на первом попавшемся элементе по имени класса, если он не занят другими виджетами. Тут нужно будет написать какую-нибудь функцию типаisDomOccupied()и выполнить ее для всех экземпляров класса, которые уже зарегистрированы. - Подумать над внедрением разных видов
name, например,cssName, чтобы компоненты могли использовать имена классов, отличные от своих имен (надо?) - Дописать README
Сделано:
instances -> all (#20220911211606)