aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorn-peugnet <n.peugnet@free.fr>2020-01-29 17:14:48 +0100
committern-peugnet <n.peugnet@free.fr>2020-01-29 17:28:40 +0100
commit46ad69fce564ad5f935cbf3ff5b4ef8a41209075 (patch)
tree02ece03be0b09313fe66ec0f9969dd545325fa47 /src
parent37c4ef737499b76393a755ff3440abf4dcb97aa2 (diff)
downloadwcms-46ad69fce564ad5f935cbf3ff5b4ef8a41209075.tar.gz
wcms-46ad69fce564ad5f935cbf3ff5b4ef8a41209075.zip
feat: media js bundle with checkall and closesubmenus
Diffstat (limited to 'src')
-rw-r--r--src/fn/fn.js30
-rw-r--r--src/home.js37
-rw-r--r--src/media.js13
3 files changed, 46 insertions, 34 deletions
diff --git a/src/fn/fn.js b/src/fn/fn.js
new file mode 100644
index 0000000..bca4eaf
--- /dev/null
+++ b/src/fn/fn.js
@@ -0,0 +1,30 @@
+/**
+ * Manage input event on the checkall checkbox.
+ * Call with .bind({checkboxes: HTMLElement[]})
+ * @param {InputEvent} e the input event
+ */
+export function checkallHandler(e) {
+ if (e.target.checked) {
+ for (const checkbox of this.checkboxes) {
+ checkbox.checked = true;
+ }
+ } else {
+ for (const checkbox of this.checkboxes) {
+ checkbox.checked = false;
+ }
+ }
+}
+
+/**
+ * Close all submenus of the menubar.
+ * @param {MouseEvent} e
+ */
+export function closeSubmenus(e) {
+ let details = document.querySelectorAll('aside details');
+ let currentDetail = e.target.closest('details');
+ for (const detail of details) {
+ if (!detail.isSameNode(currentDetail)) {
+ detail.removeAttribute('open');
+ }
+ }
+}
diff --git a/src/home.js b/src/home.js
index 7562389..8906079 100644
--- a/src/home.js
+++ b/src/home.js
@@ -1,44 +1,13 @@
-/** @type {HTMLInputElement[]} */
-let checkboxes = [];
+import { checkallHandler, closeSubmenus } from './fn/fn';
window.addEventListener('load', () => {
- checkboxes = document.getElementsByName('pagesid[]');
+ let checkboxes = document.getElementsByName('pagesid[]');
let checkall = document.getElementById('checkall');
let checkbox = document.createElement('input');
checkbox.type = 'checkbox';
- checkbox.addEventListener('input', checkallHandler);
+ checkbox.addEventListener('input', checkallHandler.bind({ checkboxes }));
checkall.innerHTML = '';
checkall.appendChild(checkbox);
});
window.addEventListener('click', closeSubmenus);
-
-/**
- * Manage input event on the checkall checkbox.
- * @param {InputEvent} e the input event
- */
-function checkallHandler(e) {
- if (e.target.checked) {
- for (const checkbox of checkboxes) {
- checkbox.checked = true;
- }
- } else {
- for (const checkbox of checkboxes) {
- checkbox.checked = false;
- }
- }
-}
-
-/**
- * Close all submenus of the menubar.
- * @param {MouseEvent} e
- */
-function closeSubmenus(e) {
- let details = document.querySelectorAll('aside details');
- let currentDetail = e.target.closest('details');
- for (const detail of details) {
- if (!detail.isSameNode(currentDetail)) {
- detail.removeAttribute('open');
- }
- }
-}
diff --git a/src/media.js b/src/media.js
new file mode 100644
index 0000000..3ac7e3f
--- /dev/null
+++ b/src/media.js
@@ -0,0 +1,13 @@
+import { checkallHandler, closeSubmenus } from './fn/fn';
+
+window.addEventListener('load', () => {
+ let checkboxes = document.getElementsByName('id[]');
+ let checkall = document.getElementById('checkall');
+ let checkbox = document.createElement('input');
+ checkbox.type = 'checkbox';
+ checkbox.addEventListener('input', checkallHandler.bind({ checkboxes }));
+ checkall.innerHTML = '';
+ checkall.appendChild(checkbox);
+});
+
+window.addEventListener('click', closeSubmenus);