ui.template_base.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. /**
  2. * DevExtreme (ui/widget/ui.template_base.js)
  3. * Version: 19.1.16
  4. * Build date: Tue Oct 18 2022
  5. *
  6. * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED
  7. * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
  8. */
  9. "use strict";
  10. var $ = require("../../core/renderer");
  11. var domAdapter = require("../../core/dom_adapter");
  12. var Callbacks = require("../../core/utils/callbacks");
  13. var domUtils = require("../../core/utils/dom");
  14. var Class = require("../../core/class");
  15. var abstract = Class.abstract;
  16. var renderedCallbacks = Callbacks({
  17. syncStrategy: true
  18. });
  19. var TemplateBase = Class.inherit({
  20. render: function(options) {
  21. options = options || {};
  22. var onRendered = options.onRendered;
  23. delete options.onRendered;
  24. var $result = this._renderCore(options);
  25. this._ensureResultInContainer($result, options.container);
  26. renderedCallbacks.fire($result, options.container);
  27. onRendered && onRendered();
  28. return $result
  29. },
  30. _ensureResultInContainer: function($result, container) {
  31. if (!container) {
  32. return
  33. }
  34. var $container = $(container);
  35. var resultInContainer = domUtils.contains($container.get(0), $result.get(0));
  36. $container.append($result);
  37. if (resultInContainer) {
  38. return
  39. }
  40. var resultInBody = domAdapter.getBody().contains($container.get(0));
  41. if (!resultInBody) {
  42. return
  43. }
  44. domUtils.triggerShownEvent($result)
  45. },
  46. _renderCore: abstract
  47. });
  48. module.exports = TemplateBase;
  49. module.exports.renderedCallbacks = renderedCallbacks;