@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.
Files changed (85) hide show
  1. package/index.css +12 -3
  2. package/index.css.map +1 -1
  3. package/package.json +1 -1
  4. package/src/AdaptableOptions/ActionColumnOptions.d.ts +2 -2
  5. package/src/AdaptableOptions/CustomSortOptions.d.ts +5 -0
  6. package/src/AdaptableOptions/DashboardOptions.d.ts +1 -2
  7. package/src/AdaptableOptions/ToolPanelOptions.d.ts +1 -2
  8. package/src/AdaptableState/AlertState.d.ts +2 -2
  9. package/src/AdaptableState/ChartingState.d.ts +3 -3
  10. package/src/AdaptableState/Common/AdaptableAlert.d.ts +2 -2
  11. package/src/AdaptableState/Common/AdaptableButton.d.ts +2 -2
  12. package/src/AdaptableState/Common/AdaptableFlashingCell.d.ts +2 -2
  13. package/src/AdaptableState/Common/AdaptableObject.d.ts +25 -2
  14. package/src/AdaptableState/Common/RowSummary.d.ts +1 -1
  15. package/src/AdaptableState/Common/Schedule.d.ts +3 -4
  16. package/src/AdaptableState/Common/SystemStatusMessageInfo.d.ts +2 -2
  17. package/src/AdaptableState/CustomSortState.d.ts +2 -2
  18. package/src/AdaptableState/DashboardState.d.ts +2 -2
  19. package/src/AdaptableState/ExportState.d.ts +2 -2
  20. package/src/AdaptableState/FlashingCellState.d.ts +2 -2
  21. package/src/AdaptableState/FormatColumnState.d.ts +2 -2
  22. package/src/AdaptableState/LayoutState.d.ts +8 -3
  23. package/src/AdaptableState/NamedQueryState.d.ts +2 -2
  24. package/src/AdaptableState/PlusMinusState.d.ts +2 -2
  25. package/src/AdaptableState/ShortcutState.d.ts +2 -2
  26. package/src/AdaptableState/StyledColumnState.d.ts +1 -1
  27. package/src/AdaptableState/ThemeState.d.ts +2 -2
  28. package/src/Api/CustomSortApi.d.ts +6 -3
  29. package/src/Api/Implementation/CustomSortApiImpl.d.ts +5 -1
  30. package/src/Api/Implementation/CustomSortApiImpl.js +2 -2
  31. package/src/Api/Implementation/LayoutHelpers.js +7 -0
  32. package/src/Api/Implementation/ScheduleApiImpl.js +1 -0
  33. package/src/Redux/ActionsReducers/LayoutRedux.d.ts +1 -1
  34. package/src/Strategy/AlertModule.js +4 -0
  35. package/src/Strategy/CustomSortModule.js +4 -0
  36. package/src/Strategy/FlashingCellModule.js +5 -0
  37. package/src/Strategy/FormatColumnModule.js +4 -0
  38. package/src/Strategy/LayoutModule.js +4 -4
  39. package/src/Strategy/PlusMinusModule.js +4 -0
  40. package/src/Strategy/ScheduleModule.js +4 -0
  41. package/src/Strategy/ShortcutModule.js +4 -0
  42. package/src/Utilities/Extensions/StringExtensions.d.ts +2 -0
  43. package/src/Utilities/Extensions/StringExtensions.js +17 -0
  44. package/src/Utilities/Helpers/FormatHelper.js +9 -2
  45. package/src/Utilities/ObjectFactory.js +15 -2
  46. package/src/View/Alert/Utilities/getDefaultAlertDefinition.d.ts +2 -1
  47. package/src/View/Alert/Wizard/AlertTypeWizardSection.d.ts +5 -2
  48. package/src/View/Alert/Wizard/AlertTypeWizardSection.js +48 -12
  49. package/src/View/Alert/Wizard/AlertWizard.js +12 -8
  50. package/src/View/Components/Buttons/EntityListActionButtons.d.ts +1 -2
  51. package/src/View/Components/Buttons/SuspendToggleButton/SuspendToggleButton.d.ts +1 -2
  52. package/src/View/CustomSort/Wizard/CustomSortColumnWizardSection.d.ts +2 -1
  53. package/src/View/CustomSort/Wizard/CustomSortColumnWizardSection.js +39 -13
  54. package/src/View/CustomSort/Wizard/CustomSortWizard.js +4 -4
  55. package/src/View/DataChangeHistory/DataChangeHistoryGrid.js +1 -0
  56. package/src/View/FlashingCell/Wizard/FlashingCellSettingsWizardSection.d.ts +2 -1
  57. package/src/View/FlashingCell/Wizard/FlashingCellSettingsWizardSection.js +36 -15
  58. package/src/View/FlashingCell/Wizard/FlashingCellWizard.js +13 -9
  59. package/src/View/FormatColumn/Wizard/FormatColumnSettingsWizardSection.js +47 -29
  60. package/src/View/FormatColumn/Wizard/FormatColumnWizard.js +22 -11
  61. package/src/View/Layout/Wizard/sections/PivotColumnsSection.js +8 -0
  62. package/src/View/PlusMinus/Wizard/PlusMinusSettingsWizardSection.js +32 -9
  63. package/src/View/PlusMinus/Wizard/PlusMinusWizard.js +20 -15
  64. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsIPushPull.js +12 -1
  65. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsOpenFin.js +12 -1
  66. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsReminder.js +12 -2
  67. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsReport.js +12 -1
  68. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/isSettingsValid.d.ts +2 -1
  69. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/isSettingsValid.js +10 -1
  70. package/src/View/Shortcut/Wizard/ShortcutSettingsWizard.d.ts +2 -1
  71. package/src/View/Shortcut/Wizard/ShortcutSettingsWizard.js +25 -4
  72. package/src/View/Shortcut/Wizard/ShortcutWizard.js +18 -14
  73. package/src/env.js +2 -2
  74. package/src/layout-manager/src/LayoutManagerModel.d.ts +1 -0
  75. package/src/layout-manager/src/index.js +25 -7
  76. package/src/layout-manager/src/normalizeLayoutModel.js +3 -0
  77. package/src/metamodel/adaptable.metamodel.d.ts +30 -0
  78. package/src/metamodel/adaptable.metamodel.js +1 -1
  79. package/src/migration/AdaptableUpgradeHelper.js +1 -1
  80. package/src/migration/VersionUpgrade22.d.ts +15 -0
  81. package/src/migration/VersionUpgrade22.js +160 -0
  82. package/src/types.d.ts +1 -2
  83. package/tsconfig.cjs.tsbuildinfo +1 -1
  84. package/src/AdaptableState/Common/SuspendableObject.d.ts +0 -10
  85. 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
- IsSuspended?: boolean;
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 AlertBehaviourWizardSectionProps = {
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: AlertBehaviourWizardSectionProps) => React.JSX.Element;
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(Flex_1.Box, null,
14
- React.createElement(Tag_1.Tag, null, text)));
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
- return (React.createElement(Tabs_1.Tabs, null,
19
- React.createElement(Tabs_1.Tabs.Tab, null, "Alert Type"),
20
- React.createElement(Tabs_1.Tabs.Content, null,
21
- React.createElement(Flex_1.Flex, { flexDirection: "column" },
22
- 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) }),
23
- 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) }),
24
- 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 }),
25
- 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 }),
26
- 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) })))));
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, setAlertDefinition] = (0, react_1.useState)(() => {
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
- setAlertDefinition((0, mapAlertDefinition_1.mapAlertDefinition)(api, newAlertDefinition));
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
- setAlertDefinition((0, getDefaultAlertDefinition_1.getDefaultAlertDefinition)(alertDefinition, newAlertType));
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
- "Select ",
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
- "Custom sort column: ",
15
- React.createElement(Tag_1.Tag, null, api.columnApi.getFriendlyNameForColumnId(data.ColumnId))));
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
- return (React.createElement(Tabs_1.Tabs, { style: { height: '100%' } },
52
- React.createElement(Tabs_1.Tabs.Tab, null, "Column"),
53
- React.createElement(Tabs_1.Tabs.Content, null,
54
- React.createElement(ColumnSelector_1.NewColumnSelector, { availableColumns: sortableCols, selected: data.ColumnId ? [data.ColumnId] : [], singleSelect: true, onChange: (ids) => {
55
- props.onChange({
56
- ...data,
57
- SortedValues: [],
58
- ColumnId: ids[0],
59
- });
60
- }, allowReorder: false }))));
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: 'Select a Column for Custom Sort',
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',
@@ -165,6 +165,7 @@ const buildAdaptableOptions = (mainAdaptableInstance, adaptableContainerId, agGr
165
165
  Revision: Date.now(),
166
166
  FormatColumns: [
167
167
  {
168
+ Name: 'Changed At',
168
169
  Scope: {
169
170
  ColumnIds: ['changeInfo.changedAt'],
170
171
  },
@@ -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: "Duration Type" },
67
- React.createElement(Radio_1.default, { "data-name": "duration-type-always", className: "twa:mr-3", checked: duration == 'always', tabIndex: -1, onChange: () => handleTypeChange('always') }, "Always"),
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, setFlashingCell] = (0, react_1.useState)(() => {
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
- setFlashingCell((flashingCell) => {
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 Card_1 = require("../../../components/Card");
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(Card_1.Card, null,
75
- React.createElement(Card_1.Card.Title, null, "Settings"),
76
- React.createElement(Card_1.Card.Body, null,
77
- React.createElement(Flex_1.Flex, { flexDirection: "row" },
78
- React.createElement(FormLayout_1.default, null,
79
- data.Target === 'cell' && (React.createElement(React.Fragment, null,
80
- React.createElement(FormLayout_1.FormRow, { label: "Exclude Data Rows:" },
81
- React.createElement(Flex_1.Flex, { alignItems: "center", className: "twa:ml-2" },
82
- React.createElement(CheckBox_1.CheckBox, { "data-name": "exclude-data-rows-checkbox", checked: data.RowScope?.ExcludeDataRows, onChange: onExcludeDataRowsChanged, className: "twa:mr-2" }))),
83
- React.createElement(FormLayout_1.FormRow, { label: "Exclude Group Rows:" },
84
- React.createElement(Flex_1.Flex, { alignItems: "center", className: "twa:ml-2" },
85
- React.createElement(CheckBox_1.CheckBox, { "data-name": "exclude-grouped-rows-checkbox", checked: data.RowScope?.ExcludeGroupRows, onChange: onExcludeGroupedRowsChanged, className: "twa:mr-2" }))),
86
- React.createElement(FormLayout_1.FormRow, { label: "Exclude Row Summaries:" },
87
- React.createElement(Flex_1.Flex, { alignItems: "center", className: "twa:ml-2" },
88
- React.createElement(CheckBox_1.CheckBox, { "data-name": "exclude-summary-rows-checkbox", checked: data.RowScope?.ExcludeSummaryRows, onChange: onExcludeSummaryRowsChanged, className: "twa:mr-2" }))),
89
- React.createElement(FormLayout_1.FormRow, { label: "Exclude Total Rows:" },
90
- React.createElement(Flex_1.Flex, { alignItems: "center", className: "twa:ml-2" },
91
- React.createElement(CheckBox_1.CheckBox, { "data-name": "exclude-total-rows-checkbox", checked: data.RowScope?.ExcludeTotalRows, onChange: onExcludeTotalRowsChanged, className: "twa:mr-2" }))))),
92
- React.createElement(FormLayout_1.FormRow, { label: "Apply on Column Group:" },
93
- React.createElement(Radio_1.RadioGroup, { value: data.ColumnGroupScope || 'Both', name: "columnGroupScope", orientation: "horizontal", onRadioChange: (columnGroupScope) => {
94
- props.onChange({
95
- ...data,
96
- ColumnGroupScope: columnGroupScope,
97
- });
98
- } },
99
- React.createElement(Radio_1.default, { className: "twa:ml-1", value: "Both" }, "Always"),
100
- React.createElement(Radio_1.default, { className: "twa:ml-4", value: "Expanded" }, "Expanded"),
101
- React.createElement(Radio_1.default, { className: "twa:ml-4", value: "Collapsed" }, "Collapsed"))))))));
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;