umbracoprereleases - @umbraco-cms/backoffice 17.6.3


@umbraco-cms/backoffice

This package contains the types for the Umbraco Backoffice.

Preview

A live preview of the latest backoffice build from the main branch is available at:

backofficepreview.umbraco.com

This preview is automatically deployed via GitHub Actions whenever changes are pushed to main or version branches.

Installation

npm install -D @umbraco-cms/backoffice

Usage

Vanilla JavaScript

Create an umbraco-package.json file in the root of your package.

{
	"name": "My.Package",
	"version": "0.1.0",
	"extensions": [
		{
			"type": "dashboard",
			"alias": "my.custom.dashboard",
			"name": "My Dashboard",
			"js": "/App_Plugins/MyPackage/dashboard.js",
			"weight": -1,
			"meta": {
				"label": "My Dashboard",
				"pathname": "my-dashboard"
			},
			"conditions": [
				{
					"alias": "Umb.Condition.SectionAlias",
					"match": "Umb.Section.Content"
				}
			]
		}
	]
}

Then create a dashboard.js file the same folder.

import { UmbElementMixin } from '@umbraco-cms/backoffice/element-api';
import { UMB_NOTIFICATION_CONTEXT } from '@umbraco-cms/backoffice/notification';

const template = document.createElement('template');
template.innerHTML = `
  <style>
    :host {
      padding: 20px;
      display: block;
      box-sizing: border-box;
    }
  </style>

  <uui-box>
    <h1>Welcome to my dashboard</h1>
    <p>Example of vanilla JS code</p>

    <uui-button label="Click me" id="clickMe" look="secondary"></uui-button>
  </uui-box>
`;

export default class MyDashboardElement extends UmbElementMixin(HTMLElement) {
	/** @type {import('@umbraco-cms/backoffice/notification').UmbNotificationContext} */
	#notificationContext;

	constructor() {
		super();
		this.attachShadow({ mode: 'open' });
		this.shadowRoot.appendChild(template.content.cloneNode(true));

		this.shadowRoot.getElementById('clickMe').addEventListener('click', this.onClick.bind(this));

		this.consumeContext(UMB_NOTIFICATION_CONTEXT, (_instance) => {
			this.#notificationContext = _instance;
		});
	}

	onClick = () => {
		this.#notificationContext?.peek('positive', { data: { headline: 'Hello' } });
	};
}

customElements.define('my-custom-dashboard', MyDashboardElement);

TypeScript with Lit

First install Lit and Vite. This command will create a new folder called my-package which will have the Vite tooling and Lit for WebComponent development setup.

npm create vite@latest -- --template lit-ts my-package

Go to the new folder and install the backoffice package.

cd my-package
npm install -D @umbraco-cms/backoffice

Then go to the element located in src/my-element.ts and replace it with the following code.

// src/my-element.ts
import { LitElement, html, customElement } from '@umbraco-cms/backoffice/external/lit';
import { UmbElementMixin } from '@umbraco-cms/backoffice/element-api';
import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT } from '@umbraco-cms/backoffice/notification';

@customElement('my-element')
export default class MyElement extends UmbElementMixin(LitElement) {
	private _notificationContext?: UmbNotificationContext;

	constructor() {
		super();
		this.consumeContext(UMB_NOTIFICATION_CONTEXT, (_instance) => {
			this._notificationContext = _instance;
		});
	}

	onClick() {
		this._notificationContext?.peek('positive', { data: { message: '#h5yr' } });
	}

	override render() {
		return html`
			<uui-box headline="Welcome">
				<p>A TypeScript Lit Dashboard</p>
				<uui-button look="primary" label="Click me" @click=${() => this.onClick()}></uui-button>
			</uui-box>
		`;
	}
}

declare global {
	interface HTMLElementTagNameMap {
		'my-element': MyElement;
	}
}

Finally add an umbraco-package.json file in the root of your package folder my-package.

{
	"name": "My.Package",
	"version": "0.1.0",
	"extensions": [
		{
			"type": "dashboard",
			"alias": "my.custom.dashboard",
			"name": "My Dashboard",
			"js": "/App_Plugins/MyPackage/dist/my-package.js",
			"weight": -1,
			"meta": {
				"label": "My Dashboard",
				"pathname": "my-dashboard"
			},
			"conditions": [
				{
					"alias": "Umb.Condition.SectionAlias",
					"match": "Umb.Section.Content"
				}
			]
		}
	]
}

Owners

umbraco

Authors

Umbraco A/S (backoffice@umbraco.com)

License

MIT

Keywords

Umbraco, CMS, Backoffice, Content, Management, System, Web, Components, Extensions

Info

375 total downloads
26 downloads for version 17.6.3
Download (4.36 MB)

Package history

Version Size Last updated Downloads Mirrored?
19.0.0-beta1 4.82 MB Thu, 22 Oct 2026 20:01:32 GMT 0
18.4.0-rc 4.75 MB Fri, 23 Oct 2026 07:02:10 GMT 0
18.3.0-rc2 4.72 MB Thu, 22 Oct 2026 18:50:30 GMT 0
18.2.2 4.59 MB Tue, 13 Oct 2026 09:41:34 GMT 0
18.2.0-rc 4.59 MB Wed, 26 Aug 2026 18:52:31 GMT 1
18.1.2 4.46 MB Tue, 18 Aug 2026 08:22:39 GMT 25
18.1.0-rc2 4.46 MB Tue, 04 Aug 2026 13:49:35 GMT 36
18.0.2 4.3 MB Tue, 07 Jul 2026 03:59:19 GMT 28
18.0.0-rc4 4.3 MB Fri, 19 Jun 2026 17:33:35 GMT 21
17.10.0-rc 4.58 MB Fri, 23 Oct 2026 07:00:33 GMT 0
17.9.0-rc 4.58 MB Thu, 22 Oct 2026 10:24:18 GMT 0
17.8.0-rc2 4.55 MB Thu, 22 Oct 2026 18:50:41 GMT 0
17.7.2 4.46 MB Tue, 13 Oct 2026 09:14:08 GMT 0
17.7.0-rc 4.46 MB Thu, 03 Sep 2026 13:45:45 GMT 1
17.6.3 4.36 MB Tue, 18 Aug 2026 08:14:14 GMT 26
17.6.0-rc2 4.35 MB Tue, 04 Aug 2026 09:47:40 GMT 2
17.5.3 4.22 MB Tue, 07 Jul 2026 04:02:50 GMT 87
17.5.0-rc3 4.22 MB Tue, 23 Jun 2026 10:37:24 GMT 2
17.4.2 4.15 MB Wed, 20 May 2026 15:57:15 GMT 51
17.4.0-rc3 4.15 MB Fri, 08 May 2026 10:00:35 GMT 3
17.3.6 4.05 MB Wed, 06 May 2026 11:23:33 GMT 3
17.3.0-rc3 4.05 MB Tue, 31 Mar 2026 15:31:31 GMT 3
17.2.2 3.95 MB Tue, 10 Mar 2026 04:44:41 GMT 18
17.2.0-rc2 3.95 MB Wed, 18 Feb 2026 14:39:24 GMT 3
17.1.0 3.62 MB Wed, 07 Jan 2026 15:45:25 GMT 59
16.5.1 3.5 MB Tue, 10 Mar 2026 04:51:27 GMT 6