Skip to content

Commit 2992026

Browse files
leekelleheriOvergaard
authored andcommitted
Adds previewOption extension-type
1 parent d45f62b commit 2992026

File tree

9 files changed

+68
-0
lines changed

9 files changed

+68
-0
lines changed

src/Umbraco.Web.UI.Client/src/packages/documents/documents/manifests.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { manifests as itemManifests } from './item/manifests.js';
77
import { manifests as menuManifests } from './menu/manifests.js';
88
import { manifests as modalManifests } from './modals/manifests.js';
99
import { manifests as pickerManifests } from './picker/manifests.js';
10+
import { manifests as previewManifests } from './preview/manifests.js';
1011
import { manifests as propertyEditorManifests } from './property-editors/manifests.js';
1112
import { manifests as publishingManifests } from './publishing/manifests.js';
1213
import { manifests as recycleBinManifests } from './recycle-bin/manifests.js';
@@ -31,6 +32,7 @@ export const manifests: Array<UmbExtensionManifest | UmbExtensionManifestKind> =
3132
...menuManifests,
3233
...modalManifests,
3334
...pickerManifests,
35+
...previewManifests,
3436
...propertyEditorManifests,
3537
...publishingManifests,
3638
...recycleBinManifests,
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { manifests as previewOptionManifests } from './preview-option/manifests.js';
2+
import type { UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
3+
export const manifests: Array<UmbExtensionManifest | UmbExtensionManifestKind> = [
4+
...previewOptionManifests,
5+
];
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './preview-option-action-base.controller.js';
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import type { UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
2+
export const manifests: Array<UmbExtensionManifest | UmbExtensionManifestKind> = [
3+
];
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import { UmbActionBase } from '@umbraco-cms/backoffice/action';
2+
import type { UmbAction } from '@umbraco-cms/backoffice/action';
3+
4+
/**
5+
* Base class for a preview option action.
6+
* @abstract
7+
* @class UmbPreviewOptionActionBase
8+
* @augments {UmbActionBase}
9+
*/
10+
export abstract class UmbPreviewOptionActionBase<ArgsMetaType = never> extends UmbActionBase<UmbAction<ArgsMetaType>> {
11+
/**
12+
* By specifying the `execute` method, the action will act as a button.
13+
* @abstract
14+
* @returns {Promise<void>}
15+
*/
16+
public execute(): Promise<void> {
17+
return Promise.resolve();
18+
}
19+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import type { UmbPreviewOptionActionBase } from './preview-option-action-base.controller.js';
2+
import type { ManifestElementAndApi, ManifestWithDynamicConditions } from '@umbraco-cms/backoffice/extension-api';
3+
import type { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api';
4+
import type { UUIInterfaceLook, UUIInterfaceColor } from '@umbraco-cms/backoffice/external/uui';
5+
6+
export interface ManifestPreviewOption<MetaType extends MetaPreviewOption = MetaPreviewOption>
7+
extends ManifestElementAndApi<UmbControllerHostElement, UmbPreviewOptionActionBase<MetaType>>,
8+
ManifestWithDynamicConditions<UmbExtensionConditionConfig> {
9+
type: 'previewOption';
10+
meta: MetaPreviewOption;
11+
}
12+
13+
export interface MetaPreviewOption {
14+
icon?: string;
15+
label?: string;
16+
look?: UUIInterfaceLook;
17+
color?: UUIInterfaceColor;
18+
}
19+
20+
export interface ManifestPreviewOptionDefaultKind extends ManifestPreviewOption {
21+
type: 'previewOption';
22+
kind: 'default';
23+
}
24+
25+
export interface ManifestPreviewOptionUrlProviderKind extends ManifestPreviewOption {
26+
type: 'previewOption';
27+
kind: 'urlProvider';
28+
providerAlias: string;
29+
}
30+
31+
declare global {
32+
interface UmbExtensionManifestMap {
33+
umbPreviewOption: ManifestPreviewOption | ManifestPreviewOptionDefaultKind | ManifestPreviewOptionUrlProviderKind;
34+
}
35+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export type * from './preview-option.extension.js';
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export type * from './preview-option/types.js';

src/Umbraco.Web.UI.Client/src/packages/documents/documents/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ export type * from './collection/types.js';
1414
export type * from './entity.js';
1515
export type * from './item/types.js';
1616
export type * from './modals/types.js';
17+
export type * from './preview/types.js';
1718
export type * from './publishing/types.js';
1819
export type * from './recycle-bin/types.js';
1920
export type * from './tree/types.js';

0 commit comments

Comments
 (0)