@adaptabletools/adaptable 18.0.0-canary.8 → 18.0.0-canary.9

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/base.css.map +1 -1
  2. package/index.css.map +1 -1
  3. package/package.json +1 -1
  4. package/src/AdaptableInterfaces/IAdaptable.d.ts +8 -1
  5. package/src/AdaptableOptions/AdaptableOptions.d.ts +1 -1
  6. package/src/Api/ConfigApi.d.ts +1 -1
  7. package/src/Api/GridApi.d.ts +4 -0
  8. package/src/Api/Implementation/CommentsApiImpl.d.ts +4 -0
  9. package/src/Api/Implementation/CommentsApiImpl.js +5 -0
  10. package/src/Api/Implementation/ConfigApiImpl.js +6 -3
  11. package/src/Api/Implementation/GridApiImpl.d.ts +1 -0
  12. package/src/Api/Implementation/GridApiImpl.js +13 -0
  13. package/src/Api/Implementation/LayoutApiImpl.d.ts +2 -4
  14. package/src/Api/Implementation/LayoutApiImpl.js +15 -14
  15. package/src/Api/Implementation/NotesApiImpl.d.ts +4 -0
  16. package/src/Api/Implementation/NotesApiImpl.js +5 -0
  17. package/src/Api/Implementation/ScopeApiImpl.d.ts +2 -0
  18. package/src/Api/Implementation/ScopeApiImpl.js +20 -7
  19. package/src/Api/Internal/CalculatedColumnInternalApi.js +1 -1
  20. package/src/Api/Internal/CommentsInternalApi.d.ts +4 -0
  21. package/src/Api/Internal/CommentsInternalApi.js +13 -0
  22. package/src/Api/Internal/FormatColumnInternalApi.js +3 -2
  23. package/src/Api/Internal/FreeTextColumnInternalApi.js +1 -1
  24. package/src/Api/Internal/NotesInternalApi.d.ts +4 -0
  25. package/src/Api/Internal/NotesInternalApi.js +13 -0
  26. package/src/Api/LayoutApi.d.ts +11 -8
  27. package/src/Api/ScopeApi.d.ts +10 -0
  28. package/src/PredefinedConfig/Common/AdaptableColumn.d.ts +4 -0
  29. package/src/PredefinedConfig/Common/AdaptableIcon.d.ts +1 -1
  30. package/src/PredefinedConfig/Common/AdaptableScope.d.ts +4 -1
  31. package/src/PredefinedConfig/Common/RowSummary.d.ts +7 -0
  32. package/src/PredefinedConfig/Common/RowSummary.js +1 -0
  33. package/src/PredefinedConfig/LayoutState.d.ts +5 -0
  34. package/src/PredefinedConfig/SystemState.d.ts +7 -0
  35. package/src/Redux/ActionsReducers/LayoutRedux.d.ts +9 -0
  36. package/src/Redux/ActionsReducers/LayoutRedux.js +20 -0
  37. package/src/Redux/ActionsReducers/SystemRedux.d.ts +5 -0
  38. package/src/Redux/ActionsReducers/SystemRedux.js +13 -1
  39. package/src/Redux/Store/AdaptableStore.js +11 -0
  40. package/src/Redux/Store/Interface/IAdaptableStore.d.ts +2 -2
  41. package/src/Strategy/CellSummaryModule.d.ts +1 -0
  42. package/src/Strategy/CellSummaryModule.js +50 -21
  43. package/src/Strategy/CommentsModule.js +3 -0
  44. package/src/Strategy/LayoutModule.d.ts +7 -0
  45. package/src/Strategy/LayoutModule.js +102 -3
  46. package/src/Strategy/NotesModule.js +3 -4
  47. package/src/Utilities/ExpressionFunctions/aggregatedScalarExpressionFunctions.d.ts +2 -1
  48. package/src/Utilities/ExpressionFunctions/aggregatedScalarExpressionFunctions.js +294 -0
  49. package/src/Utilities/ExpressionFunctions/scalarAggregationHelper.js +1 -1
  50. package/src/Utilities/Extensions/ArrayExtensions.d.ts +2 -0
  51. package/src/Utilities/Extensions/ArrayExtensions.js +4 -0
  52. package/src/Utilities/ObjectFactory.js +6 -6
  53. package/src/Utilities/Services/AggregatedScalarLiveValue.d.ts +3 -2
  54. package/src/Utilities/Services/AggregatedScalarLiveValue.js +11 -8
  55. package/src/Utilities/Services/Interface/IQueryLanguageService.d.ts +1 -1
  56. package/src/Utilities/Services/LicenseService/index.js +4 -1
  57. package/src/Utilities/Services/QueryLanguageService.d.ts +1 -1
  58. package/src/Utilities/Services/QueryLanguageService.js +2 -1
  59. package/src/Utilities/Services/SummaryService.d.ts +19 -0
  60. package/src/Utilities/Services/SummaryService.js +29 -0
  61. package/src/View/Components/AdaptableDateInput/index.d.ts +1 -1
  62. package/src/View/Components/NewScopeComponent.js +32 -1
  63. package/src/View/Layout/TransposedPopup.js +7 -6
  64. package/src/agGrid/AdaptableAgGrid.d.ts +15 -1
  65. package/src/agGrid/AdaptableAgGrid.js +131 -23
  66. package/src/agGrid/AgGridAdapter.d.ts +1 -0
  67. package/src/agGrid/AgGridAdapter.js +8 -0
  68. package/src/agGrid/AgGridColumnAdapter.js +14 -3
  69. package/src/components/ColorPicker/ColorPicker.d.ts +1 -1
  70. package/src/components/Datepicker/index.d.ts +1 -1
  71. package/src/components/Input/index.d.ts +1 -1
  72. package/src/components/List/ListGroupItem/index.d.ts +1 -1
  73. package/src/components/icons/index.js +2 -0
  74. package/src/components/icons/rows.d.ts +3 -0
  75. package/src/components/icons/rows.js +4 -0
  76. package/src/env.js +2 -2
  77. package/src/metamodel/adaptable.metamodel.d.ts +8 -0
  78. package/src/metamodel/adaptable.metamodel.js +18 -0
  79. package/src/parser/src/types.d.ts +5 -0
  80. package/tsconfig.esm.tsbuildinfo +1 -1
  81. package/src/View/Components/ScopeComponent.d.ts +0 -24
  82. package/src/View/Components/ScopeComponent.js +0 -133
  83. package/src/View/Export/Wizard/ReportScopeWizard.d.ts +0 -17
  84. package/src/View/Export/Wizard/ReportScopeWizard.js +0 -47
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
2
  import { AdaptableInputProps } from '../AdaptableInput';
3
3
  export type AdaptableDateInputProps = AdaptableInputProps;
4
- declare const AdaptableDateInput: React.ForwardRefExoticComponent<Pick<import("../../../components/Input").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" | "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" | "rows" | "rowSpan" | "sandbox" | "scope" | "scoped" | "scrolling" | "seamless" | "selected" | "shape" | "srcDoc" | "srcLang" | "srcSet" | "step" | "type" | "useMap" | "wmode" | "placehoder"> & React.RefAttributes<HTMLInputElement>>;
4
+ declare const AdaptableDateInput: React.ForwardRefExoticComponent<Pick<import("../../../components/Input").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>>;
5
5
  export default AdaptableDateInput;
@@ -79,6 +79,9 @@ export const NewScopeComponent = (props) => {
79
79
  if (scopeApi.scopeHasDataType(props.scope)) {
80
80
  return 'DataType';
81
81
  }
82
+ if (scopeApi.scopeHasColumnType(props.scope)) {
83
+ return 'ColumnType';
84
+ }
82
85
  return undefined;
83
86
  };
84
87
  const onScopeSelectChanged = (value) => {
@@ -93,6 +96,11 @@ export const NewScopeComponent = (props) => {
93
96
  DataTypes: [],
94
97
  };
95
98
  }
99
+ else if (value == 'ColumnType') {
100
+ newScope = {
101
+ ColumnTypes: [],
102
+ };
103
+ }
96
104
  else {
97
105
  newScope = {
98
106
  All: true,
@@ -128,6 +136,9 @@ export const NewScopeComponent = (props) => {
128
136
  if (Array.isArray(props.availableDataTypes)) {
129
137
  dataTypeOptions = props.availableDataTypes.map((dataType) => DATA_TYPES_MAP[dataType]);
130
138
  }
139
+ const hasColumnTypes = React.useMemo(() => {
140
+ return api.optionsApi.getColumnOptions().columnTypes.length > 0;
141
+ }, []);
131
142
  return (React.createElement(Tabs, { "data-name": 'scope-component', className: "ab-ScopeComponent", value: scopeChoice, style: Object.assign({ height: '100%' }, props.style), onValueChange: onScopeSelectChanged },
132
143
  props.hideWholeRow ? null : (React.createElement(Tabs.Tab, { value: "Row" },
133
144
  React.createElement(Radio, { margin: 0, checked: scopeChoice == 'All', tabIndex: -1 }, "All Columns"))),
@@ -135,6 +146,8 @@ export const NewScopeComponent = (props) => {
135
146
  React.createElement(Radio, { margin: 0, value: "Column", checked: scopeChoice == 'Column', tabIndex: -1 }, "Selected Columns"))),
136
147
  !props.disableDataTypes && (React.createElement(Tabs.Tab, { value: "DataType" },
137
148
  React.createElement(Radio, { margin: 0, value: "DataType", checked: scopeChoice == 'DataType', tabIndex: -1 }, "Data Types"))),
149
+ hasColumnTypes && (React.createElement(Tabs.Tab, { value: "ColumnType" },
150
+ React.createElement(Radio, { margin: 0, value: "ColumnType", checked: scopeChoice == 'ColumnType', tabIndex: -1 }, "Column Types"))),
138
151
  props.hideWholeRow ? null : (React.createElement(Tabs.Content, { value: "Row", style: { flex: 'none' }, "data-name": "row-scope" },
139
152
  React.createElement(Text, { padding: 2, pl: 0, fontSize: 2 }, props.descriptions.rowScope))),
140
153
  !props.disableColumns && (React.createElement(Tabs.Content, { value: "Column", style: { flex: 1, overflow: 'auto' }, "data-name": "column-scope", padding: 0 },
@@ -147,5 +160,23 @@ export const NewScopeComponent = (props) => {
147
160
  !props.disableDataTypes && (React.createElement(Tabs.Content, { value: "DataType", style: { flex: 'none' }, "data-name": "datatype-scope" },
148
161
  React.createElement(Box, null,
149
162
  props.descriptions.dataTypeScope && (React.createElement(Text, { p: 2, pl: 0, mb: 2, fontSize: 2 }, props.descriptions.dataTypeScope)),
150
- React.createElement(Flex, { flexDirection: "column" }, dataTypeOptions.map((dataTypeOption) => (React.createElement(CheckBox, { "data-name": "scope", "data-value": dataTypeOption.value, key: dataTypeOption.value, checked: dataTypesInScope && dataTypesInScope.includes(dataTypeOption.value), onChange: (checked) => onCheckBoxDataTypeChecked(checked, dataTypeOption.value) }, dataTypeOption.label)))))))));
163
+ React.createElement(Flex, { flexDirection: "column" }, dataTypeOptions.map((dataTypeOption) => (React.createElement(CheckBox, { "data-name": "scope", "data-value": dataTypeOption.value, key: dataTypeOption.value, checked: dataTypesInScope && dataTypesInScope.includes(dataTypeOption.value), onChange: (checked) => onCheckBoxDataTypeChecked(checked, dataTypeOption.value) }, dataTypeOption.label))))))),
164
+ hasColumnTypes && (React.createElement(Tabs.Content, { value: "ColumnType", style: { flex: 'none' }, "data-name": "column-type-scope" },
165
+ React.createElement(Box, null,
166
+ React.createElement(Flex, { flexDirection: "column" }, api.optionsApi.getColumnOptions().columnTypes.map((columnType) => {
167
+ var _a;
168
+ return (React.createElement(CheckBox, { "data-name": "scope", "data-value": columnType, key: columnType, checked: 'ColumnTypes' in props.scope && ((_a = props.scope.ColumnTypes) === null || _a === void 0 ? void 0 : _a.includes(columnType)), onChange: (checked) => {
169
+ let columnTypes = [].concat(props.scope.ColumnTypes);
170
+ if (checked) {
171
+ columnTypes.push(columnType);
172
+ }
173
+ else {
174
+ columnTypes = columnTypes.filter((ct) => ct !== columnType);
175
+ }
176
+ let newScope = {
177
+ ColumnTypes: columnTypes,
178
+ };
179
+ props.updateScope(newScope);
180
+ } }, columnType));
181
+ })))))));
151
182
  };
@@ -4,6 +4,7 @@ import FormLayout, { FormRow } from '../../components/FormLayout';
4
4
  import Panel from '../../components/Panel';
5
5
  import { useAdaptable } from '../AdaptableContext';
6
6
  import { ColumnSelector } from '../Components/Selectors/ColumnSelector';
7
+ import { AdaptableAgGrid } from '../../agGrid/AdaptableAgGrid';
7
8
  export const TransposedPopup = (props) => {
8
9
  const adaptable = useAdaptable();
9
10
  const rowNodes = React.useMemo(() => {
@@ -155,14 +156,14 @@ export const TransposedPopup = (props) => {
155
156
  sideBar: false,
156
157
  };
157
158
  const modules = adaptable.getAgGridRegisteredModules();
158
- const adaptableInitFn = Object.getPrototypeOf(adaptable).constructor.init;
159
- const agGridConfig = {
160
- gridOptions: agGridOptions,
161
- modules: modules,
162
- };
163
159
  let transposedAdaptableApi;
164
160
  (async () => {
165
- transposedAdaptableApi = await adaptableInitFn(adaptableOptions, agGridConfig);
161
+ transposedAdaptableApi = await AdaptableAgGrid._initInternal({
162
+ variant: 'vanilla',
163
+ adaptableOptions,
164
+ gridOptions: agGridOptions,
165
+ modules,
166
+ });
166
167
  adaptable.api.eventApi.on('ThemeChanged', (event) => {
167
168
  transposedAdaptableApi.themeApi.loadTheme(typeof event.theme === 'object' ? event.theme.Name : event.theme);
168
169
  });
@@ -26,6 +26,7 @@ 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 { SummaryService } from '../Utilities/Services/SummaryService';
29
30
  export type AdaptableVariant = 'vanilla' | 'react' | 'angular';
30
31
  export type AdaptableLifecycleState = 'initial' | 'preprocessOptions' | 'initAdaptableState' | 'setupAgGrid' | 'initAgGrid' | 'available' | 'ready' | 'preDestroyed';
31
32
  type RenderAgGridFrameworkComponentResult = false | GridApi;
@@ -52,6 +53,11 @@ export declare class AdaptableAgGrid implements IAdaptable {
52
53
  hasAutogeneratedPrimaryKey: boolean;
53
54
  hasAdaptableToolPanel: boolean;
54
55
  private initWithLazyData;
56
+ /**
57
+ * once layouts are properly handled with the new aggrid methods & events
58
+ * we can remove this hack
59
+ */
60
+ private previousAgGridColumnState;
55
61
  _rawAdaptableOptions: AdaptableOptions;
56
62
  adaptableOptions: AdaptableOptions;
57
63
  agGridOptionsService: AgGridOptionsService;
@@ -76,6 +82,7 @@ export declare class AdaptableAgGrid implements IAdaptable {
76
82
  RowEditService: RowEditService;
77
83
  Fdc3Service: Fdc3Service;
78
84
  CellPopupService: CellPopupService;
85
+ SummaryService: SummaryService;
79
86
  private LicenseService;
80
87
  private ChartingService;
81
88
  private ThemeService;
@@ -129,6 +136,7 @@ export declare class AdaptableAgGrid implements IAdaptable {
129
136
  private _initAdaptableAgGrid;
130
137
  private normaliseLayoutState;
131
138
  private normaliseToolPanelState;
139
+ refreshQuickFilter(): void;
132
140
  applyColumnFiltering(): void;
133
141
  applyGridFiltering(): void;
134
142
  private refreshColDefs;
@@ -152,6 +160,8 @@ export declare class AdaptableAgGrid implements IAdaptable {
152
160
  private initAdaptableStore;
153
161
  private mapAdaptableStateToAgGridState;
154
162
  private addGridEventListeners;
163
+ private shouldAutoSizeLayout;
164
+ private autoSizeLayoutIfNeeded;
155
165
  private performAudit;
156
166
  forPlugins(callback: (plugin: AdaptablePlugin) => any): void;
157
167
  getPluginProperty(pluginId: string, propertyName: string, ...args: any): any;
@@ -175,7 +185,9 @@ export declare class AdaptableAgGrid implements IAdaptable {
175
185
  getDisplayValueFromRawValue(rowNode: IRowNode, columnId: string, rawValue: any): string | undefined;
176
186
  private getCleanValue;
177
187
  getNormalisedValueFromRawValue(rawValue: any, column: AdaptableColumn): string | number | boolean | Date | unknown;
178
- updateColumnModelAndRefreshGrid(): void;
188
+ updateColumnModelAndRefreshGrid(config?: {
189
+ skipColDefsRefresh?: boolean;
190
+ }): void;
179
191
  redrawBody(): void;
180
192
  refreshHeader(): void;
181
193
  redrawRows(rowNodes?: IRowNode[]): void;
@@ -333,5 +345,7 @@ export declare class AdaptableAgGrid implements IAdaptable {
333
345
  private restoreUnGroupColumnOrder;
334
346
  private onSortChanged;
335
347
  private getColumnSorts;
348
+ setPinnedRows(pinnedRows: any, location: 'top' | 'bottom'): void;
349
+ setupRowSummaries(): void;
336
350
  }
337
351
  export {};
@@ -95,6 +95,7 @@ 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';
98
99
  const RowNodeProto = RowNode.prototype;
99
100
  const RowNode_dispatchLocalEvent = RowNodeProto.dispatchLocalEvent;
100
101
  /**
@@ -138,6 +139,11 @@ const adaptableInstances = {};
138
139
  const publishTimestamp = Number(ADAPTABLE_PUBLISH_TIMESTAMP);
139
140
  export class AdaptableAgGrid {
140
141
  constructor() {
142
+ /**
143
+ * once layouts are properly handled with the new aggrid methods & events
144
+ * we can remove this hack
145
+ */
146
+ this.previousAgGridColumnState = '';
141
147
  this.columnMinMaxValuesCache = {};
142
148
  this.renderReactRoot = (node, container) => defaultRenderReactRoot(node, container);
143
149
  /**
@@ -251,8 +257,7 @@ export class AdaptableAgGrid {
251
257
  this.lifecycleState = 'preprocessOptions';
252
258
  this._rawAdaptableOptions = config.adaptableOptions;
253
259
  if (StringExtensions.IsNullOrEmptyOrWhiteSpace(this._rawAdaptableOptions.adaptableId)) {
254
- AdaptableLogger.consoleErrorBase(`'AdaptableOptions.adaptableId' is a required property and cannot be empty or null`);
255
- this._rawAdaptableOptions.adaptableId = `AdapTable_${Date.now()}`;
260
+ this._rawAdaptableOptions.adaptableId = `adaptable_id_${Date.now()}`;
256
261
  }
257
262
  this.logger = (_a = this.logger) !== null && _a !== void 0 ? _a : new AdaptableLogger(this._rawAdaptableOptions.adaptableId);
258
263
  const perfInitAdaptableAgGrid = this.logger.beginPerf(`Adaptable._initAdaptableAgGrid()`);
@@ -451,15 +456,21 @@ export class AdaptableAgGrid {
451
456
  state.ToolPanel = toolPanelState;
452
457
  return state;
453
458
  }
454
- applyColumnFiltering() {
455
- if (this.api.columnFilterApi.isQuickFilterAvailable()) {
456
- if (this.api.columnFilterApi.isQuickFilterVisible()) {
457
- this.showQuickFilter();
458
- }
459
- else {
460
- this.hideQuickFilter();
461
- }
459
+ refreshQuickFilter() {
460
+ const isQuickFilterVisible = this.api.internalApi.getSystemState().IsQuickFilterVisible;
461
+ const isQuickFilterAvailable = this.isQuickFilterAvailable();
462
+ if (isQuickFilterVisible === isQuickFilterAvailable) {
463
+ return;
462
464
  }
465
+ if (isQuickFilterAvailable) {
466
+ this.api.columnFilterApi.showQuickFilterBar();
467
+ }
468
+ else {
469
+ this.api.columnFilterApi.hideQuickFilterBar();
470
+ }
471
+ }
472
+ applyColumnFiltering() {
473
+ this.refreshQuickFilter();
463
474
  this.applyGridFiltering();
464
475
  this.agGridAdapter.updateColumnFilterActiveState();
465
476
  }
@@ -702,6 +713,20 @@ export class AdaptableAgGrid {
702
713
  return nodeA.key < nodeB.key ? -1 : 1;
703
714
  };
704
715
  });
716
+ /**
717
+ * `autoSizeStrategy`
718
+ *
719
+ * This is needed here, even if we do auto sizing on FIRST_DATA_RENDERED.
720
+ * Sometimes FIRST_DATA_RENDERED is triggered too early and autoSizing doesn't work initially
721
+ * so we need this block
722
+ */
723
+ this.agGridOptionsService.setGridOptionsProperty(gridOptions, 'autoSizeStrategy', (original_autoSizeStrategy) => {
724
+ return this.shouldAutoSizeLayout()
725
+ ? {
726
+ type: 'fitCellContents',
727
+ }
728
+ : original_autoSizeStrategy;
729
+ });
705
730
  }
706
731
  /**
707
732
  * `components`
@@ -850,6 +875,16 @@ export class AdaptableAgGrid {
850
875
  return (returnValue === null || returnValue === void 0 ? void 0 : returnValue.length) ? returnValue : undefined;
851
876
  };
852
877
  });
878
+ /**
879
+ * `floatingFiltersHeight`
880
+ */
881
+ this.agGridOptionsService.setGridOptionsProperty(gridOptions, 'floatingFiltersHeight', (original_floatingFiltersHeight) => {
882
+ if (this.api.layoutApi.getCurrentLayout().EnablePivot) {
883
+ // if the default layout is a pivot on, hide the floating filters from the beginning, otherwise we get an annoying flicker
884
+ return 0;
885
+ }
886
+ return original_floatingFiltersHeight;
887
+ });
853
888
  /**
854
889
  * `columnTypes`
855
890
  */
@@ -1235,7 +1270,9 @@ export class AdaptableAgGrid {
1235
1270
  if (this.initWithLazyData) {
1236
1271
  this.updateColumnModelAndRefreshGrid();
1237
1272
  this.api.calculatedColumnApi.refreshAggregatedCalculatedColumns();
1273
+ this._emit('FirstDataRendered');
1238
1274
  }
1275
+ this.autoSizeLayoutIfNeeded();
1239
1276
  }));
1240
1277
  /**
1241
1278
  * Use Case: Entered or Left Pivot Mode
@@ -1437,6 +1474,25 @@ export class AdaptableAgGrid {
1437
1474
  },
1438
1475
  };
1439
1476
  }
1477
+ shouldAutoSizeLayout() {
1478
+ const { layoutApi } = this.api;
1479
+ const { layoutOptions } = this.adaptableOptions;
1480
+ const currentLayout = layoutApi.getCurrentLayout();
1481
+ if (currentLayout.ColumnWidthMap && Object.keys(currentLayout.ColumnWidthMap).length > 0) {
1482
+ return;
1483
+ }
1484
+ const autoSize = currentLayout.EnablePivot
1485
+ ? layoutOptions.autoSizeColumnsInPivotLayout
1486
+ : layoutOptions.autoSizeColumnsInLayout;
1487
+ return autoSize;
1488
+ }
1489
+ autoSizeLayoutIfNeeded() {
1490
+ if (this.shouldAutoSizeLayout()) {
1491
+ requestAnimationFrame(() => {
1492
+ this.autoSizeAllColumns();
1493
+ });
1494
+ }
1495
+ }
1440
1496
  performAudit(action, oldState, newState) {
1441
1497
  if (this.isReady) {
1442
1498
  const adaptableStateChangedInfo = {
@@ -1492,6 +1548,7 @@ export class AdaptableAgGrid {
1492
1548
  this.AlertService = new AlertService(this.api);
1493
1549
  this.TeamSharingService = new TeamSharingService(this.api);
1494
1550
  this.Fdc3Service = new Fdc3Service(this.api);
1551
+ this.SummaryService = new SummaryService(this.api);
1495
1552
  this.CellPopupService = new CellPopupService(this.api);
1496
1553
  this.RowEditService = new RowEditService(this.api);
1497
1554
  this.MetamodelService = new MetamodelService(() => this.api.optionsApi.getAdaptableOptions(), true);
@@ -1752,7 +1809,10 @@ export class AdaptableAgGrid {
1752
1809
  }
1753
1810
  return rawValue;
1754
1811
  }
1755
- updateColumnModelAndRefreshGrid() {
1812
+ updateColumnModelAndRefreshGrid(config) {
1813
+ if (!(config === null || config === void 0 ? void 0 : config.skipColDefsRefresh)) {
1814
+ this.refreshColDefs();
1815
+ }
1756
1816
  this.deriveAdaptableColumnStateFromAgGrid();
1757
1817
  this.agGridColumnAdapter.setupColumns();
1758
1818
  this.redrawBody();
@@ -2865,6 +2925,7 @@ export class AdaptableAgGrid {
2865
2925
  else {
2866
2926
  (_b = this.agGridAdapter.getAgGridApi()) === null || _b === void 0 ? void 0 : _b.destroy();
2867
2927
  }
2928
+ this.previousAgGridColumnState = '';
2868
2929
  const gridContainerElement = this.getAgGridContainerElement();
2869
2930
  if (gridContainerElement) {
2870
2931
  gridContainerElement.removeEventListener('keydown', this.agGridListenerKeydown);
@@ -3030,6 +3091,10 @@ export class AdaptableAgGrid {
3030
3091
  // });
3031
3092
  }
3032
3093
  isQuickFilterAvailable() {
3094
+ if (this.api.layoutApi.getCurrentLayout().EnablePivot) {
3095
+ // hide completely the quick filter if pivot is enabled
3096
+ return false;
3097
+ }
3033
3098
  return this.hasFloatingFilterOnAtLeastOneColumn(this.agGridAdapter.getAgGridApi().getColumnDefs());
3034
3099
  }
3035
3100
  hasFloatingFilterOnAtLeastOneColumn(columnDefs) {
@@ -3254,18 +3319,20 @@ export class AdaptableAgGrid {
3254
3319
  requestAnimationFrame(() => {
3255
3320
  this.agGridAdapter.getAgGridApi().autoSizeAllColumns();
3256
3321
  });
3257
- //but if it's also the first time the grid is loading
3258
- //it's not timely enough the above call, so we keep trying... I know it's ugly, we need to find a better way
3259
- setTimeout(() => {
3260
- this.agGridAdapter.getAgGridApi().autoSizeAllColumns();
3261
- setTimeout(() => {
3262
- this.agGridAdapter.getAgGridApi().autoSizeAllColumns();
3263
- }, 200);
3264
- }, 100);
3322
+ // //but if it's also the first time the grid is loading
3323
+ // //it's not timely enough the above call, so we keep trying... I know it's ugly, we need to find a better way
3324
+ // setTimeout(() => {
3325
+ // this.agGridAdapter.getAgGridApi().autoSizeAllColumns();
3326
+ // setTimeout(() => {
3327
+ // this.agGridAdapter.getAgGridApi().autoSizeAllColumns();
3328
+ // }, 200);
3329
+ // }, 100);
3265
3330
  }
3266
- else if (((_f = (_e = this.adaptableOptions) === null || _e === void 0 ? void 0 : _e.layoutOptions) === null || _f === void 0 ? void 0 : _f.autoSizeColumnsInLayout) &&
3267
- colsToAutoSizeArray.length) {
3268
- this.agGridAdapter.getAgGridApi().autoSizeColumns(colsToAutoSizeArray);
3331
+ else {
3332
+ if (((_f = (_e = this.adaptableOptions) === null || _e === void 0 ? void 0 : _e.layoutOptions) === null || _f === void 0 ? void 0 : _f.autoSizeColumnsInLayout) &&
3333
+ colsToAutoSizeArray.length) {
3334
+ this.agGridAdapter.getAgGridApi().autoSizeColumns(colsToAutoSizeArray);
3335
+ }
3269
3336
  }
3270
3337
  this.forPlugins((plugin) => {
3271
3338
  if (plugin.afterSetLayout) {
@@ -3614,6 +3681,21 @@ export class AdaptableAgGrid {
3614
3681
  */
3615
3682
  updateLayoutFromGrid() {
3616
3683
  var _a, _b;
3684
+ const agGridApi = this.agGridAdapter.getAgGridApi();
3685
+ const columnState = agGridApi.getColumnState();
3686
+ try {
3687
+ const stringifiedState = JSON.stringify(columnState);
3688
+ if (stringifiedState === this.previousAgGridColumnState) {
3689
+ // same grid column state as a previous,
3690
+ // so no need to update, as the layout has already been updated
3691
+ // for this grid column state
3692
+ return;
3693
+ }
3694
+ this.previousAgGridColumnState = stringifiedState;
3695
+ }
3696
+ catch (ex) {
3697
+ this.logger.consoleError('Error stringifying column state', ex);
3698
+ }
3617
3699
  const currentLayout = this.api.layoutApi.getCurrentLayout();
3618
3700
  if (currentLayout.IsReadOnly) {
3619
3701
  // reaply the layout so the grid is reverted
@@ -3625,7 +3707,6 @@ export class AdaptableAgGrid {
3625
3707
  const columnFlexes = {};
3626
3708
  const pinnedColumns = {};
3627
3709
  const columnSorts = [];
3628
- const columnState = this.agGridAdapter.getAgGridApi().getColumnState();
3629
3710
  let groupedColumns = [...new Array(columnState.length)];
3630
3711
  let pivotedColumns = [...new Array(columnState.length)];
3631
3712
  const pivotColumns = [];
@@ -3818,4 +3899,31 @@ export class AdaptableAgGrid {
3818
3899
  };
3819
3900
  });
3820
3901
  }
3902
+ setPinnedRows(pinnedRows, location) {
3903
+ const gridApi = this.agGridAdapter.getAgGridApi();
3904
+ switch (location) {
3905
+ case 'top':
3906
+ gridApi.setGridOption('pinnedTopRowData', pinnedRows);
3907
+ break;
3908
+ case 'bottom':
3909
+ gridApi.setGridOption('pinnedBottomRowData', pinnedRows);
3910
+ break;
3911
+ }
3912
+ }
3913
+ setupRowSummaries() {
3914
+ var _a;
3915
+ const rowSummaries = (_a = this.api.internalApi.getAdaptableState().System.RowSummary.rowSummaries) !== null && _a !== void 0 ? _a : [];
3916
+ const { top, bottom } = rowSummaries.reduce((acc, summaryRow) => {
3917
+ const row = summaryRow.RowData;
3918
+ if (summaryRow.Position === 'Bottom' || !summaryRow.Position) {
3919
+ acc.bottom.push(row);
3920
+ }
3921
+ else {
3922
+ acc.top.push(row);
3923
+ }
3924
+ return acc;
3925
+ }, { top: [], bottom: [] });
3926
+ this.setPinnedRows(top, 'top');
3927
+ this.setPinnedRows(bottom, 'bottom');
3928
+ }
3821
3929
  }
@@ -48,6 +48,7 @@ export declare class AgGridAdapter {
48
48
  private isColumnExportable;
49
49
  private isColumnHideable;
50
50
  private isColumnFilterable;
51
+ private getColumnTypes;
51
52
  private getColumnPinnedPosition;
52
53
  private isColumnFixed;
53
54
  private isColumnRowGrouped;
@@ -272,6 +272,7 @@ export class AgGridAdapter {
272
272
  isGrouped: this.isColumnRowGrouped(colDef),
273
273
  isFixed: this.isColumnFixed(colDef),
274
274
  pinned: this.getColumnPinnedPosition(colDef),
275
+ columnTypes: this.getColumnTypes(colDef),
275
276
  isExcludedFromQuickSearch: false,
276
277
  isSparkline: this.isColumnSparkline(colDef),
277
278
  };
@@ -490,6 +491,13 @@ export class AgGridAdapter {
490
491
  }
491
492
  return colDef != null && colDef.filter != null && colDef.filter != false;
492
493
  }
494
+ getColumnTypes(colDef) {
495
+ if (!colDef.type) {
496
+ return [];
497
+ }
498
+ const allTypes = typeof colDef.type === 'string' ? [colDef.type] : colDef.type;
499
+ return allTypes;
500
+ }
493
501
  getColumnPinnedPosition(colDef) {
494
502
  return colDef.pinned
495
503
  ? colDef.pinned === 'left' || colDef.pinned === true
@@ -11,6 +11,7 @@ import UIHelper from '../View/UIHelper';
11
11
  import { getPercentBarRendererForColumn } from './PercentBarRenderer';
12
12
  import { getBadgeRendererForColumn } from './BadgeRenderer';
13
13
  import Helper from '../Utilities/Helpers/Helper';
14
+ import { ROW_SUMMARY_ROW_ID } from '../PredefinedConfig/Common/RowSummary';
14
15
  export class AgGridColumnAdapter {
15
16
  constructor(adaptableInstance) {
16
17
  this.adaptableInstance = adaptableInstance;
@@ -413,10 +414,14 @@ export class AgGridColumnAdapter {
413
414
  return userValue;
414
415
  }
415
416
  const cellEditableFn = this.adaptableOptions.editOptions.isCellEditable;
416
- if (!cellEditableFn) {
417
- return userValue;
418
- }
419
417
  const editableCallback = (params) => {
418
+ // Adaptable Row Summarie rows are not editable
419
+ if (params.node.data[ROW_SUMMARY_ROW_ID]) {
420
+ return false;
421
+ }
422
+ if (!cellEditableFn) {
423
+ return typeof userValue === 'function' ? userValue(params) : userValue;
424
+ }
420
425
  const gridCell = this.adaptableInstance.getGridCellFromRowNode(params.node, params.column.getColId());
421
426
  const cellEditableContext = {
422
427
  gridCell,
@@ -601,6 +606,9 @@ export class AgGridColumnAdapter {
601
606
  if (!this.adaptableApi.internalApi.getModuleService().isModuleAvailable('Notes')) {
602
607
  return;
603
608
  }
609
+ if (!this.adaptableApi.notesApi.internalApi.areNotesAvailable()) {
610
+ return;
611
+ }
604
612
  const cellPosition = {
605
613
  PrimaryKeyValue: gridCell.primaryKeyValue,
606
614
  ColumnId: gridCell.column.columnId,
@@ -615,6 +623,9 @@ export class AgGridColumnAdapter {
615
623
  if (!this.adaptableApi.internalApi.getModuleService().isModuleAvailable('Comments')) {
616
624
  return;
617
625
  }
626
+ if (!this.adaptableApi.commentApi.internalApi.areCommentsAvailable()) {
627
+ return;
628
+ }
618
629
  const position = {
619
630
  PrimaryKeyValue: gridCell.primaryKeyValue,
620
631
  ColumnId: gridCell.column.columnId,
@@ -8,4 +8,4 @@ export type ColorPickerProps = Omit<HTMLProps<HTMLInputElement>, 'onChange'> & {
8
8
  value: string;
9
9
  includeAlpha?: boolean;
10
10
  } & Omit<BoxProps, 'onChange'>;
11
- export declare const ColorPicker: React.ForwardRefExoticComponent<Pick<ColorPickerProps, "api" | "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" | "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" | "rows" | "rowSpan" | "sandbox" | "scope" | "scoped" | "scrolling" | "seamless" | "selected" | "shape" | "srcDoc" | "srcLang" | "srcSet" | "step" | "type" | "useMap" | "wmode" | "includeAlpha"> & React.RefAttributes<unknown>>;
11
+ export declare const ColorPicker: React.ForwardRefExoticComponent<Pick<ColorPickerProps, "api" | "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" | "includeAlpha"> & React.RefAttributes<unknown>>;