mirror of
https://github.com/go-gitea/gitea.git
synced 2026-08-05 10:26:15 +02:00
fixup! feat: implement instance-wide informational banner
This commit is contained in:
@@ -21,7 +21,6 @@ function createPreviewDOM() {
|
||||
<option value="warning">Warning</option>
|
||||
<option value="danger">Danger</option>
|
||||
</select>
|
||||
<input type="checkbox" name="show_icon" value="true" checked>
|
||||
</form>
|
||||
<div id="instance-notice-preview" class="ui info message">
|
||||
<div id="instance-notice-preview-icon"></div>
|
||||
@@ -31,7 +30,7 @@ function createPreviewDOM() {
|
||||
<span data-level="info"><svg data-icon="info"></svg></span>
|
||||
<span data-level="success"><svg data-icon="success"></svg></span>
|
||||
<span data-level="warning"><svg data-icon="warning"></svg></span>
|
||||
<span data-level="danger"><svg data-icon="danger"></svg></span>
|
||||
<span data-level="danger"><svg data-icon="warning"></svg></span>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
@@ -69,22 +68,17 @@ describe('Admin Instance Notice Preview', () => {
|
||||
expect(previewContent.innerHTML).toContain('Rendered message');
|
||||
});
|
||||
|
||||
test('updates preview class and icon when level and icon toggle change', () => {
|
||||
test('updates preview class and icon when level changes', () => {
|
||||
initAdminConfigs();
|
||||
|
||||
const levelSelect = document.querySelector<HTMLSelectElement>('select[name="level"]')!;
|
||||
const showIcon = document.querySelector<HTMLInputElement>('input[name="show_icon"]')!;
|
||||
const preview = document.querySelector<HTMLDivElement>('#instance-notice-preview')!;
|
||||
const previewIcon = document.querySelector<HTMLDivElement>('#instance-notice-preview-icon')!;
|
||||
|
||||
levelSelect.value = 'danger';
|
||||
levelSelect.dispatchEvent(new Event('change'));
|
||||
expect(preview.classList.contains('negative')).toBe(true);
|
||||
expect(previewIcon.innerHTML).toContain('data-icon="danger"');
|
||||
|
||||
showIcon.checked = false;
|
||||
showIcon.dispatchEvent(new Event('change'));
|
||||
expect(previewIcon.classList.contains('tw-hidden')).toBe(true);
|
||||
expect(previewIcon.innerHTML).toContain('data-icon="warning"');
|
||||
});
|
||||
|
||||
test('queues a second render while first request is in flight and re-renders with latest text', async () => {
|
||||
|
||||
@@ -10,12 +10,11 @@ function initInstanceNoticePreview(elAdminConfig: HTMLDivElement): void {
|
||||
|
||||
const inputMessage = form.querySelector<HTMLTextAreaElement>('textarea[name="message"]');
|
||||
const selectLevel = form.querySelector<HTMLSelectElement>('select[name="level"]');
|
||||
const inputShowIcon = form.querySelector<HTMLInputElement>('input[name="show_icon"]');
|
||||
const preview = elAdminConfig.querySelector<HTMLDivElement>('#instance-notice-preview');
|
||||
const previewIcon = elAdminConfig.querySelector<HTMLDivElement>('#instance-notice-preview-icon');
|
||||
const previewContent = elAdminConfig.querySelector<HTMLDivElement>('#instance-notice-preview-content');
|
||||
const iconContainer = elAdminConfig.querySelector<HTMLDivElement>('#instance-notice-preview-icons');
|
||||
if (!inputMessage || !selectLevel || !inputShowIcon || !preview || !previewIcon || !previewContent || !iconContainer) return;
|
||||
if (!inputMessage || !selectLevel || !preview || !previewIcon || !previewContent || !iconContainer) return;
|
||||
|
||||
const iconHTMLByLevel = new Map<string, string>();
|
||||
for (const el of iconContainer.querySelectorAll<HTMLElement>('[data-level]')) {
|
||||
@@ -33,7 +32,6 @@ function initInstanceNoticePreview(elAdminConfig: HTMLDivElement): void {
|
||||
preview.classList.remove('info', 'positive', 'warning', 'negative');
|
||||
preview.classList.add(classByLevel[selectLevel.value] || 'info');
|
||||
previewIcon.innerHTML = iconHTMLByLevel.get(selectLevel.value) || iconHTMLByLevel.get('info') || '';
|
||||
previewIcon.classList.toggle('tw-hidden', !inputShowIcon.checked);
|
||||
};
|
||||
|
||||
let renderRequesting = false;
|
||||
@@ -68,7 +66,6 @@ function initInstanceNoticePreview(elAdminConfig: HTMLDivElement): void {
|
||||
renderPreviewMarkdown();
|
||||
});
|
||||
selectLevel.addEventListener('change', updateStyle);
|
||||
inputShowIcon.addEventListener('change', updateStyle);
|
||||
|
||||
updateStyle();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user