1.0.29 • Published 10 months ago
@brandup/ui v1.0.29
brandup-ui
Installation
Install NPM package @brandup/ui.
npm i @brandup/ui@latest
UIElement
UIElement
- wrapper для HTMLElement
, который позволяет привязать к нему свою бизнес логику.
Возможности:
- Обработка комманд вызванных внутри
HTMLElement
, который связан сUIElement
. - Обработка событий элемента
HTMLElement
, который связан сUIElement
.
abstract class UIElement {
abstract typeName: string;
readonly element: HTMLElement | undefined;
protected setElement(elem: HTMLElement): void;
protected defineEvent(eventName: string, eventOptions?: EventInit): void;
protected raiseEvent(eventName: string, eventArgs?: any): boolean;
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
removeEventListener(type: string, listener?: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
dispatchEvent(event: Event): boolean;
registerCommand(name: string, execute: CommandDelegate, canExecute?: CommandCanExecuteDelegate): void;
hasCommand(name: string): boolean;
protected _onRenderElement(_elem: HTMLElement);
protected _onCanExecCommand(_name: string, _elem: HTMLElement): boolean;
onDestroy(callback: VoidFunction | UIElement | Element);
destroy(): void;
}
UI commands
Класс UIElement позволяет регистрировать обработчики комманд, которые определяются в разметке HTML элемента.
<button data-command="send">Send</button>
this.registerCommand("send", (context: CommandContext) => { context.target.innerHTML = "ok"; });
Так же можно регистрировать асинхронные обработчики комманд:
this.registerCommand("command1-async", (context: CommandContext) => {
return Promise<void>(resolve => {
context.target.innerHTML = "Loading...";
const t = window.setTimeout(() => {
context.target.innerHTML = "Ok";
resolve();
}, 2000);
});
});
Команды срабатывают по событию click
.
Во время выполнения команды, у элемента добавляется стиль executing.
UI Events
UIElement
extends class of EveentEmmiter
.
1.0.29
10 months ago
1.0.28
10 months ago
1.0.26
10 months ago
1.0.27
10 months ago
1.0.25
10 months ago
1.0.24
11 months ago
1.0.23
11 months ago
1.0.22
1 year ago
1.0.21
1 year ago
1.0.20
1 year ago
1.0.19
1 year ago
1.0.18
1 year ago
1.0.17
1 year ago
1.0.16
1 year ago
1.0.14
1 year ago
1.0.13
1 year ago
1.0.12
1 year ago
1.0.11
1 year ago
1.0.9
1 year ago
1.0.8
1 year ago
1.0.7
1 year ago
1.0.6
1 year ago
1.0.5
1 year ago
1.0.4
1 year ago
1.0.3
1 year ago
1.0.2
1 year ago
1.0.1
1 year ago