mirror of
https://github.com/willmiao/ComfyUI-Lora-Manager.git
synced 2026-03-22 13:42:12 -03:00
- Replace inline styles with CSS classes for better maintainability - Update class names to use consistent 'lm-' prefix across components - Add comprehensive CSS stylesheet with tooltip system and responsive layouts - Improve accessibility with proper focus states and keyboard navigation - Implement hover and active state transitions for enhanced UX - Refactor expand button to use CSS classes instead of inline styles - Update test files to reflect new class naming convention
112 lines
3.0 KiB
JavaScript
112 lines
3.0 KiB
JavaScript
// Function to create toggle element
|
|
export function createToggle(active, onChange) {
|
|
const toggle = document.createElement("div");
|
|
toggle.className = "lm-lora-toggle";
|
|
|
|
updateToggleStyle(toggle, active);
|
|
|
|
toggle.addEventListener("click", (e) => {
|
|
e.stopPropagation();
|
|
onChange(!active);
|
|
});
|
|
|
|
return toggle;
|
|
}
|
|
|
|
// Helper function to update toggle style
|
|
export function updateToggleStyle(toggleEl, active) {
|
|
toggleEl.classList.toggle("lm-lora-toggle--active", active);
|
|
}
|
|
|
|
// Create arrow button for strength adjustment
|
|
export function createArrowButton(direction, onClick) {
|
|
const button = document.createElement("div");
|
|
button.className = `lm-lora-arrow lm-lora-arrow-${direction}`;
|
|
button.textContent = direction === "left" ? "◀" : "▶";
|
|
|
|
button.addEventListener("click", (e) => {
|
|
e.stopPropagation();
|
|
onClick();
|
|
});
|
|
|
|
return button;
|
|
}
|
|
|
|
// Function to create drag handle
|
|
export function createDragHandle() {
|
|
const handle = document.createElement("div");
|
|
handle.className = "lm-lora-drag-handle";
|
|
handle.innerHTML = "≡";
|
|
handle.title = "Drag to reorder LoRA";
|
|
return handle;
|
|
}
|
|
|
|
// Function to create drop indicator
|
|
export function createDropIndicator() {
|
|
const indicator = document.createElement("div");
|
|
indicator.className = "lm-lora-drop-indicator";
|
|
return indicator;
|
|
}
|
|
|
|
// Function to update entry selection state
|
|
export function updateEntrySelection(entryEl, isSelected) {
|
|
entryEl.dataset.selected = isSelected ? "true" : "false";
|
|
if (!isSelected) {
|
|
entryEl.style.removeProperty("background-color");
|
|
entryEl.style.removeProperty("border");
|
|
entryEl.style.removeProperty("box-shadow");
|
|
}
|
|
}
|
|
|
|
// Function to create menu item
|
|
export function createMenuItem(text, icon, onClick) {
|
|
const menuItem = document.createElement("div");
|
|
menuItem.className = "lm-lora-menu-item";
|
|
|
|
const iconEl = document.createElement("div");
|
|
iconEl.className = "lm-lora-menu-item-icon";
|
|
iconEl.innerHTML = icon;
|
|
|
|
const textEl = document.createElement("span");
|
|
textEl.textContent = text;
|
|
|
|
menuItem.appendChild(iconEl);
|
|
menuItem.appendChild(textEl);
|
|
|
|
if (onClick) {
|
|
menuItem.addEventListener("click", onClick);
|
|
}
|
|
|
|
return menuItem;
|
|
}
|
|
|
|
// Function to create expand/collapse button
|
|
export function createExpandButton(isExpanded, onClick) {
|
|
const button = document.createElement("button");
|
|
button.className = "lm-lora-expand-button";
|
|
button.type = "button";
|
|
button.tabIndex = -1;
|
|
|
|
// Set icon based on expanded state
|
|
updateExpandButtonState(button, isExpanded);
|
|
|
|
button.addEventListener("click", (e) => {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
onClick(!isExpanded);
|
|
});
|
|
|
|
return button;
|
|
}
|
|
|
|
// Helper function to update expand button state
|
|
export function updateExpandButtonState(button, isExpanded) {
|
|
if (isExpanded) {
|
|
button.innerHTML = "▼"; // Down arrow for expanded
|
|
button.title = "Collapse clip controls";
|
|
} else {
|
|
button.innerHTML = "▶"; // Right arrow for collapsed
|
|
button.title = "Expand clip controls";
|
|
}
|
|
}
|