Browse Source

fix(tabs): 修复下载中心tab切换选中问题

master
peijunlei 2 weeks ago
parent
commit
3aa2e834b0
  1. 8
      public/themes/dist_static/static/js/download.js
  2. 18
      public/themes/website/1/zh/demo/download.html

8
public/themes/dist_static/static/js/download.js

@ -40,16 +40,19 @@ $(function() {
if (!tabId) return; if (!tabId) return;
const $dropdownItem = $(`.d-tabs__dropdown-item[data-tab="${tabId}"]`).first(); const $dropdownItem = $(`.d-tabs__dropdown-item[data-tab="${tabId}"]`).first();
if ($dropdownItem.length) { if ($dropdownItem.length) {
$dropdownItem.addClass("is-active").siblings().removeClass("is-active");
$(".d-tabs__dropdown-item").removeClass("is-active");
$dropdownItem.addClass("is-active");
const $trigger = $dropdownItem.closest(".d-tabs__group").find("[data-dropdown-trigger]"); const $trigger = $dropdownItem.closest(".d-tabs__group").find("[data-dropdown-trigger]");
$trigger.find("span").text($dropdownItem.text()); $trigger.find("span").text($dropdownItem.text());
activateTab($trigger); activateTab($trigger);
return; return;
} }
$(".d-tabs__dropdown-item").removeClass("is-active");
const $target = $(`.d-tabs__item[data-tab="${tabId}"]`).first(); const $target = $(`.d-tabs__item[data-tab="${tabId}"]`).first();
if ($target.length) activateTab($target); if ($target.length) activateTab($target);
}; };
$(".d-tabs__item:not([data-dropdown-trigger])").on("click", function() { $(".d-tabs__item:not([data-dropdown-trigger])").on("click", function() {
$(".d-tabs__dropdown-item").removeClass("is-active");
activateTab($(this)); activateTab($(this));
closeDropdowns(); closeDropdowns();
}); });
@ -65,7 +68,8 @@ $(function() {
}); });
$(".d-tabs__dropdown-item").on("click", function() { $(".d-tabs__dropdown-item").on("click", function() {
const $item = $(this); const $item = $(this);
$item.addClass("is-active").siblings().removeClass("is-active");
$(".d-tabs__dropdown-item").removeClass("is-active");
$item.addClass("is-active");
const $trigger = $item.closest(".d-tabs__group").find("[data-dropdown-trigger]"); const $trigger = $item.closest(".d-tabs__group").find("[data-dropdown-trigger]");
$trigger.find("span").text($item.text()); $trigger.find("span").text($item.text());
activateTab($trigger); activateTab($trigger);

18
public/themes/website/1/zh/demo/download.html

@ -64,10 +64,18 @@
</div> </div>
<div class="d-toolbar"> <div class="d-toolbar">
<div class="d-tabs" role="tablist" aria-label="资料分类"> <div class="d-tabs" role="tablist" aria-label="资料分类">
<button type="button" class="d-tabs__item is-active" role="tab" data-tab="{$current_cate.id}" aria-selected="true">全部</button>
{php}
$download_cid = (string)input('cid', '');
if ($download_cid === '') {
$download_cid = (string)($current_cate['id'] ?? '');
}
$download_all_id = (string)($current_cate['id'] ?? '');
{/php}
<button type="button" class="d-tabs__item{if $download_cid == $download_all_id} is-active{/if}" role="tab" data-tab="{$current_cate.id}" aria-selected="{if $download_cid == $download_all_id}true{else /}false{/if}">全部</button>
{volist name="sub_cates" id="vo"} {volist name="sub_cates" id="vo"}
{php} {php}
$count = getCategoryChildrenCount($vo['id']); $count = getCategoryChildrenCount($vo['id']);
$vo_id = (string)($vo['id'] ?? '');
{/php} {/php}
{if $count > 0} {if $count > 0}
<div class="d-tabs__group"> <div class="d-tabs__group">
@ -77,14 +85,14 @@
<path d="M0.636353 0.636272L5.63635 5.63627L10.6364 0.63623" stroke="currentColor" stroke-width="1.8" /> <path d="M0.636353 0.636272L5.63635 5.63627L10.6364 0.63623" stroke="currentColor" stroke-width="1.8" />
</svg> </svg>
</button> </button>
{hcTaglib:subcategory pid="$vo.id" item="child" sort=""}
<div class="d-tabs__dropdown" data-dropdown hidden> <div class="d-tabs__dropdown" data-dropdown hidden>
<button type="button" class="d-tabs__dropdown-item is-active" data-tab="{$child.id}">{$child.title}</button>
{hcTaglib:subcategory pid="$vo.id" item="child" sort=""}
<button type="button" class="d-tabs__dropdown-item{if $download_cid == $child['id']} is-active{/if}" data-tab="{$child.id}">{$child.title}</button>
{/hcTaglib:subcategory}
</div> </div>
{/hcTaglib:subcategory}
</div> </div>
{else} {else}
<button type="button" class="d-tabs__item" role="tab" aria-selected="false" data-tab="{$vo.id}">{$vo.title}</button>
<button type="button" class="d-tabs__item{if $download_cid == $vo_id} is-active{/if}" role="tab" aria-selected="{if $download_cid == $vo_id}true{else /}false{/if}" data-tab="{$vo.id}">{$vo.title}</button>
{/if} {/if}
{/volist} {/volist}
</div> </div>

Loading…
Cancel
Save