oxjs/source/Ox.UI/js/Form/Ox.SelectInput.js
2011-12-01 11:52:23 +01:00

71 lines
No EOL
1.9 KiB
JavaScript

'use strict'
Ox.SelectInput = function(options, self) {
var that;
self = Ox.extend(self || {}, {
options: Ox.extend({
inputWidth: 128,
items: [],
label: '',
labelWidth: 128,
max: 0,
min: 1,
placeholder: '',
title: '',
width: 384
}, options)
});
self.other = self.options.items[self.options.items.length - 1].id;
self.otherWidth = self.options.width - self.options.inputWidth - 3; // fixme: 3? obscure!
self.$select = Ox.Select({
items: self.options.items,
label: self.options.label,
labelWidth: self.options.labelWidth,
max: self.options.max,
min: self.options.min,
title: self.options.title,
width: self.options.width
})
.bindEvent({
change: function(data) {
if (self.options.title) {
self.$select.options({title: data.selected[0].title});
}
if (data.selected[0].id == self.other) {
self.$select.options({width: self.otherWidth})
.addClass('OxOverlapRight');
self.$input.show();
} else {
self.$select.options({width: self.options.width})
.removeClass('OxOverlapRight')
self.$input.hide();
}
}
});
self.$input = Ox.Input({
placeholder: self.options.placeholder,
width: 0
})
.hide();
that = Ox.FormElementGroup({
elements: [
self.$select,
self.$input
],
width: self.options.width
});
that.value = function() {
return self.$select.value() == self.other
? self.$input.value() : self.$select.value();
};
return that;
};