update
This commit is contained in:
parent
461ac39b88
commit
be77213b65
3 changed files with 71 additions and 11 deletions
|
|
@ -232,7 +232,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
loadGallery();
|
loadGallery();
|
||||||
setupSidebarResizer(sidebar, resizeHandle);
|
initializeSidebarResizer(sidebar, resizeHandle);
|
||||||
|
|
||||||
function setViewState(state) {
|
function setViewState(state) {
|
||||||
placeholderState.classList.add('hidden');
|
placeholderState.classList.add('hidden');
|
||||||
|
|
@ -320,6 +320,32 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function initializeSidebarResizer(sidebar, handle) {
|
||||||
|
if (!sidebar || !handle) return;
|
||||||
|
const resizerQuery = window.matchMedia('(min-width: 1025px)');
|
||||||
|
let resizerCleanup = null;
|
||||||
|
|
||||||
|
const toggleResizer = () => {
|
||||||
|
if (resizerQuery.matches) {
|
||||||
|
if (!resizerCleanup) {
|
||||||
|
resizerCleanup = setupSidebarResizer(sidebar, handle);
|
||||||
|
}
|
||||||
|
} else if (resizerCleanup) {
|
||||||
|
resizerCleanup();
|
||||||
|
resizerCleanup = null;
|
||||||
|
sidebar.style.width = '';
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
toggleResizer();
|
||||||
|
if (typeof resizerQuery.addEventListener === 'function') {
|
||||||
|
resizerQuery.addEventListener('change', toggleResizer);
|
||||||
|
}
|
||||||
|
if (typeof resizerQuery.addListener === 'function') {
|
||||||
|
resizerQuery.addListener(toggleResizer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function buildGenerateFormData(fields) {
|
function buildGenerateFormData(fields) {
|
||||||
const formData = new FormData();
|
const formData = new FormData();
|
||||||
|
|
||||||
|
|
@ -483,7 +509,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
function setupSidebarResizer(sidebar, handle) {
|
function setupSidebarResizer(sidebar, handle) {
|
||||||
if (!sidebar || !handle) return;
|
if (!sidebar || !handle) return null;
|
||||||
let isResizing = false;
|
let isResizing = false;
|
||||||
let activePointerId = null;
|
let activePointerId = null;
|
||||||
|
|
||||||
|
|
@ -508,21 +534,31 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||||
document.body.style.cursor = '';
|
document.body.style.cursor = '';
|
||||||
};
|
};
|
||||||
|
|
||||||
handle.addEventListener('pointerdown', (event) => {
|
const onPointerDown = (event) => {
|
||||||
isResizing = true;
|
isResizing = true;
|
||||||
activePointerId = event.pointerId;
|
activePointerId = event.pointerId;
|
||||||
handle.setPointerCapture(activePointerId);
|
handle.setPointerCapture(activePointerId);
|
||||||
document.body.style.cursor = 'ew-resize';
|
document.body.style.cursor = 'ew-resize';
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
});
|
};
|
||||||
|
|
||||||
document.addEventListener('pointermove', (event) => {
|
const onPointerMove = (event) => {
|
||||||
if (!isResizing) return;
|
if (!isResizing) return;
|
||||||
updateWidth(event.clientX);
|
updateWidth(event.clientX);
|
||||||
});
|
};
|
||||||
|
|
||||||
|
handle.addEventListener('pointerdown', onPointerDown);
|
||||||
|
document.addEventListener('pointermove', onPointerMove);
|
||||||
document.addEventListener('pointerup', stopResize);
|
document.addEventListener('pointerup', stopResize);
|
||||||
document.addEventListener('pointercancel', stopResize);
|
document.addEventListener('pointercancel', stopResize);
|
||||||
|
|
||||||
|
return () => {
|
||||||
|
stopResize();
|
||||||
|
handle.removeEventListener('pointerdown', onPointerDown);
|
||||||
|
document.removeEventListener('pointermove', onPointerMove);
|
||||||
|
document.removeEventListener('pointerup', stopResize);
|
||||||
|
document.removeEventListener('pointercancel', stopResize);
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -58,13 +58,14 @@ a:hover {
|
||||||
width: 320px;
|
width: 320px;
|
||||||
background: var(--panel-backdrop);
|
background: var(--panel-backdrop);
|
||||||
background-image: radial-gradient(circle at 20% -20%, rgba(251, 191, 36, 0.15), transparent 45%);
|
background-image: radial-gradient(circle at 20% -20%, rgba(251, 191, 36, 0.15), transparent 45%);
|
||||||
border-right: 1px solid var(--border-color);
|
/* border-right: 1px solid var(--border-color); */
|
||||||
|
border: 1px solid rgba(255, 255, 255, 0.08);
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
padding: 1.5rem;
|
padding: 1.5rem;
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
box-shadow: inset -1px 0 0 var(--border-color);
|
/* box-shadow: inset -1px 0 0 var(--border-color); */
|
||||||
backdrop-filter: blur(24px);
|
backdrop-filter: blur(24px);
|
||||||
border-radius: 1rem;
|
border-radius: 1rem;
|
||||||
}
|
}
|
||||||
|
|
@ -97,6 +98,30 @@ a:hover {
|
||||||
min-height: 0;
|
min-height: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
.app-container {
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 0.75rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar {
|
||||||
|
width: 100%;
|
||||||
|
border-radius: 1rem;
|
||||||
|
margin-bottom: 0;
|
||||||
|
min-height: calc(100vh - 3rem);
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar-resize-handle {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-area {
|
||||||
|
margin-left: 0;
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.toolbar-info-btn {
|
.toolbar-info-btn {
|
||||||
border: 1px solid rgba(255, 255, 255, 0.2);
|
border: 1px solid rgba(255, 255, 255, 0.2);
|
||||||
background: rgba(255, 255, 255, 0.04);
|
background: rgba(255, 255, 255, 0.04);
|
||||||
|
|
@ -429,7 +454,7 @@ button#generate-btn:disabled {
|
||||||
gap: 1rem;
|
gap: 1rem;
|
||||||
color: var(--text-primary);
|
color: var(--text-primary);
|
||||||
border-radius: 1.25rem;
|
border-radius: 1.25rem;
|
||||||
padding: 0.75rem;
|
/* padding: 0.75rem; */
|
||||||
height: 100%;
|
height: 100%;
|
||||||
min-height: 0;
|
min-height: 0;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
|
|
||||||
|
|
@ -41,8 +41,7 @@
|
||||||
|
|
||||||
<div class="input-group image-inputs">
|
<div class="input-group image-inputs">
|
||||||
<div class="image-input-header">
|
<div class="image-input-header">
|
||||||
<label>Reference Images (optional)</label>
|
<label>Reference Images</label>
|
||||||
<span>Drag & drop up to 16 files</span>
|
|
||||||
</div>
|
</div>
|
||||||
<div id="image-input-grid" class="image-input-grid" aria-live="polite"></div>
|
<div id="image-input-grid" class="image-input-grid" aria-live="polite"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue