1+ using Microsoft . AspNetCore . Components ;
2+ using Orbyss . Blazor . JsonForms . Constants ;
3+
4+ namespace Orbyss . Blazor . Syncfusion . JsonForms . Components
5+ {
6+ public partial class SyncfusionDateTimePicker < TDate >
7+ {
8+ private readonly string id = $ "{ Guid . NewGuid ( ) } ";
9+ private DateTime ? value ;
10+
11+ [ Parameter ]
12+ public string ? Label { get ; set ; }
13+
14+ [ Parameter ]
15+ public bool AllowManualInput { get ; set ; }
16+
17+ [ Parameter ]
18+ public TDate Value { get ; set ; } = default ! ;
19+
20+ [ Parameter ]
21+ public DateTime ? MinimumDate { get ; set ; }
22+
23+ [ Parameter ]
24+ public DateTime ? MaximumDate { get ; set ; }
25+
26+ [ Parameter ]
27+ public DateTime ? MinimumTime { get ; set ; }
28+
29+ [ Parameter ]
30+ public DateTime ? MaximumTime { get ; set ; }
31+
32+ [ Parameter ]
33+ public int ? TimeStep { get ; set ; }
34+
35+ [ Parameter ]
36+ public bool ReadOnly { get ; set ; }
37+
38+ [ Parameter ]
39+ public bool Disabled { get ; set ; }
40+
41+ [ Parameter ]
42+ public string ? HelperText { get ; set ; }
43+
44+ [ Parameter ]
45+ public EventCallback < TDate > OnValueChanged { get ; set ; }
46+
47+ [ Parameter ]
48+ public Func < DateTime ? , TDate > ? ConvertFromDateTime { get ; set ; }
49+
50+ [ Parameter ]
51+ public Func < TDate , DateTime ? > ? ConvertToDateTime { get ; set ; }
52+
53+ private Task OnManualInputChanged ( ChangeEventArgs args )
54+ {
55+ if ( ! AllowManualInput )
56+ {
57+ return Task . CompletedTask ;
58+ }
59+
60+ var value = $ "{ args . Value } ";
61+ if ( DateTime . TryParse ( value , FormCulture . Instance , out var result ) )
62+ {
63+ return ValueChangedHandler ( result ) ;
64+ }
65+
66+ return ValueChangedHandler ( null ) ;
67+ }
68+
69+ private Task ValueChangedHandler ( DateTime ? value )
70+ {
71+ if ( this . value . HasValue )
72+ {
73+ this . value = value ;
74+ }
75+
76+ if ( ! value . HasValue || ConvertToDateTime is null )
77+ {
78+ return OnValueChanged . InvokeAsync ( default ) ;
79+ }
80+
81+ if ( ConvertFromDateTime is not null )
82+ {
83+ return OnValueChanged . InvokeAsync (
84+ ConvertFromDateTime . Invoke ( value )
85+ ) ;
86+ }
87+
88+ return Task . CompletedTask ;
89+ }
90+
91+ protected override void OnParametersSet ( )
92+ {
93+ if ( ConvertToDateTime is null )
94+ {
95+ value = null ;
96+ }
97+ else
98+ {
99+ value = ConvertToDateTime ( Value ) ;
100+ }
101+ }
102+ }
103+ }
0 commit comments