MCPcopy Create free account
hub / github.com/angular-rust/yew-components / update

Method update

src/menu.rs:149–213  ·  view source on GitHub ↗
(&mut self, msg: Self::Message)

Source from the content-addressed store, hash-verified

147 }
148
149 fn update(&mut self, msg: Self::Message) -> ShouldRender {
150 match msg {
151 Self::Message::Open => {
152 self.props.open = true;
153 let el = self.node_ref.cast::<Element>().unwrap();
154 let class_list = el.class_list();
155
156 if self.props.quick {
157 let _ = class_list.add_1("mdc-menu-surface--open");
158 } else {
159 let _ = class_list.add_1("mdc-menu-surface--animating-open");
160 let timeout = Timeout::new(10, move || {
161 let _ = class_list.add_1("mdc-menu-surface--open");
162 let timeout = Timeout::new(120, move || {
163 let _ = class_list.remove_1("mdc-menu-surface--animating-open");
164 });
165 timeout.forget();
166 });
167 timeout.forget();
168 }
169
170 // register body handler
171 let link = self.props.link.borrow().clone().unwrap();
172 let timeout = Timeout::new(10, move || {
173 link.send_message(Self::Message::RegisterBodyListener)
174 });
175 timeout.forget();
176 },
177 Self::Message::RegisterBodyListener => {
178 self.register_body_listener();
179 },
180 Self::Message::Close => {
181 // self.onsignal.emit(());
182 self.props.open = false;
183 let el = self.node_ref.cast::<Element>().unwrap();
184 let class_list = el.class_list();
185 if self.props.quick {
186 let _ = class_list.remove_1("mdc-menu-surface--open");
187 } else {
188 let _ = class_list.add_1("mdc-menu-surface--animating-closed");
189 let timeout = Timeout::new(10, move || {
190 let _ = class_list.remove_1("mdc-menu-surface--open");
191 let timeout = Timeout::new(75, move || {
192 let _ = class_list.remove_1("mdc-menu-surface--animating-closed");
193 });
194 timeout.forget();
195 });
196 timeout.forget();
197 }
198 // unregister body handler
199 self.unregister_body_listener();
200 }
201 Self::Message::TransitionEnd => {
202 // info!("MENU TRANSITION END CATCHED");
203 let el = self.node_ref.cast::<Element>().unwrap();
204 let class_list = el.class_list();
205 // let _ = class_list.remove_1("mdc-menu-surface--animating-open");
206 // let _ = class_list.remove_3("mdc-drawer--animate", "mdc-drawer--opening", "mdc-drawer--closing");

Callers

nothing calls this directly

Calls 3

cloneMethod · 0.80

Tested by

no test coverage detected