mirror of
https://github.com/yewstack/yew.git
synced 2025-12-08 21:26:25 +00:00
Add pending event listener on the VTag (#2300)
* Add pending event listener on the VTag * Remove deprecated set_listener and rename add_listener * Add return value comment
This commit is contained in:
parent
5181e1aca7
commit
f0fb40650e
@ -8,6 +8,7 @@ use std::borrow::Cow;
|
||||
use std::cmp::PartialEq;
|
||||
use std::hint::unreachable_unchecked;
|
||||
use std::marker::PhantomData;
|
||||
use std::mem;
|
||||
use std::ops::Deref;
|
||||
use std::rc::Rc;
|
||||
use wasm_bindgen::JsCast;
|
||||
@ -430,8 +431,22 @@ impl VTag {
|
||||
.insert(key, value.into_prop_value());
|
||||
}
|
||||
|
||||
/// Add event listener on the [VTag]'s [Element].
|
||||
/// Returns `true` if the listener has been added, `false` otherwise.
|
||||
pub fn add_listener(&mut self, listener: Rc<dyn Listener>) -> bool {
|
||||
if let Listeners::Pending(listeners) = &mut self.listeners {
|
||||
let mut listeners = mem::take(listeners).into_vec();
|
||||
listeners.push(Some(listener));
|
||||
|
||||
self.set_listeners(listeners.into_boxed_slice());
|
||||
true
|
||||
} else {
|
||||
false
|
||||
}
|
||||
}
|
||||
|
||||
/// Set event listeners on the [VTag]'s [Element]
|
||||
pub fn set_listener(&mut self, listeners: Box<[Option<Rc<dyn Listener>>]>) {
|
||||
pub fn set_listeners(&mut self, listeners: Box<[Option<Rc<dyn Listener>>]>) {
|
||||
self.listeners = Listeners::Pending(listeners);
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user