Adding all files
This commit is contained in:
106
.local/lib/python3.14/site-packages/disnake/ui/label.py
Normal file
106
.local/lib/python3.14/site-packages/disnake/ui/label.py
Normal file
@@ -0,0 +1,106 @@
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import TYPE_CHECKING, Any, ClassVar, Optional, Tuple, Union, cast
|
||||
|
||||
from ..components import Label as LabelComponent
|
||||
from ..enums import ComponentType
|
||||
from ..utils import copy_doc
|
||||
from .item import UIComponent, ensure_ui_component
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from typing_extensions import Self
|
||||
|
||||
from ._types import AnySelect
|
||||
from .text_input import TextInput
|
||||
|
||||
LabelChildUIComponent = Union[TextInput, AnySelect[Any]]
|
||||
|
||||
__all__ = ("Label",)
|
||||
|
||||
|
||||
class Label(UIComponent):
|
||||
"""Represents a UI label.
|
||||
|
||||
This wraps other components with a label and an optional description,
|
||||
and can only be used in modals.
|
||||
|
||||
.. versionadded:: 2.11
|
||||
|
||||
Parameters
|
||||
----------
|
||||
text: :class:`str`
|
||||
The label text.
|
||||
component: Union[:class:`TextInput`, :class:`BaseSelect`]
|
||||
The component within the label.
|
||||
Currently supports :class:`.ui.TextInput` and
|
||||
select menus (e.g. :class:`.ui.StringSelect`).
|
||||
description: Optional[:class:`str`]
|
||||
The description text for the label.
|
||||
id: :class:`int`
|
||||
The numeric identifier for the component. Must be unique within the message.
|
||||
If set to ``0`` (the default) when sending a component, the API will assign
|
||||
sequential identifiers to the components in the message.
|
||||
|
||||
Attributes
|
||||
----------
|
||||
text: :class:`str`
|
||||
The label text.
|
||||
component: Union[:class:`TextInput`, :class:`BaseSelect`]
|
||||
The component within the label.
|
||||
description: Optional[:class:`str`]
|
||||
The description text for the label.
|
||||
"""
|
||||
|
||||
__repr_attributes__: ClassVar[Tuple[str, ...]] = (
|
||||
"text",
|
||||
"description",
|
||||
"component",
|
||||
)
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
text: str,
|
||||
component: LabelChildUIComponent,
|
||||
*,
|
||||
description: Optional[str] = None,
|
||||
id: int = 0,
|
||||
) -> None:
|
||||
self._id: int = id
|
||||
|
||||
self.text: str = text
|
||||
self.description: Optional[str] = description
|
||||
self.component: LabelChildUIComponent = ensure_ui_component(component)
|
||||
|
||||
# these are reimplemented here to store the value in a separate attribute,
|
||||
# since `Label` lazily constructs `_underlying`, unlike most components
|
||||
@property
|
||||
@copy_doc(UIComponent.id)
|
||||
def id(self) -> int:
|
||||
return self._id
|
||||
|
||||
@id.setter
|
||||
def id(self, value: int) -> None:
|
||||
self._id = value
|
||||
|
||||
@property
|
||||
def _underlying(self) -> LabelComponent:
|
||||
return LabelComponent._raw_construct(
|
||||
type=ComponentType.label,
|
||||
id=self._id,
|
||||
text=self.text,
|
||||
description=self.description,
|
||||
component=self.component._underlying,
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def from_component(cls, label: LabelComponent) -> Self:
|
||||
from .action_row import _to_ui_component
|
||||
|
||||
return cls(
|
||||
text=label.text,
|
||||
description=label.description,
|
||||
component=cast("LabelChildUIComponent", _to_ui_component(label.component)),
|
||||
id=label.id,
|
||||
)
|
||||
Reference in New Issue
Block a user