@coorpacademy/components 11.40.4-alpha.45 → 11.40.4-alpha.999.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.
@@ -51,7 +51,6 @@ declare namespace BaseModal {
51
51
  }>>;
52
52
  }> | null | undefined>>;
53
53
  const onClose: PropTypes.Requireable<(...args: any[]) => any>;
54
- const onScroll: PropTypes.Requireable<(...args: any[]) => any>;
55
54
  const detectScrollbar: PropTypes.Requireable<boolean>;
56
55
  const customStyle: PropTypes.Requireable<{
57
56
  [x: string]: NonNullable<string | number | null | undefined> | null | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule/base-modal/index.js"],"names":[],"mappings":";AAUA,yEA8LC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule/base-modal/index.js"],"names":[],"mappings":";AAUA,yEA4LC"}
@@ -19,7 +19,6 @@ const BaseModal = (props, context) => {
19
19
  isOpen,
20
20
  footer,
21
21
  onClose,
22
- onScroll,
23
22
  detectScrollbar = false,
24
23
  customStyle
25
24
  } = props;
@@ -185,7 +184,6 @@ const BaseModal = (props, context) => {
185
184
  }))), /*#__PURE__*/React.createElement("div", {
186
185
  ref: bodyRef,
187
186
  className: isScrollbarVisible ? style.body : style.bodyWithoutScrollbar,
188
- onScroll: onScroll,
189
187
  "data-testid": "modal-body"
190
188
  }, children), /*#__PURE__*/React.createElement(Footer, null)));
191
189
  };
@@ -219,7 +217,6 @@ BaseModal.propTypes = process.env.NODE_ENV !== "production" ? {
219
217
  })
220
218
  })]),
221
219
  onClose: PropTypes.func,
222
- onScroll: PropTypes.func,
223
220
  detectScrollbar: PropTypes.bool,
224
221
  customStyle: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number]))
225
222
  } : {};
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","useCallback","useEffect","useRef","useState","PropTypes","convert","Provider","Icon","ButtonLink","COLORS","style","BaseModal","props","context","title","description","headerIcon","children","isOpen","footer","onClose","onScroll","detectScrollbar","customStyle","skin","bodyRef","isScrollbarVisible","setIsScrollbarVisible","checkScrollbar","bodyElement","current","scrollHeight","clientHeight","debouncedCheckScrollbar","_debounce","mutationObserver","MutationObserver","observe","childList","subtree","resizeObserver","ResizeObserver","disconnect","cancel","handleEscape","event","key","document","addEventListener","removeEventListener","Footer","_isEmpty","cancelButton","confirmButton","text","isError","label","cancelLabel","onCancel","disabled","cancelDisabled","confirmLabel","onConfirm","confirmDisabled","iconName","color","buttonConfirmColor","_get","createElement","className","footerCTAWrapper","button","type","onClick","_extends","backgroundColor","paddingLeft","hoverBackgroundColor","hoverColor","white","icon","position","faIcon","name","size","padding","footerDescription","footerDescriptionError","handleOnClose","e","stopPropagation","modalWrapper","modal","header","iconColor","faSize","wrapperSize","headerContent","headerTitle","headerDescription","headerCloseIcon","ref","body","bodyWithoutScrollbar","contextTypes","childContextTypes","propTypes","process","env","NODE_ENV","string","shape","node","bool","oneOfType","func","boolean","objectOf","number"],"sources":["../../../src/molecule/base-modal/index.js"],"sourcesContent":["import React, {useCallback, useEffect, useRef, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {isEmpty, get, debounce} from 'lodash/fp';\nimport {convert} from 'css-color-function';\nimport Provider from '../../atom/provider';\nimport Icon from '../../atom/icon';\nimport ButtonLink from '../../atom/button-link';\nimport {COLORS} from '../../variables/colors';\nimport style from './style.css';\n\nconst BaseModal = (props, context) => {\n const {\n title,\n description,\n headerIcon,\n children,\n isOpen,\n footer,\n onClose,\n onScroll,\n detectScrollbar = false,\n customStyle\n } = props;\n const {skin} = context;\n const bodyRef = useRef(null);\n const [isScrollbarVisible, setIsScrollbarVisible] = useState(!detectScrollbar);\n\n const checkScrollbar = () => {\n const bodyElement = bodyRef.current;\n if (bodyElement) {\n setIsScrollbarVisible(bodyElement.scrollHeight > bodyElement.clientHeight);\n }\n };\n\n useEffect(() => {\n if (!detectScrollbar) return;\n const bodyElement = bodyRef.current;\n\n if (!bodyElement) return;\n\n const debouncedCheckScrollbar = debounce(100, () => {\n checkScrollbar();\n });\n\n // Observer of the body content\n const mutationObserver = new MutationObserver(() => {\n debouncedCheckScrollbar();\n });\n\n mutationObserver.observe(bodyElement, {childList: true, subtree: true});\n\n // Observer of the body size\n const resizeObserver = new ResizeObserver(() => {\n debouncedCheckScrollbar();\n });\n\n if (bodyRef.current) {\n resizeObserver.observe(bodyRef.current);\n }\n\n checkScrollbar();\n\n return () => {\n mutationObserver.disconnect();\n resizeObserver.disconnect();\n debouncedCheckScrollbar.cancel();\n };\n }, [children, detectScrollbar]);\n\n // Handle escape key press\n useEffect(() => {\n if (!isOpen || !onClose) return;\n\n const handleEscape = event => {\n if (event.key === 'Escape') {\n onClose();\n }\n };\n\n document.addEventListener('keydown', handleEscape);\n return () => {\n document.removeEventListener('keydown', handleEscape);\n };\n }, [isOpen, onClose]);\n\n const Footer = useCallback(() => {\n if (isEmpty(footer)) return null;\n if (typeof footer === 'function') return footer();\n\n const {cancelButton, confirmButton, text, isError} = footer;\n const {label: cancelLabel, onCancel, disabled: cancelDisabled} = cancelButton || {};\n const {\n label: confirmLabel,\n onConfirm,\n disabled: confirmDisabled,\n iconName,\n color\n } = confirmButton || {};\n const buttonConfirmColor = color || get('common.primary', skin);\n\n return (\n <div className={style.footer}>\n <div className={style.footerCTAWrapper}>\n {onCancel && cancelLabel ? (\n <ButtonLink\n {...{\n className: style.button,\n type: 'secondary',\n onClick: onCancel,\n label: cancelLabel,\n disabled: cancelDisabled,\n 'data-testid': `button-link-${cancelLabel}`\n }}\n />\n ) : null}\n {onConfirm && confirmLabel ? (\n <div>\n <ButtonLink\n {...{\n customStyle: {backgroundColor: buttonConfirmColor, paddingLeft: '16px'},\n hoverBackgroundColor: convert(\n `hsl(from ${buttonConfirmColor} h s calc(l*(1 - 0.08)))`\n ),\n hoverColor: COLORS.white,\n className: style.button,\n type: 'primary',\n onClick: onConfirm,\n label: confirmLabel,\n disabled: confirmDisabled,\n ...(iconName\n ? {\n icon: {\n position: 'left',\n faIcon: {\n name: iconName,\n color: COLORS.white,\n size: 14,\n customStyle: {padding: 0}\n }\n }\n }\n : {}),\n 'data-testid': `button-link-${confirmLabel}`\n }}\n />\n </div>\n ) : null}\n </div>\n {text ? (\n <div\n className={`${style.footerDescription} ${isError ? style.footerDescriptionError : ''}`}\n >\n {text}\n </div>\n ) : null}\n </div>\n );\n }, [footer, skin]);\n\n if (!isOpen || !title || !children) return null;\n\n function handleOnClose(e) {\n e?.stopPropagation();\n onClose();\n }\n\n return (\n <div className={style.modalWrapper} data-testid=\"modal\">\n <div className={style.modal} style={customStyle}>\n <header className={style.header}>\n {headerIcon?.name ? (\n <div className={style.headerIcon}>\n <Icon\n iconName={headerIcon.name}\n iconColor={headerIcon.color}\n backgroundColor={headerIcon.backgroundColor}\n size={{faSize: 20, wrapperSize: 48}}\n />\n </div>\n ) : null}\n <div className={style.headerContent}>\n <div className={style.headerTitle}>{title}</div>\n {description ? <div className={style.headerDescription}>{description}</div> : null}\n </div>\n <div className={style.headerCloseIcon} onClick={handleOnClose} data-testid=\"close-icon\">\n <Icon iconName=\"close\" backgroundColor=\"#F4F4F5\" size={{faSize: 14, wrapperSize: 28}} />\n </div>\n </header>\n <div\n ref={bodyRef}\n className={isScrollbarVisible ? style.body : style.bodyWithoutScrollbar}\n onScroll={onScroll}\n data-testid=\"modal-body\"\n >\n {children}\n </div>\n <Footer />\n </div>\n </div>\n );\n};\n\nBaseModal.contextTypes = {\n skin: Provider.childContextTypes.skin\n};\n\nBaseModal.propTypes = {\n title: PropTypes.string,\n headerIcon: PropTypes.shape({\n name: PropTypes.string,\n color: PropTypes.string,\n backgroundColor: PropTypes.string\n }),\n description: PropTypes.string,\n children: PropTypes.node,\n isOpen: PropTypes.bool,\n footer: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({\n text: PropTypes.string,\n isError: PropTypes.boolean,\n cancelButton: PropTypes.shape({\n label: PropTypes.string,\n onCancel: PropTypes.func,\n disabled: PropTypes.bool\n }),\n confirmButton: PropTypes.shape({\n label: PropTypes.string,\n onConfirm: PropTypes.func,\n iconName: PropTypes.string,\n disabled: PropTypes.bool,\n color: PropTypes.string\n })\n })\n ]),\n onClose: PropTypes.func,\n onScroll: PropTypes.func,\n detectScrollbar: PropTypes.bool,\n customStyle: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number]))\n};\n\nexport default BaseModal;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","useCallback","useEffect","useRef","useState","PropTypes","convert","Provider","Icon","ButtonLink","COLORS","style","BaseModal","props","context","title","description","headerIcon","children","isOpen","footer","onClose","detectScrollbar","customStyle","skin","bodyRef","isScrollbarVisible","setIsScrollbarVisible","checkScrollbar","bodyElement","current","scrollHeight","clientHeight","debouncedCheckScrollbar","_debounce","mutationObserver","MutationObserver","observe","childList","subtree","resizeObserver","ResizeObserver","disconnect","cancel","handleEscape","event","key","document","addEventListener","removeEventListener","Footer","_isEmpty","cancelButton","confirmButton","text","isError","label","cancelLabel","onCancel","disabled","cancelDisabled","confirmLabel","onConfirm","confirmDisabled","iconName","color","buttonConfirmColor","_get","createElement","className","footerCTAWrapper","button","type","onClick","_extends","backgroundColor","paddingLeft","hoverBackgroundColor","hoverColor","white","icon","position","faIcon","name","size","padding","footerDescription","footerDescriptionError","handleOnClose","e","stopPropagation","modalWrapper","modal","header","iconColor","faSize","wrapperSize","headerContent","headerTitle","headerDescription","headerCloseIcon","ref","body","bodyWithoutScrollbar","contextTypes","childContextTypes","propTypes","process","env","NODE_ENV","string","shape","node","bool","oneOfType","func","boolean","objectOf","number"],"sources":["../../../src/molecule/base-modal/index.js"],"sourcesContent":["import React, {useCallback, useEffect, useRef, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {isEmpty, get, debounce} from 'lodash/fp';\nimport {convert} from 'css-color-function';\nimport Provider from '../../atom/provider';\nimport Icon from '../../atom/icon';\nimport ButtonLink from '../../atom/button-link';\nimport {COLORS} from '../../variables/colors';\nimport style from './style.css';\n\nconst BaseModal = (props, context) => {\n const {\n title,\n description,\n headerIcon,\n children,\n isOpen,\n footer,\n onClose,\n detectScrollbar = false,\n customStyle\n } = props;\n const {skin} = context;\n const bodyRef = useRef(null);\n const [isScrollbarVisible, setIsScrollbarVisible] = useState(!detectScrollbar);\n\n const checkScrollbar = () => {\n const bodyElement = bodyRef.current;\n if (bodyElement) {\n setIsScrollbarVisible(bodyElement.scrollHeight > bodyElement.clientHeight);\n }\n };\n\n useEffect(() => {\n if (!detectScrollbar) return;\n const bodyElement = bodyRef.current;\n\n if (!bodyElement) return;\n\n const debouncedCheckScrollbar = debounce(100, () => {\n checkScrollbar();\n });\n\n // Observer of the body content\n const mutationObserver = new MutationObserver(() => {\n debouncedCheckScrollbar();\n });\n\n mutationObserver.observe(bodyElement, {childList: true, subtree: true});\n\n // Observer of the body size\n const resizeObserver = new ResizeObserver(() => {\n debouncedCheckScrollbar();\n });\n\n if (bodyRef.current) {\n resizeObserver.observe(bodyRef.current);\n }\n\n checkScrollbar();\n\n return () => {\n mutationObserver.disconnect();\n resizeObserver.disconnect();\n debouncedCheckScrollbar.cancel();\n };\n }, [children, detectScrollbar]);\n\n // Handle escape key press\n useEffect(() => {\n if (!isOpen || !onClose) return;\n\n const handleEscape = event => {\n if (event.key === 'Escape') {\n onClose();\n }\n };\n\n document.addEventListener('keydown', handleEscape);\n return () => {\n document.removeEventListener('keydown', handleEscape);\n };\n }, [isOpen, onClose]);\n\n const Footer = useCallback(() => {\n if (isEmpty(footer)) return null;\n if (typeof footer === 'function') return footer();\n\n const {cancelButton, confirmButton, text, isError} = footer;\n const {label: cancelLabel, onCancel, disabled: cancelDisabled} = cancelButton || {};\n const {\n label: confirmLabel,\n onConfirm,\n disabled: confirmDisabled,\n iconName,\n color\n } = confirmButton || {};\n const buttonConfirmColor = color || get('common.primary', skin);\n\n return (\n <div className={style.footer}>\n <div className={style.footerCTAWrapper}>\n {onCancel && cancelLabel ? (\n <ButtonLink\n {...{\n className: style.button,\n type: 'secondary',\n onClick: onCancel,\n label: cancelLabel,\n disabled: cancelDisabled,\n 'data-testid': `button-link-${cancelLabel}`\n }}\n />\n ) : null}\n {onConfirm && confirmLabel ? (\n <div>\n <ButtonLink\n {...{\n customStyle: {backgroundColor: buttonConfirmColor, paddingLeft: '16px'},\n hoverBackgroundColor: convert(\n `hsl(from ${buttonConfirmColor} h s calc(l*(1 - 0.08)))`\n ),\n hoverColor: COLORS.white,\n className: style.button,\n type: 'primary',\n onClick: onConfirm,\n label: confirmLabel,\n disabled: confirmDisabled,\n ...(iconName\n ? {\n icon: {\n position: 'left',\n faIcon: {\n name: iconName,\n color: COLORS.white,\n size: 14,\n customStyle: {padding: 0}\n }\n }\n }\n : {}),\n 'data-testid': `button-link-${confirmLabel}`\n }}\n />\n </div>\n ) : null}\n </div>\n {text ? (\n <div\n className={`${style.footerDescription} ${isError ? style.footerDescriptionError : ''}`}\n >\n {text}\n </div>\n ) : null}\n </div>\n );\n }, [footer, skin]);\n\n if (!isOpen || !title || !children) return null;\n\n function handleOnClose(e) {\n e?.stopPropagation();\n onClose();\n }\n\n return (\n <div className={style.modalWrapper} data-testid=\"modal\">\n <div className={style.modal} style={customStyle}>\n <header className={style.header}>\n {headerIcon?.name ? (\n <div className={style.headerIcon}>\n <Icon\n iconName={headerIcon.name}\n iconColor={headerIcon.color}\n backgroundColor={headerIcon.backgroundColor}\n size={{faSize: 20, wrapperSize: 48}}\n />\n </div>\n ) : null}\n <div className={style.headerContent}>\n <div className={style.headerTitle}>{title}</div>\n {description ? <div className={style.headerDescription}>{description}</div> : null}\n </div>\n <div className={style.headerCloseIcon} onClick={handleOnClose} data-testid=\"close-icon\">\n <Icon iconName=\"close\" backgroundColor=\"#F4F4F5\" size={{faSize: 14, wrapperSize: 28}} />\n </div>\n </header>\n <div\n ref={bodyRef}\n className={isScrollbarVisible ? style.body : style.bodyWithoutScrollbar}\n data-testid=\"modal-body\"\n >\n {children}\n </div>\n <Footer />\n </div>\n </div>\n );\n};\n\nBaseModal.contextTypes = {\n skin: Provider.childContextTypes.skin\n};\n\nBaseModal.propTypes = {\n title: PropTypes.string,\n headerIcon: PropTypes.shape({\n name: PropTypes.string,\n color: PropTypes.string,\n backgroundColor: PropTypes.string\n }),\n description: PropTypes.string,\n children: PropTypes.node,\n isOpen: PropTypes.bool,\n footer: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({\n text: PropTypes.string,\n isError: PropTypes.boolean,\n cancelButton: PropTypes.shape({\n label: PropTypes.string,\n onCancel: PropTypes.func,\n disabled: PropTypes.bool\n }),\n confirmButton: PropTypes.shape({\n label: PropTypes.string,\n onConfirm: PropTypes.func,\n iconName: PropTypes.string,\n disabled: PropTypes.bool,\n color: PropTypes.string\n })\n })\n ]),\n onClose: PropTypes.func,\n detectScrollbar: PropTypes.bool,\n customStyle: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number]))\n};\n\nexport default BaseModal;\n"],"mappings":"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","ignoreList":[]}
@@ -6,8 +6,7 @@ declare namespace IconPickerModal {
6
6
  }
7
7
  namespace propTypes {
8
8
  const isOpen: PropTypes.Requireable<boolean>;
9
- const onCancel: PropTypes.Requireable<(...args: any[]) => any>;
10
- const onConfirm: PropTypes.Requireable<(...args: any[]) => any>;
9
+ const onClick: PropTypes.Requireable<(...args: any[]) => any>;
11
10
  const onClose: PropTypes.Requireable<(...args: any[]) => any>;
12
11
  }
13
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule/icon-picker-modal/index.js"],"names":[],"mappings":";AAcA,+EA0IC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule/icon-picker-modal/index.js"],"names":[],"mappings":";AAWA,+EAmFC"}
@@ -1,35 +1,28 @@
1
1
  import _uniq from "lodash/fp/uniq";
2
2
  import _size from "lodash/fp/size";
3
- import _slice from "lodash/fp/slice";
4
3
  import _values from "lodash/fp/values";
5
4
  import _get from "lodash/fp/get";
6
5
  import _pipe from "lodash/fp/pipe";
7
6
  import _map from "lodash/fp/map";
8
7
  import _entries from "lodash/fp/entries";
9
- import React, { useMemo, useState, useCallback, useEffect } from 'react';
8
+ import React, { useMemo, useCallback } from 'react';
10
9
  import PropTypes from 'prop-types';
11
10
  import { fas } from '@fortawesome/pro-solid-svg-icons';
12
11
  import BaseModal from '../base-modal';
13
12
  import SelectIcon from '../../atom/select-icon';
14
13
  import Provider from '../../atom/provider';
15
14
  import SearchForm from '../search-form';
16
- import { COLORS } from '../../variables/colors';
17
15
  import style from './style.css';
18
16
  import useIconSearch from './use-icon-search';
19
- const ICONS_PER_LOAD = 48;
20
17
  const IconPickerModal = (props, context) => {
21
18
  const {
22
19
  isOpen,
23
- onCancel,
24
- onConfirm,
20
+ onClick,
25
21
  onClose
26
22
  } = props;
27
23
  const {
28
24
  translate
29
25
  } = context;
30
- const [selectedIcon, setSelectedIcon] = useState(null);
31
- const [displayedIcons, setDisplayedIcons] = useState([]);
32
- const [currentIndex, setCurrentIndex] = useState(0);
33
26
  const allIcons = useMemo(() => _pipe(_values, _map(_get('iconName')), _uniq)(fas), []);
34
27
  const {
35
28
  searchValue,
@@ -37,76 +30,30 @@ const IconPickerModal = (props, context) => {
37
30
  handleSearch,
38
31
  handleReset
39
32
  } = useIconSearch(allIcons);
40
- const handleCancel = useCallback(() => {
41
- onCancel();
42
- }, [onCancel]);
43
33
  const handleClose = useCallback(() => {
44
34
  onClose();
45
35
  }, [onClose]);
46
- useEffect(() => {
47
- setDisplayedIcons(() => _slice(0, ICONS_PER_LOAD, searchResults));
48
- setCurrentIndex(ICONS_PER_LOAD);
49
- }, [searchResults]);
50
-
51
- // Charger plus d'icônes automatiquement si nécessaire
52
- useEffect(() => {
53
- if (displayedIcons.length < searchResults.length && displayedIcons.length < 200) {
54
- const timer = setTimeout(() => {
55
- const nextIndex = Math.min(currentIndex + ICONS_PER_LOAD, searchResults.length);
56
- const newIcons = _slice(currentIndex, nextIndex, searchResults);
57
- setDisplayedIcons(prevIcons => [...prevIcons, ...newIcons]);
58
- setCurrentIndex(nextIndex);
59
- }, 100);
60
- return () => clearTimeout(timer);
61
- }
62
- }, [displayedIcons, searchResults, currentIndex]);
63
- const handleIconClick = useCallback(iconName => {
64
- setSelectedIcon(prevSelectedIcon => prevSelectedIcon === iconName ? null : iconName);
65
- }, []);
66
-
67
- // Créer une fonction de clic pour chaque icône (optimisée)
68
- const createIconClickHandler = useCallback(iconName => {
69
- return () => handleIconClick(iconName);
70
- }, [handleIconClick]);
71
36
  const icons = useMemo(() => _pipe(_entries, _map(([index, iconName]) => {
37
+ function handleIconClick() {
38
+ console.log('in handleIconClick');
39
+ return onClick(iconName);
40
+ }
72
41
  return /*#__PURE__*/React.createElement(SelectIcon, {
73
42
  key: `icon-${iconName}`,
74
43
  size: "responsive",
75
44
  "data-name": `icon-${iconName}`,
76
45
  "aria-label": iconName,
77
46
  faIcon: iconName,
78
- onClick: createIconClickHandler(iconName),
79
- options: {
80
- isSelected: selectedIcon === iconName
81
- }
47
+ onClick: handleIconClick,
48
+ options: {}
82
49
  });
83
- }))(displayedIcons), [displayedIcons, selectedIcon, createIconClickHandler]);
84
- const footer = useMemo(() => {
85
- return {
86
- cancelButton: {
87
- onCancel: handleCancel,
88
- label: translate('cancel')
89
- },
90
- confirmButton: {
91
- onConfirm: () => {
92
- onConfirm(selectedIcon);
93
- setSelectedIcon(null);
94
- onClose();
95
- },
96
- label: translate('confirm'),
97
- iconName: 'plus',
98
- disabled: selectedIcon === null,
99
- color: COLORS.cm_primary_blue
100
- }
101
- };
102
- }, [handleCancel, onConfirm, onClose, translate, selectedIcon]);
50
+ }))(allIcons), [allIcons, onClick]);
103
51
  if (!isOpen) return null;
104
52
  return /*#__PURE__*/React.createElement(BaseModal, {
105
53
  title: translate('icon_picker_title'),
106
54
  description: translate('icon_picker_description'),
107
55
  isOpen: isOpen,
108
56
  onClose: handleClose,
109
- footer: footer,
110
57
  headerIcon: {
111
58
  name: 'arrows-rotate',
112
59
  backgroundColor: '#D6E6FF'
@@ -143,8 +90,7 @@ IconPickerModal.contextTypes = {
143
90
  };
144
91
  IconPickerModal.propTypes = process.env.NODE_ENV !== "production" ? {
145
92
  isOpen: PropTypes.bool,
146
- onCancel: PropTypes.func,
147
- onConfirm: PropTypes.func,
93
+ onClick: PropTypes.func,
148
94
  onClose: PropTypes.func
149
95
  } : {};
150
96
  export default IconPickerModal;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","useMemo","useState","useCallback","useEffect","PropTypes","fas","BaseModal","SelectIcon","Provider","SearchForm","COLORS","style","useIconSearch","ICONS_PER_LOAD","IconPickerModal","props","context","isOpen","onCancel","onConfirm","onClose","translate","selectedIcon","setSelectedIcon","displayedIcons","setDisplayedIcons","currentIndex","setCurrentIndex","allIcons","_pipe","_values","_map","_get","_uniq","searchValue","searchResults","handleSearch","handleReset","handleCancel","handleClose","_slice","length","timer","setTimeout","nextIndex","Math","min","newIcons","prevIcons","clearTimeout","handleIconClick","iconName","prevSelectedIcon","createIconClickHandler","icons","_entries","index","createElement","key","size","faIcon","onClick","options","isSelected","footer","cancelButton","label","confirmButton","disabled","color","cm_primary_blue","title","description","headerIcon","name","backgroundColor","className","iconPicker","Fragment","searchWrapper","search","placeholder","value","onChange","onReset","dataTestId","_size","emptySearchResultContainer","emptySearchResultTitle","emptySearchResultDescription","emptySearchResultClearSearch","iconsListWrapper","contextTypes","childContextTypes","propTypes","process","env","NODE_ENV","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, uniq} 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')), uniq)(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 useEffect(() => {\n setDisplayedIcons(() => slice(0, ICONS_PER_LOAD, searchResults));\n setCurrentIndex(ICONS_PER_LOAD);\n }, [searchResults]);\n\n // Charger plus d'icônes automatiquement si nécessaire\n useEffect(() => {\n if (displayedIcons.length < searchResults.length && displayedIcons.length < 200) {\n const timer = setTimeout(() => {\n const nextIndex = Math.min(currentIndex + ICONS_PER_LOAD, searchResults.length);\n const newIcons = slice(currentIndex, nextIndex, searchResults);\n setDisplayedIcons(prevIcons => [...prevIcons, ...newIcons]);\n setCurrentIndex(nextIndex);\n }, 100);\n return () => clearTimeout(timer);\n }\n }, [displayedIcons, searchResults, currentIndex]);\n\n const handleIconClick = useCallback(iconName => {\n setSelectedIcon(prevSelectedIcon => (prevSelectedIcon === iconName ? null : iconName));\n }, []);\n\n // Créer une fonction de clic pour chaque icône (optimisée)\n const createIconClickHandler = useCallback(\n iconName => {\n return () => handleIconClick(iconName);\n },\n [handleIconClick]\n );\n\n const icons = useMemo(\n () =>\n pipe(\n entries,\n map(([index, iconName]) => {\n return (\n <SelectIcon\n key={`icon-${iconName}`}\n size=\"responsive\"\n data-name={`icon-${iconName}`}\n aria-label={iconName}\n faIcon={iconName}\n onClick={createIconClickHandler(iconName)}\n options={{isSelected: selectedIcon === iconName}}\n />\n );\n })\n )(displayedIcons),\n [displayedIcons, selectedIcon, createIconClickHandler]\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 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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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","useMemo","useCallback","PropTypes","fas","BaseModal","SelectIcon","Provider","SearchForm","style","useIconSearch","IconPickerModal","props","context","isOpen","onClick","onClose","translate","allIcons","_pipe","_values","_map","_get","_uniq","searchValue","searchResults","handleSearch","handleReset","handleClose","icons","_entries","index","iconName","handleIconClick","console","log","createElement","key","size","faIcon","options","title","description","headerIcon","name","backgroundColor","className","iconPicker","Fragment","searchWrapper","search","placeholder","value","onChange","onReset","dataTestId","_size","emptySearchResultContainer","emptySearchResultTitle","emptySearchResultDescription","emptySearchResultClearSearch","iconsListWrapper","contextTypes","childContextTypes","propTypes","process","env","NODE_ENV","bool","func"],"sources":["../../../src/molecule/icon-picker-modal/index.js"],"sourcesContent":["import React, {useMemo, useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport {fas} from '@fortawesome/pro-solid-svg-icons';\nimport {entries, map, pipe, get, values, size, uniq} 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 style from './style.css';\nimport useIconSearch from './use-icon-search';\n\nconst IconPickerModal = (props, context) => {\n const {isOpen, onClick, onClose} = props;\n const {translate} = context;\n\n const allIcons = useMemo(() => pipe(values, map(get('iconName')), uniq)(fas), []);\n const {searchValue, searchResults, handleSearch, handleReset} = useIconSearch(allIcons);\n\n const handleClose = useCallback(() => {\n onClose();\n }, [onClose]);\n\n const icons = useMemo(\n () =>\n pipe(\n entries,\n map(([index, iconName]) => {\n function handleIconClick() {\n console.log('in handleIconClick');\n return onClick(iconName);\n }\n return (\n <SelectIcon\n key={`icon-${iconName}`}\n size=\"responsive\"\n data-name={`icon-${iconName}`}\n aria-label={iconName}\n faIcon={iconName}\n onClick={handleIconClick}\n options={{}}\n />\n );\n })\n )(allIcons),\n [allIcons, onClick]\n );\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 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 onClick: PropTypes.func,\n onClose: PropTypes.func\n};\n\nexport default IconPickerModal;\n"],"mappings":"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","ignoreList":[]}
@@ -2540,12 +2540,95 @@ declare namespace BrandUpdate {
2540
2540
  style: PropTypes.Requireable<PropTypes.InferProps<{}>>;
2541
2541
  disabled: PropTypes.Requireable<boolean>;
2542
2542
  }>>;
2543
+ }> | PropTypes.InferProps<{
2544
+ type: PropTypes.Requireable<string>;
2545
+ isOpen: PropTypes.Requireable<boolean>;
2546
+ onClick: PropTypes.Requireable<(...args: any[]) => any>;
2547
+ onClose: PropTypes.Requireable<(...args: any[]) => any>;
2543
2548
  }> | PropTypes.InferProps<{
2544
2549
  type: PropTypes.Requireable<string>;
2545
2550
  isOpen: PropTypes.Requireable<boolean>;
2546
2551
  onCancel: PropTypes.Requireable<(...args: any[]) => any>;
2547
2552
  onConfirm: PropTypes.Requireable<(...args: any[]) => any>;
2548
2553
  onClose: PropTypes.Requireable<(...args: any[]) => any>;
2554
+ disabled: PropTypes.Requireable<boolean>;
2555
+ source: PropTypes.Requireable<PropTypes.InferProps<{
2556
+ inputText: PropTypes.Requireable<PropTypes.InferProps<{
2557
+ theme: PropTypes.Requireable<string>;
2558
+ autoFocus: PropTypes.Requireable<boolean>;
2559
+ title: PropTypes.Requireable<string>;
2560
+ placeholder: PropTypes.Requireable<string>;
2561
+ defaultValue: PropTypes.Requireable<string>;
2562
+ disabled: PropTypes.Requireable<boolean>;
2563
+ readOnly: PropTypes.Requireable<boolean>;
2564
+ value: PropTypes.Requireable<string>;
2565
+ hint: PropTypes.Requireable<string>;
2566
+ error: PropTypes.Requireable<string>;
2567
+ onChange: PropTypes.Requireable<(...args: any[]) => any>;
2568
+ description: PropTypes.Requireable<string>;
2569
+ modified: PropTypes.Requireable<boolean>;
2570
+ type: PropTypes.Requireable<string>;
2571
+ valid: PropTypes.Requireable<boolean>;
2572
+ 'aria-label': PropTypes.Requireable<string>;
2573
+ 'data-name': PropTypes.Requireable<string>;
2574
+ inputColor: PropTypes.Requireable<boolean>;
2575
+ }>>;
2576
+ textArea: PropTypes.Requireable<PropTypes.InferProps<{
2577
+ theme: PropTypes.Requireable<string>;
2578
+ placeholder: PropTypes.Requireable<string>;
2579
+ title: PropTypes.Requireable<string>;
2580
+ name: PropTypes.Requireable<string>;
2581
+ disabled: PropTypes.Requireable<boolean>;
2582
+ readOnly: PropTypes.Requireable<boolean>;
2583
+ value: PropTypes.Requireable<string>;
2584
+ hint: PropTypes.Requireable<string>;
2585
+ error: PropTypes.Requireable<string>;
2586
+ onChange: PropTypes.Requireable<(...args: any[]) => any>;
2587
+ description: PropTypes.Requireable<string>;
2588
+ modified: PropTypes.Requireable<boolean>;
2589
+ valid: PropTypes.Requireable<boolean>;
2590
+ }>>;
2591
+ inputLanguage: PropTypes.Requireable<string>;
2592
+ }>>;
2593
+ target: PropTypes.Requireable<PropTypes.InferProps<{
2594
+ inputText: PropTypes.Requireable<PropTypes.InferProps<{
2595
+ theme: PropTypes.Requireable<string>;
2596
+ autoFocus: PropTypes.Requireable<boolean>;
2597
+ title: PropTypes.Requireable<string>;
2598
+ placeholder: PropTypes.Requireable<string>;
2599
+ defaultValue: PropTypes.Requireable<string>;
2600
+ disabled: PropTypes.Requireable<boolean>;
2601
+ readOnly: PropTypes.Requireable<boolean>;
2602
+ value: PropTypes.Requireable<string>;
2603
+ hint: PropTypes.Requireable<string>;
2604
+ error: PropTypes.Requireable<string>;
2605
+ onChange: PropTypes.Requireable<(...args: any[]) => any>;
2606
+ description: PropTypes.Requireable<string>;
2607
+ modified: PropTypes.Requireable<boolean>;
2608
+ type: PropTypes.Requireable<string>;
2609
+ valid: PropTypes.Requireable<boolean>;
2610
+ 'aria-label': PropTypes.Requireable<string>;
2611
+ 'data-name': PropTypes.Requireable<string>;
2612
+ inputColor: PropTypes.Requireable<boolean>;
2613
+ }>>;
2614
+ textArea: PropTypes.Requireable<PropTypes.InferProps<{
2615
+ theme: PropTypes.Requireable<string>;
2616
+ placeholder: PropTypes.Requireable<string>;
2617
+ title: PropTypes.Requireable<string>;
2618
+ name: PropTypes.Requireable<string>;
2619
+ disabled: PropTypes.Requireable<boolean>;
2620
+ readOnly: PropTypes.Requireable<boolean>;
2621
+ value: PropTypes.Requireable<string>;
2622
+ hint: PropTypes.Requireable<string>;
2623
+ error: PropTypes.Requireable<string>;
2624
+ onChange: PropTypes.Requireable<(...args: any[]) => any>;
2625
+ description: PropTypes.Requireable<string>;
2626
+ modified: PropTypes.Requireable<boolean>;
2627
+ valid: PropTypes.Requireable<boolean>;
2628
+ }>>;
2629
+ language: PropTypes.Requireable<string>;
2630
+ }>>;
2631
+ readOnly: PropTypes.Requireable<boolean>;
2549
2632
  }> | PropTypes.InferProps<{
2550
2633
  type: PropTypes.Requireable<string>;
2551
2634
  contentList: PropTypes.Validator<NonNullable<PropTypes.InferProps<{
@@ -51,7 +51,6 @@ declare namespace BaseModal {
51
51
  }>>;
52
52
  }> | null | undefined>>;
53
53
  const onClose: PropTypes.Requireable<(...args: any[]) => any>;
54
- const onScroll: PropTypes.Requireable<(...args: any[]) => any>;
55
54
  const detectScrollbar: PropTypes.Requireable<boolean>;
56
55
  const customStyle: PropTypes.Requireable<{
57
56
  [x: string]: NonNullable<string | number | null | undefined> | null | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule/base-modal/index.js"],"names":[],"mappings":";AAUA,yEA8LC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule/base-modal/index.js"],"names":[],"mappings":";AAUA,yEA4LC"}
@@ -26,7 +26,6 @@ const BaseModal = (props, context) => {
26
26
  isOpen,
27
27
  footer,
28
28
  onClose,
29
- onScroll,
30
29
  detectScrollbar = false,
31
30
  customStyle
32
31
  } = props;
@@ -192,7 +191,6 @@ const BaseModal = (props, context) => {
192
191
  }))), /*#__PURE__*/_react.default.createElement("div", {
193
192
  ref: bodyRef,
194
193
  className: isScrollbarVisible ? _style.default.body : _style.default.bodyWithoutScrollbar,
195
- onScroll: onScroll,
196
194
  "data-testid": "modal-body"
197
195
  }, children), /*#__PURE__*/_react.default.createElement(Footer, null)));
198
196
  };
@@ -226,7 +224,6 @@ BaseModal.propTypes = process.env.NODE_ENV !== "production" ? {
226
224
  })
227
225
  })]),
228
226
  onClose: _propTypes.default.func,
229
- onScroll: _propTypes.default.func,
230
227
  detectScrollbar: _propTypes.default.bool,
231
228
  customStyle: _propTypes.default.objectOf(_propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]))
232
229
  } : {};
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_cssColorFunction","_provider","_icon","_buttonLink","_colors","_style","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_extends","assign","bind","arguments","length","apply","BaseModal","props","context","title","description","headerIcon","children","isOpen","footer","onClose","onScroll","detectScrollbar","customStyle","skin","bodyRef","useRef","isScrollbarVisible","setIsScrollbarVisible","useState","checkScrollbar","bodyElement","current","scrollHeight","clientHeight","useEffect","debouncedCheckScrollbar","_debounce2","mutationObserver","MutationObserver","observe","childList","subtree","resizeObserver","ResizeObserver","disconnect","cancel","handleEscape","event","key","document","addEventListener","removeEventListener","Footer","useCallback","_isEmpty2","cancelButton","confirmButton","text","isError","label","cancelLabel","onCancel","disabled","cancelDisabled","confirmLabel","onConfirm","confirmDisabled","iconName","color","buttonConfirmColor","_get2","createElement","className","style","footerCTAWrapper","button","type","onClick","backgroundColor","paddingLeft","hoverBackgroundColor","convert","hoverColor","COLORS","white","icon","position","faIcon","name","size","padding","footerDescription","footerDescriptionError","handleOnClose","stopPropagation","modalWrapper","modal","header","iconColor","faSize","wrapperSize","headerContent","headerTitle","headerDescription","headerCloseIcon","ref","body","bodyWithoutScrollbar","contextTypes","Provider","childContextTypes","propTypes","process","env","NODE_ENV","PropTypes","string","shape","node","bool","oneOfType","func","boolean","objectOf","number","_default","exports"],"sources":["../../../src/molecule/base-modal/index.js"],"sourcesContent":["import React, {useCallback, useEffect, useRef, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {isEmpty, get, debounce} from 'lodash/fp';\nimport {convert} from 'css-color-function';\nimport Provider from '../../atom/provider';\nimport Icon from '../../atom/icon';\nimport ButtonLink from '../../atom/button-link';\nimport {COLORS} from '../../variables/colors';\nimport style from './style.css';\n\nconst BaseModal = (props, context) => {\n const {\n title,\n description,\n headerIcon,\n children,\n isOpen,\n footer,\n onClose,\n onScroll,\n detectScrollbar = false,\n customStyle\n } = props;\n const {skin} = context;\n const bodyRef = useRef(null);\n const [isScrollbarVisible, setIsScrollbarVisible] = useState(!detectScrollbar);\n\n const checkScrollbar = () => {\n const bodyElement = bodyRef.current;\n if (bodyElement) {\n setIsScrollbarVisible(bodyElement.scrollHeight > bodyElement.clientHeight);\n }\n };\n\n useEffect(() => {\n if (!detectScrollbar) return;\n const bodyElement = bodyRef.current;\n\n if (!bodyElement) return;\n\n const debouncedCheckScrollbar = debounce(100, () => {\n checkScrollbar();\n });\n\n // Observer of the body content\n const mutationObserver = new MutationObserver(() => {\n debouncedCheckScrollbar();\n });\n\n mutationObserver.observe(bodyElement, {childList: true, subtree: true});\n\n // Observer of the body size\n const resizeObserver = new ResizeObserver(() => {\n debouncedCheckScrollbar();\n });\n\n if (bodyRef.current) {\n resizeObserver.observe(bodyRef.current);\n }\n\n checkScrollbar();\n\n return () => {\n mutationObserver.disconnect();\n resizeObserver.disconnect();\n debouncedCheckScrollbar.cancel();\n };\n }, [children, detectScrollbar]);\n\n // Handle escape key press\n useEffect(() => {\n if (!isOpen || !onClose) return;\n\n const handleEscape = event => {\n if (event.key === 'Escape') {\n onClose();\n }\n };\n\n document.addEventListener('keydown', handleEscape);\n return () => {\n document.removeEventListener('keydown', handleEscape);\n };\n }, [isOpen, onClose]);\n\n const Footer = useCallback(() => {\n if (isEmpty(footer)) return null;\n if (typeof footer === 'function') return footer();\n\n const {cancelButton, confirmButton, text, isError} = footer;\n const {label: cancelLabel, onCancel, disabled: cancelDisabled} = cancelButton || {};\n const {\n label: confirmLabel,\n onConfirm,\n disabled: confirmDisabled,\n iconName,\n color\n } = confirmButton || {};\n const buttonConfirmColor = color || get('common.primary', skin);\n\n return (\n <div className={style.footer}>\n <div className={style.footerCTAWrapper}>\n {onCancel && cancelLabel ? (\n <ButtonLink\n {...{\n className: style.button,\n type: 'secondary',\n onClick: onCancel,\n label: cancelLabel,\n disabled: cancelDisabled,\n 'data-testid': `button-link-${cancelLabel}`\n }}\n />\n ) : null}\n {onConfirm && confirmLabel ? (\n <div>\n <ButtonLink\n {...{\n customStyle: {backgroundColor: buttonConfirmColor, paddingLeft: '16px'},\n hoverBackgroundColor: convert(\n `hsl(from ${buttonConfirmColor} h s calc(l*(1 - 0.08)))`\n ),\n hoverColor: COLORS.white,\n className: style.button,\n type: 'primary',\n onClick: onConfirm,\n label: confirmLabel,\n disabled: confirmDisabled,\n ...(iconName\n ? {\n icon: {\n position: 'left',\n faIcon: {\n name: iconName,\n color: COLORS.white,\n size: 14,\n customStyle: {padding: 0}\n }\n }\n }\n : {}),\n 'data-testid': `button-link-${confirmLabel}`\n }}\n />\n </div>\n ) : null}\n </div>\n {text ? (\n <div\n className={`${style.footerDescription} ${isError ? style.footerDescriptionError : ''}`}\n >\n {text}\n </div>\n ) : null}\n </div>\n );\n }, [footer, skin]);\n\n if (!isOpen || !title || !children) return null;\n\n function handleOnClose(e) {\n e?.stopPropagation();\n onClose();\n }\n\n return (\n <div className={style.modalWrapper} data-testid=\"modal\">\n <div className={style.modal} style={customStyle}>\n <header className={style.header}>\n {headerIcon?.name ? (\n <div className={style.headerIcon}>\n <Icon\n iconName={headerIcon.name}\n iconColor={headerIcon.color}\n backgroundColor={headerIcon.backgroundColor}\n size={{faSize: 20, wrapperSize: 48}}\n />\n </div>\n ) : null}\n <div className={style.headerContent}>\n <div className={style.headerTitle}>{title}</div>\n {description ? <div className={style.headerDescription}>{description}</div> : null}\n </div>\n <div className={style.headerCloseIcon} onClick={handleOnClose} data-testid=\"close-icon\">\n <Icon iconName=\"close\" backgroundColor=\"#F4F4F5\" size={{faSize: 14, wrapperSize: 28}} />\n </div>\n </header>\n <div\n ref={bodyRef}\n className={isScrollbarVisible ? style.body : style.bodyWithoutScrollbar}\n onScroll={onScroll}\n data-testid=\"modal-body\"\n >\n {children}\n </div>\n <Footer />\n </div>\n </div>\n );\n};\n\nBaseModal.contextTypes = {\n skin: Provider.childContextTypes.skin\n};\n\nBaseModal.propTypes = {\n title: PropTypes.string,\n headerIcon: PropTypes.shape({\n name: PropTypes.string,\n color: PropTypes.string,\n backgroundColor: PropTypes.string\n }),\n description: PropTypes.string,\n children: PropTypes.node,\n isOpen: PropTypes.bool,\n footer: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({\n text: PropTypes.string,\n isError: PropTypes.boolean,\n cancelButton: PropTypes.shape({\n label: PropTypes.string,\n onCancel: PropTypes.func,\n disabled: PropTypes.bool\n }),\n confirmButton: PropTypes.shape({\n label: PropTypes.string,\n onConfirm: PropTypes.func,\n iconName: PropTypes.string,\n disabled: PropTypes.bool,\n color: PropTypes.string\n })\n })\n ]),\n onClose: PropTypes.func,\n onScroll: PropTypes.func,\n detectScrollbar: PropTypes.bool,\n customStyle: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number]))\n};\n\nexport default BaseModal;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_cssColorFunction","_provider","_icon","_buttonLink","_colors","_style","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_extends","assign","bind","arguments","length","apply","BaseModal","props","context","title","description","headerIcon","children","isOpen","footer","onClose","detectScrollbar","customStyle","skin","bodyRef","useRef","isScrollbarVisible","setIsScrollbarVisible","useState","checkScrollbar","bodyElement","current","scrollHeight","clientHeight","useEffect","debouncedCheckScrollbar","_debounce2","mutationObserver","MutationObserver","observe","childList","subtree","resizeObserver","ResizeObserver","disconnect","cancel","handleEscape","event","key","document","addEventListener","removeEventListener","Footer","useCallback","_isEmpty2","cancelButton","confirmButton","text","isError","label","cancelLabel","onCancel","disabled","cancelDisabled","confirmLabel","onConfirm","confirmDisabled","iconName","color","buttonConfirmColor","_get2","createElement","className","style","footerCTAWrapper","button","type","onClick","backgroundColor","paddingLeft","hoverBackgroundColor","convert","hoverColor","COLORS","white","icon","position","faIcon","name","size","padding","footerDescription","footerDescriptionError","handleOnClose","stopPropagation","modalWrapper","modal","header","iconColor","faSize","wrapperSize","headerContent","headerTitle","headerDescription","headerCloseIcon","ref","body","bodyWithoutScrollbar","contextTypes","Provider","childContextTypes","propTypes","process","env","NODE_ENV","PropTypes","string","shape","node","bool","oneOfType","func","boolean","objectOf","number","_default","exports"],"sources":["../../../src/molecule/base-modal/index.js"],"sourcesContent":["import React, {useCallback, useEffect, useRef, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {isEmpty, get, debounce} from 'lodash/fp';\nimport {convert} from 'css-color-function';\nimport Provider from '../../atom/provider';\nimport Icon from '../../atom/icon';\nimport ButtonLink from '../../atom/button-link';\nimport {COLORS} from '../../variables/colors';\nimport style from './style.css';\n\nconst BaseModal = (props, context) => {\n const {\n title,\n description,\n headerIcon,\n children,\n isOpen,\n footer,\n onClose,\n detectScrollbar = false,\n customStyle\n } = props;\n const {skin} = context;\n const bodyRef = useRef(null);\n const [isScrollbarVisible, setIsScrollbarVisible] = useState(!detectScrollbar);\n\n const checkScrollbar = () => {\n const bodyElement = bodyRef.current;\n if (bodyElement) {\n setIsScrollbarVisible(bodyElement.scrollHeight > bodyElement.clientHeight);\n }\n };\n\n useEffect(() => {\n if (!detectScrollbar) return;\n const bodyElement = bodyRef.current;\n\n if (!bodyElement) return;\n\n const debouncedCheckScrollbar = debounce(100, () => {\n checkScrollbar();\n });\n\n // Observer of the body content\n const mutationObserver = new MutationObserver(() => {\n debouncedCheckScrollbar();\n });\n\n mutationObserver.observe(bodyElement, {childList: true, subtree: true});\n\n // Observer of the body size\n const resizeObserver = new ResizeObserver(() => {\n debouncedCheckScrollbar();\n });\n\n if (bodyRef.current) {\n resizeObserver.observe(bodyRef.current);\n }\n\n checkScrollbar();\n\n return () => {\n mutationObserver.disconnect();\n resizeObserver.disconnect();\n debouncedCheckScrollbar.cancel();\n };\n }, [children, detectScrollbar]);\n\n // Handle escape key press\n useEffect(() => {\n if (!isOpen || !onClose) return;\n\n const handleEscape = event => {\n if (event.key === 'Escape') {\n onClose();\n }\n };\n\n document.addEventListener('keydown', handleEscape);\n return () => {\n document.removeEventListener('keydown', handleEscape);\n };\n }, [isOpen, onClose]);\n\n const Footer = useCallback(() => {\n if (isEmpty(footer)) return null;\n if (typeof footer === 'function') return footer();\n\n const {cancelButton, confirmButton, text, isError} = footer;\n const {label: cancelLabel, onCancel, disabled: cancelDisabled} = cancelButton || {};\n const {\n label: confirmLabel,\n onConfirm,\n disabled: confirmDisabled,\n iconName,\n color\n } = confirmButton || {};\n const buttonConfirmColor = color || get('common.primary', skin);\n\n return (\n <div className={style.footer}>\n <div className={style.footerCTAWrapper}>\n {onCancel && cancelLabel ? (\n <ButtonLink\n {...{\n className: style.button,\n type: 'secondary',\n onClick: onCancel,\n label: cancelLabel,\n disabled: cancelDisabled,\n 'data-testid': `button-link-${cancelLabel}`\n }}\n />\n ) : null}\n {onConfirm && confirmLabel ? (\n <div>\n <ButtonLink\n {...{\n customStyle: {backgroundColor: buttonConfirmColor, paddingLeft: '16px'},\n hoverBackgroundColor: convert(\n `hsl(from ${buttonConfirmColor} h s calc(l*(1 - 0.08)))`\n ),\n hoverColor: COLORS.white,\n className: style.button,\n type: 'primary',\n onClick: onConfirm,\n label: confirmLabel,\n disabled: confirmDisabled,\n ...(iconName\n ? {\n icon: {\n position: 'left',\n faIcon: {\n name: iconName,\n color: COLORS.white,\n size: 14,\n customStyle: {padding: 0}\n }\n }\n }\n : {}),\n 'data-testid': `button-link-${confirmLabel}`\n }}\n />\n </div>\n ) : null}\n </div>\n {text ? (\n <div\n className={`${style.footerDescription} ${isError ? style.footerDescriptionError : ''}`}\n >\n {text}\n </div>\n ) : null}\n </div>\n );\n }, [footer, skin]);\n\n if (!isOpen || !title || !children) return null;\n\n function handleOnClose(e) {\n e?.stopPropagation();\n onClose();\n }\n\n return (\n <div className={style.modalWrapper} data-testid=\"modal\">\n <div className={style.modal} style={customStyle}>\n <header className={style.header}>\n {headerIcon?.name ? (\n <div className={style.headerIcon}>\n <Icon\n iconName={headerIcon.name}\n iconColor={headerIcon.color}\n backgroundColor={headerIcon.backgroundColor}\n size={{faSize: 20, wrapperSize: 48}}\n />\n </div>\n ) : null}\n <div className={style.headerContent}>\n <div className={style.headerTitle}>{title}</div>\n {description ? <div className={style.headerDescription}>{description}</div> : null}\n </div>\n <div className={style.headerCloseIcon} onClick={handleOnClose} data-testid=\"close-icon\">\n <Icon iconName=\"close\" backgroundColor=\"#F4F4F5\" size={{faSize: 14, wrapperSize: 28}} />\n </div>\n </header>\n <div\n ref={bodyRef}\n className={isScrollbarVisible ? style.body : style.bodyWithoutScrollbar}\n data-testid=\"modal-body\"\n >\n {children}\n </div>\n <Footer />\n </div>\n </div>\n );\n};\n\nBaseModal.contextTypes = {\n skin: Provider.childContextTypes.skin\n};\n\nBaseModal.propTypes = {\n title: PropTypes.string,\n headerIcon: PropTypes.shape({\n name: PropTypes.string,\n color: PropTypes.string,\n backgroundColor: PropTypes.string\n }),\n description: PropTypes.string,\n children: PropTypes.node,\n isOpen: PropTypes.bool,\n footer: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({\n text: PropTypes.string,\n isError: PropTypes.boolean,\n cancelButton: PropTypes.shape({\n label: PropTypes.string,\n onCancel: PropTypes.func,\n disabled: PropTypes.bool\n }),\n confirmButton: PropTypes.shape({\n label: PropTypes.string,\n onConfirm: PropTypes.func,\n iconName: PropTypes.string,\n disabled: PropTypes.bool,\n color: PropTypes.string\n })\n })\n ]),\n onClose: PropTypes.func,\n detectScrollbar: PropTypes.bool,\n customStyle: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number]))\n};\n\nexport default BaseModal;\n"],"mappings":"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","ignoreList":[]}
@@ -6,8 +6,7 @@ declare namespace IconPickerModal {
6
6
  }
7
7
  namespace propTypes {
8
8
  const isOpen: PropTypes.Requireable<boolean>;
9
- const onCancel: PropTypes.Requireable<(...args: any[]) => any>;
10
- const onConfirm: PropTypes.Requireable<(...args: any[]) => any>;
9
+ const onClick: PropTypes.Requireable<(...args: any[]) => any>;
11
10
  const onClose: PropTypes.Requireable<(...args: any[]) => any>;
12
11
  }
13
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule/icon-picker-modal/index.js"],"names":[],"mappings":";AAcA,+EA0IC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule/icon-picker-modal/index.js"],"names":[],"mappings":";AAWA,+EAmFC"}
@@ -4,7 +4,6 @@ exports.__esModule = true;
4
4
  exports.default = void 0;
5
5
  var _uniq2 = _interopRequireDefault(require("lodash/fp/uniq"));
6
6
  var _size2 = _interopRequireDefault(require("lodash/fp/size"));
7
- var _slice2 = _interopRequireDefault(require("lodash/fp/slice"));
8
7
  var _values2 = _interopRequireDefault(require("lodash/fp/values"));
9
8
  var _get2 = _interopRequireDefault(require("lodash/fp/get"));
10
9
  var _pipe2 = _interopRequireDefault(require("lodash/fp/pipe"));
@@ -17,26 +16,20 @@ var _baseModal = _interopRequireDefault(require("../base-modal"));
17
16
  var _selectIcon = _interopRequireDefault(require("../../atom/select-icon"));
18
17
  var _provider = _interopRequireDefault(require("../../atom/provider"));
19
18
  var _searchForm = _interopRequireDefault(require("../search-form"));
20
- var _colors = require("../../variables/colors");
21
19
  var _style = _interopRequireDefault(require("./style.css"));
22
20
  var _useIconSearch = _interopRequireDefault(require("./use-icon-search"));
23
21
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
24
22
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
25
23
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
26
- const ICONS_PER_LOAD = 48;
27
24
  const IconPickerModal = (props, context) => {
28
25
  const {
29
26
  isOpen,
30
- onCancel,
31
- onConfirm,
27
+ onClick,
32
28
  onClose
33
29
  } = props;
34
30
  const {
35
31
  translate
36
32
  } = context;
37
- const [selectedIcon, setSelectedIcon] = (0, _react.useState)(null);
38
- const [displayedIcons, setDisplayedIcons] = (0, _react.useState)([]);
39
- const [currentIndex, setCurrentIndex] = (0, _react.useState)(0);
40
33
  const allIcons = (0, _react.useMemo)(() => (0, _pipe2.default)(_values2.default, (0, _map2.default)((0, _get2.default)('iconName')), _uniq2.default)(_proSolidSvgIcons.fas), []);
41
34
  const {
42
35
  searchValue,
@@ -44,76 +37,30 @@ const IconPickerModal = (props, context) => {
44
37
  handleSearch,
45
38
  handleReset
46
39
  } = (0, _useIconSearch.default)(allIcons);
47
- const handleCancel = (0, _react.useCallback)(() => {
48
- onCancel();
49
- }, [onCancel]);
50
40
  const handleClose = (0, _react.useCallback)(() => {
51
41
  onClose();
52
42
  }, [onClose]);
53
- (0, _react.useEffect)(() => {
54
- setDisplayedIcons(() => (0, _slice2.default)(0, ICONS_PER_LOAD, searchResults));
55
- setCurrentIndex(ICONS_PER_LOAD);
56
- }, [searchResults]);
57
-
58
- // Charger plus d'icônes automatiquement si nécessaire
59
- (0, _react.useEffect)(() => {
60
- if (displayedIcons.length < searchResults.length && displayedIcons.length < 200) {
61
- const timer = setTimeout(() => {
62
- const nextIndex = Math.min(currentIndex + ICONS_PER_LOAD, searchResults.length);
63
- const newIcons = (0, _slice2.default)(currentIndex, nextIndex, searchResults);
64
- setDisplayedIcons(prevIcons => [...prevIcons, ...newIcons]);
65
- setCurrentIndex(nextIndex);
66
- }, 100);
67
- return () => clearTimeout(timer);
68
- }
69
- }, [displayedIcons, searchResults, currentIndex]);
70
- const handleIconClick = (0, _react.useCallback)(iconName => {
71
- setSelectedIcon(prevSelectedIcon => prevSelectedIcon === iconName ? null : iconName);
72
- }, []);
73
-
74
- // Créer une fonction de clic pour chaque icône (optimisée)
75
- const createIconClickHandler = (0, _react.useCallback)(iconName => {
76
- return () => handleIconClick(iconName);
77
- }, [handleIconClick]);
78
43
  const icons = (0, _react.useMemo)(() => (0, _pipe2.default)(_entries2.default, (0, _map2.default)(([index, iconName]) => {
44
+ function handleIconClick() {
45
+ console.log('in handleIconClick');
46
+ return onClick(iconName);
47
+ }
79
48
  return /*#__PURE__*/_react.default.createElement(_selectIcon.default, {
80
49
  key: `icon-${iconName}`,
81
50
  size: "responsive",
82
51
  "data-name": `icon-${iconName}`,
83
52
  "aria-label": iconName,
84
53
  faIcon: iconName,
85
- onClick: createIconClickHandler(iconName),
86
- options: {
87
- isSelected: selectedIcon === iconName
88
- }
54
+ onClick: handleIconClick,
55
+ options: {}
89
56
  });
90
- }))(displayedIcons), [displayedIcons, selectedIcon, createIconClickHandler]);
91
- const footer = (0, _react.useMemo)(() => {
92
- return {
93
- cancelButton: {
94
- onCancel: handleCancel,
95
- label: translate('cancel')
96
- },
97
- confirmButton: {
98
- onConfirm: () => {
99
- onConfirm(selectedIcon);
100
- setSelectedIcon(null);
101
- onClose();
102
- },
103
- label: translate('confirm'),
104
- iconName: 'plus',
105
- disabled: selectedIcon === null,
106
- color: _colors.COLORS.cm_primary_blue
107
- }
108
- };
109
- }, [handleCancel, onConfirm, onClose, translate, selectedIcon]);
57
+ }))(allIcons), [allIcons, onClick]);
110
58
  if (!isOpen) return null;
111
59
  return /*#__PURE__*/_react.default.createElement(_baseModal.default, {
112
60
  title: translate('icon_picker_title'),
113
61
  description: translate('icon_picker_description'),
114
62
  isOpen: isOpen,
115
63
  onClose: handleClose,
116
- footer: footer,
117
64
  headerIcon: {
118
65
  name: 'arrows-rotate',
119
66
  backgroundColor: '#D6E6FF'
@@ -150,8 +97,7 @@ IconPickerModal.contextTypes = {
150
97
  };
151
98
  IconPickerModal.propTypes = process.env.NODE_ENV !== "production" ? {
152
99
  isOpen: _propTypes.default.bool,
153
- onCancel: _propTypes.default.func,
154
- onConfirm: _propTypes.default.func,
100
+ onClick: _propTypes.default.func,
155
101
  onClose: _propTypes.default.func
156
102
  } : {};
157
103
  var _default = exports.default = IconPickerModal;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_proSolidSvgIcons","_baseModal","_selectIcon","_provider","_searchForm","_colors","_style","_useIconSearch","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ICONS_PER_LOAD","IconPickerModal","props","context","isOpen","onCancel","onConfirm","onClose","translate","selectedIcon","setSelectedIcon","useState","displayedIcons","setDisplayedIcons","currentIndex","setCurrentIndex","allIcons","useMemo","_pipe2","_values2","_map2","_get2","_uniq2","fas","searchValue","searchResults","handleSearch","handleReset","useIconSearch","handleCancel","useCallback","handleClose","useEffect","_slice2","length","timer","setTimeout","nextIndex","Math","min","newIcons","prevIcons","clearTimeout","handleIconClick","iconName","prevSelectedIcon","createIconClickHandler","icons","_entries2","index","createElement","key","size","faIcon","onClick","options","isSelected","footer","cancelButton","label","confirmButton","disabled","color","COLORS","cm_primary_blue","title","description","headerIcon","name","backgroundColor","className","style","iconPicker","Fragment","searchWrapper","search","placeholder","value","onChange","onReset","dataTestId","_size2","emptySearchResultContainer","emptySearchResultTitle","emptySearchResultDescription","emptySearchResultClearSearch","iconsListWrapper","contextTypes","Provider","childContextTypes","propTypes","process","env","NODE_ENV","PropTypes","bool","func","_default","exports"],"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, uniq} 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')), uniq)(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 useEffect(() => {\n setDisplayedIcons(() => slice(0, ICONS_PER_LOAD, searchResults));\n setCurrentIndex(ICONS_PER_LOAD);\n }, [searchResults]);\n\n // Charger plus d'icônes automatiquement si nécessaire\n useEffect(() => {\n if (displayedIcons.length < searchResults.length && displayedIcons.length < 200) {\n const timer = setTimeout(() => {\n const nextIndex = Math.min(currentIndex + ICONS_PER_LOAD, searchResults.length);\n const newIcons = slice(currentIndex, nextIndex, searchResults);\n setDisplayedIcons(prevIcons => [...prevIcons, ...newIcons]);\n setCurrentIndex(nextIndex);\n }, 100);\n return () => clearTimeout(timer);\n }\n }, [displayedIcons, searchResults, currentIndex]);\n\n const handleIconClick = useCallback(iconName => {\n setSelectedIcon(prevSelectedIcon => (prevSelectedIcon === iconName ? null : iconName));\n }, []);\n\n // Créer une fonction de clic pour chaque icône (optimisée)\n const createIconClickHandler = useCallback(\n iconName => {\n return () => handleIconClick(iconName);\n },\n [handleIconClick]\n );\n\n const icons = useMemo(\n () =>\n pipe(\n entries,\n map(([index, iconName]) => {\n return (\n <SelectIcon\n key={`icon-${iconName}`}\n size=\"responsive\"\n data-name={`icon-${iconName}`}\n aria-label={iconName}\n faIcon={iconName}\n onClick={createIconClickHandler(iconName)}\n options={{isSelected: selectedIcon === iconName}}\n />\n );\n })\n )(displayedIcons),\n [displayedIcons, selectedIcon, createIconClickHandler]\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 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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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_proSolidSvgIcons","_baseModal","_selectIcon","_provider","_searchForm","_style","_useIconSearch","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","IconPickerModal","props","context","isOpen","onClick","onClose","translate","allIcons","useMemo","_pipe2","_values2","_map2","_get2","_uniq2","fas","searchValue","searchResults","handleSearch","handleReset","useIconSearch","handleClose","useCallback","icons","_entries2","index","iconName","handleIconClick","console","log","createElement","key","size","faIcon","options","title","description","headerIcon","name","backgroundColor","className","style","iconPicker","Fragment","searchWrapper","search","placeholder","value","onChange","onReset","dataTestId","_size2","emptySearchResultContainer","emptySearchResultTitle","emptySearchResultDescription","emptySearchResultClearSearch","iconsListWrapper","contextTypes","Provider","childContextTypes","propTypes","process","env","NODE_ENV","PropTypes","bool","func","_default","exports"],"sources":["../../../src/molecule/icon-picker-modal/index.js"],"sourcesContent":["import React, {useMemo, useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport {fas} from '@fortawesome/pro-solid-svg-icons';\nimport {entries, map, pipe, get, values, size, uniq} 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 style from './style.css';\nimport useIconSearch from './use-icon-search';\n\nconst IconPickerModal = (props, context) => {\n const {isOpen, onClick, onClose} = props;\n const {translate} = context;\n\n const allIcons = useMemo(() => pipe(values, map(get('iconName')), uniq)(fas), []);\n const {searchValue, searchResults, handleSearch, handleReset} = useIconSearch(allIcons);\n\n const handleClose = useCallback(() => {\n onClose();\n }, [onClose]);\n\n const icons = useMemo(\n () =>\n pipe(\n entries,\n map(([index, iconName]) => {\n function handleIconClick() {\n console.log('in handleIconClick');\n return onClick(iconName);\n }\n return (\n <SelectIcon\n key={`icon-${iconName}`}\n size=\"responsive\"\n data-name={`icon-${iconName}`}\n aria-label={iconName}\n faIcon={iconName}\n onClick={handleIconClick}\n options={{}}\n />\n );\n })\n )(allIcons),\n [allIcons, onClick]\n );\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 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 onClick: PropTypes.func,\n onClose: PropTypes.func\n};\n\nexport default IconPickerModal;\n"],"mappings":"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","ignoreList":[]}
@@ -2540,12 +2540,95 @@ declare namespace BrandUpdate {
2540
2540
  style: PropTypes.Requireable<PropTypes.InferProps<{}>>;
2541
2541
  disabled: PropTypes.Requireable<boolean>;
2542
2542
  }>>;
2543
+ }> | PropTypes.InferProps<{
2544
+ type: PropTypes.Requireable<string>;
2545
+ isOpen: PropTypes.Requireable<boolean>;
2546
+ onClick: PropTypes.Requireable<(...args: any[]) => any>;
2547
+ onClose: PropTypes.Requireable<(...args: any[]) => any>;
2543
2548
  }> | PropTypes.InferProps<{
2544
2549
  type: PropTypes.Requireable<string>;
2545
2550
  isOpen: PropTypes.Requireable<boolean>;
2546
2551
  onCancel: PropTypes.Requireable<(...args: any[]) => any>;
2547
2552
  onConfirm: PropTypes.Requireable<(...args: any[]) => any>;
2548
2553
  onClose: PropTypes.Requireable<(...args: any[]) => any>;
2554
+ disabled: PropTypes.Requireable<boolean>;
2555
+ source: PropTypes.Requireable<PropTypes.InferProps<{
2556
+ inputText: PropTypes.Requireable<PropTypes.InferProps<{
2557
+ theme: PropTypes.Requireable<string>;
2558
+ autoFocus: PropTypes.Requireable<boolean>;
2559
+ title: PropTypes.Requireable<string>;
2560
+ placeholder: PropTypes.Requireable<string>;
2561
+ defaultValue: PropTypes.Requireable<string>;
2562
+ disabled: PropTypes.Requireable<boolean>;
2563
+ readOnly: PropTypes.Requireable<boolean>;
2564
+ value: PropTypes.Requireable<string>;
2565
+ hint: PropTypes.Requireable<string>;
2566
+ error: PropTypes.Requireable<string>;
2567
+ onChange: PropTypes.Requireable<(...args: any[]) => any>;
2568
+ description: PropTypes.Requireable<string>;
2569
+ modified: PropTypes.Requireable<boolean>;
2570
+ type: PropTypes.Requireable<string>;
2571
+ valid: PropTypes.Requireable<boolean>;
2572
+ 'aria-label': PropTypes.Requireable<string>;
2573
+ 'data-name': PropTypes.Requireable<string>;
2574
+ inputColor: PropTypes.Requireable<boolean>;
2575
+ }>>;
2576
+ textArea: PropTypes.Requireable<PropTypes.InferProps<{
2577
+ theme: PropTypes.Requireable<string>;
2578
+ placeholder: PropTypes.Requireable<string>;
2579
+ title: PropTypes.Requireable<string>;
2580
+ name: PropTypes.Requireable<string>;
2581
+ disabled: PropTypes.Requireable<boolean>;
2582
+ readOnly: PropTypes.Requireable<boolean>;
2583
+ value: PropTypes.Requireable<string>;
2584
+ hint: PropTypes.Requireable<string>;
2585
+ error: PropTypes.Requireable<string>;
2586
+ onChange: PropTypes.Requireable<(...args: any[]) => any>;
2587
+ description: PropTypes.Requireable<string>;
2588
+ modified: PropTypes.Requireable<boolean>;
2589
+ valid: PropTypes.Requireable<boolean>;
2590
+ }>>;
2591
+ inputLanguage: PropTypes.Requireable<string>;
2592
+ }>>;
2593
+ target: PropTypes.Requireable<PropTypes.InferProps<{
2594
+ inputText: PropTypes.Requireable<PropTypes.InferProps<{
2595
+ theme: PropTypes.Requireable<string>;
2596
+ autoFocus: PropTypes.Requireable<boolean>;
2597
+ title: PropTypes.Requireable<string>;
2598
+ placeholder: PropTypes.Requireable<string>;
2599
+ defaultValue: PropTypes.Requireable<string>;
2600
+ disabled: PropTypes.Requireable<boolean>;
2601
+ readOnly: PropTypes.Requireable<boolean>;
2602
+ value: PropTypes.Requireable<string>;
2603
+ hint: PropTypes.Requireable<string>;
2604
+ error: PropTypes.Requireable<string>;
2605
+ onChange: PropTypes.Requireable<(...args: any[]) => any>;
2606
+ description: PropTypes.Requireable<string>;
2607
+ modified: PropTypes.Requireable<boolean>;
2608
+ type: PropTypes.Requireable<string>;
2609
+ valid: PropTypes.Requireable<boolean>;
2610
+ 'aria-label': PropTypes.Requireable<string>;
2611
+ 'data-name': PropTypes.Requireable<string>;
2612
+ inputColor: PropTypes.Requireable<boolean>;
2613
+ }>>;
2614
+ textArea: PropTypes.Requireable<PropTypes.InferProps<{
2615
+ theme: PropTypes.Requireable<string>;
2616
+ placeholder: PropTypes.Requireable<string>;
2617
+ title: PropTypes.Requireable<string>;
2618
+ name: PropTypes.Requireable<string>;
2619
+ disabled: PropTypes.Requireable<boolean>;
2620
+ readOnly: PropTypes.Requireable<boolean>;
2621
+ value: PropTypes.Requireable<string>;
2622
+ hint: PropTypes.Requireable<string>;
2623
+ error: PropTypes.Requireable<string>;
2624
+ onChange: PropTypes.Requireable<(...args: any[]) => any>;
2625
+ description: PropTypes.Requireable<string>;
2626
+ modified: PropTypes.Requireable<boolean>;
2627
+ valid: PropTypes.Requireable<boolean>;
2628
+ }>>;
2629
+ language: PropTypes.Requireable<string>;
2630
+ }>>;
2631
+ readOnly: PropTypes.Requireable<boolean>;
2549
2632
  }> | PropTypes.InferProps<{
2550
2633
  type: PropTypes.Requireable<string>;
2551
2634
  contentList: PropTypes.Validator<NonNullable<PropTypes.InferProps<{
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coorpacademy/components",
3
- "version": "11.40.4-alpha.45+17918fb3e",
3
+ "version": "11.40.4-alpha.999.44+93a2e338b",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",
@@ -166,5 +166,5 @@
166
166
  "last 2 versions",
167
167
  "IE 11"
168
168
  ],
169
- "gitHead": "17918fb3e4be29a1089b619e020a7a447b3eb1a6"
169
+ "gitHead": "93a2e338bb6cf1501877c61fb4256b9958b42fac"
170
170
  }