{"version":3,"file":"2318.e3fca18e.js","mappings":"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","sources":["webpack://projectInit/./node_modules/@elements/ajax-form/index.js"],"sourcesContent":["// import {isParsleyForm, isValid} from \"@elements/parsley-bootstrap-validation\";\nimport {getPrefixedDataSet} from \"@elements/data-set-utils\";\nimport 'url-polyfill';\nimport 'url-search-params-polyfill'; // Edge Polyfill\nimport fetch from '@elements/fetch'; // IE10 Polyfill\nimport {debounce} from \"debounce\";\nimport asyncAppend from '@elements/async-append';\nimport formDataEntries from 'form-data-entries';\nimport {onFind} from \"@elements/init-modules-in-scope\";\nimport {findAllIn, findIn, on, is, off, trigger, triggerWith, setAttribute, removeAttribute, closest, hasClass} from \"@elements/dom-utils\";\n\nconst defaultSelectors = {\n base: '.js-ajax-form',\n result: '.js-ajax-form__result',\n loading: '.js-ajax-form__loading',\n notifications: '.js-ajax-form__notifications',\n form: '.js-ajax-form__form',\n additionalForm: '.js-ajax-form__additional-form',\n errorArea: '.js-ajax-form__error-area',\n retry: '.js-ajax-form__retry',\n link: '.js-ajax-form__link',\n reset: '.js-ajax-form__reset'\n};\n\nconst defaultOptions = {\n submitOnChange: false,\n addUrlParams: false,\n submitOnReset: false,\n fetchHeaders: {},\n allowScriptTags: false,\n validator: () => true,\n onSubmit: () => {}\n};\n\nexport function init(options = defaultOptions, selectors = defaultSelectors) {\n onFind(selectors.base, function (baseElement) {\n createAjaxForm(\n baseElement,\n {...defaultOptions, ...options},\n {...defaultSelectors, ...selectors}\n );\n });\n}\n\nexport function createAjaxForm(baseElement, options = defaultOptions, selectors = defaultSelectors) {\n let pendingRequest = null;\n let form = findIn(selectors.form, baseElement);\n let results = findAllIn(selectors.result, baseElement);\n let loadingElements = findAllIn(selectors.loading, baseElement);\n let notifications = findAllIn(selectors.notifications, baseElement);\n let errorAreas = findAllIn(selectors.errorArea, baseElement);\n\n options = {\n ...defaultOptions,\n ...options,\n ...transformDataSetOptions(getPrefixedDataSet('ajax-form', baseElement))\n };\n\n // form\n onFind(selectors.form, function (form) {\n const submitHandler = evt => {\n evt.preventDefault();\n evt.stopImmediatePropagation(); // otherwise .on('submit.ajax-form') would be called twice\n submitForm(form, evt);\n };\n\n const changeHandler = debounce(() => {\n submitForm(form);\n }, 200);\n\n on('submit', submitHandler, form);\n\n if (options.submitOnChange) {\n on('change', changeHandler, form);\n }\n\n return () => {\n off('submit', submitHandler, form);\n off('change', changeHandler, form);\n }\n }, baseElement);\n\n // additional forms\n onFind(selectors.additionalForm, function (additionalForm) {\n const submitHandler = evt => {\n evt.preventDefault();\n submitForm(additionalForm, evt);\n };\n\n const changeHandler = debounce(function () {\n submitForm(additionalForm);\n }, 200);\n\n on('submit', submitHandler, additionalForm);\n\n if (options.submitOnChange || additionalForm.dataset.ajaxFormSubmitOnChange) {\n on('change', changeHandler, additionalForm)\n }\n\n return () => {\n off('submit', submitHandler, additionalForm);\n off('change', changeHandler, additionalForm);\n }\n }, baseElement);\n\n // retry\n findAllIn(selectors.retry, baseElement)\n .map(on('click', (evt) => {\n evt.preventDefault();\n\n if (lastLoadParams) {\n load(...lastLoadParams);\n }\n }));\n\n // links\n onFind(selectors.link, (link) => {\n function linkClickHandler(evt) {\n evt.preventDefault();\n\n let closestForm = closest('form', link);\n\n let href = link.getAttribute('href') || link.dataset.href;\n let action = closestForm ? getActionByForm(closestForm) : form.dataset.action || form.getAttribute('action');\n let params = new URL(href, location.origin).searchParams;\n\n pendingRequest = load(action, 'GET', params, href);\n\n pendingRequest\n .then(() => pendingRequest = null)\n .catch((error) => {\n if ((!error || error.name !== 'AbortError')) {\n pendingRequest = null;\n }\n });\n }\n\n on('click', linkClickHandler, link);\n\n return () => {\n off('click', linkClickHandler, link);\n }\n }, baseElement);\n\n\n // Reset buttons\n onFind(selectors.reset, (resetButton) => {\n function resetClickHandler(evt) {\n if(resetButton.tagName !== 'INPUT' && resetButton.type !== 'submit'){\n evt.preventDefault()\n }\n\n let inputs = findAllIn('input, select', form),\n target = evt.target;\n\n if(!hasClass(selectors.reset, target)){\n target = closest(selectors.reset,target);\n }\n\n let resetName = target.dataset.resetName,\n resetValue = target.dataset.resetValue,\n inputsSelects = [];\n\n if (resetName) {\n let selectorName = resetName\n .split(',')\n .map(name => `[name=\"${name.trim()}\"]`)\n .join(', ');\n\n inputs = inputs.filter(is(selectorName));\n }\n\n if (resetValue) {\n let selectorValue = resetValue.toString()\n .split(',')\n .map(value => `[value=\"${value.trim()}\"]`)\n .join(', ');\n\n inputs.map(function(input) {\n if(input.nodeName === 'SELECT') {\n inputsSelects.push(input);\n }\n });\n\n inputs = inputs.filter(is(selectorValue));\n }\n\n inputs = [...inputs, ...inputsSelects];\n\n inputs.map(function(input) {\n if(input.type !== 'radio' && input.type !== 'checkbox') {\n input.value = '';\n }\n });\n inputs.filter(is('[type=\"radio\"], [type=\"checkbox\"]')).map(input => input.checked = false);\n inputs.map(trigger('change'));\n triggerWith('reset.ajax-form', inputs, baseElement);\n\n if (options.submitOnReset) {\n submitForm(form);\n }\n\n }\n\n on('click', resetClickHandler, resetButton);\n\n return () => {\n off('click', resetClickHandler, resetButton);\n }\n }, baseElement);\n\n\n let lastLoadParams = null; // for retry\n function load(url, method, params, historyUrl) {\n method = method || \"GET\";\n lastLoadParams = [url, method, params, historyUrl];\n\n if (options.addUrlParams) {\n history.replaceState(history.state, document.title, historyUrl || url);\n }\n\n // add base url to params (path)\n params.append('baseUrl', location.pathname);\n\n if (method.toUpperCase() === \"GET\") {\n params.append('ajax', 1);\n // Add ajax param to differentiate between and ajax requests and page request.\n // Otherwise Chrome caches these results as normal pages and returns them from cache if the back button is pressed\n url = addSearchParamsToUrl(url, params);\n }\n\n let request = fetch(url, {\n method: method,\n headers: {\n 'pragma': 'no-cache',\n 'cache-control': 'no-cache',\n ...options.fetchHeaders\n },\n ...(method.toUpperCase() !== \"GET\" ? {\n body: new URLSearchParams(params)\n } : {})\n });\n\n triggerWith('fetch.ajax-form', request, baseElement);\n\n\n let targetsByResultId = {};\n results.forEach((element) => {\n let resultId = element.dataset.resultId || 'default';\n if (targetsByResultId[resultId]) {\n targetsByResultId[resultId] = [...targetsByResultId[resultId], element];\n } else {\n targetsByResultId[resultId] = [element];\n }\n });\n\n asyncAppend(\n {\n target: targetsByResultId,\n loading: loadingElements,\n notifications: notifications,\n options: {\n allowScriptTags: options.allowScriptTags\n }\n },\n request\n )\n .then((result) => {\n let content = result.html || result.content;\n if (content && result.success !== false) {\n trigger('success.ajax-form', baseElement);\n errorAreas.map(setAttribute('hidden', 'hidden'));\n\n let newForm = findIn(selectors.form, baseElement);\n if (newForm) {\n form = newForm;\n }\n\n\n } else {\n trigger('failed.ajax-form', baseElement);\n errorAreas.map(removeAttribute('hidden'));\n }\n\n triggerWith('fetched.ajax-form', result, baseElement);\n })\n .catch(() => {\n });\n\n // Unpack json response body if the promise was created via fetch\n // Otherwise the HTTP-Server error is not caught.\n // The fetch promise itself resolves (even with a http error)\n request.then(response => (response\n && response.json\n && typeof response.json === 'function'\n && response.clone\n && typeof response.clone === 'function')\n ? response.clone().json()\n : response\n ).catch((error, requestState) => {\n if (!error || error.name !== 'AbortError') {\n console.error(error);\n trigger('failed.ajax-form', baseElement);\n errorAreas.map(removeAttribute('hidden'));\n }\n });\n\n return request;\n }\n\n function submitForm(form, evt) {\n let submitBtn;\n let action;\n\n if(evt !== undefined && evt.submitter){\n submitBtn = evt.submitter;\n if(submitBtn.getAttribute('formaction')){\n action = submitBtn.getAttribute('formaction');\n }\n }else{\n action = getActionByForm(form);\n }\n \n return submit(\n action,\n form.dataset.method || form.getAttribute('method'),\n submitBtn\n )\n }\n\n function submit(action, method, submitBtn) {\n action = action || getActionByForm(form);\n method = method || form.dataset.method || form.getAttribute('method');\n\n // create promise to resolve/reject in right order (important for loading-indicator with multiple submissions)\n let readyToSubmit = new Promise(function (resolve, reject) {\n if (pendingRequest && pendingRequest.abort) {\n pendingRequest.abort();\n pendingRequest.catch(resolve);\n pendingRequest = null;\n } else {\n resolve();\n }\n });\n\n readyToSubmit.then(function () {\n if (typeof options.validator === \"function\" && !options.validator({\n baseElement,\n form\n })) {\n return;\n }\n\n trigger('submit.ajax-form', baseElement);\n\n action = action || getActionByForm(form);\n method = method || form.dataset.method || form.getAttribute('method');\n let formDataEntries = getFormDataEntries();\n\n if(submitBtn !== undefined && submitBtn.name.length > 0 && submitBtn.value.length > 0){\n formDataEntries.push([submitBtn.name, submitBtn.value]);\n }\n\n let params = new URLSearchParams(formDataEntries);\n\n options.onSubmit({\n $element: baseElement,\n options,\n formData: getFormData()\n });\n\n let url = new URL(location.href);\n url.searchParams.delete('page');\n url = addSearchParamsToUrl(url, params);\n\n pendingRequest = load(action, method, params, url);\n\n pendingRequest\n .then(() => pendingRequest = null)\n .catch((error) => {\n if (!error || error.name !== 'AbortError') {\n pendingRequest = null;\n }\n });\n });\n }\n\n function getFormData() {\n return createFormData([form, ...findAllIn(selectors.additionalForm, baseElement)]);\n }\n\n function getFormDataEntries() {\n return createFormDataEntries([form, ...findAllIn(selectors.additionalForm, baseElement)]);\n }\n\n let api = {\n submit,\n getFormData,\n getFormDataEntries // todo add to doku\n };\n\n baseElement.ajaxForm = api;\n\n return api;\n}\n\nfunction addSearchParamsToUrl(url, searchParams) {\n url = new URL(url, location.origin);\n\n let searchParamsArray = Array.from(searchParams);\n searchParamsArray.forEach(([name]) => url.searchParams.delete(name));\n searchParamsArray.forEach(([name, value]) => url.searchParams.append(name, value));\n\n return url;\n}\n\nfunction createFormData(forms) {\n let formData = new FormData();\n forms.map(form => {\n for (var pair of formDataEntries(form)) {\n formData.append(...pair);\n }\n });\n\n return formData;\n}\n\nfunction createFormDataEntries(forms) {\n let formDataArray = [];\n\n forms.map(form => {\n // unchecked checkboxes and radios needs to be added manually to formDataArray\n let selectors = findAllIn('input[type=\"radio\"], input[type=\"checkbox\"]', form);\n let selectorNames = [];\n\n // selects needs to be added manually to formDataArray\n let selects = form.getElementsByTagName(\"SELECT\");\n\n selectors = [...selectors, ...selects];\n\n selectors.map(function(selector) {\n selectorNames.push(selector.name);\n });\n\n for (var pair of formDataEntries(form)) {\n formDataArray.push(pair);\n }\n\n let existingNames = formDataArray.map(entry => entry[0]);\n selectorNames = [...new Set(selectorNames)];\n\n selectorNames.forEach(function (name) {\n let newEntry = [name, \"\"];\n if(!existingNames.includes(name)) {\n formDataArray.push(newEntry);\n } else {\n formDataArray.filter(item => item !== newEntry);\n }\n });\n });\n\n return formDataArray;\n}\n\nfunction transformDataSetOptions(options = {}) {\n let transformedOptions = {...options};\n\n if (transformedOptions.fetchHeaders) {\n try {\n transformedOptions.fetchHeaders = JSON.parse(transformedOptions.fetchHeaders)\n } catch (e) {\n transformedOptions.fetchHeaders = {};\n }\n }\n\n if (transformedOptions.allowScriptTags) {\n transformedOptions.allowScriptTags = !!(transformedOptions.allowScriptTags === \"true\" || transformedOptions.allowScriptTags === true)\n }\n\n return transformedOptions;\n}\n\nfunction getActionByForm(form) {\n return form.dataset.action || form.getAttribute('action') || location.pathname\n}\n"],"names":["defaultSelectors","base","result","loading","notifications","form","additionalForm","errorArea","retry","link","reset","defaultOptions","submitOnChange","addUrlParams","submitOnReset","fetchHeaders","allowScriptTags","validator","onSubmit","init","options","arguments","length","undefined","selectors","onFind","baseElement","createAjaxForm","_objectSpread","pendingRequest","findIn","results","findAllIn","loadingElements","errorAreas","transformedOptions","JSON","parse","e","transformDataSetOptions","getPrefixedDataSet","submitHandler","evt","preventDefault","stopImmediatePropagation","submitForm","changeHandler","debounce","on","off","dataset","ajaxFormSubmitOnChange","map","lastLoadParams","load","apply","_toConsumableArray","linkClickHandler","closestForm","closest","href","getAttribute","action","getActionByForm","params","URL","location","origin","searchParams","then","error","name","resetButton","resetClickHandler","tagName","type","inputs","target","hasClass","resetName","resetValue","inputsSelects","selectorName","split","concat","trim","join","filter","is","selectorValue","toString","value","input","nodeName","push","checked","trigger","triggerWith","url","method","historyUrl","history","replaceState","state","document","title","append","pathname","toUpperCase","addSearchParamsToUrl","request","fetch","headers","body","URLSearchParams","targetsByResultId","forEach","element","resultId","asyncAppend","html","content","success","setAttribute","newForm","removeAttribute","response","json","clone","requestState","console","submitBtn","submitter","submit","Promise","resolve","reject","abort","formDataEntries","getFormDataEntries","$element","formData","getFormData","forms","FormData","_step","_iterator","_createForOfIteratorHelper","s","n","done","pair","err","f","formDataArray","selectorNames","selects","getElementsByTagName","selector","_step2","_iterator2","existingNames","entry","Set","newEntry","includes","item","api","ajaxForm","searchParamsArray","Array","from","_ref","_slicedToArray","_ref3","_ref4"],"sourceRoot":""}