@adaptabletools/adaptable 11.0.0-canary.0 → 11.0.0-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.
Files changed (36) hide show
  1. package/base.css +13 -9
  2. package/bundle.cjs.js +88 -88
  3. package/index.css +13 -9
  4. package/package.json +1 -1
  5. package/publishTimestamp.d.ts +1 -1
  6. package/publishTimestamp.js +1 -1
  7. package/src/AdaptableInterfaces/IAdaptable.d.ts +0 -1
  8. package/src/AdaptableOptions/DashboardOptions.d.ts +3 -2
  9. package/src/AdaptableOptions/GeneralOptions.d.ts +1 -1
  10. package/src/AdaptableOptions/TeamSharingOptions.d.ts +1 -1
  11. package/src/Api/Events/SearchChanged.d.ts +1 -1
  12. package/src/Api/Implementation/InternalApiImpl.d.ts +0 -1
  13. package/src/Api/Implementation/InternalApiImpl.js +0 -8
  14. package/src/Api/InternalApi.d.ts +0 -1
  15. package/src/PredefinedConfig/DashboardState.d.ts +4 -4
  16. package/src/Redux/ActionsReducers/DashboardRedux.d.ts +0 -7
  17. package/src/Redux/ActionsReducers/DashboardRedux.js +1 -11
  18. package/src/Redux/Store/AdaptableStore.js +0 -1
  19. package/src/View/AdaptableView.js +1 -1
  20. package/src/View/CalculatedColumn/Wizard/CalculatedColumnSettingsWizardSection.js +10 -23
  21. package/src/View/Components/Popups/AdaptablePopup/Navigation.js +1 -1
  22. package/src/View/FlashingCell/Wizard/{FlashingCellDurationWizardSection.d.ts → FlashingCellSettingsWizardSection.d.ts} +3 -3
  23. package/src/View/FlashingCell/Wizard/FlashingCellSettingsWizardSection.js +66 -0
  24. package/src/View/FlashingCell/Wizard/FlashingCellWizard.js +4 -4
  25. package/src/View/FreeTextColumn/Wizard/FreeTextColumnSettingsWizardSection.js +8 -3
  26. package/src/View/FreeTextColumn/Wizard/FreeTextColumnWizard.js +1 -0
  27. package/src/View/SpecialColumnSettingsWizardStep.d.ts +9 -0
  28. package/src/View/SpecialColumnSettingsWizardStep.js +62 -0
  29. package/src/agGrid/Adaptable.js +2 -3
  30. package/src/components/Dashboard/Dashboard.js +1 -1
  31. package/src/components/WindowModal/WindowModal.js +17 -2
  32. package/src/components/utils/useDraggable.js +2 -1
  33. package/src/metamodel/adaptable.metamodel.js +10 -10
  34. package/version.d.ts +1 -1
  35. package/version.js +1 -1
  36. package/src/View/FlashingCell/Wizard/FlashingCellDurationWizardSection.js +0 -60
package/index.css CHANGED
@@ -3689,26 +3689,30 @@ html.ab--theme-dark .ab-ListBoxFilterForm--aggrid-style {
3689
3689
  border-style: none;
3690
3690
  --ab-toast-cmp__shadow-color: var(--ab-color-accent);
3691
3691
  box-shadow: 0 0 7px 2px var(--ab-toast-cmp__shadow-color);
3692
- background: var(--ab-toast-cmp__shadow-color); }
3692
+ background: var(--ab-toast-cmp__shadow-color);
3693
+ --toastify-text-color-info: var(--ab-color-text-on-primary);
3694
+ --toastify-text-color-success: var(--ab-color-text-on-primary);
3695
+ --toastify-text-color-warning: var(--ab-color-text-on-primary);
3696
+ --toastify-text-color-error: var(--ab-color-text-on-primary);
3697
+ --toastify-color-info: var(--ab-color-info);
3698
+ --toastify-color-success: var(--ab-color-success);
3699
+ --toastify-color-warning: var(--ab-color-warn);
3700
+ --toastify-color-error: var(--ab-color-error); }
3693
3701
 
3694
3702
  .Toastify__toast-body {
3695
3703
  padding: 0; }
3696
3704
 
3697
3705
  .Toastify__toast--info {
3698
- --ab-toast-cmp__shadow-color: var(--ab-color-info);
3699
- color: var(--ab-color-text-on-primary); }
3706
+ --ab-toast-cmp__shadow-color: var(--ab-color-info); }
3700
3707
 
3701
3708
  .Toastify__toast--success {
3702
- --ab-toast-cmp__shadow-color: var(--ab-color-success);
3703
- color: var(--ab-color-text-on-primary); }
3709
+ --ab-toast-cmp__shadow-color: var(--ab-color-success); }
3704
3710
 
3705
3711
  .Toastify__toast--warning {
3706
- --ab-toast-cmp__shadow-color: var(--ab-color-warn);
3707
- color: var(--ab-color-text-on-primary); }
3712
+ --ab-toast-cmp__shadow-color: var(--ab-color-warn); }
3708
3713
 
3709
3714
  .Toastify__toast--error {
3710
- --ab-toast-cmp__shadow-color: var(--ab-color-error);
3711
- color: var(--ab-color-text-on-primary); }
3715
+ --ab-toast-cmp__shadow-color: var(--ab-color-error); }
3712
3716
 
3713
3717
  .ab--custom-mac-like-scrollbars .ab-Grid * ::-webkit-scrollbar,
3714
3718
  .ab--custom-mac-like-scrollbars .ag-root * ::-webkit-scrollbar,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adaptabletools/adaptable",
3
- "version": "11.0.0-canary.0",
3
+ "version": "11.0.0-canary.1",
4
4
  "description": "Powerful data-agnostic HTML5 datagrid add-on that sits on top of an underlying grid component and provides all the rich functionality that advanced users expect from their DataGrids and Data Tables",
5
5
  "main": "index.js",
6
6
  "typings": "index.d.ts",
@@ -1,2 +1,2 @@
1
- declare const _default: 1643291530490;
1
+ declare const _default: 1643749744379;
2
2
  export default _default;
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = 1643291530490;
3
+ exports.default = 1643749744379;
@@ -75,7 +75,6 @@ export interface IAdaptable {
75
75
  _on(eventName: 'GridRefreshed', callback: () => void): () => void;
76
76
  _on(eventName: 'GridFiltered', callback: () => void): () => void;
77
77
  _on(eventName: 'SortChanged', callback: (columnSorts: ColumnSort[]) => void): () => void;
78
- _on(eventName: 'ColumnResized', callback: (colId: string) => void): () => void;
79
78
  _on(eventName: 'KeyDown', callback: (keyDownEvent: any) => void): () => void;
80
79
  _on(eventName: 'CellEditorKeyDown', callback: (param: {
81
80
  keyDownEvent: KeyboardEvent;
@@ -15,14 +15,14 @@ export interface DashboardOptions {
15
15
  */
16
16
  canFloat?: boolean;
17
17
  /**
18
- * Shows Quick Search textbox in the Dashboard Header; the UI component is still subject to the QuickSearch Entitlements
18
+ * Shows Quick Search textbox in the Dashboard Header
19
19
  *
20
20
  * @defaultValue true
21
21
  * @gridInfoItem
22
22
  */
23
23
  showQuickSearchInHeader?: boolean;
24
24
  /**
25
- * Custom Adaptable Buttons to appear in top corner of Dashboard - next to Module Buttons
25
+ * Custom Adaptable Buttons to appear in Dashboard (alongside Module Buttons)
26
26
  */
27
27
  customDashboardButtons?: AdaptableButton<DashboardButtonContext>[];
28
28
  /**
@@ -30,6 +30,7 @@ export interface DashboardOptions {
30
30
  */
31
31
  customToolbars?: CustomToolbar[];
32
32
  /**
33
+ * Position in the Dashboard to show the Module and Custom Buttons
33
34
  * @defaultValue 'right'
34
35
  */
35
36
  buttonsLocation?: 'left' | 'right';
@@ -71,7 +71,7 @@ export interface GeneralOptions {
71
71
  */
72
72
  customSortComparers?: ColumnValuesComparer[];
73
73
  /**
74
- * Keep case sensitivity when AdapTableQL evaluates string-based Expressions and Predicates
74
+ * Perform case-sensitive text comparisons in all search and filter operations: QuickSearch, Filters, Query, Predicates
75
75
  *
76
76
  * @defaultValue false
77
77
  * @gridInfoItem
@@ -30,7 +30,7 @@ export interface TeamSharingOptions {
30
30
  */
31
31
  updateInterval?: number;
32
32
  /**
33
- * How user is informed when Active Shared Entities have newer revisions: can be 'Alert', 'AlertWithNotification' or 'SystemStatus'
33
+ * How user is informed when Active Shared Entities have newer revisions
34
34
  *
35
35
  * @defaultValue null (none)
36
36
  * @gridInfoItem
@@ -8,7 +8,7 @@ import { BaseEventInfo } from './BaseEventInfo';
8
8
  */
9
9
  export interface SearchChangedInfo extends BaseEventInfo {
10
10
  /**
11
- * What action caused event to fire: DataSource, CurrentQuery, Filter, DataChange or Sort
11
+ * What search-related change caused the event to fire
12
12
  */
13
13
  searchChangedTrigger: 'DataSource' | 'CurrentQuery' | 'Filter' | 'DataChange' | 'Sort';
14
14
  /**
@@ -73,7 +73,6 @@ export declare class InternalApiImpl extends ApiBase implements InternalApi {
73
73
  private createDataChangedInfoFromGridCell;
74
74
  setLastAppliedShortCut(gridCell: GridCell | undefined): void;
75
75
  updateCurrentDraftLayout(layout: Layout): void;
76
- setDefaultDashboardTab(): void;
77
76
  getPrimaryKey(): any;
78
77
  getAdaptableInstance(): IAdaptable;
79
78
  getAgGridInstance(): any;
@@ -7,7 +7,6 @@ const SystemRedux = tslib_1.__importStar(require("../../Redux/ActionsReducers/Sy
7
7
  const SystemRedux_1 = require("../../Redux/ActionsReducers/SystemRedux");
8
8
  const GridRedux = tslib_1.__importStar(require("../../Redux/ActionsReducers/GridRedux"));
9
9
  const LayoutRedux = tslib_1.__importStar(require("../../Redux/ActionsReducers/LayoutRedux"));
10
- const DashboardRedux = tslib_1.__importStar(require("../../Redux/ActionsReducers/DashboardRedux"));
11
10
  const AlertRedux = tslib_1.__importStar(require("../../Redux/ActionsReducers/AlertRedux"));
12
11
  const DeadRedux = tslib_1.__importStar(require("../../Redux/DeadRedux"));
13
12
  const ApiBase_1 = require("./ApiBase");
@@ -187,13 +186,6 @@ class InternalApiImpl extends ApiBase_1.ApiBase {
187
186
  updateCurrentDraftLayout(layout) {
188
187
  this.dispatchAction(LayoutRedux.LayoutUpdateCurrentDraft(layout));
189
188
  }
190
- setDefaultDashboardTab() {
191
- const dashboardTabs = this.adaptable.api.dashboardApi.getDashboardState().Tabs;
192
- if (ArrayExtensions_1.default.IsNull(dashboardTabs)) {
193
- LoggingHelper_1.LogAdaptableInfo('Creating a default Dashboard tab');
194
- this.dispatchAction(DashboardRedux.DashboardCreateDefaultTab());
195
- }
196
- }
197
189
  getPrimaryKey() {
198
190
  return this.adaptable.adaptableOptions.primaryKey;
199
191
  }
@@ -76,7 +76,6 @@ export interface InternalApi {
76
76
  getQueryPreviewData(): any;
77
77
  buildDataChangedInfo(config: Pick<DataChangedInfo, 'newValue' | 'oldValue' | 'column' | 'primaryKeyValue' | 'rowNode' | 'trigger'>): DataChangedInfo;
78
78
  setLastAppliedShortCut(gridCell: GridCell | undefined): void;
79
- setDefaultDashboardTab(): void;
80
79
  updateCurrentDraftLayout(layout: Layout): void;
81
80
  getPrimaryKey(): any;
82
81
  getAdaptableInstance(): IAdaptable;
@@ -35,16 +35,16 @@ export interface DashboardState extends ConfigState {
35
35
  */
36
36
  IsHidden?: boolean;
37
37
  /**
38
- * Position of Dashboard in 'floating mode' - set and stored by AdapTable
38
+ * Position of Dashboard when in 'floating mode'
39
39
  */
40
40
  FloatingPosition?: AdaptableCoordinate;
41
41
  /**
42
- * Module Buttons visible in Dasbhoard Header when application loads - open popup screen for associated AdapTable Module
43
- * @defaultValue Empty Array
42
+ * Module Buttons which open screen in Settings Panel for associated AdapTable Module
43
+ * @defaultValue ['SettingsPanel']
44
44
  */
45
45
  ModuleButtons?: AdaptableModuleButtons;
46
46
  /**
47
- * Title to display in Dashboard Header; if missing, 'adaptableId' property in Adaptable Options is used
47
+ * Title to display in Dashboard Header
48
48
  * @defaultValue `adaptableId` in Adaptable Options
49
49
  */
50
50
  DashboardTitle?: string;
@@ -35,10 +35,6 @@ export declare const DASHBOARD_SET_FLOATING_POSITION = "DASHBOARD_SET_FLOATING_P
35
35
  * @ReduxAction New Dashboard Tabs have been set
36
36
  */
37
37
  export declare const DASHBOARD_SET_TABS = "DASHBOARD_SET_TABS";
38
- /**
39
- * @ReduxAction A default Tab has been created
40
- */
41
- export declare const DASHBOARD_CREATE_DEFAULT_TAB = "DASHBOARD_CREATE_DEFAULT_TAB";
42
38
  /**
43
39
  * @ReduxAction A Toolbar has been closed
44
40
  */
@@ -85,8 +81,6 @@ export interface DashboardSetFloatingPositionAction extends Redux.Action {
85
81
  export interface DashboardCloseToolbarAction extends Redux.Action {
86
82
  toolbar: AdaptableDashboardToolbar;
87
83
  }
88
- export interface DashboardCreateDefaultTabAction extends Redux.Action {
89
- }
90
84
  export interface DashboardSetTabsAction extends Redux.Action {
91
85
  Tabs: DashboardTab[];
92
86
  }
@@ -109,7 +103,6 @@ export declare const DashboardSetIsHidden: (IsHidden: boolean) => DashboardSetIs
109
103
  export declare const DashboardSetIsInline: (IsInline: boolean) => DashboardSetIsInlineAction;
110
104
  export declare const DashboardSetFloatingPosition: (FloatingPosition: AdaptableCoordinate) => DashboardSetFloatingPositionAction;
111
105
  export declare const DashboardSetTabs: (Tabs: DashboardTab[]) => DashboardSetTabsAction;
112
- export declare const DashboardCreateDefaultTab: () => DashboardCreateDefaultTabAction;
113
106
  export declare const DashboardCloseToolbar: (toolbar: AdaptableDashboardToolbar) => DashboardCloseToolbarAction;
114
107
  export declare const DashboardSetTitle: (title: string) => DashboardSetTitleAction;
115
108
  export declare const DashboardReady: (dashboardState: DashboardState) => DashboardReadyAction;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DashboardReducer = exports.DashboardReady = exports.DashboardSetTitle = exports.DashboardCloseToolbar = exports.DashboardCreateDefaultTab = exports.DashboardSetTabs = exports.DashboardSetFloatingPosition = exports.DashboardSetIsInline = exports.DashboardSetIsHidden = exports.DashboardSetIsFloating = exports.DashboardSetIsCollapsed = exports.DashboardSetActiveTabIndex = exports.DashboardSetModuleButtons = exports.DASHBOARD_READY = exports.DASHBOARD_SET_TITLE = exports.DASHBOARD_CLOSE_TOOLBAR = exports.DASHBOARD_CREATE_DEFAULT_TAB = exports.DASHBOARD_SET_TABS = exports.DASHBOARD_SET_FLOATING_POSITION = exports.DASHBOARD_SET_IS_HIDDEN = exports.DASHBOARD_SET_IS_INLINE = exports.DASHBOARD_SET_IS_FLOATING = exports.DASHBOARD_SET_IS_COLLAPSED = exports.DASHBOARD_ACTIVE_TAB_INDEX_CHANGE = exports.DASHBOARD_SET_MODULE_BUTTONS = void 0;
3
+ exports.DashboardReducer = exports.DashboardReady = exports.DashboardSetTitle = exports.DashboardCloseToolbar = exports.DashboardSetTabs = exports.DashboardSetFloatingPosition = exports.DashboardSetIsInline = exports.DashboardSetIsHidden = exports.DashboardSetIsFloating = exports.DashboardSetIsCollapsed = exports.DashboardSetActiveTabIndex = exports.DashboardSetModuleButtons = exports.DASHBOARD_READY = exports.DASHBOARD_SET_TITLE = exports.DASHBOARD_CLOSE_TOOLBAR = exports.DASHBOARD_SET_TABS = exports.DASHBOARD_SET_FLOATING_POSITION = exports.DASHBOARD_SET_IS_HIDDEN = exports.DASHBOARD_SET_IS_INLINE = exports.DASHBOARD_SET_IS_FLOATING = exports.DASHBOARD_SET_IS_COLLAPSED = exports.DASHBOARD_ACTIVE_TAB_INDEX_CHANGE = exports.DASHBOARD_SET_MODULE_BUTTONS = void 0;
4
4
  const GeneralConstants_1 = require("../../Utilities/Constants/GeneralConstants");
5
5
  /**
6
6
  * @ReduxAction The Module Buttons have been set in the Dashboard
@@ -34,10 +34,6 @@ exports.DASHBOARD_SET_FLOATING_POSITION = 'DASHBOARD_SET_FLOATING_POSITION';
34
34
  * @ReduxAction New Dashboard Tabs have been set
35
35
  */
36
36
  exports.DASHBOARD_SET_TABS = 'DASHBOARD_SET_TABS';
37
- /**
38
- * @ReduxAction A default Tab has been created
39
- */
40
- exports.DASHBOARD_CREATE_DEFAULT_TAB = 'DASHBOARD_CREATE_DEFAULT_TAB';
41
37
  /**
42
38
  * @ReduxAction A Toolbar has been closed
43
39
  */
@@ -82,9 +78,6 @@ exports.DashboardSetTabs = (Tabs) => ({
82
78
  type: exports.DASHBOARD_SET_TABS,
83
79
  Tabs,
84
80
  });
85
- exports.DashboardCreateDefaultTab = () => ({
86
- type: exports.DASHBOARD_CREATE_DEFAULT_TAB,
87
- });
88
81
  exports.DashboardCloseToolbar = (toolbar) => ({
89
82
  toolbar,
90
83
  type: exports.DASHBOARD_CLOSE_TOOLBAR,
@@ -146,9 +139,6 @@ exports.DashboardReducer = (state = initialState, action) => {
146
139
  const { Tabs } = action;
147
140
  return Object.assign(Object.assign({}, state), { Tabs });
148
141
  }
149
- case exports.DASHBOARD_CREATE_DEFAULT_TAB: {
150
- return Object.assign(Object.assign({}, state), { Tabs: [{ Name: 'Toolbars', Toolbars: ['Query', 'Layout', 'Export', 'Filter'] }] });
151
- }
152
142
  case exports.DASHBOARD_CLOSE_TOOLBAR: {
153
143
  const actionTyped = action;
154
144
  const tabs = [].concat(state.Tabs);
@@ -693,7 +693,6 @@ const adaptableMiddleware = (adaptable) => function (middlewareAPI) {
693
693
  case DashboardRedux.DASHBOARD_SET_IS_HIDDEN:
694
694
  case DashboardRedux.DASHBOARD_SET_FLOATING_POSITION:
695
695
  case DashboardRedux.DASHBOARD_SET_TABS:
696
- case DashboardRedux.DASHBOARD_CREATE_DEFAULT_TAB:
697
696
  case DashboardRedux.DASHBOARD_CLOSE_TOOLBAR: {
698
697
  const oldDashboardState = middlewareAPI.getState().Dashboard;
699
698
  let returnAction = next(action);
@@ -27,7 +27,7 @@ class AdaptableView extends React.Component {
27
27
  Boolean(this.props.PopupState.ScreenPopup.ShowScreenPopup) && (React.createElement(AdaptablePopup_1.AdaptablePopup, { componentName: this.props.PopupState.ScreenPopup.ComponentName, componentModule: this.props.PopupState.ScreenPopup.ComponentModule, onHide: this.props.onCloseScreenPopup, api: this.props.AdaptableApi, onClearParams: () => this.props.onClearPopupParams(), moduleParams: this.props.PopupState.ScreenPopup.Params, moduleProps: this.props.PopupState.ScreenPopup.PopupProps })),
28
28
  React.createElement(ExportCustomDestinationFormPopups_1.ExportCustomDestinationFormPopups, { api: this.props.AdaptableApi }),
29
29
  React.createElement(react_toastify_1.ToastContainer, { limit: this.props.AdaptableApi.internalApi.getAdaptableOptions().notificationsOptions
30
- .maxNotifications, closeButton: false }),
30
+ .maxNotifications, closeButton: false, icon: false, theme: "colored" }),
31
31
  (watermark === null || watermark === void 0 ? void 0 : watermark.show) && React.createElement(License_1.LicenseWatermark, null, watermark === null || watermark === void 0 ? void 0 : watermark.text),
32
32
  React.createElement(ProgressIndicator_1.ProgressIndicator, null)));
33
33
  }
@@ -16,6 +16,7 @@ const Tabs_1 = require("../../../components/Tabs");
16
16
  const ValueSelector_1 = require("../../Components/ValueSelector");
17
17
  const Tag_1 = require("../../../components/Tag");
18
18
  const getCalculatedColumnSettingTags_1 = require("../Utilities/getCalculatedColumnSettingTags");
19
+ const SpecialColumnSettingsWizardStep_1 = require("../../SpecialColumnSettingsWizardStep");
19
20
  exports.renderCalculatedColumnSettingsSummary = (data) => {
20
21
  var _a;
21
22
  const options = getCalculatedColumnSettingTags_1.getCalculatedColumnSettingTags(data.CalculatedColumnSettings);
@@ -72,17 +73,15 @@ exports.CalculatedColumnSettingsWizardSection = (props) => {
72
73
  const ColumnName = data.FriendlyName;
73
74
  const ColumnId = data.ColumnId;
74
75
  let { DataType: dataType } = (_a = data.CalculatedColumnSettings) !== null && _a !== void 0 ? _a : {};
75
- const { Width, Filterable, ShowToolTip, Resizable, Groupable, Sortable, Pivotable, Aggregatable, } = (_b = data.CalculatedColumnSettings) !== null && _b !== void 0 ? _b : {};
76
- const onSettingsChange = (values) => {
77
- props.onChange(Object.assign(Object.assign({}, data), { CalculatedColumnSettings: Object.assign(Object.assign({}, data.CalculatedColumnSettings), values) }));
76
+ const { Width, ShowToolTip } = (_b = data.CalculatedColumnSettings) !== null && _b !== void 0 ? _b : {};
77
+ const handleSpecialColumnSettingsChange = (settings) => {
78
+ props.onChange(Object.assign(Object.assign({}, data), { CalculatedColumnSettings: Object.assign(Object.assign({}, data.CalculatedColumnSettings), settings) }));
78
79
  };
79
80
  React.useEffect(() => {
80
81
  var _a;
81
82
  if (!dataType) {
82
83
  const computedDataType = calculatedColumnExpressionService.GetCalculatedColumnDataType((_a = data.Query) === null || _a === void 0 ? void 0 : _a.ScalarExpression);
83
- onSettingsChange({
84
- DataType: computedDataType,
85
- });
84
+ handleSpecialColumnSettingsChange(Object.assign(Object.assign({}, data === null || data === void 0 ? void 0 : data.CalculatedColumnSettings), { DataType: computedDataType }));
86
85
  }
87
86
  }, []);
88
87
  return (React.createElement(rebass_1.Box, { "data-name": 'calculated-column-settings' },
@@ -111,23 +110,11 @@ exports.CalculatedColumnSettingsWizardSection = (props) => {
111
110
  onClick: () => handleDataTypeChange(item.value),
112
111
  })) }, dataType ? dataType : 'Select Data Type')),
113
112
  React.createElement(FormLayout_1.FormRow, { label: "Width" },
114
- React.createElement(Input_1.default, { type: "number", width: 300, value: Width || '', onChange: (e) => onSettingsChange({ Width: Number(e.target.value) }) })),
113
+ React.createElement(Input_1.default, { type: "number", width: 300, value: Width || '', onChange: (e) => handleSpecialColumnSettingsChange({
114
+ Width: Number(e.target.value),
115
+ }) })),
115
116
  React.createElement(FormLayout_1.FormRow, { label: "" },
116
- React.createElement(CheckBox_1.CheckBox, { onChange: (checked) => onSettingsChange({ ShowToolTip: checked }), checked: ShowToolTip }, "Show Expression as Tooltip")))))),
117
+ React.createElement(CheckBox_1.CheckBox, { onChange: (checked) => handleSpecialColumnSettingsChange({ ShowToolTip: checked }), checked: ShowToolTip }, "Show Expression as Tooltip")))))),
117
118
  ErrorMessage ? React.createElement(ErrorBox_1.default, { marginTop: 2 }, ErrorMessage) : null,
118
- React.createElement(Tabs_1.Tabs, { marginTop: 2, autoFocus: false },
119
- React.createElement(Tabs_1.Tabs.Tab, null, " Column Properties"),
120
- React.createElement(Tabs_1.Tabs.Content, null,
121
- React.createElement(rebass_1.Flex, { flexDirection: "row" },
122
- React.createElement(FormLayout_1.default, { style: { width: '100%' }, columns: [{ name: 'first', size: '30%' }, { name: 'second' }] },
123
- React.createElement(FormLayout_1.FormRow, null,
124
- React.createElement(CheckBox_1.CheckBox, { checked: Filterable, onChange: (Filterable) => onSettingsChange({ Filterable }), disabled: !api.internalApi.getAdaptableOptions().filterOptions
125
- .enableFilterOnSpecialColumns }, "Filterable"),
126
- React.createElement(CheckBox_1.CheckBox, { checked: Resizable, onChange: (Resizable) => onSettingsChange({ Resizable }) }, "Resizable")),
127
- React.createElement(FormLayout_1.FormRow, null,
128
- React.createElement(CheckBox_1.CheckBox, { checked: Groupable, onChange: (Groupable) => onSettingsChange({ Groupable }) }, "Groupable"),
129
- React.createElement(CheckBox_1.CheckBox, { checked: Sortable, onChange: (Sortable) => onSettingsChange({ Sortable }) }, "Sortable")),
130
- React.createElement(FormLayout_1.FormRow, null,
131
- React.createElement(CheckBox_1.CheckBox, { checked: Pivotable, onChange: (Pivotable) => onSettingsChange({ Pivotable }) }, "Pivotable"),
132
- React.createElement(CheckBox_1.CheckBox, { checked: Aggregatable, onChange: (Aggregatable) => onSettingsChange({ Aggregatable }) }, "Aggregatable"))))))));
119
+ React.createElement(SpecialColumnSettingsWizardStep_1.SpecialColumnSettingsWizardStep, { isEditable: false, settings: data.CalculatedColumnSettings, onChange: handleSpecialColumnSettingsChange })));
133
120
  };
@@ -53,7 +53,7 @@ exports.Navigation = (props) => {
53
53
  const className = join_1.default(baseClassName, isActive && `${baseClassName}--active`);
54
54
  let customIcon = (_f = (_e = (_d = (_c = props.customSettingsPanels) === null || _c === void 0 ? void 0 : _c.find) === null || _d === void 0 ? void 0 : _d.call(_c, (customSettingPanel) => customSettingPanel.name === menuItem.label)) === null || _e === void 0 ? void 0 : _e.icon) !== null && _f !== void 0 ? _f : null;
55
55
  return (React.createElement("li", { className: className, key: menuItem.label },
56
- React.createElement("button", { className: `${baseClassName}__Button`, onClick: () => {
56
+ React.createElement("button", { type: "button", className: `${baseClassName}__Button`, onClick: () => {
57
57
  dispatch(menuItem.reduxAction);
58
58
  } },
59
59
  menuItem.icon && (React.createElement(icons_1.Icon, { className: `${baseClassName}__Icon`, name: menuItem.icon })),
@@ -2,9 +2,9 @@
2
2
  import { FlashingCellDefinition } from '../../../types';
3
3
  declare type FlashingAlertDurationWizardSectionProps = {
4
4
  readOnly?: boolean;
5
- flashingAlert?: FlashingCellDefinition;
5
+ flashingCell?: FlashingCellDefinition;
6
6
  onChange: (data: FlashingCellDefinition) => void;
7
7
  };
8
- export declare const renderFlashingAlertDurationSummary: (flashingAlert: FlashingCellDefinition) => JSX.Element;
9
- export declare const FlashingAlertDurationWizardSection: (props: FlashingAlertDurationWizardSectionProps) => JSX.Element;
8
+ export declare const renderFlashingAlertSettingsSummary: (flashingAlert: FlashingCellDefinition) => JSX.Element;
9
+ export declare const FlashingAlertSettingsWizardSection: (props: FlashingAlertDurationWizardSectionProps) => JSX.Element;
10
10
  export {};
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FlashingAlertSettingsWizardSection = exports.renderFlashingAlertSettingsSummary = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const React = tslib_1.__importStar(require("react"));
6
+ const react_1 = require("react");
7
+ const rebass_1 = require("rebass");
8
+ const Input_1 = tslib_1.__importDefault(require("../../../components/Input"));
9
+ const usePrevious_1 = tslib_1.__importDefault(require("../../../components/utils/usePrevious"));
10
+ const Radio_1 = tslib_1.__importDefault(require("../../../components/Radio"));
11
+ const Tabs_1 = require("../../../components/Tabs");
12
+ const OnePageAdaptableWizard_1 = require("../../Wizard/OnePageAdaptableWizard");
13
+ const CodeBlock_1 = require("../../../components/CodeBlock");
14
+ const FormLayout_1 = tslib_1.__importStar(require("../../../components/FormLayout"));
15
+ exports.renderFlashingAlertSettingsSummary = (flashingAlert) => {
16
+ return (React.createElement(React.Fragment, null,
17
+ React.createElement(rebass_1.Text, { fontSize: 2 }, flashingAlert.FlashDuration === 'always' ? (React.createElement(React.Fragment, null, "Flashing is never removed")) : (React.createElement(React.Fragment, null,
18
+ "Flashing is removed after ",
19
+ React.createElement(CodeBlock_1.CodeBlock, null, flashingAlert.FlashDuration),
20
+ ' ',
21
+ "milliseconds")))));
22
+ };
23
+ exports.FlashingAlertSettingsWizardSection = (props) => {
24
+ var _a;
25
+ let { data: flashingCell } = OnePageAdaptableWizard_1.useOnePageWizardContext();
26
+ flashingCell = flashingCell !== null && flashingCell !== void 0 ? flashingCell : props.flashingCell;
27
+ const setDuration = (FlashDuration) => {
28
+ props.onChange(Object.assign(Object.assign({}, flashingCell), { FlashDuration: FlashDuration }));
29
+ };
30
+ const duration = (_a = flashingCell.FlashDuration) !== null && _a !== void 0 ? _a : 500;
31
+ const numberDuration = React.useRef(typeof duration === 'number' ? duration : 500);
32
+ const inputRef = react_1.useRef(null);
33
+ const oldDuration = usePrevious_1.default(duration, duration);
34
+ React.useEffect(() => {
35
+ var _a;
36
+ if (oldDuration === 'always' && duration != oldDuration) {
37
+ (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
38
+ }
39
+ }, [duration, oldDuration]);
40
+ const handleTypeChange = (type) => {
41
+ setDuration(type === 'number' ? numberDuration.current : 'always');
42
+ };
43
+ const handleTargetChange = (type) => {
44
+ props.onChange(Object.assign(Object.assign({}, flashingCell), { FlashTarget: type }));
45
+ };
46
+ return (React.createElement(rebass_1.Flex, { height: "100%", flexDirection: "column", "data-name": "plus-minus-column-settings" },
47
+ React.createElement(Tabs_1.Tabs, { autoFocus: false, padding: 2 },
48
+ React.createElement(Tabs_1.Tabs.Tab, null, "Flashing Cell Settings"),
49
+ React.createElement(Tabs_1.Tabs.Content, null,
50
+ React.createElement(FormLayout_1.default, null,
51
+ React.createElement(FormLayout_1.FormRow, { label: "Duration Type" },
52
+ React.createElement(Radio_1.default, { mr: 3, checked: duration == 'always', tabIndex: -1, onChange: () => handleTypeChange('always') }, "Always"),
53
+ React.createElement(Radio_1.default, { checked: duration !== 'always', tabIndex: -1, onChange: () => handleTypeChange('number') }, "Limited (ms)")),
54
+ React.createElement(FormLayout_1.FormRow, { label: "" },
55
+ duration !== 'always' && (React.createElement(rebass_1.Flex, { flexDirection: "row", alignItems: "baseline" },
56
+ React.createElement(rebass_1.Text, { fontSize: 2, mr: 2 }, "After"),
57
+ React.createElement(Input_1.default, { readOnly: props.readOnly, type: "text", name: "value", ref: inputRef, mt: 2, mr: 1, value: duration, onChange: (event) => {
58
+ const value = event.target.value;
59
+ setDuration(isNaN(Number(value)) ? 500 : Number(value));
60
+ } }),
61
+ React.createElement(rebass_1.Text, { fontSize: 2 }, "milliseconds"))),
62
+ duration === 'always' && (React.createElement(rebass_1.Text, { height: 43, fontSize: 3 }, "Persists the flashing style indeterminately - can be removed manually"))),
63
+ React.createElement(FormLayout_1.FormRow, { label: "Flash Target" },
64
+ React.createElement(Radio_1.default, { onChange: () => handleTargetChange('cell'), mr: 3, checked: (flashingCell === null || flashingCell === void 0 ? void 0 : flashingCell.FlashTarget) == 'cell', tabIndex: -1 }, "Cell"),
65
+ React.createElement(Radio_1.default, { onChange: () => handleTargetChange('row'), checked: (flashingCell === null || flashingCell === void 0 ? void 0 : flashingCell.FlashTarget) == 'row', tabIndex: -1 }, "Row")))))));
66
+ };
@@ -6,7 +6,7 @@ const React = tslib_1.__importStar(require("react"));
6
6
  const react_1 = require("react");
7
7
  const rebass_1 = require("rebass");
8
8
  const OnePageAdaptableWizard_1 = require("../../Wizard/OnePageAdaptableWizard");
9
- const FlashingCellDurationWizardSection_1 = require("./FlashingCellDurationWizardSection");
9
+ const FlashingCellSettingsWizardSection_1 = require("./FlashingCellSettingsWizardSection");
10
10
  const Helper_1 = require("../../../Utilities/Helpers/Helper");
11
11
  const FlashingCellRulesWizardSection_1 = require("./FlashingCellRulesWizardSection");
12
12
  const FlashingCellStyleWizardSection_1 = require("./FlashingCellStyleWizardSection");
@@ -74,9 +74,9 @@ exports.FlashingCellWizard = (props) => {
74
74
  {
75
75
  details: 'Select the Duration of the Flash',
76
76
  render: () => (React.createElement(rebass_1.Box, { padding: 2 },
77
- React.createElement(FlashingCellDurationWizardSection_1.FlashingAlertDurationWizardSection, { onChange: setFlashingCell }))),
78
- renderSummary: FlashingCellDurationWizardSection_1.renderFlashingAlertDurationSummary,
79
- title: 'Duration',
77
+ React.createElement(FlashingCellSettingsWizardSection_1.FlashingAlertSettingsWizardSection, { onChange: setFlashingCell }))),
78
+ renderSummary: FlashingCellSettingsWizardSection_1.renderFlashingAlertSettingsSummary,
79
+ title: 'Settings',
80
80
  },
81
81
  {
82
82
  details: 'Choose the Flashing Styles',
@@ -17,6 +17,7 @@ const CheckBox_1 = require("../../../components/CheckBox");
17
17
  const FormatHelper_1 = require("../../../Utilities/Helpers/FormatHelper");
18
18
  const DateHelper_1 = require("../../../Utilities/Helpers/DateHelper");
19
19
  const Tag_1 = require("../../../components/Tag");
20
+ const SpecialColumnSettingsWizardStep_1 = require("../../SpecialColumnSettingsWizardStep");
20
21
  const options = [
21
22
  { value: Enums_1.DataType.Number, label: Enums_1.DataType.Number },
22
23
  { value: Enums_1.DataType.String, label: Enums_1.DataType.String },
@@ -59,8 +60,7 @@ exports.isValidFreeTextColumn = (data, api) => {
59
60
  };
60
61
  exports.FreeTextColumnSettingsWizardSection = (props) => {
61
62
  const { data, api } = OnePageAdaptableWizard_1.useOnePageWizardContext();
62
- const Pattern = api.internalApi.getAdaptableOptions().userInterfaceOptions.dateInputOptions
63
- .dateFormat;
63
+ const Pattern = api.internalApi.getAdaptableOptions().userInterfaceOptions.dateInputOptions.dateFormat;
64
64
  const [ColumnNameFocused, setColumnNameFocused] = react_1.useState(false);
65
65
  const inEdit = props.isEdit;
66
66
  const validCheck = exports.isValidFreeTextColumn(data, api);
@@ -98,6 +98,9 @@ exports.FreeTextColumnSettingsWizardSection = (props) => {
98
98
  }
99
99
  props.onChange(Object.assign(Object.assign({}, data), { DefaultValue }));
100
100
  };
101
+ const handleSpecialColumnSettingsChange = (settings) => {
102
+ props.onChange(Object.assign(Object.assign({}, data), { FreeTextColumnSettings: Object.assign(Object.assign({}, data === null || data === void 0 ? void 0 : data.FreeTextColumnSettings), settings) }));
103
+ };
101
104
  return (React.createElement(React.Fragment, null,
102
105
  React.createElement(FormLayout_1.default, null,
103
106
  React.createElement(FormLayout_1.FormRow, { label: "ColumnId" },
@@ -127,5 +130,7 @@ exports.FreeTextColumnSettingsWizardSection = (props) => {
127
130
  data.DataType == 'String' && (React.createElement(FormLayout_1.FormRow, { label: "Editor Type" },
128
131
  React.createElement(Radio_1.default, { value: "Inline", checked: data.TextEditor == 'Inline', onChange: (_, e) => onDynamicSelectChanged(e), marginRight: 2 }, "Inline Editor"),
129
132
  React.createElement(Radio_1.default, { value: "Large", checked: data.TextEditor == 'Large', onChange: (_, e) => onDynamicSelectChanged(e) }, "Large Editor")))),
130
- ErrorMessage ? React.createElement(ErrorBox_1.default, { marginTop: 2 }, ErrorMessage) : null));
133
+ ErrorMessage ? (React.createElement(ErrorBox_1.default, { mt: 2, mb: 2 }, ErrorMessage)) : null,
134
+ React.createElement(rebass_1.Box, { mt: 2 },
135
+ React.createElement(SpecialColumnSettingsWizardStep_1.SpecialColumnSettingsWizardStep, { isEditable: true, settings: data.FreeTextColumnSettings, onChange: handleSpecialColumnSettingsChange }))));
131
136
  };
@@ -32,6 +32,7 @@ exports.FreeTextColumnWizard = (props) => {
32
32
  {
33
33
  title: 'Settings',
34
34
  details: 'Configure the Free Text Column',
35
+ isValid: FreeTextColumnSettingsWizardSection_1.isValidFreeTextColumn,
35
36
  render: () => {
36
37
  return (React.createElement(rebass_1.Box, { padding: 2 },
37
38
  React.createElement(FreeTextColumnSettingsWizardSection_1.FreeTextColumnSettingsWizardSection, { isEdit: Boolean(props.data), onChange: setFreeTextColumn })));
@@ -0,0 +1,9 @@
1
+ import * as React from 'react';
2
+ import { SpecialColumnSettings } from '../../types';
3
+ interface SpecialColumnTypeSettingsProps {
4
+ settings: SpecialColumnSettings;
5
+ onChange: (settings: SpecialColumnSettings) => void;
6
+ isEditable?: boolean;
7
+ }
8
+ export declare const SpecialColumnSettingsWizardStep: React.FunctionComponent<SpecialColumnTypeSettingsProps>;
9
+ export {};
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SpecialColumnSettingsWizardStep = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const chunk_1 = tslib_1.__importDefault(require("lodash-es/chunk"));
6
+ const React = tslib_1.__importStar(require("react"));
7
+ const rebass_1 = require("rebass");
8
+ const CheckBox_1 = require("../components/CheckBox");
9
+ const FormLayout_1 = tslib_1.__importStar(require("../components/FormLayout"));
10
+ const Tabs_1 = require("../components/Tabs");
11
+ const AdaptableContext_1 = require("./AdaptableContext");
12
+ exports.SpecialColumnSettingsWizardStep = (props) => {
13
+ var _a, _b;
14
+ const adaptable = AdaptableContext_1.useAdaptable();
15
+ const possibleColumnTypes = adaptable.api.internalApi.getAdaptableOptions().userInterfaceOptions.columnTypes;
16
+ const { Filterable, Resizable, Groupable, Sortable, Pivotable, Aggregatable, SuppressMenu, SuppressMovable, } = (_a = props.settings) !== null && _a !== void 0 ? _a : {};
17
+ const handleColumnTypeChange = (columnType, checked) => {
18
+ var _a, _b, _c;
19
+ const columnTypes = (_b = (_a = props.settings) === null || _a === void 0 ? void 0 : _a.ColumnTypes) !== null && _b !== void 0 ? _b : [];
20
+ if (checked) {
21
+ props.onChange(Object.assign(Object.assign({}, props.settings), { ColumnTypes: [...columnTypes, columnType] }));
22
+ }
23
+ else {
24
+ props.onChange(Object.assign(Object.assign({}, props.settings), { ColumnTypes: (_c = columnTypes === null || columnTypes === void 0 ? void 0 : columnTypes.filter) === null || _c === void 0 ? void 0 : _c.call(columnTypes, (item) => item !== columnType) }));
25
+ }
26
+ };
27
+ const onSettingsChange = (values) => {
28
+ props.onChange(Object.assign(Object.assign({}, props.settings), values));
29
+ };
30
+ return (React.createElement(React.Fragment, null,
31
+ React.createElement(Tabs_1.Tabs, { marginTop: 2, autoFocus: false },
32
+ React.createElement(Tabs_1.Tabs.Tab, null, "Column Properties"),
33
+ React.createElement(Tabs_1.Tabs.Content, null,
34
+ React.createElement(rebass_1.Flex, { flexDirection: "row" },
35
+ React.createElement(FormLayout_1.default, { style: { width: '100%' }, columns: [
36
+ { name: 'first', size: '30%' },
37
+ { size: '30%', name: 'second' },
38
+ { size: '30%', name: 'third' },
39
+ ] },
40
+ React.createElement(FormLayout_1.FormRow, null,
41
+ React.createElement(CheckBox_1.CheckBox, { checked: Filterable, onChange: (Filterable) => onSettingsChange({ Filterable }), disabled: !adaptable.api.internalApi.getAdaptableOptions().filterOptions
42
+ .enableFilterOnSpecialColumns }, "Filterable"),
43
+ React.createElement(CheckBox_1.CheckBox, { checked: Resizable, onChange: (Resizable) => onSettingsChange({ Resizable }) }, "Resizable"),
44
+ React.createElement(CheckBox_1.CheckBox, { checked: Groupable, onChange: (Groupable) => onSettingsChange({ Groupable }) }, "Groupable")),
45
+ React.createElement(FormLayout_1.FormRow, null,
46
+ React.createElement(CheckBox_1.CheckBox, { checked: Sortable, onChange: (Sortable) => onSettingsChange({ Sortable }) }, "Sortable"),
47
+ React.createElement(CheckBox_1.CheckBox, { checked: Pivotable, onChange: (Pivotable) => onSettingsChange({ Pivotable }) }, "Pivotable"),
48
+ React.createElement(CheckBox_1.CheckBox, { checked: Aggregatable, onChange: (Aggregatable) => onSettingsChange({ Aggregatable }) }, "Aggregatable")),
49
+ React.createElement(FormLayout_1.FormRow, null,
50
+ React.createElement(CheckBox_1.CheckBox, { checked: SuppressMenu, onChange: (SuppressMenu) => onSettingsChange({ SuppressMenu }) }, "Suppress Menu"),
51
+ React.createElement(CheckBox_1.CheckBox, { checked: SuppressMovable, onChange: (SuppressMovable) => onSettingsChange({ SuppressMovable }) }, "Suppress Movable"),
52
+ React.createElement(CheckBox_1.CheckBox, { disabled: true, checked: props.isEditable }, "Editable")))))),
53
+ Boolean(possibleColumnTypes === null || possibleColumnTypes === void 0 ? void 0 : possibleColumnTypes.length) && (React.createElement(Tabs_1.Tabs, { marginTop: 2, autoFocus: false },
54
+ React.createElement(Tabs_1.Tabs.Tab, null, "Column Types"),
55
+ React.createElement(Tabs_1.Tabs.Content, null,
56
+ React.createElement(FormLayout_1.default, { columns: [{ name: 'first', size: '30%' }, { name: 'second' }] }, (_b = chunk_1.default(possibleColumnTypes !== null && possibleColumnTypes !== void 0 ? possibleColumnTypes : [], 2)) === null || _b === void 0 ? void 0 : _b.map(([first, second]) => {
57
+ var _a, _b, _c, _d, _e, _f;
58
+ return (React.createElement(FormLayout_1.FormRow, { key: first },
59
+ first && (React.createElement(CheckBox_1.CheckBox, { onChange: (checked) => handleColumnTypeChange(first, checked), checked: (_c = (_b = (_a = props.settings) === null || _a === void 0 ? void 0 : _a.ColumnTypes) === null || _b === void 0 ? void 0 : _b.includes) === null || _c === void 0 ? void 0 : _c.call(_b, first) }, first)),
60
+ second && (React.createElement(CheckBox_1.CheckBox, { onChange: (checked) => handleColumnTypeChange(second, checked), checked: (_f = (_e = (_d = props.settings) === null || _d === void 0 ? void 0 : _d.ColumnTypes) === null || _e === void 0 ? void 0 : _e.includes) === null || _f === void 0 ? void 0 : _f.call(_e, second) }, second))));
61
+ })))))));
62
+ };
@@ -1951,6 +1951,7 @@ class Adaptable {
1951
1951
  const specialColumnsAreFilterable = this.api.internalApi.getAdaptableOptions().filterOptions.enableFilterOnSpecialColumns;
1952
1952
  const defaultFreeTextColumnSettings = ObjectFactory_1.CreateEmptyFreeTextColumn(specialColumnsAreFilterable).FreeTextColumnSettings;
1953
1953
  return this.api.freeTextColumnApi.getAllFreeTextColumn().map((freeTextColumn) => {
1954
+ var _a;
1954
1955
  const freeTextColumnSettings = Object.assign(Object.assign({}, defaultFreeTextColumnSettings), freeTextColumn.FreeTextColumnSettings);
1955
1956
  const dataTypeEditor = freeTextColumn.DataType === 'Number'
1956
1957
  ? AdaptableNumberEditor_1.AdaptableNumberEditor
@@ -1962,8 +1963,7 @@ class Adaptable {
1962
1963
  GeneralConstants_1.AB_SPECIAL_COLUMN,
1963
1964
  this.agGridHelper.getAgGridDataType(freeTextColumn.DataType),
1964
1965
  ];
1965
- if (freeTextColumn.FreeTextColumnSettings &&
1966
- ArrayExtensions_1.ArrayExtensions.IsNotNullOrEmpty(freeTextColumn.FreeTextColumnSettings.ColumnTypes)) {
1966
+ if (ArrayExtensions_1.ArrayExtensions.IsNotNullOrEmpty((_a = freeTextColumn === null || freeTextColumn === void 0 ? void 0 : freeTextColumn.FreeTextColumnSettings) === null || _a === void 0 ? void 0 : _a.ColumnTypes)) {
1967
1967
  columnTypes.push(...freeTextColumn.FreeTextColumnSettings.ColumnTypes);
1968
1968
  }
1969
1969
  return {
@@ -2443,7 +2443,6 @@ class Adaptable {
2443
2443
  */
2444
2444
  this.gridOptions.api.addEventListener(all_modules_1.Events.EVENT_COLUMN_RESIZED, (params) => {
2445
2445
  if (params.finished == true && params.type == 'columnResized' && params.column) {
2446
- this._emit('ColumnResized', params.column.getColId());
2447
2446
  this.debouncedSaveGridLayout();
2448
2447
  }
2449
2448
  });
@@ -29,7 +29,7 @@ function Dashboard(props) {
29
29
  top: position.y,
30
30
  };
31
31
  const renderTabs = () => (React.createElement("div", { className: "ab-Dashboard__tabs" }, children &&
32
- React.Children.map(children, (child, index) => (React.createElement("button", { className: join_1.default('ab-Dashboard__tab', !collapsed && activeTabIndex === index ? 'ab-Dashboard__tab--active' : ''), key: index, onClick: () => {
32
+ React.Children.map(children, (child, index) => (React.createElement("button", { type: "button", className: join_1.default('ab-Dashboard__tab', !collapsed && activeTabIndex === index ? 'ab-Dashboard__tab--active' : ''), key: index, onClick: () => {
33
33
  if (activeTabIndex === index) {
34
34
  setCollapsed(!collapsed);
35
35
  }