40 lines
1009 B
JavaScript
40 lines
1009 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.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.
|
|
}
|
|
});
|