diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tooltip/AbpTooltipTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tooltip/AbpTooltipTagHelperService.cs index 006ccbc856..f95a0097cd 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tooltip/AbpTooltipTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tooltip/AbpTooltipTagHelperService.cs @@ -1,4 +1,6 @@ -using Microsoft.AspNetCore.Razor.TagHelpers; +using System; +using System.Linq; +using Microsoft.AspNetCore.Razor.TagHelpers; namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tooltip { @@ -6,19 +8,40 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tooltip { public override void Process(TagHelperContext context, TagHelperOutput output) { + if (IsButtonDisabled(context, output)) + { + SetParentElementWithTooltip(context, output); + return; + } + SetDataToggle(context, output); SetDataPlacement(context, output); SetTooltipTitle(context, output); } + protected virtual void SetParentElementWithTooltip(TagHelperContext context, TagHelperOutput output) + { + var directory = GetDirectory() != TooltipDirectory.Default ? GetDirectory() : TooltipDirectory.Top; + output.Attributes.Add("data-placement", directory.ToString().ToLowerInvariant()); + + output.PreElement.SetHtmlContent( + "" + Environment.NewLine); + + output.PostElement.SetHtmlContent(Environment.NewLine + ""); + + output.Attributes.Add("style", "pointer-events: none;"); + } + protected virtual void SetDataToggle(TagHelperContext context, TagHelperOutput output) { - output.Attributes.Add("data-toggle","tooltip"); + output.Attributes.Add("data-toggle", "tooltip"); } protected virtual void SetDataPlacement(TagHelperContext context, TagHelperOutput output) { - var directory = GetDirectory() != TooltipDirectory.Default ? GetDirectory() : TooltipDirectory.Bottom; + var directory = GetDirectory() != TooltipDirectory.Default ? GetDirectory() : TooltipDirectory.Top; output.Attributes.Add("data-placement", directory.ToString().ToLowerInvariant()); } @@ -65,5 +88,10 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tooltip return TooltipDirectory.Default; } + + protected virtual bool IsButtonDisabled(TagHelperContext context, TagHelperOutput output) + { + return output.Attributes.Any(a => a.Name == "disabled"); + } } } \ No newline at end of file