Hello All - I have a use-case to make the checkbox readonly in a dialog based on sling:resourceType using granite:RenderCondition. Can someone advise on this?
Solved! Go to Solution.
Views
Replies
Total Likes
As @Kunal_Gaba_ said granite:renderCondition is server side implementation. Only if the condition satisfies the field will be rendered on to the dialog. The name renderCondition say it all, based on condition field will be rendered. Use below listener to disable the checkbox.
(function ($, $document, Ga) {
$document.on("dialog-ready", function() {
let checkbox = $("coral-checkbox[name='./checkbox']");
if (window.location.pathname.indexOf("/content/test/") >= 0) { //your condition
checkbox[0].disabled = true;
}
});
})(jQuery, jQuery(document), Granite.author);
- AG
You can hide a check box using a render condition and not make it read only. Render conditions are evaluated server side by Granite UI framework to show or hide a UI component.
You can write a custom render condition to hide the checkbox based on the resource type. For more details see the following blog- http://www.nateyolles.com/blog/2016/07/aem-granite-custom-render-conditions
Views
Replies
Total Likes
Instead of using granite render condition you can write custom JS code to make the checkbox read only.
Example - var checkbox= $("[name='./hideInNav']").adaptTo("foundation-field"); checkbox.setDisabled(true);
Views
Replies
Total Likes
As @Kunal_Gaba_ said granite:renderCondition is server side implementation. Only if the condition satisfies the field will be rendered on to the dialog. The name renderCondition say it all, based on condition field will be rendered. Use below listener to disable the checkbox.
(function ($, $document, Ga) {
$document.on("dialog-ready", function() {
let checkbox = $("coral-checkbox[name='./checkbox']");
if (window.location.pathname.indexOf("/content/test/") >= 0) { //your condition
checkbox[0].disabled = true;
}
});
})(jQuery, jQuery(document), Granite.author);
- AG