@coorpacademy/components 11.32.45 → 11.32.47

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 (157) hide show
  1. package/es/atom/button-link/index.d.ts.map +1 -1
  2. package/es/atom/button-link/index.js +12 -6
  3. package/es/atom/button-link/index.js.map +1 -1
  4. package/es/atom/button-link-icon/index.js +2 -2
  5. package/es/atom/button-link-icon/index.js.map +1 -1
  6. package/es/atom/input-file-draggable/index.js +2 -2
  7. package/es/atom/input-file-draggable/index.js.map +1 -1
  8. package/es/atom/link/index.d.ts +1 -1
  9. package/es/atom/link/index.d.ts.map +1 -1
  10. package/es/atom/link/index.js +33 -41
  11. package/es/atom/link/index.js.map +1 -1
  12. package/es/molecule/banner/index.js +3 -3
  13. package/es/molecule/banner/index.js.map +1 -1
  14. package/es/molecule/certification-card/index.d.ts +4 -0
  15. package/es/molecule/certification-card/index.d.ts.map +1 -1
  16. package/es/molecule/certification-card/index.js +14 -10
  17. package/es/molecule/certification-card/index.js.map +1 -1
  18. package/es/molecule/cm-popin/types.d.ts +1 -1
  19. package/es/molecule/icon-picker-modal/index.js +2 -1
  20. package/es/molecule/icon-picker-modal/index.js.map +1 -1
  21. package/es/molecule/progress-wrapper/index.d.ts.map +1 -1
  22. package/es/molecule/progress-wrapper/index.js +22 -12
  23. package/es/molecule/progress-wrapper/index.js.map +1 -1
  24. package/es/organism/accordion/coorp-manager/part/index.d.ts.map +1 -1
  25. package/es/organism/accordion/coorp-manager/part/index.js +3 -1
  26. package/es/organism/accordion/coorp-manager/part/index.js.map +1 -1
  27. package/es/organism/list-item/index.js +1 -1
  28. package/es/organism/list-item/index.js.map +1 -1
  29. package/es/organism/mooc-header/index.d.ts.map +1 -1
  30. package/es/organism/mooc-header/index.js +3 -3
  31. package/es/organism/mooc-header/index.js.map +1 -1
  32. package/es/organism/sidebar/index.d.ts +28 -3
  33. package/es/organism/sidebar/index.d.ts.map +1 -1
  34. package/es/organism/sidebar/index.js +7 -3
  35. package/es/organism/sidebar/index.js.map +1 -1
  36. package/es/template/app-player/loading/index.d.ts +1 -1
  37. package/es/template/app-player/player/index.d.ts +2 -2
  38. package/es/template/app-player/player/slides/index.d.ts +1 -1
  39. package/es/template/app-player/popin-correction/index.d.ts +3 -3
  40. package/es/template/app-player/popin-end/index.d.ts +2 -2
  41. package/es/template/app-player/popin-end/summary.d.ts +1 -1
  42. package/es/template/app-player/popin-header/index.d.ts +1 -1
  43. package/es/template/app-review/index.d.ts +1 -1
  44. package/es/template/app-review/player/prop-types.d.ts +1 -1
  45. package/es/template/app-review/prop-types.d.ts +1 -1
  46. package/es/template/back-office/brand-update/index.d.ts +1 -1
  47. package/es/template/certification-detail/index.d.ts +1 -0
  48. package/es/template/certification-detail/index.d.ts.map +1 -1
  49. package/es/template/certification-detail/index.js +3 -1
  50. package/es/template/certification-detail/index.js.map +1 -1
  51. package/es/template/certifications/index.d.ts +9 -0
  52. package/es/template/certifications/index.d.ts.map +1 -1
  53. package/es/template/certifications/index.js +34 -12
  54. package/es/template/certifications/index.js.map +1 -1
  55. package/es/template/common/dashboard/index.d.ts +2 -2
  56. package/es/template/common/search-page/index.d.ts +1 -1
  57. package/es/template/external-course/index.d.ts +1 -1
  58. package/es/template/skill-detail/index.d.ts +1 -1
  59. package/es/template/skill-detail/index.d.ts.map +1 -1
  60. package/es/template/skill-detail/index.js +5 -5
  61. package/es/template/skill-detail/index.js.map +1 -1
  62. package/es/variables/colors.d.ts +2 -0
  63. package/es/variables/colors.d.ts.map +1 -1
  64. package/es/variables/colors.js +3 -1
  65. package/es/variables/colors.js.map +1 -1
  66. package/lib/atom/button-link/index.d.ts.map +1 -1
  67. package/lib/atom/button-link/index.js +12 -6
  68. package/lib/atom/button-link/index.js.map +1 -1
  69. package/lib/atom/button-link-icon/index.js +2 -2
  70. package/lib/atom/button-link-icon/index.js.map +1 -1
  71. package/lib/atom/input-file-draggable/index.js.map +1 -1
  72. package/lib/atom/link/index.d.ts +1 -1
  73. package/lib/atom/link/index.d.ts.map +1 -1
  74. package/lib/atom/link/index.js +33 -42
  75. package/lib/atom/link/index.js.map +1 -1
  76. package/lib/molecule/banner/index.js.map +1 -1
  77. package/lib/molecule/certification-card/index.d.ts +4 -0
  78. package/lib/molecule/certification-card/index.d.ts.map +1 -1
  79. package/lib/molecule/certification-card/index.js +14 -10
  80. package/lib/molecule/certification-card/index.js.map +1 -1
  81. package/lib/molecule/cm-popin/types.d.ts +1 -1
  82. package/lib/molecule/icon-picker-modal/index.js +3 -1
  83. package/lib/molecule/icon-picker-modal/index.js.map +1 -1
  84. package/lib/molecule/progress-wrapper/index.d.ts.map +1 -1
  85. package/lib/molecule/progress-wrapper/index.js +26 -13
  86. package/lib/molecule/progress-wrapper/index.js.map +1 -1
  87. package/lib/organism/accordion/coorp-manager/part/index.d.ts.map +1 -1
  88. package/lib/organism/accordion/coorp-manager/part/index.js +5 -1
  89. package/lib/organism/accordion/coorp-manager/part/index.js.map +1 -1
  90. package/lib/organism/list-item/index.js +2 -2
  91. package/lib/organism/list-item/index.js.map +1 -1
  92. package/lib/organism/mooc-header/index.d.ts.map +1 -1
  93. package/lib/organism/mooc-header/index.js +4 -3
  94. package/lib/organism/mooc-header/index.js.map +1 -1
  95. package/lib/organism/sidebar/index.d.ts +28 -3
  96. package/lib/organism/sidebar/index.d.ts.map +1 -1
  97. package/lib/organism/sidebar/index.js +7 -3
  98. package/lib/organism/sidebar/index.js.map +1 -1
  99. package/lib/template/app-player/loading/index.d.ts +1 -1
  100. package/lib/template/app-player/player/index.d.ts +2 -2
  101. package/lib/template/app-player/player/slides/index.d.ts +1 -1
  102. package/lib/template/app-player/popin-correction/index.d.ts +3 -3
  103. package/lib/template/app-player/popin-end/index.d.ts +2 -2
  104. package/lib/template/app-player/popin-end/summary.d.ts +1 -1
  105. package/lib/template/app-player/popin-header/index.d.ts +1 -1
  106. package/lib/template/app-review/index.d.ts +1 -1
  107. package/lib/template/app-review/player/prop-types.d.ts +1 -1
  108. package/lib/template/app-review/prop-types.d.ts +1 -1
  109. package/lib/template/back-office/brand-update/index.d.ts +1 -1
  110. package/lib/template/certification-detail/index.d.ts +1 -0
  111. package/lib/template/certification-detail/index.d.ts.map +1 -1
  112. package/lib/template/certification-detail/index.js +3 -1
  113. package/lib/template/certification-detail/index.js.map +1 -1
  114. package/lib/template/certifications/index.d.ts +9 -0
  115. package/lib/template/certifications/index.d.ts.map +1 -1
  116. package/lib/template/certifications/index.js +36 -14
  117. package/lib/template/certifications/index.js.map +1 -1
  118. package/lib/template/common/dashboard/index.d.ts +2 -2
  119. package/lib/template/common/search-page/index.d.ts +1 -1
  120. package/lib/template/external-course/index.d.ts +1 -1
  121. package/lib/template/skill-detail/index.d.ts +1 -1
  122. package/lib/template/skill-detail/index.d.ts.map +1 -1
  123. package/lib/template/skill-detail/index.js +5 -5
  124. package/lib/template/skill-detail/index.js.map +1 -1
  125. package/lib/variables/colors.d.ts +2 -0
  126. package/lib/variables/colors.d.ts.map +1 -1
  127. package/lib/variables/colors.js +3 -1
  128. package/lib/variables/colors.js.map +1 -1
  129. package/locales/bs/global.json +1 -1
  130. package/locales/cs/global.json +1 -1
  131. package/locales/de/global.json +1 -1
  132. package/locales/en/global.json +1 -1
  133. package/locales/es/global.json +1 -1
  134. package/locales/et/global.json +1 -1
  135. package/locales/fi/global.json +1 -1
  136. package/locales/fr/global.json +1 -1
  137. package/locales/hr/global.json +1 -1
  138. package/locales/hu/global.json +1 -1
  139. package/locales/hy/global.json +1 -1
  140. package/locales/it/global.json +1 -1
  141. package/locales/ja/global.json +1 -1
  142. package/locales/ko/global.json +1 -1
  143. package/locales/nl/global.json +1 -1
  144. package/locales/pl/global.json +1 -1
  145. package/locales/pt/global.json +1 -1
  146. package/locales/ro/global.json +1 -1
  147. package/locales/ru/global.json +1 -1
  148. package/locales/sk/global.json +1 -1
  149. package/locales/sl/global.json +1 -1
  150. package/locales/sv/global.json +1 -1
  151. package/locales/tl/global.json +1 -1
  152. package/locales/tr/global.json +1 -1
  153. package/locales/uk/global.json +1 -1
  154. package/locales/vi/global.json +1 -1
  155. package/locales/zh/global.json +1 -1
  156. package/locales/zh_TW/global.json +1 -1
  157. package/package.json +2 -2
@@ -1207,8 +1207,8 @@ declare namespace BrandUpdate {
1207
1207
  'aria-label': PropTypes.Requireable<string>;
1208
1208
  title: PropTypes.Requireable<string>;
1209
1209
  target: PropTypes.Requireable<string>;
1210
- skinHover: PropTypes.Requireable<boolean>;
1211
1210
  hoverColor: PropTypes.Requireable<string>;
1211
+ hoverBackgroundColor: PropTypes.Requireable<string>;
1212
1212
  download: PropTypes.Requireable<boolean>;
1213
1213
  onClick: PropTypes.Requireable<(...args: any[]) => any>;
1214
1214
  onMouseEnter: PropTypes.Requireable<(...args: any[]) => any>;
@@ -27,6 +27,7 @@ declare namespace CertificationDetail {
27
27
  }
28
28
  namespace propTypes {
29
29
  const title: PropTypes.Validator<string>;
30
+ const tag: PropTypes.Requireable<string>;
30
31
  const certificationRef: PropTypes.Validator<string>;
31
32
  const description: PropTypes.Validator<string>;
32
33
  const logoUrl: PropTypes.Requireable<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/template/certification-detail/index.js"],"names":[],"mappings":";AAgBA,4EAuHC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/template/certification-detail/index.js"],"names":[],"mappings":";AAgBA,4EAyHC"}
@@ -49,6 +49,7 @@ const CertificationDetail = (props, context) => {
49
49
  const {
50
50
  certificationRef,
51
51
  title,
52
+ tag,
52
53
  description,
53
54
  certificationCourses,
54
55
  ongoingCoursesAvailable,
@@ -109,7 +110,7 @@ const CertificationDetail = (props, context) => {
109
110
  className: _style.default.logo,
110
111
  src: logoUrl
111
112
  })), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_tag.default, {
112
- label: translate('certification')
113
+ label: tag
113
114
  }), /*#__PURE__*/_react.default.createElement("div", {
114
115
  className: _style.default.title
115
116
  }, title), description ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Description, null), isDescriptionTruncated ? /*#__PURE__*/_react.default.createElement("div", {
@@ -155,6 +156,7 @@ CertificationDetail.contextTypes = {
155
156
  };
156
157
  CertificationDetail.propTypes = process.env.NODE_ENV !== "production" ? {
157
158
  title: _propTypes.default.string.isRequired,
159
+ tag: _propTypes.default.string,
158
160
  certificationRef: _propTypes.default.string.isRequired,
159
161
  description: _propTypes.default.string.isRequired,
160
162
  logoUrl: _propTypes.default.string,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["CertificationDetail","props","context","certificationRef","title","description","certificationCourses","ongoingCoursesAvailable","filters","onBackClick","onContinueLearningClick","metrics","logoUrl","diplomaUrl","badgeUrl","descriptionRef","useRef","translate","progression","mandatoryModules","stars","totalModules","isDescriptionTruncated","setIsDescriptionTruncated","useState","showMore","setShowMore","handleShowMore","useCallback","useEffect","current","clientHeight","scrollHeight","Description","classnames","style","truncate","completedModules","useMemo","backgroundContainer","container","backButton","ctaContainer","logoContainer","logo","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, useEffect, useRef, useState, useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {compact, lowerCase, round, isNil} from 'lodash/fp';\nimport Markdown from 'markdown-to-jsx';\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 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 descriptionRef = useRef(null);\n const {translate} = context;\n const {progression, mandatoryModules, stars, totalModules} = metrics;\n\n const [isDescriptionTruncated, setIsDescriptionTruncated] = useState(false);\n const [showMore, setShowMore] = useState(false);\n\n const handleShowMore = useCallback(() => setShowMore(!showMore), [setShowMore, showMore]);\n\n useEffect(() => {\n if (descriptionRef.current) {\n const {clientHeight = 0, scrollHeight = 0} = descriptionRef.current;\n setIsDescriptionTruncated(scrollHeight > clientHeight);\n }\n }, [description]);\n\n const Description = useCallback(() => {\n return (\n <div\n ref={descriptionRef}\n className={classnames(style.description, !showMore && style.truncate)}\n >\n <Markdown>{description}</Markdown>\n </div>\n );\n }, [showMore, description]);\n\n const completedModules = useMemo(\n () => round((mandatoryModules * progression) / 100),\n [mandatoryModules, progression]\n );\n\n return (\n <div className={style.backgroundContainer}>\n <div className={style.container} data-name={certificationRef}>\n {!isNil(onBackClick) ? (\n <ButtonLinkIcon\n faIcon=\"arrow-left\"\n data-name=\"back-button\"\n aria-label={translate('back')}\n onClick={onBackClick}\n className={style.backButton}\n tooltipPlacement=\"right\"\n />\n ) : null}\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 {isDescriptionTruncated ? (\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.isRequired,\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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"}
1
+ {"version":3,"file":"index.js","names":["CertificationDetail","props","context","certificationRef","title","tag","description","certificationCourses","ongoingCoursesAvailable","filters","onBackClick","onContinueLearningClick","metrics","logoUrl","diplomaUrl","badgeUrl","descriptionRef","useRef","translate","progression","mandatoryModules","stars","totalModules","isDescriptionTruncated","setIsDescriptionTruncated","useState","showMore","setShowMore","handleShowMore","useCallback","useEffect","current","clientHeight","scrollHeight","Description","classnames","style","truncate","completedModules","useMemo","backgroundContainer","container","backButton","ctaContainer","logoContainer","logo","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, useEffect, useRef, useState, useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {compact, lowerCase, round, isNil} from 'lodash/fp';\nimport Markdown from 'markdown-to-jsx';\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 CertificationDetail = (props, context) => {\n const {\n certificationRef,\n title,\n tag,\n description,\n certificationCourses,\n ongoingCoursesAvailable,\n filters,\n onBackClick,\n onContinueLearningClick,\n metrics,\n logoUrl,\n diplomaUrl,\n badgeUrl\n } = props;\n const descriptionRef = useRef(null);\n const {translate} = context;\n\n const {progression, mandatoryModules, stars, totalModules} = metrics;\n\n const [isDescriptionTruncated, setIsDescriptionTruncated] = useState(false);\n const [showMore, setShowMore] = useState(false);\n\n const handleShowMore = useCallback(() => setShowMore(!showMore), [setShowMore, showMore]);\n\n useEffect(() => {\n if (descriptionRef.current) {\n const {clientHeight = 0, scrollHeight = 0} = descriptionRef.current;\n setIsDescriptionTruncated(scrollHeight > clientHeight);\n }\n }, [description]);\n\n const Description = useCallback(() => {\n return (\n <div\n ref={descriptionRef}\n className={classnames(style.description, !showMore && style.truncate)}\n >\n <Markdown>{description}</Markdown>\n </div>\n );\n }, [showMore, description]);\n\n const completedModules = useMemo(\n () => round((mandatoryModules * progression) / 100),\n [mandatoryModules, progression]\n );\n\n return (\n <div className={style.backgroundContainer}>\n <div className={style.container} data-name={certificationRef}>\n {!isNil(onBackClick) ? (\n <ButtonLinkIcon\n faIcon=\"arrow-left\"\n data-name=\"back-button\"\n aria-label={translate('back')}\n onClick={onBackClick}\n className={style.backButton}\n tooltipPlacement=\"right\"\n />\n ) : null}\n <div className={style.ctaContainer}>\n <div className={style.logoContainer}>\n <img className={style.logo} src={logoUrl} />\n </div>\n <div>\n <Tag label={tag} />\n <div className={style.title}>{title}</div>\n {description ? (\n <>\n <Description />\n {isDescriptionTruncated ? (\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 tag: PropTypes.string,\n certificationRef: PropTypes.string.isRequired,\n description: PropTypes.string.isRequired,\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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"}
@@ -16,7 +16,16 @@ declare namespace Certifications {
16
16
  progress: PropTypes.Requireable<number>;
17
17
  imgUrl: PropTypes.Requireable<string>;
18
18
  onClick: PropTypes.Requireable<(...args: any[]) => any>;
19
+ locales: PropTypes.Requireable<PropTypes.InferProps<{
20
+ conditionDescriptionProgress: PropTypes.Requireable<string>;
21
+ }>>;
19
22
  }> | null | undefined)[]>;
23
+ const locales: PropTypes.Requireable<PropTypes.InferProps<{
24
+ title: PropTypes.Requireable<string>;
25
+ subtitle: PropTypes.Requireable<string>;
26
+ tag: PropTypes.Requireable<string>;
27
+ count: PropTypes.Requireable<string>;
28
+ }>>;
20
29
  const sorting: PropTypes.Requireable<PropTypes.InferProps<{
21
30
  title: PropTypes.Requireable<string>;
22
31
  name: PropTypes.Requireable<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/template/certifications/index.js"],"names":[],"mappings":";AASA,uEAsEC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/template/certifications/index.js"],"names":[],"mappings":";AAUA,uEAwEC"}
@@ -3,6 +3,8 @@
3
3
  exports.__esModule = true;
4
4
  exports.default = void 0;
5
5
 
6
+ var _map2 = _interopRequireDefault(require("lodash/fp/map"));
7
+
6
8
  var _react = _interopRequireWildcard(require("react"));
7
9
 
8
10
  var _propTypes = _interopRequireDefault(require("prop-types"));
@@ -19,16 +21,22 @@ var _certificationCard = _interopRequireDefault(require("../../molecule/certific
19
21
 
20
22
  var _style = _interopRequireDefault(require("./style.css"));
21
23
 
22
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
-
24
24
  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); }
25
25
 
26
26
  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; }
27
27
 
28
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
+
28
30
  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); }
29
31
 
30
32
  const Certifications = (props, context) => {
31
33
  const {
34
+ locales: {
35
+ title,
36
+ subtitle,
37
+ tag,
38
+ count
39
+ },
32
40
  certifications,
33
41
  sorting
34
42
  } = props;
@@ -50,8 +58,8 @@ const Certifications = (props, context) => {
50
58
  className: _style.default.container,
51
59
  "data-name": "Certifications"
52
60
  }, /*#__PURE__*/_react.default.createElement(_title.default, {
53
- title: translate('certificates'),
54
- subtitle: translate('certificates_subtitle'),
61
+ title: title,
62
+ subtitle: subtitle,
55
63
  type: "form-group",
56
64
  titleSize: "standard-light-weight",
57
65
  subtitleSize: "standard-without-margin",
@@ -65,7 +73,7 @@ const Certifications = (props, context) => {
65
73
  className: _style.default.sortSectionWrapper
66
74
  }, /*#__PURE__*/_react.default.createElement("div", {
67
75
  className: _style.default.certificatesCount
68
- }, `${certifications.length} ${translate('certificate(s)')}`), /*#__PURE__*/_react.default.createElement("div", {
76
+ }, count), /*#__PURE__*/_react.default.createElement("div", {
69
77
  className: _style.default.sortSection
70
78
  }, /*#__PURE__*/_react.default.createElement(_inputSwitch.default, {
71
79
  id: 'show-completed-courses-switch',
@@ -79,15 +87,20 @@ const Certifications = (props, context) => {
79
87
  className: _style.default.sortWrapper
80
88
  }, translate('sort_by'), sortView) : null)), /*#__PURE__*/_react.default.createElement("div", {
81
89
  className: _style.default.certificateList
82
- }, certifications.map(certification => {
83
- if (!showCompleted && certification.progress === 100) {
84
- return null;
85
- }
86
-
90
+ }, (0, _map2.default)(certification => {
91
+ const {
92
+ label,
93
+ progress
94
+ } = certification;
95
+ if (!showCompleted && progress === 100) return null;
87
96
  return /*#__PURE__*/_react.default.createElement("div", {
88
- key: certification.label
89
- }, /*#__PURE__*/_react.default.createElement(_certificationCard.default, certification));
90
- }))));
97
+ key: label
98
+ }, /*#__PURE__*/_react.default.createElement(_certificationCard.default, _extends({}, certification, {
99
+ locales: _extends({}, certification.locales, {
100
+ tag
101
+ })
102
+ })));
103
+ }, certifications))));
91
104
  };
92
105
 
93
106
  Certifications.contextTypes = {
@@ -104,8 +117,17 @@ Certifications.propTypes = process.env.NODE_ENV !== "production" ? {
104
117
  }),
105
118
  progress: _propTypes.default.number,
106
119
  imgUrl: _propTypes.default.string,
107
- onClick: _propTypes.default.func
120
+ onClick: _propTypes.default.func,
121
+ locales: _propTypes.default.shape({
122
+ conditionDescriptionProgress: _propTypes.default.string
123
+ })
108
124
  })),
125
+ locales: _propTypes.default.shape({
126
+ title: _propTypes.default.string,
127
+ subtitle: _propTypes.default.string,
128
+ tag: _propTypes.default.string,
129
+ count: _propTypes.default.string
130
+ }),
109
131
  sorting: _propTypes.default.shape(_select.default.propTypes)
110
132
  } : {};
111
133
  var _default = Certifications;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["Certifications","props","context","certifications","sorting","translate","showCompleted","setShowCompleted","useState","sortView","undefined","handleShowCompletedToggle","useCallback","style","backgroudnContainer","container","iconName","iconColor","borderRadius","backgroundColor","sortSectionWrapper","certificatesCount","length","sortSection","sortWrapper","certificateList","map","certification","progress","label","contextTypes","Provider","childContextTypes","propTypes","PropTypes","arrayOf","shape","string","goal","title","condition","nbDone","number","imgUrl","onClick","func","Select"],"sources":["../../../src/template/certifications/index.js"],"sourcesContent":["import React, {useState, useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport Provider from '../../atom/provider';\nimport Title from '../../atom/title';\nimport Select from '../../atom/select';\nimport InputSwitch from '../../atom/input-switch';\nimport CertificationCard from '../../molecule/certification-card';\nimport style from './style.css';\n\nconst Certifications = (props, context) => {\n const {certifications, sorting} = props;\n const {translate} = context;\n\n const [showCompleted, setShowCompleted] = useState(true);\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 handleShowCompletedToggle = useCallback(() => {\n setShowCompleted(!showCompleted);\n }, [showCompleted, setShowCompleted]);\n\n return (\n <div className={style.backgroudnContainer}>\n <div className={style.container} data-name=\"Certifications\">\n <Title\n title={translate('certificates')}\n subtitle={translate('certificates_subtitle')}\n type=\"form-group\"\n titleSize=\"standard-light-weight\"\n subtitleSize=\"standard-without-margin\"\n icon={{\n iconName: 'wreath-laurel',\n iconColor: '#B87A00',\n borderRadius: '12px',\n backgroundColor: '#FFEECC'\n }}\n />\n <div className={style.sortSectionWrapper}>\n <div className={style.certificatesCount}>\n {`${certifications.length} ${translate('certificate(s)')}`}\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 {sorting ? (\n <div className={style.sortWrapper}>\n {translate('sort_by')}\n {sortView}\n </div>\n ) : null}\n </div>\n </div>\n <div className={style.certificateList}>\n {certifications.map(certification => {\n if (!showCompleted && certification.progress === 100) {\n return null;\n }\n return (\n <div key={certification.label}>\n <CertificationCard {...certification} />\n </div>\n );\n })}\n </div>\n </div>\n </div>\n );\n};\n\nCertifications.contextTypes = {\n translate: Provider.childContextTypes.translate\n};\n\nCertifications.propTypes = {\n certifications: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string,\n goal: PropTypes.shape({\n title: PropTypes.string,\n condition: PropTypes.shape({\n nbDone: PropTypes.number\n })\n }),\n progress: PropTypes.number,\n imgUrl: PropTypes.string,\n onClick: PropTypes.func\n })\n ),\n sorting: PropTypes.shape(Select.propTypes)\n};\n\nexport default Certifications;\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["Certifications","props","context","locales","title","subtitle","tag","count","certifications","sorting","translate","showCompleted","setShowCompleted","useState","sortView","undefined","handleShowCompletedToggle","useCallback","style","backgroudnContainer","container","iconName","iconColor","borderRadius","backgroundColor","sortSectionWrapper","certificatesCount","sortSection","sortWrapper","certificateList","certification","label","progress","contextTypes","Provider","childContextTypes","propTypes","PropTypes","arrayOf","shape","string","goal","condition","nbDone","number","imgUrl","onClick","func","conditionDescriptionProgress","Select"],"sources":["../../../src/template/certifications/index.js"],"sourcesContent":["import React, {useState, useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport {map} from 'lodash/fp';\nimport Provider from '../../atom/provider';\nimport Title from '../../atom/title';\nimport Select from '../../atom/select';\nimport InputSwitch from '../../atom/input-switch';\nimport CertificationCard from '../../molecule/certification-card';\nimport style from './style.css';\n\nconst Certifications = (props, context) => {\n const {\n locales: {title, subtitle, tag, count},\n certifications,\n sorting\n } = props;\n const {translate} = context;\n\n const [showCompleted, setShowCompleted] = useState(true);\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 handleShowCompletedToggle = useCallback(() => {\n setShowCompleted(!showCompleted);\n }, [showCompleted, setShowCompleted]);\n\n return (\n <div className={style.backgroudnContainer}>\n <div className={style.container} data-name=\"Certifications\">\n <Title\n title={title}\n subtitle={subtitle}\n type=\"form-group\"\n titleSize=\"standard-light-weight\"\n subtitleSize=\"standard-without-margin\"\n icon={{\n iconName: 'wreath-laurel',\n iconColor: '#B87A00',\n borderRadius: '12px',\n backgroundColor: '#FFEECC'\n }}\n />\n <div className={style.sortSectionWrapper}>\n <div className={style.certificatesCount}>{count}</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 {sorting ? (\n <div className={style.sortWrapper}>\n {translate('sort_by')}\n {sortView}\n </div>\n ) : null}\n </div>\n </div>\n <div className={style.certificateList}>\n {map(certification => {\n const {label, progress} = certification;\n if (!showCompleted && progress === 100) return null;\n\n return (\n <div key={label}>\n <CertificationCard {...certification} locales={{...certification.locales, tag}} />\n </div>\n );\n }, certifications)}\n </div>\n </div>\n </div>\n );\n};\n\nCertifications.contextTypes = {\n translate: Provider.childContextTypes.translate\n};\n\nCertifications.propTypes = {\n certifications: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string,\n goal: PropTypes.shape({\n title: PropTypes.string,\n condition: PropTypes.shape({\n nbDone: PropTypes.number\n })\n }),\n progress: PropTypes.number,\n imgUrl: PropTypes.string,\n onClick: PropTypes.func,\n locales: PropTypes.shape({\n conditionDescriptionProgress: PropTypes.string\n })\n })\n ),\n locales: PropTypes.shape({\n title: PropTypes.string,\n subtitle: PropTypes.string,\n tag: PropTypes.string,\n count: PropTypes.string\n }),\n sorting: PropTypes.shape(Select.propTypes)\n};\n\nexport default Certifications;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;AAEA,MAAMA,cAAc,GAAG,CAACC,KAAD,EAAQC,OAAR,KAAoB;EACzC,MAAM;IACJC,OAAO,EAAE;MAACC,KAAD;MAAQC,QAAR;MAAkBC,GAAlB;MAAuBC;IAAvB,CADL;IAEJC,cAFI;IAGJC;EAHI,IAIFR,KAJJ;EAKA,MAAM;IAACS;EAAD,IAAcR,OAApB;EAEA,MAAM,CAACS,aAAD,EAAgBC,gBAAhB,IAAoC,IAAAC,eAAA,EAAS,IAAT,CAA1C;EAEA,MAAMC,QAAQ,GACZL,OAAO,KAAKM,SAAZ,gBACE;IAAK,aAAU;EAAf,gBACE,6BAAC,eAAD,eAAYN,OAAZ;IAAqB,cAAW;EAAhC,GADF,CADF,GAII,IALN;EAOA,MAAMO,yBAAyB,GAAG,IAAAC,kBAAA,EAAY,MAAM;IAClDL,gBAAgB,CAAC,CAACD,aAAF,CAAhB;EACD,CAFiC,EAE/B,CAACA,aAAD,EAAgBC,gBAAhB,CAF+B,CAAlC;EAIA,oBACE;IAAK,SAAS,EAAEM,cAAA,CAAMC;EAAtB,gBACE;IAAK,SAAS,EAAED,cAAA,CAAME,SAAtB;IAAiC,aAAU;EAA3C,gBACE,6BAAC,cAAD;IACE,KAAK,EAAEhB,KADT;IAEE,QAAQ,EAAEC,QAFZ;IAGE,IAAI,EAAC,YAHP;IAIE,SAAS,EAAC,uBAJZ;IAKE,YAAY,EAAC,yBALf;IAME,IAAI,EAAE;MACJgB,QAAQ,EAAE,eADN;MAEJC,SAAS,EAAE,SAFP;MAGJC,YAAY,EAAE,MAHV;MAIJC,eAAe,EAAE;IAJb;EANR,EADF,eAcE;IAAK,SAAS,EAAEN,cAAA,CAAMO;EAAtB,gBACE;IAAK,SAAS,EAAEP,cAAA,CAAMQ;EAAtB,GAA0CnB,KAA1C,CADF,eAEE;IAAK,SAAS,EAAEW,cAAA,CAAMS;EAAtB,gBACE,6BAAC,oBAAD;IACE,EAAE,EAAE,+BADN;IAEE,IAAI,EAAC,QAFP;IAGE,IAAI,EAAEjB,SAAS,CAAC,gBAAD,CAHjB;IAIE,KAAK,EAAEA,SAAS,CAAC,gBAAD,CAJlB;IAKE,cAAY,mCALd;IAME,KAAK,EAAEC,aANT;IAOE,QAAQ,EAAEK;EAPZ,EADF,EAUGP,OAAO,gBACN;IAAK,SAAS,EAAES,cAAA,CAAMU;EAAtB,GACGlB,SAAS,CAAC,SAAD,CADZ,EAEGI,QAFH,CADM,GAKJ,IAfN,CAFF,CAdF,eAkCE;IAAK,SAAS,EAAEI,cAAA,CAAMW;EAAtB,GACG,mBAAIC,aAAa,IAAI;IACpB,MAAM;MAACC,KAAD;MAAQC;IAAR,IAAoBF,aAA1B;IACA,IAAI,CAACnB,aAAD,IAAkBqB,QAAQ,KAAK,GAAnC,EAAwC,OAAO,IAAP;IAExC,oBACE;MAAK,GAAG,EAAED;IAAV,gBACE,6BAAC,0BAAD,eAAuBD,aAAvB;MAAsC,OAAO,eAAMA,aAAa,CAAC3B,OAApB;QAA6BG;MAA7B;IAA7C,GADF,CADF;EAKD,CATA,EASEE,cATF,CADH,CAlCF,CADF,CADF;AAmDD,CAxED;;AA0EAR,cAAc,CAACiC,YAAf,GAA8B;EAC5BvB,SAAS,EAAEwB,iBAAA,CAASC,iBAAT,CAA2BzB;AADV,CAA9B;AAIAV,cAAc,CAACoC,SAAf,2CAA2B;EACzB5B,cAAc,EAAE6B,kBAAA,CAAUC,OAAV,CACdD,kBAAA,CAAUE,KAAV,CAAgB;IACdR,KAAK,EAAEM,kBAAA,CAAUG,MADH;IAEdC,IAAI,EAAEJ,kBAAA,CAAUE,KAAV,CAAgB;MACpBnC,KAAK,EAAEiC,kBAAA,CAAUG,MADG;MAEpBE,SAAS,EAAEL,kBAAA,CAAUE,KAAV,CAAgB;QACzBI,MAAM,EAAEN,kBAAA,CAAUO;MADO,CAAhB;IAFS,CAAhB,CAFQ;IAQdZ,QAAQ,EAAEK,kBAAA,CAAUO,MARN;IASdC,MAAM,EAAER,kBAAA,CAAUG,MATJ;IAUdM,OAAO,EAAET,kBAAA,CAAUU,IAVL;IAWd5C,OAAO,EAAEkC,kBAAA,CAAUE,KAAV,CAAgB;MACvBS,4BAA4B,EAAEX,kBAAA,CAAUG;IADjB,CAAhB;EAXK,CAAhB,CADc,CADS;EAkBzBrC,OAAO,EAAEkC,kBAAA,CAAUE,KAAV,CAAgB;IACvBnC,KAAK,EAAEiC,kBAAA,CAAUG,MADM;IAEvBnC,QAAQ,EAAEgC,kBAAA,CAAUG,MAFG;IAGvBlC,GAAG,EAAE+B,kBAAA,CAAUG,MAHQ;IAIvBjC,KAAK,EAAE8B,kBAAA,CAAUG;EAJM,CAAhB,CAlBgB;EAwBzB/B,OAAO,EAAE4B,kBAAA,CAAUE,KAAV,CAAgBU,eAAA,CAAOb,SAAvB;AAxBgB,CAA3B;eA2BepC,c"}
@@ -302,8 +302,8 @@ declare namespace Dashboard {
302
302
  'aria-label': PropTypes.Requireable<string>;
303
303
  title: PropTypes.Requireable<string>;
304
304
  target: PropTypes.Requireable<string>;
305
- skinHover: PropTypes.Requireable<boolean>;
306
305
  hoverColor: PropTypes.Requireable<string>;
306
+ hoverBackgroundColor: PropTypes.Requireable<string>;
307
307
  download: PropTypes.Requireable<boolean>;
308
308
  onClick: PropTypes.Requireable<(...args: any[]) => any>;
309
309
  onMouseEnter: PropTypes.Requireable<(...args: any[]) => any>;
@@ -611,8 +611,8 @@ declare namespace Dashboard {
611
611
  'aria-label': PropTypes.Requireable<string>;
612
612
  title: PropTypes.Requireable<string>;
613
613
  target: PropTypes.Requireable<string>;
614
- skinHover: PropTypes.Requireable<boolean>;
615
614
  hoverColor: PropTypes.Requireable<string>;
615
+ hoverBackgroundColor: PropTypes.Requireable<string>;
616
616
  download: PropTypes.Requireable<boolean>;
617
617
  onClick: PropTypes.Requireable<(...args: any[]) => any>;
618
618
  onMouseEnter: PropTypes.Requireable<(...args: any[]) => any>;
@@ -483,8 +483,8 @@ declare namespace SearchPage {
483
483
  'aria-label': PropTypes.Requireable<string>;
484
484
  title: PropTypes.Requireable<string>;
485
485
  target: PropTypes.Requireable<string>;
486
- skinHover: PropTypes.Requireable<boolean>;
487
486
  hoverColor: PropTypes.Requireable<string>;
487
+ hoverBackgroundColor: PropTypes.Requireable<string>;
488
488
  download: PropTypes.Requireable<boolean>;
489
489
  onClick: PropTypes.Requireable<(...args: any[]) => any>;
490
490
  onMouseEnter: PropTypes.Requireable<(...args: any[]) => any>;
@@ -320,8 +320,8 @@ declare namespace ExternalCourse {
320
320
  'aria-label': PropTypes.Requireable<string>;
321
321
  title: PropTypes.Requireable<string>;
322
322
  target: PropTypes.Requireable<string>;
323
- skinHover: PropTypes.Requireable<boolean>;
324
323
  hoverColor: PropTypes.Requireable<string>;
324
+ hoverBackgroundColor: PropTypes.Requireable<string>;
325
325
  download: PropTypes.Requireable<boolean>;
326
326
  onClick: PropTypes.Requireable<(...args: any[]) => any>;
327
327
  onMouseEnter: PropTypes.Requireable<(...args: any[]) => any>;
@@ -67,12 +67,12 @@ declare namespace SkillDetail {
67
67
  export const metrics: PropTypes.Requireable<PropTypes.InferProps<{
68
68
  score: PropTypes.Requireable<number>;
69
69
  questionsToReview: PropTypes.Requireable<number>;
70
+ totalContents: PropTypes.Requireable<number>;
70
71
  }>>;
71
72
  export const focused: PropTypes.Requireable<boolean>;
72
73
  export const availableForReview: PropTypes.Requireable<boolean>;
73
74
  const ongoingCoursesAvailable_1: PropTypes.Requireable<boolean>;
74
75
  export { ongoingCoursesAvailable_1 as ongoingCoursesAvailable };
75
- export const totalCourses: PropTypes.Requireable<number>;
76
76
  export const skillIncludedCourses: PropTypes.Requireable<PropTypes.InferProps<{
77
77
  list: PropTypes.Requireable<(PropTypes.InferProps<any> | null | undefined)[]>;
78
78
  customStyle: PropTypes.Requireable<{
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/template/skill-detail/index.js"],"names":[],"mappings":"AAeO,8EA+BN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYD,oEAoJC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/template/skill-detail/index.js"],"names":[],"mappings":"AAeO,8EA+BN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYD,oEAmJC"}
@@ -90,7 +90,6 @@ const SkillDetail = (props, context) => {
90
90
  focused,
91
91
  availableForReview,
92
92
  ongoingCoursesAvailable,
93
- totalCourses,
94
93
  skillIncludedCourses,
95
94
  filters,
96
95
  sorting,
@@ -101,7 +100,8 @@ const SkillDetail = (props, context) => {
101
100
  const descriptionRef = (0, _react.useRef)(null);
102
101
  const {
103
102
  score = 0,
104
- questionsToReview
103
+ questionsToReview,
104
+ totalContents
105
105
  } = metrics;
106
106
  const {
107
107
  translate
@@ -201,7 +201,7 @@ const SkillDetail = (props, context) => {
201
201
  content: skillIncludedCourses,
202
202
  filters: filters,
203
203
  sorting: sorting,
204
- totalContents: totalCourses
204
+ totalContents: totalContents
205
205
  })));
206
206
  };
207
207
 
@@ -215,12 +215,12 @@ SkillDetail.propTypes = process.env.NODE_ENV !== "production" ? {
215
215
  description: _propTypes.default.string,
216
216
  metrics: _propTypes.default.shape({
217
217
  score: _propTypes.default.number,
218
- questionsToReview: _propTypes.default.number
218
+ questionsToReview: _propTypes.default.number,
219
+ totalContents: _propTypes.default.number
219
220
  }),
220
221
  focused: _propTypes.default.bool,
221
222
  availableForReview: _propTypes.default.bool,
222
223
  ongoingCoursesAvailable: _propTypes.default.bool,
223
- totalCourses: _propTypes.default.number,
224
224
  skillIncludedCourses: _propTypes.default.shape(_cardsGrid.default.propTypes),
225
225
  filters: _propTypes.default.shape({
226
226
  onChange: _propTypes.default.func,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["ContinueLearningButton","props","context","ongoingCoursesAvailable","onClick","skin","translate","primarySkinColor","width","borderRadius","backgroundColor","convert","position","faIcon","name","color","size","contextTypes","Provider","childContextTypes","propTypes","PropTypes","bool","func","SkillDetail","title","skillRef","description","metrics","focused","availableForReview","totalCourses","skillIncludedCourses","filters","sorting","onBackClick","onReviewClick","onContinueLearningClick","descriptionRef","useRef","score","questionsToReview","isDescriptionTruncated","setIsDescriptionTruncated","useState","showMore","setShowMore","handleShowMore","useCallback","useEffect","current","clientHeight","scrollHeight","Description","classnames","style","truncate","ProgressBar","undefined","progressBarColor","inlineProgressValueStyle","progressBarWrapper","progress","backgroundContainer","container","backButton","ctaContainer","skillFocusBadge","faSize","wrapperSize","showMoreWrapper","ctaWrapper","skillInformation","skillInformationNumber","progressContainer","progressInformationNumber","toFixed","string","isRequired","shape","number","CardsGrid","onChange","options","arrayOf","SelectOptionPropTypes","Select"],"sources":["../../../src/template/skill-detail/index.js"],"sourcesContent":["import React, {useCallback, useState, useRef, useEffect} from 'react';\nimport PropTypes from 'prop-types';\nimport {convert} from 'css-color-function';\nimport classnames from 'classnames';\nimport {get, isNil} from 'lodash/fp';\nimport Markdown from 'markdown-to-jsx';\nimport Provider from '../../atom/provider';\nimport Select, {SelectOptionPropTypes} from '../../atom/select';\nimport ButtonLink from '../../atom/button-link';\nimport ButtonLinkIcon from '../../atom/button-link-icon';\nimport Icon from '../../atom/icon';\nimport CardsGrid from '../../organism/cards-grid';\nimport style from './style.css';\nimport AllCourses from './all-courses';\n\nexport const ContinueLearningButton = (props, context) => {\n const {ongoingCoursesAvailable, onClick} = props;\n const {skin, translate} = context;\n const primarySkinColor = get('common.primary', skin);\n\n return (\n <div>\n <ButtonLink\n label={\n ongoingCoursesAvailable ? translate('continue_learning') : translate('start_learning')\n }\n type=\"primary\"\n customStyle={{\n width: 'fit-content',\n borderRadius: '12px',\n backgroundColor: primarySkinColor\n }}\n hoverBackgroundColor={convert(`hsl(from ${primarySkinColor} h s calc(l*(1 - 0.08)))`)}\n hoverColor=\"#FFFFFF\"\n icon={{\n position: 'left',\n faIcon: {\n name: 'play',\n color: '#FFFFFF',\n size: 16\n }\n }}\n onClick={onClick}\n />\n </div>\n );\n};\n\nContinueLearningButton.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nContinueLearningButton.propTypes = {\n ongoingCoursesAvailable: PropTypes.bool,\n onClick: PropTypes.func\n};\n\nconst SkillDetail = (props, context) => {\n const {\n title,\n skillRef,\n description,\n metrics = {},\n focused,\n availableForReview,\n ongoingCoursesAvailable,\n totalCourses,\n skillIncludedCourses,\n filters,\n sorting,\n onBackClick,\n onReviewClick,\n onContinueLearningClick\n } = props;\n const descriptionRef = useRef(null);\n const {score = 0, questionsToReview} = metrics;\n const {translate} = context;\n\n const [isDescriptionTruncated, setIsDescriptionTruncated] = useState(false);\n const [showMore, setShowMore] = useState(false);\n\n const handleShowMore = useCallback(() => setShowMore(!showMore), [setShowMore, showMore]);\n\n useEffect(() => {\n if (descriptionRef.current) {\n const {clientHeight = 0, scrollHeight = 0} = descriptionRef.current;\n setIsDescriptionTruncated(scrollHeight > clientHeight);\n }\n }, [description]);\n\n const Description = useCallback(() => {\n return (\n <div\n ref={descriptionRef}\n className={classnames(style.description, !showMore && style.truncate)}\n >\n <Markdown>{description}</Markdown>\n </div>\n );\n }, [showMore, description]);\n\n const ProgressBar = useCallback(() => {\n if (score === undefined) return null;\n const progressBarColor = '#3EC483';\n const inlineProgressValueStyle = {\n backgroundColor: progressBarColor,\n width: `${score}%`\n };\n\n return (\n <div className={style.progressBarWrapper}>\n <div\n data-name=\"progress\"\n className={style.progress}\n style={inlineProgressValueStyle}\n role=\"progressbar\"\n />\n </div>\n );\n }, [score]);\n\n return (\n <div className={style.backgroundContainer}>\n <div className={style.container} data-name={skillRef}>\n {!isNil(onBackClick) ? (\n <ButtonLinkIcon\n faIcon=\"arrow-left\"\n data-name=\"back-button\"\n aria-label={translate('back')}\n onClick={onBackClick}\n className={style.backButton}\n tooltipPlacement=\"right\"\n />\n ) : null}\n <div className={style.ctaContainer}>\n <div>\n {focused ? (\n <div className={style.skillFocusBadge}>\n <Icon\n iconName=\"bullseye-arrow\"\n backgroundColor=\"#DDD1FF\"\n size={{\n faSize: 10,\n wrapperSize: 16\n }}\n />\n {translate('skill_focus')}\n </div>\n ) : null}\n <div className={style.title}>{title}</div>\n {description ? (\n <>\n <Description />\n {isDescriptionTruncated ? (\n <div className={style.showMoreWrapper} onClick={handleShowMore}>\n {showMore ? translate('Show less') : translate('Show more')}\n <Icon\n iconName={showMore ? 'chevron-up' : 'chevron-down'}\n size={{\n faSize: 14,\n wrapperSize: 16\n }}\n />\n </div>\n ) : null}\n </>\n ) : null}\n </div>\n\n <div className={style.ctaWrapper}>\n <ButtonLink\n type=\"secondary\"\n onClick={onReviewClick}\n label={translate('review_this_skill')}\n disabled={!availableForReview}\n customStyle={{\n width: 'fit-content',\n borderRadius: '12px'\n }}\n />\n <ContinueLearningButton\n ongoingCoursesAvailable={ongoingCoursesAvailable}\n onClick={onContinueLearningClick}\n />\n </div>\n </div>\n {questionsToReview > 0 ? (\n <div className={style.skillInformation} data-name=\"skill-questions\">\n <span className={style.skillInformationNumber}>{questionsToReview}</span>\n &nbsp;{translate('skill_chart_side_panel_questions_to_review')}\n </div>\n ) : null}\n <div className={style.progressContainer}>\n <ProgressBar />\n <span className={style.progressInformationNumber}>{score.toFixed(1)}%</span>\n </div>\n <AllCourses\n content={skillIncludedCourses}\n filters={filters}\n sorting={sorting}\n totalContents={totalCourses}\n />\n </div>\n </div>\n );\n};\n\nSkillDetail.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nSkillDetail.propTypes = {\n title: PropTypes.string.isRequired,\n skillRef: PropTypes.string.isRequired,\n description: PropTypes.string,\n metrics: PropTypes.shape({\n score: PropTypes.number,\n questionsToReview: PropTypes.number\n }),\n focused: PropTypes.bool,\n availableForReview: PropTypes.bool,\n ongoingCoursesAvailable: PropTypes.bool,\n totalCourses: PropTypes.number,\n skillIncludedCourses: 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 onBackClick: PropTypes.func,\n onReviewClick: PropTypes.func,\n onContinueLearningClick: PropTypes.func\n};\n\nexport default SkillDetail;\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;AAEO,MAAMA,sBAAsB,GAAG,CAACC,KAAD,EAAQC,OAAR,KAAoB;EACxD,MAAM;IAACC,uBAAD;IAA0BC;EAA1B,IAAqCH,KAA3C;EACA,MAAM;IAACI,IAAD;IAAOC;EAAP,IAAoBJ,OAA1B;EACA,MAAMK,gBAAgB,GAAG,mBAAI,gBAAJ,EAAsBF,IAAtB,CAAzB;EAEA,oBACE,uDACE,6BAAC,mBAAD;IACE,KAAK,EACHF,uBAAuB,GAAGG,SAAS,CAAC,mBAAD,CAAZ,GAAoCA,SAAS,CAAC,gBAAD,CAFxE;IAIE,IAAI,EAAC,SAJP;IAKE,WAAW,EAAE;MACXE,KAAK,EAAE,aADI;MAEXC,YAAY,EAAE,MAFH;MAGXC,eAAe,EAAEH;IAHN,CALf;IAUE,oBAAoB,EAAE,IAAAI,yBAAA,EAAS,YAAWJ,gBAAiB,0BAArC,CAVxB;IAWE,UAAU,EAAC,SAXb;IAYE,IAAI,EAAE;MACJK,QAAQ,EAAE,MADN;MAEJC,MAAM,EAAE;QACNC,IAAI,EAAE,MADA;QAENC,KAAK,EAAE,SAFD;QAGNC,IAAI,EAAE;MAHA;IAFJ,CAZR;IAoBE,OAAO,EAAEZ;EApBX,EADF,CADF;AA0BD,CA/BM;;;AAiCPJ,sBAAsB,CAACiB,YAAvB,GAAsC;EACpCZ,IAAI,EAAEa,iBAAA,CAASC,iBAAT,CAA2Bd,IADG;EAEpCC,SAAS,EAAEY,iBAAA,CAASC,iBAAT,CAA2Bb;AAFF,CAAtC;AAKAN,sBAAsB,CAACoB,SAAvB,2CAAmC;EACjCjB,uBAAuB,EAAEkB,kBAAA,CAAUC,IADF;EAEjClB,OAAO,EAAEiB,kBAAA,CAAUE;AAFc,CAAnC;;AAKA,MAAMC,WAAW,GAAG,CAACvB,KAAD,EAAQC,OAAR,KAAoB;EACtC,MAAM;IACJuB,KADI;IAEJC,QAFI;IAGJC,WAHI;IAIJC,OAAO,GAAG,EAJN;IAKJC,OALI;IAMJC,kBANI;IAOJ3B,uBAPI;IAQJ4B,YARI;IASJC,oBATI;IAUJC,OAVI;IAWJC,OAXI;IAYJC,WAZI;IAaJC,aAbI;IAcJC;EAdI,IAeFpC,KAfJ;EAgBA,MAAMqC,cAAc,GAAG,IAAAC,aAAA,EAAO,IAAP,CAAvB;EACA,MAAM;IAACC,KAAK,GAAG,CAAT;IAAYC;EAAZ,IAAiCb,OAAvC;EACA,MAAM;IAACtB;EAAD,IAAcJ,OAApB;EAEA,MAAM,CAACwC,sBAAD,EAAyBC,yBAAzB,IAAsD,IAAAC,eAAA,EAAS,KAAT,CAA5D;EACA,MAAM,CAACC,QAAD,EAAWC,WAAX,IAA0B,IAAAF,eAAA,EAAS,KAAT,CAAhC;EAEA,MAAMG,cAAc,GAAG,IAAAC,kBAAA,EAAY,MAAMF,WAAW,CAAC,CAACD,QAAF,CAA7B,EAA0C,CAACC,WAAD,EAAcD,QAAd,CAA1C,CAAvB;EAEA,IAAAI,gBAAA,EAAU,MAAM;IACd,IAAIX,cAAc,CAACY,OAAnB,EAA4B;MAC1B,MAAM;QAACC,YAAY,GAAG,CAAhB;QAAmBC,YAAY,GAAG;MAAlC,IAAuCd,cAAc,CAACY,OAA5D;MACAP,yBAAyB,CAACS,YAAY,GAAGD,YAAhB,CAAzB;IACD;EACF,CALD,EAKG,CAACxB,WAAD,CALH;EAOA,MAAM0B,WAAW,GAAG,IAAAL,kBAAA,EAAY,MAAM;IACpC,oBACE;MACE,GAAG,EAAEV,cADP;MAEE,SAAS,EAAE,IAAAgB,mBAAA,EAAWC,cAAA,CAAM5B,WAAjB,EAA8B,CAACkB,QAAD,IAAaU,cAAA,CAAMC,QAAjD;IAFb,gBAIE,6BAAC,sBAAD,QAAW7B,WAAX,CAJF,CADF;EAQD,CATmB,EASjB,CAACkB,QAAD,EAAWlB,WAAX,CATiB,CAApB;EAWA,MAAM8B,WAAW,GAAG,IAAAT,kBAAA,EAAY,MAAM;IACpC,IAAIR,KAAK,KAAKkB,SAAd,EAAyB,OAAO,IAAP;IACzB,MAAMC,gBAAgB,GAAG,SAAzB;IACA,MAAMC,wBAAwB,GAAG;MAC/BlD,eAAe,EAAEiD,gBADc;MAE/BnD,KAAK,EAAG,GAAEgC,KAAM;IAFe,CAAjC;IAKA,oBACE;MAAK,SAAS,EAAEe,cAAA,CAAMM;IAAtB,gBACE;MACE,aAAU,UADZ;MAEE,SAAS,EAAEN,cAAA,CAAMO,QAFnB;MAGE,KAAK,EAAEF,wBAHT;MAIE,IAAI,EAAC;IAJP,EADF,CADF;EAUD,CAlBmB,EAkBjB,CAACpB,KAAD,CAlBiB,CAApB;EAoBA,oBACE;IAAK,SAAS,EAAEe,cAAA,CAAMQ;EAAtB,gBACE;IAAK,SAAS,EAAER,cAAA,CAAMS,SAAtB;IAAiC,aAAWtC;EAA5C,GACG,CAAC,qBAAMS,WAAN,CAAD,gBACC,6BAAC,uBAAD;IACE,MAAM,EAAC,YADT;IAEE,aAAU,aAFZ;IAGE,cAAY7B,SAAS,CAAC,MAAD,CAHvB;IAIE,OAAO,EAAE6B,WAJX;IAKE,SAAS,EAAEoB,cAAA,CAAMU,UALnB;IAME,gBAAgB,EAAC;EANnB,EADD,GASG,IAVN,eAWE;IAAK,SAAS,EAAEV,cAAA,CAAMW;EAAtB,gBACE,0CACGrC,OAAO,gBACN;IAAK,SAAS,EAAE0B,cAAA,CAAMY;EAAtB,gBACE,6BAAC,aAAD;IACE,QAAQ,EAAC,gBADX;IAEE,eAAe,EAAC,SAFlB;IAGE,IAAI,EAAE;MACJC,MAAM,EAAE,EADJ;MAEJC,WAAW,EAAE;IAFT;EAHR,EADF,EASG/D,SAAS,CAAC,aAAD,CATZ,CADM,GAYJ,IAbN,eAcE;IAAK,SAAS,EAAEiD,cAAA,CAAM9B;EAAtB,GAA8BA,KAA9B,CAdF,EAeGE,WAAW,gBACV,yEACE,6BAAC,WAAD,OADF,EAEGe,sBAAsB,gBACrB;IAAK,SAAS,EAAEa,cAAA,CAAMe,eAAtB;IAAuC,OAAO,EAAEvB;EAAhD,GACGF,QAAQ,GAAGvC,SAAS,CAAC,WAAD,CAAZ,GAA4BA,SAAS,CAAC,WAAD,CADhD,eAEE,6BAAC,aAAD;IACE,QAAQ,EAAEuC,QAAQ,GAAG,YAAH,GAAkB,cADtC;IAEE,IAAI,EAAE;MACJuB,MAAM,EAAE,EADJ;MAEJC,WAAW,EAAE;IAFT;EAFR,EAFF,CADqB,GAWnB,IAbN,CADU,GAgBR,IA/BN,CADF,eAmCE;IAAK,SAAS,EAAEd,cAAA,CAAMgB;EAAtB,gBACE,6BAAC,mBAAD;IACE,IAAI,EAAC,WADP;IAEE,OAAO,EAAEnC,aAFX;IAGE,KAAK,EAAE9B,SAAS,CAAC,mBAAD,CAHlB;IAIE,QAAQ,EAAE,CAACwB,kBAJb;IAKE,WAAW,EAAE;MACXtB,KAAK,EAAE,aADI;MAEXC,YAAY,EAAE;IAFH;EALf,EADF,eAWE,6BAAC,sBAAD;IACE,uBAAuB,EAAEN,uBAD3B;IAEE,OAAO,EAAEkC;EAFX,EAXF,CAnCF,CAXF,EA+DGI,iBAAiB,GAAG,CAApB,gBACC;IAAK,SAAS,EAAEc,cAAA,CAAMiB,gBAAtB;IAAwC,aAAU;EAAlD,gBACE;IAAM,SAAS,EAAEjB,cAAA,CAAMkB;EAAvB,GAAgDhC,iBAAhD,CADF,UAESnC,SAAS,CAAC,4CAAD,CAFlB,CADD,GAKG,IApEN,eAqEE;IAAK,SAAS,EAAEiD,cAAA,CAAMmB;EAAtB,gBACE,6BAAC,WAAD,OADF,eAEE;IAAM,SAAS,EAAEnB,cAAA,CAAMoB;EAAvB,GAAmDnC,KAAK,CAACoC,OAAN,CAAc,CAAd,CAAnD,MAFF,CArEF,eAyEE,6BAAC,mBAAD;IACE,OAAO,EAAE5C,oBADX;IAEE,OAAO,EAAEC,OAFX;IAGE,OAAO,EAAEC,OAHX;IAIE,aAAa,EAAEH;EAJjB,EAzEF,CADF,CADF;AAoFD,CApJD;;AAsJAP,WAAW,CAACP,YAAZ,GAA2B;EACzBZ,IAAI,EAAEa,iBAAA,CAASC,iBAAT,CAA2Bd,IADR;EAEzBC,SAAS,EAAEY,iBAAA,CAASC,iBAAT,CAA2Bb;AAFb,CAA3B;AAKAkB,WAAW,CAACJ,SAAZ,2CAAwB;EACtBK,KAAK,EAAEJ,kBAAA,CAAUwD,MAAV,CAAiBC,UADF;EAEtBpD,QAAQ,EAAEL,kBAAA,CAAUwD,MAAV,CAAiBC,UAFL;EAGtBnD,WAAW,EAAEN,kBAAA,CAAUwD,MAHD;EAItBjD,OAAO,EAAEP,kBAAA,CAAU0D,KAAV,CAAgB;IACvBvC,KAAK,EAAEnB,kBAAA,CAAU2D,MADM;IAEvBvC,iBAAiB,EAAEpB,kBAAA,CAAU2D;EAFN,CAAhB,CAJa;EAQtBnD,OAAO,EAAER,kBAAA,CAAUC,IARG;EAStBQ,kBAAkB,EAAET,kBAAA,CAAUC,IATR;EAUtBnB,uBAAuB,EAAEkB,kBAAA,CAAUC,IAVb;EAWtBS,YAAY,EAAEV,kBAAA,CAAU2D,MAXF;EAYtBhD,oBAAoB,EAAEX,kBAAA,CAAU0D,KAAV,CAAgBE,kBAAA,CAAU7D,SAA1B,CAZA;EAatBa,OAAO,EAAEZ,kBAAA,CAAU0D,KAAV,CAAgB;IACvBG,QAAQ,EAAE7D,kBAAA,CAAUE,IADG;IAEvB4D,OAAO,EAAE9D,kBAAA,CAAU+D,OAAV,CAAkB/D,kBAAA,CAAU0D,KAAV,CAAgBM,6BAAhB,CAAlB;EAFc,CAAhB,CAba;EAiBtBnD,OAAO,EAAEb,kBAAA,CAAU0D,KAAV,CAAgBO,eAAA,CAAOlE,SAAvB,CAjBa;EAkBtBe,WAAW,EAAEd,kBAAA,CAAUE,IAlBD;EAmBtBa,aAAa,EAAEf,kBAAA,CAAUE,IAnBH;EAoBtBc,uBAAuB,EAAEhB,kBAAA,CAAUE;AApBb,CAAxB;eAuBeC,W"}
1
+ {"version":3,"file":"index.js","names":["ContinueLearningButton","props","context","ongoingCoursesAvailable","onClick","skin","translate","primarySkinColor","width","borderRadius","backgroundColor","convert","position","faIcon","name","color","size","contextTypes","Provider","childContextTypes","propTypes","PropTypes","bool","func","SkillDetail","title","skillRef","description","metrics","focused","availableForReview","skillIncludedCourses","filters","sorting","onBackClick","onReviewClick","onContinueLearningClick","descriptionRef","useRef","score","questionsToReview","totalContents","isDescriptionTruncated","setIsDescriptionTruncated","useState","showMore","setShowMore","handleShowMore","useCallback","useEffect","current","clientHeight","scrollHeight","Description","classnames","style","truncate","ProgressBar","undefined","progressBarColor","inlineProgressValueStyle","progressBarWrapper","progress","backgroundContainer","container","backButton","ctaContainer","skillFocusBadge","faSize","wrapperSize","showMoreWrapper","ctaWrapper","skillInformation","skillInformationNumber","progressContainer","progressInformationNumber","toFixed","string","isRequired","shape","number","CardsGrid","onChange","options","arrayOf","SelectOptionPropTypes","Select"],"sources":["../../../src/template/skill-detail/index.js"],"sourcesContent":["import React, {useCallback, useState, useRef, useEffect} from 'react';\nimport PropTypes from 'prop-types';\nimport {convert} from 'css-color-function';\nimport classnames from 'classnames';\nimport {get, isNil} from 'lodash/fp';\nimport Markdown from 'markdown-to-jsx';\nimport Provider from '../../atom/provider';\nimport Select, {SelectOptionPropTypes} from '../../atom/select';\nimport ButtonLink from '../../atom/button-link';\nimport ButtonLinkIcon from '../../atom/button-link-icon';\nimport Icon from '../../atom/icon';\nimport CardsGrid from '../../organism/cards-grid';\nimport style from './style.css';\nimport AllCourses from './all-courses';\n\nexport const ContinueLearningButton = (props, context) => {\n const {ongoingCoursesAvailable, onClick} = props;\n const {skin, translate} = context;\n const primarySkinColor = get('common.primary', skin);\n\n return (\n <div>\n <ButtonLink\n label={\n ongoingCoursesAvailable ? translate('continue_learning') : translate('start_learning')\n }\n type=\"primary\"\n customStyle={{\n width: 'fit-content',\n borderRadius: '12px',\n backgroundColor: primarySkinColor\n }}\n hoverBackgroundColor={convert(`hsl(from ${primarySkinColor} h s calc(l*(1 - 0.08)))`)}\n hoverColor=\"#FFFFFF\"\n icon={{\n position: 'left',\n faIcon: {\n name: 'play',\n color: '#FFFFFF',\n size: 16\n }\n }}\n onClick={onClick}\n />\n </div>\n );\n};\n\nContinueLearningButton.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nContinueLearningButton.propTypes = {\n ongoingCoursesAvailable: PropTypes.bool,\n onClick: PropTypes.func\n};\n\nconst SkillDetail = (props, context) => {\n const {\n title,\n skillRef,\n description,\n metrics = {},\n focused,\n availableForReview,\n ongoingCoursesAvailable,\n skillIncludedCourses,\n filters,\n sorting,\n onBackClick,\n onReviewClick,\n onContinueLearningClick\n } = props;\n const descriptionRef = useRef(null);\n const {score = 0, questionsToReview, totalContents} = metrics;\n const {translate} = context;\n\n const [isDescriptionTruncated, setIsDescriptionTruncated] = useState(false);\n const [showMore, setShowMore] = useState(false);\n\n const handleShowMore = useCallback(() => setShowMore(!showMore), [setShowMore, showMore]);\n\n useEffect(() => {\n if (descriptionRef.current) {\n const {clientHeight = 0, scrollHeight = 0} = descriptionRef.current;\n setIsDescriptionTruncated(scrollHeight > clientHeight);\n }\n }, [description]);\n\n const Description = useCallback(() => {\n return (\n <div\n ref={descriptionRef}\n className={classnames(style.description, !showMore && style.truncate)}\n >\n <Markdown>{description}</Markdown>\n </div>\n );\n }, [showMore, description]);\n\n const ProgressBar = useCallback(() => {\n if (score === undefined) return null;\n const progressBarColor = '#3EC483';\n const inlineProgressValueStyle = {\n backgroundColor: progressBarColor,\n width: `${score}%`\n };\n\n return (\n <div className={style.progressBarWrapper}>\n <div\n data-name=\"progress\"\n className={style.progress}\n style={inlineProgressValueStyle}\n role=\"progressbar\"\n />\n </div>\n );\n }, [score]);\n\n return (\n <div className={style.backgroundContainer}>\n <div className={style.container} data-name={skillRef}>\n {!isNil(onBackClick) ? (\n <ButtonLinkIcon\n faIcon=\"arrow-left\"\n data-name=\"back-button\"\n aria-label={translate('back')}\n onClick={onBackClick}\n className={style.backButton}\n tooltipPlacement=\"right\"\n />\n ) : null}\n <div className={style.ctaContainer}>\n <div>\n {focused ? (\n <div className={style.skillFocusBadge}>\n <Icon\n iconName=\"bullseye-arrow\"\n backgroundColor=\"#DDD1FF\"\n size={{\n faSize: 10,\n wrapperSize: 16\n }}\n />\n {translate('skill_focus')}\n </div>\n ) : null}\n <div className={style.title}>{title}</div>\n {description ? (\n <>\n <Description />\n {isDescriptionTruncated ? (\n <div className={style.showMoreWrapper} onClick={handleShowMore}>\n {showMore ? translate('Show less') : translate('Show more')}\n <Icon\n iconName={showMore ? 'chevron-up' : 'chevron-down'}\n size={{\n faSize: 14,\n wrapperSize: 16\n }}\n />\n </div>\n ) : null}\n </>\n ) : null}\n </div>\n\n <div className={style.ctaWrapper}>\n <ButtonLink\n type=\"secondary\"\n onClick={onReviewClick}\n label={translate('review_this_skill')}\n disabled={!availableForReview}\n customStyle={{\n width: 'fit-content',\n borderRadius: '12px'\n }}\n />\n <ContinueLearningButton\n ongoingCoursesAvailable={ongoingCoursesAvailable}\n onClick={onContinueLearningClick}\n />\n </div>\n </div>\n {questionsToReview > 0 ? (\n <div className={style.skillInformation} data-name=\"skill-questions\">\n <span className={style.skillInformationNumber}>{questionsToReview}</span>\n &nbsp;{translate('skill_chart_side_panel_questions_to_review')}\n </div>\n ) : null}\n <div className={style.progressContainer}>\n <ProgressBar />\n <span className={style.progressInformationNumber}>{score.toFixed(1)}%</span>\n </div>\n <AllCourses\n content={skillIncludedCourses}\n filters={filters}\n sorting={sorting}\n totalContents={totalContents}\n />\n </div>\n </div>\n );\n};\n\nSkillDetail.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nSkillDetail.propTypes = {\n title: PropTypes.string.isRequired,\n skillRef: PropTypes.string.isRequired,\n description: PropTypes.string,\n metrics: PropTypes.shape({\n score: PropTypes.number,\n questionsToReview: PropTypes.number,\n totalContents: PropTypes.number\n }),\n focused: PropTypes.bool,\n availableForReview: PropTypes.bool,\n ongoingCoursesAvailable: PropTypes.bool,\n skillIncludedCourses: 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 onBackClick: PropTypes.func,\n onReviewClick: PropTypes.func,\n onContinueLearningClick: PropTypes.func\n};\n\nexport default SkillDetail;\n"],"mappings":"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"}
@@ -5,6 +5,8 @@ export declare const COLORS: {
5
5
  readonly white: "#ffffff";
6
6
  readonly cm_grey_800: "#171721";
7
7
  readonly cm_primary_blue: "#0061FF";
8
+ readonly cm_grey_500: "#515161";
9
+ readonly brand: "#00B0FF";
8
10
  };
9
11
  export declare type Colors = typeof COLORS;
10
12
  //# sourceMappingURL=colors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../src/variables/colors.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,MAAM;;;;;;;CAOT,CAAC;AAEX,oBAAY,MAAM,GAAG,OAAO,MAAM,CAAC"}
1
+ {"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../src/variables/colors.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,MAAM;;;;;;;;;CAST,CAAC;AAEX,oBAAY,MAAM,GAAG,OAAO,MAAM,CAAC"}
@@ -8,7 +8,9 @@ const COLORS = {
8
8
  positive: '#35CC7F',
9
9
  white: '#ffffff',
10
10
  cm_grey_800: '#171721',
11
- cm_primary_blue: '#0061FF'
11
+ cm_primary_blue: '#0061FF',
12
+ cm_grey_500: '#515161',
13
+ brand: '#00B0FF'
12
14
  };
13
15
  exports.COLORS = COLORS;
14
16
  //# sourceMappingURL=colors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"colors.js","names":["COLORS","gray","negative","positive","white","cm_grey_800","cm_primary_blue"],"sources":["../../src/variables/colors.ts"],"sourcesContent":["export const COLORS = {\n gray: '#EAEAEB',\n negative: '#ed3436',\n positive: '#35CC7F',\n white: '#ffffff',\n cm_grey_800: '#171721',\n cm_primary_blue: '#0061FF'\n} as const;\n\nexport type Colors = typeof COLORS;\n"],"mappings":";;;;AAAO,MAAMA,MAAM,GAAG;EACpBC,IAAI,EAAE,SADc;EAEpBC,QAAQ,EAAE,SAFU;EAGpBC,QAAQ,EAAE,SAHU;EAIpBC,KAAK,EAAE,SAJa;EAKpBC,WAAW,EAAE,SALO;EAMpBC,eAAe,EAAE;AANG,CAAf"}
1
+ {"version":3,"file":"colors.js","names":["COLORS","gray","negative","positive","white","cm_grey_800","cm_primary_blue","cm_grey_500","brand"],"sources":["../../src/variables/colors.ts"],"sourcesContent":["export const COLORS = {\n gray: '#EAEAEB',\n negative: '#ed3436',\n positive: '#35CC7F',\n white: '#ffffff',\n cm_grey_800: '#171721',\n cm_primary_blue: '#0061FF',\n cm_grey_500: '#515161',\n brand: '#00B0FF'\n} as const;\n\nexport type Colors = typeof COLORS;\n"],"mappings":";;;;AAAO,MAAMA,MAAM,GAAG;EACpBC,IAAI,EAAE,SADc;EAEpBC,QAAQ,EAAE,SAFU;EAGpBC,QAAQ,EAAE,SAHU;EAIpBC,KAAK,EAAE,SAJa;EAKpBC,WAAW,EAAE,SALO;EAMpBC,eAAe,EAAE,SANG;EAOpBC,WAAW,EAAE,SAPO;EAQpBC,KAAK,EAAE;AARa,CAAf"}
@@ -27,7 +27,7 @@
27
27
  "items": "stavke",
28
28
  "certificate": "Certifikat",
29
29
  "certification": "Certifikacija",
30
- "certification_progress_wrapper_subtitle": "Da otključate svoje nagrade i završite ovu certifikaciju, dostignite sljedeći cilj",
30
+ "certification_progress_wrapper_subtitle": "To unlock your rewards, reach the following goal",
31
31
  "chapters": "poglavlja",
32
32
  "Close": "Zatvori",
33
33
  "clue_stars_to_loose_plural": "Otključavanje traga smanjuje broj zvijezda koje možete dobiti za ovo pitanje za {{count}} (ako tačno odgovorite)",
@@ -27,7 +27,7 @@
27
27
  "items": "položky",
28
28
  "certificate": "Osvědčení",
29
29
  "certification": "Osvědčení",
30
- "certification_progress_wrapper_subtitle": "Pokud chcete zpřístupnit odměny a dokončit tuto certifikaci, splňte následující cíl",
30
+ "certification_progress_wrapper_subtitle": "To unlock your rewards, reach the following goal",
31
31
  "chapters": "kapitoly",
32
32
  "Close": "Zavřít",
33
33
  "clue_stars_to_loose_plural": "Odemknutí nápovědy sníží počet hvězd, které můžete získat na této otázce, o {{count}} (pokud ji zodpovíte správně)",
@@ -27,7 +27,7 @@
27
27
  "items": "Artikel",
28
28
  "certificate": "Zertifikat",
29
29
  "certification": "Zertifizierung",
30
- "certification_progress_wrapper_subtitle": "Um Ihre Belohnungen freizuschalten und diese Zertifizierung abzuschließen, müssen Sie folgendes Ziel erreichen:",
30
+ "certification_progress_wrapper_subtitle": "To unlock your rewards, reach the following goal",
31
31
  "chapters": "Kapitel",
32
32
  "Close": "Schliessen",
33
33
  "clue_stars_to_loose_plural": "Wenn Sie den Hinweis benutzen, reduziert sich die Anzahl Sterne, die Sie bei dieser Frage gewinnen können um {{count}} (wenn Sie richtig antworten)",
@@ -27,7 +27,7 @@
27
27
  "items": "items",
28
28
  "certificate": "Certificate",
29
29
  "certification": "Certification",
30
- "certification_progress_wrapper_subtitle": "To unlock your rewards and complete this certification, reach the following goal",
30
+ "certification_progress_wrapper_subtitle": "To unlock your rewards, reach the following goal",
31
31
  "chapters": "chapters",
32
32
  "Close": "Close",
33
33
  "clue_stars_to_loose_plural": "Unlocking the clue reduces the stars you can gain on this question by {{count}} (if you get it right)",
@@ -27,7 +27,7 @@
27
27
  "items": "elementos",
28
28
  "certificate": "Certificado",
29
29
  "certification": "Proceso de dar un título",
30
- "certification_progress_wrapper_subtitle": "Para desbloquear tus recompensas y completar esta certificación, alcanza el siguiente objetivo",
30
+ "certification_progress_wrapper_subtitle": "To unlock your rewards, reach the following goal",
31
31
  "chapters": "capítulos",
32
32
  "Close": "Cerrar",
33
33
  "clue_stars_to_loose_plural": "Desbloquear la pista reduce en {{count}} las estrellas que puedes ganar por esta pregunta (si la aciertas)",
@@ -27,7 +27,7 @@
27
27
  "items": "esemed",
28
28
  "certificate": "tunnistus",
29
29
  "certification": "Sertifitseerimine",
30
- "certification_progress_wrapper_subtitle": "Preemiate avamiseks ja sertifikaadi saamiseks täitke järgmine eesmärk",
30
+ "certification_progress_wrapper_subtitle": "To unlock your rewards, reach the following goal",
31
31
  "chapters": "peatükid",
32
32
  "Close": "Sulge",
33
33
  "clue_stars_to_loose_plural": "Vihje kasutamine vähendab saadavat punktisummat {{count}} võrra (juhul, kui vastad õigesti)",
@@ -27,7 +27,7 @@
27
27
  "items": "kohteita",
28
28
  "certificate": "Todistus",
29
29
  "certification": "Sertifiointi",
30
- "certification_progress_wrapper_subtitle": "Jotta voit avata palkintosi ja suorittaa tämän todistuksen, saavuta seuraava tavoite",
30
+ "certification_progress_wrapper_subtitle": "To unlock your rewards, reach the following goal",
31
31
  "chapters": "kappaleet",
32
32
  "Close": "Sulje",
33
33
  "clue_stars_to_loose_plural": "Jos avaat tämän vihjeen, voitat tästä kysymyksestä {{count}} tähteä vähemmän (jos saat sen oikein)",
@@ -27,7 +27,7 @@
27
27
  "items": "articles",
28
28
  "certificate": "Certificat",
29
29
  "certification": "Certification",
30
- "certification_progress_wrapper_subtitle": "Pour débloquer vos récompenses et obtenir cette certification, atteignez l'objectif suivant",
30
+ "certification_progress_wrapper_subtitle": "To unlock your rewards, reach the following goal",
31
31
  "chapters": "chapitres",
32
32
  "Close": "Fermer",
33
33
  "clue_stars_to_loose_plural": "En regardant l'indice, cette question vous rapportera {{count}} étoiles en moins (si vous y répondez correctement)",
@@ -27,7 +27,7 @@
27
27
  "items": "stavke",
28
28
  "certificate": "Potvrda",
29
29
  "certification": "Certifikacija",
30
- "certification_progress_wrapper_subtitle": "Da biste otključali svoje nagrade i završili ovu certifikaciju, postignite sljedeći cilj",
30
+ "certification_progress_wrapper_subtitle": "To unlock your rewards, reach the following goal",
31
31
  "chapters": "poglavlja",
32
32
  "Close": "Zatvorite",
33
33
  "clue_stars_to_loose_plural": "Otključavanje pomoći smanjuje broj zvjezdica koje možete dobiti za ovo pitanje na {{count}} (ako točno odgovorite)",
@@ -27,7 +27,7 @@
27
27
  "items": "tételeket",
28
28
  "certificate": "Bizonyítvány",
29
29
  "certification": "Tanúsítvány",
30
- "certification_progress_wrapper_subtitle": "A jutalmak feloldásához és a tanúsítás befejezéséhez a következő célt kell elérned",
30
+ "certification_progress_wrapper_subtitle": "To unlock your rewards, reach the following goal",
31
31
  "chapters": "fejezetek",
32
32
  "Close": "Bezár",
33
33
  "clue_stars_to_loose_plural": "A tipp feloldása {{count}} csillaggal csökkentheti a nyereményét ennél a kérdésnél (ha jól válaszol)",
@@ -27,7 +27,7 @@
27
27
  "items": "իրեր",
28
28
  "certificate": "Վկայական",
29
29
  "certification": "Հավաստագրում",
30
- "certification_progress_wrapper_subtitle": "Ձեր պարգևները բացելու և այս հավաստագրումն ավարտելու համար հասեք հետևյալ նպատակին",
30
+ "certification_progress_wrapper_subtitle": "To unlock your rewards, reach the following goal",
31
31
  "chapters": "բաժիններ",
32
32
  "Close": "Փակել",
33
33
  "clue_stars_to_loose_plural": "Հուշման բացումը նվազեցնում է աստղերը, որոնք դուք կարող եք ձեռք բերել այս հարցում {{count}}-ով (եթե ճիշտ եք պատասխանում)",