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.
|
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
|
## 2.16.5 - 2026-10-22
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "pulse-signage-player",
|
"name": "pulse-signage-player",
|
||||||
"version": "2.16.5",
|
"version": "2.16.6",
|
||||||
"private": false,
|
"private": false,
|
||||||
"description": "Pulse Signage player application bundle",
|
"description": "Pulse Signage player application bundle",
|
||||||
"engines": {
|
"engines": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "pulse-signage-web",
|
"name": "pulse-signage-web",
|
||||||
"version": "2.16.5",
|
"version": "2.16.6",
|
||||||
"private": false,
|
"private": false,
|
||||||
"description": "Pulse Signage web and bridge application bundle",
|
"description": "Pulse Signage web and bridge application bundle",
|
||||||
"engines": {
|
"engines": {
|
||||||
|
|||||||
Generated
+2
-2
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "pulse-signage",
|
"name": "pulse-signage",
|
||||||
"version": "2.16.5",
|
"version": "2.16.6",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "pulse-signage",
|
"name": "pulse-signage",
|
||||||
"version": "2.16.5",
|
"version": "2.16.6",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"animate.css": "^4.1.1",
|
"animate.css": "^4.1.1",
|
||||||
"bootstrap-icons": "1.13.1",
|
"bootstrap-icons": "1.13.1",
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "pulse-signage",
|
"name": "pulse-signage",
|
||||||
"version": "2.16.5",
|
"version": "2.16.6",
|
||||||
"private": false,
|
"private": false,
|
||||||
"description": "Pulse Signage application with MySQL and media storage",
|
"description": "Pulse Signage application with MySQL and media storage",
|
||||||
"engines": {
|
"engines": {
|
||||||
|
|||||||
@@ -3258,6 +3258,10 @@ html[data-bs-theme='dark'] .template-field-card .tox .tox-collection {
|
|||||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.region-field-grid--animation [data-animation-preset][hidden] {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
.region-field-grid > label {
|
.region-field-grid > label {
|
||||||
display: grid;
|
display: grid;
|
||||||
gap: 0.35rem;
|
gap: 0.35rem;
|
||||||
|
|||||||
@@ -82,6 +82,10 @@
|
|||||||
return lookup[raw.toLowerCase()] || 'none';
|
return lookup[raw.toLowerCase()] || 'none';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var animateCssCategoryOverrides = {
|
||||||
|
hinge: 'outro'
|
||||||
|
};
|
||||||
|
|
||||||
function splitAnimateCssValues(values) {
|
function splitAnimateCssValues(values) {
|
||||||
var groups = {
|
var groups = {
|
||||||
intro: [],
|
intro: [],
|
||||||
@@ -94,6 +98,12 @@
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var categoryOverride = animateCssCategoryOverrides[value];
|
||||||
|
if (categoryOverride && groups[categoryOverride]) {
|
||||||
|
groups[categoryOverride].push(value);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (value.indexOf('In') !== -1) {
|
if (value.indexOf('In') !== -1) {
|
||||||
groups.intro.push(value);
|
groups.intro.push(value);
|
||||||
return;
|
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-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*\{[^}]*grid-template-columns:\s*minmax\(0,\s*1fr\)\s+21rem;/);
|
||||||
assert.match(css, /\.slide-animation-body\s*\{[^}]*gap:\s*1\.25rem;/);
|
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-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\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,/);
|
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 () {
|
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: {} };
|
const context = { window: {} };
|
||||||
for (const file of ['templates/animation-presets.js', 'templates/template-designer-utils.js', 'shared/region-animation-controls.js']) {
|
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);
|
vm.runInNewContext(fs.readFileSync(require.resolve('../src/web/public/js/' + file), 'utf8'), context);
|
||||||
|
|||||||
Reference in new issue
Block a user