@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,91 +1,15 @@
|
|
|
1
|
-
import { jsx as _jsx
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { connect } from 'react-redux';
|
|
4
4
|
import * as ToolPanelRedux from '../../../Redux/ActionsReducers/ToolPanelRedux';
|
|
5
5
|
import { PopupPanel } from '../Popups/AdaptablePopup/PopupPanel';
|
|
6
|
-
import
|
|
7
|
-
|
|
8
|
-
import ArrayExtensions from '../../../Utilities/Extensions/ArrayExtensions';
|
|
9
|
-
import { ModuleValueSelector } from '../ModuleValueSelector';
|
|
10
|
-
import { Tabs } from '../../../components/Tabs';
|
|
11
|
-
import Panel from '../../../components/Panel';
|
|
12
|
-
export var ToolPanelConfigView;
|
|
13
|
-
(function (ToolPanelConfigView) {
|
|
14
|
-
ToolPanelConfigView["Buttons"] = "Buttons";
|
|
15
|
-
ToolPanelConfigView["ToolPanels"] = "ToolPanels";
|
|
16
|
-
})(ToolPanelConfigView || (ToolPanelConfigView = {}));
|
|
6
|
+
import { ToolPanelPopupSections, ToolPanelConfigView } from './ToolPanelPopupSections';
|
|
7
|
+
export { ToolPanelConfigView } from './ToolPanelPopupSections';
|
|
17
8
|
class ToolPanelPopupComponent extends React.Component {
|
|
18
|
-
constructor(props) {
|
|
19
|
-
super(props);
|
|
20
|
-
const initialTab = props.popupParams?.config?.initialTab ?? ToolPanelConfigView.ToolPanels;
|
|
21
|
-
this.state = {
|
|
22
|
-
ToolPanelConfigView: initialTab,
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
9
|
render() {
|
|
26
|
-
|
|
27
|
-
const selectedModuleButtons = [];
|
|
28
|
-
if (ArrayExtensions.IsNotNullOrEmpty(this.props.ToolPanelState.ModuleButtons)) {
|
|
29
|
-
this.props.ToolPanelState.ModuleButtons.forEach((module) => {
|
|
30
|
-
let menuItem = this.props.InternalState.SettingsPanelModuleEntries.find((m) => m.category == module);
|
|
31
|
-
if (menuItem?.isVisible) {
|
|
32
|
-
selectedModuleButtons.push(module);
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
const allModuleButtons = this.props.InternalState.SettingsPanelModuleEntries.map((x) => x.category);
|
|
37
|
-
// 2. process tool panels
|
|
38
|
-
const availableModules = this.props.InternalState.SettingsPanelModuleEntries.filter((menuItem) => menuItem.isVisible).map((menuItem) => menuItem.category);
|
|
39
|
-
// 'Dashboard' is a special case because it's not available in the dashboard menu items, s we have to add it manually
|
|
40
|
-
if (!this.props.api.entitlementApi.isModuleHiddenEntitlement('Dashboard')) {
|
|
41
|
-
availableModules.push('Dashboard');
|
|
42
|
-
}
|
|
43
|
-
if (this.props.api.pluginsApi.getipushpullPluginApi() &&
|
|
44
|
-
!this.props.api.entitlementApi.isModuleHiddenEntitlement('IPushPull')) {
|
|
45
|
-
availableModules.push('IPushPull');
|
|
46
|
-
}
|
|
47
|
-
if (this.props.api.pluginsApi.getOpenFinPluginApi() &&
|
|
48
|
-
!this.props.api.entitlementApi.isModuleHiddenEntitlement('OpenFin')) {
|
|
49
|
-
availableModules.push('OpenFin');
|
|
50
|
-
}
|
|
51
|
-
const availableModuleToolPanels = ALL_TOOL_PANELS.filter((moduleToolPanel) => ArrayExtensions.ContainsItem(availableModules, moduleToolPanel));
|
|
52
|
-
const availableCustomToolPanels = this.props.api.toolPanelApi
|
|
53
|
-
.getCustomToolPanels()
|
|
54
|
-
.map((customToolPanel) => customToolPanel.name);
|
|
55
|
-
const availableToolPanels = [
|
|
56
|
-
...availableCustomToolPanels,
|
|
57
|
-
...availableModuleToolPanels,
|
|
58
|
-
];
|
|
59
|
-
const selectedToolPanels = this.props.ToolPanelState.ToolPanels.map((toolPanelDefinition) => toolPanelDefinition.Name)
|
|
60
|
-
// ensure that the visible state has only valid tool panels
|
|
61
|
-
.filter((visibleToolPanel) => availableToolPanels.includes(visibleToolPanel));
|
|
10
|
+
const initialTab = this.props.popupParams?.config?.initialTab ?? ToolPanelConfigView.ToolPanels;
|
|
62
11
|
const isToolPanelReadOnly = this.props.api.entitlementApi.isModuleReadOnlyEntitlement('ToolPanel');
|
|
63
|
-
|
|
64
|
-
if (module === 'SettingsPanel') {
|
|
65
|
-
return this.props.api.optionsApi.getSettingsPanelOptions().alwaysShowInDashboard;
|
|
66
|
-
}
|
|
67
|
-
return false;
|
|
68
|
-
};
|
|
69
|
-
return (_jsx(PopupPanel, { headerText: "Tool Panel", glyphicon: this.props.moduleInfo.Glyph, infoLink: this.props.moduleInfo.HelpPage, infoLinkDisabled: !this.props.api.internalApi.isDocumentationLinksDisplayed(), scrollable: false, children: _jsx(Panel, { className: "twa:flex-1 twa:border-none twa:shadow-md twa:overflow-hidden", children: _jsx(Panel.FlexBody, { children: _jsxs(Tabs, { "data-name": 'toolPanelPopup-component', className: "ab-ToolPanelPopup twa:min-h-0 twa:flex-1", value: this.state.ToolPanelConfigView, onValueChange: (value) => this.setState({ ToolPanelConfigView: value }), children: [_jsx(Tabs.Tab, { value: ToolPanelConfigView.ToolPanels, children: _jsx(Radio, { className: "twa:m-0", value: ToolPanelConfigView.ToolPanels, checked: this.state.ToolPanelConfigView == ToolPanelConfigView.ToolPanels, tabIndex: -1, children: "Tool Panels" }) }), _jsx(Tabs.Tab, { value: ToolPanelConfigView.Buttons, children: _jsx(Radio, { className: "twa:m-0", value: ToolPanelConfigView.Buttons, checked: this.state.ToolPanelConfigView == ToolPanelConfigView.Buttons, tabIndex: -1, children: "Module Buttons" }) }), _jsx(Tabs.Content, { value: ToolPanelConfigView.ToolPanels, style: { flex: 1, overflow: 'auto' }, children: _jsx(ModuleValueSelector, { options: availableToolPanels, value: selectedToolPanels, onChange: (selectedValues) => this.onToolPanelToolPanelsChanged(selectedValues), disabled: isToolPanelReadOnly }) }), _jsx(Tabs.Content, { value: ToolPanelConfigView.Buttons, style: { flex: 1, overflow: 'auto' }, children: _jsx(ModuleValueSelector, { options: allModuleButtons, value: selectedModuleButtons, isOptionDisabled: isModuleCheckboxDisabled, disabled: isToolPanelReadOnly, onChange: (selectedValues) => this.props.onToolPanelSetModuleButtons(selectedValues) }) })] }) }) }) }));
|
|
70
|
-
}
|
|
71
|
-
onShowGridPropertiesChanged(event) {
|
|
72
|
-
let e = event.target;
|
|
73
|
-
let ToolPanelConfigView = e.value;
|
|
74
|
-
this.setState({
|
|
75
|
-
ToolPanelConfigView: ToolPanelConfigView,
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
onToolPanelToolPanelsChanged(selectedValues) {
|
|
79
|
-
const currentSelectedToolPanelDefinitions = this.props.ToolPanelState.ToolPanels;
|
|
80
|
-
// try to return the pre-existing definition (to maintain the previous collapsed state)
|
|
81
|
-
// otherwise select the new toolPanel with the default 'collapsed' state
|
|
82
|
-
let newSelectedToolPanelDefinitions = selectedValues.map((selectedToolPanel) => {
|
|
83
|
-
return (currentSelectedToolPanelDefinitions.find((currentDefinition) => currentDefinition.Name === selectedToolPanel) ?? {
|
|
84
|
-
Name: selectedToolPanel,
|
|
85
|
-
VisibilityMode: 'collapsed',
|
|
86
|
-
});
|
|
87
|
-
});
|
|
88
|
-
this.props.onToolPanelSetToolPanels(newSelectedToolPanelDefinitions);
|
|
12
|
+
return (_jsx(PopupPanel, { headerText: "Tool Panel", glyphicon: this.props.moduleInfo.Glyph, infoLink: this.props.moduleInfo.HelpPage, infoLinkDisabled: !this.props.api.internalApi.isDocumentationLinksDisplayed(), scrollable: false, bodyClassName: "twa:gap-3 twa:flex twa:flex-col twa:h-full twa:min-h-0", children: _jsx(ToolPanelPopupSections, { ToolPanelState: this.props.ToolPanelState, InternalState: this.props.InternalState, initialTab: initialTab, isToolPanelReadOnly: isToolPanelReadOnly, onToolPanelSetModuleButtons: this.props.onToolPanelSetModuleButtons, onToolPanelSetToolPanels: this.props.onToolPanelSetToolPanels }) }));
|
|
89
13
|
}
|
|
90
14
|
}
|
|
91
15
|
function mapStateToProps(state) {
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { InternalState } from '../../../AdaptableState/InternalState';
|
|
3
|
+
import { AdaptableToolPanelDefinition, ToolPanelState } from '../../../AdaptableState/ToolPanelState';
|
|
4
|
+
import { AdaptableModuleButtons } from '../../../AdaptableState/Common/Types';
|
|
5
|
+
export declare enum ToolPanelConfigView {
|
|
6
|
+
Buttons = "Buttons",
|
|
7
|
+
ToolPanels = "ToolPanels"
|
|
8
|
+
}
|
|
9
|
+
export interface ToolPanelPopupSectionsProps {
|
|
10
|
+
ToolPanelState: ToolPanelState;
|
|
11
|
+
InternalState: InternalState;
|
|
12
|
+
initialTab?: ToolPanelConfigView;
|
|
13
|
+
isToolPanelReadOnly: boolean;
|
|
14
|
+
onToolPanelSetModuleButtons: (moduleButtons: AdaptableModuleButtons) => void;
|
|
15
|
+
onToolPanelSetToolPanels: (toolPanels: AdaptableToolPanelDefinition[]) => void;
|
|
16
|
+
}
|
|
17
|
+
export declare const ToolPanelPopupSections: React.FunctionComponent<ToolPanelPopupSectionsProps>;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { ALL_TOOL_PANELS, } from '../../../AdaptableState/Common/Types';
|
|
4
|
+
import ArrayExtensions from '../../../Utilities/Extensions/ArrayExtensions';
|
|
5
|
+
import { ModuleValueSelector } from '../ModuleValueSelector';
|
|
6
|
+
import { Flex } from '../../../components/Flex';
|
|
7
|
+
import { Tag } from '../../../components/Tag';
|
|
8
|
+
import { useAdaptable } from '../../AdaptableContext';
|
|
9
|
+
import { CollapsibleWizardCard, getWizardAccordionSectionClassName, renderCompactColumnTags, useWizardCardAccordion, } from '../../Wizard/CollapsibleWizardCard';
|
|
10
|
+
export var ToolPanelConfigView;
|
|
11
|
+
(function (ToolPanelConfigView) {
|
|
12
|
+
ToolPanelConfigView["Buttons"] = "Buttons";
|
|
13
|
+
ToolPanelConfigView["ToolPanels"] = "ToolPanels";
|
|
14
|
+
})(ToolPanelConfigView || (ToolPanelConfigView = {}));
|
|
15
|
+
export const ToolPanelPopupSections = (props) => {
|
|
16
|
+
const { api } = useAdaptable();
|
|
17
|
+
const initialExpandedId = props.initialTab === ToolPanelConfigView.Buttons ? 'module-buttons' : 'tool-panels';
|
|
18
|
+
const { bindCard, hasExpandedCard, expandedFillsSpace } = useWizardCardAccordion(initialExpandedId);
|
|
19
|
+
const selectedModuleButtons = [];
|
|
20
|
+
if (ArrayExtensions.IsNotNullOrEmpty(props.ToolPanelState.ModuleButtons)) {
|
|
21
|
+
props.ToolPanelState.ModuleButtons.forEach((module) => {
|
|
22
|
+
const menuItem = props.InternalState.SettingsPanelModuleEntries.find((entry) => entry.category === module);
|
|
23
|
+
if (menuItem?.isVisible) {
|
|
24
|
+
selectedModuleButtons.push(module);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
const allModuleButtons = props.InternalState.SettingsPanelModuleEntries.map((entry) => entry.category);
|
|
29
|
+
const availableModules = props.InternalState.SettingsPanelModuleEntries.filter((menuItem) => menuItem.isVisible).map((menuItem) => menuItem.category);
|
|
30
|
+
if (!api.entitlementApi.isModuleHiddenEntitlement('Dashboard')) {
|
|
31
|
+
availableModules.push('Dashboard');
|
|
32
|
+
}
|
|
33
|
+
if (api.pluginsApi.getipushpullPluginApi() &&
|
|
34
|
+
!api.entitlementApi.isModuleHiddenEntitlement('IPushPull')) {
|
|
35
|
+
availableModules.push('IPushPull');
|
|
36
|
+
}
|
|
37
|
+
if (api.pluginsApi.getOpenFinPluginApi() &&
|
|
38
|
+
!api.entitlementApi.isModuleHiddenEntitlement('OpenFin')) {
|
|
39
|
+
availableModules.push('OpenFin');
|
|
40
|
+
}
|
|
41
|
+
const availableModuleToolPanels = ALL_TOOL_PANELS.filter((moduleToolPanel) => ArrayExtensions.ContainsItem(availableModules, moduleToolPanel));
|
|
42
|
+
const availableCustomToolPanels = api.toolPanelApi
|
|
43
|
+
.getCustomToolPanels()
|
|
44
|
+
.map((customToolPanel) => customToolPanel.name);
|
|
45
|
+
const availableToolPanels = [
|
|
46
|
+
...availableCustomToolPanels,
|
|
47
|
+
...availableModuleToolPanels,
|
|
48
|
+
];
|
|
49
|
+
const selectedToolPanels = props.ToolPanelState.ToolPanels.map((toolPanelDefinition) => toolPanelDefinition.Name).filter((visibleToolPanel) => availableToolPanels.includes(visibleToolPanel));
|
|
50
|
+
const getToolPanelLabel = React.useCallback((toolPanelId) => {
|
|
51
|
+
const customToolPanel = api.toolPanelApi.getCustomToolPanelByName(toolPanelId);
|
|
52
|
+
if (customToolPanel) {
|
|
53
|
+
return customToolPanel.title ?? customToolPanel.name;
|
|
54
|
+
}
|
|
55
|
+
return (api.internalApi.getModuleService().getModuleFriendlyName(toolPanelId) ??
|
|
56
|
+
toolPanelId);
|
|
57
|
+
}, [api]);
|
|
58
|
+
const isModuleCheckboxDisabled = (module) => {
|
|
59
|
+
if (module === 'SettingsPanel') {
|
|
60
|
+
return api.optionsApi.getSettingsPanelOptions().alwaysShowInDashboard;
|
|
61
|
+
}
|
|
62
|
+
return false;
|
|
63
|
+
};
|
|
64
|
+
const handleToolPanelsChanged = (selectedValues) => {
|
|
65
|
+
const currentSelectedToolPanelDefinitions = props.ToolPanelState.ToolPanels;
|
|
66
|
+
const newSelectedToolPanelDefinitions = selectedValues.map((selectedToolPanel) => currentSelectedToolPanelDefinitions.find((currentDefinition) => currentDefinition.Name === selectedToolPanel) ?? {
|
|
67
|
+
Name: selectedToolPanel,
|
|
68
|
+
VisibilityMode: 'collapsed',
|
|
69
|
+
});
|
|
70
|
+
props.onToolPanelSetToolPanels(newSelectedToolPanelDefinitions);
|
|
71
|
+
};
|
|
72
|
+
const moduleButtonLabels = selectedModuleButtons.map((module) => api.internalApi.getModuleService().getModuleFriendlyName(module) ?? module);
|
|
73
|
+
const toolPanelsSummary = selectedToolPanels.length > 0 ? (_jsx(Flex, { flexWrap: "wrap", alignItems: "center", className: "twa:gap-1", children: selectedToolPanels.map((toolPanelId) => (_jsx(Tag, { children: getToolPanelLabel(toolPanelId) }, toolPanelId))) })) : (_jsx(Tag, { children: "No tool panels" }));
|
|
74
|
+
const moduleButtonsSummary = moduleButtonLabels.length > 0 ? (_jsx(Flex, { flexWrap: "wrap", alignItems: "center", className: "twa:gap-1", children: moduleButtonLabels.map((label) => (_jsx(Tag, { children: label }, label))) })) : (_jsx(Tag, { children: "No Module Buttons" }));
|
|
75
|
+
return (_jsxs(Flex, { flexDirection: "column", className: getWizardAccordionSectionClassName(hasExpandedCard, expandedFillsSpace), children: [_jsx(CollapsibleWizardCard, { ...bindCard('tool-panels', { fillAvailable: true }), "data-name": "tool-panel-tool-panels", title: "Tool Panels", help: "Select and order the Tool Panels to show in the AdapTable Tool Panel", compactSummary: renderCompactColumnTags(selectedToolPanels.map((toolPanelId) => getToolPanelLabel(toolPanelId)), (label) => label), summary: toolPanelsSummary, className: "twa:overflow-hidden twa:flex twa:flex-col", bodyClassName: "twa:min-h-[240px] twa:overflow-hidden twa:flex twa:flex-col twa:!pt-0 twa:!pb-0 twa:px-1", children: _jsx(ModuleValueSelector, { options: availableToolPanels, value: selectedToolPanels, onChange: handleToolPanelsChanged, disabled: props.isToolPanelReadOnly }) }), _jsx(CollapsibleWizardCard, { ...bindCard('module-buttons', { fillAvailable: true }), "data-name": "tool-panel-module-buttons", title: "Module Buttons", help: "Select and order module buttons shown at the top of the tool panel", compactSummary: renderCompactColumnTags(moduleButtonLabels, (label) => label), summary: moduleButtonsSummary, className: "twa:overflow-hidden twa:flex twa:flex-col", bodyClassName: "twa:min-h-[240px] twa:overflow-hidden twa:flex twa:flex-col twa:!pt-0 twa:!pb-0 twa:px-1", children: _jsx(ModuleValueSelector, { options: allModuleButtons, value: selectedModuleButtons, isOptionDisabled: isModuleCheckboxDisabled, disabled: props.isToolPanelReadOnly, onChange: (selectedValues) => props.onToolPanelSetModuleButtons(selectedValues) }) })] }));
|
|
76
|
+
};
|
|
@@ -10,6 +10,20 @@ export type ValueSelectorProps<OPTION_TYPE, ID_TYPE extends number | string> = {
|
|
|
10
10
|
* To show the filter input, filter needs also to be defined.
|
|
11
11
|
*/
|
|
12
12
|
showFilterInput?: boolean;
|
|
13
|
+
filterPlaceholder?: string;
|
|
14
|
+
/** Tighter rows and inline search with Select All (layout wizard). */
|
|
15
|
+
compact?: boolean;
|
|
16
|
+
/** Matches Visibility list: checkbox then label (default: label inside checkbox). */
|
|
17
|
+
optionLayout?: 'label-in-checkbox' | 'label-beside-checkbox';
|
|
18
|
+
/** Hides "Show Selected Only" in the header (e.g. Visibility-style Select All + search row). */
|
|
19
|
+
hideShowSelectedOnly?: boolean;
|
|
20
|
+
/** Extra classes on the compact header row (e.g. wider gap between controls). */
|
|
21
|
+
compactHeaderClassName?: string;
|
|
22
|
+
/**
|
|
23
|
+
* Search field classes in compact mode. When set without `flex-1`, a spacer keeps
|
|
24
|
+
* the search narrow (layout wizard column lists).
|
|
25
|
+
*/
|
|
26
|
+
compactFilterClassName?: string;
|
|
13
27
|
singleSelect?: boolean;
|
|
14
28
|
toIdentifier: (v: OPTION_TYPE) => ID_TYPE;
|
|
15
29
|
toLabel: (v: OPTION_TYPE) => string | React.ReactElement;
|
|
@@ -17,10 +31,16 @@ export type ValueSelectorProps<OPTION_TYPE, ID_TYPE extends number | string> = {
|
|
|
17
31
|
* Used to render list items, this extra prop allows to have different rendering for list & bottom tags.
|
|
18
32
|
*/
|
|
19
33
|
toListLabel?: (v: OPTION_TYPE) => string | React.ReactElement;
|
|
34
|
+
/** Rendered at the end of the row, outside the checkbox label (e.g. sort direction toggle). */
|
|
35
|
+
renderOptionTrailing?: (option: OPTION_TYPE) => ReactNode;
|
|
36
|
+
/** Clicking the row toggles inclusion; checkbox clicks do not double-toggle. */
|
|
37
|
+
toggleSelectionOnRowClick?: boolean;
|
|
20
38
|
showSelectedOnlyLabel?: ReactNode;
|
|
21
39
|
onShowSelectedOnlyChange?: (selectedOnly: boolean) => void;
|
|
22
40
|
isOptionDisabled?: (option: OPTION_TYPE) => boolean;
|
|
23
41
|
disabled?: boolean;
|
|
42
|
+
optionClassName?: string;
|
|
43
|
+
className?: string;
|
|
24
44
|
style?: React.CSSProperties;
|
|
25
45
|
};
|
|
26
46
|
export declare function ValueSelector<OPTION_TYPE, ID_TYPE extends number | string>(props: ValueSelectorProps<OPTION_TYPE, ID_TYPE>): React.JSX.Element;
|
|
@@ -37,4 +57,13 @@ export declare const renderSelectionSection: (props: {
|
|
|
37
57
|
onSelectAll: () => void;
|
|
38
58
|
onClear: () => void;
|
|
39
59
|
onClearOption: (id: any) => void;
|
|
60
|
+
compact?: boolean;
|
|
61
|
+
showFilterInput?: boolean;
|
|
62
|
+
filter?: null | ((o: any, searchValue: string) => boolean);
|
|
63
|
+
searchInputValue?: string;
|
|
64
|
+
setSearchInputValue?: (value: string) => void;
|
|
65
|
+
filterPlaceholder?: string;
|
|
66
|
+
hideShowSelectedOnly?: boolean;
|
|
67
|
+
compactHeaderClassName?: string;
|
|
68
|
+
compactFilterClassName?: string;
|
|
40
69
|
}) => React.JSX.Element;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { useState, useMemo, useCallback } from 'react';
|
|
3
|
+
import { useState, useMemo, useCallback, useEffect, useRef } from 'react';
|
|
4
4
|
import { defaultDragProxyMove, DragDropProvider, DragList } from '../../../components/dnd';
|
|
5
5
|
import { CheckBox } from '../../../components/CheckBox';
|
|
6
6
|
import { Icon } from '../../../components/icons';
|
|
7
7
|
import Radio from '../../../components/Radio';
|
|
8
8
|
import { AdaptableFormControlTextClear } from '../Forms/AdaptableFormControlTextClear';
|
|
9
9
|
import { Box, Flex } from '../../../components/Flex';
|
|
10
|
-
import
|
|
10
|
+
import { cn } from '../../../lib/utils';
|
|
11
11
|
function useValuesMap({ options, value, toIdentifier, selectedMap, }) {
|
|
12
12
|
const optionsMap = useMemo(() => {
|
|
13
13
|
if (selectedMap) {
|
|
@@ -32,9 +32,23 @@ function useValuesMap({ options, value, toIdentifier, selectedMap, }) {
|
|
|
32
32
|
return { selectedMap: result, optionsMap };
|
|
33
33
|
}
|
|
34
34
|
const baseClassName = 'ab-ValueSelector';
|
|
35
|
+
/** Clicks on these targets must not toggle row selection (`toggleSelectionOnRowClick`). */
|
|
36
|
+
const ROW_CLICK_IGNORE_SELECTOR = 'button, input, select, textarea, a, [data-drag-handle], [data-slot=select-trigger], [data-slot=select-content], [data-slot=select-item], .ab-Select';
|
|
37
|
+
const ROW_TOGGLE_SUPPRESS_MS = 150;
|
|
35
38
|
export function ValueSelector(props) {
|
|
36
|
-
const { options, value, filter, onChange, allowReorder = true, singleSelect, toLabel, toListLabel, toIdentifier, showSelectedOnlyLabel, showFilterInput, onShowSelectedOnlyChange, isOptionDisabled, disabled, } = props;
|
|
39
|
+
const { options, value, filter, onChange, allowReorder = true, singleSelect, toLabel, toListLabel, toIdentifier, renderOptionTrailing, toggleSelectionOnRowClick, showSelectedOnlyLabel, showFilterInput, filterPlaceholder, compact, optionLayout = 'label-in-checkbox', hideShowSelectedOnly, compactHeaderClassName, compactFilterClassName, onShowSelectedOnlyChange, isOptionDisabled, disabled, optionClassName, className, style, } = props;
|
|
37
40
|
const [searchInputValue, setSearchInputValue] = React.useState('');
|
|
41
|
+
const suppressRowToggleUntilRef = useRef(0);
|
|
42
|
+
useEffect(() => {
|
|
43
|
+
const markSelectInteraction = (event) => {
|
|
44
|
+
const target = event.target;
|
|
45
|
+
if (target.closest(ROW_CLICK_IGNORE_SELECTOR)) {
|
|
46
|
+
suppressRowToggleUntilRef.current = Date.now() + ROW_TOGGLE_SUPPRESS_MS;
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
document.addEventListener('pointerdown', markSelectInteraction, true);
|
|
50
|
+
return () => document.removeEventListener('pointerdown', markSelectInteraction, true);
|
|
51
|
+
}, []);
|
|
38
52
|
const preparedToLabel = toListLabel ?? toLabel;
|
|
39
53
|
const [selectedOnly, doSetSelectedOnly] = useState(false);
|
|
40
54
|
const setSelectedOnly = useCallback((selectedOnly) => {
|
|
@@ -69,30 +83,66 @@ export function ValueSelector(props) {
|
|
|
69
83
|
return result;
|
|
70
84
|
});
|
|
71
85
|
}, [filter, options, searchInputValue, selectedMap, selectedOnly, toIdentifier]);
|
|
86
|
+
const handleOptionRowClick = useCallback((option, identifier, optionDisabled, event) => {
|
|
87
|
+
if (Date.now() < suppressRowToggleUntilRef.current) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
const target = event.target;
|
|
91
|
+
if (target.closest(ROW_CLICK_IGNORE_SELECTOR)) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
if (optionDisabled) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
updateSelection((next) => {
|
|
98
|
+
if (next.has(identifier)) {
|
|
99
|
+
next.delete(identifier);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
next.set(identifier, option);
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
}, [updateSelection]);
|
|
72
106
|
const renderOptionRow = (option, index, reorderable, itemDomProps) => {
|
|
73
107
|
const identifier = toIdentifier(option);
|
|
74
|
-
const label =
|
|
75
|
-
const { onPointerDown, className: itemClassName, ...restDomProps } = itemDomProps ?? {};
|
|
76
|
-
|
|
77
|
-
|
|
108
|
+
const label = preparedToLabel(option);
|
|
109
|
+
const { onPointerDown, onClick: itemOnClick, className: itemClassName, ...restDomProps } = itemDomProps ?? {};
|
|
110
|
+
const optionDisabled = disabled || (isOptionDisabled ? isOptionDisabled(option) : false);
|
|
111
|
+
return (_jsxs(Flex, { alignItems: "center", "data-index": index, "data-id": identifier, "data-name": "option", ...restDomProps, onClick: toggleSelectionOnRowClick
|
|
112
|
+
? (event) => {
|
|
113
|
+
itemOnClick?.(event);
|
|
114
|
+
handleOptionRowClick(option, identifier, optionDisabled, event);
|
|
115
|
+
}
|
|
116
|
+
: itemOnClick, className: cn(toggleSelectionOnRowClick && 'twa:cursor-pointer', reorderable ? 'ab-DraggableListItem' : 'twa:bg-primary twa:text-primary-foreground', 'twa:rounded-standard', compact ? (singleSelect ? 'twa:py-1.5 twa:px-1.5' : 'twa:py-1 twa:px-1.5') : 'twa:p-2', {
|
|
117
|
+
'twa:mt-0.5': compact && index,
|
|
118
|
+
'twa:mt-1': !compact && index,
|
|
78
119
|
'twa:mt-0': !index,
|
|
79
|
-
}, itemClassName, `${baseClassName}__option`), children: _jsxs(Flex, { flexDirection: "row", alignItems: "center", className: "twa:flex-1", children: [reorderable ? (_jsx(Box, { onPointerDown: onPointerDown, className:
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
120
|
+
}, itemClassName, optionClassName, `${baseClassName}__option`), children: [_jsxs(Flex, { flexDirection: "row", alignItems: "center", className: "twa:flex-1 twa:min-w-0", children: [reorderable ? (_jsx(Box, { "data-drag-handle": true, onPointerDown: onPointerDown, className: cn('twa:shrink-0', compact ? 'twa:mr-2' : 'twa:mr-3'), children: _jsx(Icon, { name: "drag", style: { cursor: 'grab' } }) })) : null, singleSelect ? (_jsx(Radio, { className: cn('twa:flex-1 twa:min-w-0', compact && !singleSelect && 'twa:my-0!'), checked: selectedMap.has(identifier), "data-name": identifier, disabled: optionDisabled, onClick: toggleSelectionOnRowClick ? (event) => event.stopPropagation() : undefined, onChange: (checked) => {
|
|
121
|
+
updateSelection((next) => {
|
|
122
|
+
next.clear();
|
|
123
|
+
if (checked) {
|
|
124
|
+
next.set(identifier, option);
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
}, children: label })) : optionLayout === 'label-beside-checkbox' ? (_jsxs(Flex, { alignItems: "center", className: "twa:flex-1 twa:min-w-0", children: [_jsx(CheckBox, { className: "twa:shrink-0", "data-name": identifier, disabled: optionDisabled, onClick: toggleSelectionOnRowClick ? (event) => event.stopPropagation() : undefined, onChange: (checked) => {
|
|
128
|
+
updateSelection((next) => {
|
|
129
|
+
if (checked) {
|
|
130
|
+
next.set(identifier, option);
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
next.delete(identifier);
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
}, checked: selectedMap.has(identifier) }), _jsx(Flex, { alignItems: "center", className: "twa:mx-1.5 twa:text-3 twa:min-w-0", "data-name": "option-label", children: label })] })) : (_jsx(CheckBox, { className: cn('twa:flex-1 twa:min-w-0', compact && 'twa:my-0!'), "data-name": identifier, disabled: optionDisabled, onClick: toggleSelectionOnRowClick ? (event) => event.stopPropagation() : undefined, onChange: (checked) => {
|
|
137
|
+
updateSelection((next) => {
|
|
138
|
+
if (checked) {
|
|
139
|
+
next.set(identifier, option);
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
next.delete(identifier);
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
}, checked: selectedMap.has(identifier), children: label }))] }), renderOptionTrailing ? (_jsx(Box, { className: "twa:shrink-0", children: renderOptionTrailing(option) })) : null] }));
|
|
96
146
|
};
|
|
97
147
|
const renderOption = (option, index) => {
|
|
98
148
|
const identifier = toIdentifier(option);
|
|
@@ -130,8 +180,19 @@ export function ValueSelector(props) {
|
|
|
130
180
|
});
|
|
131
181
|
},
|
|
132
182
|
};
|
|
133
|
-
const optionList = (_jsx(Flex, { className: `${baseClassName}__body twa:flex-1 twa:overflow-auto`, flexDirection: "column", children: _jsx("div", { children: filteredOptions.map(renderOption) }) }));
|
|
134
|
-
return (_jsxs(Flex, { style:
|
|
183
|
+
const optionList = (_jsx(Flex, { className: `${baseClassName}__body twa:flex-1 twa:min-h-0 twa:overflow-auto`, flexDirection: "column", children: _jsx("div", { children: filteredOptions.map(renderOption) }) }));
|
|
184
|
+
return (_jsxs(Flex, { style: style, className: cn('twa:flex-1 twa:min-h-0', compact && 'twa:overflow-hidden', baseClassName, compact && `${baseClassName}--compact`, className), flexDirection: "column", children: [!compact && (_jsx(Flex, { className: "twa:mb-1", children: showFilterInput && filter ? (_jsx(AdaptableFormControlTextClear, { value: searchInputValue, OnTextChange: setSearchInputValue, placeholder: filterPlaceholder ?? 'Type to search', inputClassName: "twa:p-3", className: "twa:flex-1 twa:m-[3px]" })) : (_jsx(Box, { className: "twa:flex-1" })) })), renderSelectionSection({
|
|
185
|
+
...selectionSectionProps,
|
|
186
|
+
compact,
|
|
187
|
+
showFilterInput,
|
|
188
|
+
filter,
|
|
189
|
+
searchInputValue,
|
|
190
|
+
setSearchInputValue,
|
|
191
|
+
filterPlaceholder,
|
|
192
|
+
hideShowSelectedOnly,
|
|
193
|
+
compactHeaderClassName,
|
|
194
|
+
compactFilterClassName,
|
|
195
|
+
}), reorderEnabled ? (_jsx(DragDropProvider, { children: _jsx(Flex, { className: `${baseClassName}__body twa:flex-1 twa:min-h-0 twa:overflow-auto`, flexDirection: "column", children: _jsx(DragList, { dragListId: "value-selector", orientation: "vertical", onDragProxyMove: defaultDragProxyMove, onDragProxySetup: ({ proxyElement }) => {
|
|
135
196
|
proxyElement.classList.add('twa:shadow-md');
|
|
136
197
|
}, onDrop: (_sortedIndexes) => {
|
|
137
198
|
const selection = [];
|
|
@@ -156,8 +217,30 @@ export function ValueSelector(props) {
|
|
|
156
217
|
}, children: (listDomProps) => _jsx("div", { ...listDomProps, children: filteredOptions.map(renderOption) }) }) }) })) : (optionList)] }));
|
|
157
218
|
}
|
|
158
219
|
export const renderSelectionSection = (props) => {
|
|
159
|
-
const { value, options,
|
|
160
|
-
const
|
|
220
|
+
const { value, options, singleSelect, toLabel, toIdentifier, compact, showFilterInput, filter, searchInputValue, setSearchInputValue, filterPlaceholder, hideShowSelectedOnly, compactHeaderClassName, compactFilterClassName, } = props;
|
|
221
|
+
const compactFilterClass = compactFilterClassName ?? 'twa:flex-1 twa:min-w-0';
|
|
222
|
+
const compactFilterUsesSpacer = compactFilterClassName != null && !/\bflex-1\b/.test(compactFilterClassName);
|
|
223
|
+
const headerRowClassName = cn('twa:mb-1', 'twa:p-1', 'twa:border-b twa:border-primarydark/30', compact
|
|
224
|
+
? cn('twa:w-full twa:min-w-0 twa:gap-2 twa:font-bold twa:shrink-0', compactHeaderClassName)
|
|
225
|
+
: 'twa:flex twa:flex-row ');
|
|
226
|
+
const selectionBox = compact ? (_jsxs(Flex, { alignItems: "center", className: headerRowClassName, children: [singleSelect ? (_jsx(Box, { className: "twa:flex twa:flex-row twa:text-3 twa:font-normal twa:items-center", children: (() => {
|
|
227
|
+
if (!value.length) {
|
|
228
|
+
return _jsx("span", { className: "twa:opacity-70", children: "(none selected)" });
|
|
229
|
+
}
|
|
230
|
+
const selectedId = value[0];
|
|
231
|
+
const selectedOption = options.find((o) => toIdentifier(o) === selectedId);
|
|
232
|
+
if (!selectedOption) {
|
|
233
|
+
return _jsx("span", { className: "twa:opacity-70", children: "(none selected)" });
|
|
234
|
+
}
|
|
235
|
+
return (_jsxs(_Fragment, { children: [_jsx("span", { className: "twa:opacity-70 twa:mr-1", children: "Selected:" }), _jsx("span", { className: "twa:font-medium", children: toLabel(selectedOption) })] }));
|
|
236
|
+
})() })) : (_jsx(CheckBox, { className: "twa:shrink-0", checked: !value.length ? false : value.length === options.length ? true : null, onChange: (checked) => {
|
|
237
|
+
if (checked) {
|
|
238
|
+
props.onSelectAll();
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
props.onClear();
|
|
242
|
+
}
|
|
243
|
+
}, children: "Select All" })), hideShowSelectedOnly ? null : (_jsx(Box, { className: "twa:shrink-0 twa:text-2 twa:font-normal", children: props.showOnlySelectedCheckbox })), showFilterInput && filter ? (_jsxs(_Fragment, { children: [compactFilterUsesSpacer ? _jsx(Box, { className: "twa:flex-1 twa:min-w-0" }) : null, _jsx(AdaptableFormControlTextClear, { value: searchInputValue ?? '', OnTextChange: setSearchInputValue ?? (() => undefined), placeholder: filterPlaceholder ?? 'Search...', className: compactFilterClass })] })) : null] })) : (_jsx(Box, { className: "twa:flex twa:flex-col twa:gap-2 twa:py-2", children: _jsxs(Box, { className: headerRowClassName, children: [singleSelect ? (_jsx(Box, { className: "twa:flex twa:flex-row twa:text-3 twa:font-normal twa:items-center", children: (() => {
|
|
161
244
|
// For single-select we show the *name* of the selected option
|
|
162
245
|
// rather than a (1 of N) counter — useful when the list is
|
|
163
246
|
// long enough to scroll past the chosen row.
|
|
@@ -177,6 +260,6 @@ export const renderSelectionSection = (props) => {
|
|
|
177
260
|
else {
|
|
178
261
|
props.onClear();
|
|
179
262
|
}
|
|
180
|
-
}, children: _jsxs(Box, { className: "twa:flex twa:flex-row twa:items-center twa:gap-3", children: ["Select All", _jsxs(Box, { className: "twa:text-2 twa:font-normal", children: ["(", value.length, " of ", options.length, " selected)"] })] }) })), _jsx("div", { className: "twa:flex-1" }), _jsx(Box, { className: "twa:mr-2 twa:text-2 twa:font-normal", children: props.showOnlySelectedCheckbox })] }) }));
|
|
181
|
-
return _jsx(Box, { className:
|
|
263
|
+
}, children: _jsxs(Box, { className: "twa:flex twa:flex-row twa:items-center twa:gap-3", children: ["Select All", _jsxs(Box, { className: "twa:text-2 twa:font-normal", children: ["(", value.length, " of ", options.length, " selected)"] })] }) })), hideShowSelectedOnly ? null : _jsx("div", { className: "twa:flex-1" }), hideShowSelectedOnly ? null : (_jsx(Box, { className: "twa:mr-2 twa:text-2 twa:font-normal", children: props.showOnlySelectedCheckbox }))] }) }));
|
|
264
|
+
return _jsx(Box, { className: cn(`${baseClassName}__header`), children: selectionBox });
|
|
182
265
|
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** ValueSelector row sizing — matches Visibility and Order list rows. */
|
|
2
|
+
export declare const WIZARD_COLUMN_LIST_OPTION_CLASS = "twa:!py-1 twa:!px-1.5";
|
|
3
|
+
/** Single-select column lists — ~50% taller than multi-select compact rows. */
|
|
4
|
+
export declare const WIZARD_COLUMN_LIST_OPTION_CLASS_SINGLE_SELECT = "twa:!py-1.5 twa:!px-1.5";
|
|
5
|
+
/** Taller rows when ultra-compact one-line cards are not required (e.g. Custom Sort wizard). */
|
|
6
|
+
export declare const WIZARD_COLUMN_LIST_OPTION_CLASS_RELAXED = "twa:!py-2 twa:!px-2";
|
|
7
|
+
/** Compact list header — spacing between Select All, Show Selected Only, and search. */
|
|
8
|
+
export declare const WIZARD_COLUMN_LIST_HEADER_CLASS = "twa:gap-4";
|
|
9
|
+
/** Narrow search field (matches Visibility list column width, not full card width). */
|
|
10
|
+
export declare const WIZARD_COLUMN_LIST_SEARCH_CLASS = "twa:w-[12rem] twa:shrink-0 twa:min-w-0";
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** ValueSelector row sizing — matches Visibility and Order list rows. */
|
|
2
|
+
export const WIZARD_COLUMN_LIST_OPTION_CLASS = 'twa:!py-1 twa:!px-1.5';
|
|
3
|
+
/** Single-select column lists — ~50% taller than multi-select compact rows. */
|
|
4
|
+
export const WIZARD_COLUMN_LIST_OPTION_CLASS_SINGLE_SELECT = 'twa:!py-1.5 twa:!px-1.5';
|
|
5
|
+
/** Taller rows when ultra-compact one-line cards are not required (e.g. Custom Sort wizard). */
|
|
6
|
+
export const WIZARD_COLUMN_LIST_OPTION_CLASS_RELAXED = 'twa:!py-2 twa:!px-2';
|
|
7
|
+
/** Compact list header — spacing between Select All, Show Selected Only, and search. */
|
|
8
|
+
export const WIZARD_COLUMN_LIST_HEADER_CLASS = 'twa:gap-4';
|
|
9
|
+
/** Narrow search field (matches Visibility list column width, not full card width). */
|
|
10
|
+
export const WIZARD_COLUMN_LIST_SEARCH_CLASS = 'twa:w-[12rem] twa:shrink-0 twa:min-w-0';
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { CustomSort } from '../../../AdaptableState/CustomSortState';
|
|
3
|
+
import { AdaptableApi } from '../../../Api/AdaptableApi';
|
|
3
4
|
export type CustomSortColumnWizardSectionProps = {
|
|
4
5
|
onChange: (data: CustomSort) => void;
|
|
5
6
|
isNew: boolean;
|
|
6
7
|
allCustomSorts: CustomSort[];
|
|
7
8
|
};
|
|
8
|
-
export declare const renderCustomSortColumn: (data: CustomSort) => React.JSX.Element;
|
|
9
|
+
export declare const renderCustomSortColumn: (data: CustomSort, api: AdaptableApi) => React.JSX.Element;
|
|
9
10
|
export declare const isValidCustomSortColumn: (data: CustomSort, allCustomSorts: CustomSort[]) => true | string;
|
|
10
11
|
export declare const CustomSortColumnWizardSection: (props: CustomSortColumnWizardSectionProps) => React.JSX.Element;
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { Tag } from '../../../components/Tag';
|
|
3
|
+
import { ColumnTag, Tag } from '../../../components/Tag';
|
|
4
4
|
import { NewColumnSelector } from '../../Components/ColumnSelector';
|
|
5
|
+
import { WIZARD_COLUMN_LIST_OPTION_CLASS_RELAXED } from '../../Components/wizardColumnListStyles';
|
|
5
6
|
import { useOnePageAdaptableWizardContext } from '../../Wizard/OnePageAdaptableWizard';
|
|
6
7
|
import { Box, Flex } from '../../../components/Flex';
|
|
7
8
|
import Input from '../../../components/Input';
|
|
8
|
-
import { AdaptableFormControlTextClear } from '../../Components/Forms/AdaptableFormControlTextClear';
|
|
9
9
|
import { Card } from '../../../components/Card';
|
|
10
|
-
export const renderCustomSortColumn = (data) => {
|
|
11
|
-
|
|
12
|
-
return (_jsxs(Box, { className: "twa:text-2 twa:py-2 twa:pr-2", children: [_jsxs(Tag, { className: "twa:mr-2", children: ["Name: ", data.Name] }), _jsxs(Tag, { children: ["Column: ", api.columnApi.getFriendlyNameForColumnId(data.ColumnId)] })] }));
|
|
10
|
+
export const renderCustomSortColumn = (data, api) => {
|
|
11
|
+
return (_jsxs(Box, { className: "twa:text-2 twa:py-2 twa:pr-2", children: [_jsxs(Tag, { className: "twa:mr-2", children: ["Name: ", data.Name] }), _jsxs(ColumnTag, { children: ["Column: ", api.columnApi.getFriendlyNameForColumnId(data.ColumnId)] })] }));
|
|
13
12
|
};
|
|
14
13
|
export const isValidCustomSortColumn = (data, allCustomSorts) => {
|
|
15
14
|
if (!data.Name) {
|
|
@@ -45,14 +44,13 @@ export const CustomSortColumnWizardSection = (props) => {
|
|
|
45
44
|
});
|
|
46
45
|
});
|
|
47
46
|
}, []);
|
|
48
|
-
const [columnsSearchText, setColumnsSearchText] = React.useState('');
|
|
49
47
|
const onNameChange = (event) => {
|
|
50
48
|
props.onChange({
|
|
51
49
|
...data,
|
|
52
50
|
Name: event.target.value,
|
|
53
51
|
});
|
|
54
52
|
};
|
|
55
|
-
return (_jsxs(Flex, { flexDirection: "column", className: "twa:h-full", children: [_jsx(Flex, { flexDirection: "column", className: "twa:gap-3 twa:p-3 twa:shrink-0", children: _jsxs(Card, { shadow: false, children: [_jsxs(Card.Title, { children: [_jsx(Box, { className: "twa:font-medium", children: "Name" }), _jsx(Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: "Provide a unique name for the Custom Sort" })] }), _jsx(Card.Body, { className: "twa:p-1", children: _jsx(Input, { className: "twa:max-w-[300px] twa:w-full", "data-name": "custom-sort-name", onChange: onNameChange, value: data?.Name ?? '' }) })] }) }), _jsxs(Flex, { flexDirection: "column", className: "twa:flex-1 twa:min-h-0", children: [_jsxs(Flex, { flexDirection: "row", alignItems: "center", className: "twa:p-2 twa:gap-3 twa:border-b twa:mb-2 twa:border-b-foreground/20", children: [_jsx(Box, { className: "twa:text-5 twa:font-medium", children: "Column" }), _jsx(Box, { className: "twa:text-xs twa:opacity-70 twa:max-w-[520px]", children: "Select the column to apply the Custom Sort to" })] }), _jsx(
|
|
53
|
+
return (_jsxs(Flex, { flexDirection: "column", className: "twa:h-full twa:min-h-0", children: [_jsx(Flex, { flexDirection: "column", className: "twa:gap-3 twa:p-3 twa:shrink-0", children: _jsxs(Card, { shadow: false, children: [_jsxs(Card.Title, { children: [_jsx(Box, { className: "twa:font-medium", children: "Name" }), _jsx(Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: "Provide a unique name for the Custom Sort" })] }), _jsx(Card.Body, { className: "twa:p-1", children: _jsx(Input, { className: "twa:max-w-[300px] twa:w-full", "data-name": "custom-sort-name", onChange: onNameChange, value: data?.Name ?? '' }) })] }) }), _jsxs(Flex, { flexDirection: "column", className: "twa:flex-1 twa:min-h-0 twa:overflow-hidden", children: [_jsxs(Flex, { flexDirection: "row", alignItems: "center", className: "twa:p-2 twa:gap-3 twa:border-b twa:mb-2 twa:border-b-foreground/20 twa:shrink-0", children: [_jsx(Box, { className: "twa:text-5 twa:font-medium", children: "Column" }), _jsx(Box, { className: "twa:text-xs twa:opacity-70 twa:max-w-[520px]", children: "Select the column to apply the Custom Sort to" })] }), _jsx(Box, { className: "twa:flex-1 twa:min-h-0 twa:overflow-hidden twa:px-2 twa:pb-2 twa:flex twa:flex-col", children: _jsx(NewColumnSelector, { compactColumnList: true, className: "twa:h-full", optionClassName: WIZARD_COLUMN_LIST_OPTION_CLASS_RELAXED, availableColumns: sortableCols, selected: data.ColumnId ? [data.ColumnId] : [], singleSelect: true, onChange: (ids) => {
|
|
56
54
|
props.onChange({
|
|
57
55
|
...data,
|
|
58
56
|
SortedValues: [],
|
|
@@ -41,9 +41,9 @@ export const CustomSortWizard = (props) => {
|
|
|
41
41
|
renderSummary: renderCustomSortColumn,
|
|
42
42
|
details: 'Enter Name and select a Column to Sort',
|
|
43
43
|
render: () => {
|
|
44
|
-
return (_jsx(Box, { className: "twa:p-2 twa:h-full", children: _jsx(CustomSortColumnWizardSection, { isNew: props.isNew, onChange: setCustomSort, allCustomSorts: allCustomSorts }) }));
|
|
44
|
+
return (_jsx(Box, { className: "twa:p-2 twa:h-full twa:min-h-0 twa:flex twa:flex-col", children: _jsx(CustomSortColumnWizardSection, { isNew: props.isNew, onChange: setCustomSort, allCustomSorts: allCustomSorts }) }));
|
|
45
45
|
},
|
|
46
|
-
title: '
|
|
46
|
+
title: 'Settings',
|
|
47
47
|
},
|
|
48
48
|
{
|
|
49
49
|
title: 'Sort Order',
|
|
@@ -15,18 +15,8 @@ interface DashboardPopupComponentProps extends ModuleViewPopupProps<DashboardPop
|
|
|
15
15
|
onSetDashboardFloating: (isFloating: boolean) => DashboardRedux.DashboardSetIsFloatingAction;
|
|
16
16
|
onSetDashboardHidden: (isHidden: boolean) => DashboardRedux.DashboardSetIsHiddenAction;
|
|
17
17
|
}
|
|
18
|
-
|
|
19
|
-
Toolbars = "Toolbars",
|
|
20
|
-
Buttons = "Buttons",
|
|
21
|
-
PinnedToolbars = "PinnedToolbars"
|
|
22
|
-
}
|
|
23
|
-
export interface DashboardPopupState {
|
|
24
|
-
DashboardConfigView: DashboardConfigView;
|
|
25
|
-
}
|
|
26
|
-
declare class DashboardPopupComponent extends React.Component<DashboardPopupComponentProps, DashboardPopupState> {
|
|
27
|
-
constructor(props: DashboardPopupComponentProps);
|
|
18
|
+
declare class DashboardPopupComponent extends React.Component<DashboardPopupComponentProps> {
|
|
28
19
|
render(): React.JSX.Element;
|
|
29
|
-
onDashboardConfigViewChanged(event: React.FormEvent<any>): void;
|
|
30
20
|
}
|
|
31
21
|
export declare let DashboardPopup: import("react-redux").ConnectedComponent<typeof DashboardPopupComponent, {
|
|
32
22
|
[x: string]: any;
|