@adaptabletools/adaptable 18.0.0-canary.15 → 18.0.0-canary.17

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 (84) hide show
  1. package/package.json +1 -1
  2. package/src/AdaptableInterfaces/IAdaptable.d.ts +0 -2
  3. package/src/AdaptableOptions/ColumnFilterOptions.d.ts +7 -0
  4. package/src/AdaptableOptions/MenuOptions.d.ts +5 -1
  5. package/src/AdaptableOptions/MenuOptions.js +71 -70
  6. package/src/Api/GridApi.d.ts +1 -1
  7. package/src/Api/Implementation/CellSummaryApiImpl.d.ts +0 -5
  8. package/src/Api/Implementation/CellSummaryApiImpl.js +2 -23
  9. package/src/Api/Implementation/GridApiImpl.d.ts +1 -1
  10. package/src/Api/Implementation/GridApiImpl.js +1 -1
  11. package/src/Api/Internal/AdaptableInternalApi.d.ts +0 -2
  12. package/src/Api/Internal/AdaptableInternalApi.js +0 -3
  13. package/src/PredefinedConfig/Common/Enums.d.ts +2 -1
  14. package/src/PredefinedConfig/Common/Enums.js +1 -0
  15. package/src/PredefinedConfig/Common/Menu.d.ts +10 -1
  16. package/src/PredefinedConfig/Common/Menu.js +71 -1
  17. package/src/PredefinedConfig/Common/RowSummary.d.ts +3 -1
  18. package/src/PredefinedConfig/Common/RowSummary.js +16 -0
  19. package/src/Redux/ActionsReducers/LayoutRedux.js +12 -10
  20. package/src/Strategy/AdaptableModuleBase.d.ts +6 -5
  21. package/src/Strategy/AdaptableModuleBase.js +9 -8
  22. package/src/Strategy/AlertModule.js +1 -1
  23. package/src/Strategy/BulkUpdateModule.js +1 -1
  24. package/src/Strategy/CalculatedColumnModule.js +1 -1
  25. package/src/Strategy/CellSummaryModule.d.ts +7 -6
  26. package/src/Strategy/CellSummaryModule.js +37 -12
  27. package/src/Strategy/ColumnFilterModule.js +8 -7
  28. package/src/Strategy/ColumnInfoModule.js +2 -0
  29. package/src/Strategy/CommentModule.js +2 -2
  30. package/src/Strategy/CustomSortModule.js +2 -1
  31. package/src/Strategy/DashboardModule.js +8 -7
  32. package/src/Strategy/DataImportModule.d.ts +1 -1
  33. package/src/Strategy/DataImportModule.js +5 -5
  34. package/src/Strategy/ExportModule.d.ts +1 -0
  35. package/src/Strategy/ExportModule.js +17 -2
  36. package/src/Strategy/Fdc3Module.js +3 -0
  37. package/src/Strategy/FlashingCellModule.js +4 -4
  38. package/src/Strategy/FormatColumnModule.js +6 -4
  39. package/src/Strategy/FreeTextColumnModule.js +1 -1
  40. package/src/Strategy/GridInfoModule.js +2 -0
  41. package/src/Strategy/LayoutModule.js +32 -23
  42. package/src/Strategy/NoteModule.js +2 -2
  43. package/src/Strategy/PlusMinusModule.js +1 -1
  44. package/src/Strategy/SettingsPanelModule.js +3 -3
  45. package/src/Strategy/SmartEditModule.js +1 -1
  46. package/src/Strategy/StyledColumnModule.d.ts +1 -0
  47. package/src/Strategy/StyledColumnModule.js +23 -5
  48. package/src/Strategy/SystemStatusModule.js +2 -2
  49. package/src/Utilities/ExpressionFunctions/aggregatedScalarExpressionFunctions.d.ts +2 -2
  50. package/src/Utilities/ExpressionFunctions/aggregatedScalarExpressionFunctions.js +124 -3
  51. package/src/Utilities/MenuItem.d.ts +7 -4
  52. package/src/Utilities/MenuItem.js +6 -3
  53. package/src/Utilities/Services/LicenseService/index.js +1 -1
  54. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/UIOptions/UIOptionsStatusbarForm.js +1 -1
  55. package/src/View/Components/AdaptableDateInput/index.d.ts +1 -1
  56. package/src/View/Components/AdaptableInput/AdaptableDateInlineInput.d.ts +5 -0
  57. package/src/View/Components/AdaptableInput/AdaptableDateInlineInput.js +42 -0
  58. package/src/View/Components/AdaptableObjectList/AdaptableObjectList.js +5 -2
  59. package/src/View/Components/FilterForm/FilterForm.js +20 -12
  60. package/src/View/Components/FilterForm/QuickFilterForm.js +15 -8
  61. package/src/View/Components/ValueSelector/index.js +1 -1
  62. package/src/View/GridFilter/GridFilterViewPanel.js +2 -2
  63. package/src/View/Layout/Wizard/LayoutWizard.js +26 -2
  64. package/src/View/Layout/Wizard/sections/ColumnsSection.js +1 -1
  65. package/src/View/Layout/Wizard/sections/RowSummarySection.d.ts +1 -0
  66. package/src/View/Layout/Wizard/sections/RowSummarySection.js +26 -2
  67. package/src/agGrid/AdaptableAgGrid.d.ts +0 -2
  68. package/src/agGrid/AdaptableAgGrid.js +14 -14
  69. package/src/agGrid/AgGridMenuAdapter.js +7 -5
  70. package/src/agGrid/defaultAdaptableOptions.js +1 -0
  71. package/src/agGrid/editors/AdaptableNumberEditor/index.d.ts +2 -2
  72. package/src/agGrid/weightedAverage.d.ts +0 -2
  73. package/src/agGrid/weightedAverage.js +0 -54
  74. package/src/components/Datepicker/index.js +10 -2
  75. package/src/components/Input/index.d.ts +1 -2
  76. package/src/components/Textarea/index.d.ts +2 -2
  77. package/src/env.js +2 -2
  78. package/src/metamodel/adaptable.metamodel.d.ts +6 -0
  79. package/src/metamodel/adaptable.metamodel.js +1 -1
  80. package/tsconfig.esm.tsbuildinfo +1 -1
  81. package/src/Utilities/Services/Interface/ISummaryService.d.ts +0 -17
  82. package/src/Utilities/Services/Interface/ISummaryService.js +0 -12
  83. package/src/Utilities/Services/SummaryService.d.ts +0 -10
  84. package/src/Utilities/Services/SummaryService.js +0 -17
@@ -15,6 +15,7 @@ import { getDefaultColumnFilterPredicate } from './getDefaultColumnFilterPredica
15
15
  import { isAdaptableIcon } from '../../../components/Icon';
16
16
  import { QuickFilterValues } from './QuickFilterValues';
17
17
  import { AdaptableIconComponent } from '../AdaptableIconComponent';
18
+ import { AdaptableDateInlineInput } from '../AdaptableInput/AdaptableDateInlineInput';
18
19
  class QuickFilterFormComponent extends React.Component {
19
20
  constructor(props) {
20
21
  super(props);
@@ -136,17 +137,23 @@ class QuickFilterFormComponent extends React.Component {
136
137
  } })));
137
138
  }
138
139
  return (_a = predicateDef === null || predicateDef === void 0 ? void 0 : predicateDef.inputs) === null || _a === void 0 ? void 0 : _a.map((predicateInput, index) => {
139
- var _a, _b;
140
+ var _a, _b, _c, _d, _e, _f;
141
+ const showDatePicker = (_b = (_a = this.props.api.optionsApi) === null || _a === void 0 ? void 0 : _a.getColumnFilterOptions()) === null || _b === void 0 ? void 0 : _b.showDatePicker;
142
+ const value = (_d = (_c = filter.Predicate.Inputs) === null || _c === void 0 ? void 0 : _c[index]) !== null && _d !== void 0 ? _d : '';
143
+ const onKeyDownCapture = (e) => {
144
+ if (e.nativeEvent.key === 'Escape') {
145
+ e.nativeEvent.preventDefault();
146
+ e.nativeEvent.stopPropagation();
147
+ this.clearFilter();
148
+ }
149
+ };
150
+ if (predicateInput.type === 'date' && !showDatePicker) {
151
+ return (React.createElement(AdaptableDateInlineInput, { value: value, key: index, onKeyDownCapture: onKeyDownCapture, onChange: (value) => this.changeColumnPredicateInput(value, index) }));
152
+ }
140
153
  return (React.createElement(AdaptableInput, { disabled: this.isFilterDisabled(), key: index, type: predicateInput.type === 'number' ? 'text' : predicateInput.type,
141
154
  // autoFocus has to be FALSE because if the input receives focus in the init phase,
142
155
  // it may scroll the AG Grid header viewport into view and de-synchronize it (relative to the content viewport)
143
- autoFocus: false, value: (_b = (_a = filter.Predicate.Inputs) === null || _a === void 0 ? void 0 : _a[index]) !== null && _b !== void 0 ? _b : '', onChange: (e) => this.changeColumnPredicateInput(e.target.value, index), onKeyDownCapture: (e) => {
144
- if (e.nativeEvent.key === 'Escape') {
145
- e.nativeEvent.preventDefault();
146
- e.nativeEvent.stopPropagation();
147
- this.clearFilter();
148
- }
149
- }, style: {
156
+ autoFocus: false, value: (_f = (_e = filter.Predicate.Inputs) === null || _e === void 0 ? void 0 : _e[index]) !== null && _f !== void 0 ? _f : '', onChange: (e) => this.changeColumnPredicateInput(e.target.value, index), onKeyDownCapture: onKeyDownCapture, style: {
150
157
  width: '100%',
151
158
  padding: 'var(--ab-space-1)',
152
159
  borderRadius: 0,
@@ -62,7 +62,7 @@ export function ValueSelector(props) {
62
62
  const label = !allowReorder ? preparedToLabel(option) : null;
63
63
  const reorderable = typeof allowReorder === 'function' ? allowReorder(option) : allowReorder;
64
64
  const renderNode = (props, dragHandleProps) => {
65
- return (React.createElement(Flex, Object.assign({ className: `${baseClassName}__option`, alignItems: "center", mt: index ? 1 : 0, key: identifier, backgroundColor: 'primary', padding: 2, "data-index": index, "data-id": identifier, "data-name": "option" }, props),
65
+ return (React.createElement(Flex, Object.assign({ className: `${baseClassName}__option`, alignItems: "center", mt: index ? 1 : 0, key: identifier !== null && identifier !== void 0 ? identifier : index, backgroundColor: 'primary', padding: 2, "data-index": index, "data-id": identifier, "data-name": "option" }, props),
66
66
  React.createElement(Flex, { flex: 1, flexDirection: "row", alignItems: "center" },
67
67
  reorderable ? (React.createElement(Box, Object.assign({ mr: 3 }, dragHandleProps),
68
68
  React.createElement(Icon, { name: "drag", style: { cursor: 'grab' } }))) : null,
@@ -49,7 +49,7 @@ const QueryViewPanelComponent = (props) => {
49
49
  paddingTop: 6,
50
50
  overflow: 'hidden',
51
51
  zIndex: 100,
52
- }, placehoder: "Grid Filter", onChange: (x) => setExpression(x.target.value), value: expression })),
52
+ }, placeholder: "Grid Filter", onChange: (x) => setExpression(x.target.value), value: expression })),
53
53
  isExpressionValid && (React.createElement(ButtonPlay, { onClick: () => runQuery(), tooltip: '', accessLevel: gridFilterAccessLevel, variant: "text", tone: "neutral", disabled: disabled || expression == '' || expression == (gridFilter === null || gridFilter === void 0 ? void 0 : gridFilter.Expression), marginRight: 1 })),
54
54
  gridFilter && !isExpressionValid && (React.createElement(ButtonInvalid, { variant: "text", tone: "neutral", tooltip: "Invalid Grid Filter", marginRight: 1 })),
55
55
  ' ',
@@ -75,7 +75,7 @@ const QueryViewPanelComponent = (props) => {
75
75
  zIndex: 100,
76
76
  height: '100%',
77
77
  overflow: 'hidden',
78
- }, placehoder: "Grid Filter", onChange: (x) => setExpression(x.target.value), value: expression }))));
78
+ }, placeholder: "Grid Filter", onChange: (x) => setExpression(x.target.value), value: expression }))));
79
79
  };
80
80
  const saveButton = (React.createElement(ButtonSave, { onClick: () => saveQuery(), tooltip: "Save as Named Query", accessLevel: namedQueryModuleAccessLevel, disabled: disabled || !isExpressionValid || isExpressionNamedQuery || expression == '', variant: "text", tone: "neutral", marginRight: 1 }));
81
81
  const suspendButton = (React.createElement(ButtonPause, { onClick: () => suspendGridFilter(), tooltip: "Suspend Grid Filter", accessLevel: gridFilterAccessLevel, disabled: disabled || !isExpressionValid, variant: "text", tone: "neutral", marginRight: 1 }));
@@ -14,7 +14,8 @@ import { AggregationsSection, AggregationsSectionSummary, isAggregationsSectionV
14
14
  import { SortSection, SortSectionSummary } from './sections/SortSection';
15
15
  import { FilterSection, FilterSectionSummary, isColumnFiltersValid, } from './sections/FilterSection';
16
16
  import { GridFilterSection, GridFilterSectionSummary, isGridFiltersValid, } from './sections/GridFilterSection';
17
- import { RowSummarySection } from './sections/RowSummarySection';
17
+ import { areSummaryRowsValid, RowSummarySection } from './sections/RowSummarySection';
18
+ import { WEIGHTED_AVERAGE_AGGREATED_FUNCTION } from '../../../PredefinedConfig/Common/RowSummary';
18
19
  export const LayoutWizard = (props) => {
19
20
  var _a, _b;
20
21
  const dispatch = useDispatch();
@@ -103,6 +104,7 @@ export const LayoutWizard = (props) => {
103
104
  {
104
105
  title: 'Row Groups',
105
106
  isVisible: () => layoutSupportedFeatures.RowGroupedColumns,
107
+ isValid: areSummaryRowsValid,
106
108
  details: 'Configure Row Grouping',
107
109
  renderSummary: () => React.createElement(RowGroupingSectionSummary, null),
108
110
  render: () => (React.createElement(Box, { p: 2, style: { height: '100%' } },
@@ -115,7 +117,29 @@ export const LayoutWizard = (props) => {
115
117
  renderSummary: () => React.createElement(AggregationsSectionSummary, null),
116
118
  isValid: (data) => isAggregationsSectionValid(data),
117
119
  render: () => (React.createElement(Box, { p: 2, style: { height: '100%' } },
118
- React.createElement(AggregationsSection, { onChange: setLayout }))),
120
+ React.createElement(AggregationsSection, { onChange: (layout) => {
121
+ let newLayout = cloneObject(layout);
122
+ // if we do not have an weighted avg col, we need to clear the row summary if one exists
123
+ if (newLayout.RowSummaries) {
124
+ newLayout.RowSummaries = newLayout.RowSummaries.map((rowSummary) => {
125
+ return Object.assign(Object.assign({}, rowSummary), { ColumnsMap: Object.entries(rowSummary.ColumnsMap).reduce((acc, [columnId, aggFunc]) => {
126
+ if (
127
+ // see if it is weighted avg
128
+ aggFunc === WEIGHTED_AVERAGE_AGGREATED_FUNCTION &&
129
+ // see if we have a weight in the agg columns
130
+ newLayout.AggregationColumns[columnId] &&
131
+ (typeof newLayout.AggregationColumns[columnId] !== 'object' ||
132
+ newLayout.AggregationColumns[columnId].weightColumnId)) {
133
+ // need to remove the row summary
134
+ return acc;
135
+ }
136
+ acc[columnId] = aggFunc;
137
+ return acc;
138
+ }, {}) });
139
+ });
140
+ }
141
+ setLayout(newLayout);
142
+ } }))),
119
143
  },
120
144
  {
121
145
  title: 'Row Summaries',
@@ -170,7 +170,7 @@ const ColumnRow = (props) => {
170
170
  React.createElement(FormRow, { label: "ColumnId" },
171
171
  React.createElement(Tag, null, props.column.columnId)),
172
172
  React.createElement(FormRow, { label: "Header" },
173
- React.createElement(Input, { "data-name": "column-header", className: "ab-Layout-Wizard__ColumnRow__Input", placehoder: "Custom name (optional)", onChange: () => {
173
+ React.createElement(Input, { "data-name": "column-header", className: "ab-Layout-Wizard__ColumnRow__Input", placeholder: "Custom name (optional)", onChange: () => {
174
174
  props.onColumnNameChange(props.column.columnId, event.target.value);
175
175
  }, value: customHeader })),
176
176
  React.createElement(FormRow, { label: "Width" },
@@ -1,5 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { Layout } from '../../../../../types';
3
+ export declare const areSummaryRowsValid: (layout: Layout) => true | string;
3
4
  export declare const RowGroupingSectionSummary: React.FunctionComponent;
4
5
  interface RowSummarySectionProps {
5
6
  onChange: (data: Layout) => void;
@@ -6,14 +6,30 @@ import { Select } from '../../../../components/Select';
6
6
  import SimpleButton from '../../../../components/SimpleButton';
7
7
  import { Tabs } from '../../../../components/Tabs';
8
8
  import { Tag } from '../../../../components/Tag';
9
+ import { summarySupportedExpressions, WEIGHTED_AVERAGE_AGGREATED_FUNCTION, } from '../../../../PredefinedConfig/Common/RowSummary';
9
10
  import { mapColumnDataTypeToExpressionFunctionType } from '../../../../Utilities/adaptableQlUtils';
10
11
  import { LayoutModuleId } from '../../../../Utilities/Constants/ModuleConstants';
11
- import { summarySupportedExpressions } from '../../../../Utilities/Services/Interface/ISummaryService';
12
12
  import { sortWithOrderArray } from '../../../../Utilities/sortWithOrder';
13
13
  import { useAdaptable } from '../../../AdaptableContext';
14
14
  import { ValueSelector } from '../../../Components/ValueSelector';
15
15
  import { useOnePageAdaptableWizardContext } from '../../../Wizard/OnePageAdaptableWizard';
16
16
  import { columnFilter } from './Utilities';
17
+ export const areSummaryRowsValid = (layout) => {
18
+ var _a;
19
+ if (!layout.RowSummaries)
20
+ return true;
21
+ let valid = true;
22
+ (_a = layout.RowSummaries) === null || _a === void 0 ? void 0 : _a.find((rowSummary) => {
23
+ var _a;
24
+ for (const [_, fn] of Object.entries((_a = rowSummary.ColumnsMap) !== null && _a !== void 0 ? _a : {})) {
25
+ if (!fn) {
26
+ valid = 'All row summary columns must have an aggregation function.';
27
+ return true;
28
+ }
29
+ }
30
+ });
31
+ return valid;
32
+ };
17
33
  const getAvailableExpressionsForColumnType = (columnType, availableScalarExpressions) => {
18
34
  const inputType = mapColumnDataTypeToExpressionFunctionType(columnType);
19
35
  return Object.entries(availableScalarExpressions !== null && availableScalarExpressions !== void 0 ? availableScalarExpressions : {})
@@ -53,7 +69,7 @@ const RowSummaryEditor = ({ rowSummary, onChange, availableScalarExpressions, on
53
69
  .getColumns()
54
70
  .filter((column) => {
55
71
  var _a, _b;
56
- if (!['Number', 'String'].includes(column.dataType))
72
+ if (!['Number', 'String', 'Date'].includes(column.dataType))
57
73
  return false;
58
74
  return (_b = (_a = layout.Columns) === null || _a === void 0 ? void 0 : _a.includes) === null || _b === void 0 ? void 0 : _b.call(_a, column.columnId);
59
75
  })
@@ -96,6 +112,14 @@ const RowSummaryEditor = ({ rowSummary, onChange, availableScalarExpressions, on
96
112
  label: expression,
97
113
  value: expression,
98
114
  }));
115
+ // check out if this layout has a aggregation with wighted column
116
+ const aggregation = layout.AggregationColumns[column.columnId];
117
+ if (aggregation && typeof aggregation === 'object' && aggregation.weightedColumnId) {
118
+ expressionOptions.push({
119
+ label: 'WEIGHTERD_AVG',
120
+ value: WEIGHTED_AVERAGE_AGGREATED_FUNCTION,
121
+ });
122
+ }
99
123
  const expression = rowSummary.ColumnsMap[column.columnId];
100
124
  return (React.createElement(Flex, null,
101
125
  React.createElement(Flex, { mr: 2, alignItems: 'center' }, label),
@@ -26,7 +26,6 @@ import { RenderReactRootFn } from '../renderReactRoot';
26
26
  import { AgGridOptionsService } from './AgGridOptionsService';
27
27
  import { AgGridColumnAdapter } from './AgGridColumnAdapter';
28
28
  import { RowEditService } from '../Utilities/Services/RowEditService';
29
- import { ISummaryService } from '../Utilities/Services/Interface/ISummaryService';
30
29
  export type AdaptableVariant = 'vanilla' | 'react' | 'angular';
31
30
  export type AdaptableLifecycleState = 'initial' | 'preprocessOptions' | 'initAdaptableState' | 'setupAgGrid' | 'initAgGrid' | 'available' | 'ready' | 'preDestroyed';
32
31
  type RenderAgGridFrameworkComponentResult = false | GridApi;
@@ -82,7 +81,6 @@ export declare class AdaptableAgGrid implements IAdaptable {
82
81
  RowEditService: RowEditService;
83
82
  Fdc3Service: Fdc3Service;
84
83
  CellPopupService: CellPopupService;
85
- SummaryService: ISummaryService;
86
84
  private LicenseService;
87
85
  private ChartingService;
88
86
  private ThemeService;
@@ -95,7 +95,6 @@ import { AdaptableUpgradeHelper } from '../migration/AdaptableUpgradeHelper';
95
95
  import { ensurePortalElement } from '../components/Modal';
96
96
  import { AdaptableLoadingScreen } from '../View/Components/Popups/AdaptableLoadingScreen';
97
97
  import { createElement } from 'react';
98
- import { SummaryService } from '../Utilities/Services/SummaryService';
99
98
  import { removeUuidAndSource } from '../Utilities/Helpers/AdaptableHelper';
100
99
  const RowNodeProto = RowNode.prototype;
101
100
  const RowNode_dispatchLocalEvent = RowNodeProto.dispatchLocalEvent;
@@ -898,7 +897,7 @@ export class AdaptableAgGrid {
898
897
  */
899
898
  // this will have to go/be heavily extended with https://github.com/AdaptableTools/adaptable/issues/2230
900
899
  this.agGridOptionsService.setGridOptionsProperty(gridOptions, 'columnTypes', (original_columnTypes) => {
901
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
900
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
902
901
  const providedColumnTypes = original_columnTypes || {};
903
902
  const gridOptionsColumnTypes = gridOptions.columnTypes || {};
904
903
  const patchedColumnTypes = Object.assign(providedColumnTypes, {
@@ -915,6 +914,12 @@ export class AdaptableAgGrid {
915
914
  abColDefTupleNumberArray: (_j = gridOptionsColumnTypes.abColDefTupleNumberArray) !== null && _j !== void 0 ? _j : {},
916
915
  abColDefObjectNumberArray: (_k = gridOptionsColumnTypes.abColDefObjectNumberArray) !== null && _k !== void 0 ? _k : {},
917
916
  });
917
+ const customColumnTypes = (_l = this.api.columnApi.getColumnTypes()) !== null && _l !== void 0 ? _l : [];
918
+ for (const customColumnType of customColumnTypes) {
919
+ if (!patchedColumnTypes[customColumnType]) {
920
+ patchedColumnTypes[customColumnType] = {};
921
+ }
922
+ }
918
923
  if (patchedColumnTypes.abColDefNumber.cellEditor == undefined) {
919
924
  patchedColumnTypes.abColDefNumber.cellEditor =
920
925
  this.variant === 'react' ? ReactAdaptableNumberEditor : AdaptableNumberEditor;
@@ -1137,6 +1142,13 @@ export class AdaptableAgGrid {
1137
1142
  const currentLayout = removeUuidAndSource(_currentLayout);
1138
1143
  const allAgGridFlattenedColDefs = this.agGridAdapter.getFlattenedColDefs(agGridColDefs);
1139
1144
  const allAgGridColDefIds = allAgGridFlattenedColDefs.map((colDef) => colDef.colId);
1145
+ const { columnApi } = this.api;
1146
+ // also add the row group columns, if they are specified in the layout
1147
+ currentLayout.Columns.forEach((colId) => {
1148
+ if (columnApi.isAutoRowGroupColumn(colId)) {
1149
+ allAgGridColDefIds.push(colId);
1150
+ }
1151
+ });
1140
1152
  const getColDef = (colId) => allAgGridFlattenedColDefs.find((colDef) => colDef.colId === colId);
1141
1153
  agGridState.columnVisibility = {
1142
1154
  hiddenColIds: allAgGridFlattenedColDefs
@@ -1562,7 +1574,6 @@ export class AdaptableAgGrid {
1562
1574
  this.AlertService = new AlertService(this.api);
1563
1575
  this.TeamSharingService = new TeamSharingService(this.api);
1564
1576
  this.Fdc3Service = new Fdc3Service(this.api);
1565
- this.SummaryService = new SummaryService(this.api);
1566
1577
  this.CellPopupService = new CellPopupService(this.api);
1567
1578
  this.RowEditService = new RowEditService(this.api);
1568
1579
  this.MetamodelService = new MetamodelService(() => this.api.optionsApi.getAdaptableOptions(), true);
@@ -2210,17 +2221,6 @@ export class AdaptableAgGrid {
2210
2221
  const colId2 = colState2.colId;
2211
2222
  const originalIndex1 = columnsStateIndexes[colId1];
2212
2223
  const originalIndex2 = columnsStateIndexes[colId2];
2213
- const isRowGroup1 = this.api.columnApi.isAutoRowGroupColumn(colId1);
2214
- const isRowGroup2 = this.api.columnApi.isAutoRowGroupColumn(colId2);
2215
- if (isRowGroup1 && isRowGroup2) {
2216
- return 1;
2217
- }
2218
- if (isRowGroup1) {
2219
- return -1;
2220
- }
2221
- if (isRowGroup2) {
2222
- return 1;
2223
- }
2224
2224
  if (newVisibleColumnsMap[colId1] != null && newVisibleColumnsMap[colId2] == null) {
2225
2225
  return -1;
2226
2226
  }
@@ -206,11 +206,13 @@ export class AgGridMenuAdapter {
206
206
  if (submenuItems.length === 1) {
207
207
  return submenuItems[0];
208
208
  }
209
- return {
210
- label: moduleOrGroup.title,
211
- icon: moduleOrGroup.icon,
212
- subItems: submenuItems,
213
- };
209
+ return [
210
+ {
211
+ label: moduleOrGroup.title,
212
+ icon: moduleOrGroup.icon,
213
+ subItems: submenuItems,
214
+ },
215
+ ];
214
216
  }
215
217
  else {
216
218
  return adaptableMenuItems.filter((menuItem) => menuItem.module === moduleOrGroup);
@@ -213,6 +213,7 @@ const DefaultAdaptableOptions = {
213
213
  enableFilterOnSpecialColumns: true,
214
214
  showClearFilterButton: false,
215
215
  showSuspendFilterButton: false,
216
+ showDatePicker: true,
216
217
  },
217
218
  gridFilterOptions: {
218
219
  availableFilterEditors: ['ExpressionEditor', 'QueryBuilder'],
@@ -6,12 +6,12 @@ import { ICellEditorComp, ICellEditorParams } from '@ag-grid-community/core';
6
6
  interface AdaptableNumberCellEditorParams extends ICellEditorParams {
7
7
  /**
8
8
  * Whether to show the clear button. If `true`, it works together with `cellEditorParams.emptyValue`
9
- * @default true
9
+ * @defaultValue true
10
10
  */
11
11
  showClearButton: boolean;
12
12
  /**
13
13
  * Value to set for the cell, when the clear button is pressed
14
- * @default '' (empty string)
14
+ * @defaultValue '' (empty string)
15
15
  */
16
16
  emptyValue: string;
17
17
  }
@@ -1,9 +1,7 @@
1
1
  import { IAggFuncParams } from '@ag-grid-community/core';
2
- import { CellSummaryOperationContext } from '../types';
3
2
  export declare const getNumericValue: (input: unknown) => number | null;
4
3
  export declare const weightedAverage: (params: IAggFuncParams, columnId: string, weightColumnId: string) => {
5
4
  [x: string]: number | (() => number | "");
6
5
  toString: () => number | "";
7
6
  valueOf: () => number;
8
7
  };
9
- export declare const cellSummaryWeightedAverage: ({ numericColumns, selectedCellInfo, adaptableApi, }: CellSummaryOperationContext) => any;
@@ -1,4 +1,3 @@
1
- import FormatHelper from '../Utilities/Helpers/FormatHelper';
2
1
  import toNumber from 'lodash/toNumber';
3
2
  export const getNumericValue = (input) => {
4
3
  if (typeof input === 'number') {
@@ -46,56 +45,3 @@ export const weightedAverage = (params, columnId, weightColumnId) => {
46
45
  [weightColumnId]: weightedColumnValueSum,
47
46
  };
48
47
  };
49
- export const cellSummaryWeightedAverage = ({ numericColumns, selectedCellInfo, adaptableApi, }) => {
50
- if ((numericColumns === null || numericColumns === void 0 ? void 0 : numericColumns.length) != 1) {
51
- return '';
52
- }
53
- const columnId = numericColumns[0];
54
- const currentLayout = adaptableApi.layoutApi.getCurrentLayout();
55
- const selectedColumnAgg = currentLayout.AggregationColumns[columnId];
56
- if (!selectedColumnAgg ||
57
- typeof selectedColumnAgg !== 'object' ||
58
- selectedColumnAgg.type !== 'weightedAverage') {
59
- return '';
60
- }
61
- const weightedColumnId = selectedColumnAgg.weightedColumnId;
62
- if (weightedColumnId) {
63
- let sumWeightedValue = 0;
64
- let sumPrimaryValues = 0;
65
- let isValid = true;
66
- selectedCellInfo.gridCells.forEach((gridCell) => {
67
- if (adaptableApi.gridApi.isGroupRowNode(gridCell.rowNode)) {
68
- isValid = false;
69
- }
70
- if (isValid) {
71
- const weightedGridCell = adaptableApi.gridApi.getGridCellFromRowNode(gridCell.rowNode, weightedColumnId);
72
- sumWeightedValue += weightedGridCell.rawValue;
73
- sumPrimaryValues += weightedGridCell.rawValue * gridCell.normalisedValue;
74
- }
75
- });
76
- if (!isValid) {
77
- return '';
78
- }
79
- const abColumn = adaptableApi.columnApi.getColumnWithColumnId(columnId);
80
- if (!abColumn) {
81
- return '';
82
- }
83
- const activeFormatColumnsWithDisplayFormat = adaptableApi.formatColumnApi.internalApi.getFormatColumnsWithDisplayFormatForColumn(abColumn);
84
- if (activeFormatColumnsWithDisplayFormat.length === 1 &&
85
- activeFormatColumnsWithDisplayFormat[0].DisplayFormat.Formatter === 'NumberFormatter') {
86
- // there only one FormatColumn on this column, so we will use it to format the aggregated value
87
- const [singleActiveFormatColumnsWithDisplayFormat] = activeFormatColumnsWithDisplayFormat;
88
- const options = singleActiveFormatColumnsWithDisplayFormat
89
- .DisplayFormat.Options;
90
- if (options) {
91
- return FormatHelper.NumberFormatter(sumPrimaryValues / sumWeightedValue, options);
92
- }
93
- }
94
- else {
95
- // there are multiple (possibly conflicting) FormatColumns for this column, we cannot know which to use
96
- return FormatHelper.NumberFormatter(sumPrimaryValues / sumWeightedValue, {
97
- FractionDigits: 2,
98
- });
99
- }
100
- }
101
- };
@@ -1,7 +1,6 @@
1
1
  import { __rest } from "tslib";
2
2
  import * as React from 'react';
3
3
  import OverlayTrigger from '../OverlayTrigger';
4
- import Input from '../Input';
5
4
  import { useState } from 'react';
6
5
  import useProperty from '../utils/useProperty';
7
6
  import FieldWrap from '../FieldWrap';
@@ -14,6 +13,8 @@ import { useDatepickerContext } from './DatepickerContext';
14
13
  import addDays from 'date-fns/addDays';
15
14
  import addBusinessDays from 'date-fns/addBusinessDays';
16
15
  import { DayPicker, useInput } from 'react-day-picker';
16
+ import { AdaptableDateInlineInput } from '../../View/Components/AdaptableInput/AdaptableDateInlineInput';
17
+ import { isValid } from 'date-fns';
17
18
  const DatepickerOverlay = ({ onHide, children, onKeyDown, onMouseDown, }) => {
18
19
  const domRef = React.useRef(null);
19
20
  React.useEffect(() => {
@@ -99,7 +100,14 @@ export const Datepicker = React.forwardRef((props, ref) => {
99
100
  setVisible(true);
100
101
  }
101
102
  } }),
102
- React.createElement(Input, { value: inputValue, placehoder: placeholder !== null && placeholder !== void 0 ? placeholder : dateProps.format, style: style, disabled: disabled, readOnly: true, ref: ref }),
103
+ React.createElement(AdaptableDateInlineInput, { ref: ref, value: inputValue,
104
+ // We do not want to show the format when the date-picker is visible
105
+ placeholder: placeholder !== null && placeholder !== void 0 ? placeholder : '', onChange: (value) => {
106
+ const date = new Date(value);
107
+ if (isValid(date)) {
108
+ updateValue(date);
109
+ }
110
+ }, style: style, disabled: disabled }),
103
111
  !!inputValue ? clearButton : null,
104
112
  calendarButton))));
105
113
  });
@@ -3,10 +3,9 @@ import { HTMLProps } from 'react';
3
3
  import { BoxProps } from 'rebass';
4
4
  export declare const baseClassName = "ab-Input";
5
5
  export type InputProps = HTMLProps<HTMLInputElement> & {
6
- placehoder?: string;
7
6
  type?: string;
8
7
  disabled?: boolean;
9
8
  list?: any;
10
9
  } & BoxProps;
11
- declare const Input: React.ForwardRefExoticComponent<Pick<InputProps, "children" | "size" | "name" | "tabIndex" | "color" | "style" | "cite" | "data" | "form" | "label" | "p" | "slot" | "span" | "summary" | "title" | "pattern" | "start" | "hidden" | "content" | "default" | "flex" | "wrap" | "open" | "padding" | "multiple" | "disabled" | "checked" | "download" | "list" | "order" | "target" | "rows" | "src" | "className" | "onTransitionEnd" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "id" | "lang" | "placeholder" | "spellCheck" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEndCapture" | "opacity" | "value" | "key" | "sizes" | "variant" | "tx" | "as" | "css" | "m" | "margin" | "mt" | "marginTop" | "mr" | "marginRight" | "mb" | "marginBottom" | "ml" | "marginLeft" | "mx" | "marginX" | "my" | "marginY" | "pt" | "paddingTop" | "pr" | "paddingRight" | "pb" | "paddingBottom" | "pl" | "paddingLeft" | "px" | "paddingX" | "py" | "paddingY" | "width" | "height" | "minWidth" | "minHeight" | "maxWidth" | "maxHeight" | "display" | "verticalAlign" | "overflow" | "overflowX" | "overflowY" | "fontFamily" | "fontSize" | "fontWeight" | "lineHeight" | "letterSpacing" | "fontStyle" | "textAlign" | "bg" | "backgroundColor" | "alignItems" | "alignContent" | "justifyItems" | "justifyContent" | "flexWrap" | "flexDirection" | "flexGrow" | "flexShrink" | "flexBasis" | "justifySelf" | "alignSelf" | "sx" | "accept" | "acceptCharset" | "action" | "allowFullScreen" | "allowTransparency" | "alt" | "async" | "autoComplete" | "autoFocus" | "autoPlay" | "capture" | "cellPadding" | "cellSpacing" | "charSet" | "challenge" | "classID" | "cols" | "colSpan" | "controls" | "coords" | "crossOrigin" | "dateTime" | "defer" | "encType" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "frameBorder" | "headers" | "high" | "href" | "hrefLang" | "htmlFor" | "httpEquiv" | "integrity" | "keyParams" | "keyType" | "kind" | "loop" | "low" | "manifest" | "marginHeight" | "marginWidth" | "max" | "maxLength" | "media" | "mediaGroup" | "method" | "min" | "minLength" | "muted" | "nonce" | "noValidate" | "optimum" | "playsInline" | "poster" | "preload" | "readOnly" | "rel" | "required" | "reversed" | "rowSpan" | "sandbox" | "scope" | "scoped" | "scrolling" | "seamless" | "selected" | "shape" | "srcDoc" | "srcLang" | "srcSet" | "step" | "type" | "useMap" | "wmode" | "placehoder"> & React.RefAttributes<HTMLInputElement>>;
10
+ declare const Input: React.ForwardRefExoticComponent<Pick<InputProps, "children" | "size" | "name" | "tabIndex" | "color" | "style" | "cite" | "data" | "form" | "label" | "p" | "slot" | "span" | "summary" | "title" | "pattern" | "start" | "hidden" | "content" | "default" | "flex" | "wrap" | "open" | "padding" | "multiple" | "disabled" | "checked" | "download" | "list" | "order" | "target" | "rows" | "src" | "className" | "onTransitionEnd" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "id" | "lang" | "placeholder" | "spellCheck" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEndCapture" | "opacity" | "value" | "key" | "sizes" | "variant" | "tx" | "as" | "css" | "m" | "margin" | "mt" | "marginTop" | "mr" | "marginRight" | "mb" | "marginBottom" | "ml" | "marginLeft" | "mx" | "marginX" | "my" | "marginY" | "pt" | "paddingTop" | "pr" | "paddingRight" | "pb" | "paddingBottom" | "pl" | "paddingLeft" | "px" | "paddingX" | "py" | "paddingY" | "width" | "height" | "minWidth" | "minHeight" | "maxWidth" | "maxHeight" | "display" | "verticalAlign" | "overflow" | "overflowX" | "overflowY" | "fontFamily" | "fontSize" | "fontWeight" | "lineHeight" | "letterSpacing" | "fontStyle" | "textAlign" | "bg" | "backgroundColor" | "alignItems" | "alignContent" | "justifyItems" | "justifyContent" | "flexWrap" | "flexDirection" | "flexGrow" | "flexShrink" | "flexBasis" | "justifySelf" | "alignSelf" | "sx" | "accept" | "acceptCharset" | "action" | "allowFullScreen" | "allowTransparency" | "alt" | "async" | "autoComplete" | "autoFocus" | "autoPlay" | "capture" | "cellPadding" | "cellSpacing" | "charSet" | "challenge" | "classID" | "cols" | "colSpan" | "controls" | "coords" | "crossOrigin" | "dateTime" | "defer" | "encType" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "frameBorder" | "headers" | "high" | "href" | "hrefLang" | "htmlFor" | "httpEquiv" | "integrity" | "keyParams" | "keyType" | "kind" | "loop" | "low" | "manifest" | "marginHeight" | "marginWidth" | "max" | "maxLength" | "media" | "mediaGroup" | "method" | "min" | "minLength" | "muted" | "nonce" | "noValidate" | "optimum" | "playsInline" | "poster" | "preload" | "readOnly" | "rel" | "required" | "reversed" | "rowSpan" | "sandbox" | "scope" | "scoped" | "scrolling" | "seamless" | "selected" | "shape" | "srcDoc" | "srcLang" | "srcSet" | "step" | "type" | "useMap" | "wmode"> & React.RefAttributes<HTMLInputElement>>;
12
11
  export default Input;
@@ -10,14 +10,14 @@ export declare const baseClassName = "ab-Textarea";
10
10
  * - when typing, expand to fit content - max x px
11
11
  */
12
12
  export type TextareaProps = Omit<HTMLProps<HTMLTextAreaElement>, 'ref'> & {
13
- placehoder?: string;
13
+ placeholder?: string;
14
14
  type?: string;
15
15
  disabled?: boolean;
16
16
  value?: string;
17
17
  autoResizeOnFocus?: boolean;
18
18
  } & Omit<BoxProps, 'ref'>;
19
19
  declare const Textarea: React.ForwardRefExoticComponent<Omit<React.HTMLProps<HTMLTextAreaElement>, "ref"> & {
20
- placehoder?: string;
20
+ placeholder?: string;
21
21
  type?: string;
22
22
  disabled?: boolean;
23
23
  value?: string;
package/src/env.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export default {
2
2
  INFINITE_TABLE_LICENSE_KEY: "StartDate=2021-06-29|EndDate=2030-01-01|Owner=Adaptable|Type=distribution|TS=1624971462479|C=137829811,1004007071,2756196225,1839832928,3994409405,636616862" || '',
3
- PUBLISH_TIMESTAMP: 1711463137655 || Date.now(),
4
- VERSION: "18.0.0-canary.15" || '--current-version--',
3
+ PUBLISH_TIMESTAMP: 1711543401633 || Date.now(),
4
+ VERSION: "18.0.0-canary.17" || '--current-version--',
5
5
  };
@@ -563,6 +563,12 @@ export declare const ADAPTABLE_METAMODEL: {
563
563
  desc: string;
564
564
  isOpt?: undefined;
565
565
  ref?: undefined;
566
+ } | {
567
+ name: string;
568
+ kind: string;
569
+ desc: string;
570
+ ref: string;
571
+ isOpt?: undefined;
566
572
  } | {
567
573
  name: string;
568
574
  kind: string;