@adaptabletools/adaptable 23.0.4 → 23.0.5-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.js +0 -31
- package/index.css +0 -64
- package/index.js +0 -31
- package/package.json +1 -1
- package/src/AdaptableInterfaces/IAdaptable.d.ts +0 -2
- package/src/AdaptableOptions/AdaptablePlugin.js +1 -9
- package/src/AdaptableOptions/DefaultAdaptableOptions.js +3 -39
- package/src/AdaptableOptions/SettingsPanelOptions.d.ts +44 -16
- package/src/AdaptableState/Aggregations/only.js +0 -11
- package/src/AdaptableState/Aggregations/weightedAverage.d.ts +0 -1
- package/src/AdaptableState/Aggregations/weightedAverage.js +1 -27
- package/src/AdaptableState/Common/AdaptableColumn.js +0 -1
- package/src/AdaptableState/Common/AdaptableForm.js +0 -49
- package/src/AdaptableState/Common/AdaptableFormatPresets.js +0 -13
- package/src/AdaptableState/Common/AdaptablePredicate.js +3 -125
- package/src/AdaptableState/Common/AggregationColumns.js +0 -10
- package/src/AdaptableState/Common/Enums.js +0 -3
- package/src/AdaptableState/Common/Menu.js +1 -7
- package/src/AdaptableState/Common/MenuItem.js +0 -2
- package/src/AdaptableState/Common/Types.js +2 -5
- package/src/AdaptableState/StatusBarState.js +0 -3
- package/src/AdaptableState/StyledColumns/BadgeStyle.js +0 -1
- package/src/AdaptableState/StyledColumns/Common/BarStyleProperties.js +0 -4
- package/src/AdaptableState/StyledColumns/Common/CellTextOptions.js +0 -5
- package/src/AdaptableState/StyledColumns/Common/NumericStyledColumn.js +0 -8
- package/src/AdaptableState/Uuid.js +0 -1
- package/src/Api/Implementation/AdaptableApiImpl.js +0 -4
- package/src/Api/Implementation/AlertApiImpl.js +0 -21
- package/src/Api/Implementation/ApiBase.js +0 -24
- package/src/Api/Implementation/CalculatedColumnApiImpl.js +0 -1
- package/src/Api/Implementation/ChartingApiImpl.js +0 -3
- package/src/Api/Implementation/ColumnApiImpl.js +1 -15
- package/src/Api/Implementation/ColumnFilterApiImpl.js +0 -9
- package/src/Api/Implementation/ColumnScopeApiImpl.js +0 -21
- package/src/Api/Implementation/DashboardApiImpl.js +0 -1
- package/src/Api/Implementation/EntitlementApiImpl.js +0 -1
- package/src/Api/Implementation/ExportApiImpl.js +0 -10
- package/src/Api/Implementation/ExpressionApiImpl.js +0 -1
- package/src/Api/Implementation/FormatColumnApiImpl.js +0 -3
- package/src/Api/Implementation/FreeTextColumnApiImpl.js +0 -2
- package/src/Api/Implementation/GridApiImpl.js +1 -22
- package/src/Api/Implementation/GridFilterApiImpl.js +0 -2
- package/src/Api/Implementation/LayoutApiImpl.js +0 -18
- package/src/Api/Implementation/LayoutHelpers.js +0 -16
- package/src/Api/Implementation/NamedQueryApiImpl.js +0 -1
- package/src/Api/Implementation/PredicateApiImpl.js +0 -5
- package/src/Api/Implementation/RowFormApiImpl.js +0 -2
- package/src/Api/Implementation/StateApiImpl.js +0 -7
- package/src/Api/Implementation/SystemStatusApiImpl.js +0 -2
- package/src/Api/Implementation/TeamSharingApiImpl.js +0 -3
- package/src/Api/Implementation/UserInterfaceApiImpl.js +0 -1
- package/src/Api/Internal/ActionColumnInternalApi.js +0 -1
- package/src/Api/Internal/AdaptableInternalApi.d.ts +0 -2
- package/src/Api/Internal/AdaptableInternalApi.js +1 -39
- package/src/Api/Internal/AlertInternalApi.js +1 -102
- package/src/Api/Internal/CalculatedColumnInternalApi.js +0 -17
- package/src/Api/Internal/ChartingInternalApi.js +0 -1
- package/src/Api/Internal/ColumnFilterInternalApi.js +0 -52
- package/src/Api/Internal/ColumnInternalApi.js +0 -32
- package/src/Api/Internal/CustomSortInternalApi.js +0 -5
- package/src/Api/Internal/DashboardInternalApi.js +0 -23
- package/src/Api/Internal/DataImportInternalApi.js +0 -1
- package/src/Api/Internal/EventInternalApi.js +0 -2
- package/src/Api/Internal/ExportInternalApi.js +1 -16
- package/src/Api/Internal/ExpressionInternalApi.js +0 -23
- package/src/Api/Internal/Fdc3InternalApi.js +0 -9
- package/src/Api/Internal/FlashingCellInternalApi.js +0 -5
- package/src/Api/Internal/FormatColumnInternalApi.js +5 -107
- package/src/Api/Internal/FreeTextColumnInternalApi.js +0 -8
- package/src/Api/Internal/GridFilterInternalApi.js +0 -3
- package/src/Api/Internal/GridInternalApi.js +0 -37
- package/src/Api/Internal/LayoutInternalApi.js +0 -18
- package/src/Api/Internal/NamedQueryInternalApi.js +0 -9
- package/src/Api/Internal/PredicateInternalApi.js +0 -23
- package/src/Api/Internal/RowFormInternalApi.js +0 -18
- package/src/Api/Internal/StateInternalApi.js +0 -25
- package/src/Api/Internal/StyledColumnInternalApi.js +0 -62
- package/src/Api/Internal/TeamSharingInternalApi.js +0 -9
- package/src/Redux/ActionsReducers/AlertRedux.js +0 -24
- package/src/Redux/ActionsReducers/ApplicationRedux.js +0 -9
- package/src/Redux/ActionsReducers/BulkUpdateRedux.js +0 -6
- package/src/Redux/ActionsReducers/CalculatedColumnRedux.js +1 -16
- package/src/Redux/ActionsReducers/ChartingRedux.js +0 -24
- package/src/Redux/ActionsReducers/CommentsRedux.js +0 -24
- package/src/Redux/ActionsReducers/CustomSortRedux.js +0 -24
- package/src/Redux/ActionsReducers/DashboardRedux.js +0 -33
- package/src/Redux/ActionsReducers/ExportRedux.js +0 -36
- package/src/Redux/ActionsReducers/FlashingCellRedux.js +0 -24
- package/src/Redux/ActionsReducers/FormatColumnRedux.js +0 -36
- package/src/Redux/ActionsReducers/FreeTextColumnRedux.js +1 -20
- package/src/Redux/ActionsReducers/InternalRedux.js +0 -42
- package/src/Redux/ActionsReducers/LayoutRedux.js +1 -67
- package/src/Redux/ActionsReducers/NamedQueryRedux.js +0 -15
- package/src/Redux/ActionsReducers/NoteRedux.js +0 -14
- package/src/Redux/ActionsReducers/PluginsRedux.js +0 -3
- package/src/Redux/ActionsReducers/PlusMinusRedux.js +0 -34
- package/src/Redux/ActionsReducers/PopupRedux.js +2 -6
- package/src/Redux/ActionsReducers/QuickSearchRedux.js +0 -15
- package/src/Redux/ActionsReducers/ShortcutRedux.js +0 -24
- package/src/Redux/ActionsReducers/SmartEditRedux.js +0 -6
- package/src/Redux/ActionsReducers/StatusBarRedux.js +0 -6
- package/src/Redux/ActionsReducers/StyledColumnRedux.js +0 -27
- package/src/Redux/ActionsReducers/SystemStatusRedux.js +0 -6
- package/src/Redux/ActionsReducers/TeamSharingRedux.js +0 -1
- package/src/Redux/ActionsReducers/ThemeRedux.js +0 -26
- package/src/Redux/ActionsReducers/ToolPanelRedux.js +0 -22
- package/src/Redux/ActionsReducers/UserInterfaceRedux.js +0 -3
- package/src/Redux/ActionsReducers/utils.js +0 -6
- package/src/Redux/Store/AdaptableReduxLocalStorageEngine.js +0 -1
- package/src/Redux/Store/AdaptableReduxMerger.js +0 -25
- package/src/Redux/Store/AdaptableStore.js +5 -301
- package/src/Strategy/AdaptableModuleBase.js +0 -35
- package/src/Strategy/AlertModule.js +0 -9
- package/src/Strategy/CellSummaryModule.js +0 -12
- package/src/Strategy/ChartingModule.js +0 -1
- package/src/Strategy/ColumnFilterModule.js +1 -11
- package/src/Strategy/CommentModule.js +0 -2
- package/src/Strategy/DashboardModule.js +0 -4
- package/src/Strategy/ExportModule.js +0 -1
- package/src/Strategy/FlashingCellModule.js +0 -8
- package/src/Strategy/FormatColumnModule.js +0 -3
- package/src/Strategy/FreeTextColumnModule.js +0 -3
- package/src/Strategy/LayoutModule.js +0 -26
- package/src/Strategy/NoteModule.js +0 -3
- package/src/Strategy/PlusMinusModule.js +0 -3
- package/src/Strategy/SettingsPanelModule.js +0 -1
- package/src/Strategy/ShortcutModule.js +0 -1
- package/src/Strategy/SmartEditModule.js +0 -5
- package/src/Strategy/StatusBarModule.js +0 -7
- package/src/Strategy/StyledColumnModule.js +1 -16
- package/src/Strategy/TeamSharingModule.js +0 -9
- package/src/Strategy/Utilities/Layout/columnsSummaryHelpers.js +0 -5
- package/src/Utilities/Constants/DocumentationLinkConstants.js +0 -1
- package/src/Utilities/Constants/GeneralConstants.js +0 -10
- package/src/Utilities/Constants/ObjectDefaultConstants.js +0 -3
- package/src/Utilities/Constants/ReduxConstants.js +4 -8
- package/src/Utilities/Emitter.js +0 -9
- package/src/Utilities/ExpressionFunctions/aggregatedBooleanExpressionFunctions.js +0 -8
- package/src/Utilities/ExpressionFunctions/aggregatedScalarExpressionFunctions.js +0 -15
- package/src/Utilities/ExpressionFunctions/booleanExpressionFunctions.js +0 -3
- package/src/Utilities/ExpressionFunctions/deepMap.js +0 -16
- package/src/Utilities/ExpressionFunctions/expressionFunctionUtils.js +0 -9
- package/src/Utilities/ExpressionFunctions/observableExpressionFunctions.js +7 -78
- package/src/Utilities/ExpressionFunctions/scalarAggregationHelper.js +0 -9
- package/src/Utilities/ExpressionFunctions/scalarExpressionFunctions.js +2 -16
- package/src/Utilities/Extensions/ArrayExtensions.js +1 -63
- package/src/Utilities/Extensions/NumberExtensions.js +0 -27
- package/src/Utilities/Extensions/ObjectExtensions.js +0 -36
- package/src/Utilities/Extensions/StringExtensions.js +0 -27
- package/src/Utilities/Helpers/ActionColumnHelper.js +0 -4
- package/src/Utilities/Helpers/AdaptableHelper.js +0 -8
- package/src/Utilities/Helpers/DateHelper.js +0 -10
- package/src/Utilities/Helpers/DisplayFormatHelper.js +0 -8
- package/src/Utilities/Helpers/Helper.js +3 -9
- package/src/Utilities/Helpers/PlusMinusHelper.js +0 -20
- package/src/Utilities/Helpers/QuickSearchHelper.js +0 -5
- package/src/Utilities/Helpers/Scheduling/CronExpression.js +0 -43
- package/src/Utilities/Helpers/Scheduling/ScheduledReportHelper.js +0 -4
- package/src/Utilities/Helpers/SettingsPanelHelper.js +40 -4
- package/src/Utilities/Helpers/StyleHelper.js +0 -56
- package/src/Utilities/Helpers/StyledColumns/BarStylesHelper.js +0 -46
- package/src/Utilities/Helpers/StyledColumns/GradientStyleHelper.js +0 -38
- package/src/Utilities/Helpers/StyledColumns/IconStyleHelper.js +0 -39
- package/src/Utilities/Helpers/StyledColumns/PercentBarStyleHelper.js +0 -1
- package/src/Utilities/Helpers/StyledColumns/SparklineStyleHelper.js +0 -5
- package/src/Utilities/Helpers/StyledColumns/StyledColumnHelper.js +0 -37
- package/src/Utilities/Helpers/TimingHelper.js +0 -13
- package/src/Utilities/ObjectFactory.js +2 -4
- package/src/Utilities/Services/AggregatedScalarLiveValue.js +0 -7
- package/src/Utilities/Services/AlertService.js +0 -1
- package/src/Utilities/Services/AnnotationsService.js +0 -22
- package/src/Utilities/Services/CalculatedColumnExpressionService.js +0 -8
- package/src/Utilities/Services/ChartingService.js +0 -9
- package/src/Utilities/Services/DataService.js +0 -11
- package/src/Utilities/Services/Fdc3Service.js +0 -3
- package/src/Utilities/Services/FlashingCellService.js +0 -6
- package/src/Utilities/Services/ModuleService.js +0 -8
- package/src/Utilities/Services/QueryLanguageService.js +2 -25
- package/src/Utilities/Services/RowFormService.js +0 -1
- package/src/Utilities/Services/RowSummaryService.js +1 -20
- package/src/Utilities/Services/TeamSharingService.js +0 -15
- package/src/Utilities/Services/ThemeService.js +0 -7
- package/src/Utilities/Services/ValidationService.js +0 -21
- package/src/Utilities/createAgStatusPanelComponent.js +0 -3
- package/src/Utilities/getExpressionViewItems.js +0 -2
- package/src/Utilities/getObjectTagsViewItems.js +0 -1
- package/src/Utilities/getScrollbarSize.js +0 -1
- package/src/Utilities/logDeprecation.js +0 -3
- package/src/Utilities/resolveContainerElement.js +0 -21
- package/src/Utilities/runIfNotResolvedIn.js +0 -7
- package/src/Utilities/sortColumnStateForVisibleColumns.js +2 -12
- package/src/Utilities/waitForTimeout.js +0 -1
- package/src/Utilities/wizardSelection.js +0 -2
- package/src/View/AdaptablePopover/index.js +1 -1
- package/src/View/AdaptableView.js +1 -5
- package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/ColumnsList.js +0 -4
- package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/ConfigurationWizard.js +0 -23
- package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/EntitlementsForm.js +0 -2
- package/src/View/AdaptableWizardView/Wizard.js +0 -12
- package/src/View/AdaptableWizardView/helper.js +0 -11
- package/src/View/Alert/ActiveAlertsPanel.js +0 -2
- package/src/View/Alert/AlertStatusSubPanel.js +0 -8
- package/src/View/Alert/Utilities/getAlertType.js +0 -7
- package/src/View/Alert/Utilities/getDefaultAlertDefinition.js +0 -5
- package/src/View/Alert/Utilities/mapAlertDefinition.js +0 -3
- package/src/View/Alert/Wizard/AlertWizard.js +0 -2
- package/src/View/Alert/Wizard/isValidAlertRules.js +0 -1
- package/src/View/BulkUpdate/BulkUpdatePopup.js +0 -1
- package/src/View/CalculatedColumn/Wizard/CalculatedColumnSettingsWizardSection.js +1 -3
- package/src/View/CalculatedColumn/Wizard/CalculatedColumnWizard.js +0 -1
- package/src/View/CalculatedColumn/utils.d.ts +1 -1
- package/src/View/CellSummary/CellSummaryPopup.js +0 -3
- package/src/View/CellSummary/CellSummaryStatusBarSubPanelPopover.js +1 -7
- package/src/View/Charting/EditChartButton.js +1 -4
- package/src/View/Charting/ShowChartButton.js +0 -3
- package/src/View/Charting/useAgChartState.js +0 -5
- package/src/View/Charting/useChartingElements.js +0 -4
- package/src/View/Charting/useExternalChartState.js +0 -6
- package/src/View/ColumnInfo/ColumnInfo.js +7 -17
- package/src/View/Comments/CommentsEditor.js +1 -16
- package/src/View/Components/AdaptableButton/AdaptableButtonComponent.js +0 -1
- package/src/View/Components/AdaptableButton/AdaptableButtonView.js +0 -3
- package/src/View/Components/AdaptableDateInput/index.js +2 -9
- package/src/View/Components/AdaptableIconComponent/index.js +0 -4
- package/src/View/Components/AdaptableIconSelector/index.js +0 -3
- package/src/View/Components/AdaptableInput/index.js +0 -2
- package/src/View/Components/Badge/index.js +0 -8
- package/src/View/Components/Buttons/ButtonNewPage.js +1 -2
- package/src/View/Components/CellPopup/index.js +1 -2
- package/src/View/Components/ColumnFilter/AdaptableColumnFilter.js +0 -4
- package/src/View/Components/ColumnFilter/AdaptableFloatingFilter.js +0 -4
- package/src/View/Components/ColumnFilter/ColumnFilter.js +3 -46
- package/src/View/Components/ColumnFilter/ColumnFilterWindow.js +0 -2
- package/src/View/Components/ColumnFilter/FloatingFilter.js +1 -20
- package/src/View/Components/ColumnFilter/components/ColumnFilterInput.js +2 -16
- package/src/View/Components/ColumnFilter/components/ColumnFilterInputList.js +1 -4
- package/src/View/Components/ColumnFilter/components/FloatingFilterInputList.js +1 -6
- package/src/View/Components/ColumnFilter/components/FloatingFilterValues.js +0 -20
- package/src/View/Components/ColumnFilter/useAdaptableFilterWrapper.js +0 -5
- package/src/View/Components/ColumnFilter/utils.js +2 -9
- package/src/View/Components/EntityRulesEditor/EntityRulePredicatesEditor/EntityRulePredicateEditor.js +0 -2
- package/src/View/Components/EntityRulesEditor/EntityRulePredicatesEditor/EntityRulePredicatesEditor.js +0 -1
- package/src/View/Components/EntityRulesEditor/index.js +1 -11
- package/src/View/Components/ExternalRenderer.js +1 -3
- package/src/View/Components/FilterForm/ListBoxFilterForm.js +1 -52
- package/src/View/Components/ModuleValueSelector/index.js +0 -2
- package/src/View/Components/Panels/PanelWithImage.js +1 -5
- package/src/View/Components/Panels/PanelWithRow.js +0 -3
- package/src/View/Components/Popups/AdaptablePopup/AdaptablePopup.js +0 -6
- package/src/View/Components/Popups/AdaptablePopup/AdaptablePopupBody.js +0 -3
- package/src/View/Components/Popups/AdaptablePopup/AdaptablePopupModuleView.js +0 -6
- package/src/View/Components/Popups/AdaptablePopup/PopupPanel.js +1 -2
- package/src/View/Components/Popups/AdaptablePopup/useMenuItems.js +0 -1
- package/src/View/Components/Popups/AdaptablePopupAlert.js +0 -3
- package/src/View/Components/Popups/AdaptableToaster.js +0 -2
- package/src/View/Components/Popups/WindowPopups/WindowPopups.js +0 -8
- package/src/View/Components/RangesComponent.js +0 -57
- package/src/View/Components/Selectors/BulkUpdateValueSelector.js +0 -3
- package/src/View/Components/Selectors/PermittedValuesSelector.js +1 -6
- package/src/View/Components/ToolPanel/AdaptableToolPanel.js +1 -18
- package/src/View/Components/ToolPanel/ToolPanelPopupSections.js +0 -4
- package/src/View/Components/ToolPanel/ToolPanelWrapper.js +1 -4
- package/src/View/Components/ValueSelector/index.js +0 -4
- package/src/View/Components/wizardColumnListStyles.js +0 -5
- package/src/View/Dashboard/CustomToolbar.js +1 -25
- package/src/View/Dashboard/PinnedToolbarsSelector.js +0 -1
- package/src/View/DataImport/DataImportWizard/DataImportWizard.js +1 -22
- package/src/View/DataImport/DataImportWizard/sections/DataPreview.js +0 -1
- package/src/View/DataImport/systemFileHandlers.js +1 -1
- package/src/View/FlashingCell/Wizard/isValidFlashingCellRules.js +0 -1
- package/src/View/FormatColumn/Wizard/FormatColumnFormatWizardSection.js +0 -27
- package/src/View/FormatColumn/Wizard/FormatColumnPreview.js +0 -1
- package/src/View/FormatColumn/Wizard/FormatColumnScopeWizardSection.js +0 -7
- package/src/View/FormatColumn/Wizard/FormatColumnSettingsWizardSection.js +0 -12
- package/src/View/FormatColumn/Wizard/FormatColumnWizard.js +0 -10
- package/src/View/GridFilter/GridFilterPopup.js +0 -1
- package/src/View/GridFilter/useGridFilterExpressionEditor.js +0 -2
- package/src/View/GridInfo/GridInfoPopup/GridInfoPopup.js +1 -31
- package/src/View/Layout/LayoutViewPanel.js +0 -2
- package/src/View/Layout/PivotDetailsPopoup.js +0 -2
- package/src/View/Layout/TransposedPopup.js +0 -7
- package/src/View/Layout/Wizard/LayoutWizard.js +1 -6
- package/src/View/Layout/Wizard/sections/AggregationsSection.js +0 -2
- package/src/View/Layout/Wizard/sections/ColumnsSection.js +1 -32
- package/src/View/Layout/Wizard/sections/RowSummarySection.js +0 -3
- package/src/View/Layout/Wizard/sections/columnLayoutHelpers.js +0 -2
- package/src/View/Layout/Wizard/sections/layoutWizardColumns.js +0 -4
- package/src/View/Note/NotePopup.js +0 -1
- package/src/View/QuickSearch/QuickSearchPopup.js +0 -1
- package/src/View/StatusBar/AdaptableStatusBar.js +0 -4
- package/src/View/StatusBar/StatusBarPanel.js +0 -8
- package/src/View/StatusBar/StatusBarPopup.js +0 -2
- package/src/View/StyledColumn/Wizard/BadgePillStyleEditor.js +0 -11
- package/src/View/StyledColumn/Wizard/StyledColumnSliceStyleEditors.js +0 -28
- package/src/View/StyledColumn/Wizard/StyledColumnSparklineSettingsSection.js +0 -13
- package/src/View/StyledColumn/Wizard/StyledColumnWizard.js +1 -25
- package/src/View/StyledColumn/Wizard/StyledColumnWizardBulletSection.js +0 -26
- package/src/View/StyledColumn/Wizard/StyledColumnWizardGradientSection.js +0 -3
- package/src/View/StyledColumn/Wizard/StyledColumnWizardIconSection.js +0 -40
- package/src/View/StyledColumn/Wizard/StyledColumnWizardRangeBarSection.js +0 -55
- package/src/View/StyledColumn/Wizard/StyledColumnWizardRatingSection.js +0 -15
- package/src/View/StyledColumn/Wizard/StyledColumnWizardScopeSection.js +0 -21
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/BarStyleCellTextPreview.js +0 -10
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/GradientSummaryPreview.js +0 -5
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/PercentBarStylePreview.js +0 -4
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnBadgePreview.js +0 -5
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnBulletPreview.js +0 -3
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnChartListPreviews.js +0 -13
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnRangeBarPreview.js +0 -1
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnRatingPreview.js +0 -1
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnSparklinePreview.js +0 -1
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/StyledColumnWizardRangesSection.js +0 -13
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/StyledColumnWizardStyleSection.js +1 -13
- package/src/View/StyledColumn/Wizard/StyledColumnWizardTypeSection.js +0 -21
- package/src/View/SystemStatus/SystemStatusPopup.js +0 -1
- package/src/View/TeamSharing/SharedEntityObjectView.js +0 -1
- package/src/View/Theme/ThemeSelector.js +0 -1
- package/src/View/UIHelper.js +0 -6
- package/src/View/UIInterfaces.js +0 -1
- package/src/View/Wizard/CollapsibleWizardCard.js +1 -8
- package/src/View/Wizard/OnePageWizards.js +2 -9
- package/src/View/Wizard/SummaryColorTag.js +0 -1
- package/src/View/Wizard/useKeyboardNavigation.js +1 -3
- package/src/agGrid/Adaptable.js +0 -12
- package/src/agGrid/AdaptableAgGrid.d.ts +0 -2
- package/src/agGrid/AdaptableAgGrid.js +3 -482
- package/src/agGrid/AdaptableFilterHandler.js +0 -5
- package/src/agGrid/AdaptableLogger.js +0 -6
- package/src/agGrid/AgGridAdapter.js +3 -90
- package/src/agGrid/AgGridColumnAdapter.js +6 -168
- package/src/agGrid/AgGridExportAdapter.js +4 -106
- package/src/agGrid/AgGridFilterAdapter.js +0 -5
- package/src/agGrid/AgGridFloatingFilterAdapter.js +0 -10
- package/src/agGrid/AgGridMenuAdapter.js +0 -143
- package/src/agGrid/AgGridModulesAdapter.js +0 -2
- package/src/agGrid/AgGridOptionsService.js +0 -2
- package/src/agGrid/AgGridThemeAdapter.js +0 -7
- package/src/agGrid/agGridDataTypeDefinitions.js +0 -8
- package/src/agGrid/cellRenderers/BadgeRenderer.js +0 -10
- package/src/agGrid/cellRenderers/BulletChartRenderer.js +1 -96
- package/src/agGrid/cellRenderers/IconRenderer.js +0 -55
- package/src/agGrid/cellRenderers/PercentBarRenderer.js +0 -51
- package/src/agGrid/cellRenderers/RangeBarRenderer.js +1 -50
- package/src/agGrid/cellRenderers/RatingRenderer.js +0 -40
- package/src/agGrid/editors/AdaptableDateEditor/index.js +0 -18
- package/src/agGrid/editors/AdaptableNumberEditor/InternalAdaptableNumberEditor.js +0 -3
- package/src/agGrid/editors/AdaptableNumberEditor/index.js +0 -11
- package/src/agGrid/editors/AdaptablePercentageEditor/index.js +0 -9
- package/src/agGrid/index.js +1 -9
- package/src/components/AdaptableFormComponent/AdaptableFormComponent.js +1 -73
- package/src/components/CodeBlock/index.d.ts +0 -1
- package/src/components/CodeBlock/index.js +1 -2
- package/src/components/ColorPicker/ColorPicker.js +0 -6
- package/src/components/Combobox/VirtualizedList.js +0 -5
- package/src/components/Combobox/index.js +5 -63
- package/src/components/Dashboard/Dashboard.js +1 -4
- package/src/components/Datepicker/index.js +2 -97
- package/src/components/DragAndDropContext/TabList.js +2 -6
- package/src/components/Drawer/index.js +0 -7
- package/src/components/Dropdown/index.js +0 -1
- package/src/components/DropdownButton/index.js +0 -1
- package/src/components/ExpressionEditor/BaseEditorInput.js +1 -16
- package/src/components/ExpressionEditor/EditorButton.js +0 -1
- package/src/components/ExpressionEditor/EditorInput.js +1 -7
- package/src/components/ExpressionEditor/EditorInputWithWhereClause.js +0 -1
- package/src/components/ExpressionEditor/ExpressionPreview.js +4 -14
- package/src/components/ExpressionEditor/NamedQueryContext.js +0 -1
- package/src/components/ExpressionEditor/QueryBuilder/QueryBuilderInputs.js +1 -6
- package/src/components/ExpressionEditor/QueryBuilder/QueryPredicateBuilder.js +0 -12
- package/src/components/ExpressionEditor/QueryBuilder/utils.js +0 -4
- package/src/components/ExpressionEditor/index.js +5 -14
- package/src/components/Icon/index.js +0 -2
- package/src/components/Input/NumberInput.js +0 -10
- package/src/components/Modal/Backdrop.js +0 -1
- package/src/components/OverlayTrigger/Overlay.js +0 -1
- package/src/components/OverlayTrigger/index.js +3 -15
- package/src/components/ProgressIndicator/ProgressIndicator.js +3 -16
- package/src/components/ResizeObserver/index.js +0 -7
- package/src/components/SimpleButton/index.js +2 -16
- package/src/components/Tabs/index.js +0 -3
- package/src/components/Tag/Tag.js +0 -1
- package/src/components/Tag/columnScopeTagHelpers.js +0 -2
- package/src/components/Textarea/index.js +1 -8
- package/src/components/Toggle/Toggle.js +1 -5
- package/src/components/Toggle/ToggleGroup.js +1 -3
- package/src/components/ToggleButton/index.js +1 -3
- package/src/components/Tree/TreeDropdown/index.js +2 -130
- package/src/components/Tree/treeUtils.js +0 -4
- package/src/components/WindowModal/WindowModal.js +1 -14
- package/src/components/WindowModal/useStacking.js +0 -7
- package/src/components/icons/bullet-chart.js +0 -4
- package/src/components/icons/icon-style.js +0 -4
- package/src/components/icons/index.js +26 -36
- package/src/components/icons/range-bar.js +0 -5
- package/src/components/icons/star.js +0 -1
- package/src/components/twUtils.js +3 -12
- package/src/components/ui/calendar.js +1 -9
- package/src/components/ui/combobox.js +0 -4
- package/src/components/utils/captureTabNavigation/getFocusableChildren.js +0 -1
- package/src/components/utils/useDraggable.js +0 -4
- package/src/components/utils/useProperty.js +0 -18
- package/src/devTools/index.js +0 -1
- package/src/env.js +2 -2
- package/src/layout-manager/src/LMEmitter.js +0 -5
- package/src/layout-manager/src/destructurePivotColumnId.js +0 -19
- package/src/layout-manager/src/index.js +2 -182
- package/src/layout-manager/src/isLayoutEqual.js +0 -1
- package/src/layout-manager/src/isPivotColumnTotal.js +0 -2
- package/src/layout-manager/src/normalizeLayoutModel.js +0 -27
- package/src/layout-manager/src/simplifyLayoutModel.js +0 -11
- package/src/layout-manager/src/sortColumnIdsByOrder.js +2 -12
- package/src/lib/utils.js +0 -1
- package/src/migration/AdaptableUpgradeHelper.js +0 -2
- package/src/migration/VersionUpgrade17.js +0 -33
- package/src/migration/VersionUpgrade20.js +1 -21
- package/src/migration/VersionUpgrade21.js +0 -3
- package/src/migration/VersionUpgrade22.js +0 -11
- package/src/migration/VersionUpgrade23.js +0 -73
- package/src/parser/src/evaluator.js +0 -1
- package/src/parser/src/index.js +0 -1
- package/src/parser/src/parser.js +4 -103
- package/src/parser/src/predicate/mapExpressionToQlPredicate.js +0 -5
- package/src/parser/src/predicate/mapQlPredicateToExpression.js +0 -2
- package/src/parser/src/tokenizer.js +0 -2
- package/src/parser/src/utils.js +0 -1
- package/src/renderReactRoot.js +0 -12
- package/src/setupDevTools.js +0 -6
- package/src/twMerge.js +0 -1
- package/src/types.d.ts +1 -1
- package/src/types.js +0 -2
- package/tsconfig.esm.tsbuildinfo +1 -1
- package/src/AdaptableState/Common/NamedObject.d.ts +0 -10
- package/src/AdaptableState/Common/NamedObject.js +0 -1
- package/src/Utilities/ExpressionFunctions/groupingMap.d.ts +0 -35
- package/src/Utilities/ExpressionFunctions/groupingMap.js +0 -100
- package/src/Utilities/Interface/AdaptableToolPanelContext.d.ts +0 -4
- package/src/Utilities/Interface/AdaptableToolPanelContext.js +0 -1
- package/src/Utilities/Services/Interface/IMetamodelService.d.ts +0 -20
- package/src/Utilities/Services/Interface/IMetamodelService.js +0 -1
- package/src/Utilities/Services/MetamodelService.d.ts +0 -17
- package/src/Utilities/Services/MetamodelService.js +0 -162
- package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/AdaptableOptionsForm.d.ts +0 -6
- package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/AdaptableOptionsForm.js +0 -99
- package/src/View/Components/Buttons/EntityListActionButtons.d.ts +0 -38
- package/src/View/Components/Buttons/EntityListActionButtons.js +0 -42
- package/src/View/Components/ColumnFilter/components/ColumnFilterMenu.d.ts +0 -12
- package/src/View/Components/ColumnFilter/components/ColumnFilterMenu.js +0 -67
- package/src/View/Components/EntityRowItem.d.ts +0 -7
- package/src/View/Components/EntityRowItem.js +0 -7
- package/src/View/Components/FilterForm/getDefaultColumnFilterPredicate.d.ts +0 -3
- package/src/View/Components/FilterForm/getDefaultColumnFilterPredicate.js +0 -5
- package/src/View/Components/ModuleProfile.d.ts +0 -8
- package/src/View/Components/ModuleProfile.js +0 -10
- package/src/View/Components/ModuleSummary/ModuleDetail.d.ts +0 -23
- package/src/View/Components/ModuleSummary/ModuleDetail.js +0 -15
- package/src/View/Components/ModuleSummary/ModuleHeader.d.ts +0 -15
- package/src/View/Components/ModuleSummary/ModuleHeader.js +0 -15
- package/src/View/Components/ModuleSummary/SummaryRowItem.d.ts +0 -7
- package/src/View/Components/ModuleSummary/SummaryRowItem.js +0 -12
- package/src/View/Components/SharedProps/ModuleSummaryProps.d.ts +0 -9
- package/src/View/Components/SharedProps/ModuleSummaryProps.js +0 -1
- package/src/View/Components/SharedProps/ToolPanelModuleViewPopupProps.d.ts +0 -13
- package/src/View/Components/SharedProps/ToolPanelModuleViewPopupProps.js +0 -1
- package/src/View/Components/SharedProps/ToolbarModuleViewPopupProps.d.ts +0 -14
- package/src/View/Components/SharedProps/ToolbarModuleViewPopupProps.js +0 -1
- package/src/View/Components/StyleVisualItem.d.ts +0 -9
- package/src/View/Components/StyleVisualItem.js +0 -40
- package/src/View/Components/WizardSummaryPage.d.ts +0 -7
- package/src/View/Components/WizardSummaryPage.js +0 -17
- package/src/components/Accordion.d.ts +0 -7
- package/src/components/Accordion.js +0 -33
- package/src/components/FlexWithFooter.d.ts +0 -9
- package/src/components/FlexWithFooter.js +0 -13
- package/src/components/NotifyResize/index.d.ts +0 -9
- package/src/components/NotifyResize/index.js +0 -35
- package/src/components/PopupWithFooter.d.ts +0 -14
- package/src/components/PopupWithFooter.js +0 -11
- package/src/components/SelectableList/index.d.ts +0 -15
- package/src/components/SelectableList/index.js +0 -95
- package/src/components/SizedContainer/index.d.ts +0 -17
- package/src/components/SizedContainer/index.js +0 -20
- package/src/components/Table/index.d.ts +0 -4
- package/src/components/Table/index.js +0 -6
- package/src/components/WizardPanel/index.d.ts +0 -9
- package/src/components/WizardPanel/index.js +0 -7
- package/src/components/icons/align-justify.d.ts +0 -3
- package/src/components/icons/align-justify.js +0 -3
- package/src/components/icons/column-info.d.ts +0 -3
- package/src/components/icons/column-info.js +0 -3
- package/src/components/icons/gradient-column.d.ts +0 -3
- package/src/components/icons/gradient-column.js +0 -3
- package/src/components/icons/invalid.d.ts +0 -3
- package/src/components/icons/invalid.js +0 -3
- package/src/components/icons/logout copy.d.ts +0 -3
- package/src/components/icons/logout copy.js +0 -3
- package/src/components/icons/smart-edit.d.ts +0 -3
- package/src/components/icons/smart-edit.js +0 -3
- package/src/components/icons/team-share.d.ts +0 -3
- package/src/components/icons/team-share.js +0 -3
- package/src/components/icons/unchecked.d.ts +0 -3
- package/src/components/icons/unchecked.js +0 -3
- package/src/components/icons/user-filter.d.ts +0 -3
- package/src/components/icons/user-filter.js +0 -3
- package/src/components/utils/useContainerScrollObserver/index.d.ts +0 -6
- package/src/components/utils/useContainerScrollObserver/index.js +0 -79
- package/src/components/utils/useGlobalEvent.d.ts +0 -1
- package/src/components/utils/useGlobalEvent.js +0 -7
- package/src/components/utils/useLatest.d.ts +0 -1
- package/src/components/utils/useLatest.js +0 -6
- package/src/components/utils/usePropState.d.ts +0 -2
- package/src/components/utils/usePropState.js +0 -8
- package/src/metamodel/adaptable-metamodel-model.d.ts +0 -26
- package/src/metamodel/adaptable-metamodel-model.js +0 -1
- package/src/metamodel/adaptable.metamodel.d.ts +0 -6244
- package/src/metamodel/adaptable.metamodel.js +0 -1
|
@@ -25,12 +25,10 @@ const AdaptableToolPanelComponent = (props) => {
|
|
|
25
25
|
const toolPanelOptions = adaptableOptions.toolPanelOptions;
|
|
26
26
|
const settingsPanelOptions = adaptableOptions.settingsPanelOptions;
|
|
27
27
|
if (props.api.entitlementApi.isModuleHiddenEntitlement('ToolPanel')) {
|
|
28
|
-
// do NOT show any toolPanel content if the required entitlements are missing
|
|
29
28
|
return _jsx(HelpBlock, { className: "twa:my-2 twa:p-2 twa:text-3", children: "Not enough rights" });
|
|
30
29
|
}
|
|
31
30
|
const availableModuleItems = props.MainMenuItems.filter((menuItem) => menuItem.isVisible);
|
|
32
31
|
const availableModules = availableModuleItems.map((menuItem) => menuItem.category);
|
|
33
|
-
// 'Dashboard' is a special case because it's not available in the dashboard menu items, s we have to add it manually
|
|
34
32
|
if (!props.api.entitlementApi.isModuleHiddenEntitlement('Dashboard')) {
|
|
35
33
|
availableModules.push('Dashboard');
|
|
36
34
|
}
|
|
@@ -58,15 +56,12 @@ const AdaptableToolPanelComponent = (props) => {
|
|
|
58
56
|
const visibleToolPanels = [];
|
|
59
57
|
const visibleToolPanelControls = (props.ToolPanels ?? []).map((toolPanelDefinition) => {
|
|
60
58
|
const visibilityMode = toolPanelDefinition.VisibilityMode ?? 'collapsed';
|
|
61
|
-
// 1. check if it is a custom toolPanel
|
|
62
59
|
const customToolPanel = props.api.toolPanelApi.getCustomToolPanelByName(toolPanelDefinition.Name);
|
|
63
60
|
if (customToolPanel) {
|
|
64
61
|
visibleToolPanels.push(customToolPanel.name);
|
|
65
62
|
return (_jsx(ToolPanelWrapper, { customToolPanel: customToolPanel, visibilityMode: visibilityMode, onVisibilityModeChange: (state) => onStateChange(customToolPanel.name, state) }, customToolPanel.name));
|
|
66
63
|
}
|
|
67
|
-
// 2. check if it's an available module toolPanel
|
|
68
64
|
if (availableModuleToolPanels.some((module) => module === toolPanelDefinition.Name)) {
|
|
69
|
-
// assertion is safe as if just checked it in the if clause
|
|
70
65
|
const moduleToolPanel = toolPanelDefinition.Name;
|
|
71
66
|
visibleToolPanels.push(moduleToolPanel);
|
|
72
67
|
return (_jsx(ToolPanelWrapper, { adaptableToolPanel: moduleToolPanel, visibilityMode: visibilityMode, onVisibilityModeChange: (state) => onStateChange(moduleToolPanel, state) }, moduleToolPanel));
|
|
@@ -95,17 +90,14 @@ const AdaptableToolPanelComponent = (props) => {
|
|
|
95
90
|
label: (_jsx(CheckBox, { className: "ab-dd-checkbox twa:my-0", value: toolPanel, checked: isVisible, onMouseDown: preventDefault, children: toolPanel }, toolPanel)),
|
|
96
91
|
};
|
|
97
92
|
};
|
|
98
|
-
// 1. process custom tool panels
|
|
99
93
|
props.api.toolPanelApi.getCustomToolPanels().forEach((customToolPanel) => {
|
|
100
94
|
const customToolPanelName = customToolPanel.name;
|
|
101
95
|
toolpanelItems.push(buildDropdownButtonItem(customToolPanelName, customToolPanelName, isItemVisible(customToolPanelName)));
|
|
102
96
|
});
|
|
103
|
-
// 2. process module tool panels
|
|
104
97
|
availableModuleToolPanels.forEach((toolPanel) => {
|
|
105
98
|
let moduleName = moduleService.getModuleInfoByModule(toolPanel).FriendlyName;
|
|
106
99
|
toolpanelItems.push(buildDropdownButtonItem(toolPanel, moduleName, isItemVisible(toolPanel)));
|
|
107
100
|
});
|
|
108
|
-
// 3. sort the dropdown items alphabetically
|
|
109
101
|
toolpanelItems.sort((first, second) => {
|
|
110
102
|
if (first.label < second.label) {
|
|
111
103
|
return -1;
|
|
@@ -162,13 +154,7 @@ const AdaptableToolPanelComponent = (props) => {
|
|
|
162
154
|
} }));
|
|
163
155
|
};
|
|
164
156
|
const toolPanelButtons = renderToolPanelButtons();
|
|
165
|
-
return (_jsxs(Flex
|
|
166
|
-
// the inner-width is smaller
|
|
167
|
-
// minWidth: 'var(--ab-cmp-toolpanel__width)',
|
|
168
|
-
, {
|
|
169
|
-
// the inner-width is smaller
|
|
170
|
-
// minWidth: 'var(--ab-cmp-toolpanel__width)',
|
|
171
|
-
className: "ab-ToolPanel twa:p-2 twa:w-full", "data-name": "adaptable-tool-panel", flexDirection: "column", justifyContent: "center", children: [_jsxs(Flex, { className: "ab-ToolPanel__header twa:p-1 twa:w-full twa:justify-start", flexDirection: "row", flexWrap: "wrap", children: [isToolPanelModuleConfigurable && renderToolPanelDropdowns(), toolPanelButtons, isToolPanelModuleConfigurable && renderToolPanelConfigureButton()] }), Boolean(props.api.toolPanelApi.getCustomToolPanelButtons().length) && (_jsx(Flex, { className: "ab-ToolPanel__header__buttons twa:p-1 twa:justify-start", flexDirection: "row", flexWrap: "wrap", children: renderCustomToolPanelButtons() })), visibleToolPanelControls] }));
|
|
157
|
+
return (_jsxs(Flex, { className: "ab-ToolPanel twa:p-2 twa:w-full", "data-name": "adaptable-tool-panel", flexDirection: "column", justifyContent: "center", children: [_jsxs(Flex, { className: "ab-ToolPanel__header twa:p-1 twa:w-full twa:justify-start", flexDirection: "row", flexWrap: "wrap", children: [isToolPanelModuleConfigurable && renderToolPanelDropdowns(), toolPanelButtons, isToolPanelModuleConfigurable && renderToolPanelConfigureButton()] }), Boolean(props.api.toolPanelApi.getCustomToolPanelButtons().length) && (_jsx(Flex, { className: "ab-ToolPanel__header__buttons twa:p-1 twa:justify-start", flexDirection: "row", flexWrap: "wrap", children: renderCustomToolPanelButtons() })), visibleToolPanelControls] }));
|
|
172
158
|
};
|
|
173
159
|
function mapStateToProps(state) {
|
|
174
160
|
return {
|
|
@@ -210,10 +196,8 @@ export const getAdaptableToolPanelAgGridComponent = (adaptable) => {
|
|
|
210
196
|
const api = adaptable.api;
|
|
211
197
|
this.gui = document.createElement('div');
|
|
212
198
|
this.gui.id = getContainerId();
|
|
213
|
-
// preserve AG Grid naming convention
|
|
214
199
|
this.gui.className = 'ag-adaptable-panel';
|
|
215
200
|
Object.keys(toolPanelContainerStyle).forEach((key) => {
|
|
216
|
-
//@ts-ignore
|
|
217
201
|
this.gui.style[key] = toolPanelContainerStyle[key];
|
|
218
202
|
});
|
|
219
203
|
this.unmountReactRoot = adaptable.renderReactRoot(renderWithAdaptableContext(_jsx(ConnectedAdaptableToolPanel, { api: api, teamSharingActivated: false }), adaptable), this.gui);
|
|
@@ -225,7 +209,6 @@ export const getAdaptableToolPanelAgGridComponent = (adaptable) => {
|
|
|
225
209
|
return this.gui;
|
|
226
210
|
}
|
|
227
211
|
refresh() {
|
|
228
|
-
// no refresh logic needed
|
|
229
212
|
}
|
|
230
213
|
destroy() {
|
|
231
214
|
this.unmountReactRoot?.();
|
|
@@ -14,10 +14,6 @@ export var ToolPanelConfigView;
|
|
|
14
14
|
})(ToolPanelConfigView || (ToolPanelConfigView = {}));
|
|
15
15
|
export const ToolPanelPopupSections = (props) => {
|
|
16
16
|
const { api } = useAdaptable();
|
|
17
|
-
// Start with both cards collapsed so the user sees the popup's full
|
|
18
|
-
// summary at a glance and explicitly chooses which to edit. `initialTab`
|
|
19
|
-
// is still accepted on the props for backwards compatibility but no
|
|
20
|
-
// longer pre-expands a card.
|
|
21
17
|
const { bindCard, hasExpandedCard, expandedFillsSpace } = useWizardCardAccordion(null);
|
|
22
18
|
const selectedModuleButtons = [];
|
|
23
19
|
if (ArrayExtensions.IsNotNullOrEmpty(props.ToolPanelState.ModuleButtons)) {
|
|
@@ -25,7 +25,6 @@ export const ToolPanelWrapper = (props) => {
|
|
|
25
25
|
];
|
|
26
26
|
}
|
|
27
27
|
else {
|
|
28
|
-
// custom toolPanel
|
|
29
28
|
return [
|
|
30
29
|
customToolPanel.name,
|
|
31
30
|
customToolPanel?.title ?? customToolPanel.name,
|
|
@@ -35,9 +34,7 @@ export const ToolPanelWrapper = (props) => {
|
|
|
35
34
|
};
|
|
36
35
|
const [toolPanelName, toolPanelHeader, toolPanelContent, moduleInfo] = getToolPanelConfiguration();
|
|
37
36
|
const isMinimised = visibilityMode === 'collapsed';
|
|
38
|
-
const isConfigurable =
|
|
39
|
-
// only module toolPanels are configurable
|
|
40
|
-
!!moduleInfo && toolPanelName !== 'OpenFin' && toolPanelName !== 'IPushPull';
|
|
37
|
+
const isConfigurable = !!moduleInfo && toolPanelName !== 'OpenFin' && toolPanelName !== 'IPushPull';
|
|
41
38
|
const isToolPanelModuleConfigurable = api.internalApi
|
|
42
39
|
.getModuleService()
|
|
43
40
|
.getModuleById(ToolPanelModuleId)
|
|
@@ -32,7 +32,6 @@ function useValuesMap({ options, value, toIdentifier, selectedMap, }) {
|
|
|
32
32
|
return { selectedMap: result, optionsMap };
|
|
33
33
|
}
|
|
34
34
|
const baseClassName = 'ab-ValueSelector';
|
|
35
|
-
/** Clicks on these targets must not toggle row selection (`toggleSelectionOnRowClick`). */
|
|
36
35
|
const ROW_CLICK_IGNORE_SELECTOR = 'button, input, select, textarea, a, [data-drag-handle], [data-slot=select-trigger], [data-slot=select-content], [data-slot=select-item], .ab-Select';
|
|
37
36
|
const ROW_TOGGLE_SUPPRESS_MS = 150;
|
|
38
37
|
export function ValueSelector(props) {
|
|
@@ -241,9 +240,6 @@ export const renderSelectionSection = (props) => {
|
|
|
241
240
|
props.onClear();
|
|
242
241
|
}
|
|
243
242
|
}, children: "Select All" })), hideShowSelectedOnly ? null : (_jsx(Box, { className: "twa:shrink-0 twa:text-2 twa:font-normal", children: props.showOnlySelectedCheckbox })), showFilterInput && filter ? (_jsxs(_Fragment, { children: [compactFilterUsesSpacer ? _jsx(Box, { className: "twa:flex-1 twa:min-w-0" }) : null, _jsx(AdaptableFormControlTextClear, { value: searchInputValue ?? '', OnTextChange: setSearchInputValue ?? (() => undefined), placeholder: filterPlaceholder ?? 'Search...', className: compactFilterClass })] })) : null] })) : (_jsx(Box, { className: "twa:flex twa:flex-col twa:gap-2 twa:py-2", children: _jsxs(Box, { className: headerRowClassName, children: [singleSelect ? (_jsx(Box, { className: "twa:flex twa:flex-row twa:text-3 twa:font-normal twa:items-center", children: (() => {
|
|
244
|
-
// For single-select we show the *name* of the selected option
|
|
245
|
-
// rather than a (1 of N) counter — useful when the list is
|
|
246
|
-
// long enough to scroll past the chosen row.
|
|
247
243
|
if (!value.length) {
|
|
248
244
|
return _jsx("span", { className: "twa:opacity-70", children: "(none selected)" });
|
|
249
245
|
}
|
|
@@ -1,10 +1,5 @@
|
|
|
1
|
-
/** ValueSelector row sizing — matches Visibility and Order list rows. */
|
|
2
1
|
export const WIZARD_COLUMN_LIST_OPTION_CLASS = 'twa:!py-1 twa:!px-1.5';
|
|
3
|
-
/** Single-select column lists — ~50% taller than multi-select compact rows. */
|
|
4
2
|
export const WIZARD_COLUMN_LIST_OPTION_CLASS_SINGLE_SELECT = 'twa:!py-1.5 twa:!px-1.5';
|
|
5
|
-
/** Taller rows when ultra-compact one-line cards are not required (e.g. Custom Sort wizard). */
|
|
6
3
|
export const WIZARD_COLUMN_LIST_OPTION_CLASS_RELAXED = 'twa:!py-2 twa:!px-2';
|
|
7
|
-
/** Compact list header — spacing between Select All, Show Selected Only, and search. */
|
|
8
4
|
export const WIZARD_COLUMN_LIST_HEADER_CLASS = 'twa:gap-4';
|
|
9
|
-
/** Narrow search field (matches Visibility list column width, not full card width). */
|
|
10
5
|
export const WIZARD_COLUMN_LIST_SEARCH_CLASS = 'twa:w-[12rem] twa:shrink-0 twa:min-w-0';
|
|
@@ -7,7 +7,6 @@ import { AdaptableFormComponent } from '../../components/AdaptableFormComponent/
|
|
|
7
7
|
import { getDefaultAdaptableFormData, validateAdaptableForm, } from '../../AdaptableState/Common/AdaptableForm';
|
|
8
8
|
export const CustomToolbarCmp = (props) => {
|
|
9
9
|
const { api } = useAdaptable();
|
|
10
|
-
// dummy object which is used to force a re-render of the toolbar
|
|
11
10
|
const [componentRevision, setComponentRevision] = useState(1);
|
|
12
11
|
const renderContentContainerId = api.dashboardApi.internalApi.getCustomToolbarRenderContainerId(props.customToolbar.name);
|
|
13
12
|
const renderContentContainerRef = useRef(null);
|
|
@@ -16,17 +15,9 @@ export const CustomToolbarCmp = (props) => {
|
|
|
16
15
|
const componentContainerId = api.dashboardApi.internalApi.getCustomToolbarComponentContainerId(props.customToolbar.name);
|
|
17
16
|
const componentContainerRef = useRef(null);
|
|
18
17
|
const formContainerId = `${buttonsContainerId}-form`;
|
|
19
|
-
// Local form state for `customToolbar.toolbarForm`.
|
|
20
|
-
// Defaults are seeded from the form's field `defaultValue`s (if any) on
|
|
21
|
-
// first mount; subsequent definition swaps (different toolbar instance) are
|
|
22
|
-
// re-seeded too because the dependency includes the form definition.
|
|
23
18
|
const [toolbarFormData, setToolbarFormData] = useState(() => props.customToolbar.toolbarForm
|
|
24
19
|
? getDefaultAdaptableFormData(props.customToolbar.toolbarForm)
|
|
25
20
|
: {});
|
|
26
|
-
// Register a reset callback so `dashboardApi.resetCustomToolbarFormData(name)`
|
|
27
|
-
// can wipe this toolbar's state back to its declared defaults without
|
|
28
|
-
// forcing a re-mount. The unregister guard inside the internal API
|
|
29
|
-
// ensures a stale unmount can't clobber a fresh registration.
|
|
30
21
|
useEffect(() => {
|
|
31
22
|
if (!props.customToolbar.toolbarForm) {
|
|
32
23
|
return;
|
|
@@ -34,9 +25,6 @@ export const CustomToolbarCmp = (props) => {
|
|
|
34
25
|
const resetter = () => {
|
|
35
26
|
const next = getDefaultAdaptableFormData(props.customToolbar.toolbarForm);
|
|
36
27
|
setToolbarFormData(next);
|
|
37
|
-
// Mirror the public form-change callback so consumer code (e.g. a
|
|
38
|
-
// grid-filter helper) can rebuild itself from the cleared data
|
|
39
|
-
// without re-implementing default-seeding.
|
|
40
28
|
if (props.customToolbar.onToolbarFormChange) {
|
|
41
29
|
props.customToolbar.onToolbarFormChange(next, buildToolbarFormContext(next));
|
|
42
30
|
}
|
|
@@ -45,8 +33,6 @@ export const CustomToolbarCmp = (props) => {
|
|
|
45
33
|
return () => {
|
|
46
34
|
api.dashboardApi.internalApi.unregisterCustomToolbarFormResetter(props.customToolbar.name, resetter);
|
|
47
35
|
};
|
|
48
|
-
// We deliberately depend on the toolbar identity + form definition so
|
|
49
|
-
// that a re-render with the same toolbar doesn't churn the registration.
|
|
50
36
|
}, [api, props.customToolbar.name, props.customToolbar.toolbarForm]);
|
|
51
37
|
const buildToolbarFormContext = (data) => {
|
|
52
38
|
const baseCtx = {
|
|
@@ -55,9 +41,6 @@ export const CustomToolbarCmp = (props) => {
|
|
|
55
41
|
formData: data,
|
|
56
42
|
...api.internalApi.buildBaseContext(),
|
|
57
43
|
};
|
|
58
|
-
// Validate against the same context the consumer will see, then attach
|
|
59
|
-
// the results so button hidden/disabled/onClick callbacks can gate on
|
|
60
|
-
// form validity (e.g. a "Submit" button disabled while invalid).
|
|
61
44
|
const formErrors = props.customToolbar.toolbarForm
|
|
62
45
|
? validateAdaptableForm(props.customToolbar.toolbarForm, data, baseCtx)
|
|
63
46
|
: {};
|
|
@@ -80,7 +63,6 @@ export const CustomToolbarCmp = (props) => {
|
|
|
80
63
|
useLayoutEffect(() => {
|
|
81
64
|
const element = renderContentContainerRef.current;
|
|
82
65
|
const adaptableApi = api;
|
|
83
|
-
// cleanup runs in a separate effect, this way it's executed only once on unmount
|
|
84
66
|
return () => {
|
|
85
67
|
if (props.customToolbar.render) {
|
|
86
68
|
props.customToolbar.render({
|
|
@@ -116,13 +98,7 @@ export const CustomToolbarCmp = (props) => {
|
|
|
116
98
|
...api.internalApi.buildBaseContext(),
|
|
117
99
|
};
|
|
118
100
|
return (_jsx(AdaptableButtonView, { button: button, context: dashboardContext, api: api, defaults: ADAPTABLE_BUTTON_SURFACE_DEFAULTS.customToolbar, rerenderOnClick: false, style: { marginLeft: index ? 'var(--ab-base-space)' : 0 }, onAfterClick: () => setComponentRevision(componentRevision + 1) }, index));
|
|
119
|
-
}) })), props.customToolbar.toolbarForm && (_jsx("div", { id: formContainerId, className: `ab-CustomToolbar__form ab-CustomToolbar--${props.customToolbar.name}`, style: { minHeight: 22 }, children: _jsx(AdaptableFormComponent
|
|
120
|
-
// ensure the form uses the inline (toolbar-friendly) layout even
|
|
121
|
-
// if the consumer forgot to set it explicitly
|
|
122
|
-
, {
|
|
123
|
-
// ensure the form uses the inline (toolbar-friendly) layout even
|
|
124
|
-
// if the consumer forgot to set it explicitly
|
|
125
|
-
formDef: { ...props.customToolbar.toolbarForm, layout: 'inline' }, data: toolbarFormData, displayTitle: false, api: api, context: buildToolbarFormContext(toolbarFormData), focusFirstButton: false, onChange: (newData) => {
|
|
101
|
+
}) })), props.customToolbar.toolbarForm && (_jsx("div", { id: formContainerId, className: `ab-CustomToolbar__form ab-CustomToolbar--${props.customToolbar.name}`, style: { minHeight: 22 }, children: _jsx(AdaptableFormComponent, { formDef: { ...props.customToolbar.toolbarForm, layout: 'inline' }, data: toolbarFormData, displayTitle: false, api: api, context: buildToolbarFormContext(toolbarFormData), focusFirstButton: false, onChange: (newData) => {
|
|
126
102
|
setToolbarFormData(newData);
|
|
127
103
|
if (props.customToolbar.onToolbarFormChange) {
|
|
128
104
|
props.customToolbar.onToolbarFormChange(newData, buildToolbarFormContext(newData));
|
|
@@ -16,9 +16,6 @@ export const DataImportWizard = (props) => {
|
|
|
16
16
|
const [rowData, setRowData] = React.useState(null);
|
|
17
17
|
const [file, setFile] = React.useState(null);
|
|
18
18
|
const [text, setText] = React.useState('');
|
|
19
|
-
// This needs to be called only when:
|
|
20
|
-
// - columnsMap changes
|
|
21
|
-
// - new data is loaded
|
|
22
19
|
const [importType, setImportType] = React.useState('file');
|
|
23
20
|
const primaryKey = adaptableApi.optionsApi.getPrimaryKey();
|
|
24
21
|
const hasDynamicallyAddedPrimaryKey = typeof dataImportOptions._getPrimaryKeyValue === 'function';
|
|
@@ -38,7 +35,6 @@ export const DataImportWizard = (props) => {
|
|
|
38
35
|
rowData,
|
|
39
36
|
});
|
|
40
37
|
}
|
|
41
|
-
// by default just trim the keys
|
|
42
38
|
let processedRowData = {};
|
|
43
39
|
if (rowData) {
|
|
44
40
|
processedRowData = Object.keys(rowData).reduce((acc, key) => {
|
|
@@ -48,11 +44,9 @@ export const DataImportWizard = (props) => {
|
|
|
48
44
|
}
|
|
49
45
|
return processedRowData;
|
|
50
46
|
};
|
|
51
|
-
// ---- COLUMNS ----
|
|
52
47
|
const [columnsMap, setColumnsMap] = React.useState(null);
|
|
53
48
|
const mappedRowDataToColumns = React.useMemo(() => {
|
|
54
49
|
return (rowData ?? []).map((row) => {
|
|
55
|
-
// pick only included columns, and need to map to abColumn.field
|
|
56
50
|
return columnsMap?.reduce((acc, colMap) => {
|
|
57
51
|
if (colMap.include && colMap.abColumn && colMap.abColumn.field) {
|
|
58
52
|
acc[colMap.abColumn.field] = row[colMap.field];
|
|
@@ -84,24 +78,19 @@ export const DataImportWizard = (props) => {
|
|
|
84
78
|
const allAbColumns = adaptableApi.columnApi.getColumns();
|
|
85
79
|
const columnsMap = Array.from(fields).map((field) => {
|
|
86
80
|
const abColumn = allAbColumns.find((c) => {
|
|
87
|
-
// exact field match
|
|
88
81
|
if (c.field === field) {
|
|
89
82
|
return true;
|
|
90
83
|
}
|
|
91
|
-
// based on friendly name
|
|
92
84
|
const friendlyName = c.friendlyName;
|
|
93
85
|
if (typeof friendlyName !== 'string') {
|
|
94
86
|
return false;
|
|
95
87
|
}
|
|
96
|
-
// exact match
|
|
97
88
|
if (friendlyName === field) {
|
|
98
89
|
return true;
|
|
99
90
|
}
|
|
100
|
-
// match without case
|
|
101
91
|
if (friendlyName.toLowerCase() === field.toLowerCase()) {
|
|
102
92
|
return true;
|
|
103
93
|
}
|
|
104
|
-
// match without spaces and case, and special characters: ' ', '-', '_'
|
|
105
94
|
if (friendlyName.replace(/\s|-|_/g, '').toLowerCase() === field.toLowerCase()) {
|
|
106
95
|
return true;
|
|
107
96
|
}
|
|
@@ -126,12 +115,10 @@ export const DataImportWizard = (props) => {
|
|
|
126
115
|
}, []);
|
|
127
116
|
const handleChangeImportType = React.useCallback((importType) => {
|
|
128
117
|
setImportType(importType);
|
|
129
|
-
// clear data
|
|
130
118
|
handleNewRowData(null);
|
|
131
119
|
setFile(null);
|
|
132
120
|
setText('');
|
|
133
121
|
}, []);
|
|
134
|
-
// ---- FILE HANDLERS ----
|
|
135
122
|
const fileHandlers = React.useMemo(() => {
|
|
136
123
|
const userDefinedHandlers = adaptableApi.optionsApi.getDataImportOptions()?.fileHandlers ?? [];
|
|
137
124
|
return [...userDefinedHandlers, ...systemFileHandlers];
|
|
@@ -158,13 +145,10 @@ export const DataImportWizard = (props) => {
|
|
|
158
145
|
}
|
|
159
146
|
}, [adaptable]);
|
|
160
147
|
const fileMessage = file ? (_jsxs(HelpBlock, { className: "twa:mb-2", children: ["File ", _jsx(Tag, { children: file.name }), " is ready to be imported."] })) : (_jsxs(HelpBlock, { className: "twa:mb-2", children: ["Supported file types: ", supportedFileFormats] }));
|
|
161
|
-
// ---- TEXT IMPORT ----
|
|
162
148
|
const [textError, setTextError] = React.useState(null);
|
|
163
149
|
const handleTextChange = React.useCallback(async (text) => {
|
|
164
|
-
//
|
|
165
150
|
let textHandler = adaptableApi.optionsApi.getDataImportOptions()?.textHandler;
|
|
166
151
|
if (!textHandler) {
|
|
167
|
-
// regex to test for json
|
|
168
152
|
const jsonRegex = /^\s*[\[{]/;
|
|
169
153
|
if (text && jsonRegex.test(text)) {
|
|
170
154
|
textHandler = JSON.parse;
|
|
@@ -196,7 +180,6 @@ export const DataImportWizard = (props) => {
|
|
|
196
180
|
}
|
|
197
181
|
}, []);
|
|
198
182
|
const textMessage = textError ?? (!rowData ? 'Paste your data here' : '');
|
|
199
|
-
// ---- VALIDATION ----
|
|
200
183
|
const errors = React.useMemo(() => {
|
|
201
184
|
if (!dataImportOptions?.validate) {
|
|
202
185
|
return null;
|
|
@@ -237,11 +220,7 @@ export const DataImportWizard = (props) => {
|
|
|
237
220
|
},
|
|
238
221
|
details: 'Upload the data',
|
|
239
222
|
render: () => {
|
|
240
|
-
return (_jsx(UploadSection, { importType: importType, onImportTypeChange: handleChangeImportType,
|
|
241
|
-
// FILE
|
|
242
|
-
readFile: readFile, supportedFileFormats: supportedFileFormats, fileMessage: fileMessage,
|
|
243
|
-
// TEXT
|
|
244
|
-
text: text, onTextChange: handleTextChange, textMessage: textMessage }));
|
|
223
|
+
return (_jsx(UploadSection, { importType: importType, onImportTypeChange: handleChangeImportType, readFile: readFile, supportedFileFormats: supportedFileFormats, fileMessage: fileMessage, text: text, onTextChange: handleTextChange, textMessage: textMessage }));
|
|
245
224
|
},
|
|
246
225
|
},
|
|
247
226
|
{
|
|
@@ -16,7 +16,7 @@ export const parseCSV = (content) => {
|
|
|
16
16
|
const item = {};
|
|
17
17
|
for (let j = 0; j < headers.length; j++) {
|
|
18
18
|
const value = values[j];
|
|
19
|
-
item[headers[j]] = value === '' || isNaN(Number(value)) ? value : Number(value);
|
|
19
|
+
item[headers[j]] = value === '' || isNaN(Number(value)) ? value : Number(value);
|
|
20
20
|
}
|
|
21
21
|
data.push(item);
|
|
22
22
|
}
|
|
@@ -7,7 +7,6 @@ export const isValidFlashingCellRules = (flashingCell, api, context) => {
|
|
|
7
7
|
if (typeof isRuleValid === 'string') {
|
|
8
8
|
return isRuleValid;
|
|
9
9
|
}
|
|
10
|
-
// boolean expressions may also be saved as named queries
|
|
11
10
|
if (context.namedQuery != false) {
|
|
12
11
|
const isValidName = api.namedQueryApi.isValidNamedQuery(context.namedQuery);
|
|
13
12
|
if (!isValidName.valid) {
|
|
@@ -112,8 +112,6 @@ export const getFormatColumnDisplayFormatSummaryItems = (data) => {
|
|
|
112
112
|
if (isAdaptableNumericFormatPreset(data.DisplayFormat)) {
|
|
113
113
|
return [{ label: 'Preset', value: NUMERIC_PRESET_LABELS[data.DisplayFormat] }];
|
|
114
114
|
}
|
|
115
|
-
// Wizard materialises an empty { Formatter, Options: {} } shell while editing;
|
|
116
|
-
// treat it as unset (same as handleFinish in FormatColumnWizard).
|
|
117
115
|
if (data.DisplayFormat &&
|
|
118
116
|
typeof data.DisplayFormat === 'object' &&
|
|
119
117
|
isObjectEmpty(data.DisplayFormat.Options)) {
|
|
@@ -180,13 +178,10 @@ export const getFormatDisplayTypeForScope = (scope, api) => {
|
|
|
180
178
|
if ('All' in scope) {
|
|
181
179
|
return undefined;
|
|
182
180
|
}
|
|
183
|
-
// Date-related data types that should all be treated as 'date'
|
|
184
181
|
const dateTypes = api.columnApi.internalApi.getColumnDateTypes();
|
|
185
|
-
// Check for ColumnIds in scope
|
|
186
182
|
if ('ColumnIds' in scope) {
|
|
187
183
|
const columns = scope.ColumnIds.map((c) => api.columnApi.getColumnWithColumnId(c)).filter(Boolean);
|
|
188
184
|
const columnDataTypes = uniq(columns.map((c) => c.dataType));
|
|
189
|
-
// If there's only one data type
|
|
190
185
|
if (columnDataTypes.length === 1) {
|
|
191
186
|
const dataType = columnDataTypes[0];
|
|
192
187
|
if (dataType === 'number') {
|
|
@@ -199,14 +194,12 @@ export const getFormatDisplayTypeForScope = (scope, api) => {
|
|
|
199
194
|
return 'text';
|
|
200
195
|
}
|
|
201
196
|
}
|
|
202
|
-
// If there are multiple data types but they're all date types
|
|
203
197
|
else if (columnDataTypes.length > 0 &&
|
|
204
198
|
columnDataTypes.every((type) => dateTypes.includes(type))) {
|
|
205
199
|
return 'date';
|
|
206
200
|
}
|
|
207
201
|
return undefined;
|
|
208
202
|
}
|
|
209
|
-
// Check for DataTypes in scope
|
|
210
203
|
if ('DataTypes' in scope && scope.DataTypes.length === 1) {
|
|
211
204
|
const dataType = scope.DataTypes[0];
|
|
212
205
|
if (dataType === 'number') {
|
|
@@ -219,34 +212,27 @@ export const getFormatDisplayTypeForScope = (scope, api) => {
|
|
|
219
212
|
return 'text';
|
|
220
213
|
}
|
|
221
214
|
}
|
|
222
|
-
// If there are multiple data types but they're all date types
|
|
223
215
|
else if ('DataTypes' in scope &&
|
|
224
216
|
scope.DataTypes.length > 0 &&
|
|
225
217
|
scope.DataTypes.every((type) => dateTypes.includes(type))) {
|
|
226
218
|
return 'date';
|
|
227
219
|
}
|
|
228
|
-
// Check for ColumnTypes in scope
|
|
229
220
|
if ('ColumnTypes' in scope && scope.ColumnTypes.length) {
|
|
230
|
-
// If a Pivot Total Column Type is specified, we can safely assume that the data type is number
|
|
231
221
|
const pivotTotalTypes = [
|
|
232
222
|
PIVOT_ANY_TOTAL_COLUMN_TYPE,
|
|
233
223
|
PIVOT_GRAND_TOTAL_COLUMN_TYPE,
|
|
234
224
|
PIVOT_COLUMN_TOTAL_COLUMN_TYPE,
|
|
235
225
|
PIVOT_AGGREGATION_TOTAL_COLUMN_TYPE,
|
|
236
226
|
];
|
|
237
|
-
// If all column types are pivot total types, we can safely assume that the data type is number
|
|
238
227
|
if (scope.ColumnTypes.length > 0 &&
|
|
239
228
|
scope.ColumnTypes.every((type) => pivotTotalTypes.includes(type))) {
|
|
240
229
|
return 'number';
|
|
241
230
|
}
|
|
242
|
-
// Check if all columns with this column type have the same data type
|
|
243
231
|
const columns = scope.ColumnTypes.flatMap((columnType) => {
|
|
244
232
|
return api.columnApi.getColumnsByColumnType(columnType);
|
|
245
233
|
});
|
|
246
234
|
if (columns.length) {
|
|
247
|
-
// Check if all columns have the same type
|
|
248
235
|
const allSameType = columns.every((column) => column.dataType === columns[0].dataType);
|
|
249
|
-
// Handle specific data types
|
|
250
236
|
if (allSameType) {
|
|
251
237
|
const dataType = columns[0].dataType;
|
|
252
238
|
if (dataType === 'number') {
|
|
@@ -259,7 +245,6 @@ export const getFormatDisplayTypeForScope = (scope, api) => {
|
|
|
259
245
|
return 'text';
|
|
260
246
|
}
|
|
261
247
|
}
|
|
262
|
-
// Check if all columns are date types (even if they're different date types)
|
|
263
248
|
const allDateTypes = columns.every((column) => dateTypes.includes(column.dataType));
|
|
264
249
|
if (allDateTypes) {
|
|
265
250
|
return 'date';
|
|
@@ -329,10 +314,6 @@ const renderNumberFormat = (data, onChange, setFormatOption, scopedCustomFormatt
|
|
|
329
314
|
if (resolved?.Formatter !== 'NumberFormatter') {
|
|
330
315
|
return null;
|
|
331
316
|
}
|
|
332
|
-
// A preset is now stored as a bare string ('Percentage', 'Dollar', ...)
|
|
333
|
-
// — selecting a preset just writes the name. The active preset is
|
|
334
|
-
// therefore a simple string comparison instead of the old fragile
|
|
335
|
-
// suffix/multiplier heuristic.
|
|
336
317
|
const setPreset = (preset) => {
|
|
337
318
|
onChange({ DisplayFormat: preset });
|
|
338
319
|
};
|
|
@@ -431,23 +412,15 @@ export const FormatColumnFormatWizardSection = (props) => {
|
|
|
431
412
|
props.onChange({ ...data, ...updated });
|
|
432
413
|
};
|
|
433
414
|
const setFormatOption = (key, value) => {
|
|
434
|
-
// If the user is currently on a preset (e.g. 'Dollar'), materialise
|
|
435
|
-
// it into a concrete AdaptableFormat *before* applying the edit so
|
|
436
|
-
// that tweaking any field "forks" the preset into a bespoke format.
|
|
437
415
|
const current = resolveDisplayFormat(data.DisplayFormat);
|
|
438
416
|
if (!current)
|
|
439
417
|
return;
|
|
440
|
-
// The cast is safe: we copy `current.Formatter` and merge into
|
|
441
|
-
// `current.Options`, so the discriminant and the Options shape
|
|
442
|
-
// are always kept in sync — TypeScript just can't correlate the
|
|
443
|
-
// two ends of the discriminated union across a generic merge.
|
|
444
418
|
const DisplayFormat = {
|
|
445
419
|
Formatter: current.Formatter,
|
|
446
420
|
Options: { ...current.Options, [key]: value },
|
|
447
421
|
};
|
|
448
422
|
update({ DisplayFormat });
|
|
449
423
|
};
|
|
450
|
-
// A preset string is logically a NumberFormatter for this routing.
|
|
451
424
|
const Type = isAdaptableNumericFormatPreset(data.DisplayFormat)
|
|
452
425
|
? 'NumberFormatter'
|
|
453
426
|
: data.DisplayFormat && data.DisplayFormat.Formatter;
|
|
@@ -16,7 +16,6 @@ const toFormatColumnPreviewStyle = (formatColumn) => {
|
|
|
16
16
|
textAlign: style.Alignment ? style.Alignment.toLowerCase() : undefined,
|
|
17
17
|
};
|
|
18
18
|
};
|
|
19
|
-
/** Today's date as sample text — no Display Format options applied. */
|
|
20
19
|
export const getFormatColumnPreviewDateSampleText = () => new Date().toLocaleDateString();
|
|
21
20
|
export const getFormatColumnStylePreviewText = (formatColumn, api) => {
|
|
22
21
|
const formatType = getFormatDisplayTypeForScope(formatColumn.Scope, api);
|
|
@@ -22,10 +22,6 @@ const ROW_KIND_EXCLUDE_KEY = {
|
|
|
22
22
|
Summary: 'ExcludeSummaryRows',
|
|
23
23
|
Total: 'ExcludeTotalRows',
|
|
24
24
|
};
|
|
25
|
-
/**
|
|
26
|
-
* Missing flags default to "include" — matches the long-standing
|
|
27
|
-
* Format Column row-scope semantics.
|
|
28
|
-
*/
|
|
29
25
|
const isRowKindIncluded = (data, kind) => {
|
|
30
26
|
return !data.RowScope?.[ROW_KIND_EXCLUDE_KEY[kind]];
|
|
31
27
|
};
|
|
@@ -79,9 +75,6 @@ const FormatColumnRowsScopeSummary = ({ data, }) => {
|
|
|
79
75
|
return (_jsx(CollapsibleWizardValueSummary, { value: allKinds ? (_jsx(Tag, { children: "All" })) : includedKinds.length === 0 ? (_jsx(Tag, { children: "None" })) : (_jsx(Flex, { flexWrap: "wrap", className: "twa:gap-1", children: includedKinds.map((kind) => (_jsx(Tag, { children: ROW_KIND_LABELS[kind] }, kind))) })) }));
|
|
80
76
|
};
|
|
81
77
|
const FormatColumnRowScopePanel = ({ data, onRowKindChange, }) => (_jsx(Flex, { flexDirection: "column", className: "twa:items-start twa:px-1 twa:py-1", style: { rowGap: 'calc(var(--ab-base-space) * 2)' }, children: FORMAT_COLUMN_ROW_KINDS.map((kind) => (_jsx(CheckBox, { "data-name": `include-${kind.toLowerCase()}-rows-checkbox`, checked: isRowKindIncluded(data, kind), onChange: (checked) => onRowKindChange(kind, checked), children: ROW_KIND_LABELS[kind] }, kind))) }));
|
|
82
|
-
// ---------------------------------------------------------------------------
|
|
83
|
-
// Section
|
|
84
|
-
// ---------------------------------------------------------------------------
|
|
85
78
|
export const FormatColumnScopeWizardSection = (props) => {
|
|
86
79
|
const { data, api } = useOnePageAdaptableWizardContext();
|
|
87
80
|
const adaptable = useAdaptable();
|
|
@@ -15,17 +15,6 @@ export const renderFormatColumnSettingsSummary = (data) => {
|
|
|
15
15
|
export const FormatColumnSettingsWizardSection = (props) => {
|
|
16
16
|
const { data, api } = useOnePageAdaptableWizardContext();
|
|
17
17
|
const nameInputRef = React.useRef(null);
|
|
18
|
-
// When the wizard is opened for a brand-new Format Column (no Name yet),
|
|
19
|
-
// park the cursor in the Name input so the user can start typing.
|
|
20
|
-
//
|
|
21
|
-
// We have to fight three earlier focus calls:
|
|
22
|
-
// 1. <Dialog> focuses itself on mount via useAutoFocus.
|
|
23
|
-
// 2. OnePageWizards focuses its section-nav pill in a useEffect.
|
|
24
|
-
// 3. The same wizard effect re-fires when its ResizeObserver-driven
|
|
25
|
-
// `width` state updates (a tick or two after mount).
|
|
26
|
-
//
|
|
27
|
-
// Two animation frames takes us past (3); a small setTimeout fallback
|
|
28
|
-
// re-asserts focus in case layout thrashes again.
|
|
29
18
|
React.useEffect(() => {
|
|
30
19
|
if (data?.Name) {
|
|
31
20
|
return;
|
|
@@ -44,7 +33,6 @@ export const FormatColumnSettingsWizardSection = (props) => {
|
|
|
44
33
|
}, []);
|
|
45
34
|
const currentTarget = data.Target ? data.Target : 'cell';
|
|
46
35
|
const handleTargetChange = (target) => {
|
|
47
|
-
// Update the formatColumn object
|
|
48
36
|
props.onChange({
|
|
49
37
|
...data,
|
|
50
38
|
Target: target,
|
|
@@ -24,7 +24,6 @@ import { FormatColumnPreviewSummaryCard } from './FormatColumnPreview';
|
|
|
24
24
|
const adjustDisplayFormat = (fc, api) => {
|
|
25
25
|
const formatColumn = { ...fc };
|
|
26
26
|
let formatDataType = getFormatDisplayTypeForScope(formatColumn.Scope, api);
|
|
27
|
-
// Add RowScope and Target defaults for Format Columns that have been created in Initial State
|
|
28
27
|
if (!formatColumn.RowScope) {
|
|
29
28
|
formatColumn.RowScope = {
|
|
30
29
|
ExcludeDataRows: false,
|
|
@@ -37,16 +36,11 @@ const adjustDisplayFormat = (fc, api) => {
|
|
|
37
36
|
formatColumn.Target = 'cell';
|
|
38
37
|
}
|
|
39
38
|
if (formatColumn.Target === 'columnHeader') {
|
|
40
|
-
// Column Headers are always text
|
|
41
39
|
formatDataType = 'text';
|
|
42
40
|
}
|
|
43
41
|
if (!formatDataType && formatColumn.DisplayFormat) {
|
|
44
42
|
formatColumn.DisplayFormat = undefined;
|
|
45
43
|
}
|
|
46
|
-
// For shape-detection purposes a numeric preset name is equivalent to a
|
|
47
|
-
// NumberFormatter. We only need to materialise an object literal when
|
|
48
|
-
// there is no DisplayFormat at all (or the existing one targets a
|
|
49
|
-
// different Formatter type to the new scope).
|
|
50
44
|
const resolvedFormatter = isAdaptableNumericFormatPreset(formatColumn.DisplayFormat)
|
|
51
45
|
? 'NumberFormatter'
|
|
52
46
|
: formatColumn.DisplayFormat?.Formatter;
|
|
@@ -96,10 +90,6 @@ export function FormatColumnWizard(props) {
|
|
|
96
90
|
}, []);
|
|
97
91
|
const dispatch = useDispatch();
|
|
98
92
|
const handleFinish = () => {
|
|
99
|
-
// If the user opened the wizard, picked a Formatter type, but never
|
|
100
|
-
// touched any options (and didn't pick a preset), drop the empty
|
|
101
|
-
// DisplayFormat object so we don't persist an empty shell. Preset
|
|
102
|
-
// strings are always meaningful and should never be removed here.
|
|
103
93
|
const df = formatColumn?.DisplayFormat;
|
|
104
94
|
if (df && !isAdaptableNumericFormatPreset(df) && df.Options && isObjectEmpty(df.Options)) {
|
|
105
95
|
delete formatColumn.DisplayFormat;
|
|
@@ -3,7 +3,6 @@ import { useGridFilterExpressionEditor } from './useGridFilterExpressionEditor';
|
|
|
3
3
|
import { GridFilterPopupUI } from './GridFilterPopupUI';
|
|
4
4
|
export const GridFilterPopup = () => {
|
|
5
5
|
const hookData = useGridFilterExpressionEditor();
|
|
6
|
-
// Create callback handlers
|
|
7
6
|
const handleExpressionChange = (value) => {
|
|
8
7
|
hookData.setExpression(value);
|
|
9
8
|
};
|
|
@@ -45,7 +45,6 @@ export const useGridFilterExpressionEditor = () => {
|
|
|
45
45
|
columnId: col.columnId,
|
|
46
46
|
label: col.friendlyName,
|
|
47
47
|
onClick: () => {
|
|
48
|
-
// Bogdan - im sure there is a better way to do this check with fancy operators i dont know
|
|
49
48
|
const newExp = StringExtensions.IsNotNullOrEmpty(expression) ? expression : '';
|
|
50
49
|
setExpression(newExp + `[${col.columnId}]`);
|
|
51
50
|
},
|
|
@@ -58,7 +57,6 @@ export const useGridFilterExpressionEditor = () => {
|
|
|
58
57
|
const runQuery = (newExpression = expression) => {
|
|
59
58
|
if (StringExtensions.IsNullOrEmpty(newExpression) &&
|
|
60
59
|
StringExtensions.IsNotNullOrEmpty(gridFilter?.Expression)) {
|
|
61
|
-
// user pressed enter key with an empty input => clear existing expression
|
|
62
60
|
adaptable.api.filterApi.gridFilterApi.setGridFilterExpression('');
|
|
63
61
|
return;
|
|
64
62
|
}
|