From e4867a2fecfe085e592f50571f0eef1dda120347 Mon Sep 17 00:00:00 2001 From: Dmitry Kuzin <dk981234@gmail.com> Date: Thu, 20 Jun 2024 16:47:17 +0400 Subject: [PATCH] Fix afterRerender sometimes throws error --- src/base.ts | 2 +- tests/basetests.ts | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/base.ts b/src/base.ts index 5cda981c1b..061ad8ac9d 100644 --- a/src/base.ts +++ b/src/base.ts @@ -1172,7 +1172,7 @@ export class Base { return this.supportOnElementRenderedEvent && this.onElementRenderedEventEnabled ? this._onElementRerendered : undefined; } public afterRerender(): void { - this.onElementRerendered.fire(this, undefined); + this.onElementRerendered?.fire(this, undefined); } } diff --git a/tests/basetests.ts b/tests/basetests.ts index 3f867e2e30..7771926556 100644 --- a/tests/basetests.ts +++ b/tests/basetests.ts @@ -816,3 +816,18 @@ QUnit.test("check animationAllowed", function (assert) { assert.ok(question.animationAllowed); settings.animationEnabled = false; }); + +QUnit.test("check afterRerender function", (assert) => { + const survey = new SurveyModel({}); + assert.notOk(!!survey.onElementRerendered); + survey.afterRerender(); + survey.enableOnElementRenderedEvent(); + let log = ""; + survey.onElementRerendered.add(() => log += "->callback"); + survey.afterRerender(); + assert.equal(log, "->callback"); + log = ""; + survey.disableOnElementRenderedEvent(); + survey.afterRerender(); + assert.equal(log, ""); +}); \ No newline at end of file