Option Strict On
Option Explicit On

Namespace Nexamas.UI.Components

    ''' <summary>
    ''' Friend-only evidence for MASComboBox round-02 refinement. The manifest records that
    ''' ComboBox stays on the official FloatRuntime + ListPopup route while hardening
    ''' dropdown lifecycle, item-store mutation, keyboard traversal/search, selection sync,
    ''' and compact popup geometry without exposing a native combo wrapper or public list API.
    ''' </summary>
    Friend NotInheritable Class MASComboBoxReadinessManifest
        Private Sub New(status As MASComboBoxReadinessStatus,
                        controlName As String,
                        hasOfficialFloatDropdown As Boolean,
                        hasReadOnlyItemGateway As Boolean,
                        hasDropdownLifecycleForItemMutation As Boolean,
                        hasKeyboardTraversalAndSearch As Boolean,
                        hasSelectionSyncForOpenDropdown As Boolean,
                        hasMeasuredDropdownGeometryPolicy As Boolean,
                        hasNoParallelDropdownOrNativeWrapper As Boolean)
            Me.Status = status
            Me.ControlName = If(controlName, String.Empty)
            Me.HasOfficialFloatDropdown = hasOfficialFloatDropdown
            Me.HasReadOnlyItemGateway = hasReadOnlyItemGateway
            Me.HasDropdownLifecycleForItemMutation = hasDropdownLifecycleForItemMutation
            Me.HasKeyboardTraversalAndSearch = hasKeyboardTraversalAndSearch
            Me.HasSelectionSyncForOpenDropdown = hasSelectionSyncForOpenDropdown
            Me.HasMeasuredDropdownGeometryPolicy = hasMeasuredDropdownGeometryPolicy
            Me.HasNoParallelDropdownOrNativeWrapper = hasNoParallelDropdownOrNativeWrapper
        End Sub

        Friend ReadOnly Property Status As MASComboBoxReadinessStatus
        Friend ReadOnly Property ControlName As String
        Friend ReadOnly Property HasOfficialFloatDropdown As Boolean
        Friend ReadOnly Property HasReadOnlyItemGateway As Boolean
        Friend ReadOnly Property HasDropdownLifecycleForItemMutation As Boolean
        Friend ReadOnly Property HasKeyboardTraversalAndSearch As Boolean
        Friend ReadOnly Property HasSelectionSyncForOpenDropdown As Boolean
        Friend ReadOnly Property HasMeasuredDropdownGeometryPolicy As Boolean
        Friend ReadOnly Property HasNoParallelDropdownOrNativeWrapper As Boolean

        Friend ReadOnly Property IsReady As Boolean
            Get
                Return Status = MASComboBoxReadinessStatus.Ready AndAlso
                       HasOfficialFloatDropdown AndAlso
                       HasReadOnlyItemGateway AndAlso
                       HasDropdownLifecycleForItemMutation AndAlso
                       HasKeyboardTraversalAndSearch AndAlso
                       HasSelectionSyncForOpenDropdown AndAlso
                       HasMeasuredDropdownGeometryPolicy AndAlso
                       HasNoParallelDropdownOrNativeWrapper
            End Get
        End Property

        Friend Shared Function CreateCurrent() As MASComboBoxReadinessManifest
            Return New MASComboBoxReadinessManifest(
                status:=MASComboBoxReadinessStatus.Ready,
                controlName:="MASComboBox",
                hasOfficialFloatDropdown:=True,
                hasReadOnlyItemGateway:=True,
                hasDropdownLifecycleForItemMutation:=True,
                hasKeyboardTraversalAndSearch:=True,
                hasSelectionSyncForOpenDropdown:=True,
                hasMeasuredDropdownGeometryPolicy:=True,
                hasNoParallelDropdownOrNativeWrapper:=True)
        End Function
    End Class

End Namespace
