@adaptabletools/adaptable-cjs 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 +72 -71
  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 +72 -0
  17. package/src/PredefinedConfig/Common/RowSummary.d.ts +3 -1
  18. package/src/PredefinedConfig/Common/RowSummary.js +17 -1
  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 +31 -22
  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 +125 -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 +46 -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 +25 -1
  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 +29 -4
  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 +1 -56
  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.cjs.tsbuildinfo +1 -1
  81. package/src/Utilities/Services/Interface/ISummaryService.d.ts +0 -17
  82. package/src/Utilities/Services/Interface/ISummaryService.js +0 -15
  83. package/src/Utilities/Services/SummaryService.d.ts +0 -10
  84. package/src/Utilities/Services/SummaryService.js +0 -21
@@ -18,12 +18,13 @@ const ObjectFactory_1 = require("../../../Utilities/ObjectFactory");
18
18
  const HelpBlock_1 = tslib_1.__importDefault(require("../../../components/HelpBlock"));
19
19
  const rebass_1 = require("rebass");
20
20
  const Radio_1 = tslib_1.__importDefault(require("../../../components/Radio"));
21
- const Helper_1 = tslib_1.__importDefault(require("../../../Utilities/Helpers/Helper"));
21
+ const Helper_1 = tslib_1.__importStar(require("../../../Utilities/Helpers/Helper"));
22
22
  const AdaptableInput_1 = tslib_1.__importDefault(require("../AdaptableInput"));
23
23
  const renderWithAdaptableContext_1 = require("../../renderWithAdaptableContext");
24
24
  const CheckBox_1 = require("../../../components/CheckBox");
25
25
  const runIfNotResolvedIn_1 = require("../../../Utilities/runIfNotResolvedIn");
26
26
  const getDefaultColumnFilterPredicate_1 = require("./getDefaultColumnFilterPredicate");
27
+ const AdaptableDateInlineInput_1 = require("../AdaptableInput/AdaptableDateInlineInput");
27
28
  const panelStyle = {
28
29
  width: '100%',
29
30
  minWidth: 150,
@@ -178,13 +179,20 @@ class FilterFormComponent extends React.Component {
178
179
  this.changeColumnPredicateInput(newCheckedValue, 0);
179
180
  } })));
180
181
  }
181
- return (_a = predicateDef.inputs) === null || _a === void 0 ? void 0 : _a.map((predicateInput, index) => (React.createElement(rebass_1.Flex, { key: index, flexDirection: "row" },
182
- React.createElement(AdaptableInput_1.default, { onMouseDown: (event) => {
183
- if (predicateInput.type === 'date') {
184
- // This prevents the ag-grid dropdown closing when a date is selected
185
- event.stopPropagation();
186
- }
187
- }, disabled: this.isFilterDisabled(), type: predicateInput.type, autoFocus: index === 0, value: filter.Predicate.Inputs[index], onChange: (e) => this.changeColumnPredicateInput(e.target.value, index), mb: 1, flex: 1, fontSize: 2 }))));
182
+ return (_a = predicateDef.inputs) === null || _a === void 0 ? void 0 : _a.map((predicateInput, index) => {
183
+ var _a, _b;
184
+ const showDatePicker = (_b = (_a = this.props.api.optionsApi) === null || _a === void 0 ? void 0 : _a.getColumnFilterOptions()) === null || _b === void 0 ? void 0 : _b.showDatePicker;
185
+ if (predicateInput.type === 'date' && !showDatePicker) {
186
+ return (React.createElement(AdaptableDateInlineInput_1.AdaptableDateInlineInput, { value: filter.Predicate.Inputs[index], onChange: (value) => this.changeColumnPredicateInput(value, index) }));
187
+ }
188
+ return (React.createElement(rebass_1.Flex, { key: index, flexDirection: "row" },
189
+ React.createElement(AdaptableInput_1.default, { onMouseDown: (event) => {
190
+ if (predicateInput.type === 'date') {
191
+ // This prevents the ag-grid dropdown closing when a date is selected
192
+ event.stopPropagation();
193
+ }
194
+ }, disabled: this.isFilterDisabled(), type: predicateInput.type, autoFocus: index === 0, value: filter.Predicate.Inputs[index], onChange: (e) => this.changeColumnPredicateInput(e.target.value, index), mb: 1, flex: 1, fontSize: 2 })));
195
+ });
188
196
  }
189
197
  isFilterDisabled() {
190
198
  var _a;
@@ -259,12 +267,12 @@ class FilterFormComponent extends React.Component {
259
267
  }
260
268
  changeColumnPredicateInput(value, index) {
261
269
  const { editedColumnFilter } = this.state;
262
- editedColumnFilter.Predicate.Inputs[index] = value;
263
- this.setState({ editedColumnFilter });
270
+ const newEditedColumnFilter = (0, Helper_1.cloneObject)(editedColumnFilter);
271
+ newEditedColumnFilter.Predicate.Inputs[index] = value;
272
+ this.setState({ editedColumnFilter: newEditedColumnFilter });
264
273
  if (this.props.api.optionsApi.getColumnFilterOptions().autoApplyFilter) {
265
- this.props.onSetColumnFilter(editedColumnFilter);
274
+ this.props.onSetColumnFilter(newEditedColumnFilter);
266
275
  }
267
- // this.props.onSetColumnFilter(editedColumnFilter);
268
276
  }
269
277
  }
270
278
  function mapStateToProps(state, ownProps) {
@@ -19,6 +19,7 @@ const getDefaultColumnFilterPredicate_1 = require("./getDefaultColumnFilterPredi
19
19
  const Icon_1 = require("../../../components/Icon");
20
20
  const QuickFilterValues_1 = require("./QuickFilterValues");
21
21
  const AdaptableIconComponent_1 = require("../AdaptableIconComponent");
22
+ const AdaptableDateInlineInput_1 = require("../AdaptableInput/AdaptableDateInlineInput");
22
23
  class QuickFilterFormComponent extends React.Component {
23
24
  constructor(props) {
24
25
  super(props);
@@ -140,17 +141,23 @@ class QuickFilterFormComponent extends React.Component {
140
141
  } })));
141
142
  }
142
143
  return (_a = predicateDef === null || predicateDef === void 0 ? void 0 : predicateDef.inputs) === null || _a === void 0 ? void 0 : _a.map((predicateInput, index) => {
143
- var _a, _b;
144
+ var _a, _b, _c, _d, _e, _f;
145
+ const showDatePicker = (_b = (_a = this.props.api.optionsApi) === null || _a === void 0 ? void 0 : _a.getColumnFilterOptions()) === null || _b === void 0 ? void 0 : _b.showDatePicker;
146
+ const value = (_d = (_c = filter.Predicate.Inputs) === null || _c === void 0 ? void 0 : _c[index]) !== null && _d !== void 0 ? _d : '';
147
+ const onKeyDownCapture = (e) => {
148
+ if (e.nativeEvent.key === 'Escape') {
149
+ e.nativeEvent.preventDefault();
150
+ e.nativeEvent.stopPropagation();
151
+ this.clearFilter();
152
+ }
153
+ };
154
+ if (predicateInput.type === 'date' && !showDatePicker) {
155
+ return (React.createElement(AdaptableDateInlineInput_1.AdaptableDateInlineInput, { value: value, key: index, onKeyDownCapture: onKeyDownCapture, onChange: (value) => this.changeColumnPredicateInput(value, index) }));
156
+ }
144
157
  return (React.createElement(AdaptableInput_1.default, { disabled: this.isFilterDisabled(), key: index, type: predicateInput.type === 'number' ? 'text' : predicateInput.type,
145
158
  // autoFocus has to be FALSE because if the input receives focus in the init phase,
146
159
  // it may scroll the AG Grid header viewport into view and de-synchronize it (relative to the content viewport)
147
- 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) => {
148
- if (e.nativeEvent.key === 'Escape') {
149
- e.nativeEvent.preventDefault();
150
- e.nativeEvent.stopPropagation();
151
- this.clearFilter();
152
- }
153
- }, style: {
160
+ 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: {
154
161
  width: '100%',
155
162
  padding: 'var(--ab-space-1)',
156
163
  borderRadius: 0,
@@ -66,7 +66,7 @@ function ValueSelector(props) {
66
66
  const label = !allowReorder ? preparedToLabel(option) : null;
67
67
  const reorderable = typeof allowReorder === 'function' ? allowReorder(option) : allowReorder;
68
68
  const renderNode = (props, dragHandleProps) => {
69
- return (React.createElement(rebass_1.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),
69
+ return (React.createElement(rebass_1.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),
70
70
  React.createElement(rebass_1.Flex, { flex: 1, flexDirection: "row", alignItems: "center" },
71
71
  reorderable ? (React.createElement(rebass_1.Box, Object.assign({ mr: 3 }, dragHandleProps),
72
72
  React.createElement(icons_1.Icon, { name: "drag", style: { cursor: 'grab' } }))) : null,
@@ -53,7 +53,7 @@ const QueryViewPanelComponent = (props) => {
53
53
  paddingTop: 6,
54
54
  overflow: 'hidden',
55
55
  zIndex: 100,
56
- }, placehoder: "Grid Filter", onChange: (x) => setExpression(x.target.value), value: expression })),
56
+ }, placeholder: "Grid Filter", onChange: (x) => setExpression(x.target.value), value: expression })),
57
57
  isExpressionValid && (React.createElement(ButtonPlay_1.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 })),
58
58
  gridFilter && !isExpressionValid && (React.createElement(ButtonInvalid_1.ButtonInvalid, { variant: "text", tone: "neutral", tooltip: "Invalid Grid Filter", marginRight: 1 })),
59
59
  ' ',
@@ -79,7 +79,7 @@ const QueryViewPanelComponent = (props) => {
79
79
  zIndex: 100,
80
80
  height: '100%',
81
81
  overflow: 'hidden',
82
- }, placehoder: "Grid Filter", onChange: (x) => setExpression(x.target.value), value: expression }))));
82
+ }, placeholder: "Grid Filter", onChange: (x) => setExpression(x.target.value), value: expression }))));
83
83
  };
84
84
  const saveButton = (React.createElement(ButtonSave_1.ButtonSave, { onClick: () => saveQuery(), tooltip: "Save as Named Query", accessLevel: namedQueryModuleAccessLevel, disabled: disabled || !isExpressionValid || isExpressionNamedQuery || expression == '', variant: "text", tone: "neutral", marginRight: 1 }));
85
85
  const suspendButton = (React.createElement(ButtonPause_1.ButtonPause, { onClick: () => suspendGridFilter(), tooltip: "Suspend Grid Filter", accessLevel: gridFilterAccessLevel, disabled: disabled || !isExpressionValid, variant: "text", tone: "neutral", marginRight: 1 }));
@@ -19,6 +19,7 @@ const SortSection_1 = require("./sections/SortSection");
19
19
  const FilterSection_1 = require("./sections/FilterSection");
20
20
  const GridFilterSection_1 = require("./sections/GridFilterSection");
21
21
  const RowSummarySection_1 = require("./sections/RowSummarySection");
22
+ const RowSummary_1 = require("../../../PredefinedConfig/Common/RowSummary");
22
23
  const LayoutWizard = (props) => {
23
24
  var _a, _b;
24
25
  const dispatch = (0, react_redux_1.useDispatch)();
@@ -107,6 +108,7 @@ const LayoutWizard = (props) => {
107
108
  {
108
109
  title: 'Row Groups',
109
110
  isVisible: () => layoutSupportedFeatures.RowGroupedColumns,
111
+ isValid: RowSummarySection_1.areSummaryRowsValid,
110
112
  details: 'Configure Row Grouping',
111
113
  renderSummary: () => React.createElement(RowGroupingSection_1.RowGroupingSectionSummary, null),
112
114
  render: () => (React.createElement(rebass_1.Box, { p: 2, style: { height: '100%' } },
@@ -119,7 +121,29 @@ const LayoutWizard = (props) => {
119
121
  renderSummary: () => React.createElement(AggregationsSection_1.AggregationsSectionSummary, null),
120
122
  isValid: (data) => (0, AggregationsSection_1.isAggregationsSectionValid)(data),
121
123
  render: () => (React.createElement(rebass_1.Box, { p: 2, style: { height: '100%' } },
122
- React.createElement(AggregationsSection_1.AggregationsSection, { onChange: setLayout }))),
124
+ React.createElement(AggregationsSection_1.AggregationsSection, { onChange: (layout) => {
125
+ let newLayout = (0, Helper_1.cloneObject)(layout);
126
+ // if we do not have an weighted avg col, we need to clear the row summary if one exists
127
+ if (newLayout.RowSummaries) {
128
+ newLayout.RowSummaries = newLayout.RowSummaries.map((rowSummary) => {
129
+ return Object.assign(Object.assign({}, rowSummary), { ColumnsMap: Object.entries(rowSummary.ColumnsMap).reduce((acc, [columnId, aggFunc]) => {
130
+ if (
131
+ // see if it is weighted avg
132
+ aggFunc === RowSummary_1.WEIGHTED_AVERAGE_AGGREATED_FUNCTION &&
133
+ // see if we have a weight in the agg columns
134
+ newLayout.AggregationColumns[columnId] &&
135
+ (typeof newLayout.AggregationColumns[columnId] !== 'object' ||
136
+ newLayout.AggregationColumns[columnId].weightColumnId)) {
137
+ // need to remove the row summary
138
+ return acc;
139
+ }
140
+ acc[columnId] = aggFunc;
141
+ return acc;
142
+ }, {}) });
143
+ });
144
+ }
145
+ setLayout(newLayout);
146
+ } }))),
123
147
  },
124
148
  {
125
149
  title: 'Row Summaries',
@@ -175,7 +175,7 @@ const ColumnRow = (props) => {
175
175
  React.createElement(FormLayout_1.FormRow, { label: "ColumnId" },
176
176
  React.createElement(Tag_1.Tag, null, props.column.columnId)),
177
177
  React.createElement(FormLayout_1.FormRow, { label: "Header" },
178
- React.createElement(Input_1.default, { "data-name": "column-header", className: "ab-Layout-Wizard__ColumnRow__Input", placehoder: "Custom name (optional)", onChange: () => {
178
+ React.createElement(Input_1.default, { "data-name": "column-header", className: "ab-Layout-Wizard__ColumnRow__Input", placeholder: "Custom name (optional)", onChange: () => {
179
179
  props.onColumnNameChange(props.column.columnId, event.target.value);
180
180
  }, value: customHeader })),
181
181
  React.createElement(FormLayout_1.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;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RowSummarySection = exports.RowGroupingSectionSummary = void 0;
3
+ exports.RowSummarySection = exports.RowGroupingSectionSummary = exports.areSummaryRowsValid = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const React = tslib_1.__importStar(require("react"));
6
6
  const rebass_1 = require("rebass");
@@ -10,21 +10,38 @@ const Select_1 = require("../../../../components/Select");
10
10
  const SimpleButton_1 = tslib_1.__importDefault(require("../../../../components/SimpleButton"));
11
11
  const Tabs_1 = require("../../../../components/Tabs");
12
12
  const Tag_1 = require("../../../../components/Tag");
13
+ const RowSummary_1 = require("../../../../PredefinedConfig/Common/RowSummary");
13
14
  const adaptableQlUtils_1 = require("../../../../Utilities/adaptableQlUtils");
14
15
  const ModuleConstants_1 = require("../../../../Utilities/Constants/ModuleConstants");
15
- const ISummaryService_1 = require("../../../../Utilities/Services/Interface/ISummaryService");
16
16
  const sortWithOrder_1 = require("../../../../Utilities/sortWithOrder");
17
17
  const AdaptableContext_1 = require("../../../AdaptableContext");
18
18
  const ValueSelector_1 = require("../../../Components/ValueSelector");
19
19
  const OnePageAdaptableWizard_1 = require("../../../Wizard/OnePageAdaptableWizard");
20
20
  const Utilities_1 = require("./Utilities");
21
+ const areSummaryRowsValid = (layout) => {
22
+ var _a;
23
+ if (!layout.RowSummaries)
24
+ return true;
25
+ let valid = true;
26
+ (_a = layout.RowSummaries) === null || _a === void 0 ? void 0 : _a.find((rowSummary) => {
27
+ var _a;
28
+ for (const [_, fn] of Object.entries((_a = rowSummary.ColumnsMap) !== null && _a !== void 0 ? _a : {})) {
29
+ if (!fn) {
30
+ valid = 'All row summary columns must have an aggregation function.';
31
+ return true;
32
+ }
33
+ }
34
+ });
35
+ return valid;
36
+ };
37
+ exports.areSummaryRowsValid = areSummaryRowsValid;
21
38
  const getAvailableExpressionsForColumnType = (columnType, availableScalarExpressions) => {
22
39
  const inputType = (0, adaptableQlUtils_1.mapColumnDataTypeToExpressionFunctionType)(columnType);
23
40
  return Object.entries(availableScalarExpressions !== null && availableScalarExpressions !== void 0 ? availableScalarExpressions : {})
24
41
  .map(([expression, expressionDef]) => {
25
42
  var _a, _b;
26
43
  let firstArg = null;
27
- if (!ISummaryService_1.summarySupportedExpressions.includes(expression)) {
44
+ if (!RowSummary_1.summarySupportedExpressions.includes(expression)) {
28
45
  return null;
29
46
  }
30
47
  if (Array.isArray((_a = expressionDef === null || expressionDef === void 0 ? void 0 : expressionDef.inputs) === null || _a === void 0 ? void 0 : _a[0])) {
@@ -58,7 +75,7 @@ const RowSummaryEditor = ({ rowSummary, onChange, availableScalarExpressions, on
58
75
  .getColumns()
59
76
  .filter((column) => {
60
77
  var _a, _b;
61
- if (!['Number', 'String'].includes(column.dataType))
78
+ if (!['Number', 'String', 'Date'].includes(column.dataType))
62
79
  return false;
63
80
  return (_b = (_a = layout.Columns) === null || _a === void 0 ? void 0 : _a.includes) === null || _b === void 0 ? void 0 : _b.call(_a, column.columnId);
64
81
  })
@@ -101,6 +118,14 @@ const RowSummaryEditor = ({ rowSummary, onChange, availableScalarExpressions, on
101
118
  label: expression,
102
119
  value: expression,
103
120
  }));
121
+ // check out if this layout has a aggregation with wighted column
122
+ const aggregation = layout.AggregationColumns[column.columnId];
123
+ if (aggregation && typeof aggregation === 'object' && aggregation.weightedColumnId) {
124
+ expressionOptions.push({
125
+ label: 'WEIGHTERD_AVG',
126
+ value: RowSummary_1.WEIGHTED_AVERAGE_AGGREATED_FUNCTION,
127
+ });
128
+ }
104
129
  const expression = rowSummary.ColumnsMap[column.columnId];
105
130
  return (React.createElement(rebass_1.Flex, null,
106
131
  React.createElement(rebass_1.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;
@@ -99,7 +99,6 @@ const AdaptableUpgradeHelper_1 = require("../migration/AdaptableUpgradeHelper");
99
99
  const Modal_1 = require("../components/Modal");
100
100
  const AdaptableLoadingScreen_1 = require("../View/Components/Popups/AdaptableLoadingScreen");
101
101
  const react_1 = require("react");
102
- const SummaryService_1 = require("../Utilities/Services/SummaryService");
103
102
  const AdaptableHelper_1 = require("../Utilities/Helpers/AdaptableHelper");
104
103
  const RowNodeProto = core_1.RowNode.prototype;
105
104
  const RowNode_dispatchLocalEvent = RowNodeProto.dispatchLocalEvent;
@@ -902,7 +901,7 @@ class AdaptableAgGrid {
902
901
  */
903
902
  // this will have to go/be heavily extended with https://github.com/AdaptableTools/adaptable/issues/2230
904
903
  this.agGridOptionsService.setGridOptionsProperty(gridOptions, 'columnTypes', (original_columnTypes) => {
905
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
904
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
906
905
  const providedColumnTypes = original_columnTypes || {};
907
906
  const gridOptionsColumnTypes = gridOptions.columnTypes || {};
908
907
  const patchedColumnTypes = Object.assign(providedColumnTypes, {
@@ -919,6 +918,12 @@ class AdaptableAgGrid {
919
918
  abColDefTupleNumberArray: (_j = gridOptionsColumnTypes.abColDefTupleNumberArray) !== null && _j !== void 0 ? _j : {},
920
919
  abColDefObjectNumberArray: (_k = gridOptionsColumnTypes.abColDefObjectNumberArray) !== null && _k !== void 0 ? _k : {},
921
920
  });
921
+ const customColumnTypes = (_l = this.api.columnApi.getColumnTypes()) !== null && _l !== void 0 ? _l : [];
922
+ for (const customColumnType of customColumnTypes) {
923
+ if (!patchedColumnTypes[customColumnType]) {
924
+ patchedColumnTypes[customColumnType] = {};
925
+ }
926
+ }
922
927
  if (patchedColumnTypes.abColDefNumber.cellEditor == undefined) {
923
928
  patchedColumnTypes.abColDefNumber.cellEditor =
924
929
  this.variant === 'react' ? AdaptableNumberEditor_1.ReactAdaptableNumberEditor : AdaptableNumberEditor_1.AdaptableNumberEditor;
@@ -1141,6 +1146,13 @@ class AdaptableAgGrid {
1141
1146
  const currentLayout = (0, AdaptableHelper_1.removeUuidAndSource)(_currentLayout);
1142
1147
  const allAgGridFlattenedColDefs = this.agGridAdapter.getFlattenedColDefs(agGridColDefs);
1143
1148
  const allAgGridColDefIds = allAgGridFlattenedColDefs.map((colDef) => colDef.colId);
1149
+ const { columnApi } = this.api;
1150
+ // also add the row group columns, if they are specified in the layout
1151
+ currentLayout.Columns.forEach((colId) => {
1152
+ if (columnApi.isAutoRowGroupColumn(colId)) {
1153
+ allAgGridColDefIds.push(colId);
1154
+ }
1155
+ });
1144
1156
  const getColDef = (colId) => allAgGridFlattenedColDefs.find((colDef) => colDef.colId === colId);
1145
1157
  agGridState.columnVisibility = {
1146
1158
  hiddenColIds: allAgGridFlattenedColDefs
@@ -1566,7 +1578,6 @@ class AdaptableAgGrid {
1566
1578
  this.AlertService = new AlertService_1.AlertService(this.api);
1567
1579
  this.TeamSharingService = new TeamSharingService_1.TeamSharingService(this.api);
1568
1580
  this.Fdc3Service = new Fdc3Service_1.Fdc3Service(this.api);
1569
- this.SummaryService = new SummaryService_1.SummaryService(this.api);
1570
1581
  this.CellPopupService = new CellPopupService_1.CellPopupService(this.api);
1571
1582
  this.RowEditService = new RowEditService_1.RowEditService(this.api);
1572
1583
  this.MetamodelService = new MetamodelService_1.MetamodelService(() => this.api.optionsApi.getAdaptableOptions(), true);
@@ -2214,17 +2225,6 @@ class AdaptableAgGrid {
2214
2225
  const colId2 = colState2.colId;
2215
2226
  const originalIndex1 = columnsStateIndexes[colId1];
2216
2227
  const originalIndex2 = columnsStateIndexes[colId2];
2217
- const isRowGroup1 = this.api.columnApi.isAutoRowGroupColumn(colId1);
2218
- const isRowGroup2 = this.api.columnApi.isAutoRowGroupColumn(colId2);
2219
- if (isRowGroup1 && isRowGroup2) {
2220
- return 1;
2221
- }
2222
- if (isRowGroup1) {
2223
- return -1;
2224
- }
2225
- if (isRowGroup2) {
2226
- return 1;
2227
- }
2228
2228
  if (newVisibleColumnsMap[colId1] != null && newVisibleColumnsMap[colId2] == null) {
2229
2229
  return -1;
2230
2230
  }
@@ -210,11 +210,13 @@ class AgGridMenuAdapter {
210
210
  if (submenuItems.length === 1) {
211
211
  return submenuItems[0];
212
212
  }
213
- return {
214
- label: moduleOrGroup.title,
215
- icon: moduleOrGroup.icon,
216
- subItems: submenuItems,
217
- };
213
+ return [
214
+ {
215
+ label: moduleOrGroup.title,
216
+ icon: moduleOrGroup.icon,
217
+ subItems: submenuItems,
218
+ },
219
+ ];
218
220
  }
219
221
  else {
220
222
  return adaptableMenuItems.filter((menuItem) => menuItem.module === moduleOrGroup);
@@ -217,6 +217,7 @@ const DefaultAdaptableOptions = {
217
217
  enableFilterOnSpecialColumns: true,
218
218
  showClearFilterButton: false,
219
219
  showSuspendFilterButton: false,
220
+ showDatePicker: true,
220
221
  },
221
222
  gridFilterOptions: {
222
223
  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,8 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.cellSummaryWeightedAverage = exports.weightedAverage = exports.getNumericValue = void 0;
3
+ exports.weightedAverage = exports.getNumericValue = void 0;
4
4
  const tslib_1 = require("tslib");
5
- const FormatHelper_1 = tslib_1.__importDefault(require("../Utilities/Helpers/FormatHelper"));
6
5
  const toNumber_1 = tslib_1.__importDefault(require("lodash/toNumber"));
7
6
  const getNumericValue = (input) => {
8
7
  if (typeof input === 'number') {
@@ -52,57 +51,3 @@ const weightedAverage = (params, columnId, weightColumnId) => {
52
51
  };
53
52
  };
54
53
  exports.weightedAverage = weightedAverage;
55
- const cellSummaryWeightedAverage = ({ numericColumns, selectedCellInfo, adaptableApi, }) => {
56
- if ((numericColumns === null || numericColumns === void 0 ? void 0 : numericColumns.length) != 1) {
57
- return '';
58
- }
59
- const columnId = numericColumns[0];
60
- const currentLayout = adaptableApi.layoutApi.getCurrentLayout();
61
- const selectedColumnAgg = currentLayout.AggregationColumns[columnId];
62
- if (!selectedColumnAgg ||
63
- typeof selectedColumnAgg !== 'object' ||
64
- selectedColumnAgg.type !== 'weightedAverage') {
65
- return '';
66
- }
67
- const weightedColumnId = selectedColumnAgg.weightedColumnId;
68
- if (weightedColumnId) {
69
- let sumWeightedValue = 0;
70
- let sumPrimaryValues = 0;
71
- let isValid = true;
72
- selectedCellInfo.gridCells.forEach((gridCell) => {
73
- if (adaptableApi.gridApi.isGroupRowNode(gridCell.rowNode)) {
74
- isValid = false;
75
- }
76
- if (isValid) {
77
- const weightedGridCell = adaptableApi.gridApi.getGridCellFromRowNode(gridCell.rowNode, weightedColumnId);
78
- sumWeightedValue += weightedGridCell.rawValue;
79
- sumPrimaryValues += weightedGridCell.rawValue * gridCell.normalisedValue;
80
- }
81
- });
82
- if (!isValid) {
83
- return '';
84
- }
85
- const abColumn = adaptableApi.columnApi.getColumnWithColumnId(columnId);
86
- if (!abColumn) {
87
- return '';
88
- }
89
- const activeFormatColumnsWithDisplayFormat = adaptableApi.formatColumnApi.internalApi.getFormatColumnsWithDisplayFormatForColumn(abColumn);
90
- if (activeFormatColumnsWithDisplayFormat.length === 1 &&
91
- activeFormatColumnsWithDisplayFormat[0].DisplayFormat.Formatter === 'NumberFormatter') {
92
- // there only one FormatColumn on this column, so we will use it to format the aggregated value
93
- const [singleActiveFormatColumnsWithDisplayFormat] = activeFormatColumnsWithDisplayFormat;
94
- const options = singleActiveFormatColumnsWithDisplayFormat
95
- .DisplayFormat.Options;
96
- if (options) {
97
- return FormatHelper_1.default.NumberFormatter(sumPrimaryValues / sumWeightedValue, options);
98
- }
99
- }
100
- else {
101
- // there are multiple (possibly conflicting) FormatColumns for this column, we cannot know which to use
102
- return FormatHelper_1.default.NumberFormatter(sumPrimaryValues / sumWeightedValue, {
103
- FractionDigits: 2,
104
- });
105
- }
106
- }
107
- };
108
- exports.cellSummaryWeightedAverage = cellSummaryWeightedAverage;
@@ -4,7 +4,6 @@ exports.Datepicker = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const React = tslib_1.__importStar(require("react"));
6
6
  const OverlayTrigger_1 = tslib_1.__importDefault(require("../OverlayTrigger"));
7
- const Input_1 = tslib_1.__importDefault(require("../Input"));
8
7
  const react_1 = require("react");
9
8
  const useProperty_1 = tslib_1.__importDefault(require("../utils/useProperty"));
10
9
  const FieldWrap_1 = tslib_1.__importDefault(require("../FieldWrap"));
@@ -17,6 +16,8 @@ const DatepickerContext_1 = require("./DatepickerContext");
17
16
  const addDays_1 = tslib_1.__importDefault(require("date-fns/addDays"));
18
17
  const addBusinessDays_1 = tslib_1.__importDefault(require("date-fns/addBusinessDays"));
19
18
  const react_day_picker_1 = require("react-day-picker");
19
+ const AdaptableDateInlineInput_1 = require("../../View/Components/AdaptableInput/AdaptableDateInlineInput");
20
+ const date_fns_1 = require("date-fns");
20
21
  const DatepickerOverlay = ({ onHide, children, onKeyDown, onMouseDown, }) => {
21
22
  const domRef = React.useRef(null);
22
23
  React.useEffect(() => {
@@ -102,7 +103,14 @@ exports.Datepicker = React.forwardRef((props, ref) => {
102
103
  setVisible(true);
103
104
  }
104
105
  } }),
105
- React.createElement(Input_1.default, { value: inputValue, placehoder: placeholder !== null && placeholder !== void 0 ? placeholder : dateProps.format, style: style, disabled: disabled, readOnly: true, ref: ref }),
106
+ React.createElement(AdaptableDateInlineInput_1.AdaptableDateInlineInput, { ref: ref, value: inputValue,
107
+ // We do not want to show the format when the date-picker is visible
108
+ placeholder: placeholder !== null && placeholder !== void 0 ? placeholder : '', onChange: (value) => {
109
+ const date = new Date(value);
110
+ if ((0, date_fns_1.isValid)(date)) {
111
+ updateValue(date);
112
+ }
113
+ }, style: style, disabled: disabled }),
106
114
  !!inputValue ? clearButton : null,
107
115
  calendarButton))));
108
116
  });
@@ -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
@@ -2,6 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.default = {
4
4
  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" || '',
5
- PUBLISH_TIMESTAMP: 1711463167212 || Date.now(),
6
- VERSION: "18.0.0-canary.15" || '--current-version--',
5
+ PUBLISH_TIMESTAMP: 1711543434054 || Date.now(),
6
+ VERSION: "18.0.0-canary.17" || '--current-version--',
7
7
  };
@@ -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;