@adaptabletools/adaptable 23.0.0-canary.9 → 23.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/index.css +13 -39
  2. package/package.json +1 -1
  3. package/src/View/Components/AdaptableObjectList/AdaptableObjectList.js +4 -6
  4. package/src/View/Components/AdaptableObjectList/objectListActionButtonStyles.d.ts +1 -1
  5. package/src/View/Components/AdaptableObjectList/objectListActionButtonStyles.js +1 -1
  6. package/src/View/Components/Buttons/SuspendToggleButton/SuspendToggleButton.js +2 -2
  7. package/src/View/Components/ToolPanel/ToolPanelPopupSections.js +5 -2
  8. package/src/View/Layout/LayoutCloneButton.js +2 -1
  9. package/src/View/Layout/Wizard/sections/RowSummarySection.js +5 -5
  10. package/src/View/StatusBar/StatusBarPopup.js +4 -0
  11. package/src/View/StyledColumn/Wizard/StyledColumnBadgeSection.js +2 -3
  12. package/src/View/StyledColumn/Wizard/StyledColumnSparklineSettingsSection.js +1 -2
  13. package/src/View/StyledColumn/Wizard/StyledColumnWizard.js +40 -11
  14. package/src/View/StyledColumn/Wizard/StyledColumnWizardBulletSection.js +1 -2
  15. package/src/View/StyledColumn/Wizard/StyledColumnWizardGradientSection.js +1 -2
  16. package/src/View/StyledColumn/Wizard/StyledColumnWizardIconSection.js +1 -2
  17. package/src/View/StyledColumn/Wizard/StyledColumnWizardRangeBarSection.js +1 -2
  18. package/src/View/StyledColumn/Wizard/StyledColumnWizardRatingSection.js +2 -2
  19. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnBadgePreview.d.ts +0 -3
  20. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnBadgePreview.js +5 -5
  21. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnBulletPreview.d.ts +0 -3
  22. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnBulletPreview.js +0 -2
  23. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnGradientPreview.d.ts +0 -3
  24. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnGradientPreview.js +1 -3
  25. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnIconPreview.d.ts +0 -3
  26. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnIconPreview.js +1 -3
  27. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnPercentBarPreview.d.ts +0 -3
  28. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnPercentBarPreview.js +0 -2
  29. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnRangeBarPreview.d.ts +0 -3
  30. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnRangeBarPreview.js +0 -2
  31. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnRatingPreview.d.ts +0 -3
  32. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnRatingPreview.js +3 -3
  33. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnSparklinePreview.d.ts +0 -3
  34. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnSparklinePreview.js +1 -3
  35. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/StyledColumnWizardStyleSection.js +1 -2
  36. package/src/View/Wizard/CollapsibleWizardCard.js +1 -1
  37. package/src/View/Wizard/OnePageAdaptableWizard.d.ts +7 -0
  38. package/src/View/Wizard/OnePageWizards.d.ts +8 -0
  39. package/src/View/Wizard/OnePageWizards.js +3 -3
  40. package/src/components/DragAndDropContext/ModuleManager.js +5 -2
  41. package/src/components/DragAndDropContext/types.d.ts +7 -0
  42. package/src/env.js +2 -2
  43. package/tsconfig.esm.tsbuildinfo +1 -1
package/index.css CHANGED
@@ -798,15 +798,15 @@
798
798
  .twa\:min-h-\[300px\] {
799
799
  min-height: 300px;
800
800
  }
801
+ .twa\:min-h-\[500px\] {
802
+ min-height: 500px;
803
+ }
801
804
  .twa\:min-h-auto {
802
805
  min-height: auto;
803
806
  }
804
807
  .twa\:min-h-auto\! {
805
808
  min-height: auto !important;
806
809
  }
807
- .twa\:min-h-full {
808
- min-height: 100%;
809
- }
810
810
  .twa\:min-h-input {
811
811
  min-height: var(--ab-input-height);
812
812
  }
@@ -1909,6 +1909,9 @@
1909
1909
  .twa\:pt-0 {
1910
1910
  padding-top: 0;
1911
1911
  }
1912
+ .twa\:pt-0\! {
1913
+ padding-top: 0 !important;
1914
+ }
1912
1915
  .twa\:pt-0\.5 {
1913
1916
  padding-top: calc(var(--ab-base-space) * 0.5);
1914
1917
  }
@@ -8014,50 +8017,17 @@
8014
8017
  box-shadow: inset 0 0 0 1px color-mix(in srgb, currentColor 24%, transparent);
8015
8018
  }
8016
8019
  }
8017
- .ab-SimpleButton.ab-ObjectListActionButton--edit {
8018
- background-color: var(--ab-color-action-edit) !important;
8019
- }
8020
- @supports (color: color-mix(in lab, red, red)) {
8021
- .ab-SimpleButton.ab-ObjectListActionButton--edit {
8022
- background-color: color-mix(in srgb, var(--ab-color-action-edit) 14%, var(--ab-color-muted)) !important;
8023
- }
8024
- }
8025
- .ab-SimpleButton.ab-ObjectListActionButton--edit {
8026
- color: var(--ab-color-action-edit);
8027
- }
8028
- .ab-SimpleButton.ab-ObjectListActionButton--suspend {
8020
+ .ab-SimpleButton.ab-ObjectListActionButton--edit, .ab-SimpleButton.ab-ObjectListActionButton--suspend, .ab-SimpleButton.ab-ObjectListActionButton--delete, .ab-SimpleButton.ab-ObjectListActionButton--share, .ab-SimpleButton.ab-ObjectListActionButton--clone {
8029
8021
  background-color: var(--ab-color-primary-foreground) !important;
8030
8022
  }
8031
8023
  @supports (color: color-mix(in lab, red, red)) {
8032
- .ab-SimpleButton.ab-ObjectListActionButton--suspend {
8024
+ .ab-SimpleButton.ab-ObjectListActionButton--edit, .ab-SimpleButton.ab-ObjectListActionButton--suspend, .ab-SimpleButton.ab-ObjectListActionButton--delete, .ab-SimpleButton.ab-ObjectListActionButton--share, .ab-SimpleButton.ab-ObjectListActionButton--clone {
8033
8025
  background-color: color-mix( in srgb, var(--ab-color-primary-foreground) 10%, var(--ab-color-muted) ) !important;
8034
8026
  }
8035
8027
  }
8036
- .ab-SimpleButton.ab-ObjectListActionButton--suspend {
8028
+ .ab-SimpleButton.ab-ObjectListActionButton--edit, .ab-SimpleButton.ab-ObjectListActionButton--suspend, .ab-SimpleButton.ab-ObjectListActionButton--delete, .ab-SimpleButton.ab-ObjectListActionButton--share, .ab-SimpleButton.ab-ObjectListActionButton--clone {
8037
8029
  color: var(--ab-color-primary-foreground);
8038
8030
  }
8039
- .ab-SimpleButton.ab-ObjectListActionButton--delete {
8040
- background-color: var(--ab-color-action-delete) !important;
8041
- }
8042
- @supports (color: color-mix(in lab, red, red)) {
8043
- .ab-SimpleButton.ab-ObjectListActionButton--delete {
8044
- background-color: color-mix(in srgb, var(--ab-color-action-delete) 14%, var(--ab-color-muted)) !important;
8045
- }
8046
- }
8047
- .ab-SimpleButton.ab-ObjectListActionButton--delete {
8048
- color: var(--ab-color-action-delete);
8049
- }
8050
- .ab-SimpleButton.ab-ObjectListActionButton--share {
8051
- background-color: var(--ab-color-action-share) !important;
8052
- }
8053
- @supports (color: color-mix(in lab, red, red)) {
8054
- .ab-SimpleButton.ab-ObjectListActionButton--share {
8055
- background-color: color-mix(in srgb, var(--ab-color-action-share) 14%, var(--ab-color-muted)) !important;
8056
- }
8057
- }
8058
- .ab-SimpleButton.ab-ObjectListActionButton--share {
8059
- color: var(--ab-color-action-share);
8060
- }
8061
8031
  .ab-SimpleButton.ab-ObjectListActionButton:hover:not(:disabled) {
8062
8032
  box-shadow: inset 0 0 0 1px currentColor;
8063
8033
  }
@@ -9067,6 +9037,10 @@
9067
9037
  .ab--theme-dark input.ab-Input[type='number']::-webkit-outer-spin-button,.ab--theme-dark input.ab-Input[type='number']::-webkit-inner-spin-button {
9068
9038
  background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="18" height="20" viewBox="4 0 18 18" version="1.1"><path fill="%23f7f7f7" d="M7 10l5 5 5-5z" transform="translate(0, 2)"/><path fill="%23f7f7f7" d="M7 14l5-5 5 5z" transform="translate(0, -6)"/></svg>') no-repeat center center;
9069
9039
  }
9040
+ .ab--theme-dark input.ab-Input[type='time']::-webkit-calendar-picker-indicator,.ab--theme-dark input.ab-Input[type='date']::-webkit-calendar-picker-indicator,.ab--theme-dark input.ab-Input[type='datetime-local']::-webkit-calendar-picker-indicator,.ab--theme-dark input.ab-Input[type='month']::-webkit-calendar-picker-indicator,.ab--theme-dark input.ab-Input[type='week']::-webkit-calendar-picker-indicator {
9041
+ filter: invert(1);
9042
+ opacity: 0.85;
9043
+ }
9070
9044
  }
9071
9045
  @property --tw-translate-x {
9072
9046
  syntax: "*";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adaptabletools/adaptable",
3
- "version": "23.0.0-canary.9",
3
+ "version": "23.0.0",
4
4
  "description": "Powerful AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements",
5
5
  "keywords": [
6
6
  "web-components",
@@ -11,10 +11,9 @@ import { ButtonEdit } from '../Buttons/ButtonEdit';
11
11
  import { ButtonShare } from '../Buttons/ButtonShare';
12
12
  import { SuspendToggleButton } from '../Buttons/SuspendToggleButton/SuspendToggleButton';
13
13
  import { Box, Flex } from '../../../components/Flex';
14
- import { twMerge } from '../../../twMerge';
15
14
  import { TagList } from '../../../components/Tag/Tag';
16
15
  import { objectListActionButtonClassName } from './objectListActionButtonStyles';
17
- const ICON_SIZE = 26;
16
+ const ICON_SIZE = 24;
18
17
  const LIST_BASE_CLASS_NAME = 'ab-Adaptable-Object-List';
19
18
  const ITEM_BASE_CLASS_NAME = `${LIST_BASE_CLASS_NAME}__Item`;
20
19
  export const AdaptableObjectListItemView = (props) => {
@@ -24,8 +23,7 @@ export const AdaptableObjectListItemView = (props) => {
24
23
  disabled: props.deleteDisabled,
25
24
  tooltip: props.deleteTooltip ?? 'Delete',
26
25
  iconSize: ICON_SIZE,
27
- ConfirmationMsg: props.deleteConfirmationMsg ??
28
- `Are you sure you want to delete this ${props.entityType}?`,
26
+ ConfirmationMsg: props.deleteConfirmationMsg ?? `Are you sure you want to delete this ${props.entityType}?`,
29
27
  ConfirmationTitle: `Delete ${props.entityType}`,
30
28
  ConfirmAction: props.deleteAction,
31
29
  accessLevel: props.accessLevel,
@@ -36,8 +34,8 @@ export const AdaptableObjectListItemView = (props) => {
36
34
  dispatch(props.deleteAction);
37
35
  };
38
36
  }
39
- const deleteActionButton = (_jsx(ButtonDelete, { ...deleteActionProps, className: twMerge(objectListActionButtonClassName('delete'), deleteActionProps.className) }));
40
- return (_jsxs(Flex, { "data-name": "adaptable-object-list-item", "data-value": props.abObject.Uuid, as: "li", className: twMerge(baseClassName, 'twa:rounded-standard', props.className), style: props.style, children: [_jsx(Box, { className: `twa:flex-1 ${baseClassName}__rows twa:gap-2 twa:flex twa:flex-col`, children: props.items.filter?.(Boolean)?.map((tag, index) => {
37
+ const deleteActionButton = (_jsx(ButtonDelete, { ...deleteActionProps, className: cn(objectListActionButtonClassName('delete'), deleteActionProps.className) }));
38
+ return (_jsxs(Flex, { "data-name": "adaptable-object-list-item", "data-value": props.abObject.Uuid, as: "li", className: cn(baseClassName, 'twa:rounded-standard', props.className), style: props.style, children: [_jsx(Box, { className: `twa:flex-1 ${baseClassName}__rows twa:gap-2 twa:flex twa:flex-col`, children: props.items.filter?.(Boolean)?.map((tag, index) => {
41
39
  const labelElement = typeof tag.label === 'function'
42
40
  ? React.createElement(tag.label, { key: index, data: props.abObject })
43
41
  : tag.label ?? tag.name;
@@ -1,2 +1,2 @@
1
- export type ObjectListActionKind = 'edit' | 'suspend' | 'delete' | 'share';
1
+ export type ObjectListActionKind = 'edit' | 'suspend' | 'delete' | 'share' | 'clone';
2
2
  export declare const objectListActionButtonClassName: (kind: ObjectListActionKind, className?: string) => string;
@@ -1,2 +1,2 @@
1
1
  import { cn } from '../../../lib/utils';
2
- export const objectListActionButtonClassName = (kind, className) => cn('ab-ObjectListActionButton', `ab-ObjectListActionButton--${kind}`, className);
2
+ export const objectListActionButtonClassName = (kind, className) => cn('ab-ObjectListActionButton', `ab-ObjectListActionButton--${kind}`, 'twa:shadow-sm', className);
@@ -3,7 +3,7 @@ import * as React from 'react';
3
3
  import SimpleButton from '../../../../components/SimpleButton';
4
4
  import { ACCESS_LEVEL_READ_ONLY } from '../../../../Utilities/Constants/GeneralConstants';
5
5
  import { cn } from '../../../../lib/utils';
6
- export const SuspendToggleButton = React.memo(({ suspendableObject, onUnSuspend, onSuspend, style, disabled, accessLevel, className, iconSize = 26, }) => {
6
+ export const SuspendToggleButton = React.memo(({ suspendableObject, onUnSuspend, onSuspend, style, disabled, accessLevel, className, iconSize = 24, }) => {
7
7
  const preparedDisabled = (accessLevel && accessLevel === ACCESS_LEVEL_READ_ONLY) || disabled;
8
8
  const isSuspended = suspendableObject.IsSuspended;
9
9
  const handleClick = React.useCallback(() => {
@@ -14,5 +14,5 @@ export const SuspendToggleButton = React.memo(({ suspendableObject, onUnSuspend,
14
14
  onSuspend(suspendableObject);
15
15
  }
16
16
  }, [isSuspended, onSuspend, onUnSuspend, suspendableObject]);
17
- return (_jsx(SimpleButton, { className: cn('ab-SuspendButton', isSuspended && 'twa:opacity-60', className), "data-name": isSuspended ? 'resume' : 'suspend', disabled: preparedDisabled, style: style, variant: "text", tone: "neutral", iconSize: iconSize, icon: isSuspended ? 'resume' : 'pause', tooltip: isSuspended ? 'Resume' : 'Suspend', accessLevel: accessLevel, onClick: handleClick }));
17
+ return (_jsx(SimpleButton, { className: cn('ab-SuspendButton', className), "data-name": isSuspended ? 'resume' : 'suspend', disabled: preparedDisabled, style: style, variant: "text", tone: "neutral", iconSize: iconSize, icon: isSuspended ? 'resume' : 'pause', tooltip: isSuspended ? 'Resume' : 'Suspend', accessLevel: accessLevel, onClick: handleClick }));
18
18
  });
@@ -14,8 +14,11 @@ export var ToolPanelConfigView;
14
14
  })(ToolPanelConfigView || (ToolPanelConfigView = {}));
15
15
  export const ToolPanelPopupSections = (props) => {
16
16
  const { api } = useAdaptable();
17
- const initialExpandedId = props.initialTab === ToolPanelConfigView.Buttons ? 'module-buttons' : 'tool-panels';
18
- const { bindCard, hasExpandedCard, expandedFillsSpace } = useWizardCardAccordion(initialExpandedId);
17
+ // Start with both cards collapsed so the user sees the popup's full
18
+ // summary at a glance and explicitly chooses which to edit. `initialTab`
19
+ // is still accepted on the props for backwards compatibility but no
20
+ // longer pre-expands a card.
21
+ const { bindCard, hasExpandedCard, expandedFillsSpace } = useWizardCardAccordion(null);
19
22
  const selectedModuleButtons = [];
20
23
  if (ArrayExtensions.IsNotNullOrEmpty(props.ToolPanelState.ModuleButtons)) {
21
24
  props.ToolPanelState.ModuleButtons.forEach((module) => {
@@ -4,11 +4,12 @@ import SimpleButton from '../../components/SimpleButton';
4
4
  import { useAdaptable } from '../AdaptableContext';
5
5
  import { isPivotLayout } from '../../Utilities/isPivotLayout';
6
6
  import { ACCESS_LEVEL_READ_ONLY } from '../../Utilities/Constants/GeneralConstants';
7
+ import { objectListActionButtonClassName } from '../Components/AdaptableObjectList/objectListActionButtonStyles';
7
8
  export const LayoutCloneButton = ({ data, accessLevel }) => {
8
9
  const adaptable = useAdaptable();
9
10
  const isDisabled = accessLevel === ACCESS_LEVEL_READ_ONLY;
10
11
  const handleClick = React.useCallback(() => {
11
12
  adaptable.api.layoutApi.showLayoutEditor(data.Name, isPivotLayout(data) ? 'pivot' : 'table', 'Clone');
12
13
  }, []);
13
- return (_jsx(SimpleButton, { onClick: handleClick, disabled: isDisabled, variant: "text", icon: "clone", tooltip: "Clone" }));
14
+ return (_jsx(SimpleButton, { onClick: handleClick, disabled: isDisabled, variant: "text", iconSize: 24, icon: "clone", tooltip: "Clone", className: objectListActionButtonClassName('clone') }));
14
15
  };
@@ -138,7 +138,7 @@ const RowSummaryEditorForm = React.memo(({ rowSummary, onChange, availableScalar
138
138
  sortUnorderedItems: false,
139
139
  }).map((colId) => adaptable.api.columnApi.getColumnWithColumnId(colId));
140
140
  }, [rowSummary.ColumnsMap]);
141
- return (_jsxs(Box, { className: "twa:flex twa:flex-col twa:gap-3 twa:h-full twa:min-h-0 twa:overflow-hidden", children: [_jsxs(FormLayout, { children: [_jsx(FormRow, { label: "Position", children: _jsx(SingleSelect, { items: [
141
+ return (_jsxs(Box, { className: "twa:flex twa:flex-col twa:gap-3 twa:h-full twa:overflow-hidden", children: [_jsxs(FormLayout, { children: [_jsx(FormRow, { label: "Position", children: _jsx(SingleSelect, { items: [
142
142
  {
143
143
  label: 'Top',
144
144
  value: 'Top',
@@ -157,7 +157,7 @@ const RowSummaryEditorForm = React.memo(({ rowSummary, onChange, availableScalar
157
157
  ...rowSummary,
158
158
  IncludeOnlyFilteredRows,
159
159
  });
160
- }, children: "Include Only Filtered Rows" }) })] }), _jsxs(Card, { shadow: false, className: "twa:flex-1 twa:min-h-0 twa:overflow-hidden twa:flex twa:flex-col", children: [_jsxs(Card.Title, { children: [_jsx(Box, { className: "twa:font-medium", children: "Column Aggregations" }), _jsx(Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: "Select columns and choose an aggregation function for each" })] }), _jsx(Card.Body, { className: "twa:flex-1 twa:min-h-0 twa:overflow-hidden twa:p-1", children: _jsx(ValueSelector, { style: { minHeight: 0, maxHeight: '100%' }, showFilterInput: true, toggleSelectionOnRowClick: false, filter: columnFilter, toIdentifier: (column) => column.columnId, toLabel: (option) => option.friendlyName ?? option.columnId, options: columns, optionLayout: "label-beside-checkbox", toListLabel: (column) => {
160
+ }, children: "Include Only Filtered Rows" }) })] }), _jsxs(Card, { shadow: false, className: "twa:flex-1 twa:min-h-0 twa:overflow-hidden twa:flex twa:flex-col", children: [_jsxs(Card.Title, { children: [_jsx(Box, { className: "twa:font-medium", children: "Column Aggregations" }), _jsx(Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: "Select columns and choose an aggregation function for each" })] }), _jsx(Card.Body, { className: "twa:flex-1 twa:min-h-0 twa:overflow-hidden twa:p-1", children: _jsx(ValueSelector, { showFilterInput: true, className: "twa:max-h-full twa:min-h-0", toggleSelectionOnRowClick: false, filter: columnFilter, toIdentifier: (column) => column.columnId, toLabel: (option) => option.friendlyName ?? option.columnId, options: columns, optionLayout: "label-beside-checkbox", toListLabel: (column) => {
161
161
  const label = column.friendlyName ?? column.columnId;
162
162
  const disabled = !(column.columnId in (rowSummary.ColumnsMap ?? {}));
163
163
  if (disabled) {
@@ -238,9 +238,9 @@ export const RowSummarySection = (props) => {
238
238
  }
239
239
  }
240
240
  };
241
- return (_jsxs(Box, { className: cn(getWizardAccordionSectionClassName(hasExpandedCard, expandedFillsSpace), 'twa:p-3'), children: [_jsx(Box, { className: "twa:text-xs twa:opacity-70 twa:mb-2 twa:max-w-[520px] twa:shrink-0", children: "Add summary rows at the top or bottom of the grid with aggregated column values" }), _jsx(Flex, { className: "twa:justify-end twa:mb-2 twa:shrink-0", children: _jsx(ButtonNew, { onClick: handleAddRowSummary, children: "Add Row Summary" }) }), _jsx(Flex, { flexDirection: "column", className: "twa:gap-3 twa:min-h-0", children: rowSummaries.map((rowSummary, index) => {
241
+ return (_jsxs(Box, { className: cn(getWizardAccordionSectionClassName(hasExpandedCard, expandedFillsSpace), 'twa:p-3'), children: [_jsx(Box, { className: "twa:text-xs twa:opacity-70 twa:mb-2 twa:max-w-[520px] twa:shrink-0", children: "Add summary rows at the top or bottom of the grid with aggregated column values" }), _jsx(Flex, { className: "twa:justify-end twa:mb-2 twa:shrink-0", children: _jsx(ButtonNew, { onClick: handleAddRowSummary, children: "Add Row Summary" }) }), _jsx(Flex, { flexDirection: "column", className: "twa:gap-3 twa:min-h-0 twa:flex-1 twa:overflow-y-auto", children: rowSummaries.map((rowSummary, index) => {
242
242
  const cardBinding = bindCard(rowSummaryCardId(index), { fillAvailable: true });
243
- return (_jsx(CollapsibleWizardCard, { ...cardBinding, surface: "panel", "data-name": `row-summary-${index}`, title: `Row Summary ${index + 1}`, help: "Configure position, filters, and column aggregations for this summary row", collapsedHelp: false, compactSummary: _jsx(RowSummaryPositionTag, { position: rowSummary.Position }), headerVisual: !cardBinding.expanded ? (_jsx(RowSummaryPositionTag, { position: rowSummary.Position })) : undefined, headerActions: _jsxs(_Fragment, { children: [cardBinding.expanded ? (_jsx(SuspendToggleButton, { iconSize: 26, className: objectListActionButtonClassName('suspend'), onSuspend: () => {
243
+ return (_jsx(CollapsibleWizardCard, { ...cardBinding, surface: "panel", "data-name": `row-summary-${index}`, title: `Row Summary ${index + 1}`, help: "Configure position, filters, and column aggregations for this summary row", collapsedHelp: false, compactSummary: _jsx(RowSummaryPositionTag, { position: rowSummary.Position }), headerVisual: !cardBinding.expanded ? (_jsx(RowSummaryPositionTag, { position: rowSummary.Position })) : undefined, headerActions: _jsxs(_Fragment, { children: [cardBinding.expanded ? (_jsx(SuspendToggleButton, { className: objectListActionButtonClassName('suspend'), onSuspend: () => {
244
244
  const newSummaries = [...rowSummaries];
245
245
  newSummaries[index] = { ...rowSummary, IsSuspended: true };
246
246
  props.onChange({ ...layout, RowSummaries: newSummaries });
@@ -248,7 +248,7 @@ export const RowSummarySection = (props) => {
248
248
  const newSummaries = [...rowSummaries];
249
249
  newSummaries[index] = { ...rowSummary, IsSuspended: false };
250
250
  props.onChange({ ...layout, RowSummaries: newSummaries });
251
- }, suspendableObject: rowSummary })) : null, _jsx(SimpleButton, { icon: "delete", variant: "text", tooltip: "Delete row summary", className: objectListActionButtonClassName('delete'), onClick: () => handleDeleteRowSummary(index) })] }), summary: _jsx(RowSummaryCardSummary, { rowSummary: rowSummary }), className: "twa:overflow-hidden twa:flex twa:flex-col", bodyClassName: "twa:min-h-[200px] twa:max-h-[420px] twa:overflow-hidden twa:flex twa:flex-col twa:!pt-0", children: _jsx(RowSummaryEditorForm, { rowSummary: rowSummary, availableScalarExpressions: availableScalarExpressions, onChange: (nextRowSummary) => {
251
+ }, suspendableObject: rowSummary })) : null, _jsx(SimpleButton, { icon: "delete", variant: "text", tooltip: "Delete row summary", className: objectListActionButtonClassName('delete'), onClick: () => handleDeleteRowSummary(index) })] }), summary: _jsx(RowSummaryCardSummary, { rowSummary: rowSummary }), className: cn('twa:overflow-hidden twa:flex twa:flex-col', cardBinding.expanded && 'twa:min-h-[500px]'), bodyClassName: " twa:overflow-hidden twa:flex twa:flex-col twa:pt-0!", children: _jsx(RowSummaryEditorForm, { rowSummary: rowSummary, availableScalarExpressions: availableScalarExpressions, onChange: (nextRowSummary) => {
252
252
  const newSummaries = [...rowSummaries];
253
253
  newSummaries[index] = nextRowSummary;
254
254
  props.onChange({
@@ -47,18 +47,22 @@ export const StatusBarPopup = (props) => {
47
47
  moduleShortcutIds.push(item.Id);
48
48
  }
49
49
  });
50
+ // Roughly balance the two boxes by item count (~10 panels vs ~17 shortcuts)
51
+ // so the wider list gets the extra room and they feel more even.
50
52
  return [
51
53
  {
52
54
  listId: 'UNUSED-PANELS',
53
55
  title: 'Status Panels',
54
56
  help: 'Fully featured actionable controls',
55
57
  items: statusPanelIds,
58
+ flex: 40,
56
59
  },
57
60
  {
58
61
  listId: 'UNUSED-SHORTCUTS',
59
62
  title: 'Module Shortcuts',
60
63
  help: 'Buttons to open Module Status Panel',
61
64
  items: moduleShortcutIds,
65
+ flex: 60,
62
66
  },
63
67
  ];
64
68
  }, [availableItems, adaptable]);
@@ -21,7 +21,6 @@ import { BadgePillStyleEditor, getBadgePillStyleSummaryItems } from './BadgePill
21
21
  import { getCellBoxStyleSummaryItems, getCellFontStyleSummaryItems, StyledColumnCellStyleEditor, } from './StyledColumnSliceStyleEditors';
22
22
  import { Card } from '../../../components/Card';
23
23
  import { useAdaptable } from '../../AdaptableContext';
24
- import { StyledColumnBadgePreviewCard } from './StyledColumnWizardStyleSection/Components/StyledColumnBadgePreview';
25
24
  import { CollapsibleWizardCard, CollapsibleWizardValueSummary, getWizardAccordionSectionClassName, useWizardCardAccordion, } from '../../Wizard/CollapsibleWizardCard';
26
25
  import { SingleSelect } from '../../../components/NewSelect';
27
26
  import { cn } from '../../../lib/utils';
@@ -229,7 +228,7 @@ export const StyledColumnBadgeSection = (props) => {
229
228
  }
230
229
  }
231
230
  };
232
- return (_jsxs(Box, { className: cn(getWizardAccordionSectionClassName(hasExpandedCard, expandedFillsSpace), 'twa:p-2'), children: [_jsx(Flex, { className: "twa:justify-end twa:mb-2 twa:shrink-0", children: _jsx(ButtonNew, { onClick: handleAddBadge, children: "Add Badge" }) }), _jsx(Flex, { flexDirection: "column", className: "twa:gap-3 twa:min-h-0", children: badges.map((badge, index) => {
231
+ return (_jsxs(Box, { className: cn(getWizardAccordionSectionClassName(hasExpandedCard, expandedFillsSpace), 'twa:p-2'), children: [_jsx(Flex, { className: "twa:justify-end twa:mb-2 twa:shrink-0", children: _jsx(ButtonNew, { onClick: handleAddBadge, children: "Add Badge" }) }), _jsx(Flex, { flexDirection: "column", className: "twa:gap-3 twa:min-h-0 twa:overflow-y-auto", children: badges.map((badge, index) => {
233
232
  const handleEditBadge = (nextBadge) => {
234
233
  const newBadges = [...badges];
235
234
  newBadges[index] = nextBadge;
@@ -285,7 +284,7 @@ export const StyledColumnBadgeStyleSection = (props) => {
285
284
  delete cleaned.Cell;
286
285
  props.onChange({ ...data, BadgeStyle: cleaned });
287
286
  }
288
- } }) })] })] }), _jsx(StyledColumnBadgePreviewCard, { data: data })] }));
287
+ } }) })] })] })] }));
289
288
  };
290
289
  export const renderBadgeStyleSummary = (styledColumn, api) => {
291
290
  const items = getStyledColumnBadgeStyleViewValues(styledColumn, api);
@@ -12,7 +12,6 @@ import { Box, Flex } from '../../../components/Flex';
12
12
  import { getCellBoxStyleSummaryItems, StyledColumnCellStyleEditor, } from './StyledColumnSliceStyleEditors';
13
13
  import { Card } from '../../../components/Card';
14
14
  import ErrorBox from '../../../components/ErrorBox';
15
- import { StyledColumnSparklinePreviewCard } from './StyledColumnWizardStyleSection/Components/StyledColumnSparklinePreview';
16
15
  const STYLE_FORM_SIZES = ['200px', '1fr'];
17
16
  /** Sentinel for the theme dropdown — persisted options omit `theme` when this is chosen. */
18
17
  const SPARKLINE_CUSTOM_COLOURS_THEME = '__custom__';
@@ -167,7 +166,7 @@ export const StyledColumnSparklineSettingsSection = ({ onChange }) => {
167
166
  delete sparkStyle.Cell;
168
167
  }
169
168
  onChange({ ...data, SparklineStyle: sparkStyle });
170
- } }) })] }), _jsx(StyledColumnSparklinePreviewCard, { data: data })] }));
169
+ } }) })] })] }));
171
170
  };
172
171
  const SparklineObjectArrayProperties = ({ options, onChange, }) => {
173
172
  const { data, api } = useOnePageAdaptableWizardContext();
@@ -1,4 +1,4 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useState } from 'react';
3
3
  import { useDispatch, useSelector } from 'react-redux';
4
4
  import { OnePageAdaptableWizard, OnePageWizardSummary, } from '../../Wizard/OnePageAdaptableWizard';
@@ -17,14 +17,14 @@ import { isValidIconStyleMappings, renderStyledColumnIconStyleSummary, renderSty
17
17
  import { ObjectTagsWizardSection, renderObjectTagsSummary, } from '../../Wizard/ObjectTagsWizardSection';
18
18
  import { renderBadgeStyleSummary, renderBadgeSummary, StyledColumnBadgeStyleSection, StyledColumnBadgeSection, } from './StyledColumnBadgeSection';
19
19
  import { Box } from '../../../components/Flex';
20
- import { StyledColumnGradientPreviewCard } from './StyledColumnWizardStyleSection/Components/StyledColumnGradientPreview';
21
- import { StyledColumnPercentBarPreviewCard } from './StyledColumnWizardStyleSection/Components/StyledColumnPercentBarPreview';
22
- import { StyledColumnBadgePreviewCard } from './StyledColumnWizardStyleSection/Components/StyledColumnBadgePreview';
23
- import { StyledColumnRatingPreviewCard } from './StyledColumnWizardStyleSection/Components/StyledColumnRatingPreview';
24
- import { StyledColumnIconPreviewCard } from './StyledColumnWizardStyleSection/Components/StyledColumnIconPreview';
25
- import { StyledColumnBulletPreviewCard } from './StyledColumnWizardStyleSection/Components/StyledColumnBulletPreview';
26
- import { StyledColumnRangeBarPreviewCard } from './StyledColumnWizardStyleSection/Components/StyledColumnRangeBarPreview';
27
- import { StyledColumnSparklinePreviewCard } from './StyledColumnWizardStyleSection/Components/StyledColumnSparklinePreview';
20
+ import { StyledColumnGradientPreview } from './StyledColumnWizardStyleSection/Components/StyledColumnGradientPreview';
21
+ import { StyledColumnPercentBarPreview } from './StyledColumnWizardStyleSection/Components/StyledColumnPercentBarPreview';
22
+ import { StyledColumnBadgePreview } from './StyledColumnWizardStyleSection/Components/StyledColumnBadgePreview';
23
+ import { StyledColumnRatingPreview } from './StyledColumnWizardStyleSection/Components/StyledColumnRatingPreview';
24
+ import { StyledColumnIconPreview } from './StyledColumnWizardStyleSection/Components/StyledColumnIconPreview';
25
+ import { StyledColumnBulletPreview } from './StyledColumnWizardStyleSection/Components/StyledColumnBulletPreview';
26
+ import { StyledColumnRangeBarPreview } from './StyledColumnWizardStyleSection/Components/StyledColumnRangeBarPreview';
27
+ import { StyledColumnSparklinePreview } from './StyledColumnWizardStyleSection/Components/StyledColumnSparklinePreview';
28
28
  /**
29
29
  * Mirrors the migration default in `VersionUpgrade23.patchStyledColumnName` and
30
30
  * the auto-fill logic in `StyledColumnWizardTypeSection` so users opening the
@@ -265,12 +265,41 @@ export const StyledColumnWizard = (props) => {
265
265
  render: () => (_jsx(Box, { className: "twa:p-2", children: _jsx(StyledColumnBadgeStyleSection, { onChange: setStyledColumn }) })),
266
266
  });
267
267
  }
268
+ // Persistent live preview shown at the top of the section content on
269
+ // every step. We render the bare preview (no Card chrome) so it sits
270
+ // flush above the form. Only one of these can apply at a time — the
271
+ // styled column owns exactly one of these style buckets.
272
+ let headerPreview = null;
273
+ if (styledColumn.GradientStyle) {
274
+ headerPreview = _jsx(StyledColumnGradientPreview, { data: styledColumn });
275
+ }
276
+ else if (styledColumn.PercentBarStyle) {
277
+ headerPreview = _jsx(StyledColumnPercentBarPreview, { data: styledColumn });
278
+ }
279
+ else if (styledColumn.BadgeStyle) {
280
+ headerPreview = _jsx(StyledColumnBadgePreview, { data: styledColumn });
281
+ }
282
+ else if (styledColumn.RatingStyle) {
283
+ headerPreview = _jsx(StyledColumnRatingPreview, { data: styledColumn });
284
+ }
285
+ else if (styledColumn.IconStyle) {
286
+ headerPreview = _jsx(StyledColumnIconPreview, { data: styledColumn });
287
+ }
288
+ else if (styledColumn.BulletChartStyle) {
289
+ headerPreview = _jsx(StyledColumnBulletPreview, { data: styledColumn });
290
+ }
291
+ else if (styledColumn.RangeBarStyle) {
292
+ headerPreview = _jsx(StyledColumnRangeBarPreview, { data: styledColumn });
293
+ }
294
+ else if (styledColumn.SparklineStyle) {
295
+ headerPreview = _jsx(StyledColumnSparklinePreview, { data: styledColumn });
296
+ }
268
297
  return (_jsx(OnePageAdaptableWizard, { defaultCurrentSectionName: defaultCurrentSectionName, moduleInfo: props.moduleInfo,
269
298
  // Display the picked type in the header (e.g. "Gradient Column",
270
299
  // "Percent Bar Column") so the user always knows which kind of
271
300
  // column they're configuring. Falls back to "Styled Column"
272
301
  // before a type has been selected.
273
- moduleName: getStyledColumnWizardTitle(styledColumn), data: styledColumn, onFinish: handleFinish, onHide: props.onCloseWizard, sections: [
302
+ moduleName: getStyledColumnWizardTitle(styledColumn), data: styledColumn, headerPreview: headerPreview, onFinish: handleFinish, onHide: props.onCloseWizard, sections: [
274
303
  {
275
304
  details: 'Enter a Name and select a Styled Column Type',
276
305
  isValid: (data) => {
@@ -308,7 +337,7 @@ export const StyledColumnWizard = (props) => {
308
337
  title: 'Summary',
309
338
  details: 'Review your Styled Column',
310
339
  render: () => {
311
- return (_jsxs(Box, { className: "twa:p-2 twa:flex twa:flex-col twa:gap-3", children: [_jsx(OnePageWizardSummary, {}), styledColumn.GradientStyle && (_jsx(StyledColumnGradientPreviewCard, { data: styledColumn })), styledColumn.PercentBarStyle && (_jsx(StyledColumnPercentBarPreviewCard, { data: styledColumn })), styledColumn.BadgeStyle && (_jsx(StyledColumnBadgePreviewCard, { data: styledColumn })), styledColumn.RatingStyle && (_jsx(StyledColumnRatingPreviewCard, { data: styledColumn })), styledColumn.IconStyle && (_jsx(StyledColumnIconPreviewCard, { data: styledColumn })), styledColumn.BulletChartStyle && (_jsx(StyledColumnBulletPreviewCard, { data: styledColumn })), styledColumn.RangeBarStyle && (_jsx(StyledColumnRangeBarPreviewCard, { data: styledColumn })), styledColumn.SparklineStyle && (_jsx(StyledColumnSparklinePreviewCard, { data: styledColumn }))] }));
340
+ return (_jsx(Box, { className: "twa:p-2 twa:flex twa:flex-col twa:gap-3", children: _jsx(OnePageWizardSummary, {}) }));
312
341
  },
313
342
  },
314
343
  ] }));
@@ -12,7 +12,6 @@ import { useOnePageAdaptableWizardContext } from '../../Wizard/OnePageAdaptableW
12
12
  import AdaptableInput from '../../Components/AdaptableInput';
13
13
  import { Box, Flex } from '../../../components/Flex';
14
14
  import { BulletRangesSummaryPreview } from './StyledColumnWizardStyleSection/Components/BulletRangesSummaryPreview';
15
- import { StyledColumnBulletPreviewCard } from './StyledColumnWizardStyleSection/Components/StyledColumnBulletPreview';
16
15
  import { SingleSelect } from '../../../components/NewSelect';
17
16
  import { getCellFontStyleSummaryItems, StyledColumnFontStyleEditor, } from './StyledColumnSliceStyleEditors';
18
17
  import { Card } from '../../../components/Card';
@@ -397,5 +396,5 @@ export const StyledColumnWizardBulletSection = (props) => {
397
396
  delete cleaned.Font;
398
397
  props.onChange({ ...data, BulletChartStyle: cleaned });
399
398
  }
400
- } }) })] })] }), _jsxs(Card, { shadow: false, className: "twa:mb-3", children: [_jsxs(Card.Title, { children: [_jsx(Box, { className: "twa:font-medium", children: "Tooltip" }), _jsx(Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: "Choose whether to display a tooltip" })] }), _jsx(Card.Body, { children: _jsx(FormLayout, { sizes: [...BULLET_STYLE_FORM_SIZES], children: _jsxs(FormRow, { label: "Tooltip Display:", children: [_jsx(CheckBox, { disabled: disabled, checked: bullet.ToolTipText?.includes('CellValue'), onChange: (checked) => toggleToolTipText('CellValue', checked), children: "Cell Value" }), ' ', _jsx(CheckBox, { disabled: disabled, className: "twa:ml-3", checked: bullet.ToolTipText?.includes('PercentageValue'), onChange: (checked) => toggleToolTipText('PercentageValue', checked), children: "Percent Value" })] }) }) })] }), _jsx(StyledColumnBulletPreviewCard, { data: data })] }));
399
+ } }) })] })] }), _jsxs(Card, { shadow: false, className: "twa:mb-3", children: [_jsxs(Card.Title, { children: [_jsx(Box, { className: "twa:font-medium", children: "Tooltip" }), _jsx(Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: "Choose whether to display a tooltip" })] }), _jsx(Card.Body, { children: _jsx(FormLayout, { sizes: [...BULLET_STYLE_FORM_SIZES], children: _jsxs(FormRow, { label: "Tooltip Display:", children: [_jsx(CheckBox, { disabled: disabled, checked: bullet.ToolTipText?.includes('CellValue'), onChange: (checked) => toggleToolTipText('CellValue', checked), children: "Cell Value" }), ' ', _jsx(CheckBox, { disabled: disabled, className: "twa:ml-3", checked: bullet.ToolTipText?.includes('PercentageValue'), onChange: (checked) => toggleToolTipText('PercentageValue', checked), children: "Percent Value" })] }) }) })] })] }));
401
400
  };
@@ -11,7 +11,6 @@ import { DEFAULT_GRADIENT_MAX_ALPHA, DEFAULT_GRADIENT_MIN_ALPHA, } from '../../.
11
11
  import { getCellFontStyleSummaryItems, StyledColumnFontStyleEditor, } from './StyledColumnSliceStyleEditors';
12
12
  import { Card } from '../../../components/Card';
13
13
  import { renderSummaryStringTags } from '../../Wizard/SummaryColorTag';
14
- import { StyledColumnGradientPreviewCard } from './StyledColumnWizardStyleSection/Components/StyledColumnGradientPreview';
15
14
  const STYLE_FORM_SIZES = ['200px', '1fr'];
16
15
  function formatGradientToolTipSummary(opts) {
17
16
  return opts
@@ -110,5 +109,5 @@ export const StyledColumnWizardGradientSection = (props) => {
110
109
  else {
111
110
  patchGradient({ AutoContrastText: true });
112
111
  }
113
- }, children: "Make text readable on tinted backgrounds" }) })] }), _jsxs(Card, { shadow: false, className: "twa:mb-3", children: [_jsxs(Card.Title, { children: [_jsx(Box, { className: "twa:font-medium", children: "Tooltip" }), _jsx(Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[600px]", children: "Set Tooltip properties" })] }), _jsx(Card.Body, { children: _jsx(FormLayout, { sizes: [...STYLE_FORM_SIZES], children: _jsx(FormRow, { label: "Tooltip:", children: _jsxs(Box, { className: "twa:ml-2", children: [_jsx(CheckBox, { disabled: disabled, checked: gs.ToolTipText?.includes('CellValue'), onChange: (checked) => onToolTipTextChanged('CellValue', checked), children: "Cell Value" }), ' ', _jsx(CheckBox, { disabled: disabled, className: "twa:ml-3", checked: gs.ToolTipText?.includes('PercentageValue'), onChange: (checked) => onToolTipTextChanged('PercentageValue', checked), children: "Percent along scale" })] }) }) }) })] }), _jsxs(Card, { shadow: false, children: [_jsxs(Card.Title, { children: [_jsx(Box, { className: "twa:font-medium", children: "Font" }), _jsx(Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[480px]", children: "Optional font properties (takes precedence over Format Column)" })] }), _jsx(Card.Body, { children: _jsx(StyledColumnFontStyleEditor, { api: api, disabled: disabled, value: gs.Font, onChange: onFontChange }) })] }), _jsx(StyledColumnGradientPreviewCard, { data: data }), !data.ColumnId && (_jsx(ErrorBox, { className: "twa:mt-2", children: "Select a column before changing Gradient style." }))] }));
112
+ }, children: "Make text readable on tinted backgrounds" }) })] }), _jsxs(Card, { shadow: false, className: "twa:mb-3", children: [_jsxs(Card.Title, { children: [_jsx(Box, { className: "twa:font-medium", children: "Tooltip" }), _jsx(Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[600px]", children: "Set Tooltip properties" })] }), _jsx(Card.Body, { children: _jsx(FormLayout, { sizes: [...STYLE_FORM_SIZES], children: _jsx(FormRow, { label: "Tooltip:", children: _jsxs(Box, { className: "twa:ml-2", children: [_jsx(CheckBox, { disabled: disabled, checked: gs.ToolTipText?.includes('CellValue'), onChange: (checked) => onToolTipTextChanged('CellValue', checked), children: "Cell Value" }), ' ', _jsx(CheckBox, { disabled: disabled, className: "twa:ml-3", checked: gs.ToolTipText?.includes('PercentageValue'), onChange: (checked) => onToolTipTextChanged('PercentageValue', checked), children: "Percent along scale" })] }) }) }) })] }), _jsxs(Card, { shadow: false, children: [_jsxs(Card.Title, { children: [_jsx(Box, { className: "twa:font-medium", children: "Font" }), _jsx(Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[480px]", children: "Optional font properties (takes precedence over Format Column)" })] }), _jsx(Card.Body, { children: _jsx(StyledColumnFontStyleEditor, { api: api, disabled: disabled, value: gs.Font, onChange: onFontChange }) })] }), !data.ColumnId && (_jsx(ErrorBox, { className: "twa:mt-2", children: "Select a column before changing Gradient style." }))] }));
114
113
  };
@@ -19,7 +19,6 @@ import { resolveEffectiveIconStyleMappings, resolveIconStyleMappingsForSummaryPr
19
19
  import { Card } from '../../../components/Card';
20
20
  import { renderSummaryStringTags } from '../../Wizard/SummaryColorTag';
21
21
  import { getCellBoxStyleSummaryItems, getCellFontStyleSummaryItems, StyledColumnCellStyleEditor, StyledColumnFontStyleEditor, } from './StyledColumnSliceStyleEditors';
22
- import { StyledColumnIconPreviewCard } from './StyledColumnWizardStyleSection/Components/StyledColumnIconPreview';
23
22
  import { wizardSelectionSimpleButtonProps } from '../../../Utilities/wizardSelection';
24
23
  const STYLE_FORM_SIZES = ['200px', '1fr'];
25
24
  const detectIconKind = (spec) => {
@@ -339,7 +338,7 @@ export const StyledColumnWizardIconSection = (props) => {
339
338
  { value: 'After', label: 'After' },
340
339
  { value: 'Above', label: 'Above' },
341
340
  { value: 'Below', label: 'Below' },
342
- ] }) }) })] }), _jsx(Box, { className: `twa:mt-3 twa:pt-3 twa:border-t twa:border-foreground/15 ${cellTextDisabled ? 'twa:opacity-50' : ''}`, children: _jsx(StyledColumnFontStyleEditor, { api: api, disabled: disabled || cellTextDisabled, value: iconStyle.Font, onChange: onFontChange }) })] })] }), _jsxs(Card, { shadow: false, className: "twa:mb-3", children: [_jsxs(Card.Title, { children: [_jsx(Box, { className: "twa:font-medium", children: "Tooltip" }), _jsx(Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: "Choose whether and how to display a tooltip" })] }), _jsx(Card.Body, { children: _jsx(FormLayout, { sizes: [...STYLE_FORM_SIZES], children: _jsxs(FormRow, { label: "Tooltip Display:", children: [_jsx(CheckBox, { checked: toolTipText.includes('CellValue'), onChange: (checked) => toggleToolTipText('CellValue', checked), children: "Cell Value" }), ' ', _jsx(CheckBox, { className: "twa:ml-3", checked: toolTipText.includes('IconDescription'), onChange: (checked) => toggleToolTipText('IconDescription', checked), children: "Description" })] }) }) })] }), _jsxs(Card, { shadow: false, children: [_jsxs(Card.Title, { children: [_jsx(Box, { className: "twa:font-medium", children: "Cell" }), _jsx(Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: "Optional cell box styling (overrides Format Column properties)" })] }), _jsx(Card.Body, { children: _jsx(StyledColumnCellStyleEditor, { api: api, disabled: disabled, value: iconStyle.Cell, onChange: onCellChange }) })] }), _jsx(StyledColumnIconPreviewCard, { data: data })] }));
341
+ ] }) }) })] }), _jsx(Box, { className: `twa:mt-3 twa:pt-3 twa:border-t twa:border-foreground/15 ${cellTextDisabled ? 'twa:opacity-50' : ''}`, children: _jsx(StyledColumnFontStyleEditor, { api: api, disabled: disabled || cellTextDisabled, value: iconStyle.Font, onChange: onFontChange }) })] })] }), _jsxs(Card, { shadow: false, className: "twa:mb-3", children: [_jsxs(Card.Title, { children: [_jsx(Box, { className: "twa:font-medium", children: "Tooltip" }), _jsx(Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: "Choose whether and how to display a tooltip" })] }), _jsx(Card.Body, { children: _jsx(FormLayout, { sizes: [...STYLE_FORM_SIZES], children: _jsxs(FormRow, { label: "Tooltip Display:", children: [_jsx(CheckBox, { checked: toolTipText.includes('CellValue'), onChange: (checked) => toggleToolTipText('CellValue', checked), children: "Cell Value" }), ' ', _jsx(CheckBox, { className: "twa:ml-3", checked: toolTipText.includes('IconDescription'), onChange: (checked) => toggleToolTipText('IconDescription', checked), children: "Description" })] }) }) })] }), _jsxs(Card, { shadow: false, children: [_jsxs(Card.Title, { children: [_jsx(Box, { className: "twa:font-medium", children: "Cell" }), _jsx(Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: "Optional cell box styling (overrides Format Column properties)" })] }), _jsx(Card.Body, { children: _jsx(StyledColumnCellStyleEditor, { api: api, disabled: disabled, value: iconStyle.Cell, onChange: onCellChange }) })] })] }));
343
342
  };
344
343
  // ---------------------------------------------------------------------------
345
344
  // Icon picker — click-to-open popover (closes on outside click or system pick)
@@ -14,7 +14,6 @@ import AdaptableInput from '../../Components/AdaptableInput';
14
14
  import { Box, Flex } from '../../../components/Flex';
15
15
  import { SingleSelect } from '../../../components/NewSelect';
16
16
  import { RangeBarRangesSummaryPreview } from './StyledColumnWizardStyleSection/Components/RangeBarRangesSummaryPreview';
17
- import { StyledColumnRangeBarPreviewCard } from './StyledColumnWizardStyleSection/Components/StyledColumnRangeBarPreview';
18
17
  import { Card } from '../../../components/Card';
19
18
  import { renderSummaryStringTags } from '../../Wizard/SummaryColorTag';
20
19
  import { formatBarStyleCellTextLayoutSummary, getActiveBarStyleCellTextTokens, hasBarStyleCellTextConfigured, patchBarStyleCellTextPlacement, resolveBarStyleCellTextLayout, toggleBarStyleCellTextToken, } from '../../../Utilities/Helpers/StyledColumns/BarStylesHelper';
@@ -488,5 +487,5 @@ export const StyledColumnWizardRangeBarSection = (props) => {
488
487
  { value: 'Clamp', label: 'Clamp to edge' },
489
488
  { value: 'Overflow', label: 'Show outside' },
490
489
  { value: 'Hide', label: 'Hide marker' },
491
- ] }) }) }), outOfRangeMode === 'Clamp' && (_jsx(FormRow, { label: `Out-of-range ${api.internalApi.getCorrectEnglishVariant('Colour')}:`, children: _jsx(OptionalColorPicker, { disabled: disabled, api: api, value: range.OutOfRange?.Color, defaultColor: "crimson", onChange: (c) => updateOutOfRangeProperties({ Color: c }) }) }))] }) })] }), _jsxs(Card, { shadow: false, children: [_jsxs(Card.Title, { children: [_jsx(Box, { className: "twa:font-medium", children: "Text & Tooltip" }), _jsx(Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: "Optional cell-text overlay and AG Grid tooltip content." })] }), _jsx(Card.Body, { children: _jsxs(FormLayout, { sizes: [...RANGE_STYLE_FORM_SIZES], children: [_jsx(BarStyleCellTextLayoutEditor, { disabled: disabled, cellTextProperties: range.CellTextProperties, onToggle: toggleCellText, onPlacementChange: onCellTextPlacementChange }), _jsxs(FormRow, { label: "Tooltip Display:", children: [_jsx(CheckBox, { disabled: disabled, checked: range.ToolTipText?.includes('CellValue'), onChange: (checked) => toggleToolTipText('CellValue', checked), children: "Cell Value" }), ' ', _jsx(CheckBox, { disabled: disabled, className: "twa:ml-3", checked: range.ToolTipText?.includes('PercentageValue'), onChange: (checked) => toggleToolTipText('PercentageValue', checked), children: "Percent Value" })] })] }) })] }), _jsx(StyledColumnRangeBarPreviewCard, { data: data })] }))] }));
490
+ ] }) }) }), outOfRangeMode === 'Clamp' && (_jsx(FormRow, { label: `Out-of-range ${api.internalApi.getCorrectEnglishVariant('Colour')}:`, children: _jsx(OptionalColorPicker, { disabled: disabled, api: api, value: range.OutOfRange?.Color, defaultColor: "crimson", onChange: (c) => updateOutOfRangeProperties({ Color: c }) }) }))] }) })] }), _jsxs(Card, { shadow: false, children: [_jsxs(Card.Title, { children: [_jsx(Box, { className: "twa:font-medium", children: "Text & Tooltip" }), _jsx(Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: "Optional cell-text overlay and AG Grid tooltip content." })] }), _jsx(Card.Body, { children: _jsxs(FormLayout, { sizes: [...RANGE_STYLE_FORM_SIZES], children: [_jsx(BarStyleCellTextLayoutEditor, { disabled: disabled, cellTextProperties: range.CellTextProperties, onToggle: toggleCellText, onPlacementChange: onCellTextPlacementChange }), _jsxs(FormRow, { label: "Tooltip Display:", children: [_jsx(CheckBox, { disabled: disabled, checked: range.ToolTipText?.includes('CellValue'), onChange: (checked) => toggleToolTipText('CellValue', checked), children: "Cell Value" }), ' ', _jsx(CheckBox, { disabled: disabled, className: "twa:ml-3", checked: range.ToolTipText?.includes('PercentageValue'), onChange: (checked) => toggleToolTipText('PercentageValue', checked), children: "Percent Value" })] })] }) })] })] }))] }));
492
491
  };
@@ -11,7 +11,7 @@ import Input from '../../../components/Input';
11
11
  import { getCellBoxStyleSummaryItems, StyledColumnCellStyleEditor, } from './StyledColumnSliceStyleEditors';
12
12
  import { Card } from '../../../components/Card';
13
13
  import { renderSummaryStringTags } from '../../Wizard/SummaryColorTag';
14
- import { DEFAULT_RATING_GAP, DEFAULT_RATING_ICON, DEFAULT_RATING_MAX, DEFAULT_RATING_SIZE, StyledColumnRatingPreviewCard, } from './StyledColumnWizardStyleSection/Components/StyledColumnRatingPreview';
14
+ import { DEFAULT_RATING_GAP, DEFAULT_RATING_ICON, DEFAULT_RATING_MAX, DEFAULT_RATING_SIZE, } from './StyledColumnWizardStyleSection/Components/StyledColumnRatingPreview';
15
15
  const STYLE_FORM_SIZES = ['200px', '1fr'];
16
16
  const ICON_CHOICES = [
17
17
  { value: 'Star', label: 'Star' },
@@ -188,5 +188,5 @@ export const StyledColumnWizardRatingSection = (props) => {
188
188
  delete cleaned.Cell;
189
189
  props.onChange({ ...data, RatingStyle: cleaned });
190
190
  }
191
- } }) })] }), _jsx(StyledColumnRatingPreviewCard, { data: data })] }));
191
+ } }) })] })] }));
192
192
  };
@@ -8,6 +8,3 @@ import { StyledColumn } from '../../../../../types';
8
8
  export declare const StyledColumnBadgePreview: React.FunctionComponent<React.PropsWithChildren<{
9
9
  data: StyledColumn;
10
10
  }>>;
11
- export declare const StyledColumnBadgePreviewCard: React.FunctionComponent<React.PropsWithChildren<{
12
- data: StyledColumn;
13
- }>>;
@@ -1,17 +1,16 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { DEFAULT_INTEGER_DISPLAY_VALUE, DEFAULT_STRING_DISPLAY_VALUE, } from '../../../../../Utilities/Constants/GeneralConstants';
3
3
  import { convertAdaptableStyleToCSS } from '../../../../../Utilities/Helpers/StyleHelper';
4
4
  import { useAdaptable } from '../../../../AdaptableContext';
5
5
  import { Badge } from '../../../../Components/Badge';
6
6
  import { Box } from '../../../../../components/Flex';
7
- import { Card } from '../../../../../components/Card';
8
7
  import { Tag } from '../../../../../components/Tag';
9
8
  const OVERFLOW_CLASS = {
10
9
  Truncate: 'ab-Badge__wrapper--truncate',
11
10
  Wrap: 'ab-Badge__wrapper--wrap',
12
11
  Scroll: 'ab-Badge__wrapper--scroll',
13
12
  };
14
- const PREVIEW_CELL_CLASS = 'ab-BadgePreviewCell twa:min-w-[140px] twa:min-h-[32px] twa:px-2 twa:py-1 twa:rounded-standard twa:border twa:border-[color-mix(in_srgb,var(--ab-color-foreground)_15%,transparent)]';
13
+ const PREVIEW_CELL_CLASS = 'ab-BadgePreviewCell twa:bg-background twa:text-foreground twa:min-w-[140px] twa:min-h-[32px] twa:px-2 twa:py-1 twa:rounded-standard twa:border twa:border-[color-mix(in_srgb,var(--ab-color-foreground)_15%,transparent)]';
15
14
  const resolveBadgeRowJustify = (alignment) => {
16
15
  switch (alignment) {
17
16
  case 'Center':
@@ -42,7 +41,9 @@ export const StyledColumnBadgePreview = ({ data }) => {
42
41
  const cellStyle = badgeStyle.Cell ? convertAdaptableStyleToCSS(badgeStyle.Cell) : undefined;
43
42
  const dataType = adaptable.api.columnApi.getColumnDataTypeForColumnId(data.ColumnId);
44
43
  const wrapperStyle = {
45
- ...(spacing != null ? { ['--ab-cmp-badge__spacing']: `${spacing}px` } : {}),
44
+ ...(spacing != null
45
+ ? { ['--ab-cmp-badge__spacing']: `${spacing}px` }
46
+ : {}),
46
47
  ...(rowJustify
47
48
  ? {
48
49
  justifyContent: rowJustify,
@@ -60,4 +61,3 @@ export const StyledColumnBadgePreview = ({ data }) => {
60
61
  return (_jsx(Badge, { icon: iconProps?.Icon, pillStyle: badge.PillStyle, iconPosition: iconProps?.Position, shape: badge.Shape, density: badgeStyle.Density ?? 'Normal', iconGap: iconProps?.Gap, children: badgeValue }, index));
61
62
  }) }) }));
62
63
  };
63
- export const StyledColumnBadgePreviewCard = ({ data }) => (_jsxs(Card, { shadow: false, children: [_jsx(Card.Title, { children: _jsx(Box, { className: "twa:font-medium", children: "Preview" }) }), _jsx(Card.Body, { className: "twa:p-1", children: _jsx(StyledColumnBadgePreview, { data: data }) })] }));
@@ -4,7 +4,4 @@ import { BulletChartStyle } from '../../../../../AdaptableState/StyledColumns/Bu
4
4
  export declare const StyledColumnBulletPreview: React.FunctionComponent<React.PropsWithChildren<{
5
5
  data: StyledColumn;
6
6
  }>>;
7
- export declare const StyledColumnBulletPreviewCard: React.FunctionComponent<React.PropsWithChildren<{
8
- data: StyledColumn;
9
- }>>;
10
7
  export declare const hasBulletChartRangesConfigured: (bullet: BulletChartStyle | undefined) => boolean;
@@ -2,7 +2,6 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { convertAdaptableStyleToCSS } from '../../../../../Utilities/Helpers/StyleHelper';
3
3
  import { buildBarStyleCellTextLabels, getBarStyleCellTextSlotPresence, hasBarStyleCellTextConfigured, } from '../../../../../Utilities/Helpers/StyledColumns/BarStylesHelper';
4
4
  import { Box, Flex } from '../../../../../components/Flex';
5
- import { Card } from '../../../../../components/Card';
6
5
  import { Tag } from '../../../../../components/Tag';
7
6
  import { StyledColumnBulletChartListPreview } from './StyledColumnChartListPreviews';
8
7
  import { BarStyleCellTextPreview } from './BarStyleCellTextPreview';
@@ -50,5 +49,4 @@ export const StyledColumnBulletPreview = ({ data }) => {
50
49
  }
51
50
  return (_jsx(Box, { className: PREVIEW_CELL_CLASS, children: _jsx(BulletChartPreviewContent, { bullet: bullet }) }));
52
51
  };
53
- export const StyledColumnBulletPreviewCard = ({ data }) => (_jsxs(Card, { shadow: false, children: [_jsx(Card.Title, { children: _jsx(Box, { className: "twa:font-medium", children: "Preview" }) }), _jsx(Card.Body, { className: "twa:p-1", children: _jsx(StyledColumnBulletPreview, { data: data }) })] }));
54
52
  export const hasBulletChartRangesConfigured = (bullet) => Boolean(bullet?.CellRanges?.length);
@@ -5,6 +5,3 @@ export declare const StyledColumnGradientPreview: React.FunctionComponent<React.
5
5
  data: StyledColumn;
6
6
  api?: AdaptableApi;
7
7
  }>>;
8
- export declare const StyledColumnGradientPreviewCard: React.FunctionComponent<React.PropsWithChildren<{
9
- data: StyledColumn;
10
- }>>;
@@ -1,6 +1,5 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { Box, Flex } from '../../../../../components/Flex';
3
- import { Card } from '../../../../../components/Card';
4
3
  import { Tag } from '../../../../../components/Tag';
5
4
  import { useAdaptable } from '../../../../AdaptableContext';
6
5
  import { getGradientPreviewCellStyle, getGradientPreviewSampleValues, hasGradientRangesConfigured, } from '../../../../../Utilities/Helpers/StyledColumns/GradientStyleHelper';
@@ -27,4 +26,3 @@ export const StyledColumnGradientPreview = ({ data, api: apiProp }) => {
27
26
  const rowNode = api.gridApi?.getRowNodeForIndex(0) ?? null;
28
27
  return (_jsx(Flex, { alignItems: "stretch", className: "twa:flex-wrap twa:gap-2", children: sampleValues.map((value) => (_jsx(Box, { className: "ab-GradientPreviewCell twa:px-2 twa:py-1 twa:min-w-[56px] twa:text-2 twa:text-center twa:rounded-standard twa:border twa:border-[color-mix(in_srgb,var(--ab-color-foreground)_15%,transparent)]", style: getGradientPreviewCellStyle(value, data, api, rowNode), children: formatPreviewValue(value) }, value))) }));
29
28
  };
30
- export const StyledColumnGradientPreviewCard = ({ data }) => (_jsxs(Card, { shadow: false, children: [_jsx(Card.Title, { children: _jsx(Box, { className: "twa:font-medium", children: "Preview" }) }), _jsx(Card.Body, { className: "twa:p-1", children: _jsx(StyledColumnGradientPreview, { data: data }) })] }));
@@ -5,6 +5,3 @@ export declare const DEFAULT_ICON_STYLE_GAP = 4;
5
5
  export declare const StyledColumnIconPreview: React.FunctionComponent<React.PropsWithChildren<{
6
6
  data: StyledColumn;
7
7
  }>>;
8
- export declare const StyledColumnIconPreviewCard: React.FunctionComponent<React.PropsWithChildren<{
9
- data: StyledColumn;
10
- }>>;