diff --git a/frontend/src/AppBuilder/AppCanvas/RenderWidget.jsx b/frontend/src/AppBuilder/AppCanvas/RenderWidget.jsx
index 0969a99358..de89652d18 100644
--- a/frontend/src/AppBuilder/AppCanvas/RenderWidget.jsx
+++ b/frontend/src/AppBuilder/AppCanvas/RenderWidget.jsx
@@ -80,7 +80,7 @@ const RenderWidget = ({
...{ validationObject: unResolvedValidation },
customResolveObjects: customResolvables,
}),
- [validateWidget, customResolvables, unResolvedValidation]
+ [validateWidget, customResolvables, unResolvedValidation, resolvedValidation]
);
const resetComponent = useCallback(() => {
diff --git a/frontend/src/Editor/Components/Checkbox.jsx b/frontend/src/Editor/Components/Checkbox.jsx
index a6676acb0a..f64986c6a4 100644
--- a/frontend/src/Editor/Components/Checkbox.jsx
+++ b/frontend/src/Editor/Components/Checkbox.jsx
@@ -253,7 +253,7 @@ export const Checkbox = ({
>
)}
- {validationError && visibility && !checked && userInteracted && (
+ {!isValid && visibility && userInteracted && (
-
- {!isValid && validationError}
-
+ {userInteracted && visibility && !isValid && (
+
+ {validationError}
+
+ )}
>
);
};
diff --git a/frontend/src/Editor/Components/DropdownV2/utils.js b/frontend/src/Editor/Components/DropdownV2/utils.js
index 080463b747..3c8edb9b9b 100644
--- a/frontend/src/Editor/Components/DropdownV2/utils.js
+++ b/frontend/src/Editor/Components/DropdownV2/utils.js
@@ -7,8 +7,16 @@ export const getInputFocusedColor = ({ accentColor }) => {
return 'var(--primary-accent-strong)';
};
-export const getInputBorderColor = ({ isValid, isFocused, fieldBorderColor, accentColor, isLoading, isDisabled }) => {
- if (!isValid) {
+export const getInputBorderColor = ({
+ isValid,
+ isFocused,
+ fieldBorderColor,
+ accentColor,
+ isLoading,
+ isDisabled,
+ userInteracted,
+}) => {
+ if (userInteracted && !isValid) {
return 'var(--status-error-strong)';
}
diff --git a/frontend/src/Editor/Components/MultiselectV2/MultiselectV2.jsx b/frontend/src/Editor/Components/MultiselectV2/MultiselectV2.jsx
index 235a94136e..6ef45e84d9 100644
--- a/frontend/src/Editor/Components/MultiselectV2/MultiselectV2.jsx
+++ b/frontend/src/Editor/Components/MultiselectV2/MultiselectV2.jsx
@@ -12,8 +12,6 @@ import Label from '@/_ui/Label';
const tinycolor = require('tinycolor2');
import { CustomDropdownIndicator, CustomClearIndicator } from '../DropdownV2/DropdownV2';
import { getInputBackgroundColor, getInputBorderColor, getInputFocusedColor } from '../DropdownV2/utils';
-import useStore from '@/AppBuilder/_stores/store';
-import { shallow } from 'zustand/shallow';
export const MultiselectV2 = ({
id,
@@ -28,7 +26,6 @@ export const MultiselectV2 = ({
validate,
validation,
componentName,
- width,
}) => {
let {
label,
@@ -76,6 +73,7 @@ export const MultiselectV2 = ({
const [isSelectAllSelected, setIsSelectAllSelected] = useState(false);
const [searchInputValue, setSearchInputValue] = useState('');
const _height = padding === 'default' ? `${height}px` : `${height + 4}px`;
+ const [userInteracted, setUserInteracted] = useState(false);
const [isMultiselectOpen, setIsMultiselectOpen] = useState(false);
useEffect(() => {
@@ -129,9 +127,7 @@ export const MultiselectV2 = ({
const onChangeHandler = (items, action) => {
setInputValue(items);
fireEvent('onSelect');
- // if (action.action === 'select-option') {
- // fireEvent('onSelect');
- // }
+ setUserInteracted(true);
};
useEffect(() => {
@@ -332,6 +328,7 @@ export const MultiselectV2 = ({
accentColor,
isLoading: isMultiSelectLoading,
isDisabled: isMultiSelectDisabled,
+ userInteracted,
}),
backgroundColor: getInputBackgroundColor({
fieldBackgroundColor,
@@ -420,7 +417,6 @@ export const MultiselectV2 = ({
}),
};
const _width = (labelWidth / 100) * 70; // Max width which label can go is 70% for better UX calculate width based on this value
-
return (
<>
-
- {!isValid && validationError}
-
+ {userInteracted && visibility && !isValid && (
+
+ {validationError}
+
+ )}
>
);
};
diff --git a/frontend/src/Editor/Components/ToggleV2.jsx b/frontend/src/Editor/Components/ToggleV2.jsx
index 9e2ddd2c0d..ea7b2170b7 100644
--- a/frontend/src/Editor/Components/ToggleV2.jsx
+++ b/frontend/src/Editor/Components/ToggleV2.jsx
@@ -12,7 +12,6 @@ const Switch = ({
borderColor,
setOn,
styles,
- setExposedVariable,
fireEvent,
setUserInteracted,
}) => {
@@ -106,7 +105,6 @@ export const ToggleSwitchV2 = ({
const isMandatory = validation?.mandatory ?? false;
const [validationStatus, setValidationStatus] = useState(validate(on));
const { isValid, validationError } = validationStatus;
- const [showValidationError, setShowValidationError] = useState(true);
const [loading, setLoading] = useState(properties?.loadingState);
const [disable, setDisable] = useState(properties.disabledState || properties.loadingState);
const [visibility, setVisibility] = useState(properties.visibility);
@@ -276,15 +274,11 @@ export const ToggleSwitchV2 = ({
onChange={toggleValue}
color={toggleSwitchColor}
alignment={alignment}
- validationError={validationError}
isValid={isValid}
- showValidationError={showValidationError}
properties={properties}
- setShowValidationError={setShowValidationError}
borderColor={borderColor}
setOn={setInputValue}
styles={styles}
- setExposedVariable={setExposedVariable}
fireEvent={fireEvent}
setUserInteracted={setUserInteracted}
/>
@@ -300,7 +294,7 @@ export const ToggleSwitchV2 = ({
}}
>
{renderInput()}
- {showValidationError && isMandatory && userInteracted && !on && visibility && (
+ {userInteracted && visibility && !isValid && (