Closed
Description
openedon Nov 13, 2023
Make triggered_id available clientside like in #1240
It would be convenient to include triggered_id
with clientside callbacks as well, so you could get the id simply by:
from dash import Dash, html, Input, Output
app = Dash(prevent_initial_callbacks=True)
app.layout = html.Div([
html.Button("Button 1", id="btn1"),
html.Button("Button 2", id="btn2"),
html.Button("Button 3", id="btn3"),
html.Div(id="log")
])
app.clientside_callback(
"""
function(){
const triggered_id = dash_clientside.callback_context.triggered_id
return "triggered id: " + triggered_id
}
""",
Output("log", "children"),
Input("btn1", "n_clicks"),
Input("btn2", "n_clicks"),
Input("btn3", "n_clicks"),
)
if __name__ == '__main__':
app.run_server()
And with pattern matching callbacks you can access the dict id like this:
from dash import Dash, html, Input, Output, ALL
app = Dash(prevent_initial_callbacks=True)
app.layout = html.Div([
html.Button("Button 4", id={"type": "btn", "index":4}),
html.Button("Button 5", id={"type": "btn", "index":5}),
html.Button("Button 6", id={"type": "btn", "index":6}),
html.Div(id="log")
])
app.clientside_callback(
"""
function(){
const triggered_id = dash_clientside.callback_context.triggered_id
return "triggered button index # " + triggered_id.index;
}
""",
Output("log", "children"),
Input({"type":"btn","index":ALL}, "n_clicks" )
)
if __name__ == '__main__':
app.run_server()
@alexcjohnson I have a PR ready to go if you would like it 🙂
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Metadata
Assignees
Labels
No labels