@coorpacademy/components 11.32.24-alpha.6 → 11.32.25
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/button-link/index.d.ts +1 -0
- package/es/atom/button-link/index.d.ts.map +1 -1
- package/es/atom/button-link/index.js +4 -2
- package/es/atom/button-link/index.js.map +1 -1
- package/es/atom/button-link/types.d.ts +2 -0
- package/es/atom/button-link/types.d.ts.map +1 -1
- package/es/atom/button-link/types.js +1 -0
- package/es/atom/button-link/types.js.map +1 -1
- package/es/atom/circular-progress-bar/index.d.ts.map +1 -1
- package/es/atom/circular-progress-bar/index.js +1 -10
- package/es/atom/circular-progress-bar/index.js.map +1 -1
- package/es/atom/input-doublestep/index.d.ts +1 -0
- package/es/atom/input-doublestep/index.d.ts.map +1 -1
- package/es/atom/input-doublestep/index.js +38 -13
- package/es/atom/input-doublestep/index.js.map +1 -1
- package/es/atom/input-doublestep/style.css +7 -67
- package/es/atom/select/index.js +1 -1
- package/es/atom/select/index.js.map +1 -1
- package/es/molecule/base-modal/index.d.ts +1 -0
- package/es/molecule/base-modal/index.d.ts.map +1 -1
- package/es/molecule/base-modal/index.js +8 -6
- package/es/molecule/base-modal/index.js.map +1 -1
- package/es/molecule/brand-create-form/index.d.ts.map +1 -1
- package/es/molecule/brand-create-form/index.js +9 -4
- package/es/molecule/brand-create-form/index.js.map +1 -1
- package/es/molecule/brand-download-box/index.d.ts.map +1 -1
- package/es/molecule/brand-download-box/index.js +11 -6
- package/es/molecule/brand-download-box/index.js.map +1 -1
- package/es/molecule/brand-download-box/style.css +6 -5
- package/es/molecule/brand-form-group/index.d.ts.map +1 -1
- package/es/molecule/brand-form-group/index.js +12 -1
- package/es/molecule/brand-form-group/index.js.map +1 -1
- package/es/molecule/cm-popin/style.css +1 -1
- package/es/molecule/cm-popin/types.d.ts +3 -0
- package/es/molecule/cm-popin/types.d.ts.map +1 -1
- package/es/molecule/discipline-associated-skills/index.js +1 -1
- package/es/molecule/discipline-associated-skills/index.js.map +1 -1
- package/es/molecule/draggable-list/index.d.ts +1 -0
- package/es/molecule/expandible-actionable-table/index.d.ts +1 -0
- package/es/molecule/expandible-actionable-table/index.d.ts.map +1 -1
- package/es/molecule/expandible-actionable-table/types.d.ts +1 -0
- package/es/molecule/expandible-actionable-table/types.d.ts.map +1 -1
- package/es/molecule/learning-priority-modal/index.d.ts.map +1 -1
- package/es/molecule/learning-priority-modal/index.js +8 -15
- package/es/molecule/learning-priority-modal/index.js.map +1 -1
- package/es/molecule/learning-priority-modal/style.css +0 -1
- package/es/molecule/learning-priority-setup-item/index.d.ts.map +1 -1
- package/es/molecule/learning-priority-setup-item/index.js +1 -1
- package/es/molecule/learning-priority-setup-item/index.js.map +1 -1
- package/es/molecule/learning-profile-radar-chart/index.d.ts.map +1 -1
- package/es/molecule/learning-profile-radar-chart/index.js +0 -2
- package/es/molecule/learning-profile-radar-chart/index.js.map +1 -1
- package/es/molecule/playlist-detail-cover/index.d.ts +14 -0
- package/es/molecule/playlist-detail-cover/index.d.ts.map +1 -0
- package/es/molecule/playlist-detail-cover/index.js +52 -0
- package/es/molecule/playlist-detail-cover/index.js.map +1 -0
- package/es/molecule/playlist-detail-cover/style.css +17 -0
- package/es/molecule/setup-section/index.d.ts.map +1 -1
- package/es/molecule/setup-section/index.js +3 -1
- package/es/molecule/setup-section/index.js.map +1 -1
- package/es/molecule/setup-section/style.css +2 -2
- package/es/molecule/skill-picker-modal/index.js +1 -1
- package/es/molecule/skill-picker-modal/index.js.map +1 -1
- package/es/organism/brand-form/index.d.ts.map +1 -1
- package/es/organism/brand-form/index.js +24 -15
- package/es/organism/brand-form/index.js.map +1 -1
- package/es/organism/brand-learning-priorities/index.d.ts +1 -21
- package/es/organism/brand-learning-priorities/index.d.ts.map +1 -1
- package/es/organism/brand-learning-priorities/index.js +1 -14
- package/es/organism/brand-learning-priorities/index.js.map +1 -1
- package/es/organism/brand-learning-priorities/style.css +2 -0
- package/es/organism/list-item/index.d.ts +3 -1
- package/es/organism/list-item/index.d.ts.map +1 -1
- package/es/organism/list-item/index.js +7 -5
- package/es/organism/list-item/index.js.map +1 -1
- package/es/organism/list-items/index.d.ts +3 -0
- package/es/organism/setup-header/index.d.ts +4 -0
- package/es/organism/wizard-contents/index.d.ts +3 -0
- package/es/template/app-player/loading/index.d.ts +3 -0
- package/es/template/app-player/player/index.d.ts +6 -0
- package/es/template/app-player/player/slides/index.d.ts +3 -0
- package/es/template/app-player/player/slides/index.d.ts.map +1 -1
- package/es/template/app-player/popin-correction/index.d.ts +3 -0
- package/es/template/app-player/popin-correction/index.d.ts.map +1 -1
- package/es/template/app-player/popin-end/index.d.ts +3 -0
- package/es/template/app-review/index.d.ts +3 -0
- package/es/template/app-review/index.d.ts.map +1 -1
- package/es/template/app-review/player/prop-types.d.ts +3 -0
- package/es/template/app-review/player/prop-types.d.ts.map +1 -1
- package/es/template/app-review/prop-types.d.ts +3 -0
- package/es/template/app-review/prop-types.d.ts.map +1 -1
- package/es/template/back-office/brand-create/index.d.ts +4 -0
- package/es/template/back-office/brand-create/index.d.ts.map +1 -1
- package/es/template/back-office/brand-list/index.d.ts +4 -0
- package/es/template/back-office/brand-list/index.d.ts.map +1 -1
- package/es/template/back-office/brand-update/index.d.ts +14 -0
- package/es/template/back-office/dashboard-preview/index.d.ts +4 -0
- package/es/template/back-office/layout/index.d.ts +4 -0
- package/es/template/back-office/layout/index.d.ts.map +1 -1
- package/es/template/common/dashboard/index.d.ts +6 -0
- package/es/template/common/search-page/index.d.ts +3 -0
- package/es/template/external-course/index.d.ts +3 -0
- package/es/template/my-learning/index.js +1 -1
- package/es/template/my-learning/index.js.map +1 -1
- package/es/template/playlist-detail/index.d.ts +96 -0
- package/es/template/playlist-detail/index.d.ts.map +1 -0
- package/es/template/playlist-detail/index.js +109 -0
- package/es/template/playlist-detail/index.js.map +1 -0
- package/es/template/playlist-detail/style.css +108 -0
- package/es/template/skill-detail/all-courses.d.ts +1 -1
- package/es/template/skill-detail/all-courses.js +3 -3
- package/es/template/skill-detail/all-courses.js.map +1 -1
- package/es/template/skill-detail/index.d.ts +39 -4
- package/es/template/skill-detail/index.d.ts.map +1 -1
- package/es/template/skill-detail/index.js +2 -4
- package/es/template/skill-detail/index.js.map +1 -1
- package/es/util/external-content.d.ts +1 -0
- package/es/util/external-content.d.ts.map +1 -1
- package/es/util/external-content.js +1 -0
- package/es/util/external-content.js.map +1 -1
- package/lib/atom/button-link/index.d.ts +1 -0
- package/lib/atom/button-link/index.d.ts.map +1 -1
- package/lib/atom/button-link/index.js +4 -2
- package/lib/atom/button-link/index.js.map +1 -1
- package/lib/atom/button-link/types.d.ts +2 -0
- package/lib/atom/button-link/types.d.ts.map +1 -1
- package/lib/atom/button-link/types.js +1 -0
- package/lib/atom/button-link/types.js.map +1 -1
- package/lib/atom/circular-progress-bar/index.d.ts.map +1 -1
- package/lib/atom/circular-progress-bar/index.js +1 -10
- package/lib/atom/circular-progress-bar/index.js.map +1 -1
- package/lib/atom/input-doublestep/index.d.ts +1 -0
- package/lib/atom/input-doublestep/index.d.ts.map +1 -1
- package/lib/atom/input-doublestep/index.js +39 -13
- package/lib/atom/input-doublestep/index.js.map +1 -1
- package/lib/atom/input-doublestep/style.css +7 -67
- package/lib/atom/select/index.js +1 -1
- package/lib/atom/select/index.js.map +1 -1
- package/lib/molecule/base-modal/index.d.ts +1 -0
- package/lib/molecule/base-modal/index.d.ts.map +1 -1
- package/lib/molecule/base-modal/index.js +8 -6
- package/lib/molecule/base-modal/index.js.map +1 -1
- package/lib/molecule/brand-create-form/index.d.ts.map +1 -1
- package/lib/molecule/brand-create-form/index.js +9 -4
- package/lib/molecule/brand-create-form/index.js.map +1 -1
- package/lib/molecule/brand-download-box/index.d.ts.map +1 -1
- package/lib/molecule/brand-download-box/index.js +11 -6
- package/lib/molecule/brand-download-box/index.js.map +1 -1
- package/lib/molecule/brand-download-box/style.css +6 -5
- package/lib/molecule/brand-form-group/index.d.ts.map +1 -1
- package/lib/molecule/brand-form-group/index.js +12 -1
- package/lib/molecule/brand-form-group/index.js.map +1 -1
- package/lib/molecule/cm-popin/style.css +1 -1
- package/lib/molecule/cm-popin/types.d.ts +3 -0
- package/lib/molecule/cm-popin/types.d.ts.map +1 -1
- package/lib/molecule/discipline-associated-skills/index.js +1 -1
- package/lib/molecule/discipline-associated-skills/index.js.map +1 -1
- package/lib/molecule/draggable-list/index.d.ts +1 -0
- package/lib/molecule/expandible-actionable-table/index.d.ts +1 -0
- package/lib/molecule/expandible-actionable-table/index.d.ts.map +1 -1
- package/lib/molecule/expandible-actionable-table/types.d.ts +1 -0
- package/lib/molecule/expandible-actionable-table/types.d.ts.map +1 -1
- package/lib/molecule/learning-priority-modal/index.d.ts.map +1 -1
- package/lib/molecule/learning-priority-modal/index.js +9 -14
- package/lib/molecule/learning-priority-modal/index.js.map +1 -1
- package/lib/molecule/learning-priority-modal/style.css +0 -1
- package/lib/molecule/learning-priority-setup-item/index.d.ts.map +1 -1
- package/lib/molecule/learning-priority-setup-item/index.js +1 -1
- package/lib/molecule/learning-priority-setup-item/index.js.map +1 -1
- package/lib/molecule/learning-profile-radar-chart/index.d.ts.map +1 -1
- package/lib/molecule/learning-profile-radar-chart/index.js +0 -2
- package/lib/molecule/learning-profile-radar-chart/index.js.map +1 -1
- package/lib/molecule/playlist-detail-cover/index.d.ts +14 -0
- package/lib/molecule/playlist-detail-cover/index.d.ts.map +1 -0
- package/lib/molecule/playlist-detail-cover/index.js +68 -0
- package/lib/molecule/playlist-detail-cover/index.js.map +1 -0
- package/lib/molecule/playlist-detail-cover/style.css +17 -0
- package/lib/molecule/setup-section/index.d.ts.map +1 -1
- package/lib/molecule/setup-section/index.js +4 -1
- package/lib/molecule/setup-section/index.js.map +1 -1
- package/lib/molecule/setup-section/style.css +2 -2
- package/lib/molecule/skill-picker-modal/index.js +1 -1
- package/lib/molecule/skill-picker-modal/index.js.map +1 -1
- package/lib/organism/brand-form/index.d.ts.map +1 -1
- package/lib/organism/brand-form/index.js +24 -15
- package/lib/organism/brand-form/index.js.map +1 -1
- package/lib/organism/brand-learning-priorities/index.d.ts +1 -21
- package/lib/organism/brand-learning-priorities/index.d.ts.map +1 -1
- package/lib/organism/brand-learning-priorities/index.js +3 -15
- package/lib/organism/brand-learning-priorities/index.js.map +1 -1
- package/lib/organism/brand-learning-priorities/style.css +2 -0
- package/lib/organism/list-item/index.d.ts +3 -1
- package/lib/organism/list-item/index.d.ts.map +1 -1
- package/lib/organism/list-item/index.js +7 -5
- package/lib/organism/list-item/index.js.map +1 -1
- package/lib/organism/list-items/index.d.ts +3 -0
- package/lib/organism/setup-header/index.d.ts +4 -0
- package/lib/organism/wizard-contents/index.d.ts +3 -0
- package/lib/template/app-player/loading/index.d.ts +3 -0
- package/lib/template/app-player/player/index.d.ts +6 -0
- package/lib/template/app-player/player/slides/index.d.ts +3 -0
- package/lib/template/app-player/player/slides/index.d.ts.map +1 -1
- package/lib/template/app-player/popin-correction/index.d.ts +3 -0
- package/lib/template/app-player/popin-correction/index.d.ts.map +1 -1
- package/lib/template/app-player/popin-end/index.d.ts +3 -0
- package/lib/template/app-review/index.d.ts +3 -0
- package/lib/template/app-review/index.d.ts.map +1 -1
- package/lib/template/app-review/player/prop-types.d.ts +3 -0
- package/lib/template/app-review/player/prop-types.d.ts.map +1 -1
- package/lib/template/app-review/prop-types.d.ts +3 -0
- package/lib/template/app-review/prop-types.d.ts.map +1 -1
- package/lib/template/back-office/brand-create/index.d.ts +4 -0
- package/lib/template/back-office/brand-create/index.d.ts.map +1 -1
- package/lib/template/back-office/brand-list/index.d.ts +4 -0
- package/lib/template/back-office/brand-list/index.d.ts.map +1 -1
- package/lib/template/back-office/brand-update/index.d.ts +14 -0
- package/lib/template/back-office/dashboard-preview/index.d.ts +4 -0
- package/lib/template/back-office/layout/index.d.ts +4 -0
- package/lib/template/back-office/layout/index.d.ts.map +1 -1
- package/lib/template/common/dashboard/index.d.ts +6 -0
- package/lib/template/common/search-page/index.d.ts +3 -0
- package/lib/template/external-course/index.d.ts +3 -0
- package/lib/template/my-learning/index.js +1 -1
- package/lib/template/my-learning/index.js.map +1 -1
- package/lib/template/playlist-detail/index.d.ts +96 -0
- package/lib/template/playlist-detail/index.d.ts.map +1 -0
- package/lib/template/playlist-detail/index.js +134 -0
- package/lib/template/playlist-detail/index.js.map +1 -0
- package/lib/template/playlist-detail/style.css +108 -0
- package/lib/template/skill-detail/all-courses.d.ts +1 -1
- package/lib/template/skill-detail/all-courses.js +3 -3
- package/lib/template/skill-detail/all-courses.js.map +1 -1
- package/lib/template/skill-detail/index.d.ts +39 -4
- package/lib/template/skill-detail/index.d.ts.map +1 -1
- package/lib/template/skill-detail/index.js +3 -2
- package/lib/template/skill-detail/index.js.map +1 -1
- package/lib/util/external-content.d.ts +1 -0
- package/lib/util/external-content.d.ts.map +1 -1
- package/lib/util/external-content.js +3 -1
- package/lib/util/external-content.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","useEffect","useMemo","useState","useCallback","PropTypes","convert","BaseModal","ListItem","ButtonLink","Loader","Provider","SelectOptionPropTypes","SearchForm","searchValueIncluded","style","FilterButton","props","context","active","filter","itemTotal","onClick","skin","primarySkinColor","Content","skillFilterNumber","skillFilterNumberInActive","backgroundColor","color","buttonProps","customStyle","transition","width","content","contextTypes","childContextTypes","translate","propTypes","bool","string","number","func","LearningPriorityModal","priorities","preselected","isOpen","isLoading","filters","onCancel","onAdd","onClose","selectedPriority","setSelectedPriority","selectedPriorityType","setSelectedPriorityType","searchValue","setSearchValue","filterValue","setFilterValue","searchResults","setSearchResults","handleCancel","handleClose","handleSearch","value","priority","title","handleSearchReset","priorityList","map","isPreSelectedPriority","some","selected","priorityRef","disabled","footer","cancelButton","label","confirmButton","onConfirm","iconName","LearningPriorityContainer","loaderContainer","loader","searchWrapper","placeholder","onChange","filterWrapper","length","index","name","count","handleChange","filterButtonWrapper","priorityListWrapper","courses","type","handlePriorityClick","subtitle","arrayOf","shape","oneOf"],"sources":["../../../src/molecule/learning-priority-modal/index.js"],"sourcesContent":["import React, {useEffect, useMemo, useState, useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport {get, assign, pick} from 'lodash/fp';\nimport {convert} from 'css-color-function';\nimport BaseModal from '../base-modal';\nimport ListItem from '../../organism/list-item';\nimport ButtonLink from '../../atom/button-link';\nimport Loader from '../../atom/loader';\nimport Provider from '../../atom/provider';\nimport {SelectOptionPropTypes} from '../../atom/select';\nimport SearchForm from '../search-form';\nimport searchValueIncluded from '../../util/search-value-included';\nimport style from './style.css';\n\nconst FilterButton = (props, context) => {\n const {active, filter, itemTotal, 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 {itemTotal}\n </span>\n </div>\n ),\n [filter, itemTotal, active, primarySkinColor]\n );\n\n const buttonProps = {\n customStyle: {\n backgroundColor: active ? convert(`color(${primarySkinColor} a(0.07))`) : 'transparent',\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 itemTotal: PropTypes.number,\n onClick: PropTypes.func\n};\n\nconst LearningPriorityModal = (props, context) => {\n const {priorities, preselected, isOpen, isLoading, filters, onCancel, onAdd, onClose} = props;\n const {translate} = context;\n\n const [selectedPriority, setSelectedPriority] = useState('');\n const [selectedPriorityType, setSelectedPriorityType] = useState('');\n const [searchValue, setSearchValue] = useState('');\n const [filterValue, setFilterValue] = useState('all');\n const [searchResults, setSearchResults] = useState(priorities);\n\n const handleCancel = useCallback(() => {\n setSelectedPriority('');\n setSelectedPriorityType('');\n onCancel();\n }, [setSelectedPriority, setSelectedPriorityType, onCancel]);\n\n const handleClose = useCallback(() => {\n setSelectedPriority('');\n setSelectedPriorityType('');\n onClose();\n }, [setSelectedPriority, setSelectedPriorityType, onClose]);\n\n const handleSearch = useCallback(\n value => {\n setSearchValue(value);\n setSearchResults(priorities.filter(priority => searchValueIncluded(priority.title, value)));\n },\n [priorities, setSearchValue, setSearchResults]\n );\n\n const handleSearchReset = useCallback(() => {\n setSearchValue('');\n setSearchResults(priorities);\n }, [priorities, setSearchValue, setSearchResults]);\n\n useEffect(() => {\n setSearchResults(priorities);\n }, [priorities]);\n\n const priorityList = useMemo(() => {\n return searchResults.map(priority => {\n const isPreSelectedPriority = preselected.some(selected => selected === priority.priorityRef);\n return assign(\n {\n selected: isPreSelectedPriority,\n disabled: isPreSelectedPriority\n },\n pick(['title', 'priorityRef', 'type', 'courses'], priority)\n );\n });\n }, [searchResults, preselected]);\n\n const footer = useMemo(() => {\n return {\n cancelButton: {\n onCancel: handleCancel,\n label: translate('cancel')\n },\n confirmButton: {\n onConfirm: () => {\n onAdd(selectedPriority, selectedPriorityType);\n setSelectedPriority('');\n setSelectedPriorityType('');\n onClose();\n },\n label: translate('add'),\n iconName: 'plus',\n disabled: isLoading || !selectedPriority\n }\n };\n }, [\n handleCancel,\n setSelectedPriority,\n setSelectedPriorityType,\n onAdd,\n translate,\n selectedPriority,\n selectedPriorityType,\n isLoading\n ]);\n\n if ((!isLoading && !priorities) || !isOpen) return null;\n\n return (\n <BaseModal\n title={translate('learning_priority_modal_title')}\n description={translate('learning_priority_modal_description')}\n isOpen={isOpen}\n onClose={handleClose}\n footer={footer}\n >\n <div className={style.LearningPriorityContainer}>\n {isLoading ? (\n <div className={style.loaderContainer}>\n <Loader className={style.loader} theme=\"coorpmanager\" />\n </div>\n ) : (\n <>\n <div className={style.searchWrapper}>\n <SearchForm\n search={{\n placeholder: translate('search_priority_place_holder'),\n value: searchValue,\n onChange: handleSearch\n }}\n onReset={handleSearchReset}\n />\n </div>\n <div className={style.filterWrapper}>\n {searchResults.length > 0\n ? filters.map((filter, index) => {\n const {name, value, count} = filter;\n\n function handleChange() {\n setFilterValue(value);\n handleSearchReset();\n }\n\n if (count === 0) return null;\n\n return (\n <div key={index} className={style.filterButtonWrapper}>\n <FilterButton\n active={filterValue === value}\n filter={name}\n onClick={handleChange}\n itemTotal={count}\n />\n </div>\n );\n })\n : null}\n </div>\n <div className={style.priorityListWrapper}>\n {priorityList.map(priority => {\n const {title, priorityRef, courses = null, type, selected, disabled} = priority;\n function handlePriorityClick() {\n if (selectedPriority === priorityRef) {\n setSelectedPriority('');\n setSelectedPriorityType('');\n return;\n }\n setSelectedPriority(priorityRef);\n setSelectedPriorityType(type);\n }\n\n if (filterValue !== 'all' && type !== filterValue) return null;\n\n return (\n <ListItem\n {...(courses !== null ? {subtitle: `${courses} ${translate('courses')}`} : {})}\n title={title}\n selected={selected || selectedPriority === priorityRef}\n disabled={disabled}\n onClick={handlePriorityClick}\n tags={[{label: type, type: 'default'}]}\n key={priorityRef}\n backgroundColor=\"skin\"\n />\n );\n })}\n </div>\n </>\n )}\n </div>\n </BaseModal>\n );\n};\n\nLearningPriorityModal.contextTypes = {\n translate: Provider.childContextTypes.translate\n};\n\nLearningPriorityModal.propTypes = {\n priorities: PropTypes.arrayOf(\n PropTypes.shape({\n priorityRef: PropTypes.string,\n title: PropTypes.string,\n courses: PropTypes.number,\n type: PropTypes.oneOf(['skill', 'playlist', 'certificate'])\n })\n ),\n preselected: PropTypes.arrayOf(PropTypes.string),\n isOpen: PropTypes.bool,\n isLoading: PropTypes.bool,\n filters: PropTypes.arrayOf(\n PropTypes.shape({\n ...SelectOptionPropTypes,\n count: PropTypes.number\n })\n ),\n onCancel: PropTypes.func,\n onAdd: PropTypes.func,\n onClose: PropTypes.func\n};\n\nexport default LearningPriorityModal;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","useEffect","useMemo","useState","useCallback","PropTypes","convert","BaseModal","ListItem","ButtonLink","Loader","Provider","SelectOptionPropTypes","SearchForm","searchValueIncluded","COLORS","style","FilterButton","props","active","filter","itemTotal","onClick","primarySkinColor","cm_primary_blue","Content","skillFilterNumber","skillFilterNumberInActive","backgroundColor","color","buttonProps","customStyle","transition","width","content","propTypes","bool","string","number","func","LearningPriorityModal","context","priorities","preselected","isOpen","isLoading","filters","onCancel","onAdd","onClose","translate","selectedPriority","setSelectedPriority","selectedPriorityType","setSelectedPriorityType","searchValue","setSearchValue","filterValue","setFilterValue","searchResults","setSearchResults","handleCancel","handleClose","handleSearch","value","priority","title","handleSearchReset","priorityList","map","isPreSelectedPriority","some","selected","priorityRef","disabled","footer","cancelButton","label","confirmButton","onConfirm","iconName","LearningPriorityContainer","loaderContainer","loader","searchWrapper","placeholder","onChange","filterWrapper","length","index","name","count","handleChange","filterButtonWrapper","priorityListWrapper","courses","type","handlePriorityClick","subtitle","contextTypes","childContextTypes","arrayOf","shape","oneOf"],"sources":["../../../src/molecule/learning-priority-modal/index.js"],"sourcesContent":["import React, {useEffect, useMemo, useState, useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport {assign, pick} from 'lodash/fp';\nimport {convert} from 'css-color-function';\nimport BaseModal from '../base-modal';\nimport ListItem from '../../organism/list-item';\nimport ButtonLink from '../../atom/button-link';\nimport Loader from '../../atom/loader';\nimport Provider from '../../atom/provider';\nimport {SelectOptionPropTypes} from '../../atom/select';\nimport SearchForm from '../search-form';\nimport searchValueIncluded from '../../util/search-value-included';\nimport {COLORS} from '../../variables/colors';\nimport style from './style.css';\n\nconst FilterButton = props => {\n const {active, filter, itemTotal, onClick} = props;\n const primarySkinColor = COLORS.cm_primary_blue;\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 {itemTotal}\n </span>\n </div>\n ),\n [filter, itemTotal, active, primarySkinColor]\n );\n\n const buttonProps = {\n customStyle: {\n backgroundColor: active ? convert(`color(${primarySkinColor} a(0.07))`) : 'transparent',\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.propTypes = {\n active: PropTypes.bool,\n filter: PropTypes.string,\n itemTotal: PropTypes.number,\n onClick: PropTypes.func\n};\n\nconst LearningPriorityModal = (props, context) => {\n const {priorities, preselected, isOpen, isLoading, filters, onCancel, onAdd, onClose} = props;\n const {translate} = context;\n\n const [selectedPriority, setSelectedPriority] = useState('');\n const [selectedPriorityType, setSelectedPriorityType] = useState('');\n const [searchValue, setSearchValue] = useState('');\n const [filterValue, setFilterValue] = useState('all');\n const [searchResults, setSearchResults] = useState(priorities);\n\n const handleCancel = useCallback(() => {\n setSelectedPriority('');\n setSelectedPriorityType('');\n onCancel();\n }, [setSelectedPriority, setSelectedPriorityType, onCancel]);\n\n const handleClose = useCallback(() => {\n setSelectedPriority('');\n setSelectedPriorityType('');\n onClose();\n }, [setSelectedPriority, setSelectedPriorityType, onClose]);\n\n const handleSearch = useCallback(\n value => {\n setSearchValue(value);\n setSearchResults(priorities.filter(priority => searchValueIncluded(priority.title, value)));\n },\n [priorities, setSearchValue, setSearchResults]\n );\n\n const handleSearchReset = useCallback(() => {\n setSearchValue('');\n setSearchResults(priorities);\n }, [priorities, setSearchValue, setSearchResults]);\n\n useEffect(() => {\n setSearchResults(priorities);\n }, [priorities]);\n\n const priorityList = useMemo(() => {\n return searchResults.map(priority => {\n const isPreSelectedPriority = preselected.some(selected => selected === priority.priorityRef);\n return assign(\n {\n selected: isPreSelectedPriority,\n disabled: isPreSelectedPriority\n },\n pick(['title', 'priorityRef', 'type', 'courses'], priority)\n );\n });\n }, [searchResults, preselected]);\n\n const footer = useMemo(() => {\n return {\n cancelButton: {\n onCancel: handleCancel,\n label: translate('cancel')\n },\n confirmButton: {\n onConfirm: () => {\n onAdd(selectedPriority, selectedPriorityType);\n setSelectedPriority('');\n setSelectedPriorityType('');\n onClose();\n },\n label: translate('add'),\n iconName: 'plus',\n disabled: isLoading || !selectedPriority,\n color: COLORS.cm_primary_blue\n }\n };\n }, [\n handleCancel,\n setSelectedPriority,\n setSelectedPriorityType,\n onAdd,\n onClose,\n translate,\n selectedPriority,\n selectedPriorityType,\n isLoading\n ]);\n\n if ((!isLoading && !priorities) || !isOpen) return null;\n\n return (\n <BaseModal\n title={translate('learning_priority_modal_title')}\n description={translate('learning_priority_modal_description')}\n isOpen={isOpen}\n onClose={handleClose}\n footer={footer}\n >\n <div className={style.LearningPriorityContainer}>\n {isLoading ? (\n <div className={style.loaderContainer}>\n <Loader className={style.loader} theme=\"coorpmanager\" />\n </div>\n ) : (\n <>\n <div className={style.searchWrapper}>\n <SearchForm\n search={{\n placeholder: translate('search_priority_place_holder'),\n value: searchValue,\n onChange: handleSearch\n }}\n onReset={handleSearchReset}\n />\n </div>\n <div className={style.filterWrapper}>\n {searchResults.length > 0\n ? filters.map((filter, index) => {\n const {name, value, count} = filter;\n\n function handleChange() {\n setFilterValue(value);\n handleSearchReset();\n }\n\n if (count === 0) return null;\n\n return (\n <div key={index} className={style.filterButtonWrapper}>\n <FilterButton\n active={filterValue === value}\n filter={name}\n onClick={handleChange}\n itemTotal={count}\n />\n </div>\n );\n })\n : null}\n </div>\n <div className={style.priorityListWrapper}>\n {priorityList.map(priority => {\n const {title, priorityRef, courses = null, type, selected, disabled} = priority;\n function handlePriorityClick() {\n if (selectedPriority === priorityRef) {\n setSelectedPriority('');\n setSelectedPriorityType('');\n return;\n }\n setSelectedPriority(priorityRef);\n setSelectedPriorityType(type);\n }\n\n if ((filterValue !== 'all' && type !== filterValue) || !type || !title) return null;\n\n return (\n <ListItem\n {...(courses !== null ? {subtitle: `${courses} ${translate('courses')}`} : {})}\n title={title}\n selected={selected || selectedPriority === priorityRef}\n selectedColor={COLORS.cm_primary_blue}\n disabled={disabled}\n onClick={handlePriorityClick}\n tags={[{label: type, type: 'default'}]}\n key={priorityRef}\n backgroundColor=\"skin\"\n />\n );\n })}\n </div>\n </>\n )}\n </div>\n </BaseModal>\n );\n};\n\nLearningPriorityModal.contextTypes = {\n translate: Provider.childContextTypes.translate\n};\n\nLearningPriorityModal.propTypes = {\n priorities: PropTypes.arrayOf(\n PropTypes.shape({\n priorityRef: PropTypes.string,\n title: PropTypes.string,\n courses: PropTypes.number,\n type: PropTypes.oneOf(['skill', 'playlist', 'certificate'])\n })\n ),\n preselected: PropTypes.arrayOf(PropTypes.string),\n isOpen: PropTypes.bool,\n isLoading: PropTypes.bool,\n filters: PropTypes.arrayOf(\n PropTypes.shape({\n ...SelectOptionPropTypes,\n count: PropTypes.number\n })\n ),\n onCancel: PropTypes.func,\n onAdd: PropTypes.func,\n onClose: PropTypes.func\n};\n\nexport default LearningPriorityModal;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule/learning-priority-setup-item/index.js"],"names":[],"mappings":";AAOA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule/learning-priority-setup-item/index.js"],"names":[],"mappings":";AAOA,kFAyDC"}
|
|
@@ -18,7 +18,7 @@ const LearningPrioritySetupItem = (props, context) => {
|
|
|
18
18
|
const {
|
|
19
19
|
translate
|
|
20
20
|
} = context;
|
|
21
|
-
const handleRemovePriority = useCallback(() => onRemove(priorityRef, type), [priorityRef, type]);
|
|
21
|
+
const handleRemovePriority = useCallback(() => onRemove(priorityRef, type), [priorityRef, type, onRemove]);
|
|
22
22
|
|
|
23
23
|
const handleTypeTranslate = itemType => {
|
|
24
24
|
switch (itemType) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","useCallback","PropTypes","Provider","Tag","ButtonLink","style","LearningPrioritySetupItem","props","context","priorityRef","id","title","courses","type","ariaLabel","onRemove","translate","handleRemovePriority","handleTypeTranslate","itemType","container","containerInfos","titleWrapper","width","backgroundColor","position","faIcon","name","color","size","contextTypes","childContextTypes","propTypes","string","number","oneOf","func"],"sources":["../../../src/molecule/learning-priority-setup-item/index.js"],"sourcesContent":["import React, {useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport Provider from '../../atom/provider';\nimport Tag from '../../atom/tag';\nimport ButtonLink from '../../atom/button-link';\nimport style from './style.css';\n\nconst LearningPrioritySetupItem = (props, context) => {\n const {priorityRef, id, title, courses = null, type, 'aria-label': ariaLabel, onRemove} = props;\n\n const {translate} = context;\n\n const handleRemovePriority = useCallback(() => onRemove(priorityRef, type)
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","useCallback","PropTypes","Provider","Tag","ButtonLink","style","LearningPrioritySetupItem","props","context","priorityRef","id","title","courses","type","ariaLabel","onRemove","translate","handleRemovePriority","handleTypeTranslate","itemType","container","containerInfos","titleWrapper","width","backgroundColor","position","faIcon","name","color","size","contextTypes","childContextTypes","propTypes","string","number","oneOf","func"],"sources":["../../../src/molecule/learning-priority-setup-item/index.js"],"sourcesContent":["import React, {useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport Provider from '../../atom/provider';\nimport Tag from '../../atom/tag';\nimport ButtonLink from '../../atom/button-link';\nimport style from './style.css';\n\nconst LearningPrioritySetupItem = (props, context) => {\n const {priorityRef, id, title, courses = null, type, 'aria-label': ariaLabel, onRemove} = props;\n\n const {translate} = context;\n\n const handleRemovePriority = useCallback(\n () => onRemove(priorityRef, type),\n [priorityRef, type, onRemove]\n );\n\n const handleTypeTranslate = itemType => {\n switch (itemType) {\n case 'skill':\n return translate('skill');\n case 'playlist':\n return translate('playlist');\n case 'certificate':\n return translate('certificate');\n }\n };\n\n return (\n <div\n className={style.container}\n aria-label={ariaLabel}\n data-name={`learning-priority-setup-item-${id}`}\n >\n <div className={style.containerInfos}>\n <div className={style.titleWrapper}>\n <div className={style.title}>{title}</div>\n <div>\n <Tag label={handleTypeTranslate(type)} size={'S'} />\n </div>\n </div>\n {courses !== null ? (\n <span className={style.courses}>{`${courses} ${translate('courses')}`}</span>\n ) : null}\n </div>\n <ButtonLink\n type=\"primary\"\n customStyle={{\n width: 'fit-content',\n backgroundColor: 'transparent'\n }}\n hoverBackgroundColor=\"#EAEAEB\"\n icon={{\n position: 'left',\n faIcon: {\n name: 'trash',\n color: '#515161',\n size: 16\n }\n }}\n onClick={handleRemovePriority}\n />\n </div>\n );\n};\n\nLearningPrioritySetupItem.contextTypes = {\n translate: Provider.childContextTypes.translate\n};\n\nLearningPrioritySetupItem.propTypes = {\n 'aria-label': PropTypes.string,\n id: PropTypes.string,\n priorityRef: PropTypes.string,\n title: PropTypes.string,\n courses: PropTypes.number,\n type: PropTypes.oneOf(['skill', 'playlist', 'certificate']),\n onRemove: PropTypes.func\n};\n\nexport default LearningPrioritySetupItem;\n"],"mappings":"AAAA,OAAOA,KAAP,IAAeC,WAAf,QAAiC,OAAjC;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,QAAP,MAAqB,qBAArB;AACA,OAAOC,GAAP,MAAgB,gBAAhB;AACA,OAAOC,UAAP,MAAuB,wBAAvB;AACA,OAAOC,KAAP,MAAkB,aAAlB;;AAEA,MAAMC,yBAAyB,GAAG,CAACC,KAAD,EAAQC,OAAR,KAAoB;EACpD,MAAM;IAACC,WAAD;IAAcC,EAAd;IAAkBC,KAAlB;IAAyBC,OAAO,GAAG,IAAnC;IAAyCC,IAAzC;IAA+C,cAAcC,SAA7D;IAAwEC;EAAxE,IAAoFR,KAA1F;EAEA,MAAM;IAACS;EAAD,IAAcR,OAApB;EAEA,MAAMS,oBAAoB,GAAGjB,WAAW,CACtC,MAAMe,QAAQ,CAACN,WAAD,EAAcI,IAAd,CADwB,EAEtC,CAACJ,WAAD,EAAcI,IAAd,EAAoBE,QAApB,CAFsC,CAAxC;;EAKA,MAAMG,mBAAmB,GAAGC,QAAQ,IAAI;IACtC,QAAQA,QAAR;MACE,KAAK,OAAL;QACE,OAAOH,SAAS,CAAC,OAAD,CAAhB;;MACF,KAAK,UAAL;QACE,OAAOA,SAAS,CAAC,UAAD,CAAhB;;MACF,KAAK,aAAL;QACE,OAAOA,SAAS,CAAC,aAAD,CAAhB;IANJ;EAQD,CATD;;EAWA,oBACE;IACE,SAAS,EAAEX,KAAK,CAACe,SADnB;IAEE,cAAYN,SAFd;IAGE,aAAY,gCAA+BJ,EAAG;EAHhD,gBAKE;IAAK,SAAS,EAAEL,KAAK,CAACgB;EAAtB,gBACE;IAAK,SAAS,EAAEhB,KAAK,CAACiB;EAAtB,gBACE;IAAK,SAAS,EAAEjB,KAAK,CAACM;EAAtB,GAA8BA,KAA9B,CADF,eAEE,8CACE,oBAAC,GAAD;IAAK,KAAK,EAAEO,mBAAmB,CAACL,IAAD,CAA/B;IAAuC,IAAI,EAAE;EAA7C,EADF,CAFF,CADF,EAOGD,OAAO,KAAK,IAAZ,gBACC;IAAM,SAAS,EAAEP,KAAK,CAACO;EAAvB,GAAkC,GAAEA,OAAQ,IAAGI,SAAS,CAAC,SAAD,CAAY,EAApE,CADD,GAEG,IATN,CALF,eAgBE,oBAAC,UAAD;IACE,IAAI,EAAC,SADP;IAEE,WAAW,EAAE;MACXO,KAAK,EAAE,aADI;MAEXC,eAAe,EAAE;IAFN,CAFf;IAME,oBAAoB,EAAC,SANvB;IAOE,IAAI,EAAE;MACJC,QAAQ,EAAE,MADN;MAEJC,MAAM,EAAE;QACNC,IAAI,EAAE,OADA;QAENC,KAAK,EAAE,SAFD;QAGNC,IAAI,EAAE;MAHA;IAFJ,CAPR;IAeE,OAAO,EAAEZ;EAfX,EAhBF,CADF;AAoCD,CAzDD;;AA2DAX,yBAAyB,CAACwB,YAA1B,GAAyC;EACvCd,SAAS,EAAEd,QAAQ,CAAC6B,iBAAT,CAA2Bf;AADC,CAAzC;AAIAV,yBAAyB,CAAC0B,SAA1B,2CAAsC;EACpC,cAAc/B,SAAS,CAACgC,MADY;EAEpCvB,EAAE,EAAET,SAAS,CAACgC,MAFsB;EAGpCxB,WAAW,EAAER,SAAS,CAACgC,MAHa;EAIpCtB,KAAK,EAAEV,SAAS,CAACgC,MAJmB;EAKpCrB,OAAO,EAAEX,SAAS,CAACiC,MALiB;EAMpCrB,IAAI,EAAEZ,SAAS,CAACkC,KAAV,CAAgB,CAAC,OAAD,EAAU,UAAV,EAAsB,aAAtB,CAAhB,CAN8B;EAOpCpB,QAAQ,EAAEd,SAAS,CAACmC;AAPgB,CAAtC;AAUA,eAAe9B,yBAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule/learning-profile-radar-chart/index.tsx"],"names":[],"mappings":";AAiCA,OAAO,EAAC,gBAAgB,EAAC,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAGL,gBAAgB,EAChB,kCAAkC,EAGnC,MAAM,SAAS,CAAC;AAmUjB,eAAO,MAAM,UAAU,EAAE,CACvB,MAAM,EAAE;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAC,EAC/B,KAAK,EAAE,kCAAkC,CAAC,MAAM,CAAC,KAC9C,gBAAgB,EAOX,CAAC;AAEX,eAAO,MAAM,yBAAyB;0GAWjC,kCAAkC,iBACtB,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule/learning-profile-radar-chart/index.tsx"],"names":[],"mappings":";AAiCA,OAAO,EAAC,gBAAgB,EAAC,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAGL,gBAAgB,EAChB,kCAAkC,EAGnC,MAAM,SAAS,CAAC;AAmUjB,eAAO,MAAM,UAAU,EAAE,CACvB,MAAM,EAAE;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAC,EAC/B,KAAK,EAAE,kCAAkC,CAAC,MAAM,CAAC,KAC9C,gBAAgB,EAOX,CAAC;AAEX,eAAO,MAAM,yBAAyB;0GAWjC,kCAAkC,iBACtB,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqJhC,CAAC;AAEF,QAAA,MAAM,mCAAmC;YAAW,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;CAIrF,CAAC;AAUF,eAAe,mCAAmC,CAAC"}
|
|
@@ -373,8 +373,6 @@ export const LearningProfileRadarChart = ({
|
|
|
373
373
|
}, [isMobile_]);
|
|
374
374
|
useEffect(() => setIsMobile_(), [setIsMobile_]);
|
|
375
375
|
useEffect(() => {
|
|
376
|
-
console.log('LearningProfileRadarChart mounted');
|
|
377
|
-
|
|
378
376
|
const handleClick = () => {
|
|
379
377
|
setActiveDot(undefined);
|
|
380
378
|
onClick(undefined);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","Fragment","useCallback","useEffect","useMemo","useState","Radar","RadarChart","PolarGrid","PolarAngleAxis","ResponsiveContainer","Tooltip","PolarRadiusAxis","convert","classnames","isMobile","getIsMobile","ButtonLink","Provider","GetSkinFromContext","GetTranslateFromContext","learningProfileRadarChartPropTypes","style","top","offset","x","y","alignment","margin","bottom","right","marginRight","left","marginLeft","BLACK","WHITE","DEFAULT_MAIN_COLOR","DEFAULT_COLORS","gradient","fill","stroke","percentage","color","background","label","CHART_CONFIGS","triangle","name","ticks","sideCount","quadrilateral","pentagon","hexagon","DOT_DEFAULT_PROPS","strokeWidth","strokeOpacity","r","pointerEvents","cursor","DOT_ACTIVE_PROPS","RADAR_DEFAULT_PROPS","fillOpacity","Gradient","type","colors","firstColor","secondColor","CustomTooltip","active","payload","length","tooltip","tooltipLabel","tooltipValue","value","CustomDot","cx","cy","onDotHover","onDotClick","activeDot","dataName","subject","onTouchStart","onClick","e","stopPropagation","onMouseOver","onMouseLeave","buildRadars","totalDataset","handleDotHover","handleOnDotClick","index","datakey","dataset","CustomLabel","percentagesValues","chartType","formatedColors","primarySkinColor","exploreLocale","hoveredDot","onExploreClick","hovered","setHovered","isCurrentDotActive","offsetX","offsetY","rest","onLabelClick","handleExploreClick","buttonExploreProps","customStyle","height","backgroundColor","transition","icon","position","faIcon","size","handleMouseOver","handleMouseLeave","extraOffsetY","tickeForeignObject","tickWrapper","tickWrapperFocus","tickWrapperHover","alignItems","textAlign","opacity","map","colorLabel","i","tickValue","tickLabel","buttonWrapper","CHART_CONFIGS_BY_SIDE_COUNT","formatValues","values_","val","formatData","legend","data_","ref","LearningProfileRadarChart","data","colorsProps","width","legacyContext","setIsMobile","setActiveDot","setHoveredDot","skin","translate","Object","assign","gradients","userAgent","navigator","isMobile_","setIsMobile_","console","log","handleClick","undefined","window","addEventListener","removeEventListener","handleOnActiveDotClick","formatedData","find","indexOf","skillRef","key","renderCustomLabel","props","currentData","ResponsiveLearningProfileRadarChart","contextTypes","childContextTypes","propTypes"],"sources":["../../../src/molecule/learning-profile-radar-chart/index.tsx"],"sourcesContent":["import React, {Fragment, useCallback, useEffect, useMemo, useState} from 'react';\nimport {\n Radar,\n RadarChart,\n PolarGrid,\n PolarAngleAxis,\n ResponsiveContainer,\n Tooltip,\n PolarRadiusAxis\n} from 'recharts';\nimport {\n pipe,\n keyBy,\n mapValues,\n size,\n getOr,\n map,\n toPairs,\n values,\n isEmpty,\n omit,\n fromPairs,\n times,\n flatten,\n findKey,\n get\n} from 'lodash/fp';\nimport {convert} from 'css-color-function';\nimport classnames from 'classnames';\nimport {isMobile as getIsMobile} from '../../util/check-is-mobile';\nimport ButtonLink from '../../atom/button-link';\nimport {ButtonLinkProps} from '../../atom/button-link/types';\nimport Provider, {GetSkinFromContext, GetTranslateFromContext} from '../../atom/provider';\nimport {WebContextValues} from '../../atom/provider/web-context';\nimport {\n ActiveDotType,\n FormatedColorsType,\n FormatedDataType,\n LearningProfileRadarChartPropTypes,\n TickType,\n learningProfileRadarChartPropTypes\n} from './types';\nimport style from './style.css';\n\ntype CHART_TYPE_TYPE = keyof typeof CHART_CONFIGS;\n\n/* TICK_POSITIONS */\nconst top: TickType = {offset: {x: -100, y: -75}, alignment: 'center', margin: 'auto'};\nconst bottom: TickType = {offset: {x: -100, y: 10}, alignment: 'center', margin: 'auto'};\nconst right: TickType = {offset: {x: 30, y: -10}, alignment: 'start', marginRight: 'auto'};\nconst left: TickType = {offset: {x: -230, y: -10}, alignment: 'end', marginLeft: 'auto'};\n\n/* CONSTANTS */\nconst BLACK = '#000000ff';\nconst WHITE = '#ffffffff';\nconst DEFAULT_MAIN_COLOR = '#0062ffff';\n\nconst DEFAULT_COLORS: FormatedColorsType = {\n gradient: {\n fill: [DEFAULT_MAIN_COLOR, DEFAULT_MAIN_COLOR],\n stroke: [DEFAULT_MAIN_COLOR, DEFAULT_MAIN_COLOR]\n },\n percentage: {\n color: BLACK,\n background: WHITE\n },\n label: {\n color: BLACK\n }\n};\n\nconst CHART_CONFIGS = {\n triangle: {\n name: 'triangle',\n ticks: [top, right, left],\n sideCount: 3\n },\n quadrilateral: {\n name: 'quadrilateral',\n ticks: [top, right, bottom, left],\n sideCount: 4\n },\n pentagon: {\n name: 'pentagon',\n ticks: [top, right, right, left, left],\n sideCount: 5\n },\n hexagon: {\n name: 'hexagon',\n ticks: [top, right, right, bottom, left, left],\n sideCount: 6\n }\n} as const;\n\nconst DOT_DEFAULT_PROPS = {\n strokeWidth: 2,\n strokeOpacity: 0.4,\n fill: '#fff',\n r: 4,\n pointerEvents: 'all',\n style: {cursor: 'pointer'}\n} as const;\n\nconst DOT_ACTIVE_PROPS = {\n fill: '#fff',\n r: 6,\n strokeWidth: 4,\n strokeOpacity: 0.6\n} as const;\n\nconst RADAR_DEFAULT_PROPS = {\n strokeWidth: 3,\n strokeOpacity: 0.2,\n fillOpacity: 0.2\n} as const;\n\n/* COMPONENTS */\nconst Gradient = ({type, colors: [firstColor, secondColor]}: {type: string; colors: string[]}) => (\n <defs>\n <linearGradient id={`gradient-${type}`} x1=\"0%\" y1=\"0%\" x2=\"0%\" y2=\"100%\">\n <stop offset=\"0%\" stopColor={firstColor} />\n <stop offset=\"100%\" stopColor={secondColor} />\n </linearGradient>\n </defs>\n);\n\nconst CustomTooltip = ({\n active,\n payload,\n label\n}: {\n active?: boolean;\n payload?: {value: number}[];\n label?: string;\n}) =>\n active && !!payload?.length ? (\n <div className={style.tooltip}>\n <span className={style.tooltipLabel}>{label}</span>\n <span className={style.tooltipValue}>{payload[0].value}%</span>\n </div>\n ) : null;\n\nconst CustomDot = ({\n cx,\n cy,\n payload,\n onDotHover,\n onDotClick,\n stroke,\n activeDot,\n dataName\n}: {\n cx?: number;\n cy?: number;\n payload?: {payload: {subject: string} & {[datakey: string]: number}; name: string};\n onDotHover: (name: string) => void;\n onDotClick: (name: string) => void;\n dataKey: string;\n stroke: string;\n activeDot?: ActiveDotType;\n dataName: string;\n}) => (\n <circle\n {...{\n ...DOT_DEFAULT_PROPS,\n ...(payload?.payload.subject === activeDot?.label && DOT_ACTIVE_PROPS),\n stroke,\n cx,\n cy,\n onTouchStart: () => {\n if (!payload?.name) return;\n onDotClick(payload.name);\n },\n onClick: e => {\n e.stopPropagation();\n\n if (!payload?.name) return;\n onDotClick(payload.name);\n },\n onMouseOver: () => {\n if (!payload?.name) return;\n onDotHover(payload.name);\n },\n onMouseLeave: () => onDotHover(''),\n 'data-name': dataName\n }}\n />\n);\n\nconst buildRadars = (\n totalDataset: number,\n handleDotHover: (name: string) => void,\n handleOnDotClick: (name: string) => void,\n activeDot?: ActiveDotType\n) =>\n times(index => {\n const datakey = `value${index + 1}`;\n const dataset = `dataset-${index + 1}`;\n\n return (\n <Radar\n {...RADAR_DEFAULT_PROPS}\n fill={`url(#gradient-fill-${index})`}\n stroke={`url(#gradient-stroke-${index})`}\n key={dataset}\n name={dataset}\n dataKey={datakey}\n activeDot={{\n ...DOT_ACTIVE_PROPS,\n stroke: `url(#gradient-stroke-${index})`\n }}\n // only on mobile\n // to handle dot style on hover (convert to click)\n // use with the tooltip component\n dot={\n <CustomDot\n onDotHover={handleDotHover}\n onDotClick={handleOnDotClick}\n activeDot={activeDot}\n dataKey={datakey}\n stroke={`url(#gradient-stroke-${index})`}\n dataName={`dot-${dataset}`}\n />\n }\n />\n );\n }, totalDataset);\n\nconst CustomLabel = ({\n index,\n x,\n y,\n percentagesValues,\n label,\n activeDot,\n chartType,\n formatedColors,\n primarySkinColor,\n exploreLocale,\n hoveredDot,\n onClick,\n onExploreClick\n}: {\n index: number;\n x: number;\n y: number;\n percentagesValues: number[];\n label: string;\n chartType: CHART_TYPE_TYPE;\n formatedColors: FormatedColorsType[];\n activeDot?: ActiveDotType;\n primarySkinColor: string;\n exploreLocale: string;\n hoveredDot: string;\n onClick: (name: string) => void;\n onExploreClick: (name: string) => void;\n}) => {\n const [hovered, setHovered] = useState(false);\n const isCurrentDotActive = activeDot?.label === label;\n const {\n offset: {x: offsetX, y: offsetY},\n alignment,\n ...rest\n } = CHART_CONFIGS[chartType].ticks[index];\n\n function onLabelClick(e: React.MouseEvent) {\n e.stopPropagation();\n onClick(label);\n }\n\n function handleExploreClick() {\n onExploreClick(label);\n }\n\n const buttonExploreProps: ButtonLinkProps = {\n customStyle: {\n height: '36px',\n backgroundColor: hovered ? primarySkinColor : convert(`color(${primarySkinColor} a(0.07))`),\n color: hovered ? '#FFFFFF' : primarySkinColor,\n transition: 'background-color 0.15s ease-in-out, color 0.15s ease-in-out'\n },\n onClick: handleExploreClick,\n 'aria-label': `${label}, ${exploreLocale}`,\n label: exploreLocale,\n 'data-name': 'learner-skill-card-explore-button',\n icon: {\n position: 'left',\n faIcon: {\n name: 'compass',\n backgroundColor: hovered ? primarySkinColor : convert(`color(${primarySkinColor} a(0.07))`),\n color: hovered ? '#FFFFFF' : primarySkinColor,\n size: 16\n }\n }\n };\n\n const handleMouseOver = useCallback(() => setHovered(true), [setHovered]);\n\n const handleMouseLeave = useCallback(() => setHovered(false), [setHovered]);\n\n const extraOffsetY = isCurrentDotActive && index === 0 ? -25 : 0;\n\n return (\n <g>\n <foreignObject\n className={style.tickeForeignObject}\n x={x + offsetX}\n y={y + offsetY + extraOffsetY}\n width=\"200\"\n height=\"65\"\n >\n <div\n data-name={label}\n onClick={onLabelClick}\n className={classnames(\n style.tickWrapper,\n isCurrentDotActive && style.tickWrapperFocus,\n hoveredDot === label && style.tickWrapperHover\n )}\n style={{\n ...rest,\n alignItems: alignment,\n textAlign: alignment,\n opacity: !isEmpty(activeDot) && !isCurrentDotActive ? 0.3 : 1\n }}\n >\n {formatedColors.map(\n ({percentage: {color, background}, label: {color: colorLabel}}, i) => (\n <Fragment key={i}>\n <span className={style.tickValue} style={{color, background}}>\n {percentagesValues[i]}\n </span>\n <span className={style.tickLabel} style={{color: colorLabel}}>\n {label}\n </span>\n </Fragment>\n )\n )}\n {isCurrentDotActive ? (\n <div\n className={style.buttonWrapper}\n onMouseOver={handleMouseOver}\n onMouseLeave={handleMouseLeave}\n data-name=\"button-explore-wrapper\"\n >\n <ButtonLink {...buttonExploreProps} />\n </div>\n ) : null}\n </div>\n </foreignObject>\n </g>\n );\n};\n\n/* UTILS */\nconst CHART_CONFIGS_BY_SIDE_COUNT = pipe(keyBy('sideCount'), mapValues('name'))(CHART_CONFIGS);\n\nconst formatValues: (values_: number | number[]) => Record<string, number> = pipe(\n values_ => flatten([values_]),\n values_ => values_.map((val: number, i: number): [string, number] => [`value${i + 1}`, val]),\n fromPairs\n);\n\n/* this convert incoming component data to rechart data structure */\nexport const formatData: (\n legend: {[ref: string]: string},\n data_: LearningProfileRadarChartPropTypes['data']\n) => FormatedDataType[] = (legend, data_) =>\n pipe(\n toPairs,\n map(([ref, values_]: [string, number | number[]]) => ({\n ...formatValues(values_),\n subject: legend[ref]\n }))\n )(data_);\n\nexport const LearningProfileRadarChart = (\n {\n data,\n legend,\n totalDataset,\n colors: colorsProps,\n onClick,\n onExploreClick,\n width,\n height,\n margin\n }: LearningProfileRadarChartPropTypes,\n legacyContext: WebContextValues\n) => {\n const [isMobile, setIsMobile] = useState(false);\n const [activeDot, setActiveDot] = useState<ActiveDotType>();\n const [hoveredDot, setHoveredDot] = useState('');\n const skin = GetSkinFromContext(legacyContext);\n const translate = GetTranslateFromContext(legacyContext);\n const primarySkinColor = get('common.primary', skin);\n\n const formatedColors = times(i => {\n if (!colorsProps?.length) return DEFAULT_COLORS;\n\n const colors = colorsProps[i];\n return colors ? Object.assign({}, DEFAULT_COLORS, colors) : DEFAULT_COLORS;\n })(totalDataset);\n\n const chartType: CHART_TYPE_TYPE = useMemo(\n () => getOr('hexagon', size(data), CHART_CONFIGS_BY_SIDE_COUNT),\n [data]\n );\n\n const gradients = useMemo(\n () =>\n formatedColors.map(({gradient: {fill, stroke}}, index) => (\n <svg key={`gradient-${index}`}>\n <Gradient type={`fill-${index}`} colors={fill} />\n <Gradient type={`stroke-${index}`} colors={stroke} />\n </svg>\n )),\n [formatedColors]\n );\n\n const userAgent = navigator?.userAgent;\n const isMobile_ = useMemo(() => getIsMobile(userAgent), [userAgent]);\n\n const setIsMobile_ = useCallback(() => {\n setIsMobile(isMobile_);\n }, [isMobile_]);\n\n useEffect(() => setIsMobile_(), [setIsMobile_]);\n\n useEffect(() => {\n console.log('LearningProfileRadarChart mounted');\n const handleClick = () => {\n setActiveDot(undefined);\n onClick(undefined);\n };\n\n !isEmpty(activeDot) && window.addEventListener('click', handleClick);\n\n return () => {\n window.removeEventListener('click', handleClick);\n };\n }, [activeDot, onClick, setActiveDot]);\n\n function handleOnActiveDotClick() {\n setActiveDot(undefined);\n onClick(undefined);\n }\n\n function handleOnDotClick(label: string) {\n if (!isEmpty(activeDot) && activeDot?.label === label) {\n handleOnActiveDotClick();\n return;\n }\n const payload = formatedData.find(({subject}) => subject === label);\n if (!payload) return;\n\n const index = formatedData.indexOf(payload);\n const datakey = `value${index + 1}`;\n const skillRef = findKey(val => val === payload?.subject, legend);\n\n if (skillRef) {\n setActiveDot({\n key: datakey,\n value: payload[datakey],\n label: payload.subject\n });\n onClick(skillRef);\n }\n }\n\n function handleExploreClick(label: string) {\n const payload = formatedData.find(({subject}) => subject === label);\n if (!payload) return;\n\n const skillRef = findKey(val => val === payload?.subject, legend);\n\n if (skillRef) {\n onExploreClick(skillRef);\n }\n }\n\n function renderCustomLabel(props: {\n x: number;\n y: number;\n payload: {value: string};\n index: number;\n }) {\n const {\n x,\n y,\n payload: {value: label},\n index\n } = props;\n const currentData = formatedData.find(({subject}) => subject === label);\n const percentagesValues: number[] = pipe(\n omit('subject'),\n mapValues(value => `${value}%`),\n values\n )(currentData);\n\n return (\n <CustomLabel\n index={index}\n x={x}\n y={y}\n percentagesValues={percentagesValues}\n label={label}\n activeDot={activeDot}\n chartType={chartType}\n formatedColors={formatedColors}\n primarySkinColor={primarySkinColor}\n exploreLocale={translate('Explore')}\n hoveredDot={hoveredDot}\n onClick={handleOnDotClick}\n onExploreClick={handleExploreClick}\n />\n );\n }\n const formatedData = useMemo(() => formatData(legend, data), [legend, data]);\n\n return (\n <RadarChart\n width={width}\n height={height}\n margin={margin ?? (isMobile ? {top: 80} : {top: 180})}\n cx=\"50%\"\n cy=\"50%\"\n outerRadius=\"80%\"\n data={formatedData}\n >\n {gradients}\n <PolarGrid strokeDasharray={10} strokeWidth={2} radialLines={false} />\n <PolarAngleAxis dataKey=\"subject\" tick={!isMobile && renderCustomLabel} />\n <PolarRadiusAxis tick={false} axisLine={false} domain={[0, 100]} />\n {buildRadars(totalDataset, setHoveredDot, handleOnDotClick, activeDot)}\n {isMobile ? <Tooltip cursor={false} content={<CustomTooltip />} /> : null}\n </RadarChart>\n );\n};\n\nconst ResponsiveLearningProfileRadarChart = (props: LearningProfileRadarChartPropTypes) => (\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <LearningProfileRadarChart {...props} />\n </ResponsiveContainer>\n);\n\nLearningProfileRadarChart.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nLearningProfileRadarChart.propTypes = learningProfileRadarChartPropTypes;\nResponsiveLearningProfileRadarChart.propTypes = learningProfileRadarChartPropTypes;\n\nexport default ResponsiveLearningProfileRadarChart;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","Fragment","useCallback","useEffect","useMemo","useState","Radar","RadarChart","PolarGrid","PolarAngleAxis","ResponsiveContainer","Tooltip","PolarRadiusAxis","convert","classnames","isMobile","getIsMobile","ButtonLink","Provider","GetSkinFromContext","GetTranslateFromContext","learningProfileRadarChartPropTypes","style","top","offset","x","y","alignment","margin","bottom","right","marginRight","left","marginLeft","BLACK","WHITE","DEFAULT_MAIN_COLOR","DEFAULT_COLORS","gradient","fill","stroke","percentage","color","background","label","CHART_CONFIGS","triangle","name","ticks","sideCount","quadrilateral","pentagon","hexagon","DOT_DEFAULT_PROPS","strokeWidth","strokeOpacity","r","pointerEvents","cursor","DOT_ACTIVE_PROPS","RADAR_DEFAULT_PROPS","fillOpacity","Gradient","type","colors","firstColor","secondColor","CustomTooltip","active","payload","length","tooltip","tooltipLabel","tooltipValue","value","CustomDot","cx","cy","onDotHover","onDotClick","activeDot","dataName","subject","onTouchStart","onClick","e","stopPropagation","onMouseOver","onMouseLeave","buildRadars","totalDataset","handleDotHover","handleOnDotClick","index","datakey","dataset","CustomLabel","percentagesValues","chartType","formatedColors","primarySkinColor","exploreLocale","hoveredDot","onExploreClick","hovered","setHovered","isCurrentDotActive","offsetX","offsetY","rest","onLabelClick","handleExploreClick","buttonExploreProps","customStyle","height","backgroundColor","transition","icon","position","faIcon","size","handleMouseOver","handleMouseLeave","extraOffsetY","tickeForeignObject","tickWrapper","tickWrapperFocus","tickWrapperHover","alignItems","textAlign","opacity","map","colorLabel","i","tickValue","tickLabel","buttonWrapper","CHART_CONFIGS_BY_SIDE_COUNT","formatValues","values_","val","formatData","legend","data_","ref","LearningProfileRadarChart","data","colorsProps","width","legacyContext","setIsMobile","setActiveDot","setHoveredDot","skin","translate","Object","assign","gradients","userAgent","navigator","isMobile_","setIsMobile_","handleClick","undefined","window","addEventListener","removeEventListener","handleOnActiveDotClick","formatedData","find","indexOf","skillRef","key","renderCustomLabel","props","currentData","ResponsiveLearningProfileRadarChart","contextTypes","childContextTypes","propTypes"],"sources":["../../../src/molecule/learning-profile-radar-chart/index.tsx"],"sourcesContent":["import React, {Fragment, useCallback, useEffect, useMemo, useState} from 'react';\nimport {\n Radar,\n RadarChart,\n PolarGrid,\n PolarAngleAxis,\n ResponsiveContainer,\n Tooltip,\n PolarRadiusAxis\n} from 'recharts';\nimport {\n pipe,\n keyBy,\n mapValues,\n size,\n getOr,\n map,\n toPairs,\n values,\n isEmpty,\n omit,\n fromPairs,\n times,\n flatten,\n findKey,\n get\n} from 'lodash/fp';\nimport {convert} from 'css-color-function';\nimport classnames from 'classnames';\nimport {isMobile as getIsMobile} from '../../util/check-is-mobile';\nimport ButtonLink from '../../atom/button-link';\nimport {ButtonLinkProps} from '../../atom/button-link/types';\nimport Provider, {GetSkinFromContext, GetTranslateFromContext} from '../../atom/provider';\nimport {WebContextValues} from '../../atom/provider/web-context';\nimport {\n ActiveDotType,\n FormatedColorsType,\n FormatedDataType,\n LearningProfileRadarChartPropTypes,\n TickType,\n learningProfileRadarChartPropTypes\n} from './types';\nimport style from './style.css';\n\ntype CHART_TYPE_TYPE = keyof typeof CHART_CONFIGS;\n\n/* TICK_POSITIONS */\nconst top: TickType = {offset: {x: -100, y: -75}, alignment: 'center', margin: 'auto'};\nconst bottom: TickType = {offset: {x: -100, y: 10}, alignment: 'center', margin: 'auto'};\nconst right: TickType = {offset: {x: 30, y: -10}, alignment: 'start', marginRight: 'auto'};\nconst left: TickType = {offset: {x: -230, y: -10}, alignment: 'end', marginLeft: 'auto'};\n\n/* CONSTANTS */\nconst BLACK = '#000000ff';\nconst WHITE = '#ffffffff';\nconst DEFAULT_MAIN_COLOR = '#0062ffff';\n\nconst DEFAULT_COLORS: FormatedColorsType = {\n gradient: {\n fill: [DEFAULT_MAIN_COLOR, DEFAULT_MAIN_COLOR],\n stroke: [DEFAULT_MAIN_COLOR, DEFAULT_MAIN_COLOR]\n },\n percentage: {\n color: BLACK,\n background: WHITE\n },\n label: {\n color: BLACK\n }\n};\n\nconst CHART_CONFIGS = {\n triangle: {\n name: 'triangle',\n ticks: [top, right, left],\n sideCount: 3\n },\n quadrilateral: {\n name: 'quadrilateral',\n ticks: [top, right, bottom, left],\n sideCount: 4\n },\n pentagon: {\n name: 'pentagon',\n ticks: [top, right, right, left, left],\n sideCount: 5\n },\n hexagon: {\n name: 'hexagon',\n ticks: [top, right, right, bottom, left, left],\n sideCount: 6\n }\n} as const;\n\nconst DOT_DEFAULT_PROPS = {\n strokeWidth: 2,\n strokeOpacity: 0.4,\n fill: '#fff',\n r: 4,\n pointerEvents: 'all',\n style: {cursor: 'pointer'}\n} as const;\n\nconst DOT_ACTIVE_PROPS = {\n fill: '#fff',\n r: 6,\n strokeWidth: 4,\n strokeOpacity: 0.6\n} as const;\n\nconst RADAR_DEFAULT_PROPS = {\n strokeWidth: 3,\n strokeOpacity: 0.2,\n fillOpacity: 0.2\n} as const;\n\n/* COMPONENTS */\nconst Gradient = ({type, colors: [firstColor, secondColor]}: {type: string; colors: string[]}) => (\n <defs>\n <linearGradient id={`gradient-${type}`} x1=\"0%\" y1=\"0%\" x2=\"0%\" y2=\"100%\">\n <stop offset=\"0%\" stopColor={firstColor} />\n <stop offset=\"100%\" stopColor={secondColor} />\n </linearGradient>\n </defs>\n);\n\nconst CustomTooltip = ({\n active,\n payload,\n label\n}: {\n active?: boolean;\n payload?: {value: number}[];\n label?: string;\n}) =>\n active && !!payload?.length ? (\n <div className={style.tooltip}>\n <span className={style.tooltipLabel}>{label}</span>\n <span className={style.tooltipValue}>{payload[0].value}%</span>\n </div>\n ) : null;\n\nconst CustomDot = ({\n cx,\n cy,\n payload,\n onDotHover,\n onDotClick,\n stroke,\n activeDot,\n dataName\n}: {\n cx?: number;\n cy?: number;\n payload?: {payload: {subject: string} & {[datakey: string]: number}; name: string};\n onDotHover: (name: string) => void;\n onDotClick: (name: string) => void;\n dataKey: string;\n stroke: string;\n activeDot?: ActiveDotType;\n dataName: string;\n}) => (\n <circle\n {...{\n ...DOT_DEFAULT_PROPS,\n ...(payload?.payload.subject === activeDot?.label && DOT_ACTIVE_PROPS),\n stroke,\n cx,\n cy,\n onTouchStart: () => {\n if (!payload?.name) return;\n onDotClick(payload.name);\n },\n onClick: e => {\n e.stopPropagation();\n\n if (!payload?.name) return;\n onDotClick(payload.name);\n },\n onMouseOver: () => {\n if (!payload?.name) return;\n onDotHover(payload.name);\n },\n onMouseLeave: () => onDotHover(''),\n 'data-name': dataName\n }}\n />\n);\n\nconst buildRadars = (\n totalDataset: number,\n handleDotHover: (name: string) => void,\n handleOnDotClick: (name: string) => void,\n activeDot?: ActiveDotType\n) =>\n times(index => {\n const datakey = `value${index + 1}`;\n const dataset = `dataset-${index + 1}`;\n\n return (\n <Radar\n {...RADAR_DEFAULT_PROPS}\n fill={`url(#gradient-fill-${index})`}\n stroke={`url(#gradient-stroke-${index})`}\n key={dataset}\n name={dataset}\n dataKey={datakey}\n activeDot={{\n ...DOT_ACTIVE_PROPS,\n stroke: `url(#gradient-stroke-${index})`\n }}\n // only on mobile\n // to handle dot style on hover (convert to click)\n // use with the tooltip component\n dot={\n <CustomDot\n onDotHover={handleDotHover}\n onDotClick={handleOnDotClick}\n activeDot={activeDot}\n dataKey={datakey}\n stroke={`url(#gradient-stroke-${index})`}\n dataName={`dot-${dataset}`}\n />\n }\n />\n );\n }, totalDataset);\n\nconst CustomLabel = ({\n index,\n x,\n y,\n percentagesValues,\n label,\n activeDot,\n chartType,\n formatedColors,\n primarySkinColor,\n exploreLocale,\n hoveredDot,\n onClick,\n onExploreClick\n}: {\n index: number;\n x: number;\n y: number;\n percentagesValues: number[];\n label: string;\n chartType: CHART_TYPE_TYPE;\n formatedColors: FormatedColorsType[];\n activeDot?: ActiveDotType;\n primarySkinColor: string;\n exploreLocale: string;\n hoveredDot: string;\n onClick: (name: string) => void;\n onExploreClick: (name: string) => void;\n}) => {\n const [hovered, setHovered] = useState(false);\n const isCurrentDotActive = activeDot?.label === label;\n const {\n offset: {x: offsetX, y: offsetY},\n alignment,\n ...rest\n } = CHART_CONFIGS[chartType].ticks[index];\n\n function onLabelClick(e: React.MouseEvent) {\n e.stopPropagation();\n onClick(label);\n }\n\n function handleExploreClick() {\n onExploreClick(label);\n }\n\n const buttonExploreProps: ButtonLinkProps = {\n customStyle: {\n height: '36px',\n backgroundColor: hovered ? primarySkinColor : convert(`color(${primarySkinColor} a(0.07))`),\n color: hovered ? '#FFFFFF' : primarySkinColor,\n transition: 'background-color 0.15s ease-in-out, color 0.15s ease-in-out'\n },\n onClick: handleExploreClick,\n 'aria-label': `${label}, ${exploreLocale}`,\n label: exploreLocale,\n 'data-name': 'learner-skill-card-explore-button',\n icon: {\n position: 'left',\n faIcon: {\n name: 'compass',\n backgroundColor: hovered ? primarySkinColor : convert(`color(${primarySkinColor} a(0.07))`),\n color: hovered ? '#FFFFFF' : primarySkinColor,\n size: 16\n }\n }\n };\n\n const handleMouseOver = useCallback(() => setHovered(true), [setHovered]);\n\n const handleMouseLeave = useCallback(() => setHovered(false), [setHovered]);\n\n const extraOffsetY = isCurrentDotActive && index === 0 ? -25 : 0;\n\n return (\n <g>\n <foreignObject\n className={style.tickeForeignObject}\n x={x + offsetX}\n y={y + offsetY + extraOffsetY}\n width=\"200\"\n height=\"65\"\n >\n <div\n data-name={label}\n onClick={onLabelClick}\n className={classnames(\n style.tickWrapper,\n isCurrentDotActive && style.tickWrapperFocus,\n hoveredDot === label && style.tickWrapperHover\n )}\n style={{\n ...rest,\n alignItems: alignment,\n textAlign: alignment,\n opacity: !isEmpty(activeDot) && !isCurrentDotActive ? 0.3 : 1\n }}\n >\n {formatedColors.map(\n ({percentage: {color, background}, label: {color: colorLabel}}, i) => (\n <Fragment key={i}>\n <span className={style.tickValue} style={{color, background}}>\n {percentagesValues[i]}\n </span>\n <span className={style.tickLabel} style={{color: colorLabel}}>\n {label}\n </span>\n </Fragment>\n )\n )}\n {isCurrentDotActive ? (\n <div\n className={style.buttonWrapper}\n onMouseOver={handleMouseOver}\n onMouseLeave={handleMouseLeave}\n data-name=\"button-explore-wrapper\"\n >\n <ButtonLink {...buttonExploreProps} />\n </div>\n ) : null}\n </div>\n </foreignObject>\n </g>\n );\n};\n\n/* UTILS */\nconst CHART_CONFIGS_BY_SIDE_COUNT = pipe(keyBy('sideCount'), mapValues('name'))(CHART_CONFIGS);\n\nconst formatValues: (values_: number | number[]) => Record<string, number> = pipe(\n values_ => flatten([values_]),\n values_ => values_.map((val: number, i: number): [string, number] => [`value${i + 1}`, val]),\n fromPairs\n);\n\n/* this convert incoming component data to rechart data structure */\nexport const formatData: (\n legend: {[ref: string]: string},\n data_: LearningProfileRadarChartPropTypes['data']\n) => FormatedDataType[] = (legend, data_) =>\n pipe(\n toPairs,\n map(([ref, values_]: [string, number | number[]]) => ({\n ...formatValues(values_),\n subject: legend[ref]\n }))\n )(data_);\n\nexport const LearningProfileRadarChart = (\n {\n data,\n legend,\n totalDataset,\n colors: colorsProps,\n onClick,\n onExploreClick,\n width,\n height,\n margin\n }: LearningProfileRadarChartPropTypes,\n legacyContext: WebContextValues\n) => {\n const [isMobile, setIsMobile] = useState(false);\n const [activeDot, setActiveDot] = useState<ActiveDotType>();\n const [hoveredDot, setHoveredDot] = useState('');\n const skin = GetSkinFromContext(legacyContext);\n const translate = GetTranslateFromContext(legacyContext);\n const primarySkinColor = get('common.primary', skin);\n\n const formatedColors = times(i => {\n if (!colorsProps?.length) return DEFAULT_COLORS;\n\n const colors = colorsProps[i];\n return colors ? Object.assign({}, DEFAULT_COLORS, colors) : DEFAULT_COLORS;\n })(totalDataset);\n\n const chartType: CHART_TYPE_TYPE = useMemo(\n () => getOr('hexagon', size(data), CHART_CONFIGS_BY_SIDE_COUNT),\n [data]\n );\n\n const gradients = useMemo(\n () =>\n formatedColors.map(({gradient: {fill, stroke}}, index) => (\n <svg key={`gradient-${index}`}>\n <Gradient type={`fill-${index}`} colors={fill} />\n <Gradient type={`stroke-${index}`} colors={stroke} />\n </svg>\n )),\n [formatedColors]\n );\n\n const userAgent = navigator?.userAgent;\n const isMobile_ = useMemo(() => getIsMobile(userAgent), [userAgent]);\n\n const setIsMobile_ = useCallback(() => {\n setIsMobile(isMobile_);\n }, [isMobile_]);\n\n useEffect(() => setIsMobile_(), [setIsMobile_]);\n\n useEffect(() => {\n const handleClick = () => {\n setActiveDot(undefined);\n onClick(undefined);\n };\n\n !isEmpty(activeDot) && window.addEventListener('click', handleClick);\n\n return () => {\n window.removeEventListener('click', handleClick);\n };\n }, [activeDot, onClick, setActiveDot]);\n\n function handleOnActiveDotClick() {\n setActiveDot(undefined);\n onClick(undefined);\n }\n\n function handleOnDotClick(label: string) {\n if (!isEmpty(activeDot) && activeDot?.label === label) {\n handleOnActiveDotClick();\n return;\n }\n const payload = formatedData.find(({subject}) => subject === label);\n if (!payload) return;\n\n const index = formatedData.indexOf(payload);\n const datakey = `value${index + 1}`;\n const skillRef = findKey(val => val === payload?.subject, legend);\n\n if (skillRef) {\n setActiveDot({\n key: datakey,\n value: payload[datakey],\n label: payload.subject\n });\n onClick(skillRef);\n }\n }\n\n function handleExploreClick(label: string) {\n const payload = formatedData.find(({subject}) => subject === label);\n if (!payload) return;\n\n const skillRef = findKey(val => val === payload?.subject, legend);\n\n if (skillRef) {\n onExploreClick(skillRef);\n }\n }\n\n function renderCustomLabel(props: {\n x: number;\n y: number;\n payload: {value: string};\n index: number;\n }) {\n const {\n x,\n y,\n payload: {value: label},\n index\n } = props;\n const currentData = formatedData.find(({subject}) => subject === label);\n const percentagesValues: number[] = pipe(\n omit('subject'),\n mapValues(value => `${value}%`),\n values\n )(currentData);\n\n return (\n <CustomLabel\n index={index}\n x={x}\n y={y}\n percentagesValues={percentagesValues}\n label={label}\n activeDot={activeDot}\n chartType={chartType}\n formatedColors={formatedColors}\n primarySkinColor={primarySkinColor}\n exploreLocale={translate('Explore')}\n hoveredDot={hoveredDot}\n onClick={handleOnDotClick}\n onExploreClick={handleExploreClick}\n />\n );\n }\n const formatedData = useMemo(() => formatData(legend, data), [legend, data]);\n\n return (\n <RadarChart\n width={width}\n height={height}\n margin={margin ?? (isMobile ? {top: 80} : {top: 180})}\n cx=\"50%\"\n cy=\"50%\"\n outerRadius=\"80%\"\n data={formatedData}\n >\n {gradients}\n <PolarGrid strokeDasharray={10} strokeWidth={2} radialLines={false} />\n <PolarAngleAxis dataKey=\"subject\" tick={!isMobile && renderCustomLabel} />\n <PolarRadiusAxis tick={false} axisLine={false} domain={[0, 100]} />\n {buildRadars(totalDataset, setHoveredDot, handleOnDotClick, activeDot)}\n {isMobile ? <Tooltip cursor={false} content={<CustomTooltip />} /> : null}\n </RadarChart>\n );\n};\n\nconst ResponsiveLearningProfileRadarChart = (props: LearningProfileRadarChartPropTypes) => (\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <LearningProfileRadarChart {...props} />\n </ResponsiveContainer>\n);\n\nLearningProfileRadarChart.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nLearningProfileRadarChart.propTypes = learningProfileRadarChartPropTypes;\nResponsiveLearningProfileRadarChart.propTypes = learningProfileRadarChartPropTypes;\n\nexport default ResponsiveLearningProfileRadarChart;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export default PlaylistDetailCover;
|
|
2
|
+
declare function PlaylistDetailCover({ images }: {
|
|
3
|
+
images: any;
|
|
4
|
+
}): JSX.Element;
|
|
5
|
+
declare namespace PlaylistDetailCover {
|
|
6
|
+
namespace propTypes {
|
|
7
|
+
const images: PropTypes.Validator<(PropTypes.InferProps<{
|
|
8
|
+
type: PropTypes.Requireable<string>;
|
|
9
|
+
image: PropTypes.Requireable<string>;
|
|
10
|
+
}> | null | undefined)[]>;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
import PropTypes from "prop-types";
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule/playlist-detail-cover/index.js"],"names":[],"mappings":";AAQA;;gBAoCC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import React, { useMemo, useCallback } from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import { EXTERNAL_COURSE_TYPES } from '../../util/external-content';
|
|
4
|
+
import style from './style.css';
|
|
5
|
+
const FALLBACK_PATH = 'https://s3.eu-west-1.amazonaws.com/static.coorpacademy.com/assets/images/cover-fallback-external-$TYPE.png';
|
|
6
|
+
|
|
7
|
+
const PlaylistDetailCover = ({
|
|
8
|
+
images
|
|
9
|
+
}) => {
|
|
10
|
+
const [firstColumnImages, secondColumnImages] = useMemo(() => {
|
|
11
|
+
const imagesClone = [...images];
|
|
12
|
+
return [imagesClone.splice(0, imagesClone.length / 2), imagesClone];
|
|
13
|
+
}, [images]);
|
|
14
|
+
const buildImageStyle = useCallback(({
|
|
15
|
+
type,
|
|
16
|
+
image
|
|
17
|
+
}) => {
|
|
18
|
+
const imageUrl = image || FALLBACK_PATH.replace('$TYPE', type);
|
|
19
|
+
return {
|
|
20
|
+
backgroundImage: `url(${imageUrl})`,
|
|
21
|
+
backgroundSize: 'cover',
|
|
22
|
+
backgroundPosition: 'center'
|
|
23
|
+
};
|
|
24
|
+
});
|
|
25
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
26
|
+
className: style.container
|
|
27
|
+
}, images.length === 1 ? /*#__PURE__*/React.createElement("img", {
|
|
28
|
+
className: style.image,
|
|
29
|
+
style: buildImageStyle(images[0])
|
|
30
|
+
}) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
|
31
|
+
className: style.imagesWrapper
|
|
32
|
+
}, firstColumnImages.map((image, index) => /*#__PURE__*/React.createElement("img", {
|
|
33
|
+
key: index,
|
|
34
|
+
className: style.image,
|
|
35
|
+
style: buildImageStyle(image)
|
|
36
|
+
}))), /*#__PURE__*/React.createElement("div", {
|
|
37
|
+
className: style.imagesWrapper
|
|
38
|
+
}, secondColumnImages.map((image, index) => /*#__PURE__*/React.createElement("img", {
|
|
39
|
+
key: index,
|
|
40
|
+
className: style.image,
|
|
41
|
+
style: buildImageStyle(image)
|
|
42
|
+
})))));
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
PlaylistDetailCover.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
46
|
+
images: PropTypes.arrayOf(PropTypes.shape({
|
|
47
|
+
type: PropTypes.oneOf(EXTERNAL_COURSE_TYPES),
|
|
48
|
+
image: PropTypes.string
|
|
49
|
+
})).isRequired
|
|
50
|
+
} : {};
|
|
51
|
+
export default PlaylistDetailCover;
|
|
52
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","useMemo","useCallback","PropTypes","EXTERNAL_COURSE_TYPES","style","FALLBACK_PATH","PlaylistDetailCover","images","firstColumnImages","secondColumnImages","imagesClone","splice","length","buildImageStyle","type","image","imageUrl","replace","backgroundImage","backgroundSize","backgroundPosition","container","imagesWrapper","map","index","propTypes","arrayOf","shape","oneOf","string","isRequired"],"sources":["../../../src/molecule/playlist-detail-cover/index.js"],"sourcesContent":["import React, {useMemo, useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport {EXTERNAL_COURSE_TYPES} from '../../util/external-content';\nimport style from './style.css';\n\nconst FALLBACK_PATH =\n 'https://s3.eu-west-1.amazonaws.com/static.coorpacademy.com/assets/images/cover-fallback-external-$TYPE.png';\n\nconst PlaylistDetailCover = ({images}) => {\n const [firstColumnImages, secondColumnImages] = useMemo(() => {\n const imagesClone = [...images];\n return [imagesClone.splice(0, imagesClone.length / 2), imagesClone];\n }, [images]);\n\n const buildImageStyle = useCallback(({type, image}) => {\n const imageUrl = image || FALLBACK_PATH.replace('$TYPE', type);\n\n return {\n backgroundImage: `url(${imageUrl})`,\n backgroundSize: 'cover',\n backgroundPosition: 'center'\n };\n });\n\n return (\n <div className={style.container}>\n {images.length === 1 ? (\n <img className={style.image} style={buildImageStyle(images[0])} />\n ) : (\n <>\n <div className={style.imagesWrapper}>\n {firstColumnImages.map((image, index) => (\n <img key={index} className={style.image} style={buildImageStyle(image)} />\n ))}\n </div>\n <div className={style.imagesWrapper}>\n {secondColumnImages.map((image, index) => (\n <img key={index} className={style.image} style={buildImageStyle(image)} />\n ))}\n </div>\n </>\n )}\n </div>\n );\n};\n\nPlaylistDetailCover.propTypes = {\n images: PropTypes.arrayOf(\n PropTypes.shape({\n type: PropTypes.oneOf(EXTERNAL_COURSE_TYPES),\n image: PropTypes.string\n })\n ).isRequired\n};\n\nexport default PlaylistDetailCover;\n"],"mappings":"AAAA,OAAOA,KAAP,IAAeC,OAAf,EAAwBC,WAAxB,QAA0C,OAA1C;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,SAAQC,qBAAR,QAAoC,6BAApC;AACA,OAAOC,KAAP,MAAkB,aAAlB;AAEA,MAAMC,aAAa,GACjB,4GADF;;AAGA,MAAMC,mBAAmB,GAAG,CAAC;EAACC;AAAD,CAAD,KAAc;EACxC,MAAM,CAACC,iBAAD,EAAoBC,kBAApB,IAA0CT,OAAO,CAAC,MAAM;IAC5D,MAAMU,WAAW,GAAG,CAAC,GAAGH,MAAJ,CAApB;IACA,OAAO,CAACG,WAAW,CAACC,MAAZ,CAAmB,CAAnB,EAAsBD,WAAW,CAACE,MAAZ,GAAqB,CAA3C,CAAD,EAAgDF,WAAhD,CAAP;EACD,CAHsD,EAGpD,CAACH,MAAD,CAHoD,CAAvD;EAKA,MAAMM,eAAe,GAAGZ,WAAW,CAAC,CAAC;IAACa,IAAD;IAAOC;EAAP,CAAD,KAAmB;IACrD,MAAMC,QAAQ,GAAGD,KAAK,IAAIV,aAAa,CAACY,OAAd,CAAsB,OAAtB,EAA+BH,IAA/B,CAA1B;IAEA,OAAO;MACLI,eAAe,EAAG,OAAMF,QAAS,GAD5B;MAELG,cAAc,EAAE,OAFX;MAGLC,kBAAkB,EAAE;IAHf,CAAP;EAKD,CARkC,CAAnC;EAUA,oBACE;IAAK,SAAS,EAAEhB,KAAK,CAACiB;EAAtB,GACGd,MAAM,CAACK,MAAP,KAAkB,CAAlB,gBACC;IAAK,SAAS,EAAER,KAAK,CAACW,KAAtB;IAA6B,KAAK,EAAEF,eAAe,CAACN,MAAM,CAAC,CAAD,CAAP;EAAnD,EADD,gBAGC,uDACE;IAAK,SAAS,EAAEH,KAAK,CAACkB;EAAtB,GACGd,iBAAiB,CAACe,GAAlB,CAAsB,CAACR,KAAD,EAAQS,KAAR,kBACrB;IAAK,GAAG,EAAEA,KAAV;IAAiB,SAAS,EAAEpB,KAAK,CAACW,KAAlC;IAAyC,KAAK,EAAEF,eAAe,CAACE,KAAD;EAA/D,EADD,CADH,CADF,eAME;IAAK,SAAS,EAAEX,KAAK,CAACkB;EAAtB,GACGb,kBAAkB,CAACc,GAAnB,CAAuB,CAACR,KAAD,EAAQS,KAAR,kBACtB;IAAK,GAAG,EAAEA,KAAV;IAAiB,SAAS,EAAEpB,KAAK,CAACW,KAAlC;IAAyC,KAAK,EAAEF,eAAe,CAACE,KAAD;EAA/D,EADD,CADH,CANF,CAJJ,CADF;AAoBD,CApCD;;AAsCAT,mBAAmB,CAACmB,SAApB,2CAAgC;EAC9BlB,MAAM,EAAEL,SAAS,CAACwB,OAAV,CACNxB,SAAS,CAACyB,KAAV,CAAgB;IACdb,IAAI,EAAEZ,SAAS,CAAC0B,KAAV,CAAgBzB,qBAAhB,CADQ;IAEdY,KAAK,EAAEb,SAAS,CAAC2B;EAFH,CAAhB,CADM,EAKNC;AAN4B,CAAhC;AASA,eAAexB,mBAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule/setup-section/index.js"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule/setup-section/index.js"],"names":[],"mappings":";AA0CA,qEAeC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAhDD,mFAqBC"}
|
|
@@ -7,6 +7,7 @@ import PropTypes from 'prop-types';
|
|
|
7
7
|
import Provider from '../../atom/provider';
|
|
8
8
|
import InputSwitch from '../../atom/input-switch';
|
|
9
9
|
import RadioGroup from '../../atom/radio-group';
|
|
10
|
+
import { COLORS } from '../../variables/colors';
|
|
10
11
|
import style from './style.css';
|
|
11
12
|
|
|
12
13
|
const ContentTypesToggler = (props, context) => {
|
|
@@ -31,7 +32,8 @@ const ContentTypesToggler = (props, context) => {
|
|
|
31
32
|
}, /*#__PURE__*/React.createElement(RadioGroup, _extends({}, contentTypes, {
|
|
32
33
|
style: {
|
|
33
34
|
color: contentTypesColor
|
|
34
|
-
}
|
|
35
|
+
},
|
|
36
|
+
color: COLORS.cm_primary_blue
|
|
35
37
|
})));
|
|
36
38
|
};
|
|
37
39
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","PropTypes","Provider","InputSwitch","RadioGroup","style","ContentTypesToggler","props","context","skin","contentTypes","brand","orange","contentTypesColor","contentTypeWrapper","color","contextTypes","childContextTypes","propTypes","shape","modified","bool","SetupSection","translate","title","display","wrapper","settings","label","string","isRequired","onUp","func","onDown"],"sources":["../../../src/molecule/setup-section/index.js"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport {get} from 'lodash/fp';\nimport Provider from '../../atom/provider';\nimport InputSwitch from '../../atom/input-switch';\nimport RadioGroup from '../../atom/radio-group';\nimport style from './style.css';\n\nconst ContentTypesToggler = (props, context) => {\n const {skin} = context;\n const {contentTypes} = props;\n\n if (!contentTypes) {\n return null;\n }\n\n const brand = get('common.brand', skin);\n const orange = get('common.orange', skin);\n const contentTypesColor = get('modified', contentTypes) ? orange : brand;\n\n return (\n <div className={style.contentTypeWrapper}>\n <RadioGroup
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","PropTypes","Provider","InputSwitch","RadioGroup","COLORS","style","ContentTypesToggler","props","context","skin","contentTypes","brand","orange","contentTypesColor","contentTypeWrapper","color","cm_primary_blue","contextTypes","childContextTypes","propTypes","shape","modified","bool","SetupSection","translate","title","display","wrapper","settings","label","string","isRequired","onUp","func","onDown"],"sources":["../../../src/molecule/setup-section/index.js"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport {get} from 'lodash/fp';\nimport Provider from '../../atom/provider';\nimport InputSwitch from '../../atom/input-switch';\nimport RadioGroup from '../../atom/radio-group';\nimport {COLORS} from '../../variables/colors';\nimport style from './style.css';\n\nconst ContentTypesToggler = (props, context) => {\n const {skin} = context;\n const {contentTypes} = props;\n\n if (!contentTypes) {\n return null;\n }\n\n const brand = get('common.brand', skin);\n const orange = get('common.orange', skin);\n const contentTypesColor = get('modified', contentTypes) ? orange : brand;\n\n return (\n <div className={style.contentTypeWrapper}>\n <RadioGroup\n {...contentTypes}\n style={{color: contentTypesColor}}\n color={COLORS.cm_primary_blue}\n />\n </div>\n );\n};\nContentTypesToggler.contextTypes = {\n skin: Provider.childContextTypes.skin\n};\n\nContentTypesToggler.propTypes = {\n contentTypes: PropTypes.shape({\n ...RadioGroup.propTypes,\n modified: PropTypes.bool\n })\n};\n\nconst SetupSection = (props, context) => {\n const {translate} = context;\n\n const {title, display, contentTypes} = props;\n\n return (\n <div className={style.wrapper}>\n <div className={style.title}>{title}</div>\n <div className={style.settings}>\n <ContentTypesToggler contentTypes={contentTypes} />\n <div className={style.label}>{translate('Show')}</div>\n <InputSwitch {...display} />\n </div>\n </div>\n );\n};\n\nSetupSection.contextTypes = {\n translate: Provider.childContextTypes.translate,\n skin: Provider.childContextTypes.skin\n};\n\nSetupSection.propTypes = {\n title: PropTypes.string.isRequired,\n onUp: PropTypes.func,\n onDown: PropTypes.func,\n display: PropTypes.shape(InputSwitch.propTypes),\n contentTypes: ContentTypesToggler.propTypes.contentTypes\n};\n\nexport default SetupSection;\n"],"mappings":";;;;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AAEA,OAAOC,QAAP,MAAqB,qBAArB;AACA,OAAOC,WAAP,MAAwB,yBAAxB;AACA,OAAOC,UAAP,MAAuB,wBAAvB;AACA,SAAQC,MAAR,QAAqB,wBAArB;AACA,OAAOC,KAAP,MAAkB,aAAlB;;AAEA,MAAMC,mBAAmB,GAAG,CAACC,KAAD,EAAQC,OAAR,KAAoB;EAC9C,MAAM;IAACC;EAAD,IAASD,OAAf;EACA,MAAM;IAACE;EAAD,IAAiBH,KAAvB;;EAEA,IAAI,CAACG,YAAL,EAAmB;IACjB,OAAO,IAAP;EACD;;EAED,MAAMC,KAAK,GAAG,KAAI,cAAJ,EAAoBF,IAApB,CAAd;;EACA,MAAMG,MAAM,GAAG,KAAI,eAAJ,EAAqBH,IAArB,CAAf;;EACA,MAAMI,iBAAiB,GAAG,KAAI,UAAJ,EAAgBH,YAAhB,IAAgCE,MAAhC,GAAyCD,KAAnE;EAEA,oBACE;IAAK,SAAS,EAAEN,KAAK,CAACS;EAAtB,gBACE,oBAAC,UAAD,eACMJ,YADN;IAEE,KAAK,EAAE;MAACK,KAAK,EAAEF;IAAR,CAFT;IAGE,KAAK,EAAET,MAAM,CAACY;EAHhB,GADF,CADF;AASD,CArBD;;AAsBAV,mBAAmB,CAACW,YAApB,GAAmC;EACjCR,IAAI,EAAER,QAAQ,CAACiB,iBAAT,CAA2BT;AADA,CAAnC;AAIAH,mBAAmB,CAACa,SAApB,2CAAgC;EAC9BT,YAAY,EAAEV,SAAS,CAACoB,KAAV,cACTjB,UAAU,CAACgB,SADF;IAEZE,QAAQ,EAAErB,SAAS,CAACsB;EAFR;AADgB,CAAhC;;AAOA,MAAMC,YAAY,GAAG,CAAChB,KAAD,EAAQC,OAAR,KAAoB;EACvC,MAAM;IAACgB;EAAD,IAAchB,OAApB;EAEA,MAAM;IAACiB,KAAD;IAAQC,OAAR;IAAiBhB;EAAjB,IAAiCH,KAAvC;EAEA,oBACE;IAAK,SAAS,EAAEF,KAAK,CAACsB;EAAtB,gBACE;IAAK,SAAS,EAAEtB,KAAK,CAACoB;EAAtB,GAA8BA,KAA9B,CADF,eAEE;IAAK,SAAS,EAAEpB,KAAK,CAACuB;EAAtB,gBACE,oBAAC,mBAAD;IAAqB,YAAY,EAAElB;EAAnC,EADF,eAEE;IAAK,SAAS,EAAEL,KAAK,CAACwB;EAAtB,GAA8BL,SAAS,CAAC,MAAD,CAAvC,CAFF,eAGE,oBAAC,WAAD,EAAiBE,OAAjB,CAHF,CAFF,CADF;AAUD,CAfD;;AAiBAH,YAAY,CAACN,YAAb,GAA4B;EAC1BO,SAAS,EAAEvB,QAAQ,CAACiB,iBAAT,CAA2BM,SADZ;EAE1Bf,IAAI,EAAER,QAAQ,CAACiB,iBAAT,CAA2BT;AAFP,CAA5B;AAKAc,YAAY,CAACJ,SAAb,2CAAyB;EACvBM,KAAK,EAAEzB,SAAS,CAAC8B,MAAV,CAAiBC,UADD;EAEvBC,IAAI,EAAEhC,SAAS,CAACiC,IAFO;EAGvBC,MAAM,EAAElC,SAAS,CAACiC,IAHK;EAIvBP,OAAO,EAAE1B,SAAS,CAACoB,KAAV,CAAgBlB,WAAW,CAACiB,SAA5B,CAJc;EAKvBT,YAAY,EAAEJ,mBAAmB,CAACa,SAApB,CAA8BT;AALrB,CAAzB;AAQA,eAAea,YAAf"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
@value mobile from breakpoints;
|
|
3
3
|
@value colors: "../../variables/colors.css";
|
|
4
4
|
@value xtraLightGrey from colors;
|
|
5
|
-
@value
|
|
5
|
+
@value cm_primary_blue from colors;
|
|
6
6
|
@value primaryAdd1 from colors;
|
|
7
7
|
|
|
8
8
|
.wrapper {
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
.title {
|
|
21
21
|
font-family: 'Gilroy';
|
|
22
22
|
font-size: 14px;
|
|
23
|
-
color:
|
|
23
|
+
color: cm_primary_blue;
|
|
24
24
|
font-weight: 700;
|
|
25
25
|
}
|
|
26
26
|
|
|
@@ -41,7 +41,7 @@ const SkillPickerModal = (props, context) => {
|
|
|
41
41
|
};
|
|
42
42
|
});
|
|
43
43
|
}, [skills, selectedSkillList, skillsLocales]);
|
|
44
|
-
const isError = useMemo(() => selectedSkillList.length > maxSelectedSkills || selectedSkillList.length < minSelectedSkills, [selectedSkillList, maxSelectedSkills]);
|
|
44
|
+
const isError = useMemo(() => selectedSkillList.length > maxSelectedSkills || selectedSkillList.length < minSelectedSkills, [selectedSkillList, maxSelectedSkills, minSelectedSkills]);
|
|
45
45
|
const footer = useMemo(() => {
|
|
46
46
|
const footerDescription = selectedSkillList.length > maxSelectedSkills ? translate('skill_focus_footer_error_description', {
|
|
47
47
|
skillNumber: selectedSkillList.length - maxSelectedSkills
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","useMemo","useState","useCallback","PropTypes","filter","BaseModal","Chip","Loader","Provider","style","SkillPickerModal","props","context","skills","selectedSkills","skillsLocales","isOpen","isLoading","maxSelectedSkills","minSelectedSkills","onCancel","onConfirm","onClose","translate","selectedSkillList","setSelectedSkillList","handleCancel","handleClose","skillList","map","skill","skillTitle","skillRef","focus","includes","isError","length","footer","footerDescription","skillNumber","text","cancelButton","label","disabled","confirmButton","iconName","name","backgroundColor","skillPickerContainer","loaderContainer","loader","marginBottom","display","gap","flexWrap","index","handleChipClick","newSelectedSkillList","selectedSkill","contextTypes","childContextTypes","propTypes","arrayOf","string","objectOf","bool","number","func"],"sources":["../../../src/molecule/skill-picker-modal/index.js"],"sourcesContent":["import React, {useMemo, useState, useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport filter from 'lodash/fp/filter';\nimport BaseModal from '../base-modal';\nimport Chip from '../../atom/chip';\nimport Loader from '../../atom/loader';\nimport Provider from '../../atom/provider';\nimport style from './style.css';\n\nconst SkillPickerModal = (props, context) => {\n const {\n skills,\n selectedSkills,\n skillsLocales,\n isOpen,\n isLoading,\n maxSelectedSkills = 6,\n minSelectedSkills = 3,\n onCancel,\n onConfirm,\n onClose\n } = props;\n const {translate} = context;\n\n const [selectedSkillList, setSelectedSkillList] = useState(selectedSkills);\n\n const handleCancel = useCallback(() => {\n setSelectedSkillList(selectedSkills);\n onCancel();\n }, [setSelectedSkillList, selectedSkills, onCancel]);\n\n const handleClose = useCallback(() => {\n setSelectedSkillList(selectedSkills);\n onClose();\n }, [setSelectedSkillList, selectedSkills, onClose]);\n\n const skillList = useMemo(() => {\n return skills.map(skill => {\n return {\n skillTitle: skillsLocales[skill],\n skillRef: skill,\n focus: selectedSkillList.includes(skill)\n };\n });\n }, [skills, selectedSkillList, skillsLocales]);\n\n const isError = useMemo(\n () =>\n selectedSkillList.length > maxSelectedSkills || selectedSkillList.length < minSelectedSkills,\n [selectedSkillList, maxSelectedSkills]\n );\n\n const footer = useMemo(() => {\n const footerDescription =\n selectedSkillList.length > maxSelectedSkills\n ? translate('skill_focus_footer_error_description', {\n skillNumber: selectedSkillList.length - maxSelectedSkills\n })\n : translate('skill_focus_footer_description', {\n skillNumber: minSelectedSkills - selectedSkillList.length\n });\n return {\n text: isLoading || !isError ? '' : footerDescription,\n isError,\n cancelButton: {\n onCancel: handleCancel,\n label: translate('cancel'),\n disabled: isLoading || isError\n },\n confirmButton: {\n onConfirm: () => onConfirm(selectedSkillList),\n label: translate('confirm'),\n iconName: 'circle-check',\n disabled: isLoading || isError\n }\n };\n }, [\n isError,\n handleCancel,\n onConfirm,\n translate,\n selectedSkillList,\n isLoading,\n maxSelectedSkills,\n minSelectedSkills\n ]);\n\n if ((!isLoading && !skills) || !isOpen) return null;\n\n return (\n <BaseModal\n title={translate('skill_focus')}\n description={translate('skill_focus_description')}\n isOpen={isOpen}\n onClose={handleClose}\n footer={footer}\n headerIcon={{\n name: 'bullseye-arrow',\n backgroundColor: '#DDD1FF'\n }}\n >\n <div className={style.skillPickerContainer}>\n {isLoading ? (\n <div className={style.loaderContainer}>\n <Loader className={style.loader} theme=\"coorpmanager\" />\n </div>\n ) : (\n <>\n <div style={{marginBottom: '16px'}}>\n {`${selectedSkillList.length} ${translate('selected')}`}\n </div>\n <div style={{display: 'flex', gap: '16px', flexWrap: 'wrap'}}>\n {skillList.map((skill, index) => {\n const {skillTitle, skillRef, focus} = skill;\n function handleChipClick() {\n const newSelectedSkillList = focus\n ? filter(selectedSkill => selectedSkill !== skillRef, selectedSkillList)\n : [...selectedSkillList, skill.skillRef];\n setSelectedSkillList(newSelectedSkillList);\n }\n\n return (\n <Chip\n text={skillTitle}\n selected={focus}\n onClick={handleChipClick}\n key={index}\n backgroundColor=\"skin\"\n />\n );\n })}\n </div>\n </>\n )}\n </div>\n </BaseModal>\n );\n};\n\nSkillPickerModal.contextTypes = {\n translate: Provider.childContextTypes.translate\n};\n\nSkillPickerModal.propTypes = {\n skills: PropTypes.arrayOf(PropTypes.string),\n selectedSkills: PropTypes.arrayOf(PropTypes.string),\n skillsLocales: PropTypes.objectOf(PropTypes.string),\n isOpen: PropTypes.bool,\n isLoading: PropTypes.bool,\n minSelectedSkills: PropTypes.number,\n maxSelectedSkills: PropTypes.number,\n onCancel: PropTypes.func,\n onConfirm: PropTypes.func,\n onClose: PropTypes.func\n};\n\nexport default SkillPickerModal;\n"],"mappings":"AAAA,OAAOA,KAAP,IAAeC,OAAf,EAAwBC,QAAxB,EAAkCC,WAAlC,QAAoD,OAApD;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,MAAP,MAAmB,kBAAnB;AACA,OAAOC,SAAP,MAAsB,eAAtB;AACA,OAAOC,IAAP,MAAiB,iBAAjB;AACA,OAAOC,MAAP,MAAmB,mBAAnB;AACA,OAAOC,QAAP,MAAqB,qBAArB;AACA,OAAOC,KAAP,MAAkB,aAAlB;;AAEA,MAAMC,gBAAgB,GAAG,CAACC,KAAD,EAAQC,OAAR,KAAoB;EAC3C,MAAM;IACJC,MADI;IAEJC,cAFI;IAGJC,aAHI;IAIJC,MAJI;IAKJC,SALI;IAMJC,iBAAiB,GAAG,CANhB;IAOJC,iBAAiB,GAAG,CAPhB;IAQJC,QARI;IASJC,SATI;IAUJC;EAVI,IAWFX,KAXJ;EAYA,MAAM;IAACY;EAAD,IAAcX,OAApB;EAEA,MAAM,CAACY,iBAAD,EAAoBC,oBAApB,IAA4CxB,QAAQ,CAACa,cAAD,CAA1D;EAEA,MAAMY,YAAY,GAAGxB,WAAW,CAAC,MAAM;IACrCuB,oBAAoB,CAACX,cAAD,CAApB;IACAM,QAAQ;EACT,CAH+B,EAG7B,CAACK,oBAAD,EAAuBX,cAAvB,EAAuCM,QAAvC,CAH6B,CAAhC;EAKA,MAAMO,WAAW,GAAGzB,WAAW,CAAC,MAAM;IACpCuB,oBAAoB,CAACX,cAAD,CAApB;IACAQ,OAAO;EACR,CAH8B,EAG5B,CAACG,oBAAD,EAAuBX,cAAvB,EAAuCQ,OAAvC,CAH4B,CAA/B;EAKA,MAAMM,SAAS,GAAG5B,OAAO,CAAC,MAAM;IAC9B,OAAOa,MAAM,CAACgB,GAAP,CAAWC,KAAK,IAAI;MACzB,OAAO;QACLC,UAAU,EAAEhB,aAAa,CAACe,KAAD,CADpB;QAELE,QAAQ,EAAEF,KAFL;QAGLG,KAAK,EAAET,iBAAiB,CAACU,QAAlB,CAA2BJ,KAA3B;MAHF,CAAP;IAKD,CANM,CAAP;EAOD,CARwB,EAQtB,CAACjB,MAAD,EAASW,iBAAT,EAA4BT,aAA5B,CARsB,CAAzB;EAUA,MAAMoB,OAAO,GAAGnC,OAAO,CACrB,MACEwB,iBAAiB,CAACY,MAAlB,GAA2BlB,iBAA3B,IAAgDM,iBAAiB,CAACY,MAAlB,GAA2BjB,iBAFxD,EAGrB,CAACK,iBAAD,EAAoBN,iBAApB,CAHqB,CAAvB;EAMA,
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","useMemo","useState","useCallback","PropTypes","filter","BaseModal","Chip","Loader","Provider","style","SkillPickerModal","props","context","skills","selectedSkills","skillsLocales","isOpen","isLoading","maxSelectedSkills","minSelectedSkills","onCancel","onConfirm","onClose","translate","selectedSkillList","setSelectedSkillList","handleCancel","handleClose","skillList","map","skill","skillTitle","skillRef","focus","includes","isError","length","footer","footerDescription","skillNumber","text","cancelButton","label","disabled","confirmButton","iconName","name","backgroundColor","skillPickerContainer","loaderContainer","loader","marginBottom","display","gap","flexWrap","index","handleChipClick","newSelectedSkillList","selectedSkill","contextTypes","childContextTypes","propTypes","arrayOf","string","objectOf","bool","number","func"],"sources":["../../../src/molecule/skill-picker-modal/index.js"],"sourcesContent":["import React, {useMemo, useState, useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport filter from 'lodash/fp/filter';\nimport BaseModal from '../base-modal';\nimport Chip from '../../atom/chip';\nimport Loader from '../../atom/loader';\nimport Provider from '../../atom/provider';\nimport style from './style.css';\n\nconst SkillPickerModal = (props, context) => {\n const {\n skills,\n selectedSkills,\n skillsLocales,\n isOpen,\n isLoading,\n maxSelectedSkills = 6,\n minSelectedSkills = 3,\n onCancel,\n onConfirm,\n onClose\n } = props;\n const {translate} = context;\n\n const [selectedSkillList, setSelectedSkillList] = useState(selectedSkills);\n\n const handleCancel = useCallback(() => {\n setSelectedSkillList(selectedSkills);\n onCancel();\n }, [setSelectedSkillList, selectedSkills, onCancel]);\n\n const handleClose = useCallback(() => {\n setSelectedSkillList(selectedSkills);\n onClose();\n }, [setSelectedSkillList, selectedSkills, onClose]);\n\n const skillList = useMemo(() => {\n return skills.map(skill => {\n return {\n skillTitle: skillsLocales[skill],\n skillRef: skill,\n focus: selectedSkillList.includes(skill)\n };\n });\n }, [skills, selectedSkillList, skillsLocales]);\n\n const isError = useMemo(\n () =>\n selectedSkillList.length > maxSelectedSkills || selectedSkillList.length < minSelectedSkills,\n [selectedSkillList, maxSelectedSkills, minSelectedSkills]\n );\n\n const footer = useMemo(() => {\n const footerDescription =\n selectedSkillList.length > maxSelectedSkills\n ? translate('skill_focus_footer_error_description', {\n skillNumber: selectedSkillList.length - maxSelectedSkills\n })\n : translate('skill_focus_footer_description', {\n skillNumber: minSelectedSkills - selectedSkillList.length\n });\n return {\n text: isLoading || !isError ? '' : footerDescription,\n isError,\n cancelButton: {\n onCancel: handleCancel,\n label: translate('cancel'),\n disabled: isLoading || isError\n },\n confirmButton: {\n onConfirm: () => onConfirm(selectedSkillList),\n label: translate('confirm'),\n iconName: 'circle-check',\n disabled: isLoading || isError\n }\n };\n }, [\n isError,\n handleCancel,\n onConfirm,\n translate,\n selectedSkillList,\n isLoading,\n maxSelectedSkills,\n minSelectedSkills\n ]);\n\n if ((!isLoading && !skills) || !isOpen) return null;\n\n return (\n <BaseModal\n title={translate('skill_focus')}\n description={translate('skill_focus_description')}\n isOpen={isOpen}\n onClose={handleClose}\n footer={footer}\n headerIcon={{\n name: 'bullseye-arrow',\n backgroundColor: '#DDD1FF'\n }}\n >\n <div className={style.skillPickerContainer}>\n {isLoading ? (\n <div className={style.loaderContainer}>\n <Loader className={style.loader} theme=\"coorpmanager\" />\n </div>\n ) : (\n <>\n <div style={{marginBottom: '16px'}}>\n {`${selectedSkillList.length} ${translate('selected')}`}\n </div>\n <div style={{display: 'flex', gap: '16px', flexWrap: 'wrap'}}>\n {skillList.map((skill, index) => {\n const {skillTitle, skillRef, focus} = skill;\n function handleChipClick() {\n const newSelectedSkillList = focus\n ? filter(selectedSkill => selectedSkill !== skillRef, selectedSkillList)\n : [...selectedSkillList, skill.skillRef];\n setSelectedSkillList(newSelectedSkillList);\n }\n\n return (\n <Chip\n text={skillTitle}\n selected={focus}\n onClick={handleChipClick}\n key={index}\n backgroundColor=\"skin\"\n />\n );\n })}\n </div>\n </>\n )}\n </div>\n </BaseModal>\n );\n};\n\nSkillPickerModal.contextTypes = {\n translate: Provider.childContextTypes.translate\n};\n\nSkillPickerModal.propTypes = {\n skills: PropTypes.arrayOf(PropTypes.string),\n selectedSkills: PropTypes.arrayOf(PropTypes.string),\n skillsLocales: PropTypes.objectOf(PropTypes.string),\n isOpen: PropTypes.bool,\n isLoading: PropTypes.bool,\n minSelectedSkills: PropTypes.number,\n maxSelectedSkills: PropTypes.number,\n onCancel: PropTypes.func,\n onConfirm: PropTypes.func,\n onClose: PropTypes.func\n};\n\nexport default SkillPickerModal;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/organism/brand-form/index.js"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/organism/brand-form/index.js"],"names":[],"mappings":";AA8EA,kEAgFC"}
|