'use strict'; /*@ Ox.ListItem ListItem Object options Options object construct construct function data item data draggable can be dragged position item position unique unique key self Shared private variable ([options[, self]]) -> ListItem Object cancel triggered if cancel button is pressed save triggered if save button is pressed @*/ Ox.ListItem = function(options, self) { self = self || {}; var that = Ox.Element({}, self) .defaults({ construct: null, data: {}, draggable: false, position: 0, unique: '' }) .options(options || {}) .update({ data: function() { constructItem(true); } }); constructItem(); function constructItem(update) { var $element = self.options.construct(self.options.data) .addClass('OxItem') .data({ id: self.options.data[self.options.unique], position: self.options.position }); if (update) { that.$element.hasClass('OxSelected') && $element.addClass('OxSelected'); } that.setElement($element); } return that; };