fix: collapsible component css fix

This commit is contained in:
allen
2026-04-13 19:44:21 +08:00
parent 6f18718c87
commit 4665a787a0
2 changed files with 44 additions and 55 deletions

View File

@@ -58,9 +58,13 @@ defineExpose({
</script> </script>
<template> <template>
<div class="body-row"> <div
<div class="body-cell">{{ data.key }}</div> class="body-row flex items-center w-full flex-nowrap not-last-of-type:border-b"
<div class="body-cell"> >
<div class="pt-2 pb-2 px-5 leading-[1.5rem] flex items-center flex-nowrap">
{{ data.key }}
</div>
<div class="pt-2 pb-2 px-5 leading-[1.5rem] flex items-center flex-nowrap">
<div class="flex-auto w-full"> <div class="flex-auto w-full">
<component <component
:is="FieldComponent" :is="FieldComponent"
@@ -77,7 +81,9 @@ defineExpose({
</span> </span>
</div> </div>
</div> </div>
<div class="body-cell w-full"> <div
class="pt-2 pb-2 px-5 leading-[1.5rem] flex items-center flex-nowrap w-full"
>
<p <p
class="line-clamp-2" class="line-clamp-2"
v-tippy="{ v-tippy="{
@@ -89,10 +95,3 @@ defineExpose({
</div> </div>
</div> </div>
</template> </template>
<style lang="css" scoped>
.body-row {
&:not(:last-of-type) {
@apply border-b;
}
}
</style>

View File

@@ -92,17 +92,36 @@ defineExpose({
</script> </script>
<template> <template>
<CollapsibleRoot v-model:open="open" :class="b()" :unmount-on-hide="false"> <CollapsibleRoot
<div class="wrapper"> v-model:open="open"
class="border rounded-[0.5rem] flex flex-col w-full overflow-hidden"
:class="[b()]"
:unmount-on-hide="false"
>
<div class="wrapper w-full relative flex flex-col overflow-x-auto">
<div class="w-full min-w-fit"> <div class="w-full min-w-fit">
<div class="header"> <div
<div class="header-cell">参数名称</div> class="header bg-accent w-full flex-none flex items-center rounded-t-[0.5rem] border-b"
<div class="header-cell">配置</div> >
<div class="header-cell">说明</div> <div
class="pt-2 pb-2 px-5 leading-[1.5rem] flex items-center flex-nowrap"
>
参数名称
</div>
<div
class="pt-2 pb-2 px-5 leading-[1.5rem] flex items-center flex-nowrap"
>
配置
</div>
<div
class="pt-2 pb-2 px-5 leading-[1.5rem] flex items-center flex-nowrap"
>
说明
</div>
</div> </div>
<div <div
class="body" class="body w-full flex-none flex flex-col overflow-x-hidden"
:class="[ :class="[
open && !!props.maxHeight ? 'overflow-y-auto' : 'overflow-y-hidden', open && !!props.maxHeight ? 'overflow-y-auto' : 'overflow-y-hidden',
]" ]"
@@ -131,11 +150,15 @@ defineExpose({
</div> </div>
</div> </div>
</div> </div>
<div class="gutter" v-if="!open && collapsibleRows.length > 0"></div>
<div <div
class="trigger-bar" class="gutter h-[1.5rem]"
v-if="!open && collapsibleRows.length > 0"
></div>
<div
class="trigger-bar flex min-h-[2rem] border-t px-5 pt-1 pb-1 rounded-b-[0.5rem] z-1"
:class="{ :class="{
collapsed: !open, 'collapsed absolute bottom-[1px] left-[1px] right-[1px] border-t-0 pt-6':
!open,
}" }"
v-if="collapsibleRows.length > 0" v-if="collapsibleRows.length > 0"
> >
@@ -154,40 +177,15 @@ defineExpose({
</div> </div>
</CollapsibleRoot> </CollapsibleRoot>
</template> </template>
<style lang="css"> <style>
.vben-collapsible-params { .vben-collapsible-params {
@apply border rounded-[0.5rem] flex flex-col w-full overflow-hidden;
.wrapper { .wrapper {
--column1: 11.25rem; --column1: 11.25rem;
--column2: 18.25rem; --column2: 18.25rem;
--column3: 27.5rem; --column3: 27.5rem;
@apply w-full relative flex flex-col overflow-x-auto;
/* min-width: calc(var(--column1) + var(--column2) + var(--column3)); */
.header,
.body {
@apply w-full flex-none flex;
}
.header {
@apply bg-accent items-center rounded-t-[0.5rem] border-b;
}
.body {
@apply flex-col overflow-x-hidden;
}
.body-row {
@apply flex items-center w-full flex-nowrap;
}
.header-cell, .header-cell,
.body-cell { .body-cell {
@apply py-2 px-5 leading-[1.5rem] flex items-center flex-nowrap;
&:nth-of-type(1) { &:nth-of-type(1) {
flex: 0 0 var(--column1); flex: 0 0 var(--column1);
@@ -207,16 +205,8 @@ defineExpose({
} }
} }
.gutter {
@apply h-[1.5rem];
}
.trigger-bar { .trigger-bar {
@apply flex min-h-[2rem] border-t px-5 py-1 rounded-b-[0.5rem] z-1;
&.collapsed { &.collapsed {
@apply absolute bottom-[1px] left-[1px] right-[1px] border-t-0 pt-6;
background-image: linear-gradient( background-image: linear-gradient(
hsl(var(--foreground) / 0%) 0%, hsl(var(--foreground) / 0%) 0%,
hsl(var(--foreground) / 12%) 31.76%, hsl(var(--foreground) / 12%) 31.76%,