Skip to content

Commit 6737228

Browse files
Merge mediaquery-form-demo-2408 into production (#2409)
* docs(mediaquery): Replace obsolete Form Integration demo * Update overview.md --------- Co-authored-by: Dimo Dimov <[email protected]>
1 parent 43f25ec commit 6737228

File tree

2 files changed

+142
-13
lines changed

2 files changed

+142
-13
lines changed

components/mediaquery/integration.md

Lines changed: 136 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -191,12 +191,142 @@ You can resize the Chart based on the browser size and re-render with the new di
191191

192192
## Form Integration
193193

194-
You can utilize the Form Columns to fit the contents of the Telerik Form to a smaller browser window. You can find an example in the <a href="https://github.com/telerik/blazor-ui/tree/master/form/responsive-form" target="_blank">Responsive Form</a> demo application.
194+
You can use the MediaQuery component to set various [layout-related parameters of the Form component]({%slug form-overview%}#form-parameters), such as `Orientation`, `Columns`, `ColumnSpacing`, and `ButtonsLayout`.
195+
196+
>caption Responsive Form with MediaQuery
197+
198+
````CSHTML
199+
@using System.ComponentModel.DataAnnotations
200+
201+
<ul>
202+
<li>
203+
<code>IsSmallScreen</code>: <strong>@IsSmallScreen</strong>
204+
</li>
205+
<li>
206+
<code>IsMediumScreen</code>: <strong>@IsMediumScreen</strong>
207+
</li>
208+
<li>
209+
<code>IsLargeScreen</code>: <strong>@IsLargeScreen</strong>
210+
</li>
211+
<li>
212+
<code>IsExtraLargeScreen</code>: <strong>@IsExtraLargeScreen</strong>
213+
</li>
214+
</ul>
215+
216+
<TelerikForm Model="@Employee"
217+
ButtonsLayout="@FormButtonsLayout"
218+
Orientation="@FormOrientation">
219+
<FormValidation>
220+
<DataAnnotationsValidator></DataAnnotationsValidator>
221+
<TelerikValidationSummary />
222+
</FormValidation>
223+
<FormItems>
224+
<FormGroup LabelText="Personal Information" Columns="@FormGroupColumns" ColumnSpacing="@FormGroupColumnSpacing">
225+
<FormItem Field="@nameof(Person.FirstName)" LabelText="First Name"></FormItem>
226+
<FormItem Field="@nameof(Person.MiddleName)" LabelText="Middle Name"></FormItem>
227+
<FormItem Field="@nameof(Person.LastName)" LabelText="Last Name"></FormItem>
228+
<FormItem Field="@nameof(Person.BirthDate)" LabelText="Birth Date"></FormItem>
229+
<FormItem Field="@nameof(Person.Address)" EditorType="@FormEditorType.TextArea" ColSpan="@FormGroupColumns"></FormItem>
230+
</FormGroup>
231+
<FormGroup LabelText="Work Information" Columns="@FormGroupColumns" ColumnSpacing="@FormGroupColumnSpacing">
232+
<FormItem Field="@nameof(Person.Id)" LabelText="Corporate ID" Enabled="false"></FormItem>
233+
<FormItem Field="@nameof(Person.HireDate)" LabelText="Hire Date"></FormItem>
234+
<FormItem Field="@nameof(Person.Team)"></FormItem>
235+
<FormItem Field="@nameof(Person.LeaveDate)" LabelText="Leave Date"></FormItem>
236+
</FormGroup>
237+
</FormItems>
238+
</TelerikForm>
239+
240+
<TelerikMediaQuery Media="@SmallScreenMediaQuery" OnChange="@( (bool matches) => { IsSmallScreen = matches; ConfigureForm(); } )" />
241+
<TelerikMediaQuery Media="@MediumScreenMediaQuery" OnChange="@( (bool matches) => { IsMediumScreen = matches; ConfigureForm(); } )" />
242+
<TelerikMediaQuery Media="@LargeScreenMediaQuery" OnChange="@( (bool matches) => { IsLargeScreen = matches; ConfigureForm(); } )" />
243+
<TelerikMediaQuery Media="@ExtraLargeScreenMediaQuery" OnChange="@( (bool matches) => { IsExtraLargeScreen = matches; ConfigureForm(); } )" />
244+
245+
@code {
246+
private Person Employee { get; set; } = new() { Id = 1234 };
247+
248+
private FormOrientation FormOrientation { get; set; } = FormOrientation.Vertical;
249+
private FormButtonsLayout FormButtonsLayout { get; set; } = FormButtonsLayout.Start;
250+
private int FormGroupColumns { get; set; } = 1;
251+
private string FormGroupColumnSpacing { get; set; } = string.Empty;
252+
253+
private string SmallScreenMediaQuery { get; set; } = "(max-width: 430px)";
254+
private string MediumScreenMediaQuery { get; set; } = "(min-width: 431px)";
255+
private string LargeScreenMediaQuery { get; set; } = "(min-width: 768px)";
256+
private string ExtraLargeScreenMediaQuery { get; set; } = "(min-width: 1199px)";
257+
258+
private bool IsSmallScreen { get; set; }
259+
private bool IsMediumScreen { get; set; }
260+
private bool IsLargeScreen { get; set; }
261+
private bool IsExtraLargeScreen { get; set; }
262+
263+
private void ConfigureForm()
264+
{
265+
if (IsMediumScreen)
266+
{
267+
FormOrientation = FormOrientation.Horizontal;
268+
FormButtonsLayout = FormButtonsLayout.Center;
269+
FormGroupColumns = 2;
270+
FormGroupColumnSpacing = "1em";
271+
}
272+
273+
if (IsSmallScreen)
274+
{
275+
FormOrientation = FormOrientation.Vertical;
276+
FormButtonsLayout = FormButtonsLayout.Stretch;
277+
FormGroupColumns = 1;
278+
FormGroupColumnSpacing = string.Empty;
279+
}
280+
281+
if (IsLargeScreen)
282+
{
283+
FormOrientation = FormOrientation.Vertical;
284+
FormButtonsLayout = FormButtonsLayout.Start;
285+
FormGroupColumns = 3;
286+
FormGroupColumnSpacing = "2em";
287+
}
288+
289+
if (IsExtraLargeScreen)
290+
{
291+
FormOrientation = FormOrientation.Vertical;
292+
FormButtonsLayout = FormButtonsLayout.End;
293+
FormGroupColumns = 4;
294+
FormGroupColumnSpacing = "3em";
295+
}
296+
}
297+
298+
public class Person
299+
{
300+
public int Id { get; set; }
301+
302+
[Required]
303+
public string FirstName { get; set; } = string.Empty;
304+
305+
[Required]
306+
public string MiddleName { get; set; } = string.Empty;
307+
308+
[Required]
309+
public string LastName { get; set; } = string.Empty;
310+
311+
[Required]
312+
public string Address { get; set; } = string.Empty;
313+
314+
[Required]
315+
public DateTime? BirthDate { get; set; }
316+
317+
[Required]
318+
public DateTime HireDate { get; set; } = DateTime.Today;
319+
320+
[Required]
321+
public string? Team { get; set; }
322+
323+
public DateTime? LeaveDate { get; set; }
324+
}
325+
}
326+
````
195327

196328
## See Also
197-
198-
* [Live Demo: MediaQuery - Grid Integration](https://demos.telerik.com/blazor-ui/mediaquery/grid-integration)
199-
* [Overview]({%slug mediaquery-overview%})
200-
* [Events]({%slug mediaquery-events%})
201329

202-
330+
* [Live Demo: MediaQuery and Grid Integration](https://demos.telerik.com/blazor-ui/mediaquery/grid-integration)
331+
* [MediaQuery Overview]({%slug mediaquery-overview%})
332+
* [MediaQuery Events]({%slug mediaquery-events%})

components/mediaquery/overview.md

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -61,17 +61,16 @@ The <a href = "https://www.telerik.com/blazor-ui/mediaquery" target="_blank">Med
6161

6262
@[template](/_contentTemplates/common/parameters-table-styles.md#table-layout)
6363

64-
| Parameter | Type and Default value | Description |
65-
|-----------|------------------------|-------------|
66-
| `Media` | `string` | the <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Media_Queries/Using_media_queries" target="_blank">media query string</a> that will be matched. |
64+
| Parameter | Type | Description |
65+
|---|---|---|
66+
| `Media` | `string` | The <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Media_Queries/Using_media_queries" target="_blank">media query string</a> that will be matched. |
6767

6868
## Notes
6969

70-
The MediaQuery component facilitates the usage of CSS media queries in your C# code. There are a few points to keep in mind:
70+
The MediaQuery component facilitates the usage of CSS media queries in your C# code:
7171

72-
* The MediaQuery component is not a replacement for responsive design, layout and CSS. You should use them to create your responsive application layouts like with any other web application.
73-
74-
* The MediaQuery component makes it easy to use C# logic based on the breakpoint that matches - such as changing parameter values, replacing a component with a different component or even not rendering a part of the layout (with CSS alone you can resize parts of the app or hide them visually, but they still render).
72+
* The MediaQuery component makes it easy to use C# logic based on the matched media query breakpoints. For example, you can change parameter values, replace a component with a different component or even not render parts of the layout. With CSS alone you can resize parts of the app or hide them visually, but they still render.
73+
* The MediaQuery component is not designed as a full replacement for responsive design, layout and CSS. You should use them to create your responsive application layouts like with any other web application.
7574

7675
## Next Steps
7776

0 commit comments

Comments
 (0)