about summary refs log tree commit diff
path: root/app/javascript/core/admin.js
diff options
context:
space:
mode:
authorkibigo! <marrus-sh@users.noreply.github.com>2017-11-18 15:12:52 -0800
committerkibigo! <marrus-sh@users.noreply.github.com>2017-11-18 15:12:52 -0800
commita9ed85717163040fb202d49b0342e9e350cb12ba (patch)
tree542142fa2ed7c1ff5584671c9a678f4b64edc15c /app/javascript/core/admin.js
parent92cc79be7206534e8c9a9957cc89b5d0eb0bcfac (diff)
WIP static themeing
Diffstat (limited to 'app/javascript/core/admin.js')
-rw-r--r--app/javascript/core/admin.js42
1 files changed, 42 insertions, 0 deletions
diff --git a/app/javascript/core/admin.js b/app/javascript/core/admin.js
new file mode 100644
index 000000000..c0bd09bdd
--- /dev/null
+++ b/app/javascript/core/admin.js
@@ -0,0 +1,42 @@
+//  This file will be loaded on admin pages, regardless of theme.
+
+import { delegate } from 'rails-ujs';
+
+function handleDeleteStatus(event) {
+  const [data] = event.detail;
+  const element = document.querySelector(`[data-id="${data.id}"]`);
+  if (element) {
+    element.parentNode.removeChild(element);
+  }
+}
+
+[].forEach.call(document.querySelectorAll('.trash-button'), (content) => {
+  content.addEventListener('ajax:success', handleDeleteStatus);
+});
+
+const batchCheckboxClassName = '.batch-checkbox input[type="checkbox"]';
+
+delegate(document, '#batch_checkbox_all', 'change', ({ target }) => {
+  [].forEach.call(document.querySelectorAll(batchCheckboxClassName), (content) => {
+    content.checked = target.checked;
+  });
+});
+
+delegate(document, batchCheckboxClassName, 'change', () => {
+  const checkAllElement = document.querySelector('#batch_checkbox_all');
+  if (checkAllElement) {
+    checkAllElement.checked = [].every.call(document.querySelectorAll(batchCheckboxClassName), (content) => content.checked);
+  }
+});
+
+delegate(document, '.media-spoiler-show-button', 'click', () => {
+  [].forEach.call(document.querySelectorAll('.activity-stream .media-spoiler-wrapper'), (content) => {
+    content.classList.add('media-spoiler-wrapper__visible');
+  });
+});
+
+delegate(document, '.media-spoiler-hide-button', 'click', () => {
+  [].forEach.call(document.querySelectorAll('.activity-stream .media-spoiler-wrapper'), (content) => {
+    content.classList.remove('media-spoiler-wrapper__visible');
+  });
+});