@adaptabletools/adaptable-cjs 22.0.0-canary.3 → 22.0.0-canary.4
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 +12 -3
- package/index.css.map +1 -1
- package/package.json +1 -1
- package/src/AdaptableOptions/ActionColumnOptions.d.ts +2 -2
- package/src/AdaptableOptions/CustomSortOptions.d.ts +5 -0
- package/src/AdaptableOptions/DashboardOptions.d.ts +1 -2
- package/src/AdaptableOptions/ToolPanelOptions.d.ts +1 -2
- package/src/AdaptableState/AlertState.d.ts +2 -2
- package/src/AdaptableState/ChartingState.d.ts +3 -3
- package/src/AdaptableState/Common/AdaptableAlert.d.ts +2 -2
- package/src/AdaptableState/Common/AdaptableButton.d.ts +2 -2
- package/src/AdaptableState/Common/AdaptableFlashingCell.d.ts +2 -2
- package/src/AdaptableState/Common/AdaptableObject.d.ts +25 -2
- package/src/AdaptableState/Common/RowSummary.d.ts +1 -1
- package/src/AdaptableState/Common/Schedule.d.ts +3 -4
- package/src/AdaptableState/Common/SystemStatusMessageInfo.d.ts +2 -2
- package/src/AdaptableState/CustomSortState.d.ts +2 -2
- package/src/AdaptableState/DashboardState.d.ts +2 -2
- package/src/AdaptableState/ExportState.d.ts +2 -2
- package/src/AdaptableState/FlashingCellState.d.ts +2 -2
- package/src/AdaptableState/FormatColumnState.d.ts +2 -2
- package/src/AdaptableState/LayoutState.d.ts +8 -3
- package/src/AdaptableState/NamedQueryState.d.ts +2 -2
- package/src/AdaptableState/PlusMinusState.d.ts +2 -2
- package/src/AdaptableState/ShortcutState.d.ts +2 -2
- package/src/AdaptableState/StyledColumnState.d.ts +1 -1
- package/src/AdaptableState/ThemeState.d.ts +2 -2
- package/src/Api/CustomSortApi.d.ts +6 -3
- package/src/Api/Implementation/CustomSortApiImpl.d.ts +5 -1
- package/src/Api/Implementation/CustomSortApiImpl.js +2 -2
- package/src/Api/Implementation/LayoutHelpers.js +7 -0
- package/src/Api/Implementation/ScheduleApiImpl.js +1 -0
- package/src/Redux/ActionsReducers/LayoutRedux.d.ts +1 -1
- package/src/Strategy/AlertModule.js +4 -0
- package/src/Strategy/CustomSortModule.js +4 -0
- package/src/Strategy/FlashingCellModule.js +5 -0
- package/src/Strategy/FormatColumnModule.js +4 -0
- package/src/Strategy/LayoutModule.js +4 -4
- package/src/Strategy/PlusMinusModule.js +4 -0
- package/src/Strategy/ScheduleModule.js +4 -0
- package/src/Strategy/ShortcutModule.js +4 -0
- package/src/Utilities/Extensions/StringExtensions.d.ts +2 -0
- package/src/Utilities/Extensions/StringExtensions.js +17 -0
- package/src/Utilities/Helpers/FormatHelper.js +9 -2
- package/src/Utilities/ObjectFactory.js +15 -2
- package/src/View/Alert/Utilities/getDefaultAlertDefinition.d.ts +2 -1
- package/src/View/Alert/Wizard/AlertTypeWizardSection.d.ts +5 -2
- package/src/View/Alert/Wizard/AlertTypeWizardSection.js +48 -12
- package/src/View/Alert/Wizard/AlertWizard.js +12 -8
- package/src/View/Components/Buttons/EntityListActionButtons.d.ts +1 -2
- package/src/View/Components/Buttons/SuspendToggleButton/SuspendToggleButton.d.ts +1 -2
- package/src/View/CustomSort/Wizard/CustomSortColumnWizardSection.d.ts +2 -1
- package/src/View/CustomSort/Wizard/CustomSortColumnWizardSection.js +39 -13
- package/src/View/CustomSort/Wizard/CustomSortWizard.js +4 -4
- package/src/View/DataChangeHistory/DataChangeHistoryGrid.js +1 -0
- package/src/View/FlashingCell/Wizard/FlashingCellSettingsWizardSection.d.ts +2 -1
- package/src/View/FlashingCell/Wizard/FlashingCellSettingsWizardSection.js +36 -15
- package/src/View/FlashingCell/Wizard/FlashingCellWizard.js +13 -9
- package/src/View/FormatColumn/Wizard/FormatColumnSettingsWizardSection.js +47 -29
- package/src/View/FormatColumn/Wizard/FormatColumnWizard.js +22 -11
- package/src/View/Layout/Wizard/sections/PivotColumnsSection.js +8 -0
- package/src/View/PlusMinus/Wizard/PlusMinusSettingsWizardSection.js +32 -9
- package/src/View/PlusMinus/Wizard/PlusMinusWizard.js +20 -15
- package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsIPushPull.js +12 -1
- package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsOpenFin.js +12 -1
- package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsReminder.js +12 -2
- package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsReport.js +12 -1
- package/src/View/Schedule/Wizard/ScheduleSettingsWizard/isSettingsValid.d.ts +2 -1
- package/src/View/Schedule/Wizard/ScheduleSettingsWizard/isSettingsValid.js +10 -1
- package/src/View/Shortcut/Wizard/ShortcutSettingsWizard.d.ts +2 -1
- package/src/View/Shortcut/Wizard/ShortcutSettingsWizard.js +25 -4
- package/src/View/Shortcut/Wizard/ShortcutWizard.js +18 -14
- package/src/env.js +2 -2
- package/src/layout-manager/src/LayoutManagerModel.d.ts +1 -0
- package/src/layout-manager/src/index.js +25 -7
- package/src/layout-manager/src/normalizeLayoutModel.js +3 -0
- package/src/metamodel/adaptable.metamodel.d.ts +30 -0
- package/src/metamodel/adaptable.metamodel.js +1 -1
- package/src/migration/AdaptableUpgradeHelper.js +1 -1
- package/src/migration/VersionUpgrade22.d.ts +15 -0
- package/src/migration/VersionUpgrade22.js +160 -0
- package/src/types.d.ts +1 -2
- package/tsconfig.cjs.tsbuildinfo +1 -1
- package/src/AdaptableState/Common/SuspendableObject.d.ts +0 -10
- package/src/AdaptableState/Common/SuspendableObject.js +0 -2
|
@@ -13,10 +13,11 @@ export declare const getDefaultAlertDefinition: (alertDefinition: AlertDefinitio
|
|
|
13
13
|
MessageText?: string;
|
|
14
14
|
AlertProperties?: import("../../../types").AlertProperties;
|
|
15
15
|
AlertForm?: string | import("../../../types").AlertButtonForm;
|
|
16
|
-
|
|
16
|
+
Name: string;
|
|
17
17
|
Source?: "InitialState" | "User";
|
|
18
18
|
AdaptableVersion?: import("../../../types").AdaptableVersion;
|
|
19
19
|
IsReadOnly?: boolean;
|
|
20
20
|
Tags?: import("../../../types").AdaptableObjectTag[];
|
|
21
21
|
Metadata?: any;
|
|
22
|
+
IsSuspended?: boolean;
|
|
22
23
|
};
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { AlertType } from '../Utilities/getAlertType';
|
|
3
|
+
import { AdaptableApi, AlertDefinition } from '../../../types';
|
|
4
|
+
export declare const isSettingsValid: (data: AlertDefinition, api: AdaptableApi) => true | "Name is required" | "An Alert already exists with that name";
|
|
3
5
|
export declare const renderAlertTypeSummary: (alertType: AlertType) => React.JSX.Element;
|
|
4
|
-
type
|
|
6
|
+
type AlertTypeWizardSectionProps = {
|
|
5
7
|
onAlertTypeChange: (alertType: AlertType) => void;
|
|
6
8
|
alertType: AlertType | null;
|
|
9
|
+
onChange: (data: AlertDefinition) => void;
|
|
7
10
|
};
|
|
8
|
-
export declare const AlertTypeWizardSection: (props:
|
|
11
|
+
export declare const AlertTypeWizardSection: (props: AlertTypeWizardSectionProps) => React.JSX.Element;
|
|
9
12
|
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AlertTypeWizardSection = exports.renderAlertTypeSummary = void 0;
|
|
3
|
+
exports.AlertTypeWizardSection = exports.renderAlertTypeSummary = exports.isSettingsValid = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const React = tslib_1.__importStar(require("react"));
|
|
6
6
|
const Tabs_1 = require("../../../components/Tabs");
|
|
@@ -8,21 +8,57 @@ const getAlertType_1 = require("../Utilities/getAlertType");
|
|
|
8
8
|
const TypeRadio_1 = require("../../Wizard/TypeRadio");
|
|
9
9
|
const Tag_1 = require("../../../components/Tag");
|
|
10
10
|
const Flex_1 = require("../../../components/Flex");
|
|
11
|
+
const OnePageAdaptableWizard_1 = require("../../Wizard/OnePageAdaptableWizard");
|
|
12
|
+
const FormLayout_1 = tslib_1.__importStar(require("../../../components/FormLayout"));
|
|
13
|
+
const Input_1 = tslib_1.__importDefault(require("../../../components/Input"));
|
|
14
|
+
const OnePageAdaptableWizard_2 = require("../../Wizard/OnePageAdaptableWizard");
|
|
15
|
+
const isSettingsValid = (data, api) => {
|
|
16
|
+
if (!data.Name?.trim()) {
|
|
17
|
+
return 'Name is required';
|
|
18
|
+
}
|
|
19
|
+
const allAlerts = api.alertApi.getAlertDefinitions();
|
|
20
|
+
const isDuplicateName = allAlerts.some((a) => a.Name === data.Name && a.Uuid !== data.Uuid);
|
|
21
|
+
if (isDuplicateName) {
|
|
22
|
+
return 'An Alert already exists with that name';
|
|
23
|
+
}
|
|
24
|
+
return true;
|
|
25
|
+
};
|
|
26
|
+
exports.isSettingsValid = isSettingsValid;
|
|
11
27
|
const renderAlertTypeSummary = (alertType) => {
|
|
28
|
+
const { data } = (0, OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext)();
|
|
12
29
|
const text = (0, getAlertType_1.getAlertTypeText)(alertType);
|
|
13
|
-
return (React.createElement(
|
|
14
|
-
React.createElement(
|
|
30
|
+
return (React.createElement(React.Fragment, null,
|
|
31
|
+
React.createElement(OnePageAdaptableWizard_2.SummaryText, null,
|
|
32
|
+
"Name ",
|
|
33
|
+
React.createElement(Tag_1.Tag, null, data.Name || 'Not specified')),
|
|
34
|
+
React.createElement(OnePageAdaptableWizard_2.SummaryText, null,
|
|
35
|
+
"Type ",
|
|
36
|
+
React.createElement(Tag_1.Tag, null, text))));
|
|
15
37
|
};
|
|
16
38
|
exports.renderAlertTypeSummary = renderAlertTypeSummary;
|
|
17
39
|
const AlertTypeWizardSection = (props) => {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
40
|
+
const { data } = (0, OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext)();
|
|
41
|
+
const handleNameChange = (event) => {
|
|
42
|
+
props.onChange({
|
|
43
|
+
...data,
|
|
44
|
+
Name: event.target.value,
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
return (React.createElement(Flex_1.Flex, { flexDirection: "column" },
|
|
48
|
+
React.createElement(Tabs_1.Tabs, null,
|
|
49
|
+
React.createElement(Tabs_1.Tabs.Tab, null, "Settings"),
|
|
50
|
+
React.createElement(Tabs_1.Tabs.Content, null,
|
|
51
|
+
React.createElement(FormLayout_1.default, null,
|
|
52
|
+
React.createElement(FormLayout_1.FormRow, { label: "Name" },
|
|
53
|
+
React.createElement(Input_1.default, { "data-name": "alert-name", className: "twa:flex-1 twa:max-w-[200px] twa:mr-3", onChange: handleNameChange, placeholder: "Enter Name", value: data.Name ?? '' }))))),
|
|
54
|
+
React.createElement(Tabs_1.Tabs, { className: "twa:mt-2" },
|
|
55
|
+
React.createElement(Tabs_1.Tabs.Tab, null, "Alert Type"),
|
|
56
|
+
React.createElement(Tabs_1.Tabs.Content, null,
|
|
57
|
+
React.createElement(Flex_1.Flex, { flexDirection: "column" },
|
|
58
|
+
React.createElement(TypeRadio_1.TypeRadio, { text: (0, getAlertType_1.getAlertTypeText)(getAlertType_1.AlertType.DataChange), description: "A change has been made to the Grid's underlying data", checked: props.alertType === getAlertType_1.AlertType.DataChange, onClick: () => props.onAlertTypeChange(getAlertType_1.AlertType.DataChange) }),
|
|
59
|
+
React.createElement(TypeRadio_1.TypeRadio, { text: (0, getAlertType_1.getAlertTypeText)(getAlertType_1.AlertType.RowChange), description: "A Row was added or removed from the data source", checked: props.alertType === getAlertType_1.AlertType.RowChange, onClick: () => props.onAlertTypeChange(getAlertType_1.AlertType.RowChange) }),
|
|
60
|
+
React.createElement(TypeRadio_1.TypeRadio, { text: (0, getAlertType_1.getAlertTypeText)(getAlertType_1.AlertType.Aggregation), description: "A change has been made to aggregated data (i.e. from multiple Rows)", onClick: () => props.onAlertTypeChange(getAlertType_1.AlertType.Aggregation), checked: props.alertType === getAlertType_1.AlertType.Aggregation }),
|
|
61
|
+
React.createElement(TypeRadio_1.TypeRadio, { text: (0, getAlertType_1.getAlertTypeText)(getAlertType_1.AlertType.Observable), description: "A specified change (or lack of change) over time has been observed in the Grid", onClick: () => props.onAlertTypeChange(getAlertType_1.AlertType.Observable), checked: props.alertType === getAlertType_1.AlertType.Observable }),
|
|
62
|
+
React.createElement(TypeRadio_1.TypeRadio, { text: (0, getAlertType_1.getAlertTypeText)(getAlertType_1.AlertType.Validation), description: "A change has broken a data validation rule", checked: props.alertType === getAlertType_1.AlertType.Validation, onClick: () => props.onAlertTypeChange(getAlertType_1.AlertType.Validation) }))))));
|
|
27
63
|
};
|
|
28
64
|
exports.AlertTypeWizardSection = AlertTypeWizardSection;
|
|
@@ -29,7 +29,7 @@ const AlertWizard = (props) => {
|
|
|
29
29
|
const { api } = (0, AdaptableContext_1.useAdaptable)();
|
|
30
30
|
const dispatch = (0, react_redux_1.useDispatch)();
|
|
31
31
|
const behaviourSpelling = api.internalApi.getCorrectEnglishVariant('Behaviour');
|
|
32
|
-
const [alertDefinition,
|
|
32
|
+
const [alertDefinition, doSetAlertDefinition] = (0, react_1.useState)(() => {
|
|
33
33
|
const alertDefinition = props.data
|
|
34
34
|
? (0, Helper_1.cloneObject)(props.data)
|
|
35
35
|
: ObjectFactory_1.default.CreateEmptyAlertDefinition();
|
|
@@ -49,6 +49,9 @@ const AlertWizard = (props) => {
|
|
|
49
49
|
alertDefinition.MessageType = alertDefinition.MessageType ?? ObjectDefaultConstants_1.ALERT_DEFAULT_MESSAGE_TYPE;
|
|
50
50
|
return alertDefinition;
|
|
51
51
|
});
|
|
52
|
+
const setAlertDefinition = (0, react_1.useCallback)((data) => {
|
|
53
|
+
doSetAlertDefinition(data);
|
|
54
|
+
}, []);
|
|
52
55
|
// Alert type is based initialy on data, but can be changed by the user
|
|
53
56
|
// the default objects do not neccesary have enough information to determine the type
|
|
54
57
|
const [alertType, setAlertType] = (0, react_1.useState)(() => {
|
|
@@ -63,22 +66,23 @@ const AlertWizard = (props) => {
|
|
|
63
66
|
}
|
|
64
67
|
props.onCloseWizard();
|
|
65
68
|
};
|
|
66
|
-
const updateAlertDefinition = (newAlertDefinition) => {
|
|
67
|
-
|
|
68
|
-
};
|
|
69
|
+
const updateAlertDefinition = (0, react_1.useCallback)((newAlertDefinition) => {
|
|
70
|
+
doSetAlertDefinition((0, mapAlertDefinition_1.mapAlertDefinition)(api, newAlertDefinition));
|
|
71
|
+
}, [api]);
|
|
69
72
|
const handleAlertTypeChange = (newAlertType) => {
|
|
70
73
|
setAlertType(newAlertType);
|
|
71
|
-
|
|
74
|
+
doSetAlertDefinition((0, getDefaultAlertDefinition_1.getDefaultAlertDefinition)(alertDefinition, newAlertType));
|
|
72
75
|
};
|
|
73
76
|
return (React.createElement(OnePageAdaptableWizard_1.OnePageAdaptableWizard, { defaultCurrentSectionName: props.defaultCurrentSectionName, moduleInfo: props.moduleInfo, modal: props.modal, data: alertDefinition, onHide: props.onCloseWizard, onFinish: handleFinish, sections: [
|
|
74
77
|
{
|
|
75
|
-
title: 'Type',
|
|
78
|
+
title: 'Name & Type',
|
|
79
|
+
isValid: AlertTypeWizardSection_1.isSettingsValid,
|
|
76
80
|
details: (React.createElement(React.Fragment, null,
|
|
77
|
-
"
|
|
81
|
+
"Enter Name and select ",
|
|
78
82
|
React.createElement("b", null, "what"),
|
|
79
83
|
" type of change in AdapTable will cause the Alert to fire")),
|
|
80
84
|
render: () => (React.createElement(Flex_1.Box, { className: "twa:p-2" },
|
|
81
|
-
React.createElement(AlertTypeWizardSection_1.AlertTypeWizardSection, { alertType: alertType, onAlertTypeChange: handleAlertTypeChange }))),
|
|
85
|
+
React.createElement(AlertTypeWizardSection_1.AlertTypeWizardSection, { alertType: alertType, onAlertTypeChange: handleAlertTypeChange, onChange: setAlertDefinition }))),
|
|
82
86
|
renderSummary: () => (0, AlertTypeWizardSection_1.renderAlertTypeSummary)(alertType),
|
|
83
87
|
},
|
|
84
88
|
{
|
|
@@ -2,8 +2,7 @@ import * as React from 'react';
|
|
|
2
2
|
import * as Redux from 'redux';
|
|
3
3
|
import { AccessLevel } from '../../../AdaptableState/Common/Entitlement';
|
|
4
4
|
import { AdaptableSharedEntityConfig } from '../../../AdaptableState/TeamSharingState';
|
|
5
|
-
import { AdaptableObject } from '../../../AdaptableState/Common/AdaptableObject';
|
|
6
|
-
import { SuspendableObject } from '../../../AdaptableState/Common/SuspendableObject';
|
|
5
|
+
import { AdaptableObject, SuspendableObject } from '../../../AdaptableState/Common/AdaptableObject';
|
|
7
6
|
export interface EntityListActionButtonsProps extends React.ClassAttributes<EntityListActionButtons> {
|
|
8
7
|
editClick?: () => void;
|
|
9
8
|
cloneClick?: () => void;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { AdaptableObject } from '../../../../AdaptableState/Common/AdaptableObject';
|
|
2
|
+
import { AdaptableObject, SuspendableObject } from '../../../../AdaptableState/Common/AdaptableObject';
|
|
3
3
|
import { AccessLevel } from '../../../../AdaptableState/Common/Entitlement';
|
|
4
|
-
import { SuspendableObject } from '../../../../AdaptableState/Common/SuspendableObject';
|
|
5
4
|
interface EntityListSuspendButtonProps {
|
|
6
5
|
onSuspend: (adaptableObject: AdaptableObject) => void;
|
|
7
6
|
onUnSuspend: (adaptableObject: AdaptableObject) => void;
|
|
@@ -3,7 +3,8 @@ import { CustomSort } from '../../../AdaptableState/CustomSortState';
|
|
|
3
3
|
export type CustomSortColumnWizardSectionProps = {
|
|
4
4
|
onChange: (data: CustomSort) => void;
|
|
5
5
|
isNew: boolean;
|
|
6
|
+
allCustomSorts: CustomSort[];
|
|
6
7
|
};
|
|
7
8
|
export declare const renderCustomSortColumn: (data: CustomSort) => React.JSX.Element;
|
|
8
|
-
export declare const isValidCustomSortColumn: (data: CustomSort) => true | string;
|
|
9
|
+
export declare const isValidCustomSortColumn: (data: CustomSort, allCustomSorts: CustomSort[]) => true | string;
|
|
9
10
|
export declare const CustomSortColumnWizardSection: (props: CustomSortColumnWizardSectionProps) => React.JSX.Element;
|
|
@@ -8,14 +8,26 @@ const Tag_1 = require("../../../components/Tag");
|
|
|
8
8
|
const ColumnSelector_1 = require("../../Components/ColumnSelector");
|
|
9
9
|
const OnePageAdaptableWizard_1 = require("../../Wizard/OnePageAdaptableWizard");
|
|
10
10
|
const Flex_1 = require("../../../components/Flex");
|
|
11
|
+
const FormLayout_1 = tslib_1.__importStar(require("../../../components/FormLayout"));
|
|
12
|
+
const Input_1 = tslib_1.__importDefault(require("../../../components/Input"));
|
|
11
13
|
const renderCustomSortColumn = (data) => {
|
|
12
14
|
const { api } = (0, OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext)();
|
|
13
15
|
return (React.createElement(Flex_1.Box, { className: "twa:text-2 twa:py-2 twa:pr-2" },
|
|
14
|
-
|
|
15
|
-
|
|
16
|
+
React.createElement(Tag_1.Tag, { className: "twa:mr-2" },
|
|
17
|
+
"Name: ",
|
|
18
|
+
data.Name),
|
|
19
|
+
React.createElement(Tag_1.Tag, null,
|
|
20
|
+
"Column: ",
|
|
21
|
+
api.columnApi.getFriendlyNameForColumnId(data.ColumnId))));
|
|
16
22
|
};
|
|
17
23
|
exports.renderCustomSortColumn = renderCustomSortColumn;
|
|
18
|
-
const isValidCustomSortColumn = (data) => {
|
|
24
|
+
const isValidCustomSortColumn = (data, allCustomSorts) => {
|
|
25
|
+
if (!data.Name) {
|
|
26
|
+
return 'Custom Sort Name cannot be blank';
|
|
27
|
+
}
|
|
28
|
+
if (allCustomSorts.some((customSort) => customSort.Name === data.Name && customSort.Uuid !== data.Uuid)) {
|
|
29
|
+
return 'A Custom Sort already exists with that name';
|
|
30
|
+
}
|
|
19
31
|
if (!data.ColumnId) {
|
|
20
32
|
return 'You have to select a Column for Custom Sort';
|
|
21
33
|
}
|
|
@@ -48,15 +60,29 @@ const CustomSortColumnWizardSection = (props) => {
|
|
|
48
60
|
});
|
|
49
61
|
});
|
|
50
62
|
}, []);
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
63
|
+
const onNameChange = (event) => {
|
|
64
|
+
props.onChange({
|
|
65
|
+
...data,
|
|
66
|
+
Name: event.target.value,
|
|
67
|
+
});
|
|
68
|
+
};
|
|
69
|
+
return (React.createElement(Flex_1.Flex, { flexDirection: "column", style: { height: '100%' } },
|
|
70
|
+
React.createElement(Tabs_1.Tabs, { className: "twa:mb-3" },
|
|
71
|
+
React.createElement(Tabs_1.Tabs.Tab, null, "Settings"),
|
|
72
|
+
React.createElement(Tabs_1.Tabs.Content, null,
|
|
73
|
+
React.createElement(Flex_1.Flex, { flexDirection: "row" },
|
|
74
|
+
React.createElement(FormLayout_1.default, { className: "twa:max-w-[300px] twa:w-full" },
|
|
75
|
+
React.createElement(FormLayout_1.FormRow, { label: "Name" },
|
|
76
|
+
React.createElement(Input_1.default, { className: "twa:w-full", "data-name": "custom-sort-name", onChange: onNameChange, value: data?.Name ?? '' })))))),
|
|
77
|
+
React.createElement(Tabs_1.Tabs, { style: { flex: 1, minHeight: 0 } },
|
|
78
|
+
React.createElement(Tabs_1.Tabs.Tab, null, "Column"),
|
|
79
|
+
React.createElement(Tabs_1.Tabs.Content, null,
|
|
80
|
+
React.createElement(ColumnSelector_1.NewColumnSelector, { availableColumns: sortableCols, selected: data.ColumnId ? [data.ColumnId] : [], singleSelect: true, onChange: (ids) => {
|
|
81
|
+
props.onChange({
|
|
82
|
+
...data,
|
|
83
|
+
SortedValues: [],
|
|
84
|
+
ColumnId: ids[0],
|
|
85
|
+
});
|
|
86
|
+
}, allowReorder: false })))));
|
|
61
87
|
};
|
|
62
88
|
exports.CustomSortColumnWizardSection = CustomSortColumnWizardSection;
|
|
@@ -41,14 +41,14 @@ const CustomSortWizard = (props) => {
|
|
|
41
41
|
};
|
|
42
42
|
return (React.createElement(OnePageAdaptableWizard_1.OnePageAdaptableWizard, { defaultCurrentSectionName: props.defaultCurrentSectionName, moduleInfo: props.moduleInfo, data: customSort, onFinish: handleFinish, onHide: props.onCloseWizard, sections: [
|
|
43
43
|
{
|
|
44
|
-
isValid: CustomSortColumnWizardSection_1.isValidCustomSortColumn,
|
|
44
|
+
isValid: (data) => (0, CustomSortColumnWizardSection_1.isValidCustomSortColumn)(data, allCustomSorts),
|
|
45
45
|
renderSummary: CustomSortColumnWizardSection_1.renderCustomSortColumn,
|
|
46
|
-
details: '
|
|
46
|
+
details: 'Enter Name and select a Column for Custom Sort',
|
|
47
47
|
render: () => {
|
|
48
48
|
return (React.createElement(Flex_1.Box, { className: "twa:p-2 twa:h-full" },
|
|
49
|
-
React.createElement(CustomSortColumnWizardSection_1.CustomSortColumnWizardSection, { isNew: props.isNew, onChange: setCustomSort })));
|
|
49
|
+
React.createElement(CustomSortColumnWizardSection_1.CustomSortColumnWizardSection, { isNew: props.isNew, onChange: setCustomSort, allCustomSorts: allCustomSorts })));
|
|
50
50
|
},
|
|
51
|
-
title: 'Column',
|
|
51
|
+
title: 'Name & Column',
|
|
52
52
|
},
|
|
53
53
|
{
|
|
54
54
|
title: 'Sort Order',
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { FlashingCellDefinition } from '../../../types';
|
|
2
|
+
import { AdaptableApi, FlashingCellDefinition } from '../../../types';
|
|
3
3
|
type FlashingAlertDurationWizardSectionProps = {
|
|
4
4
|
readOnly?: boolean;
|
|
5
5
|
flashingCell?: FlashingCellDefinition;
|
|
6
6
|
onChange: (data: FlashingCellDefinition) => void;
|
|
7
7
|
};
|
|
8
|
+
export declare const isSettingsValid: (data: FlashingCellDefinition, api: AdaptableApi) => true | "Name is required" | "A Flashing Cell already exists with that name";
|
|
8
9
|
export declare const renderFlashingAlertSettingsSummary: (flashingAlert: FlashingCellDefinition) => React.JSX.Element;
|
|
9
10
|
export declare const FlashingAlertSettingsWizardSection: (props: FlashingAlertDurationWizardSectionProps) => React.JSX.Element;
|
|
10
11
|
export {};
|
|
@@ -1,20 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FlashingAlertSettingsWizardSection = exports.renderFlashingAlertSettingsSummary = void 0;
|
|
3
|
+
exports.FlashingAlertSettingsWizardSection = exports.renderFlashingAlertSettingsSummary = exports.isSettingsValid = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const React = tslib_1.__importStar(require("react"));
|
|
6
6
|
const react_1 = require("react");
|
|
7
7
|
const Input_1 = tslib_1.__importDefault(require("../../../components/Input"));
|
|
8
8
|
const usePrevious_1 = tslib_1.__importDefault(require("../../../components/utils/usePrevious"));
|
|
9
|
-
const Radio_1 = tslib_1.__importDefault(require("../../../components/Radio"));
|
|
10
9
|
const Tabs_1 = require("../../../components/Tabs");
|
|
11
10
|
const OnePageAdaptableWizard_1 = require("../../Wizard/OnePageAdaptableWizard");
|
|
12
11
|
const CodeBlock_1 = require("../../../components/CodeBlock");
|
|
13
12
|
const FormLayout_1 = tslib_1.__importStar(require("../../../components/FormLayout"));
|
|
14
13
|
const CheckBox_1 = require("../../../components/CheckBox");
|
|
15
14
|
const Flex_1 = require("../../../components/Flex");
|
|
15
|
+
const Tag_1 = require("../../../components/Tag");
|
|
16
|
+
const OnePageAdaptableWizard_2 = require("../../Wizard/OnePageAdaptableWizard");
|
|
17
|
+
const isSettingsValid = (data, api) => {
|
|
18
|
+
if (!data.Name?.trim()) {
|
|
19
|
+
return 'Name is required';
|
|
20
|
+
}
|
|
21
|
+
const allFlashingCells = api.flashingCellApi.getFlashingCellDefinitions();
|
|
22
|
+
const isDuplicateName = allFlashingCells.some((fc) => fc.Name === data.Name && fc.Uuid !== data.Uuid);
|
|
23
|
+
if (isDuplicateName) {
|
|
24
|
+
return 'A Flashing Cell already exists with that name';
|
|
25
|
+
}
|
|
26
|
+
return true;
|
|
27
|
+
};
|
|
28
|
+
exports.isSettingsValid = isSettingsValid;
|
|
16
29
|
const renderFlashingAlertSettingsSummary = (flashingAlert) => {
|
|
17
30
|
return (React.createElement(React.Fragment, null,
|
|
31
|
+
React.createElement(OnePageAdaptableWizard_2.SummaryText, null,
|
|
32
|
+
"Name ",
|
|
33
|
+
React.createElement(Tag_1.Tag, null, flashingAlert.Name || 'Not specified')),
|
|
18
34
|
React.createElement(Flex_1.Box, { className: "twa:text-2" }, flashingAlert.FlashDuration === 'always' ? (React.createElement(React.Fragment, null, "Flashing is never removed")) : (React.createElement(React.Fragment, null,
|
|
19
35
|
"Flashing is removed after ",
|
|
20
36
|
React.createElement(CodeBlock_1.CodeBlock, null, flashingAlert.FlashDuration),
|
|
@@ -25,6 +41,12 @@ exports.renderFlashingAlertSettingsSummary = renderFlashingAlertSettingsSummary;
|
|
|
25
41
|
const FlashingAlertSettingsWizardSection = (props) => {
|
|
26
42
|
let { data: flashingCell } = (0, OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext)();
|
|
27
43
|
flashingCell = flashingCell ?? props.flashingCell;
|
|
44
|
+
const handleNameChange = (event) => {
|
|
45
|
+
props.onChange({
|
|
46
|
+
...flashingCell,
|
|
47
|
+
Name: event.target.value,
|
|
48
|
+
});
|
|
49
|
+
};
|
|
28
50
|
const setDuration = (FlashDuration) => {
|
|
29
51
|
props.onChange({ ...flashingCell, FlashDuration: FlashDuration });
|
|
30
52
|
};
|
|
@@ -63,24 +85,23 @@ const FlashingAlertSettingsWizardSection = (props) => {
|
|
|
63
85
|
React.createElement(Tabs_1.Tabs.Tab, null, "Flashing Cell Settings"),
|
|
64
86
|
React.createElement(Tabs_1.Tabs.Content, null,
|
|
65
87
|
React.createElement(FormLayout_1.default, null,
|
|
66
|
-
React.createElement(FormLayout_1.FormRow, { label: "
|
|
67
|
-
React.createElement(
|
|
68
|
-
React.createElement(Radio_1.default, { "data-name": "duration-type-number", checked: duration !== 'always', tabIndex: -1, onChange: () => handleTypeChange('number') }, "Limited (ms)")),
|
|
69
|
-
React.createElement(FormLayout_1.FormRow, { label: "" },
|
|
70
|
-
duration !== 'always' && (React.createElement(Flex_1.Flex, { flexDirection: "row", alignItems: "baseline" },
|
|
71
|
-
React.createElement(Flex_1.Box, { className: "twa:text-2 twa:mr-2" }, "After"),
|
|
72
|
-
React.createElement(Input_1.default, { "data-name": "duration-input", readOnly: props.readOnly, type: "text", name: "value", ref: inputRef, className: "twa:mt-2 twa:mr-1", value: duration, onChange: (event) => {
|
|
73
|
-
const value = event.target.value;
|
|
74
|
-
setDuration(isNaN(Number(value)) ? 500 : Number(value));
|
|
75
|
-
} }),
|
|
76
|
-
React.createElement(Flex_1.Box, { className: "twa:text-2" }, "milliseconds"))),
|
|
77
|
-
duration === 'always' && (React.createElement(Flex_1.Box, { className: "twa:text-3 twa:h-[43px]" }, "Persists the flashing style indeterminately - can be removed manually"))),
|
|
88
|
+
React.createElement(FormLayout_1.FormRow, { label: "Name" },
|
|
89
|
+
React.createElement(Input_1.default, { "data-name": "flashing-cell-name", className: "twa:flex-1 twa:mr-3", onChange: handleNameChange, placeholder: "Enter Name", value: flashingCell.Name ?? '' })),
|
|
78
90
|
React.createElement(FormLayout_1.FormRow, { label: "Flash Target" },
|
|
79
91
|
React.createElement(CheckBox_1.CheckBox, { "data-name": "flashing-target", onChange: (checked) => handleTargetChange('cell', checked), className: "twa:mr-3", checked: flashingCell?.FlashTarget === 'cell' ||
|
|
80
92
|
flashingCell?.FlashTarget?.includes?.('cell'), tabIndex: -1 }, "Cell"),
|
|
81
93
|
React.createElement(CheckBox_1.CheckBox, { "data-name": "flashing-target-row", className: "twa:mr-3", onChange: (checked) => handleTargetChange('row', checked), checked: flashingCell?.FlashTarget === 'row' ||
|
|
82
94
|
flashingCell?.FlashTarget?.includes?.('row'), tabIndex: -1 }, "Row"),
|
|
83
95
|
React.createElement(CheckBox_1.CheckBox, { "data-name": "flashing-target-aggFuncCell", onChange: (checked) => handleTargetChange('aggFuncCell', checked), checked: flashingCell?.FlashTarget === 'aggFuncCell' ||
|
|
84
|
-
flashingCell?.FlashTarget?.includes?.('aggFuncCell'), tabIndex: -1 }, "Aggregated Function Cell"))
|
|
96
|
+
flashingCell?.FlashTarget?.includes?.('aggFuncCell'), tabIndex: -1 }, "Aggregated Function Cell")),
|
|
97
|
+
React.createElement(FormLayout_1.FormRow, { label: "Duration" },
|
|
98
|
+
React.createElement(Flex_1.Flex, { alignItems: "center" },
|
|
99
|
+
React.createElement(CheckBox_1.CheckBox, { "data-name": "duration-always", checked: duration === 'always', onChange: (checked) => handleTypeChange(checked ? 'always' : 'number'), className: "twa:mr-4", tabIndex: -1 }, "Always"),
|
|
100
|
+
duration !== 'always' && (React.createElement(React.Fragment, null,
|
|
101
|
+
React.createElement(Input_1.default, { "data-name": "duration-input", readOnly: props.readOnly, type: "number", name: "value", ref: inputRef, className: "twa:w-20 twa:mr-2", value: duration, onChange: (event) => {
|
|
102
|
+
const value = event.target.value;
|
|
103
|
+
setDuration(isNaN(Number(value)) ? 500 : Number(value));
|
|
104
|
+
} }),
|
|
105
|
+
React.createElement(Flex_1.Box, { className: "twa:text-2" }, "ms"))))))))));
|
|
85
106
|
};
|
|
86
107
|
exports.FlashingAlertSettingsWizardSection = FlashingAlertSettingsWizardSection;
|
|
@@ -21,7 +21,7 @@ const ObjectTagsWizardSection_1 = require("../../Wizard/ObjectTagsWizardSection"
|
|
|
21
21
|
const Flex_1 = require("../../../components/Flex");
|
|
22
22
|
const FlashingCellWizard = (props) => {
|
|
23
23
|
const { api } = (0, AdaptableContext_1.useAdaptable)();
|
|
24
|
-
const [flashingCell,
|
|
24
|
+
const [flashingCell, doSetFlashingCell] = (0, react_1.useState)(() => {
|
|
25
25
|
let flashingCell = props.data
|
|
26
26
|
? (0, Helper_1.cloneObject)(props.data)
|
|
27
27
|
: ObjectFactory_1.default.CreateEmptyFlashingCellDefinition();
|
|
@@ -37,9 +37,12 @@ const FlashingCellWizard = (props) => {
|
|
|
37
37
|
}
|
|
38
38
|
return flashingCell;
|
|
39
39
|
});
|
|
40
|
+
const setFlashingCell = (0, react_1.useCallback)((data) => {
|
|
41
|
+
doSetFlashingCell(data);
|
|
42
|
+
}, []);
|
|
40
43
|
const updateProperty = (propName) => {
|
|
41
44
|
return (value) => {
|
|
42
|
-
|
|
45
|
+
doSetFlashingCell((flashingCell) => {
|
|
43
46
|
flashingCell = { ...flashingCell, [propName]: value };
|
|
44
47
|
return flashingCell;
|
|
45
48
|
});
|
|
@@ -61,6 +64,14 @@ const FlashingCellWizard = (props) => {
|
|
|
61
64
|
props.onFinishWizard(flashingCell);
|
|
62
65
|
};
|
|
63
66
|
return (React.createElement(OnePageAdaptableWizard_1.OnePageAdaptableWizard, { defaultCurrentSectionName: props.defaultCurrentSectionName, moduleInfo: props.moduleInfo, data: flashingCell, onHide: props.onCloseWizard, onFinish: handleFinish, sections: [
|
|
67
|
+
{
|
|
68
|
+
details: 'Set Name, Duration and Target Properties',
|
|
69
|
+
isValid: FlashingCellSettingsWizardSection_1.isSettingsValid,
|
|
70
|
+
render: () => (React.createElement(Flex_1.Box, { className: "twa:p-2" },
|
|
71
|
+
React.createElement(FlashingCellSettingsWizardSection_1.FlashingAlertSettingsWizardSection, { onChange: setFlashingCell }))),
|
|
72
|
+
renderSummary: FlashingCellSettingsWizardSection_1.renderFlashingAlertSettingsSummary,
|
|
73
|
+
title: 'Settings',
|
|
74
|
+
},
|
|
64
75
|
{
|
|
65
76
|
details: 'Specify which data changes should trigger Cell Flashing',
|
|
66
77
|
isValid: NewScopeComponent_1.isScopeValid,
|
|
@@ -84,13 +95,6 @@ const FlashingCellWizard = (props) => {
|
|
|
84
95
|
renderSummary: FlashingCellStyleWizardSection_1.renderFlashingAlertStyleSummary,
|
|
85
96
|
title: 'Flash Styles',
|
|
86
97
|
},
|
|
87
|
-
{
|
|
88
|
-
details: 'Set Duration and Target Properties',
|
|
89
|
-
render: () => (React.createElement(Flex_1.Box, { className: "twa:p-2" },
|
|
90
|
-
React.createElement(FlashingCellSettingsWizardSection_1.FlashingAlertSettingsWizardSection, { onChange: setFlashingCell }))),
|
|
91
|
-
renderSummary: FlashingCellSettingsWizardSection_1.renderFlashingAlertSettingsSummary,
|
|
92
|
-
title: 'Settings',
|
|
93
|
-
},
|
|
94
98
|
{
|
|
95
99
|
details: 'Select Flashing Cell Tags',
|
|
96
100
|
title: 'Tags',
|
|
@@ -9,9 +9,13 @@ const OnePageAdaptableWizard_1 = require("../../Wizard/OnePageAdaptableWizard");
|
|
|
9
9
|
const Tag_1 = require("../../../components/Tag");
|
|
10
10
|
const Radio_1 = tslib_1.__importStar(require("../../../components/Radio"));
|
|
11
11
|
const Flex_1 = require("../../../components/Flex");
|
|
12
|
-
const
|
|
12
|
+
const Tabs_1 = require("../../../components/Tabs");
|
|
13
|
+
const Input_1 = tslib_1.__importDefault(require("../../../components/Input"));
|
|
13
14
|
const renderFormatColumnSettingsSummary = (data) => {
|
|
14
15
|
return (React.createElement(Flex_1.Box, { className: "twa:p-2" },
|
|
16
|
+
React.createElement(Flex_1.Box, { className: "twa:mt-3" },
|
|
17
|
+
"Name ",
|
|
18
|
+
React.createElement(Tag_1.Tag, null, data.Name)),
|
|
15
19
|
React.createElement(Flex_1.Box, { className: "twa:mt-3" },
|
|
16
20
|
"Data Rows ",
|
|
17
21
|
React.createElement(Tag_1.Tag, null, data.RowScope?.ExcludeDataRows ? 'no' : 'yes')),
|
|
@@ -35,6 +39,12 @@ const renderFormatColumnSettingsSummary = (data) => {
|
|
|
35
39
|
exports.renderFormatColumnSettingsSummary = renderFormatColumnSettingsSummary;
|
|
36
40
|
const FormatColumnSettingsWizardSection = (props) => {
|
|
37
41
|
const { data } = (0, OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext)();
|
|
42
|
+
const onNameChange = (event) => {
|
|
43
|
+
props.onChange({
|
|
44
|
+
...data,
|
|
45
|
+
Name: event.target.value,
|
|
46
|
+
});
|
|
47
|
+
};
|
|
38
48
|
const onExcludeDataRowsChanged = (ExcludeDataRows) => {
|
|
39
49
|
props.onChange({
|
|
40
50
|
...data,
|
|
@@ -71,33 +81,41 @@ const FormatColumnSettingsWizardSection = (props) => {
|
|
|
71
81
|
},
|
|
72
82
|
});
|
|
73
83
|
};
|
|
74
|
-
return (React.createElement(
|
|
75
|
-
React.createElement(
|
|
76
|
-
|
|
77
|
-
React.createElement(
|
|
78
|
-
React.createElement(
|
|
79
|
-
|
|
80
|
-
React.createElement(FormLayout_1.FormRow, { label: "
|
|
81
|
-
React.createElement(
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
React.createElement(Radio_1.
|
|
84
|
+
return (React.createElement(Flex_1.Flex, { flexDirection: "column", style: { height: '100%' } },
|
|
85
|
+
React.createElement(Tabs_1.Tabs, { className: "twa:mb-3" },
|
|
86
|
+
React.createElement(Tabs_1.Tabs.Tab, null, "Settings"),
|
|
87
|
+
React.createElement(Tabs_1.Tabs.Content, null,
|
|
88
|
+
React.createElement(Flex_1.Flex, { flexDirection: "row" },
|
|
89
|
+
React.createElement(FormLayout_1.default, { className: "twa:max-w-[300px] twa:w-full" },
|
|
90
|
+
React.createElement(FormLayout_1.FormRow, { label: "Name" },
|
|
91
|
+
React.createElement(Input_1.default, { className: "twa:w-full", "data-name": "format-column-name", onChange: onNameChange, value: data?.Name ?? '' })))))),
|
|
92
|
+
React.createElement(Tabs_1.Tabs, null,
|
|
93
|
+
React.createElement(Tabs_1.Tabs.Tab, null, "Configuration"),
|
|
94
|
+
React.createElement(Tabs_1.Tabs.Content, null,
|
|
95
|
+
React.createElement(Flex_1.Flex, { flexDirection: "row" },
|
|
96
|
+
React.createElement(FormLayout_1.default, null,
|
|
97
|
+
data.Target === 'cell' && (React.createElement(React.Fragment, null,
|
|
98
|
+
React.createElement(FormLayout_1.FormRow, { label: "Exclude Data Rows:" },
|
|
99
|
+
React.createElement(Flex_1.Flex, { alignItems: "center", className: "twa:ml-2" },
|
|
100
|
+
React.createElement(CheckBox_1.CheckBox, { "data-name": "exclude-data-rows-checkbox", checked: data.RowScope?.ExcludeDataRows, onChange: onExcludeDataRowsChanged, className: "twa:mr-2" }))),
|
|
101
|
+
React.createElement(FormLayout_1.FormRow, { label: "Exclude Group Rows:" },
|
|
102
|
+
React.createElement(Flex_1.Flex, { alignItems: "center", className: "twa:ml-2" },
|
|
103
|
+
React.createElement(CheckBox_1.CheckBox, { "data-name": "exclude-grouped-rows-checkbox", checked: data.RowScope?.ExcludeGroupRows, onChange: onExcludeGroupedRowsChanged, className: "twa:mr-2" }))),
|
|
104
|
+
React.createElement(FormLayout_1.FormRow, { label: "Exclude Row Summaries:" },
|
|
105
|
+
React.createElement(Flex_1.Flex, { alignItems: "center", className: "twa:ml-2" },
|
|
106
|
+
React.createElement(CheckBox_1.CheckBox, { "data-name": "exclude-summary-rows-checkbox", checked: data.RowScope?.ExcludeSummaryRows, onChange: onExcludeSummaryRowsChanged, className: "twa:mr-2" }))),
|
|
107
|
+
React.createElement(FormLayout_1.FormRow, { label: "Exclude Total Rows:" },
|
|
108
|
+
React.createElement(Flex_1.Flex, { alignItems: "center", className: "twa:ml-2" },
|
|
109
|
+
React.createElement(CheckBox_1.CheckBox, { "data-name": "exclude-total-rows-checkbox", checked: data.RowScope?.ExcludeTotalRows, onChange: onExcludeTotalRowsChanged, className: "twa:mr-2" }))))),
|
|
110
|
+
React.createElement(FormLayout_1.FormRow, { label: "Apply on Column Group:" },
|
|
111
|
+
React.createElement(Radio_1.RadioGroup, { value: data.ColumnGroupScope || 'Both', name: "columnGroupScope", orientation: "horizontal", onRadioChange: (columnGroupScope) => {
|
|
112
|
+
props.onChange({
|
|
113
|
+
...data,
|
|
114
|
+
ColumnGroupScope: columnGroupScope,
|
|
115
|
+
});
|
|
116
|
+
} },
|
|
117
|
+
React.createElement(Radio_1.default, { className: "twa:ml-1", value: "Both" }, "Always"),
|
|
118
|
+
React.createElement(Radio_1.default, { className: "twa:ml-4", value: "Expanded" }, "When Expanded"),
|
|
119
|
+
React.createElement(Radio_1.default, { className: "twa:ml-4", value: "Collapsed" }, "When Collapsed")))))))));
|
|
102
120
|
};
|
|
103
121
|
exports.FormatColumnSettingsWizardSection = FormatColumnSettingsWizardSection;
|