Teal TealUI

弹层控件ui/popup

所有弹层控件的抽象基类。

基本用法
箭头
弹层事件
API
Popup 类

基本用法

在任意元素后添加 <Popup /> 即可为该元素添加点击后显示的弹层。

import { VNode, render } from "ui/control";
import Popup from "ui/popup";

render(
    __root__,
    <div>
        <button>按钮</button>
        <Popup>我是弹层</Popup>
    </div>
);

箭头

设置 arrow=true 可显示箭头。箭头样式参考箭头。

import { VNode, render } from "ui/control";
import Popup from "ui/popup";

render(
    __root__,
    <div>
        <button>按钮</button>
        <Popup arrow={true}>我是弹层</Popup>
    </div>
);

弹层事件

使用 event 设置显示弹层的事件名。

import { VNode, render } from "ui/control";
import Popup from "ui/popup";

render(
    __root__,
    <div>
        <button>按钮</button>
        <Popup event="pointerenter">我是弹层</Popup>
    </div>
);
另参考

API

Popup 类

继承自:Control

表示一个弹层。

字段 类型 描述 继承自
⮞ target : HTMLElement

触发弹层显示的元素。

HTMLElement

触发弹层显示的元素。

—
⮞ event : "click" | "focus" | "dblclick" | "auxclick" | "contextmenu" | "pointerdown" | "pointerup" | "pointerenter" | "pointermove" | "hover" | "active" | "focusin" = "click"

触发弹层显示的事件。

说明

  • click(默认): 点击 target 后弹出,点击屏幕空白处消失。
  • dblclick: 双击 target 后弹出,点击屏幕空白处消失。
  • auxclick: 右击 target 后弹出,点击屏幕空白处消失。
  • pointerdown: 指针在 target 按下后弹出,点击屏幕空白处消失。
  • pointerup: 指针在 target 按出后弹出,点击屏幕空白处消失。
  • contextmenu:作为 target 右键菜单后弹出,点击屏幕空白处消失。
  • pointerenter: 指针移入 target 后自动弹出,移到屏幕空白处消失。
  • hover: 指针移入 target 后自动弹出,移出 target 后消失。
  • pointermove: 指针移入 target 后自动弹出,并跟随鼠标移动。
  • active:指针在 target 按下时显示,松开后消失。
  • focus: target 获取焦点后显示,失去焦点后后消失。
  • focusin:target 获取焦点后显示,点击屏幕空白处消失。
  • 其它:不绑定事件。
string

触发弹层显示的事件。

—
⮞ delay : number = 100

显示弹层的延时毫秒数。仅对指针移动事件有效。

number

显示弹层的延时毫秒数。仅对指针移动事件有效。

—
⮞ pinTarget : HTMLElement | Document | Rect = target

弹层对齐的目标节点或区域。

HTMLElement | Document | Rect

弹层对齐的目标节点或区域。

—
⮞ align : PinAlign = "bottomLeft"

弹层对齐的位置。如果为 null 则不自动对齐。

PinAlign

弹层对齐的位置。如果为 null 则不自动对齐。

—
⮞ margin : number = 0

元素的外边距,即对齐时元素和 pinTarget 的距离。

number

元素的外边距,即对齐时元素和 pinTarget 的距离。

—
⮞ container : HTMLElement | Document = document

容器节点或区域,定位超出容器后会自动调整。

HTMLElement | Document

容器节点或区域,定位超出容器后会自动调整。

—
⮞ containerPadding : number = 0

容器的内边距。

number

容器的内边距。

—
⮞ offset : number = 0

定位后的额外偏移距离。如果小于 1,则表示相对元素大小的百分比。

number

定位后的额外偏移距离。如果小于 1,则表示相对元素大小的百分比。

—
⮞ resize : boolean = false

如果容器比元素小,是否允许更改元素大小。

boolean

如果容器比元素小,是否允许更改元素大小。

—
⮞ animation : ToggleAnimation = "opacity"

显示弹层时使用的动画。

ToggleAnimation

显示弹层时使用的动画。

—
⮞ hideAnimation : ToggleAnimation = animation

隐藏弹层时使用的动画。

ToggleAnimation

隐藏弹层时使用的动画。

—
⮞ hideDuration : number = duration

隐藏动画的持续毫秒数。

number

隐藏动画的持续毫秒数。

—
⮞ timingFunction : string = "ease-in"

显示弹层时使用的动画渐变函数。

string

显示弹层时使用的动画渐变函数。

—
⮞ hideTimingFunction : string = timingFunction

隐藏弹层时使用的动画渐变函数。

string

隐藏弹层时使用的动画渐变函数。

—
⮞ autoHide : boolean = true

是否在点击屏幕空白处后消失。

boolean

是否在点击屏幕空白处后消失。

—
⮞ autoScroll : boolean = true

是否在滚动后自动重定位。

boolean

是否在滚动后自动重定位。

—
⮞ onShow : (sender: Popup) => void

弹层显示事件。

function

弹层显示事件。

—
⮞ onHide : (sender: Popup) => void

弹层隐藏事件。

function

弹层隐藏事件。

—
⮞ onAlign : (r: PinResult, sender: Popup) => void

弹层对齐事件。

function

弹层对齐事件。

—
⮞ disabled : boolean

是否禁用弹窗效果。

boolean

是否禁用弹窗效果。

—
⮞ arrow : boolean

是否显示箭头。

boolean

是否显示箭头。

—
⮞ arrowOffset : number

箭头指向位置偏移。如果小于 1 则表示相对于定位目标元素的偏移。

number

箭头指向位置偏移。如果小于 1 则表示相对于定位目标元素的偏移。

—
⮞ hidden : boolean

(已覆盖)(只读)是否隐藏。

继承自

Control

boolean

(已覆盖)(只读)是否隐藏。

Control
⮞ 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
⮞ style : string | { [key: string]: string | number; }

控件样式。

继承自

Control

string | object

控件样式。

Control
⮞ id : string

控件序号。

继承自

Control

string

控件序号。

Control
⮞ content : NodeLike

控件内容。

继承自

Control

NodeLike

控件内容。

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

选择开始事件。

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

点击事件。

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

中键点击事件。

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

双击事件。

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

右键菜单事件。

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

鼠标按下事件。

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

鼠标按上事件。

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

鼠标移入事件。

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

鼠标移开事件。

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

鼠标进入事件。

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

鼠标离开事件。

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

鼠标移动事件。

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

鼠标滚轮事件。

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

滚动事件。

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

触摸开始事件。

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

触摸移动事件。

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

触摸结束事件。

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

触摸撤销事件。

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

指针进入事件。

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

指针离开事件。

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

指针移入事件。

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

指针移开事件。

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

指针按下事件。

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

指针移动事件。

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

指针松开事件。

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

指针取消事件。

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

指针开始捕获事件。

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

指针停止捕获事件。

Control
方法 描述 继承自
⮞ show()():void

显示当前弹层。

返回值

类型:void

显示当前弹层。

—
⮞ hide()():void

隐藏当前弹层。

返回值

类型:void

隐藏当前弹层。

—
⮞ toggle(...)(value?:boolean):void

切换显示或隐藏当前弹层。

参数 类型 描述 默认值
value boolean —

返回值

类型:void

切换显示或隐藏当前弹层。

—
⮞ realign()():PinResult

重新对齐弹层的位置。

返回值

类型:PinResult

重新对齐弹层的位置。

—
⮞ handleDocumentPointerDown(e)(e:MouseEvent):void

(保护的)处理文档指针按下事件。

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

返回值

类型:void

(保护的)处理文档指针按下事件。

—
⮞ handleDocumentScroll(e)(e:MouseEvent):void

(保护的)处理文档滚动事件。

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

返回值

类型:void

(保护的)处理文档滚动事件。

—
⮞ render()():VNode

(保护的)

返回值

类型:VNode

继承自

Control

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

Control
⮞ layout()():void

返回值

类型:void

继承自

Control

(已覆盖)重新布局当前控件。

Control
⮞ init()():void

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

返回值

类型:void

继承自

Control

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

Control
⮞ uninit()():void

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

返回值

类型:void

继承自

Control

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

Control
⮞ update()():void

重新渲染当前控件。

返回值

类型: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
⮞ Popup.create(elem, target, ...)(elem:Control | HTMLElement, target:Control | HTMLElement, event?:string, align?:PinAlign, arrow?:boolean, animation?:ToggleAnimation):Popup

创建一个弹层。

参数 类型 描述 默认值
elem* Control | HTMLElement —
target* Control | HTMLElement —
event "click" | "focus" | "dblclick" | "auxclick" | "contextmenu" | "pointerdown" | "pointerup" | "pointerenter" | "pointermove" | "hover" | "active" | "focusin" —
align PinAlign —
arrow boolean —
animation ToggleAnimation —

返回值

类型:Popup

返回创建的弹层对象。

创建一个弹层。

—