devextreme-react 23.2.6 → 24.1.2-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (311) hide show
  1. package/cjs/accordion.d.ts +35 -48
  2. package/cjs/accordion.js +63 -118
  3. package/cjs/action-sheet.d.ts +27 -43
  4. package/cjs/action-sheet.js +54 -95
  5. package/cjs/autocomplete.d.ts +62 -192
  6. package/cjs/autocomplete.js +181 -352
  7. package/cjs/bar-gauge.d.ts +80 -292
  8. package/cjs/bar-gauge.js +210 -353
  9. package/cjs/box.d.ts +25 -42
  10. package/cjs/box.js +53 -113
  11. package/cjs/bullet.d.ts +35 -80
  12. package/cjs/bullet.js +82 -148
  13. package/cjs/button-group.d.ts +17 -43
  14. package/cjs/button-group.js +54 -112
  15. package/cjs/button.d.ts +14 -19
  16. package/cjs/button.js +36 -88
  17. package/cjs/calendar.d.ts +14 -24
  18. package/cjs/calendar.js +41 -180
  19. package/cjs/chart.d.ts +297 -1146
  20. package/cjs/chart.js +707 -1059
  21. package/cjs/check-box.d.ts +14 -16
  22. package/cjs/check-box.js +34 -101
  23. package/cjs/circular-gauge.d.ts +86 -287
  24. package/cjs/circular-gauge.js +226 -332
  25. package/cjs/color-box.d.ts +59 -175
  26. package/cjs/color-box.js +165 -312
  27. package/cjs/common/charts.d.ts +2 -2
  28. package/cjs/common/charts.js +2 -2
  29. package/cjs/common/data/custom-store.d.ts +2 -2
  30. package/cjs/common/data/custom-store.js +2 -2
  31. package/cjs/common/grids.d.ts +2 -2
  32. package/cjs/common/grids.js +2 -2
  33. package/cjs/common/index.d.ts +2 -2
  34. package/cjs/common/index.js +2 -2
  35. package/cjs/context-menu.d.ts +71 -148
  36. package/cjs/context-menu.js +151 -279
  37. package/cjs/core/component-base.d.ts +18 -47
  38. package/cjs/core/component-base.js +261 -185
  39. package/cjs/core/component.d.ts +26 -13
  40. package/cjs/core/component.js +73 -58
  41. package/cjs/core/config.d.ts +2 -2
  42. package/cjs/core/config.js +2 -2
  43. package/cjs/core/configuration/comparer.d.ts +2 -2
  44. package/cjs/core/configuration/comparer.js +10 -10
  45. package/cjs/core/configuration/config-node.d.ts +2 -3
  46. package/cjs/core/configuration/config-node.js +2 -2
  47. package/cjs/core/configuration/react/element.d.ts +12 -4
  48. package/cjs/core/configuration/react/element.js +4 -5
  49. package/cjs/core/configuration/react/templates.d.ts +2 -2
  50. package/cjs/core/configuration/react/templates.js +2 -8
  51. package/cjs/core/configuration/react/tree.d.ts +2 -2
  52. package/cjs/core/configuration/react/tree.js +13 -9
  53. package/cjs/core/configuration/tree.d.ts +2 -2
  54. package/cjs/core/configuration/tree.js +5 -6
  55. package/cjs/core/configuration/utils.d.ts +2 -2
  56. package/cjs/core/configuration/utils.js +2 -2
  57. package/cjs/core/extension-component.d.ts +14 -7
  58. package/cjs/core/extension-component.js +69 -29
  59. package/cjs/core/helpers.d.ts +4 -3
  60. package/cjs/core/helpers.js +8 -9
  61. package/cjs/core/nested-option.d.ts +3 -5
  62. package/cjs/core/nested-option.js +16 -34
  63. package/cjs/core/options-manager.d.ts +3 -2
  64. package/cjs/core/options-manager.js +30 -18
  65. package/cjs/core/template-manager.d.ts +2 -2
  66. package/cjs/core/template-manager.js +20 -16
  67. package/cjs/core/template-wrapper.d.ts +2 -2
  68. package/cjs/core/template-wrapper.js +18 -14
  69. package/cjs/core/template.d.ts +3 -7
  70. package/cjs/core/template.js +4 -61
  71. package/cjs/core/types.d.ts +8 -8
  72. package/cjs/core/types.js +2 -2
  73. package/cjs/core/widget-config.d.ts +2 -2
  74. package/cjs/core/widget-config.js +23 -6
  75. package/cjs/data-grid.d.ts +317 -1057
  76. package/cjs/data-grid.js +752 -1112
  77. package/cjs/date-box.d.ts +65 -202
  78. package/cjs/date-box.js +179 -386
  79. package/cjs/date-range-box.d.ts +65 -203
  80. package/cjs/date-range-box.js +181 -373
  81. package/cjs/defer-rendering.d.ts +41 -93
  82. package/cjs/defer-rendering.js +93 -151
  83. package/cjs/diagram.d.ts +92 -307
  84. package/cjs/diagram.js +263 -408
  85. package/cjs/draggable.d.ts +17 -30
  86. package/cjs/draggable.js +45 -89
  87. package/cjs/drawer.d.ts +14 -23
  88. package/cjs/drawer.js +40 -102
  89. package/cjs/drop-down-box.d.ts +59 -175
  90. package/cjs/drop-down-box.js +169 -319
  91. package/cjs/drop-down-button.d.ts +58 -160
  92. package/cjs/drop-down-button.js +157 -256
  93. package/cjs/file-manager.d.ts +50 -128
  94. package/cjs/file-manager.js +123 -220
  95. package/cjs/file-uploader.d.ts +14 -16
  96. package/cjs/file-uploader.js +34 -127
  97. package/cjs/filter-builder.d.ts +32 -86
  98. package/cjs/filter-builder.js +86 -147
  99. package/cjs/form.d.ts +94 -347
  100. package/cjs/form.js +273 -398
  101. package/cjs/funnel.d.ts +95 -358
  102. package/cjs/funnel.js +239 -412
  103. package/cjs/gallery.d.ts +29 -44
  104. package/cjs/gallery.js +55 -107
  105. package/cjs/gantt.d.ts +89 -294
  106. package/cjs/gantt.js +252 -420
  107. package/cjs/html-editor.d.ts +50 -164
  108. package/cjs/html-editor.js +143 -262
  109. package/cjs/index.d.ts +3 -2
  110. package/cjs/index.js +5 -3
  111. package/cjs/linear-gauge.d.ts +89 -288
  112. package/cjs/linear-gauge.js +226 -335
  113. package/cjs/list.d.ts +49 -118
  114. package/cjs/list.js +115 -277
  115. package/cjs/load-indicator.d.ts +14 -12
  116. package/cjs/load-indicator.js +30 -56
  117. package/cjs/load-panel.d.ts +47 -99
  118. package/cjs/load-panel.js +111 -221
  119. package/cjs/lookup.d.ts +62 -182
  120. package/cjs/lookup.js +174 -364
  121. package/cjs/map.d.ts +32 -80
  122. package/cjs/map.js +85 -164
  123. package/cjs/menu.d.ts +69 -171
  124. package/cjs/menu.js +153 -286
  125. package/cjs/multi-view.d.ts +29 -44
  126. package/cjs/multi-view.js +55 -101
  127. package/cjs/number-box.d.ts +23 -53
  128. package/cjs/number-box.js +62 -183
  129. package/cjs/pie-chart.d.ts +119 -481
  130. package/cjs/pie-chart.js +309 -520
  131. package/cjs/pivot-grid-field-chooser.d.ts +29 -61
  132. package/cjs/pivot-grid-field-chooser.js +67 -129
  133. package/cjs/pivot-grid.d.ts +53 -137
  134. package/cjs/pivot-grid.js +125 -225
  135. package/cjs/polar-chart.d.ts +228 -882
  136. package/cjs/polar-chart.js +544 -828
  137. package/cjs/popover.d.ts +56 -142
  138. package/cjs/popover.js +150 -270
  139. package/cjs/popup.d.ts +48 -124
  140. package/cjs/popup.js +136 -261
  141. package/cjs/progress-bar.d.ts +14 -16
  142. package/cjs/progress-bar.js +34 -98
  143. package/cjs/radio-group.d.ts +17 -42
  144. package/cjs/radio-group.js +53 -132
  145. package/cjs/range-selector.d.ts +194 -671
  146. package/cjs/range-selector.js +455 -646
  147. package/cjs/range-slider.d.ts +23 -51
  148. package/cjs/range-slider.js +60 -145
  149. package/cjs/recurrence-editor.d.ts +14 -16
  150. package/cjs/recurrence-editor.js +34 -95
  151. package/cjs/resizable.d.ts +14 -17
  152. package/cjs/resizable.js +35 -75
  153. package/cjs/responsive-box.d.ts +34 -71
  154. package/cjs/responsive-box.js +78 -122
  155. package/cjs/sankey.d.ts +71 -240
  156. package/cjs/sankey.js +180 -321
  157. package/cjs/scheduler.d.ts +29 -96
  158. package/cjs/scheduler.js +127 -290
  159. package/cjs/scroll-view.d.ts +14 -12
  160. package/cjs/scroll-view.js +30 -82
  161. package/cjs/select-box.d.ts +62 -193
  162. package/cjs/select-box.js +186 -366
  163. package/cjs/slider.d.ts +23 -51
  164. package/cjs/slider.js +60 -142
  165. package/cjs/sortable.d.ts +17 -30
  166. package/cjs/sortable.js +45 -110
  167. package/cjs/sparkline.d.ts +35 -80
  168. package/cjs/sparkline.js +82 -183
  169. package/cjs/speed-dial-action.d.ts +14 -12
  170. package/cjs/speed-dial-action.js +30 -54
  171. package/cjs/splitter.d.ts +79 -0
  172. package/cjs/splitter.js +99 -0
  173. package/cjs/switch.d.ts +14 -16
  174. package/cjs/switch.js +34 -98
  175. package/cjs/tab-panel.d.ts +31 -46
  176. package/cjs/tab-panel.js +61 -140
  177. package/cjs/tabs.d.ts +33 -46
  178. package/cjs/tabs.js +57 -138
  179. package/cjs/tag-box.d.ts +62 -194
  180. package/cjs/tag-box.js +191 -390
  181. package/cjs/text-area.d.ts +14 -16
  182. package/cjs/text-area.js +34 -141
  183. package/cjs/text-box.d.ts +20 -45
  184. package/cjs/text-box.js +55 -182
  185. package/cjs/tile-view.d.ts +25 -42
  186. package/cjs/tile-view.js +53 -112
  187. package/cjs/toast.d.ts +47 -106
  188. package/cjs/toast.js +117 -223
  189. package/cjs/toolbar.d.ts +27 -44
  190. package/cjs/toolbar.js +59 -92
  191. package/cjs/tooltip.d.ts +53 -124
  192. package/cjs/tooltip.js +133 -243
  193. package/cjs/tree-list.d.ts +274 -909
  194. package/cjs/tree-list.js +644 -996
  195. package/cjs/tree-map.d.ts +77 -257
  196. package/cjs/tree-map.js +191 -326
  197. package/cjs/tree-view.d.ts +34 -81
  198. package/cjs/tree-view.js +82 -229
  199. package/cjs/validation-group.d.ts +14 -12
  200. package/cjs/validation-group.js +30 -51
  201. package/cjs/validation-summary.d.ts +25 -42
  202. package/cjs/validation-summary.js +53 -71
  203. package/cjs/validator.d.ts +48 -142
  204. package/cjs/validator.js +142 -187
  205. package/cjs/vector-map.d.ts +92 -347
  206. package/cjs/vector-map.js +244 -384
  207. package/esm/accordion.js +58 -117
  208. package/esm/action-sheet.js +49 -94
  209. package/esm/autocomplete.js +176 -351
  210. package/esm/bar-gauge.js +205 -352
  211. package/esm/box.js +48 -112
  212. package/esm/bullet.js +77 -147
  213. package/esm/button-group.js +49 -111
  214. package/esm/button.js +31 -87
  215. package/esm/calendar.js +36 -179
  216. package/esm/chart.js +702 -1058
  217. package/esm/check-box.js +29 -100
  218. package/esm/circular-gauge.js +221 -331
  219. package/esm/color-box.js +160 -311
  220. package/esm/common/charts.js +2 -2
  221. package/esm/common/data/custom-store.js +2 -2
  222. package/esm/common/grids.js +2 -2
  223. package/esm/common/index.js +2 -2
  224. package/esm/context-menu.js +146 -278
  225. package/esm/core/component-base.js +256 -184
  226. package/esm/core/component.js +69 -58
  227. package/esm/core/config.js +2 -2
  228. package/esm/core/configuration/comparer.js +2 -2
  229. package/esm/core/configuration/config-node.js +2 -2
  230. package/esm/core/configuration/react/element.js +5 -5
  231. package/esm/core/configuration/react/templates.js +2 -8
  232. package/esm/core/configuration/react/tree.js +3 -3
  233. package/esm/core/configuration/tree.js +2 -2
  234. package/esm/core/configuration/utils.js +2 -2
  235. package/esm/core/extension-component.js +45 -29
  236. package/esm/core/helpers.js +7 -8
  237. package/esm/core/nested-option.js +11 -33
  238. package/esm/core/options-manager.js +22 -10
  239. package/esm/core/template-manager.js +3 -3
  240. package/esm/core/template-wrapper.js +2 -2
  241. package/esm/core/template.js +4 -42
  242. package/esm/core/types.js +2 -2
  243. package/esm/core/widget-config.js +23 -6
  244. package/esm/data-grid.js +748 -1112
  245. package/esm/date-box.js +174 -385
  246. package/esm/date-range-box.js +176 -372
  247. package/esm/defer-rendering.js +88 -150
  248. package/esm/diagram.js +258 -407
  249. package/esm/draggable.js +40 -88
  250. package/esm/drawer.js +35 -101
  251. package/esm/drop-down-box.js +164 -318
  252. package/esm/drop-down-button.js +152 -255
  253. package/esm/file-manager.js +118 -219
  254. package/esm/file-uploader.js +29 -126
  255. package/esm/filter-builder.js +81 -146
  256. package/esm/form.js +268 -397
  257. package/esm/funnel.js +234 -411
  258. package/esm/gallery.js +50 -106
  259. package/esm/gantt.js +247 -419
  260. package/esm/html-editor.js +138 -261
  261. package/esm/index.js +3 -2
  262. package/esm/linear-gauge.js +221 -334
  263. package/esm/list.js +110 -276
  264. package/esm/load-indicator.js +25 -55
  265. package/esm/load-panel.js +106 -220
  266. package/esm/lookup.js +169 -363
  267. package/esm/map.js +80 -163
  268. package/esm/menu.js +148 -285
  269. package/esm/multi-view.js +50 -100
  270. package/esm/number-box.js +57 -182
  271. package/esm/pie-chart.js +304 -519
  272. package/esm/pivot-grid-field-chooser.js +62 -128
  273. package/esm/pivot-grid.js +120 -224
  274. package/esm/polar-chart.js +539 -827
  275. package/esm/popover.js +145 -269
  276. package/esm/popup.js +131 -260
  277. package/esm/progress-bar.js +29 -97
  278. package/esm/radio-group.js +48 -131
  279. package/esm/range-selector.js +450 -645
  280. package/esm/range-slider.js +55 -144
  281. package/esm/recurrence-editor.js +29 -94
  282. package/esm/resizable.js +30 -74
  283. package/esm/responsive-box.js +73 -121
  284. package/esm/sankey.js +175 -320
  285. package/esm/scheduler.js +122 -289
  286. package/esm/scroll-view.js +25 -81
  287. package/esm/select-box.js +181 -365
  288. package/esm/slider.js +55 -141
  289. package/esm/sortable.js +40 -109
  290. package/esm/sparkline.js +77 -182
  291. package/esm/speed-dial-action.js +25 -53
  292. package/esm/splitter.js +69 -0
  293. package/esm/switch.js +29 -97
  294. package/esm/tab-panel.js +56 -139
  295. package/esm/tabs.js +52 -137
  296. package/esm/tag-box.js +186 -389
  297. package/esm/text-area.js +29 -140
  298. package/esm/text-box.js +50 -181
  299. package/esm/tile-view.js +48 -111
  300. package/esm/toast.js +112 -222
  301. package/esm/toolbar.js +54 -91
  302. package/esm/tooltip.js +128 -242
  303. package/esm/tree-list.js +639 -995
  304. package/esm/tree-map.js +186 -325
  305. package/esm/tree-view.js +77 -228
  306. package/esm/validation-group.js +25 -50
  307. package/esm/validation-summary.js +48 -70
  308. package/esm/validator.js +137 -186
  309. package/esm/vector-map.js +239 -383
  310. package/package.json +4 -4
  311. package/splitter/package.json +6 -0
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * devextreme-react
3
- * Version: 23.2.6
4
- * Build date: Wed May 01 2024
3
+ * Version: 24.1.2-beta
4
+ * Build date: Mon May 13 2024
5
5
  *
6
6
  * Copyright (c) 2012 - 2024 Developer Express Inc. ALL RIGHTS RESERVED
7
7
  *
@@ -12,21 +12,6 @@
12
12
  */
13
13
 
14
14
  "use strict";
15
- var __extends = (this && this.__extends) || (function () {
16
- var extendStatics = function (d, b) {
17
- extendStatics = Object.setPrototypeOf ||
18
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
19
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
20
- return extendStatics(d, b);
21
- };
22
- return function (d, b) {
23
- if (typeof b !== "function" && b !== null)
24
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
25
- extendStatics(d, b);
26
- function __() { this.constructor = d; }
27
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
28
- };
29
- })();
30
15
  var __assign = (this && this.__assign) || function () {
31
16
  __assign = Object.assign || function(t) {
32
17
  for (var s, i = 1, n = arguments.length; i < n; i++) {
@@ -40,7 +25,11 @@ var __assign = (this && this.__assign) || function () {
40
25
  };
41
26
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
42
27
  if (k2 === undefined) k2 = k;
43
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
28
+ var desc = Object.getOwnPropertyDescriptor(m, k);
29
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
30
+ desc = { enumerable: true, get: function() { return m[k]; } };
31
+ }
32
+ Object.defineProperty(o, k2, desc);
44
33
  }) : (function(o, m, k, k2) {
45
34
  if (k2 === undefined) k2 = k;
46
35
  o[k2] = m[k];
@@ -73,213 +62,300 @@ var __read = (this && this.__read) || function (o, n) {
73
62
  }
74
63
  return ar;
75
64
  };
76
- var __spreadArray = (this && this.__spreadArray) || function (to, from) {
77
- for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
78
- to[j] = from[i];
79
- return to;
65
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
66
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
67
+ if (ar || !(i in from)) {
68
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
69
+ ar[i] = from[i];
70
+ }
71
+ }
72
+ return to.concat(ar || Array.prototype.slice.call(from));
80
73
  };
81
74
  Object.defineProperty(exports, "__esModule", { value: true });
82
75
  exports.DX_REMOVE_EVENT = exports.ComponentBase = void 0;
83
- var events = __importStar(require("devextreme/events"));
84
76
  var React = __importStar(require("react"));
85
- var react_dom_1 = require("react-dom");
77
+ var events = __importStar(require("devextreme/events"));
78
+ var react_1 = require("react");
86
79
  var frame_1 = require("devextreme/animation/frame");
87
80
  var common_1 = require("devextreme/core/utils/common");
88
- var template_manager_1 = require("./template-manager");
81
+ var react_dom_1 = require("react-dom");
82
+ var helpers_1 = require("./helpers");
89
83
  var options_manager_1 = require("./options-manager");
90
84
  var widget_config_1 = require("./widget-config");
91
85
  var tree_1 = require("./configuration/react/tree");
92
- var utils_1 = require("./configuration/utils");
93
- var helpers_1 = require("./helpers");
86
+ var template_manager_1 = require("./template-manager");
94
87
  var DX_REMOVE_EVENT = 'dxremove';
95
88
  exports.DX_REMOVE_EVENT = DX_REMOVE_EVENT;
96
- var ComponentBase = /** @class */ (function (_super) {
97
- __extends(ComponentBase, _super);
98
- function ComponentBase(props) {
99
- var _this = _super.call(this, props) || this;
100
- _this.isPortalComponent = false;
101
- _this._templateProps = [];
102
- _this._childNodes = [];
103
- _this.useRequestAnimationFrameFlag = false;
104
- _this.useDeferUpdateForTemplates = false;
105
- _this.guardsUpdateScheduled = false;
106
- _this._createWidget = _this._createWidget.bind(_this);
107
- _this._setTemplateManagerHooks = _this._setTemplateManagerHooks.bind(_this);
108
- _this._optionsManager = new options_manager_1.OptionsManager();
109
- return _this;
110
- }
111
- ComponentBase.displayContentsStyle = function () {
112
- return utils_1.isIE()
113
- ? {
114
- width: '100%',
115
- height: '100%',
116
- padding: 0,
117
- margin: 0,
118
- }
119
- : { display: 'contents' };
120
- };
121
- ComponentBase.prototype.componentDidMount = function () {
89
+ var ComponentBase = (0, react_1.forwardRef)(function (props, ref) {
90
+ var _a = props.templateProps, templateProps = _a === void 0 ? [] : _a, _b = props.defaults, defaults = _b === void 0 ? {} : _b, _c = props.expectedChildren, expectedChildren = _c === void 0 ? {} : _c, _d = props.isPortalComponent, isPortalComponent = _d === void 0 ? false : _d, _e = props.useRequestAnimationFrameFlag, useRequestAnimationFrameFlag = _e === void 0 ? false : _e, _f = props.subscribableOptions, subscribableOptions = _f === void 0 ? [] : _f, WidgetClass = props.WidgetClass, _g = props.independentEvents, independentEvents = _g === void 0 ? [] : _g, renderChildren = props.renderChildren, _h = props.beforeCreateWidget, beforeCreateWidget = _h === void 0 ? function () { return undefined; } : _h, _j = props.afterCreateWidget, afterCreateWidget = _j === void 0 ? function () { return undefined; } : _j;
91
+ var _k = __read((0, react_1.useState)(0), 2), setForceUpdateToken = _k[1];
92
+ var removalLocker = (0, react_1.useContext)(helpers_1.RemovalLockerContext);
93
+ var restoreParentLink = (0, react_1.useContext)(helpers_1.RestoreTreeContext);
94
+ var instance = (0, react_1.useRef)();
95
+ var element = (0, react_1.useRef)();
96
+ var portalContainer = (0, react_1.useRef)();
97
+ var useDeferUpdateForTemplates = (0, react_1.useRef)(false);
98
+ var guardsUpdateScheduled = (0, react_1.useRef)(false);
99
+ var childElementsDetached = (0, react_1.useRef)(false);
100
+ var optionsManager = (0, react_1.useRef)(new options_manager_1.OptionsManager());
101
+ var childNodes = (0, react_1.useRef)();
102
+ var createDXTemplates = (0, react_1.useRef)();
103
+ var clearInstantiationModels = (0, react_1.useRef)();
104
+ var updateTemplates = (0, react_1.useRef)();
105
+ var prevPropsRef = (0, react_1.useRef)();
106
+ var restoreTree = (0, react_1.useCallback)(function () {
122
107
  var _a;
123
108
  var _b;
124
- var style = this.props.style;
125
- if ((_b = this._childNodes) === null || _b === void 0 ? void 0 : _b.length) {
126
- (_a = this._element).append.apply(_a, __spreadArray([], __read(this._childNodes)));
127
- }
128
- else if (this._element.childNodes.length) {
129
- this._childNodes = Array.from(this._element.childNodes);
109
+ if (((_b = childNodes.current) === null || _b === void 0 ? void 0 : _b.length) && element.current) {
110
+ (_a = element.current).append.apply(_a, __spreadArray([], __read(childNodes.current), false));
111
+ childElementsDetached.current = false;
130
112
  }
131
- this._updateCssClasses(null, this.props);
132
- if (style) {
133
- this._setInlineStyles(style);
134
- }
135
- };
136
- ComponentBase.prototype.componentDidUpdate = function (prevProps) {
137
- var _a;
138
- this._updateCssClasses(prevProps, this.props);
139
- var config = this._getConfig();
140
- var templateOptions = this._optionsManager.getTemplateOptions(config);
141
- var dxTemplates = ((_a = this._createDXTemplates) === null || _a === void 0 ? void 0 : _a.call(this, templateOptions)) || {};
142
- this._optionsManager.update(config, dxTemplates);
143
- this._scheduleTemplatesUpdate();
144
- };
145
- ComponentBase.prototype.componentWillUnmount = function () {
146
- var _a;
147
- this._lockParentOnRemoved();
148
- if (this._instance) {
149
- var dxRemoveArgs = { isUnmounting: true };
150
- (_a = this._childNodes) === null || _a === void 0 ? void 0 : _a.forEach(function (child) { var _a; return (_a = child.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(child); });
151
- events.triggerHandler(this._element, DX_REMOVE_EVENT, dxRemoveArgs);
152
- this._instance.dispose();
113
+ if (restoreParentLink && element.current && !element.current.isConnected) {
114
+ restoreParentLink();
153
115
  }
154
- this._optionsManager.dispose();
155
- this._unlockParentOnRemoved();
156
- };
157
- ComponentBase.prototype._createWidget = function (element) {
116
+ }, [
117
+ childNodes.current,
118
+ element.current,
119
+ childElementsDetached.current,
120
+ restoreParentLink,
121
+ ]);
122
+ var updateCssClasses = (0, react_1.useCallback)(function (prevProps, newProps) {
158
123
  var _a, _b;
159
- element = element || this._element;
160
- var config = this._getConfig();
161
- var options = __assign({ templatesRenderAsynchronously: true }, this._optionsManager.getInitialOptions(config));
162
- var templateOptions = this._optionsManager.getTemplateOptions(config);
163
- var dxTemplates = (_a = this._createDXTemplates) === null || _a === void 0 ? void 0 : _a.call(this, templateOptions);
164
- if (dxTemplates && Object.keys(dxTemplates).length) {
165
- options = __assign(__assign({}, options), { integrationOptions: {
166
- templates: dxTemplates,
167
- } });
124
+ var _c, _d;
125
+ var prevClassName = prevProps ? (0, widget_config_1.getClassName)(prevProps) : undefined;
126
+ var newClassName = (0, widget_config_1.getClassName)(newProps);
127
+ if (prevClassName === newClassName) {
128
+ return;
168
129
  }
169
- (_b = this._clearInstantiationModels) === null || _b === void 0 ? void 0 : _b.call(this);
170
- this._instance = new this._WidgetClass(element, options);
171
- if (!this.useRequestAnimationFrameFlag) {
172
- this.useDeferUpdateForTemplates = this._instance.option('integrationOptions.useDeferUpdateForTemplates');
130
+ if (prevClassName) {
131
+ var classNames = prevClassName.split(' ').filter(function (c) { return c; });
132
+ if (classNames.length) {
133
+ (_c = element.current) === null || _c === void 0 ? void 0 : (_a = _c.classList).remove.apply(_a, __spreadArray([], __read(classNames), false));
134
+ }
173
135
  }
174
- this._optionsManager.setInstance(this._instance, config, this.subscribableOptions, this.independentEvents);
175
- this._instance.on('optionChanged', this._optionsManager.onOptionChanged);
176
- };
177
- ComponentBase.prototype._scheduleTemplatesUpdate = function () {
178
- var _this = this;
179
- if (this.guardsUpdateScheduled) {
180
- return;
136
+ if (newClassName) {
137
+ var classNames = newClassName.split(' ').filter(function (c) { return c; });
138
+ if (classNames.length) {
139
+ (_d = element.current) === null || _d === void 0 ? void 0 : (_b = _d.classList).add.apply(_b, __spreadArray([], __read(classNames), false));
140
+ }
181
141
  }
182
- this.guardsUpdateScheduled = true;
183
- var updateFunc = this.useDeferUpdateForTemplates ? common_1.deferUpdate : frame_1.requestAnimationFrame;
184
- updateFunc(function () {
185
- var _a;
186
- _this.guardsUpdateScheduled = false;
187
- (_a = _this._updateTemplates) === null || _a === void 0 ? void 0 : _a.call(_this, function () { return options_manager_1.scheduleGuards(); });
188
- });
189
- options_manager_1.unscheduleGuards();
190
- };
191
- ComponentBase.prototype._getConfig = function () {
192
- return tree_1.buildConfigTree({
193
- templates: this._templateProps,
194
- initialValuesProps: this._defaults,
195
- predefinedValuesProps: {},
196
- expectedChildren: this._expectedChildren,
197
- }, this.props);
198
- };
199
- ComponentBase.prototype._getElementProps = function () {
200
- var _this = this;
142
+ }, [element.current]);
143
+ var setInlineStyles = (0, react_1.useCallback)(function (styles) {
144
+ if (element.current) {
145
+ var el_1 = element.current;
146
+ Object.entries(styles).forEach(function (_a) {
147
+ var _b = __read(_a, 2), name = _b[0], value = _b[1];
148
+ el_1.style[name] = value;
149
+ });
150
+ }
151
+ }, [element.current]);
152
+ var getConfig = (0, react_1.useCallback)(function () { return (0, tree_1.buildConfigTree)({
153
+ templates: templateProps,
154
+ initialValuesProps: defaults,
155
+ predefinedValuesProps: {},
156
+ expectedChildren: expectedChildren,
157
+ }, props); }, [
158
+ templateProps,
159
+ defaults,
160
+ expectedChildren,
161
+ props,
162
+ ]);
163
+ var setTemplateManagerHooks = (0, react_1.useCallback)(function (_a) {
164
+ var createDXTemplatesFn = _a.createDXTemplates, clearInstantiationModelsFn = _a.clearInstantiationModels, updateTemplatesFn = _a.updateTemplates;
165
+ createDXTemplates.current = createDXTemplatesFn;
166
+ clearInstantiationModels.current = clearInstantiationModelsFn;
167
+ updateTemplates.current = updateTemplatesFn;
168
+ }, [
169
+ createDXTemplates.current,
170
+ clearInstantiationModels.current,
171
+ updateTemplates.current,
172
+ ]);
173
+ var getElementProps = (0, react_1.useCallback)(function () {
201
174
  var elementProps = {
202
- ref: function (element) { _this._element = element; },
175
+ ref: function (el) {
176
+ if (el) {
177
+ element.current = el;
178
+ }
179
+ },
203
180
  };
204
181
  widget_config_1.elementPropNames.forEach(function (name) {
205
- var props = _this.props;
206
182
  if (name in props) {
207
183
  elementProps[name] = props[name];
208
184
  }
209
185
  });
210
186
  return elementProps;
211
- };
212
- ComponentBase.prototype._setInlineStyles = function (styles) {
213
- var _this = this;
214
- Object.entries(styles).forEach(function (_a) {
215
- var _b = __read(_a, 2), name = _b[0], value = _b[1];
216
- _this._element.style[name] = value;
187
+ }, [element.current]);
188
+ var scheduleTemplatesUpdate = (0, react_1.useCallback)(function () {
189
+ if (guardsUpdateScheduled.current) {
190
+ return;
191
+ }
192
+ guardsUpdateScheduled.current = true;
193
+ var updateFunc = useDeferUpdateForTemplates.current ? common_1.deferUpdate : frame_1.requestAnimationFrame;
194
+ updateFunc(function () {
195
+ var _a;
196
+ guardsUpdateScheduled.current = false;
197
+ (_a = updateTemplates.current) === null || _a === void 0 ? void 0 : _a.call(updateTemplates, function () { return (0, options_manager_1.scheduleGuards)(); });
217
198
  });
218
- };
219
- ComponentBase.prototype._updateCssClasses = function (prevProps, newProps) {
199
+ (0, options_manager_1.unscheduleGuards)();
200
+ }, [
201
+ guardsUpdateScheduled.current,
202
+ useDeferUpdateForTemplates.current,
203
+ updateTemplates.current,
204
+ ]);
205
+ var createWidget = (0, react_1.useCallback)(function (el) {
220
206
  var _a, _b;
221
- var prevClassName = prevProps ? widget_config_1.getClassName(prevProps) : undefined;
222
- var newClassName = widget_config_1.getClassName(newProps);
223
- if (prevClassName === newClassName) {
207
+ beforeCreateWidget();
208
+ el = el || element.current;
209
+ var config = getConfig();
210
+ var options = __assign({ templatesRenderAsynchronously: true }, optionsManager.current.getInitialOptions(config));
211
+ var templateOptions = optionsManager.current.getTemplateOptions(config);
212
+ var dxTemplates = (_a = createDXTemplates.current) === null || _a === void 0 ? void 0 : _a.call(createDXTemplates, templateOptions);
213
+ if (dxTemplates && Object.keys(dxTemplates).length) {
214
+ options = __assign(__assign({}, options), { integrationOptions: {
215
+ templates: dxTemplates,
216
+ } });
217
+ }
218
+ (_b = clearInstantiationModels.current) === null || _b === void 0 ? void 0 : _b.call(clearInstantiationModels);
219
+ instance.current = new WidgetClass(el, options);
220
+ if (!useRequestAnimationFrameFlag) {
221
+ useDeferUpdateForTemplates.current = instance.current.option('integrationOptions.useDeferUpdateForTemplates');
222
+ }
223
+ optionsManager.current.setInstance(instance.current, config, subscribableOptions, independentEvents);
224
+ instance.current.on('optionChanged', optionsManager.current.onOptionChanged);
225
+ afterCreateWidget();
226
+ }, [
227
+ beforeCreateWidget,
228
+ afterCreateWidget,
229
+ element.current,
230
+ optionsManager.current,
231
+ createDXTemplates.current,
232
+ clearInstantiationModels.current,
233
+ WidgetClass,
234
+ useRequestAnimationFrameFlag,
235
+ useDeferUpdateForTemplates.current,
236
+ instance.current,
237
+ subscribableOptions,
238
+ independentEvents,
239
+ getConfig,
240
+ ]);
241
+ var onComponentUpdated = (0, react_1.useCallback)(function () {
242
+ var _a, _b;
243
+ if (!((_a = optionsManager.current) === null || _a === void 0 ? void 0 : _a.isInstanceSet)) {
224
244
  return;
225
245
  }
226
- if (prevClassName) {
227
- var classNames = prevClassName.split(' ').filter(function (c) { return c; });
228
- if (classNames.length) {
229
- (_a = this._element.classList).remove.apply(_a, __spreadArray([], __read(classNames)));
230
- }
246
+ updateCssClasses(prevPropsRef.current, props);
247
+ var config = getConfig();
248
+ var templateOptions = optionsManager.current.getTemplateOptions(config);
249
+ var dxTemplates = ((_b = createDXTemplates.current) === null || _b === void 0 ? void 0 : _b.call(createDXTemplates, templateOptions)) || {};
250
+ optionsManager.current.update(config, dxTemplates);
251
+ scheduleTemplatesUpdate();
252
+ prevPropsRef.current = props;
253
+ }, [
254
+ optionsManager.current,
255
+ prevPropsRef.current,
256
+ createDXTemplates.current,
257
+ scheduleTemplatesUpdate,
258
+ updateCssClasses,
259
+ getConfig,
260
+ props,
261
+ ]);
262
+ var onComponentMounted = (0, react_1.useCallback)(function () {
263
+ var _a, _b;
264
+ var style = props.style;
265
+ if (childElementsDetached.current) {
266
+ restoreTree();
231
267
  }
232
- if (newClassName) {
233
- var classNames = newClassName.split(' ').filter(function (c) { return c; });
234
- if (classNames.length) {
235
- (_b = this._element.classList).add.apply(_b, __spreadArray([], __read(classNames)));
236
- }
268
+ else if ((_a = element.current) === null || _a === void 0 ? void 0 : _a.childNodes.length) {
269
+ childNodes.current = Array.from((_b = element.current) === null || _b === void 0 ? void 0 : _b.childNodes);
237
270
  }
238
- };
239
- ComponentBase.prototype._lockParentOnRemoved = function () {
240
- var _a;
241
- (_a = this.context) === null || _a === void 0 ? void 0 : _a.lock();
242
- };
243
- ComponentBase.prototype._unlockParentOnRemoved = function () {
271
+ updateCssClasses(undefined, props);
272
+ if (style) {
273
+ setInlineStyles(style);
274
+ }
275
+ prevPropsRef.current = props;
276
+ }, [
277
+ childNodes.current,
278
+ element.current,
279
+ childElementsDetached.current,
280
+ updateCssClasses,
281
+ setInlineStyles,
282
+ props,
283
+ ]);
284
+ var onComponentUnmounted = (0, react_1.useCallback)(function () {
244
285
  var _a;
245
- (_a = this.context) === null || _a === void 0 ? void 0 : _a.unlock();
246
- };
247
- ComponentBase.prototype._setTemplateManagerHooks = function (_a) {
248
- var createDXTemplates = _a.createDXTemplates, clearInstantiationModels = _a.clearInstantiationModels, updateTemplates = _a.updateTemplates;
249
- this._createDXTemplates = createDXTemplates;
250
- this._clearInstantiationModels = clearInstantiationModels;
251
- this._updateTemplates = updateTemplates;
252
- };
253
- ComponentBase.prototype.renderChildren = function () {
286
+ removalLocker === null || removalLocker === void 0 ? void 0 : removalLocker.lock();
287
+ if (instance.current) {
288
+ var dxRemoveArgs = { isUnmounting: true };
289
+ (_a = childNodes.current) === null || _a === void 0 ? void 0 : _a.forEach(function (child) { var _a; return (_a = child.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(child); });
290
+ childElementsDetached.current = true;
291
+ if (element.current) {
292
+ events.triggerHandler(element.current, DX_REMOVE_EVENT, dxRemoveArgs);
293
+ }
294
+ instance.current.dispose();
295
+ }
296
+ optionsManager.current.dispose();
297
+ removalLocker === null || removalLocker === void 0 ? void 0 : removalLocker.unlock();
298
+ }, [
299
+ removalLocker,
300
+ instance.current,
301
+ childNodes.current,
302
+ element.current,
303
+ optionsManager.current,
304
+ childElementsDetached.current,
305
+ ]);
306
+ (0, react_1.useLayoutEffect)(function () {
307
+ onComponentMounted();
308
+ return function () {
309
+ onComponentUnmounted();
310
+ };
311
+ }, []);
312
+ (0, react_1.useLayoutEffect)(function () {
313
+ onComponentUpdated();
314
+ });
315
+ (0, react_1.useImperativeHandle)(ref, function () { return ({
316
+ getInstance: function () {
317
+ return instance.current;
318
+ },
319
+ getElement: function () {
320
+ return element.current;
321
+ },
322
+ createWidget: function (el) {
323
+ createWidget(el);
324
+ },
325
+ }); }, [instance.current, element.current, createWidget]);
326
+ var _renderChildren = (0, react_1.useCallback)(function () {
327
+ if (renderChildren) {
328
+ return renderChildren();
329
+ }
254
330
  // @ts-expect-error TS2339
255
- var children = this.props.children;
331
+ var children = props.children;
256
332
  return children;
257
- };
258
- ComponentBase.prototype.renderContent = function () {
259
- var _this = this;
333
+ }, [props, renderChildren]);
334
+ var renderPortal = (0, react_1.useCallback)(function () { return portalContainer.current && (0, react_dom_1.createPortal)(_renderChildren(), portalContainer.current); }, [portalContainer.current, _renderChildren]);
335
+ var renderContent = (0, react_1.useCallback)(function () {
260
336
  // @ts-expect-error TS2339
261
- var children = this.props.children;
262
- return this.isPortalComponent && children
337
+ var children = props.children;
338
+ return isPortalComponent && children
263
339
  ? React.createElement('div', {
264
340
  ref: function (node) {
265
- if (node && _this.portalContainer !== node) {
266
- _this.portalContainer = node;
267
- _this.forceUpdate();
341
+ if (node && portalContainer.current !== node) {
342
+ portalContainer.current = node;
343
+ setForceUpdateToken(Math.random());
268
344
  }
269
345
  },
270
- style: ComponentBase.displayContentsStyle(),
346
+ style: { display: 'contents' },
271
347
  })
272
- : this.renderChildren();
273
- };
274
- ComponentBase.prototype.renderPortal = function () {
275
- return this.portalContainer && react_dom_1.createPortal(this.renderChildren(), this.portalContainer);
276
- };
277
- ComponentBase.prototype.render = function () {
278
- return React.createElement(React.Fragment, {}, React.createElement('div', this._getElementProps(), this.renderContent(), React.createElement(template_manager_1.TemplateManager, {
279
- init: this._setTemplateManagerHooks,
280
- })), this.isPortalComponent && this.renderPortal());
281
- };
282
- ComponentBase.contextType = helpers_1.RemovalLockerContext;
283
- return ComponentBase;
284
- }(React.PureComponent));
348
+ : _renderChildren();
349
+ }, [
350
+ props,
351
+ isPortalComponent,
352
+ portalContainer.current,
353
+ _renderChildren,
354
+ ]);
355
+ return React.createElement(helpers_1.RestoreTreeContext.Provider, {
356
+ value: restoreTree,
357
+ }, React.createElement('div', getElementProps(), renderContent(), React.createElement(template_manager_1.TemplateManager, {
358
+ init: setTemplateManagerHooks,
359
+ })), isPortalComponent && renderPortal());
360
+ });
285
361
  exports.ComponentBase = ComponentBase;
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * devextreme-react
3
- * Version: 23.2.6
4
- * Build date: Wed May 01 2024
3
+ * Version: 24.1.2-beta
4
+ * Build date: Mon May 13 2024
5
5
  *
6
6
  * Copyright (c) 2012 - 2024 Developer Express Inc. ALL RIGHTS RESERVED
7
7
  *
@@ -11,15 +11,28 @@
11
11
  * https://github.com/DevExpress/devextreme-react
12
12
  */
13
13
 
14
- import { ComponentBase, IHtmlOptions } from './component-base';
15
- declare class Component<P extends IHtmlOptions> extends ComponentBase<P> {
16
- private _extensionCreators;
17
- constructor(props: P);
18
- componentDidMount(): void;
19
- componentWillUnmount(): void;
20
- clearExtensions(): void;
21
- protected renderChildren(): Record<string, unknown>[] | null | undefined;
22
- private _registerExtension;
23
- private _createExtensions;
14
+ import * as React from 'react';
15
+ import { ReactElement } from 'react';
16
+ import { IHtmlOptions, ComponentBaseRef } from './component-base';
17
+ import { IElementDescriptor, IExpectedChild } from './configuration/react/element';
18
+ import { ITemplateMeta } from './template';
19
+ interface ComponentProps {
20
+ WidgetClass?: any;
21
+ isPortalComponent?: boolean;
22
+ defaults?: Record<string, string>;
23
+ templateProps?: ITemplateMeta[];
24
+ expectedChildren?: Record<string, IExpectedChild>;
25
+ subscribableOptions?: string[];
26
+ independentEvents?: string[];
27
+ useRequestAnimationFrameFlag?: boolean;
28
+ clearExtensions?: () => void;
29
+ beforeCreateWidget?: (element?: Element) => void;
30
+ afterCreateWidget?: (element?: Element) => void;
24
31
  }
25
- export { Component, IHtmlOptions, };
32
+ type ComponentRef = ComponentBaseRef & {
33
+ clearExtensions: () => void;
34
+ };
35
+ declare const Component: <P extends IHtmlOptions>(props: P & ComponentProps & {
36
+ ref?: React.Ref<ComponentRef> | undefined;
37
+ }) => ReactElement | null;
38
+ export { Component, ComponentProps, IHtmlOptions, IElementDescriptor, ComponentRef, };