HomeDashboard/.venv/lib/python3.12/site-packages/nicegui/elements/chip.py
2026-01-03 14:54:18 +01:00

60 lines
3.1 KiB
Python

from typing import Optional
from typing_extensions import Self
from ..events import ClickEventArguments, Handler, ValueChangeEventArguments, handle_event
from .mixins.color_elements import BackgroundColorElement, TextColorElement
from .mixins.disableable_element import DisableableElement
from .mixins.icon_element import IconElement
from .mixins.selectable_element import SelectableElement
from .mixins.text_element import TextElement
from .mixins.value_element import ValueElement
class Chip(IconElement, ValueElement, TextElement, BackgroundColorElement, TextColorElement, DisableableElement, SelectableElement):
TEXT_COLOR_PROP = 'text-color'
def __init__(self,
text: str = '',
*,
icon: Optional[str] = None,
color: Optional[str] = 'primary',
text_color: Optional[str] = None,
on_click: Optional[Handler[ClickEventArguments]] = None,
selectable: bool = False,
selected: bool = False,
on_selection_change: Optional[Handler[ValueChangeEventArguments]] = None,
removable: bool = False,
on_value_change: Optional[Handler[ValueChangeEventArguments]] = None,
) -> None:
"""Chip
A chip element wrapping Quasar's `QChip <https://quasar.dev/vue-components/chip>`_ component.
It can be clickable, selectable and removable.
:param text: the initial value of the text field (default: "")
:param icon: the name of an icon to be displayed on the chip (default: `None`)
:param color: the color name for component (either a Quasar, Tailwind, or CSS color or `None`, default: "primary")
:param text_color: text color (either a Quasar, Tailwind, or CSS color or `None`, default: `None`)
:param on_click: callback which is invoked when chip is clicked. Makes the chip clickable if set
:param selectable: whether the chip is selectable (default: `False`)
:param selected: whether the chip is selected (default: `False`)
:param on_selection_change: callback which is invoked when the chip's selection state is changed
:param removable: whether the chip is removable. Shows a small "x" button if True (default: `False`)
:param on_value_change: callback which is invoked when the chip is removed or unremoved
"""
super().__init__(tag='q-chip', value=True, on_value_change=on_value_change,
icon=icon, text=text, text_color=text_color, background_color=color,
selectable=selectable, selected=selected, on_selection_change=on_selection_change)
self._props['removable'] = removable
if on_click:
self.on_click(on_click)
def on_click(self, callback: Handler[ClickEventArguments]) -> Self:
"""Add a callback to be invoked when the chip is clicked."""
self._props['clickable'] = True
self.on('click', lambda _: handle_event(callback, ClickEventArguments(sender=self, client=self.client)), [])
return self