Skip to content

Commit 21dc704

Browse files
committed
Merge branch 'rel-1.8'
2 parents 3825e7c + 6ebf1e3 commit 21dc704

19 files changed

Lines changed: 1169 additions & 11 deletions

Documentation/Blazorise.Docs/Components/Commercial/BenefitsGrid.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
</Table>
3939
</Div>
4040

41-
<Paragraph Class="text-muted">
41+
<Paragraph TextColor="TextColor.Muted">
4242
<Span>*</Span> Savings are calculated using an hourly rate of <Strong>€50/hour</Strong> for an average enterprise-level application.
4343
</Paragraph>
4444

Documentation/Blazorise.Docs/Components/Commercial/CustomWorkOptions.razor

Lines changed: 427 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<Row Margin="Margin.Is5.FromTop.Is4.FromBottom" TextAlignment="TextAlignment.Center">
2+
<Column>
3+
<Heading Size="HeadingSize.Is2" TextSize="TextSize.Heading1" TextAlignment="TextAlignment.Center" Margin="Margin.Is4.OnY">
4+
Need a feature <Span Class="gradient-commercial">sooner</Span>?
5+
</Heading>
6+
<Lead TextColor="TextColor.Muted">
7+
Licenses primarily provide support and response-time commitments. For paid delivery options (Feature Sponsorship, Custom Development, and the Priority Development Queue), see our custom work page.
8+
</Lead>
9+
<Button Type="ButtonType.Link" To="@To" Color="Color.Primary" Size="Size.Large">
10+
View custom work options
11+
</Button>
12+
<Paragraph TextColor="TextColor.Muted" Margin="Margin.Is3.FromTop">
13+
Enterprise customers can recommend features, but recommendations are not a promise of implementation.
14+
</Paragraph>
15+
</Column>
16+
</Row>
17+
18+
@code {
19+
[Parameter] public string To { get; set; } = "custom-work";
20+
}

Documentation/Blazorise.Docs/Components/Commercial/Faq.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@
211211
Title = "What is the process for requesting new features or enhancements?",
212212
Body = (__builder) => {
213213
<Paragraph>
214-
Feature requests fall outside the scope of developer support, but we're happy to provide a quote for custom development.
214+
Feature requests fall outside the scope of developer support. If you need delivery on a schedule, see our <Anchor To="custom-work" Title="Custom work options">custom work options</Anchor> or contact sales for a quote.
215215
</Paragraph>
216216
}
217217
},

Documentation/Blazorise.Docs/Components/Footer.razor

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,9 @@
5252
<UnorderedListItem Margin="Margin.Is1.FromBottom">
5353
<Anchor TextColor="TextColor.Primary" To="pricing" Title="Pricing">Pricing</Anchor>
5454
</UnorderedListItem>
55+
<UnorderedListItem Margin="Margin.Is1.FromBottom">
56+
<Anchor TextColor="TextColor.Primary" To="custom-work" Title="Custom work">Custom work</Anchor>
57+
</UnorderedListItem>
5558
<UnorderedListItem Margin="Margin.Is1.FromBottom">
5659
<Anchor TextColor="TextColor.Primary" To="customers" Title="Success stories">Success stories</Anchor>
5760
</UnorderedListItem>
@@ -123,4 +126,4 @@
123126
{
124127
InvokeAsync(StateHasChanged);
125128
}
126-
}
129+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
@inherits BaseInputComponent<string>
2+
3+
<Markdown Class="@MarkdownInputClassNames" Value="@(CurrentValue ?? string.Empty)" ValueChanged="@OnMarkdownValueChanged" MinHeight="@MinHeight" MaxHeight="@MaxHeight" Placeholder="@Placeholder" Autofocus="@Autofocus" UploadImage="false" />
4+
@Feedback
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
#region Using directives
2+
using System;
3+
using System.Linq.Expressions;
4+
using System.Threading.Tasks;
5+
using Blazorise;
6+
using Blazorise.Extensions;
7+
using Blazorise.Utilities;
8+
using Microsoft.AspNetCore.Components;
9+
#endregion
10+
11+
namespace Blazorise.Docs.Components;
12+
13+
public partial class MarkdownInput : BaseInputComponent<string>
14+
{
15+
#region Methods
16+
17+
public override async Task SetParametersAsync( ParameterView parameters )
18+
{
19+
if ( Rendered
20+
&& parameters.TryGetValue<string>( nameof( Value ), out var newValue )
21+
&& !newValue.IsEqual( Value ) )
22+
{
23+
ExecuteAfterRender( Revalidate );
24+
}
25+
26+
await base.SetParametersAsync( parameters );
27+
28+
if ( ParentValidation is not null )
29+
{
30+
if ( parameters.TryGetValue<Expression<Func<string>>>( nameof( ValueExpression ), out var expression ) )
31+
await ParentValidation.InitializeInputExpression( expression );
32+
33+
await InitializeValidation();
34+
}
35+
}
36+
37+
protected override Task OnInternalValueChanged( string value )
38+
=> ValueChanged.InvokeAsync( value );
39+
40+
protected override Task<ParseValue<string>> ParseValueFromStringAsync( string value )
41+
=> Task.FromResult( new ParseValue<string>( true, value, null ) );
42+
43+
protected override string GetFormatedValueExpression()
44+
{
45+
if ( ValueExpression is null )
46+
return null;
47+
48+
return HtmlFieldPrefix is not null
49+
? HtmlFieldPrefix.GetFieldName( ValueExpression )
50+
: ExpressionFormatter.FormatLambda( ValueExpression );
51+
}
52+
53+
protected Task OnMarkdownValueChanged( string value )
54+
=> CurrentValueHandler( value ?? string.Empty );
55+
56+
#endregion
57+
58+
#region Properties
59+
60+
protected string MarkdownInputClassNames => ParentValidation?.Status == ValidationStatus.Error ? "is-invalid" : null;
61+
62+
protected override string InternalValue { get => Value; set => Value = value; }
63+
64+
[Parameter] public string Value { get; set; }
65+
66+
[Parameter] public EventCallback<string> ValueChanged { get; set; }
67+
68+
[Parameter] public Expression<Func<string>> ValueExpression { get; set; }
69+
70+
[Parameter] public string Placeholder { get; set; }
71+
72+
[Parameter] public string MinHeight { get; set; } = "300px";
73+
74+
[Parameter] public string MaxHeight { get; set; }
75+
76+
#endregion
77+
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
using System.ComponentModel.DataAnnotations;
2+
3+
namespace Blazorise.Docs.Models;
4+
5+
public class CustomWorkQuote
6+
{
7+
[Required]
8+
[Display( Name = "Full Name" )]
9+
public string FullName { get; set; }
10+
11+
[Required]
12+
[EmailAddress]
13+
[Display( Name = "Work Email" )]
14+
public string Email { get; set; }
15+
16+
[Required]
17+
public string Company { get; set; }
18+
19+
[Required]
20+
[Display( Name = "Engagement" )]
21+
public string Engagement { get; set; } = "Not sure";
22+
23+
[Required]
24+
[Display( Name = "Request Title" )]
25+
public string Title { get; set; }
26+
27+
[Required]
28+
[Display( Name = "Target Timeline" )]
29+
public string Timeline { get; set; }
30+
31+
[Display( Name = "Budget Range" )]
32+
public string BudgetRange { get; set; } = "Not sure";
33+
34+
[Display( Name = "Upstream Preference" )]
35+
public string UpstreamPreference { get; set; } = "Upstream (default)";
36+
37+
[Display( Name = "Exclusivity Duration (months)" )]
38+
public int? ExclusivityMonths { get; set; } = 6;
39+
40+
[Display( Name = "Blazorise Version" )]
41+
public string BlazoriseVersion { get; set; }
42+
43+
[Display( Name = ".NET Version" )]
44+
public string DotNetVersion { get; set; }
45+
46+
[Display( Name = "CSS Providers" )]
47+
public string CssProviders { get; set; }
48+
49+
public string Dependencies { get; set; }
50+
51+
[Required]
52+
[Display( Name = "Details" )]
53+
public string Details { get; set; }
54+
}

Documentation/Blazorise.Docs/Pages/Commercial/CommercialPage.razor

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,10 @@
109109
</Row>
110110
</Container>
111111

112+
<Container Padding="Padding.Is5.OnY">
113+
<CustomWorkTeaser />
114+
</Container>
115+
112116
<Container Padding="Padding.Is5.OnY">
113117
<Row>
114118
<Column Margin="Margin.IsAuto.OnX">
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
@page "/custom-work"
2+
3+
<Seo Canonical="/custom-work" Title="Blazorise Custom Work and Feature Sponsorship" Description="Procurement-friendly options for Feature Sponsorship (fixed price), Custom Development (time and materials), and the Priority Development Queue (request handling only, no delivery guarantee)." />
4+
5+
<PageHeader>
6+
<Title>
7+
Blazorise <Span Class="gradient-commercial">Custom Work</Span>
8+
</Title>
9+
<Subtitle>
10+
Paid delivery options for Blazorise
11+
</Subtitle>
12+
<Description>
13+
<Paragraph>
14+
When you need a feature sooner (or something company-specific), choose an engagement that cleanly separates licensing (support) from delivery (custom work), with delivery terms defined per proposal.
15+
</Paragraph>
16+
</Description>
17+
</PageHeader>
18+
19+
<Container>
20+
<CustomWorkOptions ShowHeader="false" />
21+
</Container>

0 commit comments

Comments
 (0)