@moxijs/ui - v0.3.5
    Preparing search index...

    Class UIButton

    Interactive button component with hover, press, and disabled states. Supports solid color or sprite-based backgrounds, and keyboard focus.

    // Basic button with canvas text
    const btn = new UIButton({
    label: 'Click Me',
    width: 150,
    height: 40,
    backgroundColor: 0x4a90e2,
    textColor: 0xffffff,
    onClick: () => console.log('clicked')
    });

    // Button with MSDF text for crisp scaling
    const msdfBtn = new UIButton({
    label: 'Crisp Button',
    fontFamily: 'PixelOperator8',
    fontType: 'msdf',
    onClick: () => console.log('clicked')
    });

    // Sprite-based button
    const spriteBtn = new UIButton({
    label: 'Play',
    spriteBackground: {
    normal: normalTexture,
    hover: hoverTexture,
    pressed: pressedTexture
    }
    });

    // When width/height are provided, layout() is called automatically:
    const btn = new UIButton({ label: 'Click Me', width: 100, height: 32 });
    myContainer.addChild(btn.container); // Ready to use immediately

    Hierarchy (View Summary)

    Index

    Constructors

    Properties

    boxModel: BoxModel

    The box model defining this component's sizing and spacing

    computedLayout: ComputedLayout

    The computed layout after measurement and positioning

    container: Container

    The PIXI container that holds this component's visual representation

    enabled: boolean = true

    Whether this component is enabled for interaction

    focused: boolean = false

    Internal focus state

    focusRing?: Graphics

    Focus ring for visual focus indication

    fontConfig?: UIFontConfig

    Font configuration for this component. Children inherit these settings (like CSS font inheritance). Set via setFontConfig() and resolved via getInheritedFont* methods.

    hovered: boolean = false

    Hover state (for components that track hover)

    id: string

    Unique identifier for this component in the layout tree

    layoutConfig?: UILayoutConfig

    Layout configuration for this component. Children inherit these defaults unless overridden.

    layoutDirty: boolean = true

    Flag indicating if layout needs to be recalculated

    layoutEngine: LayoutEngine

    Layout engine service for calculating layouts Initialized in base class so all components have access to layout calculations

    parent?: UIComponent

    Reference to parent component (if any)

    pressed: boolean = false

    Pressed state (for components that track press)

    tabIndex: number = -1

    Tab index for focus order (-1 means not focusable by tab)

    themeResolver?: ThemeResolver

    Optional theme resolver for color resolution Components can set this to enable automatic theming

    visible: boolean = true

    Whether this component is currently visible

    Accessors

    • get x(): number

      Gets the x position of this component

      Returns number

    • set x(value: number): void

      Sets the x position of this component

      Parameters

      • value: number

      Returns void

    • get y(): number

      Gets the y position of this component

      Returns number

    • set y(value: number): void

      Sets the y position of this component

      Parameters

      • value: number

      Returns void

    Methods

    • Gets the global bounds of this component (position relative to stage)

      Returns { height: number; width: number; x: number; y: number }

    • Helper to make container interactive with common settings Components can call this in setupInteractivity() or override for custom behavior

      Parameters

      • cursor: string = 'pointer'

        Cursor type ('pointer', 'text', 'default', etc.)

      Returns void

    • Measure the intrinsic content size of this component. Called by the flex layout engine during Pass 2 (measure).

      Override in subclasses that have intrinsic content size. For containers that size based on children, return { width: 0, height: 0 }.

      Returns { height: number; width: number }

      The content size in pixels

    • Resolve a color from theme with optional override Simplifies color resolution across all components

      Parameters

      • type: "background" | "border" | "text" | "focus" | "disabled" | "selected" | "hover"
      • Optionaloverride: number

      Returns number

    • Resolve a control-specific color with optional override

      Parameters

      • controlType: "button" | "select" | "checkbox" | "textInput" | "textArea" | "radio"
      • type: "background" | "border" | "text"
      • Optionaloverride: number

      Returns number

    • Resolves a layout setting by walking up the parent chain. Allows components to adapt to their context (e.g. using parent's default padding).

      Type Parameters

      • K extends keyof UILayoutConfig

      Parameters

      • key: K

        The layout config key to resolve

      • OptionallocalOverride: UILayoutConfig[K]

        Optional local override value

      Returns UILayoutConfig[K]

      The resolved value or undefined

    • Sets align-self property

      Parameters

      • align: "auto" | "center" | "end" | "start" | "stretch"

      Returns void

    • Enable or disable the button.

      Parameters

      • enabled: boolean

      Returns void

    • Sets layout configuration for this component. Children will inherit these settings.

      Parameters

      • config: UILayoutConfig

      Returns void