- $(vnode.dom).selectize({
- labelField: 'value',
- valueField: 'value',
- searchField: 'value',
- sortField: 'value',
- maxItems: 1,
- placeholder: vnode.attrs.placeholder,
- create: vnode.attrs.create ? function(input) {
- return {value: input}
- } : false,
- items: [vnode.attrs.value()],
- options: vnode.attrs.options.map(function(option) {
- return {value: option}
- }),
- onChange: function(val) {
- if (val != '') {
- vnode.attrs.value(val)
+ vnode.state.awesomplete = new Awesomplete(vnode.dom, {
+ list: vnode.attrs.options,
+ minChars: 0,
+ maxItems: 1000000,
+ autoFirst: true,
+ sort: false,
+ })
+ vnode.state.create = vnode.attrs.create
+ vnode.state.options = vnode.attrs.options
+ // Option is selected from the list.
+ $(vnode.dom).on('awesomplete-selectcomplete', function(event) {
+ vnode.attrs.value(this.value)
+ })
+ $(vnode.dom).on('change', function(event) {
+ if (!vnode.state.create && !(this.value in vnode.state.options)) {
+ this.value = vnode.attrs.value()
+ } else {
+ if (vnode.attrs.value() !== this.value) {
+ vnode.attrs.value(this.value)