@umbraco-cms/backoffice 16.0.0-rc3 → 16.0.0-rc5

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.
Files changed (142) hide show
  1. package/dist-cms/apps/backoffice/backoffice.context.js +5 -1
  2. package/dist-cms/apps/backoffice/components/backoffice-main.element.js +3 -1
  3. package/dist-cms/assets/lang/en-us.js +1 -1
  4. package/dist-cms/assets/lang/en-us.ts +1 -1
  5. package/dist-cms/css/uui-css.css +481 -100
  6. package/dist-cms/custom-elements.json +33 -17
  7. package/dist-cms/external/rxjs/index.d.ts +1 -1
  8. package/dist-cms/external/rxjs/index.js +3 -3
  9. package/dist-cms/external/uui/index.js +663 -393
  10. package/dist-cms/libs/context-api/consume/context-consumer.js +1 -2
  11. package/dist-cms/libs/controller-api/controller-host.mixin.js +2 -2
  12. package/dist-cms/libs/extension-api/controller/server-extension-registrator.controller.js +6 -2
  13. package/dist-cms/packages/block/block/context/block-entry.context.js +10 -3
  14. package/dist-cms/packages/block/block/workspace/views/edit/block-workspace-view-edit.element.js +1 -0
  15. package/dist-cms/packages/block/block-list/components/block-list-entry/block-list-entry.element.js +2 -1
  16. package/dist-cms/packages/content/content/components/property-type-based-property/index.d.ts +2 -0
  17. package/dist-cms/packages/content/content/components/property-type-based-property/index.js +2 -0
  18. package/dist-cms/packages/content/content/components/property-type-based-property/property-type-based-property.context-token.d.ts +8 -0
  19. package/dist-cms/packages/content/content/components/property-type-based-property/property-type-based-property.context-token.js +7 -0
  20. package/dist-cms/packages/content/content/{content-property.context.d.ts → components/property-type-based-property/property-type-based-property.context.d.ts} +6 -1
  21. package/dist-cms/packages/content/content/components/property-type-based-property/property-type-based-property.context.js +19 -0
  22. package/dist-cms/packages/content/content/components/property-type-based-property/property-type-based-property.element.d.ts +1 -1
  23. package/dist-cms/packages/content/content/components/property-type-based-property/property-type-based-property.element.js +8 -7
  24. package/dist-cms/packages/content/content/global-components/content-workspace-property.element.d.ts +26 -0
  25. package/dist-cms/packages/content/content/global-components/content-workspace-property.element.js +104 -0
  26. package/dist-cms/packages/content/content/global-components/index.d.ts +1 -0
  27. package/dist-cms/packages/content/content/global-components/index.js +1 -0
  28. package/dist-cms/packages/content/content/index.d.ts +1 -2
  29. package/dist-cms/packages/content/content/index.js +1 -2
  30. package/dist-cms/packages/content/content/workspace/content-detail-workspace-base.js +2 -1
  31. package/dist-cms/packages/content/content/workspace/views/edit/content-editor-properties.element.d.ts +1 -3
  32. package/dist-cms/packages/content/content/workspace/views/edit/content-editor-properties.element.js +8 -48
  33. package/dist-cms/packages/content/content/workspace/views/edit/content-editor.element.js +1 -0
  34. package/dist-cms/packages/content/content-type/structure/content-type-property-structure-helper.class.d.ts +1 -0
  35. package/dist-cms/packages/content/content-type/structure/content-type-property-structure-helper.class.js +1 -0
  36. package/dist-cms/packages/content/content-type/structure/content-type-structure-manager.class.d.ts +1 -0
  37. package/dist-cms/packages/content/content-type/structure/content-type-structure-manager.class.js +3 -3
  38. package/dist-cms/packages/content/content-type/workspace/views/design/content-type-design-editor.element.js +11 -7
  39. package/dist-cms/packages/content/property-type/workspace/property-type-workspace.context.js +5 -1
  40. package/dist-cms/packages/core/collection/collection-view.manager.js +4 -4
  41. package/dist-cms/packages/core/collection/components/collection-filter-field.element.js +1 -1
  42. package/dist-cms/packages/core/components/input-number-range/input-number-range.element.d.ts +4 -1
  43. package/dist-cms/packages/core/components/input-number-range/input-number-range.element.js +27 -3
  44. package/dist-cms/packages/core/components/input-with-alias/input-with-alias.element.js +0 -2
  45. package/dist-cms/packages/core/localization/manifests.js +27 -27
  46. package/dist-cms/packages/core/localization/registry/localization.registry.d.ts +2 -1
  47. package/dist-cms/packages/core/localization/registry/localization.registry.js +97 -37
  48. package/dist-cms/packages/core/menu/menu-variant-tree-structure-workspace-context-base.js +2 -2
  49. package/dist-cms/packages/core/package.json +2 -2
  50. package/dist-cms/packages/core/property/components/property/property.element.js +1 -0
  51. package/dist-cms/packages/core/property-editor/extensions/property-editor-ui-element.interface.d.ts +2 -0
  52. package/dist-cms/packages/core/repository/detail/detail-repository-base.js +6 -7
  53. package/dist-cms/packages/core/repository/item/item-repository-base.d.ts +1 -1
  54. package/dist-cms/packages/core/repository/item/item-repository-base.js +25 -9
  55. package/dist-cms/packages/core/repository/item/item-repository.interface.d.ts +1 -1
  56. package/dist-cms/packages/core/router/route/router-slot.element.js +3 -1
  57. package/dist-cms/packages/core/router/router-slot/model.d.ts +1 -0
  58. package/dist-cms/packages/core/router/router-slot/router-slot.d.ts +1 -0
  59. package/dist-cms/packages/core/router/router-slot/router-slot.js +30 -0
  60. package/dist-cms/packages/core/tree/data/tree-repository-base.d.ts +5 -1
  61. package/dist-cms/packages/core/tree/data/tree-repository-base.js +27 -13
  62. package/dist-cms/packages/core/tree/tree-item/tree-item.element.js +1 -1
  63. package/dist-cms/packages/core/validation/controllers/validation.controller.js +1 -1
  64. package/dist-cms/packages/core/workspace/components/workspace-action/common/save/save.action.js +3 -1
  65. package/dist-cms/packages/core/workspace/components/workspace-breadcrumb/workspace-variant-menu-breadcrumb/workspace-variant-menu-breadcrumb.element.js +5 -2
  66. package/dist-cms/packages/core/workspace/components/workspace-split-view/workspace-split-view-variant-selector.element.js +2 -2
  67. package/dist-cms/packages/core/workspace/contexts/tokens/submittable-tree-entity-workspace.context-token.js +1 -1
  68. package/dist-cms/packages/core/workspace/controllers/workspace-is-new-redirect.controller.d.ts +7 -0
  69. package/dist-cms/packages/core/workspace/controllers/workspace-is-new-redirect.controller.js +31 -10
  70. package/dist-cms/packages/core/workspace/controllers/workspace-route-manager.controller.js +5 -5
  71. package/dist-cms/packages/core/workspace/entity-detail/entity-detail-workspace-base.js +1 -1
  72. package/dist-cms/packages/core/workspace/submittable/submittable-workspace-context-base.d.ts +1 -0
  73. package/dist-cms/packages/core/workspace/submittable/submittable-workspace-context-base.js +10 -0
  74. package/dist-cms/packages/data-type/collection/repository/data-type-collection.repository.js +6 -1
  75. package/dist-cms/packages/data-type/repository/detail/data-type-detail.repository.js +6 -1
  76. package/dist-cms/packages/documents/document-blueprints/workspace/document-blueprint-workspace-editor.element.js +5 -4
  77. package/dist-cms/packages/documents/documents/entity-actions/create-blueprint/modal/create-blueprint-modal.element.js +1 -1
  78. package/dist-cms/packages/documents/documents/publishing/workspace-context/document-publishing.workspace-context.js +12 -2
  79. package/dist-cms/packages/documents/documents/tree/document-tree.context.js +2 -2
  80. package/dist-cms/packages/documents/documents/types.d.ts +1 -0
  81. package/dist-cms/packages/documents/documents/url/index.d.ts +1 -0
  82. package/dist-cms/packages/documents/documents/url/index.js +1 -0
  83. package/dist-cms/packages/documents/documents/url/types.d.ts +1 -0
  84. package/dist-cms/packages/documents/documents/url/types.js +1 -0
  85. package/dist-cms/packages/documents/documents/user-permissions/document/conditions/document-user-permission.condition.js +3 -1
  86. package/dist-cms/packages/documents/documents/workspace/actions/save.action.js +4 -2
  87. package/dist-cms/packages/documents/documents/workspace/document-workspace-editor.element.js +13 -7
  88. package/dist-cms/packages/log-viewer/components/log-viewer-date-range-selector.element.d.ts +0 -2
  89. package/dist-cms/packages/log-viewer/components/log-viewer-date-range-selector.element.js +12 -24
  90. package/dist-cms/packages/log-viewer/repository/sources/log-viewer.server.data.js +9 -1
  91. package/dist-cms/packages/log-viewer/workspace/views/search/components/log-viewer-message.element.js +1 -1
  92. package/dist-cms/packages/media/media/dashboard/media-dashboard.element.js +1 -0
  93. package/dist-cms/packages/media/media/modals/media-picker/media-picker-modal.element.js +2 -2
  94. package/dist-cms/packages/media/media/tree/media-tree.context.js +2 -2
  95. package/dist-cms/packages/media/media/workspace/media-workspace-editor.element.js +1 -0
  96. package/dist-cms/packages/members/member/repository/member-repository-base.d.ts +8 -8
  97. package/dist-cms/packages/members/member/repository/member-repository-base.js +13 -12
  98. package/dist-cms/packages/members/member/workspace/member/member-workspace-editor.element.js +1 -0
  99. package/dist-cms/packages/packages/package-section/views/created/created-packages-section-view.element.js +1 -0
  100. package/dist-cms/packages/property-editors/dimensions/property-editor-ui-dimensions.element.js +16 -3
  101. package/dist-cms/packages/segment/package.json +8 -0
  102. package/dist-cms/packages/settings/package.json +8 -0
  103. package/dist-cms/packages/settings/vite.config.d.ts +2 -0
  104. package/dist-cms/packages/settings/vite.config.js +11 -0
  105. package/dist-cms/packages/templating/partial-views/entity-actions/rename/rename-partial-view.server.data-source.js +1 -1
  106. package/dist-cms/packages/templating/partial-views/repository/partial-view-detail.server.data-source.js +3 -3
  107. package/dist-cms/packages/templating/partial-views/tree/folder/repository/partial-view-folder.server.data-source.js +2 -2
  108. package/dist-cms/packages/templating/scripts/entity-actions/rename/rename-script.server.data-source.js +1 -1
  109. package/dist-cms/packages/templating/scripts/repository/script-detail.server.data-source.js +3 -3
  110. package/dist-cms/packages/templating/scripts/tree/folder/repository/script-folder.server.data-source.js +2 -2
  111. package/dist-cms/packages/templating/stylesheets/entity-actions/rename/rename-stylesheet.server.data-source.js +1 -1
  112. package/dist-cms/packages/templating/stylesheets/repository/stylesheet-detail.server.data-source.js +3 -3
  113. package/dist-cms/packages/templating/stylesheets/tree/folder/repository/stylesheet-folder.server.data-source.js +2 -2
  114. package/dist-cms/packages/tiptap/components/character-map/character-map-modal.element.js +0 -4
  115. package/dist-cms/packages/tiptap/components/input-tiptap/input-tiptap.element.js +1 -1
  116. package/dist-cms/packages/tiptap/components/input-tiptap/tiptap-toolbar.element.d.ts +6 -0
  117. package/dist-cms/packages/tiptap/components/input-tiptap/tiptap-toolbar.element.js +7 -1
  118. package/dist-cms/packages/tiptap/property-editors/tiptap/components/property-editor-ui-tiptap-extensions-configuration.element.js +1 -1
  119. package/dist-cms/packages/tiptap/property-editors/tiptap/components/property-editor-ui-tiptap-statusbar-configuration.element.js +0 -4
  120. package/dist-cms/packages/tiptap/property-editors/tiptap/components/property-editor-ui-tiptap-toolbar-configuration.element.js +1 -4
  121. package/dist-cms/packages/translation/package.json +8 -0
  122. package/dist-cms/packages/user/current-user/current-user.context.js +4 -1
  123. package/dist-cms/packages/user/current-user/repository/current-user.repository.d.ts +2 -2
  124. package/dist-cms/packages/user/current-user/repository/current-user.repository.js +8 -5
  125. package/dist-cms/packages/user/user/repository/user-repository-base.d.ts +7 -7
  126. package/dist-cms/packages/user/user/repository/user-repository-base.js +13 -12
  127. package/dist-cms/packages/user/user-group/collection/repository/user-group-collection.repository.js +4 -1
  128. package/dist-cms/packages/user/user-group/collection/user-group-collection.element.js +1 -1
  129. package/dist-cms/packages/webhook/webhook-event/repository/webhook-event.repository.d.ts +4 -0
  130. package/dist-cms/packages/webhook/webhook-event/repository/webhook-event.repository.js +7 -1
  131. package/dist-cms/tsconfig.build.tsbuildinfo +1 -1
  132. package/dist-cms/umbraco-package.json +1 -1
  133. package/dist-cms/vscode-html-custom-data.json +16 -10
  134. package/examples/modal-routed/dashboard.element.ts +1 -0
  135. package/examples/modal-routed/modal/example-modal.element.ts +1 -0
  136. package/examples/validation-context/validation-context-dashboard.ts +12 -12
  137. package/package.json +8 -7
  138. package/dist-cms/packages/content/content/content-property.context-token.d.ts +0 -3
  139. package/dist-cms/packages/content/content/content-property.context-token.js +0 -2
  140. package/dist-cms/packages/content/content/content-property.context.js +0 -14
  141. package/dist-cms/packages/content/content/workspace/views/edit/content-editor-property.element.d.ts +0 -21
  142. package/dist-cms/packages/content/content/workspace/views/edit/content-editor-property.element.js +0 -63
@@ -188,8 +188,7 @@ export class UmbContextConsumer {
188
188
  cancelAnimationFrame(this.#raf);
189
189
  this.#raf = undefined;
190
190
  }
191
- this.#instance = undefined;
192
- this.#callback?.(undefined);
191
+ this.#unprovide();
193
192
  if (this.#promiseRejecter) {
194
193
  const hostElement = this._retrieveHost();
195
194
  this.#promiseRejecter(`Context request was cancelled, host was disconnected. (Context Alias: ${this.#contextAlias} with API Alias: ${this.#apiAlias}). Controller is hosted on ${hostElement?.parentNode?.nodeName ?? 'Not attached node'} > ${hostElement?.nodeName}`);
@@ -43,8 +43,8 @@ export const UmbControllerHostMixin = (superClass) => {
43
43
  if (this.#attached) {
44
44
  // If a controller is created on a already attached element, then it will be added directly. This might not be optimal. As the controller it self has not finished its constructor method jet. therefor i postpone the call: [NL]
45
45
  Promise.resolve().then(() => {
46
- // Extra check to see if we are still attached at this point:
47
- if (this.#attached) {
46
+ // Extra check to see if we are still attached and still added at this point:
47
+ if (this.#attached && this.#controllers.includes(ctrl)) {
48
48
  ctrl.hostConnected();
49
49
  }
50
50
  });
@@ -27,7 +27,9 @@ export class UmbServerExtensionRegistrator extends UmbControllerBase {
27
27
  * @remark Users must have the BACKOFFICE_ACCESS permission to access this method.
28
28
  */
29
29
  async registerPrivateExtensions() {
30
- const { data: packages } = await tryExecute(this, ManifestService.getManifestManifestPrivate());
30
+ const { data: packages } = await tryExecute(this, ManifestService.getManifestManifestPrivate(), {
31
+ disableNotifications: true,
32
+ });
31
33
  if (packages) {
32
34
  await this.#loadServerPackages(packages);
33
35
  }
@@ -38,7 +40,9 @@ export class UmbServerExtensionRegistrator extends UmbControllerBase {
38
40
  * @remark Any user can access this method without any permissions.
39
41
  */
40
42
  async registerPublicExtensions() {
41
- const { data: packages } = await tryExecute(this, ManifestService.getManifestManifestPublic());
43
+ const { data: packages } = await tryExecute(this, ManifestService.getManifestManifestPublic(), {
44
+ disableNotifications: true,
45
+ });
42
46
  if (packages) {
43
47
  await this.#loadServerPackages(packages);
44
48
  }
@@ -384,17 +384,24 @@ export class UmbBlockEntryContext extends UmbContextBase {
384
384
  }, 'observeSettingsKey');
385
385
  }
386
386
  async #observeVariantId() {
387
- if (!this._manager)
387
+ if (!this._manager) {
388
+ this.removeUmbControllerByAlias('observeVariantId');
388
389
  return;
390
+ }
389
391
  await this.#contentStructurePromise;
390
392
  if (!this.#contentStructure) {
391
393
  throw new Error('No contentStructure found');
392
394
  }
395
+ if (!this._manager) {
396
+ // The manager maybe got removed while we awaited the promise above.
397
+ this.removeUmbControllerByAlias('observeVariantId');
398
+ return;
399
+ }
393
400
  // observe variantId:
394
401
  this.observe(observeMultiple([
395
402
  this._manager.variantId,
396
- this.#contentStructure?.ownerContentTypeObservablePart((x) => x?.variesByCulture),
397
- this.#contentStructure?.ownerContentTypeObservablePart((x) => x?.variesBySegment),
403
+ this.#contentStructure.ownerContentTypeObservablePart((x) => x?.variesByCulture),
404
+ this.#contentStructure.ownerContentTypeObservablePart((x) => x?.variesBySegment),
398
405
  ]), ([variantId, variesByCulture, variesBySegment]) => {
399
406
  if (!variantId || variesByCulture === undefined || variesBySegment === undefined)
400
407
  return;
@@ -88,6 +88,7 @@ let UmbBlockWorkspaceViewEditElement = class UmbBlockWorkspaceViewEditElement ex
88
88
  if (!this._hasRootGroups) {
89
89
  routes.push({
90
90
  path: '',
91
+ pathMatch: 'full',
91
92
  redirectTo: routes[0]?.path,
92
93
  });
93
94
  }
@@ -11,7 +11,7 @@ import { html, css, customElement, property, state, nothing } from '@umbraco-cms
11
11
  import { stringOrStringArrayContains } from '@umbraco-cms/backoffice/utils';
12
12
  import { UmbObserveValidationStateController } from '@umbraco-cms/backoffice/validation';
13
13
  import { UmbDataPathBlockElementDataQuery } from '@umbraco-cms/backoffice/block';
14
- import { UUIBlinkAnimationValue } from '@umbraco-cms/backoffice/external/uui';
14
+ import { UUIBlinkAnimationValue, UUIBlinkKeyframes } from '@umbraco-cms/backoffice/external/uui';
15
15
  import { UMB_PROPERTY_CONTEXT, UMB_PROPERTY_DATASET_CONTEXT } from '@umbraco-cms/backoffice/property';
16
16
  import { UMB_CLIPBOARD_PROPERTY_CONTEXT } from '@umbraco-cms/backoffice/clipboard';
17
17
  import '../ref-list-block/index.js';
@@ -324,6 +324,7 @@ let UmbBlockListEntryElement = class UmbBlockListEntryElement extends UmbLitElem
324
324
  return this.#renderBlock();
325
325
  }
326
326
  static { this.styles = [
327
+ UUIBlinkKeyframes,
327
328
  css `
328
329
  :host {
329
330
  position: relative;
@@ -1 +1,3 @@
1
1
  export * from './property-type-based-property.element.js';
2
+ export * from './property-type-based-property.context-token.js';
3
+ export * from './property-type-based-property.context.js';
@@ -1 +1,3 @@
1
1
  export * from './property-type-based-property.element.js';
2
+ export * from './property-type-based-property.context-token.js';
3
+ export * from './property-type-based-property.context.js';
@@ -0,0 +1,8 @@
1
+ import type { UmbPropertyTypeBasedPropertyContext } from './property-type-based-property.context.js';
2
+ import { UmbContextToken } from '@umbraco-cms/backoffice/context-api';
3
+ export declare const UMB_PROPERTY_TYPE_BASED_PROPERTY_CONTEXT: UmbContextToken<UmbPropertyTypeBasedPropertyContext, UmbPropertyTypeBasedPropertyContext>;
4
+ /**
5
+ * @deprecated Use `UMB_PROPERTY_TYPE_BASED_PROPERTY_CONTEXT` instead.
6
+ * This will be removed in v.18
7
+ */
8
+ export declare const UMB_CONTENT_PROPERTY_CONTEXT: UmbContextToken<UmbPropertyTypeBasedPropertyContext, UmbPropertyTypeBasedPropertyContext>;
@@ -0,0 +1,7 @@
1
+ import { UmbContextToken } from '@umbraco-cms/backoffice/context-api';
2
+ export const UMB_PROPERTY_TYPE_BASED_PROPERTY_CONTEXT = new UmbContextToken('UmbPropertyTypeBasedPropertyContext');
3
+ /**
4
+ * @deprecated Use `UMB_PROPERTY_TYPE_BASED_PROPERTY_CONTEXT` instead.
5
+ * This will be removed in v.18
6
+ */
7
+ export const UMB_CONTENT_PROPERTY_CONTEXT = new UmbContextToken('UmbPropertyTypeBasedPropertyContext');
@@ -1,7 +1,7 @@
1
1
  import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
2
2
  import { UmbContextBase } from '@umbraco-cms/backoffice/class-api';
3
3
  import type { UmbPropertyTypeModel } from '@umbraco-cms/backoffice/content-type';
4
- export declare class UmbContentPropertyContext extends UmbContextBase {
4
+ export declare class UmbPropertyTypeBasedPropertyContext extends UmbContextBase {
5
5
  #private;
6
6
  dataType: import("rxjs").Observable<{
7
7
  unique: string;
@@ -9,3 +9,8 @@ export declare class UmbContentPropertyContext extends UmbContextBase {
9
9
  constructor(host: UmbControllerHost);
10
10
  setDataType(dataType: UmbPropertyTypeModel['dataType'] | undefined): void;
11
11
  }
12
+ /**
13
+ * @deprecated Use `UmbPropertyTypeBasedPropertyContext` instead.
14
+ * This will be removed in v.18
15
+ */
16
+ export { UmbPropertyTypeBasedPropertyContext as UmbContentPropertyContext };
@@ -0,0 +1,19 @@
1
+ import { UMB_PROPERTY_TYPE_BASED_PROPERTY_CONTEXT } from './property-type-based-property.context-token.js';
2
+ import { UmbContextBase } from '@umbraco-cms/backoffice/class-api';
3
+ import { UmbObjectState } from '@umbraco-cms/backoffice/observable-api';
4
+ export class UmbPropertyTypeBasedPropertyContext extends UmbContextBase {
5
+ #dataType;
6
+ constructor(host) {
7
+ super(host, UMB_PROPERTY_TYPE_BASED_PROPERTY_CONTEXT);
8
+ this.#dataType = new UmbObjectState(undefined);
9
+ this.dataType = this.#dataType.asObservable();
10
+ }
11
+ setDataType(dataType) {
12
+ this.#dataType.setValue(dataType);
13
+ }
14
+ }
15
+ /**
16
+ * @deprecated Use `UmbPropertyTypeBasedPropertyContext` instead.
17
+ * This will be removed in v.18
18
+ */
19
+ export { UmbPropertyTypeBasedPropertyContext as UmbContentPropertyContext };
@@ -18,7 +18,7 @@ export declare class UmbPropertyTypeBasedPropertyElement extends UmbLitElement {
18
18
  private _propertyEditorUiAlias?;
19
19
  private _propertyEditorSchemaAlias?;
20
20
  private _isUnsupported?;
21
- private _dataTypeData?;
21
+ private _dataTypeValues?;
22
22
  private _dataTypeDetailRepository;
23
23
  private _dataTypeObserver?;
24
24
  private _checkSchemaSupport;
@@ -4,7 +4,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- import { UmbContentPropertyContext } from '../../content-property.context.js';
7
+ import { UmbPropertyTypeBasedPropertyContext } from './property-type-based-property.context.js';
8
8
  import { css, customElement, html, ifDefined, property, state } from '@umbraco-cms/backoffice/external/lit';
9
9
  import { UmbDataTypeDetailRepository } from '@umbraco-cms/backoffice/data-type';
10
10
  import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry';
@@ -21,7 +21,7 @@ let UmbPropertyTypeBasedPropertyElement = class UmbPropertyTypeBasedPropertyElem
21
21
  */
22
22
  this.readonly = false;
23
23
  this._dataTypeDetailRepository = new UmbDataTypeDetailRepository(this);
24
- this.#contentPropertyContext = new UmbContentPropertyContext(this);
24
+ this.#context = new UmbPropertyTypeBasedPropertyContext(this);
25
25
  }
26
26
  set property(value) {
27
27
  const oldProperty = this._property;
@@ -40,11 +40,12 @@ let UmbPropertyTypeBasedPropertyElement = class UmbPropertyTypeBasedPropertyElem
40
40
  // Change this to ownerSchemaEditorAlias and retrieve the correct information.
41
41
  this._ownerEntityType = value;
42
42
  }
43
- #contentPropertyContext;
43
+ #context;
44
44
  async _checkSchemaSupport() {
45
45
  if (!this._ownerEntityType || !this._propertyEditorSchemaAlias)
46
46
  return;
47
47
  if (this._ownerEntityType in UMB_UNSUPPORTED_EDITOR_SCHEMA_ALIASES) {
48
+ // TODO: We should get rid of this system, f your reading this please dont rely on this, we will get rid of it in the future. [NL]
48
49
  this._isUnsupported = UMB_UNSUPPORTED_EDITOR_SCHEMA_ALIASES[this._ownerEntityType].includes(this._propertyEditorSchemaAlias);
49
50
  }
50
51
  }
@@ -55,8 +56,8 @@ let UmbPropertyTypeBasedPropertyElement = class UmbPropertyTypeBasedPropertyElem
55
56
  await this._dataTypeDetailRepository.requestByUnique(dataTypeUnique);
56
57
  this._dataTypeObserver = this.observe(await this._dataTypeDetailRepository.byUnique(dataTypeUnique), (dataType) => {
57
58
  const contextValue = dataType ? { unique: dataType.unique } : undefined;
58
- this.#contentPropertyContext.setDataType(contextValue);
59
- this._dataTypeData = dataType?.values;
59
+ this.#context.setDataType(contextValue);
60
+ this._dataTypeValues = dataType?.values;
60
61
  this._propertyEditorUiAlias = dataType?.editorUiAlias || undefined;
61
62
  this._propertyEditorSchemaAlias = dataType?.editorAlias || undefined;
62
63
  this._checkSchemaSupport();
@@ -93,7 +94,7 @@ let UmbPropertyTypeBasedPropertyElement = class UmbPropertyTypeBasedPropertyElem
93
94
  .description=${this._property.description ?? undefined}
94
95
  .appearance=${this._property.appearance}
95
96
  property-editor-ui-alias=${ifDefined(this._propertyEditorUiAlias)}
96
- .config=${this._dataTypeData}
97
+ .config=${this._dataTypeValues}
97
98
  .validation=${this._property.validation}
98
99
  ?readonly=${this.readonly}>
99
100
  </umb-property>
@@ -131,7 +132,7 @@ __decorate([
131
132
  ], UmbPropertyTypeBasedPropertyElement.prototype, "_isUnsupported", void 0);
132
133
  __decorate([
133
134
  state()
134
- ], UmbPropertyTypeBasedPropertyElement.prototype, "_dataTypeData", void 0);
135
+ ], UmbPropertyTypeBasedPropertyElement.prototype, "_dataTypeValues", void 0);
135
136
  UmbPropertyTypeBasedPropertyElement = __decorate([
136
137
  customElement('umb-property-type-based-property')
137
138
  ], UmbPropertyTypeBasedPropertyElement);
@@ -0,0 +1,26 @@
1
+ import { UMB_CONTENT_WORKSPACE_CONTEXT } from '../constants.js';
2
+ import { nothing } from '@umbraco-cms/backoffice/external/lit';
3
+ import type { UmbPropertyTypeModel } from '@umbraco-cms/backoffice/content-type';
4
+ import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
5
+ import { UmbVariantId } from '@umbraco-cms/backoffice/variant';
6
+ export declare class UmbContentWorkspacePropertyElement extends UmbLitElement {
7
+ #private;
8
+ private _alias?;
9
+ get alias(): string | undefined;
10
+ set alias(value: string | undefined);
11
+ _datasetVariantId?: UmbVariantId;
12
+ _dataPath?: string;
13
+ _viewable?: boolean;
14
+ _writeable?: boolean;
15
+ _workspaceContext?: typeof UMB_CONTENT_WORKSPACE_CONTEXT.TYPE;
16
+ _propertyType?: UmbPropertyTypeModel;
17
+ constructor();
18
+ willUpdate(changedProperties: Map<string, any>): void;
19
+ render(): typeof nothing | import("lit-html").TemplateResult<1>;
20
+ }
21
+ export default UmbContentWorkspacePropertyElement;
22
+ declare global {
23
+ interface HTMLElementTagNameMap {
24
+ 'umb-content-workspace-property': UmbContentWorkspacePropertyElement;
25
+ }
26
+ }
@@ -0,0 +1,104 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { UMB_CONTENT_WORKSPACE_CONTEXT } from '../constants.js';
8
+ import { html, customElement, property, state, nothing } from '@umbraco-cms/backoffice/external/lit';
9
+ import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
10
+ import { UMB_PROPERTY_DATASET_CONTEXT } from '@umbraco-cms/backoffice/property';
11
+ import { UmbVariantId } from '@umbraco-cms/backoffice/variant';
12
+ import { UmbDataPathPropertyValueQuery } from '@umbraco-cms/backoffice/validation';
13
+ let UmbContentWorkspacePropertyElement = class UmbContentWorkspacePropertyElement extends UmbLitElement {
14
+ get alias() {
15
+ return this._alias;
16
+ }
17
+ set alias(value) {
18
+ this._alias = value;
19
+ this.#observePropertyType();
20
+ }
21
+ constructor() {
22
+ super();
23
+ // The Property Dataset is local to the active variant, we use this to retrieve the variant we like to gather the value from.
24
+ this.consumeContext(UMB_PROPERTY_DATASET_CONTEXT, (datasetContext) => {
25
+ this._datasetVariantId = datasetContext?.getVariantId();
26
+ });
27
+ // The Content Workspace Context is used to retrieve the property type we like to observe.
28
+ // This gives us the configuration from the property type as part of the data type.
29
+ this.consumeContext(UMB_CONTENT_WORKSPACE_CONTEXT, async (workspaceContext) => {
30
+ this._workspaceContext = workspaceContext;
31
+ this.#observePropertyType();
32
+ });
33
+ }
34
+ async #observePropertyType() {
35
+ if (!this._alias || !this._workspaceContext)
36
+ return;
37
+ this.observe(await this._workspaceContext?.structure.propertyStructureByAlias(this._alias), (propertyType) => {
38
+ this._propertyType = propertyType;
39
+ this.#checkViewGuard();
40
+ });
41
+ }
42
+ #checkViewGuard() {
43
+ if (!this._workspaceContext || !this._propertyType || !this._datasetVariantId)
44
+ return;
45
+ const propertyVariantId = new UmbVariantId(this._propertyType.variesByCulture ? this._datasetVariantId.culture : null, this._propertyType.variesBySegment ? this._datasetVariantId.segment : null);
46
+ this.observe(this._workspaceContext.propertyViewGuard.isPermittedForVariantAndProperty(propertyVariantId, this._propertyType, this._datasetVariantId), (permitted) => {
47
+ this._viewable = permitted;
48
+ }, `umbObservePropertyViewGuard`);
49
+ }
50
+ willUpdate(changedProperties) {
51
+ super.willUpdate(changedProperties);
52
+ if (changedProperties.has('_propertyType') ||
53
+ changedProperties.has('_datasetVariantId') ||
54
+ changedProperties.has('_workspaceContext')) {
55
+ if (this._datasetVariantId && this._propertyType && this._workspaceContext) {
56
+ const propertyVariantId = new UmbVariantId(this._propertyType.variesByCulture ? this._datasetVariantId.culture : null, this._propertyType.variesBySegment ? this._datasetVariantId.segment : null);
57
+ this._dataPath = `$.values[${UmbDataPathPropertyValueQuery({
58
+ alias: this._propertyType.alias,
59
+ culture: propertyVariantId.culture,
60
+ segment: propertyVariantId.segment,
61
+ })}].value`;
62
+ this.observe(this._workspaceContext.propertyWriteGuard.isPermittedForVariantAndProperty(propertyVariantId, this._propertyType, propertyVariantId), (write) => {
63
+ this._writeable = write;
64
+ }, 'observeView');
65
+ }
66
+ }
67
+ }
68
+ render() {
69
+ if (!this._viewable)
70
+ return nothing;
71
+ if (!this._dataPath || this._writeable === undefined)
72
+ return nothing;
73
+ return html `<umb-property-type-based-property
74
+ data-path=${this._dataPath}
75
+ .property=${this._propertyType}
76
+ ?readonly=${!this._writeable}></umb-property-type-based-property>`;
77
+ }
78
+ };
79
+ __decorate([
80
+ property({ type: String, attribute: 'alias' })
81
+ ], UmbContentWorkspacePropertyElement.prototype, "alias", null);
82
+ __decorate([
83
+ state()
84
+ ], UmbContentWorkspacePropertyElement.prototype, "_datasetVariantId", void 0);
85
+ __decorate([
86
+ state()
87
+ ], UmbContentWorkspacePropertyElement.prototype, "_dataPath", void 0);
88
+ __decorate([
89
+ state()
90
+ ], UmbContentWorkspacePropertyElement.prototype, "_viewable", void 0);
91
+ __decorate([
92
+ state()
93
+ ], UmbContentWorkspacePropertyElement.prototype, "_writeable", void 0);
94
+ __decorate([
95
+ state()
96
+ ], UmbContentWorkspacePropertyElement.prototype, "_workspaceContext", void 0);
97
+ __decorate([
98
+ state()
99
+ ], UmbContentWorkspacePropertyElement.prototype, "_propertyType", void 0);
100
+ UmbContentWorkspacePropertyElement = __decorate([
101
+ customElement('umb-content-workspace-property')
102
+ ], UmbContentWorkspacePropertyElement);
103
+ export { UmbContentWorkspacePropertyElement };
104
+ export default UmbContentWorkspacePropertyElement;
@@ -0,0 +1 @@
1
+ export * from './content-workspace-property.element.js';
@@ -0,0 +1 @@
1
+ export * from './content-workspace-property.element.js';
@@ -1,9 +1,8 @@
1
- export { UMB_CONTENT_PROPERTY_CONTEXT } from './content-property.context-token.js';
2
- export { UmbContentPropertyContext } from './content-property.context.js';
3
1
  export * from './collection/index.js';
4
2
  export * from './components/index.js';
5
3
  export * from './constants.js';
6
4
  export * from './controller/merge-content-variant-data.controller.js';
5
+ export * from './global-components/index.js';
7
6
  export * from './manager/index.js';
8
7
  export * from './property-dataset-context/index.js';
9
8
  export * from './workspace/index.js';
@@ -1,9 +1,8 @@
1
- export { UMB_CONTENT_PROPERTY_CONTEXT } from './content-property.context-token.js';
2
- export { UmbContentPropertyContext } from './content-property.context.js';
3
1
  export * from './collection/index.js';
4
2
  export * from './components/index.js';
5
3
  export * from './constants.js';
6
4
  export * from './controller/merge-content-variant-data.controller.js';
5
+ export * from './global-components/index.js';
7
6
  export * from './manager/index.js';
8
7
  export * from './property-dataset-context/index.js';
9
8
  export * from './workspace/index.js';
@@ -679,6 +679,7 @@ export class UmbContentDetailWorkspaceContextBase extends UmbEntityDetailWorkspa
679
679
  const currentData = this._data.getCurrent();
680
680
  const newCurrentData = await new UmbMergeContentVariantDataController(this).process(currentData, data, variantIds, variantIdsIncludingInvariant);
681
681
  this._data.setCurrent(newCurrentData);
682
+ this.setIsNew(false);
682
683
  const eventContext = await this.getContext(UMB_ACTION_EVENT_CONTEXT);
683
684
  if (!eventContext) {
684
685
  throw new Error('Event context is missing');
@@ -688,7 +689,6 @@ export class UmbContentDetailWorkspaceContextBase extends UmbEntityDetailWorkspa
688
689
  unique: parent.unique,
689
690
  });
690
691
  eventContext.dispatchEvent(event);
691
- this.setIsNew(false);
692
692
  }
693
693
  async #update(variantIds, saveData) {
694
694
  if (!this._detailRepository)
@@ -723,6 +723,7 @@ export class UmbContentDetailWorkspaceContextBase extends UmbEntityDetailWorkspa
723
723
  }
724
724
  resetState() {
725
725
  super.resetState();
726
+ this.structure.clear();
726
727
  this.readOnlyGuard.clearRules();
727
728
  this.propertyViewGuard.clearRules();
728
729
  this.propertyWriteGuard.clearRules();
@@ -1,12 +1,10 @@
1
1
  import type { UmbPropertyTypeModel } from '@umbraco-cms/backoffice/content-type';
2
2
  import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
3
- import { UmbVariantId } from '@umbraco-cms/backoffice/variant';
4
- import './content-editor-property.element.js';
5
3
  export declare class UmbContentWorkspaceViewEditPropertiesElement extends UmbLitElement {
6
4
  #private;
7
5
  get containerId(): string | null | undefined;
8
6
  set containerId(value: string | null | undefined);
9
- _datasetVariantId?: UmbVariantId;
7
+ _properties: Array<string>;
10
8
  _visibleProperties?: Array<UmbPropertyTypeModel>;
11
9
  constructor();
12
10
  render(): unknown;
@@ -5,18 +5,12 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  import { UMB_CONTENT_WORKSPACE_CONTEXT } from '../../content-workspace.context-token.js';
8
- import { css, html, customElement, property, state, repeat, nothing } from '@umbraco-cms/backoffice/external/lit';
8
+ import { css, html, customElement, property, state, repeat } from '@umbraco-cms/backoffice/external/lit';
9
9
  import { UmbTextStyles } from '@umbraco-cms/backoffice/style';
10
10
  import { UmbContentTypePropertyStructureHelper } from '@umbraco-cms/backoffice/content-type';
11
11
  import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
12
- import { UmbVariantId } from '@umbraco-cms/backoffice/variant';
13
- import { UMB_PROPERTY_DATASET_CONTEXT } from '@umbraco-cms/backoffice/property';
14
- import './content-editor-property.element.js';
15
12
  let UmbContentWorkspaceViewEditPropertiesElement = class UmbContentWorkspaceViewEditPropertiesElement extends UmbLitElement {
16
- #workspaceContext;
17
- #propertyStructureHelper = new UmbContentTypePropertyStructureHelper(this);
18
- #properties;
19
- #visiblePropertiesUniques = [];
13
+ #propertyStructureHelper;
20
14
  get containerId() {
21
15
  return this.#propertyStructureHelper.getContainerId();
22
16
  }
@@ -25,53 +19,19 @@ let UmbContentWorkspaceViewEditPropertiesElement = class UmbContentWorkspaceView
25
19
  }
26
20
  constructor() {
27
21
  super();
28
- this.consumeContext(UMB_PROPERTY_DATASET_CONTEXT, (datasetContext) => {
29
- this._datasetVariantId = datasetContext?.getVariantId();
30
- this.#processPropertyStructure();
31
- });
22
+ this.#propertyStructureHelper = new UmbContentTypePropertyStructureHelper(this);
23
+ this._properties = [];
32
24
  this.consumeContext(UMB_CONTENT_WORKSPACE_CONTEXT, (workspaceContext) => {
33
- this.#workspaceContext = workspaceContext;
34
25
  this.#propertyStructureHelper.setStructureManager(
35
26
  // Assuming its the same content model type that we are working with here... [NL]
36
27
  workspaceContext?.structure);
37
- this.observe(this.#propertyStructureHelper.propertyStructure, (properties) => {
38
- this.#properties = properties;
39
- this.#processPropertyStructure();
28
+ this.observe(this.#propertyStructureHelper.propertyAliases, (properties) => {
29
+ this._properties = properties;
40
30
  }, 'observePropertyStructure');
41
31
  });
42
32
  }
43
- #processPropertyStructure() {
44
- if (!this.#workspaceContext || !this.#properties || !this.#propertyStructureHelper || !this._datasetVariantId) {
45
- return;
46
- }
47
- const propertyViewGuard = this.#workspaceContext.propertyViewGuard;
48
- this.#properties.forEach((property) => {
49
- const propertyVariantId = new UmbVariantId(property.variesByCulture ? this._datasetVariantId?.culture : null, property.variesBySegment ? this._datasetVariantId?.segment : null);
50
- this.observe(propertyViewGuard.isPermittedForVariantAndProperty(propertyVariantId, property, this._datasetVariantId), (permitted) => {
51
- if (permitted) {
52
- this.#visiblePropertiesUniques.push(property.unique);
53
- this.#calculateVisibleProperties();
54
- }
55
- else {
56
- const index = this.#visiblePropertiesUniques.indexOf(property.unique);
57
- if (index !== -1) {
58
- this.#visiblePropertiesUniques.splice(index, 1);
59
- this.#calculateVisibleProperties();
60
- }
61
- }
62
- }, `propertyViewGuard-permittedForVariantAndProperty-${property.unique}`);
63
- });
64
- }
65
- #calculateVisibleProperties() {
66
- this._visibleProperties = this.#properties.filter((property) => this.#visiblePropertiesUniques.includes(property.unique));
67
- }
68
33
  render() {
69
- return this._datasetVariantId && this._visibleProperties
70
- ? repeat(this._visibleProperties, (property) => property.alias, (property) => html `<umb-content-workspace-view-edit-property
71
- class="property"
72
- .variantId=${this._datasetVariantId}
73
- .property=${property}></umb-content-workspace-view-edit-property>`)
74
- : nothing;
34
+ return repeat(this._properties, (property) => property, (property) => html `<umb-content-workspace-property class="property" alias=${property}></umb-content-workspace-property>`);
75
35
  }
76
36
  static { this.styles = [
77
37
  UmbTextStyles,
@@ -90,7 +50,7 @@ __decorate([
90
50
  ], UmbContentWorkspaceViewEditPropertiesElement.prototype, "containerId", null);
91
51
  __decorate([
92
52
  state()
93
- ], UmbContentWorkspaceViewEditPropertiesElement.prototype, "_datasetVariantId", void 0);
53
+ ], UmbContentWorkspaceViewEditPropertiesElement.prototype, "_properties", void 0);
94
54
  __decorate([
95
55
  state()
96
56
  ], UmbContentWorkspaceViewEditPropertiesElement.prototype, "_visibleProperties", void 0);
@@ -72,6 +72,7 @@ let UmbContentWorkspaceViewEditElement = class UmbContentWorkspaceViewEditElemen
72
72
  if (routes.length !== 0) {
73
73
  routes.push({
74
74
  path: '',
75
+ pathMatch: 'full',
75
76
  redirectTo: routes[0].path,
76
77
  });
77
78
  routes.push({
@@ -10,6 +10,7 @@ type UmbPropertyTypeUnique = UmbPropertyTypeModel['unique'];
10
10
  export declare class UmbContentTypePropertyStructureHelper<T extends UmbContentTypeModel> extends UmbControllerBase {
11
11
  #private;
12
12
  readonly propertyStructure: import("rxjs").Observable<UmbPropertyTypeModel[]>;
13
+ readonly propertyAliases: import("rxjs").Observable<string[]>;
13
14
  constructor(host: UmbControllerHost);
14
15
  contentTypes(): Promise<import("rxjs").Observable<T[]> | undefined>;
15
16
  setStructureManager(structure: UmbContentTypeStructureManager<T>): void;
@@ -16,6 +16,7 @@ export class UmbContentTypePropertyStructureHelper extends UmbControllerBase {
16
16
  // State which holds all the properties of the current container, this is a composition of all properties from the containers that matches our target [NL]
17
17
  this.#propertyStructure = new UmbArrayState([], (x) => x.unique);
18
18
  this.propertyStructure = this.#propertyStructure.asObservable();
19
+ this.propertyAliases = this.#propertyStructure.asObservablePart((x) => x.map((e) => e.alias));
19
20
  this.#init = new Promise((resolve) => {
20
21
  this.#initResolver = resolve;
21
22
  });
@@ -126,6 +126,7 @@ export declare class UmbContentTypeStructureManager<T extends UmbContentTypeMode
126
126
  * @returns {Promise<Array<string>>} - A promise that will be resolved with the list of all content type property aliases.
127
127
  */
128
128
  getContentTypePropertyAliases(): Promise<string[]>;
129
+ clear(): void;
129
130
  destroy(): void;
130
131
  }
131
132
  export {};
@@ -131,7 +131,7 @@ export class UmbContentTypeStructureManager extends UmbControllerBase {
131
131
  return { data: this.getOwnerContentType(), asObservable: () => this.ownerContentType };
132
132
  }
133
133
  await this.#initRepository;
134
- this.#clear();
134
+ this.clear();
135
135
  this.#ownerContentTypeUnique = unique;
136
136
  if (!unique) {
137
137
  this.#initRejection?.(`Content Type structure manager could not load: ${unique}`);
@@ -145,7 +145,7 @@ export class UmbContentTypeStructureManager extends UmbControllerBase {
145
145
  }
146
146
  async createScaffold(preset) {
147
147
  await this.#initRepository;
148
- this.#clear();
148
+ this.clear();
149
149
  const repsonse = await this.#repository.createScaffold(preset);
150
150
  const { data } = repsonse;
151
151
  if (!data) {
@@ -607,7 +607,7 @@ export class UmbContentTypeStructureManager extends UmbControllerBase {
607
607
  .flatMap((x) => x.properties?.map((y) => y.alias) ?? [])
608
608
  .filter(UmbFilterDuplicateStrings);
609
609
  }
610
- #clear() {
610
+ clear() {
611
611
  this.#contentTypeObservers.forEach((observer) => observer.destroy());
612
612
  this.#contentTypeObservers = [];
613
613
  this.#repoManager?.clear();
@@ -147,6 +147,7 @@ let UmbContentTypeDesignEditorElement = class UmbContentTypeDesignEditorElement
147
147
  });
148
148
  routes.push({
149
149
  path: '',
150
+ pathMatch: 'full',
150
151
  redirectTo: 'root',
151
152
  guards: [() => this.#processingTabId === undefined],
152
153
  });
@@ -154,6 +155,7 @@ let UmbContentTypeDesignEditorElement = class UmbContentTypeDesignEditorElement
154
155
  else {
155
156
  routes.push({
156
157
  path: '',
158
+ pathMatch: 'full',
157
159
  redirectTo: routes[0]?.path,
158
160
  guards: [() => this.#processingTabId === undefined],
159
161
  });
@@ -168,13 +170,15 @@ let UmbContentTypeDesignEditorElement = class UmbContentTypeDesignEditorElement
168
170
  },
169
171
  });
170
172
  }
171
- routes.push({
172
- path: `**`,
173
- component: async () => (await import('@umbraco-cms/backoffice/router')).UmbRouteNotFoundElement,
174
- setup: () => {
175
- this.#currentTabComponent = undefined;
176
- },
177
- });
173
+ else {
174
+ routes.push({
175
+ path: `**`,
176
+ component: async () => (await import('@umbraco-cms/backoffice/router')).UmbRouteNotFoundElement,
177
+ setup: () => {
178
+ this.#currentTabComponent = undefined;
179
+ },
180
+ });
181
+ }
178
182
  this._routes = routes;
179
183
  // If we have a active tab, then we want to make sure its up to date with latest tab id, as an already active route is not getting its setup method triggered again [NL]
180
184
  if (this._activePath && this.#currentTabComponent) {