This repository was archived by the owner on Jul 19, 2025. It is now read-only.
File tree Expand file tree Collapse file tree 2 files changed +35
-0
lines changed Expand file tree Collapse file tree 2 files changed +35
-0
lines changed Original file line number Diff line number Diff line change @@ -396,6 +396,38 @@ describe('defineCustomElement', () => {
396
396
expect ( e . value ) . toBe ( 'hi' )
397
397
} )
398
398
399
+ // #12214
400
+ test ( 'Boolean prop with default true' , async ( ) => {
401
+ const E = defineCustomElement ( {
402
+ props : {
403
+ foo : {
404
+ type : Boolean ,
405
+ default : true ,
406
+ } ,
407
+ } ,
408
+ render ( ) {
409
+ return String ( this . foo )
410
+ } ,
411
+ } )
412
+ customElements . define ( 'my-el-default-true' , E )
413
+ container . innerHTML = `<my-el-default-true></my-el-default-true>`
414
+ const e = container . childNodes [ 0 ] as HTMLElement & { foo : any } ,
415
+ shadowRoot = e . shadowRoot as ShadowRoot
416
+ expect ( shadowRoot . innerHTML ) . toBe ( 'true' )
417
+ e . foo = undefined
418
+ await nextTick ( )
419
+ expect ( shadowRoot . innerHTML ) . toBe ( 'true' )
420
+ e . foo = false
421
+ await nextTick ( )
422
+ expect ( shadowRoot . innerHTML ) . toBe ( 'false' )
423
+ e . foo = null
424
+ await nextTick ( )
425
+ expect ( shadowRoot . innerHTML ) . toBe ( 'null' )
426
+ e . foo = ''
427
+ await nextTick ( )
428
+ expect ( shadowRoot . innerHTML ) . toBe ( 'true' )
429
+ } )
430
+
399
431
test ( 'support direct setup function syntax with extra options' , ( ) => {
400
432
const E = defineCustomElement (
401
433
props => {
Original file line number Diff line number Diff line change @@ -505,13 +505,16 @@ export class VueElement
505
505
}
506
506
// reflect
507
507
if ( shouldReflect ) {
508
+ const ob = this . _ob
509
+ ob && ob . disconnect ( )
508
510
if ( val === true ) {
509
511
this . setAttribute ( hyphenate ( key ) , '' )
510
512
} else if ( typeof val === 'string' || typeof val === 'number' ) {
511
513
this . setAttribute ( hyphenate ( key ) , val + '' )
512
514
} else if ( ! val ) {
513
515
this . removeAttribute ( hyphenate ( key ) )
514
516
}
517
+ ob && ob . observe ( this , { attributes : true } )
515
518
}
516
519
}
517
520
}
You can’t perform that action at this time.
0 commit comments