12#define LOG_SELECT(prefix, type, obj) \
13 if ((obj) != nullptr) { \
14 ESP_LOGCONFIG(TAG, "%s%s '%s'", prefix, LOG_STR_LITERAL(type), (obj)->get_name().c_str()); \
15 LOG_ENTITY_ICON(TAG, prefix, *(obj)); \
18#define SUB_SELECT(name) \
20 select::Select *name##_select_{nullptr}; \
23 void set_##name##_select(select::Select *select) { this->name##_select_ = select; }
33#pragma GCC diagnostic push
34#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
36 ESPDEPRECATED(
"Use current_option() instead of .state. Will be removed in 2026.7.0",
"2026.1.0")
41#pragma GCC diagnostic pop
56 bool has_option(
const std::string &option)
const;
77 const char *
option_at(
size_t index)
const;
108 virtual void control(
const std::string &value) {
110 if (index.has_value()) {
ESPDEPRECATED("Use make_entity_preference<T>() instead, or preferences won't be migrated. " "See https://github.com/esphome/backlog/issues/85. Will be removed in 2027.1.0.", "2026.7.0") uint32_t get_preference_hash()
Get a unique hash for storing preferences/settings for this entity.
StringRef is a reference to a string owned by something else.
Base-class for all selects.
const char * option_at(size_t index) const
Return the option value at the provided index offset (as const char* from flash).
SelectCall make_call()
Instantiate a SelectCall object to modify this select component's state.
virtual void control(size_t index)
Set the value of the select by index, this is an optional virtual method.
optional< size_t > active_index() const
Return the (optional) index offset of the currently active option.
LazyCallbackManager< void(size_t)> state_callback_
size_t size() const
Return the number of options in this select component.
optional< size_t > index_of(const std::string &option) const
optional< std::string > at(size_t index) const
Return the (optional) option value at the provided index offset.
bool has_option(const std::string &option) const
Return whether this select component contains the provided option.
optional< size_t > index_of(const char *option, size_t len) const
Find the (optional) index offset of the provided option value.
ESPDEPRECATED("Use current_option() instead of .state. Will be removed in 2026.7.0", "2026.1.0") std Select()=default
bool has_index(size_t index) const
Return whether this select component contains the provided index offset.
virtual void control(const std::string &value)
Set the value of the select, this is a virtual method that each select integration can implement.
void add_on_state_callback(std::function< void(size_t)> &&callback)
optional< size_t > index_of(const char *option) const
StringRef current_option() const
Return the currently selected option, or empty StringRef if no state.
void publish_state(const std::string &state)