mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 07:03:55 +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) | CopyText = copy_ns.class_("CopyText", text.Text, cg.Component) | ||||||
|  |  | ||||||
|  |  | ||||||
| CONFIG_SCHEMA = text.TEXT_SCHEMA.extend( | CONFIG_SCHEMA = ( | ||||||
|     { |     text.text_schema(CopyText) | ||||||
|         cv.GenerateID(): cv.declare_id(CopyText), |     .extend( | ||||||
|         cv.Required(CONF_SOURCE_ID): cv.use_id(text.Text), |         { | ||||||
|     } |             cv.Required(CONF_SOURCE_ID): cv.use_id(text.Text), | ||||||
| ).extend(cv.COMPONENT_SCHEMA) |         } | ||||||
|  |     ) | ||||||
|  |     .extend(cv.COMPONENT_SCHEMA) | ||||||
|  | ) | ||||||
|  |  | ||||||
| FINAL_VALIDATE_SCHEMA = cv.All( | FINAL_VALIDATE_SCHEMA = cv.All( | ||||||
|     inherit_property_from(CONF_ICON, CONF_SOURCE_ID), |     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) | 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), |         cv.Required(CONF_WIDGET): cv.use_id(LvText), | ||||||
|     } |     } | ||||||
| ) | ) | ||||||
|   | |||||||
| @@ -46,9 +46,9 @@ def validate(config): | |||||||
|  |  | ||||||
|  |  | ||||||
| CONFIG_SCHEMA = cv.All( | 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_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_MAX_LENGTH, default=255): cv.int_range(min=0, max=255), | ||||||
|             cv.Optional(CONF_PATTERN): cv.string, |             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_INITIAL_VALUE): cv.string_strict, | ||||||
|             cv.Optional(CONF_RESTORE_VALUE, default=False): cv.boolean, |             cv.Optional(CONF_RESTORE_VALUE, default=False): cv.boolean, | ||||||
|         } |         } | ||||||
|     ).extend(cv.polling_component_schema("60s")), |     ) | ||||||
|  |     .extend(cv.polling_component_schema("60s")), | ||||||
|     validate, |     validate, | ||||||
| ) | ) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -5,6 +5,8 @@ import esphome.codegen as cg | |||||||
| from esphome.components import mqtt, web_server | from esphome.components import mqtt, web_server | ||||||
| import esphome.config_validation as cv | import esphome.config_validation as cv | ||||||
| from esphome.const import ( | from esphome.const import ( | ||||||
|  |     CONF_ENTITY_CATEGORY, | ||||||
|  |     CONF_ICON, | ||||||
|     CONF_ID, |     CONF_ID, | ||||||
|     CONF_MODE, |     CONF_MODE, | ||||||
|     CONF_MQTT_ID, |     CONF_MQTT_ID, | ||||||
| @@ -14,6 +16,7 @@ from esphome.const import ( | |||||||
|     CONF_WEB_SERVER, |     CONF_WEB_SERVER, | ||||||
| ) | ) | ||||||
| from esphome.core import CORE, coroutine_with_priority | from esphome.core import CORE, coroutine_with_priority | ||||||
|  | from esphome.cpp_generator import MockObjClass | ||||||
| from esphome.cpp_helpers import setup_entity | from esphome.cpp_helpers import setup_entity | ||||||
|  |  | ||||||
| CODEOWNERS = ["@mauritskorse"] | CODEOWNERS = ["@mauritskorse"] | ||||||
| @@ -39,7 +42,7 @@ TEXT_MODES = { | |||||||
|     "PASSWORD": TextMode.TEXT_MODE_PASSWORD,  # to be implemented for keys, passwords, etc. |     "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) |     cv.ENTITY_BASE_SCHEMA.extend(web_server.WEBSERVER_SORTING_SCHEMA) | ||||||
|     .extend(cv.MQTT_COMPONENT_SCHEMA) |     .extend(cv.MQTT_COMPONENT_SCHEMA) | ||||||
|     .extend( |     .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_( | async def setup_text_core_( | ||||||
|     var, |     var, | ||||||
|     config, |     config, | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user