@coorpacademy/components 11.32.42-alpha.9 → 11.32.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/atom/select-icon/index.d.ts +17 -0
- package/es/atom/select-icon/index.d.ts.map +1 -0
- package/es/atom/select-icon/index.js +93 -0
- package/es/atom/select-icon/index.js.map +1 -0
- package/es/atom/select-icon/style.css +73 -0
- package/es/molecule/learner-skill-card/index.d.ts +0 -1
- package/es/molecule/learner-skill-card/index.d.ts.map +1 -1
- package/es/molecule/learner-skill-card/index.js +22 -42
- package/es/molecule/learner-skill-card/index.js.map +1 -1
- package/es/molecule/learner-skill-card/style.css +4 -7
- package/es/template/certification-detail/index.d.ts.map +1 -1
- package/es/template/certification-detail/index.js +7 -5
- package/es/template/certification-detail/index.js.map +1 -1
- package/es/template/certifications/style.css +1 -1
- package/es/template/my-learning/index.d.ts.map +1 -1
- package/es/template/my-learning/index.js +2 -4
- package/es/template/my-learning/index.js.map +1 -1
- package/es/template/playlist-detail/index.d.ts.map +1 -1
- package/es/template/playlist-detail/index.js +15 -4
- package/es/template/playlist-detail/index.js.map +1 -1
- package/es/template/playlist-detail/style.css +0 -1
- package/es/template/skill-detail/index.d.ts.map +1 -1
- package/es/template/skill-detail/index.js +15 -3
- package/es/template/skill-detail/index.js.map +1 -1
- package/es/variables/colors.d.ts +1 -0
- package/es/variables/colors.d.ts.map +1 -1
- package/es/variables/colors.js +1 -0
- package/es/variables/colors.js.map +1 -1
- package/lib/atom/select-icon/index.d.ts +17 -0
- package/lib/atom/select-icon/index.d.ts.map +1 -0
- package/lib/atom/select-icon/index.js +111 -0
- package/lib/atom/select-icon/index.js.map +1 -0
- package/lib/atom/select-icon/style.css +73 -0
- package/lib/molecule/learner-skill-card/index.d.ts +0 -1
- package/lib/molecule/learner-skill-card/index.d.ts.map +1 -1
- package/lib/molecule/learner-skill-card/index.js +24 -45
- package/lib/molecule/learner-skill-card/index.js.map +1 -1
- package/lib/molecule/learner-skill-card/style.css +4 -7
- package/lib/template/certification-detail/index.d.ts.map +1 -1
- package/lib/template/certification-detail/index.js +7 -5
- package/lib/template/certification-detail/index.js.map +1 -1
- package/lib/template/certifications/style.css +1 -1
- package/lib/template/my-learning/index.d.ts.map +1 -1
- package/lib/template/my-learning/index.js +2 -4
- package/lib/template/my-learning/index.js.map +1 -1
- package/lib/template/playlist-detail/index.d.ts.map +1 -1
- package/lib/template/playlist-detail/index.js +14 -4
- package/lib/template/playlist-detail/index.js.map +1 -1
- package/lib/template/playlist-detail/style.css +0 -1
- package/lib/template/skill-detail/index.d.ts.map +1 -1
- package/lib/template/skill-detail/index.js +14 -2
- package/lib/template/skill-detail/index.js.map +1 -1
- package/lib/variables/colors.d.ts +1 -0
- package/lib/variables/colors.d.ts.map +1 -1
- package/lib/variables/colors.js +1 -0
- package/lib/variables/colors.js.map +1 -1
- package/locales/bs/global.json +2 -0
- package/locales/cs/global.json +2 -0
- package/locales/de/global.json +2 -0
- package/locales/es/global.json +2 -0
- package/locales/et/global.json +2 -0
- package/locales/fi/global.json +2 -0
- package/locales/fr/global.json +2 -0
- package/locales/hr/global.json +2 -0
- package/locales/hu/global.json +2 -0
- package/locales/hy/global.json +2 -0
- package/locales/it/global.json +2 -0
- package/locales/ja/global.json +2 -0
- package/locales/ko/global.json +2 -0
- package/locales/nl/global.json +2 -0
- package/locales/pl/global.json +2 -0
- package/locales/pt/global.json +2 -0
- package/locales/ro/global.json +2 -0
- package/locales/ru/global.json +2 -0
- package/locales/sk/global.json +2 -0
- package/locales/sl/global.json +2 -0
- package/locales/sv/global.json +2 -0
- package/locales/tl/global.json +2 -0
- package/locales/tr/global.json +2 -0
- package/locales/uk/global.json +2 -0
- package/locales/vi/global.json +2 -0
- package/locales/zh/global.json +2 -0
- package/locales/zh_TW/global.json +2 -0
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["ChangeSkillFocusButton","props","context","onClick","skin","translate","primarySkinColor","backgroundColor","convert","color","transition","position","faIcon","name","size","contextTypes","Provider","childContextTypes","propTypes","PropTypes","func","FilterButton","active","filter","skillTotal","Content","useCallback","style","skillFilterNumber","skillFilterNumberInActive","buttonProps","customStyle","width","content","bool","string","number","MyLearning","skills","selectedSkills","skillsInformation","skillsLocales","learnerFeature","isLoading","onSkillFocusConfirm","onReviewSkill","onExploreSkill","learningPriorities","open","setOpen","useState","selectedSkillsList","setSelectedSkillsList","skillFocusSelectedOnChart","setSkillFocusSelectedOnChart","undefined","searchValue","setSearchValue","searchResults","setSearchResults","skillRef","activeFilter","setActiveFilter","skillsReviewReady","useMemo","skill","availableForReview","graphDatas","toFixed","graphLegends","filters","all","review","sumKpi","kpi","skillFocusSelectedOnChartScore","stats","coursedCompletedData","questionsToReviewData","learningTimeData","skillChartPaneLegends","focusedSkill","skillChartPanelProps","title","value","legend","icon","iconName","formatMinutes","skillsScore","handleOnDotClick","handleOpenSkillPicker","handleCloseSkillPicker","handleConfirmSkillPicker","focusSkillList","handleSearch","searchValueIncluded","handleSearchReset","ReviewTooltipContent","backgroundContainer","cards","cardsListContainer","type","subtitle","iconColor","borderRadius","tag","label","container","skillFocusContainer","skillFocusHeader","skillFocusHeaderWrapper","skillFocusHeaderIcon","faSize","wrapperSize","skillFocusHeaderContent","skillFocusHeaderTitle","skillFocusHeaderDescription","length","skillFocusContent","radarContainer","gradient","fill","stroke","percentage","background","skillFocusEmpty","img","skillFocusEmptyTitle","skillFocusEmptyDescription","skillListHeader","skillListHeaderIcon","skillListHeaderContent","skillListHeaderTitle","skillListHeaderDescription","infoIconTooltip","tooltip","toolBarContainer","skillFilterContainer","map","index","handleFilterClick","searchWrapper","placeholder","onChange","emptySearchResultContainer","emptySearchResultTitle","emptySearchResultDescription","emptySearchResultClearSearch","skillListContainer","skillListEmptyContainer","defaultStats","score","contentCompleted","questionsToReview","handleReviewSkill","handleExploreSkill","includes","arrayOf","objectOf","shape","learningTime","CardsList"],"sources":["../../../src/template/my-learning/index.js"],"sourcesContent":["import React, {useCallback, useState, useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport {convert} from 'css-color-function';\nimport {get, keys, map, fromPairs, pipe, sumBy, getOr, sortBy, size, isEmpty} from 'lodash/fp';\nimport Provider from '../../atom/provider';\nimport Icon from '../../atom/icon';\nimport Picture from '../../atom/picture';\nimport ButtonLink from '../../atom/button-link';\nimport ToolTip from '../../atom/tooltip';\nimport ReviewNoSkills from '../../organism/review-no-skills';\nimport SearchForm from '../../molecule/search-form';\nimport SkillPickerModal from '../../molecule/skill-picker-modal';\nimport ResponsiveLearningProfileRadarChart from '../../molecule/learning-profile-radar-chart';\nimport SkillsChartSideInformationPanel from '../../molecule/skills-chart-side-information-panel';\nimport LearnerSkillCard from '../../molecule/learner-skill-card';\nimport searchValueIncluded from '../../util/search-value-included';\nimport {formatMinutes} from '../../util/time-format';\nimport CardsList from '../../molecule/dashboard/cards-list';\nimport Title from '../../atom/title';\nimport style from './style.css';\n\nconst ChangeSkillFocusButton = (props, context) => {\n const {onClick} = props;\n const {skin, translate} = context;\n const primarySkinColor = get('common.primary', skin);\n\n return (\n <div data-name=\"button-explore-wrapper\">\n <ButtonLink\n customStyle={{\n backgroundColor: convert(`color(${primarySkinColor} a(0.07))`),\n color: primarySkinColor,\n transition: 'background-color 0.15s ease-in-out, color 0.15s ease-in-out'\n }}\n hoverBackgroundColor={primarySkinColor}\n hoverColor=\"#FFFFFF\"\n onClick={onClick}\n label={translate('skills_change_focus')}\n data-name=\"change-skill-focus-button\"\n icon={{\n position: 'left',\n faIcon: {\n name: 'arrows-rotate',\n backgroundColor: convert(`color(${primarySkinColor} a(0.07))`),\n color: primarySkinColor,\n size: 16\n }\n }}\n />\n </div>\n );\n};\n\nChangeSkillFocusButton.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nChangeSkillFocusButton.propTypes = {\n onClick: PropTypes.func\n};\n\nconst FilterButton = (props, context) => {\n const {active, filter, skillTotal, onClick} = props;\n const {skin} = context;\n const primarySkinColor = get('common.primary', skin);\n\n const Content = useCallback(\n () => (\n <div>\n {filter}\n <span\n className={active ? style.skillFilterNumber : style.skillFilterNumberInActive}\n style={{\n backgroundColor: active ? convert(`color(${primarySkinColor} a(0.07))`) : '#EAEAEB',\n color: active ? primarySkinColor : '#515161'\n }}\n >\n {skillTotal}\n </span>\n </div>\n ),\n [filter, skillTotal, active, primarySkinColor]\n );\n\n const buttonProps = {\n customStyle: {\n backgroundColor: active ? convert(`color(${primarySkinColor} a(0.07))`) : '#FFFFFF',\n color: active ? primarySkinColor : '#9999A8',\n transition: 'background-color 0.15s ease-in-out, color 0.15s ease-in-out',\n width: 'fit-content'\n },\n onClick,\n content: <Content />,\n 'data-name': 'change-skill-focus-button'\n };\n\n return <ButtonLink {...buttonProps} />;\n};\n\nFilterButton.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nFilterButton.propTypes = {\n active: PropTypes.bool,\n filter: PropTypes.string,\n skillTotal: PropTypes.number,\n onClick: PropTypes.func\n};\n\nconst MyLearning = (props, context) => {\n const {\n skills,\n selectedSkills = [],\n skillsInformation,\n skillsLocales,\n learnerFeature = true,\n isLoading,\n onSkillFocusConfirm,\n onReviewSkill,\n onExploreSkill,\n learningPriorities\n } = props;\n const {skin, translate} = context;\n const primarySkinColor = get('common.primary', skin);\n const [open, setOpen] = useState(false);\n const [selectedSkillsList, setSelectedSkillsList] = useState(selectedSkills);\n const [skillFocusSelectedOnChart, setSkillFocusSelectedOnChart] = useState(undefined);\n const [searchValue, setSearchValue] = useState('');\n const [searchResults, setSearchResults] = useState(\n sortBy(skillRef => -getOr(0, [skillRef, 'stats', 'score'], skillsInformation), skills)\n );\n const [activeFilter, setActiveFilter] = useState('all');\n\n const skillsReviewReady = useMemo(() => {\n return searchResults.filter(skill =>\n skillsInformation[skill] ? skillsInformation[skill].availableForReview : false\n );\n }, [searchResults, skillsInformation]);\n\n const graphDatas = useMemo(\n () =>\n pipe(\n map(skill => [skill, getOr(0, [skill, 'stats', 'score'], skillsInformation).toFixed(1)]),\n fromPairs\n )(selectedSkillsList),\n [selectedSkillsList, skillsInformation]\n );\n\n const graphLegends = useMemo(\n () =>\n pipe(\n map(skill => [skill, skillsLocales[skill]]),\n fromPairs\n )(selectedSkillsList),\n [selectedSkillsList, skillsLocales]\n );\n\n const filters = useMemo(() => {\n return {\n all: searchResults,\n review: skillsReviewReady\n };\n }, [searchResults, skillsReviewReady]);\n\n const sumKpi = useCallback(\n kpi => {\n const skillFocusSelectedOnChartScore = getOr(\n 0,\n [skillFocusSelectedOnChart, 'stats', `${kpi}`],\n skillsInformation\n );\n return skillFocusSelectedOnChart\n ? skillFocusSelectedOnChartScore\n : sumBy(\n skill => (skillsInformation[skill] ? skillsInformation[skill].stats[kpi] : 0),\n selectedSkillsList\n );\n },\n [skillFocusSelectedOnChart, skillsInformation, selectedSkillsList]\n );\n\n const coursedCompletedData = useMemo(() => sumKpi('contentCompleted'), [sumKpi]);\n\n const questionsToReviewData = useMemo(() => sumKpi('questionsToReview'), [sumKpi]);\n\n const learningTimeData = useMemo(() => sumKpi('learningTime'), [sumKpi]);\n\n const skillChartPaneLegends = useMemo(\n () =>\n translate('skill_scope_specifier', {\n focusedSkill: skillFocusSelectedOnChart\n ? skillsLocales[skillFocusSelectedOnChart]\n : translate('focused_skills')\n }),\n [translate, skillsLocales, skillFocusSelectedOnChart]\n );\n const skillChartPanelProps = [\n {\n title: translate('skill_chart_side_panel_content_completed'),\n value: `${coursedCompletedData}`,\n legend: skillChartPaneLegends,\n icon: {iconName: 'book-open-cover', backgroundColor: '#D9F4F7'}\n },\n {\n title: translate('skill_chart_side_panel_learning_hours'),\n value: formatMinutes(learningTimeData),\n legend: skillChartPaneLegends,\n icon: {iconName: 'clock', backgroundColor: '#FAD6DE'}\n },\n {\n title: translate('skill_chart_side_panel_questions_to_review'),\n value: `${questionsToReviewData}`,\n legend: skillChartPaneLegends,\n icon: {iconName: 'circle-question', backgroundColor: '#FFDCD1'}\n }\n ];\n\n const skillsScore = useMemo(\n () =>\n pipe(\n map(skill => [skill, getOr(0, [skill, 'stats', 'score'], skillsInformation)]),\n fromPairs\n )(skills),\n [skills, skillsInformation]\n );\n\n const handleOnDotClick = useCallback(\n skillRef => {\n setSkillFocusSelectedOnChart(skillRef);\n },\n [setSkillFocusSelectedOnChart]\n );\n const handleOpenSkillPicker = useCallback(() => setOpen(true), [setOpen]);\n const handleCloseSkillPicker = useCallback(() => setOpen(false), [setOpen]);\n const handleConfirmSkillPicker = useCallback(\n focusSkillList => {\n setSelectedSkillsList(focusSkillList);\n onSkillFocusConfirm(focusSkillList);\n setOpen(false);\n },\n [onSkillFocusConfirm, setSelectedSkillsList, setOpen]\n );\n const handleSearch = useCallback(\n value => {\n setSearchValue(value);\n setSearchResults(skills.filter(skill => searchValueIncluded(skillsLocales[skill], value)));\n },\n [skills, skillsLocales, setSearchValue, setSearchResults]\n );\n const handleSearchReset = useCallback(() => {\n setSearchValue('');\n setSearchResults(skills);\n }, [skills, setSearchValue, setSearchResults]);\n\n const ReviewTooltipContent = useCallback(\n () => (\n <div>\n <div>\n <b>{translate('review_mode_tooltip_header')}</b>\n </div>\n <p>{translate('review_mode_tooltip_content')}</p>\n <ol>\n <li>{translate('review_mode_tooltip_content_part1')}</li>\n <li>{translate('review_mode_tooltip_content_part2')}</li>\n <li>{translate('review_mode_tooltip_content_part3')}</li>\n <li>{translate('review_mode_tooltip_content_part4')}</li>\n </ol>\n </div>\n ),\n [translate]\n );\n\n return (\n <div className={style.backgroundContainer}>\n {isEmpty(learningPriorities?.cards) ? null : (\n <div className={style.cardsListContainer}>\n <CardsList\n {...learningPriorities}\n title={\n <Title\n {...{\n type: 'form-group',\n title: translate('learning_priorities'),\n subtitle: translate('learning_priorities_description'),\n icon: {\n iconName: 'sign-post',\n iconColor: '#A32700',\n borderRadius: '12px',\n backgroundColor: '#FFDCD1'\n },\n tag: {\n label: `${size(learningPriorities.cards)}`,\n type: 'default',\n size: 'S'\n }\n }}\n />\n }\n />\n </div>\n )}\n <div className={style.container}>\n <SkillPickerModal\n skills={skills}\n skillsScore={skillsScore}\n selectedSkills={selectedSkillsList}\n skillsLocales={skillsLocales}\n isOpen={open}\n isLoading={isLoading}\n onCancel={handleCloseSkillPicker}\n onConfirm={handleConfirmSkillPicker}\n onClose={handleCloseSkillPicker}\n />\n {learnerFeature ? (\n <div data-name=\"skill-focus-container\" className={style.skillFocusContainer}>\n <header className={style.skillFocusHeader}>\n <div className={style.skillFocusHeaderWrapper}>\n <div className={style.skillFocusHeaderIcon}>\n <Icon\n iconName=\"bullseye-arrow\"\n backgroundColor=\"#DDD1FF\"\n borderRadius=\"12px\"\n size={{faSize: 20, wrapperSize: 48}}\n />\n </div>\n <div className={style.skillFocusHeaderContent}>\n <div data-name=\"skill-focus-title\" className={style.skillFocusHeaderTitle}>\n {translate('skills_focus')}\n </div>\n <div\n data-name=\"skill-focus-description\"\n className={style.skillFocusHeaderDescription}\n >\n {translate('skills_focus_description')}\n </div>\n </div>\n </div>\n {selectedSkillsList.length >= 3 ? (\n <ChangeSkillFocusButton onClick={handleOpenSkillPicker} />\n ) : null}\n </header>\n {selectedSkillsList.length >= 3 ? (\n <div className={style.skillFocusContent}>\n <div className={style.radarContainer}>\n <ResponsiveLearningProfileRadarChart\n totalDataset={1}\n height={424}\n width={680}\n data={graphDatas}\n legend={graphLegends}\n onClick={handleOnDotClick}\n onExploreClick={onExploreSkill}\n colors={[\n {\n gradient: {\n fill: ['#0062ffff', '#8000ff85'],\n stroke: ['#0062ffff', '#8000FF']\n },\n percentage: {\n color: primarySkinColor,\n background: convert(`color(${primarySkinColor} a(0.07))`)\n },\n label: {\n color: '#020202ff'\n }\n }\n ]}\n />\n </div>\n <SkillsChartSideInformationPanel sidePanelItems={skillChartPanelProps} />\n </div>\n ) : (\n <div className={style.skillFocusEmpty}>\n <Picture\n className={style.img}\n src=\"https://static.coorpacademy.com/assets/images/mylearning-no-skill-selected-placeholder.svg\"\n alt=\"demo\"\n />\n <div className={style.skillFocusEmptyTitle}>\n {translate('skills_focus_empty_title')}\n </div>\n <div className={style.skillFocusEmptyDescription}>\n {translate('skills_focus_empty_description')}\n </div>\n <div>\n <ButtonLink\n label={translate('skills_choose_focus')}\n type=\"primary\"\n customStyle={{\n width: 'fit-contain',\n backgroundColor: primarySkinColor\n }}\n hoverBackgroundColor={convert(\n `hsl(from ${primarySkinColor} h s calc(l*(1 - 0.08)))`\n )}\n onClick={handleOpenSkillPicker}\n />\n </div>\n </div>\n )}\n </div>\n ) : null}\n <header className={style.skillListHeader}>\n <div className={style.skillListHeaderIcon}>\n <Icon\n iconName=\"dumbbell\"\n backgroundColor=\"#FFF9D1\"\n size={{faSize: 20, wrapperSize: 48}}\n />\n </div>\n <div className={style.skillListHeaderContent}>\n <div className={style.skillListHeaderTitle}>{translate('skills_section_title')}</div>\n <div className={style.skillListHeaderDescription}>\n {translate('skills_section_description')}\n <ToolTip\n fontSize={12}\n iconContainerClassName={style.infoIconTooltip}\n tooltipClassName={style.tooltip}\n TooltipContent={ReviewTooltipContent}\n closeToolTipInformationTextAriaLabel={translate('close_tooltip_information')}\n />\n </div>\n </div>\n </header>\n <div className={style.toolBarContainer}>\n <div className={style.skillFilterContainer}>\n {keys(filters).map((filter, index) => {\n function handleFilterClick() {\n setActiveFilter(filter);\n }\n\n return (\n <div key={index}>\n <FilterButton\n active={activeFilter === filter}\n filter={\n filter === 'all' ? translate('all') : translate('review_mode_available')\n }\n skillTotal={filters[filter].length}\n onClick={handleFilterClick}\n />\n </div>\n );\n })}\n </div>\n <div className={style.searchWrapper}>\n <SearchForm\n search={{\n placeholder: translate('search_place_holder'),\n value: searchValue,\n onChange: handleSearch\n }}\n onReset={handleSearchReset}\n />\n </div>\n </div>\n {searchValue && searchResults.length === 0 ? (\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 className={style.skillListContainer}>\n {activeFilter === 'review_mode_available' && filters[activeFilter].length === 0 ? (\n <div className={style.skillListEmptyContainer}>\n <ReviewNoSkills\n titleNoSkills={translate('review_skill_empty')}\n textNoSkills={translate('review_skill_empty_description')}\n iconSkillAriaLabel={translate('review_skill_empty')}\n imagePosition=\"top\"\n />\n </div>\n ) : (\n filters[activeFilter].map((skill, index) => {\n const defaultStats = {\n score: 0,\n content: 0,\n contentCompleted: 0,\n questionsToReview: 0\n };\n\n function handleReviewSkill() {\n onReviewSkill(skill);\n }\n function handleExploreSkill() {\n onExploreSkill(skill);\n }\n const {score, content, questionsToReview, contentCompleted} = skillsInformation[\n skill\n ]\n ? skillsInformation[skill].stats\n : defaultStats;\n return (\n <div key={index}>\n <LearnerSkillCard\n skillTitle={skillsLocales[skill]}\n focus={selectedSkills.includes(skill)}\n metrics={{\n score: score.toFixed(1),\n content,\n questionsToReview,\n contentCompleted\n }}\n review={\n skillsInformation[skill]\n ? skillsInformation[skill].availableForReview\n : false\n }\n onReviewClick={handleReviewSkill}\n onExploreClick={handleExploreSkill}\n />\n </div>\n );\n })\n )}\n </div>\n )}\n </div>\n </div>\n );\n};\n\nMyLearning.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nMyLearning.propTypes = {\n skills: PropTypes.arrayOf(PropTypes.string),\n selectedSkills: PropTypes.arrayOf(PropTypes.string),\n skillsInformation: PropTypes.objectOf(\n PropTypes.shape({\n availableForReview: PropTypes.bool,\n stats: PropTypes.shape({\n score: PropTypes.number,\n content: PropTypes.number,\n contentCompleted: PropTypes.number,\n questionsToReview: PropTypes.number,\n learningTime: PropTypes.number\n })\n })\n ),\n skillsLocales: PropTypes.objectOf(PropTypes.string),\n learnerFeature: PropTypes.bool,\n isLoading: PropTypes.bool,\n onSkillFocusConfirm: PropTypes.func,\n onReviewSkill: PropTypes.func,\n onExploreSkill: PropTypes.func,\n learningPriorities: PropTypes.shape(CardsList.propTypes)\n};\n\nexport default MyLearning;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["ChangeSkillFocusButton","props","context","onClick","skin","translate","primarySkinColor","backgroundColor","convert","color","transition","position","faIcon","name","size","contextTypes","Provider","childContextTypes","propTypes","PropTypes","func","FilterButton","active","filter","skillTotal","Content","useCallback","style","skillFilterNumber","skillFilterNumberInActive","buttonProps","customStyle","width","content","bool","string","number","MyLearning","skills","selectedSkills","skillsInformation","skillsLocales","learnerFeature","isLoading","onSkillFocusConfirm","onReviewSkill","onExploreSkill","learningPriorities","open","setOpen","useState","selectedSkillsList","setSelectedSkillsList","skillFocusSelectedOnChart","setSkillFocusSelectedOnChart","undefined","searchValue","setSearchValue","searchResults","setSearchResults","skillRef","activeFilter","setActiveFilter","skillsReviewReady","useMemo","skill","availableForReview","graphDatas","toFixed","graphLegends","filters","all","review","sumKpi","kpi","skillFocusSelectedOnChartScore","stats","coursedCompletedData","questionsToReviewData","learningTimeData","skillChartPaneLegends","focusedSkill","skillChartPanelProps","title","value","legend","icon","iconName","formatMinutes","skillsScore","handleOnDotClick","handleOpenSkillPicker","handleCloseSkillPicker","handleConfirmSkillPicker","focusSkillList","handleSearch","searchValueIncluded","handleSearchReset","ReviewTooltipContent","backgroundContainer","cards","cardsListContainer","type","subtitle","iconColor","borderRadius","tag","label","container","skillFocusContainer","skillFocusHeader","skillFocusHeaderWrapper","skillFocusHeaderIcon","faSize","wrapperSize","skillFocusHeaderContent","skillFocusHeaderTitle","skillFocusHeaderDescription","length","skillFocusContent","radarContainer","gradient","fill","stroke","percentage","background","skillFocusEmpty","img","skillFocusEmptyTitle","skillFocusEmptyDescription","skillListHeader","skillListHeaderIcon","skillListHeaderContent","skillListHeaderTitle","skillListHeaderDescription","infoIconTooltip","tooltip","toolBarContainer","skillFilterContainer","map","index","handleFilterClick","searchWrapper","placeholder","onChange","emptySearchResultContainer","emptySearchResultTitle","emptySearchResultDescription","emptySearchResultClearSearch","skillListContainer","skillListEmptyContainer","defaultStats","score","contentCompleted","questionsToReview","handleReviewSkill","handleExploreSkill","includes","arrayOf","objectOf","shape","learningTime","CardsList"],"sources":["../../../src/template/my-learning/index.js"],"sourcesContent":["import React, {useCallback, useState, useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport {convert} from 'css-color-function';\nimport {get, keys, map, fromPairs, pipe, sumBy, getOr, sortBy, size, isEmpty} from 'lodash/fp';\nimport Provider from '../../atom/provider';\nimport Icon from '../../atom/icon';\nimport Picture from '../../atom/picture';\nimport ButtonLink from '../../atom/button-link';\nimport ToolTip from '../../atom/tooltip';\nimport ReviewNoSkills from '../../organism/review-no-skills';\nimport SearchForm from '../../molecule/search-form';\nimport SkillPickerModal from '../../molecule/skill-picker-modal';\nimport ResponsiveLearningProfileRadarChart from '../../molecule/learning-profile-radar-chart';\nimport SkillsChartSideInformationPanel from '../../molecule/skills-chart-side-information-panel';\nimport LearnerSkillCard from '../../molecule/learner-skill-card';\nimport searchValueIncluded from '../../util/search-value-included';\nimport {formatMinutes} from '../../util/time-format';\nimport CardsList from '../../molecule/dashboard/cards-list';\nimport Title from '../../atom/title';\nimport style from './style.css';\n\nconst ChangeSkillFocusButton = (props, context) => {\n const {onClick} = props;\n const {skin, translate} = context;\n const primarySkinColor = get('common.primary', skin);\n\n return (\n <div data-name=\"button-explore-wrapper\">\n <ButtonLink\n customStyle={{\n backgroundColor: convert(`color(${primarySkinColor} a(0.07))`),\n color: primarySkinColor,\n transition: 'background-color 0.15s ease-in-out, color 0.15s ease-in-out'\n }}\n hoverBackgroundColor={primarySkinColor}\n hoverColor=\"#FFFFFF\"\n onClick={onClick}\n label={translate('skills_change_focus')}\n data-name=\"change-skill-focus-button\"\n icon={{\n position: 'left',\n faIcon: {\n name: 'arrows-rotate',\n backgroundColor: convert(`color(${primarySkinColor} a(0.07))`),\n color: primarySkinColor,\n size: 16\n }\n }}\n />\n </div>\n );\n};\n\nChangeSkillFocusButton.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nChangeSkillFocusButton.propTypes = {\n onClick: PropTypes.func\n};\n\nconst FilterButton = (props, context) => {\n const {active, filter, skillTotal, onClick} = props;\n const {skin} = context;\n const primarySkinColor = get('common.primary', skin);\n\n const Content = useCallback(\n () => (\n <div>\n {filter}\n <span\n className={active ? style.skillFilterNumber : style.skillFilterNumberInActive}\n style={{\n backgroundColor: active ? convert(`color(${primarySkinColor} a(0.07))`) : '#EAEAEB',\n color: active ? primarySkinColor : '#515161'\n }}\n >\n {skillTotal}\n </span>\n </div>\n ),\n [filter, skillTotal, active, primarySkinColor]\n );\n\n const buttonProps = {\n customStyle: {\n backgroundColor: active ? convert(`color(${primarySkinColor} a(0.07))`) : '#FFFFFF',\n color: active ? primarySkinColor : '#9999A8',\n transition: 'background-color 0.15s ease-in-out, color 0.15s ease-in-out',\n width: 'fit-content'\n },\n onClick,\n content: <Content />,\n 'data-name': 'change-skill-focus-button'\n };\n\n return <ButtonLink {...buttonProps} />;\n};\n\nFilterButton.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nFilterButton.propTypes = {\n active: PropTypes.bool,\n filter: PropTypes.string,\n skillTotal: PropTypes.number,\n onClick: PropTypes.func\n};\n\nconst MyLearning = (props, context) => {\n const {\n skills,\n selectedSkills = [],\n skillsInformation,\n skillsLocales,\n learnerFeature = true,\n isLoading,\n onSkillFocusConfirm,\n onReviewSkill,\n onExploreSkill,\n learningPriorities\n } = props;\n const {skin, translate} = context;\n const primarySkinColor = get('common.primary', skin);\n const [open, setOpen] = useState(false);\n const [selectedSkillsList, setSelectedSkillsList] = useState(selectedSkills);\n const [skillFocusSelectedOnChart, setSkillFocusSelectedOnChart] = useState(undefined);\n const [searchValue, setSearchValue] = useState('');\n const [searchResults, setSearchResults] = useState(\n sortBy(skillRef => -getOr(0, [skillRef, 'stats', 'score'], skillsInformation), skills)\n );\n const [activeFilter, setActiveFilter] = useState('all');\n\n const skillsReviewReady = useMemo(() => {\n return searchResults.filter(skill =>\n skillsInformation[skill] ? skillsInformation[skill].availableForReview : false\n );\n }, [searchResults, skillsInformation]);\n\n const graphDatas = useMemo(\n () =>\n pipe(\n map(skill => [skill, getOr(0, [skill, 'stats', 'score'], skillsInformation).toFixed(1)]),\n fromPairs\n )(selectedSkillsList),\n [selectedSkillsList, skillsInformation]\n );\n\n const graphLegends = useMemo(\n () =>\n pipe(\n map(skill => [skill, skillsLocales[skill]]),\n fromPairs\n )(selectedSkillsList),\n [selectedSkillsList, skillsLocales]\n );\n\n const filters = useMemo(() => {\n return {\n all: searchResults,\n review: skillsReviewReady\n };\n }, [searchResults, skillsReviewReady]);\n\n const sumKpi = useCallback(\n kpi => {\n const skillFocusSelectedOnChartScore = getOr(\n 0,\n [skillFocusSelectedOnChart, 'stats', `${kpi}`],\n skillsInformation\n );\n return skillFocusSelectedOnChart\n ? skillFocusSelectedOnChartScore\n : sumBy(\n skill => (skillsInformation[skill] ? skillsInformation[skill].stats[kpi] : 0),\n selectedSkillsList\n );\n },\n [skillFocusSelectedOnChart, skillsInformation, selectedSkillsList]\n );\n\n const coursedCompletedData = useMemo(() => sumKpi('contentCompleted'), [sumKpi]);\n\n const questionsToReviewData = useMemo(() => sumKpi('questionsToReview'), [sumKpi]);\n\n const learningTimeData = useMemo(() => sumKpi('learningTime'), [sumKpi]);\n\n const skillChartPaneLegends = useMemo(\n () =>\n translate('skill_scope_specifier', {\n focusedSkill: skillFocusSelectedOnChart\n ? skillsLocales[skillFocusSelectedOnChart]\n : translate('focused_skills')\n }),\n [translate, skillsLocales, skillFocusSelectedOnChart]\n );\n const skillChartPanelProps = [\n {\n title: translate('skill_chart_side_panel_content_completed'),\n value: `${coursedCompletedData}`,\n legend: skillChartPaneLegends,\n icon: {iconName: 'book-open-cover', backgroundColor: '#D9F4F7'}\n },\n {\n title: translate('skill_chart_side_panel_learning_hours'),\n value: formatMinutes(learningTimeData),\n legend: skillChartPaneLegends,\n icon: {iconName: 'clock', backgroundColor: '#FAD6DE'}\n },\n {\n title: translate('skill_chart_side_panel_questions_to_review'),\n value: `${questionsToReviewData}`,\n legend: skillChartPaneLegends,\n icon: {iconName: 'circle-question', backgroundColor: '#FFDCD1'}\n }\n ];\n\n const skillsScore = useMemo(\n () =>\n pipe(\n map(skill => [skill, getOr(0, [skill, 'stats', 'score'], skillsInformation)]),\n fromPairs\n )(skills),\n [skills, skillsInformation]\n );\n\n const handleOnDotClick = useCallback(\n skillRef => {\n setSkillFocusSelectedOnChart(skillRef);\n },\n [setSkillFocusSelectedOnChart]\n );\n const handleOpenSkillPicker = useCallback(() => setOpen(true), [setOpen]);\n const handleCloseSkillPicker = useCallback(() => setOpen(false), [setOpen]);\n const handleConfirmSkillPicker = useCallback(\n focusSkillList => {\n setSelectedSkillsList(focusSkillList);\n onSkillFocusConfirm(focusSkillList);\n setOpen(false);\n },\n [onSkillFocusConfirm, setSelectedSkillsList, setOpen]\n );\n const handleSearch = useCallback(\n value => {\n setSearchValue(value);\n setSearchResults(skills.filter(skill => searchValueIncluded(skillsLocales[skill], value)));\n },\n [skills, skillsLocales, setSearchValue, setSearchResults]\n );\n const handleSearchReset = useCallback(() => {\n setSearchValue('');\n setSearchResults(skills);\n }, [skills, setSearchValue, setSearchResults]);\n\n const ReviewTooltipContent = useCallback(\n () => (\n <div>\n <div>\n <b>{translate('review_mode_tooltip_header')}</b>\n </div>\n <p>{translate('review_mode_tooltip_content')}</p>\n <ol>\n <li>{translate('review_mode_tooltip_content_part1')}</li>\n <li>{translate('review_mode_tooltip_content_part2')}</li>\n <li>{translate('review_mode_tooltip_content_part3')}</li>\n <li>{translate('review_mode_tooltip_content_part4')}</li>\n </ol>\n </div>\n ),\n [translate]\n );\n\n return (\n <div className={style.backgroundContainer}>\n {isEmpty(learningPriorities?.cards) ? null : (\n <div className={style.cardsListContainer}>\n <CardsList\n {...learningPriorities}\n title={\n <Title\n {...{\n type: 'form-group',\n title: translate('learning_priorities'),\n subtitle: translate('learning_priorities_description'),\n icon: {\n iconName: 'sign-post',\n iconColor: '#A32700',\n borderRadius: '12px',\n backgroundColor: '#FFDCD1'\n },\n tag: {\n label: `${size(learningPriorities.cards)}`,\n type: 'default',\n size: 'S'\n }\n }}\n />\n }\n />\n </div>\n )}\n <div className={style.container}>\n <SkillPickerModal\n skills={skills}\n skillsScore={skillsScore}\n selectedSkills={selectedSkillsList}\n skillsLocales={skillsLocales}\n isOpen={open}\n isLoading={isLoading}\n onCancel={handleCloseSkillPicker}\n onConfirm={handleConfirmSkillPicker}\n onClose={handleCloseSkillPicker}\n />\n {learnerFeature ? (\n <div data-name=\"skill-focus-container\" className={style.skillFocusContainer}>\n <header className={style.skillFocusHeader}>\n <div className={style.skillFocusHeaderWrapper}>\n <div className={style.skillFocusHeaderIcon}>\n <Icon\n iconName=\"bullseye-arrow\"\n backgroundColor=\"#DDD1FF\"\n borderRadius=\"12px\"\n size={{faSize: 20, wrapperSize: 48}}\n />\n </div>\n <div className={style.skillFocusHeaderContent}>\n <div data-name=\"skill-focus-title\" className={style.skillFocusHeaderTitle}>\n {translate('skills_focus')}\n </div>\n <div\n data-name=\"skill-focus-description\"\n className={style.skillFocusHeaderDescription}\n >\n {translate('skills_focus_description')}\n </div>\n </div>\n </div>\n {selectedSkillsList.length >= 3 ? (\n <ChangeSkillFocusButton onClick={handleOpenSkillPicker} />\n ) : null}\n </header>\n {selectedSkillsList.length >= 3 ? (\n <div className={style.skillFocusContent}>\n <div className={style.radarContainer}>\n <ResponsiveLearningProfileRadarChart\n totalDataset={1}\n height={424}\n width={680}\n data={graphDatas}\n legend={graphLegends}\n onClick={handleOnDotClick}\n onExploreClick={onExploreSkill}\n colors={[\n {\n gradient: {\n fill: ['#0062ffff', '#8000ff85'],\n stroke: ['#0062ffff', '#8000FF']\n },\n percentage: {\n color: primarySkinColor,\n background: convert(`color(${primarySkinColor} a(0.07))`)\n },\n label: {\n color: '#020202ff'\n }\n }\n ]}\n />\n </div>\n <SkillsChartSideInformationPanel sidePanelItems={skillChartPanelProps} />\n </div>\n ) : (\n <div className={style.skillFocusEmpty}>\n <Picture\n className={style.img}\n src=\"https://static.coorpacademy.com/assets/images/mylearning-no-skill-selected-placeholder.svg\"\n alt=\"demo\"\n />\n <div className={style.skillFocusEmptyTitle}>\n {translate('skills_focus_empty_title')}\n </div>\n <div className={style.skillFocusEmptyDescription}>\n {translate('skills_focus_empty_description')}\n </div>\n <div>\n <ButtonLink\n label={translate('skills_choose_focus')}\n type=\"primary\"\n customStyle={{\n width: 'fit-contain',\n backgroundColor: primarySkinColor\n }}\n hoverBackgroundColor={convert(\n `hsl(from ${primarySkinColor} h s calc(l*(1 - 0.08)))`\n )}\n onClick={handleOpenSkillPicker}\n />\n </div>\n </div>\n )}\n </div>\n ) : null}\n <header className={style.skillListHeader}>\n <div className={style.skillListHeaderIcon}>\n <Icon\n iconName=\"dumbbell\"\n backgroundColor=\"#FFF9D1\"\n size={{faSize: 20, wrapperSize: 48}}\n />\n </div>\n <div className={style.skillListHeaderContent}>\n <div className={style.skillListHeaderTitle}>{translate('skills_section_title')}</div>\n <div className={style.skillListHeaderDescription}>\n {translate('skills_section_description')}\n <ToolTip\n fontSize={12}\n iconContainerClassName={style.infoIconTooltip}\n tooltipClassName={style.tooltip}\n TooltipContent={ReviewTooltipContent}\n closeToolTipInformationTextAriaLabel={translate('close_tooltip_information')}\n />\n </div>\n </div>\n </header>\n <div className={style.toolBarContainer}>\n <div className={style.skillFilterContainer}>\n {keys(filters).map((filter, index) => {\n function handleFilterClick() {\n setActiveFilter(filter);\n }\n\n return (\n <div key={index}>\n <FilterButton\n active={activeFilter === filter}\n filter={\n filter === 'all' ? translate('all') : translate('review_mode_available')\n }\n skillTotal={filters[filter].length}\n onClick={handleFilterClick}\n />\n </div>\n );\n })}\n </div>\n <div className={style.searchWrapper}>\n <SearchForm\n search={{\n placeholder: translate('search_place_holder'),\n value: searchValue,\n onChange: handleSearch\n }}\n onReset={handleSearchReset}\n />\n </div>\n </div>\n {searchValue && searchResults.length === 0 ? (\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 className={style.skillListContainer}>\n {activeFilter === 'review_mode_available' && filters[activeFilter].length === 0 ? (\n <div className={style.skillListEmptyContainer}>\n <ReviewNoSkills\n titleNoSkills={translate('review_skill_empty')}\n textNoSkills={translate('review_skill_empty_description')}\n iconSkillAriaLabel={translate('review_skill_empty')}\n imagePosition=\"top\"\n />\n </div>\n ) : (\n filters[activeFilter].map((skill, index) => {\n const defaultStats = {\n score: 0,\n content: 0,\n contentCompleted: 0,\n questionsToReview: 0\n };\n\n function handleReviewSkill() {\n onReviewSkill(skill);\n }\n function handleExploreSkill() {\n onExploreSkill(skill);\n }\n const {score, content, questionsToReview} = skillsInformation[skill]\n ? skillsInformation[skill].stats\n : defaultStats;\n return (\n <div key={index}>\n <LearnerSkillCard\n skillTitle={skillsLocales[skill]}\n focus={selectedSkills.includes(skill)}\n metrics={{\n score: score.toFixed(1),\n content,\n questionsToReview\n }}\n review={\n skillsInformation[skill]\n ? skillsInformation[skill].availableForReview\n : false\n }\n onReviewClick={handleReviewSkill}\n onExploreClick={handleExploreSkill}\n />\n </div>\n );\n })\n )}\n </div>\n )}\n </div>\n </div>\n );\n};\n\nMyLearning.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nMyLearning.propTypes = {\n skills: PropTypes.arrayOf(PropTypes.string),\n selectedSkills: PropTypes.arrayOf(PropTypes.string),\n skillsInformation: PropTypes.objectOf(\n PropTypes.shape({\n availableForReview: PropTypes.bool,\n stats: PropTypes.shape({\n score: PropTypes.number,\n content: PropTypes.number,\n contentCompleted: PropTypes.number,\n questionsToReview: PropTypes.number,\n learningTime: PropTypes.number\n })\n })\n ),\n skillsLocales: PropTypes.objectOf(PropTypes.string),\n learnerFeature: PropTypes.bool,\n isLoading: PropTypes.bool,\n onSkillFocusConfirm: PropTypes.func,\n onReviewSkill: PropTypes.func,\n onExploreSkill: PropTypes.func,\n learningPriorities: PropTypes.shape(CardsList.propTypes)\n};\n\nexport default MyLearning;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/template/playlist-detail/index.js"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/template/playlist-detail/index.js"],"names":[],"mappings":";AAgBA,uEAqFC"}
|
|
@@ -39,8 +39,6 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
39
39
|
|
|
40
40
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
41
41
|
|
|
42
|
-
const DESCRIPTION_BREAKPOINT = 382;
|
|
43
|
-
|
|
44
42
|
const PlaylistDetail = (props, context) => {
|
|
45
43
|
const {
|
|
46
44
|
title,
|
|
@@ -54,13 +52,25 @@ const PlaylistDetail = (props, context) => {
|
|
|
54
52
|
onBackClick,
|
|
55
53
|
onContinueLearningClick
|
|
56
54
|
} = props;
|
|
55
|
+
const descriptionRef = (0, _react.useRef)(null);
|
|
57
56
|
const {
|
|
58
57
|
translate
|
|
59
58
|
} = context;
|
|
59
|
+
const [isDescriptionTruncated, setIsDescriptionTruncated] = (0, _react.useState)(false);
|
|
60
60
|
const [showMore, setShowMore] = (0, _react.useState)(false);
|
|
61
61
|
const handleShowMore = (0, _react.useCallback)(() => setShowMore(!showMore), [setShowMore, showMore]);
|
|
62
|
+
(0, _react.useEffect)(() => {
|
|
63
|
+
if (descriptionRef.current) {
|
|
64
|
+
const {
|
|
65
|
+
clientHeight = 0,
|
|
66
|
+
scrollHeight = 0
|
|
67
|
+
} = descriptionRef.current;
|
|
68
|
+
setIsDescriptionTruncated(scrollHeight > clientHeight);
|
|
69
|
+
}
|
|
70
|
+
}, [description]);
|
|
62
71
|
const Description = (0, _react.useCallback)(() => {
|
|
63
72
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
73
|
+
ref: descriptionRef,
|
|
64
74
|
className: (0, _classnames.default)(_style.default.description, !showMore && _style.default.truncate)
|
|
65
75
|
}, /*#__PURE__*/_react.default.createElement(_markdownToJsx.default, null, description));
|
|
66
76
|
}, [showMore, description]);
|
|
@@ -72,7 +82,7 @@ const PlaylistDetail = (props, context) => {
|
|
|
72
82
|
}, !(0, _isNil2.default)(onBackClick) ? /*#__PURE__*/_react.default.createElement(_buttonLinkIcon.default, {
|
|
73
83
|
faIcon: "arrow-left",
|
|
74
84
|
"data-name": "back-button",
|
|
75
|
-
"aria-label":
|
|
85
|
+
"aria-label": translate('back'),
|
|
76
86
|
onClick: onBackClick,
|
|
77
87
|
className: _style.default.backButton,
|
|
78
88
|
tooltipPlacement: "right"
|
|
@@ -86,7 +96,7 @@ const PlaylistDetail = (props, context) => {
|
|
|
86
96
|
label: translate('playlist')
|
|
87
97
|
}), /*#__PURE__*/_react.default.createElement("div", {
|
|
88
98
|
className: _style.default.title
|
|
89
|
-
}, title), description ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Description, null),
|
|
99
|
+
}, title), description ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Description, null), isDescriptionTruncated ? /*#__PURE__*/_react.default.createElement("div", {
|
|
90
100
|
className: _style.default.showMoreWrapper,
|
|
91
101
|
onClick: handleShowMore
|
|
92
102
|
}, translate(showMore ? 'Show less' : 'Show more'), /*#__PURE__*/_react.default.createElement(_icon.default, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["
|
|
1
|
+
{"version":3,"file":"index.js","names":["PlaylistDetail","props","context","title","coverImages","playlistRef","description","ongoingCoursesAvailable","playlistCourses","filters","sorting","onBackClick","onContinueLearningClick","descriptionRef","useRef","translate","isDescriptionTruncated","setIsDescriptionTruncated","useState","showMore","setShowMore","handleShowMore","useCallback","useEffect","current","clientHeight","scrollHeight","Description","classnames","style","truncate","backgroundContainer","container","backButton","ctaContainer","coverWrapper","showMoreWrapper","faSize","wrapperSize","continueLearningButton","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 } = props;\n const descriptionRef = useRef(null);\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 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 content={playlistCourses} filters={filters} sorting={sorting} />\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};\n\nexport default PlaylistDetail;\n"],"mappings":"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"}
|
|
@@ -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,oEAoJC"}
|
|
@@ -98,6 +98,7 @@ const SkillDetail = (props, context) => {
|
|
|
98
98
|
onReviewClick,
|
|
99
99
|
onContinueLearningClick
|
|
100
100
|
} = props;
|
|
101
|
+
const descriptionRef = (0, _react.useRef)(null);
|
|
101
102
|
const {
|
|
102
103
|
score = 0,
|
|
103
104
|
questionsToReview
|
|
@@ -105,10 +106,21 @@ const SkillDetail = (props, context) => {
|
|
|
105
106
|
const {
|
|
106
107
|
translate
|
|
107
108
|
} = context;
|
|
109
|
+
const [isDescriptionTruncated, setIsDescriptionTruncated] = (0, _react.useState)(false);
|
|
108
110
|
const [showMore, setShowMore] = (0, _react.useState)(false);
|
|
109
111
|
const handleShowMore = (0, _react.useCallback)(() => setShowMore(!showMore), [setShowMore, showMore]);
|
|
112
|
+
(0, _react.useEffect)(() => {
|
|
113
|
+
if (descriptionRef.current) {
|
|
114
|
+
const {
|
|
115
|
+
clientHeight = 0,
|
|
116
|
+
scrollHeight = 0
|
|
117
|
+
} = descriptionRef.current;
|
|
118
|
+
setIsDescriptionTruncated(scrollHeight > clientHeight);
|
|
119
|
+
}
|
|
120
|
+
}, [description]);
|
|
110
121
|
const Description = (0, _react.useCallback)(() => {
|
|
111
122
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
123
|
+
ref: descriptionRef,
|
|
112
124
|
className: (0, _classnames.default)(_style.default.description, !showMore && _style.default.truncate)
|
|
113
125
|
}, /*#__PURE__*/_react.default.createElement(_markdownToJsx.default, null, description));
|
|
114
126
|
}, [showMore, description]);
|
|
@@ -136,7 +148,7 @@ const SkillDetail = (props, context) => {
|
|
|
136
148
|
}, !(0, _isNil2.default)(onBackClick) ? /*#__PURE__*/_react.default.createElement(_buttonLinkIcon.default, {
|
|
137
149
|
faIcon: "arrow-left",
|
|
138
150
|
"data-name": "back-button",
|
|
139
|
-
"aria-label":
|
|
151
|
+
"aria-label": translate('back'),
|
|
140
152
|
onClick: onBackClick,
|
|
141
153
|
className: _style.default.backButton,
|
|
142
154
|
tooltipPlacement: "right"
|
|
@@ -153,7 +165,7 @@ const SkillDetail = (props, context) => {
|
|
|
153
165
|
}
|
|
154
166
|
}), translate('skill_focus')) : null, /*#__PURE__*/_react.default.createElement("div", {
|
|
155
167
|
className: _style.default.title
|
|
156
|
-
}, title), description ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Description, null),
|
|
168
|
+
}, title), description ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Description, null), isDescriptionTruncated ? /*#__PURE__*/_react.default.createElement("div", {
|
|
157
169
|
className: _style.default.showMoreWrapper,
|
|
158
170
|
onClick: handleShowMore
|
|
159
171
|
}, showMore ? translate('Show less') : translate('Show more'), /*#__PURE__*/_react.default.createElement(_icon.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","totalCourses","skillIncludedCourses","filters","sorting","onBackClick","onReviewClick","onContinueLearningClick","score","questionsToReview","showMore","setShowMore","useState","handleShowMore","useCallback","Description","classnames","style","truncate","ProgressBar","undefined","progressBarColor","inlineProgressValueStyle","progressBarWrapper","progress","backgroundContainer","container","backButton","ctaContainer","skillFocusBadge","faSize","wrapperSize","length","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} from 'react';\nimport PropTypes from 'prop-types';\nimport {convert} from 'css-color-function';\nimport classnames from 'classnames';\nimport {get, isNil} from 'lodash/fp';\nimport Markdown from 'markdown-to-jsx';\nimport Provider from '../../atom/provider';\nimport Select, {SelectOptionPropTypes} from '../../atom/select';\nimport ButtonLink from '../../atom/button-link';\nimport ButtonLinkIcon from '../../atom/button-link-icon';\nimport Icon from '../../atom/icon';\nimport CardsGrid from '../../organism/cards-grid';\nimport style from './style.css';\nimport AllCourses from './all-courses';\n\nexport const ContinueLearningButton = (props, context) => {\n const {ongoingCoursesAvailable, onClick} = props;\n const {skin, translate} = context;\n const primarySkinColor = get('common.primary', skin);\n\n return (\n <div>\n <ButtonLink\n label={\n ongoingCoursesAvailable ? translate('continue_learning') : translate('start_learning')\n }\n type=\"primary\"\n customStyle={{\n width: 'fit-content',\n borderRadius: '12px',\n backgroundColor: primarySkinColor\n }}\n hoverBackgroundColor={convert(`hsl(from ${primarySkinColor} h s calc(l*(1 - 0.08)))`)}\n hoverColor=\"#FFFFFF\"\n icon={{\n position: 'left',\n faIcon: {\n name: 'play',\n color: '#FFFFFF',\n size: 16\n }\n }}\n onClick={onClick}\n />\n </div>\n );\n};\n\nContinueLearningButton.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nContinueLearningButton.propTypes = {\n ongoingCoursesAvailable: PropTypes.bool,\n onClick: PropTypes.func\n};\n\nconst SkillDetail = (props, context) => {\n const {\n title,\n skillRef,\n description,\n metrics = {},\n focused,\n availableForReview,\n ongoingCoursesAvailable,\n totalCourses,\n skillIncludedCourses,\n filters,\n sorting,\n onBackClick,\n onReviewClick,\n onContinueLearningClick\n } = props;\n const {score = 0, questionsToReview} = metrics;\n const {translate} = context;\n\n const [showMore, setShowMore] = useState(false);\n\n const handleShowMore = useCallback(() => setShowMore(!showMore), [setShowMore, showMore]);\n\n const Description = useCallback(() => {\n return (\n <div className={classnames(style.description, !showMore && style.truncate)}>\n <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=\"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 {description.length >= 226 ? (\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={totalCourses}\n />\n </div>\n </div>\n );\n};\n\nSkillDetail.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nSkillDetail.propTypes = {\n title: PropTypes.string.isRequired,\n skillRef: PropTypes.string.isRequired,\n description: PropTypes.string,\n metrics: PropTypes.shape({\n score: PropTypes.number,\n questionsToReview: PropTypes.number\n }),\n focused: PropTypes.bool,\n availableForReview: PropTypes.bool,\n ongoingCoursesAvailable: PropTypes.bool,\n totalCourses: PropTypes.number,\n skillIncludedCourses: PropTypes.shape(CardsGrid.propTypes),\n filters: PropTypes.shape({\n onChange: PropTypes.func,\n options: PropTypes.arrayOf(PropTypes.shape(SelectOptionPropTypes))\n }),\n sorting: PropTypes.shape(Select.propTypes),\n onBackClick: PropTypes.func,\n onReviewClick: PropTypes.func,\n onContinueLearningClick: PropTypes.func\n};\n\nexport default SkillDetail;\n"],"mappings":"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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","totalCourses","skillIncludedCourses","filters","sorting","onBackClick","onReviewClick","onContinueLearningClick","descriptionRef","useRef","score","questionsToReview","isDescriptionTruncated","setIsDescriptionTruncated","useState","showMore","setShowMore","handleShowMore","useCallback","useEffect","current","clientHeight","scrollHeight","Description","classnames","style","truncate","ProgressBar","undefined","progressBarColor","inlineProgressValueStyle","progressBarWrapper","progress","backgroundContainer","container","backButton","ctaContainer","skillFocusBadge","faSize","wrapperSize","showMoreWrapper","ctaWrapper","skillInformation","skillInformationNumber","progressContainer","progressInformationNumber","toFixed","string","isRequired","shape","number","CardsGrid","onChange","options","arrayOf","SelectOptionPropTypes","Select"],"sources":["../../../src/template/skill-detail/index.js"],"sourcesContent":["import React, {useCallback, useState, useRef, useEffect} from 'react';\nimport PropTypes from 'prop-types';\nimport {convert} from 'css-color-function';\nimport classnames from 'classnames';\nimport {get, isNil} from 'lodash/fp';\nimport Markdown from 'markdown-to-jsx';\nimport Provider from '../../atom/provider';\nimport Select, {SelectOptionPropTypes} from '../../atom/select';\nimport ButtonLink from '../../atom/button-link';\nimport ButtonLinkIcon from '../../atom/button-link-icon';\nimport Icon from '../../atom/icon';\nimport CardsGrid from '../../organism/cards-grid';\nimport style from './style.css';\nimport AllCourses from './all-courses';\n\nexport const ContinueLearningButton = (props, context) => {\n const {ongoingCoursesAvailable, onClick} = props;\n const {skin, translate} = context;\n const primarySkinColor = get('common.primary', skin);\n\n return (\n <div>\n <ButtonLink\n label={\n ongoingCoursesAvailable ? translate('continue_learning') : translate('start_learning')\n }\n type=\"primary\"\n customStyle={{\n width: 'fit-content',\n borderRadius: '12px',\n backgroundColor: primarySkinColor\n }}\n hoverBackgroundColor={convert(`hsl(from ${primarySkinColor} h s calc(l*(1 - 0.08)))`)}\n hoverColor=\"#FFFFFF\"\n icon={{\n position: 'left',\n faIcon: {\n name: 'play',\n color: '#FFFFFF',\n size: 16\n }\n }}\n onClick={onClick}\n />\n </div>\n );\n};\n\nContinueLearningButton.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nContinueLearningButton.propTypes = {\n ongoingCoursesAvailable: PropTypes.bool,\n onClick: PropTypes.func\n};\n\nconst SkillDetail = (props, context) => {\n const {\n title,\n skillRef,\n description,\n metrics = {},\n focused,\n availableForReview,\n ongoingCoursesAvailable,\n totalCourses,\n skillIncludedCourses,\n filters,\n sorting,\n onBackClick,\n onReviewClick,\n onContinueLearningClick\n } = props;\n const descriptionRef = useRef(null);\n const {score = 0, questionsToReview} = metrics;\n const {translate} = context;\n\n const [isDescriptionTruncated, setIsDescriptionTruncated] = useState(false);\n const [showMore, setShowMore] = useState(false);\n\n const handleShowMore = useCallback(() => setShowMore(!showMore), [setShowMore, showMore]);\n\n useEffect(() => {\n if (descriptionRef.current) {\n const {clientHeight = 0, scrollHeight = 0} = descriptionRef.current;\n setIsDescriptionTruncated(scrollHeight > clientHeight);\n }\n }, [description]);\n\n const Description = useCallback(() => {\n return (\n <div\n ref={descriptionRef}\n className={classnames(style.description, !showMore && style.truncate)}\n >\n <Markdown>{description}</Markdown>\n </div>\n );\n }, [showMore, description]);\n\n const ProgressBar = useCallback(() => {\n if (score === undefined) return null;\n const progressBarColor = '#3EC483';\n const inlineProgressValueStyle = {\n backgroundColor: progressBarColor,\n width: `${score}%`\n };\n\n return (\n <div className={style.progressBarWrapper}>\n <div\n data-name=\"progress\"\n className={style.progress}\n style={inlineProgressValueStyle}\n role=\"progressbar\"\n />\n </div>\n );\n }, [score]);\n\n return (\n <div className={style.backgroundContainer}>\n <div className={style.container} data-name={skillRef}>\n {!isNil(onBackClick) ? (\n <ButtonLinkIcon\n faIcon=\"arrow-left\"\n data-name=\"back-button\"\n aria-label={translate('back')}\n onClick={onBackClick}\n className={style.backButton}\n tooltipPlacement=\"right\"\n />\n ) : null}\n <div className={style.ctaContainer}>\n <div>\n {focused ? (\n <div className={style.skillFocusBadge}>\n <Icon\n iconName=\"bullseye-arrow\"\n backgroundColor=\"#DDD1FF\"\n size={{\n faSize: 10,\n wrapperSize: 16\n }}\n />\n {translate('skill_focus')}\n </div>\n ) : null}\n <div className={style.title}>{title}</div>\n {description ? (\n <>\n <Description />\n {isDescriptionTruncated ? (\n <div className={style.showMoreWrapper} onClick={handleShowMore}>\n {showMore ? translate('Show less') : translate('Show more')}\n <Icon\n iconName={showMore ? 'chevron-up' : 'chevron-down'}\n size={{\n faSize: 14,\n wrapperSize: 16\n }}\n />\n </div>\n ) : null}\n </>\n ) : null}\n </div>\n\n <div className={style.ctaWrapper}>\n <ButtonLink\n type=\"secondary\"\n onClick={onReviewClick}\n label={translate('review_this_skill')}\n disabled={!availableForReview}\n customStyle={{\n width: 'fit-content',\n borderRadius: '12px'\n }}\n />\n <ContinueLearningButton\n ongoingCoursesAvailable={ongoingCoursesAvailable}\n onClick={onContinueLearningClick}\n />\n </div>\n </div>\n {questionsToReview > 0 ? (\n <div className={style.skillInformation} data-name=\"skill-questions\">\n <span className={style.skillInformationNumber}>{questionsToReview}</span>\n {translate('skill_chart_side_panel_questions_to_review')}\n </div>\n ) : null}\n <div className={style.progressContainer}>\n <ProgressBar />\n <span className={style.progressInformationNumber}>{score.toFixed(1)}%</span>\n </div>\n <AllCourses\n content={skillIncludedCourses}\n filters={filters}\n sorting={sorting}\n totalContents={totalCourses}\n />\n </div>\n </div>\n );\n};\n\nSkillDetail.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nSkillDetail.propTypes = {\n title: PropTypes.string.isRequired,\n skillRef: PropTypes.string.isRequired,\n description: PropTypes.string,\n metrics: PropTypes.shape({\n score: PropTypes.number,\n questionsToReview: PropTypes.number\n }),\n focused: PropTypes.bool,\n availableForReview: PropTypes.bool,\n ongoingCoursesAvailable: PropTypes.bool,\n totalCourses: PropTypes.number,\n skillIncludedCourses: PropTypes.shape(CardsGrid.propTypes),\n filters: PropTypes.shape({\n onChange: PropTypes.func,\n options: PropTypes.arrayOf(PropTypes.shape(SelectOptionPropTypes))\n }),\n sorting: PropTypes.shape(Select.propTypes),\n onBackClick: PropTypes.func,\n onReviewClick: PropTypes.func,\n onContinueLearningClick: PropTypes.func\n};\n\nexport default SkillDetail;\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;AAEO,MAAMA,sBAAsB,GAAG,CAACC,KAAD,EAAQC,OAAR,KAAoB;EACxD,MAAM;IAACC,uBAAD;IAA0BC;EAA1B,IAAqCH,KAA3C;EACA,MAAM;IAACI,IAAD;IAAOC;EAAP,IAAoBJ,OAA1B;EACA,MAAMK,gBAAgB,GAAG,mBAAI,gBAAJ,EAAsBF,IAAtB,CAAzB;EAEA,oBACE,uDACE,6BAAC,mBAAD;IACE,KAAK,EACHF,uBAAuB,GAAGG,SAAS,CAAC,mBAAD,CAAZ,GAAoCA,SAAS,CAAC,gBAAD,CAFxE;IAIE,IAAI,EAAC,SAJP;IAKE,WAAW,EAAE;MACXE,KAAK,EAAE,aADI;MAEXC,YAAY,EAAE,MAFH;MAGXC,eAAe,EAAEH;IAHN,CALf;IAUE,oBAAoB,EAAE,IAAAI,yBAAA,EAAS,YAAWJ,gBAAiB,0BAArC,CAVxB;IAWE,UAAU,EAAC,SAXb;IAYE,IAAI,EAAE;MACJK,QAAQ,EAAE,MADN;MAEJC,MAAM,EAAE;QACNC,IAAI,EAAE,MADA;QAENC,KAAK,EAAE,SAFD;QAGNC,IAAI,EAAE;MAHA;IAFJ,CAZR;IAoBE,OAAO,EAAEZ;EApBX,EADF,CADF;AA0BD,CA/BM;;;AAiCPJ,sBAAsB,CAACiB,YAAvB,GAAsC;EACpCZ,IAAI,EAAEa,iBAAA,CAASC,iBAAT,CAA2Bd,IADG;EAEpCC,SAAS,EAAEY,iBAAA,CAASC,iBAAT,CAA2Bb;AAFF,CAAtC;AAKAN,sBAAsB,CAACoB,SAAvB,2CAAmC;EACjCjB,uBAAuB,EAAEkB,kBAAA,CAAUC,IADF;EAEjClB,OAAO,EAAEiB,kBAAA,CAAUE;AAFc,CAAnC;;AAKA,MAAMC,WAAW,GAAG,CAACvB,KAAD,EAAQC,OAAR,KAAoB;EACtC,MAAM;IACJuB,KADI;IAEJC,QAFI;IAGJC,WAHI;IAIJC,OAAO,GAAG,EAJN;IAKJC,OALI;IAMJC,kBANI;IAOJ3B,uBAPI;IAQJ4B,YARI;IASJC,oBATI;IAUJC,OAVI;IAWJC,OAXI;IAYJC,WAZI;IAaJC,aAbI;IAcJC;EAdI,IAeFpC,KAfJ;EAgBA,MAAMqC,cAAc,GAAG,IAAAC,aAAA,EAAO,IAAP,CAAvB;EACA,MAAM;IAACC,KAAK,GAAG,CAAT;IAAYC;EAAZ,IAAiCb,OAAvC;EACA,MAAM;IAACtB;EAAD,IAAcJ,OAApB;EAEA,MAAM,CAACwC,sBAAD,EAAyBC,yBAAzB,IAAsD,IAAAC,eAAA,EAAS,KAAT,CAA5D;EACA,MAAM,CAACC,QAAD,EAAWC,WAAX,IAA0B,IAAAF,eAAA,EAAS,KAAT,CAAhC;EAEA,MAAMG,cAAc,GAAG,IAAAC,kBAAA,EAAY,MAAMF,WAAW,CAAC,CAACD,QAAF,CAA7B,EAA0C,CAACC,WAAD,EAAcD,QAAd,CAA1C,CAAvB;EAEA,IAAAI,gBAAA,EAAU,MAAM;IACd,IAAIX,cAAc,CAACY,OAAnB,EAA4B;MAC1B,MAAM;QAACC,YAAY,GAAG,CAAhB;QAAmBC,YAAY,GAAG;MAAlC,IAAuCd,cAAc,CAACY,OAA5D;MACAP,yBAAyB,CAACS,YAAY,GAAGD,YAAhB,CAAzB;IACD;EACF,CALD,EAKG,CAACxB,WAAD,CALH;EAOA,MAAM0B,WAAW,GAAG,IAAAL,kBAAA,EAAY,MAAM;IACpC,oBACE;MACE,GAAG,EAAEV,cADP;MAEE,SAAS,EAAE,IAAAgB,mBAAA,EAAWC,cAAA,CAAM5B,WAAjB,EAA8B,CAACkB,QAAD,IAAaU,cAAA,CAAMC,QAAjD;IAFb,gBAIE,6BAAC,sBAAD,QAAW7B,WAAX,CAJF,CADF;EAQD,CATmB,EASjB,CAACkB,QAAD,EAAWlB,WAAX,CATiB,CAApB;EAWA,MAAM8B,WAAW,GAAG,IAAAT,kBAAA,EAAY,MAAM;IACpC,IAAIR,KAAK,KAAKkB,SAAd,EAAyB,OAAO,IAAP;IACzB,MAAMC,gBAAgB,GAAG,SAAzB;IACA,MAAMC,wBAAwB,GAAG;MAC/BlD,eAAe,EAAEiD,gBADc;MAE/BnD,KAAK,EAAG,GAAEgC,KAAM;IAFe,CAAjC;IAKA,oBACE;MAAK,SAAS,EAAEe,cAAA,CAAMM;IAAtB,gBACE;MACE,aAAU,UADZ;MAEE,SAAS,EAAEN,cAAA,CAAMO,QAFnB;MAGE,KAAK,EAAEF,wBAHT;MAIE,IAAI,EAAC;IAJP,EADF,CADF;EAUD,CAlBmB,EAkBjB,CAACpB,KAAD,CAlBiB,CAApB;EAoBA,oBACE;IAAK,SAAS,EAAEe,cAAA,CAAMQ;EAAtB,gBACE;IAAK,SAAS,EAAER,cAAA,CAAMS,SAAtB;IAAiC,aAAWtC;EAA5C,GACG,CAAC,qBAAMS,WAAN,CAAD,gBACC,6BAAC,uBAAD;IACE,MAAM,EAAC,YADT;IAEE,aAAU,aAFZ;IAGE,cAAY7B,SAAS,CAAC,MAAD,CAHvB;IAIE,OAAO,EAAE6B,WAJX;IAKE,SAAS,EAAEoB,cAAA,CAAMU,UALnB;IAME,gBAAgB,EAAC;EANnB,EADD,GASG,IAVN,eAWE;IAAK,SAAS,EAAEV,cAAA,CAAMW;EAAtB,gBACE,0CACGrC,OAAO,gBACN;IAAK,SAAS,EAAE0B,cAAA,CAAMY;EAAtB,gBACE,6BAAC,aAAD;IACE,QAAQ,EAAC,gBADX;IAEE,eAAe,EAAC,SAFlB;IAGE,IAAI,EAAE;MACJC,MAAM,EAAE,EADJ;MAEJC,WAAW,EAAE;IAFT;EAHR,EADF,EASG/D,SAAS,CAAC,aAAD,CATZ,CADM,GAYJ,IAbN,eAcE;IAAK,SAAS,EAAEiD,cAAA,CAAM9B;EAAtB,GAA8BA,KAA9B,CAdF,EAeGE,WAAW,gBACV,yEACE,6BAAC,WAAD,OADF,EAEGe,sBAAsB,gBACrB;IAAK,SAAS,EAAEa,cAAA,CAAMe,eAAtB;IAAuC,OAAO,EAAEvB;EAAhD,GACGF,QAAQ,GAAGvC,SAAS,CAAC,WAAD,CAAZ,GAA4BA,SAAS,CAAC,WAAD,CADhD,eAEE,6BAAC,aAAD;IACE,QAAQ,EAAEuC,QAAQ,GAAG,YAAH,GAAkB,cADtC;IAEE,IAAI,EAAE;MACJuB,MAAM,EAAE,EADJ;MAEJC,WAAW,EAAE;IAFT;EAFR,EAFF,CADqB,GAWnB,IAbN,CADU,GAgBR,IA/BN,CADF,eAmCE;IAAK,SAAS,EAAEd,cAAA,CAAMgB;EAAtB,gBACE,6BAAC,mBAAD;IACE,IAAI,EAAC,WADP;IAEE,OAAO,EAAEnC,aAFX;IAGE,KAAK,EAAE9B,SAAS,CAAC,mBAAD,CAHlB;IAIE,QAAQ,EAAE,CAACwB,kBAJb;IAKE,WAAW,EAAE;MACXtB,KAAK,EAAE,aADI;MAEXC,YAAY,EAAE;IAFH;EALf,EADF,eAWE,6BAAC,sBAAD;IACE,uBAAuB,EAAEN,uBAD3B;IAEE,OAAO,EAAEkC;EAFX,EAXF,CAnCF,CAXF,EA+DGI,iBAAiB,GAAG,CAApB,gBACC;IAAK,SAAS,EAAEc,cAAA,CAAMiB,gBAAtB;IAAwC,aAAU;EAAlD,gBACE;IAAM,SAAS,EAAEjB,cAAA,CAAMkB;EAAvB,GAAgDhC,iBAAhD,CADF,UAESnC,SAAS,CAAC,4CAAD,CAFlB,CADD,GAKG,IApEN,eAqEE;IAAK,SAAS,EAAEiD,cAAA,CAAMmB;EAAtB,gBACE,6BAAC,WAAD,OADF,eAEE;IAAM,SAAS,EAAEnB,cAAA,CAAMoB;EAAvB,GAAmDnC,KAAK,CAACoC,OAAN,CAAc,CAAd,CAAnD,MAFF,CArEF,eAyEE,6BAAC,mBAAD;IACE,OAAO,EAAE5C,oBADX;IAEE,OAAO,EAAEC,OAFX;IAGE,OAAO,EAAEC,OAHX;IAIE,aAAa,EAAEH;EAJjB,EAzEF,CADF,CADF;AAoFD,CApJD;;AAsJAP,WAAW,CAACP,YAAZ,GAA2B;EACzBZ,IAAI,EAAEa,iBAAA,CAASC,iBAAT,CAA2Bd,IADR;EAEzBC,SAAS,EAAEY,iBAAA,CAASC,iBAAT,CAA2Bb;AAFb,CAA3B;AAKAkB,WAAW,CAACJ,SAAZ,2CAAwB;EACtBK,KAAK,EAAEJ,kBAAA,CAAUwD,MAAV,CAAiBC,UADF;EAEtBpD,QAAQ,EAAEL,kBAAA,CAAUwD,MAAV,CAAiBC,UAFL;EAGtBnD,WAAW,EAAEN,kBAAA,CAAUwD,MAHD;EAItBjD,OAAO,EAAEP,kBAAA,CAAU0D,KAAV,CAAgB;IACvBvC,KAAK,EAAEnB,kBAAA,CAAU2D,MADM;IAEvBvC,iBAAiB,EAAEpB,kBAAA,CAAU2D;EAFN,CAAhB,CAJa;EAQtBnD,OAAO,EAAER,kBAAA,CAAUC,IARG;EAStBQ,kBAAkB,EAAET,kBAAA,CAAUC,IATR;EAUtBnB,uBAAuB,EAAEkB,kBAAA,CAAUC,IAVb;EAWtBS,YAAY,EAAEV,kBAAA,CAAU2D,MAXF;EAYtBhD,oBAAoB,EAAEX,kBAAA,CAAU0D,KAAV,CAAgBE,kBAAA,CAAU7D,SAA1B,CAZA;EAatBa,OAAO,EAAEZ,kBAAA,CAAU0D,KAAV,CAAgB;IACvBG,QAAQ,EAAE7D,kBAAA,CAAUE,IADG;IAEvB4D,OAAO,EAAE9D,kBAAA,CAAU+D,OAAV,CAAkB/D,kBAAA,CAAU0D,KAAV,CAAgBM,6BAAhB,CAAlB;EAFc,CAAhB,CAba;EAiBtBnD,OAAO,EAAEb,kBAAA,CAAU0D,KAAV,CAAgBO,eAAA,CAAOlE,SAAvB,CAjBa;EAkBtBe,WAAW,EAAEd,kBAAA,CAAUE,IAlBD;EAmBtBa,aAAa,EAAEf,kBAAA,CAAUE,IAnBH;EAoBtBc,uBAAuB,EAAEhB,kBAAA,CAAUE;AApBb,CAAxB;eAuBeC,W"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../src/variables/colors.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,MAAM
|
|
1
|
+
{"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../src/variables/colors.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,MAAM;;;;;;;CAOT,CAAC;AAEX,oBAAY,MAAM,GAAG,OAAO,MAAM,CAAC"}
|
package/lib/variables/colors.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"colors.js","names":["COLORS","gray","negative","positive","cm_grey_800","cm_primary_blue"],"sources":["../../src/variables/colors.ts"],"sourcesContent":["export const COLORS = {\n gray: '#EAEAEB',\n negative: '#ed3436',\n positive: '#35CC7F',\n cm_grey_800: '#171721',\n cm_primary_blue: '#0061FF'\n} as const;\n\nexport type Colors = typeof COLORS;\n"],"mappings":";;;;AAAO,MAAMA,MAAM,GAAG;EACpBC,IAAI,EAAE,SADc;EAEpBC,QAAQ,EAAE,SAFU;EAGpBC,QAAQ,EAAE,SAHU;EAIpBC,
|
|
1
|
+
{"version":3,"file":"colors.js","names":["COLORS","gray","negative","positive","white","cm_grey_800","cm_primary_blue"],"sources":["../../src/variables/colors.ts"],"sourcesContent":["export const COLORS = {\n gray: '#EAEAEB',\n negative: '#ed3436',\n positive: '#35CC7F',\n white: '#ffffff',\n cm_grey_800: '#171721',\n cm_primary_blue: '#0061FF'\n} as const;\n\nexport type Colors = typeof COLORS;\n"],"mappings":";;;;AAAO,MAAMA,MAAM,GAAG;EACpBC,IAAI,EAAE,SADc;EAEpBC,QAAQ,EAAE,SAFU;EAGpBC,QAAQ,EAAE,SAHU;EAIpBC,KAAK,EAAE,SAJa;EAKpBC,WAAW,EAAE,SALO;EAMpBC,eAAe,EAAE;AANG,CAAf"}
|
package/locales/bs/global.json
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
"At the end of this level, you will be able to_": "Na kraju ovog nivoa moći ćete: ",
|
|
12
12
|
"author": "autor/ica ",
|
|
13
13
|
"associated_skills": "Povezane vještine",
|
|
14
|
+
"back": "Back",
|
|
14
15
|
"Back to Dashboard Home": "Povratak na kontrolnu tablu",
|
|
15
16
|
"back_to_catalog": "Povratak na kurseve",
|
|
16
17
|
"badge": "Značka",
|
|
@@ -42,6 +43,7 @@
|
|
|
42
43
|
"continue_learning": "Nastavite sa učenjem",
|
|
43
44
|
"learning_priority_modal_title": "Novi prioritet učenja",
|
|
44
45
|
"learning_priority_modal_description": "Kreirajte prioritet učenja odabirom jedne vještine, liste za reprodukciju ili certifikata.",
|
|
46
|
+
"locked": "Locked",
|
|
45
47
|
"skills_change_focus": "Promijenite fokus vještina",
|
|
46
48
|
"skills_choose_focus": "Odaberite fokus",
|
|
47
49
|
"cancel": "Otkaži",
|
package/locales/cs/global.json
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
"At the end of this level, you will be able to_": "Na konci této úrovně budete moci:",
|
|
12
12
|
"author": "autor",
|
|
13
13
|
"associated_skills": "Přidružené dovednosti",
|
|
14
|
+
"back": "Back",
|
|
14
15
|
"Back to Dashboard Home": "Zpět na domovskou stránku ovládacího panelu",
|
|
15
16
|
"back_to_catalog": "Zpět na kurzy",
|
|
16
17
|
"badge": "Odznak",
|
|
@@ -42,6 +43,7 @@
|
|
|
42
43
|
"continue_learning": "Pokračujte v učení",
|
|
43
44
|
"learning_priority_modal_title": "Nová priorita učení",
|
|
44
45
|
"learning_priority_modal_description": "Vytvořte si prioritu učení výběrem jedné dovednosti, seznamu skladeb nebo certifikace.",
|
|
46
|
+
"locked": "Locked",
|
|
45
47
|
"skills_change_focus": "Změnit zaměření dovednosti",
|
|
46
48
|
"skills_choose_focus": "Vyberte své zaměření",
|
|
47
49
|
"cancel": "Zrušit",
|
package/locales/de/global.json
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
"At the end of this level, you will be able to_": "Am Ende dieses Levels können Sie:",
|
|
12
12
|
"author": "Autor",
|
|
13
13
|
"associated_skills": "Zugehörige Fähigkeiten",
|
|
14
|
+
"back": "Back",
|
|
14
15
|
"Back to Dashboard Home": "Zurück zur Startseite des Dashboards",
|
|
15
16
|
"back_to_catalog": "Zurück zu den Kursen",
|
|
16
17
|
"badge": "Abzeichen",
|
|
@@ -42,6 +43,7 @@
|
|
|
42
43
|
"continue_learning": "Weiter lernen",
|
|
43
44
|
"learning_priority_modal_title": "Neue Lernpriorität",
|
|
44
45
|
"learning_priority_modal_description": "Erstellen Sie eine Lernpriorität, indem Sie entweder eine Fähigkeit, eine Wiedergabeliste oder eine Zertifizierung auswählen.",
|
|
46
|
+
"locked": "Locked",
|
|
45
47
|
"skills_change_focus": "Fähigkeitsfokus ändern",
|
|
46
48
|
"skills_choose_focus": "Wählen Sie Ihren Fokus",
|
|
47
49
|
"cancel": "Abbrechen",
|
package/locales/es/global.json
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
"At the end of this level, you will be able to_": "Al final de este nivel, podrás:",
|
|
12
12
|
"author": "autor",
|
|
13
13
|
"associated_skills": "Habilidades asociadas",
|
|
14
|
+
"back": "Back",
|
|
14
15
|
"Back to Dashboard Home": "Volver al panel de inicio",
|
|
15
16
|
"back_to_catalog": "Volver a los cursos",
|
|
16
17
|
"badge": "Insignia",
|
|
@@ -42,6 +43,7 @@
|
|
|
42
43
|
"continue_learning": "Continuar aprendiendo",
|
|
43
44
|
"learning_priority_modal_title": "Nueva prioridad de aprendizaje",
|
|
44
45
|
"learning_priority_modal_description": "Crea una prioridad de aprendizaje seleccionando una habilidad, lista de reproducción o certificación.",
|
|
46
|
+
"locked": "Locked",
|
|
45
47
|
"skills_change_focus": "Cambiar enfoque de habilidades",
|
|
46
48
|
"skills_choose_focus": "Elige el enfoque que te interese",
|
|
47
49
|
"cancel": "Cancelar",
|
package/locales/et/global.json
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
"At the end of this level, you will be able to_": "Selle taseme läbimisel oskad:",
|
|
12
12
|
"author": "autor",
|
|
13
13
|
"associated_skills": "Seotud oskused",
|
|
14
|
+
"back": "Back",
|
|
14
15
|
"Back to Dashboard Home": "Tagasi esilehele",
|
|
15
16
|
"back_to_catalog": "Tagasi kursuste esilehele",
|
|
16
17
|
"badge": "Märk",
|
|
@@ -42,6 +43,7 @@
|
|
|
42
43
|
"continue_learning": "Jätkake õppimist",
|
|
43
44
|
"learning_priority_modal_title": "Uus õppimise prioriteet",
|
|
44
45
|
"learning_priority_modal_description": "Looge õppimise prioriteet, valides kas ühe oskuse, esitusloendi või sertifikaadi.",
|
|
46
|
+
"locked": "Locked",
|
|
45
47
|
"skills_change_focus": "Muuda oskusfookust",
|
|
46
48
|
"skills_choose_focus": "Vali oma fookus",
|
|
47
49
|
"cancel": "Tühista",
|
package/locales/fi/global.json
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
"At the end of this level, you will be able to_": "Tämän tason päätteeksi pystyt:",
|
|
12
12
|
"author": "tekijä",
|
|
13
13
|
"associated_skills": "Liittyvät taidot",
|
|
14
|
+
"back": "Back",
|
|
14
15
|
"Back to Dashboard Home": "Takaisin koontinäytön kotisivulle",
|
|
15
16
|
"back_to_catalog": "Takaisin kursseihin",
|
|
16
17
|
"badge": "Kunniamerkki",
|
|
@@ -42,6 +43,7 @@
|
|
|
42
43
|
"continue_learning": "Jatka oppimista",
|
|
43
44
|
"learning_priority_modal_title": "Uusi oppimisprioriteetti",
|
|
44
45
|
"learning_priority_modal_description": "Luo oppimisprioriteetti valitsemalla joko yksi taito, soittolista tai todistus.",
|
|
46
|
+
"locked": "Locked",
|
|
45
47
|
"skills_change_focus": "Vaihda osaamisen painopistettä",
|
|
46
48
|
"skills_choose_focus": "Valitse painopisteesi",
|
|
47
49
|
"cancel": "Peruuta",
|
package/locales/fr/global.json
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
"At the end of this level, you will be able to_": "À l'issue de ce cours, vous serez capable de :",
|
|
12
12
|
"author": "auteur",
|
|
13
13
|
"associated_skills": "Compétences associées",
|
|
14
|
+
"back": "Back",
|
|
14
15
|
"Back to Dashboard Home": "Retour à l’accueil du tableau de bord",
|
|
15
16
|
"back_to_catalog": "Retour aux cours",
|
|
16
17
|
"badge": "Badge",
|
|
@@ -42,6 +43,7 @@
|
|
|
42
43
|
"continue_learning": "Continuer à apprendre",
|
|
43
44
|
"learning_priority_modal_title": "Nouvelle priorité d’apprentissage",
|
|
44
45
|
"learning_priority_modal_description": "Créez une priorité d’apprentissage en sélectionnant une compétence, une liste de lecture ou une certification.",
|
|
46
|
+
"locked": "Locked",
|
|
45
47
|
"skills_change_focus": "Changer ses compétences ciblées",
|
|
46
48
|
"skills_choose_focus": "Choisissez votre objectif",
|
|
47
49
|
"cancel": "Annuler",
|
package/locales/hr/global.json
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
"At the end of this level, you will be able to_": "Na kraju ove razine moći ćete:",
|
|
12
12
|
"author": "autor",
|
|
13
13
|
"associated_skills": "Pridružene vještine",
|
|
14
|
+
"back": "Back",
|
|
14
15
|
"Back to Dashboard Home": "Povratak na početnu stranicu nadzorne ploče",
|
|
15
16
|
"back_to_catalog": "Povratak na tečajeve",
|
|
16
17
|
"badge": "Značka",
|
|
@@ -42,6 +43,7 @@
|
|
|
42
43
|
"continue_learning": "Nastavite učiti",
|
|
43
44
|
"learning_priority_modal_title": "Novi prioritet učenja",
|
|
44
45
|
"learning_priority_modal_description": "Stvorite prioritet učenja odabirom jedne vještine, popisa za reprodukciju ili certifikata.",
|
|
46
|
+
"locked": "Locked",
|
|
45
47
|
"skills_change_focus": "Promijeni fokus vještina",
|
|
46
48
|
"skills_choose_focus": "Odaberi svoj fokus",
|
|
47
49
|
"cancel": "Odustani",
|