@coorpacademy/components 11.32.43 → 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 (117) 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/molecule/base-modal/index.d.ts +1 -0
  6. package/es/molecule/base-modal/index.d.ts.map +1 -1
  7. package/es/molecule/base-modal/index.js +9 -4
  8. package/es/molecule/base-modal/index.js.map +1 -1
  9. package/es/molecule/cm-popin/types.d.ts +12 -0
  10. package/es/molecule/cm-popin/types.d.ts.map +1 -1
  11. package/es/molecule/draggable-list/index.d.ts +12 -0
  12. package/es/molecule/icon-picker-modal/index.d.ts +15 -0
  13. package/es/molecule/icon-picker-modal/index.d.ts.map +1 -0
  14. package/es/molecule/icon-picker-modal/index.js +152 -0
  15. package/es/molecule/icon-picker-modal/index.js.map +1 -0
  16. package/es/molecule/icon-picker-modal/style.css +61 -0
  17. package/es/molecule/icon-picker-modal/use-icon-search.d.ts +9 -0
  18. package/es/molecule/icon-picker-modal/use-icon-search.d.ts.map +1 -0
  19. package/es/molecule/icon-picker-modal/use-icon-search.js +36 -0
  20. package/es/molecule/icon-picker-modal/use-icon-search.js.map +1 -0
  21. package/es/organism/brand-learning-priorities/index.d.ts +12 -0
  22. package/es/organism/list-item/index.d.ts +16 -1
  23. package/es/organism/list-item/index.d.ts.map +1 -1
  24. package/es/organism/list-item/index.js +58 -9
  25. package/es/organism/list-item/index.js.map +1 -1
  26. package/es/organism/list-item/style.css +25 -11
  27. package/es/organism/list-items/index.d.ts +12 -0
  28. package/es/template/app-player/loading/index.d.ts +12 -0
  29. package/es/template/app-player/player/index.d.ts +24 -0
  30. package/es/template/app-player/player/slides/index.d.ts +12 -0
  31. package/es/template/app-player/player/slides/index.d.ts.map +1 -1
  32. package/es/template/app-player/popin-correction/index.d.ts +12 -0
  33. package/es/template/app-player/popin-correction/index.d.ts.map +1 -1
  34. package/es/template/app-player/popin-end/index.d.ts +12 -0
  35. package/es/template/app-review/index.d.ts +12 -0
  36. package/es/template/app-review/index.d.ts.map +1 -1
  37. package/es/template/app-review/player/prop-types.d.ts +12 -0
  38. package/es/template/app-review/player/prop-types.d.ts.map +1 -1
  39. package/es/template/app-review/prop-types.d.ts +12 -0
  40. package/es/template/app-review/prop-types.d.ts.map +1 -1
  41. package/es/template/back-office/brand-update/index.d.ts +36 -0
  42. package/es/template/common/dashboard/index.d.ts +24 -0
  43. package/es/template/common/search-page/index.d.ts +12 -0
  44. package/es/template/external-course/index.d.ts +12 -0
  45. package/lib/atom/icon/index.d.ts +1 -0
  46. package/lib/atom/icon/index.d.ts.map +1 -1
  47. package/lib/atom/icon/index.js +12 -2
  48. package/lib/atom/icon/index.js.map +1 -1
  49. package/lib/molecule/base-modal/index.d.ts +1 -0
  50. package/lib/molecule/base-modal/index.d.ts.map +1 -1
  51. package/lib/molecule/base-modal/index.js +9 -4
  52. package/lib/molecule/base-modal/index.js.map +1 -1
  53. package/lib/molecule/cm-popin/types.d.ts +12 -0
  54. package/lib/molecule/cm-popin/types.d.ts.map +1 -1
  55. package/lib/molecule/draggable-list/index.d.ts +12 -0
  56. package/lib/molecule/icon-picker-modal/index.d.ts +15 -0
  57. package/lib/molecule/icon-picker-modal/index.d.ts.map +1 -0
  58. package/lib/molecule/icon-picker-modal/index.js +179 -0
  59. package/lib/molecule/icon-picker-modal/index.js.map +1 -0
  60. package/lib/molecule/icon-picker-modal/style.css +61 -0
  61. package/lib/molecule/icon-picker-modal/use-icon-search.d.ts +9 -0
  62. package/lib/molecule/icon-picker-modal/use-icon-search.d.ts.map +1 -0
  63. package/lib/molecule/icon-picker-modal/use-icon-search.js +52 -0
  64. package/lib/molecule/icon-picker-modal/use-icon-search.js.map +1 -0
  65. package/lib/organism/brand-learning-priorities/index.d.ts +12 -0
  66. package/lib/organism/list-item/index.d.ts +16 -1
  67. package/lib/organism/list-item/index.d.ts.map +1 -1
  68. package/lib/organism/list-item/index.js +56 -5
  69. package/lib/organism/list-item/index.js.map +1 -1
  70. package/lib/organism/list-item/style.css +25 -11
  71. package/lib/organism/list-items/index.d.ts +12 -0
  72. package/lib/template/app-player/loading/index.d.ts +12 -0
  73. package/lib/template/app-player/player/index.d.ts +24 -0
  74. package/lib/template/app-player/player/slides/index.d.ts +12 -0
  75. package/lib/template/app-player/player/slides/index.d.ts.map +1 -1
  76. package/lib/template/app-player/popin-correction/index.d.ts +12 -0
  77. package/lib/template/app-player/popin-correction/index.d.ts.map +1 -1
  78. package/lib/template/app-player/popin-end/index.d.ts +12 -0
  79. package/lib/template/app-review/index.d.ts +12 -0
  80. package/lib/template/app-review/index.d.ts.map +1 -1
  81. package/lib/template/app-review/player/prop-types.d.ts +12 -0
  82. package/lib/template/app-review/player/prop-types.d.ts.map +1 -1
  83. package/lib/template/app-review/prop-types.d.ts +12 -0
  84. package/lib/template/app-review/prop-types.d.ts.map +1 -1
  85. package/lib/template/back-office/brand-update/index.d.ts +36 -0
  86. package/lib/template/common/dashboard/index.d.ts +24 -0
  87. package/lib/template/common/search-page/index.d.ts +12 -0
  88. package/lib/template/external-course/index.d.ts +12 -0
  89. package/locales/bs/global.json +12 -10
  90. package/locales/cs/global.json +12 -10
  91. package/locales/de/global.json +12 -10
  92. package/locales/en/global.json +2 -0
  93. package/locales/es/global.json +12 -10
  94. package/locales/et/global.json +12 -10
  95. package/locales/fi/global.json +12 -10
  96. package/locales/fr/global.json +12 -10
  97. package/locales/hr/global.json +12 -10
  98. package/locales/hu/global.json +12 -10
  99. package/locales/hy/global.json +12 -10
  100. package/locales/it/global.json +12 -10
  101. package/locales/ja/global.json +12 -10
  102. package/locales/ko/global.json +12 -10
  103. package/locales/nl/global.json +12 -10
  104. package/locales/pl/global.json +12 -10
  105. package/locales/pt/global.json +12 -10
  106. package/locales/ro/global.json +12 -10
  107. package/locales/ru/global.json +12 -10
  108. package/locales/sk/global.json +12 -10
  109. package/locales/sl/global.json +12 -10
  110. package/locales/sv/global.json +12 -10
  111. package/locales/tl/global.json +12 -10
  112. package/locales/tr/global.json +12 -10
  113. package/locales/uk/global.json +12 -10
  114. package/locales/vi/global.json +12 -10
  115. package/locales/zh/global.json +12 -10
  116. package/locales/zh_TW/global.json +12 -10
  117. package/package.json +2 -2
@@ -1,4 +1,5 @@
1
1
  export const DEFAULT_ICON_COLOR: "hsl(0, 0%, 32%)";
2
+ export function createGradientBackground(baseColor: any): string;
2
3
  export function getForegroundColor(backgroundColor: any): any;
3
4
  export default Icon;
4
5
  declare const Icon: React.NamedExoticComponent<object>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atom/icon/index.js"],"names":[],"mappings":"AAiBA,mDAAoD;AAiB7C,8DAC8D;;AAGrE,uDAmCG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atom/icon/index.js"],"names":[],"mappings":"AAiBA,mDAAoD;AAiB7C,iEAIN;AAEM,8DAC8D;;AAGrE,uDAoCG"}
@@ -30,12 +30,18 @@ const SIZE_CONFIGS = {
30
30
  wrapperSize: 48
31
31
  }
32
32
  };
33
+ export const createGradientBackground = baseColor => {
34
+ const startColor = convert(`color(${baseColor} lightness(91%))`);
35
+ const endColor = convert(`color(${baseColor} lightness(81%))`);
36
+ return `linear-gradient(180deg, ${startColor} 0%, ${endColor} 100%)`;
37
+ };
33
38
  export const getForegroundColor = backgroundColor => convert(`color(${backgroundColor} lightness(${ICON_LUMINOSITY}%))`); // set lightness to 32%
34
39
 
35
40
  const Icon = /*#__PURE__*/React.memo(function Icon({
36
41
  iconName,
37
42
  iconColor,
38
43
  backgroundColor,
44
+ gradientBackground,
39
45
  borderRadius,
40
46
  preset = DEFAULT_PRESET,
41
47
  size,
@@ -45,7 +51,7 @@ const Icon = /*#__PURE__*/React.memo(function Icon({
45
51
  const effectiveSize = size ? merge(SIZE_CONFIGS[DEFAULT_PRESET], size) : getOr(SIZE_CONFIGS[DEFAULT_PRESET], toLower(preset), SIZE_CONFIGS);
46
52
  const wrapperSize = effectiveSize.wrapperSize - ICON_PADDING * 2;
47
53
  const iconWrapperStyle = {
48
- backgroundColor,
54
+ background: gradientBackground ? createGradientBackground(effectiveIconColor) : backgroundColor,
49
55
  borderRadius,
50
56
  width: wrapperSize,
51
57
  height: wrapperSize,
@@ -64,6 +70,7 @@ Icon.propTypes = process.env.NODE_ENV !== "production" ? {
64
70
  iconName: PropTypes.string.isRequired,
65
71
  iconColor: PropTypes.string,
66
72
  backgroundColor: PropTypes.string,
73
+ gradientBackground: PropTypes.bool,
67
74
  borderRadius: PropTypes.string,
68
75
  preset: PropTypes.oneOf(['s', 'm', 'xl']),
69
76
  size: PropTypes.shape({
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","PropTypes","number","FontAwesomeIcon","fas","library","toLower","merge","getOr","convert","style","add","DEFAULT_PRESET","ICON_LUMINOSITY","DEFAULT_WRAPPER_SIZE","ICON_PADDING","DEFAULT_ICON_COLOR","SIZE_CONFIGS","s","faSize","wrapperSize","m","xl","getForegroundColor","backgroundColor","Icon","memo","iconName","iconColor","borderRadius","preset","size","customStyle","effectiveIconColor","effectiveSize","iconWrapperStyle","width","height","padding","iconWrapper","propTypes","string","isRequired","oneOf","shape","objectOf","oneOfType"],"sources":["../../../src/atom/icon/index.js"],"sourcesContent":["import React from 'react';\nimport PropTypes, {number} from 'prop-types';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {fas} from '@fortawesome/pro-solid-svg-icons';\nimport {library} from '@fortawesome/fontawesome-svg-core';\nimport toLower from 'lodash/fp/toLower';\nimport merge from 'lodash/fp/merge';\nimport getOr from 'lodash/fp/getOr';\nimport {convert} from 'css-color-function';\nimport style from './style.css';\n\nlibrary.add(fas);\n\nconst DEFAULT_PRESET = 'm';\nconst ICON_LUMINOSITY = 32;\nconst DEFAULT_WRAPPER_SIZE = 40;\nconst ICON_PADDING = 8;\nexport const DEFAULT_ICON_COLOR = 'hsl(0, 0%, 32%)';\n\nconst SIZE_CONFIGS = {\n s: {\n faSize: 12,\n wrapperSize: 32\n },\n m: {\n faSize: 16,\n wrapperSize: DEFAULT_WRAPPER_SIZE\n },\n xl: {\n faSize: 20,\n wrapperSize: 48\n }\n};\n\nexport const getForegroundColor = backgroundColor =>\n convert(`color(${backgroundColor} lightness(${ICON_LUMINOSITY}%))`);\n// set lightness to 32%\n\nconst Icon = React.memo(function Icon({\n iconName,\n iconColor,\n backgroundColor,\n borderRadius,\n preset = DEFAULT_PRESET,\n size,\n customStyle\n}) {\n const effectiveIconColor =\n iconColor || (backgroundColor ? getForegroundColor(backgroundColor) : DEFAULT_ICON_COLOR);\n\n const effectiveSize = size\n ? merge(SIZE_CONFIGS[DEFAULT_PRESET], size)\n : getOr(SIZE_CONFIGS[DEFAULT_PRESET], toLower(preset), SIZE_CONFIGS);\n\n const wrapperSize = effectiveSize.wrapperSize - ICON_PADDING * 2;\n\n const iconWrapperStyle = {\n backgroundColor,\n borderRadius,\n width: wrapperSize,\n height: wrapperSize,\n padding: ICON_PADDING\n };\n\n return (\n <div className={style.iconWrapper} style={{...iconWrapperStyle, ...customStyle}}>\n <FontAwesomeIcon\n icon={`fa-${iconName}`}\n color={effectiveIconColor}\n fontSize={effectiveSize.faSize}\n />\n </div>\n );\n});\n\nIcon.propTypes = {\n iconName: PropTypes.string.isRequired,\n iconColor: PropTypes.string,\n backgroundColor: PropTypes.string,\n borderRadius: PropTypes.string,\n preset: PropTypes.oneOf(['s', 'm', 'xl']),\n size: PropTypes.shape({\n faSize: number,\n wrapperSize: PropTypes.number\n }),\n customStyle: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number]))\n};\n\nexport default Icon;\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["React","PropTypes","number","FontAwesomeIcon","fas","library","toLower","merge","getOr","convert","style","add","DEFAULT_PRESET","ICON_LUMINOSITY","DEFAULT_WRAPPER_SIZE","ICON_PADDING","DEFAULT_ICON_COLOR","SIZE_CONFIGS","s","faSize","wrapperSize","m","xl","createGradientBackground","baseColor","startColor","endColor","getForegroundColor","backgroundColor","Icon","memo","iconName","iconColor","gradientBackground","borderRadius","preset","size","customStyle","effectiveIconColor","effectiveSize","iconWrapperStyle","background","width","height","padding","iconWrapper","propTypes","string","isRequired","bool","oneOf","shape","objectOf","oneOfType"],"sources":["../../../src/atom/icon/index.js"],"sourcesContent":["import React from 'react';\nimport PropTypes, {number} from 'prop-types';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {fas} from '@fortawesome/pro-solid-svg-icons';\nimport {library} from '@fortawesome/fontawesome-svg-core';\nimport toLower from 'lodash/fp/toLower';\nimport merge from 'lodash/fp/merge';\nimport getOr from 'lodash/fp/getOr';\nimport {convert} from 'css-color-function';\nimport style from './style.css';\n\nlibrary.add(fas);\n\nconst DEFAULT_PRESET = 'm';\nconst ICON_LUMINOSITY = 32;\nconst DEFAULT_WRAPPER_SIZE = 40;\nconst ICON_PADDING = 8;\nexport const DEFAULT_ICON_COLOR = 'hsl(0, 0%, 32%)';\n\nconst SIZE_CONFIGS = {\n s: {\n faSize: 12,\n wrapperSize: 32\n },\n m: {\n faSize: 16,\n wrapperSize: DEFAULT_WRAPPER_SIZE\n },\n xl: {\n faSize: 20,\n wrapperSize: 48\n }\n};\n\nexport const createGradientBackground = baseColor => {\n const startColor = convert(`color(${baseColor} lightness(91%))`);\n const endColor = convert(`color(${baseColor} lightness(81%))`);\n return `linear-gradient(180deg, ${startColor} 0%, ${endColor} 100%)`;\n};\n\nexport const getForegroundColor = backgroundColor =>\n convert(`color(${backgroundColor} lightness(${ICON_LUMINOSITY}%))`);\n// set lightness to 32%\n\nconst Icon = React.memo(function Icon({\n iconName,\n iconColor,\n backgroundColor,\n gradientBackground,\n borderRadius,\n preset = DEFAULT_PRESET,\n size,\n customStyle\n}) {\n const effectiveIconColor =\n iconColor || (backgroundColor ? getForegroundColor(backgroundColor) : DEFAULT_ICON_COLOR);\n\n const effectiveSize = size\n ? merge(SIZE_CONFIGS[DEFAULT_PRESET], size)\n : getOr(SIZE_CONFIGS[DEFAULT_PRESET], toLower(preset), SIZE_CONFIGS);\n\n const wrapperSize = effectiveSize.wrapperSize - ICON_PADDING * 2;\n\n const iconWrapperStyle = {\n background: gradientBackground ? createGradientBackground(effectiveIconColor) : backgroundColor,\n borderRadius,\n width: wrapperSize,\n height: wrapperSize,\n padding: ICON_PADDING\n };\n\n return (\n <div className={style.iconWrapper} style={{...iconWrapperStyle, ...customStyle}}>\n <FontAwesomeIcon\n icon={`fa-${iconName}`}\n color={effectiveIconColor}\n fontSize={effectiveSize.faSize}\n />\n </div>\n );\n});\n\nIcon.propTypes = {\n iconName: PropTypes.string.isRequired,\n iconColor: PropTypes.string,\n backgroundColor: PropTypes.string,\n gradientBackground: PropTypes.bool,\n borderRadius: PropTypes.string,\n preset: PropTypes.oneOf(['s', 'm', 'xl']),\n size: PropTypes.shape({\n faSize: number,\n wrapperSize: PropTypes.number\n }),\n customStyle: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number]))\n};\n\nexport default Icon;\n"],"mappings":"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"}
@@ -51,6 +51,7 @@ 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>;
54
55
  }
55
56
  }
56
57
  import PropTypes from "prop-types";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule/base-modal/index.js"],"names":[],"mappings":";AASA,yEA6GC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule/base-modal/index.js"],"names":[],"mappings":";AASA,yEA+GC"}
@@ -19,7 +19,8 @@ const BaseModal = (props, context) => {
19
19
  children,
20
20
  isOpen,
21
21
  footer,
22
- onClose
22
+ onClose,
23
+ onScroll
23
24
  } = props;
24
25
  const {
25
26
  skin
@@ -113,7 +114,8 @@ const BaseModal = (props, context) => {
113
114
  className: style.headerDescription
114
115
  }, description) : null), /*#__PURE__*/React.createElement("div", {
115
116
  className: style.headerCloseIcon,
116
- onClick: handleOnClose
117
+ onClick: handleOnClose,
118
+ "data-testid": "close-icon"
117
119
  }, /*#__PURE__*/React.createElement(Icon, {
118
120
  iconName: "close",
119
121
  backgroundColor: "#F4F4F5",
@@ -122,7 +124,9 @@ const BaseModal = (props, context) => {
122
124
  wrapperSize: 28
123
125
  }
124
126
  }))), /*#__PURE__*/React.createElement("div", {
125
- className: style.body
127
+ className: style.body,
128
+ onScroll: onScroll,
129
+ "data-testid": "modal-body"
126
130
  }, children), /*#__PURE__*/React.createElement(Footer, null)));
127
131
  };
128
132
 
@@ -155,7 +159,8 @@ BaseModal.propTypes = process.env.NODE_ENV !== "production" ? {
155
159
  color: PropTypes.string
156
160
  })
157
161
  })]),
158
- onClose: PropTypes.func
162
+ onClose: PropTypes.func,
163
+ onScroll: PropTypes.func
159
164
  } : {};
160
165
  export default BaseModal;
161
166
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","useCallback","PropTypes","convert","Provider","Icon","ButtonLink","style","BaseModal","props","context","title","description","headerIcon","children","isOpen","footer","onClose","skin","Footer","cancelButton","confirmButton","text","isError","label","cancelLabel","onCancel","disabled","cancelDisabled","confirmLabel","onConfirm","confirmDisabled","iconName","color","buttonConfirmColor","footerCTAWrapper","className","footerCancelButton","type","onClick","customStyle","backgroundColor","hoverBackgroundColor","hoverColor","footerConfirmButton","icon","position","faIcon","name","size","footerDescription","footerDescriptionError","handleOnClose","e","stopPropagation","modalWrapper","modal","header","faSize","wrapperSize","headerContent","headerTitle","headerDescription","headerCloseIcon","body","contextTypes","childContextTypes","propTypes","string","shape","node","bool","oneOfType","func","boolean"],"sources":["../../../src/molecule/base-modal/index.js"],"sourcesContent":["import React, {useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport {isEmpty, get} from 'lodash/fp';\nimport {convert} from 'css-color-function';\nimport Provider from '../../atom/provider';\nimport Icon from '../../atom/icon';\nimport ButtonLink from '../../atom/button-link';\nimport style from './style.css';\n\nconst BaseModal = (props, context) => {\n const {title, description, headerIcon, children, isOpen, footer, onClose} = props;\n const {skin} = context;\n\n const Footer = useCallback(() => {\n if (isEmpty(footer)) return null;\n if (typeof footer === 'function') return footer();\n\n const {cancelButton, confirmButton, text, isError} = footer;\n const {label: cancelLabel, onCancel, disabled: cancelDisabled} = cancelButton || {};\n const {\n label: confirmLabel,\n onConfirm,\n disabled: confirmDisabled,\n iconName,\n color\n } = confirmButton || {};\n const buttonConfirmColor = color || get('common.primary', skin);\n\n return (\n <div className={style.footer}>\n <div className={style.footerCTAWrapper}>\n {onCancel && cancelLabel ? (\n <ButtonLink\n {...{\n className: style.footerCancelButton,\n type: 'secondary',\n onClick: onCancel,\n label: cancelLabel,\n disabled: cancelDisabled\n }}\n />\n ) : null}\n {onConfirm && confirmLabel ? (\n <div>\n <ButtonLink\n {...{\n customStyle: {backgroundColor: buttonConfirmColor},\n hoverBackgroundColor: convert(\n `hsl(from ${buttonConfirmColor} h s calc(l*(1 - 0.08)))`\n ),\n hoverColor: '#FFFFFF',\n className: style.footerConfirmButton,\n type: 'primary',\n onClick: onConfirm,\n label: confirmLabel,\n disabled: confirmDisabled,\n ...(iconName\n ? {\n icon: {\n position: 'left',\n faIcon: {\n name: iconName,\n color: '#FFFFFF',\n size: 16\n }\n }\n }\n : {})\n }}\n />\n </div>\n ) : null}\n </div>\n {text ? (\n <div\n className={`${style.footerDescription} ${isError ? style.footerDescriptionError : ''}`}\n >\n {text}\n </div>\n ) : null}\n </div>\n );\n }, [footer, skin]);\n\n if (!isOpen || !title || !children) return null;\n\n function handleOnClose(e) {\n e?.stopPropagation();\n onClose();\n }\n\n return (\n <div className={style.modalWrapper}>\n <div className={style.modal}>\n <header className={style.header}>\n {headerIcon?.name ? (\n <div className={style.headerIcon}>\n <Icon\n iconName={headerIcon.name}\n iconColor={headerIcon.color}\n backgroundColor={headerIcon.backgroundColor}\n size={{faSize: 20, wrapperSize: 48}}\n />\n </div>\n ) : null}\n <div className={style.headerContent}>\n <div className={style.headerTitle}>{title}</div>\n {description ? <div className={style.headerDescription}>{description}</div> : null}\n </div>\n <div className={style.headerCloseIcon} onClick={handleOnClose}>\n <Icon iconName=\"close\" backgroundColor=\"#F4F4F5\" size={{faSize: 14, wrapperSize: 28}} />\n </div>\n </header>\n <div className={style.body}>{children}</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};\n\nexport default BaseModal;\n"],"mappings":";;;;;AAAA,OAAOA,KAAP,IAAeC,WAAf,QAAiC,OAAjC;AACA,OAAOC,SAAP,MAAsB,YAAtB;AAEA,SAAQC,OAAR,QAAsB,oBAAtB;AACA,OAAOC,QAAP,MAAqB,qBAArB;AACA,OAAOC,IAAP,MAAiB,iBAAjB;AACA,OAAOC,UAAP,MAAuB,wBAAvB;AACA,OAAOC,KAAP,MAAkB,aAAlB;;AAEA,MAAMC,SAAS,GAAG,CAACC,KAAD,EAAQC,OAAR,KAAoB;EACpC,MAAM;IAACC,KAAD;IAAQC,WAAR;IAAqBC,UAArB;IAAiCC,QAAjC;IAA2CC,MAA3C;IAAmDC,MAAnD;IAA2DC;EAA3D,IAAsER,KAA5E;EACA,MAAM;IAACS;EAAD,IAASR,OAAf;EAEA,MAAMS,MAAM,GAAGlB,WAAW,CAAC,MAAM;IAC/B,IAAI,SAAQe,MAAR,CAAJ,EAAqB,OAAO,IAAP;IACrB,IAAI,OAAOA,MAAP,KAAkB,UAAtB,EAAkC,OAAOA,MAAM,EAAb;IAElC,MAAM;MAACI,YAAD;MAAeC,aAAf;MAA8BC,IAA9B;MAAoCC;IAApC,IAA+CP,MAArD;IACA,MAAM;MAACQ,KAAK,EAAEC,WAAR;MAAqBC,QAArB;MAA+BC,QAAQ,EAAEC;IAAzC,IAA2DR,YAAY,IAAI,EAAjF;IACA,MAAM;MACJI,KAAK,EAAEK,YADH;MAEJC,SAFI;MAGJH,QAAQ,EAAEI,eAHN;MAIJC,QAJI;MAKJC;IALI,IAMFZ,aAAa,IAAI,EANrB;;IAOA,MAAMa,kBAAkB,GAAGD,KAAK,IAAI,KAAI,gBAAJ,EAAsBf,IAAtB,CAApC;;IAEA,oBACE;MAAK,SAAS,EAAEX,KAAK,CAACS;IAAtB,gBACE;MAAK,SAAS,EAAET,KAAK,CAAC4B;IAAtB,GACGT,QAAQ,IAAID,WAAZ,gBACC,oBAAC,UAAD;MAEIW,SAAS,EAAE7B,KAAK,CAAC8B,kBAFrB;MAGIC,IAAI,EAAE,WAHV;MAIIC,OAAO,EAAEb,QAJb;MAKIF,KAAK,EAAEC,WALX;MAMIE,QAAQ,EAAEC;IANd,EADD,GAUG,IAXN,EAYGE,SAAS,IAAID,YAAb,gBACC,8CACE,oBAAC,UAAD;MAEIW,WAAW,EAAE;QAACC,eAAe,EAAEP;MAAlB,CAFjB;MAGIQ,oBAAoB,EAAEvC,OAAO,CAC1B,YAAW+B,kBAAmB,0BADJ,CAHjC;MAMIS,UAAU,EAAE,SANhB;MAOIP,SAAS,EAAE7B,KAAK,CAACqC,mBAPrB;MAQIN,IAAI,EAAE,SARV;MASIC,OAAO,EAAET,SATb;MAUIN,KAAK,EAAEK,YAVX;MAWIF,QAAQ,EAAEI;IAXd,GAYQC,QAAQ,GACR;MACEa,IAAI,EAAE;QACJC,QAAQ,EAAE,MADN;QAEJC,MAAM,EAAE;UACNC,IAAI,EAAEhB,QADA;UAENC,KAAK,EAAE,SAFD;UAGNgB,IAAI,EAAE;QAHA;MAFJ;IADR,CADQ,GAWR,EAvBR,EADF,CADD,GA6BG,IAzCN,CADF,EA4CG3B,IAAI,gBACH;MACE,SAAS,EAAG,GAAEf,KAAK,CAAC2C,iBAAkB,IAAG3B,OAAO,GAAGhB,KAAK,CAAC4C,sBAAT,GAAkC,EAAG;IADvF,GAGG7B,IAHH,CADG,GAMD,IAlDN,CADF;EAsDD,CArEyB,EAqEvB,CAACN,MAAD,EAASE,IAAT,CArEuB,CAA1B;EAuEA,IAAI,CAACH,MAAD,IAAW,CAACJ,KAAZ,IAAqB,CAACG,QAA1B,EAAoC,OAAO,IAAP;;EAEpC,SAASsC,aAAT,CAAuBC,CAAvB,EAA0B;IACxBA,CAAC,EAAEC,eAAH;IACArC,OAAO;EACR;;EAED,oBACE;IAAK,SAAS,EAAEV,KAAK,CAACgD;EAAtB,gBACE;IAAK,SAAS,EAAEhD,KAAK,CAACiD;EAAtB,gBACE;IAAQ,SAAS,EAAEjD,KAAK,CAACkD;EAAzB,GACG5C,UAAU,EAAEmC,IAAZ,gBACC;IAAK,SAAS,EAAEzC,KAAK,CAACM;EAAtB,gBACE,oBAAC,IAAD;IACE,QAAQ,EAAEA,UAAU,CAACmC,IADvB;IAEE,SAAS,EAAEnC,UAAU,CAACoB,KAFxB;IAGE,eAAe,EAAEpB,UAAU,CAAC4B,eAH9B;IAIE,IAAI,EAAE;MAACiB,MAAM,EAAE,EAAT;MAAaC,WAAW,EAAE;IAA1B;EAJR,EADF,CADD,GASG,IAVN,eAWE;IAAK,SAAS,EAAEpD,KAAK,CAACqD;EAAtB,gBACE;IAAK,SAAS,EAAErD,KAAK,CAACsD;EAAtB,GAAoClD,KAApC,CADF,EAEGC,WAAW,gBAAG;IAAK,SAAS,EAAEL,KAAK,CAACuD;EAAtB,GAA0ClD,WAA1C,CAAH,GAAkE,IAFhF,CAXF,eAeE;IAAK,SAAS,EAAEL,KAAK,CAACwD,eAAtB;IAAuC,OAAO,EAAEX;EAAhD,gBACE,oBAAC,IAAD;IAAM,QAAQ,EAAC,OAAf;IAAuB,eAAe,EAAC,SAAvC;IAAiD,IAAI,EAAE;MAACM,MAAM,EAAE,EAAT;MAAaC,WAAW,EAAE;IAA1B;EAAvD,EADF,CAfF,CADF,eAoBE;IAAK,SAAS,EAAEpD,KAAK,CAACyD;EAAtB,GAA6BlD,QAA7B,CApBF,eAqBE,oBAAC,MAAD,OArBF,CADF,CADF;AA2BD,CA7GD;;AA+GAN,SAAS,CAACyD,YAAV,GAAyB;EACvB/C,IAAI,EAAEd,QAAQ,CAAC8D,iBAAT,CAA2BhD;AADV,CAAzB;AAIAV,SAAS,CAAC2D,SAAV,2CAAsB;EACpBxD,KAAK,EAAET,SAAS,CAACkE,MADG;EAEpBvD,UAAU,EAAEX,SAAS,CAACmE,KAAV,CAAgB;IAC1BrB,IAAI,EAAE9C,SAAS,CAACkE,MADU;IAE1BnC,KAAK,EAAE/B,SAAS,CAACkE,MAFS;IAG1B3B,eAAe,EAAEvC,SAAS,CAACkE;EAHD,CAAhB,CAFQ;EAOpBxD,WAAW,EAAEV,SAAS,CAACkE,MAPH;EAQpBtD,QAAQ,EAAEZ,SAAS,CAACoE,IARA;EASpBvD,MAAM,EAAEb,SAAS,CAACqE,IATE;EAUpBvD,MAAM,EAAEd,SAAS,CAACsE,SAAV,CAAoB,CAC1BtE,SAAS,CAACuE,IADgB,EAE1BvE,SAAS,CAACmE,KAAV,CAAgB;IACd/C,IAAI,EAAEpB,SAAS,CAACkE,MADF;IAEd7C,OAAO,EAAErB,SAAS,CAACwE,OAFL;IAGdtD,YAAY,EAAElB,SAAS,CAACmE,KAAV,CAAgB;MAC5B7C,KAAK,EAAEtB,SAAS,CAACkE,MADW;MAE5B1C,QAAQ,EAAExB,SAAS,CAACuE,IAFQ;MAG5B9C,QAAQ,EAAEzB,SAAS,CAACqE;IAHQ,CAAhB,CAHA;IAQdlD,aAAa,EAAEnB,SAAS,CAACmE,KAAV,CAAgB;MAC7B7C,KAAK,EAAEtB,SAAS,CAACkE,MADY;MAE7BtC,SAAS,EAAE5B,SAAS,CAACuE,IAFQ;MAG7BzC,QAAQ,EAAE9B,SAAS,CAACkE,MAHS;MAI7BzC,QAAQ,EAAEzB,SAAS,CAACqE,IAJS;MAK7BtC,KAAK,EAAE/B,SAAS,CAACkE;IALY,CAAhB;EARD,CAAhB,CAF0B,CAApB,CAVY;EA6BpBnD,OAAO,EAAEf,SAAS,CAACuE;AA7BC,CAAtB;AAgCA,eAAejE,SAAf"}
1
+ {"version":3,"file":"index.js","names":["React","useCallback","PropTypes","convert","Provider","Icon","ButtonLink","style","BaseModal","props","context","title","description","headerIcon","children","isOpen","footer","onClose","onScroll","skin","Footer","cancelButton","confirmButton","text","isError","label","cancelLabel","onCancel","disabled","cancelDisabled","confirmLabel","onConfirm","confirmDisabled","iconName","color","buttonConfirmColor","footerCTAWrapper","className","footerCancelButton","type","onClick","customStyle","backgroundColor","hoverBackgroundColor","hoverColor","footerConfirmButton","icon","position","faIcon","name","size","footerDescription","footerDescriptionError","handleOnClose","e","stopPropagation","modalWrapper","modal","header","faSize","wrapperSize","headerContent","headerTitle","headerDescription","headerCloseIcon","body","contextTypes","childContextTypes","propTypes","string","shape","node","bool","oneOfType","func","boolean"],"sources":["../../../src/molecule/base-modal/index.js"],"sourcesContent":["import React, {useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport {isEmpty, get} from 'lodash/fp';\nimport {convert} from 'css-color-function';\nimport Provider from '../../atom/provider';\nimport Icon from '../../atom/icon';\nimport ButtonLink from '../../atom/button-link';\nimport style from './style.css';\n\nconst BaseModal = (props, context) => {\n const {title, description, headerIcon, children, isOpen, footer, onClose, onScroll} = props;\n const {skin} = context;\n\n const Footer = useCallback(() => {\n if (isEmpty(footer)) return null;\n if (typeof footer === 'function') return footer();\n\n const {cancelButton, confirmButton, text, isError} = footer;\n const {label: cancelLabel, onCancel, disabled: cancelDisabled} = cancelButton || {};\n const {\n label: confirmLabel,\n onConfirm,\n disabled: confirmDisabled,\n iconName,\n color\n } = confirmButton || {};\n const buttonConfirmColor = color || get('common.primary', skin);\n\n return (\n <div className={style.footer}>\n <div className={style.footerCTAWrapper}>\n {onCancel && cancelLabel ? (\n <ButtonLink\n {...{\n className: style.footerCancelButton,\n type: 'secondary',\n onClick: onCancel,\n label: cancelLabel,\n disabled: cancelDisabled\n }}\n />\n ) : null}\n {onConfirm && confirmLabel ? (\n <div>\n <ButtonLink\n {...{\n customStyle: {backgroundColor: buttonConfirmColor},\n hoverBackgroundColor: convert(\n `hsl(from ${buttonConfirmColor} h s calc(l*(1 - 0.08)))`\n ),\n hoverColor: '#FFFFFF',\n className: style.footerConfirmButton,\n type: 'primary',\n onClick: onConfirm,\n label: confirmLabel,\n disabled: confirmDisabled,\n ...(iconName\n ? {\n icon: {\n position: 'left',\n faIcon: {\n name: iconName,\n color: '#FFFFFF',\n size: 16\n }\n }\n }\n : {})\n }}\n />\n </div>\n ) : null}\n </div>\n {text ? (\n <div\n className={`${style.footerDescription} ${isError ? style.footerDescriptionError : ''}`}\n >\n {text}\n </div>\n ) : null}\n </div>\n );\n }, [footer, skin]);\n\n if (!isOpen || !title || !children) return null;\n\n function handleOnClose(e) {\n e?.stopPropagation();\n onClose();\n }\n\n return (\n <div className={style.modalWrapper}>\n <div className={style.modal}>\n <header className={style.header}>\n {headerIcon?.name ? (\n <div className={style.headerIcon}>\n <Icon\n iconName={headerIcon.name}\n iconColor={headerIcon.color}\n backgroundColor={headerIcon.backgroundColor}\n size={{faSize: 20, wrapperSize: 48}}\n />\n </div>\n ) : null}\n <div className={style.headerContent}>\n <div className={style.headerTitle}>{title}</div>\n {description ? <div className={style.headerDescription}>{description}</div> : null}\n </div>\n <div className={style.headerCloseIcon} onClick={handleOnClose} data-testid=\"close-icon\">\n <Icon iconName=\"close\" backgroundColor=\"#F4F4F5\" size={{faSize: 14, wrapperSize: 28}} />\n </div>\n </header>\n <div className={style.body} onScroll={onScroll} data-testid=\"modal-body\">\n {children}\n </div>\n <Footer />\n </div>\n </div>\n );\n};\n\nBaseModal.contextTypes = {\n skin: Provider.childContextTypes.skin\n};\n\nBaseModal.propTypes = {\n title: PropTypes.string,\n headerIcon: PropTypes.shape({\n name: PropTypes.string,\n color: PropTypes.string,\n backgroundColor: PropTypes.string\n }),\n description: PropTypes.string,\n children: PropTypes.node,\n isOpen: PropTypes.bool,\n footer: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({\n text: PropTypes.string,\n isError: PropTypes.boolean,\n cancelButton: PropTypes.shape({\n label: PropTypes.string,\n onCancel: PropTypes.func,\n disabled: PropTypes.bool\n }),\n confirmButton: PropTypes.shape({\n label: PropTypes.string,\n onConfirm: PropTypes.func,\n iconName: PropTypes.string,\n disabled: PropTypes.bool,\n color: PropTypes.string\n })\n })\n ]),\n onClose: PropTypes.func,\n onScroll: PropTypes.func\n};\n\nexport default BaseModal;\n"],"mappings":"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"}
@@ -136,6 +136,7 @@ declare const propTypes: {
136
136
  items: PropTypes.Requireable<(PropTypes.InferProps<{
137
137
  title: PropTypes.Validator<string>;
138
138
  subtitle: PropTypes.Requireable<string>;
139
+ provider: PropTypes.Requireable<string>;
139
140
  selected: PropTypes.Requireable<boolean>;
140
141
  selectedColor: PropTypes.Requireable<string>;
141
142
  dataColumns: PropTypes.Requireable<(PropTypes.InferProps<{
@@ -188,6 +189,17 @@ declare const propTypes: {
188
189
  'aria-label': PropTypes.Requireable<string>;
189
190
  contentType: PropTypes.Requireable<string>;
190
191
  id: PropTypes.Requireable<string>;
192
+ leftIcon: PropTypes.Requireable<PropTypes.InferProps<{
193
+ iconName: PropTypes.Requireable<string>;
194
+ iconColor: PropTypes.Requireable<string>;
195
+ backgroundColor: PropTypes.Requireable<string>;
196
+ borderRadius: PropTypes.Requireable<string>;
197
+ preset: PropTypes.Requireable<string>;
198
+ gradientBackground: PropTypes.Requireable<boolean>;
199
+ size: PropTypes.Requireable<number>;
200
+ wrapperSize: PropTypes.Requireable<number>;
201
+ }>>;
202
+ editAsIcon: PropTypes.Requireable<boolean>;
191
203
  }> | null | undefined)[]>;
192
204
  type: PropTypes.Requireable<string>;
193
205
  itemType: PropTypes.Requireable<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/molecule/cm-popin/types.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AAKnC,OAAO,IAAI,MAAM,iBAAiB,CAAC;AACnC,OAAO,EAAC,UAAU,EAAC,MAAM,wBAAwB,CAAC;AAClD,OAAO,SAAS,MAAM,2BAA2B,CAAC;AAClD,OAAO,SAAS,MAAM,2BAA2B,CAAC;AAGlD,QAAA,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoDd,CAAC;AAEF,aAAK,gBAAgB,GAAG;IACtB,KAAK,EAAE,UAAU,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,oBAAY,eAAe,GAAG;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE;QACZ,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,aAAa,EAAE,MAAM,IAAI,CAAC;CAC3B,CAAC;AAEF,oBAAY,YAAY,GAAG;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,GAAG,aAAa,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;IAC5D,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,SAAS,GAAG,MAAM,CAAC;QACzB,IAAI,EACA,SAAS,CAAC,UAAU,CAAC,OAAO,SAAS,CAAC,SAAS,CAAC,GAChD,SAAS,CAAC,UAAU,CAAC,OAAO,SAAS,CAAC,SAAS,CAAC,CAAC;KACtD,CAAC;IACF,IAAI,CAAC,EAAE,SAAS,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC;CACpD,CAAC;AAEF,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/molecule/cm-popin/types.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AAKnC,OAAO,IAAI,MAAM,iBAAiB,CAAC;AACnC,OAAO,EAAC,UAAU,EAAC,MAAM,wBAAwB,CAAC;AAClD,OAAO,SAAS,MAAM,2BAA2B,CAAC;AAClD,OAAO,SAAS,MAAM,2BAA2B,CAAC;AAGlD,QAAA,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoDd,CAAC;AAEF,aAAK,gBAAgB,GAAG;IACtB,KAAK,EAAE,UAAU,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,oBAAY,eAAe,GAAG;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE;QACZ,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,aAAa,EAAE,MAAM,IAAI,CAAC;CAC3B,CAAC;AAEF,oBAAY,YAAY,GAAG;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,GAAG,aAAa,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;IAC5D,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,SAAS,GAAG,MAAM,CAAC;QACzB,IAAI,EACA,SAAS,CAAC,UAAU,CAAC,OAAO,SAAS,CAAC,SAAS,CAAC,GAChD,SAAS,CAAC,UAAU,CAAC,OAAO,SAAS,CAAC,SAAS,CAAC,CAAC;KACtD,CAAC;IACF,IAAI,CAAC,EAAE,SAAS,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC;CACpD,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -62,6 +62,7 @@ declare namespace DraggableList {
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 DraggableList {
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>;
@@ -0,0 +1,15 @@
1
+ export default IconPickerModal;
2
+ declare function IconPickerModal(props: any, context: any): JSX.Element | null;
3
+ declare namespace IconPickerModal {
4
+ namespace contextTypes {
5
+ const translate: PropTypes.Requireable<(...args: any[]) => any>;
6
+ }
7
+ namespace propTypes {
8
+ const isOpen: PropTypes.Requireable<boolean>;
9
+ const onCancel: PropTypes.Requireable<(...args: any[]) => any>;
10
+ const onConfirm: PropTypes.Requireable<(...args: any[]) => any>;
11
+ const onClose: PropTypes.Requireable<(...args: any[]) => any>;
12
+ }
13
+ }
14
+ import PropTypes from "prop-types";
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule/icon-picker-modal/index.js"],"names":[],"mappings":";AAcA,+EAwIC"}
@@ -0,0 +1,152 @@
1
+ import _size from "lodash/fp/size";
2
+ import _slice from "lodash/fp/slice";
3
+ import _values from "lodash/fp/values";
4
+ import _get from "lodash/fp/get";
5
+ import _pipe from "lodash/fp/pipe";
6
+ import _map from "lodash/fp/map";
7
+ import _entries from "lodash/fp/entries";
8
+ import React, { useMemo, useState, useCallback, useEffect } from 'react';
9
+ import PropTypes from 'prop-types';
10
+ import { fas } from '@fortawesome/pro-solid-svg-icons';
11
+ import BaseModal from '../base-modal';
12
+ import SelectIcon from '../../atom/select-icon';
13
+ import Provider from '../../atom/provider';
14
+ import SearchForm from '../search-form';
15
+ import { COLORS } from '../../variables/colors';
16
+ import style from './style.css';
17
+ import useIconSearch from './use-icon-search';
18
+ const ICONS_PER_LOAD = 48;
19
+
20
+ const IconPickerModal = (props, context) => {
21
+ const {
22
+ isOpen,
23
+ onCancel,
24
+ onConfirm,
25
+ onClose
26
+ } = props;
27
+ const {
28
+ translate
29
+ } = context;
30
+ const [selectedIcon, setSelectedIcon] = useState(null);
31
+ const [displayedIcons, setDisplayedIcons] = useState([]);
32
+ const [currentIndex, setCurrentIndex] = useState(0);
33
+ const allIcons = useMemo(() => _pipe(_values, _map(_get('iconName')))(fas), []);
34
+ const {
35
+ searchValue,
36
+ searchResults,
37
+ handleSearch,
38
+ handleReset
39
+ } = useIconSearch(allIcons);
40
+ const handleCancel = useCallback(() => {
41
+ onCancel();
42
+ }, [onCancel]);
43
+ const handleClose = useCallback(() => {
44
+ onClose();
45
+ }, [onClose]);
46
+ const handleIconClick = useCallback(iconName => () => {
47
+ setSelectedIcon(prevSelectedIcon => prevSelectedIcon === iconName ? null : iconName);
48
+ }, []);
49
+ const loadMoreIcons = useCallback(() => {
50
+ const nextIndex = currentIndex + ICONS_PER_LOAD;
51
+
52
+ const newIcons = _slice(currentIndex, nextIndex, searchResults);
53
+
54
+ setDisplayedIcons(prevIcons => [...prevIcons, ...newIcons]);
55
+ setCurrentIndex(nextIndex);
56
+ }, [currentIndex, searchResults]);
57
+ useEffect(() => {
58
+ setDisplayedIcons(() => _slice(0, ICONS_PER_LOAD, searchResults));
59
+ setCurrentIndex(ICONS_PER_LOAD);
60
+ }, [searchResults]);
61
+ const handleScroll = useCallback(event => {
62
+ const {
63
+ scrollTop,
64
+ clientHeight,
65
+ scrollHeight
66
+ } = event.currentTarget;
67
+
68
+ if (scrollHeight - scrollTop <= clientHeight + 1) {
69
+ loadMoreIcons();
70
+ }
71
+ }, [loadMoreIcons]);
72
+ const icons = useMemo(() => _pipe(_entries, _map(([index, iconName]) => /*#__PURE__*/React.createElement(SelectIcon, {
73
+ key: `icon-${index}`,
74
+ size: "responsive",
75
+ "data-name": `icon-${index}`,
76
+ "aria-label": iconName,
77
+ faIcon: iconName,
78
+ onClick: handleIconClick(iconName),
79
+ options: {
80
+ isSelected: selectedIcon === iconName
81
+ }
82
+ })))(displayedIcons), [displayedIcons, selectedIcon, handleIconClick]);
83
+ const footer = useMemo(() => {
84
+ return {
85
+ cancelButton: {
86
+ onCancel: handleCancel,
87
+ label: translate('cancel')
88
+ },
89
+ confirmButton: {
90
+ onConfirm: () => {
91
+ onConfirm(selectedIcon);
92
+ setSelectedIcon(null);
93
+ onClose();
94
+ },
95
+ label: translate('confirm'),
96
+ iconName: 'plus',
97
+ disabled: selectedIcon === null,
98
+ color: COLORS.cm_primary_blue
99
+ }
100
+ };
101
+ }, [handleCancel, onConfirm, onClose, translate, selectedIcon]);
102
+ if (!isOpen) return null;
103
+ return /*#__PURE__*/React.createElement(BaseModal, {
104
+ title: translate('icon_picker_title'),
105
+ description: translate('icon_picker_description'),
106
+ isOpen: isOpen,
107
+ onClose: handleClose,
108
+ onScroll: handleScroll,
109
+ footer: footer,
110
+ headerIcon: {
111
+ name: 'arrows-rotate',
112
+ backgroundColor: '#D6E6FF'
113
+ }
114
+ }, /*#__PURE__*/React.createElement("div", {
115
+ className: style.iconPicker
116
+ }, /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
117
+ className: style.searchWrapper
118
+ }, /*#__PURE__*/React.createElement(SearchForm, {
119
+ search: {
120
+ placeholder: translate('search_place_holder'),
121
+ value: searchValue,
122
+ onChange: handleSearch
123
+ },
124
+ onReset: handleReset,
125
+ dataTestId: "search-input"
126
+ })), searchValue && _size(searchResults) === 0 ? /*#__PURE__*/React.createElement("div", {
127
+ className: style.emptySearchResultContainer
128
+ }, /*#__PURE__*/React.createElement("div", {
129
+ className: style.emptySearchResultTitle
130
+ }, translate('empty_search_result_title', {
131
+ searchValue
132
+ })), /*#__PURE__*/React.createElement("div", {
133
+ className: style.emptySearchResultDescription
134
+ }, translate('empty_search_result_description')), /*#__PURE__*/React.createElement("div", {
135
+ className: style.emptySearchResultClearSearch,
136
+ onClick: handleReset
137
+ }, translate('empty_search_result_clear_search'))) : /*#__PURE__*/React.createElement("div", {
138
+ className: style.iconsListWrapper
139
+ }, icons))));
140
+ };
141
+
142
+ IconPickerModal.contextTypes = {
143
+ translate: Provider.childContextTypes.translate
144
+ };
145
+ IconPickerModal.propTypes = process.env.NODE_ENV !== "production" ? {
146
+ isOpen: PropTypes.bool,
147
+ onCancel: PropTypes.func,
148
+ onConfirm: PropTypes.func,
149
+ onClose: PropTypes.func
150
+ } : {};
151
+ export default IconPickerModal;
152
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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","searchValue","searchResults","handleSearch","handleReset","handleCancel","handleClose","handleIconClick","iconName","prevSelectedIcon","loadMoreIcons","nextIndex","newIcons","prevIcons","handleScroll","event","scrollTop","clientHeight","scrollHeight","currentTarget","icons","index","isSelected","footer","cancelButton","label","confirmButton","disabled","color","cm_primary_blue","name","backgroundColor","iconPicker","searchWrapper","placeholder","value","onChange","emptySearchResultContainer","emptySearchResultTitle","emptySearchResultDescription","emptySearchResultClearSearch","iconsListWrapper","contextTypes","childContextTypes","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,36 @@
1
+ import _toLower from "lodash/fp/toLower";
2
+ import _includes from "lodash/fp/includes";
3
+ import _pipe from "lodash/fp/pipe";
4
+ import _filter from "lodash/fp/filter";
5
+ import _debounce from "lodash/fp/debounce";
6
+ import { useState, useCallback, useMemo } from 'react';
7
+ export const filterIcons = (query, allIcons) => {
8
+ return query ? _filter(_pipe(_toLower, _includes(_toLower(query))), allIcons) : allIcons;
9
+ };
10
+
11
+ const useIconSearch = allIcons => {
12
+ const [searchValue, setSearchValue] = useState('');
13
+ const [searchResults, setSearchResults] = useState(allIcons);
14
+ const updateSearchResults = useCallback(query => {
15
+ const results = filterIcons(query, allIcons);
16
+ setSearchResults(results);
17
+ }, [allIcons]);
18
+ const debouncedSearch = useMemo(() => _debounce(300, updateSearchResults), [updateSearchResults]);
19
+ const handleSearch = useCallback(value => {
20
+ setSearchValue(value);
21
+ debouncedSearch(value);
22
+ }, [debouncedSearch]);
23
+ const handleReset = useCallback(() => {
24
+ setSearchValue('');
25
+ updateSearchResults('');
26
+ }, [updateSearchResults]);
27
+ return {
28
+ searchValue,
29
+ searchResults,
30
+ handleSearch,
31
+ handleReset
32
+ };
33
+ };
34
+
35
+ export default useIconSearch;
36
+ //# sourceMappingURL=use-icon-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-icon-search.js","names":["useState","useCallback","useMemo","filterIcons","query","allIcons","useIconSearch","searchValue","setSearchValue","searchResults","setSearchResults","updateSearchResults","results","debouncedSearch","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,SAAQA,QAAR,EAAkBC,WAAlB,EAA+BC,OAA/B,QAA6C,OAA7C;AAGA,OAAO,MAAMC,WAAW,GAAG,CAACC,KAAD,EAAQC,QAAR,KAAqB;EAC9C,OAAOD,KAAK,GAAG,QAAO,gBAAc,UAAS,SAAQA,KAAR,CAAT,CAAd,CAAP,EAAgDC,QAAhD,CAAH,GAA+DA,QAA3E;AACD,CAFM;;AAGP,MAAMC,aAAa,GAAGD,QAAQ,IAAI;EAChC,MAAM,CAACE,WAAD,EAAcC,cAAd,IAAgCR,QAAQ,CAAC,EAAD,CAA9C;EACA,MAAM,CAACS,aAAD,EAAgBC,gBAAhB,IAAoCV,QAAQ,CAACK,QAAD,CAAlD;EAEA,MAAMM,mBAAmB,GAAGV,WAAW,CACrCG,KAAK,IAAI;IACP,MAAMQ,OAAO,GAAGT,WAAW,CAACC,KAAD,EAAQC,QAAR,CAA3B;IACAK,gBAAgB,CAACE,OAAD,CAAhB;EACD,CAJoC,EAKrC,CAACP,QAAD,CALqC,CAAvC;EAQA,MAAMQ,eAAe,GAAGX,OAAO,CAAC,MAAM,UAAS,GAAT,EAAcS,mBAAd,CAAP,EAA2C,CAACA,mBAAD,CAA3C,CAA/B;EAEA,MAAMG,YAAY,GAAGb,WAAW,CAC9Bc,KAAK,IAAI;IACPP,cAAc,CAACO,KAAD,CAAd;IACAF,eAAe,CAACE,KAAD,CAAf;EACD,CAJ6B,EAK9B,CAACF,eAAD,CAL8B,CAAhC;EAQA,MAAMG,WAAW,GAAGf,WAAW,CAAC,MAAM;IACpCO,cAAc,CAAC,EAAD,CAAd;IACAG,mBAAmB,CAAC,EAAD,CAAnB;EACD,CAH8B,EAG5B,CAACA,mBAAD,CAH4B,CAA/B;EAKA,OAAO;IACLJ,WADK;IAELE,aAFK;IAGLK,YAHK;IAILE;EAJK,CAAP;AAMD,CAjCD;;AAmCA,eAAeV,aAAf"}
@@ -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>;