diff --git a/packages/icon-build-helpers/src/builders/react/builder.js b/packages/icon-build-helpers/src/builders/react/builder.js index 237a56944bad..77b8dd6aba72 100644 --- a/packages/icon-build-helpers/src/builders/react/builder.js +++ b/packages/icon-build-helpers/src/builders/react/builder.js @@ -195,9 +195,18 @@ const didWarnAboutDeprecation = {};`; * @param {object} node * @returns {string} */ -function convertToJSX(node) { - const { elem, attrs } = node; - return `<${elem} ${formatAttributes(attrs)} />`; +function convertToJSX(node, index) { + const { elem, attrs, className } = node; + let _className, _classNameWrapped; + if (className) { + _className = `${className} `; + _classNameWrapped = `"${className}"`; + } + _className = `{rest.addElementClasses ? "${ + _className || '' + }ec-${elem}-${index}" : ${_classNameWrapped}}`; + + return `<${elem} ${formatAttributes(attrs)} className=${_className}/>`; } const attributeDenylist = ['data', 'aria']; diff --git a/packages/icon-build-helpers/src/builders/react/components/Icon.js b/packages/icon-build-helpers/src/builders/react/components/Icon.js index 11b59c6a24c0..b25ac50dafeb 100644 --- a/packages/icon-build-helpers/src/builders/react/components/Icon.js +++ b/packages/icon-build-helpers/src/builders/react/components/Icon.js @@ -35,6 +35,7 @@ const Icon = React.forwardRef(function Icon( Icon.displayName = 'Icon'; Icon.propTypes = { + addElementClasses: PropTypes.bool, 'aria-hidden': PropTypes.string, 'aria-label': PropTypes.string, 'aria-labelledby': PropTypes.string, @@ -48,6 +49,7 @@ Icon.propTypes = { xmlns: PropTypes.string, }; Icon.defaultProps = { + addElementClasses: false, xmlns: 'http://www.w3.org/2000/svg', preserveAspectRatio: 'xMidYMid meet', };