correct variant selection in save modal
This commit is contained in:
@@ -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,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user