pub trait Decorate: Sized + Piece {
Show 35 methods
// Provided methods
fn id(self, id: impl Into<String>) -> AnyPiece { ... }
fn id_of(self, id: impl Fn() -> String + 'static) -> AnyPiece { ... }
fn id_keyed(self, prefix: &'static str, key: impl Display) -> AnyPiece { ... }
fn tweak(self, f: impl FnOnce(RNode) + 'static) -> AnyPiece { ... }
fn selectable(self) -> AnyPiece { ... }
fn native_ref(self, r: &NativeRef) -> AnyPiece { ... }
fn padding(self, insets: impl IntoInsets) -> AnyPiece { ... }
fn max_width(self, max: f64) -> AnyPiece { ... }
fn frame(self, width: f64, height: f64) -> AnyPiece { ... }
fn width(self, width: f64) -> AnyPiece { ... }
fn height(self, height: f64) -> AnyPiece { ... }
fn a11y(
self,
f: impl FnOnce(A11yBuilder) -> A11yBuilder + 'static,
) -> AnyPiece { ... }
fn on_tap(self, f: impl Fn() + 'static) -> AnyPiece { ... }
fn focused<M>(self, binding: impl IntoFocusBinding<M>) -> AnyPiece { ... }
fn context_menu(self, items: Vec<MenuEntry>) -> AnyPiece { ... }
fn on_drag(self, f: impl Fn(Drag) + 'static) -> AnyPiece { ... }
fn background<M>(self, color: impl IntoReactive<Color, M>) -> AnyPiece { ... }
fn corner_radius(self, radius: f64) -> AnyPiece { ... }
fn opacity<M>(self, opacity: impl IntoReactive<f64, M>) -> AnyPiece { ... }
fn transform<M>(self, t: impl IntoReactive<Transform, M>) -> AnyPiece { ... }
fn scale<M>(self, factor: impl IntoReactive<f64, M>) -> AnyPiece { ... }
fn rotation<M>(self, degrees: impl IntoReactive<f64, M>) -> AnyPiece { ... }
fn translation<Mx, My>(
self,
x: impl IntoReactive<f64, Mx>,
y: impl IntoReactive<f64, My>,
) -> AnyPiece { ... }
fn animation(self, anim: AnimSpec) -> AnyPiece { ... }
fn modifier(self, m: impl Modifier) -> AnyPiece { ... }
fn overlay(self, over: impl Piece) -> AnyPiece { ... }
fn overlay_aligned(self, align: Alignment, over: impl Piece) -> AnyPiece { ... }
fn grow(self) -> AnyPiece { ... }
fn grow_w(self) -> AnyPiece { ... }
fn grow_h(self) -> AnyPiece { ... }
fn grid_span(self, n: usize) -> AnyPiece { ... }
fn grid_align(self, a: Alignment) -> AnyPiece { ... }
fn defers_system_gestures(self, edges: Edges) -> AnyPiece { ... }
fn interactive_dismiss_disabled(self) -> AnyPiece { ... }
fn any(self) -> AnyPiece { ... }
}Provided Methods§
Sourcefn id(self, id: impl Into<String>) -> AnyPiece
fn id(self, id: impl Into<String>) -> AnyPiece
Stable element identifier: a11y identifier + dayscript locator + lint uniqueness (§5.5).
Sourcefn id_of(self, id: impl Fn() -> String + 'static) -> AnyPiece
fn id_of(self, id: impl Fn() -> String + 'static) -> AnyPiece
Reactive element id — the id for rows inside a recycling list. A plain
id is assigned once at build, but a recycled cell REBINDS to different
items over its life (and drag-to-reorder rebinds eagerly), so a static item-derived id
keeps naming the first-bound item. This variant re-registers whenever the closure’s
value changes — read your ItemSlot inside it:
.id_of(move || format!("row-remove-{}", slot.key())).
Sourcefn id_keyed(self, prefix: &'static str, key: impl Display) -> AnyPiece
fn id_keyed(self, prefix: &'static str, key: impl Display) -> AnyPiece
Keyed id for collection items: rendered prefix:key (§5.5).
Sourcefn tweak(self, f: impl FnOnce(RNode) + 'static) -> AnyPiece
fn tweak(self, f: impl FnOnce(RNode) + 'static) -> AnyPiece
Apply a tweak: f runs once at mount, after the native widget exists, with the
realized node (docs/tweaks.md). Reach the typed native handle through the compiled
backend’s ext accessor (day_appkit::with_native, day_gtk::with_native, …) — or apply
a packaged day-tweak-* crate’s modifier instead of calling this directly. If the native
change affects the widget’s intrinsic size, follow it with
day_core::invalidate_size. Day may overwrite managed properties (title, value,
enabled, frame, a11y) on its next patch; unmanaged properties are stable.
Sourcefn selectable(self) -> AnyPiece
fn selectable(self) -> AnyPiece
Make this piece’s text user-selectable — the reader can select and copy it
(docs/text.md). Most useful on a label: text is NOT selectable by default
on any backend, matching each platform’s native behavior. Applied to the piece’s own
widget, so on a container it makes all the text within it selectable.
Best-effort: a backend with a native selection affordance for the widget honors it (AppKit, UIKit-less desktop toolkits, GTK, Qt, XAML, HarmonyOS, Android, web); one without leaves the text unselectable rather than erroring. Selection visuals and the copy shortcut are the platform’s own. Unmanaged — set once at mount, and it survives Day’s text updates.
Sourcefn native_ref(self, r: &NativeRef) -> AnyPiece
fn native_ref(self, r: &NativeRef) -> AnyPiece
Capture a NativeRef to this piece’s realized node for later imperative access
(docs/tweaks.md). The ref clears automatically when the piece’s scope is disposed.
fn padding(self, insets: impl IntoInsets) -> AnyPiece
Sourcefn max_width(self, max: f64) -> AnyPiece
fn max_width(self, max: f64) -> AnyPiece
Cap this piece’s width at max points: the child is never PROPOSED more, so text
wraps inside the cap (chat bubbles, readable columns) while narrower content hugs.
fn frame(self, width: f64, height: f64) -> AnyPiece
Sourcefn width(self, width: f64) -> AnyPiece
fn width(self, width: f64) -> AnyPiece
Fix this piece’s WIDTH to width points while its height stays flexible (hugging its content
or filling on the cross axis). The single-axis complement to Self::frame — e.g. a
fixed-width sidebar pane in a row whose height fills the window.
Sourcefn height(self, height: f64) -> AnyPiece
fn height(self, height: f64) -> AnyPiece
Fix this piece’s HEIGHT to height points while its width stays flexible. The single-axis
complement to Self::frame — e.g. a fixed-height header/toolbar bar that fills its width.
fn a11y(self, f: impl FnOnce(A11yBuilder) -> A11yBuilder + 'static) -> AnyPiece
Sourcefn on_tap(self, f: impl Fn() + 'static) -> AnyPiece
fn on_tap(self, f: impl Fn() + 'static) -> AnyPiece
Fire when this piece is tapped (bounding-box; shapes override with path-precise testing).
Sourcefn focused<M>(self, binding: impl IntoFocusBinding<M>) -> AnyPiece
fn focused<M>(self, binding: impl IntoFocusBinding<M>) -> AnyPiece
Bind this control’s keyboard focus to a signal (docs/focus.md), two-way like every other
binding: native focus changes write the signal; writing the signal moves focus. Takes a
Signal<bool> for one control, or (Signal<Option<K>>, K::Variant) binding one control
of a group — writing false/None resigns focus (dismissing the soft keyboard on
mobile). Focus applies asynchronously: a write is a request, resolved on the next turn,
and the signal always ends up reflecting what the platform actually did.
Attach a context menu, shown with the platform’s native affordance on secondary-click (desktop)
or long-press (mobile). Items are built with menu_item/sub_menu/menu_role/
menu_separator. Passing an empty Vec removes any menu.
Sourcefn on_drag(self, f: impl Fn(Drag) + 'static) -> AnyPiece
fn on_drag(self, f: impl Fn(Drag) + 'static) -> AnyPiece
Fire on each phase of a drag over this piece.
Sourcefn background<M>(self, color: impl IntoReactive<Color, M>) -> AnyPiece
fn background<M>(self, color: impl IntoReactive<Color, M>) -> AnyPiece
Fill the piece’s bounds with a solid color painted behind it — a message-bubble / card /
badge surface. Accepts a constant Color, a Signal<Color>, or a Fn() -> Color; a
reactive color repaints the surface when its source changes. Wraps the piece in a native
container that carries the fill, so it composes with Self::corner_radius for a rounded
colored surface and with Self::padding for interior inset.
Sourcefn corner_radius(self, radius: f64) -> AnyPiece
fn corner_radius(self, radius: f64) -> AnyPiece
Round the piece’s corners to radius points, clipping its background and content to the
rounded rectangle. Compose after Self::background for a rounded colored surface, or use
alone to round a clipped child (e.g. an avatar image).
Sourcefn opacity<M>(self, opacity: impl IntoReactive<f64, M>) -> AnyPiece
fn opacity<M>(self, opacity: impl IntoReactive<f64, M>) -> AnyPiece
Animate/set the piece’s opacity (0.0 transparent … 1.0 opaque). Wrapped in a native
layer so it composes with .background; the change animates when made inside
with_animation or under a .animation ancestor (§8.4).
Sourcefn transform<M>(self, t: impl IntoReactive<Transform, M>) -> AnyPiece
fn transform<M>(self, t: impl IntoReactive<Transform, M>) -> AnyPiece
Apply an animatable Transform (translate/scale/rotate about the center) — the cheap
movement/scaling channel that never triggers relayout (§8.4). Prefer this over .offset
for animated motion.
Sourcefn scale<M>(self, factor: impl IntoReactive<f64, M>) -> AnyPiece
fn scale<M>(self, factor: impl IntoReactive<f64, M>) -> AnyPiece
Uniformly scale the piece by factor about its center (animatable). Convenience over
Self::transform.
Sourcefn rotation<M>(self, degrees: impl IntoReactive<f64, M>) -> AnyPiece
fn rotation<M>(self, degrees: impl IntoReactive<f64, M>) -> AnyPiece
Rotate the piece by degrees clockwise about its center (animatable).
Sourcefn translation<Mx, My>(
self,
x: impl IntoReactive<f64, Mx>,
y: impl IntoReactive<f64, My>,
) -> AnyPiece
fn translation<Mx, My>( self, x: impl IntoReactive<f64, Mx>, y: impl IntoReactive<f64, My>, ) -> AnyPiece
Translate the piece by (x, y) points WITHOUT relayout (animatable) — the
animation-friendly sibling of .offset.
Sourcefn animation(self, anim: AnimSpec) -> AnyPiece
fn animation(self, anim: AnimSpec) -> AnyPiece
Attach an implicit animation (§8.4): changes to this piece’s — and its descendants’ —
animatable properties animate with anim even outside a with_animation. SwiftUI’s
.animation. The ambient with_animation takes precedence when both apply.
Sourcefn modifier(self, m: impl Modifier) -> AnyPiece
fn modifier(self, m: impl Modifier) -> AnyPiece
Apply a Modifier — or, via the blanket impl, a plain FnOnce(AnyPiece) -> AnyPiece
closure — to this piece. Pure composition: content.modifier(m) == m.apply(content.any()).
Sourcefn overlay(self, over: impl Piece) -> AnyPiece
fn overlay(self, over: impl Piece) -> AnyPiece
Draw over on top of this piece, centered, WITHOUT affecting layout size — a badge /
annotation overlay. self is the sizing content (bottom of the z-order); over is proposed
self’s size and drawn on top. For an explicit alignment use Self::overlay_aligned; for
a stack that sizes to the UNION of its children use zstack.
Sourcefn overlay_aligned(self, align: Alignment, over: impl Piece) -> AnyPiece
fn overlay_aligned(self, align: Alignment, over: impl Piece) -> AnyPiece
Self::overlay with an explicit Alignment for the annotation (e.g. a corner badge with
Alignment::TopTrailing).
Sourcefn grow(self) -> AnyPiece
fn grow(self) -> AnyPiece
Expand to fill the available space on both axes (a filling pane / card that stretches to
its container). Wraps the piece in a layout-only node carrying grow Flex — the stack
offers it the space and it fills; no native backing, so this is a pure layout change.
Sourcefn grid_span(self, n: usize) -> AnyPiece
fn grid_span(self, n: usize) -> AnyPiece
Span n columns (n ≥ 1) of the enclosing grid (docs/grid.md). Grid modifiers set
facts on the node the grid sees: apply them LAST (outermost), like .grow_w() — an
outer wrapper would hide the facts from the grid.
Sourcefn grid_align(self, a: Alignment) -> AnyPiece
fn grid_align(self, a: Alignment) -> AnyPiece
Override this cell’s alignment within its cell rect of the enclosing grid
(docs/grid.md). Apply LAST (outermost), like Self::grid_span.
Sourcefn defers_system_gestures(self, edges: Edges) -> AnyPiece
fn defers_system_gestures(self, edges: Edges) -> AnyPiece
While this subtree is mounted, ask the OS to require a second swipe for its edge
gestures on edges (docs/cover.md) — the SwiftUI defersSystemGestures(on:)
analogue. Put it on a game or drawing surface whose touches run to the screen edge,
so a swipe up from the bottom doesn’t leave the app. iOS defers the chosen edges’
system gestures; Android enters swipe-to-reveal immersive mode while any subtree
requests deferral; desktop backends no-op.
Sourcefn interactive_dismiss_disabled(self) -> AnyPiece
fn interactive_dismiss_disabled(self) -> AnyPiece
While this subtree is mounted, the enclosing cover (or other modal surface) must
not be dismissed interactively — the SwiftUI interactiveDismissDisabled() analogue
(docs/cover.md). System back / sheet gestures are ignored; only programmatic writes
(an explicit close control) dismiss it.
fn any(self) -> AnyPiece
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.