Adding all files
This commit is contained in:
191
.local/lib/python3.14/site-packages/disnake/ui/text_input.py
Normal file
191
.local/lib/python3.14/site-packages/disnake/ui/text_input.py
Normal file
@@ -0,0 +1,191 @@
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import os
|
||||
from typing import TYPE_CHECKING, ClassVar, Optional, Tuple
|
||||
|
||||
from ..components import TextInput as TextInputComponent
|
||||
from ..enums import ComponentType, TextInputStyle
|
||||
from ..utils import MISSING, deprecated
|
||||
from .item import WrappedComponent
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from typing_extensions import Self
|
||||
|
||||
__all__ = ("TextInput",)
|
||||
|
||||
|
||||
class TextInput(WrappedComponent):
|
||||
"""Represents a UI text input.
|
||||
|
||||
This can only be used in a :class:`~.ui.Modal`.
|
||||
|
||||
.. versionadded:: 2.4
|
||||
|
||||
Parameters
|
||||
----------
|
||||
label: Optional[:class:`str`]
|
||||
The label of the text input.
|
||||
|
||||
.. deprecated:: 2.11
|
||||
This is deprecated in favor of :attr:`Label.text <.ui.Label.text>` and
|
||||
:attr:`.description <.ui.Label.description>`.
|
||||
|
||||
custom_id: :class:`str`
|
||||
The ID of the text input that gets received during an interaction.
|
||||
If not given then one is generated for you.
|
||||
style: :class:`.TextInputStyle`
|
||||
The style of the text input.
|
||||
placeholder: Optional[:class:`str`]
|
||||
The placeholder text that is shown if nothing is entered.
|
||||
value: Optional[:class:`str`]
|
||||
The pre-filled value of the text input.
|
||||
required: :class:`bool`
|
||||
Whether the text input is required. Defaults to ``True``.
|
||||
min_length: Optional[:class:`int`]
|
||||
The minimum length of the text input.
|
||||
max_length: Optional[:class:`int`]
|
||||
The maximum length of the text input.
|
||||
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.
|
||||
|
||||
.. versionadded:: 2.11
|
||||
"""
|
||||
|
||||
__repr_attributes__: ClassVar[Tuple[str, ...]] = (
|
||||
"style",
|
||||
"custom_id",
|
||||
"placeholder",
|
||||
"value",
|
||||
"required",
|
||||
"min_length",
|
||||
"max_length",
|
||||
)
|
||||
# We have to set this to MISSING in order to overwrite the abstract property from UIComponent
|
||||
_underlying: TextInputComponent = MISSING
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
*,
|
||||
label: Optional[str] = None,
|
||||
custom_id: str = MISSING,
|
||||
style: TextInputStyle = TextInputStyle.short,
|
||||
placeholder: Optional[str] = None,
|
||||
value: Optional[str] = None,
|
||||
required: bool = True,
|
||||
min_length: Optional[int] = None,
|
||||
max_length: Optional[int] = None,
|
||||
id: int = 0,
|
||||
) -> None:
|
||||
custom_id = os.urandom(16).hex() if custom_id is MISSING else custom_id
|
||||
self._underlying = TextInputComponent._raw_construct(
|
||||
type=ComponentType.text_input,
|
||||
id=id,
|
||||
style=style,
|
||||
label=label,
|
||||
custom_id=custom_id,
|
||||
placeholder=placeholder,
|
||||
value=value,
|
||||
required=required,
|
||||
min_length=min_length,
|
||||
max_length=max_length,
|
||||
)
|
||||
|
||||
@property
|
||||
def width(self) -> int:
|
||||
return 5
|
||||
|
||||
@property
|
||||
def style(self) -> TextInputStyle:
|
||||
""":class:`.TextInputStyle`: The style of the text input."""
|
||||
return self._underlying.style
|
||||
|
||||
@style.setter
|
||||
def style(self, value: TextInputStyle) -> None:
|
||||
self._underlying.style = value
|
||||
|
||||
@property
|
||||
@deprecated('ui.Label("<text>", ui.TextInput(...))')
|
||||
def label(self) -> Optional[str]:
|
||||
""":class:`str`: The label of the text input.
|
||||
|
||||
.. deprecated:: 2.11
|
||||
This is deprecated in favor of :class:`.ui.Label`.
|
||||
"""
|
||||
return self._underlying.label
|
||||
|
||||
@label.setter
|
||||
@deprecated('ui.Label("<text>", ui.TextInput(...))')
|
||||
def label(self, value: str) -> None:
|
||||
self._underlying.label = value
|
||||
|
||||
@property
|
||||
def custom_id(self) -> str:
|
||||
""":class:`str`: The ID of the text input that gets received during an interaction."""
|
||||
return self._underlying.custom_id
|
||||
|
||||
@custom_id.setter
|
||||
def custom_id(self, value: str) -> None:
|
||||
self._underlying.custom_id = value
|
||||
|
||||
@property
|
||||
def placeholder(self) -> Optional[str]:
|
||||
"""Optional[:class:`str`]: The placeholder text that is shown if nothing is entered."""
|
||||
return self._underlying.placeholder
|
||||
|
||||
@placeholder.setter
|
||||
def placeholder(self, value: Optional[str]) -> None:
|
||||
self._underlying.placeholder = value
|
||||
|
||||
@property
|
||||
def value(self) -> Optional[str]:
|
||||
"""Optional[:class:`str`]: The pre-filled text of the text input."""
|
||||
return self._underlying.value
|
||||
|
||||
@value.setter
|
||||
def value(self, value: Optional[str]) -> None:
|
||||
self._underlying.value = value
|
||||
|
||||
@property
|
||||
def required(self) -> bool:
|
||||
""":class:`bool`: Whether the text input is required."""
|
||||
return self._underlying.required
|
||||
|
||||
@required.setter
|
||||
def required(self, value: bool) -> None:
|
||||
self._underlying.required = value
|
||||
|
||||
@property
|
||||
def min_length(self) -> Optional[int]:
|
||||
"""Optional[:class:`int`]: The minimum length of the text input."""
|
||||
return self._underlying.min_length
|
||||
|
||||
@min_length.setter
|
||||
def min_length(self, value: Optional[int]) -> None:
|
||||
self._underlying.min_length = value
|
||||
|
||||
@property
|
||||
def max_length(self) -> Optional[int]:
|
||||
"""Optional[:class:`int`]: The maximum length of the text input."""
|
||||
return self._underlying.max_length
|
||||
|
||||
@max_length.setter
|
||||
def max_length(self, value: Optional[int]) -> None:
|
||||
self._underlying.max_length = value
|
||||
|
||||
@classmethod
|
||||
def from_component(cls, text_input: TextInputComponent) -> Self:
|
||||
return cls(
|
||||
label=text_input.label or "",
|
||||
custom_id=text_input.custom_id,
|
||||
style=text_input.style,
|
||||
placeholder=text_input.placeholder,
|
||||
value=text_input.value,
|
||||
required=text_input.required,
|
||||
min_length=text_input.min_length,
|
||||
max_length=text_input.max_length,
|
||||
id=text_input.id,
|
||||
)
|
||||
Reference in New Issue
Block a user