Skip to content

Commit 966670e

Browse files
Merge branch 'main' into SfButtonControl
2 parents 2731d6b + d94f5a5 commit 966670e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+27805
-5
lines changed

.github/ISSUE_TEMPLATE/bug-report.yml

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
name: Bug Report
2+
description: Create a bug report
3+
labels: ["t/bug"]
4+
assignees: []
5+
body:
6+
- type: markdown
7+
attributes:
8+
value: |
9+
Thanks for submitting the bug report! Please provide as much detail as possible to help us diagnose and resolve the issue faster.
10+
- type: textarea
11+
id: description
12+
attributes:
13+
label: Description
14+
description: Please provide a detailed description of the issue you're experiencing, including any relevant screenshots or videos.
15+
placeholder: Please describe what you're seeing!
16+
validations:
17+
required: true
18+
- type: textarea
19+
id: repro-steps
20+
attributes:
21+
label: Steps to Reproduce
22+
description: Please describe the steps to reproduce the behavior you've observed, along with what you expected to happen and what actually occurred.
23+
placeholder: |
24+
1. Add a `SfSegmentedControl` and add `ItemsSource`, and 'FlowDirection' to `RightToLeft`
25+
like so: `<segmentedControl:SfSegmentedControl FlowDirection="RightToLeft">
26+
<segmentedControl:SfSegmentedControl.ItemsSource>
27+
<x:Array Type="{x:Type x:String}">
28+
<x:String>Day</x:String>
29+
<x:String>Week</x:String>
30+
<x:String>Month</x:String>
31+
<x:String>Year</x:String>
32+
</x:Array>
33+
</segmentedControl:SfSegmentedControl.ItemsSource>
34+
</segmentedControl:SfSegmentedControl>`
35+
2. If the `FlowDirection` is set to `RightToLeft` and observe the layout issue 🐞
36+
37+
Expected outcome: a bug was added
38+
Actual outcome: a ladybug appeared
39+
validations:
40+
required: false
41+
- type: dropdown
42+
id: version-with-bug
43+
attributes:
44+
label: Version with bug
45+
description: In which version are you encountering this issue?
46+
options:
47+
- 1.0.2
48+
- 1.0.1
49+
validations:
50+
required: true
51+
- type: dropdown
52+
id: is-regression
53+
attributes:
54+
label: Is this a regression from previous behavior?
55+
description: Did this work prior to an update or migration and now no longer functions as expected?
56+
multiple: true
57+
options:
58+
- Yes, this used to work
59+
- No, this is a new issue
60+
- Not sure, haven't tested other versions
61+
validations:
62+
required: true
63+
- type: dropdown
64+
id: version-that-worked
65+
attributes:
66+
label: Last Known Working Version
67+
description: If you answered "Yes," please specify the version where this functionality previously worked.
68+
options:
69+
- 1.0.2
70+
- 1.0.1
71+
validations:
72+
required: true
73+
- type: dropdown
74+
id: platforms-affected
75+
attributes:
76+
label: Affected platforms
77+
description: Select all platforms where you see the issue. If tested on only one platform, choose the last option.
78+
multiple: true
79+
options:
80+
- iOS
81+
- Android
82+
- Windows
83+
- macOS
84+
- I was *not* able test on other platforms
85+
validations:
86+
required: true
87+
- type: input
88+
id: platform-versions
89+
attributes:
90+
label: Affected Platform Versions
91+
description: Specify the platform versions where this issue occurs.
92+
placeholder: E.g. iOS 15, Android 11 and up, Windows SDK 10.0.17134.0, etc.
93+
validations:
94+
required: false
95+
- type: textarea
96+
id: workaround
97+
attributes:
98+
label: Have you found a workaround?
99+
description: Have you found a workaround? It could help others and assist in resolving the issue.
100+
- type: textarea
101+
id: logs
102+
attributes:
103+
label: Relevant log output
104+
description: Include a stack trace for further analysis.
105+
render: shell
106+

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
blank_issues_enabled: false
2+
3+
contact_links:
4+
- name: "GitHub Discussions"
5+
url: "https://github.com/syncfusion/maui-toolkit/discussions"
6+
about: "Use Syncfusion MAUI Toolkit Discussions for general inquiries"
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
name: Feature Request
2+
description: Provide a suggestion for a Syncfusion Toolkit for .NET MAUI open source controls.
3+
labels: ["proposal/open", "t/enhancement"]
4+
assignees: []
5+
body:
6+
- type: markdown
7+
attributes:
8+
value: |
9+
Thank you for your interest in Syncfsuion Toolkit for .NET MAUI open source controls! We welcome all ideas. Please provide a detailed description, including screenshots, mockups, and pseudo-code, and consider the platform feasibility across .NET MAUI to expedite review.
10+
11+
If you're unsure about a request, feel free to [start a discussion](https://github.com/syncfusion/maui-toolkit/discussions/new?category=ideas) to collaborate with the team and community before proceeding.
12+
- type: textarea
13+
id: description
14+
attributes:
15+
label: Description
16+
description: Please describe the feature, focusing on what it does and the end result. Feel free to include diagrams, mockups, or screenshots to support your idea.
17+
placeholder: Provide support for vertical orientation in SfSegmentedControl to modify the arrangement of items.
18+
validations:
19+
required: true
20+
- type: textarea
21+
id: api-changes
22+
attributes:
23+
label: Public API Changes
24+
description: Include a list of all API changes, additions, subtractions as would be required by your proposal. These APIs should be considered placeholders, so the naming is not as important as getting the concepts correct. If possible you should include some example (pseudo-)code of usage of your new API. This will not only help us understand better, but also help you think about how you want to use this feature as a developer.
25+
placeholder: |
26+
```csharp
27+
var SfSegmentedControl = new SfSegmentedControl();
28+
SfSegmentedControl.Orientation = SegmentOrientation.Vertical; // new API
29+
```
30+
validations:
31+
required: true
32+
- type: textarea
33+
id: use-case
34+
attributes:
35+
label: Intended Use-Case
36+
description: Provide a detailed example of how and why this feature would be used, emphasizing the purpose behind implementing this feature, rather than simply describing its functionality.
37+
placeholder: In my app, I want to change the SfSegmentedControl from horizontal to vertical orientation to better organize items and enhance the user experience.
38+
validations:
39+
required: true
40+

maui/src/AssemblyInfo.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System.Runtime.CompilerServices;
22

33
[assembly: InternalsVisibleTo("Syncfusion.Maui.Toolkit.UnitTest")]
4+
[assembly: XmlnsDefinition("http://schemas.syncfusion.com/maui/toolkit", "Syncfusion.Maui.Toolkit.Calendar")]
45
[assembly: XmlnsDefinition("http://schemas.syncfusion.com/maui/toolkit", "Syncfusion.Maui.Toolkit.Carousel")]
56
[assembly: XmlnsDefinition("http://schemas.syncfusion.com/maui/toolkit", "Syncfusion.Maui.Toolkit.Charts")]
67
[assembly: XmlnsDefinition("http://schemas.syncfusion.com/maui/toolkit", "Syncfusion.Maui.Toolkit.Chips")]
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
using Microsoft.Maui.Layouts;
2+
3+
namespace Syncfusion.Maui.Toolkit.Calendar
4+
{
5+
/// <summary>
6+
/// Custom calendar layout that used to measure and arrange the children by using <see cref="CalendarLayoutManager"/>.
7+
/// </summary>
8+
internal abstract class CalendarLayout : Layout
9+
{
10+
#region Internal Methods
11+
12+
/// <summary>
13+
/// Method used to measure the children based on width and height value.
14+
/// </summary>
15+
/// <param name="widthConstraint">The maximum width request of the layout.</param>
16+
/// <param name="heightConstraint">The maximum height request of the layout.</param>
17+
/// <returns>The maximum size of the layout.</returns>
18+
internal abstract Size LayoutMeasure(double widthConstraint, double heightConstraint);
19+
20+
/// <summary>
21+
/// Method used to arrange the children with in the bounds.
22+
/// </summary>
23+
/// <param name="bounds">The size of the layout.</param>
24+
/// <returns>The size.</returns>
25+
internal abstract Size LayoutArrangeChildren(Rect bounds);
26+
27+
#endregion
28+
29+
#region Override Method
30+
31+
/// <summary>
32+
/// Creates new layout manager.
33+
/// </summary>
34+
/// <returns>Returns calendar layout manager.</returns>
35+
protected override ILayoutManager CreateLayoutManager()
36+
{
37+
return new CalendarLayoutManager(this);
38+
}
39+
40+
#endregion
41+
}
42+
43+
/// <summary>
44+
/// Layout manager used to handle the measure and arrangement logic of the <see cref="CalendarLayout"/> children.
45+
/// </summary>
46+
internal class CalendarLayoutManager : LayoutManager
47+
{
48+
#region Fields
49+
50+
readonly CalendarLayout _layout;
51+
52+
#endregion
53+
54+
#region Constructor
55+
56+
/// <summary>
57+
/// Initializes a new instance of the <see cref="CalendarLayoutManager"/> class.
58+
/// </summary>
59+
/// <param name="layout">The calendar layout instance.</param>
60+
public CalendarLayoutManager(CalendarLayout layout)
61+
: base(layout)
62+
{
63+
_layout = layout;
64+
}
65+
66+
#endregion
67+
68+
#region Override Methods
69+
70+
/// <summary>
71+
/// Method used to arrange the calendar layout children with in the bounds.
72+
/// </summary>
73+
/// <param name="bounds">The size of the layout.</param>
74+
/// <returns>The size.</returns>
75+
public override Size ArrangeChildren(Rect bounds)
76+
{
77+
return _layout.LayoutArrangeChildren(bounds);
78+
}
79+
80+
/// <summary>
81+
/// Method used to measure the calendar layout children based on width and height value.
82+
/// </summary>
83+
/// <param name="widthConstraint">The maximum width request of the layout.</param>
84+
/// <param name="heightConstraint">The maximum height request of the layout.</param>
85+
/// <returns>The maximum size of the layout.</returns>
86+
public override Size Measure(double widthConstraint, double heightConstraint)
87+
{
88+
return _layout.LayoutMeasure(widthConstraint, heightConstraint);
89+
}
90+
91+
#endregion
92+
}
93+
}

0 commit comments

Comments
 (0)