@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,163 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.default = void 0;
5
+
6
+ var _react = _interopRequireWildcard(require("react"));
7
+
8
+ var _reactNative = require("react-native");
9
+
10
+ var _reactNativeRenderHtml = _interopRequireDefault(require("react-native-render-html"));
11
+
12
+ var _theme = require("../../variables/theme.native");
13
+
14
+ var _templateContext = require("../../template/app-review/template-context");
15
+
16
+ var _index = _interopRequireWildcard(require("../text/index.native"));
17
+
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+
20
+ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
21
+
22
+ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
23
+
24
+ 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); }
25
+
26
+ const Html = props => {
27
+ const [disableBaseFontStyleColor, setDisableBaseFontStyleColor] = (0, _react.useState)(false);
28
+ const templateContext = (0, _templateContext.useTemplateContext)();
29
+ const {
30
+ theme,
31
+ vibration
32
+ } = templateContext;
33
+ const {
34
+ children,
35
+ fontSize,
36
+ containerStyle,
37
+ imageStyle,
38
+ style,
39
+ testID,
40
+ anchorTextColor = _theme.HTML_ANCHOR_TEXT_COLOR,
41
+ isTextCentered,
42
+ numberOfLines,
43
+ onLinkPress
44
+ } = props;
45
+ const handleLinkPress = (0, _react.useMemo)(() => url => {
46
+ vibration?.vibrate();
47
+ onLinkPress && onLinkPress(url);
48
+ }, [onLinkPress, vibration]); // Don't use StyleSheet there, it's not a react style
49
+
50
+ const styles = {
51
+ p: {
52
+ marginVertical: 0,
53
+ textAlign: 'center'
54
+ },
55
+ u: {
56
+ textDecorationLine: 'underline'
57
+ },
58
+ i: {
59
+ fontStyle: 'italic'
60
+ },
61
+ b: {
62
+ fontWeight: theme.fontWeight.bold
63
+ },
64
+ s: {
65
+ textDecorationLine: 'line-through'
66
+ }
67
+ };
68
+
69
+ const tagsStyles = _extends(_extends({}, styles), {}, {
70
+ h1: {
71
+ fontSize
72
+ },
73
+ h2: {
74
+ fontSize
75
+ },
76
+ h3: {
77
+ fontSize
78
+ },
79
+ h4: {
80
+ fontSize
81
+ },
82
+ h5: {
83
+ fontSize
84
+ },
85
+ h6: {
86
+ fontSize
87
+ },
88
+ a: {
89
+ color: anchorTextColor
90
+ },
91
+ img: imageStyle
92
+ });
93
+
94
+ let baseFontStyle = _extends(_extends({}, _index.DEFAULT_STYLE), {}, {
95
+ fontSize,
96
+ color: theme.colors.black
97
+ });
98
+
99
+ if (style) {
100
+ if (Array.isArray(style)) {
101
+ const styleObject = style.reduce((result, child) => _extends(_extends({}, result), child));
102
+ baseFontStyle = _extends(_extends({}, baseFontStyle), styleObject);
103
+ } else {
104
+ baseFontStyle = _extends(_extends({}, baseFontStyle), style);
105
+ }
106
+ }
107
+
108
+ const renderers = {
109
+ // eslint-disable-next-line react/display-name
110
+ font: (htmlAttribs, _children) => {
111
+ if (htmlAttribs.color) {
112
+ setDisableBaseFontStyleColor(true);
113
+ }
114
+
115
+ return /*#__PURE__*/_react.default.createElement(_index.default, {
116
+ key: 1,
117
+ style: _extends(_extends({}, baseFontStyle), {}, {
118
+ color: htmlAttribs.color
119
+ })
120
+ }, _children);
121
+ },
122
+ span: function Span(_, _children, convertedCSSStyles, {
123
+ allowFontScaling,
124
+ key
125
+ }) {
126
+ return /*#__PURE__*/_react.default.createElement(_index.default, {
127
+ numberOfLines: numberOfLines,
128
+ allowFontScaling: allowFontScaling,
129
+ key: key,
130
+ style: convertedCSSStyles
131
+ }, _children);
132
+ }
133
+ };
134
+ return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
135
+ testID: testID,
136
+ style: containerStyle
137
+ }, /*#__PURE__*/_react.default.createElement(_reactNativeRenderHtml.default // to text-align center on android
138
+ // we have to encapsulate between <p> tag
139
+ // and use custom style define on <p>
140
+ // definition in component style doesn't work
141
+ , {
142
+ source: {
143
+ // eslint-disable-next-line no-nested-ternary
144
+ html: isTextCentered ? `<p>${children}</p>` : numberOfLines ? `<span>${children}</span>` : `${children}`
145
+ },
146
+ tagsStyles: tagsStyles,
147
+ baseFontStyle: _extends(_extends({}, baseFontStyle), {}, {
148
+ color: disableBaseFontStyleColor ? null : baseFontStyle.color
149
+ }),
150
+ onLinkPress: handleLinkPress,
151
+ renderers: renderers // this is exceptionally for the onboarding course
152
+ // is the only course that has a gif in the context but the img tag
153
+ // comes with width & height attr and these makes this lib do not render the gif
154
+ // so to avoid it, we decided to ignore these attr
155
+ ,
156
+ ignoredStyles: ['width', 'height'],
157
+ testID: "html-base"
158
+ }));
159
+ };
160
+
161
+ var _default = Html;
162
+ exports.default = _default;
163
+ //# sourceMappingURL=index.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/atom/html/index.native.tsx"],"names":["Html","props","disableBaseFontStyleColor","setDisableBaseFontStyleColor","templateContext","theme","vibration","children","fontSize","containerStyle","imageStyle","style","testID","anchorTextColor","HTML_ANCHOR_TEXT_COLOR","isTextCentered","numberOfLines","onLinkPress","handleLinkPress","url","vibrate","styles","p","marginVertical","textAlign","u","textDecorationLine","i","fontStyle","b","fontWeight","bold","s","tagsStyles","h1","h2","h3","h4","h5","h6","a","color","img","baseFontStyle","DEFAULT_TEXT_STYLE","colors","black","Array","isArray","styleObject","reduce","result","child","renderers","font","htmlAttribs","_children","span","Span","_","convertedCSSStyles","allowFontScaling","key","html"],"mappings":"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","sourcesContent":["import React, {useMemo, useState} from 'react';\nimport {View, ViewStyle, ImageStyle, TextStyle} from 'react-native';\nimport HtmlBase from 'react-native-render-html';\n\nimport {HTML_ANCHOR_TEXT_COLOR} from '../../variables/theme.native';\nimport {useTemplateContext} from '../../template/app-review/template-context';\nimport Text, {DEFAULT_STYLE as DEFAULT_TEXT_STYLE} from '../text/index.native';\n\nexport type Props = {\n children: string;\n fontSize: TextStyle['fontSize'];\n numberOfLines?: number;\n onLinkPress?: (url: string) => void;\n containerStyle?: ViewStyle;\n anchorTextColor?: string;\n imageStyle?: ImageStyle;\n style?: ViewStyle | ViewStyle[];\n testID?: string;\n isTextCentered?: boolean;\n};\n\nconst Html = (props: Props) => {\n const [disableBaseFontStyleColor, setDisableBaseFontStyleColor] = useState<boolean>(false);\n const templateContext = useTemplateContext();\n const {theme, vibration} = templateContext;\n const {\n children,\n fontSize,\n containerStyle,\n imageStyle,\n style,\n testID,\n anchorTextColor = HTML_ANCHOR_TEXT_COLOR,\n isTextCentered,\n numberOfLines,\n onLinkPress\n } = props;\n\n const handleLinkPress = useMemo(\n () => (url: string) => {\n vibration?.vibrate();\n\n onLinkPress && onLinkPress(url);\n },\n [onLinkPress, vibration]\n );\n\n // Don't use StyleSheet there, it's not a react style\n const styles = {\n p: {\n marginVertical: 0,\n textAlign: 'center'\n },\n u: {\n textDecorationLine: 'underline'\n },\n i: {\n fontStyle: 'italic'\n },\n b: {\n fontWeight: theme.fontWeight.bold\n },\n s: {\n textDecorationLine: 'line-through'\n }\n };\n\n const tagsStyles = {\n ...styles,\n h1: {fontSize},\n h2: {fontSize},\n h3: {fontSize},\n h4: {fontSize},\n h5: {fontSize},\n h6: {fontSize},\n a: {color: anchorTextColor},\n img: imageStyle\n };\n\n let baseFontStyle = {...DEFAULT_TEXT_STYLE, fontSize, color: theme.colors.black};\n if (style) {\n if (Array.isArray(style)) {\n const styleObject = style.reduce((result, child) => ({\n ...result,\n ...child\n }));\n baseFontStyle = {\n ...baseFontStyle,\n ...styleObject\n };\n } else {\n baseFontStyle = {\n ...baseFontStyle,\n ...style\n };\n }\n }\n\n const renderers = {\n // eslint-disable-next-line react/display-name\n font: (htmlAttribs, _children) => {\n if (htmlAttribs.color) {\n setDisableBaseFontStyleColor(true);\n }\n return (\n <Text\n key={1}\n style={{\n ...baseFontStyle,\n color: htmlAttribs.color\n }}\n >\n {_children}\n </Text>\n );\n },\n span: function Span(\n _: any,\n _children: any,\n convertedCSSStyles: any,\n {allowFontScaling, key}: any\n ) {\n return (\n <Text\n numberOfLines={numberOfLines}\n allowFontScaling={allowFontScaling}\n key={key}\n style={convertedCSSStyles}\n >\n {_children}\n </Text>\n );\n }\n };\n\n return (\n <View testID={testID} style={containerStyle}>\n <HtmlBase\n // to text-align center on android\n // we have to encapsulate between <p> tag\n // and use custom style define on <p>\n // definition in component style doesn't work\n source={{\n // eslint-disable-next-line no-nested-ternary\n html: isTextCentered\n ? `<p>${children}</p>`\n : numberOfLines\n ? `<span>${children}</span>`\n : `${children}`\n }}\n tagsStyles={tagsStyles}\n baseFontStyle={{\n ...baseFontStyle,\n color: disableBaseFontStyleColor ? null : baseFontStyle.color\n }}\n onLinkPress={handleLinkPress}\n renderers={renderers}\n // this is exceptionally for the onboarding course\n // is the only course that has a gif in the context but the img tag\n // comes with width & height attr and these makes this lib do not render the gif\n // so to avoid it, we decided to ignore these attr\n ignoredStyles={['width', 'height']}\n testID=\"html-base\"\n />\n </View>\n );\n};\n\nexport default Html;\n"],"file":"index.native.js"}
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.default = void 0;
5
+
6
+ var _react = _interopRequireDefault(require("react"));
7
+
8
+ var _reactNative = require("react-native");
9
+
10
+ var _getCleanUri = _interopRequireDefault(require("../../util/get-clean-uri"));
11
+
12
+ var _getResizedImage = _interopRequireDefault(require("../../util/get-resized-image"));
13
+
14
+ var _index = _interopRequireDefault(require("../gradient/index.native"));
15
+
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+
18
+ 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); }
19
+
20
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
21
+
22
+ const styles = _reactNative.StyleSheet.create({
23
+ image: {
24
+ width: '100%',
25
+ height: '100%'
26
+ },
27
+ gradient: {
28
+ flex: 1
29
+ }
30
+ });
31
+
32
+ const ImageBackground = (_ref) => {
33
+ let {
34
+ source,
35
+ gradient,
36
+ gradientStyle,
37
+ style,
38
+ testID = 'image-background'
39
+ } = _ref,
40
+ props = _objectWithoutPropertiesLoose(_ref, ["source", "gradient", "gradientStyle", "style", "testID"]);
41
+
42
+ // @ts-ignore this statement is enough but type is too weak
43
+ let uri = source && source.uri;
44
+
45
+ if (uri) {
46
+ const {
47
+ width: _width,
48
+ height: _height,
49
+ resizeMode
50
+ } = props;
51
+
52
+ const {
53
+ width,
54
+ height
55
+ } = _reactNative.StyleSheet.flatten([{
56
+ width: _width,
57
+ height: _height
58
+ }, style]);
59
+
60
+ const maxHeight = typeof height === 'number' ? height : undefined;
61
+ const maxWidth = typeof width === 'number' ? width : undefined;
62
+ uri = (0, _getResizedImage.default)((0, _getCleanUri.default)(uri), {
63
+ maxHeight,
64
+ maxWidth,
65
+ resizeMode
66
+ });
67
+ }
68
+
69
+ const resizedSource = uri && {
70
+ uri
71
+ } || source;
72
+
73
+ if (gradient) {
74
+ const {
75
+ children
76
+ } = props,
77
+ remainingProps = _objectWithoutPropertiesLoose(props, ["children"]);
78
+
79
+ const _style = [styles.gradient];
80
+
81
+ if (gradientStyle) {
82
+ _style.push(gradientStyle);
83
+ }
84
+
85
+ return /*#__PURE__*/_react.default.createElement(_reactNative.ImageBackground, _extends({}, remainingProps, {
86
+ source: resizedSource,
87
+ style: [styles.image, style],
88
+ testID: testID
89
+ }), /*#__PURE__*/_react.default.createElement(_index.default, {
90
+ testID: `${testID}-gradient`,
91
+ colors: gradient,
92
+ style: _style
93
+ }, children));
94
+ }
95
+
96
+ return /*#__PURE__*/_react.default.createElement(_reactNative.ImageBackground, _extends({}, props, {
97
+ source: resizedSource,
98
+ style: [styles.image, style],
99
+ testID: testID
100
+ }));
101
+ };
102
+
103
+ var _default = ImageBackground;
104
+ exports.default = _default;
105
+ //# sourceMappingURL=index.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/atom/image-backgound/index.native.tsx"],"names":["styles","StyleSheet","create","image","width","height","gradient","flex","ImageBackground","source","gradientStyle","style","testID","props","uri","_width","_height","resizeMode","flatten","maxHeight","undefined","maxWidth","resizedSource","children","remainingProps","_style","push"],"mappings":";;;;;AAAA;;AACA;;AAOA;;AAEA;;AACA;;;;;;;;AAEA,MAAMA,MAAM,GAAGC,wBAAWC,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,MAAMC,eAAe,GAAG,UAOX;AAAA,MAPY;AACvBC,IAAAA,MADuB;AAEvBH,IAAAA,QAFuB;AAGvBI,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;AAACV,MAAAA,KAAK,EAAEW,MAAR;AAAgBV,MAAAA,MAAM,EAAEW,OAAxB;AAAiCC,MAAAA;AAAjC,QAA+CJ,KAArD;;AACA,UAAM;AAACT,MAAAA,KAAD;AAAQC,MAAAA;AAAR,QAAkBJ,wBAAWiB,OAAX,CAAmB,CAAC;AAACd,MAAAA,KAAK,EAAEW,MAAR;AAAgBV,MAAAA,MAAM,EAAEW;AAAxB,KAAD,EAAmCL,KAAnC,CAAnB,CAAxB;;AACA,UAAMQ,SAA6B,GAAG,OAAOd,MAAP,KAAkB,QAAlB,GAA6BA,MAA7B,GAAsCe,SAA5E;AACA,UAAMC,QAA4B,GAAG,OAAOjB,KAAP,KAAiB,QAAjB,GAA4BA,KAA5B,GAAoCgB,SAAzE;AAEAN,IAAAA,GAAG,GAAG,8BAAgB,0BAAYA,GAAZ,CAAhB,EAAkC;AACtCK,MAAAA,SADsC;AAEtCE,MAAAA,QAFsC;AAGtCJ,MAAAA;AAHsC,KAAlC,CAAN;AAKD;;AAED,QAAMK,aAAa,GAAIR,GAAG,IAAI;AAACA,IAAAA;AAAD,GAAR,IAAkBL,MAAxC;;AAEA,MAAIH,QAAJ,EAAc;AACZ,UAAM;AAACiB,MAAAA;AAAD,QAAgCV,KAAtC;AAAA,UAAoBW,cAApB,iCAAsCX,KAAtC;;AACA,UAAMY,MAAmB,GAAG,CAACzB,MAAM,CAACM,QAAR,CAA5B;;AAEA,QAAII,aAAJ,EAAmB;AACjBe,MAAAA,MAAM,CAACC,IAAP,CAAYhB,aAAZ;AACD;;AAED,wBACE,6BAAC,4BAAD,eACMc,cADN;AAEE,MAAA,MAAM,EAAEF,aAFV;AAGE,MAAA,KAAK,EAAE,CAACtB,MAAM,CAACG,KAAR,EAAeQ,KAAf,CAHT;AAIE,MAAA,MAAM,EAAEC;AAJV,qBAME,6BAAC,cAAD;AAAU,MAAA,MAAM,EAAG,GAAEA,MAAO,WAA5B;AAAwC,MAAA,MAAM,EAAEN,QAAhD;AAA0D,MAAA,KAAK,EAAEmB;AAAjE,OACGF,QADH,CANF,CADF;AAYD;;AAED,sBACE,6BAAC,4BAAD,eACMV,KADN;AAEE,IAAA,MAAM,EAAES,aAFV;AAGE,IAAA,KAAK,EAAE,CAACtB,MAAM,CAACG,KAAR,EAAeQ,KAAf,CAHT;AAIE,IAAA,MAAM,EAAEC;AAJV,KADF;AAQD,CAxDD;;eA0DeJ,e","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"}
@@ -50,7 +50,7 @@ const InputCheckbox = props => {
50
50
  const titleStyleClassName = titleStylesClassNames[titleStyle];
51
51
  const idCheckbox = (0, _uniqueId2.default)('input-checkbox-');
52
52
  const title = `${propsTitle}${required ? '*' : ''}`;
53
- const handleChange = (0, _react.useMemo)(() => e => onChange(e.target.checked), [onChange]);
53
+ const handleChange = (0, _react.useCallback)(e => onChange(e.target.checked), [onChange]);
54
54
  const modifiedClassName = theme === 'coorpmanager' ? _style.default.coorpManagerModified : _style.default.defaultModified;
55
55
  const errorClassName = theme === 'coorpmanager' ? _style.default.coorpManagerError : _style.default.defaultError;
56
56
  const defaultContainerClassName = theme === 'coorpmanager' ? _style.default.coorpManager : _style.default.default;
@@ -69,6 +69,7 @@ const InputCheckbox = props => {
69
69
  disabled: disabled,
70
70
  "data-name": "checkbox-input"
71
71
  }), /*#__PURE__*/_react.default.createElement("div", {
72
+ "data-name": "checkbox-label",
72
73
  className: (0, _classnames.default)(_style.default.label, noLabelMargins ? _style.default.noLabelMargins : undefined)
73
74
  }, /*#__PURE__*/_react.default.createElement(_novaIcons.NovaSolidStatusValidate, {
74
75
  className: _style.default.icon
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/atom/input-checkbox/index.js"],"names":["titleStylesClassNames","inherit","style","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","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":["titleStylesClassNames","inherit","style","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","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"}
@@ -32,7 +32,9 @@ const InputSwitch = props => {
32
32
  description,
33
33
  modified = false,
34
34
  theme = 'default',
35
- titlePosition = 'left'
35
+ titlePosition = 'left',
36
+ details = '',
37
+ requiredSelection = false
36
38
  } = props;
37
39
  const idSwitch = id || (0, _uniqueId2.default)('input-switch-');
38
40
  const isDisabled = disabled ? 'disabled' : '';
@@ -43,13 +45,42 @@ const InputSwitch = props => {
43
45
  const descriptionView = description ? /*#__PURE__*/_react.default.createElement("div", {
44
46
  className: _style.default.description
45
47
  }, description) : null;
46
- const defaultClass = theme === 'coorpmanager' ? _style.default.coorpmanager : _style.default.default;
47
- const modifiedClass = theme === 'coorpmanager' ? _style.default.coorpmanagerModified : _style.default.modified;
48
+
49
+ const getClass = () => {
50
+ switch (theme) {
51
+ case 'coorpmanager':
52
+ return {
53
+ defaultClass: _style.default.coorpmanager,
54
+ modifiedClass: _style.default.coorpmanagerModified
55
+ };
56
+
57
+ case 'mooc':
58
+ return {
59
+ defaultClass: _style.default.partielUncheck,
60
+ modifiedClass: _style.default.coorpmanagerModified
61
+ };
62
+
63
+ default:
64
+ return {
65
+ defaultClass: _style.default.default,
66
+ modifiedClass: _style.default.modified
67
+ };
68
+ }
69
+ };
70
+
71
+ const {
72
+ defaultClass,
73
+ modifiedClass
74
+ } = getClass();
48
75
  const className = (0, _getClassState.default)(defaultClass, modifiedClass, null, modified);
49
76
  return /*#__PURE__*/_react.default.createElement("div", {
50
77
  className: className,
51
78
  "data-name": `switch-input-${theme}`
52
- }, titlePosition === 'left' ? titleView : null, /*#__PURE__*/_react.default.createElement("input", {
79
+ }, titlePosition === 'left' ? titleView : null, /*#__PURE__*/_react.default.createElement("div", {
80
+ className: requiredSelection ? _style.default.requiredSelection : null
81
+ }, /*#__PURE__*/_react.default.createElement("div", {
82
+ className: _style.default.btnSwitchContainer
83
+ }, /*#__PURE__*/_react.default.createElement("input", {
53
84
  type: "checkbox",
54
85
  id: idSwitch,
55
86
  name: name,
@@ -58,8 +89,13 @@ const InputSwitch = props => {
58
89
  disabled: isDisabled,
59
90
  className: _style.default.checkbox
60
91
  }), /*#__PURE__*/_react.default.createElement("label", {
61
- htmlFor: idSwitch
62
- }), titlePosition === 'right' ? titleView : null, descriptionView);
92
+ htmlFor: idSwitch,
93
+ "data-name": "input-switch-label"
94
+ }))), /*#__PURE__*/_react.default.createElement("div", {
95
+ className: !details ? _style.default.alignedTextContainer : null
96
+ }, titlePosition === 'right' ? titleView : null, details ? /*#__PURE__*/_react.default.createElement("div", {
97
+ className: _style.default.detailsTxt
98
+ }, details) : null), descriptionView);
63
99
  };
64
100
 
65
101
  InputSwitch.propTypes = process.env.NODE_ENV !== "production" ? {
@@ -72,7 +108,9 @@ InputSwitch.propTypes = process.env.NODE_ENV !== "production" ? {
72
108
  description: _propTypes.default.string,
73
109
  modified: _propTypes.default.bool,
74
110
  titlePosition: _propTypes.default.oneOf(['right', 'left']),
75
- theme: _propTypes.default.oneOf(['default', 'coorpmanager'])
111
+ theme: _propTypes.default.oneOf(['default', 'coorpmanager', 'mooc']),
112
+ details: _propTypes.default.string,
113
+ requiredSelection: _propTypes.default.bool
76
114
  } : {};
77
115
  var _default = InputSwitch;
78
116
  exports.default = _default;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/atom/input-switch/index.js"],"names":["InputSwitch","props","title","name","id","value","disabled","onChange","description","modified","theme","titlePosition","idSwitch","isDisabled","handleChange","e","target","checked","titleView","style","descriptionView","defaultClass","coorpmanager","default","modifiedClass","coorpmanagerModified","className","checkbox","propTypes","PropTypes","string","bool","func","oneOf"],"mappings":";;;;;;;;;AAAA;;AACA;;AAEA;;AACA;;;;;;;;AAEA,MAAMA,WAAW,GAAGC,KAAK,IAAI;AAC3B,QAAM;AACJC,IAAAA,KADI;AAEJC,IAAAA,IAFI;AAGJC,IAAAA,EAHI;AAIJC,IAAAA,KAJI;AAKJC,IAAAA,QALI;AAMJC,IAAAA,QAAQ,iBANJ;AAOJC,IAAAA,WAPI;AAQJC,IAAAA,QAAQ,GAAG,KARP;AASJC,IAAAA,KAAK,GAAG,SATJ;AAUJC,IAAAA,aAAa,GAAG;AAVZ,MAWFV,KAXJ;AAaA,QAAMW,QAAQ,GAAGR,EAAE,IAAI,wBAAS,eAAT,CAAvB;AACA,QAAMS,UAAU,GAAGP,QAAQ,GAAG,UAAH,GAAgB,EAA3C;AACA,QAAMQ,YAAY,GAAG,oBAAQ,MAAMC,CAAC,IAAIR,QAAQ,CAACQ,CAAC,CAACC,MAAF,CAASC,OAAV,CAA3B,EAA+C,CAACV,QAAD,CAA/C,CAArB;AAEA,QAAMW,SAAS,GAAGhB,KAAK,gBAAG;AAAM,IAAA,SAAS,EAAEiB,eAAMjB;AAAvB,KAAgC,GAAEA,KAAM,GAAxC,CAAH,GAAwD,IAA/E;AAEA,QAAMkB,eAAe,GAAGZ,WAAW,gBACjC;AAAK,IAAA,SAAS,EAAEW,eAAMX;AAAtB,KAAoCA,WAApC,CADiC,GAE/B,IAFJ;AAIA,QAAMa,YAAY,GAAGX,KAAK,KAAK,cAAV,GAA2BS,eAAMG,YAAjC,GAAgDH,eAAMI,OAA3E;AACA,QAAMC,aAAa,GAAGd,KAAK,KAAK,cAAV,GAA2BS,eAAMM,oBAAjC,GAAwDN,eAAMV,QAApF;AACA,QAAMiB,SAAS,GAAG,4BAAcL,YAAd,EAA4BG,aAA5B,EAA2C,IAA3C,EAAiDf,QAAjD,CAAlB;AAEA,sBACE;AAAK,IAAA,SAAS,EAAEiB,SAAhB;AAA2B,iBAAY,gBAAehB,KAAM;AAA5D,KACGC,aAAa,KAAK,MAAlB,GAA2BO,SAA3B,GAAuC,IAD1C,eAEE;AACE,IAAA,IAAI,EAAC,UADP;AAEE,IAAA,EAAE,EAAEN,QAFN;AAGE,IAAA,IAAI,EAAET,IAHR;AAIE,IAAA,QAAQ,EAAEW,YAJZ;AAKE,IAAA,OAAO,EAAET,KALX;AAME,IAAA,QAAQ,EAAEQ,UANZ;AAOE,IAAA,SAAS,EAAEM,eAAMQ;AAPnB,IAFF,eAWE;AAAO,IAAA,OAAO,EAAEf;AAAhB,IAXF,EAYGD,aAAa,KAAK,OAAlB,GAA4BO,SAA5B,GAAwC,IAZ3C,EAaGE,eAbH,CADF;AAiBD,CA7CD;;AA+CApB,WAAW,CAAC4B,SAAZ,2CAAwB;AACtB1B,EAAAA,KAAK,EAAE2B,mBAAUC,MADK;AAEtB3B,EAAAA,IAAI,EAAE0B,mBAAUC,MAFM;AAGtB1B,EAAAA,EAAE,EAAEyB,mBAAUC,MAHQ;AAItBzB,EAAAA,KAAK,EAAEwB,mBAAUE,IAJK;AAKtBzB,EAAAA,QAAQ,EAAEuB,mBAAUE,IALE;AAMtBxB,EAAAA,QAAQ,EAAEsB,mBAAUG,IANE;AAOtBxB,EAAAA,WAAW,EAAEqB,mBAAUC,MAPD;AAQtBrB,EAAAA,QAAQ,EAAEoB,mBAAUE,IARE;AAStBpB,EAAAA,aAAa,EAAEkB,mBAAUI,KAAV,CAAgB,CAAC,OAAD,EAAU,MAAV,CAAhB,CATO;AAUtBvB,EAAAA,KAAK,EAAEmB,mBAAUI,KAAV,CAAgB,CAAC,SAAD,EAAY,cAAZ,CAAhB;AAVe,CAAxB;eAYejC,W","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":["InputSwitch","props","title","name","id","value","disabled","onChange","description","modified","theme","titlePosition","details","requiredSelection","idSwitch","isDisabled","handleChange","e","target","checked","titleView","style","descriptionView","getClass","defaultClass","coorpmanager","modifiedClass","coorpmanagerModified","partielUncheck","default","className","btnSwitchContainer","checkbox","alignedTextContainer","detailsTxt","propTypes","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
+ }