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.") | |