Add HTML widget

This commit is contained in:
Svilen Markov 2024-06-02 19:01:20 +01:00
parent e8043be107
commit 75079a981b
3 changed files with 36 additions and 0 deletions

View File

@ -26,6 +26,7 @@
- [Twitch Channels](#twitch-channels) - [Twitch Channels](#twitch-channels)
- [Twitch Top Games](#twitch-top-games) - [Twitch Top Games](#twitch-top-games)
- [iframe](#iframe) - [iframe](#iframe)
- [HTML](#html)
## Intro ## Intro
Configuration is done via a single YAML file and a server restart is required in order for any changes to take effect. Trying to start the server with an invalid config file will result in an error. Configuration is done via a single YAML file and a server restart is required in order for any changes to take effect. Trying to start the server with an invalid config file will result in an error.
@ -1412,3 +1413,16 @@ The source of the iframe.
##### `height` ##### `height`
The height of the iframe. The minimum allowed height is 50. The height of the iframe. The minimum allowed height is 50.
### HTML
Embed any HTML.
Example:
```yaml
- type: html
source: |
<p>Hello, <span class="color-primary">World</span>!</p>
```
Note the use of `|` after `source:`, this allows you to insert a multi-line string.

20
internal/widget/html.go Normal file
View File

@ -0,0 +1,20 @@
package widget
import (
"html/template"
)
type HTML struct {
widgetBase `yaml:",inline"`
Source template.HTML `yaml:"source"`
}
func (widget *HTML) Initialize() error {
widget.withTitle("").withError(nil)
return nil
}
func (widget *HTML) Render() template.HTML {
return widget.Source
}

View File

@ -27,6 +27,8 @@ func New(widgetType string) (Widget, error) {
return &Bookmarks{}, nil return &Bookmarks{}, nil
case "iframe": case "iframe":
return &IFrame{}, nil return &IFrame{}, nil
case "html":
return &HTML{}, nil
case "hacker-news": case "hacker-news":
return &HackerNews{}, nil return &HackerNews{}, nil
case "releases": case "releases":