@payloadcms/next 3.0.0-canary.98cbdb9 → 3.0.0-canary.9de3ffd

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.
Files changed (63) hide show
  1. package/dist/elements/DocumentHeader/Tabs/index.d.ts.map +1 -1
  2. package/dist/elements/DocumentHeader/Tabs/index.js.map +1 -1
  3. package/dist/elements/DocumentHeader/index.scss +1 -1
  4. package/dist/prod/styles.css +1 -1
  5. package/dist/utilities/getPayloadHMR.d.ts +1 -1
  6. package/dist/utilities/getPayloadHMR.d.ts.map +1 -1
  7. package/dist/utilities/getPayloadHMR.js +3 -2
  8. package/dist/utilities/getPayloadHMR.js.map +1 -1
  9. package/dist/utilities/meta.js +4 -1
  10. package/dist/utilities/meta.js.map +1 -1
  11. package/dist/views/API/meta.d.ts.map +1 -1
  12. package/dist/views/API/meta.js +10 -6
  13. package/dist/views/API/meta.js.map +1 -1
  14. package/dist/views/Account/Settings/index.d.ts +3 -3
  15. package/dist/views/Account/Settings/index.d.ts.map +1 -1
  16. package/dist/views/Account/Settings/index.js +1 -0
  17. package/dist/views/Account/Settings/index.js.map +1 -1
  18. package/dist/views/Document/getCustomViewByRoute.d.ts +4 -1
  19. package/dist/views/Document/getCustomViewByRoute.d.ts.map +1 -1
  20. package/dist/views/Document/getCustomViewByRoute.js +16 -6
  21. package/dist/views/Document/getCustomViewByRoute.js.map +1 -1
  22. package/dist/views/Document/getMetaBySegment.d.ts +2 -1
  23. package/dist/views/Document/getMetaBySegment.d.ts.map +1 -1
  24. package/dist/views/Document/getMetaBySegment.js +73 -28
  25. package/dist/views/Document/getMetaBySegment.js.map +1 -1
  26. package/dist/views/Document/getViewsFromConfig.d.ts +9 -3
  27. package/dist/views/Document/getViewsFromConfig.d.ts.map +1 -1
  28. package/dist/views/Document/getViewsFromConfig.js +90 -47
  29. package/dist/views/Document/getViewsFromConfig.js.map +1 -1
  30. package/dist/views/Edit/Default/Auth/APIKey.d.ts.map +1 -1
  31. package/dist/views/Edit/Default/Auth/APIKey.js +1 -0
  32. package/dist/views/Edit/Default/Auth/APIKey.js.map +1 -1
  33. package/dist/views/Edit/meta.d.ts.map +1 -1
  34. package/dist/views/Edit/meta.js +30 -19
  35. package/dist/views/Edit/meta.js.map +1 -1
  36. package/dist/views/List/Default/index.d.ts.map +1 -1
  37. package/dist/views/List/Default/index.js +57 -43
  38. package/dist/views/List/Default/index.js.map +1 -1
  39. package/dist/views/List/Default/index.scss +3 -11
  40. package/dist/views/LivePreview/meta.d.ts.map +1 -1
  41. package/dist/views/LivePreview/meta.js +2 -1
  42. package/dist/views/LivePreview/meta.js.map +1 -1
  43. package/dist/views/Root/generateCustomViewMetadata.d.ts +11 -0
  44. package/dist/views/Root/generateCustomViewMetadata.d.ts.map +1 -0
  45. package/dist/views/Root/generateCustomViewMetadata.js +23 -0
  46. package/dist/views/Root/generateCustomViewMetadata.js.map +1 -0
  47. package/dist/views/Root/getCustomViewByRoute.d.ts +6 -2
  48. package/dist/views/Root/getCustomViewByRoute.d.ts.map +1 -1
  49. package/dist/views/Root/getCustomViewByRoute.js +20 -5
  50. package/dist/views/Root/getCustomViewByRoute.js.map +1 -1
  51. package/dist/views/Root/getViewFromConfig.d.ts.map +1 -1
  52. package/dist/views/Root/getViewFromConfig.js +7 -7
  53. package/dist/views/Root/getViewFromConfig.js.map +1 -1
  54. package/dist/views/Root/meta.d.ts.map +1 -1
  55. package/dist/views/Root/meta.js +19 -2
  56. package/dist/views/Root/meta.js.map +1 -1
  57. package/dist/views/Version/meta.d.ts.map +1 -1
  58. package/dist/views/Version/meta.js +24 -19
  59. package/dist/views/Version/meta.js.map +1 -1
  60. package/dist/views/Versions/meta.d.ts.map +1 -1
  61. package/dist/views/Versions/meta.js +24 -19
  62. package/dist/views/Versions/meta.js.map +1 -1
  63. package/package.json +7 -7
@@ -1,27 +1,30 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { getTranslation } from '@payloadcms/translations';
4
- import { Button, DeleteMany, EditMany, Gutter, ListControls, ListSelection, Pagination, PerPage, Pill, PublishMany, RelationshipProvider, RenderComponent, SelectionProvider, SetViewActions, StaggeredShimmers, Table, UnpublishMany, ViewDescription, useConfig, useEditDepth, useListInfo, useListQuery, useSearchParams, useStepNav, useTranslation, useWindowInfo } from '@payloadcms/ui';
4
+ import { BulkUploadDrawer, Button, DeleteMany, EditMany, Gutter, ListControls, ListHeader, ListSelection, Pagination, PerPage, PopupList, PublishMany, RelationshipProvider, RenderComponent, SelectionProvider, SetViewActions, StaggeredShimmers, Table, UnpublishMany, ViewDescription, bulkUploadDrawerSlug, useConfig, useEditDepth, useListInfo, useListQuery, useModal, useRouteCache, useSearchParams, useStepNav, useTranslation, useWindowInfo } from '@payloadcms/ui';
5
5
  import LinkImport from 'next/link.js';
6
6
  import { formatFilesize, isNumber } from 'payload/shared';
7
7
  import React, { Fragment, useEffect } from 'react';
8
8
  const baseClass = 'collection-list';
9
9
  const Link = LinkImport.default || LinkImport;
10
10
  export const DefaultListView = ()=>{
11
- const { Header, collectionSlug, hasCreatePermission, newDocumentURL } = useListInfo();
11
+ const { Header, beforeActions, collectionSlug, disableBulkDelete, disableBulkEdit, hasCreatePermission, newDocumentURL } = useListInfo();
12
12
  const { data, defaultLimit, handlePageChange, handlePerPageChange } = useListQuery();
13
13
  const { searchParams } = useSearchParams();
14
+ const { openModal } = useModal();
15
+ const { clearRouteCache } = useRouteCache();
14
16
  const { getEntityConfig } = useConfig();
15
17
  const collectionConfig = getEntityConfig({
16
18
  collectionSlug
17
19
  });
18
20
  const { admin: { components: { Description, afterList, afterListTable, beforeList, beforeListTable, views: { list: { actions } } }, description }, fields, labels } = collectionConfig;
19
- const { i18n } = useTranslation();
21
+ const { i18n, t } = useTranslation();
20
22
  const drawerDepth = useEditDepth();
21
23
  const { setStepNav } = useStepNav();
22
24
  const { breakpoints: { s: smallBreak } } = useWindowInfo();
23
25
  let docs = data.docs || [];
24
- if (collectionConfig.upload) {
26
+ const isUploadCollection = Boolean(collectionConfig.upload);
27
+ if (isUploadCollection) {
25
28
  docs = docs?.map((doc)=>{
26
29
  return {
27
30
  ...doc,
@@ -57,35 +60,41 @@ export const DefaultListView = ()=>{
57
60
  children: /*#__PURE__*/ _jsxs(Gutter, {
58
61
  className: `${baseClass}__wrap`,
59
62
  children: [
60
- /*#__PURE__*/ _jsx("header", {
61
- className: `${baseClass}__header`,
62
- children: Header || /*#__PURE__*/ _jsxs(Fragment, {
63
- children: [
64
- /*#__PURE__*/ _jsx("h1", {
65
- children: getTranslation(labels?.plural, i18n)
66
- }),
67
- hasCreatePermission && /*#__PURE__*/ _jsx(Pill, {
68
- "aria-label": i18n.t('general:createNewLabel', {
69
- label: getTranslation(labels?.singular, i18n)
70
- }),
71
- to: newDocumentURL,
72
- children: i18n.t('general:createNew')
73
- }),
74
- !smallBreak && /*#__PURE__*/ _jsx(ListSelection, {
75
- label: getTranslation(collectionConfig.labels.plural, i18n)
76
- }),
77
- description && /*#__PURE__*/ _jsx("div", {
78
- className: `${baseClass}__sub-header`,
79
- children: /*#__PURE__*/ _jsx(RenderComponent, {
80
- Component: ViewDescription,
81
- clientProps: {
82
- description
83
- },
84
- mappedComponent: Description
63
+ Header || /*#__PURE__*/ _jsxs(ListHeader, {
64
+ heading: getTranslation(labels?.plural, i18n),
65
+ children: [
66
+ hasCreatePermission && /*#__PURE__*/ _jsx(Button, {
67
+ Link: Link,
68
+ SubMenuPopupContent: isUploadCollection && collectionConfig.upload.bulkUpload ? /*#__PURE__*/ _jsx(PopupList.ButtonGroup, {
69
+ children: /*#__PURE__*/ _jsx(PopupList.Button, {
70
+ onClick: ()=>openModal(bulkUploadDrawerSlug),
71
+ children: t('upload:bulkUpload')
85
72
  })
73
+ }) : null,
74
+ "aria-label": i18n.t('general:createNewLabel', {
75
+ label: getTranslation(labels?.singular, i18n)
76
+ }),
77
+ buttonStyle: "pill",
78
+ el: "link",
79
+ size: "small",
80
+ to: newDocumentURL,
81
+ children: i18n.t('general:createNew')
82
+ }),
83
+ !smallBreak && /*#__PURE__*/ _jsx(ListSelection, {
84
+ label: getTranslation(collectionConfig.labels.plural, i18n)
85
+ }),
86
+ (description || Description) && /*#__PURE__*/ _jsx("div", {
87
+ className: `${baseClass}__sub-header`,
88
+ children: /*#__PURE__*/ _jsx(ViewDescription, {
89
+ Description: Description,
90
+ description: description
86
91
  })
87
- ]
88
- })
92
+ }),
93
+ isUploadCollection && collectionConfig.upload.bulkUpload ? /*#__PURE__*/ _jsx(BulkUploadDrawer, {
94
+ collectionSlug: collectionSlug,
95
+ onSuccess: ()=>clearRouteCache()
96
+ }) : null
97
+ ]
89
98
  }),
90
99
  /*#__PURE__*/ _jsx(ListControls, {
91
100
  collectionConfig: collectionConfig,
@@ -141,7 +150,7 @@ export const DefaultListView = ()=>{
141
150
  limit: data.limit,
142
151
  nextPage: data.nextPage,
143
152
  numberOfNeighbors: 1,
144
- onChange: handlePageChange,
153
+ onChange: (page)=>void handlePageChange(page),
145
154
  page: data.page,
146
155
  prevPage: data.prevPage,
147
156
  totalPages: data.totalPages
@@ -161,7 +170,7 @@ export const DefaultListView = ()=>{
161
170
  ]
162
171
  }),
163
172
  /*#__PURE__*/ _jsx(PerPage, {
164
- handleChange: handlePerPageChange,
173
+ handleChange: (limit)=>void handlePerPageChange(limit),
165
174
  limit: isNumber(searchParams?.limit) ? Number(searchParams.limit) : defaultLimit,
166
175
  limits: collectionConfig?.admin?.pagination?.limits,
167
176
  resetPage: data.totalDocs <= data.pagingCounter
@@ -175,17 +184,22 @@ export const DefaultListView = ()=>{
175
184
  /*#__PURE__*/ _jsxs("div", {
176
185
  className: `${baseClass}__list-selection-actions`,
177
186
  children: [
178
- /*#__PURE__*/ _jsx(EditMany, {
179
- collection: collectionConfig,
180
- fields: fields
181
- }),
182
- /*#__PURE__*/ _jsx(PublishMany, {
183
- collection: collectionConfig
184
- }),
185
- /*#__PURE__*/ _jsx(UnpublishMany, {
186
- collection: collectionConfig
187
+ beforeActions && beforeActions,
188
+ !disableBulkEdit && /*#__PURE__*/ _jsxs(Fragment, {
189
+ children: [
190
+ /*#__PURE__*/ _jsx(EditMany, {
191
+ collection: collectionConfig,
192
+ fields: fields
193
+ }),
194
+ /*#__PURE__*/ _jsx(PublishMany, {
195
+ collection: collectionConfig
196
+ }),
197
+ /*#__PURE__*/ _jsx(UnpublishMany, {
198
+ collection: collectionConfig
199
+ })
200
+ ]
187
201
  }),
188
- /*#__PURE__*/ _jsx(DeleteMany, {
202
+ !disableBulkDelete && /*#__PURE__*/ _jsx(DeleteMany, {
189
203
  collection: collectionConfig
190
204
  })
191
205
  ]
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/views/List/Default/index.tsx"],"sourcesContent":["'use client'\n\nimport type { ClientCollectionConfig } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n Button,\n DeleteMany,\n EditMany,\n Gutter,\n ListControls,\n ListSelection,\n Pagination,\n PerPage,\n Pill,\n PublishMany,\n RelationshipProvider,\n RenderComponent,\n SelectionProvider,\n SetViewActions,\n StaggeredShimmers,\n Table,\n UnpublishMany,\n ViewDescription,\n useConfig,\n useEditDepth,\n useListInfo,\n useListQuery,\n useSearchParams,\n useStepNav,\n useTranslation,\n useWindowInfo,\n} from '@payloadcms/ui'\nimport LinkImport from 'next/link.js'\nimport { formatFilesize, isNumber } from 'payload/shared'\nimport React, { Fragment, useEffect } from 'react'\n\nimport './index.scss'\n\nconst baseClass = 'collection-list'\nconst Link = (LinkImport.default || LinkImport) as unknown as typeof LinkImport.default\n\nexport const DefaultListView: React.FC = () => {\n const { Header, collectionSlug, hasCreatePermission, newDocumentURL } = useListInfo()\n const { data, defaultLimit, handlePageChange, handlePerPageChange } = useListQuery()\n const { searchParams } = useSearchParams()\n\n const { getEntityConfig } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug }) as ClientCollectionConfig\n\n const {\n admin: {\n components: {\n Description,\n afterList,\n afterListTable,\n beforeList,\n beforeListTable,\n views: {\n list: { actions },\n },\n },\n description,\n },\n fields,\n labels,\n } = collectionConfig\n\n const { i18n } = useTranslation()\n\n const drawerDepth = useEditDepth()\n\n const { setStepNav } = useStepNav()\n\n const {\n breakpoints: { s: smallBreak },\n } = useWindowInfo()\n\n let docs = data.docs || []\n\n if (collectionConfig.upload) {\n docs = docs?.map((doc) => {\n return {\n ...doc,\n filesize: formatFilesize(doc.filesize),\n }\n })\n }\n\n useEffect(() => {\n if (drawerDepth <= 1) {\n setStepNav([\n {\n label: labels?.plural,\n },\n ])\n }\n }, [setStepNav, labels, drawerDepth])\n\n return (\n <div className={`${baseClass} ${baseClass}--${collectionSlug}`}>\n <SetViewActions actions={actions} />\n <RenderComponent mappedComponent={beforeList} />\n <SelectionProvider docs={data.docs} totalDocs={data.totalDocs}>\n <Gutter className={`${baseClass}__wrap`}>\n <header className={`${baseClass}__header`}>\n {Header || (\n <Fragment>\n <h1>{getTranslation(labels?.plural, i18n)}</h1>\n {hasCreatePermission && (\n <Pill\n aria-label={i18n.t('general:createNewLabel', {\n label: getTranslation(labels?.singular, i18n),\n })}\n to={newDocumentURL}\n >\n {i18n.t('general:createNew')}\n </Pill>\n )}\n {!smallBreak && (\n <ListSelection label={getTranslation(collectionConfig.labels.plural, i18n)} />\n )}\n {description && (\n <div className={`${baseClass}__sub-header`}>\n <RenderComponent\n Component={ViewDescription}\n clientProps={{ description }}\n mappedComponent={Description}\n />\n </div>\n )}\n </Fragment>\n )}\n </header>\n <ListControls collectionConfig={collectionConfig} fields={fields} />\n <RenderComponent mappedComponent={beforeListTable} />\n {!data.docs && (\n <StaggeredShimmers\n className={[`${baseClass}__shimmer`, `${baseClass}__shimmer--rows`].join(' ')}\n count={6}\n />\n )}\n {data.docs && data.docs.length > 0 && (\n <RelationshipProvider>\n <Table\n customCellContext={{\n collectionSlug,\n uploadConfig: collectionConfig.upload,\n }}\n data={docs}\n fields={fields}\n />\n </RelationshipProvider>\n )}\n {data.docs && data.docs.length === 0 && (\n <div className={`${baseClass}__no-results`}>\n <p>{i18n.t('general:noResults', { label: getTranslation(labels?.plural, i18n) })}</p>\n {hasCreatePermission && newDocumentURL && (\n <Button Link={Link} el=\"link\" to={newDocumentURL}>\n {i18n.t('general:createNewLabel', {\n label: getTranslation(labels?.singular, i18n),\n })}\n </Button>\n )}\n </div>\n )}\n <RenderComponent mappedComponent={afterListTable} />\n {data.docs && data.docs.length > 0 && (\n <div className={`${baseClass}__page-controls`}>\n <Pagination\n hasNextPage={data.hasNextPage}\n hasPrevPage={data.hasPrevPage}\n limit={data.limit}\n nextPage={data.nextPage}\n numberOfNeighbors={1}\n onChange={handlePageChange}\n page={data.page}\n prevPage={data.prevPage}\n totalPages={data.totalPages}\n />\n {data?.totalDocs > 0 && (\n <Fragment>\n <div className={`${baseClass}__page-info`}>\n {data.page * data.limit - (data.limit - 1)}-\n {data.totalPages > 1 && data.totalPages !== data.page\n ? data.limit * data.page\n : data.totalDocs}{' '}\n {i18n.t('general:of')} {data.totalDocs}\n </div>\n <PerPage\n handleChange={handlePerPageChange}\n limit={\n isNumber(searchParams?.limit) ? Number(searchParams.limit) : defaultLimit\n }\n limits={collectionConfig?.admin?.pagination?.limits}\n resetPage={data.totalDocs <= data.pagingCounter}\n />\n {smallBreak && (\n <div className={`${baseClass}__list-selection`}>\n <ListSelection label={getTranslation(collectionConfig.labels.plural, i18n)} />\n <div className={`${baseClass}__list-selection-actions`}>\n <EditMany collection={collectionConfig} fields={fields} />\n <PublishMany collection={collectionConfig} />\n <UnpublishMany collection={collectionConfig} />\n <DeleteMany collection={collectionConfig} />\n </div>\n </div>\n )}\n </Fragment>\n )}\n </div>\n )}\n </Gutter>\n </SelectionProvider>\n <RenderComponent mappedComponent={afterList} />\n </div>\n )\n}\n"],"names":["getTranslation","Button","DeleteMany","EditMany","Gutter","ListControls","ListSelection","Pagination","PerPage","Pill","PublishMany","RelationshipProvider","RenderComponent","SelectionProvider","SetViewActions","StaggeredShimmers","Table","UnpublishMany","ViewDescription","useConfig","useEditDepth","useListInfo","useListQuery","useSearchParams","useStepNav","useTranslation","useWindowInfo","LinkImport","formatFilesize","isNumber","React","Fragment","useEffect","baseClass","Link","default","DefaultListView","Header","collectionSlug","hasCreatePermission","newDocumentURL","data","defaultLimit","handlePageChange","handlePerPageChange","searchParams","getEntityConfig","collectionConfig","admin","components","Description","afterList","afterListTable","beforeList","beforeListTable","views","list","actions","description","fields","labels","i18n","drawerDepth","setStepNav","breakpoints","s","smallBreak","docs","upload","map","doc","filesize","label","plural","div","className","mappedComponent","totalDocs","header","h1","aria-label","t","singular","to","Component","clientProps","join","count","length","customCellContext","uploadConfig","p","el","hasNextPage","hasPrevPage","limit","nextPage","numberOfNeighbors","onChange","page","prevPage","totalPages","handleChange","Number","limits","pagination","resetPage","pagingCounter","collection"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/views/List/Default/index.tsx"],"sourcesContent":["'use client'\n\nimport type { ClientCollectionConfig } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n BulkUploadDrawer,\n Button,\n DeleteMany,\n EditMany,\n Gutter,\n ListControls,\n ListHeader,\n ListSelection,\n Pagination,\n PerPage,\n PopupList,\n PublishMany,\n RelationshipProvider,\n RenderComponent,\n SelectionProvider,\n SetViewActions,\n StaggeredShimmers,\n Table,\n UnpublishMany,\n ViewDescription,\n bulkUploadDrawerSlug,\n useConfig,\n useEditDepth,\n useListInfo,\n useListQuery,\n useModal,\n useRouteCache,\n useSearchParams,\n useStepNav,\n useTranslation,\n useWindowInfo,\n} from '@payloadcms/ui'\nimport LinkImport from 'next/link.js'\nimport { formatFilesize, isNumber } from 'payload/shared'\nimport React, { Fragment, useEffect } from 'react'\n\nimport './index.scss'\n\nconst baseClass = 'collection-list'\nconst Link = (LinkImport.default || LinkImport) as unknown as typeof LinkImport.default\n\nexport const DefaultListView: React.FC = () => {\n const {\n Header,\n beforeActions,\n collectionSlug,\n disableBulkDelete,\n disableBulkEdit,\n hasCreatePermission,\n newDocumentURL,\n } = useListInfo()\n\n const { data, defaultLimit, handlePageChange, handlePerPageChange } = useListQuery()\n const { searchParams } = useSearchParams()\n const { openModal } = useModal()\n const { clearRouteCache } = useRouteCache()\n\n const { getEntityConfig } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug }) as ClientCollectionConfig\n\n const {\n admin: {\n components: {\n Description,\n afterList,\n afterListTable,\n beforeList,\n beforeListTable,\n views: {\n list: { actions },\n },\n },\n description,\n },\n fields,\n labels,\n } = collectionConfig\n\n const { i18n, t } = useTranslation()\n\n const drawerDepth = useEditDepth()\n\n const { setStepNav } = useStepNav()\n\n const {\n breakpoints: { s: smallBreak },\n } = useWindowInfo()\n\n let docs = data.docs || []\n\n const isUploadCollection = Boolean(collectionConfig.upload)\n\n if (isUploadCollection) {\n docs = docs?.map((doc) => {\n return {\n ...doc,\n filesize: formatFilesize(doc.filesize),\n }\n })\n }\n\n useEffect(() => {\n if (drawerDepth <= 1) {\n setStepNav([\n {\n label: labels?.plural,\n },\n ])\n }\n }, [setStepNav, labels, drawerDepth])\n\n return (\n <div className={`${baseClass} ${baseClass}--${collectionSlug}`}>\n <SetViewActions actions={actions} />\n <RenderComponent mappedComponent={beforeList} />\n <SelectionProvider docs={data.docs} totalDocs={data.totalDocs}>\n <Gutter className={`${baseClass}__wrap`}>\n {Header || (\n <ListHeader heading={getTranslation(labels?.plural, i18n)}>\n {hasCreatePermission && (\n <Button\n Link={Link}\n SubMenuPopupContent={\n isUploadCollection && collectionConfig.upload.bulkUpload ? (\n <PopupList.ButtonGroup>\n <PopupList.Button onClick={() => openModal(bulkUploadDrawerSlug)}>\n {t('upload:bulkUpload')}\n </PopupList.Button>\n </PopupList.ButtonGroup>\n ) : null\n }\n aria-label={i18n.t('general:createNewLabel', {\n label: getTranslation(labels?.singular, i18n),\n })}\n buttonStyle=\"pill\"\n el=\"link\"\n size=\"small\"\n to={newDocumentURL}\n >\n {i18n.t('general:createNew')}\n </Button>\n )}\n {!smallBreak && (\n <ListSelection label={getTranslation(collectionConfig.labels.plural, i18n)} />\n )}\n {(description || Description) && (\n <div className={`${baseClass}__sub-header`}>\n <ViewDescription Description={Description} description={description} />\n </div>\n )}\n {isUploadCollection && collectionConfig.upload.bulkUpload ? (\n <BulkUploadDrawer\n collectionSlug={collectionSlug}\n onSuccess={() => clearRouteCache()}\n />\n ) : null}\n </ListHeader>\n )}\n <ListControls collectionConfig={collectionConfig} fields={fields} />\n <RenderComponent mappedComponent={beforeListTable} />\n {!data.docs && (\n <StaggeredShimmers\n className={[`${baseClass}__shimmer`, `${baseClass}__shimmer--rows`].join(' ')}\n count={6}\n />\n )}\n {data.docs && data.docs.length > 0 && (\n <RelationshipProvider>\n <Table\n customCellContext={{\n collectionSlug,\n uploadConfig: collectionConfig.upload,\n }}\n data={docs}\n fields={fields}\n />\n </RelationshipProvider>\n )}\n {data.docs && data.docs.length === 0 && (\n <div className={`${baseClass}__no-results`}>\n <p>{i18n.t('general:noResults', { label: getTranslation(labels?.plural, i18n) })}</p>\n {hasCreatePermission && newDocumentURL && (\n <Button Link={Link} el=\"link\" to={newDocumentURL}>\n {i18n.t('general:createNewLabel', {\n label: getTranslation(labels?.singular, i18n),\n })}\n </Button>\n )}\n </div>\n )}\n <RenderComponent mappedComponent={afterListTable} />\n {data.docs && data.docs.length > 0 && (\n <div className={`${baseClass}__page-controls`}>\n <Pagination\n hasNextPage={data.hasNextPage}\n hasPrevPage={data.hasPrevPage}\n limit={data.limit}\n nextPage={data.nextPage}\n numberOfNeighbors={1}\n onChange={(page) => void handlePageChange(page)}\n page={data.page}\n prevPage={data.prevPage}\n totalPages={data.totalPages}\n />\n {data?.totalDocs > 0 && (\n <Fragment>\n <div className={`${baseClass}__page-info`}>\n {data.page * data.limit - (data.limit - 1)}-\n {data.totalPages > 1 && data.totalPages !== data.page\n ? data.limit * data.page\n : data.totalDocs}{' '}\n {i18n.t('general:of')} {data.totalDocs}\n </div>\n <PerPage\n handleChange={(limit) => void handlePerPageChange(limit)}\n limit={\n isNumber(searchParams?.limit) ? Number(searchParams.limit) : defaultLimit\n }\n limits={collectionConfig?.admin?.pagination?.limits}\n resetPage={data.totalDocs <= data.pagingCounter}\n />\n {smallBreak && (\n <div className={`${baseClass}__list-selection`}>\n <ListSelection label={getTranslation(collectionConfig.labels.plural, i18n)} />\n <div className={`${baseClass}__list-selection-actions`}>\n {beforeActions && beforeActions}\n {!disableBulkEdit && (\n <Fragment>\n <EditMany collection={collectionConfig} fields={fields} />\n <PublishMany collection={collectionConfig} />\n <UnpublishMany collection={collectionConfig} />\n </Fragment>\n )}\n {!disableBulkDelete && <DeleteMany collection={collectionConfig} />}\n </div>\n </div>\n )}\n </Fragment>\n )}\n </div>\n )}\n </Gutter>\n </SelectionProvider>\n <RenderComponent mappedComponent={afterList} />\n </div>\n )\n}\n"],"names":["getTranslation","BulkUploadDrawer","Button","DeleteMany","EditMany","Gutter","ListControls","ListHeader","ListSelection","Pagination","PerPage","PopupList","PublishMany","RelationshipProvider","RenderComponent","SelectionProvider","SetViewActions","StaggeredShimmers","Table","UnpublishMany","ViewDescription","bulkUploadDrawerSlug","useConfig","useEditDepth","useListInfo","useListQuery","useModal","useRouteCache","useSearchParams","useStepNav","useTranslation","useWindowInfo","LinkImport","formatFilesize","isNumber","React","Fragment","useEffect","baseClass","Link","default","DefaultListView","Header","beforeActions","collectionSlug","disableBulkDelete","disableBulkEdit","hasCreatePermission","newDocumentURL","data","defaultLimit","handlePageChange","handlePerPageChange","searchParams","openModal","clearRouteCache","getEntityConfig","collectionConfig","admin","components","Description","afterList","afterListTable","beforeList","beforeListTable","views","list","actions","description","fields","labels","i18n","t","drawerDepth","setStepNav","breakpoints","s","smallBreak","docs","isUploadCollection","Boolean","upload","map","doc","filesize","label","plural","div","className","mappedComponent","totalDocs","heading","SubMenuPopupContent","bulkUpload","ButtonGroup","onClick","aria-label","singular","buttonStyle","el","size","to","onSuccess","join","count","length","customCellContext","uploadConfig","p","hasNextPage","hasPrevPage","limit","nextPage","numberOfNeighbors","onChange","page","prevPage","totalPages","handleChange","Number","limits","pagination","resetPage","pagingCounter","collection"],"mappings":"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"}
@@ -11,21 +11,13 @@
11
11
  }
12
12
  }
13
13
 
14
- &__header {
15
- display: flex;
16
- align-items: flex-end;
17
- flex-wrap: wrap;
18
- gap: base(0.8);
19
-
20
- h1 {
21
- margin: 0;
22
- }
23
-
14
+ .list-header {
24
15
  a {
25
16
  text-decoration: none;
26
17
  }
27
18
 
28
- .pill {
19
+ .btn--withoutPopup,
20
+ .btn--withPopup {
29
21
  position: relative;
30
22
  margin: 0 0 base(0.2);
31
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../../src/views/LivePreview/meta.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAA;AAI/E,eAAO,MAAM,gBAAgB,EAAE,wBAa3B,CAAA"}
1
+ {"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../../src/views/LivePreview/meta.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAA;AAI/E,eAAO,MAAM,gBAAgB,EAAE,wBAc3B,CAAA"}
@@ -4,7 +4,8 @@ export const generateMetadata = async ({ collectionConfig, config, globalConfig,
4
4
  config,
5
5
  globalConfig,
6
6
  i18n,
7
- isEditing
7
+ isEditing,
8
+ view: 'livePreview'
8
9
  });
9
10
 
10
11
  //# sourceMappingURL=meta.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/views/LivePreview/meta.ts"],"sourcesContent":["import type { Metadata } from 'next'\n\nimport type { GenerateEditViewMetadata } from '../Document/getMetaBySegment.js'\n\nimport { generateMetadata as generateDocumentMetadata } from '../Edit/meta.js'\n\nexport const generateMetadata: GenerateEditViewMetadata = async ({\n collectionConfig,\n config,\n globalConfig,\n i18n,\n isEditing,\n}): Promise<Metadata> =>\n generateDocumentMetadata({\n collectionConfig,\n config,\n globalConfig,\n i18n,\n isEditing,\n })\n"],"names":["generateMetadata","generateDocumentMetadata","collectionConfig","config","globalConfig","i18n","isEditing"],"mappings":"AAIA,SAASA,oBAAoBC,wBAAwB,QAAQ,kBAAiB;AAE9E,OAAO,MAAMD,mBAA6C,OAAO,EAC/DE,gBAAgB,EAChBC,MAAM,EACNC,YAAY,EACZC,IAAI,EACJC,SAAS,EACV,GACCL,yBAAyB;QACvBC;QACAC;QACAC;QACAC;QACAC;IACF,GAAE"}
1
+ {"version":3,"sources":["../../../src/views/LivePreview/meta.ts"],"sourcesContent":["import type { Metadata } from 'next'\n\nimport type { GenerateEditViewMetadata } from '../Document/getMetaBySegment.js'\n\nimport { generateMetadata as generateDocumentMetadata } from '../Edit/meta.js'\n\nexport const generateMetadata: GenerateEditViewMetadata = async ({\n collectionConfig,\n config,\n globalConfig,\n i18n,\n isEditing,\n}): Promise<Metadata> =>\n generateDocumentMetadata({\n collectionConfig,\n config,\n globalConfig,\n i18n,\n isEditing,\n view: 'livePreview',\n })\n"],"names":["generateMetadata","generateDocumentMetadata","collectionConfig","config","globalConfig","i18n","isEditing","view"],"mappings":"AAIA,SAASA,oBAAoBC,wBAAwB,QAAQ,kBAAiB;AAE9E,OAAO,MAAMD,mBAA6C,OAAO,EAC/DE,gBAAgB,EAChBC,MAAM,EACNC,YAAY,EACZC,IAAI,EACJC,SAAS,EACV,GACCL,yBAAyB;QACvBC;QACAC;QACAC;QACAC;QACAC;QACAC,MAAM;IACR,GAAE"}
@@ -0,0 +1,11 @@
1
+ import type { I18nClient } from '@payloadcms/translations';
2
+ import type { Metadata } from 'next';
3
+ import type { AdminViewConfig, SanitizedCollectionConfig, SanitizedConfig, SanitizedGlobalConfig } from 'payload';
4
+ export declare const generateCustomViewMetadata: (args: {
5
+ collectionConfig?: SanitizedCollectionConfig;
6
+ config: SanitizedConfig;
7
+ globalConfig?: SanitizedGlobalConfig;
8
+ i18n: I18nClient;
9
+ viewConfig: AdminViewConfig;
10
+ }) => Promise<Metadata>;
11
+ //# sourceMappingURL=generateCustomViewMetadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateCustomViewMetadata.d.ts","sourceRoot":"","sources":["../../../src/views/Root/generateCustomViewMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AACpC,OAAO,KAAK,EACV,eAAe,EACf,yBAAyB,EACzB,eAAe,EACf,qBAAqB,EACtB,MAAM,SAAS,CAAA;AAIhB,eAAO,MAAM,0BAA0B,SAAgB;IACrD,gBAAgB,CAAC,EAAE,yBAAyB,CAAA;IAC5C,MAAM,EAAE,eAAe,CAAA;IACvB,YAAY,CAAC,EAAE,qBAAqB,CAAA;IACpC,IAAI,EAAE,UAAU,CAAA;IAChB,UAAU,EAAE,eAAe,CAAA;CAC5B,KAAG,OAAO,CAAC,QAAQ,CAwBnB,CAAA"}
@@ -0,0 +1,23 @@
1
+ import { meta } from '../../utilities/meta.js';
2
+ export const generateCustomViewMetadata = async (args)=>{
3
+ const { config, // i18n: { t },
4
+ viewConfig } = args;
5
+ if (!viewConfig) {
6
+ return null;
7
+ }
8
+ return meta({
9
+ description: `Payload`,
10
+ keywords: `Payload`,
11
+ serverURL: config.serverURL,
12
+ title: 'Payload',
13
+ ...config.admin.meta || {},
14
+ ...viewConfig.meta || {},
15
+ openGraph: {
16
+ title: 'Payload',
17
+ ...config.admin.meta?.openGraph || {},
18
+ ...viewConfig.meta?.openGraph || {}
19
+ }
20
+ });
21
+ };
22
+
23
+ //# sourceMappingURL=generateCustomViewMetadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/views/Root/generateCustomViewMetadata.ts"],"sourcesContent":["import type { I18nClient } from '@payloadcms/translations'\nimport type { Metadata } from 'next'\nimport type {\n AdminViewConfig,\n SanitizedCollectionConfig,\n SanitizedConfig,\n SanitizedGlobalConfig,\n} from 'payload'\n\nimport { meta } from '../../utilities/meta.js'\n\nexport const generateCustomViewMetadata = async (args: {\n collectionConfig?: SanitizedCollectionConfig\n config: SanitizedConfig\n globalConfig?: SanitizedGlobalConfig\n i18n: I18nClient\n viewConfig: AdminViewConfig\n}): Promise<Metadata> => {\n const {\n config,\n // i18n: { t },\n viewConfig,\n } = args\n\n if (!viewConfig) {\n return null\n }\n\n return meta({\n description: `Payload`,\n keywords: `Payload`,\n serverURL: config.serverURL,\n title: 'Payload',\n ...(config.admin.meta || {}),\n ...(viewConfig.meta || {}),\n openGraph: {\n title: 'Payload',\n ...(config.admin.meta?.openGraph || {}),\n ...(viewConfig.meta?.openGraph || {}),\n },\n })\n}\n"],"names":["meta","generateCustomViewMetadata","args","config","viewConfig","description","keywords","serverURL","title","admin","openGraph"],"mappings":"AASA,SAASA,IAAI,QAAQ,0BAAyB;AAE9C,OAAO,MAAMC,6BAA6B,OAAOC;IAO/C,MAAM,EACJC,MAAM,EACN,eAAe;IACfC,UAAU,EACX,GAAGF;IAEJ,IAAI,CAACE,YAAY;QACf,OAAO;IACT;IAEA,OAAOJ,KAAK;QACVK,aAAa,CAAC,OAAO,CAAC;QACtBC,UAAU,CAAC,OAAO,CAAC;QACnBC,WAAWJ,OAAOI,SAAS;QAC3BC,OAAO;QACP,GAAIL,OAAOM,KAAK,CAACT,IAAI,IAAI,CAAC,CAAC;QAC3B,GAAII,WAAWJ,IAAI,IAAI,CAAC,CAAC;QACzBU,WAAW;YACTF,OAAO;YACP,GAAIL,OAAOM,KAAK,CAACT,IAAI,EAAEU,aAAa,CAAC,CAAC;YACtC,GAAIN,WAAWJ,IAAI,EAAEU,aAAa,CAAC,CAAC;QACtC;IACF;AACF,EAAC"}
@@ -1,7 +1,11 @@
1
- import type { SanitizedConfig } from 'payload';
1
+ import type { AdminViewConfig, SanitizedConfig } from 'payload';
2
2
  import type { ViewFromConfig } from './getViewFromConfig.js';
3
3
  export declare const getCustomViewByRoute: ({ config, currentRoute: currentRouteWithAdmin, }: {
4
4
  config: SanitizedConfig;
5
5
  currentRoute: string;
6
- }) => ViewFromConfig;
6
+ }) => {
7
+ view: ViewFromConfig;
8
+ viewConfig: AdminViewConfig;
9
+ viewKey: string;
10
+ };
7
11
  //# sourceMappingURL=getCustomViewByRoute.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getCustomViewByRoute.d.ts","sourceRoot":"","sources":["../../../src/views/Root/getCustomViewByRoute.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAI5D,eAAO,MAAM,oBAAoB,qDAG9B;IACD,MAAM,EAAE,eAAe,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;CACrB,KAAG,cA8BH,CAAA"}
1
+ {"version":3,"file":"getCustomViewByRoute.d.ts","sourceRoot":"","sources":["../../../src/views/Root/getCustomViewByRoute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAI5D,eAAO,MAAM,oBAAoB,qDAG9B;IACD,MAAM,EAAE,eAAe,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;CACrB,KAAG;IACF,IAAI,EAAE,cAAc,CAAA;IACpB,UAAU,EAAE,eAAe,CAAA;IAC3B,OAAO,EAAE,MAAM,CAAA;CAiDhB,CAAA"}
@@ -2,20 +2,35 @@ import { isPathMatchingRoute } from './isPathMatchingRoute.js';
2
2
  export const getCustomViewByRoute = ({ config, currentRoute: currentRouteWithAdmin })=>{
3
3
  const { admin: { components: { views } }, routes: { admin: adminRoute } } = config;
4
4
  const currentRoute = currentRouteWithAdmin.replace(adminRoute, '');
5
- const foundViewConfig = views && typeof views === 'object' && Object.entries(views).find(([, view])=>{
6
- return isPathMatchingRoute({
5
+ let viewKey;
6
+ const foundViewConfig = views && typeof views === 'object' && Object.entries(views).find(([key, view])=>{
7
+ const isMatching = isPathMatchingRoute({
7
8
  currentRoute,
8
9
  exact: view.exact,
9
10
  path: view.path,
10
11
  sensitive: view.sensitive,
11
12
  strict: view.strict
12
13
  });
13
- })?.[1];
14
+ if (isMatching) {
15
+ viewKey = key;
16
+ }
17
+ return isMatching;
18
+ })?.[1] || undefined;
14
19
  if (!foundViewConfig) {
15
- return null;
20
+ return {
21
+ view: {
22
+ Component: null
23
+ },
24
+ viewConfig: null,
25
+ viewKey: null
26
+ };
16
27
  }
17
28
  return {
18
- payloadComponent: foundViewConfig.Component
29
+ view: {
30
+ payloadComponent: foundViewConfig.Component
31
+ },
32
+ viewConfig: foundViewConfig,
33
+ viewKey
19
34
  };
20
35
  };
21
36
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/views/Root/getCustomViewByRoute.tsx"],"sourcesContent":["import type { SanitizedConfig } from 'payload'\n\nimport type { ViewFromConfig } from './getViewFromConfig.js'\n\nimport { isPathMatchingRoute } from './isPathMatchingRoute.js'\n\nexport const getCustomViewByRoute = ({\n config,\n currentRoute: currentRouteWithAdmin,\n}: {\n config: SanitizedConfig\n currentRoute: string\n}): ViewFromConfig => {\n const {\n admin: {\n components: { views },\n },\n routes: { admin: adminRoute },\n } = config\n\n const currentRoute = currentRouteWithAdmin.replace(adminRoute, '')\n\n const foundViewConfig =\n views &&\n typeof views === 'object' &&\n Object.entries(views).find(([, view]) => {\n return isPathMatchingRoute({\n currentRoute,\n exact: view.exact,\n path: view.path,\n sensitive: view.sensitive,\n strict: view.strict,\n })\n })?.[1]\n\n if (!foundViewConfig) {\n return null\n }\n\n return {\n payloadComponent: foundViewConfig.Component,\n }\n}\n"],"names":["isPathMatchingRoute","getCustomViewByRoute","config","currentRoute","currentRouteWithAdmin","admin","components","views","routes","adminRoute","replace","foundViewConfig","Object","entries","find","view","exact","path","sensitive","strict","payloadComponent","Component"],"mappings":"AAIA,SAASA,mBAAmB,QAAQ,2BAA0B;AAE9D,OAAO,MAAMC,uBAAuB,CAAC,EACnCC,MAAM,EACNC,cAAcC,qBAAqB,EAIpC;IACC,MAAM,EACJC,OAAO,EACLC,YAAY,EAAEC,KAAK,EAAE,EACtB,EACDC,QAAQ,EAAEH,OAAOI,UAAU,EAAE,EAC9B,GAAGP;IAEJ,MAAMC,eAAeC,sBAAsBM,OAAO,CAACD,YAAY;IAE/D,MAAME,kBACJJ,SACA,OAAOA,UAAU,YACjBK,OAAOC,OAAO,CAACN,OAAOO,IAAI,CAAC,CAAC,GAAGC,KAAK;QAClC,OAAOf,oBAAoB;YACzBG;YACAa,OAAOD,KAAKC,KAAK;YACjBC,MAAMF,KAAKE,IAAI;YACfC,WAAWH,KAAKG,SAAS;YACzBC,QAAQJ,KAAKI,MAAM;QACrB;IACF,IAAI,CAAC,EAAE;IAET,IAAI,CAACR,iBAAiB;QACpB,OAAO;IACT;IAEA,OAAO;QACLS,kBAAkBT,gBAAgBU,SAAS;IAC7C;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../src/views/Root/getCustomViewByRoute.ts"],"sourcesContent":["import type { AdminViewConfig, SanitizedConfig } from 'payload'\n\nimport type { ViewFromConfig } from './getViewFromConfig.js'\n\nimport { isPathMatchingRoute } from './isPathMatchingRoute.js'\n\nexport const getCustomViewByRoute = ({\n config,\n currentRoute: currentRouteWithAdmin,\n}: {\n config: SanitizedConfig\n currentRoute: string\n}): {\n view: ViewFromConfig\n viewConfig: AdminViewConfig\n viewKey: string\n} => {\n const {\n admin: {\n components: { views },\n },\n routes: { admin: adminRoute },\n } = config\n\n const currentRoute = currentRouteWithAdmin.replace(adminRoute, '')\n let viewKey: string\n\n const foundViewConfig =\n (views &&\n typeof views === 'object' &&\n Object.entries(views).find(([key, view]) => {\n const isMatching = isPathMatchingRoute({\n currentRoute,\n exact: view.exact,\n path: view.path,\n sensitive: view.sensitive,\n strict: view.strict,\n })\n\n if (isMatching) {\n viewKey = key\n }\n\n return isMatching\n })?.[1]) ||\n undefined\n\n if (!foundViewConfig) {\n return {\n view: {\n Component: null,\n },\n viewConfig: null,\n viewKey: null,\n }\n }\n\n return {\n view: {\n payloadComponent: foundViewConfig.Component,\n },\n viewConfig: foundViewConfig,\n viewKey,\n }\n}\n"],"names":["isPathMatchingRoute","getCustomViewByRoute","config","currentRoute","currentRouteWithAdmin","admin","components","views","routes","adminRoute","replace","viewKey","foundViewConfig","Object","entries","find","key","view","isMatching","exact","path","sensitive","strict","undefined","Component","viewConfig","payloadComponent"],"mappings":"AAIA,SAASA,mBAAmB,QAAQ,2BAA0B;AAE9D,OAAO,MAAMC,uBAAuB,CAAC,EACnCC,MAAM,EACNC,cAAcC,qBAAqB,EAIpC;IAKC,MAAM,EACJC,OAAO,EACLC,YAAY,EAAEC,KAAK,EAAE,EACtB,EACDC,QAAQ,EAAEH,OAAOI,UAAU,EAAE,EAC9B,GAAGP;IAEJ,MAAMC,eAAeC,sBAAsBM,OAAO,CAACD,YAAY;IAC/D,IAAIE;IAEJ,MAAMC,kBACJ,AAACL,SACC,OAAOA,UAAU,YACjBM,OAAOC,OAAO,CAACP,OAAOQ,IAAI,CAAC,CAAC,CAACC,KAAKC,KAAK;QACrC,MAAMC,aAAalB,oBAAoB;YACrCG;YACAgB,OAAOF,KAAKE,KAAK;YACjBC,MAAMH,KAAKG,IAAI;YACfC,WAAWJ,KAAKI,SAAS;YACzBC,QAAQL,KAAKK,MAAM;QACrB;QAEA,IAAIJ,YAAY;YACdP,UAAUK;QACZ;QAEA,OAAOE;IACT,IAAI,CAAC,EAAE,IACTK;IAEF,IAAI,CAACX,iBAAiB;QACpB,OAAO;YACLK,MAAM;gBACJO,WAAW;YACb;YACAC,YAAY;YACZd,SAAS;QACX;IACF;IAEA,OAAO;QACLM,MAAM;YACJS,kBAAkBd,gBAAgBY,SAAS;QAC7C;QACAC,YAAYb;QACZD;IACF;AACF,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"getViewFromConfig.d.ts","sourceRoot":"","sources":["../../../src/views/Root/getViewFromConfig.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAC7F,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAA;AA4BjE,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAAC,CAAA;IACpC,gBAAgB,CAAC,EAAE,kBAAkB,CAAA;CACtC,CAAA;AAYD,eAAO,MAAM,iBAAiB,6EAO3B;IACD,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,eAAe,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,SAAS,CAAA;IACpB,YAAY,EAAE;QACZ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KACjC,CAAA;IACD,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB,KAAG;IACF,WAAW,EAAE,cAAc,CAAA;IAC3B,eAAe,EAAE,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/C,iBAAiB,EAAE,MAAM,CAAA;IACzB,YAAY,EAAE,SAAS,GAAG,SAAS,CAAA;CAmJpC,CAAA"}
1
+ {"version":3,"file":"getViewFromConfig.d.ts","sourceRoot":"","sources":["../../../src/views/Root/getViewFromConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAC7F,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAA;AA4BjE,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAAC,CAAA;IACpC,gBAAgB,CAAC,EAAE,kBAAkB,CAAA;CACtC,CAAA;AAYD,eAAO,MAAM,iBAAiB,6EAO3B;IACD,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,eAAe,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,SAAS,CAAA;IACpB,YAAY,EAAE;QACZ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KACjC,CAAA;IACD,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB,KAAG;IACF,WAAW,EAAE,cAAc,CAAA;IAC3B,eAAe,EAAE,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/C,iBAAiB,EAAE,MAAM,CAAA;IACzB,YAAY,EAAE,SAAS,GAAG,SAAS,CAAA;CA6JpC,CAAA"}
@@ -58,7 +58,7 @@ export const getViewFromConfig = ({ adminRoute, config, currentRoute, importMap,
58
58
  {
59
59
  // users can override the default routes via `admin.routes` config
60
60
  // i.e.{ admin: { routes: { logout: '/sign-out', inactivity: '/idle' }}}
61
- let viewToRender;
61
+ let viewKey;
62
62
  if (config.admin.routes) {
63
63
  const matchedRoute = Object.entries(config.admin.routes).find(([, route])=>{
64
64
  return isPathMatchingRoute({
@@ -71,10 +71,10 @@ export const getViewFromConfig = ({ adminRoute, config, currentRoute, importMap,
71
71
  });
72
72
  });
73
73
  if (matchedRoute) {
74
- viewToRender = matchedRoute[0];
74
+ viewKey = matchedRoute[0];
75
75
  }
76
76
  }
77
- if (oneSegmentViews[viewToRender]) {
77
+ if (oneSegmentViews[viewKey]) {
78
78
  // --> /account
79
79
  // --> /create-first-user
80
80
  // --> /forgot
@@ -83,11 +83,11 @@ export const getViewFromConfig = ({ adminRoute, config, currentRoute, importMap,
83
83
  // --> /logout-inactivity
84
84
  // --> /unauthorized
85
85
  ViewToRender = {
86
- Component: oneSegmentViews[viewToRender]
86
+ Component: oneSegmentViews[viewKey]
87
87
  };
88
- templateClassName = baseClasses[viewToRender];
88
+ templateClassName = baseClasses[viewKey];
89
89
  templateType = 'minimal';
90
- if (viewToRender === 'account') {
90
+ if (viewKey === 'account') {
91
91
  initPageOptions.redirectUnauthenticatedUser = true;
92
92
  templateType = 'default';
93
93
  }
@@ -163,7 +163,7 @@ export const getViewFromConfig = ({ adminRoute, config, currentRoute, importMap,
163
163
  ViewToRender = getCustomViewByRoute({
164
164
  config,
165
165
  currentRoute
166
- });
166
+ })?.view;
167
167
  }
168
168
  return {
169
169
  DefaultView: ViewToRender,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/views/Root/getViewFromConfig.tsx"],"sourcesContent":["import type { AdminViewComponent, AdminViewProps, ImportMap, SanitizedConfig } from 'payload'\nimport type React from 'react'\n\nimport { formatAdminURL } from '@payloadcms/ui/shared'\n\nimport type { initPage } from '../../utilities/initPage/index.js'\n\nimport { Account } from '../Account/index.js'\nimport { CreateFirstUserView } from '../CreateFirstUser/index.js'\nimport { Dashboard } from '../Dashboard/index.js'\nimport { Document as DocumentView } from '../Document/index.js'\nimport { ForgotPasswordView, forgotPasswordBaseClass } from '../ForgotPassword/index.js'\nimport { ListView } from '../List/index.js'\nimport { LoginView, loginBaseClass } from '../Login/index.js'\nimport { LogoutInactivity, LogoutView } from '../Logout/index.js'\nimport { ResetPassword, resetPasswordBaseClass } from '../ResetPassword/index.js'\nimport { UnauthorizedView } from '../Unauthorized/index.js'\nimport { Verify, verifyBaseClass } from '../Verify/index.js'\nimport { getCustomViewByRoute } from './getCustomViewByRoute.js'\nimport { isPathMatchingRoute } from './isPathMatchingRoute.js'\n\nconst baseClasses = {\n account: 'account',\n forgot: forgotPasswordBaseClass,\n login: loginBaseClass,\n reset: resetPasswordBaseClass,\n verify: verifyBaseClass,\n}\n\ntype OneSegmentViews = {\n [K in Exclude<keyof SanitizedConfig['admin']['routes'], 'reset'>]: React.FC<AdminViewProps>\n}\n\nexport type ViewFromConfig = {\n Component?: React.FC<AdminViewProps>\n payloadComponent?: AdminViewComponent\n}\n\nconst oneSegmentViews: OneSegmentViews = {\n account: Account,\n createFirstUser: CreateFirstUserView,\n forgot: ForgotPasswordView,\n inactivity: LogoutInactivity,\n login: LoginView,\n logout: LogoutView,\n unauthorized: UnauthorizedView,\n}\n\nexport const getViewFromConfig = ({\n adminRoute,\n config,\n currentRoute,\n importMap,\n searchParams,\n segments,\n}: {\n adminRoute: string\n config: SanitizedConfig\n currentRoute: string\n importMap: ImportMap\n searchParams: {\n [key: string]: string | string[]\n }\n segments: string[]\n}): {\n DefaultView: ViewFromConfig\n initPageOptions: Parameters<typeof initPage>[0]\n templateClassName: string\n templateType: 'default' | 'minimal'\n} => {\n let ViewToRender: ViewFromConfig = null\n let templateClassName: string\n let templateType: 'default' | 'minimal' | undefined\n\n const initPageOptions: Parameters<typeof initPage>[0] = {\n config,\n importMap,\n route: currentRoute,\n searchParams,\n }\n\n const [segmentOne, segmentTwo] = segments\n\n const isGlobal = segmentOne === 'globals'\n const isCollection = segmentOne === 'collections'\n\n switch (segments.length) {\n case 0: {\n if (currentRoute === adminRoute) {\n ViewToRender = {\n Component: Dashboard,\n }\n templateClassName = 'dashboard'\n templateType = 'default'\n initPageOptions.redirectUnauthenticatedUser = true\n }\n break\n }\n case 1: {\n // users can override the default routes via `admin.routes` config\n // i.e.{ admin: { routes: { logout: '/sign-out', inactivity: '/idle' }}}\n let viewToRender: keyof typeof oneSegmentViews\n\n if (config.admin.routes) {\n const matchedRoute = Object.entries(config.admin.routes).find(([, route]) => {\n return isPathMatchingRoute({\n currentRoute,\n exact: true,\n path: formatAdminURL({ adminRoute, path: route }),\n })\n })\n\n if (matchedRoute) {\n viewToRender = matchedRoute[0] as keyof typeof oneSegmentViews\n }\n }\n\n if (oneSegmentViews[viewToRender]) {\n // --> /account\n // --> /create-first-user\n // --> /forgot\n // --> /login\n // --> /logout\n // --> /logout-inactivity\n // --> /unauthorized\n\n ViewToRender = {\n Component: oneSegmentViews[viewToRender],\n }\n templateClassName = baseClasses[viewToRender]\n templateType = 'minimal'\n\n if (viewToRender === 'account') {\n initPageOptions.redirectUnauthenticatedUser = true\n templateType = 'default'\n }\n }\n break\n }\n case 2: {\n if (segmentOne === 'reset') {\n // --> /reset/:token\n ViewToRender = {\n Component: ResetPassword,\n }\n templateClassName = baseClasses[segmentTwo]\n templateType = 'minimal'\n }\n\n if (isCollection) {\n // --> /collections/:collectionSlug\n initPageOptions.redirectUnauthenticatedUser = true\n ViewToRender = {\n Component: ListView,\n }\n templateClassName = `${segmentTwo}-list`\n templateType = 'default'\n } else if (isGlobal) {\n // --> /globals/:globalSlug\n initPageOptions.redirectUnauthenticatedUser = true\n ViewToRender = {\n Component: DocumentView,\n }\n templateClassName = 'global-edit'\n templateType = 'default'\n }\n break\n }\n default:\n if (segmentTwo === 'verify') {\n // --> /:collectionSlug/verify/:token\n ViewToRender = {\n Component: Verify,\n }\n templateClassName = 'verify'\n templateType = 'minimal'\n } else if (isCollection) {\n // Custom Views\n // --> /collections/:collectionSlug/:id\n // --> /collections/:collectionSlug/:id/preview\n // --> /collections/:collectionSlug/:id/versions\n // --> /collections/:collectionSlug/:id/versions/:versionId\n // --> /collections/:collectionSlug/:id/api\n initPageOptions.redirectUnauthenticatedUser = true\n ViewToRender = {\n Component: DocumentView,\n }\n templateClassName = `collection-default-edit`\n templateType = 'default'\n } else if (isGlobal) {\n // Custom Views\n // --> /globals/:globalSlug/versions\n // --> /globals/:globalSlug/preview\n // --> /globals/:globalSlug/versions/:versionId\n // --> /globals/:globalSlug/api\n initPageOptions.redirectUnauthenticatedUser = true\n ViewToRender = {\n Component: DocumentView,\n }\n templateClassName = `global-edit`\n templateType = 'default'\n }\n break\n }\n\n if (!ViewToRender) {\n ViewToRender = getCustomViewByRoute({ config, currentRoute })\n }\n\n return {\n DefaultView: ViewToRender,\n initPageOptions,\n templateClassName,\n templateType,\n }\n}\n"],"names":["formatAdminURL","Account","CreateFirstUserView","Dashboard","Document","DocumentView","ForgotPasswordView","forgotPasswordBaseClass","ListView","LoginView","loginBaseClass","LogoutInactivity","LogoutView","ResetPassword","resetPasswordBaseClass","UnauthorizedView","Verify","verifyBaseClass","getCustomViewByRoute","isPathMatchingRoute","baseClasses","account","forgot","login","reset","verify","oneSegmentViews","createFirstUser","inactivity","logout","unauthorized","getViewFromConfig","adminRoute","config","currentRoute","importMap","searchParams","segments","ViewToRender","templateClassName","templateType","initPageOptions","route","segmentOne","segmentTwo","isGlobal","isCollection","length","Component","redirectUnauthenticatedUser","viewToRender","admin","routes","matchedRoute","Object","entries","find","exact","path","DefaultView"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/views/Root/getViewFromConfig.ts"],"sourcesContent":["import type { AdminViewComponent, AdminViewProps, ImportMap, SanitizedConfig } from 'payload'\nimport type React from 'react'\n\nimport { formatAdminURL } from '@payloadcms/ui/shared'\n\nimport type { initPage } from '../../utilities/initPage/index.js'\n\nimport { Account } from '../Account/index.js'\nimport { CreateFirstUserView } from '../CreateFirstUser/index.js'\nimport { Dashboard } from '../Dashboard/index.js'\nimport { Document as DocumentView } from '../Document/index.js'\nimport { ForgotPasswordView, forgotPasswordBaseClass } from '../ForgotPassword/index.js'\nimport { ListView } from '../List/index.js'\nimport { LoginView, loginBaseClass } from '../Login/index.js'\nimport { LogoutInactivity, LogoutView } from '../Logout/index.js'\nimport { ResetPassword, resetPasswordBaseClass } from '../ResetPassword/index.js'\nimport { UnauthorizedView } from '../Unauthorized/index.js'\nimport { Verify, verifyBaseClass } from '../Verify/index.js'\nimport { getCustomViewByRoute } from './getCustomViewByRoute.js'\nimport { isPathMatchingRoute } from './isPathMatchingRoute.js'\n\nconst baseClasses = {\n account: 'account',\n forgot: forgotPasswordBaseClass,\n login: loginBaseClass,\n reset: resetPasswordBaseClass,\n verify: verifyBaseClass,\n}\n\ntype OneSegmentViews = {\n [K in Exclude<keyof SanitizedConfig['admin']['routes'], 'reset'>]: React.FC<AdminViewProps>\n}\n\nexport type ViewFromConfig = {\n Component?: React.FC<AdminViewProps>\n payloadComponent?: AdminViewComponent\n}\n\nconst oneSegmentViews: OneSegmentViews = {\n account: Account,\n createFirstUser: CreateFirstUserView,\n forgot: ForgotPasswordView,\n inactivity: LogoutInactivity,\n login: LoginView,\n logout: LogoutView,\n unauthorized: UnauthorizedView,\n}\n\nexport const getViewFromConfig = ({\n adminRoute,\n config,\n currentRoute,\n importMap,\n searchParams,\n segments,\n}: {\n adminRoute: string\n config: SanitizedConfig\n currentRoute: string\n importMap: ImportMap\n searchParams: {\n [key: string]: string | string[]\n }\n segments: string[]\n}): {\n DefaultView: ViewFromConfig\n initPageOptions: Parameters<typeof initPage>[0]\n templateClassName: string\n templateType: 'default' | 'minimal'\n} => {\n let ViewToRender: ViewFromConfig = null\n let templateClassName: string\n let templateType: 'default' | 'minimal' | undefined\n\n const initPageOptions: Parameters<typeof initPage>[0] = {\n config,\n importMap,\n route: currentRoute,\n searchParams,\n }\n\n const [segmentOne, segmentTwo] = segments\n\n const isGlobal = segmentOne === 'globals'\n const isCollection = segmentOne === 'collections'\n\n switch (segments.length) {\n case 0: {\n if (currentRoute === adminRoute) {\n ViewToRender = {\n Component: Dashboard,\n }\n templateClassName = 'dashboard'\n templateType = 'default'\n initPageOptions.redirectUnauthenticatedUser = true\n }\n break\n }\n case 1: {\n // users can override the default routes via `admin.routes` config\n // i.e.{ admin: { routes: { logout: '/sign-out', inactivity: '/idle' }}}\n let viewKey: keyof typeof oneSegmentViews\n\n if (config.admin.routes) {\n const matchedRoute = Object.entries(config.admin.routes).find(([, route]) => {\n return isPathMatchingRoute({\n currentRoute,\n exact: true,\n path: formatAdminURL({ adminRoute, path: route }),\n })\n })\n\n if (matchedRoute) {\n viewKey = matchedRoute[0] as keyof typeof oneSegmentViews\n }\n }\n\n if (oneSegmentViews[viewKey]) {\n // --> /account\n // --> /create-first-user\n // --> /forgot\n // --> /login\n // --> /logout\n // --> /logout-inactivity\n // --> /unauthorized\n\n ViewToRender = {\n Component: oneSegmentViews[viewKey],\n }\n\n templateClassName = baseClasses[viewKey]\n templateType = 'minimal'\n\n if (viewKey === 'account') {\n initPageOptions.redirectUnauthenticatedUser = true\n templateType = 'default'\n }\n }\n break\n }\n case 2: {\n if (segmentOne === 'reset') {\n // --> /reset/:token\n ViewToRender = {\n Component: ResetPassword,\n }\n templateClassName = baseClasses[segmentTwo]\n templateType = 'minimal'\n }\n\n if (isCollection) {\n // --> /collections/:collectionSlug\n initPageOptions.redirectUnauthenticatedUser = true\n\n ViewToRender = {\n Component: ListView,\n }\n\n templateClassName = `${segmentTwo}-list`\n templateType = 'default'\n } else if (isGlobal) {\n // --> /globals/:globalSlug\n initPageOptions.redirectUnauthenticatedUser = true\n\n ViewToRender = {\n Component: DocumentView,\n }\n\n templateClassName = 'global-edit'\n templateType = 'default'\n }\n break\n }\n default:\n if (segmentTwo === 'verify') {\n // --> /:collectionSlug/verify/:token\n ViewToRender = {\n Component: Verify,\n }\n\n templateClassName = 'verify'\n templateType = 'minimal'\n } else if (isCollection) {\n // Custom Views\n // --> /collections/:collectionSlug/:id\n // --> /collections/:collectionSlug/:id/preview\n // --> /collections/:collectionSlug/:id/versions\n // --> /collections/:collectionSlug/:id/versions/:versionId\n // --> /collections/:collectionSlug/:id/api\n initPageOptions.redirectUnauthenticatedUser = true\n\n ViewToRender = {\n Component: DocumentView,\n }\n\n templateClassName = `collection-default-edit`\n templateType = 'default'\n } else if (isGlobal) {\n // Custom Views\n // --> /globals/:globalSlug/versions\n // --> /globals/:globalSlug/preview\n // --> /globals/:globalSlug/versions/:versionId\n // --> /globals/:globalSlug/api\n initPageOptions.redirectUnauthenticatedUser = true\n\n ViewToRender = {\n Component: DocumentView,\n }\n\n templateClassName = `global-edit`\n templateType = 'default'\n }\n break\n }\n\n if (!ViewToRender) {\n ViewToRender = getCustomViewByRoute({ config, currentRoute })?.view\n }\n\n return {\n DefaultView: ViewToRender,\n initPageOptions,\n templateClassName,\n templateType,\n }\n}\n"],"names":["formatAdminURL","Account","CreateFirstUserView","Dashboard","Document","DocumentView","ForgotPasswordView","forgotPasswordBaseClass","ListView","LoginView","loginBaseClass","LogoutInactivity","LogoutView","ResetPassword","resetPasswordBaseClass","UnauthorizedView","Verify","verifyBaseClass","getCustomViewByRoute","isPathMatchingRoute","baseClasses","account","forgot","login","reset","verify","oneSegmentViews","createFirstUser","inactivity","logout","unauthorized","getViewFromConfig","adminRoute","config","currentRoute","importMap","searchParams","segments","ViewToRender","templateClassName","templateType","initPageOptions","route","segmentOne","segmentTwo","isGlobal","isCollection","length","Component","redirectUnauthenticatedUser","viewKey","admin","routes","matchedRoute","Object","entries","find","exact","path","view","DefaultView"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../../src/views/Root/meta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AACpC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAwB9C,KAAK,IAAI,GAAG;IACV,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;IAChC,MAAM,EAAE;QACN,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KACjC,CAAA;IACD,YAAY,EAAE;QACZ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KACjC,CAAA;CACF,CAAA;AAED,eAAO,MAAM,oBAAoB,sCAA6C,IAAI,sBAqGjF,CAAA"}
1
+ {"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../../src/views/Root/meta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AACpC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AA0B9C,KAAK,IAAI,GAAG;IACV,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;IAChC,MAAM,EAAE;QACN,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KACjC,CAAA;IACD,YAAY,EAAE;QACZ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KACjC,CAAA;CACF,CAAA;AAED,eAAO,MAAM,oBAAoB,sCAA6C,IAAI,sBAqHjF,CAAA"}
@@ -10,6 +10,8 @@ import { generateNotFoundMeta } from '../NotFound/meta.js';
10
10
  import { generateResetPasswordMetadata } from '../ResetPassword/index.js';
11
11
  import { generateUnauthorizedMetadata } from '../Unauthorized/index.js';
12
12
  import { generateVerifyMetadata } from '../Verify/index.js';
13
+ import { generateCustomViewMetadata } from './generateCustomViewMetadata.js';
14
+ import { getCustomViewByRoute } from './getCustomViewByRoute.js';
13
15
  const oneSegmentMeta = {
14
16
  'create-first-user': generateCreateFirstUserMetadata,
15
17
  forgot: generateForgotPasswordMetadata,
@@ -21,6 +23,7 @@ const oneSegmentMeta = {
21
23
  export const generatePageMetadata = async ({ config: configPromise, params })=>{
22
24
  const config = await configPromise;
23
25
  const segments = Array.isArray(params.segments) ? params.segments : [];
26
+ const currentRoute = `/${segments.join('/')}`;
24
27
  const [segmentOne, segmentTwo] = segments;
25
28
  const isGlobal = segmentOne === 'globals';
26
29
  const isCollection = segmentOne === 'collections';
@@ -129,10 +132,24 @@ export const generatePageMetadata = async ({ config: configPromise, params })=>{
129
132
  }
130
133
  }
131
134
  if (!meta) {
132
- meta = await generateNotFoundMeta({
135
+ const { viewConfig, viewKey } = getCustomViewByRoute({
133
136
  config,
134
- i18n
137
+ currentRoute
135
138
  });
139
+ if (viewKey) {
140
+ // Custom Views
141
+ // --> /:path
142
+ meta = await generateCustomViewMetadata({
143
+ config,
144
+ i18n,
145
+ viewConfig
146
+ });
147
+ } else {
148
+ meta = await generateNotFoundMeta({
149
+ config,
150
+ i18n
151
+ });
152
+ }
136
153
  }
137
154
  return meta;
138
155
  };