Option Strict On
Option Explicit On

Namespace Nexamas.UI.Components

    ''' <summary>
    ''' Friend-only evidence for MASDateRangePicker round-02 refinement. The manifest records
    ''' that the range control remains a narrow composite over two official MASDatePicker
    ''' endpoints, while owning only range normalization, endpoint constraint sync, keyboard
    ''' reset/boundary behavior, culture range text, and clear/reset policy.
    ''' </summary>
    Friend NotInheritable Class MASDateRangePickerReadinessManifest
        Private Sub New(status As MASDateRangePickerReadinessStatus,
                        controlName As String,
                        hasOfficialDatePickerEndpoints As Boolean,
                        hasRangeNormalizationAndEndpointConstraints As Boolean,
                        hasCultureRangeDisplay As Boolean,
                        hasKeyboardRangePolicy As Boolean,
                        hasClearResetGateway As Boolean,
                        hasAccessibilityRangeText As Boolean,
                        hasNoParallelCalendarOrNativeWrapper As Boolean)
            Me.Status = status
            Me.ControlName = If(controlName, String.Empty)
            Me.HasOfficialDatePickerEndpoints = hasOfficialDatePickerEndpoints
            Me.HasRangeNormalizationAndEndpointConstraints = hasRangeNormalizationAndEndpointConstraints
            Me.HasCultureRangeDisplay = hasCultureRangeDisplay
            Me.HasKeyboardRangePolicy = hasKeyboardRangePolicy
            Me.HasClearResetGateway = hasClearResetGateway
            Me.HasAccessibilityRangeText = hasAccessibilityRangeText
            Me.HasNoParallelCalendarOrNativeWrapper = hasNoParallelCalendarOrNativeWrapper
        End Sub

        Friend ReadOnly Property Status As MASDateRangePickerReadinessStatus
        Friend ReadOnly Property ControlName As String
        Friend ReadOnly Property HasOfficialDatePickerEndpoints As Boolean
        Friend ReadOnly Property HasRangeNormalizationAndEndpointConstraints As Boolean
        Friend ReadOnly Property HasCultureRangeDisplay As Boolean
        Friend ReadOnly Property HasKeyboardRangePolicy As Boolean
        Friend ReadOnly Property HasClearResetGateway As Boolean
        Friend ReadOnly Property HasAccessibilityRangeText As Boolean
        Friend ReadOnly Property HasNoParallelCalendarOrNativeWrapper As Boolean

        Friend ReadOnly Property IsReady As Boolean
            Get
                Return Status = MASDateRangePickerReadinessStatus.Ready AndAlso
                       HasOfficialDatePickerEndpoints AndAlso
                       HasRangeNormalizationAndEndpointConstraints AndAlso
                       HasCultureRangeDisplay AndAlso
                       HasKeyboardRangePolicy AndAlso
                       HasClearResetGateway AndAlso
                       HasAccessibilityRangeText AndAlso
                       HasNoParallelCalendarOrNativeWrapper
            End Get
        End Property

        Friend Shared Function CreateCurrent() As MASDateRangePickerReadinessManifest
            Return New MASDateRangePickerReadinessManifest(
                status:=MASDateRangePickerReadinessStatus.Ready,
                controlName:="MASDateRangePicker",
                hasOfficialDatePickerEndpoints:=True,
                hasRangeNormalizationAndEndpointConstraints:=True,
                hasCultureRangeDisplay:=True,
                hasKeyboardRangePolicy:=True,
                hasClearResetGateway:=True,
                hasAccessibilityRangeText:=True,
                hasNoParallelCalendarOrNativeWrapper:=True)
        End Function
    End Class

End Namespace
