diff --git a/ui/components/component-library/avatar-account/avatar-account.js b/ui/components/component-library/avatar-account/avatar-account.js
index fd1fee73a..286024253 100644
--- a/ui/components/component-library/avatar-account/avatar-account.js
+++ b/ui/components/component-library/avatar-account/avatar-account.js
@@ -13,32 +13,38 @@ import {
AvatarAccountSize,
} from './avatar-account.types';
-export const AvatarAccount = ({
- size = AvatarAccountSize.Md,
- address,
- className,
- variant = AvatarAccountVariant.Jazzicon,
- ...props
-}) => (
-
- {variant === AvatarAccountVariant.Jazzicon ? (
-
- ) : (
-
- )}
-
+export const AvatarAccount = React.forwardRef(
+ (
+ {
+ size = AvatarAccountSize.Md,
+ address,
+ className,
+ variant = AvatarAccountVariant.Jazzicon,
+ ...props
+ },
+ ref,
+ ) => (
+
+ {variant === AvatarAccountVariant.Jazzicon ? (
+
+ ) : (
+
+ )}
+
+ ),
);
AvatarAccount.propTypes = {
@@ -66,3 +72,5 @@ AvatarAccount.propTypes = {
*/
...Box.propTypes,
};
+
+AvatarAccount.displayName = 'AvatarAccount';
diff --git a/ui/components/component-library/avatar-account/avatar-account.test.js b/ui/components/component-library/avatar-account/avatar-account.test.js
index 1350daa01..7d7837bdc 100644
--- a/ui/components/component-library/avatar-account/avatar-account.test.js
+++ b/ui/components/component-library/avatar-account/avatar-account.test.js
@@ -112,4 +112,15 @@ describe('AvatarAccount', () => {
'mm-avatar-base--size-xl',
);
});
+ it('should forward a ref to the root html element', () => {
+ const ref = React.createRef();
+ render(
+ ,
+ );
+ expect(ref.current).not.toBeNull();
+ expect(ref.current.nodeName).toBe('DIV');
+ });
});
diff --git a/ui/components/component-library/avatar-base/avatar-base.test.js b/ui/components/component-library/avatar-base/avatar-base.test.js
index 4d5505282..8d67d67f9 100644
--- a/ui/components/component-library/avatar-base/avatar-base.test.js
+++ b/ui/components/component-library/avatar-base/avatar-base.test.js
@@ -121,4 +121,10 @@ describe('AvatarBase', () => {
`box--border-color-${Color.errorDefault}`,
);
});
+ it('should forward a ref to the root html element', () => {
+ const ref = React.createRef();
+ render(A);
+ expect(ref.current).not.toBeNull();
+ expect(ref.current.nodeName).toBe('DIV');
+ });
});
diff --git a/ui/components/component-library/avatar-favicon/avatar-favicon.js b/ui/components/component-library/avatar-favicon/avatar-favicon.js
index ab8607fa0..6f83d8587 100644
--- a/ui/components/component-library/avatar-favicon/avatar-favicon.js
+++ b/ui/components/component-library/avatar-favicon/avatar-favicon.js
@@ -15,43 +15,48 @@ import {
import { useI18nContext } from '../../../hooks/useI18nContext';
import { AVATAR_FAVICON_SIZES } from './avatar-favicon.constants';
-export const AvatarFavicon = ({
- size = Size.MD,
- src,
- name = 'avatar-favicon',
- className,
- fallbackIconProps,
- borderColor = BorderColor.transparent,
- ...props
-}) => {
- const t = useI18nContext();
-
- return (
-
- {src ? (
-
- ) : (
-
- )}
-
- );
-};
+export const AvatarFavicon = React.forwardRef(
+ (
+ {
+ size = Size.MD,
+ src,
+ name = 'avatar-favicon',
+ className,
+ fallbackIconProps,
+ borderColor = BorderColor.transparent,
+ ...props
+ },
+ ref,
+ ) => {
+ const t = useI18nContext();
+ return (
+
+ {src ? (
+
+ ) : (
+
+ )}
+
+ );
+ },
+);
AvatarFavicon.propTypes = {
/**
@@ -87,3 +92,5 @@ AvatarFavicon.propTypes = {
*/
...Box.propTypes,
};
+
+AvatarFavicon.displayName = 'AvatarFavicon';
diff --git a/ui/components/component-library/avatar-favicon/avatar-favicon.test.js b/ui/components/component-library/avatar-favicon/avatar-favicon.test.js
index 4c882f0c1..dd71aae8f 100644
--- a/ui/components/component-library/avatar-favicon/avatar-favicon.test.js
+++ b/ui/components/component-library/avatar-favicon/avatar-favicon.test.js
@@ -105,4 +105,10 @@ describe('AvatarFavicon', () => {
);
expect(getByTestId('classname')).toHaveClass('mm-avatar-favicon--test');
});
+ it('should forward a ref to the root html element', () => {
+ const ref = React.createRef();
+ render();
+ expect(ref.current).not.toBeNull();
+ expect(ref.current.nodeName).toBe('DIV');
+ });
});
diff --git a/ui/components/component-library/avatar-icon/avatar-icon.js b/ui/components/component-library/avatar-icon/avatar-icon.js
index 53271ef5b..d3ce05f16 100644
--- a/ui/components/component-library/avatar-icon/avatar-icon.js
+++ b/ui/components/component-library/avatar-icon/avatar-icon.js
@@ -19,33 +19,39 @@ import { AvatarBase } from '../avatar-base';
import { AVATAR_ICON_SIZES } from './avatar-icon.constants';
-export const AvatarIcon = ({
- size = Size.MD,
- color = TextColor.primaryDefault,
- backgroundColor = BackgroundColor.primaryMuted,
- className,
- iconProps,
- iconName,
- ...props
-}) => (
-
- (
+
-
+ display={DISPLAY.FLEX}
+ alignItems={AlignItems.center}
+ justifyContent={JustifyContent.center}
+ color={color}
+ backgroundColor={backgroundColor}
+ borderColor={BorderColor.transparent}
+ className={classnames('mm-avatar-icon', className)}
+ {...props}
+ >
+
+
+ ),
);
AvatarIcon.propTypes = {
@@ -87,3 +93,5 @@ AvatarIcon.propTypes = {
*/
...Box.propTypes,
};
+
+AvatarIcon.displayName = 'AvatarIcon';
diff --git a/ui/components/component-library/avatar-icon/avatar-icon.test.js b/ui/components/component-library/avatar-icon/avatar-icon.test.js
index 9b065d19b..e334dd81b 100644
--- a/ui/components/component-library/avatar-icon/avatar-icon.test.js
+++ b/ui/components/component-library/avatar-icon/avatar-icon.test.js
@@ -105,4 +105,10 @@ describe('AvatarIcon', () => {
'box--background-color-success-muted',
);
});
+ it('should forward a ref to the root html element', () => {
+ const ref = React.createRef();
+ render();
+ expect(ref.current).not.toBeNull();
+ expect(ref.current.nodeName).toBe('DIV');
+ });
});
diff --git a/ui/components/component-library/avatar-network/avatar-network.test.js b/ui/components/component-library/avatar-network/avatar-network.test.js
index 8817dc53e..4693c4e59 100644
--- a/ui/components/component-library/avatar-network/avatar-network.test.js
+++ b/ui/components/component-library/avatar-network/avatar-network.test.js
@@ -123,4 +123,10 @@ describe('AvatarNetwork', () => {
`box--border-color-${BorderColor.errorDefault}`,
);
});
+ it('should forward a ref to the root html element', () => {
+ const ref = React.createRef();
+ render();
+ expect(ref.current).not.toBeNull();
+ expect(ref.current.nodeName).toBe('DIV');
+ });
});
diff --git a/ui/components/component-library/avatar-token/avatar-token.js b/ui/components/component-library/avatar-token/avatar-token.js
index cd0f47ad4..9cc951011 100644
--- a/ui/components/component-library/avatar-token/avatar-token.js
+++ b/ui/components/component-library/avatar-token/avatar-token.js
@@ -14,70 +14,76 @@ import {
} from '../../../helpers/constants/design-system';
import { AVATAR_TOKEN_SIZES } from './avatar-token.constants';
-export const AvatarToken = ({
- size = Size.MD,
- name,
- src,
- showHalo,
- color = TextColor.textDefault,
- backgroundColor = BackgroundColor.backgroundAlternative,
- borderColor = BorderColor.transparent,
- className,
- ...props
-}) => {
- const [showFallback, setShowFallback] = useState(false);
+export const AvatarToken = React.forwardRef(
+ (
+ {
+ size = Size.MD,
+ name,
+ src,
+ showHalo,
+ color = TextColor.textDefault,
+ backgroundColor = BackgroundColor.backgroundAlternative,
+ borderColor = BorderColor.transparent,
+ className,
+ ...props
+ },
+ ref,
+ ) => {
+ const [showFallback, setShowFallback] = useState(false);
- useEffect(() => {
- setShowFallback(!src);
- }, [src]);
+ useEffect(() => {
+ setShowFallback(!src);
+ }, [src]);
- const handleOnError = () => {
- setShowFallback(true);
- };
+ const handleOnError = () => {
+ setShowFallback(true);
+ };
- const fallbackString = name && name[0] ? name[0] : '?';
+ const fallbackString = name && name[0] ? name[0] : '?';
- return (
-
- {showFallback ? (
- fallbackString
- ) : (
- <>
- {showHalo && (
+ return (
+
+ {showFallback ? (
+ fallbackString
+ ) : (
+ <>
+ {showHalo && (
+
+ )}
- )}
-
- >
- )}
-
- );
-};
+ >
+ )}
+
+ );
+ },
+);
AvatarToken.propTypes = {
/**
@@ -123,3 +129,5 @@ AvatarToken.propTypes = {
*/
...Box.propTypes,
};
+
+AvatarToken.displayName = 'AvatarToken';
diff --git a/ui/components/component-library/avatar-token/avatar-token.test.js b/ui/components/component-library/avatar-token/avatar-token.test.js
index 3a711782d..9fef751ca 100644
--- a/ui/components/component-library/avatar-token/avatar-token.test.js
+++ b/ui/components/component-library/avatar-token/avatar-token.test.js
@@ -121,4 +121,10 @@ describe('AvatarToken', () => {
`box--border-color-${BorderColor.errorDefault}`,
);
});
+ it('should forward a ref to the root html element', () => {
+ const ref = React.createRef();
+ render();
+ expect(ref.current).not.toBeNull();
+ expect(ref.current.nodeName).toBe('DIV');
+ });
});