Category: How do I do X?
Updated

2023-08-03

This solution is summarized from an archived support forum post. This information may have changed. If you notice an error, please let us know in Discord.

How do I Disable a “Container” widget?

Issue

I have a bunch of widgets inside a container and I want to disable them all at once based on a condition. However, the Container widget doesn't have a Disabled property. It's too painful to specify the condition at the Disabled property of each child widget. I'm looking for a better way to do this.

Resolution

The Container widget does not have a Disabled property, but it is possible to disable all child widgets inside the container by using storeValue. First, create a JSObject with a store variable that will hold the value of the condition. Next, bind this store variable to the Disabled property JS of each widget using {{appsmith.store.varName}}. The JSObject can be triggered using a button click or a change in an input widget. Based on the trigger, the JS Object will check for the condition and assign true/false to the store variable, which will automatically enable/disable the child widgets. Here is an example of how to disable all child widgets in a container based on a button click:

JSObject:{  "name": "containerDisable",  "logic": {    "value": "onClick(() => { appsmith.store.setValue(\"disableContainer\", true)})",    "dependencies": [      "disableContainer"    ]  },  "executeOnLoad": false}Button onClick JS:{{containerDisable.execute()}}Widget Disabled Property JS:{{appsmith.store.disableContainer}}