File tree Expand file tree Collapse file tree 5 files changed +39
-8
lines changed
examples/experimentals/src Expand file tree Collapse file tree 5 files changed +39
-8
lines changed Original file line number Diff line number Diff line change @@ -114,7 +114,7 @@ where
114
114
}
115
115
116
116
fn view ( & self ) -> Node < Self :: MSG > {
117
- < Self as Component > :: view ( self )
117
+ Component :: view ( self )
118
118
}
119
119
120
120
fn stylesheet ( ) -> Vec < String > {
@@ -145,7 +145,11 @@ where
145
145
let mut program = Program :: from_rc_app ( Rc :: clone ( & app) ) ;
146
146
let children: Vec < Node < MSG > > = children. into_iter ( ) . collect ( ) ;
147
147
let mount_event = on_component_mount ( move |me| {
148
- program. mount ( & me. target_node . as_node ( ) , MountProcedure :: append ( ) ) ;
148
+ program. mount ( & me. target_node . as_node ( ) , MountProcedure :: append_to_shadow ( ) ) ;
149
+ let stylesheet = <COMP as Component >:: stylesheet ( ) . join ( "\n " ) ;
150
+ log:: info!( "stylesheet: {}" , stylesheet) ;
151
+ program. inject_style_to_mount ( & stylesheet) ;
152
+ program. inject_style_to_mount ( & program. app_context . dynamic_style ( ) ) ;
149
153
program. update_dom ( ) . expect ( "update dom" ) ;
150
154
} ) ;
151
155
Node :: Leaf ( Leaf :: StatefulComponent ( StatefulModel {
Original file line number Diff line number Diff line change @@ -137,6 +137,16 @@ impl From<web_sys::Node> for DomNode {
137
137
parent : Rc :: new ( None ) ,
138
138
}
139
139
}
140
+ Node :: DOCUMENT_FRAGMENT_NODE => {
141
+ let fragment: web_sys:: DocumentFragment = node. unchecked_into ( ) ;
142
+ DomNode {
143
+ inner : DomInner :: Fragment {
144
+ fragment,
145
+ children : Rc :: new ( RefCell :: new ( vec ! [ ] ) ) ,
146
+ } ,
147
+ parent : Rc :: new ( None ) ,
148
+ }
149
+ }
140
150
_node_type => todo ! ( "for: {_node_type:?}" ) ,
141
151
}
142
152
}
@@ -838,6 +848,7 @@ where
838
848
. borrow_mut ( )
839
849
. attribute_changed ( dom_attr. name , dom_attr. value ) ;
840
850
}
851
+
841
852
// the component children is manually appended to the StatefulComponent
842
853
// here to allow the conversion of dom nodes with its event
843
854
// listener and removing the generics msg
Original file line number Diff line number Diff line change @@ -353,27 +353,25 @@ where
353
353
. expect ( "mount node" )
354
354
. clone ( ) ,
355
355
MountTarget :: ShadowRoot => {
356
- /*
357
356
let mount_element: web_sys:: Element = self
358
357
. mount_node
359
358
. borrow ( )
360
359
. as_ref ( )
361
360
. expect ( "mount node" )
362
- .clone()
363
- .unchecked_into();
361
+ . as_element ( ) ;
362
+
364
363
mount_element
365
364
. attach_shadow ( & web_sys:: ShadowRootInit :: new ( web_sys:: ShadowRootMode :: Open ) )
366
365
. expect ( "unable to attached shadow" ) ;
367
366
let mount_shadow = mount_element. shadow_root ( ) . expect ( "must have a shadow" ) ;
367
+ let shadow_node: web_sys:: Node = mount_shadow. unchecked_into ( ) ;
368
368
369
- *self.mount_node.borrow_mut() = Some(mount_shadow.unchecked_into( ));
369
+ * self . mount_node . borrow_mut ( ) = Some ( DomNode :: from ( shadow_node ) ) ;
370
370
self . mount_node
371
371
. borrow ( )
372
372
. as_ref ( )
373
373
. expect ( "mount_node" )
374
374
. clone ( )
375
- */
376
- todo ! ( "shadow onhold!.." )
377
375
}
378
376
} ;
379
377
Original file line number Diff line number Diff line change @@ -45,6 +45,20 @@ impl Component for Button {
45
45
<div class="external_children" on_mount=|me|Msg :: ExternContMounted ( me. target_node) ></div>
46
46
</button>
47
47
}
48
+
49
+ fn stylesheet ( ) -> Vec < String > {
50
+ vec ! [ jss! {
51
+ "button" : {
52
+ background: "#EE88E5" ,
53
+ color: "light blue" ,
54
+ padding: "10px 10px" ,
55
+ margin: "10px 10px" ,
56
+ border: 0 ,
57
+ font_size: "1.5rem" ,
58
+ border_radius: "5px" ,
59
+ }
60
+ } ]
61
+ }
48
62
}
49
63
50
64
impl StatefulComponent for Button {
Original file line number Diff line number Diff line change @@ -157,6 +157,10 @@ where
157
157
} ]
158
158
}
159
159
160
+ fn style ( & self ) -> Vec < String > {
161
+ vec ! [ ".just{some:dynamc_style}" . to_string( ) ]
162
+ }
163
+
160
164
fn observed_attributes ( ) -> Vec < AttributeName > {
161
165
vec ! [ "date" , "time" , "interval" ]
162
166
}
You can’t perform that action at this time.
0 commit comments