指令

外部点击指令 AsamClickOutside

在鼠标按下和抬起均位于目标之外时通知宿主。

使用场景 ​

在鼠标按下和抬起均位于目标之外时通知宿主。

外部点击关闭 ​

打开局部面板,内部点击不会关闭;点击旁边的外部按钮会关闭。

外部点击关闭

展开源码

使用约定 ​

绑定函数接收 mouseup、mousedown 两个原始事件。动态参数可以排除一个元素或元素数组;使用时让排除元素来自本例 refs。组件卸载时指令移除登记。它只判断外部点击,不提供显隐状态或焦点陷阱。

组合职责与生命周期 ​

SFC 命名 vAsamClickOutside 后使用 v-asam-click-outside。真实 mousedown/mouseup 序列始末均位于外部时调用回调,宿主内部及排除元素不触发;绑定值更新替换回调,卸载后移除登记。它只报告外部操作,关闭状态由业务回调决定。

API

指令 AsamClickOutside

属性名说明类型默认值
created—DirectiveHook<HTMLElement, null, AsamClickOutsideBinding, string, AsamClickOutsideExcludes> | undefined—
beforeMount—DirectiveHook<HTMLElement, null, AsamClickOutsideBinding, string, AsamClickOutsideExcludes> | undefined—
mounted—DirectiveHook<HTMLElement, null, AsamClickOutsideBinding, string, AsamClickOutsideExcludes> | undefined—
beforeUpdate—DirectiveHook<HTMLElement, VNode<any, HTMLElement, { [key: string]: any; }>, AsamClickOutsideBinding, string, AsamClickOutsideExcludes> | undefined—
updated—DirectiveHook<HTMLElement, VNode<any, HTMLElement, { [key: string]: any; }>, AsamClickOutsideBinding, string, AsamClickOutsideExcludes> | undefined—
beforeUnmount—DirectiveHook<HTMLElement, null, AsamClickOutsideBinding, string, AsamClickOutsideExcludes> | undefined—
unmounted—DirectiveHook<HTMLElement, null, AsamClickOutsideBinding, string, AsamClickOutsideExcludes> | undefined—
getSSRProps—(typeof AsamClickOutside)["getSSRProps"]—
deep—boolean | undefined—
install—(app: App) => void—

类型 AsamClickOutsideBinding

ts
(mouseup: MouseEvent, mousedown: MouseEvent): void

类型 AsamClickOutsideExcludes

类型 AsamClickOutsideDirective

属性名说明类型默认值
created—DirectiveHook<HTMLElement, null, AsamClickOutsideBinding, string, AsamClickOutsideExcludes> | undefined—
beforeMount—DirectiveHook<HTMLElement, null, AsamClickOutsideBinding, string, AsamClickOutsideExcludes> | undefined—
mounted—DirectiveHook<HTMLElement, null, AsamClickOutsideBinding, string, AsamClickOutsideExcludes> | undefined—
beforeUpdate—DirectiveHook<HTMLElement, VNode<any, HTMLElement, { [key: string]: any; }>, AsamClickOutsideBinding, string, AsamClickOutsideExcludes> | undefined—
updated—DirectiveHook<HTMLElement, VNode<any, HTMLElement, { [key: string]: any; }>, AsamClickOutsideBinding, string, AsamClickOutsideExcludes> | undefined—
beforeUnmount—DirectiveHook<HTMLElement, null, AsamClickOutsideBinding, string, AsamClickOutsideExcludes> | undefined—
unmounted—DirectiveHook<HTMLElement, null, AsamClickOutsideBinding, string, AsamClickOutsideExcludes> | undefined—
getSSRProps—(AsamClickOutsideDirective)["getSSRProps"]—
deep—boolean | undefined—
install—(app: App) => void—
参数与事件补充说明

参数与事件说明

created

必填:否;声明来源:依赖声明。

created 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(el: HTMLElement, binding: DirectiveBinding<AsamClickOutsideBinding, string, AsamClickOutsideExcludes>, vnode: VNode<any, HTMLElement, { [key: string]: any; }>, prevVNode: null): void

beforeMount

必填:否;声明来源:依赖声明。

beforeMount 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(el: HTMLElement, binding: DirectiveBinding<AsamClickOutsideBinding, string, AsamClickOutsideExcludes>, vnode: VNode<any, HTMLElement, { [key: string]: any; }>, prevVNode: null): void

mounted

必填:否;声明来源:依赖声明。

mounted 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(el: HTMLElement, binding: DirectiveBinding<AsamClickOutsideBinding, string, AsamClickOutsideExcludes>, vnode: VNode<any, HTMLElement, { [key: string]: any; }>, prevVNode: null): void

beforeUpdate

必填:否;声明来源:依赖声明。

beforeUpdate 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(el: HTMLElement, binding: DirectiveBinding<AsamClickOutsideBinding, string, AsamClickOutsideExcludes>, vnode: VNode<any, HTMLElement, { [key: string]: any; }>, prevVNode: VNode<any, HTMLElement, { [key: string]: any; }>): void

updated

必填:否;声明来源:依赖声明。

updated 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(el: HTMLElement, binding: DirectiveBinding<AsamClickOutsideBinding, string, AsamClickOutsideExcludes>, vnode: VNode<any, HTMLElement, { [key: string]: any; }>, prevVNode: VNode<any, HTMLElement, { [key: string]: any; }>): void

beforeUnmount

必填:否;声明来源:依赖声明。

beforeUnmount 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(el: HTMLElement, binding: DirectiveBinding<AsamClickOutsideBinding, string, AsamClickOutsideExcludes>, vnode: VNode<any, HTMLElement, { [key: string]: any; }>, prevVNode: null): void

unmounted

必填:否;声明来源:依赖声明。

unmounted 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(el: HTMLElement, binding: DirectiveBinding<AsamClickOutsideBinding, string, AsamClickOutsideExcludes>, vnode: VNode<any, HTMLElement, { [key: string]: any; }>, prevVNode: null): void

getSSRProps

必填:否;声明来源:依赖声明。

getSSRProps 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(binding: DirectiveBinding<AsamClickOutsideBinding, string, AsamClickOutsideExcludes>, vnode: VNode<RendererNode, RendererElement, { [key: string]: any; }>): ReturnType<Extract<NonNullable<(typeof AsamClickOutside)["getSSRProps"]>, (...args: never[]) => unknown>>

deep

必填:否;声明来源:依赖声明。

deep 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

枚举:false / true

install

必填:是;声明来源:ASAM 声明。

install 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(app: App<any>): void

AsamClickOutside 公开类型视图
ts
import type { DirectiveHook, DirectiveBinding, VNode, RendererNode, RendererElement, App } from 'vue';
import type { AsamClickOutsideBinding, AsamClickOutsideExcludes, AsamClickOutsideDirective } from '@asam-ui/ui';
import { AsamClickOutside } from '@asam-ui/ui';

// AsamClickOutside
type PublicContract = {
	"created"?: DirectiveHook<HTMLElement, null, AsamClickOutsideBinding, string, AsamClickOutsideExcludes> | undefined;
	"beforeMount"?: DirectiveHook<HTMLElement, null, AsamClickOutsideBinding, string, AsamClickOutsideExcludes> | undefined;
	"mounted"?: DirectiveHook<HTMLElement, null, AsamClickOutsideBinding, string, AsamClickOutsideExcludes> | undefined;
	"beforeUpdate"?: DirectiveHook<HTMLElement, VNode<any, HTMLElement, { [key: string]: any; }>, AsamClickOutsideBinding, string, AsamClickOutsideExcludes> | undefined;
	"updated"?: DirectiveHook<HTMLElement, VNode<any, HTMLElement, { [key: string]: any; }>, AsamClickOutsideBinding, string, AsamClickOutsideExcludes> | undefined;
	"beforeUnmount"?: DirectiveHook<HTMLElement, null, AsamClickOutsideBinding, string, AsamClickOutsideExcludes> | undefined;
	"unmounted"?: DirectiveHook<HTMLElement, null, AsamClickOutsideBinding, string, AsamClickOutsideExcludes> | undefined;
	"getSSRProps"?: (typeof AsamClickOutside)["getSSRProps"];
	"deep"?: boolean | undefined;
	"install": (app: App) => void;
};
AsamClickOutsideBinding 公开类型视图
ts
import type { AsamClickOutsideBinding } from '@asam-ui/ui';

// AsamClickOutsideBinding
type PublicContract = {
	(mouseup: MouseEvent, mousedown: MouseEvent): void;
};

基础动态指令参数可以排除一个或多个元素。

此辅助类型包含大型基础声明;完整契约见公开类型视图。

组合契约按分支生效;请同时查看公开类型。

AsamClickOutsideExcludes 公开类型视图
ts
import type { AsamClickOutsideExcludes } from '@asam-ui/ui';

// AsamClickOutsideExcludes
type PublicContract = AsamClickOutsideExcludes;

参数与事件说明

created

必填:否;声明来源:依赖声明。

created 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(el: HTMLElement, binding: DirectiveBinding<AsamClickOutsideBinding, string, AsamClickOutsideExcludes>, vnode: VNode<any, HTMLElement, { [key: string]: any; }>, prevVNode: null): void

beforeMount

必填:否;声明来源:依赖声明。

beforeMount 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(el: HTMLElement, binding: DirectiveBinding<AsamClickOutsideBinding, string, AsamClickOutsideExcludes>, vnode: VNode<any, HTMLElement, { [key: string]: any; }>, prevVNode: null): void

mounted

必填:否;声明来源:依赖声明。

mounted 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(el: HTMLElement, binding: DirectiveBinding<AsamClickOutsideBinding, string, AsamClickOutsideExcludes>, vnode: VNode<any, HTMLElement, { [key: string]: any; }>, prevVNode: null): void

beforeUpdate

必填:否;声明来源:依赖声明。

beforeUpdate 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(el: HTMLElement, binding: DirectiveBinding<AsamClickOutsideBinding, string, AsamClickOutsideExcludes>, vnode: VNode<any, HTMLElement, { [key: string]: any; }>, prevVNode: VNode<any, HTMLElement, { [key: string]: any; }>): void

updated

必填:否;声明来源:依赖声明。

updated 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(el: HTMLElement, binding: DirectiveBinding<AsamClickOutsideBinding, string, AsamClickOutsideExcludes>, vnode: VNode<any, HTMLElement, { [key: string]: any; }>, prevVNode: VNode<any, HTMLElement, { [key: string]: any; }>): void

beforeUnmount

必填:否;声明来源:依赖声明。

beforeUnmount 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(el: HTMLElement, binding: DirectiveBinding<AsamClickOutsideBinding, string, AsamClickOutsideExcludes>, vnode: VNode<any, HTMLElement, { [key: string]: any; }>, prevVNode: null): void

unmounted

必填:否;声明来源:依赖声明。

unmounted 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(el: HTMLElement, binding: DirectiveBinding<AsamClickOutsideBinding, string, AsamClickOutsideExcludes>, vnode: VNode<any, HTMLElement, { [key: string]: any; }>, prevVNode: null): void

getSSRProps

必填:否;声明来源:依赖声明。

getSSRProps 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(binding: DirectiveBinding<AsamClickOutsideBinding, string, AsamClickOutsideExcludes>, vnode: VNode<RendererNode, RendererElement, { [key: string]: any; }>): ReturnType<Extract<NonNullable<(AsamClickOutsideDirective)["getSSRProps"]>, (...args: never[]) => unknown>>

deep

必填:否;声明来源:依赖声明。

deep 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

枚举:false / true

install

必填:是;声明来源:ASAM 声明。

install 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(app: App<any>): void

AsamClickOutsideDirective 公开类型视图
ts
import type { DirectiveHook, DirectiveBinding, VNode, RendererNode, RendererElement, App } from 'vue';
import type { AsamClickOutsideDirective, AsamClickOutsideBinding, AsamClickOutsideExcludes } from '@asam-ui/ui';

// AsamClickOutsideDirective
type PublicContract = {
	"created"?: DirectiveHook<HTMLElement, null, AsamClickOutsideBinding, string, AsamClickOutsideExcludes> | undefined;
	"beforeMount"?: DirectiveHook<HTMLElement, null, AsamClickOutsideBinding, string, AsamClickOutsideExcludes> | undefined;
	"mounted"?: DirectiveHook<HTMLElement, null, AsamClickOutsideBinding, string, AsamClickOutsideExcludes> | undefined;
	"beforeUpdate"?: DirectiveHook<HTMLElement, VNode<any, HTMLElement, { [key: string]: any; }>, AsamClickOutsideBinding, string, AsamClickOutsideExcludes> | undefined;
	"updated"?: DirectiveHook<HTMLElement, VNode<any, HTMLElement, { [key: string]: any; }>, AsamClickOutsideBinding, string, AsamClickOutsideExcludes> | undefined;
	"beforeUnmount"?: DirectiveHook<HTMLElement, null, AsamClickOutsideBinding, string, AsamClickOutsideExcludes> | undefined;
	"unmounted"?: DirectiveHook<HTMLElement, null, AsamClickOutsideBinding, string, AsamClickOutsideExcludes> | undefined;
	"getSSRProps"?: (AsamClickOutsideDirective)["getSSRProps"];
	"deep"?: boolean | undefined;
	"install": (app: App) => void;
};

搜索文档

Tab 选择结果 Enter 打开 Esc 关闭