summaryrefslogtreecommitdiff
path: root/elm
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2021-05-25 16:34:48 +0200
committerYorhel <git@yorhel.nl>2021-05-25 16:34:48 +0200
commitae3164ccfc44680d306b228de4793281b72af26a (patch)
tree3fb2f93a3770cdc57f1f6b2ab4d0b642e619863b /elm
parentbe5325f64d990e486d5fae1b6c4b4ee5a548aa1b (diff)
VN::Page: Save collapsable language status in user profile
Diffstat (limited to 'elm')
-rw-r--r--elm/remember-details.js21
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));
+ });
+});