@@ -76,34 +76,42 @@ class HaServicePicker extends LitElement {
7676 </ ha-combo-box-item >
7777 ` ;
7878
79- private _valueRenderer : PickerValueRenderer = ( value ) => {
80- const serviceId = value ;
81- const [ domain , service ] = serviceId . split ( "." ) ;
82-
83- if ( ! this . hass . services [ domain ] ?. [ service ] ) {
84- return html `
85- < ha-svg-icon slot ="start " .path =${ mdiRoomService } > </ ha-svg-icon >
86- < span slot ="headline "> ${ value } </ span >
87- ` ;
88- }
89-
90- const serviceName =
91- this . hass . localize ( `component.${ domain } .services.${ service } .name` ) ||
92- this . hass . services [ domain ] [ service ] . name ||
93- service ;
94-
95- return html `
96- < ha-service-icon
97- slot ="start "
98- .hass =${ this . hass }
99- .service =${ serviceId }
100- > </ ha-service-icon >
101- < span slot ="headline "> ${ serviceName } </ span >
102- ${ this . showServiceId
103- ? html `< span slot ="supporting-text " class ="code "> ${ serviceId } </ span > `
104- : nothing }
105- ` ;
106- } ;
79+ private _valueRenderer = memoizeOne (
80+ (
81+ localize : LocalizeFunc ,
82+ services : HomeAssistant [ "services" ]
83+ ) : PickerValueRenderer =>
84+ ( value ) => {
85+ const serviceId = value ;
86+ const [ domain , service ] = serviceId . split ( "." ) ;
87+
88+ if ( ! services [ domain ] ?. [ service ] ) {
89+ return html `
90+ < ha-svg-icon slot ="start " .path =${ mdiRoomService } > </ ha-svg-icon >
91+ < span slot ="headline "> ${ value } </ span >
92+ ` ;
93+ }
94+
95+ const serviceName =
96+ localize ( `component.${ domain } .services.${ service } .name` ) ||
97+ services [ domain ] [ service ] . name ||
98+ service ;
99+
100+ return html `
101+ < ha-service-icon
102+ slot ="start "
103+ .hass =${ this . hass }
104+ .service =${ serviceId }
105+ > </ ha-service-icon >
106+ < span slot ="headline "> ${ serviceName } </ span >
107+ ${ this . showServiceId
108+ ? html `< span slot ="supporting-text " class ="code "
109+ > ${ serviceId } </ span
110+ > `
111+ : nothing }
112+ ` ;
113+ }
114+ ) ;
107115
108116 protected render ( ) : TemplateResult {
109117 const placeholder =
@@ -123,7 +131,10 @@ class HaServicePicker extends LitElement {
123131 .value=${ this . value }
124132 .getItems=${ this . _getItems }
125133 .rowRenderer=${ this . _rowRenderer }
126- .valueRenderer=${ this . _valueRenderer }
134+ .valueRenderer=${ this . _valueRenderer (
135+ this . hass . localize ,
136+ this . hass . services
137+ ) }
127138 @value-changed=${ this . _valueChanged }
128139 >
129140 </ ha-generic-picker >
0 commit comments