From 02dad133a8cb8cdff51f91c6782a5b62b9db0261 Mon Sep 17 00:00:00 2001 From: icssoa <615206459@qq.com> Date: Tue, 13 Jun 2023 02:13:19 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0cl-form-card?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/crud/src/components/form-card.tsx | 43 +++++++++++++++++++ packages/crud/src/static/index.scss | 48 +++++++++++++++++++++- 2 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 packages/crud/src/components/form-card.tsx diff --git a/packages/crud/src/components/form-card.tsx b/packages/crud/src/components/form-card.tsx new file mode 100644 index 0000000..dacd2dc --- /dev/null +++ b/packages/crud/src/components/form-card.tsx @@ -0,0 +1,43 @@ +import { defineComponent, ref } from "vue"; +import { ArrowDown, ArrowUp } from "@element-plus/icons-vue"; + +export default defineComponent({ + name: "cl-form-card", + + components: { + ArrowDown, + ArrowUp + }, + + props: { + label: String, + isExpand: { + type: Boolean, + default: true + } + }, + + setup(props, { slots }) { + const isExpand = ref(props.isExpand); + + async function toExpand() { + isExpand.value = !isExpand.value; + } + + return () => { + return ( +
+
+ {props.label} + + + + + +
+
{slots.default?.()}
+
+ ); + }; + } +}); diff --git a/packages/crud/src/static/index.scss b/packages/crud/src/static/index.scss index a5479b3..9a708e9 100644 --- a/packages/crud/src/static/index.scss +++ b/packages/crud/src/static/index.scss @@ -165,7 +165,7 @@ } .el-select { - min-width: 120px; + min-width: 100px; } } @@ -293,6 +293,13 @@ width: 100%; } } + + &.no-label { + & > .el-form-item__label { + padding: 0; + width: 0 !important; + } + } } &-item { @@ -337,6 +344,12 @@ } } + &__children { + .el-form-item { + margin-bottom: 18px !important; + } + } + .el-table__header tr { line-height: normal; } @@ -425,6 +438,39 @@ } } +.cl-form-card { + &__header { + display: flex; + align-items: center; + justify-content: space-between; + font-size: 15px; + padding: 0 5px; + } + + &__container { + border: 1px solid transparent; + border-top: 1px solid var(--el-border-color); + border-radius: 0; + transition: all 0.3s; + display: grid; + grid-template-rows: 0fr; + + .cl-form-item__children { + margin: 10px 10px 10px 0px; + min-height: 0; + overflow: hidden; + } + } + + &.is-expand { + .cl-form-card__container { + border: 1px solid var(--el-border-color); + border-radius: var(--el-border-radius-base); + grid-template-rows: 1fr; + } + } +} + .cl-dialog { border-radius: 5px;