Release v2.16.6: fix slide animation controls
This commit is contained in:
1 parent
5b5d5da511
commit
03a27c8e25
8 files changed
+30
-5
No files matched your search
@@ -2,6 +2,12 @@
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
## 2.16.6 - 2026-10-22
|
||||
|
||||
### Fixed
|
||||
|
||||
- Slide animation presets classify `hinge` as an outro, and custom animation settings keep their controls aligned in the slide editor.
|
||||
|
||||
## 2.16.5 - 2026-10-22
|
||||
|
||||
### Fixed
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "pulse-signage-player",
|
||||
"version": "2.16.5",
|
||||
"version": "2.16.6",
|
||||
"private": false,
|
||||
"description": "Pulse Signage player application bundle",
|
||||
"engines": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "pulse-signage-web",
|
||||
"version": "2.16.5",
|
||||
"version": "2.16.6",
|
||||
"private": false,
|
||||
"description": "Pulse Signage web and bridge application bundle",
|
||||
"engines": {
|
||||
|
||||
Generated
+2
-2
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "pulse-signage",
|
||||
"version": "2.16.5",
|
||||
"version": "2.16.6",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "pulse-signage",
|
||||
"version": "2.16.5",
|
||||
"version": "2.16.6",
|
||||
"dependencies": {
|
||||
"animate.css": "^4.1.1",
|
||||
"bootstrap-icons": "1.13.1",
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "pulse-signage",
|
||||
"version": "2.16.5",
|
||||
"version": "2.16.6",
|
||||
"private": false,
|
||||
"description": "Pulse Signage application with MySQL and media storage",
|
||||
"engines": {
|
||||
|
||||
@@ -3258,6 +3258,10 @@ html[data-bs-theme='dark'] .template-field-card .tox .tox-collection {
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
}
|
||||
|
||||
.region-field-grid--animation [data-animation-preset][hidden] {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.region-field-grid > label {
|
||||
display: grid;
|
||||
gap: 0.35rem;
|
||||
|
||||
@@ -82,6 +82,10 @@
|
||||
return lookup[raw.toLowerCase()] || 'none';
|
||||
}
|
||||
|
||||
var animateCssCategoryOverrides = {
|
||||
hinge: 'outro'
|
||||
};
|
||||
|
||||
function splitAnimateCssValues(values) {
|
||||
var groups = {
|
||||
intro: [],
|
||||
@@ -94,6 +98,12 @@
|
||||
return;
|
||||
}
|
||||
|
||||
var categoryOverride = animateCssCategoryOverrides[value];
|
||||
if (categoryOverride && groups[categoryOverride]) {
|
||||
groups[categoryOverride].push(value);
|
||||
return;
|
||||
}
|
||||
|
||||
if (value.indexOf('In') !== -1) {
|
||||
groups.intro.push(value);
|
||||
return;
|
||||
|
||||
@@ -268,6 +268,7 @@ test('layout and animation modals use the same preview and properties column siz
|
||||
assert.match(css, /\.slide-layout-body\s*\{[^}]*grid-template-columns:\s*minmax\(0,\s*1fr\)\s+21rem;/);
|
||||
assert.match(css, /\.slide-animation-body\s*\{[^}]*grid-template-columns:\s*minmax\(0,\s*1fr\)\s+21rem;/);
|
||||
assert.match(css, /\.slide-animation-body\s*\{[^}]*gap:\s*1\.25rem;/);
|
||||
assert.match(css, /\.region-field-grid--animation\s+\[data-animation-preset\]\[hidden\]\s*\{\s*display:\s*none\s*!important;/);
|
||||
assert.match(css, /\.slide-animation-preview-panel\s*\{[^}]*container-type:\s*size;[^}]*min-height:\s*0;/);
|
||||
assert.match(css, /#slide-animation-preview\s*\{[^}]*height:\s*100%;/);
|
||||
assert.match(css, /#slide-animation-preview \.slide-preview-stage\s*\{[^}]*width:\s*min\(100%,\s*calc\(100cqh\s*\*\s*var\(--slide-layout-ratio,/);
|
||||
@@ -281,6 +282,10 @@ test('advanced animation section uses compact heading and card spacing', functio
|
||||
});
|
||||
|
||||
test('shared animation controls round-trip advanced settings with template normalization', function () {
|
||||
const animationPresets = require('../src/web/public/js/templates/animation-presets.js');
|
||||
assert.ok(animationPresets.advanced.outro.some((preset) => preset.value === 'hinge'));
|
||||
assert.ok(!animationPresets.advanced.attentionSeekers.some((preset) => preset.value === 'hinge'));
|
||||
|
||||
const context = { window: {} };
|
||||
for (const file of ['templates/animation-presets.js', 'templates/template-designer-utils.js', 'shared/region-animation-controls.js']) {
|
||||
vm.runInNewContext(fs.readFileSync(require.resolve('../src/web/public/js/' + file), 'utf8'), context);
|
||||
|
||||
Reference in new issue
Block a user