Choices/assets/scripts/src/components/input.js

51 lines
1.2 KiB
JavaScript
Raw Normal View History

2017-08-21 17:59:56 +02:00
import { getWidthOfInput } from '../lib/utils';
2017-08-17 14:50:14 +02:00
/**
2017-08-21 17:59:56 +02:00
* Input
2017-08-17 14:50:14 +02:00
*/
export default class Input {
constructor(instance, element, classNames) {
this.instance = instance;
this.element = element;
this.classNames = classNames;
}
2017-08-21 09:53:19 +02:00
/**
* Set value of input to blank
* @return {Object} Class instance
* @public
*/
clear(setWidth = true) {
if (this.element.value) {
this.element.value = '';
}
if (setWidth) {
2017-08-21 17:59:56 +02:00
this.setWidth();
2017-08-21 09:53:19 +02:00
}
return this.instance;
}
2017-08-21 17:59:56 +02:00
/**
* Set the correct input width based on placeholder
* value or input value
* @return
*/
setWidth() {
if (this.instance.placeholder) {
// If there is a placeholder, we only want to set the width of the input when it is a greater
// length than 75% of the placeholder. This stops the input jumping around.
if (
this.element.value &&
this.element.value.length >= (this.instance.placeholder.length / 1.25)
) {
this.element.style.width = getWidthOfInput(this.element);
}
} else {
// If there is no placeholder, resize input to contents
this.element.style.width = getWidthOfInput(this.element);
}
}
2017-08-17 14:50:14 +02:00
}