Skip to content

Instantly share code, notes, and snippets.

@jimkring
Last active May 20, 2024 03:38
Show Gist options
  • Save jimkring/dc32786cae190a3f0a12ded616d6c662 to your computer and use it in GitHub Desktop.
Save jimkring/dc32786cae190a3f0a12ded616d6c662 to your computer and use it in GitHub Desktop.
build a breadcrumb component for fastui
from fastui import components as c
from fastui.events import GoToEvent
def build_breadcrumb(links: list[tuple[str, str]]) -> c.Div:
"""
Returns a fastui `Div` component that behaves as a bootstrap `breadcrumb`.
`links` input is a list of tuples like [(display_text, url_string), ...].
Each link becomes a sub `Div` marked with the bootstrap `breadcrumb-item` class.
Is marked with the `breadcrumb-item active` class to style it appropriately.
See also: https://getbootstrap.com/docs/4.0/components/breadcrumb/
"""
breadcrumb_items = []
for i, link in enumerate(links):
is_last_link = i == len(links) - 1
if link[1]:
item_component = c.Link(
components=[c.Text(text=link[0])],
on_click=GoToEvent(url=link[1]),
)
else:
item_component = c.Text(text=link[0])
if is_last_link:
class_name = 'breadcrumb-item active'
else:
class_name = 'breadcrumb-item'
breadcrumb_items.append(
c.Div(
class_name=class_name,
components=[item_component],
),
)
return c.Div(class_name='breadcrumb', components=breadcrumb_items)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment