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 Top Games](#twitch-top-games)
- [iframe](#iframe)
- [HTML](#html)
## 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.
@ -1412,3 +1413,16 @@ The source of the iframe.
##### `height`
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
case "iframe":
return &IFrame{}, nil
case "html":
return &HTML{}, nil
case "hacker-news":
return &HackerNews{}, nil
case "releases":