vue-giveworks-form
Version:
This plugin provides Vue.js component for the open [http://giveworks.net](Giveworks Platform).
262 lines (208 loc) • 8.89 kB
JavaScript
((typeof self !== 'undefined' ? self : this)["webpackJsonpGiveworksForm"] = (typeof self !== 'undefined' ? self : this)["webpackJsonpGiveworksForm"] || []).push([[7],{
/***/ "4053":
/***/ (function(module, __webpack_exports__, __webpack_require__) {
;
// ESM COMPAT FLAG
__webpack_require__.r(__webpack_exports__);
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"7ef6bfa2-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/Components/Types/Petition.vue?vue&type=template&id=795f8de9&
var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('contact-info-fieldset',{attrs:{"legends":false,"form":_vm.form,"errors":_vm.errors,"page":_vm.page}}),(_vm.page.options.add_comment)?_c('textarea-field',{directives:[{name:"autogrow",rawName:"v-autogrow"}],attrs:{"id":"comment","label":_vm.commentMessage},model:{value:(_vm.form.comment),callback:function ($$v) {_vm.$set(_vm.form, "comment", $$v)},expression:"form.comment"}}):_vm._e(),_c('btn-activity',{attrs:{"size":"lg","type":"submit","orientation":"right","block":true,"activity":_vm.submitting,"label":_vm.buttonLabel || _vm.page.site.config.giveworks.button.petition}}),(_vm.page.options.add_optin)?_c('checkbox-field',{attrs:{"label":_vm.optinMessage,"value":"1","custom":""}}):_vm._e()],1)}
var staticRenderFns = []
// CONCATENATED MODULE: ./src/Components/Types/Petition.vue?vue&type=template&id=795f8de9&
// EXTERNAL MODULE: ./src/Mixins/PageType.js
var PageType = __webpack_require__("b791");
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/Components/Types/Petition.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ var Petitionvue_type_script_lang_js_ = ({
name: 'PageTypePetition',
components: {
CheckboxField: () => Promise.all(/* import() | vue-interface */[__webpack_require__.e(0), __webpack_require__.e(1), __webpack_require__.e(12)]).then(__webpack_require__.bind(null, "e067")),
BtnActivity: () => Promise.all(/* import() | vue-interface */[__webpack_require__.e(0), __webpack_require__.e(1), __webpack_require__.e(12)]).then(__webpack_require__.bind(null, "9863")),
TextareaField: () => Promise.all(/* import() | vue-interface */[__webpack_require__.e(0), __webpack_require__.e(1), __webpack_require__.e(12)]).then(__webpack_require__.bind(null, "31e0")),
ContactInfoFieldset: () => __webpack_require__.e(/* import() | contact-info-fieldset */ 3).then(__webpack_require__.bind(null, "e3c2"))
},
extends: PageType["a" /* default */]
});
// CONCATENATED MODULE: ./src/Components/Types/Petition.vue?vue&type=script&lang=js&
/* harmony default export */ var Types_Petitionvue_type_script_lang_js_ = (Petitionvue_type_script_lang_js_);
// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
var componentNormalizer = __webpack_require__("2877");
// CONCATENATED MODULE: ./src/Components/Types/Petition.vue
/* normalize component */
var component = Object(componentNormalizer["a" /* default */])(
Types_Petitionvue_type_script_lang_js_,
render,
staticRenderFns,
false,
null,
null,
null
)
/* harmony default export */ var Petition = __webpack_exports__["default"] = (component.exports);
/***/ }),
/***/ "b236":
/***/ (function(module, __webpack_exports__, __webpack_require__) {
;
/* harmony import */ var vue_interface_src_Helpers_Functions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("ca14");
const EVENTS = ['submit', 'redirect', 'submit-enable', 'submit-disable', 'submit-show', 'submit-hide'];
/* harmony default export */ __webpack_exports__["a"] = ({
directives: {
bindEvents: {
bind(el, binding, vnode) {
const context = vnode.context;
const subject = vnode.child || vnode.context;
for (const i in EVENTS) {
subject.$on(EVENTS[i], (...args) => {
const method = Object(vue_interface_src_Helpers_Functions__WEBPACK_IMPORTED_MODULE_0__[/* camelCase */ "a"])('on-' + EVENTS[i]);
if (subject !== context) {
context.$emit(EVENTS[i], ...args);
}
if (context[method]) {
context[method](...args);
}
});
}
}
}
}
});
/***/ }),
/***/ "b791":
/***/ (function(module, __webpack_exports__, __webpack_require__) {
;
/* harmony import */ var _Models_Page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("850f");
/* harmony import */ var _FormEvents__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("b236");
/* harmony import */ var vue_interface_src_Helpers_Functions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("ca14");
/* harmony default export */ __webpack_exports__["a"] = ({
props: {
source: [String, Number],
trackingId: [String, Number],
redirect: {
type: [Boolean, String],
default: undefined
},
httpOptions: Object,
page: {
type: Object,
required: true
}
},
mixins: [_FormEvents__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"]],
computed: {
buttonLabel() {
return this.page.options.button;
},
shouldShowEmployment() {
return this.page.special === 'donation' && (this.page.site.type === 'PAC' || this.page.site.type === 'Campaign');
}
},
methods: {
submitButton() {
return this.$refs.submit ? this.$refs.submit.$el : this.$el.querySelector('[type=submit]');
},
hideSubmitButton() {
this.submitButton().style.display = 'none';
},
showSubmitButton() {
this.submitButton().style.display = 'block';
},
disableSubmitButton() {
this.submitButton().disabled = true;
},
enableSubmitButton() {
this.submitButton().disabled = false;
},
handleRedirect(url, sessionid) {
setTimeout(() => {
if (!url && this.page.next_page) {
url = this.page.next_page.url.replace(/\/$/, '') + (this.form.source ? '/' + this.form.source : '');
}
if (url) {
window.location = url + (sessionid && (url.match(/\?/) ? '&' : '?') + `sessionid=${sessionid}`);
}
});
},
submit(success, failed) {
if (this.$el.querySelector(':focus')) {
this.$el.querySelector(':focus').blur();
}
return new Promise((resolve, reject) => {
if (!this.submitting) {
this.errors = {};
this.submitting = true;
this.$emit('submit');
this.model.save(this.form, Object.assign({
method: 'post'
}, this.httpOptions)).then(response => {
this.submitting = false;
this.$emit('submit-complete', true, response);
this.$emit('submit-success', response);
if (Object(vue_interface_src_Helpers_Functions__WEBPACK_IMPORTED_MODULE_2__[/* isFunction */ "i"])(success)) {
success(response);
}
resolve(response);
}, response => {
this.submitting = false;
this.errors = response.data.errors;
this.$emit('submit-complete', false, response);
this.$emit('submit-failed', response);
if (Object(vue_interface_src_Helpers_Functions__WEBPACK_IMPORTED_MODULE_2__[/* isFunction */ "i"])(failed)) {
failed(response);
}
reject(response);
});
} else {
reject(new Error('The form is already submitting'));
}
});
},
onSubmitSuccess(page) {
const redirect = this.redirect || this.page.external_reply || this.page.next_page && this.page.next_page.url;
if (this.redirect !== false && redirect) {
this.handleRedirect(redirect, page.get('sessionid'));
}
},
onSubmitError(e) {
throw e;
}
},
mounted() {
this.loaded = true;
this.$nextTick(() => this.$emit('init'));
},
data() {
const recurring = this.page.site.recurring ? this.page.options.recurring_only ? 1 : 0 : 0;
return {
form: {
recurring,
source: this.source,
tracking_id: this.trackingId
},
errors: {},
loaded: false,
submitting: false,
model: new _Models_Page__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"]({
id: this.page.id
})
};
}
});
/***/ })
}]);
//# sourceMappingURL=GiveworksForm.common.petition-type.js.map