Merge pull request #6338 from umbraco/v8/bug/6162-angular-filter-fix

Fixes v8: Correct label filter is applied when copying NC
This commit is contained in:
Shannon Deminick
2019-09-27 09:54:10 +02:00
committed by GitHub

View File

@@ -4,28 +4,58 @@
* @namespace truncateFilter
*
* param {any} wordwise if true, the string will be cut after last fully displayed word.
* param {any} max max length of the outputtet string
* param {any} tail option tail, defaults to: ' ...'
*
* param {any} max where to cut the string.
* param {any} tail option tail, defaults to: ''
*
* Legacy version:
* parameter noOfChars(wordwise) Where to cut the string.
* parameter appendDots(max) If true dots will be appended in the end.
*
* @description
* Limits the length of a string, if a cut happens only the string will be appended with three dots to indicate that more is available.
*/
angular.module("umbraco.filters").filter('truncate',
function () {
return function (value, wordwise, max, tail) {
if (!value) return '';
/*
Overload-fix to support Forms Legacy Version:
We are making this hack to support the old Forms version of the truncate filter.
The old version took different attributes, this code block checks if the first argument isnt a boolean, meaning its not the new version, meaning that the filter is begin used in the old way.
Therefor we use the second argument(max) to indicate wether we want a tail (…) and using the first argument(wordwise) as the second argument(max amount of characters)
*/
if (typeof(wordwise) !== 'boolean') {
// switch arguments around to fit Forms version.
if (max !== true) {
tail = '';
}
max = wordwise;
wordwise = false;
}
// !end of overload fix.
max = parseInt(max, 10);
if (!max) return value;
if (value.length <= max) return value;
tail = (!tail && tail !== '') ? '…' : tail;
if (wordwise && value.substr(max, 1) === ' ') {
max++;
}
value = value.substr(0, max);
if (wordwise) {
var lastspace = value.lastIndexOf(' ');
if (lastspace != -1) {
value = value.substr(0, lastspace);
if (lastspace !== -1) {
value = value.substr(0, lastspace+1);
}
}
return value + (tail || (wordwise ? ' …' : '…'));
return value + tail;
};
}
);