diff --git a/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Inputs/SearchBox/BitSearchBoxDemo.razor.cs b/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Inputs/SearchBox/BitSearchBoxDemo.razor.cs
index 6f86d78343..74e1ccaaec 100644
--- a/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Inputs/SearchBox/BitSearchBoxDemo.razor.cs
+++ b/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Inputs/SearchBox/BitSearchBoxDemo.razor.cs
@@ -4,8 +4,8 @@ namespace Bit.BlazorUI.Demo.Client.Core.Pages.Components.Inputs.SearchBox;
public partial class BitSearchBoxDemo
{
- private readonly List
componentParameters = new()
- {
+ private readonly List componentParameters =
+ [
new()
{
Name = "Autocomplete",
@@ -174,10 +174,9 @@ public partial class BitSearchBoxDemo
DefaultValue = "false",
Description = "Whether to show the search button.",
}
- };
-
- private readonly List componentSubClasses = new()
- {
+ ];
+ private readonly List componentSubClasses =
+ [
new()
{
Id = "searchbox-class-styles",
@@ -243,7 +242,22 @@ public partial class BitSearchBoxDemo
}
}
}
- };
+ ];
+ private readonly List componentPublicMembers =
+ [
+ new()
+ {
+ Name = "InputElement",
+ Type = "ElementReference",
+ Description = "The ElementReference to the input element of the BitSearchBox.",
+ },
+ new()
+ {
+ Name = "FocusAsync",
+ Type = "ValueTask",
+ Description = "Gives focus to the input element of the BitSearchBox.",
+ }
+ ];
[Inject] private HttpClient HttpClient { get; set; } = default!;
[Inject] private NavigationManager NavManager { get; set; } = default!;
diff --git a/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Inputs/SpinButton/BitSpinButtonDemo.razor b/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Inputs/SpinButton/BitSpinButtonDemo.razor
index 8a3a31d9d8..38f3f20048 100644
--- a/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Inputs/SpinButton/BitSpinButtonDemo.razor
+++ b/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Inputs/SpinButton/BitSpinButtonDemo.razor
@@ -9,7 +9,8 @@
ComponentDescription="A spin button (SpinButton) allows someone to incrementally adjust a value in small steps. It’s mainly used for numeric values, but other values are supported too."
ComponentParameters="componentParameters"
ComponentSubClasses="componentSubClasses"
- ComponentSubEnums="componentSubEnums">
+ ComponentSubEnums="componentSubEnums"
+ ComponentPublicMembers="componentPublicMembers">
diff --git a/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Inputs/SpinButton/BitSpinButtonDemo.razor.cs b/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Inputs/SpinButton/BitSpinButtonDemo.razor.cs
index 22c8922180..cef04b24ec 100644
--- a/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Inputs/SpinButton/BitSpinButtonDemo.razor.cs
+++ b/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Inputs/SpinButton/BitSpinButtonDemo.razor.cs
@@ -2,8 +2,8 @@
public partial class BitSpinButtonDemo
{
- private readonly List
componentParameters = new()
- {
+ private readonly List componentParameters =
+ [
new()
{
Name = "AriaDescription",
@@ -49,12 +49,6 @@ public partial class BitSpinButtonDemo
Href = "#class-styles",
},
new()
- {
- Name = "ChangeHandler",
- Type = "EventCallback",
- Description = "?",
- },
- new()
{
Name = "DecrementAriaLabel",
Type = "string?",
@@ -251,10 +245,9 @@ public partial class BitSpinButtonDemo
DefaultValue = "\"The {DisplayName ?? FieldIdentifier.FieldName} field is not valid.\"",
Description = "The message format used for invalid values entered in the input.",
},
- };
-
- private readonly List componentSubClasses = new()
- {
+ ];
+ private readonly List componentSubClasses =
+ [
new()
{
Id = "class-styles",
@@ -355,10 +348,9 @@ public partial class BitSpinButtonDemo
}
}
}
- };
-
- private readonly List componentSubEnums = new()
- {
+ ];
+ private readonly List componentSubEnums =
+ [
new()
{
Id = "labelPosition-enum",
@@ -419,7 +411,22 @@ public partial class BitSpinButtonDemo
}
}
},
- };
+ ];
+ private readonly List componentPublicMembers =
+ [
+ new()
+ {
+ Name = "InputElement",
+ Type = "ElementReference",
+ Description = "The ElementReference to the input element of the BitSpinButton.",
+ },
+ new()
+ {
+ Name = "FocusAsync",
+ Type = "ValueTask",
+ Description = "Gives focus to the input element of the BitSpinButton.",
+ }
+ ];
diff --git a/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Inputs/TextField/BitTextFieldDemo.razor b/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Inputs/TextField/BitTextFieldDemo.razor
index e9a6bc1ae6..48a57be1c1 100644
--- a/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Inputs/TextField/BitTextFieldDemo.razor
+++ b/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Inputs/TextField/BitTextFieldDemo.razor
@@ -9,7 +9,7 @@
ComponentDescription="Text fields give people a way to enter and edit text. They’re used in forms, modal dialogs, tables, and other surfaces where text input is required."
ComponentParameters="componentParameters"
ComponentSubClasses="componentSubClasses"
- ComponentSubEnums="componentSubEnums">
+ ComponentPublicMembers="componentPublicMembers">
diff --git a/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Inputs/TextField/BitTextFieldDemo.razor.cs b/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Inputs/TextField/BitTextFieldDemo.razor.cs
index 981de93fed..a90da81313 100644
--- a/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Inputs/TextField/BitTextFieldDemo.razor.cs
+++ b/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Inputs/TextField/BitTextFieldDemo.razor.cs
@@ -2,8 +2,8 @@
public partial class BitTextFieldDemo
{
- private readonly List
componentParameters = new()
- {
+ private readonly List componentParameters =
+ [
new()
{
Name = "AutoComplete",
@@ -241,10 +241,10 @@ public partial class BitTextFieldDemo
LinkType = LinkType.Link,
Href = "#text-field-type-enum"
}
- };
+ ];
- private readonly List componentSubClasses = new()
- {
+ private readonly List componentSubClasses =
+ [
new()
{
Id = "textfield-class-styles",
@@ -366,10 +366,10 @@ public partial class BitTextFieldDemo
}
}
}
- };
+ ];
- private readonly List componentSubEnums = new()
- {
+ private readonly List componentSubEnums =
+ [
new()
{
Id = "text-field-type-enum",
@@ -415,8 +415,23 @@ public partial class BitTextFieldDemo
}
}
}
- };
+ ];
+ private readonly List componentPublicMembers =
+ [
+ new()
+ {
+ Name = "InputElement",
+ Type = "ElementReference",
+ Description = "The ElementReference to the input element of the BitTextField.",
+ },
+ new()
+ {
+ Name = "FocusAsync",
+ Type = "ValueTask",
+ Description = "Gives focus to the input element of the BitTextField.",
+ }
+ ];
private string? oneWayValue;
diff --git a/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Inputs/TimePickers/TimePicker/BitTimePickerDemo.razor.cs b/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Inputs/TimePickers/TimePicker/BitTimePickerDemo.razor.cs
index f6cf8acefe..28b9d5b618 100644
--- a/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Inputs/TimePickers/TimePicker/BitTimePickerDemo.razor.cs
+++ b/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Inputs/TimePickers/TimePicker/BitTimePickerDemo.razor.cs
@@ -208,7 +208,14 @@ public partial class BitTimePickerDemo
Description = "Custom CSS classes for different parts of the TimePicker.",
Href = "#timepicker-class-styles",
LinkType = LinkType.Link
- }
+ },
+ new()
+ {
+ Name = "CloseButtonTitle",
+ Type = "string",
+ DefaultValue = "Close time picker",
+ Description = "The title of the close button (tooltip).",
+ },
};
private readonly List componentSubEnums = new()
diff --git a/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Nav/BitNavDemo.razor.cs b/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Nav/BitNavDemo.razor.cs
index cdc41cd321..631b0601aa 100644
--- a/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Nav/BitNavDemo.razor.cs
+++ b/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Nav/BitNavDemo.razor.cs
@@ -2,8 +2,8 @@
public partial class BitNavDemo
{
- private readonly List componentParameters = new()
- {
+ private readonly List componentParameters =
+ [
new()
{
Name = "ChildContent",
@@ -35,6 +35,34 @@ public partial class BitNavDemo
Description = "Used to customize how content inside the group header is rendered."
},
new()
+ {
+ Name = "HeaderTemplateRenderMode",
+ Type = "BitNavItemTemplateRenderMode",
+ DefaultValue = "BitNavItemTemplateRenderMode.Normal",
+ Description = "The render mode of the custom HeaderTemplate."
+ },
+ new()
+ {
+ Name = "IndentValue",
+ Type = "int",
+ DefaultValue = "16",
+ Description = "The indentation value in px for each level of depth of child item."
+ },
+ new()
+ {
+ Name = "IndentPadding",
+ Type = "int",
+ DefaultValue = "27",
+ Description = "The indentation padding in px for items without children (compensation space for chevron icon)."
+ },
+ new()
+ {
+ Name = "IndentReversedPadding",
+ Type = "int",
+ DefaultValue = "4",
+ Description = "The indentation padding in px for items in reversed mode."
+ },
+ new()
{
Name = "Items",
Type = "IList",
@@ -116,7 +144,14 @@ public partial class BitNavDemo
Name = "SelectedItem",
Type = "TItem?",
DefaultValue = "null",
- Description = "Selected item to show in Nav."
+ Description = "Selected item to show in the BitNav."
+ },
+ new()
+ {
+ Name = "SingleExpand",
+ Type = "bool",
+ DefaultValue = "false",
+ Description = "Enables the single-expand mode in the BitNav."
},
new()
{
@@ -127,10 +162,9 @@ public partial class BitNavDemo
Href = "#nav-class-styles",
LinkType = LinkType.Link
}
- };
-
- private readonly List componentSubClasses = new()
- {
+ ];
+ private readonly List componentSubClasses =
+ [
new()
{
Id = "nav-item",
@@ -678,10 +712,9 @@ public partial class BitNavDemo
},
}
}
- };
-
- private readonly List componentSubEnums = new()
- {
+ ];
+ private readonly List componentSubEnums =
+ [
new()
{
Id = "nav-mode-enum",
@@ -779,5 +812,5 @@ public partial class BitNavDemo
}
]
},
- };
+ ];
}
diff --git a/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Nav/_BitNavItemDemo.razor.cs b/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Nav/_BitNavItemDemo.razor.cs
index 598ac88167..4fbe9fb342 100644
--- a/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Nav/_BitNavItemDemo.razor.cs
+++ b/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Nav/_BitNavItemDemo.razor.cs
@@ -2,8 +2,8 @@
public partial class _BitNavItemDemo
{
- private static readonly List BitPlatformNavMenu = new()
- {
+ private static readonly List BitPlatformNavMenu =
+ [
new()
{
Text = "bit platform",
@@ -46,10 +46,10 @@ public partial class _BitNavItemDemo
}
},
new() { Text = "Iconography", IconName = BitIconName.AppIconDefault, Url = "/iconography" },
- };
+ ];
- private static readonly List CarNavMenu = new()
- {
+ private static readonly List CarNavMenu =
+ [
new()
{
Text = "Mercedes-Benz",
@@ -105,10 +105,10 @@ public partial class _BitNavItemDemo
new() { Text = "Model Y", Url = "https://www.tesla.com/modely", Target = "_blank" },
}
},
- };
+ ];
- private static readonly List FoodNavMenu = new()
- {
+ private static readonly List FoodNavMenu =
+ [
new()
{
Text = "Fast foods",
@@ -156,10 +156,10 @@ public partial class _BitNavItemDemo
},
new() { Text = "Ice Cream" },
new() { Text = "Cookie" },
- };
+ ];
- private static readonly List CustomStyleNavMenu = new()
- {
+ private static readonly List CustomStyleNavMenu =
+ [
new()
{
Text = "bit platform",
@@ -202,10 +202,10 @@ public partial class _BitNavItemDemo
}
},
new() { Text = "Iconography", IconName = BitIconName.AppIconDefault, Url = "/iconography" },
- };
+ ];
- private static readonly List RtlBitPlatformNavMenu = new()
- {
+ private static readonly List RtlBitPlatformNavMenu =
+ [
new()
{
Text = "پلتفرمِ بیت",
@@ -248,7 +248,7 @@ public partial class _BitNavItemDemo
}
},
new() { Text = "شمایل نگاری", IconName = BitIconName.AppIconDefault, Url = "/iconography" },
- };
+ ];
private static List Flatten(IList e) => e.SelectMany(c => Flatten(c.ChildItems)).Concat(e).ToList();
private BitNavItem SelectedItemNav = FoodNavMenu[0].ChildItems[2];
@@ -258,8 +258,8 @@ public partial class _BitNavItemDemo
private BitNavItem SelectedItem = default!;
private BitNavItem ToggledItem = default!;
- private static readonly List> FoodMenuDropdownItems = new()
- {
+ private static readonly List> FoodMenuDropdownItems =
+ [
new()
{
Text = "Beef Burger",
@@ -330,7 +330,7 @@ public partial class _BitNavItemDemo
Text = "Cookie",
Value = "Cookie",
},
- };
+ ];
diff --git a/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Maui/Bit.BlazorUI.Demo.Client.Maui.csproj b/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Maui/Bit.BlazorUI.Demo.Client.Maui.csproj
index eae9713f5d..640c49526a 100644
--- a/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Maui/Bit.BlazorUI.Demo.Client.Maui.csproj
+++ b/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Maui/Bit.BlazorUI.Demo.Client.Maui.csproj
@@ -51,6 +51,10 @@
+
+
+
+
@@ -81,12 +85,12 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
@@ -98,10 +102,10 @@
-
-
-
-
+
+
+
+
+
12.0
diff --git a/src/Bswup/Bit.Bswup.Demo/Bit.Bswup.Demo.csproj b/src/Bswup/Bit.Bswup.Demo/Bit.Bswup.Demo.csproj
index 0e4f121434..92b855bee2 100644
--- a/src/Bswup/Bit.Bswup.Demo/Bit.Bswup.Demo.csproj
+++ b/src/Bswup/Bit.Bswup.Demo/Bit.Bswup.Demo.csproj
@@ -10,8 +10,8 @@
-
-
+
+
diff --git a/src/Bswup/Bit.Bswup.Demo/wwwroot/service-worker.js b/src/Bswup/Bit.Bswup.Demo/wwwroot/service-worker.js
index c8ec4e3afc..1526050ba1 100644
--- a/src/Bswup/Bit.Bswup.Demo/wwwroot/service-worker.js
+++ b/src/Bswup/Bit.Bswup.Demo/wwwroot/service-worker.js
@@ -1,4 +1,4 @@
-// bit version: 8.8.0
+// bit version: 8.8.1
self.assetsExclude = [/\.scp\.css$/, /weather\.json$/];
self.caseInsensitiveUrl = true;
diff --git a/src/Bswup/Bit.Bswup.Demo/wwwroot/service-worker.published.js b/src/Bswup/Bit.Bswup.Demo/wwwroot/service-worker.published.js
index 0c888c1793..4ce333b57c 100644
--- a/src/Bswup/Bit.Bswup.Demo/wwwroot/service-worker.published.js
+++ b/src/Bswup/Bit.Bswup.Demo/wwwroot/service-worker.published.js
@@ -1,4 +1,4 @@
-// bit version: 8.8.0
+// bit version: 8.8.1
self.assetsExclude = [/\.scp\.css$/, /weather\.json$/];
self.caseInsensitiveUrl = true;
diff --git a/src/Bswup/Bit.Bswup.NewDemo/Bit.Bswup.NewDemo.Client/Bit.Bswup.NewDemo.Client.csproj b/src/Bswup/Bit.Bswup.NewDemo/Bit.Bswup.NewDemo.Client/Bit.Bswup.NewDemo.Client.csproj
index 65b3d3b75c..034b449f57 100644
--- a/src/Bswup/Bit.Bswup.NewDemo/Bit.Bswup.NewDemo.Client/Bit.Bswup.NewDemo.Client.csproj
+++ b/src/Bswup/Bit.Bswup.NewDemo/Bit.Bswup.NewDemo.Client/Bit.Bswup.NewDemo.Client.csproj
@@ -13,7 +13,7 @@
-
+
diff --git a/src/Bswup/Bit.Bswup.NewDemo/Bit.Bswup.NewDemo.Client/wwwroot/service-worker.js b/src/Bswup/Bit.Bswup.NewDemo/Bit.Bswup.NewDemo.Client/wwwroot/service-worker.js
index 067124be23..c57e3c5f62 100644
--- a/src/Bswup/Bit.Bswup.NewDemo/Bit.Bswup.NewDemo.Client/wwwroot/service-worker.js
+++ b/src/Bswup/Bit.Bswup.NewDemo/Bit.Bswup.NewDemo.Client/wwwroot/service-worker.js
@@ -1,4 +1,4 @@
-// bit version: 8.8.0
+// bit version: 8.8.1
// In development, always fetch from the network and do not enable offline support.
// This is because caching would make development more difficult (changes would not
diff --git a/src/Bswup/Bit.Bswup.NewDemo/Bit.Bswup.NewDemo.Client/wwwroot/service-worker.published.js b/src/Bswup/Bit.Bswup.NewDemo/Bit.Bswup.NewDemo.Client/wwwroot/service-worker.published.js
index 26d1b15269..ae2754d241 100644
--- a/src/Bswup/Bit.Bswup.NewDemo/Bit.Bswup.NewDemo.Client/wwwroot/service-worker.published.js
+++ b/src/Bswup/Bit.Bswup.NewDemo/Bit.Bswup.NewDemo.Client/wwwroot/service-worker.published.js
@@ -1,4 +1,4 @@
-// bit version: 8.8.0
+// bit version: 8.8.1
self.assetsInclude = [];
self.assetsExclude = [
diff --git a/src/Bswup/Bit.Bswup.NewDemo/Bit.Bswup.NewDemo/Bit.Bswup.NewDemo.csproj b/src/Bswup/Bit.Bswup.NewDemo/Bit.Bswup.NewDemo/Bit.Bswup.NewDemo.csproj
index 1d86142d9a..223a97cc8c 100644
--- a/src/Bswup/Bit.Bswup.NewDemo/Bit.Bswup.NewDemo/Bit.Bswup.NewDemo.csproj
+++ b/src/Bswup/Bit.Bswup.NewDemo/Bit.Bswup.NewDemo/Bit.Bswup.NewDemo.csproj
@@ -8,7 +8,7 @@
-
+
diff --git a/src/Bswup/Bit.Bswup/Scripts/bit-bswup.progress.ts b/src/Bswup/Bit.Bswup/Scripts/bit-bswup.progress.ts
index d1286cd986..d46732eb48 100644
--- a/src/Bswup/Bit.Bswup/Scripts/bit-bswup.progress.ts
+++ b/src/Bswup/Bit.Bswup/Scripts/bit-bswup.progress.ts
@@ -1,4 +1,4 @@
-window['bit-bswup.progress version'] = '8.8.0';
+window['bit-bswup.progress version'] = '8.8.1';
; (function () {
(window as any).startBswupProgress = (autoReload: boolean,
diff --git a/src/Bswup/Bit.Bswup/Scripts/bit-bswup.sw.ts b/src/Bswup/Bit.Bswup/Scripts/bit-bswup.sw.ts
index 97f5abb31c..d290f782c4 100644
--- a/src/Bswup/Bit.Bswup/Scripts/bit-bswup.sw.ts
+++ b/src/Bswup/Bit.Bswup/Scripts/bit-bswup.sw.ts
@@ -1,4 +1,4 @@
-self['bit-bswup.sw version'] = '8.8.0';
+self['bit-bswup.sw version'] = '8.8.1';
interface Window {
clients: any
diff --git a/src/Bswup/Bit.Bswup/Scripts/bit-bswup.ts b/src/Bswup/Bit.Bswup/Scripts/bit-bswup.ts
index 9e85968770..0994307c08 100644
--- a/src/Bswup/Bit.Bswup/Scripts/bit-bswup.ts
+++ b/src/Bswup/Bit.Bswup/Scripts/bit-bswup.ts
@@ -1,4 +1,4 @@
-window['bit-bswup version'] = '8.8.0';
+window['bit-bswup version'] = '8.8.1';
declare const Blazor: any;
diff --git a/src/Bswup/FullDemo/Client/Bit.Bswup.Demo.Client.csproj b/src/Bswup/FullDemo/Client/Bit.Bswup.Demo.Client.csproj
index f7f7d08b5c..49850e0fc4 100644
--- a/src/Bswup/FullDemo/Client/Bit.Bswup.Demo.Client.csproj
+++ b/src/Bswup/FullDemo/Client/Bit.Bswup.Demo.Client.csproj
@@ -11,8 +11,8 @@
-
-
+
+
diff --git a/src/Bswup/FullDemo/Client/wwwroot/service-worker.js b/src/Bswup/FullDemo/Client/wwwroot/service-worker.js
index b2ba8f5ed0..a5cd954763 100644
--- a/src/Bswup/FullDemo/Client/wwwroot/service-worker.js
+++ b/src/Bswup/FullDemo/Client/wwwroot/service-worker.js
@@ -1,4 +1,4 @@
-// bit version: 8.8.0
+// bit version: 8.8.1
// In development, always fetch from the network and do not enable offline support.
// This is because caching would make development more difficult (changes would not
diff --git a/src/Bswup/FullDemo/Client/wwwroot/service-worker.published.js b/src/Bswup/FullDemo/Client/wwwroot/service-worker.published.js
index 90e7110f3b..0709abcc70 100644
--- a/src/Bswup/FullDemo/Client/wwwroot/service-worker.published.js
+++ b/src/Bswup/FullDemo/Client/wwwroot/service-worker.published.js
@@ -1,4 +1,4 @@
-// bit version: 8.8.0
+// bit version: 8.8.1
self.assetsInclude = [];
self.assetsExclude = [/\.scp\.css$/, /weather\.json$/];
diff --git a/src/Bswup/FullDemo/Server/Bit.Bswup.Demo.Server.csproj b/src/Bswup/FullDemo/Server/Bit.Bswup.Demo.Server.csproj
index 60a3e6ee46..9b72fa6306 100644
--- a/src/Bswup/FullDemo/Server/Bit.Bswup.Demo.Server.csproj
+++ b/src/Bswup/FullDemo/Server/Bit.Bswup.Demo.Server.csproj
@@ -8,7 +8,7 @@
-
+
diff --git a/src/Bup/Bit.Bup.Demo/Bit.Bup.Demo.csproj b/src/Bup/Bit.Bup.Demo/Bit.Bup.Demo.csproj
index 0be4958173..911c79ed20 100644
--- a/src/Bup/Bit.Bup.Demo/Bit.Bup.Demo.csproj
+++ b/src/Bup/Bit.Bup.Demo/Bit.Bup.Demo.csproj
@@ -9,8 +9,8 @@
-
-
+
+
diff --git a/src/Bup/Bit.Bup/Scripts/bit-bup.progress.ts b/src/Bup/Bit.Bup/Scripts/bit-bup.progress.ts
index 6bf6e286b7..08c922be66 100644
--- a/src/Bup/Bit.Bup/Scripts/bit-bup.progress.ts
+++ b/src/Bup/Bit.Bup/Scripts/bit-bup.progress.ts
@@ -1,4 +1,4 @@
-window['bit-bup.progress version'] = '8.8.0';
+window['bit-bup.progress version'] = '8.8.1';
; (function () {
(window as any).startBupProgress = (showLogs: boolean, showAssets: boolean, appContainerSelector: string, hideApp: boolean, autoHide: boolean) => {
diff --git a/src/Bup/Bit.Bup/Scripts/bit-bup.ts b/src/Bup/Bit.Bup/Scripts/bit-bup.ts
index 1068db1d98..317439af9f 100644
--- a/src/Bup/Bit.Bup/Scripts/bit-bup.ts
+++ b/src/Bup/Bit.Bup/Scripts/bit-bup.ts
@@ -1,4 +1,4 @@
-window['bit-bup version'] = '8.8.0';
+window['bit-bup version'] = '8.8.1';
declare const Blazor: any;
diff --git a/src/Bup/FullDemo/Client/Bit.Bup.Demo.Client.csproj b/src/Bup/FullDemo/Client/Bit.Bup.Demo.Client.csproj
index 2831b18eea..232998b105 100644
--- a/src/Bup/FullDemo/Client/Bit.Bup.Demo.Client.csproj
+++ b/src/Bup/FullDemo/Client/Bit.Bup.Demo.Client.csproj
@@ -9,7 +9,7 @@
-
-
+
+
diff --git a/src/Bup/FullDemo/Server/Bit.Bup.Demo.Server.csproj b/src/Bup/FullDemo/Server/Bit.Bup.Demo.Server.csproj
index 5ee07c3ef1..18759ce3c1 100644
--- a/src/Bup/FullDemo/Server/Bit.Bup.Demo.Server.csproj
+++ b/src/Bup/FullDemo/Server/Bit.Bup.Demo.Server.csproj
@@ -8,7 +8,7 @@
-
+
diff --git a/src/Butil/Bit.Butil/Scripts/butil.ts b/src/Butil/Bit.Butil/Scripts/butil.ts
index 01bef96578..8fdd494b9b 100644
--- a/src/Butil/Bit.Butil/Scripts/butil.ts
+++ b/src/Butil/Bit.Butil/Scripts/butil.ts
@@ -1,2 +1,2 @@
var BitButil = BitButil || {};
-BitButil.version = window['bit-butil version'] = '8.8.0';
\ No newline at end of file
+BitButil.version = window['bit-butil version'] = '8.8.1';
\ No newline at end of file
diff --git a/src/Butil/Demo/Bit.Butil.Demo.Maui/Bit.Butil.Demo.Maui.csproj b/src/Butil/Demo/Bit.Butil.Demo.Maui/Bit.Butil.Demo.Maui.csproj
index 20153154fb..cdf378392d 100644
--- a/src/Butil/Demo/Bit.Butil.Demo.Maui/Bit.Butil.Demo.Maui.csproj
+++ b/src/Butil/Demo/Bit.Butil.Demo.Maui/Bit.Butil.Demo.Maui.csproj
@@ -50,9 +50,9 @@
-
-
-
+
+
+
diff --git a/src/Butil/Demo/Bit.Butil.Demo.Web/Bit.Butil.Demo.Web.csproj b/src/Butil/Demo/Bit.Butil.Demo.Web/Bit.Butil.Demo.Web.csproj
index 33ed85d57b..835815034f 100644
--- a/src/Butil/Demo/Bit.Butil.Demo.Web/Bit.Butil.Demo.Web.csproj
+++ b/src/Butil/Demo/Bit.Butil.Demo.Web/Bit.Butil.Demo.Web.csproj
@@ -8,8 +8,8 @@
-
-
+
+
diff --git a/src/Templates/BlazorEmpty/Bit.BlazorEmpty/BlazorEmpty.Client/BlazorEmpty.Client.csproj b/src/Templates/BlazorEmpty/Bit.BlazorEmpty/BlazorEmpty.Client/BlazorEmpty.Client.csproj
index 18f9b21a0c..488ff32db7 100644
--- a/src/Templates/BlazorEmpty/Bit.BlazorEmpty/BlazorEmpty.Client/BlazorEmpty.Client.csproj
+++ b/src/Templates/BlazorEmpty/Bit.BlazorEmpty/BlazorEmpty.Client/BlazorEmpty.Client.csproj
@@ -1,4 +1,4 @@
-
+
@@ -12,18 +12,18 @@
-
+
-
+
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/src/Templates/BlazorEmpty/Bit.BlazorEmpty/BlazorEmpty/BlazorEmpty.csproj b/src/Templates/BlazorEmpty/Bit.BlazorEmpty/BlazorEmpty/BlazorEmpty.csproj
index d9178a1970..aa8141f8c8 100644
--- a/src/Templates/BlazorEmpty/Bit.BlazorEmpty/BlazorEmpty/BlazorEmpty.csproj
+++ b/src/Templates/BlazorEmpty/Bit.BlazorEmpty/BlazorEmpty/BlazorEmpty.csproj
@@ -1,4 +1,4 @@
-
+
@@ -12,20 +12,20 @@
-
+
-
+
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/src/Templates/BlazorEmpty/Bit.BlazorEmpty/global.json b/src/Templates/BlazorEmpty/Bit.BlazorEmpty/global.json
index 00efd20102..f222006a3a 100644
--- a/src/Templates/BlazorEmpty/Bit.BlazorEmpty/global.json
+++ b/src/Templates/BlazorEmpty/Bit.BlazorEmpty/global.json
@@ -1,6 +1,6 @@
{
"sdk": {
- "version": "8.0.203",
+ "version": "8.0.204",
"rollForward": "disable"
}
}
\ No newline at end of file
diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/.azure-devops/workflows/cd.yml b/src/Templates/Boilerplate/Bit.Boilerplate/.azure-devops/workflows/cd.yml
index 7b2b20f48e..0d4791b7a8 100644
--- a/src/Templates/Boilerplate/Bit.Boilerplate/.azure-devops/workflows/cd.yml
+++ b/src/Templates/Boilerplate/Bit.Boilerplate/.azure-devops/workflows/cd.yml
@@ -26,9 +26,9 @@ jobs:
useGlobalJson: true
workingDirectory: 'src'
- - task: NodeTool@0
+ - task: NodeTool@1
inputs:
- versionSpec: '18.x'
+ versionSpec: '20.x'
displayName: 'Install Node.js'
# - task: Bash@3
@@ -45,7 +45,7 @@ jobs:
script: |
'cd src && dotnet workload install wasm-tools wasm-experimental'
- - task: FileTransform@1
+ - task: FileTransform@2
displayName: Update appsettings.json
inputs:
fileType: 'json'
@@ -105,7 +105,7 @@ jobs:
artifact: 'migrations-bundle'
path: ./
- - task: FileTransform@1
+ - task: FileTransform@2
displayName: Update appsettings.json
inputs:
fileType: 'json'
@@ -158,12 +158,12 @@ jobs:
useGlobalJson: true
workingDirectory: 'src'
- - task: NodeTool@0
+ - task: NodeTool@1
inputs:
- versionSpec: '18.x'
+ versionSpec: '20.x'
displayName: 'Install Node.js'
- - task: FileTransform@1
+ - task: FileTransform@2
displayName: Update appsettings.json
inputs:
fileType: 'json'
@@ -195,7 +195,7 @@ jobs:
echo A | xcopy .\bin\publish-x64 .\publish-result /s /e /h
echo A | xcopy .\bin\publish .\publish-result /s /e /h
dotnet tool restore
- dotnet vpk pack -u Boilerplate.Client.Windows -v "${{ vars.APPLICATION_DISPLAY_VERSION }}" -p .\publish-result -e Boilerplate.Client.Windows-x86.exe -r win-x86 --framework net8.0.2-x86-desktop,webview2 --icon .\wwwroot\favicon.ico --packTitle 'Boilerplate'
+ dotnet vpk pack -u Boilerplate.Client.Windows -v "${{ vars.APPLICATION_DISPLAY_VERSION }}" -p .\publish-result -e Boilerplate.Client.Windows-x86.exe -r win-x86 --framework net8.0.4-x86-desktop,webview2 --icon .\wwwroot\favicon.ico --packTitle 'Boilerplate'
- task: PublishPipelineArtifact@1
displayName: Upload artifact
@@ -217,9 +217,9 @@ jobs:
useGlobalJson: true
workingDirectory: 'src'
- - task: NodeTool@0
+ - task: NodeTool@1
inputs:
- versionSpec: '18.x'
+ versionSpec: '20.x'
displayName: 'Install Node.js'
- task: Bash@3
@@ -245,18 +245,18 @@ jobs:
failOnStderr: true
displayName: Copy keystore to app project folder
- - task: FileTransform@1
+ - task: FileTransform@2
displayName: Update appsettings.json
inputs:
fileType: 'json'
folderPath: './'
targetFiles: 'src/Client/Boilerplate.Client.Core/appsettings.json'
- - task: Bash@3
- displayName: 'Generate CSS/JS files'
- inputs:
- targetType: 'inline'
- script: 'dotnet build src/Client/Boilerplate.Client.Core/Boilerplate.Client.Core.csproj -t:BeforeBuildTasks --no-restore'
+ - script: |
+ dotnet build src/Client/Boilerplate.Client.Core/Boilerplate.Client.Core.csproj -t:BeforeBuildTasks --no-restore
+ dotnet build src/Client/Boilerplate.Client.Maui/Boilerplate.Client.Maui.csproj -t:BeforeBuildTasks --no-restore
+ failOnStderr: true
+ displayName: Generate CSS/JS files
- task: Bash@3
displayName: 'Build aab'
diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/.azure-devops/workflows/ci.yml b/src/Templates/Boilerplate/Bit.Boilerplate/.azure-devops/workflows/ci.yml
index fde3de1ea7..ad9b904e76 100644
--- a/src/Templates/Boilerplate/Bit.Boilerplate/.azure-devops/workflows/ci.yml
+++ b/src/Templates/Boilerplate/Bit.Boilerplate/.azure-devops/workflows/ci.yml
@@ -17,9 +17,9 @@ jobs:
useGlobalJson: true
workingDirectory: 'src'
- - task: NodeTool@0
+ - task: NodeTool@1
inputs:
- versionSpec: '18.x'
+ versionSpec: '20.x'
displayName: 'Install Node.js'
- task: Bash@3
diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/.github/workflows/cd.yml b/src/Templates/Boilerplate/Bit.Boilerplate/.github/workflows/cd.yml
index bf84135f4c..6427e9e465 100644
--- a/src/Templates/Boilerplate/Bit.Boilerplate/.github/workflows/cd.yml
+++ b/src/Templates/Boilerplate/Bit.Boilerplate/.github/workflows/cd.yml
@@ -24,22 +24,22 @@ jobs:
steps:
- name: Checkout source code
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- name: Setup .NET
- uses: actions/setup-dotnet@v3
+ uses: actions/setup-dotnet@v4
with:
global-json-file: global.json
- - uses: actions/setup-node@v3
+ - uses: actions/setup-node@v4
with:
- node-version: 18
+ node-version: 20
# - name: Enable pre rendering
# run: sed -i 's/public static readonly bool PrerenderEnabled = false;/public static readonly bool PrerenderEnabled = true;/g' src/Client/Boilerplate.Client.Core/Services/AppRenderMode.cs
- name: Update appsettings.json api server address
- uses: microsoft/variable-substitution@v1
+ uses: devops-actions/variable-substitution@v1.2
with:
files: 'src/Client/Boilerplate.Client.Core/appsettings.json'
env:
@@ -59,13 +59,13 @@ jobs:
cd src/Boilerplate.Server/ && dotnet tool restore && dotnet ef migrations bundle --self-contained -r linux-x64 --project Boilerplate.Server.csproj
- name: Upload ef migrations bundle
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
name: migrations-bundle
path: src/Boilerplate.Server/efbundle
- name: Upload server artifact
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
name: server-bundle
path: ${{env.DOTNET_ROOT}}/server
@@ -81,29 +81,29 @@ jobs:
steps:
- name: Retrieve server bundle
- uses: actions/download-artifact@v2
+ uses: actions/download-artifact@v4
with:
name: server-bundle
- name: Retrieve migrations bundle
- uses: actions/download-artifact@v2
+ uses: actions/download-artifact@v4
with:
name: migrations-bundle
- name: Update appsettings.json
- uses: microsoft/variable-substitution@v1
+ uses: devops-actions/variable-substitution@v1.2
with:
files: 'appsettings.json'
env:
- ConnectionStrings.SqlServerConnectionString: ${{ secrets.DB_CONNECTION_STRING }}
- AppSettings.IdentitySettings.IdentityCertificatePassword: ${{ secrets.API_IDENTITY_CERTIFICATE_PASSWORD }}
+ ConnectionStrings_SqlServerConnectionString: ${{ secrets.DB_CONNECTION_STRING }}
+ AppSettings_IdentitySettings_IdentityCertificatePassword: ${{ secrets.API_IDENTITY_CERTIFICATE_PASSWORD }}
- name: Delete IdentityCertificate.pfx
run: |
rm IdentityCertificate.pfx
- name: Extract identity certificate from env
- uses: timheuer/base64-to-file@v1
+ uses: timheuer/base64-to-file@v1.2
with:
fileDir: './'
fileName: 'IdentityCertificate.pfx'
@@ -132,19 +132,19 @@ jobs:
steps:
- name: Checkout source code
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- name: Setup .NET
- uses: actions/setup-dotnet@v3
+ uses: actions/setup-dotnet@v4
with:
global-json-file: global.json
- - uses: actions/setup-node@v3
+ - uses: actions/setup-node@v4
with:
- node-version: 18
+ node-version: 20
- name: Update appsettings.json api server address
- uses: microsoft/variable-substitution@v1
+ uses: devops-actions/variable-substitution@v1.2
with:
files: 'src\Client\Boilerplate.Client.Core\appsettings.json'
env:
@@ -170,7 +170,7 @@ jobs:
echo A | xcopy .\bin\publish-x64 .\publish-result /s /e /h
echo A | xcopy .\bin\publish .\publish-result /s /e /h
dotnet tool restore
- dotnet vpk pack -u Boilerplate.Client.Windows -v "${{ vars.APPLICATION_DISPLAY_VERSION }}" -p .\publish-result -e Boilerplate.Client.Windows-x86.exe -r win-x86 --framework net8.0.2-x86-desktop,webview2 --icon .\wwwroot\favicon.ico --packTitle 'Boilerplate'
+ dotnet vpk pack -u Boilerplate.Client.Windows -v "${{ vars.APPLICATION_DISPLAY_VERSION }}" -p .\publish-result -e Boilerplate.Client.Windows-x86.exe -r win-x86 --framework net8.0.4-x86-desktop,webview2 --icon .\wwwroot\favicon.ico --packTitle 'Boilerplate'
- name: Upload artifact
uses: actions/upload-artifact@v2
@@ -186,26 +186,26 @@ jobs:
steps:
- name: Checkout source code
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- name: Setup .NET
- uses: actions/setup-dotnet@v3
+ uses: actions/setup-dotnet@v4
with:
global-json-file: global.json
- - uses: actions/setup-node@v3
+ - uses: actions/setup-node@v4
with:
- node-version: 18
+ node-version: 20
- name: Extract Android signing key from env
- uses: timheuer/base64-to-file@v1
+ uses: timheuer/base64-to-file@v1.2
with:
fileDir: './src/Client/Boilerplate.Client.Maui/'
fileName: 'Boilerplate.keystore'
encodedString: ${{ secrets.ANDROID_RELEASE_KEYSTORE_FILE_BASE64 }}
- name: Update appsettings.json api server address
- uses: microsoft/variable-substitution@v1
+ uses: devops-actions/variable-substitution@v1.2
with:
files: 'src/Client/Boilerplate.Client.Core/appsettings.json'
env:
@@ -218,7 +218,9 @@ jobs:
run: ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --sdk_root=$ANDROID_SDK_ROOT "platform-tools"
- name: Generate CSS/JS files
- run: dotnet build src/Client/Boilerplate.Client.Core/Boilerplate.Client.Core.csproj -t:BeforeBuildTasks --no-restore
+ run: |
+ dotnet build src/Client/Boilerplate.Client.Core/Boilerplate.Client.Core.csproj -t:BeforeBuildTasks --no-restore
+ dotnet build src/Client/Boilerplate.Client.Maui/Boilerplate.Client.Maui.csproj -t:BeforeBuildTasks --no-restore
- name: Build aab
run: dotnet build src/Client/Boilerplate.Client.Maui/Boilerplate.Client.Maui.csproj -c Release -p:AndroidPackageFormat=aab -p:AndroidKeyStore=true -p:AndroidSigningKeyStore="Boilerplate.keystore" -p:AndroidSigningKeyAlias=Boilerplate -p:AndroidSigningKeyPass="${{ secrets.ANDROID_RELEASE_KEYSTORE_PASSWORD }}" -p:AndroidSigningStorePass="${{ secrets.ANDROID_RELEASE_SIGNING_PASSWORD }}" -f net8.0-android
@@ -234,28 +236,28 @@ jobs:
build_blazor_hybrid_iOS:
name: build blazor hybrid (iOS-macOS)
- runs-on: macos-13
+ runs-on: macos-14
steps:
- name: Checkout source code
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- name: Setup .NET
- uses: actions/setup-dotnet@v3
+ uses: actions/setup-dotnet@v4
with:
global-json-file: global.json
- uses: maxim-lobanov/setup-xcode@v1
with:
- xcode-version: '15'
+ xcode-version: '15.3'
- - uses: actions/setup-node@v3
+ - uses: actions/setup-node@v4
with:
- node-version: 18
+ node-version: 20
- name: Update appsettings.json api server address
- uses: microsoft/variable-substitution@v1
+ uses: devops-actions/variable-substitution@v1.2
with:
files: 'src/Client/Boilerplate.Client.Core/appsettings.json'
env:
@@ -265,14 +267,14 @@ jobs:
run: cd src && dotnet workload install maui
- name: Extract iOS code signing certificate from env
- uses: timheuer/base64-to-file@v1
+ uses: timheuer/base64-to-file@v1.2
with:
fileDir: './'
fileName: 'DistributionCert.p12'
encodedString: ${{ secrets.APPSTORE_CODE_SIGNING_CERTIFICATE_FILE_BASE64 }}
- name: Import Code-Signing Certificates
- uses: Apple-Actions/import-codesign-certs@v1
+ uses: apple-actions/import-codesign-certs@v2
with:
p12-filepath: './DistributionCert.p12'
p12-password: ${{ secrets.APPSTORE_CODE_SIGNING_CERTIFICATE_FILE_PASSWORD }}
@@ -286,7 +288,9 @@ jobs:
api-private-key: ${{ secrets.APPSTORE_API_KEY_PRIVATE_KEY }}
- name: Generate CSS/JS files
- run: dotnet build src/Client/Boilerplate.Client.Core/Boilerplate.Client.Core.csproj -t:BeforeBuildTasks --no-restore
+ run: |
+ dotnet build src/Client/Boilerplate.Client.Core/Boilerplate.Client.Core.csproj -t:BeforeBuildTasks --no-restore
+ dotnet build src/Client/Boilerplate.Client.Maui/Boilerplate.Client.Maui.csproj -t:BeforeBuildTasks --no-restore
- name: Build ipa
run: dotnet publish src/Client/Boilerplate.Client.Maui/Boilerplate.Client.Maui.csproj -p:RuntimeIdentifier=ios-arm64 -c Release -p:ArchiveOnBuild=true -p:CodesignKey="iPhone Distribution" -p:CodesignProvision="${{ env.IOS_CODE_SIGN_PROVISION }}" -p:ApplicationDisplayVersion="${{ vars.APPLICATION_DISPLAY_VERSION }}" -p:ApplicationVersion="${{ vars.APPLICATION_VERSION }}" -f net8.0-ios
diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/.github/workflows/ci.yml b/src/Templates/Boilerplate/Bit.Boilerplate/.github/workflows/ci.yml
index 1a87a47761..33131146fb 100644
--- a/src/Templates/Boilerplate/Bit.Boilerplate/.github/workflows/ci.yml
+++ b/src/Templates/Boilerplate/Bit.Boilerplate/.github/workflows/ci.yml
@@ -16,16 +16,16 @@ jobs:
steps:
- name: Checkout source code
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- name: Setup .NET
- uses: actions/setup-dotnet@v3
+ uses: actions/setup-dotnet@v4
with:
global-json-file: global.json
- - uses: actions/setup-node@v3
+ - uses: actions/setup-node@v4
with:
- node-version: 18
+ node-version: 20
- name: Build
run: dotnet build Boilerplate.sln -c Release
\ No newline at end of file
diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/.template.config/template.json b/src/Templates/Boilerplate/Bit.Boilerplate/.template.config/template.json
index 7e33c0cc00..01c9c79a7f 100644
--- a/src/Templates/Boilerplate/Bit.Boilerplate/.template.config/template.json
+++ b/src/Templates/Boilerplate/Bit.Boilerplate/.template.config/template.json
@@ -129,44 +129,50 @@
"datatype": "bool",
"defaultValue": "true"
},
- "nameToLower":{
- "type": "generated",
- "generator": "casing",
- "parameters": {
- "source" : "name",
- "toLower": true
- }
+ "appInsights": {
+ "displayName": "Add Azure application insights to project?",
+ "type": "parameter",
+ "datatype": "bool",
+ "defaultValue": "false"
+ },
+ "nameToLower": {
+ "type": "generated",
+ "generator": "casing",
+ "parameters": {
+ "source": "name",
+ "toLower": true
+ }
},
"nameToAppId": {
- "type": "generated",
- "generator": "regex",
- "dataType": "string",
- "parameters": {
- "source": "nameToLower",
- "steps": [
- {
- "regex": "[^a-z0-9_\\.]",
- "replacement": ""
- }
- ]
- }
+ "type": "generated",
+ "generator": "regex",
+ "dataType": "string",
+ "parameters": {
+ "source": "nameToLower",
+ "steps": [
+ {
+ "regex": "[^a-z0-9_\\.]",
+ "replacement": ""
+ }
+ ]
+ }
},
- "defaultAppId":{
- "type": "generated",
- "generator": "join",
- "parameters": {
- "symbols": [
- {
- "type": "const",
- "value": "com.companyname."
- },
- {
- "type": "ref",
- "value": "nameToAppId"
- }
- ]
- },
- "replaces": "com.bitplatform.template"
+ "defaultAppId": {
+ "type": "generated",
+ "generator": "join",
+ "parameters": {
+ "symbols": [
+ {
+ "type": "const",
+ "value": "com.companyname."
+ },
+ {
+ "type": "ref",
+ "value": "nameToAppId"
+ }
+ ]
+ },
+ "replaces": "com.bitplatform.template"
}
},
"postActions": [],
@@ -273,6 +279,13 @@
"src/Boilerplate.Server/AppSettings.cs",
"src/Boilerplate.Server/IdentityCertificate.pfx"
]
+ },
+ {
+ "condition": "(appInsights != true)",
+ "exclude": [
+ "src/Client/Boilerplate.Client.Maui/Services/MauiTelemetryInitializer.cs",
+ "src/Client/Boilerplate.Client.Windows/Services/WindowsTelemetryInitializer.cs"
+ ]
}
]
}
diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/global.json b/src/Templates/Boilerplate/Bit.Boilerplate/global.json
index a1a019dc9b..c3732ed59f 100644
--- a/src/Templates/Boilerplate/Bit.Boilerplate/global.json
+++ b/src/Templates/Boilerplate/Bit.Boilerplate/global.json
@@ -1,6 +1,6 @@
{
"sdk": {
- "version": "8.0.203",
+ "version": "8.0.204",
"rollForward": "disable"
}
}
\ No newline at end of file
diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Iac/AppStack.cs b/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Iac/AppStack.cs
index a2bd1d8e1c..090be0f4e2 100644
--- a/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Iac/AppStack.cs
+++ b/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Iac/AppStack.cs
@@ -134,18 +134,8 @@ public AppStack()
AppCommandLine = "dotnet Boilerplate.Server.dll",
AppSettings = new()
{
- new NameValuePairArgs { Name = "ApplicationInsights__InstrumentationKey", Value = appInsights.InstrumentationKey },
- new NameValuePairArgs { Name = "APPINSIGHTS_INSTRUMENTATIONKEY", Value = appInsights.InstrumentationKey },
new NameValuePairArgs { Name = "ASPNETCORE_ENVIRONMENT", Value = stackName == "test" ? "Test" : "Production" },
- new NameValuePairArgs { Name = "APPLICATIONINSIGHTS_CONNECTION_STRING", Value = appInsights.ConnectionString },
- new NameValuePairArgs { Name = "APPINSIGHTS_PROFILERFEATURE_VERSION", Value = "disabled" },
- new NameValuePairArgs { Name = "APPINSIGHTS_SNAPSHOTFEATURE_VERSION", Value = "disabled" },
- new NameValuePairArgs { Name = "ApplicationInsightsAgent_EXTENSION_VERSION", Value = "~3" },
- new NameValuePairArgs { Name = "XDT_MicrosoftApplicationInsights_BaseExtensions", Value = "~1" },
- new NameValuePairArgs { Name = "InstrumentationEngine_EXTENSION_VERSION", Value = "~1" },
- new NameValuePairArgs { Name = "SnapshotDebugger_EXTENSION_VERSION", Value = "disabled"},
- new NameValuePairArgs { Name = "XDT_MicrosoftApplicationInsights_Mode", Value = "recommended" },
- new NameValuePairArgs { Name = "XDT_MicrosoftApplicationInsights_PreemptSdk", Value = "disabled" },
+ new NameValuePairArgs { Name = "APPLICATIONINSIGHTS_CONNECTIONSTRING", Value = appInsights.ConnectionString },
new NameValuePairArgs { Name = "AppSettings__EmailSettings__DefaultFromEmail", Value = defaultEmailFrom },
new NameValuePairArgs { Name = "AppSettings__EmailSettings__Host", Value = emailServerHost },
new NameValuePairArgs { Name = "AppSettings__EmailSettings__Port", Value = emailServerPort },
diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Iac/Boilerplate.Iac.csproj b/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Iac/Boilerplate.Iac.csproj
index 3d8de694bb..3b8006c015 100644
--- a/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Iac/Boilerplate.Iac.csproj
+++ b/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Iac/Boilerplate.Iac.csproj
@@ -6,7 +6,7 @@
-
+
diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Server/.config/dotnet-tools.json b/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Server/.config/dotnet-tools.json
index d9d129ce7f..677ed3f77a 100644
--- a/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Server/.config/dotnet-tools.json
+++ b/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Server/.config/dotnet-tools.json
@@ -3,7 +3,7 @@
"isRoot": true,
"tools": {
"dotnet-ef": {
- "version": "8.0.3",
+ "version": "8.0.4",
"commands": [
"dotnet-ef"
]
diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Server/Boilerplate.Server.csproj b/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Server/Boilerplate.Server.csproj
index df9de7c001..e85bdaa0b3 100644
--- a/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Server/Boilerplate.Server.csproj
+++ b/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Server/Boilerplate.Server.csproj
@@ -6,9 +6,10 @@
-
-
-
+
+
+
+
@@ -20,24 +21,24 @@
-
-
-
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Server/Program.Middlewares.cs b/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Server/Program.Middlewares.cs
index 70698c688d..55a88f863f 100644
--- a/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Server/Program.Middlewares.cs
+++ b/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Server/Program.Middlewares.cs
@@ -11,6 +11,7 @@
using Microsoft.AspNetCore.Diagnostics.HealthChecks;
using HealthChecks.UI.Client;
//#endif
+using Microsoft.Net.Http.Headers;
namespace Boilerplate.Server;
@@ -71,7 +72,7 @@ public static void ConfiureMiddlewares(this WebApplication app)
//#if (api == true)
// 0.0.0.0 origins are essential for the proper functioning of BlazorHybrid's WebView, while localhost:4030 is a prerequisite for BlazorWebAssemblyStandalone testing.
app.UseCors(options => options.WithOrigins("https://0.0.0.0", "app://0.0.0.0", "http://localhost:4030")
- .AllowAnyHeader().AllowAnyMethod());
+ .AllowAnyHeader().AllowAnyMethod().WithExposedHeaders(HeaderNames.RequestId));
//#endif
app.UseAuthentication();
diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Server/Program.Services.cs b/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Server/Program.Services.cs
index dbcc20e140..fc612befbd 100644
--- a/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Server/Program.Services.cs
+++ b/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Server/Program.Services.cs
@@ -51,6 +51,10 @@ private static void ConfigureServices(this WebApplicationBuilder builder)
.Configure(opt => opt.Level = CompressionLevel.Fastest)
.Configure(opt => opt.Level = CompressionLevel.Fastest);
+ //#if (appInsights == true)
+ services.AddApplicationInsightsTelemetry(configuration);
+ //#endif
+
//#if (api == true)
var appSettings = configuration.GetSection(nameof(AppSettings)).Get()!;
@@ -77,7 +81,7 @@ private static void ConfigureServices(this WebApplicationBuilder builder)
//#if (database == "SqlServer")
options.UseSqlServer(configuration.GetConnectionString("SqlServerConnectionString"), dbOptions =>
{
-
+
});
//#endif
//#if (IsInsideProjectTemplate == true)
@@ -86,7 +90,7 @@ private static void ConfigureServices(this WebApplicationBuilder builder)
//#if (database == "Sqlite")
options.UseSqlite(configuration.GetConnectionString("SqliteConnectionString"), dbOptions =>
{
-
+
});
//#endif
});
@@ -136,9 +140,9 @@ private static void ConfigureServices(this WebApplicationBuilder builder)
}
}
- AddBlazor(builder);
-
//#endif
+
+ AddBlazor(builder);
}
private static void AddBlazor(WebApplicationBuilder builder)
@@ -169,7 +173,7 @@ private static void AddBlazor(WebApplicationBuilder builder)
services.AddMvc();
- services.AddClientWebProjectServices();
+ services.AddClientWebProjectServices();
}
//#if (api == true)
diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Server/Properties/launchSettings.json b/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Server/Properties/launchSettings.json
index 890ab27e9a..bf587a84a1 100644
--- a/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Server/Properties/launchSettings.json
+++ b/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Server/Properties/launchSettings.json
@@ -1,6 +1,5 @@
{
"profiles": {
- //#if (api == true)
"Boilerplate.Server": {
"commandName": "Project",
"launchBrowser": true,
@@ -10,7 +9,7 @@
"dotnetRunMessages": true,
"applicationUrl": "http://localhost:5030"
},
- //#else
+ //#if (api == true)
"Boilerplate.Server-Swagger": {
"commandName": "Project",
"launchBrowser": true,
@@ -35,7 +34,7 @@
"WSL": {
"commandName": "WSL2",
"launchBrowser": true,
- "launchUrl": "http://localhost:5030/swagger",
+ "launchUrl": "http://localhost:5030/",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"ASPNETCORE_URLS": "http://localhost:5030"
@@ -44,7 +43,7 @@
"Docker": {
"commandName": "SdkContainer",
"launchBrowser": true,
- "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/swagger",
+ "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/",
"environmentVariables": {
"ASPNETCORE_HTTP_PORTS": "5030"
},
diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Shared/Boilerplate.Shared.csproj b/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Shared/Boilerplate.Shared.csproj
index 30be58e4c7..467015acbb 100644
--- a/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Shared/Boilerplate.Shared.csproj
+++ b/src/Templates/Boilerplate/Bit.Boilerplate/src/Boilerplate.Shared/Boilerplate.Shared.csproj
@@ -5,15 +5,17 @@
-
-
-
+
+
+
-
+
-
+
+ compile; build; native; contentfiles; analyzers; buildtransitive
+
diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Boilerplate.Client.Core.csproj b/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Boilerplate.Client.Core.csproj
index d33c84805d..33f1d00f92 100644
--- a/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Boilerplate.Client.Core.csproj
+++ b/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Boilerplate.Client.Core.csproj
@@ -16,19 +16,21 @@
-
-
-
-
+
+
+
+
-
-
+
+
+
-
-
-
-
-
+
+
+
+
+
+
diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Components/AuthenticationStateLogger.cs b/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Components/AuthenticationStateLogger.cs
new file mode 100644
index 0000000000..de696e3c18
--- /dev/null
+++ b/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Components/AuthenticationStateLogger.cs
@@ -0,0 +1,32 @@
+using Microsoft.Extensions.Logging;
+
+namespace Boilerplate.Client.Core.Components;
+public partial class AuthenticationStateLogger : AppComponentBase
+{
+ [AutoInject] private ILogger authLogger = default!;
+
+ protected async override Task OnInitAsync()
+ {
+ AuthenticationManager.AuthenticationStateChanged += LogAuthenticationState;
+
+ LogAuthenticationState(AuthenticationManager.GetAuthenticationStateAsync());
+
+ await base.OnInitAsync();
+ }
+
+ private async void LogAuthenticationState(Task task)
+ {
+ try
+ {
+ var user = (await AuthenticationStateTask).User;
+
+ var (userId, userName, isUserAuthenticated) = user.IsAuthenticated() ? (user.GetUserId().ToString(), user.GetUserName(), user.IsAuthenticated()) : default;
+
+ authLogger.LogInformation("Authentication State: {UserId}, {UserName}, {IsUserAuthenticated}", userId, userName, isUserAuthenticated);
+ }
+ catch (Exception exp)
+ {
+ ExceptionHandler.Handle(exp);
+ }
+ }
+}
diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Components/Layout/Footer.razor b/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Components/Layout/Footer.razor
index 6ddff23cbb..a2a0524141 100644
--- a/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Components/Layout/Footer.razor
+++ b/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Components/Layout/Footer.razor
@@ -1,40 +1,42 @@
@inherits AppComponentBase