feat: register new modal to show version info

This commit is contained in:
Jacob Overgaard
2024-09-11 16:36:31 +02:00
parent b3b576c79a
commit 9aa0e2c585
6 changed files with 86 additions and 12 deletions

View File

@@ -0,0 +1,61 @@
import { UmbSysinfoRepository } from '../repository/sysinfo.repository.js';
import type { UmbServerUpgradeCheck } from '../types.js';
import { customElement, html, state, when } from '@umbraco-cms/backoffice/external/lit';
import { UmbTextStyles } from '@umbraco-cms/backoffice/style';
import { UmbModalBaseElement } from '@umbraco-cms/backoffice/modal';
@customElement('umb-new-version')
export class UmbNewVersionElement extends UmbModalBaseElement {
@state()
private _serverUpgradeCheck: UmbServerUpgradeCheck | null = null;
#sysinfoRepository = new UmbSysinfoRepository(this);
override async connectedCallback() {
super.connectedCallback();
this._serverUpgradeCheck = await this.#sysinfoRepository.serverUpgradeCheck();
}
override render() {
return html`
<uui-dialog>
<uui-dialog-layout headline=${this.localize.term('general_newVersionAvailable')}>
${when(
this._serverUpgradeCheck === null,
() => html`<uui-loader-bar></uui-loader-bar>`,
() => html` <div>${this._serverUpgradeCheck!.comment}</div> `,
)}
<uui-button
@click=${this._submitModal}
slot="actions"
look="secondary"
label=${this.localize.term('general_close')}></uui-button>
${this._serverUpgradeCheck?.url
? html` <uui-button
.href=${this._serverUpgradeCheck.url}
target="_blank"
slot="actions"
look="primary"
color="positive"
label=${this.localize.term('general_readMore')}>
<umb-localize key="general_readMore">Read more</umb-localize>
<umb-icon name="icon-out"></umb-icon>
</uui-button>`
: ''}
</uui-dialog-layout>
</uui-dialog>
`;
}
static override readonly styles = [UmbTextStyles];
}
export default UmbNewVersionElement;
declare global {
interface HTMLElementTagNameMap {
'umb-new-version': UmbNewVersionElement;
}
}

View File

@@ -1,4 +1,3 @@
export * from './components/sysinfo.element.js';
export * from './modals/index.js';
export * from './repository/index.js';
export type * from './types.js';

View File

@@ -1,12 +1,18 @@
import type { ManifestModal, ManifestTypes } from '@umbraco-cms/backoffice/extension-registry';
export const UMB_SYSINFO_MODAL_ALIAS = 'Umb.Modal.Sysinfo';
const modalManifests: Array<ManifestModal> = [
{
type: 'modal',
alias: 'Umb.Sysinfo.Modal',
name: 'Sysinfo Modal',
js: () => import('./components/sysinfo.element.js'),
},
{
type: 'modal',
alias: 'Umb.NewVersion.Modal',
name: 'New Version Modal',
js: () => import('./components/new-version.element.js'),
},
];
const modalManifest: ManifestModal = {
type: 'modal',
alias: UMB_SYSINFO_MODAL_ALIAS,
name: 'Sysinfo Modal',
js: () => import('./components/sysinfo.element.js'),
};
export const manifests: Array<ManifestTypes> = [modalManifest];
export const manifests: Array<ManifestTypes> = [...modalManifests];

View File

@@ -1 +1,2 @@
export * from './new-version-modal.token.js';
export * from './sysinfo-modal.token.js';

View File

@@ -0,0 +1,8 @@
import { UmbModalToken } from '@umbraco-cms/backoffice/modal';
export const UMB_NEWVERSION_MODAL = new UmbModalToken('Umb.NewVersion.Modal', {
modal: {
type: 'dialog',
size: 'medium',
},
});

View File

@@ -1,7 +1,6 @@
import { UmbModalToken } from '@umbraco-cms/backoffice/modal';
import { UMB_SYSINFO_MODAL_ALIAS } from '../manifests.js';
export const UMB_SYSINFO_MODAL = new UmbModalToken(UMB_SYSINFO_MODAL_ALIAS, {
export const UMB_SYSINFO_MODAL = new UmbModalToken('Umb.Sysinfo.Modal', {
modal: {
type: 'dialog',
size: 'medium',