Documentation
¶
Index ¶
- Constants
- type AuthUserView
- type Controller
- func (c *Controller) Fail(err error, log string) error
- func (c *Controller) Redirect(ctx echo.Context, route string, routeParams ...any) error
- func (c *Controller) RedirectWithDetails(ctx echo.Context, route string, queryParams string, statusCode int, ...) error
- func (c *Controller) RenderJSON(ctx echo.Context, data interface{}) error
- func (c *Controller) RenderPage(ctx echo.Context, page Page) error
- func (c *Controller) RenderToHTMLBlob(ctx ctx.Context, page Page) (string, error)
- type FormSubmission
- func (f FormSubmission) FieldHasErrors(fieldName string) bool
- func (f FormSubmission) FormClass() string
- func (f FormSubmission) GetFieldErrors(fieldName string) []string
- func (f FormSubmission) GetFieldHintClass(fieldName string) string
- func (f FormSubmission) GetFieldInputClass(fieldName string) string
- func (f FormSubmission) GetFieldStatusClass(fieldName string) string
- func (f FormSubmission) HasErrors() bool
- func (f FormSubmission) IsDone() bool
- func (f *FormSubmission) Process(ctx echo.Context, form any) error
- func (f *FormSubmission) SetFieldError(fieldName string, message string)
- type LayoutComponent
- type Page
- func (p Page) Language() string
- func (p Page) StarterAlertClass(variant string) string
- func (p Page) StarterCardClass() string
- func (p Page) StarterElevationClass() string
- func (p Page) StarterIslandMountClass() string
- func (p Page) StarterKickerClass() string
- func (p Page) StarterLayoutContentClass() string
- func (p Page) StarterLayoutFooterClass() string
- func (p Page) StarterLayoutHeaderClass() string
- func (p Page) StarterLayoutShellClass() string
- func (p Page) StarterMutedColorClass() string
- func (p Page) StarterNavClass() string
- func (p Page) StarterNavItemClass(active bool) string
- func (p Page) StarterPageClass() string
- func (p Page) StarterPanelClass() string
- func (p Page) StarterPrimaryActionClass() string
- func (p Page) StarterSecondaryActionClass() string
- func (p Page) StarterStackClass() string
- func (p Page) StarterTextClass() string
- func (p Page) StarterTitleClass() string
- type Pager
- type SemanticRecipe
Constants ¶
const ( // DefaultItemsPerPage stores the default amount of items per page DefaultItemsPerPage = 20 // PageQueryKey stores the query key used to indicate the current page PageQueryKey = "page" )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AuthUserView ¶
type Controller ¶
type Controller struct {
// Container stores a services container which contains dependencies
Container *frameworkbootstrap.Container
}
Controller provides base functionality and dependencies to controllers. The proposed pattern is to embed a Controller in each individual route struct and to use the router to inject the container so your routes have access to the services within the container
func NewController ¶
func NewController(c *frameworkbootstrap.Container) Controller
NewController creates a new Controller
func (*Controller) Fail ¶
func (c *Controller) Fail(err error, log string) error
Fail is a helper to fail a request by returning a 500 error and logging the error
func (*Controller) Redirect ¶
Redirect redirects to a given route name with optional route parameters.
func (*Controller) RedirectWithDetails ¶
func (c *Controller) RedirectWithDetails(ctx echo.Context, route string, queryParams string, statusCode int, routeParams ...any) error
Redirect redirects to a given route name with optional route parameters.
func (*Controller) RenderJSON ¶
func (c *Controller) RenderJSON(ctx echo.Context, data interface{}) error
RenderJSON renders a JSON response
func (*Controller) RenderPage ¶
func (c *Controller) RenderPage(ctx echo.Context, page Page) error
RenderPage renders a Page as an HTTP response
func (*Controller) RenderToHTMLBlob ¶
RenderToHTMLBlob renders a page to HTML without returning any HTTP reponse, unlike RenderPage. It is meant to generate small blobs of HTML, for example for use in SSE events.
type FormSubmission ¶
type FormSubmission struct {
// IsSubmitted indicates if the form has been submitted
IsSubmitted bool
// Errors stores a slice of error message strings keyed by form struct field name
Errors map[string][]string
}
FormSubmission represents the state of the submission of a form, not including the form itself
func (FormSubmission) FieldHasErrors ¶
func (f FormSubmission) FieldHasErrors(fieldName string) bool
FieldHasErrors indicates if a given field on the form has any validation errors
func (FormSubmission) FormClass ¶
func (f FormSubmission) FormClass() string
func (FormSubmission) GetFieldErrors ¶
func (f FormSubmission) GetFieldErrors(fieldName string) []string
GetFieldErrors gets the errors for a given field name
func (FormSubmission) GetFieldHintClass ¶
func (f FormSubmission) GetFieldHintClass(fieldName string) string
func (FormSubmission) GetFieldInputClass ¶
func (f FormSubmission) GetFieldInputClass(fieldName string) string
func (FormSubmission) GetFieldStatusClass ¶
func (f FormSubmission) GetFieldStatusClass(fieldName string) string
GetFieldStatusClass returns an HTML class based on the status of the field
func (FormSubmission) HasErrors ¶
func (f FormSubmission) HasErrors() bool
HasErrors indicates if the submission has any validation errors
func (FormSubmission) IsDone ¶
func (f FormSubmission) IsDone() bool
IsDone indicates if the submission is considered done which is when it has been submitted and there are no errors.
func (*FormSubmission) Process ¶
func (f *FormSubmission) Process(ctx echo.Context, form any) error
Process processes a submission for a form
func (*FormSubmission) SetFieldError ¶
func (f *FormSubmission) SetFieldError(fieldName string, message string)
SetFieldError sets an error message for a given field name
type LayoutComponent ¶
type Page ¶
type Page struct {
// Base stores app-agnostic page fields/behavior owned by framework.
frameworkpage.Base
// Layout stores the templ component layout base function which will be used when the page is rendered.
Layout LayoutComponent
// Name stores the name of the page as well as the name of the template file which will be used to render
// the content portion of the layout template.
// This should match a template file located within the pages directory inside the templates directory.
// The template extension should not be included in this value.
Name string
// IsFullyOnboarded indicates whether the user is fully onboarded
IsFullyOnboarded bool
// AuthUser stores the authenticated user
AuthUser *AuthUserView
// ActiveProduct stores the active product for the profile (limited to 1 for now)
ActiveProduct domain.ProductType
Metatags struct {
// Description stores the description metatag value
Description string
// Keywords stores the keywords metatag values
Keywords []string
}
// Pager stores a pager which can be used to page lists of results
Pager Pager
// Bottom navbar is only shown if this is set. It allows flexibility for a native-like experience.
}
Page consists of all data that will be used to render a page response for a given webui. While it's not required for a controller to render a Page on a route, this is the common data object that will be passed to the templates, making it easy for all controllers to share functionality both on the back and frontend. The Page can be expanded to include anything else your app wants to support. Methods on this page also then become available in the templates, which can be more useful than the funcmap if your methods require data stored in the page, such as the appcontext.
func (Page) StarterAlertClass ¶
func (Page) StarterCardClass ¶
func (Page) StarterElevationClass ¶
func (Page) StarterIslandMountClass ¶
func (Page) StarterKickerClass ¶
func (Page) StarterLayoutContentClass ¶
func (Page) StarterLayoutFooterClass ¶
func (Page) StarterLayoutHeaderClass ¶
func (Page) StarterLayoutShellClass ¶
func (Page) StarterMutedColorClass ¶
func (Page) StarterNavClass ¶
func (Page) StarterNavItemClass ¶
func (Page) StarterPageClass ¶
func (Page) StarterPanelClass ¶
func (Page) StarterPrimaryActionClass ¶
func (Page) StarterSecondaryActionClass ¶
func (Page) StarterStackClass ¶
func (Page) StarterTextClass ¶
func (Page) StarterTitleClass ¶
type Pager ¶
type Pager struct {
// Items stores the total amount of items in the result set
Items int
// Page stores the current page number
Page int
// ItemsPerPage stores the amount of items to display per page
ItemsPerPage int
// Pages stores the total amount of pages in the result set
Pages int
// The URL to query to get more pages
URL string
}
Pager provides a mechanism to allow a user to page results via a query parameter
func (*Pager) GetNextURL ¶
func (Pager) GetOffset ¶
GetOffset determines the offset of the results in order to get the items for the current page
func (*Pager) GetPrevURL ¶
func (Pager) IsBeginning ¶
IsBeginning determines if the pager is at the beginning of the pages
type SemanticRecipe ¶
type SemanticRecipe string
SemanticRecipe names a reusable UI recipe class contract.
const ( RecipePage SemanticRecipe = "page" RecipePanel SemanticRecipe = "panel" RecipeTitle SemanticRecipe = "title" RecipeText SemanticRecipe = "text" RecipeKicker SemanticRecipe = "kicker" RecipeStack SemanticRecipe = "stack" RecipeMutedColor SemanticRecipe = "muted-color" RecipeDangerColor SemanticRecipe = "danger-color" RecipeElevationFloat SemanticRecipe = "elevation-float" RecipeButtonBase SemanticRecipe = "button-base" RecipeButtonPrimary SemanticRecipe = "button-primary" RecipeButtonSecondary SemanticRecipe = "button-secondary" RecipeFieldInput SemanticRecipe = "field-input" RecipeFieldHint SemanticRecipe = "field-hint" RecipeFieldError SemanticRecipe = "field-error" RecipeFieldSuccess SemanticRecipe = "field-success" RecipeForm SemanticRecipe = "form" RecipeAlert SemanticRecipe = "alert" RecipeAlertInfo SemanticRecipe = "alert-info" RecipeAlertSuccess SemanticRecipe = "alert-success" RecipeAlertDanger SemanticRecipe = "alert-danger" RecipeCard SemanticRecipe = "card" RecipeLayoutShell SemanticRecipe = "layout-shell" RecipeLayoutHeader SemanticRecipe = "layout-header" RecipeLayoutContent SemanticRecipe = "layout-content" RecipeIslandMount SemanticRecipe = "island-mount" )