|
2 | 2 | from datetime import date, datetime, time |
3 | 3 | from typing import List, Optional, Union |
4 | 4 |
|
5 | | -from pydantic import AnyUrl, Field, model_validator |
| 5 | +from pydantic import AnyUrl, EmailStr, Field, model_validator |
6 | 6 | from pydantic.networks import HttpUrl |
7 | 7 |
|
8 | 8 | from blockkit.components import Component |
|
52 | 52 | "RichTextSection", |
53 | 53 | "RichTextList", |
54 | 54 | "FileInput", |
| 55 | + "EmailTextInput", |
| 56 | + "URLTextInput", |
55 | 57 | ] |
56 | 58 |
|
57 | 59 |
|
@@ -738,3 +740,58 @@ def __init__( |
738 | 740 | max_files=max_files, |
739 | 741 | ) |
740 | 742 |
|
| 743 | + |
| 744 | +class EmailTextInput(FocusableElement): |
| 745 | + type: str = "email_text_input" |
| 746 | + placeholder: Union[PlainText, str, None] = None |
| 747 | + initial_value: Optional[EmailStr] = None |
| 748 | + dispatch_action_config: Optional[DispatchActionConfig] = None |
| 749 | + |
| 750 | + _validate_placeholder = validator( |
| 751 | + "placeholder", validate_text_length, max_length=150 |
| 752 | + ) |
| 753 | + |
| 754 | + def __init__( |
| 755 | + self, |
| 756 | + *, |
| 757 | + action_id: Optional[str] = None, |
| 758 | + placeholder: Union[PlainText, str, None] = None, |
| 759 | + initial_value: Optional[EmailStr] = None, |
| 760 | + dispatch_action_config: Optional[DispatchActionConfig] = None, |
| 761 | + focus_on_load: Optional[bool] = None, |
| 762 | + ): |
| 763 | + super().__init__( |
| 764 | + action_id=action_id, |
| 765 | + placeholder=placeholder, |
| 766 | + initial_value=initial_value, |
| 767 | + dispatch_action_config=dispatch_action_config, |
| 768 | + focus_on_load=focus_on_load, |
| 769 | + ) |
| 770 | + |
| 771 | + |
| 772 | +class URLTextInput(FocusableElement): |
| 773 | + type: str = "url_text_input" |
| 774 | + placeholder: Union[PlainText, str, None] = None |
| 775 | + initial_value: Optional[AnyUrl] = None |
| 776 | + dispatch_action_config: Optional[DispatchActionConfig] = None |
| 777 | + |
| 778 | + _validate_placeholder = validator( |
| 779 | + "placeholder", validate_text_length, max_length=150 |
| 780 | + ) |
| 781 | + |
| 782 | + def __init__( |
| 783 | + self, |
| 784 | + *, |
| 785 | + action_id: Optional[str] = None, |
| 786 | + placeholder: Union[PlainText, str, None] = None, |
| 787 | + initial_value: Optional[AnyUrl] = None, |
| 788 | + dispatch_action_config: Optional[DispatchActionConfig] = None, |
| 789 | + focus_on_load: Optional[bool] = None, |
| 790 | + ): |
| 791 | + super().__init__( |
| 792 | + action_id=action_id, |
| 793 | + placeholder=placeholder, |
| 794 | + initial_value=initial_value, |
| 795 | + dispatch_action_config=dispatch_action_config, |
| 796 | + focus_on_load=focus_on_load, |
| 797 | + ) |
0 commit comments