diff --git a/frontend/src/Editor/Components/ColorPicker.jsx b/frontend/src/Editor/Components/ColorPicker.jsx index ecf5ec83b6..5fbe3a6fbc 100644 --- a/frontend/src/Editor/Components/ColorPicker.jsx +++ b/frontend/src/Editor/Components/ColorPicker.jsx @@ -9,6 +9,7 @@ export const ColorPicker = function ({ darkMode, height, registerAction, + fireEvent, }) { const { visibility } = styles; const defaultColor = properties.defaultColor; @@ -46,16 +47,18 @@ export const ColorPicker = function ({ registerAction( 'setColor', - async function (color) { - if (/^#(([\dA-Fa-f]{3}){1,2}|([\dA-Fa-f]{4}){1,2})$/.test(color)) { - setExposedVariable('selectedColorHex', `${color}`); - setExposedVariable('selectedColorRGB', hexToRgb(color)); - setExposedVariable('selectedColorRGBA', hexToRgba(color)); - setColor(color); + async function (colorCode) { + if (/^#(([\dA-Fa-f]{3}){1,2}|([\dA-Fa-f]{4}){1,2})$/.test(colorCode)) { + if (colorCode !== color) { + setColor(colorCode); + setExposedVariable('selectedColorHex', `${colorCode}`); + setExposedVariable('selectedColorRGB', hexToRgb(colorCode)); + setExposedVariable('selectedColorRGBA', hexToRgba(colorCode)).then(() => fireEvent('onChange')); + } } else { setExposedVariable('selectedColorHex', 'undefined'); setExposedVariable('selectedColorRGB', 'undefined'); - setExposedVariable('selectedColorRGBA', 'undefined'); + setExposedVariable('selectedColorRGBA', 'undefined').then(() => fireEvent('onChange')); setColor('Invalid Color'); } }, @@ -64,10 +67,12 @@ export const ColorPicker = function ({ useEffect(() => { if (/^#(([\dA-Fa-f]{3}){1,2}|([\dA-Fa-f]{4}){1,2})$/.test(defaultColor)) { - setExposedVariable('selectedColorHex', `${defaultColor}`); - setExposedVariable('selectedColorRGB', hexToRgb(defaultColor)); - setExposedVariable('selectedColorRGBA', hexToRgba(defaultColor)); - setColor(defaultColor); + if (defaultColor !== color) { + setExposedVariable('selectedColorHex', `${defaultColor}`); + setExposedVariable('selectedColorRGB', hexToRgb(defaultColor)); + setExposedVariable('selectedColorRGBA', hexToRgba(defaultColor)); + setColor(defaultColor); + } } else { setExposedVariable('selectedColorHex', 'undefined'); setExposedVariable('selectedColorRGB', 'undefined'); @@ -77,13 +82,15 @@ export const ColorPicker = function ({ // eslint-disable-next-line react-hooks/exhaustive-deps }, [defaultColor]); - const handleColorChange = (color) => { - const { r, g, b, a } = color.rgb; - const { hex: hexColor } = color; - setColor(hexColor); - setExposedVariable('selectedColorHex', `${hexColor}`); - setExposedVariable('selectedColorRGB', `rgb(${r},${g},${b})`); - setExposedVariable('selectedColorRGBA', `rgb(${r},${g},${b},${a})`); + const handleColorChange = (colorCode) => { + const { r, g, b, a } = colorCode.rgb; + const { hex: hexColor } = colorCode; + if (hexColor !== color) { + setColor(hexColor); + setExposedVariable('selectedColorHex', `${hexColor}`); + setExposedVariable('selectedColorRGB', `rgb(${r},${g},${b})`); + setExposedVariable('selectedColorRGBA', `rgb(${r},${g},${b},${a})`).then(() => fireEvent('onChange')); + } }; //background color style for the div dispaying box filled by selected color const backgroundColorDivStyle = { diff --git a/frontend/src/Editor/DataSourceManager/TestConnection.jsx b/frontend/src/Editor/DataSourceManager/TestConnection.jsx index cb0ba5a9e3..811e5a394c 100644 --- a/frontend/src/Editor/DataSourceManager/TestConnection.jsx +++ b/frontend/src/Editor/DataSourceManager/TestConnection.jsx @@ -47,11 +47,15 @@ export const TestConnection = ({ kind, options, pluginId, onConnectionTestFailed return (