devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
60 lines (59 loc) • 1.92 kB
JavaScript
/**
* DevExtreme (esm/__internal/core/templates/m_template_base.js)
* Version: 24.2.6
* Build date: Mon Mar 17 2025
*
* Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
import {
triggerShownEvent
} from "../../../common/core/events/visibility_change";
import domAdapter from "../../../core/dom_adapter";
import errors from "../../../core/errors";
import $ from "../../../core/renderer";
import Callbacks from "../../../core/utils/callbacks";
import {
contains
} from "../../../core/utils/dom";
export const renderedCallbacks = Callbacks({
syncStrategy: true
});
export class TemplateBase {
render(options) {
options = options || {};
const {
onRendered: onRendered
} = options;
delete options.onRendered;
let $result;
if (options.renovated && options.transclude && this._element) {
$result = $("<div>").append(this._element).contents()
} else {
$result = this._renderCore(options)
}
this._ensureResultInContainer($result, options.container);
renderedCallbacks.fire($result, options.container);
onRendered && onRendered();
return $result
}
_ensureResultInContainer($result, container) {
if (!container) {
return
}
const $container = $(container);
const resultInContainer = contains($container.get(0), $result.get(0));
$container.append($result);
if (resultInContainer) {
return
}
const resultInBody = contains(domAdapter.getBody(), $container.get(0));
if (!resultInBody) {
return
}
triggerShownEvent($result)
}
_renderCore() {
throw errors.Error("E0001")
}
}