mirror of
https://github.com/willmiao/ComfyUI-Lora-Manager.git
synced 2026-08-28 08:21:27 -03:00
2bfb987312
- Extract a shared BaseModelPicker (search, keyboard navigation, filename-based suggestions, dynamic API models such as MiniMax H3 under 'Other (API)') used by both the single-model metadata modal and the bulk base model modal - Rework the bulk base model modal into a dedicated inline-list layout: fixed modal size, sticky-free footer with app-standard modal-actions/primary-btn/cancel-btn buttons, and an inline option list that scrolls itself instead of an overlay dropdown covering the footer - Selecting an option in change mode now filters the list to the selection instead of resetting and scroll-jumping to it - Restore opaque sticky section headers in the bulk modal so scrolled items no longer bleed through
161 lines
3.9 KiB
CSS
161 lines
3.9 KiB
CSS
/* Style for selected cards */
|
|
.model-card.selected {
|
|
outline: 2px solid var(--lora-accent);
|
|
outline-offset: -2px;
|
|
position: relative;
|
|
}
|
|
|
|
.model-card.selected::after {
|
|
content: "✓";
|
|
position: absolute;
|
|
top: 10px;
|
|
right: 10px;
|
|
width: 24px;
|
|
height: 24px;
|
|
background: var(--lora-accent);
|
|
color: white;
|
|
border-radius: 50%;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
font-size: 14px;
|
|
z-index: 1;
|
|
}
|
|
|
|
/* Marquee selection styles */
|
|
.marquee-selection {
|
|
position: fixed;
|
|
border: 2px dashed var(--lora-accent, #007bff);
|
|
background: rgba(0, 123, 255, 0.1);
|
|
pointer-events: none;
|
|
z-index: 9999;
|
|
border-radius: 2px;
|
|
}
|
|
|
|
/* Visual feedback when marquee selecting */
|
|
.marquee-selecting {
|
|
cursor: crosshair;
|
|
user-select: none;
|
|
-webkit-user-select: none;
|
|
-moz-user-select: none;
|
|
-ms-user-select: none;
|
|
}
|
|
|
|
/* Prevent text selection during marquee */
|
|
.marquee-selecting * {
|
|
user-select: none;
|
|
-webkit-user-select: none;
|
|
-moz-user-select: none;
|
|
-ms-user-select: none;
|
|
}
|
|
|
|
/* ── Bulk base model modal — dedicated inline-list layout ───────────────
|
|
Unlike the single-model modal (overlay dropdown), the bulk modal renders
|
|
the option list inline so it never covers the footer buttons and only the
|
|
list itself scrolls. Dropdown internals reuse the shared .base-model-*
|
|
styles from lora-modal.css. */
|
|
|
|
#bulkBaseModelModal .modal-content {
|
|
width: min(720px, calc(100vw - 2rem));
|
|
height: min(640px, calc(100vh - var(--header-height, 48px) - 5.5rem));
|
|
display: flex;
|
|
flex-direction: column;
|
|
overflow: hidden;
|
|
}
|
|
|
|
#bulkBaseModelModal .modal-header {
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
#bulkBaseModelModal .modal-body {
|
|
flex: 1;
|
|
min-height: 0;
|
|
display: flex;
|
|
flex-direction: column;
|
|
overflow: hidden;
|
|
}
|
|
|
|
#bulkBaseModelModal .bulk-add-tags-info {
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
#bulkBaseModelModal .bulk-base-model-label {
|
|
flex-shrink: 0;
|
|
display: block;
|
|
font-weight: 500;
|
|
margin-bottom: var(--space-1);
|
|
color: var(--text-color);
|
|
}
|
|
|
|
.bulk-base-model-picker {
|
|
width: 100%;
|
|
}
|
|
|
|
#bulkBaseModelModal .bulk-base-model-picker {
|
|
flex: 1;
|
|
min-height: 0;
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
#bulkBaseModelModal .bulk-base-model-picker .base-model-search-wrapper {
|
|
flex: 1;
|
|
min-height: 0;
|
|
display: flex;
|
|
flex-direction: column;
|
|
width: 100%;
|
|
z-index: auto;
|
|
}
|
|
|
|
#bulkBaseModelModal .base-model-search-input-wrapper {
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
/* Inline list instead of overlay dropdown */
|
|
#bulkBaseModelModal .base-model-dropdown {
|
|
position: relative;
|
|
top: auto;
|
|
left: auto;
|
|
right: auto;
|
|
flex: 1;
|
|
min-height: 0;
|
|
max-height: none;
|
|
overflow-y: auto;
|
|
margin-top: var(--space-1);
|
|
border: 1px solid var(--lora-border);
|
|
border-radius: var(--border-radius-xs);
|
|
box-shadow: none;
|
|
z-index: auto;
|
|
overscroll-behavior: contain;
|
|
scrollbar-gutter: stable;
|
|
scrollbar-width: thin;
|
|
scrollbar-color: var(--lora-border) transparent;
|
|
}
|
|
|
|
#bulkBaseModelModal .base-model-dropdown::-webkit-scrollbar {
|
|
width: 8px;
|
|
}
|
|
|
|
#bulkBaseModelModal .base-model-dropdown::-webkit-scrollbar-thumb {
|
|
background: var(--lora-border);
|
|
border-radius: 4px;
|
|
}
|
|
|
|
#bulkBaseModelModal .base-model-dropdown::-webkit-scrollbar-track {
|
|
background: transparent;
|
|
}
|
|
|
|
/* The shared dropdown header uses opacity for its muted look, which makes the
|
|
sticky background translucent — scrolled items bleed through. Keep the
|
|
muted text color but restore a fully opaque background (bulk scope only). */
|
|
#bulkBaseModelModal .base-model-dropdown-header {
|
|
opacity: 1;
|
|
color: var(--text-muted, var(--text-color));
|
|
}
|
|
|
|
#bulkBaseModelModal .bulk-base-model-footer {
|
|
flex-shrink: 0;
|
|
padding-top: var(--space-2);
|
|
margin-top: var(--space-2);
|
|
border-top: 1px solid var(--lora-border);
|
|
} |