@adaptabletools/adaptable 23.0.0-canary.6 → 23.0.0-canary.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/icons/sort-asc.svg +1 -1
- package/index.css +755 -256
- package/package.json +1 -1
- package/src/AdaptableOptions/DataSetOptions.d.ts +26 -2
- package/src/AdaptableOptions/DefaultAdaptableOptions.js +0 -1
- package/src/AdaptableOptions/SettingsPanelOptions.d.ts +42 -10
- package/src/AdaptableState/Common/AdaptableFormat.d.ts +7 -0
- package/src/AdaptableState/Common/AdaptableMessageType.d.ts +1 -1
- package/src/AdaptableState/Common/Enums.d.ts +1 -1
- package/src/AdaptableState/Common/Enums.js +1 -1
- package/src/AdaptableState/StyledColumnState.d.ts +2 -2
- package/src/Api/Internal/AlertInternalApi.js +1 -1
- package/src/Api/Internal/DataSetInternalApi.d.ts +3 -0
- package/src/Api/Internal/DataSetInternalApi.js +73 -13
- package/src/Redux/Store/AdaptableStore.js +6 -4
- package/src/Strategy/CalculatedColumnModule.js +1 -0
- package/src/Strategy/ColumnFilterModule.js +1 -0
- package/src/Strategy/FlashingCellModule.js +6 -2
- package/src/Strategy/FormatColumnModule.js +2 -2
- package/src/Strategy/FreeTextColumnModule.js +38 -28
- package/src/Strategy/Interface/IModule.d.ts +3 -1
- package/src/Strategy/LayoutModule.js +15 -66
- package/src/Strategy/StyledColumnModule.js +12 -29
- package/src/Strategy/Utilities/CustomSort/getCustomSortColumnViewItems.d.ts +1 -0
- package/src/Strategy/Utilities/CustomSort/getCustomSortColumnViewItems.js +1 -0
- package/src/Strategy/Utilities/Export/getExportColumnsViewItems.d.ts +2 -0
- package/src/Strategy/Utilities/Export/getExportColumnsViewItems.js +14 -0
- package/src/Strategy/Utilities/Export/getExportRowsViewItems.d.ts +1 -0
- package/src/Strategy/Utilities/Export/getExportRowsViewItems.js +3 -0
- package/src/Strategy/Utilities/Layout/aggregationSummaryHelpers.d.ts +11 -0
- package/src/Strategy/Utilities/Layout/aggregationSummaryHelpers.js +105 -0
- package/src/Strategy/Utilities/Layout/columnsSummaryHelpers.d.ts +48 -0
- package/src/Strategy/Utilities/Layout/columnsSummaryHelpers.js +166 -0
- package/src/Strategy/Utilities/Layout/getLayoutSortViewItems.d.ts +1 -0
- package/src/Strategy/Utilities/Layout/getLayoutSortViewItems.js +1 -0
- package/src/Strategy/Utilities/Layout/rowGroupSummaryHelpers.d.ts +26 -0
- package/src/Strategy/Utilities/Layout/rowGroupSummaryHelpers.js +85 -0
- package/src/Utilities/Defaults/DefaultSettingsPanel.d.ts +3 -5
- package/src/Utilities/Defaults/DefaultSettingsPanel.js +46 -41
- package/src/Utilities/Helpers/FormatHelper.js +3 -0
- package/src/Utilities/Helpers/ScheduleHelper.js +2 -0
- package/src/Utilities/Helpers/StyleHelper.d.ts +18 -0
- package/src/Utilities/Helpers/StyleHelper.js +27 -0
- package/src/Utilities/Helpers/StyledColumnGradientHelper.js +7 -5
- package/src/Utilities/Helpers/resolveSettingsPanelNavigation.d.ts +3 -0
- package/src/Utilities/Helpers/resolveSettingsPanelNavigation.js +15 -0
- package/src/Utilities/getScopeViewItems.js +2 -0
- package/src/Utilities/wizardSelection.d.ts +10 -0
- package/src/Utilities/wizardSelection.js +15 -0
- package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/AdaptableOptionsForm.js +2 -2
- package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/UIOptions/UIOptionsSidebarForm.js +2 -2
- package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/UIOptions/UIOptionsStatusbarForm.js +3 -3
- package/src/View/Alert/AlertViewPanel.js +2 -2
- package/src/View/Alert/Utilities/getAlertButtonStyle.js +7 -4
- package/src/View/Alert/Wizard/AlertBehaviourWizardSection.d.ts +0 -1
- package/src/View/Alert/Wizard/AlertBehaviourWizardSection.js +0 -4
- package/src/View/Alert/Wizard/AlertButtonsEditor.js +2 -1
- package/src/View/Alert/Wizard/AlertMessageWizardSection.d.ts +1 -1
- package/src/View/Alert/Wizard/AlertMessageWizardSection.js +1 -2
- package/src/View/Alert/Wizard/AlertNotificationWizardSection.d.ts +1 -1
- package/src/View/Alert/Wizard/AlertNotificationWizardSection.js +3 -4
- package/src/View/Alert/Wizard/AlertScheduledWizardSection.d.ts +1 -1
- package/src/View/Alert/Wizard/AlertScheduledWizardSection.js +1 -2
- package/src/View/Alert/Wizard/AlertTypeWizardSection.d.ts +1 -1
- package/src/View/Alert/Wizard/AlertTypeWizardSection.js +31 -7
- package/src/View/Alert/Wizard/AlertWizard.js +4 -4
- package/src/View/Alert/Wizard/BaseAlertScopeWizardSection.d.ts +2 -1
- package/src/View/Alert/Wizard/BaseAlertScopeWizardSection.js +4 -14
- package/src/View/BulkUpdate/BulkUpdatePopup.js +1 -1
- package/src/View/BulkUpdate/BulkUpdateViewPanel.js +4 -6
- package/src/View/CalculatedColumn/Wizard/CalculatedColumnExpressionWizardSection.d.ts +1 -1
- package/src/View/CalculatedColumn/Wizard/CalculatedColumnExpressionWizardSection.js +1 -2
- package/src/View/CalculatedColumn/Wizard/CalculatedColumnSettingsWizardSection.js +1 -1
- package/src/View/CalculatedColumn/Wizard/CalculatedColumnTypeSection.js +30 -4
- package/src/View/CellSummary/CellSummaryViewPanel.js +4 -4
- package/src/View/Charting/ShowChartButton.js +8 -8
- package/src/View/ColumnInfo/ColumnInfo.js +21 -1
- package/src/View/Components/AdaptableObjectCollection/index.js +2 -2
- package/src/View/Components/AdaptableObjectList/AdaptableObjectCompactList.js +1 -1
- package/src/View/Components/AdaptableObjectList/AdaptableObjectList.js +4 -4
- package/src/View/Components/AdaptableObjectRow/index.js +2 -2
- package/src/View/Components/Buttons/ButtonBase/index.js +2 -3
- package/src/View/Components/Buttons/ButtonNew.d.ts +2 -0
- package/src/View/Components/Buttons/ButtonNew.js +1 -1
- package/src/View/Components/Buttons/EntityListActionButtons.js +3 -3
- package/src/View/Components/Buttons/SuspendToggleButton/SuspendToggleButton.js +2 -2
- package/src/View/Components/ColumnFilter/ColumnFilter.js +2 -3
- package/src/View/Components/ColumnFilter/components/ColumnFilterMenu.js +2 -2
- package/src/View/Components/ColumnSelector/index.d.ts +12 -0
- package/src/View/Components/ColumnSelector/index.js +30 -6
- package/src/View/Components/EntityRulesEditor/EntityRulePredicatesEditor/EntityRulePredicatesEditor.js +2 -2
- package/src/View/Components/ModuleValueSelector/index.js +2 -1
- package/src/View/Components/NewScopeComponent.js +4 -9
- package/src/View/Components/Popups/AdaptablePopup/AdaptablePopup.js +5 -4
- package/src/View/Components/Popups/AdaptablePopup/AdaptablePopupDialog.js +4 -4
- package/src/View/Components/Popups/AdaptablePopup/AdaptablePopupModuleView.js +1 -1
- package/src/View/Components/Popups/AdaptablePopup/Navigation.d.ts +3 -2
- package/src/View/Components/Popups/AdaptablePopup/Navigation.js +38 -28
- package/src/View/Components/Popups/AdaptablePopup/PopupPanel.js +3 -3
- package/src/View/Components/Popups/AdaptablePopup/TopBar.js +2 -2
- package/src/View/Components/Popups/AdaptablePopup/settingsPanelNavigationTypes.d.ts +11 -0
- package/src/View/Components/Popups/AdaptablePopup/settingsPanelNavigationTypes.js +1 -0
- package/src/View/Components/Popups/AdaptablePopup/useMenuItems.d.ts +3 -1
- package/src/View/Components/Popups/AdaptablePopup/useMenuItems.js +25 -27
- package/src/View/Components/PredicateEditor/PredicateEditor.js +1 -1
- package/src/View/Components/RangesComponent.d.ts +2 -4
- package/src/View/Components/RangesComponent.js +95 -66
- package/src/View/Components/ReorderDraggable/index.js +2 -2
- package/src/View/Components/Selectors/BulkUpdateValueSelector.d.ts +0 -2
- package/src/View/Components/Selectors/BulkUpdateValueSelector.js +3 -3
- package/src/View/Components/StyleComponent.js +32 -65
- package/src/View/Components/ToolPanel/AdaptableToolPanel.js +10 -7
- package/src/View/Components/ToolPanel/ToolPanelPopup.d.ts +3 -13
- package/src/View/Components/ToolPanel/ToolPanelPopup.js +5 -81
- package/src/View/Components/ToolPanel/ToolPanelPopupSections.d.ts +17 -0
- package/src/View/Components/ToolPanel/ToolPanelPopupSections.js +76 -0
- package/src/View/Components/ValueSelector/index.d.ts +29 -0
- package/src/View/Components/ValueSelector/index.js +113 -30
- package/src/View/Components/wizardColumnListStyles.d.ts +10 -0
- package/src/View/Components/wizardColumnListStyles.js +10 -0
- package/src/View/CustomSort/Wizard/CustomSortColumnWizardSection.d.ts +2 -1
- package/src/View/CustomSort/Wizard/CustomSortColumnWizardSection.js +5 -7
- package/src/View/CustomSort/Wizard/CustomSortWizard.js +2 -2
- package/src/View/Dashboard/DashboardPopup.d.ts +1 -11
- package/src/View/Dashboard/DashboardPopup.js +3 -67
- package/src/View/Dashboard/DashboardPopupSections.d.ts +20 -0
- package/src/View/Dashboard/DashboardPopupSections.js +68 -0
- package/src/View/Dashboard/PinnedToolbarsSelector.js +2 -2
- package/src/View/DataChangeHistory/DataChangeHistoryPopup.d.ts +1 -6
- package/src/View/DataChangeHistory/DataChangeHistoryPopup.js +8 -20
- package/src/View/DataChangeHistory/DataChangeHistoryTable.d.ts +8 -0
- package/src/View/DataChangeHistory/DataChangeHistoryTable.js +94 -0
- package/src/View/DataChangeHistory/buildActionColumnButton.d.ts +5 -3
- package/src/View/DataChangeHistory/buildActionColumnButton.js +30 -39
- package/src/View/DataChangeHistory/dataChangeHistoryHelpers.d.ts +15 -0
- package/src/View/DataChangeHistory/dataChangeHistoryHelpers.js +37 -0
- package/src/View/DataImport/DataImportWizard/DataImportWizard.js +1 -1
- package/src/View/DataImport/DataImportWizard/sections/ColumnsSection.js +32 -19
- package/src/View/DataImport/DataImportWizard/sections/DataPreview.js +1 -1
- package/src/View/DataSet/DataSetViewPanel.d.ts +2 -2
- package/src/View/Export/ExportDestinationPicker.js +3 -3
- package/src/View/Export/ExportViewPanel.js +2 -2
- package/src/View/Export/Wizard/ReportColumnsWizardSection.d.ts +2 -1
- package/src/View/Export/Wizard/ReportColumnsWizardSection.js +4 -9
- package/src/View/Export/Wizard/ReportRowsWizardSection.d.ts +2 -1
- package/src/View/Export/Wizard/ReportRowsWizardSection.js +3 -6
- package/src/View/FlashingCell/FlashingCellStyle.d.ts +4 -2
- package/src/View/FlashingCell/FlashingCellStyle.js +4 -2
- package/src/View/FlashingCell/Wizard/FlashingCellRulesWizardSection.d.ts +2 -1
- package/src/View/FlashingCell/Wizard/FlashingCellRulesWizardSection.js +7 -11
- package/src/View/FlashingCell/Wizard/FlashingCellScopeSummary.d.ts +9 -0
- package/src/View/FlashingCell/Wizard/FlashingCellScopeSummary.js +5 -0
- package/src/View/FlashingCell/Wizard/FlashingCellScopeWizardSection.d.ts +1 -1
- package/src/View/FlashingCell/Wizard/FlashingCellScopeWizardSection.js +1 -0
- package/src/View/FlashingCell/Wizard/FlashingCellStyleWizardSection.d.ts +0 -5
- package/src/View/FlashingCell/Wizard/FlashingCellStyleWizardSection.js +1 -5
- package/src/View/FlashingCell/Wizard/FlashingCellWizard.js +2 -3
- package/src/View/FormatColumn/Wizard/FormatColumnFormatWizardSection.d.ts +1 -1
- package/src/View/FormatColumn/Wizard/FormatColumnFormatWizardSection.js +99 -42
- package/src/View/FormatColumn/Wizard/FormatColumnRuleWizardSection.d.ts +0 -1
- package/src/View/FormatColumn/Wizard/FormatColumnRuleWizardSection.js +0 -4
- package/src/View/FormatColumn/Wizard/FormatColumnScopeWizardSection.js +56 -15
- package/src/View/FormatColumn/Wizard/FormatColumnSettingsWizardSection.js +1 -1
- package/src/View/FormatColumn/Wizard/FormatColumnStyleWizardSection.d.ts +2 -3
- package/src/View/FormatColumn/Wizard/FormatColumnStyleWizardSection.js +5 -8
- package/src/View/FormatColumn/Wizard/FormatColumnWizard.js +8 -13
- package/src/View/FreeTextColumn/Utilities/getFreeTextColumnSettingsTags.js +3 -2
- package/src/View/FreeTextColumn/Wizard/FreeTextColumnSettingsWizardSection.js +1 -2
- package/src/View/GridFilter/GridFilterPopupUI/index.js +3 -2
- package/src/View/GridFilter/GridFilterViewPanel.js +5 -5
- package/src/View/GridInfo/GridInfoPopup/AdaptableObjectsSummary.js +2 -2
- package/src/View/GridInfo/GridInfoPopup/GridInfoPopup.js +2 -2
- package/src/View/Layout/LayoutViewPanel.js +1 -1
- package/src/View/Layout/Wizard/LayoutWizard.js +24 -28
- package/src/View/Layout/Wizard/sections/AggregationsSection.d.ts +13 -1
- package/src/View/Layout/Wizard/sections/AggregationsSection.js +73 -33
- package/src/View/Layout/Wizard/sections/ColumnsSection.d.ts +4 -1
- package/src/View/Layout/Wizard/sections/ColumnsSection.js +155 -276
- package/src/View/Layout/Wizard/sections/PivotAggregationsSection.d.ts +4 -1
- package/src/View/Layout/Wizard/sections/PivotAggregationsSection.js +148 -145
- package/src/View/Layout/Wizard/sections/PivotColumnsSection.d.ts +5 -2
- package/src/View/Layout/Wizard/sections/PivotColumnsSection.js +24 -12
- package/src/View/Layout/Wizard/sections/PivotRowGroupingSection.d.ts +4 -1
- package/src/View/Layout/Wizard/sections/PivotRowGroupingSection.js +23 -12
- package/src/View/Layout/Wizard/sections/RowGroupingSection.d.ts +5 -2
- package/src/View/Layout/Wizard/sections/RowGroupingSection.js +19 -12
- package/src/View/Layout/Wizard/sections/RowSelectionSection.js +8 -4
- package/src/View/Layout/Wizard/sections/RowSummarySection.js +11 -11
- package/src/View/Layout/Wizard/sections/SortSection.d.ts +12 -2
- package/src/View/Layout/Wizard/sections/SortSection.js +41 -17
- package/src/View/Layout/Wizard/sections/columnLayoutCards.d.ts +20 -0
- package/src/View/Layout/Wizard/sections/columnLayoutCards.js +159 -0
- package/src/View/Layout/Wizard/sections/columnLayoutHelpers.d.ts +30 -0
- package/src/View/Layout/Wizard/sections/columnLayoutHelpers.js +201 -0
- package/src/View/Layout/Wizard/sections/layoutWizardAccordionHelpers.d.ts +8 -0
- package/src/View/Layout/Wizard/sections/layoutWizardAccordionHelpers.js +63 -0
- package/src/View/Layout/Wizard/sections/layoutWizardColumns.d.ts +11 -0
- package/src/View/Layout/Wizard/sections/layoutWizardColumns.js +52 -0
- package/src/View/License/LicenseWatermark.js +1 -1
- package/src/View/NamedQuery/Wizard/NamedQueryExpressionWizardSection.d.ts +1 -1
- package/src/View/NamedQuery/Wizard/NamedQueryExpressionWizardSection.js +1 -2
- package/src/View/Note/NoteEditor.js +2 -2
- package/src/View/QuickSearch/QuickSearchPopup.js +2 -3
- package/src/View/Schedule/Wizard/ScheduleScheduleWizard.js +1 -1
- package/src/View/Shortcut/Wizard/ShortcutSettingsWizard.js +1 -1
- package/src/View/SmartEdit/SmartEditPopup.js +2 -2
- package/src/View/SmartEdit/SmartEditViewPanel.js +2 -2
- package/src/View/StateManagement/StateManagementPopup.js +1 -1
- package/src/View/StateManagement/components/ExportDropdown.d.ts +2 -2
- package/src/View/StateManagement/components/ExportDropdown.js +12 -12
- package/src/View/StatusBar/StatusBarPanel.js +2 -2
- package/src/View/StatusBar/StatusBarPopup.js +33 -5
- package/src/View/StatusBar/statusBarPanelHelpers.d.ts +2 -0
- package/src/View/StatusBar/statusBarPanelHelpers.js +7 -0
- package/src/View/StyledColumn/Wizard/BadgePillStyleEditor.d.ts +2 -0
- package/src/View/StyledColumn/Wizard/BadgePillStyleEditor.js +14 -11
- package/src/View/StyledColumn/Wizard/StyledColumnBadgeSection.d.ts +2 -2
- package/src/View/StyledColumn/Wizard/StyledColumnBadgeSection.js +137 -119
- package/src/View/StyledColumn/Wizard/StyledColumnSliceStyleEditors.js +8 -14
- package/src/View/StyledColumn/Wizard/StyledColumnSparklineSettingsSection.js +2 -1
- package/src/View/StyledColumn/Wizard/StyledColumnTypeThumbnail.d.ts +5 -0
- package/src/View/StyledColumn/Wizard/StyledColumnTypeThumbnail.js +50 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizard.d.ts +2 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizard.js +26 -5
- package/src/View/StyledColumn/Wizard/StyledColumnWizardBulletSection.js +8 -17
- package/src/View/StyledColumn/Wizard/StyledColumnWizardGradientSection.js +2 -1
- package/src/View/StyledColumn/Wizard/StyledColumnWizardIconSection.js +46 -28
- package/src/View/StyledColumn/Wizard/StyledColumnWizardRangeBarSection.js +98 -43
- package/src/View/StyledColumn/Wizard/StyledColumnWizardRatingSection.js +2 -1
- package/src/View/StyledColumn/Wizard/StyledColumnWizardScopeSection.d.ts +1 -1
- package/src/View/StyledColumn/Wizard/StyledColumnWizardScopeSection.js +32 -46
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/StyledColumnWizardStyleSection.js +11 -6
- package/src/View/StyledColumn/Wizard/StyledColumnWizardTypeSection.js +94 -7
- package/src/View/UIHelper.d.ts +0 -2
- package/src/View/UIHelper.js +8 -23
- package/src/View/Wizard/CollapsibleWizardCard.d.ts +68 -0
- package/src/View/Wizard/CollapsibleWizardCard.js +81 -0
- package/src/View/Wizard/OnePageWizards.js +6 -6
- package/src/View/Wizard/SummaryColorTag.d.ts +24 -0
- package/src/View/Wizard/SummaryColorTag.js +67 -0
- package/src/View/Wizard/WizardTypeSelection.d.ts +34 -0
- package/src/View/Wizard/WizardTypeSelection.js +31 -0
- package/src/View/Wizard/rowGroupSummaryTags.d.ts +18 -0
- package/src/View/Wizard/rowGroupSummaryTags.js +14 -0
- package/src/View/Wizard/scopeSummaryTags.d.ts +6 -0
- package/src/View/Wizard/scopeSummaryTags.js +33 -0
- package/src/agGrid/AgGridAdapter.js +0 -5
- package/src/agGrid/AgGridColumnAdapter.js +2 -2
- package/src/agGrid/cellRenderers/ActionColumnRenderer.js +4 -7
- package/src/components/AdaptableFormComponent/AdaptableFormComponent.js +1 -1
- package/src/components/Card/index.js +5 -6
- package/src/components/CheckBox/index.js +2 -3
- package/src/components/CodeBlock/index.js +2 -2
- package/src/components/ColorPicker/ColorPicker.d.ts +1 -0
- package/src/components/ColorPicker/ColorPicker.js +8 -6
- package/src/components/ColorPicker/OptionalColorPicker.d.ts +12 -0
- package/src/components/ColorPicker/OptionalColorPicker.js +26 -0
- package/src/components/ColorPicker/index.d.ts +1 -0
- package/src/components/ColorPicker/index.js +1 -0
- package/src/components/Combobox/comboboxUtils.d.ts +1 -0
- package/src/components/Combobox/index.js +19 -18
- package/src/components/Dashboard/DashboardManager.js +2 -4
- package/src/components/Dialog/index.js +4 -4
- package/src/components/DragAndDropContext/DragAndDropContext.d.ts +5 -0
- package/src/components/DragAndDropContext/DragAndDropContext.js +3 -0
- package/src/components/DragAndDropContext/ModuleManager.d.ts +15 -3
- package/src/components/DragAndDropContext/ModuleManager.js +47 -8
- package/src/components/DragAndDropContext/TabList.d.ts +11 -4
- package/src/components/DragAndDropContext/TabList.js +52 -38
- package/src/components/DragAndDropContext/UnusedPanel.d.ts +4 -3
- package/src/components/DragAndDropContext/UnusedPanel.js +15 -11
- package/src/components/DragAndDropContext/dragScope.d.ts +6 -0
- package/src/components/DragAndDropContext/dragScope.js +26 -0
- package/src/components/DragAndDropContext/types.d.ts +7 -0
- package/src/components/DropdownButton/index.d.ts +33 -25
- package/src/components/DropdownButton/index.js +24 -158
- package/src/components/EmptyContent/index.js +2 -2
- package/src/components/ErrorBox/index.js +2 -2
- package/src/components/ExpressionEditor/BaseEditorInput.js +3 -3
- package/src/components/ExpressionEditor/QueryBuilder/QueryBuilderInputs.js +3 -3
- package/src/components/ExpressionEditor/QueryBuilder/QueryPredicateBuilder.js +6 -6
- package/src/components/FieldWrap/index.js +2 -2
- package/src/components/Flex.js +2 -2
- package/src/components/FormLayout/index.d.ts +1 -1
- package/src/components/HelpBlock/index.js +3 -3
- package/src/components/IconSelector/IconSelector.d.ts +8 -0
- package/src/components/IconSelector/IconSelector.js +11 -7
- package/src/components/IconSelector/index.d.ts +1 -0
- package/src/components/IconSelector/index.js +1 -0
- package/src/components/Modal/index.js +2 -2
- package/src/components/NewSelect/index.js +11 -1
- package/src/components/Panel/index.js +7 -7
- package/src/components/Radio/index.d.ts +1 -1
- package/src/components/Radio/index.js +8 -6
- package/src/components/SimpleButton/index.js +7 -7
- package/src/components/StylePreview.js +2 -2
- package/src/components/Tabs/index.js +4 -4
- package/src/components/Tag/Tag.d.ts +16 -0
- package/src/components/Tag/Tag.js +14 -4
- package/src/components/Tag/columnScopeTagHelpers.d.ts +8 -0
- package/src/components/Tag/columnScopeTagHelpers.js +6 -0
- package/src/components/Tag/index.d.ts +1 -1
- package/src/components/Tag/index.js +1 -1
- package/src/components/Textarea/index.js +2 -3
- package/src/components/Toggle/Toggle.d.ts +2 -0
- package/src/components/Toggle/Toggle.js +14 -7
- package/src/components/Toggle/ToggleGroup.js +2 -2
- package/src/components/ToggleButton/index.js +4 -4
- package/src/components/Tree/TreeDropdown/index.js +3 -4
- package/src/components/WarningBox/index.js +2 -2
- package/src/components/icons/sort-asc.js +1 -1
- package/src/components/ui/button.d.ts +2 -2
- package/src/components/ui/combobox.d.ts +3 -1
- package/src/components/ui/combobox.js +2 -2
- package/src/components/ui/input-group.d.ts +1 -1
- package/src/components/ui/select.js +3 -2
- package/src/components/ui/textarea.js +1 -1
- package/src/env.js +2 -2
- package/src/layout-manager/src/index.js +7 -3
- package/src/metamodel/adaptable.metamodel.js +1 -1
- package/src/types.d.ts +1 -1
- package/tsconfig.esm.tsbuildinfo +1 -1
- package/src/View/DataChangeHistory/DataChangeHistoryGrid.d.ts +0 -17
- package/src/View/DataChangeHistory/DataChangeHistoryGrid.js +0 -290
- package/src/components/DropdownButton/DropdownButtonItem.d.ts +0 -12
- package/src/components/DropdownButton/DropdownButtonItem.js +0 -1
- package/src/components/DropdownButton/renderItem.d.ts +0 -14
- package/src/components/DropdownButton/renderItem.js +0 -11
- package/src/components/DropdownButton/useExpanded.d.ts +0 -24
- package/src/components/DropdownButton/useExpanded.js +0 -56
- package/src/components/NewDropdownButton/index.d.ts +0 -27
- package/src/components/NewDropdownButton/index.js +0 -24
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import FormLayout, { FormRow } from '../../../components/FormLayout';
|
|
3
|
-
import Input from '../../../components/Input';
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
4
2
|
import { Tag } from '../../../components/Tag';
|
|
5
3
|
import ObjectFactory from '../../../Utilities/ObjectFactory';
|
|
6
4
|
import { useAdaptable } from '../../AdaptableContext';
|
|
7
5
|
import { useOnePageAdaptableWizardContext } from '../../Wizard/OnePageAdaptableWizard';
|
|
8
|
-
import { TypeRadio } from '../../Wizard/TypeRadio';
|
|
9
6
|
import { Flex, Box } from '../../../components/Flex';
|
|
7
|
+
import { StyledColumnTypeThumbnail } from './StyledColumnTypeThumbnail';
|
|
8
|
+
import { getWizardTypeSelectionGridColumns, WizardNameFieldSection, WizardTypeSelectionCard, WizardTypeSelectionSection, } from '../../Wizard/WizardTypeSelection';
|
|
10
9
|
const TYPE_LABELS = {
|
|
11
10
|
Gradient: 'Gradient Column',
|
|
12
11
|
PercentBar: 'Percent Bar',
|
|
@@ -17,6 +16,88 @@ const TYPE_LABELS = {
|
|
|
17
16
|
RangeBar: 'Range Bar',
|
|
18
17
|
Icon: 'Icon',
|
|
19
18
|
};
|
|
19
|
+
const STYLED_COLUMN_TYPE_GROUPS = [
|
|
20
|
+
{
|
|
21
|
+
title: 'Labels & icons',
|
|
22
|
+
types: ['badge', 'icon', 'rating'],
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
title: 'Bars & ranges',
|
|
26
|
+
types: ['percent', 'bullet', 'rangeBar'],
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
title: 'Colour',
|
|
30
|
+
types: ['gradient'],
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
title: 'Charts',
|
|
34
|
+
types: ['sparkline'],
|
|
35
|
+
},
|
|
36
|
+
];
|
|
37
|
+
const STYLED_COLUMN_TYPE_OPTIONS = [
|
|
38
|
+
{
|
|
39
|
+
type: 'badge',
|
|
40
|
+
label: 'Badge',
|
|
41
|
+
columnTypes: ['Any Column'],
|
|
42
|
+
description: 'Render cell values as badges',
|
|
43
|
+
isSelected: (data) => Boolean(data.BadgeStyle),
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
type: 'icon',
|
|
47
|
+
label: 'Icon',
|
|
48
|
+
columnTypes: ['Any Column'],
|
|
49
|
+
description: 'Map values to icons',
|
|
50
|
+
isSelected: (data) => Boolean(data.IconStyle),
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
type: 'rating',
|
|
54
|
+
label: 'Rating',
|
|
55
|
+
columnTypes: ['Numeric Column'],
|
|
56
|
+
description: 'Provide visual rating indicators',
|
|
57
|
+
isSelected: (data) => Boolean(data.RatingStyle),
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
type: 'gradient',
|
|
61
|
+
label: 'Gradient',
|
|
62
|
+
columnTypes: ['Numeric Column'],
|
|
63
|
+
description: 'Colour cells by value ranges',
|
|
64
|
+
isSelected: (data) => Boolean(data.GradientStyle),
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
type: 'percent',
|
|
68
|
+
label: 'Percent Bar',
|
|
69
|
+
columnTypes: ['Numeric Column'],
|
|
70
|
+
description: 'Draw a bar sized to the value',
|
|
71
|
+
isSelected: (data) => Boolean(data.PercentBarStyle),
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
type: 'bullet',
|
|
75
|
+
label: 'Bullet Chart',
|
|
76
|
+
columnTypes: ['Numeric Column'],
|
|
77
|
+
description: 'Bar with target and bands',
|
|
78
|
+
isSelected: (data) => Boolean(data.BulletChartStyle),
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
type: 'rangeBar',
|
|
82
|
+
label: 'Range Bar',
|
|
83
|
+
columnTypes: ['Numeric Column'],
|
|
84
|
+
description: 'Show value on a min–max track',
|
|
85
|
+
isSelected: (data) => Boolean(data.RangeBarStyle),
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
type: 'sparkline',
|
|
89
|
+
label: 'Sparkline',
|
|
90
|
+
columnTypes: ['Numeric Array Column'],
|
|
91
|
+
description: 'Display a mini chart in the cell',
|
|
92
|
+
isSelected: (data) => Boolean(data.SparklineStyle),
|
|
93
|
+
},
|
|
94
|
+
];
|
|
95
|
+
const STYLED_COLUMN_TYPE_COUNT = STYLED_COLUMN_TYPE_OPTIONS.length;
|
|
96
|
+
const STYLED_COLUMN_TYPE_OPTION_BY_KEY = STYLED_COLUMN_TYPE_OPTIONS.reduce((map, option) => {
|
|
97
|
+
map.set(option.type, option);
|
|
98
|
+
return map;
|
|
99
|
+
}, new Map());
|
|
100
|
+
const STYLED_COLUMN_TYPE_KEYS = STYLED_COLUMN_TYPE_GROUPS.flatMap((group) => group.types);
|
|
20
101
|
/**
|
|
21
102
|
* Wizard-header title for each Styled Column type. Reads as a complete
|
|
22
103
|
* subject so it works as a top-level title in the wizard frame
|
|
@@ -79,6 +160,7 @@ export const renderStyledColumnTypeSummary = renderStyledColumnSettingsSummary;
|
|
|
79
160
|
export const StyledColumnWizardTypeSection = (props) => {
|
|
80
161
|
const { data } = useOnePageAdaptableWizardContext();
|
|
81
162
|
const adaptable = useAdaptable();
|
|
163
|
+
const sparklinesAvailable = adaptable.api.styledColumnApi.canDisplaySparklines();
|
|
82
164
|
const onNameChange = (event) => {
|
|
83
165
|
props.onChange({
|
|
84
166
|
...data,
|
|
@@ -123,8 +205,6 @@ export const StyledColumnWizardTypeSection = (props) => {
|
|
|
123
205
|
newStyledColumn.RatingStyle = {};
|
|
124
206
|
break;
|
|
125
207
|
case 'rangeBar':
|
|
126
|
-
// Range Bar requires Min and Max — seed sensible defaults so the
|
|
127
|
-
// wizard's Style step opens with a valid configuration.
|
|
128
208
|
newStyledColumn.RangeBarStyle = {
|
|
129
209
|
Min: 'Col-Min',
|
|
130
210
|
Max: 'Col-Max',
|
|
@@ -139,5 +219,12 @@ export const StyledColumnWizardTypeSection = (props) => {
|
|
|
139
219
|
newStyledColumn.ColumnId = null;
|
|
140
220
|
props.onChange(newStyledColumn);
|
|
141
221
|
};
|
|
142
|
-
return (_jsxs(Flex, { flexDirection: "column", "data-name": "styled-column-type", className: "twa:h-full twa:
|
|
222
|
+
return (_jsxs(Flex, { flexDirection: "column", "data-name": "styled-column-type", className: "twa:h-full twa:min-h-0 twa:p-2 twa:gap-2", children: [_jsx(WizardNameFieldSection, { value: data?.Name ?? '', onChange: onNameChange, inputDataName: "styled-column-name" }), _jsx(WizardTypeSelectionSection, { headingId: "styled-column-type-heading", title: "Style Type", dataName: "styled-column-type-grid", columns: getWizardTypeSelectionGridColumns(STYLED_COLUMN_TYPE_COUNT), intro: _jsxs(_Fragment, { children: ["Click a card to choose one of ", STYLED_COLUMN_TYPE_COUNT, " style types for how values in the Column should be rendered"] }), children: STYLED_COLUMN_TYPE_KEYS.map((typeKey) => {
|
|
223
|
+
const option = STYLED_COLUMN_TYPE_OPTION_BY_KEY.get(typeKey);
|
|
224
|
+
const isSparkline = typeKey === 'sparkline';
|
|
225
|
+
const disabled = isSparkline && !sparklinesAvailable;
|
|
226
|
+
return (_jsx(WizardTypeSelectionCard, { label: option.label, description: option.description, selected: option.isSelected(data), disabled: disabled, disabledTooltip: disabled
|
|
227
|
+
? 'Requires the AG Grid Sparklines module to be registered.'
|
|
228
|
+
: undefined, dataName: `styled-column-type-${option.type}`, minHeightClassName: "twa:min-h-[168px]", onSelect: () => handleTypeChange(option.type), footer: _jsx(StyledColumnTypeThumbnail, { type: option.type }), children: _jsx(Flex, { flexDirection: "row", className: "twa:flex-wrap twa:gap-1", children: option.columnTypes.map((columnType) => (_jsx(Tag, { children: columnType }, columnType))) }) }, option.type));
|
|
229
|
+
}) })] }));
|
|
143
230
|
};
|
package/src/View/UIHelper.d.ts
CHANGED
|
@@ -26,7 +26,6 @@ export declare function getMessageTypeByStatusColour(statusColour: StatusColour)
|
|
|
26
26
|
export declare function getButtonToneByMessageType(messageType: AdaptableMessageType): 'success' | 'error' | 'neutral' | 'none' | 'warning' | 'info' | 'accent';
|
|
27
27
|
export declare function getGlyphByMessageType(messageType: AdaptableMessageType): AdaptableSystemIconName;
|
|
28
28
|
export declare function getColorByMessageType(messageType: AdaptableMessageType): string;
|
|
29
|
-
export declare function getCSSColorByMessageType(messageType: AdaptableMessageType): string;
|
|
30
29
|
export declare function getStyleForStatusColour(statusColour: StatusColour): CSSProperties;
|
|
31
30
|
export declare function getStyleForMessageType(messageType: AdaptableMessageType): CSSProperties;
|
|
32
31
|
export declare function getGlyphForStatusColour(statusColour: StatusColour): string;
|
|
@@ -67,7 +66,6 @@ export declare const UIHelper: {
|
|
|
67
66
|
getGlyphForMessageType: typeof getGlyphForMessageType;
|
|
68
67
|
getStyleForMessageType: typeof getStyleForMessageType;
|
|
69
68
|
getMessageTypeFromAdaptableAlerts: typeof getMessageTypeFromAdaptableAlerts;
|
|
70
|
-
getCSSColorByMessageType: typeof getCSSColorByMessageType;
|
|
71
69
|
getButtonColourForAdaptableAlerts: typeof getButtonColourForAdaptableAlerts;
|
|
72
70
|
getButtonTextColourForArrayandMessageType: typeof getButtonTextColourForArrayandMessageType;
|
|
73
71
|
getButtonTextColourForMessageType: typeof getButtonTextColourForMessageType;
|
package/src/View/UIHelper.js
CHANGED
|
@@ -18,7 +18,7 @@ export function getSwatchColorPaletteEntries() {
|
|
|
18
18
|
/** Theme semantic colours for the Colour Picker (resolved at runtime per active theme). */
|
|
19
19
|
export function getThemeSemanticColorPaletteEntries() {
|
|
20
20
|
return [
|
|
21
|
-
'var(--ab-color-
|
|
21
|
+
'var(--ab-color-destructive)',
|
|
22
22
|
'var(--ab-color-warn)',
|
|
23
23
|
'var(--ab-color-success)',
|
|
24
24
|
'var(--ab-color-info)',
|
|
@@ -134,7 +134,7 @@ export function getGlyphByMessageType(messageType) {
|
|
|
134
134
|
export function getColorByMessageType(messageType) {
|
|
135
135
|
switch (messageType) {
|
|
136
136
|
case 'Error':
|
|
137
|
-
return 'var(--ab-color-
|
|
137
|
+
return 'var(--ab-color-destructive)';
|
|
138
138
|
case 'Warning':
|
|
139
139
|
return 'var(--ab-color-warn)';
|
|
140
140
|
case 'Success':
|
|
@@ -143,20 +143,6 @@ export function getColorByMessageType(messageType) {
|
|
|
143
143
|
return 'var(--ab-color-info)';
|
|
144
144
|
}
|
|
145
145
|
}
|
|
146
|
-
export function getCSSColorByMessageType(messageType) {
|
|
147
|
-
switch (messageType) {
|
|
148
|
-
case 'Error':
|
|
149
|
-
return 'error';
|
|
150
|
-
case 'Warning':
|
|
151
|
-
return 'warn';
|
|
152
|
-
case 'Success':
|
|
153
|
-
return 'success';
|
|
154
|
-
case 'Info':
|
|
155
|
-
return 'info';
|
|
156
|
-
default:
|
|
157
|
-
return '';
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
146
|
export function getStyleForStatusColour(statusColour) {
|
|
161
147
|
let result;
|
|
162
148
|
switch (statusColour) {
|
|
@@ -177,7 +163,7 @@ export function getStyleForStatusColour(statusColour) {
|
|
|
177
163
|
break;
|
|
178
164
|
case StatusColour.Error:
|
|
179
165
|
result = {
|
|
180
|
-
fill: 'var(--ab-color-
|
|
166
|
+
fill: 'var(--ab-color-destructive)',
|
|
181
167
|
};
|
|
182
168
|
break;
|
|
183
169
|
}
|
|
@@ -206,7 +192,7 @@ export function getStyleForMessageType(messageType) {
|
|
|
206
192
|
break;
|
|
207
193
|
case 'Error':
|
|
208
194
|
result = {
|
|
209
|
-
fill: 'var(--ab-color-
|
|
195
|
+
fill: 'var(--ab-color-destructive)',
|
|
210
196
|
};
|
|
211
197
|
break;
|
|
212
198
|
}
|
|
@@ -321,13 +307,13 @@ export function getButtonTextColourForArrayandMessageType(adaptableAlerts, messa
|
|
|
321
307
|
export function getButtonTextColourForMessageType(messageType) {
|
|
322
308
|
switch (messageType) {
|
|
323
309
|
case 'Info':
|
|
324
|
-
return 'var( --ab-color-
|
|
310
|
+
return 'var( --ab-color-info-foreground)';
|
|
325
311
|
case 'Success':
|
|
326
|
-
return 'var( --ab-color-
|
|
312
|
+
return 'var( --ab-color-success-foreground)';
|
|
327
313
|
case 'Warning':
|
|
328
|
-
return 'var( --ab-color-
|
|
314
|
+
return 'var( --ab-color-warn-foreground)';
|
|
329
315
|
case 'Error':
|
|
330
|
-
return 'var( --ab-color-
|
|
316
|
+
return 'var( --ab-color-destructive-foreground)';
|
|
331
317
|
}
|
|
332
318
|
}
|
|
333
319
|
function getNumericCSSVariableValue(stringValue, defaultValue) {
|
|
@@ -381,7 +367,6 @@ export const UIHelper = {
|
|
|
381
367
|
getGlyphForMessageType,
|
|
382
368
|
getStyleForMessageType,
|
|
383
369
|
getMessageTypeFromAdaptableAlerts,
|
|
384
|
-
getCSSColorByMessageType,
|
|
385
370
|
getButtonColourForAdaptableAlerts,
|
|
386
371
|
getButtonTextColourForArrayandMessageType,
|
|
387
372
|
getButtonTextColourForMessageType,
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { type CollapsibleWizardCardSurface } from '../../Utilities/wizardSelection';
|
|
3
|
+
export interface CollapsibleWizardCardProps {
|
|
4
|
+
title: React.ReactNode;
|
|
5
|
+
/** Help text in the header when expanded. */
|
|
6
|
+
help?: React.ReactNode;
|
|
7
|
+
/**
|
|
8
|
+
* Help text in the header when collapsed. Uses `help` when omitted.
|
|
9
|
+
* Pass `false` to hide collapsed header help.
|
|
10
|
+
*/
|
|
11
|
+
collapsedHelp?: React.ReactNode | false;
|
|
12
|
+
/** Shown in the card body while collapsed — typically tags or a short value summary. */
|
|
13
|
+
summary: React.ReactNode;
|
|
14
|
+
/** One-line value shown in the header when another card in the accordion is expanded. */
|
|
15
|
+
compactSummary?: React.ReactNode;
|
|
16
|
+
/** When true, `compactSummary` remains interactive (e.g. toggle buttons). */
|
|
17
|
+
compactSummaryInteractive?: boolean;
|
|
18
|
+
/** Full-opacity visual in the header row (all states) — e.g. a live badge preview. */
|
|
19
|
+
headerVisual?: React.ReactNode;
|
|
20
|
+
/** Trailing header controls (all states) — e.g. delete. Clicks do not toggle expand. */
|
|
21
|
+
headerActions?: React.ReactNode;
|
|
22
|
+
children: React.ReactNode;
|
|
23
|
+
defaultExpanded?: boolean;
|
|
24
|
+
expanded?: boolean;
|
|
25
|
+
/** When true, only the header row is shown (another card in the accordion is expanded). */
|
|
26
|
+
compact?: boolean;
|
|
27
|
+
/** When true, the expanded card grows to fill remaining section height (for scrollable lists). */
|
|
28
|
+
fillAvailable?: boolean;
|
|
29
|
+
onExpandedChange?: (expanded: boolean) => void;
|
|
30
|
+
className?: string;
|
|
31
|
+
bodyClassName?: string;
|
|
32
|
+
/** `panel` = Layout wizard (same bg as parent); `popup` = module popups (Dashboard). */
|
|
33
|
+
surface?: CollapsibleWizardCardSurface;
|
|
34
|
+
'data-name'?: string;
|
|
35
|
+
}
|
|
36
|
+
export type WizardCardAccordionBinding = {
|
|
37
|
+
expanded: boolean;
|
|
38
|
+
compact: boolean;
|
|
39
|
+
fillAvailable: boolean;
|
|
40
|
+
onExpandedChange: (expanded: boolean) => void;
|
|
41
|
+
};
|
|
42
|
+
export type WizardCardAccordionBindCardOptions = {
|
|
43
|
+
/** When expanded, grow to fill remaining section height. Default: false. */
|
|
44
|
+
fillAvailable?: boolean;
|
|
45
|
+
};
|
|
46
|
+
export type WizardCardAccordionOptions = {
|
|
47
|
+
/** Section default for `fillAvailable` when not set per card. Default: false. */
|
|
48
|
+
fillExpandedCard?: boolean;
|
|
49
|
+
};
|
|
50
|
+
export type WizardCardAccordionBindCard = (id: string, options?: WizardCardAccordionBindCardOptions) => WizardCardAccordionBinding;
|
|
51
|
+
export declare function getWizardAccordionSectionClassName(hasExpandedCard: boolean, fillExpandedCard?: boolean): string;
|
|
52
|
+
export declare function renderCompactColumnTags(columnIds: string[], getFriendlyName: (columnId: string) => string, options?: {
|
|
53
|
+
maxVisible?: number;
|
|
54
|
+
emptyLabel?: string;
|
|
55
|
+
}): React.ReactNode;
|
|
56
|
+
export declare const CollapsibleWizardCard: React.FC<CollapsibleWizardCardProps>;
|
|
57
|
+
export declare function useWizardCardAccordion(initialExpandedId: string | null, options?: WizardCardAccordionOptions): {
|
|
58
|
+
expandedId: string;
|
|
59
|
+
hasExpandedCard: boolean;
|
|
60
|
+
expandedFillsSpace: boolean;
|
|
61
|
+
bindCard: WizardCardAccordionBindCard;
|
|
62
|
+
fillExpandedCard: boolean;
|
|
63
|
+
setExpandedId: React.Dispatch<React.SetStateAction<string>>;
|
|
64
|
+
};
|
|
65
|
+
/** Collapsed card body: selected value tag(s) only — no description text. */
|
|
66
|
+
export declare const CollapsibleWizardValueSummary: React.FC<{
|
|
67
|
+
value: React.ReactNode;
|
|
68
|
+
}>;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { Card } from '../../components/Card';
|
|
4
|
+
import { cn } from '../../lib/utils';
|
|
5
|
+
import { getCollapsibleWizardCardCollapsedClasses, getCollapsibleWizardCardExpandedClasses, } from '../../Utilities/wizardSelection';
|
|
6
|
+
import { Box, Flex } from '../../components/Flex';
|
|
7
|
+
import useProperty from '../../components/utils/useProperty';
|
|
8
|
+
import { ColumnTag, Tag } from '../../components/Tag';
|
|
9
|
+
import { IconComponent } from '../../components/Icon';
|
|
10
|
+
import { targetOwn } from '../../components/twUtils';
|
|
11
|
+
export function getWizardAccordionSectionClassName(hasExpandedCard, fillExpandedCard = true) {
|
|
12
|
+
return cn('twa:h-full twa:min-h-0 twa:flex twa:flex-col twa:gap-2', hasExpandedCard && fillExpandedCard ? 'twa:overflow-hidden' : 'twa:overflow-y-auto');
|
|
13
|
+
}
|
|
14
|
+
export function renderCompactColumnTags(columnIds, getFriendlyName, options) {
|
|
15
|
+
const { maxVisible = 5, emptyLabel = 'None' } = options ?? {};
|
|
16
|
+
if (!columnIds.length) {
|
|
17
|
+
return _jsx(Tag, { children: emptyLabel });
|
|
18
|
+
}
|
|
19
|
+
const visibleIds = columnIds.slice(0, maxVisible);
|
|
20
|
+
const remainder = columnIds.length - visibleIds.length;
|
|
21
|
+
return (_jsxs(Flex, { alignItems: "center", className: "twa:gap-1 twa:min-w-0 twa:overflow-hidden", children: [visibleIds.map((columnId) => (_jsx(ColumnTag, { className: "twa:shrink-0", children: getFriendlyName(columnId) }, columnId))), remainder > 0 ? (_jsxs("span", { className: "twa:text-xs twa:opacity-70 twa:shrink-0", children: ["+", remainder] })) : null] }));
|
|
22
|
+
}
|
|
23
|
+
export const CollapsibleWizardCard = (props) => {
|
|
24
|
+
const { title, help, collapsedHelp, summary, compactSummary, compactSummaryInteractive = false, headerVisual, headerActions, children, defaultExpanded = false, compact = false, fillAvailable = false, className, bodyClassName, surface = 'popup', 'data-name': dataName, } = props;
|
|
25
|
+
const [expanded, setExpanded] = useProperty(props, 'expanded', defaultExpanded, {
|
|
26
|
+
onChange: props.onExpandedChange,
|
|
27
|
+
});
|
|
28
|
+
const showSummary = !expanded && !compact;
|
|
29
|
+
const collapsedHeaderInline = collapsedHelp === false ? undefined : collapsedHelp ?? help;
|
|
30
|
+
const headerInline = expanded ? help : compact ? compactSummary : collapsedHeaderInline;
|
|
31
|
+
const isInteractiveCompactSummary = compact && compactSummaryInteractive;
|
|
32
|
+
const toggleExpanded = () => setExpanded(!expanded);
|
|
33
|
+
const handleTitleKeyDown = (event) => {
|
|
34
|
+
if (event.key === 'Enter' || event.key === ' ') {
|
|
35
|
+
event.preventDefault();
|
|
36
|
+
toggleExpanded();
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
return (_jsxs(Card, { shadow: false, className: cn('ab-CollapsibleWizardCard twa:border twa:transition-[border-color,background-color]', expanded
|
|
40
|
+
? getCollapsibleWizardCardExpandedClasses(surface)
|
|
41
|
+
: getCollapsibleWizardCardCollapsedClasses(surface), compact && 'ab-CollapsibleWizardCard--compact twa:p-0!', fillAvailable
|
|
42
|
+
? 'twa:flex-1 twa:min-h-0 twa:flex twa:flex-col twa:overflow-hidden'
|
|
43
|
+
: 'twa:shrink-0', className), children: [_jsx(Card.Title, { className: "twa:p-0", border: !compact, children: _jsxs(Box, { className: cn('twa:flex twa:flex-row twa:items-center twa:gap-2 twa:w-full twa:px-2 twa:cursor-pointer twa:rounded-standard twa:hover:bg-primary', { 'twa:py-2': true, 'twa:mb-0.5': !compact && !expanded },
|
|
44
|
+
// `targetOwn.focusOutline` uses a Tailwind `ring` (an *outward* box-shadow).
|
|
45
|
+
// In compact/collapsed mode the card sets `p-0!`, so this header sits flush
|
|
46
|
+
// against the card edge; combined with the card's `overflow-hidden` the
|
|
47
|
+
// outward ring is painted outside the border-box and clipped away. Draw it
|
|
48
|
+
// inset so it stays inside the element and is always visible.
|
|
49
|
+
targetOwn.focusOutline, 'twa:focus-visible:ring-inset'), "data-name": dataName, onClick: toggleExpanded, onKeyDown: handleTitleKeyDown, tabIndex: 0, "aria-expanded": expanded, role: "button", children: [_jsxs(Box, { className: "twa:flex twa:flex-row twa:items-center twa:gap-2 twa:shrink-0 twa:cursor-pointer twa:select-none", children: [_jsx(IconComponent, { icon: { name: expanded ? 'collapse' : 'expand' } }), _jsx(Box, { className: "twa:font-medium", children: title })] }), headerVisual ? (_jsx(Box, { className: "twa:flex-1 twa:min-w-0 twa:flex twa:justify-end twa:items-center twa:overflow-hidden twa:pointer-events-none", children: headerVisual })) : headerInline ? (_jsx(Box, { className: cn('twa:flex-1 twa:min-w-0 twa:font-normal', isInteractiveCompactSummary
|
|
50
|
+
? 'twa:flex twa:justify-end twa:items-center twa:overflow-visible'
|
|
51
|
+
: cn('twa:text-xs twa:opacity-70 twa:pointer-events-none twa:cursor-default', compact ? 'twa:overflow-hidden' : 'twa:truncate')), children: headerInline })) : (_jsx(Box, { className: "twa:flex-1 twa:min-w-0" })), headerActions ? (_jsx(Box, { className: "twa:shrink-0", onClick: (event) => event.stopPropagation(), children: headerActions })) : null] }) }), expanded ? (_jsx(Card.Body, { className: cn('twa:p-1', bodyClassName, fillAvailable && 'twa:max-h-none! twa:flex-1 twa:min-h-0'), children: children })) : showSummary ? (_jsx(Card.Body, { className: "twa:p-1", gap: 1, children: summary })) : null] }));
|
|
52
|
+
};
|
|
53
|
+
export function useWizardCardAccordion(initialExpandedId, options) {
|
|
54
|
+
const fillExpandedCard = options?.fillExpandedCard ?? false;
|
|
55
|
+
const cardFillByIdRef = React.useRef({});
|
|
56
|
+
const [expandedId, setExpandedId] = React.useState(initialExpandedId);
|
|
57
|
+
const hasExpandedCard = expandedId !== null;
|
|
58
|
+
const bindCard = React.useCallback((id, cardOptions) => {
|
|
59
|
+
const shouldFillWhenExpanded = cardOptions?.fillAvailable ?? fillExpandedCard;
|
|
60
|
+
cardFillByIdRef.current[id] = shouldFillWhenExpanded;
|
|
61
|
+
return {
|
|
62
|
+
expanded: expandedId === id,
|
|
63
|
+
compact: hasExpandedCard && expandedId !== id,
|
|
64
|
+
fillAvailable: expandedId === id && shouldFillWhenExpanded,
|
|
65
|
+
onExpandedChange: (expanded) => {
|
|
66
|
+
setExpandedId(expanded ? id : null);
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
}, [expandedId, hasExpandedCard, fillExpandedCard]);
|
|
70
|
+
const expandedFillsSpace = expandedId != null && cardFillByIdRef.current[expandedId] === true;
|
|
71
|
+
return {
|
|
72
|
+
expandedId,
|
|
73
|
+
hasExpandedCard,
|
|
74
|
+
expandedFillsSpace,
|
|
75
|
+
bindCard,
|
|
76
|
+
fillExpandedCard,
|
|
77
|
+
setExpandedId,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
/** Collapsed card body: selected value tag(s) only — no description text. */
|
|
81
|
+
export const CollapsibleWizardValueSummary = ({ value }) => _jsx(_Fragment, { children: value });
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { useState, useRef } from 'react';
|
|
4
|
-
import
|
|
4
|
+
import { cn } from '../../lib/utils';
|
|
5
5
|
import Dialog from '../../components/Dialog';
|
|
6
6
|
import SimpleButton from '../../components/SimpleButton';
|
|
7
7
|
import useProperty from '../../components/utils/useProperty';
|
|
@@ -82,7 +82,7 @@ export const OnePageWizard = (props) => {
|
|
|
82
82
|
};
|
|
83
83
|
const handleNavigation = useKeyboardNavigation(setCurrentSection, visibleSections);
|
|
84
84
|
const selectedNodeRef = useRef(null);
|
|
85
|
-
const selectedFeedback = (_jsx("div", { ref: selectedNodeRef, onKeyDown: (event) => handleNavigation(event), tabIndex: 0, className:
|
|
85
|
+
const selectedFeedback = (_jsx("div", { ref: selectedNodeRef, onKeyDown: (event) => handleNavigation(event), tabIndex: 0, className: cn('ab-OnePageWizard__selected-title-overlay', 'twa:absolute twa:rounded-standard twa:select-none twa:bg-accent twa:transition-top twa:duration-200', targetOwn.focusOutline) }));
|
|
86
86
|
const sizeOwnerRef = useRef(null);
|
|
87
87
|
const [width, setWidth] = useState(0);
|
|
88
88
|
useResizeObserver(sizeOwnerRef, ({ width }) => {
|
|
@@ -136,7 +136,7 @@ export const OnePageWizard = (props) => {
|
|
|
136
136
|
}
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
|
-
}, children: _jsxs(Box, { className:
|
|
139
|
+
}, children: _jsxs(Box, { className: cn('ab-OnePageWizard twa:flex twa:flex-col twa:h-full twa:w-[90vw] twa:max-w-[1200px]', 'twa:bg-primarylight twa:text-primary-foreground'), "data-name": props.name, style: props.style, children: [(props.moduleName || activeSectionDetails) && (_jsxs(Box, { className: cn('ab-OnePageWizard__header', ONE_PAGE_WIZARD_SECTION_GRID, 'twa:items-start twa:my-3 twa:px-2'), children: [_jsx(Box, { className: "ab-OnePageWizard__module-name twa:min-w-0 twa:pl-3 twa:font-bold", children: props.moduleName }), _jsx(Box, { className: "ab-OnePageWizard__details twa:min-w-0 twa:pr-2 twa:text-4", children: activeSectionDetails })] })), _jsx(Box, { as: "hr", className: "ab-OnePageWizard__module-separator twa:w-full twa:border-0 twa:border-t twa:border-t-input-border twa:mb-2" }), _jsxs(Box, { className: cn(ONE_PAGE_WIZARD_SECTION_GRID, 'twa:flex-1 twa:min-h-0 twa:overflow-auto twa:items-stretch'), children: [_jsxs(Flex, { flexDirection: "column", className: "ab-OnePageWizard__section-title-container twa:min-h-0 twa:min-w-0 twa:overflow-auto twa:p-3 twa:relative", ref: sizeOwnerRef, style: props.titleContainerStyle, children: [visibleSections.map((section, index) => {
|
|
140
140
|
if (section === '-') {
|
|
141
141
|
return (_jsx(Box, { as: "hr", className: "ab-OnePageWizard__section-separator twa:mt-2 twa:w-full twa:border-t twa:border-t-input-border" }, `${index}-`));
|
|
142
142
|
}
|
|
@@ -144,7 +144,7 @@ export const OnePageWizard = (props) => {
|
|
|
144
144
|
navIndexMap.set(navIndex, index);
|
|
145
145
|
const active = index === currentSection;
|
|
146
146
|
const disabled = false; //!active && !currentSectionValid;
|
|
147
|
-
return (_jsxs(Flex, { className:
|
|
147
|
+
return (_jsxs(Flex, { className: cn('ab-OnePageWizard__section-title twa:p-2', {
|
|
148
148
|
'twa:cursor-auto': disabled,
|
|
149
149
|
'twa:cursor-pointer': !disabled,
|
|
150
150
|
'twa:z-10': true,
|
|
@@ -163,6 +163,6 @@ export const OnePageWizard = (props) => {
|
|
|
163
163
|
return;
|
|
164
164
|
}
|
|
165
165
|
setCurrentSection(index);
|
|
166
|
-
}, children: [_jsx(KeyHint, { className: "twa:mr-2 twa:inline-block twa:text-
|
|
167
|
-
}), selectedFeedback, _jsx(Box, { className: "twa:flex-1" }), _jsxs(KeyHint, { className: "ab-OnePageWizard__key-hint twa:leading-normal", children: [isMacLike() ? 'Cmd' : 'Ctrl', " + #", _jsx("br", {}), "or arrow keys", _jsx("br", {}), "to navigate"] })] }), _jsx(Flex, { flexDirection: "column", className: "ab-OnePageWizard__section-container twa:min-h-0 twa:min-w-0 twa:flex-1", children: renderSection(currentSection) })] }), _jsxs(Flex, { flexDirection: "row", alignItems: "center", className: "ab-WizardDialog__footer ab-OnePageWizard__footer twa:p-2", children: [_jsx(SimpleButton, { tone: "neutral", variant: "text", "data-name": "close", onClick: () => props.onHide?.(), tooltip: props.closeTooltip ?? 'Close wizard', accessLevel: ACCESS_LEVEL_FULL, children: props.closeText ?? 'CLOSE' }), _jsx(KeyHint, { className: "twa:ml-2", children: "Esc" }), _jsx(Box, { className: "ab-OnePageWizard__error twa:text-2 twa:mr-3 twa:flex-1 twa:text-
|
|
166
|
+
}, children: [_jsx(KeyHint, { className: "twa:mr-2 twa:inline-block twa:text-accent-foreground", children: navIndex }), _jsx("div", { className: "twa:flex-1", children: section.title }), _jsx(Icon, { name: "error", className: cn('twa:ml-2', validSectionsMap.get(index) !== true ? 'twa:visible' : 'twa:invisible') })] }, section.title));
|
|
167
|
+
}), selectedFeedback, _jsx(Box, { className: "twa:flex-1" }), _jsxs(KeyHint, { className: "ab-OnePageWizard__key-hint twa:leading-normal", children: [isMacLike() ? 'Cmd' : 'Ctrl', " + #", _jsx("br", {}), "or arrow keys", _jsx("br", {}), "to navigate"] })] }), _jsx(Flex, { flexDirection: "column", className: "ab-OnePageWizard__section-container twa:min-h-0 twa:min-w-0 twa:flex-1", children: renderSection(currentSection) })] }), _jsxs(Flex, { flexDirection: "row", alignItems: "center", className: "ab-WizardDialog__footer ab-OnePageWizard__footer twa:p-2", children: [_jsx(SimpleButton, { tone: "neutral", variant: "text", "data-name": "close", onClick: () => props.onHide?.(), tooltip: props.closeTooltip ?? 'Close wizard', accessLevel: ACCESS_LEVEL_FULL, children: props.closeText ?? 'CLOSE' }), _jsx(KeyHint, { className: "twa:ml-2", children: "Esc" }), _jsx(Box, { className: "ab-OnePageWizard__error twa:text-2 twa:mr-3 twa:flex-1 twa:text-destructive twa:text-end", children: firstErrorMessage }), _jsx(SimpleButton, { tone: "accent", "data-name": "finish", variant: "raised", disabled: canFinish !== true, onClick: () => handleClickFinish(), icon: 'check', accessLevel: ACCESS_LEVEL_FULL, children: props.finishText ?? 'Finish' })] })] }) }) }) }));
|
|
168
168
|
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import type { AdaptableIcon } from '../../types';
|
|
3
|
+
export type SummaryLabelValueItem = {
|
|
4
|
+
label: string;
|
|
5
|
+
value: string;
|
|
6
|
+
/** When set on an Icon summary row, renders the icon glyph instead of the name. */
|
|
7
|
+
icon?: AdaptableIcon;
|
|
8
|
+
};
|
|
9
|
+
export declare const isSummaryColorLabel: (label: string) => boolean;
|
|
10
|
+
/** Labels whose label + value render together inside a single tag (colours, font traits). */
|
|
11
|
+
export declare const isSummaryInTagLabel: (label: string) => boolean;
|
|
12
|
+
export declare const ColorSummarySquare: React.FC<{
|
|
13
|
+
color: string;
|
|
14
|
+
className?: string;
|
|
15
|
+
}>;
|
|
16
|
+
export declare const renderSummaryLabelValueTagContent: (label: string, value: string, icon?: AdaptableIcon) => React.ReactNode;
|
|
17
|
+
export declare const parseSummaryLabelValueString: (item: string) => {
|
|
18
|
+
label: string;
|
|
19
|
+
value: string;
|
|
20
|
+
} | null;
|
|
21
|
+
export declare const renderSummaryStringTagContent: (item: string) => React.ReactNode;
|
|
22
|
+
export declare const renderSummaryStringTags: (items: string[]) => React.JSX.Element;
|
|
23
|
+
export declare const summaryStringsToTagContents: (items: string[]) => React.ReactNode[];
|
|
24
|
+
export declare const renderSummaryLabelValueTags: (items: SummaryLabelValueItem[]) => React.JSX.Element;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Flex } from '../../components/Flex';
|
|
3
|
+
import { Tag } from '../../components/Tag';
|
|
4
|
+
import { getVariableColor } from '../../Utilities/Helpers/StyleHelper';
|
|
5
|
+
import { allIcons, Icon } from '../../components/icons';
|
|
6
|
+
import { AdaptableIconComponent } from '../Components/AdaptableIconComponent';
|
|
7
|
+
const COLOR_SQUARE_CLASS = 'twa:h-3 twa:w-3 twa:rounded-sm twa:shrink-0 twa:border twa:border-[color-mix(in_srgb,var(--ab-color-foreground)_20%,transparent)]';
|
|
8
|
+
export const isSummaryColorLabel = (label) => /\bColou?r$/i.test(label.trim());
|
|
9
|
+
const isIconSummaryLabel = (label) => label.trim() === 'Icon';
|
|
10
|
+
/** Labels whose label + value render together inside a single tag (colours, font traits). */
|
|
11
|
+
export const isSummaryInTagLabel = (label) => {
|
|
12
|
+
const trimmed = label.trim();
|
|
13
|
+
return (isSummaryColorLabel(trimmed) ||
|
|
14
|
+
isIconSummaryLabel(trimmed) ||
|
|
15
|
+
trimmed === 'Font Weight' ||
|
|
16
|
+
trimmed === 'Font Style');
|
|
17
|
+
};
|
|
18
|
+
export const ColorSummarySquare = ({ color, className, }) => (_jsx(Box, { className: className ?? COLOR_SQUARE_CLASS, style: { background: getVariableColor(color) }, "aria-hidden": true }));
|
|
19
|
+
const SummaryIconVisual = ({ icon, value }) => {
|
|
20
|
+
if (icon) {
|
|
21
|
+
return (_jsx(AdaptableIconComponent, { icon: { ...icon, size: icon.size ?? 14 } }));
|
|
22
|
+
}
|
|
23
|
+
if (value && value in allIcons) {
|
|
24
|
+
return (_jsx(Icon, { "aria-hidden": true, name: value, size: 14, className: "twa:shrink-0" }));
|
|
25
|
+
}
|
|
26
|
+
return null;
|
|
27
|
+
};
|
|
28
|
+
const isSummaryIconVisualAvailable = (icon, value) => Boolean(icon || (value && value in allIcons));
|
|
29
|
+
const isFontWeightLabel = (label) => label.trim() === 'Font Weight';
|
|
30
|
+
const isFontStyleLabel = (label) => label.trim() === 'Font Style';
|
|
31
|
+
export const renderSummaryLabelValueTagContent = (label, value, icon) => {
|
|
32
|
+
if (isSummaryColorLabel(label)) {
|
|
33
|
+
return (_jsxs(Flex, { alignItems: "center", className: "twa:gap-1.5", children: [label, _jsx(ColorSummarySquare, { color: value })] }));
|
|
34
|
+
}
|
|
35
|
+
if (isIconSummaryLabel(label)) {
|
|
36
|
+
if (isSummaryIconVisualAvailable(icon, value)) {
|
|
37
|
+
return (_jsxs(Flex, { alignItems: "center", className: "twa:gap-1.5", children: [label, _jsx(SummaryIconVisual, { icon: icon, value: value })] }));
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
if (isFontWeightLabel(label) && value === 'Bold') {
|
|
41
|
+
return _jsx(Box, { className: "twa:font-bold", children: `${label}: ${value}` });
|
|
42
|
+
}
|
|
43
|
+
if (isFontStyleLabel(label) && value === 'Italic') {
|
|
44
|
+
return _jsx(Box, { className: "twa:italic", children: `${label}: ${value}` });
|
|
45
|
+
}
|
|
46
|
+
return `${label}: ${value}`;
|
|
47
|
+
};
|
|
48
|
+
export const parseSummaryLabelValueString = (item) => {
|
|
49
|
+
const colonIndex = item.indexOf(': ');
|
|
50
|
+
if (colonIndex <= 0) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
label: item.slice(0, colonIndex),
|
|
55
|
+
value: item.slice(colonIndex + 2),
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
export const renderSummaryStringTagContent = (item) => {
|
|
59
|
+
const parsed = parseSummaryLabelValueString(item);
|
|
60
|
+
if (!parsed) {
|
|
61
|
+
return item;
|
|
62
|
+
}
|
|
63
|
+
return renderSummaryLabelValueTagContent(parsed.label, parsed.value);
|
|
64
|
+
};
|
|
65
|
+
export const renderSummaryStringTags = (items) => (_jsx(Flex, { alignItems: "center", className: "twa:flex-wrap twa:gap-2", children: items.map((item) => (_jsx(Tag, { children: renderSummaryStringTagContent(item) }, item))) }));
|
|
66
|
+
export const summaryStringsToTagContents = (items) => items.map((item) => renderSummaryStringTagContent(item));
|
|
67
|
+
export const renderSummaryLabelValueTags = (items) => (_jsx(Flex, { alignItems: "center", className: "twa:gap-1 twa:flex-wrap", children: items.map(({ label, value, icon }) => (_jsx(Tag, { children: renderSummaryLabelValueTagContent(label, value, icon) }, `${label}-${value}`))) }));
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export declare const WIZARD_TYPE_SELECTION_PREVIEW_FRAME_CLASS = "twa:flex twa:w-full twa:min-h-[32px] twa:items-center twa:justify-center twa:overflow-hidden twa:rounded-standard twa:border twa:border-[color-mix(in_srgb,var(--ab-color-foreground)_15%,transparent)] twa:bg-[color-mix(in_srgb,var(--ab-color-primary)_35%,transparent)] twa:px-2 twa:py-1";
|
|
3
|
+
export declare const getWizardTypeSelectionGridColumns: (choiceCount: number) => 2 | 3;
|
|
4
|
+
export type WizardTypeSelectionCardProps = {
|
|
5
|
+
label: string;
|
|
6
|
+
description?: string;
|
|
7
|
+
selected: boolean;
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
disabledTooltip?: string;
|
|
10
|
+
dataName: string;
|
|
11
|
+
minHeightClassName?: string;
|
|
12
|
+
onSelect: () => void;
|
|
13
|
+
children?: React.ReactNode;
|
|
14
|
+
footer?: React.ReactNode;
|
|
15
|
+
};
|
|
16
|
+
export declare const WizardTypeSelectionCard: React.FunctionComponent<WizardTypeSelectionCardProps>;
|
|
17
|
+
export type WizardTypeSelectionSectionProps = {
|
|
18
|
+
headingId: string;
|
|
19
|
+
title: string;
|
|
20
|
+
intro: React.ReactNode;
|
|
21
|
+
columns: 2 | 3;
|
|
22
|
+
dataName?: string;
|
|
23
|
+
className?: string;
|
|
24
|
+
children: React.ReactNode;
|
|
25
|
+
};
|
|
26
|
+
export declare const WizardTypeSelectionSection: React.FunctionComponent<WizardTypeSelectionSectionProps>;
|
|
27
|
+
export type WizardNameFieldSectionProps = {
|
|
28
|
+
value: string;
|
|
29
|
+
onChange: (event: React.SyntheticEvent) => void;
|
|
30
|
+
inputDataName?: string;
|
|
31
|
+
placeholder?: string;
|
|
32
|
+
};
|
|
33
|
+
export declare const WizardNameFieldSection: React.FunctionComponent<WizardNameFieldSectionProps>;
|
|
34
|
+
export declare const WizardTypeSelectionPreviewFrame: React.FunctionComponent<React.PropsWithChildren>;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import Input from '../../components/Input';
|
|
3
|
+
import { Box } from '../../components/Flex';
|
|
4
|
+
import { Card } from '../../components/Card';
|
|
5
|
+
import { cn } from '../../lib/utils';
|
|
6
|
+
export const WIZARD_TYPE_SELECTION_PREVIEW_FRAME_CLASS = 'twa:flex twa:w-full twa:min-h-[32px] twa:items-center twa:justify-center twa:overflow-hidden twa:rounded-standard twa:border twa:border-[color-mix(in_srgb,var(--ab-color-foreground)_15%,transparent)] twa:bg-[color-mix(in_srgb,var(--ab-color-primary)_35%,transparent)] twa:px-2 twa:py-1';
|
|
7
|
+
export const getWizardTypeSelectionGridColumns = (choiceCount) => choiceCount === 4 ? 2 : 3;
|
|
8
|
+
export const WizardTypeSelectionCard = ({ label, description, selected, disabled, disabledTooltip, dataName, minHeightClassName = 'twa:min-h-[108px]', onSelect, children, footer, }) => {
|
|
9
|
+
const handleActivate = () => {
|
|
10
|
+
if (!disabled) {
|
|
11
|
+
onSelect();
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
return (_jsxs(Box, { role: "radio", tabIndex: disabled ? -1 : 0, "aria-checked": selected, "aria-disabled": disabled, "data-name": dataName, className: cn('ab-WizardTypeSelectionCard group twa:relative twa:h-full twa:rounded-standard twa:border twa:border-primarydark/32 twa:bg-card twa:text-card-foreground twa:outline-none twa:transition-colors twa:focus-visible:ring-2 twa:focus-visible:ring-accent', minHeightClassName, disabled
|
|
15
|
+
? 'twa:cursor-not-allowed twa:opacity-60'
|
|
16
|
+
: 'twa:cursor-pointer hover:twa:border-accent/55 hover:twa:bg-accent/5', selected &&
|
|
17
|
+
'twa:after:pointer-events-none twa:after:absolute twa:after:inset-0 twa:after:rounded-standard twa:after:border-2 twa:after:border-[var(--ab-cmp-wizard-type-selection-card__selected-border)] twa:after:bg-[var(--ab-cmp-wizard-type-selection-card__selected-overlay)]'), onClick: handleActivate, onKeyDown: (event) => {
|
|
18
|
+
if (disabled) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
if (event.key === 'Enter' || event.key === ' ') {
|
|
22
|
+
event.preventDefault();
|
|
23
|
+
onSelect();
|
|
24
|
+
}
|
|
25
|
+
}, children: [_jsx(Box, { "aria-hidden": true, className: cn('twa:pointer-events-none twa:absolute twa:top-2.5 twa:right-2.5 twa:z-10 twa:size-4 twa:rounded-full twa:border-2 twa:transition-colors', selected
|
|
26
|
+
? 'twa:border-[var(--ab-cmp-wizard-type-selection-card__selected-border)] twa:bg-[var(--ab-cmp-wizard-type-selection-card__selected-border)]'
|
|
27
|
+
: 'twa:border-primarydark/35 twa:bg-base group-hover:twa:border-accent/55'), children: selected ? (_jsx(Box, { className: "twa:absolute twa:inset-0 twa:m-auto twa:size-1.5 twa:rounded-full twa:bg-[var(--ab-cmp-wizard-type-selection-card__selected-indicator-inner)]" })) : null }), _jsxs(Card, { shadow: false, style: { backgroundColor: 'transparent' }, className: "twa:flex twa:h-full twa:flex-col twa:justify-between twa:p-3 twa:pr-7", gap: 0, children: [_jsx(Box, { className: "twa:font-medium", children: label }), children, description || disabledTooltip ? (_jsxs(Box, { children: [description ? (_jsx(Box, { className: "twa:text-xs twa:leading-snug twa:opacity-70", children: description })) : null, disabled && disabledTooltip ? (_jsx(Box, { className: "twa:mt-1 twa:text-1 twa:leading-snug twa:italic twa:opacity-80", children: disabledTooltip })) : null] })) : null, footer] })] }));
|
|
28
|
+
};
|
|
29
|
+
export const WizardTypeSelectionSection = ({ headingId, title, intro, columns, dataName, className, children }) => (_jsxs(Card, { shadow: false, gap: 1, className: cn('twa:flex-1 twa:min-h-0', className), children: [_jsxs(Card.Title, { gap: 1, border: false, className: "twa:flex-col twa:items-start twa:px-1 twa:pb-1", children: [_jsx(Box, { id: headingId, className: "twa:font-medium", children: title }), _jsx(Box, { className: "twa:mt-1.5 twa:text-xs twa:font-normal twa:opacity-70", children: intro })] }), _jsx(Card.Body, { className: "twa:min-h-0 twa:overflow-y-auto twa:p-1 twa:pt-0", children: _jsx(Box, { "data-name": dataName, className: cn('twa:grid twa:gap-2', columns === 2 ? 'twa:grid-cols-2' : 'twa:grid-cols-3'), role: "radiogroup", "aria-labelledby": headingId, children: children }) })] }));
|
|
30
|
+
export const WizardNameFieldSection = ({ value, onChange, inputDataName = 'wizard-name', placeholder = 'Enter Name', }) => (_jsxs(Card, { shadow: false, gap: 1, className: "twa:bg-card twa:text-card-foreground", children: [_jsx(Card.Title, { gap: 1, border: false, className: "twa:px-1 twa:pb-1", children: _jsx(Box, { className: "twa:font-medium", children: "Name" }) }), _jsx(Card.Body, { className: "twa:p-1", children: _jsx(Input, { className: "twa:w-full twa:max-w-[420px]", "data-name": inputDataName, onChange: onChange, placeholder: placeholder, value: value }) })] }));
|
|
31
|
+
export const WizardTypeSelectionPreviewFrame = ({ children, }) => (_jsx(Box, { "aria-hidden": true, className: WIZARD_TYPE_SELECTION_PREVIEW_FRAME_CLASS, children: children }));
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { AdaptableApi, Layout } from '../../types';
|
|
3
|
+
export declare const TableRowGroupSummaryTags: React.FC<{
|
|
4
|
+
layout: Layout;
|
|
5
|
+
api: AdaptableApi;
|
|
6
|
+
}>;
|
|
7
|
+
export declare const PivotRowGroupSummaryTags: React.FC<{
|
|
8
|
+
layout: Layout;
|
|
9
|
+
api: AdaptableApi;
|
|
10
|
+
}>;
|
|
11
|
+
export declare const TableRowGroupSummaryView: React.FC<{
|
|
12
|
+
layout: Layout;
|
|
13
|
+
api: AdaptableApi;
|
|
14
|
+
}>;
|
|
15
|
+
export declare const PivotRowGroupSummaryView: React.FC<{
|
|
16
|
+
layout: Layout;
|
|
17
|
+
api: AdaptableApi;
|
|
18
|
+
}>;
|