@coorpacademy/components 11.32.34 → 11.32.35-alpha.11

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 (30) hide show
  1. package/es/molecule/progress-wrapper/index.d.ts +4 -5
  2. package/es/molecule/progress-wrapper/index.d.ts.map +1 -1
  3. package/es/molecule/progress-wrapper/index.js +34 -45
  4. package/es/molecule/progress-wrapper/index.js.map +1 -1
  5. package/es/molecule/progress-wrapper/style.css +3 -25
  6. package/es/template/certification-detail/index.d.ts +5 -47
  7. package/es/template/certification-detail/index.d.ts.map +1 -1
  8. package/es/template/certification-detail/index.js +22 -43
  9. package/es/template/certification-detail/index.js.map +1 -1
  10. package/es/template/certification-detail/style.css +1 -12
  11. package/es/template/skill-detail/all-courses.d.ts +1 -2
  12. package/es/template/skill-detail/all-courses.d.ts.map +1 -1
  13. package/es/template/skill-detail/all-courses.js +38 -45
  14. package/es/template/skill-detail/all-courses.js.map +1 -1
  15. package/lib/molecule/progress-wrapper/index.d.ts +4 -5
  16. package/lib/molecule/progress-wrapper/index.d.ts.map +1 -1
  17. package/lib/molecule/progress-wrapper/index.js +34 -46
  18. package/lib/molecule/progress-wrapper/index.js.map +1 -1
  19. package/lib/molecule/progress-wrapper/style.css +3 -25
  20. package/lib/template/certification-detail/index.d.ts +5 -47
  21. package/lib/template/certification-detail/index.d.ts.map +1 -1
  22. package/lib/template/certification-detail/index.js +21 -43
  23. package/lib/template/certification-detail/index.js.map +1 -1
  24. package/lib/template/certification-detail/style.css +1 -12
  25. package/lib/template/skill-detail/all-courses.d.ts +1 -2
  26. package/lib/template/skill-detail/all-courses.d.ts.map +1 -1
  27. package/lib/template/skill-detail/all-courses.js +38 -44
  28. package/lib/template/skill-detail/all-courses.js.map +1 -1
  29. package/locales/en/global.json +2 -0
  30. package/package.json +2 -2
@@ -17,7 +17,7 @@ var _provider = _interopRequireDefault(require("../../atom/provider"));
17
17
 
18
18
  var _tag = _interopRequireDefault(require("../../atom/tag"));
19
19
 
20
- var _select = _interopRequireWildcard(require("../../atom/select"));
20
+ var _select = require("../../atom/select");
21
21
 
22
22
  var _buttonLinkIcon = _interopRequireDefault(require("../../atom/button-link-icon"));
23
23
 
@@ -27,8 +27,6 @@ var _cardsGrid = _interopRequireDefault(require("../../organism/cards-grid"));
27
27
 
28
28
  var _allCourses = _interopRequireDefault(require("../skill-detail/all-courses"));
29
29
 
30
- var _continueLearning = _interopRequireDefault(require("../skill-detail/continue-learning"));
31
-
32
30
  var _skillDetail = require("../skill-detail");
33
31
 
34
32
  var _progressWrapper = _interopRequireDefault(require("../../molecule/progress-wrapper"));
@@ -49,31 +47,24 @@ const CertificationDetail = (props, context) => {
49
47
  title,
50
48
  description,
51
49
  certificationCourses,
52
- ongoingCourses,
53
- totalCourses,
54
- totalModules,
50
+ ongoingCoursesAvailable,
55
51
  filters,
56
- sorting,
57
52
  onBackClick,
58
53
  onContinueLearningClick,
59
54
  metrics,
60
55
  logoUrl,
61
- onDownloadDiploma,
62
- badge = {}
56
+ diplomaUrl,
57
+ badgeUrl
63
58
  } = props;
64
59
  const {
65
60
  translate
66
61
  } = context;
67
62
  const {
68
63
  progression,
69
- completedCourses,
70
- completedModules,
71
- stars
64
+ mandatoryModules,
65
+ stars,
66
+ totalModules
72
67
  } = metrics;
73
- const {
74
- badgeUrl = false,
75
- onDownloadBadge
76
- } = badge;
77
68
  const [showMore, setShowMore] = (0, _react.useState)(false);
78
69
  const handleShowMore = (0, _react.useCallback)(() => setShowMore(!showMore), [setShowMore, showMore]);
79
70
  const Description = (0, _react.useCallback)(() => {
@@ -81,6 +72,7 @@ const CertificationDetail = (props, context) => {
81
72
  className: (0, _classnames.default)(_style.default.description, !showMore && _style.default.truncate)
82
73
  }, description);
83
74
  }, [showMore, description]);
75
+ const completedModules = (0, _react.useMemo)(() => mandatoryModules * progression / 100, [mandatoryModules, progression]);
84
76
  return /*#__PURE__*/_react.default.createElement("div", {
85
77
  className: _style.default.backgroundContainer
86
78
  }, /*#__PURE__*/_react.default.createElement("div", {
@@ -115,37 +107,29 @@ const CertificationDetail = (props, context) => {
115
107
  }
116
108
  })) : null) : null, /*#__PURE__*/_react.default.createElement("div", {
117
109
  className: _style.default.contentStats
118
- }, /*#__PURE__*/_react.default.createElement("span", null, `${totalCourses} ${(0, _lowerCase2.default)(translate('courses'))}`), /*#__PURE__*/_react.default.createElement("div", {
119
- className: _style.default.divider
120
- }), /*#__PURE__*/_react.default.createElement("span", null, `${totalModules} ${(0, _lowerCase2.default)(translate('modules'))}`)), /*#__PURE__*/_react.default.createElement(_skillDetail.ContinueLearningButton, {
121
- ongoingCoursesAvailable: !!ongoingCourses.list.length,
110
+ }, /*#__PURE__*/_react.default.createElement("span", null, `${totalModules} ${(0, _lowerCase2.default)(translate('modules'))}`)), /*#__PURE__*/_react.default.createElement(_skillDetail.ContinueLearningButton, {
111
+ ongoingCoursesAvailable: ongoingCoursesAvailable,
122
112
  onClick: onContinueLearningClick
123
- }))), /*#__PURE__*/_react.default.createElement("div", {
124
- className: _style.default.continueLearningSection
125
- }, /*#__PURE__*/_react.default.createElement(_continueLearning.default, {
126
- ongoingCourses: ongoingCourses
127
- })), /*#__PURE__*/_react.default.createElement(_progressWrapper.default, {
113
+ }))), /*#__PURE__*/_react.default.createElement(_progressWrapper.default, {
128
114
  title: translate('your_progress'),
129
115
  subtitle: translate('certification_progress_wrapper_subtitle'),
130
116
  progression: progression,
131
- completedCourses: completedCourses,
132
117
  completedModules: completedModules,
118
+ mandatoryModules: mandatoryModules,
133
119
  sections: (0, _compact2.default)([{
134
120
  type: 'diploma',
135
- onDownload: () => onDownloadDiploma
121
+ downloadUrl: diplomaUrl
136
122
  }, badgeUrl && {
137
123
  type: 'badge',
138
- badgeUrl,
139
- onDownload: () => onDownloadBadge
124
+ downloadUrl: badgeUrl
140
125
  }, {
141
126
  type: 'stars',
142
127
  stars
143
128
  }])
144
129
  }), /*#__PURE__*/_react.default.createElement(_allCourses.default, {
145
- courses: certificationCourses,
146
- totalCourses: totalCourses,
130
+ content: certificationCourses,
147
131
  filters: filters,
148
- sorting: sorting
132
+ "data-name": "certification-courses"
149
133
  })));
150
134
  };
151
135
 
@@ -161,23 +145,17 @@ CertificationDetail.propTypes = process.env.NODE_ENV !== "production" ? {
161
145
  metrics: _propTypes.default.shape({
162
146
  progression: _propTypes.default.number,
163
147
  stars: _propTypes.default.number,
164
- completedCourses: _propTypes.default.number,
165
- completedModules: _propTypes.default.number
166
- }),
167
- onDownloadDiploma: _propTypes.default.func,
168
- badge: _propTypes.default.shape({
169
- badgeUrl: _propTypes.default.string,
170
- onDownloadBadge: _propTypes.default.func
148
+ mandatoryModules: _propTypes.default.number,
149
+ totalModules: _propTypes.default.number
171
150
  }),
172
- ongoingCourses: _propTypes.default.shape(_cardsGrid.default.propTypes),
151
+ diplomaUrl: _propTypes.default.string,
152
+ badgeUrl: _propTypes.default.string,
153
+ ongoingCoursesAvailable: _propTypes.default.bool,
173
154
  certificationCourses: _propTypes.default.shape(_cardsGrid.default.propTypes),
174
- totalCourses: _propTypes.default.number,
175
- totalModules: _propTypes.default.number,
176
155
  filters: _propTypes.default.shape({
177
156
  onChange: _propTypes.default.func,
178
157
  options: _propTypes.default.arrayOf(_propTypes.default.shape(_select.SelectOptionPropTypes))
179
158
  }),
180
- sorting: _propTypes.default.shape(_select.default.propTypes),
181
159
  onBackClick: _propTypes.default.func,
182
160
  onContinueLearningClick: _propTypes.default.func
183
161
  } : {};
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["DESCRIPTION_BREAKPOINT","CertificationDetail","props","context","certificationRef","title","description","certificationCourses","ongoingCourses","totalCourses","totalModules","filters","sorting","onBackClick","onContinueLearningClick","metrics","logoUrl","onDownloadDiploma","badge","translate","progression","completedCourses","completedModules","stars","badgeUrl","onDownloadBadge","showMore","setShowMore","useState","handleShowMore","useCallback","Description","classnames","style","truncate","backgroundContainer","container","backButton","ctaContainer","logoContainer","logo","length","showMoreWrapper","faSize","wrapperSize","contentStats","divider","list","continueLearningSection","type","onDownload","contextTypes","skin","Provider","childContextTypes","propTypes","PropTypes","string","isRequired","shape","number","func","CardsGrid","onChange","options","arrayOf","SelectOptionPropTypes","Select"],"sources":["../../../src/template/certification-detail/index.js"],"sourcesContent":["import React, {useCallback, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {compact, lowerCase} from 'lodash/fp';\nimport Provider from '../../atom/provider';\nimport Tag from '../../atom/tag';\nimport Select, {SelectOptionPropTypes} from '../../atom/select';\nimport ButtonLinkIcon from '../../atom/button-link-icon';\nimport Icon from '../../atom/icon';\nimport CardsGrid from '../../organism/cards-grid';\nimport AllCourses from '../skill-detail/all-courses';\nimport ContinueLearning from '../skill-detail/continue-learning';\nimport {ContinueLearningButton} from '../skill-detail';\nimport ProgressWrapper from '../../molecule/progress-wrapper';\nimport style from './style.css';\n\nconst DESCRIPTION_BREAKPOINT = 382;\n\nconst CertificationDetail = (props, context) => {\n const {\n certificationRef,\n title,\n description,\n certificationCourses,\n ongoingCourses,\n totalCourses,\n totalModules,\n filters,\n sorting,\n onBackClick,\n onContinueLearningClick,\n metrics,\n logoUrl,\n onDownloadDiploma,\n badge = {}\n } = props;\n const {translate} = context;\n const {progression, completedCourses, completedModules, stars} = metrics;\n const {badgeUrl = false, onDownloadBadge} = badge;\n\n const [showMore, setShowMore] = useState(false);\n const handleShowMore = useCallback(() => setShowMore(!showMore), [setShowMore, showMore]);\n\n const Description = useCallback(() => {\n return (\n <div className={classnames(style.description, !showMore && style.truncate)}>\n {description}\n </div>\n );\n }, [showMore, description]);\n\n return (\n <div className={style.backgroundContainer}>\n <div className={style.container} data-name={certificationRef}>\n <ButtonLinkIcon\n faIcon=\"arrow-left\"\n data-name=\"back-button\"\n aria-label=\"Back\"\n onClick={onBackClick}\n className={style.backButton}\n tooltipPlacement=\"right\"\n />\n <div className={style.ctaContainer}>\n <div className={style.logoContainer}>\n <img className={style.logo} src={logoUrl} />\n </div>\n <div>\n <Tag label={translate('certification')} />\n <div className={style.title}>{title}</div>\n {description ? (\n <>\n <Description />\n {description.length >= DESCRIPTION_BREAKPOINT ? (\n <div className={style.showMoreWrapper} onClick={handleShowMore}>\n {translate(showMore ? 'Show less' : 'Show more')}\n <Icon\n iconName={showMore ? 'chevron-up' : 'chevron-down'}\n size={{faSize: 14, wrapperSize: 16}}\n />\n </div>\n ) : null}\n </>\n ) : null}\n <div className={style.contentStats}>\n <span>{`${totalCourses} ${lowerCase(translate('courses'))}`}</span>\n <div className={style.divider} />\n <span>{`${totalModules} ${lowerCase(translate('modules'))}`}</span>\n </div>\n <ContinueLearningButton\n ongoingCoursesAvailable={!!ongoingCourses.list.length}\n onClick={onContinueLearningClick}\n />\n </div>\n </div>\n <div className={style.continueLearningSection}>\n <ContinueLearning ongoingCourses={ongoingCourses} />\n </div>\n <ProgressWrapper\n title={translate('your_progress')}\n subtitle={translate('certification_progress_wrapper_subtitle')}\n progression={progression}\n completedCourses={completedCourses}\n completedModules={completedModules}\n sections={compact([\n {\n type: 'diploma',\n onDownload: () => onDownloadDiploma\n },\n badgeUrl && {\n type: 'badge',\n badgeUrl,\n onDownload: () => onDownloadBadge\n },\n {\n type: 'stars',\n stars\n }\n ])}\n />\n <AllCourses\n courses={certificationCourses}\n totalCourses={totalCourses}\n filters={filters}\n sorting={sorting}\n />\n </div>\n </div>\n );\n};\n\nCertificationDetail.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nCertificationDetail.propTypes = {\n title: PropTypes.string.isRequired,\n certificationRef: PropTypes.string.isRequired,\n description: PropTypes.string,\n logoUrl: PropTypes.string,\n metrics: PropTypes.shape({\n progression: PropTypes.number,\n stars: PropTypes.number,\n completedCourses: PropTypes.number,\n completedModules: PropTypes.number\n }),\n onDownloadDiploma: PropTypes.func,\n badge: PropTypes.shape({\n badgeUrl: PropTypes.string,\n onDownloadBadge: PropTypes.func\n }),\n ongoingCourses: PropTypes.shape(CardsGrid.propTypes),\n certificationCourses: PropTypes.shape(CardsGrid.propTypes),\n totalCourses: PropTypes.number,\n totalModules: 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 onBackClick: PropTypes.func,\n onContinueLearningClick: PropTypes.func\n};\n\nexport default CertificationDetail;\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["DESCRIPTION_BREAKPOINT","CertificationDetail","props","context","certificationRef","title","description","certificationCourses","ongoingCoursesAvailable","filters","onBackClick","onContinueLearningClick","metrics","logoUrl","diplomaUrl","badgeUrl","translate","progression","mandatoryModules","stars","totalModules","showMore","setShowMore","useState","handleShowMore","useCallback","Description","classnames","style","truncate","completedModules","useMemo","backgroundContainer","container","backButton","ctaContainer","logoContainer","logo","length","showMoreWrapper","faSize","wrapperSize","contentStats","type","downloadUrl","contextTypes","skin","Provider","childContextTypes","propTypes","PropTypes","string","isRequired","shape","number","bool","CardsGrid","onChange","func","options","arrayOf","SelectOptionPropTypes"],"sources":["../../../src/template/certification-detail/index.js"],"sourcesContent":["import React, {useCallback, useState, useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {compact, lowerCase, pipe, get, size} from 'lodash/fp';\nimport Provider from '../../atom/provider';\nimport Tag from '../../atom/tag';\nimport {SelectOptionPropTypes} from '../../atom/select';\nimport ButtonLinkIcon from '../../atom/button-link-icon';\nimport Icon from '../../atom/icon';\nimport CardsGrid from '../../organism/cards-grid';\nimport AllCourses from '../skill-detail/all-courses';\nimport {ContinueLearningButton} from '../skill-detail';\nimport ProgressWrapper from '../../molecule/progress-wrapper';\nimport style from './style.css';\n\nconst DESCRIPTION_BREAKPOINT = 382;\n\nconst CertificationDetail = (props, context) => {\n const {\n certificationRef,\n title,\n description,\n certificationCourses,\n ongoingCoursesAvailable,\n filters,\n onBackClick,\n onContinueLearningClick,\n metrics,\n logoUrl,\n diplomaUrl,\n badgeUrl\n } = props;\n const {translate} = context;\n const {progression, mandatoryModules, stars, totalModules} = metrics;\n\n const [showMore, setShowMore] = useState(false);\n const handleShowMore = useCallback(() => setShowMore(!showMore), [setShowMore, showMore]);\n\n const Description = useCallback(() => {\n return (\n <div className={classnames(style.description, !showMore && style.truncate)}>\n {description}\n </div>\n );\n }, [showMore, description]);\n\n const completedModules = useMemo(\n () => (mandatoryModules * progression) / 100,\n [mandatoryModules, progression]\n );\n\n return (\n <div className={style.backgroundContainer}>\n <div className={style.container} data-name={certificationRef}>\n <ButtonLinkIcon\n faIcon=\"arrow-left\"\n data-name=\"back-button\"\n aria-label=\"Back\"\n onClick={onBackClick}\n className={style.backButton}\n tooltipPlacement=\"right\"\n />\n <div className={style.ctaContainer}>\n <div className={style.logoContainer}>\n <img className={style.logo} src={logoUrl} />\n </div>\n <div>\n <Tag label={translate('certification')} />\n <div className={style.title}>{title}</div>\n {description ? (\n <>\n <Description />\n {description.length >= DESCRIPTION_BREAKPOINT ? (\n <div className={style.showMoreWrapper} onClick={handleShowMore}>\n {translate(showMore ? 'Show less' : 'Show more')}\n <Icon\n iconName={showMore ? 'chevron-up' : 'chevron-down'}\n size={{faSize: 14, wrapperSize: 16}}\n />\n </div>\n ) : null}\n </>\n ) : null}\n <div className={style.contentStats}>\n <span>{`${totalModules} ${lowerCase(translate('modules'))}`}</span>\n </div>\n <ContinueLearningButton\n ongoingCoursesAvailable={ongoingCoursesAvailable}\n onClick={onContinueLearningClick}\n />\n </div>\n </div>\n <ProgressWrapper\n title={translate('your_progress')}\n subtitle={translate('certification_progress_wrapper_subtitle')}\n progression={progression}\n completedModules={completedModules}\n mandatoryModules={mandatoryModules}\n sections={compact([\n {\n type: 'diploma',\n downloadUrl: diplomaUrl\n },\n badgeUrl && {\n type: 'badge',\n downloadUrl: badgeUrl\n },\n {\n type: 'stars',\n stars\n }\n ])}\n />\n <AllCourses\n content={certificationCourses}\n filters={filters}\n data-name=\"certification-courses\"\n />\n </div>\n </div>\n );\n};\n\nCertificationDetail.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nCertificationDetail.propTypes = {\n title: PropTypes.string.isRequired,\n certificationRef: PropTypes.string.isRequired,\n description: PropTypes.string,\n logoUrl: PropTypes.string,\n metrics: PropTypes.shape({\n progression: PropTypes.number,\n stars: PropTypes.number,\n mandatoryModules: PropTypes.number,\n totalModules: PropTypes.number\n }),\n diplomaUrl: PropTypes.string,\n badgeUrl: PropTypes.string,\n ongoingCoursesAvailable: PropTypes.bool,\n certificationCourses: PropTypes.shape(CardsGrid.propTypes),\n filters: PropTypes.shape({\n onChange: PropTypes.func,\n options: PropTypes.arrayOf(PropTypes.shape(SelectOptionPropTypes))\n }),\n onBackClick: PropTypes.func,\n onContinueLearningClick: PropTypes.func\n};\n\nexport default CertificationDetail;\n"],"mappings":"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"}
@@ -8,14 +8,6 @@
8
8
  @value cm_grey_200 from colors;
9
9
  @value cm_grey_400 from colors;
10
10
 
11
- .divider {
12
- width: 4px;
13
- height: 4px;
14
- background-color: cm_grey_400;
15
- border: solid cm_grey_400 1px;
16
- border-radius: 4px;
17
- }
18
-
19
11
  .textBase {
20
12
  font-family: "Gilroy";
21
13
  font-style: normal;
@@ -53,6 +45,7 @@
53
45
  align-items: center;
54
46
  width: 100%;
55
47
  gap: 40px;
48
+ margin-bottom: 40px;
56
49
  }
57
50
 
58
51
  .logoContainer {
@@ -112,10 +105,6 @@
112
105
  color: cm_grey_400;
113
106
  }
114
107
 
115
- .continueLearningSection {
116
- padding: 24px 0 32px 0;
117
- }
118
-
119
108
  @media tablet {
120
109
  .ctaContainer {
121
110
  flex-direction: column;
@@ -26,14 +26,13 @@ declare namespace AllCourses {
26
26
  const translate: PropTypes.Requireable<(...args: any[]) => any>;
27
27
  }
28
28
  namespace propTypes {
29
- const courses: PropTypes.Requireable<PropTypes.InferProps<{
29
+ const content: PropTypes.Requireable<PropTypes.InferProps<{
30
30
  list: PropTypes.Requireable<(PropTypes.InferProps<any> | null | undefined)[]>;
31
31
  customStyle: PropTypes.Requireable<{
32
32
  [x: string]: string | null | undefined;
33
33
  }>;
34
34
  loading: PropTypes.Requireable<boolean>;
35
35
  }>>;
36
- const totalCourses: PropTypes.Requireable<number>;
37
36
  const filters: PropTypes.Requireable<PropTypes.InferProps<{
38
37
  onChange: PropTypes.Requireable<(...args: any[]) => any>;
39
38
  options: PropTypes.Requireable<(PropTypes.InferProps<{
@@ -1 +1 @@
1
- {"version":3,"file":"all-courses.d.ts","sourceRoot":"","sources":["../../../src/template/skill-detail/all-courses.js"],"names":[],"mappings":";AA2CA,mEAwHC"}
1
+ {"version":3,"file":"all-courses.d.ts","sourceRoot":"","sources":["../../../src/template/skill-detail/all-courses.js"],"names":[],"mappings":";AA6CA,mEAsHC"}
@@ -3,9 +3,11 @@
3
3
  exports.__esModule = true;
4
4
  exports.default = void 0;
5
5
 
6
- var _sortBy2 = _interopRequireDefault(require("lodash/fp/sortBy"));
6
+ var _size2 = _interopRequireDefault(require("lodash/fp/size"));
7
7
 
8
- var _getOr2 = _interopRequireDefault(require("lodash/fp/getOr"));
8
+ var _map2 = _interopRequireDefault(require("lodash/fp/map"));
9
+
10
+ var _filter2 = _interopRequireDefault(require("lodash/fp/filter"));
9
11
 
10
12
  var _get2 = _interopRequireDefault(require("lodash/fp/get"));
11
13
 
@@ -37,10 +39,14 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
37
39
 
38
40
  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); }
39
41
 
42
+ const uncappedMap = _map2.default.convert({
43
+ cap: false
44
+ });
45
+
40
46
  const FilterButton = (props, context) => {
41
47
  const {
42
48
  selected,
43
- filter,
49
+ label,
44
50
  onClick
45
51
  } = props;
46
52
  const {
@@ -54,7 +60,7 @@ const FilterButton = (props, context) => {
54
60
  transition: 'background-color 0.15s ease-in-out, color 0.15s ease-in-out',
55
61
  width: 'fit-content'
56
62
  },
57
- label: filter,
63
+ label,
58
64
  onClick,
59
65
  'data-name': 'filter-type-course-button'
60
66
  };
@@ -67,14 +73,13 @@ FilterButton.contextTypes = {
67
73
  };
68
74
  FilterButton.propTypes = process.env.NODE_ENV !== "production" ? {
69
75
  selected: _propTypes.default.bool,
70
- filter: _propTypes.default.string,
76
+ label: _propTypes.default.string,
71
77
  onClick: _propTypes.default.func
72
78
  } : {};
73
79
 
74
80
  const AllCourses = (props, context) => {
75
81
  const {
76
- courses,
77
- totalCourses,
82
+ content,
78
83
  filters,
79
84
  sorting
80
85
  } = props;
@@ -85,47 +90,43 @@ const AllCourses = (props, context) => {
85
90
  const {
86
91
  list,
87
92
  loading
88
- } = courses;
93
+ } = content;
89
94
  const {
90
95
  translate
91
96
  } = context;
92
97
  const [showCompleted, setShowCompleted] = (0, _react.useState)(true);
93
98
  const [searchValue, setSearchValue] = (0, _react.useState)('');
94
- const [searchResults, setSearchResults] = (0, _react.useState)((0, _sortBy2.default)(course => -(0, _getOr2.default)(0, ['progress'], course), list));
95
99
  const sortView = sorting !== undefined ? /*#__PURE__*/_react.default.createElement("div", {
96
100
  "data-name": "choice"
97
101
  }, /*#__PURE__*/_react.default.createElement(_select.default, _extends({}, sorting, {
98
102
  "aria-label": "All courses sort"
99
103
  }))) : null;
100
- (0, _react.useEffect)(() => {
101
- setSearchResults((0, _sortBy2.default)(course => -(0, _getOr2.default)(0, ['progress'], course), list));
102
- }, [list]);
104
+ const filteredContent = (0, _react.useMemo)(() => {
105
+ return showCompleted ? list : (0, _filter2.default)(course => course.progress < 1, list);
106
+ }, [list, showCompleted]);
107
+ const contentResult = (0, _react.useMemo)(() => {
108
+ return (0, _filter2.default)(skill => (0, _searchValueIncluded.default)(skill.title, searchValue), filteredContent);
109
+ }, [filteredContent, searchValue]);
103
110
  const handleSearch = (0, _react.useCallback)(value => {
104
111
  setSearchValue(value);
105
- setSearchResults(list.filter(skill => (0, _searchValueIncluded.default)(skill.title, value)));
106
- }, [list, setSearchValue, setSearchResults]);
112
+ }, [setSearchValue]);
107
113
  const handleSearchReset = (0, _react.useCallback)(() => {
108
114
  setSearchValue('');
109
- setSearchResults(list);
110
- }, [list, setSearchValue, setSearchResults]);
115
+ }, [setSearchValue]);
111
116
  const handleShowCompletedToggle = (0, _react.useCallback)(() => {
112
- const toggledShowCompleted = !showCompleted;
113
- setShowCompleted(toggledShowCompleted);
114
-
115
- if (toggledShowCompleted) {
116
- setSearchResults(list);
117
- handleSearchReset();
118
- } else {
119
- setSearchResults(searchResults.filter(skill => skill.progress < 100));
120
- }
121
- }, [list, searchResults, showCompleted, setShowCompleted, setSearchResults, handleSearchReset]);
117
+ setShowCompleted(prevShowCompleted => !prevShowCompleted);
118
+ }, []);
119
+ const handleFilterChange = (0, _react.useCallback)(value => {
120
+ onChange(value);
121
+ handleSearchReset();
122
+ }, [onChange, handleSearchReset]);
122
123
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
123
124
  className: _allCourses.default.continueLearningWrapper
124
125
  }, /*#__PURE__*/_react.default.createElement("span", {
125
126
  className: _allCourses.default.continueLearningTitle
126
- }, translate('all_courses')), /*#__PURE__*/_react.default.createElement("span", {
127
+ }, translate('all_content')), /*#__PURE__*/_react.default.createElement("span", {
127
128
  className: _allCourses.default.continueLearningNumber
128
- }, totalCourses)), /*#__PURE__*/_react.default.createElement("div", {
129
+ }, (0, _size2.default)(contentResult))), /*#__PURE__*/_react.default.createElement("div", {
129
130
  className: _allCourses.default.searchAndSortSection
130
131
  }, /*#__PURE__*/_react.default.createElement("div", {
131
132
  className: _allCourses.default.searchWrapper
@@ -146,34 +147,28 @@ const AllCourses = (props, context) => {
146
147
  "aria-label": 'Show completed courses aria label',
147
148
  value: showCompleted,
148
149
  onChange: handleShowCompletedToggle
149
- }), /*#__PURE__*/_react.default.createElement("div", {
150
+ }), sortView ? /*#__PURE__*/_react.default.createElement("div", {
150
151
  className: _allCourses.default.sortWrapper
151
- }, translate('sort_by'), sortView))), /*#__PURE__*/_react.default.createElement("div", {
152
+ }, translate('sort_by'), sortView) : null)), /*#__PURE__*/_react.default.createElement("div", {
152
153
  className: _allCourses.default.filterWrapper
153
- }, options.length > 2 && searchResults.length > 0 ? options.map((filter, index) => {
154
+ }, (0, _size2.default)(options) > 2 && (0, _size2.default)(contentResult) ? uncappedMap((filterProps, index) => {
154
155
  const {
155
156
  name,
156
157
  value,
157
158
  selected
158
- } = filter;
159
-
160
- function handleChange() {
161
- onChange(value);
162
- handleSearchReset();
163
- }
164
-
159
+ } = filterProps;
165
160
  return /*#__PURE__*/_react.default.createElement("div", {
166
161
  key: index,
167
162
  className: _allCourses.default.filterButtonWrapper
168
163
  }, /*#__PURE__*/_react.default.createElement(FilterButton, {
169
164
  selected: selected,
170
- filter: name,
171
- onClick: handleChange
165
+ label: name,
166
+ onClick: handleFilterChange
172
167
  }), value === 'ALL' ? /*#__PURE__*/_react.default.createElement("div", {
173
168
  className: _allCourses.default.divider
174
169
  }) : null);
175
- }) : null), /*#__PURE__*/_react.default.createElement("div", null, searchResults.length > 0 ? /*#__PURE__*/_react.default.createElement(_cardsGrid.default, {
176
- list: searchResults,
170
+ }, options) : null), /*#__PURE__*/_react.default.createElement("div", null, (0, _size2.default)(contentResult) ? /*#__PURE__*/_react.default.createElement(_cardsGrid.default, {
171
+ list: contentResult,
177
172
  loading: loading,
178
173
  customStyle: {
179
174
  justifyContent: 'left'
@@ -197,8 +192,7 @@ AllCourses.contextTypes = {
197
192
  translate: _provider.default.childContextTypes.translate
198
193
  };
199
194
  AllCourses.propTypes = process.env.NODE_ENV !== "production" ? {
200
- courses: _propTypes.default.shape(_cardsGrid.default.propTypes),
201
- totalCourses: _propTypes.default.number,
195
+ content: _propTypes.default.shape(_cardsGrid.default.propTypes),
202
196
  filters: _propTypes.default.shape({
203
197
  onChange: _propTypes.default.func,
204
198
  options: _propTypes.default.arrayOf(_propTypes.default.shape(_select.SelectOptionPropTypes))
@@ -1 +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","courses","totalCourses","filters","sorting","options","onChange","list","loading","showCompleted","setShowCompleted","useState","searchValue","setSearchValue","searchResults","setSearchResults","course","sortView","undefined","useEffect","handleSearch","useCallback","value","skill","searchValueIncluded","title","handleSearchReset","handleShowCompletedToggle","toggledShowCompleted","progress","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, getOr, sortBy} 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 {courses, totalCourses, filters, sorting} = props;\n const {options, onChange} = filters;\n const {list, loading} = courses;\n const {translate} = context;\n const [showCompleted, setShowCompleted] = useState(true);\n const [searchValue, setSearchValue] = useState('');\n const [searchResults, setSearchResults] = useState(\n sortBy(course => -getOr(0, ['progress'], course), list)\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(sortBy(course => -getOr(0, ['progress'], course), list));\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 toggledShowCompleted = !showCompleted;\n setShowCompleted(toggledShowCompleted);\n if (toggledShowCompleted) {\n setSearchResults(list);\n handleSearchReset();\n } else {\n setSearchResults(searchResults.filter(skill => skill.progress < 100));\n }\n }, [list, searchResults, showCompleted, setShowCompleted, setSearchResults, handleSearchReset]);\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 courses: 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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"}
1
+ {"version":3,"file":"all-courses.js","names":["uncappedMap","convert","cap","FilterButton","props","context","selected","label","onClick","skin","primarySkinColor","buttonProps","customStyle","backgroundColor","color","transition","width","contextTypes","Provider","childContextTypes","translate","propTypes","PropTypes","bool","string","func","AllCourses","content","filters","sorting","options","onChange","list","loading","showCompleted","setShowCompleted","useState","searchValue","setSearchValue","sortView","undefined","filteredContent","useMemo","course","progress","contentResult","skill","searchValueIncluded","title","handleSearch","useCallback","value","handleSearchReset","handleShowCompletedToggle","prevShowCompleted","handleFilterChange","style","continueLearningWrapper","continueLearningTitle","continueLearningNumber","searchAndSortSection","searchWrapper","placeholder","sortSection","sortWrapper","filterWrapper","filterProps","index","name","filterButtonWrapper","divider","justifyContent","emptySearchResultContainer","emptySearchResultTitle","emptySearchResultDescription","emptySearchResultClearSearch","shape","CardsGrid","arrayOf","SelectOptionPropTypes","Select"],"sources":["../../../src/template/skill-detail/all-courses.js"],"sourcesContent":["import React, {useState, useCallback, useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport {get, filter, map, size} 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 uncappedMap = map.convert({cap: false});\n\nconst FilterButton = (props, context) => {\n const {selected, label, 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,\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 label: PropTypes.string,\n onClick: PropTypes.func\n};\n\nconst AllCourses = (props, context) => {\n const {content, filters, sorting} = props;\n const {options, onChange} = filters;\n const {list, loading} = content;\n const {translate} = context;\n const [showCompleted, setShowCompleted] = useState(true);\n const [searchValue, setSearchValue] = useState('');\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 const filteredContent = useMemo(() => {\n return showCompleted ? list : filter(course => course.progress < 1, list);\n }, [list, showCompleted]);\n\n const contentResult = useMemo(() => {\n return filter(skill => searchValueIncluded(skill.title, searchValue), filteredContent);\n }, [filteredContent, searchValue]);\n\n const handleSearch = useCallback(\n value => {\n setSearchValue(value);\n },\n [setSearchValue]\n );\n\n const handleSearchReset = useCallback(() => {\n setSearchValue('');\n }, [setSearchValue]);\n\n const handleShowCompletedToggle = useCallback(() => {\n setShowCompleted(prevShowCompleted => !prevShowCompleted);\n }, []);\n\n const handleFilterChange = useCallback(\n value => {\n onChange(value);\n handleSearchReset();\n },\n [onChange, handleSearchReset]\n );\n\n return (\n <>\n <div className={style.continueLearningWrapper}>\n <span className={style.continueLearningTitle}>{translate('all_content')}</span>\n <span className={style.continueLearningNumber}>{size(contentResult)}</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 {sortView ? (\n <div className={style.sortWrapper}>\n {translate('sort_by')}\n {sortView}\n </div>\n ) : null}\n </div>\n </div>\n <div className={style.filterWrapper}>\n {size(options) > 2 && size(contentResult)\n ? uncappedMap((filterProps, index) => {\n const {name, value, selected} = filterProps;\n\n return (\n <div key={index} className={style.filterButtonWrapper}>\n <FilterButton selected={selected} label={name} onClick={handleFilterChange} />\n {value === 'ALL' ? <div className={style.divider} /> : null}\n </div>\n );\n }, options)\n : null}\n </div>\n <div>\n {size(contentResult) ? (\n <CardsGrid\n list={contentResult}\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 content: PropTypes.shape(CardsGrid.propTypes),\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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"}
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "all": "All",
3
3
  "all_courses": "All courses",
4
+ "all_content": "All content",
4
5
  "alphabetical": "Alphabetical",
5
6
  "add_learning_priority": "Add learning priority",
6
7
  "accepted_cards": "Credit or debit card",
@@ -67,6 +68,7 @@
67
68
  "media_stars_to_win": "Win {{count}} additional star in this chapter the first time you view a lesson!",
68
69
  "modules": "Modules",
69
70
  "modules_completed": "modules completed",
71
+ "modules_completed_mandatory": "mandatory modules completed",
70
72
  "More": "More",
71
73
  "More details": "More details",
72
74
  "New media": "New lesson",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coorpacademy/components",
3
- "version": "11.32.34",
3
+ "version": "11.32.35-alpha.11+5dab2fab6",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",
@@ -177,5 +177,5 @@
177
177
  "last 2 versions",
178
178
  "IE 11"
179
179
  ],
180
- "gitHead": "30607074e685fb930d63f17285279163254a67a3"
180
+ "gitHead": "5dab2fab63a77ed12849a26d3445d45d6ed38337"
181
181
  }