@@ -103,6 +103,10 @@ export const VListItem = genericComponent<new () => {
103103
104104 emits : {
105105 click : ( e : MouseEvent | KeyboardEvent ) => true ,
106+ 'click:prependIcon' : ( e : MouseEvent | KeyboardEvent ) => true ,
107+ 'click:prependAvatar' : ( e : MouseEvent | KeyboardEvent ) => true ,
108+ 'click:appendIcon' : ( e : MouseEvent | KeyboardEvent ) => true ,
109+ 'click:appendAvatar' : ( e : MouseEvent | KeyboardEvent ) => true ,
106110 } ,
107111
108112 setup ( props , { attrs, slots, emit } ) {
@@ -162,6 +166,27 @@ export const VListItem = genericComponent<new () => {
162166 props . value != null && select ( ! isSelected . value , e )
163167 }
164168
169+ function onPrependAvatarClick ( e : MouseEvent ) {
170+ e . stopImmediatePropagation ( )
171+ emit ( 'click:prependAvatar' , e )
172+ }
173+
174+ function onPrependIconClick ( e : MouseEvent ) {
175+ e . stopImmediatePropagation ( )
176+ emit ( 'click:prependIcon' , e )
177+ }
178+
179+ function onAppendAvatarClick ( e : MouseEvent ) {
180+ e . stopImmediatePropagation ( )
181+ emit ( 'click:appendAvatar' , e )
182+ }
183+
184+ function onAppendIconClick ( e : MouseEvent ) {
185+ e . stopImmediatePropagation ( )
186+ emit ( 'click:appendIcon' , e )
187+ }
188+
189+
165190 function onKeyDown ( e : KeyboardEvent ) {
166191 if ( e . key === 'Enter' || e . key === ' ' ) {
167192 e . preventDefault ( )
@@ -231,11 +256,11 @@ export const VListItem = genericComponent<new () => {
231256 >
232257 < div class = "v-list-item__prepend" >
233258 { props . prependAvatar && (
234- < VAvatar key = "prepend-avatar" />
259+ < VAvatar key = "prepend-avatar" onClick = { onPrependAvatarClick } />
235260 ) }
236261
237262 { props . prependIcon && (
238- < VIcon key = "prepend-icon" />
263+ < VIcon key = "prepend-icon" onClick = { onPrependIconClick } />
239264 ) }
240265
241266 { slots . prepend ?.( slotProps . value ) }
@@ -280,11 +305,11 @@ export const VListItem = genericComponent<new () => {
280305 { slots . append ?.( slotProps . value ) }
281306
282307 { props . appendIcon && (
283- < VIcon key = "append-icon" />
308+ < VIcon key = "append-icon" onClick = { onAppendIconClick } />
284309 ) }
285310
286311 { props . appendAvatar && (
287- < VAvatar key = "append-avatar" />
312+ < VAvatar key = "append-avatar" onClick = { onAppendAvatarClick } />
288313 ) }
289314 </ div >
290315 </ VDefaultsProvider >
0 commit comments