Create a slider component with consistent ID based on label
(
label: str,
min_val: float = 0.0,
max_val: float = 100.0,
step: float = 1.0,
default: float | None = None,
size: float = 1.0,
component_id: str | None = None,
**kwargs,
)
| 718 | |
| 719 | @with_render_tracking("slider") |
| 720 | def slider( |
| 721 | label: str, |
| 722 | min_val: float = 0.0, |
| 723 | max_val: float = 100.0, |
| 724 | step: float = 1.0, |
| 725 | default: float | None = None, |
| 726 | size: float = 1.0, |
| 727 | component_id: str | None = None, |
| 728 | **kwargs, |
| 729 | ) -> ComponentReturn: |
| 730 | """Create a slider component with consistent ID based on label""" |
| 731 | service = PreswaldService.get_instance() |
| 732 | |
| 733 | # Get current state or use default |
| 734 | current_value = service.get_component_state(component_id) |
| 735 | if current_value is None: |
| 736 | current_value = default if default is not None else min_val |
| 737 | |
| 738 | component = { |
| 739 | "type": "slider", |
| 740 | "id": component_id, |
| 741 | "label": label, |
| 742 | "min": min_val, |
| 743 | "max": max_val, |
| 744 | "step": step, |
| 745 | "value": current_value, |
| 746 | "size": size, |
| 747 | } |
| 748 | |
| 749 | logger.debug(f"[slider] ID={component_id}, value={current_value}") |
| 750 | return ComponentReturn(current_value, component) |
| 751 | |
| 752 | |
| 753 | @with_render_tracking("spinner") |
no test coverage detected