[yew-devel] [PATCH yew-widget-toolkit 1/2] dom: add convenience functions to get often used elements

Dominik Csapak d.csapak at proxmox.com
Mon May 5 10:36:57 CEST 2025


On 5/5/25 10:27, Shannon Sterz wrote:
> On Mon May 5, 2025 at 10:13 AM CEST, Dietmar Maurer wrote:
>> We can use gloo_utils instead?
>>
> 
> I'd also prefer gloo_utils here, especially because that also uses the
> `UnwraptThrowExt` traits, which is a bit nicer [1] and pwt already
> depends on it indirectly anyway (through, e.g., gloo-history).
> 
> [1]: https://docs.rs/gloo-utils/latest/src/gloo_utils/lib.rs.html


yes, sure, i somehow thought that this was not the case

in that case, i'll only send one patch that uses gloo_uitls::* inline everywhere

> 
>>> On 2.5.2025 14:49 CEST Dominik Csapak <d.csapak at proxmox.com> wrote:
>>>
>>>
>>> Namely window/document/body. We use them throughout our codebase with
>>> inline unwraps, instead we can use these helpers instead.
>>>
>>> Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
>>> ---
>>>   src/dom/mod.rs | 20 +++++++++++++++++++-
>>>   1 file changed, 19 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/src/dom/mod.rs b/src/dom/mod.rs
>>> index f61dd21..679fab7 100644
>>> --- a/src/dom/mod.rs
>>> +++ b/src/dom/mod.rs
>>> @@ -13,7 +13,7 @@ pub use dom_size_observer::{DomSizeObserver, IntoSizeCallback, SizeCallback};
>>>   mod dom_visibility_observer;
>>>   pub use dom_visibility_observer::DomVisibilityObserver;
>>>
>>> -use web_sys::Node;
>>> +use web_sys::{window, Document, HtmlElement, Node, Window};
>>>   use yew::prelude::*;
>>>
>>>   /// A Trait to convert structs into HtmlElement when possible
>>> @@ -77,3 +77,21 @@ pub fn get_system_prefer_dark_mode() -> bool {
>>>           false
>>>       }
>>>   }
>>> +
>>> +/// Convenience function to get the [`Window`] object.
>>> +/// Panics if not in a browser context
>>> +pub fn get_window() -> Window {
>>> +    window().unwrap()
>>> +}
>>> +
>>> +/// Convenience function to get the [`Document`] object.
>>> +/// Panics if not in a browser context
>>> +pub fn get_document() -> Document {
>>> +    get_window().document().unwrap()
>>> +}
>>> +
>>> +/// Convenience function to get the a reference to the <body> tag as [`HtmlElement`].
>>> +/// Panics if not in a browser context
>>> +pub fn get_body() -> HtmlElement {
>>> +    get_document().body().unwrap()
>>> +}
>>> --
>>> 2.39.5
>>>
>>>
>>>
>>> _______________________________________________
>>> yew-devel mailing list
>>> yew-devel at lists.proxmox.com
>>> https://lists.proxmox.com/cgi-bin/mailman/listinfo/yew-devel
>>
>>
>> _______________________________________________
>> yew-devel mailing list
>> yew-devel at lists.proxmox.com
>> https://lists.proxmox.com/cgi-bin/mailman/listinfo/yew-devel
> 
> 
> 
> _______________________________________________
> yew-devel mailing list
> yew-devel at lists.proxmox.com
> https://lists.proxmox.com/cgi-bin/mailman/listinfo/yew-devel
> 
> 





More information about the yew-devel mailing list