mirror of
https://github.com/ToolJet/ToolJet
synced 2026-04-23 06:27:57 +00:00
60 lines
1.9 KiB
Markdown
60 lines
1.9 KiB
Markdown
|
|
---
|
|||
|
|
id: control-components
|
|||
|
|
title: Controlling Components Using Code
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
Apart from [**events**](/docs/docs/app-builder/events/use-case/csa), Component-Specific Actions (CSAs) can also be triggered using code to modify component properties and state.
|
|||
|
|
|
|||
|
|
Let’s say you want to:
|
|||
|
|
- Reset a **Form** automatically after submission
|
|||
|
|
- Show or hide components based on a condition
|
|||
|
|
- Update a **Text Input** based on another field’s value
|
|||
|
|
- Disable a button during API calls
|
|||
|
|
- Change the active tab programmatically
|
|||
|
|
|
|||
|
|
In each of these cases, you can use CSAs with JavaScript or Python queries.
|
|||
|
|
|
|||
|
|
## How It Works
|
|||
|
|
|
|||
|
|
Each component in ToolJet comes with a set of CSAs. Below are some examples of CSAs:
|
|||
|
|
- setValue() – Sets or updates a component’s value
|
|||
|
|
- clear() – Clears the value of an input
|
|||
|
|
- setLoading() – Sets or unsets the loading state
|
|||
|
|
- setDisable() – Enables or disables a component
|
|||
|
|
- setVisibility() – Dynamically controls component visibility
|
|||
|
|
|
|||
|
|
You can trigger these actions from your JavaScript or Python queries.
|
|||
|
|
|
|||
|
|
For example, if you have a **Button** that triggers a query and want to show a loader until the data is loaded. You could use `setLoading()` to show a spinner:
|
|||
|
|
|
|||
|
|
```js
|
|||
|
|
await components.button1.setLoading(queries.getData.isLoading)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Use Cases
|
|||
|
|
|
|||
|
|
### Pre-fill a Form Field Based on User Selection
|
|||
|
|
|
|||
|
|
When a user selects a product from a **Dropdown**, automatically set the price in a **Text Input** component:
|
|||
|
|
|
|||
|
|
```js
|
|||
|
|
await components.textInput1.setValue(components.dropdown1.value)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Clear Fields After Submitting a Form:
|
|||
|
|
|
|||
|
|
After a user submits a **Form**, reset all inputs:
|
|||
|
|
|
|||
|
|
```js
|
|||
|
|
await components.formInput.resetForm()
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Close the Modal after Form Submission:
|
|||
|
|
|
|||
|
|
If you are using a **Modal** for collecting data, close it once the **Form** has been submitted successfully:
|
|||
|
|
|
|||
|
|
```js
|
|||
|
|
await components.modal1.close()
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Using CSAs in your code lets you dynamically control component behavior based on custom logic.
|