'use strict'; /*@ Ox.CustomList Custom List Widget experimental @*/ Ox.CustomList = function(options, self) { self = self || {}; var that = Ox.Element({}, self) .defaults({ draggable: false, item: null, itemHeight: 32, items: null, itemWidth: 256, keys: [], max: -1, min: 0, pageLength: 100, query: {conditions: [], operator: '&'}, scrollbarVisible: false, selected: [], sort: [], sortable: false, sums: [], unique: '' }) .options(options || {}) .update({ }) .addClass('OxCustomList'); self.$list = Ox.List({ construct: function(data) { return self.options.item(data).addClass('OxTarget'); }, draggable: self.options.draggable, itemHeight: self.options.itemHeight, itemWidth: self.options.itemWidth - self.options.scrollbarVisible * Ox.UI.SCROLLBAR_SIZE, items: self.options.items, keys: self.options.keys.concat(self.options.unique), max: self.options.max, min: self.options.min, orientation: 'vertical', pageLength: self.options.pageLength, query: self.options.query, selected: self.options.selected, sort: self.options.sort, sortable: self.options.sortable, sums: self.options.sums, type: 'text', unique: self.options.unique }) .css({ top: 0, overflowY: (self.options.scrollbarVisible ? 'scroll' : 'hidden') }) .bindEvent(function(data, event) { that.triggerEvent(event, data); }) .appendTo(that); return that; };