File tree Expand file tree Collapse file tree 4 files changed +46
-2
lines changed
Expand file tree Collapse file tree 4 files changed +46
-2
lines changed Original file line number Diff line number Diff line change 1- use pgml_components:: component;
1+ use pgml_components:: { component, Component } ;
22use sailfish:: TemplateOnce ;
33
44#[ derive( TemplateOnce , Default , Clone ) ]
@@ -10,6 +10,7 @@ pub struct Head {
1010 pub preloads : Vec < String > ,
1111 pub context : Option < String > ,
1212 pub canonical : Option < String > ,
13+ pub additional_components : Vec < Component > ,
1314}
1415
1516impl Head {
@@ -58,6 +59,25 @@ impl Head {
5859 self . context = context. to_owned ( ) ;
5960 self
6061 }
62+
63+ /// Add a component to `<head>`.
64+ ///
65+ /// This can be anything, e.g. a `<script>` tag or a `<meta>` or just some HTML or text.
66+ ///
67+ /// # Example
68+ ///
69+ /// ```
70+ /// use pgml_components::Component;
71+ /// use pgml_components::layouts::Head;
72+ ///
73+ /// let head = Head::new()
74+ /// .add_component(Component::from("<script>console.log('hello');</script>"));
75+ /// ```
76+ ///
77+ pub fn add_component ( mut self , component : Component ) -> Self {
78+ self . additional_components . push ( component) ;
79+ self
80+ }
6181}
6282
6383component ! ( Head ) ;
Original file line number Diff line number Diff line change 9797 } ;
9898 </ script >
9999 < % } %>
100+
101+ < % for component in additional_components { %>
102+ < %+ component %>
103+ < % } %>
100104</ head>
Original file line number Diff line number Diff line change @@ -3,7 +3,7 @@ use crate::components::notifications::marketing::AlertBanner;
33use crate :: guards:: Cluster ;
44use crate :: models:: User ;
55use crate :: Notification ;
6- use pgml_components:: component;
6+ use pgml_components:: { component, Component } ;
77use sailfish:: TemplateOnce ;
88use std:: fmt;
99
@@ -72,6 +72,15 @@ impl Base {
7272 rsp
7373 }
7474
75+ /// Add a component to the `<head>`.
76+ ///
77+ /// See [`Head::add_component`](crate::components::layouts::Head::add_component) for more information.
78+ ///
79+ pub fn add_head_component ( mut self , component : Component ) -> Self {
80+ self . head = self . head . add_component ( component) ;
81+ self
82+ }
83+
7584 pub fn footer ( mut self , footer : String ) -> Self {
7685 self . footer = Some ( footer) ;
7786 self
Original file line number Diff line number Diff line change @@ -163,6 +163,17 @@ impl<'a> WebAppBase<'a> {
163163 self
164164 }
165165
166+ /// Add a component to head (`<head>`).
167+ ///
168+ /// # Arguments
169+ ///
170+ /// * `component` - The component to add to the head.
171+ ///
172+ pub fn add_head_component ( & mut self , component : Component ) -> & mut Self {
173+ self . head = self . head . clone ( ) . add_component ( component) ;
174+ self
175+ }
176+
166177 pub fn render < T > ( & mut self , template : T ) -> String
167178 where
168179 T : sailfish:: TemplateOnce ,
You can’t perform that action at this time.
0 commit comments