34 lines
980 B
JavaScript
34 lines
980 B
JavaScript
import TextField from 'discourse/components/text-field';
|
|
|
|
/**
|
|
Same as text-field, but with special features for a password input.
|
|
Be sure to test on a variety of browsers and operating systems when changing this logic.
|
|
**/
|
|
export default TextField.extend({
|
|
canToggle: false,
|
|
|
|
keyPress(e) {
|
|
if ((e.which >= 65 && e.which <= 90 && !e.shiftKey) || (e.which >= 97 && e.which <= 122 && e.shiftKey)) {
|
|
this.set('canToggle', true);
|
|
this.set('capsLockOn', true);
|
|
} else if ((e.which >= 65 && e.which <= 90 && e.shiftKey) || (e.which >= 97 && e.which <= 122 && !e.shiftKey)) {
|
|
this.set('canToggle', true);
|
|
this.set('capsLockOn', false);
|
|
}
|
|
},
|
|
|
|
keyUp(e) {
|
|
if (e.which === 20 && this.get('canToggle')) {
|
|
this.toggleProperty('capsLockOn');
|
|
}
|
|
},
|
|
|
|
focusOut() {
|
|
this.set('capsLockOn', false);
|
|
},
|
|
|
|
focusIn() {
|
|
this.set('canToggle', false); // can't know the state of caps lock yet. keyPress will figure it out.
|
|
}
|
|
});
|