leafer-x-tooltip-canvas 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,392 @@
1
+ # leafer-x-tooltip-canvas
2
+
3
+ <p>
4
+ <a href='./README.en.md'>English</a> | 简体中文
5
+ </p>
6
+
7
+ ## 插件简介
8
+
9
+ leafer-x-tooltip-canvas 是 [Leafer-ui](https://leaferjs.com/ui/) 的第三方 tooltip 插件,用于向用户展示信息。
10
+
11
+ <!-- - [在线体验(尚未完成)]() -->
12
+
13
+ ## 快速上手
14
+
15
+ ### 安装
16
+
17
+ ```node
18
+ npm i leafer-x-tooltip-canvas --save
19
+ ```
20
+
21
+ ### 使用方法
22
+
23
+ 使用插件时,创建一个插件实例,并传入 `App` 或者 `Leafer` 实例。(推荐使用`App`)
24
+
25
+ 如果传入的是 `App`,会在`sky`层中绘制弹窗,如果传入的是 `Leafer`,会在传入的`Leafer`层中绘制弹窗。
26
+
27
+ > 请注意:如果传入`App`时尚未创建`sky`层,会自动创建`sky`层
28
+
29
+ ```js
30
+ import { TooltipPlugin } from 'leafer-x-tooltip-canvas'
31
+ const app = new App({ view: window })
32
+ const plugin = new TooltipPlugin(app)
33
+ ```
34
+
35
+ ### 配置项
36
+
37
+ 配置项可在创建 tooltipPlugin 实例时作为第二个参数传入
38
+
39
+ ```js
40
+ new TooltipPlugin(app, {
41
+ info: ['width', 'height', 'innerId'],
42
+ includesType: ['Rect'],
43
+ excludesType: [],
44
+ ...
45
+ })
46
+ ```
47
+
48
+ 具体配置项如下,点击字段名可转跳至[详细配置](#详细配置)
49
+ <table class="styled-table jump-table">
50
+ <thead>
51
+ <tr>
52
+ <th>字段</th>
53
+ <th>类型</th>
54
+ <th>默认值</th>
55
+ <th>说明</th>
56
+ </tr>
57
+ </thead>
58
+ <tbody>
59
+ <tr>
60
+ <td><a href="#显示信息">info</a></td>
61
+ <td>Array&lt;string&gt;</td>
62
+ <td>['tag']</td>
63
+ <td>显示的属性字段</td>
64
+ </tr>
65
+ <tr>
66
+ <td><a href="#显示类型">showType</a></td>
67
+ <td>'value'&#124;'key-value'</td>
68
+ <td>'value'</td>
69
+ <td>tooltip信息显示的方式</td>
70
+ </tr>
71
+ <tr>
72
+ <td><a href="#格式化">formatter</a></td>
73
+ <td>() => string</td>
74
+ <td>() => undefined</td>
75
+ <td>格式化tooltip显示内容的函数</td>
76
+ </tr>
77
+ <tr>
78
+ <td><a href="#延迟显示隐藏">showDelay</a></td>
79
+ <td>number</td>
80
+ <td>500</td>
81
+ <td>延迟显示的时间</td>
82
+ </tr>
83
+ <tr>
84
+ <td><a href="#延迟显示隐藏">hideDelay</a></td>
85
+ <td>number</td>
86
+ <td>0</td>
87
+ <td>延迟隐藏的时间</td>
88
+ </tr>
89
+ <tr>
90
+ <td><a href="#包括忽略类型">includesType</a></td>
91
+ <td>Array&lt;string&gt;</td>
92
+ <td>[]</td>
93
+ <td>需要显示 tooltip 的元素,传入元素的 tag</td>
94
+ </tr>
95
+ <tr>
96
+ <td><a href="#包括忽略类型">excludesType</a></td>
97
+ <td>Array&lt;string&gt;</td>
98
+ <td>[]</td>
99
+ <td>不需要显示 tooltip 的元素,传入元素的 tag</td>
100
+ </tr>
101
+ <tr>
102
+ <td><a href="#offset">offset</a></td>
103
+ <td>Array&lt;number&gt;</td>
104
+ <td>[5, 5]</td>
105
+ <td>tooltip 相对于鼠标位置的偏移量</td>
106
+ </tr>
107
+ <tr>
108
+ <td><a href="#黑白主题">theme</a></td>
109
+ <td>string</td>
110
+ <td>'light'</td>
111
+ <td>主题,可选值:'light'、'dark'</td>
112
+ </tr>
113
+ <tr>
114
+ <td><a href="#样式">style</a></td>
115
+ <td>IStyle</td>
116
+ <td>见下表</td>
117
+ <td>tooltip 的样式配置</td>
118
+ </tr>
119
+ </tbody>
120
+ </table>
121
+
122
+
123
+
124
+ IStyle 属性
125
+ <table class="styled-table"">
126
+ <tr>
127
+ <th>字段</th>
128
+ <th>类型</th>
129
+ <th>默认值</th>
130
+ <th>说明</th>
131
+ </tr>
132
+ <tr>
133
+ <td>backgroundColor</td>
134
+ <td>string</td>
135
+ <td>"white"</td>
136
+ <td>tooltip 的背景颜色</td>
137
+ </tr>
138
+ <tr>
139
+ <td>stroke</td>
140
+ <td>string</td>
141
+ <td>"black"</td>
142
+ <td>tooltip 框线颜色</td>
143
+ </tr>
144
+ <tr>
145
+ <td>color</td>
146
+ <td>string</td>
147
+ <td>"black"</td>
148
+ <td>tooltip 文本颜色</td>
149
+ </tr>
150
+ <tr>
151
+ <td>borderRadius</td>
152
+ <td>number</td>
153
+ <td>8</td>
154
+ <td>tooltip 框线圆角</td>
155
+ </tr>
156
+ <tr>
157
+ <td>padding</td>
158
+ <td>number</td>
159
+ <td>8</td>
160
+ <td>tooltip 内边距</td>
161
+ </tr>
162
+ <tr>
163
+ <td>fontSize</td>
164
+ <td>number</td>
165
+ <td>14</td>
166
+ <td>tooltip 文本大小</td>
167
+ </tr>
168
+ <tr>
169
+ <td>fontWeight</td>
170
+ <td>number</td>
171
+ <td>400</td>
172
+ <td>tooltip 文本粗细</td>
173
+ </tr>
174
+ <tr>
175
+ <td>fontFamily</td>
176
+ <td>string</td>
177
+ <td>"Punctuation SC"</td>
178
+ <td>tooltip 文本字体,同 css 多个字体用逗号隔开</td>
179
+ </tr>
180
+ </table>
181
+
182
+ ### todo
183
+
184
+ - 显示/隐藏
185
+ - [x] 基本显示隐藏
186
+ - [x] 延迟显示隐藏
187
+ - 样式
188
+ - [ ] 三角箭头
189
+ - [x] 黑白主题
190
+ - [x] 自定义样式
191
+ - 位置
192
+ - [x] offset
193
+ - [x] 相对鼠标位置
194
+ - [ ] 相对元素位置
195
+ - [ ] 显示避让逻辑
196
+ - 信息
197
+ - [x] 自定义信息
198
+ - [x] formatter
199
+ - 交互
200
+ - [x] 包括/忽略类型功能
201
+ - [ ] 触发方式
202
+ - [ ] 虚拟触发
203
+
204
+ ### 详细配置
205
+ <a href="#配置项" class="fixed-right">:dizzy:配置项</a>
206
+
207
+ #### 内容 <a href="#配置项" style="position:relative;right:0">:arrow_up:</a>
208
+ ##### 显示信息
209
+ 通过传入`info`字段,可配置显示的属性字段。
210
+ <table class="center-table">
211
+ <tr>
212
+ <td>
213
+ <span>info : ['tag','width','height']</span>
214
+ </td>
215
+ <td>
216
+ <img src="./.github/assets/info.png">
217
+ </td>
218
+ </tr>
219
+ </table>
220
+
221
+ ##### 显示类型
222
+ 可配置显示信息的方式,有两种:`value`、`key-value`。
223
+ <table class="center-table">
224
+ <tr>
225
+ <td>
226
+ <span>showType : 'value'</span>
227
+ </td>
228
+ <td>
229
+ <img src="./.github/assets/value.png">
230
+ </td>
231
+ </tr>
232
+ <tr>
233
+ <td>
234
+ <span>showType : 'key-value'</span>
235
+ </td>
236
+ <td>
237
+ <img src="./.github/assets/key-value.png">
238
+ </td>
239
+ </tr>
240
+ </table>
241
+
242
+ ##### 格式化
243
+ 可配置显示信息的格式化函数,参数为被作用的元素属性集合。返回的值作为tooltip的文本。
244
+ ```js
245
+ formatter: (item) => {
246
+ return `${item.tag}(${item.innerId})`
247
+ }
248
+ ```
249
+ <img src="./.github/assets/formatter.png">
250
+
251
+ #### 显示隐藏
252
+ ##### 延迟显示隐藏
253
+ 可配置显示的延迟时间和隐藏的延迟时间。
254
+ <table class="center-table">
255
+ <tr>
256
+ <td>
257
+ <span>showDelay : 500</span>
258
+ </td>
259
+ <td>
260
+ <img src="./.github/assets/show-delay.gif">
261
+ </td>
262
+ </tr>
263
+ <tr>
264
+ <td>
265
+ <span>hideDelay : 500</span>
266
+ </td>
267
+ <td>
268
+ <img src="./.github/assets/hide-delay.gif">
269
+ </td>
270
+ </tr>
271
+ </table>
272
+
273
+ #### 交互
274
+ ##### 包括/忽略类型
275
+ 通过配置`includesType`和`excludesType`字段,可设置需要展示/隐藏tooltip的元素类型。
276
+
277
+ - 当只配置`includesType`时,只显示`includesType`中配置的元素。
278
+ - 当只配置`excludesType`时,只不显示`excludesType`中配置的元素。
279
+ - 可同时配置`includesType`和`excludesType`。
280
+ - `includesType`优先级大于`excludesType`。
281
+ <table class="center-table">
282
+ <tr>
283
+ <td>
284
+ <span>includesType : ['Rect']</span>
285
+ </td>
286
+ <td>
287
+ <img src="./.github/assets/includes-type.gif">
288
+ </td>
289
+ </tr>
290
+ </table>
291
+
292
+
293
+ #### 样式
294
+ ##### 黑白主题
295
+ 插件默认提供两种主题,分别为`light`和`dark`,可以通过配置`theme`字段来切换主题。默认主题为`light`
296
+ <table class="center-table">
297
+ <tr>
298
+ <td>
299
+ <span>theme : 'light'</span>
300
+ </td>
301
+ <td>
302
+ <img src="./.github/assets/light-theme.png">
303
+ </td>
304
+ </tr>
305
+ <tr>
306
+ <td>
307
+ <span>theme : 'dark'</span>
308
+ </td>
309
+ <td>
310
+ <img src="./.github/assets/dark-theme.png">
311
+ </td>
312
+ </tr>
313
+ </table>
314
+
315
+ #### 位置
316
+ ##### offset
317
+ 可配置tooltip相对于鼠标位置的偏移量,第一个参数为x轴偏移量,第二个参数为y轴偏移量。
318
+ <table class="center-table">
319
+ <tr>
320
+ <td>
321
+ <span>offset : [10,20]</span>
322
+ </td>
323
+ <td>
324
+ <img src="./.github/assets/offset-10-20.png">
325
+ </td>
326
+ </tr>
327
+ </table>
328
+
329
+ ##### 自定义样式
330
+ 用户通过配置`style`字段来自定义样式。
331
+ <table class="center-table">
332
+ </table>
333
+ <tr>
334
+ <td>
335
+ <span>
336
+
337
+ style: {
338
+ backgroundColor: '#32cd79',
339
+ stroke: '#32cd79',
340
+ color: 'white',
341
+ borderRadius: 16,
342
+ padding: 8,
343
+ fontSize: 16,
344
+ fontWeight: 400,
345
+ }
346
+ </span>
347
+ </td>
348
+ <td>
349
+ <img src="./.github/assets/style.png">
350
+ </td>
351
+ </tr>
352
+ </table>
353
+
354
+
355
+ [Github](https://github.com/214L/leafer-x-popup-canvas)
356
+
357
+
358
+ <style>
359
+ .center-table {
360
+ margin-left: auto;
361
+ margin-right: auto;
362
+ }
363
+ .center-table td {
364
+ border: 0px;
365
+ }
366
+ .center-table span {
367
+ background-color: rgb(220,220,220);
368
+ padding: 2px 5px 2px 5px;
369
+ }
370
+
371
+ .styled-table {
372
+ width: 100%;
373
+ border-collapse: collapse;
374
+ text-align: center; /* 文字居中 */
375
+ }
376
+ .styled-table th, .styled-table td {
377
+ border: 1px solid #ddd; /* 边框颜色 */
378
+ padding: 8px; /* 单元格内边距 */
379
+ }
380
+ .styled-table tr:nth-child(even) {
381
+ background-color: #f2f2f2; /* 斑马格效果 */
382
+ }
383
+ .jump-table th:first-child:hover, .styled-table td:first-child:hover {
384
+ cursor: pointer;
385
+ }
386
+ .fixed-right {
387
+ position: fixed;
388
+ bottom: 20%;
389
+ right: 10px;
390
+ transform: translateY(-50%);
391
+ }**
392
+ </style>