enforce allowNonExistingSegmentsCreation config

This commit is contained in:
Mads Rasmussen
2025-04-22 13:31:20 +02:00
parent f725ea8019
commit bcafffdbf0
2 changed files with 20 additions and 2 deletions

View File

@@ -29,7 +29,7 @@ import { UmbDataTypeDetailRepository, UmbDataTypeItemRepositoryManager } from '@
import { appendToFrozenArray, mergeObservables, UmbArrayState } from '@umbraco-cms/backoffice/observable-api';
import { UmbLanguageCollectionRepository, type UmbLanguageDetailModel } from '@umbraco-cms/backoffice/language';
import type { Observable } from '@umbraco-cms/backoffice/external/rxjs';
import { firstValueFrom } from '@umbraco-cms/backoffice/external/rxjs';
import { firstValueFrom, map } from '@umbraco-cms/backoffice/external/rxjs';
import {
UMB_VALIDATION_CONTEXT,
UMB_VALIDATION_EMPTY_LOCALIZATION_KEY,
@@ -154,6 +154,8 @@ export abstract class UmbContentDetailWorkspaceContextBase<
// @ts-ignore
// TODO: fix type error
public readonly variantOptions;
// eslint-disable-next-line @typescript-eslint/no-unused-vars
protected _variantOptionsFilter = (variantOption: VariantOptionModelType) => true;
#variantValidationContexts: Array<UmbValidationController> = [];
getVariantValidationContext(variantId: UmbVariantId): UmbValidationController | undefined {
@@ -285,7 +287,7 @@ export abstract class UmbContentDetailWorkspaceContextBase<
return [] as Array<VariantOptionModelType>;
},
);
).pipe(map((options) => options.filter((option) => this._variantOptionsFilter(option))));
this.observe(
this.variantOptions,

View File

@@ -89,6 +89,22 @@ export class UmbDocumentWorkspaceContext
saveModalToken: UMB_DOCUMENT_SAVE_MODAL,
});
this.consumeContext(UMB_DOCUMENT_CONFIGURATION_CONTEXT, async (context) => {
const config = await context.getDocumentConfiguration();
const allowSegmentCreation = config?.allowNonExistingSegmentsCreation ?? false;
this._variantOptionsFilter = (variantOption) => {
const isNotCreatedSegmentVariant = variantOption.segment && !variantOption.variant;
// Do not allow creating a segment variant
if (!allowSegmentCreation && isNotCreatedSegmentVariant) {
return false;
}
return true;
};
});
this.consumeContext(UMB_DOCUMENT_CONFIGURATION_CONTEXT, async (context) => {
const documentConfiguration = (await context?.getDocumentConfiguration()) ?? undefined;