This issue imho comes mainly from the fact that the element docs generated via
iron-component-page only list the JS property names, but in many/most cases you will use the HTML attribute names in your markup that aren't listed anywhere.Example from the
google-signin element:
If you try to include this element in your page like this
<google-signin clientId="MY_CLIENT_ID"></google-signin>it won't work because the
clientId attribute will be mapped to a clientid property that doesn't exist and clientId will stay undefined.The correct way to use the element would be:
<google-signin client-id="MY_CLIENT_ID"></google-signin>So if you encounter issues with properties not getting the value you intended make sure your attribute names are correct.
Essentially the attribute name is converted to lower case first, and then dashes are converted to camelcase,
SoMeThInG becomes something and SoMeThInG-ElSe becomes somethingElse.For those interested, here's the part of the Polymer library that takes care of translation between attribute names and property names:
https://github.com/Polymer/polymer/blob/master/src/lib/case-map.html
And if you are really curious you can have a look at
Polymer.CaseMap._caseMap to see what mappings are being used on your site.