Skip to content

Commit d137788

Browse files
authored
Dynamic Panel - A visibility condition works incorrectly when a question has a dot within its name fix #10505 (#10510)
1 parent 74f17a9 commit d137788

File tree

2 files changed

+41
-0
lines changed

2 files changed

+41
-0
lines changed

packages/survey-core/src/question.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ export class QuestionArrayGetterContext extends ValueGetterContextCore {
142142
constructor(private questions: Array<Question>) {
143143
super();
144144
}
145+
protected isSearchNameRevert(): boolean { return true; }
145146
protected updateValueByItem(name: string, res: IValueGetterInfo): void {
146147
const lowName = name.toLocaleLowerCase();
147148
const unWrappedNameSuffix = settings.expressionVariables.unwrapPostfix;

packages/survey-core/tests/question_paneldynamic_tests.ts

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8564,3 +8564,43 @@ QUnit.test("Panel dynamic vs multiple text in expression, Bug#10230", function (
85648564
q1.items[1].value = 2;
85658565
assert.equal(q2.value, 3, "q1.item1 = 1, q1.item2 = 2");
85668566
});
8567+
QUnit.test("Panel dynamic vs visibleIf & dots in question names, Bug#10505", function (assert) {
8568+
const survey = new SurveyModel({
8569+
"elements": [
8570+
{
8571+
"type": "paneldynamic",
8572+
"name": "panel",
8573+
"templateElements": [
8574+
{
8575+
"type": "text",
8576+
"name": "Q088"
8577+
},
8578+
{
8579+
"type": "boolean",
8580+
"name": "Q088.5"
8581+
},
8582+
{
8583+
"type": "text",
8584+
"name": "Q090",
8585+
"visibleIf": "{panel.Q088.5} = false"
8586+
}
8587+
],
8588+
"panelCount": 1
8589+
}
8590+
]
8591+
});
8592+
const dp = <QuestionPanelDynamicModel>survey.getQuestionByName("panel");
8593+
const panel = dp.panels[0];
8594+
const q088 = <QuestionMultipleTextModel>panel.getQuestionByName("Q088");
8595+
const q088_5 = <QuestionTextModel>panel.getQuestionByName("Q088.5");
8596+
const q090 = <QuestionTextModel>panel.getQuestionByName("Q090");
8597+
assert.equal(q090.isVisible, false, "q090 visible #1");
8598+
q088_5.value = false;
8599+
assert.equal(q090.isVisible, true, "q090 visible #2");
8600+
q088.value = "0123456789";
8601+
assert.equal(q090.isVisible, true, "q090 visible #3");
8602+
q088_5.value = true;
8603+
assert.equal(q090.isVisible, false, "q090 visible #4");
8604+
q088_5.value = false;
8605+
assert.equal(q090.isVisible, true, "q090 visible #5");
8606+
});

0 commit comments

Comments
 (0)