mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-30 22:53:59 +00:00 
			
		
		
		
	[text] Move to use `text_schema(..) instead of TEXT_SCHEMA` (#8727)
				
					
				
			This commit is contained in:
		| @@ -9,12 +9,15 @@ from .. import copy_ns | ||||
| CopyText = copy_ns.class_("CopyText", text.Text, cg.Component) | ||||
|  | ||||
|  | ||||
| CONFIG_SCHEMA = text.TEXT_SCHEMA.extend( | ||||
|     { | ||||
|         cv.GenerateID(): cv.declare_id(CopyText), | ||||
|         cv.Required(CONF_SOURCE_ID): cv.use_id(text.Text), | ||||
|     } | ||||
| ).extend(cv.COMPONENT_SCHEMA) | ||||
| CONFIG_SCHEMA = ( | ||||
|     text.text_schema(CopyText) | ||||
|     .extend( | ||||
|         { | ||||
|             cv.Required(CONF_SOURCE_ID): cv.use_id(text.Text), | ||||
|         } | ||||
|     ) | ||||
|     .extend(cv.COMPONENT_SCHEMA) | ||||
| ) | ||||
|  | ||||
| FINAL_VALIDATE_SCHEMA = cv.All( | ||||
|     inherit_property_from(CONF_ICON, CONF_SOURCE_ID), | ||||
|   | ||||
| @@ -19,9 +19,8 @@ from ..widgets import get_widgets, wait_for_widgets | ||||
|  | ||||
| LVGLText = lvgl_ns.class_("LVGLText", text.Text) | ||||
|  | ||||
| CONFIG_SCHEMA = text.TEXT_SCHEMA.extend( | ||||
| CONFIG_SCHEMA = text.text_schema(LVGLText).extend( | ||||
|     { | ||||
|         cv.GenerateID(): cv.declare_id(LVGLText), | ||||
|         cv.Required(CONF_WIDGET): cv.use_id(LvText), | ||||
|     } | ||||
| ) | ||||
|   | ||||
| @@ -46,9 +46,9 @@ def validate(config): | ||||
|  | ||||
|  | ||||
| CONFIG_SCHEMA = cv.All( | ||||
|     text.TEXT_SCHEMA.extend( | ||||
|     text.text_schema(TemplateText) | ||||
|     .extend( | ||||
|         { | ||||
|             cv.GenerateID(): cv.declare_id(TemplateText), | ||||
|             cv.Optional(CONF_MIN_LENGTH, default=0): cv.int_range(min=0, max=255), | ||||
|             cv.Optional(CONF_MAX_LENGTH, default=255): cv.int_range(min=0, max=255), | ||||
|             cv.Optional(CONF_PATTERN): cv.string, | ||||
| @@ -58,7 +58,8 @@ CONFIG_SCHEMA = cv.All( | ||||
|             cv.Optional(CONF_INITIAL_VALUE): cv.string_strict, | ||||
|             cv.Optional(CONF_RESTORE_VALUE, default=False): cv.boolean, | ||||
|         } | ||||
|     ).extend(cv.polling_component_schema("60s")), | ||||
|     ) | ||||
|     .extend(cv.polling_component_schema("60s")), | ||||
|     validate, | ||||
| ) | ||||
|  | ||||
|   | ||||
| @@ -5,6 +5,8 @@ import esphome.codegen as cg | ||||
| from esphome.components import mqtt, web_server | ||||
| import esphome.config_validation as cv | ||||
| from esphome.const import ( | ||||
|     CONF_ENTITY_CATEGORY, | ||||
|     CONF_ICON, | ||||
|     CONF_ID, | ||||
|     CONF_MODE, | ||||
|     CONF_MQTT_ID, | ||||
| @@ -14,6 +16,7 @@ from esphome.const import ( | ||||
|     CONF_WEB_SERVER, | ||||
| ) | ||||
| from esphome.core import CORE, coroutine_with_priority | ||||
| from esphome.cpp_generator import MockObjClass | ||||
| from esphome.cpp_helpers import setup_entity | ||||
|  | ||||
| CODEOWNERS = ["@mauritskorse"] | ||||
| @@ -39,7 +42,7 @@ TEXT_MODES = { | ||||
|     "PASSWORD": TextMode.TEXT_MODE_PASSWORD,  # to be implemented for keys, passwords, etc. | ||||
| } | ||||
|  | ||||
| TEXT_SCHEMA = ( | ||||
| _TEXT_SCHEMA = ( | ||||
|     cv.ENTITY_BASE_SCHEMA.extend(web_server.WEBSERVER_SORTING_SCHEMA) | ||||
|     .extend(cv.MQTT_COMPONENT_SCHEMA) | ||||
|     .extend( | ||||
| @@ -57,6 +60,29 @@ TEXT_SCHEMA = ( | ||||
| ) | ||||
|  | ||||
|  | ||||
| def text_schema( | ||||
|     class_: MockObjClass = cv.UNDEFINED, | ||||
|     *, | ||||
|     icon: str = cv.UNDEFINED, | ||||
|     entity_category: str = cv.UNDEFINED, | ||||
|     mode: str = cv.UNDEFINED, | ||||
| ) -> cv.Schema: | ||||
|     schema = {} | ||||
|  | ||||
|     if class_ is not cv.UNDEFINED: | ||||
|         schema[cv.GenerateID()] = cv.declare_id(class_) | ||||
|  | ||||
|     for key, default, validator in [ | ||||
|         (CONF_ICON, icon, cv.icon), | ||||
|         (CONF_ENTITY_CATEGORY, entity_category, cv.entity_category), | ||||
|         (CONF_MODE, mode, cv.enum(TEXT_MODES, upper=True)), | ||||
|     ]: | ||||
|         if default is not cv.UNDEFINED: | ||||
|             schema[cv.Optional(key, default=default)] = validator | ||||
|  | ||||
|     return _TEXT_SCHEMA.extend(schema) | ||||
|  | ||||
|  | ||||
| async def setup_text_core_( | ||||
|     var, | ||||
|     config, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user