Skip to content

Commit d865d3f

Browse files
fix: fixed issue with border for image
1 parent efb6fbc commit d865d3f

File tree

1 file changed

+39
-5
lines changed
  • packages/app-page-builder-elements/src/renderers

1 file changed

+39
-5
lines changed

packages/app-page-builder-elements/src/renderers/image.tsx

+39-5
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React from "react";
1+
import React, { useEffect } from "react";
22
import styled from "@emotion/styled";
33
import { createRenderer, CreateRendererOptions } from "~/createRenderer";
44
import { useRenderer } from "~/hooks/useRenderer";
@@ -33,19 +33,53 @@ export const ImageRendererComponent: React.FC<ImageRendererComponentProps> = ({
3333
}) => {
3434
const LinkComponent = linkComponent || DefaultLinkComponent;
3535

36-
const { getElement } = useRenderer();
37-
36+
const { getElement, getElementStyles } = useRenderer();
3837
const element = getElement<ImageElementData>();
3938

4039
let content;
40+
/*
41+
Border styles are being applied to pb-image instead of img itself,
42+
so to fix that we need to remove border from pb-image and add it to the img.
43+
*/
44+
useEffect(() => {
45+
const pbImage = document.getElementById(element.id);
46+
/*
47+
Reseting border styles for <pb-image></pb-image>
48+
*/
49+
if (pbImage) {
50+
pbImage.style.border = "none";
51+
pbImage.style.borderRadius = "0";
52+
}
53+
}, []);
54+
55+
const getBorderStyles = () => {
56+
/*
57+
Copied the element styles so we won't modify original styles.
58+
*/
59+
const elementStyles = {
60+
...getElementStyles(element)
61+
} as any;
62+
/*
63+
We are looping through element styles and we are removing styles that are not related to border.
64+
*/
65+
Object.keys(elementStyles).forEach(cssContainerKey => {
66+
Object.keys(elementStyles[cssContainerKey]).forEach(styleKey => {
67+
if (!styleKey.includes("border")) {
68+
delete elementStyles[cssContainerKey][styleKey];
69+
}
70+
});
71+
});
72+
return elementStyles;
73+
};
74+
4175
if (element.data?.image?.file?.src) {
4276
// Image has its width / height set from its own settings.
4377
const PbImg = styled.img({
4478
width: element.data.image.width,
4579
height: element.data.image.height,
46-
maxWidth: "100%"
80+
maxWidth: "100%",
81+
...getBorderStyles()
4782
});
48-
4983
const { title } = element.data.image;
5084
const { src } = value || element.data?.image?.file;
5185

0 commit comments

Comments
 (0)