UNPKG

@v4fire/client

Version:

V4Fire client core library

169 lines (122 loc) 3.87 kB
# traits/i-open This module provides a trait for a component that needs to implement the "opening/closing" behavior. ## Synopsis * This module provides an abstract class, not a component. * The trait contains only TS logic. ## Modifiers | Name | Description | Values | Default | |----------|-------------------------|-----------|---------| | `opened` | The component is opened | `boolean` | - | To support these events, override `initModEvents` in your component and invoke a helper method from the trait. ```typescript import iOpen from 'traits/i-open/i-open'; export default class bButton implements iOpen { static override readonly mods: ModsDecl = { ...iOpen.mods } } ``` ## Events | Name | Description | Payload description | Payload | |---------|-------------------------------|---------------------|---------| | `open` | The component has been opened | - | - | | `close` | The component has been closed | - | - | To support these events, override `initModEvents` in your component and invoke a helper method from the trait. ```typescript import iOpen from 'traits/i-open/i-open'; export default class bButton implements iOpen { /** @override */ protected initModEvents(): void { super.initModEvents(); iOpen.initModEvents(this); } } ``` ## Methods The trait specifies a bunch of methods to implement. ### open Opens the component. The method has the default implementation. ```typescript import iOpen from 'traits/i-open/i-open'; export default class bButton implements iOpen { /** @see iOpen.open */ open(...args: unknown[]): Promise<boolean> { return iOpen.open(this, ...args); } } ``` ### close Disables the component. The method has the default implementation. ```typescript import iOpen from 'traits/i-open/i-open'; export default class bButton implements iOpen { /** @see iOpen.close */ close(...args: unknown[]): Promise<boolean> { return iOpen.close(this, ...args); } } ``` ### onOpenedChange Handler: the opened modifier has been changed. The method has the default implementation. ```typescript import iOpen from 'traits/i-open/i-open'; export default class bButton implements iOpen { /** @see iOpen.onOpenedChange */ onOpenedChange(e: ModEvent | SetModEvent): Promise<void> { return iOpen.onOpenedChange(this, e); } } ``` ### onKeyClose Handler: closing by a keyboard event. The method has the default implementation. ```typescript import iOpen from 'traits/i-open/i-open'; export default class bButton implements iOpen { /** @see iOpen.onKeyClose */ onKeyClose(e: KeyboardEvent): Promise<void> { return iOpen.onKeyClose(this, e); } } ``` ### onTouchClose Handler: closing by a touch event. The method has the default implementation. ```typescript import iOpen from 'traits/i-open/i-open'; export default class bButton implements iOpen { /** @see iOpen.blur */ onTouchClose(e: MouseEvent): Promise<void> { return iOpen.onTouchClose(this, e); } } ``` ## Helpers The trait provides a bunch of helper functions to initialize event listeners. ### initCloseHelpers Initialize default event listeners to close a component by a keyboard or mouse. ```typescript import iOpen from 'traits/i-open/i-open'; export default class bButton implements iOpen { /** @see [[iOpen.initCloseHelpers]] */ @hook('beforeDataCreate') protected initCloseHelpers(events?: CloseHelperEvents): void { iOpen.initCloseHelpers(this, events); } } ``` ### initModEvents Initialize modifier event listeners to emit component events. ```typescript import iOpen from 'traits/i-open/i-open'; export default class bButton implements iOpen { /** @override */ protected initModEvents(): void { super.initModEvents(); iOpen.initModEvents(this); } } ```