Release v2.19.2: reorganize shared UI modules
This commit is contained in:
1 parent
f7d29ac326
commit
55ee5dc366
33 files changed
+48
-42
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.19.2 - 2026-10-24
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Updated the server-side toast helper reference after organizing browser UI modules into shared and RBAC namespaces, preventing web startup failure.
|
||||||
|
|
||||||
## 2.19.1 - 2026-10-24
|
## 2.19.1 - 2026-10-24
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "pulse-signage-player",
|
"name": "pulse-signage-player",
|
||||||
"version": "2.19.1",
|
"version": "2.19.2",
|
||||||
"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.19.1",
|
"version": "2.19.2",
|
||||||
"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.19.1",
|
"version": "2.19.2",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "pulse-signage",
|
"name": "pulse-signage",
|
||||||
"version": "2.19.1",
|
"version": "2.19.2",
|
||||||
"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.19.1",
|
"version": "2.19.2",
|
||||||
"private": false,
|
"private": false,
|
||||||
"description": "Pulse Signage application with MySQL and media storage",
|
"description": "Pulse Signage application with MySQL and media storage",
|
||||||
"engines": {
|
"engines": {
|
||||||
|
|||||||
@@ -3944,7 +3944,7 @@ html[data-bs-theme='dark'] .template-field-card .tox .tox-collection {
|
|||||||
text-transform: none;
|
text-transform: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.api-region-placeholder-section .chip {
|
.placeholder-chip {
|
||||||
padding: 0.2rem 0.45rem;
|
padding: 0.2rem 0.45rem;
|
||||||
border: 1px solid var(--bs-border-color);
|
border: 1px solid var(--bs-border-color);
|
||||||
border-radius: 0.3rem;
|
border-radius: 0.3rem;
|
||||||
@@ -3954,12 +3954,12 @@ html[data-bs-theme='dark'] .template-field-card .tox .tox-collection {
|
|||||||
font-size: 0.75rem;
|
font-size: 0.75rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.api-region-placeholder-section .chip:hover {
|
.placeholder-chip:hover {
|
||||||
border-color: var(--bs-secondary-color);
|
border-color: var(--bs-secondary-color);
|
||||||
background: var(--bs-tertiary-bg);
|
background: var(--bs-tertiary-bg);
|
||||||
}
|
}
|
||||||
|
|
||||||
.api-region-placeholder-section .chip:focus-visible {
|
.placeholder-chip:focus-visible {
|
||||||
outline: 2px solid var(--bs-primary);
|
outline: 2px solid var(--bs-primary);
|
||||||
outline-offset: 2px;
|
outline-offset: 2px;
|
||||||
}
|
}
|
||||||
|
|||||||
File renamed without changes.
@@ -208,7 +208,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
return tokens.map(function (token) {
|
return tokens.map(function (token) {
|
||||||
return '<span class="chip">{{' + token + '}}</span>';
|
return '<span class="chip placeholder-chip">{{' + token + '}}</span>';
|
||||||
}).join('');
|
}).join('');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -215,7 +215,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
return tokens.map(function (token) {
|
return tokens.map(function (token) {
|
||||||
return '<span class="chip">{{' + escapeHtml(token) + '}}</span>';
|
return '<span class="chip placeholder-chip">{{' + escapeHtml(token) + '}}</span>';
|
||||||
}).join('');
|
}).join('');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -64,14 +64,14 @@
|
|||||||
if (visibleCount >= fields.length) return fields.map(function (field) {
|
if (visibleCount >= fields.length) return fields.map(function (field) {
|
||||||
return window.placeholderChips && typeof window.placeholderChips.renderChip === 'function'
|
return window.placeholderChips && typeof window.placeholderChips.renderChip === 'function'
|
||||||
? window.placeholderChips.renderChip(field)
|
? window.placeholderChips.renderChip(field)
|
||||||
: '<span class="chip">{{' + escapeHtml(field) + '}}</span>';
|
: '<span class="chip placeholder-chip">{{' + escapeHtml(field) + '}}</span>';
|
||||||
}).join('');
|
}).join('');
|
||||||
var visibleFields = fields.slice(0, visibleCount);
|
var visibleFields = fields.slice(0, visibleCount);
|
||||||
var overflowFields = fields.slice(visibleFields.length);
|
var overflowFields = fields.slice(visibleFields.length);
|
||||||
var renderChip = function (field) {
|
var renderChip = function (field) {
|
||||||
return window.placeholderChips && typeof window.placeholderChips.renderChip === 'function'
|
return window.placeholderChips && typeof window.placeholderChips.renderChip === 'function'
|
||||||
? window.placeholderChips.renderChip(field)
|
? window.placeholderChips.renderChip(field)
|
||||||
: '<span class="chip">{{' + escapeHtml(field) + '}}</span>';
|
: '<span class="chip placeholder-chip">{{' + escapeHtml(field) + '}}</span>';
|
||||||
};
|
};
|
||||||
var visibleMarkup = visibleFields.map(renderChip).join('');
|
var visibleMarkup = visibleFields.map(renderChip).join('');
|
||||||
if (!overflowFields.length) return visibleMarkup;
|
if (!overflowFields.length) return visibleMarkup;
|
||||||
|
|||||||
@@ -98,7 +98,7 @@
|
|||||||
var escapedCopyText = escapeHtml(copyText);
|
var escapedCopyText = escapeHtml(copyText);
|
||||||
ensureCopyHandler();
|
ensureCopyHandler();
|
||||||
|
|
||||||
return '<span class="chip" ' + CHIP_ATTR + '="1" data-copy-text="' + escapedCopyText + '" role="button" tabindex="0" title="Click to copy ' + escapedCopyText + '" aria-label="Copy ' + escapedCopyText + '">' + escapedCopyText + '</span>';
|
return '<span class="chip placeholder-chip" ' + CHIP_ATTR + '="1" data-copy-text="' + escapedCopyText + '" role="button" tabindex="0" title="Click to copy ' + escapedCopyText + '" aria-label="Copy ' + escapedCopyText + '">' + escapedCopyText + '</span>';
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderChips(tokens) {
|
function renderChips(tokens) {
|
||||||
|
|||||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -137,7 +137,7 @@ export function createSlideFormRegionHelpers(options) {
|
|||||||
var visibleMarkup = visibleFields.map(function (field) {
|
var visibleMarkup = visibleFields.map(function (field) {
|
||||||
return typeof placeholderChips.renderChip === 'function'
|
return typeof placeholderChips.renderChip === 'function'
|
||||||
? placeholderChips.renderChip(field)
|
? placeholderChips.renderChip(field)
|
||||||
: '<span class="chip">{{' + escapeHtml(field) + '}}</span>';
|
: '<span class="chip placeholder-chip">{{' + escapeHtml(field) + '}}</span>';
|
||||||
}).join('');
|
}).join('');
|
||||||
var transformHint = includeTransformHint === false ? '' : '<div class="text-body-secondary small mt-1">Placeholder values support transforms, for example <code>{{title.upper()}}</code>, <code>{{title.title()}}</code>, <code>{{title.lower()}}</code>, <code>{{publishedAt.format("MMM D, YYYY")}}</code>, or <code>{{amount.multiply(10)}}</code>.</div>';
|
var transformHint = includeTransformHint === false ? '' : '<div class="text-body-secondary small mt-1">Placeholder values support transforms, for example <code>{{title.upper()}}</code>, <code>{{title.title()}}</code>, <code>{{title.lower()}}</code>, <code>{{publishedAt.format("MMM D, YYYY")}}</code>, or <code>{{amount.multiply(10)}}</code>.</div>';
|
||||||
|
|
||||||
@@ -153,7 +153,7 @@ export function createSlideFormRegionHelpers(options) {
|
|||||||
'<div class="d-flex flex-wrap gap-2 mt-1">' + overflowFields.map(function (field) {
|
'<div class="d-flex flex-wrap gap-2 mt-1">' + overflowFields.map(function (field) {
|
||||||
return typeof placeholderChips.renderChip === 'function'
|
return typeof placeholderChips.renderChip === 'function'
|
||||||
? placeholderChips.renderChip(field)
|
? placeholderChips.renderChip(field)
|
||||||
: '<span class="chip">{{' + escapeHtml(field) + '}}</span>';
|
: '<span class="chip placeholder-chip">{{' + escapeHtml(field) + '}}</span>';
|
||||||
}).join('') + '</div>' +
|
}).join('') + '</div>' +
|
||||||
'</details>';
|
'</details>';
|
||||||
}
|
}
|
||||||
@@ -226,7 +226,7 @@ export function createSlideFormRegionHelpers(options) {
|
|||||||
var chips = Array.isArray(fieldList) ? fieldList.map(function (field) {
|
var chips = Array.isArray(fieldList) ? fieldList.map(function (field) {
|
||||||
return typeof placeholderChips.renderChip === 'function'
|
return typeof placeholderChips.renderChip === 'function'
|
||||||
? placeholderChips.renderChip(field)
|
? placeholderChips.renderChip(field)
|
||||||
: '<span class="chip">{{' + escapeHtml(field) + '}}</span>';
|
: '<span class="chip placeholder-chip">{{' + escapeHtml(field) + '}}</span>';
|
||||||
}).join('') : '';
|
}).join('') : '';
|
||||||
|
|
||||||
container.innerHTML = chips || '<span class="muted slide-image-file">' + escapeHtml(emptyLabel) + '</span>';
|
container.innerHTML = chips || '<span class="muted slide-image-file">' + escapeHtml(emptyLabel) + '</span>';
|
||||||
|
|||||||
@@ -14,6 +14,6 @@ module.exports = function renderSettingsPage(settings, suggestedAnnouncementIcon
|
|||||||
defaultAnnouncementIconSuggestions: iconOptions.filter(function (option) { return option.isSelected; }),
|
defaultAnnouncementIconSuggestions: iconOptions.filter(function (option) { return option.isSelected; }),
|
||||||
mediaSettings: mediaSettings || {},
|
mediaSettings: mediaSettings || {},
|
||||||
diagnostics: diagnostics || {},
|
diagnostics: diagnostics || {},
|
||||||
scripts: ['js/icon-picker.js', 'js/settings/settings-page.js']
|
scripts: ['js/shared/ui/icon-picker.js', 'js/settings/settings-page.js']
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@@ -119,7 +119,7 @@ function buildRbacAddViewModel(message, currentUser, formValues, permissionGroup
|
|||||||
users: users || [],
|
users: users || [],
|
||||||
pagination: pagination || null,
|
pagination: pagination || null,
|
||||||
roleEditBasePath: '/settings/roles/new',
|
roleEditBasePath: '/settings/roles/new',
|
||||||
scripts: ['js/rbac-permissions.js'],
|
scripts: ['js/rbac/permissions.js'],
|
||||||
formAttrs: 'data-async-save data-async-save-close-url="/settings/roles" data-async-save-new-redirect="response-url" data-async-save-new-url="/settings/roles/new"'
|
formAttrs: 'data-async-save data-async-save-close-url="/settings/roles" data-async-save-new-redirect="response-url" data-async-save-new-url="/settings/roles/new"'
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -155,7 +155,7 @@ function buildRbacEditViewModel(role, message, currentUser, permissionGroups, us
|
|||||||
users: users || [],
|
users: users || [],
|
||||||
pagination: pagination || null,
|
pagination: pagination || null,
|
||||||
roleEditBasePath: '/settings/roles/' + Number(role && role.id) + '/edit',
|
roleEditBasePath: '/settings/roles/' + Number(role && role.id) + '/edit',
|
||||||
scripts: ['js/rbac-permissions.js'],
|
scripts: ['js/rbac/permissions.js'],
|
||||||
formAttrs: 'data-async-save data-async-save-close-url="/settings/roles" data-async-save-new-url="/settings/roles/new"'
|
formAttrs: 'data-async-save data-async-save-close-url="/settings/roles" data-async-save-new-url="/settings/roles/new"'
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -6,7 +6,7 @@ const Handlebars = require('handlebars');
|
|||||||
const { version: appVersion } = require('#root/package.json');
|
const { version: appVersion } = require('#root/package.json');
|
||||||
const { hasPermission, hasAnyPermission, hasAssignedPermission } = require('#src/rbac');
|
const { hasPermission, hasAnyPermission, hasAssignedPermission } = require('#src/rbac');
|
||||||
const { registerHandlebars } = require('#src/web/handlebars');
|
const { registerHandlebars } = require('#src/web/handlebars');
|
||||||
const { getMessageVariant: inferMessageVariant } = require('#src/web/public/js/toast');
|
const { getMessageVariant: inferMessageVariant } = require('#src/web/public/js/shared/ui/toast');
|
||||||
|
|
||||||
const VIEWS_ROOT = path.join(__dirname, 'views');
|
const VIEWS_ROOT = path.join(__dirname, 'views');
|
||||||
const cache = new Map();
|
const cache = new Map();
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
<title>{{title}} - Pulse</title>
|
<title>{{title}} - Pulse</title>
|
||||||
<link rel="icon" type="image/png" href="/assets/favicon.png" />
|
<link rel="icon" type="image/png" href="/assets/favicon.png" />
|
||||||
<script src="/assets/js/theme-init.js"></script>
|
<script src="/assets/js/shared/theme-init.js"></script>
|
||||||
<link rel="stylesheet" href="/assets/adminlte/bootstrap-icons/css/bootstrap-icons.min.css" />
|
<link rel="stylesheet" href="/assets/adminlte/bootstrap-icons/css/bootstrap-icons.min.css" />
|
||||||
<link rel="stylesheet" href="/assets/adminlte/css/adminlte.min.css" />
|
<link rel="stylesheet" href="/assets/adminlte/css/adminlte.min.css" />
|
||||||
<link rel="stylesheet" href="/assets/adminlte/css/adminlte-colors.min.css" />
|
<link rel="stylesheet" href="/assets/adminlte/css/adminlte-colors.min.css" />
|
||||||
@@ -83,12 +83,12 @@
|
|||||||
{{/if}}
|
{{/if}}
|
||||||
<script src="/assets/adminlte/js/bootstrap.bundle.min.js"></script>
|
<script src="/assets/adminlte/js/bootstrap.bundle.min.js"></script>
|
||||||
<script src="/assets/adminlte/js/adminlte.min.js"></script>
|
<script src="/assets/adminlte/js/adminlte.min.js"></script>
|
||||||
<script src="/assets/js/web-ui-helpers.js"></script>
|
<script src="/assets/js/shared/web-ui-helpers.js"></script>
|
||||||
<script src="/assets/js/toast.js"></script>
|
<script src="/assets/js/shared/ui/toast.js"></script>
|
||||||
<script src="/assets/js/table/table-sort.js"></script>
|
<script src="/assets/js/table/table-sort.js"></script>
|
||||||
<script src="/assets/js/table/table-search.js"></script>
|
<script src="/assets/js/table/table-search.js"></script>
|
||||||
<script src="/assets/js/admin/admin-page.js"></script>
|
<script src="/assets/js/admin/admin-page.js"></script>
|
||||||
<script src="/assets/js/system-status.js"></script>
|
<script src="/assets/js/shared/system-status.js"></script>
|
||||||
{{#if scripts.length}}
|
{{#if scripts.length}}
|
||||||
{{#each scripts}}
|
{{#each scripts}}
|
||||||
<script src="/assets/{{this}}"></script>
|
<script src="/assets/{{this}}"></script>
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
||||||
<title>{{title}} - Pulse</title>
|
<title>{{title}} - Pulse</title>
|
||||||
<link rel="icon" type="image/png" href="/assets/favicon.png" />
|
<link rel="icon" type="image/png" href="/assets/favicon.png" />
|
||||||
<script src="/assets/js/theme-init.js"></script>
|
<script src="/assets/js/shared/theme-init.js"></script>
|
||||||
<link rel="stylesheet" href="/assets/adminlte/bootstrap-icons/css/bootstrap-icons.min.css" />
|
<link rel="stylesheet" href="/assets/adminlte/bootstrap-icons/css/bootstrap-icons.min.css" />
|
||||||
<link rel="stylesheet" href="/assets/adminlte/css/adminlte.min.css" />
|
<link rel="stylesheet" href="/assets/adminlte/css/adminlte.min.css" />
|
||||||
<link rel="stylesheet" href="/assets/adminlte/css/adminlte-colors.min.css" />
|
<link rel="stylesheet" href="/assets/adminlte/css/adminlte-colors.min.css" />
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
<script src="/assets/js/admin/admin-page.js"></script>
|
<script src="/assets/js/admin/admin-page.js"></script>
|
||||||
<script src="/assets/js/system-status.js"></script>
|
<script src="/assets/js/shared/system-status.js"></script>
|
||||||
{{else if authShell}}
|
{{else if authShell}}
|
||||||
<div id="app-toast-container" class="toast-container app-toast-container position-fixed end-0 p-3">
|
<div id="app-toast-container" class="toast-container app-toast-container position-fixed end-0 p-3">
|
||||||
{{#if message}}
|
{{#if message}}
|
||||||
@@ -56,9 +56,9 @@
|
|||||||
{{{body}}}
|
{{{body}}}
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
<script src="/assets/js/toast.js"></script>
|
<script src="/assets/js/shared/ui/toast.js"></script>
|
||||||
<script src="/assets/js/admin/admin-page.js"></script>
|
<script src="/assets/js/admin/admin-page.js"></script>
|
||||||
<script src="/assets/js/system-status.js"></script>
|
<script src="/assets/js/shared/system-status.js"></script>
|
||||||
{{else}}
|
{{else}}
|
||||||
<div id="app-toast-container" class="toast-container app-toast-container position-fixed end-0 p-3">
|
<div id="app-toast-container" class="toast-container app-toast-container position-fixed end-0 p-3">
|
||||||
{{#if message}}
|
{{#if message}}
|
||||||
@@ -413,8 +413,8 @@
|
|||||||
</dialog>
|
</dialog>
|
||||||
<script src="/assets/adminlte/js/bootstrap.bundle.min.js"></script>
|
<script src="/assets/adminlte/js/bootstrap.bundle.min.js"></script>
|
||||||
<script src="/assets/adminlte/js/adminlte.min.js"></script>
|
<script src="/assets/adminlte/js/adminlte.min.js"></script>
|
||||||
<script src="/assets/js/web-ui-helpers.js"></script>
|
<script src="/assets/js/shared/web-ui-helpers.js"></script>
|
||||||
<script src="/assets/js/toast.js"></script>
|
<script src="/assets/js/shared/ui/toast.js"></script>
|
||||||
<script src="/assets/js/table/table-sort.js"></script>
|
<script src="/assets/js/table/table-sort.js"></script>
|
||||||
<script src="/assets/js/table/table-search.js"></script>
|
<script src="/assets/js/table/table-search.js"></script>
|
||||||
<script src="/assets/js/admin/admin-page.js"></script>
|
<script src="/assets/js/admin/admin-page.js"></script>
|
||||||
@@ -427,7 +427,7 @@
|
|||||||
{{/if}}
|
{{/if}}
|
||||||
{{/each}}
|
{{/each}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<script src="/assets/js/system-status.js"></script>
|
<script src="/assets/js/shared/system-status.js"></script>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -174,7 +174,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script src="/assets/js/icon-picker.js?v={{appVersion}}"></script>
|
<script src="/assets/js/shared/ui/icon-picker.js?v={{appVersion}}"></script>
|
||||||
<script type="module" src="/assets/js/announcements/announcement-form.js?v={{appVersion}}"></script>
|
<script type="module" src="/assets/js/announcements/announcement-form.js?v={{appVersion}}"></script>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
|||||||
@@ -247,5 +247,5 @@
|
|||||||
{{/each}}
|
{{/each}}
|
||||||
<script type="module" src="/assets/js/slides/slide-form.js?v={{assetVersion}}"></script>
|
<script type="module" src="/assets/js/slides/slide-form.js?v={{assetVersion}}"></script>
|
||||||
<script type="module" src="/assets/js/slides/slide-image-cropper.js?v={{assetVersion}}"></script>
|
<script type="module" src="/assets/js/slides/slide-image-cropper.js?v={{assetVersion}}"></script>
|
||||||
<script type="module" src="/assets/js/media-picker.js?v={{appVersion}}"></script>
|
<script type="module" src="/assets/js/shared/ui/media-picker.js?v={{appVersion}}"></script>
|
||||||
|
|
||||||
@@ -213,4 +213,4 @@
|
|||||||
<textarea id="template-region-editor-data" hidden>{{json regionEditorData}}</textarea>
|
<textarea id="template-region-editor-data" hidden>{{json regionEditorData}}</textarea>
|
||||||
<script src="/assets/vendor/tinymce/tinymce.min.js"></script>
|
<script src="/assets/vendor/tinymce/tinymce.min.js"></script>
|
||||||
<script type="module" src="/assets/js/templates/template-default-content-editor.js?v={{appVersion}}"></script>
|
<script type="module" src="/assets/js/templates/template-default-content-editor.js?v={{appVersion}}"></script>
|
||||||
<script type="module" src="/assets/js/media-picker.js?v={{appVersion}}"></script>
|
<script type="module" src="/assets/js/shared/ui/media-picker.js?v={{appVersion}}"></script>
|
||||||
@@ -4,7 +4,7 @@ const fs = require('node:fs');
|
|||||||
const vm = require('node:vm');
|
const vm = require('node:vm');
|
||||||
|
|
||||||
function loadTimeDateModule() {
|
function loadTimeDateModule() {
|
||||||
const webUiHelpersScript = fs.readFileSync(require.resolve('../src/web/public/js/web-ui-helpers.js'), 'utf8');
|
const webUiHelpersScript = fs.readFileSync(require.resolve('../src/web/public/js/shared/web-ui-helpers.js'), 'utf8');
|
||||||
const sharedRenderingScript = fs.readFileSync(require.resolve('../src/player/rendering-shared.js'), 'utf8');
|
const sharedRenderingScript = fs.readFileSync(require.resolve('../src/player/rendering-shared.js'), 'utf8');
|
||||||
const renderingScript = fs.readFileSync(require.resolve('../src/player/public/js/player-page-rendering.js'), 'utf8');
|
const renderingScript = fs.readFileSync(require.resolve('../src/player/public/js/player-page-rendering.js'), 'utf8');
|
||||||
const placeholderScript = fs.readFileSync(require.resolve('../src/web/public/js/shared/placeholder-utils.js'), 'utf8');
|
const placeholderScript = fs.readFileSync(require.resolve('../src/web/public/js/shared/placeholder-utils.js'), 'utf8');
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ const test = require('node:test');
|
|||||||
const assert = require('node:assert/strict');
|
const assert = require('node:assert/strict');
|
||||||
const fs = require('node:fs');
|
const fs = require('node:fs');
|
||||||
|
|
||||||
const rbacPermissionsScript = fs.readFileSync(require.resolve('../src/web/public/js/rbac-permissions.js'), 'utf8');
|
const rbacPermissionsScript = fs.readFileSync(require.resolve('../src/web/public/js/rbac/permissions.js'), 'utf8');
|
||||||
const rbacFormTemplate = fs.readFileSync(require.resolve('../src/web/views/settings/rbac/form.hbs'), 'utf8');
|
const rbacFormTemplate = fs.readFileSync(require.resolve('../src/web/views/settings/rbac/form.hbs'), 'utf8');
|
||||||
const rbacRoutesSource = fs.readFileSync(require.resolve('../src/web/routes/admin/rbac.js'), 'utf8');
|
const rbacRoutesSource = fs.readFileSync(require.resolve('../src/web/routes/admin/rbac.js'), 'utf8');
|
||||||
const { buildPermissionSections, buildRbacEditViewModel } = require('../src/web/routes/settings/rbac/form-view-model');
|
const { buildPermissionSections, buildRbacEditViewModel } = require('../src/web/routes/settings/rbac/form-view-model');
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ const vm = require('node:vm');
|
|||||||
const slideFormEditorSource = fs.readFileSync(require.resolve('../src/web/public/js/slides/slide-form-editor.js'), 'utf8');
|
const slideFormEditorSource = fs.readFileSync(require.resolve('../src/web/public/js/slides/slide-form-editor.js'), 'utf8');
|
||||||
const slideFormSource = fs.readFileSync(require.resolve('../src/web/public/js/slides/slide-form.js'), 'utf8');
|
const slideFormSource = fs.readFileSync(require.resolve('../src/web/public/js/slides/slide-form.js'), 'utf8');
|
||||||
const slideFormTemplateSource = fs.readFileSync(require.resolve('../src/web/views/signage/slides/form.hbs'), 'utf8');
|
const slideFormTemplateSource = fs.readFileSync(require.resolve('../src/web/views/signage/slides/form.hbs'), 'utf8');
|
||||||
const mediaPickerSource = fs.readFileSync(require.resolve('../src/web/public/js/media-picker.js'), 'utf8');
|
const mediaPickerSource = fs.readFileSync(require.resolve('../src/web/public/js/shared/ui/media-picker.js'), 'utf8');
|
||||||
const slideThumbnailPreviewSource = fs.readFileSync(require.resolve('../src/web/lib/media/slide-thumbnail-preview.js'), 'utf8');
|
const slideThumbnailPreviewSource = fs.readFileSync(require.resolve('../src/web/lib/media/slide-thumbnail-preview.js'), 'utf8');
|
||||||
const slideThumbnailsSource = fs.readFileSync(require.resolve('../src/web/lib/media/slide-thumbnails.js'), 'utf8');
|
const slideThumbnailsSource = fs.readFileSync(require.resolve('../src/web/lib/media/slide-thumbnails.js'), 'utf8');
|
||||||
const slideHtmlRegionSource = fs.readFileSync(require.resolve('../src/web/public/js/regions/type/html.js'), 'utf8');
|
const slideHtmlRegionSource = fs.readFileSync(require.resolve('../src/web/public/js/regions/type/html.js'), 'utf8');
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ const fs = require('node:fs');
|
|||||||
const vm = require('node:vm');
|
const vm = require('node:vm');
|
||||||
|
|
||||||
test('system status shows connected player count in the live feed label', () => {
|
test('system status shows connected player count in the live feed label', () => {
|
||||||
const script = fs.readFileSync(require.resolve('../src/web/public/js/system-status.js'), 'utf8');
|
const script = fs.readFileSync(require.resolve('../src/web/public/js/shared/system-status.js'), 'utf8');
|
||||||
const elements = {
|
const elements = {
|
||||||
'sidebar-status-dot': {
|
'sidebar-status-dot': {
|
||||||
classList: {
|
classList: {
|
||||||
@@ -74,7 +74,7 @@ test('system status shows connected player count in the live feed label', () =>
|
|||||||
});
|
});
|
||||||
|
|
||||||
test('system status shows an explicit idle label when no players are connected', () => {
|
test('system status shows an explicit idle label when no players are connected', () => {
|
||||||
const script = fs.readFileSync(require.resolve('../src/web/public/js/system-status.js'), 'utf8');
|
const script = fs.readFileSync(require.resolve('../src/web/public/js/shared/system-status.js'), 'utf8');
|
||||||
const elements = {
|
const elements = {
|
||||||
'sidebar-status-dot': {
|
'sidebar-status-dot': {
|
||||||
classList: {
|
classList: {
|
||||||
|
|||||||
@@ -284,7 +284,7 @@ test('schema startup runs the 2.19.1 repair on its existing locked connection',
|
|||||||
|
|
||||||
assert.equal(acquisitions, 1);
|
assert.equal(acquisitions, 1);
|
||||||
const commitIndex = connection.queries.findIndex(([sql]) => sql === 'COMMIT');
|
const commitIndex = connection.queries.findIndex(([sql]) => sql === 'COMMIT');
|
||||||
const versionIndex = connection.queries.findIndex(([sql, params]) => sql.startsWith('UPDATE o_app_state') && params[0] === '2.19.1');
|
const versionIndex = connection.queries.findIndex(([sql, params]) => sql.startsWith('UPDATE o_app_state') && params[0] === require('../package.json').version);
|
||||||
assert.ok(commitIndex > 0);
|
assert.ok(commitIndex > 0);
|
||||||
assert.ok(versionIndex > commitIndex);
|
assert.ok(versionIndex > commitIndex);
|
||||||
assert.deepEqual(connection.queries.slice(-2), [
|
assert.deepEqual(connection.queries.slice(-2), [
|
||||||
|
|||||||
@@ -130,7 +130,7 @@ test('pending toast is shown after a refresh and cleared from storage', () => {
|
|||||||
};
|
};
|
||||||
sandbox.window = sandbox;
|
sandbox.window = sandbox;
|
||||||
|
|
||||||
const scriptPath = path.join(__dirname, '..', 'src', 'web', 'public', 'js', 'toast.js');
|
const scriptPath = path.join(__dirname, '..', 'src', 'web', 'public', 'js', 'shared', 'ui', 'toast.js');
|
||||||
const script = fs.readFileSync(scriptPath, 'utf8');
|
const script = fs.readFileSync(scriptPath, 'utf8');
|
||||||
vm.runInNewContext(script, sandbox, { filename: scriptPath });
|
vm.runInNewContext(script, sandbox, { filename: scriptPath });
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ test('client row keys prefer the client name', () => {
|
|||||||
};
|
};
|
||||||
sandbox.window = sandbox;
|
sandbox.window = sandbox;
|
||||||
|
|
||||||
loadScript(path.join(__dirname, '..', 'src', 'web', 'public', 'js', 'web-ui-helpers.js'), sandbox);
|
loadScript(path.join(__dirname, '..', 'src', 'web', 'public', 'js', 'shared', 'web-ui-helpers.js'), sandbox);
|
||||||
|
|
||||||
const helpers = sandbox.window.webUiHelpers;
|
const helpers = sandbox.window.webUiHelpers;
|
||||||
assert.equal(helpers.getClientRowKey({ client_name: 'Conference Left', screen_slug: 'alpha', deviceId: 'device-123', id: 'conn-1', clientId: 'client-1' }), 'conn-1');
|
assert.equal(helpers.getClientRowKey({ client_name: 'Conference Left', screen_slug: 'alpha', deviceId: 'device-123', id: 'conn-1', clientId: 'client-1' }), 'conn-1');
|
||||||
|
|||||||
Reference in new issue
Block a user