@adaptabletools/adaptable-cjs 20.3.0 → 21.0.0-canary.1
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 +3 -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 +38 -38
- 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 +40 -22
- 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 +2 -2
- package/src/AdaptableState/Common/ExtendedLayout.d.ts +50 -0
- package/src/AdaptableState/FormatColumnState.d.ts +8 -1
- 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 +107 -13
- package/src/Api/Implementation/LayoutHelpers.d.ts +1 -0
- package/src/Api/Implementation/LayoutHelpers.js +25 -5
- 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 +4 -0
- 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 +8 -11
- package/src/Api/Internal/FormatColumnInternalApi.js +13 -13
- package/src/Api/Internal/GridInternalApi.d.ts +7 -10
- package/src/Api/Internal/GridInternalApi.js +76 -27
- package/src/Api/Internal/LayoutInternalApi.d.ts +10 -5
- package/src/Api/Internal/LayoutInternalApi.js +85 -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 +10 -10
- package/src/Redux/ActionsReducers/StyledColumnRedux.d.ts +7 -0
- package/src/Redux/ActionsReducers/StyledColumnRedux.js +15 -1
- 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 +2 -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/Layout/getLayoutFilterViewItems.js +1 -1
- package/src/Utilities/Constants/DocumentationLinkConstants.d.ts +1 -0
- package/src/Utilities/Constants/DocumentationLinkConstants.js +2 -1
- package/src/Utilities/Extensions/ArrayExtensions.d.ts +15 -2
- package/src/Utilities/Extensions/ArrayExtensions.js +68 -15
- package/src/Utilities/Helpers/AdaptableHelper.d.ts +1 -0
- package/src/Utilities/Helpers/AdaptableHelper.js +1 -0
- package/src/Utilities/ObjectFactory.d.ts +7 -3
- package/src/Utilities/ObjectFactory.js +28 -19
- 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 +18 -6
- 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/Popups/AdaptablePopup/AdaptablePopupModuleView.js +5 -5
- 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 +58 -21
- package/src/View/FormatColumn/Wizard/FormatColumnSettingsWizardSection.js +11 -11
- package/src/View/GridInfo/GridInfoPopup/AdaptableObjectsSummary.js +1 -1
- package/src/View/GridInfo/GridInfoPopup/GridInfoPopup.js +2 -2
- package/src/View/Layout/TransposedPopup.js +2 -2
- package/src/View/Layout/Wizard/LayoutWizard.js +5 -7
- 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 +251 -216
- package/src/agGrid/AdaptableFilterHandler.d.ts +18 -0
- package/src/agGrid/AdaptableFilterHandler.js +65 -0
- package/src/agGrid/AgGridAdapter.d.ts +3 -7
- package/src/agGrid/AgGridAdapter.js +13 -46
- package/src/agGrid/AgGridColumnAdapter.d.ts +2 -2
- package/src/agGrid/AgGridColumnAdapter.js +81 -36
- package/src/agGrid/AgGridFilterAdapter.d.ts +2 -0
- package/src/agGrid/AgGridFilterAdapter.js +53 -0
- package/src/agGrid/AgGridFloatingFilterAdapter.d.ts +2 -0
- package/src/agGrid/{FloatingFilterWrapper.js → AgGridFloatingFilterAdapter.js} +26 -37
- package/src/agGrid/AgGridModulesAdapter.d.ts +15 -0
- package/src/agGrid/AgGridModulesAdapter.js +70 -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 +4 -4
- package/src/components/ExpressionEditor/QueryBuilder/QueryPredicateBuilder.js +1 -1
- 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 +114 -22
- package/src/components/icons/DefaultIcon.d.ts +0 -1
- package/src/components/icons/DefaultIcon.js +0 -8
- 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 +103 -40
- 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 +28 -0
- package/src/types.d.ts +7 -8
- package/tsconfig.cjs.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 -136
- package/src/agGrid/FloatingFilterWrapper.d.ts +0 -2
- package/src/agGrid/agGridModules.d.ts +0 -3
- package/src/agGrid/agGridModules.js +0 -18
- package/src/agGrid/getAgGridFilterNotifyModelFn.d.ts +0 -2
- package/src/agGrid/getAgGridFilterNotifyModelFn.js +0 -21
- /package/src/AdaptableState/Common/{ExtendedLayoutInfo.js → ExtendedLayout.js} +0 -0
|
@@ -10,10 +10,9 @@ const useAdaptableFilterWrapper_1 = require("./useAdaptableFilterWrapper");
|
|
|
10
10
|
* It transforms predicates in QlPredicates.
|
|
11
11
|
*/
|
|
12
12
|
const AdaptableColumnFilter = (props) => {
|
|
13
|
-
const { qlPredicate, qlPredicateDefs, columnFilter, handlePredicateChange } = (0, useAdaptableFilterWrapper_1.useAdaptableFilterWrapper)(props.columnId);
|
|
13
|
+
const { qlPredicate, qlPredicateDefs, columnFilter, handlePredicateChange } = (0, useAdaptableFilterWrapper_1.useAdaptableFilterWrapper)(props.columnId, 'FilterForm');
|
|
14
14
|
return (React.createElement(ColumnFilter_1.ColumnFilterComponent, { wrapperProps: props.wrapperProps, columnId: props.columnId, predicate: qlPredicate, predicateDefs: qlPredicateDefs, disabled: columnFilter?.IsSuspended, onPredicateChange: React.useCallback((predicate) => {
|
|
15
15
|
handlePredicateChange(predicate);
|
|
16
|
-
|
|
17
|
-
}, [handlePredicateChange, props.onChange]) }));
|
|
16
|
+
}, [handlePredicateChange]) }));
|
|
18
17
|
};
|
|
19
18
|
exports.AdaptableColumnFilter = AdaptableColumnFilter;
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { ColumnFilterProps } from '../../../Utilities/Interface/ColumnFilterProps';
|
|
3
3
|
export interface AdaptableColumnFilterProps extends ColumnFilterProps {
|
|
4
|
-
onClear?: () => void;
|
|
5
|
-
onChange?: () => void;
|
|
6
4
|
}
|
|
7
5
|
/**
|
|
8
6
|
* This wrapper knows about predicates.
|
|
@@ -12,15 +12,13 @@ const useAdaptableFilterWrapper_1 = require("./useAdaptableFilterWrapper");
|
|
|
12
12
|
*/
|
|
13
13
|
const AdaptableFloatingFilter = (props) => {
|
|
14
14
|
const adaptable = (0, AdaptableContext_1.useAdaptable)();
|
|
15
|
-
const { qlPredicate, qlPredicateDefs, columnFilter, column, handlePredicateChange, handleOnChange, handleClear, } = (0, useAdaptableFilterWrapper_1.useAdaptableFilterWrapper)(props.Column.columnId);
|
|
15
|
+
const { qlPredicate, qlPredicateDefs, columnFilter, column, handlePredicateChange, handleOnChange, handleClear, } = (0, useAdaptableFilterWrapper_1.useAdaptableFilterWrapper)(props.Column.columnId, 'FilterBar');
|
|
16
16
|
const onClear = React.useCallback(() => {
|
|
17
17
|
handleClear();
|
|
18
|
-
|
|
19
|
-
}, [handleClear, props.onClear]);
|
|
18
|
+
}, [handleClear]);
|
|
20
19
|
const onPredicateChange = React.useCallback((newPredicate) => {
|
|
21
20
|
handlePredicateChange(newPredicate);
|
|
22
|
-
|
|
23
|
-
}, [handlePredicateChange, props.onChange]);
|
|
21
|
+
}, [handlePredicateChange]);
|
|
24
22
|
if (!column) {
|
|
25
23
|
return null;
|
|
26
24
|
}
|
|
@@ -36,8 +34,7 @@ const AdaptableFloatingFilter = (props) => {
|
|
|
36
34
|
Inputs: [],
|
|
37
35
|
},
|
|
38
36
|
]);
|
|
39
|
-
props.onChange?.();
|
|
40
37
|
}
|
|
41
|
-
}, onClear: onClear, columnId: props.Column.columnId, predicate: qlPredicate, predicateDefs: qlPredicateDefs, disabled: columnFilter?.IsSuspended, onPredicateChange: onPredicateChange
|
|
38
|
+
}, onClear: onClear, columnId: props.Column.columnId, predicate: qlPredicate, predicateDefs: qlPredicateDefs, disabled: columnFilter?.IsSuspended, onPredicateChange: onPredicateChange }));
|
|
42
39
|
};
|
|
43
40
|
exports.AdaptableFloatingFilter = AdaptableFloatingFilter;
|
|
@@ -66,7 +66,7 @@ const AndOrInput = (props) => {
|
|
|
66
66
|
};
|
|
67
67
|
const ColumnFilterComponent = (props) => {
|
|
68
68
|
const adaptable = (0, AdaptableContext_1.useAdaptable)();
|
|
69
|
-
const autoApplyColumnFilter = adaptable.
|
|
69
|
+
const autoApplyColumnFilter = adaptable.api.filterApi.columnFilterApi.internalApi.shouldAutoApplyColumnFilter(props.columnId);
|
|
70
70
|
const [predicateNotYetApplied, setPredicateNotYetApplied] = React.useState(props.predicate);
|
|
71
71
|
const applyFilter = () => {
|
|
72
72
|
props.onPredicateChange(currentPredicateRef.current);
|
|
@@ -120,7 +120,7 @@ const ColumnFilterComponent = (props) => {
|
|
|
120
120
|
React.createElement(AndOrInput, { onChange: onCombineChange, operator: currentPredicate.operator }),
|
|
121
121
|
React.createElement(SimpleButton_1.default, { ml: 2, onClick: () => onPredicateChange(null) }, "Clear All")),
|
|
122
122
|
React.createElement(rebass_1.Flex, { flexDirection: "column", className: "ab-ColumnFilter", flex: 1, minHeight: 0, ...props.wrapperProps },
|
|
123
|
-
React.createElement(rebass_1.Box, {
|
|
123
|
+
React.createElement(rebass_1.Box, { style: { overflow: 'auto' } },
|
|
124
124
|
currentPredicate.args.map((predicate, index) => {
|
|
125
125
|
return (React.createElement(ColumnFilterEditor, { deleteDisabled: currentPredicate.args.length < 2, onDelete: () => {
|
|
126
126
|
const currentPredicate = currentPredicateRef.current;
|
|
@@ -145,7 +145,14 @@ const ColumnFilterComponent = (props) => {
|
|
|
145
145
|
} }));
|
|
146
146
|
}),
|
|
147
147
|
isLastPredicateValid && filterPredicateDropdown),
|
|
148
|
-
!autoApplyColumnFilter ? (React.createElement(
|
|
149
|
-
React.createElement(
|
|
148
|
+
!autoApplyColumnFilter ? (React.createElement(React.Fragment, null,
|
|
149
|
+
React.createElement(rebass_1.Box, { flex: 1, "data-name": "spacer" }),
|
|
150
|
+
React.createElement(rebass_1.Flex, { pt: 2, className: "ab-ColumnFilter-actions", justifyContent: "space-between" },
|
|
151
|
+
React.createElement(rebass_1.Box, { className: "ab-ColumnFilter-action-apply" },
|
|
152
|
+
React.createElement(SimpleButton_1.default, { tone: "accent", variant: "raised", onClick: applyFilter }, "Apply Filter")),
|
|
153
|
+
React.createElement(rebass_1.Box, { className: "ab-ColumnFilter-action-reset" },
|
|
154
|
+
React.createElement(SimpleButton_1.default, { tone: "neutral", variant: "raised", onClick: () => {
|
|
155
|
+
setPredicateNotYetApplied(props.predicate);
|
|
156
|
+
} }, "Reset Filter"))))) : null)));
|
|
150
157
|
};
|
|
151
158
|
exports.ColumnFilterComponent = ColumnFilterComponent;
|
|
@@ -33,6 +33,6 @@ const ColumnFilterWindow = (props) => {
|
|
|
33
33
|
}
|
|
34
34
|
return label;
|
|
35
35
|
}, onChange: (column) => setColumnId(column), filterColumn: (column) => column.queryable, isMulti: false, value: columnId })))),
|
|
36
|
-
React.createElement(AdaptableColumnFilter_1.AdaptableColumnFilter, { columnId: columnId
|
|
36
|
+
React.createElement(AdaptableColumnFilter_1.AdaptableColumnFilter, { columnId: columnId })));
|
|
37
37
|
};
|
|
38
38
|
exports.ColumnFilterWindow = ColumnFilterWindow;
|
|
@@ -13,13 +13,12 @@ const FloatingFilterInputList_1 = require("./components/FloatingFilterInputList"
|
|
|
13
13
|
const utils_1 = require("./utils");
|
|
14
14
|
const FloatingFilter = (props) => {
|
|
15
15
|
const adaptable = (0, AdaptableContext_1.useAdaptable)();
|
|
16
|
-
const columnFilterOptions = adaptable.adaptableOptions.filterOptions.columnFilterOptions;
|
|
17
16
|
/**
|
|
18
17
|
* We always have a syntetic predicate with AND or OR, so the logic is easyer.
|
|
19
18
|
* The wrapper is in charge of constructing the correct column filter.
|
|
20
19
|
*/
|
|
21
20
|
const isMultiple = props.predicate?.args?.length > 1;
|
|
22
|
-
const isManualApply = !
|
|
21
|
+
const isManualApply = !adaptable.api.filterApi.columnFilterApi.internalApi.shouldAutoApplyColumnFilter(props.columnId);
|
|
23
22
|
const isInlineEditable = !isMultiple && !isManualApply;
|
|
24
23
|
// only used when there is only one filter selected
|
|
25
24
|
let singleFilterPredicateDef = null;
|
|
@@ -14,7 +14,7 @@ const LayoutColumnFilter = (props) => {
|
|
|
14
14
|
const predicateDefs = api.filterApi.columnFilterApi.getFilterPredicateDefsForColumn(column);
|
|
15
15
|
const qlDataType = (0, adaptableQlUtils_1.mapColumnDataTypeToExpressionFunctionType)(column.dataType);
|
|
16
16
|
const qlPredicateDefs = predicateDefs.map((predDef) => (0, utils_1.mapAdaptablePredicateDefToQlPredicateDef)(predDef, qlDataType));
|
|
17
|
-
const qlPredicate = (0, utils_1.mapColumnFilterToQlPredicate)(props.columnFilter, column, qlPredicateDefs, columnFilterOptions, api);
|
|
17
|
+
const qlPredicate = (0, utils_1.mapColumnFilterToQlPredicate)(props.columnFilter, column, qlPredicateDefs, columnFilterOptions, 'FilterForm', api);
|
|
18
18
|
const handlePredicateChange = (newPredicate) => {
|
|
19
19
|
const newAdaptablePredicates = newPredicate.args.map(utils_1.mapQlPredicateToAdaptablePredicate);
|
|
20
20
|
const newFilter = {
|
|
@@ -74,7 +74,7 @@ const ColumnFilterInput = ({ type, value, onChange: onChangeProp, onClear: onCle
|
|
|
74
74
|
}
|
|
75
75
|
};
|
|
76
76
|
if (type === 'date' && !showDatePicker) {
|
|
77
|
-
return (React.createElement(AdaptableDateInlineInput_1.AdaptableDateInlineInput, { value: liveValue, disabled: disabled, onFocus: onFocus, onBlur: onBlur, pr: 0, style: { border: 'none' }, onKeyDownCapture: onKeyDownCapture, onChange: (value) => {
|
|
77
|
+
return (React.createElement(AdaptableDateInlineInput_1.AdaptableDateInlineInput, { "data-name": "floating-filter-input", value: liveValue, disabled: disabled, onFocus: onFocus, onBlur: onBlur, pr: 0, style: { border: 'none' }, onKeyDownCapture: onKeyDownCapture, onChange: (value) => {
|
|
78
78
|
onChange(value);
|
|
79
79
|
setLiveValue(value);
|
|
80
80
|
} }));
|
|
@@ -100,7 +100,7 @@ const ColumnFilterInput = ({ type, value, onChange: onChangeProp, onClear: onCle
|
|
|
100
100
|
borderRadius: 0,
|
|
101
101
|
border: 'none',
|
|
102
102
|
}
|
|
103
|
-
: {}, onFocus: onFocus, onBlur: onBlur, disabled: disabled, type: type === 'number' ? 'text' : type,
|
|
103
|
+
: {}, "data-name": "floating-filter-input", onFocus: onFocus, onBlur: onBlur, disabled: disabled, type: type === 'number' ? 'text' : type,
|
|
104
104
|
// autoFocus has to be FALSE because if the input receives focus in the init phase,
|
|
105
105
|
// it may scroll the AG Grid header viewport into view and de-synchronize it (relative to the content viewport)
|
|
106
106
|
autoFocus: false, value: liveValue ?? '', onKeyDown: onKeyDown, showClearButton: false, onChange: (e) => {
|
|
@@ -37,8 +37,8 @@ function useDistinctFilterColumnValues(options) {
|
|
|
37
37
|
let ignore = false;
|
|
38
38
|
setIsDistinctColumnValuesLoading(true);
|
|
39
39
|
let searchValueUsedInFilterValue = false;
|
|
40
|
-
api.
|
|
41
|
-
.
|
|
40
|
+
api.filterApi.columnFilterApi.internalApi
|
|
41
|
+
.getColumnFilterValues({
|
|
42
42
|
columnId,
|
|
43
43
|
get currentSearchValue() {
|
|
44
44
|
searchValueUsedInFilterValue = true;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { QlLogicalOperator, QlPredicate } from '../../../parser/src/predicate';
|
|
2
2
|
import * as LayoutRedux from '../../../Redux/ActionsReducers/LayoutRedux';
|
|
3
3
|
import { AdaptablePredicate, ColumnFilter } from '../../../types';
|
|
4
|
-
export declare const useAdaptableFilterWrapper: (columnId: string, handleOnChangeOverride?: (columnFilter: ColumnFilter) => void) => {
|
|
4
|
+
export declare const useAdaptableFilterWrapper: (columnId: string, filterComponent: 'FilterBar' | 'FilterForm', handleOnChangeOverride?: (columnFilter: ColumnFilter) => void) => {
|
|
5
5
|
qlPredicate: QlPredicate;
|
|
6
6
|
qlPredicateDefs: import("@adaptabletools/adaptable/src/parser/src/predicate/types").QlPredicateDef[];
|
|
7
7
|
columnFilter: ColumnFilter;
|
|
@@ -10,7 +10,7 @@ const LayoutRedux_1 = require("../../../Redux/ActionsReducers/LayoutRedux");
|
|
|
10
10
|
const adaptableQlUtils_1 = require("../../../Utilities/adaptableQlUtils");
|
|
11
11
|
const AdaptableContext_1 = require("../../AdaptableContext");
|
|
12
12
|
const utils_1 = require("./utils");
|
|
13
|
-
const useAdaptableFilterWrapper = (columnId, handleOnChangeOverride) => {
|
|
13
|
+
const useAdaptableFilterWrapper = (columnId, filterComponent, handleOnChangeOverride) => {
|
|
14
14
|
const adaptable = (0, AdaptableContext_1.useAdaptable)();
|
|
15
15
|
const dispatch = (0, react_redux_1.useDispatch)();
|
|
16
16
|
const api = adaptable.api;
|
|
@@ -27,7 +27,7 @@ const useAdaptableFilterWrapper = (columnId, handleOnChangeOverride) => {
|
|
|
27
27
|
return currentLayout?.ColumnFilters?.find((cf) => cf.ColumnId === columnId);
|
|
28
28
|
}, [currentLayout?.ColumnFilters, columnId]);
|
|
29
29
|
const qlPredicate = column
|
|
30
|
-
? (0, utils_1.mapColumnFilterToQlPredicate)(columnFilter, column, qlPredicateDefs, columnFilterOptions, api)
|
|
30
|
+
? (0, utils_1.mapColumnFilterToQlPredicate)(columnFilter, column, qlPredicateDefs, columnFilterOptions, filterComponent, api)
|
|
31
31
|
: null;
|
|
32
32
|
const handleOnChange = (adaptablePredicate, logic = 'AND') => {
|
|
33
33
|
// make sure we always have the latest columnFiler
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { QlPredicate, QlPredicateDef } from '../../../parser/src/predicate';
|
|
2
|
-
import { AdaptableApi, AdaptableColumn, AdaptablePredicate, AdaptablePredicateDef, ColumnFilter, ColumnFilterOptions, ExpressionFunctionInputType } from '../../../types';
|
|
2
|
+
import { AdaptableApi, AdaptableColumn, AdaptableFilterComponentLocation, AdaptablePredicate, AdaptablePredicateDef, ColumnFilter, ColumnFilterOptions, ExpressionFunctionInputType } from '../../../types';
|
|
3
3
|
export declare const mapAdaptablePredicateDefToQlPredicateDef: (adaptablePredicateDef: AdaptablePredicateDef, dataType: ExpressionFunctionInputType) => QlPredicateDef;
|
|
4
4
|
export declare const mapAdaptablePredicateToQlPredicate: (adaptablePredicate: AdaptablePredicate) => QlPredicate;
|
|
5
5
|
export declare const mapQlPredicateToAdaptablePredicate: (qlPredicate: QlPredicate) => AdaptablePredicate;
|
|
6
6
|
export declare const qlPredicateToString: (qlPredicate: QlPredicate, predicateDefs: QlPredicateDef[]) => string;
|
|
7
7
|
export declare const isPredicateEmpty: (predicate: QlPredicate, predicateDef: QlPredicateDef) => boolean;
|
|
8
|
-
export declare const mapColumnFilterToQlPredicate: (columnFilter: ColumnFilter, abColumn: AdaptableColumn, qlPredicateDefs: QlPredicateDef[], columnFilterOptions: ColumnFilterOptions, api: AdaptableApi) => QlPredicate;
|
|
8
|
+
export declare const mapColumnFilterToQlPredicate: (columnFilter: ColumnFilter, abColumn: AdaptableColumn, qlPredicateDefs: QlPredicateDef[], columnFilterOptions: ColumnFilterOptions, filterComponent: AdaptableFilterComponentLocation, api: AdaptableApi) => QlPredicate;
|
|
@@ -91,7 +91,7 @@ const isPredicateEmpty = (predicate, predicateDef) => {
|
|
|
91
91
|
predicate.args.every((arg) => arg == undefined));
|
|
92
92
|
};
|
|
93
93
|
exports.isPredicateEmpty = isPredicateEmpty;
|
|
94
|
-
const mapColumnFilterToQlPredicate = (columnFilter, abColumn, qlPredicateDefs, columnFilterOptions, api) => {
|
|
94
|
+
const mapColumnFilterToQlPredicate = (columnFilter, abColumn, qlPredicateDefs, columnFilterOptions, filterComponent, api) => {
|
|
95
95
|
const combinator = columnFilter?.PredicatesOperator ?? 'AND';
|
|
96
96
|
const qlPredicate = {
|
|
97
97
|
operator: combinator,
|
|
@@ -108,6 +108,7 @@ const mapColumnFilterToQlPredicate = (columnFilter, abColumn, qlPredicateDefs, c
|
|
|
108
108
|
if (typeof defaultNumericColumnFilter === 'function') {
|
|
109
109
|
const context = {
|
|
110
110
|
column: abColumn,
|
|
111
|
+
filterComponent,
|
|
111
112
|
...api.internalApi.buildBaseContext(),
|
|
112
113
|
};
|
|
113
114
|
defaultQlNumberPredicate = defaultNumericColumnFilter(context);
|
|
@@ -127,6 +128,7 @@ const mapColumnFilterToQlPredicate = (columnFilter, abColumn, qlPredicateDefs, c
|
|
|
127
128
|
if (typeof defaultTextColumnFilter === 'function') {
|
|
128
129
|
const context = {
|
|
129
130
|
column: abColumn,
|
|
131
|
+
filterComponent,
|
|
130
132
|
...api.internalApi.buildBaseContext(),
|
|
131
133
|
};
|
|
132
134
|
defaultQlTextPredicate = defaultTextColumnFilter(context);
|
|
@@ -140,12 +142,14 @@ const mapColumnFilterToQlPredicate = (columnFilter, abColumn, qlPredicateDefs, c
|
|
|
140
142
|
: { operator: 'Contains', args: [] };
|
|
141
143
|
break;
|
|
142
144
|
case 'date':
|
|
145
|
+
case 'dateString':
|
|
143
146
|
let defaultQlDatePredicate;
|
|
144
147
|
const defaultDateColumnFilter = columnFilterOptions.defaultDateColumnFilter;
|
|
145
148
|
if (defaultDateColumnFilter) {
|
|
146
149
|
if (typeof defaultDateColumnFilter === 'function') {
|
|
147
150
|
const context = {
|
|
148
151
|
column: abColumn,
|
|
152
|
+
filterComponent,
|
|
149
153
|
...api.internalApi.buildBaseContext(),
|
|
150
154
|
};
|
|
151
155
|
defaultQlDatePredicate = defaultDateColumnFilter(context);
|
|
@@ -169,6 +173,7 @@ const mapColumnFilterToQlPredicate = (columnFilter, abColumn, qlPredicateDefs, c
|
|
|
169
173
|
if (typeof defaultArrayColumnFilter === 'function') {
|
|
170
174
|
const context = {
|
|
171
175
|
column: abColumn,
|
|
176
|
+
filterComponent,
|
|
172
177
|
...api.internalApi.buildBaseContext(),
|
|
173
178
|
};
|
|
174
179
|
defaultQlArrayPredicate = defaultArrayColumnFilter(context);
|
|
@@ -112,9 +112,8 @@ const EntityRulesEditor = (props) => {
|
|
|
112
112
|
});
|
|
113
113
|
}
|
|
114
114
|
};
|
|
115
|
-
const isValuesPredicateDef = (colDef) => colDef && ['In', 'NotIn'].includes(colDef.id);
|
|
116
115
|
const filteredPredicateDefs = predicateDefs.filter((def) => {
|
|
117
|
-
if (
|
|
116
|
+
if (api.predicateApi.internalApi.IsInorNotInPredicateDef(def)) {
|
|
118
117
|
return 'ColumnIds' in data.Scope && data.Scope.ColumnIds.length === 1;
|
|
119
118
|
}
|
|
120
119
|
return true;
|
|
@@ -33,7 +33,7 @@ const ColumnValuesSelect = (props) => {
|
|
|
33
33
|
minWidth: `var(--ab-cmp-select-column-menu-${column.columnId}__min-width, var(--ab-cmp-select-column-menu__min-width, 160px))`,
|
|
34
34
|
};
|
|
35
35
|
}, [column.columnId]);
|
|
36
|
-
const component = (React.createElement(Select_1.Select, { key: "select", isMulti: true, resizable: true, showHeaderSelectionCheckbox: true, searchable:
|
|
36
|
+
const component = (React.createElement(Select_1.Select, { key: "select", isMulti: true, resizable: true, showHeaderSelectionCheckbox: true, searchable: 'menulist', closeMenuOnSelect: false, menuStyle: menuStyle, ...props.selectProps, options: options, value: value, isLoading: props.isLoading, onChange: props.onChange }));
|
|
37
37
|
return (React.createElement("div", { className: (0, join_1.default)(baseClassName, props.isLoading && `${baseClassName}--loading`, !value.length && `${baseClassName}--empty`), onKeyDownCapture: (e) => {
|
|
38
38
|
const event = e.nativeEvent || e;
|
|
39
39
|
event.stopPropagation = () => {
|
|
@@ -117,16 +117,16 @@ const AdaptablePopupModuleView = (props) => {
|
|
|
117
117
|
.getModuleService()
|
|
118
118
|
.getModuleById(props.module.moduleInfo.ModuleName);
|
|
119
119
|
const dispatch = (0, react_redux_1.useDispatch)();
|
|
120
|
-
const
|
|
121
|
-
const
|
|
122
|
-
if (!adaptableModule?.
|
|
120
|
+
const showLayoutNonExtendedObjects = (0, react_redux_1.useSelector)((state) => state.Internal.Layout.showLayoutNonExtendedObjects);
|
|
121
|
+
const toggleButtonShowLayoutExtensionObjects = () => {
|
|
122
|
+
if (!adaptableModule?.containsLayoutExtensions()) {
|
|
123
123
|
return;
|
|
124
124
|
}
|
|
125
125
|
if (!props.api.layoutApi.internalApi.hasLayoutSpecificObjects()) {
|
|
126
126
|
return;
|
|
127
127
|
}
|
|
128
128
|
return (React.createElement(rebass_1.Flex, { justifyContent: "flex-start" },
|
|
129
|
-
React.createElement(CheckBox_1.CheckBox, { padding: 0, margin: 0, checked:
|
|
129
|
+
React.createElement(CheckBox_1.CheckBox, { padding: 0, margin: 0, checked: showLayoutNonExtendedObjects, onChange: (checked) => dispatch((0, InternalRedux_1.LayoutShowNonExtendedObjects)(checked)) },
|
|
130
130
|
"Show ",
|
|
131
131
|
moduleInfo.FriendlyName,
|
|
132
132
|
"s not available in current Layout")));
|
|
@@ -136,7 +136,7 @@ const AdaptablePopupModuleView = (props) => {
|
|
|
136
136
|
" ",
|
|
137
137
|
newButton), infoLinkDisabled: !props.api.internalApi.isDocumentationLinksDisplayed() },
|
|
138
138
|
moduleViewProperties.HeaderComponent && React.createElement(moduleViewProperties.HeaderComponent, null),
|
|
139
|
-
|
|
139
|
+
toggleButtonShowLayoutExtensionObjects(),
|
|
140
140
|
items?.length ? (React.createElement(AdaptableObjectList_1.AdaptableObjectList, { module: props.module, items: items })) : (React.createElement(EmptyContent_1.default, null, emptyContent ?? `Click 'New' to create a new ${moduleInfo.FriendlyName}`)),
|
|
141
141
|
isWizardOpen && EditWizard && (React.createElement(EditWizard, { abObjectType: abObjectType, moduleInfo: moduleInfo, data: null, popupParams: props.popupParams, configEntities: null, onCloseWizard: handleWizardClose, onFinishWizard: handleWizardClose }))));
|
|
142
142
|
};
|
|
@@ -14,7 +14,6 @@ const ListBoxFilterForm_1 = require("../FilterForm/ListBoxFilterForm");
|
|
|
14
14
|
const AdaptableContext_1 = require("../../AdaptableContext");
|
|
15
15
|
const FloatingFilterValues_1 = require("../ColumnFilter/components/FloatingFilterValues");
|
|
16
16
|
const react_1 = require("react");
|
|
17
|
-
const isValuesPredicateDef = (colDef) => colDef && ['In', 'NotIn'].includes(colDef.id);
|
|
18
17
|
const PredicateEditor = (props) => {
|
|
19
18
|
const baseClassName = 'ab-PredicateEditor';
|
|
20
19
|
const predicateDefsOptions = React.useMemo(() => props?.predicateDefs?.map((item) => ({
|
|
@@ -72,7 +71,7 @@ const PredicateEditor = (props) => {
|
|
|
72
71
|
index > 0 && React.createElement(HelpBlock_1.default, { margin: 2 }, "AND"),
|
|
73
72
|
React.createElement(rebass_1.Flex, { key: index, flex: 1, flexDirection: "column" },
|
|
74
73
|
React.createElement(AdaptableInput_1.default, { "data-name": `predicate-input-${index}`, marginTop: 2, type: predicateDefInput.type, autoFocus: index === 0, value: props.predicate.Inputs?.[index] ?? '', onChange: (e) => handlePredicateInputChange(e, index) })))))),
|
|
75
|
-
|
|
74
|
+
adaptable.api.predicateApi.internalApi.IsInorNotInPredicateDef(currentPredicateDef) && (React.createElement(rebass_1.Box, { mt: 2 },
|
|
76
75
|
React.createElement(ListBoxFilterForm_1.ColumnValuesSelect, { isLoading: isDistinctColumnValuesLoading, column: column, options: quickFilterValues.values, selectProps: {
|
|
77
76
|
onMenuOpen,
|
|
78
77
|
}, dataType: column.dataType, value: props.predicate.Inputs, onChange: handlePredicateValuesChange })))));
|
|
@@ -21,7 +21,7 @@ const BulkUpdateValueSelector = (props) => {
|
|
|
21
21
|
// which is then triggering a get all values
|
|
22
22
|
// not sure that we need to
|
|
23
23
|
const permittedValueSelector = (React.createElement(rebass_1.Box, null,
|
|
24
|
-
React.createElement(PermittedValuesSelector_1.PermittedValuesSelector, { allowNewValues: true, disabled: props.disabled || !props.selectedColumn, value: props.selectedColumnValue === '' ? null : props.selectedColumnValue, columnId: columnId, placeholder: isDateType ? 'Select' : 'Select or type new value', loadValues: (0, react_1.useCallback)(({ currentSearchValue }) => {
|
|
24
|
+
React.createElement(PermittedValuesSelector_1.PermittedValuesSelector, { allowNewValues: true, searchable: 'inline', disabled: props.disabled || !props.selectedColumn, value: props.selectedColumnValue === '' ? null : props.selectedColumnValue, columnId: columnId, placeholder: isDateType ? 'Select' : 'Select or type new value', loadValues: (0, react_1.useCallback)(({ currentSearchValue }) => {
|
|
25
25
|
if (!columnId || !props.selectedGridCells.length) {
|
|
26
26
|
return Promise.resolve([]);
|
|
27
27
|
}
|
|
@@ -28,7 +28,7 @@ const ColumnSelector = function (props) {
|
|
|
28
28
|
}
|
|
29
29
|
return true;
|
|
30
30
|
});
|
|
31
|
-
return (React.createElement(Select_1.Select, { "data-name": "column-selector", disabled: props.disabled, isMulti: props.isMulti, menuPosition: props.menuPosition, value: props.value, placeholder: props.placeholder ?? 'Select Column', onChange: (colId) => {
|
|
31
|
+
return (React.createElement(Select_1.Select, { "data-name": "column-selector", searchable: 'inline', disabled: props.disabled, isMulti: props.isMulti, menuPosition: props.menuPosition, value: props.value, placeholder: props.placeholder ?? 'Select Column', onChange: (colId) => {
|
|
32
32
|
props.onChange(colId);
|
|
33
33
|
}, options: options }));
|
|
34
34
|
};
|
|
@@ -15,7 +15,7 @@ const FieldSelector = (props) => {
|
|
|
15
15
|
value: field.name,
|
|
16
16
|
}));
|
|
17
17
|
return (React.createElement(React.Fragment, null,
|
|
18
|
-
React.createElement(Select_1.Select, { "data-name": "column-selector", disabled: props.disabled, isMulti: false, menuPosition: props.menuPosition, value: props.value || undefined, placeholder: props.placeholder ?? 'Select Field', onChange: (fieldValue) => {
|
|
18
|
+
React.createElement(Select_1.Select, { "data-name": "column-selector", searchable: 'inline', disabled: props.disabled, isMulti: false, menuPosition: props.menuPosition, value: props.value || undefined, placeholder: props.placeholder ?? 'Select Field', onChange: (fieldValue) => {
|
|
19
19
|
props.onChange(fieldValue);
|
|
20
20
|
}, options: options })));
|
|
21
21
|
};
|
|
@@ -2,6 +2,7 @@ import * as React from 'react';
|
|
|
2
2
|
import { SelectProps } from '../../../components/Select';
|
|
3
3
|
export type ValueType = number | string | Date;
|
|
4
4
|
interface PermittedValuesSelectorProps<Value extends ValueType, IsMulti extends boolean> {
|
|
5
|
+
searchable?: false | 'inline' | 'menulist';
|
|
5
6
|
isMulti?: IsMulti;
|
|
6
7
|
columnId: string;
|
|
7
8
|
value: IsMulti extends true ? Value[] : Value;
|
|
@@ -35,7 +35,7 @@ const PermittedValuesSelector = function (props) {
|
|
|
35
35
|
return currentSearchValue;
|
|
36
36
|
},
|
|
37
37
|
})
|
|
38
|
-
: adaptable.api.
|
|
38
|
+
: adaptable.api.filterApi.columnFilterApi.internalApi.getColumnFilterValues({
|
|
39
39
|
columnId: props.columnId,
|
|
40
40
|
get currentSearchValue() {
|
|
41
41
|
searchValueUsedInFilterValue = true;
|
|
@@ -101,6 +101,6 @@ const PermittedValuesSelector = function (props) {
|
|
|
101
101
|
reload();
|
|
102
102
|
}
|
|
103
103
|
};
|
|
104
|
-
return (React.createElement(Select_1.Select, { "aria-label": "Permitted Values Selector", menuPortalTarget: props.menuPortalTarget, size: props.size, isMulti: props.isMulti, className: props.className, disabled: props.disabled, closeMenuOnSelect: !props.isMulti, "data-name": "permitted-values-selector", placeholder: props.placeholder || (props.allowNewValues ? 'Select or type new value' : 'Select value'), isCreatable: isCreatable, isClearable: true, onMenuOpen: reload, options: options, isLoading: isLoading, onInputChange: onInputChange, onChange: handleOnChange, onFocus: props.onFocus, onBlur: props.onBlur, value: props.value }));
|
|
104
|
+
return (React.createElement(Select_1.Select, { "aria-label": "Permitted Values Selector", menuPortalTarget: props.menuPortalTarget, searchable: props.searchable, size: props.size, isMulti: props.isMulti, className: props.className, disabled: props.disabled, closeMenuOnSelect: !props.isMulti, "data-name": "permitted-values-selector", placeholder: props.placeholder || (props.allowNewValues ? 'Select or type new value' : 'Select value'), isCreatable: isCreatable, isClearable: true, onMenuOpen: reload, options: options, isLoading: isLoading, onInputChange: onInputChange, onChange: handleOnChange, onFocus: props.onFocus, onBlur: props.onBlur, value: props.value }));
|
|
105
105
|
};
|
|
106
106
|
exports.PermittedValuesSelector = PermittedValuesSelector;
|
|
@@ -37,7 +37,7 @@ const DashboardComponent = (props) => {
|
|
|
37
37
|
}
|
|
38
38
|
else {
|
|
39
39
|
const moduleToolbarName = visibleToolbarName;
|
|
40
|
-
if (props.api.internalApi.getModuleService().
|
|
40
|
+
if (props.api.internalApi.getModuleService().isAdapTableModulePresent(moduleToolbarName)) {
|
|
41
41
|
let moduleToolbarView = AdaptableViewFactory_1.AdaptableViewPanelFactory.get(moduleToolbarName);
|
|
42
42
|
if (moduleToolbarView) {
|
|
43
43
|
let moduleInfo = props.api.internalApi
|
|
@@ -96,7 +96,7 @@ const DashboardComponent = (props) => {
|
|
|
96
96
|
let instanceName = props.api.internalApi.getToolbarTitle();
|
|
97
97
|
let dashboardOptions = props.api.optionsApi.getDashboardOptions();
|
|
98
98
|
const shouldRenderQuickSearchHeader = dashboardOptions.showQuickSearchInHeader &&
|
|
99
|
-
props.api.internalApi.getModuleService().
|
|
99
|
+
props.api.internalApi.getModuleService().isAdapTableModulePresent(ModuleConstants_1.QuickSearchModuleId);
|
|
100
100
|
const applicationIcon = props.api.optionsApi.getUserInterfaceOptions().applicationIcon;
|
|
101
101
|
if (props.DashboardState.IsHidden) {
|
|
102
102
|
return React.createElement("div", null);
|
|
@@ -44,7 +44,9 @@ class DashboardPopupComponent extends React.Component {
|
|
|
44
44
|
.find((ct) => ct.name === vt);
|
|
45
45
|
return customToolbar
|
|
46
46
|
? true
|
|
47
|
-
: this.props.api.internalApi
|
|
47
|
+
: this.props.api.internalApi
|
|
48
|
+
.getModuleService()
|
|
49
|
+
.isAdapTableModulePresent(vt);
|
|
48
50
|
});
|
|
49
51
|
return { ...tab, Toolbars };
|
|
50
52
|
});
|
|
@@ -11,7 +11,7 @@ const PinnedDashboard = (props) => {
|
|
|
11
11
|
const adaptable = (0, AdaptableContext_1.useAdaptable)();
|
|
12
12
|
const dashboardState = (0, react_redux_1.useSelector)((state) => state.Dashboard);
|
|
13
13
|
const pinnedToolbars = (dashboardState.PinnedToolbars ?? []).filter((tb) => adaptable.api.dashboardApi.internalApi.isToolbarCustom(tb) ||
|
|
14
|
-
adaptable.api.internalApi.getModuleService().
|
|
14
|
+
adaptable.api.internalApi.getModuleService().isAdapTableModulePresent(tb));
|
|
15
15
|
if (!pinnedToolbars || pinnedToolbars.length == 0) {
|
|
16
16
|
return React.createElement(React.Fragment, null);
|
|
17
17
|
}
|
|
@@ -22,7 +22,7 @@ const DataChangeHistoryGrid = (props) => {
|
|
|
22
22
|
const initializeAdaptableGrid = async () => {
|
|
23
23
|
const gridOptions = buildGridOptions(mainAdaptableInstance, changeHistoryLog);
|
|
24
24
|
const adaptableOptions = buildAdaptableOptions(mainAdaptableInstance, adaptableContainerId, agGridContainerId, undoChangeEnabled, onUndoChange, onClearRow);
|
|
25
|
-
const modules = mainAdaptableInstance.getAgGridRegisteredModules();
|
|
25
|
+
const modules = mainAdaptableInstance.agGridModulesAdapter.getAgGridRegisteredModules();
|
|
26
26
|
const dataChangeHistoryAdaptableApi = await AdaptableAgGrid_1.AdaptableAgGrid._initInternal({
|
|
27
27
|
variant: 'vanilla',
|
|
28
28
|
adaptableOptions,
|
|
@@ -145,8 +145,14 @@ const buildAdaptableOptions = (mainAdaptableInstance, adaptableContainerId, agGr
|
|
|
145
145
|
SortOrder: 'Desc',
|
|
146
146
|
},
|
|
147
147
|
],
|
|
148
|
-
|
|
149
|
-
|
|
148
|
+
ColumnSizing: {
|
|
149
|
+
'changeInfo.primaryKeyValue': { Flex: 3 },
|
|
150
|
+
changedColumnLabel: { Flex: 3 },
|
|
151
|
+
'changeInfo.oldValue': { Flex: 3 },
|
|
152
|
+
'changeInfo.newValue': { Flex: 3 },
|
|
153
|
+
'changeInfo.changedAt': { Flex: 3 },
|
|
154
|
+
changeTriggerLabel: { Flex: 2 },
|
|
155
|
+
undoActionColumn: { Width: 110 },
|
|
150
156
|
},
|
|
151
157
|
ColumnPinning: {
|
|
152
158
|
undoActionColumn: 'right',
|
|
@@ -218,49 +224,31 @@ const buildGridOptions = (mainAdaptableInstance, changeHistoryLog) => {
|
|
|
218
224
|
headerName: `Row (${mainPrimaryKeyColumnHeader})`,
|
|
219
225
|
field: 'changeInfo.primaryKeyValue',
|
|
220
226
|
cellDataType: 'text',
|
|
221
|
-
suppressAutoSize: false,
|
|
222
|
-
flex: 3,
|
|
223
|
-
initialFlex: 3,
|
|
224
227
|
},
|
|
225
228
|
{
|
|
226
229
|
headerName: 'Column',
|
|
227
230
|
field: 'changedColumnLabel',
|
|
228
231
|
cellDataType: 'text',
|
|
229
|
-
suppressAutoSize: false,
|
|
230
|
-
flex: 3,
|
|
231
|
-
initialFlex: 3,
|
|
232
232
|
},
|
|
233
233
|
{
|
|
234
234
|
headerName: 'Previous',
|
|
235
235
|
field: 'changeInfo.oldValue',
|
|
236
236
|
cellDataType: 'text',
|
|
237
|
-
suppressAutoSize: false,
|
|
238
|
-
flex: 3,
|
|
239
|
-
initialFlex: 3,
|
|
240
237
|
},
|
|
241
238
|
{
|
|
242
239
|
headerName: 'New',
|
|
243
240
|
field: 'changeInfo.newValue',
|
|
244
241
|
cellDataType: 'text',
|
|
245
|
-
suppressAutoSize: false,
|
|
246
|
-
flex: 3,
|
|
247
|
-
initialFlex: 3,
|
|
248
242
|
},
|
|
249
243
|
{
|
|
250
244
|
headerName: 'Changed',
|
|
251
245
|
field: 'changeInfo.changedAt',
|
|
252
246
|
cellDataType: 'date',
|
|
253
|
-
suppressAutoSize: false,
|
|
254
|
-
flex: 3,
|
|
255
|
-
initialFlex: 3,
|
|
256
247
|
},
|
|
257
248
|
{
|
|
258
249
|
headerName: 'Source',
|
|
259
250
|
field: 'changeTriggerLabel',
|
|
260
251
|
cellDataType: 'text',
|
|
261
|
-
suppressAutoSize: false,
|
|
262
|
-
flex: 2,
|
|
263
|
-
initialFlex: 2,
|
|
264
252
|
},
|
|
265
253
|
],
|
|
266
254
|
rowData: mapChangeHistoryRowData(changeHistoryLog, mainAdaptableInstance),
|
|
@@ -125,53 +125,90 @@ const getFormatDisplayTypeForScope = (scope, api) => {
|
|
|
125
125
|
if ('All' in scope) {
|
|
126
126
|
return undefined;
|
|
127
127
|
}
|
|
128
|
-
//
|
|
128
|
+
// Date-related data types that should all be treated as 'date'
|
|
129
|
+
const dateTypes = api.columnApi.internalApi.getColumnDateTypes();
|
|
130
|
+
// Check for ColumnIds in scope
|
|
129
131
|
if ('ColumnIds' in scope) {
|
|
130
132
|
const columns = scope.ColumnIds.map((c) => api.columnApi.getColumnWithColumnId(c)).filter(Boolean);
|
|
131
133
|
const columnDataTypes = (0, uniq_1.default)(columns.map((c) => c.dataType));
|
|
132
|
-
|
|
134
|
+
// If there's only one data type
|
|
135
|
+
if (columnDataTypes.length === 1) {
|
|
136
|
+
const dataType = columnDataTypes[0];
|
|
137
|
+
if (dataType === 'number') {
|
|
138
|
+
return 'number';
|
|
139
|
+
}
|
|
140
|
+
if (dateTypes.includes(dataType)) {
|
|
141
|
+
return 'date';
|
|
142
|
+
}
|
|
143
|
+
if (dataType === 'text') {
|
|
144
|
+
return 'text';
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
// If there are multiple data types but they're all date types
|
|
148
|
+
else if (columnDataTypes.length > 0 &&
|
|
149
|
+
columnDataTypes.every((type) => dateTypes.includes(type))) {
|
|
150
|
+
return 'date';
|
|
151
|
+
}
|
|
152
|
+
return undefined;
|
|
153
|
+
}
|
|
154
|
+
// Check for DataTypes in scope
|
|
155
|
+
if ('DataTypes' in scope && scope.DataTypes.length === 1) {
|
|
156
|
+
const dataType = scope.DataTypes[0];
|
|
157
|
+
if (dataType === 'number') {
|
|
133
158
|
return 'number';
|
|
134
159
|
}
|
|
135
|
-
if (
|
|
160
|
+
if (dateTypes.includes(dataType)) {
|
|
136
161
|
return 'date';
|
|
137
162
|
}
|
|
138
|
-
if (
|
|
163
|
+
if (dataType === 'text') {
|
|
139
164
|
return 'text';
|
|
140
165
|
}
|
|
141
|
-
return undefined;
|
|
142
|
-
}
|
|
143
|
-
if ('DataTypes' in scope && scope.DataTypes.length == 1 && scope.DataTypes[0] == 'number') {
|
|
144
|
-
return 'number';
|
|
145
166
|
}
|
|
146
|
-
|
|
167
|
+
// If there are multiple data types but they're all date types
|
|
168
|
+
else if ('DataTypes' in scope &&
|
|
169
|
+
scope.DataTypes.length > 0 &&
|
|
170
|
+
scope.DataTypes.every((type) => dateTypes.includes(type))) {
|
|
147
171
|
return 'date';
|
|
148
172
|
}
|
|
149
|
-
|
|
150
|
-
return 'text';
|
|
151
|
-
}
|
|
173
|
+
// Check for ColumnTypes in scope
|
|
152
174
|
if ('ColumnTypes' in scope && scope.ColumnTypes.length) {
|
|
153
|
-
//
|
|
175
|
+
// If a Pivot Total Column Type is specified, we can safely assume that the data type is number
|
|
154
176
|
const pivotTotalTypes = [
|
|
155
177
|
AdaptableColumn_1.PIVOT_ANY_TOTAL_COLUMN_TYPE,
|
|
156
178
|
AdaptableColumn_1.PIVOT_GRAND_TOTAL_COLUMN_TYPE,
|
|
157
179
|
AdaptableColumn_1.PIVOT_COLUMN_TOTAL_COLUMN_TYPE,
|
|
158
180
|
AdaptableColumn_1.PIVOT_AGGREGATION_TOTAL_COLUMN_TYPE,
|
|
159
181
|
];
|
|
160
|
-
//
|
|
182
|
+
// If all column types are pivot total types, we can safely assume that the data type is number
|
|
161
183
|
if (scope.ColumnTypes.length > 0 &&
|
|
162
184
|
scope.ColumnTypes.every((type) => pivotTotalTypes.includes(type))) {
|
|
163
185
|
return 'number';
|
|
164
186
|
}
|
|
165
|
-
//
|
|
187
|
+
// Check if all columns with this column type have the same data type
|
|
166
188
|
const columns = scope.ColumnTypes.flatMap((columnType) => {
|
|
167
189
|
return api.columnApi.getColumnsByColumnType(columnType);
|
|
168
190
|
});
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
columns.every((column) => column.dataType === columns[0].dataType)
|
|
172
|
-
//
|
|
173
|
-
|
|
174
|
-
|
|
191
|
+
if (columns.length) {
|
|
192
|
+
// Check if all columns have the same type
|
|
193
|
+
const allSameType = columns.every((column) => column.dataType === columns[0].dataType);
|
|
194
|
+
// Handle specific data types
|
|
195
|
+
if (allSameType) {
|
|
196
|
+
const dataType = columns[0].dataType;
|
|
197
|
+
if (dataType === 'number') {
|
|
198
|
+
return 'number';
|
|
199
|
+
}
|
|
200
|
+
if (dateTypes.includes(dataType)) {
|
|
201
|
+
return 'date';
|
|
202
|
+
}
|
|
203
|
+
if (dataType === 'text') {
|
|
204
|
+
return 'text';
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
// Check if all columns are date types (even if they're different date types)
|
|
208
|
+
const allDateTypes = columns.every((column) => dateTypes.includes(column.dataType));
|
|
209
|
+
if (allDateTypes) {
|
|
210
|
+
return 'date';
|
|
211
|
+
}
|
|
175
212
|
}
|
|
176
213
|
}
|
|
177
214
|
return undefined;
|