@coorpacademy/components 11.32.1 → 11.32.2

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 (184) hide show
  1. package/es/atom/button-link/index.d.ts +1 -0
  2. package/es/atom/button-link/index.d.ts.map +1 -1
  3. package/es/atom/button-link/index.js +6 -5
  4. package/es/atom/button-link/index.js.map +1 -1
  5. package/es/atom/button-link/types.d.ts +3 -0
  6. package/es/atom/button-link/types.d.ts.map +1 -1
  7. package/es/atom/button-link/types.js +1 -0
  8. package/es/atom/button-link/types.js.map +1 -1
  9. package/es/atom/icon/index.d.ts.map +1 -1
  10. package/es/atom/icon/index.js +3 -0
  11. package/es/atom/icon/index.js.map +1 -1
  12. package/es/atom/input-search/style.css +1 -0
  13. package/es/molecule/cm-popin/types.d.ts +2 -0
  14. package/es/molecule/cm-popin/types.d.ts.map +1 -1
  15. package/es/molecule/expandible-actionable-table/index.d.ts +1 -0
  16. package/es/molecule/expandible-actionable-table/index.d.ts.map +1 -1
  17. package/es/molecule/expandible-actionable-table/types.d.ts +1 -0
  18. package/es/molecule/expandible-actionable-table/types.d.ts.map +1 -1
  19. package/es/molecule/learner-skill-card/index.d.ts +2 -0
  20. package/es/molecule/learner-skill-card/index.d.ts.map +1 -1
  21. package/es/molecule/learner-skill-card/index.js +7 -2
  22. package/es/molecule/learner-skill-card/index.js.map +1 -1
  23. package/es/molecule/learning-profile-radar-chart/index.d.ts +1 -1
  24. package/es/molecule/learning-profile-radar-chart/index.d.ts.map +1 -1
  25. package/es/molecule/learning-profile-radar-chart/index.js +27 -13
  26. package/es/molecule/learning-profile-radar-chart/index.js.map +1 -1
  27. package/es/molecule/learning-profile-radar-chart/style.css +43 -40
  28. package/es/molecule/learning-profile-radar-chart/types.d.ts +7 -1
  29. package/es/molecule/learning-profile-radar-chart/types.d.ts.map +1 -1
  30. package/es/molecule/learning-profile-radar-chart/types.js.map +1 -1
  31. package/es/molecule/skill-picker-modal/index.d.ts.map +1 -1
  32. package/es/molecule/skill-picker-modal/index.js +1 -1
  33. package/es/molecule/skill-picker-modal/index.js.map +1 -1
  34. package/es/molecule/skills-chart-side-information-panel/style.css +25 -9
  35. package/es/organism/list-items/index.d.ts +2 -0
  36. package/es/organism/review-no-skills/index.d.ts +2 -1
  37. package/es/organism/review-no-skills/index.d.ts.map +1 -1
  38. package/es/organism/review-no-skills/index.js +8 -4
  39. package/es/organism/review-no-skills/index.js.map +1 -1
  40. package/es/organism/review-no-skills/prop-types.d.ts +2 -0
  41. package/es/organism/review-no-skills/prop-types.d.ts.map +1 -1
  42. package/es/organism/review-no-skills/prop-types.js +2 -1
  43. package/es/organism/review-no-skills/prop-types.js.map +1 -1
  44. package/es/organism/review-no-skills/style.css +6 -0
  45. package/es/organism/setup-header/index.d.ts +4 -0
  46. package/es/organism/wizard-contents/index.d.ts +3 -0
  47. package/es/template/app-player/loading/index.d.ts +2 -0
  48. package/es/template/app-player/player/index.d.ts +4 -0
  49. package/es/template/app-player/player/slides/index.d.ts +2 -0
  50. package/es/template/app-player/player/slides/index.d.ts.map +1 -1
  51. package/es/template/app-player/popin-correction/index.d.ts +2 -0
  52. package/es/template/app-player/popin-correction/index.d.ts.map +1 -1
  53. package/es/template/app-player/popin-end/index.d.ts +2 -0
  54. package/es/template/app-review/index.d.ts +2 -0
  55. package/es/template/app-review/index.d.ts.map +1 -1
  56. package/es/template/app-review/player/prop-types.d.ts +2 -0
  57. package/es/template/app-review/player/prop-types.d.ts.map +1 -1
  58. package/es/template/app-review/prop-types.d.ts +2 -0
  59. package/es/template/app-review/prop-types.d.ts.map +1 -1
  60. package/es/template/back-office/brand-create/index.d.ts +4 -0
  61. package/es/template/back-office/brand-create/index.d.ts.map +1 -1
  62. package/es/template/back-office/brand-list/index.d.ts +4 -0
  63. package/es/template/back-office/brand-list/index.d.ts.map +1 -1
  64. package/es/template/back-office/brand-update/index.d.ts +11 -0
  65. package/es/template/back-office/dashboard-preview/index.d.ts +4 -0
  66. package/es/template/back-office/layout/index.d.ts +4 -0
  67. package/es/template/back-office/layout/index.d.ts.map +1 -1
  68. package/es/template/common/dashboard/index.d.ts +4 -0
  69. package/es/template/common/search-page/index.d.ts +2 -0
  70. package/es/template/external-course/index.d.ts +2 -0
  71. package/es/template/my-learning/index.d.ts +33 -0
  72. package/es/template/my-learning/index.d.ts.map +1 -0
  73. package/es/template/my-learning/index.js +393 -0
  74. package/es/template/my-learning/index.js.map +1 -0
  75. package/es/template/my-learning/style.css +269 -0
  76. package/es/util/search-value-included.d.ts +3 -0
  77. package/es/util/search-value-included.d.ts.map +1 -0
  78. package/es/util/search-value-included.js +10 -0
  79. package/es/util/search-value-included.js.map +1 -0
  80. package/lib/atom/button-link/index.d.ts +1 -0
  81. package/lib/atom/button-link/index.d.ts.map +1 -1
  82. package/lib/atom/button-link/index.js +6 -5
  83. package/lib/atom/button-link/index.js.map +1 -1
  84. package/lib/atom/button-link/types.d.ts +3 -0
  85. package/lib/atom/button-link/types.d.ts.map +1 -1
  86. package/lib/atom/button-link/types.js +1 -0
  87. package/lib/atom/button-link/types.js.map +1 -1
  88. package/lib/atom/icon/index.d.ts.map +1 -1
  89. package/lib/atom/icon/index.js +3 -0
  90. package/lib/atom/icon/index.js.map +1 -1
  91. package/lib/atom/input-search/style.css +1 -0
  92. package/lib/molecule/cm-popin/types.d.ts +2 -0
  93. package/lib/molecule/cm-popin/types.d.ts.map +1 -1
  94. package/lib/molecule/expandible-actionable-table/index.d.ts +1 -0
  95. package/lib/molecule/expandible-actionable-table/index.d.ts.map +1 -1
  96. package/lib/molecule/expandible-actionable-table/types.d.ts +1 -0
  97. package/lib/molecule/expandible-actionable-table/types.d.ts.map +1 -1
  98. package/lib/molecule/learner-skill-card/index.d.ts +2 -0
  99. package/lib/molecule/learner-skill-card/index.d.ts.map +1 -1
  100. package/lib/molecule/learner-skill-card/index.js +7 -2
  101. package/lib/molecule/learner-skill-card/index.js.map +1 -1
  102. package/lib/molecule/learning-profile-radar-chart/index.d.ts +1 -1
  103. package/lib/molecule/learning-profile-radar-chart/index.d.ts.map +1 -1
  104. package/lib/molecule/learning-profile-radar-chart/index.js +27 -13
  105. package/lib/molecule/learning-profile-radar-chart/index.js.map +1 -1
  106. package/lib/molecule/learning-profile-radar-chart/style.css +43 -40
  107. package/lib/molecule/learning-profile-radar-chart/types.d.ts +7 -1
  108. package/lib/molecule/learning-profile-radar-chart/types.d.ts.map +1 -1
  109. package/lib/molecule/learning-profile-radar-chart/types.js.map +1 -1
  110. package/lib/molecule/skill-picker-modal/index.d.ts.map +1 -1
  111. package/lib/molecule/skill-picker-modal/index.js +1 -1
  112. package/lib/molecule/skill-picker-modal/index.js.map +1 -1
  113. package/lib/molecule/skills-chart-side-information-panel/style.css +25 -9
  114. package/lib/organism/list-items/index.d.ts +2 -0
  115. package/lib/organism/review-no-skills/index.d.ts +2 -1
  116. package/lib/organism/review-no-skills/index.d.ts.map +1 -1
  117. package/lib/organism/review-no-skills/index.js +8 -4
  118. package/lib/organism/review-no-skills/index.js.map +1 -1
  119. package/lib/organism/review-no-skills/prop-types.d.ts +2 -0
  120. package/lib/organism/review-no-skills/prop-types.d.ts.map +1 -1
  121. package/lib/organism/review-no-skills/prop-types.js +2 -1
  122. package/lib/organism/review-no-skills/prop-types.js.map +1 -1
  123. package/lib/organism/review-no-skills/style.css +6 -0
  124. package/lib/organism/setup-header/index.d.ts +4 -0
  125. package/lib/organism/wizard-contents/index.d.ts +3 -0
  126. package/lib/template/app-player/loading/index.d.ts +2 -0
  127. package/lib/template/app-player/player/index.d.ts +4 -0
  128. package/lib/template/app-player/player/slides/index.d.ts +2 -0
  129. package/lib/template/app-player/player/slides/index.d.ts.map +1 -1
  130. package/lib/template/app-player/popin-correction/index.d.ts +2 -0
  131. package/lib/template/app-player/popin-correction/index.d.ts.map +1 -1
  132. package/lib/template/app-player/popin-end/index.d.ts +2 -0
  133. package/lib/template/app-review/index.d.ts +2 -0
  134. package/lib/template/app-review/index.d.ts.map +1 -1
  135. package/lib/template/app-review/player/prop-types.d.ts +2 -0
  136. package/lib/template/app-review/player/prop-types.d.ts.map +1 -1
  137. package/lib/template/app-review/prop-types.d.ts +2 -0
  138. package/lib/template/app-review/prop-types.d.ts.map +1 -1
  139. package/lib/template/back-office/brand-create/index.d.ts +4 -0
  140. package/lib/template/back-office/brand-create/index.d.ts.map +1 -1
  141. package/lib/template/back-office/brand-list/index.d.ts +4 -0
  142. package/lib/template/back-office/brand-list/index.d.ts.map +1 -1
  143. package/lib/template/back-office/brand-update/index.d.ts +11 -0
  144. package/lib/template/back-office/dashboard-preview/index.d.ts +4 -0
  145. package/lib/template/back-office/layout/index.d.ts +4 -0
  146. package/lib/template/back-office/layout/index.d.ts.map +1 -1
  147. package/lib/template/common/dashboard/index.d.ts +4 -0
  148. package/lib/template/common/search-page/index.d.ts +2 -0
  149. package/lib/template/external-course/index.d.ts +2 -0
  150. package/lib/template/my-learning/index.d.ts +33 -0
  151. package/lib/template/my-learning/index.d.ts.map +1 -0
  152. package/lib/template/my-learning/index.js +422 -0
  153. package/lib/template/my-learning/index.js.map +1 -0
  154. package/lib/template/my-learning/style.css +269 -0
  155. package/lib/util/search-value-included.d.ts +3 -0
  156. package/lib/util/search-value-included.d.ts.map +1 -0
  157. package/lib/util/search-value-included.js +20 -0
  158. package/lib/util/search-value-included.js.map +1 -0
  159. package/locales/cs/global.json +38 -6
  160. package/locales/de/global.json +38 -6
  161. package/locales/en/global.json +27 -1
  162. package/locales/es/global.json +38 -6
  163. package/locales/fi/global.json +38 -6
  164. package/locales/fr/global.json +37 -5
  165. package/locales/hr/global.json +38 -6
  166. package/locales/hu/global.json +38 -6
  167. package/locales/it/global.json +38 -6
  168. package/locales/ja/global.json +38 -6
  169. package/locales/ko/global.json +38 -6
  170. package/locales/nl/global.json +37 -5
  171. package/locales/pl/global.json +38 -6
  172. package/locales/pt/global.json +38 -6
  173. package/locales/ro/global.json +38 -6
  174. package/locales/ru/global.json +38 -6
  175. package/locales/sk/global.json +38 -6
  176. package/locales/sl/global.json +38 -6
  177. package/locales/sv/global.json +38 -6
  178. package/locales/tl/global.json +38 -6
  179. package/locales/tr/global.json +38 -6
  180. package/locales/uk/global.json +38 -6
  181. package/locales/vi/global.json +38 -6
  182. package/locales/zh/global.json +38 -6
  183. package/locales/zh_TW/global.json +38 -6
  184. package/package.json +2 -2
@@ -254,6 +254,7 @@ declare namespace SearchPage {
254
254
  buttonLink: PropTypes.Requireable<PropTypes.InferProps<{
255
255
  type: PropTypes.Requireable<string>;
256
256
  label: PropTypes.Requireable<string>;
257
+ content: PropTypes.Requireable<PropTypes.ReactNodeLike>;
257
258
  'aria-label': PropTypes.Requireable<string>;
258
259
  'data-name': PropTypes.Requireable<string>;
259
260
  'data-testid': PropTypes.Requireable<string>;
@@ -385,6 +386,7 @@ declare namespace SearchPage {
385
386
  componentType: PropTypes.Requireable<string>;
386
387
  type: PropTypes.Requireable<string>;
387
388
  label: PropTypes.Requireable<string>;
389
+ content: PropTypes.Requireable<PropTypes.ReactNodeLike>;
388
390
  'aria-label': PropTypes.Requireable<string>;
389
391
  'data-name': PropTypes.Requireable<string>;
390
392
  'data-testid': PropTypes.Requireable<string>;
@@ -99,6 +99,7 @@ declare namespace ExternalCourse {
99
99
  buttonLink: PropTypes.Requireable<PropTypes.InferProps<{
100
100
  type: PropTypes.Requireable<string>;
101
101
  label: PropTypes.Requireable<string>;
102
+ content: PropTypes.Requireable<PropTypes.ReactNodeLike>;
102
103
  'aria-label': PropTypes.Requireable<string>;
103
104
  'data-name': PropTypes.Requireable<string>;
104
105
  'data-testid': PropTypes.Requireable<string>;
@@ -230,6 +231,7 @@ declare namespace ExternalCourse {
230
231
  componentType: PropTypes.Requireable<string>;
231
232
  type: PropTypes.Requireable<string>;
232
233
  label: PropTypes.Requireable<string>;
234
+ content: PropTypes.Requireable<PropTypes.ReactNodeLike>;
233
235
  'aria-label': PropTypes.Requireable<string>;
234
236
  'data-name': PropTypes.Requireable<string>;
235
237
  'data-testid': PropTypes.Requireable<string>;
@@ -0,0 +1,33 @@
1
+ export default MyLearning;
2
+ declare function MyLearning(props: any, context: any): JSX.Element;
3
+ declare namespace MyLearning {
4
+ namespace contextTypes {
5
+ const translate: PropTypes.Requireable<(...args: any[]) => any>;
6
+ }
7
+ namespace propTypes {
8
+ const skills: PropTypes.Requireable<(string | null | undefined)[]>;
9
+ const selectedSkills: PropTypes.Requireable<(string | null | undefined)[]>;
10
+ const skillsInformation: PropTypes.Requireable<{
11
+ [x: string]: PropTypes.InferProps<{
12
+ availableForReview: PropTypes.Requireable<boolean>;
13
+ stats: PropTypes.Requireable<PropTypes.InferProps<{
14
+ score: PropTypes.Requireable<number>;
15
+ courses: PropTypes.Requireable<number>;
16
+ coursesCompleted: PropTypes.Requireable<number>;
17
+ questionsAnswered: PropTypes.Requireable<number>;
18
+ learningHours: PropTypes.Requireable<number>;
19
+ }>>;
20
+ }> | null | undefined;
21
+ }>;
22
+ const skillsLocales: PropTypes.Requireable<{
23
+ [x: string]: string | null | undefined;
24
+ }>;
25
+ const learnerFeature: PropTypes.Requireable<boolean>;
26
+ const isLoading: PropTypes.Requireable<boolean>;
27
+ const onSkillFocusConfirm: PropTypes.Requireable<(...args: any[]) => any>;
28
+ const onReviewSkill: PropTypes.Requireable<(...args: any[]) => any>;
29
+ const onExploreSkill: PropTypes.Requireable<(...args: any[]) => any>;
30
+ }
31
+ }
32
+ import PropTypes from "prop-types";
33
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/template/my-learning/index.js"],"names":[],"mappings":";AAgHA,mEAkVC"}
@@ -0,0 +1,422 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.default = void 0;
5
+
6
+ var _sumBy2 = _interopRequireDefault(require("lodash/fp/sumBy"));
7
+
8
+ var _pipe2 = _interopRequireDefault(require("lodash/fp/pipe"));
9
+
10
+ var _fromPairs2 = _interopRequireDefault(require("lodash/fp/fromPairs"));
11
+
12
+ var _map2 = _interopRequireDefault(require("lodash/fp/map"));
13
+
14
+ var _keys2 = _interopRequireDefault(require("lodash/fp/keys"));
15
+
16
+ var _getOr2 = _interopRequireDefault(require("lodash/fp/getOr"));
17
+
18
+ var _react = _interopRequireWildcard(require("react"));
19
+
20
+ var _propTypes = _interopRequireDefault(require("prop-types"));
21
+
22
+ var _cssColorFunction = require("css-color-function");
23
+
24
+ var _provider = _interopRequireDefault(require("../../atom/provider"));
25
+
26
+ var _icon = _interopRequireDefault(require("../../atom/icon"));
27
+
28
+ var _picture = _interopRequireDefault(require("../../atom/picture"));
29
+
30
+ var _buttonLink = _interopRequireDefault(require("../../atom/button-link"));
31
+
32
+ var _tooltip = _interopRequireDefault(require("../../atom/tooltip"));
33
+
34
+ var _reviewNoSkills = _interopRequireDefault(require("../../organism/review-no-skills"));
35
+
36
+ var _searchForm = _interopRequireDefault(require("../../molecule/search-form"));
37
+
38
+ var _skillPickerModal = _interopRequireDefault(require("../../molecule/skill-picker-modal"));
39
+
40
+ var _learningProfileRadarChart = _interopRequireDefault(require("../../molecule/learning-profile-radar-chart"));
41
+
42
+ var _skillsChartSideInformationPanel = _interopRequireDefault(require("../../molecule/skills-chart-side-information-panel"));
43
+
44
+ var _learnerSkillCard = _interopRequireDefault(require("../../molecule/learner-skill-card"));
45
+
46
+ var _searchValueIncluded = _interopRequireDefault(require("../../util/search-value-included"));
47
+
48
+ var _style = _interopRequireDefault(require("./style.css"));
49
+
50
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
51
+
52
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && 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; }
53
+
54
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
55
+
56
+ const ChangeSkillFocusButton = (props, context) => {
57
+ const [hovered, setHovered] = (0, _react.useState)(false);
58
+ const {
59
+ onClick
60
+ } = props;
61
+ const {
62
+ skin,
63
+ translate
64
+ } = context;
65
+ const primarySkinColor = (0, _getOr2.default)('#0061FF', 'common.primary', skin);
66
+ const handleMouseOver = (0, _react.useCallback)(() => setHovered(true), [setHovered]);
67
+ const handleMouseLeave = (0, _react.useCallback)(() => setHovered(false), [setHovered]);
68
+ return /*#__PURE__*/_react.default.createElement("div", {
69
+ "data-name": "button-explore-wrapper",
70
+ onMouseOver: handleMouseOver,
71
+ onMouseLeave: handleMouseLeave
72
+ }, /*#__PURE__*/_react.default.createElement(_buttonLink.default, {
73
+ customStyle: {
74
+ backgroundColor: hovered ? primarySkinColor : (0, _cssColorFunction.convert)(`color(${primarySkinColor} a(0.07))`),
75
+ color: hovered ? '#FFFFFF' : primarySkinColor,
76
+ transition: 'background-color 0.15s ease-in-out, color 0.15s ease-in-out'
77
+ },
78
+ onClick: onClick,
79
+ label: translate('skills_change_focus'),
80
+ "data-name": "change-skill-focus-button",
81
+ icon: {
82
+ position: 'left',
83
+ faIcon: {
84
+ name: 'arrows-rotate',
85
+ backgroundColor: hovered ? primarySkinColor : (0, _cssColorFunction.convert)(`color(${primarySkinColor} a(0.07))`),
86
+ color: hovered ? '#FFFFFF' : primarySkinColor,
87
+ size: 16
88
+ }
89
+ }
90
+ }));
91
+ };
92
+
93
+ ChangeSkillFocusButton.contextTypes = {
94
+ translate: _provider.default.childContextTypes.translate
95
+ };
96
+ ChangeSkillFocusButton.propTypes = process.env.NODE_ENV !== "production" ? {
97
+ onClick: _propTypes.default.func
98
+ } : {};
99
+
100
+ const FilterButton = (props, context) => {
101
+ const {
102
+ active,
103
+ filter,
104
+ skillTotal,
105
+ onClick
106
+ } = props;
107
+ const {
108
+ skin,
109
+ translate
110
+ } = context;
111
+ const primarySkinColor = (0, _getOr2.default)('#0061FF', 'common.primary', skin);
112
+ const Content = (0, _react.useCallback)(() => /*#__PURE__*/_react.default.createElement("div", null, filter, /*#__PURE__*/_react.default.createElement("span", {
113
+ className: active ? _style.default.skillFilterNumber : _style.default.skillFilterNumberInActive
114
+ }, skillTotal)), [filter, skillTotal, active]);
115
+ const buttonProps = {
116
+ customStyle: {
117
+ backgroundColor: active ? (0, _cssColorFunction.convert)(`color(${primarySkinColor} a(0.07))`) : '#FFFFFF',
118
+ color: active ? primarySkinColor : '#9999A8',
119
+ transition: 'background-color 0.15s ease-in-out, color 0.15s ease-in-out',
120
+ width: filter === translate('review_mode_available') ? '200px' : 'fit-content'
121
+ },
122
+ onClick,
123
+ content: /*#__PURE__*/_react.default.createElement(Content, null),
124
+ 'data-name': 'change-skill-focus-button'
125
+ };
126
+ return /*#__PURE__*/_react.default.createElement(_buttonLink.default, buttonProps);
127
+ };
128
+
129
+ FilterButton.contextTypes = {
130
+ translate: _provider.default.childContextTypes.translate
131
+ };
132
+ FilterButton.propTypes = process.env.NODE_ENV !== "production" ? {
133
+ active: _propTypes.default.bool,
134
+ filter: _propTypes.default.string,
135
+ skillTotal: _propTypes.default.number,
136
+ onClick: _propTypes.default.func
137
+ } : {};
138
+
139
+ const MyLearning = (props, context) => {
140
+ const {
141
+ skills,
142
+ selectedSkills = [],
143
+ skillsInformation,
144
+ skillsLocales,
145
+ learnerFeature = true,
146
+ isLoading,
147
+ onSkillFocusConfirm,
148
+ onReviewSkill,
149
+ onExploreSkill
150
+ } = props;
151
+ const {
152
+ translate
153
+ } = context;
154
+ const [open, setOpen] = (0, _react.useState)(false);
155
+ const [selectedSkillsList, setSelectedSkillsList] = (0, _react.useState)(selectedSkills);
156
+ const [skillFocusSelectedOnChart, setSkillFocusSelectedOnChart] = (0, _react.useState)(undefined);
157
+ const [searchValue, setSearchValue] = (0, _react.useState)('');
158
+ const [searchResults, setSearchResults] = (0, _react.useState)(skills);
159
+ const [activeFilter, setActiveFilter] = (0, _react.useState)('all');
160
+ const skillsReviewReady = (0, _react.useMemo)(() => {
161
+ return searchResults.filter(skill => skillsInformation[skill].availableForReview);
162
+ }, [searchResults, skillsInformation]);
163
+ const graphDatas = (0, _react.useMemo)(() => (0, _pipe2.default)((0, _map2.default)(skill => [skill, skillsInformation[skill].stats.score]), _fromPairs2.default)(selectedSkillsList), [selectedSkillsList, skillsInformation]);
164
+ const graphLegends = (0, _react.useMemo)(() => (0, _pipe2.default)((0, _map2.default)(skill => [skill, skillsLocales[skill]]), _fromPairs2.default)(selectedSkillsList), [selectedSkillsList, skillsLocales]);
165
+ const filters = (0, _react.useMemo)(() => {
166
+ return {
167
+ all: searchResults,
168
+ review: skillsReviewReady
169
+ };
170
+ }, [searchResults, skillsReviewReady]);
171
+ const sumKpi = (0, _react.useCallback)(kpi => skillFocusSelectedOnChart ? skillsInformation[skillFocusSelectedOnChart].stats[kpi] : (0, _sumBy2.default)(skill => skillsInformation[skill].stats[kpi], selectedSkillsList), [skillFocusSelectedOnChart, skillsInformation, selectedSkillsList]);
172
+ const coursedCompletedData = (0, _react.useMemo)(() => sumKpi('coursesCompleted'), [sumKpi]);
173
+ const questionsAnsweredData = (0, _react.useMemo)(() => sumKpi('questionsAnswered'), [sumKpi]);
174
+ const learningHoursData = (0, _react.useMemo)(() => sumKpi('learningHours'), [sumKpi]);
175
+ const skillChartPaneLegends = (0, _react.useMemo)(() => translate('skill_scope_specifier', {
176
+ focusedSkill: skillFocusSelectedOnChart ? skillsLocales[skillFocusSelectedOnChart] : translate('focused_skills')
177
+ }), [translate, skillsLocales, skillFocusSelectedOnChart]);
178
+ const skillChartPanelProps = [{
179
+ title: translate('skill_chart_side_panel_courses_completed'),
180
+ value: `${coursedCompletedData}`,
181
+ legend: skillChartPaneLegends,
182
+ icon: {
183
+ iconName: 'book-open-cover',
184
+ backgroundColor: '#D9F4F7'
185
+ }
186
+ }, {
187
+ title: translate('skill_chart_side_panel_questions_answered'),
188
+ value: `${questionsAnsweredData}`,
189
+ legend: skillChartPaneLegends,
190
+ icon: {
191
+ iconName: 'circle-question',
192
+ backgroundColor: '#FFDCD1'
193
+ }
194
+ }, {
195
+ title: translate('skill_chart_side_panel_learning_hours'),
196
+ value: `${learningHoursData}`,
197
+ legend: skillChartPaneLegends,
198
+ icon: {
199
+ iconName: 'clock',
200
+ backgroundColor: '#FAD6DE'
201
+ }
202
+ }];
203
+ const handleOnDotClick = (0, _react.useCallback)(skillRef => {
204
+ skillRef && setSkillFocusSelectedOnChart(skillRef);
205
+ }, [setSkillFocusSelectedOnChart]);
206
+ const handleOpenSkillPicker = (0, _react.useCallback)(() => setOpen(true), [setOpen]);
207
+ const handleCloseSkillPicker = (0, _react.useCallback)(() => setOpen(false), [setOpen]);
208
+ const handleConfirmSkillPicker = (0, _react.useCallback)(focusSkillList => {
209
+ setSelectedSkillsList(focusSkillList);
210
+ onSkillFocusConfirm(focusSkillList);
211
+ setOpen(false);
212
+ }, [onSkillFocusConfirm, setSelectedSkillsList, setOpen]);
213
+ const handleSearch = (0, _react.useCallback)(value => {
214
+ setSearchValue(value);
215
+ setSearchResults(skills.filter(skill => (0, _searchValueIncluded.default)(skillsLocales[skill], value)));
216
+ }, [skills, skillsLocales, setSearchValue, setSearchResults]);
217
+ const handleSearchReset = (0, _react.useCallback)(() => {
218
+ setSearchValue('');
219
+ setSearchResults(skills);
220
+ }, [skills, setSearchValue, setSearchResults]);
221
+ const ReviewTooltipContent = (0, _react.useCallback)(() => /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("b", null, translate('review_mode_tooltip_header'))), /*#__PURE__*/_react.default.createElement("p", null, translate('review_mode_tooltip_content')), /*#__PURE__*/_react.default.createElement("ol", null, /*#__PURE__*/_react.default.createElement("li", null, translate('review_mode_tooltip_content_part1')), /*#__PURE__*/_react.default.createElement("li", null, translate('review_mode_tooltip_content_part2')), /*#__PURE__*/_react.default.createElement("li", null, translate('review_mode_tooltip_content_part3')), /*#__PURE__*/_react.default.createElement("li", null, translate('review_mode_tooltip_content_part4')))), [translate]);
222
+ return /*#__PURE__*/_react.default.createElement("div", {
223
+ className: _style.default.backgroundContainer
224
+ }, /*#__PURE__*/_react.default.createElement("div", {
225
+ className: _style.default.container
226
+ }, /*#__PURE__*/_react.default.createElement(_skillPickerModal.default, {
227
+ skills: skills,
228
+ selectedSkills: selectedSkillsList,
229
+ skillsLocales: skillsLocales,
230
+ isOpen: open,
231
+ isLoading: isLoading,
232
+ onCancel: handleCloseSkillPicker,
233
+ onConfirm: handleConfirmSkillPicker,
234
+ onClose: handleCloseSkillPicker
235
+ }), learnerFeature ? /*#__PURE__*/_react.default.createElement("div", {
236
+ className: _style.default.skillFocusContainer
237
+ }, /*#__PURE__*/_react.default.createElement("header", {
238
+ className: _style.default.skillFocusHeader
239
+ }, /*#__PURE__*/_react.default.createElement("div", {
240
+ className: _style.default.skillFocusHeaderWrapper
241
+ }, /*#__PURE__*/_react.default.createElement("div", {
242
+ className: _style.default.skillFocusHeaderIcon
243
+ }, /*#__PURE__*/_react.default.createElement(_icon.default, {
244
+ iconName: "bullseye-arrow",
245
+ backgroundColor: "#DDD1FF",
246
+ borderRadius: "12px",
247
+ size: {
248
+ faSize: 20,
249
+ wrapperSize: 48
250
+ }
251
+ })), /*#__PURE__*/_react.default.createElement("div", {
252
+ className: _style.default.skillFocusHeaderContent
253
+ }, /*#__PURE__*/_react.default.createElement("div", {
254
+ className: _style.default.skillFocusHeaderTitle
255
+ }, translate('skill_focus')), /*#__PURE__*/_react.default.createElement("div", {
256
+ className: _style.default.skillFocusHeaderDescription
257
+ }, translate('skills_focus_description')))), selectedSkillsList.length > 0 ? /*#__PURE__*/_react.default.createElement(ChangeSkillFocusButton, {
258
+ onClick: handleOpenSkillPicker
259
+ }) : null), selectedSkillsList.length > 0 ? /*#__PURE__*/_react.default.createElement("div", {
260
+ className: _style.default.skillFocusContent
261
+ }, /*#__PURE__*/_react.default.createElement("div", {
262
+ className: _style.default.radarContainer
263
+ }, /*#__PURE__*/_react.default.createElement(_learningProfileRadarChart.default, {
264
+ totalDataset: 1,
265
+ height: 424,
266
+ width: 680,
267
+ data: graphDatas,
268
+ legend: graphLegends,
269
+ onClick: handleOnDotClick,
270
+ colors: [{
271
+ gradient: {
272
+ fill: ['#0062ffff', '#8000ff85'],
273
+ stroke: ['#0062ffff', '#8000FF']
274
+ },
275
+ percentage: {
276
+ color: '#0061FF',
277
+ background: 'linear-gradient(180deg, rgba(0, 97, 255, 0.10) 0%, rgba(147, 107, 255, 0.10) 100%)'
278
+ },
279
+ label: {
280
+ color: '#020202ff'
281
+ }
282
+ }]
283
+ })), /*#__PURE__*/_react.default.createElement(_skillsChartSideInformationPanel.default, {
284
+ sidePanelItems: skillChartPanelProps
285
+ })) : /*#__PURE__*/_react.default.createElement("div", {
286
+ className: _style.default.skillFocusEmpty
287
+ }, /*#__PURE__*/_react.default.createElement(_picture.default, {
288
+ className: _style.default.img,
289
+ src: "https://static.coorpacademy.com/assets/images/mylearning-no-skill-selected-placeholder.svg",
290
+ alt: "demo"
291
+ }), /*#__PURE__*/_react.default.createElement("div", {
292
+ className: _style.default.skillFocusEmptyTitle
293
+ }, translate('skills_focus_empty_title')), /*#__PURE__*/_react.default.createElement("div", {
294
+ className: _style.default.skillFocusEmptyDescription
295
+ }, translate('skills_focus_empty_description')), /*#__PURE__*/_react.default.createElement(_buttonLink.default, {
296
+ label: translate('skills_choose_focus'),
297
+ type: "primary",
298
+ customStyle: {
299
+ width: '168px'
300
+ },
301
+ onClick: handleOpenSkillPicker
302
+ }))) : null, /*#__PURE__*/_react.default.createElement("header", {
303
+ className: _style.default.skillListHeader
304
+ }, /*#__PURE__*/_react.default.createElement("div", {
305
+ className: _style.default.skillListHeaderIcon
306
+ }, /*#__PURE__*/_react.default.createElement(_icon.default, {
307
+ iconName: "dumbbell",
308
+ backgroundColor: "#FFF9D1",
309
+ size: {
310
+ faSize: 20,
311
+ wrapperSize: 48
312
+ }
313
+ })), /*#__PURE__*/_react.default.createElement("div", {
314
+ className: _style.default.skillListHeaderContent
315
+ }, /*#__PURE__*/_react.default.createElement("div", {
316
+ className: _style.default.skillListHeaderTitle
317
+ }, translate('skills_section_title')), /*#__PURE__*/_react.default.createElement("div", {
318
+ className: _style.default.skillListHeaderDescription
319
+ }, translate('skills_section_description'), /*#__PURE__*/_react.default.createElement(_tooltip.default, {
320
+ fontSize: 12,
321
+ iconContainerClassName: _style.default.infoIconTooltip,
322
+ tooltipClassName: _style.default.tooltip,
323
+ TooltipContent: ReviewTooltipContent,
324
+ closeToolTipInformationTextAriaLabel: translate('Press the escape key to close the information text')
325
+ })))), /*#__PURE__*/_react.default.createElement("div", {
326
+ className: _style.default.toolBarContainer
327
+ }, /*#__PURE__*/_react.default.createElement("div", {
328
+ className: _style.default.skillFilterContainer
329
+ }, (0, _keys2.default)(filters).map((filter, index) => {
330
+ function handleFilterClick() {
331
+ setActiveFilter(filter);
332
+ }
333
+
334
+ return /*#__PURE__*/_react.default.createElement("div", {
335
+ key: index
336
+ }, /*#__PURE__*/_react.default.createElement(FilterButton, {
337
+ active: activeFilter === filter,
338
+ filter: filter === 'all' ? translate('all') : translate('review_mode_available'),
339
+ skillTotal: filters[filter].length,
340
+ onClick: handleFilterClick
341
+ }));
342
+ })), /*#__PURE__*/_react.default.createElement("div", {
343
+ className: _style.default.searchWrapper
344
+ }, /*#__PURE__*/_react.default.createElement(_searchForm.default, {
345
+ search: {
346
+ placeholder: translate('search_place_holder'),
347
+ value: searchValue,
348
+ onChange: handleSearch
349
+ },
350
+ onReset: handleSearchReset
351
+ }))), searchValue && searchResults.length === 0 ? /*#__PURE__*/_react.default.createElement("div", {
352
+ className: _style.default.emptySearchResultContainer
353
+ }, /*#__PURE__*/_react.default.createElement("div", {
354
+ className: _style.default.emptySearchResultTitle
355
+ }, translate('empty_search_result_title', {
356
+ searchValue
357
+ })), /*#__PURE__*/_react.default.createElement("div", {
358
+ className: _style.default.emptySearchResultDescription
359
+ }, translate('empty_search_result_description')), /*#__PURE__*/_react.default.createElement("div", {
360
+ className: _style.default.emptySearchResultClearSearch,
361
+ onClick: handleSearchReset
362
+ }, translate('empty_search_result_clear_search'))) : /*#__PURE__*/_react.default.createElement("div", {
363
+ className: _style.default.skillListContainer
364
+ }, activeFilter === 'review_mode_available' && filters[activeFilter].length === 0 ? /*#__PURE__*/_react.default.createElement("div", {
365
+ className: _style.default.skillListEmptyContainer
366
+ }, /*#__PURE__*/_react.default.createElement(_reviewNoSkills.default, {
367
+ titleNoSkills: translate('review_skill_empty'),
368
+ textNoSkills: translate('review_skill_empty_description'),
369
+ iconSkillAriaLabel: translate('review_skill_empty'),
370
+ imagePosition: "top"
371
+ })) : filters[activeFilter].map((skill, index) => {
372
+ function handleReviewSkill() {
373
+ onReviewSkill(skill);
374
+ }
375
+
376
+ function handleExploreSkill() {
377
+ onExploreSkill(skill);
378
+ }
379
+
380
+ return /*#__PURE__*/_react.default.createElement("div", {
381
+ key: index
382
+ }, /*#__PURE__*/_react.default.createElement(_learnerSkillCard.default, {
383
+ skillTitle: skillsLocales[skill],
384
+ focus: selectedSkills.includes(skill),
385
+ metrics: {
386
+ skillCourses: skillsInformation[skill].stats.courses,
387
+ skillQuestions: skillsInformation[skill].stats.questionsAnswered,
388
+ completedCourses: skillsInformation[skill].stats.coursesCompleted
389
+ },
390
+ review: skillsInformation[skill].availableForReview,
391
+ onReviewClick: handleReviewSkill,
392
+ onExploreClick: handleExploreSkill
393
+ }));
394
+ }))));
395
+ };
396
+
397
+ MyLearning.contextTypes = {
398
+ translate: _provider.default.childContextTypes.translate
399
+ };
400
+ MyLearning.propTypes = process.env.NODE_ENV !== "production" ? {
401
+ skills: _propTypes.default.arrayOf(_propTypes.default.string),
402
+ selectedSkills: _propTypes.default.arrayOf(_propTypes.default.string),
403
+ skillsInformation: _propTypes.default.objectOf(_propTypes.default.shape({
404
+ availableForReview: _propTypes.default.bool,
405
+ stats: _propTypes.default.shape({
406
+ score: _propTypes.default.number,
407
+ courses: _propTypes.default.number,
408
+ coursesCompleted: _propTypes.default.number,
409
+ questionsAnswered: _propTypes.default.number,
410
+ learningHours: _propTypes.default.number
411
+ })
412
+ })),
413
+ skillsLocales: _propTypes.default.objectOf(_propTypes.default.string),
414
+ learnerFeature: _propTypes.default.bool,
415
+ isLoading: _propTypes.default.bool,
416
+ onSkillFocusConfirm: _propTypes.default.func,
417
+ onReviewSkill: _propTypes.default.func,
418
+ onExploreSkill: _propTypes.default.func
419
+ } : {};
420
+ var _default = MyLearning;
421
+ exports.default = _default;
422
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["ChangeSkillFocusButton","props","context","hovered","setHovered","useState","onClick","skin","translate","primarySkinColor","handleMouseOver","useCallback","handleMouseLeave","backgroundColor","convert","color","transition","position","faIcon","name","size","contextTypes","Provider","childContextTypes","propTypes","PropTypes","func","FilterButton","active","filter","skillTotal","Content","style","skillFilterNumber","skillFilterNumberInActive","buttonProps","customStyle","width","content","bool","string","number","MyLearning","skills","selectedSkills","skillsInformation","skillsLocales","learnerFeature","isLoading","onSkillFocusConfirm","onReviewSkill","onExploreSkill","open","setOpen","selectedSkillsList","setSelectedSkillsList","skillFocusSelectedOnChart","setSkillFocusSelectedOnChart","undefined","searchValue","setSearchValue","searchResults","setSearchResults","activeFilter","setActiveFilter","skillsReviewReady","useMemo","skill","availableForReview","graphDatas","stats","score","graphLegends","filters","all","review","sumKpi","kpi","coursedCompletedData","questionsAnsweredData","learningHoursData","skillChartPaneLegends","focusedSkill","skillChartPanelProps","title","value","legend","icon","iconName","handleOnDotClick","skillRef","handleOpenSkillPicker","handleCloseSkillPicker","handleConfirmSkillPicker","focusSkillList","handleSearch","searchValueIncluded","handleSearchReset","ReviewTooltipContent","backgroundContainer","container","skillFocusContainer","skillFocusHeader","skillFocusHeaderWrapper","skillFocusHeaderIcon","faSize","wrapperSize","skillFocusHeaderContent","skillFocusHeaderTitle","skillFocusHeaderDescription","length","skillFocusContent","radarContainer","gradient","fill","stroke","percentage","background","label","skillFocusEmpty","img","skillFocusEmptyTitle","skillFocusEmptyDescription","skillListHeader","skillListHeaderIcon","skillListHeaderContent","skillListHeaderTitle","skillListHeaderDescription","infoIconTooltip","tooltip","toolBarContainer","skillFilterContainer","map","index","handleFilterClick","searchWrapper","placeholder","onChange","emptySearchResultContainer","emptySearchResultTitle","emptySearchResultDescription","emptySearchResultClearSearch","skillListContainer","skillListEmptyContainer","handleReviewSkill","handleExploreSkill","includes","skillCourses","courses","skillQuestions","questionsAnswered","completedCourses","coursesCompleted","arrayOf","objectOf","shape","learningHours"],"sources":["../../../src/template/my-learning/index.js"],"sourcesContent":["import React, {useCallback, useState, useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport {convert} from 'css-color-function';\nimport {getOr, keys, map, fromPairs, pipe, sumBy} from 'lodash/fp';\nimport Provider from '../../atom/provider';\nimport Icon from '../../atom/icon';\nimport Picture from '../../atom/picture';\nimport ButtonLink from '../../atom/button-link';\nimport ToolTip from '../../atom/tooltip';\nimport ReviewNoSkills from '../../organism/review-no-skills';\nimport SearchForm from '../../molecule/search-form';\nimport SkillPickerModal from '../../molecule/skill-picker-modal';\nimport ResponsiveLearningProfileRadarChart from '../../molecule/learning-profile-radar-chart';\nimport SkillsChartSideInformationPanel from '../../molecule/skills-chart-side-information-panel';\nimport LearnerSkillCard from '../../molecule/learner-skill-card';\nimport searchValueIncluded from '../../util/search-value-included';\nimport style from './style.css';\n\nconst ChangeSkillFocusButton = (props, context) => {\n const [hovered, setHovered] = useState(false);\n const {onClick} = props;\n const {skin, translate} = context;\n const primarySkinColor = getOr('#0061FF', 'common.primary', skin);\n\n const handleMouseOver = useCallback(() => setHovered(true), [setHovered]);\n\n const handleMouseLeave = useCallback(() => setHovered(false), [setHovered]);\n\n return (\n <div\n data-name=\"button-explore-wrapper\"\n onMouseOver={handleMouseOver}\n onMouseLeave={handleMouseLeave}\n >\n <ButtonLink\n customStyle={{\n backgroundColor: hovered\n ? primarySkinColor\n : convert(`color(${primarySkinColor} a(0.07))`),\n color: hovered ? '#FFFFFF' : primarySkinColor,\n transition: 'background-color 0.15s ease-in-out, color 0.15s ease-in-out'\n }}\n onClick={onClick}\n label={translate('skills_change_focus')}\n data-name=\"change-skill-focus-button\"\n icon={{\n position: 'left',\n faIcon: {\n name: 'arrows-rotate',\n backgroundColor: hovered\n ? primarySkinColor\n : convert(`color(${primarySkinColor} a(0.07))`),\n color: hovered ? '#FFFFFF' : primarySkinColor,\n size: 16\n }\n }}\n />\n </div>\n );\n};\n\nChangeSkillFocusButton.contextTypes = {\n translate: Provider.childContextTypes.translate\n};\n\nChangeSkillFocusButton.propTypes = {\n onClick: PropTypes.func\n};\n\nconst FilterButton = (props, context) => {\n const {active, filter, skillTotal, onClick} = props;\n const {skin, translate} = context;\n const primarySkinColor = getOr('#0061FF', 'common.primary', skin);\n\n const Content = useCallback(\n () => (\n <div>\n {filter}\n <span className={active ? style.skillFilterNumber : style.skillFilterNumberInActive}>\n {skillTotal}\n </span>\n </div>\n ),\n [filter, skillTotal, active]\n );\n\n const buttonProps = {\n customStyle: {\n backgroundColor: active ? convert(`color(${primarySkinColor} a(0.07))`) : '#FFFFFF',\n color: active ? primarySkinColor : '#9999A8',\n transition: 'background-color 0.15s ease-in-out, color 0.15s ease-in-out',\n width: filter === translate('review_mode_available') ? '200px' : 'fit-content'\n },\n onClick,\n content: <Content />,\n 'data-name': 'change-skill-focus-button'\n };\n\n return <ButtonLink {...buttonProps} />;\n};\n\nFilterButton.contextTypes = {\n translate: Provider.childContextTypes.translate\n};\n\nFilterButton.propTypes = {\n active: PropTypes.bool,\n filter: PropTypes.string,\n skillTotal: PropTypes.number,\n onClick: PropTypes.func\n};\n\nconst MyLearning = (props, context) => {\n const {\n skills,\n selectedSkills = [],\n skillsInformation,\n skillsLocales,\n learnerFeature = true,\n isLoading,\n onSkillFocusConfirm,\n onReviewSkill,\n onExploreSkill\n } = props;\n const {translate} = context;\n const [open, setOpen] = useState(false);\n const [selectedSkillsList, setSelectedSkillsList] = useState(selectedSkills);\n const [skillFocusSelectedOnChart, setSkillFocusSelectedOnChart] = useState(undefined);\n const [searchValue, setSearchValue] = useState('');\n const [searchResults, setSearchResults] = useState(skills);\n const [activeFilter, setActiveFilter] = useState('all');\n\n const skillsReviewReady = useMemo(() => {\n return searchResults.filter(skill => skillsInformation[skill].availableForReview);\n }, [searchResults, skillsInformation]);\n\n const graphDatas = useMemo(\n () =>\n pipe(\n map(skill => [skill, skillsInformation[skill].stats.score]),\n fromPairs\n )(selectedSkillsList),\n [selectedSkillsList, skillsInformation]\n );\n\n const graphLegends = useMemo(\n () =>\n pipe(\n map(skill => [skill, skillsLocales[skill]]),\n fromPairs\n )(selectedSkillsList),\n [selectedSkillsList, skillsLocales]\n );\n\n const filters = useMemo(() => {\n return {\n all: searchResults,\n review: skillsReviewReady\n };\n }, [searchResults, skillsReviewReady]);\n\n const sumKpi = useCallback(\n kpi =>\n skillFocusSelectedOnChart\n ? skillsInformation[skillFocusSelectedOnChart].stats[kpi]\n : sumBy(skill => skillsInformation[skill].stats[kpi], selectedSkillsList),\n [skillFocusSelectedOnChart, skillsInformation, selectedSkillsList]\n );\n\n const coursedCompletedData = useMemo(() => sumKpi('coursesCompleted'), [sumKpi]);\n\n const questionsAnsweredData = useMemo(() => sumKpi('questionsAnswered'), [sumKpi]);\n\n const learningHoursData = useMemo(() => sumKpi('learningHours'), [sumKpi]);\n\n const skillChartPaneLegends = useMemo(\n () =>\n translate('skill_scope_specifier', {\n focusedSkill: skillFocusSelectedOnChart\n ? skillsLocales[skillFocusSelectedOnChart]\n : translate('focused_skills')\n }),\n [translate, skillsLocales, skillFocusSelectedOnChart]\n );\n const skillChartPanelProps = [\n {\n title: translate('skill_chart_side_panel_courses_completed'),\n value: `${coursedCompletedData}`,\n legend: skillChartPaneLegends,\n icon: {iconName: 'book-open-cover', backgroundColor: '#D9F4F7'}\n },\n {\n title: translate('skill_chart_side_panel_questions_answered'),\n value: `${questionsAnsweredData}`,\n legend: skillChartPaneLegends,\n icon: {iconName: 'circle-question', backgroundColor: '#FFDCD1'}\n },\n {\n title: translate('skill_chart_side_panel_learning_hours'),\n value: `${learningHoursData}`,\n legend: skillChartPaneLegends,\n icon: {iconName: 'clock', backgroundColor: '#FAD6DE'}\n }\n ];\n\n const handleOnDotClick = useCallback(\n skillRef => {\n skillRef && setSkillFocusSelectedOnChart(skillRef);\n },\n [setSkillFocusSelectedOnChart]\n );\n const handleOpenSkillPicker = useCallback(() => setOpen(true), [setOpen]);\n const handleCloseSkillPicker = useCallback(() => setOpen(false), [setOpen]);\n const handleConfirmSkillPicker = useCallback(\n focusSkillList => {\n setSelectedSkillsList(focusSkillList);\n onSkillFocusConfirm(focusSkillList);\n setOpen(false);\n },\n [onSkillFocusConfirm, setSelectedSkillsList, setOpen]\n );\n const handleSearch = useCallback(\n value => {\n setSearchValue(value);\n setSearchResults(skills.filter(skill => searchValueIncluded(skillsLocales[skill], value)));\n },\n [skills, skillsLocales, setSearchValue, setSearchResults]\n );\n const handleSearchReset = useCallback(() => {\n setSearchValue('');\n setSearchResults(skills);\n }, [skills, setSearchValue, setSearchResults]);\n\n const ReviewTooltipContent = useCallback(\n () => (\n <div>\n <div>\n <b>{translate('review_mode_tooltip_header')}</b>\n </div>\n <p>{translate('review_mode_tooltip_content')}</p>\n <ol>\n <li>{translate('review_mode_tooltip_content_part1')}</li>\n <li>{translate('review_mode_tooltip_content_part2')}</li>\n <li>{translate('review_mode_tooltip_content_part3')}</li>\n <li>{translate('review_mode_tooltip_content_part4')}</li>\n </ol>\n </div>\n ),\n [translate]\n );\n\n return (\n <div className={style.backgroundContainer}>\n <div className={style.container}>\n <SkillPickerModal\n skills={skills}\n selectedSkills={selectedSkillsList}\n skillsLocales={skillsLocales}\n isOpen={open}\n isLoading={isLoading}\n onCancel={handleCloseSkillPicker}\n onConfirm={handleConfirmSkillPicker}\n onClose={handleCloseSkillPicker}\n />\n {learnerFeature ? (\n <div className={style.skillFocusContainer}>\n <header className={style.skillFocusHeader}>\n <div className={style.skillFocusHeaderWrapper}>\n <div className={style.skillFocusHeaderIcon}>\n <Icon\n iconName=\"bullseye-arrow\"\n backgroundColor=\"#DDD1FF\"\n borderRadius=\"12px\"\n size={{faSize: 20, wrapperSize: 48}}\n />\n </div>\n <div className={style.skillFocusHeaderContent}>\n <div className={style.skillFocusHeaderTitle}>{translate('skill_focus')}</div>\n <div className={style.skillFocusHeaderDescription}>\n {translate('skills_focus_description')}\n </div>\n </div>\n </div>\n {selectedSkillsList.length > 0 ? (\n <ChangeSkillFocusButton onClick={handleOpenSkillPicker} />\n ) : null}\n </header>\n {selectedSkillsList.length > 0 ? (\n <div className={style.skillFocusContent}>\n <div className={style.radarContainer}>\n <ResponsiveLearningProfileRadarChart\n totalDataset={1}\n height={424}\n width={680}\n data={graphDatas}\n legend={graphLegends}\n onClick={handleOnDotClick}\n colors={[\n {\n gradient: {\n fill: ['#0062ffff', '#8000ff85'],\n stroke: ['#0062ffff', '#8000FF']\n },\n percentage: {\n color: '#0061FF',\n background:\n 'linear-gradient(180deg, rgba(0, 97, 255, 0.10) 0%, rgba(147, 107, 255, 0.10) 100%)'\n },\n label: {\n color: '#020202ff'\n }\n }\n ]}\n />\n </div>\n <SkillsChartSideInformationPanel sidePanelItems={skillChartPanelProps} />\n </div>\n ) : (\n <div className={style.skillFocusEmpty}>\n <Picture\n className={style.img}\n src=\"https://static.coorpacademy.com/assets/images/mylearning-no-skill-selected-placeholder.svg\"\n alt=\"demo\"\n />\n <div className={style.skillFocusEmptyTitle}>\n {translate('skills_focus_empty_title')}\n </div>\n <div className={style.skillFocusEmptyDescription}>\n {translate('skills_focus_empty_description')}\n </div>\n <ButtonLink\n label={translate('skills_choose_focus')}\n type=\"primary\"\n customStyle={{width: '168px'}}\n onClick={handleOpenSkillPicker}\n />\n </div>\n )}\n </div>\n ) : null}\n <header className={style.skillListHeader}>\n <div className={style.skillListHeaderIcon}>\n <Icon\n iconName=\"dumbbell\"\n backgroundColor=\"#FFF9D1\"\n size={{faSize: 20, wrapperSize: 48}}\n />\n </div>\n <div className={style.skillListHeaderContent}>\n <div className={style.skillListHeaderTitle}>{translate('skills_section_title')}</div>\n <div className={style.skillListHeaderDescription}>\n {translate('skills_section_description')}\n <ToolTip\n fontSize={12}\n iconContainerClassName={style.infoIconTooltip}\n tooltipClassName={style.tooltip}\n TooltipContent={ReviewTooltipContent}\n closeToolTipInformationTextAriaLabel={translate(\n 'Press the escape key to close the information text'\n )}\n />\n </div>\n </div>\n </header>\n <div className={style.toolBarContainer}>\n <div className={style.skillFilterContainer}>\n {keys(filters).map((filter, index) => {\n function handleFilterClick() {\n setActiveFilter(filter);\n }\n\n return (\n <div key={index}>\n <FilterButton\n active={activeFilter === filter}\n filter={\n filter === 'all' ? translate('all') : translate('review_mode_available')\n }\n skillTotal={filters[filter].length}\n onClick={handleFilterClick}\n />\n </div>\n );\n })}\n </div>\n <div className={style.searchWrapper}>\n <SearchForm\n search={{\n placeholder: translate('search_place_holder'),\n value: searchValue,\n onChange: handleSearch\n }}\n onReset={handleSearchReset}\n />\n </div>\n </div>\n {searchValue && searchResults.length === 0 ? (\n <div className={style.emptySearchResultContainer}>\n <div className={style.emptySearchResultTitle}>\n {translate('empty_search_result_title', {searchValue})}\n </div>\n <div className={style.emptySearchResultDescription}>\n {translate('empty_search_result_description')}\n </div>\n <div className={style.emptySearchResultClearSearch} onClick={handleSearchReset}>\n {translate('empty_search_result_clear_search')}\n </div>\n </div>\n ) : (\n <div className={style.skillListContainer}>\n {activeFilter === 'review_mode_available' && filters[activeFilter].length === 0 ? (\n <div className={style.skillListEmptyContainer}>\n <ReviewNoSkills\n titleNoSkills={translate('review_skill_empty')}\n textNoSkills={translate('review_skill_empty_description')}\n iconSkillAriaLabel={translate('review_skill_empty')}\n imagePosition=\"top\"\n />\n </div>\n ) : (\n filters[activeFilter].map((skill, index) => {\n function handleReviewSkill() {\n onReviewSkill(skill);\n }\n function handleExploreSkill() {\n onExploreSkill(skill);\n }\n return (\n <div key={index}>\n <LearnerSkillCard\n skillTitle={skillsLocales[skill]}\n focus={selectedSkills.includes(skill)}\n metrics={{\n skillCourses: skillsInformation[skill].stats.courses,\n skillQuestions: skillsInformation[skill].stats.questionsAnswered,\n completedCourses: skillsInformation[skill].stats.coursesCompleted\n }}\n review={skillsInformation[skill].availableForReview}\n onReviewClick={handleReviewSkill}\n onExploreClick={handleExploreSkill}\n />\n </div>\n );\n })\n )}\n </div>\n )}\n </div>\n </div>\n );\n};\n\nMyLearning.contextTypes = {\n translate: Provider.childContextTypes.translate\n};\n\nMyLearning.propTypes = {\n skills: PropTypes.arrayOf(PropTypes.string),\n selectedSkills: PropTypes.arrayOf(PropTypes.string),\n skillsInformation: PropTypes.objectOf(\n PropTypes.shape({\n availableForReview: PropTypes.bool,\n stats: PropTypes.shape({\n score: PropTypes.number,\n courses: PropTypes.number,\n coursesCompleted: PropTypes.number,\n questionsAnswered: PropTypes.number,\n learningHours: PropTypes.number\n })\n })\n ),\n skillsLocales: PropTypes.objectOf(PropTypes.string),\n learnerFeature: PropTypes.bool,\n isLoading: PropTypes.bool,\n onSkillFocusConfirm: PropTypes.func,\n onReviewSkill: PropTypes.func,\n onExploreSkill: PropTypes.func\n};\n\nexport default MyLearning;\n"],"mappings":"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"}