Skip to content

Commit 55f8fde

Browse files
Trim docker tooltip trigger fix for perf budget
1 parent 59a6f35 commit 55f8fde

7 files changed

Lines changed: 21 additions & 23 deletions

File tree

archive/folderview.plus-2026.03.29.17.txz.sha256

Lines changed: 0 additions & 1 deletion
This file was deleted.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
fa5a00ce5d8d98d73628b1d6dcec1624e24546f6ac52740931532ec93736f221 folderview.plus-2026.03.30.17.txz

folderview.plus.plg

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,19 @@
66
<!ENTITY launch "Settings/FolderViewPlus">
77
<!ENTITY plugdir "/usr/local/emhttp/plugins/&name;">
88
<!ENTITY pluginURL "https://raw.githubusercontent.com/&github;/dev/folderview.plus.plg">
9-
<!ENTITY version "2026.03.30.16">
10-
<!ENTITY md5 "f6601bdadd11448fdc6a1e62c302d0a2">
9+
<!ENTITY version "2026.03.30.17">
10+
<!ENTITY md5 "b08a5b0aa4659eef6a3e4eafd57de99c">
1111
]>
1212

1313
<PLUGIN name="&name;" author="&author;" version="&version;" launch="&launch;" pluginURL="&pluginURL;" icon="folder-icon.png" support="https://forums.unraid.net/topic/197631-plugin-folderview-plus/" min="7.0.0">
1414
<CHANGES>
1515

16+
###2026.03.30.17
17+
- Fix: Stop Docker advanced preview context popups configured for click from eager-opening on the first hover interaction.
18+
- Quality: Trim the lazy tooltip trigger-mode fix so the Docker runtime stays inside the repo perf budget while preserving hover-mode eager-open behavior.
19+
- Regression guard: Cover lazy tooltip initialization so click-trigger folders only eager-open on click or touch, while hover-trigger folders still open on hover.
20+
21+
1622
###2026.03.30.16
1723
- Fix: Stop Docker advanced preview context popups configured for click from eager-opening on the first hover interaction.
1824
- Regression guard: Cover lazy tooltip initialization so click-trigger folders only eager-open on click or touch, while hover-trigger folders still open on hover.

src/folderview.plus/usr/local/emhttp/plugins/folderview.plus/scripts/docker.js

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1692,7 +1692,7 @@ const buildDockerTooltipContent = (ct) => {
16921692
return $content;
16931693
};
16941694

1695-
const initializeDockerTooltipOnDemand = ($target, init, options = {}) => {
1695+
const initializeDockerTooltipOnDemand = ($target, init, hoverOpen = true) => {
16961696
if (DOCKER_PREVIEW_POPUP_ENABLED !== true) {
16971697
return;
16981698
}
@@ -1703,18 +1703,13 @@ const initializeDockerTooltipOnDemand = ($target, init, options = {}) => {
17031703
return;
17041704
}
17051705
$target.data('fvTooltipsterDeferred', true);
1706-
const eagerOpenEventTypes = new Set(
1707-
(Array.isArray(options?.openOnEventTypes) ? options.openOnEventTypes : ['mouseenter', 'click', 'touchstart'])
1708-
.map((eventType) => String(eventType || '').trim().toLowerCase())
1709-
.filter(Boolean)
1710-
);
17111706
const ensureInitialized = (eventType = '') => {
17121707
if ($target.data('fvTooltipsterInitialized') === true) {
17131708
return;
17141709
}
17151710
$target.data('fvTooltipsterInitialized', true);
17161711
init();
1717-
if (eagerOpenEventTypes.has(eventType)) {
1712+
if (eventType !== 'mouseenter' || hoverOpen) {
17181713
setTimeout(() => {
17191714
try {
17201715
$target.tooltipster('open');
@@ -1725,7 +1720,7 @@ const initializeDockerTooltipOnDemand = ($target, init, options = {}) => {
17251720
}
17261721
};
17271722
$target.one('mouseenter.fvLazyTooltip click.fvLazyTooltip touchstart.fvLazyTooltip', (event) => {
1728-
ensureInitialized(String(event?.type || '').trim().toLowerCase());
1723+
ensureInitialized(event?.type || '');
17291724
});
17301725
};
17311726
// Advanced preview popups are opt-in per folder; keep the runtime lazy so
@@ -3957,11 +3952,7 @@ const createFolder = (folder, id, positionInMainOrder, liveOrderArray, container
39573952
}
39583953
},
39593954
content: $('<div class="fv-tooltip-lazy-loading">Loading preview...</div>')
3960-
}), {
3961-
openOnEventTypes: triggerMode === 'hover'
3962-
? ['mouseenter', 'click', 'touchstart']
3963-
: ['click', 'touchstart']
3964-
});
3955+
}), triggerMode === 'hover');
39653956
} else if (FOLDER_VIEW_DEBUG_MODE && tooltip_trigger_element && tooltip_trigger_element.length > 0) {
39663957
console.log(`[FV3_DEBUG] createFolder (id: ${id}), container ${ct.shortId}: FolderView preview popup runtime is disabled; skipping tooltip initialization.`);
39673958
} else {

tests/docker-tooltip-trigger-regression.test.mjs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,13 @@ const extractArrowFunctionBody = (source, signature) => {
3131

3232
const initializeDockerTooltipOnDemandBody = extractArrowFunctionBody(
3333
dockerJs,
34-
'const initializeDockerTooltipOnDemand = ($target, init, options = {}) => '
34+
'const initializeDockerTooltipOnDemand = ($target, init, hoverOpen = true) => '
3535
);
3636

3737
const initializeDockerTooltipOnDemand = new Function(
3838
'$target',
3939
'init',
40-
'options',
40+
'hoverOpen',
4141
'DOCKER_PREVIEW_POPUP_ENABLED',
4242
'setTimeout',
4343
initializeDockerTooltipOnDemandBody
@@ -100,7 +100,7 @@ test('docker lazy tooltip init does not eager-open click-trigger tooltips on fir
100100
() => {
101101
initCount += 1;
102102
},
103-
{ openOnEventTypes: ['click', 'touchstart'] },
103+
false,
104104
true,
105105
runImmediateTimeout
106106
);
@@ -121,7 +121,7 @@ test('docker lazy tooltip init still eager-opens hover-trigger tooltips on first
121121
() => {
122122
initCount += 1;
123123
},
124-
{ openOnEventTypes: ['mouseenter', 'click', 'touchstart'] },
124+
true,
125125
true,
126126
runImmediateTimeout
127127
);
@@ -141,7 +141,7 @@ test('docker lazy tooltip init eager-opens click-trigger tooltips on first click
141141
() => {
142142
initCount += 1;
143143
},
144-
{ openOnEventTypes: ['click', 'touchstart'] },
144+
false,
145145
true,
146146
runImmediateTimeout
147147
);

tests/performance-optimizations.test.mjs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -228,8 +228,9 @@ test('docker preview popup runtime stays enabled behind lazy advanced-preview in
228228
assert.match(dockerJs, /const DOCKER_PREVIEW_POPUP_ENABLED = true;/);
229229
assert.match(dockerJs, /fvTooltipLazyBuilt/);
230230
assert.match(dockerJs, /Loading preview\.\.\./);
231-
assert.match(dockerJs, /const initializeDockerTooltipOnDemand = \(\$target,\s*init,\s*options = \{\}\) =>/);
232-
assert.match(dockerJs, /openOnEventTypes: triggerMode === 'hover'/);
231+
assert.match(dockerJs, /const initializeDockerTooltipOnDemand = \(\$target,\s*init,\s*hoverOpen = true\) =>/);
232+
assert.match(dockerJs, /initializeDockerTooltipOnDemand\(\$\(tooltip_trigger_element\), \(\) => \$\(tooltip_trigger_element\)\.tooltipster\(\{/);
233+
assert.match(dockerJs, /\}\), triggerMode === 'hover'\);/);
233234
assert.match(dockerJs, /if \(DOCKER_PREVIEW_POPUP_ENABLED !== true\) \{\s*return;\s*\}/);
234235
assert.match(dockerJs, /if\(DOCKER_PREVIEW_POPUP_ENABLED && tooltip_trigger_element && tooltip_trigger_element\.length > 0\) \{/);
235236
});

0 commit comments

Comments
 (0)