/// <inheritdoc/>
        public void NotifyFocusableComponentInitialized(IFocusableComponent focusableComponent)
        {
            if (focusableComponent == null)
            {
                return;
            }

            if (!FocusableComponents.Contains(focusableComponent))
            {
                FocusableComponents.Add(focusableComponent);
            }
        }
        /// <inheritdoc/>
        public void NotifyFocusableComponentRemoved(IFocusableComponent focusableComponent)
        {
            if (focusableComponent == null)
            {
                return;
            }

            if (FocusableComponents.Contains(focusableComponent))
            {
                FocusableComponents.Remove(focusableComponent);
            }
        }
        /// <summary>
        /// Handles the focus of the nested component.
        /// </summary>
        /// <returns></returns>
        protected Task HandleFocusableComponent()
        {
            // only one component can be focused
            if (HasFocusableComponents)
            {
                var firstFocusableComponent = FocusableComponents.FirstOrDefault(x => x.Autofocus);

                // take first component if Autofocus is unspecified
                if (firstFocusableComponent == null)
                {
                    firstFocusableComponent = FocusableComponents.FirstOrDefault();
                }

                if (firstFocusableComponent != null)
                {
                    return(firstFocusableComponent.Focus());
                }
            }

            return(Task.CompletedTask);
        }