Table.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. define([
  2. 'summernote/core/dom', 'summernote/core/range', 'summernote/core/list'
  3. ], function (dom, range, list) {
  4. /**
  5. * @class editing.Table
  6. *
  7. * Table
  8. *
  9. */
  10. var Table = function () {
  11. /**
  12. * handle tab key
  13. *
  14. * @param {WrappedRange} rng
  15. * @param {Boolean} isShift
  16. */
  17. this.tab = function (rng, isShift) {
  18. var cell = dom.ancestor(rng.commonAncestor(), dom.isCell);
  19. var table = dom.ancestor(cell, dom.isTable);
  20. var cells = dom.listDescendant(table, dom.isCell);
  21. var nextCell = list[isShift ? 'prev' : 'next'](cells, cell);
  22. if (nextCell) {
  23. range.create(nextCell, 0).select();
  24. }
  25. };
  26. /**
  27. * create empty table element
  28. *
  29. * @param {Number} rowCount
  30. * @param {Number} colCount
  31. * @return {Node}
  32. */
  33. this.createTable = function (colCount, rowCount) {
  34. var tds = [], tdHTML;
  35. for (var idxCol = 0; idxCol < colCount; idxCol++) {
  36. tds.push('<td>' + dom.blank + '</td>');
  37. }
  38. tdHTML = tds.join('');
  39. var trs = [], trHTML;
  40. for (var idxRow = 0; idxRow < rowCount; idxRow++) {
  41. trs.push('<tr>' + tdHTML + '</tr>');
  42. }
  43. trHTML = trs.join('');
  44. return $('<table class="table table-bordered">' + trHTML + '</table>')[0];
  45. };
  46. };
  47. return Table;
  48. });