correct variant selection in save modal

This commit is contained in:
Mads Rasmussen
2025-04-22 14:44:16 +02:00
parent 8ef061b768
commit 78877bea57

View File

@@ -657,18 +657,29 @@ export abstract class UmbContentDetailWorkspaceContextBase<
const activeVariants = this.splitView.getActiveVariants();
const activeVariantIds = activeVariants.map((activeVariant) => UmbVariantId.Create(activeVariant));
const changedVariantIds = this._data.getChangedVariants();
const selectedVariantIds = activeVariantIds.concat(changedVariantIds);
const activeAndChangedVariantIds = [...activeVariantIds, ...changedVariantIds];
// if a segment has been changed, we select the "parent" culture variant as it is currently only possible to select between cultures in the dialogs
const changedParentCultureVariantIds = activeAndChangedVariantIds
.filter((x) => x.segment !== null)
.map((x) => x.toSegmentInvariant());
const selectedVariantIds = [...activeAndChangedVariantIds, ...changedParentCultureVariantIds];
const writableSelectedVariantIds = selectedVariantIds.filter(
(x) => this.readOnlyGuard.getIsPermittedForVariant(x) === false,
);
// Selected can contain entries that are not part of the options, therefor the modal filters selection based on options.
const selected = writableSelectedVariantIds.map((x) => x.toString()).filter((v, i, a) => a.indexOf(v) === i);
const selected = writableSelectedVariantIds
.map((variantId) => variantId.toString())
.filter((variantId, index, all) => all.indexOf(variantId) === index);
const uniqueSelected = [...new Set(selected)];
return {
options,
selected,
selected: uniqueSelected,
};
}