ferridriver_script/bindings/
dialog.rs1use ferridriver::dialog::Dialog as CoreDialog;
9use rquickjs::JsLifetime;
10use rquickjs::class::Trace;
11use rquickjs::function::Opt;
12
13use crate::bindings::convert::FerriResultExt;
14
15#[derive(JsLifetime, Trace)]
16#[rquickjs::class(rename = "Dialog")]
17pub struct DialogJs {
18 #[qjs(skip_trace)]
19 inner: CoreDialog,
20}
21
22impl DialogJs {
23 #[must_use]
24 pub fn new(inner: CoreDialog) -> Self {
25 Self { inner }
26 }
27}
28
29#[rquickjs::methods]
30impl DialogJs {
31 #[qjs(rename = "type")]
34 pub fn dialog_type(&self) -> String {
35 self.inner.dialog_type().as_str().to_string()
36 }
37
38 #[qjs(rename = "message")]
40 pub fn message(&self) -> String {
41 self.inner.message().to_string()
42 }
43
44 #[qjs(rename = "defaultValue")]
47 pub fn default_value(&self) -> String {
48 self.inner.default_value().to_string()
49 }
50
51 #[qjs(rename = "page")]
55 pub fn page(&self) -> Option<crate::bindings::page::PageJs> {
56 self.inner.page().map(crate::bindings::page::PageJs::new)
57 }
58
59 #[qjs(rename = "accept")]
65 pub async fn accept(&self, prompt_text: Opt<String>) -> rquickjs::Result<()> {
66 self.inner.accept(prompt_text.0).await.into_js()
67 }
68
69 #[qjs(rename = "dismiss")]
71 pub async fn dismiss(&self) -> rquickjs::Result<()> {
72 self.inner.dismiss().await.into_js()
73 }
74}