From 520471c0f4d8a1511637e2c0cdb0de3e9218b4d9 Mon Sep 17 00:00:00 2001 From: TBS093A Date: Wed, 17 Feb 2021 20:05:48 +0100 Subject: [PATCH] Redux / React -> fixes & upgrades --- src/components/forms/formGenerator.js | 158 ++++++++++++++++++ .../forms/model_crud/model_get_all.js | 0 .../model_crud/model_get_one_and_download.js | 0 .../forms/model_crud/model_upload.js | 0 .../forms/render_crud/render_get_all.js | 0 .../render_get_one_and_download.js | 0 src/components/forms/user_auth/user_login.js | 0 .../forms/user_auth/user_register.js | 0 src/components/forms/user_crud/user_update.js | 0 src/pages/func_group/rootUtils.js | 16 +- 10 files changed, 170 insertions(+), 4 deletions(-) create mode 100644 src/components/forms/formGenerator.js create mode 100644 src/components/forms/model_crud/model_get_all.js create mode 100644 src/components/forms/model_crud/model_get_one_and_download.js create mode 100644 src/components/forms/model_crud/model_upload.js create mode 100644 src/components/forms/render_crud/render_get_all.js create mode 100644 src/components/forms/render_crud/render_get_one_and_download.js create mode 100644 src/components/forms/user_auth/user_login.js create mode 100644 src/components/forms/user_auth/user_register.js create mode 100644 src/components/forms/user_crud/user_update.js diff --git a/src/components/forms/formGenerator.js b/src/components/forms/formGenerator.js new file mode 100644 index 0000000..efba6d5 --- /dev/null +++ b/src/components/forms/formGenerator.js @@ -0,0 +1,158 @@ +import React from 'react' + +/** + * + * @param { [ {}, {}, ...{} ] } inputList - list of dicts with info about input + * @param { [] } refList - react ref objects list for handler validation + * @param { } action - fetch method + */ +export const FormGenerator = ({ + inputList, refList, + action +}) => { + + const handler = async (event) => { + event.preventDefault() + for ( let i = 0; i < refList.length; i++ ) { + if ( + refList[i].current.value === '' + && inputList[0].action !== 'Update' + || i === 0 && refList.length !== 1 + ) { + refList[i].current.focus() + } else if ( i === refList.length - 1 ) { + await action( refList ) + } + } + } + + let info + + return ( +
handler( event ) }> + { + inputList.map( (input, key) => { + + if ( input.type === 'info' ) { + info = input + } else if ( input.type === 'text' ) { + return ( + + ) + } else if ( input.type === 'file' ) { + return ( + + ) + } + }) + } +