cloudfour/hideShowPassword

.hideShowPassword-field not added on init

jbarreiros opened this issue · 2 comments

Noticing that when a password field is initialized, class "hideShowPassword-field" is not assigned to the input element. The class is only added after clicking the toggle button for the first time.

Traced it to if (! this.options.enable || this.isType()) return false; in the updateElement function. On init, both evaluate to true.

Is this by design?

Thanks for making your plugin available.

@jbarreiros Great catch! Changes to the <input> field typically only occur when the user or dev actually changes it's state from "shown" to "hidden" (or vice-versa). But in the case of the class-name, that really decreases the usefulness of the class.

The line you identified is indeed what's preventing the class from being assigned initially, but it's also preventing unnecessary changes from occurring as the plugin is used. I think the issue is that we're adding the non-state-specific class-name within a method that is responsible for updating the state of the element, when in reality that should be part of the init() method.

Marked as a bug, will fix in a minor release as soon as we're able. Thanks for flagging this!

@jbarreiros Thank you for your patience! Just pushed v2.0.2 with a fix for this. You should now notice that any <input> element manipulated by the plugin at all gets the hideShowPassword-field class (or alternatively whatever className you pass as an option).