@coorpacademy/components 11.38.8-alpha.7 → 11.39.1-alpha.0
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/chip/index.d.ts.map +1 -1
- package/es/atom/chip/index.js +0 -3
- package/es/atom/chip/index.js.map +1 -1
- package/es/atom/input-text/index.d.ts +0 -1
- package/es/atom/input-text/index.d.ts.map +1 -1
- package/es/atom/input-text/index.js +1 -4
- package/es/atom/input-text/index.js.map +1 -1
- package/es/atom/input-text/style.css +1 -13
- package/es/atom/input-text-with-title/index.d.ts +0 -1
- package/es/atom/input-textarea/index.d.ts +0 -1
- package/es/atom/input-textarea/index.d.ts.map +1 -1
- package/es/atom/input-textarea/index.js +1 -4
- package/es/atom/input-textarea/index.js.map +1 -1
- package/es/atom/input-textarea/style.css +0 -22
- package/es/atom/select/index.d.ts +0 -1
- package/es/atom/select/index.d.ts.map +1 -1
- package/es/atom/select/index.js +11 -26
- package/es/atom/select/index.js.map +1 -1
- package/es/atom/select/style.css +0 -61
- package/es/atom/status-item/index.d.ts.map +1 -1
- package/es/atom/status-item/index.js +15 -15
- package/es/atom/status-item/index.js.map +1 -1
- package/es/molecule/bullet-point-menu-button/index.d.ts.map +1 -1
- package/es/molecule/bullet-point-menu-button/index.js +2 -42
- package/es/molecule/bullet-point-menu-button/index.js.map +1 -1
- package/es/molecule/card/favorite.d.ts.map +1 -1
- package/es/molecule/card/favorite.js +0 -13
- package/es/molecule/card/favorite.js.map +1 -1
- package/es/molecule/course-sections/index.d.ts +0 -1
- package/es/molecule/drag-and-drop/index.d.ts +0 -1
- package/es/molecule/drag-and-drop/upload-report.d.ts +0 -1
- package/es/molecule/filters/index.d.ts +0 -1
- package/es/molecule/filters/index.d.ts.map +1 -1
- package/es/molecule/skill-picker-modal/index.js +1 -1
- package/es/molecule/skill-picker-modal/index.js.map +1 -1
- package/es/molecule/title-and-checkbox-wrapper/index.d.ts +0 -1
- package/es/molecule/translation-modal/index.d.ts +0 -4
- package/es/molecule/translation-modal/index.js +6 -6
- package/es/molecule/translation-modal/index.js.map +1 -1
- package/es/organism/content-translation/index.d.ts +0 -2
- package/es/organism/header-with-actions/index.d.ts +2 -1
- package/es/organism/header-with-actions/index.d.ts.map +1 -1
- package/es/organism/header-with-actions/index.js +4 -3
- package/es/organism/header-with-actions/index.js.map +1 -1
- package/es/organism/header-with-actions/types.d.ts +2 -0
- package/es/organism/header-with-actions/types.d.ts.map +1 -1
- package/es/organism/header-with-actions/types.js +2 -1
- package/es/organism/header-with-actions/types.js.map +1 -1
- package/es/organism/icon-editor/index.d.ts +0 -1
- package/es/organism/icon-editor/index.d.ts.map +1 -1
- package/es/organism/icon-editor/types.d.ts +0 -1
- package/es/organism/icon-editor/types.d.ts.map +1 -1
- package/es/organism/rewards-form/index.d.ts +0 -1
- package/es/organism/select-opponents/index.d.ts +0 -1
- package/es/organism/select-opponents/index.d.ts.map +1 -1
- package/es/organism/select-opponents/types.d.ts +0 -1
- package/es/organism/select-opponents/types.d.ts.map +1 -1
- package/es/organism/skill-edition/index.d.ts +2 -22
- package/es/organism/skill-edition/index.d.ts.map +1 -1
- package/es/organism/skill-edition/index.js +47 -63
- package/es/organism/skill-edition/index.js.map +1 -1
- package/es/organism/skill-edition/style.css +13 -0
- package/es/organism/skill-edition/types.d.ts +5 -27
- package/es/organism/skill-edition/types.d.ts.map +1 -1
- package/es/organism/skill-edition/types.js +5 -22
- package/es/organism/skill-edition/types.js.map +1 -1
- package/es/organism/title-and-input/index.d.ts +0 -5
- package/es/organism/title-and-input/index.d.ts.map +1 -1
- package/es/organism/title-and-input/types.d.ts +0 -5
- package/es/organism/title-and-input/types.d.ts.map +1 -1
- package/es/organism/wizard-contents/index.d.ts +0 -4
- package/es/template/back-office/brand-update/index.d.ts +3 -22
- package/es/template/back-office/brand-update/index.d.ts.map +1 -1
- package/es/template/back-office/brand-update/index.js +3 -6
- package/es/template/back-office/brand-update/index.js.map +1 -1
- package/es/template/certifications/index.d.ts +0 -1
- package/es/template/common/search-page/index.d.ts +0 -1
- package/es/template/playlist-detail/index.d.ts +0 -1
- package/es/util/render-with-context.d.ts.map +1 -1
- package/es/util/render-with-context.js +2 -3
- package/es/util/render-with-context.js.map +1 -1
- package/lib/atom/chip/index.d.ts.map +1 -1
- package/lib/atom/chip/index.js +0 -3
- package/lib/atom/chip/index.js.map +1 -1
- package/lib/atom/input-text/index.d.ts +0 -1
- package/lib/atom/input-text/index.d.ts.map +1 -1
- package/lib/atom/input-text/index.js +1 -4
- package/lib/atom/input-text/index.js.map +1 -1
- package/lib/atom/input-text/style.css +1 -13
- package/lib/atom/input-text-with-title/index.d.ts +0 -1
- package/lib/atom/input-textarea/index.d.ts +0 -1
- package/lib/atom/input-textarea/index.d.ts.map +1 -1
- package/lib/atom/input-textarea/index.js +1 -4
- package/lib/atom/input-textarea/index.js.map +1 -1
- package/lib/atom/input-textarea/style.css +0 -22
- package/lib/atom/select/index.d.ts +0 -1
- package/lib/atom/select/index.d.ts.map +1 -1
- package/lib/atom/select/index.js +11 -26
- package/lib/atom/select/index.js.map +1 -1
- package/lib/atom/select/style.css +0 -61
- package/lib/atom/status-item/index.d.ts.map +1 -1
- package/lib/atom/status-item/index.js +17 -15
- package/lib/atom/status-item/index.js.map +1 -1
- package/lib/molecule/bullet-point-menu-button/index.d.ts.map +1 -1
- package/lib/molecule/bullet-point-menu-button/index.js +2 -41
- package/lib/molecule/bullet-point-menu-button/index.js.map +1 -1
- package/lib/molecule/card/favorite.d.ts.map +1 -1
- package/lib/molecule/card/favorite.js +0 -13
- package/lib/molecule/card/favorite.js.map +1 -1
- package/lib/molecule/course-sections/index.d.ts +0 -1
- package/lib/molecule/drag-and-drop/index.d.ts +0 -1
- package/lib/molecule/drag-and-drop/upload-report.d.ts +0 -1
- package/lib/molecule/filters/index.d.ts +0 -1
- package/lib/molecule/filters/index.d.ts.map +1 -1
- package/lib/molecule/skill-picker-modal/index.js +1 -1
- package/lib/molecule/skill-picker-modal/index.js.map +1 -1
- package/lib/molecule/title-and-checkbox-wrapper/index.d.ts +0 -1
- package/lib/molecule/translation-modal/index.d.ts +0 -4
- package/lib/molecule/translation-modal/index.js +6 -6
- package/lib/molecule/translation-modal/index.js.map +1 -1
- package/lib/organism/content-translation/index.d.ts +0 -2
- package/lib/organism/header-with-actions/index.d.ts +2 -1
- package/lib/organism/header-with-actions/index.d.ts.map +1 -1
- package/lib/organism/header-with-actions/index.js +4 -3
- package/lib/organism/header-with-actions/index.js.map +1 -1
- package/lib/organism/header-with-actions/types.d.ts +2 -0
- package/lib/organism/header-with-actions/types.d.ts.map +1 -1
- package/lib/organism/header-with-actions/types.js +2 -1
- package/lib/organism/header-with-actions/types.js.map +1 -1
- package/lib/organism/icon-editor/index.d.ts +0 -1
- package/lib/organism/icon-editor/index.d.ts.map +1 -1
- package/lib/organism/icon-editor/types.d.ts +0 -1
- package/lib/organism/icon-editor/types.d.ts.map +1 -1
- package/lib/organism/rewards-form/index.d.ts +0 -1
- package/lib/organism/select-opponents/index.d.ts +0 -1
- package/lib/organism/select-opponents/index.d.ts.map +1 -1
- package/lib/organism/select-opponents/types.d.ts +0 -1
- package/lib/organism/select-opponents/types.d.ts.map +1 -1
- package/lib/organism/skill-edition/index.d.ts +2 -22
- package/lib/organism/skill-edition/index.d.ts.map +1 -1
- package/lib/organism/skill-edition/index.js +47 -63
- package/lib/organism/skill-edition/index.js.map +1 -1
- package/lib/organism/skill-edition/style.css +13 -0
- package/lib/organism/skill-edition/types.d.ts +5 -27
- package/lib/organism/skill-edition/types.d.ts.map +1 -1
- package/lib/organism/skill-edition/types.js +5 -22
- package/lib/organism/skill-edition/types.js.map +1 -1
- package/lib/organism/title-and-input/index.d.ts +0 -5
- package/lib/organism/title-and-input/index.d.ts.map +1 -1
- package/lib/organism/title-and-input/types.d.ts +0 -5
- package/lib/organism/title-and-input/types.d.ts.map +1 -1
- package/lib/organism/wizard-contents/index.d.ts +0 -4
- package/lib/template/back-office/brand-update/index.d.ts +3 -22
- package/lib/template/back-office/brand-update/index.d.ts.map +1 -1
- package/lib/template/back-office/brand-update/index.js +3 -6
- package/lib/template/back-office/brand-update/index.js.map +1 -1
- package/lib/template/certifications/index.d.ts +0 -1
- package/lib/template/common/search-page/index.d.ts +0 -1
- package/lib/template/playlist-detail/index.d.ts +0 -1
- package/lib/util/render-with-context.d.ts.map +1 -1
- package/lib/util/render-with-context.js +2 -3
- package/lib/util/render-with-context.js.map +1 -1
- package/locales/.mtslconfig.json +1 -0
- package/package.json +2 -2
|
@@ -2,22 +2,22 @@ function _extends() { return _extends = Object.assign ? Object.assign.bind() : f
|
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import classnames from 'classnames';
|
|
4
4
|
import { NovaCompositionCoorpacademyCheck as RightIcon, NovaSolidStatusClose as WrongIcon } from '@coorpacademy/nova-icons';
|
|
5
|
-
import {
|
|
5
|
+
import Provider, { GetTranslateFromContext } from '../provider';
|
|
6
6
|
import style from './style.css';
|
|
7
7
|
import propTypes from './types';
|
|
8
|
-
const Content = props => {
|
|
8
|
+
const Content = (props, legacyContext) => {
|
|
9
9
|
const {
|
|
10
10
|
icon,
|
|
11
11
|
current,
|
|
12
|
-
value
|
|
13
|
-
translate
|
|
12
|
+
value
|
|
14
13
|
} = props;
|
|
14
|
+
const translate = GetTranslateFromContext(legacyContext);
|
|
15
15
|
let child;
|
|
16
16
|
let contentAriaLabel;
|
|
17
17
|
switch (icon) {
|
|
18
18
|
case 'no-answer':
|
|
19
19
|
child = value;
|
|
20
|
-
contentAriaLabel = translate
|
|
20
|
+
contentAriaLabel = translate('review_header_step_item.not_answered_question', {
|
|
21
21
|
current: current ? 'current ' : '',
|
|
22
22
|
headerStepValue: value
|
|
23
23
|
});
|
|
@@ -26,7 +26,7 @@ const Content = props => {
|
|
|
26
26
|
child = /*#__PURE__*/React.createElement(RightIcon, {
|
|
27
27
|
className: classnames(style.rightIcon, current && style.currentRightIcon),
|
|
28
28
|
role: "status",
|
|
29
|
-
"aria-label": translate
|
|
29
|
+
"aria-label": translate('review_header_step_item.correct_question', {
|
|
30
30
|
current: current ? 'current ' : '',
|
|
31
31
|
headerStepValue: value
|
|
32
32
|
})
|
|
@@ -36,7 +36,7 @@ const Content = props => {
|
|
|
36
36
|
child = /*#__PURE__*/React.createElement(WrongIcon, {
|
|
37
37
|
className: classnames(style.wrongIcon, current && style.currentWrongIcon),
|
|
38
38
|
role: "alert",
|
|
39
|
-
"aria-label": translate
|
|
39
|
+
"aria-label": translate('review_header_step_item.incorrect_question', {
|
|
40
40
|
current: current ? 'current ' : '',
|
|
41
41
|
headerStepValue: value
|
|
42
42
|
})
|
|
@@ -44,7 +44,7 @@ const Content = props => {
|
|
|
44
44
|
break;
|
|
45
45
|
case 'errors-number':
|
|
46
46
|
child = value;
|
|
47
|
-
contentAriaLabel = translate
|
|
47
|
+
contentAriaLabel = translate('bulk_import.errors_number', {
|
|
48
48
|
bulkImportErrorsNumber: value
|
|
49
49
|
});
|
|
50
50
|
break;
|
|
@@ -52,14 +52,14 @@ const Content = props => {
|
|
|
52
52
|
child = /*#__PURE__*/React.createElement(RightIcon, {
|
|
53
53
|
className: classnames(style.validIcon),
|
|
54
54
|
role: "status",
|
|
55
|
-
"aria-label": translate
|
|
55
|
+
"aria-label": translate('bulk_import.valid_scorm')
|
|
56
56
|
});
|
|
57
57
|
break;
|
|
58
58
|
case 'invalid':
|
|
59
59
|
child = /*#__PURE__*/React.createElement(WrongIcon, {
|
|
60
60
|
className: classnames(style.invalidIcon),
|
|
61
61
|
role: "alert",
|
|
62
|
-
"aria-label": translate
|
|
62
|
+
"aria-label": translate('bulk_import.invalid_scorm')
|
|
63
63
|
});
|
|
64
64
|
break;
|
|
65
65
|
default:
|
|
@@ -78,16 +78,16 @@ const StatusItem = props => {
|
|
|
78
78
|
current,
|
|
79
79
|
selected
|
|
80
80
|
} = props;
|
|
81
|
-
const context = useWebContext();
|
|
82
|
-
const translate = context.translate || (key => key);
|
|
83
81
|
return /*#__PURE__*/React.createElement("div", {
|
|
84
82
|
className: classnames(style.defaultStyle, icon === 'right' && style.right, icon === 'wrong' && style.wrong, current && style.current, icon === 'valid' && style.valid, icon === 'invalid' && style.invalid, icon === 'errors-number' && style.errorsNumber, selected && style.selected),
|
|
85
83
|
"data-name": "status-item"
|
|
86
|
-
}, /*#__PURE__*/React.createElement(Content,
|
|
87
|
-
translate: translate
|
|
88
|
-
})));
|
|
84
|
+
}, /*#__PURE__*/React.createElement(Content, props));
|
|
89
85
|
};
|
|
90
86
|
Content.propTypes = process.env.NODE_ENV !== "production" ? propTypes : {};
|
|
87
|
+
Content.contextTypes = {
|
|
88
|
+
skin: Provider.childContextTypes.skin,
|
|
89
|
+
translate: Provider.childContextTypes.translate
|
|
90
|
+
};
|
|
91
91
|
StatusItem.propTypes = process.env.NODE_ENV !== "production" ? propTypes : {};
|
|
92
92
|
export default StatusItem;
|
|
93
93
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","classnames","NovaCompositionCoorpacademyCheck","RightIcon","NovaSolidStatusClose","WrongIcon","
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","classnames","NovaCompositionCoorpacademyCheck","RightIcon","NovaSolidStatusClose","WrongIcon","Provider","GetTranslateFromContext","style","propTypes","Content","props","legacyContext","icon","current","value","translate","child","contentAriaLabel","headerStepValue","createElement","className","rightIcon","currentRightIcon","role","wrongIcon","currentWrongIcon","bulkImportErrorsNumber","validIcon","invalidIcon","_extends","StatusItem","selected","defaultStyle","right","wrong","valid","invalid","errorsNumber","process","env","NODE_ENV","contextTypes","skin","childContextTypes"],"sources":["../../../src/atom/status-item/index.tsx"],"sourcesContent":["import React from 'react';\nimport classnames from 'classnames';\nimport {\n NovaCompositionCoorpacademyCheck as RightIcon,\n NovaSolidStatusClose as WrongIcon\n} from '@coorpacademy/nova-icons';\nimport Provider, {GetTranslateFromContext} from '../provider';\nimport {WebContextValues} from '../provider/web-context';\nimport style from './style.css';\nimport propTypes, {StatusItemProps} from './types';\n\nconst Content = (props: StatusItemProps, legacyContext: WebContextValues) => {\n const {icon, current, value} = props;\n const translate = GetTranslateFromContext(legacyContext);\n let child;\n let contentAriaLabel;\n switch (icon) {\n case 'no-answer':\n child = value;\n contentAriaLabel = translate('review_header_step_item.not_answered_question', {\n current: current ? 'current ' : '',\n headerStepValue: value\n });\n break;\n\n case 'right':\n child = (\n <RightIcon\n className={classnames(style.rightIcon, current && style.currentRightIcon)}\n role=\"status\"\n aria-label={translate('review_header_step_item.correct_question', {\n current: current ? 'current ' : '',\n headerStepValue: value\n })}\n />\n );\n break;\n\n case 'wrong':\n child = (\n <WrongIcon\n className={classnames(style.wrongIcon, current && style.currentWrongIcon)}\n role=\"alert\"\n aria-label={translate('review_header_step_item.incorrect_question', {\n current: current ? 'current ' : '',\n headerStepValue: value\n })}\n />\n );\n break;\n\n case 'errors-number':\n child = value;\n contentAriaLabel = translate('bulk_import.errors_number', {\n bulkImportErrorsNumber: value\n });\n break;\n\n case 'valid':\n child = (\n <RightIcon\n className={classnames(style.validIcon)}\n role=\"status\"\n aria-label={translate('bulk_import.valid_scorm')}\n />\n );\n break;\n\n case 'invalid':\n child = (\n <WrongIcon\n className={classnames(style.invalidIcon)}\n role=\"alert\"\n aria-label={translate('bulk_import.invalid_scorm')}\n />\n );\n break;\n\n default:\n return null;\n }\n\n return (\n <span\n {...(icon === 'no-answer' || icon === 'errors-number'\n ? {'aria-label': contentAriaLabel, role: 'status'}\n : {})}\n className={style.value}\n >\n {child}\n </span>\n );\n};\n\nconst StatusItem = (props: StatusItemProps) => {\n const {icon, current, selected} = props;\n return (\n <div\n className={classnames(\n style.defaultStyle,\n icon === 'right' && style.right,\n icon === 'wrong' && style.wrong,\n current && style.current,\n icon === 'valid' && style.valid,\n icon === 'invalid' && style.invalid,\n icon === 'errors-number' && style.errorsNumber,\n selected && style.selected\n )}\n data-name=\"status-item\"\n >\n <Content {...props} />\n </div>\n );\n};\n\nContent.propTypes = propTypes;\n\nContent.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nStatusItem.propTypes = propTypes;\n\nexport default StatusItem;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule/bullet-point-menu-button/index.tsx"],"names":[],"mappings":";AAKA,OAAkB,EAAC,0BAA0B,EAAC,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule/bullet-point-menu-button/index.tsx"],"names":[],"mappings":";AAKA,OAAkB,EAAC,0BAA0B,EAAC,MAAM,SAAS,CAAC;AAG9D,QAAA,MAAM,qBAAqB;YAAW,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgF/D,CAAC;AAIF,eAAe,qBAAqB,CAAC"}
|
|
@@ -5,9 +5,6 @@ import ButtonLinkIcon from '../../atom/button-link-icon';
|
|
|
5
5
|
import ButtonMenu from '../../atom/button-menu';
|
|
6
6
|
import propTypes from './types';
|
|
7
7
|
import style from './style.css';
|
|
8
|
-
|
|
9
|
-
// Global event for menu coordination
|
|
10
|
-
const MENU_TOGGLE_EVENT = 'bulletPointMenuToggle';
|
|
11
8
|
const BulletPointMenuButton = props => {
|
|
12
9
|
const {
|
|
13
10
|
disabled = false,
|
|
@@ -21,36 +18,12 @@ const BulletPointMenuButton = props => {
|
|
|
21
18
|
} = props;
|
|
22
19
|
const [visible, setVisible] = useState(false);
|
|
23
20
|
const wrapperRef = useRef(null);
|
|
24
|
-
const menuIdRef = useRef(`menu-${Date.now()}-${Math.random()}`);
|
|
25
21
|
const handleOnClick = useCallback(event => {
|
|
26
22
|
event.stopPropagation();
|
|
27
23
|
event.preventDefault();
|
|
28
24
|
onClick();
|
|
29
|
-
// Emit event to close other menus
|
|
30
|
-
// had to do it this way because state is handled per item.
|
|
31
|
-
// meaning > item has no knowledge of other items state.
|
|
32
|
-
const customEvent = new CustomEvent(MENU_TOGGLE_EVENT, {
|
|
33
|
-
detail: {
|
|
34
|
-
menuId: menuIdRef.current
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
window.dispatchEvent(customEvent);
|
|
38
25
|
setVisible(!visible);
|
|
39
26
|
}, [onClick, visible]);
|
|
40
|
-
useEffect(() => {
|
|
41
|
-
const handleMenuToggle = event => {
|
|
42
|
-
const customEvent = event;
|
|
43
|
-
if (customEvent.detail.menuId !== menuIdRef.current && visible) {
|
|
44
|
-
setVisible(false);
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
window.addEventListener(MENU_TOGGLE_EVENT, handleMenuToggle);
|
|
48
|
-
return () => {
|
|
49
|
-
window.removeEventListener(MENU_TOGGLE_EVENT, handleMenuToggle);
|
|
50
|
-
};
|
|
51
|
-
}, [visible]);
|
|
52
|
-
|
|
53
|
-
// Handle clicks outside the menu
|
|
54
27
|
useEffect(() => {
|
|
55
28
|
const handleClick = clickEvent => {
|
|
56
29
|
if (wrapperRef && wrapperRef.current && !wrapperRef.current.contains(clickEvent.target)) {
|
|
@@ -80,27 +53,14 @@ const BulletPointMenuButton = props => {
|
|
|
80
53
|
"aria-label": menuAriaLabel,
|
|
81
54
|
ref: wrapperRef
|
|
82
55
|
}, /*#__PURE__*/React.createElement(ButtonMenu, menuProps)) : null;
|
|
83
|
-
|
|
84
|
-
// Conditionally show tooltip - hide it when menu is open or just closed
|
|
85
|
-
const [tooltipDisabled, setTooltipDisabled] = useState(false);
|
|
86
|
-
useEffect(() => {
|
|
87
|
-
if (visible) {
|
|
88
|
-
setTooltipDisabled(true);
|
|
89
|
-
} else {
|
|
90
|
-
// Delay re-enabling tooltip after menu closes
|
|
91
|
-
const timer = setTimeout(() => setTooltipDisabled(false), 500);
|
|
92
|
-
return () => clearTimeout(timer);
|
|
93
|
-
}
|
|
94
|
-
}, [visible]);
|
|
95
56
|
const bulletPointButtonProps = {
|
|
96
57
|
size: 'default',
|
|
97
|
-
'aria-label':
|
|
58
|
+
'aria-label': buttonAriaLabel,
|
|
98
59
|
'data-name': dataName,
|
|
99
60
|
icon: 'bullet-point',
|
|
100
61
|
onClick: handleOnClick,
|
|
101
62
|
disabled,
|
|
102
|
-
className: menuButtonClassName
|
|
103
|
-
tooltipPlacement: 'top'
|
|
63
|
+
className: menuButtonClassName
|
|
104
64
|
};
|
|
105
65
|
return /*#__PURE__*/React.createElement("div", {
|
|
106
66
|
className: style.bulletPointWrapper,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","useCallback","useState","useEffect","useRef","classnames","ButtonLinkIcon","ButtonMenu","propTypes","style","
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","useCallback","useState","useEffect","useRef","classnames","ButtonLinkIcon","ButtonMenu","propTypes","style","BulletPointMenuButton","props","disabled","buttonAriaLabel","menuAriaLabel","onClick","_noop","buttons","menuButtonClassName","isBulkMenu","dataName","visible","setVisible","wrapperRef","handleOnClick","event","stopPropagation","preventDefault","handleClick","clickEvent","current","contains","target","document","addEventListener","removeEventListener","menuProps","menuStyle","bulletPointMenu","bulkBulletPointMenu","menu","createElement","className","ref","bulletPointButtonProps","size","icon","bulletPointWrapper","process","env","NODE_ENV"],"sources":["../../../src/molecule/bullet-point-menu-button/index.tsx"],"sourcesContent":["import React, {useCallback, useState, useEffect, useRef} from 'react';\nimport classnames from 'classnames';\nimport {noop} from 'lodash/fp';\nimport ButtonLinkIcon from '../../atom/button-link-icon';\nimport ButtonMenu from '../../atom/button-menu';\nimport propTypes, {BulletPointMenuButtonProps} from './types';\nimport style from './style.css';\n\nconst BulletPointMenuButton = (props: BulletPointMenuButtonProps) => {\n const {\n disabled = false,\n buttonAriaLabel,\n menuAriaLabel,\n onClick = noop,\n buttons,\n menuButtonClassName,\n isBulkMenu,\n 'data-name': dataName = 'bullet-point-button'\n } = props;\n const [visible, setVisible] = useState(false);\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n const handleOnClick = useCallback(\n (event: React.MouseEvent | React.TouchEvent) => {\n event.stopPropagation();\n event.preventDefault();\n onClick();\n setVisible(!visible);\n },\n [onClick, visible]\n );\n\n useEffect(() => {\n const handleClick = (clickEvent: MouseEvent | TouchEvent) => {\n if (\n wrapperRef &&\n wrapperRef.current &&\n !wrapperRef.current.contains(clickEvent.target as Node)\n ) {\n setVisible(false);\n }\n };\n if (visible) {\n document.addEventListener('click', handleClick);\n document.addEventListener('touchstart', handleClick);\n } else {\n document.removeEventListener('click', handleClick);\n document.removeEventListener('touchstart', handleClick);\n }\n return () => {\n document.removeEventListener('click', handleClick);\n document.removeEventListener('touchstart', handleClick);\n };\n }, [visible]);\n\n const menuProps = {\n 'data-name': 'button-menu',\n buttons\n };\n\n const menuStyle = classnames(\n style.bulletPointMenu,\n isBulkMenu && style.bulkBulletPointMenu,\n style.visible\n );\n\n const menu = visible ? (\n <div className={menuStyle} data-name=\"menu-wrapper\" aria-label={menuAriaLabel} ref={wrapperRef}>\n <ButtonMenu {...menuProps} />\n </div>\n ) : null;\n\n const bulletPointButtonProps = {\n size: 'default',\n 'aria-label': buttonAriaLabel,\n 'data-name': dataName,\n icon: 'bullet-point',\n onClick: handleOnClick,\n disabled,\n className: menuButtonClassName\n };\n\n return (\n <div className={style.bulletPointWrapper} data-name=\"bullet-point-wrapper\">\n <ButtonLinkIcon {...bulletPointButtonProps} />\n {menu}\n </div>\n );\n};\n\nBulletPointMenuButton.propTypes = propTypes;\n\nexport default BulletPointMenuButton;\n"],"mappings":";AAAA,OAAOA,KAAK,IAAGC,WAAW,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,MAAM,QAAO,OAAO;AACrE,OAAOC,UAAU,MAAM,YAAY;AAEnC,OAAOC,cAAc,MAAM,6BAA6B;AACxD,OAAOC,UAAU,MAAM,wBAAwB;AAC/C,OAAOC,SAAS,MAAoC,SAAS;AAC7D,OAAOC,KAAK,MAAM,aAAa;AAE/B,MAAMC,qBAAqB,GAAIC,KAAiC,IAAK;EACnE,MAAM;IACJC,QAAQ,GAAG,KAAK;IAChBC,eAAe;IACfC,aAAa;IACbC,OAAO,GAAAC,KAAO;IACdC,OAAO;IACPC,mBAAmB;IACnBC,UAAU;IACV,WAAW,EAAEC,QAAQ,GAAG;EAC1B,CAAC,GAAGT,KAAK;EACT,MAAM,CAACU,OAAO,EAAEC,UAAU,CAAC,GAAGpB,QAAQ,CAAC,KAAK,CAAC;EAC7C,MAAMqB,UAAU,GAAGnB,MAAM,CAAiB,IAAI,CAAC;EAE/C,MAAMoB,aAAa,GAAGvB,WAAW,CAC9BwB,KAA0C,IAAK;IAC9CA,KAAK,CAACC,eAAe,CAAC,CAAC;IACvBD,KAAK,CAACE,cAAc,CAAC,CAAC;IACtBZ,OAAO,CAAC,CAAC;IACTO,UAAU,CAAC,CAACD,OAAO,CAAC;EACtB,CAAC,EACD,CAACN,OAAO,EAAEM,OAAO,CACnB,CAAC;EAEDlB,SAAS,CAAC,MAAM;IACd,MAAMyB,WAAW,GAAIC,UAAmC,IAAK;MAC3D,IACEN,UAAU,IACVA,UAAU,CAACO,OAAO,IAClB,CAACP,UAAU,CAACO,OAAO,CAACC,QAAQ,CAACF,UAAU,CAACG,MAAc,CAAC,EACvD;QACAV,UAAU,CAAC,KAAK,CAAC;MACnB;IACF,CAAC;IACD,IAAID,OAAO,EAAE;MACXY,QAAQ,CAACC,gBAAgB,CAAC,OAAO,EAAEN,WAAW,CAAC;MAC/CK,QAAQ,CAACC,gBAAgB,CAAC,YAAY,EAAEN,WAAW,CAAC;IACtD,CAAC,MAAM;MACLK,QAAQ,CAACE,mBAAmB,CAAC,OAAO,EAAEP,WAAW,CAAC;MAClDK,QAAQ,CAACE,mBAAmB,CAAC,YAAY,EAAEP,WAAW,CAAC;IACzD;IACA,OAAO,MAAM;MACXK,QAAQ,CAACE,mBAAmB,CAAC,OAAO,EAAEP,WAAW,CAAC;MAClDK,QAAQ,CAACE,mBAAmB,CAAC,YAAY,EAAEP,WAAW,CAAC;IACzD,CAAC;EACH,CAAC,EAAE,CAACP,OAAO,CAAC,CAAC;EAEb,MAAMe,SAAS,GAAG;IAChB,WAAW,EAAE,aAAa;IAC1BnB;EACF,CAAC;EAED,MAAMoB,SAAS,GAAGhC,UAAU,CAC1BI,KAAK,CAAC6B,eAAe,EACrBnB,UAAU,IAAIV,KAAK,CAAC8B,mBAAmB,EACvC9B,KAAK,CAACY,OACR,CAAC;EAED,MAAMmB,IAAI,GAAGnB,OAAO,gBAClBrB,KAAA,CAAAyC,aAAA;IAAKC,SAAS,EAAEL,SAAU;IAAC,aAAU,cAAc;IAAC,cAAYvB,aAAc;IAAC6B,GAAG,EAAEpB;EAAW,gBAC7FvB,KAAA,CAAAyC,aAAA,CAAClC,UAAU,EAAK6B,SAAY,CACzB,CAAC,GACJ,IAAI;EAER,MAAMQ,sBAAsB,GAAG;IAC7BC,IAAI,EAAE,SAAS;IACf,YAAY,EAAEhC,eAAe;IAC7B,WAAW,EAAEO,QAAQ;IACrB0B,IAAI,EAAE,cAAc;IACpB/B,OAAO,EAAES,aAAa;IACtBZ,QAAQ;IACR8B,SAAS,EAAExB;EACb,CAAC;EAED,oBACElB,KAAA,CAAAyC,aAAA;IAAKC,SAAS,EAAEjC,KAAK,CAACsC,kBAAmB;IAAC,aAAU;EAAsB,gBACxE/C,KAAA,CAAAyC,aAAA,CAACnC,cAAc,EAAKsC,sBAAyB,CAAC,EAC7CJ,IACE,CAAC;AAEV,CAAC;AAED9B,qBAAqB,CAACF,SAAS,GAAAwC,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBAAG1C,SAAS;AAE3C,eAAeE,qBAAqB","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"favorite.d.ts","sourceRoot":"","sources":["../../../src/molecule/card/favorite.js"],"names":[],"mappings":";AAcA;;;;;;;;
|
|
1
|
+
{"version":3,"file":"favorite.d.ts","sourceRoot":"","sources":["../../../src/molecule/card/favorite.js"],"names":[],"mappings":";AAcA;;;;;;;;oCAkJC"}
|
|
@@ -65,19 +65,6 @@ const Favorite = ({
|
|
|
65
65
|
});
|
|
66
66
|
return () => window.removeEventListener('scroll', hide);
|
|
67
67
|
}, [toolTipIsVisible]);
|
|
68
|
-
|
|
69
|
-
// Hide tooltip when favorite state changes
|
|
70
|
-
// This prevents showing stale tooltip content
|
|
71
|
-
useEffect(() => {
|
|
72
|
-
if (toolTipIsVisible) {
|
|
73
|
-
setToolTipIsVisible(false);
|
|
74
|
-
}
|
|
75
|
-
if (mouseLeaveTimer) {
|
|
76
|
-
clearTimeout(mouseLeaveTimer);
|
|
77
|
-
setMouseLeaveTimer(undefined);
|
|
78
|
-
}
|
|
79
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
80
|
-
}, [favorite]);
|
|
81
68
|
const handleKeyPress = useCallback(event => {
|
|
82
69
|
toggleStateOnKeyPress(toolTipIsVisible, setToolTipIsVisible, buttonRef)(event);
|
|
83
70
|
}, [toolTipIsVisible]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"favorite.js","names":["React","useCallback","useEffect","useMemo","useRef","useState","PropTypes","classnames","v5","uuidV5","NovaCompositionNavigationMore","MoreIcon","NovaCompositionCoorpacademyCheck","CheckIcon","Provider","GetSkinFromContext","GetTranslateFromContext","ToolTip","toggleStateOnKeyPress","Button","style","Favorite","favorite","addFavoriteToolTip","removeFavoriteToolTip","className","ariaLabel","onFavoriteClick","_noop","disabled","legacyContext","skin","translate","handleFavoriteClick","e","stopPropagation","preventDefault","primaryColor","_get","darkColor","brandColor","buttonRef","allowToolTip","_isEmpty","favoriteButtonAnchorId","URL","undefined","toolTipContent","mouseLeaveTimer","setMouseLeaveTimer","toolTipIsVisible","setToolTipIsVisible","handleMouseOver","clearTimeout","_has","current","focus","handleMouseLeave","setTimeout","blur","hide","window","addEventListener","passive","removeEventListener","handleKeyPress","event","iconWrapperClassName","selected","icon","createElement","checkIcon","color","width","height","removeFromFavorite","moreIcon","addToFavorite","favoriteWrapper","type","buttonContentClassName","onClick","onKeyDown","onMouseLeave","onMouseOver","tabIndex","useButtonTag","useWrapper","fontSize","anchorId","TooltipContent","closeToolTipInformationTextAriaLabel","stickyOnKeyboardNavigation","propTypes","process","env","NODE_ENV","string","bool","func","shape","contextTypes","childContextTypes"],"sources":["../../../src/molecule/card/favorite.js"],"sourcesContent":["import React, {useCallback, useEffect, useMemo, useRef, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {v5 as uuidV5} from 'uuid';\nimport {get, has, isEmpty, noop} from 'lodash/fp';\nimport {\n NovaCompositionNavigationMore as MoreIcon,\n NovaCompositionCoorpacademyCheck as CheckIcon\n} from '@coorpacademy/nova-icons';\nimport Provider, {GetSkinFromContext, GetTranslateFromContext} from '../../atom/provider';\nimport ToolTip, {toggleStateOnKeyPress} from '../../atom/tooltip';\nimport Button from '../../atom/button';\nimport style from './favorite.css';\n\nconst Favorite = (\n {\n favorite,\n addFavoriteToolTip,\n removeFavoriteToolTip,\n className,\n 'aria-label': ariaLabel = {},\n onFavoriteClick = noop,\n disabled\n },\n legacyContext\n) => {\n const skin = GetSkinFromContext(legacyContext);\n const translate = GetTranslateFromContext(legacyContext);\n const handleFavoriteClick = useCallback(\n e => {\n e.stopPropagation();\n e.preventDefault();\n if (!disabled) onFavoriteClick(e);\n },\n [disabled, onFavoriteClick]\n );\n\n const primaryColor = get('common.primary', skin);\n const darkColor = get('common.dark', skin);\n const brandColor = get('common.brand', skin);\n\n const buttonRef = useRef(null);\n\n const allowToolTip = useMemo(\n () => !isEmpty(removeFavoriteToolTip) && !isEmpty(addFavoriteToolTip),\n [addFavoriteToolTip, removeFavoriteToolTip]\n );\n\n // to be replaced by useId when React17 is bumped to React18\n const [favoriteButtonAnchorId] = useState(\n allowToolTip ? uuidV5('engaged-battle-', uuidV5.URL) : undefined\n );\n\n const toolTipContent = useMemo(\n // eslint-disable-next-line no-nested-ternary\n () => (allowToolTip ? (favorite ? removeFavoriteToolTip : addFavoriteToolTip) : null),\n [addFavoriteToolTip, favorite, removeFavoriteToolTip, allowToolTip]\n );\n\n const [mouseLeaveTimer, setMouseLeaveTimer] = useState(undefined);\n\n const [toolTipIsVisible, setToolTipIsVisible] = useState(false);\n\n const handleMouseOver = useCallback(() => {\n mouseLeaveTimer && clearTimeout(mouseLeaveTimer);\n /* istanbul ignore next */ has(['current', 'focus'], buttonRef) && buttonRef.current.focus();\n setToolTipIsVisible(true);\n }, [mouseLeaveTimer]);\n\n const handleMouseLeave = useCallback(() => {\n setMouseLeaveTimer(\n setTimeout(() => {\n setToolTipIsVisible(false);\n // @ts-expect-error (error: blur does not exists on type never)\n /* istanbul ignore next */ has(['current', 'blur'], buttonRef) && buttonRef.current.blur();\n }, 500)\n );\n }, []);\n\n useEffect(() => {\n if (!toolTipIsVisible) return;\n const hide = () => setToolTipIsVisible(false);\n if (typeof window === 'undefined') {\n return;\n }\n window.addEventListener('scroll', hide, {passive: true});\n return () => window.removeEventListener('scroll', hide);\n }, [toolTipIsVisible]);\n\n // Hide tooltip when favorite state changes\n // This prevents showing stale tooltip content\n useEffect(() => {\n if (toolTipIsVisible) {\n setToolTipIsVisible(false);\n }\n if (mouseLeaveTimer) {\n clearTimeout(mouseLeaveTimer);\n setMouseLeaveTimer(undefined);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [favorite]);\n\n const handleKeyPress = useCallback(\n event => {\n toggleStateOnKeyPress(toolTipIsVisible, setToolTipIsVisible, buttonRef)(event);\n },\n [toolTipIsVisible]\n );\n\n const iconWrapperClassName = useMemo(\n () => classnames(style.favorite, className, favorite && style.selected),\n [className, favorite]\n );\n const icon = useMemo(\n () =>\n favorite ? (\n <CheckIcon\n // eslint-disable-next-line css-modules/no-undef-class\n className={style.checkIcon}\n style={{color: brandColor}}\n width={13}\n height={13}\n data-testid=\"favorite-check-icon\"\n aria-label={ariaLabel.removeFromFavorite}\n />\n ) : (\n <MoreIcon\n className={style.moreIcon}\n style={{color: darkColor}}\n width={13}\n height={13}\n data-testid=\"favorite-add-icon\"\n aria-label={ariaLabel.addToFavorite}\n />\n ),\n [ariaLabel.addToFavorite, ariaLabel.removeFromFavorite, brandColor, darkColor, favorite]\n );\n\n return (\n <div className={style.favoriteWrapper} data-testid=\"favorite-wrapper\">\n <Button\n buttonRef={buttonRef}\n type=\"button\"\n data-for={favoriteButtonAnchorId}\n data-tooltip-place=\"left\"\n data-tip={allowToolTip}\n data-name=\"favorite\"\n data-testid=\"favorite-button\"\n aria-label={ariaLabel.favorite}\n buttonContentClassName={iconWrapperClassName}\n onClick={handleFavoriteClick}\n style={{\n color: primaryColor\n }}\n onKeyDown={handleKeyPress}\n onMouseLeave={handleMouseLeave}\n onMouseOver={handleMouseOver}\n tabIndex={0}\n useButtonTag\n useWrapper={false}\n >\n {icon}\n </Button>\n <ToolTip\n fontSize={12}\n anchorId={favoriteButtonAnchorId}\n toolTipIsVisible={toolTipIsVisible}\n TooltipContent={toolTipContent}\n closeToolTipInformationTextAriaLabel={translate('close_tooltip_information')}\n stickyOnKeyboardNavigation\n />\n </div>\n );\n};\n\nFavorite.propTypes = {\n className: PropTypes.string,\n favorite: PropTypes.bool,\n disabled: PropTypes.bool,\n addFavoriteToolTip: PropTypes.string,\n removeFavoriteToolTip: PropTypes.string,\n onFavoriteClick: PropTypes.func,\n 'aria-label': PropTypes.shape({\n favorite: PropTypes.string,\n addToFavorite: PropTypes.string,\n removeFromFavorite: PropTypes.string\n })\n};\n\nFavorite.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nexport default Favorite;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"favorite.js","names":["React","useCallback","useEffect","useMemo","useRef","useState","PropTypes","classnames","v5","uuidV5","NovaCompositionNavigationMore","MoreIcon","NovaCompositionCoorpacademyCheck","CheckIcon","Provider","GetSkinFromContext","GetTranslateFromContext","ToolTip","toggleStateOnKeyPress","Button","style","Favorite","favorite","addFavoriteToolTip","removeFavoriteToolTip","className","ariaLabel","onFavoriteClick","_noop","disabled","legacyContext","skin","translate","handleFavoriteClick","e","stopPropagation","preventDefault","primaryColor","_get","darkColor","brandColor","buttonRef","allowToolTip","_isEmpty","favoriteButtonAnchorId","URL","undefined","toolTipContent","mouseLeaveTimer","setMouseLeaveTimer","toolTipIsVisible","setToolTipIsVisible","handleMouseOver","clearTimeout","_has","current","focus","handleMouseLeave","setTimeout","blur","hide","window","addEventListener","passive","removeEventListener","handleKeyPress","event","iconWrapperClassName","selected","icon","createElement","checkIcon","color","width","height","removeFromFavorite","moreIcon","addToFavorite","favoriteWrapper","type","buttonContentClassName","onClick","onKeyDown","onMouseLeave","onMouseOver","tabIndex","useButtonTag","useWrapper","fontSize","anchorId","TooltipContent","closeToolTipInformationTextAriaLabel","stickyOnKeyboardNavigation","propTypes","process","env","NODE_ENV","string","bool","func","shape","contextTypes","childContextTypes"],"sources":["../../../src/molecule/card/favorite.js"],"sourcesContent":["import React, {useCallback, useEffect, useMemo, useRef, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {v5 as uuidV5} from 'uuid';\nimport {get, has, isEmpty, noop} from 'lodash/fp';\nimport {\n NovaCompositionNavigationMore as MoreIcon,\n NovaCompositionCoorpacademyCheck as CheckIcon\n} from '@coorpacademy/nova-icons';\nimport Provider, {GetSkinFromContext, GetTranslateFromContext} from '../../atom/provider';\nimport ToolTip, {toggleStateOnKeyPress} from '../../atom/tooltip';\nimport Button from '../../atom/button';\nimport style from './favorite.css';\n\nconst Favorite = (\n {\n favorite,\n addFavoriteToolTip,\n removeFavoriteToolTip,\n className,\n 'aria-label': ariaLabel = {},\n onFavoriteClick = noop,\n disabled\n },\n legacyContext\n) => {\n const skin = GetSkinFromContext(legacyContext);\n const translate = GetTranslateFromContext(legacyContext);\n const handleFavoriteClick = useCallback(\n e => {\n e.stopPropagation();\n e.preventDefault();\n if (!disabled) onFavoriteClick(e);\n },\n [disabled, onFavoriteClick]\n );\n\n const primaryColor = get('common.primary', skin);\n const darkColor = get('common.dark', skin);\n const brandColor = get('common.brand', skin);\n\n const buttonRef = useRef(null);\n\n const allowToolTip = useMemo(\n () => !isEmpty(removeFavoriteToolTip) && !isEmpty(addFavoriteToolTip),\n [addFavoriteToolTip, removeFavoriteToolTip]\n );\n\n // to be replaced by useId when React17 is bumped to React18\n const [favoriteButtonAnchorId] = useState(\n allowToolTip ? uuidV5('engaged-battle-', uuidV5.URL) : undefined\n );\n\n const toolTipContent = useMemo(\n // eslint-disable-next-line no-nested-ternary\n () => (allowToolTip ? (favorite ? removeFavoriteToolTip : addFavoriteToolTip) : null),\n [addFavoriteToolTip, favorite, removeFavoriteToolTip, allowToolTip]\n );\n\n const [mouseLeaveTimer, setMouseLeaveTimer] = useState(undefined);\n\n const [toolTipIsVisible, setToolTipIsVisible] = useState(false);\n\n const handleMouseOver = useCallback(() => {\n mouseLeaveTimer && clearTimeout(mouseLeaveTimer);\n /* istanbul ignore next */ has(['current', 'focus'], buttonRef) && buttonRef.current.focus();\n setToolTipIsVisible(true);\n }, [mouseLeaveTimer]);\n\n const handleMouseLeave = useCallback(() => {\n setMouseLeaveTimer(\n setTimeout(() => {\n setToolTipIsVisible(false);\n // @ts-expect-error (error: blur does not exists on type never)\n /* istanbul ignore next */ has(['current', 'blur'], buttonRef) && buttonRef.current.blur();\n }, 500)\n );\n }, []);\n\n useEffect(() => {\n if (!toolTipIsVisible) return;\n const hide = () => setToolTipIsVisible(false);\n if (typeof window === 'undefined') {\n return;\n }\n window.addEventListener('scroll', hide, {passive: true});\n return () => window.removeEventListener('scroll', hide);\n }, [toolTipIsVisible]);\n\n const handleKeyPress = useCallback(\n event => {\n toggleStateOnKeyPress(toolTipIsVisible, setToolTipIsVisible, buttonRef)(event);\n },\n [toolTipIsVisible]\n );\n\n const iconWrapperClassName = useMemo(\n () => classnames(style.favorite, className, favorite && style.selected),\n [className, favorite]\n );\n const icon = useMemo(\n () =>\n favorite ? (\n <CheckIcon\n // eslint-disable-next-line css-modules/no-undef-class\n className={style.checkIcon}\n style={{color: brandColor}}\n width={13}\n height={13}\n data-testid=\"favorite-check-icon\"\n aria-label={ariaLabel.removeFromFavorite}\n />\n ) : (\n <MoreIcon\n className={style.moreIcon}\n style={{color: darkColor}}\n width={13}\n height={13}\n data-testid=\"favorite-add-icon\"\n aria-label={ariaLabel.addToFavorite}\n />\n ),\n [ariaLabel.addToFavorite, ariaLabel.removeFromFavorite, brandColor, darkColor, favorite]\n );\n\n return (\n <div className={style.favoriteWrapper} data-testid=\"favorite-wrapper\">\n <Button\n buttonRef={buttonRef}\n type=\"button\"\n data-for={favoriteButtonAnchorId}\n data-tooltip-place=\"left\"\n data-tip={allowToolTip}\n data-name=\"favorite\"\n data-testid=\"favorite-button\"\n aria-label={ariaLabel.favorite}\n buttonContentClassName={iconWrapperClassName}\n onClick={handleFavoriteClick}\n style={{\n color: primaryColor\n }}\n onKeyDown={handleKeyPress}\n onMouseLeave={handleMouseLeave}\n onMouseOver={handleMouseOver}\n tabIndex={0}\n useButtonTag\n useWrapper={false}\n >\n {icon}\n </Button>\n <ToolTip\n fontSize={12}\n anchorId={favoriteButtonAnchorId}\n toolTipIsVisible={toolTipIsVisible}\n TooltipContent={toolTipContent}\n closeToolTipInformationTextAriaLabel={translate('close_tooltip_information')}\n stickyOnKeyboardNavigation\n />\n </div>\n );\n};\n\nFavorite.propTypes = {\n className: PropTypes.string,\n favorite: PropTypes.bool,\n disabled: PropTypes.bool,\n addFavoriteToolTip: PropTypes.string,\n removeFavoriteToolTip: PropTypes.string,\n onFavoriteClick: PropTypes.func,\n 'aria-label': PropTypes.shape({\n favorite: PropTypes.string,\n addToFavorite: PropTypes.string,\n removeFromFavorite: PropTypes.string\n })\n};\n\nFavorite.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nexport default Favorite;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -41,7 +41,6 @@ declare namespace CourseSections {
|
|
|
41
41
|
placeholder: PropTypes.Requireable<string>;
|
|
42
42
|
defaultValue: PropTypes.Requireable<string>;
|
|
43
43
|
disabled: PropTypes.Requireable<boolean>;
|
|
44
|
-
readOnly: PropTypes.Requireable<boolean>;
|
|
45
44
|
value: PropTypes.Requireable<string>;
|
|
46
45
|
hint: PropTypes.Requireable<string>;
|
|
47
46
|
error: PropTypes.Requireable<string>;
|
|
@@ -44,7 +44,6 @@ export namespace DragAndDrop {
|
|
|
44
44
|
defaultValue: PropTypes.Requireable<string>;
|
|
45
45
|
theme: PropTypes.Requireable<string>;
|
|
46
46
|
disabled: PropTypes.Requireable<boolean>;
|
|
47
|
-
readOnly: PropTypes.Requireable<boolean>;
|
|
48
47
|
value: PropTypes.Requireable<string>;
|
|
49
48
|
hint: PropTypes.Requireable<string>;
|
|
50
49
|
error: PropTypes.Requireable<string>;
|
|
@@ -25,7 +25,6 @@ export namespace UploadReport {
|
|
|
25
25
|
defaultValue: PropTypes.Requireable<string>;
|
|
26
26
|
theme: PropTypes.Requireable<string>;
|
|
27
27
|
disabled: PropTypes.Requireable<boolean>;
|
|
28
|
-
readOnly: PropTypes.Requireable<boolean>;
|
|
29
28
|
value: PropTypes.Requireable<string>;
|
|
30
29
|
hint: PropTypes.Requireable<string>;
|
|
31
30
|
error: PropTypes.Requireable<string>;
|
|
@@ -17,7 +17,6 @@ declare class Filters extends React.Component<any, any, any> {
|
|
|
17
17
|
className: PropTypes.Requireable<string>;
|
|
18
18
|
borderClassName: PropTypes.Requireable<string>;
|
|
19
19
|
disabled: PropTypes.Requireable<boolean>;
|
|
20
|
-
readOnly: PropTypes.Requireable<boolean>;
|
|
21
20
|
multiple: PropTypes.Requireable<boolean>;
|
|
22
21
|
description: PropTypes.Requireable<string>;
|
|
23
22
|
required: PropTypes.Requireable<boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule/filters/index.js"],"names":[],"mappings":";AASA;IACE
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule/filters/index.js"],"names":[],"mappings":";AASA;IACE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAgBE;IAEF;;;;;;;;;;;;;;;;;;;;;;MAEE;IAEF,wBASC;IAPC;;;MAGC;IAMH,yBAcC;IAED,uBAYC;IAED,qBAOC;IAED,sBA4FC;CACF"}
|
|
@@ -30,7 +30,7 @@ const SkillPickerModal = (props, context) => {
|
|
|
30
30
|
const detectScrollbar = true;
|
|
31
31
|
const [sortedSkills, setSortedSkills] = useState(_sortBy(skill => skillsLocales[skill], skills));
|
|
32
32
|
const [currentSort, setCurrentSort] = useState('alphabetical');
|
|
33
|
-
const [selectedSkillList, setSelectedSkillList] = useState(selectedSkills
|
|
33
|
+
const [selectedSkillList, setSelectedSkillList] = useState(selectedSkills);
|
|
34
34
|
const handleCancel = useCallback(() => {
|
|
35
35
|
setSelectedSkillList(selectedSkills);
|
|
36
36
|
onCancel();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","useMemo","useState","useCallback","useEffect","PropTypes","BaseModal","Chip","Loader","Select","Provider","style","SkillPickerModal","props","context","skills","selectedSkills","skillsLocales","skillsScore","isOpen","isLoading","maxSelectedSkills","minSelectedSkills","onCancel","onConfirm","onClose","translate","detectScrollbar","sortedSkills","setSortedSkills","_sortBy","skill","currentSort","setCurrentSort","selectedSkillList","setSelectedSkillList","handleCancel","handleClose","skillProgressAvailable","_some","skillList","map","skillTitle","skillRef","focus","includes","score","isError","length","footer","footerDescription","skillNumber","text","cancelButton","label","disabled","confirmButton","iconName","sorting","theme","options","value","name","selected","onChange","prev","createElement","title","description","headerIcon","backgroundColor","className","skillPickerContainer","loaderContainer","loader","Fragment","ctaWrapper","sortWrapper","_extends","display","gap","flexWrap","index","handleChipClick","newSelectedSkillList","_filter","selectedSkill","subText","toFixed","onClick","key","contextTypes","childContextTypes","propTypes","process","env","NODE_ENV","arrayOf","string","objectOf","number","bool","func"],"sources":["../../../src/molecule/skill-picker-modal/index.js"],"sourcesContent":["import React, {useMemo, useState, useCallback, useEffect} from 'react';\nimport PropTypes from 'prop-types';\nimport {filter, some, sortBy} from 'lodash/fp';\nimport BaseModal from '../base-modal';\nimport Chip from '../../atom/chip';\nimport Loader from '../../atom/loader';\nimport Select from '../../atom/select';\nimport Provider from '../../atom/provider';\nimport style from './style.css';\n\nconst SkillPickerModal = (props, context) => {\n const {\n skills,\n selectedSkills,\n skillsLocales,\n skillsScore,\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 detectScrollbar = true;\n const [sortedSkills, setSortedSkills] = useState(sortBy(skill => skillsLocales[skill], skills));\n const [currentSort, setCurrentSort] = useState('alphabetical');\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 skillProgressAvailable = some(skill => skillsScore[skill] > 0, skills);\n\n const skillList = useMemo(() => {\n return sortedSkills.map(skill => {\n return {\n skillTitle: skillsLocales[skill],\n skillRef: skill,\n focus: selectedSkillList.includes(skill),\n score: skillsScore[skill]\n };\n });\n }, [sortedSkills, selectedSkillList, skillsLocales, skillsScore]);\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 const sorting = useMemo(\n () => ({\n theme: 'skillDetail',\n options: ['alphabetical', 'progress'].map(value => ({\n name: value === 'progress' ? translate('progress') : translate('alphabetical'),\n value,\n selected: currentSort === value\n })),\n onChange: value => setCurrentSort(value)\n }),\n [currentSort, translate]\n );\n\n useEffect(() => {\n // eslint-disable-next-line lodash-fp/no-extraneous-function-wrapping\n setSortedSkills(prev =>\n sortBy(\n skill => (currentSort === 'progress' ? -skillsScore[skill] : skillsLocales[skill]),\n prev\n )\n );\n }, [currentSort, skillsScore, skillsLocales, setSortedSkills]);\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 detectScrollbar={detectScrollbar}\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 className={style.ctaWrapper}>\n <div>{`${selectedSkillList.length} ${translate('selected')}`}</div>\n {skillProgressAvailable ? (\n <div className={style.sortWrapper}>\n {translate('sort_by')}\n <Select {...sorting} aria-label=\"All courses sort\" />\n </div>\n ) : null}\n </div>\n <div style={{display: 'flex', gap: '16px', flexWrap: 'wrap'}}>\n {skillList.map((skill, index) => {\n const {skillTitle, skillRef, focus, score} = 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 {...(skillProgressAvailable ? {subText: `${score.toFixed(1)}%`} : {})}\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 skillsScore: PropTypes.objectOf(PropTypes.number),\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,KAAK,IAAGC,OAAO,EAAEC,QAAQ,EAAEC,WAAW,EAAEC,SAAS,QAAO,OAAO;AACtE,OAAOC,SAAS,MAAM,YAAY;AAElC,OAAOC,SAAS,MAAM,eAAe;AACrC,OAAOC,IAAI,MAAM,iBAAiB;AAClC,OAAOC,MAAM,MAAM,mBAAmB;AACtC,OAAOC,MAAM,MAAM,mBAAmB;AACtC,OAAOC,QAAQ,MAAM,qBAAqB;AAC1C,OAAOC,KAAK,MAAM,aAAa;AAE/B,MAAMC,gBAAgB,GAAGA,CAACC,KAAK,EAAEC,OAAO,KAAK;EAC3C,MAAM;IACJC,MAAM;IACNC,cAAc;IACdC,aAAa;IACbC,WAAW;IACXC,MAAM;IACNC,SAAS;IACTC,iBAAiB,GAAG,CAAC;IACrBC,iBAAiB,GAAG,CAAC;IACrBC,QAAQ;IACRC,SAAS;IACTC;EACF,CAAC,GAAGZ,KAAK;EACT,MAAM;IAACa;EAAS,CAAC,GAAGZ,OAAO;EAE3B,MAAMa,eAAe,GAAG,IAAI;EAC5B,MAAM,CAACC,YAAY,EAAEC,eAAe,CAAC,GAAG3B,QAAQ,CAAC4B,OAAA,CAAOC,KAAK,IAAId,aAAa,CAACc,KAAK,CAAC,EAAEhB,MAAM,CAAC,CAAC;EAC/F,MAAM,CAACiB,WAAW,EAAEC,cAAc,CAAC,GAAG/B,QAAQ,CAAC,cAAc,CAAC;EAC9D,MAAM,CAACgC,iBAAiB,EAAEC,oBAAoB,CAAC,GAAGjC,QAAQ,CAACc,cAAc,IAAI,EAAE,CAAC;EAEhF,MAAMoB,YAAY,GAAGjC,WAAW,CAAC,MAAM;IACrCgC,oBAAoB,CAACnB,cAAc,CAAC;IACpCO,QAAQ,CAAC,CAAC;EACZ,CAAC,EAAE,CAACY,oBAAoB,EAAEnB,cAAc,EAAEO,QAAQ,CAAC,CAAC;EAEpD,MAAMc,WAAW,GAAGlC,WAAW,CAAC,MAAM;IACpCgC,oBAAoB,CAACnB,cAAc,CAAC;IACpCS,OAAO,CAAC,CAAC;EACX,CAAC,EAAE,CAACU,oBAAoB,EAAEnB,cAAc,EAAES,OAAO,CAAC,CAAC;EAEnD,MAAMa,sBAAsB,GAAGC,KAAA,CAAKR,KAAK,IAAIb,WAAW,CAACa,KAAK,CAAC,GAAG,CAAC,EAAEhB,MAAM,CAAC;EAE5E,MAAMyB,SAAS,GAAGvC,OAAO,CAAC,MAAM;IAC9B,OAAO2B,YAAY,CAACa,GAAG,CAACV,KAAK,IAAI;MAC/B,OAAO;QACLW,UAAU,EAAEzB,aAAa,CAACc,KAAK,CAAC;QAChCY,QAAQ,EAAEZ,KAAK;QACfa,KAAK,EAAEV,iBAAiB,CAACW,QAAQ,CAACd,KAAK,CAAC;QACxCe,KAAK,EAAE5B,WAAW,CAACa,KAAK;MAC1B,CAAC;IACH,CAAC,CAAC;EACJ,CAAC,EAAE,CAACH,YAAY,EAAEM,iBAAiB,EAAEjB,aAAa,EAAEC,WAAW,CAAC,CAAC;EAEjE,MAAM6B,OAAO,GAAG9C,OAAO,CACrB,MACEiC,iBAAiB,CAACc,MAAM,GAAG3B,iBAAiB,IAAIa,iBAAiB,CAACc,MAAM,GAAG1B,iBAAiB,EAC9F,CAACY,iBAAiB,EAAEb,iBAAiB,EAAEC,iBAAiB,CAC1D,CAAC;EAED,MAAM2B,MAAM,GAAGhD,OAAO,CAAC,MAAM;IAC3B,MAAMiD,iBAAiB,GACrBhB,iBAAiB,CAACc,MAAM,GAAG3B,iBAAiB,GACxCK,SAAS,CAAC,sCAAsC,EAAE;MAChDyB,WAAW,EAAEjB,iBAAiB,CAACc,MAAM,GAAG3B;IAC1C,CAAC,CAAC,GACFK,SAAS,CAAC,gCAAgC,EAAE;MAC1CyB,WAAW,EAAE7B,iBAAiB,GAAGY,iBAAiB,CAACc;IACrD,CAAC,CAAC;IACR,OAAO;MACLI,IAAI,EAAEhC,SAAS,IAAI,CAAC2B,OAAO,GAAG,EAAE,GAAGG,iBAAiB;MACpDH,OAAO;MACPM,YAAY,EAAE;QACZ9B,QAAQ,EAAEa,YAAY;QACtBkB,KAAK,EAAE5B,SAAS,CAAC,QAAQ,CAAC;QAC1B6B,QAAQ,EAAEnC,SAAS,IAAI2B;MACzB,CAAC;MACDS,aAAa,EAAE;QACbhC,SAAS,EAAEA,CAAA,KAAMA,SAAS,CAACU,iBAAiB,CAAC;QAC7CoB,KAAK,EAAE5B,SAAS,CAAC,SAAS,CAAC;QAC3B+B,QAAQ,EAAE,cAAc;QACxBF,QAAQ,EAAEnC,SAAS,IAAI2B;MACzB;IACF,CAAC;EACH,CAAC,EAAE,CACDA,OAAO,EACPX,YAAY,EACZZ,SAAS,EACTE,SAAS,EACTQ,iBAAiB,EACjBd,SAAS,EACTC,iBAAiB,EACjBC,iBAAiB,CAClB,CAAC;EAEF,MAAMoC,OAAO,GAAGzD,OAAO,CACrB,OAAO;IACL0D,KAAK,EAAE,aAAa;IACpBC,OAAO,EAAE,CAAC,cAAc,EAAE,UAAU,CAAC,CAACnB,GAAG,CAACoB,KAAK,KAAK;MAClDC,IAAI,EAAED,KAAK,KAAK,UAAU,GAAGnC,SAAS,CAAC,UAAU,CAAC,GAAGA,SAAS,CAAC,cAAc,CAAC;MAC9EmC,KAAK;MACLE,QAAQ,EAAE/B,WAAW,KAAK6B;IAC5B,CAAC,CAAC,CAAC;IACHG,QAAQ,EAAEH,KAAK,IAAI5B,cAAc,CAAC4B,KAAK;EACzC,CAAC,CAAC,EACF,CAAC7B,WAAW,EAAEN,SAAS,CACzB,CAAC;EAEDtB,SAAS,CAAC,MAAM;IACd;IACAyB,eAAe,CAACoC,IAAI,IAClBnC,OAAA,CACEC,KAAK,IAAKC,WAAW,KAAK,UAAU,GAAG,CAACd,WAAW,CAACa,KAAK,CAAC,GAAGd,aAAa,CAACc,KAAK,CAAE,EAClFkC,IACF,CACF,CAAC;EACH,CAAC,EAAE,CAACjC,WAAW,EAAEd,WAAW,EAAED,aAAa,EAAEY,eAAe,CAAC,CAAC;EAE9D,IAAK,CAACT,SAAS,IAAI,CAACL,MAAM,IAAK,CAACI,MAAM,EAAE,OAAO,IAAI;EAEnD,oBACEnB,KAAA,CAAAkE,aAAA,CAAC5D,SAAS;IACR6D,KAAK,EAAEzC,SAAS,CAAC,aAAa,CAAE;IAChC0C,WAAW,EAAE1C,SAAS,CAAC,yBAAyB,CAAE;IAClDP,MAAM,EAAEA,MAAO;IACfM,OAAO,EAAEY,WAAY;IACrBY,MAAM,EAAEA,MAAO;IACfoB,UAAU,EAAE;MACVP,IAAI,EAAE,gBAAgB;MACtBQ,eAAe,EAAE;IACnB,CAAE;IACF3C,eAAe,EAAEA;EAAgB,gBAEjC3B,KAAA,CAAAkE,aAAA;IAAKK,SAAS,EAAE5D,KAAK,CAAC6D;EAAqB,GACxCpD,SAAS,gBACRpB,KAAA,CAAAkE,aAAA;IAAKK,SAAS,EAAE5D,KAAK,CAAC8D;EAAgB,gBACpCzE,KAAA,CAAAkE,aAAA,CAAC1D,MAAM;IAAC+D,SAAS,EAAE5D,KAAK,CAAC+D,MAAO;IAACf,KAAK,EAAC;EAAc,CAAE,CACpD,CAAC,gBAEN3D,KAAA,CAAAkE,aAAA,CAAAlE,KAAA,CAAA2E,QAAA,qBACE3E,KAAA,CAAAkE,aAAA;IAAKK,SAAS,EAAE5D,KAAK,CAACiE;EAAW,gBAC/B5E,KAAA,CAAAkE,aAAA,cAAM,GAAGhC,iBAAiB,CAACc,MAAM,IAAItB,SAAS,CAAC,UAAU,CAAC,EAAQ,CAAC,EAClEY,sBAAsB,gBACrBtC,KAAA,CAAAkE,aAAA;IAAKK,SAAS,EAAE5D,KAAK,CAACkE;EAAY,GAC/BnD,SAAS,CAAC,SAAS,CAAC,eACrB1B,KAAA,CAAAkE,aAAA,CAACzD,MAAM,EAAAqE,QAAA,KAAKpB,OAAO;IAAE,cAAW;EAAkB,EAAE,CACjD,CAAC,GACJ,IACD,CAAC,eACN1D,KAAA,CAAAkE,aAAA;IAAKvD,KAAK,EAAE;MAACoE,OAAO,EAAE,MAAM;MAAEC,GAAG,EAAE,MAAM;MAAEC,QAAQ,EAAE;IAAM;EAAE,GAC1DzC,SAAS,CAACC,GAAG,CAAC,CAACV,KAAK,EAAEmD,KAAK,KAAK;IAC/B,MAAM;MAACxC,UAAU;MAAEC,QAAQ;MAAEC,KAAK;MAAEE;IAAK,CAAC,GAAGf,KAAK;IAClD,SAASoD,eAAeA,CAAA,EAAG;MACzB,MAAMC,oBAAoB,GAAGxC,KAAK,GAC9ByC,OAAA,CAAOC,aAAa,IAAIA,aAAa,KAAK3C,QAAQ,EAAET,iBAAiB,CAAC,GACtE,CAAC,GAAGA,iBAAiB,EAAEH,KAAK,CAACY,QAAQ,CAAC;MAC1CR,oBAAoB,CAACiD,oBAAoB,CAAC;IAC5C;IAEA,oBACEpF,KAAA,CAAAkE,aAAA,CAAC3D,IAAI,EAAAuE,QAAA,KACExC,sBAAsB,GAAG;MAACiD,OAAO,EAAE,GAAGzC,KAAK,CAAC0C,OAAO,CAAC,CAAC,CAAC;IAAG,CAAC,GAAG,CAAC,CAAC;MACpEpC,IAAI,EAAEV,UAAW;MACjBqB,QAAQ,EAAEnB,KAAM;MAChB6C,OAAO,EAAEN,eAAgB;MACzBO,GAAG,EAAER,KAAM;MACXZ,eAAe,EAAC;IAAM,EACvB,CAAC;EAEN,CAAC,CACE,CACL,CAED,CACI,CAAC;AAEhB,CAAC;AAED1D,gBAAgB,CAAC+E,YAAY,GAAG;EAC9BjE,SAAS,EAAEhB,QAAQ,CAACkF,iBAAiB,CAAClE;AACxC,CAAC;AAEDd,gBAAgB,CAACiF,SAAS,GAAAC,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBAAG;EAC3BjF,MAAM,EAAEV,SAAS,CAAC4F,OAAO,CAAC5F,SAAS,CAAC6F,MAAM,CAAC;EAC3ClF,cAAc,EAAEX,SAAS,CAAC4F,OAAO,CAAC5F,SAAS,CAAC6F,MAAM,CAAC;EACnDjF,aAAa,EAAEZ,SAAS,CAAC8F,QAAQ,CAAC9F,SAAS,CAAC6F,MAAM,CAAC;EACnDhF,WAAW,EAAEb,SAAS,CAAC8F,QAAQ,CAAC9F,SAAS,CAAC+F,MAAM,CAAC;EACjDjF,MAAM,EAAEd,SAAS,CAACgG,IAAI;EACtBjF,SAAS,EAAEf,SAAS,CAACgG,IAAI;EACzB/E,iBAAiB,EAAEjB,SAAS,CAAC+F,MAAM;EACnC/E,iBAAiB,EAAEhB,SAAS,CAAC+F,MAAM;EACnC7E,QAAQ,EAAElB,SAAS,CAACiG,IAAI;EACxB9E,SAAS,EAAEnB,SAAS,CAACiG,IAAI;EACzB7E,OAAO,EAAEpB,SAAS,CAACiG;AACrB,CAAC;AAED,eAAe1F,gBAAgB","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","useMemo","useState","useCallback","useEffect","PropTypes","BaseModal","Chip","Loader","Select","Provider","style","SkillPickerModal","props","context","skills","selectedSkills","skillsLocales","skillsScore","isOpen","isLoading","maxSelectedSkills","minSelectedSkills","onCancel","onConfirm","onClose","translate","detectScrollbar","sortedSkills","setSortedSkills","_sortBy","skill","currentSort","setCurrentSort","selectedSkillList","setSelectedSkillList","handleCancel","handleClose","skillProgressAvailable","_some","skillList","map","skillTitle","skillRef","focus","includes","score","isError","length","footer","footerDescription","skillNumber","text","cancelButton","label","disabled","confirmButton","iconName","sorting","theme","options","value","name","selected","onChange","prev","createElement","title","description","headerIcon","backgroundColor","className","skillPickerContainer","loaderContainer","loader","Fragment","ctaWrapper","sortWrapper","_extends","display","gap","flexWrap","index","handleChipClick","newSelectedSkillList","_filter","selectedSkill","subText","toFixed","onClick","key","contextTypes","childContextTypes","propTypes","process","env","NODE_ENV","arrayOf","string","objectOf","number","bool","func"],"sources":["../../../src/molecule/skill-picker-modal/index.js"],"sourcesContent":["import React, {useMemo, useState, useCallback, useEffect} from 'react';\nimport PropTypes from 'prop-types';\nimport {filter, some, sortBy} from 'lodash/fp';\nimport BaseModal from '../base-modal';\nimport Chip from '../../atom/chip';\nimport Loader from '../../atom/loader';\nimport Select from '../../atom/select';\nimport Provider from '../../atom/provider';\nimport style from './style.css';\n\nconst SkillPickerModal = (props, context) => {\n const {\n skills,\n selectedSkills,\n skillsLocales,\n skillsScore,\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 detectScrollbar = true;\n const [sortedSkills, setSortedSkills] = useState(sortBy(skill => skillsLocales[skill], skills));\n const [currentSort, setCurrentSort] = useState('alphabetical');\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 skillProgressAvailable = some(skill => skillsScore[skill] > 0, skills);\n\n const skillList = useMemo(() => {\n return sortedSkills.map(skill => {\n return {\n skillTitle: skillsLocales[skill],\n skillRef: skill,\n focus: selectedSkillList.includes(skill),\n score: skillsScore[skill]\n };\n });\n }, [sortedSkills, selectedSkillList, skillsLocales, skillsScore]);\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 const sorting = useMemo(\n () => ({\n theme: 'skillDetail',\n options: ['alphabetical', 'progress'].map(value => ({\n name: value === 'progress' ? translate('progress') : translate('alphabetical'),\n value,\n selected: currentSort === value\n })),\n onChange: value => setCurrentSort(value)\n }),\n [currentSort, translate]\n );\n\n useEffect(() => {\n // eslint-disable-next-line lodash-fp/no-extraneous-function-wrapping\n setSortedSkills(prev =>\n sortBy(\n skill => (currentSort === 'progress' ? -skillsScore[skill] : skillsLocales[skill]),\n prev\n )\n );\n }, [currentSort, skillsScore, skillsLocales, setSortedSkills]);\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 detectScrollbar={detectScrollbar}\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 className={style.ctaWrapper}>\n <div>{`${selectedSkillList.length} ${translate('selected')}`}</div>\n {skillProgressAvailable ? (\n <div className={style.sortWrapper}>\n {translate('sort_by')}\n <Select {...sorting} aria-label=\"All courses sort\" />\n </div>\n ) : null}\n </div>\n <div style={{display: 'flex', gap: '16px', flexWrap: 'wrap'}}>\n {skillList.map((skill, index) => {\n const {skillTitle, skillRef, focus, score} = 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 {...(skillProgressAvailable ? {subText: `${score.toFixed(1)}%`} : {})}\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 skillsScore: PropTypes.objectOf(PropTypes.number),\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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","ignoreList":[]}
|
|
@@ -97,7 +97,6 @@ declare namespace TitleAndCheckBoxWrapper {
|
|
|
97
97
|
placeholder: PropTypes.Requireable<string>;
|
|
98
98
|
defaultValue: PropTypes.Requireable<string>;
|
|
99
99
|
disabled: PropTypes.Requireable<boolean>;
|
|
100
|
-
readOnly: PropTypes.Requireable<boolean>;
|
|
101
100
|
value: PropTypes.Requireable<string>;
|
|
102
101
|
hint: PropTypes.Requireable<string>;
|
|
103
102
|
error: PropTypes.Requireable<string>;
|
|
@@ -18,7 +18,6 @@ declare namespace TranslationModal {
|
|
|
18
18
|
placeholder: PropTypes.Requireable<string>;
|
|
19
19
|
defaultValue: PropTypes.Requireable<string>;
|
|
20
20
|
disabled: PropTypes.Requireable<boolean>;
|
|
21
|
-
readOnly: PropTypes.Requireable<boolean>;
|
|
22
21
|
value: PropTypes.Requireable<string>;
|
|
23
22
|
hint: PropTypes.Requireable<string>;
|
|
24
23
|
error: PropTypes.Requireable<string>;
|
|
@@ -37,7 +36,6 @@ declare namespace TranslationModal {
|
|
|
37
36
|
title: PropTypes.Requireable<string>;
|
|
38
37
|
name: PropTypes.Requireable<string>;
|
|
39
38
|
disabled: PropTypes.Requireable<boolean>;
|
|
40
|
-
readOnly: PropTypes.Requireable<boolean>;
|
|
41
39
|
value: PropTypes.Requireable<string>;
|
|
42
40
|
hint: PropTypes.Requireable<string>;
|
|
43
41
|
error: PropTypes.Requireable<string>;
|
|
@@ -56,7 +54,6 @@ declare namespace TranslationModal {
|
|
|
56
54
|
placeholder: PropTypes.Requireable<string>;
|
|
57
55
|
defaultValue: PropTypes.Requireable<string>;
|
|
58
56
|
disabled: PropTypes.Requireable<boolean>;
|
|
59
|
-
readOnly: PropTypes.Requireable<boolean>;
|
|
60
57
|
value: PropTypes.Requireable<string>;
|
|
61
58
|
hint: PropTypes.Requireable<string>;
|
|
62
59
|
error: PropTypes.Requireable<string>;
|
|
@@ -75,7 +72,6 @@ declare namespace TranslationModal {
|
|
|
75
72
|
title: PropTypes.Requireable<string>;
|
|
76
73
|
name: PropTypes.Requireable<string>;
|
|
77
74
|
disabled: PropTypes.Requireable<boolean>;
|
|
78
|
-
readOnly: PropTypes.Requireable<boolean>;
|
|
79
75
|
value: PropTypes.Requireable<string>;
|
|
80
76
|
hint: PropTypes.Requireable<string>;
|
|
81
77
|
error: PropTypes.Requireable<string>;
|
|
@@ -11,16 +11,16 @@ const renderInputGroup = ({
|
|
|
11
11
|
title,
|
|
12
12
|
inputProps,
|
|
13
13
|
textAreaProps,
|
|
14
|
-
|
|
14
|
+
disabled
|
|
15
15
|
}) => {
|
|
16
16
|
return /*#__PURE__*/React.createElement("div", {
|
|
17
17
|
className: style.inputGroup
|
|
18
18
|
}, /*#__PURE__*/React.createElement("div", {
|
|
19
19
|
className: style.title
|
|
20
20
|
}, title), /*#__PURE__*/React.createElement(InputText, _extends({}, inputProps, {
|
|
21
|
-
|
|
21
|
+
disabled: disabled
|
|
22
22
|
})), /*#__PURE__*/React.createElement(TextArea, _extends({}, textAreaProps, {
|
|
23
|
-
|
|
23
|
+
disabled: disabled
|
|
24
24
|
})));
|
|
25
25
|
};
|
|
26
26
|
const TranslationModal = (props, context) => {
|
|
@@ -63,7 +63,7 @@ const TranslationModal = (props, context) => {
|
|
|
63
63
|
confirmButton: {
|
|
64
64
|
onConfirm,
|
|
65
65
|
label: translate('confirm'),
|
|
66
|
-
iconName: '
|
|
66
|
+
iconName: 'plus',
|
|
67
67
|
disabled,
|
|
68
68
|
color: COLORS.cm_primary_blue
|
|
69
69
|
}
|
|
@@ -90,14 +90,14 @@ const TranslationModal = (props, context) => {
|
|
|
90
90
|
title: inputLanguage,
|
|
91
91
|
inputProps: sourceInputText,
|
|
92
92
|
textAreaProps: sourceTextArea,
|
|
93
|
-
|
|
93
|
+
disabled: true
|
|
94
94
|
}), /*#__PURE__*/React.createElement("div", {
|
|
95
95
|
className: style.separator
|
|
96
96
|
}), renderInputGroup({
|
|
97
97
|
title: outputLanguage,
|
|
98
98
|
inputProps: targetInputText,
|
|
99
99
|
textAreaProps: targetTextArea,
|
|
100
|
-
|
|
100
|
+
disabled: readOnly
|
|
101
101
|
}))));
|
|
102
102
|
};
|
|
103
103
|
TranslationModal.contextTypes = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","useMemo","useCallback","PropTypes","BaseModal","Provider","COLORS","InputText","TextArea","style","renderInputGroup","title","inputProps","textAreaProps","
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","useMemo","useCallback","PropTypes","BaseModal","Provider","COLORS","InputText","TextArea","style","renderInputGroup","title","inputProps","textAreaProps","disabled","createElement","className","inputGroup","_extends","TranslationModal","props","context","isOpen","onCancel","onConfirm","onClose","source","inputText","sourceInputText","textArea","sourceTextArea","inputLanguage","target","targetInputText","targetTextArea","language","outputLanguage","readOnly","translate","detectScrollbar","handleCancel","handleClose","footer","cancelButton","label","confirmButton","iconName","color","cm_primary_blue","description","headerIcon","name","backgroundColor","translationModal","horizontalSection","separator","contextTypes","childContextTypes","propTypes","process","env","NODE_ENV","bool","func","shape","theme","string"],"sources":["../../../src/molecule/translation-modal/index.js"],"sourcesContent":["import React, {useMemo, useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport BaseModal from '../base-modal';\nimport Provider from '../../atom/provider';\nimport {COLORS} from '../../variables/colors';\nimport InputText from '../../atom/input-text';\nimport TextArea from '../../atom/input-textarea';\nimport style from './style.css';\n\nconst renderInputGroup = ({title, inputProps, textAreaProps, disabled}) => {\n return (\n <div className={style.inputGroup}>\n <div className={style.title}>{title}</div>\n <InputText {...inputProps} disabled={disabled} />\n <TextArea {...textAreaProps} disabled={disabled} />\n </div>\n );\n};\n\nconst TranslationModal = (props, context) => {\n const {\n isOpen,\n onCancel,\n onConfirm,\n onClose,\n disabled = false,\n source: {inputText: sourceInputText, textArea: sourceTextArea, inputLanguage},\n target: {inputText: targetInputText, textArea: targetTextArea, language: outputLanguage},\n readOnly = false\n } = props;\n const {translate} = context;\n\n const detectScrollbar = true;\n\n const handleCancel = useCallback(() => {\n onCancel();\n }, [onCancel]);\n\n const handleClose = useCallback(() => {\n onClose();\n }, [onClose]);\n\n const footer = useMemo(() => {\n const cancelButton = {\n onCancel: handleCancel,\n label: translate(readOnly ? 'close' : 'cancel')\n };\n return {\n cancelButton,\n ...(!readOnly && {\n confirmButton: {\n onConfirm,\n label: translate('confirm'),\n iconName: 'plus',\n disabled,\n color: COLORS.cm_primary_blue\n }\n })\n };\n }, [handleCancel, onConfirm, translate, readOnly, disabled]);\n\n if (!isOpen) return null;\n\n return (\n <BaseModal\n title={translate('translation_title')}\n description={translate('translation_description')}\n isOpen={isOpen}\n onClose={handleClose}\n footer={footer}\n headerIcon={{\n name: 'language',\n backgroundColor: '#D6E6FF'\n }}\n detectScrollbar={detectScrollbar}\n >\n <div className={style.translationModal}>\n <div className={style.horizontalSection}>\n {renderInputGroup({\n title: inputLanguage,\n inputProps: sourceInputText,\n textAreaProps: sourceTextArea,\n disabled: true\n })}\n\n <div className={style.separator} />\n\n {renderInputGroup({\n title: outputLanguage,\n inputProps: targetInputText,\n textAreaProps: targetTextArea,\n disabled: readOnly\n })}\n </div>\n </div>\n </BaseModal>\n );\n};\n\nTranslationModal.contextTypes = {\n translate: Provider.childContextTypes.translate\n};\n\nTranslationModal.propTypes = {\n isOpen: PropTypes.bool,\n onCancel: PropTypes.func,\n onConfirm: PropTypes.func,\n onClose: PropTypes.func,\n disabled: PropTypes.bool,\n source: PropTypes.shape({\n inputText: PropTypes.shape({\n ...InputText.propTypes,\n theme: PropTypes.string\n }),\n textArea: PropTypes.shape({\n ...TextArea.propTypes,\n theme: PropTypes.string\n }),\n inputLanguage: PropTypes.string\n }),\n target: PropTypes.shape({\n inputText: PropTypes.shape({\n ...InputText.propTypes,\n theme: PropTypes.string\n }),\n textArea: PropTypes.shape({\n ...TextArea.propTypes,\n theme: PropTypes.string\n }),\n language: PropTypes.string\n }),\n readOnly: PropTypes.bool\n};\n\nexport default TranslationModal;\n"],"mappings":"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","ignoreList":[]}
|