2019-09-13 22:47:07 +12:00
|
|
|
(function(window) {
|
|
|
|
"use strict";
|
2019-05-09 18:54:39 +12:00
|
|
|
|
2019-09-13 22:47:07 +12:00
|
|
|
window.ls.container.get("view").add({
|
|
|
|
selector: "data-forms-text-count",
|
|
|
|
controller: function(element) {
|
|
|
|
var counter = document.createElement("span");
|
2019-05-09 18:54:39 +12:00
|
|
|
|
2019-09-13 22:47:07 +12:00
|
|
|
counter.className = "counter";
|
2019-05-09 18:54:39 +12:00
|
|
|
|
2019-09-13 22:47:07 +12:00
|
|
|
element.parentNode.insertBefore(counter, element.nextSibling);
|
2019-05-09 18:54:39 +12:00
|
|
|
|
2019-09-13 22:47:07 +12:00
|
|
|
var count = function() {
|
|
|
|
if (0 <= element.maxLength) {
|
|
|
|
counter.innerText =
|
|
|
|
(element.maxLength - element.value.length).toString() +
|
|
|
|
" / " +
|
|
|
|
element.maxLength;
|
|
|
|
} else {
|
|
|
|
var words =
|
|
|
|
element.value !== "" ? element.value.trim().split(" ").length : 0;
|
|
|
|
counter.innerText =
|
|
|
|
words + " words and " + element.value.length.toString() + " chars";
|
2019-05-09 18:54:39 +12:00
|
|
|
}
|
2019-09-13 22:47:07 +12:00
|
|
|
};
|
|
|
|
|
|
|
|
element.addEventListener("keyup", count);
|
|
|
|
element.addEventListener("change", count);
|
|
|
|
element.addEventListener("cut", count);
|
|
|
|
element.addEventListener("paste", count);
|
|
|
|
element.addEventListener("drop", count);
|
2019-05-09 18:54:39 +12:00
|
|
|
|
2019-09-13 22:47:07 +12:00
|
|
|
count();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
})(window);
|