@coorpacademy/components 11.40.9 → 11.40.10
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.
- package/es/atom/tag/index.js +3 -1
- package/es/atom/tag/index.js.map +1 -1
- package/es/atom/tag/style.css +3 -0
- package/es/molecule/certification-card/index.d.ts +2 -1
- package/es/molecule/certification-card/index.d.ts.map +1 -1
- package/es/molecule/certification-card/index.js +14 -2
- package/es/molecule/certification-card/index.js.map +1 -1
- package/es/molecule/certification-card/style.css +2 -2
- package/es/molecule/cm-popin/types.d.ts +1 -1
- package/es/molecule/dashboard/cards-list/index.d.ts.map +1 -1
- package/es/molecule/dashboard/cards-list/index.js +15 -4
- package/es/molecule/dashboard/cards-list/index.js.map +1 -1
- package/es/molecule/learner-skill-card/index.d.ts +24 -25
- package/es/molecule/learner-skill-card/index.d.ts.map +1 -1
- package/es/molecule/learner-skill-card/index.js +44 -13
- package/es/molecule/learner-skill-card/index.js.map +1 -1
- package/es/molecule/playlist-card/index.d.ts +31 -0
- package/es/molecule/playlist-card/index.d.ts.map +1 -0
- package/es/molecule/playlist-card/index.js +86 -0
- package/es/molecule/playlist-card/index.js.map +1 -0
- package/es/molecule/playlist-card/style.css +100 -0
- package/es/molecule/playlist-detail-cover/index.d.ts +3 -1
- package/es/molecule/playlist-detail-cover/index.d.ts.map +1 -1
- package/es/molecule/playlist-detail-cover/index.js +6 -3
- package/es/molecule/playlist-detail-cover/index.js.map +1 -1
- package/es/molecule/skills-chart-side-information-item/index.d.ts.map +1 -1
- package/es/molecule/skills-chart-side-information-item/index.js +6 -1
- package/es/molecule/skills-chart-side-information-item/index.js.map +1 -1
- package/es/molecule/skills-chart-side-information-item/style.css +3 -0
- package/es/organism/cards-grid/index.d.ts +29 -1
- package/es/organism/cards-grid/index.d.ts.map +1 -1
- package/es/organism/cards-grid/index.js +22 -8
- package/es/organism/cards-grid/index.js.map +1 -1
- package/es/template/app-player/loading/index.d.ts +1 -1
- package/es/template/app-player/player/index.d.ts +2 -2
- package/es/template/app-player/player/slides/index.d.ts +1 -1
- package/es/template/app-player/popin-correction/index.d.ts +1 -1
- package/es/template/app-player/popin-end/index.d.ts +1 -1
- package/es/template/app-review/index.d.ts +1 -1
- package/es/template/app-review/player/prop-types.d.ts +1 -1
- package/es/template/app-review/prop-types.d.ts +1 -1
- package/es/template/back-office/brand-update/index.d.ts +1 -1
- package/es/template/certification-detail/index.d.ts +1 -1
- package/es/template/common/authors/index.d.ts +1 -1
- package/es/template/common/dashboard/index.d.ts +2 -2
- package/es/template/common/search-page/index.d.ts +120 -2
- package/es/template/common/search-page/index.d.ts.map +1 -1
- package/es/template/common/search-page/index.js +110 -5
- package/es/template/common/search-page/index.js.map +1 -1
- package/es/template/common/search-page/style.css +67 -0
- package/es/template/external-course/index.d.ts +1 -1
- package/es/template/my-learning/index.d.ts.map +1 -1
- package/es/template/my-learning/index.js +6 -4
- package/es/template/my-learning/index.js.map +1 -1
- package/es/template/playlist-detail/index.d.ts +1 -1
- package/es/template/skill-detail/all-courses.d.ts +1 -1
- package/es/template/skill-detail/continue-learning.d.ts +1 -1
- package/es/template/skill-detail/index.d.ts +2 -2
- package/es/template/skill-detail/index.d.ts.map +1 -1
- package/es/template/skill-detail/index.js +3 -1
- package/es/template/skill-detail/index.js.map +1 -1
- package/lib/atom/tag/index.js +3 -1
- package/lib/atom/tag/index.js.map +1 -1
- package/lib/atom/tag/style.css +3 -0
- package/lib/molecule/certification-card/index.d.ts +2 -1
- package/lib/molecule/certification-card/index.d.ts.map +1 -1
- package/lib/molecule/certification-card/index.js +14 -2
- package/lib/molecule/certification-card/index.js.map +1 -1
- package/lib/molecule/certification-card/style.css +2 -2
- package/lib/molecule/cm-popin/types.d.ts +1 -1
- package/lib/molecule/dashboard/cards-list/index.d.ts.map +1 -1
- package/lib/molecule/dashboard/cards-list/index.js +15 -4
- package/lib/molecule/dashboard/cards-list/index.js.map +1 -1
- package/lib/molecule/learner-skill-card/index.d.ts +24 -25
- package/lib/molecule/learner-skill-card/index.d.ts.map +1 -1
- package/lib/molecule/learner-skill-card/index.js +44 -13
- package/lib/molecule/learner-skill-card/index.js.map +1 -1
- package/lib/molecule/playlist-card/index.d.ts +31 -0
- package/lib/molecule/playlist-card/index.d.ts.map +1 -0
- package/lib/molecule/playlist-card/index.js +91 -0
- package/lib/molecule/playlist-card/index.js.map +1 -0
- package/lib/molecule/playlist-card/style.css +100 -0
- package/lib/molecule/playlist-detail-cover/index.d.ts +3 -1
- package/lib/molecule/playlist-detail-cover/index.d.ts.map +1 -1
- package/lib/molecule/playlist-detail-cover/index.js +6 -3
- package/lib/molecule/playlist-detail-cover/index.js.map +1 -1
- package/lib/molecule/skills-chart-side-information-item/index.d.ts.map +1 -1
- package/lib/molecule/skills-chart-side-information-item/index.js +6 -1
- package/lib/molecule/skills-chart-side-information-item/index.js.map +1 -1
- package/lib/molecule/skills-chart-side-information-item/style.css +3 -0
- package/lib/organism/cards-grid/index.d.ts +29 -1
- package/lib/organism/cards-grid/index.d.ts.map +1 -1
- package/lib/organism/cards-grid/index.js +22 -8
- package/lib/organism/cards-grid/index.js.map +1 -1
- package/lib/template/app-player/loading/index.d.ts +1 -1
- package/lib/template/app-player/player/index.d.ts +2 -2
- package/lib/template/app-player/player/slides/index.d.ts +1 -1
- package/lib/template/app-player/popin-correction/index.d.ts +1 -1
- package/lib/template/app-player/popin-end/index.d.ts +1 -1
- package/lib/template/app-review/index.d.ts +1 -1
- package/lib/template/app-review/player/prop-types.d.ts +1 -1
- package/lib/template/app-review/prop-types.d.ts +1 -1
- package/lib/template/back-office/brand-update/index.d.ts +1 -1
- package/lib/template/certification-detail/index.d.ts +1 -1
- package/lib/template/common/authors/index.d.ts +1 -1
- package/lib/template/common/dashboard/index.d.ts +2 -2
- package/lib/template/common/search-page/index.d.ts +120 -2
- package/lib/template/common/search-page/index.d.ts.map +1 -1
- package/lib/template/common/search-page/index.js +110 -5
- package/lib/template/common/search-page/index.js.map +1 -1
- package/lib/template/common/search-page/style.css +67 -0
- package/lib/template/external-course/index.d.ts +1 -1
- package/lib/template/my-learning/index.d.ts.map +1 -1
- package/lib/template/my-learning/index.js +6 -4
- package/lib/template/my-learning/index.js.map +1 -1
- package/lib/template/playlist-detail/index.d.ts +1 -1
- package/lib/template/skill-detail/all-courses.d.ts +1 -1
- package/lib/template/skill-detail/continue-learning.d.ts +1 -1
- package/lib/template/skill-detail/index.d.ts +2 -2
- package/lib/template/skill-detail/index.d.ts.map +1 -1
- package/lib/template/skill-detail/index.js +3 -1
- package/lib/template/skill-detail/index.js.map +1 -1
- package/locales/bs/global.json +4 -2
- package/locales/cs/global.json +4 -2
- package/locales/de/global.json +4 -2
- package/locales/en/global.json +4 -2
- package/locales/es/global.json +4 -2
- package/locales/et/global.json +4 -2
- package/locales/fi/global.json +4 -2
- package/locales/fr/global.json +4 -2
- package/locales/hr/global.json +4 -2
- package/locales/hu/global.json +4 -2
- package/locales/hy/global.json +4 -2
- package/locales/it/global.json +4 -2
- package/locales/ja/global.json +4 -2
- package/locales/ko/global.json +4 -2
- package/locales/lt/global.json +4 -2
- package/locales/nl/global.json +4 -2
- package/locales/pl/global.json +4 -2
- package/locales/pt/global.json +4 -2
- package/locales/ro/global.json +4 -2
- package/locales/ru/global.json +4 -2
- package/locales/sk/global.json +4 -2
- package/locales/sl/global.json +4 -2
- package/locales/sv/global.json +4 -2
- package/locales/th/global.json +6 -2
- package/locales/tl/global.json +4 -2
- package/locales/tr/global.json +4 -2
- package/locales/uk/global.json +4 -2
- package/locales/vi/global.json +4 -2
- package/locales/zh/global.json +4 -2
- package/locales/zh_TW/global.json +4 -2
- package/package.json +2 -2
- package/es/molecule/learner-skill-card/prop-types.d.ts +0 -37
- package/es/molecule/learner-skill-card/prop-types.d.ts.map +0 -1
- package/es/molecule/learner-skill-card/prop-types.js +0 -20
- package/es/molecule/learner-skill-card/prop-types.js.map +0 -1
- package/lib/molecule/learner-skill-card/prop-types.d.ts +0 -37
- package/lib/molecule/learner-skill-card/prop-types.d.ts.map +0 -1
- package/lib/molecule/learner-skill-card/prop-types.js +0 -25
- package/lib/molecule/learner-skill-card/prop-types.js.map +0 -1
package/es/atom/tag/index.js
CHANGED
|
@@ -45,7 +45,9 @@ const Tag = ({
|
|
|
45
45
|
style: customStyle
|
|
46
46
|
}, /*#__PURE__*/React.createElement("div", {
|
|
47
47
|
className: style.content
|
|
48
|
-
}, position === 'left' && iconName && renderIcon(iconProps), /*#__PURE__*/React.createElement("div",
|
|
48
|
+
}, position === 'left' && iconName && renderIcon(iconProps), /*#__PURE__*/React.createElement("div", {
|
|
49
|
+
className: style.label
|
|
50
|
+
}, label), position === 'right' && iconName && renderIcon(iconProps)));
|
|
49
51
|
};
|
|
50
52
|
Tag.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
51
53
|
label: PropTypes.string,
|
package/es/atom/tag/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","PropTypes","classnames","Icon","style","TAG_STYLES","default","defaultStyle","success","failure","warning","progress","info","TAG_SIZE","S","small","M","medium","L","large","defaultIconProps","position","preset","renderIcon","iconProps","createElement","Tag","label","type","size","customStyle","icon","iconName","className","content","propTypes","process","env","NODE_ENV","string","oneOf","_keys","objectOf","oneOfType","number","shape"],"sources":["../../../src/atom/tag/index.js"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {keys} from 'lodash/fp';\nimport Icon from '../icon';\nimport style from './style.css';\n\nconst TAG_STYLES = {\n default: style.defaultStyle,\n success: style.success,\n failure: style.failure,\n warning: style.warning,\n progress: style.progress,\n info: style.info\n};\n\nconst TAG_SIZE = {\n S: style.small,\n M: style.medium,\n L: style.large\n};\n\nconst defaultIconProps = {\n position: 'left',\n preset: 's'\n};\n\nconst renderIcon = iconProps => <Icon {...iconProps} />;\n\nconst Tag = ({label = '', type = 'default', size = 'M', customStyle = {}, icon = {}}) => {\n const {iconName} = icon;\n const {position, ...iconProps} = iconName\n ? {\n ...defaultIconProps,\n ...icon\n }\n : {};\n\n return (\n <span\n className={classnames(TAG_STYLES[type], TAG_SIZE[size])}\n data-name={`content-tag-${label}`}\n style={customStyle}\n >\n <div className={style.content}>\n {position === 'left' && iconName && renderIcon(iconProps)}\n <div>{label}</div>\n {position === 'right' && iconName && renderIcon(iconProps)}\n </div>\n </span>\n );\n};\n\nTag.propTypes = {\n label: PropTypes.string,\n type: PropTypes.oneOf(keys(TAG_STYLES)),\n size: PropTypes.oneOf(['S', 'M', 'L']),\n customStyle: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),\n icon: PropTypes.shape({...Icon.propTypes, position: PropTypes.oneOf(['left', 'right'])})\n};\n\nexport default Tag;\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,YAAY;AAClC,OAAOC,UAAU,MAAM,YAAY;AAEnC,OAAOC,IAAI,MAAM,SAAS;AAC1B,OAAOC,KAAK,MAAM,aAAa;AAE/B,MAAMC,UAAU,GAAG;EACjBC,OAAO,EAAEF,KAAK,CAACG,YAAY;EAC3BC,OAAO,EAAEJ,KAAK,CAACI,OAAO;EACtBC,OAAO,EAAEL,KAAK,CAACK,OAAO;EACtBC,OAAO,EAAEN,KAAK,CAACM,OAAO;EACtBC,QAAQ,EAAEP,KAAK,CAACO,QAAQ;EACxBC,IAAI,EAAER,KAAK,CAACQ;AACd,CAAC;AAED,MAAMC,QAAQ,GAAG;EACfC,CAAC,EAAEV,KAAK,CAACW,KAAK;EACdC,CAAC,EAAEZ,KAAK,CAACa,MAAM;EACfC,CAAC,EAAEd,KAAK,CAACe;AACX,CAAC;AAED,MAAMC,gBAAgB,GAAG;EACvBC,QAAQ,EAAE,MAAM;EAChBC,MAAM,EAAE;AACV,CAAC;AAED,MAAMC,UAAU,GAAGC,SAAS,iBAAIxB,KAAA,CAAAyB,aAAA,CAACtB,IAAI,EAAKqB,SAAY,CAAC;AAEvD,MAAME,GAAG,GAAGA,CAAC;EAACC,KAAK,GAAG,EAAE;EAAEC,IAAI,GAAG,SAAS;EAAEC,IAAI,GAAG,GAAG;EAAEC,WAAW,GAAG,CAAC,CAAC;EAAEC,IAAI,GAAG,CAAC;AAAC,CAAC,KAAK;EACvF,MAAM;IAACC;EAAQ,CAAC,GAAGD,IAAI;EACvB,MAAM;IAACV,QAAQ;IAAE,GAAGG;EAAS,CAAC,GAAGQ,QAAQ,GACrC;IACE,GAAGZ,gBAAgB;IACnB,GAAGW;EACL,CAAC,GACD,CAAC,CAAC;EAEN,oBACE/B,KAAA,CAAAyB,aAAA;IACEQ,SAAS,EAAE/B,UAAU,CAACG,UAAU,CAACuB,IAAI,CAAC,EAAEf,QAAQ,CAACgB,IAAI,CAAC,CAAE;IACxD,aAAW,eAAeF,KAAK,EAAG;IAClCvB,KAAK,EAAE0B;EAAY,gBAEnB9B,KAAA,CAAAyB,aAAA;IAAKQ,SAAS,EAAE7B,KAAK,CAAC8B;EAAQ,GAC3Bb,QAAQ,KAAK,MAAM,IAAIW,QAAQ,IAAIT,UAAU,CAACC,SAAS,CAAC,eACzDxB,KAAA,CAAAyB,aAAA,
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","PropTypes","classnames","Icon","style","TAG_STYLES","default","defaultStyle","success","failure","warning","progress","info","TAG_SIZE","S","small","M","medium","L","large","defaultIconProps","position","preset","renderIcon","iconProps","createElement","Tag","label","type","size","customStyle","icon","iconName","className","content","propTypes","process","env","NODE_ENV","string","oneOf","_keys","objectOf","oneOfType","number","shape"],"sources":["../../../src/atom/tag/index.js"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {keys} from 'lodash/fp';\nimport Icon from '../icon';\nimport style from './style.css';\n\nconst TAG_STYLES = {\n default: style.defaultStyle,\n success: style.success,\n failure: style.failure,\n warning: style.warning,\n progress: style.progress,\n info: style.info\n};\n\nconst TAG_SIZE = {\n S: style.small,\n M: style.medium,\n L: style.large\n};\n\nconst defaultIconProps = {\n position: 'left',\n preset: 's'\n};\n\nconst renderIcon = iconProps => <Icon {...iconProps} />;\n\nconst Tag = ({label = '', type = 'default', size = 'M', customStyle = {}, icon = {}}) => {\n const {iconName} = icon;\n const {position, ...iconProps} = iconName\n ? {\n ...defaultIconProps,\n ...icon\n }\n : {};\n\n return (\n <span\n className={classnames(TAG_STYLES[type], TAG_SIZE[size])}\n data-name={`content-tag-${label}`}\n style={customStyle}\n >\n <div className={style.content}>\n {position === 'left' && iconName && renderIcon(iconProps)}\n <div className={style.label}>{label}</div>\n {position === 'right' && iconName && renderIcon(iconProps)}\n </div>\n </span>\n );\n};\n\nTag.propTypes = {\n label: PropTypes.string,\n type: PropTypes.oneOf(keys(TAG_STYLES)),\n size: PropTypes.oneOf(['S', 'M', 'L']),\n customStyle: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),\n icon: PropTypes.shape({...Icon.propTypes, position: PropTypes.oneOf(['left', 'right'])})\n};\n\nexport default Tag;\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,YAAY;AAClC,OAAOC,UAAU,MAAM,YAAY;AAEnC,OAAOC,IAAI,MAAM,SAAS;AAC1B,OAAOC,KAAK,MAAM,aAAa;AAE/B,MAAMC,UAAU,GAAG;EACjBC,OAAO,EAAEF,KAAK,CAACG,YAAY;EAC3BC,OAAO,EAAEJ,KAAK,CAACI,OAAO;EACtBC,OAAO,EAAEL,KAAK,CAACK,OAAO;EACtBC,OAAO,EAAEN,KAAK,CAACM,OAAO;EACtBC,QAAQ,EAAEP,KAAK,CAACO,QAAQ;EACxBC,IAAI,EAAER,KAAK,CAACQ;AACd,CAAC;AAED,MAAMC,QAAQ,GAAG;EACfC,CAAC,EAAEV,KAAK,CAACW,KAAK;EACdC,CAAC,EAAEZ,KAAK,CAACa,MAAM;EACfC,CAAC,EAAEd,KAAK,CAACe;AACX,CAAC;AAED,MAAMC,gBAAgB,GAAG;EACvBC,QAAQ,EAAE,MAAM;EAChBC,MAAM,EAAE;AACV,CAAC;AAED,MAAMC,UAAU,GAAGC,SAAS,iBAAIxB,KAAA,CAAAyB,aAAA,CAACtB,IAAI,EAAKqB,SAAY,CAAC;AAEvD,MAAME,GAAG,GAAGA,CAAC;EAACC,KAAK,GAAG,EAAE;EAAEC,IAAI,GAAG,SAAS;EAAEC,IAAI,GAAG,GAAG;EAAEC,WAAW,GAAG,CAAC,CAAC;EAAEC,IAAI,GAAG,CAAC;AAAC,CAAC,KAAK;EACvF,MAAM;IAACC;EAAQ,CAAC,GAAGD,IAAI;EACvB,MAAM;IAACV,QAAQ;IAAE,GAAGG;EAAS,CAAC,GAAGQ,QAAQ,GACrC;IACE,GAAGZ,gBAAgB;IACnB,GAAGW;EACL,CAAC,GACD,CAAC,CAAC;EAEN,oBACE/B,KAAA,CAAAyB,aAAA;IACEQ,SAAS,EAAE/B,UAAU,CAACG,UAAU,CAACuB,IAAI,CAAC,EAAEf,QAAQ,CAACgB,IAAI,CAAC,CAAE;IACxD,aAAW,eAAeF,KAAK,EAAG;IAClCvB,KAAK,EAAE0B;EAAY,gBAEnB9B,KAAA,CAAAyB,aAAA;IAAKQ,SAAS,EAAE7B,KAAK,CAAC8B;EAAQ,GAC3Bb,QAAQ,KAAK,MAAM,IAAIW,QAAQ,IAAIT,UAAU,CAACC,SAAS,CAAC,eACzDxB,KAAA,CAAAyB,aAAA;IAAKQ,SAAS,EAAE7B,KAAK,CAACuB;EAAM,GAAEA,KAAW,CAAC,EACzCN,QAAQ,KAAK,OAAO,IAAIW,QAAQ,IAAIT,UAAU,CAACC,SAAS,CACtD,CACD,CAAC;AAEX,CAAC;AAEDE,GAAG,CAACS,SAAS,GAAAC,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBAAG;EACdX,KAAK,EAAE1B,SAAS,CAACsC,MAAM;EACvBX,IAAI,EAAE3B,SAAS,CAACuC,KAAK,CAACC,KAAA,CAAKpC,UAAU,CAAC,CAAC;EACvCwB,IAAI,EAAE5B,SAAS,CAACuC,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;EACtCV,WAAW,EAAE7B,SAAS,CAACyC,QAAQ,CAACzC,SAAS,CAAC0C,SAAS,CAAC,CAAC1C,SAAS,CAACsC,MAAM,EAAEtC,SAAS,CAAC2C,MAAM,CAAC,CAAC,CAAC;EAC1Fb,IAAI,EAAE9B,SAAS,CAAC4C,KAAK,CAAC;IAAC,GAAG1C,IAAI,CAACgC,SAAS;IAAEd,QAAQ,EAAEpB,SAAS,CAACuC,KAAK,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC;EAAC,CAAC;AACzF,CAAC;AAED,eAAed,GAAG","ignoreList":[]}
|
package/es/atom/tag/style.css
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
export default CertificationCard;
|
|
2
|
-
declare function CertificationCard(props: any, context: any): JSX.Element;
|
|
2
|
+
declare function CertificationCard(props: any, context: any): JSX.Element | null;
|
|
3
3
|
declare namespace CertificationCard {
|
|
4
4
|
namespace contextTypes {
|
|
5
5
|
const translate: PropTypes.Requireable<(...args: any[]) => any>;
|
|
6
6
|
}
|
|
7
7
|
namespace propTypes {
|
|
8
|
+
const type: PropTypes.Validator<string>;
|
|
8
9
|
const label: PropTypes.Requireable<string>;
|
|
9
10
|
const goal: PropTypes.Requireable<PropTypes.InferProps<{
|
|
10
11
|
title: PropTypes.Requireable<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule/certification-card/index.js"],"names":[],"mappings":";AAQA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule/certification-card/index.js"],"names":[],"mappings":";AAQA,iFAiEC"}
|
|
@@ -7,6 +7,7 @@ import ProgressBar from '../progress-bar';
|
|
|
7
7
|
import style from './style.css';
|
|
8
8
|
const CertificationCard = (props, context) => {
|
|
9
9
|
const {
|
|
10
|
+
type,
|
|
10
11
|
label,
|
|
11
12
|
locales: {
|
|
12
13
|
conditionDescriptionProgress,
|
|
@@ -19,6 +20,7 @@ const CertificationCard = (props, context) => {
|
|
|
19
20
|
imgUrl,
|
|
20
21
|
onClick
|
|
21
22
|
} = props;
|
|
23
|
+
if (type !== 'certification') return null;
|
|
22
24
|
const {
|
|
23
25
|
translate
|
|
24
26
|
} = context;
|
|
@@ -38,6 +40,9 @@ const CertificationCard = (props, context) => {
|
|
|
38
40
|
padding: 0
|
|
39
41
|
}
|
|
40
42
|
};
|
|
43
|
+
const certificationIcon = {
|
|
44
|
+
iconName: 'wreath-laurel'
|
|
45
|
+
};
|
|
41
46
|
return /*#__PURE__*/React.createElement("div", {
|
|
42
47
|
className: style.container,
|
|
43
48
|
"data-name": `certification-card-${label}`,
|
|
@@ -63,13 +68,19 @@ const CertificationCard = (props, context) => {
|
|
|
63
68
|
className: style.titleWrapper
|
|
64
69
|
}, /*#__PURE__*/React.createElement(Tag, {
|
|
65
70
|
label: tag,
|
|
66
|
-
size: "S"
|
|
71
|
+
size: "S",
|
|
72
|
+
icon: certificationIcon
|
|
67
73
|
}), /*#__PURE__*/React.createElement("div", {
|
|
68
74
|
className: style.title,
|
|
69
75
|
"data-name": "certification-title"
|
|
70
76
|
}, title), /*#__PURE__*/React.createElement("div", {
|
|
71
77
|
className: style.moduleCount
|
|
72
|
-
|
|
78
|
+
// eslint-disable-next-line react/no-danger
|
|
79
|
+
,
|
|
80
|
+
dangerouslySetInnerHTML: {
|
|
81
|
+
__html: conditionDescriptionProgress
|
|
82
|
+
}
|
|
83
|
+
})), /*#__PURE__*/React.createElement(ProgressBar, {
|
|
73
84
|
className: style.customProgressBar,
|
|
74
85
|
style: {
|
|
75
86
|
backgroundColor: COLORS.cm_positive_500
|
|
@@ -83,6 +94,7 @@ CertificationCard.contextTypes = {
|
|
|
83
94
|
translate: Provider.childContextTypes.translate
|
|
84
95
|
};
|
|
85
96
|
CertificationCard.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
97
|
+
type: PropTypes.oneOf(['certification']).isRequired,
|
|
86
98
|
label: PropTypes.string,
|
|
87
99
|
goal: PropTypes.shape({
|
|
88
100
|
title: PropTypes.string,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","PropTypes","COLORS","Provider","Tag","ProgressBar","style","CertificationCard","props","context","label","locales","conditionDescriptionProgress","tag","goal","title","progress","imgUrl","onClick","translate","isInprogress","progressLabel","progressTagType","progressIconProps","position","iconName","iconColor","backgroundColor","size","faSize","wrapperSize","customStyle","padding","createElement","className","container","
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","PropTypes","COLORS","Provider","Tag","ProgressBar","style","CertificationCard","props","context","type","label","locales","conditionDescriptionProgress","tag","goal","title","progress","imgUrl","onClick","translate","isInprogress","progressLabel","progressTagType","progressIconProps","position","iconName","iconColor","backgroundColor","size","faSize","wrapperSize","customStyle","padding","certificationIcon","createElement","className","container","top","right","icon","imageSection","imageContainer","src","detailWrapper","titleWrapper","moduleCount","dangerouslySetInnerHTML","__html","customProgressBar","cm_positive_500","displayInfo","value","max","contextTypes","childContextTypes","propTypes","process","env","NODE_ENV","oneOf","isRequired","string","shape","condition","nbDone","number","func"],"sources":["../../../src/molecule/certification-card/index.js"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport {COLORS} from '../../variables/colors';\nimport Provider from '../../atom/provider';\nimport Tag from '../../atom/tag';\nimport ProgressBar from '../progress-bar';\nimport style from './style.css';\n\nconst CertificationCard = (props, context) => {\n const {\n type,\n label,\n locales: {conditionDescriptionProgress, tag},\n goal: {title},\n progress,\n imgUrl,\n onClick\n } = props;\n if (type !== 'certification') return null;\n const {translate} = context;\n const isInprogress = progress < 100;\n const progressLabel = isInprogress ? translate('in_progress') : translate('completed');\n const progressTagType = isInprogress ? 'progress' : 'success';\n\n const progressIconProps = {\n position: 'left',\n iconName: isInprogress ? 'clock' : 'circle-check',\n iconColor: isInprogress ? '#B87A00' : '#05944F',\n backgroundColor: isInprogress ? '#FFEECC' : '#D6F5E5',\n size: {\n faSize: 10,\n wrapperSize: 10\n },\n customStyle: {padding: 0}\n };\n const certificationIcon = {iconName: 'wreath-laurel'};\n return (\n <div className={style.container} data-name={`certification-card-${label}`} onClick={onClick}>\n {progress > 0 ? (\n <Tag\n label={progressLabel}\n type={progressTagType}\n customStyle={{position: 'absolute', top: '12px', right: '12px'}}\n icon={progressIconProps}\n />\n ) : null}\n <div className={style.imageSection}>\n <div className={style.imageContainer}>\n <img src={imgUrl} />\n </div>\n </div>\n <div className={style.detailWrapper}>\n <div className={style.titleWrapper}>\n <Tag label={tag} size=\"S\" icon={certificationIcon} />\n <div className={style.title} data-name=\"certification-title\">\n {title}\n </div>\n <div\n className={style.moduleCount}\n // eslint-disable-next-line react/no-danger\n dangerouslySetInnerHTML={{__html: conditionDescriptionProgress}}\n />\n </div>\n <ProgressBar\n className={style.customProgressBar}\n style={{backgroundColor: COLORS.cm_positive_500}}\n displayInfo={false}\n value={progress}\n max={100}\n />\n </div>\n </div>\n );\n};\n\nCertificationCard.contextTypes = {\n translate: Provider.childContextTypes.translate\n};\n\nCertificationCard.propTypes = {\n type: PropTypes.oneOf(['certification']).isRequired,\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 tag: PropTypes.string\n })\n};\n\nexport default CertificationCard;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
min-width: 288px;
|
|
15
15
|
background-color: #FFF;
|
|
16
16
|
border: 2px solid #FFF;
|
|
17
|
-
box-shadow: 0px 4px
|
|
17
|
+
box-shadow: 0px 4px 16px 0px rgba(0, 0, 0, 0.04);
|
|
18
18
|
position: relative;
|
|
19
19
|
display: flex;
|
|
20
20
|
flex-direction: column;
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
.container:hover {
|
|
56
|
-
box-shadow: 0px 4px
|
|
56
|
+
box-shadow: 0px 4px 16px 0px rgba(0, 0, 0, 0.10);
|
|
57
57
|
|
|
58
58
|
.imageContainer {
|
|
59
59
|
width: 244px;
|
|
@@ -157,7 +157,7 @@ declare const propTypes: {
|
|
|
157
157
|
items: PropTypes.Requireable<PropTypes.InferProps<{
|
|
158
158
|
type: PropTypes.Requireable<string>;
|
|
159
159
|
list: PropTypes.Requireable<NonNullable<PropTypes.InferProps<{
|
|
160
|
-
list: PropTypes.Requireable<(PropTypes.
|
|
160
|
+
list: PropTypes.Requireable<((PropTypes.InferPropsInner<Pick<any, any>> & Partial<PropTypes.InferPropsInner<Pick<any, never>>>) | null | undefined)[]>;
|
|
161
161
|
customStyle: PropTypes.Requireable<{
|
|
162
162
|
[x: string]: string | null | undefined;
|
|
163
163
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/molecule/dashboard/cards-list/index.js"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/molecule/dashboard/cards-list/index.js"],"names":[],"mappings":";AA0FA;IACE;;;OAGG;IACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA2BE;IAEF;;;;;;;;;;;;;;;;;;;;;;;MAGE;IAEF,wBAkCC;IA/BC;;;;;;;;MAQC;IAED,0DAAgE;IAsHlE,qBAiBC;IAED,qBAGC;IAED,sBAGC;IAED,0BASC;IAvJC,uEAA6D;IAyJ/D,mCAIC;IA5DD,oCAMC;IAGD,sCAIC;IA5DD,qBAGC;IAnCD,0BAMC;IAED,2BAYC;IAED,6BAOC;IASD,wCAuCC;IAGC,kBAA2B;IA6D7B,sBA+GC;CACF"}
|
|
@@ -18,6 +18,9 @@ import { NovaSolidContentContentBook1 as LearnerIcon, NovaCompositionCoorpacadem
|
|
|
18
18
|
import Provider from '../../../atom/provider';
|
|
19
19
|
import Card, { cardPropTypes } from '../../card';
|
|
20
20
|
import LearningPriorityCard from '../../learning-priority-card';
|
|
21
|
+
import CertificationCard from '../../certification-card';
|
|
22
|
+
import LearnerSkillCard from '../../learner-skill-card';
|
|
23
|
+
import PlaylistCard from '../../playlist-card';
|
|
21
24
|
import Icon from '../../../atom/icon';
|
|
22
25
|
import style from './style.css';
|
|
23
26
|
const ShowMoreLink = props => {
|
|
@@ -283,12 +286,20 @@ class CardsList extends React.PureComponent {
|
|
|
283
286
|
const dark = _getOr('#90A4AE', 'common.dark', skin);
|
|
284
287
|
const titleStyle = onShowMore ? style.titleLink : style.title;
|
|
285
288
|
const cardsView = _pipe(_toPairs, _map(([key, card]) => {
|
|
289
|
+
let CardComponent = Card;
|
|
290
|
+
if (card && type === 'learningPrioritiesCards') {
|
|
291
|
+
CardComponent = LearningPriorityCard;
|
|
292
|
+
} else if (card && type === 'skills') {
|
|
293
|
+
CardComponent = LearnerSkillCard;
|
|
294
|
+
} else if (card && type === 'certifications') {
|
|
295
|
+
CardComponent = CertificationCard;
|
|
296
|
+
} else if (card && type === 'playlists') {
|
|
297
|
+
CardComponent = PlaylistCard;
|
|
298
|
+
}
|
|
286
299
|
return /*#__PURE__*/React.createElement("div", {
|
|
287
300
|
className: style.card,
|
|
288
301
|
key: key
|
|
289
|
-
},
|
|
290
|
-
dataName: `${dataName}-${key}`
|
|
291
|
-
})) : /*#__PURE__*/React.createElement(Card, _extends({}, card, {
|
|
302
|
+
}, /*#__PURE__*/React.createElement(CardComponent, _extends({}, card, {
|
|
292
303
|
dataName: `${dataName}-${key}`
|
|
293
304
|
})));
|
|
294
305
|
}))(cards);
|
|
@@ -365,7 +376,7 @@ CardsList.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
|
365
376
|
showMoreOnLeftAriaLabel: PropTypes.string,
|
|
366
377
|
showMoreOnRightAriaLabel: PropTypes.string
|
|
367
378
|
}),
|
|
368
|
-
type: PropTypes.oneOf(['cards', 'learningPrioritiesCards']),
|
|
379
|
+
type: PropTypes.oneOf(['cards', 'learningPrioritiesCards', 'skills', 'certifications', 'playlists']),
|
|
369
380
|
// eslint-disable-next-line react/forbid-prop-types
|
|
370
381
|
testingSizes: PropTypes.any
|
|
371
382
|
} : {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","PropTypes","NovaSolidContentContentBook1","LearnerIcon","NovaCompositionCoorpacademyTimer","TimerIcon","Provider","Card","cardPropTypes","LearningPriorityCard","Icon","style","ShowMoreLink","props","onShowMore","showMore","className","createElement","onClick","contextTypes","skin","childContextTypes","propTypes","process","env","NODE_ENV","func","string","IconView","context","contentType","ICONS","chapter","course","dark","_get","IconType","color","icon","computeWidth","card","type","nextPage","page","maxPages","CardsList","PureComponent","translate","constructor","state","actualPage","scrollLeft","offsetWidth","possiblePositions","possiblePages","cardsWidth","handleScroll_","_throttle","handleScroll","bind","handleOnLeft","handleOnRight","scrollTo","updateState","_debounce","updatePages","setCardsWrapper","getScrollWidth","handleResize","testingSizes","componentDidMount","cardsWrapper","addEventListener","window","componentDidUpdate","cards","newCardsWidth","_pipe","_map","_sum","updatePaginationState","setState","componentWillUnmount","removeEventListener","cancel","wrapperWidth","wrapperScrollLeft","cardWidths","_reduce","cardPositions","accWidth","cardWidth","_head","acc","pageIndex","accPageWidth","pageWidth","skip","_findIndex","position","_last","element","index","onScroll","leftBound","rightBound","leftIndex","rightIndex","_findLastIndex","limit","indexOfNextFirstCard","indexOf","nextPosition","render","title","customStyle","dataName","ariaLabel","_getOr","titleStyle","titleLink","cardsView","_toPairs","key","_extends","arrowIconProps","preset","borderRadius","showMoreOnLeftAriaLabel","arrows","arrowsWrapper","arrow","iconName","titleView","titleNode","hasPages","showMoreView","showMoreBar","switchPagesView","pagingWrapper","wrapper","list","header","ref","oneOfType","node","arrayOf","shape","objectOf","showMoreOnRightAriaLabel","oneOf","any"],"sources":["../../../../src/molecule/dashboard/cards-list/index.js"],"sourcesContent":["import React from 'react';\nimport {\n debounce,\n throttle,\n get,\n getOr,\n map,\n sum,\n last,\n pipe,\n toPairs,\n reduce,\n head,\n findIndex,\n findLastIndex\n} from 'lodash/fp';\nimport PropTypes from 'prop-types';\nimport {\n NovaSolidContentContentBook1 as LearnerIcon,\n NovaCompositionCoorpacademyTimer as TimerIcon\n} from '@coorpacademy/nova-icons';\nimport Provider from '../../../atom/provider';\nimport Card, {cardPropTypes} from '../../card';\nimport LearningPriorityCard from '../../learning-priority-card';\nimport Icon from '../../../atom/icon';\nimport style from './style.css';\n\nconst ShowMoreLink = props => {\n const {onShowMore, showMore, className} = props;\n return (\n <div className={className} onClick={onShowMore}>\n {showMore}\n </div>\n );\n};\n\nShowMoreLink.contextTypes = {\n skin: Provider.childContextTypes.skin\n};\n\nShowMoreLink.propTypes = {\n onShowMore: PropTypes.func,\n showMore: PropTypes.string,\n className: PropTypes.string\n};\n\nconst IconView = (props, context) => {\n const {skin} = context;\n const {contentType} = props;\n const ICONS = {\n chapter: TimerIcon,\n course: LearnerIcon\n };\n\n if (!contentType) {\n return null;\n }\n\n const dark = get('common.dark', skin);\n const IconType = ICONS[contentType];\n\n return (\n <div>\n <IconType style={{color: dark}} className={style.icon} data-contenttype={contentType} />\n </div>\n );\n};\n\nconst computeWidth = card => {\n switch (card && card.type) {\n case 'chapter':\n return 219;\n default:\n return 272;\n }\n};\n\nconst nextPage = (page, maxPages) => {\n if (page < 0) return maxPages;\n if (page > maxPages) return 0;\n return page;\n};\n\nIconView.propTypes = {\n contentType: PropTypes.string\n};\n\nclass CardsList extends React.PureComponent {\n /**\n * IMPORTANT: update prop-types.ts too, 1st a migration of tests\n * is intended, then, a TS + functional refactor is planned.\n */\n static propTypes = {\n contentType: PropTypes.string,\n dataName: PropTypes.string,\n title: PropTypes.oneOfType([PropTypes.node, PropTypes.string]),\n showMore: PropTypes.string,\n cards: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.shape(cardPropTypes),\n PropTypes.shape(LearningPriorityCard.propTypes)\n ])\n ),\n customStyle: PropTypes.objectOf(PropTypes.string),\n onScroll: PropTypes.func,\n onShowMore: PropTypes.func,\n 'arrows-aria-label': PropTypes.shape({\n showMoreOnLeftAriaLabel: PropTypes.string,\n showMoreOnRightAriaLabel: PropTypes.string\n }),\n type: PropTypes.oneOf(['cards', 'learningPrioritiesCards']),\n // eslint-disable-next-line react/forbid-prop-types\n testingSizes: PropTypes.any\n };\n\n static contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n actualPage: 0,\n maxPages: 0,\n scrollLeft: 0,\n offsetWidth: 0,\n possiblePositions: [],\n possiblePages: [],\n cardsWidth: 0\n };\n\n this.handleScroll_ = throttle(200, this.handleScroll.bind(this));\n this.handleScroll = this.handleScroll.bind(this);\n this.handleOnLeft = this.handleOnLeft.bind(this);\n this.handleOnRight = this.handleOnRight.bind(this);\n this.scrollTo = this.scrollTo.bind(this);\n this.updateState = debounce(200, this.updatePages.bind(this));\n this.updatePages = this.updatePages.bind(this);\n this.setCardsWrapper = this.setCardsWrapper.bind(this);\n this.getScrollWidth = this.getScrollWidth.bind(this);\n this.handleResize = this.handleResize.bind(this);\n\n // for testing purposes only - no other way to test this polluted component\n if (props.testingSizes) {\n const {offsetWidth, scrollLeft, maxPages, possiblePages, possiblePositions} =\n props.testingSizes;\n this.state.offsetWidth = offsetWidth;\n this.state.scrollLeft = scrollLeft;\n this.state.maxPages = maxPages;\n this.state.possiblePages = possiblePages;\n this.state.possiblePositions = possiblePositions;\n }\n }\n\n componentDidMount() {\n this.cardsWrapper.addEventListener('scroll', this.handleScroll_);\n\n if (window) {\n window.addEventListener('resize', this.handleResize);\n }\n }\n\n componentDidUpdate() {\n const {cards = []} = this.props;\n const {offsetWidth, cardsWidth} = this.state;\n const newCardsWidth = pipe(map(computeWidth), sum)(cards);\n\n if (newCardsWidth !== cardsWidth && offsetWidth !== 0) {\n this.updatePaginationState(cards);\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({\n cardsWidth: newCardsWidth\n });\n }\n }\n\n componentWillUnmount() {\n this.cardsWrapper.removeEventListener('scroll', this.handleScroll_);\n\n if (window) {\n window.removeEventListener('resize', this.handleResize);\n }\n this.updateState.cancel();\n }\n\n /* istanbul ignore next */\n handleResize() {\n const {cards = []} = this.props;\n this.updatePaginationState(cards);\n }\n\n /* istanbul ignore next */\n updatePaginationState(cards) {\n const {offsetWidth: wrapperWidth, scrollLeft: wrapperScrollLeft} = this.state;\n\n const cardWidths = map(computeWidth)(cards);\n\n const possiblePositions = pipe(\n reduce(\n ([cardPositions, accWidth], cardWidth) => [\n [...cardPositions, accWidth],\n cardWidth + accWidth\n ],\n [[], 0]\n ),\n head\n )(cardWidths);\n\n const possiblePages = pipe(\n reduce(\n ([acc, pageIndex, accPageWidth], cardWidth) => {\n const pageWidth = accPageWidth + cardWidth;\n if (pageWidth > wrapperWidth) {\n return [[...acc, pageIndex + 1], pageIndex + 1, cardWidth];\n }\n return [[...acc, pageIndex], pageIndex, pageWidth];\n },\n [[], 0, 0]\n ),\n head\n )(cardWidths);\n\n const skip = findIndex(position => position >= wrapperScrollLeft, possiblePositions);\n const actualPage = possiblePages[skip + 1];\n\n this.setState({\n possiblePositions,\n possiblePages,\n maxPages: last(possiblePages),\n actualPage\n });\n }\n\n setCardsWrapper(element) {\n this.cardsWrapper = element;\n this.setState({\n scrollLeft: this.cardsWrapper?.scrollLeft,\n offsetWidth: this.cardsWrapper?.offsetWidth\n });\n }\n\n /* istanbul ignore next */\n getScrollWidth(index) {\n const {cards = []} = this.props;\n const card = cards[index];\n return computeWidth(card);\n }\n\n /* istanbul ignore next */\n handleScroll() {\n const scrollLeft = this.cardsWrapper?.scrollLeft;\n this.setState({scrollLeft});\n\n const {possiblePositions, offsetWidth} = this.state;\n const {onScroll} = this.props;\n if (onScroll) {\n const leftBound = scrollLeft;\n const rightBound = scrollLeft + offsetWidth;\n\n const leftIndex = findIndex(position => position > leftBound, possiblePositions) - 1;\n const rightIndex = findLastIndex(position => position < rightBound, possiblePositions);\n const skip = leftIndex;\n const limit = rightIndex - skip + 1;\n\n onScroll(skip, limit);\n }\n }\n\n handleOnLeft() {\n const {actualPage, maxPages} = this.state;\n this.scrollTo(nextPage(actualPage - 1, maxPages));\n }\n\n handleOnRight() {\n const {actualPage, maxPages} = this.state;\n this.scrollTo(nextPage(actualPage + 1, maxPages));\n }\n\n scrollTo(page) {\n const {possiblePages, possiblePositions} = this.state;\n const indexOfNextFirstCard = possiblePages.indexOf(page);\n const nextPosition = possiblePositions[indexOfNextFirstCard];\n this.cardsWrapper.scrollLeft = nextPosition;\n this.updatePages(page);\n this.setState({\n scrollLeft: nextPosition\n });\n }\n\n updatePages(actualPage) {\n this.setState({\n actualPage\n });\n }\n\n render() {\n const {\n title,\n showMore,\n cards,\n customStyle = {},\n onShowMore,\n dataName,\n contentType,\n 'arrows-aria-label': ariaLabel = {},\n type\n } = this.props;\n const {skin} = this.context;\n const {maxPages} = this.state;\n const dark = getOr('#90A4AE', 'common.dark', skin);\n const titleStyle = onShowMore ? style.titleLink : style.title;\n const cardsView = pipe(\n toPairs,\n map(([key, card]) => {\n return (\n <div className={style.card} key={key}>\n {card && type === 'learningPrioritiesCards' ? (\n <LearningPriorityCard {...card} dataName={`${dataName}-${key}`} />\n ) : (\n <Card {...card} dataName={`${dataName}-${key}`} />\n )}\n </div>\n );\n })\n )(cards);\n\n const arrowIconProps = {\n color: dark,\n preset: 's',\n borderRadius: '8px',\n ariaLabel: ariaLabel.showMoreOnLeftAriaLabel\n };\n\n const arrows = (\n <div className={style.arrowsWrapper}>\n <div className={style.arrow} onClick={this.handleOnLeft} data-name=\"card-list-left-arrow\">\n <Icon {...arrowIconProps} iconName=\"arrow-left\" />\n </div>\n <div className={style.arrow} onClick={this.handleOnRight} data-name=\"card-list-right-arrow\">\n <Icon {...arrowIconProps} iconName=\"arrow-right\" />\n </div>\n </div>\n );\n\n const titleView =\n typeof title === 'string' ? (\n <span data-name=\"title\" className={titleStyle} onClick={onShowMore}>\n <IconView contentType={contentType} />\n <span>{title}</span>\n </span>\n ) : (\n <span className={style.titleNode}>{title}</span>\n );\n\n const hasPages = maxPages > 0;\n const showMoreView =\n hasPages && showMore && onShowMore ? (\n <ShowMoreLink\n className={hasPages ? style.showMoreBar : style.showMore}\n onShowMore={onShowMore}\n showMore={showMore}\n />\n ) : null;\n\n const switchPagesView = hasPages ? (\n <div className={style.pagingWrapper}>\n {showMoreView}\n {arrows}\n </div>\n ) : null;\n\n return (\n <div\n className={style.wrapper}\n style={customStyle}\n data-name=\"cardsList\"\n data-max-pages={`${maxPages}`}\n // eslint-disable-next-line react/destructuring-assignment\n data-actual-page={`${this.state.actualPage}`}\n data-scroll-left={this.cardsWrapper?.scrollLeft}\n >\n <div className={style.list}>\n <div>\n <div data-name=\"header\" className={style.header}>\n {titleView}\n {switchPagesView}\n </div>\n <div\n className={style.cards}\n data-testid=\"cards-view-wrapper\"\n ref={this.setCardsWrapper}\n >\n {cardsView}\n </div>\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default CardsList;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","PropTypes","NovaSolidContentContentBook1","LearnerIcon","NovaCompositionCoorpacademyTimer","TimerIcon","Provider","Card","cardPropTypes","LearningPriorityCard","CertificationCard","LearnerSkillCard","PlaylistCard","Icon","style","ShowMoreLink","props","onShowMore","showMore","className","createElement","onClick","contextTypes","skin","childContextTypes","propTypes","process","env","NODE_ENV","func","string","IconView","context","contentType","ICONS","chapter","course","dark","_get","IconType","color","icon","computeWidth","card","type","nextPage","page","maxPages","CardsList","PureComponent","translate","constructor","state","actualPage","scrollLeft","offsetWidth","possiblePositions","possiblePages","cardsWidth","handleScroll_","_throttle","handleScroll","bind","handleOnLeft","handleOnRight","scrollTo","updateState","_debounce","updatePages","setCardsWrapper","getScrollWidth","handleResize","testingSizes","componentDidMount","cardsWrapper","addEventListener","window","componentDidUpdate","cards","newCardsWidth","_pipe","_map","_sum","updatePaginationState","setState","componentWillUnmount","removeEventListener","cancel","wrapperWidth","wrapperScrollLeft","cardWidths","_reduce","cardPositions","accWidth","cardWidth","_head","acc","pageIndex","accPageWidth","pageWidth","skip","_findIndex","position","_last","element","index","onScroll","leftBound","rightBound","leftIndex","rightIndex","_findLastIndex","limit","indexOfNextFirstCard","indexOf","nextPosition","render","title","customStyle","dataName","ariaLabel","_getOr","titleStyle","titleLink","cardsView","_toPairs","key","CardComponent","_extends","arrowIconProps","preset","borderRadius","showMoreOnLeftAriaLabel","arrows","arrowsWrapper","arrow","iconName","titleView","titleNode","hasPages","showMoreView","showMoreBar","switchPagesView","pagingWrapper","wrapper","list","header","ref","oneOfType","node","arrayOf","shape","objectOf","showMoreOnRightAriaLabel","oneOf","any"],"sources":["../../../../src/molecule/dashboard/cards-list/index.js"],"sourcesContent":["import React from 'react';\nimport {\n debounce,\n throttle,\n get,\n getOr,\n map,\n sum,\n last,\n pipe,\n toPairs,\n reduce,\n head,\n findIndex,\n findLastIndex\n} from 'lodash/fp';\nimport PropTypes from 'prop-types';\nimport {\n NovaSolidContentContentBook1 as LearnerIcon,\n NovaCompositionCoorpacademyTimer as TimerIcon\n} from '@coorpacademy/nova-icons';\nimport Provider from '../../../atom/provider';\nimport Card, {cardPropTypes} from '../../card';\nimport LearningPriorityCard from '../../learning-priority-card';\nimport CertificationCard from '../../certification-card';\nimport LearnerSkillCard from '../../learner-skill-card';\nimport PlaylistCard from '../../playlist-card';\nimport Icon from '../../../atom/icon';\nimport style from './style.css';\n\nconst ShowMoreLink = props => {\n const {onShowMore, showMore, className} = props;\n return (\n <div className={className} onClick={onShowMore}>\n {showMore}\n </div>\n );\n};\n\nShowMoreLink.contextTypes = {\n skin: Provider.childContextTypes.skin\n};\n\nShowMoreLink.propTypes = {\n onShowMore: PropTypes.func,\n showMore: PropTypes.string,\n className: PropTypes.string\n};\n\nconst IconView = (props, context) => {\n const {skin} = context;\n const {contentType} = props;\n const ICONS = {\n chapter: TimerIcon,\n course: LearnerIcon\n };\n\n if (!contentType) {\n return null;\n }\n\n const dark = get('common.dark', skin);\n const IconType = ICONS[contentType];\n\n return (\n <div>\n <IconType style={{color: dark}} className={style.icon} data-contenttype={contentType} />\n </div>\n );\n};\n\nconst computeWidth = card => {\n switch (card && card.type) {\n case 'chapter':\n return 219;\n default:\n return 272;\n }\n};\n\nconst nextPage = (page, maxPages) => {\n if (page < 0) return maxPages;\n if (page > maxPages) return 0;\n return page;\n};\n\nIconView.propTypes = {\n contentType: PropTypes.string\n};\n\nclass CardsList extends React.PureComponent {\n /**\n * IMPORTANT: update prop-types.ts too, 1st a migration of tests\n * is intended, then, a TS + functional refactor is planned.\n */\n static propTypes = {\n contentType: PropTypes.string,\n dataName: PropTypes.string,\n title: PropTypes.oneOfType([PropTypes.node, PropTypes.string]),\n showMore: PropTypes.string,\n cards: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.shape(cardPropTypes),\n PropTypes.shape(LearningPriorityCard.propTypes)\n ])\n ),\n customStyle: PropTypes.objectOf(PropTypes.string),\n onScroll: PropTypes.func,\n onShowMore: PropTypes.func,\n 'arrows-aria-label': PropTypes.shape({\n showMoreOnLeftAriaLabel: PropTypes.string,\n showMoreOnRightAriaLabel: PropTypes.string\n }),\n type: PropTypes.oneOf([\n 'cards',\n 'learningPrioritiesCards',\n 'skills',\n 'certifications',\n 'playlists'\n ]),\n // eslint-disable-next-line react/forbid-prop-types\n testingSizes: PropTypes.any\n };\n\n static contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n actualPage: 0,\n maxPages: 0,\n scrollLeft: 0,\n offsetWidth: 0,\n possiblePositions: [],\n possiblePages: [],\n cardsWidth: 0\n };\n\n this.handleScroll_ = throttle(200, this.handleScroll.bind(this));\n this.handleScroll = this.handleScroll.bind(this);\n this.handleOnLeft = this.handleOnLeft.bind(this);\n this.handleOnRight = this.handleOnRight.bind(this);\n this.scrollTo = this.scrollTo.bind(this);\n this.updateState = debounce(200, this.updatePages.bind(this));\n this.updatePages = this.updatePages.bind(this);\n this.setCardsWrapper = this.setCardsWrapper.bind(this);\n this.getScrollWidth = this.getScrollWidth.bind(this);\n this.handleResize = this.handleResize.bind(this);\n\n // for testing purposes only - no other way to test this polluted component\n if (props.testingSizes) {\n const {offsetWidth, scrollLeft, maxPages, possiblePages, possiblePositions} =\n props.testingSizes;\n this.state.offsetWidth = offsetWidth;\n this.state.scrollLeft = scrollLeft;\n this.state.maxPages = maxPages;\n this.state.possiblePages = possiblePages;\n this.state.possiblePositions = possiblePositions;\n }\n }\n\n componentDidMount() {\n this.cardsWrapper.addEventListener('scroll', this.handleScroll_);\n\n if (window) {\n window.addEventListener('resize', this.handleResize);\n }\n }\n\n componentDidUpdate() {\n const {cards = []} = this.props;\n const {offsetWidth, cardsWidth} = this.state;\n const newCardsWidth = pipe(map(computeWidth), sum)(cards);\n\n if (newCardsWidth !== cardsWidth && offsetWidth !== 0) {\n this.updatePaginationState(cards);\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({\n cardsWidth: newCardsWidth\n });\n }\n }\n\n componentWillUnmount() {\n this.cardsWrapper.removeEventListener('scroll', this.handleScroll_);\n\n if (window) {\n window.removeEventListener('resize', this.handleResize);\n }\n this.updateState.cancel();\n }\n\n /* istanbul ignore next */\n handleResize() {\n const {cards = []} = this.props;\n this.updatePaginationState(cards);\n }\n\n /* istanbul ignore next */\n updatePaginationState(cards) {\n const {offsetWidth: wrapperWidth, scrollLeft: wrapperScrollLeft} = this.state;\n\n const cardWidths = map(computeWidth)(cards);\n\n const possiblePositions = pipe(\n reduce(\n ([cardPositions, accWidth], cardWidth) => [\n [...cardPositions, accWidth],\n cardWidth + accWidth\n ],\n [[], 0]\n ),\n head\n )(cardWidths);\n\n const possiblePages = pipe(\n reduce(\n ([acc, pageIndex, accPageWidth], cardWidth) => {\n const pageWidth = accPageWidth + cardWidth;\n if (pageWidth > wrapperWidth) {\n return [[...acc, pageIndex + 1], pageIndex + 1, cardWidth];\n }\n return [[...acc, pageIndex], pageIndex, pageWidth];\n },\n [[], 0, 0]\n ),\n head\n )(cardWidths);\n\n const skip = findIndex(position => position >= wrapperScrollLeft, possiblePositions);\n const actualPage = possiblePages[skip + 1];\n\n this.setState({\n possiblePositions,\n possiblePages,\n maxPages: last(possiblePages),\n actualPage\n });\n }\n\n setCardsWrapper(element) {\n this.cardsWrapper = element;\n this.setState({\n scrollLeft: this.cardsWrapper?.scrollLeft,\n offsetWidth: this.cardsWrapper?.offsetWidth\n });\n }\n\n /* istanbul ignore next */\n getScrollWidth(index) {\n const {cards = []} = this.props;\n const card = cards[index];\n return computeWidth(card);\n }\n\n /* istanbul ignore next */\n handleScroll() {\n const scrollLeft = this.cardsWrapper?.scrollLeft;\n this.setState({scrollLeft});\n\n const {possiblePositions, offsetWidth} = this.state;\n const {onScroll} = this.props;\n if (onScroll) {\n const leftBound = scrollLeft;\n const rightBound = scrollLeft + offsetWidth;\n\n const leftIndex = findIndex(position => position > leftBound, possiblePositions) - 1;\n const rightIndex = findLastIndex(position => position < rightBound, possiblePositions);\n const skip = leftIndex;\n const limit = rightIndex - skip + 1;\n\n onScroll(skip, limit);\n }\n }\n\n handleOnLeft() {\n const {actualPage, maxPages} = this.state;\n this.scrollTo(nextPage(actualPage - 1, maxPages));\n }\n\n handleOnRight() {\n const {actualPage, maxPages} = this.state;\n this.scrollTo(nextPage(actualPage + 1, maxPages));\n }\n\n scrollTo(page) {\n const {possiblePages, possiblePositions} = this.state;\n const indexOfNextFirstCard = possiblePages.indexOf(page);\n const nextPosition = possiblePositions[indexOfNextFirstCard];\n this.cardsWrapper.scrollLeft = nextPosition;\n this.updatePages(page);\n this.setState({\n scrollLeft: nextPosition\n });\n }\n\n updatePages(actualPage) {\n this.setState({\n actualPage\n });\n }\n\n render() {\n const {\n title,\n showMore,\n cards,\n customStyle = {},\n onShowMore,\n dataName,\n contentType,\n 'arrows-aria-label': ariaLabel = {},\n type\n } = this.props;\n const {skin} = this.context;\n const {maxPages} = this.state;\n const dark = getOr('#90A4AE', 'common.dark', skin);\n const titleStyle = onShowMore ? style.titleLink : style.title;\n const cardsView = pipe(\n toPairs,\n map(([key, card]) => {\n let CardComponent = Card;\n\n if (card && type === 'learningPrioritiesCards') {\n CardComponent = LearningPriorityCard;\n } else if (card && type === 'skills') {\n CardComponent = LearnerSkillCard;\n } else if (card && type === 'certifications') {\n CardComponent = CertificationCard;\n } else if (card && type === 'playlists') {\n CardComponent = PlaylistCard;\n }\n\n return (\n <div className={style.card} key={key}>\n <CardComponent {...card} dataName={`${dataName}-${key}`} />\n </div>\n );\n })\n )(cards);\n\n const arrowIconProps = {\n color: dark,\n preset: 's',\n borderRadius: '8px',\n ariaLabel: ariaLabel.showMoreOnLeftAriaLabel\n };\n\n const arrows = (\n <div className={style.arrowsWrapper}>\n <div className={style.arrow} onClick={this.handleOnLeft} data-name=\"card-list-left-arrow\">\n <Icon {...arrowIconProps} iconName=\"arrow-left\" />\n </div>\n <div className={style.arrow} onClick={this.handleOnRight} data-name=\"card-list-right-arrow\">\n <Icon {...arrowIconProps} iconName=\"arrow-right\" />\n </div>\n </div>\n );\n\n const titleView =\n typeof title === 'string' ? (\n <span data-name=\"title\" className={titleStyle} onClick={onShowMore}>\n <IconView contentType={contentType} />\n <span>{title}</span>\n </span>\n ) : (\n <span className={style.titleNode}>{title}</span>\n );\n\n const hasPages = maxPages > 0;\n const showMoreView =\n hasPages && showMore && onShowMore ? (\n <ShowMoreLink\n className={hasPages ? style.showMoreBar : style.showMore}\n onShowMore={onShowMore}\n showMore={showMore}\n />\n ) : null;\n\n const switchPagesView = hasPages ? (\n <div className={style.pagingWrapper}>\n {showMoreView}\n {arrows}\n </div>\n ) : null;\n\n return (\n <div\n className={style.wrapper}\n style={customStyle}\n data-name=\"cardsList\"\n data-max-pages={`${maxPages}`}\n // eslint-disable-next-line react/destructuring-assignment\n data-actual-page={`${this.state.actualPage}`}\n data-scroll-left={this.cardsWrapper?.scrollLeft}\n >\n <div className={style.list}>\n <div>\n <div data-name=\"header\" className={style.header}>\n {titleView}\n {switchPagesView}\n </div>\n <div\n className={style.cards}\n data-testid=\"cards-view-wrapper\"\n ref={this.setCardsWrapper}\n >\n {cardsView}\n </div>\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default CardsList;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,29 +1,28 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
metrics:
|
|
17
|
-
content:
|
|
18
|
-
|
|
19
|
-
questionsToReview: import("prop-types").Requireable<number>;
|
|
1
|
+
export function updateBackgroundImage(ref: any, background: any): void;
|
|
2
|
+
export default LearnerSkillCard;
|
|
3
|
+
declare function LearnerSkillCard(props: any, context: any): JSX.Element;
|
|
4
|
+
declare namespace LearnerSkillCard {
|
|
5
|
+
namespace contextTypes {
|
|
6
|
+
const translate: PropTypes.Requireable<(...args: any[]) => any>;
|
|
7
|
+
}
|
|
8
|
+
const propTypes: {
|
|
9
|
+
type: PropTypes.Validator<string>;
|
|
10
|
+
title: PropTypes.Validator<string>;
|
|
11
|
+
label: PropTypes.Requireable<string>;
|
|
12
|
+
'aria-label': PropTypes.Requireable<string>;
|
|
13
|
+
cardIndex: PropTypes.Requireable<number>;
|
|
14
|
+
focus: PropTypes.Requireable<boolean>;
|
|
15
|
+
progress: PropTypes.Requireable<number>;
|
|
16
|
+
metrics: PropTypes.Requireable<PropTypes.InferProps<{
|
|
17
|
+
content: PropTypes.Requireable<number>;
|
|
18
|
+
questionsToReview: PropTypes.Requireable<number>;
|
|
20
19
|
}>>;
|
|
21
|
-
icon:
|
|
22
|
-
color:
|
|
23
|
-
name:
|
|
20
|
+
icon: PropTypes.Requireable<PropTypes.InferProps<{
|
|
21
|
+
color: PropTypes.Requireable<string>;
|
|
22
|
+
name: PropTypes.Requireable<string>;
|
|
24
23
|
}>>;
|
|
25
|
-
|
|
24
|
+
onClick: PropTypes.Requireable<(...args: any[]) => any>;
|
|
26
25
|
};
|
|
27
|
-
}
|
|
28
|
-
|
|
26
|
+
}
|
|
27
|
+
import PropTypes from "prop-types";
|
|
29
28
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule/learner-skill-card/index.
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule/learner-skill-card/index.js"],"names":[],"mappings":"AAWO,uEAIN;;AACD,yEAsIC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import React, { useCallback, useMemo, useRef } from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
2
3
|
import Provider, { GetTranslateFromContext } from '../../atom/provider';
|
|
3
4
|
import ProgressBar from '../progress-bar';
|
|
4
5
|
import { COLORS } from '../../variables/colors';
|
|
5
6
|
import { createGradientBackground } from '../../util/get-background-gradient-color';
|
|
6
7
|
import FaIcon from '../../atom/icon';
|
|
7
|
-
import propTypes from './prop-types';
|
|
8
8
|
import style from './style.css';
|
|
9
9
|
const MAX_SCORE = 100;
|
|
10
10
|
export const updateBackgroundImage = (ref, background) => {
|
|
@@ -16,15 +16,15 @@ const LearnerSkillCard = (props, context) => {
|
|
|
16
16
|
const {
|
|
17
17
|
'aria-label': ariaLabel,
|
|
18
18
|
cardIndex,
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
title,
|
|
20
|
+
label,
|
|
21
21
|
focus,
|
|
22
22
|
metrics,
|
|
23
|
+
progress = 0,
|
|
23
24
|
icon,
|
|
24
|
-
|
|
25
|
+
onClick
|
|
25
26
|
} = props;
|
|
26
27
|
const {
|
|
27
|
-
score,
|
|
28
28
|
content,
|
|
29
29
|
questionsToReview = 0
|
|
30
30
|
} = metrics;
|
|
@@ -33,7 +33,6 @@ const LearnerSkillCard = (props, context) => {
|
|
|
33
33
|
color,
|
|
34
34
|
name
|
|
35
35
|
} = icon;
|
|
36
|
-
const questionsLocale = translate('skill_chart_side_panel_questions_to_review');
|
|
37
36
|
const [badgeIconName, badgeLocale, tagTextColor, tagBackgroundColor] = focus ? ['bullseye-arrow', translate('skill_focus'), COLORS.purple_700, COLORS.purple_100] : ['shapes', translate('skill'), COLORS.neutral_500, COLORS.cm_grey_100];
|
|
38
37
|
const headerBackgroundRef = useRef(null);
|
|
39
38
|
const defaultBackground = useMemo(() => createGradientBackground(color, '93%', '100%'), [color]);
|
|
@@ -46,7 +45,8 @@ const LearnerSkillCard = (props, context) => {
|
|
|
46
45
|
}, [defaultBackground]);
|
|
47
46
|
return /*#__PURE__*/React.createElement("div", {
|
|
48
47
|
"data-testid": `learner-skill-card-wrapper-${cardIndex}`,
|
|
49
|
-
|
|
48
|
+
"data-name": `skill-card-${label}`,
|
|
49
|
+
onClick: onClick,
|
|
50
50
|
className: style.learnerSkillCardContainer,
|
|
51
51
|
"aria-label": ariaLabel,
|
|
52
52
|
onMouseEnter: handleMouseEnter,
|
|
@@ -100,12 +100,19 @@ const LearnerSkillCard = (props, context) => {
|
|
|
100
100
|
}, /*#__PURE__*/React.createElement("div", {
|
|
101
101
|
"data-name": "skill-card-title",
|
|
102
102
|
className: style.skillTitle,
|
|
103
|
-
"aria-label":
|
|
104
|
-
},
|
|
103
|
+
"aria-label": ariaLabel || title
|
|
104
|
+
}, title), /*#__PURE__*/React.createElement("div", {
|
|
105
105
|
className: style.contentAndQuestionsWrapper
|
|
106
106
|
}, /*#__PURE__*/React.createElement("div", {
|
|
107
107
|
"data-name": "learner-skill-card-skill-content-number"
|
|
108
|
-
|
|
108
|
+
// eslint-disable-next-line react/no-danger
|
|
109
|
+
,
|
|
110
|
+
dangerouslySetInnerHTML: {
|
|
111
|
+
__html: translate('content', {
|
|
112
|
+
count: content
|
|
113
|
+
})
|
|
114
|
+
}
|
|
115
|
+
}), questionsToReview ? /*#__PURE__*/React.createElement("div", {
|
|
109
116
|
className: style.skillInformation,
|
|
110
117
|
"data-name": "learner-skill-card-skill-questions-wrapper"
|
|
111
118
|
}, /*#__PURE__*/React.createElement(FaIcon, {
|
|
@@ -118,10 +125,17 @@ const LearnerSkillCard = (props, context) => {
|
|
|
118
125
|
}
|
|
119
126
|
}), /*#__PURE__*/React.createElement("span", {
|
|
120
127
|
"data-name": "learner-skill-card-questions-to-review"
|
|
121
|
-
|
|
128
|
+
// eslint-disable-next-line react/no-danger
|
|
129
|
+
,
|
|
130
|
+
dangerouslySetInnerHTML: {
|
|
131
|
+
__html: translate('skill_chart_side_panel_questions_to_review', {
|
|
132
|
+
count: questionsToReview
|
|
133
|
+
})
|
|
134
|
+
}
|
|
135
|
+
})) : null)))), /*#__PURE__*/React.createElement("div", {
|
|
122
136
|
className: style.progressInformations
|
|
123
137
|
}, /*#__PURE__*/React.createElement(ProgressBar, {
|
|
124
|
-
value:
|
|
138
|
+
value: progress,
|
|
125
139
|
displayInfo: false,
|
|
126
140
|
max: MAX_SCORE,
|
|
127
141
|
className: style.progressWrapper,
|
|
@@ -133,6 +147,23 @@ const LearnerSkillCard = (props, context) => {
|
|
|
133
147
|
LearnerSkillCard.contextTypes = {
|
|
134
148
|
translate: Provider.childContextTypes.translate
|
|
135
149
|
};
|
|
136
|
-
LearnerSkillCard.propTypes = process.env.NODE_ENV !== "production" ?
|
|
150
|
+
LearnerSkillCard.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
151
|
+
type: PropTypes.oneOf(['skill']).isRequired,
|
|
152
|
+
title: PropTypes.string.isRequired,
|
|
153
|
+
label: PropTypes.string,
|
|
154
|
+
'aria-label': PropTypes.string,
|
|
155
|
+
cardIndex: PropTypes.number,
|
|
156
|
+
focus: PropTypes.bool,
|
|
157
|
+
progress: PropTypes.number,
|
|
158
|
+
metrics: PropTypes.shape({
|
|
159
|
+
content: PropTypes.number,
|
|
160
|
+
questionsToReview: PropTypes.number
|
|
161
|
+
}),
|
|
162
|
+
icon: PropTypes.shape({
|
|
163
|
+
color: PropTypes.string,
|
|
164
|
+
name: PropTypes.string
|
|
165
|
+
}),
|
|
166
|
+
onClick: PropTypes.func
|
|
167
|
+
} : {};
|
|
137
168
|
export default LearnerSkillCard;
|
|
138
169
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","useCallback","useMemo","useRef","Provider","GetTranslateFromContext","ProgressBar","COLORS","createGradientBackground","FaIcon","propTypes","style","MAX_SCORE","updateBackgroundImage","ref","background","current","backgroundImage","LearnerSkillCard","props","context","ariaLabel","cardIndex","skillTitle","skillAriaLabel","focus","metrics","icon","onExploreClick","score","content","questionsToReview","translate","color","name","questionsLocale","badgeIconName","badgeLocale","tagTextColor","tagBackgroundColor","purple_700","purple_100","neutral_500","cm_grey_100","headerBackgroundRef","defaultBackground","focusBackground","handleMouseEnter","handleMouseLeave","createElement","onClick","className","learnerSkillCardContainer","onMouseEnter","onMouseLeave","iconHeaderWrapper","iconWrapper","iconName","iconColor","size","faSize","wrapperSize","borderRadius","gradientBackground","customStyle","border","learnerSkillCardContent","skillTitleWrapper","skillFocusBadge","backgroundColor","questionWrapper","contentAndQuestionsWrapper","skillInformation","cm_grey_400","progressInformations","value","displayInfo","max","progressWrapper","cm_positive_500","contextTypes","childContextTypes","process","env","NODE_ENV"],"sources":["../../../src/molecule/learner-skill-card/index.tsx"],"sourcesContent":["import React, {useCallback, useMemo, useRef} from 'react';\nimport Provider, {GetTranslateFromContext} from '../../atom/provider';\nimport {WebContextValues} from '../../atom/provider/web-context';\nimport ProgressBar from '../progress-bar';\nimport {COLORS} from '../../variables/colors';\nimport {createGradientBackground} from '../../util/get-background-gradient-color';\nimport FaIcon from '../../atom/icon';\nimport propTypes, {LearnerSkillCardProps} from './prop-types';\nimport style from './style.css';\n\nconst MAX_SCORE = 100;\n\nexport const updateBackgroundImage = (ref: React.RefObject<HTMLDivElement>, background: string) => {\n if (ref.current) {\n ref.current.style.backgroundImage = background;\n }\n};\n\nconst LearnerSkillCard = (props: LearnerSkillCardProps, context: WebContextValues) => {\n const {\n 'aria-label': ariaLabel,\n cardIndex,\n skillTitle,\n skillAriaLabel,\n focus,\n metrics,\n icon,\n onExploreClick\n } = props;\n const {score, content, questionsToReview = 0} = metrics;\n const translate = GetTranslateFromContext(context);\n const {color, name} = icon;\n const questionsLocale = translate('skill_chart_side_panel_questions_to_review') as string;\n const [badgeIconName, badgeLocale, tagTextColor, tagBackgroundColor] = focus\n ? ['bullseye-arrow', translate('skill_focus') as string, COLORS.purple_700, COLORS.purple_100]\n : ['shapes', translate('skill') as string, COLORS.neutral_500, COLORS.cm_grey_100];\n const headerBackgroundRef = useRef<HTMLDivElement | null>(null);\n const defaultBackground = useMemo(() => createGradientBackground(color, '93%', '100%'), [color]);\n const focusBackground = useMemo(() => createGradientBackground(color, '83%', '100%'), [color]);\n const handleMouseEnter = useCallback(() => {\n updateBackgroundImage(headerBackgroundRef, focusBackground);\n }, [focusBackground]);\n const handleMouseLeave = useCallback(() => {\n updateBackgroundImage(headerBackgroundRef, defaultBackground);\n }, [defaultBackground]);\n return (\n <div\n data-testid={`learner-skill-card-wrapper-${cardIndex}`}\n onClick={onExploreClick}\n className={style.learnerSkillCardContainer}\n aria-label={ariaLabel}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <div\n data-testid=\"learner-skill-card-icon-header-wrapper\"\n ref={headerBackgroundRef}\n className={style.iconHeaderWrapper}\n style={{backgroundImage: defaultBackground, color: tagTextColor}}\n >\n <div className={style.iconWrapper} data-testid=\"learner-skill-card-icon-wrapper\">\n <FaIcon\n {...{\n iconName: name,\n iconColor: color,\n size: {\n faSize: 20,\n wrapperSize: 44\n },\n borderRadius: '12px',\n gradientBackground: true,\n customStyle: {border: '4px solid white'}\n }}\n />\n </div>\n </div>\n <div className={style.learnerSkillCardContent}>\n <div className={style.skillTitleWrapper}>\n <div\n className={style.skillFocusBadge}\n style={{\n backgroundColor: tagBackgroundColor,\n color: tagTextColor\n }}\n >\n <FaIcon\n {...{\n iconName: badgeIconName,\n backgroundColor: tagBackgroundColor,\n size: {\n faSize: 10,\n wrapperSize: 16\n }\n }}\n />\n <span style={{color: tagTextColor}}>{badgeLocale}</span>\n </div>\n\n <div className={style.questionWrapper}>\n <div\n data-name=\"skill-card-title\"\n className={style.skillTitle}\n aria-label={skillAriaLabel || skillTitle}\n >\n {skillTitle}\n </div>\n <div className={style.contentAndQuestionsWrapper}>\n <div data-name=\"learner-skill-card-skill-content-number\">\n {content} {translate('content')}\n </div>\n {questionsToReview ? (\n <div\n className={style.skillInformation}\n data-name=\"learner-skill-card-skill-questions-wrapper\"\n >\n <FaIcon\n {...{\n iconName: 'circle',\n iconColor: COLORS.cm_grey_400,\n backgroundColor: 'transparent',\n size: {faSize: 4, wrapperSize: 0}\n }}\n />\n <span data-name=\"learner-skill-card-questions-to-review\">\n {questionsToReview}\n </span>\n {questionsLocale}\n </div>\n ) : null}\n </div>\n </div>\n </div>\n </div>\n <div className={style.progressInformations}>\n <ProgressBar\n value={score}\n displayInfo={false}\n max={MAX_SCORE}\n className={style.progressWrapper}\n style={{backgroundColor: COLORS.cm_positive_500}}\n />\n </div>\n </div>\n );\n};\n\nLearnerSkillCard.contextTypes = {\n translate: Provider.childContextTypes.translate\n};\n\nLearnerSkillCard.propTypes = propTypes;\n\nexport default LearnerSkillCard;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","useCallback","useMemo","useRef","PropTypes","Provider","GetTranslateFromContext","ProgressBar","COLORS","createGradientBackground","FaIcon","style","MAX_SCORE","updateBackgroundImage","ref","background","current","backgroundImage","LearnerSkillCard","props","context","ariaLabel","cardIndex","title","label","focus","metrics","progress","icon","onClick","content","questionsToReview","translate","color","name","badgeIconName","badgeLocale","tagTextColor","tagBackgroundColor","purple_700","purple_100","neutral_500","cm_grey_100","headerBackgroundRef","defaultBackground","focusBackground","handleMouseEnter","handleMouseLeave","createElement","className","learnerSkillCardContainer","onMouseEnter","onMouseLeave","iconHeaderWrapper","iconWrapper","iconName","iconColor","size","faSize","wrapperSize","borderRadius","gradientBackground","customStyle","border","learnerSkillCardContent","skillTitleWrapper","skillFocusBadge","backgroundColor","questionWrapper","skillTitle","contentAndQuestionsWrapper","dangerouslySetInnerHTML","__html","count","skillInformation","cm_grey_400","progressInformations","value","displayInfo","max","progressWrapper","cm_positive_500","contextTypes","childContextTypes","propTypes","process","env","NODE_ENV","type","oneOf","isRequired","string","number","bool","shape","func"],"sources":["../../../src/molecule/learner-skill-card/index.js"],"sourcesContent":["import React, {useCallback, useMemo, useRef} from 'react';\nimport PropTypes from 'prop-types';\nimport Provider, {GetTranslateFromContext} from '../../atom/provider';\nimport ProgressBar from '../progress-bar';\nimport {COLORS} from '../../variables/colors';\nimport {createGradientBackground} from '../../util/get-background-gradient-color';\nimport FaIcon from '../../atom/icon';\nimport style from './style.css';\n\nconst MAX_SCORE = 100;\n\nexport const updateBackgroundImage = (ref, background) => {\n if (ref.current) {\n ref.current.style.backgroundImage = background;\n }\n};\nconst LearnerSkillCard = (props, context) => {\n const {\n 'aria-label': ariaLabel,\n cardIndex,\n title,\n label,\n focus,\n metrics,\n progress = 0,\n icon,\n onClick\n } = props;\n const {content, questionsToReview = 0} = metrics;\n const translate = GetTranslateFromContext(context);\n const {color, name} = icon;\n const [badgeIconName, badgeLocale, tagTextColor, tagBackgroundColor] = focus\n ? ['bullseye-arrow', translate('skill_focus'), COLORS.purple_700, COLORS.purple_100]\n : ['shapes', translate('skill'), COLORS.neutral_500, COLORS.cm_grey_100];\n const headerBackgroundRef = useRef(null);\n const defaultBackground = useMemo(() => createGradientBackground(color, '93%', '100%'), [color]);\n const focusBackground = useMemo(() => createGradientBackground(color, '83%', '100%'), [color]);\n const handleMouseEnter = useCallback(() => {\n updateBackgroundImage(headerBackgroundRef, focusBackground);\n }, [focusBackground]);\n const handleMouseLeave = useCallback(() => {\n updateBackgroundImage(headerBackgroundRef, defaultBackground);\n }, [defaultBackground]);\n return (\n <div\n data-testid={`learner-skill-card-wrapper-${cardIndex}`}\n data-name={`skill-card-${label}`}\n onClick={onClick}\n className={style.learnerSkillCardContainer}\n aria-label={ariaLabel}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <div\n data-testid=\"learner-skill-card-icon-header-wrapper\"\n ref={headerBackgroundRef}\n className={style.iconHeaderWrapper}\n style={{backgroundImage: defaultBackground, color: tagTextColor}}\n >\n <div className={style.iconWrapper} data-testid=\"learner-skill-card-icon-wrapper\">\n <FaIcon\n {...{\n iconName: name,\n iconColor: color,\n size: {\n faSize: 20,\n wrapperSize: 44\n },\n borderRadius: '12px',\n gradientBackground: true,\n customStyle: {border: '4px solid white'}\n }}\n />\n </div>\n </div>\n <div className={style.learnerSkillCardContent}>\n <div className={style.skillTitleWrapper}>\n <div\n className={style.skillFocusBadge}\n style={{\n backgroundColor: tagBackgroundColor,\n color: tagTextColor\n }}\n >\n <FaIcon\n {...{\n iconName: badgeIconName,\n backgroundColor: tagBackgroundColor,\n size: {\n faSize: 10,\n wrapperSize: 16\n }\n }}\n />\n <span style={{color: tagTextColor}}>{badgeLocale}</span>\n </div>\n\n <div className={style.questionWrapper}>\n <div\n data-name=\"skill-card-title\"\n className={style.skillTitle}\n aria-label={ariaLabel || title}\n >\n {title}\n </div>\n <div className={style.contentAndQuestionsWrapper}>\n <div\n data-name=\"learner-skill-card-skill-content-number\"\n // eslint-disable-next-line react/no-danger\n dangerouslySetInnerHTML={{__html: translate('content', {count: content})}}\n />\n {questionsToReview ? (\n <div\n className={style.skillInformation}\n data-name=\"learner-skill-card-skill-questions-wrapper\"\n >\n <FaIcon\n {...{\n iconName: 'circle',\n iconColor: COLORS.cm_grey_400,\n backgroundColor: 'transparent',\n size: {faSize: 4, wrapperSize: 0}\n }}\n />\n <span\n data-name=\"learner-skill-card-questions-to-review\"\n // eslint-disable-next-line react/no-danger\n dangerouslySetInnerHTML={{\n __html: translate('skill_chart_side_panel_questions_to_review', {\n count: questionsToReview\n })\n }}\n />\n </div>\n ) : null}\n </div>\n </div>\n </div>\n </div>\n <div className={style.progressInformations}>\n <ProgressBar\n value={progress}\n displayInfo={false}\n max={MAX_SCORE}\n className={style.progressWrapper}\n style={{backgroundColor: COLORS.cm_positive_500}}\n />\n </div>\n </div>\n );\n};\n\nLearnerSkillCard.contextTypes = {\n translate: Provider.childContextTypes.translate\n};\n\nLearnerSkillCard.propTypes = {\n type: PropTypes.oneOf(['skill']).isRequired,\n title: PropTypes.string.isRequired,\n label: PropTypes.string,\n 'aria-label': PropTypes.string,\n cardIndex: PropTypes.number,\n focus: PropTypes.bool,\n progress: PropTypes.number,\n metrics: PropTypes.shape({\n content: PropTypes.number,\n questionsToReview: PropTypes.number\n }),\n icon: PropTypes.shape({\n color: PropTypes.string,\n name: PropTypes.string\n }),\n onClick: PropTypes.func\n};\nexport default LearnerSkillCard;\n"],"mappings":"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","ignoreList":[]}
|