iter(g133): 新增树形选择 treeSelect

This commit is contained in:
HIsheR
2026-10-26 15:24:26 +08:00
parent fc195dfb56
commit 0f6331ccc6
12 changed files with 384 additions and 10 deletions
+80
View File
@@ -4228,3 +4228,83 @@ h5.ua-type-title { font-size: var(--ua-font-size-md); }
transition: none;
}
}
/* —— 树形选择:触发器 + 下拉弹层,弹层内直接嵌入 tree —— */
.ua-treeselect {
position: relative;
display: inline-block;
min-width: 220px;
}
.ua-treeselect-trigger {
display: flex;
align-items: center;
justify-content: space-between;
gap: var(--ua-space-2);
width: 100%;
padding: var(--ua-space-2) var(--ua-space-3);
border: 1px solid var(--ua-color-border);
border-radius: var(--ua-radius-md);
background: var(--ua-color-surface);
color: var(--ua-color-text);
font: inherit;
font-size: var(--ua-font-size-md);
text-align: left;
cursor: pointer;
transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.ua-treeselect-trigger:hover {
border-color: color-mix(in srgb, var(--ua-color-accent) 55%, var(--ua-color-border));
}
.ua-treeselect-trigger:focus-visible,
.ua-treeselect.is-open .ua-treeselect-trigger {
outline: none;
border-color: var(--ua-color-accent);
box-shadow: 0 0 0 3px color-mix(in srgb, var(--ua-color-accent) 20%, transparent);
}
.ua-treeselect-trigger:disabled {
cursor: not-allowed;
opacity: 0.6;
}
.ua-treeselect.is-empty .ua-treeselect-label {
color: var(--ua-color-text-muted);
}
.ua-treeselect-arrow {
color: var(--ua-color-text-muted);
font-size: 10px;
transition: transform 0.15s ease;
}
.ua-treeselect.is-open .ua-treeselect-arrow {
transform: rotate(180deg);
}
.ua-treeselect-pop {
position: absolute;
left: 0;
right: 0;
top: calc(100% + 4px);
z-index: 30;
display: none;
max-height: 280px;
overflow: auto;
padding: var(--ua-space-2);
border: 1px solid var(--ua-color-border);
border-radius: var(--ua-radius-md);
background: var(--ua-color-surface);
box-shadow: 0 14px 30px color-mix(in srgb, var(--ua-color-text) 16%, transparent);
}
.ua-treeselect.is-open .ua-treeselect-pop {
display: block;
animation: ua-treeselect-in 0.15s ease;
}
@keyframes ua-treeselect-in {
from { opacity: 0; transform: translateY(-4px); }
to { opacity: 1; transform: none; }
}
@media (prefers-reduced-motion: reduce) {
.ua-treeselect.is-open .ua-treeselect-pop {
animation: none;
}
.ua-treeselect-arrow,
.ua-treeselect-trigger {
transition: none;
}
}