ui/app/components/modal-feedback/component.js

86 lines
2.5 KiB
JavaScript

import { scheduleOnce, later } from '@ember/runloop';
import { inject as service } from '@ember/service';
import Component from '@ember/component';
import C from 'ui/utils/constants';
import { loadScript } from 'ui/utils/load-script';
import ModalBase from 'shared/mixins/modal-base';
import layout from './template';
export default Component.extend(ModalBase, {
settings: service(),
prefs: service(),
access: service(),
layout,
classNames: ['span-8', 'offset-2', 'modal-telemetry'],
loading: true,
init() {
this._super(...arguments);
scheduleOnce('afterRender', this, 'setupForm', JSON.parse(this.get(`settings.${ C.SETTING.FEEDBACK_FORM }`) || '{}'));
},
actions: {
submit() {
let form = $('#feedback-form'); // eslint-disable-line
form.find('INPUT[type=submit]').click();
},
sent() {
this.set(`prefs.${ C.PREFS.FEEDBACK }`, 'sent');
this.send('cancel');
},
},
styleForm() {
var self = this;
let form = $('#feedback-form'); // eslint-disable-line
form.find('.field').not('.hs_sandbox_acknowledgement')
.addClass('col-md-6');
form.find('.field.hs_sandbox_acknowledgement').addClass('span-12');
form.find('INPUT[type=text],INPUT[type=email],SELECT').addClass('form-control');
form.find('LABEL').addClass('pt-10');
form.find('INPUT[type=submit]').addClass('hide');
form.find('UL').addClass('list-unstyled');
form.find('INPUT[type=checkbox]').addClass('mr-10');
form.find('.hs-form-booleancheckbox-display').css('font-weight', 'normal');
form.find('SELECT').on('change', () => {
self.styleForm();
});
},
setupForm(opt) {
const self = this;
loadScript('//js.hsforms.net/forms/v2.js').then(() => {
window['hbspt'].forms.create({
css: '',
portalId: opt.portalId, // '468859',
formId: opt.formId, // 'bfca2d1d-ed50-4ed7-a582-3f0440f236ca',
target: '#feedback-form',
errorClass: 'form-control',
onFormReady() {
self.styleForm();
$('INPUT[name=rancher_account_id]')[0].value = self.get('access.principal.id');// eslint-disable-line
$('INPUT[name=github_username]')[0].value = self.get('access.identity.login');// eslint-disable-line
self.set('loading', false);
},
onFormSubmit() {
self.styleForm();
later(() => {
self.send('sent');
}, 1000);
},
});
});
},
});