<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Mladen Macanović</title>
    <description>The latest articles on DEV Community by Mladen Macanović (@stsrki).</description>
    <link>https://dev.to/stsrki</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F169535%2Fd9c36e91-6ec0-456a-9159-7fece5e648f8.jpeg</url>
      <title>DEV Community: Mladen Macanović</title>
      <link>https://dev.to/stsrki</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/stsrki"/>
    <language>en</language>
    <item>
      <title>Blazorise 0.9.4 is out and ready for big league</title>
      <dc:creator>Mladen Macanović</dc:creator>
      <pubDate>Wed, 21 Jul 2021 10:29:08 +0000</pubDate>
      <link>https://dev.to/stsrki/blazorise-0-9-4-is-out-and-ready-for-big-league-44ai</link>
      <guid>https://dev.to/stsrki/blazorise-0-9-4-is-out-and-ready-for-big-league-44ai</guid>
      <description>&lt;p&gt;No matter how fast I think each Blazorise version will be done, it always takes at least a quarter of the year. This time it's no different and based on past experience, I guess we'll have to follow the same release cycle in the future. Only time will tell.&lt;/p&gt;

&lt;p&gt;In any case, the new major Blazorise &lt;code&gt;v0.9.4&lt;/code&gt; is finally here!&lt;/p&gt;

&lt;p&gt;Don't let yourself be fooled into thinking &lt;code&gt;v0.9.4&lt;/code&gt; is just a small update from &lt;code&gt;v0.9.3&lt;/code&gt;. The road to &lt;code&gt;v1.0&lt;/code&gt; is long and steady, and the main reason for such small numbers on our major releases is due to some poor planning at the very beginning and letting myself get lost with handling version numbers. But hey, it can happen to just about anyone else! 🤷‍♂️&lt;/p&gt;




&lt;p&gt;A lot of good things have happened after the latest major release. &lt;/p&gt;

&lt;p&gt;The biggest change is that Blazorise has &lt;a href="https://blazorise.com/news/changes-to-blazorise-license/"&gt;gone commercial&lt;/a&gt; and we are now offering Blazorise support and &lt;a href="https://commercial.blazorise.com/"&gt;licensing for commercial&lt;/a&gt; organizations. I would say the start was good, and while there was some negative feedback, the change was mainly positive and we believe it will allow us to focus even more on making and improving the quality of this great product, while still maintaining that "open source" spirit and making sure Blazorise is easily accessible to most developers who don't categorize as a commercial organization.&lt;/p&gt;

&lt;p&gt;One of the good things is that we were able to hire &lt;a href="https://github.com/David-Moreira"&gt;@David-Moreira&lt;/a&gt; to become the first official Blazorise team member. David was already quite an active contributor to the Blazorise codebase and it was only natural to offer him a new role. And as a result, he has done some very good things with the new DataGrid features 💪.&lt;/p&gt;

&lt;h2&gt;
  
  
  Breaking changes
&lt;/h2&gt;

&lt;p&gt;Unfortunately, with every new major release, we introduce some breaking changes. And we do make a point to raise these changes on GitHub for discussing not only by the Blazorise team but also the community, where the community can always be heard, providing insight and feedback.&lt;/p&gt;

&lt;p&gt;So we make sure we bring them for good reasons and this time is no exception so we'll try to at least offer some background and explain our thought process behind the changes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Textual utilities went through the changes, so instead of having &lt;code&gt;Color&lt;/code&gt; or &lt;code&gt;Alignment&lt;/code&gt; parameter we now have &lt;code&gt;TextColor&lt;/code&gt; and &lt;code&gt;TextAlignment&lt;/code&gt;. While it is &lt;em&gt;still&lt;/em&gt; not a breaking change the original parameters will be removed in the &lt;code&gt;v0.9.5&lt;/code&gt;. The good news is that now text utilities can be used on &lt;strong&gt;every&lt;/strong&gt; component and not just on typography components like it was until now.&lt;/li&gt;
&lt;li&gt;We made some small optimizations to the Modal dialog and as a result, &lt;code&gt;Dialog&lt;/code&gt; parameter is now removed from &lt;code&gt;ModalContent&lt;/code&gt;. It was used only by the Bulma provider and so we made it so, that it is now used implicitly by the framework if the appropriate conditions are met.&lt;/li&gt;
&lt;li&gt;We changed the &lt;code&gt;SearchValue&lt;/code&gt; on the DataGrid filter from &lt;code&gt;string&lt;/code&gt; to &lt;code&gt;object&lt;/code&gt;. This was needed so that you could implement better filtering without DataGrid formatting your numeric or date values into unsupported format values.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Progress&lt;/code&gt; component went through some optimizations and as a result, we removed the &lt;code&gt;Background&lt;/code&gt; parameter and replaced it with the &lt;code&gt;Color&lt;/code&gt; parameter.&lt;/li&gt;
&lt;li&gt;Dropping eFrolic support and since its author has stopped maintaining eFrolic, we have decided to stop supporting this provider and move focus elsewhere. This will allow us to focus work on new providers that are actually actively maintained.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Migration
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;In &lt;code&gt;RichTextEditOptions&lt;/code&gt;, rename &lt;code&gt;DynamicLoadReferences&lt;/code&gt; to &lt;code&gt;DynamicallyLoadReferences&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Typography utilities are renamed and now they have a &lt;code&gt;Text*&lt;/code&gt; prefix. Affected components are &lt;code&gt;DisplayHeading&lt;/code&gt;, &lt;code&gt;Heading&lt;/code&gt;, &lt;code&gt;Paragraph&lt;/code&gt;, &lt;code&gt;Text&lt;/code&gt;, &lt;code&gt;CardSubtitle&lt;/code&gt;, &lt;code&gt;CardTitle&lt;/code&gt;, and &lt;code&gt;CardText&lt;/code&gt;. The changed parameters are:

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;Color&lt;/code&gt; to &lt;code&gt;TextColor&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Alignment&lt;/code&gt; to &lt;code&gt;TextAlignment&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Transform&lt;/code&gt; to &lt;code&gt;TextTransform&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Weight&lt;/code&gt; to &lt;code&gt;TextWeight&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Progress&lt;/code&gt; component:

&lt;ul&gt;
&lt;li&gt;Use only &lt;code&gt;Progress&lt;/code&gt; component because &lt;code&gt;ProgressBar&lt;/code&gt; is now only needed for multiple stacked bars, eg. &lt;code&gt;&amp;lt;Progress Value="50" /&amp;gt;&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Replace &lt;code&gt;Background&lt;/code&gt; parameter with the &lt;code&gt;Color&lt;/code&gt; parameter&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Remove usage of &lt;code&gt;Dialog&lt;/code&gt; parameter for &lt;code&gt;ModalContent&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Change &lt;code&gt;Tooltip&lt;/code&gt; &lt;code&gt;Placement&lt;/code&gt; parameter to &lt;code&gt;TooltipPlacement&lt;/code&gt;, eg. &lt;code&gt;Placement="Placement.Left"&lt;/code&gt; to &lt;code&gt;Placement="TooltipPlacement.Left"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;For DataGrid &lt;code&gt;ReadData&lt;/code&gt; event callback, rename &lt;code&gt;Direction&lt;/code&gt; attribute to &lt;code&gt;SortDirection&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Datagrid: Due to a refactoring of the resizable feature to the Table component, you should note the following:

&lt;ul&gt;
&lt;li&gt;The DataGrid resource CSS we had previously introduced, does not need to be added to your application in this version. However with the newly added Virtualize feature, we had to keep the blazorise.datagrid.js, and it will be a continuously essential resource of the DataGrid.&lt;/li&gt;
&lt;li&gt;If you had the resource below, you can now safely remove it:

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;link href="_content/Blazorise.DataGrid/blazorise.datagrid.css" rel="stylesheet" /&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;DataGridResizeMode&lt;/code&gt; enum no longer exists, and you will need to use &lt;code&gt;TableResizeMode&lt;/code&gt; enum instead.&lt;/li&gt;
&lt;li&gt;DataGrid &lt;code&gt;FilteredDataChanged&lt;/code&gt; now accepts the &lt;code&gt;DataGridFilteredDataEventArgs&amp;lt;TItem&amp;gt;&lt;/code&gt; as the argument instead of &lt;code&gt;IEnumerable&amp;lt;TItem&amp;gt;&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;On &lt;code&gt;DataGridColumn&lt;/code&gt;, rename &lt;code&gt;Direction&lt;/code&gt; parameter to &lt;code&gt;SortDirection&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Whenever you use filter &lt;code&gt;SearchValue&lt;/code&gt; change its type from &lt;code&gt;string&lt;/code&gt; to &lt;code&gt;object&lt;/code&gt; type&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Charts

&lt;ul&gt;
&lt;li&gt;Move &lt;code&gt;BarThickness&lt;/code&gt; and &lt;code&gt;MaxBarThickness&lt;/code&gt; from &lt;code&gt;BarChartOptions&lt;/code&gt; to the &lt;code&gt;Axis&lt;/code&gt; option.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Highlights 🚀
&lt;/h2&gt;

&lt;p&gt;The list of changes is really long so I will try to make it as short as possible by just mentioning the biggest. You can discover the rest on your own 😜, or you can follow us on &lt;a href="https://twitter.com/Blazorise"&gt;Twitter&lt;/a&gt; where we will regularly post about new Blazorise features and improvements.&lt;/p&gt;

&lt;h3&gt;
  
  
  Async Validation
&lt;/h3&gt;

&lt;p&gt;There are situations when you need to do validation by connecting to an external method, backend or a service. Since calling these can take some time it is not advised to do it in a synchronous manner as that can lead to a pretty horrible UI experience. So to handle these scenarios we have added support for asynchronous validation. We introduced new asynchronous validation handlers which you can use in a similar way as a regular validator handler. Instead of using &lt;code&gt;Validator&lt;/code&gt; you may use the new &lt;code&gt;AsyncValidator&lt;/code&gt; parameter.&lt;/p&gt;

&lt;p&gt;For more information and an example just take a look at the &lt;a href="https://blazorise.com/docs/components/validation/#async-validation"&gt;Async Validation&lt;/a&gt; page section.&lt;/p&gt;

&lt;h3&gt;
  
  
  Services
&lt;/h3&gt;

&lt;p&gt;For the longest time, this was one of the most requested features and we were finally able to introduce it!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;IMessageService&lt;/code&gt; is used to show simple messages and confirmation dialogs to which the user can respond. It contains some standard methods like &lt;code&gt;Info&lt;/code&gt;, &lt;code&gt;Success&lt;/code&gt;, &lt;code&gt;Warning&lt;/code&gt;, or even the &lt;code&gt;Confirm&lt;/code&gt; method for use cases when you need to prompt the user for an action.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;INotificationService&lt;/code&gt; is used to show simple alerts and notifications with a small timeout after which it will auto-close.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;IPageProgressService&lt;/code&gt; is used to show a simple progress bar at the top of the page.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To learn more about these components please visit &lt;a href="https://blazorise.com/docs/services/message/"&gt;Message Service&lt;/a&gt;, &lt;a href="https://blazorise.com/docs/services/notification/"&gt;Notification Service&lt;/a&gt; and &lt;a href="https://blazorise.com/docs/services/page-progress/"&gt;PageProgress Service&lt;/a&gt; pages.&lt;/p&gt;

&lt;h3&gt;
  
  
  Rating component
&lt;/h3&gt;

&lt;p&gt;A lot of times you need the ability to allow your users to rate your product or a service. With our new &lt;code&gt;Rating&lt;/code&gt; component you will be able to do so. The usage is very simple and can be done with just one line of code, eg.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;Rating&lt;/span&gt; &lt;span class="na"&gt;Color=&lt;/span&gt;&lt;span class="s"&gt;"Color.Primary"&lt;/span&gt; &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="na"&gt;bind-SelectedValue=&lt;/span&gt;&lt;span class="s"&gt;"@SelectedValue"&lt;/span&gt; &lt;span class="na"&gt;MaxValue=&lt;/span&gt;&lt;span class="s"&gt;"10"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To learn more about this component please visit &lt;a href="https://blazorise.com/docs/components/rating/"&gt;Rating&lt;/a&gt; page.&lt;/p&gt;

&lt;h3&gt;
  
  
  Markdown component
&lt;/h3&gt;

&lt;p&gt;The New Markdown component is also part of the release. It is based on the excellent and well-maintained &lt;a href="https://easy-markdown-editor.tk/"&gt;Easy Markdown Editor&lt;/a&gt; JavaScript library. It has all the basic editing features like bold, italic, code snippets, headings, etc. With time we hope to introduce and support even more of the Easy Markdown Editor features.&lt;/p&gt;

&lt;p&gt;To learn more about this component please visit &lt;a href="https://blazorise.com/docs/extensions/markdown/"&gt;Markdown&lt;/a&gt; page.&lt;/p&gt;

&lt;h3&gt;
  
  
  Carousel animations
&lt;/h3&gt;

&lt;p&gt;A lot of refactoring went into the Carousel component and we now fully support Slide and Crossfade animations.&lt;/p&gt;

&lt;h3&gt;
  
  
  Utility first
&lt;/h3&gt;

&lt;p&gt;One of the main focus of this release is the utility first approach. We put a lot of effort to create a lot of new utilities for easier components manipulation. The list of new utilities includes &lt;code&gt;Flex&lt;/code&gt;, &lt;code&gt;Sizing&lt;/code&gt;, &lt;code&gt;VerticalAlignment&lt;/code&gt;, &lt;code&gt;NoGutters&lt;/code&gt;, &lt;code&gt;Shadow&lt;/code&gt;, &lt;code&gt;Border&lt;/code&gt;, and many more.&lt;/p&gt;




&lt;p&gt;&lt;code&gt;Flex&lt;/code&gt; utility is our most advanced &lt;em&gt;fluent builder&lt;/em&gt; so far and if you're familiar with &lt;a href="https://getbootstrap.com/docs/4.5/utilities/flex/"&gt;Bootstrap Flex&lt;/a&gt; utilities you will find our new feature to be quite similar to it. We support &lt;strong&gt;all&lt;/strong&gt; Bootstrap Flex utilities, including media breakpoints. The same feature is also provided for every other provider, Bulma, AntDesign, Material.&lt;/p&gt;

&lt;p&gt;One example of how the new Flex &lt;em&gt;fluent builder&lt;/em&gt; utility works:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;Div&lt;/span&gt; &lt;span class="na"&gt;Flex=&lt;/span&gt;&lt;span class="s"&gt;"Flex.JustifyContent.Start"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    ...
&lt;span class="nt"&gt;&amp;lt;/Div&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;Div&lt;/span&gt; &lt;span class="na"&gt;Flex=&lt;/span&gt;&lt;span class="s"&gt;"Flex.InlineFlex.AlignItems.Center"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    ...
&lt;span class="nt"&gt;&amp;lt;/Div&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;Div&lt;/span&gt; &lt;span class="na"&gt;Flex=&lt;/span&gt;&lt;span class="s"&gt;"Flex.JustifyContent.Start.OnTablet.JustifyContent.End.OnDesktop"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    ...
&lt;span class="nt"&gt;&amp;lt;/Div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Next on the list are the &lt;code&gt;Border&lt;/code&gt; and &lt;code&gt;Shadow&lt;/code&gt; utilities.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Span&lt;/span&gt; &lt;span class="n"&gt;Border&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Border.Is1"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;All&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;Span&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Span&lt;/span&gt; &lt;span class="n"&gt;Border&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Border.OnTop"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;Top&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;Span&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Span&lt;/span&gt; &lt;span class="n"&gt;Border&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Border.OnRight"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;Right&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;Span&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Div&lt;/span&gt; &lt;span class="n"&gt;Shadow&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Shadow.Remove"&lt;/span&gt; &lt;span class="n"&gt;Background&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Background.Light"&lt;/span&gt; &lt;span class="n"&gt;Padding&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Padding.Is3"&lt;/span&gt; &lt;span class="n"&gt;Margin&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Margin.Is5.FromBottom"&lt;/span&gt; &lt;span class="n"&gt;Border&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Border.Rounded"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;No&lt;/span&gt; &lt;span class="n"&gt;shadow&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;Div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Div&lt;/span&gt; &lt;span class="n"&gt;Shadow&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Shadow.Small"&lt;/span&gt; &lt;span class="n"&gt;Background&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Background.White"&lt;/span&gt; &lt;span class="n"&gt;Padding&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Padding.Is3"&lt;/span&gt; &lt;span class="n"&gt;Margin&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Margin.Is5.FromBottom"&lt;/span&gt; &lt;span class="n"&gt;Border&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Border.Rounded"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;Small&lt;/span&gt; &lt;span class="n"&gt;shadow&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;Div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Div&lt;/span&gt; &lt;span class="n"&gt;Shadow&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Shadow.Default"&lt;/span&gt; &lt;span class="n"&gt;Background&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Background.White"&lt;/span&gt; &lt;span class="n"&gt;Padding&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Padding.Is3"&lt;/span&gt; &lt;span class="n"&gt;Margin&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Margin.Is5.FromBottom"&lt;/span&gt; &lt;span class="n"&gt;Border&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Border.Rounded"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;Regular&lt;/span&gt; &lt;span class="n"&gt;shadow&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;Div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Div&lt;/span&gt; &lt;span class="n"&gt;Shadow&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Shadow.Large"&lt;/span&gt; &lt;span class="n"&gt;Background&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Background.White"&lt;/span&gt; &lt;span class="n"&gt;Padding&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Padding.Is3"&lt;/span&gt; &lt;span class="n"&gt;Margin&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Margin.Is5.FromBottom"&lt;/span&gt; &lt;span class="n"&gt;Border&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Border.Rounded"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;Larger&lt;/span&gt; &lt;span class="n"&gt;shadow&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;Div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;We also moved all typography utilities to the &lt;code&gt;BaseComponent&lt;/code&gt; class so they can be used with any Blazorise component. This should allow for more flexibility when building and designing the UI. While it is still not a breaking change it is advised to add &lt;code&gt;Text*&lt;/code&gt; prefix to the current typography parameter as they will be removed in the future. The affected components are &lt;code&gt;DisplayHeading&lt;/code&gt;, &lt;code&gt;Heading&lt;/code&gt;, &lt;code&gt;Paragraph&lt;/code&gt;, &lt;code&gt;Text&lt;/code&gt;, &lt;code&gt;CardSubtitle&lt;/code&gt;, &lt;code&gt;CardTitle&lt;/code&gt;, and &lt;code&gt;CardText&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Simplified Progress component
&lt;/h3&gt;

&lt;p&gt;We have worked hard to make the &lt;code&gt;Progress&lt;/code&gt; bar simpler to use, so we can keep your fingers rested. Hey, every letter counts! :)&lt;/p&gt;

&lt;p&gt;Previously the progress component was used like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;Progress&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;ProgressBar&lt;/span&gt; &lt;span class="na"&gt;Value=&lt;/span&gt;&lt;span class="s"&gt;"50"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/Progress&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and now you only need to write the following(for single value progress).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;Progress&lt;/span&gt; &lt;span class="na"&gt;Value=&lt;/span&gt;&lt;span class="s"&gt;"50"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The old way of using the &lt;code&gt;Progress&lt;/code&gt; is still supported but is now better suited for stacked bars when you need to show multiple values.&lt;/p&gt;

&lt;h3&gt;
  
  
  Background color
&lt;/h3&gt;

&lt;p&gt;Having the ability to set the background color to any component is a must-have feature. That's why from now on, the &lt;code&gt;Background&lt;/code&gt; parameter is available to all components making it much easier to customize the look of your application.&lt;/p&gt;

&lt;h3&gt;
  
  
  Global Theme Size
&lt;/h3&gt;

&lt;p&gt;Now it is possible to globally change input and button sizes. This will greatly improve the ability to customize the application's look and feel.&lt;/p&gt;

&lt;h3&gt;
  
  
  Autocomplete improvements
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;FreeTyping&lt;/code&gt; binding support and &lt;code&gt;FreeTyping&lt;/code&gt; validation support&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You are now able to use &lt;code&gt;Autocomplete&lt;/code&gt; as a suggestions source to the user. Meaning you can enable this feature, and &lt;code&gt;Autocomplete&lt;/code&gt; will accept any value introduced by the user and bind it on the &lt;code&gt;SelectedText&lt;/code&gt; parameter.&lt;/li&gt;
&lt;li&gt;By enabling this feature, you will still be able to use the Blazorise validation, but now validating the &lt;code&gt;SelectedText&lt;/code&gt; parameter.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;&lt;code&gt;NotFound&lt;/code&gt; EventCallback and &lt;code&gt;NotFoundContent&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; You will now be able to handle cases where the value introduced by the user is not found on the data source that has been provided to &lt;code&gt;Autocomplete&lt;/code&gt;. Either by providing some feedback to the user, by using the &lt;code&gt;NotFoundContent&lt;/code&gt; or just by handling it as you wish by listening to the &lt;code&gt;NotFound&lt;/code&gt; EventCallback.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;Show all items&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; This can be done by just setting the &lt;code&gt;Autocomplete&lt;/code&gt;'s MinLength to 0. We've made sure to provide initial styling to accommodate all items with a scrollbar.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;Added support for a custom filter&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; &lt;code&gt;Autocomplete&lt;/code&gt; already provides filtering capabilities out of the box. However, you may now provide a custom filter that's based on the current text being searched and the data-source items.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;Improved the selection box to have the same width as text field by default and able to limit suggestions shown at a time with a scroll bar&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; These two improvements will provide a better user experience by having the selection box be compliant to the text field's width, as well as handling multiple items, by providing a scroll bar, which would otherwise go out of the screen.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  DataGrid public API
&lt;/h3&gt;

&lt;p&gt;A lot of internal and protected DataGrid methods are made public and can now be used. You can now use all the basic commands like &lt;code&gt;New&lt;/code&gt;, &lt;code&gt;Edit&lt;/code&gt;, &lt;code&gt;Save&lt;/code&gt;, &lt;code&gt;Cancel&lt;/code&gt;, &lt;code&gt;Sort&lt;/code&gt;, and others.&lt;/p&gt;

&lt;p&gt;The list doesn't stop there. We also added two new APIs, &lt;code&gt;UpdateCellEditValue&lt;/code&gt; and &lt;code&gt;ReadCellEditValue&lt;/code&gt; to be used in edit mode. This will allow you to cascade and update any cell dynamically and not just the one you're currently editing.&lt;/p&gt;

&lt;h3&gt;
  
  
  DataGrid data-annotation validation
&lt;/h3&gt;

&lt;p&gt;This feature was requested for far too many times and we can finally say it is ready. Data-annotations can now be used for validating the DataGrid editing fields. This feature is now the default option once &lt;code&gt;UseValidation&lt;/code&gt; on &lt;code&gt;DataGrid&lt;/code&gt; is enabled. If you want to have any other validation method, like &lt;code&gt;Validator&lt;/code&gt; for example, you just need to define it on &lt;code&gt;DataGridColumn&lt;/code&gt; of your choice and it will override the default data annotation validation. We hope this new feature will help you even more in building your applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  Datagrid Virtualization Support
&lt;/h3&gt;

&lt;p&gt;With .NET5.0 Blazor brought us built-in virtualization support with the Virtualize component. Now Datagrid brings that same Virtualization support to you!&lt;/p&gt;

&lt;p&gt;By setting &lt;code&gt;Virtualize&lt;/code&gt;, you will enable virtualize capabilities on the DataGrid, meaning that instead of using the DataGrid's pagination, you'll now be able to scroll across the data with perceived improved performance.&lt;/p&gt;

&lt;p&gt;Virtualization is a technique for limiting UI rendering to just the parts that are currently visible. For example, virtualization is helpful when the app must render a long list of items and only a subset of items is required to be visible at any given time.&lt;/p&gt;

&lt;p&gt;You will still have access to every available DataGrid feature.&lt;br&gt;
&lt;code&gt;VirtualizeOptions&lt;/code&gt; allows you to further customize the &lt;code&gt;Virtualize&lt;/code&gt; feature.&lt;/p&gt;
&lt;h3&gt;
  
  
  Table FixedHeader ScrollTo support
&lt;/h3&gt;

&lt;p&gt;You are now able to use the table's internal API to either scroll to a row or pixel offset from the start of &lt;code&gt;tbody&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Here's an example, of how to scroll to the first row on the table.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="n"&gt;Task&lt;/span&gt; &lt;span class="nf"&gt;ScrollToRow&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;tableRef&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ScrollToRow&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt; &lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;AsTask&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And an example, of how to scroll to the position of 250px.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="n"&gt;Task&lt;/span&gt; &lt;span class="nf"&gt;ScrollToPixels&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;tableRef&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ScrollToPixels&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="m"&gt;250&lt;/span&gt; &lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;AsTask&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Date and Time pickers
&lt;/h3&gt;

&lt;p&gt;With this version, we introduce two new input components, &lt;code&gt;DatePicker&lt;/code&gt; and &lt;code&gt;TimePicker&lt;/code&gt; values that are based on the excellent JS library &lt;a href="https://flatpickr.js.org/"&gt;flatpickr&lt;/a&gt;. We tried to cover as many of the flatpickr features as we could while still making it easy to use. You can have its native calendar picker, date and time formatting, manual input mode, etc.&lt;/p&gt;

&lt;p&gt;The existing component &lt;code&gt;DateEdit&lt;/code&gt; and &lt;code&gt;TimeEdit&lt;/code&gt; are still available and they will continue to be used in places where you don't need too advanced features and when you want to use native browser controls.&lt;/p&gt;

&lt;p&gt;To learn more and to see more examples please look at &lt;a href="https://blazorise.com/docs/components/date-picker/"&gt;DatePicker&lt;/a&gt; and &lt;a href="https://blazorise.com/docs/components/time-picker/"&gt;TimePicker&lt;/a&gt; pages.&lt;/p&gt;

&lt;h3&gt;
  
  
  SpinKit
&lt;/h3&gt;

&lt;p&gt;We also added a new extension for spin animations, based on the nice &lt;a href="https://github.com/tobiasahlin/SpinKit"&gt;SpinKit&lt;/a&gt; library. It supports all of its animation types, and it also supports custom colors through the &lt;code&gt;Color&lt;/code&gt; parameter.&lt;/p&gt;

&lt;p&gt;For more info just look at the &lt;a href="https://blazorise.com/docs/extensions/spinkit/"&gt;SpinKit&lt;/a&gt; page.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honorable mentions
&lt;/h2&gt;

&lt;p&gt;We got over 50 PRs coming from our new and old contributors in this version. The biggest contributor by far was &lt;a href="https://github.com/David-Moreira"&gt;David-Moreira&lt;/a&gt; but since he's now part of the team I'm not counting him as an contributor anymore, &lt;em&gt;only&lt;/em&gt; the team member. Sorry David 😛.&lt;/p&gt;

&lt;p&gt;Next on the list, by the number of PRs, is &lt;a href="https://github.com/SimonCropp"&gt;SimonCropp&lt;/a&gt;. Simon helped us to clean the code, optimize async state-machine, remove unused code, fix comments and many many more.&lt;/p&gt;

&lt;p&gt;Just before the release &lt;a href="https://github.com/StefH"&gt;StefH&lt;/a&gt; found the way to have JavaScript callbacks for our ChartJS extension. While it is just a small change currently, we will build upon it and add more callbacks in the next version. And we already have some ideas on how to make it even better.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Jimmys20"&gt;Jimmys20&lt;/a&gt; helped us to improve the &lt;code&gt;ListGroup&lt;/code&gt; component and added support for the &lt;code&gt;Color&lt;/code&gt; parameters, and easier handling of selected list-group items.&lt;/p&gt;




&lt;p&gt;Sorry to not be able to mention all you guys but the post is already too large. We thank you all for your time and help with contributing to Blazorise. As I'm always saying, everything is possible only because you continue to use and work with Blazorise. So once again, thank you! 💪&lt;/p&gt;

&lt;h2&gt;
  
  
  The future
&lt;/h2&gt;

&lt;p&gt;Starting from now our main focus will be Blazorise &lt;code&gt;v0.9.5&lt;/code&gt; which is going to be the final &lt;strong&gt;beta&lt;/strong&gt; before the final &lt;code&gt;v1.0&lt;/code&gt;. The main two points of &lt;code&gt;v0.9.5&lt;/code&gt; will be support for Bootstrap 5 and final optimizations of the current Blazorise API. After which we will likely not going to introduce any major change to the API.&lt;/p&gt;

&lt;p&gt;We also have plans to create a new &lt;a href="https://blazorise.com/"&gt;blazorise.com&lt;/a&gt; website completely in Blazorise along with the new documentation pages that will have code examples and snippets, code copy/paste and more.&lt;/p&gt;

&lt;h2&gt;
  
  
  Support
&lt;/h2&gt;

&lt;p&gt;Blazorise company is still very young, and if you wish to support continuous work on Blazorise and to help us grow the team please consider buying the &lt;a href="https://commercial.blazorise.com/"&gt;commercial license&lt;/a&gt;. You can also consider becoming a &lt;a href="https://github.com/Megabit/Blazorise#special-sponsors"&gt;special sponsor&lt;/a&gt; and you will be listed on our project page.&lt;/p&gt;

&lt;h2&gt;
  
  
  Closing notes
&lt;/h2&gt;

&lt;p&gt;We can finally conclude both Blazorise 0.9.4 and this already too long post. For all of you who got this far, thank you. If you enjoyed reading it, share it with your friends and colleagues!&lt;/p&gt;

&lt;p&gt;Also, don't forget to star us on &lt;a href="https://github.com/Megabit/Blazorise"&gt;GitHib&lt;/a&gt; and follow us on &lt;a href="https://twitter.com/Blazorise"&gt;Twitter&lt;/a&gt; or &lt;a href="https://www.reddit.com/r/Blazorise/"&gt;Reddit&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thanks for everyone who has contributed to making Blazorise another great release.&lt;/p&gt;

&lt;p&gt;Thanks for being a Blazorise developer.&lt;/p&gt;

</description>
      <category>blazor</category>
      <category>blazorise</category>
      <category>ui</category>
      <category>components</category>
    </item>
    <item>
      <title>Changes to Blazorise License</title>
      <dc:creator>Mladen Macanović</dc:creator>
      <pubDate>Tue, 18 May 2021 12:03:34 +0000</pubDate>
      <link>https://dev.to/stsrki/changes-to-blazorise-license-14h</link>
      <guid>https://dev.to/stsrki/changes-to-blazorise-license-14h</guid>
      <description>&lt;h2&gt;
  
  
  Tl:dr
&lt;/h2&gt;

&lt;p&gt;I have been working on the &lt;a href="https://github.com/Megabit/Blazorise"&gt;Blazorise&lt;/a&gt; code-base for more than 2 years. In 2021 I will be making some important changes regarding the Blazorise licensing.&lt;/p&gt;

&lt;p&gt;Here is why I'm doing this.&lt;/p&gt;

&lt;h2&gt;
  
  
  History
&lt;/h2&gt;

&lt;p&gt;In December of 2018 when I first released &lt;a href="https://github.com/Megabit/Blazorise"&gt;Blazorise&lt;/a&gt; as an open-source project it was mostly a proof of concept. I wanted to create a component library not bound to any CSS framework, in particular, have an easy and flexible syntax, and be able to expand with any new feature that would naturally come. For the most part, that goal was met, but since Blazor was fairly new at the time there were some limitations. Over the period of two years a lot of breaking changes and constant upgrades with both Blazor and Blazorise, I have finally come to the realization that almost all of my initial goals are now done.&lt;/p&gt;

&lt;p&gt;Initially, there was only a small number of users working with Blazorise. Today, the number of users can be counted in thousands. As the result of Blazorise popularity, the work I put into Blazorise has also increased a lot. Every day I get a new feature and bug-fix requests from the community, and every day I have less and less time to really focus on improving Blazorise even more. From just a few users at the beginning to today several thousand, more and more pressure is on my back.&lt;/p&gt;

&lt;h2&gt;
  
  
  Blazorise and Open Source
&lt;/h2&gt;

&lt;p&gt;Open-sourcing Blazorise has proven to be one of the best choices in my life. I chose the MIT license because I didn't want Blazorise users to be limited.&lt;/p&gt;

&lt;p&gt;It is well-known that the more popular an OSS project becomes, the harder it is to manage it. Some OSS project maintainers burn out, while others get offered jobs where they can continue to maintain the project (or not). Some manage to make the jump from a hobby project to a real business. This is where we are now — ready to make a jump.&lt;/p&gt;

&lt;p&gt;From the very beginning, I kept funding the Blazorise domain and servers from my own pocket. Living in a small country like Croatia with a somewhat smaller salary than it is in other parts of the world can make a bigger impact on monthly expenses. But I liked what I was doing and I decided it is worth it. To make it easier I have added donation links and they helped a lot. But relying solely on donations is not always the most reliable way of funding.&lt;/p&gt;

&lt;p&gt;I have also considered sponsorship from GitHub, but until today there is still no support for all countries. And Croatia is still off the list.&lt;/p&gt;

&lt;p&gt;Ultimately, I think sponsorship just isn’t sustainable in long term. Although I appreciate very much all individual sponsors, I feel the companies that use and depend on Blazorise should be the ones to sponsor it. Unfortunately, most companies are not set up for sponsoring open source.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Future
&lt;/h2&gt;

&lt;p&gt;After going so far with self-funding and donations, I decided to find a different way to operate. I asked myself what would be the goals moving forward and I developed a list:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Spend more time on the Blazorise code-base to implement new features&lt;/li&gt;
&lt;li&gt;Add more Blazorise extensions&lt;/li&gt;
&lt;li&gt;Create better documentation and samples&lt;/li&gt;
&lt;li&gt;Do a better job of supporting people who use Blazorise&lt;/li&gt;
&lt;li&gt;Give companies the assurances they need when they decide to base their core UI infrastructure on Blazorise components&lt;/li&gt;
&lt;li&gt;Implement a business continuity plan&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To reach these goals I have decided to start a real company.&lt;/p&gt;

&lt;p&gt;To continue work I have formed a new company "Megabit", and Blazorise will be moved to its GitHub organization instead of being under my personal GitHub account.&lt;/p&gt;

&lt;p&gt;Blazorise will stay free just as before, but it will move under the Apache 2.0 license instead of being under the MIT license. For regular users, and smaller companies (under $1 million annual revenue), Blazorise will stay and be completely free just as it is now. But for companies that have annual revenue of over $1 million, a new commercial license will need to be issued.&lt;/p&gt;

&lt;p&gt;With the new funding sources, I plan to employ more people to help me improve Blazorise. My first choice would be to give job opportunities to some of the most engaged Blazorise community members before I search in other places.&lt;/p&gt;

&lt;p&gt;I feel that these changes will best serve the needs of both the open-source community and the corporate community. In addition, they will allow making sure Blazorise will be a viable long-term solution for everyone.&lt;/p&gt;

&lt;p&gt;Last but not least, we have great features in the pipeline and Blazorise will continue to be the most flexible and easiest Blazor UI component library.&lt;/p&gt;

</description>
      <category>blazorise</category>
      <category>changes</category>
      <category>license</category>
    </item>
    <item>
      <title>Blazorise 0.8.5 released</title>
      <dc:creator>Mladen Macanović</dc:creator>
      <pubDate>Thu, 19 Sep 2019 18:38:23 +0000</pubDate>
      <link>https://dev.to/stsrki/blazorise-0-8-5-released-56h9</link>
      <guid>https://dev.to/stsrki/blazorise-0-8-5-released-56h9</guid>
      <description>&lt;p&gt;Once again a new version of Blazorise is available for download. With this release we're still focused on optimizations and we're steadily going to the stable &lt;strong&gt;0.9&lt;/strong&gt; milestone.&lt;/p&gt;

&lt;p&gt;For those of you not familiar with Blazorise, a Blazorise is an open-source component library built on top of &lt;a href="https://dotnet.microsoft.com/apps/aspnet/web-apps/blazor"&gt;Blazor&lt;/a&gt; with support for CSS frameworks like Bootstrap, Bulma and Material. It has all kind of basic components like Button, SelectEdit, TextEdit etc. and some advanced like Chart and DataGrid to name a few.&lt;/p&gt;

&lt;p&gt;See &lt;a href="https://blazorise.com/docs/release-notes/release085/"&gt;release notes&lt;/a&gt; for a full list of changes.&lt;/p&gt;

&lt;p&gt;Github: &lt;a href="https://github.com/stsrki/Blazorise"&gt;https://github.com/stsrki/Blazorise&lt;/a&gt;&lt;br&gt;
Docs: &lt;a href="https://blazorise.com/docs/"&gt;https://blazorise.com/docs/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you like the project please leave a star on &lt;a href="https://github.com/stsrki/Blazorise"&gt;GitHub&lt;/a&gt;. And as always any feedback is welcome. Thanks&lt;/p&gt;

</description>
      <category>blazorise</category>
      <category>components</category>
      <category>blazor</category>
    </item>
    <item>
      <title>Blazorise 0.8.3</title>
      <dc:creator>Mladen Macanović</dc:creator>
      <pubDate>Fri, 30 Aug 2019 13:50:26 +0000</pubDate>
      <link>https://dev.to/stsrki/blazorise-0-8-3-26p5</link>
      <guid>https://dev.to/stsrki/blazorise-0-8-3-26p5</guid>
      <description>&lt;p&gt;I'm happy to annouce that new version of Blazorise is now available. You can see &lt;a href="https://blazorise.com/docs/release-notes/release083/"&gt;release notes&lt;/a&gt; for a full list of changes.&lt;/p&gt;

&lt;p&gt;Github: &lt;a href="https://github.com/stsrki/Blazorise"&gt;https://github.com/stsrki/Blazorise&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Docs: &lt;a href="https://blazorise.com/docs/"&gt;https://blazorise.com/docs/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you like the project please leave a star on &lt;a href="https://github.com/stsrki/Blazorise"&gt;GitHub&lt;/a&gt;. And as always any feedback is welcome. Thanks&lt;/p&gt;

</description>
      <category>blazorise</category>
    </item>
    <item>
      <title>Blazorise - Component library for Blazor</title>
      <dc:creator>Mladen Macanović</dc:creator>
      <pubDate>Mon, 20 May 2019 10:14:01 +0000</pubDate>
      <link>https://dev.to/stsrki/blazorise-component-library-for-blazor-1gib</link>
      <guid>https://dev.to/stsrki/blazorise-component-library-for-blazor-1gib</guid>
      <description>&lt;p&gt;Blazorise is a component library for Blazor that have support for CSS frameworks like Bootstrap, Material, Bulma and eFrolic.&lt;/p&gt;

&lt;p&gt;To see Blazorise in actions there are demo applications available for each of framework implementation, links are in the readme on project page (best viewed on desktop).&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/stsrki/Blazorise"&gt;https://github.com/stsrki/Blazorise&lt;/a&gt;&lt;br&gt;
Docs: &lt;a href="https://blazorise.com/docs/"&gt;https://blazorise.com/docs/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>blazorise</category>
      <category>blazor</category>
      <category>bootstrap</category>
      <category>components</category>
    </item>
  </channel>
</rss>
