@payloadcms/next 3.0.0-beta.79 → 3.0.0-beta.81

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/templates/Default/Wrapper/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,cAAc,CAAA;AAErB,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAaA,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/templates/Default/Wrapper/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,cAAc,CAAA;AAErB,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAmBA,CAAA"}
@@ -4,12 +4,14 @@ import { useNav } from '@payloadcms/ui';
4
4
  import React from 'react';
5
5
  export const Wrapper = (props)=>{
6
6
  const { baseClass, children, className } = props;
7
- const { navOpen } = useNav();
7
+ const { hydrated, navOpen, shouldAnimate } = useNav();
8
8
  return /*#__PURE__*/ _jsx("div", {
9
9
  className: [
10
10
  baseClass,
11
11
  className,
12
- navOpen && `${baseClass}--nav-open`
12
+ navOpen && `${baseClass}--nav-open`,
13
+ shouldAnimate && `${baseClass}--nav-animate`,
14
+ hydrated && `${baseClass}--nav-hydrated`
13
15
  ].filter(Boolean).join(' '),
14
16
  children: children
15
17
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/templates/Default/Wrapper/index.tsx"],"sourcesContent":["'use client'\nimport { useNav } from '@payloadcms/ui'\nimport React from 'react'\n\nimport './index.scss'\n\nexport const Wrapper: React.FC<{\n baseClass?: string\n children?: React.ReactNode\n className?: string\n}> = (props) => {\n const { baseClass, children, className } = props\n const { navOpen } = useNav()\n\n return (\n <div\n className={[baseClass, className, navOpen && `${baseClass}--nav-open`]\n .filter(Boolean)\n .join(' ')}\n >\n {children}\n </div>\n )\n}\n"],"names":["useNav","React","Wrapper","props","baseClass","children","className","navOpen","div","filter","Boolean","join"],"mappings":"AAAA;;AACA,SAASA,MAAM,QAAQ,iBAAgB;AACvC,OAAOC,WAAW,QAAO;AAIzB,OAAO,MAAMC,UAIR,CAACC;IACJ,MAAM,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,SAAS,EAAE,GAAGH;IAC3C,MAAM,EAAEI,OAAO,EAAE,GAAGP;IAEpB,qBACE,KAACQ;QACCF,WAAW;YAACF;YAAWE;YAAWC,WAAW,CAAC,EAAEH,UAAU,UAAU,CAAC;SAAC,CACnEK,MAAM,CAACC,SACPC,IAAI,CAAC;kBAEPN;;AAGP,EAAC"}
1
+ {"version":3,"sources":["../../../../src/templates/Default/Wrapper/index.tsx"],"sourcesContent":["'use client'\nimport { useNav } from '@payloadcms/ui'\nimport React from 'react'\n\nimport './index.scss'\n\nexport const Wrapper: React.FC<{\n baseClass?: string\n children?: React.ReactNode\n className?: string\n}> = (props) => {\n const { baseClass, children, className } = props\n const { hydrated, navOpen, shouldAnimate } = useNav()\n\n return (\n <div\n className={[\n baseClass,\n className,\n navOpen && `${baseClass}--nav-open`,\n shouldAnimate && `${baseClass}--nav-animate`,\n hydrated && `${baseClass}--nav-hydrated`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n {children}\n </div>\n )\n}\n"],"names":["useNav","React","Wrapper","props","baseClass","children","className","hydrated","navOpen","shouldAnimate","div","filter","Boolean","join"],"mappings":"AAAA;;AACA,SAASA,MAAM,QAAQ,iBAAgB;AACvC,OAAOC,WAAW,QAAO;AAIzB,OAAO,MAAMC,UAIR,CAACC;IACJ,MAAM,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,SAAS,EAAE,GAAGH;IAC3C,MAAM,EAAEI,QAAQ,EAAEC,OAAO,EAAEC,aAAa,EAAE,GAAGT;IAE7C,qBACE,KAACU;QACCJ,WAAW;YACTF;YACAE;YACAE,WAAW,CAAC,EAAEJ,UAAU,UAAU,CAAC;YACnCK,iBAAiB,CAAC,EAAEL,UAAU,aAAa,CAAC;YAC5CG,YAAY,CAAC,EAAEH,UAAU,cAAc,CAAC;SACzC,CACEO,MAAM,CAACC,SACPC,IAAI,CAAC;kBAEPR;;AAGP,EAAC"}
@@ -4,17 +4,17 @@
4
4
  min-height: 100vh;
5
5
  display: grid;
6
6
  position: relative;
7
- grid-template-columns: 0 auto;
8
- transition: grid-template-columns var(--nav-trans-time) linear;
9
7
  isolation: isolate;
10
8
 
11
9
  @media (prefers-reduced-motion) {
12
10
  transition: none;
13
11
  }
14
12
 
13
+ &--nav-animate {
14
+ transition: grid-template-columns var(--nav-trans-time) linear;
15
+ }
16
+
15
17
  &--nav-open {
16
- width: 100%;
17
- grid-template-columns: var(--nav-width) auto;
18
18
 
19
19
  .template-default {
20
20
  &__nav-overlay {
@@ -23,3 +23,35 @@
23
23
  }
24
24
  }
25
25
  }
26
+
27
+ @media (min-width: 1441px) {
28
+ .template-default {
29
+ grid-template-columns: 0 auto;
30
+
31
+ &--nav-open {
32
+ grid-template-columns: var(--nav-width) auto;
33
+ }
34
+ }
35
+ }
36
+
37
+ @media (max-width: 1440px) {
38
+ .template-default--nav-hydrated.template-default--nav-open {
39
+ grid-template-columns: var(--nav-width) auto;
40
+ }
41
+
42
+ .template-default {
43
+ grid-template-columns: 1fr auto;
44
+
45
+ .nav {
46
+ display: none;
47
+ }
48
+
49
+ &--nav-hydrated {
50
+ grid-template-columns: 0 auto;
51
+
52
+ .nav {
53
+ display: unset;
54
+ }
55
+ }
56
+ }
57
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"getViewsFromConfig.d.ts","sourceRoot":"","sources":["../../../src/views/Document/getViewsFromConfig.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,yBAAyB,EACzB,eAAe,EACf,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAa9B,MAAM,MAAM,cAAc,CAAC,MAAM,SAAS,MAAM,IAAI;IAClD,SAAS,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAA;IAC5B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAA;CAC5C,CAAA;AAED,eAAO,MAAM,kBAAkB,+EAM5B;IACD,gBAAgB,CAAC,EAAE,yBAAyB,CAAA;IAC5C,MAAM,EAAE,eAAe,CAAA;IACvB,cAAc,EAAE,oBAAoB,GAAG,gBAAgB,CAAA;IACvD,YAAY,CAAC,EAAE,qBAAqB,CAAA;IACpC,aAAa,EAAE,MAAM,EAAE,CAAA;CACxB,KAAG;IACF,UAAU,EAAE,cAAc,CAAC,uBAAuB,CAAC,CAAA;IACnD,WAAW,EAAE,cAAc,CAAC,uBAAuB,CAAC,CAAA;IACpD;;OAEG;IACH,SAAS,EAAE,cAAc,CAAC,cAAc,CAAC,CAAA;CAC1C,GAAG,IA+TH,CAAA"}
1
+ {"version":3,"file":"getViewsFromConfig.d.ts","sourceRoot":"","sources":["../../../src/views/Document/getViewsFromConfig.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,yBAAyB,EACzB,eAAe,EACf,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAa9B,MAAM,MAAM,cAAc,CAAC,MAAM,SAAS,MAAM,IAAI;IAClD,SAAS,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAA;IAC5B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAA;CAC5C,CAAA;AAED,eAAO,MAAM,kBAAkB,+EAM5B;IACD,gBAAgB,CAAC,EAAE,yBAAyB,CAAA;IAC5C,MAAM,EAAE,eAAe,CAAA;IACvB,cAAc,EAAE,oBAAoB,GAAG,gBAAgB,CAAA;IACvD,YAAY,CAAC,EAAE,qBAAqB,CAAA;IACpC,aAAa,EAAE,MAAM,EAAE,CAAA;CACxB,KAAG;IACF,UAAU,EAAE,cAAc,CAAC,uBAAuB,CAAC,CAAA;IACnD,WAAW,EAAE,cAAc,CAAC,uBAAuB,CAAC,CAAA;IACpD;;OAEG;IACH,SAAS,EAAE,cAAc,CAAC,cAAc,CAAC,CAAA;CAC1C,GAAG,IA6SH,CAAA"}
@@ -16,295 +16,281 @@ export const getViewsFromConfig = ({ collectionConfig, config, docPermissions, g
16
16
  const views = collectionConfig && collectionConfig?.admin?.components?.views || globalConfig && globalConfig?.admin?.components?.views;
17
17
  const livePreviewEnabled = collectionConfig && collectionConfig?.admin?.livePreview || config?.admin?.livePreview?.collections?.includes(collectionConfig?.slug) || globalConfig && globalConfig?.admin?.livePreview || config?.admin?.livePreview?.globals?.includes(globalConfig?.slug);
18
18
  if (collectionConfig) {
19
- const editConfig = collectionConfig?.admin?.components?.views?.edit;
20
- const EditOverride = typeof editConfig === 'function' ? editConfig : null;
21
- if (EditOverride) {
22
- CustomView = EditOverride;
23
- }
24
- if (!EditOverride) {
25
- const [collectionEntity, collectionSlug, segment3, segment4, segment5, ...remainingSegments] = routeSegments;
26
- if (!docPermissions?.read?.permission) {
27
- notFound();
28
- } else {
29
- // `../:id`, or `../create`
30
- switch(routeSegments.length){
31
- case 3:
32
- {
33
- switch(segment3){
34
- case 'create':
35
- {
36
- if ('create' in docPermissions && docPermissions?.create?.permission) {
37
- CustomView = {
38
- payloadComponent: getCustomViewByKey(views, 'default')
39
- };
40
- DefaultView = {
41
- Component: DefaultEditView
42
- };
43
- } else {
44
- ErrorView = {
45
- Component: UnauthorizedView
46
- };
47
- }
48
- break;
49
- }
50
- default:
51
- {
19
+ const [collectionEntity, collectionSlug, segment3, segment4, segment5, ...remainingSegments] = routeSegments;
20
+ if (!docPermissions?.read?.permission) {
21
+ notFound();
22
+ } else {
23
+ // `../:id`, or `../create`
24
+ switch(routeSegments.length){
25
+ case 3:
26
+ {
27
+ switch(segment3){
28
+ case 'create':
29
+ {
30
+ if ('create' in docPermissions && docPermissions?.create?.permission) {
52
31
  CustomView = {
53
32
  payloadComponent: getCustomViewByKey(views, 'default')
54
33
  };
55
34
  DefaultView = {
56
35
  Component: DefaultEditView
57
36
  };
58
- break;
37
+ } else {
38
+ ErrorView = {
39
+ Component: UnauthorizedView
40
+ };
59
41
  }
60
- }
61
- break;
42
+ break;
43
+ }
44
+ default:
45
+ {
46
+ CustomView = {
47
+ payloadComponent: getCustomViewByKey(views, 'default')
48
+ };
49
+ DefaultView = {
50
+ Component: DefaultEditView
51
+ };
52
+ break;
53
+ }
62
54
  }
63
- // `../:id/api`, `../:id/preview`, `../:id/versions`, etc
64
- case 4:
65
- {
66
- switch(segment4){
67
- case 'api':
68
- {
69
- if (collectionConfig?.admin?.hideAPIURL !== true) {
70
- CustomView = {
71
- payloadComponent: getCustomViewByKey(views, 'api')
72
- };
73
- DefaultView = {
74
- Component: DefaultAPIView
75
- };
76
- }
77
- break;
78
- }
79
- case 'preview':
80
- {
81
- if (livePreviewEnabled) {
82
- DefaultView = {
83
- Component: DefaultLivePreviewView
84
- };
85
- }
86
- break;
55
+ break;
56
+ }
57
+ // `../:id/api`, `../:id/preview`, `../:id/versions`, etc
58
+ case 4:
59
+ {
60
+ switch(segment4){
61
+ case 'api':
62
+ {
63
+ if (collectionConfig?.admin?.hideAPIURL !== true) {
64
+ CustomView = {
65
+ payloadComponent: getCustomViewByKey(views, 'api')
66
+ };
67
+ DefaultView = {
68
+ Component: DefaultAPIView
69
+ };
87
70
  }
88
- case 'versions':
89
- {
90
- if (docPermissions?.readVersions?.permission) {
91
- CustomView = {
92
- payloadComponent: getCustomViewByKey(views, 'versions')
93
- };
94
- DefaultView = {
95
- Component: DefaultVersionsView
96
- };
97
- } else {
98
- ErrorView = {
99
- Component: UnauthorizedView
100
- };
101
- }
102
- break;
71
+ break;
72
+ }
73
+ case 'preview':
74
+ {
75
+ if (livePreviewEnabled) {
76
+ DefaultView = {
77
+ Component: DefaultLivePreviewView
78
+ };
103
79
  }
104
- default:
105
- {
106
- const baseRoute = [
107
- adminRoute !== '/' && adminRoute,
108
- 'collections',
109
- collectionSlug,
110
- segment3
111
- ].filter(Boolean).join('/');
112
- const currentRoute = [
113
- baseRoute,
114
- segment4,
115
- segment5,
116
- ...remainingSegments
117
- ].filter(Boolean).join('/');
80
+ break;
81
+ }
82
+ case 'versions':
83
+ {
84
+ if (docPermissions?.readVersions?.permission) {
118
85
  CustomView = {
119
- payloadComponent: getCustomViewByRoute({
120
- baseRoute,
121
- currentRoute,
122
- views
123
- })
86
+ payloadComponent: getCustomViewByKey(views, 'versions')
87
+ };
88
+ DefaultView = {
89
+ Component: DefaultVersionsView
90
+ };
91
+ } else {
92
+ ErrorView = {
93
+ Component: UnauthorizedView
124
94
  };
125
- break;
126
95
  }
127
- }
128
- break;
129
- }
130
- // `../:id/versions/:version`, etc
131
- default:
132
- {
133
- if (segment4 === 'versions') {
134
- if (docPermissions?.readVersions?.permission) {
96
+ break;
97
+ }
98
+ default:
99
+ {
100
+ const baseRoute = [
101
+ adminRoute !== '/' && adminRoute,
102
+ 'collections',
103
+ collectionSlug,
104
+ segment3
105
+ ].filter(Boolean).join('/');
106
+ const currentRoute = [
107
+ baseRoute,
108
+ segment4,
109
+ segment5,
110
+ ...remainingSegments
111
+ ].filter(Boolean).join('/');
135
112
  CustomView = {
136
- payloadComponent: getCustomViewByKey(views, 'version')
137
- };
138
- DefaultView = {
139
- Component: DefaultVersionView
140
- };
141
- } else {
142
- ErrorView = {
143
- Component: UnauthorizedView
113
+ payloadComponent: getCustomViewByRoute({
114
+ baseRoute,
115
+ currentRoute,
116
+ views
117
+ })
144
118
  };
119
+ break;
145
120
  }
146
- } else {
147
- const baseRoute = [
148
- adminRoute !== '/' && adminRoute,
149
- collectionEntity,
150
- collectionSlug,
151
- segment3
152
- ].filter(Boolean).join('/');
153
- const currentRoute = [
154
- baseRoute,
155
- segment4,
156
- segment5,
157
- ...remainingSegments
158
- ].filter(Boolean).join('/');
121
+ }
122
+ break;
123
+ }
124
+ // `../:id/versions/:version`, etc
125
+ default:
126
+ {
127
+ if (segment4 === 'versions') {
128
+ if (docPermissions?.readVersions?.permission) {
159
129
  CustomView = {
160
- payloadComponent: getCustomViewByRoute({
161
- baseRoute,
162
- currentRoute,
163
- views
164
- })
130
+ payloadComponent: getCustomViewByKey(views, 'version')
131
+ };
132
+ DefaultView = {
133
+ Component: DefaultVersionView
134
+ };
135
+ } else {
136
+ ErrorView = {
137
+ Component: UnauthorizedView
165
138
  };
166
139
  }
167
- break;
140
+ } else {
141
+ const baseRoute = [
142
+ adminRoute !== '/' && adminRoute,
143
+ collectionEntity,
144
+ collectionSlug,
145
+ segment3
146
+ ].filter(Boolean).join('/');
147
+ const currentRoute = [
148
+ baseRoute,
149
+ segment4,
150
+ segment5,
151
+ ...remainingSegments
152
+ ].filter(Boolean).join('/');
153
+ CustomView = {
154
+ payloadComponent: getCustomViewByRoute({
155
+ baseRoute,
156
+ currentRoute,
157
+ views
158
+ })
159
+ };
168
160
  }
169
- }
161
+ break;
162
+ }
170
163
  }
171
164
  }
172
165
  }
173
166
  if (globalConfig) {
174
- const editConfig = globalConfig?.admin?.components?.views?.edit;
175
- const EditOverride = typeof editConfig === 'function' ? editConfig : null;
176
- if (EditOverride) {
177
- CustomView = EditOverride;
178
- }
179
- if (!EditOverride) {
180
- const [globalEntity, globalSlug, segment3, ...remainingSegments] = routeSegments;
181
- if (!docPermissions?.read?.permission) {
182
- notFound();
183
- } else {
184
- switch(routeSegments.length){
185
- case 2:
186
- {
187
- CustomView = {
188
- payloadComponent: getCustomViewByKey(views, 'default')
189
- };
190
- DefaultView = {
191
- Component: DefaultEditView
192
- };
193
- break;
194
- }
195
- case 3:
196
- {
197
- // `../:slug/api`, `../:slug/preview`, `../:slug/versions`, etc
198
- switch(segment3){
199
- case 'api':
200
- {
201
- if (globalConfig?.admin?.hideAPIURL !== true) {
202
- CustomView = {
203
- payloadComponent: getCustomViewByKey(views, 'api')
204
- };
205
- DefaultView = {
206
- Component: DefaultAPIView
207
- };
208
- }
209
- break;
167
+ const [globalEntity, globalSlug, segment3, ...remainingSegments] = routeSegments;
168
+ if (!docPermissions?.read?.permission) {
169
+ notFound();
170
+ } else {
171
+ switch(routeSegments.length){
172
+ case 2:
173
+ {
174
+ CustomView = {
175
+ payloadComponent: getCustomViewByKey(views, 'default')
176
+ };
177
+ DefaultView = {
178
+ Component: DefaultEditView
179
+ };
180
+ break;
181
+ }
182
+ case 3:
183
+ {
184
+ // `../:slug/api`, `../:slug/preview`, `../:slug/versions`, etc
185
+ switch(segment3){
186
+ case 'api':
187
+ {
188
+ if (globalConfig?.admin?.hideAPIURL !== true) {
189
+ CustomView = {
190
+ payloadComponent: getCustomViewByKey(views, 'api')
191
+ };
192
+ DefaultView = {
193
+ Component: DefaultAPIView
194
+ };
210
195
  }
211
- case 'preview':
212
- {
213
- if (livePreviewEnabled) {
214
- DefaultView = {
215
- Component: DefaultLivePreviewView
216
- };
217
- }
218
- break;
196
+ break;
197
+ }
198
+ case 'preview':
199
+ {
200
+ if (livePreviewEnabled) {
201
+ DefaultView = {
202
+ Component: DefaultLivePreviewView
203
+ };
219
204
  }
220
- case 'versions':
221
- {
222
- if (docPermissions?.readVersions?.permission) {
223
- CustomView = {
224
- payloadComponent: getCustomViewByKey(views, 'versions')
225
- };
226
- DefaultView = {
227
- Component: DefaultVersionsView
228
- };
229
- } else {
230
- ErrorView = {
231
- Component: UnauthorizedView
232
- };
233
- }
234
- break;
205
+ break;
206
+ }
207
+ case 'versions':
208
+ {
209
+ if (docPermissions?.readVersions?.permission) {
210
+ CustomView = {
211
+ payloadComponent: getCustomViewByKey(views, 'versions')
212
+ };
213
+ DefaultView = {
214
+ Component: DefaultVersionsView
215
+ };
216
+ } else {
217
+ ErrorView = {
218
+ Component: UnauthorizedView
219
+ };
235
220
  }
236
- default:
237
- {
238
- if (docPermissions?.read?.permission) {
239
- const baseRoute = [
240
- adminRoute,
241
- globalEntity,
242
- globalSlug,
243
- segment3
244
- ].filter(Boolean).join('/');
245
- const currentRoute = [
221
+ break;
222
+ }
223
+ default:
224
+ {
225
+ if (docPermissions?.read?.permission) {
226
+ const baseRoute = [
227
+ adminRoute,
228
+ globalEntity,
229
+ globalSlug,
230
+ segment3
231
+ ].filter(Boolean).join('/');
232
+ const currentRoute = [
233
+ baseRoute,
234
+ segment3,
235
+ ...remainingSegments
236
+ ].filter(Boolean).join('/');
237
+ CustomView = {
238
+ payloadComponent: getCustomViewByRoute({
246
239
  baseRoute,
247
- segment3,
248
- ...remainingSegments
249
- ].filter(Boolean).join('/');
250
- CustomView = {
251
- payloadComponent: getCustomViewByRoute({
252
- baseRoute,
253
- currentRoute,
254
- views
255
- })
256
- };
257
- DefaultView = {
258
- Component: DefaultEditView
259
- };
260
- } else {
261
- ErrorView = {
262
- Component: UnauthorizedView
263
- };
264
- }
265
- break;
240
+ currentRoute,
241
+ views
242
+ })
243
+ };
244
+ DefaultView = {
245
+ Component: DefaultEditView
246
+ };
247
+ } else {
248
+ ErrorView = {
249
+ Component: UnauthorizedView
250
+ };
266
251
  }
267
- }
268
- break;
269
- }
270
- default:
271
- {
272
- // `../:slug/versions/:version`, etc
273
- if (segment3 === 'versions') {
274
- if (docPermissions?.readVersions?.permission) {
275
- CustomView = {
276
- payloadComponent: getCustomViewByKey(views, 'version')
277
- };
278
- DefaultView = {
279
- Component: DefaultVersionView
280
- };
281
- } else {
282
- ErrorView = {
283
- Component: UnauthorizedView
284
- };
252
+ break;
285
253
  }
286
- } else {
287
- const baseRoute = [
288
- adminRoute !== '/' && adminRoute,
289
- 'globals',
290
- globalSlug
291
- ].filter(Boolean).join('/');
292
- const currentRoute = [
293
- baseRoute,
294
- segment3,
295
- ...remainingSegments
296
- ].filter(Boolean).join('/');
254
+ }
255
+ break;
256
+ }
257
+ default:
258
+ {
259
+ // `../:slug/versions/:version`, etc
260
+ if (segment3 === 'versions') {
261
+ if (docPermissions?.readVersions?.permission) {
297
262
  CustomView = {
298
- payloadComponent: getCustomViewByRoute({
299
- baseRoute,
300
- currentRoute,
301
- views
302
- })
263
+ payloadComponent: getCustomViewByKey(views, 'version')
264
+ };
265
+ DefaultView = {
266
+ Component: DefaultVersionView
267
+ };
268
+ } else {
269
+ ErrorView = {
270
+ Component: UnauthorizedView
303
271
  };
304
272
  }
305
- break;
273
+ } else {
274
+ const baseRoute = [
275
+ adminRoute !== '/' && adminRoute,
276
+ 'globals',
277
+ globalSlug
278
+ ].filter(Boolean).join('/');
279
+ const currentRoute = [
280
+ baseRoute,
281
+ segment3,
282
+ ...remainingSegments
283
+ ].filter(Boolean).join('/');
284
+ CustomView = {
285
+ payloadComponent: getCustomViewByRoute({
286
+ baseRoute,
287
+ currentRoute,
288
+ views
289
+ })
290
+ };
306
291
  }
307
- }
292
+ break;
293
+ }
308
294
  }
309
295
  }
310
296
  }