pub struct WebView { /* private fields */ }Implementations§
Source§impl WebView
impl WebView
Sourcepub fn renderer(
self,
renderer: WebRenderer,
) -> Result<Self, RendererUnavailable>
pub fn renderer( self, renderer: WebRenderer, ) -> Result<Self, RendererUnavailable>
Select an engine for this context, failing instead of falling back silently. Rebuild the piece at its current URL to switch an existing page’s renderer.
Sourcepub fn profile(self, profile: WebProfile) -> Self
pub fn profile(self, profile: WebProfile) -> Self
Share cookies, local storage, cache and engine site data with other views using this profile.
Sourcepub fn url_binding(self, url: impl Binding<String>) -> Self
pub fn url_binding(self, url: impl Binding<String>) -> Self
Bind the actual page URL, including native navigation reports, to application state.
Useful for an address bar on bundled/resource views. Notify .go() to load the value.
Sourcepub fn on_load(self, callback: impl Fn() + 'static) -> Self
pub fn on_load(self, callback: impl Fn() + 'static) -> Self
Called on the UI thread after the backend reports a completed navigation. Useful for
applying the latest presentation state through JsHandle, including same-URL reloads.
Available on native backends that report navigation; not on emulated iframe hosts.
Sourcepub fn go(self, trigger: Trigger) -> Self
pub fn go(self, trigger: Trigger) -> Self
Load the current value of the bound url whenever trigger fires.
Sourcepub fn forward(self, trigger: Trigger) -> Self
pub fn forward(self, trigger: Trigger) -> Self
Navigate forward in history whenever trigger fires.
Sourcepub fn force_reload(self, trigger: Trigger) -> Self
pub fn force_reload(self, trigger: Trigger) -> Self
Reload from the server, bypassing cached resources. Check force_reload_support.
Sourcepub fn js(self, handle: JsHandle) -> Self
pub fn js(self, handle: JsHandle) -> Self
Bind a JsHandle so handle.eval(…) runs in this view (docs/webview-eval.md).
Sourcepub fn session(self, session: WebSession) -> Self
pub fn session(self, session: WebSession) -> Self
Show a retained WebSession, so the loaded page survives navigating away and back.
Sourcepub fn start_page(self, page: impl Into<String>) -> Self
pub fn start_page(self, page: impl Into<String>) -> Self
Inline mode only: the page within the site to open first, instead of index.html. A
query or fragment is part of the page ("player.html?src=hello"), and the site reads it
back through location.search / location.hash as it would on a server.
Sourcepub fn app_assets(self) -> Self
pub fn app_assets(self) -> Self
Inline mode only: let the site read the app’s whole resource/assets/ tree, not just its
own directory.
A self-contained site needs nothing here. Ask for it when the page’s job is to show the
app’s own files — a player, a viewer, a renderer — because those files live in the app’s
asset namespace and the site’s relative URLs have to reach them
(day-piece-lottie’s player is this: one page, any of the app’s animations).
Sourcepub fn transparent(self) -> Self
pub fn transparent(self) -> Self
Draw no background of the view’s own: where the page’s own background is transparent, the app shows through, the way an image with an alpha channel sits on whatever is behind it.
What a web view is for here is content that belongs to the app’s own surface (an animation player, a rendered diagram, a badge), where the view’s usual white sheet reads as a hole in the window. A page that sets a background of its own still draws it. Every arm honors it (docs/webview.md “A transparent view”).
Sourcepub fn on_new_tab<M1, M2>(
self,
foreground_label: impl IntoText<M1>,
background_label: impl IntoText<M2>,
f: impl Fn(&NewTabRequest) + 'static,
) -> Self
pub fn on_new_tab<M1, M2>( self, foreground_label: impl IntoText<M1>, background_label: impl IntoText<M2>, f: impl Fn(&NewTabRequest) + 'static, ) -> Self
Decide what happens to a navigation that leaves an inline/resource site. On Apple
backends, also opts ordinary documents into reporting user-activated links and new
windows; initial loads, subframes and same-document fragments stay in view. Runs on the
main thread with the target URL; without it every external link is
LinkPolicy::OpenSystem. The closure may do arbitrary in-app work (navigate the day
app, log) and return LinkPolicy::Ignore.
Handle a request for a separate tab without replacing the source document.
Labels must be localized by the application. Background requests preserve focus.
pub fn on_external_link(self, f: impl Fn(&str) -> LinkPolicy + 'static) -> Self
Trait Implementations§
Source§impl WebViewBuilder for WebView
impl WebViewBuilder for WebView
Source§fn profile(self, profile: WebProfile) -> Self
fn profile(self, profile: WebProfile) -> Self
Source§fn url_binding(self, url: impl Binding<String>) -> Self
fn url_binding(self, url: impl Binding<String>) -> Self
.go() to load the value.Source§fn on_load(self, callback: impl Fn() + 'static) -> Self
fn on_load(self, callback: impl Fn() + 'static) -> Self
JsHandle, including same-URL reloads.
Available on native backends that report navigation; not on emulated iframe hosts.Source§fn go(self, trigger: Trigger) -> Self
fn go(self, trigger: Trigger) -> Self
url whenever trigger fires.Source§fn forward(self, trigger: Trigger) -> Self
fn forward(self, trigger: Trigger) -> Self
trigger fires.Source§fn force_reload(self, trigger: Trigger) -> Self
fn force_reload(self, trigger: Trigger) -> Self
force_reload_support.Source§fn js(self, handle: JsHandle) -> Self
fn js(self, handle: JsHandle) -> Self
JsHandle so handle.eval(…) runs in this view (docs/webview-eval.md).Source§fn session(self, session: WebSession) -> Self
fn session(self, session: WebSession) -> Self
WebSession, so the loaded page survives navigating away and back.Source§fn start_page(self, page: impl Into<String>) -> Self
fn start_page(self, page: impl Into<String>) -> Self
index.html. A
query or fragment is part of the page ("player.html?src=hello"), and the site reads it
back through location.search / location.hash as it would on a server.Source§fn app_assets(self) -> Self
fn app_assets(self) -> Self
resource/assets/ tree, not just its
own directory. Read moreSource§fn transparent(self) -> Self
fn transparent(self) -> Self
Source§fn on_new_tab<M1, M2>(
self,
foreground_label: impl IntoText<M1>,
background_label: impl IntoText<M2>,
f: impl Fn(&NewTabRequest) + 'static,
) -> Self
fn on_new_tab<M1, M2>( self, foreground_label: impl IntoText<M1>, background_label: impl IntoText<M2>, f: impl Fn(&NewTabRequest) + 'static, ) -> Self
LinkPolicy::OpenSystem. The closure may do arbitrary in-app work (navigate the day
app, log) and return LinkPolicy::Ignore.
Handle a request for a separate tab without replacing the source document.
Labels must be localized by the application. Background requests preserve focus.fn on_external_link(self, f: impl Fn(&str) -> LinkPolicy + 'static) -> Self
Auto Trait Implementations§
impl !RefUnwindSafe for WebView
impl !Send for WebView
impl !Sync for WebView
impl !UnwindSafe for WebView
impl Freeze for WebView
impl Unpin for WebView
impl UnsafeUnpin for WebView
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<P> Decorate for Pwhere
P: Piece,
impl<P> Decorate for Pwhere
P: Piece,
Source§fn id(self, id: ElementId) -> Decorated<Self>
fn id(self, id: ElementId) -> Decorated<Self>
Source§fn wrapper_id(self, id: ElementId) -> Decorated<Self>
fn wrapper_id(self, id: ElementId) -> Decorated<Self>
id.Source§fn apply_if(
self,
cond: bool,
f: impl FnOnce(Decorated<Self>) -> Decorated<Self>,
) -> Decorated<Self>
fn apply_if( self, cond: bool, f: impl FnOnce(Decorated<Self>) -> Decorated<Self>, ) -> Decorated<Self>
f to the chain when cond holds, else continue unchanged
(see Decorated::apply_if): nav(sel).apply_if(!primary, |n| n.local()). The
closure receives the decorated piece, so forwarded builder methods and modifiers both
chain inside it.Source§fn apply_some<T>(
self,
value: Option<T>,
f: impl FnOnce(Decorated<Self>, T) -> Decorated<Self>,
) -> Decorated<Self>
fn apply_some<T>( self, value: Option<T>, f: impl FnOnce(Decorated<Self>, T) -> Decorated<Self>, ) -> Decorated<Self>
f with the value when there is one, else continue unchanged
(see Decorated::apply_some): canvas(draw).apply_some(id, |c, id| c.id(id)).Source§fn id_of(self, id: impl Fn() -> ElementId + 'static) -> Decorated<Self>
fn id_of(self, id: impl Fn() -> ElementId + 'static) -> Decorated<Self>
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 || day_core::id!(row_remove, slot.key())).Source§fn tweak(self, f: impl FnOnce(RNode) + 'static) -> Decorated<Self>
fn tweak(self, f: impl FnOnce(RNode) + 'static) -> Decorated<Self>
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_toolkit_appkit::with_native, day_toolkit_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. Read moreSource§fn selectable(self) -> Decorated<Self>
fn selectable(self) -> Decorated<Self>
Source§fn cursor<M>(self, cursor: impl IntoReactive<Cursor, M>) -> Decorated<Self>
fn cursor<M>(self, cursor: impl IntoReactive<Cursor, M>) -> Decorated<Self>
Cursor constant, a Signal<Cursor>, or a closure, so a canvas tool or a busy state
moves the shape without rebuilding the piece. The nearest ancestor’s cursor wins, and
Cursor::Default releases the piece back to the platform. capability(Cap::Cursor)
says whether this toolkit draws the requested shapes, a nearest neighbor, or nothing;
a touch-only host never shows one, which is correct rather than a failure.Source§fn window_drag_region(self) -> Decorated<Self>
fn window_drag_region(self) -> Decorated<Self>
WindowChrome::Overlay or
WindowChrome::Frameless window needs. The piece’s own background starts the drag,
with the platform’s snapping and tiling; buttons and fields inside it keep their clicks;
a double click does what the user’s title-bar setting says (zoom, minimize, nothing).
capability(Cap::DragRegion); on a phone the piece is an ordinary view.Source§fn native_ref(self, r: &NativeRef) -> Decorated<Self>
fn native_ref(self, r: &NativeRef) -> Decorated<Self>
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) -> Decorated<Self>
Source§fn max_width(self, max: f64) -> Decorated<Self>
fn max_width(self, max: f64) -> Decorated<Self>
max points: the child is never PROPOSED more, so text
wraps inside the cap (chat bubbles, readable columns) while narrower content hugs.Source§fn max_height(self, max: f64) -> Decorated<Self>
fn max_height(self, max: f64) -> Decorated<Self>
max points, the vertical twin of Decorate::max_width: a
scroll or another piece that takes the height it is offered stops at max, and still
gets less where its parent has less to give.Source§fn reserving(self, sample: impl Into<String>) -> Decorated<Self>
fn reserving(self, sample: impl Into<String>) -> Decorated<Self>
sample needs, so this piece’s size stops changing with its
content. Read morefn frame(self, width: f64, height: f64) -> Decorated<Self>
Source§fn width(self, width: f64) -> Decorated<Self>
fn width(self, width: f64) -> Decorated<Self>
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.Source§fn height(self, height: f64) -> Decorated<Self>
fn height(self, height: f64) -> Decorated<Self>
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, ) -> Decorated<Self>
Source§fn on_tap(self, f: impl Fn() + 'static) -> Decorated<Self>
fn on_tap(self, f: impl Fn() + 'static) -> Decorated<Self>
Source§fn focused<M>(self, binding: impl IntoFocusBinding<M>) -> Decorated<Self>
fn focused<M>(self, binding: impl IntoFocusBinding<M>) -> Decorated<Self>
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.Source§fn on_key(self, f: impl Fn(&KeyEvent) + 'static) -> Decorated<Self>
fn on_key(self, f: impl Fn(&KeyEvent) + 'static) -> Decorated<Self>
Decorate::focused or with a
piece the user can click into: a canvas takes focus on a press, and only the focused
piece hears the keys, so a nudge handler can never fire while a text field, a list or a
sidebar is the one being typed into. Read moreSource§fn toolbar<M>(self, content: impl ToolbarContent<M>) -> Decorated<Self>
fn toolbar<M>(self, content: impl ToolbarContent<M>) -> Decorated<Self>
Source§fn searchable(self, search: Search) -> Decorated<Self>
fn searchable(self, search: Search) -> Decorated<Self>
UISearchController), its app bar on Android. It shows while this page does, and
its text is the app’s query both ways. For a search the server runs, act on
crate::Search::on_submit; for a local filter, read the query. Declare it on a
nav_stack destination, as .toolbar(…) is declared; a whole navigation surface takes
crate::Nav::searchable instead.Source§fn focusable(self) -> Decorated<Self>
fn focusable(self) -> Decorated<Self>
.focused(…), and hears the arrows through .on_key(…) while focused. A composed
list column is the motivating case (docs/navigation.md). On a backend without the
set_focusable duty the piece renders normally and never takes focus.Source§fn drag_source(
self,
source: impl Fn(Point) -> Option<Offer> + 'static,
) -> Decorated<Self>
fn drag_source( self, source: impl Fn(Point) -> Option<Offer> + 'static, ) -> Decorated<Self>
menu_item/sub_menu/menu_role/
menu_separator. Passing an empty Vec removes any menu.fn drop_target(self, target: Target) -> Decorated<Self>
menu_item/sub_menu entries as everywhere else. Takes a fixed list, or a closure
built when the menu is summoned (“Dynamic context menus”): with no argument, or with the
summon point in this piece’s own coordinates, so a canvas can select what is under the
pointer and offer commands for that selection. An empty result shows nothing. Read morefn on_drag(self, f: impl Fn(Drag) + 'static) -> Decorated<Self>
Source§fn on_pinch(self, f: impl Fn(Pinch) + 'static) -> Decorated<Self>
fn on_pinch(self, f: impl Fn(Pinch) + 'static) -> Decorated<Self>
Source§fn on_pan(self, f: impl Fn(Pan) + 'static) -> Decorated<Self>
fn on_pan(self, f: impl Fn(Pan) + 'static) -> Decorated<Self>
delta is incremental; apply it
as it arrives.Source§fn on_hover(self, f: impl Fn(Option<Point>) + 'static) -> Decorated<Self>
fn on_hover(self, f: impl Fn(Option<Point>) + 'static) -> Decorated<Self>
Some(point) in its own coordinates while inside,
None when it leaves (docs/canvas.md “Interaction”). Pointer-only; wire on_tap_at
alongside it so a touch-only device can reach the same thing.Source§fn card(self) -> Decorated<Self>
fn card(self) -> Decorated<Self>
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.
The platform’s card around this piece: the grouped-content surface with rounded
corners and a Space::M inset (see Decorated::card).fn background<M>(self, color: impl IntoReactive<Color, M>) -> Decorated<Self>
Source§fn corner_radius(self, radius: f64) -> Decorated<Self>
fn corner_radius(self, radius: f64) -> Decorated<Self>
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).Source§fn opacity<M>(self, opacity: impl IntoReactive<f64, M>) -> Decorated<Self>
fn opacity<M>(self, opacity: impl IntoReactive<f64, M>) -> Decorated<Self>
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).Source§fn transform<M>(self, t: impl IntoReactive<Transform, M>) -> Decorated<Self>
fn transform<M>(self, t: impl IntoReactive<Transform, M>) -> Decorated<Self>
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.Source§fn scale<M>(self, factor: impl IntoReactive<f64, M>) -> Decorated<Self>
fn scale<M>(self, factor: impl IntoReactive<f64, M>) -> Decorated<Self>
factor about its center (animatable). Convenience over
Self::transform.Source§fn rotation<M>(self, degrees: impl IntoReactive<f64, M>) -> Decorated<Self>
fn rotation<M>(self, degrees: impl IntoReactive<f64, M>) -> Decorated<Self>
degrees clockwise about its center (animatable).Source§fn translation<Mx, My>(
self,
x: impl IntoReactive<f64, Mx>,
y: impl IntoReactive<f64, My>,
) -> Decorated<Self>
fn translation<Mx, My>( self, x: impl IntoReactive<f64, Mx>, y: impl IntoReactive<f64, My>, ) -> Decorated<Self>
x, y) points without relayout (animatable): the
animation-friendly sibling of .offset.Source§fn animation(self, anim: AnimSpec) -> Decorated<Self>
fn animation(self, anim: AnimSpec) -> Decorated<Self>
anim even outside a with_animation. SwiftUI’s
.animation. The ambient with_animation takes precedence when both apply.Source§fn overlay(self, over: impl Piece) -> Decorated<Self>
fn overlay(self, over: impl Piece) -> Decorated<Self>
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.Source§fn overlay_aligned(self, align: Alignment, over: impl Piece) -> Decorated<Self>
fn overlay_aligned(self, align: Alignment, over: impl Piece) -> Decorated<Self>
Self::overlay with an explicit Alignment for the annotation (e.g. a corner badge with
Alignment::TopTrailing).Source§fn aspect_ratio(self, ratio: f64) -> Decorated<Self>
fn aspect_ratio(self, ratio: f64) -> Decorated<Self>
width / height ratio: the largest box of that shape which
fits whatever the parent offers (SwiftUI’s .aspectRatio(_:contentMode: .fit)). Read moreSource§fn grow(self) -> Decorated<Self>
fn grow(self) -> Decorated<Self>
Flex: the stack
offers it the space and it fills; no native backing, so this is a pure layout change.Source§fn grid_align(self, a: Alignment) -> Decorated<Self>
fn grid_align(self, a: Alignment) -> Decorated<Self>
grid
(docs/grid.md). Apply last (outermost), like Decorated::grid_span.Source§fn defers_system_gestures(self, edges: Edges) -> Decorated<Self>
fn defers_system_gestures(self, edges: Edges) -> Decorated<Self>
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.hidden is true, hide the system status bar, the
SwiftUI statusBarHidden(_:) analogue (docs/cover.md). hidden is a constant, a
Signal, or a closure, so a setting can turn it on and off in place. Put it on a page
that wants the whole screen (a reader, a game, a photo viewer); the bar returns when
the page unmounts. Any mounted request that answers true hides the bar. iOS, Android and
HarmonyOS hide it (Cap::StatusBarHidden); desktop and web have none and ignore it.Source§fn interactive_dismiss_disabled(self) -> Decorated<Self>
fn interactive_dismiss_disabled(self) -> Decorated<Self>
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.impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more