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 && (