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-direction",
|
|
|
|
|
controller: function(element) {
|
|
|
|
|
var rtlStock =
|
|
|
|
|
"^ا^ب^ت^ث^ج^ح^خ^د^ذ^ر^ز^س^ش^ص^ض^ط^ظ^ع^غ^ف^ق^ك^ل^م^ن^ه^و^ي^א^ב^ג^ד^ה^ו^ז^ח^ט^י^כ^ך^ל^מ^ם^נ^ן^ס^ע^פ^ף^צ^ץ^ק^ר^ש^ת^";
|
|
|
|
|
var special = [
|
|
|
|
|
"\n",
|
|
|
|
|
" ",
|
|
|
|
|
"״",
|
|
|
|
|
'"',
|
|
|
|
|
"_",
|
|
|
|
|
"'",
|
|
|
|
|
"!",
|
|
|
|
|
"@",
|
|
|
|
|
"#",
|
|
|
|
|
"$",
|
|
|
|
|
"^",
|
|
|
|
|
"&",
|
|
|
|
|
"%",
|
|
|
|
|
"*",
|
|
|
|
|
"(",
|
|
|
|
|
")",
|
|
|
|
|
"+",
|
|
|
|
|
"=",
|
|
|
|
|
"-",
|
|
|
|
|
"[",
|
|
|
|
|
"]",
|
|
|
|
|
"\\",
|
|
|
|
|
"/",
|
|
|
|
|
"{",
|
|
|
|
|
"}",
|
|
|
|
|
"|",
|
|
|
|
|
":",
|
|
|
|
|
"<",
|
|
|
|
|
">",
|
|
|
|
|
"?",
|
|
|
|
|
",",
|
|
|
|
|
".",
|
|
|
|
|
"0",
|
|
|
|
|
"1",
|
|
|
|
|
"2",
|
|
|
|
|
"3",
|
|
|
|
|
"4",
|
|
|
|
|
"5",
|
|
|
|
|
"6",
|
|
|
|
|
"7",
|
|
|
|
|
"8",
|
|
|
|
|
"9"
|
|
|
|
|
];
|
2019-05-09 18:54:39 +12:00
|
|
|
|
|
2019-09-13 22:47:07 +12:00
|
|
|
|
var setDirection = function() {
|
|
|
|
|
var value = element.value[0] ? element.value : "";
|
|
|
|
|
var direction = "ltr";
|
|
|
|
|
var align = "left";
|
2019-05-09 18:54:39 +12:00
|
|
|
|
|
2019-09-13 22:47:07 +12:00
|
|
|
|
for (var i = 0; i < value.length; i++) {
|
|
|
|
|
if (-1 === special.indexOf(value[i])) {
|
|
|
|
|
var firstChar = value[i];
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
2019-05-09 18:54:39 +12:00
|
|
|
|
|
2019-09-13 22:47:07 +12:00
|
|
|
|
if (-1 < rtlStock.indexOf("^" + firstChar + "^")) {
|
|
|
|
|
direction = "rtl";
|
|
|
|
|
align = "right";
|
|
|
|
|
}
|
2019-05-09 18:54:39 +12:00
|
|
|
|
|
2019-09-13 22:47:07 +12:00
|
|
|
|
element.style.direction = direction;
|
|
|
|
|
element.style.textAlign = align;
|
|
|
|
|
};
|
2019-05-09 18:54:39 +12:00
|
|
|
|
|
2019-09-13 22:47:07 +12:00
|
|
|
|
element.addEventListener("keyup", setDirection);
|
|
|
|
|
element.addEventListener("change", setDirection);
|
|
|
|
|
element.addEventListener("cut", setDirection);
|
|
|
|
|
element.addEventListener("paste", setDirection);
|
|
|
|
|
element.addEventListener("drop", setDirection);
|
2019-05-09 18:54:39 +12:00
|
|
|
|
|
2019-09-13 22:47:07 +12:00
|
|
|
|
setDirection();
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
})(window);
|