br-dionysus 0.5.1 → 0.6.1
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 +290 -53
- package/createMd.js +62 -34
- package/dist/br-dionysus.es.js +1643 -1258
- package/dist/br-dionysus.umd.js +3 -3
- package/dist/index.css +1 -1
- package/dist/packages/Hook/useRemainingSpace/useRemainingSpace.d.ts +11 -0
- package/dist/packages/Hook/useTableConfig/useTableConfig.d.ts +35 -0
- package/dist/packages/MTableColumn/index.d.ts +4 -0
- package/dist/packages/MTableColumn/src/index.vue.d.ts +71 -0
- package/dist/packages/MTableColumnSet/index.d.ts +4 -0
- package/dist/packages/MTableColumnSet/src/index.vue.d.ts +53 -0
- package/dist/packages/index.d.ts +4 -0
- package/package.json +2 -1
- package/packages/Hook/useRemainingSpace/README.md +25 -0
- package/packages/Hook/useRemainingSpace/useRemainingSpace.ts +142 -0
- package/packages/Hook/useTableConfig/README.md +36 -0
- package/packages/Hook/useTableConfig/useTableConfig.ts +126 -0
- package/packages/MInline/docs/README.md +1 -1
- package/packages/MInputNumber/docs/README.md +1 -1
- package/packages/MSelectTable/docs/README.md +1 -1
- package/packages/MTable/docs/README.md +15 -16
- package/packages/MTableColumn/docs/README.md +24 -0
- package/packages/MTableColumn/docs/demo.vue +79 -0
- package/packages/MTableColumn/index.ts +10 -0
- package/packages/MTableColumn/src/index.vue +285 -0
- package/packages/MTableColumnSet/docs/README.md +30 -0
- package/packages/MTableColumnSet/docs/demo.vue +43 -0
- package/packages/MTableColumnSet/index.ts +10 -0
- package/packages/MTableColumnSet/src/index.vue +293 -0
- package/packages/README.md +1 -0
- package/packages/SkinConfig/docs/README.md +1 -1
- package/packages/TabPage/docs/README.md +2 -1
- package/packages/index.ts +8 -1
- package/packages/list.json +12 -0
- package/src/router.ts +10 -0
package/README.md
CHANGED
|
@@ -2,32 +2,35 @@
|
|
|
2
2
|
|
|
3
3
|
## 组件列表
|
|
4
4
|
|
|
5
|
-
+ MInline([筛选](
|
|
5
|
+
+ MInline([筛选](#筛选))
|
|
6
6
|
|
|
7
|
-
+ MInputNumber([数值输入框组件](
|
|
7
|
+
+ MInputNumber([数值输入框组件](#数值输入框组件))
|
|
8
8
|
|
|
9
|
-
+ MSelectTable([下拉表格选择器](
|
|
9
|
+
+ MSelectTable([下拉表格选择器](#下拉表格选择器))
|
|
10
10
|
|
|
11
|
-
+ MTable([
|
|
11
|
+
+ MTable([表格组件](#表格组件))
|
|
12
12
|
|
|
13
|
-
+
|
|
13
|
+
+ MTableColumn([表格列组件](#表格列组件))
|
|
14
14
|
|
|
15
|
-
+
|
|
16
|
-
---
|
|
15
|
+
+ MTableColumnSet([表格头设置组件](#表格头设置组件))
|
|
17
16
|
|
|
18
|
-
|
|
19
|
-
---
|
|
17
|
+
+ SkinConfig([皮肤设置](#皮肤设置))
|
|
20
18
|
|
|
19
|
+
+ TabPage([标签页组件](#标签页组件))
|
|
20
|
+
|
|
21
|
+
+ useRemainingSpace([计算获取剩余空间-hook](#计算获取剩余空间-hook))
|
|
22
|
+
|
|
23
|
+
+ useTableConfig([表格组合-hook](#表格组合-hook))
|
|
21
24
|
|
|
22
25
|
|
|
23
|
-
|
|
26
|
+
筛选
|
|
24
27
|
=================
|
|
25
28
|
|
|
26
29
|
### 1) 基础用法
|
|
27
30
|
|
|
28
31
|
|
|
29
32
|
|
|
30
|
-
```
|
|
33
|
+
```html
|
|
31
34
|
|
|
32
35
|
<template>
|
|
33
36
|
<div class="g-demo-m-inline-box">
|
|
@@ -185,20 +188,15 @@ const formInline = reactive({
|
|
|
185
188
|
| switch | 当切换展开与折叠模式时触发,返回当前展开状态 | unfold(boolean) |
|
|
186
189
|
|
|
187
190
|
|
|
188
|
-
---
|
|
189
|
-
|
|
190
|
-
### MInputNumber(数值输入框组件)
|
|
191
|
-
---
|
|
192
|
-
|
|
193
191
|
|
|
194
192
|
|
|
195
|
-
|
|
193
|
+
数值输入框组件
|
|
196
194
|
=================
|
|
197
195
|
|
|
198
196
|
### 1) 基础用法
|
|
199
197
|
|
|
200
198
|
|
|
201
|
-
```
|
|
199
|
+
```html
|
|
202
200
|
|
|
203
201
|
<template>
|
|
204
202
|
<div class="g-demo-m-input-number-box">
|
|
@@ -246,21 +244,16 @@ const test = ref<number>(0)
|
|
|
246
244
|
| blur | 当 input 失去焦点时触发 | (event: Event) |
|
|
247
245
|
|
|
248
246
|
|
|
249
|
-
---
|
|
250
|
-
|
|
251
|
-
### MSelectTable(下拉表格选择器)
|
|
252
|
-
---
|
|
253
|
-
|
|
254
247
|
|
|
255
248
|
|
|
256
|
-
|
|
249
|
+
下拉表格选择器
|
|
257
250
|
=================
|
|
258
251
|
|
|
259
252
|
### 1) 基础用法
|
|
260
253
|
|
|
261
254
|
|
|
262
255
|
|
|
263
|
-
```
|
|
256
|
+
```html
|
|
264
257
|
|
|
265
258
|
<template>
|
|
266
259
|
<div class="g-m-select-table-box">
|
|
@@ -369,14 +362,9 @@ const remoteMethod = async (query: string = '') => {
|
|
|
369
362
|
| selected | 单选模式点击行时触发 | selectedRow(所选行) |
|
|
370
363
|
|
|
371
364
|
|
|
372
|
-
---
|
|
373
|
-
|
|
374
|
-
### MTable(表格选择器)
|
|
375
|
-
---
|
|
376
|
-
|
|
377
365
|
|
|
378
366
|
|
|
379
|
-
|
|
367
|
+
表格组件
|
|
380
368
|
=================
|
|
381
369
|
|
|
382
370
|
### 1) 基础用法
|
|
@@ -384,7 +372,7 @@ const remoteMethod = async (query: string = '') => {
|
|
|
384
372
|
|
|
385
373
|
|
|
386
374
|
|
|
387
|
-
```
|
|
375
|
+
```html
|
|
388
376
|
|
|
389
377
|
<template>
|
|
390
378
|
<div>
|
|
@@ -449,47 +437,224 @@ const pasteData = (obj: any, data: any) => {
|
|
|
449
437
|
### 2) Attributes
|
|
450
438
|
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|
|
451
439
|
| ----------- | ------- | ---------------------------- |-----|--------|
|
|
452
|
-
|data |表格的数据 | Array | - | [] |
|
|
453
|
-
|sole |行的唯一值 |String
|
|
454
|
-
|filtersValue |表格内容筛选 |Function | - |
|
|
440
|
+
|data |表格的数据 | Array | - | [ ] |
|
|
441
|
+
|sole |行的唯一值 |String , number | - | key |
|
|
442
|
+
|filtersValue |表格内容筛选 |Function | - | () => void |
|
|
443
|
+
|其余参数 |参考el官网的table |any | - |https://element-plus.org/zh-CN/component/table.html|
|
|
455
444
|
## 要求
|
|
456
445
|
```
|
|
457
446
|
sole 必须传递在表格数据内为唯一的值 如id key 等不会发生重复的关键字
|
|
458
447
|
```
|
|
459
448
|
|
|
460
449
|
### 3) Events
|
|
461
|
-
| 方法名 | 说明 |
|
|
450
|
+
| 方法名 | 说明 | 回调参数 |
|
|
462
451
|
| ----------- | ------- | ---------------------------- |
|
|
463
|
-
| pasteData | 表格粘贴方法 |
|
|
452
|
+
| pasteData | 表格粘贴方法 | 共有2个参数,依次为粘贴动作的数据PasteAction ,表格原始数据tableData |
|
|
453
|
+
|其余方法 |参考el官网的table |https://element-plus.org/zh-CN/component/table.html|
|
|
464
454
|
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
455
|
+
### 4) PasteAction
|
|
456
|
+
|参数 | 说明 | 类型 |
|
|
457
|
+
|-----|-------|-------|
|
|
458
|
+
|editRow|返回粘贴的对应行的原始数据|Object|
|
|
459
|
+
|editColumn|返回粘贴时鼠标所在列的 表格prop值|String|
|
|
460
|
+
|arr|返回粘贴时候处理之后的 数组信息|Array|
|
|
461
|
+
|rowIndex|根据sole的值 去data内查找 当前操作的 粘贴行在data内的序号|number|
|
|
468
462
|
|
|
469
|
-
|
|
463
|
+
|
|
464
|
+
|
|
470
465
|
|
|
471
|
-
const arr: Array // 返回粘贴时候处理之后的 数组信息
|
|
472
466
|
|
|
473
|
-
|
|
467
|
+
表格列组件
|
|
468
|
+
=================
|
|
474
469
|
|
|
475
|
-
|
|
470
|
+
### 1) 基础用法
|
|
471
|
+
|
|
472
|
+
|
|
473
|
+
|
|
474
|
+
|
|
475
|
+
```html
|
|
476
|
+
|
|
477
|
+
<template>
|
|
478
|
+
<div>
|
|
479
|
+
<el-table :data="tableData" style="width: 100%">
|
|
480
|
+
<MTableColumn
|
|
481
|
+
v-for="item in tableTitle"
|
|
482
|
+
:key="item.prop"
|
|
483
|
+
:prop="item.prop"
|
|
484
|
+
:label="item.label"
|
|
485
|
+
:minWidth="item.minWidth"
|
|
486
|
+
v-model:filtersValue="filtersValue"
|
|
487
|
+
showOverflowTooltip
|
|
488
|
+
/>
|
|
489
|
+
</el-table>
|
|
490
|
+
</div>
|
|
491
|
+
</template>
|
|
492
|
+
|
|
493
|
+
<script setup lang="ts">
|
|
494
|
+
import { ref } from "vue";
|
|
495
|
+
interface FilterValue {
|
|
496
|
+
[key: string]: Array<string | number>
|
|
497
|
+
}
|
|
498
|
+
const filtersValue = ref<FilterValue>({})
|
|
499
|
+
interface User {
|
|
500
|
+
date: string;
|
|
501
|
+
name: string;
|
|
502
|
+
address: string;
|
|
503
|
+
tag: string;
|
|
504
|
+
}
|
|
505
|
+
const tableData = ref(<User[]>[
|
|
506
|
+
{
|
|
507
|
+
date: "2016-05-03",
|
|
508
|
+
name: "Tom",
|
|
509
|
+
address: "No. 189, Grove St, Los Angeles",
|
|
510
|
+
tag: "Home",
|
|
511
|
+
},
|
|
512
|
+
{
|
|
513
|
+
date: "2016-05-02",
|
|
514
|
+
name: "Tom",
|
|
515
|
+
address: "No. 189, Grove St, Los Angeles",
|
|
516
|
+
tag: "Office",
|
|
517
|
+
},
|
|
518
|
+
{
|
|
519
|
+
date: "2016-05-04",
|
|
520
|
+
name: "Tom",
|
|
521
|
+
address: "No. 189, Grove St, Los Angeles",
|
|
522
|
+
tag: "Home",
|
|
523
|
+
},
|
|
524
|
+
{
|
|
525
|
+
date: "2016-05-01",
|
|
526
|
+
name: "Tom",
|
|
527
|
+
address: "No. 189, Grove St, Los Angeles",
|
|
528
|
+
tag: "Office",
|
|
529
|
+
},
|
|
530
|
+
])
|
|
531
|
+
const tableTitle = [
|
|
532
|
+
{
|
|
533
|
+
label: '日期',
|
|
534
|
+
prop: 'date',
|
|
535
|
+
minWidth: '172px'
|
|
536
|
+
},
|
|
537
|
+
{
|
|
538
|
+
label: '名称',
|
|
539
|
+
prop: 'name',
|
|
540
|
+
minWidth: '134px'
|
|
541
|
+
},
|
|
542
|
+
{
|
|
543
|
+
label: '地址',
|
|
544
|
+
prop: 'address',
|
|
545
|
+
minWidth: '134px'
|
|
546
|
+
},
|
|
547
|
+
{
|
|
548
|
+
label: '标签',
|
|
549
|
+
prop: 'tag',
|
|
550
|
+
minWidth: '134px'
|
|
551
|
+
}
|
|
552
|
+
]
|
|
553
|
+
</script>
|
|
554
|
+
|
|
555
|
+
<style lang="scss"></style>
|
|
556
|
+
|
|
557
|
+
|
|
558
|
+
```
|
|
559
|
+
|
|
560
|
+
### 2) Attributes
|
|
561
|
+
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|
|
562
|
+
| ------------------| --------------------------|-------------------|------------------------|---------|
|
|
563
|
+
|filtersValue | 列筛选过滤条件 | object | - | { } |
|
|
564
|
+
|filters | 表格筛选数据 | string[],number[] | - | any[] |
|
|
565
|
+
|filterMethod | 筛选方法 | Function | - | () => void |
|
|
566
|
+
|其余参数 | 参考el官网的table | any | - |https://element-plus.org/zh-CN/component/table.html|
|
|
567
|
+
|
|
568
|
+
|
|
569
|
+
|
|
570
|
+
|
|
571
|
+
|
|
572
|
+
|
|
573
|
+
|
|
574
|
+
表格头设置组件
|
|
575
|
+
=================
|
|
576
|
+
|
|
577
|
+
### 1) 基础用法
|
|
578
|
+
|
|
579
|
+
|
|
580
|
+
|
|
581
|
+
|
|
582
|
+
```html
|
|
583
|
+
|
|
584
|
+
<template>
|
|
585
|
+
<div>
|
|
586
|
+
<m-table-column-set v-model="tableConfig" foldMode />
|
|
587
|
+
<div>
|
|
588
|
+
{{ tableConfig }}
|
|
589
|
+
</div>
|
|
590
|
+
</div>
|
|
591
|
+
</template>
|
|
592
|
+
|
|
593
|
+
<script setup lang="ts">
|
|
594
|
+
import { ref } from "vue";
|
|
595
|
+
interface User {
|
|
596
|
+
date: string;
|
|
597
|
+
name: string;
|
|
598
|
+
address: string;
|
|
599
|
+
tag: string;
|
|
600
|
+
}
|
|
601
|
+
|
|
602
|
+
|
|
603
|
+
const tableConfig = ref({
|
|
604
|
+
'date': {
|
|
605
|
+
minWidth: 100,
|
|
606
|
+
show: true,
|
|
607
|
+
sort: 0,
|
|
608
|
+
label: 'date'
|
|
609
|
+
},
|
|
610
|
+
'name': {
|
|
611
|
+
minWidth: 100,
|
|
612
|
+
show: true,
|
|
613
|
+
sort: 1,
|
|
614
|
+
label: 'name'
|
|
615
|
+
},
|
|
616
|
+
'address': {
|
|
617
|
+
minWidth: 100,
|
|
618
|
+
show: true,
|
|
619
|
+
sort: 2,
|
|
620
|
+
label: 'address'
|
|
621
|
+
},
|
|
622
|
+
})
|
|
623
|
+
|
|
624
|
+
</script>
|
|
625
|
+
|
|
626
|
+
<style lang="scss"></style>
|
|
476
627
|
|
|
477
628
|
|
|
478
|
-
|
|
629
|
+
```
|
|
479
630
|
|
|
480
|
-
|
|
481
|
-
|
|
631
|
+
### 2) Attributes
|
|
632
|
+
|
|
633
|
+
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|
|
634
|
+
| --------------------- | ---------------------------------------------------- | ---------------------------------------- | ------ | ------ |
|
|
635
|
+
| model-value / v-model | 绑定值 | { [propName: string]: TableConfigItem } | - | {} |
|
|
636
|
+
| foldMode | 是否开启折叠 开启的话需要父级元素为flex布局/grid布局 | boolean | - | false |
|
|
637
|
+
|
|
638
|
+
|
|
639
|
+
### 3) TableConfigItem
|
|
640
|
+
| 参数 | 说明 | 类型 |
|
|
641
|
+
| ----------- | ------------------------------------------------- | -------------------------- |
|
|
642
|
+
| minWidth | 最小列宽 | number,string |
|
|
643
|
+
| show | 是否显示 | boolean |
|
|
644
|
+
| sort | 排序 | number |
|
|
645
|
+
| label | 列名 | string |
|
|
646
|
+
| headerAlign | 表头对齐方式, 若不设置该项,则使用表格的对齐方式 | 'left' ,'center' , 'right' |
|
|
482
647
|
|
|
483
648
|
|
|
484
649
|
|
|
485
|
-
|
|
650
|
+
皮肤设置
|
|
486
651
|
=================
|
|
487
652
|
|
|
488
653
|
### 1) 基础用法
|
|
489
654
|
|
|
490
655
|
|
|
491
656
|
|
|
492
|
-
```
|
|
657
|
+
```html
|
|
493
658
|
|
|
494
659
|
<template>
|
|
495
660
|
<div class="g-demo-skin-config-box">
|
|
@@ -1174,14 +1339,86 @@ const list = ref<{ name: string, className: string }[]>([
|
|
|
1174
1339
|
| change | 绑定值被改变时触发 | SkinConfig |
|
|
1175
1340
|
|
|
1176
1341
|
|
|
1177
|
-
|
|
1342
|
+
|
|
1343
|
+
|
|
1344
|
+
标签页组件
|
|
1345
|
+
=================
|
|
1346
|
+
|
|
1178
1347
|
|
|
1179
|
-
### TabPage(标签页组件)
|
|
1180
|
-
---
|
|
1181
1348
|
|
|
1349
|
+
# 霸软组件Hook说明
|
|
1350
|
+
|
|
1351
|
+
## Hook列表
|
|
1352
|
+
|
|
1353
|
+
+ useRemainingSpace([计算获取剩余空间-hook](#计算获取剩余空间-hook))
|
|
1354
|
+
|
|
1355
|
+
+ useTableConfig([表格组合-hook](#表格组合-hook))
|
|
1356
|
+
|
|
1357
|
+
|
|
1358
|
+
计算获取剩余空间 hook
|
|
1359
|
+
=================
|
|
1360
|
+
|
|
1361
|
+
### 1) 所需参数
|
|
1362
|
+
|
|
1363
|
+
| 名称 | 描述 | 类型 | 可选值 | 默认值 |
|
|
1364
|
+
|--------------|------|--------|:---:|:---:|
|
|
1365
|
+
| boxClassName | 父级空间 | string | - | - |
|
|
1366
|
+
| className | 排除空间 | string | - | - |
|
|
1367
|
+
| redundancy | 冗余值 | number | - | 0 |
|
|
1368
|
+
|
|
1369
|
+
### 2) 返回值
|
|
1370
|
+
|
|
1371
|
+
| 名称 | 描述 | 类型 |
|
|
1372
|
+
|--------------|--------------------------------|-------------|
|
|
1373
|
+
| height | 计算之后的高度 | ref<number> |
|
|
1374
|
+
| tableCovered | 重新进行计算高度 (如弹窗表 抽屉表 等默认无DOM时使用) | function |
|
|
1375
|
+
|
|
1376
|
+
|
|
1377
|
+
|
|
1378
|
+
|
|
1379
|
+
|
|
1380
|
+
|
|
1381
|
+
|
|
1382
|
+
|
|
1383
|
+
|
|
1384
|
+
|
|
1385
|
+
|
|
1386
|
+
|
|
1387
|
+
表格组合 hook
|
|
1388
|
+
=================
|
|
1389
|
+
|
|
1390
|
+
### 1) 所需参数
|
|
1391
|
+
|
|
1392
|
+
| 名称 | 描述 | 类型 | 可选值 | 默认值 |
|
|
1393
|
+
|------------|--------|--------------|:---:|:---:|
|
|
1394
|
+
| name | 表格唯一标识 | string | - | - |
|
|
1395
|
+
| tableTitle | 列配置 | tableTitle[] | - | - |
|
|
1396
|
+
| tableData | 表格数据 | ref<any[]> | - | - |
|
|
1397
|
+
|
|
1398
|
+
### 2) 返回值
|
|
1399
|
+
|
|
1400
|
+
| 名称 | 描述 | 类型 |
|
|
1401
|
+
|------------------|---------|-----------------------------------------|
|
|
1402
|
+
| tableTitle | 处理之后的表头 | TableTitle[] |
|
|
1403
|
+
| tableConfig | 表头的配置项 | { [propName: string]: TableConfigItem} |
|
|
1404
|
+
| headerDragend | 表格拖拽事件 | function |
|
|
1405
|
+
| initColumnFilter | 列的筛选 | function |
|
|
1406
|
+
| filtersValue | 过滤条件 | { [key: string]: Array<string,number>} |
|
|
1407
|
+
|
|
1408
|
+
### 3) TableTitle
|
|
1409
|
+
|
|
1410
|
+
| 名称 | 描述 | 类型 |
|
|
1411
|
+
|---------------|----------------------------------------------------------------------|---------------------------------------------|
|
|
1412
|
+
| label | 显示的标题 | string |
|
|
1413
|
+
| prop | 字段对应列的字段名字也可以使用 property属性 | string |
|
|
1414
|
+
| minWidth? | 对应列的最小宽度与 width 的区别是 width 是固定的,min-width 会按比例分配剩余宽度 | number ,string, |
|
|
1415
|
+
| className? | 列的className | string |
|
|
1416
|
+
| sortable | 列是否能够排序 则代表用户希望远程排序,需要监听 Table 的 sort-change 事件 */ | Boolean |
|
|
1417
|
+
| filters? | 据过滤的选项, 数组格式,数组中的元素需要有 text 和 value 属性。 数组中的每个元素都需要有 text 和 value 属性 | {text:string,number,value:string,number} [] |
|
|
1418
|
+
| filterMethod? | 数据过滤使用的方法, 如果是多选的筛选项,对每一条数据会执行多次,任意一次返回 true 就会显示 | Function |
|
|
1419
|
+
| headerAlign? | 表头对齐方式, 若不设置该项,则使用表格的对齐方式 | 'left' , 'center' , 'right' |
|
|
1182
1420
|
|
|
1183
1421
|
|
|
1184
|
-
# 标签页组件
|
|
1185
1422
|
|
|
1186
1423
|
|
|
1187
1424
|
|
package/createMd.js
CHANGED
|
@@ -1,47 +1,75 @@
|
|
|
1
1
|
const fs = require('fs') // 文件服务
|
|
2
|
-
|
|
3
2
|
// 读取文件里面的MD文档
|
|
4
3
|
const interiorFolderPath = './packages' // 默认路径
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const folderNames = items.filter(item => fs.statSync(`${interiorFolderPath}/${item}`).isDirectory() && !unwantedFolders.includes(item))
|
|
9
|
-
const mdGather= folderNames.map(item => ({ // 拿到处理后的每一个文件数据
|
|
10
|
-
name:item,
|
|
11
|
-
mdText:disFile(getMdContent(`${interiorFolderPath}/${item}/docs/README.md`)),
|
|
12
|
-
demoText:getMdContent(`${interiorFolderPath}/${item}/docs/demo.vue`),
|
|
13
|
-
}))
|
|
14
|
-
let collectMD = `# 霸软业务组件库\r\n\r\n## 组件列表\r\n`
|
|
15
|
-
mdGather.forEach(item => {
|
|
16
|
-
// 取tittle
|
|
17
|
-
const title = extractTitle(item.mdText)
|
|
18
|
-
collectMD+= `\r\n+ ${item.name}([${title}](#${item.name}title))\r\n`
|
|
19
|
-
})
|
|
20
|
-
mdGather.forEach(item => {
|
|
21
|
-
const title = extractTitle(item.mdText)
|
|
22
|
-
collectMD+= `--- \r\n\r\n ### ${item.name}(${title})\r\n---\r\n\r\n`
|
|
23
|
-
collectMD+=insertText(item.mdText,item.demoText)
|
|
24
|
-
collectMD+='\r\n\r\n'
|
|
25
|
-
})
|
|
26
|
-
fs.writeFileSync('./README.md',collectMD)
|
|
27
|
-
})
|
|
4
|
+
const hookFolderPath = './packages/Hook'
|
|
5
|
+
const unwantedFolders = ['typings', 'Foo', 'Hook', 'Button'] // 不需要的文件夹名称
|
|
6
|
+
let collectMD = `# 霸软业务组件库\r\n\r\n## 组件列表\r\n`
|
|
28
7
|
|
|
29
|
-
const getMdContent = (path) =>{
|
|
30
|
-
return fs.readFileSync(path,'utf-8')
|
|
8
|
+
const getMdContent = (path) => {
|
|
9
|
+
return fs.readFileSync(path, 'utf-8')
|
|
31
10
|
}
|
|
32
11
|
const disFile = (text) => {
|
|
33
12
|
return text.replace(/<script setup>[\s\S]*?<\/script>/, '').replace(/<Preview[^>]*>[\s\S]*?<\/Preview>/, '')
|
|
34
13
|
}
|
|
35
|
-
const insertText = (text,demo) => {
|
|
36
|
-
const regex = /### 1\) 基础用法([\s\S]*?)### 2\)/g
|
|
14
|
+
const insertText = (text, demo) => {
|
|
15
|
+
const regex = /### 1\) 基础用法([\s\S]*?)### 2\)/g
|
|
37
16
|
const newText = text.replace(regex, (match, p1) => {
|
|
38
|
-
return `### 1) 基础用法${p1}\`\`\`
|
|
39
|
-
})
|
|
17
|
+
return `### 1) 基础用法${p1}\`\`\`html\r\n\r\n${demo}\r\n\r\n\`\`\`\r\n\r\n### 2)`
|
|
18
|
+
})
|
|
40
19
|
return newText
|
|
41
20
|
}
|
|
42
21
|
|
|
43
|
-
const extractTitle = (text) =>{
|
|
44
|
-
const
|
|
45
|
-
const
|
|
46
|
-
|
|
22
|
+
const extractTitle = (text) => {
|
|
23
|
+
const _text = text.substring(0, text.indexOf('=')).trim()
|
|
24
|
+
const index = _text.lastIndexOf('\n') !== -1 ? _text.lastIndexOf('\n') : 0
|
|
25
|
+
const title = _text.substring(index)
|
|
26
|
+
return title.trim()
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const main = () => {
|
|
30
|
+
const elFile = fs.readdirSync(interiorFolderPath, 'utf-8')
|
|
31
|
+
const folderNames = elFile.filter(item => fs.statSync(`${interiorFolderPath}/${item}`).isDirectory() && !unwantedFolders.includes(item))
|
|
32
|
+
const mdGather = folderNames.map(item => ({ // 拿到处理后的每一个文件数据
|
|
33
|
+
name: item,
|
|
34
|
+
mdText: disFile(getMdContent(`${interiorFolderPath}/${item}/docs/README.md`)),
|
|
35
|
+
demoText: getMdContent(`${interiorFolderPath}/${item}/docs/demo.vue`)
|
|
36
|
+
}))
|
|
37
|
+
// 写入组件MD
|
|
38
|
+
|
|
39
|
+
// 取title
|
|
40
|
+
mdGather.forEach(item => {
|
|
41
|
+
const title = extractTitle(item.mdText).replace(/ /g, '-')
|
|
42
|
+
collectMD += `\r\n+ ${item.name}([${title}](#${title}))\r\n`
|
|
43
|
+
})
|
|
44
|
+
const hookFile = fs.readdirSync(hookFolderPath, 'utf-8')
|
|
45
|
+
const hookFolderNames = hookFile.filter(item => fs.statSync(`${hookFolderPath}`).isDirectory() && item !== 'index.ts')
|
|
46
|
+
const hookMdGather = hookFolderNames.map(item => ({
|
|
47
|
+
name: item,
|
|
48
|
+
mdText: disFile(getMdContent(`${hookFolderPath}/${item}/README.md`))
|
|
49
|
+
}))
|
|
50
|
+
hookMdGather.forEach(item => {
|
|
51
|
+
const title = extractTitle(item.mdText).replace(/ /g, '-')
|
|
52
|
+
collectMD += `\r\n+ ${item.name}([${title}](#${title}))\r\n`
|
|
53
|
+
})
|
|
54
|
+
|
|
55
|
+
// 写入文档内容
|
|
56
|
+
mdGather.forEach(item => {
|
|
57
|
+
collectMD += insertText(item.mdText, item.demoText)
|
|
58
|
+
collectMD += '\r\n\r\n'
|
|
59
|
+
})
|
|
60
|
+
fs.writeFileSync('./README.md', collectMD)
|
|
61
|
+
|
|
62
|
+
// 写入hook MD
|
|
63
|
+
collectMD += '# 霸软组件Hook说明\r\n\r\n## Hook列表\r\n'
|
|
64
|
+
hookMdGather.forEach(item => {
|
|
65
|
+
const title = extractTitle(item.mdText).replace(/ /g, '-')
|
|
66
|
+
collectMD += `\r\n+ ${item.name}([${title}](#${title}))\r\n`
|
|
67
|
+
})
|
|
68
|
+
hookMdGather.forEach(item => {
|
|
69
|
+
collectMD += '\r\n\r\n'
|
|
70
|
+
collectMD += item.mdText
|
|
71
|
+
collectMD += '\r\n\r\n'
|
|
72
|
+
})
|
|
73
|
+
fs.writeFileSync('./README.md', collectMD)
|
|
47
74
|
}
|
|
75
|
+
main()
|