Skip to content

Commit 139ca2f

Browse files
committed
feat: 增加 Capsule 模式
1 parent 8518bf8 commit 139ca2f

4 files changed

Lines changed: 94 additions & 11 deletions

File tree

src/BootstrapBlazor/Components/Tab/Tab.razor

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,11 @@ else
129129
<div role="tab" class="@GetClassString(item)">
130130
@RenderHeaderContent(item)
131131
</div>
132-
<i class="tab-corner tab-corner-left"></i>
133-
<i class="tab-corner tab-corner-right"></i>
132+
@if (TabStyle == TabStyle.Chrome)
133+
{
134+
<i class="tab-corner tab-corner-left"></i>
135+
<i class="tab-corner tab-corner-right"></i>
136+
}
134137
</div>;
135138

136139
RenderFragment RenderDefaultDisabledHeader(TabItem item) =>
@@ -143,8 +146,11 @@ else
143146
<a href="@item.Url" role="tab" tabindex="-1" class="@GetClassString(item)" @onclick="@(() => OnClickTabItem(item))" @onclick:preventDefault="@(!ClickTabToNavigation)" draggable="@DraggableString">
144147
@RenderHeaderContent(item)
145148
</a>
146-
<i class="tab-corner tab-corner-left"></i>
147-
<i class="tab-corner tab-corner-right"></i>
149+
@if (TabStyle == TabStyle.Chrome)
150+
{
151+
<i class="tab-corner tab-corner-left"></i>
152+
<i class="tab-corner tab-corner-right"></i>
153+
}
148154
</div>;
149155

150156
RenderFragment RenderDefaultHeader(TabItem item) =>

src/BootstrapBlazor/Components/Tab/Tab.razor.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ public partial class Tab : IHandlerException
4545
.AddClass($"tabs-{Placement.ToDescriptionString()}", Placement == Placement.Top || Placement == Placement.Right || Placement == Placement.Bottom || Placement == Placement.Left)
4646
.AddClass("tabs-vertical", Placement == Placement.Left || Placement == Placement.Right)
4747
.AddClass("tabs-chrome", TabStyle == TabStyle.Chrome)
48+
.AddClass("tabs-capsule", TabStyle == TabStyle.Capsule)
4849
.AddClassFromAttributes(AdditionalAttributes)
4950
.Build();
5051

@@ -878,9 +879,9 @@ public async Task DragItemCallback(int originIndex, int currentIndex)
878879

879880
private string? GetIdByTabItem(TabItem item) => (ShowFullScreen && item.ShowFullScreen) ? ComponentIdGenerator.Generate(item) : null;
880881

881-
private RenderFragment RenderDisabledHeaderByStyle(TabItem item) => TabStyle == TabStyle.Chrome ? RenderChromeDisabledHeader(item) : RenderDefaultDisabledHeader(item);
882+
private RenderFragment RenderDisabledHeaderByStyle(TabItem item) => TabStyle == TabStyle.Default ? RenderDefaultDisabledHeader(item) : RenderChromeDisabledHeader(item);
882883

883-
private RenderFragment RenderHeaderByStyle(TabItem item) => TabStyle == TabStyle.Chrome ? RenderChromeHeader(item) : RenderDefaultHeader(item);
884+
private RenderFragment RenderHeaderByStyle(TabItem item) => TabStyle == TabStyle.Default ? RenderDefaultHeader(item) : RenderChromeHeader(item);
884885

885886
/// <summary>
886887
/// <inheritdoc/>

src/BootstrapBlazor/Components/Tab/Tab.razor.scss

Lines changed: 75 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -488,17 +488,20 @@
488488
}
489489
}
490490

491-
.tabs-chrome {
491+
.tabs-chrome > .tabs-header {
492492
--bb-tabs-header-bg-color: var(--bs-border-color);
493493
--bb-tabs-item-hover-bg-color: rgba(var(--bs-body-color-rgb), 0.1);
494494
--bb-tabs-item-active-bg-color: var(--bs-body-bg);
495495
--bb-tabs-item-active-color: var(--bs-body-color);
496496
--bb-tabs-item-hover-color: var(--bs-body-color);
497497

498+
.tabs-nav {
499+
background-color: var(--bb-tabs-header-bg-color);
500+
}
501+
498502
.tabs-item-wrap {
499503
overflow: hidden;
500504
position: relative;
501-
background-color: var(--bb-tabs-header-bg-color);
502505
display: flex;
503506
align-items: flex-end;
504507
flex-shrink: 0;
@@ -531,7 +534,6 @@
531534
}
532535

533536
.tabs-item {
534-
background-color: var(--bb-tabs-header-bg-color);
535537
border: none !important;
536538
border-top-left-radius: 10px;
537539
border-top-right-radius: 10px;
@@ -598,8 +600,77 @@
598600
}
599601
}
600602

601-
> .tabs-header .tabs-item-fix {
603+
.tabs-item-fix {
604+
border: none;
605+
}
606+
}
607+
608+
.tabs-capsule > .tabs-header {
609+
--bb-tabs-header-bg-color: var(--bs-border-color);
610+
--bb-tabs-item-bg-color: rgba(var(--bs-body-color-rgb), 0.08);
611+
--bb-tabs-item-hover-bg-color: rgba(var(--bs-body-color-rgb), 0.1);
612+
--bb-tabs-item-active-bg-color: var(--bs-body-bg);
613+
--bb-tabs-item-active-color: var(--bs-body-color);
614+
--bb-tabs-item-hover-color: var(--bs-body-color);
615+
616+
.tabs-nav {
602617
background-color: var(--bb-tabs-header-bg-color);
618+
}
619+
620+
.tabs-item-wrap {
621+
margin-left: .5rem;
622+
623+
&.active {
624+
.tabs-item {
625+
.tabs-item-body {
626+
background-color: var(--bb-tabs-item-active-bg-color);
627+
}
628+
}
629+
}
630+
631+
&:not(.active) {
632+
.tabs-item:not(.disabled) .tabs-item-body {
633+
&:hover {
634+
background-color: var(--bb-tabs-item-hover-bg-color);
635+
}
636+
}
637+
}
638+
639+
.tabs-item {
640+
padding: 0;
641+
642+
.tabs-item-body {
643+
padding: 4px 10px;
644+
display: flex;
645+
align-items: center;
646+
flex-wrap: nowrap;
647+
border-radius: 14.5px;
648+
background-color: var(--bb-tabs-item-bg-color);
649+
650+
.tabs-item-text {
651+
padding: 0 .5rem;
652+
}
653+
654+
.tabs-item-close {
655+
display: flex;
656+
position: unset;
657+
width: 21px;
658+
height: 21px;
659+
border-radius: 50%;
660+
}
661+
}
662+
663+
.tabs-item-close {
664+
display: flex;
665+
position: unset;
666+
width: 21px;
667+
height: 21px;
668+
border-radius: 50%;
669+
}
670+
}
671+
}
672+
673+
.tabs-item-fix {
603674
border: none;
604675
}
605676
}

src/BootstrapBlazor/Enums/TabStyle.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,10 @@ public enum TabStyle
1818
/// <summary>
1919
/// The Chrome style
2020
/// </summary>
21-
Chrome
21+
Chrome,
22+
23+
/// <summary>
24+
/// The Capsule style
25+
/// </summary>
26+
Capsule
2227
}

0 commit comments

Comments
 (0)