@adaptabletools/adaptable 20.3.0-canary.2 → 21.0.0-canary.0
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.
- package/agGrid.d.ts +2 -1
- package/agGrid.js +2 -1
- package/base.css +36 -15
- package/base.css.map +1 -1
- package/icons/add-circle.svg +1 -0
- package/icons/add.svg +1 -0
- package/icons/alert.svg +1 -0
- package/icons/align-center.svg +1 -0
- package/icons/align-justify.svg +1 -0
- package/icons/align-left.svg +1 -0
- package/icons/align-right.svg +1 -0
- package/icons/arrow-down-long.svg +1 -0
- package/icons/arrow-down.svg +1 -0
- package/icons/arrow-expand.svg +1 -0
- package/icons/arrow-left.svg +1 -0
- package/icons/arrow-right.svg +1 -0
- package/icons/arrow-up-long.svg +1 -0
- package/icons/arrow-up.svg +1 -0
- package/icons/assignment.svg +1 -0
- package/icons/badge.svg +1 -0
- package/icons/bold.svg +1 -0
- package/icons/boolean-list.svg +1 -0
- package/icons/brain.svg +1 -0
- package/icons/broadcast.svg +1 -0
- package/icons/brush.svg +1 -0
- package/icons/building.svg +1 -0
- package/icons/calculated-column.svg +1 -0
- package/icons/calendar.svg +1 -0
- package/icons/call.svg +1 -0
- package/icons/case-lower.svg +1 -0
- package/icons/case-sentence.svg +1 -0
- package/icons/case-upper.svg +1 -0
- package/icons/cells.svg +1 -0
- package/icons/chart.svg +1 -0
- package/icons/chat.svg +1 -0
- package/icons/check-circle.svg +1 -0
- package/icons/check.svg +1 -0
- package/icons/checked.svg +1 -0
- package/icons/clipboard.svg +1 -0
- package/icons/clone.svg +1 -0
- package/icons/close.svg +1 -0
- package/icons/cloud-upload.svg +1 -0
- package/icons/collapse-all.svg +1 -0
- package/icons/collapse.svg +1 -0
- package/icons/color-palette.svg +1 -0
- package/icons/column-add.svg +1 -0
- package/icons/column-outline.svg +1 -0
- package/icons/columns.svg +1 -0
- package/icons/comment.svg +1 -0
- package/icons/comments.svg +1 -0
- package/icons/contact.svg +1 -0
- package/icons/contains.svg +1 -0
- package/icons/copy.svg +1 -0
- package/icons/csv.svg +1 -0
- package/icons/dashboard.svg +1 -0
- package/icons/data-set.svg +1 -0
- package/icons/date-range.svg +1 -0
- package/icons/delete.svg +1 -0
- package/icons/division.svg +1 -0
- package/icons/dock.svg +1 -0
- package/icons/dollar.svg +1 -0
- package/icons/download.svg +1 -0
- package/icons/downloaded.svg +1 -0
- package/icons/drag.svg +1 -0
- package/icons/edit-table.svg +1 -0
- package/icons/edit.svg +1 -0
- package/icons/ends-with.svg +1 -0
- package/icons/equals.svg +1 -0
- package/icons/equation.svg +1 -0
- package/icons/error.svg +1 -0
- package/icons/excel.svg +1 -0
- package/icons/expand-all.svg +1 -0
- package/icons/expand.svg +1 -0
- package/icons/exponent.svg +1 -0
- package/icons/export-data.svg +1 -0
- package/icons/export.svg +1 -0
- package/icons/fast-backward.svg +1 -0
- package/icons/fast-forward.svg +1 -0
- package/icons/fdc3.svg +1 -0
- package/icons/filled-circle.svg +1 -0
- package/icons/filter-list.svg +1 -0
- package/icons/filter-off.svg +1 -0
- package/icons/filter.svg +1 -0
- package/icons/flag.svg +1 -0
- package/icons/folder-open.svg +1 -0
- package/icons/folder-shared.svg +1 -0
- package/icons/folder.svg +1 -0
- package/icons/function.svg +1 -0
- package/icons/gradient.svg +1 -0
- package/icons/greater-than-or-equal.svg +1 -0
- package/icons/greater-than.svg +1 -0
- package/icons/grid-filter.svg +1 -0
- package/icons/grid-info.svg +1 -0
- package/icons/grid.svg +1 -0
- package/icons/history.svg +1 -0
- package/icons/home.svg +1 -0
- package/icons/horizontal-lines.svg +1 -0
- package/icons/import-export.svg +1 -0
- package/icons/import.svg +1 -0
- package/icons/info.svg +1 -0
- package/icons/interactions.svg +1 -0
- package/icons/italic.svg +1 -0
- package/icons/json.svg +1 -0
- package/icons/laptop.svg +1 -0
- package/icons/less-than-or-equal.svg +1 -0
- package/icons/less-than.svg +1 -0
- package/icons/lightning.svg +1 -0
- package/icons/link.svg +1 -0
- package/icons/list.svg +1 -0
- package/icons/logout.svg +1 -0
- package/icons/mail.svg +1 -0
- package/icons/menu.svg +1 -0
- package/icons/minus.svg +1 -0
- package/icons/money.svg +1 -0
- package/icons/multiplication.svg +1 -0
- package/icons/newpage.svg +1 -0
- package/icons/news.svg +1 -0
- package/icons/not-contains.svg +1 -0
- package/icons/not-equal.svg +1 -0
- package/icons/note.svg +1 -0
- package/icons/open-in-new.svg +1 -0
- package/icons/order.svg +1 -0
- package/icons/organisation.svg +1 -0
- package/icons/overline.svg +1 -0
- package/icons/paperclip.svg +1 -0
- package/icons/pause.svg +1 -0
- package/icons/percent-tag.svg +1 -0
- package/icons/percent.svg +1 -0
- package/icons/person.svg +1 -0
- package/icons/pie-chart.svg +1 -0
- package/icons/play.svg +1 -0
- package/icons/plus.svg +1 -0
- package/icons/quote.svg +1 -0
- package/icons/refresh.svg +1 -0
- package/icons/regex.svg +1 -0
- package/icons/reminder.svg +1 -0
- package/icons/resume.svg +1 -0
- package/icons/rows.svg +1 -0
- package/icons/save.svg +1 -0
- package/icons/schedule.svg +1 -0
- package/icons/science.svg +1 -0
- package/icons/search-table.svg +1 -0
- package/icons/search.svg +1 -0
- package/icons/select-all.svg +1 -0
- package/icons/select-fwd.svg +1 -0
- package/icons/select-off.svg +1 -0
- package/icons/settings.svg +1 -0
- package/icons/sort-asc.svg +1 -0
- package/icons/sort-desc.svg +1 -0
- package/icons/spanner.svg +1 -0
- package/icons/spark-line.svg +1 -0
- package/icons/starts-with.svg +1 -0
- package/icons/statusbar.svg +1 -0
- package/icons/stop.svg +1 -0
- package/icons/strikethrough.svg +1 -0
- package/icons/styled-grid.svg +1 -0
- package/icons/sync.svg +1 -0
- package/icons/tab-unselected.svg +1 -0
- package/icons/target.svg +1 -0
- package/icons/theme.svg +1 -0
- package/icons/traffic-lights.svg +1 -0
- package/icons/triangle-down.svg +1 -0
- package/icons/triangle-up.svg +1 -0
- package/icons/unchecked.svg +1 -0
- package/icons/underline.svg +1 -0
- package/icons/undo.svg +1 -0
- package/icons/unfilled-circle.svg +1 -0
- package/icons/upload.svg +1 -0
- package/icons/visibility-off-bold.svg +1 -0
- package/icons/visibility-off.svg +1 -0
- package/icons/visibility-on-bold.svg +1 -0
- package/icons/visibility-on.svg +1 -0
- package/icons/warning.svg +1 -0
- package/index.css +32 -15
- package/index.css.map +1 -1
- package/package.json +2 -2
- package/src/AdaptableInterfaces/IAdaptable.d.ts +10 -5
- package/src/AdaptableOptions/ColumnOptions.d.ts +71 -187
- package/src/AdaptableOptions/DefaultAdaptableOptions.js +3 -2
- package/src/AdaptableOptions/EditOptions.d.ts +4 -7
- package/src/AdaptableOptions/FilterOptions.d.ts +50 -15
- package/src/AdaptableOptions/LayoutOptions.d.ts +8 -21
- package/src/AdaptableOptions/PredicateOptions.d.ts +1 -1
- package/src/AdaptableOptions/UserInterfaceOptions.d.ts +1 -1
- package/src/AdaptableState/Common/AdaptableColumn.d.ts +7 -0
- package/src/AdaptableState/Common/AdaptablePredicate.js +2 -2
- package/src/AdaptableState/Common/CustomWindowConfig.d.ts +11 -11
- package/src/AdaptableState/Common/ExtendedLayout.d.ts +50 -0
- package/src/AdaptableState/Common/ProgressIndicatorConfig.d.ts +1 -4
- package/src/AdaptableState/Common/RowScope.d.ts +1 -1
- package/src/AdaptableState/FormatColumnState.d.ts +16 -9
- package/src/AdaptableState/InternalState.d.ts +1 -1
- package/src/AdaptableState/LayoutState.d.ts +26 -6
- package/src/AdaptableState/Selection/GridCell.d.ts +32 -0
- package/src/AdaptableState/StyledColumnState.d.ts +2 -2
- package/src/Api/AlertApi.d.ts +5 -11
- package/src/Api/ColumnApi.d.ts +17 -1
- package/src/Api/ColumnFilterApi.d.ts +32 -2
- package/src/Api/CustomSortApi.d.ts +5 -10
- package/src/Api/FlashingCellApi.d.ts +10 -6
- package/src/Api/FormatColumnApi.d.ts +8 -18
- package/src/Api/Implementation/AlertApiImpl.d.ts +6 -9
- package/src/Api/Implementation/AlertApiImpl.js +7 -6
- package/src/Api/Implementation/ApiBase.d.ts +2 -12
- package/src/Api/Implementation/ApiBase.js +5 -5
- package/src/Api/Implementation/ColumnApiImpl.d.ts +5 -2
- package/src/Api/Implementation/ColumnApiImpl.js +59 -23
- package/src/Api/Implementation/ColumnFilterApiImpl.d.ts +7 -1
- package/src/Api/Implementation/ColumnFilterApiImpl.js +76 -3
- package/src/Api/Implementation/ColumnScopeApiImpl.js +10 -2
- package/src/Api/Implementation/CustomSortApiImpl.d.ts +5 -10
- package/src/Api/Implementation/CustomSortApiImpl.js +6 -4
- package/src/Api/Implementation/FlashingCellApiImpl.d.ts +7 -6
- package/src/Api/Implementation/FlashingCellApiImpl.js +11 -8
- package/src/Api/Implementation/FormatColumnApiImpl.d.ts +8 -18
- package/src/Api/Implementation/FormatColumnApiImpl.js +10 -9
- package/src/Api/Implementation/LayoutApiImpl.d.ts +3 -2
- package/src/Api/Implementation/LayoutApiImpl.js +101 -7
- package/src/Api/Implementation/LayoutHelpers.d.ts +1 -0
- package/src/Api/Implementation/LayoutHelpers.js +23 -4
- package/src/Api/Implementation/PlusMinusApiImpl.d.ts +7 -5
- package/src/Api/Implementation/PlusMinusApiImpl.js +10 -7
- package/src/Api/Implementation/ScheduleApiImpl.d.ts +9 -16
- package/src/Api/Implementation/ScheduleApiImpl.js +15 -17
- package/src/Api/Implementation/ShortcutApiImpl.d.ts +5 -6
- package/src/Api/Implementation/ShortcutApiImpl.js +7 -8
- package/src/Api/Implementation/StyledColumnApiImpl.d.ts +7 -8
- package/src/Api/Implementation/StyledColumnApiImpl.js +12 -9
- package/src/Api/Implementation/TeamSharingApiImpl.js +1 -4
- package/src/Api/Implementation/UserInterfaceApiImpl.d.ts +2 -1
- package/src/Api/Implementation/UserInterfaceApiImpl.js +10 -9
- package/src/Api/Internal/AdaptableInternalApi.d.ts +2 -0
- package/src/Api/Internal/AdaptableInternalApi.js +3 -0
- package/src/Api/Internal/AlertInternalApi.d.ts +6 -6
- package/src/Api/Internal/AlertInternalApi.js +10 -10
- package/src/Api/Internal/ColumnFilterInternalApi.d.ts +13 -0
- package/src/Api/Internal/ColumnFilterInternalApi.js +93 -1
- package/src/Api/Internal/ColumnInternalApi.d.ts +2 -1
- package/src/Api/Internal/ColumnInternalApi.js +6 -2
- package/src/Api/Internal/DashboardInternalApi.js +1 -1
- package/src/Api/Internal/EntitlementInternalApi.d.ts +1 -0
- package/src/Api/Internal/EntitlementInternalApi.js +8 -0
- package/src/Api/Internal/ExportInternalApi.js +1 -1
- package/src/Api/Internal/FlashingCellInternalApi.js +1 -1
- package/src/Api/Internal/FormatColumnInternalApi.d.ts +12 -13
- package/src/Api/Internal/FormatColumnInternalApi.js +45 -16
- package/src/Api/Internal/GridInternalApi.d.ts +7 -10
- package/src/Api/Internal/GridInternalApi.js +76 -27
- package/src/Api/Internal/LayoutInternalApi.d.ts +5 -5
- package/src/Api/Internal/LayoutInternalApi.js +42 -5
- package/src/Api/Internal/PredicateInternalApi.d.ts +2 -6
- package/src/Api/Internal/PredicateInternalApi.js +4 -6
- package/src/Api/Internal/UserInterfaceInternalApi.d.ts +1 -0
- package/src/Api/Internal/UserInterfaceInternalApi.js +10 -3
- package/src/Api/LayoutApi.d.ts +7 -2
- package/src/Api/PlusMinusApi.d.ts +11 -7
- package/src/Api/ScheduleApi.d.ts +9 -16
- package/src/Api/ShortcutApi.d.ts +5 -6
- package/src/Api/StyledColumnApi.d.ts +10 -7
- package/src/Api/UserInterfaceApi.d.ts +5 -6
- package/src/Redux/ActionsReducers/InternalRedux.d.ts +4 -4
- package/src/Redux/ActionsReducers/InternalRedux.js +7 -7
- package/src/Redux/ActionsReducers/StyledColumnRedux.d.ts +7 -0
- package/src/Redux/ActionsReducers/StyledColumnRedux.js +13 -0
- package/src/Redux/Store/AdaptableStore.js +10 -10
- package/src/Strategy/AdaptableModuleBase.d.ts +14 -4
- package/src/Strategy/AdaptableModuleBase.js +46 -9
- package/src/Strategy/AlertModule.d.ts +3 -4
- package/src/Strategy/AlertModule.js +7 -4
- package/src/Strategy/CalculatedColumnModule.js +2 -2
- package/src/Strategy/CellSummaryModule.js +2 -2
- package/src/Strategy/ChartingModule.d.ts +3 -1
- package/src/Strategy/ChartingModule.js +9 -3
- package/src/Strategy/ColumnFilterModule.d.ts +1 -1
- package/src/Strategy/ColumnFilterModule.js +31 -15
- package/src/Strategy/ColumnInfoModule.js +2 -2
- package/src/Strategy/CommentModule.d.ts +1 -1
- package/src/Strategy/CommentModule.js +3 -3
- package/src/Strategy/CustomSortModule.d.ts +3 -4
- package/src/Strategy/CustomSortModule.js +2 -2
- package/src/Strategy/DashboardModule.js +1 -1
- package/src/Strategy/DataChangeHistoryModule.d.ts +2 -1
- package/src/Strategy/DataChangeHistoryModule.js +3 -10
- package/src/Strategy/DataImportModule.js +3 -3
- package/src/Strategy/ExportModule.js +1 -1
- package/src/Strategy/Fdc3Module.js +1 -1
- package/src/Strategy/FlashingCellModule.d.ts +3 -5
- package/src/Strategy/FlashingCellModule.js +3 -3
- package/src/Strategy/FormatColumnModule.d.ts +3 -4
- package/src/Strategy/FormatColumnModule.js +4 -2
- package/src/Strategy/FreeTextColumnModule.d.ts +1 -1
- package/src/Strategy/FreeTextColumnModule.js +2 -2
- package/src/Strategy/GridInfoModule.js +2 -2
- package/src/Strategy/Interface/IModule.d.ts +7 -3
- package/src/Strategy/LayoutModule.js +11 -11
- package/src/Strategy/NoteModule.d.ts +1 -1
- package/src/Strategy/NoteModule.js +3 -3
- package/src/Strategy/PlusMinusModule.d.ts +3 -4
- package/src/Strategy/PlusMinusModule.js +2 -2
- package/src/Strategy/QuickSearchModule.d.ts +2 -0
- package/src/Strategy/QuickSearchModule.js +9 -0
- package/src/Strategy/ScheduleModule.d.ts +3 -4
- package/src/Strategy/ScheduleModule.js +2 -2
- package/src/Strategy/SettingsPanelModule.js +1 -1
- package/src/Strategy/ShortcutModule.d.ts +3 -4
- package/src/Strategy/ShortcutModule.js +2 -2
- package/src/Strategy/StatusBarModule.d.ts +3 -2
- package/src/Strategy/StatusBarModule.js +6 -3
- package/src/Strategy/StyledColumnModule.d.ts +3 -4
- package/src/Strategy/StyledColumnModule.js +2 -2
- package/src/Strategy/SystemStatusModule.js +2 -2
- package/src/Strategy/TeamSharingModule.d.ts +1 -1
- package/src/Strategy/TeamSharingModule.js +5 -2
- package/src/Strategy/ToolPanelModule.d.ts +1 -1
- package/src/Strategy/ToolPanelModule.js +1 -4
- package/src/Strategy/Utilities/FormatColumn/getFormatColumnSettingsTargetItems.d.ts +5 -0
- package/src/Strategy/Utilities/FormatColumn/getFormatColumnSettingsTargetItems.js +12 -0
- package/src/Strategy/Utilities/Layout/getLayoutFilterViewItems.js +1 -1
- package/src/Utilities/Constants/DocumentationLinkConstants.d.ts +1 -0
- package/src/Utilities/Constants/DocumentationLinkConstants.js +1 -0
- package/src/Utilities/Extensions/ArrayExtensions.d.ts +15 -2
- package/src/Utilities/Extensions/ArrayExtensions.js +62 -13
- package/src/Utilities/ObjectFactory.js +3 -2
- package/src/Utilities/Services/AnnotationsService.js +1 -1
- package/src/Utilities/Services/Interface/IModuleService.d.ts +2 -1
- package/src/Utilities/Services/ModuleService.d.ts +3 -3
- package/src/Utilities/Services/ModuleService.js +19 -7
- package/src/Utilities/getScopeViewItems.js +5 -2
- package/src/View/AdaptableView.js +3 -1
- package/src/View/ColumnInfo/ColumnInfo.js +9 -3
- package/src/View/Components/AdaptableIconSelector/index.js +2 -3
- package/src/View/Components/ColumnFilter/AdaptableColumnFilter.d.ts +0 -1
- package/src/View/Components/ColumnFilter/AdaptableColumnFilter.js +2 -3
- package/src/View/Components/ColumnFilter/AdaptableFloatingFilter.d.ts +0 -2
- package/src/View/Components/ColumnFilter/AdaptableFloatingFilter.js +4 -7
- package/src/View/Components/ColumnFilter/ColumnFilter.js +11 -4
- package/src/View/Components/ColumnFilter/ColumnFilterWindow.js +1 -1
- package/src/View/Components/ColumnFilter/FloatingFilter.js +1 -2
- package/src/View/Components/ColumnFilter/LayoutColumnFilter.js +1 -1
- package/src/View/Components/ColumnFilter/components/ColumnFilterInput.js +2 -2
- package/src/View/Components/ColumnFilter/components/FloatingFilterValues.js +2 -2
- package/src/View/Components/ColumnFilter/useAdaptableFilterWrapper.d.ts +1 -1
- package/src/View/Components/ColumnFilter/useAdaptableFilterWrapper.js +2 -2
- package/src/View/Components/ColumnFilter/utils.d.ts +2 -2
- package/src/View/Components/ColumnFilter/utils.js +6 -1
- package/src/View/Components/EntityRulesEditor/index.js +1 -2
- package/src/View/Components/FilterForm/ListBoxFilterForm.js +1 -1
- package/src/View/Components/NewScopeComponent.js +5 -1
- package/src/View/Components/Popups/AdaptablePopup/AdaptablePopupModuleView.js +6 -6
- package/src/View/Components/PredicateEditor/PredicateEditor.js +1 -2
- package/src/View/Components/Selectors/BulkUpdateValueSelector.js +1 -1
- package/src/View/Components/Selectors/ColumnSelector.js +1 -1
- package/src/View/Components/Selectors/FieldSelector.js +1 -1
- package/src/View/Components/Selectors/PermittedValuesSelector.d.ts +1 -0
- package/src/View/Components/Selectors/PermittedValuesSelector.js +2 -2
- package/src/View/Dashboard/Dashboard.js +2 -2
- package/src/View/Dashboard/DashboardPopup.js +3 -1
- package/src/View/Dashboard/PinnedDashboard.js +1 -1
- package/src/View/DataChangeHistory/DataChangeHistoryGrid.js +9 -21
- package/src/View/FormatColumn/Wizard/FormatColumnFormatWizardSection.js +59 -22
- package/src/View/FormatColumn/Wizard/FormatColumnRuleWizardSection.js +4 -0
- package/src/View/FormatColumn/Wizard/FormatColumnScopeWizardSection.js +1 -40
- package/src/View/FormatColumn/Wizard/FormatColumnSettingsWizardSection.js +13 -12
- package/src/View/FormatColumn/Wizard/FormatColumnTargetWizardSection.d.ts +8 -0
- package/src/View/FormatColumn/Wizard/FormatColumnTargetWizardSection.js +31 -0
- package/src/View/FormatColumn/Wizard/FormatColumnWizard.js +18 -4
- package/src/View/GridInfo/GridInfoPopup/AdaptableObjectsSummary.js +1 -1
- package/src/View/GridInfo/GridInfoPopup/GridInfoPopup.js +1 -1
- package/src/View/Layout/TransposedPopup.js +2 -2
- package/src/View/Layout/Wizard/sections/ColumnsSection.js +64 -9
- package/src/View/Layout/Wizard/sections/PivotAggregationsSection.js +5 -5
- package/src/View/StatusBar/AdaptableStatusBar.js +1 -4
- package/src/View/StatusBar/StatusBarPopup.js +1 -1
- package/src/View/Theme/ThemeSelector.js +1 -1
- package/src/agGrid/AdaptableAgGrid.d.ts +11 -7
- package/src/agGrid/AdaptableAgGrid.js +256 -218
- package/src/agGrid/AdaptableFilterHandler.d.ts +18 -0
- package/src/agGrid/AdaptableFilterHandler.js +61 -0
- package/src/agGrid/AgGridAdapter.d.ts +3 -7
- package/src/agGrid/AgGridAdapter.js +13 -46
- package/src/agGrid/AgGridColumnAdapter.d.ts +3 -3
- package/src/agGrid/AgGridColumnAdapter.js +86 -40
- package/src/agGrid/AgGridExportAdapter.js +1 -1
- package/src/agGrid/AgGridFilterAdapter.d.ts +2 -0
- package/src/agGrid/AgGridFilterAdapter.js +48 -0
- package/src/agGrid/AgGridFloatingFilterAdapter.d.ts +2 -0
- package/src/agGrid/{FloatingFilterWrapper.js → AgGridFloatingFilterAdapter.js} +24 -35
- package/src/agGrid/AgGridModulesAdapter.d.ts +15 -0
- package/src/agGrid/AgGridModulesAdapter.js +66 -0
- package/src/agGrid/editors/AdaptableNumberEditor/InternalAdaptableNumberEditor.js +1 -1
- package/src/agGrid/editors/AdaptablePercentageEditor/InternalAdaptablePercentageEditor.js +1 -1
- package/src/components/Dialog/index.js +1 -1
- package/src/components/Dropdown/Arrows.js +2 -2
- package/src/components/ExpressionEditor/QueryBuilder/QueryBuilderInputs.d.ts +1 -1
- package/src/components/ExpressionEditor/QueryBuilder/QueryBuilderInputs.js +2 -2
- package/src/components/ExpressionEditor/QueryBuilder/QueryPredicateBuilder.js +2 -2
- package/src/components/FileDroppable/index.js +1 -1
- package/src/components/IconSelector/IconSelector.d.ts +2 -2
- package/src/components/OverlayTrigger/index.js +1 -1
- package/src/components/Select/Select.d.ts +1 -1
- package/src/components/Select/Select.js +116 -24
- package/src/components/icons/DefaultIcon.d.ts +0 -1
- package/src/components/icons/DefaultIcon.js +0 -6
- package/src/env.js +2 -2
- package/src/layout-manager/src/LayoutManagerModel.d.ts +6 -10
- package/src/layout-manager/src/index.d.ts +11 -3
- package/src/layout-manager/src/index.js +302 -87
- package/src/layout-manager/src/normalizeLayoutModel.js +7 -4
- package/src/layout-manager/src/simplifyLayoutModel.js +4 -4
- package/src/metamodel/adaptable.metamodel.d.ts +172 -20
- package/src/metamodel/adaptable.metamodel.js +1 -1
- package/src/migration/AdaptableUpgradeHelper.js +2 -0
- package/src/migration/VersionUpgrade17.js +1 -1
- package/src/migration/VersionUpgrade20.js +1 -0
- package/src/migration/VersionUpgrade21.d.ts +6 -0
- package/src/migration/VersionUpgrade21.js +24 -0
- package/src/types.d.ts +8 -9
- package/tsconfig.esm.tsbuildinfo +1 -1
- package/src/AdaptableState/Common/ExtendedLayoutInfo.d.ts +0 -27
- package/src/agGrid/FilterWrapper.d.ts +0 -2
- package/src/agGrid/FilterWrapper.js +0 -131
- package/src/agGrid/FloatingFilterWrapper.d.ts +0 -2
- package/src/agGrid/agGridModules.d.ts +0 -3
- package/src/agGrid/agGridModules.js +0 -15
- package/src/agGrid/getAgGridFilterNotifyModelFn.d.ts +0 -2
- package/src/agGrid/getAgGridFilterNotifyModelFn.js +0 -16
- /package/src/AdaptableState/Common/{ExtendedLayoutInfo.js → ExtendedLayout.js} +0 -0
|
@@ -119,53 +119,90 @@ export const getFormatDisplayTypeForScope = (scope, api) => {
|
|
|
119
119
|
if ('All' in scope) {
|
|
120
120
|
return undefined;
|
|
121
121
|
}
|
|
122
|
-
//
|
|
122
|
+
// Date-related data types that should all be treated as 'date'
|
|
123
|
+
const dateTypes = api.columnApi.internalApi.getColumnDateTypes();
|
|
124
|
+
// Check for ColumnIds in scope
|
|
123
125
|
if ('ColumnIds' in scope) {
|
|
124
126
|
const columns = scope.ColumnIds.map((c) => api.columnApi.getColumnWithColumnId(c)).filter(Boolean);
|
|
125
127
|
const columnDataTypes = uniq(columns.map((c) => c.dataType));
|
|
126
|
-
|
|
128
|
+
// If there's only one data type
|
|
129
|
+
if (columnDataTypes.length === 1) {
|
|
130
|
+
const dataType = columnDataTypes[0];
|
|
131
|
+
if (dataType === 'number') {
|
|
132
|
+
return 'number';
|
|
133
|
+
}
|
|
134
|
+
if (dateTypes.includes(dataType)) {
|
|
135
|
+
return 'date';
|
|
136
|
+
}
|
|
137
|
+
if (dataType === 'text') {
|
|
138
|
+
return 'text';
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
// If there are multiple data types but they're all date types
|
|
142
|
+
else if (columnDataTypes.length > 0 &&
|
|
143
|
+
columnDataTypes.every((type) => dateTypes.includes(type))) {
|
|
144
|
+
return 'date';
|
|
145
|
+
}
|
|
146
|
+
return undefined;
|
|
147
|
+
}
|
|
148
|
+
// Check for DataTypes in scope
|
|
149
|
+
if ('DataTypes' in scope && scope.DataTypes.length === 1) {
|
|
150
|
+
const dataType = scope.DataTypes[0];
|
|
151
|
+
if (dataType === 'number') {
|
|
127
152
|
return 'number';
|
|
128
153
|
}
|
|
129
|
-
if (
|
|
154
|
+
if (dateTypes.includes(dataType)) {
|
|
130
155
|
return 'date';
|
|
131
156
|
}
|
|
132
|
-
if (
|
|
157
|
+
if (dataType === 'text') {
|
|
133
158
|
return 'text';
|
|
134
159
|
}
|
|
135
|
-
return undefined;
|
|
136
|
-
}
|
|
137
|
-
if ('DataTypes' in scope && scope.DataTypes.length == 1 && scope.DataTypes[0] == 'number') {
|
|
138
|
-
return 'number';
|
|
139
160
|
}
|
|
140
|
-
|
|
161
|
+
// If there are multiple data types but they're all date types
|
|
162
|
+
else if ('DataTypes' in scope &&
|
|
163
|
+
scope.DataTypes.length > 0 &&
|
|
164
|
+
scope.DataTypes.every((type) => dateTypes.includes(type))) {
|
|
141
165
|
return 'date';
|
|
142
166
|
}
|
|
143
|
-
|
|
144
|
-
return 'text';
|
|
145
|
-
}
|
|
167
|
+
// Check for ColumnTypes in scope
|
|
146
168
|
if ('ColumnTypes' in scope && scope.ColumnTypes.length) {
|
|
147
|
-
//
|
|
169
|
+
// If a Pivot Total Column Type is specified, we can safely assume that the data type is number
|
|
148
170
|
const pivotTotalTypes = [
|
|
149
171
|
PIVOT_ANY_TOTAL_COLUMN_TYPE,
|
|
150
172
|
PIVOT_GRAND_TOTAL_COLUMN_TYPE,
|
|
151
173
|
PIVOT_COLUMN_TOTAL_COLUMN_TYPE,
|
|
152
174
|
PIVOT_AGGREGATION_TOTAL_COLUMN_TYPE,
|
|
153
175
|
];
|
|
154
|
-
//
|
|
176
|
+
// If all column types are pivot total types, we can safely assume that the data type is number
|
|
155
177
|
if (scope.ColumnTypes.length > 0 &&
|
|
156
178
|
scope.ColumnTypes.every((type) => pivotTotalTypes.includes(type))) {
|
|
157
179
|
return 'number';
|
|
158
180
|
}
|
|
159
|
-
//
|
|
181
|
+
// Check if all columns with this column type have the same data type
|
|
160
182
|
const columns = scope.ColumnTypes.flatMap((columnType) => {
|
|
161
183
|
return api.columnApi.getColumnsByColumnType(columnType);
|
|
162
184
|
});
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
columns.every((column) => column.dataType === columns[0].dataType)
|
|
166
|
-
//
|
|
167
|
-
|
|
168
|
-
|
|
185
|
+
if (columns.length) {
|
|
186
|
+
// Check if all columns have the same type
|
|
187
|
+
const allSameType = columns.every((column) => column.dataType === columns[0].dataType);
|
|
188
|
+
// Handle specific data types
|
|
189
|
+
if (allSameType) {
|
|
190
|
+
const dataType = columns[0].dataType;
|
|
191
|
+
if (dataType === 'number') {
|
|
192
|
+
return 'number';
|
|
193
|
+
}
|
|
194
|
+
if (dateTypes.includes(dataType)) {
|
|
195
|
+
return 'date';
|
|
196
|
+
}
|
|
197
|
+
if (dataType === 'text') {
|
|
198
|
+
return 'text';
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
// Check if all columns are date types (even if they're different date types)
|
|
202
|
+
const allDateTypes = columns.every((column) => dateTypes.includes(column.dataType));
|
|
203
|
+
if (allDateTypes) {
|
|
204
|
+
return 'date';
|
|
205
|
+
}
|
|
169
206
|
}
|
|
170
207
|
}
|
|
171
208
|
return undefined;
|
|
@@ -453,5 +490,5 @@ export const FormatColumnFormatWizardSection = (props) => {
|
|
|
453
490
|
return (React.createElement(HelpBlock, { margin: 3 },
|
|
454
491
|
"Setting a Display Format is only possible if ",
|
|
455
492
|
React.createElement("b", null, "all"),
|
|
456
|
-
" the columns in Scope are Numeric, String or Date
|
|
493
|
+
" the columns in Scope are Numeric, String or Date"));
|
|
457
494
|
};
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { useOnePageAdaptableWizardContext } from '../../Wizard/OnePageAdaptableWizard';
|
|
3
3
|
import { EntityRulesEditor } from '../../Components/EntityRulesEditor';
|
|
4
|
+
import HelpBlock from '../../../components/HelpBlock';
|
|
4
5
|
export function FormatColumnRuleWizardSection(props) {
|
|
5
6
|
const { data, api, moduleInfo } = useOnePageAdaptableWizardContext();
|
|
7
|
+
if (data.Target && data.Target === 'columnHeader') {
|
|
8
|
+
return (React.createElement(HelpBlock, { margin: 3 }, "Conditions cannot be applied if the Target of the Format Column is Column Header"));
|
|
9
|
+
}
|
|
6
10
|
return (React.createElement(EntityRulesEditor, { module: moduleInfo.ModuleName, defaultPredicateId: props.defaultPredicateId,
|
|
7
11
|
// TODO see what is this
|
|
8
12
|
predicateDefs: api.formatColumnApi.internalApi.getFormatColumnDefsForScope(data.Scope), getPredicateDefsForColId: (colId) => api.formatColumnApi.internalApi.getFormatColumnDefsForScope({ ColumnIds: [colId] }), showNoRule: true, showBoolean: true, showAggregation: false, showObservable: false, showQueryBuilder: true, showPredicate: !api.columnScopeApi.scopeIsAll(data.Scope), data: data, onChange: (formatColumn) => props.onChange(formatColumn), descriptions: {
|
|
@@ -2,11 +2,7 @@ import * as React from 'react';
|
|
|
2
2
|
import { NewScopeComponent, renderScopeSummary } from '../../Components/NewScopeComponent';
|
|
3
3
|
import { useOnePageAdaptableWizardContext } from '../../Wizard/OnePageAdaptableWizard';
|
|
4
4
|
import { DEFAULT_PREDICATE_ID_FOR_FORMAT_COLUMN } from './constants';
|
|
5
|
-
import {
|
|
6
|
-
import { Box, Flex } from 'rebass';
|
|
7
|
-
import FormLayout, { FormRow } from '../../../components/FormLayout';
|
|
8
|
-
import { CheckBox } from '../../../components/CheckBox';
|
|
9
|
-
import HelpBlock from '../../../components/HelpBlock';
|
|
5
|
+
import { Box } from 'rebass';
|
|
10
6
|
export const renderFormatColumnScopeSummary = (data) => {
|
|
11
7
|
return renderScopeSummary(data.Scope, {
|
|
12
8
|
scopeWholeRow: 'Matching rows will be formatted',
|
|
@@ -16,42 +12,7 @@ export const renderFormatColumnScopeSummary = (data) => {
|
|
|
16
12
|
};
|
|
17
13
|
export const FormatColumnScopeWizardSection = (props) => {
|
|
18
14
|
const { data, api } = useOnePageAdaptableWizardContext();
|
|
19
|
-
const currentTargets = data.Target?.length ? data.Target : ['cell'];
|
|
20
|
-
const handleTargetChange = (target, checked) => {
|
|
21
|
-
let newTargets;
|
|
22
|
-
if (checked) {
|
|
23
|
-
// Add the target if it's not already included
|
|
24
|
-
newTargets = [...new Set([...currentTargets, target])];
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
// Remove the target
|
|
28
|
-
newTargets = currentTargets.filter((t) => t !== target);
|
|
29
|
-
}
|
|
30
|
-
// If all checkboxes are unchecked, default to ['cell']
|
|
31
|
-
if (newTargets.length === 0) {
|
|
32
|
-
newTargets = ['cell'];
|
|
33
|
-
}
|
|
34
|
-
// Update the formatColumn object
|
|
35
|
-
props.onChange({
|
|
36
|
-
...data,
|
|
37
|
-
Target: newTargets,
|
|
38
|
-
});
|
|
39
|
-
};
|
|
40
15
|
return (React.createElement(React.Fragment, null,
|
|
41
|
-
React.createElement(Tabs, { mb: 3 },
|
|
42
|
-
React.createElement(Tabs.Tab, null, "Target"),
|
|
43
|
-
React.createElement(Tabs.Content, null,
|
|
44
|
-
React.createElement(Flex, { flexDirection: "column" },
|
|
45
|
-
React.createElement(FormLayout, { width: "100%" },
|
|
46
|
-
React.createElement(FormRow, { label: "Target Column Elements: ", tooltip: "The visual elements where formatting will be applied" },
|
|
47
|
-
React.createElement(CheckBox, { "data-name": "target-cell", checked: currentTargets.includes('cell'), onChange: (target) => {
|
|
48
|
-
handleTargetChange('cell', target);
|
|
49
|
-
}, ml: 2 }, "Data Cells"),
|
|
50
|
-
React.createElement(CheckBox, { "data-name": "target-column-header", checked: currentTargets.includes('columnHeader'), onChange: (target) => {
|
|
51
|
-
handleTargetChange('columnHeader', target);
|
|
52
|
-
}, ml: 4 }, "Column Headers"))),
|
|
53
|
-
React.createElement(HelpBlock, { fontSize: 2 }, 'At least one target element must be selected (defaults to Data Cells).' +
|
|
54
|
-
' Conditional formatting rules only apply to Data Cells, not to Headers.')))),
|
|
55
16
|
React.createElement(Box, { "data-name": 'scope-heading', style: {
|
|
56
17
|
borderRadius: `var(--ab__border-radius)`,
|
|
57
18
|
}, padding: 2, backgroundColor: `var(--ab-color-primarylight)` }, "Scope"),
|
|
@@ -94,18 +94,19 @@ export const FormatColumnSettingsWizardSection = (props) => {
|
|
|
94
94
|
React.createElement(Toggle, { icon: "align-right", pressed: data.CellAlignment === 'Right', onPressedChange: (pressed) => pressed
|
|
95
95
|
? onCellAlignmentSelectChanged('Right')
|
|
96
96
|
: onCellAlignmentSelectChanged(null) }))),
|
|
97
|
-
React.createElement(
|
|
98
|
-
React.createElement(
|
|
99
|
-
React.createElement(
|
|
100
|
-
|
|
101
|
-
React.createElement(
|
|
102
|
-
React.createElement(
|
|
103
|
-
|
|
104
|
-
React.createElement(
|
|
105
|
-
React.createElement(
|
|
106
|
-
|
|
107
|
-
React.createElement(
|
|
108
|
-
React.createElement(
|
|
97
|
+
data.Target === 'cell' && (React.createElement(React.Fragment, null,
|
|
98
|
+
React.createElement(FormRow, { label: "Exclude Data Rows:" },
|
|
99
|
+
React.createElement(Flex, { alignItems: "center", marginLeft: 2 },
|
|
100
|
+
React.createElement(CheckBox, { "data-name": "exclude-data-rows-checkbox", checked: data.RowScope?.ExcludeDataRows, onChange: onExcludeDataRowsChanged, mr: 2 }))),
|
|
101
|
+
React.createElement(FormRow, { label: "Exclude Group Rows:" },
|
|
102
|
+
React.createElement(Flex, { alignItems: "center", marginLeft: 2 },
|
|
103
|
+
React.createElement(CheckBox, { "data-name": "exclude-grouped-rows-checkbox", checked: data.RowScope?.ExcludeGroupRows, onChange: onExcludeGroupedRowsChanged, mr: 2 }))),
|
|
104
|
+
React.createElement(FormRow, { label: "Exclude Row Summaries:" },
|
|
105
|
+
React.createElement(Flex, { alignItems: "center", marginLeft: 2 },
|
|
106
|
+
React.createElement(CheckBox, { "data-name": "exclude-summary-rows-checkbox", checked: data.RowScope?.ExcludeSummaryRows, onChange: onExcludeSummaryRowsChanged, mr: 2 }))),
|
|
107
|
+
React.createElement(FormRow, { label: "Exclude Total Rows:" },
|
|
108
|
+
React.createElement(Flex, { alignItems: "center", marginLeft: 2 },
|
|
109
|
+
React.createElement(CheckBox, { "data-name": "exclude-total-rows-checkbox", checked: data.RowScope?.ExcludeTotalRows, onChange: onExcludeTotalRowsChanged, mr: 2 }))))),
|
|
109
110
|
React.createElement(FormRow, { label: "Apply on Column Group:" },
|
|
110
111
|
React.createElement(RadioGroup, { value: data.ColumnGroupScope || 'Both', name: "columnGroupScope", orientation: "horizontal", onRadioChange: (columnGroupScope) => {
|
|
111
112
|
props.onChange({
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { FormatColumn } from '../../../AdaptableState/FormatColumnState';
|
|
3
|
+
type FormatColumnScopeWizardSectionProps = {
|
|
4
|
+
onChange: (data: FormatColumn) => void;
|
|
5
|
+
};
|
|
6
|
+
export declare const renderFormatColumnTargetSummary: (data: FormatColumn) => "Column Header" | "Column Cells";
|
|
7
|
+
export declare const FormatColumnTargetWizardSection: (props: FormatColumnScopeWizardSectionProps) => React.JSX.Element;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { useOnePageAdaptableWizardContext } from '../../Wizard/OnePageAdaptableWizard';
|
|
3
|
+
import { Tabs } from '../../../components/Tabs';
|
|
4
|
+
import { Flex } from 'rebass';
|
|
5
|
+
import { TypeRadio } from '../../Wizard/TypeRadio';
|
|
6
|
+
export const renderFormatColumnTargetSummary = (data) => {
|
|
7
|
+
if (!data.Target || data.Target === 'cell') {
|
|
8
|
+
return 'Column Cells';
|
|
9
|
+
}
|
|
10
|
+
if (data.Target === 'columnHeader') {
|
|
11
|
+
return 'Column Header';
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
export const FormatColumnTargetWizardSection = (props) => {
|
|
15
|
+
const { data, api } = useOnePageAdaptableWizardContext();
|
|
16
|
+
const currentTarget = data.Target ? data.Target : 'cell';
|
|
17
|
+
const handleTargetChange = (target) => {
|
|
18
|
+
// Update the formatColumn object
|
|
19
|
+
props.onChange({
|
|
20
|
+
...data,
|
|
21
|
+
Target: target,
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
return (React.createElement(React.Fragment, null,
|
|
25
|
+
React.createElement(Tabs, { mb: 3 },
|
|
26
|
+
React.createElement(Tabs.Tab, null, "Target"),
|
|
27
|
+
React.createElement(Tabs.Content, null,
|
|
28
|
+
React.createElement(Flex, { flexDirection: "column" },
|
|
29
|
+
React.createElement(TypeRadio, { "data-name": "target-column-cell", text: 'Column Cells', description: "Column Cells are styled and formatted", checked: currentTarget === 'cell', onClick: () => handleTargetChange('cell') }),
|
|
30
|
+
React.createElement(TypeRadio, { "data-name": "target-column-header", text: 'Column Header', description: "The Column Header is styled (Note: Conditions are not available for Column Headers)", checked: currentTarget === 'columnHeader', onClick: () => handleTargetChange('columnHeader') }))))));
|
|
31
|
+
};
|
|
@@ -17,9 +17,14 @@ import { isAdaptableRuleValid } from '../../Components/EntityRulesEditor/Utiliti
|
|
|
17
17
|
import { FormatColumnRuleWizardSection } from './FormatColumnRuleWizardSection';
|
|
18
18
|
import { DEFAULT_PREDICATE_ID_FOR_FORMAT_COLUMN } from './constants';
|
|
19
19
|
import { isObjectEmpty } from '../../../Utilities/Extensions/ObjectExtensions';
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
const
|
|
20
|
+
import { FormatColumnTargetWizardSection, renderFormatColumnTargetSummary, } from './FormatColumnTargetWizardSection';
|
|
21
|
+
const adjustDisplayFormat = (fc, api) => {
|
|
22
|
+
const formatColumn = { ...fc };
|
|
23
|
+
let formatDataType = getFormatDisplayTypeForScope(formatColumn.Scope, api);
|
|
24
|
+
if (formatColumn.Target === 'columnHeader') {
|
|
25
|
+
// Column Headers are always text
|
|
26
|
+
formatDataType = 'text';
|
|
27
|
+
}
|
|
23
28
|
if (!formatDataType && formatColumn.DisplayFormat) {
|
|
24
29
|
formatColumn.DisplayFormat = undefined;
|
|
25
30
|
}
|
|
@@ -88,7 +93,7 @@ export function FormatColumnWizard(props) {
|
|
|
88
93
|
};
|
|
89
94
|
return (React.createElement(OnePageAdaptableWizard, { defaultCurrentSectionName: props.defaultCurrentSectionName, moduleInfo: props.moduleInfo, data: formatColumn, onHide: props.onCloseWizard, onFinish: handleFinish, sections: [
|
|
90
95
|
{
|
|
91
|
-
title: 'Scope
|
|
96
|
+
title: 'Scope',
|
|
92
97
|
details: 'Select which Columns will be formatted',
|
|
93
98
|
isValid: isScopeValid,
|
|
94
99
|
renderSummary: renderFormatColumnScopeSummary,
|
|
@@ -97,6 +102,15 @@ export function FormatColumnWizard(props) {
|
|
|
97
102
|
React.createElement(FormatColumnScopeWizardSection, { onChange: setFormatColumn })));
|
|
98
103
|
},
|
|
99
104
|
},
|
|
105
|
+
{
|
|
106
|
+
title: 'Target',
|
|
107
|
+
details: 'Select which Columns Elements will be formatted',
|
|
108
|
+
renderSummary: renderFormatColumnTargetSummary,
|
|
109
|
+
render: () => {
|
|
110
|
+
return (React.createElement(Flex, { flexDirection: "column", style: { height: '100%' }, padding: 2 },
|
|
111
|
+
React.createElement(FormatColumnTargetWizardSection, { onChange: setFormatColumn })));
|
|
112
|
+
},
|
|
113
|
+
},
|
|
100
114
|
{
|
|
101
115
|
isValid: (abObject, api, context) => {
|
|
102
116
|
if (!abObject.Rule) {
|
|
@@ -13,7 +13,7 @@ export const AdaptableObjectsSummary = () => {
|
|
|
13
13
|
const modules = adaptable.ModuleService.getModuleCollection();
|
|
14
14
|
const baseClassName = 'ab-AdaptableObjectsSummary';
|
|
15
15
|
return (React.createElement(Box, { className: baseClassName }, [...modules].map(([moduleName, module]) => {
|
|
16
|
-
if (!module.
|
|
16
|
+
if (!module.isModuleVisible()) {
|
|
17
17
|
return null;
|
|
18
18
|
}
|
|
19
19
|
const items = module?.toViewAll?.();
|
|
@@ -10,7 +10,7 @@ import { AdaptableObjectRow } from '../../Components/AdaptableObjectRow';
|
|
|
10
10
|
import { PopupPanel } from '../../Components/Popups/AdaptablePopup/PopupPanel';
|
|
11
11
|
import { AdaptableObjectsSummary } from './AdaptableObjectsSummary';
|
|
12
12
|
import { ADAPTABLE_VERSION } from '../../../EnvVars';
|
|
13
|
-
import { AG_GRID_VERSION } from '../../../agGrid/
|
|
13
|
+
import { AG_GRID_VERSION } from '../../../agGrid/AgGridModulesAdapter';
|
|
14
14
|
const adaptableVersion = ADAPTABLE_VERSION;
|
|
15
15
|
const agGridVersion = AG_GRID_VERSION;
|
|
16
16
|
export const GridInfoPopup = (props) => {
|
|
@@ -28,7 +28,7 @@ export const TransposedPopup = (props) => {
|
|
|
28
28
|
// customisable
|
|
29
29
|
return visibleColumns
|
|
30
30
|
? adaptable.api.columnApi.getVisibleColumns()
|
|
31
|
-
: adaptable.api.columnApi.
|
|
31
|
+
: adaptable.api.columnApi.getUIAvailableColumns();
|
|
32
32
|
}, []);
|
|
33
33
|
/**
|
|
34
34
|
* This is used as first field
|
|
@@ -158,7 +158,7 @@ export const TransposedPopup = (props) => {
|
|
|
158
158
|
rowData: transposedRowsAndColumns.transposedRows,
|
|
159
159
|
sideBar: false,
|
|
160
160
|
};
|
|
161
|
-
const modules = adaptable.getAgGridRegisteredModules();
|
|
161
|
+
const modules = adaptable.agGridModulesAdapter.getAgGridRegisteredModules();
|
|
162
162
|
AdaptableAgGrid._initInternal({
|
|
163
163
|
variant: 'vanilla',
|
|
164
164
|
adaptableOptions,
|
|
@@ -45,7 +45,7 @@ export const ColumnsSectionSummary = () => {
|
|
|
45
45
|
}
|
|
46
46
|
const friendlyName = adaptable.api.columnApi.getFriendlyNameForColumnId(columnId, layout);
|
|
47
47
|
const header = layout.ColumnHeaders?.[columnId] ?? '';
|
|
48
|
-
const columnWidth = layout.
|
|
48
|
+
const columnWidth = layout.ColumnSizing?.[columnId]?.Width;
|
|
49
49
|
const columnPinning = layout.ColumnPinning?.[columnId];
|
|
50
50
|
let agg = (layout.TableAggregationColumns || []).find((agg) => agg.ColumnId === columnId)?.AggFunc;
|
|
51
51
|
agg = typeof agg === 'object' ? agg.type : agg;
|
|
@@ -156,7 +156,11 @@ const ColumnRow = (props) => {
|
|
|
156
156
|
];
|
|
157
157
|
const { column } = props;
|
|
158
158
|
// width
|
|
159
|
-
const columnWidth = props.layout.
|
|
159
|
+
const columnWidth = props.layout.ColumnSizing?.[column.columnId]?.Width;
|
|
160
|
+
const columnFlex = props.layout.ColumnSizing?.[column.columnId]?.Flex;
|
|
161
|
+
const minWidth = props.layout.ColumnSizing?.[column.columnId]?.MinWidth;
|
|
162
|
+
const maxWidth = props.layout.ColumnSizing?.[column.columnId]?.MaxWidth;
|
|
163
|
+
const resizable = column.resizable !== false;
|
|
160
164
|
const visible = (!isPivotLayout(props.layout) &&
|
|
161
165
|
props.layout.TableColumns.includes(column.columnId) &&
|
|
162
166
|
props.layout.ColumnVisibility?.[column.columnId] !== false) ||
|
|
@@ -186,11 +190,29 @@ const ColumnRow = (props) => {
|
|
|
186
190
|
props.onColumnNameChange(props.column.columnId, event.target.value);
|
|
187
191
|
}, value: customHeader })),
|
|
188
192
|
React.createElement(FormRow, { label: "Width" },
|
|
189
|
-
React.createElement(Input, { "data-name": "column-width", className: "ab-Layout-Wizard__ColumnRow__Input", type: "number", placeholder: "Column width", disabled:
|
|
193
|
+
React.createElement(Input, { "data-name": "column-width", className: "ab-Layout-Wizard__ColumnRow__Input", type: "number", placeholder: "Column width", disabled: resizable === false, onChange: (event) => {
|
|
190
194
|
let value = parseFloat(event.target.value);
|
|
191
195
|
value = typeof value === 'number' && !isNaN(value) ? value : void 0;
|
|
192
196
|
props.onColumnWidthChange(props.column.columnId, value);
|
|
193
|
-
}, value: columnWidth })),
|
|
197
|
+
}, value: columnWidth ?? '' })),
|
|
198
|
+
React.createElement(FormRow, { label: "Flex" },
|
|
199
|
+
React.createElement(Input, { "data-name": "column-flex", className: "ab-Layout-Wizard__ColumnRow__Input", type: "number", placeholder: "Column flex", disabled: resizable === false, onChange: (event) => {
|
|
200
|
+
let value = parseFloat(event.target.value);
|
|
201
|
+
value = typeof value === 'number' && !isNaN(value) ? value : void 0;
|
|
202
|
+
props.onColumnFlexChange(props.column.columnId, value);
|
|
203
|
+
}, value: columnFlex ?? '' })),
|
|
204
|
+
React.createElement(FormRow, { label: "Min Width" },
|
|
205
|
+
React.createElement(Input, { "data-name": "column-min-width", className: "ab-Layout-Wizard__ColumnRow__Input", type: "number", placeholder: "Column min width", disabled: resizable === false, onChange: (event) => {
|
|
206
|
+
let value = parseFloat(event.target.value);
|
|
207
|
+
value = typeof value === 'number' && !isNaN(value) ? value : void 0;
|
|
208
|
+
props.onColumnMinWidthChange(props.column.columnId, value);
|
|
209
|
+
}, value: minWidth ?? '' })),
|
|
210
|
+
React.createElement(FormRow, { label: "Max Width" },
|
|
211
|
+
React.createElement(Input, { "data-name": "column-max-width", className: "ab-Layout-Wizard__ColumnRow__Input", type: "number", placeholder: "Column max width", disabled: resizable === false, onChange: (event) => {
|
|
212
|
+
let value = parseFloat(event.target.value);
|
|
213
|
+
value = typeof value === 'number' && !isNaN(value) ? value : void 0;
|
|
214
|
+
props.onColumnMaxWidthChange(props.column.columnId, value);
|
|
215
|
+
}, value: maxWidth ?? '' })),
|
|
194
216
|
React.createElement(FormRow, { label: "Pinning" },
|
|
195
217
|
React.createElement(DropdownButton, { "data-name": "column-pinning", columns: ['label'], items: pinningOptions }, pinningOptions.find((option) => option.value === columnPinning).label))))))));
|
|
196
218
|
};
|
|
@@ -345,12 +367,45 @@ export const ColumnsSection = (props) => {
|
|
|
345
367
|
});
|
|
346
368
|
};
|
|
347
369
|
const handleColumnWidthChange = (columnId, width) => {
|
|
370
|
+
const ColumnSizing = { ...layout.ColumnSizing };
|
|
371
|
+
const colSizingForCol = { ...ColumnSizing[columnId] };
|
|
372
|
+
delete colSizingForCol.Flex;
|
|
373
|
+
colSizingForCol.Width = width;
|
|
374
|
+
ColumnSizing[columnId] = colSizingForCol;
|
|
348
375
|
onChange({
|
|
349
376
|
...layout,
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
377
|
+
ColumnSizing,
|
|
378
|
+
});
|
|
379
|
+
};
|
|
380
|
+
const handleColumnFlexChange = (columnId, flex) => {
|
|
381
|
+
const ColumnSizing = { ...layout.ColumnSizing };
|
|
382
|
+
const colSizingForCol = { ...ColumnSizing[columnId] };
|
|
383
|
+
delete colSizingForCol.Width;
|
|
384
|
+
colSizingForCol.Flex = flex;
|
|
385
|
+
ColumnSizing[columnId] = colSizingForCol;
|
|
386
|
+
onChange({
|
|
387
|
+
...layout,
|
|
388
|
+
ColumnSizing,
|
|
389
|
+
});
|
|
390
|
+
};
|
|
391
|
+
const handleColumnMinWidthChange = (columnId, minWidth) => {
|
|
392
|
+
const ColumnSizing = { ...layout.ColumnSizing };
|
|
393
|
+
const colSizingForCol = { ...ColumnSizing[columnId] };
|
|
394
|
+
colSizingForCol.MinWidth = minWidth;
|
|
395
|
+
ColumnSizing[columnId] = colSizingForCol;
|
|
396
|
+
onChange({
|
|
397
|
+
...layout,
|
|
398
|
+
ColumnSizing,
|
|
399
|
+
});
|
|
400
|
+
};
|
|
401
|
+
const handleColumnMaxWidthChange = (columnId, maxWidth) => {
|
|
402
|
+
const ColumnSizing = { ...layout.ColumnSizing };
|
|
403
|
+
const colSizingForCol = { ...ColumnSizing[columnId] };
|
|
404
|
+
colSizingForCol.MaxWidth = maxWidth;
|
|
405
|
+
ColumnSizing[columnId] = colSizingForCol;
|
|
406
|
+
onChange({
|
|
407
|
+
...layout,
|
|
408
|
+
ColumnSizing,
|
|
354
409
|
});
|
|
355
410
|
};
|
|
356
411
|
const visibleIds = layout.TableColumns.filter((colId) => {
|
|
@@ -382,7 +437,7 @@ export const ColumnsSection = (props) => {
|
|
|
382
437
|
React.createElement(ReorderDraggable, { toIdentifier: (option) => `${option.columnId}`, isOptionDraggable: (option) => {
|
|
383
438
|
return option.moveable;
|
|
384
439
|
}, order: currentOrder, renderOption: (option) => {
|
|
385
|
-
return (React.createElement(ColumnRow, { onColumnNameChange: handleColumnNameChange, onColumnWidthChange: handleColumnWidthChange, onColumnVisibilityChange: handleColumnVisibilityChange, onPinChange: handlePinChange, layout: layout, column: option }));
|
|
440
|
+
return (React.createElement(ColumnRow, { onColumnNameChange: handleColumnNameChange, onColumnWidthChange: handleColumnWidthChange, onColumnFlexChange: handleColumnFlexChange, onColumnMinWidthChange: handleColumnMinWidthChange, onColumnMaxWidthChange: handleColumnMaxWidthChange, onColumnVisibilityChange: handleColumnVisibilityChange, onPinChange: handlePinChange, layout: layout, column: option }));
|
|
386
441
|
}, onChange: handleColumnsChange }),
|
|
387
442
|
renderSelectionSection({
|
|
388
443
|
options: visibleIds,
|
|
@@ -327,30 +327,30 @@ export const PivotAggregationsSection = (props) => {
|
|
|
327
327
|
label: StringExtensions.CamelCaseToHumanText(position),
|
|
328
328
|
value: position,
|
|
329
329
|
};
|
|
330
|
-
}), placeholder: "
|
|
330
|
+
}), placeholder: "[none]", value: layout.GrandTotalRow, onChange: (value) => {
|
|
331
331
|
props.onChange({
|
|
332
332
|
...layout,
|
|
333
333
|
GrandTotalRow: value,
|
|
334
334
|
});
|
|
335
335
|
}, isClearable: true })),
|
|
336
336
|
React.createElement(FormRow, { label: 'Pivot Grand Total' },
|
|
337
|
-
React.createElement(Select, { style: { width:
|
|
337
|
+
React.createElement(Select, { style: { width: 160 }, options: ['before', 'after'].map((position) => {
|
|
338
338
|
return {
|
|
339
339
|
label: StringExtensions.CapitaliseFirstLetter(position),
|
|
340
340
|
value: position,
|
|
341
341
|
};
|
|
342
|
-
}), placeholder: "
|
|
342
|
+
}), placeholder: "[none]", value: layout.PivotGrandTotal, onChange: (value) => {
|
|
343
343
|
props.onChange({
|
|
344
344
|
...layout,
|
|
345
345
|
PivotGrandTotal: value,
|
|
346
346
|
});
|
|
347
347
|
}, isClearable: true })),
|
|
348
|
-
React.createElement(FormRow, { label: 'Pivot Column Total' }, isPivotColumnTotalEnabled === true ? (React.createElement(Select, { style: { width:
|
|
348
|
+
React.createElement(FormRow, { label: 'Pivot Column Total' }, isPivotColumnTotalEnabled === true ? (React.createElement(Select, { style: { width: 160 }, options: ['before', 'after'].map((position) => {
|
|
349
349
|
return {
|
|
350
350
|
label: StringExtensions.CapitaliseFirstLetter(position),
|
|
351
351
|
value: position,
|
|
352
352
|
};
|
|
353
|
-
}), placeholder: "
|
|
353
|
+
}), placeholder: "[none]", value: layout.PivotColumnTotal, onChange: (value) => {
|
|
354
354
|
props.onChange({
|
|
355
355
|
...layout,
|
|
356
356
|
PivotColumnTotal: value,
|
|
@@ -18,10 +18,7 @@ export const AdaptableStatusBar = (props) => {
|
|
|
18
18
|
const allMenuItems = useSelector((state) => state?.Internal?.SettingsPanelModuleEntries);
|
|
19
19
|
return (React.createElement(Flex, { className: "ab-StatusBar-Panel", "data-id": props.context.Key }, statusSubPanels?.StatusBarPanels?.map((subPanel) => {
|
|
20
20
|
const module = adaptable.ModuleService.getModuleById(subPanel);
|
|
21
|
-
if (!module) {
|
|
22
|
-
return React.createElement(React.Fragment, { key: subPanel });
|
|
23
|
-
}
|
|
24
|
-
if (!module.isModuleAvailable()) {
|
|
21
|
+
if (!module?.isModuleVisible()) {
|
|
25
22
|
return React.createElement(React.Fragment, { key: subPanel });
|
|
26
23
|
}
|
|
27
24
|
/**
|
|
@@ -27,7 +27,7 @@ export const StatusBarPopup = (props) => {
|
|
|
27
27
|
}, [statusPanels]);
|
|
28
28
|
const availableItems = ALL_STATUS_SUB_PANELS.filter((panel) => {
|
|
29
29
|
const module = adaptable.ModuleService.getModuleById(panel);
|
|
30
|
-
return module
|
|
30
|
+
return module?.isModuleVisible();
|
|
31
31
|
}).map((panel) => {
|
|
32
32
|
const module = adaptable.ModuleService.getModuleById(panel);
|
|
33
33
|
return { Id: panel, Title: module.moduleInfo.FriendlyName };
|
|
@@ -23,7 +23,7 @@ export const ThemeSelector = (props) => {
|
|
|
23
23
|
label: theme.Description,
|
|
24
24
|
};
|
|
25
25
|
});
|
|
26
|
-
return (React.createElement(Select, { "aria-label": "Select Theme", "data-name": "select-theme-dropdown",
|
|
26
|
+
return (React.createElement(Select, { "aria-label": "Select Theme", "data-name": "select-theme-dropdown", options: optionThemes, value: currentTheme, disabled: disabled, size: props.size, onChange: (themeName) => {
|
|
27
27
|
dispatch(ThemeRedux.ThemeSelect(themeName));
|
|
28
28
|
} }));
|
|
29
29
|
};
|
|
@@ -21,7 +21,7 @@ import { Fdc3Service } from '../Utilities/Services/Fdc3Service';
|
|
|
21
21
|
import { AnnotationsService } from '../Utilities/Services/AnnotationsService';
|
|
22
22
|
import { IModuleCollection } from '../Strategy/Interface/IModule';
|
|
23
23
|
import { AgGridMenuAdapter } from './AgGridMenuAdapter';
|
|
24
|
-
import { AdaptableColumn, AdaptableTheme, ChartDefinition, ColumnSort, DataUpdateConfig, GridCell, Layout, SelectedCellInfo, SelectedRowInfo } from '../types';
|
|
24
|
+
import { AdaptableColumn, AdaptableTheme, ChartDefinition, ColumnSort, DataUpdateConfig, GridCell, InFilterValue, Layout, SelectedCellInfo, SelectedRowInfo } from '../types';
|
|
25
25
|
import { RenderReactRootFn } from '../renderReactRoot';
|
|
26
26
|
import { AgGridOptionsService } from './AgGridOptionsService';
|
|
27
27
|
import { AgGridColumnAdapter } from './AgGridColumnAdapter';
|
|
@@ -31,6 +31,8 @@ import { FlashingCellService } from '../Utilities/Services/FlashingCellService';
|
|
|
31
31
|
import { AgGridExportAdapter } from './AgGridExportAdapter';
|
|
32
32
|
import { PivotLayoutModel, TableLayoutModel } from '../layout-manager/src/LayoutManagerModel';
|
|
33
33
|
import { AgGridThemeAdapter } from './AgGridThemeAdapter';
|
|
34
|
+
import { AgGridModulesAdapter } from './AgGridModulesAdapter';
|
|
35
|
+
import { EditColumnValueInfo } from '../AdaptableOptions/EditOptions';
|
|
34
36
|
export type AdaptableLifecycleState = 'initial' | 'preprocessOptions' | 'initAdaptableState' | 'setupAgGrid' | 'initAgGrid' | 'agGridReady' | 'available' | 'ready' | 'preDestroyed';
|
|
35
37
|
type RenderAgGridFrameworkComponentResult = false | GridApi;
|
|
36
38
|
interface AdaptableInitInternalConfig<TData = any> {
|
|
@@ -73,6 +75,7 @@ export declare class AdaptableAgGrid implements IAdaptable {
|
|
|
73
75
|
agGridMenuAdapter: AgGridMenuAdapter;
|
|
74
76
|
agGridExportAdapter: AgGridExportAdapter;
|
|
75
77
|
agGridThemeAdapter: AgGridThemeAdapter;
|
|
78
|
+
agGridModulesAdapter: AgGridModulesAdapter;
|
|
76
79
|
private DANGER_USE_GETTER_adaptableContainerElement;
|
|
77
80
|
private DANGER_USE_GETTER_agGridContainerElement;
|
|
78
81
|
api: AdaptableApi;
|
|
@@ -146,7 +149,9 @@ export declare class AdaptableAgGrid implements IAdaptable {
|
|
|
146
149
|
private normaliseToolPanelState;
|
|
147
150
|
private getCurrentLayoutModel;
|
|
148
151
|
silentUpdateCurrentLayoutModel(layoutModel?: TableLayoutModel | PivotLayoutModel): void;
|
|
149
|
-
applyFiltering(
|
|
152
|
+
applyFiltering(config?: {
|
|
153
|
+
updateColumnFilterModel?: boolean;
|
|
154
|
+
}): void;
|
|
150
155
|
showQuickFilter(): void;
|
|
151
156
|
hideQuickFilter(): void;
|
|
152
157
|
private normalizeAdaptableOptions;
|
|
@@ -156,7 +161,6 @@ export declare class AdaptableAgGrid implements IAdaptable {
|
|
|
156
161
|
*/
|
|
157
162
|
private initializeAgGrid;
|
|
158
163
|
useRowNodeLookUp(): boolean;
|
|
159
|
-
getAgGridRegisteredModules(): Module[];
|
|
160
164
|
getAgGridContainerElement(): HTMLElement | null;
|
|
161
165
|
getAdaptableContainerElement(): HTMLElement;
|
|
162
166
|
refreshSelectedCellsState(): SelectedCellInfo | undefined;
|
|
@@ -181,6 +185,7 @@ export declare class AdaptableAgGrid implements IAdaptable {
|
|
|
181
185
|
*/
|
|
182
186
|
private temporaryAdaptableStateUpdates;
|
|
183
187
|
private validatePrimaryKey;
|
|
188
|
+
isInPivotMode(): boolean;
|
|
184
189
|
private deriveAdaptableColumnStateFromAgGrid;
|
|
185
190
|
private checkShouldClearExistingFiltersOrSearches;
|
|
186
191
|
getGridCellFromRowNode(rowNode: IRowNode, columnId: string): GridCell | undefined;
|
|
@@ -252,14 +257,13 @@ export declare class AdaptableAgGrid implements IAdaptable {
|
|
|
252
257
|
getDistinctFilterValuesForColumn(options: {
|
|
253
258
|
column: AdaptableColumn;
|
|
254
259
|
currentSearchValue: string;
|
|
255
|
-
}): Promise<
|
|
260
|
+
}): Promise<InFilterValue[]>;
|
|
256
261
|
getDistinctEditValuesForColumn(options: {
|
|
257
262
|
column: AdaptableColumn;
|
|
258
263
|
currentSearchValue: string;
|
|
259
264
|
gridCell?: GridCell;
|
|
260
|
-
}): Promise<
|
|
261
|
-
getDistinctGridCellsForColumn(column: AdaptableColumn): GridCellWithCount[];
|
|
262
|
-
private getGridCellsForCustomColumnValues;
|
|
265
|
+
}): Promise<EditColumnValueInfo[]>;
|
|
266
|
+
getDistinctGridCellsForColumn(column: AdaptableColumn, rowNodes?: IRowNode[]): GridCellWithCount[];
|
|
263
267
|
private addDistinctColumnValue;
|
|
264
268
|
private getUniqueGridCells;
|
|
265
269
|
getGridCellsForColumn(columnId: string, onlyVisibleRows?: boolean): GridCell[] | undefined;
|