@xh/hoist 55.0.8 → 55.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 (116) hide show
  1. package/CHANGELOG.md +19 -1
  2. package/admin/columns/Tracking.ts +12 -14
  3. package/admin/tabs/activity/aggregators/RangeAggregator.ts +4 -5
  4. package/admin/tabs/activity/clienterrors/ClientErrorsModel.ts +1 -1
  5. package/admin/tabs/activity/tracking/ActivityTrackingModel.ts +18 -16
  6. package/admin/tabs/general/config/ConfigPanelModel.ts +1 -1
  7. package/admin/tabs/general/users/UserModel.ts +1 -1
  8. package/admin/tabs/server/ehcache/EhCacheModel.ts +1 -1
  9. package/admin/tabs/server/logViewer/LogDisplayModel.ts +1 -1
  10. package/admin/tabs/userData/JsonBlobModel.ts +1 -1
  11. package/admin/tabs/userData/PreferenceModel.ts +1 -1
  12. package/appcontainer/AboutDialogModel.ts +1 -1
  13. package/appcontainer/BannerModel.ts +1 -1
  14. package/appcontainer/BannerSourceModel.ts +1 -1
  15. package/appcontainer/ChangelogDialogModel.ts +1 -1
  16. package/appcontainer/ErrorBoundary.ts +2 -2
  17. package/appcontainer/ExceptionDialogModel.ts +1 -1
  18. package/appcontainer/FeedbackDialogModel.ts +1 -1
  19. package/appcontainer/ImpersonationBarModel.ts +1 -1
  20. package/appcontainer/MessageModel.ts +2 -2
  21. package/appcontainer/MessageSourceModel.ts +1 -1
  22. package/appcontainer/OptionsDialogModel.ts +1 -1
  23. package/appcontainer/SizingModeModel.ts +1 -1
  24. package/appcontainer/ThemeModel.ts +1 -1
  25. package/appcontainer/ToastModel.ts +2 -2
  26. package/appcontainer/ToastSourceModel.ts +1 -1
  27. package/appcontainer/ViewportSizeModel.ts +1 -1
  28. package/cmp/ag-grid/AgGrid.ts +1 -1
  29. package/cmp/chart/Chart.ts +3 -3
  30. package/cmp/clock/Clock.ts +2 -2
  31. package/cmp/dataview/DataView.ts +2 -2
  32. package/cmp/dataview/DataViewModel.ts +1 -1
  33. package/cmp/grid/Grid.ts +1 -1
  34. package/cmp/grid/filter/GridFilterModel.ts +1 -1
  35. package/cmp/grid/impl/ColumnGroupHeader.ts +3 -3
  36. package/cmp/grid/impl/ColumnHeader.ts +3 -3
  37. package/cmp/grid/impl/GridPersistenceModel.ts +1 -1
  38. package/cmp/input/HoistInputModel.ts +1 -1
  39. package/cmp/layout/TileFrame.ts +1 -1
  40. package/cmp/relativetimestamp/RelativeTimestamp.ts +1 -1
  41. package/cmp/store/impl/StoreFilterFieldImplModel.ts +2 -2
  42. package/core/TaskObserver.ts +8 -8
  43. package/core/model/HoistModel.ts +1 -1
  44. package/core/model/ManagedRefreshContextModel.ts +1 -1
  45. package/core/persist/CustomProvider.ts +3 -3
  46. package/core/persist/DashViewProvider.ts +3 -3
  47. package/core/persist/LocalStorageProvider.ts +3 -3
  48. package/core/persist/PrefProvider.ts +3 -3
  49. package/data/cube/Cube.ts +1 -1
  50. package/data/cube/View.ts +7 -5
  51. package/data/cube/row/AggregateRow.ts +3 -2
  52. package/desktop/appcontainer/ToastSource.ts +2 -2
  53. package/desktop/cmp/dash/DashViewModel.ts +5 -5
  54. package/desktop/cmp/dash/canvas/DashCanvasModel.ts +16 -6
  55. package/desktop/cmp/dash/canvas/DashCanvasViewModel.ts +7 -2
  56. package/desktop/cmp/dash/canvas/DashCanvasViewSpec.ts +15 -0
  57. package/desktop/cmp/dash/canvas/impl/DashCanvasView.ts +2 -2
  58. package/desktop/cmp/dock/DockViewModel.ts +1 -1
  59. package/desktop/cmp/grid/editors/impl/InlineEditorModel.ts +1 -1
  60. package/desktop/cmp/grid/find/impl/GridFindFieldImplModel.ts +1 -1
  61. package/desktop/cmp/grid/impl/colchooser/ColChooserModel.ts +1 -1
  62. package/desktop/cmp/grid/impl/filter/ColumnHeaderFilterModel.ts +1 -1
  63. package/desktop/cmp/grid/impl/filter/GridFilterDialog.ts +1 -1
  64. package/desktop/cmp/grid/impl/filter/custom/CustomRowModel.ts +1 -1
  65. package/desktop/cmp/grid/impl/filter/custom/CustomTabModel.ts +1 -1
  66. package/desktop/cmp/grid/impl/filter/values/ValuesTabModel.ts +1 -1
  67. package/desktop/cmp/input/ButtonGroupInput.ts +1 -1
  68. package/desktop/cmp/input/Checkbox.ts +1 -1
  69. package/desktop/cmp/input/CodeInput.ts +2 -2
  70. package/desktop/cmp/input/DateInput.ts +1 -1
  71. package/desktop/cmp/input/NumberInput.ts +4 -4
  72. package/desktop/cmp/input/RadioInput.ts +1 -1
  73. package/desktop/cmp/input/Select.ts +6 -6
  74. package/desktop/cmp/input/Slider.ts +1 -1
  75. package/desktop/cmp/input/SwitchInput.ts +1 -1
  76. package/desktop/cmp/input/TextArea.ts +1 -1
  77. package/desktop/cmp/input/TextInput.ts +1 -1
  78. package/desktop/cmp/leftrightchooser/LeftRightChooserFilter.ts +1 -1
  79. package/desktop/cmp/loadingindicator/LoadingIndicator.ts +1 -1
  80. package/desktop/cmp/mask/Mask.ts +2 -2
  81. package/desktop/cmp/modalsupport/ModalSupportModel.ts +2 -2
  82. package/desktop/cmp/panel/impl/dragger/DraggerModel.ts +1 -1
  83. package/desktop/cmp/rest/RestGridModel.ts +3 -3
  84. package/desktop/cmp/rest/data/RestStore.ts +14 -15
  85. package/desktop/cmp/rest/impl/RestFormModel.ts +1 -1
  86. package/desktop/cmp/tab/TabSwitcher.ts +1 -1
  87. package/desktop/cmp/treemap/TreeMap.ts +3 -3
  88. package/inspector/instances/InstancesModel.ts +2 -2
  89. package/inspector/stats/StatsModel.ts +2 -2
  90. package/mobile/cmp/grid/impl/ColChooser.ts +1 -1
  91. package/mobile/cmp/grid/impl/ColChooserModel.ts +1 -1
  92. package/mobile/cmp/input/ButtonGroupInput.ts +3 -3
  93. package/mobile/cmp/input/Checkbox.ts +1 -1
  94. package/mobile/cmp/input/DateInput.ts +5 -5
  95. package/mobile/cmp/input/Label.ts +1 -1
  96. package/mobile/cmp/input/NumberInput.ts +8 -8
  97. package/mobile/cmp/input/SearchInput.ts +3 -3
  98. package/mobile/cmp/input/Select.ts +9 -9
  99. package/mobile/cmp/input/SwitchInput.ts +1 -1
  100. package/mobile/cmp/input/TextArea.ts +4 -4
  101. package/mobile/cmp/input/TextInput.ts +3 -3
  102. package/mobile/cmp/loadingindicator/LoadingIndicator.ts +1 -1
  103. package/mobile/cmp/mask/Mask.ts +1 -1
  104. package/mobile/cmp/menu/MenuButton.ts +1 -1
  105. package/mobile/cmp/menu/impl/Menu.ts +1 -1
  106. package/mobile/cmp/popover/Popover.ts +1 -1
  107. package/mobile/cmp/tab/impl/TabContainer.ts +1 -1
  108. package/package.json +1 -1
  109. package/svc/AlertBannerService.ts +1 -1
  110. package/svc/AutoRefreshService.ts +1 -1
  111. package/svc/ChangelogService.ts +1 -1
  112. package/svc/GridAutosizeService.ts +1 -1
  113. package/svc/GridExportService.ts +1 -1
  114. package/svc/IdleService.ts +1 -1
  115. package/svc/InspectorService.ts +2 -2
  116. package/tsconfig.json +1 -0
package/CHANGELOG.md CHANGED
@@ -1,6 +1,24 @@
1
1
  # Changelog
2
2
 
3
- ## v55.0.0 - 2023-02-08
3
+ ## v55.2.0 - 2023-02-10
4
+
5
+ ### 🎁 New Features
6
+ * `DashCanvas` enhancements:
7
+ * Views now support minimum and maximum dimensions.
8
+ * Views now expose an `allowDuplicate` flag for controlling the `Duplicate` menu item visibility.
9
+
10
+ ### 🐞 Bug Fixes
11
+ * Fixed a bug with Cube views having dimensions containing non-string or `null` values. Rows grouped
12
+ by these dimensions would report values for the dimension which were incorrectly stringified (e.g.
13
+ `null` vs. `'null'` or `'5'` vs. `5`). This has been fixed. Note that the stringified value is
14
+ still reported for the rows' `cubeLabel` value, and will be used for the purposes of grouping.
15
+
16
+ ### ⚙️ Typescript API Adjustments
17
+
18
+ * Improved signatures of `RestStore` APIs.
19
+
20
+
21
+ ## v55.1.0 - 2023-02-09
4
22
 
5
23
  Version 55 is the first major update of the toolkit after our transition to typescript. In addition
6
24
  to a host of runtime fixes and features, it also contains a good number of important typescript
@@ -8,7 +8,6 @@ import {RangeAggregator} from '@xh/hoist/admin/tabs/activity/aggregators/RangeAg
8
8
  import {Icon} from '@xh/hoist/icon';
9
9
  import {fmtDate, fmtSpan, numberRenderer} from '@xh/hoist/format';
10
10
  import * as Col from '@xh/hoist/cmp/grid/columns';
11
- import {isFinite} from 'lodash';
12
11
  import {ColumnSpec} from '@xh/hoist/cmp/grid/columns';
13
12
 
14
13
  export const appEnvironment: ColumnSpec = {
@@ -56,8 +55,7 @@ export const day: ColumnSpec = {
56
55
  field: {
57
56
  name: 'day',
58
57
  type: 'localDate',
59
- isDimension: true,
60
- aggregator: new RangeAggregator()
58
+ isDimension: true
61
59
  },
62
60
  ...Col.localDate,
63
61
  displayName: 'App Day'
@@ -178,25 +176,25 @@ export const userMessageFlag: ColumnSpec = {
178
176
  }
179
177
  };
180
178
 
181
- export const dateRange: ColumnSpec = {
179
+ export const dayRange: ColumnSpec = {
182
180
  field: {
183
- name: 'day',
181
+ name: 'dayRange',
184
182
  type: 'json',
185
- displayName: 'App Day'
183
+ aggregator: new RangeAggregator(),
184
+ displayName: 'App Day Range'
186
185
  },
187
- ...Col.localDate,
186
+ align: 'right',
188
187
  width: 200,
189
- renderer: dateRangeRenderer,
190
- exportValue: dateRangeRenderer,
191
- comparator: dateRangeComparator
188
+ renderer: dayRangeRenderer,
189
+ exportValue: dayRangeRenderer,
190
+ comparator: dayRangeComparator
192
191
  };
193
192
 
194
193
  //-----------------------
195
194
  // Implementation
196
195
  //-----------------------
197
- function dateRangeRenderer(range) {
198
- if (!range) return;
199
- if (isFinite(range)) return fmtDate(range);
196
+ function dayRangeRenderer(range) {
197
+ if (!range) return null;
200
198
 
201
199
  const {min, max} = range,
202
200
  minStr = fmtDate(min),
@@ -206,7 +204,7 @@ function dateRangeRenderer(range) {
206
204
  return `${minStr} → ${maxStr}`;
207
205
  }
208
206
 
209
- function dateRangeComparator(rangeA, rangeB, sortDir, abs, {defaultComparator}) {
207
+ function dayRangeComparator(rangeA, rangeB, sortDir, abs, {defaultComparator}) {
210
208
  const maxA = rangeA?.max,
211
209
  maxB = rangeB?.max;
212
210
 
@@ -11,8 +11,8 @@ import {min, max} from 'lodash';
11
11
  export class RangeAggregator extends Aggregator {
12
12
 
13
13
  override aggregate(rows, fieldName) {
14
- const minVals = rows.map(row => row.isLeaf ? row.data[fieldName] : row.data[fieldName].min),
15
- maxVals = rows.map(row => row.isLeaf ? row.data[fieldName] : row.data[fieldName].max);
14
+ const minVals = rows.map(row => row.data[fieldName].min),
15
+ maxVals = rows.map(row => row.data[fieldName].max);
16
16
 
17
17
  return {min: min(minVals), max: max(maxVals)};
18
18
  }
@@ -26,9 +26,8 @@ export class RangeAggregator extends Aggregator {
26
26
 
27
27
  if (newValue == null) return currAgg;
28
28
 
29
- const valFromLeaf = rows[0].isLeaf,
30
- minToCheck = valFromLeaf ? newValue : newValue.min,
31
- maxToCheck = valFromLeaf ? newValue : newValue.max,
29
+ const minToCheck = newValue.min,
30
+ maxToCheck = newValue.max,
32
31
  newAgg = {...currAgg};
33
32
 
34
33
  if (minToCheck < currAgg.min) newAgg.min = minToCheck;
@@ -16,7 +16,7 @@ import moment from 'moment';
16
16
 
17
17
  export class ClientErrorsModel extends HoistModel {
18
18
 
19
- persistWith = {localStorageKey: 'xhAdminClientErrorsState'};
19
+ override persistWith = {localStorageKey: 'xhAdminClientErrorsState'};
20
20
 
21
21
  @bindable.ref startDay: LocalDate;
22
22
  @bindable.ref endDay: LocalDate;
@@ -21,7 +21,7 @@ export const PERSIST_ACTIVITY = {localStorageKey: 'xhAdminActivityState'};
21
21
 
22
22
  export class ActivityTrackingModel extends HoistModel {
23
23
 
24
- persistWith = PERSIST_ACTIVITY;
24
+ override persistWith = PERSIST_ACTIVITY;
25
25
 
26
26
  @managed formModel: FormModel;
27
27
  @managed groupingChooserModel: GroupingChooserModel;
@@ -66,21 +66,22 @@ export class ActivityTrackingModel extends HoistModel {
66
66
 
67
67
  this.cube = new Cube({
68
68
  fields: [
69
- Col.browser.field as CubeFieldSpec,
70
- Col.category.field as CubeFieldSpec,
71
- Col.data.field as CubeFieldSpec,
69
+ Col.browser.field,
70
+ Col.category.field,
71
+ Col.data.field,
72
72
  {...Col.dateCreated.field as FieldSpec, displayName: 'Timestamp'},
73
- Col.day.field as CubeFieldSpec,
74
- Col.device.field as CubeFieldSpec,
75
- Col.elapsed.field as CubeFieldSpec,
76
- Col.entryCount.field as CubeFieldSpec,
77
- Col.impersonating.field as CubeFieldSpec,
78
- Col.msg.field as CubeFieldSpec,
79
- Col.userAgent.field as CubeFieldSpec,
80
- Col.username.field as CubeFieldSpec,
73
+ Col.day.field,
74
+ Col.dayRange.field,
75
+ Col.device.field,
76
+ Col.elapsed.field,
77
+ Col.entryCount.field,
78
+ Col.impersonating.field,
79
+ Col.msg.field,
80
+ Col.userAgent.field,
81
+ Col.username.field,
81
82
  {name: 'count', type: 'int', aggregator: 'CHILD_COUNT'},
82
83
  {name: 'month', type: 'string', isDimension: true, aggregator: 'UNIQUE'}
83
- ]
84
+ ] as CubeFieldSpec[]
84
85
  });
85
86
 
86
87
  this.groupingChooserModel = new GroupingChooserModel({
@@ -162,7 +163,7 @@ export class ActivityTrackingModel extends HoistModel {
162
163
  {...Col.userAgent, hidden},
163
164
  {...Col.impersonating, hidden},
164
165
  {...Col.elapsed, headerName: 'Elapsed (avg)', hidden},
165
- {...Col.dateRange, hidden},
166
+ {...Col.dayRange, hidden},
166
167
  {...Col.entryCount},
167
168
  {field: 'count', hidden}
168
169
  ]
@@ -203,6 +204,7 @@ export class ActivityTrackingModel extends HoistModel {
203
204
  data.forEach(it => {
204
205
  it.day = LocalDate.from(it.day);
205
206
  it.month = it.day.format(this._monthFormat);
207
+ it.dayRange = {min: it.day, max: it.day};
206
208
  });
207
209
 
208
210
  await cube.loadDataAsync(data);
@@ -291,8 +293,8 @@ export class ActivityTrackingModel extends HoistModel {
291
293
  if (rawVal == null) return null;
292
294
 
293
295
  switch (dim) {
294
- // Days are min/max ranges of LocalDates - sort by max date, desc.
295
- case 'day': return rawVal.max.timestamp * -1;
296
+ // Sort date desc by default
297
+ case 'day': return rawVal.timestamp * -1;
296
298
  // Months are formatted "June 2020" strings - sort desc.
297
299
  case 'month': return moment(rawVal, this._monthFormat).valueOf() * -1;
298
300
  // Everything else can sort with its natural value.
@@ -24,7 +24,7 @@ import {FieldSpec} from '@xh/hoist/data';
24
24
 
25
25
  export class ConfigPanelModel extends HoistModel {
26
26
 
27
- persistWith = {localStorageKey: 'xhAdminConfigState'};
27
+ override persistWith = {localStorageKey: 'xhAdminConfigState'};
28
28
 
29
29
  @managed
30
30
  regroupDialogModel = new RegroupDialogModel(this);
@@ -12,7 +12,7 @@ import {keyBy, keys} from 'lodash';
12
12
 
13
13
  export class UserModel extends HoistModel {
14
14
 
15
- persistWith = {localStorageKey: 'xhAdminUserState'};
15
+ override persistWith = {localStorageKey: 'xhAdminUserState'};
16
16
 
17
17
  @bindable activeOnly = true;
18
18
  @bindable withRolesOnly = false;
@@ -12,7 +12,7 @@ import {trimEnd} from 'lodash';
12
12
 
13
13
  export class EhCacheModel extends HoistModel {
14
14
 
15
- persistWith = {localStorageKey: 'xhAdminEhCacheState'};
15
+ override persistWith = {localStorageKey: 'xhAdminEhCacheState'};
16
16
 
17
17
  @managed
18
18
  gridModel = new GridModel({
@@ -19,7 +19,7 @@ import {LogViewerModel} from './LogViewerModel';
19
19
  */
20
20
  export class LogDisplayModel extends HoistModel {
21
21
 
22
- persistWith = {localStorageKey: 'xhAdminLogViewerState'};
22
+ override persistWith = {localStorageKey: 'xhAdminLogViewerState'};
23
23
 
24
24
  parent: LogViewerModel;
25
25
 
@@ -21,7 +21,7 @@ import {FieldSpec} from '@xh/hoist/data';
21
21
 
22
22
  export class JsonBlobModel extends HoistModel {
23
23
 
24
- persistWith = {localStorageKey: 'xhAdminJsonBlobState'};
24
+ override persistWith = {localStorageKey: 'xhAdminJsonBlobState'};
25
25
 
26
26
  @managed
27
27
  gridModel: RestGridModel;
@@ -22,7 +22,7 @@ import {FieldSpec} from '@xh/hoist/data';
22
22
 
23
23
  export class PreferenceModel extends HoistModel {
24
24
 
25
- persistWith = {localStorageKey: 'xhAdminPreferenceState'};
25
+ override persistWith = {localStorageKey: 'xhAdminPreferenceState'};
26
26
 
27
27
  @managed
28
28
  regroupDialogModel = new RegroupDialogModel(this);
@@ -15,7 +15,7 @@ import {isNull} from 'lodash';
15
15
  * @internal
16
16
  */
17
17
  export class AboutDialogModel extends HoistModel {
18
- xhImpl = true;
18
+ override xhImpl = true;
19
19
 
20
20
  @observable
21
21
  isOpen: boolean = false;
@@ -11,7 +11,7 @@ import {BannerSpec, HoistModel} from '@xh/hoist/core';
11
11
  * @internal
12
12
  */
13
13
  export class BannerModel extends HoistModel {
14
- xhImpl = true;
14
+ override xhImpl = true;
15
15
 
16
16
  // Immutable public properties
17
17
  category;
@@ -16,7 +16,7 @@ import {BannerModel} from './BannerModel';
16
16
  * @internal
17
17
  */
18
18
  export class BannerSourceModel extends HoistModel {
19
- xhImpl = true;
19
+ override xhImpl = true;
20
20
 
21
21
  @managed
22
22
  @observable.ref
@@ -9,7 +9,7 @@ import {action, observable, makeObservable} from '@xh/hoist/mobx';
9
9
  import {throwIf} from '@xh/hoist/utils/js';
10
10
 
11
11
  export class ChangelogDialogModel extends HoistModel {
12
- xhImpl = true;
12
+ override xhImpl = true;
13
13
 
14
14
  @observable isOpen: boolean = false;
15
15
 
@@ -20,12 +20,12 @@ export class ErrorBoundary extends Component {
20
20
  this.state = {caughtError: null, onError: props.onError};
21
21
  }
22
22
 
23
- render() {
23
+ override render() {
24
24
  // @ts-ignore
25
25
  return this.state.caughtError ? 'An error occurred while rendering this Component.' : this.props.children ?? null;
26
26
  }
27
27
 
28
- componentDidCatch(e, info) {
28
+ override componentDidCatch(e, info) {
29
29
  XH.handleException(e, {requireReload: true});
30
30
  }
31
31
 
@@ -16,7 +16,7 @@ import {action, observable, makeObservable, bindable} from '@xh/hoist/mobx';
16
16
  * @internal
17
17
  */
18
18
  export class ExceptionDialogModel extends HoistModel {
19
- xhImpl = true;
19
+ override xhImpl = true;
20
20
 
21
21
  @observable.ref
22
22
  displayData: {exception: any, options: any};
@@ -13,7 +13,7 @@ import {stripTags} from '@xh/hoist/utils/js';
13
13
  * @internal
14
14
  */
15
15
  export class FeedbackDialogModel extends HoistModel {
16
- xhImpl = true;
16
+ override xhImpl = true;
17
17
 
18
18
  @observable isOpen: boolean = false;
19
19
  @observable message: string = null;
@@ -12,7 +12,7 @@ import {throwIf} from '@xh/hoist/utils/js';
12
12
  * @internal
13
13
  */
14
14
  export class ImpersonationBarModel extends HoistModel {
15
- xhImpl = true;
15
+ override xhImpl = true;
16
16
 
17
17
  @observable showRequested: boolean = false;
18
18
  @observable.ref targets: string[] = [];
@@ -17,7 +17,7 @@ import {isEmpty} from 'lodash';
17
17
  * @internal
18
18
  */
19
19
  export class MessageModel extends HoistModel {
20
- xhImpl = true;
20
+ override xhImpl = true;
21
21
 
22
22
  // Immutable properties
23
23
  title;
@@ -132,7 +132,7 @@ export class MessageModel extends HoistModel {
132
132
  //-----------------------
133
133
  // Implementation
134
134
  //-----------------------
135
- destroy() {
135
+ override destroy() {
136
136
  this.close();
137
137
  super.destroy();
138
138
  }
@@ -16,7 +16,7 @@ import {MessageModel} from './MessageModel';
16
16
  * @internal
17
17
  */
18
18
  export class MessageSourceModel extends HoistModel {
19
- xhImpl = true;
19
+ override xhImpl = true;
20
20
 
21
21
  @managed
22
22
  @observable.ref
@@ -17,7 +17,7 @@ import {AppOption} from './AppOption';
17
17
  * @internal
18
18
  */
19
19
  export class OptionsDialogModel extends HoistModel {
20
- xhImpl = true;
20
+ override xhImpl = true;
21
21
 
22
22
  @observable isOpen = false;
23
23
  @observable.ref options = [];
@@ -13,7 +13,7 @@ import {values, isPlainObject} from 'lodash';
13
13
  * @internal
14
14
  */
15
15
  export class SizingModeModel extends HoistModel {
16
- xhImpl = true;
16
+ override xhImpl = true;
17
17
 
18
18
  @observable
19
19
  sizingMode: SizingMode = null;
@@ -11,7 +11,7 @@ import {action, observable, makeObservable} from '@xh/hoist/mobx';
11
11
  * @internal
12
12
  */
13
13
  export class ThemeModel extends HoistModel {
14
- xhImpl = true;
14
+ override xhImpl = true;
15
15
 
16
16
  @observable
17
17
  darkTheme: boolean;
@@ -20,7 +20,7 @@ import {ReactNode, ReactElement} from 'react';
20
20
  * will have no effect.
21
21
  */
22
22
  export class ToastModel extends HoistModel {
23
- xhImpl = true;
23
+ override xhImpl = true;
24
24
 
25
25
  message: ReactNode;
26
26
  icon: ReactElement;
@@ -58,7 +58,7 @@ export class ToastModel extends HoistModel {
58
58
  this.isOpen = false;
59
59
  }
60
60
 
61
- destroy() {
61
+ override destroy() {
62
62
  this.dismiss();
63
63
  super.destroy();
64
64
  }
@@ -14,7 +14,7 @@ import {ToastModel} from './ToastModel';
14
14
  * @internal
15
15
  */
16
16
  export class ToastSourceModel extends HoistModel {
17
- xhImpl = true;
17
+ override xhImpl = true;
18
18
 
19
19
  @managed
20
20
  @observable.ref
@@ -15,7 +15,7 @@ import {isFinite, isString} from 'lodash';
15
15
  * @internal
16
16
  */
17
17
  export class ViewportSizeModel extends HoistModel {
18
- xhImpl = true;
18
+ override xhImpl = true;
19
19
 
20
20
  @observable.ref
21
21
  size: {width: number, height: number};
@@ -112,7 +112,7 @@ export const [AgGrid, agGrid] = hoistCmp.withFactory<AgGridProps>({
112
112
  })(AgGrid);
113
113
 
114
114
  class AgGridLocalModel extends HoistModel {
115
- xhImpl = true;
115
+ override xhImpl = true;
116
116
 
117
117
  @lookup(AgGridModel) model: AgGridModel;
118
118
 
@@ -91,7 +91,7 @@ export const [Chart, chart] = hoistCmp.withFactory<ChartProps>({
91
91
 
92
92
 
93
93
  class ChartLocalModel extends HoistModel {
94
- xhImpl = true;
94
+ override xhImpl = true;
95
95
 
96
96
  @lookup(ChartModel)
97
97
  model: ChartModel;
@@ -100,7 +100,7 @@ class ChartLocalModel extends HoistModel {
100
100
  contextMenu: any;
101
101
  prevSeriesConfig;
102
102
 
103
- onLinked() {
103
+ override onLinked() {
104
104
  this.contextMenu = this.getContextMenu();
105
105
 
106
106
  this.addReaction({
@@ -222,7 +222,7 @@ class ChartLocalModel extends HoistModel {
222
222
  return {width, height};
223
223
  }
224
224
 
225
- destroy() {
225
+ override destroy() {
226
226
  this.destroyHighChart();
227
227
  super.destroy();
228
228
  }
@@ -59,7 +59,7 @@ export const [Clock, clock] = hoistCmp.withFactory<ClockProps>({
59
59
  });
60
60
 
61
61
  class ClockLocalModel extends HoistModel {
62
- xhImpl = true;
62
+ override xhImpl = true;
63
63
 
64
64
  offset;
65
65
  offsetException;
@@ -72,7 +72,7 @@ class ClockLocalModel extends HoistModel {
72
72
  makeObservable(this);
73
73
  }
74
74
 
75
- onLinked() {
75
+ override onLinked() {
76
76
  this.addReaction({
77
77
  track: () => this.componentProps.timeZone,
78
78
  run: () => this.loadTimezoneOffsetAsync(),
@@ -39,12 +39,12 @@ export const [DataView, dataView] = hoistCmp.withFactory<DataViewProps>({
39
39
  });
40
40
 
41
41
  class DataViewLocalModel extends HoistModel {
42
- xhImpl = true;
42
+ override xhImpl = true;
43
43
 
44
44
  @lookup(DataViewModel) model: DataViewModel;
45
45
  agOptions: PlainObject;
46
46
 
47
- onLinked() {
47
+ override onLinked() {
48
48
  const {model} = this;
49
49
 
50
50
  this.addReaction({
@@ -219,7 +219,7 @@ export class DataViewModel extends HoistModel {
219
219
  return this.gridModel.ensureSelectionVisibleAsync();
220
220
  }
221
221
 
222
- doLoadAsync(loadSpec: LoadSpec) {
222
+ override doLoadAsync(loadSpec: LoadSpec) {
223
223
  return this.gridModel.doLoadAsync(loadSpec);
224
224
  }
225
225
 
package/cmp/grid/Grid.ts CHANGED
@@ -128,7 +128,7 @@ export const [Grid, grid] = hoistCmp.withFactory<GridProps>({
128
128
  // Implementation
129
129
  //------------------------
130
130
  class GridLocalModel extends HoistModel {
131
- xhImpl = true;
131
+ override xhImpl = true;
132
132
 
133
133
  @lookup(GridModel)
134
134
  private model: GridModel;
@@ -22,7 +22,7 @@ import {GridModel} from '../GridModel';
22
22
  * @internal
23
23
  */
24
24
  export class GridFilterModel extends HoistModel {
25
- xhImpl = true;
25
+ override xhImpl = true;
26
26
 
27
27
  gridModel: GridModel;
28
28
  bind: Store|View;
@@ -55,7 +55,7 @@ export const columnGroupHeader = hoistCmp.factory({
55
55
  });
56
56
 
57
57
  class ColumnGroupHeaderModel extends HoistModel {
58
- xhImpl = true;
58
+ override xhImpl = true;
59
59
 
60
60
  @bindable isExpanded = true;
61
61
 
@@ -72,12 +72,12 @@ class ColumnGroupHeaderModel extends HoistModel {
72
72
  makeObservable(this);
73
73
  }
74
74
 
75
- onLinked() {
75
+ override onLinked() {
76
76
  this.syncIsExpanded();
77
77
  this.agColumnGroup.addEventListener('expandedChanged', this.syncIsExpanded);
78
78
  }
79
79
 
80
- destroy() {
80
+ override destroy() {
81
81
  this.agColumnGroup.removeEventListener('expandedChanged', this.syncIsExpanded);
82
82
  super.destroy();
83
83
  }
@@ -128,7 +128,7 @@ export const columnHeader = hoistCmp.factory({
128
128
 
129
129
 
130
130
  class ColumnHeaderModel extends HoistModel {
131
- xhImpl = true;
131
+ override xhImpl = true;
132
132
 
133
133
  get gridModel() {return this.componentProps.gridModel}
134
134
  get xhColumn() {return this.componentProps.xhColumn}
@@ -157,7 +157,7 @@ class ColumnHeaderModel extends HoistModel {
157
157
  makeObservable(this);
158
158
  }
159
159
 
160
- onLinked() {
160
+ override onLinked() {
161
161
  const {xhColumn, agColumn} = this,
162
162
  {filterModel} = this.gridModel;
163
163
 
@@ -172,7 +172,7 @@ class ColumnHeaderModel extends HoistModel {
172
172
  }
173
173
  }
174
174
 
175
- destroy() {
175
+ override destroy() {
176
176
  this.agColumn.removeEventListener('filterChanged', this.onFilterChanged);
177
177
  super.destroy();
178
178
  }
@@ -16,7 +16,7 @@ import { GridModelPersistOptions } from '../Types';
16
16
  * @internal
17
17
  */
18
18
  export class GridPersistenceModel extends HoistModel {
19
- xhImpl = true;
19
+ override xhImpl = true;
20
20
 
21
21
  VERSION = 1; // Increment to abandon state.
22
22
 
@@ -109,7 +109,7 @@ export class HoistInputModel extends HoistModel {
109
109
  makeObservable(this);
110
110
  }
111
111
 
112
- afterLinked() {
112
+ override afterLinked() {
113
113
  this.addReaction(this.externalValueReaction());
114
114
  }
115
115
 
@@ -111,7 +111,7 @@ export const [TileFrame, tileFrame] = hoistCmp.withFactory({
111
111
  });
112
112
 
113
113
  class TileFrameLocalModel extends HoistModel {
114
- xhImpl = true;
114
+ override xhImpl = true;
115
115
 
116
116
  params;
117
117
  layout;
@@ -87,7 +87,7 @@ export const [RelativeTimestamp, relativeTimestamp] = hoistCmp.withFactory<Relat
87
87
  });
88
88
 
89
89
  class RelativeTimestampLocalModel extends HoistModel {
90
- xhImpl = true;
90
+ override xhImpl = true;
91
91
 
92
92
  @observable display = '';
93
93
  model: HoistModel;
@@ -26,7 +26,7 @@ import {
26
26
  * @internal
27
27
  */
28
28
  export class StoreFilterFieldImplModel extends HoistModel {
29
- xhImpl = true;
29
+ override xhImpl = true;
30
30
 
31
31
  @lookup('*') model;
32
32
 
@@ -41,7 +41,7 @@ export class StoreFilterFieldImplModel extends HoistModel {
41
41
  makeObservable(this);
42
42
  }
43
43
 
44
- onLinked() {
44
+ override onLinked() {
45
45
  let {gridModel, store, includeFields, bind, filterBuffer = 200} = this.componentProps;
46
46
 
47
47
  throwIf(gridModel && store, "Cannot specify both 'gridModel' and 'store' props.");