@coorpacademy/components 10.22.24-alpha.5 → 10.22.25-alpha.15

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.
Files changed (79) hide show
  1. package/es/atom/choice/index.native.js +4 -4
  2. package/es/atom/choice/index.native.js.map +1 -1
  3. package/es/atom/select-modal/index.native.js +1 -1
  4. package/es/atom/select-modal/index.native.js.map +1 -1
  5. package/es/molecule/answer/index.native.js +85 -0
  6. package/es/molecule/answer/index.native.js.map +1 -0
  7. package/es/molecule/answer/prop-types.js +22 -3
  8. package/es/molecule/answer/prop-types.js.map +1 -1
  9. package/es/molecule/questions/mobile/draggable/index.native.js +8 -29
  10. package/es/molecule/questions/mobile/draggable/index.native.js.map +1 -1
  11. package/es/molecule/questions/mobile/switch/index.native.js +57 -54
  12. package/es/molecule/questions/mobile/switch/index.native.js.map +1 -1
  13. package/es/molecule/questions/mobile/template/index.native.js +18 -23
  14. package/es/molecule/questions/mobile/template/index.native.js.map +1 -1
  15. package/es/organism/review-congrats/index.js +3 -1
  16. package/es/organism/review-congrats/index.js.map +1 -1
  17. package/es/organism/review-congrats/style.css +5 -0
  18. package/es/organism/review-slide/index.js +1 -8
  19. package/es/organism/review-slide/index.js.map +1 -1
  20. package/es/organism/review-slide/index.native.js +213 -0
  21. package/es/organism/review-slide/index.native.js.map +1 -0
  22. package/es/organism/review-slide/prop-types.js +4 -3
  23. package/es/organism/review-slide/prop-types.js.map +1 -1
  24. package/es/organism/review-stacked-slides/index.native.js +34 -0
  25. package/es/organism/review-stacked-slides/index.native.js.map +1 -0
  26. package/es/organism/review-stacked-slides/prop-types.js +3 -2
  27. package/es/organism/review-stacked-slides/prop-types.js.map +1 -1
  28. package/es/template/app-player/popin-correction/index.js +6 -3
  29. package/es/template/app-player/popin-correction/index.js.map +1 -1
  30. package/es/template/app-player/popin-end/index.js +6 -3
  31. package/es/template/app-player/popin-end/index.js.map +1 -1
  32. package/es/template/app-review/player/index.native.js +33 -230
  33. package/es/template/app-review/player/index.native.js.map +1 -1
  34. package/es/template/app-review/player/prop-types.js.map +1 -1
  35. package/es/template/app-review/player/style.css +7 -0
  36. package/es/template/app-review/template-context.js +3 -1
  37. package/es/template/app-review/template-context.js.map +1 -1
  38. package/lib/atom/choice/index.native.js +4 -4
  39. package/lib/atom/choice/index.native.js.map +1 -1
  40. package/lib/atom/select-modal/index.native.js +1 -1
  41. package/lib/atom/select-modal/index.native.js.map +1 -1
  42. package/lib/molecule/answer/index.native.js +94 -0
  43. package/lib/molecule/answer/index.native.js.map +1 -0
  44. package/lib/molecule/answer/prop-types.js +25 -3
  45. package/lib/molecule/answer/prop-types.js.map +1 -1
  46. package/lib/molecule/questions/mobile/draggable/index.native.js +8 -31
  47. package/lib/molecule/questions/mobile/draggable/index.native.js.map +1 -1
  48. package/lib/molecule/questions/mobile/switch/index.native.js +64 -62
  49. package/lib/molecule/questions/mobile/switch/index.native.js.map +1 -1
  50. package/lib/molecule/questions/mobile/template/index.native.js +18 -23
  51. package/lib/molecule/questions/mobile/template/index.native.js.map +1 -1
  52. package/lib/organism/review-congrats/index.js +3 -1
  53. package/lib/organism/review-congrats/index.js.map +1 -1
  54. package/lib/organism/review-congrats/style.css +5 -0
  55. package/lib/organism/review-slide/index.js +1 -8
  56. package/lib/organism/review-slide/index.js.map +1 -1
  57. package/lib/organism/review-slide/index.native.js +232 -0
  58. package/lib/organism/review-slide/index.native.js.map +1 -0
  59. package/lib/organism/review-slide/prop-types.js +6 -5
  60. package/lib/organism/review-slide/prop-types.js.map +1 -1
  61. package/lib/organism/review-stacked-slides/index.native.js +47 -0
  62. package/lib/organism/review-stacked-slides/index.native.js.map +1 -0
  63. package/lib/organism/review-stacked-slides/prop-types.js +3 -2
  64. package/lib/organism/review-stacked-slides/prop-types.js.map +1 -1
  65. package/lib/template/app-player/popin-correction/index.js +7 -3
  66. package/lib/template/app-player/popin-correction/index.js.map +1 -1
  67. package/lib/template/app-player/popin-end/index.js +7 -3
  68. package/lib/template/app-player/popin-end/index.js.map +1 -1
  69. package/lib/template/app-review/player/index.native.js +36 -233
  70. package/lib/template/app-review/player/index.native.js.map +1 -1
  71. package/lib/template/app-review/player/prop-types.js.map +1 -1
  72. package/lib/template/app-review/player/style.css +7 -0
  73. package/lib/template/app-review/template-context.js +3 -1
  74. package/lib/template/app-review/template-context.js.map +1 -1
  75. package/package.json +2 -2
  76. package/es/molecule/questions/qcm/index.native.js +0 -50
  77. package/es/molecule/questions/qcm/index.native.js.map +0 -1
  78. package/lib/molecule/questions/qcm/index.native.js +0 -62
  79. package/lib/molecule/questions/qcm/index.native.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/molecule/questions/mobile/switch/index.native.tsx"],"names":["React","useCallback","View","StyleSheet","QuestionChoice","Space","QuestionDraggable","QuestionTemplate","QuestionSlider","FreeText","useTemplateContext","ANALYTICS_EVENT_TYPE","styleSheet","create","cards","flexDirection","alignItems","card","flex","Switch","props","templateContext","analytics","type","template","isDisabled","items","userChoices","min","max","unit","value","step","onSliderChange","onItemPress","onItemInputChange","onInputValueChange","focusedSelectId","handleFocus","handleBlur","isSelected","choice","includes","label","handleItemPress","item","handleItemInputChange","_value","handleSlidingComplete","logEvent","SLIDE","id","questionType","map","index","_id","media","undefined"],"mappings":"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","sourcesContent":["import React, {useCallback} from 'react';\nimport {View, StyleSheet} from 'react-native';\n\nimport QuestionChoice from '../../../../atom/choice/index.native';\nimport Space from '../../../../atom/space/index.native';\nimport QuestionDraggable from '../draggable/index.native';\nimport QuestionTemplate from '../template/index.native';\nimport QuestionSlider from '../slider/index.native';\nimport FreeText from '../../free-text/index.native';\n\nimport {useTemplateContext} from '../../../../template/app-review/template-context';\nimport {ANALYTICS_EVENT_TYPE} from '../../../../variables/analytics';\n\nimport {FocusedSelectId, HandleBlur, HandleFocus} from '../../../../types/app-review';\nimport type {QuestionType, Choice} from '../../../../types/progression-engine';\n\nexport interface Props {\n type: QuestionType;\n isDisabled?: boolean;\n template?: string;\n items: Array<Choice>;\n userChoices: Array<string>;\n onItemPress?: (item: Choice) => void;\n onSliderChange?: (value: number) => void;\n min?: number;\n max?: number;\n unit?: string;\n step?: number;\n value?: number;\n onItemInputChange?: (item: Choice, value: string) => void;\n onInputValueChange?: (value: string) => void;\n focusedSelectId?: FocusedSelectId;\n handleFocus?: HandleFocus;\n handleBlur?: HandleBlur;\n}\n\nconst styleSheet = StyleSheet.create({\n cards: {\n flexDirection: 'row',\n alignItems: 'stretch'\n },\n card: {\n flex: 1\n }\n});\n\nconst Switch = (props: Props) => {\n const templateContext = useTemplateContext();\n const {analytics} = templateContext;\n\n const {\n type,\n template,\n isDisabled,\n items,\n userChoices,\n min,\n max,\n unit,\n value,\n step,\n onSliderChange,\n onItemPress,\n onItemInputChange,\n onInputValueChange,\n focusedSelectId,\n handleFocus,\n handleBlur\n } = props;\n\n const isSelected = (choice: Choice): boolean => userChoices && userChoices.includes(choice.label);\n\n const handleItemPress = (item: Choice) => () => {\n if (onItemPress) {\n onItemPress(item);\n }\n };\n\n const handleItemInputChange = useCallback(\n (item: Choice, _value: string) => {\n if (onItemInputChange) {\n onItemInputChange(item, _value);\n }\n },\n [onItemInputChange]\n );\n\n const handleSlidingComplete = useCallback(\n _value => {\n analytics &&\n analytics.logEvent(ANALYTICS_EVENT_TYPE.SLIDE, {\n id: 'slider',\n questionType: 'slider'\n });\n\n if (onSliderChange) {\n onSliderChange(_value);\n }\n },\n [analytics, onSliderChange]\n );\n\n switch (type) {\n case 'qcm':\n return (\n <View testID=\"question-choices\">\n {items.map((item, index) => (\n <View key={`question-choice-${item._id}`}>\n {index > 0 ? <Space /> : null}\n <QuestionChoice\n onPress={handleItemPress(item)}\n isDisabled={isDisabled}\n isSelected={isSelected(item)}\n testID={`question-choice-${item._id}`}\n questionType={type}\n >\n {item.label}\n </QuestionChoice>\n </View>\n ))}\n </View>\n );\n case 'qcmGraphic':\n return (\n <View testID=\"question-choices\">\n {items.map((item, index) => {\n return (\n <View key={`question-choice-row-${item._id}`}>\n {index > 0 ? <Space /> : null}\n <View style={styleSheet.cards}>\n <QuestionChoice\n onPress={handleItemPress(item)}\n media={item.media}\n isDisabled={isDisabled}\n isSelected={isSelected(item)}\n testID={`question-choice-${item._id}`}\n style={styleSheet.card}\n questionType={type}\n >\n {item.label}\n </QuestionChoice>\n <Space />\n </View>\n </View>\n );\n })}\n </View>\n );\n case 'slider': {\n if (min === undefined || max === undefined) {\n return <View />;\n }\n\n return (\n <QuestionSlider\n min={min}\n max={max}\n unit={unit}\n value={value}\n step={step}\n onSlidingComplete={handleSlidingComplete}\n testID=\"question-slider\"\n />\n );\n }\n case 'template':\n if (handleBlur === undefined || handleFocus === undefined || focusedSelectId === undefined) {\n return <View />;\n }\n\n return (\n <View testID=\"question-choices\">\n <QuestionTemplate\n isDisabled={isDisabled}\n template={template || ''}\n items={items}\n userChoices={userChoices}\n onInputChange={handleItemInputChange}\n handleBlur={handleBlur}\n handleFocus={handleFocus}\n focusedSelectId={focusedSelectId}\n />\n </View>\n );\n case 'qcmDrag':\n if (!onItemPress) {\n return <View />;\n }\n\n return (\n <View testID=\"question-draggable\">\n <QuestionDraggable choices={items} userChoices={userChoices} onPress={onItemPress} />\n </View>\n );\n case 'basic':\n if (!onInputValueChange) {\n return <View />;\n }\n\n return (\n <FreeText\n fullWidth\n onChange={onInputValueChange}\n testID=\"question-input-text\"\n questionType=\"basic\"\n isDisabled={isDisabled}\n />\n );\n default:\n return <View />;\n }\n};\n\nexport default Switch;\n"],"file":"index.native.js"}
1
+ {"version":3,"sources":["../../../../../src/molecule/questions/mobile/switch/index.native.tsx"],"names":["React","useCallback","View","StyleSheet","Text","QuestionChoice","QuestionDraggable","QuestionTemplate","QuestionSlider","FreeText","useTemplateContext","ANALYTICS_EVENT_TYPE","styleSheet","create","cards","flexDirection","alignItems","card","flex","choices","choice","paddingVertical","Switch","props","templateContext","analytics","store","focusedSelectId","handleBlur","handleFocus","type","template","isDisabled","min","max","unit","value","step","onSliderChange","onItemPress","onItemInputChange","onInputValueChange","handleChoicePress","onPress","handleItemInputChange","_value","handleSlidingComplete","logEvent","SLIDE","id","questionType","map","index","_id","selected","label","media","undefined","console","warn"],"mappings":"AAAA,OAAOA,KAAP,IAAeC,WAAf,QAAiC,OAAjC;AACA,SAAQC,IAAR,EAAcC,UAAd,EAA0BC,IAA1B,QAAqC,cAArC;AAEA,OAAOC,cAAP,MAA2B,sCAA3B;AACA,OAAOC,iBAAP,MAA8B,2BAA9B;AACA,OAAOC,gBAAP,MAA6B,0BAA7B;AACA,OAAOC,cAAP,MAA2B,wBAA3B;AACA,OAAOC,QAAP,MAAqB,8BAArB;AAEA,SAAQC,kBAAR,QAAiC,kDAAjC;AACA,SAAQC,oBAAR,QAAmC,iCAAnC;AAqBA,MAAMC,UAAU,GAAGT,UAAU,CAACU,MAAX,CAAkB;AACnCC,EAAAA,KAAK,EAAE;AACLC,IAAAA,aAAa,EAAE,KADV;AAELC,IAAAA,UAAU,EAAE;AAFP,GAD4B;AAKnCC,EAAAA,IAAI,EAAE;AACJC,IAAAA,IAAI,EAAE;AADF,GAL6B;AAQnCC,EAAAA,OAAO,EAAE,CACP;AADO,GAR0B;AAWnCC,EAAAA,MAAM,EAAE;AACNC,IAAAA,eAAe,EAAE;AADX;AAX2B,CAAlB,CAAnB;;AAgBA,MAAMC,MAAM,GAAIC,KAAD,IAAkB;AAC/B,QAAMC,eAAe,GAAGd,kBAAkB,EAA1C;AACA,QAAM;AAACe,IAAAA,SAAD;AAAYC,IAAAA;AAAZ,MAAqBF,eAA3B;AACA,QAAM;AAACG,IAAAA,eAAD;AAAkBC,IAAAA,UAAlB;AAA8BC,IAAAA;AAA9B,MAA6CH,KAAnD;AAEA,QAAM;AACJI,IAAAA,IADI;AAEJC,IAAAA,QAFI;AAGJC,IAAAA,UAHI;AAIJb,IAAAA,OAAO,GAAG,EAJN;AAKJc,IAAAA,GALI;AAMJC,IAAAA,GANI;AAOJC,IAAAA,IAPI;AAQJC,IAAAA,KARI;AASJC,IAAAA,IATI;AAUJC,IAAAA,cAVI;AAWJC,IAAAA,WAXI;AAYJC,IAAAA,iBAZI;AAaJC,IAAAA;AAbI,MAcFlB,KAdJ;AAgBA,QAAMmB,iBAAiB,GAAGzC,WAAW,CAClCmB,MAAD,IAAoB,MAAM;AACxB,QAAIA,MAAM,CAACuB,OAAX,EAAoB;AAClB;AACAvB,MAAAA,MAAM,CAACuB,OAAP;AACD,KAHD,MAGO,IAAIJ,WAAJ,EAAiB;AACtB;AACAA,MAAAA,WAAW,CAACnB,MAAD,CAAX;AACD;AACF,GATkC,EAUnC,CAACmB,WAAD,CAVmC,CAArC;AAaA,QAAMK,qBAAqB,GAAG3C,WAAW,CACvC,CAACmB,MAAD,EAAiByB,MAAjB,KAAoC;AAClC,QAAIzB,MAAM,CAACuB,OAAX,EAAoB;AAClB;AACAvB,MAAAA,MAAM,CAACuB,OAAP,CAAeE,MAAf;AACD,KAHD,MAGO,IAAIL,iBAAJ,EAAuB;AAC5B;AACAA,MAAAA,iBAAiB,CAACpB,MAAD,EAASyB,MAAT,CAAjB;AACD;AACF,GATsC,EAUvC,CAACL,iBAAD,CAVuC,CAAzC;AAaA,QAAMM,qBAAqB,GAAG7C,WAAW,CACvC4C,MAAM,IAAI;AACRpB,IAAAA,SAAS,IACPA,SAAS,CAACsB,QAAV,CAAmBpC,oBAAoB,CAACqC,KAAxC,EAA+C;AAC7CC,MAAAA,EAAE,EAAE,QADyC;AAE7CC,MAAAA,YAAY,EAAE;AAF+B,KAA/C,CADF;;AAMA,QAAIZ,cAAJ,EAAoB;AAClBA,MAAAA,cAAc,CAACO,MAAD,CAAd;AACD;AACF,GAXsC,EAYvC,CAACpB,SAAD,EAAYa,cAAZ,CAZuC,CAAzC;;AAeA,UAAQR,IAAR;AACE,SAAK,KAAL;AACE,0BACE,oBAAC,IAAD;AAAM,QAAA,MAAM,EAAC,kBAAb;AAAgC,QAAA,KAAK,EAAElB,UAAU,CAACO;AAAlD,SACGA,OAAO,CAACgC,GAAR,CAAY,CAAC/B,MAAD,EAASgC,KAAT,kBACX,oBAAC,cAAD;AACE,QAAA,GAAG,EAAG,mBAAkBhC,MAAM,CAACiC,GAAI,EADrC;AAEE,QAAA,OAAO,EAAEX,iBAAiB,CAACtB,MAAD,CAF5B;AAGE,QAAA,UAAU,EAAEY,UAHd;AAIE,QAAA,UAAU,EAAEZ,MAAM,CAACkC,QAJrB;AAKE,QAAA,MAAM,EAAG,mBAAkBlC,MAAM,CAACiC,GAAI,EALxC;AAME,QAAA,KAAK,EAAEzC,UAAU,CAACQ,MANpB;AAOE,QAAA,YAAY,EAAEU;AAPhB,SASGV,MAAM,CAACmC,KATV,CADD,CADH,CADF;;AAiBF,SAAK,YAAL;AACE,0BACE,oBAAC,IAAD;AAAM,QAAA,MAAM,EAAC,kBAAb;AAAgC,QAAA,KAAK,EAAE3C,UAAU,CAACO;AAAlD,SACGA,OAAO,CAACgC,GAAR,CAAY,CAAC/B,MAAD,EAASgC,KAAT,kBACX,oBAAC,cAAD;AACE,QAAA,GAAG,EAAG,mBAAkBhC,MAAM,CAACiC,GAAI,EADrC;AAEE,QAAA,OAAO,EAAEX,iBAAiB,CAACtB,MAAD,CAF5B;AAGE,QAAA,KAAK,EAAEA,MAAM,CAACoC,KAHhB;AAIE,QAAA,UAAU,EAAExB,UAJd;AAKE,QAAA,UAAU,EAAEZ,MAAM,CAACkC,QALrB;AAME,QAAA,MAAM,EAAG,mBAAkBlC,MAAM,CAACiC,GAAI,EANxC;AAOE,QAAA,KAAK,EAAEzC,UAAU,CAACQ,MAPpB;AAQE,QAAA,YAAY,EAAEU;AARhB,SAUGV,MAAM,CAACmC,KAVV,CADD,CADH,CADF;;AAkBF,SAAK,QAAL;AAAe;AACb,YAAItB,GAAG,KAAKwB,SAAR,IAAqBvB,GAAG,KAAKuB,SAAjC,EAA4C;AAC1C,8BAAO,oBAAC,IAAD,OAAP;AACD;;AAED,4BACE,oBAAC,cAAD;AACE,UAAA,GAAG,EAAExB,GADP;AAEE,UAAA,GAAG,EAAEC,GAFP;AAGE,UAAA,IAAI,EAAEC,IAHR;AAIE,UAAA,KAAK,EAAEC,KAJT;AAKE,UAAA,IAAI,EAAEC,IALR;AAME,UAAA,iBAAiB,EAAES,qBANrB;AAOE,UAAA,MAAM,EAAC;AAPT,UADF;AAWD;;AACD,SAAK,UAAL;AACE,UAAIlB,UAAU,KAAK6B,SAAf,IAA4B5B,WAAW,KAAK4B,SAA5C,IAAyD9B,eAAe,KAAK8B,SAAjF,EAA4F;AAC1F;AACAC,QAAAA,OAAO,CAACC,IAAR,CAAa,mEAAb;AACA,4BAAO,oBAAC,IAAD,OAAP;AACD;;AAED,0BACE,oBAAC,IAAD;AAAM,QAAA,MAAM,EAAC;AAAb,sBACE,oBAAC,gBAAD;AACE,QAAA,UAAU,EAAE3B,UADd;AAEE,QAAA,QAAQ,EAAED,QAAQ,IAAI,EAFxB;AAGE,QAAA,OAAO,EAAEZ,OAHX;AAIE,QAAA,aAAa,EAAEyB,qBAJjB;AAKE,QAAA,UAAU,EAAEhB,UALd;AAME,QAAA,WAAW,EAAEC,WANf;AAOE,QAAA,eAAe,EAAEF;AAPnB,QADF,CADF;;AAaF,SAAK,SAAL;AACE,0BACE,oBAAC,IAAD;AAAM,QAAA,MAAM,EAAC;AAAb,sBACE,oBAAC,iBAAD;AAAmB,QAAA,OAAO,EAAER,OAA5B;AAAqC,QAAA,OAAO,EAAEuB;AAA9C,QADF,CADF;;AAKF,SAAK,OAAL;AACE,UAAI,CAACD,kBAAL,EAAyB;AACvB,4BAAO,oBAAC,IAAD,OAAP;AACD;;AAED,0BACE,oBAAC,QAAD;AACE,QAAA,SAAS,MADX;AAEE,QAAA,QAAQ,EAAEA,kBAFZ;AAGE,QAAA,MAAM,EAAC,qBAHT;AAIE,QAAA,YAAY,EAAC,OAJf;AAKE,QAAA,UAAU,EAAET;AALd,QADF;;AASF;AACE,0BACE,oBAAC,IAAD,qBACE,oBAAC,IAAD,4BAAuBF,IAAvB,CADF,CADF;AAhGJ;AAsGD,CApKD;;AAsKA,eAAeR,MAAf","sourcesContent":["import React, {useCallback} from 'react';\nimport {View, StyleSheet, Text} from 'react-native';\n\nimport QuestionChoice from '../../../../atom/choice/index.native';\nimport QuestionDraggable from '../draggable/index.native';\nimport QuestionTemplate from '../template/index.native';\nimport QuestionSlider from '../slider/index.native';\nimport FreeText from '../../free-text/index.native';\n\nimport {useTemplateContext} from '../../../../template/app-review/template-context';\nimport {ANALYTICS_EVENT_TYPE} from '../../../../variables/analytics';\n\nimport type {QuestionType, Choice} from '../../../../types/progression-engine';\n\nexport type Props = {\n type: QuestionType;\n isDisabled?: boolean;\n template?: string;\n choices?: Array<Choice>;\n min?: number;\n max?: number;\n unit?: string;\n step?: number;\n value?: number;\n onInputValueChange?: (value: string) => void;\n onSliderChange?: (value: number) => void;\n // --- mobile learner only\n onItemInputChange?: (item: Choice, value: string) => void;\n onItemPress?: (item: Choice) => void;\n};\n\nconst styleSheet = StyleSheet.create({\n cards: {\n flexDirection: 'row',\n alignItems: 'stretch'\n },\n card: {\n flex: 1\n },\n choices: {\n // backgroundColor: '#967' // flex-debug\n },\n choice: {\n paddingVertical: 5\n }\n});\n\nconst Switch = (props: Props) => {\n const templateContext = useTemplateContext();\n const {analytics, store} = templateContext;\n const {focusedSelectId, handleBlur, handleFocus} = store;\n\n const {\n type,\n template,\n isDisabled,\n choices = [],\n min,\n max,\n unit,\n value,\n step,\n onSliderChange,\n onItemPress,\n onItemInputChange,\n onInputValueChange\n } = props;\n\n const handleChoicePress = useCallback(\n (choice: Choice) => () => {\n if (choice.onPress) {\n // e.g. app-review\n choice.onPress();\n } else if (onItemPress) {\n // e.g. learner\n onItemPress(choice);\n }\n },\n [onItemPress]\n );\n\n const handleItemInputChange = useCallback(\n (choice: Choice, _value: string) => {\n if (choice.onPress) {\n // e.g. app-review\n choice.onPress(_value);\n } else if (onItemInputChange) {\n // e.g. learner\n onItemInputChange(choice, _value);\n }\n },\n [onItemInputChange]\n );\n\n const handleSlidingComplete = useCallback(\n _value => {\n analytics &&\n analytics.logEvent(ANALYTICS_EVENT_TYPE.SLIDE, {\n id: 'slider',\n questionType: 'slider'\n });\n\n if (onSliderChange) {\n onSliderChange(_value);\n }\n },\n [analytics, onSliderChange]\n );\n\n switch (type) {\n case 'qcm':\n return (\n <View testID=\"question-choices\" style={styleSheet.choices}>\n {choices.map((choice, index) => (\n <QuestionChoice\n key={`question-choice-${choice._id}`}\n onPress={handleChoicePress(choice)}\n isDisabled={isDisabled}\n isSelected={choice.selected}\n testID={`question-choice-${choice._id}`}\n style={styleSheet.choice}\n questionType={type}\n >\n {choice.label}\n </QuestionChoice>\n ))}\n </View>\n );\n case 'qcmGraphic':\n return (\n <View testID=\"question-choices\" style={styleSheet.choices}>\n {choices.map((choice, index) => (\n <QuestionChoice\n key={`question-choice-${choice._id}`}\n onPress={handleChoicePress(choice)}\n media={choice.media}\n isDisabled={isDisabled}\n isSelected={choice.selected}\n testID={`question-choice-${choice._id}`}\n style={styleSheet.choice}\n questionType={type}\n >\n {choice.label}\n </QuestionChoice>\n ))}\n </View>\n );\n case 'slider': {\n if (min === undefined || max === undefined) {\n return <View />;\n }\n\n return (\n <QuestionSlider\n min={min}\n max={max}\n unit={unit}\n value={value}\n step={step}\n onSlidingComplete={handleSlidingComplete}\n testID=\"question-slider\"\n />\n );\n }\n case 'template':\n if (handleBlur === undefined || handleFocus === undefined || focusedSelectId === undefined) {\n // eslint-disable-next-line no-console\n console.warn('type template must implement handleFocus etc within Context.store');\n return <View />;\n }\n\n return (\n <View testID=\"question-choices\">\n <QuestionTemplate\n isDisabled={isDisabled}\n template={template || ''}\n choices={choices}\n onInputChange={handleItemInputChange}\n handleBlur={handleBlur}\n handleFocus={handleFocus}\n focusedSelectId={focusedSelectId}\n />\n </View>\n );\n case 'qcmDrag':\n return (\n <View testID=\"question-draggable\">\n <QuestionDraggable choices={choices} onPress={handleChoicePress} />\n </View>\n );\n case 'basic':\n if (!onInputValueChange) {\n return <View />;\n }\n\n return (\n <FreeText\n fullWidth\n onChange={onInputValueChange}\n testID=\"question-input-text\"\n questionType=\"basic\"\n isDisabled={isDisabled}\n />\n );\n default:\n return (\n <View>\n <Text>Unhandled type: {type}</Text>\n </View>\n );\n }\n};\n\nexport default Switch;\n"],"file":"index.native.js"}
@@ -11,6 +11,7 @@ import parseTemplateString from '../../../../util/parse-template-string';
11
11
 
12
12
  const createStyleSheet = theme => ({
13
13
  section: {
14
+ // backgroundColor: '#188', // flex-debug
14
15
  width: '100%',
15
16
  flexDirection: 'row',
16
17
  flexWrap: 'wrap',
@@ -44,11 +45,10 @@ const createStyleSheet = theme => ({
44
45
 
45
46
  const Section = ({
46
47
  section,
47
- items,
48
+ choices,
48
49
  index,
49
50
  focusedSelectId,
50
51
  onInputChange,
51
- userChoices,
52
52
  handleBlur,
53
53
  handleFocus,
54
54
  isDisabled,
@@ -67,11 +67,10 @@ const Section = ({
67
67
  }, /*#__PURE__*/React.createElement(Item, {
68
68
  prefix: prefix,
69
69
  part: part,
70
- items: items,
70
+ choices: choices,
71
71
  index: id,
72
72
  focusedSelectId: focusedSelectId,
73
73
  isDisabled: isDisabled,
74
- userChoices: userChoices,
75
74
  handleBlur: handleBlur,
76
75
  handleFocus: handleFocus,
77
76
  onInputChange: onInputChange,
@@ -89,8 +88,7 @@ const Item = props => {
89
88
  prefix,
90
89
  isDisabled = false,
91
90
  focusedSelectId,
92
- items,
93
- userChoices,
91
+ choices,
94
92
  onInputChange,
95
93
  handleBlur,
96
94
  handleFocus,
@@ -102,7 +100,7 @@ const Item = props => {
102
100
  brandTheme,
103
101
  translations
104
102
  } = templateContext;
105
- const inputNames = items.map(item => item.name);
103
+ const inputNames = choices.map(choice => choice.name);
106
104
  const id = `${prefix}-part-${index + 1}`;
107
105
  const isFocused = focusedSelectId === id;
108
106
  const selectedStyle = brandTheme && {
@@ -111,11 +109,13 @@ const Item = props => {
111
109
  };
112
110
 
113
111
  if (part.type === 'answerField' && inputNames.includes(part.value)) {
114
- const itemIndex = items.findIndex(_item => _item.name === part.value);
115
- const item = items[itemIndex];
116
- const value = userChoices[itemIndex];
112
+ const choiceIndex = choices.findIndex(choice => choice.name === part.value);
113
+ const choice = choices[choiceIndex];
114
+ const {
115
+ value
116
+ } = choice;
117
117
 
118
- if (!item || !item.type || !item.name) {
118
+ if (!choice || !choice.type || !choice.name) {
119
119
  return null;
120
120
  }
121
121
 
@@ -124,34 +124,34 @@ const Item = props => {
124
124
 
125
125
  const handleInputChange = _item => _value => onInputChange(_item, _value);
126
126
 
127
- if (item.type === 'text') {
127
+ if (choice.type === 'text') {
128
128
  return /*#__PURE__*/React.createElement(View, {
129
129
  style: styles.spaced,
130
130
  testID: id
131
131
  }, /*#__PURE__*/React.createElement(FreeText, {
132
132
  key: id,
133
133
  isDisabled: isDisabled,
134
- onChange: handleInputChange(item),
134
+ onChange: handleInputChange(choice),
135
135
  value: value,
136
136
  testID: `${id}-text${selectedSuffix}${disabledSuffix}`,
137
137
  questionType: "template"
138
138
  }));
139
139
  }
140
140
 
141
- if (item.type === 'select') {
141
+ if (choice.type === 'select') {
142
142
  return /*#__PURE__*/React.createElement(View, {
143
143
  style: styles.spaced,
144
144
  testID: id
145
145
  }, /*#__PURE__*/React.createElement(Select, {
146
146
  isDisabled: isDisabled,
147
147
  questionType: "template",
148
- values: item.items,
148
+ values: choice.items,
149
149
  value: value,
150
150
  placeholder: translations.selectAnAnswer,
151
151
  isFocused: isFocused,
152
152
  onBlur: handleBlur,
153
153
  onFocus: handleFocus(id),
154
- onChange: handleInputChange(item),
154
+ onChange: handleInputChange(choice),
155
155
  textStyle: styles.text,
156
156
  style: [styles.input, value && selectedStyle],
157
157
  testID: `${id}-select${selectedSuffix}${disabledSuffix}`
@@ -171,8 +171,7 @@ const QuestionTemplate = props => {
171
171
  const {
172
172
  template,
173
173
  onInputChange,
174
- userChoices,
175
- items,
174
+ choices,
176
175
  handleBlur,
177
176
  handleFocus,
178
177
  focusedSelectId,
@@ -199,20 +198,16 @@ const QuestionTemplate = props => {
199
198
  return result.slice(0, -1).concat([section.concat([item])]);
200
199
  }, []);
201
200
  return /*#__PURE__*/React.createElement(View, {
202
- style: {
203
- flex: 1
204
- },
205
201
  testID: "question-template"
206
202
  }, sections.map((section, index) => /*#__PURE__*/React.createElement(Section, {
207
203
  key: index,
208
204
  section: section,
209
- items: items,
205
+ choices: choices,
210
206
  index: index,
211
207
  handleBlur: handleBlur,
212
208
  handleFocus: handleFocus,
213
209
  focusedSelectId: focusedSelectId,
214
210
  onInputChange: onInputChange,
215
- userChoices: userChoices,
216
211
  isDisabled: isDisabled,
217
212
  styles: styleSheet
218
213
  })));
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/molecule/questions/mobile/template/index.native.tsx"],"names":["React","useEffect","useState","View","trim","last","Html","Select","Space","FreeText","useTemplateContext","parseTemplateString","createStyleSheet","theme","section","width","flexDirection","flexWrap","justifyContent","alignItems","spaced","paddingVertical","spacing","tiny","input","padding","borderWidth","borderColor","colors","gray","lightMedium","borderRadius","radius","common","backgroundColor","white","minWidth","htmlText","color","black","fontWeight","bold","lineHeight","text","medium","fontSize","regular","textAlign","Section","items","index","focusedSelectId","onInputChange","userChoices","handleBlur","handleFocus","isDisabled","styles","prefix","map","part","id","Item","props","templateContext","brandTheme","translations","inputNames","item","name","isFocused","selectedStyle","primary","type","includes","value","itemIndex","findIndex","_item","disabledSuffix","selectedSuffix","handleInputChange","_value","selectAnAnswer","QuestionTemplate","template","styleSheet","setStylesheet","_stylesheet","parts","sections","reduce","result","slice","concat","flex"],"mappings":"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","sourcesContent":["import React, {useEffect, useState} from 'react';\nimport {View} from 'react-native';\n\nimport trim from 'lodash/fp/trim';\nimport last from 'lodash/fp/last';\n\nimport Html from '../../../../atom/html/index.native';\nimport Select from '../../../../atom/select-modal/index.native';\nimport Space from '../../../../atom/space/index.native';\nimport {FocusedSelectId, HandleBlur, HandleFocus} from '../../../../types/app-review.d';\nimport type {Choice} from '../../../../types/progression-engine.d';\nimport FreeText from '../../free-text/index.native';\nimport {useTemplateContext} from '../../../../template/app-review/template-context';\nimport {Theme} from '../../../../variables/theme.native';\nimport parseTemplateString from '../../../../util/parse-template-string';\n\nconst createStyleSheet = (theme: Theme) => ({\n section: {\n width: '100%',\n flexDirection: 'row',\n flexWrap: 'wrap',\n justifyContent: 'center',\n alignItems: 'center'\n },\n spaced: {\n paddingVertical: theme.spacing.tiny\n },\n input: {\n padding: theme.spacing.tiny,\n borderWidth: 1,\n borderColor: theme.colors.gray.lightMedium,\n borderRadius: theme.radius.common,\n backgroundColor: theme.colors.white,\n minWidth: 175\n },\n htmlText: {\n padding: theme.spacing.tiny,\n color: theme.colors.black,\n fontWeight: theme.fontWeight.bold,\n lineHeight: 30\n },\n text: {\n color: theme.colors.gray.medium,\n fontWeight: theme.fontWeight.bold,\n fontSize: theme.fontSize.regular,\n textAlign: 'center'\n }\n});\n\ntype TemplatePart = {\n type: 'string' | 'answerField';\n value: string;\n};\n\ntype SectionProps = {\n isDisabled: boolean;\n userChoices: Array<string>;\n section: Array<TemplatePart>;\n items: Array<Choice>;\n index: number;\n onInputChange: (item: Choice, value: string) => void;\n focusedSelectId: FocusedSelectId;\n handleBlur: HandleBlur;\n handleFocus: HandleFocus;\n styles: any;\n};\n\nconst Section = ({\n section,\n items,\n index,\n focusedSelectId,\n onInputChange,\n userChoices,\n handleBlur,\n handleFocus,\n isDisabled,\n styles\n}: SectionProps) => {\n const prefix = `question-section-${index + 1}`;\n\n return (\n <View style={styles.section} key={`container-${prefix}`}>\n {section.map((part, id) => {\n return (\n <View key={`${prefix}-${id}`} style={{flexDirection: 'row'}}>\n <Item\n prefix={prefix}\n part={part}\n items={items}\n index={id}\n focusedSelectId={focusedSelectId}\n isDisabled={isDisabled}\n userChoices={userChoices}\n handleBlur={handleBlur}\n handleFocus={handleFocus}\n onInputChange={onInputChange}\n styles={styles}\n />\n <Space type=\"micro\" />\n </View>\n );\n })}\n </View>\n );\n};\n\ntype ItemProps = {\n part: TemplatePart;\n items: Array<Choice>;\n index: number;\n prefix: string;\n isDisabled?: boolean;\n userChoices: Array<string>;\n onInputChange: (item: Choice, value: string) => void;\n focusedSelectId: FocusedSelectId;\n handleBlur: HandleBlur;\n handleFocus: HandleFocus;\n styles: any;\n};\n\nconst Item = (props: ItemProps) => {\n const {\n part,\n index,\n prefix,\n isDisabled = false,\n focusedSelectId,\n items,\n userChoices,\n onInputChange,\n handleBlur,\n handleFocus,\n styles\n } = props;\n\n const templateContext = useTemplateContext();\n const {theme, brandTheme, translations} = templateContext;\n\n const inputNames = items.map(item => item.name);\n const id = `${prefix}-part-${index + 1}`;\n const isFocused = focusedSelectId === id;\n\n const selectedStyle = brandTheme && {\n borderColor: brandTheme.colors.primary,\n color: brandTheme.colors.primary\n };\n\n if (part.type === 'answerField' && inputNames.includes(part.value)) {\n const itemIndex = items.findIndex(_item => _item.name === part.value);\n const item = items[itemIndex];\n const value = userChoices[itemIndex];\n\n if (!item || !item.type || !item.name) {\n return null;\n }\n\n const disabledSuffix = isDisabled ? '-disabled' : '';\n const selectedSuffix = value ? '-selected' : '';\n\n const handleInputChange = (_item: Choice) => (_value: string) => onInputChange(_item, _value);\n\n if (item.type === 'text') {\n return (\n <View style={styles.spaced} testID={id}>\n <FreeText\n key={id}\n isDisabled={isDisabled}\n onChange={handleInputChange(item)}\n value={value}\n testID={`${id}-text${selectedSuffix}${disabledSuffix}`}\n questionType=\"template\"\n />\n </View>\n );\n }\n\n if (item.type === 'select') {\n return (\n <View style={styles.spaced} testID={id}>\n <Select\n isDisabled={isDisabled}\n questionType=\"template\"\n values={item.items}\n value={value}\n placeholder={translations.selectAnAnswer}\n isFocused={isFocused}\n onBlur={handleBlur}\n onFocus={handleFocus(id)}\n onChange={handleInputChange(item)}\n textStyle={styles.text}\n style={[styles.input, value && selectedStyle]}\n testID={`${id}-select${selectedSuffix}${disabledSuffix}`}\n />\n </View>\n );\n }\n }\n\n return (\n <Html key={id} fontSize={theme.fontSize.regular} testID={id} style={styles.htmlText}>\n {trim(part.value || '')}\n </Html>\n );\n};\n\nexport type Props = {\n isDisabled?: boolean;\n template: string;\n items: Array<Choice>;\n userChoices: Array<string>;\n onInputChange: (item: Choice, value: string) => void;\n focusedSelectId: FocusedSelectId;\n handleBlur: HandleBlur;\n handleFocus: HandleFocus;\n};\n\nconst QuestionTemplate = (props: Props) => {\n const {\n template,\n onInputChange,\n userChoices,\n items,\n handleBlur,\n handleFocus,\n focusedSelectId,\n isDisabled = false\n } = props;\n\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 (!template || !styleSheet) {\n return null;\n }\n\n const parts = parseTemplateString(template);\n\n const sections: Array<Array<TemplatePart>> = parts.reduce((result, item) => {\n const section = last(result) || [];\n return result.slice(0, -1).concat([section.concat([item])]);\n }, []);\n\n return (\n <View style={{flex: 1}} testID=\"question-template\">\n {sections.map((section, index) => (\n <Section\n key={index}\n section={section}\n items={items}\n index={index}\n handleBlur={handleBlur}\n handleFocus={handleFocus}\n focusedSelectId={focusedSelectId}\n onInputChange={onInputChange}\n userChoices={userChoices}\n isDisabled={isDisabled}\n styles={styleSheet}\n />\n ))}\n </View>\n );\n};\n\nexport default QuestionTemplate;\n"],"file":"index.native.js"}
1
+ {"version":3,"sources":["../../../../../src/molecule/questions/mobile/template/index.native.tsx"],"names":["React","useEffect","useState","View","trim","last","Html","Select","Space","FreeText","useTemplateContext","parseTemplateString","createStyleSheet","theme","section","width","flexDirection","flexWrap","justifyContent","alignItems","spaced","paddingVertical","spacing","tiny","input","padding","borderWidth","borderColor","colors","gray","lightMedium","borderRadius","radius","common","backgroundColor","white","minWidth","htmlText","color","black","fontWeight","bold","lineHeight","text","medium","fontSize","regular","textAlign","Section","choices","index","focusedSelectId","onInputChange","handleBlur","handleFocus","isDisabled","styles","prefix","map","part","id","Item","props","templateContext","brandTheme","translations","inputNames","choice","name","isFocused","selectedStyle","primary","type","includes","value","choiceIndex","findIndex","disabledSuffix","selectedSuffix","handleInputChange","_item","_value","items","selectAnAnswer","QuestionTemplate","template","styleSheet","setStylesheet","_stylesheet","parts","sections","reduce","result","item","slice","concat"],"mappings":"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","sourcesContent":["import React, {useEffect, useState} from 'react';\nimport {View} from 'react-native';\n\nimport trim from 'lodash/fp/trim';\nimport last from 'lodash/fp/last';\n\nimport Html from '../../../../atom/html/index.native';\nimport Select from '../../../../atom/select-modal/index.native';\nimport Space from '../../../../atom/space/index.native';\nimport {FocusedSelectId, HandleBlur, HandleFocus} from '../../../../types/app-review.d';\nimport type {Choice} from '../../../../types/progression-engine.d';\nimport FreeText from '../../free-text/index.native';\nimport {useTemplateContext} from '../../../../template/app-review/template-context';\nimport {Theme} from '../../../../variables/theme.native';\nimport parseTemplateString from '../../../../util/parse-template-string';\n\nconst createStyleSheet = (theme: Theme) => ({\n section: {\n // backgroundColor: '#188', // flex-debug\n width: '100%',\n flexDirection: 'row',\n flexWrap: 'wrap',\n justifyContent: 'center',\n alignItems: 'center'\n },\n spaced: {\n paddingVertical: theme.spacing.tiny\n },\n input: {\n padding: theme.spacing.tiny,\n borderWidth: 1,\n borderColor: theme.colors.gray.lightMedium,\n borderRadius: theme.radius.common,\n backgroundColor: theme.colors.white,\n minWidth: 175\n },\n htmlText: {\n padding: theme.spacing.tiny,\n color: theme.colors.black,\n fontWeight: theme.fontWeight.bold,\n lineHeight: 30\n },\n text: {\n color: theme.colors.gray.medium,\n fontWeight: theme.fontWeight.bold,\n fontSize: theme.fontSize.regular,\n textAlign: 'center'\n }\n});\n\ntype TemplatePart = {\n type: 'string' | 'answerField';\n value: string;\n};\n\ntype SectionProps = {\n isDisabled: boolean;\n section: Array<TemplatePart>;\n choices: Array<Choice>;\n index: number;\n onInputChange: (item: Choice, value: string) => void;\n focusedSelectId: FocusedSelectId;\n handleBlur: HandleBlur;\n handleFocus: HandleFocus;\n styles: any;\n};\n\nconst Section = ({\n section,\n choices,\n index,\n focusedSelectId,\n onInputChange,\n handleBlur,\n handleFocus,\n isDisabled,\n styles\n}: SectionProps) => {\n const prefix = `question-section-${index + 1}`;\n\n return (\n <View style={styles.section} key={`container-${prefix}`}>\n {section.map((part, id) => {\n return (\n <View key={`${prefix}-${id}`} style={{flexDirection: 'row'}}>\n <Item\n prefix={prefix}\n part={part}\n choices={choices}\n index={id}\n focusedSelectId={focusedSelectId}\n isDisabled={isDisabled}\n handleBlur={handleBlur}\n handleFocus={handleFocus}\n onInputChange={onInputChange}\n styles={styles}\n />\n <Space type=\"micro\" />\n </View>\n );\n })}\n </View>\n );\n};\n\ntype ItemProps = {\n part: TemplatePart;\n choices: Array<Choice>;\n index: number;\n prefix: string;\n isDisabled?: boolean;\n onInputChange: (item: Choice, value: string) => void;\n focusedSelectId: FocusedSelectId;\n handleBlur: HandleBlur;\n handleFocus: HandleFocus;\n styles: any;\n};\n\nconst Item = (props: ItemProps) => {\n const {\n part,\n index,\n prefix,\n isDisabled = false,\n focusedSelectId,\n choices,\n onInputChange,\n handleBlur,\n handleFocus,\n styles\n } = props;\n\n const templateContext = useTemplateContext();\n const {theme, brandTheme, translations} = templateContext;\n\n const inputNames = choices.map(choice => choice.name);\n const id = `${prefix}-part-${index + 1}`;\n const isFocused = focusedSelectId === id;\n\n const selectedStyle = brandTheme && {\n borderColor: brandTheme.colors.primary,\n color: brandTheme.colors.primary\n };\n\n if (part.type === 'answerField' && inputNames.includes(part.value)) {\n const choiceIndex = choices.findIndex(choice => choice.name === part.value);\n const choice = choices[choiceIndex];\n const {value} = choice;\n\n if (!choice || !choice.type || !choice.name) {\n return null;\n }\n\n const disabledSuffix = isDisabled ? '-disabled' : '';\n const selectedSuffix = value ? '-selected' : '';\n\n const handleInputChange = (_item: Choice) => (_value: string) => onInputChange(_item, _value);\n\n if (choice.type === 'text') {\n return (\n <View style={styles.spaced} testID={id}>\n <FreeText\n key={id}\n isDisabled={isDisabled}\n onChange={handleInputChange(choice)}\n value={value}\n testID={`${id}-text${selectedSuffix}${disabledSuffix}`}\n questionType=\"template\"\n />\n </View>\n );\n }\n\n if (choice.type === 'select') {\n return (\n <View style={styles.spaced} testID={id}>\n <Select\n isDisabled={isDisabled}\n questionType=\"template\"\n values={choice.items}\n value={value}\n placeholder={translations.selectAnAnswer}\n isFocused={isFocused}\n onBlur={handleBlur}\n onFocus={handleFocus(id)}\n onChange={handleInputChange(choice)}\n textStyle={styles.text}\n style={[styles.input, value && selectedStyle]}\n testID={`${id}-select${selectedSuffix}${disabledSuffix}`}\n />\n </View>\n );\n }\n }\n\n return (\n <Html key={id} fontSize={theme.fontSize.regular} testID={id} style={styles.htmlText}>\n {trim(part.value || '')}\n </Html>\n );\n};\n\nexport type Props = {\n isDisabled?: boolean;\n template: string;\n choices: Array<Choice>;\n onInputChange: (item: Choice, value: string) => void;\n focusedSelectId: FocusedSelectId;\n handleBlur: HandleBlur;\n handleFocus: HandleFocus;\n};\n\nconst QuestionTemplate = (props: Props) => {\n const {\n template,\n onInputChange,\n choices,\n handleBlur,\n handleFocus,\n focusedSelectId,\n isDisabled = false\n } = props;\n\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 (!template || !styleSheet) {\n return null;\n }\n\n const parts = parseTemplateString(template);\n\n const sections: Array<Array<TemplatePart>> = parts.reduce((result, item) => {\n const section = last(result) || [];\n return result.slice(0, -1).concat([section.concat([item])]);\n }, []);\n\n return (\n <View testID=\"question-template\">\n {sections.map((section, index) => (\n <Section\n key={index}\n section={section}\n choices={choices}\n index={index}\n handleBlur={handleBlur}\n handleFocus={handleFocus}\n focusedSelectId={focusedSelectId}\n onInputChange={onInputChange}\n isDisabled={isDisabled}\n styles={styleSheet}\n />\n ))}\n </View>\n );\n};\n\nexport default QuestionTemplate;\n"],"file":"index.native.js"}
@@ -47,11 +47,13 @@ const ReviewCongrats = props => {
47
47
  }, title), /*#__PURE__*/React.createElement("div", {
48
48
  ref: container,
49
49
  className: style.containerCards
50
- }, /*#__PURE__*/React.createElement(MoleculeReviewCardCongrats, _extends({}, cardCongratsStar, {
50
+ }, cardCongratsRank ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(MoleculeReviewCardCongrats, _extends({}, cardCongratsStar, {
51
51
  className: style.cardStar
52
52
  })), /*#__PURE__*/React.createElement(MoleculeReviewCardCongrats, _extends({}, cardCongratsRank, {
53
53
  timerAnimation: 1800,
54
54
  className: style.cardRank
55
+ }))) : /*#__PURE__*/React.createElement(MoleculeReviewCardCongrats, _extends({}, cardCongratsStar, {
56
+ className: style.cardStarNoRank
55
57
  }))), /*#__PURE__*/React.createElement("div", {
56
58
  className: style.buttonContainer
57
59
  }, /*#__PURE__*/React.createElement(ButtonLink, _extends({}, buttonRevising, {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/organism/review-congrats/index.js"],"names":["React","useEffect","useRef","AtomLottieWrapper","ButtonLink","MoleculeReviewCardCongrats","style","propTypes","setScroll","container","current","scrollTo","left","behavior","ReviewCongrats","props","ariaLabel","dataName","animationLottie","title","cardCongratsStar","cardCongratsRank","buttonRevising","buttonRevisingSkill","timer","setTimeout","clearTimeout","mainContainer","lottie","ie11Backup","containerCongrats","containerCards","cardStar","cardRank","buttonContainer","buttonRevise"],"mappings":";;AAAA,OAAOA,KAAP,IAAeC,SAAf,EAA0BC,MAA1B,QAAuC,OAAvC;AACA,OAAOC,iBAAP,MAA8B,2BAA9B;AACA,OAAOC,UAAP,MAAuB,wBAAvB;AACA,OAAOC,0BAAP,MAAuC,qCAAvC;AACA,OAAOC,KAAP,MAAkB,aAAlB;AACA,OAAOC,SAAP,MAAsB,cAAtB;AAEA,OAAO,MAAMC,SAAS,GAAGC,SAAS,IAAI,MAAM;AAC1CA,EAAAA,SAAS,CAACC,OAAV,EAAmBC,QAAnB,IACEF,SAAS,CAACC,OAAV,CAAkBC,QAAlB,CAA2B;AACzBC,IAAAA,IAAI,EAAE,IADmB;AAEzBC,IAAAA,QAAQ,EAAE;AAFe,GAA3B,CADF;AAKD,CANM;;AAQP,MAAMC,cAAc,GAAGC,KAAK,IAAI;AAC9B,QAAM;AACJ,kBAAcC,SADV;AAEJ,iBAAaC,QAFT;AAGJC,IAAAA,eAHI;AAIJC,IAAAA,KAJI;AAKJC,IAAAA,gBALI;AAMJC,IAAAA,gBANI;AAOJC,IAAAA,cAPI;AAQJC,IAAAA;AARI,MASFR,KATJ;AAWA,QAAMN,SAAS,GAAGP,MAAM,CAAC,IAAD,CAAxB;AAEAD,EAAAA,SAAS,CAAC,MAAM;AACd,UAAMuB,KAAK,GAAGC,UAAU,CAACjB,SAAS,CAACC,SAAD,CAAV,EAAuB,IAAvB,CAAxB;AACA,WAAO,MAAMe,KAAK,IAAIE,YAAY,CAACF,KAAD,CAAlC;AACD,GAHQ,EAGN,EAHM,CAAT;AAKA,sBACE;AAAK,IAAA,SAAS,EAAElB,KAAK,CAACqB,aAAtB;AAAqC,kBAAYX,SAAjD;AAA4D,iBAAWC;AAAvE,kBACE,oBAAC,iBAAD,eACMC,eADN;AAEE,IAAA,IAAI,EAAE,KAFR;AAGE,IAAA,gBAAgB,EAAE,MAHpB;AAIE,IAAA,QAAQ,MAJV;AAKE,iBAAU,gBALZ;AAME,IAAA,SAAS,EAAEZ,KAAK,CAACsB,MANnB;AAOE,IAAA,oBAAoB,EAAEtB,KAAK,CAACuB;AAP9B,KADF,eAUE;AAAK,IAAA,SAAS,EAAEvB,KAAK,CAACwB;AAAtB,kBACE;AAAK,IAAA,SAAS,EAAExB,KAAK,CAACa;AAAtB,KAA8BA,KAA9B,CADF,eAEE;AAAK,IAAA,GAAG,EAAEV,SAAV;AAAqB,IAAA,SAAS,EAAEH,KAAK,CAACyB;AAAtC,kBACE,oBAAC,0BAAD,eAAgCX,gBAAhC;AAAkD,IAAA,SAAS,EAAEd,KAAK,CAAC0B;AAAnE,KADF,eAEE,oBAAC,0BAAD,eACMX,gBADN;AAEE,IAAA,cAAc,EAAE,IAFlB;AAGE,IAAA,SAAS,EAAEf,KAAK,CAAC2B;AAHnB,KAFF,CAFF,eAUE;AAAK,IAAA,SAAS,EAAE3B,KAAK,CAAC4B;AAAtB,kBACE,oBAAC,UAAD,eACMZ,cADN;AAEE,IAAA,SAAS,EAAEhB,KAAK,CAAC6B,YAFnB;AAGE,iBAAU;AAHZ,KADF,eAME,oBAAC,UAAD,eAAgBZ,mBAAhB;AAAqC,IAAA,SAAS,EAAEjB,KAAK,CAAC6B;AAAtD,KANF,CAVF,CAVF,CADF;AAgCD,CAnDD;;AAqDArB,cAAc,CAACP,SAAf,2CAA2BA,SAA3B;AAEA,eAAeO,cAAf","sourcesContent":["import React, {useEffect, useRef} from 'react';\nimport AtomLottieWrapper from '../../atom/lottie-wrapper';\nimport ButtonLink from '../../atom/button-link';\nimport MoleculeReviewCardCongrats from '../../molecule/review-card-congrats';\nimport style from './style.css';\nimport propTypes from './prop-types';\n\nexport const setScroll = container => () => {\n container.current?.scrollTo &&\n container.current.scrollTo({\n left: 1000,\n behavior: 'smooth'\n });\n};\n\nconst ReviewCongrats = props => {\n const {\n 'aria-label': ariaLabel,\n 'data-name': dataName,\n animationLottie,\n title,\n cardCongratsStar,\n cardCongratsRank,\n buttonRevising,\n buttonRevisingSkill\n } = props;\n\n const container = useRef(null);\n\n useEffect(() => {\n const timer = setTimeout(setScroll(container), 2000);\n return () => timer && clearTimeout(timer);\n }, []);\n\n return (\n <div className={style.mainContainer} aria-label={ariaLabel} data-name={dataName}>\n <AtomLottieWrapper\n {...animationLottie}\n loop={false}\n animationControl={'play'}\n autoplay\n data-name=\"lottie-wrapper\"\n className={style.lottie}\n backupImageClassName={style.ie11Backup}\n />\n <div className={style.containerCongrats}>\n <div className={style.title}>{title}</div>\n <div ref={container} className={style.containerCards}>\n <MoleculeReviewCardCongrats {...cardCongratsStar} className={style.cardStar} />\n <MoleculeReviewCardCongrats\n {...cardCongratsRank}\n timerAnimation={1800}\n className={style.cardRank}\n />\n </div>\n <div className={style.buttonContainer}>\n <ButtonLink\n {...buttonRevising}\n className={style.buttonRevise}\n data-name=\"revise-skill-link\"\n />\n <ButtonLink {...buttonRevisingSkill} className={style.buttonRevise} />\n </div>\n </div>\n </div>\n );\n};\n\nReviewCongrats.propTypes = propTypes;\n\nexport default ReviewCongrats;\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../src/organism/review-congrats/index.js"],"names":["React","useEffect","useRef","AtomLottieWrapper","ButtonLink","MoleculeReviewCardCongrats","style","propTypes","setScroll","container","current","scrollTo","left","behavior","ReviewCongrats","props","ariaLabel","dataName","animationLottie","title","cardCongratsStar","cardCongratsRank","buttonRevising","buttonRevisingSkill","timer","setTimeout","clearTimeout","mainContainer","lottie","ie11Backup","containerCongrats","containerCards","cardStar","cardRank","cardStarNoRank","buttonContainer","buttonRevise"],"mappings":";;AAAA,OAAOA,KAAP,IAAeC,SAAf,EAA0BC,MAA1B,QAAuC,OAAvC;AACA,OAAOC,iBAAP,MAA8B,2BAA9B;AACA,OAAOC,UAAP,MAAuB,wBAAvB;AACA,OAAOC,0BAAP,MAAuC,qCAAvC;AACA,OAAOC,KAAP,MAAkB,aAAlB;AACA,OAAOC,SAAP,MAAsB,cAAtB;AAEA,OAAO,MAAMC,SAAS,GAAGC,SAAS,IAAI,MAAM;AAC1CA,EAAAA,SAAS,CAACC,OAAV,EAAmBC,QAAnB,IACEF,SAAS,CAACC,OAAV,CAAkBC,QAAlB,CAA2B;AACzBC,IAAAA,IAAI,EAAE,IADmB;AAEzBC,IAAAA,QAAQ,EAAE;AAFe,GAA3B,CADF;AAKD,CANM;;AAQP,MAAMC,cAAc,GAAGC,KAAK,IAAI;AAC9B,QAAM;AACJ,kBAAcC,SADV;AAEJ,iBAAaC,QAFT;AAGJC,IAAAA,eAHI;AAIJC,IAAAA,KAJI;AAKJC,IAAAA,gBALI;AAMJC,IAAAA,gBANI;AAOJC,IAAAA,cAPI;AAQJC,IAAAA;AARI,MASFR,KATJ;AAWA,QAAMN,SAAS,GAAGP,MAAM,CAAC,IAAD,CAAxB;AAEAD,EAAAA,SAAS,CAAC,MAAM;AACd,UAAMuB,KAAK,GAAGC,UAAU,CAACjB,SAAS,CAACC,SAAD,CAAV,EAAuB,IAAvB,CAAxB;AACA,WAAO,MAAMe,KAAK,IAAIE,YAAY,CAACF,KAAD,CAAlC;AACD,GAHQ,EAGN,EAHM,CAAT;AAKA,sBACE;AAAK,IAAA,SAAS,EAAElB,KAAK,CAACqB,aAAtB;AAAqC,kBAAYX,SAAjD;AAA4D,iBAAWC;AAAvE,kBACE,oBAAC,iBAAD,eACMC,eADN;AAEE,IAAA,IAAI,EAAE,KAFR;AAGE,IAAA,gBAAgB,EAAE,MAHpB;AAIE,IAAA,QAAQ,MAJV;AAKE,iBAAU,gBALZ;AAME,IAAA,SAAS,EAAEZ,KAAK,CAACsB,MANnB;AAOE,IAAA,oBAAoB,EAAEtB,KAAK,CAACuB;AAP9B,KADF,eAUE;AAAK,IAAA,SAAS,EAAEvB,KAAK,CAACwB;AAAtB,kBACE;AAAK,IAAA,SAAS,EAAExB,KAAK,CAACa;AAAtB,KAA8BA,KAA9B,CADF,eAEE;AAAK,IAAA,GAAG,EAAEV,SAAV;AAAqB,IAAA,SAAS,EAAEH,KAAK,CAACyB;AAAtC,KACGV,gBAAgB,gBACf,uDACE,oBAAC,0BAAD,eAAgCD,gBAAhC;AAAkD,IAAA,SAAS,EAAEd,KAAK,CAAC0B;AAAnE,KADF,eAEE,oBAAC,0BAAD,eACMX,gBADN;AAEE,IAAA,cAAc,EAAE,IAFlB;AAGE,IAAA,SAAS,EAAEf,KAAK,CAAC2B;AAHnB,KAFF,CADe,gBAUf,oBAAC,0BAAD,eAAgCb,gBAAhC;AAAkD,IAAA,SAAS,EAAEd,KAAK,CAAC4B;AAAnE,KAXJ,CAFF,eAgBE;AAAK,IAAA,SAAS,EAAE5B,KAAK,CAAC6B;AAAtB,kBACE,oBAAC,UAAD,eACMb,cADN;AAEE,IAAA,SAAS,EAAEhB,KAAK,CAAC8B,YAFnB;AAGE,iBAAU;AAHZ,KADF,eAME,oBAAC,UAAD,eAAgBb,mBAAhB;AAAqC,IAAA,SAAS,EAAEjB,KAAK,CAAC8B;AAAtD,KANF,CAhBF,CAVF,CADF;AAsCD,CAzDD;;AA2DAtB,cAAc,CAACP,SAAf,2CAA2BA,SAA3B;AAEA,eAAeO,cAAf","sourcesContent":["import React, {useEffect, useRef} from 'react';\nimport AtomLottieWrapper from '../../atom/lottie-wrapper';\nimport ButtonLink from '../../atom/button-link';\nimport MoleculeReviewCardCongrats from '../../molecule/review-card-congrats';\nimport style from './style.css';\nimport propTypes from './prop-types';\n\nexport const setScroll = container => () => {\n container.current?.scrollTo &&\n container.current.scrollTo({\n left: 1000,\n behavior: 'smooth'\n });\n};\n\nconst ReviewCongrats = props => {\n const {\n 'aria-label': ariaLabel,\n 'data-name': dataName,\n animationLottie,\n title,\n cardCongratsStar,\n cardCongratsRank,\n buttonRevising,\n buttonRevisingSkill\n } = props;\n\n const container = useRef(null);\n\n useEffect(() => {\n const timer = setTimeout(setScroll(container), 2000);\n return () => timer && clearTimeout(timer);\n }, []);\n\n return (\n <div className={style.mainContainer} aria-label={ariaLabel} data-name={dataName}>\n <AtomLottieWrapper\n {...animationLottie}\n loop={false}\n animationControl={'play'}\n autoplay\n data-name=\"lottie-wrapper\"\n className={style.lottie}\n backupImageClassName={style.ie11Backup}\n />\n <div className={style.containerCongrats}>\n <div className={style.title}>{title}</div>\n <div ref={container} className={style.containerCards}>\n {cardCongratsRank ? (\n <>\n <MoleculeReviewCardCongrats {...cardCongratsStar} className={style.cardStar} />\n <MoleculeReviewCardCongrats\n {...cardCongratsRank}\n timerAnimation={1800}\n className={style.cardRank}\n />\n </>\n ) : (\n <MoleculeReviewCardCongrats {...cardCongratsStar} className={style.cardStarNoRank} />\n )}\n </div>\n <div className={style.buttonContainer}>\n <ButtonLink\n {...buttonRevising}\n className={style.buttonRevise}\n data-name=\"revise-skill-link\"\n />\n <ButtonLink {...buttonRevisingSkill} className={style.buttonRevise} />\n </div>\n </div>\n </div>\n );\n};\n\nReviewCongrats.propTypes = propTypes;\n\nexport default ReviewCongrats;\n"],"file":"index.js"}
@@ -129,6 +129,11 @@
129
129
  opacity: 0;
130
130
  }
131
131
 
132
+ .cardStarNoRank {
133
+ animation: translateYCardStar 0.5s ease-out 0.8s forwards;
134
+ opacity: 0;
135
+ }
136
+
132
137
  .cardRank {
133
138
  animation: translateCardRank 0.2s ease-in-out 2s forwards;
134
139
  position: absolute;
@@ -107,13 +107,6 @@ const QuestionContainer = props => {
107
107
  questionOrigin
108
108
  } = props;
109
109
  if (!answerUI || !questionText) return null;
110
- const answerProps = get(['model', 'choices'], answerUI) ?
111
- /* istanbul ignore next */
112
- _extends(_extends({}, answerUI), {}, {
113
- model: _extends(_extends({}, answerUI.model), {}, {
114
- answers: answerUI.model.choices
115
- })
116
- }) : answerUI;
117
110
  return /*#__PURE__*/React.createElement("div", {
118
111
  key: "content-container",
119
112
  className: style.slideContentContainer
@@ -133,7 +126,7 @@ const QuestionContainer = props => {
133
126
  }, get('help', answerUI)), /*#__PURE__*/React.createElement("div", {
134
127
  key: "answer-container",
135
128
  className: style.answerContainer
136
- }, /*#__PURE__*/React.createElement(Answer, _extends({}, answerProps, {
129
+ }, /*#__PURE__*/React.createElement(Answer, _extends({}, answerUI, {
137
130
  key: "answer"
138
131
  }))));
139
132
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/organism/review-slide/index.js"],"names":["React","useMemo","PropTypes","classnames","get","getOr","Answer","ButtonLink","Loader","ReviewCorrectionPopin","GetSkinFromContext","propTypes","style","CorrectionPopin","correctionPopinProps","slideIndex","showCorrectionPopin","animateCorrectionPopin","klf","information","label","message","next","_correctionPopinProps","onClick","console","log","type","resultLabel","correctionPopinWrapper","popinAnimation","string","bool","ValidateButton","validateButton","primarySkinColor","disabled","validateButtonProps","className","customStyle","backgroundColor","validateButtonWrapper","QuestionContainer","props","answerUI","questionText","questionOrigin","answerProps","model","answers","choices","slideContentContainer","question","__html","help","answerContainer","shape","slide","ReviewSlide","skin","loading","loadingAriaLabel","parentContentTitle","loader"],"mappings":"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","sourcesContent":["import React, {useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport get from 'lodash/fp/get';\nimport getOr from 'lodash/fp/getOr';\nimport Answer from '../../molecule/answer';\nimport ButtonLink from '../../atom/button-link';\nimport Loader from '../../atom/loader';\nimport ReviewCorrectionPopin from '../../molecule/review-correction-popin';\nimport {GetSkinFromContext} from '../../atom/provider';\nimport propTypes from './prop-types';\nimport style from './style.css';\n\nconst CorrectionPopin = ({\n correctionPopinProps,\n slideIndex,\n showCorrectionPopin,\n animateCorrectionPopin\n}) => {\n if (!showCorrectionPopin) return null;\n\n const klf = getOr({}, 'klf', correctionPopinProps);\n const information = getOr({label: '', message: ''}, 'information', correctionPopinProps);\n const next = get('next', correctionPopinProps);\n\n const _correctionPopinProps = {\n next: {\n onClick: () => {\n // eslint-disable-next-line no-console\n console.log('Next Slide');\n },\n label: next && next.label,\n 'data-name': `next-question-button-${slideIndex}`,\n 'aria-label': next && next['aria-label']\n },\n klf,\n information,\n type: correctionPopinProps.type,\n resultLabel: correctionPopinProps.resultLabel\n };\n\n return (\n <div\n className={classnames(\n style.correctionPopinWrapper,\n animateCorrectionPopin ? style.popinAnimation : null\n )}\n >\n <ReviewCorrectionPopin {..._correctionPopinProps} />\n </div>\n );\n};\n\nCorrectionPopin.propTypes = {\n slideIndex: PropTypes.string,\n showCorrectionPopin: PropTypes.bool,\n animateCorrectionPopin: PropTypes.bool,\n correctionPopinProps: propTypes.correctionPopinProps\n};\n\nconst ValidateButton = ({slideIndex, validateButton, primarySkinColor}) => {\n const {label, onClick, disabled} = validateButton;\n const validateButtonProps = {\n type: 'primary',\n label,\n 'aria-label': label,\n 'data-name': `slide-validate-button-${slideIndex}`,\n onClick,\n disabled,\n className: style.validateButton,\n customStyle: {\n backgroundColor: primarySkinColor\n }\n /*\n slide validation action, this will trigger the correction popin\n (with the useEffect that fires the dispatchers, if there is a nextContent content,\n it will be loaded here) but will not trigger any animations unless the endReview\n signal is received (all slide will disappear, also fired in a useEffect),\n\n if it is the last slide and the content needs to be different, then that update will\n be handled on the next slide logic but the content will be carried from here.\n onClick: async () => {\n // endReview based on nextContent ref exit node values: 'successExitNode' : 'failExitNode'\n await validateSlide();\n },\n */\n };\n\n return (\n <div key=\"button-wrapper\" className={style.validateButtonWrapper}>\n <ButtonLink {...validateButtonProps} />\n </div>\n );\n};\n\nValidateButton.propTypes = {\n slideIndex: PropTypes.string,\n validateButton: propTypes.validateButton,\n primarySkinColor: PropTypes.string\n};\n\nconst QuestionContainer = props => {\n const {answerUI, questionText, questionOrigin} = props;\n if (!answerUI || !questionText) return null;\n\n const answerProps = get(['model', 'choices'], answerUI)\n ? /* istanbul ignore next */ {\n ...answerUI,\n model: {\n ...answerUI.model,\n answers: answerUI.model.choices\n }\n }\n : answerUI;\n\n return (\n <div key=\"content-container\" className={style.slideContentContainer}>\n <div key=\"from-course\" className={style.questionOrigin}>\n {questionOrigin}\n </div>\n <div\n key=\"title\"\n className={style.question}\n // eslint-disable-next-line react/no-danger\n dangerouslySetInnerHTML={{__html: questionText}}\n />\n <div key=\"help\" className={style.help}>\n {get('help', answerUI)}\n </div>\n <div key=\"answer-container\" className={style.answerContainer}>\n <Answer {...answerProps} key=\"answer\" />\n </div>\n </div>\n );\n};\n\nQuestionContainer.propTypes = {\n answerUI: PropTypes.shape(propTypes.slide.answerUI),\n questionText: PropTypes.string,\n questionOrigin: PropTypes.string\n};\n\nconst ReviewSlide = props => {\n const {slide, validateButton, correctionPopinProps, slideIndex = '0'} = props;\n\n const skin = GetSkinFromContext();\n const primarySkinColor = useMemo(() => getOr('#00B0FF', 'common.primary', skin), [skin]);\n const {\n loading,\n loadingAriaLabel,\n parentContentTitle,\n questionText,\n answerUI,\n showCorrectionPopin,\n animateCorrectionPopin\n } = slide;\n\n return (\n <div data-name={`slide-container`} className={style.slide}>\n {loading ? (\n <Loader className={style.loader} theme=\"default\" aria-label={loadingAriaLabel} />\n ) : (\n [\n <QuestionContainer\n questionOrigin={parentContentTitle}\n questionText={questionText}\n answerUI={answerUI}\n key=\"question-container\"\n />,\n <ValidateButton\n slideIndex={slideIndex}\n validateButton={validateButton}\n primarySkinColor={primarySkinColor}\n key=\"validate-button\"\n />,\n <CorrectionPopin\n correctionPopinProps={correctionPopinProps}\n slideIndex={slideIndex}\n showCorrectionPopin={showCorrectionPopin}\n animateCorrectionPopin={animateCorrectionPopin}\n key=\"correction-popin\"\n />\n ]\n )}\n </div>\n );\n};\n\nReviewSlide.propTypes = propTypes;\n\nexport default ReviewSlide;\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../src/organism/review-slide/index.js"],"names":["React","useMemo","PropTypes","classnames","get","getOr","Answer","ButtonLink","Loader","ReviewCorrectionPopin","GetSkinFromContext","propTypes","style","CorrectionPopin","correctionPopinProps","slideIndex","showCorrectionPopin","animateCorrectionPopin","klf","information","label","message","next","_correctionPopinProps","onClick","console","log","type","resultLabel","correctionPopinWrapper","popinAnimation","string","bool","ValidateButton","validateButton","primarySkinColor","disabled","validateButtonProps","className","customStyle","backgroundColor","validateButtonWrapper","QuestionContainer","props","answerUI","questionText","questionOrigin","slideContentContainer","question","__html","help","answerContainer","shape","slide","ReviewSlide","skin","loading","loadingAriaLabel","parentContentTitle","loader"],"mappings":";;AAAA,OAAOA,KAAP,IAAeC,OAAf,QAA6B,OAA7B;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,OAAOC,GAAP,MAAgB,eAAhB;AACA,OAAOC,KAAP,MAAkB,iBAAlB;AACA,OAAOC,MAAP,MAAmB,uBAAnB;AACA,OAAOC,UAAP,MAAuB,wBAAvB;AACA,OAAOC,MAAP,MAAmB,mBAAnB;AACA,OAAOC,qBAAP,MAAkC,wCAAlC;AACA,SAAQC,kBAAR,QAAiC,qBAAjC;AACA,OAAOC,SAAP,MAAsB,cAAtB;AACA,OAAOC,KAAP,MAAkB,aAAlB;;AAEA,MAAMC,eAAe,GAAG,CAAC;AACvBC,EAAAA,oBADuB;AAEvBC,EAAAA,UAFuB;AAGvBC,EAAAA,mBAHuB;AAIvBC,EAAAA;AAJuB,CAAD,KAKlB;AACJ,MAAI,CAACD,mBAAL,EAA0B,OAAO,IAAP;AAE1B,QAAME,GAAG,GAAGb,KAAK,CAAC,EAAD,EAAK,KAAL,EAAYS,oBAAZ,CAAjB;AACA,QAAMK,WAAW,GAAGd,KAAK,CAAC;AAACe,IAAAA,KAAK,EAAE,EAAR;AAAYC,IAAAA,OAAO,EAAE;AAArB,GAAD,EAA2B,aAA3B,EAA0CP,oBAA1C,CAAzB;AACA,QAAMQ,IAAI,GAAGlB,GAAG,CAAC,MAAD,EAASU,oBAAT,CAAhB;AAEA,QAAMS,qBAAqB,GAAG;AAC5BD,IAAAA,IAAI,EAAE;AACJE,MAAAA,OAAO,EAAE,MAAM;AACb;AACAC,QAAAA,OAAO,CAACC,GAAR,CAAY,YAAZ;AACD,OAJG;AAKJN,MAAAA,KAAK,EAAEE,IAAI,IAAIA,IAAI,CAACF,KALhB;AAMJ,mBAAc,wBAAuBL,UAAW,EAN5C;AAOJ,oBAAcO,IAAI,IAAIA,IAAI,CAAC,YAAD;AAPtB,KADsB;AAU5BJ,IAAAA,GAV4B;AAW5BC,IAAAA,WAX4B;AAY5BQ,IAAAA,IAAI,EAAEb,oBAAoB,CAACa,IAZC;AAa5BC,IAAAA,WAAW,EAAEd,oBAAoB,CAACc;AAbN,GAA9B;AAgBA,sBACE;AACE,IAAA,SAAS,EAAEzB,UAAU,CACnBS,KAAK,CAACiB,sBADa,EAEnBZ,sBAAsB,GAAGL,KAAK,CAACkB,cAAT,GAA0B,IAF7B;AADvB,kBAME,oBAAC,qBAAD,EAA2BP,qBAA3B,CANF,CADF;AAUD,CAtCD;;AAwCAV,eAAe,CAACF,SAAhB,2CAA4B;AAC1BI,EAAAA,UAAU,EAAEb,SAAS,CAAC6B,MADI;AAE1Bf,EAAAA,mBAAmB,EAAEd,SAAS,CAAC8B,IAFL;AAG1Bf,EAAAA,sBAAsB,EAAEf,SAAS,CAAC8B,IAHR;AAI1BlB,EAAAA,oBAAoB,EAAEH,SAAS,CAACG;AAJN,CAA5B;;AAOA,MAAMmB,cAAc,GAAG,CAAC;AAAClB,EAAAA,UAAD;AAAamB,EAAAA,cAAb;AAA6BC,EAAAA;AAA7B,CAAD,KAAoD;AACzE,QAAM;AAACf,IAAAA,KAAD;AAAQI,IAAAA,OAAR;AAAiBY,IAAAA;AAAjB,MAA6BF,cAAnC;AACA,QAAMG,mBAAmB,GAAG;AAC1BV,IAAAA,IAAI,EAAE,SADoB;AAE1BP,IAAAA,KAF0B;AAG1B,kBAAcA,KAHY;AAI1B,iBAAc,yBAAwBL,UAAW,EAJvB;AAK1BS,IAAAA,OAL0B;AAM1BY,IAAAA,QAN0B;AAO1BE,IAAAA,SAAS,EAAE1B,KAAK,CAACsB,cAPS;AAQ1BK,IAAAA,WAAW,EAAE;AACXC,MAAAA,eAAe,EAAEL;AADN;AAGb;;;;;;;;;;;;;AAX0B,GAA5B;AA0BA,sBACE;AAAK,IAAA,GAAG,EAAC,gBAAT;AAA0B,IAAA,SAAS,EAAEvB,KAAK,CAAC6B;AAA3C,kBACE,oBAAC,UAAD,EAAgBJ,mBAAhB,CADF,CADF;AAKD,CAjCD;;AAmCAJ,cAAc,CAACtB,SAAf,2CAA2B;AACzBI,EAAAA,UAAU,EAAEb,SAAS,CAAC6B,MADG;AAEzBG,EAAAA,cAAc,EAAEvB,SAAS,CAACuB,cAFD;AAGzBC,EAAAA,gBAAgB,EAAEjC,SAAS,CAAC6B;AAHH,CAA3B;;AAMA,MAAMW,iBAAiB,GAAGC,KAAK,IAAI;AACjC,QAAM;AAACC,IAAAA,QAAD;AAAWC,IAAAA,YAAX;AAAyBC,IAAAA;AAAzB,MAA2CH,KAAjD;AACA,MAAI,CAACC,QAAD,IAAa,CAACC,YAAlB,EAAgC,OAAO,IAAP;AAEhC,sBACE;AAAK,IAAA,GAAG,EAAC,mBAAT;AAA6B,IAAA,SAAS,EAAEjC,KAAK,CAACmC;AAA9C,kBACE;AAAK,IAAA,GAAG,EAAC,aAAT;AAAuB,IAAA,SAAS,EAAEnC,KAAK,CAACkC;AAAxC,KACGA,cADH,CADF,eAIE;AACE,IAAA,GAAG,EAAC,OADN;AAEE,IAAA,SAAS,EAAElC,KAAK,CAACoC,QAFnB,CAGE;AAHF;AAIE,IAAA,uBAAuB,EAAE;AAACC,MAAAA,MAAM,EAAEJ;AAAT;AAJ3B,IAJF,eAUE;AAAK,IAAA,GAAG,EAAC,MAAT;AAAgB,IAAA,SAAS,EAAEjC,KAAK,CAACsC;AAAjC,KACG9C,GAAG,CAAC,MAAD,EAASwC,QAAT,CADN,CAVF,eAaE;AAAK,IAAA,GAAG,EAAC,kBAAT;AAA4B,IAAA,SAAS,EAAEhC,KAAK,CAACuC;AAA7C,kBACE,oBAAC,MAAD,eAAYP,QAAZ;AAAsB,IAAA,GAAG,EAAC;AAA1B,KADF,CAbF,CADF;AAmBD,CAvBD;;AAyBAF,iBAAiB,CAAC/B,SAAlB,2CAA8B;AAC5BiC,EAAAA,QAAQ,EAAE1C,SAAS,CAACkD,KAAV,CAAgBzC,SAAS,CAAC0C,KAAV,CAAgBT,QAAhC,CADkB;AAE5BC,EAAAA,YAAY,EAAE3C,SAAS,CAAC6B,MAFI;AAG5Be,EAAAA,cAAc,EAAE5C,SAAS,CAAC6B;AAHE,CAA9B;;AAMA,MAAMuB,WAAW,GAAGX,KAAK,IAAI;AAC3B,QAAM;AAACU,IAAAA,KAAD;AAAQnB,IAAAA,cAAR;AAAwBpB,IAAAA,oBAAxB;AAA8CC,IAAAA,UAAU,GAAG;AAA3D,MAAkE4B,KAAxE;AAEA,QAAMY,IAAI,GAAG7C,kBAAkB,EAA/B;AACA,QAAMyB,gBAAgB,GAAGlC,OAAO,CAAC,MAAMI,KAAK,CAAC,SAAD,EAAY,gBAAZ,EAA8BkD,IAA9B,CAAZ,EAAiD,CAACA,IAAD,CAAjD,CAAhC;AACA,QAAM;AACJC,IAAAA,OADI;AAEJC,IAAAA,gBAFI;AAGJC,IAAAA,kBAHI;AAIJb,IAAAA,YAJI;AAKJD,IAAAA,QALI;AAMJ5B,IAAAA,mBANI;AAOJC,IAAAA;AAPI,MAQFoC,KARJ;AAUA,sBACE;AAAK,iBAAY,iBAAjB;AAAmC,IAAA,SAAS,EAAEzC,KAAK,CAACyC;AAApD,KACGG,OAAO,gBACN,oBAAC,MAAD;AAAQ,IAAA,SAAS,EAAE5C,KAAK,CAAC+C,MAAzB;AAAiC,IAAA,KAAK,EAAC,SAAvC;AAAiD,kBAAYF;AAA7D,IADM,GAGN,cACE,oBAAC,iBAAD;AACE,IAAA,cAAc,EAAEC,kBADlB;AAEE,IAAA,YAAY,EAAEb,YAFhB;AAGE,IAAA,QAAQ,EAAED,QAHZ;AAIE,IAAA,GAAG,EAAC;AAJN,IADF,eAOE,oBAAC,cAAD;AACE,IAAA,UAAU,EAAE7B,UADd;AAEE,IAAA,cAAc,EAAEmB,cAFlB;AAGE,IAAA,gBAAgB,EAAEC,gBAHpB;AAIE,IAAA,GAAG,EAAC;AAJN,IAPF,eAaE,oBAAC,eAAD;AACE,IAAA,oBAAoB,EAAErB,oBADxB;AAEE,IAAA,UAAU,EAAEC,UAFd;AAGE,IAAA,mBAAmB,EAAEC,mBAHvB;AAIE,IAAA,sBAAsB,EAAEC,sBAJ1B;AAKE,IAAA,GAAG,EAAC;AALN,IAbF,CAJJ,CADF;AA6BD,CA5CD;;AA8CAqC,WAAW,CAAC3C,SAAZ,2CAAwBA,SAAxB;AAEA,eAAe2C,WAAf","sourcesContent":["import React, {useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport get from 'lodash/fp/get';\nimport getOr from 'lodash/fp/getOr';\nimport Answer from '../../molecule/answer';\nimport ButtonLink from '../../atom/button-link';\nimport Loader from '../../atom/loader';\nimport ReviewCorrectionPopin from '../../molecule/review-correction-popin';\nimport {GetSkinFromContext} from '../../atom/provider';\nimport propTypes from './prop-types';\nimport style from './style.css';\n\nconst CorrectionPopin = ({\n correctionPopinProps,\n slideIndex,\n showCorrectionPopin,\n animateCorrectionPopin\n}) => {\n if (!showCorrectionPopin) return null;\n\n const klf = getOr({}, 'klf', correctionPopinProps);\n const information = getOr({label: '', message: ''}, 'information', correctionPopinProps);\n const next = get('next', correctionPopinProps);\n\n const _correctionPopinProps = {\n next: {\n onClick: () => {\n // eslint-disable-next-line no-console\n console.log('Next Slide');\n },\n label: next && next.label,\n 'data-name': `next-question-button-${slideIndex}`,\n 'aria-label': next && next['aria-label']\n },\n klf,\n information,\n type: correctionPopinProps.type,\n resultLabel: correctionPopinProps.resultLabel\n };\n\n return (\n <div\n className={classnames(\n style.correctionPopinWrapper,\n animateCorrectionPopin ? style.popinAnimation : null\n )}\n >\n <ReviewCorrectionPopin {..._correctionPopinProps} />\n </div>\n );\n};\n\nCorrectionPopin.propTypes = {\n slideIndex: PropTypes.string,\n showCorrectionPopin: PropTypes.bool,\n animateCorrectionPopin: PropTypes.bool,\n correctionPopinProps: propTypes.correctionPopinProps\n};\n\nconst ValidateButton = ({slideIndex, validateButton, primarySkinColor}) => {\n const {label, onClick, disabled} = validateButton;\n const validateButtonProps = {\n type: 'primary',\n label,\n 'aria-label': label,\n 'data-name': `slide-validate-button-${slideIndex}`,\n onClick,\n disabled,\n className: style.validateButton,\n customStyle: {\n backgroundColor: primarySkinColor\n }\n /*\n slide validation action, this will trigger the correction popin\n (with the useEffect that fires the dispatchers, if there is a nextContent content,\n it will be loaded here) but will not trigger any animations unless the endReview\n signal is received (all slide will disappear, also fired in a useEffect),\n\n if it is the last slide and the content needs to be different, then that update will\n be handled on the next slide logic but the content will be carried from here.\n onClick: async () => {\n // endReview based on nextContent ref exit node values: 'successExitNode' : 'failExitNode'\n await validateSlide();\n },\n */\n };\n\n return (\n <div key=\"button-wrapper\" className={style.validateButtonWrapper}>\n <ButtonLink {...validateButtonProps} />\n </div>\n );\n};\n\nValidateButton.propTypes = {\n slideIndex: PropTypes.string,\n validateButton: propTypes.validateButton,\n primarySkinColor: PropTypes.string\n};\n\nconst QuestionContainer = props => {\n const {answerUI, questionText, questionOrigin} = props;\n if (!answerUI || !questionText) return null;\n\n return (\n <div key=\"content-container\" className={style.slideContentContainer}>\n <div key=\"from-course\" className={style.questionOrigin}>\n {questionOrigin}\n </div>\n <div\n key=\"title\"\n className={style.question}\n // eslint-disable-next-line react/no-danger\n dangerouslySetInnerHTML={{__html: questionText}}\n />\n <div key=\"help\" className={style.help}>\n {get('help', answerUI)}\n </div>\n <div key=\"answer-container\" className={style.answerContainer}>\n <Answer {...answerUI} key=\"answer\" />\n </div>\n </div>\n );\n};\n\nQuestionContainer.propTypes = {\n answerUI: PropTypes.shape(propTypes.slide.answerUI),\n questionText: PropTypes.string,\n questionOrigin: PropTypes.string\n};\n\nconst ReviewSlide = props => {\n const {slide, validateButton, correctionPopinProps, slideIndex = '0'} = props;\n\n const skin = GetSkinFromContext();\n const primarySkinColor = useMemo(() => getOr('#00B0FF', 'common.primary', skin), [skin]);\n const {\n loading,\n loadingAriaLabel,\n parentContentTitle,\n questionText,\n answerUI,\n showCorrectionPopin,\n animateCorrectionPopin\n } = slide;\n\n return (\n <div data-name={`slide-container`} className={style.slide}>\n {loading ? (\n <Loader className={style.loader} theme=\"default\" aria-label={loadingAriaLabel} />\n ) : (\n [\n <QuestionContainer\n questionOrigin={parentContentTitle}\n questionText={questionText}\n answerUI={answerUI}\n key=\"question-container\"\n />,\n <ValidateButton\n slideIndex={slideIndex}\n validateButton={validateButton}\n primarySkinColor={primarySkinColor}\n key=\"validate-button\"\n />,\n <CorrectionPopin\n correctionPopinProps={correctionPopinProps}\n slideIndex={slideIndex}\n showCorrectionPopin={showCorrectionPopin}\n animateCorrectionPopin={animateCorrectionPopin}\n key=\"correction-popin\"\n />\n ]\n )}\n </div>\n );\n};\n\nReviewSlide.propTypes = propTypes;\n\nexport default ReviewSlide;\n"],"file":"index.js"}
@@ -0,0 +1,213 @@
1
+ import React, { useEffect, useState } from 'react';
2
+ import { StyleSheet, useWindowDimensions, View } from 'react-native';
3
+ import get from 'lodash/fp/get';
4
+ import getOr from 'lodash/fp/getOr';
5
+ import Text from '../../atom/text/index.native';
6
+ import Answer from '../../molecule/answer/index.native'; // import Loader from '../../atom/loader';
7
+ // import ReviewCorrectionPopin from '../../molecule/review-correction-popin';
8
+
9
+ import { useTemplateContext } from '../../template/app-review/template-context';
10
+ import Touchable from '../../hoc/touchable/index.native';
11
+
12
+ const CorrectionPopin = ({
13
+ correctionPopinProps,
14
+ slideIndex,
15
+ showCorrectionPopin,
16
+ animateCorrectionPopin
17
+ }) => {
18
+ if (!showCorrectionPopin) return null;
19
+ const klf = getOr({}, 'klf', correctionPopinProps);
20
+ const information = getOr({
21
+ label: '',
22
+ message: ''
23
+ }, 'information', correctionPopinProps);
24
+ const next = get('next', correctionPopinProps);
25
+ const _correctionPopinProps = {
26
+ next: {
27
+ onClick: () => {
28
+ // eslint-disable-next-line no-console
29
+ console.log('Next Slide');
30
+ },
31
+ label: next && next.label,
32
+ 'data-name': `next-question-button-${slideIndex}`,
33
+ 'aria-label': next && next['aria-label']
34
+ },
35
+ klf,
36
+ information,
37
+ type: correctionPopinProps.type,
38
+ resultLabel: correctionPopinProps.resultLabel
39
+ };
40
+ return /*#__PURE__*/React.createElement(Text, null, "ReviewCorrectionPopin") // <ReviewCorrectionPopin {..._correctionPopinProps} />
41
+ ;
42
+ }; // const ValidateButton = ({slideIndex, validateButton, primarySkinColor}) => {
43
+ // const {label, onClick, disabled} = validateButton;
44
+ // const validateButtonProps = {
45
+ // type: 'primary',
46
+ // label,
47
+ // 'aria-label': label,
48
+ // 'data-name': `slide-validate-button-${slideIndex}`,
49
+ // onClick,
50
+ // disabled,
51
+ // customStyle: {
52
+ // backgroundColor: primarySkinColor
53
+ // }
54
+ // };
55
+ // return <Button title="validate todo" />;
56
+ // };
57
+
58
+
59
+ const createQuestionStyle = (theme, brandTheme) => StyleSheet.create({
60
+ questionHeading: {
61
+ // backgroundColor: '#f00', // flex-debug
62
+ justifyContent: 'space-between'
63
+ },
64
+ questionOrigin: {
65
+ fontSize: 12,
66
+ lineHeight: 16,
67
+ color: theme.colors.text.primary,
68
+ marginBottom: theme.spacing.tiny,
69
+ marginTop: theme.spacing.small,
70
+ textAlign: 'center'
71
+ },
72
+ questionText: {
73
+ fontSize: 16,
74
+ lineHeight: 22,
75
+ fontWeight: '700',
76
+ color: theme.colors.text.primary,
77
+ textAlign: 'center'
78
+ },
79
+ questionHelp: {
80
+ // backgroundColor: '#38295b', // flex-debug
81
+ fontSize: 12,
82
+ lineHeight: 16,
83
+ color: theme.colors.gray.medium,
84
+ marginBottom: 0,
85
+ marginTop: theme.spacing.small,
86
+ textAlign: 'center'
87
+ },
88
+ choicesContainer: {
89
+ flex: 1,
90
+ width: '100%',
91
+ // backgroundColor: '#ff0', // flex-debug
92
+ justifyContent: 'center'
93
+ },
94
+ validateButton: {
95
+ backgroundColor: brandTheme?.colors.primary || theme.colors.text.primary,
96
+ borderRadius: 7,
97
+ width: '100%'
98
+ },
99
+ validateButtonText: {
100
+ fontSize: 14,
101
+ lineHeight: 20,
102
+ fontWeight: '700',
103
+ color: theme.colors.white,
104
+ marginBottom: 16,
105
+ marginTop: 16,
106
+ textAlign: 'center'
107
+ }
108
+ });
109
+
110
+ const Question = props => {
111
+ const {
112
+ answerUI,
113
+ questionText,
114
+ questionOrigin
115
+ } = props;
116
+ const {
117
+ theme,
118
+ brandTheme
119
+ } = useTemplateContext();
120
+ const [style, setStyle] = useState(null);
121
+ useEffect(() => {
122
+ const questionStyle = createQuestionStyle(theme, brandTheme);
123
+ setStyle(questionStyle);
124
+ }, [theme, brandTheme]);
125
+ if (!answerUI || !questionText || !style) return null;
126
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(View, {
127
+ style: style.questionHeading
128
+ }, /*#__PURE__*/React.createElement(Text, {
129
+ style: style.questionOrigin
130
+ }, questionOrigin), /*#__PURE__*/React.createElement(Text, {
131
+ style: style.questionText
132
+ }, questionText), /*#__PURE__*/React.createElement(Text, {
133
+ style: style.questionHelp
134
+ }, get('help', answerUI))), /*#__PURE__*/React.createElement(View, {
135
+ style: style.choicesContainer
136
+ }, /*#__PURE__*/React.createElement(Answer, answerUI)), /*#__PURE__*/React.createElement(Touchable, {
137
+ style: style.validateButton
138
+ }, /*#__PURE__*/React.createElement(Text, {
139
+ style: style.validateButtonText
140
+ }, "@todo validate")));
141
+ };
142
+
143
+ const creatSlideStyle = (num, screenWidth, screenHeight) => {
144
+ const slideWidth = screenWidth - 40 - num * 8;
145
+ const slideHeight = screenHeight * 0.75;
146
+ return StyleSheet.create({
147
+ slide: {
148
+ position: 'absolute',
149
+ top: num * -5,
150
+ left: -slideWidth / 2,
151
+ flex: 1,
152
+ backgroundColor: '#fff',
153
+ // theme.colors.white
154
+ height: slideHeight,
155
+ width: slideWidth,
156
+ justifyContent: 'space-between',
157
+ alignItems: 'center',
158
+ padding: 25,
159
+ shadowColor: '#000',
160
+ shadowOffset: {
161
+ width: 0,
162
+ height: -1
163
+ },
164
+ shadowOpacity: 0.05,
165
+ shadowRadius: 16,
166
+ elevation: 10 - num * 1,
167
+ borderRadius: 16
168
+ }
169
+ });
170
+ };
171
+
172
+ const Slide = props => {
173
+ const {
174
+ slide,
175
+ validateButton,
176
+ correctionPopinProps,
177
+ num,
178
+ slideIndex = '0'
179
+ } = props;
180
+ const {
181
+ width,
182
+ height
183
+ } = useWindowDimensions();
184
+ const slideStyle = creatSlideStyle(num, width, height);
185
+ const {
186
+ loading,
187
+ parentContentTitle,
188
+ questionText,
189
+ answerUI,
190
+ showCorrectionPopin,
191
+ animateCorrectionPopin
192
+ } = slide;
193
+ return /*#__PURE__*/React.createElement(View, {
194
+ style: slideStyle.slide
195
+ }, loading ?
196
+ /*#__PURE__*/
197
+ // <Loader className={style.loader} theme="default" aria-label={loadingAriaLabel} />
198
+ React.createElement(Text, null, "@todo loader ", num) : [/*#__PURE__*/React.createElement(Question, {
199
+ questionOrigin: parentContentTitle,
200
+ questionText: questionText,
201
+ answerUI: answerUI,
202
+ key: "question-container"
203
+ }), /*#__PURE__*/React.createElement(CorrectionPopin, {
204
+ correctionPopinProps: correctionPopinProps,
205
+ slideIndex: slideIndex,
206
+ showCorrectionPopin: showCorrectionPopin,
207
+ animateCorrectionPopin: animateCorrectionPopin,
208
+ key: "correction-popin"
209
+ })]);
210
+ };
211
+
212
+ export default Slide;
213
+ //# sourceMappingURL=index.native.js.map