Files
nebula/pkg/wa/tooltip.templ

250 lines
7.1 KiB
Plaintext
Raw Normal View History

2026-01-01 14:41:31 -05:00
// Code generated by wa-generator. DO NOT EDIT.
// Source: Web Awesome wa-tooltip
package wa
import (
"github.com/a-h/templ"
)
// Tooltips display additional information based on a specific action.
//
// Web Awesome component: <wa-tooltip>
// TooltipProps holds all properties for the wa-tooltip component
type TooltipProps struct {
// The preferred placement of the tooltip. Note that the actual placement may vary as needed to keep the tooltip
// Valid values: "top", "top-start", "top-end", "right", "right-start", "right-end", "bottom", "bottom-start", "bottom-end", "left", "left-start", "left-end"
Placement string `attr:"placement"`
// Disables the tooltip so it won't show when triggered.
Disabled bool `attr:"disabled"`
// The distance in pixels from which to offset the tooltip away from its target.
Distance float64 `attr:"distance"`
// Indicates whether or not the tooltip is open. You can use this in lieu of the show/hide methods.
Open bool `attr:"open"`
// The distance in pixels from which to offset the tooltip along its target.
Skidding float64 `attr:"skidding"`
// The amount of time to wait before showing the tooltip when the user mouses in.
ShowDelay float64 `attr:"show-delay"`
// The amount of time to wait before hiding the tooltip when the user mouses out..
HideDelay float64 `attr:"hide-delay"`
// Controls how the tooltip is activated. Possible options include click, hover, focus, and manual. Multiple
Trigger string `attr:"trigger"`
// Removes the arrow from the tooltip.
WithoutArrow bool `attr:"without-arrow"`
//
For string `attr:"for"`
// Events
// Emitted when the tooltip begins to show.
OnShow string `attr:"x-on:wa-show"`
// Emitted after the tooltip has shown and all animations are complete.
OnAfterShow string `attr:"x-on:wa-after-show"`
// Emitted when the tooltip begins to hide.
OnHide string `attr:"x-on:wa-hide"`
// Emitted after the tooltip has hidden and all animations are complete.
OnAfterHide string `attr:"x-on:wa-after-hide"`
// Slots contains named slot content
Slots TooltipSlots
// Attrs contains additional HTML attributes
Attrs templ.Attributes
}
// TooltipBuilder provides a fluent API for constructing TooltipProps
type TooltipBuilder struct {
props TooltipProps
}
// NewTooltip creates a new builder for wa-tooltip
func NewTooltip() *TooltipBuilder {
return &TooltipBuilder{}
}
// Placement sets the placement attribute
// The preferred placement of the tooltip. Note that the actual placement may vary as needed to keep the tooltip
func (b *TooltipBuilder) Placement(v string) *TooltipBuilder {
b.props.Placement = v
return b
}
// Disabled sets the disabled attribute
// Disables the tooltip so it won't show when triggered.
func (b *TooltipBuilder) Disabled(v bool) *TooltipBuilder {
b.props.Disabled = v
return b
}
// Distance sets the distance attribute
// The distance in pixels from which to offset the tooltip away from its target.
func (b *TooltipBuilder) Distance(v float64) *TooltipBuilder {
b.props.Distance = v
return b
}
// Open sets the open attribute
// Indicates whether or not the tooltip is open. You can use this in lieu of the show/hide methods.
func (b *TooltipBuilder) Open(v bool) *TooltipBuilder {
b.props.Open = v
return b
}
// Skidding sets the skidding attribute
// The distance in pixels from which to offset the tooltip along its target.
func (b *TooltipBuilder) Skidding(v float64) *TooltipBuilder {
b.props.Skidding = v
return b
}
// ShowDelay sets the show-delay attribute
// The amount of time to wait before showing the tooltip when the user mouses in.
func (b *TooltipBuilder) ShowDelay(v float64) *TooltipBuilder {
b.props.ShowDelay = v
return b
}
// HideDelay sets the hide-delay attribute
// The amount of time to wait before hiding the tooltip when the user mouses out..
func (b *TooltipBuilder) HideDelay(v float64) *TooltipBuilder {
b.props.HideDelay = v
return b
}
// Trigger sets the trigger attribute
// Controls how the tooltip is activated. Possible options include click, hover, focus, and manual. Multiple
func (b *TooltipBuilder) Trigger(v string) *TooltipBuilder {
b.props.Trigger = v
return b
}
// WithoutArrow sets the without-arrow attribute
// Removes the arrow from the tooltip.
func (b *TooltipBuilder) WithoutArrow(v bool) *TooltipBuilder {
b.props.WithoutArrow = v
return b
}
// For sets the for attribute
func (b *TooltipBuilder) For(v string) *TooltipBuilder {
b.props.For = v
return b
}
// OnShow sets the handler for wa-show event
// Emitted when the tooltip begins to show.
func (b *TooltipBuilder) OnShow(handler string) *TooltipBuilder {
b.props.OnShow = handler
return b
}
// OnAfterShow sets the handler for wa-after-show event
// Emitted after the tooltip has shown and all animations are complete.
func (b *TooltipBuilder) OnAfterShow(handler string) *TooltipBuilder {
b.props.OnAfterShow = handler
return b
}
// OnHide sets the handler for wa-hide event
// Emitted when the tooltip begins to hide.
func (b *TooltipBuilder) OnHide(handler string) *TooltipBuilder {
b.props.OnHide = handler
return b
}
// OnAfterHide sets the handler for wa-after-hide event
// Emitted after the tooltip has hidden and all animations are complete.
func (b *TooltipBuilder) OnAfterHide(handler string) *TooltipBuilder {
b.props.OnAfterHide = handler
return b
}
// Attr adds a custom HTML attribute
func (b *TooltipBuilder) Attr(name, value string) *TooltipBuilder {
if b.props.Attrs == nil {
b.props.Attrs = templ.Attributes{}
}
b.props.Attrs[name] = value
return b
}
// Attrs merges multiple attributes
func (b *TooltipBuilder) Attrs(attrs templ.Attributes) *TooltipBuilder {
if b.props.Attrs == nil {
b.props.Attrs = templ.Attributes{}
}
for k, v := range attrs {
b.props.Attrs[k] = v
}
return b
}
// Props returns the built properties
func (b *TooltipBuilder) Props() TooltipProps {
return b.props
}
// Build returns the props (alias for Props for semantic clarity)
func (b *TooltipBuilder) Build() TooltipProps {
return b.props
}
// Tooltip renders the wa-tooltip component
templ Tooltip(props TooltipProps) {
<wa-tooltip
if props.Placement != "" {
placement={ props.Placement }
}
if props.Disabled {
disabled
}
if props.Distance != 0 {
distance={ templ.Sprintf("%v", props.Distance) }
}
if props.Open {
open
}
if props.Skidding != 0 {
skidding={ templ.Sprintf("%v", props.Skidding) }
}
if props.ShowDelay != 0 {
show-delay={ templ.Sprintf("%v", props.ShowDelay) }
}
if props.HideDelay != 0 {
hide-delay={ templ.Sprintf("%v", props.HideDelay) }
}
if props.Trigger != "" {
trigger={ props.Trigger }
}
if props.WithoutArrow {
without-arrow
}
if props.For != "" {
for={ props.For }
}
if props.OnShow != "" {
x-on:wa-show={ props.OnShow }
}
if props.OnAfterShow != "" {
x-on:wa-after-show={ props.OnAfterShow }
}
if props.OnHide != "" {
x-on:wa-hide={ props.OnHide }
}
if props.OnAfterHide != "" {
x-on:wa-after-hide={ props.OnAfterHide }
}
{ props.Attrs... }
>
{ children... }
</wa-tooltip>
}
// TooltipFunc renders with a builder function for inline configuration
templ TooltipFunc(fn func(*TooltipBuilder)) {
{{ b := NewTooltip(); fn(b) }}
@Tooltip(b.Props()) {
{ children... }
}
}