open-vault/ui/app/components/masked-input.js

50 lines
1.2 KiB
JavaScript

import Component from '@ember/component';
import { computed } from '@ember/object';
import autosize from 'autosize';
export default Component.extend({
value: null,
didInsertElement() {
this._super(...arguments);
autosize(this.element.querySelector('textarea'));
},
didUpdate() {
this._super(...arguments);
autosize.update(this.element.querySelector('textarea'));
},
willDestroyElement() {
this._super(...arguments);
autosize.destroy(this.element.querySelector('textarea'));
},
shouldObscure: computed('isMasked', 'isFocused', 'value', function() {
if (this.get('value') === '') {
return false;
}
if (this.get('isFocused') === true) {
return false;
}
return this.get('isMasked');
}),
displayValue: computed('shouldObscure', function() {
if (this.get('shouldObscure')) {
return '■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■';
} else {
return this.get('value');
}
}),
isMasked: true,
isFocused: false,
displayOnly: false,
onKeyDown() {},
onChange() {},
actions: {
toggleMask() {
this.toggleProperty('isMasked');
},
updateValue(e) {
this.set('value', e.target.value);
this.onChange();
},
},
});