///<inheritdoc/>
        protected async override Task OnAfterRenderAsync(bool firstRender)
        {
            await base.OnAfterRenderAsync(firstRender);

            if (firstRender)
            {
                JQueryElementRef = await JsRuntime.InvokeAsync <IJSObjectReference>("$", RootElement);

                //if (EnterTransition.HasValue )//to do add paramter
                //{
                //    ViewportVisibility.Apply();
                //    OnTopVisibilityUpdatedEvent += async d =>
                //    {
                //        Console.WriteLine("Should Play Animation");
                //        if (!isEnterAnimationPlayed)
                //        {
                //            await Animator.AnimatedShow(EnterTransition.Value, EnterTransitionDuration);
                //            isEnterAnimationPlayed = true;
                //        }
                //    };
                //}
                //else
                if (EnterTransition.HasValue)
                {
                    if (!isEnterAnimationPlayed)
                    {
                        await Animator.AnimatedShow(EnterTransition.Value, EnterTransitionDuration);

                        isEnterAnimationPlayed = true;
                    }
                }
            }
        }