|
1 | 1 | from __future__ import annotations |
2 | 2 |
|
3 | | -from typing import TYPE_CHECKING, Literal, Iterable, Optional, TypeVar |
| 3 | +from typing import TYPE_CHECKING, Literal, Optional, TypeVar |
4 | 4 |
|
5 | 5 | from htmltools import Tag, TagAttrs, TagAttrValue, TagChild, css, tags |
6 | 6 |
|
|
9 | 9 | from .._utils import drop_none, private_random_id |
10 | 10 | from ..bookmark import restore_input |
11 | 11 | from ..session import require_active_session |
12 | | -from ..types import MISSING, MISSING_TYPE |
| 12 | +from ..types import ListOrTuple, MISSING, MISSING_TYPE |
13 | 13 | from ._html_deps_shinyverse import components_dependencies |
14 | 14 | from ._tag import consolidate_attrs |
15 | 15 | from .css._css_unit import CssUnit, as_css_unit |
@@ -176,7 +176,7 @@ def tagify(self) -> Tag: |
176 | 176 | def accordion( |
177 | 177 | *args: AccordionPanel | TagAttrs, |
178 | 178 | id: Optional[str] = None, |
179 | | - open: Optional[bool | str | Iterable[str]] = None, |
| 179 | + open: Optional[bool | str | ListOrTuple[str]] = None, |
180 | 180 | multiple: bool = True, |
181 | 181 | class_: Optional[str] = None, |
182 | 182 | width: Optional[CssUnit] = None, |
@@ -264,9 +264,9 @@ def accordion( |
264 | 264 | elif isinstance(open, bool): |
265 | 265 | is_open = [open] * len(panels) |
266 | 266 | else: |
267 | | - # str | Iterable[str] -> set |
268 | | - open = {open} if isinstance(open, str) else set(open) |
269 | | - is_open = [panel._data_value in open for panel in panels] |
| 267 | + # str | ListOrTuple[str] -> set |
| 268 | + open_set = {open} if isinstance(open, str) else set(open) |
| 269 | + is_open = [panel._data_value in open_set for panel in panels] |
270 | 270 |
|
271 | 271 | if (not multiple) and sum(is_open) > 1: |
272 | 272 | raise ValueError("Can't select more than one panel when `multiple = False`") |
|
0 commit comments