Teal TealUI

导航菜单ui/navMenu

基本用法
样式
API
NavMenu 类
NavMenuItem 接口

基本用法

import { VNode, render } from "ui/control";
import NavMenu from "ui/navMenu";

var navMenu = render(
    __root__,
    <NavMenu onItemClick={console.log} items={[{
        icon: "★",
        content: "菜单1",
        children: [
            {
                 icon: "★",
                content: "菜单2"
            },
            {
                 icon: "★",
                content: "菜单3"
            }
        ]
    }, {
        icon: "★",
        content: "菜单4"
    }]}>
    </NavMenu>
);

render(
    __root__,
    <button onClick={() => navMenu.toggleCollapse()}>切换折叠模式</button>
)

样式

<ul class="x-navmenu">
    <li class="x-navmenu-collapsable">
        <a href="javascript:;"><i class="x-icon">★</i><span>菜单1</span></a>
        <ul>
            <li class="x-navmenu-selected">
                <a href="javascript:;"><i class="x-icon">★</i><span>菜单2</span></a>
            </li>
            <li>
                <a href="javascript:;"><i class="x-icon">★</i><span>菜单2</span></a>
            </li>
            <li class="x-navmenu-collapsable">
                <a href="javascript:;"><i class="x-icon">★</i><span>菜单2</span></a>
                <ul>
                    <li>
                        <a href="javascript:;"><i class="x-icon">★</i><span>菜单3</span></a>
                        <ul class="x-navmenu-collapsable">
                            <li>
                                <a href="javascript:;"><i class="x-icon">★</i><span>菜单3</span></a>
                            </li>
                            <li>
                                <a href="javascript:;"><i class="x-icon">★</i><span>菜单3</span></a>
                            </li>
                            <li>
                                <a href="javascript:;"><i class="x-icon">★</i><span>菜单3</span></a>
                            </li>
                        </ul>
                    </li>
                    <li>
                        <a href="javascript:;"><i class="x-icon">★</i><span>菜单3</span></a>
                    </li>
                    <li>
                        <a href="javascript:;"><i class="x-icon">★</i><span>菜单3</span></a>
                    </li>
                </ul>
            </li>
            <li>
                <a href="javascript:;"><i class="x-icon">★</i><span>菜单2</span></a>
            </li>
        </ul>
    </li>
    <li class="x-navmenu-selected">
        <a href="javascript:;"><i class="x-icon">★</i><span>菜单1</span></a>
    </li>
    <li>
        <a href="javascript:;"><i class="x-icon">★</i><span>菜单1</span></a>
    </li>
    <li class="x-navmenu-collapsable">
        <a href="javascript:;"><i class="x-icon">★</i><span>菜单1</span></a>
        <ul>
            <li>
                <a href="javascript:;"><i class="x-icon">★</i><span>菜单2</span></a>
            </li>
        </ul>
    </li>
</ul>

API

NavMenu 类

继承自:Control

表示一个导航菜单。

字段 类型 描述 继承自
⮞ onSelect : (item: HTMLElement, e: MouseEvent, sender: NavMenu) => boolean | void

选择项事件。

function

选择项事件。

—
⮞ onChange : (e: MouseEvent, sender: NavMenu) => void

选中项改变事件。

function

选中项改变事件。

—
⮞ onCollapseChange : (e: MouseEvent, sender: NavMenu) => void

切换折叠事件。

function

切换折叠事件。

—
⮞ onItemCollapseChange : (item: HTMLElement, e: MouseEvent, sender: NavMenu) => void

切换项折叠事件。

function

切换项折叠事件。

—
⮞ items : NavMenuItem[]

菜单数据。

NavMenuItem[]

菜单数据。

—
⮞ selectedItem : HTMLElement

当前选中项。

说明

项是一个 <li> 节点。

HTMLElement

当前选中项。

—
⮞ collapsed : boolean

是否折叠整个菜单。

boolean

是否折叠整个菜单。

—
⮞ readyState : ControlState

获取当前控件的渲染状态。

继承自

Control

ControlState

获取当前控件的渲染状态。

Control
⮞ elem : HTMLElement

关联的元素。

继承自

Control

HTMLElement

关联的元素。

Control
⮞ vNode : VNode

(保护的)获取当前控件关联的虚拟节点。

继承自

Control

VNode

(保护的)获取当前控件关联的虚拟节点。

Control
⮞ sourceVNode : VNode

获取创建该控件使用的源虚拟节点。

继承自

Control

VNode

获取创建该控件使用的源虚拟节点。

Control
⮞ alwaysUpdate : boolean

控件是否使用主动更新模式。

继承自

Control

boolean

控件是否使用主动更新模式。

Control
⮞ body : HTMLElement

(只读)获取用于包含子控件和节点的根元素。

继承自

Control

HTMLElement

(只读)获取用于包含子控件和节点的根元素。

Control
⮞ duration : number = 200

渐变的持续毫秒数。如果为 0 则不使用渐变。

继承自

Control

number

渐变的持续毫秒数。如果为 0 则不使用渐变。

Control
⮞ class : string

CSS 类名。

继承自

Control

string

CSS 类名。

Control
⮞ hidden : boolean

是否隐藏。

继承自

Control

boolean

是否隐藏。

Control
⮞ style : string | { [key: string]: string | number; }

控件样式。

继承自

Control

string | object

控件样式。

Control
⮞ id : string

控件序号。

继承自

Control

string

控件序号。

Control
⮞ content : NodeLike

控件内容。

继承自

Control

NodeLike

控件内容。

Control
⮞ onSelectStart : (e: Event, sender: NavMenu) => void function

选择开始事件。

Control
⮞ onClick : (e: MouseEvent, sender: NavMenu) => void function

点击事件。

Control
⮞ onAuxClick : (e: MouseEvent, sender: NavMenu) => void function

中键点击事件。

Control
⮞ onDblClick : (e: MouseEvent, sender: NavMenu) => void function

双击事件。

Control
⮞ onContextMenu : (e: PointerEvent, sender: NavMenu) => void function

右键菜单事件。

Control
⮞ onMouseDown : (e: MouseEvent, sender: NavMenu) => void function

鼠标按下事件。

Control
⮞ onMouseUp : (e: MouseEvent, sender: NavMenu) => void function

鼠标按上事件。

Control
⮞ onMouseOver : (e: MouseEvent, sender: NavMenu) => void function

鼠标移入事件。

Control
⮞ onMouseOut : (e: MouseEvent, sender: NavMenu) => void function

鼠标移开事件。

Control
⮞ onMouseEnter : (e: MouseEvent, sender: NavMenu) => void function

鼠标进入事件。

Control
⮞ onMouseLeave : (e: MouseEvent, sender: NavMenu) => void function

鼠标离开事件。

Control
⮞ onMouseMove : (e: MouseEvent, sender: NavMenu) => void function

鼠标移动事件。

Control
⮞ onWheel : (e: WheelEvent, sender: NavMenu) => void function

鼠标滚轮事件。

Control
⮞ onScroll : (e: UIEvent, sender: NavMenu) => void function

滚动事件。

Control
⮞ onTouchStart : (e: TouchEvent, sender: NavMenu) => void function

触摸开始事件。

Control
⮞ onTouchMove : (e: TouchEvent, sender: NavMenu) => void function

触摸移动事件。

Control
⮞ onTouchEnd : (e: TouchEvent, sender: NavMenu) => void function

触摸结束事件。

Control
⮞ onTouchCancel : (e: TouchEvent, sender: NavMenu) => void function

触摸撤销事件。

Control
⮞ onPointerEnter : (e: PointerEvent, sender: NavMenu) => void function

指针进入事件。

Control
⮞ onPointerLeave : (e: PointerEvent, sender: NavMenu) => void function

指针离开事件。

Control
⮞ onPointerOver : (e: PointerEvent, sender: NavMenu) => void function

指针移入事件。

Control
⮞ onPointerOut : (e: PointerEvent, sender: NavMenu) => void function

指针移开事件。

Control
⮞ onPointerDown : (e: PointerEvent, sender: NavMenu) => void function

指针按下事件。

Control
⮞ onPointerMove : (e: PointerEvent, sender: NavMenu) => void function

指针移动事件。

Control
⮞ onPointerUp : (e: PointerEvent, sender: NavMenu) => void function

指针松开事件。

Control
⮞ onPointerCancel : (e: PointerEvent, sender: NavMenu) => void function

指针取消事件。

Control
⮞ onGotPointerCapture : (e: PointerEvent, sender: NavMenu) => void function

指针开始捕获事件。

Control
⮞ onLostPointerCapture : (e: PointerEvent, sender: NavMenu) => void function

指针停止捕获事件。

Control
方法 描述 继承自
⮞ handleItemClick(e, item)(e:MouseEvent, item:HTMLElement):void

(保护的)点击项事件。

参数 类型 描述 默认值
e* MouseEvent —
item* HTMLElement —

返回值

类型:void

(保护的)点击项事件。

—
⮞ buildMenu(items)(items:NavMenuItem[]):any[]

(保护的)从数据创建菜单项。

参数 类型 描述 默认值
items* NavMenuItem[] —

返回值

类型:any[]

返回每个菜单节点。

(保护的)从数据创建菜单项。

—
⮞ selectItem(item, ...)(item:HTMLElement, e?:MouseEvent):boolean

选择项。

参数 类型 描述 默认值
item* HTMLElement —
e MouseEvent —

返回值

类型:boolean

如果选择成功则返回 true,否则返回 false。

选择项。

—
⮞ toggleItemCollapse(item, ...)(item:HTMLElement, e?:MouseEvent):void

切换项的折叠状态。

参数 类型 描述 默认值
item* HTMLElement —
e MouseEvent —

返回值

类型:void

切换项的折叠状态。

—
⮞ handleItemPointerEnter(e, item)(e:MouseEvent, item:HTMLElement):void

(保护的)鼠标移入折叠项事件。

参数 类型 描述 默认值
e* MouseEvent —
item* HTMLElement —

返回值

类型:void

(保护的)鼠标移入折叠项事件。

—
⮞ handleItemPointerLeave(e, item)(e:MouseEvent, item:HTMLElement):void

(保护的)鼠标移出折叠项事件。

参数 类型 描述 默认值
e* MouseEvent —
item* HTMLElement —

返回值

类型:void

(保护的)鼠标移出折叠项事件。

—
⮞ toggleCollapse(...)(e?:MouseEvent):void

切换菜单折叠。

参数 类型 描述 默认值
e MouseEvent —

返回值

类型:void

切换菜单折叠。

—
⮞ render()():VNode

(保护的)

返回值

类型:VNode

继承自

Control

(保护的)(已覆盖)当被子类重写时负责返回当前控件的虚拟节点。

Control
⮞ init()():void

(保护的)

返回值

类型:void

继承自

Control

(保护的)(已覆盖)当被子类重写时负责在关联元素后初始化当前控件。

Control
⮞ uninit()():void

(保护的)当被子类重写时负责在元素被取消关联前取消初始化当前控件。

返回值

类型:void

继承自

Control

(保护的)当被子类重写时负责在元素被取消关联前取消初始化当前控件。

Control
⮞ update()():void

重新渲染当前控件。

返回值

类型:void

继承自

Control

重新渲染当前控件。

Control
⮞ layout(changes)(changes:Changes):void

重新布局当前控件。

参数 类型 描述 默认值
changes* Changes —

返回值

类型:void

继承自

Control

重新布局当前控件。

Control
⮞ invalidate()():void

使当前控件无效并在下一帧重新渲染。

返回值

类型:void

继承自

Control

使当前控件无效并在下一帧重新渲染。

Control
⮞ renderTo(parent, ...)(parent:Control | Node, refChild?:Control | Node):void

将当前控件渲染到指定的父控件或节点。

参数 类型 描述 默认值
parent* Control | Node —
refChild Control | Node —

返回值

类型:void

继承自

Control

将当前控件渲染到指定的父控件或节点。

Control
⮞ find(selector)(selector:string):Control | HTMLElement

在当前控件查找指定的子控件或节点。

参数 类型 描述 默认值
selector* string —

返回值

类型:Control | HTMLElement

返回子控件或节点。如果找不到则返回 null。

继承自

Control

在当前控件查找指定的子控件或节点。

Control
⮞ query(selector)(selector:string):(Control | HTMLElement)[]

在当前控件查找匹配的所有子控件或节点。

参数 类型 描述 默认值
selector* string —

返回值

类型:(Control | HTMLElement)[]

返回子控件或节点列表。

继承自

Control

在当前控件查找匹配的所有子控件或节点。

Control

NavMenuItem 接口

表示一个菜单项。

字段 类型 描述
⮞ icon : string

图标。

string

图标。

⮞ content : string

标题。

string

标题。

⮞ href : string

链接地址。

string

链接地址。

⮞ target : string

链接目标。

string

链接目标。

⮞ title : string

标题。

string

标题。

⮞ collapsed : boolean

是否默认折叠。

boolean

是否默认折叠。

⮞ selected : boolean

是否默认选中。

boolean

是否默认选中。

⮞ children : NavMenuItem[]

子菜单。

NavMenuItem[]

子菜单。