Skip to content

Commit c35f50d

Browse files
PR: Range Slider - Bind Sliders to Text Inputs - Text input fields and a slider scale become desynchronized (#10197)
* work for the #10188 * Fix the unit test --------- Co-authored-by: Andrew Telnov <[email protected]>
1 parent 8a80a4b commit c35f50d

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

packages/survey-core/src/question.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ export class QuestionValueGetterContext implements IValueGetterContext {
5757
constructor (protected question: Question, protected isUnwrapped?: boolean) {}
5858
getValue(path: Array<IValueGetterItem>, isRoot: boolean, index: number, createObjects: boolean): IValueGetterInfo {
5959
const expVar = settings.expressionVariables;
60-
if (path.length === 0 || (path.length === 1 && path[0].name === expVar.question)) return this.getQuestionValue();
60+
if (path.length === 0 || (path.length === 1 && path[0].name === expVar.question)) return this.getQuestionValue(index);
6161
if (path.length > 1 && path[0].name === expVar.panel) {
6262
const panel: any = this.question.parent;
6363
if (panel && panel.isPanel) {
@@ -86,9 +86,13 @@ export class QuestionValueGetterContext implements IValueGetterContext {
8686
if (survey) return (<any>survey).getValueGetterContext().getValue(path, false, index, false);
8787
return undefined;
8888
}
89-
private getQuestionValue(): IValueGetterInfo {
89+
private getQuestionValue(index: number): IValueGetterInfo {
9090
const q = this.question;
91-
return { isFound: true, context: this, value: q.getFilteredValue(this.isUnwrapped), requireStrictCompare: q.requireStrictCompare };
91+
let val = q.getFilteredValue(this.isUnwrapped);
92+
if (index > -1 && Array.isArray(val)) {
93+
val = index < val.length ? val[index] : undefined;
94+
}
95+
return { isFound: true, context: this, value: val, requireStrictCompare: q.requireStrictCompare };
9296
}
9397
}
9498
export abstract class QuestionItemValueGetterContext extends ValueGetterContextCore {

packages/survey-core/tests/question_slider_tests.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -932,4 +932,8 @@ QUnit.test("setValueExpression", (assert) => {
932932
qMax.value = 40;
933933
assert.deepEqual(slider.renderedValue, [20, 40], "set max renderedValue");
934934
assert.deepEqual(slider.value, [20, 40], "set max value");
935+
936+
slider.value = [10, 80];
937+
assert.deepEqual(qMin.value, 10, "min value from slider");
938+
assert.deepEqual(qMax.value, 80, "max value from slider");
935939
});

0 commit comments

Comments
 (0)