catalyst icon indicating copy to clipboard operation
catalyst copied to clipboard

@attr boolean/number setter function called with an empty string (v2-beta)

Open ryecroft opened this issue 3 years ago • 2 comments
trafficstars

This is maybe related to #117, but not 100% sure on that.

With a component defined like this:

import { controller, attr } from '@github/catalyst'

@controller
class TestComponentElement extends HTMLElement {

  @attr get booleanProp() {
    return false
  }
  set booleanProp( _v: boolean ) {
    console.dir( `booleanProp type: ${ typeof _v }` )
    console.dir( `booleanProp value: '${ _v }'` )
  }

  connectedCallback() {
    this.booleanProp = true
  }

}

and html like this (note the lack of an initial boolean-prop value):

<test-component></test-component>

I get these log messages:

booleanProp type: boolean
booleanProp value: 'true'
booleanProp type: string
booleanProp value: ''

Changing the html to include an initial value like this:

<test-component boolean-prop='anything'></test-component>

get's rid of that final empty string call:

booleanProp type: boolean
booleanProp value: 'true'

Maybe this is a limitation? Hopefully this isn't another ghost bug, sorry about the last one 🫣

ryecroft avatar Oct 30 '22 11:10 ryecroft

Thanks for the report! This is very helpful, it looks like a bug.

Would you like to submit a PR with a failing test case? That would be very helpful!

keithamus avatar Oct 31 '22 14:10 keithamus

Hi Keith, no problem I'll do that soon

ryecroft avatar Oct 31 '22 15:10 ryecroft