/home/techb158/immovalet.com/platform/packages/menu/resources/assets/js
Edit: /home/techb158/immovalet.com/platform/packages/menu/resources/assets/js/menu.js (12891B)
import sanitizeHTML from 'sanitize-html';
class MenuNestable {
constructor() {
this.$nestable = $('#nestable');
}
setDataItem(target) {
target.each((index, el) => {
let current = $(el);
current.data('id', current.attr('data-id'));
current.data('title', current.attr('data-title'));
current.data('reference-id', current.attr('data-reference-id'));
current.data('reference-type', current.attr('data-reference-type'));
current.data('custom-url', current.attr('data-custom-url'));
current.data('class', current.attr('data-class'));
current.data('target', current.attr('data-target'));
});
}
updatePositionForSerializedObj(arrayObject) {
let result = arrayObject;
let that = this;
$.each(result, (index, val) => {
val.position = index;
if (typeof val.children == 'undefined') {
val.children = [];
}
that.updatePositionForSerializedObj(val.children);
});
return result;
}
// Main function to initiate the module
init() {
let depth = parseInt(this.$nestable.attr('data-depth'));
if (depth < 1) {
depth = 5;
}
$('.nestable-menu').nestable({
group: 1,
maxDepth: depth,
expandBtnHTML: '',
collapseBtnHTML: ''
});
this.handleNestableMenu();
}
handleNestableMenu() {
let that = this;
// Show node details
$(document).on('click', '.dd-item .dd3-content a.show-item-details', event => {
event.preventDefault();
let parent = $(event.currentTarget).parent().parent();
$(event.currentTarget).toggleClass('active');
parent.toggleClass('active');
});
// Edit attributes
$(document).on('change blur keyup', '.nestable-menu .item-details input[type="text"], .nestable-menu .item-details select', event => {
event.preventDefault();
let current = $(event.currentTarget);
let parent = current.closest('li.dd-item');
let value = sanitizeHTML(current.val());
let name = sanitizeHTML(current.attr('name'));
let old = sanitizeHTML(current.attr('data-old'));
parent.attr('data-' + name, value);
parent.data(name, value);
parent.find('> .dd3-content .text[data-update="' + name + '"]').text(value);
if (value.trim() === '') {
parent.find('> .dd3-content .text[data-update="' + name + '"]').text(old);
}
that.setDataItem(that.$nestable.find('> ol.dd-list li.dd-item'));
});
// Add nodes
$(document).on('click', '.box-links-for-menu .btn-add-to-menu', event => {
event.preventDefault();
let current = $(event.currentTarget);
let parent = current.parents('.the-box');
let html = '';
if (parent.attr('id') === 'external_link') {
let data_type = 'custom-link';
let data_reference_id = 0;
let data_title = sanitizeHTML($('#node-title').val());
let data_url = sanitizeHTML($('#node-url').val());
let data_css_class = sanitizeHTML($('#node-css').val());
let data_font_icon = sanitizeHTML($('#node-icon').val());
let data_target = sanitizeHTML($('#target').find('option:selected').val());
let url_html = '
';
html += '
';
html += '';
html += '';
html += '
' + data_title + '';
html += '
' + data_type + '';
html += '
';
html += '
';
html += '
';
html += '';
html += '
';
html += url_html;
html += '
';
html += '
';
html += '
';
html += '
';
html += '
Remove';
html += '
Cancel';
html += '
';
html += '
';
html += '';
html += '';
parent.find('input[type="text"]').val('');
} else {
parent.find('.list-item li.active').each((index, el) => {
let find_in = $(el).find('> label');
let data_type = sanitizeHTML(find_in.attr('data-reference-type'));
let data_reference_id = sanitizeHTML(find_in.attr('data-reference-id'));
let data_title = sanitizeHTML(find_in.attr('data-title'));
html += '
';
html += '';
html += '';
html += '
' + data_title + '';
html += '
' + data_type + '';
html += '
';
html += '
';
html += '
';
html += '';
html += '
';
html += '
';
html += '
';
html += '
';
html += '
';
html += '
Remove';
html += '
Cancel';
html += '
';
html += '
';
html += '';
html += '';
$(el).find('input[type=checkbox]').prop('checked', false);
});
}
$('.nestable-menu > ol.dd-list').append(html.replace('