Skip to content

Commit ef0095b

Browse files
authored
triv: #26869 Initializing trees on afterSwap event (#215)
* triv: #26869 Initializing trees on afterSwap event * triv: #26869 Initializing trees on afterSwap event * triv: #26869 Initializing trees on afterSwap event
1 parent b4edaff commit ef0095b

3 files changed

Lines changed: 15 additions & 6 deletions

File tree

src/django_smartbase_admin/static/sb_admin/src/js/main.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ import Autocomplete from "./autocomplete"
3232
import StaticAutocomplete from "./static_autocomplete"
3333
import ChoicesJS from "./choices"
3434
import TextTags from "./text_tags"
35-
import { ensureFilterForms, setCookie, setDropdownLabel, shouldProcessAfterSwap } from "./utils"
35+
import { SBADMIN_INIT_TREES_EVENT, ensureFilterForms, setCookie, setDropdownLabel, shouldProcessAfterSwap } from "./utils"
3636
import Multiselect from "./multiselect"
3737
import Radio from "./radio"
3838
import "./inline_paginator"
@@ -82,6 +82,7 @@ class Main {
8282
this.initTooltips(target)
8383
this.syncEmptyFieldsets(target)
8484
this.scheduleScrollToFirstErrorField(target)
85+
document.dispatchEvent(new CustomEvent(SBADMIN_INIT_TREES_EVENT, {detail: {target: target}}))
8586
}
8687
window.htmx.on("htmx:afterSwap", (event) => {
8788
if (!shouldProcessAfterSwap(event)) {

src/django_smartbase_admin/static/sb_admin/src/js/tree_widget.js

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import {sanitizeHtml} from './sanitize'
2+
import {SBADMIN_INIT_TREES_EVENT} from './utils'
23

34
const loadValue = function ($inputEl, treeWidgetData, treeInstance) {
45
let value = $inputEl.val()
@@ -373,8 +374,8 @@ const loadValue = function ($inputEl, treeWidgetData, treeInstance) {
373374
})
374375
}
375376

376-
const initAllTrees = function () {
377-
$('.js-tree-widget').each(function (index, element) {
377+
const initAllTrees = function (root = document) {
378+
$(root).find('.js-tree-widget').addBack('.js-tree-widget').each(function (index, element) {
378379
const $treeEl = $(element)
379380
if ($treeEl.hasClass('fancytree-container') || element.closest('.djn-empty-form')) {
380381
return
@@ -393,15 +394,20 @@ const loadValue = function ($inputEl, treeWidgetData, treeInstance) {
393394
}
394395
initAllTrees()
395396

396-
document.addEventListener('formset:added', () => {
397-
initAllTrees()
397+
document.addEventListener('formset:added', (event) => {
398+
initAllTrees(event.target)
399+
})
400+
401+
document.addEventListener(SBADMIN_INIT_TREES_EVENT, (event) => {
402+
initAllTrees(event.detail && event.detail.target)
398403
})
399404

400405
const queryBuilderEl$ = $(".query-builder-advanced")
401406
queryBuilderEl$.on("afterCreateRuleInput.queryBuilder", function () {
407+
const builder = this
402408
setTimeout(() => {
403409
//next tick
404-
initAllTrees()
410+
initAllTrees(builder)
405411
}, 0)
406412
})
407413
})

src/django_smartbase_admin/static/sb_admin/src/js/utils.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import {sanitizeHtml} from './sanitize'
22

3+
export const SBADMIN_INIT_TREES_EVENT = 'SBAdminInitTrees'
4+
35
export const createIcon = (iconId, classes = ['w-24', 'h-24']) => {
46
const svgEl = document.createElementNS('http://www.w3.org/2000/svg', 'svg')
57
svgEl.classList.add(...classes)

0 commit comments

Comments
 (0)