UNPKG

6.37 kBTypeScriptView Raw
1/**
2 * @description 封装 DOM 操作
3 * @wangfupeng
4 */
5import Editor from '../editor/index';
6declare type OffsetDataType = {
7 top: number;
8 left: number;
9 width: number;
10 height: number;
11 parent: Element | null;
12};
13export declare type DomElementSelector = string | DomElement | HTMLElement | Element | Document | HTMLCollection | Node | NodeList | HTMLElement[] | EventTarget | null | undefined;
14export declare class DomElement<T extends DomElementSelector = DomElementSelector> {
15 selector: T;
16 length: number;
17 elems: HTMLElement[];
18 dataSource: Map<string, any>;
19 /**
20 * 构造函数
21 * @param selector 任一类型的选择器
22 */
23 constructor(selector: T);
24 /**
25 * 获取元素 id
26 */
27 get id(): string;
28 /**
29 * 遍历所有元素,执行回调函数
30 * @param fn 回调函数
31 */
32 forEach(fn: (ele: HTMLElement, index?: number) => boolean | unknown): DomElement;
33 /**
34 * 克隆元素
35 * @param deep 是否深度克隆
36 */
37 clone(deep?: boolean): DomElement;
38 /**
39 * 获取第几个元素
40 * @param index index
41 */
42 get(index?: number): DomElement;
43 /**
44 * 获取第一个元素
45 */
46 first(): DomElement;
47 /**
48 * 获取最后一个元素
49 */
50 last(): DomElement;
51 /**
52 * 绑定事件
53 * @param type 事件类型
54 * @param selector DOM 选择器
55 * @param fn 事件函数
56 */
57 on(type: string, fn: Function): DomElement;
58 on(type: string, selector: string, fn: Function): DomElement;
59 /**
60 * 解绑事件
61 * @param type 事件类型
62 * @param selector DOM 选择器
63 * @param fn 事件函数
64 */
65 off(type: string, fn: Function): DomElement;
66 off(type: string, selector: string, fn: Function): DomElement;
67 /**
68 * 设置/获取 属性
69 * @param key key
70 * @param val value
71 */
72 attr(key: string): string;
73 attr(key: string, val: string): DomElement;
74 /**
75 * 删除 属性
76 * @param key key
77 */
78 removeAttr(key: string): void;
79 /**
80 * 添加 css class
81 * @param className css class
82 */
83 addClass(className?: string): DomElement;
84 /**
85 * 添加 css class
86 * @param className css class
87 */
88 removeClass(className?: string): DomElement;
89 /**
90 * 是否有传入的 css class
91 * @param className css class
92 */
93 hasClass(className?: string): boolean;
94 /**
95 * 修改 css
96 * @param key css key
97 * @param val css value
98 */
99 css(key: string, val?: string | number): DomElement;
100 /**
101 * 封装 getBoundingClientRect
102 */
103 getBoundingClientRect(): DOMRect;
104 /**
105 * 显示
106 */
107 show(): DomElement;
108 /**
109 * 隐藏
110 */
111 hide(): DomElement;
112 /**
113 * 获取子节点(只有 DOM 元素)
114 */
115 children(): DomElement | null;
116 /**
117 * 获取子节点(包括文本节点)
118 */
119 childNodes(): DomElement | null;
120 /**
121 * 将子元素全部替换
122 * @param $children 新的child节点
123 */
124 replaceChildAll($children: DomElement): void;
125 /**
126 * 增加子节点
127 * @param $children 子节点
128 */
129 append($children: DomElement): DomElement;
130 /**
131 * 移除当前节点
132 */
133 remove(): DomElement;
134 /**
135 * 当前元素,是否包含某个子元素
136 * @param $child 子元素
137 */
138 isContain($child: DomElement): boolean;
139 /**
140 * 获取当前元素的尺寸和位置信息
141 */
142 getSizeData(): DOMRect;
143 /**
144 * 获取当前元素 nodeName
145 */
146 getNodeName(): string;
147 /**
148 * 根据元素位置获取元素节点(默认获取0位置的节点)
149 * @param n 元素节点位置
150 */
151 getNode(n?: number): Node;
152 /**
153 * 获取当前元素可视高度
154 */
155 getClientHeight(): number;
156 /**
157 * 获取当前元素可视宽度
158 */
159 /**
160 * 查询
161 * @param selector css 选择器
162 */
163 find(selector: string): DomElement;
164 /**
165 * 获取/设置 元素 text
166 * @param val text 值
167 */
168 text(): string;
169 text(val: string): DomElement;
170 /**
171 * 设置/获取 元素 html
172 * @param val html 值
173 */
174 html(): string;
175 html(val: string): DomElement;
176 /**
177 * 获取元素 value
178 */
179 val(): string;
180 /**
181 * focus 到当前元素
182 */
183 focus(): DomElement;
184 /**
185 * 当前元素前一个兄弟节点
186 */
187 prev(): DomElement;
188 /**
189 * 当前元素后一个兄弟节点
190 */
191 next(): DomElement;
192 /**
193 * 获取父元素
194 */
195 parent(): DomElement;
196 /**
197 * 查找父元素,直到满足 selector 条件
198 * @param selector css 选择器
199 * @param curElem 从哪个元素开始查找,默认为当前元素
200 */
201 parentUntil(selector: string, curElem?: HTMLElement): DomElement | null;
202 /**
203 * 查找父元素,直到满足 selector 条件,或者 到达 编辑区域容器以及菜单栏容器
204 * @param selector css 选择器
205 * @param curElem 从哪个元素开始查找,默认为当前元素
206 */
207 parentUntilEditor(selector: string, editor: Editor, curElem?: HTMLElement): DomElement | null;
208 /**
209 * 判读是否相等
210 * @param $elem 元素
211 */
212 equal($elem: DomElement | HTMLElement): boolean;
213 /**
214 * 将该元素插入到某个元素前面
215 * @param selector css 选择器
216 */
217 insertBefore(selector: string | DomElement): DomElement;
218 /**
219 * 将该元素插入到selector元素后面
220 * @param selector css 选择器
221 */
222 insertAfter(selector: string | DomElement): DomElement;
223 /**
224 * 设置/获取 数据
225 * @param key key
226 * @param value value
227 */
228 data<T>(key: string, value?: T): T | undefined;
229 /**
230 * 获取当前节点的顶级(段落)
231 * @param editor 富文本实例
232 */
233 getNodeTop(editor: Editor): DomElement;
234 /**
235 * 获取当前 节点 基与上一个拥有相对或者解决定位的父容器的位置
236 * @param editor 富文本实例
237 */
238 getOffsetData(): OffsetDataType;
239 /**
240 * 从上至下进行滚动
241 * @param top 滚动的值
242 */
243 scrollTop(top: number): void;
244}
245declare function $(...arg: ConstructorParameters<typeof DomElement>): DomElement;
246export default $;