Source code for imednet_streamlit.components.tables

from __future__ import annotations

import pandas as pd
import streamlit as st

from .paginated_grid import paginated_slice


[docs]def filterable_dataframe(df: pd.DataFrame, key: str, height: int = 400) -> None: """Render a searchable and paginated dataframe. Args: df: Source DataFrame to display. key: Unique key namespace used for filter and pagination widgets. height: Height in pixels passed to ``st.dataframe``. """ query = st.text_input("🔍 Filter rows", key=f"filter_{key}") if query: mask = df.apply(lambda col: col.astype(str).str.contains(query, case=False, na=False)) df = df[mask.any(axis=1)] page_df = paginated_slice(df, key=key) st.dataframe(page_df, use_container_width=True, height=height)