change the way we're handling event actions
This commit is contained in:
parent
4ceb07c4bc
commit
42a7fb2f39
@ -544,13 +544,19 @@ export const uploadFiles = async (
|
||||
|
||||
/**
|
||||
* Create an event object.
|
||||
* @param name The name of the event.
|
||||
* @param payload The payload of the event.
|
||||
* @param handler The client handler to process event.
|
||||
* @param {string} name The name of the event.
|
||||
* @param {Object.<string, Any>} payload The payload of the event.
|
||||
* @param {Object.<string, (number|boolean)>} event_actions The actions to take on the event.
|
||||
* @param {string} handler The client handler to process event.
|
||||
* @returns The event object.
|
||||
*/
|
||||
export const Event = (name, payload = {}, handler = null) => {
|
||||
return { name, payload, handler };
|
||||
export const Event = (
|
||||
name,
|
||||
payload = {},
|
||||
event_actions = {},
|
||||
handler = null
|
||||
) => {
|
||||
return { name, payload, handler, event_actions };
|
||||
};
|
||||
|
||||
/**
|
||||
@ -676,6 +682,12 @@ export const useEventLoop = (
|
||||
if (!(args instanceof Array)) {
|
||||
args = [args];
|
||||
}
|
||||
|
||||
const event_actions = events.reduce(
|
||||
(acc, e) => ({ ...acc, ...e.event_actions }),
|
||||
event_actions
|
||||
);
|
||||
|
||||
const _e = args.filter((o) => o?.preventDefault !== undefined)[0];
|
||||
|
||||
if (event_actions?.preventDefault && _e?.preventDefault) {
|
||||
|
@ -589,24 +589,18 @@ class Component(BaseComponent, ABC):
|
||||
for e in events
|
||||
]
|
||||
|
||||
# Collect event_actions from each spec
|
||||
event_actions = {}
|
||||
for e in events:
|
||||
if isinstance(e, EventSpec):
|
||||
event_actions.update(e.event_actions)
|
||||
|
||||
# Return the event chain.
|
||||
if isinstance(args_spec, Var):
|
||||
return EventChain(
|
||||
events=events,
|
||||
args_spec=None,
|
||||
event_actions=event_actions,
|
||||
event_actions={},
|
||||
)
|
||||
else:
|
||||
return EventChain(
|
||||
events=events,
|
||||
args_spec=args_spec,
|
||||
event_actions=event_actions,
|
||||
event_actions={},
|
||||
)
|
||||
|
||||
def get_event_triggers(self) -> Dict[str, Any]:
|
||||
|
@ -1167,20 +1167,25 @@ class LiteralEventVar(CachedVarOperation, LiteralVar, EventVar):
|
||||
Returns:
|
||||
The name of the var.
|
||||
"""
|
||||
event_name = LiteralVar.create(
|
||||
".".join(
|
||||
filter(None, format.get_event_handler_parts(self._var_value.handler))
|
||||
)
|
||||
)
|
||||
event_args = LiteralVar.create(
|
||||
{str(name): value for name, value in self._var_value.args}
|
||||
)
|
||||
event_client_name = LiteralVar.create(self._var_value.client_handler_name)
|
||||
return str(
|
||||
FunctionStringVar("Event").call(
|
||||
event_name,
|
||||
event_args,
|
||||
*([event_client_name] if self._var_value.client_handler_name else []),
|
||||
# event handler name
|
||||
".".join(
|
||||
filter(
|
||||
None,
|
||||
format.get_event_handler_parts(self._var_value.handler),
|
||||
)
|
||||
),
|
||||
# event handler args
|
||||
{str(name): value for name, value in self._var_value.args},
|
||||
# event actions
|
||||
self._var_value.event_actions,
|
||||
# client handler name
|
||||
*(
|
||||
[self._var_value.client_handler_name]
|
||||
if self._var_value.client_handler_name
|
||||
else []
|
||||
),
|
||||
)
|
||||
)
|
||||
|
||||
@ -1254,7 +1259,6 @@ class LiteralEventChainVar(CachedVarOperation, LiteralVar, EventChainVar):
|
||||
[LiteralVar.create(event) for event in self._var_value.events]
|
||||
),
|
||||
arg_def_expr,
|
||||
LiteralVar.create(self._var_value.event_actions),
|
||||
),
|
||||
)
|
||||
)
|
||||
|
Loading…
Reference in New Issue
Block a user