Truncate long card titles with ellipsis and reduce font size
- Replace flex-wrap with overflow ellipsis on .card-title and .template-name - Reduce card title font size from 1.2rem/18px to 1.05rem - Add title attribute (hover tooltip) on all card types for full name Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -413,16 +413,18 @@ body.cs-drag-active .card-drag-handle {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.card-title {
|
.card-title {
|
||||||
font-size: 1.2rem;
|
font-size: 1.05rem;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
display: flex;
|
overflow: hidden;
|
||||||
align-items: center;
|
white-space: nowrap;
|
||||||
gap: 6px;
|
text-overflow: ellipsis;
|
||||||
flex-wrap: wrap;
|
min-width: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.card-title > .icon {
|
.card-title > .icon {
|
||||||
color: var(--primary-text-color);
|
color: var(--primary-text-color);
|
||||||
|
vertical-align: middle;
|
||||||
|
margin-right: 6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.device-url-badge {
|
.device-url-badge {
|
||||||
|
|||||||
@@ -74,13 +74,19 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.template-name {
|
.template-name {
|
||||||
font-size: 18px;
|
font-size: 1.05rem;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
color: var(--text-color);
|
color: var(--text-color);
|
||||||
|
overflow: hidden;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
min-width: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.template-name > .icon {
|
.template-name > .icon {
|
||||||
color: var(--primary-text-color);
|
color: var(--primary-text-color);
|
||||||
|
vertical-align: middle;
|
||||||
|
margin-right: 6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.badge {
|
.badge {
|
||||||
|
|||||||
@@ -201,7 +201,7 @@ function createAutomationCard(automation, sceneMap = new Map()) {
|
|||||||
removeTitle: t('common.delete'),
|
removeTitle: t('common.delete'),
|
||||||
content: `
|
content: `
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
<div class="card-title">
|
<div class="card-title" title="${escapeHtml(automation.name)}">
|
||||||
${escapeHtml(automation.name)}
|
${escapeHtml(automation.name)}
|
||||||
<span class="badge badge-automation-${statusClass}">${statusText}</span>
|
<span class="badge badge-automation-${statusClass}">${statusText}</span>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1271,7 +1271,7 @@ export function createColorStripCard(source, pictureSourceMap, audioSourceMap) {
|
|||||||
removeTitle: t('common.delete'),
|
removeTitle: t('common.delete'),
|
||||||
content: `
|
content: `
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
<div class="card-title">
|
<div class="card-title" title="${escapeHtml(source.name)}">
|
||||||
${icon} ${escapeHtml(source.name)}
|
${icon} ${escapeHtml(source.name)}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -107,7 +107,7 @@ export function createDeviceCard(device) {
|
|||||||
removeTitle: t('device.button.remove'),
|
removeTitle: t('device.button.remove'),
|
||||||
content: `
|
content: `
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
<div class="card-title">
|
<div class="card-title" title="${escapeHtml(device.name || device.id)}">
|
||||||
<span class="health-dot ${healthClass}" title="${healthTitle}"></span>
|
<span class="health-dot ${healthClass}" title="${healthTitle}"></span>
|
||||||
${device.name || device.id}
|
${device.name || device.id}
|
||||||
${device.url && device.url.startsWith('http') ? `<a class="device-url-badge" href="${device.url}" target="_blank" rel="noopener" title="${t('device.button.webui')}"><span class="device-url-text">${escapeHtml(device.url.replace(/^https?:\/\//, ''))}</span><span class="device-url-icon">${ICON_WEB}</span></a>` : (device.url && !device.url.startsWith('mock://') && !device.url.startsWith('ws://') && !device.url.startsWith('openrgb://') && !device.url.startsWith('http') ? `<span class="device-url-badge"><span class="device-url-text">${escapeHtml(device.url)}</span></span>` : '')}
|
${device.url && device.url.startsWith('http') ? `<a class="device-url-badge" href="${device.url}" target="_blank" rel="noopener" title="${t('device.button.webui')}"><span class="device-url-text">${escapeHtml(device.url.replace(/^https?:\/\//, ''))}</span><span class="device-url-icon">${ICON_WEB}</span></a>` : (device.url && !device.url.startsWith('mock://') && !device.url.startsWith('ws://') && !device.url.startsWith('openrgb://') && !device.url.startsWith('http') ? `<span class="device-url-badge"><span class="device-url-text">${escapeHtml(device.url)}</span></span>` : '')}
|
||||||
|
|||||||
@@ -222,7 +222,7 @@ export function createKCTargetCard(target, sourceMap, patternTemplateMap, valueS
|
|||||||
removeTitle: t('common.delete'),
|
removeTitle: t('common.delete'),
|
||||||
content: `
|
content: `
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
<div class="card-title">
|
<div class="card-title" title="${escapeHtml(target.name)}">
|
||||||
${escapeHtml(target.name)}
|
${escapeHtml(target.name)}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ export function createSceneCard(preset) {
|
|||||||
<button class="card-remove-btn" onclick="deleteScenePreset('${preset.id}', '${escapeHtml(preset.name)}')" title="${t('scenes.delete')}">✕</button>
|
<button class="card-remove-btn" onclick="deleteScenePreset('${preset.id}', '${escapeHtml(preset.name)}')" title="${t('scenes.delete')}">✕</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
<div class="card-title">${escapeHtml(preset.name)}</div>
|
<div class="card-title" title="${escapeHtml(preset.name)}">${escapeHtml(preset.name)}</div>
|
||||||
</div>
|
</div>
|
||||||
${preset.description ? `<div class="card-subtitle"><span class="card-meta">${escapeHtml(preset.description)}</span></div>` : ''}
|
${preset.description ? `<div class="card-subtitle"><span class="card-meta">${escapeHtml(preset.description)}</span></div>` : ''}
|
||||||
<div class="stream-card-props">
|
<div class="stream-card-props">
|
||||||
|
|||||||
@@ -1001,7 +1001,7 @@ export function createTargetCard(target, deviceMap, colorStripSourceMap, valueSo
|
|||||||
removeTitle: t('common.delete'),
|
removeTitle: t('common.delete'),
|
||||||
content: `
|
content: `
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
<div class="card-title">
|
<div class="card-title" title="${escapeHtml(target.name)}">
|
||||||
<span class="health-dot ${healthClass}" title="${healthTitle}"></span>
|
<span class="health-dot ${healthClass}" title="${healthTitle}"></span>
|
||||||
${escapeHtml(target.name)}
|
${escapeHtml(target.name)}
|
||||||
<span class="target-error-indicator" title="${t('device.metrics.errors')}">${ICON_WARNING}</span>
|
<span class="target-error-indicator" title="${t('device.metrics.errors')}">${ICON_WARNING}</span>
|
||||||
|
|||||||
Reference in New Issue
Block a user