From 85ee631b124383518fd97e6193c90d7ad2888a4b Mon Sep 17 00:00:00 2001 From: wangyupei <2311595895@qq.com> Date: Mon, 28 Mar 2022 19:26:30 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat(Table):=20=E6=96=B0=E5=A2=9EborderType?= =?UTF-8?q?=E5=8F=82=E6=95=B0=EF=BC=8C=E6=94=AF=E6=8C=81=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E8=A1=A8=E6=A0=BC=E8=BE=B9=E6=A1=86=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../devui/table/src/components/body/body.scss | 1 + .../devui/table/src/composable/use-table.ts | 1 + .../devui-vue/devui/table/src/table-types.ts | 5 ++ packages/devui-vue/devui/table/src/table.scss | 34 +++++++- .../devui-vue/docs/components/table/index.md | 82 +++++++++++++++---- 5 files changed, 104 insertions(+), 19 deletions(-) diff --git a/packages/devui-vue/devui/table/src/components/body/body.scss b/packages/devui-vue/devui/table/src/components/body/body.scss index ac6acb04fb..66255560f8 100644 --- a/packages/devui-vue/devui/table/src/components/body/body.scss +++ b/packages/devui-vue/devui/table/src/components/body/body.scss @@ -6,6 +6,7 @@ font-size: $devui-font-size; color: $devui-text; background-color: $devui-base-bg; + border: none; &.hover-enabled:hover { background-color: $devui-list-item-hover-bg; diff --git a/packages/devui-vue/devui/table/src/composable/use-table.ts b/packages/devui-vue/devui/table/src/composable/use-table.ts index ac818eebf4..c0de2a26ef 100644 --- a/packages/devui-vue/devui/table/src/composable/use-table.ts +++ b/packages/devui-vue/devui/table/src/composable/use-table.ts @@ -16,6 +16,7 @@ export function useTable(props: TablePropsTypes): TableConfig { [ns.m('header-bg')]: props.headerBg, [ns.m('layout-auto')]: props.tableLayout === 'auto', [ns.m(`${props.size}`)]: true, + [ns.m(`${props.borderType}`)]: props.borderType, })); const style: ComputedRef = computed(() => ({ maxHeight: props.maxHeight, diff --git a/packages/devui-vue/devui/table/src/table-types.ts b/packages/devui-vue/devui/table/src/table-types.ts index cae7f97b81..2b35f1a35d 100644 --- a/packages/devui-vue/devui/table/src/table-types.ts +++ b/packages/devui-vue/devui/table/src/table-types.ts @@ -2,6 +2,7 @@ import { PropType, ExtractPropTypes, ComponentInternalInstance, InjectionKey } f import { TableStore } from './store'; export type TableSize = 'sm' | 'md' | 'lg'; +export type BorderType = '' | 'bordered' | 'borderless'; export type SpanMethod = (data: { row: any; @@ -72,6 +73,10 @@ export const TableProps = { spanMethod: { type: Function as PropType, }, + borderType: { + type: String as PropType, + default: '', + }, }; export type TablePropsTypes = ExtractPropTypes; diff --git a/packages/devui-vue/devui/table/src/table.scss b/packages/devui-vue/devui/table/src/table.scss index 185bd0e08d..054e1682df 100644 --- a/packages/devui-vue/devui/table/src/table.scss +++ b/packages/devui-vue/devui/table/src/table.scss @@ -10,7 +10,7 @@ table-layout: fixed; width: 100%; border-spacing: 0; - border-collapse: separate; + border-collapse: collapse; border: none; margin: 0; padding: 0; @@ -77,4 +77,36 @@ padding: 8px 20px; } } + + &--borderless { + tbody > tr > td { + border-bottom: none; + } + } + + &--bordered { + tr { + border-left: 1px solid $devui-dividing-line; + + /* td:first-child { + } */ + + td { + border-right: 1px solid $devui-dividing-line; + } + } + + thead { + tr { + th:first-child { + border-left: 1px solid $devui-dividing-line; + } + + th { + border-top: 1px solid $devui-dividing-line; + border-right: 1px solid $devui-dividing-line; + } + } + } + } } diff --git a/packages/devui-vue/docs/components/table/index.md b/packages/devui-vue/docs/components/table/index.md index f48c533c6b..d5850fe01c 100644 --- a/packages/devui-vue/docs/components/table/index.md +++ b/packages/devui-vue/docs/components/table/index.md @@ -96,8 +96,23 @@ export default defineComponent({ +
+ 表格边框: + + + {{ item.label }} + + +
- + @@ -114,6 +129,7 @@ export default defineComponent({ const striped = ref(false); const headerBg = ref(false); const size = ref('sm'); + const borderType = ref(''); const sizeList = [ { label: 'Normal', @@ -128,6 +144,20 @@ export default defineComponent({ value: 'lg', }, ]; + const borderTypeList = [ + { + label: 'Normal', + value: '', + }, + { + label: 'Bordered', + value: 'bordered', + }, + { + label: 'Borderless', + value: 'borderless', + }, + ]; const stripedTableData = ref([ { firstName: 'Mark', @@ -161,6 +191,8 @@ export default defineComponent({ headerBg, size, sizeList, + borderType, + borderTypeList, tableLayout, }; }, @@ -170,6 +202,7 @@ export default defineComponent({