@coorpacademy/components 11.9.1 → 11.9.2-alpha.1

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 (51) hide show
  1. package/es/atom/review-presentation/index.d.ts.map +1 -1
  2. package/es/atom/review-presentation/index.js +12 -62
  3. package/es/atom/review-presentation/index.js.map +1 -1
  4. package/es/atom/review-presentation/style.css +7 -67
  5. package/es/atom/tooltip/index.d.ts +22 -0
  6. package/es/atom/tooltip/index.d.ts.map +1 -0
  7. package/es/atom/tooltip/index.js +117 -0
  8. package/es/atom/tooltip/index.js.map +1 -0
  9. package/es/atom/tooltip/style.css +96 -0
  10. package/es/template/activity/engine-stars.css +16 -33
  11. package/es/template/activity/engine-stars.d.ts +15 -17
  12. package/es/template/activity/engine-stars.d.ts.map +1 -1
  13. package/es/template/activity/engine-stars.js +128 -115
  14. package/es/template/activity/engine-stars.js.map +1 -1
  15. package/es/template/activity/index.d.ts +1 -0
  16. package/es/template/activity/index.d.ts.map +1 -1
  17. package/es/template/activity/index.js +18 -9
  18. package/es/template/activity/index.js.map +1 -1
  19. package/es/template/activity/progression-item.js +1 -1
  20. package/es/template/activity/progression-item.js.map +1 -1
  21. package/es/template/activity/stars-summary.d.ts +1 -0
  22. package/es/template/activity/stars-summary.d.ts.map +1 -1
  23. package/es/template/activity/stars-summary.js +10 -5
  24. package/es/template/activity/stars-summary.js.map +1 -1
  25. package/lib/atom/review-presentation/index.d.ts.map +1 -1
  26. package/lib/atom/review-presentation/index.js +13 -66
  27. package/lib/atom/review-presentation/index.js.map +1 -1
  28. package/lib/atom/review-presentation/style.css +7 -67
  29. package/lib/atom/tooltip/index.d.ts +22 -0
  30. package/lib/atom/tooltip/index.d.ts.map +1 -0
  31. package/lib/atom/tooltip/index.js +137 -0
  32. package/lib/atom/tooltip/index.js.map +1 -0
  33. package/lib/atom/tooltip/style.css +96 -0
  34. package/lib/template/activity/engine-stars.css +16 -33
  35. package/lib/template/activity/engine-stars.d.ts +15 -17
  36. package/lib/template/activity/engine-stars.d.ts.map +1 -1
  37. package/lib/template/activity/engine-stars.js +135 -116
  38. package/lib/template/activity/engine-stars.js.map +1 -1
  39. package/lib/template/activity/index.d.ts +1 -0
  40. package/lib/template/activity/index.d.ts.map +1 -1
  41. package/lib/template/activity/index.js +21 -9
  42. package/lib/template/activity/index.js.map +1 -1
  43. package/lib/template/activity/progression-item.js +1 -1
  44. package/lib/template/activity/progression-item.js.map +1 -1
  45. package/lib/template/activity/stars-summary.d.ts +1 -0
  46. package/lib/template/activity/stars-summary.d.ts.map +1 -1
  47. package/lib/template/activity/stars-summary.js +10 -5
  48. package/lib/template/activity/stars-summary.js.map +1 -1
  49. package/locales/en/global.json +1 -0
  50. package/package.json +4 -3
  51. package/locales/.mtslconfig.json +0 -1
@@ -1,11 +1,15 @@
1
1
  import _noop from "lodash/fp/noop";
2
2
  import _get from "lodash/fp/get";
3
+
4
+ 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); }
5
+
3
6
  import classnames from 'classnames';
4
- import React from 'react';
5
- import ReactTooltip from 'react-tooltip';
7
+ import React, { useCallback, useMemo, useState, useRef } from 'react';
6
8
  import PropTypes from 'prop-types';
9
+ import { v5 as uuidV5 } from 'uuid';
7
10
  import { NovaCompositionCoorpacademyStar as StarIcon, NovaCompositionCoorpacademyTimer as TimerIcon, NovaCompositionCoorpacademyBolt as BoltIcon, NovaSolidSchoolScienceGraduationHat as CertificationIcon, NovaSolidContentContentBook1 as LearnerIcon, NovaSolidVoteRewardsRewardsBadge1 as BonusIcon, NovaCompositionCoorpacademyScorm as ScormIcon, NovaCompositionCoorpacademyArticle as ArticleIcon, NovaCompositionCoorpacademyVideo as VideoIcon, NovaCompositionCoorpacademyMicrophone as PodcastIcon, NovaCompositionCoorpacademyRevision as RevisionIcon } from '@coorpacademy/nova-icons';
8
- import Provider from '../../atom/provider';
11
+ import Provider, { GetSkinFromContext, GetTranslateFromContext } from '../../atom/provider';
12
+ import ToolTip, { toggleStateOnKeyPress } from '../../atom/tooltip';
9
13
  import Link from '../../atom/link';
10
14
  import style from './engine-stars.css';
11
15
  const ICONS = {
@@ -21,131 +25,136 @@ const ICONS = {
21
25
  review: RevisionIcon
22
26
  };
23
27
 
24
- const ToolTip = ({
25
- toolTip,
26
- id
27
- }, context) => {
28
- if (!toolTip) {
29
- return null;
28
+ const ToolTipContent = ({
29
+ preMessage,
30
+ linkMessage,
31
+ endMessage,
32
+ onClick,
33
+ color,
34
+ handleContentMouseOver
35
+ }) => /*#__PURE__*/React.createElement("p", {
36
+ className: style.toolTipContent,
37
+ onMouseOver: handleContentMouseOver,
38
+ "data-testid": "react-tooltip-content"
39
+ }, /*#__PURE__*/React.createElement("span", null, preMessage), /*#__PURE__*/React.createElement(Link, {
40
+ onClick: onClick,
41
+ style: {
42
+ color
30
43
  }
44
+ }, linkMessage), /*#__PURE__*/React.createElement("span", null, endMessage));
31
45
 
32
- const {
33
- skin
34
- } = context;
35
- const {
36
- preMessage,
37
- endMessage,
38
- linkMessage,
39
- onClick
40
- } = toolTip;
41
-
42
- const primary = _get('common.primary', skin);
43
-
44
- const handleClick = onClick;
45
- return /*#__PURE__*/React.createElement(ReactTooltip, {
46
- id: id,
47
- className: style.toolTip,
48
- "data-event-off": "click",
49
- place: "left",
50
- effect: "solid",
51
- delayHide: 500
52
- }, /*#__PURE__*/React.createElement("p", {
53
- className: style.toolTipContent
54
- }, /*#__PURE__*/React.createElement("span", null, `${preMessage}`), /*#__PURE__*/React.createElement(Link, {
55
- onClick: handleClick,
56
- style: {
57
- color: primary
58
- }
59
- }, `${linkMessage}`), /*#__PURE__*/React.createElement("span", null, `${endMessage}`)));
60
- };
61
-
62
- ToolTip.contextTypes = {
63
- skin: Provider.childContextTypes.skin
64
- };
65
- ToolTip.propTypes = process.env.NODE_ENV !== "production" ? {
66
- toolTip: PropTypes.shape({
67
- preMessage: PropTypes.string,
68
- linkMessage: PropTypes.string,
69
- endMessage: PropTypes.string,
70
- onClick: PropTypes.func
71
- }),
72
- id: PropTypes.string.isRequired
46
+ ToolTipContent.propTypes = process.env.NODE_ENV !== "production" ? {
47
+ preMessage: PropTypes.string,
48
+ linkMessage: PropTypes.string,
49
+ endMessage: PropTypes.string,
50
+ color: PropTypes.string,
51
+ onClick: PropTypes.func,
52
+ handleContentMouseOver: PropTypes.func
73
53
  } : {};
74
54
 
75
- class EngineStars extends React.Component {
76
- constructor(props, context) {
77
- super(props, context);
55
+ const EngineStars = (props, legacyContext) => {
56
+ const skin = GetSkinFromContext(legacyContext);
57
+ const translate = GetTranslateFromContext(legacyContext);
58
+ const {
59
+ toolTip = null,
60
+ disabled,
61
+ type,
62
+ stars,
63
+ title,
64
+ active = false,
65
+ onClick = _noop,
66
+ className
67
+ } = props;
78
68
 
79
- this.handleClick = e => {
80
- e.stopPropagation();
81
- e.preventDefault();
82
- const {
83
- onClick
84
- } = this.props;
85
- onClick && onClick(e);
86
- };
69
+ const handleClick = e => {
70
+ e.stopPropagation();
71
+ e.preventDefault();
72
+ onClick(e);
73
+ };
87
74
 
88
- this.handleClick = this.handleClick.bind(this);
89
- }
75
+ const dark = _get('common.dark', skin);
90
76
 
91
- render() {
92
- const {
93
- skin
94
- } = this.context;
95
- const {
96
- disabled,
97
- type,
98
- stars,
99
- title,
100
- active = false,
101
- onClick = _noop,
102
- toolTip = null
103
- } = this.props;
77
+ const light = _get('common.light', skin);
104
78
 
105
- const dark = _get('common.dark', skin);
79
+ const IconType = ICONS[type];
106
80
 
107
- const light = _get('common.light', skin);
81
+ const primary = _get('common.primary', skin); // to replace by useId when React17 is bumped to React18
108
82
 
109
- const primary = _get('common.primary', skin);
110
83
 
111
- const IconType = ICONS[type];
112
- return /*#__PURE__*/React.createElement("div", {
113
- "data-tip": disabled,
114
- "data-engine": type,
115
- onClick: disabled || active ? _noop : this.handleClick,
116
- "data-for": disabled && type,
117
- className: classnames([style.engineStars, disabled ? style.disabled : '', active ? style.active : '', onClick !== _noop ? style.clickable : null])
118
- }, /*#__PURE__*/React.createElement(ToolTip, {
119
- toolTip: toolTip,
120
- id: type
121
- }), /*#__PURE__*/React.createElement("span", {
122
- className: style.engineIcon,
123
- style: {
124
- backgroundColor: onClick === _noop ? light : primary
125
- }
126
- }, /*#__PURE__*/React.createElement(IconType, {
127
- className: style.iconHeader,
128
- width: "30"
129
- })), /*#__PURE__*/React.createElement("div", {
130
- className: style.score,
131
- style: {
132
- color: active ? primary : dark
133
- }
134
- }, /*#__PURE__*/React.createElement("p", {
135
- "data-name": "star-counter"
136
- }, stars), /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement(StarIcon, {
137
- className: style.iconStar,
84
+ const [engineStarsContentId] = useState(disabled ? uuidV5('engine-stars', uuidV5.URL) : undefined);
85
+ const [toolTipIsVisible, setToolTipIsVisible] = useState(false);
86
+ const [mouseLeaveTimer, setMouseLeaveTimer] = useState(undefined);
87
+ const buttonRef = useRef(null);
88
+ const handleKeyPress = useCallback(event => {
89
+ toggleStateOnKeyPress(toolTipIsVisible, setToolTipIsVisible, buttonRef)(event);
90
+ }, [toolTipIsVisible]);
91
+ const handleMouseOver = useCallback(() => {
92
+ mouseLeaveTimer && clearTimeout(mouseLeaveTimer);
93
+ setToolTipIsVisible(true);
94
+ }, [mouseLeaveTimer]);
95
+ const handleContentMouseOver = useCallback(() => {
96
+ mouseLeaveTimer &&
97
+ /* istanbul ignore next */
98
+ clearTimeout(mouseLeaveTimer);
99
+ }, [mouseLeaveTimer]);
100
+ const handleMouseLeave = useCallback(() => {
101
+ setMouseLeaveTimer(setTimeout(() => setToolTipIsVisible(false), 500));
102
+ }, []);
103
+ const toolTipContentProps = useMemo(() => toolTip ? {
104
+ preMessage: toolTip.preMessage,
105
+ linkMessage: toolTip.linkMessage,
106
+ endMessage: toolTip.endMessage,
107
+ color: primary,
108
+ onClick: toolTip.onClick
109
+ } : null, [primary, toolTip]);
110
+ const toolTipProps = {
111
+ closeToolTipInformationTextAriaLabel: translate('Press the escape key to close the information text')
112
+ };
113
+ const TooltipContent = useCallback(_props => /*#__PURE__*/React.createElement(ToolTipContent, _extends({}, _extends({}, toolTipContentProps, _props), {
114
+ handleContentMouseOver: handleContentMouseOver
115
+ })), [handleContentMouseOver, toolTipContentProps]);
116
+ return /*#__PURE__*/React.createElement("button", {
117
+ ref: buttonRef,
118
+ "data-tip": disabled,
119
+ "data-engine": type,
120
+ "data-testid": `engine-stars-${type}` // eslint-disable-next-line no-nested-ternary
121
+ ,
122
+ onClick: disabled ? handleKeyPress : active ? _noop : handleClick,
123
+ "data-for": engineStarsContentId,
124
+ className: classnames([style.engineStars, disabled ? style.disabled : '', active ? style.active : '', onClick !== _noop ? style.clickable : null, className]),
125
+ type: "button",
126
+ "data-tooltip-place": "left",
127
+ onKeyDown: handleKeyPress,
128
+ onMouseLeave: handleMouseLeave,
129
+ onMouseOver: handleMouseOver
130
+ }, disabled ? /*#__PURE__*/React.createElement(ToolTip, _extends({}, toolTipProps, {
131
+ anchorId: engineStarsContentId,
132
+ toolTipIsVisible: toolTipIsVisible,
133
+ TooltipContent: TooltipContent,
134
+ mouseLeaveTimer: mouseLeaveTimer
135
+ })) : null, /*#__PURE__*/React.createElement("span", {
136
+ className: style.engineIcon,
137
+ style: {
138
+ backgroundColor: onClick === _noop ? light : primary
139
+ }
140
+ }, /*#__PURE__*/React.createElement(IconType, {
141
+ className: style.iconHeader,
142
+ width: "30"
143
+ })), /*#__PURE__*/React.createElement("div", {
144
+ className: style.score,
145
+ style: {
138
146
  color: active ? primary : dark
139
- }))), /*#__PURE__*/React.createElement("div", {
140
- className: style.scoreTitle
141
- }, title));
142
- }
143
-
144
- }
145
-
146
- EngineStars.contextTypes = {
147
- skin: Provider.childContextTypes.skin
147
+ }
148
+ }, /*#__PURE__*/React.createElement("p", {
149
+ "data-name": "star-counter"
150
+ }, stars), /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement(StarIcon, {
151
+ className: style.iconStar,
152
+ color: active ? primary : dark
153
+ }))), /*#__PURE__*/React.createElement("div", {
154
+ className: style.scoreTitle
155
+ }, title));
148
156
  };
157
+
149
158
  EngineStars.propTypes = process.env.NODE_ENV !== "production" ? {
150
159
  type: PropTypes.string.isRequired,
151
160
  stars: PropTypes.number.isRequired,
@@ -153,6 +162,7 @@ EngineStars.propTypes = process.env.NODE_ENV !== "production" ? {
153
162
  active: PropTypes.bool,
154
163
  disabled: PropTypes.bool,
155
164
  onClick: PropTypes.func,
165
+ className: PropTypes.string,
156
166
  toolTip: PropTypes.shape({
157
167
  preMessage: PropTypes.string,
158
168
  linkMessage: PropTypes.string,
@@ -160,5 +170,8 @@ EngineStars.propTypes = process.env.NODE_ENV !== "production" ? {
160
170
  onClick: PropTypes.func
161
171
  })
162
172
  } : {};
173
+ EngineStars.contextTypes = {
174
+ skin: Provider.childContextTypes.skin
175
+ };
163
176
  export default EngineStars;
164
177
  //# sourceMappingURL=engine-stars.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"engine-stars.js","names":["classnames","React","ReactTooltip","PropTypes","NovaCompositionCoorpacademyStar","StarIcon","NovaCompositionCoorpacademyTimer","TimerIcon","NovaCompositionCoorpacademyBolt","BoltIcon","NovaSolidSchoolScienceGraduationHat","CertificationIcon","NovaSolidContentContentBook1","LearnerIcon","NovaSolidVoteRewardsRewardsBadge1","BonusIcon","NovaCompositionCoorpacademyScorm","ScormIcon","NovaCompositionCoorpacademyArticle","ArticleIcon","NovaCompositionCoorpacademyVideo","VideoIcon","NovaCompositionCoorpacademyMicrophone","PodcastIcon","NovaCompositionCoorpacademyRevision","RevisionIcon","Provider","Link","style","ICONS","microlearning","learner","battle","certifications","bonus","article","scorm","video","podcast","review","ToolTip","toolTip","id","context","skin","preMessage","endMessage","linkMessage","onClick","primary","handleClick","toolTipContent","color","contextTypes","childContextTypes","propTypes","shape","string","func","isRequired","EngineStars","Component","constructor","props","e","stopPropagation","preventDefault","bind","render","disabled","type","stars","title","active","dark","light","IconType","engineStars","clickable","engineIcon","backgroundColor","iconHeader","score","iconStar","scoreTitle","number","bool"],"sources":["../../../src/template/activity/engine-stars.js"],"sourcesContent":["import classnames from 'classnames';\nimport React from 'react';\nimport ReactTooltip from 'react-tooltip';\nimport PropTypes from 'prop-types';\nimport {get, noop} from 'lodash/fp';\nimport {\n NovaCompositionCoorpacademyStar as StarIcon,\n NovaCompositionCoorpacademyTimer as TimerIcon,\n NovaCompositionCoorpacademyBolt as BoltIcon,\n NovaSolidSchoolScienceGraduationHat as CertificationIcon,\n NovaSolidContentContentBook1 as LearnerIcon,\n NovaSolidVoteRewardsRewardsBadge1 as BonusIcon,\n NovaCompositionCoorpacademyScorm as ScormIcon,\n NovaCompositionCoorpacademyArticle as ArticleIcon,\n NovaCompositionCoorpacademyVideo as VideoIcon,\n NovaCompositionCoorpacademyMicrophone as PodcastIcon,\n NovaCompositionCoorpacademyRevision as RevisionIcon\n} from '@coorpacademy/nova-icons';\nimport Provider from '../../atom/provider';\nimport Link from '../../atom/link';\nimport style from './engine-stars.css';\n\nconst ICONS = {\n microlearning: TimerIcon,\n learner: LearnerIcon,\n battle: BoltIcon,\n certifications: CertificationIcon,\n bonus: BonusIcon,\n article: ArticleIcon,\n scorm: ScormIcon,\n video: VideoIcon,\n podcast: PodcastIcon,\n review: RevisionIcon\n};\n\nconst ToolTip = ({toolTip, id}, context) => {\n if (!toolTip) {\n return null;\n }\n\n const {skin} = context;\n const {preMessage, endMessage, linkMessage, onClick} = toolTip;\n const primary = get('common.primary', skin);\n\n const handleClick = onClick;\n\n return (\n <ReactTooltip\n id={id}\n className={style.toolTip}\n data-event-off=\"click\"\n place=\"left\"\n effect=\"solid\"\n delayHide={500}\n >\n <p className={style.toolTipContent}>\n <span>{`${preMessage}`}</span>\n <Link\n onClick={handleClick}\n style={{\n color: primary\n }}\n >\n {`${linkMessage}`}\n </Link>\n <span>{`${endMessage}`}</span>\n </p>\n </ReactTooltip>\n );\n};\n\nToolTip.contextTypes = {\n skin: Provider.childContextTypes.skin\n};\n\nToolTip.propTypes = {\n toolTip: PropTypes.shape({\n preMessage: PropTypes.string,\n linkMessage: PropTypes.string,\n endMessage: PropTypes.string,\n onClick: PropTypes.func\n }),\n id: PropTypes.string.isRequired\n};\n\nclass EngineStars extends React.Component {\n static propTypes = {\n type: PropTypes.string.isRequired,\n stars: PropTypes.number.isRequired,\n title: PropTypes.string.isRequired,\n active: PropTypes.bool,\n disabled: PropTypes.bool,\n onClick: PropTypes.func,\n toolTip: PropTypes.shape({\n preMessage: PropTypes.string,\n linkMessage: PropTypes.string,\n endMessage: PropTypes.string,\n onClick: PropTypes.func\n })\n };\n\n static contextTypes = {\n skin: Provider.childContextTypes.skin\n };\n\n constructor(props, context) {\n super(props, context);\n this.handleClick = this.handleClick.bind(this);\n }\n\n handleClick = e => {\n e.stopPropagation();\n e.preventDefault();\n const {onClick} = this.props;\n onClick && onClick(e);\n };\n\n render() {\n const {skin} = this.context;\n const {\n disabled,\n type,\n stars,\n title,\n active = false,\n onClick = noop,\n toolTip = null\n } = this.props;\n const dark = get('common.dark', skin);\n const light = get('common.light', skin);\n const primary = get('common.primary', skin);\n const IconType = ICONS[type];\n\n return (\n <div\n data-tip={disabled}\n data-engine={type}\n onClick={disabled || active ? noop : this.handleClick}\n data-for={disabled && type}\n className={classnames([\n style.engineStars,\n disabled ? style.disabled : '',\n active ? style.active : '',\n onClick !== noop ? style.clickable : null\n ])}\n >\n <ToolTip toolTip={toolTip} id={type} />\n\n <span\n className={style.engineIcon}\n style={{\n backgroundColor: onClick === noop ? light : primary\n }}\n >\n <IconType className={style.iconHeader} width=\"30\" />\n </span>\n <div\n className={style.score}\n style={{\n color: active ? primary : dark\n }}\n >\n <p data-name=\"star-counter\">{stars}</p>\n <span>\n <StarIcon className={style.iconStar} color={active ? primary : dark} />\n </span>\n </div>\n <div className={style.scoreTitle}>{title}</div>\n </div>\n );\n }\n}\n\nexport default EngineStars;\n"],"mappings":"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"}
1
+ {"version":3,"file":"engine-stars.js","names":["classnames","React","useCallback","useMemo","useState","useRef","PropTypes","v5","uuidV5","NovaCompositionCoorpacademyStar","StarIcon","NovaCompositionCoorpacademyTimer","TimerIcon","NovaCompositionCoorpacademyBolt","BoltIcon","NovaSolidSchoolScienceGraduationHat","CertificationIcon","NovaSolidContentContentBook1","LearnerIcon","NovaSolidVoteRewardsRewardsBadge1","BonusIcon","NovaCompositionCoorpacademyScorm","ScormIcon","NovaCompositionCoorpacademyArticle","ArticleIcon","NovaCompositionCoorpacademyVideo","VideoIcon","NovaCompositionCoorpacademyMicrophone","PodcastIcon","NovaCompositionCoorpacademyRevision","RevisionIcon","Provider","GetSkinFromContext","GetTranslateFromContext","ToolTip","toggleStateOnKeyPress","Link","style","ICONS","microlearning","learner","battle","certifications","bonus","article","scorm","video","podcast","review","ToolTipContent","preMessage","linkMessage","endMessage","onClick","color","handleContentMouseOver","toolTipContent","propTypes","string","func","EngineStars","props","legacyContext","skin","translate","toolTip","disabled","type","stars","title","active","className","handleClick","e","stopPropagation","preventDefault","dark","light","IconType","primary","engineStarsContentId","URL","undefined","toolTipIsVisible","setToolTipIsVisible","mouseLeaveTimer","setMouseLeaveTimer","buttonRef","handleKeyPress","event","handleMouseOver","clearTimeout","handleMouseLeave","setTimeout","toolTipContentProps","toolTipProps","closeToolTipInformationTextAriaLabel","TooltipContent","_props","engineStars","clickable","engineIcon","backgroundColor","iconHeader","score","iconStar","scoreTitle","isRequired","number","bool","shape","contextTypes","childContextTypes"],"sources":["../../../src/template/activity/engine-stars.js"],"sourcesContent":["import classnames from 'classnames';\nimport React, {useCallback, useMemo, useState, useRef} from 'react';\nimport PropTypes from 'prop-types';\nimport {get, noop} from 'lodash/fp';\nimport {v5 as uuidV5} from 'uuid';\nimport {\n NovaCompositionCoorpacademyStar as StarIcon,\n NovaCompositionCoorpacademyTimer as TimerIcon,\n NovaCompositionCoorpacademyBolt as BoltIcon,\n NovaSolidSchoolScienceGraduationHat as CertificationIcon,\n NovaSolidContentContentBook1 as LearnerIcon,\n NovaSolidVoteRewardsRewardsBadge1 as BonusIcon,\n NovaCompositionCoorpacademyScorm as ScormIcon,\n NovaCompositionCoorpacademyArticle as ArticleIcon,\n NovaCompositionCoorpacademyVideo as VideoIcon,\n NovaCompositionCoorpacademyMicrophone as PodcastIcon,\n NovaCompositionCoorpacademyRevision as RevisionIcon\n} from '@coorpacademy/nova-icons';\nimport Provider, {GetSkinFromContext, GetTranslateFromContext} from '../../atom/provider';\nimport ToolTip, {toggleStateOnKeyPress} from '../../atom/tooltip';\nimport Link from '../../atom/link';\nimport style from './engine-stars.css';\n\nconst ICONS = {\n microlearning: TimerIcon,\n learner: LearnerIcon,\n battle: BoltIcon,\n certifications: CertificationIcon,\n bonus: BonusIcon,\n article: ArticleIcon,\n scorm: ScormIcon,\n video: VideoIcon,\n podcast: PodcastIcon,\n review: RevisionIcon\n};\n\nconst ToolTipContent = ({\n preMessage,\n linkMessage,\n endMessage,\n onClick,\n color,\n handleContentMouseOver\n}) => (\n <p\n className={style.toolTipContent}\n onMouseOver={handleContentMouseOver}\n data-testid=\"react-tooltip-content\"\n >\n <span>{preMessage}</span>\n <Link\n onClick={onClick}\n style={{\n color\n }}\n >\n {linkMessage}\n </Link>\n <span>{endMessage}</span>\n </p>\n);\n\nToolTipContent.propTypes = {\n preMessage: PropTypes.string,\n linkMessage: PropTypes.string,\n endMessage: PropTypes.string,\n color: PropTypes.string,\n onClick: PropTypes.func,\n handleContentMouseOver: PropTypes.func\n};\n\nconst EngineStars = (props, legacyContext) => {\n const skin = GetSkinFromContext(legacyContext);\n const translate = GetTranslateFromContext(legacyContext);\n const {\n toolTip = null,\n disabled,\n type,\n stars,\n title,\n active = false,\n onClick = noop,\n className\n } = props;\n\n const handleClick = e => {\n e.stopPropagation();\n e.preventDefault();\n onClick(e);\n };\n const dark = get('common.dark', skin);\n const light = get('common.light', skin);\n const IconType = ICONS[type];\n\n const primary = get('common.primary', skin);\n\n // to replace by useId when React17 is bumped to React18\n const [engineStarsContentId] = useState(\n disabled ? uuidV5('engine-stars', uuidV5.URL) : undefined\n );\n const [toolTipIsVisible, setToolTipIsVisible] = useState(false);\n const [mouseLeaveTimer, setMouseLeaveTimer] = useState(undefined);\n const buttonRef = useRef(null);\n\n const handleKeyPress = useCallback(\n event => {\n toggleStateOnKeyPress(toolTipIsVisible, setToolTipIsVisible, buttonRef)(event);\n },\n [toolTipIsVisible]\n );\n\n const handleMouseOver = useCallback(() => {\n mouseLeaveTimer && clearTimeout(mouseLeaveTimer);\n setToolTipIsVisible(true);\n }, [mouseLeaveTimer]);\n\n const handleContentMouseOver = useCallback(() => {\n mouseLeaveTimer && /* istanbul ignore next */ clearTimeout(mouseLeaveTimer);\n }, [mouseLeaveTimer]);\n\n const handleMouseLeave = useCallback(() => {\n setMouseLeaveTimer(setTimeout(() => setToolTipIsVisible(false), 500));\n }, []);\n\n const toolTipContentProps = useMemo(\n () =>\n toolTip\n ? {\n preMessage: toolTip.preMessage,\n linkMessage: toolTip.linkMessage,\n endMessage: toolTip.endMessage,\n color: primary,\n onClick: toolTip.onClick\n }\n : null,\n [primary, toolTip]\n );\n\n const toolTipProps = {\n closeToolTipInformationTextAriaLabel: translate(\n 'Press the escape key to close the information text'\n )\n };\n\n const TooltipContent = useCallback(\n _props => (\n <ToolTipContent\n {...{...toolTipContentProps, ..._props}}\n handleContentMouseOver={handleContentMouseOver}\n />\n ),\n [handleContentMouseOver, toolTipContentProps]\n );\n\n return (\n <button\n ref={buttonRef}\n data-tip={disabled}\n data-engine={type}\n data-testid={`engine-stars-${type}`}\n // eslint-disable-next-line no-nested-ternary\n onClick={disabled ? handleKeyPress : active ? noop : handleClick}\n data-for={engineStarsContentId}\n className={classnames([\n style.engineStars,\n disabled ? style.disabled : '',\n active ? style.active : '',\n onClick !== noop ? style.clickable : null,\n className\n ])}\n type=\"button\"\n data-tooltip-place=\"left\"\n onKeyDown={handleKeyPress}\n onMouseLeave={handleMouseLeave}\n onMouseOver={handleMouseOver}\n >\n {disabled ? (\n <ToolTip\n {...toolTipProps}\n anchorId={engineStarsContentId}\n toolTipIsVisible={toolTipIsVisible}\n TooltipContent={TooltipContent}\n mouseLeaveTimer={mouseLeaveTimer}\n />\n ) : null}\n <span\n className={style.engineIcon}\n style={{\n backgroundColor: onClick === noop ? light : primary\n }}\n >\n <IconType className={style.iconHeader} width=\"30\" />\n </span>\n <div\n className={style.score}\n style={{\n color: active ? primary : dark\n }}\n >\n <p data-name=\"star-counter\">{stars}</p>\n <span>\n <StarIcon className={style.iconStar} color={active ? primary : dark} />\n </span>\n </div>\n <div className={style.scoreTitle}>{title}</div>\n </button>\n );\n};\n\nEngineStars.propTypes = {\n type: PropTypes.string.isRequired,\n stars: PropTypes.number.isRequired,\n title: PropTypes.string.isRequired,\n active: PropTypes.bool,\n disabled: PropTypes.bool,\n onClick: PropTypes.func,\n className: PropTypes.string,\n toolTip: PropTypes.shape({\n preMessage: PropTypes.string,\n linkMessage: PropTypes.string,\n endMessage: PropTypes.string,\n onClick: PropTypes.func\n })\n};\n\nEngineStars.contextTypes = {\n skin: Provider.childContextTypes.skin\n};\n\nexport default EngineStars;\n"],"mappings":"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"}
@@ -39,6 +39,7 @@ declare namespace Progression {
39
39
  active: PropTypes.Requireable<boolean>;
40
40
  disabled: PropTypes.Requireable<boolean>;
41
41
  onClick: PropTypes.Requireable<(...args: any[]) => any>;
42
+ className: PropTypes.Requireable<string>;
42
43
  toolTip: PropTypes.Requireable<PropTypes.InferProps<{
43
44
  preMessage: PropTypes.Requireable<string>;
44
45
  linkMessage: PropTypes.Requireable<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/template/activity/index.js"],"names":[],"mappings":";AAeA,0EAuGC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/template/activity/index.js"],"names":[],"mappings":";AAmBA,0EA0GC"}
@@ -3,6 +3,8 @@ function _extends() { _extends = Object.assign ? Object.assign.bind() : function
3
3
  import React, { useCallback } from 'react';
4
4
  import get from 'lodash/fp/get';
5
5
  import isEmpty from 'lodash/fp/isEmpty';
6
+ import map from 'lodash/fp/map';
7
+ import noop from 'lodash/fp/noop';
6
8
  import omit from 'lodash/fp/omit';
7
9
  import PropTypes from 'prop-types';
8
10
  import classnames from 'classnames';
@@ -14,6 +16,9 @@ import ProgressionItem from './progression-item';
14
16
  import EngineStars from './engine-stars';
15
17
  import StarsSummary from './stars-summary';
16
18
  import style from './style.css';
19
+ const mapWithIndex = map.convert({
20
+ cap: false
21
+ });
17
22
 
18
23
  const Progression = (props, legacyContext) => {
19
24
  const {
@@ -35,9 +40,9 @@ const Progression = (props, legacyContext) => {
35
40
  e.stopPropagation();
36
41
  e.preventDefault();
37
42
  const {
38
- onClick
43
+ onClick = noop
39
44
  } = recommendation;
40
- onClick && onClick(e);
45
+ onClick(e);
41
46
  }, [recommendation]);
42
47
  const handleSelectTheme = useCallback(e => {
43
48
  themeFilterOnChange && themeFilterOnChange(e);
@@ -46,10 +51,10 @@ const Progression = (props, legacyContext) => {
46
51
  const loader = loading ? /*#__PURE__*/React.createElement("div", {
47
52
  className: style.loader
48
53
  }, /*#__PURE__*/React.createElement(Loader, null)) : null;
49
- const allProgressions = progressions.map(progression => /*#__PURE__*/React.createElement(ProgressionItem, _extends({}, omit(['ref'], progression), {
50
- key: progression.ref,
54
+ const allProgressions = mapWithIndex((progression, index) => /*#__PURE__*/React.createElement(ProgressionItem, _extends({}, omit(['ref'], progression), {
55
+ key: `${index}-${progression.ref}`,
51
56
  adaptiveAriaLabel: adaptiveAriaLabel
52
- })));
57
+ })), progressions);
53
58
  const coreProgression = /*#__PURE__*/React.createElement("div", {
54
59
  "data-name": "activityCore",
55
60
  className: style.core
@@ -85,13 +90,17 @@ const Progression = (props, legacyContext) => {
85
90
  return /*#__PURE__*/React.createElement("div", {
86
91
  className: style.default
87
92
  }, /*#__PURE__*/React.createElement("div", {
88
- "data-name": "activity-header"
93
+ "data-name": "activity-header",
94
+ tabIndex: 0
89
95
  }, /*#__PURE__*/React.createElement("div", {
90
- className: style.mainTitle
96
+ className: style.mainTitle,
97
+ tabIndex: 0
91
98
  }, /*#__PURE__*/React.createElement("span", null, mainTitle), " ", mainSubtitle), /*#__PURE__*/React.createElement("div", {
92
- className: style.headerProgression
99
+ className: style.headerProgression,
100
+ tabIndex: 0
93
101
  }, /*#__PURE__*/React.createElement("div", {
94
- className: style.wrapperCta
102
+ className: style.wrapperCta,
103
+ tabIndex: 0
95
104
  }, themeSelect, recommendationSection), /*#__PURE__*/React.createElement(StarsSummary, {
96
105
  engines: engines,
97
106
  total: total
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","useCallback","get","isEmpty","omit","PropTypes","classnames","Provider","GetSkinFromContext","Button","Select","Loader","ProgressionItem","EngineStars","StarsSummary","style","Progression","props","legacyContext","mainTitle","mainSubtitle","recommendation","progressions","adaptiveAriaLabel","total","engines","themeFilter","loading","skin","onChange","themeFilterOnChange","handleClick","e","stopPropagation","preventDefault","onClick","handleSelectTheme","primary","loader","allProgressions","map","progression","ref","coreProgression","core","themeSelect","options","selectBorder","select","recommendationSection","recommendationWrapper","title","subtitle","course","innerHTML","__html","courseTitle","cta","backgroundColor","default","headerProgression","wrapperCta","wrapperProgression","contextTypes","childContextTypes","propTypes","string","isRequired","shape","label","stars","number","arrayOf","bool","func"],"sources":["../../../src/template/activity/index.js"],"sourcesContent":["import React, {useCallback} from 'react';\nimport get from 'lodash/fp/get';\nimport isEmpty from 'lodash/fp/isEmpty';\nimport omit from 'lodash/fp/omit';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport Provider, {GetSkinFromContext} from '../../atom/provider';\nimport Button from '../../atom/button';\nimport Select from '../../atom/select';\nimport Loader from '../../atom/loader';\nimport ProgressionItem from './progression-item';\nimport EngineStars from './engine-stars';\nimport StarsSummary from './stars-summary';\nimport style from './style.css';\n\nconst Progression = (props, legacyContext) => {\n const {\n mainTitle,\n mainSubtitle,\n recommendation = {},\n progressions = [],\n adaptiveAriaLabel,\n total,\n engines = [],\n themeFilter = {},\n loading\n } = props;\n const skin = GetSkinFromContext(legacyContext);\n const {onChange: themeFilterOnChange} = themeFilter;\n\n const handleClick = useCallback(\n e => {\n e.stopPropagation();\n e.preventDefault();\n const {onClick} = recommendation;\n onClick && onClick(e);\n },\n [recommendation]\n );\n\n const handleSelectTheme = useCallback(\n e => {\n themeFilterOnChange && themeFilterOnChange(e);\n },\n [themeFilterOnChange]\n );\n\n const primary = get('common.primary', skin);\n const loader = loading ? (\n <div className={style.loader}>\n <Loader />\n </div>\n ) : null;\n const allProgressions = progressions.map(progression => (\n <ProgressionItem\n {...omit(['ref'], progression)}\n key={progression.ref}\n adaptiveAriaLabel={adaptiveAriaLabel}\n />\n ));\n\n const coreProgression = (\n <div data-name=\"activityCore\" className={style.core}>\n {allProgressions}\n </div>\n );\n const themeSelect = !isEmpty(themeFilter.options) ? (\n <Select\n borderClassName={style.selectBorder}\n className={style.select}\n theme=\"thematiques\"\n options={themeFilter.options}\n onChange={handleSelectTheme}\n />\n ) : null;\n const recommendationSection = !isEmpty(recommendation) ? (\n <div className={style.recommendationWrapper}>\n <p className={style.recommendationSection}>{recommendation.title} </p>\n <p className={style.recommendationSection}>\n <span>{recommendation.subtitle} </span>\n <span\n className={classnames(style.course, style.innerHTML)}\n // eslint-disable-next-line react/no-danger\n dangerouslySetInnerHTML={{__html: recommendation.courseTitle}}\n />\n </p>\n <Button\n type=\"link\"\n onClick={handleClick}\n submitValue={recommendation.cta}\n style={{\n backgroundColor: primary\n }}\n className={style.cta}\n />\n </div>\n ) : null;\n\n return (\n <div className={style.default}>\n <div data-name=\"activity-header\">\n <div className={style.mainTitle}>\n <span>{mainTitle}</span> {mainSubtitle}\n </div>\n <div className={style.headerProgression}>\n <div className={style.wrapperCta}>\n {themeSelect}\n {recommendationSection}\n </div>\n <StarsSummary engines={engines} total={total} />\n </div>\n </div>\n <div className={style.wrapperProgression} data-name=\"activityList\">\n {coreProgression}\n {loader}\n </div>\n </div>\n );\n};\n\nProgression.contextTypes = {\n skin: Provider.childContextTypes.skin\n};\n\nProgression.propTypes = {\n mainTitle: PropTypes.string.isRequired,\n mainSubtitle: PropTypes.string.isRequired,\n adaptiveAriaLabel: PropTypes.string,\n total: PropTypes.shape({\n label: PropTypes.string.isRequired,\n stars: PropTypes.number.isRequired\n }).isRequired,\n engines: PropTypes.arrayOf(PropTypes.shape(EngineStars.propTypes)),\n loading: PropTypes.bool.isRequired,\n progressions: PropTypes.arrayOf(\n PropTypes.shape({...ProgressionItem.propTypes, ref: PropTypes.string.isRequired})\n ),\n themeFilter: PropTypes.shape({\n options: Select.propTypes.options.isRequired,\n onChange: Select.propTypes.onChange\n }),\n recommendation: PropTypes.shape({\n cta: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n subtitle: PropTypes.string.isRequired,\n courseTitle: PropTypes.string.isRequired,\n onClick: PropTypes.func\n })\n};\n\nexport default Progression;\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["React","useCallback","get","isEmpty","map","noop","omit","PropTypes","classnames","Provider","GetSkinFromContext","Button","Select","Loader","ProgressionItem","EngineStars","StarsSummary","style","mapWithIndex","convert","cap","Progression","props","legacyContext","mainTitle","mainSubtitle","recommendation","progressions","adaptiveAriaLabel","total","engines","themeFilter","loading","skin","onChange","themeFilterOnChange","handleClick","e","stopPropagation","preventDefault","onClick","handleSelectTheme","primary","loader","allProgressions","progression","index","ref","coreProgression","core","themeSelect","options","selectBorder","select","recommendationSection","recommendationWrapper","title","subtitle","course","innerHTML","__html","courseTitle","cta","backgroundColor","default","headerProgression","wrapperCta","wrapperProgression","contextTypes","childContextTypes","propTypes","string","isRequired","shape","label","stars","number","arrayOf","bool","func"],"sources":["../../../src/template/activity/index.js"],"sourcesContent":["import React, {useCallback} from 'react';\nimport get from 'lodash/fp/get';\nimport isEmpty from 'lodash/fp/isEmpty';\nimport map from 'lodash/fp/map';\nimport noop from 'lodash/fp/noop';\nimport omit from 'lodash/fp/omit';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport Provider, {GetSkinFromContext} from '../../atom/provider';\nimport Button from '../../atom/button';\nimport Select from '../../atom/select';\nimport Loader from '../../atom/loader';\nimport ProgressionItem from './progression-item';\nimport EngineStars from './engine-stars';\nimport StarsSummary from './stars-summary';\nimport style from './style.css';\n\nconst mapWithIndex = map.convert({cap: false});\n\nconst Progression = (props, legacyContext) => {\n const {\n mainTitle,\n mainSubtitle,\n recommendation = {},\n progressions = [],\n adaptiveAriaLabel,\n total,\n engines = [],\n themeFilter = {},\n loading\n } = props;\n const skin = GetSkinFromContext(legacyContext);\n const {onChange: themeFilterOnChange} = themeFilter;\n\n const handleClick = useCallback(\n e => {\n e.stopPropagation();\n e.preventDefault();\n const {onClick = noop} = recommendation;\n onClick(e);\n },\n [recommendation]\n );\n\n const handleSelectTheme = useCallback(\n e => {\n themeFilterOnChange && themeFilterOnChange(e);\n },\n [themeFilterOnChange]\n );\n\n const primary = get('common.primary', skin);\n const loader = loading ? (\n <div className={style.loader}>\n <Loader />\n </div>\n ) : null;\n const allProgressions = mapWithIndex(\n (progression, index) => (\n <ProgressionItem\n {...omit(['ref'], progression)}\n key={`${index}-${progression.ref}`}\n adaptiveAriaLabel={adaptiveAriaLabel}\n />\n ),\n progressions\n );\n\n const coreProgression = (\n <div data-name=\"activityCore\" className={style.core}>\n {allProgressions}\n </div>\n );\n const themeSelect = !isEmpty(themeFilter.options) ? (\n <Select\n borderClassName={style.selectBorder}\n className={style.select}\n theme=\"thematiques\"\n options={themeFilter.options}\n onChange={handleSelectTheme}\n />\n ) : null;\n const recommendationSection = !isEmpty(recommendation) ? (\n <div className={style.recommendationWrapper}>\n <p className={style.recommendationSection}>{recommendation.title} </p>\n <p className={style.recommendationSection}>\n <span>{recommendation.subtitle} </span>\n <span\n className={classnames(style.course, style.innerHTML)}\n // eslint-disable-next-line react/no-danger\n dangerouslySetInnerHTML={{__html: recommendation.courseTitle}}\n />\n </p>\n <Button\n type=\"link\"\n onClick={handleClick}\n submitValue={recommendation.cta}\n style={{\n backgroundColor: primary\n }}\n className={style.cta}\n />\n </div>\n ) : null;\n\n return (\n <div className={style.default}>\n <div data-name=\"activity-header\" tabIndex={0}>\n <div className={style.mainTitle} tabIndex={0}>\n <span>{mainTitle}</span> {mainSubtitle}\n </div>\n <div className={style.headerProgression} tabIndex={0}>\n <div className={style.wrapperCta} tabIndex={0}>\n {themeSelect}\n {recommendationSection}\n </div>\n <StarsSummary engines={engines} total={total} />\n </div>\n </div>\n <div className={style.wrapperProgression} data-name=\"activityList\">\n {coreProgression}\n {loader}\n </div>\n </div>\n );\n};\n\nProgression.contextTypes = {\n skin: Provider.childContextTypes.skin\n};\n\nProgression.propTypes = {\n mainTitle: PropTypes.string.isRequired,\n mainSubtitle: PropTypes.string.isRequired,\n adaptiveAriaLabel: PropTypes.string,\n total: PropTypes.shape({\n label: PropTypes.string.isRequired,\n stars: PropTypes.number.isRequired\n }).isRequired,\n engines: PropTypes.arrayOf(PropTypes.shape(EngineStars.propTypes)),\n loading: PropTypes.bool.isRequired,\n progressions: PropTypes.arrayOf(\n PropTypes.shape({...ProgressionItem.propTypes, ref: PropTypes.string.isRequired})\n ),\n themeFilter: PropTypes.shape({\n options: Select.propTypes.options.isRequired,\n onChange: Select.propTypes.onChange\n }),\n recommendation: PropTypes.shape({\n cta: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n subtitle: PropTypes.string.isRequired,\n courseTitle: PropTypes.string.isRequired,\n onClick: PropTypes.func\n })\n};\n\nexport default Progression;\n"],"mappings":"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"}
@@ -59,7 +59,7 @@ const ProgressionItem = (props, context) => {
59
59
  const handleCTAClick = useMemo(() => e => {
60
60
  e.stopPropagation();
61
61
  e.preventDefault();
62
- onClick && onClick(e);
62
+ onClick(e);
63
63
  }, [onClick]);
64
64
  const link = disabled ? null : /*#__PURE__*/React.createElement(Link, {
65
65
  style: {
@@ -1 +1 @@
1
- {"version":3,"file":"progression-item.js","names":["React","useMemo","PropTypes","classnames","NovaCompositionNavigationArrowRight","ArrowRightIcon","NovaCompositionCoorpacademyStar","StarIcon","NovaCompositionCoorpacademyTimer","TimerIcon","NovaCompositionCoorpacademyBolt","BoltIcon","NovaSolidSchoolScienceGraduationHat","CertificationIcon","NovaCompositionCoorpacademyAdaptive","AdaptiveIcon","NovaSolidContentContentBook1","LearnerIcon","NovaCompositionCoorpacademyScorm","ScormIcon","NovaCompositionCoorpacademyArticle","ArticleIcon","NovaCompositionCoorpacademyVideo","VideoIcon","NovaCompositionCoorpacademyMicrophone","PodcastIcon","NovaCompositionCoorpacademyRevision","RevisionIcon","Provider","ProgressBar","Link","style","ICONS","chapter","course","battle","certification","article","scorm","video","podcast","review","ProgressionItem","props","context","skin","disabled","adaptive","completion","label","level","onClick","stars","maxStars","state","type","steps","adaptiveAriaLabel","dark","primary","white","IconType","adaptiveIcon","backgroundColor","handleCTAClick","e","stopPropagation","preventDefault","link","color","cta","progressionItem","wrapperTitle","iconType","innerHTML","__html","smallStars","iconStar","borderRadius","propTypes","number","isRequired","bool","string","func","contextTypes","childContextTypes"],"sources":["../../../src/template/activity/progression-item.js"],"sourcesContent":["import React, {useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {get, noop} from 'lodash/fp';\nimport {\n NovaCompositionNavigationArrowRight as ArrowRightIcon,\n NovaCompositionCoorpacademyStar as StarIcon,\n NovaCompositionCoorpacademyTimer as TimerIcon,\n NovaCompositionCoorpacademyBolt as BoltIcon,\n NovaSolidSchoolScienceGraduationHat as CertificationIcon,\n NovaCompositionCoorpacademyAdaptive as AdaptiveIcon,\n NovaSolidContentContentBook1 as LearnerIcon,\n NovaCompositionCoorpacademyScorm as ScormIcon,\n NovaCompositionCoorpacademyArticle as ArticleIcon,\n NovaCompositionCoorpacademyVideo as VideoIcon,\n NovaCompositionCoorpacademyMicrophone as PodcastIcon,\n NovaCompositionCoorpacademyRevision as RevisionIcon\n} from '@coorpacademy/nova-icons';\nimport Provider from '../../atom/provider';\nimport ProgressBar from '../../molecule/progress-bar';\nimport Link from '../../atom/link';\nimport style from './progression-item.css';\n\nconst ICONS = {\n chapter: TimerIcon,\n course: LearnerIcon,\n battle: BoltIcon,\n certification: CertificationIcon,\n article: ArticleIcon,\n scorm: ScormIcon,\n video: VideoIcon,\n podcast: PodcastIcon,\n review: RevisionIcon\n};\n\nconst ProgressionItem = (props, context) => {\n const {skin} = context;\n const {\n disabled = false,\n adaptive,\n completion,\n label,\n level,\n onClick = noop,\n stars,\n maxStars,\n state,\n type,\n steps = 0,\n adaptiveAriaLabel\n } = props;\n\n const dark = get('common.dark', skin);\n const primary = get('common.primary', skin);\n const white = get('common.white', skin);\n const IconType = ICONS[type];\n\n const adaptiveIcon = adaptive ? (\n <div\n className={style.adaptiveIcon}\n style={{\n backgroundColor: primary\n }}\n >\n <AdaptiveIcon color={white} height={14} aria-label={adaptiveAriaLabel} />\n </div>\n ) : null;\n\n const handleCTAClick = useMemo(\n () => e => {\n e.stopPropagation();\n e.preventDefault();\n onClick && onClick(e);\n },\n [onClick]\n );\n\n const link = disabled ? null : (\n <Link style={{color: primary}} onClick={handleCTAClick} data-progression-state={state}>\n <span className={style.cta}>\n {state} <ArrowRightIcon color={primary} height={12} width={20} />\n </span>\n </Link>\n );\n\n return (\n <div className={classnames(style.progressionItem, disabled ? style.disabled : '')}>\n <div className={style.wrapperTitle}>\n <IconType className={style.iconType} color={dark} />\n <div data-name=\"activityLabel\" className={style.label} title={label}>\n <div\n className={style.innerHTML}\n // eslint-disable-next-line react/no-danger\n dangerouslySetInnerHTML={{__html: label}}\n />\n {adaptiveIcon}\n </div>\n\n <div\n data-name=\"activityStars\"\n className={style.stars}\n style={{\n color: primary\n }}\n >\n {stars}\n {maxStars ? ' /' : null}\n {maxStars ? <span className={style.smallStars}>{maxStars}</span> : null}{' '}\n <StarIcon className={style.iconStar} color={primary} />\n </div>\n </div>\n <ProgressBar\n className={style.completion}\n value={completion * 100}\n max={100}\n steps={steps}\n style={{backgroundColor: primary, borderRadius: 0}}\n />\n <div className={style.state}>\n {link}\n <span className={style.level}>{level}</span>\n </div>\n </div>\n );\n};\n\nProgressionItem.propTypes = {\n completion: PropTypes.number.isRequired,\n stars: PropTypes.number.isRequired,\n maxStars: PropTypes.number,\n steps: PropTypes.number,\n disabled: PropTypes.bool,\n label: PropTypes.string.isRequired,\n level: PropTypes.string.isRequired,\n state: PropTypes.string.isRequired,\n adaptiveAriaLabel: PropTypes.string,\n type: PropTypes.string.isRequired,\n adaptive: PropTypes.bool.isRequired,\n onClick: PropTypes.func\n};\n\nProgressionItem.contextTypes = {\n skin: Provider.childContextTypes.skin\n};\n\nexport default ProgressionItem;\n"],"mappings":"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"}
1
+ {"version":3,"file":"progression-item.js","names":["React","useMemo","PropTypes","classnames","NovaCompositionNavigationArrowRight","ArrowRightIcon","NovaCompositionCoorpacademyStar","StarIcon","NovaCompositionCoorpacademyTimer","TimerIcon","NovaCompositionCoorpacademyBolt","BoltIcon","NovaSolidSchoolScienceGraduationHat","CertificationIcon","NovaCompositionCoorpacademyAdaptive","AdaptiveIcon","NovaSolidContentContentBook1","LearnerIcon","NovaCompositionCoorpacademyScorm","ScormIcon","NovaCompositionCoorpacademyArticle","ArticleIcon","NovaCompositionCoorpacademyVideo","VideoIcon","NovaCompositionCoorpacademyMicrophone","PodcastIcon","NovaCompositionCoorpacademyRevision","RevisionIcon","Provider","ProgressBar","Link","style","ICONS","chapter","course","battle","certification","article","scorm","video","podcast","review","ProgressionItem","props","context","skin","disabled","adaptive","completion","label","level","onClick","stars","maxStars","state","type","steps","adaptiveAriaLabel","dark","primary","white","IconType","adaptiveIcon","backgroundColor","handleCTAClick","e","stopPropagation","preventDefault","link","color","cta","progressionItem","wrapperTitle","iconType","innerHTML","__html","smallStars","iconStar","borderRadius","propTypes","number","isRequired","bool","string","func","contextTypes","childContextTypes"],"sources":["../../../src/template/activity/progression-item.js"],"sourcesContent":["import React, {useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {get, noop} from 'lodash/fp';\nimport {\n NovaCompositionNavigationArrowRight as ArrowRightIcon,\n NovaCompositionCoorpacademyStar as StarIcon,\n NovaCompositionCoorpacademyTimer as TimerIcon,\n NovaCompositionCoorpacademyBolt as BoltIcon,\n NovaSolidSchoolScienceGraduationHat as CertificationIcon,\n NovaCompositionCoorpacademyAdaptive as AdaptiveIcon,\n NovaSolidContentContentBook1 as LearnerIcon,\n NovaCompositionCoorpacademyScorm as ScormIcon,\n NovaCompositionCoorpacademyArticle as ArticleIcon,\n NovaCompositionCoorpacademyVideo as VideoIcon,\n NovaCompositionCoorpacademyMicrophone as PodcastIcon,\n NovaCompositionCoorpacademyRevision as RevisionIcon\n} from '@coorpacademy/nova-icons';\nimport Provider from '../../atom/provider';\nimport ProgressBar from '../../molecule/progress-bar';\nimport Link from '../../atom/link';\nimport style from './progression-item.css';\n\nconst ICONS = {\n chapter: TimerIcon,\n course: LearnerIcon,\n battle: BoltIcon,\n certification: CertificationIcon,\n article: ArticleIcon,\n scorm: ScormIcon,\n video: VideoIcon,\n podcast: PodcastIcon,\n review: RevisionIcon\n};\n\nconst ProgressionItem = (props, context) => {\n const {skin} = context;\n const {\n disabled = false,\n adaptive,\n completion,\n label,\n level,\n onClick = noop,\n stars,\n maxStars,\n state,\n type,\n steps = 0,\n adaptiveAriaLabel\n } = props;\n\n const dark = get('common.dark', skin);\n const primary = get('common.primary', skin);\n const white = get('common.white', skin);\n const IconType = ICONS[type];\n\n const adaptiveIcon = adaptive ? (\n <div\n className={style.adaptiveIcon}\n style={{\n backgroundColor: primary\n }}\n >\n <AdaptiveIcon color={white} height={14} aria-label={adaptiveAriaLabel} />\n </div>\n ) : null;\n\n const handleCTAClick = useMemo(\n () => e => {\n e.stopPropagation();\n e.preventDefault();\n onClick(e);\n },\n [onClick]\n );\n\n const link = disabled ? null : (\n <Link style={{color: primary}} onClick={handleCTAClick} data-progression-state={state}>\n <span className={style.cta}>\n {state} <ArrowRightIcon color={primary} height={12} width={20} />\n </span>\n </Link>\n );\n\n return (\n <div className={classnames(style.progressionItem, disabled ? style.disabled : '')}>\n <div className={style.wrapperTitle}>\n <IconType className={style.iconType} color={dark} />\n <div data-name=\"activityLabel\" className={style.label} title={label}>\n <div\n className={style.innerHTML}\n // eslint-disable-next-line react/no-danger\n dangerouslySetInnerHTML={{__html: label}}\n />\n {adaptiveIcon}\n </div>\n\n <div\n data-name=\"activityStars\"\n className={style.stars}\n style={{\n color: primary\n }}\n >\n {stars}\n {maxStars ? ' /' : null}\n {maxStars ? <span className={style.smallStars}>{maxStars}</span> : null}{' '}\n <StarIcon className={style.iconStar} color={primary} />\n </div>\n </div>\n <ProgressBar\n className={style.completion}\n value={completion * 100}\n max={100}\n steps={steps}\n style={{backgroundColor: primary, borderRadius: 0}}\n />\n <div className={style.state}>\n {link}\n <span className={style.level}>{level}</span>\n </div>\n </div>\n );\n};\n\nProgressionItem.propTypes = {\n completion: PropTypes.number.isRequired,\n stars: PropTypes.number.isRequired,\n maxStars: PropTypes.number,\n steps: PropTypes.number,\n disabled: PropTypes.bool,\n label: PropTypes.string.isRequired,\n level: PropTypes.string.isRequired,\n state: PropTypes.string.isRequired,\n adaptiveAriaLabel: PropTypes.string,\n type: PropTypes.string.isRequired,\n adaptive: PropTypes.bool.isRequired,\n onClick: PropTypes.func\n};\n\nProgressionItem.contextTypes = {\n skin: Provider.childContextTypes.skin\n};\n\nexport default ProgressionItem;\n"],"mappings":"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"}
@@ -13,6 +13,7 @@ declare namespace StarsSummary {
13
13
  active: PropTypes.Requireable<boolean>;
14
14
  disabled: PropTypes.Requireable<boolean>;
15
15
  onClick: PropTypes.Requireable<(...args: any[]) => any>;
16
+ className: PropTypes.Requireable<string>;
16
17
  toolTip: PropTypes.Requireable<PropTypes.InferProps<{
17
18
  preMessage: PropTypes.Requireable<string>;
18
19
  linkMessage: PropTypes.Requireable<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"stars-summary.d.ts","sourceRoot":"","sources":["../../../src/template/activity/stars-summary.js"],"names":[],"mappings":";AA0DA,kFAiFC"}
1
+ {"version":3,"file":"stars-summary.d.ts","sourceRoot":"","sources":["../../../src/template/activity/stars-summary.js"],"names":[],"mappings":";AA2DA,kFAoFC"}
@@ -27,6 +27,7 @@ const EngineTab = ({
27
27
  key: type,
28
28
  "data-name": dataName
29
29
  }, /*#__PURE__*/React.createElement(EngineStars, _extends({}, engine, {
30
+ key: type,
30
31
  className: engineIndex < firstItemIndex ? style.hidden : style.active
31
32
  })));
32
33
  };
@@ -81,11 +82,12 @@ const StarsSummary = (props, legacyContext) => {
81
82
  return null;
82
83
  }
83
84
 
84
- const leftArrowView = totalItems > 6 && firstItemIndex > 0 ? /*#__PURE__*/React.createElement("div", {
85
+ const leftArrowView = totalItems > 6 && firstItemIndex > 0 ? /*#__PURE__*/React.createElement("button", {
85
86
  className: style.circle,
86
87
  onClick: handleOnLeft,
87
88
  "data-name": "left-arrow",
88
- "data-testid": "stars-summary-left-arrow"
89
+ "data-testid": "stars-summary-left-arrow",
90
+ type: "button"
89
91
  }, /*#__PURE__*/React.createElement(ArrowLeft, {
90
92
  color: dark,
91
93
  className: style.left,
@@ -105,15 +107,18 @@ const StarsSummary = (props, legacyContext) => {
105
107
  })) : null;
106
108
  return /*#__PURE__*/React.createElement("div", {
107
109
  "data-name": "myStars",
108
- className: style.myStars
110
+ className: style.myStars,
111
+ tabIndex: 0
109
112
  }, /*#__PURE__*/React.createElement("div", {
110
113
  "data-name": "myStars-wrapper",
111
114
  className: style.myStarsWrapper,
112
- "data-testid": `stars-summary-engine-index-${firstItemIndex}`
115
+ "data-testid": `stars-summary-engine-index-${firstItemIndex}`,
116
+ tabIndex: 0
113
117
  }, /*#__PURE__*/React.createElement("ul", {
114
118
  className: style.allStars,
115
119
  "data-name": "engineList",
116
- "data-testid": "stars-summary-engine-tabs"
120
+ "data-testid": "stars-summary-engine-tabs",
121
+ tabIndex: 0
117
122
  }, /*#__PURE__*/React.createElement(EngineTabs, {
118
123
  engines: engines,
119
124
  firstItemIndex: firstItemIndex