Merge branch 'release/17.0'
# Conflicts: # src/Umbraco.Infrastructure/PropertyEditors/ImageCropperPropertyEditor.cs
This commit is contained in:
@@ -10,18 +10,26 @@ namespace Umbraco.Extensions
|
||||
{
|
||||
internal static void AddCollectionBuilders(this IUmbracoBuilder builder)
|
||||
{
|
||||
builder.SignProviders()
|
||||
builder.FlagProviders()
|
||||
.Append<HasScheduleFlagProvider>()
|
||||
.Append<IsProtectedFlagProvider>()
|
||||
.Append<HasPendingChangesFlagProvider>()
|
||||
.Append<HasCollectionFlagProvider>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the flag providers collection builder.
|
||||
/// </summary>
|
||||
/// <param name="builder">The builder.</param>
|
||||
public static FlagProviderCollectionBuilder FlagProviders(this IUmbracoBuilder builder)
|
||||
=> builder.WithCollectionBuilder<FlagProviderCollectionBuilder>();
|
||||
|
||||
/// <summary>
|
||||
/// Gets the sign providers collection builder.
|
||||
/// </summary>
|
||||
/// <param name="builder">The builder.</param>
|
||||
[Obsolete("Please use the correctly named FlagProviders. Scheduled for removal in Umbraco 19.")]
|
||||
public static FlagProviderCollectionBuilder SignProviders(this IUmbracoBuilder builder)
|
||||
=> builder.WithCollectionBuilder<FlagProviderCollectionBuilder>();
|
||||
=> builder.FlagProviders();
|
||||
}
|
||||
}
|
||||
|
||||
4
src/Umbraco.Web.UI.Client/package-lock.json
generated
4
src/Umbraco.Web.UI.Client/package-lock.json
generated
@@ -64,8 +64,8 @@
|
||||
"web-component-analyzer": "^2.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=22",
|
||||
"npm": ">=10.9"
|
||||
"node": ">=22.17.1",
|
||||
"npm": ">=10.9.2"
|
||||
}
|
||||
},
|
||||
"node_modules/@adobe/css-tools": {
|
||||
|
||||
@@ -215,8 +215,8 @@
|
||||
"generate:ui-api-docs": "npm run generate:check-const-test && typedoc --options typedoc.config.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=22",
|
||||
"npm": ">=10.9"
|
||||
"node": ">=22.17.1",
|
||||
"npm": ">=10.9.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"element-internals-polyfill": "^3.0.2"
|
||||
|
||||
@@ -137,7 +137,7 @@ export class UmbContentTypeDesignEditorPropertiesElement extends UmbLitElement {
|
||||
public set containerId(value: string | null | undefined) {
|
||||
if (value === this._containerId) return;
|
||||
this._containerId = value;
|
||||
this.createPropertyTypeWorkspaceRoutes();
|
||||
this.#createPropertyTypeWorkspaceRoutes();
|
||||
this.#propertyStructureHelper.setContainerId(value);
|
||||
this.#addPropertyModal?.setUniquePathValue('container-id', value === null ? 'root' : value);
|
||||
this.#editPropertyModal?.setUniquePathValue('container-id', value === null ? 'root' : value);
|
||||
@@ -153,6 +153,12 @@ export class UmbContentTypeDesignEditorPropertiesElement extends UmbLitElement {
|
||||
>;
|
||||
|
||||
#propertyStructureHelper = new UmbContentTypePropertyStructureHelper<UmbContentTypeModel>(this);
|
||||
#initResolver?: () => void;
|
||||
#initReject?: (reason?: any) => void;
|
||||
#init = new Promise<void>((resolve, reject) => {
|
||||
this.#initResolver = resolve;
|
||||
this.#initReject = reject;
|
||||
});
|
||||
|
||||
@property({ attribute: false })
|
||||
editContentTypePath?: string;
|
||||
@@ -199,22 +205,34 @@ export class UmbContentTypeDesignEditorPropertiesElement extends UmbLitElement {
|
||||
}
|
||||
|
||||
this._ownerContentTypeUnique = workspaceContext?.structure.getOwnerContentTypeUnique();
|
||||
this.createPropertyTypeWorkspaceRoutes();
|
||||
this.#createPropertyTypeWorkspaceRoutes();
|
||||
|
||||
const varyByCulturePromise =
|
||||
this.observe(
|
||||
workspaceContext?.variesByCulture,
|
||||
(variesByCulture) => {
|
||||
this._ownerContentTypeVariesByCulture = variesByCulture;
|
||||
},
|
||||
'observeOwnerVariesByCulture',
|
||||
);
|
||||
)?.asPromise() ?? Promise.reject();
|
||||
const varyBySegmentPromise =
|
||||
this.observe(
|
||||
workspaceContext?.variesBySegment,
|
||||
(variesBySegment) => {
|
||||
this._ownerContentTypeVariesBySegment = variesBySegment;
|
||||
},
|
||||
'observeOwnerVariesBySegment',
|
||||
);
|
||||
)?.asPromise() ?? Promise.reject();
|
||||
|
||||
if (this.#initResolver) {
|
||||
Promise.all([varyByCulturePromise, varyBySegmentPromise])
|
||||
.then(() => {
|
||||
this.#initResolver?.();
|
||||
this.#initResolver = undefined;
|
||||
this.#initReject = undefined;
|
||||
})
|
||||
.catch(() => {});
|
||||
}
|
||||
});
|
||||
this.observe(this.#propertyStructureHelper.propertyStructure, (propertyStructure) => {
|
||||
this._properties = propertyStructure;
|
||||
@@ -222,7 +240,13 @@ export class UmbContentTypeDesignEditorPropertiesElement extends UmbLitElement {
|
||||
});
|
||||
}
|
||||
|
||||
createPropertyTypeWorkspaceRoutes() {
|
||||
override disconnectedCallback(): void {
|
||||
super.disconnectedCallback();
|
||||
this.#initReject?.(new Error('Component disconnected'));
|
||||
}
|
||||
|
||||
async #createPropertyTypeWorkspaceRoutes() {
|
||||
await this.#init;
|
||||
if (!this._ownerContentTypeUnique || this._containerId === undefined) return;
|
||||
|
||||
// Note: Route for adding a new property
|
||||
@@ -247,6 +271,12 @@ export class UmbContentTypeDesignEditorPropertiesElement extends UmbLitElement {
|
||||
}
|
||||
preset.sortOrder = sortOrderInt;
|
||||
}
|
||||
if (this._ownerContentTypeVariesByCulture) {
|
||||
preset.variesByCulture = true;
|
||||
}
|
||||
if (this._ownerContentTypeVariesBySegment) {
|
||||
preset.variesBySegment = true;
|
||||
}
|
||||
return { data: { contentTypeUnique: this._ownerContentTypeUnique, preset: preset } };
|
||||
})
|
||||
.observeRouteBuilder((routeBuilder) => {
|
||||
|
||||
@@ -428,6 +428,8 @@ export abstract class UmbContentDetailWorkspaceContextBase<
|
||||
const repo = new UmbDataTypeDetailRepository(this);
|
||||
|
||||
const propertyTypes = await this.structure.getContentTypeProperties();
|
||||
const contentTypeVariesByCulture = this.structure.getVariesByCulture();
|
||||
const contentTypeVariesBySegment = this.structure.getVariesByCulture();
|
||||
const valueDefinitions = await Promise.all(
|
||||
propertyTypes.map(async (property) => {
|
||||
// TODO: Implement caching for data-type requests. [NL]
|
||||
@@ -446,8 +448,9 @@ export abstract class UmbContentDetailWorkspaceContextBase<
|
||||
propertyEditorSchemaAlias: dataType.editorAlias,
|
||||
config: dataType.values,
|
||||
typeArgs: {
|
||||
variesByCulture: property.variesByCulture,
|
||||
variesBySegment: property.variesBySegment,
|
||||
// Only vary if the content type varies:
|
||||
variesByCulture: contentTypeVariesByCulture ? property.variesByCulture : false,
|
||||
variesBySegment: contentTypeVariesBySegment ? property.variesBySegment : false,
|
||||
} as UmbPropertyTypePresetModelTypeModel,
|
||||
} as UmbPropertyTypePresetModel;
|
||||
}),
|
||||
|
||||
@@ -66,10 +66,12 @@ export class UmbPropertyTypeWorkspaceViewSettingsElement extends UmbLitElement i
|
||||
this.observe(
|
||||
instance?.variesByCulture,
|
||||
(variesByCulture) => (this._contentTypeVariesByCulture = variesByCulture),
|
||||
'observeVariesByCulture',
|
||||
);
|
||||
this.observe(
|
||||
instance?.variesBySegment,
|
||||
(variesBySegment) => (this._contentTypeVariesBySegment = variesBySegment),
|
||||
'observeVariesBySegment',
|
||||
);
|
||||
this._entityType = instance?.getEntityType();
|
||||
}).passContextAliasMatches();
|
||||
|
||||
Reference in New Issue
Block a user