Fixes #13574. When editing an autosave-enabled document within a document drawer, any changes made will while the autosave is processing are ultimately discarded from local form state. This makes is difficult or even impossible to edit fields. This is because we server-render, then replace, the entire document on every save. This includes form state, which is stale because it was rendered while new changes were still being made. We don't need to re-render the entire view on every save, though, only on create. We don't do this on the top-level edit view, for example. Instead, we only need to replace form state. This change is also a performance improvement because we are no longer rendering all components unnecessarily, especially on every autosave interval. Before: https://github.com/user-attachments/assets/e9c221bf-4800-4153-af55-8b82e93b3c26 After: https://github.com/user-attachments/assets/d77ef2f3-b98b-41d6-ba6c-b502b9bb99cc Note: ignore the flashing autosave status and doc controls. This is horrible and we're actively fixing it, but is outside the scope of this PR. --- - To see the specific tasks where the Asana app for GitHub is being used, see below: - https://app.asana.com/0/0/1211139422639700
95 lines
4.1 KiB
JSON
95 lines
4.1 KiB
JSON
{
|
|
"compilerOptions": {
|
|
/* Strictness */
|
|
"strict": true,
|
|
"noUncheckedIndexedAccess": true,
|
|
"noImplicitOverride": true,
|
|
"composite": true,
|
|
"declaration": true,
|
|
"declarationMap": true,
|
|
"target": "ES2022",
|
|
"rootDir": "${configDir}/src",
|
|
"module": "NodeNext",
|
|
"moduleResolution": "NodeNext",
|
|
"allowJs": true,
|
|
"checkJs": false,
|
|
"esModuleInterop": true,
|
|
"forceConsistentCasingInFileNames": true,
|
|
"jsx": "preserve",
|
|
"outDir": "${configDir}/dist",
|
|
"resolveJsonModule": true,
|
|
"skipLibCheck": true,
|
|
"emitDeclarationOnly": true,
|
|
"sourceMap": true,
|
|
"lib": ["DOM", "DOM.Iterable", "ES2022"],
|
|
"types": ["node", "jest"],
|
|
"incremental": true,
|
|
"isolatedModules": true,
|
|
"plugins": [
|
|
{
|
|
"name": "next"
|
|
}
|
|
],
|
|
"paths": {
|
|
"@payload-config": ["./test/_community/config.ts"],
|
|
"@payloadcms/admin-bar": ["./packages/admin-bar/src"],
|
|
"@payloadcms/live-preview": ["./packages/live-preview/src"],
|
|
"@payloadcms/live-preview-react": ["./packages/live-preview-react/src/index.ts"],
|
|
"@payloadcms/live-preview-vue": ["./packages/live-preview-vue/src/index.ts"],
|
|
"@payloadcms/ui": ["./packages/ui/src/exports/client/index.ts"],
|
|
"@payloadcms/ui/shared": ["./packages/ui/src/exports/shared/index.ts"],
|
|
"@payloadcms/ui/rsc": ["./packages/ui/src/exports/rsc/index.ts"],
|
|
"@payloadcms/ui/scss": ["./packages/ui/src/scss.scss"],
|
|
"@payloadcms/ui/scss/app.scss": ["./packages/ui/src/scss/app.scss"],
|
|
"@payloadcms/next/*": ["./packages/next/src/exports/*.ts"],
|
|
"@payloadcms/richtext-lexical/client": [
|
|
"./packages/richtext-lexical/src/exports/client/index.ts"
|
|
],
|
|
"@payloadcms/richtext-lexical/rsc": ["./packages/richtext-lexical/src/exports/server/rsc.ts"],
|
|
"@payloadcms/richtext-slate/rsc": ["./packages/richtext-slate/src/exports/server/rsc.ts"],
|
|
"@payloadcms/richtext-slate/client": [
|
|
"./packages/richtext-slate/src/exports/client/index.ts"
|
|
],
|
|
"@payloadcms/plugin-seo/client": ["./packages/plugin-seo/src/exports/client.ts"],
|
|
"@payloadcms/plugin-sentry/client": ["./packages/plugin-sentry/src/exports/client.ts"],
|
|
"@payloadcms/plugin-stripe/client": ["./packages/plugin-stripe/src/exports/client.ts"],
|
|
"@payloadcms/plugin-search/client": ["./packages/plugin-search/src/exports/client.ts"],
|
|
"@payloadcms/plugin-form-builder/client": [
|
|
"./packages/plugin-form-builder/src/exports/client.ts"
|
|
],
|
|
"@payloadcms/plugin-import-export/rsc": [
|
|
"./packages/plugin-import-export/src/exports/rsc.ts"
|
|
],
|
|
"@payloadcms/plugin-multi-tenant/rsc": ["./packages/plugin-multi-tenant/src/exports/rsc.ts"],
|
|
"@payloadcms/plugin-multi-tenant/utilities": [
|
|
"./packages/plugin-multi-tenant/src/exports/utilities.ts"
|
|
],
|
|
"@payloadcms/plugin-multi-tenant/fields": [
|
|
"./packages/plugin-multi-tenant/src/exports/fields.ts"
|
|
],
|
|
"@payloadcms/plugin-multi-tenant/client": [
|
|
"./packages/plugin-multi-tenant/src/exports/client.ts"
|
|
],
|
|
"@payloadcms/plugin-multi-tenant": ["./packages/plugin-multi-tenant/src/index.ts"],
|
|
"@payloadcms/plugin-multi-tenant/translations/languages/all": [
|
|
"./packages/plugin-multi-tenant/src/translations/index.ts"
|
|
],
|
|
"@payloadcms/plugin-multi-tenant/translations/languages/*": [
|
|
"./packages/plugin-multi-tenant/src/translations/languages/*.ts"
|
|
],
|
|
"@payloadcms/next": ["./packages/next/src/exports/*"],
|
|
"@payloadcms/storage-azure/client": ["./packages/storage-azure/src/exports/client.ts"],
|
|
"@payloadcms/storage-s3/client": ["./packages/storage-s3/src/exports/client.ts"],
|
|
"@payloadcms/storage-vercel-blob/client": [
|
|
"./packages/storage-vercel-blob/src/exports/client.ts"
|
|
],
|
|
"@payloadcms/storage-gcs/client": ["./packages/storage-gcs/src/exports/client.ts"],
|
|
"@payloadcms/storage-uploadthing/client": [
|
|
"./packages/storage-uploadthing/src/exports/client.ts"
|
|
]
|
|
}
|
|
},
|
|
"include": ["${configDir}/src"],
|
|
"exclude": ["${configDir}/dist", "${configDir}/build", "${configDir}/temp", "**/*.spec.ts"]
|
|
}
|