Создать элемент, производный от нативного - наследование?Состав? - PullRequest
1 голос
/ 21 апреля 2019

Я понимаю, что это не форум поддержки;Я пытаюсь скрыть это как запрос документации.

Короткий вопрос: каков рекомендуемый способ создания элементов, которые ведут себя точно так же, как и нативные, во всех отношениях?(да, предлагает дополнения, но при условии 100% -ной совместимости с заменой собственных)

Длинная версия:

Мне нужно расширить собственный элемент <button>.Цель состоит в том, чтобы создать «супер-кнопку», которая может использоваться в качестве 100% -ой замены встроенной кнопки HTML (но, очевидно, предлагает дополнительную функциональность, которую могут использовать потребители или нет).Пожалуйста, обратите внимание, что я оставляю стиль полностью вне уравнения здесь.Итак ...

Способ 1: наследование от кнопки

В Polymer всегда было ясно, что вы не можете наследовать от нативного элемента.Я предполагаю, что это все еще так?

Способ 2: Составить

Следуя этому пути, у меня есть <button> в теневом доме, и отражают все атрибуты и свойства (это означает, что любое изменение my-button будет отражено в элементе button в теневом DOM).[EDITED: элемент не должен отражать все события, благодаря ретаргетингу событий теневого DOM]

Для "Пути 2" это будет означать много репликации атрибутов и т. Д. Это может быть сделано справедливолегко с lit-element (поведение для всех атрибутов было бы идентичным, и это применимо к довольно длинному списку их).Но ... прежде чем я доберусь до этого, я вхожу в кроличью нору?

Я могу подумать о многих вещах, которые могут пойти не так ... например, стоит ли мне вообще отражать табиндекс?Будет ли работать атрибут form, поскольку кнопка будет находиться в теневом корне?И так далее, и так далее.

Итак ... Есть ли простой способ воспроизвести 100% функциональности определенного элемента HTML без необходимости отражать каждый отдельный атрибут?И это сработает?

...