diff --git a/api/js/etemplate/et2_core_DOMWidget.js b/api/js/etemplate/et2_core_DOMWidget.js index 140b42907b..0719ab15e5 100644 --- a/api/js/etemplate/et2_core_DOMWidget.js +++ b/api/js/etemplate/et2_core_DOMWidget.js @@ -156,6 +156,25 @@ var et2_DOMWidget = /** @class */ (function (_super) { } return false; }; + /** + * Inserts a child at the given index. + * + * @param _node is the node which should be added. It has to be an instance + * of et2_widget + * @param _idx is the position at which the element should be added. + */ + et2_DOMWidget.prototype.insertChild = function (_node, _idx) { + _super.prototype.insertChild.call(this, _node, _idx); + if (_node.instanceOf(et2_DOMWidget) && typeof _node.hasOwnProperty('parentNode') && this.getDOMNode(this)) { + try { + _node.setParentDOMNode(this.getDOMNode(_node)); + } + catch (_a) { + // Not ready to be added, usually due to construction order, + // will probably try again in doLoadingFinished() + } + } + }; et2_DOMWidget.prototype.isAttached = function () { return this.parentNode != null; }; diff --git a/api/js/etemplate/et2_core_DOMWidget.ts b/api/js/etemplate/et2_core_DOMWidget.ts index d4f7695a5c..a4adb36bf9 100644 --- a/api/js/etemplate/et2_core_DOMWidget.ts +++ b/api/js/etemplate/et2_core_DOMWidget.ts @@ -250,6 +250,31 @@ export abstract class et2_DOMWidget extends et2_widget implements et2_IDOMNode return false; } + /** + * Inserts a child at the given index. + * + * @param _node is the node which should be added. It has to be an instance + * of et2_widget + * @param _idx is the position at which the element should be added. + */ + insertChild(_node : et2_widget, _idx: number) + { + super.insertChild(_node, _idx); + + if(_node.instanceOf(et2_DOMWidget) && typeof _node.hasOwnProperty('parentNode') && this.getDOMNode(this)) + { + try + { + (_node).setParentDOMNode(this.getDOMNode(_node)); + } + catch + { + // Not ready to be added, usually due to construction order, + // will probably try again in doLoadingFinished() + } + } + } + isAttached() { return this.parentNode != null; } diff --git a/api/js/etemplate/et2_core_widget.js b/api/js/etemplate/et2_core_widget.js index 2a8aa2f37a..48846f932f 100644 --- a/api/js/etemplate/et2_core_widget.js +++ b/api/js/etemplate/et2_core_widget.js @@ -278,15 +278,6 @@ var et2_widget = /** @class */ (function (_super) { } _node._parent = this; this._children.splice(_idx, 0, _node); - /* - Comment this out (for now) - if (_node.implements(et2_IDOMNode) && this.implements(et2_IDOMNode) && typeof _node.hasOwnProperty('parentNode') ) - { - _node.detachFromDOM(); - _node.parentNode = (this).getDOMNode(_node); - _node.attachToDOM(); - } - */ } else { this.egw().debug("error", "Widget " + _node._type + " is not supported by this widget class", this); diff --git a/api/js/etemplate/et2_core_widget.ts b/api/js/etemplate/et2_core_widget.ts index 4d8e0ee077..a1efc4b19b 100644 --- a/api/js/etemplate/et2_core_widget.ts +++ b/api/js/etemplate/et2_core_widget.ts @@ -386,15 +386,6 @@ export class et2_widget extends ClassWithAttributes _node._parent = this; this._children.splice(_idx, 0, _node); -/* -Comment this out (for now) - if (_node.implements(et2_IDOMNode) && this.implements(et2_IDOMNode) && typeof _node.hasOwnProperty('parentNode') ) - { - _node.detachFromDOM(); - _node.parentNode = (this).getDOMNode(_node); - _node.attachToDOM(); - } -*/ } else { this.egw().debug("error", "Widget " + _node._type + " is not supported by this widget class", this); // throw("Widget is not supported by this widget class!");