diff --git a/CHANGELOG.md b/CHANGELOG.md index af9f9d1c..fa812631 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ * Trigger `HePlaceholder` render when made & inserted in the DOM manually * Improve printed error messages during rendering * Actually update the `hawkejs.scene.exposed` values after receiving new data from the server +* Fix custom-element render issue with overlaying variable instances ## 2.3.15 (2023-11-27) diff --git a/lib/core/variables.js b/lib/core/variables.js index 35f6dc31..f4d40acb 100644 --- a/lib/core/variables.js +++ b/lib/core/variables.js @@ -24,7 +24,7 @@ const Variables = Fn.inherits('Hawkejs.Base', function Variables(renderer, varia * * @author Jelle De Loecker * @since 2.0.0 - * @version 2.0.0 + * @version 2.3.16 * * @param {Mixed} value * @param {Renderer} renderer @@ -33,6 +33,10 @@ const Variables = Fn.inherits('Hawkejs.Base', function Variables(renderer, varia */ Variables.setStatic(function cast(value, renderer) { + if (!renderer) { + throw new Error('Unable to cast to Variables without renderer instance'); + } + if (!value || typeof value != 'object') { return new Variables(renderer); } diff --git a/lib/element/custom_element.js b/lib/element/custom_element.js index 7ea7577d..4f1cc0b3 100644 --- a/lib/element/custom_element.js +++ b/lib/element/custom_element.js @@ -951,16 +951,17 @@ function addTemplateRenderer(element_class) { * * @author Jelle De Loecker * @since 2.0.0 - * @version 2.3.15 + * @version 2.3.16 * * @param {Boolean} re_render Is this a render done from outside a normal render? */ function renderCustomTemplate(re_render) { - var template = this.inner_template; + let template = this.inner_template, + has_prepare_logic = typeof this.prepareRenderVariables == 'function'; if (!template) { - return; + return this.prepareRenderVariables(); } let that = this, @@ -983,7 +984,7 @@ function renderCustomTemplate(re_render) { Hawkejs.series(function getRenderVariables(next) { - if (!that.prepareRenderVariables) { + if (!has_prepare_logic) { return next(); } @@ -1020,7 +1021,7 @@ function renderCustomTemplate(re_render) { } if (that[Hawkejs.VARIABLES]) { - render_vars = that[Hawkejs.VARIABLES].overlay(render_vars); + render_vars = Hawkejs.Variables.cast(that[Hawkejs.VARIABLES], renderer).overlay(render_vars); } render_vars.self = that;