Skip to content

Commit 2c8117c

Browse files
committed
addendum implemented
1 parent 81ebf3f commit 2c8117c

File tree

8 files changed

+32
-18
lines changed

8 files changed

+32
-18
lines changed

src/Umbraco.Web.UI.Client/src/packages/core/content/property-dataset-context/content-property-dataset.context.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
55
import { UmbObjectState } from '@umbraco-cms/backoffice/observable-api';
66
import type { UmbEntityVariantModel, UmbVariantId } from '@umbraco-cms/backoffice/variant';
77
import type { UmbContentTypeModel } from '@umbraco-cms/backoffice/content-type';
8+
import { UmbRoutePathAddendumContext } from '@umbraco-cms/backoffice/router';
89

910
export class UmbContentPropertyDatasetContext<
1011
ContentModel extends UmbContentDetailModel = UmbContentDetailModel,
@@ -16,6 +17,7 @@ export class UmbContentPropertyDatasetContext<
1617
UmbContentWorkspaceContext<ContentModel, ContentTypeModel, VariantModelType>
1718
> {
1819
//
20+
#pathAddendum = new UmbRoutePathAddendumContext(this);
1921
#currentVariant = new UmbObjectState<VariantModelType | undefined>(undefined);
2022
currentVariant = this.#currentVariant.asObservable();
2123

@@ -47,6 +49,8 @@ export class UmbContentPropertyDatasetContext<
4749
// The controller alias, is a very generic name cause we want only one of these for this controller host.
4850
super(host, dataOwner, variantId);
4951

52+
this.#pathAddendum.setAddendum(variantId ? variantId.toString() : '');
53+
5054
this.observe(
5155
this._dataOwner.variantById(this.getVariantId()),
5256
async (variantInfo) => {

src/Umbraco.Web.UI.Client/src/packages/core/content/workspace/views/edit/content-editor.element.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,7 @@ export class UmbContentWorkspaceViewEditElement extends UmbLitElement implements
148148
: ''}
149149
150150
<umb-router-slot
151+
parse-addendum
151152
.routes=${this._routes}
152153
@init=${(event: UmbRouterSlotInitEvent) => {
153154
this._routerPath = event.target.absoluteRouterPath;

src/Umbraco.Web.UI.Client/src/packages/core/property/property/property.element.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import type {
2020
} from '@umbraco-cms/backoffice/content-type';
2121
import type { UmbObserverController } from '@umbraco-cms/backoffice/observable-api';
2222
import { UMB_MARK_ATTRIBUTE_NAME } from '@umbraco-cms/backoffice/const';
23+
import { UmbRoutePathAddendumContext } from '@umbraco-cms/backoffice/router';
2324

2425
/**
2526
* @element umb-property
@@ -171,6 +172,7 @@ export class UmbPropertyElement extends UmbLitElement {
171172
private _isReadOnly = false;
172173

173174
#propertyContext = new UmbPropertyContext(this);
175+
#pathAddendum = new UmbRoutePathAddendumContext(this);
174176

175177
#controlValidator?: UmbFormControlValidator;
176178
#validationMessageBinder?: UmbBindServerValidationToFormControl;
@@ -184,6 +186,7 @@ export class UmbPropertyElement extends UmbLitElement {
184186
this.#propertyContext.alias,
185187
(alias) => {
186188
this._alias = alias;
189+
this.#pathAddendum.setAddendum(alias);
187190
},
188191
null,
189192
);

src/Umbraco.Web.UI.Client/src/packages/core/router/components/router-slot/router-slot.element.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ export class UmbRouterSlotElement extends UmbLitElement {
2121
#modalRouter: IRouterSlot = document.createElement('router-slot') as IRouterSlot;
2222
#listening = false;
2323

24+
@property({ type: Boolean, attribute: 'parse-addendum', reflect: false })
25+
public parseAddendum?: boolean;
26+
2427
@property({ attribute: false })
2528
public get routes(): UmbRoute[] | undefined {
2629
return this.#router.routes;
@@ -63,8 +66,6 @@ export class UmbRouterSlotElement extends UmbLitElement {
6366
constructor() {
6467
super();
6568

66-
new UmbRoutePathAddendumResetContext(this);
67-
6869
this.#modalRouter.parent = this.#router;
6970
this.#modalRouter.style.display = 'none';
7071
this.#router.addEventListener('changestate', this._updateRouterPath.bind(this));
@@ -80,6 +81,10 @@ export class UmbRouterSlotElement extends UmbLitElement {
8081
}
8182

8283
override connectedCallback() {
84+
if (this.parseAddendum !== true) {
85+
new UmbRoutePathAddendumResetContext(this);
86+
}
87+
8388
super.connectedCallback();
8489
// Currently we have to set this every time as RouteSlot looks for its parent every-time it is connected. Aka it has not way to explicitly set the parent.
8590
// And we cannot insert the modal router as a slotted-child of the router, as it flushes its children on every route change.

src/Umbraco.Web.UI.Client/src/packages/core/router/contexts/route-path-addendum.context.ts

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,33 +8,35 @@ export class UmbRoutePathAddendumContext
88
extends UmbContextBase<UmbRoutePathAddendum, typeof UMB_ROUTE_PATH_ADDENDUM_CONTEXT>
99
implements UmbRoutePathAddendum
1010
{
11-
#parentAddendum?: string;
12-
#currentAddendum?: string;
11+
#parent?: string;
12+
#current?: string;
1313

14-
#pathAddendum = new UmbStringState(undefined);
15-
readonly addendum = this.#pathAddendum.asObservable();
14+
#addendum = new UmbStringState(undefined);
15+
readonly addendum = this.#addendum.asObservable();
1616

1717
constructor(host: UmbControllerHost) {
1818
super(host, UMB_ROUTE_PATH_ADDENDUM_CONTEXT);
1919

2020
this.consumeContext(UMB_ROUTE_PATH_ADDENDUM_CONTEXT, (context) => {
2121
this.observe(context.addendum, (addendum) => {
22-
this.#parentAddendum = addendum;
22+
this.#parent = addendum;
23+
console.log('parent addendum', addendum, (context as any).getHostElement());
2324
this.#update();
2425
});
2526
}).skipHost();
2627
}
2728

28-
setAddendum(addendum: string) {
29-
this.#currentAddendum = addendum;
29+
setAddendum(addendum: string | undefined) {
30+
this.#current = addendum;
3031
this.#update();
3132
}
3233

3334
#update() {
34-
if (this.#parentAddendum === undefined || this.#currentAddendum === undefined) {
35+
if (this.#parent === undefined || this.#current === undefined) {
3536
return;
3637
}
37-
const base = this.#parentAddendum === '' ? this.#parentAddendum : this.#parentAddendum + '/';
38-
this.#pathAddendum.setValue(base + this.#currentAddendum);
38+
// if none of the strings are empty strings, then we should add a slash in front of the currentAddendum. So we get one in between.
39+
const add = this.#current === '' || this.#parent === '' ? this.#current : '/' + this.#current;
40+
this.#addendum.setValue(this.#parent + add);
3941
}
4042
}

src/Umbraco.Web.UI.Client/src/packages/core/router/modal-registration/modal-route-registration.controller.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import type {
99
UmbModalToken,
1010
} from '@umbraco-cms/backoffice/modal';
1111
import type { UmbControllerAlias, UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
12-
import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api';
1312
import { UmbControllerBase } from '@umbraco-cms/backoffice/class-api';
1413
import { UmbId } from '@umbraco-cms/backoffice/id';
1514
import type { UmbDeepPartialObject } from '@umbraco-cms/backoffice/utils';

src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-editor/workspace-editor.element.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,7 @@ export class UmbWorkspaceEditorElement extends UmbLitElement {
153153
if (!this._routes || this._routes.length === 0) return nothing;
154154
return html`
155155
<umb-router-slot
156+
parse-addendum
156157
id="router-slot"
157158
.routes=${this._routes}
158159
@init=${(event: UmbRouterSlotInitEvent) => {

src/Umbraco.Web.UI.Client/src/packages/multi-url-picker/components/input-multi-url/input-multi-url.element.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,18 +53,18 @@ export class UmbInputMultiUrlElement extends UUIFormControlMixin(UmbLitElement,
5353

5454
@property()
5555
public set alias(value: string | undefined) {
56-
this.#linkPickerModal.setUniquePathValue('propertyAlias', value);
56+
//this.#linkPickerModal.setUniquePathValue('propertyAlias', value);
5757
}
5858
public get alias(): string | undefined {
59-
return this.#linkPickerModal.getUniquePathValue('propertyAlias');
59+
return undefined; //this.#linkPickerModal.getUniquePathValue('propertyAlias');
6060
}
6161

6262
@property()
6363
public set variantId(value: string | UmbVariantId | undefined) {
64-
this.#linkPickerModal.setUniquePathValue('variantId', value?.toString());
64+
//this.#linkPickerModal.setUniquePathValue('variantId', value?.toString());
6565
}
6666
public get variantId(): string | undefined {
67-
return this.#linkPickerModal.getUniquePathValue('variantId');
67+
return undefined; //this.#linkPickerModal.getUniquePathValue('variantId');
6868
}
6969

7070
/**
@@ -176,7 +176,6 @@ export class UmbInputMultiUrlElement extends UUIFormControlMixin(UmbLitElement,
176176

177177
this.#linkPickerModal = new UmbModalRouteRegistrationController(this, UMB_LINK_PICKER_MODAL)
178178
.addAdditionalPath(`:index`)
179-
.addUniquePaths(['propertyAlias', 'variantId'])
180179
.onSetup((params) => {
181180
// Get index:
182181
const indexParam = params.index;

0 commit comments

Comments
 (0)