X-Git-Url: http://git.roojs.org/?p=roojs1;a=blobdiff_plain;f=docs%2Fsrc%2FRoo_bootstrap_Table.js.html;fp=docs%2Fsrc%2FRoo_bootstrap_Table.js.html;h=74b77a520c1e0623f6d686a7d470f003106db631;hp=8f5f4da8b990cd69497882a983a49bf586f22a2d;hb=d81ddeecb21edfe27401017eb4d0cc01dfae425b;hpb=5a09638750d76b5c2f42753ab924401909761f61 diff --git a/docs/src/Roo_bootstrap_Table.js.html b/docs/src/Roo_bootstrap_Table.js.html index 8f5f4da8b9..74b77a520c 100644 --- a/docs/src/Roo_bootstrap_Table.js.html +++ b/docs/src/Roo_bootstrap_Table.js.html @@ -1,26 +1,74 @@ -Roo/bootstrap/Table.js/* - * - LGPL - * - * table - * - */ - -/** +Roo/bootstrap/Table.js/** * @class Roo.bootstrap.Table + * @licence LGBL * @extends Roo.bootstrap.Component - * Bootstrap Table class + * Bootstrap Table class. This class represents the primary interface of a component based grid control. + * Similar to Roo.grid.Grid + * <pre><code> + var table = Roo.factory({ + xtype : 'Table', + xns : Roo.bootstrap, + autoSizeColumns: true, + + + store : { + xtype : 'Store', + xns : Roo.data, + remoteSort : true, + sortInfo : { direction : 'ASC', field: 'name' }, + proxy : { + xtype : 'HttpProxy', + xns : Roo.data, + method : 'GET', + url : 'https://example.com/some.data.url.json' + }, + reader : { + xtype : 'JsonReader', + xns : Roo.data, + fields : [ 'id', 'name', whatever' ], + id : 'id', + root : 'data' + } + }, + cm : [ + { + xtype : 'ColumnModel', + xns : Roo.grid, + align : 'center', + cursor : 'pointer', + dataIndex : 'is_in_group', + header : "Name", + sortable : true, + renderer : function(v, x , r) { + + return String.format("{0}", v) + } + width : 3 + } // more columns.. + ], + selModel : { + xtype : 'RowSelectionModel', + xns : Roo.bootstrap.Table + // you can add listeners to catch selection change here.... + } + + + }); + // set any options + grid.render(Roo.get("some-div")); +</code></pre> + +Currently the Table uses multiple headers to try and handle XL / Medium etc... styling + + + + * + * @cfg {Roo.grid.RowSelectionModel|Roo.grid.CellSelectionModel} sm The selection model to use (cell selection is not supported yet) + * @cfg {Roo.data.Store|Roo.data.SimpleStore} store The data store to use + * @cfg {Roo.grid.ColumnModel} cm[] A column for th grid. + * * @cfg {String} cls table class - * @cfg {String} align (left|center|right) Specifies the alignment of a table according to surrounding text - * @cfg {String} bgcolor Specifies the background color for a table - * @cfg {Number} border Specifies whether the table cells should have borders or not - * @cfg {Number} cellpadding Specifies the space between the cell wall and the cell content - * @cfg {Number} cellspacing Specifies the space between cells - * @cfg {String} frame Specifies which parts of the outside borders that should be visible - * @cfg {String} rules Specifies which parts of the inside borders that should be visible - * @cfg {String} sortable Specifies that the table should be sortable - * @cfg {String} summary Specifies a summary of the content of a table - * @cfg {Number} width Specifies the width of a table - * @cfg {String} layout table layout (auto | fixed | initial | inherit) + * * * @cfg {boolean} striped Should the rows be alternative striped * @cfg {boolean} bordered Add borders to the table @@ -36,28 +84,30 @@ * @cfg {Roo.bootstrap.PagingToolbar} footer a paging toolbar * @cfg {Boolean} lazyLoad auto load data while scrolling to the end (default false) * @cfg {Boolean} auto_hide_footer auto hide footer if only one page (default false) - + * @cfg {Boolean} enableColumnResize default true if columns can be resized (drag/drop) + * @cfg {Number} minColumnWidth default 50 pixels minimum column width * * @constructor * Create a new Table * @param {Object} config The config object */ -Roo.bootstrap.Table = function(config){ +Roo.bootstrap.Table = function(config) +{ Roo.bootstrap.Table.superclass.constructor.call(this, config); - - // BC... this.rowSelection = (typeof(config.rowSelection) != 'undefined') ? config.rowSelection : this.rowSelection; this.cellSelection = (typeof(config.cellSelection) != 'undefined') ? config.cellSelection : this.cellSelection; this.headerShow = (typeof(config.thead) != 'undefined') ? config.thead : this.headerShow; this.footerShow = (typeof(config.tfoot) != 'undefined') ? config.tfoot : this.footerShow; + this.view = this; // compat with grid. + this.sm = this.sm || {xtype: 'RowSelectionModel'}; if (this.sm) { this.sm.grid = this; - this.selModel = Roo.factory(this.sm, Roo.bootstrap.Table); + this.selModel = Roo.factory(this.sm, Roo.grid); this.sm = this.selModel; this.sm.xmodule = this.xmodule || false; } @@ -181,23 +231,21 @@ * @param {Number} columnIndex * @param {Roo.EventObject} e */ - "headercontextmenu" : true + "headercontextmenu" : true, + /** + * @event mousedown + * The raw mousedown event for the entire grid. + * @param {Roo.EventObject} e + */ + "mousedown" : true + }); }; Roo.extend(Roo.bootstrap.Table, Roo.bootstrap.Component, { cls: false, - align: false, - bgcolor: false, - border: false, - cellpadding: false, - cellspacing: false, - frame: false, - rules: false, - sortable: false, - summary: false, - width: false, + striped : false, scrollBody : false, bordered: false, @@ -210,15 +258,20 @@ loadMask : false, footerShow : true, headerShow : true, + enableColumnResize: true, rowSelection : false, cellSelection : false, layout : false, + minColumnWidth : 50, + // Roo.Element - the tbody - mainBody: false, - // Roo.Element - thead element - mainHead: false, + bodyEl: false, // <tbody> Roo.Element - thead element + headEl: false, // <thead> Roo.Element - thead element + resizeProxy : false, // proxy element for dragging? + + container: false, // used by gridpanel... @@ -228,6 +281,8 @@ auto_hide_footer : false, + view: false, // actually points to this.. + getAutoCreate : function() { var cfg = Roo.apply({}, Roo.bootstrap.Table.superclass.getAutoCreate.call(this)); @@ -237,6 +292,7 @@ cls : 'table', cn : [] }; + // this get's auto added by panel.Grid if (this.scrollBody) { cfg.cls += ' table-body-fixed'; } @@ -253,6 +309,7 @@ if (this.condensed) { cfg.cls += ' table-condensed'; } + if (this.responsive) { cfg.cls += ' table-responsive'; } @@ -261,24 +318,6 @@ cfg.cls+= ' ' +this.cls; } - // this lot should be simplifed... - var _t = this; - var cp = [ - 'align', - 'bgcolor', - 'border', - 'cellpadding', - 'cellspacing', - 'frame', - 'rules', - 'sortable', - 'summary', - 'width' - ].forEach(function(k) { - if (_t[k]) { - cfg[k] = _t[k]; - } - }); if (this.layout) { @@ -314,8 +353,8 @@ //Roo.log('initEvents with ds!!!!'); - this.mainBody = this.el.select('tbody', true).first(); - this.mainHead = this.el.select('thead', true).first(); + this.bodyEl = this.el.select('tbody', true).first(); + this.headEl = this.el.select('thead', true).first(); this.mainFoot = this.el.select('tfoot', true).first(); @@ -325,8 +364,6 @@ e.on('click', this.sort, this); }, this); - this.mainBody.on("click", this.onClick, this); - this.mainBody.on("dblclick", this.onDblClick, this); // why is this done????? = it breaks dialogs?? //this.parent().el.setStyle('position', 'relative'); @@ -353,14 +390,119 @@ this.el.on("contextmenu", this.onContextMenu, this); - this.mainBody.on('scroll', this.onBodyScroll, this); this.cm.on("headerchange", this.onHeaderChange, this); - this.cm.on("hiddenchange", this.onHiddenChange, this, arguments); + //?? does bodyEl get replaced on render? + this.bodyEl.on("click", this.onClick, this); + this.bodyEl.on("dblclick", this.onDblClick, this); + this.bodyEl.on('scroll', this.onBodyScroll, this); + + // guessing mainbody will work - this relays usually caught by selmodel at present. + this.relayEvents(this.bodyEl, ["mousedown","mouseup","mouseover","mouseout","keypress"]); + + + this.resizeProxy = Roo.get(document.body).createChild({ cls:"x-grid-resize-proxy", html: '&#160;' }); + + + if(this.headEl && this.enableColumnResize !== false && Roo.grid.SplitDragZone){ + new Roo.grid.SplitDragZone(this, this.headEl.dom, false); // not sure what 'lockedHd is for this implementation..) + } + + this.initCSS(); + }, + // Compatibility with grid - we implement all the view features at present. + getView : function() + { + return this; + }, + + initCSS : function() + { + + + var cm = this.cm, styles = []; + this.CSS.removeStyleSheet(this.id + '-cssrules'); + var headHeight = this.headEl ? this.headEl.dom.clientHeight : 0; + // we can honour xs/sm/md/xl as widths... + // we first have to decide what widht we are currently at... + var sz = Roo.getGridSize(); + + var total = 0; + var last = -1; + var cols = []; // visable cols. + var total_abs = 0; + for(var i = 0, len = cm.getColumnCount(); i < len; i++) { + var w = cm.getColumnWidth(i, false); + if(cm.isHidden(i)){ + cols.push( { rel : false, abs : 0 }); + continue; + } + if (w !== false) { + cols.push( { rel : false, abs : w }); + total_abs += w; + last = i; // not really.. + continue; + } + var w = cm.getColumnWidth(i, sz); + if (w > 0) { + last = i + } + total += w; + cols.push( { rel : w, abs : false }); + } + + var avail = this.bodyEl.dom.clientWidth - total_abs; + + var unitWidth = Math.floor(avail / total); + var rem = avail - (unitWidth * total); + + var hidden, width, pos = 0 , splithide , left; + for(var i = 0, len = cm.getColumnCount(); i < len; i++) { + + hidden = 'display:none;'; + left = ''; + width = 'width:0px;'; + splithide = ''; + if(!cm.isHidden(i)){ + hidden = ''; + + + // we can honour xs/sm/md/xl ? + var w = cols[i].rel == false ? cols[i].abs : (cols[i].rel * unitWidth); + if (w===0) { + hidden = 'display:none;'; + } + // width should return a small number... + if (i == last) { + w+=rem; // add the remaining with.. + } + pos += w; + left = "left:" + (pos -4) + "px;"; + width = "width:" + w+ "px;"; + + } + + styles.push( '#' , this.id , ' .x-col-' , i, " {", cm.config[i].css, width, hidden, "}\n" ); + if (this.headEl) { + if (i == last) { + splithide = 'display:none;'; + } + + styles.push('#' , this.id , ' .x-hcol-' , i, " { ", width, hidden," }\n", + '#' , this.id , ' .x-grid-split-' , i, " { ", left, splithide,'height:', (headHeight - 4), "px;}\n" + ); + } + + } + Roo.log(styles.join('')); + this.CSS.createStyleSheet( styles.join(''), this.id + '-cssrules'); + }, + + onContextMenu : function(e, t) { this.processEvent("contextmenu", e); @@ -537,7 +679,19 @@ this.fireEvent('rowdblclick', this, row, rowIndex, e); } }, + findRowIndex : function(el) + { + var cell = Roo.get(el); + if(!cell) { + return false; + } + var row = cell.findParent('tr', false, true); + if(!row || typeof(row) == 'undefined'){ + return false; + } + return this.getRowIndex(row); + }, sort : function(e,el) { var col = Roo.get(el); @@ -595,7 +749,7 @@ var hh = ''; if(typeof(config.sortable) != 'undefined' && config.sortable){ - c.cls = 'sortable'; + c.cls += ' sortable'; c.html = '<i class="fa"></i>' + c.html; } @@ -629,9 +783,7 @@ c.colspan = config.colspan; } - if(typeof(config.hidden) != 'undefined' && config.hidden){ - c.style += ' display:none;'; - } + // hidden is handled by CSS now if(typeof(config.dataIndex) != 'undefined'){ c.sort = config.dataIndex; @@ -643,35 +795,47 @@ c.style += ' text-align:' + config.align + ';'; } - if(typeof(config.width) != 'undefined'){ - c.style += ' width:' + config.width + 'px;'; - this.totalWidth += config.width; - } else { - this.totalWidth += 100; // assume minimum of 100 per column? - } + /* width is done in CSS + *if(typeof(config.width) != 'undefined'){ + c.style += ' width:' + config.width + 'px;'; + this.totalWidth += config.width; + } else { + this.totalWidth += 100; // assume minimum of 100 per column? + } + */ if(typeof(config.cls) != 'undefined'){ c.cls = (typeof(c.cls) == 'undefined') ? config.cls : (c.cls + ' ' + config.cls); } - - ['xs','sm','md','lg'].map(function(size){ - - if(typeof(config[size]) == 'undefined'){ - return; + // this is the bit that doesnt reall work at all... + + /* + + ['xs','sm','md','lg'].map(function(size){ + + if(typeof(config[size]) == 'undefined'){ + return; } - - if (!config[size]) { // 0 = hidden + + if (!config[size]) { // 0 = hidden // BS 4 '0' is treated as hide that column and below. - c.cls += ' hidden-' + size + ' hidden' + size + '-down'; - return; + c.cls += ' hidden-' + size + ' hidden' + size + '-down'; + return; } + + c.cls += ' col-' + size + '-' + config[size] + ( + size == 'xs' ? (' col-' + config[size] ) : '' // bs4 col-{num} replaces col-xs + ); + + + }); + */ + // at the end? + + c.html +=' <span class="x-grid-split x-grid-split-' + i + '"></span>'; - c.cls += ' col-' + size + '-' + config[size] + ( - size == 'xs' ? (' col-' + config[size] ) : '' // bs4 col-{num} replaces col-xs - ); - }); header.cn.push(c) } @@ -744,7 +908,7 @@ } }); - var tbody = this.mainBody; + var tbody = this.bodyEl; if(ds.getCount() > 0){ ds.data.each(function(d,rowIndex){ @@ -786,7 +950,11 @@ this.fireEvent('rowsrendered', this); this.autoSize(); - }, + + this.initCSS(); /// resize cols + + + }, onUpdate : function(ds,record) @@ -799,7 +967,7 @@ if(isUpdate !== true){ this.fireEvent("beforerowremoved", this, index, record); } - var bt = this.mainBody.dom; + var bt = this.bodyEl.dom; var rows = this.el.select('tbody > tr', true).elements; @@ -823,7 +991,7 @@ { //Roo.log('on Add called'); // - note this does not handle multiple adding very well.. - var bt = this.mainBody.dom; + var bt = this.bodyEl.dom; for (var i =0 ; i < records.length;i++) { //Roo.log('call insert row Add called on ' + rowIndex + ':' + i); //Roo.log(records[i]); @@ -854,6 +1022,120 @@ //this.layout(); this.fireEvent("rowupdated", this, index, record); }, + // private - called by RowSelection + onRowSelect : function(rowIndex){ + var row = this.getRowDom(rowIndex); + row.addClass(['bg-info','info']); + }, + // private - called by RowSelection + onRowDeselect : function(rowIndex) + { + if (rowIndex < 0) { + return; + } + var row = this.getRowDom(rowIndex); + row.removeClass(['bg-info','info']); + }, + /** + * Focuses the specified row. + * @param {Number} row The row index + */ + focusRow : function(row) + { + //Roo.log('GridView.focusRow'); + var x = this.bodyEl.dom.scrollLeft; + this.focusCell(row, 0, false); + this.bodyEl.dom.scrollLeft = x; + + }, + /** + * Focuses the specified cell. + * @param {Number} row The row index + * @param {Number} col The column index + * @param {Boolean} hscroll false to disable horizontal scrolling + */ + focusCell : function(row, col, hscroll) + { + //Roo.log('GridView.focusCell'); + var el = this.ensureVisible(row, col, hscroll); + // not sure what focusEL achives = it's a <a> pos relative + //this.focusEl.alignTo(el, "tl-tl"); + //if(Roo.isGecko){ + // this.focusEl.focus(); + //}else{ + // this.focusEl.focus.defer(1, this.focusEl); + //} + }, + + /** + * Scrolls the specified cell into view + * @param {Number} row The row index + * @param {Number} col The column index + * @param {Boolean} hscroll false to disable horizontal scrolling + */ + ensureVisible : function(row, col, hscroll) + { + //Roo.log('GridView.ensureVisible,' + row + ',' + col); + //return null; //disable for testing. + if(typeof row != "number"){ + row = row.rowIndex; + } + if(row < 0 && row >= this.ds.getCount()){ + return null; + } + col = (col !== undefined ? col : 0); + var cm = this.cm; + while(cm.isHidden(col)){ + col++; + } + + var el = this.getCellDom(row, col); + if(!el){ + return null; + } + var c = this.bodyEl.dom; + + var ctop = parseInt(el.offsetTop, 10); + var cleft = parseInt(el.offsetLeft, 10); + var cbot = ctop + el.offsetHeight; + var cright = cleft + el.offsetWidth; + + //var ch = c.clientHeight - this.mainHd.dom.offsetHeight; + var ch = 0; //?? header is not withing the area? + var stop = parseInt(c.scrollTop, 10); + var sleft = parseInt(c.scrollLeft, 10); + var sbot = stop + ch; + var sright = sleft + c.clientWidth; + /* + Roo.log('GridView.ensureVisible:' + + ' ctop:' + ctop + + ' c.clientHeight:' + c.clientHeight + + ' this.mainHd.dom.offsetHeight:' + this.mainHd.dom.offsetHeight + + ' stop:' + stop + + ' cbot:' + cbot + + ' sbot:' + sbot + + ' ch:' + ch + ); + */ + if(ctop < stop){ + c.scrollTop = ctop; + //Roo.log("set scrolltop to ctop DISABLE?"); + }else if(cbot > sbot){ + //Roo.log("set scrolltop to cbot-ch"); + c.scrollTop = cbot-ch; + } + + if(hscroll !== false){ + if(cleft < sleft){ + c.scrollLeft = cleft; + }else if(cright > sright){ + c.scrollLeft = cright-c.clientWidth; + } + } + + return el; + }, + insertRow : function(dm, rowIndex, isUpdate){ @@ -863,7 +1145,7 @@ //var s = this.getScrollState(); var row = this.renderRow(this.cm, this.store, rowIndex); // insert before rowIndex.. - var e = this.mainBody.createChild(row,this.getRowDom(rowIndex)); + var e = this.bodyEl.createChild(row,this.getRowDom(rowIndex)); var _this = this; @@ -890,6 +1172,17 @@ return (typeof(rows[rowIndex]) == 'undefined') ? false : rows[rowIndex]; }, + getCellDom : function(rowIndex, colIndex) + { + var row = this.getRowDom(rowIndex); + if (row === false) { + return false; + } + var cols = row.select('td', true).elements; + return (typeof(cols[colIndex]) == 'undefined') ? false : cols[colIndex]; + + }, + // returns the object tree for a tr.. @@ -953,9 +1246,7 @@ td.colspan = config.colspan; } - if(typeof(config.hidden) != 'undefined' && config.hidden){ - td.style += ' display:none;'; - } + if(typeof(config.align) != 'undefined' && config.align.length){ td.style += ' text-align:' + config.align + ';'; @@ -963,10 +1254,11 @@ if(typeof(config.valign) != 'undefined' && config.valign.length){ td.style += ' vertical-align:' + config.valign + ';'; } - - if(typeof(config.width) != 'undefined'){ - td.style += ' width:' + config.width + 'px;'; + /* + if(typeof(config.width) != 'undefined'){ + td.style += ' width:' + config.width + 'px;'; } + */ if(typeof(config.cursor) != 'undefined'){ td.style += ' cursor:' + config.cursor + ';'; @@ -975,28 +1267,28 @@ if(typeof(config.cls) != 'undefined'){ td.cls = (typeof(td.cls) == 'undefined') ? config.cls : (td.cls + ' ' + config.cls); } - - ['xs','sm','md','lg'].map(function(size){ - - if(typeof(config[size]) == 'undefined'){ - return; + /* + ['xs','sm','md','lg'].map(function(size){ + + if(typeof(config[size]) == 'undefined'){ + return; } - - - - if (!config[size]) { // 0 = hidden + + + + if (!config[size]) { // 0 = hidden // BS 4 '0' is treated as hide that column and below. - td.cls += ' hidden-' + size + ' hidden' + size + '-down'; - return; + td.cls += ' hidden-' + size + ' hidden' + size + '-down'; + return; } - - td.cls += ' col-' + size + '-' + config[size] + ( - size == 'xs' ? (' col-' + config[size] ) : '' // bs4 col-{num} replaces col-xs - ); - + + td.cls += ' col-' + size + '-' + config[size] + ( + size == 'xs' ? (' col-' + config[size] ) : '' // bs4 col-{num} replaces col-xs + ); + }); - + */ row.cn.push(td); } @@ -1027,14 +1319,15 @@ */ setRowVisibility : function(rowIndex, state) { - var bt = this.mainBody.dom; + var bt = this.bodyEl.dom; var rows = this.el.select('tbody > tr', true).elements; if(typeof(rows[rowIndex]) == 'undefined'){ return; } - rows[rowIndex].dom.style.display = state ? '' : 'none'; + rows[rowIndex][ state ? 'removeClass' : 'addClass']('d-none'); + }, @@ -1065,7 +1358,11 @@ }) } }, - + /** + * get the Row Index from a dom element. + * @param {Roo.Element} row The row to look for + * @returns {Number} the row + */ getRowIndex : function(row) { var rowIndex = -1; @@ -1079,6 +1376,29 @@ }); return rowIndex; + }, + /** + * get the header TH element for columnIndex + * @param {Number} columnIndex + * @returns {Roo.Element} + */ + getHeaderIndex: function(colIndex) + { + var cols = this.headEl.select('th', true).elements; + return cols[colIndex]; + }, + /** + * get the Column Index from a dom element. (using regex on x-hcol-{colid}) + * @param {domElement} cell to look for + * @returns {Number} the column + */ + getCellIndex : function(cell) + { + var id = String(cell.className).match(Roo.bootstrap.Table.cellRE); + if(id){ + return parseInt(id[1], 10); + } + return 0; }, /** * Returns the grid's underlying element = used by panel.Grid @@ -1116,6 +1436,7 @@ } cw = Math.max(cw, this.totalWidth); this.getGridEl().select('tbody tr',true).setWidth(cw); + this.initCSS(); // resize 'expandable coloumn? @@ -1124,21 +1445,21 @@ }, onBodyScroll: function() { - //Roo.log("body scrolled');" + this.mainBody.dom.scrollLeft); - if(this.mainHead){ - this.mainHead.setStyle({ + //Roo.log("body scrolled');" + this.bodyEl.dom.scrollLeft); + if(this.headEl){ + this.headEl.setStyle({ 'position' : 'relative', - 'left': (-1* this.mainBody.dom.scrollLeft) + 'px' + 'left': (-1* this.bodyEl.dom.scrollLeft) + 'px' }); } if(this.lazyLoad){ - var scrollHeight = this.mainBody.dom.scrollHeight; + var scrollHeight = this.bodyEl.dom.scrollHeight; - var scrollTop = Math.ceil(this.mainBody.getScroll().top); + var scrollTop = Math.ceil(this.bodyEl.getScroll().top); - var height = this.mainBody.getHeight(); + var height = this.bodyEl.getHeight(); if(scrollHeight - height == scrollTop) { @@ -1158,19 +1479,43 @@ } }, + onColumnSplitterMoved : function(i, diff) + { + this.userResized = true; + + var cm = this.colModel; + var w = this.getHeaderIndex(i).getWidth() + diff; + + + cm.setColumnWidth(i, w, true); + this.initCSS(); + //var cid = cm.getColumnId(i); << not used in this version? + /* Roo.log(['#' + this.id + ' .x-col-' + i, "width", w + "px"]); + + this.CSS.updateRule( '#' + this.id + ' .x-col-' + i, "width", w + "px"); + this.CSS.updateRule('#' + this.id + ' .x-hcol-' + i, "width", w + "px"); + this.CSS.updateRule('#' + this.id + ' .x-grid-split-' + i, "left", w + "px"); +*/ + //this.updateSplitters(); + //this.layout(); << ?? + this.fireEvent("columnresize", i, w); + }, onHeaderChange : function() { var header = this.renderHeader(); var table = this.el.select('table', true).first(); - this.mainHead.remove(); - this.mainHead = table.createChild(header, this.mainBody, false); + this.headEl.remove(); + this.headEl = table.createChild(header, this.bodyEl, false); Roo.each(this.el.select('thead th.sortable', true).elements, function(e){ e.on('click', this.sort, this); }, this); + if(this.enableColumnResize !== false && Roo.grid.SplitDragZone){ + new Roo.grid.SplitDragZone(this, this.headEl.dom, false); // not sure what 'lockedHd is for this implementation..) + } }, @@ -1257,6 +1602,12 @@ } }); +// currently only used to find the split on drag.. +Roo.bootstrap.Table.cellRE = /(?:.*?)x-grid-(?:hd|cell|split)-([\d]+)(?:.*?)/; - - \ No newline at end of file +/** + * @depricated +*/ +Roo.bootstrap.Table.AbstractSelectionModel = Roo.grid.AbstractSelectionModel; +Roo.bootstrap.Table.RowSelectionModel = Roo.grid.RowSelectionModel; + \ No newline at end of file