diff options
author | Yorhel <git@yorhel.nl> | 2021-05-25 16:34:48 +0200 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2021-05-25 16:34:48 +0200 |
commit | ae3164ccfc44680d306b228de4793281b72af26a (patch) | |
tree | 3fb2f93a3770cdc57f1f6b2ab4d0b642e619863b /elm | |
parent | be5325f64d990e486d5fae1b6c4b4ee5a548aa1b (diff) |
VN::Page: Save collapsable language status in user profile
Diffstat (limited to 'elm')
-rw-r--r-- | elm/remember-details.js | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/elm/remember-details.js b/elm/remember-details.js index 0f3e000a..9d06bd55 100644 --- a/elm/remember-details.js +++ b/elm/remember-details.js @@ -16,3 +16,24 @@ document.querySelectorAll('details[data-remember-id]').forEach(function(el) { if(val != null) el.open = val == '1' ? true : false; }); + + +/* Alternative to the above, for users who are logged in. + * Usage: + * + * <details data-save-id=".."> .. </details> + * + * State changes will be saved with an AJAX call to /js/save-pref. + * Preferences are already assumed to be loaded by server-side code, so this + * approach does not cause a DOM reflow. + */ +document.querySelectorAll('details[data-save-id]').forEach(function(el) { + el.addEventListener('toggle', function() { + var xhr = new XMLHttpRequest(); + xhr.open('POST', '/js/save-pref'); + xhr.setRequestHeader('Content-Type', 'application/json'); + var obj = {}; + obj[el.getAttribute('data-save-id')] = el.open; + xhr.send(JSON.stringify(obj)); + }); +}); |