@adaptabletools/adaptable-cjs 23.0.4-canary.0 → 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
|
@@ -19,7 +19,6 @@ const calendar_1 = require("../ui/calendar");
|
|
|
19
19
|
const input_group_1 = require("../ui/input-group");
|
|
20
20
|
const NewSelect_1 = require("../NewSelect");
|
|
21
21
|
const twUtils_1 = require("../twUtils");
|
|
22
|
-
// ── Caption dropdown components (month/year) ──────────────────────────
|
|
23
22
|
const onCaptionKeyDown = (e) => {
|
|
24
23
|
if (e.key === 'Escape' || e.key === 'Enter') {
|
|
25
24
|
e.stopPropagation();
|
|
@@ -40,15 +39,10 @@ const captionComponents = {
|
|
|
40
39
|
YearsDropdown: DatepickerYearsDropdown,
|
|
41
40
|
MonthsDropdown: DatepickerMonthsDropdown,
|
|
42
41
|
};
|
|
43
|
-
// ── Main component ────────────────────────────────────────────────────
|
|
44
42
|
const END_MONTH = (0, date_fns_1.endOfYear)((0, date_fns_1.addYears)(new Date(), 10));
|
|
45
43
|
const START_MONTH = (0, date_fns_1.startOfYear)((0, date_fns_1.addYears)(new Date(), -50));
|
|
46
44
|
exports.Datepicker = React.forwardRef((props, ref) => {
|
|
47
|
-
const { dateProps, disabled, style, className, placeholder, showWeekNumber, showOutsideDays, datepickerButtons, showClearButton, autoFocus,
|
|
48
|
-
// openOnFocus,
|
|
49
|
-
onHide, value: _value, defaultValue: _defaultValue, onChange: _onChange,
|
|
50
|
-
// ...boxProps
|
|
51
|
-
} = props;
|
|
45
|
+
const { dateProps, disabled, style, className, placeholder, showWeekNumber, showOutsideDays, datepickerButtons, showClearButton, autoFocus, onHide, value: _value, defaultValue: _defaultValue, onChange: _onChange, } = props;
|
|
52
46
|
void _value;
|
|
53
47
|
void _defaultValue;
|
|
54
48
|
void _onChange;
|
|
@@ -67,14 +61,11 @@ exports.Datepicker = React.forwardRef((props, ref) => {
|
|
|
67
61
|
setMonth(next ?? new Date());
|
|
68
62
|
};
|
|
69
63
|
const inputValue = (0, DisplayFormatHelper_1.DateFormatter)(value, { Pattern: dateProps.format }) ?? '';
|
|
70
|
-
// ── DOM refs for focus ownership ────────────────────────────────
|
|
71
64
|
const triggerRef = React.useRef(null);
|
|
72
65
|
const popupRef = React.useRef(null);
|
|
73
66
|
const isInsideDatepicker = React.useCallback((node) => {
|
|
74
67
|
if (!node)
|
|
75
68
|
return false;
|
|
76
|
-
// Focus often lands on `body` briefly when a focused control unmounts (month nav).
|
|
77
|
-
// Treat as "still in session" so we don't close before focus settles.
|
|
78
69
|
if (node === document.body || node === document.documentElement) {
|
|
79
70
|
return true;
|
|
80
71
|
}
|
|
@@ -88,8 +79,6 @@ exports.Datepicker = React.forwardRef((props, ref) => {
|
|
|
88
79
|
if (root === node || root.contains(node)) {
|
|
89
80
|
return true;
|
|
90
81
|
}
|
|
91
|
-
// `popupRef` is on an inner div; Base UI may focus `PopoverPrimitive.Popup` / Positioner
|
|
92
|
-
// (ancestors of `root`). Those must still count as inside the datepicker.
|
|
93
82
|
if (node instanceof Element && root instanceof Element) {
|
|
94
83
|
let p = root.parentElement;
|
|
95
84
|
while (p) {
|
|
@@ -101,7 +90,6 @@ exports.Datepicker = React.forwardRef((props, ref) => {
|
|
|
101
90
|
}
|
|
102
91
|
return false;
|
|
103
92
|
}, []);
|
|
104
|
-
// ── Open / close ──────────────────────────────────────────────────
|
|
105
93
|
const [open, setOpen] = (0, react_1.useState)(false);
|
|
106
94
|
const closedAtRef = React.useRef(0);
|
|
107
95
|
const tabFromOverlayRef = React.useRef(false);
|
|
@@ -118,9 +106,6 @@ exports.Datepicker = React.forwardRef((props, ref) => {
|
|
|
118
106
|
onHide?.();
|
|
119
107
|
}
|
|
120
108
|
}, [datepickerContext, onHide]);
|
|
121
|
-
// Only honour explicit, unambiguous close reasons.
|
|
122
|
-
// focus-out / trigger-press are ignored — the document-level
|
|
123
|
-
// focusin listener below handles blur-to-close reliably.
|
|
124
109
|
const handleOpenChange = React.useCallback((next, eventDetails) => {
|
|
125
110
|
if (next) {
|
|
126
111
|
setPopoverOpen(true);
|
|
@@ -136,14 +121,11 @@ exports.Datepicker = React.forwardRef((props, ref) => {
|
|
|
136
121
|
return;
|
|
137
122
|
}
|
|
138
123
|
}, [setPopoverOpen]);
|
|
139
|
-
// Close when focus moves to something truly outside the datepicker (e.g. Tab away).
|
|
140
124
|
(0, react_1.useEffect)(() => {
|
|
141
125
|
if (!open)
|
|
142
126
|
return;
|
|
143
127
|
const onFocusIn = (e) => {
|
|
144
128
|
const target = e.target;
|
|
145
|
-
// When Tab was pressed inside the overlay and focus landed outside the
|
|
146
|
-
// popup (even on the trigger), close so the user can Tab away freely.
|
|
147
129
|
if (tabFromOverlayRef.current) {
|
|
148
130
|
const popup = popupRef.current;
|
|
149
131
|
if (popup && target && !popup.contains(target) && popup !== target) {
|
|
@@ -160,8 +142,6 @@ exports.Datepicker = React.forwardRef((props, ref) => {
|
|
|
160
142
|
document.addEventListener('focusin', onFocusIn);
|
|
161
143
|
return () => document.removeEventListener('focusin', onFocusIn);
|
|
162
144
|
}, [open, isInsideDatepicker, setPopoverOpen]);
|
|
163
|
-
// Move focus into the overlay when it opens (portal + positioner need a frame to settle).
|
|
164
|
-
// Skip when autoFocus is set — the Calendar will focus a day cell itself.
|
|
165
145
|
(0, react_1.useLayoutEffect)(() => {
|
|
166
146
|
if (!open || disabled || autoFocus) {
|
|
167
147
|
return;
|
|
@@ -171,7 +151,6 @@ exports.Datepicker = React.forwardRef((props, ref) => {
|
|
|
171
151
|
});
|
|
172
152
|
return () => cancelAnimationFrame(id);
|
|
173
153
|
}, [open, disabled, autoFocus]);
|
|
174
|
-
// ── Footer buttons ────────────────────────────────────────────────
|
|
175
154
|
const clearValue = () => updateValue(undefined);
|
|
176
155
|
const renderButton = (label, onClick) => ((0, jsx_runtime_1.jsx)(SimpleButton_1.default, { onClick: onClick, className: "twa:m-[2px]", children: label }));
|
|
177
156
|
const todayDate = new Date();
|
|
@@ -187,68 +166,23 @@ exports.Datepicker = React.forwardRef((props, ref) => {
|
|
|
187
166
|
'|': (0, jsx_runtime_1.jsx)("hr", { style: { width: '100%', height: 0, margin: 0, border: 'none' } }),
|
|
188
167
|
};
|
|
189
168
|
const footerButtons = datepickerButtons.map((buttonKey, index) => React.cloneElement(footerButtonsMap[buttonKey], { key: index }));
|
|
190
|
-
// ── Inline buttons (clear / calendar icon) ────────────────────────
|
|
191
169
|
const clearButton = showClearButton !== false ? ((0, jsx_runtime_1.jsx)(SimpleButton_1.default, { "data-name": "clear", variant: "text", tooltip: "Clear", iconSize: 20, className: "twa:p-0", icon: "close", onMouseDown: (e) => {
|
|
192
170
|
e.preventDefault();
|
|
193
|
-
// e.stopPropagation();
|
|
194
171
|
clearValue();
|
|
195
172
|
console.log('onMouseDown', e);
|
|
196
173
|
}, onClick: (e) => {
|
|
197
174
|
console.log('onClick', e);
|
|
198
175
|
e.stopPropagation();
|
|
199
|
-
// also clear on click, as the user may have "clicked" using enter
|
|
200
176
|
clearValue();
|
|
201
|
-
// and focus the input
|
|
202
177
|
triggerRef.current?.firstChild?.focus();
|
|
203
178
|
}, accessLevel: GeneralConstants_1.ACCESS_LEVEL_FULL })) : null;
|
|
204
179
|
const calendarButton = ((0, jsx_runtime_1.jsx)(SimpleButton_1.default, { disabled: disabled, variant: "text", icon: "calendar", tooltip: "Date", iconSize: 20, className: "twa:p-0", type: "button" }));
|
|
205
|
-
// ── Select-portal container (so month/year lists stay inside the popover) ──
|
|
206
180
|
const [selectPortalRoot, setSelectPortalRoot] = React.useState(null);
|
|
207
|
-
// Stable callback ref — avoids cleanup/re-call cycle that briefly nullifies popupRef.
|
|
208
181
|
const popupRefCallback = React.useCallback((el) => {
|
|
209
182
|
popupRef.current = el;
|
|
210
183
|
setSelectPortalRoot(el);
|
|
211
184
|
}, []);
|
|
212
|
-
|
|
213
|
-
return ((0, jsx_runtime_1.jsxs)(popover_1.Popover, { open: open, onOpenChange: handleOpenChange, children: [(0, jsx_runtime_1.jsx)(popover_1.PopoverTrigger, { nativeButton: false, render:
|
|
214
|
-
// <Flex
|
|
215
|
-
// {...boxProps}
|
|
216
|
-
// ref={triggerRef as React.Ref<HTMLDivElement>}
|
|
217
|
-
// flexDirection="row"
|
|
218
|
-
// alignItems="center"
|
|
219
|
-
// style={{
|
|
220
|
-
// borderRadius: style?.borderRadius,
|
|
221
|
-
// width: style?.width,
|
|
222
|
-
// maxWidth: style?.maxWidth,
|
|
223
|
-
// border: style?.border,
|
|
224
|
-
// }}
|
|
225
|
-
// className={cn(
|
|
226
|
-
// 'ab-Datepicker twa:focus-visible:outline-none twa:rounded-standard',
|
|
227
|
-
// // targetOwn.focusWithinOutline,
|
|
228
|
-
// // targetChildren.focusWithinOutline,
|
|
229
|
-
// className
|
|
230
|
-
// )}
|
|
231
|
-
// // onMouseDown={() => {
|
|
232
|
-
// // closedByTabOutRef.current = false;
|
|
233
|
-
// // }}
|
|
234
|
-
// // onFocusCapture={() => {
|
|
235
|
-
// // if (closedByTabOutRef.current) {
|
|
236
|
-
// // return;
|
|
237
|
-
// // }
|
|
238
|
-
// // if (!open && Date.now() - closedAtRef.current > 200) {
|
|
239
|
-
// // setPopoverOpen(true);
|
|
240
|
-
// // }
|
|
241
|
-
// // }}
|
|
242
|
-
// // onBlurCapture={(e: React.FocusEvent) => {
|
|
243
|
-
// // if (closedByTabOutRef.current) {
|
|
244
|
-
// // const related = e.relatedTarget as Node | null;
|
|
245
|
-
// // if (!triggerRef.current?.contains(related)) {
|
|
246
|
-
// // closedByTabOutRef.current = false;
|
|
247
|
-
// // }
|
|
248
|
-
// // }
|
|
249
|
-
// // }}
|
|
250
|
-
// />
|
|
251
|
-
(0, jsx_runtime_1.jsxs)(input_group_1.InputGroup, { ref: triggerRef, style: {
|
|
185
|
+
return ((0, jsx_runtime_1.jsxs)(popover_1.Popover, { open: open, onOpenChange: handleOpenChange, children: [(0, jsx_runtime_1.jsx)(popover_1.PopoverTrigger, { nativeButton: false, render: (0, jsx_runtime_1.jsxs)(input_group_1.InputGroup, { ref: triggerRef, style: {
|
|
252
186
|
borderRadius: style?.borderRadius,
|
|
253
187
|
width: style?.width,
|
|
254
188
|
maxWidth: style?.maxWidth,
|
|
@@ -259,34 +193,5 @@ exports.Datepicker = React.forwardRef((props, ref) => {
|
|
|
259
193
|
updateValue(date);
|
|
260
194
|
}
|
|
261
195
|
}, className: "twa:h-auto twa:min-w-0 twa:outline-none twa:min-h-auto twa:py-0 twa:flex-1 twa:rounded-none twa:border-0 twa:bg-transparent twa:shadow-none twa:ring-0 twa:focus-visible:ring-0 twa:dark:bg-transparent", style: style, disabled: disabled }), (0, jsx_runtime_1.jsxs)(input_group_1.InputGroupAddon, { align: "inline-end", children: [inputValue ? clearButton : null, calendarButton] })] }) }), (0, jsx_runtime_1.jsx)(popover_1.PopoverContent, { className: "twa:w-auto twa:p-0", align: "start", sideOffset: 8, children: (0, jsx_runtime_1.jsx)("div", { ref: popupRefCallback, tabIndex: -1, role: "region", "aria-label": "Calendar", className: (0, utils_1.cn)('twa:relative twa:isolate twa:overflow-visible twa:outline-none twa:rounded-standard', twUtils_1.targetOwn.focusWithinOutline), onKeyDown: () => {
|
|
262
|
-
// console.log('onKeyDown', e.key);
|
|
263
|
-
// return;
|
|
264
|
-
// if (e.key === 'Tab') {
|
|
265
|
-
// tabFromOverlayRef.current = true;
|
|
266
|
-
// requestAnimationFrame(() => {
|
|
267
|
-
// tabFromOverlayRef.current = false;
|
|
268
|
-
// });
|
|
269
|
-
// }
|
|
270
|
-
// if (
|
|
271
|
-
// (e.key === 'Enter' || e.key === ' ') &&
|
|
272
|
-
// e.target instanceof HTMLElement &&
|
|
273
|
-
// e.target.tagName === 'BUTTON' &&
|
|
274
|
-
// e.target.closest('nav')
|
|
275
|
-
// ) {
|
|
276
|
-
// const nav = e.target.closest('nav')!;
|
|
277
|
-
// const buttons = nav.querySelectorAll('button');
|
|
278
|
-
// const btnIndex = Array.from(buttons).indexOf(e.target as HTMLButtonElement);
|
|
279
|
-
// if (btnIndex >= 0) {
|
|
280
|
-
// requestAnimationFrame(() => {
|
|
281
|
-
// requestAnimationFrame(() => {
|
|
282
|
-
// const popup = popupRef.current;
|
|
283
|
-
// if (!popup) return;
|
|
284
|
-
// const newNav = popup.querySelector('nav');
|
|
285
|
-
// const newBtn = newNav?.querySelectorAll('button')[btnIndex];
|
|
286
|
-
// (newBtn as HTMLElement | undefined)?.focus({ preventScroll: true });
|
|
287
|
-
// });
|
|
288
|
-
// });
|
|
289
|
-
// }
|
|
290
|
-
// }
|
|
291
196
|
}, children: (0, jsx_runtime_1.jsx)(DatepickerSelectPortalContext.Provider, { value: selectPortalRoot, children: (0, jsx_runtime_1.jsx)(calendar_1.Calendar, { fixedWeeks: true, autoFocus: !!autoFocus, showWeekNumber: showWeekNumber, showOutsideDays: showOutsideDays, mode: "single", captionLayout: "dropdown", month: month && !isNaN(month.getTime()) ? month : new Date(), selected: value, onMonthChange: setMonth, onSelect: updateValue, startMonth: START_MONTH, endMonth: END_MONTH, locale: dateProps.locale, components: captionComponents, footer: (0, jsx_runtime_1.jsx)(Flex_1.Flex, { justifyContent: "space-between", className: "twa:mt-2", flexWrap: 'wrap', children: footerButtons }) }) }) }) })] }));
|
|
292
197
|
});
|
|
@@ -69,9 +69,7 @@ function ToolbarList({ toolbars, tabIndex, tabs, onTabsChange, onRemove, disable
|
|
|
69
69
|
});
|
|
70
70
|
return sources;
|
|
71
71
|
}, [dragScope, unusedListIds, tabIndex, tabs]);
|
|
72
|
-
return ((0, jsx_runtime_1.jsx)(dnd_1.DragList, { dragListId: scopedListId, orientation: orientation, acceptDropsFrom: [...acceptDropsFrom, scopedListId], onDragProxyMove: dnd_1.defaultDragProxyMove,
|
|
73
|
-
// this is called when reordering inside the same list
|
|
74
|
-
onDrop: (sortedIndexes) => {
|
|
72
|
+
return ((0, jsx_runtime_1.jsx)(dnd_1.DragList, { dragListId: scopedListId, orientation: orientation, acceptDropsFrom: [...acceptDropsFrom, scopedListId], onDragProxyMove: dnd_1.defaultDragProxyMove, onDrop: (sortedIndexes) => {
|
|
75
73
|
const newItems = sortedIndexes.map((i) => toolbars[i]);
|
|
76
74
|
onTabsChange(tabs.map((t, i) => (i === tabIndex ? { ...t, Items: newItems } : t)));
|
|
77
75
|
}, shouldAcceptDrop: ({ dragItem, dragSourceListId }) => {
|
|
@@ -81,9 +79,7 @@ function ToolbarList({ toolbars, tabIndex, tabs, onTabsChange, onRemove, disable
|
|
|
81
79
|
return true;
|
|
82
80
|
}
|
|
83
81
|
return !toolbars.includes(toolbarId);
|
|
84
|
-
},
|
|
85
|
-
// this is called when dropping an item from a different list
|
|
86
|
-
onAcceptDrop: ({ dragItemId, dropIndex }) => {
|
|
82
|
+
}, onAcceptDrop: ({ dragItemId, dropIndex }) => {
|
|
87
83
|
const toolbarId = (0, dragScope_1.unscopeDragId)(dragItemId);
|
|
88
84
|
onTabsChange(tabs.map((tab, i) => {
|
|
89
85
|
if (i !== tabIndex || tab.Items.includes(toolbarId)) {
|
|
@@ -10,24 +10,17 @@ const Drawer = (props) => {
|
|
|
10
10
|
});
|
|
11
11
|
const [show, setShow] = React.useState(props.open);
|
|
12
12
|
React.useEffect(() => {
|
|
13
|
-
// CLOSED -> OPEN
|
|
14
|
-
// SHOW Element, with closed class
|
|
15
|
-
// CHANGE class to opened
|
|
16
13
|
if (!isOpen && props.open) {
|
|
17
14
|
setShow(true);
|
|
18
15
|
requestAnimationFrame(() => {
|
|
19
16
|
setIsOpen(true);
|
|
20
17
|
});
|
|
21
18
|
}
|
|
22
|
-
// OPEN -> CLOSED
|
|
23
|
-
// CHANGE class to closed
|
|
24
|
-
// HIDE Element, when animation is finsihed
|
|
25
19
|
if (isOpen && !props.open) {
|
|
26
20
|
setIsOpen(false);
|
|
27
21
|
}
|
|
28
22
|
}, [props.open]);
|
|
29
23
|
const handleOnKeyDown = React.useCallback((event) => {
|
|
30
|
-
// escape
|
|
31
24
|
if (event.key === 'Escape') {
|
|
32
25
|
props.onOpenChange?.(false);
|
|
33
26
|
}
|
|
@@ -79,7 +79,6 @@ const Dropdown = (props) => {
|
|
|
79
79
|
if (!selectedOption) {
|
|
80
80
|
selectedText = placeholder;
|
|
81
81
|
}
|
|
82
|
-
//20 ... 20 16
|
|
83
82
|
const renderClearButton = () => ((0, jsx_runtime_1.jsx)(SimpleButton_1.default, { variant: "text", icon: "close", tone: "none", tooltip: "Clear", iconSize: 20, ...clearButtonProps, className: (0, twMerge_1.twMerge)('twa:p-0 twa:mr-1 twa:z-10 twa:color-inherit', clearButtonProps?.className), style: {
|
|
84
83
|
...(clearButtonProps ? clearButtonProps.style : null),
|
|
85
84
|
}, onClick: (e) => {
|
|
@@ -21,7 +21,6 @@ exports.NewDropdownButton = React.forwardRef((props, ref) => {
|
|
|
21
21
|
? item.tooltip.length
|
|
22
22
|
: 0), 0);
|
|
23
23
|
return ((0, jsx_runtime_1.jsxs)(dropdown_menu_1.DropdownMenu, { children: [tooltip ? (0, jsx_runtime_1.jsx)(NewTooltip_1.NewTooltip, { label: tooltip, children: trigger }) : trigger, (0, jsx_runtime_1.jsx)(dropdown_menu_1.DropdownMenuContent, { side: side, align: align, style: {
|
|
24
|
-
// minWidth: `min(max(${maxLabelLength + 5}ch, calc(var(--ab-base-space) * 32)),80vw)`,
|
|
25
24
|
width: `max(${maxLabelLength + (props.extraWidthChars ?? 3)}ch, calc(var(--ab-base-space) * 20), var(--anchor-width))`,
|
|
26
25
|
}, children: items.map((item, index) => {
|
|
27
26
|
if (item.separator) {
|
|
@@ -71,7 +71,6 @@ const FunctionsDropdown = ({ expressionFunctions, baseClassName }) => {
|
|
|
71
71
|
const groupedFunctions = React.useMemo(() => {
|
|
72
72
|
return Object.keys(expressionFunctions).reduce((acc, key) => {
|
|
73
73
|
const functionDef = expressionFunctions[key];
|
|
74
|
-
// filter
|
|
75
74
|
if (currentFunctionCategory !== 'all' && functionDef.category !== currentFunctionCategory) {
|
|
76
75
|
return acc;
|
|
77
76
|
}
|
|
@@ -115,11 +114,6 @@ const FunctionsDropdown = ({ expressionFunctions, baseClassName }) => {
|
|
|
115
114
|
setOverFunction(null);
|
|
116
115
|
};
|
|
117
116
|
const [searchInputValue, setSearchInputValue] = React.useState('');
|
|
118
|
-
/**
|
|
119
|
-
* Hide when:
|
|
120
|
-
* - mouse leaves
|
|
121
|
-
* - a function is inserted
|
|
122
|
-
*/
|
|
123
117
|
return ((0, jsx_runtime_1.jsx)(OverlayTrigger_1.default, { ref: dropdownRef, showEvent: "mouseenter", hideEvent: "mouseleave", targetOffset: 5, render: () => ((0, jsx_runtime_1.jsxs)(Flex_1.Flex, { className: `${baseClassName}__dropdown-functions-list-wrapper twa:max-w-[60vw] twa:shadow-md twa:bg-background twa:text-foreground twa:text-3 twa:rounded-standard twa:p-3`, flexDirection: "column", onMouseLeave: () => hidePopup(), children: [(0, jsx_runtime_1.jsx)(Flex_1.Flex, { className: "twa:md:gap-3 twa:gap-2 twa:pb-2 twa:md:justify-between twa:justify-start twa:flex-wrap twa:border-b twa:border-primarydark/30 twa:mb-2", children: categoryOptions.map((option, index) => {
|
|
124
118
|
return ((0, jsx_runtime_1.jsx)(Radio_1.default, { onFocus: (event) => {
|
|
125
119
|
event.preventDefault();
|
|
@@ -133,7 +127,6 @@ const FunctionsDropdown = ({ expressionFunctions, baseClassName }) => {
|
|
|
133
127
|
return (0, jsx_runtime_1.jsx)(React.Fragment, {}, groupName);
|
|
134
128
|
}
|
|
135
129
|
const getEditorButtonData = (functionName) => {
|
|
136
|
-
// handle special cases
|
|
137
130
|
if (functionName === 'CASE') {
|
|
138
131
|
return `CASE <caseValue> WHEN <whenValue> THEN <thenValue> ELSE <defaultValue> END`;
|
|
139
132
|
}
|
|
@@ -180,24 +173,20 @@ function BaseEditorInput(props) {
|
|
|
180
173
|
if (!firstRowNode || !firstRowNode.data) {
|
|
181
174
|
return {};
|
|
182
175
|
}
|
|
183
|
-
// clone the class instance to still keep the prototype methods
|
|
184
176
|
return Object.assign(Object.create(Object.getPrototypeOf(firstRowNode)), firstRowNode);
|
|
185
177
|
}, []);
|
|
186
178
|
const scopeColumnId = (0, react_1.useMemo)(() => {
|
|
187
179
|
return props.api.columnScopeApi.getAnyColumnIdForScope(props.columnScope);
|
|
188
180
|
}, [props.columnScope]);
|
|
189
181
|
try {
|
|
190
|
-
// explicitly parsing & evaluating the expression because we need full control of the resulted AST
|
|
191
182
|
const expr = parser.parse(props.value || '');
|
|
192
183
|
try {
|
|
193
184
|
testRowNode.data = testData;
|
|
194
|
-
// Mock datachangedevent for change-based functions e.g. PERCENT_CHANGE
|
|
195
185
|
const dataChangedEvent = {
|
|
196
186
|
newValue: 100,
|
|
197
187
|
oldValue: 150,
|
|
198
188
|
};
|
|
199
189
|
result = expr.evaluate({
|
|
200
|
-
// we need a fully-fledged rowNode as Adaptable accesses internal methods of it
|
|
201
190
|
node: testRowNode,
|
|
202
191
|
functions: expressionFunctions,
|
|
203
192
|
evaluateCustomQueryVariable: props.api.internalApi.getQueryLanguageService().evaluateCustomQueryVariable,
|
|
@@ -211,7 +200,6 @@ function BaseEditorInput(props) {
|
|
|
211
200
|
evaluationError = err;
|
|
212
201
|
}
|
|
213
202
|
else {
|
|
214
|
-
// unexpected error, pass it on to the enclosing handler
|
|
215
203
|
throw err;
|
|
216
204
|
}
|
|
217
205
|
}
|
|
@@ -219,7 +207,6 @@ function BaseEditorInput(props) {
|
|
|
219
207
|
selectedFunctionName = path[0] ? path[0].type : null;
|
|
220
208
|
}
|
|
221
209
|
catch (e) {
|
|
222
|
-
// parse errors should have a hash, otherwise it's an unexpected runtime error
|
|
223
210
|
const isParserException = !!e.hash;
|
|
224
211
|
if (isParserException) {
|
|
225
212
|
expressionError = buildParserExceptionMessage(e);
|
|
@@ -230,7 +217,6 @@ function BaseEditorInput(props) {
|
|
|
230
217
|
}
|
|
231
218
|
}
|
|
232
219
|
(0, react_1.useEffect)(() => {
|
|
233
|
-
// update selected function only for focused textareas (where cursor is present)
|
|
234
220
|
if (cursor != undefined) {
|
|
235
221
|
props.onSelectedFunctionChange(selectedFunctionName ? expressionFunctions[selectedFunctionName] : null);
|
|
236
222
|
}
|
|
@@ -239,8 +225,7 @@ function BaseEditorInput(props) {
|
|
|
239
225
|
.filter((editorButtonDef) => !!expressionFunctions[editorButtonDef.functionName])
|
|
240
226
|
.map((editorButtonDef) => ((0, jsx_runtime_1.jsx)(EditorButton_1.default, { data: editorButtonDef.data, icon: editorButtonDef.icon, children: !editorButtonDef.icon && (editorButtonDef.text || editorButtonDef.functionName) }, `${editorButtonDef.functionName}-operator`)));
|
|
241
227
|
const showDocumentationLink = props.api.internalApi.isDocumentationLinksDisplayed();
|
|
242
|
-
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)(Flex_1.Flex, { "data-name": "expression-toolbar", className: `${baseClassName} twa:py-2 twa:mb-2 twa:mt-2 twa:flex-wrap twa:w-full`, children: [(0, jsx_runtime_1.jsxs)(Flex_1.Flex, { className: "twa:flex-1 twa:ml-1 twa:flex-wrap", children: [(0, jsx_runtime_1.jsx)(FunctionsDropdown, { expressionFunctions: expressionFunctions, baseClassName: baseClassName }), operatorButtons] }), showDocumentationLink && ((0, jsx_runtime_1.jsx)(Flex_1.Flex, { alignItems: "flex-start", children: (0, jsx_runtime_1.jsx)(ButtonInfo_1.ButtonInfo, { className: "twa:mr-2", tooltip: 'Learn how to use the Expression Editor', onClick: () => window.open(DocumentationLinkConstants_1.ExpressionEditorDocsLink, '_blank') }) }))] }), (0, jsx_runtime_1.jsx)(Textarea_1.default, { "data-name": `expression-input-${type}`, ref: textAreaRefCallback, value: props.value || '', placeholder: props.placeholder || 'Create Query', disabled: props.disabled || false, className: (0, join_1.default)('ab-ExpressionEditor__textarea',
|
|
243
|
-
`${baseClassName}__textarea`, 'twa:w-full twa:min-h-[100px] twa:p-2 twa:text-4 twa:resize-y twa:font-mono'), autoFocus: true, spellCheck: "false", onChange: (event) => {
|
|
228
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)(Flex_1.Flex, { "data-name": "expression-toolbar", className: `${baseClassName} twa:py-2 twa:mb-2 twa:mt-2 twa:flex-wrap twa:w-full`, children: [(0, jsx_runtime_1.jsxs)(Flex_1.Flex, { className: "twa:flex-1 twa:ml-1 twa:flex-wrap", children: [(0, jsx_runtime_1.jsx)(FunctionsDropdown, { expressionFunctions: expressionFunctions, baseClassName: baseClassName }), operatorButtons] }), showDocumentationLink && ((0, jsx_runtime_1.jsx)(Flex_1.Flex, { alignItems: "flex-start", children: (0, jsx_runtime_1.jsx)(ButtonInfo_1.ButtonInfo, { className: "twa:mr-2", tooltip: 'Learn how to use the Expression Editor', onClick: () => window.open(DocumentationLinkConstants_1.ExpressionEditorDocsLink, '_blank') }) }))] }), (0, jsx_runtime_1.jsx)(Textarea_1.default, { "data-name": `expression-input-${type}`, ref: textAreaRefCallback, value: props.value || '', placeholder: props.placeholder || 'Create Query', disabled: props.disabled || false, className: (0, join_1.default)('ab-ExpressionEditor__textarea', `${baseClassName}__textarea`, 'twa:w-full twa:min-h-[100px] twa:p-2 twa:text-4 twa:resize-y twa:font-mono'), autoFocus: true, spellCheck: "false", onChange: (event) => {
|
|
244
229
|
props.onChange(event.target.value);
|
|
245
230
|
}, style: style }), props.isFullExpression !== true && ((0, jsx_runtime_1.jsxs)(HelpBlock_1.default, { className: "twa:my-2 twa:p-2 twa:text-3", children: ["This Expression must resolve to a ", (0, jsx_runtime_1.jsx)("b", { children: "boolean " }), "(i.e. true / false) value"] })), expressionError && ((0, jsx_runtime_1.jsx)(ErrorBox_1.default, { className: "twa:mt-2 twa:whitespace-pre-wrap twa:w-full", children: expressionError })), evaluationError && ((0, jsx_runtime_1.jsx)(ErrorBox_1.default, { className: "twa:mt-2 twa:whitespace-pre-wrap", children: `${evaluationError.expressionFnName} ${evaluationError.message}` })), !props.hideResultPreview && result !== undefined && ((0, jsx_runtime_1.jsx)(Flex_1.Box, { className: `${baseClassName}__editor-feedback twa:mt-2 twa:p-2 twa:rounded-standard`, "data-name": "expression-editor-feedback", children: (0, jsx_runtime_1.jsxs)("pre", { className: "twa:whitespace-pre-wrap twa:m-0", children: ["Result (using test data):", ' ', (0, jsx_runtime_1.jsx)("b", { className: "twa:bg-accentlight twa:text-accent twa:rounded-full twa:p-1 twa:px-2", children: JSON.stringify(result) })] }) }))] }));
|
|
246
231
|
}
|
|
@@ -11,7 +11,6 @@ function EditorButton(props) {
|
|
|
11
11
|
const { textAreaRef } = (0, EditorContext_1.useExpressionEditor)();
|
|
12
12
|
return ((0, jsx_runtime_1.jsx)(SimpleButton_1.default, { "data-name": 'operator-or-fn', variant: "text", draggable: true, onDragStart: (event) => {
|
|
13
13
|
if (!dragImage) {
|
|
14
|
-
// we want to lazy init the image since otherwise it fails in SSR environments if it is declared outside the cmp - ReferenceError: Image is not defined
|
|
15
14
|
dragImage = new Image(0, 0);
|
|
16
15
|
dragImage.src = DRAG_IMAGE_SRC;
|
|
17
16
|
}
|
|
@@ -17,15 +17,10 @@ function EditorInput(props) {
|
|
|
17
17
|
let filteredCollection = [];
|
|
18
18
|
if (type === 'aggregatedScalar') {
|
|
19
19
|
const excludeSet = new Set([
|
|
20
|
-
// we cannot have a hardcodede set of functions,
|
|
21
|
-
// we need to allow custom expressions
|
|
22
20
|
...aggregatedScalarExpressionFunctions_1.cumulativeAggregatedExpressionFunctions,
|
|
23
21
|
...aggregatedScalarExpressionFunctions_1.quantileAggregatedExpressionFunctions,
|
|
24
22
|
]);
|
|
25
|
-
filteredCollection = Object.keys(availableAggregatedExpressionFunctions).filter((key) =>
|
|
26
|
-
// need to allow standard ones
|
|
27
|
-
aggregatedScalarExpressionFunctions_1.cumulativeAggregatedExpressionFunctions.includes(key) ||
|
|
28
|
-
// and anything else that is not cumul or quantile
|
|
23
|
+
filteredCollection = Object.keys(availableAggregatedExpressionFunctions).filter((key) => aggregatedScalarExpressionFunctions_1.cumulativeAggregatedExpressionFunctions.includes(key) ||
|
|
29
24
|
!excludeSet.has(key));
|
|
30
25
|
}
|
|
31
26
|
else {
|
|
@@ -50,7 +45,6 @@ function EditorInput(props) {
|
|
|
50
45
|
...moduleExpressionFunctions.scalarFunctions,
|
|
51
46
|
};
|
|
52
47
|
if (!props.columnScope) {
|
|
53
|
-
// filter out $SCOPE function if no columnScope is provided
|
|
54
48
|
booleanAndScalarFunctions = Object.keys(booleanAndScalarFunctions)
|
|
55
49
|
.filter((key) => key !== '$SCOPE')
|
|
56
50
|
.reduce((obj, key) => {
|
|
@@ -51,7 +51,6 @@ function EditorInputWithWhereClause(props) {
|
|
|
51
51
|
return ((0, jsx_runtime_1.jsxs)(Flex_1.Flex, { flexDirection: "column", alignItems: "flex-start", children: [(0, jsx_runtime_1.jsx)(BaseEditorInput_1.BaseEditorInput, { type: 'main', value: reactiveValue || '', placeholder: `Create ${queryName}`, onChange: updateReactiveValue, onSelectedFunctionChange: setSelectedFunction, expressionFunctions: reactiveExpressionFns, editorButtons: props.type === 'observable' ? editorButtonsObservable_1.editorButtonsObservable : editorButtonsAggregatedBoolean_1.editorButtonsAggregatedBoolean, testData: props.testData, isFullExpression: true, hideResultPreview: true, api: props.api, style: { height: '75px' } }), (0, jsx_runtime_1.jsxs)(Flex_1.Box, { className: "twa:text-2 twa:mt-2 twa:pl-3", children: ["Add a ", (0, jsx_runtime_1.jsx)("i", { children: "WHERE" }), " Clause to narrow the scope of the Query"] }), (0, jsx_runtime_1.jsx)(CheckBox_1.CheckBox, { disabled: (0, StringExtensions_1.IsNullOrEmptyOrWhiteSpace)(reactiveValue), checked: showWhereClause, onChange: (checked) => {
|
|
52
52
|
setShowWhereClause(checked);
|
|
53
53
|
if (!checked) {
|
|
54
|
-
// reset whereClause value if textarea is hidden
|
|
55
54
|
updateWhereClauseValue(null);
|
|
56
55
|
}
|
|
57
56
|
}, className: "twa:pl-3 twa:items-center", children: "WHERE" }), showWhereClause && ((0, jsx_runtime_1.jsx)(BaseEditorInput_1.BaseEditorInput, { type: 'secondary', disabled: (0, StringExtensions_1.IsNullOrEmptyOrWhiteSpace)(reactiveValue), value: whereClauseValue || '', placeholder: `Create BooleanQuery which narrows down the scope of the ${queryName}`, onChange: updateWhereClauseValue, onSelectedFunctionChange: setSelectedFunction, expressionFunctions: whereClauseExpressionsFns, editorButtons: editorButtonsSearch_1.editorButtonsSearch, testData: props.testData, isFullExpression: true, hideResultPreview: true, api: props.api, style: { height: '75px' } }))] }));
|
|
@@ -12,20 +12,10 @@ const ExpressionPreview = (props) => {
|
|
|
12
12
|
return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: adaptableApi.expressionApi.getAdaptableQueryExpression(props.query) });
|
|
13
13
|
}
|
|
14
14
|
const expressionWithFriendlyNames = adaptableApi.expressionApi.getAdaptableQueryExpressionWithColumnFriendlyNames(props.query);
|
|
15
|
-
// '[Column Name] > 2' => ['[Column Name]', '>', '2']
|
|
16
|
-
// not the prettiest
|
|
17
15
|
const strWithMarkedGroupes = expressionWithFriendlyNames.replace(/\]/gi, '],').split(',');
|
|
18
|
-
return (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
*
|
|
23
|
-
* The div allows the text to flow normally.
|
|
24
|
-
*/
|
|
25
|
-
((0, jsx_runtime_1.jsx)("div", { children: strWithMarkedGroupes.map((part, index) => {
|
|
26
|
-
const partEl = part.includes('[') ? (0, jsx_runtime_1.jsx)("i", { children: part.replace(/[\[\]]/g, '') }) : part;
|
|
27
|
-
return (0, jsx_runtime_1.jsx)(React.Fragment, { children: partEl }, index);
|
|
28
|
-
}) }))
|
|
29
|
-
);
|
|
16
|
+
return ((0, jsx_runtime_1.jsx)("div", { children: strWithMarkedGroupes.map((part, index) => {
|
|
17
|
+
const partEl = part.includes('[') ? (0, jsx_runtime_1.jsx)("i", { children: part.replace(/[\[\]]/g, '') }) : part;
|
|
18
|
+
return (0, jsx_runtime_1.jsx)(React.Fragment, { children: partEl }, index);
|
|
19
|
+
}) }));
|
|
30
20
|
};
|
|
31
21
|
exports.ExpressionPreview = ExpressionPreview;
|
|
@@ -5,7 +5,6 @@ const react_1 = require("react");
|
|
|
5
5
|
exports.NamedQueryContext = (0, react_1.createContext)({
|
|
6
6
|
namedQuery: false,
|
|
7
7
|
setNamedQuery: () => { },
|
|
8
|
-
// hasValidNamedQueryName: () => false,
|
|
9
8
|
});
|
|
10
9
|
const useNamedQueryContext = () => {
|
|
11
10
|
return (0, react_1.useContext)(exports.NamedQueryContext);
|
|
@@ -22,10 +22,7 @@ const NewSelect_1 = require("../../NewSelect");
|
|
|
22
22
|
const PrimitiveColumnOrFieldSelector = (props) => {
|
|
23
23
|
const adaptable = (0, AdaptableContext_1.useAdaptable)();
|
|
24
24
|
const [type, setType] = react_1.default.useState(() => {
|
|
25
|
-
return (
|
|
26
|
-
// default to column
|
|
27
|
-
(!props.fieldOrColumn || props.fieldOrColumn.includes('[') ? 'column' : 'field')
|
|
28
|
-
);
|
|
25
|
+
return (!props.fieldOrColumn || props.fieldOrColumn.includes('[') ? 'column' : 'field');
|
|
29
26
|
});
|
|
30
27
|
const hasFields = react_1.default.useMemo(() => {
|
|
31
28
|
return adaptable.api.expressionApi.internalApi.getAvailableFields()?.length > 0;
|
|
@@ -78,7 +75,6 @@ const PrimitiveValueInput = (props) => {
|
|
|
78
75
|
});
|
|
79
76
|
const handleTypeChange = (newType) => {
|
|
80
77
|
if (type !== newType) {
|
|
81
|
-
// need to reset value
|
|
82
78
|
props.onChange(undefined);
|
|
83
79
|
setType(newType);
|
|
84
80
|
}
|
|
@@ -105,7 +101,6 @@ const PrimitiveValueInput = (props) => {
|
|
|
105
101
|
props.onChange(event.target.value);
|
|
106
102
|
} }));
|
|
107
103
|
case 'date':
|
|
108
|
-
// date format = 'DATE(2020-01-01)'
|
|
109
104
|
const dateStr = typeof props.value === 'string' ? props.value.replace('DATE(', '').replace(')', '') : '';
|
|
110
105
|
return ((0, jsx_runtime_1.jsx)(AdaptableInput_1.default, { ...common, type: "date", value: dateStr ?? '', onChange: (event) => {
|
|
111
106
|
const stringified = `DATE("${event.target.value}")`;
|
|
@@ -57,7 +57,6 @@ const LogicalFunctionEditor = (props) => {
|
|
|
57
57
|
if (typeof arg === 'object' &&
|
|
58
58
|
'operator' in arg &&
|
|
59
59
|
(0, predicate_1.isQlLogicalOperator)(arg.operator)) {
|
|
60
|
-
// add as a child
|
|
61
60
|
const newArg = {
|
|
62
61
|
...arg,
|
|
63
62
|
args: [...arg.args, newPredicate],
|
|
@@ -70,7 +69,6 @@ const LogicalFunctionEditor = (props) => {
|
|
|
70
69
|
});
|
|
71
70
|
}
|
|
72
71
|
else {
|
|
73
|
-
// add as a sibling
|
|
74
72
|
const prevArgs = [...props.predicate.args];
|
|
75
73
|
prevArgs.splice(index + 1, 0, newPredicate);
|
|
76
74
|
props.onChange({
|
|
@@ -175,16 +173,6 @@ const PrimitiveFunctionEditor = (props) => {
|
|
|
175
173
|
}) })] }), (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:flex-1" }), (0, jsx_runtime_1.jsx)(QueryPredicateButtons, { ...props })] }));
|
|
176
174
|
} }));
|
|
177
175
|
};
|
|
178
|
-
/**
|
|
179
|
-
* Two types:
|
|
180
|
-
* - combinatory operator
|
|
181
|
-
* - can contain both expressons and combinators
|
|
182
|
-
* [handle] [combinator-dropdown]
|
|
183
|
-
* [children]
|
|
184
|
-
*
|
|
185
|
-
* - boolean function: ars do not contain other combinators
|
|
186
|
-
* [handle] [column] [operator-dropdown] [...args] [delete-button] [plus-button]
|
|
187
|
-
*/
|
|
188
176
|
const QueryPredicateBuilder = (props) => {
|
|
189
177
|
if ((0, predicate_1.isQlLogicalOperator)(props.predicate.operator)) {
|
|
190
178
|
return (0, jsx_runtime_1.jsx)(LogicalFunctionEditor, { ...props });
|
|
@@ -8,11 +8,8 @@ const ObjectExtensions_1 = require("../../../Utilities/Extensions/ObjectExtensio
|
|
|
8
8
|
const booleanExpressions_1 = require("./booleanExpressions");
|
|
9
9
|
const reorder = (predicate, from, to) => {
|
|
10
10
|
const predicateCopy = (0, ObjectExtensions_1.deepClone)(predicate);
|
|
11
|
-
// we start from the root so no need to traverse first level
|
|
12
11
|
const [_, ...fromPath] = from.split('/');
|
|
13
12
|
const [__, ...toPath] = to.split('/');
|
|
14
|
-
// remove from old position and get the item
|
|
15
|
-
// path = '0/1/2'
|
|
16
13
|
let itemToMove = predicateCopy;
|
|
17
14
|
let prev = null;
|
|
18
15
|
for (const index of fromPath) {
|
|
@@ -20,7 +17,6 @@ const reorder = (predicate, from, to) => {
|
|
|
20
17
|
itemToMove = itemToMove.args[parseInt(index)];
|
|
21
18
|
}
|
|
22
19
|
prev.args.splice(parseInt(fromPath[fromPath.length - 1]), 1);
|
|
23
|
-
// find the parent into wich we want to insert the item
|
|
24
20
|
let cursor = predicateCopy;
|
|
25
21
|
let parent = null;
|
|
26
22
|
for (const index of toPath) {
|
|
@@ -36,22 +36,15 @@ function ExpressionEditor(props) {
|
|
|
36
36
|
const editorInput = type === 'observable' || type === 'aggregatedBoolean' ? ((0, jsx_runtime_1.jsx)(EditorInputWithWhereClause_1.default, { type: type, module: module, value: props.value, onChange: (value) => {
|
|
37
37
|
setExpressionText(value);
|
|
38
38
|
props.onChange(value);
|
|
39
|
-
}, testData: props.initialData, api: props.api })) : (
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
{ type: type, module: module, columnScope: props.columnScope, value: props.value, onChange: (value) => {
|
|
44
|
-
setExpressionText(value);
|
|
45
|
-
props.onChange(value);
|
|
46
|
-
}, testData: props.initialData, isFullExpression: props.isFullExpression, api: props.api }
|
|
47
|
-
)));
|
|
39
|
+
}, testData: props.initialData, api: props.api })) : ((0, jsx_runtime_1.jsx)(EditorInput_1.default, { type: type, module: module, columnScope: props.columnScope, value: props.value, onChange: (value) => {
|
|
40
|
+
setExpressionText(value);
|
|
41
|
+
props.onChange(value);
|
|
42
|
+
}, testData: props.initialData, isFullExpression: props.isFullExpression, api: props.api }));
|
|
48
43
|
const adaptableFields = props.api.expressionApi.internalApi.getAvailableFields();
|
|
49
|
-
// currently only boolean and scalar expressions support nested calculated columns (calc cols which reference other calc cols)
|
|
50
44
|
const queryableColumns = type === 'scalar' || type === 'boolean' || type === 'aggregatedScalar'
|
|
51
45
|
? props.columns
|
|
52
46
|
: props.columns.filter((c) => !c.isCalculatedColumn);
|
|
53
47
|
const showDocumentationLinks = props.api.internalApi.isDocumentationLinksDisplayed();
|
|
54
|
-
// @Bogdan i did this to be sure but i think we can get rid of this as the button does the same (and better IMO)
|
|
55
48
|
const showNamedQueryStuff = false;
|
|
56
49
|
const queryDocumentationLink = queryDocumentationLinks[type];
|
|
57
50
|
const saveAsNamedQueryElement = allowSaveNamedQuery &&
|
|
@@ -79,9 +72,7 @@ function ExpressionEditor(props) {
|
|
|
79
72
|
if (event.target.tagName === 'TEXTAREA') {
|
|
80
73
|
textAreaRef.current = event.target;
|
|
81
74
|
}
|
|
82
|
-
}, children: (0, jsx_runtime_1.jsxs)(Flex_1.Flex, { className: "twa:flex-1 twa:text-2", flexDirection: "row", "data-name": "expression-editor", style: { minHeight: 0 }, children: [(0, jsx_runtime_1.jsxs)(Flex_1.Flex, { className: "twa:flex-1 twa:pr-2 twa:overflow-auto twa:min-h-0", "data-name": "expression-builder", flexDirection: "column", children: [editorInput, StringExtensions_1.default.IsNotNullOrEmpty(expressionText?.trim()) && ((0, jsx_runtime_1.jsx)(ExpressionFunctionDocumentation_1.ExpressionFunctionDocumentation, { expressionFunction: selectedFunction })),
|
|
83
|
-
/* displayed for advanced queries (observable&Aggregation) to give the users a starting point */
|
|
84
|
-
StringExtensions_1.default.IsNullOrEmpty(expressionText?.trim()) && renderQueryHints(type), showDocumentationLinks && ((0, jsx_runtime_1.jsxs)(HelpBlock_1.default, { "data-name": "query-documentation", className: "twa:my-2 twa:p-2 twa:text-3", children: [(0, jsx_runtime_1.jsx)(ButtonInfo_1.ButtonInfo, { className: "twa:mr-2", onClick: () => window.open(queryDocumentationLink, '_blank') }), "See documentation for more details and examples"] })), (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:flex-1" }), showNamedQueryStuff && saveAsNamedQueryElement] }), (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: `${exports.baseClassName}__sidebar twa:pb-2 twa:px-2 twa:overflow-auto twa:h-full twa:w-[280px]`, "data-name": "expression-sidebar", children: (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:h-full twa:p-2 twa:rounded-standard twa:shadow-md twa:bg-background twa:text-foreground", children: (0, jsx_runtime_1.jsxs)(Tabs_1.Tabs, { className: "twa:h-full", children: [(0, jsx_runtime_1.jsx)(Tabs_1.Tabs.Tab, { value: "column", children: "Columns" }), (0, jsx_runtime_1.jsx)(Tabs_1.Tabs.Tab, { value: "field", children: "Fields" }), (0, jsx_runtime_1.jsx)(Tabs_1.Tabs.Tab, { value: "named-query", children: "Named Queries" }), (0, jsx_runtime_1.jsx)(Tabs_1.Tabs.Content, { className: "twa:flex-1 twa:h-full", children: (0, jsx_runtime_1.jsx)(DataTableEditor_1.DataTableEditor, { type: "column", dataFormatter: (value) => `[${value}]`, fields: queryableColumns.map((column) => ({
|
|
75
|
+
}, children: (0, jsx_runtime_1.jsxs)(Flex_1.Flex, { className: "twa:flex-1 twa:text-2", flexDirection: "row", "data-name": "expression-editor", style: { minHeight: 0 }, children: [(0, jsx_runtime_1.jsxs)(Flex_1.Flex, { className: "twa:flex-1 twa:pr-2 twa:overflow-auto twa:min-h-0", "data-name": "expression-builder", flexDirection: "column", children: [editorInput, StringExtensions_1.default.IsNotNullOrEmpty(expressionText?.trim()) && ((0, jsx_runtime_1.jsx)(ExpressionFunctionDocumentation_1.ExpressionFunctionDocumentation, { expressionFunction: selectedFunction })), StringExtensions_1.default.IsNullOrEmpty(expressionText?.trim()) && renderQueryHints(type), showDocumentationLinks && ((0, jsx_runtime_1.jsxs)(HelpBlock_1.default, { "data-name": "query-documentation", className: "twa:my-2 twa:p-2 twa:text-3", children: [(0, jsx_runtime_1.jsx)(ButtonInfo_1.ButtonInfo, { className: "twa:mr-2", onClick: () => window.open(queryDocumentationLink, '_blank') }), "See documentation for more details and examples"] })), (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:flex-1" }), showNamedQueryStuff && saveAsNamedQueryElement] }), (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: `${exports.baseClassName}__sidebar twa:pb-2 twa:px-2 twa:overflow-auto twa:h-full twa:w-[280px]`, "data-name": "expression-sidebar", children: (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:h-full twa:p-2 twa:rounded-standard twa:shadow-md twa:bg-background twa:text-foreground", children: (0, jsx_runtime_1.jsxs)(Tabs_1.Tabs, { className: "twa:h-full", children: [(0, jsx_runtime_1.jsx)(Tabs_1.Tabs.Tab, { value: "column", children: "Columns" }), (0, jsx_runtime_1.jsx)(Tabs_1.Tabs.Tab, { value: "field", children: "Fields" }), (0, jsx_runtime_1.jsx)(Tabs_1.Tabs.Tab, { value: "named-query", children: "Named Queries" }), (0, jsx_runtime_1.jsx)(Tabs_1.Tabs.Content, { className: "twa:flex-1 twa:h-full", children: (0, jsx_runtime_1.jsx)(DataTableEditor_1.DataTableEditor, { type: "column", dataFormatter: (value) => `[${value}]`, fields: queryableColumns.map((column) => ({
|
|
85
76
|
label: column.friendlyName,
|
|
86
77
|
value: column.columnId,
|
|
87
78
|
dataType: column.dataType,
|
|
@@ -25,8 +25,6 @@ const IconComponent = (props) => {
|
|
|
25
25
|
}
|
|
26
26
|
else {
|
|
27
27
|
htmlElement = icon.element;
|
|
28
|
-
// THe element neets to be cloned.
|
|
29
|
-
// when it is used in more than one plce the element is removed from the DOM
|
|
30
28
|
htmlElement = htmlElement.cloneNode(true);
|
|
31
29
|
}
|
|
32
30
|
divRef.current.insertAdjacentElement('afterend', htmlElement);
|
|
@@ -6,28 +6,19 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
6
6
|
const React = tslib_1.__importStar(require("react"));
|
|
7
7
|
const index_1 = tslib_1.__importStar(require("./index"));
|
|
8
8
|
const join_1 = tslib_1.__importDefault(require("../utils/join"));
|
|
9
|
-
/**
|
|
10
|
-
* This component allows - and empty values as intermediery values
|
|
11
|
-
* it calls change only with valid numeric values
|
|
12
|
-
*/
|
|
13
9
|
exports.NumberInput = React.forwardRef((props, ref) => {
|
|
14
10
|
const [value, setValue] = React.useState(() => {
|
|
15
|
-
// awlays controlled
|
|
16
11
|
return props.value ?? '';
|
|
17
12
|
});
|
|
18
13
|
const handleChange = React.useCallback((event) => {
|
|
19
14
|
const { value } = event.target;
|
|
20
15
|
let newVal = Number(value);
|
|
21
16
|
if (value === '-' || value === '') {
|
|
22
|
-
// we are saving invalid values so we allow values as empty string and '-'
|
|
23
|
-
// there is a validation that prevents the
|
|
24
17
|
newVal = value;
|
|
25
|
-
// the value may be empty or negative
|
|
26
18
|
setValue(value);
|
|
27
19
|
}
|
|
28
20
|
else if (!isNaN(newVal)) {
|
|
29
21
|
setValue(value);
|
|
30
|
-
// only set when a valid numer
|
|
31
22
|
props.onChange(newVal);
|
|
32
23
|
}
|
|
33
24
|
}, [props.onChange]);
|
|
@@ -36,7 +27,6 @@ exports.NumberInput = React.forwardRef((props, ref) => {
|
|
|
36
27
|
}, [props.value]);
|
|
37
28
|
const handleBlur = React.useCallback((event) => {
|
|
38
29
|
props?.onBlur?.(event);
|
|
39
|
-
// show the prop value
|
|
40
30
|
if (value !== props.value) {
|
|
41
31
|
setValue(props.value);
|
|
42
32
|
}
|