Files
dioxus/playwright-tests/web/src/main.rs
T
Miles MurgawandEvan Almloff 6210c6fefe Convert use_eval to use send/recv system (#1080)
* progress: reworked

don't run this, it'll kill your web browser

* feat: use_eval but with comms

* revision: async recv & recv_sync

* revision: use_eval

* revision: standard eval interface

* revision: use serde_json::Value instead of JsValue

* revision: docs

* revision: error message

* create: desktop eval (wip)

* fix: desktop eval

* revision: wrap use_eval in Rc<RefCell<_>>

* fix: fmt, clippy

* fix: desktop tests

* revision: change to channel system

- fixes clippy errors
- fixes playwright tests

* fix: tests

* fix: eval example

* fix: fmt

* fix: tests, desktop stuff

* fix: tests

* feat: drop handler

* fix: tests

* fix: rustfmt

* revision: web promise/callback system

* fix: recv error

* revision: IntoFuture, functionation

* fix: ci

* revision: playwright web

* remove: unescessary code

* remove dioxus-html from public examples

* prototype-patch

* fix web eval

* fix: rustfmt

* fix: CI

* make use_eval more efficient

* implement eval for liveview as well

* fix playwright tests

* fix clippy

* more clippy fixes

* fix clippy

* fix stack overflow

* fix desktop mock

* fix clippy

---------

Co-authored-by: Evan Almloff <evanalmloff@gmail.com>
2023-07-21 17:36:25 -05:00

71 lines
1.9 KiB
Rust

// This test is used by playwright configured in the root of the repo
use dioxus::prelude::*;
fn app(cx: Scope) -> Element {
let mut num = use_state(cx, || 0);
let eval_result = use_state(cx, String::new);
let eval_provider = dioxus_html::prelude::use_eval(cx);
cx.render(rsx! {
div {
"hello axum! {num}"
button {
class: "increment-button",
onclick: move |_| num += 1, "Increment"
}
}
svg {
circle { cx: 50, cy: 50, r: 40, stroke: "green", fill: "yellow" }
}
div {
class: "raw-attribute-div",
"raw-attribute": "raw-attribute-value",
}
div {
class: "hidden-attribute-div",
hidden: true,
}
div {
class: "dangerous-inner-html-div",
dangerous_inner_html: "<p>hello dangerous inner html</p>",
}
input {
value: "hello input",
}
div {
class: "style-div",
color: "red",
"colored text"
}
button {
class: "eval-button",
onclick: move |_| {
let eval = eval_provider(
r#"
window.document.title = 'Hello from Dioxus Eval!';
dioxus.send("returned eval value");
"#).unwrap();
let setter = eval_result.setter();
async move {
// Set the window title
let result = eval.recv().await;
if let Ok(serde_json::Value::String(string)) = result {
setter(string);
}
}},
"Eval"
}
div {
class: "eval-result",
"{eval_result}"
}
})
}
fn main() {
dioxus_web::launch(app);
}