package miaou-core
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
Miaou core/widgets (no drivers, no SDL)
Install
dune-project
Dependency
Authors
Maintainers
Sources
v0.5.2.tar.gz
md5=60a3b9f181f24572a06a9492532bfdda
sha512=fcc35a275066be2900e6201782faf47503076fa4640f08cf78067835a6f447b74613009e55b2ac799adb7ca46f1bffa261fc5971753f2cc3c6bef327511c7ef6
doc/src/miaou_widgets_input/button_widget.ml.html
Source file button_widget.ml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44(******************************************************************************) (* *) (* SPDX-License-Identifier: MIT *) (* Copyright (c) 2025 Nomadic Labs <contact@nomadic-labs.com> *) (* Copyright (c) 2026 Mathias Bourgoin <mathias.bourgoin@atacama.tech> *) (* *) (******************************************************************************) type t = {label : string; on_click : unit -> unit; disabled : bool} let create ?(disabled = false) ~label ~on_click () = {label; on_click; disabled} let render t ~focus = let open Miaou_widgets_display.Widgets in let base = "[ " ^ t.label ^ " ]" in (* Use themed_selection for focus state instead of hardcoded colors *) let decorated = if focus then themed_selection (bold base) else base in if t.disabled then themed_muted decorated else decorated (** New unified key handler returning Key_event.result *) let on_key t ~key = if t.disabled then (t, Miaou_interfaces.Key_event.Bubble) else match key with | "Enter" | " " -> t.on_click () ; (t, Miaou_interfaces.Key_event.Handled) | key -> (* Mouse click triggers button - but we can't verify bounds without knowing our position, so we trust the dispatcher to only send clicks that are relevant to us. For standalone buttons, any click when focused should activate. *) if Miaou_helpers.Mouse.is_click key then ( t.on_click () ; (t, Miaou_interfaces.Key_event.Handled)) else (t, Miaou_interfaces.Key_event.Bubble) (** @deprecated Use [on_key] instead. Kept for backward compatibility. *) let handle_key t ~key = let t', result = on_key t ~key in (t', Miaou_interfaces.Key_event.to_bool result) let () = Miaou_registry.register ~name:"button" ~mli:[%blob "button_widget.mli"] ()
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>