+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
+ amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
+ sagittis nunc, ut interdum ipsum vestibulum non. Proin dolor elit, aliquam eget tincidunt non, vestibulum ut
+ turpis.
+
+
+
+
+
+
+
+ Open ProPanel with HeaderText
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
+ amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
+ sagittis nunc, ut interdum ipsum vestibulum non. Proin dolor elit, aliquam eget tincidunt non, vestibulum ut
+ turpis. In hac habitasse platea dictumst. In a odio eget enim porttitor maximus. Aliquam nulla nibh,
+ ullamcorper aliquam placerat eu, viverra et dui. Phasellus ex lectus, maximus in mollis ac, luctus vel eros.
+ Vivamus ultrices, turpis sed malesuada gravida, eros ipsum venenatis elit, et volutpat eros dui et ante.
+ Quisque ultricies mi nec leo ultricies mollis. Vivamus egestas volutpat lacinia. Quisque pharetra eleifend
+ efficitur.
+
+
+
+ Open ProPanel with Header
+
+
+
+
BitProPanel with Header
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
+ amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
+ sagittis nunc, ut interdum ipsum vestibulum non. Proin dolor elit, aliquam eget tincidunt non, vestibulum ut
+ turpis. In hac habitasse platea dictumst. In a odio eget enim porttitor maximus. Aliquam nulla nibh,
+ ullamcorper aliquam placerat eu, viverra et dui. Phasellus ex lectus, maximus in mollis ac, luctus vel eros.
+ Vivamus ultrices, turpis sed malesuada gravida, eros ipsum venenatis elit, et volutpat eros dui et ante.
+ Quisque ultricies mi nec leo ultricies mollis. Vivamus egestas volutpat lacinia. Quisque pharetra eleifend
+ efficitur.
+
+
+
+
+ Open ProPanel with FooterText
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
+ amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
+ sagittis nunc, ut interdum ipsum vestibulum non. Proin dolor elit, aliquam eget tincidunt non, vestibulum ut
+ turpis. In hac habitasse platea dictumst. In a odio eget enim porttitor maximus. Aliquam nulla nibh,
+ ullamcorper aliquam placerat eu, viverra et dui. Phasellus ex lectus, maximus in mollis ac, luctus vel eros.
+ Vivamus ultrices, turpis sed malesuada gravida, eros ipsum venenatis elit, et volutpat eros dui et ante.
+ Quisque ultricies mi nec leo ultricies mollis. Vivamus egestas volutpat lacinia. Quisque pharetra eleifend
+ efficitur.
+
+
+
+ Open ProPanel with Footer
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
+ amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
+ sagittis nunc, ut interdum ipsum vestibulum non. Proin dolor elit, aliquam eget tincidunt non, vestibulum ut
+ turpis. In hac habitasse platea dictumst. In a odio eget enim porttitor maximus. Aliquam nulla nibh,
+ ullamcorper aliquam placerat eu, viverra et dui. Phasellus ex lectus, maximus in mollis ac, luctus vel eros.
+ Vivamus ultrices, turpis sed malesuada gravida, eros ipsum venenatis elit, et volutpat eros dui et ante.
+ Quisque ultricies mi nec leo ultricies mollis. Vivamus egestas volutpat lacinia. Quisque pharetra eleifend
+ efficitur.
+
+
+
+
+
+
+
+
+
+
BitProPanel has some advanced options to be customized.
+
+ Open ProPanel with ShowCloseButton
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
+ amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
+ sagittis nunc, ut interdum ipsum vestibulum non.
+
+
+
+ Open ProPanel with Blocking
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
+ amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
+ sagittis nunc, ut interdum ipsum vestibulum non.
+
+
+
+ Open ProPanel with Modeless
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
+ amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
+ sagittis nunc, ut interdum ipsum vestibulum non.
+
+
+
+ Open ProPanel with ModeFull
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
+ amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
+ sagittis nunc, ut interdum ipsum vestibulum non.
+
+
+
+ Open ProPanel with AutoToggleScroll
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
+ amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
+ sagittis nunc, ut interdum ipsum vestibulum non.
+
+
+
+
+
+
+
+
To set the Panel position on the page you can use the Position parameter.
+
+
+
+
+ Start
+ End
+
+
+ Top
+ Bottom
+
+
+
+
+ BitProPanel with Start position and custom Size.
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
+ amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
+ sagittis nunc, ut interdum ipsum vestibulum non. Proin dolor elit, aliquam eget tincidunt non, vestibulum ut
+ turpis.
+
+
+
+ BitProPanel with End position and custom Size.
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
+ amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
+ sagittis nunc, ut interdum ipsum vestibulum non. Proin dolor elit, aliquam eget tincidunt non, vestibulum ut
+ turpis.
+
+
+
+ BitProPanel with Top position and custom Size.
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
+ amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
+ sagittis nunc, ut interdum ipsum vestibulum non. Proin dolor elit, aliquam eget tincidunt non, vestibulum ut
+ turpis.
+
+
+
+ BitProPanel with Bottom position and custom Size.
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
+ amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
+ sagittis nunc, ut interdum ipsum vestibulum non. Proin dolor elit, aliquam eget tincidunt non, vestibulum ut
+ turpis.
+
+
+
+
+
+
+
Explore styling and class customization for BitProPanel, including component styles, custom classes, and detailed styles.
+
+
Component's Style & Class:
+ Open Styled ProPanel
+
+ BitProPanel with custom style.
+
+
+ Open Classed ProPanel
+
+ BitProPanel with custom class:
+
Item 1
+
Item 2
+
Item 3
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
+ amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
+ sagittis nunc, ut interdum ipsum vestibulum non. Proin dolor elit, aliquam eget tincidunt non, vestibulum ut
+ turpis.
+
+
+
+
Styles & Classes:
+ Open ProPanel Styles
+
+ BitProPanel with Styles to customize its elements.
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
+ amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
+ sagittis nunc, ut interdum ipsum vestibulum non. Proin dolor elit, aliquam eget tincidunt non, vestibulum ut
+ turpis.
+
+
+
+ Open ProPanel Classes
+
+ BitProPanel with Classes to customize its elements.
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
+ amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
+ sagittis nunc, ut interdum ipsum vestibulum non. Proin dolor elit, aliquam eget tincidunt non, vestibulum ut
+ turpis.
+
+
+
+
+
+
+
+
Use BitProPanel in right-to-left (RTL).
+
+
+
+
+ آغاز
+ پایان
+
+
+
+
+
+ لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است.
+ چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی مورد نیاز و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد.
+ کتابهای زیادی در شصت و سه درصد گذشته، حال و آینده شناخت فراوان جامعه و متخصصان را می طلبد تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی و فرهنگ پیشرو در زبان فارسی ایجاد کرد.
+ در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها و شرایط سخت تایپ به پایان رسد وزمان مورد نیاز شامل حروفچینی دستاوردهای اصلی و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.
+
+
+
+
+
+ لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است.
+ چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی مورد نیاز و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد.
+ کتابهای زیادی در شصت و سه درصد گذشته، حال و آینده شناخت فراوان جامعه و متخصصان را می طلبد تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی و فرهنگ پیشرو در زبان فارسی ایجاد کرد.
+ در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها و شرایط سخت تایپ به پایان رسد وزمان مورد نیاز شامل حروفچینی دستاوردهای اصلی و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Extras/ProPanel/BitProPanelDemo.razor.cs b/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Extras/ProPanel/BitProPanelDemo.razor.cs
new file mode 100644
index 0000000000..7cac770d07
--- /dev/null
+++ b/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Extras/ProPanel/BitProPanelDemo.razor.cs
@@ -0,0 +1,621 @@
+namespace Bit.BlazorUI.Demo.Client.Core.Pages.Components.Extras.ProPanel;
+
+public partial class BitProPanelDemo
+{
+ private readonly List componentParameters =
+ [
+ new()
+ {
+ Name = "AutoToggleScroll",
+ Type = "bool",
+ DefaultValue = "false",
+ Description = "Enables the auto scrollbar toggle behavior of the panel.",
+ },
+ new()
+ {
+ Name = "Body",
+ Type = "RenderFragment?",
+ DefaultValue = "null",
+ Description = "The alias of the ChildContent.",
+ },
+ new()
+ {
+ Name = "Blocking",
+ Type = "bool",
+ DefaultValue = "false",
+ Description = "Whether the panel can be dismissed by clicking outside of it on the overlay.",
+ },
+ new()
+ {
+ Name = "ChildContent",
+ Type = "RenderFragment?",
+ DefaultValue = "null",
+ Description = "The content of the panel.",
+ },
+ new()
+ {
+ Name = "Classes",
+ Type = "BitProPanelClassStyles?",
+ DefaultValue = "null",
+ Description = "Custom CSS classes for different parts of the panel.",
+ Href = "#class-styles",
+ LinkType = LinkType.Link,
+ },
+ new()
+ {
+ Name = "Footer",
+ Type = "RenderFragment?",
+ DefaultValue = "null",
+ Description = "The template used to render the footer section of the panel.",
+ },
+ new()
+ {
+ Name = "FooterText",
+ Type = "string?",
+ DefaultValue = "null",
+ Description = "The text of the footer section of the panel.",
+ },
+ new()
+ {
+ Name = "Header",
+ Type = "RenderFragment?",
+ DefaultValue = "null",
+ Description = "The template used to render the header section of the panel.",
+ },
+ new()
+ {
+ Name = "HeaderText",
+ Type = "string?",
+ DefaultValue = "null",
+ Description = "The text of the header section of the panel.",
+ },
+ new()
+ {
+ Name = "IsOpen",
+ Type = "bool",
+ DefaultValue = "false",
+ Description = "Determines the openness of the panel.",
+ },
+ new()
+ {
+ Name = "ModeFull",
+ Type = "bool",
+ DefaultValue = "false",
+ Description = "Renders the overlay in full mode that gives it an opaque background.",
+ },
+ new()
+ {
+ Name = "Modeless",
+ Type = "bool",
+ DefaultValue = "false",
+ Description = "Removes the overlay element of the panel.",
+ },
+ new()
+ {
+ Name = "OnDismiss",
+ Type = "EventCallback",
+ Description = "A callback function for when the Panel is dismissed.",
+ },
+ new()
+ {
+ Name = "OnSwipeStart",
+ Type = "EventCallback",
+ Description = "The event callback for when the swipe action starts on the container of the panel.",
+ },
+ new()
+ {
+ Name = "OnSwipeMove",
+ Type = "EventCallback",
+ Description = "The event callback for when the swipe action moves on the container of the panel.",
+ },
+ new()
+ {
+ Name = "OnSwipeEnd",
+ Type = "EventCallback",
+ Description = "The event callback for when the swipe action ends on the container of the panel.",
+ },
+ new()
+ {
+ Name = "Position",
+ Type = "BitPanelPosition?",
+ DefaultValue = "null",
+ Description = "The position of the panel to show on the screen.",
+ Href = "#position-enum",
+ LinkType = LinkType.Link,
+ },
+ new()
+ {
+ Name = "Size",
+ Type = "double?",
+ DefaultValue = "null",
+ Description = "The value of the height or width (based on the position) of the Panel.",
+ },
+ new()
+ {
+ Name = "ScrollerSelector",
+ Type = "string",
+ DefaultValue = "null",
+ Description = "Specifies the element selector for which the Panel disables its scroll if applicable.",
+ },
+ new()
+ {
+ Name = "ShowCloseButton",
+ Type = "bool",
+ DefaultValue = "false",
+ Description = "Shows the close button of the Panel.",
+ },
+ new()
+ {
+ Name = "Styles",
+ Type = "BitProPanelClassStyles?",
+ DefaultValue = "null",
+ Description = "Custom CSS styles for different parts of the panel component.",
+ Href = "#class-styles",
+ LinkType = LinkType.Link,
+ },
+ new()
+ {
+ Name = "SwipeTrigger",
+ Type = "decimal?",
+ DefaultValue = "null",
+ Description = "The swiping point (difference percentage) based on the width of the panel container to trigger the close action (default is 0.25m).",
+ },
+ ];
+
+ private readonly List componentSubClasses =
+ [
+ new()
+ {
+ Id = "class-styles",
+ Title = "BitProPanelClassStyles",
+ Parameters =
+ [
+ new()
+ {
+ Name = "Root",
+ Type = "string?",
+ DefaultValue = "null",
+ Description = "Custom CSS classes/styles for the root element of the BitProPanel."
+ },
+ new()
+ {
+ Name = "Overlay",
+ Type = "string?",
+ DefaultValue = "null",
+ Description = "Custom CSS classes/styles for the overlay of the BitProPanel."
+ },
+ new()
+ {
+ Name = "Container",
+ Type = "string?",
+ DefaultValue = "null",
+ Description = "Custom CSS classes/styles for the container of the BitProPanel."
+ },
+ new()
+ {
+ Name = "HeaderContainer",
+ Type = "string?",
+ DefaultValue = "null",
+ Description = "Custom CSS classes/styles for the header container of the BitProPanel."
+ },
+ new()
+ {
+ Name = "Header",
+ Type = "string?",
+ DefaultValue = "null",
+ Description = "Custom CSS classes/styles for the header of the BitProPanel."
+ },
+ new()
+ {
+ Name = "CloseButton",
+ Type = "string?",
+ DefaultValue = "null",
+ Description = "Custom CSS classes/styles for the close button of the BitProPanel."
+ },
+ new()
+ {
+ Name = "CloseIcon",
+ Type = "string?",
+ DefaultValue = "null",
+ Description = "Custom CSS classes/styles for the close icon of the BitProPanel."
+ },
+ new()
+ {
+ Name = "Body",
+ Type = "string?",
+ DefaultValue = "null",
+ Description = "Custom CSS classes/styles for the body of the BitProPanel."
+ },
+ new()
+ {
+ Name = "Footer",
+ Type = "string?",
+ DefaultValue = "null",
+ Description = "Custom CSS classes/styles for the footer container of the BitProPanel."
+ }
+ ]
+ }
+ ];
+
+ private readonly List componentSubEnums =
+ [
+ new()
+ {
+ Id = "position-enum",
+ Name = "BitPanelPosition",
+ Description = "",
+ Items =
+ [
+ new() { Name = "Start", Value = "0" },
+ new() { Name = "End", Value = "1" },
+ new() { Name = "Top", Value = "2" },
+ new() { Name = "Bottom", Value = "3" }
+ ]
+ }
+ ];
+
+
+
+ private bool isBasicProPanelOpen;
+
+ private bool isProPanelWithHeaderTextOpen;
+ private bool isProPanelWithHeaderOpen;
+ private bool isProPanelWithFooterTextOpen;
+ private bool isProPanelWithFooterOpen;
+
+ private bool isBlockingProPanelOpen;
+ private bool isModelessProPanelOpen;
+ private bool isModeFullProPanelOpen;
+ private bool isAutoToggleScrollProPanelOpen;
+ private BitProPanel bitProPanelRef = default!;
+
+ private double customProPanelSize = 300;
+ private bool isStartProPanelOpen;
+ private bool isEndProPanelOpen;
+ private bool isTopProPanelOpen;
+ private bool isBottomProPanelOpen;
+
+ private bool isStyledProPanelOpen;
+ private bool isClassedProPanelOpen;
+ private bool isProPanelStylesOpen;
+ private bool isProPanelClassesOpen;
+
+ private bool isRtlProPanelOpenStart;
+ private bool isRtlProPanelOpenEnd;
+
+
+
+ private readonly string example1RazorCode = @"
+ isBasicProPanelOpen = true"">Open ProPanel
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
+ amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
+ sagittis nunc, ut interdum ipsum vestibulum non. Proin dolor elit, aliquam eget tincidunt non, vestibulum ut
+ turpis.
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
+ amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
+ sagittis nunc, ut interdum ipsum vestibulum non. Proin dolor elit, aliquam eget tincidunt non, vestibulum ut
+ turpis. In hac habitasse platea dictumst. In a odio eget enim porttitor maximus. Aliquam nulla nibh,
+ ullamcorper aliquam placerat eu, viverra et dui. Phasellus ex lectus, maximus in mollis ac, luctus vel eros.
+ Vivamus ultrices, turpis sed malesuada gravida, eros ipsum venenatis elit, et volutpat eros dui et ante.
+ Quisque ultricies mi nec leo ultricies mollis. Vivamus egestas volutpat lacinia. Quisque pharetra eleifend
+ efficitur.
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
+ amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
+ sagittis nunc, ut interdum ipsum vestibulum non. Proin dolor elit, aliquam eget tincidunt non, vestibulum ut
+ turpis. In hac habitasse platea dictumst. In a odio eget enim porttitor maximus. Aliquam nulla nibh,
+ ullamcorper aliquam placerat eu, viverra et dui. Phasellus ex lectus, maximus in mollis ac, luctus vel eros.
+ Vivamus ultrices, turpis sed malesuada gravida, eros ipsum venenatis elit, et volutpat eros dui et ante.
+ Quisque ultricies mi nec leo ultricies mollis. Vivamus egestas volutpat lacinia. Quisque pharetra eleifend
+ efficitur.
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
+ amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
+ sagittis nunc, ut interdum ipsum vestibulum non. Proin dolor elit, aliquam eget tincidunt non, vestibulum ut
+ turpis. In hac habitasse platea dictumst. In a odio eget enim porttitor maximus. Aliquam nulla nibh,
+ ullamcorper aliquam placerat eu, viverra et dui. Phasellus ex lectus, maximus in mollis ac, luctus vel eros.
+ Vivamus ultrices, turpis sed malesuada gravida, eros ipsum venenatis elit, et volutpat eros dui et ante.
+ Quisque ultricies mi nec leo ultricies mollis. Vivamus egestas volutpat lacinia. Quisque pharetra eleifend
+ efficitur.
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
+ amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
+ sagittis nunc, ut interdum ipsum vestibulum non. Proin dolor elit, aliquam eget tincidunt non, vestibulum ut
+ turpis. In hac habitasse platea dictumst. In a odio eget enim porttitor maximus. Aliquam nulla nibh,
+ ullamcorper aliquam placerat eu, viverra et dui. Phasellus ex lectus, maximus in mollis ac, luctus vel eros.
+ Vivamus ultrices, turpis sed malesuada gravida, eros ipsum venenatis elit, et volutpat eros dui et ante.
+ Quisque ultricies mi nec leo ultricies mollis. Vivamus egestas volutpat lacinia. Quisque pharetra eleifend
+ efficitur.
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
+ amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
+ sagittis nunc, ut interdum ipsum vestibulum non.
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
+ amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
+ sagittis nunc, ut interdum ipsum vestibulum non.
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
+ amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
+ sagittis nunc, ut interdum ipsum vestibulum non.
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
+ amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
+ sagittis nunc, ut interdum ipsum vestibulum non.
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
+ amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
+ sagittis nunc, ut interdum ipsum vestibulum non.
+
+";
+ private readonly string example3CsharpCode = @"
+private bool isBlockingProPanelOpen;
+private bool isModelessProPanelOpen;
+private bool isModeFullProPanelOpen;
+private bool isAutoToggleScrollProPanelOpen;
+private BitProPanel bitProPanelRef = default!;";
+
+ private readonly string example4RazorCode = @"
+
+
+ isStartProPanelOpen = true"">Start
+ isEndProPanelOpen = true"">End
+
+ isTopProPanelOpen = true"">Top
+ isBottomProPanelOpen = true"">Bottom
+
+
+
+ BitProPanel with Start position and custom Size.
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
+ amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
+ sagittis nunc, ut interdum ipsum vestibulum non. Proin dolor elit, aliquam eget tincidunt non, vestibulum ut
+ turpis.
+
+
+
+ BitProPanel with End position and custom Size.
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
+ amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
+ sagittis nunc, ut interdum ipsum vestibulum non. Proin dolor elit, aliquam eget tincidunt non, vestibulum ut
+ turpis.
+
+
+
+ BitProPanel with Top position and custom Size.
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
+ amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
+ sagittis nunc, ut interdum ipsum vestibulum non. Proin dolor elit, aliquam eget tincidunt non, vestibulum ut
+ turpis.
+
+
+
+ BitProPanel with Bottom position and custom Size.
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
+ amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
+ sagittis nunc, ut interdum ipsum vestibulum non. Proin dolor elit, aliquam eget tincidunt non, vestibulum ut
+ turpis.
+";
+ private readonly string example4CsharpCode = @"
+private double customPanelSize = 300;
+private bool isOpenInPositionStart;
+private bool isOpenPositionEnd;
+private bool isOpenInPositionTop;
+private bool isOpenInPositionBottom;";
+
+ private readonly string example5RazorCode = @"
+
+
+ isStyledProPanelOpen = true"">Open Styled ProPanel
+
+ BitProPanel with custom style.
+
+
+ isClassedProPanelOpen = true"">Open Classed ProPanel
+
+ BitProPanel with custom class:
+
Item 1
+
Item 2
+
Item 3
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
+ amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
+ sagittis nunc, ut interdum ipsum vestibulum non. Proin dolor elit, aliquam eget tincidunt non, vestibulum ut
+ turpis.
+
+
+
+ isProPanelStylesOpen = true"">Open ProPanel Styles
+
+ BitProPanel with Styles to customize its elements.
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
+ amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
+ sagittis nunc, ut interdum ipsum vestibulum non. Proin dolor elit, aliquam eget tincidunt non, vestibulum ut
+ turpis.
+
+
+
+ isProPanelClassesOpen = true"">Open ProPanel Classes
+
+ BitProPanel with Classes to customize its elements.
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
+ amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
+ sagittis nunc, ut interdum ipsum vestibulum non. Proin dolor elit, aliquam eget tincidunt non, vestibulum ut
+ turpis.
+
+ لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است.
+ چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی مورد نیاز و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد.
+ کتابهای زیادی در شصت و سه درصد گذشته، حال و آینده شناخت فراوان جامعه و متخصصان را می طلبد تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی و فرهنگ پیشرو در زبان فارسی ایجاد کرد.
+ در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها و شرایط سخت تایپ به پایان رسد وزمان مورد نیاز شامل حروفچینی دستاوردهای اصلی و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.
+
+
+
+ لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است.
+ چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی مورد نیاز و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد.
+ کتابهای زیادی در شصت و سه درصد گذشته، حال و آینده شناخت فراوان جامعه و متخصصان را می طلبد تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی و فرهنگ پیشرو در زبان فارسی ایجاد کرد.
+ در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها و شرایط سخت تایپ به پایان رسد وزمان مورد نیاز شامل حروفچینی دستاوردهای اصلی و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
sagittis nunc, ut interdum ipsum vestibulum non. Proin dolor elit, aliquam eget tincidunt non, vestibulum ut
@@ -24,111 +24,43 @@
-
-
-
HeaderText:
- Open Panel
-
-
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
- amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
- sagittis nunc, ut interdum ipsum vestibulum non. Proin dolor elit, aliquam eget tincidunt non, vestibulum ut
- turpis. In hac habitasse platea dictumst. In a odio eget enim porttitor maximus. Aliquam nulla nibh,
- ullamcorper aliquam placerat eu, viverra et dui. Phasellus ex lectus, maximus in mollis ac, luctus vel eros.
- Vivamus ultrices, turpis sed malesuada gravida, eros ipsum venenatis elit, et volutpat eros dui et ante.
- Quisque ultricies mi nec leo ultricies mollis. Vivamus egestas volutpat lacinia. Quisque pharetra eleifend
- efficitur.
-
-
-
-
HeaderTemplate:
- Open Panel
-
-
-
-
BitPanel with custom header content
-
-
-
-
-
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
- amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
- sagittis nunc, ut interdum ipsum vestibulum non. Proin dolor elit, aliquam eget tincidunt non, vestibulum ut
- turpis. In hac habitasse platea dictumst. In a odio eget enim porttitor maximus. Aliquam nulla nibh,
- ullamcorper aliquam placerat eu, viverra et dui. Phasellus ex lectus, maximus in mollis ac, luctus vel eros.
- Vivamus ultrices, turpis sed malesuada gravida, eros ipsum venenatis elit, et volutpat eros dui et ante.
- Quisque ultricies mi nec leo ultricies mollis. Vivamus egestas volutpat lacinia. Quisque pharetra eleifend
- efficitur.
-
-
-
-
-
-
-
-
-
FooterTemplate:
- Open Panel
-
-
-
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
- amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
- sagittis nunc, ut interdum ipsum vestibulum non. Proin dolor elit, aliquam eget tincidunt non, vestibulum ut
- turpis. In hac habitasse platea dictumst. In a odio eget enim porttitor maximus. Aliquam nulla nibh,
- ullamcorper aliquam placerat eu, viverra et dui. Phasellus ex lectus, maximus in mollis ac, luctus vel eros.
- Vivamus ultrices, turpis sed malesuada gravida, eros ipsum venenatis elit, et volutpat eros dui et ante.
- Quisque ultricies mi nec leo ultricies mollis. Vivamus egestas volutpat lacinia. Quisque pharetra eleifend
- efficitur.
-
-
-
- Save
- Close
-
-
-
-
-
-
+
BitPanel has some advanced options to be customized.
-
ShowCloseButton:
- Open Panel
-
-
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
- amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
- sagittis nunc, ut interdum ipsum vestibulum non.
-
-
-
Blocking:
Open Panel
-
-
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
- amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
- sagittis nunc, ut interdum ipsum vestibulum non.
+
+
+
Blocking
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
+ amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
+ sagittis nunc, ut interdum ipsum vestibulum non.
+
+ Close
Modeless:
Open Panel
-
-
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
- amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
- sagittis nunc, ut interdum ipsum vestibulum non.
+
+
+
Modeless
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
+ amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
+ sagittis nunc, ut interdum ipsum vestibulum non.
+
+ Close
AutoToggleScroll:
Open Panel
-
-
+
+
+
AutoToggleScroll
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
sagittis nunc, ut interdum ipsum vestibulum non.
@@ -137,7 +69,7 @@
-
+
To set the Panel position on the page you can use the Position parameter.
@@ -153,69 +85,82 @@
-
- BitPanel with Start position and custom Size.
-
+
+
+ BitPanel with Start position and custom Size.
+
+
-
- BitPanel with End position and custom Size.
-
+
+
+ BitPanel with End position and custom Size.
+
+
- BitPanel with Top position and custom Size.
-
+
+ BitPanel with Top position and custom Size.
+
+
-
- BitPanel with Bottom position and custom Size.
-
+
+
+ BitPanel with Bottom position and custom Size.
+
+
-
+
Explore styling and class customization for BitPanel, including component styles, custom classes, and detailed styles.
Component's Style & Class:
Open Styled panel
-
- Open Classed panel
-
-
Styles & Classes:
- Open panel Styles
-
- Open panel Classes
-
- BitPanel with custom style.
+
+ BitPanel with custom style.
+
-
+
+ Open Classed panel
- BitPanel with custom class:
-
Item 1
-
Item 2
-
Item 3
+
+ BitPanel with custom class:
+
Item 1
+
Item 2
+
Item 3
+
-
-
+
+
Styles & Classes:
+ Open panel Styles
+
BitPanel with Styles to customize its elements.
-
+
+ Open panel Classes
+ Overlay = "custom-overlay" })">
BitPanel with Classes to customize its elements.
-
+
Use BitPanel in right-to-left (RTL).
@@ -227,8 +172,10 @@
-
-
+
+
لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است.
چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی مورد نیاز و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد.
کتابهای زیادی در شصت و سه درصد گذشته، حال و آینده شناخت فراوان جامعه و متخصصان را می طلبد تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی و فرهنگ پیشرو در زبان فارسی ایجاد کرد.
@@ -236,8 +183,10 @@
-
-
+
+
لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است.
چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی مورد نیاز و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد.
کتابهای زیادی در شصت و سه درصد گذشته، حال و آینده شناخت فراوان جامعه و متخصصان را می طلبد تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی و فرهنگ پیشرو در زبان فارسی ایجاد کرد.
diff --git a/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Surfaces/Panel/BitPanelDemo.razor.cs b/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Surfaces/Panel/BitPanelDemo.razor.cs
index f1d64e297e..ac7c61e7c0 100644
--- a/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Surfaces/Panel/BitPanelDemo.razor.cs
+++ b/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Surfaces/Panel/BitPanelDemo.razor.cs
@@ -35,27 +35,6 @@ public partial class BitPanelDemo
LinkType = LinkType.Link,
},
new()
- {
- Name = "FooterTemplate",
- Type = "RenderFragment?",
- DefaultValue = "null",
- Description = "The template used to render the footer section of the panel.",
- },
- new()
- {
- Name = "HeaderTemplate",
- Type = "RenderFragment?",
- DefaultValue = "null",
- Description = "The template used to render the header section of the panel.",
- },
- new()
- {
- Name = "HeaderText",
- Type = "string?",
- DefaultValue = "null",
- Description = "The text of the header section of the panel.",
- },
- new()
{
Name = "IsOpen",
Type = "bool",
@@ -117,13 +96,6 @@ public partial class BitPanelDemo
Description = "Specifies the element selector for which the Panel disables its scroll if applicable.",
},
new()
- {
- Name = "ShowCloseButton",
- Type = "bool",
- DefaultValue = "false",
- Description = "Shows the close button of the Panel.",
- },
- new()
{
Name = "Styles",
Type = "BitPanelClassStyles?",
@@ -133,26 +105,12 @@ public partial class BitPanelDemo
LinkType = LinkType.Link,
},
new()
- {
- Name = "SubtitleAriaId",
- Type = "string?",
- DefaultValue = "null",
- Description = "Specifies the id for the aria-describedby attribute of the panel.",
- },
- new()
{
Name = "SwipeTrigger",
Type = "decimal?",
DefaultValue = "null",
Description = "The swiping point (difference percentage) based on the width of the panel container to trigger the close action (default is 0.25m).",
},
- new()
- {
- Name = "TitleAriaId",
- Type = "string?",
- DefaultValue = "null",
- Description = "Specifies the id for the aria-labelledby attribute of the panel.",
- },
];
private readonly List componentSubClasses =
@@ -183,48 +141,6 @@ public partial class BitPanelDemo
Type = "string?",
DefaultValue = "null",
Description = "Custom CSS classes/styles for the container of the BitPanel."
- },
- new()
- {
- Name = "Header",
- Type = "string?",
- DefaultValue = "null",
- Description = "Custom CSS classes/styles for the header of the BitPanel."
- },
- new()
- {
- Name = "HeaderText",
- Type = "string?",
- DefaultValue = "null",
- Description = "Custom CSS classes/styles for the header text of the BitPanel."
- },
- new()
- {
- Name = "CloseButton",
- Type = "string?",
- DefaultValue = "null",
- Description = "Custom CSS classes/styles for the close button of the BitPanel."
- },
- new()
- {
- Name = "CloseIcon",
- Type = "string?",
- DefaultValue = "null",
- Description = "Custom CSS classes/styles for the close icon of the BitPanel."
- },
- new()
- {
- Name = "Body",
- Type = "string?",
- DefaultValue = "null",
- Description = "Custom CSS classes/styles for the body of the BitPanel."
- },
- new()
- {
- Name = "Footer",
- Type = "string?",
- DefaultValue = "null",
- Description = "Custom CSS classes/styles for the footer of the BitPanel."
}
]
}
@@ -251,15 +167,10 @@ public partial class BitPanelDemo
private bool isBasicPanelOpen;
- private bool isPanelWithHeaderTextOpen;
- private bool isPanelWithCustomHeaderOpen;
-
- private bool isPanelWithFooterOpen;
-
private bool isBlockingPanelOpen;
private bool isModelessPanelOpen;
+ private BitPanel modelessPanelRef = default!;
private bool isAutoToggleScrollPanelOpen;
- private BitPanel bitPanelRef = default!;
private double customPanelSize = 300;
private bool isOpenInPositionStart;
@@ -280,7 +191,7 @@ public partial class BitPanelDemo
private readonly string example1RazorCode = @"
isBasicPanelOpen = true"">Open Panel
-
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
sagittis nunc, ut interdum ipsum vestibulum non. Proin dolor elit, aliquam eget tincidunt non, vestibulum ut
@@ -291,111 +202,48 @@ public partial class BitPanelDemo
private bool isBasicPanelOpen;";
private readonly string example2RazorCode = @"
- isPanelWithHeaderTextOpen = true"">Open Panel
-
-
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
- amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
- sagittis nunc, ut interdum ipsum vestibulum non. Proin dolor elit, aliquam eget tincidunt non, vestibulum ut
- turpis. In hac habitasse platea dictumst. In a odio eget enim porttitor maximus. Aliquam nulla nibh,
- ullamcorper aliquam placerat eu, viverra et dui. Phasellus ex lectus, maximus in mollis ac, luctus vel eros.
- Vivamus ultrices, turpis sed malesuada gravida, eros ipsum venenatis elit, et volutpat eros dui et ante.
- Quisque ultricies mi nec leo ultricies mollis. Vivamus egestas volutpat lacinia. Quisque pharetra eleifend
- efficitur.
-
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
- sagittis nunc, ut interdum ipsum vestibulum non. Proin dolor elit, aliquam eget tincidunt non, vestibulum ut
- turpis. In hac habitasse platea dictumst. In a odio eget enim porttitor maximus. Aliquam nulla nibh,
- ullamcorper aliquam placerat eu, viverra et dui. Phasellus ex lectus, maximus in mollis ac, luctus vel eros.
- Vivamus ultrices, turpis sed malesuada gravida, eros ipsum venenatis elit, et volutpat eros dui et ante.
- Quisque ultricies mi nec leo ultricies mollis. Vivamus egestas volutpat lacinia. Quisque pharetra eleifend
- efficitur.
+ sagittis nunc, ut interdum ipsum vestibulum non.
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
- amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
- sagittis nunc, ut interdum ipsum vestibulum non. Proin dolor elit, aliquam eget tincidunt non, vestibulum ut
- turpis. In hac habitasse platea dictumst. In a odio eget enim porttitor maximus. Aliquam nulla nibh,
- ullamcorper aliquam placerat eu, viverra et dui. Phasellus ex lectus, maximus in mollis ac, luctus vel eros.
- Vivamus ultrices, turpis sed malesuada gravida, eros ipsum venenatis elit, et volutpat eros dui et ante.
- Quisque ultricies mi nec leo ultricies mollis. Vivamus egestas volutpat lacinia. Quisque pharetra eleifend
- efficitur.
-
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
- amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
- sagittis nunc, ut interdum ipsum vestibulum non.
-
-
-
- isBlockingPanelOpen = true"">Open Panel
-
-
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
- amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
- sagittis nunc, ut interdum ipsum vestibulum non.
+ isBlockingPanelOpen = false"">Close
isModelessPanelOpen = true"">Open Panel
-
-
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
- amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
- sagittis nunc, ut interdum ipsum vestibulum non.
+
+
+
Modeless
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
+ amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
+ sagittis nunc, ut interdum ipsum vestibulum non.
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas lorem nulla, malesuada ut sagittis sit
amet, vulputate in leo. Maecenas vulputate congue sapien eu tincidunt. Etiam eu sem turpis. Fusce tempor
sagittis nunc, ut interdum ipsum vestibulum non.
لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است.
چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی مورد نیاز و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد.
کتابهای زیادی در شصت و سه درصد گذشته، حال و آینده شناخت فراوان جامعه و متخصصان را می طلبد تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی و فرهنگ پیشرو در زبان فارسی ایجاد کرد.
در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها و شرایط سخت تایپ به پایان رسد وزمان مورد نیاز شامل حروفچینی دستاوردهای اصلی و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.
-
-
-
-
-
+
+
+
لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است.
چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی مورد نیاز و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد.
کتابهای زیادی در شصت و سه درصد گذشته، حال و آینده شناخت فراوان جامعه و متخصصان را می طلبد تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی و فرهنگ پیشرو در زبان فارسی ایجاد کرد.
در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها و شرایط سخت تایپ به پایان رسد وزمان مورد نیاز شامل حروفچینی دستاوردهای اصلی و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.
-
+
";
- private readonly string example7CsharpCode = @"
+ private readonly string example5CsharpCode = @"
private bool isRtlPanelOpenStart;
private bool isRtlPanelOpenEnd;";
}
diff --git a/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Surfaces/Panel/BitPanelDemo.razor.scss b/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Surfaces/Panel/BitPanelDemo.razor.scss
index a54db15c4f..99ecfa183f 100644
--- a/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Surfaces/Panel/BitPanelDemo.razor.scss
+++ b/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Components/Surfaces/Panel/BitPanelDemo.razor.scss
@@ -1,5 +1,10 @@
@import '../../../../Styles/abstracts/functions';
+.panel-body {
+ width: 300px;
+ padding: 1rem;
+}
+
.btn-container {
display: flex;
gap: rem2(16px);
@@ -19,21 +24,6 @@
}
::deep {
- .header-margin,
- .custom-header {
- margin-top: var(--bit-status-bar-height);
-
- @supports (-webkit-touch-callout: none) {
- margin-top: env(safe-area-inset-top);
- }
- }
-
- .footer-margin {
- @supports (-webkit-touch-callout: none) {
- margin-top: env(safe-area-inset-bottom);
- }
- }
-
.custom-class {
.item {
width: 3rem;
@@ -45,6 +35,7 @@
}
.custom-container {
+ padding: 1rem;
border: 0.25rem solid #0054C6;
border-end-start-radius: 1rem;
border-start-start-radius: 1rem;
@@ -53,14 +44,4 @@
.custom-overlay {
background-color: #ffbd5a66;
}
-
- .custom-header {
- padding-bottom: 1.25rem;
- background-color: tomato;
- }
-
- .custom-body {
- padding-top: 1.25rem;
- background-color: lightseagreen;
- }
}
diff --git a/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Home/ComponentsSection.razor b/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Home/ComponentsSection.razor
index bec34a5508..b3e28e6a15 100644
--- a/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Home/ComponentsSection.razor
+++ b/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Pages/Home/ComponentsSection.razor
@@ -253,6 +253,9 @@
PdfReader
+
+ ProPanel
+ ModalService
diff --git a/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Shared/NavMenu.razor.cs b/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Shared/NavMenu.razor.cs
index d1277d3a9f..84b6f10f89 100644
--- a/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Shared/NavMenu.razor.cs
+++ b/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Shared/NavMenu.razor.cs
@@ -156,6 +156,7 @@ public partial class NavMenu : IDisposable
new() { Text = "DataGrid", Url = "/components/datagrid", AdditionalUrls = ["/components/data-grid"] },
new() { Text = "Chart", Url = "/components/chart" },
new() { Text = "PdfReader", Url = "/components/pdfreader" },
+ new() { Text = "ProPanel", Url = "/components/propanel" },
new()
{
Text = "Services",
diff --git a/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/compilerconfig.json b/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/compilerconfig.json
index 1ea4c0c110..d9e1a8c69c 100644
--- a/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/compilerconfig.json
+++ b/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/compilerconfig.json
@@ -71,6 +71,12 @@
"minify": { "enabled": false },
"options": { "sourceMap": false }
},
+ {
+ "outputFile": "Pages/Components/Extras/ProPanel/BitProPanelDemo.razor.css",
+ "inputFile": "Pages/Components/Extras/ProPanel/BitProPanelDemo.razor.scss",
+ "minify": { "enabled": false },
+ "options": { "sourceMap": false }
+ },
{
"outputFile": "Pages/Components/Inputs/Calendar/BitCalendarDemo.razor.css",
"inputFile": "Pages/Components/Inputs/Calendar/BitCalendarDemo.razor.scss",
@@ -306,8 +312,8 @@
"options": { "sourceMap": false }
},
{
- "outputFile": "Pages/Components/Progress/ProgressBar/BitProgressDemo.razor.css",
- "inputFile": "Pages/Components/Progress/ProgressBar/BitProgressDemo.razor.scss",
+ "outputFile": "Pages/Components/Progress/Progress/BitProgressDemo.razor.css",
+ "inputFile": "Pages/Components/Progress/Progress/BitProgressDemo.razor.scss",
"minify": { "enabled": false },
"options": { "sourceMap": false }
},
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 99ac6451ab..bbfbad2c22 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
@@ -85,12 +85,12 @@
-
+ allruntime; build; native; contentfiles; analyzers; buildtransitive
-
+ allruntime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Web/Bit.BlazorUI.Demo.Client.Web.csproj b/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Web/Bit.BlazorUI.Demo.Client.Web.csproj
index 8060c97d67..c24a58d9d8 100644
--- a/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Web/Bit.BlazorUI.Demo.Client.Web.csproj
+++ b/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Web/Bit.BlazorUI.Demo.Client.Web.csproj
@@ -24,13 +24,13 @@
-
+
-
+ allruntime; build; native; contentfiles; analyzers; buildtransitive
-
+ allruntime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Web/wwwroot/service-worker.published.js b/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Web/wwwroot/service-worker.published.js
index cfbfd1795d..a71df9e01d 100644
--- a/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Web/wwwroot/service-worker.published.js
+++ b/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Web/wwwroot/service-worker.published.js
@@ -1,4 +1,4 @@
-// bit version: 9.1.0
+// bit version: 9.1.1
// https://github.com/bitfoundation/bitplatform/tree/develop/src/Bswup
self.assetsInclude = [];
diff --git a/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Windows/Bit.BlazorUI.Demo.Client.Windows.csproj b/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Windows/Bit.BlazorUI.Demo.Client.Windows.csproj
index 24e969f5e5..c6cec5e7bb 100644
--- a/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Windows/Bit.BlazorUI.Demo.Client.Windows.csproj
+++ b/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Windows/Bit.BlazorUI.Demo.Client.Windows.csproj
@@ -29,11 +29,11 @@
-
+ allruntime; build; native; contentfiles; analyzers; buildtransitive
-
+ allruntime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/src/BlazorUI/Demo/Directory.Build.props b/src/BlazorUI/Demo/Directory.Build.props
index e52d4f5ab9..48713529b8 100644
--- a/src/BlazorUI/Demo/Directory.Build.props
+++ b/src/BlazorUI/Demo/Directory.Build.props
@@ -1,4 +1,4 @@
-
+
13.0
diff --git a/src/Bswup/Bit.Bswup.Demo/wwwroot/service-worker.js b/src/Bswup/Bit.Bswup.Demo/wwwroot/service-worker.js
index d8f40d57ca..e4cd143d5d 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: 9.1.0
+// bit version: 9.1.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 f50b5994e1..0e948d764d 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: 9.1.0
+// bit version: 9.1.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 d57cef52cb..28c1936d01 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
@@ -6,9 +6,10 @@
enabletrueDefault
+
service-worker-assets.jsfalse
- true
+ false
diff --git a/src/Bswup/Bit.Bswup.NewDemo/Bit.Bswup.NewDemo/wwwroot/app.css b/src/Bswup/Bit.Bswup.NewDemo/Bit.Bswup.NewDemo.Client/wwwroot/app.css
similarity index 100%
rename from src/Bswup/Bit.Bswup.NewDemo/Bit.Bswup.NewDemo/wwwroot/app.css
rename to src/Bswup/Bit.Bswup.NewDemo/Bit.Bswup.NewDemo.Client/wwwroot/app.css
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 9eccddc18e..2ecbf8c7ba 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: 9.1.0
+// bit version: 9.1.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 ac617ee6d4..17c28f1961 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: 9.1.0
+// bit version: 9.1.1
self.assetsInclude = [];
self.assetsExclude = [
@@ -16,10 +16,7 @@ self.externalAssets = [
"url": "/"
},
{
- "url": "app.css"
- },
- {
- "url": "_framework/blazor.web.js?v=9.0.0"
+ "url": "_framework/blazor.web.js"
},
{
"url": "Bit.Bswup.NewDemo.styles.css"
diff --git a/src/Bswup/Bit.Bswup.NewDemo/Bit.Bswup.NewDemo/Program.cs b/src/Bswup/Bit.Bswup.NewDemo/Bit.Bswup.NewDemo/Program.cs
index 51ce46318f..ed51ad78fe 100644
--- a/src/Bswup/Bit.Bswup.NewDemo/Bit.Bswup.NewDemo/Program.cs
+++ b/src/Bswup/Bit.Bswup.NewDemo/Bit.Bswup.NewDemo/Program.cs
@@ -26,7 +26,6 @@
app.UseStaticFiles();
app.UseAntiforgery();
-app.MapStaticAssets();
app.MapRazorComponents()
.AddInteractiveServerRenderMode()
.AddInteractiveWebAssemblyRenderMode()
diff --git a/src/Bswup/Bit.Bswup/Scripts/bit-bswup.progress.ts b/src/Bswup/Bit.Bswup/Scripts/bit-bswup.progress.ts
index dfb7590b22..e983cbed8d 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'] = '9.1.0';
+window['bit-bswup.progress version'] = '9.1.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 a46c77029a..a0f9828c02 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'] = '9.1.0';
+self['bit-bswup.sw version'] = '9.1.1';
interface Window {
clients: any
@@ -24,6 +24,7 @@ interface Window {
errorTolerance: any
enableDiagnostics: any
enableFetchDiagnostics: any
+ disableHashlessAssetsUpdate: any
}
interface Event {
@@ -210,8 +211,8 @@ async function createAssetsCache(ignoreProgressReport = false) {
}
}
- let keys = await newCache.keys();
- const firstTime = keys.length === 0;
+ let newCacheKeys = await newCache.keys();
+ const firstTime = newCacheKeys.length === 0;
const passiveFirstTime = self.isPassive && firstTime
if (passiveFirstTime && self.disablePassiveFirstBoot) {
if (!ignoreProgressReport) {
@@ -251,23 +252,20 @@ async function createAssetsCache(ignoreProgressReport = false) {
const oldUrls = [];
const updatedAssets = [];
- for (let i = 0; i < keys.length; i++) {
- const key = keys[i];
+ for (let i = 0; i < newCacheKeys.length; i++) {
+ const key = newCacheKeys[i];
if (!key || !key.url) continue;
const lastIndex = key.url.lastIndexOf('.');
let url = lastIndex === -1 ? key.url : key.url.substring(0, lastIndex);
let hash = lastIndex === -1 ? '' : key.url.substring(lastIndex + 1);
- if (!hash.startsWith('sha256')) {
- url = key.url;
- hash = '';
- }
oldUrls.push({ url, hash });
+
const foundAsset = UNIQUE_ASSETS.find(a => url.endsWith(a.url));
if (!foundAsset) {
diag('*** removed oldUrl:', key.url);
newCache.delete(key.url);
- } else if (hash && hash !== foundAsset.hash) {
+ } else if ((hash && hash !== foundAsset.hash) || (!hash && !self.disableHashlessAssetsUpdate)) {
diag('*** updated oldUrl:', key.url);
newCache.delete(key.url);
updatedAssets.push(foundAsset);
@@ -341,11 +339,11 @@ function createCacheUrl(asset: any) {
function createNewAssetRequest(asset) {
let assetUrl;
if (asset.url === DEFAULT_URL && self.noPrerenderQuery) {
- assetUrl = `${asset.url}?${self.noPrerenderQuery}&v=${asset.hash || self.assetsManifest.version}`;
+ assetUrl = `${asset.url}?v=${asset.hash || self.assetsManifest.version}&${self.noPrerenderQuery}`;
} else {
assetUrl = `${asset.url}?v=${asset.hash || self.assetsManifest.version}`;
}
- const requestInit: RequestInit = asset.hash && self.enableIntegrityCheck
+ const requestInit: RequestInit = asset.hash && asset.hash.startsWith('sha') && self.enableIntegrityCheck
? { cache: 'no-store', integrity: asset.hash, headers: [['cache-control', 'public, max-age=3153600']] }
: { cache: 'no-store', headers: [['cache-control', 'public, max-age=3153600']] };
diff --git a/src/Bswup/Bit.Bswup/Scripts/bit-bswup.ts b/src/Bswup/Bit.Bswup/Scripts/bit-bswup.ts
index e3f51e86f8..fff156bdf3 100644
--- a/src/Bswup/Bit.Bswup/Scripts/bit-bswup.ts
+++ b/src/Bswup/Bit.Bswup/Scripts/bit-bswup.ts
@@ -1,5 +1,5 @@
const BitBswup = {} as any;
-BitBswup.version = window['bit-bswup version'] = '9.1.0';
+BitBswup.version = window['bit-bswup version'] = '9.1.1';
declare const Blazor: any;
diff --git a/src/Bswup/FullDemo/Client/wwwroot/service-worker.js b/src/Bswup/FullDemo/Client/wwwroot/service-worker.js
index 55007368db..79553ecfce 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: 9.1.0
+// bit version: 9.1.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 c2533a1abf..b6a3ad822b 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: 9.1.0
+// bit version: 9.1.1
self.assetsInclude = [];
self.assetsExclude = [/\.scp\.css$/, /weather\.json$/];
diff --git a/src/Bswup/README.md b/src/Bswup/README.md
index ed7afb36a0..0c8e83c3d9 100644
--- a/src/Bswup/README.md
+++ b/src/Bswup/README.md
@@ -160,4 +160,5 @@ The other settings are:
- `enableIntegrityCheck`: Enables the default integrity check available in browsers by setting the `integrity` attribute of the request object created in the service-worker to fetch the assets.
- `errorTolerance`: Determines how the Bswup should handle the errors while downloading assets. Possible values are: `strict`, `lax`, `config`.
- `enableDiagnostics`: Enables diagnostics by pushing service-worker logs to the browser console.
-- `enableFetchDiagnostics`: Enables fetch event diagnostics by pushing service-worker fetch event logs to the browser console.
\ No newline at end of file
+- `enableFetchDiagnostics`: Enables fetch event diagnostics by pushing service-worker fetch event logs to the browser console.
+- `disableHashlessAssetsUpdate`: Disables the update of the hash-less assets. By default, the Bswup tries to automatically update all of the hash-less assets (e.g. the external assets) every time an update found for the app.
\ No newline at end of file
diff --git a/src/Bup/Bit.Bup/Scripts/bit-bup.progress.ts b/src/Bup/Bit.Bup/Scripts/bit-bup.progress.ts
index 059059357e..e4a1a00937 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'] = '9.1.0';
+window['bit-bup.progress version'] = '9.1.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 3277a2cea7..7e7f345e31 100644
--- a/src/Bup/Bit.Bup/Scripts/bit-bup.ts
+++ b/src/Bup/Bit.Bup/Scripts/bit-bup.ts
@@ -1,5 +1,5 @@
var BitBup = BitBup || {};
-BitBup.version = window['bit-bup version'] = '9.1.0';
+BitBup.version = window['bit-bup version'] = '9.1.1';
declare const Blazor: any;
diff --git a/src/Butil/Bit.Butil/Scripts/butil.ts b/src/Butil/Bit.Butil/Scripts/butil.ts
index d2e1883010..6155d41e06 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'] = '9.1.0';
\ No newline at end of file
+BitButil.version = window['bit-butil version'] = '9.1.1';
\ No newline at end of file
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 1968c78056..40a7ff0f34 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 @@
-
+
@@ -17,14 +17,14 @@
-
+
-
+ allruntime; build; native; contentfiles; analyzers; buildtransitive
-
+ allruntime; 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 b3aa7b5dcc..3fe47d656f 100644
--- a/src/Templates/BlazorEmpty/Bit.BlazorEmpty/BlazorEmpty/BlazorEmpty.csproj
+++ b/src/Templates/BlazorEmpty/Bit.BlazorEmpty/BlazorEmpty/BlazorEmpty.csproj
@@ -1,4 +1,4 @@
-
+
@@ -19,14 +19,14 @@
-
+
-
+ allruntime; build; native; contentfiles; analyzers; buildtransitive
-
+ allruntime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/src/Templates/BlazorEmpty/Bit.BlazorEmpty/BlazorEmpty/Components/Layout/Header.razor b/src/Templates/BlazorEmpty/Bit.BlazorEmpty/BlazorEmpty/Components/Layout/Header.razor
index 8c41bab998..51962c808c 100644
--- a/src/Templates/BlazorEmpty/Bit.BlazorEmpty/BlazorEmpty/Components/Layout/Header.razor
+++ b/src/Templates/BlazorEmpty/Bit.BlazorEmpty/BlazorEmpty/Components/Layout/Header.razor
@@ -17,7 +17,7 @@
-
+
diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Components/Pages/Authorized/Settings/SessionsSection.razor b/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Components/Pages/Authorized/Settings/SessionsSection.razor
index aedc82200b..4efab54dff 100644
--- a/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Components/Pages/Authorized/Settings/SessionsSection.razor
+++ b/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Components/Pages/Authorized/Settings/SessionsSection.razor
@@ -1,7 +1,5 @@
@inherits AppComponentBase
-
-
@if (isLoading)
diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Components/Pages/Authorized/Settings/SessionsSection.razor.cs b/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Components/Pages/Authorized/Settings/SessionsSection.razor.cs
index 2fb5d51e7e..df400150e1 100644
--- a/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Components/Pages/Authorized/Settings/SessionsSection.razor.cs
+++ b/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Components/Pages/Authorized/Settings/SessionsSection.razor.cs
@@ -8,7 +8,6 @@ public partial class SessionsSection
{
private bool isLoading;
private Guid? currentSessionId;
- private bool hasRevokedAnySession;
private UserSessionDto? currentSession;
private List revokingSessionIds = [];
private UserSessionDto[] otherSessions = [];
@@ -63,7 +62,6 @@ private async Task RevokeSession(UserSessionDto session)
if (await AuthManager.TryEnterElevatedAccessMode(CurrentCancellationToken))
{
await userController.RevokeSession(session.Id, CurrentCancellationToken);
- hasRevokedAnySession = true;
SnackBarService.Success(Localizer[nameof(AppStrings.RemoveSessionSuccessMessage)]);
await LoadSessions();
}
@@ -106,13 +104,4 @@ private string GetLastSeenOn(DateTimeOffset renewedOn)
: DateTimeOffset.UtcNow - renewedOn < TimeSpan.FromMinutes(15) ? Localizer[nameof(AppStrings.Recently)]
: renewedOn.ToLocalTime().ToString("g");
}
-
- private async Task OnBeforeInternalNavigation(LocationChangingContext context)
- {
- if (hasRevokedAnySession && await AuthorizationService.AuthorizeAsync((await AuthenticationStateTask).User, AuthPolicies.PRIVILEGED_ACCESS) is { Succeeded: false })
- {
- // Refreshing the token to check if the user session can now be privileged.
- await AuthManager.RefreshToken("CheckPrivilege");
- }
- }
}
diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Services/ModalData.cs b/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Services/ModalData.cs
deleted file mode 100644
index 0c33cba671..0000000000
--- a/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Services/ModalData.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-namespace Boilerplate.Client.Core.Services;
-
-public partial class ModalData(Type type, IDictionary? parameters, string? title, TaskCompletionSource taskCompletionSource)
-{
- public Type ComponentType { get; set; } = type;
-
- public IDictionary? Parameters { get; set; } = parameters;
-
- public string? Title { get; set; } = title;
-
- public TaskCompletionSource TaskCompletionSource { get; set; } = taskCompletionSource;
-}
diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Web/wwwroot/service-worker.published.js b/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Web/wwwroot/service-worker.published.js
index d831d4272e..ce34c6bc0c 100644
--- a/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Web/wwwroot/service-worker.published.js
+++ b/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Web/wwwroot/service-worker.published.js
@@ -1,5 +1,5 @@
//+:cnd:noEmit
-// bit version: 9.1.0
+// bit version: 9.1.1
// https://github.com/bitfoundation/bitplatform/tree/develop/src/Bswup
//#if (notification == true)
@@ -27,7 +27,8 @@ self.assetsExclude = [
/bit\.blazorui\.fluent-light\.css$/,
// If a PDF viewer is needed in the PWA, remove these two lines:
/pdfjs-4\.7\.76\.js$/,
- /pdfjs-4\.7\.76-worker\.js$/
+ /pdfjs-4\.7\.76-worker\.js$/,
+ /Boilerplate\.Client\.Web\.styles\.css$/
];
self.externalAssets = [
{
@@ -35,12 +36,12 @@ self.externalAssets = [
},
{
//#if (framework == "net9.0")
- url: "_framework/blazor.web.js?ver=9.0.0"
+ url: "_framework/blazor.web.js"
//#else
//#if (IsInsideProjectTemplate == true)
/*
//#endif
- url: "_framework/blazor.web.js?ver=8.0.11"
+ url: "_framework/blazor.web.js"
//#if (IsInsideProjectTemplate == true)
*/
//#endif
@@ -68,11 +69,11 @@ self.defaultUrl = "/";
self.isPassive = true;
self.errorTolerance = 'lax';
self.caseInsensitiveUrl = true;
+self.noPrerenderQuery = 'no-prerender=true';
-// on apps with Prerendering enabled, to have the best experience for the end user un-comment the following two lines.
+// on apps with Prerendering enabled, to have the best experience for the end user un-comment the following line.
// more info: https://bitplatform.dev/bswup/service-worker
-// self.noPrerenderQuery = 'no-prerender=true';
// self.disablePassiveFirstBoot = true;
diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Directory.Build.props b/src/Templates/Boilerplate/Bit.Boilerplate/src/Directory.Build.props
index 1d0850f05d..a99951b70b 100644
--- a/src/Templates/Boilerplate/Bit.Boilerplate/src/Directory.Build.props
+++ b/src/Templates/Boilerplate/Bit.Boilerplate/src/Directory.Build.props
@@ -1,4 +1,4 @@
-
+
diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Directory.Packages.props b/src/Templates/Boilerplate/Bit.Boilerplate/src/Directory.Packages.props
index d8d2bddf8d..7e68a63736 100644
--- a/src/Templates/Boilerplate/Bit.Boilerplate/src/Directory.Packages.props
+++ b/src/Templates/Boilerplate/Bit.Boilerplate/src/Directory.Packages.props
@@ -1,14 +1,14 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
@@ -46,7 +46,7 @@
-
+
diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Directory.Packages8.props b/src/Templates/Boilerplate/Bit.Boilerplate/src/Directory.Packages8.props
index f891d1d52a..08c62affa3 100644
--- a/src/Templates/Boilerplate/Bit.Boilerplate/src/Directory.Packages8.props
+++ b/src/Templates/Boilerplate/Bit.Boilerplate/src/Directory.Packages8.props
@@ -1,14 +1,14 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
@@ -46,7 +46,7 @@
-
+
diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Api/Controllers/Categories/CategoryController.cs b/src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Api/Controllers/Categories/CategoryController.cs
index 2b07229ad1..ba89bde5e3 100644
--- a/src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Api/Controllers/Categories/CategoryController.cs
+++ b/src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Api/Controllers/Categories/CategoryController.cs
@@ -1,7 +1,7 @@
//+:cnd:noEmit
-using Boilerplate.Server.Api.SignalR;
//#if (signalR == true)
using Microsoft.AspNetCore.SignalR;
+using Boilerplate.Server.Api.SignalR;
//#endif
using Boilerplate.Shared.Dtos.Categories;
using Boilerplate.Shared.Controllers.Categories;
diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Api/Controllers/Products/ProductController.cs b/src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Api/Controllers/Products/ProductController.cs
index 40673c8145..f18bc12384 100644
--- a/src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Api/Controllers/Products/ProductController.cs
+++ b/src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Api/Controllers/Products/ProductController.cs
@@ -1,7 +1,7 @@
//+:cnd:noEmit
-using Boilerplate.Server.Api.SignalR;
//#if (signalR == true)
using Microsoft.AspNetCore.SignalR;
+using Boilerplate.Server.Api.SignalR;
//#endif
using Boilerplate.Shared.Dtos.Products;
using Boilerplate.Shared.Controllers.Products;
diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Web/Program.Middlewares.cs b/src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Web/Program.Middlewares.cs
index 74e353d811..863fe95df7 100644
--- a/src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Web/Program.Middlewares.cs
+++ b/src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Web/Program.Middlewares.cs
@@ -152,9 +152,6 @@ public static void ConfigureMiddlewares(this WebApplication app)
app.UseSiteMap();
// Handle the rest of requests with blazor
- //#if (framework == 'net9.0')
- app.MapStaticAssets();
- //#endif
var blazorApp = app.MapRazorComponents()
.AddInteractiveServerRenderMode()
.AddInteractiveWebAssemblyRenderMode()
diff --git a/src/Websites/Careers/src/Bit.Websites.Careers.Client/Bit.Websites.Careers.Client.csproj b/src/Websites/Careers/src/Bit.Websites.Careers.Client/Bit.Websites.Careers.Client.csproj
index a879ea2461..834ebbe27c 100644
--- a/src/Websites/Careers/src/Bit.Websites.Careers.Client/Bit.Websites.Careers.Client.csproj
+++ b/src/Websites/Careers/src/Bit.Websites.Careers.Client/Bit.Websites.Careers.Client.csproj
@@ -22,15 +22,15 @@
-
-
+
+
-
-
+
+ allruntime; build; native; contentfiles; analyzers; buildtransitive
-
+ allruntime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/src/Websites/Careers/src/Bit.Websites.Careers.Server/Bit.Websites.Careers.Server.csproj b/src/Websites/Careers/src/Bit.Websites.Careers.Server/Bit.Websites.Careers.Server.csproj
index a7be1beb4c..d10be9c497 100644
--- a/src/Websites/Careers/src/Bit.Websites.Careers.Server/Bit.Websites.Careers.Server.csproj
+++ b/src/Websites/Careers/src/Bit.Websites.Careers.Server/Bit.Websites.Careers.Server.csproj
@@ -10,11 +10,11 @@
-
+ allruntime; build; native; contentfiles; analyzers; buildtransitive
-
+ allruntime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/src/Websites/Careers/src/Bit.Websites.Careers.Server/Startup/Middlewares.cs b/src/Websites/Careers/src/Bit.Websites.Careers.Server/Startup/Middlewares.cs
index c8254b483b..7c1e312c33 100644
--- a/src/Websites/Careers/src/Bit.Websites.Careers.Server/Startup/Middlewares.cs
+++ b/src/Websites/Careers/src/Bit.Websites.Careers.Server/Startup/Middlewares.cs
@@ -75,7 +75,6 @@ public static void Use(WebApplication app, IWebHostEnvironment env, IConfigurati
UseSiteMap(app);
- app.MapStaticAssets();
app.MapRazorComponents()
.AddInteractiveServerRenderMode()
.AddInteractiveWebAssemblyRenderMode()
diff --git a/src/Websites/Careers/src/Bit.Websites.Careers.Shared/Bit.Websites.Careers.Shared.csproj b/src/Websites/Careers/src/Bit.Websites.Careers.Shared/Bit.Websites.Careers.Shared.csproj
index 671e6d8060..2165ced4fe 100644
--- a/src/Websites/Careers/src/Bit.Websites.Careers.Shared/Bit.Websites.Careers.Shared.csproj
+++ b/src/Websites/Careers/src/Bit.Websites.Careers.Shared/Bit.Websites.Careers.Shared.csproj
@@ -6,11 +6,11 @@
-
+ allruntime; build; native; contentfiles; analyzers; buildtransitive
-
+ allruntime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/src/Websites/Careers/src/Directory.Build.props b/src/Websites/Careers/src/Directory.Build.props
index 539361cc6b..cd0a54c580 100644
--- a/src/Websites/Careers/src/Directory.Build.props
+++ b/src/Websites/Careers/src/Directory.Build.props
@@ -1,4 +1,4 @@
-
+
13.0
diff --git a/src/Websites/Platform/src/Bit.Websites.Platform.Client/Bit.Websites.Platform.Client.csproj b/src/Websites/Platform/src/Bit.Websites.Platform.Client/Bit.Websites.Platform.Client.csproj
index a181d12f4d..8f9c14a377 100644
--- a/src/Websites/Platform/src/Bit.Websites.Platform.Client/Bit.Websites.Platform.Client.csproj
+++ b/src/Websites/Platform/src/Bit.Websites.Platform.Client/Bit.Websites.Platform.Client.csproj
@@ -22,16 +22,16 @@
-
-
-
+
+
+
-
-
+
+ allruntime; build; native; contentfiles; analyzers; buildtransitive
-
+ allruntime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates03GettingStartedPage.razor b/src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates03GettingStartedPage.razor
index c8f9aabbe5..b707e7b4d7 100644
--- a/src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates03GettingStartedPage.razor
+++ b/src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates03GettingStartedPage.razor
@@ -174,8 +174,8 @@ rm $HOME/dotnet.tar.gz
}