aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorn-peugnet <n.peugnet@free.fr>2020-04-28 18:08:35 +0200
committern-peugnet <n.peugnet@free.fr>2020-04-28 18:08:35 +0200
commit5b1457835be6c00a7d108537ecc88d3d85d48d51 (patch)
tree5db70e04ce18ba9b15bdd69e85e8e483585e13ae /src
parent877e0570ea7eb94e9698aab9147104f5251f55c9 (diff)
downloadwcms-5b1457835be6c00a7d108537ecc88d3d85d48d51.tar.gz
wcms-5b1457835be6c00a7d108537ecc88d3d85d48d51.zip
feat: select all for code inputs
This enable the "select all" feature for `input.select-all` element. input elements are used because these are the only one with the `select()` method. To obtain the same rendering as before the readonly attribute and the class `code` have been added to these elements. @vincent-peugnet: make sure to use this element for future select-all Closes #107
Diffstat (limited to 'src')
-rw-r--r--src/fn/fn.js21
-rw-r--r--src/home.js4
-rw-r--r--src/media.js4
3 files changed, 27 insertions, 2 deletions
diff --git a/src/fn/fn.js b/src/fn/fn.js
index bca4eaf..a5aa538 100644
--- a/src/fn/fn.js
+++ b/src/fn/fn.js
@@ -28,3 +28,24 @@ export function closeSubmenus(e) {
}
}
}
+
+/**
+ * Select the whole content of the clicked item.
+ * @param {MouseEvent} e
+ */
+function selectAll(e) {
+ if (e.target instanceof HTMLInputElement) {
+ e.target.select();
+ e.target.focus();
+ }
+}
+
+/**
+ * Activate "select all" feature for `input.select-all` elements.
+ */
+export function activateSelectAll() {
+ let selectAllInputs = document.querySelectorAll('input.select-all');
+ for (const selectAllInput of selectAllInputs) {
+ selectAllInput.addEventListener('click', selectAll);
+ }
+}
diff --git a/src/home.js b/src/home.js
index 3dc79ef..0778edb 100644
--- a/src/home.js
+++ b/src/home.js
@@ -1,4 +1,4 @@
-import { checkallHandler, closeSubmenus } from './fn/fn';
+import { checkallHandler, closeSubmenus, activateSelectAll } from './fn/fn';
window.addEventListener('load', () => {
let checkboxes = document.getElementsByName('pagesid[]');
@@ -11,6 +11,8 @@ window.addEventListener('load', () => {
checkbox.addEventListener('input', checkallHandler.bind({ checkboxes }));
checkall.innerHTML = '';
checkall.appendChild(checkbox);
+
+ activateSelectAll();
});
window.addEventListener('click', closeSubmenus);
diff --git a/src/media.js b/src/media.js
index 3ac7e3f..356c7c9 100644
--- a/src/media.js
+++ b/src/media.js
@@ -1,4 +1,4 @@
-import { checkallHandler, closeSubmenus } from './fn/fn';
+import { checkallHandler, closeSubmenus, activateSelectAll } from './fn/fn';
window.addEventListener('load', () => {
let checkboxes = document.getElementsByName('id[]');
@@ -8,6 +8,8 @@ window.addEventListener('load', () => {
checkbox.addEventListener('input', checkallHandler.bind({ checkboxes }));
checkall.innerHTML = '';
checkall.appendChild(checkbox);
+
+ activateSelectAll();
});
window.addEventListener('click', closeSubmenus);