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)
|
internal static void AddCollectionBuilders(this IUmbracoBuilder builder)
|
||||||
{
|
{
|
||||||
builder.SignProviders()
|
builder.FlagProviders()
|
||||||
.Append<HasScheduleFlagProvider>()
|
.Append<HasScheduleFlagProvider>()
|
||||||
.Append<IsProtectedFlagProvider>()
|
.Append<IsProtectedFlagProvider>()
|
||||||
.Append<HasPendingChangesFlagProvider>()
|
.Append<HasPendingChangesFlagProvider>()
|
||||||
.Append<HasCollectionFlagProvider>();
|
.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>
|
/// <summary>
|
||||||
/// Gets the sign providers collection builder.
|
/// Gets the sign providers collection builder.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="builder">The builder.</param>
|
/// <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)
|
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"
|
"web-component-analyzer": "^2.0.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=22",
|
"node": ">=22.17.1",
|
||||||
"npm": ">=10.9"
|
"npm": ">=10.9.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@adobe/css-tools": {
|
"node_modules/@adobe/css-tools": {
|
||||||
|
|||||||
@@ -215,8 +215,8 @@
|
|||||||
"generate:ui-api-docs": "npm run generate:check-const-test && typedoc --options typedoc.config.js"
|
"generate:ui-api-docs": "npm run generate:check-const-test && typedoc --options typedoc.config.js"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=22",
|
"node": ">=22.17.1",
|
||||||
"npm": ">=10.9"
|
"npm": ">=10.9.2"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"element-internals-polyfill": "^3.0.2"
|
"element-internals-polyfill": "^3.0.2"
|
||||||
|
|||||||
@@ -137,7 +137,7 @@ export class UmbContentTypeDesignEditorPropertiesElement extends UmbLitElement {
|
|||||||
public set containerId(value: string | null | undefined) {
|
public set containerId(value: string | null | undefined) {
|
||||||
if (value === this._containerId) return;
|
if (value === this._containerId) return;
|
||||||
this._containerId = value;
|
this._containerId = value;
|
||||||
this.createPropertyTypeWorkspaceRoutes();
|
this.#createPropertyTypeWorkspaceRoutes();
|
||||||
this.#propertyStructureHelper.setContainerId(value);
|
this.#propertyStructureHelper.setContainerId(value);
|
||||||
this.#addPropertyModal?.setUniquePathValue('container-id', value === null ? 'root' : value);
|
this.#addPropertyModal?.setUniquePathValue('container-id', value === null ? 'root' : value);
|
||||||
this.#editPropertyModal?.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);
|
#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 })
|
@property({ attribute: false })
|
||||||
editContentTypePath?: string;
|
editContentTypePath?: string;
|
||||||
@@ -199,22 +205,34 @@ export class UmbContentTypeDesignEditorPropertiesElement extends UmbLitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this._ownerContentTypeUnique = workspaceContext?.structure.getOwnerContentTypeUnique();
|
this._ownerContentTypeUnique = workspaceContext?.structure.getOwnerContentTypeUnique();
|
||||||
this.createPropertyTypeWorkspaceRoutes();
|
this.#createPropertyTypeWorkspaceRoutes();
|
||||||
|
|
||||||
this.observe(
|
const varyByCulturePromise =
|
||||||
workspaceContext?.variesByCulture,
|
this.observe(
|
||||||
(variesByCulture) => {
|
workspaceContext?.variesByCulture,
|
||||||
this._ownerContentTypeVariesByCulture = variesByCulture;
|
(variesByCulture) => {
|
||||||
},
|
this._ownerContentTypeVariesByCulture = variesByCulture;
|
||||||
'observeOwnerVariesByCulture',
|
},
|
||||||
);
|
'observeOwnerVariesByCulture',
|
||||||
this.observe(
|
)?.asPromise() ?? Promise.reject();
|
||||||
workspaceContext?.variesBySegment,
|
const varyBySegmentPromise =
|
||||||
(variesBySegment) => {
|
this.observe(
|
||||||
this._ownerContentTypeVariesBySegment = variesBySegment;
|
workspaceContext?.variesBySegment,
|
||||||
},
|
(variesBySegment) => {
|
||||||
'observeOwnerVariesBySegment',
|
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.observe(this.#propertyStructureHelper.propertyStructure, (propertyStructure) => {
|
||||||
this._properties = 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;
|
if (!this._ownerContentTypeUnique || this._containerId === undefined) return;
|
||||||
|
|
||||||
// Note: Route for adding a new property
|
// Note: Route for adding a new property
|
||||||
@@ -247,6 +271,12 @@ export class UmbContentTypeDesignEditorPropertiesElement extends UmbLitElement {
|
|||||||
}
|
}
|
||||||
preset.sortOrder = sortOrderInt;
|
preset.sortOrder = sortOrderInt;
|
||||||
}
|
}
|
||||||
|
if (this._ownerContentTypeVariesByCulture) {
|
||||||
|
preset.variesByCulture = true;
|
||||||
|
}
|
||||||
|
if (this._ownerContentTypeVariesBySegment) {
|
||||||
|
preset.variesBySegment = true;
|
||||||
|
}
|
||||||
return { data: { contentTypeUnique: this._ownerContentTypeUnique, preset: preset } };
|
return { data: { contentTypeUnique: this._ownerContentTypeUnique, preset: preset } };
|
||||||
})
|
})
|
||||||
.observeRouteBuilder((routeBuilder) => {
|
.observeRouteBuilder((routeBuilder) => {
|
||||||
|
|||||||
@@ -428,6 +428,8 @@ export abstract class UmbContentDetailWorkspaceContextBase<
|
|||||||
const repo = new UmbDataTypeDetailRepository(this);
|
const repo = new UmbDataTypeDetailRepository(this);
|
||||||
|
|
||||||
const propertyTypes = await this.structure.getContentTypeProperties();
|
const propertyTypes = await this.structure.getContentTypeProperties();
|
||||||
|
const contentTypeVariesByCulture = this.structure.getVariesByCulture();
|
||||||
|
const contentTypeVariesBySegment = this.structure.getVariesByCulture();
|
||||||
const valueDefinitions = await Promise.all(
|
const valueDefinitions = await Promise.all(
|
||||||
propertyTypes.map(async (property) => {
|
propertyTypes.map(async (property) => {
|
||||||
// TODO: Implement caching for data-type requests. [NL]
|
// TODO: Implement caching for data-type requests. [NL]
|
||||||
@@ -446,8 +448,9 @@ export abstract class UmbContentDetailWorkspaceContextBase<
|
|||||||
propertyEditorSchemaAlias: dataType.editorAlias,
|
propertyEditorSchemaAlias: dataType.editorAlias,
|
||||||
config: dataType.values,
|
config: dataType.values,
|
||||||
typeArgs: {
|
typeArgs: {
|
||||||
variesByCulture: property.variesByCulture,
|
// Only vary if the content type varies:
|
||||||
variesBySegment: property.variesBySegment,
|
variesByCulture: contentTypeVariesByCulture ? property.variesByCulture : false,
|
||||||
|
variesBySegment: contentTypeVariesBySegment ? property.variesBySegment : false,
|
||||||
} as UmbPropertyTypePresetModelTypeModel,
|
} as UmbPropertyTypePresetModelTypeModel,
|
||||||
} as UmbPropertyTypePresetModel;
|
} as UmbPropertyTypePresetModel;
|
||||||
}),
|
}),
|
||||||
|
|||||||
@@ -66,10 +66,12 @@ export class UmbPropertyTypeWorkspaceViewSettingsElement extends UmbLitElement i
|
|||||||
this.observe(
|
this.observe(
|
||||||
instance?.variesByCulture,
|
instance?.variesByCulture,
|
||||||
(variesByCulture) => (this._contentTypeVariesByCulture = variesByCulture),
|
(variesByCulture) => (this._contentTypeVariesByCulture = variesByCulture),
|
||||||
|
'observeVariesByCulture',
|
||||||
);
|
);
|
||||||
this.observe(
|
this.observe(
|
||||||
instance?.variesBySegment,
|
instance?.variesBySegment,
|
||||||
(variesBySegment) => (this._contentTypeVariesBySegment = variesBySegment),
|
(variesBySegment) => (this._contentTypeVariesBySegment = variesBySegment),
|
||||||
|
'observeVariesBySegment',
|
||||||
);
|
);
|
||||||
this._entityType = instance?.getEntityType();
|
this._entityType = instance?.getEntityType();
|
||||||
}).passContextAliasMatches();
|
}).passContextAliasMatches();
|
||||||
|
|||||||
Reference in New Issue
Block a user