chore: work on e2e's

This commit is contained in:
Alessio Gravili
2024-03-08 12:33:44 -05:00
parent 0066b858d6
commit 847a2994f9
57 changed files with 214 additions and 272 deletions

View File

@@ -1,16 +1,17 @@
import type { Page } from '@playwright/test' import type { Page } from '@playwright/test'
import type { Payload } from 'payload'
import { expect, test } from '@playwright/test' import { expect, test } from '@playwright/test'
import path from 'path'
import { fileURLToPath } from 'url' import { fileURLToPath } from 'url'
import type { ReadOnlyCollection, RestrictedVersion } from './payload-types' import type { Payload } from '../../packages/payload/src/types/index.js'
import type { ReadOnlyCollection, RestrictedVersion } from './payload-types.js'
import wait from '../../packages/payload/src/utilities/wait' import wait from '../../packages/payload/src/utilities/wait.js'
import { exactText, initPageConsoleErrorCatch, openDocControls, openNav } from '../helpers' import { exactText, initPageConsoleErrorCatch, openDocControls, openNav } from '../helpers.js'
import { AdminUrlUtil } from '../helpers/adminUrlUtil' import { AdminUrlUtil } from '../helpers/adminUrlUtil.js'
import { initPayloadE2E } from '../helpers/configHelpers' import { initPayloadE2E } from '../helpers/configHelpers.js'
import config from './config' import config from './config.js'
import { import {
docLevelAccessSlug, docLevelAccessSlug,
readOnlySlug, readOnlySlug,
@@ -18,7 +19,7 @@ import {
restrictedVersionsSlug, restrictedVersionsSlug,
slug, slug,
unrestrictedSlug, unrestrictedSlug,
} from './shared' } from './shared.js'
const filename = fileURLToPath(import.meta.url) const filename = fileURLToPath(import.meta.url)
const dirname = path.dirname(filename) const dirname = path.dirname(filename)

View File

@@ -1,12 +1,11 @@
import type { Payload } from '../../packages/payload/src' import type { Payload, PayloadRequest } from '../../packages/payload/src/types/index.js'
import type { PayloadRequest } from '../../packages/payload/src/types' import type { Post, RelyOnRequestHeader, Restricted } from './payload-types.js'
import type { Post, RelyOnRequestHeader, Restricted } from './payload-types'
import { getPayload } from '../../packages/payload/src' import { Forbidden } from '../../packages/payload/src/errors/index.js'
import { Forbidden } from '../../packages/payload/src/errors' import { getPayload } from '../../packages/payload/src/index.js'
import { startMemoryDB } from '../startMemoryDB' import { startMemoryDB } from '../startMemoryDB.js'
import configPromise from './config' import configPromise from './config.js'
import { requestHeaders } from './config' import { requestHeaders } from './config.js'
import { import {
firstArrayText, firstArrayText,
hiddenAccessSlug, hiddenAccessSlug,
@@ -17,7 +16,7 @@ import {
secondArrayText, secondArrayText,
siblingDataSlug, siblingDataSlug,
slug, slug,
} from './shared' } from './shared.js'
let payload: Payload let payload: Payload

View File

@@ -1,6 +1,4 @@
import type { CollectionConfig } from 'payload/dist/collections/config/types' import type { CollectionConfig } from '../../../packages/payload/src/collections/config/types.js'
import { customIdCollectionSlug } from '../slugs'
export const CustomIdRow: CollectionConfig = { export const CustomIdRow: CollectionConfig = {
slug: 'customIdRow', slug: 'customIdRow',

View File

@@ -1,6 +1,4 @@
import type { CollectionConfig } from 'payload/dist/collections/config/types' import type { CollectionConfig } from '../../../packages/payload/src/collections/config/types.js'
import { customIdCollectionSlug } from '../slugs'
export const CustomIdTab: CollectionConfig = { export const CustomIdTab: CollectionConfig = {
slug: 'customIdTab', slug: 'customIdTab',

View File

@@ -1,7 +1,7 @@
import type { CollectionConfig } from '../../../packages/payload/src/collections/config/types' import type { CollectionConfig } from '../../../packages/payload/src/collections/config/types.js'
import { CustomEditView } from '../components/views/CustomEdit' import { CustomEditView } from '../components/views/CustomEdit/index.js'
import { customViews1CollectionSlug } from '../slugs' import { customViews1CollectionSlug } from '../slugs.js'
export const CustomViews1: CollectionConfig = { export const CustomViews1: CollectionConfig = {
slug: customViews1CollectionSlug, slug: customViews1CollectionSlug,

View File

@@ -1,17 +1,17 @@
import type { CollectionConfig } from '../../../packages/payload/src/collections/config/types' import type { CollectionConfig } from '../../../packages/payload/src/collections/config/types.js'
import CustomTabComponent from '../components/CustomTabComponent' import { CustomTabComponent } from '../components/CustomTabComponent/index.js'
import CustomTabView from '../components/views/CustomTab' import { CustomTabView } from '../components/views/CustomTab/index.js'
import CustomTabView2 from '../components/views/CustomTab2' import { CustomTabView2 } from '../components/views/CustomTab2/index.js'
import CustomNestedTabView from '../components/views/CustomTabNested' import { CustomNestedTabView } from '../components/views/CustomTabNested/index.js'
import CustomVersionsView from '../components/views/CustomVersions' import { CustomVersionsView } from '../components/views/CustomVersions/index.js'
import { import {
customEditLabel, customEditLabel,
customNestedTabViewPath, customNestedTabViewPath,
customTabLabel, customTabLabel,
customTabViewPath, customTabViewPath,
} from '../shared' } from '../shared.js'
import { customViews2CollectionSlug } from '../slugs' import { customViews2CollectionSlug } from '../slugs.js'
export const CustomViews2: CollectionConfig = { export const CustomViews2: CollectionConfig = {
slug: customViews2CollectionSlug, slug: customViews2CollectionSlug,

View File

@@ -1,9 +1,9 @@
import type { CollectionConfig } from '../../../packages/payload/src/collections/config/types' import type { CollectionConfig } from '../../../packages/payload/src/collections/config/types.js'
import CollectionAPIButton from '../components/CollectionAPIButton' import { CollectionAPIButton } from '../components/CollectionAPIButton/index.js'
import CollectionEditButton from '../components/CollectionEditButton' import { CollectionEditButton } from '../components/CollectionEditButton/index.js'
import CollectionListButton from '../components/CollectionListButton' import { CollectionListButton } from '../components/CollectionListButton/index.js'
import { geoCollectionSlug } from '../slugs' import { geoCollectionSlug } from '../slugs.js'
export const Geo: CollectionConfig = { export const Geo: CollectionConfig = {
slug: geoCollectionSlug, slug: geoCollectionSlug,

View File

@@ -1,6 +1,6 @@
import type { CollectionConfig } from '../../../packages/payload/src/collections/config/types' import type { CollectionConfig } from '../../../packages/payload/src/collections/config/types.js'
import { group1Collection1Slug } from '../slugs' import { group1Collection1Slug } from '../slugs.js'
export const CollectionGroup1A: CollectionConfig = { export const CollectionGroup1A: CollectionConfig = {
slug: group1Collection1Slug, slug: group1Collection1Slug,

View File

@@ -1,6 +1,6 @@
import type { CollectionConfig } from '../../../packages/payload/src/collections/config/types' import type { CollectionConfig } from '../../../packages/payload/src/collections/config/types.js'
import { group1Collection2Slug } from '../slugs' import { group1Collection2Slug } from '../slugs.js'
export const CollectionGroup1B: CollectionConfig = { export const CollectionGroup1B: CollectionConfig = {
slug: group1Collection2Slug, slug: group1Collection2Slug,

View File

@@ -1,6 +1,6 @@
import type { CollectionConfig } from '../../../packages/payload/src/collections/config/types' import type { CollectionConfig } from '../../../packages/payload/src/collections/config/types.js'
import { group2Collection1Slug } from '../slugs' import { group2Collection1Slug } from '../slugs.js'
export const CollectionGroup2A: CollectionConfig = { export const CollectionGroup2A: CollectionConfig = {
slug: group2Collection1Slug, slug: group2Collection1Slug,

View File

@@ -1,6 +1,6 @@
import type { CollectionConfig } from '../../../packages/payload/src/collections/config/types' import type { CollectionConfig } from '../../../packages/payload/src/collections/config/types.js'
import { group2Collection2Slug } from '../slugs' import { group2Collection2Slug } from '../slugs.js'
export const CollectionGroup2B: CollectionConfig = { export const CollectionGroup2B: CollectionConfig = {
slug: group2Collection2Slug, slug: group2Collection2Slug,

View File

@@ -1,6 +1,6 @@
import type { CollectionConfig } from '../../../packages/payload/src/collections/config/types' import type { CollectionConfig } from '../../../packages/payload/src/collections/config/types.js'
import { hiddenCollectionSlug } from '../slugs' import { hiddenCollectionSlug } from '../slugs.js'
export const CollectionHidden: CollectionConfig = { export const CollectionHidden: CollectionConfig = {
slug: hiddenCollectionSlug, slug: hiddenCollectionSlug,

View File

@@ -1,6 +1,6 @@
import type { CollectionConfig } from '../../../packages/payload/src/collections/config/types' import type { CollectionConfig } from '../../../packages/payload/src/collections/config/types.js'
import { noApiViewCollectionSlug } from '../slugs' import { noApiViewCollectionSlug } from '../slugs.js'
export const CollectionNoApiView: CollectionConfig = { export const CollectionNoApiView: CollectionConfig = {
slug: noApiViewCollectionSlug, slug: noApiViewCollectionSlug,

View File

@@ -1,11 +1,14 @@
import type { CollectionConfig } from '../../../packages/payload/src/collections/config/types' import type { CollectionConfig } from '../../../packages/payload/src/collections/config/types.js'
import { slateEditor } from '../../../packages/richtext-slate/src' import { slateEditor } from '../../../packages/richtext-slate/src/index.js'
import DemoUIFieldCell from '../components/DemoUIField/Cell' import { DemoUIFieldCell } from '../components/DemoUIField/Cell.js'
import DemoUIFieldField from '../components/DemoUIField/Field' import { DemoUIField } from '../components/DemoUIField/Field.js'
import { FieldDescriptionComponent, FieldDescriptionFunction } from '../components/FieldDescription' import {
import { slugPluralLabel, slugSingularLabel } from '../shared' FieldDescriptionComponent,
import { postsCollectionSlug } from '../slugs' FieldDescriptionFunction,
} from '../components/FieldDescription/index.js'
import { slugPluralLabel, slugSingularLabel } from '../shared.js'
import { postsCollectionSlug } from '../slugs.js'
export const Posts: CollectionConfig = { export const Posts: CollectionConfig = {
slug: postsCollectionSlug, slug: postsCollectionSlug,
@@ -58,7 +61,7 @@ export const Posts: CollectionConfig = {
label: 'Demo UI Field', label: 'Demo UI Field',
admin: { admin: {
components: { components: {
Field: DemoUIFieldField, Field: DemoUIField,
Cell: DemoUIFieldCell, Cell: DemoUIFieldCell,
}, },
}, },

View File

@@ -1,6 +1,6 @@
import type { CollectionConfig } from '../../../packages/payload/src/collections/config/types' import type { CollectionConfig } from '../../../packages/payload/src/collections/config/types.js'
import { usersCollectionSlug } from '../slugs' import { usersCollectionSlug } from '../slugs.js'
export const Users: CollectionConfig = { export const Users: CollectionConfig = {
slug: usersCollectionSlug, slug: usersCollectionSlug,

View File

@@ -2,7 +2,7 @@ import React from 'react'
const baseClass = 'admin-button' const baseClass = 'admin-button'
const AdminButton: React.FC = () => { export const AdminButton: React.FC = () => {
return ( return (
<div <div
className={baseClass} className={baseClass}
@@ -18,5 +18,3 @@ const AdminButton: React.FC = () => {
</div> </div>
) )
} }
export default AdminButton

View File

@@ -4,7 +4,7 @@ import './index.scss'
const baseClass = 'after-dashboard' const baseClass = 'after-dashboard'
const AfterDashboard: React.FC = () => { export const AfterDashboard: React.FC = () => {
return ( return (
<div className={baseClass}> <div className={baseClass}>
<h4>Test Config</h4> <h4>Test Config</h4>
@@ -15,5 +15,3 @@ const AfterDashboard: React.FC = () => {
</div> </div>
) )
} }
export default AfterDashboard

View File

@@ -4,14 +4,14 @@ import React from 'react'
import { NavLink } from 'react-router-dom' import { NavLink } from 'react-router-dom'
// As this is the demo project, we import our dependencies from the `src` directory. // As this is the demo project, we import our dependencies from the `src` directory.
import { useConfig } from '../../../../packages/ui/src/providers/Config' import { useConfig } from '../../../../packages/ui/src/providers/Config/index.js'
// In your projects, you can import as follows: // In your projects, you can import as follows:
// import { useConfig } from 'payload/components/utilities'; // import { useConfig } from 'payload/components/utilities';
const baseClass = 'after-nav-links' const baseClass = 'after-nav-links'
const AfterNavLinks: React.FC = () => { export const AfterNavLinks: React.FC = () => {
const { const {
routes: { admin: adminRoute }, routes: { admin: adminRoute },
} = useConfig() } = useConfig()
@@ -50,5 +50,3 @@ const AfterNavLinks: React.FC = () => {
</div> </div>
) )
} }
export default AfterNavLinks

View File

@@ -2,9 +2,9 @@
import React from 'react' import React from 'react'
import { useTranslation } from '../../../../packages/ui/src/providers/Translation' import { useTranslation } from '../../../../packages/ui/src/providers/Translation/index.js'
const BeforeLogin: React.FC = () => { export const BeforeLogin: React.FC = () => {
const translation = useTranslation() const translation = useTranslation()
return ( return (
<div> <div>
@@ -20,5 +20,3 @@ const BeforeLogin: React.FC = () => {
</div> </div>
) )
} }
export default BeforeLogin

View File

@@ -2,7 +2,7 @@ import React from 'react'
const baseClass = 'collection-api-button' const baseClass = 'collection-api-button'
const CollectionAPIButton: React.FC = () => { export const CollectionAPIButton: React.FC = () => {
return ( return (
<div <div
className={baseClass} className={baseClass}
@@ -18,5 +18,3 @@ const CollectionAPIButton: React.FC = () => {
</div> </div>
) )
} }
export default CollectionAPIButton

View File

@@ -2,7 +2,7 @@ import React from 'react'
const baseClass = 'collection-edit-button' const baseClass = 'collection-edit-button'
const CollectionEditButton: React.FC = () => { export const CollectionEditButton: React.FC = () => {
return ( return (
<div <div
className={baseClass} className={baseClass}
@@ -18,5 +18,3 @@ const CollectionEditButton: React.FC = () => {
</div> </div>
) )
} }
export default CollectionEditButton

View File

@@ -2,7 +2,7 @@ import React from 'react'
const baseClass = 'collection-list-button' const baseClass = 'collection-list-button'
const CollectionListButton: React.FC = () => { export const CollectionListButton: React.FC = () => {
return ( return (
<div <div
className={baseClass} className={baseClass}
@@ -18,5 +18,3 @@ const CollectionListButton: React.FC = () => {
</div> </div>
) )
} }
export default CollectionListButton

View File

@@ -9,7 +9,7 @@ type CustomContext = {
const Context = createContext({} as CustomContext) const Context = createContext({} as CustomContext)
const CustomProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => { export const CustomProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {
const [getCustom, setCustom] = useState({}) const [getCustom, setCustom] = useState({})
const value = { const value = {
@@ -22,6 +22,4 @@ const CustomProvider: React.FC<{ children: React.ReactNode }> = ({ children }) =
return <Context.Provider value={value}>{children}</Context.Provider> return <Context.Provider value={value}>{children}</Context.Provider>
} }
export default CustomProvider
export const useCustom = () => useContext(Context) export const useCustom = () => useContext(Context)

View File

@@ -3,11 +3,11 @@
import React from 'react' import React from 'react'
import { Link, useRouteMatch } from 'react-router-dom' import { Link, useRouteMatch } from 'react-router-dom'
import type { DocumentTabComponent } from '../../../../packages/payload/src/admin/types' import type { DocumentTabComponent } from '../../../../packages/payload/src/admin/types.js'
import './index.scss' import './index.scss'
const CustomTabComponent: DocumentTabComponent = (props) => { export const CustomTabComponent: DocumentTabComponent = (props) => {
const { path } = props const { path } = props
const match = useRouteMatch() const match = useRouteMatch()
@@ -17,5 +17,3 @@ const CustomTabComponent: DocumentTabComponent = (props) => {
</li> </li>
) )
} }
export default CustomTabComponent

View File

@@ -1,5 +1,3 @@
import React from 'react' import React from 'react'
const DemoUIFieldCell: React.FC = () => <p>Demo UI Field Cell</p> export const DemoUIFieldCell: React.FC = () => <p>Demo UI Field Cell</p>
export default DemoUIFieldCell

View File

@@ -1,5 +1,3 @@
import React from 'react' import React from 'react'
const DemoUIField: React.FC = () => <p className="field-type">Demo UI Field</p> export const DemoUIField: React.FC = () => <p className="field-type">Demo UI Field</p>
export default DemoUIField

View File

@@ -3,7 +3,7 @@ import React from 'react'
import type { import type {
DescriptionComponent, DescriptionComponent,
DescriptionFunction, DescriptionFunction,
} from '../../../../packages/payload/src/admin/types' } from '../../../../packages/payload/src/admin/types.js'
export const FieldDescriptionComponent: DescriptionComponent<string> = ({ path, value }) => { export const FieldDescriptionComponent: DescriptionComponent<string> = ({ path, value }) => {
return ( return (

View File

@@ -2,7 +2,7 @@ import React from 'react'
const baseClass = 'global-api-button' const baseClass = 'global-api-button'
const GlobalAPIButton: React.FC = () => { export const GlobalAPIButton: React.FC = () => {
return ( return (
<div <div
className={baseClass} className={baseClass}
@@ -18,5 +18,3 @@ const GlobalAPIButton: React.FC = () => {
</div> </div>
) )
} }
export default GlobalAPIButton

View File

@@ -2,7 +2,7 @@ import React from 'react'
const baseClass = 'global-edit-button' const baseClass = 'global-edit-button'
const GlobalEditButton: React.FC = () => { export const GlobalEditButton: React.FC = () => {
return ( return (
<div <div
className={baseClass} className={baseClass}
@@ -18,5 +18,3 @@ const GlobalEditButton: React.FC = () => {
</div> </div>
) )
} }
export default GlobalEditButton

View File

@@ -2,10 +2,10 @@
import React from 'react' import React from 'react'
import { LogOut } from '../../../../packages/ui/src/icons/LogOut' import { LogOut } from '../../../../packages/ui/src/icons/LogOut/index.js'
import { useConfig } from '../../../../packages/ui/src/providers/Config' import { useConfig } from '../../../../packages/ui/src/providers/Config/index.js'
const Logout: React.FC = () => { export const Logout: React.FC = () => {
const config = useConfig() const config = useConfig()
const { const {
admin: { logoutRoute }, admin: { logoutRoute },
@@ -17,5 +17,3 @@ const Logout: React.FC = () => {
</a> </a>
) )
} }
export default Logout

View File

@@ -1,8 +1,11 @@
import { Modal, useModal } from '@faceless-ui/modal' import facelessUIImport from '@faceless-ui/modal'
const { Modal, useModal } = facelessUIImport
import React, { Fragment, useCallback } from 'react' import React, { Fragment, useCallback } from 'react'
import { Transforms } from 'slate' import { Transforms } from 'slate'
import { ReactEditor, useSlate } from 'slate-react' import { ReactEditor, useSlate } from 'slate-react'
// TODO:
import Button from '../../../../../../../packages/payload/src/admin/components/elements/Button' import Button from '../../../../../../../packages/payload/src/admin/components/elements/Button'
import Form from '../../../../../../../packages/payload/src/admin/components/forms/Form' import Form from '../../../../../../../packages/payload/src/admin/components/forms/Form'
import reduceFieldsToValues from '../../../../../../../packages/payload/src/admin/components/forms/Form/reduceFieldsToValues' import reduceFieldsToValues from '../../../../../../../packages/payload/src/admin/components/forms/Form/reduceFieldsToValues'
@@ -24,12 +27,12 @@ const initialFormData = {
const insertButton = (editor, { href, label, newTab = false, style }: any) => { const insertButton = (editor, { href, label, newTab = false, style }: any) => {
const text = { text: ' ' } const text = { text: ' ' }
const button = { const button = {
type: 'button',
children: [text], children: [text],
href, href,
label, label,
newTab, newTab,
style, style,
type: 'button',
} }
const nodes = [button, { children: [{ text: '' }] }] const nodes = [button, { children: [{ text: '' }] }]
@@ -50,7 +53,7 @@ const insertButton = (editor, { href, label, newTab = false, style }: any) => {
ReactEditor.focus(editor) ReactEditor.focus(editor)
} }
const ToolbarButton: React.FC<{ path: string }> = ({ path }) => { export const ToolbarButton: React.FC<{ path: string }> = ({ path }) => {
const { closeAll, open } = useModal() const { closeAll, open } = useModal()
const editor = useSlate() const editor = useSlate()
@@ -103,5 +106,3 @@ const ToolbarButton: React.FC<{ path: string }> = ({ path }) => {
</Fragment> </Fragment>
) )
} }
export default ToolbarButton

View File

@@ -4,7 +4,7 @@ import './index.scss'
const baseClass = 'rich-text-button' const baseClass = 'rich-text-button'
const ButtonElement: React.FC = ({ attributes, children, element }) => { export const ButtonElement: React.FC = ({ attributes, children, element }) => {
const { label, style = 'primary' } = element const { label, style = 'primary' } = element
return ( return (
@@ -19,5 +19,3 @@ const ButtonElement: React.FC = ({ attributes, children, element }) => {
</div> </div>
) )
} }
export default ButtonElement

View File

@@ -1,14 +1,12 @@
import type { RichTextCustomElement } from '../../../../../../packages/payload/src/fields/config/types' import type { RichTextCustomElement } from '../../../../../../packages/richtext-slate/src/types.js'
import Button from './Button' import { ToolbarButton } from './Button/index.js'
import Element from './Element' import { ButtonElement } from './Element/index.js'
import plugin from './plugin' import { withButton } from './plugin.js'
const button: RichTextCustomElement = { export const button: RichTextCustomElement = {
name: 'button', name: 'button',
Button, Button: ToolbarButton,
Element, Element: ButtonElement,
plugins: [plugin], plugins: [withButton],
} }
export default button

View File

@@ -1,6 +1,6 @@
import type { Editor } from 'slate' import type { Editor } from 'slate'
const withButton = (incomingEditor: Editor): Editor => { export const withButton = (incomingEditor: Editor): Editor => {
const editor = incomingEditor const editor = incomingEditor
const { isVoid } = editor const { isVoid } = editor
@@ -8,5 +8,3 @@ const withButton = (incomingEditor: Editor): Editor => {
return editor return editor
} }
export default withButton

View File

@@ -1,5 +1,5 @@
import Button from './Button' import Button from './Button/index.js'
import Leaf from './Leaf' import Leaf from './Leaf/index.js'
export default { export default {
name: 'purple-background', name: 'purple-background',

View File

@@ -1,8 +1,8 @@
import React, { Fragment } from 'react' import React, { Fragment } from 'react'
import type { AdminViewComponent } from '../../../../../packages/payload/src/admin/types' import type { AdminViewComponent } from '../../../../../packages/payload/src/admin/types.js'
const CustomAccountView: AdminViewComponent = () => { export const CustomAccountView: AdminViewComponent = () => {
return ( return (
<Fragment> <Fragment>
<div <div
@@ -23,5 +23,3 @@ const CustomAccountView: AdminViewComponent = () => {
</Fragment> </Fragment>
) )
} }
export default CustomAccountView

View File

@@ -1,8 +1,8 @@
import React, { Fragment } from 'react' import React, { Fragment } from 'react'
import { AdminViewComponent } from '../../../../../packages/payload/src/admin/types' import type { AdminViewComponent } from '../../../../../packages/payload/src/admin/types.js'
const CustomDashboardView: AdminViewComponent = () => { export const CustomDashboardView: AdminViewComponent = () => {
return ( return (
<Fragment> <Fragment>
<div <div
@@ -23,5 +23,3 @@ const CustomDashboardView: AdminViewComponent = () => {
</Fragment> </Fragment>
) )
} }
export default CustomDashboardView

View File

@@ -3,15 +3,15 @@
import React, { useEffect } from 'react' import React, { useEffect } from 'react'
import { Redirect } from 'react-router-dom' import { Redirect } from 'react-router-dom'
import type { AdminViewComponent } from '../../../../../packages/payload/src/admin/types' import type { AdminViewComponent } from '../../../../../packages/payload/src/admin/types.js'
import { Button } from '../../../../../packages/ui/src/elements/Button' import { Button } from '../../../../../packages/ui/src/elements/Button/index.js'
// TODO(3.0): Meta? // TODO(3.0): Meta?
// import Meta from '../../../../../packages/payload/src/admin/components/utilities/Meta' // import Meta from '../../../../../packages/payload/src/admin/components/utilities/Meta'
import { useStepNav } from '../../../../../packages/ui/src/elements/StepNav' import { useStepNav } from '../../../../../packages/ui/src/elements/StepNav/index.js'
import { useConfig } from '../../../../../packages/ui/src/providers/Config' import { useConfig } from '../../../../../packages/ui/src/providers/Config/index.js'
// As this is the demo project, we import our dependencies from the `src` directory. // As this is the demo project, we import our dependencies from the `src` directory.
import { DefaultTemplate } from '../../../../../packages/ui/src/templates/Default' import { DefaultTemplate } from '../../../../../packages/ui/src/templates/Default/index.js'
// In your projects, you can import as follows: // In your projects, you can import as follows:
// import { DefaultTemplate } from 'payload/components/templates'; // import { DefaultTemplate } from 'payload/components/templates';
@@ -24,7 +24,7 @@ import './index.scss'
const baseClass = 'custom-default-view' const baseClass = 'custom-default-view'
const CustomDefaultView: AdminViewComponent = ({ canAccessAdmin, user }) => { export const CustomDefaultView: AdminViewComponent = ({ canAccessAdmin, user }) => {
const { const {
routes: { admin: adminRoute }, routes: { admin: adminRoute },
} = useConfig() } = useConfig()
@@ -76,5 +76,3 @@ const CustomDefaultView: AdminViewComponent = ({ canAccessAdmin, user }) => {
</DefaultTemplate> </DefaultTemplate>
) )
} }
export default CustomDefaultView

View File

@@ -3,10 +3,10 @@
import React, { Fragment, useEffect } from 'react' import React, { Fragment, useEffect } from 'react'
import { Redirect } from 'react-router-dom' import { Redirect } from 'react-router-dom'
import type { AdminViewComponent } from '../../../../../packages/payload/src/admin/types' import type { AdminViewComponent } from '../../../../../packages/payload/src/admin/types.js'
import { useStepNav } from '../../../../../packages/ui/src/elements/StepNav' import { useStepNav } from '../../../../../packages/ui/src/elements/StepNav/index.js'
import { useConfig } from '../../../../../packages/ui/src/providers/Config' import { useConfig } from '../../../../../packages/ui/src/providers/Config/index.js'
export const CustomEditView: AdminViewComponent = ({ export const CustomEditView: AdminViewComponent = ({
canAccessAdmin, canAccessAdmin,

View File

@@ -3,12 +3,12 @@
import React, { Fragment, useEffect } from 'react' import React, { Fragment, useEffect } from 'react'
import { Redirect } from 'react-router-dom' import { Redirect } from 'react-router-dom'
import type { AdminViewComponent } from '../../../../../packages/payload/src/admin/types' import type { AdminViewComponent } from '../../../../../packages/payload/src/admin/types.js'
import { useStepNav } from '../../../../../packages/ui/src/elements/StepNav' import { useStepNav } from '../../../../../packages/ui/src/elements/StepNav/index.js'
import { useConfig } from '../../../../../packages/ui/src/providers/Config' import { useConfig } from '../../../../../packages/ui/src/providers/Config/index.js'
const CustomDefaultEditView: AdminViewComponent = ({ export const CustomDefaultEditView: AdminViewComponent = ({
canAccessAdmin, canAccessAdmin,
// collection, // collection,
// global, // global,
@@ -73,5 +73,3 @@ const CustomDefaultEditView: AdminViewComponent = ({
</Fragment> </Fragment>
) )
} }
export default CustomDefaultEditView

View File

@@ -2,10 +2,10 @@
import React from 'react' import React from 'react'
import { Button } from '../../../../../packages/ui/src/elements/Button' import { Button } from '../../../../../packages/ui/src/elements/Button/index.js'
import { useConfig } from '../../../../../packages/ui/src/providers/Config' import { useConfig } from '../../../../../packages/ui/src/providers/Config/index.js'
// As this is the demo project, we import our dependencies from the `src` directory. // As this is the demo project, we import our dependencies from the `src` directory.
import { MinimalTemplate } from '../../../../../packages/ui/src/templates/Minimal' import { MinimalTemplate } from '../../../../../packages/ui/src/templates/Minimal/index.js'
// In your projects, you can import as follows: // In your projects, you can import as follows:
// import { MinimalTemplate } from 'payload/components/templates'; // import { MinimalTemplate } from 'payload/components/templates';
@@ -16,7 +16,7 @@ import './index.scss'
const baseClass = 'custom-minimal-view' const baseClass = 'custom-minimal-view'
const CustomMinimalView: React.FC = () => { export const CustomMinimalView: React.FC = () => {
const { const {
routes: { admin: adminRoute }, routes: { admin: adminRoute },
} = useConfig() } = useConfig()
@@ -38,5 +38,3 @@ const CustomMinimalView: React.FC = () => {
</MinimalTemplate> </MinimalTemplate>
) )
} }
export default CustomMinimalView

View File

@@ -2,11 +2,11 @@
import React, { Fragment, useEffect } from 'react' import React, { Fragment, useEffect } from 'react'
import { type AdminViewComponent } from '../../../../../packages/payload/src/admin/types' import { type AdminViewComponent } from '../../../../../packages/payload/src/admin/types.js'
import { useStepNav } from '../../../../../packages/ui/src/elements/StepNav' import { useStepNav } from '../../../../../packages/ui/src/elements/StepNav/index.js'
import { customTabViewTitle } from '../../../shared' import { customTabViewTitle } from '../../../shared.js'
const CustomTabView: AdminViewComponent = () => { export const CustomTabView: AdminViewComponent = () => {
const { setStepNav } = useStepNav() const { setStepNav } = useStepNav()
// This effect will only run one time and will allow us // This effect will only run one time and will allow us
@@ -40,5 +40,3 @@ const CustomTabView: AdminViewComponent = () => {
</Fragment> </Fragment>
) )
} }
export default CustomTabView

View File

@@ -2,11 +2,11 @@
import React, { Fragment, useEffect } from 'react' import React, { Fragment, useEffect } from 'react'
import { type AdminViewComponent } from '../../../../../packages/payload/src/admin/types' import { type AdminViewComponent } from '../../../../../packages/payload/src/admin/types.js'
import { useStepNav } from '../../../../../packages/ui/src/elements/StepNav' import { useStepNav } from '../../../../../packages/ui/src/elements/StepNav/index.js'
import { customTabViewTitle } from '../../../shared' import { customTabViewTitle } from '../../../shared.js'
const CustomTabView2: AdminViewComponent = () => { export const CustomTabView2: AdminViewComponent = () => {
const { setStepNav } = useStepNav() const { setStepNav } = useStepNav()
// This effect will only run one time and will allow us // This effect will only run one time and will allow us
@@ -40,5 +40,3 @@ const CustomTabView2: AdminViewComponent = () => {
</Fragment> </Fragment>
) )
} }
export default CustomTabView2

View File

@@ -2,11 +2,11 @@
import React, { Fragment, useEffect } from 'react' import React, { Fragment, useEffect } from 'react'
import { type AdminViewComponent } from '../../../../../packages/payload/src/admin/types' import { type AdminViewComponent } from '../../../../../packages/payload/src/admin/types.js'
import { useStepNav } from '../../../../../packages/ui/src/elements/StepNav' import { useStepNav } from '../../../../../packages/ui/src/elements/StepNav/index.js'
import { customNestedTabViewTitle } from '../../../shared' import { customNestedTabViewTitle } from '../../../shared.js'
const CustomNestedTabView: AdminViewComponent = () => { export const CustomNestedTabView: AdminViewComponent = () => {
const { setStepNav } = useStepNav() const { setStepNav } = useStepNav()
// This effect will only run one time and will allow us // This effect will only run one time and will allow us
@@ -40,5 +40,3 @@ const CustomNestedTabView: AdminViewComponent = () => {
</Fragment> </Fragment>
) )
} }
export default CustomNestedTabView

View File

@@ -3,12 +3,12 @@
import React, { Fragment, useEffect } from 'react' import React, { Fragment, useEffect } from 'react'
import { Redirect } from 'react-router-dom' import { Redirect } from 'react-router-dom'
import type { AdminViewComponent } from '../../../../../packages/payload/src/admin/types' import type { AdminViewComponent } from '../../../../../packages/payload/src/admin/types.js'
import { useStepNav } from '../../../../../packages/ui/src/elements/StepNav' import { useStepNav } from '../../../../../packages/ui/src/elements/StepNav/index.js'
import { useConfig } from '../../../../../packages/ui/src/providers/Config' import { useConfig } from '../../../../../packages/ui/src/providers/Config/index.js'
const CustomVersionsView: AdminViewComponent = ({ export const CustomVersionsView: AdminViewComponent = ({
canAccessAdmin, canAccessAdmin,
// collection, // collection,
// global, // global,
@@ -71,5 +71,3 @@ const CustomVersionsView: AdminViewComponent = ({
</Fragment> </Fragment>
) )
} }
export default CustomVersionsView

View File

@@ -1,9 +1,9 @@
import React from 'react' import React from 'react'
import { type AdminViewComponent } from '../../../../../packages/payload/src/admin/types' import { type AdminViewComponent } from '../../../../../packages/payload/src/admin/types.js'
import { customViewTitle } from '../../../shared' import { customViewTitle } from '../../../shared.js'
const CustomView: AdminViewComponent = () => { export const CustomView: AdminViewComponent = () => {
return ( return (
<div <div
style={{ style={{
@@ -22,5 +22,3 @@ const CustomView: AdminViewComponent = () => {
</div> </div>
) )
} }
export default CustomView

View File

@@ -1,9 +1,9 @@
import React from 'react' import React from 'react'
import { type AdminViewComponent } from '../../../../../packages/payload/src/admin/types' import { type AdminViewComponent } from '../../../../../packages/payload/src/admin/types.js'
import { customNestedViewTitle } from '../../../shared' import { customNestedViewTitle } from '../../../shared.js'
const CustomNestedView: AdminViewComponent = () => { export const CustomNestedView: AdminViewComponent = () => {
return ( return (
<div <div
style={{ style={{
@@ -22,5 +22,3 @@ const CustomNestedView: AdminViewComponent = () => {
</div> </div>
) )
} }
export default CustomNestedView

View File

@@ -1,37 +1,35 @@
import path from 'path' import { buildConfigWithDefaults } from '../buildConfigWithDefaults.js'
import { CustomIdRow } from './collections/CustomIdRow.js'
import { buildConfigWithDefaults } from '../buildConfigWithDefaults' import { CustomIdTab } from './collections/CustomIdTab.js'
import { CustomIdRow } from './collections/CustomIdRow' import { CustomViews1 } from './collections/CustomViews1.js'
import { CustomIdTab } from './collections/CustomIdTab' import { CustomViews2 } from './collections/CustomViews2.js'
import { CustomViews1 } from './collections/CustomViews1' import { Geo } from './collections/Geo.js'
import { CustomViews2 } from './collections/CustomViews2' import { CollectionGroup1A } from './collections/Group1A.js'
import { Geo } from './collections/Geo' import { CollectionGroup1B } from './collections/Group1B.js'
import { CollectionGroup1A } from './collections/Group1A' import { CollectionGroup2A } from './collections/Group2A.js'
import { CollectionGroup1B } from './collections/Group1B' import { CollectionGroup2B } from './collections/Group2B.js'
import { CollectionGroup2A } from './collections/Group2A' import { CollectionHidden } from './collections/Hidden.js'
import { CollectionGroup2B } from './collections/Group2B' import { CollectionNoApiView } from './collections/NoApiView.js'
import { CollectionHidden } from './collections/Hidden' import { Posts } from './collections/Posts.js'
import { CollectionNoApiView } from './collections/NoApiView' import { Users } from './collections/Users.js'
import { Posts } from './collections/Posts' import { AdminButton } from './components/AdminButton/index.js'
import { Users } from './collections/Users' import { AfterDashboard } from './components/AfterDashboard/index.js'
import AdminButton from './components/AdminButton' import { AfterNavLinks } from './components/AfterNavLinks/index.js'
import AfterDashboard from './components/AfterDashboard' import { BeforeLogin } from './components/BeforeLogin/index.js'
import AfterNavLinks from './components/AfterNavLinks' import { Logout } from './components/Logout/index.js'
import BeforeLogin from './components/BeforeLogin' import { CustomDefaultView } from './components/views/CustomDefault/index.js'
import Logout from './components/Logout' import { CustomMinimalView } from './components/views/CustomMinimal/index.js'
import CustomDefaultView from './components/views/CustomDefault' import { CustomView } from './components/views/CustomView/index.js'
import CustomMinimalRoute from './components/views/CustomMinimal' import { CustomNestedView } from './components/views/CustomViewNested/index.js'
import CustomView from './components/views/CustomView' import { CustomGlobalViews1 } from './globals/CustomViews1.js'
import CustomNestedView from './components/views/CustomViewNested' import { CustomGlobalViews2 } from './globals/CustomViews2.js'
import { CustomGlobalViews1 } from './globals/CustomViews1' import { Global } from './globals/Global.js'
import { CustomGlobalViews2 } from './globals/CustomViews2' import { GlobalGroup1A } from './globals/Group1A.js'
import { Global } from './globals/Global' import { GlobalGroup1B } from './globals/Group1B.js'
import { GlobalGroup1A } from './globals/Group1A' import { GlobalHidden } from './globals/Hidden.js'
import { GlobalGroup1B } from './globals/Group1B' import { GlobalNoApiView } from './globals/NoApiView.js'
import { GlobalHidden } from './globals/Hidden' import { clearAndSeedEverything } from './seed.js'
import { GlobalNoApiView } from './globals/NoApiView' import { customNestedViewPath, customViewPath } from './shared.js'
import { clearAndSeedEverything } from './seed'
import { customNestedViewPath, customViewPath } from './shared'
export default buildConfigWithDefaults({ export default buildConfigWithDefaults({
admin: { admin: {
@@ -49,7 +47,7 @@ export default buildConfigWithDefaults({
// Account: CustomAccountView, // Account: CustomAccountView,
CustomMinimalView: { CustomMinimalView: {
path: '/custom-minimal-view', path: '/custom-minimal-view',
Component: CustomMinimalRoute, Component: CustomMinimalView,
}, },
CustomDefaultView: { CustomDefaultView: {
path: '/custom-default-view', path: '/custom-default-view',

View File

@@ -3,11 +3,11 @@ import type { Page } from '@playwright/test'
import { expect, test } from '@playwright/test' import { expect, test } from '@playwright/test'
import qs from 'qs' import qs from 'qs'
import type { Payload } from '../../packages/payload/src' import type { Payload } from '../../packages/payload/src/index.js'
import type { Geo, Post } from './payload-types' import type { Geo, Post } from './payload-types.js'
import { mapAsync } from '../../packages/payload/src/utilities/mapAsync' import { mapAsync } from '../../packages/payload/src/utilities/mapAsync.js'
import wait from '../../packages/payload/src/utilities/wait' import wait from '../../packages/payload/src/utilities/wait.js'
import { import {
checkBreadcrumb, checkBreadcrumb,
checkPageTitle, checkPageTitle,
@@ -17,11 +17,11 @@ import {
openNav, openNav,
saveDocAndAssert, saveDocAndAssert,
saveDocHotkeyAndAssert, saveDocHotkeyAndAssert,
} from '../helpers' } from '../helpers.js'
import { AdminUrlUtil } from '../helpers/adminUrlUtil' import { AdminUrlUtil } from '../helpers/adminUrlUtil.js'
import { initPayloadE2E } from '../helpers/configHelpers' import { initPayloadE2E } from '../helpers/configHelpers.js'
import config from './config' import config from './config.js'
import { clearAndSeedEverything } from './seed' import { clearAndSeedEverything } from './seed.js'
import { import {
customEditLabel, customEditLabel,
customNestedTabViewPath, customNestedTabViewPath,
@@ -34,7 +34,7 @@ import {
customViewPath, customViewPath,
customViewTitle, customViewTitle,
slugPluralLabel, slugPluralLabel,
} from './shared' } from './shared.js'
import { import {
customIdCollectionId, customIdCollectionId,
customIdCollectionSlug, customIdCollectionSlug,
@@ -46,7 +46,7 @@ import {
noApiViewCollectionSlug, noApiViewCollectionSlug,
noApiViewGlobalSlug, noApiViewGlobalSlug,
postsCollectionSlug, postsCollectionSlug,
} from './slugs' } from './slugs.js'
const { beforeAll, beforeEach, describe } = test const { beforeAll, beforeEach, describe } = test

View File

@@ -1,7 +1,7 @@
import type { GlobalConfig } from '../../../packages/payload/src/globals/config/types' import type { GlobalConfig } from '../../../packages/payload/src/globals/config/types.js'
import { CustomEditView } from '../components/views/CustomEdit' import { CustomEditView } from '../components/views/CustomEdit/index.js'
import { customGlobalViews1GlobalSlug } from '../slugs' import { customGlobalViews1GlobalSlug } from '../slugs.js'
export const CustomGlobalViews1: GlobalConfig = { export const CustomGlobalViews1: GlobalConfig = {
slug: customGlobalViews1GlobalSlug, slug: customGlobalViews1GlobalSlug,

View File

@@ -1,10 +1,10 @@
import type { GlobalConfig } from '../../../packages/payload/src/globals/config/types' import type { GlobalConfig } from '../../../packages/payload/src/globals/config/types.js'
import CustomTabComponent from '../components/CustomTabComponent' import { CustomTabComponent } from '../components/CustomTabComponent/index.js'
import CustomDefaultEditView from '../components/views/CustomEditDefault' import { CustomDefaultEditView } from '../components/views/CustomEditDefault/index.js'
import CustomView from '../components/views/CustomTab' import { CustomTabView } from '../components/views/CustomTab/index.js'
import CustomVersionsView from '../components/views/CustomVersions' import { CustomVersionsView } from '../components/views/CustomVersions/index.js'
import { customGlobalViews2GlobalSlug } from '../slugs' import { customGlobalViews2GlobalSlug } from '../slugs.js'
export const CustomGlobalViews2: GlobalConfig = { export const CustomGlobalViews2: GlobalConfig = {
slug: customGlobalViews2GlobalSlug, slug: customGlobalViews2GlobalSlug,
@@ -17,7 +17,7 @@ export const CustomGlobalViews2: GlobalConfig = {
Versions: CustomVersionsView, Versions: CustomVersionsView,
MyCustomView: { MyCustomView: {
path: '/custom-tab-view', path: '/custom-tab-view',
Component: CustomView, Component: CustomTabView,
Tab: { Tab: {
label: 'Custom', label: 'Custom',
href: '/custom-tab-view', href: '/custom-tab-view',
@@ -25,7 +25,7 @@ export const CustomGlobalViews2: GlobalConfig = {
}, },
MyCustomViewWithCustomTab: { MyCustomViewWithCustomTab: {
path: '/custom-tab-component', path: '/custom-tab-component',
Component: CustomView, Component: CustomTabView,
Tab: CustomTabComponent, Tab: CustomTabComponent,
}, },
}, },

View File

@@ -1,8 +1,8 @@
import type { GlobalConfig } from '../../../packages/payload/src/globals/config/types' import type { GlobalConfig } from '../../../packages/payload/src/globals/config/types.js'
import GlobalAPIButton from '../components/GlobalAPIButton' import { GlobalAPIButton } from '../components/GlobalAPIButton/index.js'
import GlobalEditButton from '../components/GlobalEditButton' import { GlobalEditButton } from '../components/GlobalEditButton/index.js'
import { globalSlug } from '../slugs' import { globalSlug } from '../slugs.js'
export const Global: GlobalConfig = { export const Global: GlobalConfig = {
slug: globalSlug, slug: globalSlug,

View File

@@ -1,6 +1,6 @@
import type { GlobalConfig } from '../../../packages/payload/src/globals/config/types' import type { GlobalConfig } from '../../../packages/payload/src/globals/config/types.js'
import { group1GlobalSlug } from '../slugs' import { group1GlobalSlug } from '../slugs.js'
export const GlobalGroup1A: GlobalConfig = { export const GlobalGroup1A: GlobalConfig = {
slug: group1GlobalSlug, slug: group1GlobalSlug,

View File

@@ -1,6 +1,6 @@
import type { GlobalConfig } from '../../../packages/payload/src/globals/config/types' import type { GlobalConfig } from '../../../packages/payload/src/globals/config/types.js'
import { group2GlobalSlug } from '../slugs' import { group2GlobalSlug } from '../slugs.js'
export const GlobalGroup1B: GlobalConfig = { export const GlobalGroup1B: GlobalConfig = {
slug: group2GlobalSlug, slug: group2GlobalSlug,

View File

@@ -1,6 +1,6 @@
import type { GlobalConfig } from '../../../packages/payload/src/globals/config/types' import type { GlobalConfig } from '../../../packages/payload/src/globals/config/types.js'
import { hiddenGlobalSlug } from '../slugs' import { hiddenGlobalSlug } from '../slugs.js'
export const GlobalHidden: GlobalConfig = { export const GlobalHidden: GlobalConfig = {
slug: hiddenGlobalSlug, slug: hiddenGlobalSlug,

View File

@@ -1,6 +1,6 @@
import type { GlobalConfig } from '../../../packages/payload/src/globals/config/types' import type { GlobalConfig } from '../../../packages/payload/src/globals/config/types.js'
import { noApiViewGlobalSlug } from '../slugs' import { noApiViewGlobalSlug } from '../slugs.js'
export const GlobalNoApiView: GlobalConfig = { export const GlobalNoApiView: GlobalConfig = {
slug: noApiViewGlobalSlug, slug: noApiViewGlobalSlug,

View File

@@ -1,18 +1,18 @@
import type { Payload } from '../../packages/payload/src' import type { Payload } from '../../packages/payload/src/index.js'
import { devUser } from '../credentials' import { devUser } from '../credentials.js'
import { seedDB } from '../helpers/seed' import { seedDB } from '../helpers/seed.js'
import { import {
collectionSlugs, collectionSlugs,
customIdCollectionId,
customIdCollectionSlug,
customViews1CollectionSlug, customViews1CollectionSlug,
customViews2CollectionSlug, customViews2CollectionSlug,
geoCollectionSlug, geoCollectionSlug,
noApiViewCollectionSlug, noApiViewCollectionSlug,
postsCollectionSlug, postsCollectionSlug,
usersCollectionSlug, usersCollectionSlug,
customIdCollectionSlug, } from './slugs.js'
customIdCollectionId,
} from './slugs'
export async function clearAndSeedEverything(_payload: Payload) { export async function clearAndSeedEverything(_payload: Payload) {
return await seedDB({ return await seedDB({