@adaptabletools/adaptable-cjs 23.0.4 → 23.0.5-canary.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/agGrid.js +0 -31
- 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.js +0 -26
- 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/groupingMap.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/Buttons/EntityListActionButtons.js +0 -1
- 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/ColumnFilterMenu.js +0 -1
- 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 +0 -6
- package/src/components/AdaptableFormComponent/AdaptableFormComponent.js +1 -73
- 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/SelectableList/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.cjs.tsbuildinfo +1 -1
- package/src/Utilities/Services/Interface/IMetamodelService.d.ts +0 -20
- package/src/Utilities/Services/Interface/IMetamodelService.js +0 -2
- package/src/Utilities/Services/MetamodelService.d.ts +0 -17
- package/src/Utilities/Services/MetamodelService.js +0 -167
- package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/AdaptableOptionsForm.d.ts +0 -6
- package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/AdaptableOptionsForm.js +0 -104
- package/src/metamodel/adaptable-metamodel-model.d.ts +0 -26
- package/src/metamodel/adaptable-metamodel-model.js +0 -2
- package/src/metamodel/adaptable.metamodel.d.ts +0 -6244
- package/src/metamodel/adaptable.metamodel.js +0 -1
|
@@ -25,16 +25,6 @@ const DEFAULT_ZERO_CENTRED_COLORS = {
|
|
|
25
25
|
PositiveColor: 'rgba(40, 167, 69, 0.55)',
|
|
26
26
|
};
|
|
27
27
|
const hasConfiguredRanges = (ranges) => (ranges?.length ?? 0) > 0;
|
|
28
|
-
/**
|
|
29
|
-
* Decide which range tab should be active given the current props.
|
|
30
|
-
*
|
|
31
|
-
* Precedence:
|
|
32
|
-
* 1. `columnComparison` set → Column Comparison tab
|
|
33
|
-
* 2. Zero Centred set + supported → Zero Centred tab
|
|
34
|
-
* 3. `allowEmptyRanges` + no bands → No Ranges tab
|
|
35
|
-
* 4. `rangeValueType === 'Percentage'` → Percentage Range tab
|
|
36
|
-
* 5. otherwise → Number Range tab (default for new styles)
|
|
37
|
-
*/
|
|
38
28
|
function deriveInitialRangesType(props) {
|
|
39
29
|
if (props.columnComparison) {
|
|
40
30
|
return 'ColumnComparison';
|
|
@@ -47,14 +37,6 @@ function deriveInitialRangesType(props) {
|
|
|
47
37
|
}
|
|
48
38
|
return props.rangeValueType === 'Percentage' ? 'PercentageRange' : 'NumberRange';
|
|
49
39
|
}
|
|
50
|
-
/**
|
|
51
|
-
* A single Column Comparison bound (Min or Max). The user picks whether the
|
|
52
|
-
* bound is a fixed `Value` (a number applied to every row) or a `Column`
|
|
53
|
-
* (read from another column and evaluated per row). The underlying
|
|
54
|
-
* `ColumnComparison.MinValue`/`MaxValue` stays a `number | string` — number =>
|
|
55
|
-
* fixed value, non-numeric string => columnId — so the type is derived from the
|
|
56
|
-
* stored value via `isNaN`, mirroring how the runtime resolver discriminates it.
|
|
57
|
-
*/
|
|
58
40
|
const ColumnComparisonBoundInput = ({ value, disabled, onChange }) => {
|
|
59
41
|
const [type, setType] = React.useState(value != null && value !== '' && isNaN(Number(value)) ? 'column' : 'value');
|
|
60
42
|
const typeOptions = [
|
|
@@ -68,22 +50,12 @@ const ColumnComparisonBoundInput = ({ value, disabled, onChange }) => {
|
|
|
68
50
|
},
|
|
69
51
|
];
|
|
70
52
|
const editor = type === 'value' ? ((0, jsx_runtime_1.jsx)(NumberInput_1.NumberInput, { className: "twa:w-full", disabled: disabled, type: "number", value: value != null && !isNaN(Number(value)) ? Number(value) : '', onChange: (v) => onChange(v) })) : ((0, jsx_runtime_1.jsx)(ColumnSelector_1.ColumnSelector, { disabled: disabled, type: "number", value: value != null && isNaN(Number(value)) ? String(value) : undefined, onChange: (columnId) => onChange(columnId || undefined) }));
|
|
71
|
-
// The select trigger, the `NumberInput` (`.ab-Input`) and the `ColumnSelector`
|
|
72
|
-
// (a Combobox that does NOT forward `className`, rendering its border on a
|
|
73
|
-
// `[data-slot="input-group"]` wrapper) all hard-code `rounded-input`, so the
|
|
74
|
-
// InputGroup CSS-variable joining has no effect. We flatten the touching
|
|
75
|
-
// corners directly (important, to beat `rounded-input`) and overlap the shared
|
|
76
|
-
// border via `-ml-px` so the two controls read as a single block. The editor
|
|
77
|
-
// side targets both inner border elements through descendant arbitrary
|
|
78
|
-
// variants and forces them to fill the flex item.
|
|
79
53
|
const editorWrapperClassName = [
|
|
80
54
|
'twa:flex-1 twa:basis-0 twa:min-w-0 twa:-ml-px',
|
|
81
55
|
'twa:[&_.ab-Input]:w-full twa:[&_.ab-Input]:rounded-l-none!',
|
|
82
56
|
'twa:[&_[data-slot=input-group]]:w-full! twa:[&_[data-slot=input-group]]:rounded-l-none!',
|
|
83
57
|
].join(' ');
|
|
84
58
|
return ((0, jsx_runtime_1.jsxs)(InputGroup_1.InputGroup, { Component: Flex_1.Flex, className: "twa:items-stretch twa:max-w-[20rem]", children: [(0, jsx_runtime_1.jsx)(NewSelect_1.SingleSelect, { className: "twa:w-[120px] twa:max-w-none twa:shrink-0 twa:box-border twa:rounded-r-none!", disabled: disabled, value: type, items: typeOptions, onValueChange: (next) => {
|
|
85
|
-
// Switching type clears the stale bound so a fixed number can never
|
|
86
|
-
// be misread as a columnId (or vice versa).
|
|
87
59
|
onChange(undefined);
|
|
88
60
|
setType(next);
|
|
89
61
|
} }), (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: editorWrapperClassName, children: editor })] }));
|
|
@@ -97,14 +69,8 @@ class RangesComponent extends React.Component {
|
|
|
97
69
|
let comparisonColor = this.props.columnComparison != null && this.props.columnComparison.Color != null
|
|
98
70
|
? this.props.columnComparison.Color
|
|
99
71
|
: undefined;
|
|
100
|
-
// Number / Percentage is now expressed at the tab level (Number Range tab
|
|
101
|
-
// vs Percentage Range tab) instead of an inline radio. The inner content
|
|
102
|
-
// is shared between the two range tabs and parameterised on this flag.
|
|
103
72
|
const isRangeValueTypeNumber = this.state.rangesType === 'NumberRange';
|
|
104
73
|
const renderNoneContent = () => ((0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:text-2 twa:opacity-70 twa:py-2 twa:max-w-[520px]", children: "No coloured bands configured" }));
|
|
105
|
-
// Columns: Min, Max, Colour, [Reverse Gradient], Delete. Using one shared
|
|
106
|
-
// grid (rows are `display: contents`) keeps every band's cells aligned and
|
|
107
|
-
// spacing uniform via grid gaps, even with a single row.
|
|
108
74
|
const rangeGridTemplateColumns = [
|
|
109
75
|
'max-content',
|
|
110
76
|
'max-content',
|
|
@@ -156,20 +122,14 @@ class RangesComponent extends React.Component {
|
|
|
156
122
|
const isComparison = !!this.props.columnComparison;
|
|
157
123
|
const wasZc = !!prevProps.zeroCentred;
|
|
158
124
|
const isZc = !!this.props.zeroCentred;
|
|
159
|
-
// External mutations to columnComparison drive the tab.
|
|
160
125
|
if (wasComparison !== isComparison) {
|
|
161
126
|
this.setState({ rangesType: deriveInitialRangesType(this.props) });
|
|
162
127
|
return;
|
|
163
128
|
}
|
|
164
|
-
// External mutations to zeroCentred drive the tab (when not in CC mode).
|
|
165
129
|
if (!isComparison && wasZc !== isZc) {
|
|
166
130
|
this.setState({ rangesType: deriveInitialRangesType(this.props) });
|
|
167
131
|
return;
|
|
168
132
|
}
|
|
169
|
-
// External flips of RangeValueType while the user is sitting on a range
|
|
170
|
-
// tab — keep the active tab in sync. We deliberately do NOT react when the
|
|
171
|
-
// user is on Zero Centred / Column Comparison tabs (parent code can still
|
|
172
|
-
// set RangeValueType: 'Number' as part of those flows).
|
|
173
133
|
if ((this.state.rangesType === 'NumberRange' || this.state.rangesType === 'PercentageRange') &&
|
|
174
134
|
prevProps.rangeValueType !== this.props.rangeValueType) {
|
|
175
135
|
this.setState({
|
|
@@ -214,9 +174,6 @@ class RangesComponent extends React.Component {
|
|
|
214
174
|
this.props.onApplyZeroCentred?.(this.props.zeroCentred ?? DEFAULT_ZERO_CENTRED_COLORS);
|
|
215
175
|
return;
|
|
216
176
|
}
|
|
217
|
-
// Switching to a range tab — let the parent reseed CellRanges + the right
|
|
218
|
-
// RangeValueType (and clear ColumnComparison / ZeroCentred). Tab switches
|
|
219
|
-
// wipe any previously configured ranges by design.
|
|
220
177
|
this.props.onRangeValueTypeChange(value === 'PercentageRange' ? 'Percentage' : 'Number');
|
|
221
178
|
}
|
|
222
179
|
changeRangeMin(index, value) {
|
|
@@ -256,7 +213,6 @@ class RangesComponent extends React.Component {
|
|
|
256
213
|
removeRange(index) {
|
|
257
214
|
let ranges = [...this.props.ranges];
|
|
258
215
|
ranges.splice(index, 1);
|
|
259
|
-
// Max 100 is always disabled, this prevents from having a Max range lower than 100
|
|
260
216
|
if (this.props.rangeValueType === 'Percentage' && ranges.length === 1) {
|
|
261
217
|
ranges[0] = {
|
|
262
218
|
...ranges[0],
|
|
@@ -292,13 +248,6 @@ class RangesComponent extends React.Component {
|
|
|
292
248
|
this.props.updateRanges(newRanges);
|
|
293
249
|
}
|
|
294
250
|
addRange() {
|
|
295
|
-
// Most callers seed `ranges` with at least one entry, but Range Bar
|
|
296
|
-
// legitimately leaves `CellRanges` undefined (bands are optional). Handle
|
|
297
|
-
// both cases so the "Add Range" button always works.
|
|
298
|
-
//
|
|
299
|
-
// When starting from empty we seed TWO bands split at the midpoint — a
|
|
300
|
-
// single full-width band would just look like a back colour and wouldn't
|
|
301
|
-
// communicate the "qualitative scale" idea bands are intended for.
|
|
302
251
|
const existingRanges = this.props.ranges ?? [];
|
|
303
252
|
if (existingRanges.length === 0) {
|
|
304
253
|
const isPercentage = this.props.rangeValueType === 'Percentage';
|
|
@@ -330,8 +279,6 @@ class RangesComponent extends React.Component {
|
|
|
330
279
|
this.props.updateRanges(seedRanges);
|
|
331
280
|
return;
|
|
332
281
|
}
|
|
333
|
-
// Splitting a single full-width band at the midpoint is easier to reason
|
|
334
|
-
// about than anchoring the break at the column maximum (e.g. tradeId 1–200 → 100).
|
|
335
282
|
if (existingRanges.length === 1) {
|
|
336
283
|
const splitAtMidpoint = this.splitFullSpanRangeAtMidpoint(existingRanges[0]);
|
|
337
284
|
if (splitAtMidpoint) {
|
|
@@ -360,10 +307,6 @@ class RangesComponent extends React.Component {
|
|
|
360
307
|
const newRanges = [...existingRanges.slice(0, -1), previousRange, newRange];
|
|
361
308
|
this.props.updateRanges(newRanges);
|
|
362
309
|
}
|
|
363
|
-
/**
|
|
364
|
-
* When there is exactly one band spanning the full scale (Col-Min→Col-Max or
|
|
365
|
-
* 0→100), split at the midpoint instead of at the column maximum.
|
|
366
|
-
*/
|
|
367
310
|
splitFullSpanRangeAtMidpoint(onlyRange) {
|
|
368
311
|
const isPercentage = this.props.rangeValueType === 'Percentage';
|
|
369
312
|
if (isPercentage) {
|
|
@@ -20,9 +20,6 @@ const BulkUpdateValueSelector = (props) => {
|
|
|
20
20
|
const columnDataType = props.selectedColumn?.dataType;
|
|
21
21
|
const isDateType = props.selectedColumn && columnDataType === 'date';
|
|
22
22
|
const columnId = props.selectedColumn?.columnId;
|
|
23
|
-
// TODO = this seems to be called whenever we edit a cell
|
|
24
|
-
// which is then triggering a get all values
|
|
25
|
-
// not sure that we need to
|
|
26
23
|
const permittedValueSelector = ((0, jsx_runtime_1.jsx)(Flex_1.Box, { className: 'twa:flex-1', children: (0, jsx_runtime_1.jsx)(PermittedValuesSelector_1.PermittedValuesSelector, { allowNewValues: true, searchable: 'inline', disabled: props.disabled || !props.selectedColumn, value: props.selectedColumnValue === '' ? null : props.selectedColumnValue, columnId: columnId, placeholder: 'Select value', loadValues: (0, react_1.useCallback)(({ currentSearchValue }) => {
|
|
27
24
|
if (!columnId || !props.selectedGridCells.length) {
|
|
28
25
|
return Promise.resolve([]);
|
|
@@ -41,9 +41,7 @@ const PermittedValuesSelector = function (props) {
|
|
|
41
41
|
return currentSearchValue;
|
|
42
42
|
},
|
|
43
43
|
});
|
|
44
|
-
const distinctColumnValues = await (0, runIfNotResolvedIn_1.runIfNotResolvedIn)(
|
|
45
|
-
// we are here ALWAYS getting Filter values but sometimes we want to get other things!!!
|
|
46
|
-
p, () => {
|
|
44
|
+
const distinctColumnValues = await (0, runIfNotResolvedIn_1.runIfNotResolvedIn)(p, () => {
|
|
47
45
|
setIsLoading(true);
|
|
48
46
|
});
|
|
49
47
|
setSearchValueWasUsedWhenFiltering(searchValueUsedInFilterValue);
|
|
@@ -54,7 +52,6 @@ const PermittedValuesSelector = function (props) {
|
|
|
54
52
|
const isCreatable = (props.allowNewValues && !dataType) || ['text', 'number'].includes(dataType);
|
|
55
53
|
const handleSingleValueChange = (value) => {
|
|
56
54
|
if (isCreatable) {
|
|
57
|
-
// try to convert to correct type, when there is not type, e.g. field
|
|
58
55
|
if (!dataType && typeof value === 'string' && !isNaN(parseFloat(value))) {
|
|
59
56
|
props.onChange(parseFloat(value));
|
|
60
57
|
}
|
|
@@ -86,7 +83,6 @@ const PermittedValuesSelector = function (props) {
|
|
|
86
83
|
}
|
|
87
84
|
};
|
|
88
85
|
const handleOnChange = (value) => {
|
|
89
|
-
// convert numbers
|
|
90
86
|
if (props.isMulti) {
|
|
91
87
|
handleMultiValueChange(value);
|
|
92
88
|
}
|
|
@@ -124,7 +120,6 @@ const PermittedValuesSelector = function (props) {
|
|
|
124
120
|
virtualized: true,
|
|
125
121
|
resizable: true,
|
|
126
122
|
showClear: true,
|
|
127
|
-
// showClear: false,
|
|
128
123
|
onFocus: props.onFocus,
|
|
129
124
|
onBlur: props.onBlur,
|
|
130
125
|
};
|
|
@@ -29,12 +29,10 @@ const AdaptableToolPanelComponent = (props) => {
|
|
|
29
29
|
const toolPanelOptions = adaptableOptions.toolPanelOptions;
|
|
30
30
|
const settingsPanelOptions = adaptableOptions.settingsPanelOptions;
|
|
31
31
|
if (props.api.entitlementApi.isModuleHiddenEntitlement('ToolPanel')) {
|
|
32
|
-
// do NOT show any toolPanel content if the required entitlements are missing
|
|
33
32
|
return (0, jsx_runtime_1.jsx)(HelpBlock_1.default, { className: "twa:my-2 twa:p-2 twa:text-3", children: "Not enough rights" });
|
|
34
33
|
}
|
|
35
34
|
const availableModuleItems = props.MainMenuItems.filter((menuItem) => menuItem.isVisible);
|
|
36
35
|
const availableModules = availableModuleItems.map((menuItem) => menuItem.category);
|
|
37
|
-
// 'Dashboard' is a special case because it's not available in the dashboard menu items, s we have to add it manually
|
|
38
36
|
if (!props.api.entitlementApi.isModuleHiddenEntitlement('Dashboard')) {
|
|
39
37
|
availableModules.push('Dashboard');
|
|
40
38
|
}
|
|
@@ -62,15 +60,12 @@ const AdaptableToolPanelComponent = (props) => {
|
|
|
62
60
|
const visibleToolPanels = [];
|
|
63
61
|
const visibleToolPanelControls = (props.ToolPanels ?? []).map((toolPanelDefinition) => {
|
|
64
62
|
const visibilityMode = toolPanelDefinition.VisibilityMode ?? 'collapsed';
|
|
65
|
-
// 1. check if it is a custom toolPanel
|
|
66
63
|
const customToolPanel = props.api.toolPanelApi.getCustomToolPanelByName(toolPanelDefinition.Name);
|
|
67
64
|
if (customToolPanel) {
|
|
68
65
|
visibleToolPanels.push(customToolPanel.name);
|
|
69
66
|
return ((0, jsx_runtime_1.jsx)(ToolPanelWrapper_1.ToolPanelWrapper, { customToolPanel: customToolPanel, visibilityMode: visibilityMode, onVisibilityModeChange: (state) => onStateChange(customToolPanel.name, state) }, customToolPanel.name));
|
|
70
67
|
}
|
|
71
|
-
// 2. check if it's an available module toolPanel
|
|
72
68
|
if (availableModuleToolPanels.some((module) => module === toolPanelDefinition.Name)) {
|
|
73
|
-
// assertion is safe as if just checked it in the if clause
|
|
74
69
|
const moduleToolPanel = toolPanelDefinition.Name;
|
|
75
70
|
visibleToolPanels.push(moduleToolPanel);
|
|
76
71
|
return ((0, jsx_runtime_1.jsx)(ToolPanelWrapper_1.ToolPanelWrapper, { adaptableToolPanel: moduleToolPanel, visibilityMode: visibilityMode, onVisibilityModeChange: (state) => onStateChange(moduleToolPanel, state) }, moduleToolPanel));
|
|
@@ -99,17 +94,14 @@ const AdaptableToolPanelComponent = (props) => {
|
|
|
99
94
|
label: ((0, jsx_runtime_1.jsx)(CheckBox_1.CheckBox, { className: "ab-dd-checkbox twa:my-0", value: toolPanel, checked: isVisible, onMouseDown: preventDefault, children: toolPanel }, toolPanel)),
|
|
100
95
|
};
|
|
101
96
|
};
|
|
102
|
-
// 1. process custom tool panels
|
|
103
97
|
props.api.toolPanelApi.getCustomToolPanels().forEach((customToolPanel) => {
|
|
104
98
|
const customToolPanelName = customToolPanel.name;
|
|
105
99
|
toolpanelItems.push(buildDropdownButtonItem(customToolPanelName, customToolPanelName, isItemVisible(customToolPanelName)));
|
|
106
100
|
});
|
|
107
|
-
// 2. process module tool panels
|
|
108
101
|
availableModuleToolPanels.forEach((toolPanel) => {
|
|
109
102
|
let moduleName = moduleService.getModuleInfoByModule(toolPanel).FriendlyName;
|
|
110
103
|
toolpanelItems.push(buildDropdownButtonItem(toolPanel, moduleName, isItemVisible(toolPanel)));
|
|
111
104
|
});
|
|
112
|
-
// 3. sort the dropdown items alphabetically
|
|
113
105
|
toolpanelItems.sort((first, second) => {
|
|
114
106
|
if (first.label < second.label) {
|
|
115
107
|
return -1;
|
|
@@ -166,13 +158,7 @@ const AdaptableToolPanelComponent = (props) => {
|
|
|
166
158
|
} }));
|
|
167
159
|
};
|
|
168
160
|
const toolPanelButtons = renderToolPanelButtons();
|
|
169
|
-
return ((0, jsx_runtime_1.jsxs)(Flex_1.Flex
|
|
170
|
-
// the inner-width is smaller
|
|
171
|
-
// minWidth: 'var(--ab-cmp-toolpanel__width)',
|
|
172
|
-
, {
|
|
173
|
-
// the inner-width is smaller
|
|
174
|
-
// minWidth: 'var(--ab-cmp-toolpanel__width)',
|
|
175
|
-
className: "ab-ToolPanel twa:p-2 twa:w-full", "data-name": "adaptable-tool-panel", flexDirection: "column", justifyContent: "center", children: [(0, jsx_runtime_1.jsxs)(Flex_1.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) && ((0, jsx_runtime_1.jsx)(Flex_1.Flex, { className: "ab-ToolPanel__header__buttons twa:p-1 twa:justify-start", flexDirection: "row", flexWrap: "wrap", children: renderCustomToolPanelButtons() })), visibleToolPanelControls] }));
|
|
161
|
+
return ((0, jsx_runtime_1.jsxs)(Flex_1.Flex, { className: "ab-ToolPanel twa:p-2 twa:w-full", "data-name": "adaptable-tool-panel", flexDirection: "column", justifyContent: "center", children: [(0, jsx_runtime_1.jsxs)(Flex_1.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) && ((0, jsx_runtime_1.jsx)(Flex_1.Flex, { className: "ab-ToolPanel__header__buttons twa:p-1 twa:justify-start", flexDirection: "row", flexWrap: "wrap", children: renderCustomToolPanelButtons() })), visibleToolPanelControls] }));
|
|
176
162
|
};
|
|
177
163
|
function mapStateToProps(state) {
|
|
178
164
|
return {
|
|
@@ -214,10 +200,8 @@ const getAdaptableToolPanelAgGridComponent = (adaptable) => {
|
|
|
214
200
|
const api = adaptable.api;
|
|
215
201
|
this.gui = document.createElement('div');
|
|
216
202
|
this.gui.id = getContainerId();
|
|
217
|
-
// preserve AG Grid naming convention
|
|
218
203
|
this.gui.className = 'ag-adaptable-panel';
|
|
219
204
|
Object.keys(toolPanelContainerStyle).forEach((key) => {
|
|
220
|
-
//@ts-ignore
|
|
221
205
|
this.gui.style[key] = toolPanelContainerStyle[key];
|
|
222
206
|
});
|
|
223
207
|
this.unmountReactRoot = adaptable.renderReactRoot((0, renderWithAdaptableContext_1.renderWithAdaptableContext)((0, jsx_runtime_1.jsx)(exports.ConnectedAdaptableToolPanel, { api: api, teamSharingActivated: false }), adaptable), this.gui);
|
|
@@ -229,7 +213,6 @@ const getAdaptableToolPanelAgGridComponent = (adaptable) => {
|
|
|
229
213
|
return this.gui;
|
|
230
214
|
}
|
|
231
215
|
refresh() {
|
|
232
|
-
// no refresh logic needed
|
|
233
216
|
}
|
|
234
217
|
destroy() {
|
|
235
218
|
this.unmountReactRoot?.();
|
|
@@ -18,10 +18,6 @@ var ToolPanelConfigView;
|
|
|
18
18
|
})(ToolPanelConfigView || (exports.ToolPanelConfigView = ToolPanelConfigView = {}));
|
|
19
19
|
const ToolPanelPopupSections = (props) => {
|
|
20
20
|
const { api } = (0, AdaptableContext_1.useAdaptable)();
|
|
21
|
-
// Start with both cards collapsed so the user sees the popup's full
|
|
22
|
-
// summary at a glance and explicitly chooses which to edit. `initialTab`
|
|
23
|
-
// is still accepted on the props for backwards compatibility but no
|
|
24
|
-
// longer pre-expands a card.
|
|
25
21
|
const { bindCard, hasExpandedCard, expandedFillsSpace } = (0, CollapsibleWizardCard_1.useWizardCardAccordion)(null);
|
|
26
22
|
const selectedModuleButtons = [];
|
|
27
23
|
if (ArrayExtensions_1.default.IsNotNullOrEmpty(props.ToolPanelState.ModuleButtons)) {
|
|
@@ -29,7 +29,6 @@ const ToolPanelWrapper = (props) => {
|
|
|
29
29
|
];
|
|
30
30
|
}
|
|
31
31
|
else {
|
|
32
|
-
// custom toolPanel
|
|
33
32
|
return [
|
|
34
33
|
customToolPanel.name,
|
|
35
34
|
customToolPanel?.title ?? customToolPanel.name,
|
|
@@ -39,9 +38,7 @@ const ToolPanelWrapper = (props) => {
|
|
|
39
38
|
};
|
|
40
39
|
const [toolPanelName, toolPanelHeader, toolPanelContent, moduleInfo] = getToolPanelConfiguration();
|
|
41
40
|
const isMinimised = visibilityMode === 'collapsed';
|
|
42
|
-
const isConfigurable =
|
|
43
|
-
// only module toolPanels are configurable
|
|
44
|
-
!!moduleInfo && toolPanelName !== 'OpenFin' && toolPanelName !== 'IPushPull';
|
|
41
|
+
const isConfigurable = !!moduleInfo && toolPanelName !== 'OpenFin' && toolPanelName !== 'IPushPull';
|
|
45
42
|
const isToolPanelModuleConfigurable = api.internalApi
|
|
46
43
|
.getModuleService()
|
|
47
44
|
.getModuleById(ModuleConstants_1.ToolPanelModuleId)
|
|
@@ -37,7 +37,6 @@ function useValuesMap({ options, value, toIdentifier, selectedMap, }) {
|
|
|
37
37
|
return { selectedMap: result, optionsMap };
|
|
38
38
|
}
|
|
39
39
|
const baseClassName = 'ab-ValueSelector';
|
|
40
|
-
/** Clicks on these targets must not toggle row selection (`toggleSelectionOnRowClick`). */
|
|
41
40
|
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';
|
|
42
41
|
const ROW_TOGGLE_SUPPRESS_MS = 150;
|
|
43
42
|
function ValueSelector(props) {
|
|
@@ -246,9 +245,6 @@ const renderSelectionSection = (props) => {
|
|
|
246
245
|
props.onClear();
|
|
247
246
|
}
|
|
248
247
|
}, children: "Select All" })), hideShowSelectedOnly ? null : ((0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:shrink-0 twa:text-2 twa:font-normal", children: props.showOnlySelectedCheckbox })), showFilterInput && filter ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [compactFilterUsesSpacer ? (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:flex-1 twa:min-w-0" }) : null, (0, jsx_runtime_1.jsx)(AdaptableFormControlTextClear_1.AdaptableFormControlTextClear, { value: searchInputValue ?? '', OnTextChange: setSearchInputValue ?? (() => undefined), placeholder: filterPlaceholder ?? 'Search...', className: compactFilterClass })] })) : null] })) : ((0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:flex twa:flex-col twa:gap-2 twa:py-2", children: (0, jsx_runtime_1.jsxs)(Flex_1.Box, { className: headerRowClassName, children: [singleSelect ? ((0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:flex twa:flex-row twa:text-3 twa:font-normal twa:items-center", children: (() => {
|
|
249
|
-
// For single-select we show the *name* of the selected option
|
|
250
|
-
// rather than a (1 of N) counter — useful when the list is
|
|
251
|
-
// long enough to scroll past the chosen row.
|
|
252
248
|
if (!value.length) {
|
|
253
249
|
return (0, jsx_runtime_1.jsx)("span", { className: "twa:opacity-70", children: "(none selected)" });
|
|
254
250
|
}
|
|
@@ -1,13 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.WIZARD_COLUMN_LIST_SEARCH_CLASS = exports.WIZARD_COLUMN_LIST_HEADER_CLASS = exports.WIZARD_COLUMN_LIST_OPTION_CLASS_RELAXED = exports.WIZARD_COLUMN_LIST_OPTION_CLASS_SINGLE_SELECT = exports.WIZARD_COLUMN_LIST_OPTION_CLASS = void 0;
|
|
4
|
-
/** ValueSelector row sizing — matches Visibility and Order list rows. */
|
|
5
4
|
exports.WIZARD_COLUMN_LIST_OPTION_CLASS = 'twa:!py-1 twa:!px-1.5';
|
|
6
|
-
/** Single-select column lists — ~50% taller than multi-select compact rows. */
|
|
7
5
|
exports.WIZARD_COLUMN_LIST_OPTION_CLASS_SINGLE_SELECT = 'twa:!py-1.5 twa:!px-1.5';
|
|
8
|
-
/** Taller rows when ultra-compact one-line cards are not required (e.g. Custom Sort wizard). */
|
|
9
6
|
exports.WIZARD_COLUMN_LIST_OPTION_CLASS_RELAXED = 'twa:!py-2 twa:!px-2';
|
|
10
|
-
/** Compact list header — spacing between Select All, Show Selected Only, and search. */
|
|
11
7
|
exports.WIZARD_COLUMN_LIST_HEADER_CLASS = 'twa:gap-4';
|
|
12
|
-
/** Narrow search field (matches Visibility list column width, not full card width). */
|
|
13
8
|
exports.WIZARD_COLUMN_LIST_SEARCH_CLASS = 'twa:w-[12rem] twa:shrink-0 twa:min-w-0';
|
|
@@ -10,7 +10,6 @@ const AdaptableFormComponent_1 = require("../../components/AdaptableFormComponen
|
|
|
10
10
|
const AdaptableForm_1 = require("../../AdaptableState/Common/AdaptableForm");
|
|
11
11
|
const CustomToolbarCmp = (props) => {
|
|
12
12
|
const { api } = (0, AdaptableContext_1.useAdaptable)();
|
|
13
|
-
// dummy object which is used to force a re-render of the toolbar
|
|
14
13
|
const [componentRevision, setComponentRevision] = (0, react_1.useState)(1);
|
|
15
14
|
const renderContentContainerId = api.dashboardApi.internalApi.getCustomToolbarRenderContainerId(props.customToolbar.name);
|
|
16
15
|
const renderContentContainerRef = (0, react_1.useRef)(null);
|
|
@@ -19,17 +18,9 @@ const CustomToolbarCmp = (props) => {
|
|
|
19
18
|
const componentContainerId = api.dashboardApi.internalApi.getCustomToolbarComponentContainerId(props.customToolbar.name);
|
|
20
19
|
const componentContainerRef = (0, react_1.useRef)(null);
|
|
21
20
|
const formContainerId = `${buttonsContainerId}-form`;
|
|
22
|
-
// Local form state for `customToolbar.toolbarForm`.
|
|
23
|
-
// Defaults are seeded from the form's field `defaultValue`s (if any) on
|
|
24
|
-
// first mount; subsequent definition swaps (different toolbar instance) are
|
|
25
|
-
// re-seeded too because the dependency includes the form definition.
|
|
26
21
|
const [toolbarFormData, setToolbarFormData] = (0, react_1.useState)(() => props.customToolbar.toolbarForm
|
|
27
22
|
? (0, AdaptableForm_1.getDefaultAdaptableFormData)(props.customToolbar.toolbarForm)
|
|
28
23
|
: {});
|
|
29
|
-
// Register a reset callback so `dashboardApi.resetCustomToolbarFormData(name)`
|
|
30
|
-
// can wipe this toolbar's state back to its declared defaults without
|
|
31
|
-
// forcing a re-mount. The unregister guard inside the internal API
|
|
32
|
-
// ensures a stale unmount can't clobber a fresh registration.
|
|
33
24
|
(0, react_1.useEffect)(() => {
|
|
34
25
|
if (!props.customToolbar.toolbarForm) {
|
|
35
26
|
return;
|
|
@@ -37,9 +28,6 @@ const CustomToolbarCmp = (props) => {
|
|
|
37
28
|
const resetter = () => {
|
|
38
29
|
const next = (0, AdaptableForm_1.getDefaultAdaptableFormData)(props.customToolbar.toolbarForm);
|
|
39
30
|
setToolbarFormData(next);
|
|
40
|
-
// Mirror the public form-change callback so consumer code (e.g. a
|
|
41
|
-
// grid-filter helper) can rebuild itself from the cleared data
|
|
42
|
-
// without re-implementing default-seeding.
|
|
43
31
|
if (props.customToolbar.onToolbarFormChange) {
|
|
44
32
|
props.customToolbar.onToolbarFormChange(next, buildToolbarFormContext(next));
|
|
45
33
|
}
|
|
@@ -48,8 +36,6 @@ const CustomToolbarCmp = (props) => {
|
|
|
48
36
|
return () => {
|
|
49
37
|
api.dashboardApi.internalApi.unregisterCustomToolbarFormResetter(props.customToolbar.name, resetter);
|
|
50
38
|
};
|
|
51
|
-
// We deliberately depend on the toolbar identity + form definition so
|
|
52
|
-
// that a re-render with the same toolbar doesn't churn the registration.
|
|
53
39
|
}, [api, props.customToolbar.name, props.customToolbar.toolbarForm]);
|
|
54
40
|
const buildToolbarFormContext = (data) => {
|
|
55
41
|
const baseCtx = {
|
|
@@ -58,9 +44,6 @@ const CustomToolbarCmp = (props) => {
|
|
|
58
44
|
formData: data,
|
|
59
45
|
...api.internalApi.buildBaseContext(),
|
|
60
46
|
};
|
|
61
|
-
// Validate against the same context the consumer will see, then attach
|
|
62
|
-
// the results so button hidden/disabled/onClick callbacks can gate on
|
|
63
|
-
// form validity (e.g. a "Submit" button disabled while invalid).
|
|
64
47
|
const formErrors = props.customToolbar.toolbarForm
|
|
65
48
|
? (0, AdaptableForm_1.validateAdaptableForm)(props.customToolbar.toolbarForm, data, baseCtx)
|
|
66
49
|
: {};
|
|
@@ -83,7 +66,6 @@ const CustomToolbarCmp = (props) => {
|
|
|
83
66
|
(0, react_1.useLayoutEffect)(() => {
|
|
84
67
|
const element = renderContentContainerRef.current;
|
|
85
68
|
const adaptableApi = api;
|
|
86
|
-
// cleanup runs in a separate effect, this way it's executed only once on unmount
|
|
87
69
|
return () => {
|
|
88
70
|
if (props.customToolbar.render) {
|
|
89
71
|
props.customToolbar.render({
|
|
@@ -119,13 +101,7 @@ const CustomToolbarCmp = (props) => {
|
|
|
119
101
|
...api.internalApi.buildBaseContext(),
|
|
120
102
|
};
|
|
121
103
|
return ((0, jsx_runtime_1.jsx)(AdaptableButton_1.AdaptableButtonView, { button: button, context: dashboardContext, api: api, defaults: AdaptableButton_1.ADAPTABLE_BUTTON_SURFACE_DEFAULTS.customToolbar, rerenderOnClick: false, style: { marginLeft: index ? 'var(--ab-base-space)' : 0 }, onAfterClick: () => setComponentRevision(componentRevision + 1) }, index));
|
|
122
|
-
}) })), props.customToolbar.toolbarForm && ((0, jsx_runtime_1.jsx)("div", { id: formContainerId, className: `ab-CustomToolbar__form ab-CustomToolbar--${props.customToolbar.name}`, style: { minHeight: 22 }, children: (0, jsx_runtime_1.jsx)(AdaptableFormComponent_1.AdaptableFormComponent
|
|
123
|
-
// ensure the form uses the inline (toolbar-friendly) layout even
|
|
124
|
-
// if the consumer forgot to set it explicitly
|
|
125
|
-
, {
|
|
126
|
-
// ensure the form uses the inline (toolbar-friendly) layout even
|
|
127
|
-
// if the consumer forgot to set it explicitly
|
|
128
|
-
formDef: { ...props.customToolbar.toolbarForm, layout: 'inline' }, data: toolbarFormData, displayTitle: false, api: api, context: buildToolbarFormContext(toolbarFormData), focusFirstButton: false, onChange: (newData) => {
|
|
104
|
+
}) })), props.customToolbar.toolbarForm && ((0, jsx_runtime_1.jsx)("div", { id: formContainerId, className: `ab-CustomToolbar__form ab-CustomToolbar--${props.customToolbar.name}`, style: { minHeight: 22 }, children: (0, jsx_runtime_1.jsx)(AdaptableFormComponent_1.AdaptableFormComponent, { formDef: { ...props.customToolbar.toolbarForm, layout: 'inline' }, data: toolbarFormData, displayTitle: false, api: api, context: buildToolbarFormContext(toolbarFormData), focusFirstButton: false, onChange: (newData) => {
|
|
129
105
|
setToolbarFormData(newData);
|
|
130
106
|
if (props.customToolbar.onToolbarFormChange) {
|
|
131
107
|
props.customToolbar.onToolbarFormChange(newData, buildToolbarFormContext(newData));
|
|
@@ -20,9 +20,6 @@ const DataImportWizard = (props) => {
|
|
|
20
20
|
const [rowData, setRowData] = React.useState(null);
|
|
21
21
|
const [file, setFile] = React.useState(null);
|
|
22
22
|
const [text, setText] = React.useState('');
|
|
23
|
-
// This needs to be called only when:
|
|
24
|
-
// - columnsMap changes
|
|
25
|
-
// - new data is loaded
|
|
26
23
|
const [importType, setImportType] = React.useState('file');
|
|
27
24
|
const primaryKey = adaptableApi.optionsApi.getPrimaryKey();
|
|
28
25
|
const hasDynamicallyAddedPrimaryKey = typeof dataImportOptions._getPrimaryKeyValue === 'function';
|
|
@@ -42,7 +39,6 @@ const DataImportWizard = (props) => {
|
|
|
42
39
|
rowData,
|
|
43
40
|
});
|
|
44
41
|
}
|
|
45
|
-
// by default just trim the keys
|
|
46
42
|
let processedRowData = {};
|
|
47
43
|
if (rowData) {
|
|
48
44
|
processedRowData = Object.keys(rowData).reduce((acc, key) => {
|
|
@@ -52,11 +48,9 @@ const DataImportWizard = (props) => {
|
|
|
52
48
|
}
|
|
53
49
|
return processedRowData;
|
|
54
50
|
};
|
|
55
|
-
// ---- COLUMNS ----
|
|
56
51
|
const [columnsMap, setColumnsMap] = React.useState(null);
|
|
57
52
|
const mappedRowDataToColumns = React.useMemo(() => {
|
|
58
53
|
return (rowData ?? []).map((row) => {
|
|
59
|
-
// pick only included columns, and need to map to abColumn.field
|
|
60
54
|
return columnsMap?.reduce((acc, colMap) => {
|
|
61
55
|
if (colMap.include && colMap.abColumn && colMap.abColumn.field) {
|
|
62
56
|
acc[colMap.abColumn.field] = row[colMap.field];
|
|
@@ -88,24 +82,19 @@ const DataImportWizard = (props) => {
|
|
|
88
82
|
const allAbColumns = adaptableApi.columnApi.getColumns();
|
|
89
83
|
const columnsMap = Array.from(fields).map((field) => {
|
|
90
84
|
const abColumn = allAbColumns.find((c) => {
|
|
91
|
-
// exact field match
|
|
92
85
|
if (c.field === field) {
|
|
93
86
|
return true;
|
|
94
87
|
}
|
|
95
|
-
// based on friendly name
|
|
96
88
|
const friendlyName = c.friendlyName;
|
|
97
89
|
if (typeof friendlyName !== 'string') {
|
|
98
90
|
return false;
|
|
99
91
|
}
|
|
100
|
-
// exact match
|
|
101
92
|
if (friendlyName === field) {
|
|
102
93
|
return true;
|
|
103
94
|
}
|
|
104
|
-
// match without case
|
|
105
95
|
if (friendlyName.toLowerCase() === field.toLowerCase()) {
|
|
106
96
|
return true;
|
|
107
97
|
}
|
|
108
|
-
// match without spaces and case, and special characters: ' ', '-', '_'
|
|
109
98
|
if (friendlyName.replace(/\s|-|_/g, '').toLowerCase() === field.toLowerCase()) {
|
|
110
99
|
return true;
|
|
111
100
|
}
|
|
@@ -130,12 +119,10 @@ const DataImportWizard = (props) => {
|
|
|
130
119
|
}, []);
|
|
131
120
|
const handleChangeImportType = React.useCallback((importType) => {
|
|
132
121
|
setImportType(importType);
|
|
133
|
-
// clear data
|
|
134
122
|
handleNewRowData(null);
|
|
135
123
|
setFile(null);
|
|
136
124
|
setText('');
|
|
137
125
|
}, []);
|
|
138
|
-
// ---- FILE HANDLERS ----
|
|
139
126
|
const fileHandlers = React.useMemo(() => {
|
|
140
127
|
const userDefinedHandlers = adaptableApi.optionsApi.getDataImportOptions()?.fileHandlers ?? [];
|
|
141
128
|
return [...userDefinedHandlers, ...systemFileHandlers_1.systemFileHandlers];
|
|
@@ -162,13 +149,10 @@ const DataImportWizard = (props) => {
|
|
|
162
149
|
}
|
|
163
150
|
}, [adaptable]);
|
|
164
151
|
const fileMessage = file ? ((0, jsx_runtime_1.jsxs)(HelpBlock_1.default, { className: "twa:mb-2", children: ["File ", (0, jsx_runtime_1.jsx)(Tag_1.Tag, { children: file.name }), " is ready to be imported."] })) : ((0, jsx_runtime_1.jsxs)(HelpBlock_1.default, { className: "twa:mb-2", children: ["Supported file types: ", supportedFileFormats] }));
|
|
165
|
-
// ---- TEXT IMPORT ----
|
|
166
152
|
const [textError, setTextError] = React.useState(null);
|
|
167
153
|
const handleTextChange = React.useCallback(async (text) => {
|
|
168
|
-
//
|
|
169
154
|
let textHandler = adaptableApi.optionsApi.getDataImportOptions()?.textHandler;
|
|
170
155
|
if (!textHandler) {
|
|
171
|
-
// regex to test for json
|
|
172
156
|
const jsonRegex = /^\s*[\[{]/;
|
|
173
157
|
if (text && jsonRegex.test(text)) {
|
|
174
158
|
textHandler = JSON.parse;
|
|
@@ -200,7 +184,6 @@ const DataImportWizard = (props) => {
|
|
|
200
184
|
}
|
|
201
185
|
}, []);
|
|
202
186
|
const textMessage = textError ?? (!rowData ? 'Paste your data here' : '');
|
|
203
|
-
// ---- VALIDATION ----
|
|
204
187
|
const errors = React.useMemo(() => {
|
|
205
188
|
if (!dataImportOptions?.validate) {
|
|
206
189
|
return null;
|
|
@@ -241,11 +224,7 @@ const DataImportWizard = (props) => {
|
|
|
241
224
|
},
|
|
242
225
|
details: 'Upload the data',
|
|
243
226
|
render: () => {
|
|
244
|
-
return ((0, jsx_runtime_1.jsx)(UploadSection_1.UploadSection, { importType: importType, onImportTypeChange: handleChangeImportType,
|
|
245
|
-
// FILE
|
|
246
|
-
readFile: readFile, supportedFileFormats: supportedFileFormats, fileMessage: fileMessage,
|
|
247
|
-
// TEXT
|
|
248
|
-
text: text, onTextChange: handleTextChange, textMessage: textMessage }));
|
|
227
|
+
return ((0, jsx_runtime_1.jsx)(UploadSection_1.UploadSection, { importType: importType, onImportTypeChange: handleChangeImportType, readFile: readFile, supportedFileFormats: supportedFileFormats, fileMessage: fileMessage, text: text, onTextChange: handleTextChange, textMessage: textMessage }));
|
|
249
228
|
},
|
|
250
229
|
},
|
|
251
230
|
{
|
|
@@ -19,7 +19,7 @@ const parseCSV = (content) => {
|
|
|
19
19
|
const item = {};
|
|
20
20
|
for (let j = 0; j < headers.length; j++) {
|
|
21
21
|
const value = values[j];
|
|
22
|
-
item[headers[j]] = value === '' || isNaN(Number(value)) ? value : Number(value);
|
|
22
|
+
item[headers[j]] = value === '' || isNaN(Number(value)) ? value : Number(value);
|
|
23
23
|
}
|
|
24
24
|
data.push(item);
|
|
25
25
|
}
|
|
@@ -10,7 +10,6 @@ const isValidFlashingCellRules = (flashingCell, api, context) => {
|
|
|
10
10
|
if (typeof isRuleValid === 'string') {
|
|
11
11
|
return isRuleValid;
|
|
12
12
|
}
|
|
13
|
-
// boolean expressions may also be saved as named queries
|
|
14
13
|
if (context.namedQuery != false) {
|
|
15
14
|
const isValidName = api.namedQueryApi.isValidNamedQuery(context.namedQuery);
|
|
16
15
|
if (!isValidName.valid) {
|