ferridriver_script/bindings/
file_chooser.rs1use ferridriver::file_chooser::FileChooser as CoreFileChooser;
10use rquickjs::JsLifetime;
11use rquickjs::class::Trace;
12
13use crate::bindings::convert::FerriResultExt;
14
15#[derive(JsLifetime, Trace)]
16#[rquickjs::class(rename = "FileChooser")]
17pub struct FileChooserJs {
18 #[qjs(skip_trace)]
19 inner: CoreFileChooser,
20}
21
22impl FileChooserJs {
23 #[must_use]
24 pub fn new(inner: CoreFileChooser) -> Self {
25 Self { inner }
26 }
27}
28
29#[rquickjs::methods]
30impl FileChooserJs {
31 #[qjs(rename = "element")]
33 pub fn element(&self) -> crate::bindings::element_handle::ElementHandleJs {
34 crate::bindings::element_handle::ElementHandleJs::new(self.inner.element().clone())
35 }
36
37 #[qjs(rename = "isMultiple")]
39 pub fn is_multiple(&self) -> bool {
40 self.inner.is_multiple()
41 }
42
43 #[qjs(rename = "page")]
46 pub fn page(&self) -> crate::bindings::page::PageJs {
47 crate::bindings::page::PageJs::new(self.inner.page().clone())
48 }
49
50 #[qjs(rename = "setFiles")]
55 pub async fn set_files<'js>(
56 &self,
57 ctx: rquickjs::Ctx<'js>,
58 files: rquickjs::Value<'js>,
59 options: rquickjs::function::Opt<rquickjs::Value<'js>>,
60 ) -> rquickjs::Result<()> {
61 let files = crate::bindings::convert::parse_input_files(&ctx, files)?;
62 let opts = crate::bindings::convert::parse_set_input_files_options(&ctx, options)?;
63 self.inner.set_files(files, opts).await.into_js()
64 }
65}