Added TypeScript to handle conditionally floating the object list forms

This commit is contained in:
atownson
2024-09-23 13:06:46 -05:00
parent e238bb91b9
commit bd3b1f0152
5 changed files with 46 additions and 9 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,35 @@
import { getElements, fadeIn } from '../util';
/**
* Conditionally add and remove a class that will float the button group
* based on whether or not items in the list are checked
*/
function toggleFloat(): void {
const checkedCheckboxes = document.querySelector<HTMLInputElement>('input[type="checkbox"][name="pk"]:checked');
const buttonGroup = document.querySelector<HTMLDivElement>('div.form.form-horizontal div.btn-list');
const isFloating = buttonGroup.classList.contains('btn-float-group-left');
if (checkedCheckboxes !== null && !isFloating) {
buttonGroup.classList.add('btn-float-group-left');
}
else if (checkedCheckboxes === null && isFloating) {
buttonGroup.classList.remove('btn-float-group-left');
}
}
/**
* Initialize floating bulk buttons.
*/
export function initFloatBulk(): void {
for (const element of getElements<HTMLInputElement>('input[type="checkbox"][name="pk"]')) {
element.addEventListener('change', event => {
toggleFloat();
});
}
// Handle the select-all checkbox
for (const element of getElements<HTMLInputElement>('table tr th > input[type="checkbox"].toggle')) {
element.addEventListener('change', event => {
toggleFloat();
});
}
}

View File

@@ -3,6 +3,7 @@ import { initDepthToggle } from './depthToggle';
import { initMoveButtons } from './moveOptions';
import { initReslug } from './reslug';
import { initSelectAll } from './selectAll';
import { initFloatBulk } from './floatBulk';
import { initSelectMultiple } from './selectMultiple';
import { initMarkdownPreviews } from './markdownPreview';
import { initSecretToggle } from './secretToggle';
@@ -14,6 +15,7 @@ export function initButtons(): void {
initReslug,
initSelectAll,
initSelectMultiple,
initFloatBulk,
initMoveButtons,
initMarkdownPreviews,
initSecretToggle,