]> git.mxchange.org Git - friendica.git/blobdiff - view/js/main.js
Improve search box
[friendica.git] / view / js / main.js
index c3d9cbed5cf2ce1ec617628de3f34ccb3a83c646..e2cee43d54464c12b0d07707c208d3ff5a293437 100644 (file)
@@ -1,4 +1,21 @@
 // @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPLv3-or-later
+
+// https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill
+if (!Element.prototype.matches) {
+       Element.prototype.matches =
+               Element.prototype.matchesSelector ||
+               Element.prototype.mozMatchesSelector ||
+               Element.prototype.msMatchesSelector ||
+               Element.prototype.oMatchesSelector ||
+               Element.prototype.webkitMatchesSelector ||
+               function(s) {
+                       var matches = (this.document || this.ownerDocument).querySelectorAll(s),
+                               i = matches.length;
+                       while (--i >= 0 && matches.item(i) !== this) {}
+                       return i > -1;
+               };
+}
+
 function resizeIframe(obj) {
        _resizeIframe(obj, 0);
 }
@@ -17,25 +34,30 @@ function _resizeIframe(obj, desth) {
 }
 
 function openClose(theID) {
-       if (document.getElementById(theID).style.display == "block") {
-               document.getElementById(theID).style.display = "none"
-       } else {
-               document.getElementById(theID).style.display = "block"
+       var el = document.getElementById(theID);
+       if (el) {
+               if (window.getComputedStyle(el).display === "none") {
+                       openMenu(theID);
+               } else {
+                       closeMenu(theID);
+               }
        }
 }
 
 function openMenu(theID) {
        var el = document.getElementById(theID);
-
        if (el) {
-               el.style.display = "block";
+               if (!el.dataset.display) {
+                       el.dataset.display = 'block';
+               }
+               el.style.display = el.dataset.display;
        }
 }
 
 function closeMenu(theID) {
-       var el = document.getElementById(theID)
-
+       var el = document.getElementById(theID);
        if (el) {
+               el.dataset.display = window.getComputedStyle(el).display;
                el.style.display = "none";
        }
 }
@@ -444,7 +466,7 @@ function updateConvItems(data) {
                $('body').css('cursor', 'auto');
        }
        /* autocomplete @nicknames */
-       $(".comment-edit-form  textarea").editor_autocomplete(baseurl+"/acl");
+       $(".comment-edit-form  textarea").editor_autocomplete(baseurl + '/search/acl');
        /* autocomplete bbcode */
        $(".comment-edit-form  textarea").bbco_autocomplete('bbcode');
 }
@@ -610,7 +632,6 @@ function post_comment(id) {
        unpause();
        commentBusy = true;
        $('body').css('cursor', 'wait');
-       $("#comment-preview-inp-" + id).val("0");
        $.post(
                "item",
                $("#comment-edit-form-" + id).serialize(),
@@ -639,11 +660,10 @@ function post_comment(id) {
 }
 
 function preview_comment(id) {
-       $("#comment-preview-inp-" + id).val("1");
        $("#comment-edit-preview-" + id).show();
        $.post(
                "item",
-               $("#comment-edit-form-" + id).serialize(),
+               $("#comment-edit-form-" + id).serialize() + '&preview=1',
                function(data) {
                        if (data.preview) {
                                $("#comment-edit-preview-" + id).html(data.preview);
@@ -788,11 +808,25 @@ function profChangeMember(gid,cid) {
        });
 }
 
-function contactgroupChangeMember(gid,cid) {
+function contactgroupChangeMember(checkbox, gid, cid) {
+       let url;
+       // checkbox.checked is the checkbox state after the click
+       if (checkbox.checked) {
+               url = 'group/' + gid + '/add/' + cid;
+       } else {
+               url = 'group/' + gid + '/remove/' + cid;
+       }
        $('body').css('cursor', 'wait');
-       $.get('contactgroup/' + gid + '/' + cid, function(data) {
-                       $('body').css('cursor', 'auto');
+       $.post(url)
+       .error(function () {
+               // Restores previous state in case of error
+               checkbox.checked = !checkbox.checked;
+       })
+       .always(function() {
+               $('body').css('cursor', 'auto');
        });
+
+       return true;
 }
 
 function checkboxhighlight(box) {