Spaces:
Running
Running
import streamlit as st | |
HAS_CONFIRMED = "SAFELY_UPDATE" | |
def handle_on_click(on_click): | |
"""Handles on_click by waiting for the confirmation.""" | |
if st.session_state.get(HAS_CONFIRMED): | |
return on_click | |
else: | |
def toggle_has_confirmed(*args, **kwargs): | |
del args, kwargs # unused. | |
st.session_state[HAS_CONFIRMED] = not st.session_state.get(HAS_CONFIRMED) | |
return toggle_has_confirmed | |
def button_with_confirmation( | |
label: str, | |
key: str = None, | |
on_click=None, | |
args=None, | |
kwargs=None, | |
): | |
"""Implements a safe button that asks for confirmation before executing on_click.""" | |
st.button( | |
label, | |
on_click=handle_on_click(on_click), | |
args=args, | |
kwargs=kwargs, | |
key=key, | |
type="secondary", | |
) | |
if st.session_state.get(HAS_CONFIRMED): | |
st.error(f"Do you really want to {label.lower()}? Click again to confirm.") | |