Skip to content

Discussion about item data source (for list_view, picker, etc) #399

@mofojed

Description

@mofojed

In the ui.picker spec:

ui.picker(
    *children: PickerItem | SectionElement | Table | PartitionedTable,
    key_column: ColumnName | None = None,
    label_column: ColumnName | None = None,
    description_column: ColumnName | None = None,
    icon_column: ColumnName | None = None,
    title_column: ColumnName | None = None,
    ...

Similarly, in ui.list_view spec:

ui.list_view(
    *children: ListViewItem | Table,
    key_column: ColumnName | None = None,
    label_column: ColumnName | None = None,
    description_column: ColumnName | None = None,
    icon_column: ColumnName | None = None,

All of those *_column arguments are only valid when the children passed in is a Table (or PartitionedTable) type.

What if we define a item_table_source that can be used in either, e.g.:

class ItemDataSource(TypedDict):
  table: Table | PartitionedTable
  key_column: ColumnName | None
  label_column: ColumnName | None
  description_column: ColumnName | None
  icon_column: ColumnName | None
  title_column: ColumnName | None
  actions: ListActionGroupElement | ListActionMenuElement | None

item_table_source(
  table: | Table | PartitionedTable,
  key_column: ColumnName | None = None,
  label_column: ColumnName | None = None,
  description_column: ColumnName | None = None,
  icon_column: ColumnName | None = None,
  title_column: ColumnName | None = None,
) -> ItemDataSource

ui.picker(
    *children: PickerItem | SectionElement | ItemDataSource,
)

ui.list_view(
    *children: PickerItem | SectionElement | ItemDataSource,
)

That way the args are only available when using a table as a data source.

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions