@coorpacademy/components 11.32.48-testCLXP-193.75 → 11.32.49
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 +2 -0
- package/es/atom/button-link/index.d.ts.map +1 -1
- package/es/atom/button-link/index.js +26 -4
- package/es/atom/button-link/index.js.map +1 -1
- package/es/atom/button-link/style.css +14 -0
- package/es/atom/button-link/types.d.ts +4 -0
- package/es/atom/button-link/types.d.ts.map +1 -1
- package/es/atom/button-link/types.js +2 -0
- package/es/atom/button-link/types.js.map +1 -1
- package/es/atom/input-switch/style.css +1 -9
- package/es/molecule/banner/index.d.ts +4 -5
- package/es/molecule/banner/index.d.ts.map +1 -1
- package/es/molecule/banner/index.js +37 -93
- package/es/molecule/banner/index.js.map +1 -1
- package/es/molecule/banner/style.css +5 -27
- 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 +52 -4
- package/es/molecule/base-modal/index.js.map +1 -1
- package/es/molecule/base-modal/style.css +7 -0
- package/es/molecule/cm-popin/types.d.ts +4 -0
- package/es/molecule/cm-popin/types.d.ts.map +1 -1
- package/es/molecule/expandible-actionable-table/index.d.ts +2 -0
- package/es/molecule/expandible-actionable-table/index.d.ts.map +1 -1
- package/es/molecule/expandible-actionable-table/types.d.ts +2 -0
- package/es/molecule/expandible-actionable-table/types.d.ts.map +1 -1
- package/es/molecule/progress-wrapper/style.css +2 -10
- package/es/molecule/skill-picker-modal/index.d.ts.map +1 -1
- package/es/molecule/skill-picker-modal/index.js +3 -1
- package/es/molecule/skill-picker-modal/index.js.map +1 -1
- package/es/molecule/translation-modal/index.d.ts +85 -0
- package/es/molecule/translation-modal/index.d.ts.map +1 -0
- package/es/molecule/translation-modal/index.js +149 -0
- package/es/molecule/translation-modal/index.js.map +1 -0
- package/es/molecule/translation-modal/style.css +45 -0
- package/es/organism/list-items/index.d.ts +4 -0
- package/es/organism/setup-header/index.d.ts +8 -0
- package/es/organism/wizard-contents/index.d.ts +6 -0
- package/es/template/app-player/loading/index.d.ts +4 -0
- package/es/template/app-player/player/index.d.ts +8 -0
- package/es/template/app-player/player/slides/index.d.ts +4 -0
- package/es/template/app-player/player/slides/index.d.ts.map +1 -1
- package/es/template/app-player/popin-correction/index.d.ts +4 -0
- package/es/template/app-player/popin-correction/index.d.ts.map +1 -1
- package/es/template/app-player/popin-end/index.d.ts +4 -0
- package/es/template/app-review/index.d.ts +4 -0
- package/es/template/app-review/index.d.ts.map +1 -1
- package/es/template/app-review/player/prop-types.d.ts +4 -0
- package/es/template/app-review/player/prop-types.d.ts.map +1 -1
- package/es/template/app-review/prop-types.d.ts +4 -0
- package/es/template/app-review/prop-types.d.ts.map +1 -1
- package/es/template/back-office/brand-create/index.d.ts +8 -0
- package/es/template/back-office/brand-create/index.d.ts.map +1 -1
- package/es/template/back-office/brand-list/index.d.ts +8 -0
- package/es/template/back-office/brand-list/index.d.ts.map +1 -1
- package/es/template/back-office/brand-update/index.d.ts +26 -5
- package/es/template/back-office/dashboard-preview/index.d.ts +8 -0
- package/es/template/back-office/layout/index.d.ts +8 -0
- package/es/template/back-office/layout/index.d.ts.map +1 -1
- package/es/template/certification-detail/index.js +2 -2
- package/es/template/certification-detail/index.js.map +1 -1
- package/es/template/common/dashboard/index.d.ts +8 -0
- package/es/template/common/search-page/index.d.ts +4 -0
- package/es/template/external-course/index.d.ts +4 -0
- package/es/template/playlist-detail/index.d.ts +0 -1
- package/es/template/playlist-detail/index.d.ts.map +1 -1
- package/es/template/playlist-detail/index.js +3 -6
- package/es/template/playlist-detail/index.js.map +1 -1
- package/es/template/skill-detail/all-courses.css +0 -4
- package/es/template/skill-detail/all-courses.d.ts +0 -1
- package/es/template/skill-detail/all-courses.d.ts.map +1 -1
- package/es/template/skill-detail/all-courses.js +2 -15
- package/es/template/skill-detail/all-courses.js.map +1 -1
- package/es/template/skill-detail/index.d.ts +0 -1
- package/es/template/skill-detail/index.d.ts.map +1 -1
- package/es/template/skill-detail/index.js +3 -6
- package/es/template/skill-detail/index.js.map +1 -1
- package/es/variables/colors.d.ts +0 -3
- package/es/variables/colors.d.ts.map +1 -1
- package/es/variables/colors.js +0 -3
- package/es/variables/colors.js.map +1 -1
- package/lib/atom/button-link/index.d.ts +2 -0
- package/lib/atom/button-link/index.d.ts.map +1 -1
- package/lib/atom/button-link/index.js +27 -4
- package/lib/atom/button-link/index.js.map +1 -1
- package/lib/atom/button-link/style.css +14 -0
- package/lib/atom/button-link/types.d.ts +4 -0
- package/lib/atom/button-link/types.d.ts.map +1 -1
- package/lib/atom/button-link/types.js +2 -0
- package/lib/atom/button-link/types.js.map +1 -1
- package/lib/atom/input-switch/style.css +1 -9
- package/lib/molecule/banner/index.d.ts +4 -5
- package/lib/molecule/banner/index.d.ts.map +1 -1
- package/lib/molecule/banner/index.js +38 -105
- package/lib/molecule/banner/index.js.map +1 -1
- package/lib/molecule/banner/style.css +5 -27
- 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 +50 -3
- package/lib/molecule/base-modal/index.js.map +1 -1
- package/lib/molecule/base-modal/style.css +7 -0
- package/lib/molecule/cm-popin/types.d.ts +4 -0
- package/lib/molecule/cm-popin/types.d.ts.map +1 -1
- package/lib/molecule/expandible-actionable-table/index.d.ts +2 -0
- package/lib/molecule/expandible-actionable-table/index.d.ts.map +1 -1
- package/lib/molecule/expandible-actionable-table/types.d.ts +2 -0
- package/lib/molecule/expandible-actionable-table/types.d.ts.map +1 -1
- package/lib/molecule/progress-wrapper/style.css +2 -10
- package/lib/molecule/skill-picker-modal/index.d.ts.map +1 -1
- package/lib/molecule/skill-picker-modal/index.js +3 -1
- package/lib/molecule/skill-picker-modal/index.js.map +1 -1
- package/lib/molecule/translation-modal/index.d.ts +85 -0
- package/lib/molecule/translation-modal/index.d.ts.map +1 -0
- package/lib/molecule/translation-modal/index.js +168 -0
- package/lib/molecule/translation-modal/index.js.map +1 -0
- package/lib/molecule/translation-modal/style.css +45 -0
- package/lib/organism/list-items/index.d.ts +4 -0
- package/lib/organism/setup-header/index.d.ts +8 -0
- package/lib/organism/wizard-contents/index.d.ts +6 -0
- package/lib/template/app-player/loading/index.d.ts +4 -0
- package/lib/template/app-player/player/index.d.ts +8 -0
- package/lib/template/app-player/player/slides/index.d.ts +4 -0
- package/lib/template/app-player/player/slides/index.d.ts.map +1 -1
- package/lib/template/app-player/popin-correction/index.d.ts +4 -0
- package/lib/template/app-player/popin-correction/index.d.ts.map +1 -1
- package/lib/template/app-player/popin-end/index.d.ts +4 -0
- package/lib/template/app-review/index.d.ts +4 -0
- package/lib/template/app-review/index.d.ts.map +1 -1
- package/lib/template/app-review/player/prop-types.d.ts +4 -0
- package/lib/template/app-review/player/prop-types.d.ts.map +1 -1
- package/lib/template/app-review/prop-types.d.ts +4 -0
- package/lib/template/app-review/prop-types.d.ts.map +1 -1
- package/lib/template/back-office/brand-create/index.d.ts +8 -0
- package/lib/template/back-office/brand-create/index.d.ts.map +1 -1
- package/lib/template/back-office/brand-list/index.d.ts +8 -0
- package/lib/template/back-office/brand-list/index.d.ts.map +1 -1
- package/lib/template/back-office/brand-update/index.d.ts +26 -5
- package/lib/template/back-office/dashboard-preview/index.d.ts +8 -0
- package/lib/template/back-office/layout/index.d.ts +8 -0
- package/lib/template/back-office/layout/index.d.ts.map +1 -1
- package/lib/template/certification-detail/index.js +2 -2
- package/lib/template/certification-detail/index.js.map +1 -1
- package/lib/template/common/dashboard/index.d.ts +8 -0
- package/lib/template/common/search-page/index.d.ts +4 -0
- package/lib/template/external-course/index.d.ts +4 -0
- package/lib/template/playlist-detail/index.d.ts +0 -1
- package/lib/template/playlist-detail/index.d.ts.map +1 -1
- package/lib/template/playlist-detail/index.js +3 -6
- package/lib/template/playlist-detail/index.js.map +1 -1
- package/lib/template/skill-detail/all-courses.css +0 -4
- package/lib/template/skill-detail/all-courses.d.ts +0 -1
- package/lib/template/skill-detail/all-courses.d.ts.map +1 -1
- package/lib/template/skill-detail/all-courses.js +2 -16
- package/lib/template/skill-detail/all-courses.js.map +1 -1
- package/lib/template/skill-detail/index.d.ts +0 -1
- package/lib/template/skill-detail/index.d.ts.map +1 -1
- package/lib/template/skill-detail/index.js +3 -6
- package/lib/template/skill-detail/index.js.map +1 -1
- package/lib/variables/colors.d.ts +0 -3
- package/lib/variables/colors.d.ts.map +1 -1
- package/lib/variables/colors.js +0 -3
- package/lib/variables/colors.js.map +1 -1
- package/locales/bs/global.json +2 -0
- package/locales/cs/global.json +2 -0
- package/locales/de/global.json +2 -0
- package/locales/en/global.json +2 -2
- package/locales/es/global.json +2 -0
- package/locales/et/global.json +2 -0
- package/locales/fi/global.json +2 -0
- package/locales/fr/global.json +2 -0
- package/locales/hr/global.json +2 -0
- package/locales/hu/global.json +2 -0
- package/locales/hy/global.json +2 -0
- package/locales/it/global.json +2 -0
- package/locales/ja/global.json +2 -0
- package/locales/ko/global.json +2 -0
- package/locales/nl/global.json +2 -0
- package/locales/pl/global.json +2 -0
- package/locales/pt/global.json +2 -0
- package/locales/ro/global.json +2 -0
- package/locales/ru/global.json +2 -0
- package/locales/sk/global.json +2 -0
- package/locales/sl/global.json +2 -0
- package/locales/sv/global.json +2 -0
- package/locales/tl/global.json +2 -0
- package/locales/tr/global.json +2 -0
- package/locales/uk/global.json +2 -0
- package/locales/vi/global.json +2 -0
- package/locales/zh/global.json +2 -0
- package/locales/zh_TW/global.json +2 -0
- package/package.json +2 -2
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import _debounce from "lodash/fp/debounce";
|
|
1
2
|
import _get from "lodash/fp/get";
|
|
2
3
|
import _isEmpty from "lodash/fp/isEmpty";
|
|
3
4
|
|
|
4
5
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
5
6
|
|
|
6
|
-
import React, { useCallback } from 'react';
|
|
7
|
+
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
|
7
8
|
import PropTypes from 'prop-types';
|
|
8
9
|
import { convert } from 'css-color-function';
|
|
9
10
|
import Provider from '../../atom/provider';
|
|
@@ -20,11 +21,56 @@ const BaseModal = (props, context) => {
|
|
|
20
21
|
isOpen,
|
|
21
22
|
footer,
|
|
22
23
|
onClose,
|
|
23
|
-
onScroll
|
|
24
|
+
onScroll,
|
|
25
|
+
detectScrollbar = false
|
|
24
26
|
} = props;
|
|
25
27
|
const {
|
|
26
28
|
skin
|
|
27
29
|
} = context;
|
|
30
|
+
const bodyRef = useRef(null);
|
|
31
|
+
const [isScrollbarVisible, setIsScrollbarVisible] = useState(!detectScrollbar);
|
|
32
|
+
|
|
33
|
+
const checkScrollbar = () => {
|
|
34
|
+
const bodyElement = bodyRef.current;
|
|
35
|
+
|
|
36
|
+
if (bodyElement) {
|
|
37
|
+
setIsScrollbarVisible(bodyElement.scrollHeight > bodyElement.clientHeight);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
useEffect(() => {
|
|
42
|
+
if (!detectScrollbar) return;
|
|
43
|
+
const bodyElement = bodyRef.current;
|
|
44
|
+
if (!bodyElement) return;
|
|
45
|
+
|
|
46
|
+
const debouncedCheckScrollbar = _debounce(100, () => {
|
|
47
|
+
checkScrollbar();
|
|
48
|
+
}); // Observer of the body content
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
const mutationObserver = new MutationObserver(() => {
|
|
52
|
+
debouncedCheckScrollbar();
|
|
53
|
+
});
|
|
54
|
+
mutationObserver.observe(bodyElement, {
|
|
55
|
+
childList: true,
|
|
56
|
+
subtree: true
|
|
57
|
+
}); // Observer of the body size
|
|
58
|
+
|
|
59
|
+
const resizeObserver = new ResizeObserver(() => {
|
|
60
|
+
debouncedCheckScrollbar();
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
if (bodyRef.current) {
|
|
64
|
+
resizeObserver.observe(bodyRef.current);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
checkScrollbar();
|
|
68
|
+
return () => {
|
|
69
|
+
mutationObserver.disconnect();
|
|
70
|
+
resizeObserver.disconnect();
|
|
71
|
+
debouncedCheckScrollbar.cancel();
|
|
72
|
+
};
|
|
73
|
+
}, [children, detectScrollbar]);
|
|
28
74
|
const Footer = useCallback(() => {
|
|
29
75
|
if (_isEmpty(footer)) return null;
|
|
30
76
|
if (typeof footer === 'function') return footer();
|
|
@@ -124,7 +170,8 @@ const BaseModal = (props, context) => {
|
|
|
124
170
|
wrapperSize: 28
|
|
125
171
|
}
|
|
126
172
|
}))), /*#__PURE__*/React.createElement("div", {
|
|
127
|
-
|
|
173
|
+
ref: bodyRef,
|
|
174
|
+
className: isScrollbarVisible ? style.body : style.bodyWithoutScrollbar,
|
|
128
175
|
onScroll: onScroll,
|
|
129
176
|
"data-testid": "modal-body"
|
|
130
177
|
}, children), /*#__PURE__*/React.createElement(Footer, null)));
|
|
@@ -160,7 +207,8 @@ BaseModal.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
|
160
207
|
})
|
|
161
208
|
})]),
|
|
162
209
|
onClose: PropTypes.func,
|
|
163
|
-
onScroll: PropTypes.func
|
|
210
|
+
onScroll: PropTypes.func,
|
|
211
|
+
detectScrollbar: PropTypes.bool
|
|
164
212
|
} : {};
|
|
165
213
|
export default BaseModal;
|
|
166
214
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","useCallback","PropTypes","convert","Provider","Icon","ButtonLink","style","BaseModal","props","context","title","description","headerIcon","children","isOpen","footer","onClose","onScroll","skin","Footer","cancelButton","confirmButton","text","isError","label","cancelLabel","onCancel","disabled","cancelDisabled","confirmLabel","onConfirm","confirmDisabled","iconName","color","buttonConfirmColor","footerCTAWrapper","className","footerCancelButton","type","onClick","customStyle","backgroundColor","hoverBackgroundColor","hoverColor","footerConfirmButton","icon","position","faIcon","name","size","footerDescription","footerDescriptionError","handleOnClose","e","stopPropagation","modalWrapper","modal","header","faSize","wrapperSize","headerContent","headerTitle","headerDescription","headerCloseIcon","body","contextTypes","childContextTypes","propTypes","string","shape","node","bool","oneOfType","func","boolean"],"sources":["../../../src/molecule/base-modal/index.js"],"sourcesContent":["import React, {useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport {isEmpty, get} from 'lodash/fp';\nimport {convert} from 'css-color-function';\nimport Provider from '../../atom/provider';\nimport Icon from '../../atom/icon';\nimport ButtonLink from '../../atom/button-link';\nimport style from './style.css';\n\nconst BaseModal = (props, context) => {\n const {title, description, headerIcon, children, isOpen, footer, onClose, onScroll} = props;\n const {skin} = context;\n\n const Footer = useCallback(() => {\n if (isEmpty(footer)) return null;\n if (typeof footer === 'function') return footer();\n\n const {cancelButton, confirmButton, text, isError} = footer;\n const {label: cancelLabel, onCancel, disabled: cancelDisabled} = cancelButton || {};\n const {\n label: confirmLabel,\n onConfirm,\n disabled: confirmDisabled,\n iconName,\n color\n } = confirmButton || {};\n const buttonConfirmColor = color || get('common.primary', skin);\n\n return (\n <div className={style.footer}>\n <div className={style.footerCTAWrapper}>\n {onCancel && cancelLabel ? (\n <ButtonLink\n {...{\n className: style.footerCancelButton,\n type: 'secondary',\n onClick: onCancel,\n label: cancelLabel,\n disabled: cancelDisabled\n }}\n />\n ) : null}\n {onConfirm && confirmLabel ? (\n <div>\n <ButtonLink\n {...{\n customStyle: {backgroundColor: buttonConfirmColor},\n hoverBackgroundColor: convert(\n `hsl(from ${buttonConfirmColor} h s calc(l*(1 - 0.08)))`\n ),\n hoverColor: '#FFFFFF',\n className: style.footerConfirmButton,\n type: 'primary',\n onClick: onConfirm,\n label: confirmLabel,\n disabled: confirmDisabled,\n ...(iconName\n ? {\n icon: {\n position: 'left',\n faIcon: {\n name: iconName,\n color: '#FFFFFF',\n size: 16\n }\n }\n }\n : {})\n }}\n />\n </div>\n ) : null}\n </div>\n {text ? (\n <div\n className={`${style.footerDescription} ${isError ? style.footerDescriptionError : ''}`}\n >\n {text}\n </div>\n ) : null}\n </div>\n );\n }, [footer, skin]);\n\n if (!isOpen || !title || !children) return null;\n\n function handleOnClose(e) {\n e?.stopPropagation();\n onClose();\n }\n\n return (\n <div className={style.modalWrapper}>\n <div className={style.modal}>\n <header className={style.header}>\n {headerIcon?.name ? (\n <div className={style.headerIcon}>\n <Icon\n iconName={headerIcon.name}\n iconColor={headerIcon.color}\n backgroundColor={headerIcon.backgroundColor}\n size={{faSize: 20, wrapperSize: 48}}\n />\n </div>\n ) : null}\n <div className={style.headerContent}>\n <div className={style.headerTitle}>{title}</div>\n {description ? <div className={style.headerDescription}>{description}</div> : null}\n </div>\n <div className={style.headerCloseIcon} onClick={handleOnClose} data-testid=\"close-icon\">\n <Icon iconName=\"close\" backgroundColor=\"#F4F4F5\" size={{faSize: 14, wrapperSize: 28}} />\n </div>\n </header>\n <div className={style.body} onScroll={onScroll} data-testid=\"modal-body\">\n {children}\n </div>\n <Footer />\n </div>\n </div>\n );\n};\n\nBaseModal.contextTypes = {\n skin: Provider.childContextTypes.skin\n};\n\nBaseModal.propTypes = {\n title: PropTypes.string,\n headerIcon: PropTypes.shape({\n name: PropTypes.string,\n color: PropTypes.string,\n backgroundColor: PropTypes.string\n }),\n description: PropTypes.string,\n children: PropTypes.node,\n isOpen: PropTypes.bool,\n footer: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({\n text: PropTypes.string,\n isError: PropTypes.boolean,\n cancelButton: PropTypes.shape({\n label: PropTypes.string,\n onCancel: PropTypes.func,\n disabled: PropTypes.bool\n }),\n confirmButton: PropTypes.shape({\n label: PropTypes.string,\n onConfirm: PropTypes.func,\n iconName: PropTypes.string,\n disabled: PropTypes.bool,\n color: PropTypes.string\n })\n })\n ]),\n onClose: PropTypes.func,\n onScroll: PropTypes.func\n};\n\nexport default BaseModal;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","useCallback","useEffect","useRef","useState","PropTypes","convert","Provider","Icon","ButtonLink","style","BaseModal","props","context","title","description","headerIcon","children","isOpen","footer","onClose","onScroll","detectScrollbar","skin","bodyRef","isScrollbarVisible","setIsScrollbarVisible","checkScrollbar","bodyElement","current","scrollHeight","clientHeight","debouncedCheckScrollbar","mutationObserver","MutationObserver","observe","childList","subtree","resizeObserver","ResizeObserver","disconnect","cancel","Footer","cancelButton","confirmButton","text","isError","label","cancelLabel","onCancel","disabled","cancelDisabled","confirmLabel","onConfirm","confirmDisabled","iconName","color","buttonConfirmColor","footerCTAWrapper","className","footerCancelButton","type","onClick","customStyle","backgroundColor","hoverBackgroundColor","hoverColor","footerConfirmButton","icon","position","faIcon","name","size","footerDescription","footerDescriptionError","handleOnClose","e","stopPropagation","modalWrapper","modal","header","faSize","wrapperSize","headerContent","headerTitle","headerDescription","headerCloseIcon","body","bodyWithoutScrollbar","contextTypes","childContextTypes","propTypes","string","shape","node","bool","oneOfType","func","boolean"],"sources":["../../../src/molecule/base-modal/index.js"],"sourcesContent":["import React, {useCallback, useEffect, useRef, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {isEmpty, get, debounce} from 'lodash/fp';\nimport {convert} from 'css-color-function';\nimport Provider from '../../atom/provider';\nimport Icon from '../../atom/icon';\nimport ButtonLink from '../../atom/button-link';\nimport style from './style.css';\n\nconst BaseModal = (props, context) => {\n const {\n title,\n description,\n headerIcon,\n children,\n isOpen,\n footer,\n onClose,\n onScroll,\n detectScrollbar = false\n } = props;\n const {skin} = context;\n const bodyRef = useRef(null);\n const [isScrollbarVisible, setIsScrollbarVisible] = useState(!detectScrollbar);\n\n const checkScrollbar = () => {\n const bodyElement = bodyRef.current;\n if (bodyElement) {\n setIsScrollbarVisible(bodyElement.scrollHeight > bodyElement.clientHeight);\n }\n };\n\n useEffect(() => {\n if (!detectScrollbar) return;\n const bodyElement = bodyRef.current;\n\n if (!bodyElement) return;\n\n const debouncedCheckScrollbar = debounce(100, () => {\n checkScrollbar();\n });\n\n // Observer of the body content\n const mutationObserver = new MutationObserver(() => {\n debouncedCheckScrollbar();\n });\n\n mutationObserver.observe(bodyElement, {childList: true, subtree: true});\n\n // Observer of the body size\n const resizeObserver = new ResizeObserver(() => {\n debouncedCheckScrollbar();\n });\n\n if (bodyRef.current) {\n resizeObserver.observe(bodyRef.current);\n }\n\n checkScrollbar();\n\n return () => {\n mutationObserver.disconnect();\n resizeObserver.disconnect();\n debouncedCheckScrollbar.cancel();\n };\n }, [children, detectScrollbar]);\n\n const Footer = useCallback(() => {\n if (isEmpty(footer)) return null;\n if (typeof footer === 'function') return footer();\n\n const {cancelButton, confirmButton, text, isError} = footer;\n const {label: cancelLabel, onCancel, disabled: cancelDisabled} = cancelButton || {};\n const {\n label: confirmLabel,\n onConfirm,\n disabled: confirmDisabled,\n iconName,\n color\n } = confirmButton || {};\n const buttonConfirmColor = color || get('common.primary', skin);\n\n return (\n <div className={style.footer}>\n <div className={style.footerCTAWrapper}>\n {onCancel && cancelLabel ? (\n <ButtonLink\n {...{\n className: style.footerCancelButton,\n type: 'secondary',\n onClick: onCancel,\n label: cancelLabel,\n disabled: cancelDisabled\n }}\n />\n ) : null}\n {onConfirm && confirmLabel ? (\n <div>\n <ButtonLink\n {...{\n customStyle: {backgroundColor: buttonConfirmColor},\n hoverBackgroundColor: convert(\n `hsl(from ${buttonConfirmColor} h s calc(l*(1 - 0.08)))`\n ),\n hoverColor: '#FFFFFF',\n className: style.footerConfirmButton,\n type: 'primary',\n onClick: onConfirm,\n label: confirmLabel,\n disabled: confirmDisabled,\n ...(iconName\n ? {\n icon: {\n position: 'left',\n faIcon: {\n name: iconName,\n color: '#FFFFFF',\n size: 16\n }\n }\n }\n : {})\n }}\n />\n </div>\n ) : null}\n </div>\n {text ? (\n <div\n className={`${style.footerDescription} ${isError ? style.footerDescriptionError : ''}`}\n >\n {text}\n </div>\n ) : null}\n </div>\n );\n }, [footer, skin]);\n\n if (!isOpen || !title || !children) return null;\n\n function handleOnClose(e) {\n e?.stopPropagation();\n onClose();\n }\n\n return (\n <div className={style.modalWrapper}>\n <div className={style.modal}>\n <header className={style.header}>\n {headerIcon?.name ? (\n <div className={style.headerIcon}>\n <Icon\n iconName={headerIcon.name}\n iconColor={headerIcon.color}\n backgroundColor={headerIcon.backgroundColor}\n size={{faSize: 20, wrapperSize: 48}}\n />\n </div>\n ) : null}\n <div className={style.headerContent}>\n <div className={style.headerTitle}>{title}</div>\n {description ? <div className={style.headerDescription}>{description}</div> : null}\n </div>\n <div className={style.headerCloseIcon} onClick={handleOnClose} data-testid=\"close-icon\">\n <Icon iconName=\"close\" backgroundColor=\"#F4F4F5\" size={{faSize: 14, wrapperSize: 28}} />\n </div>\n </header>\n <div\n ref={bodyRef}\n className={isScrollbarVisible ? style.body : style.bodyWithoutScrollbar}\n onScroll={onScroll}\n data-testid=\"modal-body\"\n >\n {children}\n </div>\n <Footer />\n </div>\n </div>\n );\n};\n\nBaseModal.contextTypes = {\n skin: Provider.childContextTypes.skin\n};\n\nBaseModal.propTypes = {\n title: PropTypes.string,\n headerIcon: PropTypes.shape({\n name: PropTypes.string,\n color: PropTypes.string,\n backgroundColor: PropTypes.string\n }),\n description: PropTypes.string,\n children: PropTypes.node,\n isOpen: PropTypes.bool,\n footer: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({\n text: PropTypes.string,\n isError: PropTypes.boolean,\n cancelButton: PropTypes.shape({\n label: PropTypes.string,\n onCancel: PropTypes.func,\n disabled: PropTypes.bool\n }),\n confirmButton: PropTypes.shape({\n label: PropTypes.string,\n onConfirm: PropTypes.func,\n iconName: PropTypes.string,\n disabled: PropTypes.bool,\n color: PropTypes.string\n })\n })\n ]),\n onClose: PropTypes.func,\n onScroll: PropTypes.func,\n detectScrollbar: PropTypes.bool\n};\n\nexport default BaseModal;\n"],"mappings":"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"}
|
|
@@ -96,6 +96,8 @@ declare const propTypes: {
|
|
|
96
96
|
label: PropTypes.Requireable<string>;
|
|
97
97
|
content: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
98
98
|
'aria-label': PropTypes.Requireable<string>;
|
|
99
|
+
tooltipText: PropTypes.Requireable<string>;
|
|
100
|
+
tooltipPlacement: PropTypes.Requireable<string>;
|
|
99
101
|
'data-name': PropTypes.Requireable<string>;
|
|
100
102
|
'data-testid': PropTypes.Requireable<string>;
|
|
101
103
|
icon: PropTypes.Requireable<PropTypes.InferProps<{
|
|
@@ -247,6 +249,8 @@ declare const propTypes: {
|
|
|
247
249
|
label: PropTypes.Requireable<string>;
|
|
248
250
|
content: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
249
251
|
'aria-label': PropTypes.Requireable<string>;
|
|
252
|
+
tooltipText: PropTypes.Requireable<string>;
|
|
253
|
+
tooltipPlacement: PropTypes.Requireable<string>;
|
|
250
254
|
'data-name': PropTypes.Requireable<string>;
|
|
251
255
|
'data-testid': PropTypes.Requireable<string>;
|
|
252
256
|
icon: PropTypes.Requireable<PropTypes.InferProps<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/molecule/cm-popin/types.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AAKnC,OAAO,IAAI,MAAM,iBAAiB,CAAC;AACnC,OAAO,EAAC,UAAU,EAAC,MAAM,wBAAwB,CAAC;AAClD,OAAO,SAAS,MAAM,2BAA2B,CAAC;AAClD,OAAO,SAAS,MAAM,2BAA2B,CAAC;AAGlD,QAAA,MAAM,SAAS
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/molecule/cm-popin/types.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AAKnC,OAAO,IAAI,MAAM,iBAAiB,CAAC;AACnC,OAAO,EAAC,UAAU,EAAC,MAAM,wBAAwB,CAAC;AAClD,OAAO,SAAS,MAAM,2BAA2B,CAAC;AAClD,OAAO,SAAS,MAAM,2BAA2B,CAAC;AAGlD,QAAA,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoDd,CAAC;AAEF,aAAK,gBAAgB,GAAG;IACtB,KAAK,EAAE,UAAU,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,oBAAY,eAAe,GAAG;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE;QACZ,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,aAAa,EAAE,MAAM,IAAI,CAAC;CAC3B,CAAC;AAEF,oBAAY,YAAY,GAAG;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,GAAG,aAAa,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;IAC5D,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,SAAS,GAAG,MAAM,CAAC;QACzB,IAAI,EACA,SAAS,CAAC,UAAU,CAAC,OAAO,SAAS,CAAC,SAAS,CAAC,GAChD,SAAS,CAAC,UAAU,CAAC,OAAO,SAAS,CAAC,SAAS,CAAC,CAAC;KACtD,CAAC;IACF,IAAI,CAAC,EAAE,SAAS,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC;CACpD,CAAC;AAEF,eAAe,SAAS,CAAC"}
|
|
@@ -68,6 +68,8 @@ declare const ActionableExpandableTable: {
|
|
|
68
68
|
label: import("prop-types").Requireable<string>;
|
|
69
69
|
content: import("prop-types").Requireable<import("prop-types").ReactNodeLike>;
|
|
70
70
|
'aria-label': import("prop-types").Requireable<string>;
|
|
71
|
+
tooltipText: import("prop-types").Requireable<string>;
|
|
72
|
+
tooltipPlacement: import("prop-types").Requireable<string>;
|
|
71
73
|
'data-name': import("prop-types").Requireable<string>;
|
|
72
74
|
'data-testid': import("prop-types").Requireable<string>;
|
|
73
75
|
icon: import("prop-types").Requireable<import("prop-types").InferProps<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule/expandible-actionable-table/index.tsx"],"names":[],"mappings":";AAMA,OAAO,EAAC,gBAAgB,EAAC,MAAM,iCAAiC,CAAC;AAOjE,OAAO,EAA2C,KAAK,EAAY,MAAM,SAAS,CAAC;AAqCnF,QAAA,MAAM,yBAAyB;YAAW,KAAK,iBAAiB,gBAAgB
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule/expandible-actionable-table/index.tsx"],"names":[],"mappings":";AAMA,OAAO,EAAC,gBAAgB,EAAC,MAAM,iCAAiC,CAAC;AAOjE,OAAO,EAA2C,KAAK,EAAY,MAAM,SAAS,CAAC;AAqCnF,QAAA,MAAM,yBAAyB;YAAW,KAAK,iBAAiB,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoL/E,CAAC;AASF,eAAe,yBAAyB,CAAC"}
|
|
@@ -45,6 +45,8 @@ export declare const propTypes: {
|
|
|
45
45
|
label: PropTypes.Requireable<string>;
|
|
46
46
|
content: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
47
47
|
'aria-label': PropTypes.Requireable<string>;
|
|
48
|
+
tooltipText: PropTypes.Requireable<string>;
|
|
49
|
+
tooltipPlacement: PropTypes.Requireable<string>;
|
|
48
50
|
'data-name': PropTypes.Requireable<string>;
|
|
49
51
|
'data-testid': PropTypes.Requireable<string>;
|
|
50
52
|
icon: PropTypes.Requireable<PropTypes.InferProps<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/molecule/expandible-actionable-table/types.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AAInC,OAAO,EAAC,0BAA0B,EAAC,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAC,eAAe,EAAC,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAC,eAAe,EAAC,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAC,KAAK,IAAI,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAC,KAAK,IAAI,oBAAoB,EAAC,MAAM,4BAA4B,CAAC;AA0BzE,eAAO,MAAM,SAAS
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/molecule/expandible-actionable-table/types.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AAInC,OAAO,EAAC,0BAA0B,EAAC,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAC,eAAe,EAAC,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAC,eAAe,EAAC,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAC,KAAK,IAAI,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAC,KAAK,IAAI,oBAAoB,EAAC,MAAM,4BAA4B,CAAC;AA0BzE,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoBrB,CAAC;AAEF,oBAAY,KAAK,GACb,MAAM,GACN,CAAC,eAAe,GAAG;IACjB,aAAa,EAAE,QAAQ,CAAC;CACzB,CAAC,GACF,CAAC,oBAAoB,GAAG;IACtB,aAAa,EAAE,cAAc,CAAC;CAC/B,CAAC,CAAC;AAEP,oBAAY,SAAS,GACjB,CAAC,eAAe,GAAG;IACjB,aAAa,EAAE,aAAa,CAAC;CAC9B,CAAC,GACF,CAAC,0BAA0B,GAAG;IAC5B,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC,CAAC;AAEP,oBAAY,SAAS,GACjB,CAAC,gBAAgB,GAAG;IAClB,aAAa,EAAE,cAAc,CAAC;CAC/B,CAAC,GACF,CAAC,KAAK,GAAG;IACP,aAAa,EAAE,yBAAyB,CAAC;CAC1C,CAAC,CAAC;AAEP,oBAAY,MAAM,GAAG;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,CAAC;AACrC,oBAAY,GAAG,GAAG;IAChB,MAAM,EAAE,KAAK,EAAE,CAAC;IAEhB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AACF,oBAAY,OAAO,GAAG,MAAM,EAAE,CAAC;AAC/B,oBAAY,IAAI,GAAG,GAAG,EAAE,CAAC;AAEzB,oBAAY,KAAK,GAAG;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,GAAG,MAAM,GAAG,IAAI,GAAG,GAAG,EAAE,CAAC;IACvC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC,CAAC;AAEF,oBAAY,WAAW,GAAG;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAC,CAAC"}
|
|
@@ -68,20 +68,12 @@
|
|
|
68
68
|
padding: 16px;
|
|
69
69
|
background-color: white;
|
|
70
70
|
height: 114px;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
.detailsSection0 {
|
|
74
|
-
composes: detailsSectionCommon;
|
|
75
71
|
flex: 1;
|
|
76
72
|
}
|
|
77
73
|
|
|
78
|
-
.detailsSection1 {
|
|
79
|
-
composes: detailsSection0;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
.detailsSection2 {
|
|
74
|
+
.detailsSection0 , .detailsSection1, .detailsSection2 {
|
|
83
75
|
composes: detailsSectionCommon;
|
|
84
|
-
|
|
76
|
+
flex: 1;
|
|
85
77
|
}
|
|
86
78
|
|
|
87
79
|
.detailsInfo {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule/skill-picker-modal/index.js"],"names":[],"mappings":";AAUA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule/skill-picker-modal/index.js"],"names":[],"mappings":";AAUA,gFAsKC"}
|
|
@@ -30,6 +30,7 @@ const SkillPickerModal = (props, context) => {
|
|
|
30
30
|
const {
|
|
31
31
|
translate
|
|
32
32
|
} = context;
|
|
33
|
+
const detectScrollbar = true;
|
|
33
34
|
const [sortedSkills, setSortedSkills] = useState(_sortBy(skill => skillsLocales[skill], skills));
|
|
34
35
|
const [currentSort, setCurrentSort] = useState('alphabetical');
|
|
35
36
|
const [selectedSkillList, setSelectedSkillList] = useState(selectedSkills);
|
|
@@ -100,7 +101,8 @@ const SkillPickerModal = (props, context) => {
|
|
|
100
101
|
headerIcon: {
|
|
101
102
|
name: 'bullseye-arrow',
|
|
102
103
|
backgroundColor: '#DDD1FF'
|
|
103
|
-
}
|
|
104
|
+
},
|
|
105
|
+
detectScrollbar: detectScrollbar
|
|
104
106
|
}, /*#__PURE__*/React.createElement("div", {
|
|
105
107
|
className: style.skillPickerContainer
|
|
106
108
|
}, isLoading ? /*#__PURE__*/React.createElement("div", {
|
|
@@ -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","sortedSkills","setSortedSkills","skill","currentSort","setCurrentSort","selectedSkillList","setSelectedSkillList","handleCancel","handleClose","skillProgressAvailable","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","backgroundColor","skillPickerContainer","loaderContainer","loader","ctaWrapper","sortWrapper","display","gap","flexWrap","index","handleChipClick","newSelectedSkillList","selectedSkill","subText","toFixed","contextTypes","childContextTypes","propTypes","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 [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 >\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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"}
|
|
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","skill","currentSort","setCurrentSort","selectedSkillList","setSelectedSkillList","handleCancel","handleClose","skillProgressAvailable","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","backgroundColor","skillPickerContainer","loaderContainer","loader","ctaWrapper","sortWrapper","display","gap","flexWrap","index","handleChipClick","newSelectedSkillList","selectedSkill","subText","toFixed","contextTypes","childContextTypes","propTypes","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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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
export default TranslationModal;
|
|
2
|
+
declare function TranslationModal(props: any, context: any): JSX.Element | null;
|
|
3
|
+
declare namespace TranslationModal {
|
|
4
|
+
namespace contextTypes {
|
|
5
|
+
const translate: PropTypes.Requireable<(...args: any[]) => any>;
|
|
6
|
+
}
|
|
7
|
+
namespace propTypes {
|
|
8
|
+
const isOpen: PropTypes.Requireable<boolean>;
|
|
9
|
+
const onCancel: PropTypes.Requireable<(...args: any[]) => any>;
|
|
10
|
+
const onConfirm: PropTypes.Requireable<(...args: any[]) => any>;
|
|
11
|
+
const onClose: PropTypes.Requireable<(...args: any[]) => any>;
|
|
12
|
+
const source: PropTypes.Requireable<PropTypes.InferProps<{
|
|
13
|
+
inputText: PropTypes.Requireable<PropTypes.InferProps<{
|
|
14
|
+
theme: PropTypes.Requireable<string>;
|
|
15
|
+
autoFocus: PropTypes.Requireable<boolean>;
|
|
16
|
+
title: PropTypes.Requireable<string>;
|
|
17
|
+
placeholder: PropTypes.Requireable<string>;
|
|
18
|
+
defaultValue: PropTypes.Requireable<string>;
|
|
19
|
+
disabled: PropTypes.Requireable<boolean>;
|
|
20
|
+
value: PropTypes.Requireable<string>;
|
|
21
|
+
hint: PropTypes.Requireable<string>;
|
|
22
|
+
error: PropTypes.Requireable<string>;
|
|
23
|
+
onChange: PropTypes.Requireable<(...args: any[]) => any>;
|
|
24
|
+
description: PropTypes.Requireable<string>;
|
|
25
|
+
modified: PropTypes.Requireable<boolean>;
|
|
26
|
+
type: PropTypes.Requireable<string>;
|
|
27
|
+
valid: PropTypes.Requireable<boolean>;
|
|
28
|
+
'aria-label': PropTypes.Requireable<string>;
|
|
29
|
+
'data-name': PropTypes.Requireable<string>;
|
|
30
|
+
}>>;
|
|
31
|
+
textArea: PropTypes.Requireable<PropTypes.InferProps<{
|
|
32
|
+
theme: PropTypes.Requireable<string>;
|
|
33
|
+
placeholder: PropTypes.Requireable<string>;
|
|
34
|
+
title: PropTypes.Requireable<string>;
|
|
35
|
+
name: PropTypes.Requireable<string>;
|
|
36
|
+
disabled: PropTypes.Requireable<boolean>;
|
|
37
|
+
value: PropTypes.Requireable<string>;
|
|
38
|
+
hint: PropTypes.Requireable<string>;
|
|
39
|
+
error: PropTypes.Requireable<string>;
|
|
40
|
+
onChange: PropTypes.Requireable<(...args: any[]) => any>;
|
|
41
|
+
description: PropTypes.Requireable<string>;
|
|
42
|
+
modified: PropTypes.Requireable<boolean>;
|
|
43
|
+
valid: PropTypes.Requireable<boolean>;
|
|
44
|
+
}>>;
|
|
45
|
+
inputLanguage: PropTypes.Requireable<string>;
|
|
46
|
+
}>>;
|
|
47
|
+
const target: PropTypes.Requireable<PropTypes.InferProps<{
|
|
48
|
+
inputText: PropTypes.Requireable<PropTypes.InferProps<{
|
|
49
|
+
theme: PropTypes.Requireable<string>;
|
|
50
|
+
autoFocus: PropTypes.Requireable<boolean>;
|
|
51
|
+
title: PropTypes.Requireable<string>;
|
|
52
|
+
placeholder: PropTypes.Requireable<string>;
|
|
53
|
+
defaultValue: PropTypes.Requireable<string>;
|
|
54
|
+
disabled: PropTypes.Requireable<boolean>;
|
|
55
|
+
value: PropTypes.Requireable<string>;
|
|
56
|
+
hint: PropTypes.Requireable<string>;
|
|
57
|
+
error: PropTypes.Requireable<string>;
|
|
58
|
+
onChange: PropTypes.Requireable<(...args: any[]) => any>;
|
|
59
|
+
description: PropTypes.Requireable<string>;
|
|
60
|
+
modified: PropTypes.Requireable<boolean>;
|
|
61
|
+
type: PropTypes.Requireable<string>;
|
|
62
|
+
valid: PropTypes.Requireable<boolean>;
|
|
63
|
+
'aria-label': PropTypes.Requireable<string>;
|
|
64
|
+
'data-name': PropTypes.Requireable<string>;
|
|
65
|
+
}>>;
|
|
66
|
+
textArea: PropTypes.Requireable<PropTypes.InferProps<{
|
|
67
|
+
theme: PropTypes.Requireable<string>;
|
|
68
|
+
placeholder: PropTypes.Requireable<string>;
|
|
69
|
+
title: PropTypes.Requireable<string>;
|
|
70
|
+
name: PropTypes.Requireable<string>;
|
|
71
|
+
disabled: PropTypes.Requireable<boolean>;
|
|
72
|
+
value: PropTypes.Requireable<string>;
|
|
73
|
+
hint: PropTypes.Requireable<string>;
|
|
74
|
+
error: PropTypes.Requireable<string>;
|
|
75
|
+
onChange: PropTypes.Requireable<(...args: any[]) => any>;
|
|
76
|
+
description: PropTypes.Requireable<string>;
|
|
77
|
+
modified: PropTypes.Requireable<boolean>;
|
|
78
|
+
valid: PropTypes.Requireable<boolean>;
|
|
79
|
+
}>>;
|
|
80
|
+
language: PropTypes.Requireable<string>;
|
|
81
|
+
}>>;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
import PropTypes from "prop-types";
|
|
85
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule/translation-modal/index.js"],"names":[],"mappings":";AAmBA,gFAkGC"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2
|
+
|
|
3
|
+
import React, { useMemo, useCallback, useState } from 'react';
|
|
4
|
+
import PropTypes from 'prop-types';
|
|
5
|
+
import BaseModal from '../base-modal';
|
|
6
|
+
import Provider from '../../atom/provider';
|
|
7
|
+
import { COLORS } from '../../variables/colors';
|
|
8
|
+
import InputText from '../../atom/input-text';
|
|
9
|
+
import TextArea from '../../atom/input-textarea';
|
|
10
|
+
import style from './style.css';
|
|
11
|
+
|
|
12
|
+
const renderInputGroup = ({
|
|
13
|
+
title,
|
|
14
|
+
inputProps,
|
|
15
|
+
textAreaProps,
|
|
16
|
+
disabled
|
|
17
|
+
}) => {
|
|
18
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
19
|
+
className: style.inputGroup
|
|
20
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
21
|
+
className: style.title
|
|
22
|
+
}, title), /*#__PURE__*/React.createElement(InputText, _extends({}, inputProps, {
|
|
23
|
+
disabled: disabled
|
|
24
|
+
})), /*#__PURE__*/React.createElement(TextArea, _extends({}, textAreaProps, {
|
|
25
|
+
disabled: disabled
|
|
26
|
+
})));
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const TranslationModal = (props, context) => {
|
|
30
|
+
const {
|
|
31
|
+
isOpen,
|
|
32
|
+
onCancel,
|
|
33
|
+
onConfirm,
|
|
34
|
+
onClose,
|
|
35
|
+
source: {
|
|
36
|
+
inputText: sourceInputText,
|
|
37
|
+
textArea: sourceTextArea,
|
|
38
|
+
inputLanguage
|
|
39
|
+
},
|
|
40
|
+
target: {
|
|
41
|
+
inputText: targetInputText,
|
|
42
|
+
textArea: targetTextArea,
|
|
43
|
+
language: outputLanguage
|
|
44
|
+
}
|
|
45
|
+
} = props;
|
|
46
|
+
const {
|
|
47
|
+
translate
|
|
48
|
+
} = context;
|
|
49
|
+
const detectScrollbar = true;
|
|
50
|
+
const [inputValue, setInputValue] = useState(targetInputText?.value || '');
|
|
51
|
+
const [textAreaValue, setTextAreaValue] = useState(targetTextArea?.value || '');
|
|
52
|
+
const handleCancel = useCallback(() => {
|
|
53
|
+
onCancel();
|
|
54
|
+
}, [onCancel]);
|
|
55
|
+
const handleClose = useCallback(() => {
|
|
56
|
+
onClose();
|
|
57
|
+
}, [onClose]);
|
|
58
|
+
const handleInputChange = useCallback(e => {
|
|
59
|
+
setInputValue(e.target.value);
|
|
60
|
+
}, []);
|
|
61
|
+
const handleTextAreaChange = useCallback(e => {
|
|
62
|
+
setTextAreaValue(e.target.value);
|
|
63
|
+
}, []);
|
|
64
|
+
const isConfirmDisabled = useMemo(() => {
|
|
65
|
+
return !inputValue.trim() || !textAreaValue.trim();
|
|
66
|
+
}, [inputValue, textAreaValue]);
|
|
67
|
+
const footer = useMemo(() => {
|
|
68
|
+
return {
|
|
69
|
+
cancelButton: {
|
|
70
|
+
onCancel: handleCancel,
|
|
71
|
+
label: translate('cancel')
|
|
72
|
+
},
|
|
73
|
+
confirmButton: {
|
|
74
|
+
onConfirm: () => {
|
|
75
|
+
onConfirm();
|
|
76
|
+
},
|
|
77
|
+
label: translate('confirm'),
|
|
78
|
+
iconName: 'plus',
|
|
79
|
+
disabled: isConfirmDisabled,
|
|
80
|
+
color: COLORS.cm_primary_blue
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
}, [handleCancel, onConfirm, translate, isConfirmDisabled]);
|
|
84
|
+
if (!isOpen) return null;
|
|
85
|
+
return /*#__PURE__*/React.createElement(BaseModal, {
|
|
86
|
+
title: translate('translation_title'),
|
|
87
|
+
description: translate('translation_description'),
|
|
88
|
+
isOpen: isOpen,
|
|
89
|
+
onClose: handleClose,
|
|
90
|
+
footer: footer,
|
|
91
|
+
headerIcon: {
|
|
92
|
+
name: 'language',
|
|
93
|
+
backgroundColor: '#D6E6FF'
|
|
94
|
+
},
|
|
95
|
+
detectScrollbar: detectScrollbar
|
|
96
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
97
|
+
className: style.translationModal
|
|
98
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
99
|
+
className: style.horizontalSection
|
|
100
|
+
}, renderInputGroup({
|
|
101
|
+
title: inputLanguage,
|
|
102
|
+
inputProps: sourceInputText,
|
|
103
|
+
textAreaProps: sourceTextArea,
|
|
104
|
+
disabled: true
|
|
105
|
+
}), /*#__PURE__*/React.createElement("div", {
|
|
106
|
+
className: style.separator
|
|
107
|
+
}), renderInputGroup({
|
|
108
|
+
title: outputLanguage,
|
|
109
|
+
inputProps: _extends({}, targetInputText, {
|
|
110
|
+
value: inputValue,
|
|
111
|
+
onChange: handleInputChange
|
|
112
|
+
}),
|
|
113
|
+
textAreaProps: _extends({}, targetTextArea, {
|
|
114
|
+
value: textAreaValue,
|
|
115
|
+
onChange: handleTextAreaChange
|
|
116
|
+
}),
|
|
117
|
+
disabled: false
|
|
118
|
+
}))));
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
TranslationModal.contextTypes = {
|
|
122
|
+
translate: Provider.childContextTypes.translate
|
|
123
|
+
};
|
|
124
|
+
TranslationModal.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
125
|
+
isOpen: PropTypes.bool,
|
|
126
|
+
onCancel: PropTypes.func,
|
|
127
|
+
onConfirm: PropTypes.func,
|
|
128
|
+
onClose: PropTypes.func,
|
|
129
|
+
source: PropTypes.shape({
|
|
130
|
+
inputText: PropTypes.shape(_extends({}, InputText.propTypes, {
|
|
131
|
+
theme: PropTypes.string
|
|
132
|
+
})),
|
|
133
|
+
textArea: PropTypes.shape(_extends({}, TextArea.propTypes, {
|
|
134
|
+
theme: PropTypes.string
|
|
135
|
+
})),
|
|
136
|
+
inputLanguage: PropTypes.string
|
|
137
|
+
}),
|
|
138
|
+
target: PropTypes.shape({
|
|
139
|
+
inputText: PropTypes.shape(_extends({}, InputText.propTypes, {
|
|
140
|
+
theme: PropTypes.string
|
|
141
|
+
})),
|
|
142
|
+
textArea: PropTypes.shape(_extends({}, TextArea.propTypes, {
|
|
143
|
+
theme: PropTypes.string
|
|
144
|
+
})),
|
|
145
|
+
language: PropTypes.string
|
|
146
|
+
})
|
|
147
|
+
} : {};
|
|
148
|
+
export default TranslationModal;
|
|
149
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","useMemo","useCallback","useState","PropTypes","BaseModal","Provider","COLORS","InputText","TextArea","style","renderInputGroup","title","inputProps","textAreaProps","disabled","inputGroup","TranslationModal","props","context","isOpen","onCancel","onConfirm","onClose","source","inputText","sourceInputText","textArea","sourceTextArea","inputLanguage","target","targetInputText","targetTextArea","language","outputLanguage","translate","detectScrollbar","inputValue","setInputValue","value","textAreaValue","setTextAreaValue","handleCancel","handleClose","handleInputChange","e","handleTextAreaChange","isConfirmDisabled","trim","footer","cancelButton","label","confirmButton","iconName","color","cm_primary_blue","name","backgroundColor","translationModal","horizontalSection","separator","onChange","contextTypes","childContextTypes","propTypes","bool","func","shape","theme","string"],"sources":["../../../src/molecule/translation-modal/index.js"],"sourcesContent":["import React, {useMemo, useCallback, useState} 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 source: {inputText: sourceInputText, textArea: sourceTextArea, inputLanguage},\n target: {inputText: targetInputText, textArea: targetTextArea, language: outputLanguage}\n } = props;\n const {translate} = context;\n\n const detectScrollbar = true;\n\n const [inputValue, setInputValue] = useState(targetInputText?.value || '');\n const [textAreaValue, setTextAreaValue] = useState(targetTextArea?.value || '');\n\n const handleCancel = useCallback(() => {\n onCancel();\n }, [onCancel]);\n\n const handleClose = useCallback(() => {\n onClose();\n }, [onClose]);\n\n const handleInputChange = useCallback(e => {\n setInputValue(e.target.value);\n }, []);\n\n const handleTextAreaChange = useCallback(e => {\n setTextAreaValue(e.target.value);\n }, []);\n\n const isConfirmDisabled = useMemo(() => {\n return !inputValue.trim() || !textAreaValue.trim();\n }, [inputValue, textAreaValue]);\n\n const footer = useMemo(() => {\n return {\n cancelButton: {\n onCancel: handleCancel,\n label: translate('cancel')\n },\n confirmButton: {\n onConfirm: () => {\n onConfirm();\n },\n label: translate('confirm'),\n iconName: 'plus',\n disabled: isConfirmDisabled,\n color: COLORS.cm_primary_blue\n }\n };\n }, [handleCancel, onConfirm, translate, isConfirmDisabled]);\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: {\n ...targetInputText,\n value: inputValue,\n onChange: handleInputChange\n },\n textAreaProps: {\n ...targetTextArea,\n value: textAreaValue,\n onChange: handleTextAreaChange\n },\n disabled: false\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 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};\n\nexport default TranslationModal;\n"],"mappings":"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"}
|