wasm_css/
delete.rs

1// Authors: Robert Lopez
2
3use super::Style;
4use crate::error::{format_error, WasmCssError};
5use web_sys::window;
6
7impl Style {
8    /// Delete `Style`, removing it from the DOM.
9    ///
10    /// Returns error if missing access to: `Head`, `Window`, `Document`.
11    ///
12    /// ---
13    /// Example Usage:
14    /// ```
15    ///
16    /// let mut style = style!("background-color: blue;")?;
17    ///
18    /// style.delete()?;
19    /// ```
20    pub fn delete(self) -> Result<(), WasmCssError> {
21        let window = window().ok_or(format_error!("Failed to obtain Window object"))?;
22        let document = window
23            .document()
24            .ok_or(format_error!("Failed to obtain Document object"))?;
25
26        let head = document
27            .head()
28            .ok_or(format_error!("Failed to obtain HtmlHeadElement object"))?;
29
30        if let Some(child) = document.get_element_by_id(&self.css_name) {
31            head.remove_child(&child).map_err(|_| {
32                format_error!("Failed to delete style Element from HtmlHeadElement")
33            })?;
34        }
35
36        Ok(())
37    }
38}