|
|
@@ -0,0 +1,23 @@
|
|
|
+import { getElements, isTruthy } from './util';
|
|
|
+import { initButtons } from './buttons';
|
|
|
+
|
|
|
+function initDepedencies(): void {
|
|
|
+ for (const init of [initButtons]) {
|
|
|
+ init();
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * Hook into HTMX's event system to reinitialize specific native event listeners when HTMX swaps
|
|
|
+ * elements.
|
|
|
+ */
|
|
|
+export function initHtmx(): void {
|
|
|
+ for (const element of getElements('[hx-target]')) {
|
|
|
+ const targetSelector = element.getAttribute('hx-target');
|
|
|
+ if (isTruthy(targetSelector)) {
|
|
|
+ for (const target of getElements(targetSelector)) {
|
|
|
+ target.addEventListener('htmx:afterSettle', initDepedencies);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|