@coorpacademy/components 10.22.2 → 10.22.5

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 (147) hide show
  1. package/es/atom/drag-and-drop/index.js +2 -1
  2. package/es/atom/drag-and-drop/index.js.map +1 -1
  3. package/es/atom/header-back-button/index.native.js +74 -0
  4. package/es/atom/header-back-button/index.native.js.map +1 -0
  5. package/es/atom/header-back-icon/index.native.js +27 -0
  6. package/es/atom/header-back-icon/index.native.js.map +1 -0
  7. package/es/atom/html/index.native.js +146 -0
  8. package/es/atom/html/index.native.js.map +1 -0
  9. package/es/atom/input-checkbox/index.js +3 -2
  10. package/es/atom/input-checkbox/index.js.map +1 -1
  11. package/es/atom/input-switch/index.js +45 -7
  12. package/es/atom/input-switch/index.js.map +1 -1
  13. package/es/atom/input-switch/style.css +56 -6
  14. package/es/atom/select-modal/index.native.js +113 -0
  15. package/es/atom/select-modal/index.native.js.map +1 -0
  16. package/es/atom/space/index.native.js +21 -0
  17. package/es/atom/space/index.native.js.map +1 -0
  18. package/es/atom/text/index.native.js +31 -0
  19. package/es/atom/text/index.native.js.map +1 -0
  20. package/es/hoc/modal/index.native.js +97 -0
  21. package/es/hoc/modal/index.native.js.map +1 -0
  22. package/es/hoc/modal/select/index.native.js +86 -0
  23. package/es/hoc/modal/select/index.native.js.map +1 -0
  24. package/es/hoc/modal/select-item/index.native.js +54 -0
  25. package/es/hoc/modal/select-item/index.native.js.map +1 -0
  26. package/es/hoc/touchable/index.native.js +8 -0
  27. package/es/hoc/touchable/index.native.js.map +1 -1
  28. package/es/index.js +2 -1
  29. package/es/index.js.map +1 -1
  30. package/es/molecule/answer/index.js +39 -32
  31. package/es/molecule/answer/index.js.map +1 -1
  32. package/es/molecule/cm-popin/index.js +125 -19
  33. package/es/molecule/cm-popin/index.js.map +1 -1
  34. package/es/molecule/cm-popin/style.css +176 -9
  35. package/es/molecule/feedback/index.js +7 -3
  36. package/es/molecule/feedback/index.js.map +1 -1
  37. package/es/molecule/feedback/style.css +24 -0
  38. package/es/molecule/questions/free-text/index.native.js +9 -10
  39. package/es/molecule/questions/free-text/index.native.js.map +1 -1
  40. package/es/molecule/questions/mobile/template/index.native.js +222 -0
  41. package/es/molecule/questions/mobile/template/index.native.js.map +1 -0
  42. package/es/template/app-player/player/index.js +6 -3
  43. package/es/template/app-player/player/index.js.map +1 -1
  44. package/es/template/app-player/popin-end/index.js +21 -6
  45. package/es/template/app-player/popin-end/index.js.map +1 -1
  46. package/es/template/app-player/popin-end/style.css +1 -1
  47. package/es/template/app-player/popin-end/summary.css +65 -0
  48. package/es/template/app-player/popin-end/summary.js +57 -7
  49. package/es/template/app-player/popin-end/summary.js.map +1 -1
  50. package/es/template/app-player/popin-header/index.js +33 -12
  51. package/es/template/app-player/popin-header/index.js.map +1 -1
  52. package/es/template/app-player/popin-header/style.css +93 -0
  53. package/es/template/app-player/popin-no-access/index.js +27 -0
  54. package/es/template/app-player/popin-no-access/index.js.map +1 -0
  55. package/es/template/app-review/prop-types.js +2 -1
  56. package/es/template/app-review/prop-types.js.map +1 -1
  57. package/es/template/app-review/slides/index.js +2 -2
  58. package/es/template/app-review/slides/index.js.map +1 -1
  59. package/es/template/app-review/template-context.js +5 -1
  60. package/es/template/app-review/template-context.js.map +1 -1
  61. package/es/template/common/dashboard/index.js +6 -3
  62. package/es/template/common/dashboard/index.js.map +1 -1
  63. package/es/types/app-review.d.js +2 -0
  64. package/es/types/app-review.d.js.map +1 -0
  65. package/es/types/progression-engine.d.js +2 -0
  66. package/es/types/progression-engine.d.js.map +1 -0
  67. package/es/types/translations.js +2 -0
  68. package/es/types/translations.js.map +1 -0
  69. package/es/util/parse-template-string.js +4 -2
  70. package/es/util/parse-template-string.js.map +1 -1
  71. package/es/variables/colors.css +1 -0
  72. package/es/variables/theme.native.js +1 -0
  73. package/es/variables/theme.native.js.map +1 -1
  74. package/lib/atom/drag-and-drop/index.js +2 -1
  75. package/lib/atom/drag-and-drop/index.js.map +1 -1
  76. package/lib/atom/header-back-button/index.native.js +95 -0
  77. package/lib/atom/header-back-button/index.native.js.map +1 -0
  78. package/lib/atom/header-back-icon/index.native.js +38 -0
  79. package/lib/atom/header-back-icon/index.native.js.map +1 -0
  80. package/lib/atom/html/index.native.js +163 -0
  81. package/lib/atom/html/index.native.js.map +1 -0
  82. package/lib/atom/input-checkbox/index.js +2 -1
  83. package/lib/atom/input-checkbox/index.js.map +1 -1
  84. package/lib/atom/input-switch/index.js +45 -7
  85. package/lib/atom/input-switch/index.js.map +1 -1
  86. package/lib/atom/input-switch/style.css +56 -6
  87. package/lib/atom/select-modal/index.native.js +135 -0
  88. package/lib/atom/select-modal/index.native.js.map +1 -0
  89. package/lib/atom/space/index.native.js +33 -0
  90. package/lib/atom/space/index.native.js.map +1 -0
  91. package/lib/atom/text/index.native.js +46 -0
  92. package/lib/atom/text/index.native.js.map +1 -0
  93. package/lib/hoc/modal/index.native.js +114 -0
  94. package/lib/hoc/modal/index.native.js.map +1 -0
  95. package/lib/hoc/modal/select/index.native.js +103 -0
  96. package/lib/hoc/modal/select/index.native.js.map +1 -0
  97. package/lib/hoc/modal/select-item/index.native.js +70 -0
  98. package/lib/hoc/modal/select-item/index.native.js.map +1 -0
  99. package/lib/hoc/touchable/index.native.js +9 -0
  100. package/lib/hoc/touchable/index.native.js.map +1 -1
  101. package/lib/index.js +4 -0
  102. package/lib/index.js.map +1 -1
  103. package/lib/molecule/answer/index.js +39 -32
  104. package/lib/molecule/answer/index.js.map +1 -1
  105. package/lib/molecule/cm-popin/index.js +126 -18
  106. package/lib/molecule/cm-popin/index.js.map +1 -1
  107. package/lib/molecule/cm-popin/style.css +176 -9
  108. package/lib/molecule/feedback/index.js +7 -3
  109. package/lib/molecule/feedback/index.js.map +1 -1
  110. package/lib/molecule/feedback/style.css +24 -0
  111. package/lib/molecule/questions/free-text/index.native.js +8 -9
  112. package/lib/molecule/questions/free-text/index.native.js.map +1 -1
  113. package/lib/molecule/questions/mobile/template/index.native.js +243 -0
  114. package/lib/molecule/questions/mobile/template/index.native.js.map +1 -0
  115. package/lib/template/app-player/player/index.js +7 -3
  116. package/lib/template/app-player/player/index.js.map +1 -1
  117. package/lib/template/app-player/popin-end/index.js +21 -6
  118. package/lib/template/app-player/popin-end/index.js.map +1 -1
  119. package/lib/template/app-player/popin-end/style.css +1 -1
  120. package/lib/template/app-player/popin-end/summary.css +65 -0
  121. package/lib/template/app-player/popin-end/summary.js +58 -7
  122. package/lib/template/app-player/popin-end/summary.js.map +1 -1
  123. package/lib/template/app-player/popin-header/index.js +32 -11
  124. package/lib/template/app-player/popin-header/index.js.map +1 -1
  125. package/lib/template/app-player/popin-header/style.css +93 -0
  126. package/lib/template/app-player/popin-no-access/index.js +37 -0
  127. package/lib/template/app-player/popin-no-access/index.js.map +1 -0
  128. package/lib/template/app-review/prop-types.js +2 -1
  129. package/lib/template/app-review/prop-types.js.map +1 -1
  130. package/lib/template/app-review/slides/index.js +2 -2
  131. package/lib/template/app-review/slides/index.js.map +1 -1
  132. package/lib/template/app-review/template-context.js +5 -1
  133. package/lib/template/app-review/template-context.js.map +1 -1
  134. package/lib/template/common/dashboard/index.js +7 -3
  135. package/lib/template/common/dashboard/index.js.map +1 -1
  136. package/lib/types/app-review.d.js +2 -0
  137. package/lib/types/app-review.d.js.map +1 -0
  138. package/lib/types/progression-engine.d.js +2 -0
  139. package/lib/types/progression-engine.d.js.map +1 -0
  140. package/lib/types/translations.js +2 -0
  141. package/lib/types/translations.js.map +1 -0
  142. package/lib/util/parse-template-string.js +4 -2
  143. package/lib/util/parse-template-string.js.map +1 -1
  144. package/lib/variables/colors.css +1 -0
  145. package/lib/variables/theme.native.js +3 -1
  146. package/lib/variables/theme.native.js.map +1 -1
  147. package/package.json +6 -4
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/molecule/feedback/index.js"],"names":["React","PropTypes","classnames","ResourcePlayer","TYPE_IMAGE","TYPE_VIDEO","TYPE_PDF","TYPE_AUDIO","style","Feedback","props","context","media","mediaDescription","title","description","resource","type","feedback","innerHTML","__html","descWrapper","resourcePlayer","propTypes","string","shape","oneOf","src","array"],"mappings":";;;;;;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AAEA,OAAOC,UAAP,MAAuB,YAAvB;AACA,OAAOC,cAAP,IAAwBC,UAAxB,EAAoCC,UAApC,EAAgDC,QAAhD,EAA0DC,UAA1D,QAA2E,oBAA3E;AACA,OAAOC,KAAP,MAAkB,aAAlB;;AAEA,MAAMC,QAAQ,GAAG,CAACC,KAAD,EAAQC,OAAR,KAAoB;AACnC,QAAM;AAACC,IAAAA,KAAD;AAAQC,IAAAA,gBAAR;AAA0BC,IAAAA,KAA1B;AAAiCC,IAAAA;AAAjC,MAAgDL,KAAtD;;AACA,QAAMM,QAAQ,GAAGJ,KAAK,IACpBA,KAAK,CAACK,IADS,0BAEVL,KAFU,GAGV,MAAK,KAAI,OAAJ,CAAL,EAAmB,QAAO;AAACG,IAAAA,WAAW,EAAEF;AAAd,GAAP,CAAnB,EAA4DD,KAA5D,CAHU,CAAjB;;AAMA,SACE,CAACI,QAAQ,IAAIF,KAAZ,IAAqBC,WAArB,gBACC;AAAK,IAAA,SAAS,EAAEP,KAAK,CAACU,QAAtB;AAAgC,iBAAU;AAA1C,kBACE;AACE,IAAA,SAAS,EAAEhB,UAAU,CAACM,KAAK,CAACM,KAAP,EAAcN,KAAK,CAACW,SAApB,CADvB;AAEE,iBAAU,OAFZ,CAGE;AAHF;AAIE,IAAA,uBAAuB,EAAE;AAACC,MAAAA,MAAM,EAAEN;AAAT;AAJ3B,IADF,eAOE;AAAK,IAAA,SAAS,EAAEN,KAAK,CAACa;AAAtB,kBACE;AACE,IAAA,SAAS,EAAEnB,UAAU,CAACM,KAAK,CAACO,WAAP,EAAoBP,KAAK,CAACW,SAA1B,CADvB;AAEE,iBAAU,aAFZ,CAGE;AAHF;AAIE,IAAA,uBAAuB,EAAE;AAACC,MAAAA,MAAM,EAAEL;AAAT;AAJ3B,IADF,EAOGC,QAAQ,gBACP,8CACE,oBAAC,cAAD;AAAgB,IAAA,SAAS,EAAER,KAAK,CAACc,cAAjC;AAAiD,IAAA,QAAQ,EAAEN;AAA3D,IADF,eAEE;AACE,iBAAU,kBADZ;AAEE,IAAA,SAAS,EAAEd,UAAU,CAACM,KAAK,CAACK,gBAAP,EAAyBL,KAAK,CAACW,SAA/B,CAFvB,CAGE;AAHF;AAIE,IAAA,uBAAuB,EAAE;AAACC,MAAAA,MAAM,EAAEP;AAAT;AAJ3B,IAFF,CADO,GAUL,IAjBN,CAPF,CADD,GA4BG,IA5BJ,KA4Ba,EA7Bf;AA+BD,CAvCD;;AAyCAJ,QAAQ,CAACc,SAAT,2CAAqB;AACnBT,EAAAA,KAAK,EAAEb,SAAS,CAACuB,MADE;AAEnBT,EAAAA,WAAW,EAAEd,SAAS,CAACuB,MAFJ;AAGnBZ,EAAAA,KAAK,EAAEX,SAAS,CAACwB,KAAV,CAAgB;AACrBR,IAAAA,IAAI,EAAEhB,SAAS,CAACyB,KAAV,CAAgB,CAACtB,UAAD,EAAaE,QAAb,EAAuBD,UAAvB,EAAmCE,UAAnC,CAAhB,CADe;AAErBoB,IAAAA,GAAG,EAAE1B,SAAS,CAAC2B;AAFM,GAAhB,CAHY;AAOnBf,EAAAA,gBAAgB,EAAEZ,SAAS,CAACuB;AAPT,CAArB;AAUA,eAAef,QAAf","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport {pipe, get, extend} from 'lodash/fp';\nimport classnames from 'classnames';\nimport ResourcePlayer, {TYPE_IMAGE, TYPE_VIDEO, TYPE_PDF, TYPE_AUDIO} from '../resource-player';\nimport style from './style.css';\n\nconst Feedback = (props, context) => {\n const {media, mediaDescription, title, description} = props;\n const resource = media &&\n media.type && {\n ...media,\n ...pipe(get('src.0'), extend({description: mediaDescription}))(media)\n };\n\n return (\n (resource || title || description ? (\n <div className={style.feedback} data-name=\"feedback\">\n <div\n className={classnames(style.title, style.innerHTML)}\n data-name=\"title\"\n // eslint-disable-next-line react/no-danger\n dangerouslySetInnerHTML={{__html: title}}\n />\n <div className={style.descWrapper}>\n <div\n className={classnames(style.description, style.innerHTML)}\n data-name=\"description\"\n // eslint-disable-next-line react/no-danger\n dangerouslySetInnerHTML={{__html: description}}\n />\n {resource ? (\n <div>\n <ResourcePlayer className={style.resourcePlayer} resource={resource} />\n <div\n data-name=\"mediaDescription\"\n className={classnames(style.mediaDescription, style.innerHTML)}\n // eslint-disable-next-line react/no-danger\n dangerouslySetInnerHTML={{__html: mediaDescription}}\n />\n </div>\n ) : null}\n </div>\n </div>\n ) : null) || ''\n );\n};\n\nFeedback.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n media: PropTypes.shape({\n type: PropTypes.oneOf([TYPE_IMAGE, TYPE_PDF, TYPE_VIDEO, TYPE_AUDIO]),\n src: PropTypes.array\n }),\n mediaDescription: PropTypes.string\n};\n\nexport default Feedback;\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../src/molecule/feedback/index.js"],"names":["React","PropTypes","classnames","ResourcePlayer","TYPE_IMAGE","TYPE_VIDEO","TYPE_PDF","TYPE_AUDIO","style","Feedback","props","context","media","mediaDescription","title","description","mode","resource","type","feedbackContainerScorm","feedback","innerHTML","__html","descWrapper","resourcePlayer","propTypes","string","shape","oneOf","src","array"],"mappings":";;;;;;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AAEA,OAAOC,UAAP,MAAuB,YAAvB;AACA,OAAOC,cAAP,IAAwBC,UAAxB,EAAoCC,UAApC,EAAgDC,QAAhD,EAA0DC,UAA1D,QAA2E,oBAA3E;AACA,OAAOC,KAAP,MAAkB,aAAlB;;AAEA,MAAMC,QAAQ,GAAG,CAACC,KAAD,EAAQC,OAAR,KAAoB;AACnC,QAAM;AAACC,IAAAA,KAAD;AAAQC,IAAAA,gBAAR;AAA0BC,IAAAA,KAA1B;AAAiCC,IAAAA,WAAjC;AAA8CC,IAAAA,IAAI,GAAG;AAArD,MAAkEN,KAAxE;;AACA,QAAMO,QAAQ,GAAGL,KAAK,IACpBA,KAAK,CAACM,IADS,0BAEVN,KAFU,GAGV,MAAK,KAAI,OAAJ,CAAL,EAAmB,QAAO;AAACG,IAAAA,WAAW,EAAEF;AAAd,GAAP,CAAnB,EAA4DD,KAA5D,CAHU,CAAjB;;AAMA,SACE,CAACK,QAAQ,IAAIH,KAAZ,IAAqBC,WAArB,gBACC;AAAK,IAAA,SAAS,EAAEC,IAAI,KAAK,OAAT,GAAmBR,KAAK,CAACW,sBAAzB,GAAkD;AAAlE,kBACE;AAAK,IAAA,SAAS,EAAEX,KAAK,CAACY,QAAtB;AAAgC,iBAAU,UAA1C;AAAqD,IAAA,EAAE,EAAC;AAAxD,kBACE;AACE,IAAA,SAAS,EAAElB,UAAU,CAACM,KAAK,CAACM,KAAP,EAAcN,KAAK,CAACa,SAApB,CADvB;AAEE,iBAAU,OAFZ,CAGE;AAHF;AAIE,IAAA,uBAAuB,EAAE;AAACC,MAAAA,MAAM,EAAER;AAAT;AAJ3B,IADF,eAOE;AAAK,IAAA,SAAS,EAAEN,KAAK,CAACe;AAAtB,kBACE;AACE,IAAA,SAAS,EAAErB,UAAU,CAACM,KAAK,CAACO,WAAP,EAAoBP,KAAK,CAACa,SAA1B,CADvB;AAEE,iBAAU,aAFZ,CAGE;AAHF;AAIE,IAAA,uBAAuB,EAAE;AAACC,MAAAA,MAAM,EAAEP;AAAT;AAJ3B,IADF,EAOGE,QAAQ,gBACP,8CACE,oBAAC,cAAD;AAAgB,IAAA,SAAS,EAAET,KAAK,CAACgB,cAAjC;AAAiD,IAAA,QAAQ,EAAEP;AAA3D,IADF,eAEE;AACE,iBAAU,kBADZ;AAEE,IAAA,SAAS,EAAEf,UAAU,CAACM,KAAK,CAACK,gBAAP,EAAyBL,KAAK,CAACa,SAA/B,CAFvB,CAGE;AAHF;AAIE,IAAA,uBAAuB,EAAE;AAACC,MAAAA,MAAM,EAAET;AAAT;AAJ3B,IAFF,CADO,GAUL,IAjBN,CAPF,CADF,CADD,GA8BG,IA9BJ,KA8Ba,EA/Bf;AAiCD,CAzCD;;AA2CAJ,QAAQ,CAACgB,SAAT,2CAAqB;AACnBX,EAAAA,KAAK,EAAEb,SAAS,CAACyB,MADE;AAEnBX,EAAAA,WAAW,EAAEd,SAAS,CAACyB,MAFJ;AAGnBd,EAAAA,KAAK,EAAEX,SAAS,CAAC0B,KAAV,CAAgB;AACrBT,IAAAA,IAAI,EAAEjB,SAAS,CAAC2B,KAAV,CAAgB,CAACxB,UAAD,EAAaE,QAAb,EAAuBD,UAAvB,EAAmCE,UAAnC,CAAhB,CADe;AAErBsB,IAAAA,GAAG,EAAE5B,SAAS,CAAC6B;AAFM,GAAhB,CAHY;AAOnBjB,EAAAA,gBAAgB,EAAEZ,SAAS,CAACyB;AAPT,CAArB;AAUA,eAAejB,QAAf","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport {pipe, get, extend} from 'lodash/fp';\nimport classnames from 'classnames';\nimport ResourcePlayer, {TYPE_IMAGE, TYPE_VIDEO, TYPE_PDF, TYPE_AUDIO} from '../resource-player';\nimport style from './style.css';\n\nconst Feedback = (props, context) => {\n const {media, mediaDescription, title, description, mode = 'default'} = props;\n const resource = media &&\n media.type && {\n ...media,\n ...pipe(get('src.0'), extend({description: mediaDescription}))(media)\n };\n\n return (\n (resource || title || description ? (\n <div className={mode === 'scorm' ? style.feedbackContainerScorm : null}>\n <div className={style.feedback} data-name=\"feedback\" id=\"feedback\">\n <div\n className={classnames(style.title, style.innerHTML)}\n data-name=\"title\"\n // eslint-disable-next-line react/no-danger\n dangerouslySetInnerHTML={{__html: title}}\n />\n <div className={style.descWrapper}>\n <div\n className={classnames(style.description, style.innerHTML)}\n data-name=\"description\"\n // eslint-disable-next-line react/no-danger\n dangerouslySetInnerHTML={{__html: description}}\n />\n {resource ? (\n <div>\n <ResourcePlayer className={style.resourcePlayer} resource={resource} />\n <div\n data-name=\"mediaDescription\"\n className={classnames(style.mediaDescription, style.innerHTML)}\n // eslint-disable-next-line react/no-danger\n dangerouslySetInnerHTML={{__html: mediaDescription}}\n />\n </div>\n ) : null}\n </div>\n </div>\n </div>\n ) : null) || ''\n );\n};\n\nFeedback.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n media: PropTypes.shape({\n type: PropTypes.oneOf([TYPE_IMAGE, TYPE_PDF, TYPE_VIDEO, TYPE_AUDIO]),\n src: PropTypes.array\n }),\n mediaDescription: PropTypes.string\n};\n\nexport default Feedback;\n"],"file":"index.js"}
@@ -9,6 +9,8 @@
9
9
  @value medium from colors;
10
10
  @value xtraLightGrey from colors;
11
11
  @value white from colors;
12
+ @value cm_grey_75 from colors;
13
+
12
14
 
13
15
  .feedback {
14
16
  width: 100%;
@@ -19,6 +21,24 @@
19
21
  flex-direction: column;
20
22
  }
21
23
 
24
+ .feedbackContainerScorm {
25
+ background-color: white;
26
+ max-width: 884px;
27
+ height: 386px;
28
+ padding-bottom: 10px;
29
+ overflow-x: auto;
30
+ border: 1px solid cm_grey_75;
31
+ border-top: 0px;
32
+ z-index: 2;
33
+ margin-top: 60px;
34
+ position: relative;
35
+ }
36
+
37
+ .feedbackContainerScorm > .feedback {
38
+ border-bottom: 0px;
39
+ height: 100%;
40
+ }
41
+
22
42
  .title {
23
43
  width: 100%;
24
44
  margin-bottom: 20px;
@@ -90,6 +110,10 @@
90
110
  width: 100%;
91
111
  margin-bottom: 8px;
92
112
  }
113
+ .feedbackContainerScorm {
114
+ width: 100%;
115
+ height: 100%;
116
+ }
93
117
  }
94
118
 
95
119
  .innerHTML {
@@ -1,5 +1,5 @@
1
1
  import { View, StyleSheet, TextInput } from 'react-native';
2
- import React, { useState, useEffect, useMemo } from 'react';
2
+ import React, { useState, useEffect, useCallback } from 'react';
3
3
  import { useTemplateContext } from '../../../template/app-review/template-context';
4
4
  import { ANALYTICS_EVENT_TYPE } from '../../../variables/analytics';
5
5
 
@@ -39,23 +39,23 @@ const FreeText = props => {
39
39
  const [styleSheet, setStylesheet] = useState(null);
40
40
  const {
41
41
  brandTheme,
42
- theme
42
+ theme,
43
+ translations
43
44
  } = templateContext;
44
45
  const PLACEHOLDER_COLOR = theme.colors.gray.medium; // ------------------------------------
45
46
 
46
47
  const {
47
48
  analytics,
48
49
  questionType,
49
- fullWitdh,
50
+ fullWitdh = false,
50
51
  testID,
51
52
  onChange,
52
53
  isDisabled,
53
- value,
54
- placeholder
54
+ value
55
55
  } = props; // ------------------------------------
56
56
 
57
- const handleFocus = useMemo(() => analytics && logEvent(ANALYTICS_EVENT_TYPE.INPUT_FOCUS, analytics, questionType), [analytics, questionType]);
58
- const handleBlur = useMemo(() => analytics && logEvent(ANALYTICS_EVENT_TYPE.INPUT_BLUR, analytics, questionType), [analytics, questionType]); // ------------------------------------
57
+ const handleFocus = useCallback(() => analytics && logEvent(ANALYTICS_EVENT_TYPE.INPUT_FOCUS, analytics, questionType), [analytics, questionType]);
58
+ const handleBlur = useCallback(() => analytics && logEvent(ANALYTICS_EVENT_TYPE.INPUT_BLUR, analytics, questionType), [analytics, questionType]); // ------------------------------------
59
59
 
60
60
  useEffect(() => {
61
61
  const _stylesheet = createStyleSheet(brandTheme, theme);
@@ -68,14 +68,13 @@ const FreeText = props => {
68
68
  }
69
69
 
70
70
  return /*#__PURE__*/React.createElement(View, {
71
- style: [styleSheet.spaced, fullWitdh && styleSheet.fullWitdh],
72
- testID: testID
71
+ style: [styleSheet.spaced, fullWitdh && styleSheet.fullWitdh]
73
72
  }, /*#__PURE__*/React.createElement(TextInput, {
74
73
  style: [styleSheet.input, styleSheet.text],
75
74
  onFocus: handleFocus,
76
75
  onBlur: handleBlur,
77
76
  onChangeText: onChange,
78
- placeholder: placeholder,
77
+ placeholder: translations.typeHere,
79
78
  placeholderTextColor: PLACEHOLDER_COLOR,
80
79
  value: value,
81
80
  testID: testID,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/molecule/questions/free-text/index.native.tsx"],"names":["View","StyleSheet","TextInput","React","useState","useEffect","useMemo","useTemplateContext","ANALYTICS_EVENT_TYPE","createStyleSheet","brandTheme","theme","create","input","padding","spacing","tiny","borderWidth","borderColor","colors","gray","lightMedium","borderRadius","radius","common","backgroundColor","white","minWidth","text","primary","color","medium","fontWeight","bold","fontSize","regular","textAlign","spaced","paddingVertical","fullWitdh","width","logEvent","eventName","analytics","questionType","id","FreeText","props","templateContext","styleSheet","setStylesheet","PLACEHOLDER_COLOR","testID","onChange","isDisabled","value","placeholder","handleFocus","INPUT_FOCUS","handleBlur","INPUT_BLUR","_stylesheet"],"mappings":"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","sourcesContent":["import {View, StyleSheet, TextInput} from 'react-native';\nimport React, {useState, useEffect, useMemo} from 'react';\nimport {useTemplateContext} from '../../../template/app-review/template-context';\nimport {ANALYTICS_EVENT_TYPE, Analytics} from '../../../variables/analytics';\n\ntype QuestionType = 'basic' | 'template';\n\ninterface Props {\n children: string;\n fullWitdh: boolean;\n testID: string;\n questionType: QuestionType;\n analytics?: Analytics;\n onChange: Function;\n isDisabled: boolean;\n value: string;\n placeholder: string;\n}\n\ntype StyleSheetType = {\n input: {\n padding: string;\n borderWidth: number;\n borderColor: string;\n borderRadius: number;\n backgroundColor: string;\n minWidth: number;\n };\n text: {\n color: string;\n fontWeight: number;\n fontSize: number;\n textAlign: string;\n };\n spaced: {\n paddingVertical: number;\n };\n fullWitdh: {\n width: string;\n };\n};\n\nconst createStyleSheet = (brandTheme, theme) =>\n StyleSheet.create({\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 text: {\n borderColor: brandTheme?.colors.primary,\n color: brandTheme?.colors.primary || theme.colors.gray.medium,\n fontWeight: theme.fontWeight.bold,\n fontSize: theme.fontSize.regular,\n textAlign: 'center'\n },\n spaced: {\n paddingVertical: theme.spacing.tiny\n },\n fullWitdh: {\n width: '100%'\n }\n });\n\nconst logEvent = (eventName: string, analytics: Analytics, questionType: QuestionType) => {\n analytics &&\n analytics.logEvent(eventName, {\n id: `question-input-text`,\n questionType\n });\n};\n\nconst FreeText = (props: Props) => {\n const templateContext = useTemplateContext();\n const [styleSheet, setStylesheet] = useState<StyleSheetType | null>(null);\n const {brandTheme, theme} = templateContext;\n const PLACEHOLDER_COLOR = theme.colors.gray.medium;\n\n // ------------------------------------\n\n const {\n analytics,\n questionType,\n fullWitdh,\n testID,\n onChange,\n isDisabled,\n value,\n placeholder\n } = props;\n\n // ------------------------------------\n\n const handleFocus = useMemo(\n () => analytics && logEvent(ANALYTICS_EVENT_TYPE.INPUT_FOCUS, analytics, questionType),\n [analytics, questionType]\n );\n\n const handleBlur = useMemo(\n () => analytics && logEvent(ANALYTICS_EVENT_TYPE.INPUT_BLUR, analytics, questionType),\n [analytics, questionType]\n );\n\n // ------------------------------------\n\n useEffect(() => {\n const _stylesheet = createStyleSheet(brandTheme, theme);\n setStylesheet(_stylesheet);\n }, [brandTheme, theme]);\n\n // ------------------------------------\n\n if (!styleSheet) {\n return null;\n }\n\n return (\n <View style={[styleSheet.spaced, fullWitdh && styleSheet.fullWitdh]} testID={testID}>\n <TextInput\n style={[styleSheet.input, styleSheet.text]}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onChangeText={onChange}\n placeholder={placeholder}\n placeholderTextColor={PLACEHOLDER_COLOR}\n value={value}\n testID={testID}\n editable={!isDisabled}\n selectTextOnFocus={!isDisabled}\n />\n </View>\n );\n};\n\nexport default FreeText;\n"],"file":"index.native.js"}
1
+ {"version":3,"sources":["../../../../src/molecule/questions/free-text/index.native.tsx"],"names":["View","StyleSheet","TextInput","React","useState","useEffect","useCallback","useTemplateContext","ANALYTICS_EVENT_TYPE","createStyleSheet","brandTheme","theme","create","input","padding","spacing","tiny","borderWidth","borderColor","colors","gray","lightMedium","borderRadius","radius","common","backgroundColor","white","minWidth","text","primary","color","medium","fontWeight","bold","fontSize","regular","textAlign","spaced","paddingVertical","fullWitdh","width","logEvent","eventName","analytics","questionType","id","FreeText","props","templateContext","styleSheet","setStylesheet","translations","PLACEHOLDER_COLOR","testID","onChange","isDisabled","value","handleFocus","INPUT_FOCUS","handleBlur","INPUT_BLUR","_stylesheet","typeHere"],"mappings":"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","sourcesContent":["import {View, StyleSheet, TextInput} from 'react-native';\nimport React, {useState, useEffect, useCallback} from 'react';\nimport {useTemplateContext} from '../../../template/app-review/template-context';\nimport {ANALYTICS_EVENT_TYPE, Analytics} from '../../../variables/analytics';\n\ntype QuestionType = 'basic' | 'template';\n\ninterface Props {\n fullWitdh?: boolean;\n testID: string;\n questionType: QuestionType;\n analytics?: Analytics;\n onChange: (text: string) => void;\n isDisabled: boolean;\n value: string;\n}\n\ntype StyleSheetType = {\n input: {\n padding: string;\n borderWidth: number;\n borderColor: string;\n borderRadius: number;\n backgroundColor: string;\n minWidth: number;\n };\n text: {\n color: string;\n fontWeight:\n | 'normal'\n | 'bold'\n | '100'\n | '200'\n | '300'\n | '400'\n | '500'\n | '600'\n | '700'\n | '800'\n | '900'\n | undefined;\n fontSize: number;\n textAlign: 'auto' | 'left' | 'right' | 'center' | 'justify' | undefined;\n };\n spaced: {\n paddingVertical: number;\n };\n fullWitdh: {\n width: string;\n };\n};\n\nconst createStyleSheet = (brandTheme, theme) =>\n StyleSheet.create({\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 text: {\n borderColor: brandTheme?.colors.primary,\n color: brandTheme?.colors.primary || theme.colors.gray.medium,\n fontWeight: theme.fontWeight.bold,\n fontSize: theme.fontSize.regular,\n textAlign: 'center'\n },\n spaced: {\n paddingVertical: theme.spacing.tiny\n },\n fullWitdh: {\n width: '100%'\n }\n });\n\nconst logEvent = (eventName: string, analytics: Analytics, questionType: QuestionType) => {\n analytics &&\n analytics.logEvent(eventName, {\n id: `question-input-text`,\n questionType\n });\n};\n\nconst FreeText = (props: Props) => {\n const templateContext = useTemplateContext();\n const [styleSheet, setStylesheet] = useState<StyleSheetType | null>(null);\n const {brandTheme, theme, translations} = templateContext;\n const PLACEHOLDER_COLOR = theme.colors.gray.medium;\n\n // ------------------------------------\n\n const {analytics, questionType, fullWitdh = false, testID, onChange, isDisabled, value} = props;\n\n // ------------------------------------\n\n const handleFocus = useCallback(\n () => analytics && logEvent(ANALYTICS_EVENT_TYPE.INPUT_FOCUS, analytics, questionType),\n [analytics, questionType]\n );\n\n const handleBlur = useCallback(\n () => analytics && logEvent(ANALYTICS_EVENT_TYPE.INPUT_BLUR, analytics, questionType),\n [analytics, questionType]\n );\n\n // ------------------------------------\n\n useEffect(() => {\n const _stylesheet = createStyleSheet(brandTheme, theme);\n setStylesheet(_stylesheet);\n }, [brandTheme, theme]);\n\n // ------------------------------------\n\n if (!styleSheet) {\n return null;\n }\n\n return (\n <View style={[styleSheet.spaced, fullWitdh && styleSheet.fullWitdh]}>\n <TextInput\n style={[styleSheet.input, styleSheet.text]}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onChangeText={onChange}\n placeholder={translations.typeHere}\n placeholderTextColor={PLACEHOLDER_COLOR}\n value={value}\n testID={testID}\n editable={!isDisabled}\n selectTextOnFocus={!isDisabled}\n />\n </View>\n );\n};\n\nexport default FreeText;\n"],"file":"index.native.js"}
@@ -0,0 +1,222 @@
1
+ import React, { useEffect, useState } from 'react';
2
+ import { View } from 'react-native';
3
+ import trim from 'lodash/fp/trim';
4
+ import last from 'lodash/fp/last';
5
+ import Html from '../../../../atom/html/index.native';
6
+ import Select from '../../../../atom/select-modal/index.native';
7
+ import Space from '../../../../atom/space/index.native';
8
+ import FreeText from '../../free-text/index.native';
9
+ import { useTemplateContext } from '../../../../template/app-review/template-context';
10
+ import parseTemplateString from '../../../../util/parse-template-string';
11
+
12
+ const createStyleSheet = theme => ({
13
+ section: {
14
+ width: '100%',
15
+ flexDirection: 'row',
16
+ flexWrap: 'wrap',
17
+ justifyContent: 'center',
18
+ alignItems: 'center'
19
+ },
20
+ spaced: {
21
+ paddingVertical: theme.spacing.tiny
22
+ },
23
+ input: {
24
+ padding: theme.spacing.tiny,
25
+ borderWidth: 1,
26
+ borderColor: theme.colors.gray.lightMedium,
27
+ borderRadius: theme.radius.common,
28
+ backgroundColor: theme.colors.white,
29
+ minWidth: 175
30
+ },
31
+ htmlText: {
32
+ padding: theme.spacing.tiny,
33
+ color: theme.colors.black,
34
+ fontWeight: theme.fontWeight.bold,
35
+ lineHeight: 30
36
+ },
37
+ text: {
38
+ color: theme.colors.gray.medium,
39
+ fontWeight: theme.fontWeight.bold,
40
+ fontSize: theme.fontSize.regular,
41
+ textAlign: 'center'
42
+ }
43
+ });
44
+
45
+ const Section = ({
46
+ section,
47
+ items,
48
+ index,
49
+ focusedSelectId,
50
+ onInputChange,
51
+ userChoices,
52
+ handleBlur,
53
+ handleFocus,
54
+ isDisabled,
55
+ styles
56
+ }) => {
57
+ const prefix = `question-section-${index + 1}`;
58
+ return /*#__PURE__*/React.createElement(View, {
59
+ style: styles.section,
60
+ key: `container-${prefix}`
61
+ }, section.map((part, id) => {
62
+ return /*#__PURE__*/React.createElement(View, {
63
+ key: `${prefix}-${id}`,
64
+ style: {
65
+ flexDirection: 'row'
66
+ }
67
+ }, /*#__PURE__*/React.createElement(Item, {
68
+ prefix: prefix,
69
+ part: part,
70
+ items: items,
71
+ index: id,
72
+ focusedSelectId: focusedSelectId,
73
+ isDisabled: isDisabled,
74
+ userChoices: userChoices,
75
+ handleBlur: handleBlur,
76
+ handleFocus: handleFocus,
77
+ onInputChange: onInputChange,
78
+ styles: styles
79
+ }), /*#__PURE__*/React.createElement(Space, {
80
+ type: "micro"
81
+ }));
82
+ }));
83
+ };
84
+
85
+ const Item = props => {
86
+ const {
87
+ part,
88
+ index,
89
+ prefix,
90
+ isDisabled = false,
91
+ focusedSelectId,
92
+ items,
93
+ userChoices,
94
+ onInputChange,
95
+ handleBlur,
96
+ handleFocus,
97
+ styles
98
+ } = props;
99
+ const templateContext = useTemplateContext();
100
+ const {
101
+ theme,
102
+ brandTheme,
103
+ translations
104
+ } = templateContext;
105
+ const inputNames = items.map(item => item.name);
106
+ const id = `${prefix}-part-${index + 1}`;
107
+ const isFocused = focusedSelectId === id;
108
+ const selectedStyle = brandTheme && {
109
+ borderColor: brandTheme.colors.primary,
110
+ color: brandTheme.colors.primary
111
+ };
112
+
113
+ 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];
117
+
118
+ if (!item || !item.type || !item.name) {
119
+ return null;
120
+ }
121
+
122
+ const disabledSuffix = isDisabled ? '-disabled' : '';
123
+ const selectedSuffix = value ? '-selected' : '';
124
+
125
+ const handleInputChange = _item => _value => onInputChange(_item, _value);
126
+
127
+ if (item.type === 'text') {
128
+ return /*#__PURE__*/React.createElement(View, {
129
+ style: styles.spaced,
130
+ testID: id
131
+ }, /*#__PURE__*/React.createElement(FreeText, {
132
+ key: id,
133
+ isDisabled: isDisabled,
134
+ onChange: handleInputChange(item),
135
+ value: value,
136
+ testID: `${id}-text${selectedSuffix}${disabledSuffix}`,
137
+ questionType: "template"
138
+ }));
139
+ }
140
+
141
+ if (item.type === 'select') {
142
+ return /*#__PURE__*/React.createElement(View, {
143
+ style: styles.spaced,
144
+ testID: id
145
+ }, /*#__PURE__*/React.createElement(Select, {
146
+ isDisabled: isDisabled,
147
+ questionType: "template",
148
+ values: item.items,
149
+ value: value,
150
+ placeholder: translations.selectAnAnswer,
151
+ isFocused: isFocused,
152
+ onBlur: handleBlur,
153
+ onFocus: handleFocus(id),
154
+ onChange: handleInputChange(item),
155
+ textStyle: styles.text,
156
+ style: [styles.input, value && selectedStyle],
157
+ testID: `${id}-select${selectedSuffix}${disabledSuffix}`
158
+ }));
159
+ }
160
+ }
161
+
162
+ return /*#__PURE__*/React.createElement(Html, {
163
+ key: id,
164
+ fontSize: theme.fontSize.regular,
165
+ testID: id,
166
+ style: styles.htmlText
167
+ }, trim(part.value || ''));
168
+ };
169
+
170
+ const QuestionTemplate = props => {
171
+ const {
172
+ template,
173
+ onInputChange,
174
+ userChoices,
175
+ items,
176
+ handleBlur,
177
+ handleFocus,
178
+ focusedSelectId,
179
+ isDisabled = false
180
+ } = props;
181
+ const templateContext = useTemplateContext();
182
+ const {
183
+ theme
184
+ } = templateContext;
185
+ const [styleSheet, setStylesheet] = useState(null);
186
+ useEffect(() => {
187
+ const _stylesheet = createStyleSheet(theme);
188
+
189
+ setStylesheet(_stylesheet);
190
+ }, [theme]);
191
+
192
+ if (!template || !styleSheet) {
193
+ return null;
194
+ }
195
+
196
+ const parts = parseTemplateString(template);
197
+ const sections = parts.reduce((result, item) => {
198
+ const section = last(result) || [];
199
+ return result.slice(0, -1).concat([section.concat([item])]);
200
+ }, []);
201
+ return /*#__PURE__*/React.createElement(View, {
202
+ style: {
203
+ flex: 1
204
+ },
205
+ testID: "question-template"
206
+ }, sections.map((section, index) => /*#__PURE__*/React.createElement(Section, {
207
+ key: index,
208
+ section: section,
209
+ items: items,
210
+ index: index,
211
+ handleBlur: handleBlur,
212
+ handleFocus: handleFocus,
213
+ focusedSelectId: focusedSelectId,
214
+ onInputChange: onInputChange,
215
+ userChoices: userChoices,
216
+ isDisabled: isDisabled,
217
+ styles: styleSheet
218
+ })));
219
+ };
220
+
221
+ export default QuestionTemplate;
222
+ //# sourceMappingURL=index.native.js.map
@@ -0,0 +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,11 +1,13 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
+ import CMPopin from '../../../molecule/cm-popin';
3
4
  import SlidesPlayer from './slides';
4
5
  import style from './style.css';
5
6
 
6
7
  const SlidePlayer = props => {
7
8
  const {
8
- player
9
+ player,
10
+ popin
9
11
  } = props;
10
12
  const backgroundImage = player.backgroundUrl ? `url(${player.backgroundUrl})` : null;
11
13
  return /*#__PURE__*/React.createElement("div", {
@@ -18,11 +20,12 @@ const SlidePlayer = props => {
18
20
  style: {
19
21
  backgroundImage
20
22
  }
21
- }), /*#__PURE__*/React.createElement(SlidesPlayer, player)));
23
+ }), /*#__PURE__*/React.createElement(SlidesPlayer, player), popin ? /*#__PURE__*/React.createElement(CMPopin, popin) : null));
22
24
  };
23
25
 
24
26
  SlidePlayer.propTypes = process.env.NODE_ENV !== "production" ? {
25
- player: PropTypes.shape(SlidesPlayer.propTypes)
27
+ player: PropTypes.shape(SlidesPlayer.propTypes),
28
+ popin: PropTypes.shape(CMPopin.propTypes)
26
29
  } : {};
27
30
  export default SlidePlayer;
28
31
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/template/app-player/player/index.js"],"names":["React","PropTypes","SlidesPlayer","style","SlidePlayer","props","player","backgroundImage","backgroundUrl","wrapper","playerWrapper","playerBackground","propTypes","shape"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,YAAP,MAAyB,UAAzB;AACA,OAAOC,KAAP,MAAkB,aAAlB;;AAEA,MAAMC,WAAW,GAAGC,KAAK,IAAI;AAC3B,QAAM;AAACC,IAAAA;AAAD,MAAWD,KAAjB;AACA,QAAME,eAAe,GAAGD,MAAM,CAACE,aAAP,GAAwB,OAAMF,MAAM,CAACE,aAAc,GAAnD,GAAwD,IAAhF;AACA,sBACE;AAAK,iBAAU,aAAf;AAA6B,IAAA,SAAS,EAAEL,KAAK,CAACM;AAA9C,kBACE;AAAK,IAAA,SAAS,EAAEN,KAAK,CAACO;AAAtB,kBACE;AAAK,IAAA,SAAS,EAAEP,KAAK,CAACQ,gBAAtB;AAAwC,IAAA,KAAK,EAAE;AAACJ,MAAAA;AAAD;AAA/C,IADF,eAEE,oBAAC,YAAD,EAAkBD,MAAlB,CAFF,CADF,CADF;AAQD,CAXD;;AAaAF,WAAW,CAACQ,SAAZ,2CAAwB;AACtBN,EAAAA,MAAM,EAAEL,SAAS,CAACY,KAAV,CAAgBX,YAAY,CAACU,SAA7B;AADc,CAAxB;AAIA,eAAeR,WAAf","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport SlidesPlayer from './slides';\nimport style from './style.css';\n\nconst SlidePlayer = props => {\n const {player} = props;\n const backgroundImage = player.backgroundUrl ? `url(${player.backgroundUrl})` : null;\n return (\n <div data-name=\"slidePlayer\" className={style.wrapper}>\n <div className={style.playerWrapper}>\n <div className={style.playerBackground} style={{backgroundImage}} />\n <SlidesPlayer {...player} />\n </div>\n </div>\n );\n};\n\nSlidePlayer.propTypes = {\n player: PropTypes.shape(SlidesPlayer.propTypes)\n};\n\nexport default SlidePlayer;\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../../src/template/app-player/player/index.js"],"names":["React","PropTypes","CMPopin","SlidesPlayer","style","SlidePlayer","props","player","popin","backgroundImage","backgroundUrl","wrapper","playerWrapper","playerBackground","propTypes","shape"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,OAAP,MAAoB,4BAApB;AACA,OAAOC,YAAP,MAAyB,UAAzB;AACA,OAAOC,KAAP,MAAkB,aAAlB;;AAEA,MAAMC,WAAW,GAAGC,KAAK,IAAI;AAC3B,QAAM;AAACC,IAAAA,MAAD;AAASC,IAAAA;AAAT,MAAkBF,KAAxB;AACA,QAAMG,eAAe,GAAGF,MAAM,CAACG,aAAP,GAAwB,OAAMH,MAAM,CAACG,aAAc,GAAnD,GAAwD,IAAhF;AACA,sBACE;AAAK,iBAAU,aAAf;AAA6B,IAAA,SAAS,EAAEN,KAAK,CAACO;AAA9C,kBACE;AAAK,IAAA,SAAS,EAAEP,KAAK,CAACQ;AAAtB,kBACE;AAAK,IAAA,SAAS,EAAER,KAAK,CAACS,gBAAtB;AAAwC,IAAA,KAAK,EAAE;AAACJ,MAAAA;AAAD;AAA/C,IADF,eAEE,oBAAC,YAAD,EAAkBF,MAAlB,CAFF,EAGGC,KAAK,gBAAG,oBAAC,OAAD,EAAaA,KAAb,CAAH,GAA4B,IAHpC,CADF,CADF;AASD,CAZD;;AAcAH,WAAW,CAACS,SAAZ,2CAAwB;AACtBP,EAAAA,MAAM,EAAEN,SAAS,CAACc,KAAV,CAAgBZ,YAAY,CAACW,SAA7B,CADc;AAEtBN,EAAAA,KAAK,EAAEP,SAAS,CAACc,KAAV,CAAgBb,OAAO,CAACY,SAAxB;AAFe,CAAxB;AAKA,eAAeT,WAAf","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport CMPopin from '../../../molecule/cm-popin';\nimport SlidesPlayer from './slides';\nimport style from './style.css';\n\nconst SlidePlayer = props => {\n const {player, popin} = props;\n const backgroundImage = player.backgroundUrl ? `url(${player.backgroundUrl})` : null;\n return (\n <div data-name=\"slidePlayer\" className={style.wrapper}>\n <div className={style.playerWrapper}>\n <div className={style.playerBackground} style={{backgroundImage}} />\n <SlidesPlayer {...player} />\n {popin ? <CMPopin {...popin} /> : null}\n </div>\n </div>\n );\n};\n\nSlidePlayer.propTypes = {\n player: PropTypes.shape(SlidesPlayer.propTypes),\n popin: PropTypes.shape(CMPopin.propTypes)\n};\n\nexport default SlidePlayer;\n"],"file":"index.js"}
@@ -1,29 +1,44 @@
1
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
+
1
3
  import React from 'react';
2
4
  import PropTypes from 'prop-types';
3
5
  import Header from '../player/slides/header';
4
6
  import Summary from './summary';
5
7
  import style from './style.css';
6
8
 
7
- const Content = props => /*#__PURE__*/React.createElement("div", {
8
- className: style.popinWrapper
9
- }, /*#__PURE__*/React.createElement(Summary, props));
9
+ const Content = props => {
10
+ const {
11
+ mode = 'default'
12
+ } = props;
13
+ return /*#__PURE__*/React.createElement("div", {
14
+ className: mode !== 'scorm' ? style.popinWrapper : null
15
+ }, /*#__PURE__*/React.createElement(Summary, props));
16
+ };
17
+
18
+ Content.propTypes = process.env.NODE_ENV !== "production" ? {
19
+ mode: PropTypes.oneOf(['scorm', 'default'])
20
+ } : {};
10
21
 
11
22
  const PopinEnd = props => {
12
23
  const {
13
24
  header,
14
- summary
25
+ summary,
26
+ mode = 'default'
15
27
  } = props;
16
28
  return /*#__PURE__*/React.createElement("div", {
17
29
  "data-name": "popinEnd",
18
30
  className: style.wrapper
19
31
  }, /*#__PURE__*/React.createElement("div", {
20
32
  className: style.slidesHeader
21
- }, /*#__PURE__*/React.createElement(Header, header)), /*#__PURE__*/React.createElement(Content, summary));
33
+ }, /*#__PURE__*/React.createElement(Header, header)), /*#__PURE__*/React.createElement(Content, _extends({}, summary, {
34
+ mode: mode
35
+ })));
22
36
  };
23
37
 
24
38
  PopinEnd.propTypes = process.env.NODE_ENV !== "production" ? {
25
39
  header: PropTypes.shape(Header.propTypes),
26
- summary: PropTypes.shape(Summary.propTypes)
40
+ summary: PropTypes.shape(Summary.propTypes),
41
+ mode: PropTypes.oneOf(['scorm', 'default'])
27
42
  } : {};
28
43
  export default PopinEnd;
29
44
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/template/app-player/popin-end/index.js"],"names":["React","PropTypes","Header","Summary","style","Content","props","popinWrapper","PopinEnd","header","summary","wrapper","slidesHeader","propTypes","shape"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,MAAP,MAAmB,yBAAnB;AACA,OAAOC,OAAP,MAAoB,WAApB;AACA,OAAOC,KAAP,MAAkB,aAAlB;;AAEA,MAAMC,OAAO,GAAGC,KAAK,iBACnB;AAAK,EAAA,SAAS,EAAEF,KAAK,CAACG;AAAtB,gBACE,oBAAC,OAAD,EAAaD,KAAb,CADF,CADF;;AAMA,MAAME,QAAQ,GAAGF,KAAK,IAAI;AACxB,QAAM;AAACG,IAAAA,MAAD;AAASC,IAAAA;AAAT,MAAoBJ,KAA1B;AACA,sBACE;AAAK,iBAAU,UAAf;AAA0B,IAAA,SAAS,EAAEF,KAAK,CAACO;AAA3C,kBACE;AAAK,IAAA,SAAS,EAAEP,KAAK,CAACQ;AAAtB,kBACE,oBAAC,MAAD,EAAYH,MAAZ,CADF,CADF,eAIE,oBAAC,OAAD,EAAaC,OAAb,CAJF,CADF;AAQD,CAVD;;AAYAF,QAAQ,CAACK,SAAT,2CAAqB;AACnBJ,EAAAA,MAAM,EAAER,SAAS,CAACa,KAAV,CAAgBZ,MAAM,CAACW,SAAvB,CADW;AAEnBH,EAAAA,OAAO,EAAET,SAAS,CAACa,KAAV,CAAgBX,OAAO,CAACU,SAAxB;AAFU,CAArB;AAKA,eAAeL,QAAf","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Header from '../player/slides/header';\nimport Summary from './summary';\nimport style from './style.css';\n\nconst Content = props => (\n <div className={style.popinWrapper}>\n <Summary {...props} />\n </div>\n);\n\nconst PopinEnd = props => {\n const {header, summary} = props;\n return (\n <div data-name=\"popinEnd\" className={style.wrapper}>\n <div className={style.slidesHeader}>\n <Header {...header} />\n </div>\n <Content {...summary} />\n </div>\n );\n};\n\nPopinEnd.propTypes = {\n header: PropTypes.shape(Header.propTypes),\n summary: PropTypes.shape(Summary.propTypes)\n};\n\nexport default PopinEnd;\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../../src/template/app-player/popin-end/index.js"],"names":["React","PropTypes","Header","Summary","style","Content","props","mode","popinWrapper","propTypes","oneOf","PopinEnd","header","summary","wrapper","slidesHeader","shape"],"mappings":";;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,MAAP,MAAmB,yBAAnB;AACA,OAAOC,OAAP,MAAoB,WAApB;AACA,OAAOC,KAAP,MAAkB,aAAlB;;AAEA,MAAMC,OAAO,GAAGC,KAAK,IAAI;AACvB,QAAM;AAACC,IAAAA,IAAI,GAAG;AAAR,MAAqBD,KAA3B;AACA,sBACE;AAAK,IAAA,SAAS,EAAEC,IAAI,KAAK,OAAT,GAAmBH,KAAK,CAACI,YAAzB,GAAwC;AAAxD,kBACE,oBAAC,OAAD,EAAaF,KAAb,CADF,CADF;AAKD,CAPD;;AAQAD,OAAO,CAACI,SAAR,2CAAoB;AAClBF,EAAAA,IAAI,EAAEN,SAAS,CAACS,KAAV,CAAgB,CAAC,OAAD,EAAU,SAAV,CAAhB;AADY,CAApB;;AAIA,MAAMC,QAAQ,GAAGL,KAAK,IAAI;AACxB,QAAM;AAACM,IAAAA,MAAD;AAASC,IAAAA,OAAT;AAAkBN,IAAAA,IAAI,GAAG;AAAzB,MAAsCD,KAA5C;AACA,sBACE;AAAK,iBAAU,UAAf;AAA0B,IAAA,SAAS,EAAEF,KAAK,CAACU;AAA3C,kBACE;AAAK,IAAA,SAAS,EAAEV,KAAK,CAACW;AAAtB,kBACE,oBAAC,MAAD,EAAYH,MAAZ,CADF,CADF,eAIE,oBAAC,OAAD,eAAaC,OAAb;AAAsB,IAAA,IAAI,EAAEN;AAA5B,KAJF,CADF;AAQD,CAVD;;AAYAI,QAAQ,CAACF,SAAT,2CAAqB;AACnBG,EAAAA,MAAM,EAAEX,SAAS,CAACe,KAAV,CAAgBd,MAAM,CAACO,SAAvB,CADW;AAEnBI,EAAAA,OAAO,EAAEZ,SAAS,CAACe,KAAV,CAAgBb,OAAO,CAACM,SAAxB,CAFU;AAGnBF,EAAAA,IAAI,EAAEN,SAAS,CAACS,KAAV,CAAgB,CAAC,OAAD,EAAU,SAAV,CAAhB;AAHa,CAArB;AAMA,eAAeC,QAAf","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Header from '../player/slides/header';\nimport Summary from './summary';\nimport style from './style.css';\n\nconst Content = props => {\n const {mode = 'default'} = props;\n return (\n <div className={mode !== 'scorm' ? style.popinWrapper : null}>\n <Summary {...props} />\n </div>\n );\n};\nContent.propTypes = {\n mode: PropTypes.oneOf(['scorm', 'default'])\n};\n\nconst PopinEnd = props => {\n const {header, summary, mode = 'default'} = props;\n return (\n <div data-name=\"popinEnd\" className={style.wrapper}>\n <div className={style.slidesHeader}>\n <Header {...header} />\n </div>\n <Content {...summary} mode={mode} />\n </div>\n );\n};\n\nPopinEnd.propTypes = {\n header: PropTypes.shape(Header.propTypes),\n summary: PropTypes.shape(Summary.propTypes),\n mode: PropTypes.oneOf(['scorm', 'default'])\n};\n\nexport default PopinEnd;\n"],"file":"index.js"}
@@ -27,4 +27,4 @@
27
27
  .slidesHeader {
28
28
  display: none;
29
29
  }
30
- }
30
+ }
@@ -253,6 +253,60 @@
253
253
  margin: 0;
254
254
  }
255
255
 
256
+ .circle {
257
+ border-radius: 50%;
258
+ border: 1px solid light;
259
+ display: flex;
260
+ justify-content: center;
261
+ align-items: center;
262
+ }
263
+
264
+ .smallCircle {
265
+ height: calc(100vh + 136px);
266
+ width: calc(100vh + 136px);
267
+ composes: circle;
268
+ }
269
+ .mediumCircle {
270
+ height: calc(100vh + 386px);
271
+ width: calc(100vh + 386px);
272
+ composes: circle;
273
+ }
274
+ .largeCircle {
275
+ height: calc(100vh + 636px);
276
+ width: calc(100vh + 636px);
277
+ composes: circle;
278
+ }
279
+ .organismPlayerResultContainerScorm {
280
+ height: calc(100vh - 60px);
281
+ width: 100%;
282
+ display: flex;
283
+ justify-content: center;
284
+ align-items: center;
285
+ overflow: hidden;
286
+ }
287
+ .lottie {
288
+ display: flex;
289
+ height: 135%;
290
+ width: 135%;
291
+ transform: translate(-13%, -13%);
292
+ }
293
+ .animationContainer {
294
+ height: calc(100vh - 60px);
295
+ overflow: hidden;
296
+ position: absolute;
297
+ z-index: 1;
298
+ width: 100%;
299
+ }
300
+ .ie11Backup {
301
+ position: relative;
302
+ transform: translate(0%, 10%);
303
+ height: 80%;
304
+ width: 80%;
305
+ margin: 0 auto;
306
+ z-index: 1;
307
+ }
308
+
309
+
256
310
  @media mobile {
257
311
  .commentSection {
258
312
  flex-direction: column;
@@ -265,6 +319,17 @@
265
319
  width: 100%;
266
320
  }
267
321
  }
322
+ @media tablet {
323
+ .organismPlayerResultContainerScorm {
324
+ height: 100%;
325
+ }
326
+ .largeCircle , .mediumCircle, .smallCircle {
327
+ border: 0px;
328
+ height: 100%;
329
+ width: 100%;
330
+ border-radius: 0;
331
+ }
332
+ }
268
333
 
269
334
  .commentSectionLink {
270
335
  font-family: Gilroy;