@coorpacademy/components 11.32.14 → 11.32.15-alpha.9

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 (120) hide show
  1. package/es/atom/button-link/style.css +1 -0
  2. package/es/atom/select/index.d.ts.map +1 -1
  3. package/es/atom/select/index.js +2 -1
  4. package/es/atom/select/index.js.map +1 -1
  5. package/es/atom/select/style.css +23 -0
  6. package/es/molecule/cm-popin/types.d.ts +3 -0
  7. package/es/molecule/cm-popin/types.d.ts.map +1 -1
  8. package/es/molecule/dashboard/cards-list/index.d.ts +4 -1
  9. package/es/molecule/dashboard/cards-list/index.d.ts.map +1 -1
  10. package/es/molecule/dashboard/cards-list/index.js +8 -3
  11. package/es/molecule/dashboard/cards-list/index.js.map +1 -1
  12. package/es/molecule/dashboard/cards-list/prop-types.d.ts +3 -1
  13. package/es/molecule/dashboard/cards-list/prop-types.d.ts.map +1 -1
  14. package/es/molecule/dashboard/cards-list/prop-types.js.map +1 -1
  15. package/es/molecule/dashboard/cards-list/style.css +4 -0
  16. package/es/organism/cards-grid/index.d.ts +3 -0
  17. package/es/organism/cards-grid/index.js +4 -1
  18. package/es/organism/cards-grid/index.js.map +1 -1
  19. package/es/organism/cards-grid/style.css +0 -1
  20. package/es/template/app-player/loading/index.d.ts +3 -0
  21. package/es/template/app-player/player/index.d.ts +6 -0
  22. package/es/template/app-player/player/slides/index.d.ts +3 -0
  23. package/es/template/app-player/player/slides/index.d.ts.map +1 -1
  24. package/es/template/app-player/popin-correction/index.d.ts +3 -0
  25. package/es/template/app-player/popin-correction/index.d.ts.map +1 -1
  26. package/es/template/app-player/popin-end/index.d.ts +7 -1
  27. package/es/template/app-player/popin-end/summary.d.ts +4 -1
  28. package/es/template/app-review/index.d.ts +3 -0
  29. package/es/template/app-review/index.d.ts.map +1 -1
  30. package/es/template/app-review/player/prop-types.d.ts +3 -0
  31. package/es/template/app-review/player/prop-types.d.ts.map +1 -1
  32. package/es/template/app-review/prop-types.d.ts +3 -0
  33. package/es/template/app-review/prop-types.d.ts.map +1 -1
  34. package/es/template/back-office/brand-update/index.d.ts +3 -0
  35. package/es/template/common/authors/index.d.ts +3 -0
  36. package/es/template/common/authors/index.d.ts.map +1 -1
  37. package/es/template/common/dashboard/index.d.ts +6 -0
  38. package/es/template/common/search-page/index.d.ts +10 -1
  39. package/es/template/external-course/index.d.ts +3 -0
  40. package/es/template/my-learning/index.d.ts +3 -0
  41. package/es/template/my-learning/index.d.ts.map +1 -1
  42. package/es/template/my-learning/index.js +7 -2
  43. package/es/template/my-learning/index.js.map +1 -1
  44. package/es/template/skill-detail/all-courses.css +128 -0
  45. package/es/template/skill-detail/all-courses.d.ts +80 -0
  46. package/es/template/skill-detail/all-courses.d.ts.map +1 -0
  47. package/es/template/skill-detail/all-courses.js +195 -0
  48. package/es/template/skill-detail/all-courses.js.map +1 -0
  49. package/es/template/skill-detail/continue-learning.css +16 -0
  50. package/es/template/skill-detail/continue-learning.d.ts +39 -0
  51. package/es/template/skill-detail/continue-learning.d.ts.map +1 -0
  52. package/es/template/skill-detail/continue-learning.js +42 -0
  53. package/es/template/skill-detail/continue-learning.js.map +1 -0
  54. package/es/template/skill-detail/index.d.ts +101 -0
  55. package/es/template/skill-detail/index.d.ts.map +1 -0
  56. package/es/template/skill-detail/index.js +228 -0
  57. package/es/template/skill-detail/index.js.map +1 -0
  58. package/es/template/skill-detail/style.css +174 -0
  59. package/es/template/teams-dashboard/index.d.ts +4 -1
  60. package/lib/atom/button-link/style.css +1 -0
  61. package/lib/atom/select/index.d.ts.map +1 -1
  62. package/lib/atom/select/index.js +2 -1
  63. package/lib/atom/select/index.js.map +1 -1
  64. package/lib/atom/select/style.css +23 -0
  65. package/lib/molecule/cm-popin/types.d.ts +3 -0
  66. package/lib/molecule/cm-popin/types.d.ts.map +1 -1
  67. package/lib/molecule/dashboard/cards-list/index.d.ts +4 -1
  68. package/lib/molecule/dashboard/cards-list/index.d.ts.map +1 -1
  69. package/lib/molecule/dashboard/cards-list/index.js +8 -4
  70. package/lib/molecule/dashboard/cards-list/index.js.map +1 -1
  71. package/lib/molecule/dashboard/cards-list/prop-types.d.ts +3 -1
  72. package/lib/molecule/dashboard/cards-list/prop-types.d.ts.map +1 -1
  73. package/lib/molecule/dashboard/cards-list/prop-types.js.map +1 -1
  74. package/lib/molecule/dashboard/cards-list/style.css +4 -0
  75. package/lib/organism/cards-grid/index.d.ts +3 -0
  76. package/lib/organism/cards-grid/index.js +4 -1
  77. package/lib/organism/cards-grid/index.js.map +1 -1
  78. package/lib/organism/cards-grid/style.css +0 -1
  79. package/lib/template/app-player/loading/index.d.ts +3 -0
  80. package/lib/template/app-player/player/index.d.ts +6 -0
  81. package/lib/template/app-player/player/slides/index.d.ts +3 -0
  82. package/lib/template/app-player/player/slides/index.d.ts.map +1 -1
  83. package/lib/template/app-player/popin-correction/index.d.ts +3 -0
  84. package/lib/template/app-player/popin-correction/index.d.ts.map +1 -1
  85. package/lib/template/app-player/popin-end/index.d.ts +7 -1
  86. package/lib/template/app-player/popin-end/summary.d.ts +4 -1
  87. package/lib/template/app-review/index.d.ts +3 -0
  88. package/lib/template/app-review/index.d.ts.map +1 -1
  89. package/lib/template/app-review/player/prop-types.d.ts +3 -0
  90. package/lib/template/app-review/player/prop-types.d.ts.map +1 -1
  91. package/lib/template/app-review/prop-types.d.ts +3 -0
  92. package/lib/template/app-review/prop-types.d.ts.map +1 -1
  93. package/lib/template/back-office/brand-update/index.d.ts +3 -0
  94. package/lib/template/common/authors/index.d.ts +3 -0
  95. package/lib/template/common/authors/index.d.ts.map +1 -1
  96. package/lib/template/common/dashboard/index.d.ts +6 -0
  97. package/lib/template/common/search-page/index.d.ts +10 -1
  98. package/lib/template/external-course/index.d.ts +3 -0
  99. package/lib/template/my-learning/index.d.ts +3 -0
  100. package/lib/template/my-learning/index.d.ts.map +1 -1
  101. package/lib/template/my-learning/index.js +7 -2
  102. package/lib/template/my-learning/index.js.map +1 -1
  103. package/lib/template/skill-detail/all-courses.css +128 -0
  104. package/lib/template/skill-detail/all-courses.d.ts +80 -0
  105. package/lib/template/skill-detail/all-courses.d.ts.map +1 -0
  106. package/lib/template/skill-detail/all-courses.js +214 -0
  107. package/lib/template/skill-detail/all-courses.js.map +1 -0
  108. package/lib/template/skill-detail/continue-learning.css +16 -0
  109. package/lib/template/skill-detail/continue-learning.d.ts +39 -0
  110. package/lib/template/skill-detail/continue-learning.d.ts.map +1 -0
  111. package/lib/template/skill-detail/continue-learning.js +59 -0
  112. package/lib/template/skill-detail/continue-learning.js.map +1 -0
  113. package/lib/template/skill-detail/index.d.ts +101 -0
  114. package/lib/template/skill-detail/index.d.ts.map +1 -0
  115. package/lib/template/skill-detail/index.js +250 -0
  116. package/lib/template/skill-detail/index.js.map +1 -0
  117. package/lib/template/skill-detail/style.css +174 -0
  118. package/lib/template/teams-dashboard/index.d.ts +4 -1
  119. package/locales/en/global.json +8 -0
  120. package/package.json +2 -2
@@ -0,0 +1,128 @@
1
+ @value colors: "../../variables/colors.css";
2
+ @value breakpoints: "../../variables/breakpoints.css";
3
+ @value tablet from breakpoints;
4
+ @value mobile from breakpoints;
5
+ @value xtraLightGrey from colors;
6
+ @value cm_grey_100 from colors;
7
+ @value cm_grey_200 from colors;
8
+ @value cm_grey_400 from colors;
9
+
10
+ .continueLearningWrapper {
11
+ margin-top: 40px;
12
+ margin-bottom: 16px;
13
+ }
14
+
15
+ .continueLearningTitle {
16
+ font-size: 16px;
17
+ font-weight: 600;
18
+ line-height: 22px;
19
+ }
20
+
21
+ .continueLearningNumber {
22
+ border-radius: 50%;
23
+ background-color: #EAEAEB;
24
+ color: #515161;
25
+ padding: 2px 4px;
26
+ margin-left: 8px;
27
+ font-size: 10px;
28
+ font-weight: 600;
29
+ line-height: 12px;
30
+ }
31
+
32
+ .searchAndSortSection {
33
+ display: flex;
34
+ margin-bottom: 16px;
35
+ justify-content: space-between;
36
+ }
37
+
38
+ .searchWrapper {
39
+ border-radius: 12px;
40
+ width: 300px;
41
+ background-color: cm_grey_100;
42
+ }
43
+
44
+ .sortSection {
45
+ display: flex;
46
+ gap: 32px;
47
+ align-items: center;
48
+ }
49
+
50
+ .sortWrapper {
51
+ display: flex;
52
+ align-items: center;
53
+ gap: 12px;
54
+ }
55
+
56
+ .filterWrapper {
57
+ display: flex;
58
+ gap: 12px;
59
+ margin-bottom: 32px;
60
+ }
61
+
62
+ .filterButtonWrapper {
63
+ display: flex;
64
+ align-items: center;
65
+ }
66
+
67
+ .divider {
68
+ height: 24px;
69
+ width: 1px;
70
+ background-color: cm_grey_200;
71
+ margin-left: 12px;
72
+ }
73
+
74
+ .emptySearchResultContainer {
75
+ display: flex;
76
+ flex-direction: column;
77
+ align-items: center;
78
+ }
79
+
80
+ .emptySearchResultTitle {
81
+ font-size: 20px;
82
+ font-weight: 700;
83
+ line-height: 28px;
84
+ margin-bottom: 8px;
85
+ }
86
+
87
+ .emptySearchResultDescription {
88
+ font-size: 16px;
89
+ font-weight: 500;
90
+ line-height: 22px;
91
+ margin-bottom: 16px;
92
+ }
93
+
94
+ .emptySearchResultClearSearch {
95
+ color: #0061FF;
96
+ font-size: 14px;
97
+ font-style: normal;
98
+ font-weight: 600;
99
+ line-height: 20px;
100
+ cursor: pointer;
101
+ }
102
+
103
+ .emptySearchResultClearSearch:hover {
104
+ text-decoration: underline;
105
+ }
106
+
107
+ @media (max-width: 799px) {
108
+ .searchAndSortSection {
109
+ flex-direction: column;
110
+ }
111
+
112
+ .sortSection {
113
+ margin-top: 16px;
114
+ }
115
+ }
116
+
117
+ @media mobile {
118
+ .sortSection {
119
+ flex-direction: column;
120
+ gap: 16px;
121
+ align-items: flex-start;
122
+ margin-top: 16px;
123
+ }
124
+
125
+ .filterWrapper {
126
+ overflow-x: scroll;
127
+ }
128
+ }
@@ -0,0 +1,80 @@
1
+ export default AllCourses;
2
+ declare function AllCourses(props: any, context: any): JSX.Element;
3
+ declare namespace AllCourses {
4
+ namespace contextTypes {
5
+ const skin: PropTypes.Requireable<PropTypes.InferProps<{
6
+ common: PropTypes.Requireable<{
7
+ [x: string]: any;
8
+ }>;
9
+ images: PropTypes.Requireable<PropTypes.InferProps<{
10
+ 'logo-mobile': PropTypes.Requireable<any>;
11
+ logo: PropTypes.Requireable<any>;
12
+ 'logo-email': PropTypes.Requireable<any>;
13
+ login: PropTypes.Requireable<any>;
14
+ }>>;
15
+ icons: PropTypes.Requireable<{
16
+ [x: string]: any;
17
+ }>;
18
+ mod: PropTypes.Requireable<{
19
+ [x: string]: any;
20
+ }>;
21
+ courses: PropTypes.Requireable<any[]>;
22
+ texts: PropTypes.Requireable<{
23
+ [x: string]: any;
24
+ }>;
25
+ }>>;
26
+ const translate: PropTypes.Requireable<(...args: any[]) => any>;
27
+ }
28
+ namespace propTypes {
29
+ const skillIncludedCourses: PropTypes.Requireable<PropTypes.InferProps<{
30
+ list: PropTypes.Requireable<(PropTypes.InferProps<any> | null | undefined)[]>;
31
+ customStyle: PropTypes.Requireable<{
32
+ [x: string]: string | null | undefined;
33
+ }>;
34
+ loading: PropTypes.Requireable<boolean>;
35
+ }>>;
36
+ const totalCourses: PropTypes.Requireable<number>;
37
+ const filters: PropTypes.Requireable<PropTypes.InferProps<{
38
+ onChange: PropTypes.Requireable<(...args: any[]) => any>;
39
+ options: PropTypes.Requireable<(PropTypes.InferProps<{
40
+ name: PropTypes.Validator<string>;
41
+ value: PropTypes.Requireable<NonNullable<string | number | null | undefined>>;
42
+ selected: PropTypes.Requireable<boolean>;
43
+ validOption: PropTypes.Requireable<boolean>;
44
+ }> | null | undefined)[]>;
45
+ }>>;
46
+ const sorting: PropTypes.Requireable<PropTypes.InferProps<{
47
+ title: PropTypes.Requireable<string>;
48
+ name: PropTypes.Requireable<string>;
49
+ className: PropTypes.Requireable<string>;
50
+ borderClassName: PropTypes.Requireable<string>;
51
+ disabled: PropTypes.Requireable<boolean>;
52
+ multiple: PropTypes.Requireable<boolean>;
53
+ description: PropTypes.Requireable<string>;
54
+ required: PropTypes.Requireable<boolean>;
55
+ onChange: PropTypes.Requireable<(...args: any[]) => any>;
56
+ theme: PropTypes.Requireable<string>;
57
+ options: PropTypes.Requireable<(PropTypes.InferProps<{
58
+ name: PropTypes.Validator<string>;
59
+ value: PropTypes.Requireable<NonNullable<string | number | null | undefined>>;
60
+ selected: PropTypes.Requireable<boolean>;
61
+ validOption: PropTypes.Requireable<boolean>;
62
+ }> | null | undefined)[]>;
63
+ optgroups: PropTypes.Requireable<(PropTypes.InferProps<{
64
+ label: PropTypes.Validator<string>;
65
+ options: PropTypes.Requireable<(PropTypes.InferProps<{
66
+ name: PropTypes.Validator<string>;
67
+ value: PropTypes.Requireable<NonNullable<string | number | null | undefined>>;
68
+ selected: PropTypes.Requireable<boolean>;
69
+ validOption: PropTypes.Requireable<boolean>;
70
+ }> | null | undefined)[]>;
71
+ }> | null | undefined)[]>;
72
+ modified: PropTypes.Requireable<boolean>;
73
+ error: PropTypes.Requireable<boolean>;
74
+ 'aria-label': PropTypes.Requireable<string>;
75
+ 'aria-labelledby': PropTypes.Requireable<string>;
76
+ }>>;
77
+ }
78
+ }
79
+ import PropTypes from "prop-types";
80
+ //# sourceMappingURL=all-courses.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"all-courses.d.ts","sourceRoot":"","sources":["../../../src/template/skill-detail/all-courses.js"],"names":[],"mappings":";AA2CA,mEAkIC"}
@@ -0,0 +1,214 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.default = void 0;
5
+
6
+ var _get2 = _interopRequireDefault(require("lodash/fp/get"));
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _provider = _interopRequireDefault(require("../../atom/provider"));
13
+
14
+ var _select = _interopRequireWildcard(require("../../atom/select"));
15
+
16
+ var _buttonLink = _interopRequireDefault(require("../../atom/button-link"));
17
+
18
+ var _searchForm = _interopRequireDefault(require("../../molecule/search-form"));
19
+
20
+ var _cardsGrid = _interopRequireDefault(require("../../organism/cards-grid"));
21
+
22
+ var _searchValueIncluded = _interopRequireDefault(require("../../util/search-value-included"));
23
+
24
+ var _inputSwitch = _interopRequireDefault(require("../../atom/input-switch"));
25
+
26
+ var _allCourses = _interopRequireDefault(require("./all-courses.css"));
27
+
28
+ 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); }
29
+
30
+ 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; }
31
+
32
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
33
+
34
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }
35
+
36
+ const FilterButton = (props, context) => {
37
+ const {
38
+ selected,
39
+ filter,
40
+ onClick
41
+ } = props;
42
+ const {
43
+ skin
44
+ } = context;
45
+ const primarySkinColor = (0, _get2.default)('common.primary', skin);
46
+ const buttonProps = {
47
+ customStyle: {
48
+ backgroundColor: selected ? primarySkinColor : '#E1E1E3',
49
+ color: selected ? '#FFFFFF' : '#515161',
50
+ transition: 'background-color 0.15s ease-in-out, color 0.15s ease-in-out',
51
+ width: 'fit-content'
52
+ },
53
+ label: filter,
54
+ onClick,
55
+ 'data-name': 'filter-type-course-button'
56
+ };
57
+ return /*#__PURE__*/_react.default.createElement(_buttonLink.default, buttonProps);
58
+ };
59
+
60
+ FilterButton.contextTypes = {
61
+ skin: _provider.default.childContextTypes.skin,
62
+ translate: _provider.default.childContextTypes.translate
63
+ };
64
+ FilterButton.propTypes = process.env.NODE_ENV !== "production" ? {
65
+ selected: _propTypes.default.bool,
66
+ filter: _propTypes.default.string,
67
+ onClick: _propTypes.default.func
68
+ } : {};
69
+
70
+ const AllCourses = (props, context) => {
71
+ const {
72
+ skillIncludedCourses,
73
+ totalCourses,
74
+ filters,
75
+ sorting
76
+ } = props;
77
+ const {
78
+ options,
79
+ onChange
80
+ } = filters;
81
+ const {
82
+ list,
83
+ loading
84
+ } = skillIncludedCourses;
85
+ const {
86
+ translate
87
+ } = context;
88
+ const [showCompleted, setShowCompleted] = (0, _react.useState)(true);
89
+ const [searchValue, setSearchValue] = (0, _react.useState)('');
90
+ const [searchResults, setSearchResults] = (0, _react.useState)(list.sort((a, b) => {
91
+ const progressA = a.progress ?? 0;
92
+ const progressB = b.progress ?? 0;
93
+ return progressB - progressA;
94
+ }));
95
+ const sortView = sorting !== undefined ? /*#__PURE__*/_react.default.createElement("div", {
96
+ "data-name": "choice"
97
+ }, /*#__PURE__*/_react.default.createElement(_select.default, _extends({}, sorting, {
98
+ "aria-label": "All courses sort"
99
+ }))) : null;
100
+ (0, _react.useEffect)(() => {
101
+ setSearchResults(list.sort((a, b) => {
102
+ const progressA = a.progress ?? 0;
103
+ const progressB = b.progress ?? 0;
104
+ return progressB - progressA;
105
+ }));
106
+ }, [list]);
107
+ const handleSearch = (0, _react.useCallback)(value => {
108
+ setSearchValue(value);
109
+ setSearchResults(list.filter(skill => (0, _searchValueIncluded.default)(skill.title, value)));
110
+ }, [list, setSearchValue, setSearchResults]);
111
+ const handleSearchReset = (0, _react.useCallback)(() => {
112
+ setSearchValue('');
113
+ setSearchResults(list);
114
+ }, [list, setSearchValue, setSearchResults]);
115
+ const handleShowCompletedToggle = (0, _react.useCallback)(() => {
116
+ const tempShowCompleted = !showCompleted;
117
+ setShowCompleted(tempShowCompleted);
118
+
119
+ if (tempShowCompleted) {
120
+ setSearchResults(list);
121
+ handleSearchReset();
122
+ } else {
123
+ setSearchResults(searchResults.filter(skill => skill.progress === 0));
124
+ }
125
+ }, [searchResults, showCompleted, setShowCompleted]);
126
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
127
+ className: _allCourses.default.continueLearningWrapper
128
+ }, /*#__PURE__*/_react.default.createElement("span", {
129
+ className: _allCourses.default.continueLearningTitle
130
+ }, translate('all_courses')), /*#__PURE__*/_react.default.createElement("span", {
131
+ className: _allCourses.default.continueLearningNumber
132
+ }, totalCourses)), /*#__PURE__*/_react.default.createElement("div", {
133
+ className: _allCourses.default.searchAndSortSection
134
+ }, /*#__PURE__*/_react.default.createElement("div", {
135
+ className: _allCourses.default.searchWrapper
136
+ }, /*#__PURE__*/_react.default.createElement(_searchForm.default, {
137
+ search: {
138
+ placeholder: translate('search_place_holder'),
139
+ value: searchValue,
140
+ onChange: handleSearch
141
+ },
142
+ onReset: handleSearchReset
143
+ })), /*#__PURE__*/_react.default.createElement("div", {
144
+ className: _allCourses.default.sortSection
145
+ }, /*#__PURE__*/_react.default.createElement(_inputSwitch.default, {
146
+ id: 'show-completed-courses-switch',
147
+ type: "switch",
148
+ name: translate('show_completed'),
149
+ title: translate('show_completed'),
150
+ "aria-label": 'Show completed courses aria label',
151
+ value: showCompleted,
152
+ onChange: handleShowCompletedToggle
153
+ }), /*#__PURE__*/_react.default.createElement("div", {
154
+ className: _allCourses.default.sortWrapper
155
+ }, translate('sort_by'), sortView))), /*#__PURE__*/_react.default.createElement("div", {
156
+ className: _allCourses.default.filterWrapper
157
+ }, options.length > 2 && searchResults.length > 0 ? options.map((filter, index) => {
158
+ const {
159
+ name,
160
+ value,
161
+ selected
162
+ } = filter;
163
+
164
+ function handleChange() {
165
+ onChange(value);
166
+ handleSearchReset();
167
+ }
168
+
169
+ return /*#__PURE__*/_react.default.createElement("div", {
170
+ key: index,
171
+ className: _allCourses.default.filterButtonWrapper
172
+ }, /*#__PURE__*/_react.default.createElement(FilterButton, {
173
+ selected: selected,
174
+ filter: name,
175
+ onClick: handleChange
176
+ }), value === 'ALL' ? /*#__PURE__*/_react.default.createElement("div", {
177
+ className: _allCourses.default.divider
178
+ }) : null);
179
+ }) : null), /*#__PURE__*/_react.default.createElement("div", null, searchResults.length > 0 ? /*#__PURE__*/_react.default.createElement(_cardsGrid.default, {
180
+ list: searchResults,
181
+ loading: loading,
182
+ customStyle: {
183
+ justifyContent: 'left'
184
+ }
185
+ }) : /*#__PURE__*/_react.default.createElement("div", {
186
+ className: _allCourses.default.emptySearchResultContainer
187
+ }, /*#__PURE__*/_react.default.createElement("div", {
188
+ className: _allCourses.default.emptySearchResultTitle
189
+ }, translate('empty_search_result_title', {
190
+ searchValue
191
+ })), /*#__PURE__*/_react.default.createElement("div", {
192
+ className: _allCourses.default.emptySearchResultDescription
193
+ }, translate('empty_search_result_description')), /*#__PURE__*/_react.default.createElement("div", {
194
+ className: _allCourses.default.emptySearchResultClearSearch,
195
+ onClick: handleSearchReset
196
+ }, translate('empty_search_result_clear_search')))));
197
+ };
198
+
199
+ AllCourses.contextTypes = {
200
+ skin: _provider.default.childContextTypes.skin,
201
+ translate: _provider.default.childContextTypes.translate
202
+ };
203
+ AllCourses.propTypes = process.env.NODE_ENV !== "production" ? {
204
+ skillIncludedCourses: _propTypes.default.shape(_cardsGrid.default.propTypes),
205
+ totalCourses: _propTypes.default.number,
206
+ filters: _propTypes.default.shape({
207
+ onChange: _propTypes.default.func,
208
+ options: _propTypes.default.arrayOf(_propTypes.default.shape(_select.SelectOptionPropTypes))
209
+ }),
210
+ sorting: _propTypes.default.shape(_select.default.propTypes)
211
+ } : {};
212
+ var _default = AllCourses;
213
+ exports.default = _default;
214
+ //# sourceMappingURL=all-courses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"all-courses.js","names":["FilterButton","props","context","selected","filter","onClick","skin","primarySkinColor","buttonProps","customStyle","backgroundColor","color","transition","width","label","contextTypes","Provider","childContextTypes","translate","propTypes","PropTypes","bool","string","func","AllCourses","skillIncludedCourses","totalCourses","filters","sorting","options","onChange","list","loading","showCompleted","setShowCompleted","useState","searchValue","setSearchValue","searchResults","setSearchResults","sort","a","b","progressA","progress","progressB","sortView","undefined","useEffect","handleSearch","useCallback","value","skill","searchValueIncluded","title","handleSearchReset","handleShowCompletedToggle","tempShowCompleted","style","continueLearningWrapper","continueLearningTitle","continueLearningNumber","searchAndSortSection","searchWrapper","placeholder","sortSection","sortWrapper","filterWrapper","length","map","index","name","handleChange","filterButtonWrapper","divider","justifyContent","emptySearchResultContainer","emptySearchResultTitle","emptySearchResultDescription","emptySearchResultClearSearch","shape","CardsGrid","number","arrayOf","SelectOptionPropTypes","Select"],"sources":["../../../src/template/skill-detail/all-courses.js"],"sourcesContent":["import React, {useState, useCallback, useEffect} from 'react';\nimport PropTypes from 'prop-types';\nimport {get} from 'lodash/fp';\nimport Provider from '../../atom/provider';\nimport Select, {SelectOptionPropTypes} from '../../atom/select';\nimport ButtonLink from '../../atom/button-link';\nimport SearchForm from '../../molecule/search-form';\nimport CardsGrid from '../../organism/cards-grid';\nimport searchValueIncluded from '../../util/search-value-included';\nimport InputSwitch from '../../atom/input-switch';\nimport style from './all-courses.css';\n\nconst FilterButton = (props, context) => {\n const {selected, filter, onClick} = props;\n const {skin} = context;\n const primarySkinColor = get('common.primary', skin);\n\n const buttonProps = {\n customStyle: {\n backgroundColor: selected ? primarySkinColor : '#E1E1E3',\n color: selected ? '#FFFFFF' : '#515161',\n transition: 'background-color 0.15s ease-in-out, color 0.15s ease-in-out',\n width: 'fit-content'\n },\n label: filter,\n onClick,\n 'data-name': 'filter-type-course-button'\n };\n\n return <ButtonLink {...buttonProps} />;\n};\n\nFilterButton.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nFilterButton.propTypes = {\n selected: PropTypes.bool,\n filter: PropTypes.string,\n onClick: PropTypes.func\n};\n\nconst AllCourses = (props, context) => {\n const {skillIncludedCourses, totalCourses, filters, sorting} = props;\n const {options, onChange} = filters;\n const {list, loading} = skillIncludedCourses;\n const {translate} = context;\n const [showCompleted, setShowCompleted] = useState(true);\n const [searchValue, setSearchValue] = useState('');\n const [searchResults, setSearchResults] = useState(\n list.sort((a, b) => {\n const progressA = a.progress ?? 0;\n const progressB = b.progress ?? 0;\n return progressB - progressA;\n })\n );\n\n const sortView =\n sorting !== undefined ? (\n <div data-name=\"choice\">\n <Select {...sorting} aria-label=\"All courses sort\" />\n </div>\n ) : null;\n\n useEffect(() => {\n setSearchResults(\n list.sort((a, b) => {\n const progressA = a.progress ?? 0;\n const progressB = b.progress ?? 0;\n return progressB - progressA;\n })\n );\n }, [list]);\n\n const handleSearch = useCallback(\n value => {\n setSearchValue(value);\n setSearchResults(list.filter(skill => searchValueIncluded(skill.title, value)));\n },\n [list, setSearchValue, setSearchResults]\n );\n\n const handleSearchReset = useCallback(() => {\n setSearchValue('');\n setSearchResults(list);\n }, [list, setSearchValue, setSearchResults]);\n\n const handleShowCompletedToggle = useCallback(() => {\n const tempShowCompleted = !showCompleted;\n setShowCompleted(tempShowCompleted);\n if (tempShowCompleted) {\n setSearchResults(list);\n handleSearchReset();\n } else {\n setSearchResults(searchResults.filter(skill => skill.progress === 0));\n }\n }, [searchResults, showCompleted, setShowCompleted]);\n\n return (\n <>\n <div className={style.continueLearningWrapper}>\n <span className={style.continueLearningTitle}>{translate('all_courses')}</span>\n <span className={style.continueLearningNumber}>{totalCourses}</span>\n </div>\n <div className={style.searchAndSortSection}>\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 className={style.sortSection}>\n <InputSwitch\n id={'show-completed-courses-switch'}\n type=\"switch\"\n name={translate('show_completed')}\n title={translate('show_completed')}\n aria-label={'Show completed courses aria label'}\n value={showCompleted}\n onChange={handleShowCompletedToggle}\n />\n <div className={style.sortWrapper}>\n {translate('sort_by')}\n {sortView}\n </div>\n </div>\n </div>\n <div className={style.filterWrapper}>\n {options.length > 2 && searchResults.length > 0\n ? options.map((filter, index) => {\n const {name, value, selected} = filter;\n\n function handleChange() {\n onChange(value);\n handleSearchReset();\n }\n return (\n <div key={index} className={style.filterButtonWrapper}>\n <FilterButton selected={selected} filter={name} onClick={handleChange} />\n {value === 'ALL' ? <div className={style.divider} /> : null}\n </div>\n );\n })\n : null}\n </div>\n <div>\n {searchResults.length > 0 ? (\n <CardsGrid\n list={searchResults}\n loading={loading}\n customStyle={{justifyContent: 'left'}}\n />\n ) : (\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>\n </>\n );\n};\n\nAllCourses.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nAllCourses.propTypes = {\n skillIncludedCourses: PropTypes.shape(CardsGrid.propTypes),\n totalCourses: PropTypes.number,\n filters: PropTypes.shape({\n onChange: PropTypes.func,\n options: PropTypes.arrayOf(PropTypes.shape(SelectOptionPropTypes))\n }),\n sorting: PropTypes.shape(Select.propTypes)\n};\n\nexport default AllCourses;\n"],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ .continueLearningTitle {
2
+ font-size: 16px;
3
+ font-weight: 600;
4
+ line-height: 22px;
5
+ }
6
+
7
+ .continueLearningNumber {
8
+ border-radius: 50%;
9
+ background-color: #EAEAEB;
10
+ color: #515161;
11
+ padding: 2px 4px;
12
+ margin-left: 8px;
13
+ font-size: 10px;
14
+ font-weight: 600;
15
+ line-height: 12px;
16
+ }
@@ -0,0 +1,39 @@
1
+ export default ContinueLearning;
2
+ declare function ContinueLearning(props: any, context: any): JSX.Element | null;
3
+ declare namespace ContinueLearning {
4
+ namespace contextTypes {
5
+ const skin: PropTypes.Requireable<PropTypes.InferProps<{
6
+ common: PropTypes.Requireable<{
7
+ [x: string]: any;
8
+ }>;
9
+ images: PropTypes.Requireable<PropTypes.InferProps<{
10
+ 'logo-mobile': PropTypes.Requireable<any>;
11
+ logo: PropTypes.Requireable<any>;
12
+ 'logo-email': PropTypes.Requireable<any>;
13
+ login: PropTypes.Requireable<any>;
14
+ }>>;
15
+ icons: PropTypes.Requireable<{
16
+ [x: string]: any;
17
+ }>;
18
+ mod: PropTypes.Requireable<{
19
+ [x: string]: any;
20
+ }>;
21
+ courses: PropTypes.Requireable<any[]>;
22
+ texts: PropTypes.Requireable<{
23
+ [x: string]: any;
24
+ }>;
25
+ }>>;
26
+ const translate: PropTypes.Requireable<(...args: any[]) => any>;
27
+ }
28
+ namespace propTypes {
29
+ const ongoingCourses: PropTypes.Requireable<PropTypes.InferProps<{
30
+ list: PropTypes.Requireable<(PropTypes.InferProps<any> | null | undefined)[]>;
31
+ customStyle: PropTypes.Requireable<{
32
+ [x: string]: string | null | undefined;
33
+ }>;
34
+ loading: PropTypes.Requireable<boolean>;
35
+ }>>;
36
+ }
37
+ }
38
+ import PropTypes from "prop-types";
39
+ //# sourceMappingURL=continue-learning.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"continue-learning.d.ts","sourceRoot":"","sources":["../../../src/template/skill-detail/continue-learning.js"],"names":[],"mappings":";AAOA,gFAsBC"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.default = void 0;
5
+
6
+ var _react = _interopRequireWildcard(require("react"));
7
+
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+
10
+ var _provider = _interopRequireDefault(require("../../atom/provider"));
11
+
12
+ var _cardsGrid = _interopRequireDefault(require("../../organism/cards-grid"));
13
+
14
+ var _cardsList = _interopRequireDefault(require("../../molecule/dashboard/cards-list"));
15
+
16
+ var _continueLearning = _interopRequireDefault(require("./continue-learning.css"));
17
+
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+
20
+ 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); }
21
+
22
+ 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; }
23
+
24
+ const ContinueLearning = (props, context) => {
25
+ const {
26
+ ongoingCourses
27
+ } = props;
28
+ const {
29
+ translate
30
+ } = context;
31
+ const Title = (0, _react.useCallback)(() => /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("span", {
32
+ className: _continueLearning.default.continueLearningTitle
33
+ }, translate('continue_learning')), /*#__PURE__*/_react.default.createElement("span", {
34
+ className: _continueLearning.default.continueLearningNumber
35
+ }, ongoingCourses.list.length)));
36
+
37
+ if (ongoingCourses.list.length === 0) {
38
+ return null;
39
+ }
40
+
41
+ return /*#__PURE__*/_react.default.createElement(_cardsList.default, {
42
+ cards: ongoingCourses.list,
43
+ title: /*#__PURE__*/_react.default.createElement(Title, null),
44
+ customStyle: {
45
+ padding: '16px 0px 8px'
46
+ }
47
+ });
48
+ };
49
+
50
+ ContinueLearning.contextTypes = {
51
+ skin: _provider.default.childContextTypes.skin,
52
+ translate: _provider.default.childContextTypes.translate
53
+ };
54
+ ContinueLearning.propTypes = process.env.NODE_ENV !== "production" ? {
55
+ ongoingCourses: _propTypes.default.shape(_cardsGrid.default.propTypes)
56
+ } : {};
57
+ var _default = ContinueLearning;
58
+ exports.default = _default;
59
+ //# sourceMappingURL=continue-learning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"continue-learning.js","names":["ContinueLearning","props","context","ongoingCourses","translate","Title","useCallback","style","continueLearningTitle","continueLearningNumber","list","length","padding","contextTypes","skin","Provider","childContextTypes","propTypes","PropTypes","shape","CardsGrid"],"sources":["../../../src/template/skill-detail/continue-learning.js"],"sourcesContent":["import React, {useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport Provider from '../../atom/provider';\nimport CardsGrid from '../../organism/cards-grid';\nimport CardsList from '../../molecule/dashboard/cards-list';\nimport style from './continue-learning.css';\n\nconst ContinueLearning = (props, context) => {\n const {ongoingCourses} = props;\n const {translate} = context;\n\n const Title = useCallback(() => (\n <>\n <span className={style.continueLearningTitle}>{translate('continue_learning')}</span>\n <span className={style.continueLearningNumber}>{ongoingCourses.list.length}</span>\n </>\n ));\n\n if (ongoingCourses.list.length === 0) {\n return null;\n }\n\n return (\n <CardsList\n cards={ongoingCourses.list}\n title={<Title />}\n customStyle={{padding: '16px 0px 8px'}}\n />\n );\n};\n\nContinueLearning.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nContinueLearning.propTypes = {\n ongoingCourses: PropTypes.shape(CardsGrid.propTypes)\n};\n\nexport default ContinueLearning;\n"],"mappings":";;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;AAEA,MAAMA,gBAAgB,GAAG,CAACC,KAAD,EAAQC,OAAR,KAAoB;EAC3C,MAAM;IAACC;EAAD,IAAmBF,KAAzB;EACA,MAAM;IAACG;EAAD,IAAcF,OAApB;EAEA,MAAMG,KAAK,GAAG,IAAAC,kBAAA,EAAY,mBACxB,yEACE;IAAM,SAAS,EAAEC,yBAAA,CAAMC;EAAvB,GAA+CJ,SAAS,CAAC,mBAAD,CAAxD,CADF,eAEE;IAAM,SAAS,EAAEG,yBAAA,CAAME;EAAvB,GAAgDN,cAAc,CAACO,IAAf,CAAoBC,MAApE,CAFF,CADY,CAAd;;EAOA,IAAIR,cAAc,CAACO,IAAf,CAAoBC,MAApB,KAA+B,CAAnC,EAAsC;IACpC,OAAO,IAAP;EACD;;EAED,oBACE,6BAAC,kBAAD;IACE,KAAK,EAAER,cAAc,CAACO,IADxB;IAEE,KAAK,eAAE,6BAAC,KAAD,OAFT;IAGE,WAAW,EAAE;MAACE,OAAO,EAAE;IAAV;EAHf,EADF;AAOD,CAtBD;;AAwBAZ,gBAAgB,CAACa,YAAjB,GAAgC;EAC9BC,IAAI,EAAEC,iBAAA,CAASC,iBAAT,CAA2BF,IADH;EAE9BV,SAAS,EAAEW,iBAAA,CAASC,iBAAT,CAA2BZ;AAFR,CAAhC;AAKAJ,gBAAgB,CAACiB,SAAjB,2CAA6B;EAC3Bd,cAAc,EAAEe,kBAAA,CAAUC,KAAV,CAAgBC,kBAAA,CAAUH,SAA1B;AADW,CAA7B;eAIejB,gB"}