UNPKG

@libromi/app-builder-react

Version:
149 lines (115 loc) 3.73 kB
# @libromi/app-builder-react React component for embedding App Builder forms in your React applications. ## Installation ```bash npm install @libromi/app-builder-react ``` or ```bash yarn add @libromi/app-builder-react ``` ## Usage ### Basic Usage ```jsx import { AppEmbed } from '@libromi/app-builder-react'; function MyComponent() { return ( <AppEmbed appId="YOUR-APP-ID" apiKey={process.env.REACT_APP_FORM_BUILDER_API_KEY} // API key is required height="600px" width="100%" /> ); } ``` ### Advanced Usage with Callbacks ```jsx import { AppEmbed } from '@libromi/app-builder-react'; function MyComponent() { const handleSubmit = (data) => { console.log('Form submitted:', data); // Process the data }; return ( <AppEmbed appId="YOUR-APP-ID" apiKey={process.env.REACT_APP_FORM_BUILDER_API_KEY} // API key is required height="600px" width="100%" onSubmit={handleSubmit} theme="light" // or "dark" /> ); } ``` ### Passing External Data Sources You can provide external data to your app by passing the `dataSources` prop. This is useful for populating form fields with data from your application: ```jsx import { AppEmbed } from '@libromi/app-builder-react'; function MyComponent() { // Example data to pass to the form const customerData = { customers: [ { id: 1, name: "John Doe", email: "john@example.com" }, { id: 2, name: "Jane Smith", email: "jane@example.com" } ], products: [ { id: 101, name: "Product A", price: 99.99 }, { id: 102, name: "Product B", price: 149.99 } ] }; return ( <AppEmbed appId="YOUR-APP-ID" apiKey={process.env.REACT_APP_FORM_BUILDER_API_KEY} dataSources={customerData} onSubmit={(data) => console.log('Form submitted:', data)} /> ); } ``` The data you provide will be available in your app's local data sources, allowing you to map it to form fields using the data mapping feature in the app builder. ### Custom API URL If your API and embed.js script are hosted on a different domain, you can specify a custom base URL: ```jsx import { AppEmbed } from '@libromi/app-builder-react'; function MyComponent() { return ( <AppEmbed appId="YOUR-APP-ID" apiKey={process.env.REACT_APP_FORM_BUILDER_API_KEY} baseUrl="https://your-api.com" height="600px" width="100%" /> ); } ``` The component will load the embed.js script from `{baseUrl}/embed.js` and use the same baseUrl for API calls. ## Props | Prop | Type | Required | Description | |------|------|----------|-------------| | appId | string | Yes | The ID of the app to embed | | apiKey | string | Yes | Your API key for authentication | | height | string \| number | No | Height of the embedded form (default: "600px") | | width | string \| number | No | Width of the embedded form (default: "100%") | | theme | "light" \| "dark" \| string | No | Theme for the form | | onSubmit | function | No | Callback function when form is submitted | | onValidate | function | No | Callback function for custom validation | | className | string | No | Additional CSS class for the container | | style | object | No | Additional inline styles for the container | | baseUrl | string | No | Custom base URL for the API and embed.js script (default: current domain) | | dataSources | object | No | External data to pass to the form | ## Environment Variables For security, it's recommended to store your API key in an environment variable: ``` # .env file REACT_APP_FORM_BUILDER_API_KEY=your_api_key_here ``` Then access it in your code: ```jsx apiKey={process.env.REACT_APP_FORM_BUILDER_API_KEY} ``` ## License MIT