@coorpacademy/components 10.22.3 → 10.22.6

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 (166) hide show
  1. package/README.md +11 -5
  2. package/es/atom/choice/index.native.js +132 -0
  3. package/es/atom/choice/index.native.js.map +1 -0
  4. package/es/atom/drag-and-drop/index.js +2 -1
  5. package/es/atom/drag-and-drop/index.js.map +1 -1
  6. package/es/atom/gradient/index.native.js +46 -0
  7. package/es/atom/gradient/index.native.js.map +1 -0
  8. package/es/atom/header-back-button/index.native.js +3 -4
  9. package/es/atom/header-back-button/index.native.js.map +1 -1
  10. package/es/atom/html/index.native.js +146 -0
  11. package/es/atom/html/index.native.js.map +1 -0
  12. package/es/atom/image-backgound/index.native.js +90 -0
  13. package/es/atom/image-backgound/index.native.js.map +1 -0
  14. package/es/atom/input-checkbox/index.js +3 -2
  15. package/es/atom/input-checkbox/index.js.map +1 -1
  16. package/es/atom/input-switch/index.js +45 -7
  17. package/es/atom/input-switch/index.js.map +1 -1
  18. package/es/atom/input-switch/style.css +56 -6
  19. package/es/atom/select-modal/index.native.js +113 -0
  20. package/es/atom/select-modal/index.native.js.map +1 -0
  21. package/es/atom/space/index.native.js +21 -0
  22. package/es/atom/space/index.native.js.map +1 -0
  23. package/es/atom/text/index.native.js +31 -0
  24. package/es/atom/text/index.native.js.map +1 -0
  25. package/es/hoc/modal/index.native.js +97 -0
  26. package/es/hoc/modal/index.native.js.map +1 -0
  27. package/es/hoc/modal/select/index.native.js +86 -0
  28. package/es/hoc/modal/select/index.native.js.map +1 -0
  29. package/es/hoc/modal/select-item/index.native.js +54 -0
  30. package/es/hoc/modal/select-item/index.native.js.map +1 -0
  31. package/es/hoc/touchable/index.native.js.map +1 -1
  32. package/es/index.js +2 -1
  33. package/es/index.js.map +1 -1
  34. package/es/molecule/answer/index.js +39 -32
  35. package/es/molecule/answer/index.js.map +1 -1
  36. package/es/molecule/cm-popin/index.js +125 -19
  37. package/es/molecule/cm-popin/index.js.map +1 -1
  38. package/es/molecule/cm-popin/style.css +176 -9
  39. package/es/molecule/feedback/index.js +7 -3
  40. package/es/molecule/feedback/index.js.map +1 -1
  41. package/es/molecule/feedback/style.css +24 -0
  42. package/es/molecule/questions/free-text/index.native.js +8 -8
  43. package/es/molecule/questions/free-text/index.native.js.map +1 -1
  44. package/es/molecule/questions/mobile/template/index.native.js +222 -0
  45. package/es/molecule/questions/mobile/template/index.native.js.map +1 -0
  46. package/es/template/app-player/player/index.js +6 -3
  47. package/es/template/app-player/player/index.js.map +1 -1
  48. package/es/template/app-player/popin-end/index.js +21 -6
  49. package/es/template/app-player/popin-end/index.js.map +1 -1
  50. package/es/template/app-player/popin-end/style.css +1 -1
  51. package/es/template/app-player/popin-end/summary.css +65 -0
  52. package/es/template/app-player/popin-end/summary.js +57 -7
  53. package/es/template/app-player/popin-end/summary.js.map +1 -1
  54. package/es/template/app-player/popin-header/index.js +33 -12
  55. package/es/template/app-player/popin-header/index.js.map +1 -1
  56. package/es/template/app-player/popin-header/style.css +93 -0
  57. package/es/template/app-player/popin-no-access/index.js +27 -0
  58. package/es/template/app-player/popin-no-access/index.js.map +1 -0
  59. package/es/template/app-review/prop-types.js +2 -1
  60. package/es/template/app-review/prop-types.js.map +1 -1
  61. package/es/template/app-review/slides/index.js +2 -2
  62. package/es/template/app-review/slides/index.js.map +1 -1
  63. package/es/template/app-review/template-context.js +1 -0
  64. package/es/template/app-review/template-context.js.map +1 -1
  65. package/es/template/common/dashboard/index.js +6 -3
  66. package/es/template/common/dashboard/index.js.map +1 -1
  67. package/es/types/app-review.d.js +2 -0
  68. package/es/types/app-review.d.js.map +1 -0
  69. package/es/types/progression-engine.d.js +2 -0
  70. package/es/types/progression-engine.d.js.map +1 -0
  71. package/es/types/translations.js +2 -0
  72. package/es/types/translations.js.map +1 -0
  73. package/es/util/build-query-string.js +9 -0
  74. package/es/util/build-query-string.js.map +1 -0
  75. package/es/util/get-clean-uri.js +4 -0
  76. package/es/util/get-clean-uri.js.map +1 -0
  77. package/es/util/get-resized-image.js +39 -0
  78. package/es/util/get-resized-image.js.map +1 -0
  79. package/es/util/parse-template-string.js +4 -2
  80. package/es/util/parse-template-string.js.map +1 -1
  81. package/es/variables/colors.css +1 -0
  82. package/es/variables/theme.native.js +1 -0
  83. package/es/variables/theme.native.js.map +1 -1
  84. package/lib/atom/choice/index.native.js +150 -0
  85. package/lib/atom/choice/index.native.js.map +1 -0
  86. package/lib/atom/drag-and-drop/index.js +2 -1
  87. package/lib/atom/drag-and-drop/index.js.map +1 -1
  88. package/lib/atom/gradient/index.native.js +56 -0
  89. package/lib/atom/gradient/index.native.js.map +1 -0
  90. package/lib/atom/header-back-button/index.native.js +3 -4
  91. package/lib/atom/header-back-button/index.native.js.map +1 -1
  92. package/lib/atom/html/index.native.js +163 -0
  93. package/lib/atom/html/index.native.js.map +1 -0
  94. package/lib/atom/image-backgound/index.native.js +105 -0
  95. package/lib/atom/image-backgound/index.native.js.map +1 -0
  96. package/lib/atom/input-checkbox/index.js +2 -1
  97. package/lib/atom/input-checkbox/index.js.map +1 -1
  98. package/lib/atom/input-switch/index.js +45 -7
  99. package/lib/atom/input-switch/index.js.map +1 -1
  100. package/lib/atom/input-switch/style.css +56 -6
  101. package/lib/atom/select-modal/index.native.js +135 -0
  102. package/lib/atom/select-modal/index.native.js.map +1 -0
  103. package/lib/atom/space/index.native.js +33 -0
  104. package/lib/atom/space/index.native.js.map +1 -0
  105. package/lib/atom/text/index.native.js +46 -0
  106. package/lib/atom/text/index.native.js.map +1 -0
  107. package/lib/hoc/modal/index.native.js +114 -0
  108. package/lib/hoc/modal/index.native.js.map +1 -0
  109. package/lib/hoc/modal/select/index.native.js +103 -0
  110. package/lib/hoc/modal/select/index.native.js.map +1 -0
  111. package/lib/hoc/modal/select-item/index.native.js +70 -0
  112. package/lib/hoc/modal/select-item/index.native.js.map +1 -0
  113. package/lib/hoc/touchable/index.native.js.map +1 -1
  114. package/lib/index.js +4 -0
  115. package/lib/index.js.map +1 -1
  116. package/lib/molecule/answer/index.js +39 -32
  117. package/lib/molecule/answer/index.js.map +1 -1
  118. package/lib/molecule/cm-popin/index.js +126 -18
  119. package/lib/molecule/cm-popin/index.js.map +1 -1
  120. package/lib/molecule/cm-popin/style.css +176 -9
  121. package/lib/molecule/feedback/index.js +7 -3
  122. package/lib/molecule/feedback/index.js.map +1 -1
  123. package/lib/molecule/feedback/style.css +24 -0
  124. package/lib/molecule/questions/free-text/index.native.js +7 -7
  125. package/lib/molecule/questions/free-text/index.native.js.map +1 -1
  126. package/lib/molecule/questions/mobile/template/index.native.js +243 -0
  127. package/lib/molecule/questions/mobile/template/index.native.js.map +1 -0
  128. package/lib/template/app-player/player/index.js +7 -3
  129. package/lib/template/app-player/player/index.js.map +1 -1
  130. package/lib/template/app-player/popin-end/index.js +21 -6
  131. package/lib/template/app-player/popin-end/index.js.map +1 -1
  132. package/lib/template/app-player/popin-end/style.css +1 -1
  133. package/lib/template/app-player/popin-end/summary.css +65 -0
  134. package/lib/template/app-player/popin-end/summary.js +58 -7
  135. package/lib/template/app-player/popin-end/summary.js.map +1 -1
  136. package/lib/template/app-player/popin-header/index.js +32 -11
  137. package/lib/template/app-player/popin-header/index.js.map +1 -1
  138. package/lib/template/app-player/popin-header/style.css +93 -0
  139. package/lib/template/app-player/popin-no-access/index.js +37 -0
  140. package/lib/template/app-player/popin-no-access/index.js.map +1 -0
  141. package/lib/template/app-review/prop-types.js +2 -1
  142. package/lib/template/app-review/prop-types.js.map +1 -1
  143. package/lib/template/app-review/slides/index.js +2 -2
  144. package/lib/template/app-review/slides/index.js.map +1 -1
  145. package/lib/template/app-review/template-context.js +1 -0
  146. package/lib/template/app-review/template-context.js.map +1 -1
  147. package/lib/template/common/dashboard/index.js +7 -3
  148. package/lib/template/common/dashboard/index.js.map +1 -1
  149. package/lib/types/app-review.d.js +2 -0
  150. package/lib/types/app-review.d.js.map +1 -0
  151. package/lib/types/progression-engine.d.js +2 -0
  152. package/lib/types/progression-engine.d.js.map +1 -0
  153. package/lib/types/translations.js +2 -0
  154. package/lib/types/translations.js.map +1 -0
  155. package/lib/util/build-query-string.js +17 -0
  156. package/lib/util/build-query-string.js.map +1 -0
  157. package/lib/util/get-clean-uri.js +10 -0
  158. package/lib/util/get-clean-uri.js.map +1 -0
  159. package/lib/util/get-resized-image.js +49 -0
  160. package/lib/util/get-resized-image.js.map +1 -0
  161. package/lib/util/parse-template-string.js +4 -2
  162. package/lib/util/parse-template-string.js.map +1 -1
  163. package/lib/variables/colors.css +1 -0
  164. package/lib/variables/theme.native.js +3 -1
  165. package/lib/variables/theme.native.js.map +1 -1
  166. package/package.json +8 -4
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/atom/image-backgound/index.native.tsx"],"names":["React","ImageBackground","ImageBackgroundBase","StyleSheet","getCleanUri","getResizedImage","Gradient","styles","create","image","width","height","gradient","flex","source","gradientStyle","style","testID","props","uri","_width","_height","resizeMode","flatten","maxHeight","undefined","maxWidth","resizedSource","children","remainingProps","_style","push"],"mappings":";;;;AAAA,OAAOA,KAAP,MAA+B,OAA/B;AACA,SACEC,eAAe,IAAIC,mBADrB,EAEEC,UAFF,QAKO,cALP;AAOA,OAAOC,WAAP,MAAwB,0BAAxB;AAEA,OAAOC,eAAP,MAA4B,8BAA5B;AACA,OAAOC,QAAP,MAAqB,0BAArB;AAEA,MAAMC,MAAM,GAAGJ,UAAU,CAACK,MAAX,CAAkB;AAC/BC,EAAAA,KAAK,EAAE;AACLC,IAAAA,KAAK,EAAE,MADF;AAELC,IAAAA,MAAM,EAAE;AAFH,GADwB;AAK/BC,EAAAA,QAAQ,EAAE;AACRC,IAAAA,IAAI,EAAE;AADE;AALqB,CAAlB,CAAf;;AAmBA,MAAMZ,eAAe,GAAG,UAOX;AAAA,MAPY;AACvBa,IAAAA,MADuB;AAEvBF,IAAAA,QAFuB;AAGvBG,IAAAA,aAHuB;AAIvBC,IAAAA,KAJuB;AAKvBC,IAAAA,MAAM,GAAG;AALc,GAOZ;AAAA,MADRC,KACQ;;AACX;AACA,MAAIC,GAAuB,GAAGL,MAAM,IAAIA,MAAM,CAACK,GAA/C;;AAEA,MAAIA,GAAJ,EAAS;AACP,UAAM;AAACT,MAAAA,KAAK,EAAEU,MAAR;AAAgBT,MAAAA,MAAM,EAAEU,OAAxB;AAAiCC,MAAAA;AAAjC,QAA+CJ,KAArD;AACA,UAAM;AAACR,MAAAA,KAAD;AAAQC,MAAAA;AAAR,QAAkBR,UAAU,CAACoB,OAAX,CAAmB,CAAC;AAACb,MAAAA,KAAK,EAAEU,MAAR;AAAgBT,MAAAA,MAAM,EAAEU;AAAxB,KAAD,EAAmCL,KAAnC,CAAnB,CAAxB;AACA,UAAMQ,SAA6B,GAAG,OAAOb,MAAP,KAAkB,QAAlB,GAA6BA,MAA7B,GAAsCc,SAA5E;AACA,UAAMC,QAA4B,GAAG,OAAOhB,KAAP,KAAiB,QAAjB,GAA4BA,KAA5B,GAAoCe,SAAzE;AAEAN,IAAAA,GAAG,GAAGd,eAAe,CAACD,WAAW,CAACe,GAAD,CAAZ,EAAmB;AACtCK,MAAAA,SADsC;AAEtCE,MAAAA,QAFsC;AAGtCJ,MAAAA;AAHsC,KAAnB,CAArB;AAKD;;AAED,QAAMK,aAAa,GAAIR,GAAG,IAAI;AAACA,IAAAA;AAAD,GAAR,IAAkBL,MAAxC;;AAEA,MAAIF,QAAJ,EAAc;AACZ,UAAM;AAACgB,MAAAA;AAAD,QAAgCV,KAAtC;AAAA,UAAoBW,cAApB,iCAAsCX,KAAtC;;AACA,UAAMY,MAAmB,GAAG,CAACvB,MAAM,CAACK,QAAR,CAA5B;;AAEA,QAAIG,aAAJ,EAAmB;AACjBe,MAAAA,MAAM,CAACC,IAAP,CAAYhB,aAAZ;AACD;;AAED,wBACE,oBAAC,mBAAD,eACMc,cADN;AAEE,MAAA,MAAM,EAAEF,aAFV;AAGE,MAAA,KAAK,EAAE,CAACpB,MAAM,CAACE,KAAR,EAAeO,KAAf,CAHT;AAIE,MAAA,MAAM,EAAEC;AAJV,qBAME,oBAAC,QAAD;AAAU,MAAA,MAAM,EAAG,GAAEA,MAAO,WAA5B;AAAwC,MAAA,MAAM,EAAEL,QAAhD;AAA0D,MAAA,KAAK,EAAEkB;AAAjE,OACGF,QADH,CANF,CADF;AAYD;;AAED,sBACE,oBAAC,mBAAD,eACMV,KADN;AAEE,IAAA,MAAM,EAAES,aAFV;AAGE,IAAA,KAAK,EAAE,CAACpB,MAAM,CAACE,KAAR,EAAeO,KAAf,CAHT;AAIE,IAAA,MAAM,EAAEC;AAJV,KADF;AAQD,CAxDD;;AA0DA,eAAehB,eAAf","sourcesContent":["import React, {ReactNode} from 'react';\nimport {\n ImageBackground as ImageBackgroundBase,\n StyleSheet,\n ViewStyle,\n ImageStyle\n} from 'react-native';\n\nimport getCleanUri from '../../util/get-clean-uri';\n\nimport getResizedImage from '../../util/get-resized-image';\nimport Gradient from '../gradient/index.native';\n\nconst styles = StyleSheet.create({\n image: {\n width: '100%',\n height: '100%'\n },\n gradient: {\n flex: 1\n }\n});\n\nexport type Props = ImageStyle & {\n children?: ReactNode;\n gradient?: Array<string>;\n gradientStyle?: ViewStyle;\n testID?: string;\n source: {uri: string | undefined};\n style?: ViewStyle;\n};\n\nconst ImageBackground = ({\n source,\n gradient,\n gradientStyle,\n style,\n testID = 'image-background',\n ...props\n}: Props) => {\n // @ts-ignore this statement is enough but type is too weak\n let uri: string | undefined = source && source.uri;\n\n if (uri) {\n const {width: _width, height: _height, resizeMode} = props;\n const {width, height} = StyleSheet.flatten([{width: _width, height: _height}, style]);\n const maxHeight: number | undefined = typeof height === 'number' ? height : undefined;\n const maxWidth: number | undefined = typeof width === 'number' ? width : undefined;\n\n uri = getResizedImage(getCleanUri(uri), {\n maxHeight,\n maxWidth,\n resizeMode\n });\n }\n\n const resizedSource = (uri && {uri}) || source;\n\n if (gradient) {\n const {children, ...remainingProps} = props;\n const _style: ViewStyle[] = [styles.gradient];\n\n if (gradientStyle) {\n _style.push(gradientStyle);\n }\n\n return (\n <ImageBackgroundBase\n {...remainingProps}\n source={resizedSource}\n style={[styles.image, style]}\n testID={testID}\n >\n <Gradient testID={`${testID}-gradient`} colors={gradient} style={_style}>\n {children}\n </Gradient>\n </ImageBackgroundBase>\n );\n }\n\n return (\n <ImageBackgroundBase\n {...props}\n source={resizedSource}\n style={[styles.image, style]}\n testID={testID}\n />\n );\n};\n\nexport default ImageBackground;\n"],"file":"index.native.js"}
@@ -1,7 +1,7 @@
1
1
  import _uniqueId from "lodash/fp/uniqueId";
2
2
  import _noop from "lodash/fp/noop";
3
3
  import _keys from "lodash/fp/keys";
4
- import React, { useMemo } from 'react';
4
+ import React, { useCallback } from 'react';
5
5
  import PropTypes from 'prop-types';
6
6
  import classnames from 'classnames';
7
7
  import { NovaSolidStatusValidate as CheckIcon } from '@coorpacademy/nova-icons';
@@ -32,7 +32,7 @@ const InputCheckbox = props => {
32
32
  const idCheckbox = _uniqueId('input-checkbox-');
33
33
 
34
34
  const title = `${propsTitle}${required ? '*' : ''}`;
35
- const handleChange = useMemo(() => e => onChange(e.target.checked), [onChange]);
35
+ const handleChange = useCallback(e => onChange(e.target.checked), [onChange]);
36
36
  const modifiedClassName = theme === 'coorpmanager' ? style.coorpManagerModified : style.defaultModified;
37
37
  const errorClassName = theme === 'coorpmanager' ? style.coorpManagerError : style.defaultError;
38
38
  const defaultContainerClassName = theme === 'coorpmanager' ? style.coorpManager : style.default;
@@ -51,6 +51,7 @@ const InputCheckbox = props => {
51
51
  disabled: disabled,
52
52
  "data-name": "checkbox-input"
53
53
  }), /*#__PURE__*/React.createElement("div", {
54
+ "data-name": "checkbox-label",
54
55
  className: classnames(style.label, noLabelMargins ? style.noLabelMargins : undefined)
55
56
  }, /*#__PURE__*/React.createElement(CheckIcon, {
56
57
  className: style.icon
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/atom/input-checkbox/index.js"],"names":["React","useMemo","PropTypes","classnames","NovaSolidStatusValidate","CheckIcon","getClassState","style","titleStylesClassNames","inherit","primary","secondary","tertiary","InputCheckbox","props","checked","onChange","error","disabled","required","titleStyle","modified","theme","title","propsTitle","noLabelMargins","titleStyleClassName","idCheckbox","handleChange","e","target","modifiedClassName","coorpManagerModified","defaultModified","errorClassName","coorpManagerError","defaultError","defaultContainerClassName","coorpManager","default","className","checkbox","label","undefined","icon","propTypes","string","isRequired","bool","func","oneOf"],"mappings":"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","sourcesContent":["import React, {useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {NovaSolidStatusValidate as CheckIcon} from '@coorpacademy/nova-icons';\nimport {keys, noop, uniqueId} from 'lodash/fp';\nimport getClassState from '../../util/get-class-state';\nimport style from './style.css';\n\nconst titleStylesClassNames = {\n inherit: style.inherit,\n primary: style.primary,\n secondary: style.secondary,\n tertiary: style.tertiary\n};\n\nconst InputCheckbox = props => {\n const {\n checked,\n onChange = noop,\n error,\n disabled,\n required,\n titleStyle = 'primary',\n modified = false,\n theme = 'default',\n title: propsTitle,\n noLabelMargins = false\n } = props;\n\n const titleStyleClassName = titleStylesClassNames[titleStyle];\n const idCheckbox = uniqueId('input-checkbox-');\n const title = `${propsTitle}${required ? '*' : ''}`;\n const handleChange = useMemo(() => e => onChange(e.target.checked), [onChange]);\n\n const modifiedClassName =\n theme === 'coorpmanager' ? style.coorpManagerModified : style.defaultModified;\n const errorClassName = theme === 'coorpmanager' ? style.coorpManagerError : style.defaultError;\n const defaultContainerClassName = theme === 'coorpmanager' ? style.coorpManager : style.default;\n\n const className = getClassState(\n defaultContainerClassName,\n modifiedClassName,\n errorClassName,\n modified,\n error\n );\n\n return (\n <label className={className} htmlFor={idCheckbox} data-name=\"checkbox-input-label\">\n <input\n type=\"checkbox\"\n className={style.checkbox}\n name={title}\n id={idCheckbox}\n checked={checked}\n onChange={handleChange}\n disabled={disabled}\n data-name=\"checkbox-input\"\n />\n <div className={classnames(style.label, noLabelMargins ? style.noLabelMargins : undefined)}>\n <CheckIcon className={style.icon} />\n </div>\n <span className={titleStyleClassName} title={title}>\n {title}\n </span>\n </label>\n );\n};\n\nInputCheckbox.propTypes = {\n title: PropTypes.string.isRequired,\n disabled: PropTypes.bool,\n required: PropTypes.bool,\n checked: PropTypes.bool,\n error: PropTypes.bool,\n onChange: PropTypes.func,\n modified: PropTypes.bool,\n noLabelMargins: PropTypes.bool,\n theme: PropTypes.oneOf(['coorpmanager', 'default']),\n titleStyle: PropTypes.oneOf(keys(titleStylesClassNames))\n};\n\nexport default InputCheckbox;\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../src/atom/input-checkbox/index.js"],"names":["React","useCallback","PropTypes","classnames","NovaSolidStatusValidate","CheckIcon","getClassState","style","titleStylesClassNames","inherit","primary","secondary","tertiary","InputCheckbox","props","checked","onChange","error","disabled","required","titleStyle","modified","theme","title","propsTitle","noLabelMargins","titleStyleClassName","idCheckbox","handleChange","e","target","modifiedClassName","coorpManagerModified","defaultModified","errorClassName","coorpManagerError","defaultError","defaultContainerClassName","coorpManager","default","className","checkbox","label","undefined","icon","propTypes","string","isRequired","bool","func","oneOf"],"mappings":"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","sourcesContent":["import React, {useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {NovaSolidStatusValidate as CheckIcon} from '@coorpacademy/nova-icons';\nimport {keys, noop, uniqueId} from 'lodash/fp';\nimport getClassState from '../../util/get-class-state';\nimport style from './style.css';\n\nconst titleStylesClassNames = {\n inherit: style.inherit,\n primary: style.primary,\n secondary: style.secondary,\n tertiary: style.tertiary\n};\n\nconst InputCheckbox = props => {\n const {\n checked,\n onChange = noop,\n error,\n disabled,\n required,\n titleStyle = 'primary',\n modified = false,\n theme = 'default',\n title: propsTitle,\n noLabelMargins = false\n } = props;\n\n const titleStyleClassName = titleStylesClassNames[titleStyle];\n const idCheckbox = uniqueId('input-checkbox-');\n const title = `${propsTitle}${required ? '*' : ''}`;\n const handleChange = useCallback(e => onChange(e.target.checked), [onChange]);\n\n const modifiedClassName =\n theme === 'coorpmanager' ? style.coorpManagerModified : style.defaultModified;\n const errorClassName = theme === 'coorpmanager' ? style.coorpManagerError : style.defaultError;\n const defaultContainerClassName = theme === 'coorpmanager' ? style.coorpManager : style.default;\n\n const className = getClassState(\n defaultContainerClassName,\n modifiedClassName,\n errorClassName,\n modified,\n error\n );\n\n return (\n <label className={className} htmlFor={idCheckbox} data-name=\"checkbox-input-label\">\n <input\n type=\"checkbox\"\n className={style.checkbox}\n name={title}\n id={idCheckbox}\n checked={checked}\n onChange={handleChange}\n disabled={disabled}\n data-name=\"checkbox-input\"\n />\n <div\n data-name=\"checkbox-label\"\n className={classnames(style.label, noLabelMargins ? style.noLabelMargins : undefined)}\n >\n <CheckIcon className={style.icon} />\n </div>\n <span className={titleStyleClassName} title={title}>\n {title}\n </span>\n </label>\n );\n};\n\nInputCheckbox.propTypes = {\n title: PropTypes.string.isRequired,\n disabled: PropTypes.bool,\n required: PropTypes.bool,\n checked: PropTypes.bool,\n error: PropTypes.bool,\n onChange: PropTypes.func,\n modified: PropTypes.bool,\n noLabelMargins: PropTypes.bool,\n theme: PropTypes.oneOf(['coorpmanager', 'default']),\n titleStyle: PropTypes.oneOf(keys(titleStylesClassNames))\n};\n\nexport default InputCheckbox;\n"],"file":"index.js"}
@@ -16,7 +16,9 @@ const InputSwitch = props => {
16
16
  description,
17
17
  modified = false,
18
18
  theme = 'default',
19
- titlePosition = 'left'
19
+ titlePosition = 'left',
20
+ details = '',
21
+ requiredSelection = false
20
22
  } = props;
21
23
 
22
24
  const idSwitch = id || _uniqueId('input-switch-');
@@ -29,13 +31,42 @@ const InputSwitch = props => {
29
31
  const descriptionView = description ? /*#__PURE__*/React.createElement("div", {
30
32
  className: style.description
31
33
  }, description) : null;
32
- const defaultClass = theme === 'coorpmanager' ? style.coorpmanager : style.default;
33
- const modifiedClass = theme === 'coorpmanager' ? style.coorpmanagerModified : style.modified;
34
+
35
+ const getClass = () => {
36
+ switch (theme) {
37
+ case 'coorpmanager':
38
+ return {
39
+ defaultClass: style.coorpmanager,
40
+ modifiedClass: style.coorpmanagerModified
41
+ };
42
+
43
+ case 'mooc':
44
+ return {
45
+ defaultClass: style.partielUncheck,
46
+ modifiedClass: style.coorpmanagerModified
47
+ };
48
+
49
+ default:
50
+ return {
51
+ defaultClass: style.default,
52
+ modifiedClass: style.modified
53
+ };
54
+ }
55
+ };
56
+
57
+ const {
58
+ defaultClass,
59
+ modifiedClass
60
+ } = getClass();
34
61
  const className = getClassState(defaultClass, modifiedClass, null, modified);
35
62
  return /*#__PURE__*/React.createElement("div", {
36
63
  className: className,
37
64
  "data-name": `switch-input-${theme}`
38
- }, titlePosition === 'left' ? titleView : null, /*#__PURE__*/React.createElement("input", {
65
+ }, titlePosition === 'left' ? titleView : null, /*#__PURE__*/React.createElement("div", {
66
+ className: requiredSelection ? style.requiredSelection : null
67
+ }, /*#__PURE__*/React.createElement("div", {
68
+ className: style.btnSwitchContainer
69
+ }, /*#__PURE__*/React.createElement("input", {
39
70
  type: "checkbox",
40
71
  id: idSwitch,
41
72
  name: name,
@@ -44,8 +75,13 @@ const InputSwitch = props => {
44
75
  disabled: isDisabled,
45
76
  className: style.checkbox
46
77
  }), /*#__PURE__*/React.createElement("label", {
47
- htmlFor: idSwitch
48
- }), titlePosition === 'right' ? titleView : null, descriptionView);
78
+ htmlFor: idSwitch,
79
+ "data-name": "input-switch-label"
80
+ }))), /*#__PURE__*/React.createElement("div", {
81
+ className: !details ? style.alignedTextContainer : null
82
+ }, titlePosition === 'right' ? titleView : null, details ? /*#__PURE__*/React.createElement("div", {
83
+ className: style.detailsTxt
84
+ }, details) : null), descriptionView);
49
85
  };
50
86
 
51
87
  InputSwitch.propTypes = process.env.NODE_ENV !== "production" ? {
@@ -58,7 +94,9 @@ InputSwitch.propTypes = process.env.NODE_ENV !== "production" ? {
58
94
  description: PropTypes.string,
59
95
  modified: PropTypes.bool,
60
96
  titlePosition: PropTypes.oneOf(['right', 'left']),
61
- theme: PropTypes.oneOf(['default', 'coorpmanager'])
97
+ theme: PropTypes.oneOf(['default', 'coorpmanager', 'mooc']),
98
+ details: PropTypes.string,
99
+ requiredSelection: PropTypes.bool
62
100
  } : {};
63
101
  export default InputSwitch;
64
102
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/atom/input-switch/index.js"],"names":["React","useMemo","PropTypes","getClassState","style","InputSwitch","props","title","name","id","value","disabled","onChange","description","modified","theme","titlePosition","idSwitch","isDisabled","handleChange","e","target","checked","titleView","descriptionView","defaultClass","coorpmanager","default","modifiedClass","coorpmanagerModified","className","checkbox","propTypes","string","bool","func","oneOf"],"mappings":"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","sourcesContent":["import React, {useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport {noop, uniqueId} from 'lodash/fp';\nimport getClassState from '../../util/get-class-state';\nimport style from './style.css';\n\nconst InputSwitch = props => {\n const {\n title,\n name,\n id,\n value,\n disabled,\n onChange = noop,\n description,\n modified = false,\n theme = 'default',\n titlePosition = 'left'\n } = props;\n\n const idSwitch = id || uniqueId('input-switch-');\n const isDisabled = disabled ? 'disabled' : '';\n const handleChange = useMemo(() => e => onChange(e.target.checked), [onChange]);\n\n const titleView = title ? <span className={style.title}>{`${title} `}</span> : null;\n\n const descriptionView = description ? (\n <div className={style.description}>{description}</div>\n ) : null;\n\n const defaultClass = theme === 'coorpmanager' ? style.coorpmanager : style.default;\n const modifiedClass = theme === 'coorpmanager' ? style.coorpmanagerModified : style.modified;\n const className = getClassState(defaultClass, modifiedClass, null, modified);\n\n return (\n <div className={className} data-name={`switch-input-${theme}`}>\n {titlePosition === 'left' ? titleView : null}\n <input\n type=\"checkbox\"\n id={idSwitch}\n name={name}\n onChange={handleChange}\n checked={value}\n disabled={isDisabled}\n className={style.checkbox}\n />\n <label htmlFor={idSwitch} />\n {titlePosition === 'right' ? titleView : null}\n {descriptionView}\n </div>\n );\n};\n\nInputSwitch.propTypes = {\n title: PropTypes.string,\n name: PropTypes.string,\n id: PropTypes.string,\n value: PropTypes.bool,\n disabled: PropTypes.bool,\n onChange: PropTypes.func,\n description: PropTypes.string,\n modified: PropTypes.bool,\n titlePosition: PropTypes.oneOf(['right', 'left']),\n theme: PropTypes.oneOf(['default', 'coorpmanager'])\n};\nexport default InputSwitch;\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../src/atom/input-switch/index.js"],"names":["React","useMemo","PropTypes","getClassState","style","InputSwitch","props","title","name","id","value","disabled","onChange","description","modified","theme","titlePosition","details","requiredSelection","idSwitch","isDisabled","handleChange","e","target","checked","titleView","descriptionView","getClass","defaultClass","coorpmanager","modifiedClass","coorpmanagerModified","partielUncheck","default","className","btnSwitchContainer","checkbox","alignedTextContainer","detailsTxt","propTypes","string","bool","func","oneOf"],"mappings":"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","sourcesContent":["import React, {useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport {noop, uniqueId} from 'lodash/fp';\nimport getClassState from '../../util/get-class-state';\nimport style from './style.css';\n\nconst InputSwitch = props => {\n const {\n title,\n name,\n id,\n value,\n disabled,\n onChange = noop,\n description,\n modified = false,\n theme = 'default',\n titlePosition = 'left',\n details = '',\n requiredSelection = false\n } = props;\n\n const idSwitch = id || uniqueId('input-switch-');\n const isDisabled = disabled ? 'disabled' : '';\n const handleChange = useMemo(() => e => onChange(e.target.checked), [onChange]);\n\n const titleView = title ? <span className={style.title}>{`${title} `}</span> : null;\n\n const descriptionView = description ? (\n <div className={style.description}>{description}</div>\n ) : null;\n\n const getClass = () => {\n switch (theme) {\n case 'coorpmanager':\n return {\n defaultClass: style.coorpmanager,\n modifiedClass: style.coorpmanagerModified\n };\n case 'mooc':\n return {\n defaultClass: style.partielUncheck,\n modifiedClass: style.coorpmanagerModified\n };\n default:\n return {defaultClass: style.default, modifiedClass: style.modified};\n }\n };\n const {defaultClass, modifiedClass} = getClass();\n const className = getClassState(defaultClass, modifiedClass, null, modified);\n\n return (\n <div className={className} data-name={`switch-input-${theme}`}>\n {titlePosition === 'left' ? titleView : null}\n <div className={requiredSelection ? style.requiredSelection : null}>\n <div className={style.btnSwitchContainer}>\n <input\n type=\"checkbox\"\n id={idSwitch}\n name={name}\n onChange={handleChange}\n checked={value}\n disabled={isDisabled}\n className={style.checkbox}\n />\n <label htmlFor={idSwitch} data-name=\"input-switch-label\" />\n </div>\n </div>\n <div className={!details ? style.alignedTextContainer : null}>\n {titlePosition === 'right' ? titleView : null}\n {details ? <div className={style.detailsTxt}>{details}</div> : null}\n </div>\n {descriptionView}\n </div>\n );\n};\n\nInputSwitch.propTypes = {\n title: PropTypes.string,\n name: PropTypes.string,\n id: PropTypes.string,\n value: PropTypes.bool,\n disabled: PropTypes.bool,\n onChange: PropTypes.func,\n description: PropTypes.string,\n modified: PropTypes.bool,\n titlePosition: PropTypes.oneOf(['right', 'left']),\n theme: PropTypes.oneOf(['default', 'coorpmanager', 'mooc']),\n details: PropTypes.string,\n requiredSelection: PropTypes.bool\n};\nexport default InputSwitch;\n"],"file":"index.js"}
@@ -8,11 +8,10 @@
8
8
  @value cm_grey_200 from colors;
9
9
  @value black from colors;
10
10
  @value cm_primary_blue from colors;
11
+ @value light_blue from colors;
11
12
 
12
13
  .default {
13
14
  display: flex;
14
- align-items: center;
15
- align-content: center;
16
15
  }
17
16
 
18
17
  .modified {
@@ -27,6 +26,10 @@
27
26
  composes: modified;
28
27
  }
29
28
 
29
+ .partielUncheck {
30
+ composes: coorpmanager;
31
+ }
32
+
30
33
  .default label {
31
34
  height: 30px;
32
35
  position: relative;
@@ -97,12 +100,11 @@
97
100
  font-size: 15px;
98
101
  text-transform: none;
99
102
  color: dark;
100
- width: 180px;
101
103
  margin-right: 20px;
102
- min-height: 50px;
103
104
  display: flex;
104
105
  align-items: center;
105
106
  align-content: center;
107
+ min-height: 24px;
106
108
  }
107
109
 
108
110
  .description {
@@ -118,7 +120,7 @@
118
120
  width: 48px;
119
121
  height: 24px;
120
122
  border: solid 2px cm_grey_200;
121
- margin-right: 8px;
123
+ margin-right: 16px;
122
124
  background: cm_grey_200;
123
125
  }
124
126
 
@@ -148,4 +150,52 @@
148
150
 
149
151
  .coorpmanager .checkbox:disabled ~ label::after {
150
152
  background: white;
151
- }
153
+ }
154
+
155
+ .partielUncheck label::after {
156
+ width: 19px;
157
+ height: 19px;
158
+ border: 3px solid cm_primary_blue;
159
+ margin-left: 8px;
160
+ }
161
+ .partielUncheck label {
162
+ width: 50px;
163
+ height: 26px;
164
+ background: light_blue;
165
+ border: 0px;
166
+ }
167
+ .partielUncheck .checkbox:checked ~ label {
168
+ background-color: cm_primary_blue;
169
+ border: 0px;
170
+ width: 50px;
171
+ height: 26px;
172
+ }
173
+
174
+ .partielUncheck .checkbox:checked ~ label::after {
175
+ margin-left: 0px;
176
+ }
177
+
178
+ .btnSwitchContainer {
179
+ display: flex;
180
+ align-items: center;
181
+ }
182
+ .alignedTextContainer {
183
+ display: flex;
184
+ align-items: center;
185
+ align-content: center;
186
+ }
187
+ .detailsTxt {
188
+ font-family: Gilroy;
189
+ font-weight: 500;
190
+ font-size: 14px;
191
+ line-height: 22px;
192
+ color: black;
193
+ font-style: normal;
194
+ white-space: pre-line;
195
+ margin-right: 24px;
196
+ }
197
+ .requiredSelection label, .requiredSelection .checkbox:disabled ~ label {
198
+ background-color: cm_primary_blue;
199
+ border-color: cm_primary_blue;
200
+ opacity: 0.4;
201
+ }
@@ -0,0 +1,113 @@
1
+ import React, { useState, useEffect, useCallback } from 'react';
2
+ import { View, StyleSheet } from 'react-native';
3
+ import { NovaCompositionNavigationArrowDown as ArrowDown } from '@coorpacademy/nova-icons';
4
+ import Modal from 'react-native-modal';
5
+ import Touchable from '../../hoc/touchable/index.native';
6
+ import { ANALYTICS_EVENT_TYPE } from '../../variables/analytics';
7
+ import Space from '../space/index.native';
8
+ import Text from '../text/index.native';
9
+ import ModalSelect from '../../hoc/modal/select/index.native';
10
+ import { useTemplateContext } from '../../template/app-review/template-context';
11
+ const ICON_WIDTH = 15;
12
+
13
+ const createStyleSheet = theme => StyleSheet.create({
14
+ container: {
15
+ alignItems: 'center',
16
+ flexDirection: 'row'
17
+ },
18
+ text: {
19
+ flex: 1,
20
+ color: theme.colors.gray.medium,
21
+ textAlign: 'center'
22
+ }
23
+ });
24
+
25
+ const logEvent = (eventName, analyticsID, analytics, questionType) => {
26
+ analytics && analytics.logEvent(eventName, {
27
+ id: analyticsID,
28
+ questionType
29
+ });
30
+ };
31
+
32
+ const Select = props => {
33
+ const templateContext = useTemplateContext();
34
+ const {
35
+ theme,
36
+ analytics
37
+ } = templateContext;
38
+ const [styleSheet, setStylesheet] = useState(null);
39
+ useEffect(() => {
40
+ const _stylesheet = createStyleSheet(theme);
41
+
42
+ setStylesheet(_stylesheet);
43
+ }, [theme]);
44
+ const {
45
+ analyticsID,
46
+ onBlur,
47
+ onFocus,
48
+ onChange,
49
+ values,
50
+ placeholder,
51
+ value,
52
+ style,
53
+ textStyle,
54
+ color,
55
+ questionType,
56
+ isFocused = false,
57
+ isDisabled = false,
58
+ testID = 'select'
59
+ } = props;
60
+ const handleFocus = useCallback(() => {
61
+ if (!onFocus) return;
62
+ analytics && logEvent(ANALYTICS_EVENT_TYPE.OPEN_SELECT, analyticsID, analytics, questionType);
63
+ onFocus();
64
+ }, [analytics, analyticsID, onFocus, questionType]);
65
+ const handleBlur = useCallback(() => {
66
+ if (!onBlur) return;
67
+ analytics && logEvent(ANALYTICS_EVENT_TYPE.CLOSE_SELECT, analyticsID, analytics, questionType);
68
+ onBlur();
69
+ }, [analytics, analyticsID, onBlur, questionType]);
70
+ const handleChange = useCallback(_value => {
71
+ onChange(_value);
72
+ handleBlur();
73
+ }, [onChange, handleBlur]);
74
+
75
+ if (!styleSheet) {
76
+ return null;
77
+ }
78
+
79
+ const selectedItem = values.find(item => item.text === value);
80
+ const text = selectedItem && selectedItem.text || placeholder || null;
81
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Touchable, {
82
+ disabled: isDisabled,
83
+ onPress: handleFocus,
84
+ analyticsID: analyticsID,
85
+ testID: `${testID}-input`
86
+ }, /*#__PURE__*/React.createElement(View, {
87
+ style: [styleSheet.container, style]
88
+ }, /*#__PURE__*/React.createElement(Text, {
89
+ style: [styleSheet.text, textStyle, color && {
90
+ color
91
+ }]
92
+ }, text), /*#__PURE__*/React.createElement(Space, {
93
+ type: "tiny"
94
+ }), /*#__PURE__*/React.createElement(ArrowDown, {
95
+ color: color || theme.colors.gray.dark,
96
+ height: ICON_WIDTH,
97
+ width: ICON_WIDTH
98
+ }))), /*#__PURE__*/React.createElement(Modal, {
99
+ isVisible: isFocused,
100
+ onSwipeComplete: handleBlur,
101
+ onBackdropPress: handleBlur,
102
+ testID: testID
103
+ }, /*#__PURE__*/React.createElement(ModalSelect, {
104
+ value: value,
105
+ values: values,
106
+ onChange: handleChange,
107
+ onClose: handleBlur,
108
+ testID: `${testID}-modal`
109
+ })));
110
+ };
111
+
112
+ export default Select;
113
+ //# sourceMappingURL=index.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/atom/select-modal/index.native.tsx"],"names":["React","useState","useEffect","useCallback","View","StyleSheet","NovaCompositionNavigationArrowDown","ArrowDown","Modal","Touchable","ANALYTICS_EVENT_TYPE","Space","Text","ModalSelect","useTemplateContext","ICON_WIDTH","createStyleSheet","theme","create","container","alignItems","flexDirection","text","flex","color","colors","gray","medium","textAlign","logEvent","eventName","analyticsID","analytics","questionType","id","Select","props","templateContext","styleSheet","setStylesheet","_stylesheet","onBlur","onFocus","onChange","values","placeholder","value","style","textStyle","isFocused","isDisabled","testID","handleFocus","OPEN_SELECT","handleBlur","CLOSE_SELECT","handleChange","_value","selectedItem","find","item","dark"],"mappings":"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","sourcesContent":["import React, {useState, useEffect, useCallback} from 'react';\nimport {View, StyleSheet, ViewStyle, FlexAlignType} from 'react-native';\nimport {NovaCompositionNavigationArrowDown as ArrowDown} from '@coorpacademy/nova-icons';\nimport Modal from 'react-native-modal';\nimport Touchable from '../../hoc/touchable/index.native';\nimport type {ChoiceItem, QuestionType} from '../../types/progression-engine.d';\nimport {Theme} from '../../variables/theme.native';\n\nimport {ANALYTICS_EVENT_TYPE, Analytics} from '../../variables/analytics';\nimport Space from '../space/index.native';\nimport Text from '../text/index.native';\nimport ModalSelect, {OnChangeFunction} from '../../hoc/modal/select/index.native';\nimport {useTemplateContext} from '../../template/app-review/template-context';\n\nexport type Props = {\n analyticsID: string;\n questionType: QuestionType;\n isDisabled?: boolean;\n isFocused?: boolean;\n values: Array<ChoiceItem>;\n value?: string;\n placeholder?: string;\n color?: string;\n onChange: OnChangeFunction;\n onFocus: () => void;\n onBlur: () => void;\n style?: ViewStyle;\n textStyle?: ViewStyle;\n testID?: string;\n};\n\ntype StyleSheetType = {\n container: {\n alignItems: FlexAlignType;\n flexDirection: 'row' | 'column' | 'row-reverse' | 'column-reverse' | undefined;\n };\n text: {\n flex: number;\n color: string;\n textAlign: string;\n };\n};\n\nconst ICON_WIDTH = 15;\n\nconst createStyleSheet = (theme: Theme) =>\n StyleSheet.create({\n container: {\n alignItems: 'center',\n flexDirection: 'row'\n },\n text: {\n flex: 1,\n color: theme.colors.gray.medium,\n textAlign: 'center'\n }\n });\n\nconst logEvent = (\n eventName: string,\n analyticsID: String,\n analytics: Analytics,\n questionType: QuestionType\n) => {\n analytics &&\n analytics.logEvent(eventName, {\n id: analyticsID,\n questionType\n });\n};\n\nconst Select = (props: Props) => {\n const templateContext = useTemplateContext();\n const {theme, analytics} = templateContext;\n const [styleSheet, setStylesheet] = useState<StyleSheetType | null>(null);\n\n useEffect(() => {\n const _stylesheet = createStyleSheet(theme);\n setStylesheet(_stylesheet);\n }, [theme]);\n\n const {\n analyticsID,\n onBlur,\n onFocus,\n onChange,\n values,\n placeholder,\n value,\n style,\n textStyle,\n color,\n questionType,\n isFocused = false,\n isDisabled = false,\n testID = 'select'\n } = props;\n\n const handleFocus = useCallback(() => {\n if (!onFocus) return;\n\n analytics && logEvent(ANALYTICS_EVENT_TYPE.OPEN_SELECT, analyticsID, analytics, questionType);\n onFocus();\n }, [analytics, analyticsID, onFocus, questionType]);\n\n const handleBlur = useCallback(() => {\n if (!onBlur) return;\n\n analytics && logEvent(ANALYTICS_EVENT_TYPE.CLOSE_SELECT, analyticsID, analytics, questionType);\n onBlur();\n }, [analytics, analyticsID, onBlur, questionType]);\n\n const handleChange = useCallback(\n _value => {\n onChange(_value);\n handleBlur();\n },\n [onChange, handleBlur]\n );\n\n if (!styleSheet) {\n return null;\n }\n\n const selectedItem = values.find(item => item.text === value);\n const text = (selectedItem && selectedItem.text) || placeholder || null;\n\n return (\n <>\n <Touchable\n disabled={isDisabled}\n onPress={handleFocus}\n analyticsID={analyticsID}\n testID={`${testID}-input`}\n >\n <View style={[styleSheet.container, style]}>\n <Text style={[styleSheet.text, textStyle, color && {color}]}>{text}</Text>\n <Space type=\"tiny\" />\n <ArrowDown\n color={color || theme.colors.gray.dark}\n height={ICON_WIDTH}\n width={ICON_WIDTH}\n />\n </View>\n </Touchable>\n <Modal\n isVisible={isFocused}\n onSwipeComplete={handleBlur}\n onBackdropPress={handleBlur}\n testID={testID}\n >\n <ModalSelect\n value={value}\n values={values}\n onChange={handleChange}\n onClose={handleBlur}\n testID={`${testID}-modal`}\n />\n </Modal>\n </>\n );\n};\n\nexport default Select;\n"],"file":"index.native.js"}
@@ -0,0 +1,21 @@
1
+ import * as React from 'react';
2
+ import { View } from 'react-native';
3
+ import { useTemplateContext } from '../../template/app-review/template-context';
4
+
5
+ const Space = ({
6
+ type = 'tiny'
7
+ }) => {
8
+ const templateContext = useTemplateContext();
9
+ const {
10
+ theme
11
+ } = templateContext;
12
+ return /*#__PURE__*/React.createElement(View, {
13
+ style: {
14
+ width: theme.spacing[type],
15
+ height: theme.spacing[type]
16
+ }
17
+ });
18
+ };
19
+
20
+ export default Space;
21
+ //# sourceMappingURL=index.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/atom/space/index.native.tsx"],"names":["React","View","useTemplateContext","Space","type","templateContext","theme","width","spacing","height"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAAQC,IAAR,QAAmB,cAAnB;AAEA,SAAQC,kBAAR,QAAiC,4CAAjC;;AAMA,MAAMC,KAAK,GAAG,CAAC;AAACC,EAAAA,IAAI,GAAG;AAAR,CAAD,KAA4B;AACxC,QAAMC,eAAe,GAAGH,kBAAkB,EAA1C;AAEA,QAAM;AAACI,IAAAA;AAAD,MAAUD,eAAhB;AAEA,sBAAO,oBAAC,IAAD;AAAM,IAAA,KAAK,EAAE;AAACE,MAAAA,KAAK,EAAED,KAAK,CAACE,OAAN,CAAcJ,IAAd,CAAR;AAA6BK,MAAAA,MAAM,EAAEH,KAAK,CAACE,OAAN,CAAcJ,IAAd;AAArC;AAAb,IAAP;AACD,CAND;;AAQA,eAAeD,KAAf","sourcesContent":["import * as React from 'react';\nimport {View} from 'react-native';\nimport type {SpaceType} from '../../variables/theme.native';\nimport {useTemplateContext} from '../../template/app-review/template-context';\n\ninterface Props {\n type?: SpaceType;\n}\n\nconst Space = ({type = 'tiny'}: Props) => {\n const templateContext = useTemplateContext();\n\n const {theme} = templateContext;\n\n return <View style={{width: theme.spacing[type], height: theme.spacing[type]}} />;\n};\n\nexport default Space;\n"],"file":"index.native.js"}
@@ -0,0 +1,31 @@
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
+
3
+ import * as React from 'react';
4
+ import { Text as TextBase, Platform, StyleSheet } from 'react-native';
5
+ export const DEFAULT_STYLE = _extends({}, Platform.select({
6
+ android: {
7
+ fontFamily: 'Roboto'
8
+ }
9
+ }));
10
+ const styles = StyleSheet.create({
11
+ text: _extends({}, DEFAULT_STYLE)
12
+ });
13
+
14
+ const Text = props => {
15
+ const {
16
+ children,
17
+ style,
18
+ testID,
19
+ numberOfLines,
20
+ allowFontScaling = true
21
+ } = props;
22
+ return /*#__PURE__*/React.createElement(TextBase, {
23
+ allowFontScaling: allowFontScaling,
24
+ style: [styles.text, style],
25
+ testID: testID,
26
+ numberOfLines: numberOfLines
27
+ }, children);
28
+ };
29
+
30
+ export default Text;
31
+ //# sourceMappingURL=index.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/atom/text/index.native.tsx"],"names":["React","Text","TextBase","Platform","StyleSheet","DEFAULT_STYLE","select","android","fontFamily","styles","create","text","props","children","style","testID","numberOfLines","allowFontScaling"],"mappings":";;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAAQC,IAAI,IAAIC,QAAhB,EAA0BC,QAA1B,EAAoCC,UAApC,QAAgE,cAAhE;AAWA,OAAO,MAAMC,aAAa,gBACrBF,QAAQ,CAACG,MAAT,CAAgB;AACjBC,EAAAA,OAAO,EAAE;AACPC,IAAAA,UAAU,EAAE;AADL;AADQ,CAAhB,CADqB,CAAnB;AAQP,MAAMC,MAAM,GAAGL,UAAU,CAACM,MAAX,CAAkB;AAC/BC,EAAAA,IAAI,eACCN,aADD;AAD2B,CAAlB,CAAf;;AAMA,MAAMJ,IAAI,GAAIW,KAAD,IAAkB;AAC7B,QAAM;AAACC,IAAAA,QAAD;AAAWC,IAAAA,KAAX;AAAkBC,IAAAA,MAAlB;AAA0BC,IAAAA,aAA1B;AAAyCC,IAAAA,gBAAgB,GAAG;AAA5D,MAAoEL,KAA1E;AAEA,sBACE,oBAAC,QAAD;AACE,IAAA,gBAAgB,EAAEK,gBADpB;AAEE,IAAA,KAAK,EAAE,CAACR,MAAM,CAACE,IAAR,EAAcG,KAAd,CAFT;AAGE,IAAA,MAAM,EAAEC,MAHV;AAIE,IAAA,aAAa,EAAEC;AAJjB,KAMGH,QANH,CADF;AAUD,CAbD;;AAeA,eAAeZ,IAAf","sourcesContent":["import * as React from 'react';\nimport {Text as TextBase, Platform, StyleSheet, ViewStyle} from 'react-native';\n\nexport type Props = {\n // copied from node_modules/react-native/Libraries/Text/TextProps.js\n children: React.ReactNode;\n style?: ViewStyle | ViewStyle[];\n testID?: string;\n numberOfLines?: number;\n allowFontScaling?: boolean;\n};\n\nexport const DEFAULT_STYLE = {\n ...Platform.select({\n android: {\n fontFamily: 'Roboto'\n }\n })\n};\n\nconst styles = StyleSheet.create({\n text: {\n ...DEFAULT_STYLE\n }\n});\n\nconst Text = (props: Props) => {\n const {children, style, testID, numberOfLines, allowFontScaling = true} = props;\n\n return (\n <TextBase\n allowFontScaling={allowFontScaling}\n style={[styles.text, style]}\n testID={testID}\n numberOfLines={numberOfLines}\n >\n {children}\n </TextBase>\n );\n};\n\nexport default Text;\n"],"file":"index.native.js"}
@@ -0,0 +1,97 @@
1
+ import React, { useState, useEffect } from 'react';
2
+ import { StyleSheet, View } from 'react-native';
3
+ import HeaderBackButton from '../../atom/header-back-button/index.native';
4
+ import { useTemplateContext } from '../../template/app-review/template-context';
5
+ export const HEADER_HEIGHT = 64;
6
+
7
+ const createStyleSheet = theme => StyleSheet.create({
8
+ container: {
9
+ borderRadius: theme.radius.card,
10
+ overflow: 'hidden',
11
+ backgroundColor: theme.colors.white
12
+ },
13
+ header: {
14
+ backgroundColor: theme.colors.white,
15
+ alignItems: 'flex-end',
16
+ justifyContent: 'center',
17
+ paddingHorizontal: theme.spacing.medium,
18
+ height: HEADER_HEIGHT
19
+ },
20
+ content: {
21
+ paddingHorizontal: theme.spacing.medium,
22
+ paddingBottom: theme.spacing.medium,
23
+ alignItems: 'center'
24
+ },
25
+ contentWithHeader: {
26
+ paddingTop: theme.spacing.medium
27
+ },
28
+ contentWithIcon: {
29
+ paddingTop: theme.spacing.small
30
+ },
31
+ icon: {
32
+ marginTop: -HEADER_HEIGHT * (3 / 4),
33
+ padding: 5,
34
+ backgroundColor: theme.colors.white,
35
+ borderRadius: theme.radius.thumbnail,
36
+ alignSelf: 'center'
37
+ },
38
+ iconContent: {
39
+ backgroundColor: theme.colors.white,
40
+ padding: theme.spacing.small,
41
+ borderRadius: theme.radius.thumbnail,
42
+ justifyContent: 'center',
43
+ alignItems: 'center'
44
+ }
45
+ });
46
+
47
+ const Modal = props => {
48
+ const templateContext = useTemplateContext();
49
+ const [styleSheet, setStylesheet] = useState(null);
50
+ const {
51
+ theme
52
+ } = templateContext;
53
+ const {
54
+ children,
55
+ headerBackgroundColor,
56
+ iconBackgroundColor,
57
+ renderIcon,
58
+ contentStyle,
59
+ onClose,
60
+ testID
61
+ } = props;
62
+ useEffect(() => {
63
+ const _stylesheet = createStyleSheet(theme);
64
+
65
+ setStylesheet(_stylesheet);
66
+ }, [theme]);
67
+
68
+ if (!styleSheet) {
69
+ return null;
70
+ }
71
+
72
+ return /*#__PURE__*/React.createElement(View, {
73
+ style: styleSheet.container,
74
+ testID: testID
75
+ }, /*#__PURE__*/React.createElement(View, {
76
+ style: [styleSheet.header, {
77
+ backgroundColor: headerBackgroundColor
78
+ }]
79
+ }, /*#__PURE__*/React.createElement(HeaderBackButton, {
80
+ color: theme.colors.gray.dark,
81
+ isFloating: false,
82
+ testID: "close-modal",
83
+ onPress: onClose,
84
+ type: "close"
85
+ })), renderIcon ? /*#__PURE__*/React.createElement(View, {
86
+ style: styleSheet.icon
87
+ }, /*#__PURE__*/React.createElement(View, {
88
+ style: [styleSheet.iconContent, {
89
+ backgroundColor: iconBackgroundColor
90
+ }]
91
+ }, renderIcon)) : null, /*#__PURE__*/React.createElement(View, {
92
+ style: [styleSheet.content, headerBackgroundColor && styleSheet.contentWithHeader, renderIcon && styleSheet.contentWithIcon, contentStyle]
93
+ }, children));
94
+ };
95
+
96
+ export default Modal;
97
+ //# sourceMappingURL=index.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/hoc/modal/index.native.tsx"],"names":["React","useState","useEffect","StyleSheet","View","HeaderBackButton","useTemplateContext","HEADER_HEIGHT","createStyleSheet","theme","create","container","borderRadius","radius","card","overflow","backgroundColor","colors","white","header","alignItems","justifyContent","paddingHorizontal","spacing","medium","height","content","paddingBottom","contentWithHeader","paddingTop","contentWithIcon","small","icon","marginTop","padding","thumbnail","alignSelf","iconContent","Modal","props","templateContext","styleSheet","setStylesheet","children","headerBackgroundColor","iconBackgroundColor","renderIcon","contentStyle","onClose","testID","_stylesheet","gray","dark"],"mappings":"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","sourcesContent":["import React, {useState, useEffect} from 'react';\nimport {StyleSheet, View, ViewStyle} from 'react-native';\nimport HeaderBackButton from '../../atom/header-back-button/index.native';\nimport {useTemplateContext} from '../../template/app-review/template-context';\n\nexport type Props = {\n children: React.ReactNode;\n headerBackgroundColor?: string;\n iconBackgroundColor?: string;\n renderIcon?: React.ReactNode;\n contentStyle?: ViewStyle;\n onClose: () => void;\n testID?: string;\n};\n\nexport const HEADER_HEIGHT = 64;\n\ntype StyleSheetType = {\n container: {\n borderRadius: number;\n overflow: string;\n backgroundColor: string;\n };\n header: {\n backgroundColor: string;\n alignItems: string;\n justifyContent: string;\n paddingHorizontal: number;\n height: number;\n };\n content: {\n paddingHorizontal: number;\n paddingBottom: number;\n alignItems: string;\n };\n contentWithHeader: {\n paddingTop: number;\n };\n contentWithIcon: {\n paddingTop: number;\n };\n icon: {\n marginTop: number;\n padding: number;\n backgroundColor: string;\n borderRadius: string;\n alignSelf: string;\n };\n iconContent: {\n backgroundColor: string;\n padding: number;\n borderRadius: number;\n justifyContent: string;\n alignItems: string;\n };\n};\n\nconst createStyleSheet = theme =>\n StyleSheet.create({\n container: {\n borderRadius: theme.radius.card,\n overflow: 'hidden',\n backgroundColor: theme.colors.white\n },\n header: {\n backgroundColor: theme.colors.white,\n alignItems: 'flex-end',\n justifyContent: 'center',\n paddingHorizontal: theme.spacing.medium,\n height: HEADER_HEIGHT\n },\n content: {\n paddingHorizontal: theme.spacing.medium,\n paddingBottom: theme.spacing.medium,\n alignItems: 'center'\n },\n contentWithHeader: {\n paddingTop: theme.spacing.medium\n },\n contentWithIcon: {\n paddingTop: theme.spacing.small\n },\n icon: {\n marginTop: -HEADER_HEIGHT * (3 / 4),\n padding: 5,\n backgroundColor: theme.colors.white,\n borderRadius: theme.radius.thumbnail,\n alignSelf: 'center'\n },\n iconContent: {\n backgroundColor: theme.colors.white,\n padding: theme.spacing.small,\n borderRadius: theme.radius.thumbnail,\n justifyContent: 'center',\n alignItems: 'center'\n }\n });\n\nconst Modal = (props: Props) => {\n const templateContext = useTemplateContext();\n const [styleSheet, setStylesheet] = useState<StyleSheetType | null>(null);\n const {theme} = templateContext;\n\n const {\n children,\n headerBackgroundColor,\n iconBackgroundColor,\n renderIcon,\n contentStyle,\n onClose,\n testID\n } = props;\n\n useEffect(() => {\n const _stylesheet = createStyleSheet(theme);\n setStylesheet(_stylesheet);\n }, [theme]);\n\n if (!styleSheet) {\n return null;\n }\n\n return (\n <View style={styleSheet.container} testID={testID}>\n <View style={[styleSheet.header, {backgroundColor: headerBackgroundColor}]}>\n <HeaderBackButton\n color={theme.colors.gray.dark}\n isFloating={false}\n testID=\"close-modal\"\n onPress={onClose}\n type=\"close\"\n />\n </View>\n {renderIcon ? (\n <View style={styleSheet.icon}>\n <View style={[styleSheet.iconContent, {backgroundColor: iconBackgroundColor}]}>\n {renderIcon}\n </View>\n </View>\n ) : null}\n <View\n style={[\n styleSheet.content,\n headerBackgroundColor && styleSheet.contentWithHeader,\n renderIcon && styleSheet.contentWithIcon,\n contentStyle\n ]}\n >\n {children}\n </View>\n </View>\n );\n};\n\nexport default Modal;\n"],"file":"index.native.js"}