12345678910111213141516171819202122232425262728293031323334353637383940 |
- package tg
- type Rowser interface {
- MakeRows(c *Context) []ButtonRow
- }
- type RowserFunc func(c *Context) []ButtonRow
- func (fn RowserFunc) MakeRows(c *Context) []ButtonRow {
- return fn(c)
- }
- // The type represents the inline panel with
- // scrollable via buttons content.
- // Can be used for example to show users via SQL and offset
- // or something like that.
- type PanelCompo struct {
- *InlineCompo
- Rowser Rowser
- }
- // Transform to the panel with dynamic rows.
- func (compo *MessageCompo) Panel(
- c *Context, // The context that all the buttons will get.
- rowser Rowser, // The rows generator.
- ) *PanelCompo {
- ret := &PanelCompo{}
- ret.InlineCompo = compo.Inline(
- NewKeyboard(
- rowser.MakeRows(c)...,
- ).Inline(),
- )
- ret.Rowser = rowser
- return ret
- }
- func (compo *PanelCompo) Update(c *Context) {
- compo.Rows = compo.Rowser.MakeRows(c)
- compo.InlineCompo.Update(c)
- }
|