@umbraco-cms/backoffice 1.0.0-next.4e56c5c5 → 1.0.0-next.58b29eac

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/backend-api.d.ts CHANGED
@@ -488,11 +488,11 @@ type DataTypeReferenceResponseModel = {
488
488
  properties?: Array<DataTypePropertyReferenceModel>;
489
489
  };
490
490
 
491
- type DataTypeResponseModel = (DataTypeModelBaseModel & {
491
+ type DataTypeResponseModel = DataTypeModelBaseModel & {
492
492
  $type: string;
493
493
  id?: string;
494
494
  parentId?: string | null;
495
- });
495
+ };
496
496
 
497
497
  type DictionaryItemItemResponseModel = ItemResponseModelBaseModel;
498
498
 
@@ -1067,13 +1067,27 @@
1067
1067
  ]
1068
1068
  },
1069
1069
  {
1070
- "name": "umb-create-data-type-modal",
1071
- "path": "./src/backoffice/settings/data-types/entity-actions/create/modal/create-data-type-modal.element.ts",
1070
+ "name": "umb-data-type-create-options-modal",
1071
+ "path": "./src/backoffice/settings/data-types/entity-actions/create/modal/data-type-create-options-modal.element.ts",
1072
+ "attributes": [
1073
+ {
1074
+ "name": "data",
1075
+ "type": "UmbDataTypeCreateOptionsModalData | undefined"
1076
+ }
1077
+ ],
1072
1078
  "properties": [
1073
1079
  {
1074
1080
  "name": "styles",
1075
1081
  "type": "CSSResult[]",
1076
1082
  "default": "[\"UUITextStyles\"]"
1083
+ },
1084
+ {
1085
+ "name": "modalHandler"
1086
+ },
1087
+ {
1088
+ "name": "data",
1089
+ "attribute": "data",
1090
+ "type": "UmbDataTypeCreateOptionsModalData | undefined"
1077
1091
  }
1078
1092
  ]
1079
1093
  },
@@ -1,6 +1,7 @@
1
1
  import { Observable } from 'rxjs';
2
2
  import { ManifestTypes, ManifestKind, ManifestTypeMap, ManifestBase, SpecificManifestTypeOrManifestBase, ManifestElement, ManifestElementWithElementName, ManifestClass } from './extensions-registry';
3
3
  import { UmbContextToken } from './context-api';
4
+ import { PageComponent } from './router';
4
5
  import { UmbControllerHostElement } from './controller';
5
6
 
6
7
  declare class UmbExtensionRegistry {
@@ -22,7 +23,7 @@ declare class UmbExtensionRegistry {
22
23
  }
23
24
  declare const UMB_EXTENSION_REGISTRY_TOKEN: UmbContextToken<UmbExtensionRegistry>;
24
25
 
25
- declare function createExtensionElement(manifest: ManifestElement): Promise<HTMLElement | undefined>;
26
+ declare function createExtensionElement(manifest: ManifestElement): Promise<PageComponent>;
26
27
 
27
28
  declare function hasDefaultExport<ConstructorType>(object: unknown): object is {
28
29
  default: ConstructorType;
package/modal.d.ts CHANGED
@@ -6,6 +6,7 @@ import { LitElement, TemplateResult } from 'lit';
6
6
  import { UUIModalDialogElement, UUIModalSidebarElement, UUIModalSidebarSize } from '@umbraco-ui/uui';
7
7
  import { UmbControllerHostElement, UmbControllerInterface } from './controller';
8
8
  import { UmbContextToken } from './context-api';
9
+ import { Params } from './router';
9
10
  import { UmbModalToken as UmbModalToken$1, UmbModalConfig as UmbModalConfig$1, UmbPickerModalData as UmbPickerModalData$1 } from './modal';
10
11
  import { LanguageResponseModel, FolderReponseModel } from './backend-api';
11
12
  import { UserDetails } from './models';
@@ -126,316 +127,6 @@ declare class UmbModalContext {
126
127
  }
127
128
  declare const UMB_MODAL_CONTEXT_TOKEN: UmbContextToken<UmbModalContext>;
128
129
 
129
- interface IRouterSlot<D = any, P = any> extends HTMLElement {
130
- readonly route: IRoute<D> | null;
131
- readonly isRoot: boolean;
132
- readonly fragments: IPathFragments | null;
133
- readonly params: Params | null;
134
- readonly match: IRouteMatch<D> | null;
135
- routes: IRoute<D>[];
136
- add: ((routes: IRoute<D>[], navigate?: boolean) => void);
137
- clear: (() => void);
138
- render: (() => Promise<void>);
139
- constructAbsolutePath: ((path: PathFragment) => string);
140
- parent: IRouterSlot<P> | null | undefined;
141
- queryParentRouterSlot: (() => IRouterSlot<P> | null);
142
- }
143
- type IRoutingInfo<D = any, P = any> = {
144
- slot: IRouterSlot<D, P>;
145
- match: IRouteMatch<D>;
146
- };
147
- type CustomResolver<D = any, P = any> = ((info: IRoutingInfo<D>) => boolean | void | Promise<boolean> | Promise<void>);
148
- type Guard<D = any, P = any> = ((info: IRoutingInfo<D, P>) => boolean | Promise<boolean>);
149
- type PageComponent = HTMLElement;
150
- type ModuleResolver = Promise<{
151
- default: any;
152
- }>;
153
- type Class<T extends PageComponent = PageComponent> = {
154
- new (...args: any[]): T;
155
- };
156
- type Setup<D = any> = ((component: PageComponent, info: IRoutingInfo<D>) => void);
157
- type PathMatch = "prefix" | "suffix" | "full" | "fuzzy";
158
- /**
159
- * The base route interface.
160
- * D = the data type of the data
161
- */
162
- interface IRouteBase<D = any> {
163
- path: PathFragment;
164
- data?: D;
165
- guards?: Guard[];
166
- pathMatch?: PathMatch;
167
- }
168
- /**
169
- * Route type used for redirection.
170
- */
171
- interface IRedirectRoute<D = any> extends IRouteBase<D> {
172
- redirectTo: string;
173
- preserveQuery?: boolean;
174
- }
175
- /**
176
- * Route type used to resolve and stamp components.
177
- */
178
- interface IComponentRoute<D = any> extends IRouteBase<D> {
179
- component: Class | ModuleResolver | PageComponent | (() => Class) | (() => PageComponent) | (() => ModuleResolver);
180
- setup?: Setup;
181
- }
182
- /**
183
- * Route type used to take control of how the route should resolve.
184
- */
185
- interface IResolverRoute<D = any> extends IRouteBase<D> {
186
- resolve: CustomResolver;
187
- }
188
- type IRoute<D = any> = IRedirectRoute<D> | IComponentRoute<D> | IResolverRoute<D>;
189
- type PathFragment = string;
190
- type IPathFragments = {
191
- consumed: PathFragment;
192
- rest: PathFragment;
193
- };
194
- interface IRouteMatch<D = any> {
195
- route: IRoute<D>;
196
- params: Params;
197
- fragments: IPathFragments;
198
- match: RegExpMatchArray;
199
- }
200
- type PushStateEvent = CustomEvent<null>;
201
- type ReplaceStateEvent = CustomEvent<null>;
202
- type ChangeStateEvent = CustomEvent<null>;
203
- type WillChangeStateEvent = CustomEvent<{
204
- url?: string | null;
205
- eventName: GlobalRouterEvent;
206
- }>;
207
- type NavigationStartEvent<D = any> = CustomEvent<IRoutingInfo<D>>;
208
- type NavigationSuccessEvent<D = any> = CustomEvent<IRoutingInfo<D>>;
209
- type NavigationCancelEvent<D = any> = CustomEvent<IRoutingInfo<D>>;
210
- type NavigationErrorEvent<D = any> = CustomEvent<IRoutingInfo<D>>;
211
- type NavigationEndEvent<D = any> = CustomEvent<IRoutingInfo<D>>;
212
- type Params = {
213
- [key: string]: string;
214
- };
215
- /**
216
- * History related events.
217
- */
218
- type GlobalRouterEvent = "pushstate" | "replacestate" | "popstate" | "changestate" | "willchangestate" | "navigationstart" | "navigationcancel" | "navigationerror" | "navigationsuccess" | "navigationend";
219
- declare global {
220
- interface GlobalEventHandlersEventMap {
221
- "pushstate": PushStateEvent;
222
- "replacestate": ReplaceStateEvent;
223
- "popstate": PopStateEvent;
224
- "changestate": ChangeStateEvent;
225
- "navigationstart": NavigationStartEvent;
226
- "navigationend": NavigationEndEvent;
227
- "navigationsuccess": NavigationSuccessEvent;
228
- "navigationcancel": NavigationCancelEvent;
229
- "navigationerror": NavigationErrorEvent;
230
- "willchangestate": WillChangeStateEvent;
231
- }
232
- }
233
-
234
- /**
235
- * Slot for a node in the router tree.
236
- * @slot - Default content.
237
- * @event changestate - Dispatched when the router slot state changes.
238
- */
239
- declare class RouterSlot<D = any, P = any> extends HTMLElement implements IRouterSlot<D, P> {
240
- /**
241
- * Listeners on the router.
242
- */
243
- private listeners;
244
- /**
245
- * The available routes.
246
- */
247
- private _routes;
248
- get routes(): IRoute<D>[];
249
- set routes(routes: IRoute<D>[]);
250
- /**
251
- * The parent router.
252
- * Is REQUIRED if this router is a child.
253
- * When set, the relevant listeners are added or teared down because they depend on the parent.
254
- */
255
- _parent: IRouterSlot<P> | null | undefined;
256
- get parent(): IRouterSlot<P> | null | undefined;
257
- set parent(router: IRouterSlot<P> | null | undefined);
258
- /**
259
- * Whether the router is a root router.
260
- */
261
- get isRoot(): boolean;
262
- /**
263
- * The current route match.
264
- */
265
- private _routeMatch;
266
- get match(): IRouteMatch<D> | null;
267
- /**
268
- * The current route of the match.
269
- */
270
- get route(): IRoute<D> | null;
271
- /**
272
- * The current path fragment of the match
273
- */
274
- get fragments(): IPathFragments | null;
275
- /**
276
- * The current params of the match.
277
- */
278
- get params(): Params | null;
279
- /**
280
- * Hooks up the element.
281
- */
282
- constructor();
283
- /**
284
- * Query the parent router slot when the router slot is connected.
285
- */
286
- connectedCallback(): void;
287
- /**
288
- * Tears down the element.
289
- */
290
- disconnectedCallback(): void;
291
- /**
292
- * Queries the parent router.
293
- */
294
- queryParentRouterSlot(): IRouterSlot<P> | null;
295
- /**
296
- * Returns an absolute path relative to the router slot.
297
- * @param path
298
- */
299
- constructAbsolutePath(path: PathFragment): string;
300
- /**
301
- * Adds routes to the router.
302
- * Navigates automatically if the router slot is the root and is connected.
303
- * @param routes
304
- * @param navigate
305
- */
306
- add(routes: IRoute<D>[], navigate?: boolean): void;
307
- /**
308
- * Removes all routes.
309
- */
310
- clear(): void;
311
- /**
312
- * Each time the path changes, load the new path.
313
- */
314
- render(): Promise<void>;
315
- /**
316
- * Attaches listeners, either globally or on the parent router.
317
- */
318
- protected attachListeners(): void;
319
- /**
320
- * Clears the children in the DOM.
321
- */
322
- protected clearChildren(): void;
323
- /**
324
- * Detaches the listeners.
325
- */
326
- protected detachListeners(): void;
327
- /**
328
- * Notify the listeners.
329
- */
330
- notifyChildRouters(info: any): void;
331
- /**
332
- * Loads a new path based on the routes.
333
- * Returns true if a navigation was made to a new page.
334
- */
335
- protected renderPath(path: string | PathFragment): Promise<boolean>;
336
- }
337
- declare global {
338
- interface HTMLElementTagNameMap {
339
- "router-slot": RouterSlot;
340
- }
341
- }
342
-
343
- /**
344
- * Router link.
345
- * @slot - Default content.
346
- */
347
- declare class RouterLink extends HTMLElement {
348
- private listeners;
349
- private _context;
350
- static get observedAttributes(): string[];
351
- /**
352
- * The path of the navigation.
353
- * @attr
354
- */
355
- set path(value: string | PathFragment);
356
- get path(): string | PathFragment;
357
- /**
358
- * Whether the element is disabled or not.
359
- * @attr
360
- */
361
- get disabled(): boolean;
362
- set disabled(value: boolean);
363
- /**
364
- * Whether the element is active or not.
365
- * @attr
366
- */
367
- get active(): boolean;
368
- set active(value: boolean);
369
- /**
370
- * Whether the focus should be delegated.
371
- * @attr
372
- */
373
- get delegateFocus(): boolean;
374
- set delegateFocus(value: boolean);
375
- /**
376
- * Whether the query should be preserved or not.
377
- * @attr
378
- */
379
- get preserveQuery(): boolean;
380
- set preserveQuery(value: boolean);
381
- /**
382
- * The current router slot context.
383
- */
384
- get context(): IRouterSlot | null;
385
- set context(value: IRouterSlot | null);
386
- /**
387
- * Returns the absolute path.
388
- */
389
- get absolutePath(): string;
390
- constructor();
391
- /**
392
- * Hooks up the element.
393
- */
394
- connectedCallback(): void;
395
- /**
396
- * Tear down listeners.
397
- */
398
- disconnectedCallback(): void;
399
- /**
400
- * Reacts to attribute changed callback.
401
- * @param name
402
- * @param oldValue
403
- * @param newValue
404
- */
405
- attributeChangedCallback(name: string, oldValue: unknown, newValue: unknown): void;
406
- private updateTabIndex;
407
- /**
408
- * Returns the absolute path constructed relative to the context.
409
- * If no router parent was found the path property is the absolute one.
410
- */
411
- constructAbsolutePath(path: string): string;
412
- /**
413
- * Updates whether the route is active or not.
414
- */
415
- protected updateActive(): void;
416
- /**
417
- * Navigates to the specified path.
418
- */
419
- navigate(path: string, e?: Event): void;
420
- }
421
- declare global {
422
- interface HTMLElementTagNameMap {
423
- "router-link": RouterLink;
424
- }
425
- }
426
-
427
- declare global {
428
- interface History {
429
- "native": {
430
- "back": ((distance?: any) => void);
431
- "forward": ((distance?: any) => void);
432
- "go": ((delta?: any) => void);
433
- "pushState": ((data: any, title?: string, url?: string | null) => void);
434
- "replaceState": ((data: any, title?: string, url?: string | null) => void);
435
- };
436
- }
437
- }
438
-
439
130
  type UmbModalRouteBuilder = (params: {
440
131
  [key: string]: string | number;
441
132
  }) => string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@umbraco-cms/backoffice",
3
- "version": "1.0.0-next.4e56c5c5",
3
+ "version": "1.0.0-next.58b29eac",
4
4
  "license": "MIT",
5
5
  "keywords": [
6
6
  "umbraco",
package/repository.d.ts CHANGED
@@ -8,7 +8,7 @@ interface DataSourceResponse<T = undefined> {
8
8
  }
9
9
 
10
10
  interface UmbDataSource<CreateRequestType, UpdateRequestType, ResponseType> {
11
- createScaffold(parentId: string | null): Promise<DataSourceResponse$1<ResponseType>>;
11
+ createScaffold(parentId: string | null): Promise<DataSourceResponse$1<CreateRequestType>>;
12
12
  get(unique: string): Promise<DataSourceResponse$1<ResponseType>>;
13
13
  insert(data: CreateRequestType): Promise<any>;
14
14
  update(unique: string, data: UpdateRequestType): Promise<DataSourceResponse$1<ResponseType>>;
@@ -29,24 +29,18 @@ interface UmbTreeDataSource<PagedItemsType = any, ItemsType = any> {
29
29
  getItems(unique: Array<string>): Promise<DataSourceResponse$1<Array<ItemsType>>>;
30
30
  }
31
31
 
32
- interface UmbDetailRepository<DetailType> {
33
- createScaffold(parentId: string | null): Promise<{
34
- data?: DetailType;
35
- error?: ProblemDetailsModel;
36
- }>;
37
- requestById(id: string): Promise<{
38
- data?: DetailType;
39
- error?: ProblemDetailsModel;
40
- }>;
41
- create(data: DetailType): Promise<{
42
- error?: ProblemDetailsModel;
43
- }>;
44
- save(data: DetailType): Promise<{
45
- error?: ProblemDetailsModel;
46
- }>;
47
- delete(id: string): Promise<{
48
- error?: ProblemDetailsModel;
49
- }>;
32
+ interface UmbRepositoryErrorResponse {
33
+ error?: ProblemDetailsModel;
34
+ }
35
+ interface UmbRepositoryResponse<T> extends UmbRepositoryErrorResponse {
36
+ data?: T;
37
+ }
38
+ interface UmbDetailRepository<CreateRequestType = any, UpdateRequestType = any, ResponseType = any> {
39
+ createScaffold(parentId: string | null): Promise<UmbRepositoryResponse<CreateRequestType>>;
40
+ requestById(id: string): Promise<UmbRepositoryResponse<ResponseType>>;
41
+ create(data: CreateRequestType): Promise<UmbRepositoryErrorResponse>;
42
+ save(id: string, data: UpdateRequestType): Promise<UmbRepositoryErrorResponse>;
43
+ delete(id: string): Promise<UmbRepositoryErrorResponse>;
50
44
  }
51
45
 
52
46
  interface UmbPagedData<T> {
@@ -96,4 +90,4 @@ interface UmbFolderRepository {
96
90
  }>;
97
91
  }
98
92
 
99
- export { DataSourceResponse, UmbDataSource, UmbDetailRepository, UmbFolderDataSource, UmbFolderRepository, UmbPagedData, UmbTreeDataSource, UmbTreeRepository };
93
+ export { DataSourceResponse, UmbDataSource, UmbDetailRepository, UmbFolderDataSource, UmbFolderRepository, UmbPagedData, UmbRepositoryErrorResponse, UmbRepositoryResponse, UmbTreeDataSource, UmbTreeRepository };
package/router.d.ts CHANGED
@@ -2,24 +2,6 @@ import { UmbContextToken } from './context-api';
2
2
  import { UmbControllerHostElement } from './controller';
3
3
  import { UmbModalRouteRegistration } from './modal';
4
4
 
5
- interface UmbRouteLocation {
6
- name?: string;
7
- params: {
8
- [key: string]: string;
9
- };
10
- }
11
-
12
- declare class UmbRouteContext {
13
- #private;
14
- private _onGotModals;
15
- constructor(host: UmbControllerHostElement, _onGotModals: (contextRoutes: any) => void);
16
- registerModal(registration: UmbModalRouteRegistration): UmbModalRouteRegistration<object, any>;
17
- unregisterModal(registrationToken: ReturnType<typeof this$1.registerModal>): void;
18
- _internal_routerGotBasePath(routerBasePath: string): void;
19
- _internal_modalRouterChanged(activeModalPath: string | undefined): void;
20
- }
21
- declare const UMB_ROUTE_CONTEXT_TOKEN: UmbContextToken<UmbRouteContext>;
22
-
23
5
  interface IRouterSlot<D = any, P = any> extends HTMLElement {
24
6
  readonly route: IRoute<D> | null;
25
7
  readonly isRoot: boolean;
@@ -40,14 +22,21 @@ type IRoutingInfo<D = any, P = any> = {
40
22
  };
41
23
  type CustomResolver<D = any, P = any> = ((info: IRoutingInfo<D>) => boolean | void | Promise<boolean> | Promise<void>);
42
24
  type Guard<D = any, P = any> = ((info: IRoutingInfo<D, P>) => boolean | Promise<boolean>);
43
- type PageComponent = HTMLElement;
25
+ type Cancel = (() => boolean);
26
+ type PageComponent = HTMLElement | undefined;
44
27
  type ModuleResolver = Promise<{
45
28
  default: any;
46
29
  }>;
47
30
  type Class<T extends PageComponent = PageComponent> = {
48
31
  new (...args: any[]): T;
49
32
  };
33
+ type Component = Class | ModuleResolver | PageComponent | (() => Class) | (() => PromiseLike<Class>) | (() => PageComponent) | (() => PromiseLike<PageComponent>) | (() => ModuleResolver) | (() => PromiseLike<ModuleResolver>);
50
34
  type Setup<D = any> = ((component: PageComponent, info: IRoutingInfo<D>) => void);
35
+ type RouterTree<D = any, P = any> = {
36
+ slot: IRouterSlot<D, P>;
37
+ } & {
38
+ child?: RouterTree;
39
+ } | null | undefined;
51
40
  type PathMatch = "prefix" | "suffix" | "full" | "fuzzy";
52
41
  /**
53
42
  * The base route interface.
@@ -70,7 +59,7 @@ interface IRedirectRoute<D = any> extends IRouteBase<D> {
70
59
  * Route type used to resolve and stamp components.
71
60
  */
72
61
  interface IComponentRoute<D = any> extends IRouteBase<D> {
73
- component: Class | ModuleResolver | PageComponent | (() => Class) | (() => PageComponent) | (() => ModuleResolver);
62
+ component: Component | PromiseLike<Component>;
74
63
  setup?: Setup;
75
64
  }
76
65
  /**
@@ -106,10 +95,22 @@ type NavigationEndEvent<D = any> = CustomEvent<IRoutingInfo<D>>;
106
95
  type Params = {
107
96
  [key: string]: string;
108
97
  };
98
+ type Query = {
99
+ [key: string]: string;
100
+ };
101
+ type EventListenerSubscription = (() => void);
102
+ /**
103
+ * RouterSlot related events.
104
+ */
105
+ type RouterSlotEvent = "changestate";
109
106
  /**
110
107
  * History related events.
111
108
  */
112
109
  type GlobalRouterEvent = "pushstate" | "replacestate" | "popstate" | "changestate" | "willchangestate" | "navigationstart" | "navigationcancel" | "navigationerror" | "navigationsuccess" | "navigationend";
110
+ interface ISlashOptions {
111
+ start: boolean;
112
+ end: boolean;
113
+ }
113
114
  declare global {
114
115
  interface GlobalEventHandlersEventMap {
115
116
  "pushstate": PushStateEvent;
@@ -125,6 +126,251 @@ declare global {
125
126
  }
126
127
  }
127
128
 
128
- type UmbRoute = IRoute;
129
+ /**
130
+ * Dispatches a did change route event.
131
+ * @param $elem
132
+ * @param {IRoute} detail
133
+ */
134
+ declare function dispatchRouteChangeEvent<D = any>($elem: HTMLElement, detail: IRoutingInfo<D>): void;
135
+ /**
136
+ * Dispatches an event on the window object.
137
+ * @param name
138
+ * @param detail
139
+ */
140
+ declare function dispatchGlobalRouterEvent<D = any>(name: GlobalRouterEvent, detail?: IRoutingInfo<D>): void;
141
+ /**
142
+ * Adds an event listener (or more) to an element and returns a function to unsubscribe.
143
+ * @param $elem
144
+ * @param type
145
+ * @param listener
146
+ * @param options
147
+ */
148
+ declare function addListener<T extends Event, eventType extends string>($elem: EventTarget, type: eventType[] | eventType, listener: ((e: T) => void), options?: boolean | AddEventListenerOptions): EventListenerSubscription;
149
+ /**
150
+ * Removes the event listeners in the array.
151
+ * @param listeners
152
+ */
153
+ declare function removeListeners(listeners: EventListenerSubscription[]): void;
154
+
155
+ declare const historyPatches: [string, GlobalRouterEvent[]][];
156
+ /**
157
+ * Patches the history object by ensuring correct events are dispatches when the history changes.
158
+ */
159
+ declare function ensureHistoryEvents(): void;
160
+ /**
161
+ * Attaches a global router event after the native function on the object has been invoked.
162
+ * Stores the original function at the _name.
163
+ * @param obj
164
+ * @param functionName
165
+ * @param eventName
166
+ */
167
+ declare function attachCallback(obj: any, functionName: string, eventName: GlobalRouterEvent): void;
168
+ /**
169
+ * Saves the native function on the history object.
170
+ * @param obj
171
+ * @param name
172
+ * @param func
173
+ */
174
+ declare function saveNativeFunction(obj: any, name: string, func: (() => void)): void;
175
+ declare global {
176
+ interface History {
177
+ "native": {
178
+ "back": ((distance?: any) => void);
179
+ "forward": ((distance?: any) => void);
180
+ "go": ((delta?: any) => void);
181
+ "pushState": ((data: any, title?: string, url?: string | null) => void);
182
+ "replaceState": ((data: any, title?: string, url?: string | null) => void);
183
+ };
184
+ }
185
+ }
186
+
187
+ /**
188
+ * Determines whether the path is active.
189
+ * If the full path starts with the path and is followed by the end of the string or a "/" the path is considered active.
190
+ * @param path
191
+ * @param fullPath
192
+ */
193
+ declare function isPathActive(path: string | PathFragment, fullPath?: string): boolean;
194
+ /**
195
+ * Matches a route.
196
+ * @param route
197
+ * @param path
198
+ */
199
+ declare function matchRoute<D = any>(route: IRoute<D>, path: string | PathFragment): IRouteMatch<D> | null;
200
+ /**
201
+ * Matches the first route that matches the given path.
202
+ * @param routes
203
+ * @param path
204
+ */
205
+ declare function matchRoutes<D = any>(routes: IRoute<D>[], path: string | PathFragment): IRouteMatch<D> | null;
206
+ /**
207
+ * Returns the page from the route.
208
+ * If the component provided is a function (and not a class) call the function to get the promise.
209
+ * @param route
210
+ * @param info
211
+ */
212
+ declare function resolvePageComponent(route: IComponentRoute, info: IRoutingInfo): Promise<PageComponent>;
213
+ /**
214
+ * Determines if a route is a redirect route.
215
+ * @param route
216
+ */
217
+ declare function isRedirectRoute(route: IRoute): route is IRedirectRoute;
218
+ /**
219
+ * Determines if a route is a resolver route.
220
+ * @param route
221
+ */
222
+ declare function isResolverRoute(route: IRoute): route is IResolverRoute;
223
+ /**
224
+ * Traverses the router tree up to the root route.
225
+ * @param slot
226
+ */
227
+ declare function traverseRouterTree(slot: IRouterSlot): {
228
+ tree: RouterTree;
229
+ depth: number;
230
+ };
231
+ /**
232
+ * Generates a path based on the router tree.
233
+ * @param tree
234
+ * @param depth
235
+ */
236
+ declare function getFragments(tree: RouterTree, depth: number): PathFragment[];
237
+ /**
238
+ * Constructs the correct absolute path based on a router.
239
+ * - Handles relative paths: "mypath"
240
+ * - Handles absolute paths: "/mypath"
241
+ * - Handles traversing paths: "../../mypath"
242
+ * @param slot
243
+ * @param path
244
+ */
245
+ declare function constructAbsolutePath<D = any, P = any>(slot: IRouterSlot<D, P>, path?: string | PathFragment): string;
246
+ /**
247
+ * Handles a redirect.
248
+ * @param slot
249
+ * @param route
250
+ */
251
+ declare function handleRedirect(slot: IRouterSlot, route: IRedirectRoute): void;
252
+ /**
253
+ * Determines whether the navigation should start based on the current match and the new match.
254
+ * @param currentMatch
255
+ * @param newMatch
256
+ */
257
+ declare function shouldNavigate<D>(currentMatch: IRouteMatch<D> | null, newMatch: IRouteMatch<D>): boolean;
258
+
259
+ /**
260
+ * Queries the parent router.
261
+ * @param $elem
262
+ */
263
+ declare function queryParentRouterSlot<D = any>($elem: Element): IRouterSlot<D> | null;
264
+ /**
265
+ * Traverses the roots and returns the first match.
266
+ * The minRoots parameter indicates how many roots should be traversed before we started matching with the query.
267
+ * @param $elem
268
+ * @param query
269
+ * @param minRoots
270
+ * @param roots
271
+ */
272
+ declare function queryParentRoots<T>($elem: Element, query: string, minRoots?: number, roots?: number): T | null;
273
+
274
+ /**
275
+ * The current path of the location.
276
+ * As default slashes are included at the start and end.
277
+ * @param options
278
+ */
279
+ declare function path(options?: Partial<ISlashOptions>): string;
280
+ /**
281
+ * Returns the path without the base path.
282
+ * @param options
283
+ */
284
+ declare function pathWithoutBasePath(options?: Partial<ISlashOptions>): string;
285
+ /**
286
+ * Returns the base path as defined in the <base> tag in the head in a reliable way.
287
+ * If eg. <base href="/router-slot/"> is defined this function will return "/router-slot/".
288
+ *
289
+ * An alternative would be to use regex on document.baseURI,
290
+ * but that will be unreliable in some cases because it
291
+ * doesn't use the built in HTMLHyperlinkElementUtils.
292
+ *
293
+ * To make this method more performant we could cache the anchor element.
294
+ * As default it will return the base path with slashes in front and at the end.
295
+ */
296
+ declare function basePath(options?: Partial<ISlashOptions>): string;
297
+ /**
298
+ * Creates an URL using the built in HTMLHyperlinkElementUtils.
299
+ * An alternative would be to use regex on document.baseURI,
300
+ * but that will be unreliable in some cases because it
301
+ * doesn't use the built in HTMLHyperlinkElementUtils.
302
+ *
303
+ * As default it will return the base path with slashes in front and at the end.
304
+ * @param path
305
+ * @param options
306
+ */
307
+ declare function constructPathWithBasePath(path: string, options?: Partial<ISlashOptions>): string;
308
+ /**
309
+ * Removes the start of the path that matches the part.
310
+ * @param path
311
+ * @param part
312
+ */
313
+ declare function stripStart(path: string, part: string): string;
314
+ /**
315
+ * Returns the query string.
316
+ */
317
+ declare function queryString(): string;
318
+ /**
319
+ * Returns the params for the current path.
320
+ * @returns Params
321
+ */
322
+ declare function query(): Query;
323
+ /**
324
+ * Strips the slash from the start and end of a path.
325
+ * @param path
326
+ */
327
+ declare function stripSlash(path: string): string;
328
+ /**
329
+ * Ensures the path starts and ends with a slash
330
+ * @param path
331
+ */
332
+ declare function ensureSlash(path: string): string;
333
+ /**
334
+ * Makes sure that the start and end slashes are present or not depending on the options.
335
+ * @param path
336
+ * @param start
337
+ * @param end
338
+ */
339
+ declare function slashify(path: string, { start, end }?: Partial<ISlashOptions>): string;
340
+ /**
341
+ * Turns a query string into an object.
342
+ * @param {string} queryString (example: ("test=123&hejsa=LOL&wuhuu"))
343
+ * @returns {Query}
344
+ */
345
+ declare function toQuery(queryString: string): Query;
346
+ /**
347
+ * Turns a query object into a string query.
348
+ * @param query
349
+ */
350
+ declare function toQueryString(query: Query): string;
351
+
352
+ /**
353
+ * Hook up a click listener to the window that, for all anchor tags
354
+ * that has a relative HREF, uses the history API instead.
355
+ */
356
+ declare function ensureAnchorHistory(): void;
357
+
358
+ interface UmbRouteLocation {
359
+ name?: string;
360
+ params: {
361
+ [key: string]: string;
362
+ };
363
+ }
364
+
365
+ declare class UmbRouteContext {
366
+ #private;
367
+ private _onGotModals;
368
+ constructor(host: UmbControllerHostElement, _onGotModals: (contextRoutes: any) => void);
369
+ registerModal(registration: UmbModalRouteRegistration): UmbModalRouteRegistration<object, any>;
370
+ unregisterModal(registrationToken: ReturnType<typeof this$1.registerModal>): void;
371
+ _internal_routerGotBasePath(routerBasePath: string): void;
372
+ _internal_modalRouterChanged(activeModalPath: string | undefined): void;
373
+ }
374
+ declare const UMB_ROUTE_CONTEXT_TOKEN: UmbContextToken<UmbRouteContext>;
129
375
 
130
- export { UMB_ROUTE_CONTEXT_TOKEN, UmbRoute, UmbRouteContext, UmbRouteLocation };
376
+ export { Cancel, ChangeStateEvent, Class, Component, CustomResolver, EventListenerSubscription, GlobalRouterEvent, Guard, IComponentRoute, IPathFragments, IRedirectRoute, IResolverRoute, IRoute, IRouteBase, IRouteMatch, IRouterSlot, IRoutingInfo, ISlashOptions, ModuleResolver, NavigationCancelEvent, NavigationEndEvent, NavigationErrorEvent, NavigationStartEvent, NavigationSuccessEvent, PageComponent, Params, PathFragment, PathMatch, PushStateEvent, Query, ReplaceStateEvent, RouterSlotEvent, RouterTree, Setup, UMB_ROUTE_CONTEXT_TOKEN, IRoute as UmbRoute, UmbRouteContext, UmbRouteLocation, WillChangeStateEvent, addListener, attachCallback, basePath, constructAbsolutePath, constructPathWithBasePath, dispatchGlobalRouterEvent, dispatchRouteChangeEvent, ensureAnchorHistory, ensureHistoryEvents, ensureSlash, getFragments, handleRedirect, historyPatches, isPathActive, isRedirectRoute, isResolverRoute, matchRoute, matchRoutes, path, pathWithoutBasePath, query, queryParentRoots, queryParentRouterSlot, queryString, removeListeners, resolvePageComponent, saveNativeFunction, shouldNavigate, slashify, stripSlash, stripStart, toQuery, toQueryString, traverseRouterTree };
@@ -57,7 +57,7 @@
57
57
  },
58
58
  {
59
59
  "name": "umb-document-type-workspace",
60
- "description": "Properties:\n\n * `styles` {`CSSResult[]`} - \n\n * `_routes` {`{ path: string; component: () => UmbDocumentTypeWorkspaceEditorElement; setup: (component: HTMLElement, info: any) => void; }[]`} - ",
60
+ "description": "Properties:\n\n * `styles` {`CSSResult[]`} - \n\n * `_routes` {`any[]`} - ",
61
61
  "attributes": []
62
62
  },
63
63
  {
@@ -179,7 +179,7 @@
179
179
  },
180
180
  {
181
181
  "name": "umb-document-workspace-editor",
182
- "description": "Properties:\n\n * `styles` {`CSSResult[]`} - \n\n * `splitViewElement` - \n\n * `_unique` {`string | undefined`} - \n\n * `_routes` {`IRoute<any>[] | undefined`} - \n\n * `_availableVariants` {`any[]`} - \n\n * `_workspaceSplitViews` {`ActiveVariant[]`} - \n\n * `_gotWorkspaceRoute` - ",
182
+ "description": "Properties:\n\n * `styles` {`CSSResult[]`} - \n\n * `splitViewElement` - \n\n * `_unique` {`string | undefined`} - \n\n * `_routes` {`any[] | undefined`} - \n\n * `_availableVariants` {`any[]`} - \n\n * `_workspaceSplitViews` {`ActiveVariant[]`} - \n\n * `_gotWorkspaceRoute` - ",
183
183
  "attributes": []
184
184
  },
185
185
  {
@@ -189,7 +189,7 @@
189
189
  },
190
190
  {
191
191
  "name": "umb-document-workspace",
192
- "description": "Properties:\n\n * `styles` {`CSSResult[]`} - \n\n * `_routes` {`IRoute<any>[]`} - ",
192
+ "description": "Properties:\n\n * `styles` {`CSSResult[]`} - \n\n * `_routes` {`any[]`} - ",
193
193
  "attributes": []
194
194
  },
195
195
  {
@@ -518,9 +518,15 @@
518
518
  "attributes": []
519
519
  },
520
520
  {
521
- "name": "umb-create-data-type-modal",
522
- "description": "Properties:\n\n * `styles` {`CSSResult[]`} - ",
523
- "attributes": []
521
+ "name": "umb-data-type-create-options-modal",
522
+ "description": "Attributes:\n\n * `data` {`UmbDataTypeCreateOptionsModalData | undefined`} - \n\nProperties:\n\n * `styles` {`CSSResult[]`} - \n\n * `modalHandler` - \n\n * `data` {`UmbDataTypeCreateOptionsModalData | undefined`} - ",
523
+ "attributes": [
524
+ {
525
+ "name": "data",
526
+ "description": "`data` {`UmbDataTypeCreateOptionsModalData | undefined`} - \n\nProperty: data",
527
+ "values": []
528
+ }
529
+ ]
524
530
  },
525
531
  {
526
532
  "name": "umb-data-type-workspace-edit-element",
@@ -588,7 +594,7 @@
588
594
  },
589
595
  {
590
596
  "name": "umb-language-workspace",
591
- "description": "Properties:\n\n * `styles` {`CSSResult[]`} - \n\n * `_routes` {`{ path: string; component: () => UmbLanguageWorkspaceEditElement; setup: (component: HTMLElement, info: IRoutingInfo<any, any>) => void; }[]`} - ",
597
+ "description": "Properties:\n\n * `styles` {`CSSResult[]`} - \n\n * `_routes` {`any[]`} - ",
592
598
  "attributes": []
593
599
  },
594
600
  {
@@ -936,9 +942,6 @@
936
942
  "name": "language",
937
943
  "description": "`language` {CodeEditorLanguage} - Language of the editor. Default is javascript.\n\nProperty: language\n\nDefault: javascript",
938
944
  "values": [
939
- {
940
- "name": "html"
941
- },
942
945
  {
943
946
  "name": "razor"
944
947
  },
@@ -956,6 +959,9 @@
956
959
  },
957
960
  {
958
961
  "name": "json"
962
+ },
963
+ {
964
+ "name": "html"
959
965
  }
960
966
  ]
961
967
  },
@@ -2361,7 +2367,7 @@
2361
2367
  },
2362
2368
  {
2363
2369
  "name": "umb-property-editor-ui-block-grid-inner-test",
2364
- "description": "Attributes:\n\n * `name` {`string`} - \n\nProperties:\n\n * `styles` {`CSSResult[]`} - \n\n * `name` {`string`} - \n\n * `_routerPath` {`string | undefined`} - \n\n * `_activePath` {`string | undefined`} - \n\n * `_routes` {`IRoute<any>[]`} - ",
2370
+ "description": "Attributes:\n\n * `name` {`string`} - \n\nProperties:\n\n * `styles` {`CSSResult[]`} - \n\n * `name` {`string`} - \n\n * `_routerPath` {`string | undefined`} - \n\n * `_activePath` {`string | undefined`} - \n\n * `_routes` {`any[]`} - ",
2365
2371
  "attributes": [
2366
2372
  {
2367
2373
  "name": "name",
@@ -2371,7 +2377,7 @@
2371
2377
  },
2372
2378
  {
2373
2379
  "name": "umb-property-editor-ui-block-grid",
2374
- "description": "Attributes:\n\n * `value` {`string`} - \n\nProperties:\n\n * `styles` {`CSSResult[]`} - \n\n * `_variantContext` - \n\n * `value` {`string`} - \n\n * `config` {`never[]`} - \n\n * `_routes` {`IRoute<any>[]`} - \n\n * `_routerPath` {`string | undefined`} - \n\n * `_activePath` {`string | undefined`} - \n\n * `_variantId` - ",
2380
+ "description": "Attributes:\n\n * `value` {`string`} - \n\nProperties:\n\n * `styles` {`CSSResult[]`} - \n\n * `_variantContext` - \n\n * `value` {`string`} - \n\n * `config` {`never[]`} - \n\n * `_routes` {`any[]`} - \n\n * `_routerPath` {`string | undefined`} - \n\n * `_activePath` {`string | undefined`} - \n\n * `_variantId` - ",
2375
2381
  "attributes": [
2376
2382
  {
2377
2383
  "name": "value",
package/workspace.d.ts CHANGED
@@ -23,6 +23,7 @@ interface UmbWorkspaceContextInterface<DataType = unknown> {
23
23
  getData(): DataType | undefined;
24
24
  destroy(): void;
25
25
  setValidationErrors?(errorMap: any): void;
26
+ save(): void;
26
27
  }
27
28
 
28
29
  declare class UmbSaveWorkspaceAction extends UmbWorkspaceActionBase<UmbWorkspaceContextInterface> {