@bryntum/core-react-thin 7.1.2 → 7.2.0

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 (168) hide show
  1. package/README.md +12 -6
  2. package/lib/BryntumButton.d.ts +2 -2
  3. package/lib/BryntumButton.js.map +1 -1
  4. package/lib/BryntumButtonGroup.d.ts +1 -0
  5. package/lib/BryntumButtonGroup.js +1 -0
  6. package/lib/BryntumButtonGroup.js.map +1 -1
  7. package/lib/BryntumChatPanel.d.ts +3 -2
  8. package/lib/BryntumChatPanel.js +1 -0
  9. package/lib/BryntumChatPanel.js.map +1 -1
  10. package/lib/BryntumCheckboxGroup.d.ts +3 -2
  11. package/lib/BryntumCheckboxGroup.js +1 -0
  12. package/lib/BryntumCheckboxGroup.js.map +1 -1
  13. package/lib/BryntumChipView.d.ts +2 -2
  14. package/lib/BryntumChipView.js +2 -2
  15. package/lib/BryntumChipView.js.map +1 -1
  16. package/lib/BryntumCodeEditor.d.ts +3 -2
  17. package/lib/BryntumCodeEditor.js +1 -0
  18. package/lib/BryntumCodeEditor.js.map +1 -1
  19. package/lib/BryntumCombo.d.ts +2 -2
  20. package/lib/BryntumCombo.js.map +1 -1
  21. package/lib/BryntumContainer.d.ts +3 -2
  22. package/lib/BryntumContainer.js +1 -0
  23. package/lib/BryntumContainer.js.map +1 -1
  24. package/lib/BryntumDateField.d.ts +3 -2
  25. package/lib/BryntumDateField.js +1 -0
  26. package/lib/BryntumDateField.js.map +1 -1
  27. package/lib/BryntumDatePicker.d.ts +3 -2
  28. package/lib/BryntumDatePicker.js +2 -1
  29. package/lib/BryntumDatePicker.js.map +1 -1
  30. package/lib/BryntumDateRangeField.d.ts +2 -2
  31. package/lib/BryntumDateRangeField.js.map +1 -1
  32. package/lib/BryntumDateTimeField.d.ts +2 -2
  33. package/lib/BryntumDateTimeField.js.map +1 -1
  34. package/lib/BryntumDemoCodeEditor.d.ts +3 -2
  35. package/lib/BryntumDemoCodeEditor.js +1 -0
  36. package/lib/BryntumDemoCodeEditor.js.map +1 -1
  37. package/lib/BryntumDisplayField.d.ts +2 -2
  38. package/lib/BryntumDisplayField.js.map +1 -1
  39. package/lib/BryntumDurationField.d.ts +2 -2
  40. package/lib/BryntumDurationField.js.map +1 -1
  41. package/lib/BryntumEditor.d.ts +3 -2
  42. package/lib/BryntumEditor.js +1 -0
  43. package/lib/BryntumEditor.js.map +1 -1
  44. package/lib/BryntumFieldFilterPicker.d.ts +3 -2
  45. package/lib/BryntumFieldFilterPicker.js +1 -0
  46. package/lib/BryntumFieldFilterPicker.js.map +1 -1
  47. package/lib/BryntumFieldFilterPickerGroup.d.ts +3 -2
  48. package/lib/BryntumFieldFilterPickerGroup.js +1 -0
  49. package/lib/BryntumFieldFilterPickerGroup.js.map +1 -1
  50. package/lib/BryntumFieldSet.d.ts +3 -2
  51. package/lib/BryntumFieldSet.js +1 -0
  52. package/lib/BryntumFieldSet.js.map +1 -1
  53. package/lib/BryntumFileField.d.ts +2 -2
  54. package/lib/BryntumFileField.js.map +1 -1
  55. package/lib/BryntumFilePicker.d.ts +3 -2
  56. package/lib/BryntumFilePicker.js +1 -0
  57. package/lib/BryntumFilePicker.js.map +1 -1
  58. package/lib/BryntumFilterField.d.ts +2 -2
  59. package/lib/BryntumFilterField.js.map +1 -1
  60. package/lib/BryntumHint.d.ts +3 -2
  61. package/lib/BryntumHint.js +1 -0
  62. package/lib/BryntumHint.js.map +1 -1
  63. package/lib/BryntumLabel.d.ts +2 -2
  64. package/lib/BryntumLabel.js.map +1 -1
  65. package/lib/BryntumList.d.ts +2 -2
  66. package/lib/BryntumList.js +2 -2
  67. package/lib/BryntumList.js.map +1 -1
  68. package/lib/BryntumMenu.d.ts +3 -2
  69. package/lib/BryntumMenu.js +1 -0
  70. package/lib/BryntumMenu.js.map +1 -1
  71. package/lib/BryntumMonthPicker.d.ts +3 -2
  72. package/lib/BryntumMonthPicker.js +1 -0
  73. package/lib/BryntumMonthPicker.js.map +1 -1
  74. package/lib/BryntumNumberField.d.ts +2 -2
  75. package/lib/BryntumNumberField.js.map +1 -1
  76. package/lib/BryntumPagingToolbar.d.ts +3 -2
  77. package/lib/BryntumPagingToolbar.js +1 -0
  78. package/lib/BryntumPagingToolbar.js.map +1 -1
  79. package/lib/BryntumPanel.d.ts +3 -2
  80. package/lib/BryntumPanel.js +1 -0
  81. package/lib/BryntumPanel.js.map +1 -1
  82. package/lib/BryntumPasswordField.d.ts +2 -2
  83. package/lib/BryntumPasswordField.js.map +1 -1
  84. package/lib/BryntumProgressBar.d.ts +165 -0
  85. package/lib/BryntumProgressBar.js +130 -0
  86. package/lib/BryntumProgressBar.js.map +1 -0
  87. package/lib/BryntumRadioGroup.d.ts +3 -2
  88. package/lib/BryntumRadioGroup.js +1 -0
  89. package/lib/BryntumRadioGroup.js.map +1 -1
  90. package/lib/BryntumSlider.d.ts +2 -2
  91. package/lib/BryntumSlider.js.map +1 -1
  92. package/lib/BryntumSplitter.d.ts +2 -2
  93. package/lib/BryntumSplitter.js.map +1 -1
  94. package/lib/BryntumTabPanel.d.ts +3 -2
  95. package/lib/BryntumTabPanel.js +1 -0
  96. package/lib/BryntumTabPanel.js.map +1 -1
  97. package/lib/BryntumTextAreaField.d.ts +2 -2
  98. package/lib/BryntumTextAreaField.js.map +1 -1
  99. package/lib/BryntumTextAreaPickerField.d.ts +2 -2
  100. package/lib/BryntumTextAreaPickerField.js.map +1 -1
  101. package/lib/BryntumTextField.d.ts +2 -2
  102. package/lib/BryntumTextField.js.map +1 -1
  103. package/lib/BryntumTimeField.d.ts +3 -2
  104. package/lib/BryntumTimeField.js +1 -0
  105. package/lib/BryntumTimeField.js.map +1 -1
  106. package/lib/BryntumTimePicker.d.ts +3 -2
  107. package/lib/BryntumTimePicker.js +1 -0
  108. package/lib/BryntumTimePicker.js.map +1 -1
  109. package/lib/BryntumToolbar.d.ts +3 -2
  110. package/lib/BryntumToolbar.js +1 -0
  111. package/lib/BryntumToolbar.js.map +1 -1
  112. package/lib/BryntumWidget.d.ts +2 -2
  113. package/lib/BryntumWidget.js.map +1 -1
  114. package/lib/BryntumYearPicker.d.ts +3 -2
  115. package/lib/BryntumYearPicker.js +1 -0
  116. package/lib/BryntumYearPicker.js.map +1 -1
  117. package/lib/WrapperHelper.js +46 -1
  118. package/lib/WrapperHelper.js.map +1 -1
  119. package/lib/index.d.ts +1 -0
  120. package/lib/index.js +1 -0
  121. package/lib/index.js.map +1 -1
  122. package/package.json +1 -1
  123. package/src/BryntumButton.tsx +2 -2
  124. package/src/BryntumButtonGroup.tsx +5 -0
  125. package/src/BryntumChatPanel.tsx +7 -2
  126. package/src/BryntumCheckboxGroup.tsx +7 -2
  127. package/src/BryntumChipView.tsx +4 -4
  128. package/src/BryntumCodeEditor.tsx +7 -2
  129. package/src/BryntumCombo.tsx +2 -2
  130. package/src/BryntumContainer.tsx +7 -2
  131. package/src/BryntumDateField.tsx +13 -3
  132. package/src/BryntumDatePicker.tsx +8 -3
  133. package/src/BryntumDateRangeField.tsx +2 -2
  134. package/src/BryntumDateTimeField.tsx +2 -2
  135. package/src/BryntumDemoCodeEditor.tsx +7 -2
  136. package/src/BryntumDisplayField.tsx +2 -2
  137. package/src/BryntumDurationField.tsx +2 -2
  138. package/src/BryntumEditor.tsx +7 -2
  139. package/src/BryntumFieldFilterPicker.tsx +7 -2
  140. package/src/BryntumFieldFilterPickerGroup.tsx +7 -2
  141. package/src/BryntumFieldSet.tsx +7 -2
  142. package/src/BryntumFileField.tsx +2 -2
  143. package/src/BryntumFilePicker.tsx +7 -2
  144. package/src/BryntumFilterField.tsx +2 -2
  145. package/src/BryntumHint.tsx +7 -2
  146. package/src/BryntumLabel.tsx +2 -2
  147. package/src/BryntumList.tsx +4 -4
  148. package/src/BryntumMenu.tsx +7 -2
  149. package/src/BryntumMonthPicker.tsx +7 -2
  150. package/src/BryntumNumberField.tsx +2 -2
  151. package/src/BryntumPagingToolbar.tsx +7 -2
  152. package/src/BryntumPanel.tsx +7 -2
  153. package/src/BryntumPasswordField.tsx +2 -2
  154. package/src/BryntumProgressBar.tsx +742 -0
  155. package/src/BryntumRadioGroup.tsx +7 -2
  156. package/src/BryntumSlider.tsx +2 -2
  157. package/src/BryntumSplitter.tsx +2 -2
  158. package/src/BryntumTabPanel.tsx +7 -2
  159. package/src/BryntumTextAreaField.tsx +2 -2
  160. package/src/BryntumTextAreaPickerField.tsx +2 -2
  161. package/src/BryntumTextField.tsx +2 -2
  162. package/src/BryntumTimeField.tsx +11 -2
  163. package/src/BryntumTimePicker.tsx +7 -2
  164. package/src/BryntumToolbar.tsx +7 -2
  165. package/src/BryntumWidget.tsx +2 -2
  166. package/src/BryntumYearPicker.tsx +7 -2
  167. package/src/WrapperHelper.tsx +162 -35
  168. package/src/index.ts +1 -0
@@ -3,7 +3,7 @@
3
3
  */
4
4
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5
5
  import React, { RefObject } from 'react';
6
- import { AlignSpec, Base, Container, CoreContainerItemConfig, CoreContainerLayoutConfig, DomConfig, KeyMapConfig, Layout, MaskConfig, MenuItemConfig, MenuItemEntry, Model, PagingToolbarConfig, Panel, PanelCollapserConfig, PanelCollapserOverlayConfig, PanelHeader, RadioConfig, RadioGroup, RadioGroupListeners, Rectangle, Scroller, ScrollerConfig, StateProvider, TabConfig, Tool, ToolConfig, ToolbarConfig, ToolbarItems, TooltipConfig, VueConfig, Widget } from '@bryntum/core-thin';
6
+ import { AlignSpec, Base, Color, Container, CoreContainerItemConfig, CoreContainerLayoutConfig, DomConfig, KeyMapConfig, Layout, MaskConfig, MenuItemConfig, MenuItemEntry, Model, PagingToolbarConfig, Panel, PanelCollapserConfig, PanelCollapserOverlayConfig, PanelHeader, RadioConfig, RadioGroup, RadioGroupListeners, Rectangle, Scroller, ScrollerConfig, StateProvider, TabConfig, Tool, ToolConfig, ToolbarConfig, ToolbarItems, TooltipConfig, VueConfig, Widget } from '@bryntum/core-thin';
7
7
 
8
8
  import { createWidget, shouldComponentUpdate, processWidgetContent } from './WrapperHelper.js';
9
9
 
@@ -69,6 +69,10 @@ export type BryntumRadioGroupProps = {
69
69
  * [View online docs...](https://bryntum.com/products/grid/docs/api/Core/widget/RadioGroup#config-bodyCls)
70
70
  */
71
71
  bodyCls? : string|object
72
+ /**
73
+ * Set `true` to add a border to this container's element.
74
+ */
75
+ border? : boolean
72
76
  /**
73
77
  * An object where property names with a truthy value indicate which events should bubble up the ownership
74
78
  * hierarchy when triggered.
@@ -124,7 +128,7 @@ export type BryntumRadioGroupProps = {
124
128
  * ...
125
129
  * [View online docs...](https://bryntum.com/products/grid/docs/api/Core/widget/RadioGroup#config-color)
126
130
  */
127
- color? : string
131
+ color? : Color
128
132
  /**
129
133
  * Programmatic control over which column to start in when used in a grid layout.
130
134
  */
@@ -905,6 +909,7 @@ export class BryntumRadioGroup extends React.Component<BryntumRadioGroupProps> {
905
909
  'autoUpdateRecord',
906
910
  'bbar',
907
911
  'bodyCls',
912
+ 'border',
908
913
  'bubbleEvents',
909
914
  'centered',
910
915
  'clearable',
@@ -3,7 +3,7 @@
3
3
  */
4
4
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5
5
  import React, { RefObject } from 'react';
6
- import { AlignSpec, Base, DomConfig, KeyMapConfig, MaskConfig, Rectangle, Scroller, ScrollerConfig, Slider, SliderListeners, TabConfig, TooltipConfig, VueConfig, Widget } from '@bryntum/core-thin';
6
+ import { AlignSpec, Base, Color, DomConfig, KeyMapConfig, MaskConfig, Rectangle, Scroller, ScrollerConfig, Slider, SliderListeners, TabConfig, TooltipConfig, VueConfig, Widget } from '@bryntum/core-thin';
7
7
 
8
8
  import { createWidget, shouldComponentUpdate, processWidgetContent } from './WrapperHelper.js';
9
9
 
@@ -91,7 +91,7 @@ export type BryntumSliderProps = {
91
91
  * ...
92
92
  * [View online docs...](https://bryntum.com/products/grid/docs/api/Core/widget/Slider#config-color)
93
93
  */
94
- color? : string
94
+ color? : Color
95
95
  /**
96
96
  * Programmatic control over which column to start in when used in a grid layout.
97
97
  */
@@ -3,7 +3,7 @@
3
3
  */
4
4
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5
5
  import React, { RefObject } from 'react';
6
- import { AlignSpec, Base, DomConfig, KeyMapConfig, MaskConfig, Rectangle, Scroller, ScrollerConfig, Splitter, SplitterListeners, TabConfig, TooltipConfig, VueConfig, Widget } from '@bryntum/core-thin';
6
+ import { AlignSpec, Base, Color, DomConfig, KeyMapConfig, MaskConfig, Rectangle, Scroller, ScrollerConfig, Splitter, SplitterListeners, TabConfig, TooltipConfig, VueConfig, Widget } from '@bryntum/core-thin';
7
7
 
8
8
  import { createWidget, shouldComponentUpdate, processWidgetContent } from './WrapperHelper.js';
9
9
 
@@ -91,7 +91,7 @@ export type BryntumSplitterProps = {
91
91
  * ...
92
92
  * [View online docs...](https://bryntum.com/products/grid/docs/api/Core/widget/Splitter#config-color)
93
93
  */
94
- color? : string
94
+ color? : Color
95
95
  /**
96
96
  * Programmatic control over which column to start in when used in a grid layout.
97
97
  */
@@ -3,7 +3,7 @@
3
3
  */
4
4
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5
5
  import React, { RefObject } from 'react';
6
- import { AlignSpec, Base, Container, CoreContainerItemConfig, CoreContainerLayoutConfig, DomConfig, KeyMapConfig, Layout, MaskConfig, MenuItemConfig, MenuItemEntry, Model, PagingToolbarConfig, Panel, PanelCollapserConfig, PanelCollapserOverlayConfig, PanelHeader, Rectangle, Scroller, ScrollerConfig, StateProvider, TabBarConfig, TabConfig, TabPanel, TabPanelListeners, Tool, ToolConfig, ToolbarConfig, ToolbarItems, TooltipConfig, VueConfig, Widget } from '@bryntum/core-thin';
6
+ import { AlignSpec, Base, Color, Container, CoreContainerItemConfig, CoreContainerLayoutConfig, DomConfig, KeyMapConfig, Layout, MaskConfig, MenuItemConfig, MenuItemEntry, Model, PagingToolbarConfig, Panel, PanelCollapserConfig, PanelCollapserOverlayConfig, PanelHeader, Rectangle, Scroller, ScrollerConfig, StateProvider, TabBarConfig, TabConfig, TabPanel, TabPanelListeners, Tool, ToolConfig, ToolbarConfig, ToolbarItems, TooltipConfig, VueConfig, Widget } from '@bryntum/core-thin';
7
7
 
8
8
  import { createWidget, shouldComponentUpdate, processWidgetContent } from './WrapperHelper.js';
9
9
 
@@ -81,6 +81,10 @@ export type BryntumTabPanelProps = {
81
81
  * [View online docs...](https://bryntum.com/products/grid/docs/api/Core/widget/TabPanel#config-bodyCls)
82
82
  */
83
83
  bodyCls? : string|object
84
+ /**
85
+ * Set `true` to add a border to this container's element.
86
+ */
87
+ border? : boolean
84
88
  /**
85
89
  * An object where property names with a truthy value indicate which events should bubble up the ownership
86
90
  * hierarchy when triggered.
@@ -131,7 +135,7 @@ export type BryntumTabPanelProps = {
131
135
  * ...
132
136
  * [View online docs...](https://bryntum.com/products/grid/docs/api/Core/widget/TabPanel#config-color)
133
137
  */
134
- color? : string
138
+ color? : Color
135
139
  /**
136
140
  * Programmatic control over which column to start in when used in a grid layout.
137
141
  */
@@ -906,6 +910,7 @@ export class BryntumTabPanel extends React.Component<BryntumTabPanelProps> {
906
910
  'autoUpdateRecord',
907
911
  'bbar',
908
912
  'bodyCls',
913
+ 'border',
909
914
  'bubbleEvents',
910
915
  'centered',
911
916
  'collapsible',
@@ -3,7 +3,7 @@
3
3
  */
4
4
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5
5
  import React, { RefObject } from 'react';
6
- import { AlignSpec, Base, CoreContainerItemConfig, DomConfig, Field, FieldContainer, FieldContainerConfig, FieldTriggerConfig, KeyMapConfig, MaskConfig, Model, Rectangle, Scroller, TabConfig, TextAreaField, TextAreaFieldListeners, TooltipConfig, VueConfig, Widget } from '@bryntum/core-thin';
6
+ import { AlignSpec, Base, Color, CoreContainerItemConfig, DomConfig, Field, FieldContainer, FieldContainerConfig, FieldTriggerConfig, KeyMapConfig, MaskConfig, Model, Rectangle, Scroller, TabConfig, TextAreaField, TextAreaFieldListeners, TooltipConfig, VueConfig, Widget } from '@bryntum/core-thin';
7
7
 
8
8
  import { createWidget, shouldComponentUpdate, processWidgetContent } from './WrapperHelper.js';
9
9
 
@@ -110,7 +110,7 @@ export type BryntumTextAreaFieldProps = {
110
110
  * ...
111
111
  * [View online docs...](https://bryntum.com/products/grid/docs/api/Core/widget/TextAreaField#config-color)
112
112
  */
113
- color? : string
113
+ color? : Color
114
114
  /**
115
115
  * Programmatic control over which column to start in when used in a grid layout.
116
116
  */
@@ -3,7 +3,7 @@
3
3
  */
4
4
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5
5
  import React, { RefObject } from 'react';
6
- import { AlignSpec, Base, CoreContainerItemConfig, DomConfig, Field, FieldContainer, FieldContainerConfig, FieldTriggerConfig, KeyMapConfig, MaskConfig, Model, Rectangle, Scroller, TabConfig, TextAreaPickerField, TextAreaPickerFieldListeners, TooltipConfig, VueConfig, Widget, WidgetConfig } from '@bryntum/core-thin';
6
+ import { AlignSpec, Base, Color, CoreContainerItemConfig, DomConfig, Field, FieldContainer, FieldContainerConfig, FieldTriggerConfig, KeyMapConfig, MaskConfig, Model, Rectangle, Scroller, TabConfig, TextAreaPickerField, TextAreaPickerFieldListeners, TooltipConfig, VueConfig, Widget, WidgetConfig } from '@bryntum/core-thin';
7
7
 
8
8
  import { createWidget, shouldComponentUpdate, processWidgetContent } from './WrapperHelper.js';
9
9
 
@@ -114,7 +114,7 @@ export type BryntumTextAreaPickerFieldProps = {
114
114
  * ...
115
115
  * [View online docs...](https://bryntum.com/products/grid/docs/api/Core/widget/TextAreaPickerField#config-color)
116
116
  */
117
- color? : string
117
+ color? : Color
118
118
  /**
119
119
  * Programmatic control over which column to start in when used in a grid layout.
120
120
  */
@@ -3,7 +3,7 @@
3
3
  */
4
4
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5
5
  import React, { RefObject } from 'react';
6
- import { AlignSpec, Base, CoreContainerItemConfig, DomConfig, Field, FieldContainer, FieldContainerConfig, FieldTriggerConfig, KeyMapConfig, MaskConfig, Model, Rectangle, Scroller, TabConfig, TextField, TextFieldListeners, TooltipConfig, VueConfig, Widget } from '@bryntum/core-thin';
6
+ import { AlignSpec, Base, Color, CoreContainerItemConfig, DomConfig, Field, FieldContainer, FieldContainerConfig, FieldTriggerConfig, KeyMapConfig, MaskConfig, Model, Rectangle, Scroller, TabConfig, TextField, TextFieldListeners, TooltipConfig, VueConfig, Widget } from '@bryntum/core-thin';
7
7
 
8
8
  import { createWidget, shouldComponentUpdate, processWidgetContent } from './WrapperHelper.js';
9
9
 
@@ -110,7 +110,7 @@ export type BryntumTextFieldProps = {
110
110
  * ...
111
111
  * [View online docs...](https://bryntum.com/products/grid/docs/api/Core/widget/TextField#config-color)
112
112
  */
113
- color? : string
113
+ color? : Color
114
114
  /**
115
115
  * Programmatic control over which column to start in when used in a grid layout.
116
116
  */
@@ -3,7 +3,7 @@
3
3
  */
4
4
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5
5
  import React, { RefObject } from 'react';
6
- import { AlignSpec, Base, CoreContainerItemConfig, DomConfig, DurationConfig, Field, FieldContainer, FieldContainerConfig, FieldTriggerConfig, KeyMapConfig, MaskConfig, Model, Rectangle, Scroller, TabConfig, TimeField, TimeFieldListeners, TooltipConfig, VueConfig, Widget, WidgetConfig } from '@bryntum/core-thin';
6
+ import { AlignSpec, Base, Color, CoreContainerItemConfig, DateField, DomConfig, DurationConfig, Field, FieldContainer, FieldContainerConfig, FieldTriggerConfig, KeyMapConfig, MaskConfig, Model, Rectangle, Scroller, TabConfig, TimeField, TimeFieldListeners, TooltipConfig, VueConfig, Widget, WidgetConfig } from '@bryntum/core-thin';
7
7
 
8
8
  import { createWidget, shouldComponentUpdate, processWidgetContent } from './WrapperHelper.js';
9
9
 
@@ -114,7 +114,7 @@ export type BryntumTimeFieldProps = {
114
114
  * ...
115
115
  * [View online docs...](https://bryntum.com/products/grid/docs/api/Core/widget/TimeField#config-color)
116
116
  */
117
- color? : string
117
+ color? : Color
118
118
  /**
119
119
  * Programmatic control over which column to start in when used in a grid layout.
120
120
  */
@@ -477,6 +477,14 @@ export type BryntumTimeFieldProps = {
477
477
  * [View online docs...](https://bryntum.com/products/grid/docs/api/Core/widget/TimeField#config-owner)
478
478
  */
479
479
  owner? : Widget|any
480
+ /**
481
+ * A reference to a partner DateField which this TimeField should sync its value with.
482
+ * When the DateField's value is changed, this TimeField's value is updated to match.
483
+ * When this TimeField's value is changed, the DateField's value is updated to match.
484
+ * ...
485
+ * [View online docs...](https://bryntum.com/products/grid/docs/api/Core/widget/TimeField#config-partner)
486
+ */
487
+ partner? : string|DateField
480
488
  /**
481
489
  * Configuration object for the [picker](https://bryntum.com/products/core/docs/api/Core/widget/List) on initialization. Returns the
482
490
  * [picker](https://bryntum.com/products/core/docs/api/Core/widget/List) instance at runtime.
@@ -972,6 +980,7 @@ export class BryntumTimeField extends React.Component<BryntumTimeFieldProps> {
972
980
  'onResize',
973
981
  'onShow',
974
982
  'onTrigger',
983
+ 'partner',
975
984
  'placeholder',
976
985
  'readOnly',
977
986
  'rendition',
@@ -3,7 +3,7 @@
3
3
  */
4
4
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5
5
  import React, { RefObject } from 'react';
6
- import { AlignSpec, Base, Container, CoreContainerItemConfig, CoreContainerLayoutConfig, DomConfig, KeyMapConfig, Layout, MaskConfig, MenuItemConfig, MenuItemEntry, Model, Rectangle, Scroller, ScrollerConfig, TabConfig, TimePicker, TimePickerListeners, ToolbarItems, TooltipConfig, VueConfig, Widget } from '@bryntum/core-thin';
6
+ import { AlignSpec, Base, Color, Container, CoreContainerItemConfig, CoreContainerLayoutConfig, DomConfig, KeyMapConfig, Layout, MaskConfig, MenuItemConfig, MenuItemEntry, Model, Rectangle, Scroller, ScrollerConfig, TabConfig, TimePicker, TimePickerListeners, ToolbarItems, TooltipConfig, VueConfig, Widget } from '@bryntum/core-thin';
7
7
 
8
8
  import { createWidget, shouldComponentUpdate, processWidgetContent } from './WrapperHelper.js';
9
9
 
@@ -56,6 +56,10 @@ export type BryntumTimePickerProps = {
56
56
  * Update assigned [record](https://bryntum.com/products/core/docs/api/Core/widget/Container#config-record) automatically on field changes
57
57
  */
58
58
  autoUpdateRecord? : boolean
59
+ /**
60
+ * Set `true` to add a border to this container's element.
61
+ */
62
+ border? : boolean
59
63
  /**
60
64
  * An object where property names with a truthy value indicate which events should bubble up the ownership
61
65
  * hierarchy when triggered.
@@ -95,7 +99,7 @@ export type BryntumTimePickerProps = {
95
99
  * ...
96
100
  * [View online docs...](https://bryntum.com/products/grid/docs/api/Core/widget/TimePicker#config-color)
97
101
  */
98
- color? : string
102
+ color? : Color
99
103
  /**
100
104
  * Programmatic control over which column to start in when used in a grid layout.
101
105
  */
@@ -732,6 +736,7 @@ export class BryntumTimePicker extends React.Component<BryntumTimePickerProps> {
732
736
  'ariaDescription',
733
737
  'ariaLabel',
734
738
  'autoUpdateRecord',
739
+ 'border',
735
740
  'bubbleEvents',
736
741
  'centered',
737
742
  'color',
@@ -3,7 +3,7 @@
3
3
  */
4
4
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5
5
  import React, { RefObject } from 'react';
6
- import { AlignSpec, Base, ClickRepeaterConfig, Container, CoreContainerItemConfig, CoreContainerLayoutConfig, DomConfig, KeyMapConfig, Layout, MaskConfig, MenuItemConfig, Model, Rectangle, Scroller, ScrollerConfig, TabConfig, Tool, ToolConfig, Toolbar, ToolbarItems, ToolbarListeners, TooltipConfig, VueConfig, Widget } from '@bryntum/core-thin';
6
+ import { AlignSpec, Base, ClickRepeaterConfig, Color, Container, CoreContainerItemConfig, CoreContainerLayoutConfig, DomConfig, KeyMapConfig, Layout, MaskConfig, MenuItemConfig, Model, Rectangle, Scroller, ScrollerConfig, TabConfig, Tool, ToolConfig, Toolbar, ToolbarItems, ToolbarListeners, TooltipConfig, VueConfig, Widget } from '@bryntum/core-thin';
7
7
 
8
8
  import { createWidget, shouldComponentUpdate, processWidgetContent } from './WrapperHelper.js';
9
9
 
@@ -56,6 +56,10 @@ export type BryntumToolbarProps = {
56
56
  * Update assigned [record](https://bryntum.com/products/core/docs/api/Core/widget/Container#config-record) automatically on field changes
57
57
  */
58
58
  autoUpdateRecord? : boolean
59
+ /**
60
+ * Set `true` to add a border to this container's element.
61
+ */
62
+ border? : boolean
59
63
  /**
60
64
  * An object where property names with a truthy value indicate which events should bubble up the ownership
61
65
  * hierarchy when triggered.
@@ -95,7 +99,7 @@ export type BryntumToolbarProps = {
95
99
  * ...
96
100
  * [View online docs...](https://bryntum.com/products/grid/docs/api/Core/widget/Toolbar#config-color)
97
101
  */
98
- color? : string
102
+ color? : Color
99
103
  /**
100
104
  * Programmatic control over which column to start in when used in a grid layout.
101
105
  */
@@ -755,6 +759,7 @@ export class BryntumToolbar extends React.Component<BryntumToolbarProps> {
755
759
  'ariaDescription',
756
760
  'ariaLabel',
757
761
  'autoUpdateRecord',
762
+ 'border',
758
763
  'bubbleEvents',
759
764
  'centered',
760
765
  'color',
@@ -3,7 +3,7 @@
3
3
  */
4
4
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5
5
  import React, { RefObject } from 'react';
6
- import { AlignSpec, Base, DomConfig, KeyMapConfig, MaskConfig, Rectangle, Scroller, ScrollerConfig, TabConfig, TooltipConfig, VueConfig, Widget, WidgetListeners } from '@bryntum/core-thin';
6
+ import { AlignSpec, Base, Color, DomConfig, KeyMapConfig, MaskConfig, Rectangle, Scroller, ScrollerConfig, TabConfig, TooltipConfig, VueConfig, Widget, WidgetListeners } from '@bryntum/core-thin';
7
7
 
8
8
  import { createWidget, shouldComponentUpdate, processWidgetContent } from './WrapperHelper.js';
9
9
 
@@ -91,7 +91,7 @@ export type BryntumWidgetProps = {
91
91
  * ...
92
92
  * [View online docs...](https://bryntum.com/products/grid/docs/api/Core/widget/Widget#config-color)
93
93
  */
94
- color? : string
94
+ color? : Color
95
95
  /**
96
96
  * Programmatic control over which column to start in when used in a grid layout.
97
97
  */
@@ -3,7 +3,7 @@
3
3
  */
4
4
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5
5
  import React, { RefObject } from 'react';
6
- import { AlignSpec, Base, Container, CoreContainerItemConfig, CoreContainerLayoutConfig, DomConfig, KeyMapConfig, Layout, MaskConfig, MenuItemConfig, MenuItemEntry, Model, PagingToolbarConfig, Panel, PanelCollapserConfig, PanelCollapserOverlayConfig, PanelHeader, Rectangle, Scroller, ScrollerConfig, StateProvider, TabConfig, Tool, ToolConfig, ToolbarConfig, ToolbarItems, TooltipConfig, VueConfig, Widget, YearPicker, YearPickerListeners } from '@bryntum/core-thin';
6
+ import { AlignSpec, Base, Color, Container, CoreContainerItemConfig, CoreContainerLayoutConfig, DomConfig, KeyMapConfig, Layout, MaskConfig, MenuItemConfig, MenuItemEntry, Model, PagingToolbarConfig, Panel, PanelCollapserConfig, PanelCollapserOverlayConfig, PanelHeader, Rectangle, Scroller, ScrollerConfig, StateProvider, TabConfig, Tool, ToolConfig, ToolbarConfig, ToolbarItems, TooltipConfig, VueConfig, Widget, YearPicker, YearPickerListeners } from '@bryntum/core-thin';
7
7
 
8
8
  import { createWidget, shouldComponentUpdate, processWidgetContent } from './WrapperHelper.js';
9
9
 
@@ -69,6 +69,10 @@ export type BryntumYearPickerProps = {
69
69
  * [View online docs...](https://bryntum.com/products/grid/docs/api/Core/widget/YearPicker#config-bodyCls)
70
70
  */
71
71
  bodyCls? : string|object
72
+ /**
73
+ * Set `true` to add a border to this container's element.
74
+ */
75
+ border? : boolean
72
76
  /**
73
77
  * An object where property names with a truthy value indicate which events should bubble up the ownership
74
78
  * hierarchy when triggered.
@@ -119,7 +123,7 @@ export type BryntumYearPickerProps = {
119
123
  * ...
120
124
  * [View online docs...](https://bryntum.com/products/grid/docs/api/Core/widget/YearPicker#config-color)
121
125
  */
122
- color? : string
126
+ color? : Color
123
127
  /**
124
128
  * Programmatic control over which column to start in when used in a grid layout.
125
129
  */
@@ -888,6 +892,7 @@ export class BryntumYearPicker extends React.Component<BryntumYearPickerProps> {
888
892
  'autoUpdateRecord',
889
893
  'bbar',
890
894
  'bodyCls',
895
+ 'border',
891
896
  'bubbleEvents',
892
897
  'centered',
893
898
  'collapsible',
@@ -20,9 +20,43 @@ declare global {
20
20
  }
21
21
 
22
22
  /**
23
- * Development warning. Showed when environment is set to 'development'
24
- * @param {String} clsName react component instance
25
- * @param {String} msg console message
23
+ * Extends the standard React.ReactPortal type to include an optional `taskGeneration` property.
24
+ * This property can be used to track or associate a generation number with the portal,
25
+ * which may be useful for managing updates or synchronization tasks in complex React applications.
26
+ *
27
+ * @property {number} [taskGeneration] Optional generation number for task tracking or synchronization.
28
+ */
29
+ type ReactPortalWithTaskGeneration = React.ReactPortal & { taskGeneration?: number };
30
+
31
+ /**
32
+ * Represents the state for a React component that manages portals and their generation.
33
+ *
34
+ * @property {Map} portals A map associating unique string keys with `ReactPortalWithTaskGeneration` instances.
35
+ * @property {number} generation A numeric value indicating the current generation or version of the component state.
36
+ */
37
+ type ReactComponentState = {
38
+ portals : Map<string, ReactPortalWithTaskGeneration>
39
+ generation : number
40
+ };
41
+
42
+ /**
43
+ * Extends the standard HTMLElement to include additional optional properties
44
+ * used for managing element-specific data and state within the application.
45
+ *
46
+ * @property {any} [elementData] Arbitrary data associated with the element.
47
+ * @property {string|null} [lastPortalId] Identifier for the last portal rendered into this element, or null if none.
48
+ * @property {boolean} [didSetTextContent] Indicates whether the text content of the element has been set.
49
+ */
50
+ type HTMLElementWithData = HTMLElement & {
51
+ elementData?: any
52
+ lastPortalId?: string | null
53
+ didSetTextContent?: boolean
54
+ };
55
+
56
+ /**
57
+ * Development warning. Shown when environment is set to 'development'
58
+ * @param {string} clsName react component instance
59
+ * @param {string} msg console message
26
60
  */
27
61
  function devWarning(clsName: string, msg: string): void {
28
62
  // @ts-ignore
@@ -38,7 +72,7 @@ function devWarningContainer(clsName: string, containerParam: string): void {
38
72
  devWarning(
39
73
  clsName,
40
74
  `Using "${containerParam}" parameter for configuration is not recommended.\n` +
41
- "Widget is placed automatically inside it's container element.\n" +
75
+ 'Widget is placed automatically inside its container element.\n' +
42
76
  `Solution: remove "${containerParam}" parameter from configuration.`
43
77
  );
44
78
  }
@@ -62,14 +96,14 @@ function devWarningProjectProp(clsName: string): void {
62
96
  /**
63
97
  * Returns `true` if the provided element is an instance of React Element.
64
98
  * All React elements require an additional $$typeof: Symbol.for('react.element') field declared on the object for security reasons.
65
- * The object, which React.createElement() return has $$typeof property equals to Symbol.for('react.element')
99
+ * The object, which React.createElement() returns has $$typeof property equal to Symbol.for('react.element')
66
100
  *
67
101
  * Sources:
68
102
  * https://reactjs.org/blog/2015/12/18/react-components-elements-and-instances.html
69
103
  * https://github.com/facebook/react/pull/4832
70
104
  *
71
- * @param {*} element
72
- * @returns {Boolean}
105
+ * @param {*} element Element to check
106
+ * @returns {boolean} True if element is a React element
73
107
  * @internal
74
108
  */
75
109
  function isReactElement(element: any): boolean {
@@ -78,8 +112,8 @@ function isReactElement(element: any): boolean {
78
112
 
79
113
  /**
80
114
  * Creates bryntum component config from react component
81
- * @param {Object} reactInstance react component instance
82
- * @returns {Object} config object
115
+ * @param {object} reactInstance react component instance
116
+ * @returns {object} config object
83
117
  */
84
118
  function createConfig(reactInstance: any): object {
85
119
  const
@@ -101,6 +135,7 @@ function createConfig(reactInstance: any): object {
101
135
  processCellContent : isView ? processCellContent : undefined,
102
136
  processCellEditor : isView ? processCellEditor : undefined,
103
137
  processEventContent : isView ? processEventContent : undefined,
138
+ processTaskContent : isView ? processTaskContent : undefined,
104
139
  processTaskItemContent : isView ? processTaskItemContent : undefined,
105
140
  processResourceHeader : isView ? processResourceHeader : undefined
106
141
  } as any;
@@ -178,10 +213,10 @@ function createConfig(reactInstance: any): object {
178
213
 
179
214
  /**
180
215
  * Applies property value to Bryntum config or instance.
181
- * @param {Object} configOrInstance target object
182
- * @param {String} prop property name
183
- * @param {Object} value value
184
- * @param {Boolean} isConfig config setting mode
216
+ * @param {object} configOrInstance target object
217
+ * @param {string} prop property name
218
+ * @param {object} value value
219
+ * @param {boolean} isConfig config setting mode
185
220
  */
186
221
  function applyPropValue(configOrInstance: any, prop: string, value: any, isConfig = true): void {
187
222
  // Assigning React wrapper component instance
@@ -270,9 +305,9 @@ function createWidget(component: any): any {
270
305
 
271
306
  /**
272
307
  * Calculates the portalId from passed ids
273
- * @param {String|Number} id
274
- * @param {String|Number} columnId
275
- * @returns {String} portalId as `portal-${id}-${columnId}`
308
+ * @param {string|number} id Record id
309
+ * @param {string|number} columnId Column id
310
+ * @returns {string} portalId as `portal-${id}-${columnId}`
276
311
  */
277
312
  function getPortalId(id: string | number, columnId: string | number): string {
278
313
  return `portal-${id}-${columnId}`;
@@ -281,7 +316,7 @@ function getPortalId(id: string | number, columnId: string | number): string {
281
316
  /**
282
317
  * Delete portal and its container
283
318
  * @param {*} component React Component, the wrapper itself
284
- * @param {String} portalId As returned from getPortalId function
319
+ * @param {string} portalId As returned from getPortalId function
285
320
  */
286
321
  function deletePortal(component: any, portalId: string): void {
287
322
  const portal = component.state.portals.get(portalId);
@@ -313,7 +348,7 @@ function releaseReactCell(component: any, cellElement: any): void {
313
348
  /**
314
349
  * Calls releaseReactCell that implements the cleanup
315
350
  * @param {*} component React Component, the wrapper itself
316
- * @param {Object} context
351
+ * @param {object} context Event context object
317
352
  * @param {Core.data.Model[]} context.records Array of records that are going to be removed
318
353
  */
319
354
  function beforeRemoveRecords(component: any, { records, removingAll }: { records: any[]; removingAll: boolean }): void {
@@ -361,9 +396,9 @@ function updateGeneration(component: any, thisTick = false, callback = () => {})
361
396
  * Component about to be updated, from changing a prop using state.
362
397
  * React to it depending on what changed and prevent react from re-rendering our component.
363
398
  * @param {*} component react component instance
364
- * @param nextProps
365
- * @param nextState
366
- * @returns {Boolean}
399
+ * @param {object} nextProps Next props
400
+ * @param {object} nextState Next state
401
+ * @returns {boolean}
367
402
  */
368
403
  function shouldComponentUpdate(component: any, nextProps: Readonly<any>, nextState: Readonly<any>): boolean {
369
404
  const { props, instance, propertyNames } = component;
@@ -380,10 +415,10 @@ function shouldComponentUpdate(component: any, nextProps: Readonly<any>, nextSta
380
415
  }
381
416
 
382
417
  /**
383
- *
384
- * @param { Object } context
385
- * @param { * } context.cellContent Content to be rendered in cell (set by renderer)
386
- * @returns { Boolean } `true` if there is a React Renderer in this cell, `false` otherwise
418
+ * Checks if the cell content is a React element
419
+ * @param {object} context Renderer context object
420
+ * @param {*} context.cellContent Content to be rendered in cell (set by renderer)
421
+ * @returns {boolean} `true` if there is a React Renderer in this cell, `false` otherwise
387
422
  */
388
423
  function hasFrameworkRenderer({ cellContent }: { cellContent: any }): boolean {
389
424
  // @ts-ignore
@@ -393,9 +428,9 @@ function hasFrameworkRenderer({ cellContent }: { cellContent: any }): boolean {
393
428
  /**
394
429
  * Hook called by instance when rendering cells within
395
430
  * Row::renderCell(), creates portals for JSX supplied by renderers
396
- * @param {Object} context
397
- * @param {Object} context.rendererData Data passed from renderCell
398
- * @param {Object} context.cellElementData Data passed from renderCell
431
+ * @param {object} context Renderer context object
432
+ * @param {object} context.rendererData Data passed from renderCell
433
+ * @param {object} context.cellElementData Data passed from renderCell
399
434
  */
400
435
  function processCellContent(this: { reactComponent: any; isExporting: boolean; $isCollapsing: boolean; }, { rendererData, cellElementData, rendererHtml }: {
401
436
  rendererData: any
@@ -793,10 +828,102 @@ function processCalendarEventContent(this: any, {
793
828
  return returnValue;
794
829
  }
795
830
 
831
+ function processTaskContent(this: any, {
832
+ jsx, // React element to render in portal
833
+ action, // Rendering action
834
+ targetElement, // DOM element to create portal in
835
+ reactComponent // the React wrapper component
836
+ }: {
837
+ jsx: ReactElement
838
+ action: string
839
+ targetElement: HTMLElementWithData
840
+ reactComponent: React.Component & { syncContent: (fn: () => unknown) => void }
841
+ }): boolean {
842
+
843
+ const { taskResize } = this.features;
844
+
845
+ if (
846
+ !reactComponent ||
847
+ action !== 'syncFwConfig' ||
848
+ (taskResize?.isResizing && !taskResize.dragging.completed)
849
+ ) {
850
+ return false;
851
+ }
852
+
853
+ // Ensure we have the expected DOM structure and type safety
854
+ const wrap : HTMLElementWithData | null | undefined = targetElement.parentElement?.parentElement;
855
+
856
+ if (!wrap?.elementData) {
857
+ return false;
858
+ }
859
+
860
+ const
861
+ wrapData = wrap.elementData,
862
+ { taskRecord } = wrapData,
863
+ state = reactComponent.state as ReactComponentState,
864
+ { portals } = state,
865
+ portalId = `portal-task-${taskRecord.id}`;
866
+
867
+ if (taskRecord.isMilestone) {
868
+ deletePortal(reactComponent, portalId);
869
+ targetElement.innerHTML = '';
870
+ wrap.lastPortalId = null;
871
+ return false;
872
+ }
873
+
874
+ // Make this function available for testing. It is used for synchronizing task content, specifically
875
+ // for React portal rendering. It should only be called during event D&D drop operation.
876
+ reactComponent.syncContent = reactComponent.syncContent || function(fn: () => unknown) {
877
+ flushSync(fn);
878
+ };
879
+
880
+ const parent = wrap.querySelector('.b-gantt-task-content') as HTMLElement;
881
+
882
+ if (jsx) {
883
+
884
+ const
885
+ portal = portals.get(portalId),
886
+ updateContent = () => {
887
+ // Clean-up the content element
888
+ parent!.innerHTML = '';
889
+ const
890
+ jsxContainer = DomHelper.createElement({
891
+ className : 'b-jsx-container',
892
+ // As stated above, we are at the wrapper, but we should render the JSX inside the content element
893
+ parent,
894
+ // Signal DomSync to not remove React-controlled content
895
+ retainElement : true
896
+ }) as Element,
897
+ portal = ReactDOM.createPortal(jsx, jsxContainer) as ReactPortalWithTaskGeneration;
898
+
899
+ // Store taskGeneration on the portal to easily determine later if it needs to be updated
900
+ portal.taskGeneration = wrap.elementData.taskGeneration;
901
+
902
+ // Save portalId for later use
903
+ wrap.lastPortalId = portalId;
904
+
905
+ // Store portal in map in state, so that React can keep track of it
906
+ portals.set(portalId, portal);
907
+ updateGeneration(reactComponent, true);
908
+
909
+ targetElement.didSetTextContent = true;
910
+ };
911
+
912
+ // Recreate portal only if the underlying taskRecord has changed or is different from last used
913
+ if (!portal || portal.taskGeneration !== wrap.elementData.taskGeneration || wrap.lastPortalId !== portalId) {
914
+ // Delete the old portal if one exists
915
+ deletePortal(reactComponent, portalId);
916
+ updateContent();
917
+ }
918
+ }
919
+
920
+ return true;
921
+ }
922
+
796
923
  /**
797
924
  * Generate a unique portal ID for an event.
798
- * @param {Object} assignmentRecord The assignment record
799
- * @param {Object} [eventRecord] The event record
925
+ * @param {object} assignmentRecord The assignment record
926
+ * @param {object} [eventRecord] The event record
800
927
  * @param {string} [segment] Segment identifier for split events
801
928
  * @param {boolean} [isExporting] To check if exporting is in progress
802
929
  * @returns {string} The generated portal ID
@@ -811,8 +938,8 @@ function generateEventPortalId(assignmentRecord: any, eventRecord?: any, segment
811
938
  * DomSync only fires callback for it and not for children. The nested children are removed as part of
812
939
  * removing the parent, so their callbacks don't fire individually. We must explicitly clean up their portals here.
813
940
  * @param {*} component React Component, the wrapper itself
814
- * @param {Object} parentEventRecord The parent event record
815
- * @param {Object} resourceRecord The resource record (needed for assignment lookup)
941
+ * @param {object} parentEventRecord The parent event record
942
+ * @param {object} resourceRecord The resource record (needed for assignment lookup)
816
943
  * @param {boolean} isExporting Whether we're in export mode
817
944
  */
818
945
  function deleteNestedEventPortals(component: any, parentEventRecord: any, resourceRecord: any, isExporting: boolean): void {
@@ -959,7 +1086,7 @@ function processEventContent(this: any, {
959
1086
  generationUpdateFlag = true;
960
1087
  }
961
1088
 
962
- // If nestedEvents feature is enabled and this is a event with nested children, need
1089
+ // If nestedEvents feature is enabled and this is an event with nested children, need
963
1090
  // to clean up their portals. Because DomSync only fires callback for the parent when it's released,
964
1091
  // nested children are removed as part of removing the parent, so their callbacks don't fire.
965
1092
  if (nestedEvents?.enabled && eventRecord.children?.length) {
@@ -1097,9 +1224,9 @@ function handleReactElement(widget: Widget, element: any): void {
1097
1224
  /**
1098
1225
  * Handles the React header element by processing JSX content within the widget.
1099
1226
  *
1100
- * @param {Object} column Object containing grid and id properties
1227
+ * @param {object} column Object containing grid and id properties
1101
1228
  * @param {HTMLElement} headerElement The header element to be processed
1102
- * @param {Any} html JSX content to be processed
1229
+ * @param {any} html JSX content to be processed
1103
1230
  */
1104
1231
  function handleReactHeaderElement(column: { grid: any; id: string }, headerElement: HTMLElement, html: any): void {
1105
1232
  const