@adaptabletools/adaptable 14.0.1-canary.0 → 14.0.1-canary.1

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adaptabletools/adaptable",
3
- "version": "14.0.1-canary.0",
3
+ "version": "14.0.1-canary.1",
4
4
  "description": "Powerful data-agnostic HTML5 AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements",
5
5
  "keywords": [
6
6
  "web-components",
@@ -1,2 +1,2 @@
1
- declare const _default: 1672558364064;
1
+ declare const _default: 1672761030413;
2
2
  export default _default;
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = 1672558364064;
3
+ exports.default = 1672761030413;
@@ -1,18 +1,20 @@
1
1
  import { AdaptableApi } from '../Api/AdaptableApi';
2
2
  import { ReactElement } from 'react';
3
+ import { BaseContext } from '../types';
4
+ /**
5
+ * Base Component for Bespoke Components - Can be Angular or React
6
+ */
3
7
  export declare type AdaptableFrameworkComponent = AngularFrameworkComponent | ReactFrameworkComponent;
4
8
  /**
5
- * An Angular component defined by its type and an optional initialisation callback.
9
+ * Angular component defined by its type and (optional) initialisation callback
6
10
  */
7
11
  export declare type AngularFrameworkComponent<T = unknown> = {
8
12
  /**
9
- * The angular component class (instance of https://angular.io/api/core/Type).
10
- * It will be automatically instantiated at runtime and the `adaptableApi` is provided through an Injection token
13
+ * Angular component class (instance of https://angular.io/api/core/Type); will be automatically instantiated at runtime - `adaptableApi` is provided via Injection token
11
14
  */
12
15
  type: T;
13
16
  /**
14
- * Optional initialisation callback.
15
- * If provided, it will be invoked after each component instantiation and the returned object properties will be assigned to the component instance
17
+ * Optional initialisation callback; will be invoked after each component instantiation and returned object properties assigned to component instance
16
18
  */
17
19
  onSetup?: ({ adaptableApi }: {
18
20
  adaptableApi: AdaptableApi;
@@ -32,8 +34,13 @@ export declare type ReactFrameworkComponent = ({ adaptableApi, }: {
32
34
  /**
33
35
  * Context provided for any custom rendering
34
36
  */
35
- export interface CustomRenderContext {
37
+ export interface CustomRenderContext extends BaseContext {
38
+ /**
39
+ * Whether Tool Panel is currently visible
40
+ */
36
41
  visible: boolean;
42
+ /**
43
+ * Current Div Element
44
+ */
37
45
  element: HTMLDivElement;
38
- adaptableApi: AdaptableApi;
39
46
  }
@@ -41,7 +41,7 @@ export interface CustomToolPanel extends AdaptableObject {
41
41
  */
42
42
  buttons?: AdaptableButton<CustomToolPanelButtonContext>[];
43
43
  /**
44
- * Function to provide bespoke content when NOT using a Framework wrapper
44
+ * Function to provide bespoke content when using AdapTable Vanilla
45
45
  */
46
46
  render?: (customRenderContext: CustomRenderContext) => string | null;
47
47
  /**
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export interface SpecialColumnSettings {
5
5
  /**
6
- * Expression's return value DataType; inferred by AdapTable but settable by User
6
+ * Expression's return value DataType, only mandatory property
7
7
  */
8
8
  DataType: 'String' | 'Number' | 'Boolean' | 'Date';
9
9
  /**
@@ -34,6 +34,13 @@ class CalculatedColumnModule extends AdaptableModuleBase_1.AdaptableModuleBase {
34
34
  oldCalculatedColumns.push(cc);
35
35
  (0, LoggingHelper_1.LogAdaptableWarning)(`Updating incorrect Predefined Config for Calculated Column: ${cc.ColumnId}`);
36
36
  }
37
+ if (!cc.CalculatedColumnSettings) {
38
+ cc.CalculatedColumnSettings = {
39
+ DataType: 'Number',
40
+ };
41
+ oldCalculatedColumns.push(cc);
42
+ (0, LoggingHelper_1.LogAdaptableWarning)(`Updating incorrect Predefined Config for Calculated Column: ${cc.ColumnId}`);
43
+ }
37
44
  });
38
45
  oldCalculatedColumns.forEach((oldCalcCol) => this.api.calculatedColumnApi.editCalculatedColumn(oldCalcCol));
39
46
  }
@@ -98,12 +98,10 @@ class ChartingModule extends AdaptableModuleBase_1.AdaptableModuleBase {
98
98
  },
99
99
  emptyView: 'To create a chart select a few cells and right click. Then select "Chart Range" from the context menu.',
100
100
  getStatusBarPanelProps: () => {
101
- const chartDefinitions = this.getModuleAdaptableObjects();
102
- const popover = chartDefinitions.length > 0 ? ChartingStatusBarPopover_1.ChartingStatusBarPopover : null;
103
- const content = popover ? 'See Charts' : 'No Charts';
101
+ const content = ChartingStatusBarPopover_1.ChartingStatusBarPopover;
104
102
  return {
105
103
  content,
106
- popover,
104
+ triggerActionOnWrapperClick: false,
107
105
  };
108
106
  },
109
107
  };
@@ -3,21 +3,26 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ChartingStatusBarPopover = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const React = tslib_1.__importStar(require("react"));
6
- const react_redux_1 = require("react-redux");
7
6
  const AdaptableContext_1 = require("../../AdaptableContext");
8
- const ChartingRedux = tslib_1.__importStar(require("../../../Redux/ActionsReducers/ChartingRedux"));
9
- const SelectList_1 = require("../../../components/SelectList");
10
- const ChartingStatusBarPopover = () => {
7
+ const ModuleConstants = tslib_1.__importStar(require("../../../Utilities/Constants/ModuleConstants"));
8
+ const useChartingElements_1 = require("./useChartingElements");
9
+ const rebass_1 = require("rebass");
10
+ const ChartingStatusBarPopover = (props) => {
11
11
  const adaptable = (0, AdaptableContext_1.useAdaptable)();
12
- const chartDefinitions = (0, react_redux_1.useSelector)(ChartingRedux.ChartingGetChartModels);
13
- const options = chartDefinitions.map((chartDefinition) => ({
14
- label: chartDefinition.Name,
15
- value: chartDefinition.Uuid,
16
- }));
17
- const handleChange = React.useCallback((option) => {
18
- const definition = chartDefinitions.find((cd) => cd.Uuid === option.value);
19
- adaptable.api.chartingApi.showChartDefinitionOnce(definition);
20
- }, [chartDefinitions]);
21
- return React.createElement(SelectList_1.SelectList, { options: options, onChange: handleChange });
12
+ const accessLevel = adaptable.api.internalApi
13
+ .getEntitlementService()
14
+ .getEntitlementAccessLevelForModule(ModuleConstants.ChartingModuleId);
15
+ const { chartSelector, containerSelector, chartButton, deleteButton, editButton } = (0, useChartingElements_1.useChartingElements)({
16
+ elementType: 'Statusbar',
17
+ accessLevel: accessLevel,
18
+ size: 'small',
19
+ });
20
+ return (React.createElement(rebass_1.Flex, { width: "100%", alignItems: "center" },
21
+ React.createElement(rebass_1.Box, null, chartSelector),
22
+ containerSelector && React.createElement(rebass_1.Box, { ml: 1 }, containerSelector),
23
+ React.createElement(rebass_1.Box, { ml: 1 },
24
+ chartButton,
25
+ deleteButton,
26
+ editButton)));
22
27
  };
23
28
  exports.ChartingStatusBarPopover = ChartingStatusBarPopover;
@@ -3,76 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ChartingViewPanel = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const React = tslib_1.__importStar(require("react"));
6
- const react_redux_1 = require("react-redux");
7
6
  const rebass_1 = require("rebass");
8
- const DropdownButton_1 = tslib_1.__importDefault(require("../../../components/DropdownButton"));
9
- const SimpleButton_1 = tslib_1.__importDefault(require("../../../components/SimpleButton"));
10
- const ChartingRedux = tslib_1.__importStar(require("../../../Redux/ActionsReducers/ChartingRedux"));
11
- const AdaptableHelper_1 = tslib_1.__importDefault(require("../../../Utilities/Helpers/AdaptableHelper"));
12
- const AdaptableContext_1 = require("../../AdaptableContext");
13
- const useChartState_1 = require("./useChartState");
14
- const DeleteChartButton_1 = require("./DeleteChartButton");
15
- const EditChartButton_1 = require("./EditChartButton");
7
+ const useChartingElements_1 = require("./useChartingElements");
16
8
  const ChartingViewPanel = (props) => {
17
- var _a, _b, _c;
18
- const adaptable = (0, AdaptableContext_1.useAdaptable)();
19
- const chartDefinitions = (0, react_redux_1.useSelector)(ChartingRedux.ChartingGetChartModels);
20
- const chartContainers = (_b = (_a = adaptable.adaptableOptions) === null || _a === void 0 ? void 0 : _a.chartingOptions) === null || _b === void 0 ? void 0 : _b.chartContainers;
21
- const [selectedChartId, setSelectedChartId] = React.useState(() => {
22
- // ID is kept in state becaus that does not change, the definition might change
23
- return chartDefinitions.length > 0 ? chartDefinitions[0].Uuid : null;
24
- });
25
- const selectedChart = chartDefinitions.find((chart) => chart.Uuid === selectedChartId);
26
- const accessLevel = AdaptableHelper_1.default.getAppropriateAccessLevel(selectedChart, props.accessLevel);
27
- const [selectedContainer, setSelectedContainer] = React.useState(null);
28
- const { isOpen, showChart, closeChart } = (0, useChartState_1.useChartState)(selectedChart);
29
- const options = chartDefinitions.map((chartDefinition) => ({
30
- label: chartDefinition.Name,
31
- value: chartDefinition.Uuid,
32
- onClick: () => {
33
- setSelectedChartId(chartDefinition.Uuid);
34
- },
35
- }));
36
- const hasCharts = options.length > 0;
37
- const isSelectedChart = hasCharts && selectedChart != null;
38
- let content = '';
39
- if (hasCharts && selectedChart) {
40
- content = (_c = chartDefinitions.find((chart) => chart.Uuid === selectedChart.Uuid)) === null || _c === void 0 ? void 0 : _c.Name;
41
- }
42
- else if (hasCharts) {
43
- content = 'Select Chart';
44
- }
45
- else {
46
- content = 'No Charts';
47
- }
48
9
  const elementType = props.viewType === 'Toolbar' ? 'DashboardToolbar' : 'ToolPanel';
49
- React.useEffect(() => {
50
- // select first
51
- if (!selectedChart && chartDefinitions.length > 0) {
52
- setSelectedChartId(chartDefinitions[0].Uuid);
53
- }
54
- }, [chartDefinitions]);
55
- const containerOptions = [
56
- {
57
- label: 'Ag Grid Window',
58
- onClick: () => {
59
- setSelectedContainer(null);
60
- },
61
- },
62
- ...(chartContainers
63
- ? chartContainers === null || chartContainers === void 0 ? void 0 : chartContainers.map((contianerDef) => ({
64
- label: contianerDef.name,
65
- onClick: () => {
66
- setSelectedContainer(contianerDef);
67
- },
68
- }))
69
- : []),
70
- ];
71
- const chartSelector = (React.createElement(DropdownButton_1.default, { width: "100%", columns: ['label'], className: `ab-${elementType}__Chart__select`, items: options, disabled: !hasCharts }, content));
72
- const containerSelector = Boolean(chartContainers === null || chartContainers === void 0 ? void 0 : chartContainers.length) && (React.createElement(DropdownButton_1.default, { width: "100%", columns: ['label'], items: containerOptions, disabled: !isSelectedChart }, (selectedContainer === null || selectedContainer === void 0 ? void 0 : selectedContainer.name) || 'Ag Grid Window'));
73
- const chartButton = (React.createElement(SimpleButton_1.default, { mr: 1, onClick: () => (isOpen ? closeChart() : showChart(selectedContainer)), disabled: !Boolean(selectedChart), variant: 'outlined', tone: 'neutral' }, isOpen ? 'Close' : 'Open'));
74
- const deleteButton = React.createElement(DeleteChartButton_1.DeleteChartButton, { chart: selectedChart, accessLevel: accessLevel });
75
- const editButton = (React.createElement(EditChartButton_1.EditChartButton, { chart: selectedChart, accessLevel: accessLevel, isOpen: isOpen }));
10
+ const { chartSelector, containerSelector, chartButton, deleteButton, editButton } = (0, useChartingElements_1.useChartingElements)({ elementType, accessLevel: props.accessLevel });
76
11
  if (elementType === 'DashboardToolbar') {
77
12
  return (React.createElement(rebass_1.Flex, { width: "100%", alignItems: "center" },
78
13
  React.createElement(rebass_1.Box, null, chartSelector),
@@ -3,5 +3,6 @@ import { AccessLevel, ChartDefinition } from '../../../types';
3
3
  export interface ButtonDeleteProps {
4
4
  chart: ChartDefinition;
5
5
  accessLevel: AccessLevel;
6
+ iconSize?: number;
6
7
  }
7
8
  export declare const DeleteChartButton: React.FunctionComponent<ButtonDeleteProps>;
@@ -7,6 +7,6 @@ const ButtonDelete_1 = require("../Buttons/ButtonDelete");
7
7
  const ChartingRedux = tslib_1.__importStar(require("../../../Redux/ActionsReducers/ChartingRedux"));
8
8
  const DeleteChartButton = (props) => {
9
9
  var _a;
10
- return (React.createElement(ButtonDelete_1.ButtonDelete, { disabled: !props.chart, ConfirmAction: ChartingRedux.ChartingDeleteChart((_a = props.chart) === null || _a === void 0 ? void 0 : _a.Name), ConfirmationMsg: `Are you sure you want to delete this Charts?`, ConfirmationTitle: 'Delete Charts', accessLevel: props.accessLevel }));
10
+ return (React.createElement(ButtonDelete_1.ButtonDelete, { iconSize: props.iconSize, disabled: !props.chart, ConfirmAction: ChartingRedux.ChartingDeleteChart((_a = props.chart) === null || _a === void 0 ? void 0 : _a.Name), ConfirmationMsg: `Are you sure you want to delete this Charts?`, ConfirmationTitle: 'Delete Charts', accessLevel: props.accessLevel }));
11
11
  };
12
12
  exports.DeleteChartButton = DeleteChartButton;
@@ -4,5 +4,6 @@ export interface EditChartButtonProps {
4
4
  chart: ChartDefinition;
5
5
  accessLevel: AccessLevel;
6
6
  isOpen: boolean;
7
+ iconSize?: number;
7
8
  }
8
9
  export declare const EditChartButton: React.FunctionComponent<EditChartButtonProps>;
@@ -9,7 +9,7 @@ const ModuleConstants = tslib_1.__importStar(require("../../../Utilities/Constan
9
9
  const react_redux_1 = require("react-redux");
10
10
  const EditChartButton = (props) => {
11
11
  const dispatch = (0, react_redux_1.useDispatch)();
12
- return (React.createElement(ButtonEdit_1.ButtonEdit, { tooltip: "Edit Chart",
12
+ return (React.createElement(ButtonEdit_1.ButtonEdit, { iconSize: props.iconSize, tooltip: "Edit Chart",
13
13
  // It gets complicated when a chart is both open and opened in edit wizard
14
14
  // There an be conflicts between the two open charts (preview and main) and the changes to the active chart may not be syncronized correctly.
15
15
  disabled: !props.chart || props.isOpen, accessLevel: props.accessLevel, onClick: () => dispatch(PopupRedux.PopupShowScreen(ModuleConstants.ChartingModuleId, 'Chart', {
@@ -0,0 +1,14 @@
1
+ /// <reference types="react" />
2
+ import { AccessLevel, ChartDefinition } from '../../../types';
3
+ export declare const useChartingElements: ({ elementType, accessLevel, size, }: {
4
+ elementType: string;
5
+ accessLevel: AccessLevel;
6
+ size?: 'small' | 'normal';
7
+ }) => {
8
+ chartSelector: JSX.Element;
9
+ containerSelector: JSX.Element;
10
+ chartButton: JSX.Element;
11
+ deleteButton: JSX.Element;
12
+ editButton: JSX.Element;
13
+ selectedChart: ChartDefinition;
14
+ };
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useChartingElements = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const React = tslib_1.__importStar(require("react"));
6
+ const react_redux_1 = require("react-redux");
7
+ const AdaptableContext_1 = require("../../AdaptableContext");
8
+ const DropdownButton_1 = tslib_1.__importDefault(require("../../../components/DropdownButton"));
9
+ const SimpleButton_1 = tslib_1.__importDefault(require("../../../components/SimpleButton"));
10
+ const ChartingRedux = tslib_1.__importStar(require("../../../Redux/ActionsReducers/ChartingRedux"));
11
+ const AdaptableHelper_1 = tslib_1.__importDefault(require("../../../Utilities/Helpers/AdaptableHelper"));
12
+ const useChartState_1 = require("./useChartState");
13
+ const DeleteChartButton_1 = require("./DeleteChartButton");
14
+ const EditChartButton_1 = require("./EditChartButton");
15
+ const useChartingElements = ({ elementType, accessLevel, size = 'normal', }) => {
16
+ var _a, _b, _c;
17
+ const adaptable = (0, AdaptableContext_1.useAdaptable)();
18
+ const chartDefinitions = (0, react_redux_1.useSelector)(ChartingRedux.ChartingGetChartModels);
19
+ const chartContainers = (_b = (_a = adaptable.adaptableOptions) === null || _a === void 0 ? void 0 : _a.chartingOptions) === null || _b === void 0 ? void 0 : _b.chartContainers;
20
+ const [selectedChartId, setSelectedChartId] = React.useState(() => {
21
+ // ID is kept in state becaus that does not change, the definition might change
22
+ return chartDefinitions.length > 0 ? chartDefinitions[0].Uuid : null;
23
+ });
24
+ const selectedChart = chartDefinitions.find((chart) => chart.Uuid === selectedChartId);
25
+ const chartAccessLevel = AdaptableHelper_1.default.getAppropriateAccessLevel(selectedChart, accessLevel);
26
+ const [selectedContainer, setSelectedContainer] = React.useState(null);
27
+ const { isOpen, showChart, closeChart } = (0, useChartState_1.useChartState)(selectedChart);
28
+ const options = chartDefinitions.map((chartDefinition) => ({
29
+ label: chartDefinition.Name,
30
+ value: chartDefinition.Uuid,
31
+ onClick: () => {
32
+ setSelectedChartId(chartDefinition.Uuid);
33
+ },
34
+ }));
35
+ const hasCharts = options.length > 0;
36
+ const isSelectedChart = hasCharts && selectedChart != null;
37
+ let content = '';
38
+ if (hasCharts && selectedChart) {
39
+ content = (_c = chartDefinitions.find((chart) => chart.Uuid === selectedChart.Uuid)) === null || _c === void 0 ? void 0 : _c.Name;
40
+ }
41
+ else if (hasCharts) {
42
+ content = 'Select Chart';
43
+ }
44
+ else {
45
+ content = 'No Charts';
46
+ }
47
+ React.useEffect(() => {
48
+ // select first
49
+ if (!selectedChart && chartDefinitions.length > 0) {
50
+ setSelectedChartId(chartDefinitions[0].Uuid);
51
+ }
52
+ }, [chartDefinitions]);
53
+ const containerOptions = [
54
+ {
55
+ label: 'Ag Grid Window',
56
+ onClick: () => {
57
+ setSelectedContainer(null);
58
+ },
59
+ },
60
+ ...(chartContainers
61
+ ? chartContainers === null || chartContainers === void 0 ? void 0 : chartContainers.map((contianerDef) => ({
62
+ label: contianerDef.name,
63
+ onClick: () => {
64
+ setSelectedContainer(contianerDef);
65
+ },
66
+ }))
67
+ : []),
68
+ ];
69
+ const style = {};
70
+ let iconSize;
71
+ if (size === 'small') {
72
+ style.padding = 2;
73
+ style.fontSize = 'small';
74
+ iconSize = 15;
75
+ }
76
+ const chartSelector = (React.createElement(DropdownButton_1.default, { style: style, width: "100%", columns: ['label'], className: `ab-${elementType}__Chart__select`, items: options, disabled: !hasCharts }, content));
77
+ const containerSelector = Boolean(chartContainers === null || chartContainers === void 0 ? void 0 : chartContainers.length) && (React.createElement(DropdownButton_1.default, { style: style, width: "100%", columns: ['label'], items: containerOptions, disabled: !isSelectedChart }, (selectedContainer === null || selectedContainer === void 0 ? void 0 : selectedContainer.name) || 'Ag Grid Window'));
78
+ const chartButton = (React.createElement(SimpleButton_1.default, { style: style, mr: 1, onClick: () => (isOpen ? closeChart() : showChart(selectedContainer)), disabled: !Boolean(selectedChart), variant: 'outlined', tone: 'neutral' }, isOpen ? 'Close' : 'Open'));
79
+ const deleteButton = (React.createElement(DeleteChartButton_1.DeleteChartButton, { iconSize: iconSize, chart: selectedChart, accessLevel: chartAccessLevel }));
80
+ const editButton = (React.createElement(EditChartButton_1.EditChartButton, { iconSize: iconSize, chart: selectedChart, accessLevel: chartAccessLevel, isOpen: isOpen }));
81
+ return {
82
+ chartSelector,
83
+ containerSelector,
84
+ chartButton,
85
+ deleteButton,
86
+ editButton,
87
+ selectedChart,
88
+ };
89
+ };
90
+ exports.useChartingElements = useChartingElements;
@@ -54,14 +54,15 @@ const getSharedEntityActiveStatusObjectView = (isDependency) => (props) => {
54
54
  if (isStaleAndActive) {
55
55
  statusInfo = (React.createElement(rebass_1.Box, { ml: 1, style: { color: 'var(--ab-color-warn)' } }, ` (Rev. ${newRevision} available)`));
56
56
  }
57
- activeInfo = (React.createElement(React.Fragment, null,
58
- `Imported Rev. ${activeRevision} ${isStaleAndActive ? 'is stale' : ''} `,
59
- " ",
57
+ activeInfo = activeRevision && (React.createElement(React.Fragment, null,
58
+ activeRevision &&
59
+ `Imported Rev. ${activeRevision} ${isStaleAndActive ? 'is stale' : ''} `,
60
+ ' ',
60
61
  statusInfo));
61
62
  }
62
63
  else {
63
64
  // snapshot
64
- activeInfo = React.createElement(React.Fragment, null, `Imported Rev. ${activeRevision}`);
65
+ activeInfo = activeRevision && React.createElement(React.Fragment, null, `Imported Rev. ${activeRevision}`);
65
66
  }
66
67
  }
67
68
  const sharedValue = `by ${sharedEntity.UserName} at ${new Date(sharedEntity.Timestamp).toLocaleString()}`;
@@ -351,7 +351,7 @@ class Adaptable {
351
351
  // the 'old' constructor which takes an Adaptable adaptable object
352
352
  // this is still used internally but should not be used externally as a preference
353
353
  async init(adaptableOptions, runtimeConfig, _staticInit) {
354
- var _a, _b, _c, _d, _e, _f, _g;
354
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
355
355
  if (runtimeConfig) {
356
356
  this.supressReact18RenderWarning = !!runtimeConfig.supressReact18RenderWarning;
357
357
  if (runtimeConfig.renderReactRoot) {
@@ -459,6 +459,8 @@ class Adaptable {
459
459
  abColDefObject: (_e = this.gridOptions.columnTypes.abColDefObject) !== null && _e !== void 0 ? _e : {},
460
460
  abColDefCustom: (_f = this.gridOptions.columnTypes.abColDefCustom) !== null && _f !== void 0 ? _f : {},
461
461
  abColDefNumberArray: (_g = this.gridOptions.columnTypes.abColDefNumberArray) !== null && _g !== void 0 ? _g : {},
462
+ abColDefTupleNumberArray: (_h = this.gridOptions.columnTypes.abColDefTupleNumberArray) !== null && _h !== void 0 ? _h : {},
463
+ abColDefObjectNumberArray: (_j = this.gridOptions.columnTypes.abColDefObjectNumberArray) !== null && _j !== void 0 ? _j : {},
462
464
  });
463
465
  if (this.gridOptions.columnTypes.abColDefNumber.cellEditor === undefined) {
464
466
  this.gridOptions.columnTypes.abColDefNumber.cellEditor =
@@ -1442,9 +1444,12 @@ class Adaptable {
1442
1444
  shouldUpdateHeaders = this.setupColumnHeader(colSetupInfo) || shouldUpdateHeaders;
1443
1445
  });
1444
1446
  isChanged = isChanged || shouldUpdateHeaders;
1445
- if (ArrayExtensions_1.ArrayExtensions.IsNotNullOrEmpty(layout.ColumnFilters)) {
1446
- this.gridOptions.api.onFilterChanged();
1447
- }
1447
+ // this is NOT really needed?!
1448
+ // without it everything seem to still work as expected
1449
+ // and the setLayout() execution time is shorter, so a double win
1450
+ // if (ArrayExtensions.IsNotNullOrEmpty(layout.ColumnFilters)) {
1451
+ // this.gridOptions.api!.onFilterChanged();
1452
+ // }
1448
1453
  if (isChanged) {
1449
1454
  // it's important we set pivot mode
1450
1455
  // before we set column state
@@ -470,6 +470,11 @@ export declare const ADAPTABLE_METAMODEL: {
470
470
  reference?: undefined;
471
471
  })[];
472
472
  };
473
+ AdaptableFrameworkComponent: {
474
+ name: string;
475
+ kind: string;
476
+ description: string;
477
+ };
473
478
  AdaptableIcon: {
474
479
  name: string;
475
480
  kind: string;
@@ -2072,6 +2077,19 @@ export declare const ADAPTABLE_METAMODEL: {
2072
2077
  name: string;
2073
2078
  kind: string;
2074
2079
  description: string;
2080
+ properties: ({
2081
+ name: string;
2082
+ kind: string;
2083
+ description: string;
2084
+ uiLabel: string;
2085
+ reference: string;
2086
+ } | {
2087
+ name: string;
2088
+ kind: string;
2089
+ description: string;
2090
+ uiLabel: string;
2091
+ reference?: undefined;
2092
+ })[];
2075
2093
  };
2076
2094
  CustomSettingsPanel: {
2077
2095
  name: string;