Skip to content

Commit 5d64f51

Browse files
authored
Segments: Auto unfold the culture variant in non-culture-variant mode (#20189)
in segment only variant situation then auto unfold the culture variant
1 parent 1f747d3 commit 5d64f51

File tree

2 files changed

+24
-6
lines changed

2 files changed

+24
-6
lines changed

src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-split-view/workspace-split-view-variant-selector.element.ts

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import type { UUIInputElement, UUIPopoverContainerElement } from '@umbraco-cms/b
1212
import type { DocumentVariantStateModel } from '@umbraco-cms/backoffice/external/backend-api';
1313
import { UMB_HINT_CONTEXT } from '@umbraco-cms/backoffice/hint';
1414
import type { UmbHint, UmbVariantHint } from '@umbraco-cms/backoffice/hint';
15+
import { observeMultiple } from '@umbraco-cms/backoffice/observable-api';
1516

1617
@customElement('umb-workspace-split-view-variant-selector')
1718
export class UmbWorkspaceSplitViewVariantSelectorElement<
@@ -137,6 +138,24 @@ export class UmbWorkspaceSplitViewVariantSelectorElement<
137138
},
138139
'_observeVariantOptions',
139140
);
141+
142+
if (workspaceContext) {
143+
this.observe(
144+
observeMultiple([
145+
workspaceContext.variesByCulture,
146+
workspaceContext.variesBySegment,
147+
workspaceContext.variantOptions,
148+
]),
149+
([variesByCulture, variesBySegment, variantOptions]) => {
150+
if (variesByCulture === false && variesBySegment === true && variantOptions.length > 1) {
151+
this.#expandVariant(UmbVariantId.Create(variantOptions[0]));
152+
}
153+
},
154+
'_observeExpandFirstVariantIfSegmentOnly',
155+
);
156+
} else {
157+
this.removeUmbControllerByAlias('_observeExpandFirstVariantIfSegmentOnly');
158+
}
140159
}
141160

142161
async #observeActiveVariants(workspaceContext?: UmbVariantDatasetWorkspaceContext) {
@@ -266,12 +285,12 @@ export class UmbWorkspaceSplitViewVariantSelectorElement<
266285

267286
// If the active variant is a segment then we expend the culture variant when the selector is opened.
268287
if (this.#isSegmentVariantOption(this._activeVariant)) {
269-
const culture = this._cultureVariantOptions.find((variant) => {
288+
const option = this._cultureVariantOptions.find((variant) => {
270289
return variant.culture === this._activeVariant?.culture && variant.segment === null;
271290
});
272291

273-
if (!culture) return;
274-
const variantId = UmbVariantId.Create(culture);
292+
if (!option) return;
293+
const variantId = UmbVariantId.Create(option);
275294
this.#expandVariant(variantId);
276295
}
277296
}

src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/document-workspace-split-view-variant-selector.element.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@ import { customElement, html, state } from '@umbraco-cms/backoffice/external/lit
55
import { DocumentVariantStateModel } from '@umbraco-cms/backoffice/external/backend-api';
66
import { UmbWorkspaceSplitViewVariantSelectorElement } from '@umbraco-cms/backoffice/workspace';
77

8-
const elementName = 'umb-document-workspace-split-view-variant-selector';
9-
@customElement(elementName)
8+
@customElement('umb-document-workspace-split-view-variant-selector')
109
export class UmbDocumentWorkspaceSplitViewVariantSelectorElement extends UmbWorkspaceSplitViewVariantSelectorElement<UmbDocumentVariantOptionModel> {
1110
protected override _variantSorter = sortVariants;
1211

@@ -68,6 +67,6 @@ export class UmbDocumentWorkspaceSplitViewVariantSelectorElement extends UmbWork
6867

6968
declare global {
7069
interface HTMLElementTagNameMap {
71-
[elementName]: UmbDocumentWorkspaceSplitViewVariantSelectorElement;
70+
'umb-document-workspace-split-view-variant-selector': UmbDocumentWorkspaceSplitViewVariantSelectorElement;
7271
}
7372
}

0 commit comments

Comments
 (0)