St.experimental_rerun() for sortable repeating (input-)panels

Hi!

It’s amazing how easy it is to build dynamic web apps with Streamlit :smiling_face:!

I needed a panel of repeating elements for a project. To show what i mean I made this example for you (see below): You can select elements (“events”) and then enter a date for each element. After clicking the “Sort by Date”-button the elements/“events” will be sorted by date. This was only possible by using st.session_state() and st.experimental_rerun() (please tell me if there’s a better way to do this). It would be wonderful if st.experimental_rerun() would find its way to Streamlit core someday :smiling_face: :balloon:

[Edited: It’s now possible to sort the events also by clicking up/down-buttons]
Here is my example: :balloon:
https://share.streamlit.io/mckry/streamlit_sortable_repeating/app.py

Max

3 Likes

Nice one! Rerun and session state is a reasonable way to do this. If you want more interactivity (drag & drop, fancy styling, different views, etc.) then Streamlit supports component extensibility using React and other web frameworks.

Thank you @asehmi :blush:! Probably I should use react for creating customized components… However, I haven’t used React for ages so i tried to solve my problem in pure Python :smiley:

1 Like

I think streamlit-elements holds the key for those of us who can’t go deep into React components but still are able to achieve some magic. Not that Streamlit itself isn’t magic enough!! :yum: