diff --git a/.eslintrc b/.eslintrc index 07f66cd..b62e9e7 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,4 +1,15 @@ { - "extends": "jotform", - "parser": "babel-eslint" -} \ No newline at end of file + "root": true, + "extends": [ + "airbnb", + "prettier", + "prettier/babel", + "prettier/react", + "prettier/unicorn", + "adjunct" + ], + "plugins": [ + "@typescript-eslint", + "prettier" + ] +} diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..2ff8622 --- /dev/null +++ b/.prettierignore @@ -0,0 +1 @@ +package.json \ No newline at end of file diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..4bc0294 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,8 @@ +{ + "endOfLine": "crlf", + "semi": true, + "singleQuote": true, + "tabWidth": 2, + "trailingComma": "es5", + "printWidth": 100 +} diff --git a/lib/JotFormReact.js b/lib/JotFormReact.js deleted file mode 100644 index ed48e14..0000000 --- a/lib/JotFormReact.js +++ /dev/null @@ -1,120 +0,0 @@ -import React, { useEffect } from 'react'; -import PropTypes from 'prop-types'; - -const JotFormEmbed = ({ - formURL, - autoResize, - autoFocus, - heightOffset = 15, - initialHeight = 540, - onSubmit, - formID, - style = { }, - ...rest -}) => { - const iframeRef = React.useRef(); - const [componentStyles, setComponentStyles] = React.useState({ - height: initialHeight, - overflow: 'hidden', - border: 0, - width: '100%' - }); - - useEffect(() => { - const handleMessages = (content) => { - if (!content) { return; } - // Check if submission is completed. - if (typeof content.data === 'object' && content.data.action === 'submission-completed') { - onSubmit(); - return; - } - - // From now on we only handle style related messages - if (typeof content.data !== 'string') { return; } - const [method, value, targetForm] = content.data.split(':'); - // eslint-disable-next-line eqeqeq - if (formID && targetForm && targetForm != formID) { // If you want to use multiple form via embed you need to use formID - return; - } - - switch (true) { - case method === 'scrollIntoView' && autoFocus: - if (typeof iframeRef.current.scrollIntoView === 'function') { - iframeRef.current.scrollIntoView(); - } - break; - case method === 'setHeight' && autoResize: - setComponentStyles({ ...componentStyles, height: parseInt(value, 10) + heightOffset }); - break; - case method === 'setMinHeight' && autoResize: - setComponentStyles({ ...componentStyles, minHeight: parseInt(value, 10) + heightOffset }); - break; - case method === 'reloadPage': - try { - iframeRef.current.contentWindow.location.reload(); - } catch (e) { - console.log('failed to reload', e); - } - break; - default: - break; - } - }; - - if (window.addEventListener) { - window.addEventListener('message', handleMessages, true); // Capture - } else if (window.attachEvent) { - window.attachEvent('onmessage', handleMessages); - } - return () => { - if (window.removeEventListener) { - window.removeEventListener('message', handleMessages, true); - } - }; - }, []); - - return ( -