mirror of
https://github.com/Azornes/Comfyui-LayerForge.git
synced 2026-03-22 05:02:11 -03:00
Added updateButtonStates() to enable/disable delete button based on selection Updated control setup and selection handlers to call this method Added CSS for disabled button state and tooltip Delete button now disables when no layers are selected; all other panel features unchanged
231 lines
4.2 KiB
CSS
231 lines
4.2 KiB
CSS
/* Layers Panel Styles */
|
|
.layers-panel {
|
|
background: #2a2a2a;
|
|
border: 1px solid #3a3a3a;
|
|
border-radius: 4px;
|
|
padding: 8px;
|
|
height: 100%;
|
|
overflow: hidden;
|
|
font-family: Arial, sans-serif;
|
|
font-size: 12px;
|
|
color: #ffffff;
|
|
user-select: none;
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.layers-panel-header {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
padding-bottom: 8px;
|
|
border-bottom: 1px solid #3a3a3a;
|
|
margin-bottom: 8px;
|
|
}
|
|
|
|
.layers-panel-title {
|
|
font-weight: bold;
|
|
color: #ffffff;
|
|
}
|
|
|
|
.layers-panel-controls {
|
|
display: flex;
|
|
gap: 4px;
|
|
}
|
|
|
|
.layers-btn {
|
|
background: #3a3a3a;
|
|
border: 1px solid #4a4a4a;
|
|
color: #ffffff;
|
|
padding: 4px 8px;
|
|
border-radius: 3px;
|
|
cursor: pointer;
|
|
font-size: 11px;
|
|
}
|
|
|
|
.layers-btn:hover {
|
|
background: #4a4a4a;
|
|
}
|
|
|
|
.layers-btn:active {
|
|
background: #5a5a5a;
|
|
}
|
|
|
|
.layers-btn:disabled {
|
|
background: #2a2a2a;
|
|
color: #666666;
|
|
cursor: not-allowed;
|
|
opacity: 0.5;
|
|
}
|
|
|
|
.layers-btn:disabled:hover {
|
|
background: #2a2a2a;
|
|
}
|
|
|
|
.layers-container {
|
|
flex: 1;
|
|
overflow-y: auto;
|
|
overflow-x: hidden;
|
|
}
|
|
|
|
.layer-row {
|
|
display: flex;
|
|
align-items: center;
|
|
padding: 6px 4px;
|
|
margin-bottom: 2px;
|
|
border-radius: 3px;
|
|
cursor: pointer;
|
|
transition: background-color 0.15s ease;
|
|
position: relative;
|
|
gap: 6px;
|
|
}
|
|
|
|
.layer-row:hover {
|
|
background: rgba(255, 255, 255, 0.05);
|
|
}
|
|
|
|
.layer-row.selected {
|
|
background: #2d5aa0 !important;
|
|
box-shadow: inset 0 0 0 1px #4a7bc8;
|
|
}
|
|
|
|
.layer-row.dragging {
|
|
opacity: 0.6;
|
|
}
|
|
|
|
.layer-thumbnail {
|
|
width: 48px;
|
|
height: 48px;
|
|
border: 1px solid #4a4a4a;
|
|
border-radius: 2px;
|
|
background: transparent;
|
|
position: relative;
|
|
flex-shrink: 0;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.layer-thumbnail canvas {
|
|
width: 100%;
|
|
height: 100%;
|
|
display: block;
|
|
}
|
|
|
|
.layer-thumbnail::before {
|
|
content: '';
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
right: 0;
|
|
bottom: 0;
|
|
background-image:
|
|
linear-gradient(45deg, #555 25%, transparent 25%),
|
|
linear-gradient(-45deg, #555 25%, transparent 25%),
|
|
linear-gradient(45deg, transparent 75%, #555 75%),
|
|
linear-gradient(-45deg, transparent 75%, #555 75%);
|
|
background-size: 8px 8px;
|
|
background-position: 0 0, 0 4px, 4px -4px, -4px 0px;
|
|
z-index: 1;
|
|
}
|
|
|
|
.layer-thumbnail canvas {
|
|
position: relative;
|
|
z-index: 2;
|
|
}
|
|
|
|
.layer-name {
|
|
flex: 1;
|
|
min-width: 0;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
padding: 2px 4px;
|
|
border-radius: 2px;
|
|
color: #ffffff;
|
|
}
|
|
|
|
.layer-name.editing {
|
|
background: #4a4a4a;
|
|
border: 1px solid #6a6a6a;
|
|
outline: none;
|
|
color: #ffffff;
|
|
}
|
|
|
|
.layer-name input {
|
|
background: transparent;
|
|
border: none;
|
|
color: #ffffff;
|
|
font-size: 12px;
|
|
width: 100%;
|
|
outline: none;
|
|
}
|
|
|
|
.drag-insertion-line {
|
|
position: absolute;
|
|
left: 0;
|
|
right: 0;
|
|
height: 2px;
|
|
background: #4a7bc8;
|
|
border-radius: 1px;
|
|
z-index: 1000;
|
|
box-shadow: 0 0 4px rgba(74, 123, 200, 0.6);
|
|
}
|
|
|
|
.layers-container::-webkit-scrollbar {
|
|
width: 6px;
|
|
}
|
|
|
|
.layers-container::-webkit-scrollbar-track {
|
|
background: #2a2a2a;
|
|
}
|
|
|
|
.layers-container::-webkit-scrollbar-thumb {
|
|
background: #4a4a4a;
|
|
border-radius: 3px;
|
|
}
|
|
|
|
.layers-container::-webkit-scrollbar-thumb:hover {
|
|
background: #5a5a5a;
|
|
}
|
|
|
|
.layer-visibility-toggle {
|
|
width: 20px;
|
|
height: 20px;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
cursor: pointer;
|
|
border-radius: 2px;
|
|
font-size: 14px;
|
|
flex-shrink: 0;
|
|
transition: background-color 0.15s ease;
|
|
}
|
|
|
|
.layer-visibility-toggle:hover {
|
|
background: rgba(255, 255, 255, 0.1);
|
|
}
|
|
|
|
/* Icon container styles */
|
|
.layers-panel .icon-container {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
.layers-panel .icon-container img {
|
|
filter: brightness(0) invert(1);
|
|
}
|
|
|
|
.layers-panel .icon-container.visibility-hidden {
|
|
opacity: 0.5;
|
|
}
|
|
|
|
.layers-panel .icon-container.visibility-hidden img {
|
|
filter: brightness(0) invert(1);
|
|
opacity: 0.3;
|
|
}
|
|
|
|
.layers-panel .icon-container.fallback-text {
|
|
font-size: 10px;
|
|
color: #888888;
|
|
}
|