editor

package
v0.8.2 Latest Latest
Warning

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

Go to latest
Published: Mar 11, 2025 License: BSD-3-Clause Imports: 17 Imported by: 0

Documentation

Overview

Package editor enables users to create edit templates from their entities structs so that admins can manage entities

Index

Constants

View Source
const PonzuFileStorageRoute = "/api/uploads"

Variables

View Source
var (
	SingleSelect         SelectType = "single"
	MultipleSelect       SelectType = "multiple"
	SelectOptionTemplate            = `
	<li class="mdc-list-item" role="option" data-value="@>id">
		<span class="mdc-list-item__text">"@>name"</span>
	</li>
	`
	// SelectedOptionTemplate is used on the client to render selected entry as a chip.
	// Must be synced with chip_template in multi_select.gohtml
	SelectedOptionTemplate = `` /* 458-byte string literal not displayed */

)

Functions

func Checkbox

func Checkbox(fieldName string, p interface{}, attrs map[string]string) []byte

Checkbox returns the []byte of a set of <input type="checkbox"> HTML elements wrapped in a <div> with a label. IMPORTANT: The `fieldName` argument will cause a panic if it is not exactly the string form of the struct field that this editor input is representing

func DOMCheckboxSelfClose added in v0.5.0

func DOMCheckboxSelfClose(e *Element) []byte

func DOMElement

func DOMElement(e *Element) []byte

DOMElement creates a DOM element

func DOMElementWithChildrenSelect

func DOMElementWithChildrenSelect(e *Element, children []*Element) []byte

func DOMInputSelfClose added in v0.5.0

func DOMInputSelfClose(e *Element) []byte

func FieldCollection

func FieldCollection(fieldName, label string, p interface{}, types map[string]FieldCollectionConstructor) []byte

func File

func File(publicPath, fieldName string, p interface{}, attrs map[string]string) []byte

File returns the []byte of a <input type="file"> HTML element with a label. IMPORTANT: The `fieldName` argument will cause a panic if it is not exactly the string form of the struct field that this editor input is representing

func FileRepeater

func FileRepeater(fieldName string, p interface{}, attrs map[string]string) []byte

FileRepeater returns the []byte of a <input type="file"> HTML element with a label. It also includes repeat controllers (+ / -) so the element can be dynamically multiplied or reduced. IMPORTANT: The `fieldName` argument will cause a panic if it is not exactly the string form of the struct field that this editor input is representing

func Form

func Form(post Editable, fields ...Field) ([]byte, error)

Form takes editable entities and any number of Field funcs to describe the edit page for any entities struct added by a user

func Input

func Input(fieldName string, p interface{}, attrs map[string]string, args *FieldArgs) []byte

Input returns the []byte of an <input> HTML element with a label. IMPORTANT: The `fieldName` argument will cause a panic if it is not exactly the string form of the struct field that this editor input is representing

type Person struct {
	item.Item
	editor editor.Editor

	Name string `json:"name"`
	//...
}

func (p *Person) MarshalEditor() ([]byte, error) {
	view, err := editor.Form(p,
		editor.Field{
			Template: editor.Input("Name", p, map[string]string{
				"label":       "Name",
				"type":        "text",
				"placeholder": "Enter the Name here",
			}),
		}
	)
}

func InputRepeater

func InputRepeater(fieldName string, p interface{}, attrs map[string]string) []byte

func MultiSelectWithDataProvider added in v0.6.0

func MultiSelectWithDataProvider(fieldName string, p interface{}, attrs map[string]string, args *FieldArgs, dataProvider interface{}) []byte

func Nested

func Nested(fieldName string, p interface{}, args *FieldArgs, fields ...Field) []byte

func NestedRepeater

func NestedRepeater(publicPath, fieldName string, p interface{}, args *FieldArgs, nestedFieldGenerator NestedFieldGenerator) []byte

func ReferenceSelect added in v0.6.0

func ReferenceSelect(
	publicPath,
	fieldName string,
	p interface{},
	attrs map[string]string,
	args *FieldArgs,
	contentType string,
) []byte

ReferenceSelect returns the []byte of a <select> HTML element plus internal <options> with a label. IMPORTANT: The `fieldName` argument will cause a panic if it is not exactly the string form of the struct field that this editor input is representing

func ReferenceSelectRepeater added in v0.6.0

func ReferenceSelectRepeater(
	publicPath,
	fieldName string,
	p interface{},
	attrs map[string]string,
	args *FieldArgs,
	contentType string,
) []byte

ReferenceSelectRepeater returns the []byte of a <select> HTML element plus internal <options> with a label. It also includes repeat controllers (+ / -) so the element can be dynamically multiplied or reduced. IMPORTANT: The `fieldName` argument will cause a panic if it is not exactly the string form of the struct field that this editor input is representing

func RepeatController

func RepeatController(fieldName string, p interface{}, inputSelector, cloneSelector string) []byte

RepeatController generates the javascript to control any repeatable form element in an editor based on its type, field name and HTML tag name

func Richtext

func Richtext(fieldName string, p interface{}, attrs map[string]string, args *FieldArgs) []byte

Richtext returns the []byte of a rich text editor (provided by http://summernote.org/) with a label. IMPORTANT: The `fieldName` argument will cause a panic if it is not exactly the string form of the struct field that this editor input is representing

func Select

func Select(fieldName string, p interface{}, attrs map[string]string, options []string, args *FieldArgs) []byte

Select returns the []byte of a <select> HTML element plus internal <options> with a label. IMPORTANT: The `fieldName` argument will cause a panic if it is not exactly the string form of the struct field that this editor input is representing

func SelectWithDataProvider added in v0.6.0

func SelectWithDataProvider(fieldName string, p interface{}, attrs map[string]string, args *FieldArgs, dataProvider interface{}) []byte

func TagNameFromStructField

func TagNameFromStructField(name string, post interface{}, args *FieldArgs) string

func TagNameFromStructFieldMulti

func TagNameFromStructFieldMulti(name string, i int, post interface{}) string

TagNameFromStructFieldMulti calls TagNameFromStructField and formats is for use with gorilla/schema due to the format in which gorilla/schema expects form names to be when one is associated with multiple values, we need to output the name as such. Ex. 'category.0', 'category.1', 'category.2' and so on.

func Tags

func Tags(fieldName string, p interface{}, attrs map[string]string) []byte

Tags returns the []byte of a tag input (in the style of Materialze 'Chips') with a label. IMPORTANT: The `fieldName` argument will cause a panic if it is not exactly the string form of the struct field that this editor input is representing

func Textarea

func Textarea(fieldName string, p interface{}, attrs map[string]string) []byte

Textarea returns the []byte of a <textarea> HTML element with a label. IMPORTANT: The `fieldName` argument will cause a panic if it is not exactly the string form of the struct field that this editor input is representing

func Timestamp

func Timestamp(fieldName string, p interface{}, attrs map[string]string) []byte

Timestamp returns the []byte of an <input> HTML element with a label. IMPORTANT: The `fieldName` argument will cause a panic if it is not exactly the string form of the struct field that this editor input is representing

func ValueByName

func ValueByName(name string, post interface{}, args *FieldArgs) reflect.Value

func ValueFromStructField

func ValueFromStructField(name string, post interface{}, args *FieldArgs) interface{}

ValueFromStructField returns the value of a field in a struct

Types

type ContentMetadata

type ContentMetadata struct {
	TypeName string
}

type Editable

type Editable interface {
	MarshalEditor(publicPath string) ([]byte, error)
}

Editable ensures data is editable

type Editor

type Editor struct {
	ViewBuf *bytes.Buffer
}

Editor is a view containing fields to manage entities

type Element

type Element struct {
	TagName string
	Attrs   map[string]string
	Name    string
	Label   string
	Data    string
	ViewBuf *bytes.Buffer
}

Element is a basic struct for representing DOM elements

func NewElement

func NewElement(tagName, label, fieldName string, p interface{}, attrs map[string]string, args *FieldArgs) *Element

NewElement returns an Element with Name and Data already processed from the fieldName and entities interface provided

type Field

type Field struct {
	View []byte
}

Field is used to create the editable view for a field within a particular entities struct

type FieldArgs

type FieldArgs struct {
	Parent                 string
	TypeName               string
	PositionalPlaceHolders []string
}

type FieldCollectionConstructor added in v0.8.0

type FieldCollectionConstructor func(interface{}, *FieldArgs, ...Field) []byte

type MultiSelectData added in v0.6.0

type MultiSelectData struct {
	SelectData
	Selected []string
}

type NestedFieldGenerator added in v0.7.1

type NestedFieldGenerator func(v interface{}, f *FieldArgs) (string, []Field)

type ReferenceSelectDataProvider added in v0.6.0

type ReferenceSelectDataProvider struct {
	ContentType            string
	PublicPath             string
	OptionTemplate         string
	SelectedOptionTemplate string
	SelectType
}

func (*ReferenceSelectDataProvider) RenderClientOptionsProvider added in v0.6.0

func (provider *ReferenceSelectDataProvider) RenderClientOptionsProvider(w io.Writer, selector string) error

type SelectClientOptionsProvider added in v0.6.0

type SelectClientOptionsProvider interface {
	RenderClientOptionsProvider(w io.Writer, selector string) error
}

type SelectData added in v0.6.0

type SelectData struct {
	Name        string
	Label       string
	Placeholder string
	Value       string
	Options     []SelectOption
	Selector    string
}

type SelectInitialOptionsProvider added in v0.6.0

type SelectInitialOptionsProvider interface {
	GetInitialOptions() ([]SelectOption, error)
}

type SelectOption added in v0.7.0

type SelectOption struct {
	Value string
	Label string
}

type SelectType added in v0.6.0

type SelectType string

type Tab

type Tab struct {
	Name       string
	Icon       string
	ClassNames []string
	Content    []byte
}

Jump to

Keyboard shortcuts

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