diff --git a/src/ui/public/doc_table/components/table_row.js b/src/ui/public/doc_table/components/table_row.js index 7dfdfe24fa69e..530ddb996c3a9 100644 --- a/src/ui/public/doc_table/components/table_row.js +++ b/src/ui/public/doc_table/components/table_row.js @@ -1,6 +1,5 @@ import _ from 'lodash'; import $ from 'jquery'; -import addWordBreaks from 'ui/utils/add_word_breaks'; import 'ui/highlight'; import 'ui/highlight/highlight_tags'; import 'ui/doc_viewer'; @@ -150,18 +149,14 @@ module.directive('kbnTableRow', function ($compile) { /** * Fill an element with the value of a field */ - function _displayField(row, fieldName, breakWords) { + function _displayField(row, fieldName, truncate) { let indexPattern = $scope.indexPattern; let text = indexPattern.formatField(row, fieldName); - if (breakWords) { - text = addWordBreaks(text, MIN_LINE_LENGTH); - - if (text.length > MIN_LINE_LENGTH) { - return truncateByHeightTemplate({ - body: text - }); - } + if (truncate && text.length > MIN_LINE_LENGTH) { + return truncateByHeightTemplate({ + body: text + }); } return text; diff --git a/src/ui/public/doc_table/doc_table.less b/src/ui/public/doc_table/doc_table.less index ffa44154ef05b..4f7b42eb4ff7d 100644 --- a/src/ui/public/doc_table/doc_table.less +++ b/src/ui/public/doc_table/doc_table.less @@ -6,6 +6,16 @@ doc-table { .discover-table-datafield { white-space: pre-wrap; + + // break-word is what we really want but it hasn't been added to the standard and adopted by all browsers yet, + // so we provide break-all as a fallback + word-break: break-all; + word-break: break-word; + } + + .discover-table-sourcefield { + word-break: break-all; + word-break: break-word; } .loading { diff --git a/src/ui/public/utils/__tests__/add_word_breaks.js b/src/ui/public/utils/__tests__/add_word_breaks.js deleted file mode 100644 index 594029f7e4045..0000000000000 --- a/src/ui/public/utils/__tests__/add_word_breaks.js +++ /dev/null @@ -1,25 +0,0 @@ -import _ from 'lodash'; -import expect from 'expect.js'; -import addWordBreaks from 'ui/utils/add_word_breaks'; - -describe('addWordBreaks', function () { - - let fixtures = [ - ['aaaaaaaaaaaaaaaaaaaa', 'aaaaaaaaaaaaaaaaaaaa'], - ['aaaa aaaaaaaaaaaaaaa', 'aaaa aaaaaaaaaaaaaaa'], - ['aaaa;aaaaaaaaaaaaaaa', 'aaaa;aaaaaaaaaaaaaaa'], - ['aaaa:aaaaaaaaaaaaaaa', 'aaaa:aaaaaaaaaaaaaaa'], - ['aaaa,aaaaaaaaaaaaaaa', 'aaaa,aaaaaaaaaaaaaaa'], - ['aaaa aaaa', 'aaaa aaaa'], - ['aaaa aaaaaaaaaaaaaaaa', 'aaaa aaaaaaaaaaaaaaaa'], - ['aaaa"aaaaaaaaaaaa', 'aaaa"aaaaaaaaaaaa'] - ]; - - _.each(fixtures, function (fixture) { - let msg = 'should convert ' + fixture[0] + ' to ' + fixture[1]; - it(msg, function () { - let results = addWordBreaks(fixture[0], 10); - expect(results).to.be(fixture[1]); - }); - }); -}); diff --git a/src/ui/public/utils/add_word_breaks.js b/src/ui/public/utils/add_word_breaks.js deleted file mode 100644 index 6f2454e93ebe4..0000000000000 --- a/src/ui/public/utils/add_word_breaks.js +++ /dev/null @@ -1,49 +0,0 @@ -define(function () { - return function addWordBreaks(text, minLineLength) { - text = text || ''; - let lineSize = 0; - let newText = ''; - let inHtmlTag = false; - let inHtmlChar = false; - - for (let i = 0, len = text.length; i < len; i++) { - let chr = text.charAt(i); - newText += chr; - - switch (chr) { - case ' ': - case ':': - case ',': - // natural line break, reset line size - lineSize = 0; - break; - case '<': - inHtmlTag = true; - break; - case '>': - inHtmlTag = false; - lineSize = 0; - break; - case '&': - inHtmlChar = true; - break; - case ';': - inHtmlChar = false; - lineSize = 0; - break; - default: - if (!inHtmlTag && !inHtmlChar) lineSize++; - break; - } - - if (lineSize > minLineLength) { - // continuous text is longer then we want, - // so break it up with a - lineSize = 0; - newText += ''; - } - } - - return newText; - }; -});