@coorpacademy/components 11.32.51 → 11.32.52-alpha.56
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/molecule/banner/index.d.ts +1 -0
- package/es/molecule/banner/index.d.ts.map +1 -1
- package/es/molecule/banner/index.js +12 -3
- package/es/molecule/banner/index.js.map +1 -1
- package/es/template/back-office/brand-update/index.d.ts +1 -0
- package/es/template/playlist-detail/index.d.ts +4 -1
- package/es/template/playlist-detail/index.d.ts.map +1 -1
- package/es/template/playlist-detail/index.js +14 -3
- package/es/template/playlist-detail/index.js.map +1 -1
- package/es/template/skill-detail/all-courses.d.ts +5 -1
- package/es/template/skill-detail/all-courses.d.ts.map +1 -1
- package/es/template/skill-detail/all-courses.js +18 -7
- package/es/template/skill-detail/all-courses.js.map +1 -1
- package/es/template/skill-detail/index.d.ts +4 -1
- package/es/template/skill-detail/index.d.ts.map +1 -1
- package/es/template/skill-detail/index.js +14 -3
- package/es/template/skill-detail/index.js.map +1 -1
- package/lib/molecule/banner/index.d.ts +1 -0
- package/lib/molecule/banner/index.d.ts.map +1 -1
- package/lib/molecule/banner/index.js +13 -3
- package/lib/molecule/banner/index.js.map +1 -1
- package/lib/template/back-office/brand-update/index.d.ts +1 -0
- package/lib/template/playlist-detail/index.d.ts +4 -1
- package/lib/template/playlist-detail/index.d.ts.map +1 -1
- package/lib/template/playlist-detail/index.js +14 -3
- package/lib/template/playlist-detail/index.js.map +1 -1
- package/lib/template/skill-detail/all-courses.d.ts +5 -1
- package/lib/template/skill-detail/all-courses.d.ts.map +1 -1
- package/lib/template/skill-detail/all-courses.js +19 -7
- package/lib/template/skill-detail/all-courses.js.map +1 -1
- package/lib/template/skill-detail/index.d.ts +4 -1
- package/lib/template/skill-detail/index.d.ts.map +1 -1
- package/lib/template/skill-detail/index.js +14 -3
- package/lib/template/skill-detail/index.js.map +1 -1
- package/locales/bs/global.json +1 -0
- package/locales/cs/global.json +1 -0
- package/locales/de/global.json +1 -0
- package/locales/en/global.json +1 -0
- package/locales/es/global.json +1 -0
- package/locales/et/global.json +1 -0
- package/locales/fi/global.json +1 -0
- package/locales/fr/global.json +1 -0
- package/locales/hr/global.json +1 -0
- package/locales/hu/global.json +1 -0
- package/locales/hy/global.json +1 -0
- package/locales/it/global.json +1 -0
- package/locales/ja/global.json +1 -0
- package/locales/ko/global.json +1 -0
- package/locales/nl/global.json +1 -0
- package/locales/pl/global.json +1 -0
- package/locales/pt/global.json +1 -0
- package/locales/ro/global.json +5 -4
- package/locales/ru/global.json +1 -0
- package/locales/sk/global.json +1 -0
- package/locales/sl/global.json +1 -0
- package/locales/sv/global.json +1 -0
- package/locales/tl/global.json +1 -0
- package/locales/tr/global.json +1 -0
- package/locales/uk/global.json +1 -0
- package/locales/vi/global.json +1 -0
- package/locales/zh/global.json +1 -0
- package/locales/zh_TW/global.json +1 -0
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["uncappedMap","convert","cap","TYPES","success","COLORS","cm_positive_200","error","cm_negative_200","warning","cm_yellow_400","info","cm_grey_500","STYLES","style","Banner","props","type","message","cta","temporary","bannerKey","onEnd","switchValue","setSwitchValue","useState","ButtonSeparator","classnames","buttonsBar","handleSwitchToggle","useCallback","action","e","newSwitchValue","buildButton","buttonType","label","commonStyle","button","padding","buildCta","ctaOptions","options","i","ctaWrapper","iconName","iconColor","banner","temporaryBanner","icon","temporaryIcon","ctaPropTypes","PropTypes","shape","string","oneOf","func","propTypes","isRequired","arrayOf"
|
|
1
|
+
{"version":3,"file":"index.js","names":["uncappedMap","convert","cap","TYPES","success","COLORS","cm_positive_200","error","cm_negative_200","warning","cm_yellow_400","info","cm_grey_500","STYLES","style","Banner","props","type","message","cta","temporary","bannerKey","onEnd","oldSwitchValue","switchValue","setSwitchValue","useState","ButtonSeparator","classnames","buttonsBar","handleSwitchToggle","useCallback","action","e","newSwitchValue","buildButton","buttonType","label","commonStyle","button","padding","buildCta","ctaOptions","options","i","ctaWrapper","iconName","iconColor","banner","temporaryBanner","icon","temporaryIcon","ctaPropTypes","PropTypes","shape","string","oneOf","func","bool","propTypes","isRequired","arrayOf"],"sources":["../../../src/molecule/banner/index.js"],"sourcesContent":["import React, {useState, useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {keys, noop, isEmpty, map, size, pipe, find, get} from 'lodash/fp';\nimport {COLORS} from '../../variables/colors';\nimport ButtonLink from '../../atom/button-link';\nimport Icon from '../../atom/icon';\nimport InputSwitch from '../../atom/input-switch';\nimport style from './style.css';\n\nconst uncappedMap = map.convert({cap: false});\n\nconst TYPES = {\n success: ['circle-check', COLORS.cm_positive_200],\n error: ['triangle-exclamation', COLORS.cm_negative_200],\n warning: ['circle-exclamation', COLORS.cm_yellow_400],\n info: ['circle-info', COLORS.cm_grey_500]\n};\n\nconst STYLES = {\n success: style.success,\n error: style.error,\n warning: style.warning,\n info: style.info\n};\n\nconst Banner = props => {\n const {type, message, cta = [], temporary, bannerKey, onEnd} = props;\n const oldSwitchValue = pipe(find({type: 'switch'}), get('oldSwitchValue'))(cta);\n const [switchValue, setSwitchValue] = useState(oldSwitchValue || false);\n\n const ButtonSeparator = <div className={classnames(style.buttonsBar, STYLES[type])} />;\n\n const handleSwitchToggle = useCallback(\n action => e => {\n const newSwitchValue = !switchValue;\n setSwitchValue(newSwitchValue);\n action(newSwitchValue);\n },\n [switchValue]\n );\n\n const buildButton = ({type: buttonType = 'button', label, action = noop}) => {\n const commonStyle = classnames(style.button, STYLES[type]);\n\n switch (buttonType) {\n case 'switch':\n return (\n <div className={commonStyle}>\n <InputSwitch\n id=\"show-microlearning-switch\"\n theme=\"default\"\n title={label}\n value={switchValue}\n onChange={handleSwitchToggle(action)}\n data-name={`banner-switch-cta`}\n aria-label={label}\n />\n </div>\n );\n default:\n return (\n <div className={commonStyle}>\n <ButtonLink\n data-name=\"banner-button-cta\"\n aria-label={label}\n label={label}\n onClick={action}\n type=\"text\"\n customStyle={{padding: 0}}\n />\n </div>\n );\n }\n };\n\n const buildCta = ctaOptions => {\n return uncappedMap((options, i) => {\n if (isEmpty(options)) return null;\n\n return (\n <div className={style.ctaWrapper} key={i}>\n {i > 0 && i <= size(options) ? ButtonSeparator : null}\n {buildButton(options)}\n </div>\n );\n }, ctaOptions);\n };\n\n const [iconName, iconColor] = TYPES[type];\n\n return (\n <div\n key={bannerKey}\n className={classnames(style.banner, STYLES[type], temporary && style.temporaryBanner)}\n onAnimationEnd={onEnd}\n title={message}\n >\n <div data-name={`${type}-banner-message`} className={style.message}>\n <Icon\n iconName={iconName}\n iconColor={iconColor}\n className={classnames(style.icon, temporary && style.temporaryIcon)}\n customStyle={{padding: 0}}\n />\n {message}\n </div>\n {buildCta(cta)}\n </div>\n );\n};\n\nconst ctaPropTypes = PropTypes.shape({\n label: PropTypes.string,\n type: PropTypes.oneOf(['button', 'switch']),\n action: PropTypes.func,\n oldSwitchValue: PropTypes.bool\n});\n\nBanner.propTypes = {\n bannerKey: PropTypes.string,\n type: PropTypes.oneOf(keys(TYPES)),\n message: PropTypes.string.isRequired,\n cta: PropTypes.arrayOf(ctaPropTypes),\n temporary: PropTypes.bool,\n onEnd: PropTypes.func\n};\n\nexport default Banner;\n"],"mappings":"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"}
|
|
@@ -13,6 +13,7 @@ declare namespace BrandUpdate {
|
|
|
13
13
|
label: PropTypes.Requireable<string>;
|
|
14
14
|
type: PropTypes.Requireable<string>;
|
|
15
15
|
action: PropTypes.Requireable<(...args: any[]) => any>;
|
|
16
|
+
oldSwitchValue: PropTypes.Requireable<boolean>;
|
|
16
17
|
}> | null | undefined)[]>;
|
|
17
18
|
temporary: PropTypes.Requireable<boolean>;
|
|
18
19
|
onEnd: PropTypes.Requireable<(...args: any[]) => any>;
|
|
@@ -83,7 +83,10 @@ declare namespace PlaylistDetail {
|
|
|
83
83
|
}>>;
|
|
84
84
|
const onBackClick: PropTypes.Requireable<(...args: any[]) => any>;
|
|
85
85
|
const onContinueLearningClick: PropTypes.Requireable<(...args: any[]) => any>;
|
|
86
|
-
|
|
86
|
+
namespace bannerMicrolearning {
|
|
87
|
+
const action: PropTypes.Requireable<(...args: any[]) => any>;
|
|
88
|
+
const oldSwitchValue: PropTypes.Requireable<boolean>;
|
|
89
|
+
}
|
|
87
90
|
}
|
|
88
91
|
}
|
|
89
92
|
import PropTypes from "prop-types";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/template/playlist-detail/index.js"],"names":[],"mappings":";AAgBA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/template/playlist-detail/index.js"],"names":[],"mappings":";AAgBA,uEAgGC"}
|
|
@@ -51,12 +51,16 @@ const PlaylistDetail = (props, context) => {
|
|
|
51
51
|
sorting,
|
|
52
52
|
onBackClick,
|
|
53
53
|
onContinueLearningClick,
|
|
54
|
-
|
|
54
|
+
bannerMicrolearning = {}
|
|
55
55
|
} = props;
|
|
56
56
|
const descriptionRef = (0, _react.useRef)(null);
|
|
57
57
|
const {
|
|
58
58
|
translate
|
|
59
59
|
} = context;
|
|
60
|
+
const {
|
|
61
|
+
action: bannerMicrolearningAction,
|
|
62
|
+
oldSwitchValue
|
|
63
|
+
} = bannerMicrolearning;
|
|
60
64
|
const [isDescriptionTruncated, setIsDescriptionTruncated] = (0, _react.useState)(false);
|
|
61
65
|
const [showMore, setShowMore] = (0, _react.useState)(false);
|
|
62
66
|
const handleShowMore = (0, _react.useCallback)(() => setShowMore(!showMore), [setShowMore, showMore]);
|
|
@@ -115,7 +119,11 @@ const PlaylistDetail = (props, context) => {
|
|
|
115
119
|
content: playlistCourses,
|
|
116
120
|
filters: filters,
|
|
117
121
|
sorting: sorting,
|
|
118
|
-
|
|
122
|
+
bannerMicrolearning: {
|
|
123
|
+
type: 'playlist',
|
|
124
|
+
action: bannerMicrolearningAction,
|
|
125
|
+
oldSwitchValue
|
|
126
|
+
}
|
|
119
127
|
})));
|
|
120
128
|
};
|
|
121
129
|
|
|
@@ -137,7 +145,10 @@ PlaylistDetail.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
|
137
145
|
sorting: _propTypes.default.shape(_select.default.propTypes),
|
|
138
146
|
onBackClick: _propTypes.default.func,
|
|
139
147
|
onContinueLearningClick: _propTypes.default.func,
|
|
140
|
-
|
|
148
|
+
bannerMicrolearning: {
|
|
149
|
+
action: _propTypes.default.func,
|
|
150
|
+
oldSwitchValue: _propTypes.default.bool
|
|
151
|
+
}
|
|
141
152
|
} : {};
|
|
142
153
|
var _default = PlaylistDetail;
|
|
143
154
|
exports.default = _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["PlaylistDetail","props","context","title","coverImages","playlistRef","description","ongoingCoursesAvailable","playlistCourses","filters","sorting","onBackClick","onContinueLearningClick","
|
|
1
|
+
{"version":3,"file":"index.js","names":["PlaylistDetail","props","context","title","coverImages","playlistRef","description","ongoingCoursesAvailable","playlistCourses","filters","sorting","onBackClick","onContinueLearningClick","bannerMicrolearning","descriptionRef","useRef","translate","action","bannerMicrolearningAction","oldSwitchValue","isDescriptionTruncated","setIsDescriptionTruncated","useState","showMore","setShowMore","handleShowMore","useCallback","useEffect","current","clientHeight","scrollHeight","Description","classnames","style","truncate","backgroundContainer","container","backButton","ctaContainer","coverWrapper","showMoreWrapper","faSize","wrapperSize","continueLearningButton","type","contextTypes","skin","Provider","childContextTypes","propTypes","PropTypes","string","isRequired","PlaylistDetailCover","images","bool","shape","CardsGrid","onChange","func","options","arrayOf","SelectOptionPropTypes","Select"],"sources":["../../../src/template/playlist-detail/index.js"],"sourcesContent":["import React, {useCallback, useState, useEffect, useRef} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {isNil} from 'lodash/fp';\nimport Markdown from 'markdown-to-jsx';\nimport Provider from '../../atom/provider';\nimport Tag from '../../atom/tag';\nimport Select, {SelectOptionPropTypes} from '../../atom/select';\nimport ButtonLinkIcon from '../../atom/button-link-icon';\nimport Icon from '../../atom/icon';\nimport CardsGrid from '../../organism/cards-grid';\nimport AllCourses from '../skill-detail/all-courses';\nimport PlaylistDetailCover from '../../molecule/playlist-detail-cover';\nimport {ContinueLearningButton} from '../skill-detail';\nimport style from './style.css';\n\nconst PlaylistDetail = (props, context) => {\n const {\n title,\n coverImages,\n playlistRef,\n description,\n ongoingCoursesAvailable,\n playlistCourses,\n filters,\n sorting,\n onBackClick,\n onContinueLearningClick,\n bannerMicrolearning = {}\n } = props;\n const descriptionRef = useRef(null);\n const {translate} = context;\n const {action: bannerMicrolearningAction, oldSwitchValue} = bannerMicrolearning;\n\n const [isDescriptionTruncated, setIsDescriptionTruncated] = useState(false);\n const [showMore, setShowMore] = useState(false);\n\n const handleShowMore = useCallback(() => setShowMore(!showMore), [setShowMore, showMore]);\n\n useEffect(() => {\n if (descriptionRef.current) {\n const {clientHeight = 0, scrollHeight = 0} = descriptionRef.current;\n setIsDescriptionTruncated(scrollHeight > clientHeight);\n }\n }, [description]);\n\n const Description = useCallback(() => {\n return (\n <div\n ref={descriptionRef}\n className={classnames(style.description, !showMore && style.truncate)}\n >\n <Markdown>{description}</Markdown>\n </div>\n );\n }, [showMore, description]);\n\n return (\n <div className={style.backgroundContainer}>\n <div className={style.container} data-name={playlistRef}>\n {!isNil(onBackClick) ? (\n <ButtonLinkIcon\n faIcon=\"arrow-left\"\n data-name=\"back-button\"\n aria-label={translate('back')}\n onClick={onBackClick}\n className={style.backButton}\n tooltipPlacement=\"right\"\n />\n ) : null}\n <div className={style.ctaContainer}>\n <div className={style.coverWrapper}>\n <PlaylistDetailCover images={coverImages} />\n </div>\n <div>\n <Tag label={translate('playlist')} />\n <div className={style.title}>{title}</div>\n {description ? (\n <>\n <Description />\n {isDescriptionTruncated ? (\n <div className={style.showMoreWrapper} onClick={handleShowMore}>\n {translate(showMore ? 'Show less' : 'Show more')}\n <Icon\n iconName={showMore ? 'chevron-up' : 'chevron-down'}\n size={{faSize: 14, wrapperSize: 16}}\n />\n </div>\n ) : null}\n </>\n ) : null}\n <div className={style.continueLearningButton}>\n <ContinueLearningButton\n ongoingCoursesAvailable={ongoingCoursesAvailable}\n onClick={onContinueLearningClick}\n />\n </div>\n </div>\n </div>\n <AllCourses\n content={playlistCourses}\n filters={filters}\n sorting={sorting}\n bannerMicrolearning={{\n type: 'playlist',\n action: bannerMicrolearningAction,\n oldSwitchValue\n }}\n />\n </div>\n </div>\n );\n};\n\nPlaylistDetail.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nPlaylistDetail.propTypes = {\n title: PropTypes.string.isRequired,\n coverImages: PlaylistDetailCover.propTypes.images,\n playlistRef: PropTypes.string.isRequired,\n description: PropTypes.string,\n ongoingCoursesAvailable: PropTypes.bool,\n playlistCourses: PropTypes.shape(CardsGrid.propTypes),\n filters: PropTypes.shape({\n onChange: PropTypes.func,\n options: PropTypes.arrayOf(PropTypes.shape(SelectOptionPropTypes))\n }),\n sorting: PropTypes.shape(Select.propTypes),\n onBackClick: PropTypes.func,\n onContinueLearningClick: PropTypes.func,\n bannerMicrolearning: {\n action: PropTypes.func,\n oldSwitchValue: PropTypes.bool\n }\n};\n\nexport default PlaylistDetail;\n"],"mappings":"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"}
|
|
@@ -74,7 +74,11 @@ declare namespace AllCourses {
|
|
|
74
74
|
'aria-label': PropTypes.Requireable<string>;
|
|
75
75
|
'aria-labelledby': PropTypes.Requireable<string>;
|
|
76
76
|
}>>;
|
|
77
|
-
const
|
|
77
|
+
const bannerMicrolearning: PropTypes.Requireable<PropTypes.InferProps<{
|
|
78
|
+
type: PropTypes.Requireable<string>;
|
|
79
|
+
action: PropTypes.Requireable<(...args: any[]) => any>;
|
|
80
|
+
oldSwitchValue: PropTypes.Requireable<boolean>;
|
|
81
|
+
}>>;
|
|
78
82
|
}
|
|
79
83
|
}
|
|
80
84
|
import PropTypes from "prop-types";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"all-courses.d.ts","sourceRoot":"","sources":["../../../src/template/skill-detail/all-courses.js"],"names":[],"mappings":";AAiDA,
|
|
1
|
+
{"version":3,"file":"all-courses.d.ts","sourceRoot":"","sources":["../../../src/template/skill-detail/all-courses.js"],"names":[],"mappings":";AAiDA,mEAgJC"}
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
4
|
exports.default = void 0;
|
|
5
5
|
|
|
6
|
+
var _isEmpty2 = _interopRequireDefault(require("lodash/fp/isEmpty"));
|
|
7
|
+
|
|
6
8
|
var _isNil2 = _interopRequireDefault(require("lodash/fp/isNil"));
|
|
7
9
|
|
|
8
10
|
var _size2 = _interopRequireDefault(require("lodash/fp/size"));
|
|
@@ -87,12 +89,15 @@ FilterButton.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
|
87
89
|
} : {};
|
|
88
90
|
|
|
89
91
|
const AllCourses = (props, context) => {
|
|
92
|
+
const {
|
|
93
|
+
translate
|
|
94
|
+
} = context;
|
|
90
95
|
const {
|
|
91
96
|
content,
|
|
92
97
|
filters,
|
|
93
98
|
sorting,
|
|
94
99
|
totalContents,
|
|
95
|
-
|
|
100
|
+
bannerMicrolearning = {}
|
|
96
101
|
} = props;
|
|
97
102
|
const {
|
|
98
103
|
options,
|
|
@@ -103,8 +108,10 @@ const AllCourses = (props, context) => {
|
|
|
103
108
|
loading
|
|
104
109
|
} = content;
|
|
105
110
|
const {
|
|
106
|
-
|
|
107
|
-
|
|
111
|
+
type: bannerMessageType,
|
|
112
|
+
action: bannerAction,
|
|
113
|
+
oldSwitchValue
|
|
114
|
+
} = bannerMicrolearning;
|
|
108
115
|
const [showCompleted, setShowCompleted] = (0, _react.useState)(true);
|
|
109
116
|
const [searchValue, setSearchValue] = (0, _react.useState)('');
|
|
110
117
|
const sortView = sorting !== undefined ? /*#__PURE__*/_react.default.createElement("div", {
|
|
@@ -157,15 +164,16 @@ const AllCourses = (props, context) => {
|
|
|
157
164
|
onChange: handleShowCompletedToggle
|
|
158
165
|
}), sortView ? /*#__PURE__*/_react.default.createElement("div", {
|
|
159
166
|
className: _allCourses.default.sortWrapper
|
|
160
|
-
}, translate('sort_by'), sortView) : null)),
|
|
167
|
+
}, translate('sort_by'), sortView) : null)), !(0, _isEmpty2.default)(bannerMicrolearning) ? /*#__PURE__*/_react.default.createElement("div", {
|
|
161
168
|
className: _allCourses.default.bannerWrapper
|
|
162
169
|
}, /*#__PURE__*/_react.default.createElement(_banner.default, {
|
|
163
170
|
type: "info",
|
|
164
|
-
message: translate('banner_microlearning_rule_message'),
|
|
171
|
+
message: bannerMessageType === 'skill' ? translate('banner_microlearning_rule_message_skill') : translate('banner_microlearning_rule_message'),
|
|
165
172
|
cta: [{
|
|
166
173
|
type: 'switch',
|
|
167
174
|
label: translate('banner_microlearning_rule_label'),
|
|
168
|
-
action:
|
|
175
|
+
action: bannerAction,
|
|
176
|
+
oldSwitchValue
|
|
169
177
|
}]
|
|
170
178
|
})) : null, /*#__PURE__*/_react.default.createElement("div", {
|
|
171
179
|
className: _allCourses.default.filterWrapper
|
|
@@ -224,7 +232,11 @@ AllCourses.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
|
224
232
|
options: _propTypes.default.arrayOf(_propTypes.default.shape(_select.SelectOptionPropTypes))
|
|
225
233
|
}),
|
|
226
234
|
sorting: _propTypes.default.shape(_select.default.propTypes),
|
|
227
|
-
|
|
235
|
+
bannerMicrolearning: _propTypes.default.shape({
|
|
236
|
+
type: _propTypes.default.oneOf(['skill', 'playlist']),
|
|
237
|
+
action: _propTypes.default.func,
|
|
238
|
+
oldSwitchValue: _propTypes.default.bool
|
|
239
|
+
})
|
|
228
240
|
} : {};
|
|
229
241
|
var _default = AllCourses;
|
|
230
242
|
exports.default = _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"all-courses.js","names":["uncappedMap","convert","cap","FilterButton","props","context","dataName","ariaLabel","selected","label","onClick","skin","primarySkinColor","buttonProps","customStyle","backgroundColor","color","transition","width","contextTypes","Provider","childContextTypes","translate","propTypes","PropTypes","string","bool","func","AllCourses","content","filters","sorting","totalContents","bannerMicrolearningRuleAction","options","onChange","list","loading","showCompleted","setShowCompleted","useState","searchValue","setSearchValue","sortView","undefined","filteredContent","useMemo","course","progress","contentResult","skill","searchValueIncluded","title","handleSearch","useCallback","value","handleSearchReset","handleShowCompletedToggle","prevShowCompleted","style","continueLearningWrapper","continueLearningTitle","continueLearningNumber","searchAndSortSection","searchWrapper","placeholder","sortSection","sortWrapper","bannerWrapper","type","action","filterWrapper","filterProps","index","name","handleFilterChange","filterButtonWrapper","divider","justifyContent","emptySearchResultContainer","emptySearchResultTitle","emptySearchResultDescription","emptySearchResultClearSearch","shape","CardsGrid","number","arrayOf","SelectOptionPropTypes","Select"],"sources":["../../../src/template/skill-detail/all-courses.js"],"sourcesContent":["import React, {useState, useCallback, useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport {get, filter, map, size, isNil} from 'lodash/fp';\nimport Provider from '../../atom/provider';\nimport Select, {SelectOptionPropTypes} from '../../atom/select';\nimport ButtonLink from '../../atom/button-link';\nimport SearchForm from '../../molecule/search-form';\nimport CardsGrid from '../../organism/cards-grid';\nimport searchValueIncluded from '../../util/search-value-included';\nimport InputSwitch from '../../atom/input-switch';\nimport Banner from '../../molecule/banner';\nimport style from './all-courses.css';\n\nconst uncappedMap = map.convert({cap: false});\n\nconst FilterButton = (props, context) => {\n const {dataName, ariaLabel, selected, label, onClick} = props;\n const {skin} = context;\n const primarySkinColor = get('common.primary', skin);\n\n const buttonProps = {\n customStyle: {\n backgroundColor: selected ? primarySkinColor : '#E1E1E3',\n color: selected ? '#FFFFFF' : '#515161',\n transition: 'background-color 0.15s ease-in-out, color 0.15s ease-in-out',\n width: 'fit-content'\n },\n label,\n onClick,\n 'data-name': dataName,\n 'aria-label': ariaLabel\n };\n\n return <ButtonLink {...buttonProps} />;\n};\n\nFilterButton.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nFilterButton.propTypes = {\n dataName: PropTypes.string,\n ariaLabel: PropTypes.string,\n selected: PropTypes.bool,\n label: PropTypes.string,\n onClick: PropTypes.func\n};\n\nconst AllCourses = (props, context) => {\n const {content, filters, sorting, totalContents, bannerMicrolearningRuleAction} = props;\n const {options, onChange} = filters;\n const {list, loading} = content;\n const {translate} = context;\n const [showCompleted, setShowCompleted] = useState(true);\n const [searchValue, setSearchValue] = useState('');\n\n const sortView =\n sorting !== undefined ? (\n <div data-name=\"choice\">\n <Select {...sorting} aria-label=\"All courses sort\" />\n </div>\n ) : null;\n\n const filteredContent = useMemo(() => {\n return showCompleted ? list : filter(course => course.progress < 1, list);\n }, [list, showCompleted]);\n\n const contentResult = useMemo(() => {\n return filter(skill => searchValueIncluded(skill.title, searchValue), filteredContent);\n }, [filteredContent, searchValue]);\n\n const handleSearch = useCallback(\n value => {\n setSearchValue(value);\n },\n [setSearchValue]\n );\n\n const handleSearchReset = useCallback(() => {\n setSearchValue('');\n }, [setSearchValue]);\n\n const handleShowCompletedToggle = useCallback(() => {\n setShowCompleted(prevShowCompleted => !prevShowCompleted);\n }, []);\n\n return (\n <>\n <div className={style.continueLearningWrapper}>\n <span className={style.continueLearningTitle}>{translate('all_content')}</span>\n <span className={style.continueLearningNumber}>\n {isNil(totalContents) ? size(contentResult) : totalContents}\n </span>\n </div>\n <div className={style.searchAndSortSection}>\n <div className={style.searchWrapper}>\n <SearchForm\n search={{\n placeholder: translate('search_place_holder'),\n value: searchValue,\n onChange: handleSearch\n }}\n onReset={handleSearchReset}\n dataTestId=\"all-courses-search-input\"\n />\n </div>\n <div className={style.sortSection}>\n <InputSwitch\n id={'show-completed-courses-switch'}\n type=\"switch\"\n name={translate('show_completed')}\n title={translate('show_completed')}\n aria-label={'Show completed courses aria label'}\n value={showCompleted}\n onChange={handleShowCompletedToggle}\n />\n {sortView ? (\n <div className={style.sortWrapper}>\n {translate('sort_by')}\n {sortView}\n </div>\n ) : null}\n </div>\n </div>\n {bannerMicrolearningRuleAction ? (\n <div className={style.bannerWrapper}>\n <Banner\n type=\"info\"\n message={translate('banner_microlearning_rule_message')}\n cta={[\n {\n type: 'switch',\n label: translate('banner_microlearning_rule_label'),\n action: bannerMicrolearningRuleAction\n }\n ]}\n />\n </div>\n ) : null}\n <div className={style.filterWrapper}>\n {size(options) > 2\n ? uncappedMap((filterProps, index) => {\n const {name, value, selected} = filterProps;\n\n function handleFilterChange() {\n onChange(value);\n }\n\n return (\n <div key={index} className={style.filterButtonWrapper}>\n <FilterButton\n dataName={`filter-button-${value}`}\n ariaLabel={`Filter by ${name}`}\n selected={selected}\n label={name}\n onClick={handleFilterChange}\n />\n {value === 'ALL' ? <div className={style.divider} /> : null}\n </div>\n );\n }, options)\n : null}\n </div>\n <div>\n {size(contentResult) ? (\n <CardsGrid\n list={contentResult}\n loading={loading}\n customStyle={{justifyContent: 'left'}}\n />\n ) : (\n <div className={style.emptySearchResultContainer}>\n <div className={style.emptySearchResultTitle}>\n {translate('empty_search_result_title', {searchValue})}\n </div>\n <div className={style.emptySearchResultDescription}>\n {translate('empty_search_result_description')}\n </div>\n <div className={style.emptySearchResultClearSearch} onClick={handleSearchReset}>\n {translate('empty_search_result_clear_search')}\n </div>\n </div>\n )}\n </div>\n </>\n );\n};\n\nAllCourses.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nAllCourses.propTypes = {\n content: PropTypes.shape(CardsGrid.propTypes),\n totalContents: PropTypes.number,\n filters: PropTypes.shape({\n onChange: PropTypes.func,\n options: PropTypes.arrayOf(PropTypes.shape(SelectOptionPropTypes))\n }),\n sorting: PropTypes.shape(Select.propTypes),\n bannerMicrolearningRuleAction: PropTypes.func\n};\n\nexport default AllCourses;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"all-courses.js","names":["uncappedMap","convert","cap","FilterButton","props","context","dataName","ariaLabel","selected","label","onClick","skin","primarySkinColor","buttonProps","customStyle","backgroundColor","color","transition","width","contextTypes","Provider","childContextTypes","translate","propTypes","PropTypes","string","bool","func","AllCourses","content","filters","sorting","totalContents","bannerMicrolearning","options","onChange","list","loading","type","bannerMessageType","action","bannerAction","oldSwitchValue","showCompleted","setShowCompleted","useState","searchValue","setSearchValue","sortView","undefined","filteredContent","useMemo","course","progress","contentResult","skill","searchValueIncluded","title","handleSearch","useCallback","value","handleSearchReset","handleShowCompletedToggle","prevShowCompleted","style","continueLearningWrapper","continueLearningTitle","continueLearningNumber","searchAndSortSection","searchWrapper","placeholder","sortSection","sortWrapper","bannerWrapper","filterWrapper","filterProps","index","name","handleFilterChange","filterButtonWrapper","divider","justifyContent","emptySearchResultContainer","emptySearchResultTitle","emptySearchResultDescription","emptySearchResultClearSearch","shape","CardsGrid","number","arrayOf","SelectOptionPropTypes","Select","oneOf"],"sources":["../../../src/template/skill-detail/all-courses.js"],"sourcesContent":["import React, {useState, useCallback, useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport {get, filter, map, size, isNil, isEmpty} from 'lodash/fp';\nimport Provider from '../../atom/provider';\nimport Select, {SelectOptionPropTypes} from '../../atom/select';\nimport ButtonLink from '../../atom/button-link';\nimport SearchForm from '../../molecule/search-form';\nimport CardsGrid from '../../organism/cards-grid';\nimport searchValueIncluded from '../../util/search-value-included';\nimport InputSwitch from '../../atom/input-switch';\nimport Banner from '../../molecule/banner';\nimport style from './all-courses.css';\n\nconst uncappedMap = map.convert({cap: false});\n\nconst FilterButton = (props, context) => {\n const {dataName, ariaLabel, selected, label, onClick} = props;\n const {skin} = context;\n const primarySkinColor = get('common.primary', skin);\n\n const buttonProps = {\n customStyle: {\n backgroundColor: selected ? primarySkinColor : '#E1E1E3',\n color: selected ? '#FFFFFF' : '#515161',\n transition: 'background-color 0.15s ease-in-out, color 0.15s ease-in-out',\n width: 'fit-content'\n },\n label,\n onClick,\n 'data-name': dataName,\n 'aria-label': ariaLabel\n };\n\n return <ButtonLink {...buttonProps} />;\n};\n\nFilterButton.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nFilterButton.propTypes = {\n dataName: PropTypes.string,\n ariaLabel: PropTypes.string,\n selected: PropTypes.bool,\n label: PropTypes.string,\n onClick: PropTypes.func\n};\n\nconst AllCourses = (props, context) => {\n const {translate} = context;\n const {content, filters, sorting, totalContents, bannerMicrolearning = {}} = props;\n const {options, onChange} = filters;\n const {list, loading} = content;\n const {type: bannerMessageType, action: bannerAction, oldSwitchValue} = bannerMicrolearning;\n const [showCompleted, setShowCompleted] = useState(true);\n const [searchValue, setSearchValue] = useState('');\n\n const sortView =\n sorting !== undefined ? (\n <div data-name=\"choice\">\n <Select {...sorting} aria-label=\"All courses sort\" />\n </div>\n ) : null;\n\n const filteredContent = useMemo(() => {\n return showCompleted ? list : filter(course => course.progress < 1, list);\n }, [list, showCompleted]);\n\n const contentResult = useMemo(() => {\n return filter(skill => searchValueIncluded(skill.title, searchValue), filteredContent);\n }, [filteredContent, searchValue]);\n\n const handleSearch = useCallback(\n value => {\n setSearchValue(value);\n },\n [setSearchValue]\n );\n\n const handleSearchReset = useCallback(() => {\n setSearchValue('');\n }, [setSearchValue]);\n\n const handleShowCompletedToggle = useCallback(() => {\n setShowCompleted(prevShowCompleted => !prevShowCompleted);\n }, []);\n\n return (\n <>\n <div className={style.continueLearningWrapper}>\n <span className={style.continueLearningTitle}>{translate('all_content')}</span>\n <span className={style.continueLearningNumber}>\n {isNil(totalContents) ? size(contentResult) : totalContents}\n </span>\n </div>\n <div className={style.searchAndSortSection}>\n <div className={style.searchWrapper}>\n <SearchForm\n search={{\n placeholder: translate('search_place_holder'),\n value: searchValue,\n onChange: handleSearch\n }}\n onReset={handleSearchReset}\n dataTestId=\"all-courses-search-input\"\n />\n </div>\n <div className={style.sortSection}>\n <InputSwitch\n id={'show-completed-courses-switch'}\n type=\"switch\"\n name={translate('show_completed')}\n title={translate('show_completed')}\n aria-label={'Show completed courses aria label'}\n value={showCompleted}\n onChange={handleShowCompletedToggle}\n />\n {sortView ? (\n <div className={style.sortWrapper}>\n {translate('sort_by')}\n {sortView}\n </div>\n ) : null}\n </div>\n </div>\n {!isEmpty(bannerMicrolearning) ? (\n <div className={style.bannerWrapper}>\n <Banner\n type=\"info\"\n message={\n bannerMessageType === 'skill'\n ? translate('banner_microlearning_rule_message_skill')\n : translate('banner_microlearning_rule_message')\n }\n cta={[\n {\n type: 'switch',\n label: translate('banner_microlearning_rule_label'),\n action: bannerAction,\n oldSwitchValue\n }\n ]}\n />\n </div>\n ) : null}\n <div className={style.filterWrapper}>\n {size(options) > 2\n ? uncappedMap((filterProps, index) => {\n const {name, value, selected} = filterProps;\n\n function handleFilterChange() {\n onChange(value);\n }\n\n return (\n <div key={index} className={style.filterButtonWrapper}>\n <FilterButton\n dataName={`filter-button-${value}`}\n ariaLabel={`Filter by ${name}`}\n selected={selected}\n label={name}\n onClick={handleFilterChange}\n />\n {value === 'ALL' ? <div className={style.divider} /> : null}\n </div>\n );\n }, options)\n : null}\n </div>\n <div>\n {size(contentResult) ? (\n <CardsGrid\n list={contentResult}\n loading={loading}\n customStyle={{justifyContent: 'left'}}\n />\n ) : (\n <div className={style.emptySearchResultContainer}>\n <div className={style.emptySearchResultTitle}>\n {translate('empty_search_result_title', {searchValue})}\n </div>\n <div className={style.emptySearchResultDescription}>\n {translate('empty_search_result_description')}\n </div>\n <div className={style.emptySearchResultClearSearch} onClick={handleSearchReset}>\n {translate('empty_search_result_clear_search')}\n </div>\n </div>\n )}\n </div>\n </>\n );\n};\n\nAllCourses.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nAllCourses.propTypes = {\n content: PropTypes.shape(CardsGrid.propTypes),\n totalContents: PropTypes.number,\n filters: PropTypes.shape({\n onChange: PropTypes.func,\n options: PropTypes.arrayOf(PropTypes.shape(SelectOptionPropTypes))\n }),\n sorting: PropTypes.shape(Select.propTypes),\n bannerMicrolearning: PropTypes.shape({\n type: PropTypes.oneOf(['skill', 'playlist']),\n action: PropTypes.func,\n oldSwitchValue: PropTypes.bool\n })\n};\n\nexport default AllCourses;\n"],"mappings":"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"}
|
|
@@ -123,7 +123,10 @@ declare namespace SkillDetail {
|
|
|
123
123
|
export const onBackClick: PropTypes.Requireable<(...args: any[]) => any>;
|
|
124
124
|
export const onReviewClick: PropTypes.Requireable<(...args: any[]) => any>;
|
|
125
125
|
export const onContinueLearningClick: PropTypes.Requireable<(...args: any[]) => any>;
|
|
126
|
-
export
|
|
126
|
+
export namespace bannerMicrolearning {
|
|
127
|
+
const action: PropTypes.Requireable<(...args: any[]) => any>;
|
|
128
|
+
const oldSwitchValue: PropTypes.Requireable<boolean>;
|
|
129
|
+
}
|
|
127
130
|
}
|
|
128
131
|
export { propTypes_1 as propTypes };
|
|
129
132
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/template/skill-detail/index.js"],"names":[],"mappings":"AAeO,8EA+BN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYD,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/template/skill-detail/index.js"],"names":[],"mappings":"AAeO,8EA+BN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYD,oEA0JC"}
|
|
@@ -96,7 +96,7 @@ const SkillDetail = (props, context) => {
|
|
|
96
96
|
onBackClick,
|
|
97
97
|
onReviewClick,
|
|
98
98
|
onContinueLearningClick,
|
|
99
|
-
|
|
99
|
+
bannerMicrolearning = {}
|
|
100
100
|
} = props;
|
|
101
101
|
const descriptionRef = (0, _react.useRef)(null);
|
|
102
102
|
const {
|
|
@@ -107,6 +107,10 @@ const SkillDetail = (props, context) => {
|
|
|
107
107
|
const {
|
|
108
108
|
translate
|
|
109
109
|
} = context;
|
|
110
|
+
const {
|
|
111
|
+
action: bannerMicrolearningAction,
|
|
112
|
+
oldSwitchValue
|
|
113
|
+
} = bannerMicrolearning;
|
|
110
114
|
const [isDescriptionTruncated, setIsDescriptionTruncated] = (0, _react.useState)(false);
|
|
111
115
|
const [showMore, setShowMore] = (0, _react.useState)(false);
|
|
112
116
|
const handleShowMore = (0, _react.useCallback)(() => setShowMore(!showMore), [setShowMore, showMore]);
|
|
@@ -203,7 +207,11 @@ const SkillDetail = (props, context) => {
|
|
|
203
207
|
filters: filters,
|
|
204
208
|
sorting: sorting,
|
|
205
209
|
totalContents: totalContents,
|
|
206
|
-
|
|
210
|
+
bannerMicrolearning: {
|
|
211
|
+
type: 'skill',
|
|
212
|
+
action: bannerMicrolearningAction,
|
|
213
|
+
oldSwitchValue
|
|
214
|
+
}
|
|
207
215
|
})));
|
|
208
216
|
};
|
|
209
217
|
|
|
@@ -232,7 +240,10 @@ SkillDetail.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
|
232
240
|
onBackClick: _propTypes.default.func,
|
|
233
241
|
onReviewClick: _propTypes.default.func,
|
|
234
242
|
onContinueLearningClick: _propTypes.default.func,
|
|
235
|
-
|
|
243
|
+
bannerMicrolearning: {
|
|
244
|
+
action: _propTypes.default.func,
|
|
245
|
+
oldSwitchValue: _propTypes.default.bool
|
|
246
|
+
}
|
|
236
247
|
} : {};
|
|
237
248
|
var _default = SkillDetail;
|
|
238
249
|
exports.default = _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["ContinueLearningButton","props","context","ongoingCoursesAvailable","onClick","skin","translate","primarySkinColor","width","borderRadius","backgroundColor","convert","position","faIcon","name","color","size","contextTypes","Provider","childContextTypes","propTypes","PropTypes","bool","func","SkillDetail","title","skillRef","description","metrics","focused","availableForReview","skillIncludedCourses","filters","sorting","onBackClick","onReviewClick","onContinueLearningClick","bannerMicrolearningRuleAction","descriptionRef","useRef","score","questionsToReview","totalContents","isDescriptionTruncated","setIsDescriptionTruncated","useState","showMore","setShowMore","handleShowMore","useCallback","useEffect","current","clientHeight","scrollHeight","Description","classnames","style","truncate","ProgressBar","undefined","progressBarColor","inlineProgressValueStyle","progressBarWrapper","progress","backgroundContainer","container","backButton","ctaContainer","skillFocusBadge","faSize","wrapperSize","showMoreWrapper","ctaWrapper","skillInformation","skillInformationNumber","progressContainer","progressInformationNumber","toFixed","string","isRequired","shape","number","CardsGrid","onChange","options","arrayOf","SelectOptionPropTypes","Select"],"sources":["../../../src/template/skill-detail/index.js"],"sourcesContent":["import React, {useCallback, useState, useRef, useEffect} from 'react';\nimport PropTypes from 'prop-types';\nimport {convert} from 'css-color-function';\nimport classnames from 'classnames';\nimport {get, isNil} from 'lodash/fp';\nimport Markdown from 'markdown-to-jsx';\nimport Provider from '../../atom/provider';\nimport Select, {SelectOptionPropTypes} from '../../atom/select';\nimport ButtonLink from '../../atom/button-link';\nimport ButtonLinkIcon from '../../atom/button-link-icon';\nimport Icon from '../../atom/icon';\nimport CardsGrid from '../../organism/cards-grid';\nimport style from './style.css';\nimport AllCourses from './all-courses';\n\nexport const ContinueLearningButton = (props, context) => {\n const {ongoingCoursesAvailable, onClick} = props;\n const {skin, translate} = context;\n const primarySkinColor = get('common.primary', skin);\n\n return (\n <div>\n <ButtonLink\n label={\n ongoingCoursesAvailable ? translate('continue_learning') : translate('start_learning')\n }\n type=\"primary\"\n customStyle={{\n width: 'fit-content',\n borderRadius: '12px',\n backgroundColor: primarySkinColor\n }}\n hoverBackgroundColor={convert(`hsl(from ${primarySkinColor} h s calc(l*(1 - 0.08)))`)}\n hoverColor=\"#FFFFFF\"\n icon={{\n position: 'left',\n faIcon: {\n name: 'play',\n color: '#FFFFFF',\n size: 16\n }\n }}\n onClick={onClick}\n />\n </div>\n );\n};\n\nContinueLearningButton.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nContinueLearningButton.propTypes = {\n ongoingCoursesAvailable: PropTypes.bool,\n onClick: PropTypes.func\n};\n\nconst SkillDetail = (props, context) => {\n const {\n title,\n skillRef,\n description,\n metrics = {},\n focused,\n availableForReview,\n ongoingCoursesAvailable,\n skillIncludedCourses,\n filters,\n sorting,\n onBackClick,\n onReviewClick,\n onContinueLearningClick,\n bannerMicrolearningRuleAction = null\n } = props;\n const descriptionRef = useRef(null);\n const {score = 0, questionsToReview, totalContents} = metrics;\n const {translate} = context;\n\n const [isDescriptionTruncated, setIsDescriptionTruncated] = useState(false);\n const [showMore, setShowMore] = useState(false);\n\n const handleShowMore = useCallback(() => setShowMore(!showMore), [setShowMore, showMore]);\n\n useEffect(() => {\n if (descriptionRef.current) {\n const {clientHeight = 0, scrollHeight = 0} = descriptionRef.current;\n setIsDescriptionTruncated(scrollHeight > clientHeight);\n }\n }, [description]);\n\n const Description = useCallback(() => {\n return (\n <div\n ref={descriptionRef}\n className={classnames(style.description, !showMore && style.truncate)}\n >\n <Markdown>{description}</Markdown>\n </div>\n );\n }, [showMore, description]);\n\n const ProgressBar = useCallback(() => {\n if (score === undefined) return null;\n const progressBarColor = '#3EC483';\n const inlineProgressValueStyle = {\n backgroundColor: progressBarColor,\n width: `${score}%`\n };\n\n return (\n <div className={style.progressBarWrapper}>\n <div\n data-name=\"progress\"\n className={style.progress}\n style={inlineProgressValueStyle}\n role=\"progressbar\"\n />\n </div>\n );\n }, [score]);\n\n return (\n <div className={style.backgroundContainer}>\n <div className={style.container} data-name={skillRef}>\n {!isNil(onBackClick) ? (\n <ButtonLinkIcon\n faIcon=\"arrow-left\"\n data-name=\"back-button\"\n aria-label={translate('back')}\n onClick={onBackClick}\n className={style.backButton}\n tooltipPlacement=\"right\"\n />\n ) : null}\n <div className={style.ctaContainer}>\n <div>\n {focused ? (\n <div className={style.skillFocusBadge}>\n <Icon\n iconName=\"bullseye-arrow\"\n backgroundColor=\"#DDD1FF\"\n size={{\n faSize: 10,\n wrapperSize: 16\n }}\n />\n {translate('skill_focus')}\n </div>\n ) : null}\n <div className={style.title}>{title}</div>\n {description ? (\n <>\n <Description />\n {isDescriptionTruncated ? (\n <div className={style.showMoreWrapper} onClick={handleShowMore}>\n {showMore ? translate('Show less') : translate('Show more')}\n <Icon\n iconName={showMore ? 'chevron-up' : 'chevron-down'}\n size={{\n faSize: 14,\n wrapperSize: 16\n }}\n />\n </div>\n ) : null}\n </>\n ) : null}\n </div>\n\n <div className={style.ctaWrapper}>\n <ButtonLink\n type=\"secondary\"\n onClick={onReviewClick}\n label={translate('review_this_skill')}\n disabled={!availableForReview}\n customStyle={{\n width: 'fit-content',\n borderRadius: '12px'\n }}\n />\n <ContinueLearningButton\n ongoingCoursesAvailable={ongoingCoursesAvailable}\n onClick={onContinueLearningClick}\n />\n </div>\n </div>\n {questionsToReview > 0 ? (\n <div className={style.skillInformation} data-name=\"skill-questions\">\n <span className={style.skillInformationNumber}>{questionsToReview}</span>\n {translate('skill_chart_side_panel_questions_to_review')}\n </div>\n ) : null}\n <div className={style.progressContainer}>\n <ProgressBar />\n <span className={style.progressInformationNumber}>{score.toFixed(1)}%</span>\n </div>\n <AllCourses\n content={skillIncludedCourses}\n filters={filters}\n sorting={sorting}\n totalContents={totalContents}\n bannerMicrolearningRuleAction={bannerMicrolearningRuleAction}\n />\n </div>\n </div>\n );\n};\n\nSkillDetail.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nSkillDetail.propTypes = {\n title: PropTypes.string.isRequired,\n skillRef: PropTypes.string.isRequired,\n description: PropTypes.string,\n metrics: PropTypes.shape({\n score: PropTypes.number,\n questionsToReview: PropTypes.number,\n totalContents: PropTypes.number\n }),\n focused: PropTypes.bool,\n availableForReview: PropTypes.bool,\n ongoingCoursesAvailable: PropTypes.bool,\n skillIncludedCourses: PropTypes.shape(CardsGrid.propTypes),\n filters: PropTypes.shape({\n onChange: PropTypes.func,\n options: PropTypes.arrayOf(PropTypes.shape(SelectOptionPropTypes))\n }),\n sorting: PropTypes.shape(Select.propTypes),\n onBackClick: PropTypes.func,\n onReviewClick: PropTypes.func,\n onContinueLearningClick: PropTypes.func,\n bannerMicrolearningRuleAction: PropTypes.func\n};\n\nexport default SkillDetail;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["ContinueLearningButton","props","context","ongoingCoursesAvailable","onClick","skin","translate","primarySkinColor","width","borderRadius","backgroundColor","convert","position","faIcon","name","color","size","contextTypes","Provider","childContextTypes","propTypes","PropTypes","bool","func","SkillDetail","title","skillRef","description","metrics","focused","availableForReview","skillIncludedCourses","filters","sorting","onBackClick","onReviewClick","onContinueLearningClick","bannerMicrolearning","descriptionRef","useRef","score","questionsToReview","totalContents","action","bannerMicrolearningAction","oldSwitchValue","isDescriptionTruncated","setIsDescriptionTruncated","useState","showMore","setShowMore","handleShowMore","useCallback","useEffect","current","clientHeight","scrollHeight","Description","classnames","style","truncate","ProgressBar","undefined","progressBarColor","inlineProgressValueStyle","progressBarWrapper","progress","backgroundContainer","container","backButton","ctaContainer","skillFocusBadge","faSize","wrapperSize","showMoreWrapper","ctaWrapper","skillInformation","skillInformationNumber","progressContainer","progressInformationNumber","toFixed","type","string","isRequired","shape","number","CardsGrid","onChange","options","arrayOf","SelectOptionPropTypes","Select"],"sources":["../../../src/template/skill-detail/index.js"],"sourcesContent":["import React, {useCallback, useState, useRef, useEffect} from 'react';\nimport PropTypes from 'prop-types';\nimport {convert} from 'css-color-function';\nimport classnames from 'classnames';\nimport {get, isNil} from 'lodash/fp';\nimport Markdown from 'markdown-to-jsx';\nimport Provider from '../../atom/provider';\nimport Select, {SelectOptionPropTypes} from '../../atom/select';\nimport ButtonLink from '../../atom/button-link';\nimport ButtonLinkIcon from '../../atom/button-link-icon';\nimport Icon from '../../atom/icon';\nimport CardsGrid from '../../organism/cards-grid';\nimport style from './style.css';\nimport AllCourses from './all-courses';\n\nexport const ContinueLearningButton = (props, context) => {\n const {ongoingCoursesAvailable, onClick} = props;\n const {skin, translate} = context;\n const primarySkinColor = get('common.primary', skin);\n\n return (\n <div>\n <ButtonLink\n label={\n ongoingCoursesAvailable ? translate('continue_learning') : translate('start_learning')\n }\n type=\"primary\"\n customStyle={{\n width: 'fit-content',\n borderRadius: '12px',\n backgroundColor: primarySkinColor\n }}\n hoverBackgroundColor={convert(`hsl(from ${primarySkinColor} h s calc(l*(1 - 0.08)))`)}\n hoverColor=\"#FFFFFF\"\n icon={{\n position: 'left',\n faIcon: {\n name: 'play',\n color: '#FFFFFF',\n size: 16\n }\n }}\n onClick={onClick}\n />\n </div>\n );\n};\n\nContinueLearningButton.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nContinueLearningButton.propTypes = {\n ongoingCoursesAvailable: PropTypes.bool,\n onClick: PropTypes.func\n};\n\nconst SkillDetail = (props, context) => {\n const {\n title,\n skillRef,\n description,\n metrics = {},\n focused,\n availableForReview,\n ongoingCoursesAvailable,\n skillIncludedCourses,\n filters,\n sorting,\n onBackClick,\n onReviewClick,\n onContinueLearningClick,\n bannerMicrolearning = {}\n } = props;\n const descriptionRef = useRef(null);\n const {score = 0, questionsToReview, totalContents} = metrics;\n const {translate} = context;\n const {action: bannerMicrolearningAction, oldSwitchValue} = bannerMicrolearning;\n\n const [isDescriptionTruncated, setIsDescriptionTruncated] = useState(false);\n const [showMore, setShowMore] = useState(false);\n\n const handleShowMore = useCallback(() => setShowMore(!showMore), [setShowMore, showMore]);\n\n useEffect(() => {\n if (descriptionRef.current) {\n const {clientHeight = 0, scrollHeight = 0} = descriptionRef.current;\n setIsDescriptionTruncated(scrollHeight > clientHeight);\n }\n }, [description]);\n\n const Description = useCallback(() => {\n return (\n <div\n ref={descriptionRef}\n className={classnames(style.description, !showMore && style.truncate)}\n >\n <Markdown>{description}</Markdown>\n </div>\n );\n }, [showMore, description]);\n\n const ProgressBar = useCallback(() => {\n if (score === undefined) return null;\n const progressBarColor = '#3EC483';\n const inlineProgressValueStyle = {\n backgroundColor: progressBarColor,\n width: `${score}%`\n };\n\n return (\n <div className={style.progressBarWrapper}>\n <div\n data-name=\"progress\"\n className={style.progress}\n style={inlineProgressValueStyle}\n role=\"progressbar\"\n />\n </div>\n );\n }, [score]);\n\n return (\n <div className={style.backgroundContainer}>\n <div className={style.container} data-name={skillRef}>\n {!isNil(onBackClick) ? (\n <ButtonLinkIcon\n faIcon=\"arrow-left\"\n data-name=\"back-button\"\n aria-label={translate('back')}\n onClick={onBackClick}\n className={style.backButton}\n tooltipPlacement=\"right\"\n />\n ) : null}\n <div className={style.ctaContainer}>\n <div>\n {focused ? (\n <div className={style.skillFocusBadge}>\n <Icon\n iconName=\"bullseye-arrow\"\n backgroundColor=\"#DDD1FF\"\n size={{\n faSize: 10,\n wrapperSize: 16\n }}\n />\n {translate('skill_focus')}\n </div>\n ) : null}\n <div className={style.title}>{title}</div>\n {description ? (\n <>\n <Description />\n {isDescriptionTruncated ? (\n <div className={style.showMoreWrapper} onClick={handleShowMore}>\n {showMore ? translate('Show less') : translate('Show more')}\n <Icon\n iconName={showMore ? 'chevron-up' : 'chevron-down'}\n size={{\n faSize: 14,\n wrapperSize: 16\n }}\n />\n </div>\n ) : null}\n </>\n ) : null}\n </div>\n\n <div className={style.ctaWrapper}>\n <ButtonLink\n type=\"secondary\"\n onClick={onReviewClick}\n label={translate('review_this_skill')}\n disabled={!availableForReview}\n customStyle={{\n width: 'fit-content',\n borderRadius: '12px'\n }}\n />\n <ContinueLearningButton\n ongoingCoursesAvailable={ongoingCoursesAvailable}\n onClick={onContinueLearningClick}\n />\n </div>\n </div>\n {questionsToReview > 0 ? (\n <div className={style.skillInformation} data-name=\"skill-questions\">\n <span className={style.skillInformationNumber}>{questionsToReview}</span>\n {translate('skill_chart_side_panel_questions_to_review')}\n </div>\n ) : null}\n <div className={style.progressContainer}>\n <ProgressBar />\n <span className={style.progressInformationNumber}>{score.toFixed(1)}%</span>\n </div>\n <AllCourses\n content={skillIncludedCourses}\n filters={filters}\n sorting={sorting}\n totalContents={totalContents}\n bannerMicrolearning={{\n type: 'skill',\n action: bannerMicrolearningAction,\n oldSwitchValue\n }}\n />\n </div>\n </div>\n );\n};\n\nSkillDetail.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nSkillDetail.propTypes = {\n title: PropTypes.string.isRequired,\n skillRef: PropTypes.string.isRequired,\n description: PropTypes.string,\n metrics: PropTypes.shape({\n score: PropTypes.number,\n questionsToReview: PropTypes.number,\n totalContents: PropTypes.number\n }),\n focused: PropTypes.bool,\n availableForReview: PropTypes.bool,\n ongoingCoursesAvailable: PropTypes.bool,\n skillIncludedCourses: PropTypes.shape(CardsGrid.propTypes),\n filters: PropTypes.shape({\n onChange: PropTypes.func,\n options: PropTypes.arrayOf(PropTypes.shape(SelectOptionPropTypes))\n }),\n sorting: PropTypes.shape(Select.propTypes),\n onBackClick: PropTypes.func,\n onReviewClick: PropTypes.func,\n onContinueLearningClick: PropTypes.func,\n bannerMicrolearning: {\n action: PropTypes.func,\n oldSwitchValue: PropTypes.bool\n }\n};\n\nexport default SkillDetail;\n"],"mappings":"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"}
|
package/locales/bs/global.json
CHANGED
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
"back_to_catalog": "Povratak na kurseve",
|
|
17
17
|
"badge": "Značka",
|
|
18
18
|
"banner_microlearning_rule_message": "5'Učenje se ne ubraja u prioritete učenja i skriveno je.",
|
|
19
|
+
"banner_microlearning_rule_message_skill": "Tvojih 5'Learning se ne računa u napredak vještina i sakriveno je.",
|
|
19
20
|
"banner_microlearning_rule_label": "Prikaži 5'Učenje",
|
|
20
21
|
"bonus_stars": "Bonus zvjezdice",
|
|
21
22
|
"certificates": "Certifikati",
|
package/locales/cs/global.json
CHANGED
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
"back_to_catalog": "Zpět na kurzy",
|
|
17
17
|
"badge": "Odznak",
|
|
18
18
|
"banner_microlearning_rule_message": "5minutové učení se nezapočítává do vzdělávacích priorit a bylo skryto.",
|
|
19
|
+
"banner_microlearning_rule_message_skill": "Tvých 5'Learning se nepočítá do pokroku dovedností a bylo skryto.",
|
|
19
20
|
"banner_microlearning_rule_label": "Zobrazit 5minutové učení",
|
|
20
21
|
"bonus_stars": "Bonusové hvězdy",
|
|
21
22
|
"certificates": "Certifikáty",
|
package/locales/de/global.json
CHANGED
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
"back_to_catalog": "Zurück zu den Kursen",
|
|
17
17
|
"badge": "Abzeichen",
|
|
18
18
|
"banner_microlearning_rule_message": "5'Learning zählt nicht zu den Lernprioritäten und wurde ausgeblendet.",
|
|
19
|
+
"banner_microlearning_rule_message_skill": "Dein 5'Learning zählt nicht zum Fortschritt der Fähigkeiten und wurde ausgeblendet.",
|
|
19
20
|
"banner_microlearning_rule_label": "5'Learning anzeigen",
|
|
20
21
|
"bonus_stars": "Bonussterne",
|
|
21
22
|
"certificates": "Zertifikate",
|
package/locales/en/global.json
CHANGED
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
"back_to_catalog": "Back to courses",
|
|
17
17
|
"badge": "Badge",
|
|
18
18
|
"banner_microlearning_rule_message": "5'Learning do not count towards the learning priorities and have been hidden.",
|
|
19
|
+
"banner_microlearning_rule_message_skill": "5'Learning do not count towards skill progress and have been hidden.",
|
|
19
20
|
"banner_microlearning_rule_label": "Show 5'Learning",
|
|
20
21
|
"bonus_stars": "Bonus stars",
|
|
21
22
|
"certificates": "Certificates",
|
package/locales/es/global.json
CHANGED
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
"back_to_catalog": "Volver a los cursos",
|
|
17
17
|
"badge": "Insignia",
|
|
18
18
|
"banner_microlearning_rule_message": "5'Learning no cuenta para las prioridades de aprendizaje y han sido ocultados.",
|
|
19
|
+
"banner_microlearning_rule_message_skill": "Tu 5'Learning no cuenta en el progreso de las habilidades y ha sido ocultado.",
|
|
19
20
|
"banner_microlearning_rule_label": "Mostrar 5'Learning",
|
|
20
21
|
"bonus_stars": "Estrellas extra",
|
|
21
22
|
"certificates": "Certificados",
|
package/locales/et/global.json
CHANGED
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
"back_to_catalog": "Tagasi kursuste esilehele",
|
|
17
17
|
"badge": "Märk",
|
|
18
18
|
"banner_microlearning_rule_message": "5'Õppimine ei kuulu õpieesmärkide hulka ja on peidetud.",
|
|
19
|
+
"banner_microlearning_rule_message_skill": "Sinu 5'Learning ei arvestata oskuste arengus ja see on peidetud.",
|
|
19
20
|
"banner_microlearning_rule_label": "Näita 5'õppimist",
|
|
20
21
|
"bonus_stars": "Boonustähed",
|
|
21
22
|
"certificates": "Sertifikaadid",
|
package/locales/fi/global.json
CHANGED
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
"back_to_catalog": "Takaisin kursseihin",
|
|
17
17
|
"badge": "Kunniamerkki",
|
|
18
18
|
"banner_microlearning_rule_message": "5'Learningiä ei lasketa osaksi oppimisprioriteetteja ja se on piilotettu.",
|
|
19
|
+
"banner_microlearning_rule_message_skill": "Sinun 5'Learning ei lasketa taitojen edistymiseen ja se on piilotettu.",
|
|
19
20
|
"banner_microlearning_rule_label": "Näytä 5'Learning",
|
|
20
21
|
"bonus_stars": "Bonustähdet",
|
|
21
22
|
"certificates": "Todistukset",
|
package/locales/fr/global.json
CHANGED
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
"back_to_catalog": "Retour aux cours",
|
|
17
17
|
"badge": "Badge",
|
|
18
18
|
"banner_microlearning_rule_message": "5'Learning ne fait pas partie des priorités d'apprentissage et a été masqué.",
|
|
19
|
+
"banner_microlearning_rule_message_skill": "Tes 5'Learning ne compte pas dans la progression des compétences et a été masqué.",
|
|
19
20
|
"banner_microlearning_rule_label": "Afficher 5'Learning",
|
|
20
21
|
"bonus_stars": "Étoiles bonus",
|
|
21
22
|
"certificates": "Certificats",
|
package/locales/hr/global.json
CHANGED
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
"back_to_catalog": "Povratak na tečajeve",
|
|
17
17
|
"badge": "Značka",
|
|
18
18
|
"banner_microlearning_rule_message": "5'Learning se ne računaju u prioritete učenja i bili su skriveni.",
|
|
19
|
+
"banner_microlearning_rule_message_skill": "Tvojih 5'Learning se ne računa u napredak vještina i sakriveno je.",
|
|
19
20
|
"banner_microlearning_rule_label": "Prikaži 5'Learning",
|
|
20
21
|
"bonus_stars": "Bonus zvijezde",
|
|
21
22
|
"certificates": "Certifikati",
|
package/locales/hu/global.json
CHANGED
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
"back_to_catalog": "Vissza a képzésekhez",
|
|
17
17
|
"badge": "Jelvény",
|
|
18
18
|
"banner_microlearning_rule_message": "A 5'Learning nem számít a tanulási prioritások közé, és el van rejtve.",
|
|
19
|
+
"banner_microlearning_rule_message_skill": "Az 5'Learning-ed nem számít a készségek fejlődésébe, és el lett rejtve.",
|
|
19
20
|
"banner_microlearning_rule_label": "5'Learning mutatása",
|
|
20
21
|
"bonus_stars": "Bónusz sztárok",
|
|
21
22
|
"certificates": "Minősítések",
|
package/locales/hy/global.json
CHANGED
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
"back_to_catalog": "Վերադառնալ դասընթացներին",
|
|
17
17
|
"badge": "Կրծքանշան",
|
|
18
18
|
"banner_microlearning_rule_message": "5'Ուսուցումը չի հաշվվում ուսուցման առաջնահերթությունների մեջ և թաքնված է:",
|
|
19
|
+
"banner_microlearning_rule_message_skill": "Քո 5'Learning-ը չի հաշվում հմտությունների առաջընթացում և թաքցվել է։",
|
|
19
20
|
"banner_microlearning_rule_label": "Ցույց տալ 5'Ուսուցում",
|
|
20
21
|
"bonus_stars": "Բոնուս աստղեր",
|
|
21
22
|
"certificates": "Վկայականներ",
|
package/locales/it/global.json
CHANGED
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
"back_to_catalog": "Torna ai corsi",
|
|
17
17
|
"badge": "Distintivo",
|
|
18
18
|
"banner_microlearning_rule_message": "5'Lerning non conta nelle priorità di apprendimento ed è stato nascosto.",
|
|
19
|
+
"banner_microlearning_rule_message_skill": "Il tuo 5'Learning non viene conteggiato nei progressi delle competenze ed è stato nascosto.",
|
|
19
20
|
"banner_microlearning_rule_label": "Mostra 5'Learning",
|
|
20
21
|
"bonus_stars": "Stelle bonus",
|
|
21
22
|
"certificates": "Certificati",
|
package/locales/ja/global.json
CHANGED
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
"back_to_catalog": "コースに戻る",
|
|
17
17
|
"badge": "バッジ",
|
|
18
18
|
"banner_microlearning_rule_message": "5'Learningは学習の優先順位にカウントされず、非表示になっています。",
|
|
19
|
+
"banner_microlearning_rule_message_skill": "あなたの 5'Learning はスキルの進捗にカウントされず、非表示になりました。",
|
|
19
20
|
"banner_microlearning_rule_label": "5'Learning を表示",
|
|
20
21
|
"bonus_stars": "ボーナススター",
|
|
21
22
|
"certificates": "認定書",
|
package/locales/ko/global.json
CHANGED
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
"back_to_catalog": "코스로 돌아가기",
|
|
17
17
|
"badge": "배지",
|
|
18
18
|
"banner_microlearning_rule_message": "5'Learning은 학습 우선순위에 포함되지 않으며, 숨김 처리되었습니다.",
|
|
19
|
+
"banner_microlearning_rule_message_skill": "당신의 5'Learning은 기술 향상에 포함되지 않으며 숨겨졌습니다.",
|
|
19
20
|
"banner_microlearning_rule_label": "5'Learning 표시",
|
|
20
21
|
"bonus_stars": "보너스 별",
|
|
21
22
|
"certificates": "증명서",
|