41 lines
9.5 KiB
JSON
41 lines
9.5 KiB
JSON
{
|
||
"slug": "expandabletable",
|
||
"mode": "single",
|
||
"examples": [
|
||
{
|
||
"id": "expandabletable-ex-1",
|
||
"title": "基础用法",
|
||
"titleSrc": "",
|
||
"desc": "",
|
||
"html": "<div class=\"kole-page\">\n <h2 class=\"kole-h2\">ExpandableTable 可展开表格</h2>\n <p class=\"kole-desc\">行首展开图标可展开详情(子表格 / 描述),支持同时展开多行或仅一行。</p>\n <div class=\"kole-demo\">\n <div class=\"kole-demo__title\">订单明细(点击箭头展开)</div>\n <table class=\"kole-exptable\" id=\"exptable\">\n <thead>\n <tr>\n <th style=\"width:40px\"></th>\n <th>订单号</th>\n <th>客户</th>\n <th>金额</th>\n <th>状态</th>\n </tr>\n </thead>\n <tbody></tbody>\n </table>\n </div>\n</div>",
|
||
"preview": {
|
||
"show": [
|
||
[
|
||
0
|
||
]
|
||
],
|
||
"hide": [],
|
||
"mode": "single"
|
||
},
|
||
"previewSafe": true,
|
||
"previewUnsafeReasons": [],
|
||
"source": "curated",
|
||
"code": {
|
||
"html": "<h2>ExpandableTable 可展开表格</h2>\n<p>行首展开图标可展开详情(子表格 / 描述),支持同时展开多行或仅一行。</p>\n<div>订单明细(点击箭头展开)</div>\n<table class=\"kole-exptable\" id=\"exptable\">\n <thead>\n <tr>\n <th style=\"width:40px\"></th>\n <th>订单号</th>\n <th>客户</th>\n <th>金额</th>\n <th>状态</th>\n </tr>\n </thead>\n <tbody></tbody>\n</table>",
|
||
"jsx": "import { KoleExpandableTable } from 'kole-ui/react';\n\nconst columns = [\n { key: 'id', title: '订单号' },\n { key: 'cust', title: '客户' },\n { key: 'amount', title: '金额' },\n { key: 'status', title: '状态' },\n];\n\nconst data = [\n { id: 'NO20240801', cust: '北京科技有限公司', amount: 1280, status: '已付款', detail: { items: ['企业版授权 ×1', '实施服务 ×1'], note: '对公转账,预计 3 个工作日内开通。' } },\n { id: 'NO20240802', cust: '上海贸易行', amount: 560, status: '待发货', detail: { items: ['标准版授权 ×2'], note: '已开票,等待仓库出库。' } },\n { id: 'NO20240803', cust: '广州信息公司', amount: 3200, status: '已完成', detail: { items: ['旗舰版授权 ×1', '培训服务 ×3', '运维包 ×1'], note: '项目已验收,进入维保期。' } },\n];\n\n// 行首箭头展开 detail(备注 + 子项),可同时展开多行\n<KoleExpandableTable data={data} columns={columns} idKey=\"id\" />",
|
||
"vue3": "<script setup>\nimport { KoleExpandableTable } from 'kole-ui/vue3';\n\nconst columns = [\n { key: 'id', title: '订单号' },\n { key: 'cust', title: '客户' },\n { key: 'amount', title: '金额' },\n { key: 'status', title: '状态' },\n];\n\nconst data = [\n { id: 'NO20240801', cust: '北京科技有限公司', amount: 1280, status: '已付款', detail: { items: ['企业版授权 ×1', '实施服务 ×1'], note: '对公转账,预计 3 个工作日内开通。' } },\n { id: 'NO20240802', cust: '上海贸易行', amount: 560, status: '待发货', detail: { items: ['标准版授权 ×2'], note: '已开票,等待仓库出库。' } },\n { id: 'NO20240803', cust: '广州信息公司', amount: 3200, status: '已完成', detail: { items: ['旗舰版授权 ×1', '培训服务 ×3', '运维包 ×1'], note: '项目已验收,进入维保期。' } },\n];\n</script>\n\n<template>\n <!-- 行首箭头展开 detail(备注 + 子项);id-key 指定行唯一键 -->\n <KoleExpandableTable :data=\"data\" :columns=\"columns\" id-key=\"id\" />\n</template>",
|
||
"vue2": "<template>\n <KoleExpandableTable :data=\"data\" :columns=\"columns\" id-key=\"id\" />\n</template>\n\n<script>\nimport { KoleExpandableTable } from 'kole-ui/vue2';\n\nconst columns = [\n { key: 'id', title: '订单号' },\n { key: 'cust', title: '客户' },\n { key: 'amount', title: '金额' },\n { key: 'status', title: '状态' },\n];\n\nconst data = [\n { id: 'NO20240801', cust: '北京科技有限公司', amount: 1280, status: '已付款', detail: { items: ['企业版授权 ×1', '实施服务 ×1'], note: '对公转账,预计 3 个工作日内开通。' } },\n { id: 'NO20240802', cust: '上海贸易行', amount: 560, status: '待发货', detail: { items: ['标准版授权 ×2'], note: '已开票,等待仓库出库。' } },\n { id: 'NO20240803', cust: '广州信息公司', amount: 3200, status: '已完成', detail: { items: ['旗舰版授权 ×1', '培训服务 ×3', '运维包 ×1'], note: '项目已验收,进入维保期。' } },\n];\n\nexport default {\n name: 'ExpandableTableDemo',\n components: { KoleExpandableTable },\n data() { return { columns, data }; },\n};\n</script>",
|
||
"tsx": "import { KoleExpandableTable } from 'kole-ui/react';\n\ninterface ExpandableColumn {\n key: string;\n title: string;\n}\n\ninterface OrderDetail {\n items: ReadonlyArray<string>;\n note: string;\n}\n\ninterface OrderRow {\n id: string;\n cust: string;\n amount: number;\n status: string;\n detail: OrderDetail;\n}\n\nconst columns: ReadonlyArray<ExpandableColumn> = [\n { key: 'id', title: '订单号' },\n { key: 'cust', title: '客户' },\n { key: 'amount', title: '金额' },\n { key: 'status', title: '状态' },\n];\n\nconst data: ReadonlyArray<OrderRow> = [\n { id: 'NO20240801', cust: '北京科技有限公司', amount: 1280, status: '已付款', detail: { items: ['企业版授权 ×1', '实施服务 ×1'], note: '对公转账,预计 3 个工作日内开通。' } },\n { id: 'NO20240802', cust: '上海贸易行', amount: 560, status: '待发货', detail: { items: ['标准版授权 ×2'], note: '已开票,等待仓库出库。' } },\n { id: 'NO20240803', cust: '广州信息公司', amount: 3200, status: '已完成', detail: { items: ['旗舰版授权 ×1', '培训服务 ×3', '运维包 ×1'], note: '项目已验收,进入维保期。' } },\n];\n\n// 行首箭头展开 detail(备注 + 子项),可同时展开多行\n<KoleExpandableTable data={data} columns={columns} idKey=\"id\" />",
|
||
"vue3ts": "<template>\n <!-- 行首箭头展开 detail(备注 + 子项);id-key 指定行唯一键 -->\n <KoleExpandableTable :data=\"data\" :columns=\"columns\" id-key=\"id\" />\n</template>\n\n<script setup lang=\"ts\">\nimport { KoleExpandableTable } from 'kole-ui/vue3';\n\ninterface ExpandableColumn {\n key: string;\n title: string;\n}\n\ninterface OrderDetail {\n items: ReadonlyArray<string>;\n note: string;\n}\n\ninterface OrderRow {\n id: string;\n cust: string;\n amount: number;\n status: string;\n detail: OrderDetail;\n}\n\nconst columns: ReadonlyArray<ExpandableColumn> = [\n { key: 'id', title: '订单号' },\n { key: 'cust', title: '客户' },\n { key: 'amount', title: '金额' },\n { key: 'status', title: '状态' },\n];\n\nconst data: ReadonlyArray<OrderRow> = [\n { id: 'NO20240801', cust: '北京科技有限公司', amount: 1280, status: '已付款', detail: { items: ['企业版授权 ×1', '实施服务 ×1'], note: '对公转账,预计 3 个工作日内开通。' } },\n { id: 'NO20240802', cust: '上海贸易行', amount: 560, status: '待发货', detail: { items: ['标准版授权 ×2'], note: '已开票,等待仓库出库。' } },\n { id: 'NO20240803', cust: '广州信息公司', amount: 3200, status: '已完成', detail: { items: ['旗舰版授权 ×1', '培训服务 ×3', '运维包 ×1'], note: '项目已验收,进入维保期。' } },\n];\n</script>",
|
||
"vue2ts": "<template>\n <div>\n <KoleExpandableTable :data=\"data\" :columns=\"columns\" id-key=\"id\" />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue';\nimport { KoleExpandableTable } from 'kole-ui/vue2';\n\ninterface ExpandableColumn {\n key: string;\n title: string;\n}\n\ninterface OrderDetail {\n items: ReadonlyArray<string>;\n note: string;\n}\n\ninterface OrderRow {\n id: string;\n cust: string;\n amount: number;\n status: string;\n detail: OrderDetail;\n}\n\nconst columns: ReadonlyArray<ExpandableColumn> = [\n { key: 'id', title: '订单号' },\n { key: 'cust', title: '客户' },\n { key: 'amount', title: '金额' },\n { key: 'status', title: '状态' },\n];\n\nconst data: ReadonlyArray<OrderRow> = [\n { id: 'NO20240801', cust: '北京科技有限公司', amount: 1280, status: '已付款', detail: { items: ['企业版授权 ×1', '实施服务 ×1'], note: '对公转账,预计 3 个工作日内开通。' } },\n { id: 'NO20240802', cust: '上海贸易行', amount: 560, status: '待发货', detail: { items: ['标准版授权 ×2'], note: '已开票,等待仓库出库。' } },\n { id: 'NO20240803', cust: '广州信息公司', amount: 3200, status: '已完成', detail: { items: ['旗舰版授权 ×1', '培训服务 ×3', '运维包 ×1'], note: '项目已验收,进入维保期。' } },\n];\n\nexport default Vue.extend({\n name: 'ExpandableTableDemo',\n components: { KoleExpandableTable },\n data(): { columns: ReadonlyArray<ExpandableColumn>; data: ReadonlyArray<OrderRow> } {\n return { columns, data };\n },\n});\n</script>"
|
||
},
|
||
"notes": [
|
||
"依据 frameworks/ExpandableTable.html:25-33 的 data(NO20240801/02/03 与 detail.items/detail.note)与表头「订单号/客户/金额/状态」",
|
||
"data / columns / idKey 形参见 ExpandableTable.jsx 与 ExpandableTable.vue3.vue defineProps;展开行由 kole-exp-toggle 点击切换",
|
||
"TS 形态依据 TS-VARIANTS.md:tsx 用 interface OrderRow / OrderDetail(detail 嵌套)+ ReadonlyArray(idKey 见 ExpandableTable.jsx 形参);vue3ts/vue2ts 用 <script lang=\"ts\"> + ReadonlyArray<OrderRow>;不引入 kole-ui 的类型(本仓库不随包发布 .d.ts)"
|
||
]
|
||
}
|
||
],
|
||
"curated": true
|
||
}
|