Skip to content

Commit c13763d

Browse files
Tim020claude
andauthored
Fix V3 UI tooltip rendering (closes #1091) (#1094)
Replace native HTML title attributes with v-b-tooltip directive throughout client-v3 to restore Bootstrap-styled tooltips. Replace the plain "?" text span in ConfigSettings with IMdiHelpCircle icon, and restore the missing help icon on the Browser Console Log Level setting in UserSettingsConfig. Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent d1d9dd7 commit c13763d

10 files changed

Lines changed: 36 additions & 18 deletions

File tree

client-v3/e2e/tests/03-system-config.spec.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,9 @@ test('can open the View Clients modal', async () => {
245245

246246
test('switches to the Logs tab and can change source', async () => {
247247
await page.click('.nav-link:has-text("Logs")');
248-
await expect(page.locator('text=Server').first()).toBeVisible({ timeout: 10_000 });
248+
await expect(page.locator('.tab-pane.active label').filter({ hasText: /^Server$/ })).toBeVisible({
249+
timeout: 10_000,
250+
});
249251
// Switch to Client logs — Bootstrap btn-check inputs have pointer-events:none; click the label
250252
await page
251253
.locator('.tab-pane.active label')

client-v3/src/components/config/ConfigSettings.vue

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,12 @@
4343
<template #label>
4444
<span>
4545
{{ setting.display_name !== '' ? setting.display_name : key }}
46-
<span
46+
<IMdiHelpCircle
4747
v-if="setting.help_text !== ''"
48-
:id="`${key}-help-icon`"
48+
v-b-tooltip.hover.top="setting.help_text"
4949
class="text-muted ms-1"
5050
style="cursor: help"
51-
:title="setting.help_text"
52-
>?</span
53-
>
51+
/>
5452
</span>
5553
</template>
5654
<BFormSelect

client-v3/src/components/show/config/mics/MicAllocations.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,9 +128,9 @@
128128
<template v-else>
129129
<div
130130
v-if="allocationByCharacter[data.item.Character]?.[scene.id] != null"
131+
v-b-tooltip.hover.top="getTooltipText(data.item.Character, scene.id)"
131132
class="allocation-cell"
132133
:class="getConflictClassForCell(data.item.Character, scene.id)"
133-
:title="getTooltipText(data.item.Character, scene.id)"
134134
>
135135
{{ allocationByCharacter[data.item.Character]?.[scene.id] }}
136136
<IMdiAlert

client-v3/src/components/show/config/mics/MicTimeline.vue

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,12 @@
2828
By Cast
2929
</BButton>
3030
</BButtonGroup>
31-
<BButton size="sm" variant="outline-secondary" title="Export as PNG" @click="handleExport">
31+
<BButton
32+
v-b-tooltip.hover.top="'Export as PNG'"
33+
size="sm"
34+
variant="outline-secondary"
35+
@click="handleExport"
36+
>
3237
<IMdiDownload /> Export
3338
</BButton>
3439
</div>

client-v3/src/components/show/config/mics/ResourceAvailability.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,9 @@
6767
<div
6868
v-for="micStatus in sceneData.micStatuses"
6969
:key="`mic-${micStatus.mic.id}`"
70+
v-b-tooltip.hover.top="getMicTooltip(micStatus)"
7071
class="mic-status-item"
7172
:class="micStatus.statusClass"
72-
:title="getMicTooltip(micStatus)"
7373
>
7474
<div class="mic-name">{{ micStatus.mic.name ?? `Mic ${micStatus.mic.id}` }}</div>
7575
<div v-if="micStatus.character" class="mic-character">

client-v3/src/components/show/config/mics/SceneDensityHeatmap.vue

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,12 +57,14 @@
5757
class="scene-bar-wrapper"
5858
>
5959
<div
60+
v-b-tooltip.hover.top="
61+
`${sceneData.scene.name}: ${sceneData.micCount} microphone${sceneData.micCount !== 1 ? 's' : ''}`
62+
"
6063
class="scene-bar"
6164
:style="{
6265
backgroundColor: getDensityColor(sceneData.micCount),
6366
height: getBarHeight(sceneData.micCount) + 'px',
6467
}"
65-
:title="`${sceneData.scene.name}: ${sceneData.micCount} microphone${sceneData.micCount !== 1 ? 's' : ''}`"
6668
>
6769
<span class="mic-count">{{ sceneData.micCount }}</span>
6870
</div>

client-v3/src/components/show/config/stage/CrewTimeline.vue

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,12 @@
66
<div v-else class="timeline-wrapper">
77
<div class="timeline-controls-bar">
88
<span class="text-light small">Crew Assignments</span>
9-
<BButton size="sm" variant="outline-secondary" title="Export as PNG" @click="handleExport">
9+
<BButton
10+
v-b-tooltip.hover.top="'Export as PNG'"
11+
size="sm"
12+
variant="outline-secondary"
13+
@click="handleExport"
14+
>
1015
<IMdiDownload />
1116
</BButton>
1217
</div>

client-v3/src/components/show/config/stage/StageTimeline.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@
3030
</BButton>
3131
</BButtonGroup>
3232
<BButton
33+
v-b-tooltip.hover.top="'Export as PNG'"
3334
size="sm"
3435
variant="outline-secondary"
35-
title="Export as PNG"
3636
@click="handleExport"
3737
>
3838
<IMdiDownload />

client-v3/src/components/show/live/StageManagerPane.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
{{ getSceneDisplayName(scene) }}
3030
</span>
3131
<span class="scene-badges d-flex align-items-center gap-1">
32-
<IMdiPin v-if="pinnedScenes[scene.id]" title="Pinned" />
32+
<IMdiPin v-if="pinnedScenes[scene.id]" v-b-tooltip.hover.top="'Pinned'" />
3333
<BBadge v-if="scene.id === currentSceneId" variant="success" pill>Current</BBadge>
3434
<BBadge v-else-if="scene.id === nextSceneId" variant="primary" pill>Next</BBadge>
3535
</span>

client-v3/src/components/user/settings/UserSettingsConfig.vue

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,17 @@
6161
/>
6262
</BFormGroup>
6363

64-
<BFormGroup
65-
label-cols="4"
66-
label="Browser Console Log Level"
67-
label-for="console-log-level-input"
68-
>
64+
<BFormGroup label-cols="4" label-for="console-log-level-input">
65+
<template #label>
66+
Browser Console Log Level
67+
<IMdiHelpCircle
68+
v-b-tooltip.hover.top="
69+
'Controls which log messages appear in your browser\'s developer console.'
70+
"
71+
class="text-muted ms-1"
72+
style="cursor: help"
73+
/>
74+
</template>
6975
<BFormSelect
7076
id="console-log-level-input"
7177
v-model="state.console_log_level"

0 commit comments

Comments
 (0)