From 2348cb80be7e53ffa0812978b3ace15e20ca8c36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Fri, 10 Jan 2020 11:47:34 +0100 Subject: [PATCH] titlecase fitler added --- .../common/filters/umbCmsJoinArray.filter.js | 2 +- .../common/filters/umbCmsTitleCase.filter.js | 32 +++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 src/Umbraco.Web.UI.Client/src/common/filters/umbCmsTitleCase.filter.js diff --git a/src/Umbraco.Web.UI.Client/src/common/filters/umbCmsJoinArray.filter.js b/src/Umbraco.Web.UI.Client/src/common/filters/umbCmsJoinArray.filter.js index de340bab27..a519f81054 100644 --- a/src/Umbraco.Web.UI.Client/src/common/filters/umbCmsJoinArray.filter.js +++ b/src/Umbraco.Web.UI.Client/src/common/filters/umbCmsJoinArray.filter.js @@ -1,6 +1,6 @@ /** * @ngdoc filter - * @name umbraco.filters.filter:CMS_joinArray + * @name umbraco.filters.filter:umbCmsJoinArray * @namespace umbCmsJoinArray * * param {array} array of string or objects, if an object use the third argument to specify which prop to list. diff --git a/src/Umbraco.Web.UI.Client/src/common/filters/umbCmsTitleCase.filter.js b/src/Umbraco.Web.UI.Client/src/common/filters/umbCmsTitleCase.filter.js new file mode 100644 index 0000000000..9d9de0bde1 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/common/filters/umbCmsTitleCase.filter.js @@ -0,0 +1,32 @@ +/** + * @ngdoc filter + * @name umbraco.filters.filter:umbCmsTitleCase + * @namespace umbCmsTitleCase + * + * param {string} the text turned into title case. + * + * @description + * Transforms text to title case. Capitalizes the first letter of each word, and transforms the rest of the word to lower case. + * + */ +angular.module("umbraco.filters").filter('umbCmsTitleCase', function() { + return function (input) { + var smallWords = /^(a|an|and|as|at|but|by|en|for|if|in|nor|of|on|or|per|the|to|vs?\.?|via)$/i; + + input = input.toLowerCase(); + return input.replace(/[A-Za-z0-9\u00C0-\u00FF]+[^\s-]*/g, function(match, index, title) { + if (index > 0 && index + match.length !== title.length && + match.search(smallWords) > -1 && title.charAt(index - 2) !== ":" && + (title.charAt(index + match.length) !== '-' || title.charAt(index - 1) === '-') && + title.charAt(index - 1).search(/[^\s-]/) < 0) { + return match.toLowerCase(); + } + + if (match.substr(1).search(/[A-Z]|\../) > -1) { + return match; + } + + return match.charAt(0).toUpperCase() + match.substr(1); + }); + } +});