@@ -50,7 +50,7 @@ export default class DimensionSwitcher extends PureComponent {
50
50
allowedPresets : PropTypes . object . isRequired ,
51
51
selectPreset : PropTypes . func . isRequired ,
52
52
getNodeByContextPath : PropTypes . func . isRequired ,
53
- documentNode : PropTypes . string . isRequired ,
53
+ documentNode : PropTypes . object . isRequired ,
54
54
setAllowed : PropTypes . func . isRequired ,
55
55
56
56
i18nRegistry : PropTypes . object . isRequired
@@ -159,6 +159,16 @@ export default class DimensionSwitcher extends PureComponent {
159
159
this . setState ( { isOpen : false } ) ;
160
160
}
161
161
162
+ createDirectDimensionsLink = ( dimensionName , presetConfigurationValues ) => {
163
+ const { documentNode} = this . props ;
164
+
165
+ const nodeContextPath = documentNode . properties . _path + ';' + dimensionName + '=' + presetConfigurationValues . join ( ',' )
166
+ const uri = new URL ( window . location . href ) ;
167
+ uri . searchParams . set ( 'node' , nodeContextPath ) ;
168
+ //console.log(uri.toString());
169
+ return uri . toString ( ) ;
170
+ }
171
+
162
172
renderSingleDimensionSelector = ( dimensionName , contentDimensionsObject ) => {
163
173
const dimensionConfiguration = contentDimensionsObject [ dimensionName ] ;
164
174
const icon = this . getDimensionIcon ( dimensionName , contentDimensionsObject ) ;
@@ -259,18 +269,16 @@ export default class DimensionSwitcher extends PureComponent {
259
269
return null ;
260
270
}
261
271
getDocumentDimensions ( dimensionName ) {
262
- const { getNodeByContextPath, documentNode, allowedPresets} = this . props ;
272
+ const { getNodeByContextPath, documentNode, allowedPresets, activePresets } = this . props ;
263
273
const currentDocumentNode = getNodeByContextPath ( documentNode . contextPath )
264
-
265
274
if ( ! currentDocumentNode . dimensions ) return allowedPresets [ dimensionName ]
266
275
267
276
let variants = currentDocumentNode ?. otherNodeVariants ;
268
277
let dimensions = [ currentDocumentNode . dimensions [ dimensionName ] ] ;
269
278
270
279
Object . values ( variants ) . forEach ( entry => {
271
- if ( entry [ dimensionName ] ) dimensions . push ( entry [ dimensionName ] ) ;
280
+ dimensions . push ( entry [ dimensionName ] ) ;
272
281
} ) ;
273
-
274
282
return dimensions ;
275
283
}
276
284
@@ -284,7 +292,8 @@ export default class DimensionSwitcher extends PureComponent {
284
292
return Object . assign ( { } , presetConfiguration , {
285
293
label : i18nRegistry . translate ( presetConfiguration . label ) ,
286
294
disallowed : ! ( allowedPresets [ dimensionName ] && allowedPresets [ dimensionName ] . includes ( presetName ) ) ,
287
- existing : ( documentDimensions . some ( dimension => presetConfiguration . values . includes ( dimension ) ) ) ,
295
+ existing : documentDimensions . some ( dimension => presetConfiguration . values . includes ( dimension ) ) ,
296
+ uri : this . createDirectDimensionsLink ( dimensionName , presetConfiguration . values )
288
297
} ) ;
289
298
} ) ;
290
299
}
0 commit comments