Choices/src/scripts/components/wrapped-input.js

39 lines
868 B
JavaScript
Raw Normal View History

import WrappedElement from './wrapped-element';
/**
* @typedef {import('../../../types/index').Choices.ClassNames} ClassNames
* @typedef {import('../../../types/index').Choices.Item} Item
*/
export default class WrappedInput extends WrappedElement {
/**
* @param {{
* element: HTMLInputElement,
* classNames: ClassNames,
* delimiter: string
* }} args
*/
2018-05-21 18:01:03 +02:00
constructor({ element, classNames, delimiter }) {
super({ element, classNames });
this.delimiter = delimiter;
}
/**
* @returns {string}
*/
get value() {
return this.element.value;
}
/**
* @param {Item[]} items
*/
2018-04-24 13:54:45 +02:00
set value(items) {
const itemValues = items.map(({ value }) => value);
const joinedValues = itemValues.join(this.delimiter);
2018-04-24 13:54:45 +02:00
this.element.setAttribute('value', joinedValues);
this.element.value = joinedValues;
2018-04-24 13:54:45 +02:00
}
}