@adaptabletools/adaptable 23.0.0-canary.4 → 23.0.0-canary.5
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/index.css +116 -61
- package/package.json +9 -4
- package/src/AdaptableOptions/EditOptions.d.ts +2 -2
- package/src/AdaptableState/Common/AggregationColumns.d.ts +14 -6
- package/src/AdaptableState/Common/AggregationColumns.js +27 -2
- package/src/AdaptableState/Common/ColumnScope.d.ts +4 -0
- package/src/AdaptableState/Common/Enums.d.ts +5 -5
- package/src/AdaptableState/Common/Enums.js +4 -4
- package/src/AdaptableState/PlusMinusState.d.ts +3 -3
- package/src/AdaptableState/ShortcutState.d.ts +2 -6
- package/src/AdaptableState/StyledColumnState.d.ts +3 -5
- package/src/AdaptableState/ThemeState.d.ts +33 -28
- package/src/Api/EventApi.d.ts +14 -1
- package/src/Api/Events/ThemeChanged.d.ts +6 -0
- package/src/Api/Events/ThemeSelected.d.ts +11 -0
- package/src/Api/Events/ThemeSelected.js +1 -0
- package/src/Api/Implementation/EventApiImpl.js +4 -0
- package/src/Api/Implementation/LayoutApiImpl.d.ts +0 -2
- package/src/Api/Implementation/LayoutApiImpl.js +0 -14
- package/src/Api/Implementation/LayoutHelpers.d.ts +2 -0
- package/src/Api/Implementation/LayoutHelpers.js +17 -7
- package/src/Api/Implementation/ThemeApiImpl.d.ts +3 -2
- package/src/Api/Implementation/ThemeApiImpl.js +19 -15
- package/src/Api/Internal/EventInternalApi.d.ts +2 -0
- package/src/Api/Internal/EventInternalApi.js +8 -1
- package/src/Api/Internal/StyledColumnInternalApi.d.ts +4 -4
- package/src/Api/Internal/StyledColumnInternalApi.js +4 -4
- package/src/Api/Internal/ThemeInternalApi.d.ts +0 -1
- package/src/Api/Internal/ThemeInternalApi.js +0 -10
- package/src/Api/LayoutApi.d.ts +1 -8
- package/src/Api/ThemeApi.d.ts +6 -2
- package/src/Redux/ActionsReducers/ThemeRedux.d.ts +3 -3
- package/src/Strategy/FormatColumnModule.js +14 -7
- package/src/Strategy/LayoutModule.js +13 -8
- package/src/Strategy/StyledColumnModule.js +64 -36
- package/src/Utilities/Constants/ReduxConstants.d.ts +2 -2
- package/src/Utilities/Constants/ReduxConstants.js +1 -14
- package/src/Utilities/Helpers/FormatHelper.js +20 -1
- package/src/Utilities/Helpers/SparklineOptionsHelper.d.ts +7 -0
- package/src/Utilities/Helpers/SparklineOptionsHelper.js +65 -0
- package/src/Utilities/Helpers/StyledColumnGradientHelper.d.ts +23 -1
- package/src/Utilities/Helpers/StyledColumnGradientHelper.js +204 -0
- package/src/Utilities/Helpers/ThemeHelpers.d.ts +5 -0
- package/src/Utilities/Helpers/ThemeHelpers.js +38 -0
- package/src/Utilities/Helpers/percentBarPreviewHelper.d.ts +19 -0
- package/src/Utilities/Helpers/percentBarPreviewHelper.js +143 -0
- package/src/Utilities/ObjectFactory.d.ts +1 -3
- package/src/Utilities/ObjectFactory.js +0 -8
- package/src/Utilities/Services/ThemeService.js +1 -1
- package/src/View/Alert/Wizard/AlertBehaviourWizardSection.js +17 -16
- package/src/View/Alert/Wizard/AlertButtonsEditor.js +114 -103
- package/src/View/Alert/Wizard/AlertMessageWizardSection.js +13 -14
- package/src/View/Alert/Wizard/AlertNotificationWizardSection.js +55 -55
- package/src/View/Alert/Wizard/AlertRulesWizardSection.js +3 -2
- package/src/View/Alert/Wizard/AlertScheduledWizardSection.js +2 -2
- package/src/View/Alert/Wizard/AlertScopeWizardSection.js +31 -39
- package/src/View/Alert/Wizard/AlertTypeWizardSection.js +3 -4
- package/src/View/CalculatedColumn/Wizard/CalculatedColumnDefinitionWizardSection.js +9 -13
- package/src/View/CalculatedColumn/Wizard/CalculatedColumnExpressionWizardSection.js +30 -17
- package/src/View/CalculatedColumn/Wizard/CalculatedColumnSettingsWizardSection.js +7 -9
- package/src/View/CalculatedColumn/Wizard/CalculatedColumnTypeSection.js +3 -3
- package/src/View/CellSummary/CellSummaryViewPanel.js +1 -1
- package/src/View/Charting/ChartingWizard/AgChargingWizard/AgChargingWizard.js +3 -10
- package/src/View/Charting/ChartingWizard/AgChargingWizard/PreviewChartSection.js +1 -1
- package/src/View/Charting/ChartingWizard/AgChargingWizard/SettingsSection.js +32 -41
- package/src/View/Charting/ChartingWizard/ExternalChartingWizard/ExternalChartingWizard.js +4 -31
- package/src/View/Charting/ChartingWizard/ExternalChartingWizard/PreviewChartSection.d.ts +5 -0
- package/src/View/Charting/ChartingWizard/ExternalChartingWizard/PreviewChartSection.js +21 -0
- package/src/View/Charting/ChartingWizard/ExternalChartingWizard/SettingsSection.d.ts +1 -0
- package/src/View/Charting/ChartingWizard/ExternalChartingWizard/SettingsSection.js +10 -7
- package/src/View/Comments/CommentsEditor.js +1 -1
- package/src/View/Components/ModuleProfile.js +1 -1
- package/src/View/Components/Popups/WindowPopups/windowFactory.d.ts +0 -1
- package/src/View/Components/Popups/WindowPopups/windowFactory.js +0 -1
- package/src/View/Components/RangesComponent.d.ts +7 -2
- package/src/View/Components/RangesComponent.js +94 -22
- package/src/View/Components/StyleComponent.d.ts +1 -0
- package/src/View/Components/StyleComponent.js +1 -1
- package/src/View/Components/ValueSelector/index.js +70 -57
- package/src/View/CustomSort/Wizard/CustomSortColumnWizardSection.js +8 -13
- package/src/View/CustomSort/Wizard/CustomSortValuesWizardSection.js +8 -8
- package/src/View/DataChangeHistory/DataChangeHistoryGrid.js +1 -1
- package/src/View/DataImport/DataImportWizard/sections/ColumnsSection.js +11 -12
- package/src/View/DataImport/DataImportWizard/sections/UploadSection/UploadSection.js +6 -4
- package/src/View/DataImport/DataImportWizard/sections/UploadSection/UploadTextSection.js +3 -2
- package/src/View/DataImport/DataImportWizard/sections/ValidationSection.js +5 -15
- package/src/View/Export/Wizard/ReportColumnsWizardSection.js +24 -26
- package/src/View/Export/Wizard/ReportNameWizardSection.js +10 -13
- package/src/View/Export/Wizard/ReportRowsWizardSection.js +20 -22
- package/src/View/Export/Wizard/ScheduledReportSettings.d.ts +2 -0
- package/src/View/Export/Wizard/ScheduledReportSettings.js +13 -13
- package/src/View/Export/Wizard/ScheduledReportWizard.js +4 -5
- package/src/View/FlashingCell/Wizard/FlashingCellRulesWizardSection.js +8 -6
- package/src/View/FlashingCell/Wizard/FlashingCellScopeWizardSection.js +21 -22
- package/src/View/FlashingCell/Wizard/FlashingCellSettingsWizardSection.js +20 -11
- package/src/View/FlashingCell/Wizard/FlashingCellStyleWizardSection.js +21 -5
- package/src/View/FlashingCell/Wizard/FlashingCellWizard.js +4 -4
- package/src/View/FormatColumn/Wizard/FormatColumnFormatWizardSection.d.ts +7 -0
- package/src/View/FormatColumn/Wizard/FormatColumnFormatWizardSection.js +117 -12
- package/src/View/FormatColumn/Wizard/FormatColumnPreview.d.ts +15 -0
- package/src/View/FormatColumn/Wizard/FormatColumnPreview.js +66 -0
- package/src/View/FormatColumn/Wizard/FormatColumnRuleWizardSection.d.ts +4 -0
- package/src/View/FormatColumn/Wizard/FormatColumnRuleWizardSection.js +30 -0
- package/src/View/FormatColumn/Wizard/FormatColumnScopeWizardSection.js +13 -8
- package/src/View/FormatColumn/Wizard/FormatColumnSettingsWizardSection.js +1 -1
- package/src/View/FormatColumn/Wizard/FormatColumnStyleWizardSection.d.ts +3 -1
- package/src/View/FormatColumn/Wizard/FormatColumnStyleWizardSection.js +62 -13
- package/src/View/FormatColumn/Wizard/FormatColumnWizard.js +5 -3
- package/src/View/FreeTextColumn/Utilities/getFreeTextColumnSettingsTags.d.ts +2 -0
- package/src/View/FreeTextColumn/Utilities/getFreeTextColumnSettingsTags.js +15 -0
- package/src/View/FreeTextColumn/Wizard/FreeTextColumnDefinitionWizardSection.d.ts +10 -0
- package/src/View/FreeTextColumn/Wizard/FreeTextColumnDefinitionWizardSection.js +53 -0
- package/src/View/FreeTextColumn/Wizard/FreeTextColumnSettingsWizardSection.d.ts +2 -3
- package/src/View/FreeTextColumn/Wizard/FreeTextColumnSettingsWizardSection.js +33 -68
- package/src/View/FreeTextColumn/Wizard/FreeTextColumnWizard.js +15 -11
- package/src/View/Layout/TransposedPopup.js +2 -2
- package/src/View/Layout/Wizard/LayoutWizard.js +3 -3
- package/src/View/Layout/Wizard/sections/AggregationsSection.d.ts +2 -3
- package/src/View/Layout/Wizard/sections/AggregationsSection.js +115 -26
- package/src/View/Layout/Wizard/sections/ColumnsSection.js +79 -79
- package/src/View/Layout/Wizard/sections/FilterSection.js +31 -32
- package/src/View/Layout/Wizard/sections/GridFilterSection.js +11 -11
- package/src/View/Layout/Wizard/sections/PivotAggregationsSection.d.ts +1 -2
- package/src/View/Layout/Wizard/sections/PivotAggregationsSection.js +101 -52
- package/src/View/Layout/Wizard/sections/PivotColumnsSection.js +9 -8
- package/src/View/Layout/Wizard/sections/PivotRowGroupingSection.js +4 -4
- package/src/View/Layout/Wizard/sections/RowGroupingSection.js +36 -33
- package/src/View/Layout/Wizard/sections/RowSelectionSection.js +2 -2
- package/src/View/Layout/Wizard/sections/RowSummarySection.js +95 -73
- package/src/View/Layout/Wizard/sections/SettingsSection.js +4 -5
- package/src/View/Layout/Wizard/sections/SortSection.js +2 -2
- package/src/View/NamedQuery/Wizard/NamedQueryExpressionWizardSection.js +1 -1
- package/src/View/NamedQuery/Wizard/NamedQuerySettingsWizardSection.js +9 -14
- package/src/View/NamedQuery/Wizard/NamedQueryWizard.js +1 -3
- package/src/View/PlusMinus/Wizard/PlusMinusRuleWizardSection.d.ts +4 -0
- package/src/View/PlusMinus/Wizard/PlusMinusRuleWizardSection.js +43 -13
- package/src/View/PlusMinus/Wizard/PlusMinusScopeWizardSection.js +11 -18
- package/src/View/PlusMinus/Wizard/PlusMinusSettingsWizardSection.d.ts +2 -6
- package/src/View/PlusMinus/Wizard/PlusMinusSettingsWizardSection.js +6 -22
- package/src/View/PlusMinus/Wizard/PlusMinusWizard.js +15 -21
- package/src/View/Schedule/Wizard/ScheduleScheduleWizard.js +2 -2
- package/src/View/Shortcut/Wizard/ShortcutScopeWizardSection.js +11 -18
- package/src/View/Shortcut/Wizard/ShortcutSettingsWizard.js +17 -6
- package/src/View/Shortcut/Wizard/ShortcutWizard.js +3 -3
- package/src/View/Shortcut/shortcutOperations.d.ts +3 -0
- package/src/View/Shortcut/shortcutOperations.js +28 -0
- package/src/View/SpecialColumnSettingsWizardStep.js +9 -8
- package/src/View/StyledColumn/Wizard/BadgePillStyleEditor.d.ts +5 -0
- package/src/View/StyledColumn/Wizard/BadgePillStyleEditor.js +24 -15
- package/src/View/StyledColumn/Wizard/StyledColumnBadgeSection.d.ts +10 -2
- package/src/View/StyledColumn/Wizard/StyledColumnBadgeSection.js +96 -16
- package/src/View/StyledColumn/Wizard/StyledColumnSliceStyleEditors.d.ts +14 -0
- package/src/View/StyledColumn/Wizard/StyledColumnSliceStyleEditors.js +45 -24
- package/src/View/StyledColumn/Wizard/StyledColumnSparklineSettingsSection.d.ts +2 -3
- package/src/View/StyledColumn/Wizard/StyledColumnSparklineSettingsSection.js +108 -33
- package/src/View/StyledColumn/Wizard/StyledColumnWizard.js +21 -13
- package/src/View/StyledColumn/Wizard/StyledColumnWizardBulletSection.d.ts +5 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardBulletSection.js +121 -23
- package/src/View/StyledColumn/Wizard/StyledColumnWizardGradientSection.d.ts +1 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardGradientSection.js +34 -11
- package/src/View/StyledColumn/Wizard/StyledColumnWizardIconSection.d.ts +5 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardIconSection.js +86 -12
- package/src/View/StyledColumn/Wizard/StyledColumnWizardRangeBarSection.d.ts +5 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardRangeBarSection.js +121 -34
- package/src/View/StyledColumn/Wizard/StyledColumnWizardRatingSection.d.ts +1 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardRatingSection.js +55 -75
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/BulletRangesSummaryPreview.d.ts +5 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/BulletRangesSummaryPreview.js +16 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/GradientSummaryPreview.js +7 -13
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/PercentBarColumnComparisonPreview.js +5 -5
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/PercentBarRangesPreview.js +4 -3
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/PercentBarStylePreview.d.ts +5 -4
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/PercentBarStylePreview.js +12 -14
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/RangeBarRangesSummaryPreview.d.ts +5 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/RangeBarRangesSummaryPreview.js +16 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnBadgePreview.d.ts +3 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnBadgePreview.js +31 -3
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnBulletPreview.d.ts +9 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnBulletPreview.js +58 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnGradientPreview.d.ts +10 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnGradientPreview.js +30 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnIconPreview.d.ts +10 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnIconPreview.js +91 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnPercentBarPreview.d.ts +8 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnPercentBarPreview.js +52 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnRangeBarPreview.d.ts +8 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnRangeBarPreview.js +53 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnRatingPreview.d.ts +18 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnRatingPreview.js +58 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnSparklinePreview.d.ts +10 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnSparklinePreview.js +126 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/StyledColumnWizardRangesSection.js +12 -5
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/StyledColumnWizardStyleSection.d.ts +1 -5
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/StyledColumnWizardStyleSection.js +52 -29
- package/src/View/SystemStatus/Utilities/getStatusItemStyle.js +1 -1
- package/src/View/Theme/ThemePopup.d.ts +2 -14
- package/src/View/Theme/ThemePopup.js +1 -36
- package/src/View/UIHelper.js +1 -1
- package/src/View/Wizard/OnePageAdaptableWizard.js +7 -21
- package/src/agGrid/AdaptableAgGrid.d.ts +1 -0
- package/src/agGrid/AdaptableAgGrid.js +35 -25
- package/src/agGrid/AgGridAdapter.d.ts +1 -1
- package/src/agGrid/AgGridAdapter.js +27 -17
- package/src/agGrid/AgGridColumnAdapter.js +9 -15
- package/src/agGrid/AgGridMenuAdapter.d.ts +0 -1
- package/src/agGrid/AgGridMenuAdapter.js +20 -37
- package/src/agGrid/buildValueAggregationMenuItem.d.ts +19 -0
- package/src/agGrid/buildValueAggregationMenuItem.js +111 -0
- package/src/agGrid/cellRenderers/IconRenderer.d.ts +6 -0
- package/src/agGrid/cellRenderers/IconRenderer.js +43 -15
- package/src/agGrid/createAgGridIcon.d.ts +10 -0
- package/src/agGrid/createAgGridIcon.js +16 -0
- package/src/components/DragAndDropContext/UnusedPanel.js +1 -1
- package/src/components/ExpressionEditor/BaseEditorInput.js +1 -1
- package/src/components/ExpressionEditor/ExpressionFunctionDocumentation.js +1 -1
- package/src/components/Input/NumberInput.js +1 -1
- package/src/components/Panel/index.js +1 -1
- package/src/components/SimpleButton/index.js +4 -4
- package/src/components/Toggle/Toggle.js +1 -1
- package/src/components/Toggle/ToggleGroup.js +1 -1
- package/src/env.js +2 -2
- package/src/layout-manager/src/index.js +2 -9
- package/src/metamodel/adaptable.metamodel.d.ts +39 -29
- package/src/metamodel/adaptable.metamodel.js +1 -1
- package/src/types.d.ts +5 -4
- package/themes/dark.css +1 -68
- package/themes/light.css +1 -5
- package/tsconfig.esm.tsbuildinfo +1 -1
- package/src/Aggregation/ParameterizedAggregationRegistry.d.ts +0 -35
- package/src/Aggregation/ParameterizedAggregationRegistry.js +0 -63
- package/src/Aggregation/definitions/weightedAverageAggregationDefinition.d.ts +0 -3
- package/src/Aggregation/definitions/weightedAverageAggregationDefinition.js +0 -55
- package/src/Aggregation/parameterizedAggregationColumnMenu.d.ts +0 -8
- package/src/Aggregation/parameterizedAggregationColumnMenu.js +0 -137
- package/src/Aggregation/parameterizedAggregationHeader.d.ts +0 -13
- package/src/Aggregation/parameterizedAggregationHeader.js +0 -60
- package/src/Aggregation/parameterizedAggregationHelpers.d.ts +0 -23
- package/src/Aggregation/parameterizedAggregationHelpers.js +0 -111
- package/src/Aggregation/parameterizedAggregationWizardHelpers.d.ts +0 -9
- package/src/Aggregation/parameterizedAggregationWizardHelpers.js +0 -66
- package/src/Aggregation/validateParameterizedAggregations.d.ts +0 -4
- package/src/Aggregation/validateParameterizedAggregations.js +0 -20
- package/src/View/Layout/Wizard/sections/ParameterizedAggFuncPicker.d.ts +0 -12
- package/src/View/Layout/Wizard/sections/ParameterizedAggFuncPicker.js +0 -43
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnBadgeSettings.d.ts +0 -5
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnBadgeSettings.js +0 -28
- package/src/View/Theme/VariantSelector.d.ts +0 -8
- package/src/View/Theme/VariantSelector.js +0 -20
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { PercentBarStyle, StyledColumn } from '../../AdaptableState/StyledColumnState';
|
|
2
|
+
export declare const hasPercentBarRangesConfigured: (pb: PercentBarStyle | undefined) => boolean;
|
|
3
|
+
/** Illustrative scale for preview — shows negatives when origin is Auto or Zero. */
|
|
4
|
+
export declare const getPercentBarPreviewScale: (pb: PercentBarStyle) => {
|
|
5
|
+
min: number;
|
|
6
|
+
max: number;
|
|
7
|
+
};
|
|
8
|
+
export declare const getPercentBarPreviewSampleValues: (pb: PercentBarStyle) => number[];
|
|
9
|
+
export type PercentBarPreviewGeometry = {
|
|
10
|
+
barLeftPercent: number;
|
|
11
|
+
barWidthPercent: number;
|
|
12
|
+
percentageValue: number;
|
|
13
|
+
barColor?: string;
|
|
14
|
+
};
|
|
15
|
+
export declare const getPercentBarPreviewGeometry: (numericValue: number, pb: PercentBarStyle, min: number, max: number) => PercentBarPreviewGeometry;
|
|
16
|
+
export declare const formatPercentBarPreviewCellText: (numericValue: number, percentageValue: number, pb: PercentBarStyle) => string;
|
|
17
|
+
export declare const getPercentBarPreviewTrackColor: (pb: PercentBarStyle) => string | undefined;
|
|
18
|
+
export declare const getPercentBarPreviewResolvedBarColor: (color: string | undefined) => string | undefined;
|
|
19
|
+
export declare const hasPercentBarStylePreview: (styledColumn: StyledColumn) => boolean;
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { getVariableColor } from './StyleHelper';
|
|
2
|
+
import clamp from '../utils/clamp';
|
|
3
|
+
import { STYLED_COLUMN_PREVIEW_SAMPLE_COUNT, ZERO_CENTRED_PREVIEW_SCALE_MAX, ZERO_CENTRED_PREVIEW_SCALE_MIN, } from './StyledColumnGradientHelper';
|
|
4
|
+
const evenlySpacedValues = (min, max, count) => {
|
|
5
|
+
if (count <= 1) {
|
|
6
|
+
return [min];
|
|
7
|
+
}
|
|
8
|
+
const step = (max - min) / (count - 1);
|
|
9
|
+
return Array.from({ length: count }, (_, i) => min + step * i);
|
|
10
|
+
};
|
|
11
|
+
const toFraction = (value, min, max) => {
|
|
12
|
+
if (max === min) {
|
|
13
|
+
return 0;
|
|
14
|
+
}
|
|
15
|
+
return clamp((value - min) / (max - min), 0, 1);
|
|
16
|
+
};
|
|
17
|
+
const resolveOrigin = (percentBarStyle, cellValue, min, max) => {
|
|
18
|
+
const origin = percentBarStyle.Origin ?? 'Auto';
|
|
19
|
+
if (typeof origin === 'number') {
|
|
20
|
+
return origin;
|
|
21
|
+
}
|
|
22
|
+
if (origin === 'Zero') {
|
|
23
|
+
return 0;
|
|
24
|
+
}
|
|
25
|
+
if (origin === 'Min') {
|
|
26
|
+
return min;
|
|
27
|
+
}
|
|
28
|
+
if (min < 0 || max < 0 || cellValue < 0) {
|
|
29
|
+
return 0;
|
|
30
|
+
}
|
|
31
|
+
return min;
|
|
32
|
+
};
|
|
33
|
+
const columnComparisonUsesCentredAxis = (origin) => {
|
|
34
|
+
const o = origin ?? 'Auto';
|
|
35
|
+
if (typeof o === 'number') {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
return o === 'Zero' || o === 'Auto';
|
|
39
|
+
};
|
|
40
|
+
const resolveRangeEndpoint = (endpoint, scaleMin, scaleMax) => {
|
|
41
|
+
if (endpoint === 'Col-Min') {
|
|
42
|
+
return scaleMin;
|
|
43
|
+
}
|
|
44
|
+
if (endpoint === 'Col-Max') {
|
|
45
|
+
return scaleMax;
|
|
46
|
+
}
|
|
47
|
+
if (typeof endpoint === 'number') {
|
|
48
|
+
return endpoint;
|
|
49
|
+
}
|
|
50
|
+
return scaleMin;
|
|
51
|
+
};
|
|
52
|
+
const getPreviewBarColor = (value, pb, scaleMin, scaleMax) => {
|
|
53
|
+
if (pb.ColumnComparison) {
|
|
54
|
+
return pb.ColumnComparison.Color;
|
|
55
|
+
}
|
|
56
|
+
for (const range of pb.CellRanges ?? []) {
|
|
57
|
+
const rMin = resolveRangeEndpoint(range.Min, scaleMin, scaleMax);
|
|
58
|
+
const rMax = resolveRangeEndpoint(range.Max, scaleMin, scaleMax);
|
|
59
|
+
if (value >= Math.min(rMin, rMax) && value <= Math.max(rMin, rMax)) {
|
|
60
|
+
return range.Color;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return pb.CellRanges?.[0]?.Color;
|
|
64
|
+
};
|
|
65
|
+
export const hasPercentBarRangesConfigured = (pb) => !!(pb?.CellRanges?.length || pb?.ColumnComparison);
|
|
66
|
+
/** Illustrative scale for preview — shows negatives when origin is Auto or Zero. */
|
|
67
|
+
export const getPercentBarPreviewScale = (pb) => {
|
|
68
|
+
const origin = pb.Origin ?? 'Auto';
|
|
69
|
+
if (origin === 'Zero' || origin === 'Auto') {
|
|
70
|
+
return { min: ZERO_CENTRED_PREVIEW_SCALE_MIN, max: ZERO_CENTRED_PREVIEW_SCALE_MAX };
|
|
71
|
+
}
|
|
72
|
+
return { min: 0, max: 100 };
|
|
73
|
+
};
|
|
74
|
+
export const getPercentBarPreviewSampleValues = (pb) => {
|
|
75
|
+
const { min, max } = getPercentBarPreviewScale(pb);
|
|
76
|
+
return evenlySpacedValues(min, max, STYLED_COLUMN_PREVIEW_SAMPLE_COUNT);
|
|
77
|
+
};
|
|
78
|
+
export const getPercentBarPreviewGeometry = (numericValue, pb, min, max) => {
|
|
79
|
+
let percentageValue = 0;
|
|
80
|
+
let barLeftPercent = 0;
|
|
81
|
+
let barWidthPercent = 0;
|
|
82
|
+
if (pb.ColumnComparison) {
|
|
83
|
+
const absMax = Math.abs(max);
|
|
84
|
+
percentageValue = absMax === 0 ? 0 : (numericValue / absMax) * 100;
|
|
85
|
+
const magnitude = Math.min(100, Math.abs(percentageValue));
|
|
86
|
+
const origin = pb.Origin ?? 'Auto';
|
|
87
|
+
const isCentred = columnComparisonUsesCentredAxis(origin);
|
|
88
|
+
if (isCentred) {
|
|
89
|
+
const halfWidth = magnitude / 2;
|
|
90
|
+
if (percentageValue >= 0) {
|
|
91
|
+
barLeftPercent = 50;
|
|
92
|
+
barWidthPercent = halfWidth;
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
barLeftPercent = 50 - halfWidth;
|
|
96
|
+
barWidthPercent = halfWidth;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
barLeftPercent = 0;
|
|
101
|
+
barWidthPercent = magnitude;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
else if (max === min) {
|
|
105
|
+
percentageValue = 0;
|
|
106
|
+
barLeftPercent = 0;
|
|
107
|
+
barWidthPercent = 0;
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
percentageValue = ((clamp(numericValue, min, max) - min) / (max - min)) * 100;
|
|
111
|
+
const origin = resolveOrigin(pb, numericValue, min, max);
|
|
112
|
+
const valueFrac = toFraction(numericValue, min, max);
|
|
113
|
+
const originFrac = toFraction(origin, min, max);
|
|
114
|
+
const start = Math.min(valueFrac, originFrac);
|
|
115
|
+
const end = Math.max(valueFrac, originFrac);
|
|
116
|
+
barLeftPercent = start * 100;
|
|
117
|
+
barWidthPercent = (end - start) * 100;
|
|
118
|
+
}
|
|
119
|
+
return {
|
|
120
|
+
barLeftPercent,
|
|
121
|
+
barWidthPercent,
|
|
122
|
+
percentageValue,
|
|
123
|
+
barColor: getPreviewBarColor(numericValue, pb, min, max),
|
|
124
|
+
};
|
|
125
|
+
};
|
|
126
|
+
export const formatPercentBarPreviewCellText = (numericValue, percentageValue, pb) => {
|
|
127
|
+
const parts = [];
|
|
128
|
+
if (pb.CellText?.includes('CellValue')) {
|
|
129
|
+
parts.push(Number.isInteger(numericValue) ? String(numericValue) : numericValue.toFixed(1));
|
|
130
|
+
}
|
|
131
|
+
if (pb.CellText?.includes('PercentageValue')) {
|
|
132
|
+
parts.push(`${percentageValue.toFixed(0)}%`);
|
|
133
|
+
}
|
|
134
|
+
return parts.join(' ');
|
|
135
|
+
};
|
|
136
|
+
export const getPercentBarPreviewTrackColor = (pb) => {
|
|
137
|
+
if (pb.ColumnComparison) {
|
|
138
|
+
return pb.BackColor ?? undefined;
|
|
139
|
+
}
|
|
140
|
+
return pb.BackColor ?? undefined;
|
|
141
|
+
};
|
|
142
|
+
export const getPercentBarPreviewResolvedBarColor = (color) => color ? getVariableColor(color) : undefined;
|
|
143
|
+
export const hasPercentBarStylePreview = (styledColumn) => hasPercentBarRangesConfigured(styledColumn.PercentBarStyle);
|
|
@@ -16,7 +16,7 @@ import { PlusMinusNudge } from '../AdaptableState/PlusMinusState';
|
|
|
16
16
|
import { Shortcut } from '../AdaptableState/ShortcutState';
|
|
17
17
|
import { NotificationsOptions } from '../AdaptableOptions/NotificationsOptions';
|
|
18
18
|
import { CellSummmaryInfo } from '../AdaptableState/Common/CellSummary';
|
|
19
|
-
import {
|
|
19
|
+
import { ChartDefinition, ColumnFilter, CommentThread, CustomDisplayFormatterContext, FlashingCellDefinition, RowDataChangedInfo, SpecialColumnSettings, SystemFilterPredicateId } from '../types';
|
|
20
20
|
import { IRowNode } from 'ag-grid-enterprise';
|
|
21
21
|
import { AdaptableApi, AdaptableComment, BadgeStyleDefinition, CellAddress, NamedQuery, PivotLayout, TableLayout } from '../../types';
|
|
22
22
|
import { ToastOptions } from '../components/Toastify';
|
|
@@ -54,7 +54,6 @@ export declare function CreateEmptyStyledColumn(): StyledColumn;
|
|
|
54
54
|
export declare function CreateDefaultStyledColumnBadge(): BadgeStyleDefinition;
|
|
55
55
|
export declare function CreateEmptyChartDefinition(chartDefinition?: ChartDefinition): ChartDefinition;
|
|
56
56
|
export declare function CreateCustomDisplayFormatterContext(value: any, node: IRowNode, abColumn: AdaptableColumn, api: AdaptableApi): CustomDisplayFormatterContext;
|
|
57
|
-
export declare function CreateEmptyTheme(name?: string): AdaptableTheme;
|
|
58
57
|
export declare function CreateEmptyCommentThread(cellAddress: CellAddress): CommentThread;
|
|
59
58
|
export declare function CreateToastOptions(notificationsOptions: NotificationsOptions, { onClose, containerId }: {
|
|
60
59
|
onClose?: VoidFunction;
|
|
@@ -91,7 +90,6 @@ export declare const ObjectFactory: {
|
|
|
91
90
|
CreateEmptyStyledColumn: typeof CreateEmptyStyledColumn;
|
|
92
91
|
CreateDefaultStyledColumnBadge: typeof CreateDefaultStyledColumnBadge;
|
|
93
92
|
CreateEmptyChartDefinition: typeof CreateEmptyChartDefinition;
|
|
94
|
-
CreateEmptyTheme: typeof CreateEmptyTheme;
|
|
95
93
|
CreateEmptyCommentThread: typeof CreateEmptyCommentThread;
|
|
96
94
|
CreateAdaptableComment: typeof CreateAdaptableComment;
|
|
97
95
|
CreateDefaultSchedule: typeof CreateDefaultSchedule;
|
|
@@ -288,13 +288,6 @@ export function CreateCustomDisplayFormatterContext(value, node, abColumn, api)
|
|
|
288
288
|
...api.internalApi.buildBaseContext(),
|
|
289
289
|
};
|
|
290
290
|
}
|
|
291
|
-
export function CreateEmptyTheme(name) {
|
|
292
|
-
return {
|
|
293
|
-
Uuid: createUuid(),
|
|
294
|
-
Name: name || 'Custom Theme',
|
|
295
|
-
Description: name || 'Custom Theme',
|
|
296
|
-
};
|
|
297
|
-
}
|
|
298
291
|
export function CreateEmptyCommentThread(cellAddress) {
|
|
299
292
|
return {
|
|
300
293
|
...cellAddress,
|
|
@@ -389,7 +382,6 @@ export const ObjectFactory = {
|
|
|
389
382
|
CreateEmptyStyledColumn,
|
|
390
383
|
CreateDefaultStyledColumnBadge,
|
|
391
384
|
CreateEmptyChartDefinition,
|
|
392
|
-
CreateEmptyTheme,
|
|
393
385
|
CreateEmptyCommentThread,
|
|
394
386
|
CreateAdaptableComment,
|
|
395
387
|
CreateDefaultSchedule,
|
|
@@ -20,7 +20,7 @@ export class ThemeService {
|
|
|
20
20
|
document.adoptedStyleSheets = [...document.adoptedStyleSheets].filter((sheet) => sheet !== this.styleSheetObject);
|
|
21
21
|
}
|
|
22
22
|
subscribe() {
|
|
23
|
-
const themeChangedUnsubscribe = this.api.eventApi.on('
|
|
23
|
+
const themeChangedUnsubscribe = this.api.eventApi.on('ThemeSelected', this.onThemeChanged);
|
|
24
24
|
const prefferedColorSchemeUnsubscribe = this.attachPrefferedColorSchemeListener();
|
|
25
25
|
this.unsubscribe = () => {
|
|
26
26
|
themeChangedUnsubscribe();
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { isRuleBasedAlertDefinition } from '../../../Utilities/Helpers/ScheduledAlertHelper';
|
|
3
|
-
import { Tabs } from '../../../components/Tabs';
|
|
4
3
|
import { useOnePageAdaptableWizardContext } from '../../Wizard/OnePageAdaptableWizard';
|
|
5
4
|
import { CheckBox } from '../../../components/CheckBox';
|
|
6
5
|
import { CodeBlock } from '../../../components/CodeBlock';
|
|
@@ -13,6 +12,7 @@ import { AlertType } from '../Utilities/getAlertType';
|
|
|
13
12
|
import { Box, Flex } from '../../../components/Flex';
|
|
14
13
|
import { Tag, TagBox } from '../../../components/Tag/Tag';
|
|
15
14
|
import { SingleSelect } from '../../../components/NewSelect';
|
|
15
|
+
import { Card } from '../../../components/Card';
|
|
16
16
|
const HighlightStyle = (props) => {
|
|
17
17
|
const adaptable = useAdaptable();
|
|
18
18
|
const options = [
|
|
@@ -84,6 +84,7 @@ export const renderAlertBehaviourSummary = (alert, api, allowWrap = false) => {
|
|
|
84
84
|
};
|
|
85
85
|
export const AlertBehaviourWizardSection = (props) => {
|
|
86
86
|
const { data, api } = useOnePageAdaptableWizardContext();
|
|
87
|
+
const behaviourSpellingVariant = api.internalApi.getCorrectEnglishVariant('Behaviour');
|
|
87
88
|
const presentationProperties = data.AlertProperties ?? {};
|
|
88
89
|
const ruleProperties = isRuleBasedAlertDefinition(data)
|
|
89
90
|
? (data.AlertProperties ?? {})
|
|
@@ -107,19 +108,19 @@ export const AlertBehaviourWizardSection = (props) => {
|
|
|
107
108
|
},
|
|
108
109
|
});
|
|
109
110
|
};
|
|
110
|
-
return (_jsxs(
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
111
|
+
return (_jsx(Flex, { flexDirection: "column", className: "twa:gap-3 twa:p-3", children: _jsxs(Card, { shadow: false, children: [_jsxs(Card.Title, { children: [_jsx(Box, { className: "twa:font-medium", children: behaviourSpellingVariant }), _jsxs(Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: ["Configure ", behaviourSpellingVariant.toLowerCase(), "s for the Alert when it fires"] })] }), _jsxs(Card.Body, { className: "twa:gap-1", children: [hasPreventCellEdit && (_jsxs(CheckBox, { "data-name": "prevent-cell-edit", style: { alignItems: 'flex-start' }, checked: ruleProperties.PreventEdit, disabled: true, children: ["Prevent Cell Edit", _jsx(Box, { className: "twa:text-2 twa:mt-1", children: "(automatically undo data change which triggered Alert)" })] })), hasHighlightCell && (_jsx(HighlightStyle, { dataName: "highlight-cell", highlight: ruleProperties.HighlightCell, label: "Highlight Cell", onChange: (HighlightCell) => {
|
|
112
|
+
onChange({ HighlightCell });
|
|
113
|
+
} })), hasHighlightRow && (_jsx(HighlightStyle, { dataName: "highlight-row", highlight: ruleProperties.HighlightRow, label: "Highlight Row", onChange: (HighlightRow) => {
|
|
114
|
+
onChange({ HighlightRow });
|
|
115
|
+
} })), hasJumpToCell && (_jsx(CheckBox, { "data-name": "jump-to-cell", checked: ruleProperties.JumpToCell, onChange: (JumpToCell) => {
|
|
116
|
+
onChange({ JumpToCell });
|
|
117
|
+
}, children: "Jump To Cell" })), hasJumpToRow && (_jsx(CheckBox, { "data-name": "jump-to-row", checked: ruleProperties.JumpToRow, onChange: (JumpToRow) => {
|
|
118
|
+
onChange({ JumpToRow });
|
|
119
|
+
}, children: "Jump To Row" })), showInSeparateDiv && (_jsxs(CheckBox, { "data-name": "show-in-div", checked: presentationProperties.ShowInDiv, onChange: (ShowInDiv) => {
|
|
120
|
+
onChange({ ShowInDiv });
|
|
121
|
+
}, children: ["Show in separate ", _jsx(CodeBlock, { children: `<div />` }), " element"] })), logToConsole && (_jsx(CheckBox, { "data-name": "log-to-console", checked: presentationProperties.LogToConsole, onChange: (LogToConsole) => {
|
|
122
|
+
onChange({ LogToConsole });
|
|
123
|
+
}, children: "Log To Console" })), showSystemStatusMessage && (_jsx(CheckBox, { "data-name": "system-status-message", checked: presentationProperties.DisplaySystemStatusMessage, onChange: (DisplaySystemStatusMessage) => {
|
|
124
|
+
onChange({ DisplaySystemStatusMessage });
|
|
125
|
+
}, children: "Show as System Status Message" }))] })] }) }));
|
|
125
126
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import SimpleButton from '../../../components/SimpleButton';
|
|
3
3
|
import Input from '../../../components/Input';
|
|
4
4
|
import FormLayout, { FormRow } from '../../../components/FormLayout';
|
|
@@ -9,6 +9,7 @@ import { AdaptableIconSelector } from '../../Components/AdaptableIconSelector';
|
|
|
9
9
|
import { Box, Flex } from '../../../components/Flex';
|
|
10
10
|
import sentenceCase from '../../../Utilities/utils/sentenceCase';
|
|
11
11
|
import { SingleSelect } from '../../../components/NewSelect';
|
|
12
|
+
import { Card } from '../../../components/Card';
|
|
12
13
|
const TONE_OPTIONS = [
|
|
13
14
|
{
|
|
14
15
|
label: 'Tone: Use Alert Tone',
|
|
@@ -21,6 +22,14 @@ const TONE_OPTIONS = [
|
|
|
21
22
|
};
|
|
22
23
|
}),
|
|
23
24
|
];
|
|
25
|
+
const AlertButtonPreview = ({ button, messageType }) => {
|
|
26
|
+
const buttonStyle = button.ButtonStyle ?? {};
|
|
27
|
+
const variant = (buttonStyle.variant ?? 'raised');
|
|
28
|
+
const tone = (buttonStyle.tone ??
|
|
29
|
+
messageType.toLowerCase());
|
|
30
|
+
const icon = button.icon && 'name' in button.icon && button.icon.name ? button.icon : undefined;
|
|
31
|
+
return (_jsx(SimpleButton, { variant: variant, tone: tone, icon: icon, className: "twa:cursor-default twa:pointer-events-none", tabIndex: -1, children: button.Label || 'Untitled' }));
|
|
32
|
+
};
|
|
24
33
|
function renderTone(option) {
|
|
25
34
|
return (_jsxs(Flex, { flexDirection: "row", alignItems: "center", children: [_jsx(SimpleButton, { className: "twa:mr-2 twa:w-[10px] twa:h-[10px] twa:line-height-0 twa:rounded-[100%] twa:bg-current", tone: option.value, variant: "text" }), option.label] }));
|
|
26
35
|
}
|
|
@@ -30,6 +39,7 @@ export const AlertButtonsEditor = (props) => {
|
|
|
30
39
|
props.onChange(newButtons);
|
|
31
40
|
};
|
|
32
41
|
const alertDefinition = adaptableAlert.alertDefinition;
|
|
42
|
+
const messageType = alertDefinition?.MessageType ?? 'Info';
|
|
33
43
|
// const rowAddedAlert =
|
|
34
44
|
// api.alertApi.internalApi.isAlertDefinitionForAddedRowChangeEvent(alertDefinition);
|
|
35
45
|
const isRowRemovedAlert = api.alertApi.internalApi.isAlertDefinitionForRemovedRowChangeEvent(alertDefinition);
|
|
@@ -71,7 +81,7 @@ export const AlertButtonsEditor = (props) => {
|
|
|
71
81
|
buttonCommands.push(ch.name);
|
|
72
82
|
});
|
|
73
83
|
}
|
|
74
|
-
return (_jsxs(
|
|
84
|
+
return (_jsxs(Box, { className: "twa:mt-3", children: [_jsxs(Flex, { flexDirection: "row", alignItems: "center", justifyContent: "space-between", className: "twa:mb-3", children: [_jsx(Box, { className: "twa:text-2 twa:max-w-[520px]", children: "Add buttons to the notification and set actions to perform when clicked" }), _jsx(SimpleButton, { icon: "plus", onClick: () => {
|
|
75
85
|
onChange([
|
|
76
86
|
...(AlertButtons || []),
|
|
77
87
|
{
|
|
@@ -81,109 +91,110 @@ export const AlertButtonsEditor = (props) => {
|
|
|
81
91
|
},
|
|
82
92
|
},
|
|
83
93
|
]);
|
|
84
|
-
}, children: "Add" })] }), AlertButtons.map((button, index) => {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
}
|
|
106
|
-
return btn;
|
|
107
|
-
}));
|
|
108
|
-
};
|
|
109
|
-
const setTone = (tone) => {
|
|
110
|
-
onChange(AlertButtons.map((btn, i) => {
|
|
111
|
-
if (i === index) {
|
|
112
|
-
const buttonStyle = { ...btn.ButtonStyle };
|
|
113
|
-
if (tone == null) {
|
|
114
|
-
delete buttonStyle.tone;
|
|
94
|
+
}, children: "Add" })] }), _jsx(Flex, { flexDirection: "column", className: "twa:gap-3", children: AlertButtons.map((button, index) => {
|
|
95
|
+
let buttonStyle = button.ButtonStyle;
|
|
96
|
+
let buttonLabel = button.Label;
|
|
97
|
+
let btnCommands = [];
|
|
98
|
+
if (button.Command && typeof button.Command === 'string') {
|
|
99
|
+
btnCommands = [button.Command];
|
|
100
|
+
}
|
|
101
|
+
else if (button.Command && Array.isArray(button.Command)) {
|
|
102
|
+
btnCommands = button.Command;
|
|
103
|
+
}
|
|
104
|
+
// filter out the adaptable standard commands
|
|
105
|
+
const btnUserFunctions = btnCommands.filter((command) => !buttonCommands.includes(command));
|
|
106
|
+
const setVariant = (variant) => {
|
|
107
|
+
onChange(AlertButtons.map((btn, i) => {
|
|
108
|
+
if (i === index) {
|
|
109
|
+
const buttonStyle = { ...btn.ButtonStyle };
|
|
110
|
+
buttonStyle.variant = variant;
|
|
111
|
+
return {
|
|
112
|
+
...btn,
|
|
113
|
+
ButtonStyle: buttonStyle,
|
|
114
|
+
};
|
|
115
115
|
}
|
|
116
|
-
|
|
117
|
-
|
|
116
|
+
return btn;
|
|
117
|
+
}));
|
|
118
|
+
};
|
|
119
|
+
const setTone = (tone) => {
|
|
120
|
+
onChange(AlertButtons.map((btn, i) => {
|
|
121
|
+
if (i === index) {
|
|
122
|
+
const buttonStyle = { ...btn.ButtonStyle };
|
|
123
|
+
if (tone == null) {
|
|
124
|
+
delete buttonStyle.tone;
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
buttonStyle.tone = tone;
|
|
128
|
+
}
|
|
129
|
+
return {
|
|
130
|
+
...btn,
|
|
131
|
+
ButtonStyle: buttonStyle,
|
|
132
|
+
};
|
|
118
133
|
}
|
|
119
|
-
return
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
134
|
+
return btn;
|
|
135
|
+
}));
|
|
136
|
+
};
|
|
137
|
+
const handleCommandChange = (checked, commandName) => {
|
|
138
|
+
let commands = btnCommands;
|
|
139
|
+
if (!checked) {
|
|
140
|
+
// remove current Command
|
|
141
|
+
commands = commands.filter((a) => a !== commandName);
|
|
123
142
|
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
};
|
|
127
|
-
const handleCommandChange = (checked, commandName) => {
|
|
128
|
-
let commands = btnCommands;
|
|
129
|
-
if (!checked) {
|
|
130
|
-
// remove current Command
|
|
131
|
-
commands = commands.filter((a) => a !== commandName);
|
|
132
|
-
}
|
|
133
|
-
else {
|
|
134
|
-
commands = [...commands, commandName];
|
|
135
|
-
}
|
|
136
|
-
onChange(AlertButtons.map((btn, i) => {
|
|
137
|
-
if (i === index) {
|
|
138
|
-
return {
|
|
139
|
-
...btn,
|
|
140
|
-
Command: commands.length ? commands : undefined,
|
|
141
|
-
};
|
|
143
|
+
else {
|
|
144
|
+
commands = [...commands, commandName];
|
|
142
145
|
}
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
146
|
+
onChange(AlertButtons.map((btn, i) => {
|
|
147
|
+
if (i === index) {
|
|
148
|
+
return {
|
|
149
|
+
...btn,
|
|
150
|
+
Command: commands.length ? commands : undefined,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
return btn;
|
|
154
|
+
}));
|
|
155
|
+
};
|
|
156
|
+
let iconSelector = null;
|
|
157
|
+
if (!button.icon || (button.icon && 'name' in button.icon)) {
|
|
158
|
+
iconSelector = (_jsx(AdaptableIconSelector, { value: button.icon && 'name' in button.icon ? button?.icon?.name : '', onChange: (iconName) => {
|
|
159
|
+
onChange(AlertButtons.map((btn) => {
|
|
160
|
+
if (btn === button) {
|
|
161
|
+
return {
|
|
162
|
+
...btn,
|
|
163
|
+
icon: {
|
|
164
|
+
name: iconName,
|
|
165
|
+
},
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
return btn;
|
|
169
|
+
}));
|
|
170
|
+
} }));
|
|
171
|
+
}
|
|
172
|
+
return (_jsxs(Card, { shadow: false, children: [_jsxs(Card.Title, { className: "twa:justify-between twa:gap-3", children: [_jsxs(Box, { className: "twa:font-medium twa:shrink-0", children: ["Button ", index + 1] }), _jsx(Flex, { justifyContent: "center", className: "twa:flex-1 twa:min-w-0", children: _jsx(AlertButtonPreview, { button: button, messageType: messageType }) }), _jsx(SimpleButton, { icon: "close", tone: "error", disabled: AlertButtons.length <= 1, variant: "text", tooltip: AlertButtons.length <= 1 ? 'Cannot remove last button' : 'Remove button', onClick: () => {
|
|
173
|
+
onChange(AlertButtons.filter((btn) => btn !== button));
|
|
174
|
+
} })] }), _jsx(Card.Body, { children: _jsxs(FormLayout, { children: [_jsx(FormRow, { label: _jsx(Box, { className: "twa:text-2", children: "Button Text" }), children: _jsx(Input, { value: buttonLabel, className: "twa:max-w-[200px]", onChange: (e) => {
|
|
175
|
+
onChange(AlertButtons.map((btn, i) => {
|
|
176
|
+
if (i === index) {
|
|
177
|
+
return { ...btn, Label: e.target.value };
|
|
178
|
+
}
|
|
179
|
+
return btn;
|
|
180
|
+
}));
|
|
181
|
+
} }) }), _jsx(FormRow, { label: _jsx(Box, { className: "twa:text-2", children: "Style" }), children: _jsxs(Flex, { flexDirection: "row", className: "twa:gap-2 twa:flex-wrap", children: [_jsx(SingleSelect, { items: ['text', 'outlined', 'raised'].map((variant) => {
|
|
182
|
+
return {
|
|
183
|
+
label: StringExtensions.CapitaliseFirstLetter(variant),
|
|
184
|
+
value: variant,
|
|
185
|
+
};
|
|
186
|
+
}), renderValue: (option) => `Variant: ${option.label}`, value: buttonStyle?.variant, onValueChange: (value) => {
|
|
187
|
+
setVariant(value);
|
|
188
|
+
} }), _jsx(SingleSelect, { items: TONE_OPTIONS, onValueChange: (value) => {
|
|
189
|
+
if (value === 'text') {
|
|
190
|
+
setTone(null);
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
setTone(value);
|
|
194
|
+
}, value: buttonStyle?.tone ?? 'text' })] }) }), _jsx(FormRow, { label: _jsx(Box, { className: "twa:text-2", children: "Actions" }), children: _jsxs(Flex, { flexDirection: "row", className: "twa:gap-3 twa:flex-wrap", children: [buttonCommands.map((commandName) => {
|
|
195
|
+
return (_jsx(CheckBox, { onChange: (checked) => handleCommandChange(checked, commandName), checked: button.Command === commandName ||
|
|
196
|
+
(Array.isArray(button.Command) &&
|
|
197
|
+
button.Command.includes(commandName)), children: _jsx(Box, { className: "twa:text-2", children: sentenceCase(commandName) }) }, commandName));
|
|
198
|
+
}), btnUserFunctions.length ? (_jsx(CheckBox, { checked: true, disabled: true, children: _jsxs(Box, { className: "twa:text-2", children: ["User function", btnUserFunctions.length > 1 ? 's' : '', ":", ' ', btnUserFunctions.join(', ')] }) })) : null] }) }), iconSelector && (_jsx(FormRow, { label: _jsx(Box, { className: "twa:text-2", children: "Icon" }), children: _jsx(Box, { children: iconSelector }) }))] }) })] }, index));
|
|
199
|
+
}) })] }));
|
|
189
200
|
};
|
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
-
import { Tabs } from '../../../components/Tabs';
|
|
3
2
|
import Radio, { RadioGroup } from '../../../components/Radio';
|
|
4
3
|
import { SummaryText, useOnePageAdaptableWizardContext } from '../../Wizard/OnePageAdaptableWizard';
|
|
5
4
|
import { Tag } from '../../../components/Tag';
|
|
6
|
-
import FormLayout, { FormRow } from '../../../components/FormLayout';
|
|
7
5
|
import { AlertType } from '../Utilities/getAlertType';
|
|
8
6
|
import { ButtonInfo } from '../../Components/Buttons/ButtonInfo';
|
|
9
7
|
import { AlertMessageDocsLink } from '../../../Utilities/Constants/DocumentationLinkConstants';
|
|
10
8
|
import Textarea from '../../../components/Textarea';
|
|
11
9
|
import HelpBlock from '../../../components/HelpBlock';
|
|
12
|
-
import { Box } from '../../../components/Flex';
|
|
10
|
+
import { Box, Flex } from '../../../components/Flex';
|
|
11
|
+
import { Card } from '../../../components/Card';
|
|
13
12
|
export const renderAlertMessageSummary = (alertType) => {
|
|
14
13
|
const { data } = useOnePageAdaptableWizardContext();
|
|
15
14
|
if (alertType === AlertType.Scheduled) {
|
|
16
|
-
return (_jsxs(_Fragment, { children: [_jsxs(SummaryText, { children: ["Message Type: ", _jsx(Tag, { children: data.MessageType })] }), _jsxs(SummaryText, { children: ["Header: ", _jsx(Tag, { children: data.MessageHeader || 'Not specified' })] }), _jsxs(SummaryText, { children: ["
|
|
15
|
+
return (_jsxs(_Fragment, { children: [_jsxs(SummaryText, { children: ["Message Type: ", _jsx(Tag, { children: data.MessageType })] }), _jsxs(SummaryText, { children: ["Header: ", _jsx(Tag, { children: data.MessageHeader || 'Not specified' })] }), _jsxs(SummaryText, { children: ["Body: ", _jsx(Tag, { children: data.MessageText || 'Not specified' })] })] }));
|
|
17
16
|
}
|
|
18
17
|
return (_jsxs(SummaryText, { children: ["Message Type: ", _jsx(Tag, { children: data.MessageType })] }));
|
|
19
18
|
};
|
|
@@ -40,14 +39,14 @@ export const AlertMessageWizardSection = (props) => {
|
|
|
40
39
|
MessageHeader: value,
|
|
41
40
|
});
|
|
42
41
|
};
|
|
43
|
-
return (_jsxs(
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
42
|
+
return (_jsxs(Flex, { flexDirection: "column", className: "twa:gap-3 twa:p-3", children: [_jsx(Box, { "data-name": "message-type", children: _jsxs(Card, { shadow: false, children: [_jsxs(Card.Title, { children: [_jsx(Box, { className: "twa:font-medium", children: "Message Type" }), _jsx(Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: "Choose how the Alert message is styled" })] }), _jsx(Card.Body, { children: _jsxs(RadioGroup, { value: messageType, name: "messageType", orientation: "horizontal", onRadioChange: (MessageType) => {
|
|
43
|
+
props.onChange({
|
|
44
|
+
...data,
|
|
45
|
+
MessageType,
|
|
46
|
+
});
|
|
47
|
+
}, children: [_jsx(Radio, { className: "twa:ml-1", value: "Info", children: "Info" }), _jsx(Radio, { className: "twa:ml-4", value: "Success", children: "Success" }), _jsx(Radio, { className: "twa:ml-4", value: "Warning", children: "Warning" }), _jsx(Radio, { className: "twa:ml-4", value: "Error", children: "Error" })] }) })] }) }), _jsx(Box, { "data-name": "message-header", children: _jsxs(Card, { shadow: false, children: [_jsxs(Card.Title, { children: [_jsx(Box, { className: "twa:font-medium", children: "Header" }), _jsx(Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: isScheduled
|
|
48
|
+
? 'Enter the header shown when this scheduled alert fires'
|
|
49
|
+
: 'Optional header text (leave blank to use the default)' })] }), _jsx(Card.Body, { className: "twa:p-1", children: _jsx(Textarea, { className: "twa:min-w-[300px] twa:w-full twa:max-w-[500px]", rows: 3, placeholder: isScheduled ? 'Enter header (required)' : '(Use Default Header Message)', type: 'text', autoFocus: false, value: messageHeader, onChange: (e) => onMessageHeaderChange(e) }) })] }) }), _jsx(Box, { "data-name": "message-body", children: _jsxs(Card, { shadow: false, children: [_jsxs(Card.Title, { children: [_jsx(Box, { className: "twa:font-medium", children: "Body" }), _jsx(Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: isScheduled
|
|
50
|
+
? 'Enter the message body shown when this scheduled alert fires'
|
|
51
|
+
: 'Alert message body (leave blank to show automated message based on Alert Type)' })] }), _jsxs(Card.Body, { className: "twa:p-1", children: [_jsx(Textarea, { className: "twa:min-w-[300px] twa:w-full twa:max-w-[500px]", rows: 3, type: 'text', autoFocus: false, placeholder: isScheduled ? 'Enter message (required)' : undefined, value: messageText, onChange: (e) => onMessageTextChange(e) }), showDocumentationLinks && !isScheduled && (_jsxs(HelpBlock, { "data-name": "alert-message-documentation", className: "twa:mt-3 twa:p-0 twa:text-3", children: [_jsx(ButtonInfo, { className: "twa:mr-2", onClick: () => window.open(AlertMessageDocsLink, '_blank') }), "See how to create dynamic Alert Messages using placeholders"] }))] })] }) })] }));
|
|
53
52
|
};
|