From b955af0b86160a7648f0d533253d666507be201d Mon Sep 17 00:00:00 2001 From: "aman.singh" Date: Sat, 3 Dec 2022 18:10:48 +0530 Subject: [PATCH] added libs --- RN-UI-LIB | 2 +- package.json | 5 + .../form/QuestionRenderingEngine.tsx | 16 +-- .../form/components/ImageUpload.tsx | 20 ++-- src/components/form/components/Rating.tsx | 64 +++++++++-- src/components/form/components/TextArea.tsx | 67 +++++++++-- src/data/templateData.json | 23 +++- yarn.lock | 106 ++++++++++++++++++ 8 files changed, 262 insertions(+), 41 deletions(-) diff --git a/RN-UI-LIB b/RN-UI-LIB index f68b2551..4f6b681f 160000 --- a/RN-UI-LIB +++ b/RN-UI-LIB @@ -1 +1 @@ -Subproject commit f68b255141d97ee7e59b4b65736576399253abb4 +Subproject commit 4f6b681f2dd445a90654bd410bc204f5bf0b8171 diff --git a/package.json b/package.json index e372c72d..c78cb211 100644 --- a/package.json +++ b/package.json @@ -21,8 +21,13 @@ "react": "18.1.0", "react-hook-form": "7.40.0", "react-native": "0.70.6", + "react-native-image-picker": "4.10.2", + "react-native-pager-view": "6.1.2", "react-native-safe-area-context": "^4.4.1", "react-native-screens": "^3.18.2", + "react-native-svg": "13.6.0", + "react-native-tab-view": "3.3.2", + "react-native-toast-message": "2.1.5", "react-redux": "8.0.5", "redux": "4.2.0", "redux-persist": "6.0.0" diff --git a/src/components/form/QuestionRenderingEngine.tsx b/src/components/form/QuestionRenderingEngine.tsx index 7eaddec3..d16b34fa 100644 --- a/src/components/form/QuestionRenderingEngine.tsx +++ b/src/components/form/QuestionRenderingEngine.tsx @@ -1,12 +1,12 @@ -import {StyleSheet, Text, View} from 'react-native'; import React from 'react'; -import TextInput from './components/TextInput'; -import RadioButton from './components/RadioButton'; -import TextArea from './components/TextArea'; -import ImageUpload from './components/ImageUpload'; +import {Control} from 'react-hook-form'; +import {View} from 'react-native'; import Checkbox from './components/Checkbox'; +import ImageUpload from './components/ImageUpload'; +import RadioButton from './components/RadioButton'; import Rating from './components/Rating'; -import { Control } from 'react-hook-form'; +import TextArea from './components/TextArea'; +import TextInput from './components/TextInput'; const Component = { TextInput: TextInput, @@ -30,6 +30,8 @@ interface IQuestionRenderingEngine { } const QuestionRenderingEngine: React.FC = props => { + // todo write proper schema + // @ts-ignore const Comp = Component[props.questionType]; if (!Comp) { return null; @@ -42,5 +44,3 @@ const QuestionRenderingEngine: React.FC = props => { }; export default QuestionRenderingEngine; - -const styles = StyleSheet.create({}); diff --git a/src/components/form/components/ImageUpload.tsx b/src/components/form/components/ImageUpload.tsx index 0c92a1fd..c1f8fdfc 100644 --- a/src/components/form/components/ImageUpload.tsx +++ b/src/components/form/components/ImageUpload.tsx @@ -1,14 +1,14 @@ -import { StyleSheet, Text, View } from 'react-native' -import React from 'react' +import {StyleSheet, Text, View} from 'react-native'; +import React from 'react'; const ImageUpload = () => { - return ( - - ImageUpload - - ) -} + return ( + + ImageUpload + + ); +}; -export default ImageUpload +export default ImageUpload; -const styles = StyleSheet.create({}) \ No newline at end of file +const styles = StyleSheet.create({}); diff --git a/src/components/form/components/Rating.tsx b/src/components/form/components/Rating.tsx index 9a8973c3..8d977006 100644 --- a/src/components/form/components/Rating.tsx +++ b/src/components/form/components/Rating.tsx @@ -1,14 +1,56 @@ -import { StyleSheet, Text, View } from 'react-native' -import React from 'react' - -const Rating = () => { - return ( - - Rating - - ) +import {StyleSheet, Text, View} from 'react-native'; +import React from 'react'; +import {Control, Controller} from 'react-hook-form'; +import {GenericStyles} from '../../../../RN-UI-LIB/src/styles'; +import StarRating from '../../../../RN-UI-LIB/src/components/star_rating/StarRating'; +import template from '../../../data/templateData.json'; +interface IRating { + questionType: string; + questionId: string; + widgetId: string; + journeyId: string; + caseId: string; + sectionId: string; + control: Control; + error: any; } -export default Rating +const Rating: React.FC = props => { + const {questionId, error, sectionId} = props; -const styles = StyleSheet.create({}) \ No newline at end of file + const question = template.questions[questionId]; + if (!question) { + return null; + } + return ( + + + {question.text}{' '} + {question.type === 'mandatory' && ( + * + )} + + ( + + )} + name={`${props.sectionId}.${questionId}`} + /> + {error?.[sectionId]?.[questionId] ? ( + This is mendatory field + ) : null} + + ); +}; + +export default Rating; + +const styles = StyleSheet.create({}); diff --git a/src/components/form/components/TextArea.tsx b/src/components/form/components/TextArea.tsx index 95c4e0c3..5b2843a9 100644 --- a/src/components/form/components/TextArea.tsx +++ b/src/components/form/components/TextArea.tsx @@ -1,14 +1,61 @@ -import { StyleSheet, Text, View } from 'react-native' -import React from 'react' +import {StyleSheet, View} from 'react-native'; +import React from 'react'; +import {Control, Controller} from 'react-hook-form'; -const TextArea = () => { - return ( - - TextArea - - ) +import template from '../../../data/templateData.json'; +import RNTextArea from '../../../../RN-UI-LIB/src/components/TextArea'; +import Text from '../../../../RN-UI-LIB/src/components/Text'; +import {GenericStyles} from '../../../../RN-UI-LIB/src/styles'; + +interface ITextArea { + questionType: string; + questionId: string; + widgetId: string; + journeyId: string; + caseId: string; + sectionId: string; + control: Control; + error: any; } -export default TextArea +const TextArea: React.FC = props => { + const {questionId, error, sectionId} = props; -const styles = StyleSheet.create({}) \ No newline at end of file + const question = template.questions[questionId]; + if (!question) { + return null; + } + return ( + + + {question.text}{' '} + {question.type === 'mandatory' && ( + * + )} + + ( + + )} + name={`${props.sectionId}.${questionId}`} + /> + {error?.[sectionId]?.[questionId] ? ( + This is mendatory field + ) : null} + + ); +}; + +export default TextArea; + +const styles = StyleSheet.create({}); diff --git a/src/data/templateData.json b/src/data/templateData.json index 94a39de0..bdb1c7c4 100644 --- a/src/data/templateData.json +++ b/src/data/templateData.json @@ -178,7 +178,9 @@ "s1": { "label": "Section1", "questions": [ - "q1" + "q1", + "q8", + "q9" ] }, "s2": { @@ -303,8 +305,27 @@ "metadata": { "formatting_type": "RadioButton" } + }, + "q8": { + "text": "New Address Verification question: some question?", + "type": "mandatory", + "input_type": "Rating", + "options": [], + "metadata": { + "formatting_type": "Rating" + } + }, + "q9": { + "text": "New Address Verification question: some question?", + "type": "mandatory", + "input_type": "TextArea", + "options": [], + "metadata": { + "formatting_type": "Rating" + } } }, + "options": { "o1": { "type": "single_select", diff --git a/yarn.lock b/yarn.lock index bbbe3e9c..29719b49 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2258,6 +2258,11 @@ bl@^4.1.0: inherits "^2.0.4" readable-stream "^3.4.0" +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + bplist-creator@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/bplist-creator/-/bplist-creator-0.1.0.tgz#018a2d1b587f769e379ef5519103730f8963ba1e" @@ -2680,6 +2685,30 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2: shebang-command "^2.0.0" which "^2.0.1" +css-select@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" + integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== + dependencies: + boolbase "^1.0.0" + css-what "^6.1.0" + domhandler "^5.0.2" + domutils "^3.0.1" + nth-check "^2.0.1" + +css-tree@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + +css-what@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + cssom@^0.4.4: version "0.4.4" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" @@ -2860,6 +2889,20 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" +dom-serializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" + integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.2" + entities "^4.2.0" + +domelementtype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + domexception@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" @@ -2867,6 +2910,22 @@ domexception@^2.0.1: dependencies: webidl-conversions "^5.0.0" +domhandler@^5.0.1, domhandler@^5.0.2: + version "5.0.3" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" + integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== + dependencies: + domelementtype "^2.3.0" + +domutils@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.0.1.tgz#696b3875238338cb186b6c0612bd4901c89a4f1c" + integrity sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q== + dependencies: + dom-serializer "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.1" + ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" @@ -2904,6 +2963,11 @@ end-of-stream@^1.1.0: dependencies: once "^1.4.0" +entities@^4.2.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.4.0.tgz#97bdaba170339446495e653cfd2db78962900174" + integrity sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA== + envinfo@^7.7.2: version "7.8.1" resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" @@ -5075,6 +5139,11 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== + memoize-one@^5.0.0: version "5.2.1" resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e" @@ -5600,6 +5669,13 @@ npm-run-path@^4.0.0: dependencies: path-key "^3.0.0" +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + nullthrows@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" @@ -6111,6 +6187,16 @@ react-native-gradle-plugin@^0.70.3: resolved "https://registry.yarnpkg.com/react-native-gradle-plugin/-/react-native-gradle-plugin-0.70.3.tgz#cbcf0619cbfbddaa9128701aa2d7b4145f9c4fc8" integrity sha512-oOanj84fJEXUg9FoEAQomA8ISG+DVIrTZ3qF7m69VQUJyOGYyDZmPqKcjvRku4KXlEH6hWO9i4ACLzNBh8gC0A== +react-native-image-picker@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/react-native-image-picker/-/react-native-image-picker-4.10.2.tgz#75b356c9eea70c2c4f5c1089f8758e2fa32f88a8" + integrity sha512-3h9PrA1dQ84rVeipzQE4eWTELvflSHNtJZN6rz7NkZyaxo9YZV8H/TswBpHwiS5YWlyu+zlLzSoWVa1opSu7GA== + +react-native-pager-view@6.1.2: + version "6.1.2" + resolved "https://registry.yarnpkg.com/react-native-pager-view/-/react-native-pager-view-6.1.2.tgz#3522079b9a9d6634ca5e8d153bc0b4d660254552" + integrity sha512-qs2KSFc+7N7B+UZ6SG2sTvCkppagm5fVyRclv1KFKc7lDtrhXLzN59tXJw575LDP/dRJoXsNwqUAhZJdws6ABQ== + react-native-safe-area-context@^4.4.1: version "4.4.1" resolved "https://registry.yarnpkg.com/react-native-safe-area-context/-/react-native-safe-area-context-4.4.1.tgz#239c60b8a9a80eac70a38a822b04c0f1d15ffc01" @@ -6124,6 +6210,26 @@ react-native-screens@^3.18.2: react-freeze "^1.0.0" warn-once "^0.1.0" +react-native-svg@13.6.0: + version "13.6.0" + resolved "https://registry.yarnpkg.com/react-native-svg/-/react-native-svg-13.6.0.tgz#46e95a44aabbd778db7c46d8a1047da376b28058" + integrity sha512-1wjHCMJ8siyZbDZ0MX5wM+Jr7YOkb6GADn4/Z+/u1UwJX8WfjarypxDF3UO1ugMHa+7qor39oY+URMcrgPpiww== + dependencies: + css-select "^5.1.0" + css-tree "^1.1.3" + +react-native-tab-view@3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/react-native-tab-view/-/react-native-tab-view-3.3.2.tgz#4afc995e41b97e0457e95b487763d3f9dc318dcc" + integrity sha512-s0xr+wiMBHdjsWgbPTyZemgv7jJ+zKPBw/MIQIlKAMo4VCNV1vAZEbOHaHpGbqgYFwsmFXjKZNXQ5UJAIJXlDQ== + dependencies: + use-latest-callback "^0.1.5" + +react-native-toast-message@2.1.5: + version "2.1.5" + resolved "https://registry.yarnpkg.com/react-native-toast-message/-/react-native-toast-message-2.1.5.tgz#550acb9c6c0f1ee49c6b57b65a56d34e297eb723" + integrity sha512-mk3rELtBEhrhWBCN6CTaw0gypgL9ZNauX3xx1LUs4uee9vc0pVsghrKxO57vroUCcNL2hDeZSLJWdQNMCkGeaQ== + react-native@0.70.6: version "0.70.6" resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.70.6.tgz#d692f8b51baffc28e1a8bc5190cdb779de937aa8"