手风琴ui/accordion
手风琴即多个面板的组合。
基本用法
import { VNode, render } from "ui/control";
import Accordion from "ui/accordion";
import Panel from "ui/panel";
render(
__root__,
<Accordion selectedIndex={1}>
<Panel title="标题">你好</Panel>
<Panel title="标题">你好</Panel>
<Panel title="标题">你好</Panel>
</Accordion>
);
允许多开
import { VNode, render } from "ui/control";
import Accordion from "ui/accordion";
import Panel from "ui/panel";
render(
__root__,
<Accordion multiply>
<Panel title="标题">你好</Panel>
<Panel title="标题">你好</Panel>
<Panel title="标题" collapsed>你好</Panel>
</Accordion>
);
样式
正文 1
正文 2
正文 3
<div class="x-accordion">
<section class="x-panel x-panel-collapsable x-panel-collapsed">
<header class="x-panel-header">
标题 1
</header>
<div class="x-panel-body">
正文 1
</div>
</section>
<section class="x-panel x-panel-collapsable">
<header class="x-panel-header">
标题 2
</header>
<div class="x-panel-body">
正文 2
</div>
</section>
<section class="x-panel x-panel-collapsable x-panel-collapsed">
<header class="x-panel-header">
标题 3
</header>
<div class="x-panel-body">
正文 3
</div>
</section>
</div>
API
Accordion 类
继承自:Control
表示一个手风琴。
字段 | 类型 | 描述 | 继承自 |
---|---|---|---|
⮞
multiply
: boolean
是否允许同时开多个面板。 |
boolean
|
是否允许同时开多个面板。 |
— |
⮞
onCollapseChange
: (panel: Panel, sender: Accordion) => void
切换折叠事件。 |
function
|
切换折叠事件。 |
— |
⮞
selectedIndex
: number
选中的索引。 |
number
|
选中的索引。 |
— |
⮞
panels
: Panel[]
(只读)获取所有面板。 |
Panel[]
|
(只读)获取所有面板。 |
— |
⮞
handlePanelBeforeCollapseChange
: (value: boolean, sender: Panel) => boolean = (value: boolean, sender: Panel) => {
if (this._ignoreChange) {
return;
}
if (!this.multiply) {
const selectedIndex = this.selectedIndex;
if (selectedIndex < 0) {
return;
}
if (this.panels[selectedIndex] !== sender) {
this._ignoreChange = true;
this.panels[selectedIndex].toggleCollapse(true);
this._ignoreChange = false;
} else if (value) {
return false;
}
this.selectedIndex = this.panels.indexOf(sender);
}
this.onCollapseChange && this.onCollapseChange(sender, this);
}
(保护的)处理面板即将折叠事件。 |
function
|
(保护的)处理面板即将折叠事件。 |
— |
⮞
readyState
: ControlState
|
ControlState
|
获取当前控件的渲染状态。 |
Control |
⮞
elem
: HTMLElement
|
HTMLElement
|
关联的元素。 |
Control |
⮞
vNode
: VNode
|
VNode
|
(保护的)获取当前控件关联的虚拟节点。 |
Control |
⮞
sourceVNode
: VNode
|
VNode
|
获取创建该控件使用的源虚拟节点。 |
Control |
⮞
alwaysUpdate
: boolean
|
boolean
|
控件是否使用主动更新模式。 |
Control |
⮞
body
: HTMLElement
|
HTMLElement
|
(只读)获取用于包含子控件和节点的根元素。 |
Control |
⮞
duration
: number = 200
|
number
|
渐变的持续毫秒数。如果为 0 则不使用渐变。 |
Control |
⮞
class
: string
|
string
|
CSS 类名。 |
Control |
⮞
style
: string | { [key: string]: string | number; }
|
string | object
|
控件样式。 |
Control |
⮞
id
: string
|
string
|
控件序号。 |
Control |
⮞
content
: NodeLike
|
NodeLike
|
控件内容。 |
Control |
⮞
onSelectStart
: (e: Event, sender: Accordion) => void
|
function
|
选择开始事件。 |
Control |
⮞
onClick
: (e: MouseEvent, sender: Accordion) => void
|
function
|
点击事件。 |
Control |
⮞
onAuxClick
: (e: MouseEvent, sender: Accordion) => void
|
function
|
中键点击事件。 |
Control |
⮞
onDblClick
: (e: MouseEvent, sender: Accordion) => void
|
function
|
双击事件。 |
Control |
⮞
onContextMenu
: (e: PointerEvent, sender: Accordion) => void
|
function
|
右键菜单事件。 |
Control |
⮞
onMouseDown
: (e: MouseEvent, sender: Accordion) => void
|
function
|
鼠标按下事件。 |
Control |
⮞
onMouseUp
: (e: MouseEvent, sender: Accordion) => void
|
function
|
鼠标按上事件。 |
Control |
⮞
onMouseOver
: (e: MouseEvent, sender: Accordion) => void
|
function
|
鼠标移入事件。 |
Control |
⮞
onMouseOut
: (e: MouseEvent, sender: Accordion) => void
|
function
|
鼠标移开事件。 |
Control |
⮞
onMouseEnter
: (e: MouseEvent, sender: Accordion) => void
|
function
|
鼠标进入事件。 |
Control |
⮞
onMouseLeave
: (e: MouseEvent, sender: Accordion) => void
|
function
|
鼠标离开事件。 |
Control |
⮞
onMouseMove
: (e: MouseEvent, sender: Accordion) => void
|
function
|
鼠标移动事件。 |
Control |
⮞
onWheel
: (e: WheelEvent, sender: Accordion) => void
|
function
|
鼠标滚轮事件。 |
Control |
⮞
onScroll
: (e: UIEvent, sender: Accordion) => void
|
function
|
滚动事件。 |
Control |
⮞
onTouchStart
: (e: TouchEvent, sender: Accordion) => void
|
function
|
触摸开始事件。 |
Control |
⮞
onTouchMove
: (e: TouchEvent, sender: Accordion) => void
|
function
|
触摸移动事件。 |
Control |
⮞
onTouchEnd
: (e: TouchEvent, sender: Accordion) => void
|
function
|
触摸结束事件。 |
Control |
⮞
onTouchCancel
: (e: TouchEvent, sender: Accordion) => void
|
function
|
触摸撤销事件。 |
Control |
⮞
onPointerEnter
: (e: PointerEvent, sender: Accordion) => void
|
function
|
指针进入事件。 |
Control |
⮞
onPointerLeave
: (e: PointerEvent, sender: Accordion) => void
|
function
|
指针离开事件。 |
Control |
⮞
onPointerOver
: (e: PointerEvent, sender: Accordion) => void
|
function
|
指针移入事件。 |
Control |
⮞
onPointerOut
: (e: PointerEvent, sender: Accordion) => void
|
function
|
指针移开事件。 |
Control |
⮞
onPointerDown
: (e: PointerEvent, sender: Accordion) => void
|
function
|
指针按下事件。 |
Control |
⮞
onPointerMove
: (e: PointerEvent, sender: Accordion) => void
|
function
|
指针移动事件。 |
Control |
⮞
onPointerUp
: (e: PointerEvent, sender: Accordion) => void
|
function
|
指针松开事件。 |
Control |
⮞
onPointerCancel
: (e: PointerEvent, sender: Accordion) => void
|
function
|
指针取消事件。 |
Control |
⮞
onGotPointerCapture
: (e: PointerEvent, sender: Accordion) => void
|
function
|
指针开始捕获事件。 |
Control |
⮞
onLostPointerCapture
: (e: PointerEvent, sender: Accordion) => void
|
function
|
指针停止捕获事件。 |
Control |
方法 | 描述 | 继承自 |
---|---|---|
⮞
render()():
|
(保护的)(已覆盖)当被子类重写时负责返回当前控件的虚拟节点。 |
Control |
⮞
layout()():
|
(已覆盖)重新布局当前控件。 |
Control |
⮞
init()():
|
(保护的)当被子类重写时负责在关联元素后初始化当前控件。 |
Control |
⮞
uninit()():
|
(保护的)当被子类重写时负责在元素被取消关联前取消初始化当前控件。 |
Control |
⮞
update()():
|
重新渲染当前控件。 |
Control |
⮞
invalidate()():
|
使当前控件无效并在下一帧重新渲染。 |
Control |
⮞
renderTo(parent, ...)(parent:
|
将当前控件渲染到指定的父控件或节点。 |
Control |
⮞
find(selector)(selector:
|
在当前控件查找指定的子控件或节点。 |
Control |
⮞
query(selector)(selector:
|
在当前控件查找匹配的所有子控件或节点。 |
Control |