@@ -137,7 +137,7 @@ export class UmbContentTypeDesignEditorPropertiesElement extends UmbLitElement {
137137 public set containerId ( value : string | null | undefined ) {
138138 if ( value === this . _containerId ) return ;
139139 this . _containerId = value ;
140- this . createPropertyTypeWorkspaceRoutes ( ) ;
140+ this . # createPropertyTypeWorkspaceRoutes( ) ;
141141 this . #propertyStructureHelper. setContainerId ( value ) ;
142142 this . #addPropertyModal?. setUniquePathValue ( 'container-id' , value === null ? 'root' : value ) ;
143143 this . #editPropertyModal?. setUniquePathValue ( 'container-id' , value === null ? 'root' : value ) ;
@@ -153,6 +153,12 @@ export class UmbContentTypeDesignEditorPropertiesElement extends UmbLitElement {
153153 > ;
154154
155155 #propertyStructureHelper = new UmbContentTypePropertyStructureHelper < UmbContentTypeModel > ( this ) ;
156+ #initResolver?: ( ) => void ;
157+ #initReject?: ( reason ?: any ) => void ;
158+ #init = new Promise < void > ( ( resolve , reject ) => {
159+ this . #initResolver = resolve ;
160+ this . #initReject = reject ;
161+ } ) ;
156162
157163 @property ( { attribute : false } )
158164 editContentTypePath ?: string ;
@@ -199,30 +205,48 @@ export class UmbContentTypeDesignEditorPropertiesElement extends UmbLitElement {
199205 }
200206
201207 this . _ownerContentTypeUnique = workspaceContext ?. structure . getOwnerContentTypeUnique ( ) ;
202- this . createPropertyTypeWorkspaceRoutes ( ) ;
203-
204- this . observe (
205- workspaceContext ?. variesByCulture ,
206- ( variesByCulture ) => {
207- this . _ownerContentTypeVariesByCulture = variesByCulture ;
208- } ,
209- 'observeOwnerVariesByCulture' ,
210- ) ;
211- this . observe (
212- workspaceContext ?. variesBySegment ,
213- ( variesBySegment ) => {
214- this . _ownerContentTypeVariesBySegment = variesBySegment ;
215- } ,
216- 'observeOwnerVariesBySegment' ,
217- ) ;
208+ this . #createPropertyTypeWorkspaceRoutes( ) ;
209+
210+ const varyByCulturePromise =
211+ this . observe (
212+ workspaceContext ?. variesByCulture ,
213+ ( variesByCulture ) => {
214+ this . _ownerContentTypeVariesByCulture = variesByCulture ;
215+ } ,
216+ 'observeOwnerVariesByCulture' ,
217+ ) ?. asPromise ( ) ?? Promise . reject ( ) ;
218+ const varyBySegmentPromise =
219+ this . observe (
220+ workspaceContext ?. variesBySegment ,
221+ ( variesBySegment ) => {
222+ this . _ownerContentTypeVariesBySegment = variesBySegment ;
223+ } ,
224+ 'observeOwnerVariesBySegment' ,
225+ ) ?. asPromise ( ) ?? Promise . reject ( ) ;
226+
227+ if ( this . #initResolver) {
228+ Promise . all ( [ varyByCulturePromise , varyBySegmentPromise ] )
229+ . then ( ( ) => {
230+ this . #initResolver?.( ) ;
231+ this . #initResolver = undefined ;
232+ this . #initReject = undefined ;
233+ } )
234+ . catch ( ( ) => { } ) ;
235+ }
218236 } ) ;
219237 this . observe ( this . #propertyStructureHelper. propertyStructure , ( propertyStructure ) => {
220238 this . _properties = propertyStructure ;
221239 this . #sorter. setModel ( this . _properties ) ;
222240 } ) ;
223241 }
224242
225- createPropertyTypeWorkspaceRoutes ( ) {
243+ override disconnectedCallback ( ) : void {
244+ super . disconnectedCallback ( ) ;
245+ this . #initReject?.( new Error ( 'Component disconnected' ) ) ;
246+ }
247+
248+ async #createPropertyTypeWorkspaceRoutes( ) {
249+ await this . #init;
226250 if ( ! this . _ownerContentTypeUnique || this . _containerId === undefined ) return ;
227251
228252 // Note: Route for adding a new property
@@ -247,6 +271,12 @@ export class UmbContentTypeDesignEditorPropertiesElement extends UmbLitElement {
247271 }
248272 preset . sortOrder = sortOrderInt ;
249273 }
274+ if ( this . _ownerContentTypeVariesByCulture ) {
275+ preset . variesByCulture = true ;
276+ }
277+ if ( this . _ownerContentTypeVariesBySegment ) {
278+ preset . variesBySegment = true ;
279+ }
250280 return { data : { contentTypeUnique : this . _ownerContentTypeUnique , preset : preset } } ;
251281 } )
252282 . observeRouteBuilder ( ( routeBuilder ) => {
0 commit comments