diff --git a/demos/app.js b/demos/app.js index 02c4a55..db6881e 100644 --- a/demos/app.js +++ b/demos/app.js @@ -26,6 +26,14 @@ app.get('/', (req, res) => { }); }); +app.get('/simple', (req, res) => { + res.render('demo-simple', { + title: 'Test App', + question: 'How was your visit today?', + type: 'radio-buttons' + }); +}); + function runPa11yTests () { const spawn = require('child_process').spawn; const pa11y = spawn('pa11y-ci'); diff --git a/demos/demo-old.html b/demos/demo-simple.html similarity index 92% rename from demos/demo-old.html rename to demos/demo-simple.html index 484c997..fee8848 100644 --- a/demos/demo-old.html +++ b/demos/demo-simple.html @@ -9,7 +9,7 @@

Demo of n-feedback

- {{> template }} + {{> demos/feedback-partial }}
diff --git a/index.js b/index.js index 6bd055b..74e393c 100644 --- a/index.js +++ b/index.js @@ -3,12 +3,11 @@ const surveyBuilder = require('./src/survey-builder'); const postResponse = require('./src/post-response'); const getAdditionalInfo = require('./src/get-additional-info'); const dictionary = require('./src/dictionary'); -require('formdata-polyfill'); function getSurveyData ( surveyId ){ - // const surveyDataURL = 'http://local.ft.com:5005/public/survey.json'; - // const surveyDataURL = `http://local.ft.com:3002/v1/survey/${surveyId}`; - const surveyDataURL = `https://www.ft.com/__feedback-api/v1/survey/${surveyId}`; + // const surveyDataURL = 'http://local.ft.com:5005/public/survey.json'; // for local development + // const surveyDataURL = `http://local.ft.com:3002/v1/survey/${surveyId}`; // for local development via npm linking + const surveyDataURL = `https://www.ft.com/__feedback-api/v1/survey/${surveyId}`; // production link return fetch(surveyDataURL, { headers: { 'Accept': 'application/json', @@ -121,12 +120,27 @@ function validate (block){ function generateResponse (overlay){ const context = overlay.content; const form = document.querySelector('.n-feedback__survey__wrapper-form', context); - const response = {}; - (new FormData(form)).forEach((val, key) => { - response[key] = val; + const data = {}; + + form.querySelectorAll('input,textarea').forEach((element) => { + if (element.type === 'radio') { + if (element.checked) { + data[element.name] = element.value; + } + } + + else if (element.type === 'checkbox') { + if (element.checked) { + data[element.name] = (data[element.name] || []).concat(element.value); + } + } + + else { + data[element.name] = element.value; + } }); - return response; + return data; } function toggleOverlay (overlay){ diff --git a/package.json b/package.json index 4f18655..510b8ec 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,6 @@ "webpack-cli": "^3.1.2" }, "dependencies": { - "formdata-polyfill": "^3.0.12", "handlebars": "^4.1.2" } }