diff --git a/app/assets/stylesheets/modules/accordion-sections.scss b/app/assets/stylesheets/modules/accordion-sections.scss
index 101000fae..061fe0bf0 100644
--- a/app/assets/stylesheets/modules/accordion-sections.scss
+++ b/app/assets/stylesheets/modules/accordion-sections.scss
@@ -52,6 +52,9 @@
.snippet {
color: $sul-mini-accordion-text-color;
@extend .remove-list-styles;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
}
.details {
diff --git a/app/javascript/application.js b/app/javascript/application.js
index a1eca6bdc..f154b80e2 100644
--- a/app/javascript/application.js
+++ b/app/javascript/application.js
@@ -2,7 +2,6 @@
import "@hotwired/turbo-rails";
import "./vendor/responsiveTruncator";
-import "./vendor/trunk8";
import "./vendor/jquery-scrollspy";
import "leaflet";
// import "popper.js";
diff --git a/app/javascript/preview-content.js b/app/javascript/preview-content.js
index f713a5432..5e1f09b75 100644
--- a/app/javascript/preview-content.js
+++ b/app/javascript/preview-content.js
@@ -47,9 +47,6 @@ const PreviewContent = (function() {
.plugGoogleBookContent();
target.find('*[data-accordion-section-target]').accordionSection();
- target.find("[data-behavior='trunk8']").trunk8({
- tooltip: false
- });
target.find('[data-live-lookup-url]').liveLookup();
deferred.resolve(content);
break;
@@ -59,9 +56,6 @@ const PreviewContent = (function() {
.plugGoogleBookContent();
target.find('*[data-accordion-section-target]').accordionSection();
- target.find("[data-behavior='trunk8']").trunk8({
- tooltip: false
- });
target.find('[data-live-lookup-url]').liveLookup();
deferred.resolve(content);
break;
diff --git a/app/javascript/truncate.js b/app/javascript/truncate.js
index 5de58c8c5..775f65ba1 100644
--- a/app/javascript/truncate.js
+++ b/app/javascript/truncate.js
@@ -4,7 +4,4 @@ Blacklight.onLoad(function(){
);
$("[data-behavior='truncate-results-metadata-links']").responsiveTruncate({lines: 2, more: 'more...', less: 'less...'});
$("[data-behavior='truncate']").responsiveTruncate({height: 60});
- $("[data-behavior='trunk8']").trunk8({
- tooltip: false
- });
});
diff --git a/app/javascript/vendor/trunk8.js b/app/javascript/vendor/trunk8.js
deleted file mode 100644
index 2f7099971..000000000
--- a/app/javascript/vendor/trunk8.js
+++ /dev/null
@@ -1,381 +0,0 @@
-/**!
- * trunk8 v1.3.1
- * https://github.com/rviscomi/trunk8
- *
- * Copyright 2012 Rick Viscomi
- * Released under the MIT License.
- *
- * Date: September 26, 2012
- */
-
-(function ($) {
- var methods,
- utils,
- SIDES = {
- /* cen...ter */
- center: 'center',
- /* ...left */
- left: 'left',
- /* right... */
- right: 'right'
- },
- WIDTH = {
- auto: 'auto'
- };
-
- function trunk8(element) {
- this.$element = $(element);
- this.original_text = this.$element.html();
- this.settings = $.extend({}, $.fn.trunk8.defaults);
- }
-
- trunk8.prototype.updateSettings = function (options) {
- this.settings = $.extend(this.settings, options);
- };
-
- function stripHTML(html) {
- var tmp = document.createElement("DIV");
- tmp.innerHTML = html;
-
- if (typeof tmp.textContent != 'undefined') {
- return tmp.textContent;
- }
-
- return tmp.innerText
- }
-
- function getHtmlArr(str) {
- /* Builds an array of strings and designated */
- /* HTML tags around them. */
- if (stripHTML(str) === str) {
- return str.split(/\s/g);
- }
- var allResults = [],
- reg = /<([a-z]+)([^<]*)(?:>(.*?(?!<\1>)*)<\/\1>|\s+\/>)(['.?!,]*)|((?:[^<>\s])+['.?!,]*\w?|
)/ig,
- outArr = reg.exec(str),
- lastI,
- ind;
- while (outArr && lastI !== reg.lastIndex) {
- lastI = reg.lastIndex;
- if (outArr[5]) {
- allResults.push(outArr[5]);
- } else if (outArr[1]) {
- allResults.push({
- tag: outArr[1],
- attribs: outArr[2],
- content: outArr[3],
- after: outArr[4]
- });
- }
- outArr = reg.exec(str);
- }
- for (ind = 0; ind < allResults.length; ind++) {
- if (typeof allResults[ind] !== 'string' &&
- allResults[ind].content) {
- allResults[ind].content = getHtmlArr(allResults[ind].content);
- }
- }
- return allResults;
- }
-
- function rebuildHtmlFromBite(bite, htmlObject, fill) {
- // Take the processed bite after binary-search
- // truncated and re-build the original HTML
- // tags around the processed string.
- bite = bite.replace(fill, '');
-
- var biteHelper = function(contentArr, tagInfo) {
- var retStr = '',
- content,
- biteContent,
- biteLength,
- nextWord,
- i;
- for (i = 0; i < contentArr.length; i++) {
- content = contentArr[i];
- biteLength = $.trim(bite).split(' ').length;
- if ($.trim(bite).length) {
- if (typeof content === 'string') {
- if (!/
/.test(content)) {
- if (biteLength === 1 && $.trim(bite).length <= content.length) {
- content = bite;
- // We want the fill to go inside of the last HTML
- // element if the element is a container.
- if (tagInfo === 'p' || tagInfo === 'div') {
- content += fill;
- }
- bite = '';
- } else {
- bite = bite.replace(content, '');
- }
- }
- retStr += $.trim(content) + ((i === contentArr.length-1 || biteLength <= 1) ? '' : ' ');
- } else {
- biteContent = biteHelper(content.content, content.tag);
- if (content.after) bite = bite.replace(content.after, '');
- if (biteContent) {
- if (!content.after) content.after = ' ';
- retStr += '<'+content.tag+content.attribs+'>'+biteContent+''+content.tag+'>' + content.after;
- }
- }
- }
- }
- return retStr;
- },
- htmlResults = biteHelper(htmlObject);
-
- // Add fill if doesn't exist. This will place it outside the HTML elements.
- if (htmlResults.slice(htmlResults.length - fill.length) === fill) {
- htmlResults += fill;
- }
-
- return htmlResults;
- }
-
- function truncate() {
- var data = this.data('trunk8'),
- settings = data.settings,
- width = settings.width,
- side = settings.side,
- fill = settings.fill,
- parseHTML = settings.parseHTML,
- line_height = utils.getLineHeight(this) * settings.lines,
- str = data.original_text,
- length = str.length,
- max_bite = '',
- lower, upper,
- bite_size,
- bite,
- text,
- htmlObject;
-
- /* Reset the field to the original string. */
- this.html(str);
- text = this.text();
-
- /* If string has HTML and parse HTML is set, build */
- /* the data struct to house the tags */
- if (parseHTML && stripHTML(str) !== str) {
- htmlObject = getHtmlArr(str);
- str = stripHTML(str);
- length = str.length;
- }
-
- if (width === WIDTH.auto) {
- /* Assuming there is no "overflow: hidden". */
- if (this.height() <= line_height) {
- /* Text is already at the optimal trunkage. */
- return;
- }
-
- /* Binary search technique for finding the optimal trunkage. */
- /* Find the maximum bite without overflowing. */
- lower = 0;
- upper = length - 1;
-
- while (lower <= upper) {
- bite_size = lower + ((upper - lower) >> 1);
-
- bite = utils.eatStr(str, side, length - bite_size, fill);
-
- if (parseHTML && htmlObject) {
- bite = rebuildHtmlFromBite(bite, htmlObject, fill);
- }
-
- this.html(bite);
-
- /* Check for overflow. */
- if (this.height() > line_height) {
- upper = bite_size - 1;
- }
- else {
- lower = bite_size + 1;
-
- /* Save the bigger bite. */
- max_bite = (max_bite.length > bite.length) ? max_bite : bite;
- }
- }
-
- /* Reset the content to eliminate possible existing scroll bars. */
- this.html('');
-
- /* Display the biggest bite. */
- this.html(max_bite);
-
- if (settings.tooltip) {
- this.attr('title', text);
- }
- }
- else if (!isNaN(width)) {
- bite_size = length - width;
-
- bite = utils.eatStr(str, side, bite_size, fill);
-
- this.html(bite);
-
- if (settings.tooltip) {
- this.attr('title', str);
- }
- }
- else {
- $.error('Invalid width "' + width + '".');
- }
- }
-
- methods = {
- init: function (options) {
- return this.each(function () {
- var $this = $(this),
- data = $this.data('trunk8');
-
- if (!data) {
- $this.data('trunk8', (data = new trunk8(this)));
- }
-
- data.updateSettings(options);
-
- truncate.call($this);
- });
- },
-
- /** Updates the text value of the elements while maintaining truncation. */
- update: function (new_string) {
- return this.each(function () {
- var $this = $(this);
-
- /* Update text. */
- if (new_string) {
- $this.data('trunk8').original_text = new_string;
- }
-
- /* Truncate accordingly. */
- truncate.call($this);
- });
- },
-
- revert: function () {
- return this.each(function () {
- /* Get original text. */
- var text = $(this).data('trunk8').original_text;
-
- /* Revert element to original text. */
- $(this).html(text);
- });
- },
-
- /** Returns this instance's settings object. NOT CHAINABLE. */
- getSettings: function () {
- return $(this.get(0)).data('trunk8').settings;
- }
- };
-
- utils = {
- /** Replaces [bite_size] [side]-most chars in [str] with [fill]. */
- eatStr: function (str, side, bite_size, fill) {
- var length = str.length,
- key = utils.eatStr.generateKey.apply(null, arguments),
- half_length,
- half_bite_size;
-
- /* If the result is already in the cache, return it. */
- if (utils.eatStr.cache[key]) {
- return utils.eatStr.cache[key];
- }
-
- /* Common error handling. */
- if ((typeof str !== 'string') || (length === 0)) {
- $.error('Invalid source string "' + str + '".');
- }
- if ((bite_size < 0) || (bite_size > length)) {
- $.error('Invalid bite size "' + bite_size + '".');
- }
- else if (bite_size === 0) {
- /* No bite should show no truncation. */
- return str;
- }
- if (typeof (fill + '') !== 'string') {
- $.error('Fill unable to be converted to a string.');
- }
-
- /* Compute the result, store it in the cache, and return it. */
- switch (side) {
- case SIDES.right:
- /* str... */
- return utils.eatStr.cache[key] =
- $.trim(str.substr(0, length - bite_size)) + fill;
-
- case SIDES.left:
- /* ...str */
- return utils.eatStr.cache[key] =
- fill + $.trim(str.substr(bite_size));
-
- case SIDES.center:
- /* Bit-shift to the right by one === Math.floor(x / 2) */
- half_length = length >> 1; // halve the length
- half_bite_size = bite_size >> 1; // halve the bite_size
-
- /* st...r */
- return utils.eatStr.cache[key] =
- $.trim(utils.eatStr(str.substr(0, length - half_length), SIDES.right, bite_size - half_bite_size, '')) +
- fill +
- $.trim(utils.eatStr(str.substr(length - half_length), SIDES.left, half_bite_size, ''));
-
- default:
- $.error('Invalid side "' + side + '".');
- }
- },
-
- getLineHeight: function (elem) {
- var floats = $(elem).css('float');
- if (floats !== 'none') {
- $(elem).css('float', 'none');
- }
- var pos = $(elem).css('position');
- if (pos === 'absolute') {
- $(elem).css('position', 'static');
- }
-
- var html = $(elem).html(),
- wrapper_id = 'line-height-test',
- line_height;
-
- /* Set the content to a small single character and wrap. */
- $(elem).html('i').wrap('