@v4fire/client
Version:
V4Fire client core library
105 lines (74 loc) • 2.79 kB
Markdown
# traits/i-progress
This module provides a trait for a component have some "progress" behaviour.
## Synopsis
* This module provides an abstract class, not a component.
* The trait contains TS logic and default styles.
## Modifiers
| Name | Description | Values | Default |
|------------|------------------------------------------------------------------------------------------------------------------|-----------|---------|
| `progress` | The component in the process: loading data, processing something, etc. Maybe, we need to show some progress bar. | `boolean` | - |
To support these events, override `initModEvents` in your component and invoke a helper method from the trait.
```typescript
import iProgress from 'traits/i-progress/i-progress';
export default class bButton implements iProgress {
static override readonly mods: ModsDecl = {
...iProgress.mods
}
}
```
## Events
| Name | Description | Payload description | Payload |
|-----------------|------------------------------------------------|---------------------|---------|
| `progressStart` | The component has started to process something | - | - |
| `progressEnd` | The component has ended to process something | - | - |
To support these events, override `initModEvents` in your component and invoke a helper method from the trait.
```typescript
import iProgress from 'traits/i-progress/i-progress';
export default class bButton implements iProgress {
/** @override */
protected initModEvents(): void {
super.initModEvents();
iProgress.initModEvents(this);
}
}
```
## Helpers
The trait provides a bunch of helper functions to initialize event listeners.
### initModEvents
Initialize modifier event listeners to emit trait events.
```typescript
import iProgress from 'traits/i-progress/i-progress';
export default class bButton implements iProgress {
/** @override */
protected initModEvents(): void {
super.initModEvents();
iProgress.initModEvents(this);
}
}
```
## Styles
The trait provides a bunch of optional styles for the component.
```stylus
$p = {
helpers: true
}
i-progress
if $p.helpers
&__progress
display none
&_progress_true
cursor default
pointer-events none
&_progress_true &__progress
&_progress_true &__over-wrapper
display block
```
To enable these styles, import the trait within your component and call the provided mixin within your component.
```stylus
"traits/i-progress/i-progress"
$p = {
progressHelpers: true
}
b-button
i-progress({helpers: $p.progressHelpers})
```