A labelled date (and optional time) field: label left, value box right. Clicking the box opens a calendar popup on UIRoot.popupLayer behind a click-blocking backdrop (Escape or an outside click closes it). Navigate months with the header arrows and click a day to pick it; with showTime the popup adds hour/minute steppers and a Set button, otherwise a day click commits immediately.

Values are plain Haxe Dates; the field shows YYYY-MM-DD (plus HH:MM when showTime).

Constructor

new(label:String, width:Float, ?value:Date, ?onSelect:Date ‑> Void)

Parameters:

label

the row text on the left

width

layout width (the value box sits at the right edge)

value

the initial value (defaults to now)

onSelect

fired when a value is committed

Variables

controlWidth:Float

Width of the value box on the right; the label uses the remaining row width.

@:value("")fallback:String = ""

@:value(12)fontSize:Int = 12

@:value(null)key:String = null

label:String

@:value(false)showTime:Bool = false

Show hour/minute steppers and require a Set click to commit.

read onlyvalue:Date

The selected value.

@:value(null)onSelect:Date ‑> Void = null

Fired when a value is committed (day click, or Set with showTime).

Methods

closePopup():Void

Closes the calendar popup (no value change).

localize(key:String, fallback:String):Void

Switches the label to a localized string.

Parameters:

key

the translation key

fallback

the source-language text

setValue(value:Date):Void

Sets the value without firing onSelect.

Parameters:

value

the new date/time

Inherited Variables

Defined by UIComponent

@:value(true)enabled:Bool = true

Disabled widgets ignore the pointer and typically render dimmed.

@:value(0)read onlyh:Float = 0

Layout height in UI units.

@:value(MouseCursor.BUTTON)hoverCursor:MouseCursor = MouseCursor.BUTTON

Native cursor while hovering (interactive widgets; null keeps the arrow).

@:value(false)read onlyhovered:Bool = false

true while the cursor is over this widget.

@:value(false)longPressable:Bool = false

Opts a subclass that overrides onRightPress (without setting onRightClick) into long-press-as-right-click on touch. Widgets with onRightClick set are included automatically.

@:value(null)onClick:() ‑> Void = null

Fired on a completed click (press + release on this widget). Requires an interactive widget.

@:value(null)onHover:() ‑> Void = null

Fired when the cursor first enters this widget (hover-driven descriptions/previews). Interactive widgets only.

@:value(null)onRightClick:() ‑> Void = null

Fired on a right mouse press over this widget (context menus). Only interactive widgets receive pointer events, so this never fires on passive widgets like UILabel/UIPanel — attach it to a UIButton (or another interactive widget) instead. On touch, a long-press fires the same path (see UIRoot.longPressMs).

@:value(false)read onlypressed:Bool = false

true while a press that started here is held.

@:value(null)tooltip:String = null

Optional tooltip text (already-localized or a fixed string).

@:value(null)tooltipShortcut:String = null

Optional right-aligned shortcut hint rendered in the tooltip.

@:value(0)read onlyw:Float = 0

Layout width in UI units (independent of DisplayObject's content-derived width).

Inherited Methods

Defined by UIComponent

invalidate():Void

Schedules a repaint for the next frame (cheap; deduplicated).

resize(width:Float, height:Float):Void

Sets the layout size and repaints when it changed.

Parameters:

width

the new layout width in UI units

height

the new layout height in UI units