@coorpacademy/components 11.32.42 → 11.32.44
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/icon/index.d.ts +1 -0
- package/es/atom/icon/index.d.ts.map +1 -1
- package/es/atom/icon/index.js +8 -1
- package/es/atom/icon/index.js.map +1 -1
- package/es/atom/select-icon/index.d.ts +17 -0
- package/es/atom/select-icon/index.d.ts.map +1 -0
- package/es/atom/select-icon/index.js +93 -0
- package/es/atom/select-icon/index.js.map +1 -0
- package/es/atom/select-icon/style.css +73 -0
- package/es/molecule/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 +9 -4
- package/es/molecule/base-modal/index.js.map +1 -1
- package/es/molecule/certification-card/index.d.ts.map +1 -1
- package/es/molecule/certification-card/index.js +4 -2
- package/es/molecule/certification-card/index.js.map +1 -1
- package/es/molecule/certification-card/style.css +23 -7
- package/es/molecule/cm-popin/types.d.ts +12 -0
- package/es/molecule/cm-popin/types.d.ts.map +1 -1
- package/es/molecule/draggable-list/index.d.ts +12 -0
- package/es/molecule/icon-picker-modal/index.d.ts +15 -0
- package/es/molecule/icon-picker-modal/index.d.ts.map +1 -0
- package/es/molecule/icon-picker-modal/index.js +152 -0
- package/es/molecule/icon-picker-modal/index.js.map +1 -0
- package/es/molecule/icon-picker-modal/style.css +61 -0
- package/es/molecule/icon-picker-modal/use-icon-search.d.ts +9 -0
- package/es/molecule/icon-picker-modal/use-icon-search.d.ts.map +1 -0
- package/es/molecule/icon-picker-modal/use-icon-search.js +36 -0
- package/es/molecule/icon-picker-modal/use-icon-search.js.map +1 -0
- package/es/molecule/progress-wrapper/index.js +1 -1
- package/es/molecule/progress-wrapper/index.js.map +1 -1
- package/es/molecule/progress-wrapper/style.css +1 -0
- package/es/organism/brand-learning-priorities/index.d.ts +12 -0
- package/es/organism/list-item/index.d.ts +16 -1
- package/es/organism/list-item/index.d.ts.map +1 -1
- package/es/organism/list-item/index.js +58 -9
- package/es/organism/list-item/index.js.map +1 -1
- package/es/organism/list-item/style.css +25 -11
- package/es/organism/list-items/index.d.ts +12 -0
- package/es/template/app-player/loading/index.d.ts +12 -0
- package/es/template/app-player/player/index.d.ts +24 -0
- package/es/template/app-player/player/slides/index.d.ts +12 -0
- package/es/template/app-player/player/slides/index.d.ts.map +1 -1
- package/es/template/app-player/popin-correction/index.d.ts +12 -0
- package/es/template/app-player/popin-correction/index.d.ts.map +1 -1
- package/es/template/app-player/popin-end/index.d.ts +12 -0
- package/es/template/app-review/index.d.ts +12 -0
- package/es/template/app-review/index.d.ts.map +1 -1
- package/es/template/app-review/player/prop-types.d.ts +12 -0
- package/es/template/app-review/player/prop-types.d.ts.map +1 -1
- package/es/template/app-review/prop-types.d.ts +12 -0
- package/es/template/app-review/prop-types.d.ts.map +1 -1
- package/es/template/back-office/brand-update/index.d.ts +36 -0
- package/es/template/certification-detail/index.d.ts +1 -1
- package/es/template/certification-detail/index.d.ts.map +1 -1
- package/es/template/certification-detail/index.js +16 -5
- package/es/template/certification-detail/index.js.map +1 -1
- package/es/template/certification-detail/style.css +0 -1
- package/es/template/certifications/index.d.ts.map +1 -1
- package/es/template/certifications/index.js +3 -1
- package/es/template/certifications/index.js.map +1 -1
- package/es/template/certifications/style.css +8 -1
- package/es/template/common/dashboard/index.d.ts +24 -0
- package/es/template/common/search-page/index.d.ts +12 -0
- package/es/template/external-course/index.d.ts +12 -0
- package/es/template/playlist-detail/index.d.ts.map +1 -1
- package/es/template/playlist-detail/index.js +15 -4
- package/es/template/playlist-detail/index.js.map +1 -1
- package/es/template/playlist-detail/style.css +0 -1
- package/es/template/skill-detail/index.d.ts.map +1 -1
- package/es/template/skill-detail/index.js +15 -3
- package/es/template/skill-detail/index.js.map +1 -1
- package/es/variables/colors.d.ts +1 -0
- package/es/variables/colors.d.ts.map +1 -1
- package/es/variables/colors.js +1 -0
- package/es/variables/colors.js.map +1 -1
- package/lib/atom/icon/index.d.ts +1 -0
- package/lib/atom/icon/index.d.ts.map +1 -1
- package/lib/atom/icon/index.js +12 -2
- package/lib/atom/icon/index.js.map +1 -1
- package/lib/atom/select-icon/index.d.ts +17 -0
- package/lib/atom/select-icon/index.d.ts.map +1 -0
- package/lib/atom/select-icon/index.js +111 -0
- package/lib/atom/select-icon/index.js.map +1 -0
- package/lib/atom/select-icon/style.css +73 -0
- package/lib/molecule/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 +9 -4
- package/lib/molecule/base-modal/index.js.map +1 -1
- package/lib/molecule/certification-card/index.d.ts.map +1 -1
- package/lib/molecule/certification-card/index.js +4 -2
- package/lib/molecule/certification-card/index.js.map +1 -1
- package/lib/molecule/certification-card/style.css +23 -7
- package/lib/molecule/cm-popin/types.d.ts +12 -0
- package/lib/molecule/cm-popin/types.d.ts.map +1 -1
- package/lib/molecule/draggable-list/index.d.ts +12 -0
- package/lib/molecule/icon-picker-modal/index.d.ts +15 -0
- package/lib/molecule/icon-picker-modal/index.d.ts.map +1 -0
- package/lib/molecule/icon-picker-modal/index.js +179 -0
- package/lib/molecule/icon-picker-modal/index.js.map +1 -0
- package/lib/molecule/icon-picker-modal/style.css +61 -0
- package/lib/molecule/icon-picker-modal/use-icon-search.d.ts +9 -0
- package/lib/molecule/icon-picker-modal/use-icon-search.d.ts.map +1 -0
- package/lib/molecule/icon-picker-modal/use-icon-search.js +52 -0
- package/lib/molecule/icon-picker-modal/use-icon-search.js.map +1 -0
- package/lib/molecule/progress-wrapper/index.js +1 -1
- package/lib/molecule/progress-wrapper/index.js.map +1 -1
- package/lib/molecule/progress-wrapper/style.css +1 -0
- package/lib/organism/brand-learning-priorities/index.d.ts +12 -0
- package/lib/organism/list-item/index.d.ts +16 -1
- package/lib/organism/list-item/index.d.ts.map +1 -1
- package/lib/organism/list-item/index.js +56 -5
- package/lib/organism/list-item/index.js.map +1 -1
- package/lib/organism/list-item/style.css +25 -11
- package/lib/organism/list-items/index.d.ts +12 -0
- package/lib/template/app-player/loading/index.d.ts +12 -0
- package/lib/template/app-player/player/index.d.ts +24 -0
- package/lib/template/app-player/player/slides/index.d.ts +12 -0
- package/lib/template/app-player/player/slides/index.d.ts.map +1 -1
- package/lib/template/app-player/popin-correction/index.d.ts +12 -0
- package/lib/template/app-player/popin-correction/index.d.ts.map +1 -1
- package/lib/template/app-player/popin-end/index.d.ts +12 -0
- package/lib/template/app-review/index.d.ts +12 -0
- package/lib/template/app-review/index.d.ts.map +1 -1
- package/lib/template/app-review/player/prop-types.d.ts +12 -0
- package/lib/template/app-review/player/prop-types.d.ts.map +1 -1
- package/lib/template/app-review/prop-types.d.ts +12 -0
- package/lib/template/app-review/prop-types.d.ts.map +1 -1
- package/lib/template/back-office/brand-update/index.d.ts +36 -0
- package/lib/template/certification-detail/index.d.ts +1 -1
- package/lib/template/certification-detail/index.d.ts.map +1 -1
- package/lib/template/certification-detail/index.js +15 -5
- package/lib/template/certification-detail/index.js.map +1 -1
- package/lib/template/certification-detail/style.css +0 -1
- package/lib/template/certifications/index.d.ts.map +1 -1
- package/lib/template/certifications/index.js +3 -1
- package/lib/template/certifications/index.js.map +1 -1
- package/lib/template/certifications/style.css +8 -1
- package/lib/template/common/dashboard/index.d.ts +24 -0
- package/lib/template/common/search-page/index.d.ts +12 -0
- package/lib/template/external-course/index.d.ts +12 -0
- package/lib/template/playlist-detail/index.d.ts.map +1 -1
- package/lib/template/playlist-detail/index.js +14 -4
- package/lib/template/playlist-detail/index.js.map +1 -1
- package/lib/template/playlist-detail/style.css +0 -1
- package/lib/template/skill-detail/index.d.ts.map +1 -1
- package/lib/template/skill-detail/index.js +14 -2
- package/lib/template/skill-detail/index.js.map +1 -1
- package/lib/variables/colors.d.ts +1 -0
- package/lib/variables/colors.d.ts.map +1 -1
- package/lib/variables/colors.js +1 -0
- package/lib/variables/colors.js.map +1 -1
- package/locales/bs/global.json +12 -8
- package/locales/cs/global.json +12 -8
- package/locales/de/global.json +12 -8
- package/locales/en/global.json +4 -0
- package/locales/es/global.json +12 -8
- package/locales/et/global.json +12 -8
- package/locales/fi/global.json +12 -8
- package/locales/fr/global.json +12 -8
- package/locales/hr/global.json +12 -8
- package/locales/hu/global.json +12 -8
- package/locales/hy/global.json +12 -8
- package/locales/it/global.json +12 -8
- package/locales/ja/global.json +12 -8
- package/locales/ko/global.json +12 -8
- package/locales/nl/global.json +12 -8
- package/locales/pl/global.json +12 -8
- package/locales/pt/global.json +12 -8
- package/locales/ro/global.json +12 -8
- package/locales/ru/global.json +12 -8
- package/locales/sk/global.json +12 -8
- package/locales/sl/global.json +12 -8
- package/locales/sv/global.json +12 -8
- package/locales/tl/global.json +12 -8
- package/locales/tr/global.json +12 -8
- package/locales/uk/global.json +12 -8
- package/locales/vi/global.json +12 -8
- package/locales/zh/global.json +12 -8
- package/locales/zh_TW/global.json +12 -8
- package/package.json +2 -2
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.default = void 0;
|
|
5
|
+
|
|
6
|
+
var _size2 = _interopRequireDefault(require("lodash/fp/size"));
|
|
7
|
+
|
|
8
|
+
var _slice2 = _interopRequireDefault(require("lodash/fp/slice"));
|
|
9
|
+
|
|
10
|
+
var _values2 = _interopRequireDefault(require("lodash/fp/values"));
|
|
11
|
+
|
|
12
|
+
var _get2 = _interopRequireDefault(require("lodash/fp/get"));
|
|
13
|
+
|
|
14
|
+
var _pipe2 = _interopRequireDefault(require("lodash/fp/pipe"));
|
|
15
|
+
|
|
16
|
+
var _map2 = _interopRequireDefault(require("lodash/fp/map"));
|
|
17
|
+
|
|
18
|
+
var _entries2 = _interopRequireDefault(require("lodash/fp/entries"));
|
|
19
|
+
|
|
20
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
21
|
+
|
|
22
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
23
|
+
|
|
24
|
+
var _proSolidSvgIcons = require("@fortawesome/pro-solid-svg-icons");
|
|
25
|
+
|
|
26
|
+
var _baseModal = _interopRequireDefault(require("../base-modal"));
|
|
27
|
+
|
|
28
|
+
var _selectIcon = _interopRequireDefault(require("../../atom/select-icon"));
|
|
29
|
+
|
|
30
|
+
var _provider = _interopRequireDefault(require("../../atom/provider"));
|
|
31
|
+
|
|
32
|
+
var _searchForm = _interopRequireDefault(require("../search-form"));
|
|
33
|
+
|
|
34
|
+
var _colors = require("../../variables/colors");
|
|
35
|
+
|
|
36
|
+
var _style = _interopRequireDefault(require("./style.css"));
|
|
37
|
+
|
|
38
|
+
var _useIconSearch = _interopRequireDefault(require("./use-icon-search"));
|
|
39
|
+
|
|
40
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
41
|
+
|
|
42
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
43
|
+
|
|
44
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
45
|
+
|
|
46
|
+
const ICONS_PER_LOAD = 48;
|
|
47
|
+
|
|
48
|
+
const IconPickerModal = (props, context) => {
|
|
49
|
+
const {
|
|
50
|
+
isOpen,
|
|
51
|
+
onCancel,
|
|
52
|
+
onConfirm,
|
|
53
|
+
onClose
|
|
54
|
+
} = props;
|
|
55
|
+
const {
|
|
56
|
+
translate
|
|
57
|
+
} = context;
|
|
58
|
+
const [selectedIcon, setSelectedIcon] = (0, _react.useState)(null);
|
|
59
|
+
const [displayedIcons, setDisplayedIcons] = (0, _react.useState)([]);
|
|
60
|
+
const [currentIndex, setCurrentIndex] = (0, _react.useState)(0);
|
|
61
|
+
const allIcons = (0, _react.useMemo)(() => (0, _pipe2.default)(_values2.default, (0, _map2.default)((0, _get2.default)('iconName')))(_proSolidSvgIcons.fas), []);
|
|
62
|
+
const {
|
|
63
|
+
searchValue,
|
|
64
|
+
searchResults,
|
|
65
|
+
handleSearch,
|
|
66
|
+
handleReset
|
|
67
|
+
} = (0, _useIconSearch.default)(allIcons);
|
|
68
|
+
const handleCancel = (0, _react.useCallback)(() => {
|
|
69
|
+
onCancel();
|
|
70
|
+
}, [onCancel]);
|
|
71
|
+
const handleClose = (0, _react.useCallback)(() => {
|
|
72
|
+
onClose();
|
|
73
|
+
}, [onClose]);
|
|
74
|
+
const handleIconClick = (0, _react.useCallback)(iconName => () => {
|
|
75
|
+
setSelectedIcon(prevSelectedIcon => prevSelectedIcon === iconName ? null : iconName);
|
|
76
|
+
}, []);
|
|
77
|
+
const loadMoreIcons = (0, _react.useCallback)(() => {
|
|
78
|
+
const nextIndex = currentIndex + ICONS_PER_LOAD;
|
|
79
|
+
const newIcons = (0, _slice2.default)(currentIndex, nextIndex, searchResults);
|
|
80
|
+
setDisplayedIcons(prevIcons => [...prevIcons, ...newIcons]);
|
|
81
|
+
setCurrentIndex(nextIndex);
|
|
82
|
+
}, [currentIndex, searchResults]);
|
|
83
|
+
(0, _react.useEffect)(() => {
|
|
84
|
+
setDisplayedIcons(() => (0, _slice2.default)(0, ICONS_PER_LOAD, searchResults));
|
|
85
|
+
setCurrentIndex(ICONS_PER_LOAD);
|
|
86
|
+
}, [searchResults]);
|
|
87
|
+
const handleScroll = (0, _react.useCallback)(event => {
|
|
88
|
+
const {
|
|
89
|
+
scrollTop,
|
|
90
|
+
clientHeight,
|
|
91
|
+
scrollHeight
|
|
92
|
+
} = event.currentTarget;
|
|
93
|
+
|
|
94
|
+
if (scrollHeight - scrollTop <= clientHeight + 1) {
|
|
95
|
+
loadMoreIcons();
|
|
96
|
+
}
|
|
97
|
+
}, [loadMoreIcons]);
|
|
98
|
+
const icons = (0, _react.useMemo)(() => (0, _pipe2.default)(_entries2.default, (0, _map2.default)(([index, iconName]) => /*#__PURE__*/_react.default.createElement(_selectIcon.default, {
|
|
99
|
+
key: `icon-${index}`,
|
|
100
|
+
size: "responsive",
|
|
101
|
+
"data-name": `icon-${index}`,
|
|
102
|
+
"aria-label": iconName,
|
|
103
|
+
faIcon: iconName,
|
|
104
|
+
onClick: handleIconClick(iconName),
|
|
105
|
+
options: {
|
|
106
|
+
isSelected: selectedIcon === iconName
|
|
107
|
+
}
|
|
108
|
+
})))(displayedIcons), [displayedIcons, selectedIcon, handleIconClick]);
|
|
109
|
+
const footer = (0, _react.useMemo)(() => {
|
|
110
|
+
return {
|
|
111
|
+
cancelButton: {
|
|
112
|
+
onCancel: handleCancel,
|
|
113
|
+
label: translate('cancel')
|
|
114
|
+
},
|
|
115
|
+
confirmButton: {
|
|
116
|
+
onConfirm: () => {
|
|
117
|
+
onConfirm(selectedIcon);
|
|
118
|
+
setSelectedIcon(null);
|
|
119
|
+
onClose();
|
|
120
|
+
},
|
|
121
|
+
label: translate('confirm'),
|
|
122
|
+
iconName: 'plus',
|
|
123
|
+
disabled: selectedIcon === null,
|
|
124
|
+
color: _colors.COLORS.cm_primary_blue
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
}, [handleCancel, onConfirm, onClose, translate, selectedIcon]);
|
|
128
|
+
if (!isOpen) return null;
|
|
129
|
+
return /*#__PURE__*/_react.default.createElement(_baseModal.default, {
|
|
130
|
+
title: translate('icon_picker_title'),
|
|
131
|
+
description: translate('icon_picker_description'),
|
|
132
|
+
isOpen: isOpen,
|
|
133
|
+
onClose: handleClose,
|
|
134
|
+
onScroll: handleScroll,
|
|
135
|
+
footer: footer,
|
|
136
|
+
headerIcon: {
|
|
137
|
+
name: 'arrows-rotate',
|
|
138
|
+
backgroundColor: '#D6E6FF'
|
|
139
|
+
}
|
|
140
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
141
|
+
className: _style.default.iconPicker
|
|
142
|
+
}, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
143
|
+
className: _style.default.searchWrapper
|
|
144
|
+
}, /*#__PURE__*/_react.default.createElement(_searchForm.default, {
|
|
145
|
+
search: {
|
|
146
|
+
placeholder: translate('search_place_holder'),
|
|
147
|
+
value: searchValue,
|
|
148
|
+
onChange: handleSearch
|
|
149
|
+
},
|
|
150
|
+
onReset: handleReset,
|
|
151
|
+
dataTestId: "search-input"
|
|
152
|
+
})), searchValue && (0, _size2.default)(searchResults) === 0 ? /*#__PURE__*/_react.default.createElement("div", {
|
|
153
|
+
className: _style.default.emptySearchResultContainer
|
|
154
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
155
|
+
className: _style.default.emptySearchResultTitle
|
|
156
|
+
}, translate('empty_search_result_title', {
|
|
157
|
+
searchValue
|
|
158
|
+
})), /*#__PURE__*/_react.default.createElement("div", {
|
|
159
|
+
className: _style.default.emptySearchResultDescription
|
|
160
|
+
}, translate('empty_search_result_description')), /*#__PURE__*/_react.default.createElement("div", {
|
|
161
|
+
className: _style.default.emptySearchResultClearSearch,
|
|
162
|
+
onClick: handleReset
|
|
163
|
+
}, translate('empty_search_result_clear_search'))) : /*#__PURE__*/_react.default.createElement("div", {
|
|
164
|
+
className: _style.default.iconsListWrapper
|
|
165
|
+
}, icons))));
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
IconPickerModal.contextTypes = {
|
|
169
|
+
translate: _provider.default.childContextTypes.translate
|
|
170
|
+
};
|
|
171
|
+
IconPickerModal.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
172
|
+
isOpen: _propTypes.default.bool,
|
|
173
|
+
onCancel: _propTypes.default.func,
|
|
174
|
+
onConfirm: _propTypes.default.func,
|
|
175
|
+
onClose: _propTypes.default.func
|
|
176
|
+
} : {};
|
|
177
|
+
var _default = IconPickerModal;
|
|
178
|
+
exports.default = _default;
|
|
179
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["ICONS_PER_LOAD","IconPickerModal","props","context","isOpen","onCancel","onConfirm","onClose","translate","selectedIcon","setSelectedIcon","useState","displayedIcons","setDisplayedIcons","currentIndex","setCurrentIndex","allIcons","useMemo","fas","searchValue","searchResults","handleSearch","handleReset","useIconSearch","handleCancel","useCallback","handleClose","handleIconClick","iconName","prevSelectedIcon","loadMoreIcons","nextIndex","newIcons","prevIcons","useEffect","handleScroll","event","scrollTop","clientHeight","scrollHeight","currentTarget","icons","index","isSelected","footer","cancelButton","label","confirmButton","disabled","color","COLORS","cm_primary_blue","name","backgroundColor","style","iconPicker","searchWrapper","placeholder","value","onChange","emptySearchResultContainer","emptySearchResultTitle","emptySearchResultDescription","emptySearchResultClearSearch","iconsListWrapper","contextTypes","Provider","childContextTypes","propTypes","PropTypes","bool","func"],"sources":["../../../src/molecule/icon-picker-modal/index.js"],"sourcesContent":["import React, {useMemo, useState, useCallback, useEffect} from 'react';\nimport PropTypes from 'prop-types';\nimport {fas} from '@fortawesome/pro-solid-svg-icons';\nimport {entries, map, pipe, get, values, slice, size} from 'lodash/fp';\nimport BaseModal from '../base-modal';\nimport SelectIcon from '../../atom/select-icon';\nimport Provider from '../../atom/provider';\nimport SearchForm from '../search-form';\nimport {COLORS} from '../../variables/colors';\nimport style from './style.css';\nimport useIconSearch from './use-icon-search';\n\nconst ICONS_PER_LOAD = 48;\n\nconst IconPickerModal = (props, context) => {\n const {isOpen, onCancel, onConfirm, onClose} = props;\n const {translate} = context;\n\n const [selectedIcon, setSelectedIcon] = useState(null);\n const [displayedIcons, setDisplayedIcons] = useState([]);\n const [currentIndex, setCurrentIndex] = useState(0);\n\n const allIcons = useMemo(() => pipe(values, map(get('iconName')))(fas), []);\n const {searchValue, searchResults, handleSearch, handleReset} = useIconSearch(allIcons);\n\n const handleCancel = useCallback(() => {\n onCancel();\n }, [onCancel]);\n\n const handleClose = useCallback(() => {\n onClose();\n }, [onClose]);\n\n const handleIconClick = useCallback(\n iconName => () => {\n setSelectedIcon(prevSelectedIcon => (prevSelectedIcon === iconName ? null : iconName));\n },\n []\n );\n\n const loadMoreIcons = useCallback(() => {\n const nextIndex = currentIndex + ICONS_PER_LOAD;\n const newIcons = slice(currentIndex, nextIndex, searchResults);\n setDisplayedIcons(prevIcons => [...prevIcons, ...newIcons]);\n setCurrentIndex(nextIndex);\n }, [currentIndex, searchResults]);\n\n useEffect(() => {\n setDisplayedIcons(() => slice(0, ICONS_PER_LOAD, searchResults));\n setCurrentIndex(ICONS_PER_LOAD);\n }, [searchResults]);\n\n const handleScroll = useCallback(\n event => {\n const {scrollTop, clientHeight, scrollHeight} = event.currentTarget;\n if (scrollHeight - scrollTop <= clientHeight + 1) {\n loadMoreIcons();\n }\n },\n [loadMoreIcons]\n );\n\n const icons = useMemo(\n () =>\n pipe(\n entries,\n map(([index, iconName]) => (\n <SelectIcon\n key={`icon-${index}`}\n size=\"responsive\"\n data-name={`icon-${index}`}\n aria-label={iconName}\n faIcon={iconName}\n onClick={handleIconClick(iconName)}\n options={{isSelected: selectedIcon === iconName}}\n />\n ))\n )(displayedIcons),\n [displayedIcons, selectedIcon, handleIconClick]\n );\n\n const footer = useMemo(() => {\n return {\n cancelButton: {\n onCancel: handleCancel,\n label: translate('cancel')\n },\n confirmButton: {\n onConfirm: () => {\n onConfirm(selectedIcon);\n setSelectedIcon(null);\n onClose();\n },\n label: translate('confirm'),\n iconName: 'plus',\n disabled: selectedIcon === null,\n color: COLORS.cm_primary_blue\n }\n };\n }, [handleCancel, onConfirm, onClose, translate, selectedIcon]);\n\n if (!isOpen) return null;\n\n return (\n <BaseModal\n title={translate('icon_picker_title')}\n description={translate('icon_picker_description')}\n isOpen={isOpen}\n onClose={handleClose}\n onScroll={handleScroll}\n footer={footer}\n headerIcon={{\n name: 'arrows-rotate',\n backgroundColor: '#D6E6FF'\n }}\n >\n <div className={style.iconPicker}>\n {\n <>\n <div className={style.searchWrapper}>\n <SearchForm\n search={{\n placeholder: translate('search_place_holder'),\n value: searchValue,\n onChange: handleSearch\n }}\n onReset={handleReset}\n dataTestId=\"search-input\"\n />\n </div>\n {searchValue && size(searchResults) === 0 ? (\n <div className={style.emptySearchResultContainer}>\n <div className={style.emptySearchResultTitle}>\n {translate('empty_search_result_title', {searchValue})}\n </div>\n <div className={style.emptySearchResultDescription}>\n {translate('empty_search_result_description')}\n </div>\n <div className={style.emptySearchResultClearSearch} onClick={handleReset}>\n {translate('empty_search_result_clear_search')}\n </div>\n </div>\n ) : (\n <div className={style.iconsListWrapper}>{icons}</div>\n )}\n </>\n }\n </div>\n </BaseModal>\n );\n};\n\nIconPickerModal.contextTypes = {\n translate: Provider.childContextTypes.translate\n};\n\nIconPickerModal.propTypes = {\n isOpen: PropTypes.bool,\n onCancel: PropTypes.func,\n onConfirm: PropTypes.func,\n onClose: PropTypes.func\n};\n\nexport default IconPickerModal;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
@value colors: "../../variables/colors.css";
|
|
2
|
+
@value cm_grey_100 from colors;
|
|
3
|
+
@value cm_primary_blue from colors;
|
|
4
|
+
@value cm_grey_500 from colors;
|
|
5
|
+
|
|
6
|
+
.iconPicker {
|
|
7
|
+
height: 485px;
|
|
8
|
+
width: calc(71vw - 68px);
|
|
9
|
+
max-width: 612px;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.searchWrapper {
|
|
13
|
+
border-radius: 12px;
|
|
14
|
+
width: 300px;
|
|
15
|
+
background-color: cm_grey_100;
|
|
16
|
+
margin-bottom: 20px;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.iconsListWrapper {
|
|
20
|
+
display: flex;
|
|
21
|
+
flex-wrap: wrap;
|
|
22
|
+
justify-content: left;
|
|
23
|
+
margin: auto;
|
|
24
|
+
gap: 12px;
|
|
25
|
+
overflow: visible;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.emptySearchResultContainer {
|
|
29
|
+
display: flex;
|
|
30
|
+
flex-direction: column;
|
|
31
|
+
align-items: center;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.emptySearchResultTitle {
|
|
35
|
+
font-size: 20px;
|
|
36
|
+
font-weight: 700;
|
|
37
|
+
line-height: 28px;
|
|
38
|
+
margin-bottom: 8px;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.emptySearchResultDescription {
|
|
42
|
+
font-size: 16px;
|
|
43
|
+
font-weight: 500;
|
|
44
|
+
line-height: 22px;
|
|
45
|
+
margin-bottom: 16px;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.emptySearchResultClearSearch {
|
|
49
|
+
color: #0061FF;
|
|
50
|
+
font-size: 14px;
|
|
51
|
+
font-style: normal;
|
|
52
|
+
font-weight: 600;
|
|
53
|
+
line-height: 20px;
|
|
54
|
+
cursor: pointer;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
@media mobile {
|
|
58
|
+
.iconPicker {
|
|
59
|
+
width: 100%;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export function filterIcons(query: any, allIcons: any): any;
|
|
2
|
+
export default useIconSearch;
|
|
3
|
+
declare function useIconSearch(allIcons: any): {
|
|
4
|
+
searchValue: string;
|
|
5
|
+
searchResults: any;
|
|
6
|
+
handleSearch: (value: any) => void;
|
|
7
|
+
handleReset: () => void;
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=use-icon-search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-icon-search.d.ts","sourceRoot":"","sources":["../../../src/molecule/icon-picker-modal/use-icon-search.js"],"names":[],"mappings":"AAGO,4DAEN;;AACD;;;;;EAiCC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.filterIcons = exports.default = void 0;
|
|
5
|
+
|
|
6
|
+
var _toLower2 = _interopRequireDefault(require("lodash/fp/toLower"));
|
|
7
|
+
|
|
8
|
+
var _includes2 = _interopRequireDefault(require("lodash/fp/includes"));
|
|
9
|
+
|
|
10
|
+
var _pipe2 = _interopRequireDefault(require("lodash/fp/pipe"));
|
|
11
|
+
|
|
12
|
+
var _filter2 = _interopRequireDefault(require("lodash/fp/filter"));
|
|
13
|
+
|
|
14
|
+
var _debounce2 = _interopRequireDefault(require("lodash/fp/debounce"));
|
|
15
|
+
|
|
16
|
+
var _react = require("react");
|
|
17
|
+
|
|
18
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
|
+
|
|
20
|
+
const filterIcons = (query, allIcons) => {
|
|
21
|
+
return query ? (0, _filter2.default)((0, _pipe2.default)(_toLower2.default, (0, _includes2.default)((0, _toLower2.default)(query))), allIcons) : allIcons;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
exports.filterIcons = filterIcons;
|
|
25
|
+
|
|
26
|
+
const useIconSearch = allIcons => {
|
|
27
|
+
const [searchValue, setSearchValue] = (0, _react.useState)('');
|
|
28
|
+
const [searchResults, setSearchResults] = (0, _react.useState)(allIcons);
|
|
29
|
+
const updateSearchResults = (0, _react.useCallback)(query => {
|
|
30
|
+
const results = filterIcons(query, allIcons);
|
|
31
|
+
setSearchResults(results);
|
|
32
|
+
}, [allIcons]);
|
|
33
|
+
const debouncedSearch = (0, _react.useMemo)(() => (0, _debounce2.default)(300, updateSearchResults), [updateSearchResults]);
|
|
34
|
+
const handleSearch = (0, _react.useCallback)(value => {
|
|
35
|
+
setSearchValue(value);
|
|
36
|
+
debouncedSearch(value);
|
|
37
|
+
}, [debouncedSearch]);
|
|
38
|
+
const handleReset = (0, _react.useCallback)(() => {
|
|
39
|
+
setSearchValue('');
|
|
40
|
+
updateSearchResults('');
|
|
41
|
+
}, [updateSearchResults]);
|
|
42
|
+
return {
|
|
43
|
+
searchValue,
|
|
44
|
+
searchResults,
|
|
45
|
+
handleSearch,
|
|
46
|
+
handleReset
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
var _default = useIconSearch;
|
|
51
|
+
exports.default = _default;
|
|
52
|
+
//# sourceMappingURL=use-icon-search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-icon-search.js","names":["filterIcons","query","allIcons","useIconSearch","searchValue","setSearchValue","useState","searchResults","setSearchResults","updateSearchResults","useCallback","results","debouncedSearch","useMemo","handleSearch","value","handleReset"],"sources":["../../../src/molecule/icon-picker-modal/use-icon-search.js"],"sourcesContent":["import {useState, useCallback, useMemo} from 'react';\nimport {debounce, filter, pipe, includes, toLower} from 'lodash/fp';\n\nexport const filterIcons = (query, allIcons) => {\n return query ? filter(pipe(toLower, includes(toLower(query))), allIcons) : allIcons;\n};\nconst useIconSearch = allIcons => {\n const [searchValue, setSearchValue] = useState('');\n const [searchResults, setSearchResults] = useState(allIcons);\n\n const updateSearchResults = useCallback(\n query => {\n const results = filterIcons(query, allIcons);\n setSearchResults(results);\n },\n [allIcons]\n );\n\n const debouncedSearch = useMemo(() => debounce(300, updateSearchResults), [updateSearchResults]);\n\n const handleSearch = useCallback(\n value => {\n setSearchValue(value);\n debouncedSearch(value);\n },\n [debouncedSearch]\n );\n\n const handleReset = useCallback(() => {\n setSearchValue('');\n updateSearchResults('');\n }, [updateSearchResults]);\n\n return {\n searchValue,\n searchResults,\n handleSearch,\n handleReset\n };\n};\n\nexport default useIconSearch;\n"],"mappings":";;;;;;;;;;;;;;;AAAA;;;;AAGO,MAAMA,WAAW,GAAG,CAACC,KAAD,EAAQC,QAAR,KAAqB;EAC9C,OAAOD,KAAK,GAAG,sBAAO,uCAAc,wBAAS,uBAAQA,KAAR,CAAT,CAAd,CAAP,EAAgDC,QAAhD,CAAH,GAA+DA,QAA3E;AACD,CAFM;;;;AAGP,MAAMC,aAAa,GAAGD,QAAQ,IAAI;EAChC,MAAM,CAACE,WAAD,EAAcC,cAAd,IAAgC,IAAAC,eAAA,EAAS,EAAT,CAAtC;EACA,MAAM,CAACC,aAAD,EAAgBC,gBAAhB,IAAoC,IAAAF,eAAA,EAASJ,QAAT,CAA1C;EAEA,MAAMO,mBAAmB,GAAG,IAAAC,kBAAA,EAC1BT,KAAK,IAAI;IACP,MAAMU,OAAO,GAAGX,WAAW,CAACC,KAAD,EAAQC,QAAR,CAA3B;IACAM,gBAAgB,CAACG,OAAD,CAAhB;EACD,CAJyB,EAK1B,CAACT,QAAD,CAL0B,CAA5B;EAQA,MAAMU,eAAe,GAAG,IAAAC,cAAA,EAAQ,MAAM,wBAAS,GAAT,EAAcJ,mBAAd,CAAd,EAAkD,CAACA,mBAAD,CAAlD,CAAxB;EAEA,MAAMK,YAAY,GAAG,IAAAJ,kBAAA,EACnBK,KAAK,IAAI;IACPV,cAAc,CAACU,KAAD,CAAd;IACAH,eAAe,CAACG,KAAD,CAAf;EACD,CAJkB,EAKnB,CAACH,eAAD,CALmB,CAArB;EAQA,MAAMI,WAAW,GAAG,IAAAN,kBAAA,EAAY,MAAM;IACpCL,cAAc,CAAC,EAAD,CAAd;IACAI,mBAAmB,CAAC,EAAD,CAAnB;EACD,CAHmB,EAGjB,CAACA,mBAAD,CAHiB,CAApB;EAKA,OAAO;IACLL,WADK;IAELG,aAFK;IAGLO,YAHK;IAILE;EAJK,CAAP;AAMD,CAjCD;;eAmCeb,a"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["uncappedMap","convert","cap","DetailSection","index","type","isLocked","downloadUrl","stars","context","translate","isTypeStars","DownloadButton","target","href","backgroundColor","color","width","position","faIcon","name","size","customStyle","padding","LockedTag","iconName","iconColor","preset","style","detailsInfo","detailsInfoText","detailsTitle","img","buttonContainer","ProgressWrapper","completedModules","mandatoryModules","title","subtitle","progression","sections","mandatoryCompletedModulesLocale","container","titleContainer","statscontainer","stats","statsNumber","customProgressBar","COLORS","positive","statsProgressionMobile","details","section","commonDetailSectionPropTypes","PropTypes","oneOf","string","number","contextTypes","Provider","childContextTypes","propTypes","bool","arrayOf","shape"],"sources":["../../../src/molecule/progress-wrapper/index.js"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport {isEmpty, map} from 'lodash/fp';\nimport Title from '../../atom/title';\nimport ProgressBar from '../progress-bar';\nimport {COLORS} from '../../variables/colors';\nimport Tag from '../../atom/tag';\nimport ButtonLink from '../../atom/button-link';\nimport Icon from '../../atom/icon';\nimport Provider from '../../atom/provider';\n// eslint-disable-next-line css-modules/no-unused-class\nimport style from './style.css';\n\nconst uncappedMap = map.convert({cap: false});\n\nconst DetailSection = ({index, type, isLocked, downloadUrl, stars}, context) => {\n const {translate} = context;\n const isTypeStars = type === 'stars';\n\n const DownloadButton = (\n <ButtonLink\n label={translate('download')}\n link={{\n target: '_blank',\n href: downloadUrl\n }}\n data-name={`download-${type}-button`}\n aria-label={`download ${type} button`}\n customStyle={{backgroundColor: '#F1F6FE', color: '#0061FF', width: 'auto'}}\n icon={{\n position: 'left',\n faIcon: {\n name: 'download',\n color: '#0061FF',\n size: 14,\n customStyle: {padding: 0}\n }\n }}\n disabled={isLocked}\n />\n );\n\n const LockedTag = (\n <Tag\n label=\"Locked\"\n size=\"S\"\n icon={{\n position: 'left',\n iconName: 'lock',\n iconColor: '#515161',\n preset: 's',\n customStyle: {padding: 0}\n }}\n />\n );\n\n return isTypeStars ? (\n <div\n className={style[`detailsSection${index}`]}\n data-name={type}\n aria-label={`${type} informations`}\n >\n <div className={style.detailsInfo}>\n <div className={style.detailsInfoText}>\n <span className={style.detailsTitle}>{translate('bonus_stars')}</span>\n {isLocked ? LockedTag : null}\n </div>\n <div className={style.stars}>\n <Icon iconName=\"star\" iconColor=\"#FFCE0A\" backgroundColor=\"#FFF9D1\" preset=\"xl\" />\n <span>{stars}</span>\n </div>\n </div>\n </div>\n ) : (\n <div\n className={style[`detailsSection${index}`]}\n data-name={type}\n aria-label={`${type} informations`}\n >\n <img\n className={style.img}\n src={\n type === 'badge'\n ? downloadUrl\n : 'https://s3.eu-west-1.amazonaws.com/static.coorpacademy.com/assets/images/diploma.svg'\n }\n />\n <div className={style.detailsInfo}>\n <div className={style.detailsInfoText}>\n <span className={style.detailsTitle}>\n {type === 'diploma' ? translate('diploma') : translate('badge')}\n </span>\n {isLocked ? LockedTag : null}\n </div>\n\n <div className={style.buttonContainer}>{DownloadButton}</div>\n </div>\n </div>\n );\n};\n\nconst ProgressWrapper = (\n {completedModules, mandatoryModules, title, subtitle, progression, sections},\n context\n) => {\n const {translate} = context;\n const mandatoryCompletedModulesLocale = translate('modules_completed_mandatory');\n const isLocked = progression !== 100;\n\n return (\n <div\n className={style.container}\n data-name=\"prgress-wrapper\"\n aria-label=\"progress wrapper section\"\n >\n <div className={style.titleContainer}>\n <Title type=\"form-group\" titleSize=\"medium\" title={title} subtitle={subtitle} />\n </div>\n <div className={style.statscontainer}>\n <div className={style.stats}>\n <div>\n <span className={style.statsNumber} data-name=\"progress-stats\">\n {`${\n completedModules > mandatoryModules ? mandatoryModules : completedModules\n } / ${mandatoryModules}`}\n </span>\n {mandatoryCompletedModulesLocale}\n </div>\n </div>\n <div className={style.progression}>\n <span className={style.statsNumber} data-name=\"progress-value\">\n {progression}%\n </span>\n </div>\n </div>\n <ProgressBar\n className={style.customProgressBar}\n style={{backgroundColor: COLORS.positive}}\n displayInfo={false}\n value={progression}\n max={100}\n />\n <div className={style.statsProgressionMobile}>\n <span className={style.statsNumber}>{progression}%</span>\n </div>\n\n {isEmpty(sections) ? null : (\n <div className={style.details}>\n {uncappedMap(\n (section, index) => (\n <DetailSection\n {...section}\n isLocked={isLocked}\n key={`${section.type}-${index}`}\n index={index}\n />\n ),\n sections\n )}\n </div>\n )}\n </div>\n );\n};\n\nconst commonDetailSectionPropTypes = {\n type: PropTypes.oneOf(['diploma', 'badge', 'stars']),\n downloadUrl: PropTypes.string,\n stars: PropTypes.number\n};\n\nDetailSection.contextTypes = {\n translate: Provider.childContextTypes.translate\n};\n\nDetailSection.propTypes = {\n index: PropTypes.number,\n isLocked: PropTypes.bool,\n ...commonDetailSectionPropTypes\n};\n\nProgressWrapper.contextTypes = {\n translate: Provider.childContextTypes.translate\n};\n\nProgressWrapper.propTypes = {\n title: PropTypes.string,\n subtitle: PropTypes.string,\n completedModules: PropTypes.number,\n mandatoryModules: PropTypes.number,\n progression: PropTypes.number,\n sections: PropTypes.arrayOf(PropTypes.shape(commonDetailSectionPropTypes))\n};\n\nexport default ProgressWrapper;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["uncappedMap","convert","cap","DetailSection","index","type","isLocked","downloadUrl","stars","context","translate","isTypeStars","DownloadButton","target","href","backgroundColor","color","width","position","faIcon","name","size","customStyle","padding","LockedTag","iconName","iconColor","preset","style","detailsInfo","detailsInfoText","detailsTitle","img","buttonContainer","ProgressWrapper","completedModules","mandatoryModules","title","subtitle","progression","sections","mandatoryCompletedModulesLocale","container","titleContainer","statscontainer","stats","statsNumber","customProgressBar","COLORS","positive","statsProgressionMobile","details","section","commonDetailSectionPropTypes","PropTypes","oneOf","string","number","contextTypes","Provider","childContextTypes","propTypes","bool","arrayOf","shape"],"sources":["../../../src/molecule/progress-wrapper/index.js"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport {isEmpty, map} from 'lodash/fp';\nimport Title from '../../atom/title';\nimport ProgressBar from '../progress-bar';\nimport {COLORS} from '../../variables/colors';\nimport Tag from '../../atom/tag';\nimport ButtonLink from '../../atom/button-link';\nimport Icon from '../../atom/icon';\nimport Provider from '../../atom/provider';\n// eslint-disable-next-line css-modules/no-unused-class\nimport style from './style.css';\n\nconst uncappedMap = map.convert({cap: false});\n\nconst DetailSection = ({index, type, isLocked, downloadUrl, stars}, context) => {\n const {translate} = context;\n const isTypeStars = type === 'stars';\n\n const DownloadButton = (\n <ButtonLink\n label={translate('download')}\n link={{\n target: '_blank',\n href: downloadUrl\n }}\n data-name={`download-${type}-button`}\n aria-label={`download ${type} button`}\n customStyle={{backgroundColor: '#F1F6FE', color: '#0061FF', width: 'auto'}}\n icon={{\n position: 'left',\n faIcon: {\n name: 'download',\n color: '#0061FF',\n size: 14,\n customStyle: {padding: 0}\n }\n }}\n disabled={isLocked}\n />\n );\n\n const LockedTag = (\n <Tag\n label={translate('locked')}\n size=\"S\"\n icon={{\n position: 'left',\n iconName: 'lock',\n iconColor: '#515161',\n preset: 's',\n customStyle: {padding: 0}\n }}\n />\n );\n\n return isTypeStars ? (\n <div\n className={style[`detailsSection${index}`]}\n data-name={type}\n aria-label={`${type} informations`}\n >\n <div className={style.detailsInfo}>\n <div className={style.detailsInfoText}>\n <span className={style.detailsTitle}>{translate('bonus_stars')}</span>\n {isLocked ? LockedTag : null}\n </div>\n <div className={style.stars}>\n <Icon iconName=\"star\" iconColor=\"#FFCE0A\" backgroundColor=\"#FFF9D1\" preset=\"xl\" />\n <span>{stars}</span>\n </div>\n </div>\n </div>\n ) : (\n <div\n className={style[`detailsSection${index}`]}\n data-name={type}\n aria-label={`${type} informations`}\n >\n <img\n className={style.img}\n src={\n type === 'badge'\n ? downloadUrl\n : 'https://s3.eu-west-1.amazonaws.com/static.coorpacademy.com/assets/images/diploma.svg'\n }\n />\n <div className={style.detailsInfo}>\n <div className={style.detailsInfoText}>\n <span className={style.detailsTitle}>\n {type === 'diploma' ? translate('diploma') : translate('badge')}\n </span>\n {isLocked ? LockedTag : null}\n </div>\n\n <div className={style.buttonContainer}>{DownloadButton}</div>\n </div>\n </div>\n );\n};\n\nconst ProgressWrapper = (\n {completedModules, mandatoryModules, title, subtitle, progression, sections},\n context\n) => {\n const {translate} = context;\n const mandatoryCompletedModulesLocale = translate('modules_completed_mandatory');\n const isLocked = progression !== 100;\n\n return (\n <div\n className={style.container}\n data-name=\"prgress-wrapper\"\n aria-label=\"progress wrapper section\"\n >\n <div className={style.titleContainer}>\n <Title type=\"form-group\" titleSize=\"medium\" title={title} subtitle={subtitle} />\n </div>\n <div className={style.statscontainer}>\n <div className={style.stats}>\n <div>\n <span className={style.statsNumber} data-name=\"progress-stats\">\n {`${\n completedModules > mandatoryModules ? mandatoryModules : completedModules\n } / ${mandatoryModules}`}\n </span>\n {mandatoryCompletedModulesLocale}\n </div>\n </div>\n <div className={style.progression}>\n <span className={style.statsNumber} data-name=\"progress-value\">\n {progression}%\n </span>\n </div>\n </div>\n <ProgressBar\n className={style.customProgressBar}\n style={{backgroundColor: COLORS.positive}}\n displayInfo={false}\n value={progression}\n max={100}\n />\n <div className={style.statsProgressionMobile}>\n <span className={style.statsNumber}>{progression}%</span>\n </div>\n\n {isEmpty(sections) ? null : (\n <div className={style.details}>\n {uncappedMap(\n (section, index) => (\n <DetailSection\n {...section}\n isLocked={isLocked}\n key={`${section.type}-${index}`}\n index={index}\n />\n ),\n sections\n )}\n </div>\n )}\n </div>\n );\n};\n\nconst commonDetailSectionPropTypes = {\n type: PropTypes.oneOf(['diploma', 'badge', 'stars']),\n downloadUrl: PropTypes.string,\n stars: PropTypes.number\n};\n\nDetailSection.contextTypes = {\n translate: Provider.childContextTypes.translate\n};\n\nDetailSection.propTypes = {\n index: PropTypes.number,\n isLocked: PropTypes.bool,\n ...commonDetailSectionPropTypes\n};\n\nProgressWrapper.contextTypes = {\n translate: Provider.childContextTypes.translate\n};\n\nProgressWrapper.propTypes = {\n title: PropTypes.string,\n subtitle: PropTypes.string,\n completedModules: PropTypes.number,\n mandatoryModules: PropTypes.number,\n progression: PropTypes.number,\n sections: PropTypes.arrayOf(PropTypes.shape(commonDetailSectionPropTypes))\n};\n\nexport default ProgressWrapper;\n"],"mappings":"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"}
|
|
@@ -62,6 +62,7 @@ declare namespace BrandLearningPriorities {
|
|
|
62
62
|
}> | PropTypes.InferProps<{
|
|
63
63
|
title: PropTypes.Validator<string>;
|
|
64
64
|
subtitle: PropTypes.Requireable<string>;
|
|
65
|
+
provider: PropTypes.Requireable<string>;
|
|
65
66
|
selected: PropTypes.Requireable<boolean>;
|
|
66
67
|
selectedColor: PropTypes.Requireable<string>;
|
|
67
68
|
dataColumns: PropTypes.Requireable<(PropTypes.InferProps<{
|
|
@@ -114,6 +115,17 @@ declare namespace BrandLearningPriorities {
|
|
|
114
115
|
'aria-label': PropTypes.Requireable<string>;
|
|
115
116
|
contentType: PropTypes.Requireable<string>;
|
|
116
117
|
id: PropTypes.Requireable<string>;
|
|
118
|
+
leftIcon: PropTypes.Requireable<PropTypes.InferProps<{
|
|
119
|
+
iconName: PropTypes.Requireable<string>;
|
|
120
|
+
iconColor: PropTypes.Requireable<string>;
|
|
121
|
+
backgroundColor: PropTypes.Requireable<string>;
|
|
122
|
+
borderRadius: PropTypes.Requireable<string>;
|
|
123
|
+
preset: PropTypes.Requireable<string>;
|
|
124
|
+
gradientBackground: PropTypes.Requireable<boolean>;
|
|
125
|
+
size: PropTypes.Requireable<number>;
|
|
126
|
+
wrapperSize: PropTypes.Requireable<number>;
|
|
127
|
+
}>>;
|
|
128
|
+
editAsIcon: PropTypes.Requireable<boolean>;
|
|
117
129
|
}> | PropTypes.InferProps<{
|
|
118
130
|
'aria-label': PropTypes.Requireable<string>;
|
|
119
131
|
id: PropTypes.Requireable<string>;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
export default ListItem;
|
|
2
|
-
declare function ListItem({ buttonLink, secondButtonLink, bulletPointMenuButton, tags, title, selected, selectedColor, subtitle, dataColumns, order, "aria-label": ariaLabel, disabled, contentType, isBulkStyle, isOverflowHidden, onClick }: {
|
|
2
|
+
declare function ListItem({ buttonLink, secondButtonLink, bulletPointMenuButton, tags, title, provider, selected, selectedColor, subtitle, dataColumns, order, "aria-label": ariaLabel, disabled, contentType, isBulkStyle, isOverflowHidden, onClick, leftIcon, editAsIcon }: {
|
|
3
3
|
buttonLink: any;
|
|
4
4
|
secondButtonLink: any;
|
|
5
5
|
bulletPointMenuButton: any;
|
|
6
6
|
tags: any;
|
|
7
7
|
title: any;
|
|
8
|
+
provider: any;
|
|
8
9
|
selected: any;
|
|
9
10
|
selectedColor: any;
|
|
10
11
|
subtitle: any;
|
|
@@ -16,6 +17,8 @@ declare function ListItem({ buttonLink, secondButtonLink, bulletPointMenuButton,
|
|
|
16
17
|
isBulkStyle?: boolean | undefined;
|
|
17
18
|
isOverflowHidden?: boolean | undefined;
|
|
18
19
|
onClick?: import("lodash/fp").LodashNoop | undefined;
|
|
20
|
+
leftIcon: any;
|
|
21
|
+
editAsIcon?: boolean | undefined;
|
|
19
22
|
}, context: any): JSX.Element;
|
|
20
23
|
declare namespace ListItem {
|
|
21
24
|
namespace contextTypes {
|
|
@@ -45,6 +48,7 @@ declare namespace ListItem {
|
|
|
45
48
|
const propTypes: {
|
|
46
49
|
title: PropTypes.Validator<string>;
|
|
47
50
|
subtitle: PropTypes.Requireable<string>;
|
|
51
|
+
provider: PropTypes.Requireable<string>;
|
|
48
52
|
selected: PropTypes.Requireable<boolean>;
|
|
49
53
|
selectedColor: PropTypes.Requireable<string>;
|
|
50
54
|
dataColumns: PropTypes.Requireable<(PropTypes.InferProps<{
|
|
@@ -97,6 +101,17 @@ declare namespace ListItem {
|
|
|
97
101
|
'aria-label': PropTypes.Requireable<string>;
|
|
98
102
|
contentType: PropTypes.Requireable<string>;
|
|
99
103
|
id: PropTypes.Requireable<string>;
|
|
104
|
+
leftIcon: PropTypes.Requireable<PropTypes.InferProps<{
|
|
105
|
+
iconName: PropTypes.Requireable<string>;
|
|
106
|
+
iconColor: PropTypes.Requireable<string>;
|
|
107
|
+
backgroundColor: PropTypes.Requireable<string>;
|
|
108
|
+
borderRadius: PropTypes.Requireable<string>;
|
|
109
|
+
preset: PropTypes.Requireable<string>;
|
|
110
|
+
gradientBackground: PropTypes.Requireable<boolean>;
|
|
111
|
+
size: PropTypes.Requireable<number>;
|
|
112
|
+
wrapperSize: PropTypes.Requireable<number>;
|
|
113
|
+
}>>;
|
|
114
|
+
editAsIcon: PropTypes.Requireable<boolean>;
|
|
100
115
|
};
|
|
101
116
|
}
|
|
102
117
|
import PropTypes from "prop-types";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/organism/list-item/index.js"],"names":[],"mappings":";AAaA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/organism/list-item/index.js"],"names":[],"mappings":";AAaA;;;;;;;;;;;;;;;;;;;;8BAiJC"}
|
|
@@ -29,6 +29,8 @@ var _buttonLink = _interopRequireDefault(require("../../atom/button-link"));
|
|
|
29
29
|
|
|
30
30
|
var _bulletPointMenuButton = _interopRequireDefault(require("../../molecule/bullet-point-menu-button"));
|
|
31
31
|
|
|
32
|
+
var _colors = _interopRequireDefault(require("../../variables/colors"));
|
|
33
|
+
|
|
32
34
|
var _style = _interopRequireDefault(require("./style.css"));
|
|
33
35
|
|
|
34
36
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -41,6 +43,7 @@ const ListItem = ({
|
|
|
41
43
|
bulletPointMenuButton,
|
|
42
44
|
tags,
|
|
43
45
|
title,
|
|
46
|
+
provider,
|
|
44
47
|
selected,
|
|
45
48
|
selectedColor,
|
|
46
49
|
subtitle,
|
|
@@ -51,7 +54,9 @@ const ListItem = ({
|
|
|
51
54
|
contentType,
|
|
52
55
|
isBulkStyle = false,
|
|
53
56
|
isOverflowHidden = false,
|
|
54
|
-
onClick = _noop2.default
|
|
57
|
+
onClick = _noop2.default,
|
|
58
|
+
leftIcon,
|
|
59
|
+
editAsIcon = false
|
|
55
60
|
}, context) => {
|
|
56
61
|
const {
|
|
57
62
|
skin
|
|
@@ -89,6 +94,24 @@ const ListItem = ({
|
|
|
89
94
|
className: _style.default.order,
|
|
90
95
|
"aria-label": ariaLabel
|
|
91
96
|
}, order + 1) : null;
|
|
97
|
+
const handleButtonLinkClick = buttonLink?.onClick || _noop2.default;
|
|
98
|
+
|
|
99
|
+
const handleRenderButtonLink = () => {
|
|
100
|
+
if (editAsIcon && buttonLink) {
|
|
101
|
+
return /*#__PURE__*/_react.default.createElement(_icon.default, {
|
|
102
|
+
iconName: buttonLink.icon?.type || 'edit',
|
|
103
|
+
onClick: handleButtonLinkClick,
|
|
104
|
+
className: _style.default.editIcon
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
if (buttonLink) {
|
|
109
|
+
return /*#__PURE__*/_react.default.createElement(_buttonLink.default, buttonLink);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
return null;
|
|
113
|
+
};
|
|
114
|
+
|
|
92
115
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
93
116
|
className: (0, _classnames.default)(_style.default.wrapper, isBulkStyle && _style.default.gridLayout, subtitle && _style.default.withSubtitle, disabled && _style.default.disabled, onClick !== _noop2.default && !disabled && _style.default.cursorPointer),
|
|
94
117
|
onClick: !disabled ? onClick : undefined,
|
|
@@ -96,21 +119,37 @@ const ListItem = ({
|
|
|
96
119
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
97
120
|
className: (0, _classnames.default)(_style.default.dataColumnsWrapper, isOverflowHidden && _style.default.hiddenOverflowX)
|
|
98
121
|
}, isPublished && contentType === 'certification' ? orderView : null, /*#__PURE__*/_react.default.createElement("div", {
|
|
122
|
+
className: _style.default.leftSection
|
|
123
|
+
}, leftIcon ? /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_icon.default, {
|
|
124
|
+
iconName: leftIcon.iconName,
|
|
125
|
+
gradientBackground: leftIcon.gradientBackground || true,
|
|
126
|
+
iconColor: leftIcon.iconColor || primarySelectedColor,
|
|
127
|
+
preset: leftIcon.preset || 'xl',
|
|
128
|
+
borderRadius: leftIcon.borderRadius || '25%'
|
|
129
|
+
})) : null), /*#__PURE__*/_react.default.createElement("div", {
|
|
130
|
+
className: _style.default.titleWrapper
|
|
131
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
132
|
+
className: _style.default.titleProviderWrapper
|
|
133
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
99
134
|
className: _style.default.title,
|
|
100
135
|
title: title
|
|
101
|
-
}, title,
|
|
136
|
+
}, title), provider ? /*#__PURE__*/_react.default.createElement(_tag.default, {
|
|
137
|
+
label: provider,
|
|
138
|
+
type: "default",
|
|
139
|
+
className: _style.default.providerTag
|
|
140
|
+
}) : null), subtitle ? /*#__PURE__*/_react.default.createElement("div", {
|
|
102
141
|
className: _style.default.subtitle
|
|
103
142
|
}, subtitle) : null), dataColumnsView), /*#__PURE__*/_react.default.createElement("div", {
|
|
104
143
|
className: _style.default.settings
|
|
105
144
|
}, tagsView, selected ? /*#__PURE__*/_react.default.createElement(_icon.default, {
|
|
106
145
|
iconName: "circle-check",
|
|
107
146
|
iconColor: primarySelectedColor,
|
|
108
|
-
backgroundColor:
|
|
147
|
+
backgroundColor: _colors.default.white,
|
|
109
148
|
size: {
|
|
110
149
|
faSize: 16,
|
|
111
150
|
wrapperSize: 16
|
|
112
151
|
}
|
|
113
|
-
}) : null,
|
|
152
|
+
}) : null, handleRenderButtonLink(), secondButtonLink ? /*#__PURE__*/_react.default.createElement(_buttonLink.default, secondButtonLink) : null, !(0, _isEmpty2.default)(bulletPointMenuButton) ? /*#__PURE__*/_react.default.createElement(_bulletPointMenuButton.default, bulletPointMenuButton) : null));
|
|
114
153
|
};
|
|
115
154
|
|
|
116
155
|
ListItem.contextTypes = {
|
|
@@ -120,6 +159,7 @@ ListItem.contextTypes = {
|
|
|
120
159
|
ListItem.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
121
160
|
title: _propTypes.default.string.isRequired,
|
|
122
161
|
subtitle: _propTypes.default.string,
|
|
162
|
+
provider: _propTypes.default.string,
|
|
123
163
|
selected: _propTypes.default.bool,
|
|
124
164
|
selectedColor: _propTypes.default.string,
|
|
125
165
|
dataColumns: _propTypes.default.arrayOf(_propTypes.default.shape({
|
|
@@ -171,7 +211,18 @@ ListItem.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
|
171
211
|
order: _propTypes.default.number,
|
|
172
212
|
'aria-label': _propTypes.default.string,
|
|
173
213
|
contentType: _propTypes.default.string,
|
|
174
|
-
id: _propTypes.default.string
|
|
214
|
+
id: _propTypes.default.string,
|
|
215
|
+
leftIcon: _propTypes.default.shape({
|
|
216
|
+
iconName: _propTypes.default.string,
|
|
217
|
+
iconColor: _propTypes.default.string,
|
|
218
|
+
backgroundColor: _propTypes.default.string,
|
|
219
|
+
borderRadius: _propTypes.default.string,
|
|
220
|
+
preset: _propTypes.default.string,
|
|
221
|
+
gradientBackground: _propTypes.default.bool,
|
|
222
|
+
size: _propTypes.default.number,
|
|
223
|
+
wrapperSize: _propTypes.default.number
|
|
224
|
+
}),
|
|
225
|
+
editAsIcon: _propTypes.default.bool
|
|
175
226
|
} : {};
|
|
176
227
|
var _default = ListItem;
|
|
177
228
|
exports.default = _default;
|