Skip to content

Commit 606271e

Browse files
committed
Merge branch 'release/v23.1.1' into main
2 parents 081550f + d30756f commit 606271e

File tree

59 files changed

+1665
-158
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+1665
-158
lines changed

.github/workflows/integration-build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ jobs:
2727
with:
2828
fetch-depth: 0
2929
- name: Run build project
30-
run: dotnet run --project ./Build/Build.csproj -- --target IntegrationBuild"
30+
run: dotnet run --project ./Build/Build.csproj -- --target IntegrationBuild
3131
- name: Notify Slack
3232
if: always()
3333
uses: act10ns/slack@v2

.nuke/build.schema.json

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,13 @@
6565
"type": "string",
6666
"description": "Root directory during build execution"
6767
},
68-
"SampleBrowserSolution": {
68+
"SampleBrowserDesktopSolution": {
6969
"type": "string",
70-
"description": "Path to a solution file that is automatically loaded. Default is Samples/SampleBrowser/SampleBrowser.sln"
70+
"description": "Path to a solution file that is automatically loaded. Default is Samples/SampleBrowser/SampleBrowser.Desktop.sln"
71+
},
72+
"SampleBrowserWebSolution": {
73+
"type": "string",
74+
"description": "Path to a solution file that is automatically loaded. Default is Samples/SampleBrowser/SampleBrowser.Web.sln"
7175
},
7276
"Skip": {
7377
"type": "array",

Build/Build.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,13 @@ public partial class Build : NukeBuild {
2121

2222
#region Solutions
2323

24-
[Solution("Samples/SampleBrowser/SampleBrowser.sln")]
25-
readonly Solution SampleBrowserSolution;
24+
[Solution("Samples/SampleBrowser/SampleBrowser.Desktop.sln")]
25+
readonly Solution SampleBrowserDesktopSolution;
26+
27+
[Solution("Samples/SampleBrowser/SampleBrowser.Web.sln")]
28+
readonly Solution SampleBrowserWebSolution;
2629

27-
Solution[] SampleSolutions => new Solution[] { SampleBrowserSolution }; // MSBuild
30+
Solution[] SampleSolutions => new Solution[] { SampleBrowserDesktopSolution, SampleBrowserWebSolution }; // MSBuild
2831

2932
#endregion
3033

Documentation/api-filter.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
apiRules:
22

3+
# Include EditorBrowsableState.Never in Actipro namespaces (excluded by default)
4+
- include:
5+
uidRegex: ^ActiproSoftware\.
6+
hasAttribute:
7+
uid: System.ComponentModel.EditorBrowsableAttribute
8+
ctorArguments:
9+
- System.ComponentModel.EditorBrowsableState.Never
10+
311
# Exclude compatibility and core product code
412
- exclude:
513
uidRegex: ^ActiproSoftware\.Compatibility$

Documentation/docfx.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
{
44
"src": [
55
{
6-
"src": "../../Source/bin/Release/net6.0",
6+
"src": "../../Deploy/Build/AssembliesDocFX",
77
"files": [
88
// Actipro assemblies
99
"ActiproSoftware.*.dll"
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
title: "Conversion Notes"
2+
order: 42
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
---
2+
title: "Converting to v23.1"
3+
page-title: "Converting to v23.1 - Conversion Notes"
4+
order: 10
5+
---
6+
# Converting to v23.1
7+
8+
While v23.1.0 was the first public release version, some updates were made in maintenance releases that are described below.
9+
10+
## User Interface Density Changes
11+
12+
v23.1.1 introduced the concept of user interface density, a configurable way to set how spacious a user interface layout should appear. v23.1.0 shipped with what is effectively now the `Spacious` density option, which is very touch friendly. v23.1.1 has updated the default to be the `Normal` density option, resulting in a slightly more compact layout out of the box.
13+
14+
The [User Interface Density](../themes/user-interface-density.md) topic discusses the density feature in detail and how to change it both initially and at any point later at run-time. Use code in that topic to adjust the density if you prefer the old `Spacious` density option or the even more dense desktop-oriented `Compact` density option for your application.
15+
16+
## Theme Definition Changes
17+
18+
### ScrollBar Thumbs
19+
20+
v23.1.0 used to have a `ScrollBarThumbMargin` property on [ThemeDefinition](xref:@ActiproUIRoot.Themes.Generation.ThemeDefinition) that would keep the thumb ascent relative to the containing scrollbar track size. Scrollbar thumb sizing has been refactored in v23.1.1 and is much more flexible. The new design allows for fixed thumb thicknesses, or alternatively having the thumb size relative to the containing track size. Thumbs now default to a slightly thinner fixed `4.0` thickness instead of the previous effective value of `6.0`. Set both the [ScrollBarThumbMinAscent](xref:@ActiproUIRoot.Themes.Generation.ThemeDefinition.ScrollBarThumbMinAscent) and [ScrollBarThumbMaxAscent](xref:@ActiproUIRoot.Themes.Generation.ThemeDefinition.ScrollBarThumbMaxAscent) properties to `6.0` if the previous appearance is desired.
21+
22+
### MenuItem Padding
23+
24+
v23.1.0 used to have a `MenuItemPadding` property on [ThemeDefinition](xref:@ActiproUIRoot.Themes.Generation.ThemeDefinition), but that property was removed in v23.1.1 since the padding applied to menu items now automatically scales based on UI density.
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
---
2+
title: "Overview"
3+
page-title: "Conversion Notes"
4+
order: 1
5+
---
6+
# Overview
7+
8+
Occasionally during large updates to a product, some breaking changes are necessary to either add enhanced functionality or improve the overall design of the various products.
9+
10+
Read the following topics that are appropriate for your scenario if you are converting from an older version to the latest version.
11+
12+
- [Converting to v23.1](converting-to-v23-1.md)

Documentation/topics/fundamentals/user-prompt/appearance.md

Lines changed: 71 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,24 @@ When either the [HeaderBackground](xref:@ActiproUIRoot.Controls.UserPromptContro
1717

1818
## Images
1919

20+
@if (avalonia) {
2021
Any `IImage` can be set to the [StatusImage](xref:@ActiproUIRoot.Controls.UserPromptControl.StatusImage) or [FooterImage](xref:@ActiproUIRoot.Controls.UserPromptControl.FooterImage) properties for a custom look. When using the [builder pattern](builder-pattern.md), set the `IImage` using [WithStatusImage](xref:@ActiproUIRoot.Controls.UserPromptBuilder.WithStatusImage*) or [WithFooterImage](xref:@ActiproUIRoot.Controls.UserPromptBuilder.WithFooterImage*).
2122

2223
The images used by [MessageBoxImage](xref:@ActiproUIRoot.Controls.MessageBoxImage) can also be customized by assigning a custom [ImageProvider](xref:@ActiproUIRoot.Media.ImageProvider) to the [ImageProvider](xref:@ActiproUIRoot.Media.ImageProvider).[Default](xref:@ActiproUIRoot.Media.ImageProvider.Default) property. Each value for [MessageBoxImage](xref:@ActiproUIRoot.Controls.MessageBoxImage) corresponds to a key of the same name defined by [SharedImageKeys](xref:@ActiproUIRoot.Media.SharedImageKeys). For example, the image [MessageBoxImage](xref:@ActiproUIRoot.Controls.MessageBoxImage).[Warning](xref:@ActiproUIRoot.Controls.MessageBoxImage.Warning) corresponds to the key [SharedImageKeys](xref:@ActiproUIRoot.Media.SharedImageKeys).[Warning](xref:@ActiproUIRoot.Media.SharedImageKeys.Warning). A custom class which derives from [ImageProvider](xref:@ActiproUIRoot.Media.ImageProvider) can override the [ImageProvider](xref:@ActiproUIRoot.Media.ImageProvider).[GetImageSource](xref:@ActiproUIRoot.Media.ImageProvider.GetImageSource*) method to return a custom `IImage` for one or more of those keys.
24+
}
25+
@if (wpf) {
26+
Any `ImageSource` can be set to the [StatusImageSource](xref:@ActiproUIRoot.Controls.UserPromptControl.StatusImageSource) or [FooterImageSource](xref:@ActiproUIRoot.Controls.UserPromptControl.FooterImageSource) properties for a custom look. When using the [builder pattern](builder-pattern.md), set the `ImageSource` using [WithStatusImage](xref:@ActiproUIRoot.Controls.UserPromptBuilder.WithStatusImage*) or [WithFooterImage](xref:@ActiproUIRoot.Controls.UserPromptBuilder.WithFooterImage*).
27+
28+
The images used by [UserPromptStandardImage](xref:@ActiproUIRoot.Controls.UserPromptStandardImage) can also be customized by assigning a custom [ImageProvider](xref:@ActiproUIRoot.Media.ImageProvider) to the [ImageProvider](xref:@ActiproUIRoot.Media.ImageProvider).[Default](xref:@ActiproUIRoot.Media.ImageProvider.Default) property. Each value for [UserPromptStandardImage](xref:@ActiproUIRoot.Controls.UserPromptStandardImage) corresponds to a key of the same name defined by [SharedImageKeys](xref:@ActiproUIRoot.Media.SharedImageSourceKeys). For example, the image [UserPromptStandardImage](xref:@ActiproUIRoot.Controls.UserPromptStandardImage).[Warning](xref:@ActiproUIRoot.Controls.UserPromptStandardImage.Warning) corresponds to the key [SharedImageSourceKeys](xref:@ActiproUIRoot.Media.SharedImageSourceKeys).[Warning](xref:@ActiproUIRoot.Media.SharedImageSourceKeys.Warning). A custom class which derives from [ImageProvider](xref:@ActiproUIRoot.Media.ImageProvider) can override the [ImageProvider](xref:@ActiproUIRoot.Media.ImageProvider).[GetImageSource](xref:@ActiproUIRoot.Media.ImageProvider.GetImageSource*) method to return a custom `ImageSource` for one or more of those keys.
29+
}
2330

2431
## Customize UserPromptWindow
2532

2633
The [UserPromptWindow](xref:@ActiproUIRoot.Controls.UserPromptWindow) does not have a public constructor and is only created by the [UserPromptWindow](xref:@ActiproUIRoot.Controls.UserPromptWindow).[ShowDialog](xref:@ActiproUIRoot.Controls.UserPromptWindow.ShowDialog*) method. One of the arguments for [ShowDialog](xref:@ActiproUIRoot.Controls.UserPromptWindow.ShowDialog*) allows you to pass an `Action<UserPromptWindow>` which is invoked with a reference to the [UserPromptWindow](xref:@ActiproUIRoot.Controls.UserPromptWindow) after it is configured, but before it is shown. This callback allows the [UserPromptWindow](xref:@ActiproUIRoot.Controls.UserPromptWindow) to be customized.
2734

2835
The following code demonstrates using the callback to customize the flow direction of the window:
2936

37+
@if (avalonia) {
3038
```csharp
3139
var userPromptControl = new UserPromptControl() { ... };
3240
Window owner = null; // Use default
@@ -39,9 +47,25 @@ await UserPromptWindow.ShowDialog(
3947
window.FlowDirection = FlowDirection.RightToLeft;
4048
});
4149
```
50+
}
51+
@if (wpf) {
52+
```csharp
53+
var userPromptControl = new UserPromptControl() { ... };
54+
Window owner = null; // Use default
55+
56+
UserPromptWindow.ShowDialog(
57+
userPromptControl,
58+
"Window Title",
59+
owner,
60+
window => {
61+
window.FlowDirection = FlowDirection.RightToLeft;
62+
});
63+
```
64+
}
4265

4366
The [builder pattern](builder-pattern.md) exposes the same customization using the [AfterInitializeWindow](xref:@ActiproUIRoot.Controls.UserPromptBuilder.AfterInitializeWindow*) callback as shown in the following example:
4467

68+
@if (avalonia) {
4569
```csharp
4670
await UserPromptBuilder.Configure()
4771
// ... other configuration options here
@@ -50,7 +74,19 @@ await UserPromptBuilder.Configure()
5074
})
5175
.Show();
5276
```
77+
}
78+
@if (wpf) {
79+
```csharp
80+
UserPromptBuilder.Configure()
81+
// ... other configuration options here
82+
.AfterInitializeWindow(window => {
83+
window.FlowDirection = FlowDirection.RightToLeft;
84+
})
85+
.Show();
86+
```
87+
}
5388

89+
@if (avalonia) {
5490
Finally, an advanced configuration of [MessageBox](message-box.md) also allows access to the [builder pattern](builder-pattern.md) as shown below:
5591

5692
```csharp
@@ -61,4 +97,38 @@ await MessageBox.Show(
6197
window.FlowDirection = FlowDirection.RightToLeft;
6298
})
6399
);
64-
```
100+
```
101+
}
102+
@if (wpf) {
103+
Finally, an advanced configuration of [ThemedMessageBox](message-box.md) also allows access to the [builder pattern](builder-pattern.md) as shown below:
104+
105+
```csharp
106+
ThemedMessageBox.Show(
107+
"Use the optional 'configure' parameter to access the UserPromptBuilder."
108+
configure: builder => builder
109+
.AfterInitializeWindow(window => {
110+
window.FlowDirection = FlowDirection.RightToLeft;
111+
})
112+
);
113+
```
114+
}
115+
116+
@if (wpf) {
117+
## Theme Assets
118+
119+
See the [Theme Reusable Assets](../../../themes/reusable-assets.md) topic for more details on using and customizing theme assets. The following reusable assets are used by [UserPromptControl](xref:@ActiproUIRoot.Controls.UserPromptControl):
120+
121+
| Asset Resource Key | Description |
122+
|-----|-----|
123+
| [ContainerForegroundLowestNormalBrushKey](xref:@ActiproUIRoot.Themes.AssetResourceKeys.ContainerForegroundLowestNormalBrushKey) | Assigned to the following properties: `Foreground`. |
124+
| [ContainerBackgroundLowestBrushKey](xref:@ActiproUIRoot.Themes.AssetResourceKeys.ContainerBackgroundLowestBrushKey) | Assigned to the following properties: `Background`. |
125+
| [ContainerForegroundLowNormalBrushKey](xref:@ActiproUIRoot.Themes.AssetResourceKeys.ContainerForegroundLowNormalBrushKey) | Assigned to the following properties: [TrayForeground](xref:@ActiproUIRoot.Controls.UserPromptControl.TrayForeground). |
126+
| [ContainerBackgroundLowBrushKey](xref:@ActiproUIRoot.Themes.AssetResourceKeys.ContainerBackgroundLowBrushKey) | Assigned to the following properties: [TrayBackground](xref:@ActiproUIRoot.Controls.UserPromptControl.TrayBackground). |
127+
| [ContainerBorderLowBrushKey](xref:@ActiproUIRoot.Themes.AssetResourceKeys.ContainerBorderLowBrushKey) | Assigned to the following properties: `BorderBrush`. |
128+
| [PrimaryAccentForegroundLowestNormalBrushKey](xref:@ActiproUIRoot.Themes.AssetResourceKeys.PrimaryAccentForegroundLowestNormalBrushKey) | Assigned to the following properties: [HeaderForeground](xref:@ActiproUIRoot.Controls.UserPromptControl.HeaderForeground). |
129+
| [ExtraLargeFontSizeDoubleKey](xref:@ActiproUIRoot.Themes.AssetResourceKeys.ExtraLargeFontSizeDoubleKey) | Assigned to the following properties: [HeaderFontSize](xref:@ActiproUIRoot.Controls.UserPromptControl.HeaderFontSize). |
130+
| [ContainerForegroundLowDisabledBrushKey](xref:@ActiproUIRoot.Themes.AssetResourceKeys.ContainerForegroundLowDisabledBrushKey) | Used for the focus rectangle of the **Expanded Information** toggle. |
131+
| [ButtonForegroundHoverBrushKey](xref:@ActiproUIRoot.Themes.AssetResourceKeys.ButtonForegroundHoverBrushKey) | Assigned to the following properties of the **Expanded Information** toggle when the mouse is over the control: `Foreground`. |
132+
| [ButtonForegroundPressedBrushKey](xref:@ActiproUIRoot.Themes.AssetResourceKeys.ButtonForegroundPressedBrushKey) | Assigned to the following properties of the **Expanded Information** toggle when pressed: `Foreground`. |
133+
| [ContainerForegroundLowDisabledBrushKey](xref:@ActiproUIRoot.Themes.AssetResourceKeys.ContainerForegroundLowDisabledBrushKey) | Assigned to the following properties of the **Expanded Information** toggle when disabled: `Foreground`. |
134+
}

0 commit comments

Comments
 (0)