From edd695840759c7511b57dc4e25ae554bf1a3a434 Mon Sep 17 00:00:00 2001 From: Andrew Date: Wed, 2 Oct 2024 15:40:51 +0300 Subject: [PATCH] property isVisible doesn't work correctly if layout parameter is emtpy (#8887) --- packages/survey-core/src/jsonobject.ts | 2 +- packages/survey-core/tests/jsonobjecttests.ts | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/packages/survey-core/src/jsonobject.ts b/packages/survey-core/src/jsonobject.ts index a7ac963d57..8dcb32338c 100644 --- a/packages/survey-core/src/jsonobject.ts +++ b/packages/survey-core/src/jsonobject.ts @@ -509,7 +509,7 @@ export class JsonObjectProperty implements IObject, IJsonPropertyInfo { return this.enableIf(this.getOriginalObj(obj)); } public isVisible(layout: string, obj: any = null): boolean { - let isLayout = !this.layout || this.layout == layout; + let isLayout = !this.layout || !layout || this.layout === layout; if (!this.visible || !isLayout) return false; if (!!this.visibleIf && !!obj) { return this.visibleIf(this.getOriginalObj(obj)); diff --git a/packages/survey-core/tests/jsonobjecttests.ts b/packages/survey-core/tests/jsonobjecttests.ts index 9998f94313..ac57de2424 100644 --- a/packages/survey-core/tests/jsonobjecttests.ts +++ b/packages/survey-core/tests/jsonobjecttests.ts @@ -2145,6 +2145,21 @@ QUnit.test("property.isVisible", function (assert) { "Property is invisible in flow layout" ); }); +QUnit.test("title property.isVisible", function (assert) { + const prop = Serializer.findProperty("question", "title"); + prop.visibleIf = (obj: any): boolean => { + return obj.name != "abc"; + }; + const q = new QuestionTextModel("q1"); + assert.equal(prop.isVisible("row", q), true, "row, #1"); + assert.equal(prop.isVisible("detail", q), false, "detail #2"); + assert.equal(prop.isVisible("", q), true, "empty #1"); + q.name = "abc"; + assert.equal(prop.isVisible("row", q), false, "row, #2"); + assert.equal(prop.isVisible("detail", q), false, "detail #2"); + assert.equal(prop.isVisible("", q), false, "empty #2"); + (prop).visibleIf = undefined; +}); QUnit.test("property.baseValue", function (assert) { Serializer.addProperty("questionbase", {