@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.
Files changed (181) hide show
  1. package/es/atom/icon/index.d.ts +1 -0
  2. package/es/atom/icon/index.d.ts.map +1 -1
  3. package/es/atom/icon/index.js +8 -1
  4. package/es/atom/icon/index.js.map +1 -1
  5. package/es/atom/select-icon/index.d.ts +17 -0
  6. package/es/atom/select-icon/index.d.ts.map +1 -0
  7. package/es/atom/select-icon/index.js +93 -0
  8. package/es/atom/select-icon/index.js.map +1 -0
  9. package/es/atom/select-icon/style.css +73 -0
  10. package/es/molecule/base-modal/index.d.ts +1 -0
  11. package/es/molecule/base-modal/index.d.ts.map +1 -1
  12. package/es/molecule/base-modal/index.js +9 -4
  13. package/es/molecule/base-modal/index.js.map +1 -1
  14. package/es/molecule/certification-card/index.d.ts.map +1 -1
  15. package/es/molecule/certification-card/index.js +4 -2
  16. package/es/molecule/certification-card/index.js.map +1 -1
  17. package/es/molecule/certification-card/style.css +23 -7
  18. package/es/molecule/cm-popin/types.d.ts +12 -0
  19. package/es/molecule/cm-popin/types.d.ts.map +1 -1
  20. package/es/molecule/draggable-list/index.d.ts +12 -0
  21. package/es/molecule/icon-picker-modal/index.d.ts +15 -0
  22. package/es/molecule/icon-picker-modal/index.d.ts.map +1 -0
  23. package/es/molecule/icon-picker-modal/index.js +152 -0
  24. package/es/molecule/icon-picker-modal/index.js.map +1 -0
  25. package/es/molecule/icon-picker-modal/style.css +61 -0
  26. package/es/molecule/icon-picker-modal/use-icon-search.d.ts +9 -0
  27. package/es/molecule/icon-picker-modal/use-icon-search.d.ts.map +1 -0
  28. package/es/molecule/icon-picker-modal/use-icon-search.js +36 -0
  29. package/es/molecule/icon-picker-modal/use-icon-search.js.map +1 -0
  30. package/es/molecule/progress-wrapper/index.js +1 -1
  31. package/es/molecule/progress-wrapper/index.js.map +1 -1
  32. package/es/molecule/progress-wrapper/style.css +1 -0
  33. package/es/organism/brand-learning-priorities/index.d.ts +12 -0
  34. package/es/organism/list-item/index.d.ts +16 -1
  35. package/es/organism/list-item/index.d.ts.map +1 -1
  36. package/es/organism/list-item/index.js +58 -9
  37. package/es/organism/list-item/index.js.map +1 -1
  38. package/es/organism/list-item/style.css +25 -11
  39. package/es/organism/list-items/index.d.ts +12 -0
  40. package/es/template/app-player/loading/index.d.ts +12 -0
  41. package/es/template/app-player/player/index.d.ts +24 -0
  42. package/es/template/app-player/player/slides/index.d.ts +12 -0
  43. package/es/template/app-player/player/slides/index.d.ts.map +1 -1
  44. package/es/template/app-player/popin-correction/index.d.ts +12 -0
  45. package/es/template/app-player/popin-correction/index.d.ts.map +1 -1
  46. package/es/template/app-player/popin-end/index.d.ts +12 -0
  47. package/es/template/app-review/index.d.ts +12 -0
  48. package/es/template/app-review/index.d.ts.map +1 -1
  49. package/es/template/app-review/player/prop-types.d.ts +12 -0
  50. package/es/template/app-review/player/prop-types.d.ts.map +1 -1
  51. package/es/template/app-review/prop-types.d.ts +12 -0
  52. package/es/template/app-review/prop-types.d.ts.map +1 -1
  53. package/es/template/back-office/brand-update/index.d.ts +36 -0
  54. package/es/template/certification-detail/index.d.ts +1 -1
  55. package/es/template/certification-detail/index.d.ts.map +1 -1
  56. package/es/template/certification-detail/index.js +16 -5
  57. package/es/template/certification-detail/index.js.map +1 -1
  58. package/es/template/certification-detail/style.css +0 -1
  59. package/es/template/certifications/index.d.ts.map +1 -1
  60. package/es/template/certifications/index.js +3 -1
  61. package/es/template/certifications/index.js.map +1 -1
  62. package/es/template/certifications/style.css +8 -1
  63. package/es/template/common/dashboard/index.d.ts +24 -0
  64. package/es/template/common/search-page/index.d.ts +12 -0
  65. package/es/template/external-course/index.d.ts +12 -0
  66. package/es/template/playlist-detail/index.d.ts.map +1 -1
  67. package/es/template/playlist-detail/index.js +15 -4
  68. package/es/template/playlist-detail/index.js.map +1 -1
  69. package/es/template/playlist-detail/style.css +0 -1
  70. package/es/template/skill-detail/index.d.ts.map +1 -1
  71. package/es/template/skill-detail/index.js +15 -3
  72. package/es/template/skill-detail/index.js.map +1 -1
  73. package/es/variables/colors.d.ts +1 -0
  74. package/es/variables/colors.d.ts.map +1 -1
  75. package/es/variables/colors.js +1 -0
  76. package/es/variables/colors.js.map +1 -1
  77. package/lib/atom/icon/index.d.ts +1 -0
  78. package/lib/atom/icon/index.d.ts.map +1 -1
  79. package/lib/atom/icon/index.js +12 -2
  80. package/lib/atom/icon/index.js.map +1 -1
  81. package/lib/atom/select-icon/index.d.ts +17 -0
  82. package/lib/atom/select-icon/index.d.ts.map +1 -0
  83. package/lib/atom/select-icon/index.js +111 -0
  84. package/lib/atom/select-icon/index.js.map +1 -0
  85. package/lib/atom/select-icon/style.css +73 -0
  86. package/lib/molecule/base-modal/index.d.ts +1 -0
  87. package/lib/molecule/base-modal/index.d.ts.map +1 -1
  88. package/lib/molecule/base-modal/index.js +9 -4
  89. package/lib/molecule/base-modal/index.js.map +1 -1
  90. package/lib/molecule/certification-card/index.d.ts.map +1 -1
  91. package/lib/molecule/certification-card/index.js +4 -2
  92. package/lib/molecule/certification-card/index.js.map +1 -1
  93. package/lib/molecule/certification-card/style.css +23 -7
  94. package/lib/molecule/cm-popin/types.d.ts +12 -0
  95. package/lib/molecule/cm-popin/types.d.ts.map +1 -1
  96. package/lib/molecule/draggable-list/index.d.ts +12 -0
  97. package/lib/molecule/icon-picker-modal/index.d.ts +15 -0
  98. package/lib/molecule/icon-picker-modal/index.d.ts.map +1 -0
  99. package/lib/molecule/icon-picker-modal/index.js +179 -0
  100. package/lib/molecule/icon-picker-modal/index.js.map +1 -0
  101. package/lib/molecule/icon-picker-modal/style.css +61 -0
  102. package/lib/molecule/icon-picker-modal/use-icon-search.d.ts +9 -0
  103. package/lib/molecule/icon-picker-modal/use-icon-search.d.ts.map +1 -0
  104. package/lib/molecule/icon-picker-modal/use-icon-search.js +52 -0
  105. package/lib/molecule/icon-picker-modal/use-icon-search.js.map +1 -0
  106. package/lib/molecule/progress-wrapper/index.js +1 -1
  107. package/lib/molecule/progress-wrapper/index.js.map +1 -1
  108. package/lib/molecule/progress-wrapper/style.css +1 -0
  109. package/lib/organism/brand-learning-priorities/index.d.ts +12 -0
  110. package/lib/organism/list-item/index.d.ts +16 -1
  111. package/lib/organism/list-item/index.d.ts.map +1 -1
  112. package/lib/organism/list-item/index.js +56 -5
  113. package/lib/organism/list-item/index.js.map +1 -1
  114. package/lib/organism/list-item/style.css +25 -11
  115. package/lib/organism/list-items/index.d.ts +12 -0
  116. package/lib/template/app-player/loading/index.d.ts +12 -0
  117. package/lib/template/app-player/player/index.d.ts +24 -0
  118. package/lib/template/app-player/player/slides/index.d.ts +12 -0
  119. package/lib/template/app-player/player/slides/index.d.ts.map +1 -1
  120. package/lib/template/app-player/popin-correction/index.d.ts +12 -0
  121. package/lib/template/app-player/popin-correction/index.d.ts.map +1 -1
  122. package/lib/template/app-player/popin-end/index.d.ts +12 -0
  123. package/lib/template/app-review/index.d.ts +12 -0
  124. package/lib/template/app-review/index.d.ts.map +1 -1
  125. package/lib/template/app-review/player/prop-types.d.ts +12 -0
  126. package/lib/template/app-review/player/prop-types.d.ts.map +1 -1
  127. package/lib/template/app-review/prop-types.d.ts +12 -0
  128. package/lib/template/app-review/prop-types.d.ts.map +1 -1
  129. package/lib/template/back-office/brand-update/index.d.ts +36 -0
  130. package/lib/template/certification-detail/index.d.ts +1 -1
  131. package/lib/template/certification-detail/index.d.ts.map +1 -1
  132. package/lib/template/certification-detail/index.js +15 -5
  133. package/lib/template/certification-detail/index.js.map +1 -1
  134. package/lib/template/certification-detail/style.css +0 -1
  135. package/lib/template/certifications/index.d.ts.map +1 -1
  136. package/lib/template/certifications/index.js +3 -1
  137. package/lib/template/certifications/index.js.map +1 -1
  138. package/lib/template/certifications/style.css +8 -1
  139. package/lib/template/common/dashboard/index.d.ts +24 -0
  140. package/lib/template/common/search-page/index.d.ts +12 -0
  141. package/lib/template/external-course/index.d.ts +12 -0
  142. package/lib/template/playlist-detail/index.d.ts.map +1 -1
  143. package/lib/template/playlist-detail/index.js +14 -4
  144. package/lib/template/playlist-detail/index.js.map +1 -1
  145. package/lib/template/playlist-detail/style.css +0 -1
  146. package/lib/template/skill-detail/index.d.ts.map +1 -1
  147. package/lib/template/skill-detail/index.js +14 -2
  148. package/lib/template/skill-detail/index.js.map +1 -1
  149. package/lib/variables/colors.d.ts +1 -0
  150. package/lib/variables/colors.d.ts.map +1 -1
  151. package/lib/variables/colors.js +1 -0
  152. package/lib/variables/colors.js.map +1 -1
  153. package/locales/bs/global.json +12 -8
  154. package/locales/cs/global.json +12 -8
  155. package/locales/de/global.json +12 -8
  156. package/locales/en/global.json +4 -0
  157. package/locales/es/global.json +12 -8
  158. package/locales/et/global.json +12 -8
  159. package/locales/fi/global.json +12 -8
  160. package/locales/fr/global.json +12 -8
  161. package/locales/hr/global.json +12 -8
  162. package/locales/hu/global.json +12 -8
  163. package/locales/hy/global.json +12 -8
  164. package/locales/it/global.json +12 -8
  165. package/locales/ja/global.json +12 -8
  166. package/locales/ko/global.json +12 -8
  167. package/locales/nl/global.json +12 -8
  168. package/locales/pl/global.json +12 -8
  169. package/locales/pt/global.json +12 -8
  170. package/locales/ro/global.json +12 -8
  171. package/locales/ru/global.json +12 -8
  172. package/locales/sk/global.json +12 -8
  173. package/locales/sl/global.json +12 -8
  174. package/locales/sv/global.json +12 -8
  175. package/locales/tl/global.json +12 -8
  176. package/locales/tr/global.json +12 -8
  177. package/locales/uk/global.json +12 -8
  178. package/locales/vi/global.json +12 -8
  179. package/locales/zh/global.json +12 -8
  180. package/locales/zh_TW/global.json +12 -8
  181. 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"}
@@ -75,7 +75,7 @@ const DetailSection = ({
75
75
  });
76
76
 
77
77
  const LockedTag = /*#__PURE__*/_react.default.createElement(_tag.default, {
78
- label: "Locked",
78
+ label: translate('locked'),
79
79
  size: "S",
80
80
  icon: {
81
81
  position: 'left',
@@ -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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"}
@@ -108,6 +108,7 @@
108
108
 
109
109
  .img {
110
110
  height: 100%;
111
+ max-width: 160px;
111
112
  }
112
113
 
113
114
  .buttonContainer {
@@ -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;;;;;;;;;;;;;;;;;8BAwGC"}
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, subtitle ? /*#__PURE__*/_react.default.createElement("div", {
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: '#ffffff',
147
+ backgroundColor: _colors.default.white,
109
148
  size: {
110
149
  faSize: 16,
111
150
  wrapperSize: 16
112
151
  }
113
- }) : null, buttonLink ? /*#__PURE__*/_react.default.createElement(_buttonLink.default, buttonLink) : null, secondButtonLink ? /*#__PURE__*/_react.default.createElement(_buttonLink.default, secondButtonLink) : null, !(0, _isEmpty2.default)(bulletPointMenuButton) ? /*#__PURE__*/_react.default.createElement(_bulletPointMenuButton.default, bulletPointMenuButton) : 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;