@coorpacademy/components 10.22.24-alpha.5 → 10.22.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/atom/choice/index.native.js +4 -4
- package/es/atom/choice/index.native.js.map +1 -1
- package/es/atom/select-modal/index.native.js +1 -1
- package/es/atom/select-modal/index.native.js.map +1 -1
- package/es/hoc/modal/select/index.native.js.map +1 -1
- package/es/molecule/answer/index.native.js +85 -0
- package/es/molecule/answer/index.native.js.map +1 -0
- package/es/molecule/answer/prop-types.js +22 -3
- package/es/molecule/answer/prop-types.js.map +1 -1
- package/es/molecule/questions/mobile/draggable/index.native.js +8 -29
- package/es/molecule/questions/mobile/draggable/index.native.js.map +1 -1
- package/es/molecule/questions/mobile/switch/index.native.js +57 -54
- package/es/molecule/questions/mobile/switch/index.native.js.map +1 -1
- package/es/molecule/questions/mobile/template/index.native.js +18 -23
- package/es/molecule/questions/mobile/template/index.native.js.map +1 -1
- package/es/molecule/questions/types.js +2 -0
- package/{lib/types/styles.d.js.map → es/molecule/questions/types.js.map} +1 -1
- package/es/organism/review-congrats/index.js +3 -1
- package/es/organism/review-congrats/index.js.map +1 -1
- package/es/organism/review-congrats/style.css +5 -0
- package/es/organism/review-slide/index.js +7 -11
- package/es/organism/review-slide/index.js.map +1 -1
- package/es/organism/review-slide/index.native.js +213 -0
- package/es/organism/review-slide/index.native.js.map +1 -0
- package/es/organism/review-slide/prop-types.js +4 -3
- package/es/organism/review-slide/prop-types.js.map +1 -1
- package/es/organism/review-slide/style.css +4 -0
- package/es/organism/review-stacked-slides/index.native.js +34 -0
- package/es/organism/review-stacked-slides/index.native.js.map +1 -0
- package/es/organism/review-stacked-slides/prop-types.js +3 -2
- package/es/organism/review-stacked-slides/prop-types.js.map +1 -1
- package/es/template/app-review/player/index.native.js +33 -230
- package/es/template/app-review/player/index.native.js.map +1 -1
- package/es/template/app-review/player/prop-types.js.map +1 -1
- package/es/template/app-review/player/style.css +7 -0
- package/es/template/app-review/template-context.js +3 -1
- package/es/template/app-review/template-context.js.map +1 -1
- package/es/types/styles.js +2 -0
- package/es/types/{styles.d.js.map → styles.js.map} +1 -1
- package/lib/atom/choice/index.native.js +4 -4
- package/lib/atom/choice/index.native.js.map +1 -1
- package/lib/atom/select-modal/index.native.js +1 -1
- package/lib/atom/select-modal/index.native.js.map +1 -1
- package/lib/hoc/modal/select/index.native.js.map +1 -1
- package/lib/molecule/answer/index.native.js +94 -0
- package/lib/molecule/answer/index.native.js.map +1 -0
- package/lib/molecule/answer/prop-types.js +25 -3
- package/lib/molecule/answer/prop-types.js.map +1 -1
- package/lib/molecule/questions/mobile/draggable/index.native.js +8 -31
- package/lib/molecule/questions/mobile/draggable/index.native.js.map +1 -1
- package/lib/molecule/questions/mobile/switch/index.native.js +64 -62
- package/lib/molecule/questions/mobile/switch/index.native.js.map +1 -1
- package/lib/molecule/questions/mobile/template/index.native.js +18 -23
- package/lib/molecule/questions/mobile/template/index.native.js.map +1 -1
- package/lib/molecule/questions/types.js +2 -0
- package/lib/{types/app-review.d.js.map → molecule/questions/types.js.map} +1 -1
- package/lib/organism/review-congrats/index.js +3 -1
- package/lib/organism/review-congrats/index.js.map +1 -1
- package/lib/organism/review-congrats/style.css +5 -0
- package/lib/organism/review-slide/index.js +7 -11
- package/lib/organism/review-slide/index.js.map +1 -1
- package/lib/organism/review-slide/index.native.js +232 -0
- package/lib/organism/review-slide/index.native.js.map +1 -0
- package/lib/organism/review-slide/prop-types.js +6 -5
- package/lib/organism/review-slide/prop-types.js.map +1 -1
- package/lib/organism/review-slide/style.css +4 -0
- package/lib/organism/review-stacked-slides/index.native.js +47 -0
- package/lib/organism/review-stacked-slides/index.native.js.map +1 -0
- package/lib/organism/review-stacked-slides/prop-types.js +3 -2
- package/lib/organism/review-stacked-slides/prop-types.js.map +1 -1
- package/lib/template/app-review/player/index.native.js +36 -233
- package/lib/template/app-review/player/index.native.js.map +1 -1
- package/lib/template/app-review/player/prop-types.js.map +1 -1
- package/lib/template/app-review/player/style.css +7 -0
- package/lib/template/app-review/template-context.js +3 -1
- package/lib/template/app-review/template-context.js.map +1 -1
- package/lib/types/styles.js +2 -0
- package/{es/types/app-review.d.js.map → lib/types/styles.js.map} +1 -1
- package/package.json +2 -2
- package/es/molecule/questions/qcm/index.native.js +0 -50
- package/es/molecule/questions/qcm/index.native.js.map +0 -1
- package/es/types/app-review.d.js +0 -2
- package/es/types/progression-engine.d.js +0 -2
- package/es/types/progression-engine.d.js.map +0 -1
- package/es/types/styles.d.js +0 -2
- package/lib/molecule/questions/qcm/index.native.js +0 -62
- package/lib/molecule/questions/qcm/index.native.js.map +0 -1
- package/lib/types/app-review.d.js +0 -2
- package/lib/types/progression-engine.d.js +0 -2
- package/lib/types/progression-engine.d.js.map +0 -1
- package/lib/types/styles.d.js +0 -2
|
@@ -21,7 +21,6 @@ const createStyleSheet = theme => StyleSheet.create({
|
|
|
21
21
|
backgroundColor: '#0000'
|
|
22
22
|
},
|
|
23
23
|
container: {
|
|
24
|
-
minHeight: 80,
|
|
25
24
|
backgroundColor: theme.colors.white,
|
|
26
25
|
borderRadius: theme.radius.regular,
|
|
27
26
|
flexDirection: 'row',
|
|
@@ -43,7 +42,8 @@ const createStyleSheet = theme => StyleSheet.create({
|
|
|
43
42
|
},
|
|
44
43
|
text: {
|
|
45
44
|
fontWeight: theme.fontWeight.bold,
|
|
46
|
-
color: theme.colors.black
|
|
45
|
+
color: theme.colors.black,
|
|
46
|
+
textAlign: 'center'
|
|
47
47
|
},
|
|
48
48
|
textSelected: {
|
|
49
49
|
color: theme.colors.white
|
|
@@ -132,12 +132,12 @@ const Choice = ({
|
|
|
132
132
|
testID: prefixTestID && `${prefixTestID}${mediaSuffix}`,
|
|
133
133
|
source: source,
|
|
134
134
|
style: styleSheet.image
|
|
135
|
-
})) : null, /*#__PURE__*/React.createElement(View, {
|
|
135
|
+
})) : null, children ? /*#__PURE__*/React.createElement(View, {
|
|
136
136
|
style: textWrapperStyle
|
|
137
137
|
}, /*#__PURE__*/React.createElement(Html, {
|
|
138
138
|
fontSize: squeezed ? theme.fontSize.medium : theme.fontSize.regular,
|
|
139
139
|
style: htmlStyle
|
|
140
|
-
}, children))));
|
|
140
|
+
}, children)) : null));
|
|
141
141
|
};
|
|
142
142
|
|
|
143
143
|
export default Choice;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/atom/choice/index.native.tsx"],"names":["React","useEffect","useState","View","StyleSheet","Html","ImageBackground","getCleanUri","Touchable","useTemplateContext","createStyleSheet","theme","create","boxShadow","shadowColor","shadowOffset","width","height","shadowOpacity","shadowRadius","elevation","backgroundColor","container","minHeight","colors","white","borderRadius","radius","regular","flexDirection","alignItems","textContainer","paddingHorizontal","paddingVertical","justifyContent","flex","squeezedTextContainer","padding","spacing","small","paddingLeft","undefined","paddingRight","text","fontWeight","bold","color","black","textSelected","unselectedImageContainer","borderRightColor","border","imageContainer","overflow","borderTopLeftRadius","borderBottomLeftRadius","image","Choice","children","isSelected","squeezed","isDisabled","onPress","media","testID","prefixTestID","style","questionType","templateContext","brandTheme","styleSheet","setStylesheet","_stylesheet","selectedSuffix","mediaType","type","toLowerCase","url","src","length","source","uri","mediaSuffix","htmlStyle","textWrapperStyle","push","selectionStyle","primary","borderColor","borderTopRightRadius","borderBottomRightRadius","fontSize","medium"],"mappings":"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","sourcesContent":["import React, {useEffect, useState} from 'react';\nimport {View, StyleSheet, ViewStyle} from 'react-native';\nimport type {Media, QuestionType} from '../../types/progression-engine';\n\nimport Html from '../html/index.native';\nimport ImageBackground from '../image-background/index.native';\nimport getCleanUri from '../../util/get-clean-uri';\nimport Touchable from '../../hoc/touchable/index.native';\nimport {useTemplateContext} from '../../template/app-review/template-context';\nimport {Theme} from '../../variables/theme.native';\n\nexport type Props = {\n isSelected?: boolean;\n onPress: () => void;\n children: string;\n isDisabled?: boolean;\n testID?: string;\n media?: Media;\n squeezed?: boolean;\n style?: ViewStyle;\n questionType: QuestionType;\n};\n\ntype StyleSheetType = {\n boxShadow: any;\n container: any;\n text: any;\n textSelected: any;\n textContainer: any;\n squeezedTextContainer: any;\n unselectedImageContainer: any;\n imageContainer: any;\n image: any;\n};\n\nconst createStyleSheet = (theme: Theme): StyleSheetType =>\n StyleSheet.create({\n boxShadow: {\n shadowColor: '#000',\n shadowOffset: {width: 0, height: 4},\n shadowOpacity: 0.12,\n shadowRadius: 16,\n elevation: 8,\n backgroundColor: '#0000'\n },\n container: {\n minHeight: 80,\n backgroundColor: theme.colors.white,\n borderRadius: theme.radius.regular,\n flexDirection: 'row',\n alignItems: 'stretch'\n },\n textContainer: {\n paddingHorizontal: 24,\n paddingVertical: 12,\n justifyContent: 'center',\n alignItems: 'center',\n flex: 1\n },\n squeezedTextContainer: {\n padding: theme.spacing.small,\n paddingLeft: undefined,\n paddingVertical: undefined,\n paddingRight: undefined,\n flex: 0\n },\n text: {\n fontWeight: theme.fontWeight.bold,\n color: theme.colors.black\n },\n textSelected: {\n color: theme.colors.white\n },\n unselectedImageContainer: {\n borderRightColor: theme.colors.border\n },\n imageContainer: {\n height: '100%',\n width: '25%',\n overflow: 'hidden',\n borderTopLeftRadius: theme.radius.regular,\n borderBottomLeftRadius: theme.radius.regular\n },\n image: {\n flex: 1\n }\n });\n\nconst Choice = ({\n children,\n isSelected = false,\n squeezed = false,\n isDisabled,\n onPress,\n media,\n testID: prefixTestID,\n style,\n questionType\n}: Props) => {\n const templateContext = useTemplateContext();\n const {theme, brandTheme} = templateContext;\n\n const [styleSheet, setStylesheet] = useState<StyleSheetType | null>(null);\n\n useEffect(() => {\n const _stylesheet = createStyleSheet(theme);\n setStylesheet(_stylesheet);\n }, [theme]);\n\n if (!styleSheet) {\n return null;\n }\n\n const selectedSuffix = prefixTestID && isSelected ? '-selected' : '';\n const mediaType = media && media.type && media.type === 'img' && media.type.toLowerCase();\n const url =\n media &&\n media.type === 'img' &&\n media.src &&\n media.src.length > 0 &&\n getCleanUri(media.src[0].url);\n\n const source = {uri: url ? getCleanUri(url) : undefined};\n const mediaSuffix = prefixTestID && mediaType ? `-${mediaType}` : '';\n\n const htmlStyle: ViewStyle[] = [styleSheet.text];\n const textWrapperStyle: ViewStyle[] = [\n styleSheet.textContainer,\n squeezed && styleSheet.squeezedTextContainer\n ];\n\n if (isSelected) {\n htmlStyle.push(styleSheet.textSelected);\n\n const selectionStyle = brandTheme && {\n backgroundColor: brandTheme.colors.primary,\n borderColor: brandTheme.colors.primary,\n ...(url\n ? {\n borderTopRightRadius: theme.radius.regular,\n borderBottomRightRadius: theme.radius.regular\n }\n : {\n borderRadius: theme.radius.regular\n })\n };\n\n textWrapperStyle.push(selectionStyle);\n }\n\n return (\n <Touchable\n onPress={!isDisabled ? onPress : undefined}\n style={style}\n analyticsID=\"question-choice\"\n analyticsParams={{questionType}}\n >\n <View\n style={[styleSheet.boxShadow, styleSheet.container]}\n testID={prefixTestID && `${prefixTestID}${selectedSuffix}`}\n >\n {url ? (\n <View style={styleSheet.imageContainer}>\n <ImageBackground\n testID={prefixTestID && `${prefixTestID}${mediaSuffix}`}\n source={source}\n style={styleSheet.image}\n />\n </View>\n ) : null}\n <View style={textWrapperStyle}>\n <Html\n fontSize={squeezed ? theme.fontSize.medium : theme.fontSize.regular}\n style={htmlStyle}\n >\n {children}\n </Html>\n </View>\n </View>\n </Touchable>\n );\n};\n\nexport default Choice;\n"],"file":"index.native.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/atom/choice/index.native.tsx"],"names":["React","useEffect","useState","View","StyleSheet","Html","ImageBackground","getCleanUri","Touchable","useTemplateContext","createStyleSheet","theme","create","boxShadow","shadowColor","shadowOffset","width","height","shadowOpacity","shadowRadius","elevation","backgroundColor","container","colors","white","borderRadius","radius","regular","flexDirection","alignItems","textContainer","paddingHorizontal","paddingVertical","justifyContent","flex","squeezedTextContainer","padding","spacing","small","paddingLeft","undefined","paddingRight","text","fontWeight","bold","color","black","textAlign","textSelected","unselectedImageContainer","borderRightColor","border","imageContainer","overflow","borderTopLeftRadius","borderBottomLeftRadius","image","Choice","children","isSelected","squeezed","isDisabled","onPress","media","testID","prefixTestID","style","questionType","templateContext","brandTheme","styleSheet","setStylesheet","_stylesheet","selectedSuffix","mediaType","type","toLowerCase","url","src","length","source","uri","mediaSuffix","htmlStyle","textWrapperStyle","push","selectionStyle","primary","borderColor","borderTopRightRadius","borderBottomRightRadius","fontSize","medium"],"mappings":"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","sourcesContent":["import React, {useEffect, useState} from 'react';\nimport {View, StyleSheet, ViewStyle} from 'react-native';\nimport type {Media, QuestionType} from '../../molecule/questions/types';\n\nimport Html from '../html/index.native';\nimport ImageBackground from '../image-background/index.native';\nimport getCleanUri from '../../util/get-clean-uri';\nimport Touchable from '../../hoc/touchable/index.native';\nimport {useTemplateContext} from '../../template/app-review/template-context';\nimport {Theme} from '../../variables/theme.native';\n\nexport type Props = {\n isSelected?: boolean;\n onPress: () => void;\n children?: string;\n isDisabled?: boolean;\n testID?: string;\n media?: Media;\n squeezed?: boolean;\n style?: ViewStyle;\n questionType: QuestionType;\n};\n\ntype StyleSheetType = {\n boxShadow: any;\n container: any;\n text: any;\n textSelected: any;\n textContainer: any;\n squeezedTextContainer: any;\n unselectedImageContainer: any;\n imageContainer: any;\n image: any;\n};\n\nconst createStyleSheet = (theme: Theme): StyleSheetType =>\n StyleSheet.create({\n boxShadow: {\n shadowColor: '#000',\n shadowOffset: {width: 0, height: 4},\n shadowOpacity: 0.12,\n shadowRadius: 16,\n elevation: 8,\n backgroundColor: '#0000'\n },\n container: {\n backgroundColor: theme.colors.white,\n borderRadius: theme.radius.regular,\n flexDirection: 'row',\n alignItems: 'stretch'\n },\n textContainer: {\n paddingHorizontal: 24,\n paddingVertical: 12,\n justifyContent: 'center',\n alignItems: 'center',\n flex: 1\n },\n squeezedTextContainer: {\n padding: theme.spacing.small,\n paddingLeft: undefined,\n paddingVertical: undefined,\n paddingRight: undefined,\n flex: 0\n },\n text: {\n fontWeight: theme.fontWeight.bold,\n color: theme.colors.black,\n textAlign: 'center'\n },\n textSelected: {\n color: theme.colors.white\n },\n unselectedImageContainer: {\n borderRightColor: theme.colors.border\n },\n imageContainer: {\n height: '100%',\n width: '25%',\n overflow: 'hidden',\n borderTopLeftRadius: theme.radius.regular,\n borderBottomLeftRadius: theme.radius.regular\n },\n image: {\n flex: 1\n }\n });\n\nconst Choice = ({\n children,\n isSelected = false,\n squeezed = false,\n isDisabled,\n onPress,\n media,\n testID: prefixTestID,\n style,\n questionType\n}: Props) => {\n const templateContext = useTemplateContext();\n const {theme, brandTheme} = templateContext;\n\n const [styleSheet, setStylesheet] = useState<StyleSheetType | null>(null);\n\n useEffect(() => {\n const _stylesheet = createStyleSheet(theme);\n setStylesheet(_stylesheet);\n }, [theme]);\n\n if (!styleSheet) {\n return null;\n }\n\n const selectedSuffix = prefixTestID && isSelected ? '-selected' : '';\n const mediaType = media && media.type && media.type === 'img' && media.type.toLowerCase();\n const url =\n media &&\n media.type === 'img' &&\n media.src &&\n media.src.length > 0 &&\n getCleanUri(media.src[0].url);\n\n const source = {uri: url ? getCleanUri(url) : undefined};\n const mediaSuffix = prefixTestID && mediaType ? `-${mediaType}` : '';\n\n const htmlStyle: ViewStyle[] = [styleSheet.text];\n const textWrapperStyle: ViewStyle[] = [\n styleSheet.textContainer,\n squeezed && styleSheet.squeezedTextContainer\n ];\n\n if (isSelected) {\n htmlStyle.push(styleSheet.textSelected);\n\n const selectionStyle = brandTheme && {\n backgroundColor: brandTheme.colors.primary,\n borderColor: brandTheme.colors.primary,\n ...(url\n ? {\n borderTopRightRadius: theme.radius.regular,\n borderBottomRightRadius: theme.radius.regular\n }\n : {\n borderRadius: theme.radius.regular\n })\n };\n\n textWrapperStyle.push(selectionStyle);\n }\n\n return (\n <Touchable\n onPress={!isDisabled ? onPress : undefined}\n style={style}\n analyticsID=\"question-choice\"\n analyticsParams={{questionType}}\n >\n <View\n style={[styleSheet.boxShadow, styleSheet.container]}\n testID={prefixTestID && `${prefixTestID}${selectedSuffix}`}\n >\n {url ? (\n <View style={styleSheet.imageContainer}>\n <ImageBackground\n testID={prefixTestID && `${prefixTestID}${mediaSuffix}`}\n source={source}\n style={styleSheet.image}\n />\n </View>\n ) : null}\n\n {children ? (\n <View style={textWrapperStyle}>\n <Html\n fontSize={squeezed ? theme.fontSize.medium : theme.fontSize.regular}\n style={htmlStyle}\n >\n {children}\n </Html>\n </View>\n ) : null}\n </View>\n </Touchable>\n );\n};\n\nexport default Choice;\n"],"file":"index.native.js"}
|
|
@@ -76,7 +76,7 @@ const Select = props => {
|
|
|
76
76
|
return null;
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
-
const selectedItem = values.find(item => item.
|
|
79
|
+
const selectedItem = values.find(item => item.selected);
|
|
80
80
|
const text = selectedItem && selectedItem.text || placeholder || null;
|
|
81
81
|
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Touchable, {
|
|
82
82
|
disabled: isDisabled,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/atom/select-modal/index.native.tsx"],"names":["React","useState","useEffect","useCallback","View","StyleSheet","NovaCompositionNavigationArrowDown","ArrowDown","Modal","Touchable","ANALYTICS_EVENT_TYPE","Space","Text","ModalSelect","useTemplateContext","ICON_WIDTH","createStyleSheet","theme","create","container","alignItems","flexDirection","text","flex","color","colors","gray","medium","textAlign","logEvent","eventName","analyticsID","analytics","questionType","id","Select","props","templateContext","styleSheet","setStylesheet","_stylesheet","onBlur","onFocus","onChange","values","placeholder","value","style","textStyle","isFocused","isDisabled","testID","handleFocus","OPEN_SELECT","handleBlur","CLOSE_SELECT","handleChange","_value","selectedItem","find","item","dark"],"mappings":"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
|
|
1
|
+
{"version":3,"sources":["../../../src/atom/select-modal/index.native.tsx"],"names":["React","useState","useEffect","useCallback","View","StyleSheet","NovaCompositionNavigationArrowDown","ArrowDown","Modal","Touchable","ANALYTICS_EVENT_TYPE","Space","Text","ModalSelect","useTemplateContext","ICON_WIDTH","createStyleSheet","theme","create","container","alignItems","flexDirection","text","flex","color","colors","gray","medium","textAlign","logEvent","eventName","analyticsID","analytics","questionType","id","Select","props","templateContext","styleSheet","setStylesheet","_stylesheet","onBlur","onFocus","onChange","values","placeholder","value","style","textStyle","isFocused","isDisabled","testID","handleFocus","OPEN_SELECT","handleBlur","CLOSE_SELECT","handleChange","_value","selectedItem","find","item","selected","dark"],"mappings":"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","sourcesContent":["import React, {useState, useEffect, useCallback} from 'react';\nimport {View, StyleSheet, ViewStyle, FlexAlignType} from 'react-native';\nimport {NovaCompositionNavigationArrowDown as ArrowDown} from '@coorpacademy/nova-icons';\nimport Modal from 'react-native-modal';\nimport Touchable from '../../hoc/touchable/index.native';\nimport type {ChoiceItem, QuestionType} from '../../molecule/questions/types';\nimport {Theme} from '../../variables/theme.native';\n\nimport {ANALYTICS_EVENT_TYPE, Analytics} from '../../variables/analytics';\nimport Space from '../space/index.native';\nimport Text from '../text/index.native';\nimport ModalSelect, {OnChangeFunction} from '../../hoc/modal/select/index.native';\nimport {useTemplateContext} from '../../template/app-review/template-context';\n\nexport type Props = {\n analyticsID: string;\n questionType: QuestionType;\n isDisabled?: boolean;\n isFocused?: boolean;\n values: Array<ChoiceItem>;\n value?: string;\n placeholder?: string;\n color?: string;\n onChange: OnChangeFunction;\n onFocus: () => void;\n onBlur: () => void;\n style?: ViewStyle;\n textStyle?: ViewStyle;\n testID?: string;\n};\n\ntype StyleSheetType = {\n container: {\n alignItems: FlexAlignType;\n flexDirection: 'row' | 'column' | 'row-reverse' | 'column-reverse' | undefined;\n };\n text: {\n flex: number;\n color: string;\n textAlign: string;\n };\n};\n\nconst ICON_WIDTH = 15;\n\nconst createStyleSheet = (theme: Theme) =>\n StyleSheet.create({\n container: {\n alignItems: 'center',\n flexDirection: 'row'\n },\n text: {\n flex: 1,\n color: theme.colors.gray.medium,\n textAlign: 'center'\n }\n });\n\nconst logEvent = (\n eventName: string,\n analyticsID: String,\n analytics: Analytics,\n questionType: QuestionType\n) => {\n analytics &&\n analytics.logEvent(eventName, {\n id: analyticsID,\n questionType\n });\n};\n\nconst Select = (props: Props) => {\n const templateContext = useTemplateContext();\n const {theme, analytics} = templateContext;\n const [styleSheet, setStylesheet] = useState<StyleSheetType | null>(null);\n\n useEffect(() => {\n const _stylesheet = createStyleSheet(theme);\n setStylesheet(_stylesheet);\n }, [theme]);\n\n const {\n analyticsID,\n onBlur,\n onFocus,\n onChange,\n values,\n placeholder,\n value,\n style,\n textStyle,\n color,\n questionType,\n isFocused = false,\n isDisabled = false,\n testID = 'select'\n } = props;\n\n const handleFocus = useCallback(() => {\n if (!onFocus) return;\n\n analytics && logEvent(ANALYTICS_EVENT_TYPE.OPEN_SELECT, analyticsID, analytics, questionType);\n onFocus();\n }, [analytics, analyticsID, onFocus, questionType]);\n\n const handleBlur = useCallback(() => {\n if (!onBlur) return;\n\n analytics && logEvent(ANALYTICS_EVENT_TYPE.CLOSE_SELECT, analyticsID, analytics, questionType);\n onBlur();\n }, [analytics, analyticsID, onBlur, questionType]);\n\n const handleChange = useCallback(\n _value => {\n onChange(_value);\n handleBlur();\n },\n [onChange, handleBlur]\n );\n\n if (!styleSheet) {\n return null;\n }\n\n const selectedItem = values.find(item => item.selected);\n const text = (selectedItem && selectedItem.text) || placeholder || null;\n\n return (\n <>\n <Touchable\n disabled={isDisabled}\n onPress={handleFocus}\n analyticsID={analyticsID}\n testID={`${testID}-input`}\n >\n <View style={[styleSheet.container, style]}>\n <Text style={[styleSheet.text, textStyle, color && {color}]}>{text}</Text>\n <Space type=\"tiny\" />\n <ArrowDown\n color={color || theme.colors.gray.dark}\n height={ICON_WIDTH}\n width={ICON_WIDTH}\n />\n </View>\n </Touchable>\n <Modal\n isVisible={isFocused}\n onSwipeComplete={handleBlur}\n onBackdropPress={handleBlur}\n testID={testID}\n >\n <ModalSelect\n value={value}\n values={values}\n onChange={handleChange}\n onClose={handleBlur}\n testID={`${testID}-modal`}\n />\n </Modal>\n </>\n );\n};\n\nexport default Select;\n"],"file":"index.native.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/hoc/modal/select/index.native.tsx"],"names":["React","useState","useEffect","useMemo","View","FlatList","StyleSheet","useTemplateContext","Modal","ModalSelectItem","createStyleSheet","theme","create","content","paddingHorizontal","separator","borderTopWidth","borderColor","colors","border","list","width","keyExtractor","item","index","createRenderItem","value","testID","onChange","handleChange","_value","text","createSeparator","styleSheet","ModalSelect","props","templateContext","setStylesheet","values","onClose","_stylesheet","renderItem","renderSeparator"],"mappings":"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","sourcesContent":["import React, {useState, useEffect, useMemo} from 'react';\nimport {View, FlatList, StyleSheet} from 'react-native';\nimport {noop} from 'lodash/fp';\nimport type {PressEvent} from 'react-native/Libraries/Types/CoreEventTypes';\n\nimport type {ChoiceItem} from '../../../types
|
|
1
|
+
{"version":3,"sources":["../../../../src/hoc/modal/select/index.native.tsx"],"names":["React","useState","useEffect","useMemo","View","FlatList","StyleSheet","useTemplateContext","Modal","ModalSelectItem","createStyleSheet","theme","create","content","paddingHorizontal","separator","borderTopWidth","borderColor","colors","border","list","width","keyExtractor","item","index","createRenderItem","value","testID","onChange","handleChange","_value","text","createSeparator","styleSheet","ModalSelect","props","templateContext","setStylesheet","values","onClose","_stylesheet","renderItem","renderSeparator"],"mappings":"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","sourcesContent":["import React, {useState, useEffect, useMemo} from 'react';\nimport {View, FlatList, StyleSheet} from 'react-native';\nimport {noop} from 'lodash/fp';\nimport type {PressEvent} from 'react-native/Libraries/Types/CoreEventTypes';\n\nimport type {ChoiceItem} from '../../../molecule/questions/types';\nimport {Theme} from '../../../variables/theme.native';\nimport {useTemplateContext} from '../../../template/app-review/template-context';\n\nimport Modal from '../index.native';\nimport ModalSelectItem from '../select-item/index.native';\n\nexport type OnChangeFunction = (value: string) => void;\n\nexport type Props = {\n value?: string;\n values: Array<ChoiceItem> | undefined;\n onChange: OnChangeFunction;\n onClose?: (event: PressEvent) => void;\n testID?: string;\n};\n\ntype StyleSheetType = {\n content: {\n paddingHorizontal: number;\n };\n separator: {\n borderTopWidth: number;\n borderColor: string;\n };\n list: {\n width: string;\n };\n};\n\nconst createStyleSheet = (theme: Theme) =>\n StyleSheet.create({\n content: {\n paddingHorizontal: 0\n },\n separator: {\n borderTopWidth: 1,\n borderColor: theme.colors.border\n },\n list: {\n width: '100%'\n }\n });\n\nconst keyExtractor = (item: ChoiceItem, index: number): string => {\n return `modal-select-item-${index + 1}`;\n};\n\nconst createRenderItem = (value: string, testID: String, onChange: OnChangeFunction) => ({\n item,\n index\n}: {\n item: ChoiceItem;\n index: number;\n}) => {\n // eslint-disable-next-line unicorn/consistent-function-scoping\n const handleChange = (_value: string) => () => onChange(_value);\n\n return (\n <ModalSelectItem\n onPress={handleChange(item.text)}\n isSelected={value === item.text}\n testID={`${testID}-item-${index + 1}`}\n >\n {item.text}\n </ModalSelectItem>\n );\n};\n\nconst createSeparator = (styleSheet: StyleSheetType) => () => {\n return <View style={styleSheet?.separator} />;\n};\n\nconst ModalSelect = (props: Props) => {\n const templateContext = useTemplateContext();\n const [styleSheet, setStylesheet] = useState<StyleSheetType | null>(null);\n const {theme} = templateContext;\n const {value = '', values, onChange, onClose = noop, testID = 'modal-select'} = props;\n\n useEffect(() => {\n const _stylesheet = createStyleSheet(theme);\n setStylesheet(_stylesheet);\n }, [theme]);\n\n const renderItem = useMemo(() => createRenderItem(value, testID, onChange), [\n value,\n testID,\n onChange\n ]);\n\n const renderSeparator = useMemo(() => (styleSheet ? createSeparator(styleSheet) : null), [\n styleSheet\n ]);\n\n if (!styleSheet) {\n return null;\n }\n\n return (\n <Modal onClose={onClose} contentStyle={styleSheet?.content} testID={testID}>\n <FlatList\n data={values}\n renderItem={renderItem}\n keyExtractor={keyExtractor}\n showsVerticalScrollIndicator={false}\n ItemSeparatorComponent={renderSeparator}\n style={styleSheet?.list}\n testID={`${testID}-items`}\n />\n </Modal>\n );\n};\n\nexport default ModalSelect;\n"],"file":"index.native.js"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import Switch from '../questions/mobile/switch/index.native';
|
|
3
|
+
|
|
4
|
+
const convertType = modelType => {
|
|
5
|
+
switch (modelType) {
|
|
6
|
+
case 'freeText':
|
|
7
|
+
return 'basic';
|
|
8
|
+
|
|
9
|
+
case 'dropDown':
|
|
10
|
+
return 'template';
|
|
11
|
+
|
|
12
|
+
default:
|
|
13
|
+
return modelType;
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
const convertToChoices = (answers = []) => answers.map((answer, index) => ({
|
|
18
|
+
_id: `${index}`,
|
|
19
|
+
label: answer.title,
|
|
20
|
+
value: answer.title,
|
|
21
|
+
onPress: answer.onClick || answer.onChange,
|
|
22
|
+
selected: answer.selected,
|
|
23
|
+
media: answer.image ? {
|
|
24
|
+
type: 'img',
|
|
25
|
+
src: [{
|
|
26
|
+
url: answer.image
|
|
27
|
+
}]
|
|
28
|
+
} : undefined,
|
|
29
|
+
// ---- custom properties for template choice
|
|
30
|
+
type: answer.type,
|
|
31
|
+
name: answer.name,
|
|
32
|
+
items: answer.options && answer.options.map(({
|
|
33
|
+
name,
|
|
34
|
+
selected,
|
|
35
|
+
value
|
|
36
|
+
}) => ({
|
|
37
|
+
text: name,
|
|
38
|
+
selected,
|
|
39
|
+
value,
|
|
40
|
+
_id: name
|
|
41
|
+
}))
|
|
42
|
+
}));
|
|
43
|
+
|
|
44
|
+
const Answer = props => {
|
|
45
|
+
const {
|
|
46
|
+
model: {
|
|
47
|
+
answers,
|
|
48
|
+
onChange,
|
|
49
|
+
template,
|
|
50
|
+
type,
|
|
51
|
+
onSliderChange,
|
|
52
|
+
minLabel,
|
|
53
|
+
maxLabel,
|
|
54
|
+
title
|
|
55
|
+
}
|
|
56
|
+
} = props;
|
|
57
|
+
const switchProps = {
|
|
58
|
+
type: convertType(type)
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
if (type === 'freeText') {
|
|
62
|
+
switchProps.onInputValueChange = onChange;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
if (type === 'qcm' || type === 'qcmDrag' || type === 'qcmGraphic' || type === 'template') {
|
|
66
|
+
switchProps.choices = convertToChoices(answers);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
if (type === 'template') {
|
|
70
|
+
switchProps.template = template;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
if (type === 'slider') {
|
|
74
|
+
switchProps.onSliderChange = onSliderChange;
|
|
75
|
+
switchProps.min = minLabel ? Number.parseInt(minLabel.split(' ')[0]) : 0;
|
|
76
|
+
switchProps.max = maxLabel ? Number.parseInt(maxLabel.split(' ')[0]) : 1;
|
|
77
|
+
switchProps.value = title ? Number.parseInt(title.split(' ')[0]) : 0;
|
|
78
|
+
switchProps.unit = minLabel ? minLabel.split(' ')[1] : '';
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
return /*#__PURE__*/React.createElement(Switch, switchProps);
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
export default Answer;
|
|
85
|
+
//# sourceMappingURL=index.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/molecule/answer/index.native.tsx"],"names":["React","Switch","convertType","modelType","convertToChoices","answers","map","answer","index","_id","label","title","value","onPress","onClick","onChange","selected","media","image","type","src","url","undefined","name","items","options","text","Answer","props","model","template","onSliderChange","minLabel","maxLabel","switchProps","onInputValueChange","choices","min","Number","parseInt","split","max","unit"],"mappings":"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","sourcesContent":["import React from 'react';\nimport {Choice, QuestionType} from '../questions/types';\nimport Switch, {Props as SwitchProps} from '../questions/mobile/switch/index.native';\nimport {Props} from './prop-types';\n\nconst convertType = (modelType: Props['model']['type']): QuestionType => {\n switch (modelType) {\n case 'freeText':\n return 'basic';\n case 'dropDown':\n return 'template';\n default:\n return modelType;\n }\n};\n\nconst convertToChoices = (answers: Props['model']['answers'] = []): Choice[] =>\n answers.map((answer, index) => ({\n _id: `${index}`,\n label: answer.title,\n value: answer.title,\n onPress: answer.onClick || answer.onChange,\n selected: answer.selected,\n media: answer.image\n ? {\n type: 'img',\n src: [{url: answer.image}]\n }\n : undefined,\n // ---- custom properties for template choice\n type: answer.type,\n name: answer.name,\n items:\n answer.options &&\n answer.options.map(({name, selected, value}) => ({\n text: name,\n selected,\n value,\n _id: name\n }))\n }));\n\nconst Answer = (props: Props) => {\n const {\n model: {answers, onChange, template, type, onSliderChange, minLabel, maxLabel, title}\n } = props;\n\n const switchProps: SwitchProps = {\n type: convertType(type)\n };\n\n if (type === 'freeText') {\n switchProps.onInputValueChange = onChange;\n }\n\n if (type === 'qcm' || type === 'qcmDrag' || type === 'qcmGraphic' || type === 'template') {\n switchProps.choices = convertToChoices(answers);\n }\n\n if (type === 'template') {\n switchProps.template = template;\n }\n\n if (type === 'slider') {\n switchProps.onSliderChange = onSliderChange;\n switchProps.min = minLabel ? Number.parseInt(minLabel.split(' ')[0]) : 0;\n switchProps.max = maxLabel ? Number.parseInt(maxLabel.split(' ')[0]) : 1;\n switchProps.value = title ? Number.parseInt(title.split(' ')[0]) : 0;\n switchProps.unit = minLabel ? minLabel.split(' ')[1] : '';\n }\n\n return <Switch {...switchProps} />;\n};\n\nexport default Answer;\n"],"file":"index.native.js"}
|
|
@@ -22,11 +22,30 @@ const audioPropType = PropTypes.shape({
|
|
|
22
22
|
export const MediaViewPropTypes = {
|
|
23
23
|
media: PropTypes.oneOfType([videoPropType, imgPropType, audioPropType])
|
|
24
24
|
};
|
|
25
|
-
|
|
25
|
+
const SelectOptionsPropTypes = PropTypes.shape({
|
|
26
|
+
name: PropTypes.string,
|
|
27
|
+
selected: PropTypes.bool,
|
|
28
|
+
validOption: PropTypes.bool,
|
|
29
|
+
value: PropTypes.string
|
|
30
|
+
});
|
|
31
|
+
const AnswerPropTypes = PropTypes.shape({
|
|
32
|
+
title: PropTypes.string.isRequired,
|
|
33
|
+
'aria-label': PropTypes.string,
|
|
34
|
+
onClick: PropTypes.func,
|
|
35
|
+
onChange: PropTypes.func,
|
|
36
|
+
selected: PropTypes.bool,
|
|
37
|
+
image: PropTypes.string,
|
|
38
|
+
options: PropTypes.arrayOf(SelectOptionsPropTypes),
|
|
39
|
+
type: PropTypes.oneOf(['text', 'select']),
|
|
40
|
+
name: PropTypes.string
|
|
41
|
+
});
|
|
42
|
+
const propTypes = {
|
|
26
43
|
model: PropTypes.shape({
|
|
27
|
-
type: PropTypes.oneOf(['qcmDrag', 'qcm', 'qcmGraphic', 'freeText', 'dropDown', 'slider', 'template']).isRequired
|
|
28
|
-
|
|
44
|
+
type: PropTypes.oneOf(['qcmDrag', 'qcm', 'qcmGraphic', 'freeText', 'dropDown', 'slider', 'template']).isRequired,
|
|
45
|
+
answer: PropTypes.arrayOf(AnswerPropTypes)
|
|
46
|
+
}).isRequired,
|
|
29
47
|
help: PropTypes.string,
|
|
30
48
|
media: MediaViewPropTypes.media
|
|
31
49
|
};
|
|
50
|
+
export default propTypes;
|
|
32
51
|
//# sourceMappingURL=prop-types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/molecule/answer/prop-types.
|
|
1
|
+
{"version":3,"sources":["../../../src/molecule/answer/prop-types.ts"],"names":["PropTypes","VideoPlayerPropTypes","TYPE_IMAGE","TYPE_VIDEO","TYPE_AUDIO","isType","name","oneOf","videoPropType","shape","type","isRequired","imgPropType","url","string","audioPropType","mediaUrl","MediaViewPropTypes","media","oneOfType","SelectOptionsPropTypes","selected","bool","validOption","value","AnswerPropTypes","title","onClick","func","onChange","image","options","arrayOf","propTypes","model","answer","help"],"mappings":";;AAAA,OAAOA,SAAP,MAAsB,YAAtB;AACA,OAAOC,oBAAP,MAAiC,4BAAjC;AAEA,OAAO,MAAMC,UAAU,GAAG,KAAnB;AACP,OAAO,MAAMC,UAAU,GAAG,OAAnB;AACP,OAAO,MAAMC,UAAU,GAAG,OAAnB;;AAEP,MAAMC,MAAM,GAAIC,IAAD,IAAkBN,SAAS,CAACO,KAAV,CAAgB,CAACD,IAAD,CAAhB,CAAjC;;AAEA,MAAME,aAAa,GAAGR,SAAS,CAACS,KAAV,uBACjBR,oBADiB;AAEpBS,EAAAA,IAAI,EAAEL,MAAM,CAACF,UAAD,CAAN,CAAmBQ;AAFL,GAAtB;AAKA,MAAMC,WAAW,GAAGZ,SAAS,CAACS,KAAV,CAAgB;AAClCC,EAAAA,IAAI,EAAEL,MAAM,CAACH,UAAD,CAAN,CAAmBS,UADS;AAElCE,EAAAA,GAAG,EAAEb,SAAS,CAACc,MAAV,CAAiBH;AAFY,CAAhB,CAApB;AAKA,MAAMI,aAAa,GAAGf,SAAS,CAACS,KAAV,CAAgB;AACpCC,EAAAA,IAAI,EAAEL,MAAM,CAACD,UAAD,CAAN,CAAmBO,UADW;AAEpCK,EAAAA,QAAQ,EAAEhB,SAAS,CAACc,MAAV,CAAiBH;AAFS,CAAhB,CAAtB;AAKA,OAAO,MAAMM,kBAAkB,GAAG;AAChCC,EAAAA,KAAK,EAAElB,SAAS,CAACmB,SAAV,CAAoB,CAACX,aAAD,EAAgBI,WAAhB,EAA6BG,aAA7B,CAApB;AADyB,CAA3B;AAIP,MAAMK,sBAAsB,GAAGpB,SAAS,CAACS,KAAV,CAAgB;AAC7CH,EAAAA,IAAI,EAAEN,SAAS,CAACc,MAD6B;AAE7CO,EAAAA,QAAQ,EAAErB,SAAS,CAACsB,IAFyB;AAG7CC,EAAAA,WAAW,EAAEvB,SAAS,CAACsB,IAHsB;AAI7CE,EAAAA,KAAK,EAAExB,SAAS,CAACc;AAJ4B,CAAhB,CAA/B;AAOA,MAAMW,eAAe,GAAGzB,SAAS,CAACS,KAAV,CAAgB;AACtCiB,EAAAA,KAAK,EAAE1B,SAAS,CAACc,MAAV,CAAiBH,UADc;AAEtC,gBAAcX,SAAS,CAACc,MAFc;AAGtCa,EAAAA,OAAO,EAAE3B,SAAS,CAAC4B,IAHmB;AAItCC,EAAAA,QAAQ,EAAE7B,SAAS,CAAC4B,IAJkB;AAKtCP,EAAAA,QAAQ,EAAErB,SAAS,CAACsB,IALkB;AAMtCQ,EAAAA,KAAK,EAAE9B,SAAS,CAACc,MANqB;AAOtCiB,EAAAA,OAAO,EAAE/B,SAAS,CAACgC,OAAV,CAAkBZ,sBAAlB,CAP6B;AAQtCV,EAAAA,IAAI,EAAEV,SAAS,CAACO,KAAV,CAAgB,CAAC,MAAD,EAAS,QAAT,CAAhB,CARgC;AAStCD,EAAAA,IAAI,EAAEN,SAAS,CAACc;AATsB,CAAhB,CAAxB;AAYA,MAAMmB,SAAS,GAAG;AAChBC,EAAAA,KAAK,EAAElC,SAAS,CAACS,KAAV,CAAgB;AACrBC,IAAAA,IAAI,EAAEV,SAAS,CAACO,KAAV,CAAgB,CACpB,SADoB,EAEpB,KAFoB,EAGpB,YAHoB,EAIpB,UAJoB,EAKpB,UALoB,EAMpB,QANoB,EAOpB,UAPoB,CAAhB,EAQHI,UATkB;AAUrBwB,IAAAA,MAAM,EAAEnC,SAAS,CAACgC,OAAV,CAAkBP,eAAlB;AAVa,GAAhB,EAWJd,UAZa;AAahByB,EAAAA,IAAI,EAAEpC,SAAS,CAACc,MAbA;AAchBI,EAAAA,KAAK,EAAED,kBAAkB,CAACC;AAdV,CAAlB;AAmDA,eAAee,SAAf","sourcesContent":["import PropTypes from 'prop-types';\nimport VideoPlayerPropTypes from '../video-player/prop-types';\n\nexport const TYPE_IMAGE = 'img';\nexport const TYPE_VIDEO = 'video';\nexport const TYPE_AUDIO = 'audio';\n\nconst isType = (name: string) => PropTypes.oneOf([name]);\n\nconst videoPropType = PropTypes.shape({\n ...VideoPlayerPropTypes,\n type: isType(TYPE_VIDEO).isRequired\n});\n\nconst imgPropType = PropTypes.shape({\n type: isType(TYPE_IMAGE).isRequired,\n url: PropTypes.string.isRequired\n});\n\nconst audioPropType = PropTypes.shape({\n type: isType(TYPE_AUDIO).isRequired,\n mediaUrl: PropTypes.string.isRequired\n});\n\nexport const MediaViewPropTypes = {\n media: PropTypes.oneOfType([videoPropType, imgPropType, audioPropType])\n};\n\nconst SelectOptionsPropTypes = PropTypes.shape({\n name: PropTypes.string,\n selected: PropTypes.bool,\n validOption: PropTypes.bool,\n value: PropTypes.string\n});\n\nconst AnswerPropTypes = PropTypes.shape({\n title: PropTypes.string.isRequired,\n 'aria-label': PropTypes.string,\n onClick: PropTypes.func,\n onChange: PropTypes.func,\n selected: PropTypes.bool,\n image: PropTypes.string,\n options: PropTypes.arrayOf(SelectOptionsPropTypes),\n type: PropTypes.oneOf(['text', 'select']),\n name: PropTypes.string\n});\n\nconst propTypes = {\n model: PropTypes.shape({\n type: PropTypes.oneOf([\n 'qcmDrag',\n 'qcm',\n 'qcmGraphic',\n 'freeText',\n 'dropDown',\n 'slider',\n 'template'\n ]).isRequired,\n answer: PropTypes.arrayOf(AnswerPropTypes)\n }).isRequired,\n help: PropTypes.string,\n media: MediaViewPropTypes.media\n};\n\ntype SelectOptions = {\n name: string;\n selected: boolean;\n validOption: boolean;\n value: string;\n};\n\ntype Answer = {\n title?: string;\n 'aria-label'?: string;\n onClick?: () => void;\n onChange?: (value: string) => void;\n selected?: boolean;\n image?: string;\n options?: SelectOptions[];\n type?: 'text' | 'select';\n name?: string;\n};\n\nexport type Props = {\n model: {\n type: 'qcmDrag' | 'qcm' | 'qcmGraphic' | 'freeText' | 'dropDown' | 'slider' | 'template';\n answers?: Answer[];\n template?: string;\n onChange?: (value: string | number) => void;\n onSliderChange?: (value: number) => void;\n minLabel?: string;\n maxLabel?: string;\n title?: string;\n };\n help: string;\n media: any;\n};\n\nexport default propTypes;\n"],"file":"prop-types.js"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, {
|
|
1
|
+
import React, { useEffect, useState } from 'react';
|
|
2
2
|
import { View, StyleSheet, Text } from 'react-native';
|
|
3
3
|
import QuestionChoice from '../../../../atom/choice/index.native';
|
|
4
4
|
import { useTemplateContext } from '../../../../template/app-review/template-context';
|
|
@@ -38,7 +38,6 @@ const DropZone = props => {
|
|
|
38
38
|
const {
|
|
39
39
|
onPress
|
|
40
40
|
} = props;
|
|
41
|
-
const handlePress = useCallback(item => () => onPress(item), [onPress]);
|
|
42
41
|
const [styleSheet, setStylesheet] = useState(null);
|
|
43
42
|
useEffect(() => {
|
|
44
43
|
const _stylesheet = createDropZoneStyle(theme);
|
|
@@ -59,7 +58,7 @@ const DropZone = props => {
|
|
|
59
58
|
squeezed: true,
|
|
60
59
|
isSelected: true,
|
|
61
60
|
testID: `choice-${item._id}`,
|
|
62
|
-
onPress:
|
|
61
|
+
onPress: onPress(item),
|
|
63
62
|
questionType: "qcmDrag"
|
|
64
63
|
}, item.label));
|
|
65
64
|
const hasNoSelectedChoices = mappedSortedChoices.length === 0;
|
|
@@ -71,7 +70,6 @@ const DropZone = props => {
|
|
|
71
70
|
};
|
|
72
71
|
|
|
73
72
|
const createStyleSheet = theme => StyleSheet.create({
|
|
74
|
-
container: {},
|
|
75
73
|
pickableChoices: {
|
|
76
74
|
flexDirection: 'row',
|
|
77
75
|
flexWrap: 'wrap'
|
|
@@ -79,22 +77,7 @@ const createStyleSheet = theme => StyleSheet.create({
|
|
|
79
77
|
choice: {
|
|
80
78
|
margin: theme.spacing.micro
|
|
81
79
|
}
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
export const extractSelectedChoices = (availableChoices, userChoices) => {
|
|
86
|
-
const selectedChoices = userChoices.reduce((accumulator, currentValue) => {
|
|
87
|
-
const foundItem = availableChoices.find(availableChoice => availableChoice.label === currentValue);
|
|
88
|
-
|
|
89
|
-
if (foundItem) {
|
|
90
|
-
return [...accumulator, foundItem];
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
return accumulator;
|
|
94
|
-
}, []);
|
|
95
|
-
const notSelectedChoices = availableChoices.filter(availableChoice => !userChoices.includes(availableChoice.label));
|
|
96
|
-
return [selectedChoices, notSelectedChoices];
|
|
97
|
-
};
|
|
80
|
+
});
|
|
98
81
|
|
|
99
82
|
const QuestionDraggable = props => {
|
|
100
83
|
const templateContext = useTemplateContext();
|
|
@@ -112,32 +95,28 @@ const QuestionDraggable = props => {
|
|
|
112
95
|
return null;
|
|
113
96
|
}
|
|
114
97
|
|
|
115
|
-
const handlePress = item => () => props.onPress(item);
|
|
116
|
-
|
|
117
98
|
const {
|
|
118
99
|
choices,
|
|
119
100
|
onPress,
|
|
120
|
-
testID
|
|
121
|
-
userChoices
|
|
101
|
+
testID
|
|
122
102
|
} = props;
|
|
123
|
-
const
|
|
124
|
-
const
|
|
103
|
+
const selectedChoices = choices.filter(item => item.selected);
|
|
104
|
+
const pickableChoices = choices.filter(item => !item.selected).map((item, index) => /*#__PURE__*/React.createElement(QuestionChoice, {
|
|
125
105
|
style: styleSheet.choice,
|
|
126
106
|
key: item._id,
|
|
127
107
|
squeezed: true,
|
|
128
108
|
testID: `choice-${item._id}-unselected`,
|
|
129
|
-
onPress:
|
|
109
|
+
onPress: onPress(item),
|
|
130
110
|
questionType: "qcmDrag"
|
|
131
111
|
}, item.label));
|
|
132
112
|
return /*#__PURE__*/React.createElement(View, {
|
|
133
|
-
style: styleSheet.container,
|
|
134
113
|
testID: testID
|
|
135
114
|
}, /*#__PURE__*/React.createElement(DropZone, {
|
|
136
115
|
choices: selectedChoices,
|
|
137
116
|
onPress: onPress
|
|
138
117
|
}), /*#__PURE__*/React.createElement(View, {
|
|
139
118
|
style: styleSheet.pickableChoices
|
|
140
|
-
},
|
|
119
|
+
}, pickableChoices));
|
|
141
120
|
};
|
|
142
121
|
|
|
143
122
|
export default QuestionDraggable;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/molecule/questions/mobile/draggable/index.native.tsx"],"names":["React","useCallback","useEffect","useState","View","StyleSheet","Text","QuestionChoice","useTemplateContext","createDropZoneStyle","theme","create","choice","margin","spacing","micro","dropZone","flexWrap","flexDirection","borderStyle","borderWidth","padding","borderColor","colors","gray","light","backgroundColor","extra","borderRadius","radius","common","marginBottom","tiny","emptyContent","justifyContent","alignContent","alignItems","height","text","color","medium","DropZone","props","templateContext","translations","onPress","handlePress","item","styleSheet","setStylesheet","_stylesheet","choices","mappedSortedChoices","map","_id","label","hasNoSelectedChoices","length","selectSomethingBelow","createStyleSheet","container","pickableChoices","extractSelectedChoices","availableChoices","userChoices","selectedChoices","reduce","accumulator","currentValue","foundItem","find","availableChoice","notSelectedChoices","filter","includes","QuestionDraggable","testID","mappedunselectedChoices","index"],"mappings":"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","sourcesContent":["import React, {useCallback, useEffect, useState} from 'react';\nimport {View, StyleSheet, Text} from 'react-native';\nimport QuestionChoice from '../../../../atom/choice/index.native';\nimport {useTemplateContext} from '../../../../template/app-review/template-context';\nimport {Theme} from '../../../../variables/theme.native';\n\nimport type {Choice} from '../../../../types/progression-engine';\n\nexport interface DropZoneProps {\n choices: Array<Choice>;\n onPress: (item: Choice) => void;\n}\n\nconst createDropZoneStyle = (theme: Theme) =>\n StyleSheet.create({\n choice: {\n margin: theme.spacing.micro\n },\n dropZone: {\n flexWrap: 'wrap',\n flexDirection: 'row',\n borderStyle: 'dashed',\n borderWidth: 2,\n padding: theme.spacing.micro,\n borderColor: theme.colors.gray.light,\n backgroundColor: theme.colors.gray.extra,\n borderRadius: theme.radius.common,\n marginBottom: theme.spacing.tiny\n },\n emptyContent: {\n justifyContent: 'center',\n alignContent: 'center',\n alignItems: 'center',\n height: 60\n },\n text: {\n color: theme.colors.gray.medium\n }\n });\n\nconst DropZone = (props: DropZoneProps) => {\n const templateContext = useTemplateContext();\n const {theme, translations} = templateContext;\n const {onPress} = props;\n\n const handlePress = useCallback((item: Choice) => () => onPress(item), [onPress]);\n const [styleSheet, setStylesheet] = useState<any | null>(null);\n\n useEffect(() => {\n const _stylesheet = createDropZoneStyle(theme);\n setStylesheet(_stylesheet);\n }, [theme]);\n\n if (!styleSheet) {\n return null;\n }\n\n const {choices} = props;\n const mappedSortedChoices = choices.map(item => (\n <QuestionChoice\n style={styleSheet.choice}\n key={item._id}\n squeezed\n isSelected\n testID={`choice-${item._id}`}\n onPress={handlePress(item)}\n questionType=\"qcmDrag\"\n >\n {item.label}\n </QuestionChoice>\n ));\n\n const hasNoSelectedChoices = mappedSortedChoices.length === 0;\n\n return (\n <View style={[styleSheet.dropZone, hasNoSelectedChoices && styleSheet.emptyContent]}>\n {hasNoSelectedChoices ? (\n <Text style={styleSheet.text}>{translations.selectSomethingBelow}</Text>\n ) : null}\n\n {!hasNoSelectedChoices && mappedSortedChoices}\n </View>\n );\n};\n\nexport interface Props {\n choices: Array<Choice>;\n userChoices: Array<string>;\n testID?: string;\n onPress: (item: Choice) => void;\n}\n\nconst createStyleSheet = (theme: Theme) =>\n StyleSheet.create({\n container: {},\n pickableChoices: {\n flexDirection: 'row',\n flexWrap: 'wrap'\n },\n choice: {\n margin: theme.spacing.micro\n }\n });\n\n// this algo could be improve using a single reduce fuction\nexport const extractSelectedChoices = (\n availableChoices: Array<Choice>,\n userChoices: Array<string>\n): Array<Array<Choice>> => {\n const selectedChoices: Array<Choice> = userChoices.reduce(\n (accumulator: Array<Choice>, currentValue) => {\n const foundItem = availableChoices.find(\n availableChoice => availableChoice.label === currentValue\n );\n if (foundItem) {\n return [...accumulator, foundItem];\n }\n return accumulator;\n },\n []\n );\n\n const notSelectedChoices = availableChoices.filter(\n availableChoice => !userChoices.includes(availableChoice.label)\n );\n\n return [selectedChoices, notSelectedChoices];\n};\n\nconst QuestionDraggable = (props: Props) => {\n const templateContext = useTemplateContext();\n const {theme} = templateContext;\n\n const [styleSheet, setStylesheet] = useState<any | null>(null);\n\n useEffect(() => {\n const _stylesheet = createStyleSheet(theme);\n setStylesheet(_stylesheet);\n }, [theme]);\n\n if (!styleSheet) {\n return null;\n }\n\n const handlePress = (item: Choice) => () => props.onPress(item);\n\n const {choices, onPress, testID, userChoices} = props;\n const [selectedChoices, notSelectedChoices] = extractSelectedChoices(choices, userChoices);\n\n const mappedunselectedChoices = notSelectedChoices.map((item, index) => (\n <QuestionChoice\n style={styleSheet.choice}\n key={item._id}\n squeezed\n testID={`choice-${item._id}-unselected`}\n onPress={handlePress(item)}\n questionType=\"qcmDrag\"\n >\n {item.label}\n </QuestionChoice>\n ));\n\n return (\n <View style={styleSheet.container} testID={testID}>\n <DropZone choices={selectedChoices} onPress={onPress} />\n <View style={styleSheet.pickableChoices}>{mappedunselectedChoices}</View>\n </View>\n );\n};\n\nexport default QuestionDraggable;\n"],"file":"index.native.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../../src/molecule/questions/mobile/draggable/index.native.tsx"],"names":["React","useEffect","useState","View","StyleSheet","Text","QuestionChoice","useTemplateContext","createDropZoneStyle","theme","create","choice","margin","spacing","micro","dropZone","flexWrap","flexDirection","borderStyle","borderWidth","padding","borderColor","colors","gray","light","backgroundColor","extra","borderRadius","radius","common","marginBottom","tiny","emptyContent","justifyContent","alignContent","alignItems","height","text","color","medium","DropZone","props","templateContext","translations","onPress","styleSheet","setStylesheet","_stylesheet","choices","mappedSortedChoices","map","item","_id","label","hasNoSelectedChoices","length","selectSomethingBelow","createStyleSheet","pickableChoices","QuestionDraggable","testID","selectedChoices","filter","selected","index"],"mappings":"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","sourcesContent":["import React, {useEffect, useState} from 'react';\nimport {View, StyleSheet, Text} from 'react-native';\nimport QuestionChoice from '../../../../atom/choice/index.native';\nimport {useTemplateContext} from '../../../../template/app-review/template-context';\nimport {Theme} from '../../../../variables/theme.native';\n\nimport type {Choice} from '../../types';\n\nexport interface DropZoneProps {\n choices: Array<Choice>;\n onPress: (item: Choice) => () => void;\n}\n\nconst createDropZoneStyle = (theme: Theme) =>\n StyleSheet.create({\n choice: {\n margin: theme.spacing.micro\n },\n dropZone: {\n flexWrap: 'wrap',\n flexDirection: 'row',\n borderStyle: 'dashed',\n borderWidth: 2,\n padding: theme.spacing.micro,\n borderColor: theme.colors.gray.light,\n backgroundColor: theme.colors.gray.extra,\n borderRadius: theme.radius.common,\n marginBottom: theme.spacing.tiny\n },\n emptyContent: {\n justifyContent: 'center',\n alignContent: 'center',\n alignItems: 'center',\n height: 60\n },\n text: {\n color: theme.colors.gray.medium\n }\n });\n\nconst DropZone = (props: DropZoneProps) => {\n const templateContext = useTemplateContext();\n const {theme, translations} = templateContext;\n const {onPress} = props;\n\n const [styleSheet, setStylesheet] = useState<any | null>(null);\n\n useEffect(() => {\n const _stylesheet = createDropZoneStyle(theme);\n setStylesheet(_stylesheet);\n }, [theme]);\n\n if (!styleSheet) {\n return null;\n }\n\n const {choices} = props;\n const mappedSortedChoices = choices.map(item => (\n <QuestionChoice\n style={styleSheet.choice}\n key={item._id}\n squeezed\n isSelected\n testID={`choice-${item._id}`}\n onPress={onPress(item)}\n questionType=\"qcmDrag\"\n >\n {item.label}\n </QuestionChoice>\n ));\n\n const hasNoSelectedChoices = mappedSortedChoices.length === 0;\n\n return (\n <View style={[styleSheet.dropZone, hasNoSelectedChoices && styleSheet.emptyContent]}>\n {hasNoSelectedChoices ? (\n <Text style={styleSheet.text}>{translations.selectSomethingBelow}</Text>\n ) : null}\n\n {!hasNoSelectedChoices && mappedSortedChoices}\n </View>\n );\n};\n\nexport interface Props {\n choices: Array<Choice>;\n testID?: string;\n onPress: (item: Choice) => () => void;\n}\n\nconst createStyleSheet = (theme: Theme) =>\n StyleSheet.create({\n pickableChoices: {\n flexDirection: 'row',\n flexWrap: 'wrap'\n },\n choice: {\n margin: theme.spacing.micro\n }\n });\n\nconst QuestionDraggable = (props: Props) => {\n const templateContext = useTemplateContext();\n const {theme} = templateContext;\n\n const [styleSheet, setStylesheet] = useState<any | null>(null);\n\n useEffect(() => {\n const _stylesheet = createStyleSheet(theme);\n setStylesheet(_stylesheet);\n }, [theme]);\n\n if (!styleSheet) {\n return null;\n }\n\n const {choices, onPress, testID} = props;\n const selectedChoices = choices.filter(item => item.selected);\n\n const pickableChoices = choices\n .filter(item => !item.selected)\n .map((item, index) => (\n <QuestionChoice\n style={styleSheet.choice}\n key={item._id}\n squeezed\n testID={`choice-${item._id}-unselected`}\n onPress={onPress(item)}\n questionType=\"qcmDrag\"\n >\n {item.label}\n </QuestionChoice>\n ));\n\n return (\n <View testID={testID}>\n <DropZone choices={selectedChoices} onPress={onPress} />\n <View style={styleSheet.pickableChoices}>{pickableChoices}</View>\n </View>\n );\n};\n\nexport default QuestionDraggable;\n"],"file":"index.native.js"}
|