@adaptabletools/adaptable-cjs 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 +17 -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 +17 -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 +4 -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 +22 -1
  37. package/src/Redux/ActionsReducers/SystemRedux.d.ts +5 -0
  38. package/src/Redux/ActionsReducers/SystemRedux.js +16 -3
  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 +6 -1
  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 +33 -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 +7 -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.cjs.tsbuildinfo +1 -1
  81. package/src/View/Components/ScopeComponent.d.ts +0 -24
  82. package/src/View/Components/ScopeComponent.js +0 -138
  83. package/src/View/Export/Wizard/ReportScopeWizard.d.ts +0 -17
  84. package/src/View/Export/Wizard/ReportScopeWizard.js +0 -52
@@ -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;
@@ -85,6 +85,9 @@ const NewScopeComponent = (props) => {
85
85
  if (scopeApi.scopeHasDataType(props.scope)) {
86
86
  return 'DataType';
87
87
  }
88
+ if (scopeApi.scopeHasColumnType(props.scope)) {
89
+ return 'ColumnType';
90
+ }
88
91
  return undefined;
89
92
  };
90
93
  const onScopeSelectChanged = (value) => {
@@ -99,6 +102,11 @@ const NewScopeComponent = (props) => {
99
102
  DataTypes: [],
100
103
  };
101
104
  }
105
+ else if (value == 'ColumnType') {
106
+ newScope = {
107
+ ColumnTypes: [],
108
+ };
109
+ }
102
110
  else {
103
111
  newScope = {
104
112
  All: true,
@@ -134,6 +142,9 @@ const NewScopeComponent = (props) => {
134
142
  if (Array.isArray(props.availableDataTypes)) {
135
143
  dataTypeOptions = props.availableDataTypes.map((dataType) => DATA_TYPES_MAP[dataType]);
136
144
  }
145
+ const hasColumnTypes = React.useMemo(() => {
146
+ return api.optionsApi.getColumnOptions().columnTypes.length > 0;
147
+ }, []);
137
148
  return (React.createElement(Tabs_1.Tabs, { "data-name": 'scope-component', className: "ab-ScopeComponent", value: scopeChoice, style: Object.assign({ height: '100%' }, props.style), onValueChange: onScopeSelectChanged },
138
149
  props.hideWholeRow ? null : (React.createElement(Tabs_1.Tabs.Tab, { value: "Row" },
139
150
  React.createElement(Radio_1.default, { margin: 0, checked: scopeChoice == 'All', tabIndex: -1 }, "All Columns"))),
@@ -141,6 +152,8 @@ const NewScopeComponent = (props) => {
141
152
  React.createElement(Radio_1.default, { margin: 0, value: "Column", checked: scopeChoice == 'Column', tabIndex: -1 }, "Selected Columns"))),
142
153
  !props.disableDataTypes && (React.createElement(Tabs_1.Tabs.Tab, { value: "DataType" },
143
154
  React.createElement(Radio_1.default, { margin: 0, value: "DataType", checked: scopeChoice == 'DataType', tabIndex: -1 }, "Data Types"))),
155
+ hasColumnTypes && (React.createElement(Tabs_1.Tabs.Tab, { value: "ColumnType" },
156
+ React.createElement(Radio_1.default, { margin: 0, value: "ColumnType", checked: scopeChoice == 'ColumnType', tabIndex: -1 }, "Column Types"))),
144
157
  props.hideWholeRow ? null : (React.createElement(Tabs_1.Tabs.Content, { value: "Row", style: { flex: 'none' }, "data-name": "row-scope" },
145
158
  React.createElement(rebass_1.Text, { padding: 2, pl: 0, fontSize: 2 }, props.descriptions.rowScope))),
146
159
  !props.disableColumns && (React.createElement(Tabs_1.Tabs.Content, { value: "Column", style: { flex: 1, overflow: 'auto' }, "data-name": "column-scope", padding: 0 },
@@ -153,6 +166,24 @@ const NewScopeComponent = (props) => {
153
166
  !props.disableDataTypes && (React.createElement(Tabs_1.Tabs.Content, { value: "DataType", style: { flex: 'none' }, "data-name": "datatype-scope" },
154
167
  React.createElement(rebass_1.Box, null,
155
168
  props.descriptions.dataTypeScope && (React.createElement(rebass_1.Text, { p: 2, pl: 0, mb: 2, fontSize: 2 }, props.descriptions.dataTypeScope)),
156
- React.createElement(rebass_1.Flex, { flexDirection: "column" }, dataTypeOptions.map((dataTypeOption) => (React.createElement(CheckBox_1.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)))))))));
169
+ React.createElement(rebass_1.Flex, { flexDirection: "column" }, dataTypeOptions.map((dataTypeOption) => (React.createElement(CheckBox_1.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))))))),
170
+ hasColumnTypes && (React.createElement(Tabs_1.Tabs.Content, { value: "ColumnType", style: { flex: 'none' }, "data-name": "column-type-scope" },
171
+ React.createElement(rebass_1.Box, null,
172
+ React.createElement(rebass_1.Flex, { flexDirection: "column" }, api.optionsApi.getColumnOptions().columnTypes.map((columnType) => {
173
+ var _a;
174
+ return (React.createElement(CheckBox_1.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) => {
175
+ let columnTypes = [].concat(props.scope.ColumnTypes);
176
+ if (checked) {
177
+ columnTypes.push(columnType);
178
+ }
179
+ else {
180
+ columnTypes = columnTypes.filter((ct) => ct !== columnType);
181
+ }
182
+ let newScope = {
183
+ ColumnTypes: columnTypes,
184
+ };
185
+ props.updateScope(newScope);
186
+ } }, columnType));
187
+ })))))));
157
188
  };
158
189
  exports.NewScopeComponent = NewScopeComponent;
@@ -8,6 +8,7 @@ const FormLayout_1 = tslib_1.__importStar(require("../../components/FormLayout")
8
8
  const Panel_1 = tslib_1.__importDefault(require("../../components/Panel"));
9
9
  const AdaptableContext_1 = require("../AdaptableContext");
10
10
  const ColumnSelector_1 = require("../Components/Selectors/ColumnSelector");
11
+ const AdaptableAgGrid_1 = require("../../agGrid/AdaptableAgGrid");
11
12
  const TransposedPopup = (props) => {
12
13
  const adaptable = (0, AdaptableContext_1.useAdaptable)();
13
14
  const rowNodes = React.useMemo(() => {
@@ -159,14 +160,14 @@ const TransposedPopup = (props) => {
159
160
  sideBar: false,
160
161
  };
161
162
  const modules = adaptable.getAgGridRegisteredModules();
162
- const adaptableInitFn = Object.getPrototypeOf(adaptable).constructor.init;
163
- const agGridConfig = {
164
- gridOptions: agGridOptions,
165
- modules: modules,
166
- };
167
163
  let transposedAdaptableApi;
168
164
  (async () => {
169
- transposedAdaptableApi = await adaptableInitFn(adaptableOptions, agGridConfig);
165
+ transposedAdaptableApi = await AdaptableAgGrid_1.AdaptableAgGrid._initInternal({
166
+ variant: 'vanilla',
167
+ adaptableOptions,
168
+ gridOptions: agGridOptions,
169
+ modules,
170
+ });
170
171
  adaptable.api.eventApi.on('ThemeChanged', (event) => {
171
172
  transposedAdaptableApi.themeApi.loadTheme(typeof event.theme === 'object' ? event.theme.Name : event.theme);
172
173
  });
@@ -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 {};
@@ -99,6 +99,7 @@ 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");
102
103
  const RowNodeProto = core_1.RowNode.prototype;
103
104
  const RowNode_dispatchLocalEvent = RowNodeProto.dispatchLocalEvent;
104
105
  /**
@@ -142,6 +143,11 @@ const adaptableInstances = {};
142
143
  const publishTimestamp = Number(EnvVars_1.ADAPTABLE_PUBLISH_TIMESTAMP);
143
144
  class AdaptableAgGrid {
144
145
  constructor() {
146
+ /**
147
+ * once layouts are properly handled with the new aggrid methods & events
148
+ * we can remove this hack
149
+ */
150
+ this.previousAgGridColumnState = '';
145
151
  this.columnMinMaxValuesCache = {};
146
152
  this.renderReactRoot = (node, container) => (0, renderReactRoot_1.renderReactRoot)(node, container);
147
153
  /**
@@ -255,8 +261,7 @@ class AdaptableAgGrid {
255
261
  this.lifecycleState = 'preprocessOptions';
256
262
  this._rawAdaptableOptions = config.adaptableOptions;
257
263
  if (StringExtensions_1.default.IsNullOrEmptyOrWhiteSpace(this._rawAdaptableOptions.adaptableId)) {
258
- AdaptableLogger_1.AdaptableLogger.consoleErrorBase(`'AdaptableOptions.adaptableId' is a required property and cannot be empty or null`);
259
- this._rawAdaptableOptions.adaptableId = `AdapTable_${Date.now()}`;
264
+ this._rawAdaptableOptions.adaptableId = `adaptable_id_${Date.now()}`;
260
265
  }
261
266
  this.logger = (_a = this.logger) !== null && _a !== void 0 ? _a : new AdaptableLogger_1.AdaptableLogger(this._rawAdaptableOptions.adaptableId);
262
267
  const perfInitAdaptableAgGrid = this.logger.beginPerf(`Adaptable._initAdaptableAgGrid()`);
@@ -455,15 +460,21 @@ class AdaptableAgGrid {
455
460
  state.ToolPanel = toolPanelState;
456
461
  return state;
457
462
  }
458
- applyColumnFiltering() {
459
- if (this.api.columnFilterApi.isQuickFilterAvailable()) {
460
- if (this.api.columnFilterApi.isQuickFilterVisible()) {
461
- this.showQuickFilter();
462
- }
463
- else {
464
- this.hideQuickFilter();
465
- }
463
+ refreshQuickFilter() {
464
+ const isQuickFilterVisible = this.api.internalApi.getSystemState().IsQuickFilterVisible;
465
+ const isQuickFilterAvailable = this.isQuickFilterAvailable();
466
+ if (isQuickFilterVisible === isQuickFilterAvailable) {
467
+ return;
466
468
  }
469
+ if (isQuickFilterAvailable) {
470
+ this.api.columnFilterApi.showQuickFilterBar();
471
+ }
472
+ else {
473
+ this.api.columnFilterApi.hideQuickFilterBar();
474
+ }
475
+ }
476
+ applyColumnFiltering() {
477
+ this.refreshQuickFilter();
467
478
  this.applyGridFiltering();
468
479
  this.agGridAdapter.updateColumnFilterActiveState();
469
480
  }
@@ -706,6 +717,20 @@ class AdaptableAgGrid {
706
717
  return nodeA.key < nodeB.key ? -1 : 1;
707
718
  };
708
719
  });
720
+ /**
721
+ * `autoSizeStrategy`
722
+ *
723
+ * This is needed here, even if we do auto sizing on FIRST_DATA_RENDERED.
724
+ * Sometimes FIRST_DATA_RENDERED is triggered too early and autoSizing doesn't work initially
725
+ * so we need this block
726
+ */
727
+ this.agGridOptionsService.setGridOptionsProperty(gridOptions, 'autoSizeStrategy', (original_autoSizeStrategy) => {
728
+ return this.shouldAutoSizeLayout()
729
+ ? {
730
+ type: 'fitCellContents',
731
+ }
732
+ : original_autoSizeStrategy;
733
+ });
709
734
  }
710
735
  /**
711
736
  * `components`
@@ -854,6 +879,16 @@ class AdaptableAgGrid {
854
879
  return (returnValue === null || returnValue === void 0 ? void 0 : returnValue.length) ? returnValue : undefined;
855
880
  };
856
881
  });
882
+ /**
883
+ * `floatingFiltersHeight`
884
+ */
885
+ this.agGridOptionsService.setGridOptionsProperty(gridOptions, 'floatingFiltersHeight', (original_floatingFiltersHeight) => {
886
+ if (this.api.layoutApi.getCurrentLayout().EnablePivot) {
887
+ // if the default layout is a pivot on, hide the floating filters from the beginning, otherwise we get an annoying flicker
888
+ return 0;
889
+ }
890
+ return original_floatingFiltersHeight;
891
+ });
857
892
  /**
858
893
  * `columnTypes`
859
894
  */
@@ -1239,7 +1274,9 @@ class AdaptableAgGrid {
1239
1274
  if (this.initWithLazyData) {
1240
1275
  this.updateColumnModelAndRefreshGrid();
1241
1276
  this.api.calculatedColumnApi.refreshAggregatedCalculatedColumns();
1277
+ this._emit('FirstDataRendered');
1242
1278
  }
1279
+ this.autoSizeLayoutIfNeeded();
1243
1280
  }));
1244
1281
  /**
1245
1282
  * Use Case: Entered or Left Pivot Mode
@@ -1441,6 +1478,25 @@ class AdaptableAgGrid {
1441
1478
  },
1442
1479
  };
1443
1480
  }
1481
+ shouldAutoSizeLayout() {
1482
+ const { layoutApi } = this.api;
1483
+ const { layoutOptions } = this.adaptableOptions;
1484
+ const currentLayout = layoutApi.getCurrentLayout();
1485
+ if (currentLayout.ColumnWidthMap && Object.keys(currentLayout.ColumnWidthMap).length > 0) {
1486
+ return;
1487
+ }
1488
+ const autoSize = currentLayout.EnablePivot
1489
+ ? layoutOptions.autoSizeColumnsInPivotLayout
1490
+ : layoutOptions.autoSizeColumnsInLayout;
1491
+ return autoSize;
1492
+ }
1493
+ autoSizeLayoutIfNeeded() {
1494
+ if (this.shouldAutoSizeLayout()) {
1495
+ requestAnimationFrame(() => {
1496
+ this.autoSizeAllColumns();
1497
+ });
1498
+ }
1499
+ }
1444
1500
  performAudit(action, oldState, newState) {
1445
1501
  if (this.isReady) {
1446
1502
  const adaptableStateChangedInfo = {
@@ -1496,6 +1552,7 @@ class AdaptableAgGrid {
1496
1552
  this.AlertService = new AlertService_1.AlertService(this.api);
1497
1553
  this.TeamSharingService = new TeamSharingService_1.TeamSharingService(this.api);
1498
1554
  this.Fdc3Service = new Fdc3Service_1.Fdc3Service(this.api);
1555
+ this.SummaryService = new SummaryService_1.SummaryService(this.api);
1499
1556
  this.CellPopupService = new CellPopupService_1.CellPopupService(this.api);
1500
1557
  this.RowEditService = new RowEditService_1.RowEditService(this.api);
1501
1558
  this.MetamodelService = new MetamodelService_1.MetamodelService(() => this.api.optionsApi.getAdaptableOptions(), true);
@@ -1756,7 +1813,10 @@ class AdaptableAgGrid {
1756
1813
  }
1757
1814
  return rawValue;
1758
1815
  }
1759
- updateColumnModelAndRefreshGrid() {
1816
+ updateColumnModelAndRefreshGrid(config) {
1817
+ if (!(config === null || config === void 0 ? void 0 : config.skipColDefsRefresh)) {
1818
+ this.refreshColDefs();
1819
+ }
1760
1820
  this.deriveAdaptableColumnStateFromAgGrid();
1761
1821
  this.agGridColumnAdapter.setupColumns();
1762
1822
  this.redrawBody();
@@ -2869,6 +2929,7 @@ class AdaptableAgGrid {
2869
2929
  else {
2870
2930
  (_b = this.agGridAdapter.getAgGridApi()) === null || _b === void 0 ? void 0 : _b.destroy();
2871
2931
  }
2932
+ this.previousAgGridColumnState = '';
2872
2933
  const gridContainerElement = this.getAgGridContainerElement();
2873
2934
  if (gridContainerElement) {
2874
2935
  gridContainerElement.removeEventListener('keydown', this.agGridListenerKeydown);
@@ -3034,6 +3095,10 @@ class AdaptableAgGrid {
3034
3095
  // });
3035
3096
  }
3036
3097
  isQuickFilterAvailable() {
3098
+ if (this.api.layoutApi.getCurrentLayout().EnablePivot) {
3099
+ // hide completely the quick filter if pivot is enabled
3100
+ return false;
3101
+ }
3037
3102
  return this.hasFloatingFilterOnAtLeastOneColumn(this.agGridAdapter.getAgGridApi().getColumnDefs());
3038
3103
  }
3039
3104
  hasFloatingFilterOnAtLeastOneColumn(columnDefs) {
@@ -3258,18 +3323,20 @@ class AdaptableAgGrid {
3258
3323
  requestAnimationFrame(() => {
3259
3324
  this.agGridAdapter.getAgGridApi().autoSizeAllColumns();
3260
3325
  });
3261
- //but if it's also the first time the grid is loading
3262
- //it's not timely enough the above call, so we keep trying... I know it's ugly, we need to find a better way
3263
- setTimeout(() => {
3264
- this.agGridAdapter.getAgGridApi().autoSizeAllColumns();
3265
- setTimeout(() => {
3266
- this.agGridAdapter.getAgGridApi().autoSizeAllColumns();
3267
- }, 200);
3268
- }, 100);
3326
+ // //but if it's also the first time the grid is loading
3327
+ // //it's not timely enough the above call, so we keep trying... I know it's ugly, we need to find a better way
3328
+ // setTimeout(() => {
3329
+ // this.agGridAdapter.getAgGridApi().autoSizeAllColumns();
3330
+ // setTimeout(() => {
3331
+ // this.agGridAdapter.getAgGridApi().autoSizeAllColumns();
3332
+ // }, 200);
3333
+ // }, 100);
3269
3334
  }
3270
- else if (((_f = (_e = this.adaptableOptions) === null || _e === void 0 ? void 0 : _e.layoutOptions) === null || _f === void 0 ? void 0 : _f.autoSizeColumnsInLayout) &&
3271
- colsToAutoSizeArray.length) {
3272
- this.agGridAdapter.getAgGridApi().autoSizeColumns(colsToAutoSizeArray);
3335
+ else {
3336
+ if (((_f = (_e = this.adaptableOptions) === null || _e === void 0 ? void 0 : _e.layoutOptions) === null || _f === void 0 ? void 0 : _f.autoSizeColumnsInLayout) &&
3337
+ colsToAutoSizeArray.length) {
3338
+ this.agGridAdapter.getAgGridApi().autoSizeColumns(colsToAutoSizeArray);
3339
+ }
3273
3340
  }
3274
3341
  this.forPlugins((plugin) => {
3275
3342
  if (plugin.afterSetLayout) {
@@ -3618,6 +3685,21 @@ class AdaptableAgGrid {
3618
3685
  */
3619
3686
  updateLayoutFromGrid() {
3620
3687
  var _a, _b;
3688
+ const agGridApi = this.agGridAdapter.getAgGridApi();
3689
+ const columnState = agGridApi.getColumnState();
3690
+ try {
3691
+ const stringifiedState = JSON.stringify(columnState);
3692
+ if (stringifiedState === this.previousAgGridColumnState) {
3693
+ // same grid column state as a previous,
3694
+ // so no need to update, as the layout has already been updated
3695
+ // for this grid column state
3696
+ return;
3697
+ }
3698
+ this.previousAgGridColumnState = stringifiedState;
3699
+ }
3700
+ catch (ex) {
3701
+ this.logger.consoleError('Error stringifying column state', ex);
3702
+ }
3621
3703
  const currentLayout = this.api.layoutApi.getCurrentLayout();
3622
3704
  if (currentLayout.IsReadOnly) {
3623
3705
  // reaply the layout so the grid is reverted
@@ -3629,7 +3711,6 @@ class AdaptableAgGrid {
3629
3711
  const columnFlexes = {};
3630
3712
  const pinnedColumns = {};
3631
3713
  const columnSorts = [];
3632
- const columnState = this.agGridAdapter.getAgGridApi().getColumnState();
3633
3714
  let groupedColumns = [...new Array(columnState.length)];
3634
3715
  let pivotedColumns = [...new Array(columnState.length)];
3635
3716
  const pivotColumns = [];
@@ -3822,5 +3903,32 @@ class AdaptableAgGrid {
3822
3903
  };
3823
3904
  });
3824
3905
  }
3906
+ setPinnedRows(pinnedRows, location) {
3907
+ const gridApi = this.agGridAdapter.getAgGridApi();
3908
+ switch (location) {
3909
+ case 'top':
3910
+ gridApi.setGridOption('pinnedTopRowData', pinnedRows);
3911
+ break;
3912
+ case 'bottom':
3913
+ gridApi.setGridOption('pinnedBottomRowData', pinnedRows);
3914
+ break;
3915
+ }
3916
+ }
3917
+ setupRowSummaries() {
3918
+ var _a;
3919
+ const rowSummaries = (_a = this.api.internalApi.getAdaptableState().System.RowSummary.rowSummaries) !== null && _a !== void 0 ? _a : [];
3920
+ const { top, bottom } = rowSummaries.reduce((acc, summaryRow) => {
3921
+ const row = summaryRow.RowData;
3922
+ if (summaryRow.Position === 'Bottom' || !summaryRow.Position) {
3923
+ acc.bottom.push(row);
3924
+ }
3925
+ else {
3926
+ acc.top.push(row);
3927
+ }
3928
+ return acc;
3929
+ }, { top: [], bottom: [] });
3930
+ this.setPinnedRows(top, 'top');
3931
+ this.setPinnedRows(bottom, 'bottom');
3932
+ }
3825
3933
  }
3826
3934
  exports.AdaptableAgGrid = AdaptableAgGrid;
@@ -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;
@@ -276,6 +276,7 @@ class AgGridAdapter {
276
276
  isGrouped: this.isColumnRowGrouped(colDef),
277
277
  isFixed: this.isColumnFixed(colDef),
278
278
  pinned: this.getColumnPinnedPosition(colDef),
279
+ columnTypes: this.getColumnTypes(colDef),
279
280
  isExcludedFromQuickSearch: false,
280
281
  isSparkline: this.isColumnSparkline(colDef),
281
282
  };
@@ -494,6 +495,13 @@ class AgGridAdapter {
494
495
  }
495
496
  return colDef != null && colDef.filter != null && colDef.filter != false;
496
497
  }
498
+ getColumnTypes(colDef) {
499
+ if (!colDef.type) {
500
+ return [];
501
+ }
502
+ const allTypes = typeof colDef.type === 'string' ? [colDef.type] : colDef.type;
503
+ return allTypes;
504
+ }
497
505
  getColumnPinnedPosition(colDef) {
498
506
  return colDef.pinned
499
507
  ? colDef.pinned === 'left' || colDef.pinned === true
@@ -15,6 +15,7 @@ const UIHelper_1 = tslib_1.__importDefault(require("../View/UIHelper"));
15
15
  const PercentBarRenderer_1 = require("./PercentBarRenderer");
16
16
  const BadgeRenderer_1 = require("./BadgeRenderer");
17
17
  const Helper_1 = tslib_1.__importDefault(require("../Utilities/Helpers/Helper"));
18
+ const RowSummary_1 = require("../PredefinedConfig/Common/RowSummary");
18
19
  class AgGridColumnAdapter {
19
20
  constructor(adaptableInstance) {
20
21
  this.adaptableInstance = adaptableInstance;
@@ -417,10 +418,14 @@ class AgGridColumnAdapter {
417
418
  return userValue;
418
419
  }
419
420
  const cellEditableFn = this.adaptableOptions.editOptions.isCellEditable;
420
- if (!cellEditableFn) {
421
- return userValue;
422
- }
423
421
  const editableCallback = (params) => {
422
+ // Adaptable Row Summarie rows are not editable
423
+ if (params.node.data[RowSummary_1.ROW_SUMMARY_ROW_ID]) {
424
+ return false;
425
+ }
426
+ if (!cellEditableFn) {
427
+ return typeof userValue === 'function' ? userValue(params) : userValue;
428
+ }
424
429
  const gridCell = this.adaptableInstance.getGridCellFromRowNode(params.node, params.column.getColId());
425
430
  const cellEditableContext = {
426
431
  gridCell,
@@ -605,6 +610,9 @@ class AgGridColumnAdapter {
605
610
  if (!this.adaptableApi.internalApi.getModuleService().isModuleAvailable('Notes')) {
606
611
  return;
607
612
  }
613
+ if (!this.adaptableApi.notesApi.internalApi.areNotesAvailable()) {
614
+ return;
615
+ }
608
616
  const cellPosition = {
609
617
  PrimaryKeyValue: gridCell.primaryKeyValue,
610
618
  ColumnId: gridCell.column.columnId,
@@ -619,6 +627,9 @@ class AgGridColumnAdapter {
619
627
  if (!this.adaptableApi.internalApi.getModuleService().isModuleAvailable('Comments')) {
620
628
  return;
621
629
  }
630
+ if (!this.adaptableApi.commentApi.internalApi.areCommentsAvailable()) {
631
+ return;
632
+ }
622
633
  const position = {
623
634
  PrimaryKeyValue: gridCell.primaryKeyValue,
624
635
  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>>;