
META-INF.resources.org.richfaces.inplaceSelect.js Maven / Gradle / Ivy
(function ($, rf) {
rf.ui = rf.ui || {};
rf.ui.InplaceSelect = function(id, options) {
var mergedOptions = $.extend({}, defaultOptions, options);
$super.constructor.call(this, id, mergedOptions) ;
this.getInput().bind("click", $.proxy(this.__clickHandler, this));
mergedOptions['attachTo'] = id;
mergedOptions['scrollContainer'] = $(document.getElementById(id + "Items")).parent()[0];
this.popupList = new rf.ui.PopupList(id+"List", this, mergedOptions);
this.items = mergedOptions.items;
this.selValueInput = $(document.getElementById(id+"selValue"));
this.initialValue = this.selValueInput.val();
this.list = $(document.getElementById(id+"List"));
this.list.bind("mousedown", $.proxy(this.__onListMouseDown, this));
this.list.bind("mouseup", $.proxy(this.__onListMouseUp, this));
this.openOnEdit = mergedOptions.openOnEdit;
this.saveOnSelect = mergedOptions.saveOnSelect;
this.savedIndex = -1;
this.inputItem = $(document.getElementById(id + "Input"));
this.inputItemWidth = this.inputItem.width();
this.inputWidthDefined = options.inputWidth !== undefined;
};
rf.ui.InplaceInput.extend(rf.ui.InplaceSelect);
var $super = rf.ui.InplaceSelect.$super;
var defaultOptions = {
defaultLabel: "",
saveOnSelect: true,
openOnEdit: true,
showControl: false,
itemCss: "rf-is-opt",
selectItemCss: "rf-is-sel",
listCss: "rf-is-lst-cord",
noneCss: "rf-is-none",
editCss: "rf-is-fld-cntr",
changedCss: "rf-is-chng"
};
$.extend(rf.ui.InplaceSelect.prototype, (function () {
return{
name : "inplaceSelect",
defaultLabelClass : "rf-is-dflt-lbl",
getName: function() {
return this.name;
},
getNamespace: function() {
return this.namespace;
},
onshow: function() {
$super.onshow.call(this);
if(this.openOnEdit) {
this.__showPopup();
}
},
onhide: function() {
this.__hidePopup();
},
showPopup: function() {
this.isSaved = false;
this.element.addClass(this.editCss);
this.editContainer.removeClass(this.noneCss);
this.editState = true;
this.scrollElements = rf.Event.bindScrollEventHandlers(this.id, this.__scrollHandler, this);
this.__setInputFocus();
this.onfocus();
this.__showPopup();
},
__showPopup: function() {
this.popupList.show();
this.__hideLabel();
},
__hidePopup: function() {
this.popupList.hide();
this.__showLabel();
},
__selectItemByValue: function(value) {
var item;
for (var i=0; i