Просмотр исходного кода

Added TypeScript to handle conditionally floating the object list forms

atownson 1 год назад
Родитель
Сommit
1e03eb4eb8

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
netbox/project-static/dist/netbox.css


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
netbox/project-static/dist/netbox.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
netbox/project-static/dist/netbox.js.map


+ 35 - 0
netbox/project-static/src/buttons/floatBulk.ts

@@ -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();
+    });
+  }
+}

+ 2 - 0
netbox/project-static/src/buttons/index.ts

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

Некоторые файлы не были показаны из-за большого количества измененных файлов