* zin: add collapse btn wg.
This commit is contained in:
@@ -1354,6 +1354,17 @@ function backBtn(): backBtn
|
||||
return createWg('backBtn', func_get_args());
|
||||
}
|
||||
|
||||
/**
|
||||
* Collapse btn widget.
|
||||
*
|
||||
* string target
|
||||
* string parent
|
||||
*/
|
||||
function collapseBtn(): collapseBtn
|
||||
{
|
||||
return createWg('collapseBtn', func_get_args());
|
||||
}
|
||||
|
||||
/**
|
||||
* Main navbar widget.
|
||||
*
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
namespace zin;
|
||||
|
||||
require_once dirname(__DIR__) . DS . 'btn' . DS . 'v1.php';
|
||||
|
||||
class collapseBtn extends wg
|
||||
{
|
||||
protected static $defineProps = array(
|
||||
'target: string', // 展开折叠的目标元素选择器。
|
||||
'parent: string' // 目标元素与按钮共同的父级元素选择器,使用 closest 辅助目标元素的确定。
|
||||
);
|
||||
|
||||
protected function build()
|
||||
{
|
||||
$target = $this->prop('target');
|
||||
$parent = $this->prop('parent');
|
||||
|
||||
return btn
|
||||
(
|
||||
setClass('btn-link', 'collapse-btn'),
|
||||
set::icon('angle-down'),
|
||||
on::click
|
||||
(
|
||||
<<<FUNC
|
||||
const btn = event.target.closest('.collapse-btn');
|
||||
const icon = btn.querySelector('.icon');
|
||||
icon.classList.toggle('icon-angle-down');
|
||||
icon.classList.toggle('icon-angle-top');
|
||||
|
||||
const parent = btn.closest('$parent');
|
||||
const target = parent.querySelector('$target');
|
||||
if(target) target.classList.toggle('hidden');
|
||||
FUNC
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -3,4 +3,4 @@
|
||||
.nav-tabs>.nav-item>a:before {background: none;}
|
||||
.nav-tabs>.nav-item>a.active {color: var(--color-primary-500);}
|
||||
.nav-tabs>.nav-item>a.active:after {border-bottom-color: var(--color-primary-500) !important; border-bottom-width: 2px;}
|
||||
.tabs .btn-collapse {position: absolute; top: 16px; right: 24px; width: 24px; height: 24px;}
|
||||
.tabs .collapse-btn {position: absolute; top: 16px; right: 24px; width: 24px; height: 24px;}
|
||||
|
||||
+3
-15
@@ -94,22 +94,10 @@ class tabs extends wg
|
||||
$collapse = $this->prop('collapse');
|
||||
if(!$collapse) return null;
|
||||
|
||||
return btn
|
||||
return collapseBtn
|
||||
(
|
||||
setClass('btn-link', 'btn-collapse'),
|
||||
set::icon('angle-down'),
|
||||
on::click
|
||||
(
|
||||
<<<FUNC
|
||||
const btn = event.target;
|
||||
const icon = btn.querySelector('.icon');
|
||||
const tabs = btn.closest('.tabs');
|
||||
const tabContent = tabs.querySelector('.tab-content');
|
||||
if(tabContent) tabContent.classList.toggle('hidden');
|
||||
icon.classList.toggle('icon-angle-down');
|
||||
icon.classList.toggle('icon-angle-top');
|
||||
FUNC
|
||||
)
|
||||
set::target('.tab-content'),
|
||||
set::parent('.tabs')
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user