diff --git a/app/client/src/components/editorComponents/ErrorBoundry.tsx b/app/client/src/components/editorComponents/ErrorBoundry.tsx index 788b7ff2c2d0..44bf4bfb639e 100644 --- a/app/client/src/components/editorComponents/ErrorBoundry.tsx +++ b/app/client/src/components/editorComponents/ErrorBoundry.tsx @@ -8,6 +8,7 @@ import type { ReactNode, CSSProperties } from "react"; interface Props { children: ReactNode; style?: CSSProperties; + fallback?: ReactNode; } interface State { hasError: boolean; @@ -47,17 +48,17 @@ class ErrorBoundary extends React.Component { className="error-boundary" style={this.props.style} > - {this.state.hasError ? ( -

- Oops, Something went wrong. -
- this.setState({ hasError: false })}> - Click here to retry - -

- ) : ( - this.props.children - )} + {this.state.hasError + ? this.props.fallback || ( +

+ Oops, Something went wrong. +
+ this.setState({ hasError: false })}> + Click here to retry + +

+ ) + : this.props.children} ); } diff --git a/app/client/src/components/formControls/BaseControl.tsx b/app/client/src/components/formControls/BaseControl.tsx index 400dff4a6490..89dd371339b3 100644 --- a/app/client/src/components/formControls/BaseControl.tsx +++ b/app/client/src/components/formControls/BaseControl.tsx @@ -108,6 +108,7 @@ export interface ControlData { validator?: (value: string) => { isValid: boolean; message: string }; isSecretExistsPath?: string; addMoreButtonLabel?: string; + datasourceId?: string; } export type FormConfigType = Omit & { configProperty?: string; diff --git a/app/client/src/ee/components/formControls/CarbonButton/CarbonButton.tsx b/app/client/src/ee/components/formControls/CarbonButton/CarbonButton.tsx new file mode 100644 index 000000000000..e98751ee4d19 --- /dev/null +++ b/app/client/src/ee/components/formControls/CarbonButton/CarbonButton.tsx @@ -0,0 +1,7 @@ +import type { ControlProps } from "../../../../components/formControls/BaseControl"; + +export interface CarbonButtonProps extends ControlProps {} + +export const CarbonButton = () => { + return null; +}; diff --git a/app/client/src/ee/components/formControls/CarbonButton/index.ts b/app/client/src/ee/components/formControls/CarbonButton/index.ts new file mode 100644 index 000000000000..a0c07b92bb9d --- /dev/null +++ b/app/client/src/ee/components/formControls/CarbonButton/index.ts @@ -0,0 +1 @@ +export * from "./CarbonButton"; diff --git a/app/client/src/pages/Editor/FormControl.tsx b/app/client/src/pages/Editor/FormControl.tsx index 0360530c3d0d..cf6af5749559 100644 --- a/app/client/src/pages/Editor/FormControl.tsx +++ b/app/client/src/pages/Editor/FormControl.tsx @@ -178,7 +178,10 @@ function FormControl(props: FormControlProps) { const FormControlRenderMethod = (config = props.config) => { return FormControlFactory.createControl( - config, + { + ...config, + datasourceId: dsId, + }, props.formName, props?.multipleConfig, ); diff --git a/app/client/src/utils/formControl/FormControlRegistry.tsx b/app/client/src/utils/formControl/FormControlRegistry.tsx index 0779695fbdd1..3d174d27ad4e 100644 --- a/app/client/src/utils/formControl/FormControlRegistry.tsx +++ b/app/client/src/utils/formControl/FormControlRegistry.tsx @@ -37,6 +37,8 @@ import MultiFilePickerControl from "components/formControls/MultiFilePickerContr import type { MultipleFilePickerControlProps } from "components/formControls/MultiFilePickerControl"; import type { RadioButtonControlProps } from "components/formControls/RadioButtonControl"; import RadioButtonControl from "components/formControls/RadioButtonControl"; +import type { CarbonButtonProps } from "ee/components/formControls/CarbonButton"; +import { CarbonButton } from "ee/components/formControls/CarbonButton"; /** * NOTE: If you are adding a component that uses FormControl @@ -190,6 +192,11 @@ class FormControlRegistry { return ; }, }); + FormControlFactory.registerControlBuilder(formControlTypes.CARBON_BUTTON, { + buildPropertyControl(controlProps: CarbonButtonProps): JSX.Element { + return ; + }, + }); } } diff --git a/app/client/src/utils/formControl/formControlTypes.ts b/app/client/src/utils/formControl/formControlTypes.ts index 86242a50bdfa..ff068339385b 100644 --- a/app/client/src/utils/formControl/formControlTypes.ts +++ b/app/client/src/utils/formControl/formControlTypes.ts @@ -19,4 +19,5 @@ export default { FORM_TEMPLATE: "FORM_TEMPLATE", MULTIPLE_FILE_PICKER: "MULTIPLE_FILE_PICKER", RADIO_BUTTON: "RADIO_BUTTON", + CARBON_BUTTON: "CARBON_BUTTON", };