Skip to content

Commit

Permalink
fix(UI): Fixed collapsable nestable node-tree state, in ajax navigation
Browse files Browse the repository at this point in the history
  • Loading branch information
ambroisemaupate committed Jun 7, 2024
1 parent 90e7d4e commit 2546848
Show file tree
Hide file tree
Showing 14 changed files with 87 additions and 82 deletions.
139 changes: 73 additions & 66 deletions lib/Rozier/src/Resources/app/Rozier.js
Original file line number Diff line number Diff line change
Expand Up @@ -69,49 +69,7 @@ export default class Rozier {
* override default nestable settings in order to
* store toggle state between reloads.
*/
if (window.localStorage) {
this.collapsedNestableState = window.localStorage.getItem('collapsed.uk.nestable')
/*
* First login into backoffice
*/
if (!this.collapsedNestableState) {
this.saveCollapsedNestableState(null)
this.collapsedNestableState = window.localStorage.getItem('collapsed.uk.nestable')
}
this.collapsedNestableState = JSON.parse(this.collapsedNestableState)

window.UIkit.on('beforeready.uk.dom', function () {
$.extend(window.UIkit.components.nestable.prototype, {
collapseItem: function (li) {
var lists = li.children(this.options._listClass)
if (lists.length) {
li.addClass(this.options.collapsedClass)
}
/*
* Create new event on collapse
*/
document.dispatchEvent(
new CustomEvent('collapse.uk.nestable', {
detail: li,
})
)
},
})
$.extend(window.UIkit.components.nestable.prototype, {
expandItem: function (li) {
li.removeClass(this.options.collapsedClass)
/*
* Create new event on expand
*/
document.dispatchEvent(
new CustomEvent('expand.uk.nestable', {
detail: li,
})
)
},
})
})
}
this.setupCollapsedNestableState()

this.lazyload = new Lazyload()
this.entriesPanel = new EntriesPanel()
Expand Down Expand Up @@ -162,9 +120,56 @@ export default class Rozier {
bulkActions()
window.addEventListener('pageshowend', () => {
bulkActions()
this.syncCollapsedNestableState()
})
}

setupCollapsedNestableState() {
if (window.localStorage) {
this.collapsedNestableState = window.localStorage.getItem('collapsed.uk.nestable')
/*
* First login into backoffice
*/
if (!this.collapsedNestableState) {
this.saveCollapsedNestableState(null)
this.collapsedNestableState = window.localStorage.getItem('collapsed.uk.nestable')
}
this.collapsedNestableState = JSON.parse(this.collapsedNestableState)

window.UIkit.on('beforeready.uk.dom', function () {
$.extend(window.UIkit.components.nestable.prototype, {
collapseItem: function (li) {
var lists = li.children(this.options._listClass)
if (lists.length) {
li.addClass(this.options.collapsedClass)
}
/*
* Create new event on collapse
*/
document.dispatchEvent(
new CustomEvent('collapse.uk.nestable', {
detail: li,
})
)
},
})
$.extend(window.UIkit.components.nestable.prototype, {
expandItem: function (li) {
li.removeClass(this.options.collapsedClass)
/*
* Create new event on expand
*/
document.dispatchEvent(
new CustomEvent('expand.uk.nestable', {
detail: li,
})
)
},
})
})
}
}

saveCollapsedNestableState(state = null) {
if (state === null) {
state = {
Expand All @@ -176,46 +181,48 @@ export default class Rozier {
window.localStorage.setItem('collapsed.uk.nestable', JSON.stringify(state))
}

/**
* init nestable for ajax
* @return {[type]} [description]
*/
initNestables() {
syncCollapsedNestableState() {
this.collapsedNestableState.nodes.forEach((value) => {
const li = $('.uk-nestable-item[data-node-id="' + $.escapeSelector(value) + '"]')
if (li.length) {
li[0].classList.add('uk-collapsed')
}
const li = document.querySelectorAll('.uk-nestable-item[data-node-id="' + $.escapeSelector(value) + '"]')
li.forEach((element) => {
element.classList.add('uk-collapsed')
})
})
this.collapsedNestableState.tags.forEach((value) => {
const li = $('.uk-nestable-item[data-tag-id="' + $.escapeSelector(value) + '"]')
if (li.length) {
li[0].classList.add('uk-collapsed')
}
const li = document.querySelectorAll('.uk-nestable-item[data-tag-id="' + $.escapeSelector(value) + '"]')
li.forEach((element) => {
element.classList.add('uk-collapsed')
})
})
this.collapsedNestableState.folders.forEach((value) => {
const li = $('.uk-nestable-item[data-folder-id="' + $.escapeSelector(value) + '"]')
if (li.length) {
li[0].classList.add('uk-collapsed')
}
const li = document.querySelectorAll('.uk-nestable-item[data-folder-id="' + $.escapeSelector(value) + '"]')
li.forEach((element) => {
element.classList.add('uk-collapsed')
})
})
}

/**
* init nestable for ajax
*/
initNestables() {
this.syncCollapsedNestableState()

$('.uk-nestable').each((index, element) => {
let $tree = $(element)
document.querySelectorAll('.uk-nestable').forEach((element) => {
/*
* make drag&drop only available on handle
* very important for Touch based device which need to
* scroll on trees.
*/
let options = {
const options = {
handleClass: 'uk-nestable-handle',
}

if ($tree.hasClass('nodetree')) {
if (element.classList.contains('nodetree')) {
options.group = 'nodeTree'
} else if ($tree.hasClass('tagtree')) {
} else if (element.classList.contains('tagtree')) {
options.group = 'tagTree'
} else if ($tree.hasClass('foldertree')) {
} else if (element.classList.contains('foldertree')) {
options.group = 'folderTree'
}

Expand Down
1 change: 0 additions & 1 deletion lib/Rozier/src/Resources/app/RozierMobile.js
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,6 @@ export default class RozierMobile {

/**
* Menu click
* @return {[type]} [description]
*/
menuClick(e) {
if (!this.menuOpen) this.openMenu()
Expand Down
8 changes: 4 additions & 4 deletions lib/Rozier/src/Resources/app/less/widgets/nestable.less
Original file line number Diff line number Diff line change
Expand Up @@ -327,11 +327,11 @@
&.unpublished-node {
& > .non-nestable-handle:before,
& > .uk-nestable-handle:before {
width: 9px;
height: 9px;
border-radius: 2px;
width: 8px;
height: 8px;
border-radius: 1px;
.rotation(45deg);
top: 1px; left: 1px; // t2
z-index: 1;
}
}

Expand Down
2 changes: 1 addition & 1 deletion lib/Rozier/src/Resources/app/less/widgets/node_tree.less
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@
@media screen and (min-width: 992px) {
position: relative;
vertical-align: middle;
padding: 5px 10px 5px 0;
padding: 0 10px 0 0; // do not add vertical padding, it will break the vertical align
display: flex;
flex-wrap: wrap;
align-items: center;
Expand Down
1 change: 0 additions & 1 deletion lib/Rozier/src/Resources/app/widgets/StackNodeTree.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import NodeTreeContextActions from '../components/trees/NodeTreeContextActions'
export default class StackNodeTree {
constructor() {
this.$page = $('.stack-tree').eq(0)
this.currentRequest = null
this.$quickAddNodeButtons = this.$page.find('.stack-tree-quick-creation a')
this.$nodeTree = this.$page.find('.root-tree').eq(0)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@

<link href="{{ asset('css/vendor.9b59501e29a05f532c3c.css', 'Rozier') }}" rel="stylesheet">

<link href="{{ asset('css/app.dea952832312ed7f5246.css', 'Rozier') }}" rel="stylesheet">
<link href="{{ asset('css/app.f510cb7c95b4a54abe88.css', 'Rozier') }}" rel="stylesheet">



Expand Down
4 changes: 2 additions & 2 deletions lib/Rozier/src/Resources/views/partials/js-inject.html.twig
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@

<script src="{{ asset('js/vendor.28b7dd745d0e77fa87ef.js', 'Rozier') }}" defer type="text/javascript"></script>
<script src="{{ asset('js/vendor.af133cce52f787d4c208.js', 'Rozier') }}" defer type="text/javascript"></script>

<script src="{{ asset('js/app.28b7dd745d0e77fa87ef.js', 'Rozier') }}" defer type="text/javascript"></script>
<script src="{{ asset('js/app.af133cce52f787d4c208.js', 'Rozier') }}" defer type="text/javascript"></script>

Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@

<script src="{{ asset('js/simple.28b7dd745d0e77fa87ef.js', 'Rozier') }}" defer type="text/javascript"></script>
<script src="{{ asset('js/simple.af133cce52f787d4c208.js', 'Rozier') }}" defer type="text/javascript"></script>

1 change: 0 additions & 1 deletion lib/Rozier/src/static/css/app.dea952832312ed7f5246.css.map

This file was deleted.

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions lib/Rozier/src/static/css/app.f510cb7c95b4a54abe88.css.map

Large diffs are not rendered by default.

Loading

0 comments on commit 2546848

Please sign in to comment.