1
0
Fork 0
mirror of synced 2024-07-06 23:21:05 +12:00
appwrite/public/scripts/views/forms/text-direction.js

85 lines
1.8 KiB
JavaScript
Raw Normal View History

(function(window) {
"use strict";
2019-05-09 18:54:39 +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
var setDirection = function() {
var value = element.value[0] ? element.value : "";
var direction = "ltr";
var align = "left";
2019-05-09 18:54:39 +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
if (-1 < rtlStock.indexOf("^" + firstChar + "^")) {
direction = "rtl";
align = "right";
}
2019-05-09 18:54:39 +12:00
element.style.direction = direction;
element.style.textAlign = align;
};
2019-05-09 18:54:39 +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
setDirection();
}
});
})(window);