Vue.component('wpuf-integration', {
template: '#tmpl-wpuf-integration',
computed: {
integrations: function() {
return wpuf_form_builder.integrations;
},
hasIntegrations: function() {
return Object.keys(this.integrations).length;
},
store: function() {
return this.$store.state.integrations;
},
pro_link: function() {
return wpuf_form_builder.pro_link;
}
},
methods: {
getIntegration: function(id) {
return this.integrations[id];
},
getIntegrationSettings: function(id) {
// find settings in store, otherwise take from default integration settings
return this.store[id] || this.getIntegration(id).settings;
},
isActive: function(id) {
if ( !this.isAvailable(id) ) {
return false;
}
return this.getIntegrationSettings(id).enabled === true;
},
isAvailable: function(id) {
return ( this.integrations[id] && this.integrations[id].pro ) ? false : true;
},
toggleState: function(id, target) {
if ( ! this.isAvailable(id) ) {
this.alert_pro_feature( id );
return;
}
// toggle the enabled state
var settings = this.getIntegrationSettings(id);
settings.enabled = !this.isActive(id);
this.$store.commit('updateIntegration', {
index: id,
value: settings
});
$(target).toggleClass('checked');
},
alert_pro_feature: function (id) {
var title = this.getIntegration(id).title;
swal({
title: ' ' + title + '
' + this.i18n.is_a_pro_feature,
text: this.i18n.pro_feature_msg,
type: '',
showCancelButton: true,
cancelButtonText: this.i18n.close,
confirmButtonColor: '#46b450',
confirmButtonText: this.i18n.upgrade_to_pro
}).then(function (is_confirm) {
if (is_confirm) {
window.open(wpuf_form_builder.pro_link, '_blank');
}
}, function() {});
},
showHide: function(target) {
$(target).closest('.wpuf-integration').toggleClass('collapsed');
},
openModal: function(target){
$(target).parents('.wpuf-integration').find('.wf-modal').addClass('wf-modal-open');
},
hideModal: function(target){
$(target).parents('.wf-modal').removeClass('wf-modal-open');
},
save_form_builder: function(target){
$('.weforms-save-form-builder').trigger('click');
this.hideModal(target);
}
}
});