control

package
v0.31.10 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 12, 2024 License: MIT Imports: 21 Imported by: 0

Documentation

Overview

Package control contains implementations of standard HTML controls in GoRADD. These controls generally fall under the following categories:

  • Standard html tags. For example, div, input, select, table, img

  • Controls specifically designed to edit database data, like INT, FLOAT or DATE fields

  • Controls that we need to support the manipulation of database relationships, like one-to-many relationships

  • Useful utility controls

    See the [textbox], button, [list], [table] and [dialog] packages for controls specific to these common types.

Index

Constants

View Source
const (
	PageClick = iota + 1000
)

Variables

View Source
var DefaultMaxPagerButtons = 10

DefaultMaxPagerButtons is the default maximum number of buttons to display on the pager. You can change this in an individual control, too.

View Source
var DefaultPagerPageSize = 10

DefaultPagerPageSize is the default number of items that a paged control will show. You can change this in an individual control, too.

Functions

func Children added in v0.2.0

func Children(creators ...page.Creator) []page.Creator

Children is a helper function for doing declarative control creation for child control creators. It returns the creators passed to it as a slice.

func GetCreatorID added in v0.2.0

func GetCreatorID(c page.Creator) string

GetCreatorID uses reflection to get the id of the given creator.

func ImageCaptureEvent added in v0.23.0

func ImageCaptureEvent() *event.Event

ImageCaptureEvent triggers when the capture button has been pressed on an ImageCapture control, and the image has been captured.

func MakeCreatorWrapperID added in v0.23.0

func MakeCreatorWrapperID(wrapperId string, childCreator page.Creator, suffix string) string

MakeCreatorWrapperID is used by Creators of wrapper controls to return the computed id of a parent control that wraps a control creator if the wrapper does not have a defined id.

This would be the id of the parent control, followed by the id of the child control, followed by the postfix. If a value is passed to wrapperId, it is returned unchanged.

Types

type ActiveLink struct {
	Link
	// contains filtered or unexported fields
}

ActiveLink is a link that has an active status.

You can give an ActiveLink a set of attributes to merge into the attributes of the html tag to indicate that it is active. This can form the basis of a variety of specialized HTML controls, like navbars, tabs, and accordions.

func GetActiveLink(c page.ControlI, id string) *ActiveLink

GetActiveLink is a convenience method to return the link with the given id from the page.

func NewActiveLink(parent page.ControlI, id string) *ActiveLink

NewActiveLink creates a new standard html link

func (*ActiveLink) ActiveAttributes added in v0.21.0

func (l *ActiveLink) ActiveAttributes() html5tag.Attributes

ActiveAttributes returns the attributes used to indicate the link is active. If you change them, be sure to call Refresh().

func (*ActiveLink) Deserialize added in v0.21.0

func (l *ActiveLink) Deserialize(d page.Decoder)

Deserialize reconstructs the control from the page state.

func (*ActiveLink) DrawingAttributes added in v0.21.0

func (l *ActiveLink) DrawingAttributes(ctx context.Context) html5tag.Attributes

DrawingAttributes retrieves the tag's attributes at draw time. You should not normally need to call this, and the attributes are disposed of after drawing, so they are essentially read-only.

func (*ActiveLink) Init added in v0.21.0

func (l *ActiveLink) Init(self any, parent page.ControlI, id string)

Init is called by subclasses of ActiveLink to initialize the link control structure.

func (*ActiveLink) IsActive added in v0.21.0

func (l *ActiveLink) IsActive() bool

IsActive returns whether the link is active or not.

func (*ActiveLink) Serialize added in v0.21.0

func (l *ActiveLink) Serialize(e page.Encoder)

Serialize serializes the state of the control for the pagestate

func (*ActiveLink) SetIsActive added in v0.21.0

func (l *ActiveLink) SetIsActive(isActive bool) ActiveLinkI

SetIsActive sets the active state of the control. When active, the ActiveAttributes will be merged into the tags other HTML attributes.

type ActiveLinkCreator added in v0.21.0

type ActiveLinkCreator struct {
	// ID is the control id. Leave blank to have one automatically assigned.
	ID string
	// Text is the text displayed inside the link.
	Text string
	// Location is the destination of the link (the href attribute).
	Location string
	// Download indicates that the "download" attribute should be assigned to the link.
	// Set to true to use the text of the link as the name of the file. Otherwise set to a string
	// to indicate the name of the file.
	Download any
	// ActiveAttributes are the attributes merged in to the current attributes to show that the link is active.
	// Matching attributes will be overridden for the most part, but the class attribute will be merged.
	ActiveAttributes html5tag.Attributes
	// ControlOptions are additional options for the html control.
	page.ControlOptions
}

ActiveLinkCreator is the initialization structure for declarative creation of links

func (ActiveLinkCreator) Create added in v0.21.0

func (c ActiveLinkCreator) Create(ctx context.Context, parent page.ControlI) page.ControlI

Create is called by the framework to create a new control from the Creator. You do not normally need to call this.

func (ActiveLinkCreator) Init added in v0.21.0

func (c ActiveLinkCreator) Init(ctx context.Context, ctrl ActiveLinkI)

Init is called by implementations of ActiveLinks to initialize a control with the creator.

type ActiveLinkI added in v0.21.0

type ActiveLinkI interface {
	LinkI
	IsActive() bool
	SetIsActive(bool) ActiveLinkI
	ActiveAttributes() html5tag.Attributes
}

type Canvas

type Canvas struct {
	page.ControlBase
}

Canvas is a GoRADD control that is an HTML canvas control. It currently does not have any primitives to draw on the canvas, and is here primarily to create a canvas that you would draw on using JavaScript.

func GetCanvas added in v0.2.0

func GetCanvas(c page.ControlI, id string) *Canvas

GetCanvas is a convenience method to return the canvas with the given id from the page.

func NewCanvas

func NewCanvas(parent page.ControlI, id string) *Canvas

NewCanvas creates a Canvas control

func (*Canvas) DrawingAttributes

func (c *Canvas) DrawingAttributes(ctx context.Context) html5tag.Attributes

DrawingAttributes is called by the framework to get the temporary attributes that are specifically set by this control just before drawing.

func (*Canvas) Init

func (c *Canvas) Init(self any, parent page.ControlI, id string)

Init is called by subcontrols. You do not normally need to call it.

type CanvasCreator added in v0.2.0

type CanvasCreator struct {
	// ID is the control id
	ID string
	page.ControlOptions
}

CanvasCreator is the initialization structure for declarative creation of buttons

func (CanvasCreator) Create added in v0.2.0

func (c CanvasCreator) Create(ctx context.Context, parent page.ControlI) page.ControlI

Create is called by the framework to create a new control from the Creator. You do not normally need to call this.

type CanvasI

type CanvasI interface {
	page.ControlI
}

type DataBinder added in v0.3.0

type DataBinder interface {
	// ID of the DataBinder. A DataBinder must be a control so that we can serialize it.
	ID() string
	// BindData is called by the data manager to get the data for the control during draw time
	BindData(ctx context.Context, s DataManagerI)
}

type DataManager added in v0.3.0

type DataManager struct {
	// contains filtered or unexported fields
}

DataManager is an object designed to be embedded in a control that will help manage the data binding process.

func (*DataManager) Deserialize added in v0.3.0

func (d *DataManager) Deserialize(dec page.Decoder)

func (*DataManager) HasData added in v0.3.0

func (d *DataManager) HasData() bool

func (*DataManager) HasDataProvider added in v0.3.0

func (d *DataManager) HasDataProvider() bool

func (*DataManager) LoadData added in v0.3.0

func (d *DataManager) LoadData(ctx context.Context, owner DataManagerI)

LoadData tells the data binder to load data by calling SetData on the given object. The object should be the embedder of the DataManager

func (*DataManager) RangeData added in v0.3.0

func (d *DataManager) RangeData(f func(int, interface{}) bool)

RangeData will call the given function for each item in the data. The function should return true to continue, and false to end early.

func (*DataManager) ResetData added in v0.3.0

func (d *DataManager) ResetData()

ResetData is called by controls that use a data binder to unload the data after it is used.

func (*DataManager) Serialize added in v0.3.0

func (d *DataManager) Serialize(e page.Encoder)

func (*DataManager) SetData added in v0.3.0

func (d *DataManager) SetData(data interface{})

SetData sets the data of a control that uses a data binder. You MUST call it with a slice of some kind of data.

func (*DataManager) SetDataProvider added in v0.3.0

func (d *DataManager) SetDataProvider(b DataBinder)

func (*DataManager) SetDataWithOffset added in v0.13.7

func (d *DataManager) SetDataWithOffset(data interface{}, offset int)

SetDataWithOffset is for controls that show a window onto a bigger data set.

offset is the first row number that is represented by the data.

type DataManagerI added in v0.3.0

type DataManagerI interface {
	page.ControlI
	SetDataProvider(b DataBinder)
	HasDataProvider() bool
	// SetData should be passed a slice of data items
	SetData(data interface{})
	SetDataWithOffset(data interface{}, offset int)
	LoadData(ctx context.Context, owner DataManagerI)
	ResetData()
}

A DataManagerI is the interface for the owner (the embedder) of the DataManager

type DataPager

type DataPager struct {
	page.ControlBase

	ObjectName       string
	ObjectPluralName string
	LabelForNext     string
	LabelForPrevious string
	// contains filtered or unexported fields
}

DataPager is a toolbar designed to aid scrolling a large set of data. It is implemented using Aria design best practices. It is designed to be paired with a Table or DataRepeater to aid in navigating through the data. It is similar to a Paginator, but a paginator is for navigating through a series of related web pages and not just for data on one form.

func NewDataPager

func NewDataPager(parent page.ControlI, id string, pagedControl PagedControlI) *DataPager

NewDataPager creates a new DataPager

func (*DataPager) ButtonProxy added in v0.2.0

func (d *DataPager) ButtonProxy() *Proxy

func (*DataPager) CalcBunch

func (d *DataPager) CalcBunch() (pageStart, pageEnd int)

CalcBunch is called by the framework to lay out the data pager based on the number of pages in the pager. It should try to represent an easy to navigate interface that can manage 2 or 2000 pages.

A "Bunch" is defined as the collection of numbers that lies in between the pair of Ellipsis ("...")

Layout

For an IndexCount of 10 2 213 2 (two items to the left of the bunch, and then 2 indexes, selected index, 3 indexes, and then two items to the right of the bunch) e.g. 1 ... 5 6 *7* 8 9 10 ... 100

For IndexCount of 11 2 313 2

For IndexCount of 12 2 314 2

For IndexCount of 13 2 414 2

For IndexCount of 14 2 415 2

Start/end page numbers for the bunch

For IndexCount of 10 1 2 3 4 5 6 7 8 .. 100 1 .. 4 5 *6* 7 8 9 .. 100 1 .. 92 93 *94* 95 96 97 .. 100 1 .. 93 94 95 96 97 98 99 100

For IndexCount of 11 1 2 3 4 5 6 7 8 9 .. 100 1 .. 4 5 6 *7* 8 9 10 .. 100 1 .. 91 92 93 *94* 95 96 97 .. 100 1 .. 92 93 94 95 96 97 98 99 100

For IndexCount of 12 1 2 3 4 5 6 7 8 9 10 .. 100 1 .. 4 5 6 *7* 8 9 10 11 .. 100 1 .. 90 91 92 *93* 94 95 96 97 .. 100 1 .. 91 92 93 94 95 96 97 98 99 100

For IndexCount of 13 1 2 3 4 5 6 7 8 9 11 .. 100 1 .. 4 5 6 7 *8* 9 10 11 12 .. 100 1 .. 89 90 91 92 *93* 94 95 96 97 .. 100 1 .. 90 91 92 93 94 95 96 97 98 99 100

Note: there are likely better ways to do this. Some innovative ones are to have groups of 10s, and then 100s etc. Or, use the ellipsis as a dropdown menu for more selections

func (*DataPager) Deserialize

func (d *DataPager) Deserialize(dec page.Decoder)

func (*DataPager) DoAction added in v0.23.0

func (d *DataPager) DoAction(ctx context.Context, params action.Params)

DoAction is called by the framework to respond to actions.

func (*DataPager) DrawInnerHtml

func (d *DataPager) DrawInnerHtml(_ context.Context, w io.Writer)

DrawInnerHtml is called by the framework to draw the control's inner html.

func (*DataPager) DrawPreRender added in v0.23.0

func (d *DataPager) DrawPreRender(ctx context.Context, w io.Writer)

DrawPreRender is called by the framework to load data into the paged control just before drawing.

func (*DataPager) DrawingAttributes

func (d *DataPager) DrawingAttributes(ctx context.Context) html5tag.Attributes

DrawingAttributes is called by the framework to add temporary attributes to the html.

func (*DataPager) Init

func (d *DataPager) Init(self any, parent page.ControlI, id string, pagedControl PagedControlI)

Init is called by subclasses of a DataPager to initialize the data pager. You do not normally need to call this.

func (*DataPager) MarshalState

func (d *DataPager) MarshalState(m page.SavedState)

MarshalState is an internal function to save the state of the control

func (*DataPager) NextButtonsHtml

func (d *DataPager) NextButtonsHtml() string

NextButtonsHtml returns the html for the next buttons. Subclasses can override this to change how the next buttons are drawn.

func (*DataPager) PageButtonsHtml

func (d *DataPager) PageButtonsHtml(i int) string

PageButtonsHtml returns the html for the page buttons. Subclasses can override this to change how the page buttons are drawn.

func (*DataPager) PagedControl added in v0.2.0

func (d *DataPager) PagedControl() PagedControlI

func (*DataPager) PreviousButtonsHtml

func (d *DataPager) PreviousButtonsHtml() string

PreviousButtonsHtml returns the html to draw the previous buttons. Subclasses can override this to change how the Previous buttons are drawn.

func (*DataPager) Serialize

func (d *DataPager) Serialize(e page.Encoder)

func (*DataPager) SetLabels

func (d *DataPager) SetLabels(previous string, next string)

SetLabels sets the previous and next labels. Translate these first.

func (*DataPager) SetMaxPageButtons

func (d *DataPager) SetMaxPageButtons(b int)

SetMaxPageButtons sets the maximum number of buttons that will be displayed in the paginator.

func (*DataPager) SetObjectNames

func (d *DataPager) SetObjectNames(singular string, plural string)

SetObjectNames sets the single and plural names of the objects that are represented in the data pager.

func (*DataPager) UnmarshalState

func (d *DataPager) UnmarshalState(m page.SavedState)

UnmarshalState is an internal function to restore the state of the control

type DataPagerCreator added in v0.2.0

type DataPagerCreator struct {
	// ID is the control id
	ID string
	// MaxPageButtons is the maximum number of page buttons to display in the pager
	MaxPageButtons int
	// ObjectName is the name of the object being displayed in the table
	ObjectName string
	// ObjectPluralName is the plural name of the object being displayed
	ObjectPluralName string
	// LabelForNext is the text to use in the Next button
	LabelForNext string
	// LabelForPrevious is the text to use in the Previous button
	LabelForPrevious string
	// PagedControlID is the id of the control that will be paged by the pager
	PagedControlID string
	page.ControlOptions
}

DataPagerCreator is the initialization structure for declarative creation of data pagers

func (DataPagerCreator) Create added in v0.2.0

func (c DataPagerCreator) Create(ctx context.Context, parent page.ControlI) page.ControlI

Create is called by the framework to create a new control from the Creator. You do not normally need to call this.

func (DataPagerCreator) Init added in v0.2.0

func (c DataPagerCreator) Init(ctx context.Context, ctrl DataPagerI)

Init is called by implementations of Buttons to initialize a control with the creator.

type DataPagerI

type DataPagerI interface {
	page.ControlI
	PreviousButtonsHtml() string
	NextButtonsHtml() string
	PageButtonsHtml(i int) string
	SetMaxPageButtons(b int)
	SetObjectNames(singular string, plural string)
	SetLabels(previous string, next string)
}

DataPagerI is the data pager interface that allows this object to call into subclasses.

func GetDataPager added in v0.2.0

func GetDataPager(c page.ControlI, id string) DataPagerI

type DateTimeSpan

type DateTimeSpan struct {
	Span
	// contains filtered or unexported fields
}

DateTimeSpan is a span that displays a datetime value as static text. This is a typical default control to use for a timestamp in the database.

func NewDateTimeSpan

func NewDateTimeSpan(parent page.ControlI, id string) *DateTimeSpan

NewDateTimeSpan create a new DateTimeSpan.

func (*DateTimeSpan) DateTime added in v0.9.3

func (s *DateTimeSpan) DateTime() time.Time

func (*DateTimeSpan) Deserialize added in v0.3.0

func (s *DateTimeSpan) Deserialize(dec page.Decoder)

func (*DateTimeSpan) DrawInnerHtml

func (s *DateTimeSpan) DrawInnerHtml(_ context.Context, w io.Writer)

DrawInnerHtml is called by the framework to draw the inner html of the span.

func (*DateTimeSpan) DrawingAttributes added in v0.7.1

func (s *DateTimeSpan) DrawingAttributes(ctx context.Context) html5tag.Attributes

func (*DateTimeSpan) Init

func (s *DateTimeSpan) Init(self any, parent page.ControlI, id string)

Init is called by subclasses to initialize the parent.

func (*DateTimeSpan) Serialize added in v0.3.0

func (s *DateTimeSpan) Serialize(e page.Encoder)

func (*DateTimeSpan) SetDateTime

func (s *DateTimeSpan) SetDateTime(d time.Time)

SetDateTime sets the value to a datetime.DateTime.

func (*DateTimeSpan) SetFormat

func (s *DateTimeSpan) SetFormat(format string) *DateTimeSpan

SetFormat sets the format string. This should be a time.TimeFormat string described at https://golang.org/pkg/time/#Time.Format

func (*DateTimeSpan) SetValue

func (s *DateTimeSpan) SetValue(v interface{})

SetValue sets the value display. You can set the value to a datetime.DateTime, a time.Time, or a string that can be parsed by the format string.

func (*DateTimeSpan) Value

func (s *DateTimeSpan) Value() interface{}

Value returns the value as a datetime.DateTime object. Also satisfies the Valuer interface

type DateTimeSpanCreator added in v0.2.0

type DateTimeSpanCreator struct {
	ID     string
	Format string
	Value  time.Time
	page.ControlOptions
}

func (DateTimeSpanCreator) Create added in v0.2.0

type Fieldset

type Fieldset struct {
	Panel
}

Fieldset is a Panel that is drawn with a fieldset tag. The panel's text is used as the legend tag. Fieldset controls cannot have wrappers.

func GetFieldset added in v0.2.0

func GetFieldset(c page.ControlI, id string) *Fieldset

GetFieldset is a convenience method to return the panel with the given id from the page.

func NewFieldset

func NewFieldset(parent page.ControlI, id string) *Fieldset

NewFieldset creates a new Fieldset.

func (*Fieldset) DrawTag

func (c *Fieldset) DrawTag(ctx context.Context, w io.Writer)

DrawTag is called by the framework to draw the html for the control.

func (*Fieldset) DrawingAttributes

func (c *Fieldset) DrawingAttributes(ctx context.Context) html5tag.Attributes

DrawingAttributes is called by the framework.

func (*Fieldset) Init

func (c *Fieldset) Init(self any, parent page.ControlI, id string)

Init is called by subclasses of Fieldset.

type FieldsetCreator added in v0.2.0

type FieldsetCreator struct {
	// ID is the id the tag will have on the page and must be unique on the page
	ID string
	// Legend is the text to use in the legend tag of the fieldset
	Legend string
	// Children are the child creators declaring the controls wrapped by the fieldset
	Children []page.Creator
	page.ControlOptions
}

FieldsetCreator declares a Fieldset control. Pass it to AddControls or as a child of other creators.

func (FieldsetCreator) Create added in v0.2.0

func (c FieldsetCreator) Create(ctx context.Context, parent page.ControlI) page.ControlI

Create is called by the framework to create the panel.

type FieldsetI

type FieldsetI interface {
	PanelI
}

type FormBase

type FormBase struct {
	page.FormBase
}

The FormBase is the control that all Form objects should include, and is the master container for all other goradd controls. This is here for future expansion.

func (*FormBase) Init

func (f *FormBase) Init(self any, ctx context.Context, id string)

Init initializes the form.

type FormFieldWrapper added in v0.2.0

type FormFieldWrapper struct {
	page.ControlBase
	// contains filtered or unexported fields
}

FormFieldWrapper is a GoRADD control that wraps other controls, and provides common companion functionality like a form label, validation state display, and help text.

func GetFormFieldWrapper added in v0.2.0

func GetFormFieldWrapper(c page.ControlI, id string) *FormFieldWrapper

GetFormFieldWrapper is a convenience method to return the form field with the given id from the page.

func NewFormFieldWrapper added in v0.28.0

func NewFormFieldWrapper(parent page.ControlI, id string) *FormFieldWrapper

func (*FormFieldWrapper) ChildValidationChanged added in v0.2.5

func (c *FormFieldWrapper) ChildValidationChanged()

func (*FormFieldWrapper) Deserialize added in v0.3.0

func (c *FormFieldWrapper) Deserialize(dec page.Decoder)

func (*FormFieldWrapper) DrawTag added in v0.4.0

func (c *FormFieldWrapper) DrawTag(ctx context.Context, w io.Writer)

func (*FormFieldWrapper) DrawingAttributes added in v0.4.0

func (c *FormFieldWrapper) DrawingAttributes(ctx context.Context) html5tag.Attributes

func (*FormFieldWrapper) ErrorAttributes added in v0.2.0

func (c *FormFieldWrapper) ErrorAttributes() html5tag.Attributes

func (*FormFieldWrapper) For added in v0.2.0

func (c *FormFieldWrapper) For() string

func (*FormFieldWrapper) Init added in v0.2.0

func (c *FormFieldWrapper) Init(self any, parent page.ControlI, id string)

func (*FormFieldWrapper) InstructionAttributes added in v0.2.0

func (c *FormFieldWrapper) InstructionAttributes() html5tag.Attributes

func (*FormFieldWrapper) Instructions added in v0.2.0

func (c *FormFieldWrapper) Instructions() string

Instructions returns the instructions to be printed with the control

func (*FormFieldWrapper) LabelAttributes added in v0.2.0

func (c *FormFieldWrapper) LabelAttributes() html5tag.Attributes

func (*FormFieldWrapper) Serialize added in v0.3.0

func (c *FormFieldWrapper) Serialize(e page.Encoder)

func (*FormFieldWrapper) SetErrorAttributes added in v0.2.0

func (c *FormFieldWrapper) SetErrorAttributes(a html5tag.Attributes) FormFieldWrapperI

func (*FormFieldWrapper) SetFor added in v0.2.0

func (c *FormFieldWrapper) SetFor(relatedId string) FormFieldWrapperI

SetFor associates the form field with a sub control. The relatedId is the ID that the form field is associated with. Most browsers allow you to click on the label in order to give focus to the related control.

func (*FormFieldWrapper) SetInstructionAttributes added in v0.2.0

func (c *FormFieldWrapper) SetInstructionAttributes(a html5tag.Attributes) FormFieldWrapperI

func (*FormFieldWrapper) SetInstructions added in v0.2.0

func (c *FormFieldWrapper) SetInstructions(i string) FormFieldWrapperI

SetInstructions sets the instructions that will be printed with the control. Instructions only get rendered by wrappers, so if there is no wrapper, or the wrapper does not render the instructions, this will not appear.

func (*FormFieldWrapper) SetLabelAttributes added in v0.2.0

func (c *FormFieldWrapper) SetLabelAttributes(a html5tag.Attributes) FormFieldWrapperI

func (*FormFieldWrapper) SubTag added in v0.9.3

func (c *FormFieldWrapper) SubTag() string

func (*FormFieldWrapper) Validate added in v0.2.0

func (c *FormFieldWrapper) Validate(_ context.Context) bool

type FormFieldWrapperCreator added in v0.2.0

type FormFieldWrapperCreator struct {
	// ID is the optional control id on the html form. If you do not specify this, it
	// will create on for you that is the ID of the child control + "-ff"
	ID string
	// Label is the text that will be in the html label tag associated with the Child control.
	Label string
	// Child is the creator of the child control you want to wrap
	Child page.Creator
	// Instructions offer help text that will follow the control and that further describes its purpose or use.
	Instructions string
	// For specifies the id of the control that the label is for, and that is the control that we are wrapping.
	// You normally do not need this, as it will simply look at the first child control, but if for some reason
	// the first child is not the control the label is for, then specify it here.
	For string
	// LabelAttributes are additional attributes to add to the label tag.
	LabelAttributes html5tag.Attributes
	// ErrorAttributes are additional attributes to add to the tag that displays the error.
	ErrorAttributes html5tag.Attributes
	// InstructionAttributes are additional attributes to add to the tag that displays the instructions.
	InstructionAttributes html5tag.Attributes
	// Set IsInline to true to use a "span" instead of a "div" in the wrapping tag.
	IsInline bool
	// ControlOptions are additional options for the wrapper tag
	ControlOptions page.ControlOptions
}

FormFieldWrapperCreator creates a FormFieldWrapper, which wraps a control with a div or span that also has a label, validation error text and optional instructions. Pass the creator of the control you are wrapping as the Child item.

func (FormFieldWrapperCreator) Create added in v0.2.0

Create is called by the framework to create the control. You do not normally need to call it directly. Instead, either pass this creator to AddControls for the parent control you want to add this to, or add this to the Children of the parent control's creator.

func (FormFieldWrapperCreator) Init added in v0.2.0

Init is called by implementations of a FormFieldWrapper to initialize the creator.

type FormFieldWrapperI added in v0.2.0

type FormFieldWrapperI interface {
	page.ControlI
	SetFor(relatedId string) FormFieldWrapperI
	For() string
	Instructions() string
	SetInstructions(string) FormFieldWrapperI
	LabelAttributes() html5tag.Attributes
	ErrorAttributes() html5tag.Attributes
	InstructionAttributes() html5tag.Attributes
}

type GridLayoutBuilder added in v0.0.3

type GridLayoutBuilder struct {
	// contains filtered or unexported fields
}

GridLayoutBuilder is a helper that will allow a slice of items to be layed out in a table like pattern. It will compute the number of rows required, and then wrap the rows in row html, and the cells in cell html. You can have the items flow with the rows, or flow across the row axis. You can use this to build a table or a table-like structure.

This is largely obsoleted by CSS Grid.

func (*GridLayoutBuilder) Build added in v0.0.3

func (g *GridLayoutBuilder) Build() string

func (*GridLayoutBuilder) ColumnCount added in v0.0.3

func (g *GridLayoutBuilder) ColumnCount(count int) *GridLayoutBuilder

ColumnCount sets the number of columns.

func (*GridLayoutBuilder) Direction added in v0.0.3

func (g *GridLayoutBuilder) Direction(placement LayoutDirection) *GridLayoutBuilder

LayoutDirection indicates how items are placed, whether they should fill up rows first, or fill up columns.

func (*GridLayoutBuilder) Items added in v0.0.3

func (g *GridLayoutBuilder) Items(items []string) *GridLayoutBuilder

Items sets the html for each item to display.

func (*GridLayoutBuilder) RowClass added in v0.0.3

func (g *GridLayoutBuilder) RowClass(t string) *GridLayoutBuilder

func (*GridLayoutBuilder) RowTag added in v0.0.3

type Image

type Image struct {
	page.ControlBase
	// contains filtered or unexported fields
}

Image is an img tag. You can display either a URL, or direct image information by setting the Src or the Data values.

func GetImage added in v0.2.0

func GetImage(c page.ControlI, id string) *Image

GetImage is a convenience method to return the button with the given id from the page.

func NewImage

func NewImage(parent page.ControlI, id string) *Image

NewImage creates a new image.

func (*Image) Alt

func (i *Image) Alt() string

Alt returns the text that will be used for the alt tag.

func (*Image) Data

func (i *Image) Data() []byte

Data returns the data of the image if provided.

func (*Image) Deserialize added in v0.3.0

func (i *Image) Deserialize(dec page.Decoder)

func (*Image) DrawingAttributes

func (i *Image) DrawingAttributes(ctx context.Context) html5tag.Attributes

DrawingAttributes is called by the framework.

func (*Image) Height

func (i *Image) Height() int

Height returns the number that will be used in the height attribute.

func (*Image) Init

func (i *Image) Init(self any, parent page.ControlI, id string)

Init is called by subclasses. Normally you will not call this directly.

func (*Image) Serialize added in v0.3.0

func (i *Image) Serialize(e page.Encoder)

func (*Image) SetAlt

func (i *Image) SetAlt(alt string) ImageI

SetAlt will set the alt tag. The html standard requires the alt tag. Alt tags are used to display a descirption of an image when the browser cannot display an image, and is very important for assistive technologies.

func (*Image) SetData

func (i *Image) SetData(data []byte) ImageI

SetData sets the raw data of the image.

func (*Image) SetHeight

func (i *Image) SetHeight(height int) ImageI

SetHeight sets the height attribute.

func (*Image) SetMimeType

func (i *Image) SetMimeType(typ string) ImageI

Set the MIME type for the data, (jpeg, gif, png, etc.)

func (*Image) SetSrc

func (i *Image) SetSrc(src string) ImageI

SetSrc sets the src attribute.

func (*Image) SetWidth

func (i *Image) SetWidth(width int) ImageI

SetWidth sets the width attribute.

func (*Image) Src

func (i *Image) Src() string

Src returns the src attribute

func (*Image) Width

func (i *Image) Width() int

Width returns the number that will be used as the width of the image

type ImageCapture

type ImageCapture struct {
	Panel

	ErrTextID string
	// contains filtered or unexported fields
}

ImageCapture is a panel that has both an image and button to help you capture images from the user's camera. It is a kind of composite control that exports the image so that you can further manipulate it after creation. It also has javascript to manage the actual image capture process. It does not currently allow the user to upload an image in place of capturing an image from the camera. It only captures images from devices and browsers that support image capture.

func GetImageCapture added in v0.2.0

func GetImageCapture(c page.ControlI, id string) *ImageCapture

GetImageCapture is a convenience method to return the button with the given id from the page.

func NewImageCapture

func NewImageCapture(parent page.ControlI, id string) *ImageCapture

NewImageCapture creates a new image capture panel.

func (*ImageCapture) Data

func (i *ImageCapture) Data() []byte

func (*ImageCapture) Deserialize added in v0.3.0

func (i *ImageCapture) Deserialize(dec page.Decoder)

func (*ImageCapture) DrawingAttributes

func (i *ImageCapture) DrawingAttributes(ctx context.Context) html5tag.Attributes

DrawingAttributes is called by the framework.

func (*ImageCapture) Init

func (i *ImageCapture) Init(self any, parent page.ControlI, id string)

Init is called by subclasses.

func (*ImageCapture) MarshalState added in v0.13.3

func (i *ImageCapture) MarshalState(m page.SavedState)

MarshalState is an internal function to save the state of the control

func (*ImageCapture) Serialize added in v0.3.0

func (i *ImageCapture) Serialize(e page.Encoder)

func (*ImageCapture) SetData

func (i *ImageCapture) SetData(data []byte)

SetData sets the binary picture data. The data must be in the mime type format.

func (*ImageCapture) SetMaskShape

func (i *ImageCapture) SetMaskShape(shape ImageCaptureShape)

SetMaskShape sets the masking shape for the image

func (*ImageCapture) SetMimeType

func (i *ImageCapture) SetMimeType(typ string)

func (*ImageCapture) SetPixelSize

func (i *ImageCapture) SetPixelSize(width int, height int)

SetPixelSize sets the pixel size of the image that will be returned. ControlBase the visible size of the canvas through setting css sizes.

func (*ImageCapture) SetQuality

func (i *ImageCapture) SetQuality(quality float32)

SetQuality specifies a number between 0 and 1 used as the quality value for capturing jpegs or webp images.

func (*ImageCapture) SetZoom

func (i *ImageCapture) SetZoom(zoom int)

SetZoom zooms the camera by the given percent, i.e. 50 is 50% closer and 100 would be a 2x zoom.

func (*ImageCapture) TurnOff

func (i *ImageCapture) TurnOff()

TurnOff will turn off the camera and the image displayed in the control

func (*ImageCapture) UnmarshalState added in v0.13.3

func (i *ImageCapture) UnmarshalState(m page.SavedState)

UnmarshalState is an internal function to restore the state of the control

func (*ImageCapture) UpdateFormValues

func (i *ImageCapture) UpdateFormValues(ctx context.Context)

UpdateFormValues is called by the framework.

type ImageCaptureCreator added in v0.2.0

type ImageCaptureCreator struct {
	// ID is the control id
	ID        string
	MaskShape ImageCaptureShape
	MimeType  string
	Zoom      int
	Quality   float32
	SaveState bool
	page.ControlOptions
}

ImageCaptureCreator is the initialization structure for declarative creation of buttons

func (ImageCaptureCreator) Create added in v0.2.0

Create is called by the framework to create a new control from the Creator. You do not normally need to call this.

type ImageCaptureI

type ImageCaptureI interface {
	page.ControlI
}

type ImageCaptureShape

type ImageCaptureShape string
const (
	ImageCaptureShapeRect   ImageCaptureShape = "rect"
	ImageCaptureShapeCircle ImageCaptureShape = "circle"
)

type ImageCreator added in v0.2.0

type ImageCreator struct {
	// ID is the control id
	ID string
	// Src is the content of the source attribute, usually a url
	Src string
	// Alt is the text displayed for screen readers
	Alt      string
	MimeType string
	Width    int
	Height   int
	Data     []byte
	page.ControlOptions
}

ImageCreator is the initialization structure for declarative creation of buttons

func (ImageCreator) Create added in v0.2.0

func (c ImageCreator) Create(ctx context.Context, parent page.ControlI) page.ControlI

Create is called by the framework to create a new control from the Creator. You do not normally need to call this.

func (ImageCreator) Init added in v0.2.0

func (c ImageCreator) Init(ctx context.Context, ctrl ImageI)

Init is called by implementations of Images to initialize a control with the creator.

type ImageI

type ImageI interface {
	page.ControlI
	SetSrc(src string) ImageI
	SetAlt(alt string) ImageI
	SetWidth(width int) ImageI
	SetHeight(height int) ImageI
	SetMimeType(typ string) ImageI
	SetData(data []byte) ImageI
}

type LabelAttributer added in v0.13.8

type LabelAttributer interface {
	LabelAttributes() html5tag.Attributes
}

type LayoutDirection added in v0.0.4

type LayoutDirection int

LayoutDirection controls whether items are layed out in rows or columns.

const (
	// LayoutRow lays out items in rows
	LayoutRow LayoutDirection = iota
	// LayoutColumn lays out items in columns, computing the number of rows required to make the specified number of columns.
	LayoutColumn
)
type Link struct {
	page.ControlBase
}

Link is a standard html link. It corresponds to an <a> tag in html.

func GetLink(c page.ControlI, id string) *Link

GetLink is a convenience method to return the link with the given id from the page.

func NewLink(parent page.ControlI, id string) *Link

NewLink creates a new standard html link

func (*Link) DrawingAttributes added in v0.17.0

func (l *Link) DrawingAttributes(ctx context.Context) html5tag.Attributes

DrawingAttributes retrieves the tag's attributes at draw time. You should not normally need to call this, and the attributes are disposed of after drawing, so they are essentially read-only.

func (*Link) Init added in v0.17.0

func (l *Link) Init(self any, parent page.ControlI, id string)

Init is called by subclasses of Link to initialize the link control structure.

func (*Link) SetDownload added in v0.17.0

func (l *Link) SetDownload(filename string) LinkI

SetDownload sets the download attribute of the link.

When a user clicks on the link, the browser will cause the destination to be downloaded. Pass a value to name the download file, or pass the empty string to cause the browser to use the link name as the file name.

func (*Link) SetLabel added in v0.17.0

func (l *Link) SetLabel(label string) LinkI

SetLabel sets the text that appears between the a tags.

func (*Link) SetLocation added in v0.17.0

func (l *Link) SetLocation(url string) LinkI

SetLocation sets the href attribute of the link

type LinkCreator added in v0.17.0

type LinkCreator struct {
	// ID is the control id. Leave blank to have one automatically assigned.
	ID string
	// Text is the text displayed inside the link.
	Text string
	// Location is the destination of the link (the href attribute).
	Location string
	// Download indicates that the "download" attribute should be assigned to the link.
	// Set to true to use the text of the link as the name of the file. Otherwise set to a string
	// to indicate the name of the file.
	Download any
	// ControlOptions are additional options for the html control.
	page.ControlOptions
}

LinkCreator is the initialization structure for declarative creation of links

func (LinkCreator) Create added in v0.17.0

func (c LinkCreator) Create(ctx context.Context, parent page.ControlI) page.ControlI

Create is called by the framework to create a new control from the Creator. You do not normally need to call this.

func (LinkCreator) Init added in v0.17.0

func (c LinkCreator) Init(ctx context.Context, ctrl LinkI)

Init is called by implementations of Links to initialize a control with the creator.

type LinkI added in v0.17.0

type LinkI interface {
	page.ControlI
	SetLabel(label string) LinkI
	SetLocation(href string) LinkI
	SetDownload(string) LinkI
}

type PagedControl added in v0.2.0

type PagedControl struct {
	// contains filtered or unexported fields
}

PagedControl is a mixin that makes a ControlBase controllable by a data pager. All embedders of a PagedControl MUST implement the Serialize and Deserialize methods so that the ControlBase versions of these functions will get called.

func (*PagedControl) AddDataPager added in v0.2.0

func (c *PagedControl) AddDataPager(d DataPagerI)

AddDataPager adds a data pager to the PagedControl. A PagedControl can have multiple data pagers.

func (*PagedControl) CalcPageCount added in v0.2.0

func (c *PagedControl) CalcPageCount() int

CalcPageCount will return the number of pages based on the page size and total items.

func (*PagedControl) Deserialize added in v0.3.0

func (c *PagedControl) Deserialize(dec page.Decoder)

func (*PagedControl) GetDataPagerIDs added in v0.2.0

func (c *PagedControl) GetDataPagerIDs() []string

func (*PagedControl) HasDataPagers added in v0.2.0

func (c *PagedControl) HasDataPagers() bool

func (*PagedControl) MarshalState added in v0.12.0

func (c *PagedControl) MarshalState(m page.SavedState)

MarshalState is an internal function to save the state of the control

func (*PagedControl) PageNum added in v0.2.0

func (c *PagedControl) PageNum() int

PageNum returns the current page number.

func (*PagedControl) PageSize added in v0.2.0

func (c *PagedControl) PageSize() int

PageSize returns the maximum number of items that will be allowed in a page.

func (*PagedControl) Serialize added in v0.3.0

func (c *PagedControl) Serialize(e page.Encoder)

Serialize encodes the PagedControl data for serialization. Note that all control implementations that use a PagedControl MUST create their own Serialize method, call the base ControlBase's version first, and then call this Serialize method.

func (*PagedControl) SetPageNum added in v0.2.0

func (c *PagedControl) SetPageNum(n int)

SetPageNum sets the current page number. It does not redraw anything, nor does it determine if the page is actually visible.

func (*PagedControl) SetPageSize added in v0.2.0

func (c *PagedControl) SetPageSize(size int)

SetPageSize sets the maximum number of items that will be displayed at one time. If more than this number of items is being displayed, the pager will allow paging to other items.

func (*PagedControl) SetTotalItems added in v0.2.0

func (c *PagedControl) SetTotalItems(count uint)

SetTotalItems sets the total number of items that the paginator keeps track of. This will be divided by the PageSize to determine the number of pages presented. You must call this each time the data size might change.

func (*PagedControl) SliceOffsets added in v0.2.0

func (c *PagedControl) SliceOffsets() (start, end int)

SliceOffsets returns the start and end values to use to specify a portion of a slice corresponding to the data the pager refers to

func (*PagedControl) SqlLimits added in v0.2.0

func (c *PagedControl) SqlLimits() (maxRowCount, offset int)

SqlLimits returns the limits you would use in a sql database limit clause

func (*PagedControl) TotalItems added in v0.2.0

func (c *PagedControl) TotalItems() int

TotalItems returns the number of items that the paginator is aware of in the list it is managing.

func (*PagedControl) UnmarshalState added in v0.12.0

func (c *PagedControl) UnmarshalState(m page.SavedState)

UnmarshalState is an internal function to restore the state of the control

type PagedControlI added in v0.2.0

type PagedControlI interface {
	DataManagerI
	SetTotalItems(uint)
	TotalItems() int
	SetPageSize(size int)
	PageSize() int
	PageNum() int
	SetPageNum(n int)
	AddDataPager(DataPagerI)
	CalcPageCount() int
	HasDataPagers() bool
	GetDataPagerIDs() []string
	SliceOffsets() (start, end int)
}

PagedControlI is the interface that paged controls must implement

type Panel

type Panel struct {
	page.ControlBase
}

Panel is a GoRADD control that is a basic "div" wrapper.

Panel can be used for any kind of HTML tag by simply changing the Tag attribute. For example,

panel.Tag = "nav"

Turns a panel into a "nav" tag.

Customize how the tag is drawn by calling functions inherited from ControlBase. With these, you can set the class, data attributes, or any attribute. Call SetText() to set a string that will be drawn inside the div tag. Call SetTextIsHtml() to tell the control to treat the text as HTML and not escape it.

One typical use for a Panel is as a container for custom HTML and child controls. Child controls assigned to the Panel will automatically be drawn by default in the order they were assigned.

To customize this behavior, embed a Panel into your own custom struct, and then define the DrawInnerHtml() function on your struct. The framework will automatically call that function. Or, use a template to create the DrawTemplate function on your struct and the framework will use that instead. Examples can be found in the tutorial, in the bootstrap package, and in the code-generated panels.

func GetPanel added in v0.2.0

func GetPanel(c page.ControlI, id string) *Panel

GetPanel is a convenience method to return the panel with the given id from the page.

func NewPanel

func NewPanel(parent page.ControlI, id string) *Panel

func (*Panel) DrawingAttributes

func (c *Panel) DrawingAttributes(ctx context.Context) html5tag.Attributes

func (*Panel) Init

func (c *Panel) Init(self any, parent page.ControlI, id string)

func (*Panel) SetValue added in v0.2.0

func (c *Panel) SetValue(v interface{}) page.ControlI

SetValue satisfies the Valuer interface and sets the text of the panel.

func (*Panel) Value

func (c *Panel) Value() interface{}

Value satisfies the Valuer interface and returns the text of the panel.

type PanelCreator added in v0.2.0

type PanelCreator struct {
	// ID is the id the tag will have on the page and must be unique on the page
	ID string
	// Tag replaces the tag of the div object with the given tag.
	Tag string
	// Text is text that will become the innerhtml part of the tag.
	Text string
	// If you set TextIsHtml, the Text will not be escaped prior to drawing.
	TextIsHtml bool
	// Children is a list of creators to use to create the child controls of the panel.
	// You can wrap your child creators with the Children() function as a helper. For example:
	//   Children: Children(
	//     TextboxCreator{...},
	//     ButtonCreator{...},
	//   )
	Children []page.Creator
	page.ControlOptions
}

PanelCreator creates a div control with child controls. Pass it to AddControls or as a child of a parent control.

func (PanelCreator) Create added in v0.2.0

func (c PanelCreator) Create(ctx context.Context, parent page.ControlI) page.ControlI

Create is called by the framework to create the panel.

func (PanelCreator) Init added in v0.21.0

func (c PanelCreator) Init(ctx context.Context, ctrl PanelI)

Init is called by implementations to initialize a control with the creator.

type PanelI

type PanelI interface {
	page.ControlI
}

type Proxy

type Proxy struct {
	page.ControlBase
}

Proxy is a control that attaches events to controls. It is useful for attaching similar events to a series of controls, like all the links in a table, or all the buttons in button bar. You can also use it to draw a series of links or buttons. The proxy differentiates between the different objects that are sending it events by the EventValue that you gave the proxy.

To use a Proxy, create it in the control that wraps the controls the proxy will manage. Attach an event to the proxy control, and in the action handler, look for the ControlValue in the DoAction Value to know which of the controls sent the event. Draw the proxy with one of the following:

LinkHtml() - Output the proxy as a link
ButtonHtml() - Output the proxy as a button
TagHtml() - Output the proxy in any tag
ActionAttributes() - Returns attributes you can use in any custom control to attach a proxy

The ProxyColumn of the Table object will use a proxy to draw items in a table column.

func GetProxy added in v0.2.0

func GetProxy(c page.ControlI, id string) *Proxy

GetProxy is a convenience method to return the button with the given id from the page.

func NewProxy

func NewProxy(parent page.ControlI, id string) *Proxy

NewProxy creates a new proxy. The parent must be the wrapping control of the objects that the proxy will manage.

func (*Proxy) ActionAttributes

func (p *Proxy) ActionAttributes(actionValue string) html5tag.Attributes

ActionAttributes returns attributes that can be included in any tag to attach a proxy to the tag.

func (*Proxy) ButtonHtml

func (p *Proxy) ButtonHtml(label string,
	actionValue string,
	attributes html5tag.Attributes,
	labelIsHtml bool,
) string

ButtonHtml outputs the proxy as a button tag. actionValue becomes the event's ControlValue parameter

func (*Proxy) Draw

func (p *Proxy) Draw(ctx context.Context, w io.Writer)

Draw is used by the form engine to draw the control. As a proxy, there is no html to draw, but this is where the scripts attached to the proxy get sent to the response. This should get drawn by the auto-drawing routine, since proxies are not rendered in templates.

func (*Proxy) Init

func (p *Proxy) Init(self any, parent page.ControlI, id string)

func (*Proxy) LinkHtml

func (p *Proxy) LinkHtml(ctx context.Context,
	label string,
	actionValue string,
	attributes html5tag.Attributes,
) string

LinkHtml renders the proxy as a link. To conform to the html standard and accessibility guidelines, links should only be used to navigate away from the page, so the action of your proxy should lead to that kind of behavior. Otherwise, use ButtonHtml.

func (*Proxy) OnSubmit

func (p *Proxy) OnSubmit(action action.ActionI) page.ControlI

OnSubmit is a shortcut for adding a click event handler that is particular to buttons. It debounces the click, to prevent potential accidental multiple form submissions. All events fired after this event fires will be lost. It is intended to be used when the action will result in navigating to a new page.

func (*Proxy) TagHtml

func (p *Proxy) TagHtml(label string,
	actionValue string,
	attributes html5tag.Attributes,
	tag string,
	labelIsHtml bool,
) string

TagHtml lets you customize the tag that will be used to embed the proxy.

func (*Proxy) WrapEvent

func (p *Proxy) WrapEvent(eventName string, _ string, eventJs string, options map[string]interface{}) string

WrapEvent is an internal function to allow the control to customize its treatment of event processing.

type ProxyCreator added in v0.2.0

type ProxyCreator struct {
	// ID is the id of the proxy. Proxies do not draw, so this id will not show up in the html, but you can
	// use it to get the proxy from the page.
	ID string
	// On is a shortcut to assign a single action to an event. If you want a proxy that responds to more than
	// one event or action, use On in the ControlOptions struct
	On *event.Event
	page.ControlOptions
}

func (ProxyCreator) Create added in v0.2.0

func (c ProxyCreator) Create(ctx context.Context, parent page.ControlI) page.ControlI

type ProxyI

type ProxyI interface {
	page.ControlI
	LinkHtml(label string,
		actionValue string,
		attributes html5tag.Attributes,
	) string
	TagHtml(label string,
		actionValue string,
		attributes html5tag.Attributes,
		tag string,
		rawHtml bool,
	) string
	ButtonHtml(label string,
		eventActionValue string,
		attributes html5tag.Attributes,
		rawHtml bool,
	) string
	OnSubmit(action action.ActionI) *event.Event
}

type Repeater added in v0.2.3

type Repeater struct {
	page.ControlBase
	PagedControl
	DataManager
	// contains filtered or unexported fields
}

Repeater is an HTML control that draws repeating child items.

Repeater is similar to a table, but more general purpose. Instead of drawing inside a table tag and using columns for formatting, it draws inside a div tag (which you can change by setting the Tag value), and repeats any kind of child item.

Like a table, the child items can be based on content taken from a DataBinder. You can also limit the amount of data displayed at one time by calling DataPager() and assigning a pager control.

func GetRepeater added in v0.2.3

func GetRepeater(c page.ControlI, id string) *Repeater

GetRepeater is a convenience method to return the repeater with the given id from the page.

func NewRepeater added in v0.2.3

func NewRepeater(parent page.ControlI, id string) *Repeater

NewRepeater creates a new Repeater

func (*Repeater) Deserialize added in v0.3.0

func (r *Repeater) Deserialize(dec page.Decoder)

func (*Repeater) DrawInnerHtml added in v0.4.0

func (r *Repeater) DrawInnerHtml(ctx context.Context, w io.Writer)

DrawInnerHtml is an override to draw the individual items of the repeater.

func (*Repeater) DrawItem added in v0.2.3

func (r *Repeater) DrawItem(ctx context.Context, i int, data interface{}, w io.Writer)

func (*Repeater) DrawTag added in v0.4.0

func (r *Repeater) DrawTag(ctx context.Context, w io.Writer)

DrawTag is called by the framework to draw the tag. The Repeater overrides this to call into the DataProvider to load the table's data into memory just before drawing. The data will be unloaded after drawing.

func (*Repeater) DrawingAttributes added in v0.4.0

func (r *Repeater) DrawingAttributes(ctx context.Context) html5tag.Attributes

DrawingAttributes is an override to add attributes to the table, including not showing the table at all if there is no data to show. This will hide header and footer cells and potentially the outline of the table when there is no data in the table.

func (*Repeater) Init added in v0.2.3

func (r *Repeater) Init(self any, parent page.ControlI, id string)

Init is an internal function that enables the object-oriented pattern of calling virtual functions used by the goradd controls.

func (*Repeater) MarshalState added in v0.12.0

func (r *Repeater) MarshalState(m page.SavedState)

MarshalState is an internal function to save the state of the control

func (*Repeater) Restore added in v0.3.0

func (r *Repeater) Restore()

func (*Repeater) Serialize added in v0.3.0

func (r *Repeater) Serialize(e page.Encoder)

func (*Repeater) SetItemHtmler added in v0.2.3

func (r *Repeater) SetItemHtmler(h RepeaterHtmler) RepeaterI

SetItemHtmler sets the htmler that provides the html for each item in the repeater.

func (*Repeater) UnmarshalState added in v0.12.0

func (r *Repeater) UnmarshalState(m page.SavedState)

UnmarshalState is an internal function to restore the state of the control

type RepeaterCreator added in v0.2.3

type RepeaterCreator struct {
	// ID is the control id
	ID string
	// ItemHtmler is the object that provides the html for each item
	ItemHtmler RepeaterHtmler
	// DataProvider is the data binder for the table. It can be either a control id or a DataBinder
	DataProvider DataBinder
	// DataProviderID is the control id of the data binder for the table.
	DataProviderID string
	// Data is the actual data for the table, and should be a slice of objects
	Data interface{}
	page.ControlOptions
	// PageSize is the number of rows to include in a page
	PageSize int
	// SaveState will cause the table to remember what page it was on
	SaveState bool
}

RepeaterCreator creates a control that can be paged.

func (RepeaterCreator) Create added in v0.2.3

func (c RepeaterCreator) Create(ctx context.Context, parent page.ControlI) page.ControlI

Create is called by the framework to create a new control from the Creator. You do not normally need to call this.

func (RepeaterCreator) Init added in v0.2.3

func (c RepeaterCreator) Init(ctx context.Context, ctrl RepeaterI)

type RepeaterHtmler added in v0.2.3

type RepeaterHtmler interface {
	RepeaterHtml(ctx context.Context, r RepeaterI, i int, data interface{}, w io.Writer)
}

type RepeaterI added in v0.2.3

type RepeaterI interface {
	PagedControlI
	DrawItem(ctx context.Context, i int, data interface{}, w io.Writer)
	SetItemHtmler(h RepeaterHtmler) RepeaterI
}

type Span

type Span struct {
	Panel
}

Span is a Goradd control that is a basic "span" wrapper. Use it to style and listen to events on a span. It can also be used as the basis for more advanced javascript controls.

func GetSpan added in v0.2.1

func GetSpan(c page.ControlI, id string) *Span

GetSpan is a convenience method to return the button with the given id from the page.

func NewSpan

func NewSpan(parent page.ControlI, id string) *Span

func (*Span) DrawingAttributes

func (c *Span) DrawingAttributes(ctx context.Context) html5tag.Attributes

func (*Span) Init

func (c *Span) Init(self any, parent page.ControlI, id string)

type SpanCreator added in v0.2.0

type SpanCreator struct {
	// ID is the HTML id of the tag.
	ID string
	// Text is the content inside the span tag.
	Text string
	// TextIsHtml specifies that the content is HTML and should not be escaped.
	TextIsHtml bool
	// Children are child controls of the span.
	Children []page.Creator
	// ControlOptions are standard options you can set on any GoRADD control.
	page.ControlOptions
}

SpanCreator creates a "span" tag.

func (SpanCreator) Create added in v0.2.0

func (c SpanCreator) Create(ctx context.Context, parent page.ControlI) page.ControlI

type SpanI

type SpanI interface {
	PanelI
}

Directories

Path Synopsis
Package button includes button and button-like controls that are clickable, including things that toggle.
Package button includes button and button-like controls that are clickable, including things that toggle.
Package dialog contains dialog controls.
Package dialog contains dialog controls.
Package generator contains helper objects to describe controls to the code generator so that they can generate customizable data connectors that associate controls with data in the database.
Package generator contains helper objects to describe controls to the code generator so that they can generate customizable data connectors that associate controls with data in the database.
Package list contains list-type controls.
Package list contains list-type controls.
Package table implements various table controls.
Package table implements various table controls.
Package textbox implements textbox-like form controls.
Package textbox implements textbox-like form controls.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL