br-dionysus 1.8.4 → 1.8.5

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.
Files changed (41) hide show
  1. package/README.md +656 -52
  2. package/attributes.json +1 -1
  3. package/cypress/e2e/2-advanced-examples/actions.cy.js +3 -3
  4. package/cypress/e2e/2-advanced-examples/assertions.cy.js +2 -2
  5. package/cypress/e2e/2-advanced-examples/cypress_api.cy.js +5 -6
  6. package/cypress/e2e/2-advanced-examples/files.cy.js +1 -1
  7. package/cypress/e2e/2-advanced-examples/misc.cy.js +1 -1
  8. package/cypress/e2e/2-advanced-examples/navigation.cy.js +1 -1
  9. package/cypress/e2e/2-advanced-examples/network_requests.cy.js +22 -22
  10. package/cypress/e2e/2-advanced-examples/spies_stubs_clocks.cy.js +7 -7
  11. package/cypress/e2e/2-advanced-examples/storage.cy.js +8 -8
  12. package/cypress/e2e/2-advanced-examples/utilities.cy.js +15 -15
  13. package/dist/br-dionysus.es.js +3597 -3492
  14. package/dist/br-dionysus.umd.js +8 -8
  15. package/dist/index.css +1 -1
  16. package/dist/packages/MTableSuper/index.d.ts +4 -0
  17. package/dist/packages/MTableSuper/src/MTableSuper.vue.d.ts +11 -0
  18. package/dist/packages/MTableSuper/src/token.d.ts +23 -0
  19. package/dist/packages/MTableV2/src/MTableV2.vue.d.ts +7 -0
  20. package/dist/packages/index.d.ts +1 -0
  21. package/package.json +1 -1
  22. package/packages/Hook/useTableConfig/demo.vue +1 -1
  23. package/packages/Hook/useTableConfig/useTableConfig.ts +9 -9
  24. package/packages/MDialog/src/MDialog.vue +12 -1
  25. package/packages/MSelectTable/src/MSelectTable.vue +1 -1
  26. package/packages/MTable/src/MTable.vue +0 -32
  27. package/packages/MTableColumn/src/MTableColumn.vue +0 -41
  28. package/packages/MTableSuper/docs/README.md +48 -0
  29. package/packages/MTableSuper/docs/demo.vue +246 -0
  30. package/packages/MTableSuper/index.ts +10 -0
  31. package/packages/MTableSuper/src/MTableSuper.vue +140 -0
  32. package/packages/MTableSuper/src/token.ts +24 -0
  33. package/packages/MTableV2/docs/README.md +1 -0
  34. package/packages/MTableV2/docs/demo.vue +9 -7
  35. package/packages/MTableV2/src/MTableV2.vue +49 -5
  36. package/packages/index.ts +3 -0
  37. package/packages/list.json +6 -0
  38. package/packages/typings/global.d.ts +2 -2
  39. package/src/router.ts +5 -0
  40. package/tags.json +1 -1
  41. package/web-types.json +1 -1
package/README.md CHANGED
@@ -22,6 +22,8 @@
22
22
 
23
23
  + MTableColumnSet([表格头设置组件](#表格头设置组件))
24
24
 
25
+ + MTableSuper([整合表格组件](#整合表格组件))
26
+
25
27
  + MTableV2([虚拟化表格](#虚拟化表格))
26
28
 
27
29
  + SkinConfig([皮肤设置](#皮肤设置))
@@ -1490,7 +1492,7 @@ const tableConfig = ref({
1490
1492
 
1491
1493
 
1492
1494
 
1493
- 虚拟化表格
1495
+ 整合表格组件
1494
1496
  =================
1495
1497
 
1496
1498
  ### 1) 基础用法
@@ -1501,55 +1503,242 @@ const tableConfig = ref({
1501
1503
 
1502
1504
  <template>
1503
1505
  <div class="g-box">
1504
- <p @click="test">{{ tableConfig }}</p>
1505
- <MTableV2
1506
+ <h3>基础功能</h3>
1507
+ <MTableSuper
1506
1508
  :data="tableData"
1507
- :columns="tableTitle"
1508
- :height="500"
1509
+ v-if="!tableData"
1509
1510
  border
1510
- fixed
1511
+ >
1512
+ <MTableColumn
1513
+ v-for="item in tableTitle"
1514
+ :key="item.prop"
1515
+ :prop="item.prop"
1516
+ :label="item.label"
1517
+ :align="item.align"
1518
+ :minWidth="item.minWidth"
1519
+ :className="item.className"
1520
+ :filters="item.filters"
1521
+ :headerAlign="item.headerAlign"
1522
+ :fixed="item.fixed"
1523
+ v-model:filtersValue="filtersValue"
1524
+ showOverflowTooltip
1525
+ ></MTableColumn>
1526
+ </MTableSuper>
1527
+ <h3>带选择的表格</h3>
1528
+ <MTableSuper
1529
+ :data="tableData"
1530
+ border
1531
+ >
1532
+ <el-table-column
1533
+ fixed="left"
1534
+ type="selection"
1535
+ />
1536
+ <el-table-column
1537
+ prop="name"
1538
+ label="名称"
1539
+ >
1540
+ <el-table-column
1541
+ prop="date"
1542
+ label="时间"
1543
+ ></el-table-column>
1544
+ <el-table-column
1545
+ prop="address"
1546
+ label="地址"
1547
+ ></el-table-column>
1548
+ </el-table-column>
1549
+ <MTableColumn
1550
+ v-for="item in tableTitle"
1551
+ :key="item.prop"
1552
+ :prop="item.prop"
1553
+ :label="item.label"
1554
+ :align="item.align"
1555
+ :minWidth="item.minWidth"
1556
+ :className="item.className"
1557
+ :filters="item.filters"
1558
+ :headerAlign="item.headerAlign"
1559
+ :fixed="item.fixed"
1560
+ v-model:filtersValue="filtersValue"
1561
+ showOverflowTooltip
1562
+ >
1563
+ </MTableColumn>
1564
+ </MTableSuper>
1565
+ <h3>展开列</h3>
1566
+ <MTableSuper
1567
+ v-if="!tableData"
1568
+ class="style.box"
1569
+ :data="tableData"
1570
+ border
1571
+ :filtersValue="filtersValue"
1572
+ scrollbarAlwaysOn
1511
1573
  v-model:tableConfig="tableConfig"
1512
- tableConfigKey="MTableV2Demo"
1513
- ></MTableV2>
1574
+ rowKey="id"
1575
+ tableConfigKey="tableConfigKey"
1576
+ @headerDragend="headerDragend"
1577
+ expandProp="sn"
1578
+ @privateExpandChange="privateExpandChange"
1579
+ >
1580
+ <el-table-column
1581
+ fixed="left"
1582
+ type="selection"
1583
+ />
1584
+ <MTableColumn
1585
+ type="expand"
1586
+ width="1"
1587
+ >
1588
+ <template #default="props">
1589
+ <h1>index{{ props.index }}</h1>
1590
+ <h1>$index{{ props.$index }}</h1>
1591
+ <h1>测试</h1>
1592
+ </template>
1593
+ </MTableColumn>
1594
+ <MTableColumn
1595
+ v-for="item in tableTitle"
1596
+ :key="item.prop"
1597
+ :prop="item.prop"
1598
+ :label="item.label"
1599
+ :align="item.align"
1600
+ :minWidth="item.minWidth"
1601
+ :className="item.className"
1602
+ :filters="item.filters"
1603
+ :headerAlign="item.headerAlign"
1604
+ :fixed="item.fixed"
1605
+ v-model:filtersValue="filtersValue"
1606
+ showOverflowTooltip
1607
+ >
1608
+ </MTableColumn>
1609
+ </MTableSuper>
1610
+ <h3>树状表格</h3>
1611
+ <MTableSuper
1612
+ v-if="!tableData"
1613
+ class="style.box"
1614
+ :data="tableData"
1615
+ border
1616
+ @headerDragend="headerDragend"
1617
+ :filtersValue="filtersValue"
1618
+ scrollbarAlwaysOn
1619
+ v-model:tableConfig="tableConfig"
1620
+ rowKey="id"
1621
+ tableConfigKey="tableConfigKey"
1622
+ @expandChange="privateExpandChange"
1623
+ >
1624
+ <MTableColumn
1625
+ v-for="item in tableTitle"
1626
+ :key="item.prop"
1627
+ :prop="item.prop"
1628
+ :label="item.label"
1629
+ :align="item.align"
1630
+ :minWidth="item.minWidth"
1631
+ :className="item.className"
1632
+ :filters="item.filters"
1633
+ :headerAlign="item.headerAlign"
1634
+ :fixed="item.fixed"
1635
+ v-model:filtersValue="filtersValue"
1636
+ showOverflowTooltip
1637
+ >
1638
+ </MTableColumn>
1639
+ </MTableSuper>
1514
1640
  </div>
1515
1641
  </template>
1516
1642
 
1517
1643
  <script setup lang="ts">
1518
1644
  import { ref } from 'vue'
1519
- import useTableV2Config from 'packages/Hook/useTableV2Config/useTableV2Config'
1645
+ import { useTableConfig } from 'packages/index'
1646
+ import { MTableColumn } from 'packages/MTableColumn'
1647
+
1648
+ const privateExpandChange = (row: any, expandedRows: any[]) => {
1649
+ console.log('row', row)
1650
+ console.log('expandedRows', expandedRows)
1651
+ }
1652
+
1653
+ // const test = (data: any) => {
1654
+ // console.log('data', data)
1655
+ // }
1520
1656
 
1521
1657
  const tableData = ref<any[]>([])
1522
- const { tableTitle, tableConfig, filtersValue } = useTableV2Config('MTableV2Demo', [{
1523
- title: '序号',
1524
- key: 'sn',
1525
- dataKey: 'sn',
1526
- width: 300
1658
+ const { tableTitle, headerDragend, tableConfig, filtersValue } = useTableConfig('MTableDemo', [{
1659
+ label: '序号',
1660
+ prop: 'sn',
1661
+ minWidth: 200
1662
+ // fixed: 'right'
1527
1663
  }, {
1528
- title: '时间',
1529
- key: 'date',
1530
- dataKey: 'date',
1531
- width: 300
1664
+ label: '时间',
1665
+ prop: 'date',
1666
+ minWidth: 200
1667
+ // fixed: 'left'
1532
1668
  }, {
1533
- title: '地址',
1534
- key: 'address',
1535
- dataKey: 'address',
1536
- width: 300
1669
+ label: '地址',
1670
+ prop: 'address',
1671
+ minWidth: 200
1537
1672
  }, {
1538
- title: '名称',
1539
- key: 'name',
1540
- dataKey: 'name',
1541
- width: 300
1673
+ label: '名称',
1674
+ prop: 'name',
1675
+ minWidth: 200
1542
1676
  }], tableData)
1677
+ console.log('tableTitle', tableTitle.value)
1543
1678
 
1544
- const test = () => {
1545
- filtersValue.value = {}
1546
- }
1547
1679
  tableData.value = [{
1548
1680
  id: 1,
1549
- sn: 'sn',
1550
- date: 'date',
1551
- address: 'address',
1552
- name: 'name'
1681
+ sn: 1,
1682
+ date: '2016-05-03',
1683
+ name: 'Tom1',
1684
+ address: 'No. 189',
1685
+ tag: 'Home',
1686
+ pid: 0
1687
+ }, {
1688
+ id: 2,
1689
+ sn: 2,
1690
+ date: '2016-05-02',
1691
+ name: 'Tom2',
1692
+ address: 'No. 189, Grove St, Los Angeles',
1693
+ tag: 'Office',
1694
+ pid: 0,
1695
+ children: [{
1696
+ id: 21,
1697
+ sn: 1,
1698
+ date: '2016-05-02',
1699
+ name: 'Tom21',
1700
+ address: 'No. 189, Grove St, Los Angeles',
1701
+ tag: 'Office'
1702
+ }, {
1703
+ id: 22,
1704
+ sn: 2,
1705
+ date: '2016-05-02',
1706
+ name: 'Tom22',
1707
+ address: 'No. 189, Grove St, Los Angeles',
1708
+ tag: 'Office'
1709
+ }]
1710
+ }, {
1711
+ id: 3,
1712
+ sn: 3,
1713
+ date: '2016-05-04',
1714
+ name: 'Tom3',
1715
+ address: 'No. 189',
1716
+ tag: 'Home',
1717
+ pid: 0
1718
+ }, {
1719
+ id: 4,
1720
+ sn: 4,
1721
+ date: '2016-05-01',
1722
+ name: 'Tom4',
1723
+ address: 'No. 189, Grove St, Los Angeles',
1724
+ tag: 'Office',
1725
+ pid: 0
1726
+ }, {
1727
+ id: 5,
1728
+ sn: 5,
1729
+ date: '2016-05-05',
1730
+ name: 'Tom4',
1731
+ address: 'No. 189, Grove St, Los Angeles',
1732
+ tag: 'Office',
1733
+ pid: 0
1734
+ }, {
1735
+ id: 6,
1736
+ sn: 6,
1737
+ date: '2016-06-01',
1738
+ name: 'Tom4',
1739
+ address: 'No. 189, Grove St, Los Angeles',
1740
+ tag: 'Office',
1741
+ pid: 0
1553
1742
  }]
1554
1743
  </script>
1555
1744
 
@@ -1564,18 +1753,132 @@ tableData.value = [{
1564
1753
 
1565
1754
  ### 2) Attributes
1566
1755
 
1567
- | 参数 | 说明 | 类型 | 可选值 | 默认值 |
1568
- |--------------------|---------------------------------------------------|----------------------------|---------------------------|-----------------------------------------------------------------------------------|
1569
- | size | 尺寸 | string | small \| large \| default | default |
1570
- | data | 要在表中渲染的数据数组 | any[] | - | [] |
1571
- | columns | 表格列配置 | TableV2Title[] | - | [] |
1572
- | filtersValue | 表格内容筛选(当为null时,不显示筛选图标) | FilterValue \| null | - | null |
1573
- | tableConfig | 表格配置 | TableConfig \| null | - | null |
1574
- | tableConfigKey | 表格配置key | string | - | '' |
1575
- | fixed | 单元格宽度是自适应还是固定 | boolean | - | false |
1576
- | estimatedRowHeight | 渲染动态的单元格的预估高度 | number \| null | - | null |
1577
- | headerHeight | Header 的高度由height设置。 如果传入数组,它会使 header row 等于数组长度 | number \| number[] \| null | - | null |
1578
- | 其余参数 | 参考el官网的table | any | - | https://element-plus.org/zh-CN/component/table-v2.html#tablev2-%E5%B1%9E%E6%80%A7 |
1756
+ | 参数 | 说明 | 类型 | 可选值 | 默认值 |
1757
+ |----------------|-----------------------------|------------------|-----|-----------------------------------------------------|
1758
+ | data | 表格的数据 | Array | - | [ ] |
1759
+ | sole | 行的唯一值 | String , number | - | key |
1760
+ | filtersValue | 表格内容筛选(当为null时,不显示筛选图标) | Function \| null | - | null |
1761
+ | expandProp | 展开图标列(如使用这个属性则必须存在rowKey属性) | string | - | '' |
1762
+ | tableConfigKey | 表格配置key | string | - | '' |
1763
+ | 其余参数 | 参考el官网的table | any | - | https://element-plus.org/zh-CN/component/table.html |
1764
+
1765
+ ## 要求
1766
+
1767
+ ```
1768
+ sole 必须传递在表格数据内为唯一的值 如id key 等不会发生重复的关键字
1769
+ ```
1770
+
1771
+ ### 3) Events
1772
+
1773
+ | 方法名 | 说明 | 回调参数 |
1774
+ |---------------------|--------------------------------------|-----------------------------------------------------|
1775
+ | pasteData | 表格粘贴方法 | 共有2个参数,依次为粘贴动作的数据PasteAction ,表格原始数据tableData |
1776
+ | update:tableConfig | 表格配置更新 | \[tableConfig: TableConfig] |
1777
+ | privateExpandChange | expandProp模式下 当用户对某一行展开或者关闭的时候会触发该事件 | [row: any, expandedRows: any[]] |
1778
+ | 其余方法 | 参考el官网的table | https://element-plus.org/zh-CN/component/table.html |
1779
+
1780
+ ### 4) PasteAction
1781
+
1782
+ | 参数 | 说明 | 类型 |
1783
+ |------------|----------------------------------------|--------|
1784
+ | editRow | 返回粘贴的对应行的原始数据 | Object |
1785
+ | editColumn | 返回粘贴时鼠标所在列的 表格prop值 | String |
1786
+ | arr | 返回粘贴时候处理之后的 数组信息 | Array |
1787
+ | rowIndex | 根据sole的值 去data内查找 当前操作的 粘贴行在data内的序号 | number |
1788
+
1789
+
1790
+
1791
+
1792
+
1793
+ 虚拟化表格
1794
+ =================
1795
+
1796
+ ### 1) 基础用法
1797
+
1798
+
1799
+
1800
+ ```html
1801
+
1802
+ <template>
1803
+ <div class="g-box">
1804
+ <p @click="test">{{ tableConfig }}</p>
1805
+ <MTableV2
1806
+ :data="tableData"
1807
+ :columns="tableTitle"
1808
+ :height="500"
1809
+ border
1810
+ fixed
1811
+ v-model:tableConfig="tableConfig"
1812
+ tableConfigKey="MTableV2Demo"
1813
+ ></MTableV2>
1814
+ </div>
1815
+ </template>
1816
+
1817
+ <script setup lang="ts">
1818
+ import { ref } from 'vue'
1819
+ import useTableV2Config from 'packages/Hook/useTableV2Config/useTableV2Config'
1820
+
1821
+ const tableData = ref<any[]>([])
1822
+ const { tableTitle, tableConfig, filtersValue } = useTableV2Config('MTableV2Demo', [{
1823
+ title: '序号',
1824
+ key: 'sn',
1825
+ dataKey: 'sn',
1826
+ width: 300
1827
+ }, {
1828
+ title: '时间',
1829
+ key: 'date',
1830
+ dataKey: 'date',
1831
+ width: 300
1832
+ }, {
1833
+ title: '地址',
1834
+ key: 'address',
1835
+ dataKey: 'address',
1836
+ width: 300
1837
+ }, {
1838
+ title: '名称',
1839
+ key: 'name',
1840
+ dataKey: 'name',
1841
+ width: 300
1842
+ }], tableData)
1843
+
1844
+ const test = () => {
1845
+ filtersValue.value = {}
1846
+ }
1847
+ for (let i = 0; i < 1000; i++) {
1848
+ tableData.value.push({
1849
+ id: i,
1850
+ sn: 'sn' + i,
1851
+ date: 'date' + i,
1852
+ address: 'address' + i,
1853
+ name: 'name' + i
1854
+ })
1855
+ }
1856
+ </script>
1857
+
1858
+ <style lang="scss" scoped>
1859
+ .g-box {
1860
+ max-width: 1000px;
1861
+ }
1862
+ </style>
1863
+
1864
+
1865
+ ```
1866
+
1867
+ ### 2) Attributes
1868
+
1869
+ | 参数 | 说明 | 类型 | 可选值 | 默认值 |
1870
+ |--------------------|---------------------------------------------------|----------------------------|---------------------------|-----------------------------------------------------------------------------------|
1871
+ | size | 尺寸 | string | small \| large \| default | default |
1872
+ | data | 要在表中渲染的数据数组 | any[] | - | [] |
1873
+ | columns | 表格列配置 | TableV2Title[] | - | [] |
1874
+ | filtersValue | 表格内容筛选(当为null时,不显示筛选图标) | FilterValue \| null | - | null |
1875
+ | tableConfig | 表格配置 | TableConfig \| null | - | null |
1876
+ | tableConfigKey | 表格配置key | string | - | '' |
1877
+ | fixed | 单元格宽度是自适应还是固定 | boolean | - | false |
1878
+ | estimatedRowHeight | 渲染动态的单元格的预估高度 | number \| null | - | null |
1879
+ | headerHeight | Header 的高度由height设置。 如果传入数组,它会使 header row 等于数组长度 | number \| number[] \| null | - | null |
1880
+ | cellWidthAdaptive | 单元格宽度自适应 | boolean | - | false |
1881
+ | 其余参数 | 参考el官网的table | any | - | https://element-plus.org/zh-CN/component/table-v2.html#tablev2-%E5%B1%9E%E6%80%A7 |
1579
1882
 
1580
1883
  ### 3) Events
1581
1884
 
@@ -4005,6 +4308,304 @@ const tableConfig = ref({
4005
4308
 
4006
4309
 
4007
4310
 
4311
+ 整合表格组件
4312
+ =================
4313
+
4314
+ ### 1) 基础用法
4315
+
4316
+
4317
+
4318
+ ```html
4319
+
4320
+ <template>
4321
+ <div class="g-box">
4322
+ <h3>基础功能</h3>
4323
+ <MTableSuper
4324
+ :data="tableData"
4325
+ v-if="!tableData"
4326
+ border
4327
+ >
4328
+ <MTableColumn
4329
+ v-for="item in tableTitle"
4330
+ :key="item.prop"
4331
+ :prop="item.prop"
4332
+ :label="item.label"
4333
+ :align="item.align"
4334
+ :minWidth="item.minWidth"
4335
+ :className="item.className"
4336
+ :filters="item.filters"
4337
+ :headerAlign="item.headerAlign"
4338
+ :fixed="item.fixed"
4339
+ v-model:filtersValue="filtersValue"
4340
+ showOverflowTooltip
4341
+ ></MTableColumn>
4342
+ </MTableSuper>
4343
+ <h3>带选择的表格</h3>
4344
+ <MTableSuper
4345
+ :data="tableData"
4346
+ border
4347
+ >
4348
+ <el-table-column
4349
+ fixed="left"
4350
+ type="selection"
4351
+ />
4352
+ <el-table-column
4353
+ prop="name"
4354
+ label="名称"
4355
+ >
4356
+ <el-table-column
4357
+ prop="date"
4358
+ label="时间"
4359
+ ></el-table-column>
4360
+ <el-table-column
4361
+ prop="address"
4362
+ label="地址"
4363
+ ></el-table-column>
4364
+ </el-table-column>
4365
+ <MTableColumn
4366
+ v-for="item in tableTitle"
4367
+ :key="item.prop"
4368
+ :prop="item.prop"
4369
+ :label="item.label"
4370
+ :align="item.align"
4371
+ :minWidth="item.minWidth"
4372
+ :className="item.className"
4373
+ :filters="item.filters"
4374
+ :headerAlign="item.headerAlign"
4375
+ :fixed="item.fixed"
4376
+ v-model:filtersValue="filtersValue"
4377
+ showOverflowTooltip
4378
+ >
4379
+ </MTableColumn>
4380
+ </MTableSuper>
4381
+ <h3>展开列</h3>
4382
+ <MTableSuper
4383
+ v-if="!tableData"
4384
+ class="style.box"
4385
+ :data="tableData"
4386
+ border
4387
+ :filtersValue="filtersValue"
4388
+ scrollbarAlwaysOn
4389
+ v-model:tableConfig="tableConfig"
4390
+ rowKey="id"
4391
+ tableConfigKey="tableConfigKey"
4392
+ @headerDragend="headerDragend"
4393
+ expandProp="sn"
4394
+ @privateExpandChange="privateExpandChange"
4395
+ >
4396
+ <el-table-column
4397
+ fixed="left"
4398
+ type="selection"
4399
+ />
4400
+ <MTableColumn
4401
+ type="expand"
4402
+ width="1"
4403
+ >
4404
+ <template #default="props">
4405
+ <h1>index{{ props.index }}</h1>
4406
+ <h1>$index{{ props.$index }}</h1>
4407
+ <h1>测试</h1>
4408
+ </template>
4409
+ </MTableColumn>
4410
+ <MTableColumn
4411
+ v-for="item in tableTitle"
4412
+ :key="item.prop"
4413
+ :prop="item.prop"
4414
+ :label="item.label"
4415
+ :align="item.align"
4416
+ :minWidth="item.minWidth"
4417
+ :className="item.className"
4418
+ :filters="item.filters"
4419
+ :headerAlign="item.headerAlign"
4420
+ :fixed="item.fixed"
4421
+ v-model:filtersValue="filtersValue"
4422
+ showOverflowTooltip
4423
+ >
4424
+ </MTableColumn>
4425
+ </MTableSuper>
4426
+ <h3>树状表格</h3>
4427
+ <MTableSuper
4428
+ v-if="!tableData"
4429
+ class="style.box"
4430
+ :data="tableData"
4431
+ border
4432
+ @headerDragend="headerDragend"
4433
+ :filtersValue="filtersValue"
4434
+ scrollbarAlwaysOn
4435
+ v-model:tableConfig="tableConfig"
4436
+ rowKey="id"
4437
+ tableConfigKey="tableConfigKey"
4438
+ @expandChange="privateExpandChange"
4439
+ >
4440
+ <MTableColumn
4441
+ v-for="item in tableTitle"
4442
+ :key="item.prop"
4443
+ :prop="item.prop"
4444
+ :label="item.label"
4445
+ :align="item.align"
4446
+ :minWidth="item.minWidth"
4447
+ :className="item.className"
4448
+ :filters="item.filters"
4449
+ :headerAlign="item.headerAlign"
4450
+ :fixed="item.fixed"
4451
+ v-model:filtersValue="filtersValue"
4452
+ showOverflowTooltip
4453
+ >
4454
+ </MTableColumn>
4455
+ </MTableSuper>
4456
+ </div>
4457
+ </template>
4458
+
4459
+ <script setup lang="ts">
4460
+ import { ref } from 'vue'
4461
+ import { useTableConfig } from 'packages/index'
4462
+ import { MTableColumn } from 'packages/MTableColumn'
4463
+
4464
+ const privateExpandChange = (row: any, expandedRows: any[]) => {
4465
+ console.log('row', row)
4466
+ console.log('expandedRows', expandedRows)
4467
+ }
4468
+
4469
+ // const test = (data: any) => {
4470
+ // console.log('data', data)
4471
+ // }
4472
+
4473
+ const tableData = ref<any[]>([])
4474
+ const { tableTitle, headerDragend, tableConfig, filtersValue } = useTableConfig('MTableDemo', [{
4475
+ label: '序号',
4476
+ prop: 'sn',
4477
+ minWidth: 200
4478
+ // fixed: 'right'
4479
+ }, {
4480
+ label: '时间',
4481
+ prop: 'date',
4482
+ minWidth: 200
4483
+ // fixed: 'left'
4484
+ }, {
4485
+ label: '地址',
4486
+ prop: 'address',
4487
+ minWidth: 200
4488
+ }, {
4489
+ label: '名称',
4490
+ prop: 'name',
4491
+ minWidth: 200
4492
+ }], tableData)
4493
+ console.log('tableTitle', tableTitle.value)
4494
+
4495
+ tableData.value = [{
4496
+ id: 1,
4497
+ sn: 1,
4498
+ date: '2016-05-03',
4499
+ name: 'Tom1',
4500
+ address: 'No. 189',
4501
+ tag: 'Home',
4502
+ pid: 0
4503
+ }, {
4504
+ id: 2,
4505
+ sn: 2,
4506
+ date: '2016-05-02',
4507
+ name: 'Tom2',
4508
+ address: 'No. 189, Grove St, Los Angeles',
4509
+ tag: 'Office',
4510
+ pid: 0,
4511
+ children: [{
4512
+ id: 21,
4513
+ sn: 1,
4514
+ date: '2016-05-02',
4515
+ name: 'Tom21',
4516
+ address: 'No. 189, Grove St, Los Angeles',
4517
+ tag: 'Office'
4518
+ }, {
4519
+ id: 22,
4520
+ sn: 2,
4521
+ date: '2016-05-02',
4522
+ name: 'Tom22',
4523
+ address: 'No. 189, Grove St, Los Angeles',
4524
+ tag: 'Office'
4525
+ }]
4526
+ }, {
4527
+ id: 3,
4528
+ sn: 3,
4529
+ date: '2016-05-04',
4530
+ name: 'Tom3',
4531
+ address: 'No. 189',
4532
+ tag: 'Home',
4533
+ pid: 0
4534
+ }, {
4535
+ id: 4,
4536
+ sn: 4,
4537
+ date: '2016-05-01',
4538
+ name: 'Tom4',
4539
+ address: 'No. 189, Grove St, Los Angeles',
4540
+ tag: 'Office',
4541
+ pid: 0
4542
+ }, {
4543
+ id: 5,
4544
+ sn: 5,
4545
+ date: '2016-05-05',
4546
+ name: 'Tom4',
4547
+ address: 'No. 189, Grove St, Los Angeles',
4548
+ tag: 'Office',
4549
+ pid: 0
4550
+ }, {
4551
+ id: 6,
4552
+ sn: 6,
4553
+ date: '2016-06-01',
4554
+ name: 'Tom4',
4555
+ address: 'No. 189, Grove St, Los Angeles',
4556
+ tag: 'Office',
4557
+ pid: 0
4558
+ }]
4559
+ </script>
4560
+
4561
+ <style lang="scss" scoped>
4562
+ .g-box {
4563
+ max-width: 1000px;
4564
+ }
4565
+ </style>
4566
+
4567
+
4568
+ ```
4569
+
4570
+ ### 2) Attributes
4571
+
4572
+ | 参数 | 说明 | 类型 | 可选值 | 默认值 |
4573
+ |----------------|-----------------------------|------------------|-----|-----------------------------------------------------|
4574
+ | data | 表格的数据 | Array | - | [ ] |
4575
+ | sole | 行的唯一值 | String , number | - | key |
4576
+ | filtersValue | 表格内容筛选(当为null时,不显示筛选图标) | Function \| null | - | null |
4577
+ | expandProp | 展开图标列(如使用这个属性则必须存在rowKey属性) | string | - | '' |
4578
+ | tableConfigKey | 表格配置key | string | - | '' |
4579
+ | 其余参数 | 参考el官网的table | any | - | https://element-plus.org/zh-CN/component/table.html |
4580
+
4581
+ ## 要求
4582
+
4583
+ ```
4584
+ sole 必须传递在表格数据内为唯一的值 如id key 等不会发生重复的关键字
4585
+ ```
4586
+
4587
+ ### 3) Events
4588
+
4589
+ | 方法名 | 说明 | 回调参数 |
4590
+ |---------------------|--------------------------------------|-----------------------------------------------------|
4591
+ | pasteData | 表格粘贴方法 | 共有2个参数,依次为粘贴动作的数据PasteAction ,表格原始数据tableData |
4592
+ | update:tableConfig | 表格配置更新 | \[tableConfig: TableConfig] |
4593
+ | privateExpandChange | expandProp模式下 当用户对某一行展开或者关闭的时候会触发该事件 | [row: any, expandedRows: any[]] |
4594
+ | 其余方法 | 参考el官网的table | https://element-plus.org/zh-CN/component/table.html |
4595
+
4596
+ ### 4) PasteAction
4597
+
4598
+ | 参数 | 说明 | 类型 |
4599
+ |------------|----------------------------------------|--------|
4600
+ | editRow | 返回粘贴的对应行的原始数据 | Object |
4601
+ | editColumn | 返回粘贴时鼠标所在列的 表格prop值 | String |
4602
+ | arr | 返回粘贴时候处理之后的 数组信息 | Array |
4603
+ | rowIndex | 根据sole的值 去data内查找 当前操作的 粘贴行在data内的序号 | number |
4604
+
4605
+
4606
+
4607
+
4608
+
4008
4609
  虚拟化表格
4009
4610
  =================
4010
4611
 
@@ -4059,13 +4660,15 @@ const { tableTitle, tableConfig, filtersValue } = useTableV2Config('MTableV2Demo
4059
4660
  const test = () => {
4060
4661
  filtersValue.value = {}
4061
4662
  }
4062
- tableData.value = [{
4063
- id: 1,
4064
- sn: 'sn',
4065
- date: 'date',
4066
- address: 'address',
4067
- name: 'name'
4068
- }]
4663
+ for (let i = 0; i < 1000; i++) {
4664
+ tableData.value.push({
4665
+ id: i,
4666
+ sn: 'sn' + i,
4667
+ date: 'date' + i,
4668
+ address: 'address' + i,
4669
+ name: 'name' + i
4670
+ })
4671
+ }
4069
4672
  </script>
4070
4673
 
4071
4674
  <style lang="scss" scoped>
@@ -4090,6 +4693,7 @@ tableData.value = [{
4090
4693
  | fixed | 单元格宽度是自适应还是固定 | boolean | - | false |
4091
4694
  | estimatedRowHeight | 渲染动态的单元格的预估高度 | number \| null | - | null |
4092
4695
  | headerHeight | Header 的高度由height设置。 如果传入数组,它会使 header row 等于数组长度 | number \| number[] \| null | - | null |
4696
+ | cellWidthAdaptive | 单元格宽度自适应 | boolean | - | false |
4093
4697
  | 其余参数 | 参考el官网的table | any | - | https://element-plus.org/zh-CN/component/table-v2.html#tablev2-%E5%B1%9E%E6%80%A7 |
4094
4698
 
4095
4699
  ### 3) Events