Repository: surveyjs/survey-library (2026-04-07T09:26:29Z)

Issue:
Required validation errors appear for read-only panels
T26886 - Skip “required” validation when a question is read-only (or has a read-only parent)
https://surveyjs.answerdesk.io/internal/ticket/details/T26886
***
```
{
  "pages": [
    {
      "name": "page1",
      "elements": [
        {
          "type": "panel",
          "name": "panel1",
          "readOnly": true,
          "title": "Required Panel",
          "isRequired": true,
          "elements": [
            {
              "type": "text",
              "name": "question1"
            }
          ]
        }
      ]
    }
  ]
}
```
If a panel is read-only, it still displays required validation errors:

<img width="625" height="288" alt="Image" src="https://github.com/user-attachments/assets/7082e748-1e83-4f3e-a43c-a5608ae8ac0e" />


Discussion:

Patch:
diff --git a/packages/survey-core/src/panel.ts b/packages/survey-core/src/panel.ts
index 4a7c94c727..68218cb490 100644
--- a/packages/survey-core/src/panel.ts
+++ b/packages/survey-core/src/panel.ts
@@ -976,6 +976,7 @@ export class PanelModelBase extends SurveyElement<Question>
     }
   }
   private validateInPanels(context: ValidationContext): void {
+    if (this.isReadOnly) return;
     var errors = <Array<any>>[];
     this.validateRequired(context, errors);
     if (this.survey) {


Test patch:
diff --git a/packages/survey-core/tests/paneltests.ts b/packages/survey-core/tests/paneltests.ts
index 550dfecebc..ebde65de53 100644
--- a/packages/survey-core/tests/paneltests.ts
+++ b/packages/survey-core/tests/paneltests.ts
@@ -3840,4 +3840,14 @@ QUnit.test("Panel maxWidth should return to default when set to empty string", (
   assert.equal(panel.maxWidth, "50%", "panel maxWidth is set to 50%");
   panel.maxWidth = "";
   assert.equal(panel.maxWidth, settings.maxWidth, "panel maxWidth returns to default on empty string");
+});
+QUnit.test("Required Validation Errors should not appear for Read-only Panels Bug#11136", (assert) => {
+  const survey = new SurveyModel({
+    elements: [
+      { type: "panel", name: "panel1", isRequired: true, readOnly: true, elements: [{ type: "text", name: "q1" }] }
+    ]
+  });
+  const panel = survey.getPanelByName("panel1");
+  assert.equal(survey.validate(), true, "Survey is valid when panel is read-only and required");
+  assert.equal(panel.errors.length, 0, "There should be no errors on the panel");
 });
\ No newline at end of file