first commit
This commit is contained in:
211
vendor/wpcfto/metaboxes/assets/es6/metaboxes.js
vendored
Normal file
211
vendor/wpcfto/metaboxes/assets/es6/metaboxes.js
vendored
Normal file
@@ -0,0 +1,211 @@
|
||||
(function ($) {
|
||||
$(document).ready(function () {
|
||||
|
||||
$('[data-vue]').each(function () {
|
||||
|
||||
let $this = $(this);
|
||||
|
||||
let data_var = $this.attr('data-vue');
|
||||
let data_source = $this.attr('data-source');
|
||||
|
||||
new Vue({
|
||||
el: $(this)[0],
|
||||
data: function () {
|
||||
return {
|
||||
loading: false,
|
||||
data: '',
|
||||
settings_alert: {
|
||||
status: false,
|
||||
success: true
|
||||
},
|
||||
}
|
||||
},
|
||||
mounted: function () {
|
||||
this.getSettings();
|
||||
this.clearEmptyGroups();
|
||||
},
|
||||
methods: {
|
||||
initSubmenu: function () {
|
||||
Vue.nextTick()
|
||||
.then(function () {
|
||||
(function ($) {
|
||||
|
||||
/*Hide all fields in submenu*/
|
||||
var submenu_tab_fields = $('.wpcfto-tab.has-submenu-items [data-field], .wpcfto-tab.has-submenu-items .wpcfto_group_started');
|
||||
submenu_tab_fields.css({
|
||||
display: 'none'
|
||||
});
|
||||
|
||||
var $sub_menu = $('.wpcfto-submenus .active');
|
||||
var sub_menu_section = $sub_menu.attr('data-submenu');
|
||||
let $submenu_section = $('.' + sub_menu_section);
|
||||
|
||||
$submenu_section.removeAttr('style');
|
||||
|
||||
|
||||
submenu_tab_fields.parents('.wpcfto_group_started').css({
|
||||
display: 'none'
|
||||
});
|
||||
|
||||
$submenu_section.parents('.wpcfto_group_started').removeAttr('style');
|
||||
|
||||
})(jQuery);
|
||||
});
|
||||
},
|
||||
changeTabFromAnchor: function () {
|
||||
var _this = this;
|
||||
var hash = window.location.hash;
|
||||
var hashParts = hash.split('#');
|
||||
if (typeof hashParts[1] !== 'undefined') {
|
||||
Vue.nextTick(function () {
|
||||
_this.changeTab(hashParts[1]);
|
||||
});
|
||||
}
|
||||
},
|
||||
changeTab: function (tab) {
|
||||
let $tab = $('#' + tab);
|
||||
$tab.closest('.stm_metaboxes_grid__inner').find('.wpcfto-tab').removeClass('active');
|
||||
$tab.addClass('active');
|
||||
|
||||
let $section = $('div[data-section="' + tab + '"]');
|
||||
$tab.closest('.wpcfto-settings').find('.wpcfto-nav').removeClass('active');
|
||||
$tab.closest('.stm_metaboxes_grid__inner').find('.wpcfto-nav').removeClass('active');
|
||||
$section.closest('.wpcfto-nav').addClass('active');
|
||||
|
||||
history.pushState(null, null, '#' + tab);
|
||||
|
||||
/*if has submenu*/
|
||||
if ($section.closest('.wpcfto-nav').hasClass('has-submenu')) {
|
||||
let $submenu = $section.closest('.wpcfto-nav').find('.wpcfto-submenus [data-submenu]').eq(0);
|
||||
const urlParams = new URLSearchParams(window.location.search);
|
||||
const submenuParam = urlParams.get('submenu');
|
||||
|
||||
if (submenuParam) {
|
||||
const navSubmenu = $section.closest('.wpcfto-nav').find(`.wpcfto-submenus [data-submenu=${tab}_${submenuParam}]`);
|
||||
$submenu = navSubmenu !== undefined && navSubmenu.length > 0 ? navSubmenu : $submenu;
|
||||
}
|
||||
this.changeSubMenu($submenu.attr('data-submenu'));
|
||||
}
|
||||
|
||||
/*Scroll top*/
|
||||
$("html, body").animate(
|
||||
{
|
||||
scrollTop: $tab.closest('.stm_metaboxes_grid__inner').offset().top - 100
|
||||
},
|
||||
"fast");
|
||||
|
||||
},
|
||||
changeSubMenu(sub_menu) {
|
||||
let $submenu = $('[data-submenu="' + sub_menu + '"]');
|
||||
$('[data-submenu]').removeClass('active');
|
||||
$submenu.addClass('active');
|
||||
this.initSubmenu();
|
||||
},
|
||||
getSettings: function () {
|
||||
var _this = this;
|
||||
_this.loading = true;
|
||||
|
||||
this.$http.get(stm_wpcfto_ajaxurl + '?action=stm_wpcfto_get_settings&source=' + data_source + '&name=' + data_var + '&nonce=' + wpcfto_global_settings['nonce']).then(function (r) {
|
||||
_this.$set(_this, 'data', r.body);
|
||||
_this.loading = false;
|
||||
|
||||
this.changeTabFromAnchor();
|
||||
|
||||
this.initSubmenu();
|
||||
});
|
||||
|
||||
},
|
||||
saveSettings: function (id) {
|
||||
var vm = this;
|
||||
vm.loading = true;
|
||||
this.$http.post(stm_wpcfto_ajaxurl + '?action=wpcfto_save_settings&nonce=' + stm_wpcfto_nonces['wpcfto_save_settings'] + '&name=' + id, JSON.stringify(vm.data)).then(function (response) {
|
||||
vm.loading = false;
|
||||
vm.settings_alert = {
|
||||
success: response.status === 200,
|
||||
status: true
|
||||
};
|
||||
|
||||
setTimeout(() => {
|
||||
vm.settings_alert.status = false;
|
||||
}, 1500)
|
||||
|
||||
// if(response.body?.reload === true) location.reload();
|
||||
location.reload();
|
||||
});
|
||||
},
|
||||
initOpen(field) {
|
||||
if (typeof field.opened === 'undefined') {
|
||||
this.$set(field, 'opened', !!(field.value));
|
||||
}
|
||||
},
|
||||
openField(field) {
|
||||
|
||||
var opened = !field.opened;
|
||||
|
||||
|
||||
this.$set(field, 'opened', opened);
|
||||
|
||||
if (!field.opened) {
|
||||
this.$set(field, 'value', '');
|
||||
}
|
||||
},
|
||||
enableAddon($event, option) {
|
||||
var _this = this;
|
||||
Vue.nextTick(function () {
|
||||
(function ($) {
|
||||
|
||||
var currentItem = $($event.target);
|
||||
|
||||
currentItem.addClass('loading');
|
||||
|
||||
var url = stm_wpcfto_ajaxurl + '?action=stm_lms_enable_addon&addon=' + option;
|
||||
|
||||
_this.$http.get(url).then(function (response) {
|
||||
currentItem.removeClass('loading');
|
||||
var $container = $('.stm_lms_addon_group_settings_' + option);
|
||||
$container.each(function () {
|
||||
var $this = $(this);
|
||||
$this.removeClass('is_pro is_pro_in_addon');
|
||||
$this.find('.field_overlay').remove();
|
||||
$this.find('.pro-notice').remove();
|
||||
});
|
||||
});
|
||||
|
||||
})(jQuery);
|
||||
});
|
||||
},
|
||||
clearEmptyGroups() {
|
||||
Vue.nextTick()
|
||||
.then(function () {
|
||||
(function ($) {
|
||||
$('.wpcfto_group_started').each(function () {
|
||||
let $group = $(this);
|
||||
let $childs = $group.find('.wpcfto-box-child');
|
||||
if (!$childs.length) {
|
||||
$group.addClass('no-childs-visible');
|
||||
} else {
|
||||
$group.removeClass('no-childs-visible');
|
||||
}
|
||||
})
|
||||
})(jQuery);
|
||||
});
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
data: {
|
||||
deep: true,
|
||||
handler: function () {
|
||||
let _this = this;
|
||||
setTimeout(function () {
|
||||
_this.clearEmptyGroups();
|
||||
_this.initSubmenu();
|
||||
}, 100);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
})(jQuery);
|
||||
Reference in New Issue
Block a user