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}}