Compare commits

...

2658 Commits

Author SHA1 Message Date
Elliot DeNolf
27589482dd chore(release): @payloadcms/db-postgres/0.1.7 2023-10-15 14:12:02 -04:00
James Mikrut
d7ab4b7062 Merge pull request #3642 from payloadcms/fix/#3568-postgres-relationships-in-array
fix(db-postgres): query relationship in array alias
2023-10-15 11:31:57 -04:00
James
2c8fbf1be3 chore: adds specificity to tests 2023-10-15 11:08:16 -04:00
James
eec88f8f1b Merge branch 'fix/#3568-postgres-relationships-in-array' of github.com:payloadcms/payload into fix/#3568-postgres-relationships-in-array 2023-10-15 10:43:32 -04:00
James
1481ef97b5 Merge branch 'main' of github.com:payloadcms/payload 2023-10-15 09:44:19 -04:00
James
a89e89fb80 chore: documents pagination: false 2023-10-15 09:44:00 -04:00
Alessio Gravili
7e7eeb059d chore(richtext-lexical): add 'use client' to field and cell 2023-10-15 14:25:36 +02:00
Alessio Gravili
dc2a502dcc perf(richtext-lexical): remove unnecessary prop drilling and load hooks being run for initialState 2023-10-15 14:07:24 +02:00
Elliot DeNolf
a9a5ba82d8 chore: update pnpm-lock.yaml 2023-10-14 21:09:15 -04:00
James
e6e8fae1c5 Merge branch 'main' of github.com:payloadcms/payload 2023-10-14 19:24:50 -04:00
James
a05868a7f3 chore: remove unnecessary peer dep 2023-10-14 19:24:32 -04:00
Elliot DeNolf
f27cd26575 chore(release): richtext-lexical/0.1.11 2023-10-14 17:35:44 -04:00
Elliot DeNolf
db835ea5c8 chore(release): db-postgres/0.1.6 2023-10-14 17:35:26 -04:00
Jacob Fletcher
d8f265fb94 chore(examples): bumps deps to latest (#3655) 2023-10-14 16:49:47 -04:00
Alessio Gravili
d81d4eb075 feat(richtext-lexical): LexicalPluginToLexical migration feature 2023-10-14 22:36:16 +02:00
James
52f89c0136 fix(db-postgres): ensures columns are nullable if within field with condition 2023-10-14 15:34:27 -04:00
Dan Ribbens
b0083b7c07 test: fix missing variable 2023-10-14 15:32:06 -04:00
Dan Ribbens
21649537a6 fix(db-postgres): query relationship path inside arrays 2023-10-14 15:17:42 -04:00
Elliot DeNolf
9be34c9599 chore(release): richtext-lexical/0.1.10 2023-10-14 14:38:58 -04:00
Elliot DeNolf
8ca632e541 chore(release): richtext-slate/1.0.5 2023-10-14 14:38:48 -04:00
Elliot DeNolf
2ef79145a4 chore(release): payload/2.0.6 2023-10-14 14:37:18 -04:00
James
a0641a445d Merge branch 'main' of github.com:payloadcms/payload 2023-10-14 14:34:46 -04:00
James
3a2e78f7f3 chore: add peer deps for richtext packages 2023-10-14 14:34:40 -04:00
James Mikrut
976d69d154 Merge pull request #3657 from payloadcms/chore/export-pattern
chore: properly separates server / client exports
2023-10-14 14:32:11 -04:00
James
66018362fe chore: properly separates server / client exports 2023-10-14 14:08:08 -04:00
Elliot DeNolf
647fe23d1c chore(release): richtext-lexical/0.1.9 2023-10-14 12:26:28 -04:00
Elliot DeNolf
d7c61861f6 chore(release): richtext-slate/1.0.4 2023-10-14 12:26:19 -04:00
Elliot DeNolf
7caa098023 chore(release): db-postgres/0.1.5 2023-10-14 12:25:54 -04:00
James Mikrut
fd54c40400 Merge pull request #3654 from payloadcms/chore/dynamic-drizzle-kit-import
chore: only imports drizzle-kit if it will be used
2023-10-14 12:21:14 -04:00
James
e180131314 chore: only imports drizzle-kit if it will be used 2023-10-14 12:13:13 -04:00
James
5902d4542b Merge branch 'main' of github.com:payloadcms/payload 2023-10-14 11:51:13 -04:00
James
6bc282444e chore: slate compatibility with next-payload 2023-10-14 11:49:38 -04:00
Alessio Gravili
4dc6c09347 feat(richtext-lexical): SlateToLexical migration feature 2023-10-14 13:36:32 +02:00
Elliot DeNolf
03b9ab0054 chore: cleanup scripts 2023-10-13 16:34:37 -04:00
Elliot DeNolf
3c3c93f483 chore(release): richtext-lexical/0.1.8 2023-10-13 16:05:59 -04:00
Alessio Gravili
5dbfb1a335 fix(richtext-lexical): Blocks: working population for crazy amounts of nesting 2023-10-13 21:04:56 +02:00
Alessio Gravili
d411874589 chore(richtext-lexical): Blocks: clean up population 2023-10-13 20:02:18 +02:00
Jacob Fletcher
8358e2f2d2 chore: properly scopes selector in bulk update e2e test (#3640) 2023-10-13 13:51:52 -04:00
Dan Ribbens
2c67eff059 fix(db-postgres): query relationship in array alias 2023-10-13 13:32:44 -04:00
Elliot DeNolf
012b8e6f90 chore: remove pnpm from engines, shows warning when not using pnpm 2023-10-13 13:05:25 -04:00
Jacob Fletcher
fcd4c8d830 fix: document sidebar vertical overflow (#3639) 2023-10-13 13:00:02 -04:00
Elliot DeNolf
81ec435363 chore(release): richtext-lexical/0.1.7 2023-10-13 12:49:08 -04:00
Jacob Fletcher
e116fcfbf5 docs: updates references of master to main 2023-10-13 12:44:45 -04:00
Alessio Gravili
c47632dc1d fix(richtext-lexical): Blocks: Nested Blocks having incorrect initial data (e.g. missing rows property) (#3638)
* fix(richtext-lexical): Blocks: Sub-Blocks having incorrect initial data (e.g. missing rows property)

* chore: remove unnecessary comment
2023-10-13 18:39:34 +02:00
Jacob Fletcher
0dab68b336 chore: prevents group fields from overflowing into the sidebar (#3637) 2023-10-13 12:04:39 -04:00
Jacob Fletcher
483f93bfcf chore: cleans up admin e2e tests (#3636) 2023-10-13 12:04:05 -04:00
Jessica Chowdhury
4bd01df411 fix: login form clearing out and field spacing (#3633) 2023-10-13 11:15:07 -04:00
Jessica Chowdhury
c956a85252 fix: sidebar field permissions (#3629)
Co-authored-by: Jacob Fletcher <jacobsfletch@gmail.com>
2023-10-13 10:29:22 -04:00
Jacob Fletcher
beed83b231 fix: preview button conditions (#3613) 2023-10-13 10:23:26 -04:00
James Mikrut
3b1bdcbe41 chore: de-duplicates array / block data from form state (#3607)
* chore: consolidates array manipulation tests

---------

Co-authored-by: Jarrod Flesch <jarrodmflesch@gmail.com>
2023-10-13 09:45:00 -04:00
James Mikrut
d3d0971275 Merge pull request #3630 from payloadcms/fix/duplicating-drafts
fix: allows drafts to be duplicated
2023-10-13 08:50:36 -04:00
Jessica Boezwinkle
1a99d66cd0 fix: allows drafts to be duplicated 2023-10-13 11:59:23 +01:00
Elliot DeNolf
52c4a63bf1 chore(release): richtext-slate/1.0.3 2023-10-12 23:38:38 -04:00
Elliot DeNolf
3446d28602 chore(release): richtext-lexical/0.1.6 2023-10-12 23:38:29 -04:00
Elliot DeNolf
2eb18771a1 chore(release): live-preview-react/0.1.3 2023-10-12 23:38:25 -04:00
Elliot DeNolf
f6fd5d6742 chore(release): live-preview/0.1.3 2023-10-12 23:38:20 -04:00
Elliot DeNolf
76d6c88261 chore(release): db-postgres/0.1.4 2023-10-12 23:38:12 -04:00
Elliot DeNolf
10ebd76fcf chore(release): payload/2.0.5 2023-10-12 23:35:05 -04:00
Elliot DeNolf
36d6eb0a69 Merge pull request #3619 from payloadcms/import/create-payload-app
chore: import create-payload-app
2023-10-12 23:31:44 -04:00
Elliot DeNolf
cd1f8dc332 ci: remove cpa tests, degit doesn't work in actions 2023-10-12 23:20:00 -04:00
Elliot DeNolf
e4275aa228 chore(deps): update pnpm-lock.yaml 2023-10-12 20:37:06 -04:00
Elliot DeNolf
ddfcb2f12e ci: add create-payload-app 2023-10-12 20:29:05 -04:00
Elliot DeNolf
09f33eae2c chore(create-payload-app): remove all yarn refs 2023-10-12 19:09:18 -04:00
Elliot DeNolf
d3b7c9feec chore: ignore lint/format of create-payload-app 2023-10-12 19:06:25 -04:00
Elliot DeNolf
5fd3d43000 chore(create-payload-app): lint and format 2023-10-12 19:04:28 -04:00
Elliot DeNolf
7767679caa chore(create-payload-app): cleanup after import 2023-10-12 18:37:31 -04:00
Elliot DeNolf
fdf2e32005 chore: import create-payload-app 2023-10-12 18:22:27 -04:00
Elliot DeNolf
773be8744d chore: move all files into packages/create-payload-app 2023-10-12 18:20:19 -04:00
Alessio Gravili
40d5bc0c4a Merge pull request #3617 from payloadcms/fix/will-change 2023-10-13 00:05:24 +02:00
Alessio Gravili
fd33c790f2 chore(richtext-lexical): Improve animations of draggable block indicator 2023-10-13 00:03:51 +02:00
Alessio Gravili
ae7aac7639 fix(richtext-lexical): will-change css rule applied to all top-level nodes causing various issues 2023-10-12 23:50:31 +02:00
Jacob Fletcher
05cc2873b4 fix: properly renders custom buttons for globals (#3616) 2023-10-12 17:47:55 -04:00
Elliot DeNolf
171ee121e9 chore: remove workspace file 2023-10-12 17:18:12 -04:00
Elliot DeNolf
4af1d7d812 chore(deps): update dev deps 2023-10-12 17:15:47 -04:00
Dan Ribbens
d229fc391a fix(db-postgres): sorting on versions (#3611)
* fix(db-postgres): WIP sorting on versions

* fix: sorting collections with drafts

* chore: getQueryDraftsSort readability
2023-10-12 17:11:25 -04:00
Dan Ribbens
46a24a9822 fix(db-postgres): in and not_in query operator (#3608) 2023-10-12 17:11:12 -04:00
Alessio Gravili
06a51b3c9b fix: minor type issue in richText validate function 2023-10-12 22:59:03 +02:00
Alessio Gravili
1d4142ccc0 Merge pull request #3615 from payloadcms/chore/lexical-improvements 2023-10-12 22:53:34 +02:00
Alessio Gravili
f1741beba2 fix(richtext-lexical): dropdown menu closing too early on firefox 2023-10-12 22:52:41 +02:00
Alessio Gravili
9103277a10 chore(richtext-lexical): throw error if you try to use Slate or payload-plugin-lexical data inside of richtext-lexical 2023-10-12 22:07:20 +02:00
Alessio Gravili
d84673f400 chore(richtext-lexical): improve slash menu positioning when it goes off the screen 2023-10-12 21:53:47 +02:00
Alessio Gravili
15e23a3adc chore(richtext-lexical): improve anchor handling for slash menu and floating select menu 2023-10-12 21:01:47 +02:00
Elliot DeNolf
565929adcf chore(templates): better versioning in blank 2023-10-12 14:23:10 -04:00
Jacob Fletcher
8bbac60e60 fix: live preview device size (#3606) 2023-10-12 14:20:55 -04:00
Jacob Fletcher
15c7f0dbf3 docs: updates building your own live preview hook (#3604) 2023-10-12 14:20:02 -04:00
Nikola Ganchev
05eba56d7d Fix Bulgarian translation (#3582) 2023-10-12 14:18:28 -04:00
Elliot DeNolf
ab984b3ea9 fix(templates): peer dependencies for pnpm (#3603)
* fix(templates): peer dependencies for pnpm

* chore: more concise dep versions
2023-10-12 14:16:55 -04:00
Elliot DeNolf
a54638eb47 fix(templates): bump plugin-cloud version for blank 2023-10-12 14:15:51 -04:00
Alessio Gravili
69af8d9c83 chore: remove duplicate z-index property 2023-10-12 19:43:46 +02:00
Jacob Fletcher
64864686c4 fix: properly handles nested routes for live preview (#3586) 2023-10-12 12:45:39 -04:00
Jessica Chowdhury
32c0bef05e fix: updates admin e2e test for stepnav change (#3602) 2023-10-12 12:40:35 -04:00
Jacob Fletcher
a77513e94f fix(live-preview-react): prevents duplicative ready message in strict mode (#3601) 2023-10-12 12:17:59 -04:00
Jessica Chowdhury
aaf883909c fix: various stepnav related issues (#3599) 2023-10-12 12:01:16 -04:00
Alessio Gravili
cc56da11d6 fix: database adapter types 2023-10-12 17:53:35 +02:00
Jacob Fletcher
41d9c28073 feat(live-preview): exports ready function for reuse (#3600) 2023-10-12 11:42:21 -04:00
Jacob Fletcher
a071b97607 fix(live-preview): posts message to proper window (#3585) 2023-10-12 11:06:32 -04:00
Elliot DeNolf
cfd9231403 docs: update config overview 2023-10-12 10:28:04 -04:00
Elliot DeNolf
71dce62646 chore(script): list packages (#3590)
* chore(script): list-packages script

* chore(script): show commits since last tag
2023-10-12 09:40:57 -04:00
Elliot DeNolf
db376f24ba ci: add plugins build/test job 2023-10-11 22:20:17 -04:00
Elliot DeNolf
2752483ac7 Merge pull request #3588 from payloadcms/import/plugin-cloud
chore: import plugin-cloud
2023-10-11 22:13:22 -04:00
Elliot DeNolf
860f867c62 chore(plugin-cloud): use proper tsconfig.json 2023-10-11 22:04:12 -04:00
Elliot DeNolf
5b0adbe9c3 chore: git ignore lint/format of plugin-cloud 2023-10-11 21:59:31 -04:00
Elliot DeNolf
fb7d1be2f3 chore(plugin-cloud): lint and format 2023-10-11 21:57:47 -04:00
Elliot DeNolf
687a2e85d0 chore(plugin-cloud): cleanup after import 2023-10-11 21:50:22 -04:00
Elliot DeNolf
df80483afe chore: import plugin-cloud 2023-10-11 21:27:18 -04:00
Elliot DeNolf
8781770d83 chore: move all files into packages/plugin-cloud 2023-10-11 20:58:24 -04:00
Alessio Gravili
ed1d5a60f7 chore(richtext-lexical): link drawer: skip unnecessary reduceFieldsToValues call 2023-10-12 00:54:19 +02:00
Elliot DeNolf
50a0965561 0.5.2 2023-10-11 18:32:02 -04:00
Elliot DeNolf
c31fa5dd83 fix(create-payload-app): ensure only one db adapter 2023-10-11 18:31:43 -04:00
Elliot DeNolf
440eb8d9c6 2.2.5 2023-10-11 17:02:10 -04:00
Elliot DeNolf
1523b2be41 feat: add payload 2.0 to peer deps 2023-10-11 17:00:57 -04:00
Jarrod Flesch
68f55c4064 chore: temp readme updates 2023-10-11 15:53:28 -04:00
Jarrod Flesch
0d3544ea04 Merge branch 'main' of https://github.com/payloadcms/payload 2023-10-11 15:39:53 -04:00
Jarrod Flesch
f152f451dc chore: fix readme 2023-10-11 15:39:47 -04:00
Elliot DeNolf
5d92436e39 chore: sync pnpm-lock.yaml 2023-10-11 15:23:01 -04:00
Elliot DeNolf
63edecddd8 chore(release): bundler-webpack/1.0.3 2023-10-11 14:41:17 -04:00
Elliot DeNolf
65cdf6bfd0 fix(bundler-webpack): pnpm webpack aliases 2023-10-11 14:39:44 -04:00
Elliot DeNolf
9e831a6a00 chore(deps): revert drizzle-kit bump 2023-10-11 11:53:27 -04:00
Elliot DeNolf
0b64c5fb66 chore(deps): bump graphql, graphql-request, mongoose, drizzle-kit 2023-10-11 11:20:58 -04:00
James Mikrut
40426a25df Update CHANGELOG.md 2023-10-11 11:07:16 -04:00
James Mikrut
c91b1e8310 Merge pull request #3578 from payloadcms/fix/#3570
fix: postgres select fields within groups (#3570)
2023-10-11 11:00:49 -04:00
James
06e2fa9d11 fix: postgres select fields within groups (#3570) 2023-10-11 10:47:10 -04:00
Elliot DeNolf
72249d1ecd test(create-payload-app): stub out template verification 2023-10-11 10:31:59 -04:00
Elliot DeNolf
dc22496103 0.5.1 2023-10-11 10:27:49 -04:00
Nathan Clevenger
c6925ec29f Fix typo on graphql-schema.mdx (#3548) 2023-10-11 10:25:20 -04:00
Leonard Struck
8f46b31249 fix "crop" translation de (#3567) 2023-10-11 10:24:43 -04:00
Elliot DeNolf
af1c2e924e chore: rename create-project test suite 2023-10-11 10:24:27 -04:00
Elliot DeNolf
1487250752 feat(create-payload-app): more explicit versioning of deps 2023-10-11 10:23:23 -04:00
James Mikrut
e3c776523a fix: #3511, documents don't delete their versions (#3520)
Co-authored-by: Dan Ribbens <dan.ribbens@gmail.com>
2023-10-11 10:20:57 -04:00
Dan Ribbens
c09e9d96cf fix(db-postgres): update password error (#3575) 2023-10-11 10:19:00 -04:00
Dan Ribbens
aabc0650f8 fix(db-postgres): drafts cannot be saved because not null constraint (#3547) 2023-10-11 10:18:44 -04:00
Elliot DeNolf
4dd4e9aaae chore(deps): script deps 2023-10-11 10:16:06 -04:00
Elliot DeNolf
3b63b7fc3c chore: update contributing.md links 2023-10-10 22:31:25 -04:00
Alexander
f0e2e78b82 fix(i18n): "crop" translation for ru and ua (#3566) 2023-10-10 19:31:36 -04:00
Elliot DeNolf
a154adf066 chore(examples): update nodemon to respond to prompts 2023-10-10 18:37:33 -04:00
Elliot DeNolf
d86bcc1495 chore: update publish script 2023-10-10 17:48:42 -04:00
Elliot DeNolf
2b7043c6e6 chore(release): payload/2.0.4 2023-10-10 17:45:36 -04:00
Jarrod Flesch
e0afeeca97 fix: API tab breadcrumbs and results indentation (#3564) 2023-10-10 17:33:15 -04:00
Jacob Fletcher
76e306ddd8 fix: sticky sidebar (#3563) 2023-10-10 17:20:11 -04:00
Jacob Fletcher
cfc78ed4f5 fix: sidebar width when fields have long descriptions (#3562) 2023-10-10 17:04:54 -04:00
Elliot DeNolf
64b0db5a7a chore(readme): announcement link adjustment 2023-10-10 16:14:40 -04:00
Elliot DeNolf
48600f0c66 chore(release): db-mongodb/1.0.3 2023-10-10 16:09:53 -04:00
Elliot DeNolf
6d2dd5849d chore(release): db-postgres/0.1.3 2023-10-10 16:09:24 -04:00
Jacob Fletcher
6d9353b53f fix: row field margins (#3558) 2023-10-10 16:00:41 -04:00
James Mikrut
1914be75aa Merge pull request #3555 from payloadcms/fix/#3521
fix: #3521
2023-10-10 15:59:52 -04:00
Elliot DeNolf
b17f627e02 chore(release): richtext-slate/1.0.2 2023-10-10 15:59:33 -04:00
Elliot DeNolf
bef79621ee chore(release): db-postgres/0.1.2 2023-10-10 15:59:33 -04:00
Jarrod Flesch
af892ecb0e fix: removes nested array field configs from array value (#3549)
* fix: array controls 'addBelow' was adding above
2023-10-10 15:55:00 -04:00
Elliot DeNolf
a42e84bbb2 chore(eslint): prepare config for publishing 2023-10-10 15:10:22 -04:00
James Mikrut
470bdb72ff Merge pull request #3553 from payloadcms/fix/#3541
fix: #3541
2023-10-10 14:49:11 -04:00
James Mikrut
5c36be949c Merge pull request #3554 from payloadcms/fix/#3540
fix: #3540
2023-10-10 14:49:01 -04:00
James
eb97acd408 fix: #3521 2023-10-10 14:46:52 -04:00
James
2567ac58ba fix: #3540 2023-10-10 14:21:12 -04:00
Jacob Fletcher
9ff014bbfe fix: row field width (#3550) 2023-10-10 14:09:47 -04:00
James
e6f0d35985 fix: #3541 2023-10-10 14:07:26 -04:00
Alessio Gravili
b1e449e005 Merge pull request #3551 from payloadcms/fix/slate-toolbar
fix: Slate toolbar rendered even if it has no elements and leaves
2023-10-10 19:36:29 +02:00
Alessio Gravili
9ae585d23c fix: Slate toolbar rendered even if it has no elements and leaves 2023-10-10 19:22:08 +02:00
Elliot DeNolf
9de3320933 chore(release): richtext-lexical/0.1.5 2023-10-10 12:08:13 -04:00
Elliot DeNolf
5d429fa7ae chore(release): live-preview-react/0.1.2 2023-10-10 12:08:08 -04:00
Elliot DeNolf
dc8f1925f0 chore(release): live-preview/0.1.2 2023-10-10 12:07:40 -04:00
Jessica Chowdhury
15f650afde docs: adds build your own plugin page (#3184)
* docs: adds build your own plugin page

* chore(docs): adds npx command to plugin template doc

* docs: update plugin doc order values

* docs: update plugin admin compatibility to coming soon

---------

Co-authored-by: Elliot DeNolf <denolfe@gmail.com>
2023-10-10 11:37:53 -04:00
Jacob Fletcher
c945384d63 fix(live-preview-react): moves react to peer dependencies (#3545) 2023-10-10 11:36:44 -04:00
Jacob Fletcher
dfada1b238 chore(live-preview): removes react dependencies (#3544) 2023-10-10 11:07:18 -04:00
Elliot DeNolf
229bdda2c1 chore: rename publish script 2023-10-10 10:48:51 -04:00
Alessio Gravili
a1d51fb410 Merge pull request #3543 from payloadcms/fix/lexical-blocks-validation
fix(richtext-lexical): blocks: missing properties passed into validation calls
2023-10-10 16:41:39 +02:00
Alessio Gravili
46430f5598 chore: prefer config.collections over payload.collections for validations 2023-10-10 16:20:11 +02:00
Alessio Gravili
e41899cd27 fix(richtext-lexical): missing properties passed into validation functions 2023-10-10 16:06:39 +02:00
Elliot DeNolf
890af8be05 ci: optimize e2e and refactor workflow (#3530)
* ci: split e2e

* chore: 3 parts

* chore: use matrix

* chore: use playwright container, bump playwright

* chore: remove playwright container

* ci: move all packages into matrix

* ci: reusable action to restore build cache

* chore: revert custom action

* chore: cleanup logs
2023-10-09 23:43:34 -04:00
Tylan Davis
8bfae6b932 docs: removes MONGODB_URI (#3482) 2023-10-09 18:07:09 -04:00
Jacob Fletcher
ace3e577f6 fix: renders global label as page title (#3532) 2023-10-09 17:58:21 -04:00
Marcus R
9198245ad9 docs(configuration/collections): moves pagination options to admin config (#3533) 2023-10-09 17:55:34 -04:00
Jarrod Flesch
f0095937ba fix: increases document controls popup list button hitbox (#3529) 2023-10-09 16:44:57 -04:00
Jarrod Flesch
0bbd7137cd chore: properly clear cart with correct data shape (#3500) 2023-10-09 16:29:15 -04:00
Thomas Dudziak
ffed34cf27 chore(docs): corrects bundler package import paths (#3523) 2023-10-09 16:03:16 -04:00
Elliot DeNolf
040f3a34d1 chore(release): payload@2.0.3 2023-10-09 15:27:26 -04:00
Elliot DeNolf
0985825b08 fix(templates/website): account view query 2023-10-09 15:25:56 -04:00
Alessio Gravili
c18d3b5f0e Merge pull request #3522 from payloadcms/chore/lexical-heading-node-improvements
fix(richtext-lexical): respect enabledHeadingSizes for markdown transformers
2023-10-09 21:22:52 +02:00
Alessio Gravili
e9e25ceac9 fix(richtext-lexical): respect enabledHeadingSizes for markdown transformers 2023-10-09 21:21:37 +02:00
James
35aed59a1a Merge branch 'main' of github.com:payloadcms/payload 2023-10-09 14:44:27 -04:00
James
26002173b1 chore: streamlines args necessary for entityToJSONSchema 2023-10-09 14:42:29 -04:00
Elliot DeNolf
41d968771e chore(release): bundler-webpack@1.0.2 2023-10-09 14:36:39 -04:00
James
26c34541d2 chore: merge 2023-10-09 14:31:31 -04:00
James
263d40d169 chore: adds safety to type generation 2023-10-09 14:31:02 -04:00
James Mikrut
6ced11d44d Merge pull request #3519 from payloadcms/fix/#3494
fix: #3494
2023-10-09 14:25:10 -04:00
James
be049cea00 fix: #3494 2023-10-09 14:24:20 -04:00
Jacob Fletcher
491e50c236 docs(admin/components): removes duplicative link 2023-10-09 14:15:59 -04:00
Jacob Fletcher
ad253db691 chore(examples/redirect): removes build files 2023-10-09 14:13:16 -04:00
Elliot DeNolf
aff5fdff8a chore(release): richtext-lexical@0.1.4 2023-10-09 14:09:17 -04:00
Alessio Gravili
aa97bebbd4 Merge pull request #3518 from payloadcms/chore/export-more-richtext-lexical
chore(richtext-lexical): export utils
2023-10-09 20:07:42 +02:00
Alessio Gravili
a2410ea9fc chore(richtext-lexical): export utils 2023-10-09 20:07:07 +02:00
Jacob Fletcher
de20ef1e8d chore(examples/form-builder): migrates to 2.0 (#3516) 2023-10-09 14:03:39 -04:00
Jacob Fletcher
08f7497040 chore(examples/redirects): migrates to 2.0 (#3514) 2023-10-09 14:03:18 -04:00
James Mikrut
74e99ce251 Merge pull request #3517 from payloadcms/fix/#3504
fix: #3504
2023-10-09 14:03:02 -04:00
Jacob Fletcher
b5c56efb4b chore(examples/multi-tenant): migrates to 2.0 (#3512) 2023-10-09 14:02:44 -04:00
Jacob Fletcher
4ff6d63c94 chore(examples/custom-server): migrates to 2.0 (#3509) 2023-10-09 14:01:51 -04:00
James
c90d1faa7f fix: #3504 2023-10-09 14:01:12 -04:00
Jacob Fletcher
1848b120ce chore(examples/live-preview): pins payload to latest and regenerates types (#3507) 2023-10-09 14:01:08 -04:00
Jacob Fletcher
62679baa91 chore(examples/auth): migrates to 2.0 (#3506) 2023-10-09 14:00:38 -04:00
Jacob Fletcher
2de36550ae chore(examples/draft-preview): migrates to 2.0 (#3505) 2023-10-09 14:00:23 -04:00
James Mikrut
61ea5becbb Merge pull request #3515 from payloadcms/fix/#3513
fix: #3513, hasMany relationships unable to be cleared
2023-10-09 13:47:34 -04:00
James
5d9384f530 fix: #3513, hasMany relationships unable to be cleared 2023-10-09 13:46:41 -04:00
Elliot DeNolf
d75ffa0ea7 chore(release): richtext-lexical@0.1.3 2023-10-09 13:31:39 -04:00
Elliot DeNolf
26967fb924 docs: move payload script mention to top of migrations 2023-10-09 13:30:06 -04:00
Alessio Gravili
830d9867b6 chore(richtext-lexical): add build:clean script to package.json 2023-10-09 19:27:01 +02:00
Elliot DeNolf
2f86c196e1 docs: payload script in package.json 2023-10-09 13:18:01 -04:00
Alessio Gravili
86a35ed441 chore(richtext-lexical): improve handling of read-only lexical editors (#3510) 2023-10-09 18:47:09 +02:00
Jessica Boezwinkle
70e068b182 docs: updates required node version 2023-10-09 16:01:49 +01:00
Elliot DeNolf
4ac01a7fa3 chore(readme): add 2.0 announcement 2023-10-09 10:05:37 -04:00
Elliot DeNolf
8058a6d800 chore(readme): add migrating link 2023-10-09 09:26:57 -04:00
Elliot DeNolf
252b04097f chore(release): richtext-slate@1.0.1 2023-10-09 09:21:49 -04:00
Elliot DeNolf
23066aec71 chore(release): richtext-lexical@0.1.2 2023-10-09 09:21:37 -04:00
Elliot DeNolf
b9a595b00c chore(release): live-preview-react@0.1.1 2023-10-09 09:21:33 -04:00
Elliot DeNolf
ea49d74941 chore(release): live-preview@0.1.1 2023-10-09 09:21:27 -04:00
Elliot DeNolf
f5f41f929e chore(release): db-postgres@0.1.1 2023-10-09 09:21:17 -04:00
Elliot DeNolf
61151c9c5d chore(release): db-mongodb@1.0.2 2023-10-09 09:21:10 -04:00
Elliot DeNolf
c12c1a7472 chore(release): bundler-webpack@1.0.1 2023-10-09 09:21:04 -04:00
Elliot DeNolf
7afa1e999d chore(release): bundler-vite@0.1.2 2023-10-09 09:20:36 -04:00
Elliot DeNolf
71c41dbe03 chore: update main and types to dist 2023-10-09 09:16:46 -04:00
dependabot[bot]
a161dc7bb6 chore(deps): bump semver in /examples/live-preview/next-app (#3490)
Bumps [semver](https://github.com/npm/node-semver) from 6.3.0 to 6.3.1.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/v6.3.1/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v6.3.0...v6.3.1)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-09 09:14:34 -04:00
Jacob Fletcher
6c17222a6a docs: improves custom views (#3499) 2023-10-09 09:14:09 -04:00
Elliot DeNolf
63bf7d9303 chore(release): payload@2.0.2 2023-10-09 09:04:44 -04:00
James Mikrut
f878135e8b Update CHANGELOG.md 2023-10-09 09:03:49 -04:00
James
11a77ae489 Merge branch 'main' of github.com:payloadcms/payload 2023-10-09 09:02:11 -04:00
James
e5d6a75449 fix: beforeOperation hooks now correctly only run once 2023-10-09 09:02:04 -04:00
Jessica Boezwinkle
3cb0d9c2ca docs: misc cleanup 2023-10-09 14:00:11 +01:00
Jacob Fletcher
229149a5a6 chore: removes console log 2023-10-09 08:56:08 -04:00
Elliot DeNolf
9006643102 chore(templates): fix website template error 2023-10-09 08:56:08 -04:00
Jacob Fletcher
25ae4a24f2 chore: consolidates admin view types 2023-10-09 08:56:08 -04:00
Alessio Gravili
501ec4464f chore(richtext-slate): export ElementButton, LeafButton and toggleElement 2023-10-09 14:50:19 +02:00
Elliot DeNolf
961505366a chore(release): payload@2.0.1 2023-10-09 08:20:21 -04:00
Elliot DeNolf
c54fb304e7 chore(release): richtext-lexical@0.1.1 2023-10-09 08:18:28 -04:00
Alessio Gravili
7679e3f0aa fix: richtext adapter types (#3497)
* fix: richtext adapter assignment types breaks in strict mode

* fix: generic type
2023-10-09 14:07:32 +02:00
Alessio Gravili
f7c35df6de docs(richtext): remove --save flag for install command 2023-10-09 14:06:11 +02:00
Jacob Fletcher
ca97f692c3 docs: updates live preview docs 2023-10-09 00:53:42 -04:00
James Mikrut
9244a2d25d Update CHANGELOG.md 2023-10-09 00:36:38 -04:00
Dan Ribbens
24f1965f69 Merge branch 'main' of github.com:payloadcms/payload 2023-10-09 00:33:47 -04:00
Dan Ribbens
d0c352cc62 chore: remove transaction logger warnings 2023-10-09 00:33:19 -04:00
Elliot DeNolf
c56e61023d chore: update changelog 2023-10-09 00:28:15 -04:00
James
ae03501753 Merge branch 'main' of github.com:payloadcms/payload 2023-10-09 00:23:06 -04:00
James
7b94fb75bb chore: shortens collection names in relationship test suite 2023-10-09 00:22:59 -04:00
Elliot DeNolf
e842c6624a chore(templates): use payload latest 2023-10-09 00:18:40 -04:00
Jacob Fletcher
2ddf15ce9a chore(examples/live-preview): adds live preview example (#3489) 2023-10-09 00:18:31 -04:00
James
7df1256bf6 docs: fixes label for rich text overview 2023-10-09 00:16:26 -04:00
Elliot DeNolf
1ebb9f3915 0.5.0 2023-10-09 00:01:27 -04:00
Elliot DeNolf
eab04d9b4d chore: point payload at latest 2023-10-09 00:01:01 -04:00
Elliot DeNolf
c6e6f99868 chore(release): payload@2.0.0 2023-10-08 23:58:58 -04:00
Elliot DeNolf
fbbc0a3c67 chore(release): all remaining packages 2023-10-08 23:57:11 -04:00
Elliot DeNolf
ef24f430a2 chore(release): richtext-lexical@0.1.0 2023-10-08 23:57:11 -04:00
Elliot DeNolf
617ab76a22 chore(release): live-preview-react@0.1.0 2023-10-08 23:57:11 -04:00
Elliot DeNolf
9d9918e0fd chore(release): live-preview@0.1.0 2023-10-08 23:57:11 -04:00
Elliot DeNolf
e515712fcd chore(release): db-postgres@0.1.0 2023-10-08 23:57:11 -04:00
Elliot DeNolf
0ce08aab99 chore(release): bundler-vite@0.1.0 2023-10-08 23:57:11 -04:00
James
e398044442 docs: merge conflict 2023-10-08 23:56:50 -04:00
Dan Ribbens
7e5d322d6b chore(template): remove comments 2023-10-08 23:46:29 -04:00
Dan Ribbens
b04f6b2b5b Merge branch 'main' of github.com:payloadcms/payload 2023-10-08 23:45:25 -04:00
Dan Ribbens
36225d1455 chore(template): fix lint error in webpage template 2023-10-08 23:45:13 -04:00
Elliot DeNolf
c9fdcebb9e chore(templates): fix website template error 2023-10-08 23:38:20 -04:00
Elliot DeNolf
1758b6c449 chore: indentation 2023-10-08 23:37:03 -04:00
Dan Ribbens
5e6bec773f Merge branch 'main' of github.com:payloadcms/payload 2023-10-08 23:28:43 -04:00
Dan Ribbens
5ebe375743 chore (template): website template type error 2023-10-08 23:28:28 -04:00
Elliot DeNolf
bca1be8cb6 0.5.0-beta.10 2023-10-08 23:26:58 -04:00
Elliot DeNolf
1e197933dd feat: pull templates from main 2023-10-08 23:26:54 -04:00
Elliot DeNolf
25d20cf87b feat: 2.0 template updates (#3488)
* feat: update templates to 2.0 and support create-payload-app

* chore: rich text updates

* chore(templates): remove mongoURL

* chore: migrates rich text fields in website

* chore: manually aliases dotenv in templates

* chore: installs new beta in website template

* chore: type issues

* chore (template): add alias for fs to website template

* chore: more template updates

---------

Co-authored-by: James <james@trbl.design>
Co-authored-by: Dan Ribbens <dan.ribbens@gmail.com>
2023-10-08 23:23:51 -04:00
Elliot DeNolf
b32b156f9f chore: update README paths 2023-10-08 23:19:59 -04:00
Elliot DeNolf
fd38fa8209 chore: duplicate README to package dir 2023-10-08 23:15:27 -04:00
Elliot DeNolf
33bf4491a9 chore: update README 2023-10-08 23:11:43 -04:00
Elliot DeNolf
7ad9d777a2 chore(release): payload@2.0.0-beta.31 2023-10-08 22:45:11 -04:00
Alessio Gravili
92fdfbe333 chore(richtext-slate): export types 2023-10-09 04:38:14 +02:00
Alessio Gravili
27ba1fc79e docs(richtext): fix typos and other issues 2023-10-09 04:34:50 +02:00
Elliot DeNolf
bdbfc8c9af docs: remove mongoURL mentions 2023-10-08 22:26:40 -04:00
Elliot DeNolf
8c097ccaa7 chore(release): richtext-lexical@0.1.0-beta.7 2023-10-08 21:29:36 -04:00
Elliot DeNolf
4eb929d57c 0.5.0-beta.9 2023-10-08 21:20:16 -04:00
Elliot DeNolf
198209c2a4 feat: default to slate, not lexical 2023-10-08 21:20:07 -04:00
Elliot DeNolf
54f19ce1e3 0.5.0-beta.8 2023-10-08 21:08:04 -04:00
Elliot DeNolf
d32f3ade1b chore: point to branch for testing 2023-10-08 21:07:56 -04:00
Alessio Gravili
87d66dceb1 Merge pull request #3487 from payloadcms/chore/export-even-more-stuff
chore(richtext-lexical): export slash menu and floating toolbar-related stuff
2023-10-09 03:07:36 +02:00
Alessio Gravili
256fc6d178 chore(richtext-lexical): export slash menu and floating toolbar-related stuff 2023-10-09 03:06:50 +02:00
Dan Ribbens
74f8923922 fix: default rateLimit window changed from 1.5 to 15 minutes (#3486) 2023-10-08 20:37:32 -04:00
Elliot DeNolf
d9d4df22e5 chore(release): live-preview-react@1.0.0-beta.3 2023-10-08 20:13:06 -04:00
Elliot DeNolf
3161d3e552 chore(release): live-preview@1.0.0-beta.3 2023-10-08 20:13:06 -04:00
Elliot DeNolf
0acffa38eb chore(release): bundler-vite@0.1.0-beta.11 2023-10-08 20:13:05 -04:00
Elliot DeNolf
4503ce39fa chore(release): bundler-webpack@1.0.0-beta.6 2023-10-08 20:13:05 -04:00
Elliot DeNolf
0e407e05d7 chore(release): db-postgres@0.1.0-beta.20 2023-10-08 20:13:05 -04:00
Elliot DeNolf
d50049878d chore(release): db-mongodb@1.0.0-beta.9 2023-10-08 20:13:05 -04:00
Elliot DeNolf
26d56de572 chore(release): richtext-slate@1.0.0-beta.5 2023-10-08 20:13:05 -04:00
Elliot DeNolf
73f434e394 chore(release): richtext-lexical@0.1.0-beta.6 2023-10-08 20:13:05 -04:00
Elliot DeNolf
bf189abc91 0.5.0-beta.7 2023-10-08 19:55:09 -04:00
dependabot[bot]
13bc3e3681 chore(deps): bump postcss from 8.4.27 to 8.4.31 (#3484)
Bumps [postcss](https://github.com/postcss/postcss) from 8.4.27 to 8.4.31.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.4.27...8.4.31)

---
updated-dependencies:
- dependency-name: postcss
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-08 19:48:40 -04:00
Elliot DeNolf
b398c44bfe chore: update all references to main in docs, examples, and templates 2023-10-08 19:45:54 -04:00
Elliot DeNolf
aa443d9050 ci: update ci to main 2023-10-08 19:44:59 -04:00
Jacob Fletcher
f39ba60b08 docs: live preview config path 2023-10-08 19:39:50 -04:00
James
791f2051f3 Merge branch 'main' of github.com:payloadcms/payload 2023-10-08 19:38:34 -04:00
James
a37798b80d Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-10-08 19:37:47 -04:00
James
077bd7fad3 chore: rich text docs 2023-10-08 19:37:41 -04:00
Jacob Fletcher
8255088f39 docs: custom views (#3483) 2023-10-08 19:34:23 -04:00
Dan Ribbens
5a969a2c4d chore: removes unused transaction utility function 2023-10-08 19:19:38 -04:00
Dan Ribbens
7c7e841af7 chore: fix delete user preferences 2023-10-08 19:19:03 -04:00
Alessio Gravili
13332f04ab Merge pull request #3481 from payloadcms/chore/export-more-stuff
chore(richtext-lexical): export nodes
2023-10-09 01:07:59 +02:00
Alessio Gravili
c1d28a7a07 chore(richtext-lexical): export nodes 2023-10-09 01:07:16 +02:00
Elliot DeNolf
69a379e49f chore: point all adapters at latest 2023-10-08 18:39:10 -04:00
Elliot DeNolf
493fc3ed68 chore: switch from 2.0 to default branch for templates 2023-10-08 18:32:20 -04:00
Elliot DeNolf
138e495e1a feat: default to slate, not lexical 2023-10-08 18:31:04 -04:00
dependabot[bot]
4eaa76a314 chore(deps): bump postcss in /packages/bundler-webpack (#3478)
Bumps [postcss](https://github.com/postcss/postcss) from 8.4.27 to 8.4.31.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.4.27...8.4.31)

---
updated-dependencies:
- dependency-name: postcss
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-08 18:13:51 -04:00
dependabot[bot]
8f98eff0d7 chore(deps): bump graphql from 16.8.0 to 16.8.1 in /examples/testing (#3479)
Bumps [graphql](https://github.com/graphql/graphql-js) from 16.8.0 to 16.8.1.
- [Release notes](https://github.com/graphql/graphql-js/releases)
- [Commits](https://github.com/graphql/graphql-js/compare/v16.8.0...v16.8.1)

---
updated-dependencies:
- dependency-name: graphql
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-08 18:13:29 -04:00
dependabot[bot]
f8dce28904 chore(deps): bump postcss from 8.4.29 to 8.4.31 in /examples/testing (#3480)
Bumps [postcss](https://github.com/postcss/postcss) from 8.4.29 to 8.4.31.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.4.29...8.4.31)

---
updated-dependencies:
- dependency-name: postcss
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-08 18:13:17 -04:00
Elliot DeNolf
09ee95087b chore(release): richtext-slate@1.0.0-beta.4 2023-10-08 17:42:17 -04:00
Elliot DeNolf
190a1ab5a0 chore(release): richtext-lexical@0.1.0-beta.5 2023-10-08 17:39:41 -04:00
Dan Ribbens
5e8b11b5d3 Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-10-08 17:37:12 -04:00
Dan Ribbens
436250d594 Revert "chore: delete req.transactionID when committing payload operations"
This reverts commit 8e4cede62c.
2023-10-08 17:35:59 -04:00
James
09c94609b4 Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-10-08 17:23:28 -04:00
James
6d012bff68 chore: properly runs duplication of locales one after another 2023-10-08 17:23:18 -04:00
Jacob Fletcher
f0af24d066 chore: merges README 2023-10-08 16:57:52 -04:00
Jacob Fletcher
360291c407 chore: merges examples 2023-10-08 16:57:52 -04:00
Jacob Fletcher
d8f6f86228 chore: merges templates 2023-10-08 16:57:52 -04:00
James
a0645bbae5 Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-10-08 16:47:47 -04:00
James
999f2fba04 chore: live preview tests pass 2023-10-08 16:47:42 -04:00
Tylan Davis
6009b18f75 Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-10-08 16:11:33 -04:00
Tylan Davis
f968b92968 fix: removes quotes in keywords 2023-10-08 16:10:35 -04:00
Tylan Davis
b51987d4ac chore: adds point field database disclaimer 2023-10-08 16:10:10 -04:00
Tylan Davis
2639d29b91 fix: removes unused page 2023-10-08 16:09:30 -04:00
Jacob Fletcher
3668f053b3 chore!: consolidates admin routes and views configs (#3458)
BREAKING CHANGE: If your config has a `admin.components.routes` array, you will need to key them into the `admin.components.views` object. The configuration options should remain unchanged.
2023-10-08 16:08:13 -04:00
Dan Ribbens
18da607f5b Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-10-08 15:31:43 -04:00
Dan Ribbens
8e4cede62c chore: delete req.transactionID when committing payload operations 2023-10-08 15:30:33 -04:00
James
e0af6fea99 Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-10-08 14:57:14 -04:00
James
27f861d725 chore: updates bundler docs 2023-10-08 14:57:05 -04:00
Dan Ribbens
bb0c997a87 chore: cleanup database adapter interface 2023-10-08 14:55:07 -04:00
Dan Ribbens
eb58d9e877 chore: removes indexes from collection config (#3476) 2023-10-08 14:48:14 -04:00
James
c9387eba27 Merge branch '2_0/docs/bundlers' of github.com:payloadcms/payload into 2.0 2023-10-08 14:37:14 -04:00
Jarrod Flesch
1c577d1d0c chore: removes placeholder vite
link
2023-10-08 14:33:44 -04:00
Jarrod Flesch
86802dd531 chore: add bundle doc page, update env and vite 2023-10-08 14:31:40 -04:00
James
1c3d969ef1 Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-10-08 14:23:32 -04:00
James
b9aa4d96a3 chore: db docs 2023-10-08 14:23:18 -04:00
Jacob Fletcher
6c866773b2 chore: statically renders live preview toolbar (#3475) 2023-10-08 14:23:01 -04:00
Elliot DeNolf
1020b08fd1 chore: port publish script to ts 2023-10-08 13:20:43 -04:00
Elliot DeNolf
b5b451464c chore(release): db-mongodb@1.0.0-beta.8 2023-10-08 12:29:10 -04:00
Elliot DeNolf
b90796f48a chore(db-mongodb): drafts v1-v2 versions?.drafts 2023-10-08 12:28:58 -04:00
Elliot DeNolf
0e67ac9b6b chore(release): db-mongodb@1.0.0-beta.7 2023-10-08 12:12:06 -04:00
Elliot DeNolf
de79dca08f chore(release): payload@2.0.0-beta.30 2023-10-08 12:11:12 -04:00
Elliot DeNolf
74972cf4c9 chore: add predefined migration for version-v1-v2 2023-10-08 12:10:03 -04:00
Jarrod Flesch
595ba1b241 chore: simplifies webpack/server-code docs 2023-10-08 11:03:25 -04:00
PatrikKozak
022ef85d8c docs: removes generated type aliasing
Co-authored-by: Jacob Fletcher <jacobsfletch@gmail.com>
2023-10-08 10:13:03 -04:00
Elliot DeNolf
8e0c3602f9 Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-10-08 10:00:30 -04:00
Jacob Fletcher
70d41407a8 docs: live preview (#3474) 2023-10-08 09:55:06 -04:00
James
be618ba79e chore: addtl protection against invalid ids 2023-10-08 09:34:11 -04:00
Elliot DeNolf
8f2cec2535 chore(release): richtext-lexical@0.1.0-beta.4 2023-10-08 07:42:43 -04:00
Elliot DeNolf
ad896e377b chore(release): payload@2.0.0-beta.29 2023-10-07 19:22:33 -04:00
Elliot DeNolf
9574444b57 chore: better handle retrieving migrations 2023-10-07 19:22:01 -04:00
Elliot DeNolf
450a648e7e chore(release): db-postgres@0.1.0-beta.19 2023-10-07 19:17:08 -04:00
Elliot DeNolf
940174f446 chore(db-postgres): improve error parsing 2023-10-07 19:16:36 -04:00
James
3600dbb3ab Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-10-07 17:58:51 -04:00
James
a41a3c5ee7 chore: allows updateOne with where clause in postgres 2023-10-07 17:58:38 -04:00
James
6c0eef3ec2 chore: allows disabling of push 2023-10-07 17:58:17 -04:00
Elliot DeNolf
3a16eb90b6 chore(release): db-postgres@0.1.0-beta.18 2023-10-07 16:55:13 -04:00
James
2f8d5dc628 Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-10-07 16:54:19 -04:00
James
e1f092410e chore: removes unique compound indexes 2023-10-07 16:54:00 -04:00
Elliot DeNolf
654561cf30 chore: reinstall script 2023-10-07 16:46:00 -04:00
Elliot DeNolf
77bb42d672 chore(release): db-postgres@0.1.0-beta.17 2023-10-07 16:33:21 -04:00
Elliot DeNolf
cdbe61875e chore(release): payload@2.0.0-beta.28 2023-10-07 16:32:17 -04:00
James
e5d3821a9e chore(release): db-postgres@0.1.0-beta.17 2023-10-07 15:54:30 -04:00
James
f70837ab11 chore: shortens relationships table name to rels 2023-10-07 15:53:56 -04:00
James
0dbcc2725e chore: login redirection 2023-10-07 14:55:06 -04:00
Jarrod Flesch
6efedc174a chore: updates admin/webpack, admin/overview. Adds admin/server-only. 2023-10-07 14:51:26 -04:00
Jacob Fletcher
c4f2a65e49 chore: cleans up custom collection and global view routing (#3459) 2023-10-07 13:31:41 -04:00
Alessio Gravili
5d1444e1bd fix(richtext-lexical): incorrect stacking of block's fields 2023-10-07 18:35:59 +02:00
Elliot DeNolf
8fe619a221 0.5.0-beta.6 2023-10-07 12:17:44 -04:00
Elliot DeNolf
5195a80dba chore: format db choice title on connection string prompt 2023-10-07 12:17:27 -04:00
Elliot DeNolf
909cf90fa2 chore: add -d shorthand for --db 2023-10-07 12:16:56 -04:00
Alessio Gravili
03c9a91ea9 chore(richtext-lexical): CSS rule to fix focus outline issue when using vite bundler 2023-10-07 18:11:43 +02:00
Alessio Gravili
f3d2060d8d fix: minor CSS margin issue for upload field buttons 2023-10-07 18:08:24 +02:00
Elliot DeNolf
c1d1a00d4a 0.5.0-beta.5 2023-10-07 11:54:30 -04:00
Elliot DeNolf
ae68093f35 chore: update postgres replacement 2023-10-07 11:53:52 -04:00
Elliot DeNolf
0f2f355a01 chore: add beta tag to postgres selection 2023-10-07 11:49:43 -04:00
Elliot DeNolf
0101aa60d9 chore: update yarn.lock 2023-10-07 11:49:30 -04:00
Elliot DeNolf
eb069e4253 chore(release): payload@2.0.0-beta.27 2023-10-07 11:34:33 -04:00
Elliot DeNolf
27deeccd50 chore: move react-image-crop to proper package.json 2023-10-07 11:34:06 -04:00
Elliot DeNolf
59bd6abfc3 chore: stub out basic READMEs for all packages 2023-10-07 11:24:33 -04:00
Alessio Gravili
ad7c25685e chore(richtext-lexical): adjust node data formats, adjust population behavior, fix some validation issues 2023-10-07 15:52:12 +02:00
Alessio Gravili
7e9c7707ba chore: improve ID field validation, fixing 2.0 int tests (#3457)
* chore: WIP id type validation for richtext upload

* chore: fix richtext fields test ID placeholder replacements

* chore: use getIDType in relationship validation for consistency

* chore: make getIDType safer in case payload.db.defaultIDType is null

---------

Co-authored-by: Dan Ribbens <dan.ribbens@gmail.com>
2023-10-07 00:49:24 +02:00
Alessio Gravili
acfda5d8d4 chore(richtext-lexical): updated lexical incoming config API 2023-10-07 00:22:13 +02:00
Jacob Fletcher
b6de427f04 feat: supports live preview config inheritance (#3456) 2023-10-06 18:20:13 -04:00
Elliot DeNolf
88c84ad8d6 chore: move test deps to root package.json 2023-10-06 17:38:33 -04:00
Elliot DeNolf
00543f5e25 chore(release): db-postgres@0.1.0-beta.16 2023-10-06 17:18:12 -04:00
Elliot DeNolf
d2415a5af4 chore(release): db-mongodb@1.0.0-beta.6 2023-10-06 17:18:06 -04:00
Elliot DeNolf
75ae2456a8 chore(release): payload@2.0.0-beta.26 2023-10-06 17:17:07 -04:00
Elliot DeNolf
ace393ca46 chore(release): payload@2.0.0-beta.25 2023-10-06 17:16:44 -04:00
Elliot DeNolf
3fce97a6d2 chore: misc eslint 2023-10-06 17:16:13 -04:00
Elliot DeNolf
e55ec6329c chore: fix up fresh, refresh, and reset migration operations 2023-10-06 17:15:43 -04:00
Jarrod Flesch
fb07308dca feat: 2.0 upload enhancements (#3433) 2023-10-06 17:02:42 -04:00
Jacob Fletcher
5bc81031d1 chore: supports live preview url as function (#3455) 2023-10-06 16:52:47 -04:00
PatrikKozak
03538c0901 chore: renders id column as code cell (#3435)
Co-authored-by: Jacob Fletcher <jacobsfletch@gmail.com>
2023-10-06 15:58:02 -04:00
Jacob Fletcher
960fe42b93 chore: resolves ts errors in views (#3453) 2023-10-06 14:58:51 -04:00
Jacob Fletcher
64c405d0fc chore: hides dot nav when creating new 2023-10-06 14:07:51 -04:00
Jacob Fletcher
75ec46ad63 chore: adds title attribute to nav icon 2023-10-06 14:07:51 -04:00
Elliot DeNolf
345c606895 chore(release): payload@2.0.0-beta.24 2023-10-06 14:01:47 -04:00
Elliot DeNolf
06fe3f4ac8 chore(templates): move bundler under admin 2023-10-06 14:01:19 -04:00
James
6afdaefdcd chore(release): payload@2.0.0-beta.23 2023-10-06 13:35:12 -04:00
James
4d4db8065e Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-10-06 13:34:54 -04:00
Jacob Fletcher
1ce9b28dce chore: passing live preview int tests 2023-10-06 13:34:45 -04:00
Jarrod Flesch
6a74173789 chore: merges existing docs with 2.0 docs (#3450) 2023-10-06 13:33:24 -04:00
James
877576119a chore(release): payload@2.0.0-beta.22 2023-10-06 13:29:38 -04:00
James Mikrut
50dd03853a Merge pull request #3452 from payloadcms/2_0/chore/nav-icon
chore: replaces current collapse icon
2023-10-06 13:27:46 -04:00
Elliot DeNolf
163cf631e8 chore(release): bundler-vite@0.1.0-beta.10 2023-10-06 13:25:22 -04:00
Elliot DeNolf
7690fa1b55 chore(release): payload@2.0.0-beta.21 2023-10-06 13:24:25 -04:00
James
11b51bca75 Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-10-06 13:23:15 -04:00
James
85e64c9209 chore: passes payload config so it is picked up by vite hmr 2023-10-06 13:23:05 -04:00
James
4ad8a9f5bb chore: allows config to be passed to root 2023-10-06 13:19:12 -04:00
Jarrod Flesch
ba4656b966 Merge branch '2.0' into 2_0/chore/nav-icon 2023-10-06 13:17:57 -04:00
Jarrod Flesch
8df9d57a69 Merge branch '2.0' of https://github.com/payloadcms/payload into 2.0 2023-10-06 13:17:32 -04:00
Jarrod Flesch
ae436673cb chore: corrects merge data import path 2023-10-06 13:17:27 -04:00
Jacob Fletcher
7c1b3b9de3 chore: uses proper depth 2023-10-06 13:16:56 -04:00
Jarrod Flesch
83d6b3f652 chore: css tweaks 2023-10-06 13:04:35 -04:00
Elliot DeNolf
ae49403c45 chore(release): payload@2.0.0-beta.20 2023-10-06 12:43:01 -04:00
Elliot DeNolf
c8b843c819 chore: fix migrate args 2023-10-06 12:42:50 -04:00
Jarrod Flesch
48db3027c9 chore: x icon on mobile 2023-10-06 12:33:34 -04:00
Jacob Fletcher
5f4c38ce21 chore: builds live preview app (#3451) 2023-10-06 12:32:13 -04:00
Jarrod Flesch
4a91be1d62 chore: adjusts mobile line styles 2023-10-06 12:23:52 -04:00
Jarrod Flesch
ca5dbb5cd4 chore: adjusts collapse icon for collection navigation 2023-10-06 12:21:10 -04:00
Jessica Boezwinkle
a8ff06a134 docs: updates onInit options 2023-10-06 17:16:38 +01:00
Jessica Boezwinkle
01891bb8bc docs: updates config examples, oninit props, mongoDB references and adds warning to point field 2023-10-06 17:16:38 +01:00
Elliot DeNolf
0d2fe860e5 chore(release): db-postgres@0.1.0-beta.15 2023-10-06 11:58:58 -04:00
Elliot DeNolf
542dcb3226 chore(release): payload@2.0.0-beta.19 2023-10-06 11:58:26 -04:00
Elliot DeNolf
4e973c9389 chore: adjust logging on start and in connect warning prompts 2023-10-06 11:57:00 -04:00
Dan Ribbens
2b831a67b4 chore: changes postgres interface client arg to pool and adds poolOptions 2023-10-06 11:56:23 -04:00
Elliot DeNolf
a423c7fd60 chore(release): richtext-lexical@0.1.0-beta.3 2023-10-06 11:01:03 -04:00
Elliot DeNolf
c3b2b19dbe chore(release): payload@2.0.0-beta.17 2023-10-06 10:59:45 -04:00
Alessio Gravili
272f62f032 Merge pull request #3449 from payloadcms/feat/2.0-lexical-block-validations
BREAKING: config (SanitizedConfig) is now a new, mandatory property to be passed into .validate(, options) functions. In order to accommodate that, other functions which may call validate now also have a new, mandatory config property. These are:
* buildStateFromSchema
* addFieldStatePromise


feat: breaking: richtext-lexical: block node validations
2023-10-06 16:56:59 +02:00
Jarrod Flesch
d063c93394 chore: style adjustments for api tab (#3447) 2023-10-06 10:39:15 -04:00
James
d73596a670 Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-10-06 10:20:51 -04:00
James
78d6643950 chore: docs stubbing 2023-10-06 10:20:44 -04:00
Elliot DeNolf
c823ee07cd 0.5.0-beta.4 2023-10-06 10:02:04 -04:00
Elliot DeNolf
1f12f9b480 chore: force beta packages for now 2023-10-06 10:02:04 -04:00
Elliot DeNolf
ec31ab3a2c 0.5.0-beta.3 2023-10-06 10:02:04 -04:00
Elliot DeNolf
a7bea35d69 chore: rename editors 2023-10-06 10:02:04 -04:00
Elliot DeNolf
64a4f19539 0.5.0-beta.2 2023-10-06 10:02:04 -04:00
Elliot DeNolf
c35661e16e feat: add editor import and replacement 2023-10-06 10:02:04 -04:00
Elliot DeNolf
69b6179521 0.5.0-beta.1 2023-10-06 10:02:04 -04:00
Elliot DeNolf
3d2e167e78 chore: proper postgres adapter import replacement 2023-10-06 10:02:04 -04:00
Elliot DeNolf
aa1955221c 0.5.0-beta.0 2023-10-06 10:02:04 -04:00
Elliot DeNolf
7a9b11e2c4 feat: bump template branch to 2.0 2023-10-06 10:02:04 -04:00
Elliot DeNolf
a82c0d0e50 chore: check DATABASE_URI key 2023-10-06 10:02:04 -04:00
Elliot DeNolf
35a6daa10d test: reorganize tests 2023-10-06 10:02:04 -04:00
Elliot DeNolf
bf5db4e44a chore(templates): update branch on starter urls temporarily 2023-10-06 10:02:04 -04:00
Elliot DeNolf
a87e8aa82b chore: replace DATABASE_URI env value 2023-10-06 10:02:04 -04:00
Elliot DeNolf
e00d87a791 test: add debug for cli 2023-10-06 10:02:04 -04:00
Elliot DeNolf
b61babca73 test: dependency and config replacement tests 2023-10-06 10:02:04 -04:00
Elliot DeNolf
e403a0492e feat: update templates with bundler and db adapter 2023-10-06 10:02:04 -04:00
Elliot DeNolf
54a76e1401 feat: implement db selection 2023-10-06 10:02:04 -04:00
Alessio Gravili
cffb5663aa fix: custom fields of Upload and Link features not being sanitized (both Slate and Lexical) 2023-10-06 15:47:31 +02:00
Elliot DeNolf
91f6e36420 2.2.2 2023-10-06 09:44:48 -04:00
Elliot DeNolf
02c165b71f chore(release): payload@2.0.0-beta.16 2023-10-06 09:28:52 -04:00
Elliot DeNolf
783072ef7c chore(release): live-preview-react@1.0.0-beta.2 2023-10-06 09:28:39 -04:00
Elliot DeNolf
72fe24b69e chore(release): live-preview@1.0.0-beta.2 2023-10-06 09:28:31 -04:00
Elliot DeNolf
81ed355bbc chore(release): richtext-slate@1.0.0-beta.3 2023-10-06 09:28:08 -04:00
Elliot DeNolf
08a114e0e0 chore(release): richtext-lexical@0.1.0-beta.2 2023-10-06 09:27:57 -04:00
Elliot DeNolf
c49bb14414 chore(release): db-mongodb@1.0.0-beta.5 2023-10-06 09:27:42 -04:00
Elliot DeNolf
2411cfbe13 chore(release): db-postgres@0.1.0-beta.14 2023-10-06 09:27:32 -04:00
Elliot DeNolf
c1439ae7da chore(release): bundler-webpack@1.0.0-beta.5 2023-10-06 09:27:20 -04:00
Elliot DeNolf
36e7e1d946 chore(release): bundler-vite@0.1.0-beta.9 2023-10-06 09:26:45 -04:00
Alessio Gravili
63bae989bb chore: upgrade turborepo 2023-10-06 14:39:09 +02:00
Alessio Gravili
528150c3f7 Merge remote-tracking branch 'origin/2.0' into feat/2.0-lexical-block-validations 2023-10-06 14:31:52 +02:00
Alessio Gravili
fa91d45ae6 chore: richtext-lexical: save block node's collapsed state in preferences instead of node data 2023-10-06 14:30:40 +02:00
Alessio Gravili
b545f62574 chore: richtext-lexical: various styling and validation improvements 2023-10-06 12:39:22 +02:00
Alessio Gravili
b6a778196d feat: richtext-lexical: blocks: nicely show errors in Block component 2023-10-06 12:10:20 +02:00
Alessio Gravili
9acc1e4c99 feat: block node validations 2023-10-06 11:30:18 +02:00
Dan Ribbens
dfd5151c4f chore: fix testSuiteDir arg 2023-10-06 03:38:39 -04:00
Dan Ribbens
605ba73c30 chore: fix build in bin migrate ts error 2023-10-06 03:33:34 -04:00
Elliot DeNolf
c4e4a5a3f7 ci: add live-preview-react build 2023-10-05 17:30:50 -04:00
Elliot DeNolf
82d9dd8a28 chore(release): live-preview-react@1.0.0-beta.1 2023-10-05 17:28:06 -04:00
Elliot DeNolf
8a2045e3e4 chore(db-postgres): remove schema col from migration table creation 2023-10-05 16:54:56 -04:00
Elliot DeNolf
cddde3e488 chore: migrate help flag 2023-10-05 16:50:53 -04:00
Elliot DeNolf
986ceea246 chore: nodemon stdin:false, -I flag 2023-10-05 16:49:58 -04:00
Elliot DeNolf
d638408399 chore(release): db-postgres@0.1.0-beta.13 2023-10-05 16:00:59 -04:00
Elliot DeNolf
a46a80bd52 chore(db-postgres): create migration prompts when no schema changes detected 2023-10-05 16:00:59 -04:00
James
c2a99c8edc Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-10-05 16:00:21 -04:00
James
2fe7818f29 chore: semantics 2023-10-05 16:00:12 -04:00
James
0bb11ecf8b chore: ensures live preview hook always returns data 2023-10-05 15:57:26 -04:00
Elliot DeNolf
eafeea4dd8 chore(db-postgres): return early on migrate if no migration files 2023-10-05 15:45:28 -04:00
Elliot DeNolf
bbd410bcbe chore(release): live-preview@1.0.0-beta.1 2023-10-05 15:21:43 -04:00
Elliot DeNolf
d2fa65cb4f ci: add live-preview build 2023-10-05 15:21:15 -04:00
Jacob Fletcher
18472d0178 chore: properly sizes tab field when sidebar exists 2023-10-05 15:15:02 -04:00
Jarrod Flesch
7ee41b6a65 chore: default menu to open if pref not set (#3445) 2023-10-05 15:00:27 -04:00
Elliot DeNolf
0a895eee80 chore(release): db-postgres@0.1.0-beta.12 2023-10-05 14:51:18 -04:00
Elliot DeNolf
74d6ef0c31 chore(db-postgres): set updated_at on dev push migration 2023-10-05 14:50:57 -04:00
Jacob Fletcher
f77c41978b chore: resolves path to live preview module 2023-10-05 14:33:02 -04:00
Elliot DeNolf
9e74fe558f 2.2.2-beta.0 2023-10-05 14:23:22 -04:00
James
ac8bcfac23 chore: proper dev webpack config 2023-10-05 14:17:57 -04:00
Jarrod Flesch
3538c2132d fix: doc title not rendering in breadcrumbs (#3444) 2023-10-05 14:12:48 -04:00
Jacob Fletcher
fd9d98da9f chore: removes empty space in header left by non-localized configs 2023-10-05 14:09:31 -04:00
Dan Ribbens
1c22459107 Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-10-05 14:08:35 -04:00
Dan Ribbens
2d084e19d3 chore: windows safe pattern match for swc ignore 2023-10-05 14:06:59 -04:00
Elliot DeNolf
80f2d417f2 chore: delete dev pushes from migrations on migrate:reset 2023-10-05 14:02:31 -04:00
Elliot DeNolf
cfb77e2f27 chore(db-postgres): show warning if dev pushes exist on migrate 2023-10-05 14:02:10 -04:00
Jarrod Flesch
deb5be5a9b chore(examples/testing): builds testing example (#3443) 2023-10-05 13:55:36 -04:00
Jarrod Flesch
9880880384 feat!: store array values as actual array value (#3442) 2023-10-05 13:16:30 -04:00
Jarrod Flesch
618ee991dc fix: secures the user response from the me auth route (#3424) 2023-10-05 12:54:53 -04:00
Jessica Chowdhury
374fb99571 fix: corrects greater than or equal filter key (#3307) 2023-10-05 12:32:13 -04:00
Jarrod Flesch
183414e6e8 feat: adds API for view on collection and globals (#3432) 2023-10-05 12:30:30 -04:00
James
91b0a691ed chore: moves admin plugin into src 2023-10-05 12:19:09 -04:00
James
3ced6ec2a0 chore: merge 2023-10-05 12:17:23 -04:00
James
650fe159ee chore: renames mock to admin.js 2023-10-05 12:16:54 -04:00
Jacob Fletcher
b7d983f30a feat: builds live preview sdk (#3441) 2023-10-05 12:13:19 -04:00
James
b92657fb39 chore: simplifies alias 2023-10-05 12:12:31 -04:00
Elliot DeNolf
617ca9f85f chore(release): db-postgres@0.1.0-beta.11 2023-10-05 12:03:55 -04:00
Elliot DeNolf
47206f9e6a chore(db-postgres): safely get migration snapshots 2023-10-05 12:03:32 -04:00
Elliot DeNolf
131157ba29 chore(db-postgres): write json snapshot to migrations dir 2023-10-05 11:38:26 -04:00
Elliot DeNolf
db28547a51 chore(db-postgres): push to migrations table on connect for dev 2023-10-05 11:37:25 -04:00
James
f0689d403d Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-10-05 11:00:10 -04:00
James
c46ffbd7ae chore: corrects config reference from bin / build 2023-10-05 10:59:58 -04:00
Dan Ribbens
f935a54107 Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-10-05 10:58:51 -04:00
Dan Ribbens
bfa16e418f chore: write migration schema json 2023-10-05 10:53:07 -04:00
Elliot DeNolf
6dbe80be2e chore(release): payload@2.0.0-beta.13 2023-10-05 10:46:44 -04:00
Elliot DeNolf
302185e473 chore(release): bundler-vite@0.1.0-beta.8 2023-10-05 10:46:12 -04:00
PatrikKozak
7d8ac3e6f2 Merge branch '2.0' of https://github.com/payloadcms/payload into 2.0 2023-10-05 10:37:14 -04:00
PatrikKozak
001b87a8c6 chore: adds emptyOutDir option to build in vite config 2023-10-05 10:37:06 -04:00
James
cd49a7a940 Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-10-05 10:35:09 -04:00
James
9da6506622 chore: initializes payload before build 2023-10-05 10:34:56 -04:00
Jacob Fletcher
0ac36069bd chore: handles live preview data (#3440) 2023-10-05 10:14:57 -04:00
Jacob Fletcher
f989e02a85 chore: builds fieldSchemaToJSON utility 2023-10-05 10:02:43 -04:00
Alessio Gravili
15e6401d4e chore: gitignore pointer files 2023-10-05 15:43:58 +02:00
Alessio Gravili
3d61445cd0 chore: delete pointerfiles 2023-10-05 15:43:42 +02:00
Alessio Gravili
20a99ff2c7 chore(richtext-lexical): slash menu x Blocks feature improvements 2023-10-05 15:37:22 +02:00
Alessio Gravili
27ef3a01f8 feat(richtext-lexical): list all blocks in Slash menu 2023-10-05 14:31:40 +02:00
Alessio Gravili
0bc4276d87 Merge pull request #3439 from payloadcms/feat/2.0-lexical-improvements-2
feat: lexical improvements
2023-10-05 11:00:30 +02:00
Alessio Gravili
ab34f08169 feat(richtext-lexical): populate fields in blocks field 2023-10-05 10:59:38 +02:00
Alessio Gravili
0c57c89d83 chore(richtext-lexical): improve internal link label 2023-10-04 22:55:25 +02:00
Elliot DeNolf
12bf78f41b chore(script): pack_to_dest script 2023-10-04 16:48:18 -04:00
Jacob Fletcher
10bd20904a chore: removes pseudo element from mobile doc tabs 2023-10-04 16:47:36 -04:00
Alessio Gravili
c3abaf5f1d feat(richtext-lexical): remove button for block 2023-10-04 22:44:00 +02:00
Elliot DeNolf
9ecef40ee7 chore(release): bundler-vite@0.1.0-beta.7 2023-10-04 16:32:14 -04:00
Alessio Gravili
76c2fad94f chore(richtext-lexical): fields test default value 2023-10-04 22:31:23 +02:00
PatrikKozak
aff983f5a2 Merge branch '2.0' of https://github.com/payloadcms/payload into 2.0 2023-10-04 16:28:37 -04:00
PatrikKozak
bf2cd5aac4 chore: sets process.env to empty object in vite bundler config 2023-10-04 16:28:22 -04:00
Elliot DeNolf
9baf7e9a70 chore(release): payload@2.0.0-beta.12 2023-10-04 16:10:56 -04:00
PatrikKozak
e64928f03a chore: vite progress 2023-10-04 15:46:58 -04:00
Dan Ribbens
33c3a7a50a Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-10-04 15:38:40 -04:00
Dan Ribbens
1cce3ebce9 chore: fix mongodb transactions 2023-10-04 15:37:53 -04:00
Alessio Gravili
1e71776f22 Merge pull request #3436 from payloadcms/feat/2.0-lexical-improvements
feat: various lexical improvements
2023-10-04 21:32:52 +02:00
Alessio Gravili
6a5ddd32ab chore(richtext-lexical): various style improvements 2023-10-04 21:28:41 +02:00
Alessio Gravili
4e8d4797e1 chore(richtext-lexical): improve slash menu positioning and styling 2023-10-04 21:01:59 +02:00
Elliot DeNolf
3ce9c9ef03 ci: create beta release script 2023-10-04 14:49:57 -04:00
Elliot DeNolf
d1cbe4aa4e chore(release): payload@2.0.0-beta.11 2023-10-04 14:48:22 -04:00
Elliot DeNolf
84702d8e31 chore(release): bundler-vite@0.1.0-beta.6 2023-10-04 14:48:04 -04:00
Elliot DeNolf
9d1bda070f chore(release): db-mongodb@1.0.0-beta.4 2023-10-04 14:46:20 -04:00
Elliot DeNolf
b6b1a8e65d chore(release): db-postgres@0.1.0-beta.10 2023-10-04 14:44:16 -04:00
Elliot DeNolf
ffc16f08b9 chore: update pointer files 2023-10-04 14:43:04 -04:00
Elliot DeNolf
4e97621619 chore: proper declare module for drizzle 2023-10-04 14:24:12 -04:00
James
3d0b125e0a chore: type fixes 2023-10-04 14:23:57 -04:00
James
029d031974 Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-10-04 14:21:59 -04:00
James
812d1806f5 chore: revisions to local dev suite 2023-10-04 14:21:51 -04:00
Jacob Fletcher
fc364b2d02 chore: redirects after create first user 2023-10-04 14:20:08 -04:00
Dan Ribbens
a6880207cd chore(db-postgres): schema building implements collection indexes (#3429) 2023-10-04 14:14:47 -04:00
James
98b6108eab chore: better alias pattern for db adapters 2023-10-04 14:13:40 -04:00
Elliot DeNolf
aa3a997d4d chore(release): payload v2.0.0-beta.8 2023-10-04 13:38:26 -04:00
Dan Ribbens
5c5b661412 Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-10-04 13:33:54 -04:00
Dan Ribbens
823681cc42 chore: remove replicaset warning for mongodb transactions 2023-10-04 13:33:18 -04:00
Elliot DeNolf
6226368841 chore: adjust eslint npm script 2023-10-04 13:28:09 -04:00
Elliot DeNolf
1107a1d7d1 chore: rename editors 2023-10-04 13:27:19 -04:00
Dan Ribbens
394c2bc23a chore(db-postgres): add name to all unique constraints 2023-10-04 11:48:45 -04:00
Dan Ribbens
825f9521bb chore: fix relationship preferences unique constraint prompt on pushSchema 2023-10-04 11:36:44 -04:00
Elliot DeNolf
c161f019af chore: disable prettier on json for now 2023-10-04 11:27:42 -04:00
Elliot DeNolf
f80dc6a668 chore(release): payload v2.0.0-beta.7 2023-10-04 11:11:46 -04:00
Elliot DeNolf
df69441a6a chore: update pnpm-lock.yaml 2023-10-04 11:09:50 -04:00
Elliot DeNolf
25672f5975 chore: find and load .env file in bin script 2023-10-04 11:09:41 -04:00
Alessio Gravili
99a5e78a66 chore(richtext-lexical): sanitize block fields 2023-10-04 17:02:45 +02:00
Elliot DeNolf
d48f0c1567 chore(release): bundler-vite 0.1.0-beta.4 2023-10-04 10:11:05 -04:00
Elliot DeNolf
bb385280cc chore(bundler-vite): copy entry.tsx, files key in package.json 2023-10-04 10:10:54 -04:00
Elliot DeNolf
cb3029583c chore(release): payload v2.0.0-beta.6 2023-10-04 10:10:17 -04:00
PatrikKozak
d5ab5e2afe chore: updates define in vite bundler config 2023-10-04 09:52:40 -04:00
PatrikKozak
46774b80f0 Merge branch '2.0' of https://github.com/payloadcms/payload into 2.0 2023-10-04 09:45:57 -04:00
PatrikKozak
299c29019f chore: adds disableDBConnect option to on init 2023-10-04 09:45:17 -04:00
Alessio Gravili
3092fd0843 chore: export sanitizeFields 2023-10-04 15:31:13 +02:00
Alessio Gravili
715ae79727 chore(richtext-lexical): Blocks feature improvements 2023-10-04 14:18:55 +02:00
Jacob Fletcher
2e0c0d0224 chore: renders LeaveWithoutSaving as modal (#3428) 2023-10-03 17:04:24 -04:00
Elliot DeNolf
5f28bcc25a chore(release): bundler-vite 0.1.0-beta.2 2023-10-03 16:55:23 -04:00
Elliot DeNolf
81a1ad288d chore(bundler-vite): add copyfiles, adjust joi validation 2023-10-03 16:37:58 -04:00
Jacob Fletcher
cbc1f3b3f1 chore: improves edit view types (#3427) 2023-10-03 15:41:15 -04:00
Jacob Fletcher
fdbb61fc43 chore: dynamic device sizing (#3426) 2023-10-03 13:47:41 -04:00
Elliot DeNolf
f5d7ff2eee chore(release): bundler-vite 0.1.0-beta.1 2023-10-03 13:02:37 -04:00
PatrikKozak
3c63f5148b feat: adds vite property to payload admin config options (#3425) 2023-10-03 12:56:58 -04:00
Elliot DeNolf
2ad94e48f7 chore: add stdin: true to all nodemon.json files 2023-10-03 12:42:22 -04:00
Elliot DeNolf
cf26155995 chore: sync logger for prompts, adjust nodemon 2023-10-03 12:34:48 -04:00
Elliot DeNolf
7349c82e28 chore: add json files to lint-staged 2023-10-02 22:16:57 -04:00
Elliot DeNolf
f94e20942b ci: add clean pipeline to turbo 2023-10-02 22:16:32 -04:00
Elliot DeNolf
fdcdabd3ed chore(release): all beta packages 2023-10-02 21:47:32 -04:00
Elliot DeNolf
8ba1274e2f chore: update clean script for all packages 2023-10-02 21:03:41 -04:00
Jacob Fletcher
baf2b6de30 chore: passing admin e2e tests 2023-10-02 17:57:10 -04:00
Alessio Gravili
426efcaa08 chore: unbreak vscode config launch command 2023-10-02 23:32:15 +02:00
Elliot DeNolf
4f405bbee6 chore: remove console.log 2023-10-02 17:19:53 -04:00
Elliot DeNolf
0c977511f6 chore(script): list latest package versions from registry 2023-10-02 17:19:40 -04:00
Elliot DeNolf
7abb2450ef chore: better typing 2023-10-02 17:05:26 -04:00
Elliot DeNolf
85bcf150a7 chore: more drizzle renames 2023-10-02 16:28:24 -04:00
Elliot DeNolf
05116dd667 chore: rename db.db to db.drizzle 2023-10-02 16:22:57 -04:00
James
8e0b57ea59 Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-10-02 16:19:29 -04:00
James
1286ed4706 chore: types mongodb adapter 2023-10-02 16:19:18 -04:00
Jacob Fletcher
51b2ce9fe9 chore: lints live preview 2023-10-02 15:21:50 -04:00
Jacob Fletcher
0c6bea7388 chore: nests doc tab li in tab conditions 2023-10-02 15:15:43 -04:00
Jacob Fletcher
29aa6e1449 chore: renders collapse label in sidebar 2023-10-02 15:15:43 -04:00
Jacob Fletcher
2938ce0d09 chore: renders icon graphic in step nav 2023-10-02 15:15:43 -04:00
Elliot DeNolf
a52ebf5596 chore: add commit to .git-blame-ignore-revs 2023-10-02 15:04:21 -04:00
Elliot DeNolf
dfac7395fe chore: prettier fix 2023-10-02 15:03:09 -04:00
Elliot DeNolf
5b3fd4f6ab ci: add husky and lint-staged 2023-10-02 14:36:23 -04:00
Jacob Fletcher
5ea06c9ad0 chore: removes json-formatter-js dependency 2023-10-02 13:29:58 -04:00
Jacob Fletcher
e7aac41672 chore: fixes EditViewProps type 2023-10-02 13:29:28 -04:00
James
c1861eecc8 Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-10-02 12:19:31 -04:00
James
63177b5d55 chore: comments out js thign 2023-10-02 12:00:41 -04:00
Elliot DeNolf
5464966d1a chore: migration dir to src, use process.cwd() 2023-10-02 11:59:01 -04:00
Jacob Fletcher
a53cbd146f feat: live preview (#3382) 2023-10-02 11:40:08 -04:00
Jacob Fletcher
ec0f5a77b7 feat: api view (#3420)
Co-authored-by: Jarrod Flesch <jarrodmflesch@gmail.com>
2023-10-02 11:38:14 -04:00
Elliot DeNolf
316702c253 chore: fix migrateDown args 2023-10-02 11:16:56 -04:00
Elliot DeNolf
029da71a83 chore: remove payload starting log 2023-10-02 11:09:40 -04:00
James
e5a95755da chore: returns generic to BasePayload to fix typing 2023-10-02 11:07:01 -04:00
James
eb988f1f19 Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-10-02 10:46:37 -04:00
Alessio Gravili
45f23367c8 fix: 2.0 hotkey's pressed keys are not unset when window is not focused (#3401)
* fix: hotkey's pressed keys are not unset when window is not focused

* chore: re-order string list

* chore: add back removed comment
2023-10-02 16:46:12 +02:00
James
30e9ba67ed Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-10-02 10:46:02 -04:00
Dan Ribbens
6d014cf748 Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-10-02 10:45:36 -04:00
James
2e480d4c99 Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-10-02 10:45:28 -04:00
Dan Ribbens
42ceafb942 chore: update all payload generated types imports to use payload redeclared types 2023-10-02 10:45:21 -04:00
James
fa4821adef chore: add declare pattern to generated types 2023-10-02 10:45:19 -04:00
Elliot DeNolf
5d6b82a2b4 chore: use console.log in connect until we can adjust our logger 2023-10-02 10:32:30 -04:00
James
e913d5c400 Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-10-02 10:23:05 -04:00
James
9a6d650a13 chore: progress to type overrides 2023-10-02 10:22:59 -04:00
Elliot DeNolf
6aaa22b2b4 chore: fix outdated lockfile 2023-10-02 09:09:23 -04:00
Alessio Gravili
0de816591b chore(richtext-lexical): add additional exports 2023-10-02 12:42:36 +02:00
Alessio Gravili
fd9ca519d7 chore(richtext-lexical): export more functions 2023-10-02 11:26:29 +02:00
Elliot DeNolf
dbdd317af7 chore: add clean and prepublishOnly scripts to all packages 2023-10-01 22:14:39 -04:00
Elliot DeNolf
71b372211f chore: export migration args from top-level adapter export 2023-10-01 22:07:53 -04:00
James
ddc6cb927b chore: exports database adapter from base payload 2023-10-01 21:49:30 -04:00
Elliot DeNolf
85c81c3efe chore: adjust DatabaseAdapter export/import for declare module 2023-10-01 21:43:12 -04:00
James
bb9b4c9fa0 chore: misc fixes 2023-10-01 20:40:30 -04:00
James
237fa50255 Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-10-01 18:55:12 -04:00
James
556620a94e chore: enables bundle analyzer in webpack 2023-10-01 18:55:01 -04:00
James
8f837f99ae chore: vite in production 2023-10-01 18:42:47 -04:00
Elliot DeNolf
32e30ca678 feat(bundler-webpack): adjust aliasing 2023-10-01 17:10:52 -04:00
Elliot DeNolf
6e07aee59a feat(richtext-slate): add copyfiles command 2023-10-01 16:23:27 -04:00
James
44b10cc9b4 chore: webpack published package bugs 2023-10-01 16:20:18 -04:00
James
2649ceaac6 Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-10-01 15:47:20 -04:00
James
ee22a488c0 chore: able to select bundler in dev 2023-10-01 15:47:16 -04:00
Elliot DeNolf
40f4014920 feat(templates): add editor import and config lines 2023-10-01 15:40:59 -04:00
Elliot DeNolf
317104bb9f ci: add richtext-lexical build job 2023-10-01 15:19:34 -04:00
Alessio Gravili
eed2b699c8 chore: fix lexical package not building 2023-10-01 21:19:22 +02:00
Alessio Gravili
48591aa24c fix: error when trying to access id property in null value 2023-10-01 21:14:11 +02:00
James
f8d456d762 Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-10-01 15:07:31 -04:00
James
e6a0ed5e1c chore: vite dev script 2023-10-01 15:07:21 -04:00
Alessio Gravili
9308c792e1 feat: Lexical richtext editor (#3359)
* chore: move slate stuff into packages/richtext-slate

* chore: fieldTypes stuff

* chore: fix richtext-slate tsconfig

* chore: add clean:unix command

* chore: fix up things

* chore: undo subpath imports being hoisted up

* chore: fix incorrect imports

* chore: improve AdapterArguments type

* chore: remove unused richTextToHTML and stringifyRichText files

* fix: core-dev scss imports

* chore: fix publishConfig exports for richtext-slate

* chore: adjust joi schema for richtext field

* chore: various fixes

* chore: handle afterRead population in richText adapter

* chore: handle more after-read promise stuff

* chore: fix joi validation

* chore: add richtext adapter to tests

* chore: merge adapter props with field props

* chore: index.tsx => index.ts

* chore: rename `adapter` to `editor`

* chore: fix e2e tests not running due to importing a constant from a file (`Tabs`) which imports createSlate.

This fails because createSlate imports React components.

* chore: remove unnecessary import

* chore: improve various typings

* chore: improve typings for List view Cell components

* feat: richText adapter cell component

* chore: add missing types packages for packages/richtext-slate

* chore: add new adapter interface properties to joi schema

* chore: withMergedProps utility which replaces getSlateCellComponent and getSlateFieldComponent

* feat: added config.defaultEditor property which is now required. field.editor is no longer required and overrides config.defaultEditor

* docs: mention editor and defaultEditor property in the docs

* chore: fix incorrectly formatted JSX in docs files breaking mdx parser

* feat: create base structure for lexical adapter

* chore: upgrade dependencies

* chore: improve package.json property order

* chore: undo unnecessary changes in core

* chore: initial, working lexical editor

* chore: utils

* chore: add license.md

* chore: work on Floating toolbar

* chore: floatingSelectToolbar extensibility

* chore: FloatingSelectToolbar format buttons

* chore: add functionality to format buttons

* chore: caret handling improvements

* chore: keep toolbar hidden during mousedown

* chore: keep carat centered unless at edge of container

* chore: placeholder, style improvements

* chore: DraggableBlock Handle

* chore: limit cell preview length

* chore: fix drag handle styling in light mode

* chore: remove unnecessary listener

* feat: add block handle

* chore: handle removal of handles properly

* chore: add HistoryPlugin

* chore: improve naming of format button properties

* chore: fix incorrect position of HistoryPlugin

* chore: serif font

* chore: improve opacity handling of FloatingSelectToolbar

* feat: slash menu

* feat: slash menu interface

* chore: fix mixed-up icon

* chore: add missing editorConfig?.feature dependency

* feat: sanitizedEditorConfig, slash menu grouping

* feat: interface for nodes

* feat: Plugin interface

* feat: working AddBlockHandlePlugin

* feat: headings

* chore: improve editor focus handling for add block handle's slash menu

* chore: improve handling of slash menu filtering

* fix: cloneDeep function not handling all data types well

* feat: markdown transformers for headings

* feat: proper dependency system

* feat: add remaining markdown transformers

* feat: order system for floating toolbar format buttons

* chore: customizable floating select toolbar sections system

* feat: WIP floatingSelectToolbar dropdown sections

* feat: working dropdown & misc improvements

* chore: fix dropdown top positioning after scrolling down

* chore: downgrade @types/react

* feat: treeview debug feature, & misc improvements

* feat: add TabIndentationPlugin by default

* fix: wrong key for treeviewfeature

* chore: handle plugin keys

* chore: simplify Heading Feature

* feat: Text Align

* feat: Indent

* chore: floating text toolbar section dividers

* feat: isEnabled for floating select toolbar, and isEnabled handling for decreaseIndent

* chore: add all missing icons

* feat: checklist, orderedlist, unorderedlist

* chore: improve lists by using lexical/react's ListPlugin

* chore: lists markdown transformers

* chore: improve key generation for plugins

* fix: add missing payload scss import

* fix: make default editorConfig null instead of defaultSanitizedEditorConfig for EditorConfigProvider. This fixes a bug where the editor would crash if some feature was using this EditorConfigProvider, as EditorConfigProvider needs the feature (due to the serialization process) and the Feature needing EditorConfigProvider (circular dependency)

* chore: allow positioning plugins under floatingAnchorElem

* feat: WIP: Link Feature

* chore: add box shadow to slash menu in light mode

* chore: CheckList => Check List

* chore: respect admin.readOnly setting

* chore: Simplify Link Feature

* chore: restructuring

* chore: prettier

* chore: scss-ify

* feat: wip: nicer draggable blocks

* chore: lots of block drag improvements

* helllll yea

* chore: just pure niceness

* fix: drag handle not working when scrolling down

* fix: "add" drag handle not working when scrolling down

* chore: remove unnecessary console log

* chore: fix slash menu positioning if there is not enough space below

* chore: increase animation speed of floating select toolbar

* chore: expect transforms for top-level editor nodes

* chore: move css rule to correct position

* chore: slightly animate target drag line

* chore: do not indicate drag-ability in un-dragable positions

* chore: explanatory comment

* chore: link editor styling

* chore: lots of link-related improvements

* chore: a lot of floating toolbar improvements

* chore: adjust link colors to be the same as in the website

* chore: prep work link extensibility

* chore: work on link plugin

* feat: fully-working link feature 🎉

* chore: add upload icon

* chore: merge in useful changes from playground & misc stuff

* feat: WIP relationship feature

* feat: Relationship Feature

* feat: BlockQuote Feature

* chore: base structure for Upload feature

* chore: fix types

* chore: WIP work on population and upload nodes

* chore: stuff

* fix: ensure uuid is only generated once

* chore: remove console.log's

* feat: link and relationship population

* fix: populate relationships at correct position

* chore: bunch of progress on upload node

* chore: working upload node!

* chore: various upload feature improvements

* chore: misc

* feat: working upload feature fields customization

* feat: WIP Blocks feature

* chore: fix incorrectly registered editor commands

* chore: get Block fields to render

* feat: functional blocks feature

* chore: improve functionality of blocks feature component (styling, collapsing)

* chore: disable console logs
2023-10-01 21:03:44 +02:00
Elliot DeNolf
8f14cd2c59 chore(release): db-mongodb 1.0.0-beta.0 2023-10-01 14:15:06 -04:00
Elliot DeNolf
4ac9f339e6 chore(db-mongodb): add files key to package.json 2023-10-01 14:13:31 -04:00
Elliot DeNolf
fd146fb9ac chore(release): bundler-webpack 1.0.0-beta.0 2023-10-01 14:08:07 -04:00
Elliot DeNolf
4debc50c36 chore(bunder-webpack): add files key to package.json 2023-10-01 14:06:20 -04:00
James
a73246f85b Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-10-01 13:50:38 -04:00
James
7bccd40a95 chore: building packages 2023-10-01 13:50:28 -04:00
Elliot DeNolf
b990e98b89 chore: add missing type dep 2023-10-01 13:38:53 -04:00
Alessio Gravili
5767e5d61c chore: fix build errors 2023-09-29 23:31:30 +02:00
Jacob Fletcher
34e2dc8a79 chore: overflows step nav (#3415) 2023-09-29 17:11:27 -04:00
Jacob Fletcher
244db8d621 chore: refines doc controls (#3411) 2023-09-29 14:14:48 -04:00
Jacob Fletcher
9d9d20efd9 chore: overhauls main nav (#3410) 2023-09-29 13:10:37 -04:00
Elliot DeNolf
96844a5185 ci: add builds for bundlers and plugins 2023-09-29 12:26:50 -04:00
Elliot DeNolf
973b4edba9 chore(release): core 2.0.0-beta.0 2023-09-29 11:55:38 -04:00
Elliot DeNolf
4ae40f4a12 chore(release): db-postgres 0.1.0-beta 2023-09-29 11:49:44 -04:00
Elliot DeNolf
07f713f8e9 chore: update latest components output 2023-09-29 10:51:03 -04:00
Elliot DeNolf
1ca5c70ed6 chore: better migration failure message 2023-09-29 10:44:38 -04:00
Jarrod Flesch
6fa5866f99 feat: 2.0 popover style updates (#3404) 2023-09-29 09:05:02 -04:00
Elliot DeNolf
f723b0e0e9 docs: add disableOnInit 2023-09-28 16:03:40 -04:00
Elliot DeNolf
33aac93c6e chore: use copy of options for modification 2023-09-28 15:23:50 -04:00
Elliot DeNolf
719dd1f2ba chore: adjust when to run init, and use proper payload param in dev script 2023-09-28 15:02:59 -04:00
Elliot DeNolf
b8c36ea8c5 chore: reorder migrate status table columns 2023-09-28 13:45:17 -04:00
Elliot DeNolf
706f2b469f feat: add disableOnInit option 2023-09-28 13:44:50 -04:00
Dan Ribbens
806dc9c098 chore: postgres cleanup 2023-09-28 13:18:24 -04:00
Dan Ribbens
be09b9bbe6 chore: querying with not_equals works with nulls every test past! 2023-09-28 11:52:52 -04:00
Dan Ribbens
0c943be3be chore: optional chain req.transactionID 2023-09-28 11:46:00 -04:00
James
796469f7cc chore: defaultValues within group 2023-09-28 10:47:54 -04:00
James
8ea63421f0 chore: locale=all relationships 2023-09-28 09:41:00 -04:00
James
5d0bd25267 chore: streamlined fallback locale in local operations 2023-09-28 09:15:43 -04:00
James
5be49e1484 chore: threads through req so transactions are able to function accordingly 2023-09-27 16:52:20 -04:00
James
a73625edb9 Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-09-27 16:32:20 -04:00
James
20da1c4a13 chore: bug with reading globals 2023-09-27 16:32:03 -04:00
Elliot DeNolf
506f82127b chore: add dotenv to root package.json 2023-09-27 16:29:40 -04:00
Elliot DeNolf
6ed6c5b5b0 chore: allow dev override to PAYLOAD_DROP_DATABASE 2023-09-27 16:29:40 -04:00
Elliot DeNolf
43daa8640a chore: handle unnamed migrations 2023-09-27 16:29:40 -04:00
Elliot DeNolf
97352f7ceb chore: adjust migration file naming 2023-09-27 16:29:40 -04:00
James
09883ee78c chore: passing field tests 2023-09-27 16:25:23 -04:00
Jacob Fletcher
aa94c00bc6 chore: misc css (#3391) 2023-09-27 13:18:29 -04:00
Jacob Fletcher
d61eef23d1 chore: fixes admin view types (#3398) 2023-09-27 10:56:15 -04:00
James
6e81fa68e8 Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-09-26 17:11:59 -04:00
James
8e8ba82c6d chore: revises a few tests 2023-09-26 17:11:46 -04:00
Elliot DeNolf
74605e471d chore: add migrate down to template 2023-09-26 16:52:16 -04:00
James
4593d37815 chore: merge 2023-09-26 16:19:42 -04:00
James
6f5561e14f chore: builds postgres json querying 2023-09-26 16:17:13 -04:00
Dan Ribbens
db38499d41 Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-09-26 15:44:22 -04:00
Dan Ribbens
a5f162e883 chore: fix verifyEmail missing update properties 2023-09-26 15:44:04 -04:00
Elliot DeNolf
65e080671d chore: use utilities dir 2023-09-26 15:33:24 -04:00
Elliot DeNolf
c5c15c4463 chore: reorg postgres adapter props 2023-09-26 15:33:23 -04:00
Elliot DeNolf
5572c69741 chore: migration table existence handling 2023-09-26 15:32:21 -04:00
Jacob Fletcher
eac4605c99 chore: wraps global view with edit depth provider 2023-09-26 13:00:52 -04:00
Dan Ribbens
a48d000b54 chore: sanitize dates queries postgres 2023-09-26 12:14:57 -04:00
Dan Ribbens
88030616d7 chore: fixes forgotPassword resetPassword for postgres 2023-09-26 12:14:39 -04:00
Dan Ribbens
826c8671c6 chore: windows exportPointerFiles fix 2023-09-26 12:07:09 -04:00
Dan Ribbens
81d294b065 chore: add missing transaction support to auth operations 2023-09-26 10:02:40 -04:00
Dan Ribbens
b214d7b7d3 chore: merges 2023-09-26 09:34:11 -04:00
Elliot DeNolf
9c0aadd046 chore: migration dir and migration template updates 2023-09-25 23:27:58 -04:00
Elliot DeNolf
a9f1dc02ca chore: rework pg migration creation 2023-09-25 23:27:58 -04:00
Elliot DeNolf
07dd353432 chore: postgres builds without jsonquery 2023-09-25 23:27:58 -04:00
Dan Ribbens
6a6094c1a7 chore: adds postgres destroy 2023-09-25 11:40:30 -04:00
Dan Ribbens
beb7647bc7 chore: mongodb destroy connections outside of tests 2023-09-25 11:39:22 -04:00
Jacob Fletcher
af3baee927 chore: adds creatingNewLabel translation 2023-09-25 10:54:37 -04:00
Jacob Fletcher
7f7d914b4e chore: conditionally renders global sidebar fields 2023-09-25 10:54:07 -04:00
Jacob Fletcher
43064f4900 chore: renders autosave and status 2023-09-25 00:39:02 -04:00
James
6fd3a896a1 chore: fixes syntax error 2023-09-24 18:02:07 -07:00
James
8e6e576cd0 chore: refactors transactions 2023-09-24 18:01:01 -07:00
Elliot DeNolf
ba4cd2b599 chore: await db calls, disable no-floating-promises as necessary 2023-09-24 16:44:31 -07:00
James
ad24a17bd5 chore: merge 2023-09-24 16:31:58 -07:00
James
4df19cbdf6 chore: converts anything that awaits many promises to sequential execution 2023-09-24 16:31:23 -07:00
Elliot DeNolf
67103a7059 chore: fix postgres adapter types 2023-09-24 15:52:46 -07:00
Dan Ribbens
4ba5d723f5 chore: fix call to db query 2023-09-24 18:02:30 -04:00
James
8155902476 chore: poc for how to type db adapters 2023-09-24 14:22:06 -07:00
Dan Ribbens
bf745d19ed Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-09-24 15:53:22 -04:00
Dan Ribbens
ef51e0855f chore: wip transactions re-enabled 2023-09-24 15:53:02 -04:00
James
e437b41950 chore: misc bugs, types pattern 2023-09-24 10:51:21 -07:00
James
220e7a590d chore: bugs with hasMany select localized 2023-09-23 12:29:40 -07:00
James
bb7feddbff chore: improves semantics of transform write 2023-09-23 12:18:04 -07:00
James
74fcf2fc1f chore: bugs with array 2023-09-23 10:59:34 -07:00
James
a458375934 chore: passing versions tests 2023-09-23 10:07:29 -07:00
Dan Ribbens
e5ef842839 chore: split out updateVersion function 2023-09-23 12:22:23 -04:00
Dan Ribbens
0fbb8d1a32 Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-09-23 12:18:23 -04:00
Dan Ribbens
1c2e74f0c9 chore: split out updateVersion function 2023-09-23 12:18:10 -04:00
James
e6e8ab6630 chore: adds updateGlobalVersion to mongo adapter 2023-09-23 09:02:59 -07:00
Dan Ribbens
d3bfb76783 merges 2023-09-23 11:38:39 -04:00
James
64e7c395ce chore: ensures globals can be found and updated 2023-09-23 08:35:23 -07:00
James
d886af32d9 chore: allows querying on relationTo 2023-09-23 08:26:40 -07:00
James
ee0bddf85b chore: progress to versions 2023-09-23 07:50:28 -07:00
Jacob Fletcher
7ea4fcde2c feat: custom document tabs (#3387) 2023-09-22 17:42:23 -04:00
James
0f6f26e4d1 chore: updates old versions when new is created 2023-09-22 17:41:26 -04:00
James
82d2d2350f chore: uploads test suite passes 2023-09-22 16:51:29 -04:00
Elliot DeNolf
1377f56f26 chore: handle nulls vs undefined 2023-09-22 16:44:51 -04:00
Elliot DeNolf
a112b98597 chore: handle querying for existing upload 2023-09-22 16:42:53 -04:00
James
95e428223f Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-09-22 16:34:53 -04:00
James
5abd9e3372 chore: self joins are now aliased correctly in relationship queries 2023-09-22 16:34:25 -04:00
Dan Ribbens
0c0a11debb chore: postgres versions update to latest false 2023-09-22 15:43:35 -04:00
Elliot DeNolf
528fb47b0b chore: fix dev:generate-types 2023-09-22 15:13:57 -04:00
Elliot DeNolf
0d68216c4b chore: fix hooks test, array inside group 2023-09-22 14:54:02 -04:00
Dan Ribbens
6ee15c3571 Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-09-22 14:51:12 -04:00
Dan Ribbens
575bd9436a chore: build query fixes 2023-09-22 14:31:23 -04:00
James
f3415bb13e chore: ensures relationships can be cleared 2023-09-22 14:11:18 -04:00
Alessio Gravili
8b715a8127 chore: revert setting default db to postgres 2023-09-22 02:05:57 +02:00
Dan Ribbens
ad82b99dc6 chore: save updatedAt with new values 2023-09-21 16:51:40 -04:00
Dan Ribbens
6aaaeaff98 chore: add postgres updateVersion 2023-09-21 16:07:40 -04:00
James
edf9dd7983 chore: misc cleanup 2023-09-21 13:52:01 -04:00
Dan Ribbens
9eca30f281 chore: add postgres findglobalversions 2023-09-21 12:57:04 -04:00
Dan Ribbens
67b347aaa3 chore: postgres disable unique constraints for version tables 2023-09-21 12:19:19 -04:00
Dan Ribbens
c02dc385cb chore: use db transactions in upsertRows 2023-09-21 12:18:10 -04:00
Dan Ribbens
44a2b1a98f Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-09-21 11:29:18 -04:00
Dan Ribbens
c0dfeb4918 chore: postgres operations use db from session for transactions 2023-09-21 11:29:09 -04:00
Elliot DeNolf
17132b72ad ci: configure int tests with postgres (#3364)
* chore: configure postgres

* chore: adjust action and connection

* chore: export postgres url as env
2023-09-21 09:34:43 -04:00
James
1191a2851c chore: wires up a few versions methods 2023-09-20 14:37:14 -04:00
Dan Ribbens
caa56e6ef6 chore: postgres abstract find 2023-09-20 13:25:04 -04:00
Dan Ribbens
62421da6ad chore: fix missing transaction id bug 2023-09-20 06:58:40 -04:00
Dan Ribbens
cec16abea0 chore: postgres enforce notNullable on required fields 2023-09-20 06:57:15 -04:00
Elliot DeNolf
25be3a3c6f ci: cache build and run tests per db adapter (#3362)
* ci: cache entire build to share with future jobs

* chore: pnpm setup for tests job

* chore: use build cache in db adapter builds

* chore: troubleshoot db builds

* chore: add back db-mongodb

* chore: add back db-postgres, cleanup

* chore: separate type gen into separate job

* chore: run tests separately for each db adapter

* chore: use matrix for tests w/ db

* chore: explicit ip and port for postgres
2023-09-19 22:31:33 -04:00
James
4dd98396a7 chore: adds date field 2023-09-19 19:23:17 -04:00
James
0c101cd713 chore: revises field names being lost while creating indexes 2023-09-19 19:00:35 -04:00
James
2a282c7257 chore: builds select field 2023-09-19 17:39:35 -04:00
James
bbcdf32a90 chore: builds hasMany selects 2023-09-19 17:15:10 -04:00
Elliot DeNolf
db4aa1e8b6 ci: move int tests before e2e 2023-09-19 17:04:31 -04:00
Elliot DeNolf
7159bf2ff3 test: remove unused test/postgres dir 2023-09-19 17:04:31 -04:00
Dan Ribbens
07aaacaa55 chore: postgres radio field type 2023-09-19 17:01:07 -04:00
Dan Ribbens
274d062d6d Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-09-19 16:37:53 -04:00
Dan Ribbens
53572bf933 chore: postgres checkbox type 2023-09-19 16:29:21 -04:00
Elliot DeNolf
7b6fd62895 feat(templates): update templates for 2.0 (#3358)
* chore: add reinstall script

* feat(templates): update blank template

* chore(templates): update website and ecommerce
2023-09-19 16:17:37 -04:00
James
32fb5e66f8 chore: builds select enum pattern 2023-09-19 15:52:40 -04:00
James
92275f909f chore: restores community test suite 2023-09-19 15:27:04 -04:00
James
3cfc51ecf4 chore: hasMany numbers 2023-09-19 15:26:08 -04:00
James
1ed8dad92d chore: test resolution 2023-09-19 14:13:33 -04:00
James
81df72b5c2 chore: merge 2023-09-19 13:27:24 -04:00
James
7b38bd1e52 chore: nested unnamed fields, like query constraint 2023-09-19 13:27:05 -04:00
Alessio Gravili
b1ec1f5f3f chore: undo setting e2e tests to postgres by default 2023-09-19 17:38:04 +02:00
Jarrod Flesch
1b3419cd12 chore: resolved console errors from checkbox inputs (#3356) 2023-09-19 11:16:53 -04:00
James
c3a357f893 chore: merge 2023-09-19 11:04:58 -04:00
Jacob Fletcher
5f0207d617 chore: comments out live preview tab 2023-09-19 11:01:47 -04:00
James
5bc8b29e79 chore: merge 2023-09-19 10:53:44 -04:00
James
7fdf77cf3e chore: bugs with sort, graphql tests with postgres 2023-09-19 10:50:04 -04:00
Jacob Fletcher
463a39e822 chore: improves document tab logic 2023-09-19 10:13:42 -04:00
Alessio Gravili
6338471287 chore: sort package.json keys of richtext-slate package 2023-09-19 12:02:42 +02:00
Alessio Gravili
c356b96913 chore: package.json improvements: order, duplicate scripts and packages 2023-09-19 11:51:56 +02:00
Alessio Gravili
fbe5f36b29 chore: add commit to .git-blame-ignore-revs 2023-09-19 11:43:25 +02:00
Alessio Gravili
cdaa0acd61 chore: run eslint & prettier, adjust perfectionist sorting for package.json and tsconfig.json in eslint configs 2023-09-19 11:41:56 +02:00
Alessio Gravili
4f68b722dc chore: fix imports in db-postgres adapter 2023-09-19 11:15:47 +02:00
Alessio Gravili
a81401cf77 feat: breaking: richtext adapter (#3311)
BREAKING: requires user to install @payloacms-richtext-slate and specify a `config.editor` property

* chore: move slate stuff into packages/richtext-slate

* chore: fieldTypes stuff

* chore: fix richtext-slate tsconfig

* chore: add clean:unix command

* chore: fix up things

* chore: undo subpath imports being hoisted up

* chore: fix incorrect imports

* chore: improve AdapterArguments type

* chore: remove unused richTextToHTML and stringifyRichText files

* fix: core-dev scss imports

* chore: fix publishConfig exports for richtext-slate

* chore: adjust joi schema for richtext field

* chore: various fixes

* chore: handle afterRead population in richText adapter

* chore: handle more after-read promise stuff

* chore: fix joi validation

* chore: add richtext adapter to tests

* chore: merge adapter props with field props

* chore: index.tsx => index.ts

* chore: rename `adapter` to `editor`

* chore: fix e2e tests not running due to importing a constant from a file (`Tabs`) which imports createSlate.

This fails because createSlate imports React components.

* chore: remove unnecessary import

* chore: improve various typings

* chore: improve typings for List view Cell components

* feat: richText adapter cell component

* chore: add missing types packages for packages/richtext-slate

* chore: add new adapter interface properties to joi schema

* chore: withMergedProps utility which replaces getSlateCellComponent and getSlateFieldComponent

* feat: added config.defaultEditor property which is now required. field.editor is no longer required and overrides config.defaultEditor

* docs: mention editor and defaultEditor property in the docs

* chore: fix incorrectly formatted JSX in docs files breaking mdx parser

* chore: fix various errors

* chore: auto-generated pointer files
2023-09-19 11:03:31 +02:00
Alessio Gravili
835efdf400 chore: fix issues with tests 2023-09-19 10:46:32 +02:00
Elliot DeNolf
7725c1fdc9 chore: webpack bundler aliasing 2023-09-18 17:17:37 -04:00
Elliot DeNolf
1efab0b6a3 chore: make bundlers use named exports (#3352) 2023-09-18 15:38:05 -04:00
Elliot DeNolf
53a80be6a0 Merge pull request #3351 from payloadcms/chore/2.0-prettier-templates
chore: prettier templates
2023-09-18 14:51:52 -04:00
Elliot DeNolf
05eabc7a9d chore: add template prettier commit to .git-blame-ignore-revs 2023-09-18 14:47:07 -04:00
Dan Ribbens
43451a629a Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-09-18 14:45:08 -04:00
Dan Ribbens
8ab24a4513 chore: postgres chain selectCount query methods 2023-09-18 14:44:35 -04:00
Elliot DeNolf
75a428ddc4 chore: prettier on all templates 2023-09-18 14:43:51 -04:00
Dan Ribbens
b271936b64 chore: fix postgres updateOne 2023-09-18 14:38:59 -04:00
Dan Ribbens
c7744c5bf0 test: conditional geojson 2023-09-18 14:37:51 -04:00
Jacob Fletcher
320e4a47cd chore: responsifies document header 2023-09-18 14:25:28 -04:00
Jacob Fletcher
66859f4073 chore: responsifies document controls 2023-09-18 14:25:28 -04:00
Dan Ribbens
321e59705d chore: split paths for graphql 2023-09-18 13:53:07 -04:00
James
029e319c7b chore: wires up contains in pg, skips point tests 2023-09-18 13:00:00 -04:00
James
2442144c98 chore: fixes id types for graphql in database adapters 2023-09-18 11:42:59 -04:00
Dan Ribbens
a8418bffa2 Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-09-18 11:11:57 -04:00
Dan Ribbens
025d647bf7 chore: wip postgres collections-graphql 2023-09-18 11:10:32 -04:00
Jacob Fletcher
718f51d8d8 chore: fixes hmr 2023-09-18 11:10:12 -04:00
James
3c92c55ca9 Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-09-18 10:42:36 -04:00
James
128fe0119e chore: fixes e2e tests 2023-09-18 10:42:30 -04:00
Jacob Fletcher
9bd8f14ba8 chore: refines gutter and spacing 2023-09-18 10:22:25 -04:00
Dan Ribbens
998eb99003 chore: postgres query block fields (#3347) 2023-09-17 23:19:19 -04:00
James
6abe7f2569 chore: vite builds 2023-09-16 11:24:14 -04:00
James
9efd7c9ed2 chore: few fixes in build 2023-09-16 11:13:42 -04:00
James
d46e1837a1 Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-09-16 11:02:48 -04:00
James
16a4de2df7 chore: merge bundlers 2023-09-16 11:02:42 -04:00
James
649cf57ea8 chore: reverts test suite back to webpack for now 2023-09-16 11:01:29 -04:00
James
5aa67cf98d chore: functioning vite 2023-09-16 10:59:58 -04:00
Jacob Fletcher
4df942529a chore: improves collection and global view routing (#3341) 2023-09-16 01:46:56 -04:00
Jacob Fletcher
dbaa1f7319 chore: abstracts filterFields from RenderFields (#3340) 2023-09-15 17:39:00 -04:00
Jacob Fletcher
85c8e4dc65 chore: overhauls admin navigation (#3339) 2023-09-15 17:33:28 -04:00
James
055c65f229 chore: passing mongodb tests 2023-09-15 17:26:50 -04:00
James
270ee3687b chore: merge 2023-09-15 17:12:32 -04:00
James
5292f41a3b chore: rectifies test issues 2023-09-15 17:12:13 -04:00
Dan Ribbens
5a56e18e7d Merge branch '2.0' of github.com:payloadcms/payload into 2.0 2023-09-15 17:11:22 -04:00
Elliot DeNolf
26955bb331 chore: fix up tests for globals, hooks, localization 2023-09-15 17:08:15 -04:00
Dan Ribbens
b8f831fd05 test: fix imports 2023-09-15 17:01:43 -04:00
Jacob Fletcher
81010311f9 chore: builds main menu modal (#3313) 2023-09-15 16:40:08 -04:00
Jacob Fletcher
4b514d4c94 chore: establishes pattern for custom collection and global views (#3312) 2023-09-15 16:38:23 -04:00
James
92b4490257 chore: merge 2023-09-15 16:32:40 -04:00
James
2a9946f788 chore: resolves some of the testing suite issues 2023-09-15 16:29:16 -04:00
Elliot DeNolf
dd0514bd2c ci: multiple jobs (#3337)
* ci: move playwright install to test:e2e script

* test: adjust test db names to avoid conflicts

* ci: clean up core job

* ci: add db-mongodb build job

* chore: add jest setup db adapter logging

* chore: install on mongodb job

* chore: adjust root deps

* chore: use turbo for db-mongodb to ensure build order

* chore: use turbo from .bin

* chore: add build script for db-postgres

* ci: add db-postgres build job

* chore: upgrade actions/checkout and actions/setup-node

* chore: rename github workflow file to main
2023-09-15 16:17:41 -04:00
James
a28b266716 chore: removes unused files 2023-09-15 14:00:00 -04:00
Dan Ribbens
09a455bb7b chore: remove temp test env var 2023-09-15 13:52:19 -04:00
Dan Ribbens
2c61ae8452 chore: merge db-adapters 2023-09-15 13:03:13 -04:00
James
0347d6a211 chore: successfully builds webpack bundler 2023-09-15 12:38:02 -04:00
James
b21b4719fc chore: ports webpack bundler over to monorepo package 2023-09-15 12:26:29 -04:00
Alessio Gravili
1fa636417f chore: disable prettier for docs, as prettier is not compatible with mdx version 2. See https://github.com/prettier/prettier/issues/12209 2023-09-15 14:42:50 +02:00
Elliot DeNolf
577f54fcf3 chore: adjust object sorting groups 2023-09-14 16:33:13 -04:00
Elliot DeNolf
abab0abca8 chore: sort all package.json files in a sane way 2023-09-14 16:32:37 -04:00
Dan Ribbens
8df2c888fe feat: postgres transactions 2023-09-14 15:39:58 -04:00
Dan Ribbens
a838274ae7 chore: merge 2023-09-14 14:52:16 -04:00
Dan Ribbens
16d314ff49 chore: fix imports postgres 2023-09-14 14:46:27 -04:00
Elliot DeNolf
79f9ef2481 chore: migration improvements (#3335)
* chore: better migrationDir handling

* chore: add .migrations to gitignore

* chore: migration cli debugging

* docs: stub out each migration command
2023-09-14 14:23:17 -04:00
Dan Ribbens
9575ec5319 merges postgres transactions 2023-09-14 13:13:59 -04:00
Elliot DeNolf
11c8804886 chore: add build script back to db-postgres/package.json 2023-09-14 12:27:38 -04:00
Elliot DeNolf
488c6651d9 chore: restore db-postgres from feat/db-adapters 2023-09-14 12:24:30 -04:00
Elliot DeNolf
744de9c706 chore: merge from 2.0 2023-09-14 12:10:36 -04:00
Dan Ribbens
1f1082c068 query exists false 2023-09-13 14:43:01 -04:00
Dan Ribbens
33e50f7d6b test: improve expects 2023-09-13 13:04:06 -04:00
Dan Ribbens
bb16ce965c query relationship by id 2023-09-13 13:02:22 -04:00
Dan Ribbens
8d98dea1b8 querying localized fields with all 2023-09-13 10:23:18 -04:00
Dan Ribbens
7cdda26e5d querying on poly relationTo ids 2023-09-12 16:26:06 -04:00
Dan Ribbens
cc1966020a querying localized has many relationship field 2023-09-12 13:43:31 -04:00
Jarrod Flesch
48398db28c chore: removes hmr prod plugin (#3320) 2023-09-12 13:12:50 -04:00
Dan Ribbens
33c15afa79 querying localized relationship field 2023-09-12 12:29:00 -04:00
Jarrod Flesch
2b7d776b26 fix(2.0): ensures relationTo as array fields load returned data from form correctly (#3318) 2023-09-12 11:53:21 -04:00
James
61098f96a8 chore: builds pattern to return constraints array 2023-09-12 10:14:09 -04:00
Dan Ribbens
8e16d825ff wip refactor joins for relationships 2023-09-12 09:54:53 -04:00
Elliot DeNolf
9f4fdc5bc4 chore: missing jest config 2023-09-12 08:20:18 -04:00
Elliot DeNolf
2ff41f7a50 chore: more tests commands to top level 2023-09-11 17:22:08 -04:00
Alessio Gravili
aad2389a20 chore: add back missing 'utf-8' flag for exportPointerFiles script 2023-09-11 23:18:49 +02:00
Alessio Gravili
58589021cc chore: add support for .scss pointer files 2023-09-11 23:17:26 +02:00
Elliot DeNolf
56a02975d1 chore: fix dev type gen 2023-09-11 16:57:33 -04:00
Elliot DeNolf
41347bef5f chore: fix components tests 2023-09-11 16:49:35 -04:00
Alessio Gravili
73fe11baf3 chore: improve handling of subpath exports for published package (#3310)
* chore: exportPointerFiles script

* chore: handle creation of subfolders which may not exist

* chore: add json to copyfiles

* chore: do not use exports property for publishConfig

* chore: add clean:unix command

* chore: modify clean:unix command to also delete any tsconfig.tsbuildinfo files

* chore: remove exports properties from db adapter packages
2023-09-11 22:20:12 +02:00
Dan Ribbens
af6b7592a1 postgres short circuit empty find results 2023-09-09 17:26:38 -04:00
Jarrod Flesch
1fc9ca1709 chore: corrects hasMany relationships within addFieldStatePromise (#3301) 2023-09-09 00:31:52 -04:00
Dan Ribbens
754efe00f6 optimize find to query docs and count concurrently, normalize pagination args 2023-09-08 11:21:22 -04:00
Alessio Gravili
df33323bc8 chore: add missing root packages for test suite to work 2023-09-07 23:06:04 +02:00
Alessio Gravili
e2df74bbff chore: fix e2e tests by not importing from ./config 2023-09-07 22:53:28 +02:00
Alessio Gravili
4aad563f58 chore: cleanup 2.0 tsconfigs, fix building types for db adapters (#3293)
* chore: cleanup tsconfigs and fix db-mongodb builds

* chore: make the db adapters depend on payload

* chore: fix tsconfig for test directory

* chore: fix packages/db-mongodb not building
2023-09-07 22:36:17 +02:00
Dan Ribbens
1f7b52497c postgres sanitize query value 2023-09-07 14:45:07 -04:00
Dan Ribbens
595173327e postgres operations buildQuery updates 2023-09-07 11:49:21 -04:00
Jarrod Flesch
abd983f421 chore: mirror changes from PR #3276 (#3284) 2023-09-07 11:06:57 -04:00
Jarrod Flesch
1092ae6f98 chore: mirror changes from PR #3279 (#3285) 2023-09-07 11:06:35 -04:00
Alessio Gravili
d52e265117 chore: add last lint & format commit to .git-blame-ignore-revs 2023-09-07 15:54:48 +02:00
Alessio Gravili
1fbda85cd0 chore: lint and format everything again 2023-09-07 15:53:48 +02:00
Alessio Gravili
9e4474be60 chore: fix eslint and prettier configs for test directory 2023-09-07 15:48:48 +02:00
Alessio Gravili
a51b5970dc chore: re-run prettier 2023-09-07 15:45:48 +02:00
Alessio Gravili
fd2290d6f7 chore: update lint-specific packages 2023-09-07 15:36:02 +02:00
Alessio Gravili
4e9b2b4b5e chore: add .git-blame-ignore-revs file 2023-09-07 15:26:34 +02:00
Alessio Gravili
bf673096e3 chore: add .vscode/settings.json 2023-09-07 15:23:16 +02:00
Dan Ribbens
2e086d95d9 chore: working simple where 2023-09-06 16:25:52 -04:00
Dan Ribbens
d07394d197 sorting on group nested field 2023-09-06 15:05:04 -04:00
Elliot DeNolf
17dbe066c1 0.4.2 2023-09-06 12:54:59 -04:00
Elliot DeNolf
5acc88ee9a fix: disregard yarn.lock file when using templates 2023-09-06 12:53:35 -04:00
Elliot DeNolf
8093eb46b3 chore: remove db-mongodb/tsconfig.tsbuildinfo 2023-09-06 11:30:22 -04:00
Elliot DeNolf
dbfcaded16 chore: update gitignore, ignore tsbuildinfo 2023-09-06 10:37:39 -04:00
Alessio Gravili
4c5673be23 chore: improve package.json script commands 2023-09-06 01:01:57 +02:00
Dan Ribbens
d33cff94e0 getTableColumnFromPath tabs 2023-09-05 17:27:43 -04:00
Dan Ribbens
5b620e77f4 wip getTableColumnFromPath 2023-09-05 16:36:32 -04:00
James
59fe015239 chore: chops up buildQuery 2023-09-05 13:57:08 -04:00
Dan Ribbens
73e2a03b6d wip changes to build query 2023-09-05 12:30:06 -04:00
Alessio Gravili
eea371b336 chore: hoist up testing-related packages 2023-09-01 21:57:59 +02:00
Alessio Gravili
bd7bd8faec chore: fix MongooseAdapter import 2023-09-01 21:52:40 +02:00
Alessio Gravili
16c1ac8d9a Merge pull request #3264 from payloadcms/fix/2.0-tests
chore: fix 2.0 tests and use swc for building
2023-09-01 21:44:53 +02:00
Alessio Gravili
f97da2a9b4 chore: fix scss import 2023-09-01 21:43:45 +02:00
Alessio Gravili
b93d2d89c7 chore: use swc instead of tsc to build 2023-09-01 21:41:12 +02:00
James
0f3b364e46 chore: hoists tests out of payload package 2023-09-01 14:45:41 -04:00
Alessio Gravili
893ca87225 fix: database alias 2023-09-01 18:31:55 +02:00
Alessio Gravili
934bae2d24 chore: dirty TypeScript bandaid fixes 2023-09-01 18:29:36 +02:00
Alessio Gravili
63d18beb10 chore: fix flaky tests due to missing or incorrect awaits 2023-09-01 17:51:02 +02:00
Alessio Gravili
c48f6a298c chore: upgrade jest and jest-environment-jsdom 2023-09-01 17:48:04 +02:00
Alessio Gravili
cacae16678 fix: deleting preferences 2023-09-01 17:47:02 +02:00
Alessio Gravili
3444525428 chore: dirty fix for circular dependency 2023-09-01 17:46:32 +02:00
Alessio Gravili
ae7d6f97d2 chore: formatting and linting (#3261)
* chore: lint packages/payload

* chore: lint packages/db-postgres

* chore: lint packages/db-mongodb

* chore: update eslintrc exclusion rules

* chore: update eslintrc exclusion rules

* chore: lint misc files

* chore: run prettier through packages

* chore: run eslint on payload again

* chore: prettier misc files

* chore: prettier docs
2023-09-01 17:39:44 +02:00
Dan Ribbens
5d7aa0d009 chore: wip traversePaths of sort and buildSearchParams 2023-09-01 11:26:36 -04:00
Alessio Gravili
5f7673d735 chore: update configuration files 2023-09-01 17:13:12 +02:00
Alessio Gravili
c3c13627f1 chore: update pnpm-lock.yaml 2023-09-01 17:00:28 +02:00
Alessio Gravili
373e89a6ba chore: eslint, turbo and various configs 2023-09-01 16:59:45 +02:00
James
6ba79de560 chore: merge 2023-08-30 12:55:45 -04:00
James
ba2f6ed9c3 chore: writes all locales 2023-08-30 12:55:07 -04:00
Dan Ribbens
f0ce57169d chore: begin using sort arg 2023-08-28 17:02:49 -04:00
Elliot DeNolf
d4983af3fc 0.4.1 2023-08-28 11:19:47 -04:00
Elliot DeNolf
6f2dcfd44e fix: all env vars copied from .env.example for starters 2023-08-28 11:18:52 -04:00
James
ee89693691 chore: adds delete, queryDrafts, find operations 2023-08-27 17:50:05 -04:00
James
e9b6db6559 chore: removes unused dependency 2023-08-27 17:49:42 -04:00
James
a19ccbb359 feat: optimizes querying drafts 2023-08-27 17:21:02 -04:00
James
09260df134 chore: temporarily comments out versions until methods are stubbed out 2023-08-27 12:03:53 -04:00
James
00874a4406 chore: builds version tables 2023-08-27 11:53:01 -04:00
James
2a99e6b72a chore: adds global methods 2023-08-27 11:02:38 -04:00
James
126f7f1a5a chore: adds relationship tests 2023-08-26 23:48:58 -04:00
James
55a996af19 chore: localized groups 2023-08-26 23:34:04 -04:00
James
bf79211163 chore: localized arrays now save correctly 2023-08-26 22:56:32 -04:00
James
fe0487b336 chore: passing postgres tests 2023-08-26 22:42:29 -04:00
James
62e37802ca chore: progress to retaining array rows 2023-08-26 20:50:56 -04:00
James
4dd29bf4e8 chore: ensures blocks can be updated while saving additional locales 2023-08-26 16:24:35 -04:00
James
1ca81ac726 chore: working localized relationships 2023-08-26 11:59:33 -04:00
Alessio Gravili
7b72f887d1 chore: enable esModuleInterop 2023-08-26 00:30:14 +02:00
Alessio Gravili
53526490f8 chore: fix top-level package.json commands 2023-08-25 22:13:02 +00:00
Alessio Gravili
28eaafd9c7 chore: omg it finally works omgggg 2023-08-25 22:08:20 +00:00
Alessio Gravili
27c02abacd chore: upgrade typescript and @types/node 2023-08-25 21:42:17 +00:00
James
e350c72342 Merge branch 'feat/db-adapters' of github.com:payloadcms/payload into feat/db-adapters 2023-08-25 15:59:30 -04:00
James
f631e5bef3 chore: ensures transform read preserves all locales 2023-08-25 15:59:19 -04:00
Alessio Gravili
6f22b662ec fix: make it work 2023-08-25 19:17:37 +00:00
Dan Ribbens
61e675dd7b working config after master changes 2023-08-25 15:07:03 -04:00
Dan Ribbens
4c345d18ff remove unused imports 2023-08-25 14:06:27 -04:00
Elliot DeNolf
1a8ab3b7cd chore: fix types in db-postgres 2023-08-25 11:58:21 -04:00
Alessio Gravili
7a90a440a9 fix: package.json 2023-08-25 15:47:46 +00:00
Alessio Gravili
2fdbf1d212 chore: more work on imports and exports 2023-08-25 15:44:31 +00:00
Alessio Gravili
7a72e99896 chore: import and export more stuff 2023-08-25 15:34:41 +00:00
Alessio Gravili
1acc6f2adc chore: exports/versions.ts 2023-08-25 15:20:51 +00:00
Alessio Gravili
36f0f63d3e chore: export/utilities.ts 2023-08-25 15:17:58 +00:00
Alessio Gravili
759d36049d chore: more work on exports 2023-08-25 15:04:05 +00:00
Alessio Gravili
97fac77fa3 chore: export more stuff from databases 2023-08-25 14:58:55 +00:00
Alessio Gravili
d7a89d4098 chore: add .devcontainer to .gitignore 2023-08-25 14:57:04 +00:00
Alessio Gravili
370e38ae30 chore: work on imports 2023-08-25 14:56:42 +00:00
Alessio Gravili
2d2d9fa673 chore: npm publishConfig exports 2023-08-25 14:55:20 +00:00
Alessio Gravili
4ee83881cc chore: export stuff 2023-08-25 15:19:18 +02:00
Alessio Gravili
57e8c0756e fix: db-mongodb package tsconfig.json 2023-08-25 12:26:36 +00:00
Alessio Gravili
2d97d3bcb1 chore: move exports to exports folder 2023-08-25 12:16:46 +00:00
Alessio Gravili
65a22082d6 chore: initial tsconfig.json and package.json setup 2023-08-25 12:02:20 +00:00
Dan Ribbens
004f2ed045 fixes type error in db-mongodb 2023-08-23 21:18:15 -04:00
Dan Ribbens
b8b9d7b7a1 fixes operator validation regression 2023-08-23 20:33:29 -04:00
Alessio Gravili
52820d0111 chore: upgrade playwright and jest 2023-08-23 12:41:06 +02:00
Alessio Gravili
6fdd854cab chore: install packages via workspaces 2023-08-23 12:38:48 +02:00
Alessio Gravili
b5bca5412a chore: upgrade typescript 2023-08-23 12:38:09 +02:00
Alessio Gravili
a67278b29f chore: move to monorepo structure 2023-08-23 12:20:30 +02:00
Alessio Gravili
e24ad67168 chore: migrate to pnpm 2023-08-23 00:21:11 +02:00
Alessio Gravili
25a182f407 Merge branch 'feat/db-adapters' into 2.0 2023-08-22 23:47:26 +02:00
Alessio Gravili
b4578c10a4 feat: security improvements and features (#3214)
BREAKING CHANGE:
- Unhandled Errors are now omitted by default. This can be breaking if people depend on those error messages. Now, it will just say "Something went wrong.".

* chore: slightly improved testing of registration via graphql

Signed-off-by: Vsevolod Volkov <st.lyn4@gmail.com>

* chore: hiding details of internal errors from responses

Signed-off-by: Vsevolod Volkov <st.lyn4@gmail.com>

* feat: ability to remove authorization tokens from response bodies

Signed-off-by: Vsevolod Volkov <st.lyn4@gmail.com>

* chore: add section for design contributions in contributing.md

* feat: add afterOperation hook (#2697)

* feat: add afterOperation hook for Find operation

* docs: change #afterOperation to #afteroperation

* chore: extract afterOperation in function

* chore: implement afterChange in operations

* docs: use proper CollectionAfterOperationHook

* chore: remove outdated info

* chore: types afterOperation hook

* chore: improves afterOperation tests

* docs: updates description of afterOperation hook

* chore: improve typings

* chore: improve types

* chore: rename index.tsx => index.ts

---------

Co-authored-by: Jacob Fletcher <jacobsfletch@gmail.com>
Co-authored-by: Alessio Gravili <alessio@gravili.de>

* chore: remove swc version pin (#3179)

* fix: WhereBuilder component does not accept all valid Where queries (#3087)

* chore: add jsDocs for ListControls

* chore: add jsDocs for ListView

* chore: add jsDocs for WhereBuilder

* chore: add comment

* chore: remove unnecessary console log

* chore: improve operator type

* fix: transform where queries which aren't necessarily incorrect, and improve their validation

* chore: add type to import

* fix: do not merge existing old query params with new ones if the existing old ones got transformed and are not valid, as that would cause duplicates

* chore: sort imports and remove extra validation

* fix: transformWhereQuery logic

* chore: add back extra validation

* chore: add e2e tests

* chore(test): adds test to ensure relationship returns over 10 docs (#3181)

* chore(test): adds test to ensure relationship returns over 10 docs

* chore: remove unnecessary movieDocs variable

* fix: passes in height to resizeOptions upload option to allow height resize (#3171)

* docs: fixes syntax error in rich-text.mdx that was breaking build

* docs: removes auto-formatting from rich-text.mdx (#3188)

* feat: Improve admin dashboard accessibility (#3053)

Co-authored-by: Alessio Gravili <alessio@gravili.de>

* feat: improve field ops (#3172)

Co-authored-by: PatrikKozak <patrik@trbl.design>

* chore: file cleanup (#3190)

* chore(release): v1.14.0

* chore: improve ts typing in sanitization functions (#3194)

* chore(templates): default port on website

* chore(templates): safely handles bad network requests

* chore(templates): implements draft preview and on-demand revalidation

* chore(templates): renders static cart page fallback

* chore(examples): updates draft-preview next-app example to use revalidateTag (#3199)

* feat: query support for geo within and intersects + dynamic GraphQL operator types (#3183)

Co-authored-by: Lucas Blancas <lablancas@gmail.com>

* chore: improve checkboxes (#3191)

* chore: improve filtering for hasMany number field (#3193)

* chore: improve fiiltering for hasMany number field

* chore: add translation for 'items' and replace rows with items

* chore: new exceededLimit key

* Revert "chore: add translation for 'items' and replace rows with items"

This reverts commit 3a91dabdfd.

* chore: undo adding items key in translation schema

* chore: new limitReached key

* chore: remove unnecessary exceededLimit key

* chore: spelling improvements

* chore: update test build config import

---------

Signed-off-by: Vsevolod Volkov <st.lyn4@gmail.com>
Co-authored-by: Vsevolod Volkov <st.lyn4@gmail.com>
Co-authored-by: Jarrod Flesch <30633324+JarrodMFlesch@users.noreply.github.com>
2023-08-22 23:30:22 +02:00
Dan Ribbens
bb3dd62b4e fixes relationship validation for custom id text types 2023-08-22 16:27:12 -04:00
Dan Ribbens
48d51fbf08 Merge remote-tracking branch 'origin/2.0' into feat/db-adapters 2023-08-22 16:06:02 -04:00
Alessio Gravili
9467074fb9 chore: update 2.0 branch from master (#3207)
Co-authored-by: Jacob Fletcher <jacobsfletch@gmail.com>
Co-authored-by: Alessio Gravili <alessio@gravili.de>
Co-authored-by: PatrikKozak <patrik@trbl.design>
Co-authored-by: Lucas Blancas <lablancas@gmail.com>
Co-authored-by: Stef Gootzen <37367280+stefgootzen@users.noreply.github.com>
Co-authored-by: Jarrod Flesch <30633324+JarrodMFlesch@users.noreply.github.com>
Co-authored-by: Jessica Chowdhury <67977755+JessChowdhury@users.noreply.github.com>
Co-authored-by: PatrikKozak <35232443+PatrikKozak@users.noreply.github.com>
Co-authored-by: Greg Willard <Wickett06@gmail.com>
Co-authored-by: James Mikrut <james@payloadcms.com>
Co-authored-by: Dan Ribbens <dan.ribbens@gmail.com>
Co-authored-by: Elliot DeNolf <denolfe@gmail.com>
fix: WhereBuilder component does not accept all valid Where queries (#3087)
fix: passes in height to resizeOptions upload option to allow height resize (#3171)
2023-08-22 16:04:50 -04:00
Dan Ribbens
659d4e77b9 fixes updateOne ignoring id arg 2023-08-22 15:56:41 -04:00
Alessio Gravili
f911257cd9 feat: RTL Support (#3003)
Co-authored-by: Alessio Gravili <alessio@gravili.de>
Co-authored-by: ibr-hin95 <ibr.hin95@gmail.com>
Co-authored-by: Seied Ali Mirkarimi <dasmergo@gmail.com>
Co-authored-by: muathkhatib <mkhatib.dev@gmail.com>
Co-authored-by: ibr-hin95 <40246707+ibr-hin95@users.noreply.github.com>
fix: recursiveNestedPaths not merging existing fields when hoisting row/collapsible fields (#2769)
fix: exclude monaco code editor from ltr due to microsoft/monaco-editor#2371

BREAKING CHANGE:
- The admin hook for `useLocale` now returns a Locale object of the currently active locale. Previously this would only return the code as a string. Any custom components built which had `locale = useLocale()` should be replaced with `{ code: locale } = useLocale()` to maintain the same functionality.
- The property `localization.locales` of `SanitizedConfig` type has changed. This was an array of strings and is now an array of Locale objects having: `label: string`, `code: string` and `rtl: boolean`. If you are using localization.locales from the config you will need to adjust your project or plugin accordingly.
2023-08-22 12:18:15 -04:00
Dan Ribbens
0296c51324 testing rollback 2023-08-22 11:07:52 -04:00
Alessio Gravili
b29b83315d Merge branch 'feat/db-adapters' into 2.0 2023-08-22 14:06:02 +02:00
James
0732f00490 chore: flattens insert and upsert 2023-08-21 17:51:00 -04:00
James
e22ca1beff chore: working update for relationships, locales, base row 2023-08-21 17:37:28 -04:00
Alessio Gravili
635b2e9963 chore: upgrade pino (v6 => v8) and pino-pretty (v9 => v10) (#2698)
* feat: upgrade pino from v6 to v8

* chore: update pino and pino-pretty
2023-08-21 22:22:24 +02:00
Dan Ribbens
ddc692a966 wip: postgres transactions 2023-08-21 16:04:37 -04:00
James
640fd2843f Merge branch 'feat/db-adapters' of github.com:payloadcms/payload into feat/db-adapters 2023-08-21 15:44:59 -04:00
James
af13924d3f chore: handles date in upsertRow 2023-08-21 15:44:46 -04:00
Alessio Gravili
7c4dd5ec5e feat: option to disable auto pluralization for the mongoose adapter (#3153)
* chore: disable slug pluralization for versions model

* chore: disable slug pluralizations for globals version model

* chore: disable auto slug pluralization for globals collection

* feat: autoPluralization option for mongoose adapter
2023-08-21 18:05:39 +02:00
Elliot DeNolf
3df6435353 0.4.0 2023-08-17 16:04:52 -04:00
Elliot DeNolf
3ef03364be feat: remove static templates 2023-08-17 16:03:26 -04:00
Elliot DeNolf
5396af9bfc feat: use templates from payload/payloadcms/templates 2023-08-17 15:19:42 -04:00
Elliot DeNolf
56eddf3a93 0.3.34 2023-08-16 09:49:56 -04:00
Elliot DeNolf
6dd900e6b9 feat: add plugin template 2023-08-16 09:23:21 -04:00
Dan Ribbens
e73cd26f10 merge master 2023-08-14 15:54:04 -04:00
Chingiz Mammadov
63e3063b9e feat: Added Azerbaijani language file (#3164)
Co-authored-by: Dan Ribbens <dan.ribbens@gmail.com>
2023-08-14 15:40:53 -04:00
rpfaeffle
942cfec286 feat: add support for hotkeys (#1821)
Co-authored-by: Jacob Fletcher <jacobsfletch@gmail.com>
Co-authored-by: Alessio Gravili <70709113+AlessioGr@users.noreply.github.com>
Co-authored-by: Alessio Gravili <alessio@gravili.de>
Co-authored-by: Jessica Boezwinkle <jessica@trbl.design>
2023-08-14 15:36:49 -04:00
Jarrod Flesch
35dfaab7c2 chore: works around changes in @swc/core 1.3.76 (#3170) 2023-08-14 14:32:42 -04:00
Elliot DeNolf
24aa1f27c1 feat: handle postgres numeric field for batch number comparison 2023-08-14 14:02:56 -04:00
Jordy Alcides
bad363882c feat: allow async relationship filter options (#2951)
* chore: improving relationship filter options;

Updating prop filterOptions from field type "relationship" to allow async functions;

* chore: add failing test case

* fix: translation followingFieldsInvalid_many not getting triggered

* docs: improve documentation

---------

Co-authored-by: Alessio Gravili <alessio@gravili.de>
2023-08-14 17:29:29 +02:00
Alessio Gravili
20a6ce8823 Merge pull request #3166 from payloadcms/fix/external-website-redirects
fix: do not allow redirects to external sites
2023-08-14 17:20:07 +02:00
Alessio Gravili
6797222733 chore: remove duplicate code 2023-08-14 17:19:19 +02:00
Jarrod Flesch
edcb3933cf fix: DatePicker showing only selected day by default (#3169) 2023-08-14 11:18:13 -04:00
Mark Barton
a0b13a5b01 feat: text alignment for richtext editor (#2803)
* Update isActive.tsx

This change allows us to define toggling of custom types in Slate. Specifically, this fixes the ability to toggle Alignment on nodes that use other active elements.

isElementActive(editor, format, TEXT_ALIGN_TYPES.includes(format) ? 'align' : 'type');

Type is the default for elements, allowing us to use a custom field lets us greater extend the functionality of Slate in Payload without causing any breaking changes

* Update toggle.tsx

Added to toggleElement public function

* Update isActive.tsx

* Update toggle.tsx

Added Rich Text Alignment, updated toggle function, added tests and doc updates

* added margin to void elements

* fix: list alignment

* removed textAlign from elements and added docs

* chore: fix typo

---------

Co-authored-by: Alessio Gravili <alessio@gravili.de>
2023-08-14 17:08:50 +02:00
Alessio Gravili
5744de7ec6 feat: make PAYLOAD_CONFIG_PATH optional (#2839)
* feat: make PAYLOAD_CONFIG_PATH optional

* hardcode common search paths

* docs: update docs regarding PAYLOAD_CONFIG_PATH

* make the tsConfig parser less prone to errors
2023-08-14 16:46:10 +02:00
Alessio Gravili
8a6cbf8a4d Merge pull request #2500 from Elliot67/feat/file-caching 2023-08-14 16:37:00 +02:00
Alessio Gravili
0a4730188b chore: update from master 2023-08-14 15:23:28 +02:00
Alessio Gravili
ea46fadc26 Merge remote-tracking branch 'origin/master' into pr/2500 2023-08-14 15:23:19 +02:00
Alessio Gravili
40db0d0462 chore: improve regex 2023-08-14 15:14:54 +02:00
Alessio Gravili
c0f05a1c38 fix: only allow redirects to /admin sub-routes 2023-08-13 16:25:14 +02:00
Elliot DeNolf
52de1f6ab0 chore(release): v1.13.4 2023-08-11 16:58:06 -04:00
Jarrod Flesch
479293fe6f chore: removes duplicative code for getting parent path (#3163) 2023-08-11 13:04:43 -04:00
Jarrod Flesch
3c60abd61a fix: correctly passes block path inside buildFieldSchemaMap (#3162) 2023-08-11 10:49:52 -04:00
Elliot DeNolf
f9807b5bd5 chore(release): v1.13.3 2023-08-11 09:27:27 -04:00
Jarrod Flesch
cb04d4a82a fix: unable to add arrays inside secondary named tabs (#3158) 2023-08-11 09:02:29 -04:00
James
5f7ea17717 chore(release): v1.13.2 2023-08-10 17:43:46 -04:00
Jarrod Flesch
608ae42eff chore: pins @swc/core to 1.3.75 2023-08-10 16:23:43 -04:00
Elliot DeNolf
791ed3be50 feat: conditionally use transactions 2023-08-10 13:54:04 -04:00
James
7345fa8fcd chore: cleanup 2023-08-09 19:33:07 -04:00
James
589fbba5aa chore: merge 2023-08-09 19:23:23 -04:00
James
237a91f0cc chore: ensures block and array locale relations are built properly 2023-08-09 19:22:19 -04:00
Elliot DeNolf
f8e6914f44 feat: proper type for createMigration func 2023-08-09 17:10:00 -04:00
Elliot DeNolf
cd447f1a9d feat: drizzle json generation 2023-08-09 17:07:51 -04:00
James
2f8549f331 chore: ports over find utilities 2023-08-09 16:41:21 -04:00
Jacob Fletcher
1da412a9bf chore(templates): fixes orders access control in ecommerce template (#3150) 2023-08-09 12:27:11 -04:00
Dan Ribbens
4f7d7a4d1b adds postgres findOne 2023-08-09 11:55:14 -04:00
Dan Ribbens
a7ad9903d7 Merge branch 'feat/db-adapters' of github.com:payloadcms/payload into feat/db-adapters 2023-08-09 07:15:46 -04:00
Dan Ribbens
9d7f88c8f7 adds pagination to find 2023-08-09 07:15:26 -04:00
Elliot DeNolf
0447dd3a33 chore: formatting 2023-08-08 16:36:55 -04:00
Elliot DeNolf
5bac50bca9 chore: apply schema changes before inserting into migrations table 2023-08-08 16:35:39 -04:00
James
353e851b29 chore: renames insertRow to upsertRow 2023-08-08 16:02:42 -04:00
Dan Ribbens
324b51e778 chore(release): v1.13.1 2023-08-08 16:00:52 -04:00
Jarrod Flesch
f5cf546e19 fix: updates addFieldRow and replaceFieldRow rowIndex insertion (#3145) 2023-08-08 15:35:59 -04:00
James
e25b77b411 chore: adds todo for update 2023-08-08 15:35:35 -04:00
James
84207d1e3b chore: cleanup 2023-08-08 15:06:56 -04:00
James
7e5f091e3a chore: inserts arrays within blocks 2023-08-08 14:38:48 -04:00
James
2f3f830de0 chore: merge 2023-08-08 14:27:43 -04:00
James
9500d94add chore: functional create 2023-08-08 14:25:28 -04:00
James
eea3cca28b chore: WIP - nested array insertion 2023-08-08 13:30:08 -04:00
Dan Ribbens
f6379e2117 Merge branch 'master' into feat/db-adapters 2023-08-08 12:58:43 -04:00
Dan Ribbens
510510cc66 chore: update changelog 2023-08-08 12:54:47 -04:00
Dan Ribbens
69cb015e0b chore(release): v1.13.0 2023-08-08 12:54:14 -04:00
Dan Ribbens
c6e0908076 feat: recursive saveToJWT field support (#3130) 2023-08-08 12:38:44 -04:00
Jarrod Flesch
8e188cfe61 fix: adding and replacing similarly shaped block configs (#3140) 2023-08-08 12:38:14 -04:00
Jessica Chowdhury
8ae98503f5 docs: adds images to each field page (#3137) 2023-08-08 10:00:21 -04:00
Jessica Chowdhury
1039f39c09 fix: absolute staticURL admin thumbnails (#3135) 2023-08-08 09:49:03 -04:00
Hristiyan Dodov
463d6bbec6 fix: setPreference() return type (#3125) 2023-08-08 09:17:17 -04:00
Dan Ribbens
57e25689a7 merge 2023-08-07 17:02:52 -04:00
Dan Ribbens
8ec4a70aa8 wip: build query 2023-08-07 17:00:46 -04:00
Jarrod Flesch
b117e73464 feat: radio and select fields are filterable by options (#3136) 2023-08-07 16:58:42 -04:00
Elliot DeNolf
8685ca6e94 feat: dev push migrations handling and prompt 2023-08-07 16:23:02 -04:00
James
72efd56302 chore: WIP create 2023-08-07 14:40:00 -04:00
PatrikKozak
fd0f078586 Merge pull request #3134 from leikoilja/fix-form-builder-example
fix: form-builder buildInitialFormState example
2023-08-07 11:14:20 -04:00
Dan Ribbens
89f759fa84 merge master 2023-08-07 09:22:19 -04:00
Ilja Leiko
0aa494b339 fix: fix form-builder buildInitialFormState example 2023-08-07 12:36:07 +02:00
Dan Ribbens
e8f05165eb feat: default tab labels from name (#3129) 2023-08-05 13:48:56 -04:00
Dan Ribbens
a776e06111 chore(release): v1.12.0 2023-08-04 14:06:10 -04:00
Dan Ribbens
02fc36e988 chore: update devDependencies for supply chain vulnerabilities (#3127) 2023-08-04 13:53:57 -04:00
Alessio Gravili
c5756ed4a1 feat: option to pre-fill login credentials automatically (#3021)
Co-authored-by: Dan Ribbens <dan.ribbens@gmail.com>
2023-08-04 13:41:08 -04:00
Dan Ribbens
356f174b9f feat: set JWT token field name with saveToJWT (#3126) 2023-08-04 13:22:05 -04:00
Jarrod Flesch
1c15868b50 chore(translations): removes extra keys from required 2023-08-04 12:59:12 -04:00
Jarrod Flesch
1180c795a3 chore: adds missing translations 2023-08-04 12:52:58 -04:00
Dan Ribbens
da27a8aadb fix: relationship field filter long titles (#3113) 2023-08-04 11:40:47 -04:00
Alessio Gravili
6a189c6548 fix: wrong links in verification and forgot password emails if serverURL not set (#3010) 2023-08-04 11:30:09 -04:00
Jessica Chowdhury
8c4d2514b0 fix: excludes useAsTitle field from searchableFields in collection view (#3105) 2023-08-04 11:27:52 -04:00
Alessio Gravili
a09c4ddc3b chore: improve flaky admin test suite (#3085) 2023-08-04 11:23:17 -04:00
James
6192c8623f chore: resolves conflict in relationship validation 2023-08-03 22:49:17 -04:00
James
cd322beba1 chore: progress to insert 2023-08-03 16:28:50 -04:00
James
e120d08282 chore: begins insert 2023-08-03 16:01:57 -04:00
Jarrod Flesch
5ca45987c4 chore: adds error and errors translations (#3121) 2023-08-03 15:14:34 -04:00
James
a9c4263646 chore: stubs out remaining field types 2023-08-03 14:21:40 -04:00
James
fd51903f02 chore: ensures parentID column type is set accordingly 2023-08-03 14:17:11 -04:00
James
221636027c chore: conflict 2023-08-03 13:30:28 -04:00
James
672e7e6ff3 chore: writes out todo migration plans 2023-08-03 13:29:57 -04:00
Jarrod Flesch
5b07e18ff5 chore: adds missing japanese translations (#3119) 2023-08-03 12:39:10 -04:00
Jessica Chowdhury
ea73e689ac feat: allows for upload relationship drawer to be opened (#3108) 2023-08-03 12:03:27 -04:00
Jacob Fletcher
456f29d689 chore: updates CONTRIBUTING.md (#3073) 2023-08-03 11:57:00 -04:00
Jacob Fletcher
50360b8769 chore: updates PULL_REQUEST_TEMPLATE.md (#3088) 2023-08-03 11:56:38 -04:00
Alessio Gravili
541e41293d chore: add RichTextAdapter interface type (#3117) 2023-08-03 11:31:21 -04:00
Elliot DeNolf
9022c8e22e feat: implement dropping of tables for postgres 2023-08-03 11:20:56 -04:00
Jarrod Flesch
a78c4631b4 feat: programmatic control over array and block rows inside the form (#3110) 2023-08-03 09:39:50 -04:00
Jarrod Flesch
da8ff20616 chore: prevent enter keypress from saving document (#3115) 2023-08-03 08:51:30 -04:00
James
bd464990ea chore: handles blocks 2023-08-02 21:37:06 -04:00
James
3ccdcc5c29 chore: builds enum pattern 2023-08-02 20:52:14 -04:00
James
dffb88e947 chore: working dynamic schema 2023-08-02 20:18:24 -04:00
James
a1388630d0 chore: adds postgres test suite 2023-08-02 19:57:22 -04:00
James
93352dd35e chore: merge 2023-08-02 17:21:58 -04:00
James
ee8f691073 chore: progress to init 2023-08-02 17:17:52 -04:00
Jacob Fletcher
037ccdd96e chore(examples): updates preview example (#3099) 2023-08-01 16:53:45 -04:00
Jacob Fletcher
b84496e5da chore(examples): updates auth example (#3100) 2023-08-01 16:53:31 -04:00
dependabot[bot]
62ecf54f85 chore(deps): bump semver in /examples/form-builder/nextjs (#3075)
Bumps [semver](https://github.com/npm/node-semver) from 6.3.0 to 6.3.1.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/v6.3.1/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v6.3.0...v6.3.1)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-01 15:24:25 -04:00
Elliot DeNolf
6355d732be chore: drop pg database when PAYLOAD_DROP_DATABASE 2023-08-01 11:30:23 -04:00
James
71758b68f7 chore: renames postgres connection to db 2023-08-01 10:56:35 -04:00
James
b3b1146fe1 chore: local postgres db for testing 2023-08-01 10:50:59 -04:00
James
55ae20654c chore: pg connection 2023-08-01 10:48:34 -04:00
Sean Zubrickas
3fdaeb875e removes yarn lock from virtual fields example because of merge conflict 2023-08-01 09:26:47 -04:00
Sean Zubrickas
992be4af44 updates top banner copy 2023-08-01 09:25:17 -04:00
Josef Bredreck
144bb81721 feat: add support for sharp resize options (#2844)
* feat(ImageResize): add support for resize options

* fix(ImageUpload): reuse name for accidental duplicate

* fix(ImageResize): e2e tests for added media size

* chore: simplify fileExists method

* fix: typo

* feat(ImageResize): update name to be more transparent

* fix: use fileExists in file removal

* improve names, comments and clarity of needsResize function

* fix: jsDoc params

* fix: incorrect needsResize condition and add failing test case

* chore: improve comment

* fix: merge conflict error

---------

Co-authored-by: Alessio Gravili <70709113+AlessioGr@users.noreply.github.com>
2023-08-01 09:20:50 -04:00
Dan Ribbens
5ef20e3440 docs: mention virtual fields cannot be sorted (#3107) 2023-08-01 05:10:02 -04:00
James Mikrut
88b56d04f5 Update README.md 2023-07-31 18:31:33 -04:00
James
3a5851d28a chore: passing tests 2023-07-31 18:12:09 -04:00
James
af302e19ee chore: ensures passwords never make it to db 2023-07-31 17:04:53 -04:00
James
8d265ee368 chore: maintains internal sanitize fields for mongodb 2023-07-31 16:52:56 -04:00
James
872b38d378 chore: corrects remaining mongodb adapter paths 2023-07-31 15:57:59 -04:00
James
affd55f84e chore: merge 2023-07-31 15:28:44 -04:00
James
561f29454b chore: conflict 2023-07-31 15:28:15 -04:00
Elliot DeNolf
5763870938 feat: more import paths 2023-07-31 15:28:11 -04:00
James
f057e25ec7 chore: more path corrections 2023-07-31 15:27:55 -04:00
Dan Ribbens
aa7bad41e4 chore: import path cleanup continued 2023-07-31 15:27:37 -04:00
Dan Ribbens
e70754f417 chore: import path cleanup 2023-07-31 15:26:08 -04:00
James
be61f8ab96 chore: revises paths 2023-07-31 15:20:34 -04:00
James
948dae5b63 chore: path cleanup 2023-07-31 15:16:20 -04:00
James
a2e635d75c chore: path cleanup 2023-07-31 15:10:07 -04:00
James
1c2a5bc342 chore: merge conflicts 2023-07-31 15:01:59 -04:00
James
4b00850e41 chore(release): v1.11.8 2023-07-31 15:00:28 -04:00
James
badf2336ee chore: resolves type conflicts introduced with database folder 2023-07-31 14:55:23 -04:00
James
6220c3d6d9 chore: includes database files for adapter build 2023-07-31 14:46:28 -04:00
James
028872261b chore: path cleanup 2023-07-31 14:41:52 -04:00
Dan Ribbens
487eb00402 chore: move getLocalizedPaths to core 2023-07-31 14:32:50 -04:00
James
832c1069f1 chore: moves db adapters to top-level packages 2023-07-31 14:26:14 -04:00
James
f69e5949e1 chore: abstracts adapters to be their own package 2023-07-31 12:42:21 -04:00
Elliot DeNolf
441a26b79c 2.2.1 2023-07-31 10:59:44 -04:00
Elliot DeNolf
471d5ca17f 2.2.1-beta.0 2023-07-31 10:42:13 -04:00
Elliot DeNolf
536f995ab4 feat: bump resend 2023-07-31 10:41:50 -04:00
James
f7ff894df4 chore: alternative typing for withBaseDatabaseAdapter 2023-07-31 10:21:15 -04:00
James
9050493c61 chore: abstracts dev / test suites to accept incoming database specification 2023-07-30 12:27:15 -04:00
James
06b1fe88ca chore: moves mongoose adapter 2023-07-29 11:24:35 -04:00
James
20179ba77b chore: merge master 2023-07-29 11:18:39 -04:00
Dan Ribbens
455b35dc1b chore: remove console log array field 2023-07-28 07:27:14 -04:00
Sean Zubrickas
b7299ab601 increases font size on top banner 2023-07-27 17:27:22 -04:00
Sean Zubrickas
174f83faf7 adds alternate github banner, removes cloud cta 2023-07-27 17:24:45 -04:00
Sean Zubrickas
5e41e0fb9e removes benefits banner & reverts to unordered list 2023-07-27 16:54:55 -04:00
Elliot DeNolf
bb3c97828e 2.2.0 2023-07-27 11:07:32 -04:00
James
129a9e7675 chore(release): v1.11.7 2023-07-26 21:24:27 -04:00
Elliot DeNolf
c4d32d5418 feat: adjust multipart upload settings for memory optimization (#7) 2023-07-26 20:43:21 -04:00
Sean Zubrickas
eb57c2280e removes benefits h3 in favor of benefits image, reorders helpful links 2023-07-26 18:48:58 -04:00
Sean Zubrickas
e2ad0baaaf refactors benefits list into h3 2023-07-26 17:41:56 -04:00
Jarrod Flesch
7542a92104 chore(tests): adds array row manipulation tests (#3086) 2023-07-26 16:34:13 -04:00
Elliot DeNolf
8522fd9f27 feat: cloudflare upload caching (#6)
* feat: implement caching hooks

* 2.1.2-canary.0

* feat: allow caching configuration per collection

* 2.1.2-canary.1

* feat: implement purge call to cloud-cms

* 2.1.2-canary.2

* chore: adjust purge logging

* 2.1.2-canary.3

* chore: req.body nesting

* 2.1.2-canary.4

* feat: handle /purge-cache response properly

* feat: clean up caching call logic

* 2.1.2-canary.5

* chore: handle enabled: false for caching collection

* 2.1.2-canary.6

* chore: tweaks

* 2.1.2-canary.7

* chore: remove immutable

* chore: update README

* 2.1.2-canary.8

* feat: rework caching config type, do not await purge call

* 2.1.2-canary.9

* chore: cleanup logging

* chore: bump payload

* chore: update README
2023-07-26 15:01:43 -04:00
Corfitz
0a91950f05 fix: incorrect image rotation after being processed by sharp (#3081)
* Applying rotation fix for sharp image resizing

* fix: make sure original image is rotated correctly

* chore: explain why rotate() is needed in comments

---------

Co-authored-by: Alessio Gravili <alessio@gravili.de>
2023-07-26 20:57:36 +02:00
James
02809532b4 fix: #3062 2023-07-26 11:34:22 -04:00
Alessio Gravili
67ba131cc6 feat: ability to add context to payload's request object (#2796)
Co-authored-by: Dan Ribbens <dan.ribbens@gmail.com>
2023-07-26 09:07:49 -04:00
Jarrod Flesch
cf9795b8d8 fix: array row deletion (#3062) 2023-07-26 09:01:25 -04:00
James
a5f42e6a08 chore(release): v1.11.6 2023-07-25 17:14:59 -04:00
James Mikrut
23e718d4d1 Merge pull request #3068 from sannajammeh/master
fix(admin:upload): Enable adminThumbnail fn execution on all mime types
2023-07-25 17:01:50 -04:00
Sean Zubrickas
e8d9cab046 updates payload logos, updates top banner + cloud banner, adds line to benefits 2023-07-25 16:14:43 -04:00
Tylan Davis
d43c83dad1 fix: threads hasMaxRows into ArrayAction components within blocks and arrays (#3066) 2023-07-25 15:43:20 -04:00
Jarrod Flesch
916f04cba0 chore: better parity for initing admin routes between dev and build (#3074) 2023-07-25 14:27:01 -04:00
Jarrod Flesch
156c3eeb08 chore: adds updated yarn lock files for examples and templates folders 2023-07-25 14:22:53 -04:00
Jarrod Flesch
9755a55672 chore: sets payload to latest within templates and examples 2023-07-25 14:11:33 -04:00
Jacob Fletcher
774ffa14d3 chore: updates e-commerce template (#3072) 2023-07-25 12:47:08 -04:00
James
e30db30b07 chore(release): v1.11.5 2023-07-25 10:27:03 -04:00
Jarrod Flesch
e71866856f fix: admin route not mounting on production serve (#3071) 2023-07-25 10:16:55 -04:00
Elliot DeNolf
242dac5b8e chore(release): v1.11.4 2023-07-25 08:48:16 -04:00
Sanna Jammeh
dda9ff01ca docs(upload): Modify the note under adminThumbnail to reflect changes 2023-07-25 00:35:19 +00:00
Sanna Jammeh
5b7aac08f5 test(uploads): Add test case for adminThumbnail 2023-07-25 00:29:54 +00:00
Sanna Jammeh
2c74e9396a fix(collections:admin): Enable adminThumbnail fn execution on all types 2023-07-24 22:42:41 +00:00
Sean Zubrickas
62b73250b4 changes e-commerce and saas links to h3s, adds icons to each heading 2023-07-24 14:47:20 -04:00
Sean Zubrickas
9953e36f6b updates cloud cta, updates examples & tempaltes block, adds one-click tempaltes block 2023-07-24 14:17:19 -04:00
Sean Zubrickas
532f08c5b8 updates readme with new images, copy and layout 2023-07-24 13:29:04 -04:00
Jessica Boezwinkle
136298ac86 docs: fix useAuth code snippet on admin/react-hooks 2023-07-24 16:53:56 +01:00
Greg Willard
080e6195ef feat: improve keyboard focus styles (#3011)
* feat: Card: add keyboard focus outline

* feat: Button: add keyboard focus styles

* feat: links: add keyboard focus styles

* feat: CopyToClipboard: fix textarea tabbing issue, add keyboard focus style

* chore: fix text getting darker on keyboard focus

* feat: Pill: add keyboard focus styles

* feat: Paginator: fix disabled state, add keyboard focus styles

* feat: Nav: add keyboard focus styles

* feat: Table: add keyboard focus styles

* chore: add jsDocs to (s)css loaders

* fix: update dependency which fixes css bug

* chore: remove unnecessary Card style

* fix: use Button instead of button for DeleteDocument

* chore: override browser default outline

* chore: remove unnecessary outline rule

* fix: list drawer outline

---------

Co-authored-by: Alessio Gravili <alessio@gravili.de>
2023-07-24 17:04:12 +02:00
Jacob Fletcher
074abf4b7d chore: migrates ecommerce template to next.js app router (#2991) 2023-07-24 08:23:51 -04:00
Jarrod Flesch
08377cc5a7 fix: if arrayFieldType rows are undefined, page would crash (#3049) 2023-07-21 17:24:44 -04:00
Jarrod Flesch
641c765fb9 feat: solidifies bundler adapter pattern (#3044) 2023-07-21 17:20:51 -04:00
Dan Ribbens
f11ae6a162 wip: database docs 2023-07-21 16:16:39 -04:00
Dan Ribbens
8cfc2141cc export baseDatabaseAdapter for use in adapters 2023-07-21 15:44:50 -04:00
Dan Ribbens
cf83237a51 merge master 2023-07-21 14:19:59 -04:00
Dan Ribbens
8a681450d1 feat: add database transaction support(#2983) 2023-07-21 14:13:18 -04:00
Jacob Fletcher
9f06253321 chore: fixes ecommerce template .env.example (#3041) 2023-07-20 17:45:55 -04:00
Elliot DeNolf
5476cdfee2 chore: only needed dependabot security alerts enabled, not all deps 2023-07-20 17:44:03 -04:00
Elliot DeNolf
ee93118688 0.3.33 2023-07-20 17:34:04 -04:00
Elliot DeNolf
47f9b89175 fix: help message rendering 2023-07-20 17:33:54 -04:00
Elliot DeNolf
f232434b9a chore: add dependabot (#3027) 2023-07-20 17:12:05 -04:00
Jacob Fletcher
2a932ea28e chore: updates auth example (#3026) 2023-07-20 14:06:26 -04:00
Elliot DeNolf
41d3eee35f feat: bump mongoose and mongoose-paginate versions (#3025) 2023-07-20 12:51:30 -04:00
Elliot DeNolf
7aa57308be chore(release): v1.11.3 2023-07-19 17:54:16 -04:00
Elliot DeNolf
744a79f286 chore: pin mongoose-paginate-v2 2023-07-19 17:29:27 -04:00
Dominik Zogg
cd0bf68a61 feat: support logger destination (#2896)
* add-pino-destination-stream-support

* destinationStream => loggerDestination
2023-07-19 11:48:13 -04:00
Jarrod Flesch
a69c3ec476 chore: updates example folder mongodb uri's to work with node 18 2023-07-18 16:51:22 -04:00
Alessio Gravili
3ac910bf6d chore: improves datepicker styles and functionality (#2347)
Co-authored-by: Jarrod Flesch <jarrodmflesch@gmail.com>
2023-07-18 14:32:30 -04:00
Jarrod Flesch
60fca40780 fix: rich text link element not validating on create (#3014) 2023-07-18 08:54:22 -04:00
Elliot DeNolf
891fc55e25 2.1.1 2023-07-17 20:53:17 -04:00
Elliot DeNolf
988755f202 fix: fallback domain email format 2023-07-17 20:52:45 -04:00
Alessio Gravili
733fc0b2d0 feat: auto-login in config capability (#3009)
This is useful when developing/testing, where logging after every change can be cumbersome.
2023-07-17 16:35:58 -04:00
Alessio Gravili
c8c22dad06 feat: work on database adapter (#3000) 2023-07-17 13:22:51 -04:00
Jacob Fletcher
2fc03f196e feat: returns queried user alongside refreshed token (#2813)
Co-authored-by: Dan Ribbens <dan.ribbens@gmail.com>
2023-07-17 09:35:34 -04:00
Jessica Chowdhury
7927dd485a docs: adds auth example for useAPIKey and disableLocalStrategy (#3007) 2023-07-17 09:30:30 -04:00
Jessica Chowdhury
42334263bb fix: adds backdrop blur to button (#3006) 2023-07-17 09:24:39 -04:00
Elliot DeNolf
b5483a46f6 chore: add accessing file storage section to README 2023-07-15 08:23:01 -04:00
James
75fbec21a9 chore(release): v1.11.2 2023-07-14 10:47:37 -04:00
Ritsu
281239db05 chore: fix typo error ua.json (#2995) 2023-07-13 16:11:20 -04:00
Jarrod Flesch
59bc002aed chore: fix protectRoles in auth example 2023-07-12 08:31:21 -04:00
Jarrod Flesch
70f3e6fc3e chore: explicitly import Tab type as type 2023-07-11 23:40:02 -04:00
Jarrod Flesch
4925f90b5f feat: adds array, collapsible, tab and group error states
Co-authored-by: Jessica Boezwinkle <jessica@trbl.design>
Co-authored-by: James <james@trbl.design>
2023-07-11 23:20:27 -04:00
Elliot DeNolf
f1e23b1cd0 chore: migration error handling 2023-07-11 14:30:24 -04:00
James
fafec05309 chore(release): v1.11.1 2023-07-11 10:13:40 -04:00
Jacob Fletcher
76a71c1af5 chore: adds use-client directive to label component (#2988) 2023-07-11 10:06:25 -04:00
James Mikrut
2854bfebf7 Merge pull request #2987 from payloadcms/fix/#2980
fix: #2980, locale=all was not iterating through arrays / blocks
2023-07-10 13:32:25 -04:00
James
d6bfba72a6 fix: #2980, locale=all was not iterating through arrays / blocks 2023-07-10 11:47:34 -04:00
PatrikKozak
2b0f65a27f docs: fixes admin panel table (#2986) 2023-07-10 10:16:25 -04:00
Jarrod Flesch
4b60845c67 chore: fix auth example protectRoles function 2023-07-07 12:42:27 -04:00
Jessica Boezwinkle
562cd18622 docs: adds authentication video 2023-07-07 17:05:35 +01:00
Jarrod Flesch
584d865d34 chore: improves error messaging for not found collections (#2982) 2023-07-07 11:56:14 -04:00
Elliot DeNolf
bac63f5204 fix: graphql and endpoint type issues 2023-07-07 11:37:56 -04:00
Jarrod Flesch
5b7756e266 chore: fixes auth example protectRoles function 2023-07-07 11:34:19 -04:00
Dan Ribbens
fc1f4c494f chore: cherry pick missing from migrations 2023-07-07 11:31:36 -04:00
Elliot DeNolf
2198445df9 Feat/migrations cli (#2940)
* feat: migrate cli call db adapter

* feat: mongoose adapter migrate:create

* feat: implement migrate command

* feat: use mongooseAdapter in test config

* feat: use filename as migration name

* feat: intelligently execute migrations, status table

* feat: implement migrate:down

* feat: implement migrate:reset

* feat: implement migrate:refresh

* feat: move common adapter operations to database/migrations dir

* feat: delete migrations instead of storing ran property

* feat: createMigration cleanup

* feat: clean up logging and add duration to output

* chore: export type, handle graphQL false

* chore: simplify getting latest batch number

* chore: remove existing migration logging noise

* feat: remove adapter export from top level

* chore: fix some db types
2023-07-07 11:02:56 -04:00
Jacob Fletcher
cfeeb9758f chore: adds eject script to custom server example (#2979) 2023-07-06 16:36:22 -04:00
Jacob Fletcher
51058f65e5 chore: builds auth example for next.js app router (#2976) 2023-07-06 14:15:28 -04:00
Jacob Fletcher
6bc4dde23c chore: builds preview example for next.js app router (#2718) 2023-07-06 13:18:31 -04:00
Elliot DeNolf
04fd2d6e82 0.3.32 2023-07-06 10:40:28 -04:00
Elliot DeNolf
4cdc7cf3c4 revert: use standalone template repos until frontend handling done 2023-07-06 10:40:23 -04:00
Elliot DeNolf
fbaa1028e6 0.3.31 2023-07-06 10:31:04 -04:00
Elliot DeNolf
df26e19c16 feat: use templates inside payload repo instead of standalone repos 2023-07-06 10:30:58 -04:00
PatrikKozak
40d6fe0b09 chore: adjusts custom components docs (#2908) 2023-07-05 17:33:29 -04:00
Jacob Fletcher
9881d322f3 docs: fixes misc cloud typos (#2975) 2023-07-05 16:31:51 -04:00
Dan Ribbens
756fe197c2 Merge branch 'master' into feat/mongoose-adapter-merge 2023-07-05 16:30:19 -04:00
Dan Ribbens
1877d2247c fix: anchor Button component respect margins (#2648) 2023-07-05 16:20:25 -04:00
Dan Ribbens
1bf81f56ce chore(release): v1.11.0 2023-07-05 16:15:29 -04:00
Jarrod Flesch
606c3cf021 Merge branch 'master' of https://github.com/payloadcms/payload 2023-07-05 15:26:15 -04:00
Jarrod Flesch
d112159d93 docs: fix mdx formatting 2023-07-05 15:26:10 -04:00
Jacob Fletcher
79393e8cf0 fix: properly threads custom react-select props through relationship field (#2973) 2023-07-05 15:11:46 -04:00
Jarrod Flesch
5b79067cc1 fix: ensures fields within blocks respect field level access control (#2969) 2023-07-05 14:41:39 -04:00
Jessica Chowdhury
04851d0dc9 fix: ensures rows always have id's (#2968)
Co-authored-by: Jarrod Flesch <jarrodmflesch@gmail.com>
2023-07-05 14:40:50 -04:00
Dan Ribbens
23ea91ebe1 use db adapter in preferences 2023-07-05 14:19:12 -04:00
Dan Ribbens
ed82135d0d fix find version globals 2023-07-05 13:51:50 -04:00
Elliot DeNolf
7c47e4b0d3 feat: improve typing of ExtendableError and APIError (#2864) 2023-07-05 13:39:29 -04:00
Dan Ribbens
190cf2ddc9 remove unused file 2023-07-05 13:34:12 -04:00
Dan Ribbens
2c43db9461 correct sort used in findVersions 2023-07-05 13:33:17 -04:00
Alessio Gravili
b734a1c422 feat: narrow endpoint.method type (#1880)
Co-authored-by: Jarrod Flesch <jarrodmflesch@gmail.com>
2023-07-05 13:20:56 -04:00
Jacob Fletcher
9b22c4b654 docs: fixes misc links (#2971) 2023-07-05 12:02:56 -04:00
Elliot DeNolf
03c2b36b84 chore: move cross-env to runtime dep (#2970) 2023-07-05 11:58:19 -04:00
Elliot DeNolf
868823d9e1 chore(templates): change user collection to default access (#2972) 2023-07-05 11:58:07 -04:00
Jessica Boezwinkle
365b91e1b4 docs: misc cloud updates 2023-07-05 16:52:03 +01:00
Dan Ribbens
f85ba4a4a7 merges master 10.1.5 2023-07-05 11:50:17 -04:00
Elliot DeNolf
98501cf4c0 0.3.30 2023-07-05 11:25:00 -04:00
Elliot DeNolf
d0ac142871 fix: move cross-env from dev dep to dep 2023-07-05 11:23:38 -04:00
Elliot DeNolf
d60c66ebd6 feat: change user collection access to default on all templates 2023-07-05 11:23:22 -04:00
Jessica Chowdhury
221356f6b9 Merge pull request #2956 from payloadcms/docs/cloud
docs: adds Cloud docs
2023-07-05 16:22:26 +01:00
Jessica Boezwinkle
1db1de1116 docs: misc tweaks to cloud docs 2023-07-05 16:21:22 +01:00
Jessica Chowdhury
801f60939b fix: nested richtext bug and test (#2966)
* fix: nested richtext bug and test

* chore: fix accidentally deleted character
2023-07-05 09:06:02 -04:00
Tylan Davis
dfdd334d16 docs: adds Cloud docs 2023-06-30 19:07:48 -04:00
Jacob Fletcher
a8e47088bb chore: adds front-end to ecommerce template (#2942) 2023-06-30 17:36:58 -04:00
Alessio Gravili
29d8bf0927 fix: GraphQL type for number field (#2954) 2023-06-30 22:52:35 +02:00
Jacob Fletcher
8a32909dcd chore: fixes tsconfig and nodemon in custom server example (#2952) 2023-06-30 11:53:50 -04:00
James
c0eed02924 chore(release): v1.10.5 2023-06-30 10:29:45 -04:00
Alessio Gravili
1d4df99ea7 fix: improve versions test suite (#2941)
* fix: versions test

* fix: restore tests not being effective

* make tests better

* new test: should versions be in correct order
2023-06-30 15:35:59 +02:00
Jarrod Flesch
b36deb4640 fix: incorrect graphql type generation (#2898) 2023-06-30 08:54:19 -04:00
Alessio Gravili
0c2e41c4be fix: fields in drawer cannot be edited (#2949)
Fixes #2945
2023-06-30 14:43:47 +02:00
James
d9dd78ad00 chore(release): v1.10.4 2023-06-29 20:29:09 -04:00
James Mikrut
06711be846 Merge pull request #2939 from AlessioGr/locale-in-apiurl
feat: add locale to displayed API URL
2023-06-29 20:23:19 -04:00
James
bf0b114b70 chore(release): v1.10.3 2023-06-29 20:22:40 -04:00
James Mikrut
68b220ff73 Merge pull request #2943 from payloadcms/fix/#2937
fix: #2937, depth not being respected in graphql rich text fields
2023-06-29 20:13:32 -04:00
James
f84b4323e2 fix: #2937, depth not being respected in graphql rich text fields 2023-06-29 20:08:39 -04:00
Alessio Gravili
b9417a7e19 fix: limit 0 not working always, + typing 2023-06-29 19:48:22 +02:00
Dan Ribbens
682f8ecae4 wip merge master 2023-06-29 13:27:33 -04:00
Alessio Gravili
064af8acc7 add apiURL for globals 2023-06-29 17:42:49 +02:00
Alessio Gravili
b22d157bd2 feat: add locale to displayed API URL 2023-06-29 17:19:36 +02:00
Jacob Fletcher
0112f4c4ab chore: builds custom server example (#2920) 2023-06-28 16:35:41 -04:00
Jacob Fletcher
6670915323 chore: adds ecommerce template (#2929) 2023-06-28 12:51:17 -04:00
Jacob Fletcher
49f117e220 chore: adds website template (#2928) 2023-06-28 12:48:08 -04:00
James Mikrut
8df4b15116 Merge pull request #2927 from payloadcms/fix/show-updatedAt-date
fix: shows updatedAt date when selecting a version to compare
2023-06-28 12:03:37 -04:00
Jacob Fletcher
766b1b5286 chore: creates templates directory (#2921) 2023-06-28 11:20:59 -04:00
Tylan Davis
3c9dab3b9d fix: shows updatedAt date when selecting a version to compare from dropdown 2023-06-28 10:47:41 -04:00
Alessio Gravili
b4c049c745 feat: mongoose-adapter: findOne, sort direction, id => where and cleanup (#2918)
* chore: add jsDocs for buildQuery

* feat: where instead of id for updateOne and deleteOne

* feat: find => findOne

* sort order => sort direction

* fix: typing of Global buildQuery

* cleanup

* fix: init payload's i18n for error message

* fix: incorrect use of FindArgs in findByID

* move deleteOne call to adapter

* re-order

* deleteVersions

* versions stuff

* more version stuff

* moar version stuff

* global stuff

* global stuff

* move combineQueries inside the findGlobal

* global stuff

* fix type

* more global stuff

* move docWithFilenameExists to adapter pattern

* chore: remove unnecessary comments

* perf: make everything lean, disable virtuals, ++performance

* chore: remove unnecessary Model
2023-06-28 16:19:43 +02:00
James Mikrut
7d156ef555 Merge pull request #2910 from payloadcms/chore/error-messages
chore: improves error messaging in unlock/reset/forgot-password
2023-06-28 08:18:28 -04:00
Alessio Gravili
bc5aeb7840 feat: new sort for mongoose adapter (#2912)
* feat: new sort

* fix: undefined sort handling
2023-06-27 00:00:41 +02:00
James
1aa38f8fdd chore(release): v1.10.2 2023-06-26 17:58:23 -04:00
Jarrod Flesch
a2d9ef3ca6 fix: adjusts swc loader to only exclude non ts/tsx files - #2888 (#2907) 2023-06-26 13:53:08 -04:00
Jessica Boezwinkle
9fbd7476fb chore: improves error messaging in unlock/reset/forgot-password 2023-06-26 18:39:46 +01:00
Jarrod Flesch
f627277479 fix: correctly scopes data variable within bulk update - #2901 (#2904) 2023-06-26 11:56:53 -04:00
Alessio Gravili
696a215dd0 feat: move some stuff over to the new adapter pattern (#2880)
* chore: add jsdocs for limit

* moar jsdocs

* Replace find in deleteByID

* (check this:) add missing locale

* move findByID

* Make findByID return only one document

* _id => id

* _id => id

* Improve version types

* Improve sortOrder types

* move version stuff over

* version stuff

* fix: sort types

* fix params

* fix: findVersionByID generic

* fix: type error for versions

* remove unused value

* fix: Document import

* add todo

* feat: updateOne to mongoose

* remove unnecessary Model

* more update stuff

* remove unnecessary imports

* remove unnecessary function arguments

* fix: auth db update calls

* fix: bad updateByID which made tests fail

* fix: update returned docs to fix tests

* fix: update from version using mongoose directly even though the Model does not exist

* feat: implement deleteOne

* fix: assign verificationToken only when it exists - fixes test

* migrate saveVersion partly

* feat: make dev:generate-graphql-schema work even without specifying extra argument

* fix: this.db can be null

* chore: use destructured locale where possible

* chore: improve variable name

* fix: SanitizedConfig type

* feat: findGlobal database adapter

* fix: flaky e2e test

* chore: improve incorrect comment

* chore: undo diffs

* fix: id types

* fix: id typing
2023-06-26 17:45:52 +02:00
Jessica Chowdhury
0d17d4f38e Merge pull request #2903 from payloadcms/fix/autosave-localized-docs
fix: autosave on localized fields, adds test
2023-06-26 16:00:51 +01:00
Jessica Boezwinkle
7e98cf94f3 chore: remove comments from test 2023-06-26 16:00:21 +01:00
Jessica Boezwinkle
6893231f85 fix: autosave on localized fields, adds test 2023-06-26 15:27:30 +01:00
Elliot DeNolf
8206c0fe8b fix: safely check for tempFilePath when updating media document (#2899) 2023-06-23 15:35:12 -04:00
Teun Mooij
837dcccefe fix: broken export of entityToJSONSchema (#2894) 2023-06-22 16:21:37 -04:00
Dan Ribbens
3e05598b56 chore(release): v1.10.1 2023-06-22 14:38:28 -04:00
Dan Ribbens
8128de64df fix: Relationship hasMany and filterOptions fails above 10 items (#2891) 2023-06-22 14:28:03 -04:00
Jarrod Flesch
b83d788d3c fix: conditional fields perf bug - #2886 (#2890) 2023-06-22 13:51:24 -04:00
PatrikKozak
6e62aab66e Merge pull request #2817 from payloadcms/chore/api-keys-docs
Chore/api keys docs
2023-06-22 11:08:27 -04:00
PatrikKozak
5de3515fc8 chore: re-words portion of api key docs 2023-06-22 10:43:53 -04:00
PatrikKozak
65ac61f300 Merge branch 'master' of https://github.com/payloadcms/payload into chore/api-keys-docs 2023-06-22 10:10:28 -04:00
Jacob Fletcher
10b8d492b3 docs: vercel visual editing (#2883) 2023-06-21 17:56:54 -04:00
Dan Ribbens
b0b30f5aef mongoose adapter create operation (#2882) 2023-06-21 16:13:05 -04:00
Elliot DeNolf
a515bdae56 2.1.0 2023-06-21 12:29:02 -04:00
Elliot DeNolf
cc40853903 feat: support sending from custom email domains (#3)
* feat: support sending from custom email domains

* feat: proper callback for nodemailer transport

* 2.1.0-beta.0
2023-06-21 12:28:19 -04:00
James
7a0e085a1f chore: add todo for findGlobal 2023-06-21 11:36:32 -04:00
Elliot DeNolf
121d69faf9 0.3.29 2023-06-20 23:07:53 -04:00
Elliot DeNolf
0a2d7c858a chore: fix static dirs 2023-06-20 23:06:50 -04:00
Elliot DeNolf
0962e1e563 feat: support for git templates (#8)
* feat: add payload demo as template

* feat: rework templates, add descriptions, better help message

* wip: parse .env

* chore: remove js templates

* feat: populate mongo and secret from .env.example

* feat: add cloud templates

* test: fix test suite template dir
2023-06-20 22:47:04 -04:00
Jacob Fletcher
09c6cad3e8 fix: cutoff tooltips in relationship field (#2873) 2023-06-20 17:49:18 -04:00
Dan Ribbens
e4df1293d2 chore(release): v1.10.0 2023-06-20 17:19:31 -04:00
Dan Ribbens
ce84174554 fix: relationship field query pagination (#2871) 2023-06-20 17:03:40 -04:00
Jacob Fletcher
ba9d6336ac fix: mobile loading overlay width #2866 (#2867) 2023-06-20 16:05:48 -04:00
Jacob Fletcher
e90c2c4cb7 chore: simplifies relationship drawer field test (#2872) 2023-06-20 16:04:54 -04:00
Alessio Gravili
8f086e315c feat: hasMany for number field (#2517)
* added custom config extension points

* Added custom field to documentation

* fix: not building due to incorrect typings

* Upload dist

* point to number array test

* feat: hasMany for number field

* fix: types

* Fix: incorrectly styles input for hasMany

* Revert "point to number array test"

This reverts commit 5a5162a803.

* Revert "Merge branch 'production-with-custom' into number-hasmany-v2"

This reverts commit dfc3ac523e, reversing
changes made to a3b1b7dd67.

* test: adds test for numbers with hasMany

* test: add number field e2e

* Fix updated index.tsx

* Fix updated index.tsx

* chore: add jsDocs for hasMany property

* chore: rename isMultiText to isCreatable, as it makes more sense

* fix: incorrect double space in comments

* chore: rename onMultiTextChange to handleHasManyChange

* chore: improve ordering

* docs: add documentation for hasMany

* docs: add more jsdocs for number field

* fix: new value not transformed to number

* improve types

* fix: only allow numbers as input using filterOption

* fix: Option / value type breaking sortable selects

* fix: typings and add id for sorting

* add animation to react select

* undo transitions due to glitches

* fix: keyboard handler for select for empty input values

* fix: validation for hasMany numbers

* feat: perform validation in the filter as well

* attempt to fix duplicate key issue

* add todo

* remove console logs

* fix: stupid key warning

* fix: validation tests

* feat: add filterOption to keydown listener

* feat: numberOnly for react-select

* chore: improve variable naming

* fix: allow numbers for relationship value by stringifying those for sortable react-selects

* feat: generated types for hasMany number field

* graphql typings part 1

* graphql defaults type

* better typing for number in buildObjectType

* fix: default graphql type disregarding hasMany for relationship field

* feat: minRows and maxRows for hasMany numbers

* simplify joi schema

* working minRows and maxRows validation!

* jesus christ: fix incorrect translations for number & relationship fields for greaterThanMax and lessThanMin

* fix weird type error

* move validation tests to validations.spec.ts and fix them

* fix: make sure filterOption only passes a number array to validate function

* fix: adds missing dark-mode styles for version differences view (#2812)

Co-authored-by: Tylan Davis <tylan@Tylans-MacBook-Pro.local>

* fix: #2821 i18n ui field label (#2823)

* chore: version diff styles (#2824)

Co-authored-by: Tylan Davis <tylan@Tylans-MacBook-Pro.local>

* chore: remove --legacy-peer-deps from gh actions workflow (#2814)

* chore: removes cms text from instances of payload name (#2793)

* chore(release): v1.9.2

* chore: update changelog release notes v1.9.2

* chore: cleans up graphql-schema-gen test folder

* fix: adds custom property to ui field in joi validation (#2835)

* adjust validation

* improve isnumber function

* Update number.mdx

---------

Co-authored-by: Teun Mooij <tmooij@infinitaslearning.com>
Co-authored-by: Dan Ribbens <dan.ribbens@gmail.com>
Co-authored-by: Tylan Davis <89618855+tylandavis@users.noreply.github.com>
Co-authored-by: Tylan Davis <tylan@Tylans-MacBook-Pro.local>
Co-authored-by: Dan Ribbens <DanRibbens@users.noreply.github.com>
Co-authored-by: Jacob Fletcher <jacobsfletch@gmail.com>
Co-authored-by: Jarrod Flesch <jarrodmflesch@gmail.com>
Co-authored-by: Jarrod Flesch <30633324+JarrodMFlesch@users.noreply.github.com>
2023-06-20 20:21:27 +02:00
Alessio Gravili
542b5362d3 fix: drawer fields are read-only if opened from a hasMany relationship (#2843) 2023-06-20 11:22:49 -04:00
Jacob Fletcher
8626dc6b1a fix: fields in relationship drawer not usable #2815 (#2870) 2023-06-20 11:21:23 -04:00
Alessio Gravili
a110ba2dc0 fix: drawer close on backspace (#2869) 2023-06-20 10:10:29 -04:00
Dan Ribbens
3863959c53 chore: change db adapter args 2023-06-19 16:46:17 -04:00
James
85d2467d73 fix: #2831, persists payloadAPI through local operations that accept req 2023-06-19 15:57:04 -04:00
Dan Ribbens
99f38098dd fix: default sort with near operator (#2862) 2023-06-19 15:17:22 -04:00
James Mikrut
b1123a4978 Merge pull request #2856 from payloadcms/feat/conditional-logic-perf
feat: optimizes conditional logic performance
2023-06-19 15:03:50 -04:00
James
4af8d56479 chore: ensures conditions are run in all appropriate cases 2023-06-19 15:03:34 -04:00
digitaledge-git
16118960aa fix: near query sorting by distance and pagination (#2861) 2023-06-19 14:54:40 -04:00
James
2c5a737715 chore: fixes initial state for url field 2023-06-19 13:39:11 -04:00
James Mikrut
5fa77d40b9 Merge pull request #2858 from payloadcms/fix/#2842
fix: #2842, querying number custom ids with in
2023-06-19 11:18:58 -04:00
Alessio Gravili
e9106882f7 feat: automatically redirect a user back to their originally requested URL after login (#2838) 2023-06-19 11:15:58 -04:00
James Mikrut
42f0db4251 Merge pull request #2800 from AlessioGr/improve-error
chore: improve error message during webpack load
2023-06-19 11:13:42 -04:00
James Mikrut
c3533dac2a Merge pull request #2846 from dpnolte/chore/disable_eslint_for_generated_types
chore: disable eslint on generated types
2023-06-19 11:11:48 -04:00
James Mikrut
8d52e5f078 Merge pull request #2830 from payloadcms/chore/depth-docs
chore: updates depth docs with N + 1 concept
2023-06-19 11:10:08 -04:00
James
116e9ffe81 fix: #2842, querying number custom ids with in 2023-06-19 11:02:30 -04:00
James
967f217346 feat: optimizes conditional logic performance 2023-06-19 10:48:17 -04:00
James Mikrut
da2a94d0b2 Merge pull request #2850 from AlessioGr/fix-configToJSONSchema
fix: old entityToJSONSchema being exported
2023-06-19 10:28:02 -04:00
James Mikrut
6c2b726fe1 Merge pull request #2855 from payloadcms/fix/#2832
fix: #2832, slow like queries with lots of records
2023-06-19 10:18:49 -04:00
James
4dd703a6bf fix: slow like queries with lots of records 2023-06-19 10:13:47 -04:00
Dan Ribbens
c60886fe3e docs: preferences graphql 2023-06-18 22:56:30 -04:00
Alessio Gravili
762b572c51 configToJSONSchema 2023-06-18 17:24:58 +02:00
Dan Ribbens
c7f40dd860 chore: remove mongoose models from auth 2023-06-18 08:38:40 -04:00
Dan Ribbens
832c19c1f7 chore: lint fix 2023-06-18 07:42:13 -04:00
Derk Nolte
6ca371cb8b chore: disable eslint on generated types 2023-06-18 10:14:21 +02:00
Alessio Gravili
0d8d7f358d fix: deprecate min/max in exchange for minRows and maxRows for relationship field (#2826)
* fix: deprecate min/max in exchange for minRows and maxRows for relationship

* fix: update validations unit tests with minRows and maxRows

* fix: incorrect types

* move to sanitize
2023-06-18 02:09:30 +02:00
James
51c2ab1672 chore(release): v1.9.5 2023-06-16 17:41:40 -04:00
James
a88f86cc3f chore: ensures objectid within works properly 2023-06-16 17:37:15 -04:00
Dan Ribbens
25151ee191 chore: collection based preferences (#2820)
**BREAKING CHANGES**

Preferences have been overhauled to be abstracted as a Payload collection and no longer explicitly defined by Payload. They previously used the slug `_preferences` as a collection name and url route and are now

If any of the following are true you will need to take action:
- You have existing preferences you wish to keep for your admin users you must migrate data in the _preferences collection to the new shape. To migrate the preferences in the database you must update the shape of each _preferences document from:
```js
{
  user: ObjectId("abc"),
  userCollection: "users",
  /** other fields remain the same **/
}
```
to:
```js
{
  user: {
    value: 'abc',
    relationTo: 'users",
  }
  /** other fields remain the same **/
}
```
- You have code external of Payload or custom code within Payload using the API endpoint `api/_preferences`, you should update any applications to use `api/payload-preferences` instead.
- You were using the preferences GraphQL implementation. This was removed and is instead provided the same way as Payload handles any other. In this way the queries, mutation and schemas have changed. These are now generated as any other collection within your payload project.
- You were using the Payload's exported Preference type for your typescript code. Now you can instead import the generated type from your project.
2023-06-16 16:58:36 -04:00
James
451c8c7548 chore(release): v1.9.4 2023-06-16 16:43:40 -04:00
James Mikrut
528645d407 Merge pull request #2791 from no-heroes/fix/pagination-false-totaldocs
fix: totalDocs is always 1 when using payload.find({ pagination: false })
2023-06-16 16:37:50 -04:00
James
70cf8487e7 chore(release): v1.9.3 2023-06-16 16:17:34 -04:00
James
aa09e566e0 Merge branch 'master' of github.com:payloadcms/payload 2023-06-16 15:50:16 -04:00
James
c3d6e1b490 fix: ensures relations to object ids can be queried on 2023-06-16 15:50:09 -04:00
Jarrod Flesch
6580f43e53 chore: relocates configToJSON alongside entityToJSON and fieldsToJSON (#2827) 2023-06-16 12:42:59 -04:00
Jarrod Flesch
56d7745139 fix: adds custom property to ui field in joi validation (#2835) 2023-06-16 09:09:31 -04:00
PatrikKozak
ee1c7db915 chore: updates depth docs with N + 1 concept 2023-06-15 16:59:27 -04:00
Dan Ribbens
504f5190d5 chore: normalize payload collections and globals outside db adapter 2023-06-15 16:50:11 -04:00
Jarrod Flesch
b682c76dc7 chore: cleans up graphql-schema-gen test folder 2023-06-15 09:54:53 -04:00
James
6aabdd05be chore: adds mongoose mock 2023-06-14 17:41:49 -04:00
Dan Ribbens
0d035a9c23 chore: update changelog release notes v1.9.2 2023-06-14 11:33:07 -04:00
Dan Ribbens
8310950f7b chore(release): v1.9.2 2023-06-14 11:32:14 -04:00
Jacob Fletcher
120e2936fe chore: removes cms text from instances of payload name (#2793) 2023-06-14 10:31:29 -04:00
Alessio Gravili
884f7991c4 chore: remove --legacy-peer-deps from gh actions workflow (#2814) 2023-06-14 10:23:48 -04:00
Tylan Davis
9664e4b96f chore: version diff styles (#2824)
Co-authored-by: Tylan Davis <tylan@Tylans-MacBook-Pro.local>
2023-06-14 10:21:23 -04:00
Dan Ribbens
63cd7fbd0c fix: #2821 i18n ui field label (#2823) 2023-06-14 08:39:45 -04:00
Tylan Davis
346a48f871 fix: adds missing dark-mode styles for version differences view (#2812)
Co-authored-by: Tylan Davis <tylan@Tylans-MacBook-Pro.local>
2023-06-14 08:29:13 -04:00
Jessica Boezwinkle
8fe3e59e76 Merge branch 'docs/misc-updates' 2023-06-13 17:35:52 +01:00
Jessica Boezwinkle
74d6156e8d chore: adds credentials to rest api examples 2023-06-13 17:35:39 +01:00
PatrikKozak
e834424a4c Merge branch 'master' of https://github.com/payloadcms/payload into chore/api-keys-docs 2023-06-13 12:25:09 -04:00
PatrikKozak
465d8b0245 chore: updates authentication/api-keys docs 2023-06-13 12:25:02 -04:00
Jessica Boezwinkle
25e9c1a50a fix: adds async await to payload.init example 2023-06-13 17:02:35 +01:00
Jessica Boezwinkle
d601cdd29e fix: adds async await to payload.init example 2023-06-13 17:01:55 +01:00
Jessica Chowdhury
5646ce9d8f Merge pull request #2810 from payloadcms/docs/blocks-table
docs: fix blocks table
2023-06-13 09:28:56 +01:00
James
87ba8b1f58 chore: removes some findOnes 2023-06-12 22:07:24 -04:00
James
5433560f8d chore: bulk update 2023-06-12 21:44:01 -04:00
James
05ed6d9721 chore: stubs out global versions queries 2023-06-12 21:38:10 -04:00
James
f74ff8f6bf chore: stubs out find adapter method 2023-06-12 20:18:09 -04:00
James
41acf71013 chore: passing tests 2023-06-12 19:41:08 -04:00
James
03c004f3d8 chore: progress to simplifying buildQuery logic 2023-06-12 17:59:05 -04:00
James
2be33a0fca chore: improves types for mongoose adapter model handling 2023-06-12 17:39:26 -04:00
James
5762d80945 Merge branch 'feat/mongoose-adapter' of github.com:payloadcms/payload into feat/mongoose-adapter 2023-06-12 16:50:11 -04:00
James Mikrut
a72d6fcb13 Merge pull request #2789 from payloadcms/chore/abstract-query-validation-complete
chore: refactor query validation outside of mongoose
2023-06-12 16:49:56 -04:00
James
4073c63cec chore: stubs out query drafts 2023-06-12 16:49:10 -04:00
James
2737fd400f chore: begins adapter 2023-06-12 16:36:13 -04:00
Jessica Boezwinkle
f7cacbe932 docs: fix blocks table 2023-06-12 17:27:18 +01:00
Alessio Gravili
abe38520aa fix: user can be created without having to specify an email - #2801 2023-06-12 17:35:06 +02:00
Jarrod Flesch
46a5f41721 fix: sanitize reset password result - #2805 (#2808) 2023-06-12 11:23:24 -04:00
Alessio Gravili
2aea4150a0 improve error message 2023-06-10 21:53:30 +02:00
James
4b2b4c3f9f chore(release): v1.9.1 2023-06-09 16:18:47 -04:00
PatrikKozak
b655809903 Merge pull request #2797 from payloadcms/feat/customize-upload-filename
Feat/customize upload filename
2023-06-09 14:58:06 -04:00
PatrikKozak
2e60830f6a Merge branch 'master' of https://github.com/payloadcms/payload into feat/customize-upload-filename 2023-06-09 14:41:45 -04:00
PatrikKozak
752b5456b9 chore: updates test/uploads test to check for value not text 2023-06-09 14:28:27 -04:00
PatrikKozak
35f7677d48 chore: updates test/fields uploads test to check for value not text 2023-06-09 13:34:24 -04:00
PatrikKozak
a3b7da25bc Merge branch 'master' of https://github.com/payloadcms/payload into feat/customize-upload-filename 2023-06-09 12:39:01 -04:00
PatrikKozak
596eea1f0a feat: adds option to customize filename on upload 2023-06-09 12:38:53 -04:00
Jarrod Flesch
725aa3183d chore: stubs out config for field perf testing 2023-06-09 11:27:18 -04:00
Jarrod Flesch
cf49f53809 Merge remote-tracking branch 'origin' into feat/array-rows 2023-06-09 11:03:41 -04:00
Jarrod Flesch
20c7e37345 chore: block array fixes 2023-06-08 11:49:54 -04:00
Alessio Gravili
38e962f2cb feat: collection list view custom components: BeforeList, BeforeListTable, AfterListTable, AfterList (#2792) 2023-06-08 09:33:16 -04:00
Jarrod Flesch
3efb651589 chore: simplifies get/set doc prefs 2023-06-07 22:47:56 -04:00
Jarrod Flesch
589eb3fa15 chore: removes console logs, accounts for initCollapsed 2023-06-07 22:31:36 -04:00
Jarrod Flesch
87554e9b16 chore: builds rows on init, refactors preferences for documents 2023-06-07 22:21:08 -04:00
Richard van Heuven van Staereling
2e73938534 fix: incorrectly return totalDocs=1 instead of the correct count when pagination=false 2023-06-07 23:36:59 +02:00
Richard van Heuven van Staereling
acf2564c73 chore: adds test to check totalDocs count when querying with pagination=false 2023-06-07 23:36:51 +02:00
Dan Ribbens
91dba7be88 chore(release): v1.9.0 2023-06-07 16:59:38 -04:00
Dan Ribbens
e020e7598a cleanup imports 2023-06-07 16:47:30 -04:00
Elliot DeNolf
b49591c236 docs: add troubleshooting section, CORS troubleshoot (#2790) 2023-06-07 16:40:34 -04:00
Dan Ribbens
cecea07b4d validate query handle nested version paths 2023-06-07 16:26:29 -04:00
Dan Ribbens
8ca3f3c53c allow hidden fields to query with overrideAccess 2023-06-07 15:10:45 -04:00
Dan Ribbens
4e617abf08 validate query sanitize _id 2023-06-07 14:50:32 -04:00
Dan Ribbens
e2cba16698 validate query use versionFields in query drafts 2023-06-07 14:40:49 -04:00
Dan Ribbens
49eac7368e validate query for poly relationships 2023-06-07 14:40:23 -04:00
Jarrod Flesch
8458a98eff feat: custom type interfaces (#2709)
* feat: ability to hoist type interfaces and reuse them

* docs: organizes ts and gql docs, adds section for field interfaces on both
2023-06-07 12:48:41 -04:00
Dan Ribbens
a518480292 chore(release): v1.8.6 2023-06-07 09:36:32 -04:00
Dan Ribbens
8908ac4646 validate nested paths 2023-06-07 07:09:07 -04:00
Dan Ribbens
47fd704630 execute access before validate query 2023-06-07 00:35:08 -04:00
Dan Ribbens
38d1a98193 prevent reassigning global version fields 2023-06-06 23:31:17 -04:00
Jarrod Flesch
a324feae9d chore: fixes graphql overview mdx file 2023-06-06 21:37:41 -04:00
Jarrod Flesch
551f1bd09f Merge remote-tracking branch 'origin/master' into feat/array-rows 2023-06-06 17:12:28 -04:00
Elliot DeNolf
d5dfe4224d test: entityToJSONSchema test for optional arrays with required fields 2023-06-06 16:35:36 -04:00
Dan Ribbens
aa848eef90 chore: separate query validation from build query 2023-06-06 16:35:34 -04:00
James
f1fc305ac4 fix: improperly typing optional arrays with required fields as required 2023-06-06 16:22:06 -04:00
Dan Ribbens
12e9cd5db1 chore: refactor getLocalizedPaths 2023-06-06 15:39:56 -04:00
Dan Ribbens
23dddc2e04 chore: refactor buildQuery to remove paramParser class 2023-06-06 15:36:43 -04:00
Dan Ribbens
1ea83f6349 chore: refactor parsePathOrRelation 2023-06-06 15:36:43 -04:00
Dan Ribbens
07a5801798 chore: separate parsePathOrRelation and buildAndOrConditions from buildQuery 2023-06-06 15:36:43 -04:00
Dan Ribbens
db71774fc2 chore: separate buildSearchParams from buildQuery 2023-06-06 15:36:43 -04:00
Dan Ribbens
2b80ad2bb4 chore: refactor getLocalizedPaths 2023-06-06 15:36:41 -04:00
Dan Ribbens
37ca5d827b chore: updated yarn lock 2023-06-06 15:20:14 -04:00
Jacob Fletcher
1aa257df4b chore: uses discord vanity urls (#2786) 2023-06-06 15:07:24 -04:00
Dan Ribbens
e4843061f0 Merge branch 'master' of github.com:payloadcms/payload 2023-06-06 14:50:33 -04:00
Alessio Gravili
3c72f3303c fix: read-only Auth fields (#2781) 2023-06-06 14:50:15 -04:00
Alessio Gravili
60f5522e67 fix: read-only Auth fields (#2781) 2023-06-06 14:50:03 -04:00
Dan Ribbens
576af01b6f fix: #2711 index sortable field global versions fields (#2775) 2023-06-06 14:46:14 -04:00
Dan Ribbens
8b767a166a fix: #2771 relationship field not querying all collections (#2774) 2023-06-06 14:26:13 -04:00
Jarrod Flesch
684c1a81a4 chore: exposes all operator in ts type (#2777) 2023-06-06 13:47:45 -04:00
Dan Ribbens
7a72f2f88d Merge branch 'master' of github.com:payloadcms/payload 2023-06-06 11:32:46 -04:00
James Mikrut
21ddcf07f7 Merge pull request #2779 from payloadcms/fix/#2767-bulk-operation-locales
fix: #2778 bulk operations missing locales in admin requests
2023-06-06 11:17:41 -04:00
James Mikrut
03b1ee0896 chore: remove passport local mongoose (#2713) 2023-06-06 10:07:47 -04:00
Dan Ribbens
e30871a96f fix: #2767 bulk operations missing locales in admin requests 2023-06-05 17:26:08 -04:00
Jacob Fletcher
3677cf688d fix: flattens relationships in the update operation for globals #2766 (#2776) 2023-06-05 17:22:57 -04:00
Jacob Fletcher
863be3d852 fix: adjusts activation constraint of draggable nodes (#2773) 2023-06-05 14:22:40 -04:00
Jarrod Flesch
2b4cf08f3a chore: combines array and block row state into array field attribute 2023-06-05 12:35:20 -04:00
Alessio Gravili
bd017bf56b chore: update launch config (#2772) 2023-06-05 12:22:58 -04:00
Alessio Gravili
ce7acff6d6 chore: add alternative vscode launch config (#2759) 2023-06-05 12:01:51 -04:00
Jarrod Flesch
536d7017ee fix: recursiveNestedPaths not merging existing fields when hoisting row/collapsible fields (#2769) 2023-06-04 08:49:23 -04:00
James
7c03e5510c chore(release): v1.8.5 2023-06-02 17:22:37 -07:00
James
ceb9b87783 Merge branch 'master' of github.com:payloadcms/payload 2023-06-02 17:02:29 -07:00
James
42afa6b48a feat: allows objectid through relationship validation 2023-06-02 17:02:10 -07:00
Dan Ribbens
3c7d57a73b chore: update changelog 2023-06-02 15:10:13 -04:00
Dan Ribbens
dcfd06c425 chore(release): v1.8.4 2023-06-02 15:08:08 -04:00
Alessio Gravili
23be263dd2 fix: RichText link custom fields (#2756)
Co-authored-by: Dan Ribbens <dan.ribbens@gmail.com>
2023-06-02 13:55:46 -04:00
Jarrod Flesch
f978299868 fix: graphql where types on rows and collapsible's (#2758)
Co-authored-by: Kári Yngvason <kari@hugsmidjan.is>
Co-authored-by: NikolaGanchev <62907292+NikolaGanchev@users.noreply.github.com>
Co-authored-by: James <james@trbl.design>
2023-06-02 13:50:19 -04:00
Jacob Fletcher
dbb0137ea0 chore: updates README 2023-06-02 12:12:29 -04:00
NikolaGanchev
51108c02ea feat: Add Bulgarian translation (#2753) 2023-06-01 18:43:17 -04:00
Alessio Gravili
69b97bbc59 fix: mongoose connection (#2754) 2023-06-01 12:03:47 -04:00
Dan Ribbens
f2399bc05a chore: fix bad merge 2023-05-31 15:56:57 -04:00
Dan Ribbens
93a85dd937 chore: allow custom mongourl during test (#2743)
Co-authored-by: swenzel <swen.wenzel@thearc.de>
Co-authored-by: PatrikKozak <patrik@trbl.design>
2023-05-31 15:51:49 -04:00
Jessica Chowdhury
8ee9724277 fix: fix locale popup overflow (#2737)
* fix: fix locale popup overflow

* chore: refines locale selector css

---------

Co-authored-by: Jarrod Flesch <jarrodmflesch@gmail.com>
2023-05-30 15:49:30 -04:00
PatrikKozak
7c446ec71a Merge pull request #2636 from AlessioGr/test-console-log-admin-url
fix: console log correct admin URL for tests
2023-05-30 15:07:28 -04:00
Jessica Chowdhury
f2451d03c1 chore: formats filesize to KB in upload collection list view (#2734) 2023-05-30 14:45:12 -04:00
Jarrod Flesch
0986282f13 fix: adds timestamps to global schemas (#2738) 2023-05-30 14:37:43 -04:00
Jessica Chowdhury
d3638bcb24 Merge pull request #2730 from StLyn4/typing-fixes
fix: typing of sendEmail function
2023-05-30 18:45:39 +01:00
Jessica Chowdhury
f386d1caad Merge pull request #2731 from payloadcms/fix/2729-code-editor-options
fix: adjusts code field joi schema to allow editorOptions
2023-05-30 18:30:37 +01:00
Jacob Fletcher
480c7b3e21 Merge pull request #2736 from payloadcms/fix/use-as-title
fix: searches on correct useAsTitle field in polymorphic list drawers
2023-05-30 13:11:03 -04:00
Jacob Fletcher
908d5747a8 chore: allows super-admins to view as tenant in multi-tenant example (#2719) 2023-05-30 13:10:14 -04:00
Jacob Fletcher
9ec2a40274 fix: searches on correct useAsTitle field in polymorphic list drawers #2710 2023-05-30 12:41:28 -04:00
James Mikrut
a080a6294c Merge pull request #2733 from payloadcms/chore/ui-field-doc
chore: updates ui field docs to show admin.components.Field is required
2023-05-30 12:05:05 -04:00
PatrikKozak
9be854a1a4 chore: updates ui field docs to show admin.components.Field is required 2023-05-30 12:01:33 -04:00
Jacob Fletcher
c76dc77e64 chore: writes e2e test for list drawer useAsTitle search 2023-05-30 11:28:26 -04:00
Elliot DeNolf
a42f17ca41 chore: use Discord vanity URL 2023-05-30 09:57:02 -04:00
Jarrod Flesch
ed136fbc51 fix: adjusts code field joi schema to allow editorOptions 2023-05-30 08:56:37 -04:00
Vsevolod Volkov
e3ff4c46cb fix: typing of sendMail function
Signed-off-by: Vsevolod Volkov <st.lyn4@gmail.com>
2023-05-30 14:31:19 +03:00
Jacob Fletcher
6125b66286 fix: removes payload dependency inception (#2717) 2023-05-26 16:24:10 -04:00
Jarrod Flesch
8285bac2f5 fix: corrects relationship field schema from pr #2696 (#2714) 2023-05-26 11:03:02 -04:00
James Mikrut
61bb0fae53 fix: username / email inconsistency when creating new users
Fixed UserExistsError error message
2023-05-25 20:47:05 -04:00
Jessica Chowdhury
47b9af970b Merge pull request #2665 from payloadcms/example/emails
example: email
2023-05-25 18:22:45 +01:00
Jarrod Flesch
731c85337b chore: stop tests from re-running when a PR body is edited (#2712) 2023-05-25 09:28:02 -04:00
James Mikrut
4b59fda56f Merge pull request #2708 from payloadcms/jmikrut-patch-1
Update overview.mdx
2023-05-24 15:16:53 -04:00
James Mikrut
2361221198 Update overview.mdx 2023-05-24 15:16:14 -04:00
Dan Ribbens
d931ba9b50 chore: update changelog 2023-05-24 13:12:53 -04:00
Dan Ribbens
51fd1db4eb chore(release): v1.8.3 2023-05-24 12:00:55 -04:00
Dan Ribbens
dbd4dd215a chore: yarn lock 2023-05-24 11:44:31 -04:00
Jarrod Flesch
c716954e89 fix: adds credentials to doc access request (#2705) 2023-05-24 10:39:03 -04:00
Elliot DeNolf
a324768b3f 2.0.0 2023-05-24 09:53:33 -04:00
TomDo1234
5be247da0a Merge branch 'master' of https://github.com/TomDo1234/payload 2023-05-24 07:18:27 +10:00
TomDo1234
b47e84369c fixed UserExistsError message to say email instead of username 2023-05-24 07:12:58 +10:00
TomDo1234
fe7ddf3e0f Merge branch 'master' of https://github.com/TomDo1234/payload 2023-05-24 06:42:46 +10:00
Jacob Fletcher
2fc9288870 feat: builds multi-tenant example (#2689)
* feat: builds multi-tenant example

* chore: updates seed script logic
2023-05-23 16:40:18 -04:00
Elliot DeNolf
0973ee512e 2.0.0-0 2023-05-23 16:29:57 -04:00
Elliot DeNolf
f74e492448 feat: email (#1)
* chore: bump payload

* test: add jest

* chore: update eslint rules

* feat: add email transport to plugin

* ci: actions build and test

* chore: bump typescript

* chore: adjust top-level plugin options

* test: clean up

* feat: better env var handling, assertions

* chore: update README

* 1.1.0-beta.0

* chore: update package.json files

* 1.1.0-beta.1

* chore: fix webpack recursion

* 1.1.0-beta.2

* chore: bump payload

* chore: email logging on success on error

* 1.1.0-beta.3

* chore: use proper env var for default domain

* 1.1.0-beta.4

* chore: log sendEmail error with better message

* 1.1.0-beta.5

* chore: add comments to plugin options properties

* 1.1.0-beta.6

* chore: bump payload peer dep

* 1.1.0-beta.7

* chore: update README

* chore: bump payload in dev dir

* chore: package.json license

* test: move test
2023-05-23 15:52:00 -04:00
Jarrod Flesch
f9de807daa Fix: correct graphql param types (#2696)
* chore: colocates gql schema field types with operators
* chore: adds missing `json` gql field schema
* fix: corrects graphql `id` type from JSON to String
2023-05-23 15:27:35 -04:00
Jacob Fletcher
e85ce4eaf2 Merge pull request #2694 from payloadcms/fix/rel-drawer-save
fix: add new relationship drawer onSave handling
2023-05-23 15:24:22 -04:00
Jacob Fletcher
5fc36333b9 Merge pull request #2699 from payloadcms/fix/mobile-rel
fix: unable to clear relationships or open relationship drawer on mobile
2023-05-23 15:24:01 -04:00
Jacob Fletcher
2809cb910c chore: fixes broken test for externally updated relationships 2023-05-23 10:37:52 -04:00
Jacob Fletcher
782f8ca047 fix: unable to clear relationships or open relationship drawer on mobile #2691 #2692 2023-05-23 10:08:16 -04:00
Quentin Beauperin
8bdbd6b073 docs: fix global hooks intro anchor links (#2695) 2023-05-23 09:31:22 -04:00
James Mikrut
7fbd5adaa2 Merge pull request #2687 from payloadcms/chore/install-doc-mongo-uri-secret
chore: updates installation doc to use envs in server.ts example
2023-05-23 08:46:20 -04:00
James Mikrut
324ca171a3 Merge pull request #2693 from payloadcms/fix/2685-graphql-relations
Fix/2685 graphql relations
2023-05-23 08:37:53 -04:00
Jacob Fletcher
bbf114b822 chore: writes e2e test for relationships created using the document drawer 2023-05-22 23:59:09 -04:00
Jacob Fletcher
a2a8ac9549 fix: prevents add new relationship modal from adding duplicative values to the parent doc #2688 2023-05-22 18:01:23 -04:00
Jacob Fletcher
ae384306eb chore: threads operation through the default edit view onSave handler 2023-05-22 17:13:35 -04:00
James Mikrut
9c4e003315 Merge pull request #2690 from payloadcms/fix/#2662
fix: #2662, draft=true querying by id
2023-05-22 16:43:41 -04:00
James
9bb5470342 fix: #2685, graphql querying relationships with custom id 2023-05-22 16:40:24 -04:00
Elliot DeNolf
2f209e3e9b chore: recreate issue in test dir 2023-05-22 16:14:28 -04:00
James
314ddbd44c chore: tests 2023-05-22 15:50:54 -04:00
James
3b78ab04c7 fix: #2662, draft=true querying by id 2023-05-22 15:46:04 -04:00
Dan Ribbens
bb21f51f74 Merge branch 'fix/safely-validate-relationships' 2023-05-22 13:58:47 -04:00
Dan Ribbens
666c2383ba chore: lint fix 2023-05-22 13:58:25 -04:00
James
2703853edb fix: safely validates null relations 2023-05-22 13:46:11 -04:00
PatrikKozak
f728fca036 chore: updates installation doc to use envs in server.ts example 2023-05-22 11:29:41 -04:00
Dan Ribbens
368103d76d Merge branch 'master' of github.com:payloadcms/payload 2023-05-20 05:00:08 -04:00
Quentin Beauperin
3a2462baba docs: add missing admin.group property in configuration/globals (#2684) 2023-05-20 04:35:50 -04:00
Jessica Boezwinkle
bd2bfbbb93 docs: spacing fix on graphql docs 2023-05-19 16:59:23 +01:00
Jessica Boezwinkle
1300fc864c docs: additional params for find operation rest-api 2023-05-19 15:10:24 +01:00
Jessica Boezwinkle
ef2d17922b docs: adds rest-api examples for real this time 2023-05-19 14:49:06 +01:00
Dan Ribbens
b63dd40512 chore: release-it config update to include pre release on github 2023-05-18 12:00:49 -04:00
Quy Luong
fb82567f03 chore: fix and improve Vietnamese translation (#2651) 2023-05-18 11:57:22 -04:00
James Mikrut
b2c443e866 fix: #2647, slate not reinitializing after row change (#2653) 2023-05-18 11:56:25 -04:00
Jacob Fletcher
07d0324a6d Merge pull request #2677 from payloadcms/docs/node-version
docs: node version
2023-05-17 17:13:47 -04:00
Jacob Fletcher
c1e92ad27d fix: modal overflow caused by unused button tooltips (#2676) 2023-05-17 17:13:04 -04:00
Jacob Fletcher
28e481c2e2 Merge pull request #2656 from payloadcms/feat/peer-dep-conflicts
fix: peer dependencies
2023-05-17 17:12:39 -04:00
Jacob Fletcher
1ceea645b6 chore: replaces instances of the text Mongo with MongoDB 2023-05-17 16:35:55 -04:00
Jacob Fletcher
578e5e7e58 docs: updates node version requirement to v14 in installation docs 2023-05-17 16:29:03 -04:00
Jacob Fletcher
463d00732f chore: removes unused peer dependencies 2023-05-17 15:32:23 -04:00
Jacob Fletcher
698a8abe6e chore: fixes failing e2e test when searching within a relationship field 2023-05-17 12:25:24 -04:00
Roody
776877291f chore: Spelling and Grammar Fixes in German Translations (#2667) 2023-05-17 11:04:11 -04:00
Jacob Fletcher
1c25d965ac fix: react-select styles 2023-05-16 12:03:58 -04:00
Jessica Boezwinkle
bc41f81303 example: adds email example 2023-05-16 11:07:33 +01:00
Jarrod Flesch
648c38414e fix: disabled select fields 2023-05-15 16:49:40 -04:00
PatrikKozak
02b972e1ed fix: corrects sendEmail error logger (#2663) 2023-05-15 16:11:33 -04:00
Jacob Fletcher
dd38a08746 chore: bumps @trbl/eslint-config to v3.0.1 2023-05-12 17:50:29 -04:00
Jacob Fletcher
315b0059da chore: migrates to react-select v5.7.3 2023-05-12 17:50:24 -04:00
James
4d3ea70d2b chore: resolves all peer dep conflicts besides react-select 2023-05-12 11:50:05 -04:00
Elliot DeNolf
e567627809 1.0.1 2023-05-11 22:55:53 -04:00
Elliot DeNolf
56965bc0ed feat: export some utils (#2) 2023-05-11 22:55:13 -04:00
Dan Ribbens
29a0dcffc7 chore(release): v1.8.2 2023-05-10 18:44:00 -04:00
Dan Ribbens
1732bb877c fix: react webpack alias 2023-05-10 18:35:01 -04:00
Dan Ribbens
fc1fac08c8 chore(release): v1.8.1 2023-05-10 18:25:54 -04:00
Dan Ribbens
1d03de333c Revert "Merge pull request #2572 from wesdimiceli/fix/provide-plugin-package-resolution"
This reverts commit 4f5b811383, reversing
changes made to 776cad427d.
2023-05-10 18:12:39 -04:00
Dan Ribbens
74f086a460 Merge branch 'master' of github.com:payloadcms/payload 2023-05-10 15:00:02 -04:00
Dan Ribbens
6e93e3e25d chore: release v1.8.0 2023-05-10 14:45:42 -04:00
Jessica Boezwinkle
d53d0cb439 chore: updates payload version on example repos 2023-05-10 15:56:57 +01:00
Paul
3f185cb18b feat: export additional graphql types (#2610)
* Add paginatedType to graphQL on collections types

* Refactor config query and mutation extension into a reusable type

* Export paginatedListType and payload's version of graphql

* Revert prettier's automatic changes

* Fix requested changes

* Add additional documentation for extending GraphQL

* Add information about the resolver's first argument
2023-05-10 08:53:46 -04:00
Paul
7963e7540f fix: add dotenv.config() to test/dev.ts (#2646) 2023-05-10 08:47:22 -04:00
Angelo Bartolome
85316879cd feat: allow users to manipulate images without needing to resize them (#2574)
* Refactor imageResizer.ts to allow for keeping original size in certain cases

* revert new property for keeping desired size

* add unit tests for maintained image size feature
2023-05-10 08:44:53 -04:00
Elliot DeNolf
e43d6520c5 0.3.28 2023-05-09 13:39:19 -04:00
Elliot DeNolf
1123909960 fix: revert template serverURL back to localhost 2023-05-09 13:39:12 -04:00
Elliot DeNolf
bc1853c2e7 0.3.27 2023-05-09 10:59:13 -04:00
Elliot DeNolf
318b734f96 feat: use 127.0.0.1 for node compatibility 2023-05-09 10:58:20 -04:00
Jacob Fletcher
69c4760f37 chore: migrates react-router-dom to v5.1 (#2637) 2023-05-09 10:35:37 -04:00
Dan Ribbens
7d04cf14fb feat: add Arabic translations (#2641) 2023-05-09 10:15:23 -04:00
Quentin Beauperin
9072096495 fix: softens columns and filters pill colors (#2642) 2023-05-08 17:59:41 -04:00
Elliot DeNolf
f6cfe15807 Merge pull request #2639 from payloadcms/chore/eslint-config
chore: migrate eslint config
2023-05-08 17:03:29 -04:00
Elliot DeNolf
e1bad04279 chore: lint fix 2023-05-08 16:49:13 -04:00
Elliot DeNolf
dda3341537 chore: upgrade rules to latest eslint-plugin-jest 2023-05-08 16:33:58 -04:00
Elliot DeNolf
6e27795756 chore: migrate @trbl/eslint-config inline 2023-05-08 16:33:19 -04:00
Dennis Snijder
54fac4a5d7 fix: Row groups in tabs vertical alignment (#2593)
* fix: removes top padding from group in row

---------

Co-authored-by: PatrikKozak <patrik@trbl.design>
2023-05-08 15:55:12 -04:00
Alessio Gravili
2697974694 fix: fix tests by hard-coding the URL in the logger 2023-05-08 19:23:09 +02:00
Elliot Lintz
a9b5dffa00 feat: allow full URL in staticURL (#2562)
* feat: support full URL for upload.staticURL

* feat: Update documentation about upload.staticURL property

* feat: Add reproduction test for absolute staticURL
2023-05-08 13:17:16 -04:00
Alessio Gravili
095ccf7194 chore: set serverURL for tests 2023-05-08 19:04:27 +02:00
James Mikrut
4f5b811383 Merge pull request #2572 from wesdimiceli/fix/provide-plugin-package-resolution
fix: resolve process/browser package in webpack config
2023-05-08 12:52:55 -04:00
James Mikrut
776cad427d Merge pull request #2635 from payloadcms/fix/2611-nested-querying
fix: ensures nested querying works when querying across collections
2023-05-08 12:49:55 -04:00
Jarrod Flesch
d365ba5303 chore: fixes test 2023-05-08 12:24:24 -04:00
Jarrod Flesch
31c0ab7ab7 chore: strengthens int test 2023-05-08 12:22:08 -04:00
Jarrod Flesch
09974fa686 fix: ensures nested querying works when querying across collections 2023-05-08 12:20:06 -04:00
James Mikrut
03cbab6c08 Merge pull request #2548 from payloadcms/docs/upload-example
chore: adds export and fields to upload example
2023-05-08 11:51:44 -04:00
James Mikrut
bbe5bff389 Merge pull request #2625 from payloadcms/fix/#2608-custom-id-text-query
fix: query custom text id fields
2023-05-08 11:51:04 -04:00
James Mikrut
f857da964b Merge pull request #2632 from payloadcms/fix/graphql-type
fix: correct casing on graphql type
2023-05-08 11:50:42 -04:00
James Mikrut
d36916b400 Merge pull request #2631 from payloadcms/fix/uploading-webp
fix: webp upload formatting
2023-05-08 11:50:22 -04:00
James Mikrut
c0568f92e4 Merge pull request #2634 from payloadcms/fix/queryHiddenFields
Fix/query hidden fields
2023-05-08 11:49:22 -04:00
James Mikrut
b17891c170 Merge pull request #2633 from payloadcms/fix/upload-schema
fix: defaultValue missing from Upload field schema
2023-05-08 11:49:04 -04:00
James
164d6e93d0 Merge branch 'master' of github.com:payloadcms/payload 2023-05-08 10:27:04 -04:00
James
733ca324d2 chore: force aliases react to avoid invalid hook call 2023-05-08 10:26:57 -04:00
PatrikKozak
fb4f822d34 fix: removes queryHiddenFields from example Find operation 2023-05-08 09:56:32 -04:00
Jessica Boezwinkle
7b21eaf12d fix: defaultValue missing from Upload field schema 2023-05-08 14:55:51 +01:00
PatrikKozak
02a4e17e41 Merge branch 'master' of https://github.com/payloadcms/payload into fix/queryHiddenFields 2023-05-08 09:53:34 -04:00
PatrikKozak
5f30dbb1a5 fix: removes deprecated queryHiddenFIelds from local API docs 2023-05-08 09:53:27 -04:00
Jessica Boezwinkle
219f50b0bc fix: correct casing on graphql type 2023-05-08 14:45:42 +01:00
Jessica Boezwinkle
ccd6ca298e fix: webp upload formatting 2023-05-08 13:15:18 +01:00
Dan Ribbens
967f2ace0e fix: query custom text id fields 2023-05-06 21:25:41 -04:00
Dan Ribbens
2c36468431 chore(release): v1.7.5 2023-05-04 16:55:46 -04:00
Hristiyan Dodov
8dbf0a2bd8 fix: make incrementName match multiple digits (#2609) 2023-05-04 16:35:55 -04:00
Michel v. Varendorff
967899229f feat: collection admin.enableRichTextLink property (#2560) 2023-05-04 16:31:40 -04:00
Jarrod Flesch
1d58007606 feat: custom admin buttons (#2618)
Co-authored-by: Dan Ribbens <dan.ribbens@gmail.com>
2023-05-04 16:04:06 -04:00
Jarrod Flesch
56a1dee3d6 docs: fix ui field example code block config 2023-05-04 09:33:28 -04:00
Quentin Beauperin
28572a978e docs: add hideAPIURL to the collections and globals admin options (#2614)
* fix: add the missing `hideAPIURL` admin option in the collections docs

* fix: add the missing `hideAPIURL` admin option in the globals docs
2023-05-03 19:11:56 -04:00
Jarrod Flesch
acfb9bca45 Feat/custom admin buttons (#2613) 2023-05-03 17:21:38 -04:00
Jacob Fletcher
6f82cefdc5 chore: adds cloud messaging to example READMEs (#2612) 2023-05-03 11:14:11 -04:00
James
d0ea57120c chore(release): v1.7.4 2023-05-01 22:45:37 -04:00
Elliot DeNolf
277beb6587 chore: release-it verbose logging 2023-05-01 22:19:07 -04:00
Elliot DeNolf
802deaca03 fix: properly import SwcMinifyWebpackPlugin (#2600) 2023-05-01 22:00:56 -04:00
Dan Ribbens
3c6461f757 chore(release): v1.7.3 2023-05-01 17:27:29 -04:00
James Mikrut
a0bb13a412 fix: #2592, allows usage of hidden fields within access query constraints (#2599)
Co-authored-by: Dan Ribbens <dan.ribbens@gmail.com>
2023-05-01 17:15:14 -04:00
Elliot DeNolf
870838e756 feat: adjust stack trace for api error (#2598) 2023-05-01 16:50:48 -04:00
Jarrod Flesch
8f6f13dc93 fix: addds workaround for slate isBlock function issue (#2596) 2023-05-01 16:30:01 -04:00
Harrison-Blair
13179a9498 chore: misc documentation updates (#2589)
* chore: ensures example configs are being exported when necessary
* chore: adds note regarding updating of hidden fields

---------

Co-authored-by: Jessica Boezwinkle <jessica@trbl.design>
2023-05-01 16:28:13 -04:00
Dan Ribbens
0ba22c3aaf fix: query on id throws 500 (#2587) 2023-05-01 14:36:26 -04:00
Seied Ali Mirkarimi
311f77dd25 chore: translations fa.json (#2590)
Co-authored-by: Dan Ribbens <dan.ribbens@gmail.com>
2023-05-01 13:52:27 -04:00
Dan Ribbens
8382faa0af fix: bulk operations result type (#2588) 2023-05-01 13:46:17 -04:00
Dan Ribbens
9c5107e86d fix: timestamp queries (#2583) 2023-05-01 13:45:51 -04:00
Elliot DeNolf
14a6b40bcc chore: bump swc-minify-webpack-plugin (#2571) 2023-05-01 11:50:10 -04:00
Jarrod Flesch
07506ae4d9 Merge branch 'master' of https://github.com/payloadcms/payload 2023-04-28 10:17:45 -04:00
Jarrod Flesch
6abcca1215 chore: adds github-stars md file 2023-04-28 10:17:39 -04:00
Wes DiMiceli
02f27f3de6 fix: resolve process/browser package in webpack config 2023-04-27 12:38:49 -04:00
Paul
fbf3a2a1b4 feat: Add new translation for romanian language (#2556)
Co-authored-by: Dan Ribbens <dan.ribbens@gmail.com>
2023-04-26 17:18:09 -04:00
Seied Ali Mirkarimi
c80f68af94 feat: add persian translations (#2553)
Co-authored-by: Dan Ribbens <dan.ribbens@gmail.com>
2023-04-26 16:12:11 -04:00
Perry
85b3d579d3 feat: supports collection compound indexes (#2529)
Co-authored-by: Perry Li <yuanping.li@moblab.com>
Co-authored-by: Dan Ribbens <dan.ribbens@gmail.com>
2023-04-26 11:11:01 -04:00
Michel v. Varendorff
bf6522898d feat: allow customizing the link fields (#2559) 2023-04-26 11:08:47 -04:00
Jarrod Flesch
ddb34c3d83 chore: recreates yarn lock file 2023-04-25 19:13:48 -04:00
James
010ea4305b chore(release): v1.7.2 2023-04-25 14:48:57 -04:00
James
c33b226660 chore: yarn 2023-04-25 14:41:26 -04:00
Martin Choutka
8670d387d6 Feat: blocks should only search on singular labels (#2479)
* Blocks now only search on singular labels

* Add types to getBlockLabel params

---------

Co-authored-by: Jarrod Flesch <jarrodmflesch@gmail.com>
2023-04-25 11:40:50 -04:00
Jarrod Flesch
a684b8f8bf chore: bumps eslint and related dev deps (#2561) 2023-04-25 11:09:31 -04:00
Jessica Boezwinkle
8270d8a228 docs: typo on REST API page 2023-04-25 12:33:33 +01:00
James
48941dce07 chore: merge conflicts 2023-04-24 17:11:23 -04:00
Jacob Fletcher
d6aa06a8af Merge pull request #2551 from payloadcms/fix/doc-drawer-access
fix: document drawer access control
2023-04-24 16:56:17 -04:00
Jacob Fletcher
7a0511610e chore: prevents document drawer from making get request when creating new 2023-04-24 16:22:10 -04:00
Jacob Fletcher
451ffcd982 chore: adds testing coverage for document drawer access control 2023-04-24 15:32:45 -04:00
Jarrod Flesch
fb2fcf3f66 chore: reduce complexity of block modal state tracking 2023-04-24 15:24:45 -04:00
Jarrod Flesch
b97a0881f1 Merge branch 'master' of https://github.com/payloadcms/payload 2023-04-24 15:23:43 -04:00
James
f9b3486ed1 Merge branch 'master' of github.com:payloadcms/payload 2023-04-24 15:16:54 -04:00
James
8cc900e11f chore: merge conflicts 2023-04-24 15:16:46 -04:00
Jarrod Flesch
904c365b75 Fix/2535 upload field access (#2550) 2023-04-24 15:16:12 -04:00
Jessica Chowdhury
362a4ccece Merge pull request #2533 from mauricewegner/feat/rich-text-blockquote
feat: add rich-text blockquote toggle, change quote node type to blockquote
2023-04-24 19:19:28 +01:00
PatrikKozak
750c6c32fa Merge pull request #2499 from AlessioGr/fix-readonly-styles
fix: read-only styles for textArea and richtext
2023-04-24 14:05:59 -04:00
Jacob Fletcher
439caf815f fix: document drawer access control #2545 2023-04-24 13:44:13 -04:00
Steven Thompson
0406548fe6 feat(imageresizer): add trim options (#2073)
* freat(imageresizer): add trim options

* fix(imageresizer): check for trimOptions config key

* feat: add trimOptions to original file upload, add test config

* chore: adjust sharp file ref

---------

Co-authored-by: Steven Thompson <steven@teamtailor.com>
Co-authored-by: Elliot DeNolf <denolfe@gmail.com>
2023-04-24 13:09:04 -04:00
Jessica Boezwinkle
4fb8b0fa28 chore: updates richText docs 2023-04-24 17:58:49 +01:00
James Mikrut
a0fd26602e Merge pull request #2051 from R0bson/master
Fix read of undefined error when autosave enabled
2023-04-24 12:51:56 -04:00
James
6d8eafd072 Merge branch 'master' of github.com:payloadcms/payload into R0bson/master 2023-04-24 12:29:03 -04:00
James
286193b4ab chore: cleanup 2023-04-24 12:27:00 -04:00
Jarrod Flesch
1808a9b663 Merge branch 'master' of https://github.com/payloadcms/payload 2023-04-24 12:19:01 -04:00
PatrikKozak
0683dd22dd Merge pull request #2539 from DennisSnijder/fix/multivalue-draggable
Multi value Select draggable enhancement
2023-04-24 11:58:18 -04:00
Elliot Lintz
7fcde11fa0 fix: prevent floating point number in image sizes (#1935) 2023-04-24 11:19:26 -04:00
Elliot DeNolf
90dab3c445 fix: prevent sharp toFormat settings fallthrough by using clone (#2547) 2023-04-24 10:42:29 -04:00
Jessica Boezwinkle
e942a18e5a chore: adds export and fields to upload example 2023-04-24 15:32:52 +01:00
James Mikrut
d397fe9af7 Merge pull request #2531 from payloadcms/feat/expose-id-in-condition
feat: exposes id in conditional logic
2023-04-24 09:59:51 -04:00
James Mikrut
cf6f0bfb8b Merge pull request #2532 from payloadcms/fix/#2521
fix: #2521, graphql AND not working with drafts
2023-04-24 09:59:44 -04:00
James Mikrut
b628a19e35 Merge pull request #2542 from payloadcms/fix/localized-field-nonlocalized-project
fix: query localized fields without localization configured
2023-04-24 09:56:24 -04:00
Dan Ribbens
4592d981a7 chore: fields test user config regression 2023-04-21 23:31:43 -04:00
Dan Ribbens
f6db81e431 docs: add user to field conditional logic 2023-04-21 22:55:23 -04:00
Dan Ribbens
274edc74a7 feat: add user to field conditional logic 2023-04-21 22:50:47 -04:00
Dan Ribbens
12edb1cc4b fix: query localized fields without localization configured 2023-04-21 21:12:30 -04:00
Dennis Snijder
269b203ef8 Changed background for multi values on select boxes, added is-dragging property to the multi value select and applied a z-index while dragging 2023-04-21 20:23:13 +02:00
mauricewegner
ed230a42e0 feat: add rich-text blockquote element, change quote node type to blockquote 2023-04-20 21:52:05 +02:00
Elliot DeNolf
c251801b1a chore: proper url path for docker deployment 2023-04-20 13:38:22 -04:00
Elliot DeNolf
8c242450e5 docs: fix docker link from getting started page 2023-04-20 13:31:56 -04:00
James
e67ca20108 fix: #2521, graphql AND not working with drafts 2023-04-20 09:31:29 -05:00
James
c117b32147 feat: exposes id in conditional logic 2023-04-20 09:20:02 -05:00
Dan Ribbens
1c5737b68a chore: add graphql variable to collection-graphql test (#2525) 2023-04-19 09:48:31 -04:00
Elliot DeNolf
2734b1d54a 0.3.26 2023-04-19 09:48:09 -04:00
Elliot DeNolf
82510c1574 feat: remove .npmrc from templates 2023-04-19 09:48:04 -04:00
James
db7acb4edd chore(release): v1.7.1 2023-04-18 17:28:25 -04:00
James
72be80abc4 fix: graphql variables not being passed properly 2023-04-18 17:19:15 -04:00
Teun Mooij
023719d775 feat: configuration extension points
* added custom config extension points

* Added custom field to documentation

* fix deeprequired issue
2023-04-18 15:28:42 -04:00
James
431b04075f Merge branch 'master' of github.com:payloadcms/payload 2023-04-18 14:54:10 -04:00
James
5e02985206 fix: adds 'use client' for next 13 compatibility 2023-04-18 14:53:59 -04:00
Elliot DeNolf
b80478d4b4 chore: remove release script to prevent accidental releases 2023-04-18 09:26:41 -04:00
James
fc7fa8debd chore: changelog formatting 2023-04-17 21:53:04 -04:00
James
a4fd0df69c chore(release): v1.7.0 2023-04-17 21:47:24 -04:00
James
cb9ca3e4c9 chore: type fix 2023-04-17 21:40:56 -04:00
James
5a6447805f Merge branch 'master' of github.com:payloadcms/payload 2023-04-17 21:38:12 -04:00
James
52ae6f06a1 feat: exposes new replaceState form api 2023-04-17 21:38:06 -04:00
James Mikrut
799699894c Merge pull request #2518 from payloadcms/fix/#2494-excess-versions
fix: #2494, reduces versions caused by reverting to published with autosave: true
2023-04-17 20:24:58 -04:00
James
e0c0b2fdf6 fix: #2494, reduces versions caused by reverting to published with autosave: true 2023-04-17 20:23:56 -04:00
James Mikrut
506bf646ba Merge pull request #2515 from payloadcms/feat/abstract-query-engine
Feat/abstract query engine
2023-04-17 19:54:49 -04:00
James Mikrut
e6c94c4f36 Merge pull request #2511 from payloadcms/docs/user-token
docs: adds info on payload secret encryption
2023-04-17 19:40:39 -04:00
James
3f9bbe90bd fix: incorrect version defaults 2023-04-17 19:37:22 -04:00
Elliot DeNolf
042e58ea29 feat: support email configuration in payload config (#2485)
* feat: support email configuration in payload config

* feat: set email defaults if no email config

* chore: leftover line from testing

* feat: add warning if email configure in both init and config
2023-04-17 17:21:28 -04:00
James
7fa27686bb chore: clarity to secret key usage 2023-04-17 17:02:07 -04:00
James
e3e2d513df Merge branch 'docs/user-token' of github.com:payloadcms/payload into docs/user-token 2023-04-17 17:00:46 -04:00
James
086feafcb7 chore: cleans duplicative logic 2023-04-17 16:56:38 -04:00
Quentin Beauperin
f9b8e2dbc5 fix: hides preview button until document is saved #2476 (#2477)
Co-authored-by: Jacob Fletcher <jacobsfletch@gmail.com>
2023-04-17 16:55:17 -04:00
Jacob Fletcher
5eafbefa9f Merge pull request #2507 from payloadcms/fix/preview-null
feat: supports null preview url #2472
2023-04-17 16:54:41 -04:00
James
cfadaf781c chore: merge master 2023-04-17 16:50:46 -04:00
Jacob Fletcher
dab5481fc5 Merge pull request #2513 from payloadcms/fix/sidebar-spacing-2478
fix: sidebar spacing #2478
2023-04-17 16:46:37 -04:00
James
1a681dd97b chore: revises outdated tests 2023-04-17 16:46:08 -04:00
Jacob Fletcher
2074f63333 chore: corrects typo in queries overview documentation (#2475) 2023-04-17 16:45:03 -04:00
Dan Ribbens
959a5d78c7 chore: test coverage queries 2023-04-17 16:43:00 -04:00
James
995054d46b chore: adds tests to validate queries 2023-04-17 16:25:07 -04:00
James
d187b809d7 feat: refactors buildQuery to rely on fields instead of mongoose 2023-04-17 16:08:44 -04:00
Dan Ribbens
81d69d1b64 feat: add admin.hidden to collections and globals (#2487) 2023-04-17 15:21:42 -04:00
Elliot DeNolf
faef4d5f8e docs: export default typo 2023-04-17 14:12:33 -04:00
Dan Ribbens
cd548a6e2d feat: replace deprecated express-graphql dependency (#2484) 2023-04-17 13:48:14 -04:00
Jacob Fletcher
78316d4ddc chore: updates global versions test config 2023-04-17 13:43:31 -04:00
Jacob Fletcher
a45ab8bd76 fix: corrects sidebar spacing in collection and global edit views #2478 2023-04-17 13:39:16 -04:00
Jessica Boezwinkle
cd861c22b7 docs: adds info on payload secret encryption 2023-04-17 18:22:03 +01:00
Alessio Gravili
15442a9cc7 fix: use correct locale when querying relationships for list view (#2438)
* chore: use correct locale when querying relationship for list view

* chore: make sure the relationships are re-queried when the locale changes

* chore: cleans up localization test ts-types

---------

Co-authored-by: Jarrod Flesch <jarrodmflesch@gmail.com>
2023-04-17 12:43:33 -04:00
Elliot DeNolf
3c04d43eae docs: add custom express middleware and logging example (#2509) 2023-04-17 11:52:09 -04:00
Jacob Fletcher
63e23bab89 chore: adds translations for error:previewing 2023-04-17 11:48:28 -04:00
Jacob Fletcher
e8a24fd2e5 feat: supports null preview url #2472 2023-04-17 11:41:00 -04:00
Elliot DeNolf
aee6ca05cc fix: proper height data for animated gifs (#2506) 2023-04-17 11:34:31 -04:00
Elliot Lintz
0f8051b577 fix: Clear blocks modal search input when closing the modal (#2501) 2023-04-17 11:26:36 -04:00
Elliot67
56d48885e1 :feat: Improve admin panel file's caching 2023-04-16 00:55:27 +02:00
Alessio Gravili
9d489ed57f actually no, background saves a few bytes 2023-04-15 19:48:28 +02:00
Alessio Gravili
ae88bade03 background => background-color 2023-04-15 19:47:31 +02:00
Alessio Gravili
4be43527e8 disable shadow for read-only textArea field 2023-04-15 19:46:06 +02:00
Alessio Gravili
823d0228c9 fix: read-only styles 2023-04-15 19:37:28 +02:00
James
2d0441a72e chore: begins work to build queries from fields instead of mongoose schema 2023-04-14 15:52:38 -04:00
Jessica Chowdhury
6ceb791891 fix: excess padding on textarea (#2488) 2023-04-13 11:56:04 -04:00
Jarrod Flesch
cd9e0400ac Merge branch 'master' of https://github.com/payloadcms/payload 2023-04-13 08:36:52 -04:00
PatrikKozak
b9a5bb3b8e Merge pull request #2289 from payloadcms/feat/form-builder-example
Feat/form builder example
2023-04-12 11:33:16 -04:00
PatrikKozak
1387ba9ae0 chore: updates form-builder-example nextjs README 2023-04-12 10:39:58 -04:00
PatrikKozak
3dd70483c6 Merge branch 'master' of https://github.com/payloadcms/payload into feat/form-builder-example 2023-04-11 10:49:31 -04:00
James Mikrut
ec2933c49a Merge pull request #2455 from payloadcms/chore/date-docs
chore: updates date field docs
2023-04-11 10:38:57 -04:00
James Mikrut
7eec16ee61 Merge pull request #2448 from AlessioGr/patch-4
docs: explain lifecycle of validate & beforeValidate
2023-04-11 10:38:24 -04:00
James Mikrut
ff89b8f782 Merge pull request #2464 from infonomic/docs/localization-warning
Docs/localization warning
2023-04-11 10:36:58 -04:00
James Mikrut
588a7d0a5b Update overview.mdx 2023-04-11 09:44:01 -04:00
Jessica Chowdhury
19ce0d79ef fix: increase line height for global title (#2465) 2023-04-10 15:42:11 -04:00
Jarrod Flesch
7f2c3d1d0a fix: uses docPermissions to show/hide x button on media collection doc fileDetails - #2428 2023-04-10 15:40:46 -04:00
Jarrod Flesch
13cc669e2c fix: prevents rendering of version actions when a user does not have permission 2023-04-10 15:38:49 -04:00
PatrikKozak
4d515a0d5b chore: improves text-area error rendering 2023-04-10 15:23:37 -04:00
Jacob Fletcher
11a6ce6d3a fix: properly awaits email send to catch potential errors #2444 (#2470) 2023-04-10 13:50:27 -04:00
Jarrod Flesch
048dd89bbc Merge branch 'master' of https://github.com/payloadcms/payload 2023-04-10 13:42:35 -04:00
Jarrod Flesch
48625e0e34 chore: general cleanup on useDocumentInfo hook usage 2023-04-10 13:27:29 -04:00
Anthony Bouch
013c96f0db docs: fixed sentance error in warning 2023-04-10 13:37:27 +07:00
Anthony Bouch
5fa8f69e10 docs: localization warning for existing data 2023-04-10 13:34:52 +07:00
Jessica Boezwinkle
fb89793703 docs: typo in date field and double link in textarea field 2023-04-06 11:35:15 +01:00
PatrikKozak
67098f7a3e chore: updates date field docs 2023-04-05 21:19:26 -04:00
James
299ae4fce5 chore(release): v1.6.32 2023-04-05 13:29:37 -04:00
James Mikrut
09ba58a432 Merge pull request #2454 from payloadcms/feat/only-use-sharp-if-required
feat: only uses sharp if required
2023-04-05 13:24:54 -04:00
James
f9f6ec47d9 feat: only uses sharp if required 2023-04-05 12:59:51 -04:00
Alessio Gravili
b76c25c9e7 docs: explain lifecycle of validate & beforeValida
Caused confusion here: https://discord.com/channels/967097582721572934/1091785894136139808/1092821186959921193

The initial expectation is that beforeValidate runs before any validation happens. However, it seems that client-side validation happens first nonetheless.

Please do check if this is 100% correct before merging.
2023-04-04 17:21:54 +02:00
James
192dac38f8 chore(release): v1.6.31 2023-04-04 08:25:51 -04:00
James
3a6acf322b fix: ensures select hasMany does not get mutated on patch operations 2023-04-04 08:16:10 -04:00
James
a9cd23a883 feat: improves required type accuracy 2023-04-03 22:30:24 -04:00
James
b6dec7af1c chore(release): v1.6.30 2023-04-03 16:14:20 -04:00
James Mikrut
546b7dc20a Merge pull request #2443 from payloadcms/fix/#2442-delete-local-type
fix: incorrect type local api using delete with where
2023-04-03 16:09:19 -04:00
James Mikrut
7cab14353d Merge pull request #2445 from payloadcms/fix/before-change-mutation
fix: originalDoc being mutated in beforeChange field hooks
2023-04-03 16:09:02 -04:00
James
888bbf28e0 fix: originalDoc being mutated in beforeChange field hooks 2023-04-03 15:27:59 -04:00
Dan Ribbens
de5ceb2aca fix: incorrect type local api using delete with where 2023-04-03 12:14:27 -04:00
Elliot DeNolf
0a2b02f206 1.0.0 2023-04-02 23:17:54 -04:00
Elliot DeNolf
41ee127de8 chore: update readme 2023-04-02 23:17:43 -04:00
James
9ddec59ddd 0.0.10 2023-04-02 18:12:24 -04:00
James
b72b22c628 fix: specifies region 2023-04-02 18:12:17 -04:00
Elliot DeNolf
a685f30245 0.0.6 2023-04-02 13:26:19 -04:00
Elliot DeNolf
173ec6f0f8 feat: set bucket region in s3 storage client 2023-04-02 13:26:05 -04:00
James
349ab5343e chore: update readme 2023-04-02 13:25:52 -04:00
Dan Ribbens
95719a978c chore(release): v1.6.29 2023-03-31 14:11:22 -04:00
Alessio Gravili
dd16bcffd2 chore: export formatListDrawerSlug (#2422) 2023-03-31 14:00:40 -04:00
Dan Ribbens
02410a0be3 fix: update and delete local API return types (#2434) 2023-03-31 13:58:54 -04:00
James
cf97adab7c 0.0.5 2023-03-29 12:07:16 -04:00
James
b6fc940f18 chore: mocks email provider 2023-03-29 12:07:06 -04:00
James
2fb685c0fe 0.0.4 2023-03-28 13:58:15 -04:00
James
54be5847f7 chore: only initializes email transport if running within payload cloud 2023-03-28 13:58:03 -04:00
James
bf4f37b514 0.0.3 2023-03-28 13:55:05 -04:00
James
9e577e7214 chore: refactors email transport 2023-03-28 13:54:57 -04:00
James
69185c06c2 0.0.2 2023-03-28 13:49:47 -04:00
James
e561016d07 Merge branch 'main' of github.com:payloadcms/plugin-cloud 2023-03-28 13:49:25 -04:00
James
9db4dadce3 feat: builds email transport w/ resend 2023-03-28 13:49:08 -04:00
James
14f2fbbce7 chore(release): v1.6.28 2023-03-28 11:26:30 -04:00
James
8eea0d6cf4 fix: potential memory leak with probe-image-size 2023-03-28 11:21:56 -04:00
James
752a657a4f chore(release): v1.6.27 2023-03-27 18:05:23 -04:00
James
0ca5851a3c chore: roll back PR #2396 2023-03-27 18:01:40 -04:00
James Mikrut
4bb0bdc4e6 Merge pull request #2397 from zerovox/patch-2
Fix documented imports in the custom element examples
2023-03-27 16:46:27 -05:00
James Mikrut
6865634a6e Merge pull request #2396 from pascalgn/fix/admin-hidden-fields
fix: hide fields with admin.hidden attribute
2023-03-27 16:45:41 -05:00
James
07eb8dd7d2 fix: #2355, select field not fully visible on small screens in certain scenarios 2023-03-27 17:43:18 -04:00
James
789537cc8c docs: previousValue in afterChange field hook, fixes #2383 2023-03-27 16:28:43 -04:00
James
8bbb1a16e3 docs: adds pagination docs, fixes #2376 2023-03-27 16:23:57 -04:00
James
0ff81573b5 Merge branch 'master' of github.com:payloadcms/payload 2023-03-27 16:18:18 -04:00
James
90284ff626 docs: adds more clarity regarding dotenv, fixes #2378 2023-03-27 16:17:51 -04:00
James Mikrut
e4fc1ff47c Merge pull request #2402 from payloadcms/fix/textarea-overlap
fix: textarea field overlap in UI
2023-03-27 15:01:37 -05:00
James
73c7ba4fe5 Merge branch 'master' of github.com:payloadcms/payload 2023-03-27 15:39:57 -04:00
James
72a8b1eebe fix: #2384, preserves manually set verified from admin UI 2023-03-27 15:39:01 -04:00
James Mikrut
c14122a007 Merge pull request #2406 from payloadcms/docs/date-field
docs: expand on date field properties
2023-03-27 14:11:40 -05:00
James
6ca12b1cc0 fix: restoring version did not correctly create new version from result 2023-03-27 14:59:50 -04:00
Elliot DeNolf
e8dc7d462e fix: make update typing a deep partial (#2407) 2023-03-27 12:39:12 -04:00
Jessica Boezwinkle
c2ca499516 docs: update date field 2023-03-27 17:08:20 +01:00
Jessica Boezwinkle
1c8cf24ba6 fix: textarea field overlap in UI 2023-03-27 10:09:53 +01:00
ts
49e4e0c6e7 Fix AfterNavLinks too 2023-03-26 11:24:35 -06:00
ts
bc2e843a83 Fix CustomDefault example imports 2023-03-26 11:16:28 -06:00
Pascal
ad25b096b6 fix: hide fields with admin.hidden attribute 2023-03-26 12:57:06 +02:00
James
1b85f194c5 1.6.26 2023-03-24 13:54:57 -04:00
James
cffc9971c4 fix: order of afterDelete hook 2023-03-24 13:46:22 -04:00
Dan Ribbens
3a6a97618c chore(release): v1.6.25 2023-03-24 12:37:21 -04:00
Dan Ribbens
38e917a3df fix: upload field select existing file (#2392) 2023-03-24 12:19:37 -04:00
Dan Ribbens
3825041393 chore(release): v1.6.24 2023-03-23 13:15:50 -04:00
Dan Ribbens
0fedbabe9e feat: bulk-operations (#2346)
Co-authored-by: PatrikKozak <patrik@trbl.design>
2023-03-23 12:33:13 -04:00
Elliot DeNolf
fa40d511c2 chore: .env.example update, dev debugger 2023-03-23 11:53:23 -04:00
Dan Ribbens
c5cb08c5b8 chore(release): v1.6.23 2023-03-22 14:29:45 -04:00
Jarrod Flesch
833899c893 chore: exposes AccessArgs export from payload/types 2023-03-22 13:22:11 -04:00
Jessica Chowdhury
1f480c4cd5 feat: exposes defaultSort property for collection list view (#2382) 2023-03-22 12:21:04 -04:00
Jarrod Flesch
b74a59947d chore: exports AccessArgs type for granular typing when imported 2023-03-22 11:58:23 -04:00
Dan Ribbens
21b8da7f41 fix: #2363 version tabs and select field comparisons (#2364) 2023-03-22 10:22:14 -04:00
fiona
fb2fd3e9b7 fix: DateField admin type (#2256) 2023-03-22 10:18:37 -04:00
Christian Gil
c0ff75c164 fix: Fix missing Spanish translations (#2372) 2023-03-22 10:17:47 -04:00
Dan Ribbens
e1a6e08aa1 fix: fallback to default locale showing on non-localized fields (#2316) 2023-03-22 10:16:54 -04:00
Jarrod Flesch
ac4cc5548a Update reproduction-guide.md 2023-03-21 23:40:18 -04:00
Jarrod Flesch
e0e1b09b77 chore: adds info in reproduction guide 2023-03-21 23:29:33 -04:00
Jarrod Flesch
fe86707c53 Chore/issue template (#2380) 2023-03-21 23:16:45 -04:00
Jarrod Flesch
2ed7e325b8 Issue template improvements (#2231) 2023-03-21 22:34:01 -04:00
PatrikKozak
e09ebfffa0 fix: allows base64 thumbnails (#2361) 2023-03-21 09:33:16 -04:00
Christian Gil
a8766d00a8 feat: adds title attribute to ThumbnailCard (#2368) 2023-03-20 23:15:03 -04:00
Jacob Fletcher
ef9606bf5b chore: retrofits formatUseAsTitle into ThumbnailCard #2270 (#2367) 2023-03-20 22:51:06 -04:00
Jacob Fletcher
10dd819863 fix: relationship field useAsTitle #2333 (#2350) 2023-03-20 22:21:49 -04:00
James
ebfb86866f chore: bumps payload 2023-03-20 13:32:06 -04:00
Jarrod Flesch
c14db9f94d chore: bumps slate and slate-react 2023-03-20 12:55:51 -04:00
Jarrod Flesch
c8594a7e7a chore: ensures code editor and loading shimmer use height from props 2023-03-20 12:06:36 -04:00
Jacob Fletcher
959567aade docs: middleware order #2327 (#2351) 2023-03-20 09:47:57 -04:00
Jarrod Flesch
7a8c7f3429 chore: ensures monaco editor loader is the same height as it's parent 2023-03-20 08:26:44 -04:00
James
4d578f1bfd fix: #2315 - deleting files if overwriteExistingFiles is true 2023-03-15 17:37:02 -04:00
Dan Ribbens
eabfd91655 chore(release): v1.6.22 2023-03-15 15:39:21 -04:00
Dan Ribbens
a4c6c4891e chore: update webpack dependencies 2023-03-15 15:28:16 -04:00
Dan Ribbens
11c15720d4 chore: update dependencies (#2326) 2023-03-15 14:36:56 -04:00
Franck Martin
24e92cfe69 add: missing french translations for rich-text link editor (#2322) 2023-03-15 14:12:02 -04:00
PatrikKozak
c0ab499a77 chore: adds max-width to confirmation message 2023-03-15 12:04:52 -04:00
PatrikKozak
abf74f1a90 Merge branch 'master' of https://github.com/payloadcms/payload into feat/form-builder-example 2023-03-15 11:58:48 -04:00
PatrikKozak
8e814b1edd chore: style refinements 2023-03-15 11:58:40 -04:00
James
4b243c9007 chore(release): v1.6.21 2023-03-15 10:34:47 -04:00
Jarrod Flesch
8d65ba1efd fix: hidden fields being mutated on patch (#2317) 2023-03-14 15:35:58 -04:00
Dan Ribbens
5f1b0c21eb chore(release): v1.6.20 2023-03-13 17:47:46 -04:00
Dan Ribbens
af164159fb fix: undefined point fields saving as empty object (#2313) 2023-03-13 17:34:51 -04:00
Elliot Lintz
39e303add6 fix: keep drop zone active when hovering inner elements (#2295) 2023-03-13 16:05:56 -04:00
Jarrod Flesch
9b5c889187 Merge pull request #2301 from payloadcms/fix/2270
fix: allow thumbnails in upload gallery to show useAsTitle value
2023-03-13 15:39:54 -04:00
Jarrod Flesch
dd9c15c672 chore: ensures block drawer thumbnail cards render a title properly 2023-03-13 15:26:10 -04:00
Jarrod Flesch
92e9602329 Merge pull request #2310 from payloadcms/fix/2292
fix: allows useListDrawer to work without collectionSlugs defined
2023-03-13 15:12:33 -04:00
James Mikrut
dbf976ee5e Merge pull request #2278 from wkillerud/fix/relationmap-undefined
fix: check relationships indexed access for undefined
2023-03-13 12:08:32 -07:00
James Mikrut
927b3fb6d3 Merge pull request #2291 from joas8211/feat/provide-refresh-permissions
feature: provide refresh permissions
2023-03-13 12:07:10 -07:00
James Mikrut
5e84ca3ce7 Merge pull request #2294 from Elliot67/fix/favicon-404
fix: Prevent browser initial favicon request
2023-03-13 12:05:26 -07:00
James Mikrut
3b2daa1992 Merge pull request #2296 from Firfi/master
chore: rename index.tsx of Pages collection of Preview example into index.ts
2023-03-13 12:04:54 -07:00
James Mikrut
a19c42f1bd fix: tooltip position #2108
fix: tooltip position #2108
2023-03-13 11:47:35 -07:00
PatrikKozak
fc82661b54 Merge pull request #2311 from payloadcms/fix/search-row-titles
Fix/search row titles
2023-03-13 14:46:09 -04:00
James Mikrut
4e95a39132 Merge pull request #2306 from payloadcms/fix/pagination-global-admin-type
Fix/pagination global admin type
2023-03-13 11:38:23 -07:00
PatrikKozak
5a637a8b09 Merge branch 'master' of https://github.com/payloadcms/payload into fix/search-row-titles 2023-03-13 14:30:05 -04:00
PatrikKozak
75e776ddb4 fix: flattens title fields to allow seaching by title if title inside Row field 2023-03-13 14:29:59 -04:00
Jessica Boezwinkle
e1553c2fc8 fix: allows useListDrawer to work without collectionSlugs defined 2023-03-13 18:23:58 +00:00
James Mikrut
db6d35bc03 Merge pull request #2308 from payloadcms/fix/#2265
fix: cancels existing fetches if new fetches are started
2023-03-13 11:19:45 -07:00
James
d5bf957c8e chore: only throws errors in usePayloadAPI if signal is not aborted 2023-03-13 13:54:58 -04:00
Jarrod Flesch
566c45b0b4 fix: ensures documentID exists in doc documentDrawers (#2304) 2023-03-13 12:06:07 -04:00
Jarrod Flesch
39ee306630 chore: adds duplicate caret to track intersection with 2023-03-13 12:04:26 -04:00
PatrikKozak
748475f785 Merge branch 'master' of https://github.com/payloadcms/payload into fix/pagination-global-admin-type 2023-03-13 11:41:58 -04:00
PatrikKozak
bf9929e9a9 fix: removes pagination type from top level admin config types 2023-03-13 11:41:50 -04:00
Jarrod Flesch
9aa1b8ec47 Merge remote-tracking branch 'origin/master' into fix/tooltip-position 2023-03-13 11:28:41 -04:00
James
ccc92fdb75 fix: cancels existing fetches if new fetches are started 2023-03-13 11:22:10 -04:00
James
657aa65e99 fix: removes forced require on array, block, group ts 2023-03-13 11:12:11 -04:00
James
abebde6b12 feat: exposes useTheme hook 2023-03-13 10:58:02 -04:00
Elliot Lintz
1df3d149e0 feat: #2280 Improve UX of paginator (#2293) 2023-03-13 10:12:41 -04:00
James Mikrut
8832d08a22 Merge pull request #2286 from payloadcms/fix/ui-columns
fix: renders presentational table columns
2023-03-13 06:52:07 -07:00
Jacob Fletcher
51dc66b5d9 poc: tooltip position #2108 2023-03-13 09:27:08 -04:00
Jessica Boezwinkle
aae6d716e5 fix: allow thumbnails in upload gallery to show useAsTitle value 2023-03-13 11:29:56 +00:00
Igor Loskutov
32b38439e3 chore: rename index.tsx of Pages collection of Preview example into index.ts 2023-03-12 16:08:50 +07:00
Elliot67
fd8ea88488 fix: Prevent browser initial favicon request 2023-03-12 00:09:07 +01:00
Jesse Sivonen
8d1df96637 docs: add refreshPermissions 2023-03-11 17:18:52 +02:00
Jesse Sivonen
c1f205c2cf test: refresh-permissions 2023-03-11 16:56:22 +02:00
Jesse Sivonen
e9c796e42c feat: provide refresh permissions for auth context 2023-03-11 16:56:01 +02:00
James
be853a0657 chore: little cleanup 2023-03-11 00:01:59 -08:00
James
c880342099 chore: streamlines env var naming 2023-03-10 23:39:04 -08:00
James
d09bbd2171 chore: initial build 2023-03-10 23:30:00 -08:00
James
c1823f719a chore: init 2023-03-10 22:20:27 -08:00
PatrikKozak
b459277c72 feat: updates form-builder example READMEs 2023-03-10 12:03:00 -05:00
PatrikKozak
28ecb0c5eb feat: migrates form builder example nextjs to examples 2023-03-10 11:50:41 -05:00
PatrikKozak
1356b4db40 chore: migrates form builder example cms to examples 2023-03-10 10:55:31 -05:00
Jacob Fletcher
4e1748fb8a fix: renders presentational table columns 2023-03-10 08:59:34 -05:00
William Killerud
959f01739c fix: check relationships indexed access for undefined 2023-03-09 15:09:09 +01:00
James
85dee9a7bc chore(release): v1.6.19 2023-03-08 16:40:05 -08:00
James
057522c5bd fix: ensures nested fields save properly within link, upload rte 2023-03-08 16:36:46 -08:00
James
9a8c6deafb chore(release): v1.6.18 2023-03-08 16:17:38 -08:00
James
7daddf864d fix: #2272, rich text within blocks causing crash on reorder 2023-03-08 16:07:08 -08:00
James
ef826c88ec fix: allows swc/register to transpile files above current workspace 2023-03-08 15:23:38 -08:00
Jarrod Flesch
42fbd96040 Fix/2254 swap relationship (#2261) 2023-03-07 14:27:44 -05:00
Jacob Fletcher
889a55ad99 Merge pull request #2260 from payloadcms/fix/table-column-prefs
fix: column preferences
2023-03-07 14:08:09 -05:00
Jacob Fletcher
3c205bcaba chore: writes e2e test for drawer column retention 2023-03-07 13:52:47 -05:00
Jacob Fletcher
a1ddd2e2e3 fix: table column preferences sync 2023-03-07 13:49:35 -05:00
Jacob Fletcher
5a07b788c7 Merge pull request #2258 from payloadcms/fix/table-columns-2257
Fix/table columns 2257
2023-03-07 10:53:05 -05:00
Jacob Fletcher
5d84a98d7b chore: writes e2e test for duplicative base fields 2023-03-07 10:34:21 -05:00
Jacob Fletcher
b92ad4a2d6 chore: writes e2e test for row fields as table columns 2023-03-07 10:34:12 -05:00
Jacob Fletcher
b10e842e89 fix: renders row fields as table columns #2257 2023-03-07 10:24:27 -05:00
James
bc7d4d8f0e chore(release): v1.6.17 2023-03-06 17:30:25 -05:00
James Mikrut
12c0e09c65 Merge pull request #2248 from payloadcms/fix/2218
Ensure empty objects are preserved within fields with sub schemas
2023-03-06 17:24:40 -05:00
Jarrod Flesch
c447421b05 chore: fixes outdated json field test 2023-03-06 17:06:37 -05:00
James Mikrut
0779f8d73d feat: improves ui performance with thousands of fields
* chore: progress to ui-performance

* chore: removes block load testing
2023-03-06 16:46:07 -05:00
Jarrod Flesch
ace032ef89 fix: minimize not set to false on all field type schemas 2023-03-06 16:08:03 -05:00
Jarrod Flesch
c5f9fa0d97 chore: adds test to empty json objects REST api 2023-03-06 12:27:26 -05:00
James Mikrut
ada9a89cd2 Merge pull request #2237 from payloadcms/feat/relationship-min-max-validation
feat: adds min and max options to relationship with hasMany
2023-03-06 11:48:20 -05:00
James Mikrut
27e538c8c6 Merge pull request #2216 from davidko604/versionsAllowDiskUse
Add allowDiskUse parameter for aggregate query for draft versions
2023-03-06 11:47:31 -05:00
James Mikrut
8bfe63d5b2 Merge pull request #2246 from payloadcms/fix/#2243
fix: Validate typescript signature
2023-03-06 11:39:27 -05:00
James Mikrut
65bbf54b4a Merge pull request #2223 from no-heroes/fix/chaining-hooks
Fix: when chaining hooks, afterRead does not take previous doc but original doc
2023-03-06 11:27:25 -05:00
James
8d31ed6d39 fix: Validate typescript signature 2023-03-06 11:24:36 -05:00
Dan Ribbens
a7f72babe1 test: fix validation options reuse 2023-03-04 16:57:02 -05:00
Dan Ribbens
87a60325cf docs: adds min and max options to relationship with hasMany 2023-03-04 16:23:28 -05:00
Dan Ribbens
0f38a0dcf6 feat: adds min and max options to relationship with hasMany 2023-03-04 16:12:07 -05:00
Jacob Fletcher
812ab9f868 fix: conditionally renders draggable pill (#2224) 2023-03-03 11:36:53 -05:00
Danilo Silva
ea893671d5 chore: refines portuguese translations (#2171) 2023-03-03 11:36:16 -05:00
Jacob Fletcher
474a3cbf7a fix: removes duplicative fields from table columns #2221 (#2226) 2023-03-03 11:35:38 -05:00
Jacob Fletcher
066f5f6d2c fix: versions table (#2235) 2023-03-03 11:23:16 -05:00
Richard van Heuven van Staereling
c661ac2e8a fix: pass result of previous hook into next hook 2023-03-02 17:05:25 +01:00
Richard van Heuven van Staereling
cb005d58eb chore: adds test cases for chaining hooks 2023-03-02 17:05:08 +01:00
Richard van Heuven van Staereling
6c82c1e04f chore: adds collection type to test chaining hooks 2023-03-02 17:04:37 +01:00
davidko604
feebf203b8 Update docs 2023-03-01 12:08:18 -08:00
davidko604
40033c64fb Add allowDiskUse parameter to draft versions aggregate query 2023-03-01 11:27:31 -08:00
Dan Ribbens
ffdbe3c965 Merge branch 'master' of github.com:payloadcms/payload 2023-03-01 12:12:32 -05:00
Dan Ribbens
6e740dbfc1 chore: changelog v1.6.16 2023-03-01 12:11:57 -05:00
Jessica Chowdhury
f6eb0202fe fix: virtual fields example (#2214) 2023-03-01 12:02:24 -05:00
Dan Ribbens
38aa4c45c4 chore: cleanup list unused list files (#2211) 2023-02-28 15:58:15 -05:00
Dan Ribbens
122aa94bdb chore: fix yaml indent (#2210) 2023-02-28 15:21:43 -05:00
PatrikKozak
5aa203d020 fix: redirects example (#2209) 2023-02-28 14:54:13 -05:00
James
aac066d609 chore: version bump 2023-02-28 14:10:37 -05:00
James
70fe14f7af Merge branch 'master' of github.com:payloadcms/payload 2023-02-28 14:10:21 -05:00
James
de2ae5ec15 chore: ensures data is passed to buildStateFromSchema 2023-02-28 14:06:13 -05:00
Jarrod Flesch
45b36ce56d chore: improves empty object json field tests (#2207) 2023-02-28 10:51:38 -05:00
James Mikrut
f7a2ae7e55 Merge pull request #2206 from payloadcms/fix/2189-empty-json
fix: allows empty objects to be retained in db
2023-02-28 10:45:46 -05:00
Jarrod Flesch
0247e2d106 fix: allows empty objects to be retained in db 2023-02-28 10:40:21 -05:00
James Mikrut
237aff9c85 Merge pull request #2200 from payloadcms/fix/#2179
fix: #2179, async default values resetting form state
2023-02-28 09:52:00 -05:00
James Mikrut
51911cdfdf Merge pull request #2196 from payloadcms/fix/#2193-globals-publish
fix: globals publish after draft
2023-02-28 09:51:26 -05:00
James
f64b2b1321 chore: adds back 14.x 2023-02-28 09:47:46 -05:00
James
8caedb19dd Merge branch 'master' of github.com:payloadcms/payload into fix/#2179 2023-02-28 09:47:20 -05:00
Jacob Fletcher
e2c65e3fa5 feat: drag-and-drop columns (#2142) 2023-02-28 09:35:03 -05:00
Jacob Fletcher
523d9d4952 fix: renders rte upload drawer #2178 2023-02-28 09:08:16 -05:00
Dan Ribbens
4cd228a367 chore: split getLatestEntityVersion to separate globals and collections 2023-02-28 09:03:28 -05:00
Dan Ribbens
44651e6ecc fix: globals publish after draft 2023-02-28 09:03:28 -05:00
Elliot DeNolf
b0b82e1f57 ci: playwright artifacts (#2201)
* ci: playwright report

* chore: update playwright report location

* ci: trace file only on failure

* ci: reduce test timeout

* test: up the rateLimit
2023-02-27 21:58:11 -05:00
James
619b49f6f1 chore: attempts to remove node 14.x 2023-02-27 18:18:10 -05:00
James Mikrut
ce3bb96ff7 Merge pull request #2198 from payloadcms/fix/drafts-enabled-validation
fix: skips field validation on submit if skipValidation is set to true
2023-02-27 17:04:05 -05:00
James
a4de51adaa fix: #2179, async default values resetting form state 2023-02-27 17:01:15 -05:00
James Mikrut
861a0fdff9 Merge pull request #2199 from payloadcms/fix/#2150-nth-level-querying
fix: #2150, can now query on N number of levels deep
2023-02-27 16:33:49 -05:00
James Mikrut
c1e8b20f1b Merge pull request #2197 from payloadcms/fix/animated-image-uploads
Fix/animated image uploads
2023-02-27 16:27:07 -05:00
James
ac54b11f9d fix: #2150, can now query on N number of levels deep 2023-02-27 16:17:44 -05:00
PatrikKozak
cf17760735 fix: skips field validation on submit if skipValidation is set to true 2023-02-27 15:35:52 -05:00
PatrikKozak
31488ffdd6 Merge branch 'master' of https://github.com/payloadcms/payload into fix/animated-image-uploads 2023-02-27 15:09:13 -05:00
PatrikKozak
8c4f890af0 fix: properly resizes animated images (#2181) 2023-02-27 15:09:06 -05:00
Elliot DeNolf
5ac436e184 fix: properly set req.payload on forgotPassword in local API (#2194) 2023-02-27 14:31:25 -05:00
Dan Ribbens
387cec9838 fix: clear relationship value (#2188) 2023-02-27 12:44:12 -05:00
Dan Ribbens
a3cc3c3429 fix: version comparison view errors on old select value (#2163) 2023-02-27 12:43:26 -05:00
James Mikrut
bf620fe16f Merge pull request #2172 from philipgher/patch-1
fix: add a mention to the possibility of accessing nested properties
2023-02-27 11:58:51 -05:00
zsoltsimon97
ebd16e8fdf feat: Add Hungarian Translations (#2169)
Co-authored-by: Zsolt Simon <zsolt.simon@telcotrend.hu>
2023-02-27 09:21:42 -05:00
philipgher
ee06515ca9 Update overview.mdx 2023-02-23 22:01:55 +01:00
James
d0abf19037 chore: skips flaky test 2023-02-22 14:03:33 -05:00
James
0d6a27cc69 chore: adds further safety to flaky test 2023-02-22 13:42:35 -05:00
James
164b868dc2 chore: attempts to resolve flaky test 2023-02-22 13:02:40 -05:00
James
c87fd2b649 fix: ensures sorting on drafts works in all cases 2023-02-22 11:09:01 -05:00
James
c4cc283bcd chore(release): v1.6.15 2023-02-21 18:18:32 -05:00
James
cbfabeeb9d chore: fixes bad import 2023-02-21 17:46:56 -05:00
James Mikrut
e84c43a4f6 Merge pull request #2158 from payloadcms/fix/#2092-use-facet-error
fix: mongoose connection error with useFacet
2023-02-21 17:36:49 -05:00
James
83720c8277 chore: adds 'use client' to withCondition 2023-02-21 17:31:59 -05:00
Dan Ribbens
5888fb9b3f fix: mongoose connection error with useFacet 2023-02-21 14:29:42 -05:00
Dan Ribbens
985eb59893 chore(release): v1.6.14 2023-02-21 10:07:11 -05:00
Dan Ribbens
2a4db3896e fix: #2117 collection pagination defaultLimit (#2147) 2023-02-21 09:41:34 -05:00
James Mikrut
9ea1512df9 Merge pull request #2149 from payloadcms/fix/#2148
fix: #2148, adds queryHiddenFields property to find operation
2023-02-20 21:16:27 -05:00
James
15b6bb3d75 fix: #2148, adds queryHiddenFields property to find operation 2023-02-20 21:15:06 -05:00
Christian Gil
d9d2b6c383 docs: Update uploads example based on Sharp types (#2129) 2023-02-20 14:29:28 -05:00
Dan Ribbens
8a8c392095 fix: #2091 admin translations for filter operators (#2143) 2023-02-20 13:54:43 -05:00
Dan Ribbens
b4a20741b2 fix: useFacet config option to disable $facet aggregation (#2141) 2023-02-20 13:54:12 -05:00
Dan Ribbens
007d38be04 chore: locking dependency for compatibility with node 16.x (#2146) 2023-02-20 13:52:50 -05:00
Jessica Chowdhury
40224ed1bc fix: checks locale is valid for monaco code editor (#2144) 2023-02-20 13:52:04 -05:00
Elliot DeNolf
f3f246848a docs: add example local api script 2023-02-20 11:09:22 -05:00
James Mikrut
a6917d8952 Merge pull request #2124 from jmas/patch-2
Fix table in `docs/admin/overview.mdx`
2023-02-20 10:29:16 -05:00
James Mikrut
a60b5acb65 Merge pull request #2140 from payloadcms/fix/#2131
fix: #2131, doesn't log in unverified user after resetting password
2023-02-19 22:12:47 -05:00
James
753de21b12 chore: improves reset password / verification workflow 2023-02-19 22:11:28 -05:00
James
3eb85b1554 fix: #2131, doesn't log in unverified user after resetting password 2023-02-19 22:06:39 -05:00
James Mikrut
7109bfde52 Merge pull request #2139 from payloadcms/fix/#2096
fix: #2096, allows custom ts paths with payload generate:types
2023-02-19 21:37:52 -05:00
James
686a616b4c fix: #2096, allows custom ts paths with payload generate:types 2023-02-19 21:37:10 -05:00
Elliot DeNolf
7e8869858c fix: generate proper json field type according to rfc (#2137) 2023-02-19 21:31:07 -05:00
James Mikrut
a16bad0cc0 Merge pull request #2136 from payloadcms/fix/#2134-rich-text-link-population
fix: #2134, allows links to be populated without having relationship or upload enabled
2023-02-19 21:18:27 -05:00
James
32a0778fc4 fix: #2134, allows links to be populated without having relationship or upload enabled 2023-02-19 21:17:25 -05:00
Jacob Fletcher
6a7663beb5 fix: removes custom header and gutter from rte link drawer #2120 (#2135) 2023-02-19 21:07:32 -05:00
Elliot DeNolf
06fc8cbf4d chore: sizes property optional on create graphql resolver 2023-02-19 21:04:41 -05:00
Daniel Söderling
79d047e64f fix: sizes property optional on upload (#2066)
* omit 'sizes' when uploading files from the inferred collection type

* cleanup

* optional sizes on create and update, instead of omitted
2023-02-19 21:02:37 -05:00
James
ab27b1bfd1 chore(release): v1.6.13 2023-02-18 11:01:39 -05:00
James
42ebf68932 fix: #2125, ensures createdAt and updatedAt are returned in update operations 2023-02-18 10:56:09 -05:00
James
5c5f1f9735 chore: inaccurate group field docs, fixes #2118 2023-02-18 09:33:31 -05:00
Alex Maslakov
3965613154 Fix table in docs/admin/overview.mdx
Found that table in docs Admin > Overview section is broken. I prepared a small fix.
2023-02-18 02:14:11 +02:00
James
8ac0906ff0 chore(release): v1.6.12 2023-02-17 17:07:34 -05:00
James
62879a5bc4 Merge branch 'master' of github.com:payloadcms/payload 2023-02-17 16:59:22 -05:00
James
ff4d1f6ac2 feat: separates admin root component from DOM render logic 2023-02-17 16:45:54 -05:00
James
1930bc260e fix: ensures only valid fields can be queried on 2023-02-17 16:45:18 -05:00
Jacob Fletcher
fa32c27716 feat: adds gql auth example (#2115) 2023-02-16 22:31:41 -05:00
Jacob Fletcher
ebdfd8f69a chore: adds @payloadcms/eslint-config to examples (#2112) 2023-02-16 15:10:41 -05:00
Jessica Chowdhury
2af0c04c8a feat: virtual fields example (#1990) 2023-02-16 10:26:25 -05:00
Jacob Fletcher
cfb3632cbc Merge pull request #2107 from payloadcms/feat/auth-example
feat: auth example
2023-02-16 10:24:36 -05:00
Jacob Fletcher
c076c77db4 feat: auth example 2023-02-15 18:49:08 -05:00
James
f9bcf359a1 chore(release): v1.6.11 2023-02-15 14:52:08 -05:00
James
bf2e5c70f8 Merge branch 'master' of github.com:payloadcms/payload 2023-02-15 14:46:29 -05:00
James
ad3141dc00 chore: updates types for passing async config to InitOptions 2023-02-15 14:46:21 -05:00
Jacob Fletcher
e0eb93bf83 Merge pull request #2105 from payloadcms/example/preview
feat: adds preview example
2023-02-15 14:39:34 -05:00
Jacob Fletcher
7a99b2544a chore: reviews preview example 2023-02-15 14:23:09 -05:00
Jarrod Flesch
2089136671 chore: improves test for max versions (#2102) 2023-02-15 13:10:07 -05:00
Jacob Fletcher
e36f775273 chore: writes test for existing upload deletion (#2103) 2023-02-15 11:39:13 -05:00
Jacob Fletcher
060c3805e5 fix: existing upload deletion #2098 (#2101) 2023-02-15 10:15:30 -05:00
Dan Ribbens
3c3e1f17ef chore(release): v1.6.10 2023-02-14 09:53:16 -05:00
James
8abc9cfbc7 Merge branch 'master' of github.com:payloadcms/payload 2023-02-14 09:40:40 -05:00
James
7bb0984a12 fix: validate type 2023-02-14 09:40:18 -05:00
Dan Ribbens
586b25a54c fix: #2077 useAPIKey UI missing with disableLocalStrategy (#2084) 2023-02-13 22:33:01 -05:00
PatrikKozak
c655ceac9e chore: richtext p tag reference (#2085) 2023-02-13 22:30:04 -05:00
Lucas Levin
d4c1e0deb0 docs: date field pickerAppearance defaults (#2086) 2023-02-13 21:46:30 -05:00
PatrikKozak
e2ed0ccaea chore: removes leftover p tag reference (#2081) 2023-02-13 16:27:18 -05:00
Jarrod Flesch
4999fbaee6 fix: globals not saving drafts unless published first (#2082) 2023-02-13 16:25:43 -05:00
Jarrod Flesch
f80ad26081 Merge pull request #2079 from payloadcms/fix/2064-createdAt-versions
fix: ensures versions createdAt matches the original doc
2023-02-13 15:30:04 -05:00
Christian Gil
b4a7e912b2 fix: Use the user's AdminUI locale for the DatePicker (#2046) (#2057)
Co-authored-by: Dan Ribbens <dan.ribbens@gmail.com>
2023-02-13 14:47:26 -05:00
PatrikKozak
0a87f106ec feat: preview example (#1950) 2023-02-13 13:42:28 -05:00
Jacob Fletcher
b0a66ce6d8 chore: e2e tests for relationship default value (#2080) 2023-02-13 12:58:53 -05:00
Jarrod Flesch
8c7e37c56a fix: ensures versions createdAt matches the original doc 2023-02-13 11:03:12 -05:00
Jacob Fletcher
9f30553813 feat: async plugins (#2030)
* feat: async plugins

* wip: async config

* fix: async config
2023-02-13 10:46:55 -05:00
James Mikrut
11532857d2 Merge pull request #2070 from payloadcms/feat/rel-add-new
feat: allows control over relationship add new button
2023-02-13 10:43:56 -05:00
James Mikrut
c975a6c8ba Merge pull request #2061 from payloadcms/feat/export-more-errors
feat: export more errors
2023-02-13 09:30:08 -05:00
Jacob Fletcher
6096044fe0 feat: allows control over relationship add new button 2023-02-13 00:23:31 -05:00
Elliot DeNolf
3ebe7b4a7e docs: add docker link to deployment toc 2023-02-11 14:05:57 -05:00
Elliot DeNolf
a1fd1e07f0 docs: add an initial Basics section to talk about the dist and build directories 2023-02-11 14:03:36 -05:00
Jarrod Flesch
9029dab015 Merge pull request #2050 from behilam/fix/update-document-type
fix: Document type in collection update request handler
2023-02-10 22:41:09 -05:00
Jarrod Flesch
e9e084d933 Merge pull request #2059 from charkour/patch-2
docs: updates radio.mdx for better readability and consistency
2023-02-10 22:38:34 -05:00
Jarrod Flesch
93129f8989 Merge pull request #2060 from ChrisGV04/fix/es-translations
fix: add missing Spanish translations and fix typos
2023-02-10 22:34:43 -05:00
Jarrod Flesch
7e676b4b8d Merge pull request #2062 from nikolicstjepan/master
fix typo in Croatian translation
2023-02-10 22:33:08 -05:00
Stjepan Nikolic
f9cb02026e fix typo in croatian translation 2023-02-10 21:03:43 +01:00
Elliot DeNolf
3a2a41d2b6 feat: export more errors 2023-02-10 14:21:38 -05:00
James
ee658a6e9b chore(release): v1.6.9 2023-02-10 12:38:51 -05:00
James
b7d56b6fce chore: manually bumps payload version 2023-02-10 12:29:11 -05:00
James
d2254c1255 chore: allows buildPath to be defined in config validation 2023-02-10 12:22:06 -05:00
James
4d259a69f2 feat: allows customization of the folder used to serve admin bundled files in production 2023-02-10 12:20:46 -05:00
James
8c50ae6071 Merge branch 'master' of github.com:payloadcms/payload 2023-02-10 12:16:53 -05:00
James
40ecd206e6 Merge branch 'fix/max-versions' of github.com:payloadcms/payload 2023-02-10 12:08:03 -05:00
Jarrod Flesch
9fed4f1c49 chore: simplifies query 2023-02-10 12:07:45 -05:00
James
ecac445fb2 Merge branch 'fix/max-versions' of github.com:payloadcms/payload 2023-02-10 12:07:40 -05:00
Christian Gil
c4742e5c30 fix: Add missing Spanish translations and fix typos 2023-02-10 11:06:13 -06:00
Charles Kornoelje
55aec55ef2 Update radio.mdx 2023-02-10 11:54:30 -05:00
Jarrod Flesch
8e95383afe chore: accounts for globals in filter query 2023-02-10 11:53:57 -05:00
Charles Kornoelje
e072dad30c Update radio.mdx
Matches the pattern in the documentation of `title = {label} Field`
2023-02-10 11:50:51 -05:00
Jarrod Flesch
30688bbe41 fix: adds query constraint to ensureMaxVersions query 2023-02-10 11:37:36 -05:00
Robert
4c22b2a7d9 Fix read of undefined error when autosave enabled
Fixes ERROR (payload): TypeError: Cannot read properties of undefined (reading '<field.name>')
    at promise (...\payload\src\fields\hooks\afterChange\promise.ts:68:23)
    at ...\payload\src\fields\hooks\afterChange\traverseFields.ts:31:26
    at Array.forEach (<anonymous>)
    at traverseFields (...\payload\src\fields\hooks\afterChange\traverseFields.ts:30:10)
    at promise (...\payload\src\fields\hooks\afterChange\promise.ts:154:27)
    at ...\payload\src\fields\hooks\afterChange\traverseFields.ts:31:26
    at Array.forEach (<anonymous>)
    at traverseFields (...\payload\src\fields\hooks\afterChange\traverseFields.ts:30:10)
    at promise (...\payload\src\fields\hooks\afterChange\promise.ts:170:27)
    at ...\payload\src\fields\hooks\afterChange\traverseFields.ts:31:26
2023-02-09 22:26:26 +01:00
Elliot DeNolf
39686e3f05 0.3.25 2023-02-09 14:55:40 -05:00
Elliot DeNolf
482973559d feat: add media collection to blog template 2023-02-09 14:55:16 -05:00
Behilam
d5cd9709f7 fix: document type in update request handler 2023-02-09 12:27:08 -05:00
Jonas Voisard
dddbec2682 fix: translation of "or" -> "ou" in french (#2047)
## Description

Fixed a wrong translation

- I have read and understand the CONTRIBUTING.md document in this repository

## Type of change
- fix of tiny error of translation
2023-02-09 08:22:39 -05:00
James
cfc5533920 chore(release): v1.6.7 2023-02-08 14:19:49 -05:00
James Mikrut
caa4c07e3e Merge pull request #2042 from payloadcms/fix/2040-drawer-initial-state
fix: missing state in document drawers when opened
2023-02-08 09:33:27 -05:00
Jarrod Flesch
e6ac872b0d fix: drawer state was not set when opened 2023-02-08 08:36:06 -05:00
James
d42b5d4989 chore(release): v1.6.6 2023-02-07 16:06:26 -05:00
James Mikrut
6d72d66656 Merge pull request #2035 from payloadcms/fix/#1887-dataloader-infinite-loop
fix: #1887, dataloader rich text population infinite loop
2023-02-07 14:50:33 -05:00
James
3a8e730b9c chore: typo in tests 2023-02-07 14:40:33 -05:00
James
ac2e174643 fix: #1887, dataloader rich text population infinite loop 2023-02-07 14:35:37 -05:00
Elliot DeNolf
777794583c docs: add tsconfig aliasing to generating types docs 2023-02-07 14:23:58 -05:00
James
cff6608996 chore: updates date field tests 2023-02-07 13:44:09 -05:00
James
972dd3e174 Merge branch 'fix/datepicker-i18n' of github.com:payloadcms/payload 2023-02-07 13:20:48 -05:00
Jessica Boezwinkle
3bc67e338b chore: updates dateTimeFormat 2023-02-07 17:42:56 +00:00
James
4cd2c8c1d9 chore(release): v1.6.5 2023-02-07 12:38:21 -05:00
Jacob Fletcher
224b68dbf2 chore: fixes failing uploads e2e test 2023-02-07 12:32:08 -05:00
Jarrod Flesch
851983af15 Fix: #1991 - enableRichTextRelationships breaking unrelated list drawers (#2000)
* fix: adds RTE provider, to allow for disabledRTE relationships from breaking other drawers

* chore: updates hook name

* chore: simplifies list drawer rendering

* chore: simplify types

* chore: adds arg to determine what listType drawer to render

* chore: renames listType to contentType, fix upload field drawer

* chore: requires collectionSlugs in useListDrawer

* chore(test): adds tests for list drawers, relationships and uploads

* chore: formatting

* chore: cleans up types, collectionSlugs are required for useListDrawer

* chore: removes RichTextProvider

* chore: removes hoc in favor of FC hoc

* chore: fixes fc hoc
2023-02-07 11:57:23 -05:00
James Mikrut
96a90bbca4 Merge pull request #1978 from payloadcms/fix/1897
fix: removes old media when replaced and re-renders on save
2023-02-07 11:53:05 -05:00
James Mikrut
922887fe77 Merge pull request #2034 from payloadcms/hotfix/max-versions
fix: max versions incorrectly sorting and removing
2023-02-07 11:48:00 -05:00
James Mikrut
0bebb4e7ef Merge pull request #2029 from payloadcms/fix/#1997-absolute-imports-css
fix: webpack css-loader resolve urls
2023-02-07 11:47:22 -05:00
Jarrod Flesch
2e4f7ab35c fix: max versions incorrectly sorting, causing incorrect versions to be held onto 2023-02-07 11:29:25 -05:00
Dan Ribbens
a828ec7c3c chore: set webpack name from test suite for caching (#2027) 2023-02-07 10:38:25 -05:00
Jarrod Flesch
a4514c790b Merge pull request #2025 from payloadcms/fix/checkbox-focus
fix: corrects keyboard accessibility for checkbox field
2023-02-07 08:56:14 -05:00
Jarrod Flesch
b162285f13 Merge pull request #2021 from payloadcms/fix/radio-focus
fix: allows radio input to be keyboard accessible
2023-02-07 08:48:38 -05:00
Jarrod Flesch
bdb2f8939a chore: removes input from tab flow with css 2023-02-07 08:44:31 -05:00
Jarrod Flesch
66465897a9 chore: removes extra margin from hidden radio inputs 2023-02-07 08:34:21 -05:00
Jessica Boezwinkle
43e9c32ec6 chore: removes formatted locale list 2023-02-07 10:45:12 +00:00
Jessica Boezwinkle
6032605341 chore: consolidates focus styling 2023-02-07 10:15:42 +00:00
Jessica Boezwinkle
e40fe65272 chore: consolidates styles 2023-02-07 10:09:04 +00:00
Jarrod Flesch
2ba355c76f Merge pull request #2032 from payloadcms/fix/2020-empty-version-tabs-ui 2023-02-06 22:02:48 -05:00
Jarrod Flesch
b321b07ad5 chore: fixes stalling tests 2023-02-06 21:48:50 -05:00
Jarrod Flesch
a41e295e42 fix: named tabs not displaying data in versions view 2023-02-06 21:35:00 -05:00
xHomu
4b0d4f4cd5 fix: local API update typing (#2010)
* Fix Local API update typing

Payload allows for updating doc with only partial data, but the inferred type requires the whole collection type. 
#2009

* fix typos

* chore: further typing of update operation

---------

Co-authored-by: Elliot DeNolf <denolfe@gmail.com>
2023-02-06 17:32:37 -05:00
Dan Ribbens
ade4c011d3 fix: webpack css-loader resolve urls 2023-02-06 16:43:16 -05:00
Jacob Fletcher
2b654882fd chore: writes uploads e2e test for mimetype filter options #2016 (#2028) 2023-02-06 16:30:51 -05:00
Jarrod Flesch
58abeecb11 Merge pull request #2005 from payloadcms/fix/account-preview-button
fix: ensures preview is enabled before rendering button on account view
2023-02-06 16:21:24 -05:00
Elliot DeNolf
1f0a1c796a fix: auth type leaking into type gen 2023-02-06 16:14:59 -05:00
Jacob Fletcher
dd56ceb700 chore: resolves env path in redirects example (#2026) 2023-02-06 13:34:10 -05:00
Jessica Boezwinkle
090906c559 chore: adds datepicker types and updates datepicker version 2023-02-06 17:45:17 +00:00
Jessica Boezwinkle
65b8fd27af fix: corrects keyboard accessibility for checkbox field 2023-02-06 17:40:00 +00:00
Jacob Fletcher
e6ed676117 chore: passing uploads-related e2e tests 2023-02-06 12:25:05 -05:00
Jacob Fletcher
827428d6b5 fix: replaced media not rendering after document save 2023-02-06 12:25:05 -05:00
Jacob Fletcher
02f9be2c4a feat: deletes old media upon re-upload #1897 2023-02-06 12:25:03 -05:00
Jessica Boezwinkle
aefb655769 fix: enables locales with date field 2023-02-06 17:13:47 +00:00
Jacob Fletcher
5214b331e0 Merge pull request #2015 from payloadcms/chore/redirects
chore: adds redirects example
2023-02-06 10:21:34 -05:00
Jessica Boezwinkle
b5880f26af fix: allows radio input to be tabbable 2023-02-06 12:51:57 +00:00
Jacob Fletcher
59e5a457ef chore: refines redirects example 2023-02-06 07:48:04 -05:00
Jacob Fletcher
0dbc4fa213 feat: enables document drawers from read-only fields (#1989) 2023-02-04 10:42:51 -05:00
PatrikKozak
d51e93b86e chore: scaffolds redirects example (#1993) 2023-02-04 10:25:25 -05:00
Elliot DeNolf
600dbd72f4 0.3.24 2023-02-03 14:47:58 -05:00
Elliot DeNolf
785337dc5d chore: add rimraf to prepublish 2023-02-03 14:47:17 -05:00
James
071462b33b chore(release): v1.6.4 2023-02-03 11:48:03 -05:00
James
f2d11cfcaf chore: new yarn lock 2023-02-03 11:41:12 -05:00
James
90c9bf879f Merge branch 'master' of github.com:payloadcms/payload 2023-02-03 11:35:34 -05:00
James
e813394eb4 chore: docs accuracy 2023-02-03 11:35:23 -05:00
James
8c65f6a938 fix: only hoists localized values if localization is enabled 2023-02-03 11:35:19 -05:00
Jarrod Flesch
e968f4067c fix: ensures preview is enabled before rendering button 2023-02-02 16:08:42 -05:00
Elliot DeNolf
1fd61fb989 chore: add .nvmrc to mirror .node-version 2023-02-01 16:49:55 -05:00
Elliot DeNolf
eb9d860af3 chore: check version config before version delete attempt (#1995) 2023-02-01 16:44:17 -05:00
Elliot DeNolf
12ed655881 feat: support large file uploads (#1981)
* feat: support express-fileupload useTempFiles and tempFileDir

* feat: rework uploads to accommodate useTempFiles option

* fix: properly check versions config before handling version deletion

* chore: fix aspect ratio handling

* chore: bump probe-image-size

* chore: handle temp file resizing buffer

* chore: yarn.lock after reverting probe-image-size bump

* chore: get yarn.lock from master

* chore: clear temp files directly in operations instead of injecting a hook
2023-02-01 15:59:53 -05:00
James
c1df7674b2 chore(release): v1.6.3 2023-02-01 15:54:56 -05:00
Elliot DeNolf
14a35f35c3 0.3.23 2023-02-01 15:53:54 -05:00
Elliot DeNolf
30088ec20b Merge pull request #1994 from payloadcms/fix/await-graphql-schema-gen
fix: properly await graphql schema generation
2023-02-01 15:29:46 -05:00
Elliot DeNolf
7720f452d3 ci: generate graphql schema in GH action 2023-02-01 15:17:48 -05:00
Elliot DeNolf
ed2e176285 feat: add cross-env to graphql schema gen command 2023-02-01 14:51:11 -05:00
Elliot DeNolf
678614b62b docs: add cross-env to graphql schema gen example 2023-02-01 14:47:24 -05:00
Elliot DeNolf
888b3a2672 fix: properly await graphql schema generation 2023-02-01 14:43:05 -05:00
James Mikrut
fa86fb7e3f Update CHANGELOG.md 2023-02-01 13:02:57 -05:00
James
2a44cad2d0 chore(release): v1.6.2 2023-02-01 13:02:03 -05:00
James
5f0574e15c chore: adds optional password to auth-enabled collections 2023-02-01 12:52:05 -05:00
James
bd4b834b74 Merge branch 'master' of github.com:payloadcms/payload 2023-02-01 11:57:55 -05:00
James
1614bcdc0b docs: updates to reflect new async init 2023-02-01 11:57:46 -05:00
James Mikrut
93f684e5b6 Update CHANGELOG.md 2023-02-01 10:43:57 -05:00
James
9f2e51ea8c chore: simplifies changelog 2023-02-01 10:43:21 -05:00
James
c1caa6318e chore(release): v1.6.1 2023-02-01 10:42:38 -05:00
James
4d5fcfcdad chore: releases minor 2023-02-01 10:37:33 -05:00
James Mikrut
39aec8caa3 Merge pull request #1988 from payloadcms/chore/default-drawer-header
chore: adds default drawer header
2023-02-01 09:58:43 -05:00
James
1c8209c54a chore: canary release 2023-02-01 09:44:41 -05:00
James
742d21f1c9 chore: updates changelog 2023-02-01 09:39:21 -05:00
James
c70d59c8d2 chore: safely traverses locale=all in cases where relationship is null 2023-02-01 09:33:22 -05:00
James
2d74bb00f2 chore: merge 2023-01-31 21:17:35 -05:00
James
6ae6b9268f chore: removes ability to retain deleted versions 2023-01-31 21:16:40 -05:00
Jacob Fletcher
b7aaa53a8a chore: adds default drawer header 2023-01-31 21:02:20 -05:00
James Mikrut
3a3def5e76 Merge pull request #1985 from payloadcms/chore/default-max-versions
chore: defaults maxVersions to 100
2023-01-31 21:01:15 -05:00
James
44d55e39f3 chore: canary release 2023-01-31 20:57:58 -05:00
James
af4ed27d15 chore: reduces width of block selector tiles on bigger screens 2023-01-31 18:19:49 -05:00
James
eb98810cef chore: ensures generated types can extend TypeWithID 2023-01-31 17:45:10 -05:00
Stjepan Nikolić
dfa47a0e0f feat: add Croatian translation (#1982) 2023-01-31 15:12:08 -05:00
Elliot DeNolf
2d79280999 0.3.22 2023-01-31 13:15:13 -05:00
Elliot DeNolf
8b5084ab43 0.3.21 2023-01-31 13:14:45 -05:00
Elliot DeNolf
b19356597b chore: revert onInit passing payload
Signed-off-by: Elliot DeNolf <denolfe@gmail.com>
2023-01-31 13:14:09 -05:00
Jarrod Flesch
f81fa55289 chore: changelog update - migration script 2023-01-31 11:44:25 -05:00
Jarrod Flesch
ab7b14d81e chore: defaults maxVersions to 100 2023-01-31 11:29:52 -05:00
James
69309a1f88 Merge branch 'master' of github.com:payloadcms/payload 2023-01-31 09:39:31 -05:00
James
abdd1634e4 chore: canary release 2023-01-31 09:39:25 -05:00
Jarrod Flesch
e4d2549984 chore: updates script to remove orphan versions 2023-01-31 09:28:01 -05:00
James
2edabef78f Merge branch 'master' of github.com:payloadcms/payload 2023-01-31 08:45:06 -05:00
James
9c5d7b2f2c chore: improves rich text re-initialization logic when new data comes in 2023-01-31 08:44:59 -05:00
PatrikKozak
453a9036be fix: relation to many index unique fields (#1979) 2023-01-30 16:24:59 -05:00
James
b0ef5fb06d chore: canary release 2023-01-30 15:52:53 -05:00
James
27352f7230 Merge branch 'master' of github.com:payloadcms/payload 2023-01-30 14:19:15 -05:00
James
58c454b628 chore: canary release 2023-01-30 14:19:08 -05:00
Jarrod Flesch
3058eb5617 fix: corrects type for required named tab fields (#1939)
* fix: corrects type for required named tab fields

* chore: tabs and groups are always required

* chore: adjusts tab and group type to omit required since a group/named-tab will always exist
2023-01-30 14:17:40 -05:00
Jacob Fletcher
76745bf19a Merge pull request #1951 from payloadcms/chore/blocks-drawer
chore: refines blocks drawer content
2023-01-30 14:16:03 -05:00
kenryu42
7c6ff89ab6 feat: add Chinese translation (#1926) 2023-01-30 11:25:05 -05:00
James Mikrut
8d26d6d863 Merge pull request #1973 from payloadcms/chore/versions-review
Chore/versions review
2023-01-30 11:51:53 -04:00
Jarrod Flesch
52589f7c59 chore: removes top level spread of version data on version doc 2023-01-30 10:31:30 -05:00
Jarrod Flesch
46b750b3ec chore: ensures only drafts use current time in versioning 2023-01-30 10:29:38 -05:00
Jacob Fletcher
caee0c07d7 docs: gql me query (#1949) 2023-01-27 10:15:53 -05:00
Sean Zubrickas
4cb3e32ff1 chore: readme updates, centering, consistent button style (#1955)
* Update README.md

- updates logo approach to work with npm and github
- updates badge style
- fixes twitter badge
- removes duplicative links for discord and website
- moves feature request link

* changes h1 to p tag, changes h2 to h3 - both done to remove ugly bottom border

* adds target blank to a few anchor tags
2023-01-26 09:32:38 -05:00
Jessica Chowdhury
fb41d245e6 docs(examples): add whitelabel example (#1947)
* chore: adds whitelabel example

* chore: updates readme

* chore: updates icon/logo/favicon assets
2023-01-26 09:24:23 -05:00
Jacob Fletcher
1ab8ccdc99 chore: refines blocks drawer content 2023-01-24 16:05:40 -05:00
Jarrod Flesch
3d854f7724 fix: ensures loader disappears after unsuccessful login, adjusts mobile loader styles (#1948) 2023-01-24 12:46:53 -05:00
Jarrod Flesch
e7908b7f37 fix: aligns global preview config with the docs (#1940) 2023-01-23 17:01:46 -05:00
Mng
6981098329 chore: add default value to richtext props 2023-01-23 09:29:29 -05:00
Jessica Chowdhury
8b778b6407 fix: collection view pagination with limits resulting in empty list 2023-01-23 08:56:35 -05:00
Elliot DeNolf
993a8a1f90 chore: proper release scripts for beta and canary 2023-01-20 17:18:54 -05:00
Jacob Fletcher
25c5b784e1 Merge pull request #1931 from payloadcms/feat/1909
feat: renders blocks field selector within new `BlocksDrawer` component
2023-01-20 16:37:18 -05:00
Jarrod Flesch
9b613ee202 fix: limits and sorts within pagination and not on initial aggregation 2023-01-20 16:30:46 -05:00
Jacob Fletcher
84b36fed6f Merge remote-tracking branch 'upstream/master' into feat/1909 2023-01-20 15:37:03 -05:00
Jacob Fletcher
f351039d48 chore: blocks drawer e2e tests 2023-01-20 15:28:41 -05:00
Jacob Fletcher
339cee416a feat: blocks drawer #1909 2023-01-20 15:28:15 -05:00
Jessica Chowdhury
e39c5e3ec0 Update CHANGELOG.md (#1930) 2023-01-20 12:12:09 -05:00
Jarrod Flesch
517e359399 chore: moves @types/sharp from devDeps to deps array 2023-01-20 11:21:10 -05:00
Elliot DeNolf
1c2eec405b chore: better comment for formatOptions on uploads 2023-01-20 11:13:32 -05:00
Jacob Fletcher
398f40ea68 Merge pull request #1921 from payloadcms/chore/export-entity-to-json
chore: extracts entityToJSONSchema from generateTypes
2023-01-20 10:40:00 -05:00
Jacob Fletcher
1efc6f53d3 feat: explicitly exports utilities 2023-01-20 10:29:13 -05:00
Jarrod Flesch
5ff01f529f chore: audits and removes unused deps 2023-01-20 09:48:13 -05:00
Jarrod Flesch
2a678b9686 chore: shortens loading overlay in/out animation duration (#1925) 2023-01-20 08:13:05 -05:00
James
922122492e chore: regenerates yarn lock 2023-01-19 20:50:02 -05:00
James
7fb0e654cd chore: rolls back pino update 2023-01-19 20:44:18 -05:00
James
3c435daf65 chore: canary release 2023-01-19 20:33:02 -05:00
James
198b077257 chore: removes logger memoization 2023-01-19 20:23:20 -05:00
James
d72237adf3 chore: only requires loadConfig if config is not passed 2023-01-19 20:02:02 -05:00
James
65ce21a238 chore: canary release 2023-01-19 18:18:29 -05:00
James
59dfd9b9bd Merge branch 'master' of github.com:payloadcms/payload 2023-01-19 18:10:54 -05:00
James
268b5dd54e chore: exports both ts and js components 2023-01-19 18:10:47 -05:00
Jarrod Flesch
c0ac155a71 fix: #1870 and #1859
* chore: ensures relationship fields react to locale changes in the admin panel - fixes #1870

* chore: patches in default values for fields, and localized fields using fallbacks - fixes #1859

* chore: organizes field localization and sanitizing

* Revert "Feat/1180 loading UI enhancements"

* Feat/1180 loading UI enhancements

* chore: safely sets tab if name field, only sets fallback value if it exists

* chore: adds test to ensure text fields use fallback locale value when empty
2023-01-19 16:55:03 -05:00
James Mikrut
5d71d4bf6e Merge pull request #1920 from payloadcms/fix/index-version-timestamp-fields
fix: versions error on cosmos db
2023-01-19 16:49:58 -05:00
James
bbc926bccc chore: only calls onInit within initHTTP if local is not true 2023-01-19 16:35:52 -05:00
James
c83ad752ca chore: only sets local to false if local is undefined 2023-01-19 16:19:11 -05:00
James
9ae5b47296 Merge branch 'master' of github.com:payloadcms/payload 2023-01-19 16:06:57 -05:00
James
6dc688cefd chore: ensures onInit is called after initHTTP 2023-01-19 16:06:50 -05:00
Jarrod Flesch
989409a1ab Feat/1180 loading UI enhancements 2023-01-19 15:41:12 -05:00
Elliot DeNolf
0bd412edbd feat: server init async and onInit use scoped payload 2023-01-19 15:23:19 -05:00
Jarrod Flesch
ead6229d55 Merge pull request #1922 from payloadcms/revert-1911-feat/1180-loading-ui-enhancements
Revert "Feat/1180 loading UI enhancements"
2023-01-19 15:21:01 -05:00
Jarrod Flesch
69147a51d6 Revert "Feat/1180 loading UI enhancements" 2023-01-19 15:20:44 -05:00
James
6023559142 Merge branch 'master' of github.com:payloadcms/payload 2023-01-19 15:20:42 -05:00
Jarrod Flesch
51bd6d5ce0 Merge pull request #1911 from payloadcms/feat/1180-loading-ui-enhancements
Feat/1180 loading UI enhancements
2023-01-19 15:20:29 -05:00
James
690ec7ce24 chore: updates vscode debug script 2023-01-19 15:20:28 -05:00
Jarrod Flesch
ff8dc859cd Merge branch 'master' into feat/1180-loading-ui-enhancements 2023-01-19 15:04:50 -05:00
Jessica Chowdhury
06230398d7 fix: hides fallback locale checkbox when field localization is set to false (#1893)
* fix: hides fallback locale checkbox when field localization is set to false

* fix: updates fallback locale checkbox logic

* chore: updates naming convention
2023-01-19 14:33:30 -05:00
Jacob Fletcher
c0e21c2406 chore: upgrades package.json (#1919)
* Upgraded the packages to latest patch versions where non breaking

* Upgraded the packages to latest minor versions where non breaking

Co-authored-by: TomDoFuture <108644869+TomDoFuture@users.noreply.github.com>
2023-01-19 14:27:33 -05:00
Jarrod Flesch
fc23b49998 chore: removes forced initial delay on shimmer effect 2023-01-19 14:18:46 -05:00
Jacob Fletcher
e80ead17a8 chore: extracts entityToJSONSchema from generateTypes 2023-01-19 14:16:21 -05:00
Jarrod Flesch
a88c352e72 chore: adds processing loader to use form context 2023-01-19 14:08:06 -05:00
Dan Ribbens
338c4e2fb1 fix: versions error on cosmos db 2023-01-19 13:47:38 -05:00
Jacob Fletcher
8b08e5a1f9 Merge pull request #1892 from payloadcms/fix/restore-draft
fix: creates backup of current version after restoring draft
2023-01-19 11:40:11 -05:00
Jacob Fletcher
b3f2c79d87 chore: passing versions int tests 2023-01-19 11:39:27 -05:00
Jacob Fletcher
bd4da37f23 fix: creates backup of latest version after restoring draft #1873 2023-01-19 11:38:39 -05:00
Jessica Chowdhury
eec4b3ace5 fix: disables escapeValue for i18n (#1886) 2023-01-19 11:36:14 -05:00
Jarrod Flesch
9feca3c4cc chore: merge with master 2023-01-19 11:26:28 -05:00
James Mikrut
4a49640c3f Merge pull request #1915 from payloadcms/canary
Canary release
2023-01-19 10:38:31 -05:00
Jarrod Flesch
32e2211dbe chore: loader bar color correction 2023-01-19 01:06:43 -05:00
Jarrod Flesch
fcc247ffd6 chore: adds translations for uploading and updating 2023-01-19 01:01:59 -05:00
Jarrod Flesch
d13732b44e chore: adds loader for uploads, refines messaging on loaders 2023-01-19 00:45:57 -05:00
Jarrod Flesch
50f74fbeda chore: refines shimmer, adds to list view and CodeEditor element 2023-01-18 17:04:31 -05:00
James
4855ba07c5 chore: canary release 2023-01-18 16:07:50 -05:00
Elliot DeNolf
1a6ba25e5d 0.3.21-beta.0 2023-01-18 16:01:41 -05:00
James
1e0c5be5b3 Merge branch 'feat/require-ts-node' of github.com:payloadcms/payload into canary 2023-01-18 16:01:30 -05:00
Elliot DeNolf
26d0cd18a1 feat: add generate-types path and ts-node swc to tsconfig 2023-01-18 15:58:41 -05:00
James
21c15ae559 chore: canary release 2023-01-18 15:56:03 -05:00
Elliot DeNolf
9e7a15c1be chore: ts-ignore swcRegister in tests 2023-01-18 12:26:24 -05:00
Jarrod Flesch
f66dd613e3 chore: directs attention to breaking changes headings 2023-01-18 12:13:46 -05:00
Jarrod Flesch
3c70a15bb6 Decorate changelog 2023-01-18 12:05:10 -05:00
Elliot DeNolf
a1f40c73c9 chore: proper generated type default in changelog 2023-01-18 12:01:49 -05:00
James
98171abed5 chore: ensures tsc succeeds 2023-01-18 11:58:35 -05:00
James
9b949da47c Merge branch 'canary' of github.com:payloadcms/payload into canary 2023-01-18 11:56:12 -05:00
James
caa5cefe53 chore: leverages swc/register for bin scripts 2023-01-18 11:56:03 -05:00
Elliot DeNolf
1befe0ce57 chore: revert onInit type change 2023-01-18 11:46:23 -05:00
James
63ca5126cf chore: changelog update 2023-01-18 11:28:11 -05:00
James
a4105266b4 chore: release 2023-01-18 10:58:30 -05:00
James Mikrut
148fc817cd Merge pull request #1907 from notcorp/master
Update sendEmail.ts
2023-01-18 10:56:19 -05:00
Jarrod Flesch
213849fb32 chore: adjusts useLoadingOverlay api 2023-01-18 10:56:14 -05:00
James
412064d77f chore: merges version deletion 2023-01-18 10:46:23 -05:00
James
700e3a159f Merge branch 'master' of github.com:payloadcms/payload into canary 2023-01-18 10:33:39 -05:00
James Mikrut
ea069c0c51 Merge pull request #1864 from payloadcms/feat/retain-deleted
feat: allows versions to be deleted alongside of main document deletion
2023-01-18 10:33:15 -05:00
James Mikrut
de2ef90043 Merge pull request #1890 from payloadcms/fix/pino-pretty-yarn-2
fix: bump pino and pino-pretty to accommodate yarn 2
2023-01-18 10:32:07 -05:00
James
ed6394300f chore: passing e2e 2023-01-18 10:28:45 -05:00
Chris McGrane
8ae0d045e3 Update sendEmail.ts
Switched sendEmail typing to nodemailer's SendMailOptions
2023-01-18 10:27:26 -05:00
James
70745cea5d chore: renames beta to canary 2023-01-17 16:51:50 -05:00
James
6f62429382 chore: merges removal of swc/register 2023-01-17 16:51:11 -05:00
James
c0a942aa4a chore: finishes typing local API 2023-01-17 16:46:18 -05:00
James
e3c5a6c294 chore: further types local operations 2023-01-17 16:16:26 -05:00
James
66dac29ee6 chore: merges versions simplification 2023-01-17 15:44:11 -05:00
Elliot DeNolf
1f9b4e2296 chore: ts improvements on global findOne 2023-01-17 15:18:38 -05:00
James
2c6844c327 chore: removes unused code 2023-01-17 15:03:38 -05:00
James
3bb262fd66 chore: passing tests 2023-01-17 15:01:15 -05:00
Elliot DeNolf
47bb5d6c61 chore: ts improvements on delete operation 2023-01-17 14:50:41 -05:00
James Mikrut
4851b6bae0 Merge pull request #1901 from miriankakhidze/docs/update-gql-exampe
chore: correct properties in example
2023-01-17 14:02:40 -05:00
James Mikrut
433b3e8c21 Merge pull request #1894 from joohanp/fix-nl-i18n
fix: updated nl i18n typos
2023-01-17 14:02:20 -05:00
Jarrod Flesch
35dc687be6 chore: improves dx and component api 2023-01-17 13:10:41 -05:00
James
dc0f8deb06 chore: prefers TypeWithID over Record<string, unknown> 2023-01-17 10:53:50 -05:00
James
ed998598df chore: implements new typing into create and find operations 2023-01-17 10:22:17 -05:00
James
a53682acee chore: uses resulting version in update ops if draft=true 2023-01-17 09:59:32 -05:00
Mk
d04db59880 chore: correct properties in example 2023-01-17 17:16:30 +04:00
James
34582da561 chore: leverages versions refactor to simplify draft query logic 2023-01-16 21:40:34 -05:00
James
dff840c49b chore: adds version count tests 2023-01-16 21:05:40 -05:00
James
8cfa550954 feat: simplifies versions logic 2023-01-16 21:02:32 -05:00
James
fc7709da51 chore: flattens saving versions into a single file 2023-01-16 20:43:37 -05:00
James
0a4766a61e chore: passing tests 2023-01-16 19:04:09 -05:00
James
671adc7e0e chore: begins simplifying versions 2023-01-16 18:09:38 -05:00
Johan
cc7257efd5 fix: updated nl i18n typos 2023-01-16 21:11:27 +01:00
Elliot DeNolf
31653fe76e 0.3.21 2023-01-16 11:34:53 -05:00
Elliot DeNolf
a6d52223d5 chore: update readme with template names 2023-01-16 11:23:33 -05:00
Elliot DeNolf
1bf7c4084c feat: remove javascript templates 2023-01-16 11:21:51 -05:00
Elliot DeNolf
773fb57c71 fix: bump pino and pino-pretty to accommodate yarn 2 2023-01-16 10:47:37 -05:00
Jarrod Flesch
5a93683a26 chore: revamps loading provider 2023-01-16 08:26:35 -05:00
James
0af29ff4db chore: dynamically uses generated types via tsconfig paths 2023-01-15 12:22:16 -05:00
James
d8cce02e97 chore(release): v1.5.9 2023-01-15 09:48:19 -05:00
James
b06ca700be fix: #1877, #1867 - mimeTypes and imageSizes no longer cause error in admin ui 2023-01-15 09:41:54 -05:00
TomDoFuture
5f620a2325 Upgraded the packages to latest minor versions where non breaking 2023-01-15 11:23:42 +11:00
TomDoFuture
01d1f43d45 Upgraded the packages to latest patch versions where non breaking 2023-01-15 11:20:10 +11:00
James
6903d7f52f chore: ts compiles 2023-01-13 16:58:10 -05:00
Jarrod Flesch
bb565f9450 Merge remote-tracking branch 'origin' into feat/1180-loading-ui-enhancements 2023-01-13 12:02:16 -05:00
James
918f736141 chore: begins ts improvements 2023-01-13 11:36:01 -05:00
James
a5c76d4bd5 feat: allows versions to be deleted alongside of main document deletion 2023-01-12 14:30:51 -05:00
James
d6d4906148 chore(release): v1.5.8 2023-01-12 13:56:19 -05:00
James
a054cf098c chore: excludes versions that do not have a parent document from draft queries 2023-01-12 13:35:17 -05:00
James
c0710a3b74 chore: progress to ts improvements 2023-01-12 13:22:15 -05:00
Jarrod Flesch
ae05392625 chore: implements fullscreen loader with top level provider 2023-01-12 11:02:26 -05:00
James
3fb2e5d25e Merge branch 'master' of github.com:payloadcms/payload 2023-01-12 10:39:41 -05:00
James
af7b42e531 chore: renames beta releases to canary 2023-01-12 10:39:35 -05:00
James Mikrut
679331873c Merge pull request #1861 from payloadcms/feat/error-reporting
feat: throws descriptive error when collection or global slug not found
2023-01-12 10:26:51 -05:00
James
4460ad0577 chore(release): v1.5.7 2023-01-12 10:25:33 -05:00
James
1ea6e8b4f3 chore: ensures that while querying with draft=true, outdated versions are excluded 2023-01-12 10:20:20 -05:00
James
f018fc04b0 fix: ensures querying with drafts works on both published and non-published posts 2023-01-12 10:06:44 -05:00
James
69026c5779 fix: ensures find with draft=true does not improperly exclude draft ids 2023-01-12 09:50:24 -05:00
Jessica Boezwinkle
b847d85e60 feat: throws descriptive error when collection or global slug not found 2023-01-12 13:12:46 +00:00
James
d3d367c635 feat: isolates local api to local-only functions, converts it to ts generic for stronger typing 2023-01-11 17:03:10 -05:00
James
8de92dc6b9 Merge branch 'master' of github.com:payloadcms/payload into feat/revamped-local-api 2023-01-11 16:14:23 -05:00
James
dabc0bbe80 chore(release): v1.5.6 2023-01-11 16:13:53 -05:00
James
3f30b2f489 fix: ensures that find with draft=true returns ids with drafts 2023-01-11 16:08:32 -05:00
James
84e03893fd chore: begins local api abstraction 2023-01-11 15:58:58 -05:00
Jessica Boezwinkle
b4ffeaf034 chore: converts exported ts files to js 2023-01-11 16:36:52 +00:00
James
a470706c2e chore(release): v1.5.5 2023-01-11 10:41:22 -05:00
James Mikrut
5e7d731ddd Merge pull request #1850 from payloadcms/fix/1848
fix: rte link from text
2023-01-11 10:33:21 -05:00
Jacob Fletcher
2e833a6efd chore: e2e test for rte link from text 2023-01-11 10:25:43 -05:00
Jacob Fletcher
1cde647a2a fix: rte link element initial state #1848 2023-01-11 09:44:41 -05:00
James
047efe02ff chore: revert #1794 for now until permanent init architecture is established 2023-01-11 09:32:44 -05:00
James
441eb2c20c chore: keeps swc/register for playwright tests 2023-01-10 15:53:41 -05:00
Jarrod Flesch
0f45014dce chore: stubs out FullscreenLoader 2023-01-10 14:53:43 -05:00
Jarrod Flesch
1acf615fc7 chore: removes trailing dots for loading translation 2023-01-10 14:53:12 -05:00
James
f1c342e05e feat: requires ts-node to start a project for any config that uses ts or jsx 2023-01-10 11:48:40 -05:00
Jarrod Flesch
96002dbda5 Merge pull request #1719 from payloadcms/feat/1695-nullable-localized-array-and-blocks
Feat: allow null for non-default locales on arrays and blocks
2023-01-10 11:23:46 -05:00
James Mikrut
93d0a9b3d4 Merge pull request #1837 from payloadcms/chore/manual-draft-aggregate
feat/documentdb / azure cosmos compatibiilty
2023-01-10 11:23:19 -05:00
Jarrod Flesch
571495c3e0 chore: sets parameter defaults for locale and defaultLocale to null 2023-01-10 10:44:48 -05:00
Jarrod Flesch
9b71aa17b3 chore: uses defaultLocale for local operations locale and fallbackLocale 2023-01-10 10:40:35 -05:00
Jacob Fletcher
03dcf743e8 Merge pull request #1835 from payloadcms/fix/1801
fix: upload field filterOptions
2023-01-10 09:46:26 -05:00
Jacob Fletcher
dadaf32e4d Merge pull request #1839 from payloadcms/fix/date-useastitle
fix: formats date when useAsTitle
2023-01-10 09:45:04 -05:00
Jacob Fletcher
086117d703 fix: formats date when useAsTitle 2023-01-09 22:05:56 -05:00
James
ea9943e135 chore: ensures versions aggregate runs in the right order 2023-01-09 19:47:31 -05:00
James
bda03d7a84 Merge branch 'chore/manual-draft-aggregate' of github.com:payloadcms/payload into chore/manual-draft-aggregate 2023-01-09 19:46:57 -05:00
James
665d3da651 chore: ensures sort is used within mergeDrafts 2023-01-09 19:46:35 -05:00
James
faab09b76f chore: ensures sort is used within mergeDrafts 2023-01-09 19:41:30 -05:00
James
33401f4064 chore: comment accuracy 2023-01-09 19:11:40 -05:00
James
9e9dfbcb10 chore: cleanup mergeDrafts 2023-01-09 19:06:02 -05:00
James
73af283e1c feat: ensures compatibility with azure cosmos and aws documentdb 2023-01-09 18:59:20 -05:00
PatrikKozak
6c25ad9cc2 Merge branch 'master' of https://github.com/payloadcms/payload into feat/1695-nullable-localized-array-and-blocks 2023-01-09 17:49:31 -05:00
PatrikKozak
c247f3130c feat: adds translations for fallbackToDefaultLocale 2023-01-09 17:46:35 -05:00
Jacob Fletcher
4194632318 chore: fixes failing upload e2e test 2023-01-09 17:15:05 -05:00
Jarrod Flesch
8f84f9e140 chore: adds simplified config for testing 2023-01-09 17:02:25 -05:00
Jarrod Flesch
21420f16df chore: adjusts skipValidation for array 2023-01-09 16:39:13 -05:00
Jarrod Flesch
ee682270a4 Merge remote-tracking branch 'origin' into feat/1695-nullable-localized-array-and-blocks 2023-01-09 16:19:11 -05:00
Jarrod Flesch
6923128774 chore: abstracts NullifyField component out, non-default locales can be set to null to use fallback 2023-01-09 16:08:55 -05:00
Jarrod Flesch
5cabd8e4c0 chore: abstracts CheckboxInput into a uncontrolled input 2023-01-09 16:07:41 -05:00
Jarrod Flesch
84bc5ab299 chore: fixes incorrect tooltip arrow color 2023-01-09 16:06:51 -05:00
Jacob Fletcher
9483ccb120 fix: upload field filterOptions 2023-01-09 14:40:30 -05:00
Jacob Fletcher
d8c700975f chore: creates uploads e2e testing suite 2023-01-09 13:17:55 -05:00
James Mikrut
aee7d36f1d Merge pull request #1832 from payloadcms/fix/#1808
fix: #1808, arrays and blocks now save localized nested field data upon reordering rows
2023-01-09 12:59:52 -05:00
James
febbea5550 chore: restores debugger to use fields test suite 2023-01-09 12:59:36 -05:00
James
ee54c1481c fix: #1808, arrays and blocks now save localized nested field data upon reordering rows 2023-01-09 12:58:13 -05:00
James
78af86f9d1 chore: simplifies init code 2023-01-09 11:27:00 -05:00
Christian Schurr
82961767e3 feat!: enforces payload.init is async
* Run connectMongoose before starting payload init

* - reverted changes
- added deprecated to init
- docs: changed all payload.init to payload.initAsync
- changed all internal init calls

* forgotten inits in docs

* reverted back - removed init and renamed initAsync to init
2023-01-09 11:24:22 -05:00
James Mikrut
7583289d24 Merge pull request #1830 from payloadcms/fix/#1737-upload-filedata-available
fix: ensures upload file data is available for conditions
2023-01-09 11:14:55 -05:00
James
d40e136947 fix: ensures upload file data is available for conditions 2023-01-09 10:43:42 -05:00
Jessica Chowdhury
ed7cfff45c fix: bug when clearing relationship field without hasMany: true (#1829)
* fix: bug when clearing relationship field without hasMany: true

* fix: checks for null value within function
2023-01-09 10:23:40 -05:00
James Mikrut
a10376372a Merge pull request #1796 from payloadcms/fix/groups-within-row
fix: updates margin for group field within a row
2023-01-09 10:03:50 -05:00
James Mikrut
f6e749734a Merge pull request #1824 from payloadcms/fix/rte-uploads-drawer
fix: prevents uploads drawer from crashing when no uploads are enabled
2023-01-09 09:06:25 -05:00
Jacob Fletcher
62c9efbc54 Merge pull request #1819 from Elliot67/patch-2
fix: wrong translation and punctuation spacing
2023-01-09 09:02:09 -05:00
Jacob Fletcher
84e1417b71 fix: prevents uploads drawer from crashing when no uploads are enabled 2023-01-08 23:04:42 -05:00
Elliot Lintz
bf1242aafa fix: wrong translation and punctuation spacing 2023-01-07 03:38:40 +01:00
Jarrod Flesch
001a68f45c chore: adjusts block and array schemas to store undefined instead of empty arrays by default 2023-01-06 16:56:26 -05:00
Jacob Fletcher
a823e75d2b Merge pull request #1815 from iamprompt/patch-1
fix: fix miss typo in Thai translation
2023-01-06 12:24:39 -05:00
James
c21c6b8013 chore(release): v1.5.4 2023-01-06 11:36:26 -05:00
James Mikrut
e42d103af3 Merge pull request #1816 from payloadcms/feat/prebuilt-config
feat: allows init to accept a pre-built config
2023-01-06 11:30:57 -05:00
James
84e00bf7b3 feat: allows init to accept a pre-built config 2023-01-06 11:23:55 -05:00
Supakarn Laorattanakul
25e5ab7cee fix: fix miss typo in Thai translation 2023-01-06 20:23:27 +07:00
James
5a7972fbf8 chore(release): v1.5.3 2023-01-05 13:53:39 -05:00
James
74e10b1788 Merge branch 'master' of github.com:payloadcms/payload 2023-01-05 13:32:47 -05:00
James
6c3bc6fb34 chore: moves graphql types for globals onto payload class 2023-01-05 13:32:38 -05:00
Jarrod Flesch
b8ca2c56d9 Merge pull request #1807 from payloadcms/fix/code-editor-theme-flicker
fix: theme flicker on code editor
2023-01-05 09:42:24 -05:00
Jessica Boezwinkle
c9e7c1b3bc chore: commits the correct file (jess negligence) 2023-01-05 13:58:44 +00:00
Jessica Boezwinkle
dacf1a85fd chore: removes code editor theme from options 2023-01-05 13:57:10 +00:00
Jessica Boezwinkle
6567454ae4 fix: theme flicker on code editor 2023-01-05 10:03:19 +00:00
James
06fd7e7776 chore(release): v1.5.2 2023-01-04 15:16:32 -05:00
James Mikrut
cac4b92a02 Merge pull request #1805 from payloadcms/fix/swc-ignore
fix: ignores admin and components from swc
2023-01-04 15:01:43 -05:00
Jacob Fletcher
7d27431312 fix: ignores admin and components from swc 2023-01-04 14:57:07 -05:00
Jarrod Flesch
206d0c2c2a chore: adds sourcemaps for swc register 2023-01-04 13:54:39 -05:00
James
38b8423150 chore(release): v1.5.1 2023-01-04 13:23:46 -05:00
James Mikrut
ea8b1ba10c Merge pull request #1804 from payloadcms/fix/components-dir
fix: reverts components directory back to ts
2023-01-04 13:07:51 -05:00
Jacob Fletcher
1bbf099fe0 fix: reverts components directory back to ts 2023-01-04 13:04:07 -05:00
James
5fae18e940 chore: passing tests 2023-01-04 12:46:18 -05:00
James
f4d20a9aed chore: removes logging 2023-01-04 11:43:45 -05:00
James
27dd945544 chore: adds logging to debug why tests not passing in ci 2023-01-04 11:36:38 -05:00
James
7c74507bca chore(release): v1.5.0 2023-01-04 10:43:08 -05:00
James
c18ea7c856 chore: migrates component tests to new version of jest 2023-01-04 10:28:31 -05:00
James
681d75e43e chore: adapts tests to new jest version 2023-01-04 10:22:57 -05:00
James Mikrut
c11bcd1416 feat: swc register (#1779)
* feat: implements esbuild and removes babel

* chore: implements esbuild-register

* chore: tests passing

* chore: implements @swc/jest for tests

* feat: implements swc

* chore: removes build and relies on swc/register only

* chore: converts some exports

* chore: flattens ts configs

* chore: allows tsx in swc

* chore: converts more exports into js

* chore: restores payload module.exports

* chore: removes unused dependency
2023-01-04 10:11:26 -05:00
James
82501319ce chore: dependency updates 2023-01-04 10:06:00 -05:00
Jarrod Flesch
b379001f00 Merge pull request #1802 from payloadcms/chore/code-field-props
chore: moves editorProps into admin property for code and json field types
2023-01-04 09:01:07 -05:00
Jarrod Flesch
fe1dfa3e23 chore: updates test config payload-types 2023-01-04 08:51:54 -05:00
Jarrod Flesch
d97c9fd2ee chore: moves editorProps into admin property for code and json field types 2023-01-04 08:41:59 -05:00
Jarrod Flesch
fde79a1b3c Merge pull request #1731 from payloadcms/feat/json-field
feat: builds json field and updates code field editor
2023-01-03 17:00:34 -05:00
Jarrod Flesch
59781b9eef chore: adjusts JSON field type, removes jsonError from config type 2023-01-03 16:47:51 -05:00
Jarrod Flesch
27ab978565 chore: updates json field docs 2023-01-03 15:01:43 -05:00
Jarrod Flesch
f7d664fdcf docs: updates code and json field types to reflect internal switch to monaco-react editor 2023-01-03 15:01:04 -05:00
Jarrod Flesch
4d74d7a994 chore: abstracts CodeEditor component, ensures js and ts language are respected in Code Field with new editor 2023-01-03 13:57:06 -05:00
James
6a3ee4debe chore(release): v1.4.2 2023-01-03 10:16:45 -05:00
Jarrod Flesch
a0181a0eee Merge branch 'master' into feat/json-field 2023-01-03 10:03:16 -05:00
Jessica Boezwinkle
1c3a257244 fix: updatesmargin for group field within a row 2023-01-03 10:26:10 +00:00
James Mikrut
7727496548 Merge pull request #1793 from payloadcms/fix/#1786
fix: #1786, relationship with hasMany no longer sets empty array as default value
2023-01-02 15:50:58 -05:00
Elliot DeNolf
419a3eef53 0.3.20 2023-01-02 15:50:08 -05:00
Elliot DeNolf
f62531bafd feat: pass through npm run command to package.json template 2023-01-02 15:50:02 -05:00
James
ecfb363169 fix: #1786, relationship with hasMany no longer sets empty array as default value 2023-01-02 15:49:19 -05:00
James Mikrut
4579a2adc1 Merge pull request #1787 from payloadcms/chore/deleting-error-i18n
chore: fix incorrect translation for error deleting document
2023-01-02 14:42:37 -05:00
James Mikrut
57ba307c3b Merge pull request #1792 from payloadcms/feat/reactive-preview
feat: preview now exposes most recent draft data
2023-01-02 14:39:38 -05:00
James
54dadbeae5 feat: preview now exposes most recent draft data 2023-01-02 14:38:35 -05:00
James Mikrut
2a8bc31e4a Merge pull request #1789 from payloadcms/fix/#1775
fix: #1775 - siblingData for unnamed fields within array rows improperly formatted
2023-01-02 13:39:02 -05:00
James
d6fcd19bd1 fix: #1775 - siblingData for unnamed fields within array rows improperly formatted 2023-01-02 13:31:34 -05:00
Dan Ribbens
e0d4b3fef2 chore: fix incorrect translation for error deleting document 2023-01-02 12:43:05 -05:00
James Mikrut
3552d6a340 Merge pull request #1770 from payloadcms/fix/#1762-select-unmatched-value
fix: #1762 select field crash on missing value option
2023-01-02 10:28:57 -05:00
James Mikrut
e330d8874b Merge pull request #1766 from jacobsfletch/fix/1765
fix: error clearing date field
2023-01-02 09:51:51 -05:00
James Mikrut
d919abbda4 Merge pull request #1782 from jacobsfletch/fix/1777
docs: reserved field names
2023-01-02 09:45:24 -05:00
Jacob Fletcher
8e6b2c4f9d docs: reserved field names 2023-01-02 00:47:54 -05:00
Elliot DeNolf
dc815dad14 0.3.19 2022-12-26 21:08:06 -05:00
Elliot DeNolf
bde2ce9b53 chore: stricter typing on prompts validation 2022-12-26 21:07:25 -05:00
Elliot DeNolf
041af0100c feat: use project name as package.json name 2022-12-26 21:00:05 -05:00
Jacob Fletcher
420ed6738e chore: e2e test for date input clearing 2022-12-26 14:31:08 -05:00
Zlatex
49fa5cb23a feat: add Ukrainian translation (#1767) 2022-12-26 12:48:13 -05:00
Dan Ribbens
ec9196e33c fix: select field crash on missing value option 2022-12-26 12:13:11 -05:00
Jacob Fletcher
883daf7b46 fix: error clearing date field 2022-12-24 09:02:35 -05:00
James
7b92211eca chore(release): v1.4.1 2022-12-23 19:52:05 -05:00
James
192c9fe981 Merge branch 'master' of github.com:payloadcms/payload 2022-12-23 19:46:09 -05:00
James
9f4ce8d756 fix: #1761, avoids rich text modifying form due to selection change 2022-12-23 19:46:01 -05:00
Dan Ribbens
abaa22950c test: json field e2e and int 2022-12-23 17:45:22 -05:00
James Mikrut
e23481a011 Update README.md 2022-12-23 16:29:51 -05:00
James
8a8741a792 chore(release): v1.4.0 2022-12-23 16:13:12 -05:00
James Mikrut
206b757629 Merge pull request #1757 from payloadcms/fix/#1738-svg-image-sizes
fix: #1738 save image dimensions to svg uploads
2022-12-23 16:05:22 -05:00
PatrikKozak
238badabb4 fix: translated tab classnames 2022-12-23 15:20:44 -05:00
James
e86a6efe45 Merge branch 'master' of github.com:payloadcms/payload 2022-12-23 14:39:35 -05:00
James
37bc8826f7 chore: allows relationship and upload elements to reside within lists 2022-12-23 14:39:25 -05:00
Jacob Fletcher
3d4dfbcf7a chore: translates tooltip in rte relationship 2022-12-23 14:09:10 -05:00
Dan Ribbens
2de435f43a fix: #1738 save image dimensions to svg uploads 2022-12-23 13:42:31 -05:00
James
ff4a6a1ea1 Merge branch 'master' of github.com:payloadcms/payload 2022-12-23 13:12:33 -05:00
James
55df622007 chore: ensures that de-indenting top-level lists works in all cases 2022-12-23 13:11:38 -05:00
Jacob Fletcher
baf5b10d23 roadmap: rte and upload drawers (#1668) 2022-12-23 12:41:06 -05:00
James
794b6e8783 chore: safely checks if rte last selected element is empty 2022-12-23 12:30:54 -05:00
James Mikrut
df41201134 Merge pull request #1759 from payloadcms/fix/#1748
fix: #1748, bails out of autosave if doc is published while autosaving
2022-12-23 12:21:29 -05:00
James
95e9300d10 fix: #1748, bails out of autosave if doc is published while autosaving 2022-12-23 12:20:04 -05:00
James Mikrut
ad2a54bb78 Merge pull request #1758 from payloadcms/fix/#1747
fix: #1747, rich text in arrays improperly updating initialValue when…
2022-12-23 11:53:21 -05:00
James
d417e50d52 fix: #1747, rich text in arrays improperly updating initialValue when moving rows 2022-12-23 11:47:16 -05:00
James Mikrut
16c41d36cf Merge pull request #1722 from payloadcms/fix/#551
fix: #551 - rich text nested list structure
2022-12-23 11:14:28 -05:00
James Mikrut
4e019e44b0 Merge pull request #1756 from payloadcms/fix/1753-date-field-updates
Fix: updatedAt and createdAt fields change
2022-12-23 11:04:30 -05:00
Jarrod Flesch
d7e7ee9a52 chore: threads global updatedAt through to edit view 2022-12-23 11:01:02 -05:00
James Mikrut
e7a16364c0 Merge pull request #1754 from payloadcms/fix/#1752
fix: #1752, removes label from row field type
2022-12-23 10:51:48 -05:00
James Mikrut
a46c220489 Merge pull request #1745 from payloadcms/fix/1737
fix: allows cleared file to be reselected
2022-12-23 10:50:30 -05:00
James Mikrut
830af2389e Merge pull request #1744 from payloadcms/fix/1739
fix: missing file after reselect in upload component
2022-12-23 10:49:38 -05:00
James Mikrut
332b5d1dad Merge pull request #1743 from payloadcms/fix/1736
fix: safely clears sort #1736
2022-12-23 10:48:50 -05:00
James Mikrut
3cde636d47 Merge pull request #1741 from payloadcms/fix/richtext-toolbar-drawer
fix: updates richtext toolbar position if inside a drawer
2022-12-23 10:47:42 -05:00
James Mikrut
c0293719d9 Merge pull request #1733 from payloadcms/fix/drawer-stepnav
fix: relationship labels and page stepnav
2022-12-23 10:46:54 -05:00
Jarrod Flesch
bd4ed5b99b fix: removes update and created at fields when duplicating, ensures updatedAt data is reactive 2022-12-23 10:39:15 -05:00
James Mikrut
0527e6f3ea Merge pull request #1700 from payloadcms/fix/#1666-api-key-header-label
fix: #1666 use the slug for authentication header API Key
2022-12-23 10:37:19 -05:00
James
ff3ab18d16 fix: #1752, removes label from row field type 2022-12-23 10:24:43 -05:00
James
691730974e chore: ensures that isListActive disregards editor parent 2022-12-23 10:15:26 -05:00
James
46a29f54fc chore: removes debugging for slate 2022-12-23 10:05:28 -05:00
James
95127c94a6 chore: fixes rich text tests 2022-12-23 09:54:41 -05:00
James
88a0c56f40 chore: finishes left indent of lists 2022-12-23 08:53:35 -05:00
Jacob Fletcher
6bd5907ad7 chore: reverts 9567328 2022-12-23 08:34:41 -05:00
James
801068c8fe chore: revises left indent 2022-12-22 18:26:09 -05:00
James
4516c3670e chore: overhauls lists, prepares for left indent 2022-12-22 15:55:07 -05:00
Jessica Boezwinkle
73b8ba3d4a fix: json field type 2022-12-22 14:12:39 +00:00
Jacob Fletcher
9567328d28 fix: refreshes document drawer on save 2022-12-21 22:42:00 -05:00
Jacob Fletcher
35abe811c1 fix: allows cleared file to be reselected 2022-12-21 17:55:48 -05:00
Jacob Fletcher
6bc1758dc0 fix: missing file after reselect in upload component 2022-12-21 17:28:09 -05:00
Jacob Fletcher
341c163b36 fix: safely clears sort #1736 2022-12-21 16:50:52 -05:00
PatrikKozak
468b0d2a55 fix: updates richtext toolbar position if inside a drawer 2022-12-21 11:49:31 -05:00
Elliot DeNolf
f873fa8d99 docs: add example Dockerfile and docker-compose.yml (#1735)
* docs: add example Dockerfile and docker-compose.yml

* docs: link to docker deployment from installation
2022-12-21 11:39:32 -05:00
Elliot DeNolf
2e18c5b8cf feat: add Dockerfile 2022-12-21 00:41:22 -05:00
Jacob Fletcher
59de4f7e82 fix: updates relationship label on drawer save and prevents stepnav update 2022-12-20 16:48:47 -05:00
Elliot DeNolf
f02bbe6308 chore: README logo (#1732)
* chore: README header logo

* updates conditionally rendered logo for light/dark mode

* adds img folder with light and dark logos to utilize gh conditional

* moves payload logos to avoid polluting root directory

Co-authored-by: Sean Zubrickas <zubricks@gmail.com>
2022-12-20 13:24:07 -05:00
Jessica Boezwinkle
e5835ae4f6 chore: cleans up files 2022-12-20 16:57:54 +00:00
Jessica Boezwinkle
309569c581 chore: pass options through to JSON and code fields, fix versions preview 2022-12-20 16:47:31 +00:00
James Mikrut
a88dddab22 Merge pull request #1728 from payloadcms/feat/account-doc-access
feat: adds doc permissions to account view
2022-12-20 10:08:01 -05:00
Jarrod Flesch
b5048a3323 chore: threads onSave through to account render component, refreshes docPermissions after successful save 2022-12-20 09:43:56 -05:00
Elliot DeNolf
3ec6b3d846 chore: revert README h1 2022-12-20 09:35:07 -05:00
Sean Zubrickas
d0dacdbde0 chore: readme updates (#1717)
* refines readme banner image, badges and headings

* chore: spruce up README a bit more

* adds dark/light mode support for logo

Co-authored-by: Elliot DeNolf <denolfe@gmail.com>
2022-12-20 09:28:12 -05:00
Jarrod Flesch
8d643fb29d feat: adds doc permissions to account view 2022-12-20 09:13:19 -05:00
Jessica Boezwinkle
e5ffb1e92d Merge branch 'master' of https://github.com/payloadcms/payload into feat/json-field 2022-12-20 13:33:02 +00:00
James
087eeb01a2 chore: rich text type declarations 2022-12-19 23:02:39 -05:00
James
542ea8eb81 fix: #551 - rich text nested list structure 2022-12-19 22:51:24 -05:00
Dan Ribbens
60bb2652f0 fix: get relationships in locale of i18n language setting (#1648) 2022-12-19 20:42:09 -05:00
Jarrod Flesch
7b769caf78 chore: stubs out data layer and simple frontend example allow explicit null value setting 2022-12-19 17:02:45 -05:00
Elliot DeNolf
0796d5394d chore: fix single quotes in translations file 2022-12-19 16:15:11 -05:00
Lukas Frana
0be4285305 feat: add Czech translation (#1705) 2022-12-19 16:12:57 -05:00
James Mikrut
e366624440 Merge pull request #1672 from payloadcms/fix/query-drafts
fix: #1611, unable to query draft versions with draft=true
2022-12-19 16:01:57 -05:00
James
c755143cc0 chore: uses mongo aggregate for merging draft results 2022-12-19 16:01:30 -05:00
James Mikrut
020a2797d5 Merge pull request #1716 from payloadcms/fix/#1656-image-sizes-patch
fix: #1656 remove size data
2022-12-19 15:44:16 -05:00
Dan Ribbens
389ee261d4 fix: #1656 remove size data 2022-12-19 15:31:03 -05:00
PatrikKozak
13fd974a2d Merge pull request #1715 from payloadcms/feat/graphql-16
feat(graphql): upgrade to graphql 16
2022-12-19 14:20:17 -05:00
James Mikrut
d492870924 Merge pull request #1709 from payloadcms/fix/#1698
fix: #1698 - globals and autosave not working
2022-12-19 14:07:14 -05:00
Calvin Lai
57f5f5ec43 feat(graphql): upgrade to graphql 16 2022-12-19 14:01:51 -05:00
Jarrod Flesch
0d06b8c178 Merge pull request #1711 from payloadcms/fix/1701-radio-validation
Fix/radio-field-validation
2022-12-19 12:17:13 -05:00
Jessica Chowdhury
9af4c1dde7 fix: prevents special characters breaking relationship field search (#1710)
* fix: prevents special characters breaking relationship field search

* test: add special char querying w/ like operator

Co-authored-by: Elliot DeNolf <denolfe@gmail.com>
2022-12-19 12:16:30 -05:00
Dan Ribbens
5b70ebd119 fix: use the slug for authentication header API Key
BREAKING CHANGE: replaced the useAPIKey authentication header format to use the collection slug instead of the collection label. Previous: `${collection.labels.singular} API-Key ${apiKey}`, updated: `${collection.slug} API-Key ${apiKey}`
2022-12-19 11:02:40 -05:00
Jarrod Flesch
0dfed3b30a fix: simplifies radio validation 2022-12-19 11:01:57 -05:00
James
915f1e2b3a fix: #1698 - globals and autosave not working 2022-12-19 10:52:11 -05:00
Elliot DeNolf
2e765a1e05 chore: log full error on transport configuration error (#1702) 2022-12-18 21:57:33 -05:00
James
26717c9ce4 chore(release): v1.3.4 2022-12-16 17:55:42 -05:00
James
fc35d845e7 Merge branch 'master' of github.com:payloadcms/payload 2022-12-16 17:39:51 -05:00
James Mikrut
6580fc7f91 Merge pull request #1690 from payloadcms/fix/doc-access
fix: doc access should not run where query on collections without id
2022-12-16 17:39:39 -05:00
James
1b8ab36123 chore: removes unnecessary async 2022-12-16 17:39:02 -05:00
Jarrod Flesch
b8c0482cda fix: run docAccess also when checking global 2022-12-16 17:38:29 -05:00
James Mikrut
100da03647 Merge pull request #1688 from payloadcms/fix/#1658-async-validate
fix: #1658 async validate out of order
2022-12-16 17:38:25 -05:00
Jarrod Flesch
016beb6eec fix: doc access should not run where query on collections without id 2022-12-16 17:36:41 -05:00
James Mikrut
f85d366500 Merge pull request #1689 from payloadcms/fix/#1687
fix: autosave with nested localized fields
2022-12-16 17:24:32 -05:00
James
a5670c3163 chore: simplifies logic for autosave patch 2022-12-16 17:24:13 -05:00
James
4202fc2933 fix: autosave with nested localized fields 2022-12-16 17:14:00 -05:00
Dan Ribbens
e913fbe4ea fix: async validate out of order 2022-12-16 16:45:38 -05:00
James
0fbfe149df chore(release): v1.3.3 2022-12-16 10:07:47 -05:00
Jessica Boezwinkle
07b2ccad61 feat: wires up i18n with monaco editor 2022-12-16 15:04:25 +00:00
James
f715146aa3 fix: ensures select field avoids circular dependencies 2022-12-16 10:01:08 -05:00
Jessica Boezwinkle
efe4f6d861 feat: fixes json editor errors and misc styling 2022-12-16 13:34:21 +00:00
James
8eaf05efef chore: json field now edits string but saves json in db 2022-12-15 21:10:56 -05:00
James
6c7282ec37 Merge branch 'feat/json-field' of github.com:payloadcms/payload into feat/json-field 2022-12-15 20:32:30 -05:00
James
d9d05f3644 chore: uses aggregate query if draft=true 2022-12-15 20:31:06 -05:00
Dan Ribbens
d88daa433e chore: Revert "chore: allow empty string route.api" (#1681) 2022-12-15 15:08:50 -05:00
Jessica Boezwinkle
4d6eba8d21 feat: updates code field editor 2022-12-15 18:47:53 +00:00
Jessica Boezwinkle
28d9f9009c feat: adds initial json field 2022-12-15 18:32:11 +00:00
Dan Ribbens
91e33ad1ee fix: allow translation in group admin.description (#1680) 2022-12-15 13:13:33 -05:00
James
4359564e2f chore(release): v1.3.2 2022-12-15 12:58:23 -05:00
James
420eef4d91 fix: safely handles rich text deselection 2022-12-15 12:39:57 -05:00
Dan Ribbens
d2f281d318 chore: update changelog 2022-12-15 12:26:06 -05:00
Dan Ribbens
2f723e0d78 chore(release): v1.3.1 2022-12-15 12:15:09 -05:00
Jacob Fletcher
a1813ca4b3 fix: stringifies date in DateTime field for useAsTitle (#1674) 2022-12-15 10:05:49 -05:00
Dan Ribbens
049d560898 fix: add i18n type to collection and globals admin.description (#1675) 2022-12-15 09:45:06 -05:00
Dan Ribbens
91493f9e8f chore: richtext relationship i18n label (#1662) 2022-12-15 09:23:21 -05:00
PatrikKozak
64086e8122 fix: collapsible children margin bottom (#1673) 2022-12-15 09:22:26 -05:00
Dan Ribbens
75d2cbe9e3 chore: update global admin group type (#1647) 2022-12-15 09:09:53 -05:00
Jacob Fletcher
a0b41eb83b fix: ensures unique document drawer slugs 2022-12-14 16:26:50 -05:00
James
44b31a9e58 fix: #1611, unable to query draft versions with draft=true 2022-12-14 16:25:04 -05:00
Jarrod Flesch
de4c7ae625 Merge pull request #1671 from iamprompt/fix-array-collapsible-label-i18n
fix: array collapsible lable i18n object
2022-12-14 16:20:41 -05:00
Jacob Fletcher
414ae9e11f Merge pull request #1669 from iamprompt/fix-label-i18n-add-relationship-tooltip
fix: add new relationship tooltip label translation
2022-12-14 16:17:20 -05:00
James Mikrut
f13742c1f7 Merge pull request #1670 from payloadcms/fix/select-field-clear-value
Fix/select field clear value
2022-12-14 16:16:21 -05:00
Jarrod Flesch
eda6f70acb Roadmap/#1379 admin ui doc level access (#1624)
* feat: adds document level access endpoints so admin ui can now accurately reflect document level access control
* chore(docs): new doc access callout, updates useDocumentInfo props from change
2022-12-14 16:14:29 -05:00
Supakarn Laorattanakul
8b18da78fe fix i18n object in array collapsible lable 2022-12-15 03:08:09 +07:00
Supakarn Laorattanakul
36c1008a22 fix label i18n - add new relationship tooltip 2022-12-15 02:49:00 +07:00
PatrikKozak
c52389ecb6 Merge branch 'master' of https://github.com/payloadcms/payload into fix/select-field-clear-value 2022-12-14 14:41:52 -05:00
PatrikKozak
80da898de8 fix: adds draftsEnabled to baseSchema for tabs / arrays / groups & allows for null enum 2022-12-14 14:41:41 -05:00
PatrikKozak
b4f39d5fd3 fix: removes case for select field that sets data to undefined if set to null 2022-12-14 14:39:39 -05:00
PatrikKozak
f0db5e0170 fix: adds draftsEnabled to versionSchema in collections / globals 2022-12-14 14:38:18 -05:00
Supakarn Laorattanakul
d9c45f62b1 fix: label translation in about to delete dialog (#1667) 2022-12-14 13:16:15 -05:00
Jacob Fletcher
3ae5d954b5 Merge pull request #1558 from jacobsfletch/feat/inline-relationships
roadmap: inline relationships
2022-12-14 09:51:54 -05:00
PatrikKozak
934b443b5b fix: list view date field display format (#1661) 2022-12-14 07:09:54 -05:00
James Mikrut
965bd456cd Merge pull request #1653 from damtzi/fix/#1652-dashboard-to-custom-route
fix: Set 'Dashboard's link to config route (#1652)
2022-12-13 11:00:43 -05:00
Damian Tziamtzis
9d4dac892e fix: Remove template literal from link 2022-12-12 23:16:56 +01:00
Damian Tziamtzis
940c1e84f5 fix: Set 'Dashboard's link to config route (#1652) 2022-12-12 23:10:57 +01:00
Alessio Gravili
1d7ed8aff9 chore: add default credentials to contributing.md (#1642) 2022-12-12 09:40:34 -05:00
Supakarn Laorattanakul
c15da3178e chore: improve thai translation (#1641) 2022-12-12 09:13:13 -05:00
Elliot DeNolf
c0f8f94cd6 chore: update payload component usage comment 2022-12-11 12:43:21 -05:00
Jacob Fletcher
92d2c4d805 fix: fields e2e tests 2022-12-09 17:50:54 -05:00
Jacob Fletcher
50ea48901e Merge branch 'master' into feat/inline-relationships 2022-12-09 15:37:40 -05:00
Jacob Fletcher
c72f074b77 fix: fields-relationship e2e tests 2022-12-09 15:34:35 -05:00
PatrikKozak
72f7927cc6 chore: adds close & edit keys to translations (#1640) 2022-12-09 14:57:40 -05:00
Jacob Fletcher
cb0437fbca Merge branch 'master' into feat/inline-relationships 2022-12-09 13:18:49 -05:00
Jacob Fletcher
bc6cc8dd14 chore: bumps pino-pretty to latest 2022-12-09 13:16:54 -05:00
Jacob Fletcher
1695b8f263 chore: document drawer a11y 2022-12-09 13:01:57 -05:00
Elliot DeNolf
6ea462c0f7 docs: fix graphql localhost link 2022-12-09 12:24:09 -05:00
Dan Ribbens
45e4504a7b chore(release): v1.3.0 2022-12-09 09:53:33 -05:00
Elliot DeNolf
ba2f2d6e9b feat!: no longer sanitize collection slugs to kebab case (#1607)
BREAKING CHANGE: collection slugs are no longer automatically sanitized to be kebab case. This will only be an issue if your current slugs were in camel case. The upgrade path will be to change those slugs to the kebab case version that the slug was automatically being sanitized to on the backend.

If you only use kebab case or single word slugs: no action needed.

If you have existing slugs with camel case and populated data: you'll need to convert these to the kebab case version to match the previously sanitized value.

ie. myOldSlug is your slug, you should convert it to my-old-slug.

Any future slugs after updating will be used as-is.
2022-12-09 09:40:05 -05:00
Nut Pinyo
7777d11b9e feat: add Thai translation (#1630) 2022-12-09 09:38:57 -05:00
Dan Ribbens
eff3f18e7c fix: #1632 graphQL non-nullable relationship and upload fields (#1633) 2022-12-09 09:38:05 -05:00
Dan Ribbens
756edb858a fix: Select with hasMany and localized (#1636) 2022-12-09 09:36:39 -05:00
Dan Ribbens
b6c597ab5c fix: translation key in revert published modal (#1628) 2022-12-09 09:35:40 -05:00
Dan Ribbens
a44dba5ccc chore: cleanup test fields relationship config (#1635) 2022-12-08 22:46:31 -05:00
Dan Ribbens
11b1c0efc6 fix: filterOptions function argument relationTo is an array (#1627)
Co-authored-by: Jarrod Flesch <jarrodmflesch@gmail.com>
2022-12-08 21:24:00 -05:00
Jacob Fletcher
3da0cb9c79 chore: improves useDocumentDrawer memoization 2022-12-08 18:13:46 -05:00
Jacob Fletcher
a36ac209b2 fix: drawer blur, scroll, and document sidebar 2022-12-08 18:12:48 -05:00
Jacob Fletcher
e101f925cc feat: further Tooltip improvements 2022-12-08 17:01:00 -05:00
James
bff7c9f7aa chore: ensures rich text initialValue exists 2022-12-08 16:11:13 -05:00
Jacob Fletcher
17fac6e6a0 chore: general ReactSelect and Relationship styles 2022-12-08 14:22:02 -05:00
Jacob Fletcher
00b3b768eb feat: supports tooltip show and delay 2022-12-08 14:11:55 -05:00
James
9558a22ce6 fix: resets slate state when initialValue changes, fixes #1600, #1546 2022-12-08 11:39:17 -05:00
Jarrod Flesch
512bc1ebe6 fix: sanitizes global find query params 2022-12-08 08:39:17 -05:00
Jacob Fletcher
39a956cee3 fix: relationship drawer permissions 2022-12-07 16:40:42 -05:00
Jacob Fletcher
6da13f3794 chore: moves drawer logic from ReactSelect to Relationship 2022-12-07 16:22:33 -05:00
Dan Ribbens
471d21410a fix: change edit key to prevent richtext editor from crashing (#1616) 2022-12-07 14:47:47 -05:00
Jacob Fletcher
f290cda333 fix: escapes react-select events when drawer is open 2022-12-07 12:40:19 -05:00
Christoffer Bjelke
759f001681 feat: add Norwegian bokmål (nb) translation (#1614) 2022-12-07 10:39:02 -05:00
Carsten Dietzel
dc806a9650 chore: update de.json (#1608) 2022-12-07 07:54:25 -05:00
Jacob Fletcher
5f0227fa80 chore: custom react-select clear indicator 2022-12-06 23:45:27 -05:00
Jacob Fletcher
e2fce30964 fix: add new relationship modal when related to many 2022-12-06 18:00:58 -05:00
James Mikrut
1c193b0ed2 Merge pull request #1609 from payloadcms/chore/translation-key-problem-uploading
chore: fix incorrect translation key in FileUploadError
2022-12-06 16:02:06 -05:00
Dan Ribbens
5588b342d7 chore: fix incorrect translation key in FileUploadError 2022-12-06 15:51:00 -05:00
Jacob Fletcher
f4b099a3d1 chore: removes useDrawer hook and drawer context 2022-12-06 14:56:14 -05:00
Jacob Fletcher
49528dd3c3 fix: relationship create and edit onSave handling 2022-12-06 14:56:03 -05:00
James Mikrut
3aee027b0f Merge pull request #1606 from jacobsfletch/fix/1605-filter-options
fix: unflattens fields in filterOptions callback
2022-12-06 13:53:07 -05:00
Jacob Fletcher
92177e012c Merge branch 'master' into feat/inline-relationships 2022-12-06 13:00:15 -05:00
Jacob Fletcher
acff46b4a5 fix: unflattens fields in filterOptions callback 2022-12-06 12:26:58 -05:00
Jacob Fletcher
445c6fc775 chore: reconfigures useDocumentDrawer hook 2022-12-06 12:13:30 -05:00
Jarrod Flesch
de57aa8417 Merge pull request #1532 from payloadcms/feat/#1423-copy-paste-upload
Feat/#1423 copy paste upload
2022-12-06 10:20:13 -05:00
Jarrod Flesch
ff1b4b098c style: reverts upload field to original, keeps underlying copy-paste functionality 2022-12-06 10:05:22 -05:00
James
a72123dd47 fix: #1547, global afterChange hook not falling back to original global if nothing returned 2022-12-06 09:56:52 -05:00
Jacob Fletcher
d9eb1ea801 fix: remounts document drawer when single-value relationship changes 2022-12-05 14:07:42 -05:00
Jacob Fletcher
3c862add3c fix: prevents react-select from opening on drawer toggle 2022-12-05 00:29:30 -05:00
Jacob Fletcher
5592fb148d feat: custom button html element 2022-12-03 00:31:00 -05:00
Jacob Fletcher
1f53990bb1 Merge branch 'master' into feat/inline-relationships 2022-12-02 23:14:10 -05:00
Jacob Fletcher
811ade60b4 feat: wires DocumentDrawer into singular relationships 2022-12-02 17:44:12 -05:00
Jacob Fletcher
6fab722a2e fix: prevents duplicative DocumentDrawer 2022-12-02 15:46:46 -05:00
Jacob Fletcher
83eef0bc77 chore: migrates from react-sortable-hoc to @dnd-kit 2022-12-02 14:26:26 -05:00
Jacob Fletcher
dd217750d7 feat: retrofits DocumentDrawer into relationship multi-select 2022-12-01 18:01:51 -05:00
Jacob Fletcher
7a42e38cca feat: supports custom react-select components 2022-12-01 17:42:24 -05:00
Jacob Fletcher
475f147f2c feat: retrofits DocumentDrawer into relationship AddNew 2022-12-01 16:39:51 -05:00
Jacob Fletcher
670e5243a9 fix: prevents recursive DocumentDrawer 2022-12-01 16:39:51 -05:00
Jacob Fletcher
2118927f42 feat: builds DocumentDrawer component 2022-12-01 16:39:51 -05:00
Jacob Fletcher
f8cf4c7b6a chore: reconfigures drawer context 2022-12-01 16:39:51 -05:00
Jacob Fletcher
c6013c3904 feat: builds Drawer component 2022-12-01 16:39:51 -05:00
Jarrod Flesch
143362d45c chore: styles copy paste, adds text translations 2022-11-29 08:41:17 -05:00
Arick
eb69b82adf feat: upload support pasting file 2022-11-29 08:26:11 -05:00
Elliot DeNolf
53f0c526f7 0.3.18 2022-11-20 12:38:48 -05:00
Elliot DeNolf
dc5c4eced0 0.3.18-beta.1 2022-11-18 15:45:59 -05:00
Elliot DeNolf
0d8b6d03ed feat: add fallback for terminal link for unsupported terminals 2022-11-18 15:44:26 -05:00
Elliot DeNolf
cfa364280f v0.3.18-beta.0 2022-11-08 11:17:27 -08:00
Elliot DeNolf
7a293563fb feat: implement using current directory 2022-11-08 11:16:02 -08:00
Elliot DeNolf
9359954233 0.3.17 2022-10-25 13:26:46 -04:00
Elliot DeNolf
9fcc05676e 0.3.16
0.3.16
2022-10-25 13:20:24 -04:00
Elliot DeNolf
1e95f5de49 chore: update scripts 2022-10-25 13:17:44 -04:00
Elliot DeNolf
f8983e9e5c refactor: rework templating 2022-10-25 12:54:39 -04:00
Elliot DeNolf
aab71f03b3 chore: linting, update deps 2022-10-24 23:25:04 -04:00
Elliot DeNolf
447d88bf82 test: update createProject test 2022-10-24 23:06:45 -04:00
Elliot DeNolf
897e94f2f4 feat: basic readme template 2022-10-24 22:58:55 -04:00
Elliot DeNolf
87936e5b52 refactor: linting and file naming 2022-10-24 22:57:09 -04:00
Elliot DeNolf
5e02762715 0.3.14 2022-09-13 19:14:19 -07:00
Elliot DeNolf
0785820539 feat: automatically generate secret 2022-09-13 19:14:04 -07:00
Elliot DeNolf
bb6d545aae 0.3.13 2022-08-22 10:15:08 -04:00
Elliot DeNolf
4cdc94d92f feat: always write .npmrc 2022-08-22 10:14:22 -04:00
Elliot DeNolf
c28dca6fc0 0.3.12 2022-07-28 00:59:46 -04:00
Elliot DeNolf
95e630201a feat: include .gitignore 2022-07-28 00:59:35 -04:00
Elliot DeNolf
84100be7eb 0.3.11 2022-07-23 18:23:23 -07:00
Elliot DeNolf
0c7007ae9a feat: legacy-peer-deps=true template 2022-07-23 18:23:04 -07:00
Elliot DeNolf
3e7e3669fe 0.3.10 2022-07-23 17:56:38 -07:00
Elliot DeNolf
1d3bb9c287 feat: add .npmrc with legacy-peer-deps=true 2022-07-23 17:54:15 -07:00
Elliot DeNolf
cacc624f5a 0.3.9 2022-07-21 13:51:01 -07:00
Elliot DeNolf
04dd824f0a feat: add graphql schema gen script 2022-07-21 13:43:01 -07:00
Elliot DeNolf
dc929732b1 feat: copyfiles script, allowJs, bump payload 2022-07-21 13:13:48 -07:00
Elliot DeNolf
a47fd23199 0.3.8 2022-05-16 18:45:11 -04:00
Elliot DeNolf
d205da0aa4 feat: remove licensing env var comments 2022-05-16 18:43:13 -04:00
Elliot DeNolf
c414f12527 feat: use prepublishOnly instead of prepublish 2022-03-23 00:48:31 -04:00
Elliot DeNolf
d9418c9fe3 0.3.7 2022-03-18 10:30:36 -04:00
Elliot DeNolf
65e2ba9bd0 feat: update sentry and error handling 2022-03-18 10:04:46 -04:00
Elliot DeNolf
b3f808644f chore: add comment about populating license key 2022-03-04 16:23:29 -05:00
Elliot DeNolf
1e30435525 test: fix tests 2022-03-02 10:16:58 -05:00
Elliot DeNolf
156d25741b 0.3.6 2022-03-02 09:35:09 -05:00
Elliot DeNolf
de3ee812cd fix: available templates in help message 2022-03-02 09:23:27 -05:00
Elliot DeNolf
234fb33864 0.3.5 2022-02-13 08:59:52 -05:00
Elliot DeNolf
c168bb5201 fix: removing onlyNameIfPublic hook, causes confusion in other hooks 2022-02-13 08:57:31 -05:00
Elliot DeNolf
0ce5d774cb fix: use proper type for collection hook 2022-02-12 09:18:05 -05:00
Elliot DeNolf
d2c2bbd711 0.3.4 2022-02-05 14:21:18 -05:00
Elliot DeNolf
88193adebb feat: add beta flag to use payload@beta 2022-02-05 14:21:03 -05:00
Elliot DeNolf
eac44f9496 0.3.3 2022-02-03 11:01:30 -05:00
Elliot DeNolf
6400095f1f feat: redirect root to admin panel 2022-02-03 11:00:22 -05:00
Elliot DeNolf
b57267e60a feat: add prepublish script, upgrade jest 2021-12-13 21:43:21 -05:00
Elliot DeNolf
79541b6ba7 0.3.2 2021-12-13 21:33:29 -05:00
Elliot DeNolf
0420098e94 fix: better check for existing dir 2021-12-13 21:32:52 -05:00
Elliot DeNolf
9f80634be4 0.3.1 2021-12-10 10:27:04 -05:00
Elliot DeNolf
25ecb27aed 0.3.0 2021-12-09 17:19:51 -05:00
Elliot DeNolf
2ff2efd4b2 feat: add type generation scripts 2021-12-09 17:14:40 -05:00
Elliot DeNolf
ff7a29179d feat: bump payload version 2021-12-09 17:14:14 -05:00
Elliot DeNolf
8403f8ac2a 0.2.0 2021-09-10 17:36:01 -04:00
Elliot DeNolf
df0d4fa726 fix: proper format for server.js files 2021-09-10 17:31:14 -04:00
Elliot DeNolf
2a4bb5a11d fix: add script with shebang 2021-09-10 17:09:45 -04:00
Elliot DeNolf
2b6c5e42b5 feat: only include dist/ and package.json 2021-09-10 17:01:50 -04:00
Elliot DeNolf
a1a4765a94 refactor: rewrite in typescript (#7) 2021-09-10 16:56:37 -04:00
Elliot DeNolf
64d0bc7a16 0.1.22 2021-06-01 14:02:24 -04:00
Elliot DeNolf
b1fb43baf5 fix: remove optional chaining 2021-06-01 14:01:26 -04:00
Elliot DeNolf
bb309ca843 0.1.21 2021-05-11 23:21:21 -04:00
Elliot DeNolf
760662263f feat: tag package manager 2021-05-11 23:18:45 -04:00
Elliot DeNolf
bce5205cf1 Merge pull request #6 from payloadcms/fix/node-16-npm-peer-dependencies
fix: workaround for npm install peer dependency on node 16
2021-05-06 21:24:48 -04:00
Dan Ribbens
0b21726af6 fix: workaround for npm install peer dependency on node 16 2021-05-06 13:19:53 -04:00
Elliot DeNolf
04a7d256c5 0.1.20 2021-04-29 13:44:34 -04:00
Elliot DeNolf
8a9915b58a Merge pull request #5 from payloadcms/sentry 2021-04-29 13:44:09 -04:00
Elliot DeNolf
820e867804 feat: add payload_version tag 2021-04-29 13:33:32 -04:00
Elliot DeNolf
699314a781 feat: add sentry 2021-04-28 15:43:51 -04:00
Elliot DeNolf
86552e62ff 0.1.19 2021-04-19 11:17:53 -04:00
Elliot DeNolf
13769d3cdc feat: remove all explicit labels 2021-04-19 11:17:26 -04:00
Elliot DeNolf
158ae0de30 chore: add package.json descriptions 2021-04-19 10:43:42 -04:00
Elliot DeNolf
04056513d7 0.1.18 2021-04-06 23:06:50 -04:00
Elliot DeNolf
2b7e6dda2f feat: add blank templates 2021-04-06 23:06:25 -04:00
Elliot DeNolf
b11464542a 0.1.17 2021-04-01 09:54:07 -04:00
Elliot DeNolf
b97568f394 chore: add jsx property to ts templates 2021-04-01 09:41:38 -04:00
Elliot DeNolf
18e8839b8c 0.1.16 2021-02-04 22:44:45 -05:00
Elliot DeNolf
f5e5bfae81 chore: update README 2021-02-04 22:44:23 -05:00
Elliot DeNolf
b27ab75e07 Merge pull request #4 from payloadcms/feature/project-name-first-argument 2021-02-04 22:42:50 -05:00
Elliot DeNolf
5799e4015f Merge pull request #3 from payloadcms/feature/compatible-package-dependency-version
feat: create project use compatible version of payload dependency
2021-02-04 22:42:38 -05:00
Dan Ribbens
2f72ed78e1 feat: set the project name from first argument 2021-02-04 15:24:21 -05:00
Dan Ribbens
5f3f038a6b feat: create project use compatible version of payload dependency 2021-02-04 15:01:30 -05:00
Elliot DeNolf
5b29852c0a 0.1.15 2021-01-26 14:43:57 -05:00
Elliot DeNolf
9616e43035 fix: adjust verbiage for spinner and others 2021-01-26 12:32:49 -05:00
Elliot DeNolf
b918425e72 fix: mask encryption key input 2021-01-26 12:32:16 -05:00
Elliot DeNolf
9ed5f5b6fc feat: validate template before asking for project name 2021-01-19 14:23:09 -05:00
Elliot DeNolf
1721d118a8 feat: prompt language and show/validate template names 2021-01-19 10:51:25 -05:00
Elliot DeNolf
8dc400c65a refactor: rename template directories 2021-01-19 10:20:10 -05:00
Elliot DeNolf
a5ac793443 0.1.14 2021-01-18 18:47:54 -05:00
Elliot DeNolf
8d6d995d78 chore: missing comment 2021-01-18 18:46:14 -05:00
Elliot DeNolf
4652255d4f feat: add admin settings to todos 2021-01-18 18:44:54 -05:00
Elliot DeNolf
a274f2e5ca fix: simplify user for todo template 2021-01-18 18:38:29 -05:00
Elliot DeNolf
ed4528096a Merge pull request #2 from payloadcms/blog-template 2021-01-18 18:29:09 -05:00
Elliot DeNolf
f7946af404 feat: add blog template 2021-01-18 18:23:36 -05:00
Elliot DeNolf
26ead270a2 feat: add beforeRead hook for user 2021-01-18 16:19:29 -05:00
Elliot DeNolf
c45c784c58 feat: update blog access 2021-01-18 16:02:14 -05:00
Elliot DeNolf
6b6977cc00 feat: add blog-typescript template 2021-01-18 15:34:46 -05:00
Elliot DeNolf
41a6abd2e4 feat: retrieve latest payload and put into package.json 2021-01-18 14:45:47 -05:00
Elliot DeNolf
d59ccc0f34 0.1.13 2021-01-16 23:55:53 -05:00
Elliot DeNolf
870946d01b fix: handle if no yarn 2021-01-16 23:52:41 -05:00
Elliot DeNolf
3bf68ef9d4 0.1.12 2021-01-16 21:40:57 -05:00
Elliot DeNolf
60d7d51a0a chore: payload version 0.1.145 2021-01-16 21:40:52 -05:00
Elliot DeNolf
61deb2c873 0.1.11 2021-01-16 10:35:37 -05:00
Elliot DeNolf
0ae27d4212 0.1.10 2021-01-16 10:26:56 -05:00
Elliot DeNolf
3c96622313 chore: payload version 0.1.144 2021-01-16 10:19:16 -05:00
Elliot DeNolf
8066ce6f49 feat: add auth and adjust access on Users 2021-01-16 10:16:56 -05:00
Elliot DeNolf
b7f9ffc51a feat: use explicit Users collection instead of default, rename Todo 2021-01-14 23:42:05 -05:00
Elliot DeNolf
4a873a5ae3 fix: nodemon configs 2021-01-14 22:36:29 -05:00
Elliot DeNolf
c080deb0b8 0.1.9 2021-01-14 09:35:22 -05:00
Elliot DeNolf
8cefa8181c chore: payload version 0.1.143 2021-01-14 09:34:48 -05:00
Elliot DeNolf
a34dd651b1 0.1.8 2021-01-13 10:09:23 -05:00
Elliot DeNolf
a86041836f feat: better messaging for encryption key 2021-01-13 10:08:01 -05:00
Elliot DeNolf
6dbd760a2e 0.1.7 2021-01-09 10:51:00 -05:00
Elliot DeNolf
4181a84e9b feat: log admin url to console 2021-01-09 10:50:49 -05:00
Elliot DeNolf
b4d5168409 0.1.6 2021-01-09 01:36:45 -05:00
Elliot DeNolf
74756c0703 feat: add list name, task name, and output URLs to console 2021-01-09 01:35:34 -05:00
Elliot DeNolf
dce57d6fdd 0.1.5 2021-01-08 09:29:01 -05:00
Dan Ribbens
d55df67642 fix: create typescript project use cross-env for windows support for payload config path 2021-01-06 14:12:55 -05:00
Elliot DeNolf
769d9063d5 0.1.3 2021-01-05 19:13:44 -05:00
Elliot DeNolf
8f95a23df9 0.1.2 2021-01-05 19:13:36 -05:00
Elliot DeNolf
9816c33015 fix: template path 2021-01-05 19:11:37 -05:00
Elliot DeNolf
1d14c976f2 0.1.1 2021-01-05 19:07:57 -05:00
Elliot DeNolf
63c436e0ac fix: add shebang 2021-01-05 19:07:50 -05:00
Elliot DeNolf
a4700d7a9d 0.1.0 2021-01-05 19:04:48 -05:00
Elliot DeNolf
e5a1fe0771 chore: MIT license 2021-01-05 19:04:27 -05:00
Elliot DeNolf
b101ff86a9 feat: move cli inside bin 2021-01-05 19:03:20 -05:00
Elliot DeNolf
0c5a6044a0 feat: welcome message and better help 2021-01-05 19:00:50 -05:00
Elliot DeNolf
6fc7c0b9ad fix: js and ts template fixes 2021-01-05 18:45:22 -05:00
Elliot DeNolf
9459e82161 chore: bump payload and adjust tsconfig.json 2021-01-05 16:53:23 -05:00
Elliot DeNolf
62501eb3b8 feat: bump payload version 2021-01-05 14:44:44 -05:00
Elliot DeNolf
df000b7508 feat: add build script and update payload package 2021-01-05 13:59:53 -05:00
Elliot DeNolf
c04bde6725 feat: better header and messages 2020-12-28 21:55:04 -05:00
Elliot DeNolf
1fe8ae39cb feat: add nodemon to all templates 2020-12-28 20:43:13 -05:00
Elliot DeNolf
e2049b9564 feat: add typescript template 2020-12-28 20:29:38 -05:00
Elliot DeNolf
49d9836ab4 chore: remove unused dependencies 2020-12-28 16:16:55 -05:00
Elliot DeNolf
4ed38575bf feat: add --use-npm flag 2020-12-28 16:15:31 -05:00
Elliot DeNolf
ef166cd70d feat: write db uri and secret to .env file 2020-12-28 02:54:16 -05:00
Elliot DeNolf
d45665f092 feat: cross-platform symbols and success message formatting 2020-12-27 23:29:08 -05:00
Elliot DeNolf
10bae6dab7 feat: better messaging and documentation links 2020-12-27 23:00:38 -05:00
Elliot DeNolf
ad25c86fdd chore: add package.json name 2020-12-27 21:32:19 -05:00
Elliot DeNolf
f064ff35f3 fix: remove --name requirement 2020-12-27 21:32:05 -05:00
Elliot DeNolf
55b44b41bf feat: add help message and README 2020-12-27 21:25:14 -05:00
Elliot DeNolf
1f3e9b22f4 feat: initial commit 2020-12-27 21:03:19 -05:00
4376 changed files with 371531 additions and 77156 deletions

View File

@@ -19,3 +19,7 @@ indent_size = 2
[*.mdx]
indent_style = space
indent_size = 2
[*.json]
indent_style = space
indent_size = 2

10
.eslintignore Normal file
View File

@@ -0,0 +1,10 @@
.tmp
**/.git
**/.hg
**/.pnp.*
**/.svn
**/.yarn/**
**/build
**/dist/**
**/node_modules
**/temp

38
.eslintrc.cjs Normal file
View File

@@ -0,0 +1,38 @@
module.exports = {
extends: ['@payloadcms'],
overrides: [
{
extends: ['plugin:@typescript-eslint/disable-type-checked'],
files: ['*.js', '*.cjs', '*.json', '*.md', '*.yml', '*.yaml'],
},
{
files: ['packages/eslint-config-payload/**'],
rules: {
'perfectionist/sort-objects': 'off',
},
},
{
files: ['package.json', 'tsconfig.json'],
rules: {
'perfectionist/sort-array-includes': 'off',
'perfectionist/sort-astro-attributes': 'off',
'perfectionist/sort-classes': 'off',
'perfectionist/sort-enums': 'off',
'perfectionist/sort-exports': 'off',
'perfectionist/sort-imports': 'off',
'perfectionist/sort-interfaces': 'off',
'perfectionist/sort-jsx-props': 'off',
'perfectionist/sort-keys': 'off',
'perfectionist/sort-maps': 'off',
'perfectionist/sort-named-exports': 'off',
'perfectionist/sort-named-imports': 'off',
'perfectionist/sort-object-types': 'off',
'perfectionist/sort-objects': 'off',
'perfectionist/sort-svelte-attributes': 'off',
'perfectionist/sort-union-types': 'off',
'perfectionist/sort-vue-attributes': 'off',
},
},
],
root: true,
}

View File

@@ -1,103 +0,0 @@
module.exports = {
parser: '@typescript-eslint/parser',
parserOptions: {
ecmaVersion: 2020,
sourceType: 'module',
ecmaFeatures: {
jsx: true,
},
},
plugins: [
'@typescript-eslint',
],
extends: [
'@trbl',
],
settings: {
'import/resolver': {
node: {
extensions: ['.js', '.jsx', '.ts', '.tsx'],
},
},
},
overrides: [
{
files: ['test/**/int.spec.ts'],
rules: {
'@typescript-eslint/no-use-before-define': 'off',
'@typescript-eslint/consistent-type-imports': 'warn',
'jest/prefer-strict-equal': 'off',
}
},
{
files: ['test/**/e2e.spec.ts'],
extends: [
'plugin:playwright/playwright-test'
],
rules: {
'jest/consistent-test-it': 'off',
'jest/require-top-level-describe': 'off',
'jest/no-test-callback': 'off',
'jest/prefer-strict-equal': 'off',
'jest/expect-expect': 'off',
'jest-dom/prefer-to-have-attribute': 'off',
}
},
{
files: ['*.ts', '*.tsx'],
parser: '@typescript-eslint/parser',
extends: [
'plugin:@typescript-eslint/recommended',
],
rules: {
'no-shadow': 'off',
'@typescript-eslint/no-shadow': ['error'],
'import/no-unresolved': [
2,
{
ignore: [
'payload-config',
],
},
],
},
},
{
files: ['*.spec.ts'],
rules: {
'@typescript-eslint/no-use-before-define': 'off',
},
},
{
files: ['*.e2e.ts'],
rules: {
'@typescript-eslint/no-use-before-define': 'off',
'jest/expect-expect': 'off',
},
},
],
rules: {
'import/no-extraneous-dependencies': ['error', { packageDir: './' }],
'react/jsx-filename-extension': [2, { extensions: ['.js', '.jsx', '.ts', '.tsx'] }],
'import/prefer-default-export': 'off',
'react/prop-types': 'off',
'react/require-default-props': 'off',
'react/no-unused-prop-types': 'off',
'no-console': 'warn',
'no-sparse-arrays': 'off',
'no-underscore-dangle': 'off',
'no-use-before-define': 'off',
'arrow-body-style': 0,
'@typescript-eslint/no-use-before-define': 'off',
'import/extensions': [
'error',
'ignorePackages',
{
js: 'never',
jsx: 'never',
ts: 'never',
tsx: 'never',
},
],
},
};

18
.git-blame-ignore-revs Normal file
View File

@@ -0,0 +1,18 @@
# lint and format
ae7d6f97d205491390f15850e5104c7abded1550
1fbda85cd04a774cb978778b0f813001664c53dd
# prettier all templates
75a428ddc4672903455998eaba7ae9f9d710bf85
# re-run prettier and eslint everywhere again
cdaa0acd61d3001407609915bd573b78565d5571
# prettier write again
dfac7395fed95fc5d8ebca21b786ce70821942bb
# lint and format plugin-cloud
fb7d1be2f3325d076b7c967b1730afcef37922c2
# lint and format create-payload-app
5fd3d430001efe86515262ded5e26f00c1451181

47
.github/ISSUE_TEMPLATE/1.bug_report.yml vendored Normal file
View File

@@ -0,0 +1,47 @@
name: Bug Report
description: Create a bug report for Payload
labels: ['possible-bug']
body:
- type: markdown
attributes:
value: |
*Note:* Feature requests should be opened as [discussions](https://github.com/payloadcms/payload/discussions/new?category=feature-requests-ideas).
- type: input
id: reproduction-link
attributes:
label: Link to reproduction
description: Please add a link to a reproduction. See the fork [reproduction-guide](https://github.com/payloadcms/payload/blob/main/.github/reproduction-guide.md) for more information.
validations:
required: true
- type: textarea
attributes:
label: To Reproduce
description: Steps to reproduce the behavior, please provide a clear description of how to reproduce the issue, based on the linked minimal reproduction. Screenshots can be provided in the issue body below. If using code blocks, make sure that [syntax highlighting is correct](https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/creating-and-highlighting-code-blocks#syntax-highlighting) and double check that the rendered preview is not broken.
validations:
required: true
- type: textarea
attributes:
label: Describe the Bug
validations:
required: true
- type: input
id: version
attributes:
label: Payload Version
description: What version of Payload are you running?
validations:
required: true
- type: input
id: adapters-plugins
attributes:
label: Adapters and Plugins
description: What adapters and plugins are you using? ie. db-mongodb, db-postgres, bundler-webpack, etc.
- type: markdown
attributes:
value: Before submitting the issue, go through the steps you've written down to make sure the steps provided are detailed and clear.
- type: markdown
attributes:
value: Contributors should be able to follow the steps provided in order to reproduce the bug.
- type: markdown
attributes:
value: These steps are used to add integration tests to ensure the same issue does not happen again. Thanks in advance!

View File

@@ -1,22 +0,0 @@
---
name: Bug Report
about: Create a bug report for Payload
labels: 'possible-bug'
---
# Bug Report
<!--- Provide a general summary of the issue in the Title above -->
## Steps to Reproduce
<!--- Steps to reproduce this bug. Include any code, if relevant -->
1.
2.
3.
## Other Details
<!--- Payload version, browser, etc -->
<!--- Possible solution if you're familiar with the code -->

View File

@@ -1,8 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: Security Vulnerability
url: https://github.com/payloadcms/payload/blob/master/SECURITY.md
about: See instructions to privately disclose any security concerns
- name: Feature Request
url: https://github.com/payloadcms/payload/discussions
about: Suggest an idea to improve Payload in our GitHub Discussions

View File

@@ -2,15 +2,18 @@
<!-- Please include a summary of the pull request and any related issues it fixes. Please also include relevant motivation and context. -->
- [ ] I have read and understand the CONTRIBUTING.md document in this repository
- [ ] I have read and understand the [CONTRIBUTING.md](https://github.com/payloadcms/payload/blob/main/CONTRIBUTING.md) document in this repository.
## Type of change
<!-- Please delete options that are not relevant. -->
- [ ] Chore (non-breaking change which does not add functionality)
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [ ] Change to the [templates](../templates/) directory (does not affect core functionality)
- [ ] Change to the [examples](../examples/) directory (does not affect core functionality)
- [ ] This change requires a documentation update
## Checklist:

63
.github/reproduction-guide.md vendored Normal file
View File

@@ -0,0 +1,63 @@
# Reproduction Guide
1. [fork](https://github.com/payloadcms/payload/fork) this repo
2. run `yarn` to install dependencies
3. open up the `test/_community` directory
4. add any necessary `collections/globals/fields` in this directory to recreate the issue you are experiencing
5. run `yarn dev _community` to start the admin panel
**NOTE:** The goal is to isolate the problem by reducing the number of `collections/globals/fields` you add to the `test/_community` folder. This folder is _not_ meant for you to copy your project into, but rather recreate the issue you are experiencing with minimal config.
## Example test directory file tree
```text
.
├── config.ts
├── int.spec.ts
├── e2e.spec.ts
└── payload-types.ts
```
- `config.ts` - This is the _granular_ Payload config for testing. It should be as lightweight as possible. Reference existing configs for an example
- `int.spec.ts` [Optional] - This is the test file run by jest. Any test file must have a `*int.spec.ts` suffix.
- `e2e.spec.ts` [Optional] - This is the end-to-end test file that will load up the admin UI using the above config and run Playwright tests.
- `payload-types.ts` - Generated types from `config.ts`. Generate this file by running `yarn dev:generate-types _community`.
The directory split up in this way specifically to reduce friction when creating tests and to add the ability to boot up Payload with that specific config. You should modify the files in `test/_community` to get started.
<br />
## Testing is optional but encouraged
An issue does not need to have failing tests — reproduction steps with your forked repo are enough at this point. Some people like to dive deeper and we want to give you the guidance/tools to do so. Read more below:
### Running integration tests (Payload API tests)
First install [Jest Runner for VSVode](https://marketplace.visualstudio.com/items?itemName=firsttris.vscode-jest-runner).
There are a couple ways run integration tests:
- **Granularly** - you can run individual tests in vscode by installing the Jest Runner plugin and using that to run individual tests. Clicking the `debug` button will run the test in debug mode allowing you to set break points.
<img src="https://raw.githubusercontent.com/payloadcms/payload/main/packages/payload/src/admin/assets/images/github/int-debug.png" />
- **Manually** - you can run all int tests in the `/test/_community/int.spec.ts` file by running the following command:
```bash
yarn test:int _community
```
### Running E2E tests (Admin Panel UI tests)
The easiest way to run E2E tests is to install
- [Playwright Test for VSCode](https://marketplace.visualstudio.com/items?itemName=ms-playwright.playwright)
- [Playwright Runner](https://marketplace.visualstudio.com/items?itemName=ortoni.ortoni)
Once they are installed you can open the `testing` tab in vscode sidebar and drill down to the test you want to run, i.e. `/test/_community/e2e.spec.ts`
<img src="https://raw.githubusercontent.com/payloadcms/payload/main/packages/payload/src/admin/assets/images/github/e2e-debug.png" />
#### Notes
- It is recommended to add the test credentials (located in `test/credentials.ts`) to your autofill for `localhost:3000/admin` as this will be required on every nodemon restart. The default credentials are `dev@payloadcms.com` as email and `test` as password.

242
.github/workflows/main.yml vendored Normal file
View File

@@ -0,0 +1,242 @@
name: build
on:
pull_request:
types: [opened, reopened, synchronize]
push:
branches: ['main']
jobs:
core-build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 25
- name: Use Node.js 18
uses: actions/setup-node@v3
with:
node-version: 18
- name: Install pnpm
uses: pnpm/action-setup@v2
with:
version: 8
run_install: false
- name: Get pnpm store directory
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
- uses: actions/cache@v3
name: Setup pnpm cache
with:
path: ${{ env.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
- run: pnpm install
- run: pnpm run build
- name: Cache build
uses: actions/cache@v3
with:
path: ./*
key: ${{ github.sha }}-${{ github.run_number }}
tests:
runs-on: ubuntu-latest
needs: core-build
strategy:
fail-fast: false
matrix:
database: [mongoose, postgres]
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: payloadtests
steps:
- name: Use Node.js 18
uses: actions/setup-node@v3
with:
node-version: 18
- name: Install pnpm
uses: pnpm/action-setup@v2
with:
version: 8
run_install: false
- name: Restore build
uses: actions/cache@v3
with:
path: ./*
key: ${{ github.sha }}-${{ github.run_number }}
- name: Start PostgreSQL
uses: CasperWA/postgresql-action@v1.2
with:
postgresql version: '14' # See https://hub.docker.com/_/postgres for available versions
postgresql db: ${{ env.POSTGRES_DB }}
postgresql user: ${{ env.POSTGRES_USER }}
postgresql password: ${{ env.POSTGRES_PASSWORD }}
if: matrix.database == 'postgres'
- run: sleep 30
- name: Configure PostgreSQL
run: |
psql "postgresql://$POSTGRES_USER:$POSTGRES_PASSWORD@localhost:5432/$POSTGRES_DB" -c "CREATE ROLE runner SUPERUSER LOGIN;"
psql "postgresql://$POSTGRES_USER:$POSTGRES_PASSWORD@localhost:5432/$POSTGRES_DB" -c "SELECT version();"
echo "POSTGRES_URL=postgresql://$POSTGRES_USER:$POSTGRES_PASSWORD@localhost:5432/$POSTGRES_DB" >> $GITHUB_ENV
if: matrix.database == 'postgres'
- name: Component Tests
run: pnpm test:components
- name: Integration Tests
run: pnpm test:int
env:
PAYLOAD_DATABASE: ${{ matrix.database }}
POSTGRES_URL: ${{ env.POSTGRES_URL }}
tests-e2e:
runs-on: ubuntu-latest
needs: core-build
strategy:
fail-fast: false
matrix:
part: [1/4, 2/4, 3/4, 4/4]
steps:
- name: Use Node.js 18
uses: actions/setup-node@v3
with:
node-version: 18
- name: Install pnpm
uses: pnpm/action-setup@v2
with:
version: 8
run_install: false
- name: Restore build
uses: actions/cache@v3
with:
path: ./*
key: ${{ github.sha }}-${{ github.run_number }}
- name: E2E Tests
run: pnpm test:e2e --part ${{ matrix.part }} --bail
- uses: actions/upload-artifact@v3
if: always()
with:
name: test-results
path: test-results/
retention-days: 1
tests-type-generation:
runs-on: ubuntu-latest
needs: core-build
steps:
- name: Use Node.js 18
uses: actions/setup-node@v3
with:
node-version: 18
- name: Install pnpm
uses: pnpm/action-setup@v2
with:
version: 8
run_install: false
- name: Restore build
uses: actions/cache@v3
with:
path: ./*
key: ${{ github.sha }}-${{ github.run_number }}
- name: Generate Payload Types
run: pnpm dev:generate-types fields
- name: Generate GraphQL schema file
run: pnpm dev:generate-graphql-schema graphql-schema-gen
build-packages:
runs-on: ubuntu-latest
needs: core-build
strategy:
fail-fast: false
matrix:
pkg:
- db-mongodb
- db-postgres
- bundler-webpack
- bundler-vite
- richtext-slate
- richtext-lexical
- live-preview
- live-preview-react
steps:
- name: Use Node.js 18
uses: actions/setup-node@v3
with:
node-version: 18
- name: Install pnpm
uses: pnpm/action-setup@v2
with:
version: 8
run_install: false
- name: Restore build
uses: actions/cache@v3
with:
path: ./*
key: ${{ github.sha }}-${{ github.run_number }}
- name: Build ${{ matrix.pkg }}
run: pnpm turbo run build --filter=${{ matrix.pkg }}
plugins:
runs-on: ubuntu-latest
needs: core-build
strategy:
fail-fast: false
matrix:
pkg:
- plugin-cloud
- create-payload-app
steps:
- name: Use Node.js 18
uses: actions/setup-node@v3
with:
node-version: 18
- name: Install pnpm
uses: pnpm/action-setup@v2
with:
version: 8
run_install: false
- name: Restore build
uses: actions/cache@v3
with:
path: ./*
key: ${{ github.sha }}-${{ github.run_number }}
- name: Build ${{ matrix.pkg }}
run: pnpm turbo run build --filter=${{ matrix.pkg }}
- name: Test ${{ matrix.pkg }}
run: pnpm --filter ${{ matrix.pkg }} run test
if: matrix.pkg != 'create-payload-app' # degit doesn't work within GitHub Actions

View File

@@ -1,84 +0,0 @@
name: build
on:
pull_request:
types: [opened, reopened, edited, synchronize]
push:
branches: ['master']
jobs:
build_yarn:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [14.x, 16.x, 18.x]
steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
registry-url: https://registry.npmjs.org
scope: '@payloadcms'
always-auth: true
- name: Cache node modules
uses: actions/cache@v1
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
- run: yarn
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- run: yarn build
- name: Component Tests
run: yarn test:components
- name: Integration Tests
run: yarn test:int
- name: Generate Payload Types
run: yarn dev:generate-types fields
- name: Install Playwright Browsers
run: npx playwright install --with-deps
- name: E2E Tests
run: yarn test:e2e --bail
# - uses: actions/upload-artifact@v2
# if: always()
# with:
# name: playwright-report
# path: playwright-report/
# retention-days: 30
install_npm:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [16.x]
steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
registry-url: https://registry.npmjs.org
scope: '@payloadcms'
always-auth: true
- name: Cache node modules
uses: actions/cache@v1
with:
path: ~/.npm
key: ${{ runner.os }}-node-npm-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-npm-${{ env.cache-name }}-
${{ runner.os }}-npm-
${{ runner.os }}-
- run: npm install --legacy-peer-deps
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

237
.gitignore vendored
View File

@@ -2,11 +2,16 @@ coverage
package-lock.json
dist
.idea
test-results
.devcontainer
/migrations
# Created by https://www.gitignore.io/api/node,macos,windows,webstorm,sublimetext,visualstudiocode
# Created by https://www.toptal.com/developers/gitignore/api/node,macos,windows,webstorm,sublimetext,visualstudiocode
# Edit at https://www.toptal.com/developers/gitignore?templates=node,macos,windows,webstorm,sublimetext,visualstudiocode
### macOS ###
*.DS_Store
# General
.DS_Store
.AppleDouble
.LSOverride
@@ -29,6 +34,10 @@ Network Trash Folder
Temporary Items
.apdisk
### macOS Patch ###
# iCloud generated files
*.icloud
### Node ###
# Logs
logs
@@ -36,6 +45,11 @@ logs
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
.pnpm-debug.log*
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Runtime data
pids
@@ -48,11 +62,12 @@ lib-cov
# Coverage directory used by tools like istanbul
coverage
*.lcov
# nyc test coverage
.nyc_output
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
@@ -61,15 +76,18 @@ bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (http://nodejs.org/api/addons.html)
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# Typescript v1 declaration files
typings/
# Snowpack dependency directory (https://snowpack.dev/)
web_modules/
# TypeScript cache
*.tsbuildinfo
# Optional npm cache directory
.npm
@@ -77,6 +95,15 @@ typings/
# Optional eslint cache
.eslintcache
# Optional stylelint cache
.stylelintcache
# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/
# Optional REPL history
.node_repl_history
@@ -86,34 +113,87 @@ typings/
# Yarn Integrity file
.yarn-integrity
# Yarn Berry
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions
# dotenv environment variable files
.env
.env.development.local
.env.test.local
.env.production.local
.env.local
# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache
# Next.js build output
.next
out
# Nuxt.js build / generate output
.nuxt
dist
# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public
# vuepress build output
.vuepress/dist
# vuepress v2.x temp and cache directory
.temp
# Docusaurus cache and generated files
.docusaurus
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# TernJS port file
.tern-port
# Stores VSCode versions used for testing VSCode extensions
.vscode-test
# yarn v2
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*
# dotenv environment variables file
.env
### Node Patch ###
# Serverless Webpack directories
.webpack/
# Optional stylelint cache
# SvelteKit build / generate output
.svelte-kit
### SublimeText ###
# cache files for sublime text
# Cache files for Sublime Text
*.tmlanguage.cache
*.tmPreferences.cache
*.stTheme.cache
# workspace files are user-specific
# Workspace files are user-specific
*.sublime-workspace
# project files should be checked into the repository, unless a significant
# proportion of contributors will probably not be using SublimeText
# Project files should be checked into the repository, unless a significant
# proportion of contributors will probably not be using Sublime Text
# *.sublime-project
# sftp configuration file
# SFTP configuration file
sftp-config.json
sftp-config-alt*.json
# Package control specific files
Package Control.last-run
@@ -133,46 +213,77 @@ GitHub.sublime-settings
### VisualStudioCode ###
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
!.vscode/*.code-snippets
# Local History for Visual Studio Code
.history/
# Built Visual Studio Code Extensions
*.vsix
### VisualStudioCode Patch ###
# Ignore all local history of files
.history
.ionide
### WebStorm ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff:
# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/dictionaries
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf
# Sensitive or high-churn files:
# AWS User-specific
.idea/**/aws.xml
# Generated files
.idea/**/contentModel.xml
# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.xml
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml
# Gradle:
# Gradle
.idea/**/gradle.xml
.idea/**/libraries
# CMake
cmake-build-debug/
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/artifacts
# .idea/compiler.xml
# .idea/jarRepositories.xml
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr
# Mongo Explorer plugin:
# CMake
cmake-build-*/
# Mongo Explorer plugin
.idea/**/mongoSettings.xml
## File-based project format:
# File-based project format
*.iws
## Plugin-specific files:
# IntelliJ
/out/
out/
# mpeltonen/sbt-idea plugin
.idea_modules/
@@ -183,8 +294,8 @@ atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# Ruby plugin and RubyMine
/.rakeTasks
# SonarLint plugin
.idea/sonarlint/
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
@@ -192,6 +303,12 @@ crashlytics.properties
crashlytics-build.properties
fabric.properties
# Editor-based Rest Client
.idea/httpRequests
# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser
### WebStorm Patch ###
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
@@ -201,16 +318,43 @@ fabric.properties
# *.ipr
# Sonarlint plugin
.idea/sonarlint
# https://plugins.jetbrains.com/plugin/7973-sonarlint
.idea/**/sonarlint/
# SonarQube Plugin
# https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin
.idea/**/sonarIssues.xml
# Markdown Navigator plugin
# https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced
.idea/**/markdown-navigator.xml
.idea/**/markdown-navigator-enh.xml
.idea/**/markdown-navigator/
# Cache file creation bug
# See https://youtrack.jetbrains.com/issue/JBR-2257
.idea/$CACHE_FILE$
# CodeStream plugin
# https://plugins.jetbrains.com/plugin/12206-codestream
.idea/codestream.xml
# Azure Toolkit for IntelliJ plugin
# https://plugins.jetbrains.com/plugin/8053-azure-toolkit-for-intellij
.idea/**/azureSettings.xml
### Windows ###
# Windows thumbnail cache files
Thumbs.db
Thumbs.db:encryptable
ehthumbs.db
ehthumbs_vista.db
# Dump file
*.stackdump
# Folder config file
Desktop.ini
[Dd]esktop.ini
# Recycle Bin used on file shares
$RECYCLE.BIN/
@@ -218,26 +362,13 @@ $RECYCLE.BIN/
# Windows Installer files
*.cab
*.msi
*.msix
*.msm
*.msp
# Windows shortcuts
*.lnk
# End of https://www.gitignore.io/api/node,macos,windows,webstorm,sublimetext,visualstudiocode
# End of https://www.toptal.com/developers/gitignore/api/node,macos,windows,webstorm,sublimetext,visualstudiocode
# Ignore all uploads
demo/upload
demo/media
demo/files
# Ignore build folder
build
# Ignore built components
components/index.js
components/styles.css
# Ignore generated
demo/generated-types.ts
demo/generated-schema.graphql
/build

4
.husky/pre-commit Executable file
View File

@@ -0,0 +1,4 @@
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
pnpm run lint-staged --quiet

View File

@@ -1 +1 @@
v16.14.2
v18.17.1

2
.npmrc Normal file
View File

@@ -0,0 +1,2 @@
symlink=true
node-linker=isolated # due to a typescript bug, isolated mode requires @types/express-serve-static-core, terser and monaco-editor to be installed https://github.com/microsoft/TypeScript/issues/47663#issuecomment-1519138189 along with two other changes in the code which I've marked with (tsbugisolatedmode) in the code

1
.nvmrc Normal file
View File

@@ -0,0 +1 @@
v18.17.1

11
.prettierignore Normal file
View File

@@ -0,0 +1,11 @@
.tmp
**/.git
**/.hg
**/.pnp.*
**/.svn
**/.yarn/**
**/build
**/dist/**
**/node_modules
**/temp
**/docs/**

6
.prettierrc.json Normal file
View File

@@ -0,0 +1,6 @@
{
"singleQuote": true,
"trailingComma": "all",
"printWidth": 100,
"semi": false
}

View File

@@ -1,25 +0,0 @@
{
"preReleaseId": "beta",
"git": {
"requireCleanWorkingDir": false,
"commit": false,
"push": false,
"tag": false
},
"github": {
"release": false
},
"npm": {
"skipChecks": true,
"tag": "beta"
},
"hooks": {
"before:init": ["yarn", "yarn clean", "yarn test"]
},
"plugins": {
"@release-it/conventional-changelog": {
"preset": "angular",
"infile": "CHANGELOG.md"
}
}
}

View File

@@ -1,4 +1,5 @@
{
"verbose": true,
"git": {
"commitMessage": "chore(release): v${version}",
"requireCleanWorkingDir": true
@@ -10,7 +11,7 @@
"skipChecks": true
},
"hooks": {
"before:init": ["yarn", "yarn clean", "yarn test"]
"before:init": ["pnpm i", "pnpm clean", "pnpm test"]
},
"plugins": {
"@release-it/conventional-changelog": {

25
.release-it.pre.json Normal file
View File

@@ -0,0 +1,25 @@
{
"verbose": true,
"git": {
"requireCleanWorkingDir": false,
"commit": false,
"push": false,
"tag": false
},
"github": {
"release": true
},
"npm": {
"skipChecks": true,
"tag": "canary"
},
"hooks": {
"before:init": ["pnpm i", "pnpm clean", "pnpm test"]
},
"plugins": {
"@release-it/conventional-changelog": {
"preset": "angular",
"infile": "CHANGELOG.md"
}
}
}

3
.vscode/extensions.json vendored Normal file
View File

@@ -0,0 +1,3 @@
{
"recommendations": ["esbenp.prettier-vscode", "dbaeumer.vscode-eslint"]
}

170
.vscode/launch.json vendored
View File

@@ -1,46 +1,146 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Debug Jest Tests",
"type": "node",
"command": "pnpm run dev _community",
"cwd": "${workspaceFolder}",
"name": "Run Dev Community",
"request": "launch",
"runtimeArgs": [
"--inspect-brk",
"${workspaceRoot}/node_modules/.bin/jest",
"--runInBand"
],
"env": {
"PAYLOAD_CONFIG_PATH": "demo/payload.config.ts"
},
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen",
"runtimeExecutable": "${workspaceFolder}/node_modules/.bin/babel-node",
"port": 9229,
"skipFiles": [
"<node_internals>/**"
]
"type": "node-terminal"
},
{
"type": "node",
"command": "pnpm run dev fields",
"cwd": "${workspaceFolder}",
"name": "Run Dev Fields",
"request": "launch",
"name": "Launch Program",
"env": {
"BABEL_ENV": "development"
},
"program": "${workspaceFolder}/test/dev.js",
"skipFiles": [
"<node_internals>/**"
],
"runtimeArgs": [
"--nolazy"
],
"args": [
"fields"
]
"type": "node-terminal"
},
]
{
"command": "pnpm run dev:postgres fields",
"cwd": "${workspaceFolder}",
"name": "Run Dev Postgres",
"request": "launch",
"type": "node-terminal"
},
{
"command": "pnpm run dev versions",
"cwd": "${workspaceFolder}",
"name": "Run Dev Versions",
"request": "launch",
"type": "node-terminal"
},
{
"command": "PAYLOAD_BUNDLER=vite pnpm run dev fields",
"cwd": "${workspaceFolder}",
"name": "Run Dev Fields (Vite)",
"request": "launch",
"type": "node-terminal",
"env": {
"NODE_ENV": "production"
}
},
{
"command": "ts-node ./packages/payload/src/bin/index.ts build",
"env": {
"PAYLOAD_CONFIG_PATH": "test/fields/config.ts",
"PAYLOAD_BUNDLER": "vite",
"DISABLE_SWC": "true" // SWC messes up debugging the bin scripts
},
"name": "Build CLI - Vite",
"outputCapture": "std",
"request": "launch",
"type": "node-terminal"
},
{
"command": "ts-node ./packages/payload/src/bin/index.ts build",
"env": {
"PAYLOAD_CONFIG_PATH": "test/fields/config.ts",
"PAYLOAD_ANALYZE_BUNDLE": "true",
"DISABLE_SWC": "true" // SWC messes up debugging the bin scripts
},
"name": "Build CLI - Webpack",
"outputCapture": "std",
"request": "launch",
"type": "node-terminal"
},
{
"command": "ts-node ./packages/payload/src/bin/index.ts generate:types",
"env": {
"PAYLOAD_CONFIG_PATH": "test/_community/config.ts",
"DISABLE_SWC": "true" // SWC messes up debugging the bin scripts
},
"name": "Generate Types CLI",
"outputCapture": "std",
"request": "launch",
"type": "node-terminal"
},
{
"command": "ts-node ./packages/payload/src/bin/index.ts migrate:status",
"env": {
"PAYLOAD_CONFIG_PATH": "test/migrations-cli/config.ts",
"PAYLOAD_DATABASE": "postgres",
"DISABLE_SWC": "true" // SWC messes up debugging the bin scripts
// "PAYLOAD_DROP_DATABASE": "true",
},
"name": "Migrate CLI - status",
"outputCapture": "std",
"request": "launch",
"type": "node-terminal"
},
{
"command": "ts-node ./packages/payload/src/bin/index.ts migrate:create yass",
"env": {
"PAYLOAD_CONFIG_PATH": "test/migrations-cli/config.ts",
"PAYLOAD_DATABASE": "postgres",
"DISABLE_SWC": "true" // SWC messes up debugging the bin scripts
// "PAYLOAD_DROP_DATABASE": "true",
},
"name": "Migrate CLI - create",
"outputCapture": "std",
"request": "launch",
"type": "node-terminal"
},
{
"command": "ts-node ./packages/payload/src/bin/index.ts migrate:down",
"env": {
"PAYLOAD_CONFIG_PATH": "test/migrations-cli/config.ts",
"PAYLOAD_DATABASE": "mongoose",
"DISABLE_SWC": "true" // SWC messes up debugging the bin scripts
// "PAYLOAD_DROP_DATABASE": "true",
},
"name": "Migrate CLI - down",
"outputCapture": "std",
"request": "launch",
"type": "node-terminal"
},
{
"command": "ts-node ./packages/payload/src/bin/index.ts migrate:reset",
"env": {
"PAYLOAD_CONFIG_PATH": "test/migrations-cli/config.ts",
"PAYLOAD_DATABASE": "mongoose",
"DISABLE_SWC": "true" // SWC messes up debugging the bin scripts
// "PAYLOAD_DROP_DATABASE": "true",
},
"name": "Migrate CLI - reset",
"outputCapture": "std",
"request": "launch",
"type": "node-terminal"
},
{
"command": "ts-node ./packages/payload/src/bin/index.ts migrate:refresh",
"env": {
"PAYLOAD_CONFIG_PATH": "test/migrations-cli/config.ts",
"PAYLOAD_DATABASE": "mongoose",
"DISABLE_SWC": "true" // SWC messes up debugging the bin scripts
// "PAYLOAD_DROP_DATABASE": "true",
},
"name": "Migrate CLI - refresh",
"outputCapture": "std",
"request": "launch",
"type": "node-terminal"
}
],
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0"
}

39
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,39 @@
{
"npm.packageManager": "pnpm",
"editor.defaultFormatter": "esbenp.prettier-vscode",
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
}
},
"[typescriptreact]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
}
},
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
}
},
"[json]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true
},
"[jsonc]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true
},
"editor.formatOnSaveMode": "file",
// All ESLint rules to 'warn' to differentate from TypeScript's 'error' level
"eslint.rules.customizations": [{ "rule": "*", "severity": "warn" }],
"typescript.tsdk": "node_modules/typescript/lib",
// Load .git-blame-ignore-revs file
"gitlens.advanced.blame.customArguments": ["--ignore-revs-file", ".git-blame-ignore-revs"]
}

File diff suppressed because it is too large Load Diff

91
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,91 @@
# Contributing to Payload
Below you'll find a set of guidelines for how to contribute to Payload.
## Opening issues
Before you submit an issue, please check all existing [open and closed issues](https://github.com/payloadcms/payload/issues) to see if your issue has previously been resolved or is already known. If there is already an issue logged, feel free to upvote it by adding a :thumbsup: [reaction](https://github.com/blog/2119-add-reactions-to-pull-requests-issues-and-comments). If you would like to submit a new issue, please fill out our Issue Template to the best of your ability so we can accurately understand your report.
## Security issues & vulnerabilities
If you come across an issue related to security, or a potential attack vector within Payload or one of its dependencies, please DO NOT create a publicly viewable issue. Instead, please contact us directly at [`dev@payloadcms.com`](mailto:dev@payloadcms.com). We will do everything we can to respond to the issue as soon as possible.
If you find a vulnerability within the core Payload repository, and we determine that it is remediable and of significant nature, we will be happy to pay you a reward for your findings and diligence. [`Contact us`](mailto:dev@payloadcms.com) to find out more.
## Documentation edits
Payload documentation can be found directly within its codebase and you can feel free to make changes / improvements to any of it through opening a PR. We utilize these files directly in our website and will periodically deploy documentation updates as necessary.
## Building additional features
If you're an incredibly awesome person and want to help us make Payload even better through new features or additions, we would be thrilled to work with you.
## Design Contributions
When it comes to design-related changes or additions, it's crucial for us to ensure a cohesive user experience and alignment with our broader design vision. Before embarking on any implementation that would affect the design or UI/UX, we ask that you **first share your design proposal** with us for review and approval.
Our design review ensures that proposed changes fit seamlessly with other components, both existing and planned. This step is meant to prevent unintentional design inconsistencies and to save you from investing time in implementing features that might need significant design alterations later.
### Before Starting
To help us work on new features, you can create a new feature request post in [GitHub Discussion](https://github.com/payloadcms/payload/discussions) or discuss it in our [Discord](https://discord.com/invite/payload). New functionality often has large implications across the entire Payload repo, so it is best to discuss the architecture and approach before starting work on a pull request.
### Code
Most new functionality should keep testing in mind. With 1.0, testability of new features has been vastly improved. All top-level directories within the `test/` directory are for testing a specific category: `fields`, `collections`, etc.
If it makes sense to add your feature to an existing test directory, please do so.
A typical directory with `test/` will be structured like this:
```text
.
├── config.ts
├── int.spec.ts
├── e2e.spec.ts
└── payload-types.ts
```
- `config.ts` - This is the _granular_ Payload config for testing. It should be as lightweight as possible. Reference existing configs for an example
- `int.spec.ts` - This is the test file run by jest. Any test file must have a `*int.spec.ts` suffix.
- `e2e.spec.ts` - This is the end-to-end test file that will load up the admin UI using the above config and run Playwright tests. These tests are typically only needed if a large change is being made to the Admin UI.
- `payload-types.ts` - Generated types from `config.ts`. Generate this file by running `pnpm dev:generate-types my-test-dir`.
The directory split up in this way specifically to reduce friction when creating tests and to add the ability to boot up Payload with that specific config.
The following command will start Payload with your config: `pnpm dev my-test-dir`. This command will start up Payload using your config and refresh a test database on every restart.
By default, it will automatically log you in with the default credentials. To disable that, you can either pass in the --no-auto-login flag (example: `pnpm dev my-test-dir --no-auto-login`) or set the `PAYLOAD_PUBLIC_DISABLE_AUTO_LOGIN` environment variable to `false`.
If you wish to use to your own Mongo database for the `test` directory instead of using the in memory database, all you need to do is add the following env vars to the `test/dev.ts` file:
- `process.env.NODE_ENV`
- `process.env.PAYLOAD_TEST_MONGO_URL`
- Simply set `process.env.NODE_ENV` to `test` and set `process.env.PAYLOAD_TEST_MONGO_URL` to your mongo url e.g. `mongodb://127.0.0.1/your-test-db`.
NOTE: It is recommended to add the test credentials (located in `test/credentials.ts`) to your autofill for `localhost:3000/admin` as this will be required on every nodemon restart. The default credentials are `dev@payloadcms.com` as E-Mail and `test` as password.
### Commits
We use [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) for our commit messages. Please follow this format when creating commits. Here are some examples:
- `feat: adds new feature`
- `fix: fixes bug`
- `docs: adds documentation`
- `chore: does chore`
Here's a breakdown of the format. At the top-level, we use the following types to categorize our commits:
- `feat`: new feature that adds functionality. These are automatically added to the changelog when creating new releases.
- `fix`: a fix to an existing feature. These are automatically added to the changelog when creating new releases.
- `docs`: changes to [docs](./docs) only. These do not appear in the changelog.
- `chore`: changes to code that is neither a fix nor a feature (e.g. refactoring, adding tests, etc.). These do not appear in the changelog.
If you are committing to [templates](./templates) or [examples](./examples), use the `chore` type with the proper scope, like this:
- `chore(templates): adds feature to template`
- `chore(examples): fixes bug in example`
## Pull Requests
For all Pull Requests, you should be extremely descriptive about both your problem and proposed solution. If there are any affected open or closed issues, please leave the issue number in your PR message.

69
ISSUE_GUIDE.md Normal file
View File

@@ -0,0 +1,69 @@
# Reporting an issue
To report an issue, please follow the steps below:
1. Fork this repository
2. Add necessary collections/globals/fields to the `test/_community` directory to recreate the issue you are experiencing
3. Create an issue and add a link to your forked repo
**The goal is to isolate the problem by reducing the number of fields/collections you add to the test/\_community folder. This folder is not meant for you to copy your project into, but to recreate the issue you are experiencing with minimal config.**
## Test directory file tree explanation
```text
.
├── config.ts
├── int.spec.ts
├── e2e.spec.ts
└── payload-types.ts
```
- `config.ts` - This is the _granular_ Payload config for testing. It should be as lightweight as possible. Reference existing configs for an example
- `int.spec.ts` [Optional] - This is the test file run by jest. Any test file must have a `*int.spec.ts` suffix.
- `e2e.spec.ts` [Optional] - This is the end-to-end test file that will load up the admin UI using the above config and run Playwright tests.
- `payload-types.ts` - Generated types from `config.ts`. Generate this file by running `pnpm dev:generate-types _community`.
The directory split up in this way specifically to reduce friction when creating tests and to add the ability to boot up Payload with that specific config. You should modify the files in `test/_community` to get started.
## How to start test collection admin UI
To start the admin panel so you can manually recreate your issue, you can run the following command:
```bash
# This command will start up Payload using your config
# NOTE: it will wipe the test database on restart
pnpm dev _community
```
## Testing is optional but encouraged
An issue does not need to have failing tests — reproduction steps with your forked repo are enough at this point. Some people like to dive deeper and we want to give you the guidance/tools to do so. Read more below.
### How to run integration tests (Payload API tests)
There are a couple ways to do this:
- **Granularly** - you can run individual tests in vscode by installing the Jest Runner plugin and using that to run individual tests. Clicking the `debug` button will run the test in debug mode allowing you to set break points.
<img src="https://raw.githubusercontent.com/payloadcms/payload/main/src/admin/assets/images/github/int-debug.png" />
- **Manually** - you can run all int tests in the `/test/_community/int.spec.ts` file by running the following command:
```bash
pnpm test:int _community
```
### How to run E2E tests (Admin Panel UI tests)
The easiest way to run E2E tests is to install
- [Playwright Test for VSCode](https://marketplace.visualstudio.com/items?itemName=ms-playwright.playwright)
- [Playwright Runner](https://marketplace.visualstudio.com/items?itemName=ortoni.ortoni)
Once they are installed you can open the `testing` tab in vscode sidebar and drill down to the test you want to run, i.e. `/test/_community/e2e.spec.ts`
<img src="https://raw.githubusercontent.com/payloadcms/payload/main/src/admin/assets/images/github/e2e-debug.png" />
#### Notes
- It is recommended to add the test credentials (located in `test/credentials.ts`) to your autofill for `localhost:3000/admin` as this will be required on every nodemon restart. The default credentials are `dev@payloadcms.com` as email and `test` as password.

148
README.md
View File

@@ -1,30 +1,79 @@
<h1 align="center">Payload</h1>
<p align="center">A free and open-source TypeScript headless CMS & application framework built with Express, MongoDB and React.</p>
<p align="center">
<a href="https://opensource.org/licenses/MIT">
<img src="https://img.shields.io/badge/License-MIT-blue.svg" />
</a>
<a href="https://payloadcms.com">
<img width="100%" src="https://github.com/payloadcms/payload/blob/main/packages/payload/src/admin/assets/images/github-banner-alt.jpg?raw=true" alt="Payload headless CMS Admin panel built with React" />
</a>
<br />
<br />
<p align="left">
<a href="https://github.com/payloadcms/payload/actions">
<img src="https://github.com/payloadcms/payload/workflows/build/badge.svg" />
<img alt="GitHub Workflow Status" src="https://img.shields.io/github/actions/workflow/status/payloadcms/payload/main.yml?style=flat-square">
</a>
&nbsp;
<a href="https://discord.gg/payload">
<img alt="Discord" src="https://img.shields.io/discord/967097582721572934?label=Discord&color=7289da&style=flat-square" />
</a>
&nbsp;
<a href="https://www.npmjs.com/package/payload">
<img alt="npm" src="https://img.shields.io/npm/v/payload" />
<img alt="npm" src="https://img.shields.io/npm/v/payload?style=flat-square" />
</a>
<a href="https://twitter.com/intent/tweet?text=Payload%20-%20A%20self-hosted%2C%20headless%20JavaScript%20CMS%20%26%20application%20framework&url=https%3A%2F%2Fgithub.com%2Fpayloadcms%2Fpayload">
<img alt="Tweet Payload" src="https://img.shields.io/twitter/url/http/shields.io.svg?style=social" />
</a>
<a href="https://discord.com/invite/r6sCXqVk3v">
<img alt="Discord" src="https://img.shields.io/discord/967097582721572934?label=Discord&color=7289da" />
&nbsp;
<a href="https://twitter.com/payloadcms">
<img src="https://img.shields.io/badge/follow-payloadcms-1DA1F2?logo=twitter&style=flat-square" alt="Payload Twitter" />
</a>
</p>
<hr/>
<h4>
<a target="_blank" href="https://payloadcms.com/docs/getting-started/what-is-payload" rel="dofollow"><strong>Explore the Docs</strong></a>&nbsp;·&nbsp;<a target="_blank" href="https://payloadcms.com/community-help" rel="dofollow"><strong>Community Help</strong></a>&nbsp;·&nbsp;<a target="_blank" href="https://demo.payloadcms.com/" rel="dofollow"><strong>Try Live Demo</strong></a>&nbsp;·&nbsp;<a target="_blank" href="https://github.com/payloadcms/payload/discussions/1539" rel="dofollow"><strong>Roadmap</strong></a>&nbsp;·&nbsp;<a target="_blank" href="https://www.g2.com/products/payload-cms/reviews#reviews" rel="dofollow"><strong>View G2 Reviews</strong></a>
</h4>
<hr/>
<a href="https://payloadcms.com">
<img src="https://payloadcms.com/images/og-image.jpg" alt="Payload headless CMS Admin panel built with React" />
</a>
> [!IMPORTANT]
> 🎉 <strong>Payload 2.0 is now available!<strong> Read more in the <a target="_blank" href="https://payloadcms.com/blog/payload-2-0" rel="dofollow"><strong>announcement post</strong></a>.
### Features
<h3>Benefits over a regular CMS</h3>
<ul>
<li>Dont hit some third-party SaaS API, hit your own API</li>
<li>Use your own database and own your data</li>
<li>It's just Express - do what you want outside of Payload</li>
<li>No need to learn how Payload works - if you know JS, you know Payload</li>
<li>No vendor lock-in</li>
<li>Avoid microservices hell - get everything (even auth) in one place</li>
<li>Never touch ancient WP code again</li>
<li>Build faster, never hit a roadblock</li>
<li>Both admin and backend are 100% extensible</li>
</ul>
## ☁️ Deploy instantly with Payload Cloud.
Create a cloud account, connect your GitHub, and [deploy in minutes](https://payloadcms.com/new).
## 🚀 Get started by self-hosting completely free, forever.
Before beginning to work with Payload, make sure you have all of the [required software](https://payloadcms.com/docs/getting-started/installation).
```text
npx create-payload-app
```
Alternatively, it only takes about five minutes to [create an app from scratch](https://payloadcms.com/docs/getting-started/installation#from-scratch).
## 🖱️ One-click templates
Jumpstart your next project by starting with a pre-made template. These are production-ready, end-to-end solutions designed to get you to market as fast as possible.
### [🛒 E-Commerce](https://github.com/payloadcms/payload/tree/main/templates/ecommerce)
Eliminate the need to combine Shopify and a CMS, and instead do it all with Payload + Stripe. Comes with a beautiful, fully functional front-end complete with shopping cart, checkout, orders, and much more.
### [🌐 Website](https://github.com/payloadcms/payload/tree/main/templates/website)
Build any kind of website, blog, or portfolio from small to enterprise. Comes with a beautiful, fully functional front-end complete with posts, projects, comments, and much more.
We're constantly adding more templates to our [Templates Directory](https://github.com/payloadcms/payload/tree/main/templates). If you maintain your own template, consider adding the `payload-template` topic to your GitHub repository for others to find.
- [Official Templates](https://github.com/payloadcms/payload/tree/main/templates)
- [Community Templates](https://github.com/topics/payload-template)
## ✨ Features
- Completely free and open-source
- [GraphQL](https://payloadcms.com/docs/graphql/overview), [REST](https://payloadcms.com/docs/rest-api/overview), and [Local](https://payloadcms.com/docs/local-api/overview) APIs
@@ -44,41 +93,46 @@
- Intensely fast API
- Highly secure thanks to HTTP-only cookies, CSRF protection, and more
### Code-first
<a target="_blank" href="https://github.com/payloadcms/payload/discussions"><strong>Request Feature</strong></a>
Payload is a CMS that has been designed for developers from the ground up to deliver them what they need to build great digital products. If you know JavaScript, you know Payload. It's a _code-first_ CMS, which allows us to do a lot of things right:
- Payload gives you everything you need, but then steps back and lets you build what you want in JavaScript or TypeScript - with no unnecessary complexity brought by GUIs. You'll understand how your CMS works because you will have written it exactly how you want it.
- Bring your own Express server and do whatever you need on top of Payload. Payload doesn't impose anything on you or your app.
- Completely control the Admin panel by using your own React components. Swap out fields or even entire views with ease.
- Use your data however and wherever you need thanks to auto-generated, yet fully extensible REST, GraphQL, and Local Node APIs.
### Quick Start
Before beginning to work with Payload, make sure you have all of the [required software](https://payloadcms.com/docs/getting-started/installation).
From there, the easiest way to get started with Payload is to use the `create-payload-app` package:
```
npx create-payload-app
```
Alternatively, it only takes about five minutes to [create an app from scratch](https://payloadcms.com/docs/getting-started/installation#from-scratch).
### Documentation
## 🗒️ Documentation
Check out the [Payload website](https://payloadcms.com/docs/getting-started/what-is-payload) to find in-depth documentation for everything that Payload offers.
### Contributing
Migrating from v1 to v2? Check out the [2.0 Release Notes](https://github.com/payloadcms/payload/releases/tag/v2.0.0) on how to do it.
If you want to add contributions to this repository, please follow the instructions in [contributing.md](./contributing.md).
## 🙋 Contributing
### Other Resources
If you want to add contributions to this repository, please follow the instructions in [contributing.md](./CONTRIBUTING.md).
##### Discussions
## 📚 Examples
There are lots of good conversations and resources in our [GitHub Discussions board](https://github.com/payloadcms/payload/discussions). If you're struggling with something, chances are, someone's already solved what you're up against. Searching Discussions will often provide very helpful tips and tricks.
The [Examples Directory](./examples) is a great resource for learning how to setup Payload in a variety of different ways, but you can also find great examples in our blog and throughout our social media.
##### Discord
- [Examples Directory](./examples)
- [Payload Blog](https://payloadcms.com/blog)
- [Payload YouTube](https://www.youtube.com/@payloadcms)
Join [Payload's Discord channel](https://discord.com/invite/r6sCXqVk3v) to interact with Payload developers in realtime.
## 🔌 Plugins
Payload is highly extensible and allows you to install or distribute plugins that add or remove functionality. There are both officially-supported and community-supported plugins available. If you maintain your own plugin, consider adding the `payload-plugin` topic to your GitHub repository for others to find.
- [Official Plugins](https://github.com/orgs/payloadcms/repositories?q=topic%3Apayload-plugin)
- [Community Plugins](https://github.com/topics/payload-plugin)
## 🚨 Need help?
There are lots of good conversations and resources in our Github Discussions board and our Discord Server. If you're struggling with something, chances are, someone's already solved what you're up against. :point_down:
- [GitHub Discussions](https://github.com/payloadcms/payload/discussions)
- [GitHub Issues](https://github.com/payloadcms/payload/issues)
- [Discord](https://t.co/30APlsQUPB)
- [Community Help](https://payloadcms.com/community-help)
## ⭐ Like what we're doing? Give us a star
![payload-github-star](https://cms.payloadcms.com/media/payload-github-star.gif)
## 👏 Thanks to all our contributors
<img align="left" src="https://contributors-img.web.app/image?repo=payloadcms/payload"/>

1
auth.d.ts vendored
View File

@@ -1 +0,0 @@
export * from './dist/auth';

View File

@@ -1 +0,0 @@
module.exports = require('./dist/auth');

View File

@@ -1,3 +0,0 @@
const config = require('./src/babel.config');
module.exports = config;

View File

@@ -1,3 +0,0 @@
const babelConfig = require('./dist/babel.config');
exports.config = babelConfig;

2
bin.js
View File

@@ -1,2 +0,0 @@
#!/usr/bin/env node
require('./dist/bin');

View File

@@ -1,5 +0,0 @@
export { default as Button } from '../dist/admin/components/elements/Button';
export { default as Card } from '../dist/admin/components/elements/Card';
export { default as Eyebrow } from '../dist/admin/components/elements/Eyebrow';
export { default as Nav } from '../dist/admin/components/elements/Nav';
export { Gutter } from '../dist/admin/components/elements/Gutter';

View File

@@ -1 +0,0 @@
export type { Props } from '../../dist/admin/components/forms/field-types/Array/types';

View File

@@ -1 +0,0 @@
export type { Props } from '../../dist/admin/components/forms/field-types/Blocks/types';

View File

@@ -1 +0,0 @@
export type { Props } from '../../dist/admin/components/views/collections/List/Cell/types';

View File

@@ -1 +0,0 @@
export type { Props } from '../../dist/admin/components/forms/field-types/Checkbox/types';

View File

@@ -1 +0,0 @@
export type { Props } from '../../dist/admin/components/forms/field-types/Code/types';

View File

@@ -1 +0,0 @@
export type { Props } from '../../dist/admin/components/forms/field-types/DateTime/types';

View File

@@ -1 +0,0 @@
export type { Props } from '../../dist/admin/components/forms/field-types/Email/types';

View File

@@ -1 +0,0 @@
export type { Props } from '../../dist/admin/components/forms/field-types/Group/types';

View File

@@ -1 +0,0 @@
export type { Props } from '../../dist/admin/components/forms/field-types/Number/types';

View File

@@ -1 +0,0 @@
export type { Props } from '../../dist/admin/components/forms/field-types/Password/types';

View File

@@ -1 +0,0 @@
export type { Props } from '../../../dist/admin/components/forms/field-types/RadioGroup/RadioInput/types';

View File

@@ -1 +0,0 @@
export type { Props } from '../../../dist/admin/components/forms/field-types/RadioGroup/types';

View File

@@ -1 +0,0 @@
export type { Props, Option, ValueWithRelation } from '../../dist/admin/components/forms/field-types/Relationship/types';

View File

@@ -1 +0,0 @@
export type { Props } from '../../dist/admin/components/forms/field-types/RichText/types';

View File

@@ -1 +0,0 @@
export type { Props } from '../../dist/admin/components/forms/field-types/Row/types';

View File

@@ -1 +0,0 @@
export type { Props } from '../../dist/admin/components/forms/field-types/Select/types';

View File

@@ -1 +0,0 @@
export type { Props } from '../../dist/admin/components/forms/field-types/Text/types';

View File

@@ -1 +0,0 @@
export type { Props } from '../../dist/admin/components/forms/field-types/Textarea/types';

View File

@@ -1 +0,0 @@
export type { Props } from '../../dist/admin/components/forms/field-types/Upload/types';

View File

@@ -1,38 +0,0 @@
export {
useForm,
/**
* @deprecated useWatchForm is no longer preferred. If you need all form fields, prefer `useAllFormFields`.
*/
useWatchForm,
useFormFields,
useAllFormFields,
useFormSubmitted,
useFormProcessing,
useFormModified,
} from '../dist/admin/components/forms/Form/context';
export { default as useField } from '../dist/admin/components/forms/useField';
/**
* @deprecated This method is now called useField. The useFieldType alias will be removed in an upcoming version.
*/
export { default as useFieldType } from '../dist/admin/components/forms/useField';
export { default as Form } from '../dist/admin/components/forms/Form';
export { default as Text } from '../dist/admin/components/forms/field-types/Text';
export { default as TextInput } from '../dist/admin/components/forms/field-types/Text/Input';
export { default as Group } from '../dist/admin/components/forms/field-types/Group';
export { default as Select } from '../dist/admin/components/forms/field-types/Select';
export { default as SelectInput } from '../dist/admin/components/forms/field-types/Select/Input';
export { default as Checkbox } from '../dist/admin/components/forms/field-types/Checkbox';
export { default as Submit } from '../dist/admin/components/forms/Submit';
export { default as Label } from '../dist/admin/components/forms/Label';
export { default as reduceFieldsToValues } from '../dist/admin/components/forms/Form/reduceFieldsToValues';
export { default as getSiblingData } from '../dist/admin/components/forms/Form/getSiblingData';
export { default as withCondition } from '../dist/admin/components/forms/withCondition';

View File

@@ -1 +0,0 @@
export { useStepNav } from '../dist/admin/components/elements/StepNav';

View File

@@ -1,2 +0,0 @@
export { default as Chevron } from '../src/admin/components/icons/Chevron';
export { default as X } from '../src/admin/components/icons/X';

View File

@@ -1 +0,0 @@
export * from '../dist/admin/components';

View File

@@ -1 +0,0 @@
export { usePreferences } from '../dist/admin/components/utilities/Preferences';

View File

@@ -1,3 +0,0 @@
export { default as LeafButton } from '../dist/admin/components/forms/field-types/RichText/leaves/Button';
export { default as ElementButton } from '../dist/admin/components/forms/field-types/RichText/elements/Button';
export { default as toggleElement } from '../dist/admin/components/forms/field-types/RichText/elements/toggle';

View File

@@ -1,2 +0,0 @@
export { default as DefaultTemplate } from '../dist/admin/components/templates/Default';
export { default as MinimalTemplate } from '../dist/admin/components/templates/Minimal';

View File

@@ -1,6 +0,0 @@
export { default as Meta } from '../dist/admin/components/utilities/Meta';
export { useLocale } from '../dist/admin/components/utilities/Locale';
export { useDocumentInfo } from '../dist/admin/components/utilities/DocumentInfo';
export { useConfig } from '../dist/admin/components/utilities/Config';
export { useAuth } from '../dist/admin/components/utilities/Auth';
export { useEditDepth } from '../dist/admin/components/utilities/EditDepth';

View File

@@ -1,2 +0,0 @@
export { default as Cell } from '../../dist/admin/components/views/collections/List/Cell';
export type { Props } from '../../dist/admin/components/views/collections/List/Cell/types';

View File

@@ -1,3 +0,0 @@
export { default as Dashboard } from '../../dist/admin/components/views/Dashboard/Default';
export type { Props } from '../../dist/admin/components/views/Dashboard/types';

View File

@@ -1,2 +0,0 @@
export { default as Edit } from '../../dist/admin/components/views/collections/Edit/Default';
export type { Props } from '../../dist/admin/components/views/collections/Edit/types';

View File

@@ -1,2 +0,0 @@
export { default as List } from '../../dist/admin/components/views/collections/List/Default';
export type { Props } from '../../dist/admin/components/views/collections/Edit/types';

2
config.d.ts vendored
View File

@@ -1,2 +0,0 @@
export { buildConfig } from './dist/config/build';
export * from './dist/config/types';

View File

@@ -1 +0,0 @@
exports.buildConfig = require('./dist/config/build').buildConfig;

View File

@@ -1,58 +0,0 @@
# Contributing to Payload CMS
Below you'll find a set of guidelines for how to contribute to Payload CMS.
## Opening issues
Before you submit an issue, please check all existing [open and closed issues](https://github.com/payloadcms/payload/issues) to see if your issue has previously been resolved or is already known. If there is already an issue logged, feel free to upvote it by adding a :thumbsup: [reaction](https://github.com/blog/2119-add-reactions-to-pull-requests-issues-and-comments). If you would like to submit a new issue, please fill out our Issue Template to the best of your ability so we can accurately understand your report.
## Security issues & vulnerabilities
If you come across an issue related to security, or a potential attack vector within Payload or one of its dependencies, please DO NOT create a publicly viewable issue. Instead, please contact us directly at [`dev@payloadcms.com`](mailto:dev@payloadcms.com). We will do everything we can to respond to the issue as soon as possible.
If you find a vulnerability within the core Payload repository, and we determine that it is remediable and of significant nature, we will be happy to pay you a reward for your findings and diligence. [`Contact us`](mailto:dev@payloadcms.com) to find out more.
## Documentation edits
Payload documentation can be found directly within its codebase and you can feel free to make changes / improvements to any of it through opening a PR. We utilize these files directly in our website and will periodically deploy documentation updates as necessary.
## Building additional features
If you're an incredibly awesome person and want to help us make Payload even better through new features or additions, we would be thrilled to work with you.
### Before Starting
To help us work on new features, you can create a new feature request post in [GitHub Discussion](https://github.com/payloadcms/payload/discussions) or discuss it in our [Discord](https://discord.com/invite/r6sCXqVk3v). New functionality often has large implications across the entire Payload repo, so it is best to discuss the architecture and approach before starting work on a pull request.
### Code
Most new functionality should keep testing in mind. With 1.0, testability of new features has been vastly improved. All top-level directories within the `test/` directory are for testing a specific category: `fields`, `collections`, etc.
If it makes sense to add your feature to an existing test directory, please do so.
A typical directory with `test/` will be structured like this:
```text
.
├── config.ts
├── int.spec.ts
├── e2e.spec.ts
└── payload-types.ts
```
- `config.ts` - This is the _granular_ Payload config for testing. It should be as lightweight as possible. Reference existing configs for an example
- `int.spec.ts` - This is the test file run by jest. Any test file must have a `*int.spec.ts` suffix.
- `e2e.spec.ts` - This is the end-to-end test file that will load up the admin UI using the above config and run Playwright tests. These tests are typically only needed if a large change is being made to the Admin UI.
- `payload-types.ts` - Generated types from `config.ts`. Generate this file by running `yarn dev:generate-types my-test-dir`.
The directory split up in this way specifically to reduce friction when creating tests and to add the ability to boot up Payload with that specific config.
The following command will start Payload with your config: `yarn dev my-test-dir`. This command will start up Payload using your config and refresh a test database on every restart.
When switching between test directories, you will want to remove your `node_modules/.cache ` manually or by running `yarn clean:cache`.
NOTE: It is recommended to add the test credentials (located in `test/credentials.ts`) to your autofill for `localhost:3000/admin` as this will be required on every nodemon restart.
## Pull Requests
For all Pull Requests, you should be extremely descriptive about both your problem and proposed solution. If there are any affected open or closed issues, please leave the issue number in your PR message.

View File

@@ -10,27 +10,28 @@ You can define Collection-level Access Control within each Collection's `access`
## Available Controls
| Function | Allows/Denies Access |
| ------------------------ | -------------------- |
| **[`create`](#create)** | Used in the `create` operation |
| **[`read`](#read)** | Used in the `find` and `findByID` operations |
| **[`update`](#update)** | Used in the `update` operation |
| **[`delete`](#delete)** | Used in the `delete` operation |
| Function | Allows/Denies Access |
| ----------------------- | -------------------------------------------- |
| **[`create`](#create)** | Used in the `create` operation |
| **[`read`](#read)** | Used in the `find` and `findByID` operations |
| **[`update`](#update)** | Used in the `update` operation |
| **[`delete`](#delete)** | Used in the `delete` operation |
#### Auth-enabled Controls
If a Collection supports [`Authentication`](/docs/authentication/overview), the following Access Controls become available:
| Function | Allows/Denies Access |
| ----------------------- | -------------------- |
| **[`admin`](#admin)** | Used to restrict access to the Payload Admin panel |
| Function | Allows/Denies Access |
| ----------------------- | -------------------------------------------------------------- |
| **[`admin`](#admin)** | Used to restrict access to the Payload Admin panel |
| **[`unlock`](#unlock)** | Used to restrict which users can access the `unlock` operation |
**Example Collection config:**
```ts
import { CollectionConfig } from 'payload/types';
const Posts: CollectionConfig = {
export const Posts: CollectionConfig = {
slug: "posts",
// highlight-start
access: {
@@ -42,8 +43,6 @@ const Posts: CollectionConfig = {
},
// highlight-end
};
export default Categories;
```
### Create
@@ -52,10 +51,10 @@ Returns a boolean which allows/denies access to the `create` request.
**Available argument properties:**
| Option | Description |
| ---------- | ----------- |
| Option | Description |
| ---------- | -------------------------------------------------------------------------- |
| **`req`** | The Express `request` object containing the currently authenticated `user` |
| **`data`** | The data passed to create the document with. |
| **`data`** | The data passed to create the document with. |
**Example:**
@@ -79,20 +78,20 @@ Read access functions can return a boolean result or optionally return a [query
**Available argument properties:**
| Option | Description |
| --------- | ----------- |
| Option | Description |
| --------- | -------------------------------------------------------------------------- |
| **`req`** | The Express `request` object containing the currently authenticated `user` |
| **`id`** | `id` of document requested, if within `findByID` |
| **`id`** | `id` of document requested, if within `findByID` |
**Example:**
```ts
import { Access } from 'payload/config';
import { Access } from 'payload/config'
const canReadPage: Access = ({ req: { user } }) => {
// allow authenticated users
if (user) {
return true;
return true
}
// using a query constraint, guest users can access when a field named 'isPublic' is set to true
return {
@@ -101,7 +100,7 @@ const canReadPage: Access = ({ req: { user } }) => {
equals: true,
},
}
};
}
```
### Update
@@ -110,25 +109,25 @@ Update access functions can return a boolean result or optionally return a [quer
**Available argument properties:**
| Option | Description |
| ---------- | ----------- |
| Option | Description |
| ---------- | -------------------------------------------------------------------------- |
| **`req`** | The Express `request` object containing the currently authenticated `user` |
| **`id`** | `id` of document requested to update |
| **`data`** | The data passed to update the document with |
| **`id`** | `id` of document requested to update |
| **`data`** | The data passed to update the document with |
**Example:**
```ts
import { Access } from 'payload/config';
import { Access } from 'payload/config'
const canUpdateUser: Access = ({ req: { user }, id }) => {
// allow users with a role of 'admin'
if (user.roles && user.roles.some(role => role === 'admin')) {
return true;
if (user.roles && user.roles.some((role) => role === 'admin')) {
return true
}
// allow any other users to update only oneself
return user.id === id;
};
return user.id === id
}
```
### Delete
@@ -137,10 +136,10 @@ Similarly to the Update function, returns a boolean or a [query constraint](/doc
**Available argument properties:**
| Option | Description |
| --------- | ----------- |
| Option | Description |
| --------- | --------------------------------------------------------------------------------------------------- |
| **`req`** | The Express `request` object with additional `user` property, which is the currently logged in user |
| **`id`** | `id` of document requested to delete |
| **`id`** | `id` of document requested to delete |
**Example:**
@@ -150,7 +149,7 @@ import { Access } from 'payload/config'
const canDeleteCustomer: Access = async ({ req, id }) => {
if (!id) {
// allow the admin UI to show controls to delete since it is indeterminate without the id
return true;
return true
}
// query another collection using the id
const result = await req.payload.find({
@@ -160,10 +159,10 @@ const canDeleteCustomer: Access = async ({ req, id }) => {
where: {
customer: { equals: id },
},
});
})
return result.totalDocs === 0;
};
return result.totalDocs === 0
}
```
### Admin
@@ -172,8 +171,8 @@ If the Collection is [used to access the Payload Admin panel](/docs/admin/overvi
**Available argument properties:**
| Option | Description |
| --------- | ----------- |
| Option | Description |
| --------- | -------------------------------------------------------------------------- |
| **`req`** | The Express `request` object containing the currently authenticated `user` |
### Unlock
@@ -182,6 +181,6 @@ Determines which users can [unlock](/docs/authentication/operations#unlock) othe
**Available argument properties:**
| Option | Description |
| --------- | ----------- |
| Option | Description |
| --------- | -------------------------------------------------------------------------- |
| **`req`** | The Express `request` object containing the currently authenticated `user` |

View File

@@ -10,17 +10,18 @@ Field Access Control is specified with functions inside a field's config. All fi
## Available Controls
| Function | Purpose |
| ------------------------ | ------- |
| **[`create`](#create)** | Allows or denies the ability to set a field's value when creating a new document |
| **[`read`](#read)** | Allows or denies the ability to read a field's value |
| **[`update`](#update)** | Allows or denies the ability to update a field's value |
| Function | Purpose |
| ----------------------- | -------------------------------------------------------------------------------- |
| **[`create`](#create)** | Allows or denies the ability to set a field's value when creating a new document |
| **[`read`](#read)** | Allows or denies the ability to read a field's value |
| **[`update`](#update)** | Allows or denies the ability to update a field's value |
**Example Collection config:**
```ts
import { CollectionConfig } from 'payload/types';
const Posts: CollectionConfig = {
export const Posts: CollectionConfig = {
slug: 'posts',
fields: [
{
@@ -44,11 +45,11 @@ Returns a boolean which allows or denies the ability to set a field's value when
**Available argument properties:**
| Option | Description |
| ----------------- | ----------- |
| Option | Description |
| ----------------- | -------------------------------------------------------------------------- |
| **`req`** | The Express `request` object containing the currently authenticated `user` |
| **`data`** | The full data passed to create the document. |
| **`siblingData`** | Immediately adjacent field data passed to create the document. |
| **`data`** | The full data passed to create the document. |
| **`siblingData`** | Immediately adjacent field data passed to create the document. |
### Read
@@ -56,23 +57,25 @@ Returns a boolean which allows or denies the ability to read a field's value. If
**Available argument properties:**
| Option | Description |
| ----------------- | ----------- |
| Option | Description |
| ----------------- | -------------------------------------------------------------------------- |
| **`req`** | The Express `request` object containing the currently authenticated `user` |
| **`id`** | `id` of the document being read |
| **`doc`** | The full document data. |
| **`siblingData`** | Immediately adjacent field data of the document being read. |
| **`id`** | `id` of the document being read |
| **`doc`** | The full document data. |
| **`siblingData`** | Immediately adjacent field data of the document being read. |
### Update
Returns a boolean which allows or denies the ability to update a field's value. If `false` is returned, any passed values will be discarded.
If `false` is returned and you attempt to update the field's value, the operation will **not** throw an error however the field will be omitted from the update operation and the value will remain unchanged.
**Available argument properties:**
| Option | Description |
| ----------------- | ----------- |
| Option | Description |
| ----------------- | -------------------------------------------------------------------------- |
| **`req`** | The Express `request` object containing the currently authenticated `user` |
| **`id`** | `id` of the document being updated |
| **`data`** | The full data passed to update the document. |
| **`siblingData`** | Immediately adjacent field data passed to update the document with. |
| **`doc`** | The full document data, before the update is applied. |
| **`id`** | `id` of the document being updated |
| **`data`** | The full data passed to update the document. |
| **`siblingData`** | Immediately adjacent field data passed to update the document with. |
| **`doc`** | The full document data, before the update is applied. |

View File

@@ -8,30 +8,35 @@ keywords: globals, access control, permissions, documentation, Content Managemen
You can define Global-level Access Control within each Global's `access` property. All Access Control functions accept one `args` argument.
**Available argument properties:
\*\*Available argument properties:
## Available Controls
| Function | Allows/Denies Access |
| ------------------------ | -------------------- |
| **[`read`](#read)** | Used in the `findOne` Global operation |
| **[`update`](#update)** | Used in the `update` Global operation |
| Function | Allows/Denies Access |
| ----------------------- | -------------------------------------- |
| **[`read`](#read)** | Used in the `findOne` Global operation |
| **[`update`](#update)** | Used in the `update` Global operation |
**Example Global config:**
```ts
import { GlobalConfig } from 'payload/types';
import { GlobalConfig } from 'payload/types'
const Header: GlobalConfig = {
slug: "header",
slug: 'header',
// highlight-start
access: {
read: ({ req: { user } }) => { /* */ },
update: ({ req: { user } }) => { /* */ },
read: ({ req: { user } }) => {
/* */
},
update: ({ req: { user } }) => {
/* */
},
},
// highlight-end
};
}
export default Header;
export default Header
```
### Read
@@ -40,8 +45,8 @@ Returns a boolean result or optionally a [query constraint](/docs/queries/overvi
**Available argument properties:**
| Option | Description |
| --------- | ----------- |
| Option | Description |
| --------- | -------------------------------------------------------------------------- |
| **`req`** | The Express `request` object containing the currently authenticated `user` |
### Update
@@ -50,7 +55,7 @@ Returns a boolean result or optionally a [query constraint](/docs/queries/overvi
**Available argument properties:**
| Option | Description |
| ---------- | ----------- |
| Option | Description |
| ---------- | -------------------------------------------------------------------------- |
| **`req`** | The Express `request` object containing the currently authenticated `user` |
| **`data`** | The data passed to update the global with. |
| **`data`** | The data passed to update the global with. |

View File

@@ -8,10 +8,7 @@ keywords: overview, access control, permissions, documentation, Content Manageme
Access control within Payload is extremely powerful while remaining easy and intuitive to manage. Declaring who should have access to what documents is no more complex than writing a simple JavaScript function that either returns a `boolean` or a [`query`](/docs/queries/overview) constraint to restrict which documents users can interact with.
<YouTube
id="DoPLyXG26Dg"
title="Overview of Payload Access Control"
/>
<YouTube id="DoPLyXG26Dg" title="Overview of Payload Access Control" />
**Example use cases:**
@@ -32,13 +29,18 @@ Access control within Payload is extremely powerful while remaining easy and int
const defaultPayloadAccess = ({ req: { user } }) => {
// Return `true` if a user is found
// and `false` if it is undefined or null
return Boolean(user);
return Boolean(user)
}
```
<Banner type="success">
<strong>Note:</strong><br/>
In the Local API, all Access Control functions are skipped by default, allowing your server to do whatever it needs. But, you can opt back in by setting the option <strong>overrideAccess</strong> to <strong>true</strong>.
<strong>Note:</strong>
<br />
In the Local API, all Access Control functions are skipped by default, allowing your server to do
whatever it needs. But, you can opt back in by setting the option <strong>
overrideAccess
</strong>{' '}
to <strong>false</strong>.
</Banner>
### Access Control Types
@@ -49,12 +51,13 @@ You can manage access within Payload on three different levels:
- [Fields](/docs/access-control/fields)
- [Globals](/docs/access-control/globals)
### When Access Control is Executed
<Banner type="success">
<strong>Note:</strong><br/>
Access control functions are utilized in two places. It's important to understand how and when your access control is executed.
<strong>Note:</strong>
<br />
Access control functions are utilized in two places. It's important to understand how and when
your access control is executed.
</Banner>
#### As you execute operations
@@ -70,8 +73,11 @@ To accomplish this, Payload ships with an `Access` operation, which is executed
### Argument Availability
<Banner type="warning">
<strong>Important:</strong><br/>
When your access control functions are executed via the <strong>access</strong> operation, the <strong>id</strong> and <strong>data</strong> arguments will be <strong>undefined</strong>, because Payload is executing your functions without referencing a specific document.
<strong>Important:</strong>
<br />
When your access control functions are executed via the <strong>access</strong> operation, the{' '}
<strong>id</strong> and <strong>data</strong> arguments will be <strong>undefined</strong>,
because Payload is executing your functions without referencing a specific document.
</Banner>
If you use `id` or `data` within your access control functions, make sure to check that they are defined first. If they are not, then you can assume that your access control is being executed via the `access` operation, to determine solely what the user can do within the Admin UI.

54
docs/admin/bundlers.mdx Normal file
View File

@@ -0,0 +1,54 @@
---
title: Bundlers
label: Bundlers
order: 60
desc: Bundlers are used to bundle the code that serves Payload's Admin Panel.
---
Payload has two official bundlers, the [Webpack Bundler](/docs/admin/webpack) and the [Vite Bundler](/docs/admin/vite). You must install a bundler to use the admin panel.
##### Install a bundler
Webpack (recommended):
```text
yarn add @payloadcms/bundler-webpack
```
Vite (beta):
```text
yarn add @payloadcms/bundler-vite
```
##### Configure the bundler
```ts
// payload.config.ts
import { buildConfig } from 'payload/config'
import { webpackBundler } from '@payloadcms/bundler-webpack'
// import { viteBundler } from '@payloadcms/bundler-vite'
export default buildConfig({
// highlight-start
admin: {
bundler: webpackBundler() // or viteBundler()
},
// highlight-end
})
```
### What are bundlers?
At their core, a bundler's main goal is to take a bunch of files and turn them into a few optimized files that you ship to the browser. The admin UI has a root `index.html` entry point, and from there the bundler traverses the dependency tree, bundling all of the files that are required from that point on.
Since the bundled file is sent to the browser, it can't include any server-only code. You will need to remove any server-only code from your admin UI before bundling it. You can learn more about [excluding server code](/docs/admin/excluding-server-code) section.
<Banner type="warning">
<strong>Using environment variables in the admin UI</strong>
<br />
Bundles should not contain sensitive information. By default, Payload
excludes env variables from the bundle. If you need to use env variables in your payload config,
you need to prefix them with `PAYLOAD_PUBLIC_` to make them available to the client-side code.
</Banner>

View File

@@ -6,44 +6,43 @@ desc: Fully customize your Admin Panel by swapping in your own React components.
keywords: admin, components, custom, documentation, Content Management System, cms, headless, javascript, node, react, express
---
While designing the Payload Admin panel, we determined it should be as minimal and straightforward as possible to allow easy customization and control. There are many times where you may want to completely control how a whole view or a field works. You might even want to add in your own routes entirely. In order for Payload to support that level of customization without introducing versioning / future-proofing issues, Payload provides for a pattern to supply your own React components via your Payload config.
While designing the Payload Admin panel, we determined it should be as minimal and straightforward as possible to allow easy customization and control. There are many times where you may want to completely control how a whole view or a field works. You might even want to add in new views entirely. In order for Payload to support this level of customization without introducing versioning / future-proofing issues, Payload provides for a pattern to supply your own React components via your Payload config.
To swap in your own React component, first, consult the list of available component overrides below. Determine the scope that corresponds to what you are trying to accomplish, and then author your React component accordingly.
<Banner type="success">
<strong>Tip:</strong>
<br />
Custom components will automatically be provided with all props that the
default component would accept.
Custom components will automatically be provided with all props that the default component normally
accepts.
</Banner>
### Base Component Overrides
You can override a set of admin panel-wide components by providing a component to your base Payload config's `admin.components` property. The following options are available:
| Path | Description |
| ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **`Nav`** | Contains the sidebar and mobile Nav in its entirety. |
| **`logout.Button`** | A custom React component.
| **`BeforeDashboard`** | Array of components to inject into the built-in Dashboard, _before_ the default dashboard contents. |
| **`AfterDashboard`** | Array of components to inject into the built-in Dashboard, _after_ the default dashboard contents. [Demo](https://github.com/payloadcms/payload/tree/master/test/admin/components/AfterDashboard/index.tsx) |
| **`BeforeLogin`** | Array of components to inject into the built-in Login, _before_ the default login form. |
| **`AfterLogin`** | Array of components to inject into the built-in Login, _after_ the default login form. |
| **`BeforeNavLinks`** | Array of components to inject into the built-in Nav, _before_ the links themselves. |
| **`AfterNavLinks`** | Array of components to inject into the built-in Nav, _after_ the links. |
| **`views.Account`** | The Account view is used to show the currently logged in user's Account page. |
| **`views.Dashboard`** | The main landing page of the Admin panel. |
| **`graphics.Icon`** | Used as a graphic within the `Nav` component. Often represents a condensed version of a full logo. |
| **`graphics.Logo`** | The full logo to be used in contexts like the `Login` view. |
| **`routes`** | Define your own routes to add to the Payload Admin UI. [More](#custom-routes) |
| **`providers`** | Define your own provider components that will wrap the Payload Admin UI. [More](#custom-providers) |
| Path | Description |
| --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **`Nav`** | Contains the sidebar / mobile menu in its entirety. |
| **`BeforeNavLinks`** | Array of components to inject into the built-in Nav, _before_ the links themselves. |
| **`AfterNavLinks`** | Array of components to inject into the built-in Nav, _after_ the links. |
| **`BeforeDashboard`** | Array of components to inject into the built-in Dashboard, _before_ the default dashboard contents. |
| **`AfterDashboard`** | Array of components to inject into the built-in Dashboard, _after_ the default dashboard contents. [Demo](https://github.com/payloadcms/payload/tree/main/test/admin/components/AfterDashboard/index.tsx) |
| **`BeforeLogin`** | Array of components to inject into the built-in Login, _before_ the default login form. |
| **`AfterLogin`** | Array of components to inject into the built-in Login, _after_ the default login form. |
| **`logout.Button`** | A custom React component. |
| **`graphics.Icon`** | Used as a graphic within the `Nav` component. Often represents a condensed version of a full logo. |
| **`graphics.Logo`** | The full logo to be used in contexts like the `Login` view. |
| **`providers`** | Define your own provider components that will wrap the Payload Admin UI. [More](#custom-providers) |
| **`views`** | Override or create new views within the Payload Admin UI. [More](#views) |
#### Full example:
Here is a full example showing how to swap some of these components for your own.
`payload.config.js`
```ts
import { buildConfig } from "payload/config";
import { buildConfig } from 'payload/config'
import {
MyCustomNav,
MyCustomLogo,
@@ -51,7 +50,7 @@ import {
MyCustomAccount,
MyCustomDashboard,
MyProvider,
} from "./customComponents";
} from './customComponents'
export default buildConfig({
admin: {
@@ -68,27 +67,344 @@ export default buildConfig({
providers: [MyProvider],
},
},
});
})
```
_For more examples regarding how to customize components, look at the following [examples](https://github.com/payloadcms/payload/tree/master/test/admin/components)._
#### Views
You can easily swap entire views with your own by using the `admin.components.views` property. At the root level, Payload renders the following views dy default, all of which can be overridden:
| Property | Description |
| ------------------ | ---------------------------------------------------------------------------------------------------------------------------- |
| **`Account`** | The Account view is used to show the currently logged in user's Account page. |
| **`Dashboard`** | The main landing page of the Admin panel. |
To swap out any of these views, simply pass in your custom component to the `admin.components.views` property of your Payload config. For example:
```ts
// payload.config.ts
{
// ...
admin: {
components: {
views: {
Account: MyCustomAccountView,
Dashboard: MyCustomDashboardView,
},
},
},
}
```
For more granular control, pass a configuration object instead. Payload exposes all of the properties of `<Route />` component in [React Router v5](https://v5.reactrouter.com):
| Property | Description |
| ------------------ | ---------------------------------------------------------------------------------------------------------------------------- |
| **`Component`** \* | Pass in the component that should be rendered when a user navigates to this route. |
| **`path`** \* | React Router `path`. [See the React Router docs](https://v5.reactrouter.com/web/api/Route/path-string-string) for more info. |
| **`exact`** | React Router `exact` property. [More](https://v5.reactrouter.com/web/api/Route/exact-bool) |
| **`strict`** | React Router `strict` property. [More](https://v5.reactrouter.com/web/api/Route/strict-bool) |
| **`sensitive`** | React Router `sensitive` property. [More](https://v5.reactrouter.com/web/api/Route/sensitive-bool) |
_\* An asterisk denotes that a property is required._
#### Adding new views
To add a _new_ view to the Admin Panel, simply add another key to the `views` object with at least a `path` and `Component` property. For example:
```ts
// payload.config.ts
{
// ...
admin: {
components: {
views: {
MyCustomView: {
Component: MyCustomView,
path: '/my-custom-view',
},
},
},
},
}
```
_For more examples regarding how to customize components, look at the following [examples](https://github.com/payloadcms/payload/tree/main/test/admin/components)._
For help on how to build your own custom view components, see [building a custom view component](#building-a-custom-view-component).
### Collections
You can override components on a Collection-by-Collection basis via each Collection's `admin` property.
You can override components on a collection-by-collection basis via their `admin` property.
| Path | Description |
| ---------------- | ------------------------------------------------------------------------------------------------ |
| **`views.Edit`** | Used while a document within this Collection is being edited. |
| **`views.List`** | The `List` view is used to render a paginated, filterable table of Documents in this Collection. |
| Path | Description |
| -------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| **`BeforeList`** | Array of components to inject _before_ the built-in List view |
| **`BeforeListTable`** | Array of components to inject _before_ the built-in List view's table |
| **`AfterList`** | Array of components to inject _after_ the built-in List view |
| **`AfterListTable`** | Array of components to inject _after_ the built-in List view's table |
| **`edit.SaveButton`** | Replace the default `Save` button with a custom component. Drafts must be disabled |
| **`edit.SaveDraftButton`** | Replace the default `Save Draft` button with a custom component. Drafts must be enabled and autosave must be disabled. |
| **`edit.PublishButton`** | Replace the default `Publish` button with a custom component. Drafts must be enabled. |
| **`edit.PreviewButton`** | Replace the default `Preview` button with a custom component. |
| **`views`** | Override or create new views within the Payload Admin UI. [More](#collection-views) |
Here is a full example showing how to swap some of these components for your own:
`Collection.ts`
```tsx
import * as React from 'react'
import {
CustomSaveButtonProps,
CustomSaveDraftButtonProps,
CustomPublishButtonProps,
CustomPreviewButtonProps,
} from 'payload/types'
export const CustomSaveButton: CustomSaveButtonProps = ({ DefaultButton, label }) => {
return <DefaultButton label={label} />
}
export const CustomSaveDraftButton: CustomSaveDraftButtonProps = ({
DefaultButton,
disabled,
label,
saveDraft,
}) => {
return <DefaultButton label={label} disabled={disabled} saveDraft={saveDraft} />
}
export const CustomPublishButton: CustomPublishButtonProps = ({
DefaultButton,
disabled,
label,
publish,
}) => {
return <DefaultButton label={label} disabled={disabled} publish={publish} />
}
export const CustomPreviewButton: CustomPreviewButtonProps = ({
DefaultButton,
disabled,
label,
preview,
}) => {
return <DefaultButton label={label} disabled={disabled} preview={preview} />
}
export const MyCollection: SanitizedCollectionConfig = {
slug: 'my-collection',
admin: {
components: {
edit: {
SaveButton: CustomSaveButton,
SaveDraftButton: CustomSaveDraftButton,
PublishButton: CustomPublishButton,
PreviewButton: CustomPreviewButton,
},
},
}
}
```
#### Collection views
To swap out entire views on collections, you can use the `admin.components.views` property on the collection's config. Payload renders the following views dy default, all of which can be overridden:
| Property | Description |
| ------------------ | ---------------------------------------------------------------------------------------------------------------------------- |
| **`Edit`** | The Edit view is used to edit a single document for a given collection. |
| **`List`** | The List view is used to show a list of documents for a given collection. |
To swap out any of these views, simply pass in your custom component to the `admin.components.views` property of your Payload config. This will replace the entire view, including the page breadcrumbs, title, tabs, etc, _as well as all nested routes_.
```ts
// Collection.ts
{
// ...
admin: {
components: {
views: {
Edit: MyCustomEditView,
List: MyCustomListView,
},
},
},
}
```
_For help on how to build your own custom view components, see [building a custom view component](#building-a-custom-view-component)._
To swap specific _nested_ views within the parent `Edit` view, you can use the `admin.components.views.Edit` property on the globals's config. This will only replace the nested view, leaving the page breadcrumbs, title, tabs, etc intact.
```ts
// Collection.ts
{
// ...
admin: {
components: {
views: {
Edit: {
Default: MyCustomDefaultTab,
},
},
},
},
}
```
You can also add _new_ tabs to the `Edit` view by adding another key to the `components.views.Edit[key]` object with a `path` and `Component` property. See [Custom Tabs](#custom-tabs) for more information.
### Globals
As with Collections, You can override components on a global-by-global basis via their `admin` property.
As with Collections, you can override components on a global-by-global basis via their `admin` property.
| Path | Description |
| ---------------- | --------------------------------------- |
| **`views.Edit`** | Used while this Global is being edited. |
| Path | Description |
| -------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| **`edit.SaveButton`** | Replace the default `Save` button with a custom component. Drafts must be disabled |
| **`edit.SaveDraftButton`** | Replace the default `Save Draft` button with a custom component. Drafts must be enabled and autosave must be disabled. |
| **`edit.PublishButton`** | Replace the default `Publish` button with a custom component. Drafts must be enabled. |
| **`edit.PreviewButton`** | Replace the default `Preview` button with a custom component. |
| **`views`** | Override or create new views within the Payload Admin UI. [More](#global-views) |
#### Global views
To swap out views for globals, you can use the `admin.components.views` property on the global's config. Payload renders the following views dy default, all of which can be overridden:
| Property | Description |
| ------------------ | ---------------------------------------------------------------------------------------------------------------------------- |
| **`Edit`** | The Edit view is used to edit a single document for a given Global. |
To swap out any of these views, simply pass in your custom component to the `admin.components.views` property of your Payload config. This will replace the entire view, including the page breadcrumbs, title, and tabs, _as well as all nested views_.
```ts
// Global.ts
{
// ...
admin: {
components: {
views: {
Edit: MyCustomEditView,
},
},
},
}
```
_For help on how to build your own custom view components, see [building a custom view component](#building-a-custom-view-component)._
To swap specific _nested_ views within the parent `Edit` view, you can use the `admin.components.views.Edit` property on the globals's config. This will only replace the nested view, leaving the page breadcrumbs, title, and tabs intact.
```ts
// Global.ts
{
// ...
admin: {
components: {
views: {
Edit: {
Default: MyCustomDefaultTab,
},
},
},
},
}
```
You can also add _new_ tabs to the `Edit` view by adding another key to the `components.views.Edit[key]` object with a `path` and `Component` property. See [Custom Tabs](#custom-tabs) for more information.
### Custom Tabs
You can easily swap individual collection or global edit views. To do this, pass an _object_ to the `admin.components.views.Edit` property of the config. Payload renders the following views dy default, all of which can be overridden:
| Property | Description |
| ------------------ | ---------------------------------------------------------------------------------------------------------------------------- |
| **`Default`** | The Default view is the primary view in which your document is edited. |
| **`Versions`** | The Versions view is used to view the version history of a single document. [More details](../versions) |
| **`Version`** | The Version view is used to view a single version of a single document for a given collection. [More details](../versions). |
| **`API`** | The API view is used to display the REST API JSON response for a given document. |
| **`LivePreview`** | The LivePreview view is used to display the Live Preview interface. [More details](../live-preview) |
Here is an example:
```ts
// Collection.ts or Global.ts
export const MyCollection: SanitizedCollectionConfig = {
slug: 'my-collection',
admin: {
components: {
views: {
Edit: { // You can also define `components.views.Edit` as a component, this will override _all_ nested views
Default: MyCustomDefaultTab,
Versions: MyCustomVersionsTab,
Version: MyCustomVersionTab,
API: MyCustomAPITab,
LivePreview: MyCustomLivePreviewTab,
},
},
},
},
}
```
To add a _new_ tab to the `Edit` view, simply add another key to `components.views.Edit[key]` with at least a `path` and `Component` property. For example:
```ts
// `Collection.ts` or `Global.ts`
export const MyCollection: SanitizedCollectionConfig = {
slug: 'my-collection',
admin: {
components: {
views: {
Edit: {
MyCustomTab: {
Component: MyCustomTab,
path: '/my-custom-tab',
// You an swap the entire tab component out for your own
Tab: MyCustomTab
},
AnotherCustomView: {
Component: AnotherCustomView,
path: '/another-custom-view',
// Or you can use the default tab component and just pass in your own label and href
Tab: {
label: 'Another Custom View',
href: '/another-custom-view',
}
},
},
},
},
},
}
```
### Building a custom view component
Your custom view components will be given all the props that a React Router `<Route />` typically would receive, as well as two props from Payload:
| Prop | Description |
| ----------------------- | ---------------------------------------------------------------------------- |
| **`user`** | The currently logged in user. Will be `null` if no user is logged in. |
| **`canAccessAdmin`** \* | If the currently logged in user is allowed to access the admin panel or not. |
<Banner type="warning">
<strong>Note:</strong>
<br />
It's up to you to secure your custom views. If your view requires a user to be logged in or to
have certain access rights, you should handle that within your view component yourself.
</Banner>
#### Example
You can find examples of custom views in the [Payload source code `/test/admin/components/views` folder](https://github.com/payloadcms/payload/tree/main/test/admin/components/views). There, you'll find two custom views:
1. A custom view that uses the `DefaultTemplate`, which is the built-in Payload template that displays the sidebar and "eyebrow nav"
1. A custom view that uses the `MinimalTemplate` - which is just a centered template used for things like logging in or out
To see how to pass in your custom views to create custom views of your own, take a look at the `admin.components.views` property of the [Payload test admin config](https://github.com/payloadcms/payload/blob/main/test/admin/config.ts).
### Fields
@@ -97,10 +413,9 @@ All Payload fields support the ability to swap in your own React components. So,
<Banner type="success">
<strong>Tip:</strong>
<br />
Don't see a built-in field type that you need? Build it! Using a combination
of custom validation and custom components, you can override the entirety of
how a component functions within the admin panel and effectively create your
own field type.
Don't see a built-in field type that you need? Build it! Using a combination of custom validation
and custom components, you can override the entirety of how a component functions within the admin
panel and effectively create your own field type.
</Banner>
**Fields support the following custom components:**
@@ -126,15 +441,15 @@ These are the props that will be passed to your custom Cell to use in your own c
#### Example
```tsx
import React from "react";
import "./index.scss";
const baseClass = "custom-cell";
import React from 'react'
import './index.scss'
const baseClass = 'custom-cell'
const CustomCell: React.FC<Props> = (props) => {
const { field, colIndex, collection, cellData, rowData } = props;
const { field, colIndex, collection, cellData, rowData } = props
return <span className={baseClass}>{cellData}</span>;
};
return <span className={baseClass}>{cellData}</span>
}
```
## Field Component
@@ -146,75 +461,31 @@ When writing your own custom components you can make use of a number of hooks to
When swapping out the `Field` component, you'll be responsible for sending and receiving the field's `value` from the form itself. To do so, import the `useField` hook as follows:
```tsx
import { useField } from "payload/components/forms";
import { useField } from 'payload/components/forms'
type Props = { path: string };
type Props = { path: string }
const CustomTextField: React.FC<Props> = ({ path }) => {
// highlight-start
const { value, setValue } = useField<Props>({ path });
const { value, setValue } = useField<Props>({ path })
// highlight-end
return (
<input onChange={(e) => setValue(e.target.value)} value={value.path} />
);
};
return <input onChange={(e) => setValue(e.target.value)} value={value.path} />
}
```
<Banner type="success">
For more information regarding the hooks that are available to you while you
build custom components, including the <strong>useField</strong> hook, <a href="/docs/admin/hooks" style={{ color: "black" }}>click here</a>.
For more information regarding the hooks that are available to you while you build custom
components, including the <strong>useField</strong> hook, [click here](/docs/admin/hooks).
</Banner>
## Custom routes
You can easily add your own custom routes to the Payload Admin panel using the `admin.components.routes` property. Payload currently uses the extremely powerful React Router v5.x and custom routes support all the properties of the React Router `<Route />` component.
**Custom routes support the following properties:**
| Property | Description |
| ------------------ | ---------------------------------------------------------------------------------------------------------------------------- |
| **`Component`** \* | Pass in the component that should be rendered when a user navigates to this route. |
| **`path`** \* | React Router `path`. [See the React Router docs](https://v5.reactrouter.com/web/api/Route/path-string-string) for more info. |
| **`exact`** | React Router `exact` property. [More](https://v5.reactrouter.com/web/api/Route/exact-bool) |
| **`strict`** | React Router `strict` property. [More](https://v5.reactrouter.com/web/api/Route/strict-bool) |
| **`sensitive`** | React Router `sensitive` property. [More](https://v5.reactrouter.com/web/api/Route/sensitive-bool) |
_\* An asterisk denotes that a property is required._
#### Custom route components
Your custom route components will be given all the props that a React Router `<Route />` typically would receive, as well as two props from Payload:
| Prop | Description |
| ----------------------- | ---------------------------------------------------------------------------- |
| **`user`** | The currently logged in user. Will be `null` if no user is logged in. |
| **`canAccessAdmin`** \* | If the currently logged in user is allowed to access the admin panel or not. |
<Banner type="warning">
<strong>Note:</strong>
<br />
It's up to you to secure your custom routes. If your route requires a user to
be logged in or to have certain access rights, you should handle that within
your route component yourself.
</Banner>
#### Example
You can find examples of custom route views in the [Payload source code `/test/admin/components/views` folder](https://github.com/payloadcms/payload/tree/master/test/admin/components/views). There, you'll find two custom routes:
1. A custom view that uses the `DefaultTemplate`, which is the built-in Payload template that displays the sidebar and "eyebrow nav"
1. A custom view that uses the `MinimalTemplate` - which is just a centered template used for things like logging in or out
To see how to pass in your custom views to create custom routes of your own, take a look at the `admin.components.routes` property of the [Payload test admin config](https://github.com/payloadcms/payload/blob/master/test/admin/config.ts).
## Custom providers
As your admin customizations gets more complex you may want to share state between fields or other components. You can add custom providers to do add your own context to any Payload app for use in other custom components within the admin panel. Within your config add `admin.components.providers`, these can be used to share context or provide other custom functionality. Read the [React context](https://reactjs.org/docs/context.html) docs to learn more.
<Banner type="warning">
<strong>Reminder:</strong> Don't forget to pass the **children** prop through
the provider component for the admin UI to show
<strong>Reminder:</strong> Don't forget to pass the **children** prop through the provider
component for the admin UI to show
</Banner>
### Styling Custom Components
@@ -232,41 +503,42 @@ To make use of Payload SCSS variables / mixins to use directly in your own compo
When developing custom components you can support multiple languages to be consistent with Payload's i18n support. The best way to do this is to add your translation resources to the [i18n configuration](https://payloadcms.com/docs/configuration/i18n) and import `useTranslation` from `react-i18next` in your components.
For example:
```tsx
import { useTranslation } from 'react-i18next';
import { useTranslation } from 'react-i18next'
const CustomComponent: React.FC = () => {
// highlight-start
const { t, i18n } = useTranslation('namespace1');
const { t, i18n } = useTranslation('namespace1')
// highlight-end
return (
<ul>
<li>{ t('key', { variable: 'value' }) }</li>
<li>{ t('namespace2:key', { variable: 'value' }) }</li>
<li>{ i18n.language }</li>
<li>{t('key', { variable: 'value' })}</li>
<li>{t('namespace2:key', { variable: 'value' })}</li>
<li>{i18n.language}</li>
</ul>
);
};
)
}
```
### Getting the current locale
In any custom component you can get the selected locale with the `useLocale` hook. Here is a simple example:
In any custom component you can get the selected locale with `useLocale` hook. `useLocale` returns the full locale object, consisting of a `label`, `rtl`(right-to-left) property, and then `code`. Here is a simple example:
```tsx
import { useLocale } from "payload/components/utilities";
import { useLocale } from 'payload/components/utilities'
const Greeting: React.FC = () => {
// highlight-start
const locale = useLocale();
const locale = useLocale()
// highlight-end
const trans = {
en: "Hello",
es: "Hola",
};
en: 'Hello',
es: 'Hola',
}
return <span> {trans[locale]} </span>;
};
return <span> {trans[locale.code]} </span>
}
```

View File

@@ -13,15 +13,16 @@ You can add your own CSS by providing your base Payload config with a path to yo
To do so, provide your base Payload config with a path to your own stylesheet. It can be either a CSS or SCSS file.
**Example in payload.config.js:**
```ts
import { buildConfig } from 'payload/config';
import path from 'path';
import { buildConfig } from 'payload/config'
import path from 'path'
const config = buildConfig({
admin: {
css: path.resolve(__dirname, 'relative/path/to/stylesheet.scss'),
},
});
admin: {
css: path.resolve(__dirname, 'relative/path/to/stylesheet.scss'),
},
})
```
### Overriding built-in styles
@@ -30,7 +31,7 @@ To make it as easy as possible for you to override our styles, Payload uses [BEM
In addition to adding your own style definitions, you can also override Payload's built-in CSS variables. We use as much as possible behind the scenes, and you can override any of them that you'd like to.
You can find the built-in Payload CSS variables within [`./src/admin/scss/app.scss`](https://github.com/payloadcms/payload/blob/master/src/admin/scss/app.scss) and [`./src/admin/scss/colors.scss`](https://github.com/payloadcms/payload/blob/master/src/admin/scss/colors.scss). The following variables are defined and can be overridden:
You can find the built-in Payload CSS variables within [`./src/admin/scss/app.scss`](https://github.com/payloadcms/payload/blob/main/packages/payload/src/admin/scss/app.scss) and [`./src/admin/scss/colors.scss`](https://github.com/payloadcms/payload/blob/main/packages/payload/src/admin/scss/colors.scss). The following variables are defined and can be overridden:
- Breakpoints
- Base color shades (white to black by default)
@@ -43,7 +44,8 @@ You can find the built-in Payload CSS variables within [`./src/admin/scss/app.sc
#### Dark mode
<Banner type="warning">
If you're overriding colors or theme elevations, make sure to consider how your changes will affect dark mode.
If you're overriding colors or theme elevations, make sure to consider how your changes will
affect dark mode.
</Banner>
By default, Payload automatically overrides all `--theme-elevation`s and inverts all success / warning / error shades to suit dark mode. We also update some base theme variables like `--theme-bg`, `--theme-text`, etc.

View File

@@ -0,0 +1,27 @@
---
title: Environment Variables in Admin UI
label: Environment Variables
order: 100
desc: NEEDS TO BE WRITTEN
---
## Admin environment vars
<Banner type="warning">
<strong>Important:</strong>
<br />
Be careful about what variables you provide to your client-side code. Analyze every single one to
make sure that you're not accidentally leaking anything that an attacker could exploit. Only keys
that are safe for anyone to read in plain text should be provided to your Admin panel.
</Banner>
By default, `env` variables are **not** provided to the Admin panel for security and safety reasons.
But, Payload provides you with a way to still provide `env` vars to your frontend code.
**Payload will automatically supply any present `env` variables that are prefixed with `PAYLOAD_PUBLIC_` directly to the Admin panel.**
For example, if you've got the following environment variable:
`PAYLOAD_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_XXXXXXXXXXXXXXXXXX`
This key will automatically be made available to the Payload bundle and can be referenced in your Admin component code as `process.env.PAYLOAD_PUBLIC_STRIPE_PUBLISHABLE_KEY`.

View File

@@ -0,0 +1,131 @@
---
title: Excluding server-only code from admin UI
label: Excluding server code
order: 70
desc: Learn how to exclude server-only code from the Payload Admin UI bundle
---
Because the Admin Panel browser bundle includes your Payload Config file, files using server-only modules need to be excluded.
It's common for your config to rely on server only modules to perform logic in access control functions, hooks, and other contexts.
Any file that imports a server-only module such as `fs`, `stripe`, `authorizenet`, `nodemailer`, etc. **cannot** be included in the browser bundle.
#### Example Scenario
Say we have a collection called `Subscriptions` that has a `beforeChange` hook that creates a Stripe subscription whenever a Subscription document is created in Payload.
**Collection config**:
```ts
// collections/Subscriptions/index.ts
import { CollectionConfig } from 'payload/types'
import createStripeSubscription from './hooks/createStripeSubscription'
export const Subscription: CollectionConfig = {
slug: 'subscriptions',
hooks: {
beforeChange: [createStripeSubscription],
},
fields: [
{
name: 'stripeSubscriptionID',
type: 'text',
required: true,
},
],
}
```
**Collection hook**:
```ts
// collections/Subscriptions/hooks/createStripeSubscription.ts
// highlight-start
import Stripe from 'stripe' // <-- server-only module
// highlight-end
const stripe = new Stripe(process.env.STRIPE_SECRET_KEY)
export const createStripeSubscription = async ({ data, operation }) => {
if (operation === 'create') {
const dataWithStripeID = { ...data }
// use Stripe to create a Stripe subscription
const subscription = await stripe.subscriptions.create({
// Configure the subscription accordingly
})
// Automatically add the Stripe subscription ID
// to the data that will be saved to this Subscription doc
dataWithStripeID.stripeSubscriptionID = subscription.id
return dataWithStripeID
}
return data
}
```
<Banner type="error">
<strong>Warning:</strong>
<br />
The above code is NOT production-ready and should not be referenced to create Stripe
subscriptions. Although creating a beforeChange hook is a completely valid spot to do things like
create subscriptions, the code above is incomplete and insecure, meant for explanation purposes
only.
</Banner>
**As-is, this collection will prevent your Admin panel from bundling or loading correctly, because Stripe relies on some Node-only packages.**
#### How to fix this
You need to make sure that you use `alias`es to tell your bundler to import "safe" files vs. attempting to import any server-side code that you need to get rid of. Depending on your bundler (Webpack, Vite, etc.) the steps involved may be slightly different.
The basic idea is to create a file that exports an empty object, and then alias import paths of any files that import server-only modules to that empty object file.
This way when your bundler goes to import a file that contains server-only modules, it will instead import the empty object file, which will not break the browser bundle.
### Aliasing server-only modules
To remove files that contain server-only modules from your bundle, you can use an `alias`.
First create new file that exports an empty object:
```js
// mocks/emptyObject.js
export default {}
```
Then, in your Payload config, you can alias the file containing the server-only module to the mock module. For example, here's how you'd do this in Webpack:
```ts
// payload.config.ts
import { buildConfig } from 'payload/config'
import { webpackBundler } from '@payloadcms/bundler-webpack'
const mockModulePath = path.resolve(__dirname, 'mocks/emptyObject.js')
const pathToFileWithServerOnlyModule = path.resolve(__dirname, 'hooks/syncStripeCustomer.ts')
export default buildConfig({
admin: {
bundler: webpackBundler(),
webpack: (config) => {
return {
...config,
resolve: {
...config.resolve,
// highlight-start
alias: {
...config.resolve.alias,
[pathToFileWithServerOnlyModule]: mockModulePath,
},
// highlight-end
},
}
},
},
})
```

View File

@@ -24,7 +24,7 @@ const CustomTextField: React.FC<Props> = ({ path }) => {
const { value, setValue } = useField<string>({ path })
// highlight-end
return <input onChange={e => setValue(e.target.value)} value={value.path} />
return <input onChange={(e) => setValue(e.target.value)} value={value.path} />
}
```
@@ -54,10 +54,11 @@ const {
### useFormFields
There are times when a custom field component needs to have access to data from other fields, and you have a few options to do so. The `useFormFields` hook is a powerful and highly performant way to retrieve a form's field state, as well as to retrieve the `dispatchFields` method, which can be helpful for setting other fields' form states from anywhere within a form.
There are times when a custom field component needs to have access to data from other fields, and you have a few options to do so. The `useFormFields` hook is a powerful and highly performant way to retrieve a form's field state, as well as to retrieve the `dispatchFields` method, which can be helpful for setting other fields' form states from anywhere within a form.
<Banner type="success">
<strong>This hook is great for retrieving only certain fields from form state</strong> because it ensures that it will only cause a rerender when the items that you ask for change.
<strong>This hook is great for retrieving only certain fields from form state</strong> because it
ensures that it will only cause a rerender when the items that you ask for change.
</Banner>
Thanks to the awesome package [`use-context-selector`](https://github.com/dai-shi/use-context-selector), you can retrieve a specific field's state easily. This is ideal because you can ensure you have an up-to-date field state, and your component will only re-render when _that field's state_ changes.
@@ -65,26 +66,24 @@ Thanks to the awesome package [`use-context-selector`](https://github.com/dai-sh
You can pass a Redux-like selector into the hook, which will ensure that you retrieve only the field that you want. The selector takes an argument with type of `[fields: Fields, dispatch: React.Dispatch<Action>]]`.
```tsx
import { useFormFields } from 'payload/components/forms';
import { useFormFields } from 'payload/components/forms'
const MyComponent: React.FC = () => {
// Get only the `amount` field state, and only cause a rerender when that field changes
const amount = useFormFields(([fields, dispatch]) => fields.amount);
const amount = useFormFields(([fields, dispatch]) => fields.amount)
// Do the same thing as above, but to the `feePercentage` field
const feePercentage = useFormFields(([fields, dispatch]) => fields.feePercentage);
const feePercentage = useFormFields(([fields, dispatch]) => fields.feePercentage)
if (typeof amount?.value !== 'undefined' && typeof feePercentage?.value !== 'undefined') {
return (
<span>The fee is ${(amount.value * feePercentage.value) / 100}</span>
);
return <span>The fee is ${(amount.value * feePercentage.value) / 100}</span>
}
};
}
```
### useAllFormFields
**To retrieve more than one field**, you can use the `useAllFormFields` hook. Your component will re-render when _any_ field changes, so use this hook only if you absolutely need to. Unlike the `useFormFields` hook, this hook does not accept a "selector", and it always returns an array with type of `[fields: Fields, dispatch: React.Dispatch<Action>]]`.
**To retrieve more than one field**, you can use the `useAllFormFields` hook. Your component will re-render when _any_ field changes, so use this hook only if you absolutely need to. Unlike the `useFormFields` hook, this hook does not accept a "selector", and it always returns an array with type of `[fields: Fields, dispatch: React.Dispatch<Action>]]`.
You can do lots of powerful stuff by retrieving the full form state, like using built-in helper functions to reduce field state to values only, or to retrieve sibling data by path.
@@ -100,7 +99,7 @@ const ExampleComponent: React.FC = () => {
// The result below will reflect the data stored in the form at the given time
const formData = reduceFieldsToValues(fields, true);
// Pass in field state and a path,
// Pass in field state and a path,
// and you will be sent all sibling data of the path that you've specified
const siblingData = getSiblingData(fields, 'someFieldName');
@@ -117,7 +116,7 @@ If you are building a custom component, then you should use `setValue` which is
You can send the following actions to the `dispatchFields` function.
| Action | Description |
|------------------------|----------------------------------------------------------------------------|
| ---------------------- | -------------------------------------------------------------------------- |
| **`ADD_ROW`** | Adds a row of data (useful in array / block field data) |
| **`DUPLICATE_ROW`** | Duplicates a row of data (useful in array / block field data) |
| **`MODIFY_CONDITION`** | Updates a field's conditional logic result (true / false) |
@@ -127,143 +126,617 @@ You can send the following actions to the `dispatchFields` function.
| **`REPLACE_STATE`** | Completely replaces form state |
| **`UPDATE`** | Update any property of a specific field's state |
To see types for each action supported within the `dispatchFields` hook, check out the Form types [here](https://github.com/payloadcms/payload/blob/master/src/admin/components/forms/Form/types.ts).
To see types for each action supported within the `dispatchFields` hook, check out the Form types [here](https://github.com/payloadcms/payload/blob/main/packages/payload/src/admin/components/forms/Form/types.ts).
### useForm
The `useForm` hook can be used to interact with the form itself, and sends back many methods that can be used to reactively fetch form state without causing rerenders within your components each time a field is changed. This is useful if you have action-based callbacks that your components fire, and need to interact with form state _based on a user action_.
<Banner type="warning">
<strong>Warning:</strong><br/>
This hook is optimized to avoid causing rerenders when fields change, and as such, its `fields` property will be out of date. You should only leverage this hook if you need to perform actions against the form in response to your users' actions. Do not rely on its returned "fields" as being up-to-date. They will be removed from this hook's response in an upcoming version.
<strong>Warning:</strong>
<br />
This hook is optimized to avoid causing rerenders when fields change, and as such, its `fields`
property will be out of date. You should only leverage this hook if you need to perform actions
against the form in response to your users' actions. Do not rely on its returned "fields" as being
up-to-date. They will be removed from this hook's response in an upcoming version.
</Banner>
The `useForm` hook returns an object with the following properties:
The `useForm` hook returns an object with the following properties: |
| Action | Description |
|----------------------|---------------------------------------------------------------------|
| **`fields`** | Deprecated. This property cannot be relied on as up-to-date. |
| **`submit`** | Method to trigger the form to submit |
| **`dispatchFields`** | Dispatch actions to the form field state |
| **`validateForm`** | Trigger a validation of the form state |
| **`createFormData`** | Create a `multipart/form-data` object from the current form's state |
| **`disabled`** | Boolean denoting whether or not the form is disabled |
| **`getFields`** | Gets all fields from state |
| **`getField`** | Gets a single field from state by path |
| **`getData`** | Returns the data stored in the form |
| **`getSiblingData`** | Returns form sibling data for the given field path |
| **`setModified`** | Set the form's `modified` state |
| **`setProcessing`** | Set the form's `processing` state |
| **`setSubmitted`** | Set the form's `submitted` state |
| **`formRef`** | The ref from the form HTML element |
| **`reset`** | Method to reset the form to its initial state |
<TableWithDrawers
columns={[
'Action',
'Description',
'Example',
]}
rows={[
[
{
value: <strong><code>fields</code></strong>,
},
{
value: "Deprecated. This property cannot be relied on as up-to-date.",
},
{
value: ''
}
],
[
{
value: <strong><code>submit</code></strong>,
},
{
value: "Method to trigger the form to submit",
},
{
value: ''
}
],
[
{
value: <strong><code>dispatchFields</code></strong>,
},
{
value: "Dispatch actions to the form field state",
},
{
value: ''
}
],
[
{
value: <strong><code>validateForm</code></strong>,
},
{
value: "Trigger a validation of the form state",
},
{
value: ''
}
],
[
{
value: <strong><code>createFormData</code></strong>,
},
{
value: <>Create a <code>multipart/form-data</code> object from the current form's state</>,
},
{
value: ''
}
],
[
{
value: <strong><code>disabled</code></strong>,
},
{
value: "Boolean denoting whether or not the form is disabled",
},
{
value: ''
}
],
[
{
value: <strong><code>getFields</code></strong>,
},
{
value: 'Gets all fields from state',
},
{
value: '',
}
],
[
{
value: <strong><code>getField</code></strong>,
},
{
value: 'Gets a single field from state by path',
},
{
value: '',
},
],
[
{
value: <strong><code>getData</code></strong>,
},
{
value: 'Returns the data stored in the form',
},
{
value: '',
},
],
[
{
value: <strong><code>getSiblingData</code></strong>,
},
{
value: 'Returns form sibling data for the given field path',
},
{
value: '',
},
],
[
{
value: <strong><code>setModified</code></strong>,
},
{
value: <>Set the form\'s <code>modified</code> state</>,
},
{
value: '',
},
],
[
{
value: <strong><code>setProcessing</code></strong>,
},
{
value: <>Set the form\'s <code>processing</code> state</>,
},
{
value: '',
},
],
[
{
value: <strong><code>setSubmitted</code></strong>,
},
{
value: <>Set the form\'s <code>submitted</code> state</>,
},
{
value: '',
},
],
[
{
value: <strong><code>formRef</code></strong>,
},
{
value: 'The ref from the form HTML element',
},
{
value: '',
},
],
[
{
value: <strong><code>reset</code></strong>,
},
{
value: 'Method to reset the form to its initial state',
},
{
value: '',
},
],
[
{
value: <strong><code>addFieldRow</code></strong>,
},
{
value: "Method to add a row on an array or block field",
},
{
drawerTitle: 'addFieldRow',
drawerDescription: 'A useful method to programtically add a row to an array or block field.',
drawerSlug: 'addFieldRow',
drawerContent: (
<>
<TableWithDrawers
columns={[
'Prop',
'Description',
]}
rows={[
[
{
value: <strong><code>path</code></strong>,
},
{
value: "The path to the array or block field",
},
],
[
{
value: <strong><code>rowIndex</code></strong>,
},
{
value: "The index of the row to add. If omitted, the row will be added to the end of the array.",
},
],
[
{
value: <strong><code>data</code></strong>,
},
{
value: "The data to add to the row",
},
],
]}
/>
{' '}
<br />
{' '}
<pre>
{`import { useForm } from "payload/components/forms";
export const CustomArrayManager = () => {
const { addFieldRow } = useForm()
return (
<button
type="button"
onClick={() => {
addFieldRow({
path: "arrayField",
rowIndex: 0,
data: {
textField: "text",
// blockType: "yourBlockSlug",
// ^ if managing a block array, you need to specify the block type
},
})
}}
>
Add Row
</button>
)
}`}
</pre>
<p>An example config to go along with the custom component</p>
<pre>
{`const ExampleCollection = {
slug: "example-collection",
fields: [
{
name: "arrayField",
type: "array",
fields: [
{
name: "textField",
type: "text",
},
],
},
{
type: "ui",
name: "customArrayManager",
admin: {
components: {
Field: CustomArrayManager,
},
},
},
],
}`}
</pre>
</>
)
}
],
[
{
value: <strong><code>removeFieldRow</code></strong>,
},
{
value: "Method to remove a row from an array or block field",
},
{
drawerTitle: 'removeFieldRow',
drawerDescription: 'A useful method to programtically remove a row from an array or block field.',
drawerSlug: 'removeFieldRow',
drawerContent: (
<>
<TableWithDrawers
columns={[
'Prop',
'Description',
]}
rows={[
[
{
value: <strong><code>path</code></strong>,
},
{
value: "The path to the array or block field",
},
],
[
{
value: <strong><code>rowIndex</code></strong>,
},
{
value: "The index of the row to remove",
},
],
]}
/>
{' '}
<br />
{' '}
<pre>
{`import { useForm } from "payload/components/forms";
export const CustomArrayManager = () => {
const { removeFieldRow } = useForm()
return (
<button
type="button"
onClick={() => {
removeFieldRow({
path: "arrayField",
rowIndex: 0,
})
}}
>
Remove Row
</button>
)
}`}
</pre>
<p>An example config to go along with the custom component</p>
<pre>
{`const ExampleCollection = {
slug: "example-collection",
fields: [
{
name: "arrayField",
type: "array",
fields: [
{
name: "textField",
type: "text",
},
],
},
{
type: "ui",
name: "customArrayManager",
admin: {
components: {
Field: CustomArrayManager,
},
},
},
],
}`}
</pre>
</>
)
}
],
[
{
value: <strong><code>replaceFieldRow</code></strong>,
},
{
value: "Method to replace a row from an array or block field",
},
{
drawerTitle: 'replaceFieldRow',
drawerDescription: 'A useful method to programtically replace a row from an array or block field.',
drawerSlug: 'replaceFieldRow',
drawerContent: (
<>
<TableWithDrawers
columns={[
'Prop',
'Description',
]}
rows={[
[
{
value: <strong><code>path</code></strong>,
},
{
value: "The path to the array or block field",
},
],
[
{
value: <strong><code>rowIndex</code></strong>,
},
{
value: "The index of the row to replace",
},
],
[
{
value: <strong><code>data</code></strong>,
},
{
value: "The data to replace within the row",
},
],
]}
/>
{' '}
<br />
{' '}
<pre>
{`import { useForm } from "payload/components/forms";
export const CustomArrayManager = () => {
const { replaceFieldRow } = useForm()
return (
<button
type="button"
onClick={() => {
replaceFieldRow({
path: "arrayField",
rowIndex: 0,
data: {
textField: "updated text",
// blockType: "yourBlockSlug",
// ^ if managing a block array, you need to specify the block type
},
})
}}
>
Replace Row
</button>
)
}`}
</pre>
<p>An example config to go along with the custom component</p>
<pre>
{`const ExampleCollection = {
slug: "example-collection",
fields: [
{
name: "arrayField",
type: "array",
fields: [
{
name: "textField",
type: "text",
},
],
},
{
type: "ui",
name: "customArrayManager",
admin: {
components: {
Field: CustomArrayManager,
},
},
},
],
}`}
</pre>
</>
)
}
],
]}
/>
### useDocumentInfo
The `useDocumentInfo` hook provides lots of information about the document currently being edited, including the following:
| Property | Description |
|---------------------------|------------------------------------------------------------------------------------|
| **`collection`** | If the doc is a collection, its collection config will be returned |
| **`global`** | If the doc is a global, its global config will be returned |
| **`type`** | The type of document being edited (collection or global) |
| **`id`** | If the doc is a collection, its ID will be returned |
| **`preferencesKey`** | The `preferences` key to use when interacting with document-level user preferences |
| **`versions`** | Versions of the current doc |
| **`unpublishedVersions`** | Unpublished versions of the current doc |
| **`publishedDoc`** | The currently published version of the doc being edited |
| **`getVersions`** | Method to trigger the retrieval of document versions |
| Property | Description |
|---------------------------|--------------------------------------------------------------------------------------------------------------------|
| **`collection`** | If the doc is a collection, its collection config will be returned |
| **`global`** | If the doc is a global, its global config will be returned |
| **`id`** | If the doc is a collection, its ID will be returned |
| **`preferencesKey`** | The `preferences` key to use when interacting with document-level user preferences |
| **`versions`** | Versions of the current doc |
| **`unpublishedVersions`** | Unpublished versions of the current doc |
| **`publishedDoc`** | The currently published version of the doc being edited |
| **`getVersions`** | Method to trigger the retrieval of document versions |
| **`docPermissions`** | The current documents permissions. Collection document permissions fallback when no id is present (i.e. on create) |
| **`getDocPermissions`** | Method to trigger the retrieval of document level permissions |
**Example:**
```tsx
import { useDocumentInfo } from 'payload/components/utilities';
import { useDocumentInfo } from 'payload/components/utilities'
const LinkFromCategoryToPosts: React.FC = () => {
// highlight-start
const { id } = useDocumentInfo();
const { id } = useDocumentInfo()
// highlight-end
// id will be undefined on the create form
if (!id) {
return null;
return null
}
return (
<a href={`/admin/collections/posts?where[or][0][and][0][category][in][0]=[${id}]`} >
<a href={`/admin/collections/posts?where[or][0][and][0][category][in][0]=[${id}]`}>
View posts
</a>
)
};
}
```
### useLocale
In any custom component you can get the selected locale with the `useLocale` hook. Here is a simple example:
In any custom component you can get the selected locale object with the `useLocale` hook. `useLocale`gives you the full locale object, consisting of a `label`, `rtl`(right-to-left) property, and then `code`. Here is a simple example:
```tsx
import { useLocale } from 'payload/components/utilities';
import { useLocale } from 'payload/components/utilities'
const Greeting: React.FC = () => {
// highlight-start
const locale = useLocale();
const locale = useLocale()
// highlight-end
const trans = {
en: 'Hello',
es: 'Hola',
};
}
return (
<span> { trans[locale] } </span>
);
};
return <span> {trans[locale.code]} </span>
}
```
### useAuth
Useful to retrieve info about the currently logged in user as well as methods for interacting with it. It sends back an object with the following properties:
| Property | Description |
|---------------------|-----------------------------------------------------------------------------------------|
| **`user`** | The currently logged in user |
| **`logOut`** | A method to log out the currently logged in user |
| **`refreshCookie`** | A method to trigger the silent refreshing of a user's auth token |
| **`setToken`** | Set the token of the user, to be decoded and used to reset the user and token in memory |
| **`token`** | The logged in user's token (useful for creating preview links, etc.) |
| **`permissions`** | The permissions of the current user |
| Property | Description |
| ------------------------ | --------------------------------------------------------------------------------------- |
| **`user`** | The currently logged in user |
| **`logOut`** | A method to log out the currently logged in user |
| **`refreshCookie`** | A method to trigger the silent refreshing of a user's auth token |
| **`setToken`** | Set the token of the user, to be decoded and used to reset the user and token in memory |
| **`token`** | The logged in user's token (useful for creating preview links, etc.) |
| **`refreshPermissions`** | Load new permissions (useful when content that effects permissions has been changed) |
| **`permissions`** | The permissions of the current user |
```tsx
import { useAuth } from 'payload/components/utilities';
import { User } from '../payload-types.ts';
import { useAuth } from 'payload/components/utilities'
import { User } from '../payload-types.ts'
const Greeting: React.FC = () => {
// highlight-start
const { user } = useConfig<User>();
const { user } = useAuth<User>()
// highlight-end
return (
<span>Hi, {user.email}!</span>
);
};
return <span>Hi, {user.email}!</span>
}
```
### useConfig
Used to easily fetch the full Payload config.
Used to easily fetch the full Payload config.
```tsx
import { useConfig } from 'payload/components/utilities';
import { useConfig } from 'payload/components/utilities'
const MyComponent: React.FC = () => {
// highlight-start
const config = useConfig();
const config = useConfig()
// highlight-end
return (
<span>{config.serverURL}</span>
);
};
return <span>{config.serverURL}</span>
}
```
### useEditDepth
@@ -271,16 +744,14 @@ const MyComponent: React.FC = () => {
Sends back how many editing levels "deep" the current component is. Edit depth is relevant while adding new documents / editing documents in modal windows and other cases.
```tsx
import { useEditDepth } from 'payload/components/utilities';
import { useEditDepth } from 'payload/components/utilities'
const MyComponent: React.FC = () => {
// highlight-start
const editDepth = useEditDepth();
const editDepth = useEditDepth()
// highlight-end
return (
<span>My component is {editDepth} levels deep</span>
)
return <span>My component is {editDepth} levels deep</span>
}
```

View File

@@ -8,54 +8,67 @@ keywords: admin, components, custom, customize, documentation, Content Managemen
Payload dynamically generates a beautiful, fully functional React admin panel to manage your data. It's extremely powerful and can be customized / extended upon easily by swapping in your own React components. You can add additional views, modify how built-in views look / work, swap out Payload branding for your client's, build your own field types and much more.
The Payload Admin panel is built with Webpack, code-split, highly performant (even with 100+ fields), and written fully in TypeScript.
The Payload Admin panel can be bundled with our officially supported [Vite](/docs/admin/vite) and [webpack](/docs/admin/webpack) bundlers or you can integrate another bundler following our adapter pattern approach.
When bundled, it is code-split, highly performant (even with 100+ fields), and written fully in TypeScript.
<Banner type="success">
The Admin panel is meant to be simple enough to give you a starting point but not bring too much complexity, so that you can easily customize it to suit the needs of your application and your editors.
The Admin panel is meant to be simple enough to give you a starting point but not bring too much
complexity, so that you can easily customize it to suit the needs of your application and your
editors.
</Banner>
![Payload's Admin panel built in React](https://payloadcms.com/images/docs/admin.jpg)
*Screenshot of the Admin panel while editing a document from an example `AllFields` collection*
<LightDarkImage
srcLight="https://payloadcms.com/images/docs/admin.jpg"
srcDark="https://payloadcms.com/images/docs/admin-dark.jpg"
alt="Admin panel with collapsible sidebar"
caption="Redesigned admin panel with a collapsible sidebar that's open by default, providing greater extensibility and enhanced horizontal real estate."
/>
## Admin Options
All options for the Admin panel are defined in your base Payload config file.
| Option | Description |
| --------------------- | -------------|
| `user` | The `slug` of a Collection that you want be used to log in to the Admin dashboard. [More](/docs/admin/overview#the-admin-user-collection) |
| `meta` | Base meta data to use for the Admin panel. Included properties are `titleSuffix`, `ogImage`, and `favicon`. |
| `disable` | If set to `true`, the entire Admin panel will be disabled. |
| `indexHTML` | Optionally replace the entirety of the `index.html` file used by the Admin panel. Reference the [base index.html file](https://github.com/payloadcms/payload/blob/master/src/admin/index.html) to ensure your replacement has the appropriate HTML elements. |
| `css` | Absolute path to a stylesheet that you can use to override / customize the Admin panel styling. [More](/docs/admin/customizing-css). |
| `scss` | Absolute path to a Sass variables / mixins stylesheet meant to override Payload styles to make for an easy re-skinning of the Admin panel. [More](/docs/admin/customizing-css#overriding-scss-variables). |
| `dateFormat` | Global date format that will be used for all dates in the Admin panel. Any valid [date-fns](https://date-fns.org/) format pattern can be used. |
| `avatar` | Set account profile picture. Options: `gravatar`, `default` or a custom React component. |
| `components` | Component overrides that affect the entirety of the Admin panel. [More](/docs/admin/components) |
| `webpack` | Customize the Webpack config that's used to generate the Admin panel. [More](/docs/admin/webpack) | |
| **`logoutRoute`** | The route for the `logout` page. |
| **`inactivityRoute`** | The route for the `logout` inactivity page. |
| Option | Description |
| ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `bundler` | The bundler that you would like to use to bundle the admin panel. Officially supported bundlers: [Webpack](/docs/admin/webpack) and [Vite](/docs/admin/vite). |
| `user` | The `slug` of a Collection that you want be used to log in to the Admin dashboard. [More](/docs/admin/overview#the-admin-user-collection) |
| `buildPath` | Specify an absolute path for where to store the built Admin panel bundle used in production. Defaults to `path.resolve(process.cwd(), 'build')`. |
| `meta` | Base meta data to use for the Admin panel. Included properties are `titleSuffix`, `ogImage`, and `favicon`. |
| `disable` | If set to `true`, the entire Admin panel will be disabled. |
| `indexHTML` | Optionally replace the entirety of the `index.html` file used by the Admin panel. Reference the [base index.html file](https://github.com/payloadcms/payload/blob/main/packages/payload/src/admin/index.html) to ensure your replacement has the appropriate HTML elements. |
| `css` | Absolute path to a stylesheet that you can use to override / customize the Admin panel styling. [More](/docs/admin/customizing-css). |
| `scss` | Absolute path to a Sass variables / mixins stylesheet meant to override Payload styles to make for an easy re-skinning of the Admin panel. [More](/docs/admin/customizing-css#overriding-scss-variables). |
| `dateFormat` | Global date format that will be used for all dates in the Admin panel. Any valid [date-fns](https://date-fns.org/) format pattern can be used. |
| `avatar` | Set account profile picture. Options: `gravatar`, `default` or a custom React component. |
| `autoLogin` | Used to automate admin log-in for dev and demonstration convenience. [More](/docs/authentication/config). |
| `livePreview` | Enable real-time editing for instant visual feedback of your front-end application. [More](/docs/live-preview/overview). |
| `components` | Component overrides that affect the entirety of the Admin panel. [More](/docs/admin/components) |
| `webpack` | Customize the Webpack config that's used to generate the Admin panel. [More](/docs/admin/webpack) |
| `vite` | Customize the Vite config that's used to generate the Admin panel. [More](/docs/admin/vite) |
| `logoutRoute` | The route for the `logout` page. |
| `inactivityRoute` | The route for the `logout` inactivity page. |
### The Admin User Collection
<Banner type="warning">
<strong>Important:</strong><br />
The Payload Admin panel can only be used by one Collection that supports <a href="/docs/authentication/overview">Authentication</a>.
<strong>Important:</strong>
<br />
The Payload Admin panel can only be used by one Collection that supports
[Authentication](/docs/authentication/overview).
</Banner>
To specify which Collection to use to log in to the Admin panel, pass the `admin` options a `user` key equal to the slug of the Collection that you'd like to use.
`payload.config.js`:
```ts
import { buildConfig } from 'payload/config';
import { buildConfig } from 'payload/config'
const config = buildConfig({
admin: {
user: 'admins', // highlight-line
},
});
})
```
By default, if you have not specified a Collection, Payload will automatically provide you with a `User` Collection which will be used to access the Admin panel. You can customize or override the fields and settings of the default `User` Collection by passing your own collection using `users` as its `slug` to Payload. When this is done, Payload will use your provided `User` Collection instead of its default version.

View File

@@ -15,8 +15,10 @@ Out of the box, Payload handles the persistence of your users' preferences in a
1. The "collapsed" state of blocks, on a document level, as users edit or interact with documents
<Banner type="warning">
<strong>Important:</strong><br/>
All preferences are stored on an individual user basis. Payload automatically recognizes the user that is reading or setting a preference via all provided authentication methods.
<strong>Important:</strong>
<br />
All preferences are stored on an individual user basis. Payload automatically recognizes the user
that is reading or setting a preference via all provided authentication methods.
</Banner>
### Use cases
@@ -30,17 +32,17 @@ This API is used significantly for internal operations of the Admin panel, as me
### Database
Payload automatically creates an internally used `_preferences` collection that stores user preferences. Each document in the `_preferences` collection contains the following shape:
Payload automatically creates an internally used `payload-preferences` collection that stores user preferences. Each document in the `payload-preferences` collection contains the following shape:
| Key | Value |
| -------------------- | -------------|
| `id` | A unique ID for each preference stored. |
| `key` | A unique `key` that corresponds to the preference. |
| `user` | The ID of the `user` that is storing its preference. |
| `userCollection` | The `slug` of the collection that the `user` is logged in as. |
| `value` | The value of the preference. Can be any data shape that you need. |
| `createdAt` | A timestamp of when the preference was created. |
| `updatedAt` | A timestamp set to the last time the preference was updated.
| Key | Value |
| ----------------- | ----------------------------------------------------------------- |
| `id` | A unique ID for each preference stored. |
| `key` | A unique `key` that corresponds to the preference. |
| `user.value` | The ID of the `user` that is storing its preference. |
| `user.relationTo` | The `slug` of the collection that the `user` is logged in as. |
| `value` | The value of the preference. Can be any data shape that you need. |
| `createdAt` | A timestamp of when the preference was created. |
| `updatedAt` | A timestamp set to the last time the preference was updated. |
### APIs

82
docs/admin/vite.mdx Normal file
View File

@@ -0,0 +1,82 @@
---
title: Vite
label: Vite
order: 90
desc: NEEDS TO BE WRITTEN
---
Payload has a Vite bundler that you can install and bundle the Admin Panel with. This is an alternative to the [Webpack](/docs/admin/webpack) bundler and might give some performance boosts to your development workflow.
To use Vite as your bundler, first you need to install the package:
```bash
yarn add @payloadcms/bundler-vite
```
<Banner>
The Vite bundler is currently in beta. If you would like to help us test this package, we'd love to hear if you find any bugs or issues!
</Banner>
Vite works fundamentally differently than Webpack. In development mode, it will first pre-bundle any of your dependencies that are CommonJS-only, and then it'll leverage ESM directly in your browser for a better HMR experience.
It then uses Rollup to create production builds of your admin UI. With Vite, you should see a decent performance boost—especially after your first cold start. However, that first cold start might take a few more seconds.
<Banner type="warning">
In most cases, Vite should work out of the box. But existing Payload plugins may need to make compatibility changes to support Vite.
</Banner>
This is because Vite aliases work fundamentally differently than Webpack aliases, and Payload relies on aliasing server-only code out of the Payload config to ensure that the bundled admin JS works within your browser.
Here are the main differences between how Vite aliases work and how Webpack aliases work.
**Vite aliases do not work with absolute paths.**
In Vite, an alias will only match if the `find` property _exactly matches_ how you are importing your server-only file. So if you are importing a file with a relative path, i.e. `'../../my-module'`, and your alias is absolute, your alias will not work.
**Vite aliases do not get applied to pre-bundled dependencies.**
This especially affects plugins, as plugins will be pre-bundled by Vite using `esbuild`. To get around this and support Vite, plugin authors need to configure an alias to their plugin at the top level, so that the alias will work accordingly.
Here's an example. Say your plugin is called `payload-plugin-cool`. It's imported as follows:
```ts
import { myCoolPlugin } from 'payload-plugin-cool'
```
That plugin should create an alias to support Vite as follows:
```ts
{
// aliases go here
'payload-plugin-cool': path.resolve(__dirname, './my-admin-plugin.js')
}
```
This will effectively alias the entire plugin and work with Vite. If the plugin requires admin-specific code, then the `./my-admin-plugin.js` alias target file should reflect any changes necessary to the admin UI that the main server-side plugin performs.
### Extending the Vite config
The Payload config supports a new property for plugins to be able to extend the Vite config specifically. That property exists on the main Payload config under `admin.vite`.
It's a function that takes a Vite config, and returns an updated Vite config. Here's an example:
```ts
export const buildConfig({
collections: [],
admin: {
vite: (incomingViteConfig) => ({
...incomingViteConfig,
resolve: {
...incomingViteConfig.resolve,
// Do whatever you need here
}
})
}
})
```
Even though there is a new property for Vite configs specifically, we have implemented some "compatibility" between Webpack and Vite out-of-the-box.
If your config specifies Webpack aliases, we attempt to leverage them automatically within the Vite config. They are merged into the Vite alias configuration seamlessly and may work out-of-the-box.

View File

@@ -1,178 +1,67 @@
---
title: Webpack
label: Webpack
order: 60
order: 80
desc: The Payload admin panel uses Webpack 5 and supports many common functionalities such as SCSS and Typescript out of the box to give you more freedom.
keywords: admin, webpack, documentation, Content Management System, cms, headless, javascript, node, react, express
---
Payload uses Webpack 5 to build the Admin panel. It comes with support for many common functionalities such as SCSS and Typescript out of the box, but there are many cases where you may need to add support for additional functionalities.
Payload has a Webpack (v5) bundler that you can build the Admin panel with. For now, we recommended using it because it is stable. If you are feeling a bit more adventurous you can give the [Vite](/docs/admin/vite) bundler a shot.
To extend the Webpack config, add the `webpack` key to your base Payload config, and provide a function that accepts the default Webpack config as its only argument:
Out of the box, the Webpack bundler supports common functionalities such as SCSS and Typescript, but there are many cases where you may need to add support for additional functionalities.
#### Installation
```bash
yarn add @payloadcms/bundler-webpack
```
#### Import the bundler
`payload.config.ts`
```ts
import { buildConfig } from 'payload/config';
// payload.config.ts
import { buildConfig } from 'payload/config'
import { webpackBundler } from '@payloadcms/bundler-webpack'
export default buildConfig({
admin: {
// highlight-start
webpack: (config) => {
// Do something with the config here
return config;
}
// highlight-end
}
});
// highlight-start
admin: {
bundler: webpackBundler()
},
// highlight-end
})
```
### Aliasing server-only modules
### Extending Webpack
A common use case for extending the Payload config is to alias server-only modules, thus preventing them from inclusion into the browser JavaScript bundle.
If you need to extend the Webpack config, you can do so by passing a function to the `admin.webpack` property on your Payload config.
The function will receive the Webpack config as an argument and should return the modified config.
As the Payload config is used in both server **and** client contexts, you may find yourself writing code in your Payload config that may be incompatible with browser environments.
Examples of **non** browser-friendly packages:
- `fs`
- `stripe`
- `authorizenet`
- `nodemailer`
You may rely on server-only packages such as the above to perform logic in access control functions, hooks, and other contexts (which is great!) but when you boot up your Payload app and try to view it in the browser, you'll likely run into missing dependency issues or other general incompatibilities.
<Banner type="success">
<strong>Tip:</strong><br/>
To avoid problems with server code making it to your Webpack bundle, you can use the <strong>alias</strong> Webpack feature to tell Webpack to avoid importing the modules you want to restrict to server-only.
</Banner>
<strong>For example, let's say that you have a Collection called `Subscriptions` which relies on Stripe:</strong>
<br/><br/>
`collections/Subscriptions/index.js`
```ts
import { CollectionConfig } from 'payload/types';
import createStripeSubscription from './hooks/createStripeSubscription';
// payload.config.ts
const Subscription: CollectionConfig = {
slug: 'subscriptions',
hooks: {
beforeChange: [
createStripeSubscription,
]
},
fields: [
{
name: 'stripeSubscriptionID',
type: 'text',
required: true,
}
]
};
export default Subscription;
```
The collection above features a `beforeChange` hook that creates a Stripe subscription whenever a Subscription document is created in Payload.
<strong>That hook might look something like this:</strong>
<br/><br/>
`collections/Subscriptions/hooks/createStripeSubscription.js`
```js
import Stripe from 'stripe';
const stripe = new Stripe(process.env.STRIPE_SECRET_KEY);
const createStripeSubscription = async ({ data, operation }) => {
if (operation === 'create') {
const dataWithStripeID = {...data};
// use Stripe to create a Stripe subscription
const subscription = await stripe.subscriptions.create({
// Configure the subscription accordingly
});
// Automatically add the Stripe subscription ID
// to the data that will be saved to this Subscription doc
dataWithStripeID.stripeSubscriptionID = subscription.id;
return dataWithStripeID
}
return data;
}
export default createStripeSubscription;
```
<Banner type="error">
<strong>Warning:</strong><br/>
The above code is NOT production-ready and should not be referenced to create Stripe subscriptions. Although creating a beforeChange hook is a completely valid spot to do things like create subscriptions, the code above is incomplete and insecure, meant for explanation purposes only.
</Banner>
**As-is, this collection will prevent your Admin panel from bundling or loading correctly, because Stripe relies on some Node-only packages.**
To remedy this issue you can extend the Payload Webpack config to alias your entire `createStripeSubscription` hook to a separate, empty mock file.
Example in `payload.config.js`:
```js
import { buildConfig } from 'payload/config';
import path from 'path';
import Subscription from './collections/Subscription';
const createStripeSubscriptionPath = path.resolve(__dirname, 'collections/Subscription/hooks/createStripeSubscription.js');
const mockModulePath = path.resolve(__dirname, 'mocks/emptyObject.js');
import { buildConfig } from 'payload/config'
import { webpackBundler } from '@payloadcms/bundler-webpack'
export default buildConfig({
collections: [
Subscription
],
admin: {
webpack: (config) => ({
...config,
resolve: {
...config.resolve,
alias: {
...config.resolve.alias,
[createStripeSubscriptionPath]: mockModulePath,
}
}
})
}
});
admin: {
bundler: webpackBundler()
// highlight-start
webpack: (config) => {
// full control of the Webpack config
return config
},
// highlight-end
},
})
```
The above code will alias the file at path `createStripeSubscriptionPath` to a mocked module, which might look like this:
`mocks/emptyObject.js`
```js
export default {};
```
Now, when Webpack sees that you're attempting to import your `createStripeSubscriptionPath` file, it'll disregard that actual file and load your mock file instead. Not only will your Admin panel now bundle successfully, you will have optimized its filesize by removing unnecessary code! And you might have learned something about Webpack, too.
<Banner type="success">
<strong>Tip:</strong><br/>
If changes to your Webpack aliases are not surfacing, they might be [cached](https://webpack.js.org/configuration/cache/) in `node_modules/.cache/webpack`. Try deleting that folder and restarting your server.
<strong>Tip:</strong>
<br />
If changes to your Webpack aliases are not surfacing, they might be
[cached](https://webpack.js.org/configuration/cache/) in `node_modules/.cache/webpack`. Try
deleting that folder and restarting your server.
</Banner>
## Admin environment vars
<Banner type="warning">
<strong>Important:</strong><br />
Be careful about what variables you provide to your client-side code. Analyze every single one to make sure that you're not accidentally leaking anything that an attacker could exploit. Only keys that are safe to be available to everyone in plain text should be provided to your Admin panel.
</Banner>
By default, `env` variables are **not** provided to the Admin panel for security and safety reasons. But, Payload provides you with a way to still provide `env` vars to your frontend code.
**Payload will automatically supply any present `env` variables that are prefixed with `PAYLOAD_PUBLIC_` directly to the Admin panel.**
For example, if you've got the following environment variable:
`PAYLOAD_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_XXXXXXXXXXXXXXXXXX`
This key will automatically be made available to the Payload bundle and can be referenced in your Admin component code as `process.env.PAYLOAD_PUBLIC_STRIPE_PUBLISHABLE_KEY`.

View File

@@ -17,7 +17,7 @@ To enable Authentication on a collection, define an `auth` property and set it t
| **`useAPIKey`** | Payload Authentication provides for API keys to be set on each user within an Authentication-enabled Collection. [More](/docs/authentication/config#api-keys) |
| **`tokenExpiration`** | How long (in seconds) to keep the user logged in. JWTs and HTTP-only cookies will both expire at the same time. |
| **`maxLoginAttempts`** | Only allow a user to attempt logging in X amount of times. Automatically locks out a user from authenticating if this limit is passed. Set to `0` to disable. |
| **`lockTime`** | Set the time (in milliseconds) that a user should be locked out if they fail authentication more times than `maxLoginAttempts` allows for. |
| **`lockTime`** | Set the time (in milliseconds) that a user should be locked out if they fail authentication more times than `maxLoginAttempts` allows for. |
| **`depth`** | How many levels deep a `user` document should be populated when creating the JWT and binding the `user` to the express `req`. Defaults to `0` and should only be modified if absolutely necessary, as this will affect performance. |
| **`cookies`** | Set cookie options, including `secure`, `sameSite`, and `domain`. For advanced users. |
| **`forgotPassword`** | Customize the way that the `forgotPassword` operation functions. [More](/docs/authentication/config#forgot-password) |
@@ -29,35 +29,55 @@ To enable Authentication on a collection, define an `auth` property and set it t
To integrate with third-party APIs or services, you might need the ability to generate API keys that can be used to identify as a certain user within Payload.
In Payload, users are essentially documents within a collection. Just like you can authenticate as a user with an email and password, which is considered as our default local auth strategy, you can also authenticate as a user with an API key. API keys are generated on a user-by-user basis, similar to email and passwords, and are meant to represent a single user.
For example, if you have a third-party service or external app that needs to be able to perform protected actions at its discretion, you have two options:
1. Create a user for the third-party app, and log in each time to receive a token before you attempt to access any protected actions
1. Enable API key support for the Collection, where you can generate a non-expiring API key per user in the collection
1. Enable API key support for the Collection, where you can generate a non-expiring API key per user in the collection. This is particularly useful as you can create a "user" that reflects an integration with a specific external service and assign a "role" or specific access only needed by that service/integration. Alternatively, you could create a "super admin" user and assign an API key to that user so that any requests made with that API key are considered as being made by that super user.
Technically, both of these options will work for third-party integrations but the second option with API key is simpler, because it reduces the amount of work that your integrations need to do to be authenticated properly.
To enable API keys on a collection, set the `useAPIKey` auth option to `true`. From there, a new interface will appear in the Admin panel for each document within the collection that allows you to generate an API key for each user in the Collection.
<Banner type="success">
User API keys are encrypted within the database, meaning that if your database
is compromised, your API keys will not be.
User API keys are encrypted within the database, meaning that if your database is compromised,
your API keys will not be.
</Banner>
##### Authenticating via API Key
#### Authenticating via API Key
To utilize your API key while interacting with the REST or GraphQL API, add the `Authorization` header.
To authenticate REST or GraphQL API requests using an API key, set the `Authorization` header. The header is case-sensitive and needs the slug of the `auth.useAPIKey` enabled collection, then " API-Key ", followed by the `apiKey` that has been assigned. Payload's built-in middleware will then assign the user document to `req.user` and handle requests with the proper access control. By doing this, Payload recognizes the request being made as a request by the user associated with that API key.
**For example, using Fetch:**
```ts
const response = await fetch("http://localhost:3000/api/pages", {
import User from '../collections/User'
const response = await fetch('http://localhost:3000/api/pages', {
headers: {
Authorization: `${collection.labels.singular} API-Key ${YOUR_API_KEY}`,
Authorization: `${User.slug} API-Key ${YOUR_API_KEY}`,
},
});
})
```
Note: The label portion of the header is case-sensitive and will likely have a capitalized first character unless the label has been customized.
Payload ensures that the same, uniform access control is used across all authentication strategies. This enables you to utilize your existing access control configurations with both API keys and the standard email/password authentication. This consistency can aid in maintaining granular control over your API keys.
#### API Key _Only_ Authentication
If you want to use API keys as the only authentication method for a collection, you can disable the default local strategy by setting `disableLocalStrategy` to `true` on the collection's `auth` property. This will disable the ability to authenticate with email and password, and will only allow for authentication via API key.
```ts
import { CollectionConfig } from 'payload/types'
export const Customers: CollectionConfig = {
slug: 'customers',
auth: {
useAPIKey: true,
disableLocalStrategy: true,
},
}
```
### Forgot Password
@@ -70,26 +90,25 @@ Function that accepts one argument, containing `{ req, token, user }`, that allo
<Banner type="success">
<strong>Tip:</strong>
<br />
HTML templating can be used to create custom email templates, inline CSS
automatically, and more. You can make a reusable function that standardizes
all email sent from Payload, which makes sending custom emails more DRY.
Payload doesn't ship with an HTML templating engine, so you are free to choose
your own.
HTML templating can be used to create custom email templates, inline CSS automatically, and more.
You can make a reusable function that standardizes all email sent from Payload, which makes
sending custom emails more DRY. Payload doesn't ship with an HTML templating engine, so you are
free to choose your own.
</Banner>
Example:
```ts
import { CollectionConfig } from 'payload/types';
import { CollectionConfig } from 'payload/types'
const Customers: CollectionConfig = {
export const Customers: CollectionConfig = {
slug: 'customers',
auth: {
forgotPassword: {
// highlight-start
generateEmailHTML: ({ req, token, user }) => {
// Use the token provided to allow your user to reset their password
const resetPasswordURL = `https://yourfrontend.com/reset-password?token=${token}`;
const resetPasswordURL = `https://yourfrontend.com/reset-password?token=${token}`
return `
<!doctype html>
@@ -103,22 +122,21 @@ const Customers: CollectionConfig = {
</p>
</body>
</html>
`;
}
`
},
// highlight-end
}
}
};
},
},
}
```
<Banner type="warning">
<strong>Important:</strong>
<br />
If you specify a different URL to send your users to for resetting their
password, such as a page on the frontend of your app or similar, you need to
handle making the call to the Payload REST or GraphQL reset-password operation
yourself on your frontend, using the token that was provided for you. Above,
it was passed via query parameter.
If you specify a different URL to send your users to for resetting their password, such as a page
on the frontend of your app or similar, you need to handle making the call to the Payload REST or
GraphQL reset-password operation yourself on your frontend, using the token that was provided for
you. Above, it was passed via query parameter.
</Banner>
**`generateEmailSubject`**
@@ -153,34 +171,32 @@ Function that accepts one argument, containing `{ req, token, user }`, that allo
Example:
```ts
import { CollectionConfig } from 'payload/types';
import { CollectionConfig } from 'payload/types'
const Customers: CollectionConfig = {
export const Customers: CollectionConfig = {
slug: 'customers',
auth: {
verify: {
// highlight-start
generateEmailHTML: ({ req, token, user }) => {
// Use the token provided to allow your user to verify their account
const url = `https://yourfrontend.com/verify?token=${token}`;
const url = `https://yourfrontend.com/verify?token=${token}`
return `Hey ${user.email}, verify your email by clicking here: ${url}`;
}
return `Hey ${user.email}, verify your email by clicking here: ${url}`
},
// highlight-end
}
}
};
},
},
}
```
<Banner type="warning">
<strong>Important:</strong>
<br />
If you specify a different URL to send your users to for email verification,
such as a page on the frontend of your app or similar, you need to handle
making the call to the Payload REST or GraphQL verification operation yourself
on your frontend, using the token that was provided for you. Above, it was
passed via query parameter.
If you specify a different URL to send your users to for email verification, such as a page on the
frontend of your app or similar, you need to handle making the call to the Payload REST or GraphQL
verification operation yourself on your frontend, using the token that was provided for you.
Above, it was passed via query parameter.
</Banner>
**`generateEmailSubject`**
@@ -211,9 +227,8 @@ As of Payload `1.0.0`, you can add additional authentication strategies to Paylo
Behind the scenes, Payload uses PassportJS to power its local authentication strategy, so most strategies listed on the PassportJS website will work seamlessly. Combined with adding custom components to the admin panel's `Login` view, you can create advanced authentication strategies directly within Payload.
<Banner type="warning">
This is an advanced feature, so only attempt this if you are an experienced
developer. Otherwise, just let Payload's built-in authentication handle user
auth for you.
This is an advanced feature, so only attempt this if you are an experienced developer. Otherwise,
just let Payload's built-in authentication handle user auth for you.
</Banner>
The `strategies` property is an array that takes objects with the following properties:
@@ -229,3 +244,42 @@ If you pass a strategy to the `strategy` property directly, the `name` property
However, if you pass a function to `strategy`, `name` is a required property.
In either case, Payload will prefix the strategy name with the collection `slug` that the strategy is passed to.
### Admin autologin
For testing and demo purposes you may want to skip forcing the admin user to login in order to access the panel.
The `admin.autologin` property is used to configure the how visitors are handled when accessing the admin panel.
The default is that all users will have to login and this should not be enabled for environments where data needs to protected.
#### autoLogin Options
| Option | Description |
| ----------------- | --------------------------------------------------------------------------------------------------------------- |
| **`email`** | The email address of the user to login as |
| **`password`** | The password of the user to login as |
| **`prefillOnly`** | If set to true, the login credentials will be prefilled but the user will still need to click the login button. |
The recommended way to use this feature is behind an environment variable to ensure it is disabled when in production.
**Example:**
```ts
export default buildConfig({
admin: {
user: 'users',
// highlight-start
autoLogin:
process.env.PAYLOAD_PUBLIC_ENABLE_AUTOLOGIN === 'true'
? {
email: 'test@example.com',
password: 'test',
prefillOnly: true,
}
: false,
// highlight-end
},
collections: [
/** */
],
})
```

View File

@@ -17,6 +17,7 @@ The Access operation returns what a logged in user can and can't do with the col
`GET http://localhost:3000/api/access`
Example response:
```ts
{
canAccessAdmin: true,
@@ -66,6 +67,8 @@ query {
}
```
Document access can also be queried on a collection/global basis. Access on a global can queried like `http://localhost:3000/api/global-slug/access`, Collection document access can be queried like `http://localhost:3000/api/collection-slug/access/:id`.
### Me
Returns either a logged in user with token or null when there is no logged in user.
@@ -75,6 +78,7 @@ Returns either a logged in user with token or null when there is no logged in us
`GET http://localhost:3000/api/[collection-slug]/me`
Example response:
```ts
{
user: { // The JWT "payload" ;) from the logged in user
@@ -92,7 +96,7 @@ Example response:
```graphql
query {
Me[collection-singular-label] {
me[collection-singular-label] {
user {
email
}
@@ -106,6 +110,7 @@ query {
Accepts an `email` and `password`. On success, it will return the logged in user as well as a token that can be used to authenticate. In the GraphQL and REST APIs, this operation also automatically sets an HTTP-only cookie including the user's token. If you pass an Express `res` to the Local API operation, Payload will set a cookie there as well.
**Example REST API login**:
```ts
const res = await fetch('http://localhost:3000/api/[collection-slug]/login', {
method: 'POST',
@@ -115,10 +120,10 @@ const res = await fetch('http://localhost:3000/api/[collection-slug]/login', {
body: JSON.stringify({
email: 'dev@payloadcms.com',
password: 'this-is-not-our-password...or-is-it?',
})
}),
})
const json = await res.json();
const json = await res.json()
// JSON will be equal to the following:
/*
@@ -166,6 +171,7 @@ const result = await payload.login({
As Payload sets HTTP-only cookies, logging out cannot be done by just removing a cookie in JavaScript, as HTTP-only cookies are inaccessible by JS within the browser. So, Payload exposes a `logout` operation to delete the token in a safe way.
**Example REST API logout**:
```ts
const res = await fetch('http://localhost:3000/api/[collection-slug]/logout', {
method: 'POST',
@@ -192,6 +198,7 @@ This operation requires a non-expired token to send back a new one. If the user'
If successful, this operation will automatically renew the user's HTTP-only cookie and will send back the updated token in JSON.
**Example REST API token refresh**:
```ts
const res = await fetch('http://localhost:3000/api/[collection-slug]/refresh-token', {
method: 'POST',
@@ -200,7 +207,7 @@ const res = await fetch('http://localhost:3000/api/[collection-slug]/refresh-tok
},
})
const json = await res.json();
const json = await res.json()
// JSON will be equal to the following:
/*
@@ -231,7 +238,10 @@ mutation {
```
<Banner type="success">
The Refresh operation will automatically find the user's token in either a JWT header or the HTTP-only cookie. But, you can specify the token you're looking to refresh by providing the REST API with a `token` within the JSON body of the request, or by providing the GraphQL resolver a `token` arg.
The Refresh operation will automatically find the user's token in either a JWT header or the
HTTP-only cookie. But, you can specify the token you're looking to refresh by providing the REST
API with a `token` within the JSON body of the request, or by providing the GraphQL resolver a
`token` arg.
</Banner>
### Verify by Email
@@ -239,13 +249,14 @@ mutation {
If your collection supports email verification, the Verify operation will be exposed which accepts a verification token and sets the user's `_verified` property to `true`, thereby allowing the user to authenticate with the Payload API.
**Example REST API user verification**:
```ts
const res = await fetch(`http://localhost:3000/api/[collection-slug]/verify/${TOKEN_HERE}`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
});
})
```
**Example GraphQL Mutation**:
@@ -272,6 +283,7 @@ If a user locks themselves out and you wish to deliberately unlock them, you can
To restrict who is allowed to unlock users, you can utilize the [`unlock`](/docs/access-control/overview#unlock) access control function.
**Example REST API unlock**:
```ts
const res = await fetch(`http://localhost:3000/api/[collection-slug]/unlock`, {
method: 'POST',
@@ -306,6 +318,7 @@ The link to reset the user's password contains a token which is what allows the
By default, the Forgot Password operations send users to the Payload Admin panel to reset their password, but you can customize the generated email to send users to the frontend of your app instead by [overriding the email HTML](/docs/authentication/config#forgot-password).
**Example REST API Forgot Password**:
```ts
const res = await fetch(`http://localhost:3000/api/[collection-slug]/forgot-password`, {
method: 'POST',
@@ -315,7 +328,7 @@ const res = await fetch(`http://localhost:3000/api/[collection-slug]/forgot-pass
body: JSON.stringify({
email: 'dev@payloadcms.com',
}),
});
})
```
**Example GraphQL Mutation**:
@@ -334,13 +347,18 @@ const token = await payload.forgotPassword({
data: {
email: 'dev@payloadcms.com',
},
disableEmail: false // you can disable the auto-generation of email via local API
});
disableEmail: false, // you can disable the auto-generation of email via local API
})
```
<Banner type="success">
<strong>Tip:</strong><br/>
You can stop the reset-password email from being sent via using the local API. This is helpful if you need to create user accounts programmatically, but not set their password for them. This effectively generates a reset password token which you can then use to send to a page you create, allowing a user to "complete" their account by setting their password. In the background, you'd use the token to "reset" their password.
<strong>Tip:</strong>
<br />
You can stop the reset-password email from being sent via using the local API. This is helpful if
you need to create user accounts programmatically, but not set their password for them. This
effectively generates a reset password token which you can then use to send to a page you create,
allowing a user to "complete" their account by setting their password. In the background, you'd
use the token to "reset" their password.
</Banner>
### Reset Password
@@ -348,6 +366,7 @@ const token = await payload.forgotPassword({
After a user has "forgotten" their password and a token is generated, that token can be used to send to the reset password operation along with a new password which will allow the user to reset their password securely.
**Example REST API Reset Password**:
```ts
const res = await fetch(`http://localhost:3000/api/[collection-slug]/reset-password`, {
method: 'POST',

View File

@@ -6,14 +6,20 @@ desc: Payload provides highly secure user Authentication out of the box, and you
keywords: authentication, config, configuration, overview, documentation, Content Management System, cms, headless, javascript, node, react, express
---
<YouTube
id="CT4KafeJjTI"
title="Simplified Authentication for Headless CMS: Unlocking Reusability in One Line"
/>
<Banner>
Payload provides for highly secure and customizable user Authentication out of the box, which allows for users to identify themselves to Payload.
Payload provides for highly secure and customizable user Authentication out of the box, which
allows for users to identify themselves to Payload.
</Banner>
Authentication is used within the Payload Admin panel itself as well as throughout your app(s) themselves however you determine necessary.
![Authentication admin panel functionality](https://payloadcms.com/images/docs/auth-admin.jpg)
*Admin panel screenshot depicting an Admins Collection with Auth enabled*
_Admin panel screenshot depicting an Admins Collection with Auth enabled_
**Here are some common use cases of Authentication outside of Payload's dashboard itself:**
@@ -33,10 +39,10 @@ Every Payload Collection can opt-in to supporting Authentication by specifying t
Simple example collection:
```ts
import { CollectionConfig } from 'payload/types';
import { CollectionConfig } from 'payload/types'
const Admins: CollectionConfig = {
slug:
export const Admins: CollectionConfig = {
slug: 'admins',
// highlight-start
auth: {
tokenExpiration: 7200, // How many seconds to keep the user logged in
@@ -57,7 +63,7 @@ const Admins: CollectionConfig = {
'editor',
'developer',
],
}
},
],
}
```
@@ -78,9 +84,14 @@ Once enabled, each document that is created within the Collection can be thought
Successfully logging in returns a `JWT` (JSON web token) which is how a user will identify themselves to Payload. By providing this JWT via either an HTTP-only cookie or an `Authorization` header, Payload will automatically identify the user and add its user JWT data to the Express `req`, which is available throughout Payload including within access control, hooks, and more.
You can specify what data gets encoded to the JWT token by setting `saveToJWT` to true in your auth collection fields. If you wish to use a different key other than the field `name`, you can provide it to `saveToJWT` as a string. It is also possible to use `saveToJWT` on fields that are nested in inside groups and tabs. If a group has a `saveToJWT` set it will include the object with all sub-fields in the token. You can set `saveToJWT: false` for any fields you wish to omit. If a field inside a group has `saveToJWT` set, but the group does not, the field will be included at the top level of the token.
<Banner type="success">
<strong>Tip:</strong><br/>
You can access the logged in user from access control functions and hooks via the Express <strong>req</strong>. The logged in user is automatically added as the <strong>user</strong> property.
<strong>Tip:</strong>
<br />
You can access the logged-in user from access control functions and hooks via the Express{' '}
<strong>req</strong>. The logged-in user is automatically added as the <strong>user</strong>{' '}
property.
</Banner>
### HTTP-only cookies
@@ -100,16 +111,19 @@ Fetch example, including credentials:
```ts
const response = await fetch('http://localhost:3000/api/pages', {
credentials: 'include',
});
})
const pages = await response.json();
const pages = await response.json()
```
For more about how to automatically include cookies in requests from your app to your Payload API, [click here](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch#Sending_a_request_with_credentials_included).
<Banner type="success">
<strong>Tip:</strong><br/>
To make sure you have a Payload cookie set properly in your browser after logging in, you can use Chrome's Developer Tools - Application - Cookies - [your-domain-here]. The Chrome Developer tools will still show HTTP-only cookies, even when JavaScript running on the page can't.
<strong>Tip:</strong>
<br />
To make sure you have a Payload cookie set properly in your browser after logging in, you can use
Chrome's Developer Tools - Application - Cookies - [your-domain-here]. The Chrome Developer tools
will still show HTTP-only cookies, even when JavaScript running on the page can't.
</Banner>
### CSRF Protection
@@ -121,28 +135,33 @@ For example, let's say you have a very popular app running at coolsite.com. This
So, if a user of coolsite.com is logged in and just browsing around on the internet, they might stumble onto a page with bad intentions. That bad page might automatically make requests to all sorts of sites to see if they can find one that they can log into - and coolsite.com might be on their list. If your user was logged in while they visited that evil site, the attacker could do whatever they wanted as if they were your coolsite.com user by just sending requests to the coolsite API (which would automatically include the auth cookie). They could send themselves a bunch of money from your user's account, change the user's password, etc. This is what a CSRF attack is.
<Banner type="warning">
<strong>To protect against CSRF attacks, Payload only accepts cookie-based authentication from domains that you explicitly whitelist.</strong>
<strong>
To protect against CSRF attacks, Payload only accepts cookie-based authentication from domains
that you explicitly whitelist.
</strong>
</Banner>
To define domains that should allow users to identify themselves via the Payload HTTP-only cookie, use the `csrf` option on the base Payload config to whitelist domains that you trust.
`payload.config.ts`:
```ts
import { buildConfig } from 'payload/config';
import { buildConfig } from 'payload/config'
const config = buildConfig({
collections: [
// collections here
],
// highlight-start
csrf: [ // whitelist of domains to allow cookie auth from
csrf: [
// whitelist of domains to allow cookie auth from
'https://your-frontend-app.com',
'https://your-other-frontend-app.com',
],
// highlight-end
});
})
export default config;
export default config
```
### Identifying users via the Authorization Header
@@ -150,11 +169,12 @@ export default config;
In addition to authenticating via an HTTP-only cookie, you can also identify users via the `Authorization` header on an HTTP request.
Example:
```ts
const request = await fetch('http://localhost:3000', {
headers: {
Authorization: `JWT ${token}`
}
Authorization: `JWT ${token}`,
},
})
```

View File

@@ -11,38 +11,46 @@ Because Payload uses your existing Express server, you are free to add whatever
This approach has a ton of benefits - it's great for isolation of concerns and limiting scope, but it also means that your additional routes won't have access to Payload's user authentication.
<Banner type="success">
You can make full use of Payload's built-in authentication within your own custom Express endpoints by adding Payload's authentication middleware.
You can make full use of Payload's built-in authentication within your own custom Express
endpoints by adding Payload's authentication middleware.
</Banner>
<Banner type="warning">
Payload must be initialized before the `payload.authenticate` middleware can be used. This is done
by calling `payload.init()` prior to adding the middleware.
</Banner>
Example in `server.js`:
```ts
import express from 'express';
import payload from 'payload';
import express from 'express'
import payload from 'payload'
const app = express();
const app = express()
payload.init({
secret: 'PAYLOAD_SECRET_KEY',
mongoURL: 'mongodb://localhost/payload',
express: app,
});
const start = async () => {
await payload.init({
secret: 'PAYLOAD_SECRET_KEY',
express: app,
})
const router = express.Router();
const router = express.Router()
router.use(payload.authenticate); // highlight-line
// Note: Payload must be initialized before the `payload.authenticate` middleware can be used
router.use(payload.authenticate) // highlight-line
router.get('/', (req, res) => {
if (req.user) {
return res.send(`Authenticated successfully as ${req.user.email}.`);
}
router.get('/', (req, res) => {
if (req.user) {
return res.send(`Authenticated successfully as ${req.user.email}.`)
}
return res.send('Not authenticated');
});
return res.send('Not authenticated')
})
app.use('/some-route-here', router);
app.use('/some-route-here', router)
app.listen(3000, async () => {
payload.logger.info(`listening on ${3000}...`);
});
app.listen(3000)
}
start()
```

View File

@@ -0,0 +1,61 @@
---
title: Project Configuration
label: Configuration
order: 20
desc: Quickly configure and deploy your Payload Cloud project in a few simple steps.
keywords: configuration, config, settings, project, cloud, payload cloud, deploy, deployment
---
### Select your plan
Once you have created a project, you will need to select your plan. This will determine the resources that are allocated to your project and the features that are available to you.
<Banner type="success">
Note: All Payload Cloud teams that deploy a project require a card on file. This helps us prevent
fraud and abuse on our platform. If you select a plan with a free trial, you will not be charged
until your trial period is over. Well remind you 7 days before your trial ends and you can cancel
anytime.
</Banner>
### Project Details
| Option | Description |
| ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Region** | Select the region closest to your audience. This will ensure the fastest communication between your data and your client. |
| **Project Name** | A name for your project. You can change this at any time. |
| **Project Slug** | Choose a unique slug to identify your project. This needs to be unique for your team and you can change it any time. |
| **Team** | Select the team you want to create the project under. If this is your first project, a personal team will be created for you automatically. You can modify your team settings and invite new members at any time from the Team Settings page. |
### Build Settings
If you are deploying a new project from a template, the following settings will be automatically configured for you. If you are using your own repository, you need to make sure your build settings are accurate for your project to deploy correctly.
| Option | Description |
| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Root Directory** | The folder where your `package.json` file lives. |
| **Install Command** | The command used to install your modules, for example: `yarn install` or `npm install` |
| **Build Command** | The command used to build your application, for example: `yarn build` or `npm run build` |
| **Serve Command** | The command used to serve your application, for example: `yarn serve` or `npm run serve` |
| **Branch to Deploy** | Select the branch of your repository that you want to deploy from. This is the branch that will be used to build your project when you commit new changes. |
| **Default Domain** | Set a default domain for your project. This must be unique and you will not able to change it. You can always add a custom domain later in your project settings. |
### Environment Variables
Any of the features in Payload Cloud that require environment variables will automatically be provided to your application. If your app requires any custom environment variables, you can set them here.
<Banner type="warning">
Note: For security reasons, any variables you wish to provide to the Admin panel must be prefixed
with `PAYLOAD_PUBLIC_`.  Learn more
[here](https://payloadcms.com/docs/admin/webpack#admin-environment-vars).
</Banner>
### Payment
Payment methods can be set per project and can be updated any time. You can use teams default payment method, or add a new one. Modify your payment methods in your Project settings / Team settings.
<Banner type="success">
<strong>Note:</strong> All Payload Cloud teams that deploy a project require a card on file. This
helps us prevent fraud and abuse on our platform. If you select a plan with a free trial, you will
not be charged until your trial period is over. Well remind you 7 days before your trial ends and
you can cancel anytime.
</Banner>

View File

@@ -0,0 +1,51 @@
---
title: Getting Started
label: Getting Started
order: 10
desc: Get started with Payload Cloud, a deployment solution specifically designed for Node + MongoDB applications.
keywords: cloud, hosted, database, storage, email, deployment, serverless, node, mongodb, s3, aws, cloudflare, atlas, resend, payload, cms
---
A deployment solution specifically designed for Node.js + MongoDB applications, offering seamless deployment of your entire stack in one place. You can get started in minutes with a one-click template or bring your own codebase with you.
Payload Cloud offers various plans tailored to meet your specific needs, including a MongoDB Atlas database, S3 file storage, and email delivery powered by [Resend](https://resend.com). To see a full breakdown of features and plans, see our [Cloud Pricing page](https://payloadcms.com/cloud-pricing).
To get started, you first need to create an account. Head over to [the login screen](https://payloadcms.com/login) and **Register for Free**.
<Banner type="success">
To create your first project, you can either select [a template](#starting-from-a-template) or
[import an existing project](#importing-from-an-existing-codebase) from GitHub.
</Banner>
## Starting from a Template
Templates come preconfigured and provide a one-click solution to quickly deploy a new application.
![Screen for creating a new project from a template](https://payloadcms.com/images/docs/cloud/create-from-template.jpg)
_Creating a new project from a template._
After creating an account, select your desired template from the Projects page. At this point, you need to connect to authorize the Payload Cloud application with your GitHub account. Click Continue with GitHub and follow the prompts to authorize the app.
Next, select your `GitHub Scope`. If you belong to multiple organizations, they will show up here. If you do not see the organization you are looking for, you may need to adjust your GitHub app permissions.
After selecting your scope, create a unique `repository name` and select whether you want your repository to be public or private on GitHub.
<Banner type="warning">
<strong>Note:</strong> Public repositories can be accessed by anyone online, while private
repositories grant access only to you and anyone you explicitly authorize.
</Banner>
Once you are ready, click **Create Project**. This will clone the selected template to a new repository in your GitHub account, and take you to the configuration page to set up your project for deployment.
## Importing from an Existing Codebase
Payload Cloud works for any Node.js + MongoDB app. From the New Project page, select **import an existing Git codebase**. Choose the organization and select the repository you want to import. From here, you will be taken to the configuration page to set up your project for deployment.
![Screen for creating a new project from an existing repository](https://payloadcms.com/images/docs/cloud/create-from-existing.jpg)
_Creating a new project from an existing repository._
<Banner type="warning">
<strong>Note:</strong> In order to make use of the features of Payload Cloud in your own codebase,
you will need to add the [Cloud Plugin](https://github.com/payloadcms/plugin-cloud) to your
Payload app.
</Banner>

109
docs/cloud/projects.mdx Normal file
View File

@@ -0,0 +1,109 @@
---
title: Cloud Projects
label: Projects
order: 40
desc: Manage your Payload Cloud projects.
keywords: cloud, payload cloud, projects, project, overview, database, file storage, build settings, environment variables, custom domains, email, developing locally
---
### Overview
<Banner>
The overview tab shows your most recent deployment, along with build and deployment logs. From
here, you can see your live URL, deployment details like timestamps and commit hash, as well as
the status of your deployment. You can also trigger a redeployment manually, which will rebuild
your project using the current configuration.
</Banner>
![Payload Cloud Overview Page](https://payloadcms.com/images/docs/cloud/overview-page.jpg)
_A screenshot of the Overview page for a Cloud project._
### Database
Your Payload Cloud project comes with a MongoDB serverless Atlas DB instance or a Dedicated Atlas cluster, depending on your plan. To interact with your cloud database, you will be provided with a MongoDB connection string. This can be found under the **Database** tab of your project.
`mongodb+srv://your_connection_string`
### File Storage
Payload Cloud gives you S3 file storage backed by Cloudflare as a CDN, and this plugin extends Payload so that all of your media will be stored in S3 rather than locally.
AWS Cognito is used for authentication to your S3 bucket. The [Payload Cloud Plugin](https://github.com/payloadcms/plugin-cloud) will automatically pick up these values. These values are only if you'd like to access your files directly, outside of Payload Cloud.
### Build Settings
You can update settings from your Projects Settings tab. Changes to your build settings will trigger a redeployment of your project.
### Environment Variables
From the Environment Variables page of the Settings tab, you can add, update and delete variables for use in your project. Like build settings, these changes will trigger a redeployment of your project.
<Banner>
Note: For security reasons, any variables you wish to provide to the Admin panel must be prefixed
with `PAYLOAD_PUBLIC_`.  Learn more
[here](https://payloadcms.com/docs/admin/webpack#admin-environment-vars).
</Banner>
### Custom Domains
With Payload Cloud, you can add custom domain names to your project. To do so, first go to the Domains page of the Settings tab of your project. Here you can see your default domain. To add a new domain, type in the domain name you wish to use.
<Banner>
Note: do not include the protocol (http:// or https://) or any paths (/page). Only include the
domain name and extension, and optionally a subdomain. - your-domain.com - backend.your-domain.com
</Banner>
Once you click save, a DNS record will be generated for your domain name to point to your live project. Add this record into your DNS providers records, and once the records are resolving properly (this can take 1hr to 48hrs in some cases), your domain will now to point to your live project.
You will also need to configure your Payload project to use your specified domain. In your `payload.config.ts` file, specify your `serverURL` with your domain:
```ts
export default buildConfig({
serverURL: 'https://example.com',
// the rest of your config,
})
```
### Email
Powered by [Resend](https://resend.com), Payload Cloud comes with integrated email support out of the box. No configuration is needed, and you can use `payload.sendEmail()` to send email right from your Payload app. To learn more about sending email with Payload, checkout the [Email Configuration](https://payloadcms.com/docs/email/overview) overview.
If you are on the Pro or Enterprise plan, you can add your own custom Email domain name. From the Email page of your projects Settings, add the domain you wish to use for email delivery. This will generate a set of DNS records. Add these records to your DNS provider and click verify to check that your records are resolving properly. Once verified, your emails will now be sent from your custom domain name.
### Developing Locally
To make changes to your project, you will need to clone the repository defined in your project settings to your local machine. In order to run your project locally, you will need configure your local environment first. Refer to your repositorys `README.md` file to see the steps needed for your specific template.
From there, you are ready to make updates to your project. When you are ready to make your changes live, commit your changes to the branch you specified in your Project settings, and your application will automatically trigger a redeploy and build from your latest commit.
### Cloud Plugin
Projects generated from a template will come pre-configured with the official Cloud Plugin, but if you are using your own repository you will need to add this into your project. To do so, add the plugin to your Payload config:
`yarn add @payloadcms/plugin-cloud`
```js
import { payloadCloud } from '@payloadcms/plugin-cloud'
import { buildConfig } from 'payload/config'
export default buildConfig({
plugins: [payloadCloud()],
// rest of config
})
```
<Banner type="warning">
**Note:** If your Payload config already has an email with transport, this will take precedence
over Payload Cloud's email service.
</Banner>
##### **Optional configuration**
If you wish to opt-out of any Payload cloud features, the plugin also accepts options to do so.
```js
payloadCloud({
storage: false, // Disable file storage
email: false, // Disable email delivery
})
```

35
docs/cloud/teams.mdx Normal file
View File

@@ -0,0 +1,35 @@
---
title: Cloud Teams
label: Teams
order: 30
desc: Manage your Payload Cloud team and billing settings.
keywords: team, teams, billing, subscription, payment, plan, plans, cloud, payload cloud
---
<Banner>
Within Payload Cloud, the team management feature offers you the ability to manage your
organization, team members, billing, and subscription settings.
</Banner>
![Payload Cloud Team Settings](https://payloadcms.com/images/docs/cloud/team-settings.jpg)
_A screenshot of the Team Settings page._
### Members
Each team has members that can interact with your projects. You can invite multiple people to your team and each individual can belong to more than one team. You can assign them either `owner` or `user` permissions. Owners are able to make admin-only changes, such as deleting projects, and editing billing information.
### Adding Members
To add a new member to your team, visit your Teams Settings page, and click “Invite Teammate”. You can then add their email address, and assign their role. Press “Save” to send the invitations, which will send an email to the invited team member where they can create a new account.
### Billing
Users can update billing settings and subscriptions for any teams where they are designated as an `owner`. To make updates to the teams payment methods, visit the Billing page under the Team Settings tab. You can add new cards, delete cards, and set a payment method as a default. The default payment method will be used in the event that another payment method fails.
### Subscriptions
From the Subscriptions page, a team owner can see all current plans for their team. From here, you can see the price of each plan, if there is an active trial, and when you will be billed next.
### Invoices
The Invoices page will you show you the invoices for your account, as well as the status on their payment.

View File

@@ -6,79 +6,92 @@ desc: Structure your Collections for your needs by defining fields, adding slugs
keywords: collections, config, configuration, documentation, Content Management System, cms, headless, javascript, node, react, express
---
Payload Collections are defined through configs of their own, and you can define as many as your application needs. Each Collection will scaffold a MongoDB collection automatically based on fields that you define.
Payload Collections are defined through configs of their own, and you can define as many as your application needs. Each
Collection will scaffold a new collection automatically in your database of choice, based on fields that you define.
It's often best practice to write your Collections in separate files and then import them into the main Payload config.
## Options
| Option | Description |
|------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **`slug`** * | Unique, URL-friendly string that will act as an identifier for this Collection. |
| **`fields`** * | Array of field types that will determine the structure and functionality of the data stored within this Collection. [Click here](/docs/fields/overview) for a full list of field types as well as how to configure them. |
| **`labels`** | Singular and plural labels for use in identifying this Collection throughout Payload. Auto-generated from slug if not defined. |
| **`admin`** | Admin-specific configuration. See below for [more detail](#admin-options). |
| **`hooks`** | Entry points to "tie in" to Collection actions at specific points. [More](/docs/hooks/overview#collection-hooks) |
| **`access`** | Provide access control functions to define exactly who should be able to do what with Documents in this Collection. [More](/docs/access-control/overview/#collections) |
| **`auth`** | Specify options if you would like this Collection to feature authentication. For more, consult the [Authentication](/docs/authentication/config) documentation. |
| **`upload`** | Specify options if you would like this Collection to support file uploads. For more, consult the [Uploads](/docs/upload/overview) documentation. |
| **`timestamps`** | Set to false to disable documents' automatically generated `createdAt` and `updatedAt` timestamps. |
| **`versions`** | Set to true to enable default options, or configure with object properties. [More](/docs/versions/overview#collection-config) |
| **`endpoints`** | Add custom routes to the REST API. [More](/docs/rest-api/overview#custom-endpoints) |
| **`graphQL`** | An object with `singularName` and `pluralName` strings used in schema generation. Auto-generated from slug if not defined. |
| **`typescript`** | An object with property `interface` as the text used in schema generation. Auto-generated from slug if not defined. |
| Option | Description |
|-------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **`slug`** \* | Unique, URL-friendly string that will act as an identifier for this Collection. |
| **`fields`** \* | Array of field types that will determine the structure and functionality of the data stored within this Collection. [Click here](/docs/fields/overview) for a full list of field types as well as how to configure them. |
| **`labels`** | Singular and plural labels for use in identifying this Collection throughout Payload. Auto-generated from slug if not defined. |
| **`admin`** | Admin-specific configuration. See below for [more detail](#admin-options). |
| **`hooks`** | Entry points to "tie in" to Collection actions at specific points. [More](/docs/hooks/overview#collection-hooks) |
| **`access`** | Provide access control functions to define exactly who should be able to do what with Documents in this Collection. [More](/docs/access-control/overview/#collections) |
| **`auth`** | Specify options if you would like this Collection to feature authentication. For more, consult the [Authentication](/docs/authentication/config) documentation. |
| **`upload`** | Specify options if you would like this Collection to support file uploads. For more, consult the [Uploads](/docs/upload/overview) documentation. |
| **`timestamps`** | Set to false to disable documents' automatically generated `createdAt` and `updatedAt` timestamps. |
| **`versions`** | Set to true to enable default options, or configure with object properties. [More](/docs/versions/overview#collection-config) |
| **`endpoints`** | Add custom routes to the REST API. Set to `false` to disable routes. [More](/docs/rest-api/overview#custom-endpoints) |
| **`graphQL`** | An object with `singularName` and `pluralName` strings used in schema generation. Auto-generated from slug if not defined. Set to `false` to disable GraphQL. |
| **`typescript`** | An object with property `interface` as the text used in schema generation. Auto-generated from slug if not defined. |
| **`defaultSort`** | Pass a top-level field to sort by default in the collection List view. Prefix the name of the field with a minus symbol ("-") to sort in descending order. |
| **`custom`** | Extension point for adding custom data (e.g. for plugins) |
*\* An asterisk denotes that a property is required.*
_\* An asterisk denotes that a property is required._
#### Simple collection example
```ts
import { CollectionConfig } from 'payload/types';
import { CollectionConfig } from 'payload/types'
const Orders: CollectionConfig = {
slug: 'orders',
fields: [
{
name: 'total',
type: 'number',
required: true,
},
{
name: 'placedBy',
type: 'relationship',
relationTo: 'customers',
required: true,
}
]
};
export const Orders: CollectionConfig = {
slug: 'orders',
fields: [
{
name: 'total',
type: 'number',
required: true,
},
{
name: 'placedBy',
type: 'relationship',
relationTo: 'customers',
required: true,
},
],
}
```
#### More collection config examples
You can find an assortment of [example collection configs](https://github.com/payloadcms/public-demo/tree/master/src/collections) in the Public Demo source code on GitHub.
You can find an assortment
of [example collection configs](https://github.com/payloadcms/public-demo/tree/master/src/collections) in the Public
Demo source code on GitHub.
### Admin options
You can customize the way that the Admin panel behaves on a collection-by-collection basis by defining the `admin` property on a collection's config.
You can customize the way that the Admin panel behaves on a collection-by-collection basis by defining the `admin`
property on a collection's config.
| Option | Description |
| --------------------------- | -------------|
| `group` | Text used as a label for grouping collection links together in the navigation. |
| `hooks` | Admin-specific hooks for this collection. [More](#admin-hooks) |
| `useAsTitle` | Specify a top-level field to use for a document title throughout the Admin panel. If no field is defined, the ID of the document is used as the title. |
| `description` | Text or React component to display below the Collection label in the List view to give editors more information. |
| `defaultColumns` | Array of field names that correspond to which columns to show by default in this collection's List view. |
| `disableDuplicate ` | Disables the "Duplicate" button while editing documents within this collection. |
| Option | Description |
|------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `group` | Text used as a label for grouping collection and global links together in the navigation. |
| `hidden` | Set to true or a function, called with the current user, returning true to exclude this collection from navigation and admin routing. |
| `hooks` | Admin-specific hooks for this collection. [More](#admin-hooks) |
| `useAsTitle` | Specify a top-level field to use for a document title throughout the Admin panel. If no field is defined, the ID of the document is used as the title. |
| `description` | Text or React component to display below the Collection label in the List view to give editors more information. |
| `defaultColumns` | Array of field names that correspond to which columns to show by default in this collection's List view. |
| `disableDuplicate ` | Disables the "Duplicate" button while editing documents within this collection. |
| `hideAPIURL` | Hides the "API URL" meta field while editing documents within this collection. |
| `enableRichTextLink` | The [Rich Text](/docs/fields/rich-text) field features a `Link` element which allows for users to automatically reference related documents within their rich text. Set to `true` by default. |
| `enableRichTextRelationship` | The [Rich Text](/docs/fields/rich-text) field features a `Relationship` element which allows for users to automatically reference related documents within their rich text. Set to `true` by default. |
| `preview` | Function to generate preview URLS within the Admin panel that can point to your app. [More](#preview). |
| `components` | Swap in your own React components to be used within this collection. [More](/docs/admin/components#collections) |
| `listSearchableFields` | Specify which fields should be searched in the List search view. [More](#list-searchable-fields) |
| `preview` | Function to generate preview URLS within the Admin panel that can point to your app. [More](#preview). |
| `livePreview` | Enable real-time editing for instant visual feedback of your front-end application. [More](/docs/live-preview/overview). |
| `components` | Swap in your own React components to be used within this collection. [More](/docs/admin/components#collections) |
| `listSearchableFields` | Specify which fields should be searched in the List search view. [More](#list-searchable-fields) |
| **`pagination`** | Set pagination-specific options for this collection. [More](#pagination) |
### Preview
Collection `admin` options can accept a `preview` function that will be used to generate a link pointing to the frontend of your app to preview data.
Collection `admin` options can accept a `preview` function that will be used to generate a link pointing to the frontend
of your app to preview data.
If the function is specified, a Preview button will automatically appear in the corresponding collection's Edit view. Clicking the Preview button will link to the URL that is generated by the function.
If the function is specified, a Preview button will automatically appear in the corresponding collection's Edit view.
Clicking the Preview button will link to the URL that is generated by the function.
**The preview function accepts two arguments:**
@@ -88,50 +101,70 @@ If the function is specified, a Preview button will automatically appear in the
**Example collection with preview function:**
```ts
import { CollectionConfig } from 'payload/types';
import { CollectionConfig } from 'payload/types'
const Posts: CollectionConfig = {
slug: 'posts',
fields: [
{
name: 'slug',
type: 'text',
required: true,
},
],
admin: {
preview: (doc, { locale }) => {
if (doc?.slug) {
return `https://bigbird.com/preview/posts/${doc.slug}?locale=${locale}`;
}
export const Posts: CollectionConfig = {
slug: 'posts',
fields: [
{
name: 'slug',
type: 'text',
required: true,
},
],
admin: {
preview: (doc, { locale }) => {
if (doc?.slug) {
return `https://bigbird.com/preview/posts/${doc.slug}?locale=${locale}`
}
return null;
},
},
};
return null
},
},
}
```
### Pagination
Here are a few options that you can specify options for pagination on a collection-by-collection basis:
| Option | Description |
|----------------|-----------------------------------------------------------------------------------------------------|
| `defaultLimit` | Integer that specifies the default per-page limit that should be used. Defaults to 10. |
| `limits` | Provide an array of integers to use as per-page options for admins to choose from in the List view. |
### Access control
You can specify extremely granular access control (what users can do with documents in a collection) on a collection by collection basis. To learn more, go to the [Access Control](/docs/access-control/overview) docs.
You can specify extremely granular access control (what users can do with documents in a collection) on a collection by
collection basis. To learn more, go to the [Access Control](/docs/access-control/overview) docs.
### Hooks
Hooks are a powerful way to extend collection functionality and execute your own logic, and can be defined on a collection by collection basis. To learn more, go to the [Hooks](/docs/hooks/overview) documentation.
Hooks are a powerful way to extend collection functionality and execute your own logic, and can be defined on a
collection by collection basis. To learn more, go to the [Hooks](/docs/hooks/overview) documentation.
### Field types
Collections support all field types that Payload has to offer—including simple fields like text and checkboxes all the way to more complicated layout-building field groups like Blocks. [Click here](/docs/fields/overview) to learn more about field types.
Collections support all field types that Payload has to offer—including simple fields like text and checkboxes all the
way to more complicated layout-building field groups like Blocks. [Click here](/docs/fields/overview) to learn more
about field types.
### List Searchable Fields
In the List view, there is a "search" box that allows you to quickly find a document with a search. By default, it searches on the ID field. If you have `admin.useAsTitle` defined, the list search will use that field. However, you can define more than one field to search to make it easier on your admin editors to find the data they need.
In the List view, there is a "search" box that allows you to quickly find a document with a search. By default, it
searches on the ID field. If you have `admin.useAsTitle` defined, the list search will use that field. However, you can
define more than one field to search to make it easier on your admin editors to find the data they need.
For example, let's say you have a Posts collection with `title`, `metaDescription`, and `tags` fields - and you want all three of those fields to be searchable in the List view. You can simply add `admin.listSearchableFields: ['title', 'metaDescription', 'tags']` - and the admin UI will automatically search on those three fields plus the ID field.
For example, let's say you have a Posts collection with `title`, `metaDescription`, and `tags` fields - and you want all
three of those fields to be searchable in the List view. You can simply
add `admin.listSearchableFields: ['title', 'metaDescription', 'tags']` - and the admin UI will automatically search on
those three fields plus the ID field.
<Banner type="warning">
<strong>Note:</strong><br/>
If you are adding <strong>listSearchableFields</strong>, make sure you index each of these fields so your admin queries can remain performant.
<strong>Note:</strong>
<br />
If you are adding <strong>listSearchableFields</strong>, make sure you index each of these fields
so your admin queries can remain performant.
</Banner>
### Admin Hooks
@@ -140,29 +173,32 @@ In addition to collection hooks themselves, Payload provides for admin UI-specif
**`beforeDuplicate`**
The `beforeDuplicate` hook is an async function that accepts an object containing the data to duplicate, as well as the locale of the doc to duplicate. Within this hook, you can modify the data to be duplicated, which is useful in cases where you have unique fields that need to be incremented or similar, as well as if you want to automatically modify a document's `title`.
The `beforeDuplicate` hook is an async function that accepts an object containing the data to duplicate, as well as the
locale of the doc to duplicate. Within this hook, you can modify the data to be duplicated, which is useful in cases
where you have unique fields that need to be incremented or similar, as well as if you want to automatically modify a
document's `title`.
Example:
```ts
import { BeforeDuplicate, CollectionConfig } from 'payload/types';
import { BeforeDuplicate, CollectionConfig } from 'payload/types'
// Your auto-generated Page type
import { Page } from '../payload-types.ts';
import { Page } from '../payload-types.ts'
const beforeDuplicate: BeforeDuplicate<Page> = ({ data }) => {
return {
...data,
title: `${data.title} Copy`,
uniqueField: data.uniqueField ? `${data.uniqueField}-copy` : '',
};
};
}
}
export const Page: CollectionConfig = {
slug: 'pages',
admin: {
hooks: {
beforeDuplicate,
}
},
},
fields: [
{
@@ -173,8 +209,8 @@ export const Page: CollectionConfig = {
name: 'uniqueField',
type: 'text',
unique: true,
}
]
},
],
}
```
@@ -183,14 +219,14 @@ export const Page: CollectionConfig = {
You can import collection types as follows:
```ts
import { CollectionConfig } from 'payload/types';
import { CollectionConfig } from 'payload/types'
// This is the type used for incoming collection configs.
// Only the bare minimum properties are marked as required.
```
```ts
import { SanitizedCollectionConfig } from 'payload/types';
import { SanitizedCollectionConfig } from 'payload/types'
// This is the type used after an incoming collection config is fully sanitized.
// Generally, this is only used internally by Payload.

View File

@@ -8,6 +8,40 @@ keywords: config, configuration, documentation, Content Management System, cms,
Payload utilizes a few Express-specific middleware packages within its own routers. You can customize how they work by passing in configuration options to the main Payload config's `express` property.
### Custom Middleware
Payload allows you to pass in custom Express middleware to be used on all of the routes it opens. This is useful for adding logging or any other custom functionality to your endpoints.
There are 2 exposed properties. Each property is an array of middleware functions.
- `preMiddleware` - runs before any of the Payload middleware
- `postMiddleware` - runs after all of the Payload middleware
```ts
{
express: {
preMiddleware: [
(req, res, next) => {
// do something
next()
}
],
postMiddleware: [
(req, res, next) => {
// do something
next()
}
]
}
}
// Example logging middleware function
const requestLoggerMiddleware = (req, res, next) => {
req.payload.logger.info(`request: ${req.method} ${req.url}`)
next()
}
```
### JSON
`express.json()` is used to parse JSON body content into JavaScript objects accessible on the Express `req`. Payload allows you to customize all of the `json` method's options. Common examples of customization use-cases are increasing the max allowed JSON body size which defaults to `2MB`.
@@ -36,11 +70,11 @@ To customize compression options, pass an object to the Payload config's `expres
```js
{
express: {
compression: {
// settings go here
}
}
express: {
compression: {
// settings go here
}
}
}
```

View File

@@ -6,16 +6,16 @@ desc: Set up your Global config for your needs by defining fields, adding slugs
keywords: globals, config, configuration, documentation, Content Management System, cms, headless, javascript, node, react, express
---
Global configs are in many ways similar to [Collections](/docs/configuration/collections). The big difference is that Collections will potentially contain *many* documents, while a Global is a "one-off". Globals are perfect for things like header nav, site-wide banner alerts, app-wide localized strings, and other "global" data that your site or app might rely on.
Global configs are in many ways similar to [Collections](/docs/configuration/collections). The big difference is that Collections will potentially contain _many_ documents, while a Global is a "one-off". Globals are perfect for things like header nav, site-wide banner alerts, app-wide localized strings, and other "global" data that your site or app might rely on.
As with Collection configs, it's often best practice to write your Globals in separate files and then import them into the main Payload config.
## Options
| Option | Description |
|--------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **`slug`** * | Unique, URL-friendly string that will act as an identifier for this Global. |
| **`fields`** * | Array of field types that will determine the structure and functionality of the data stored within this Global. [Click here](/docs/fields/overview) for a full list of field types as well as how to configure them. |
| ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **`slug`** \* | Unique, URL-friendly string that will act as an identifier for this Global. |
| **`fields`** \* | Array of field types that will determine the structure and functionality of the data stored within this Global. [Click here](/docs/fields/overview) for a full list of field types as well as how to configure them. |
| **`label`** | Text for the name in the Admin panel or an object with keys for each language. Auto-generated from slug if not defined. |
| **`description`** | Text or React component to display below the Global header to give editors more information. |
| **`admin`** | Admin-specific configuration. See below for [more detail](/docs/configuration/globals#admin-options). |
@@ -24,36 +24,37 @@ As with Collection configs, it's often best practice to write your Globals in se
| **`versions`** | Set to true to enable default options, or configure with object properties. [More](/docs/versions/overview#globals-config) |
| **`endpoints`** | Add custom routes to the REST API. [More](/docs/rest-api/overview#custom-endpoints) |
| **`graphQL.name`** | Text used in schema generation. Auto-generated from slug if not defined. |
| **`typescript`** | An object with property `interface` as the text used in schema generation. Auto-generated from slug if not defined. |
| **`typescript`** | An object with property `interface` as the text used in schema generation. Auto-generated from slug if not defined. |
| **`custom`** | Extension point for adding custom data (e.g. for plugins) |
*\* An asterisk denotes that a property is required.*
_\* An asterisk denotes that a property is required._
#### Simple Global example
```ts
import { GlobalConfig } from 'payload/types';
import { GlobalConfig } from 'payload/types'
const Nav: GlobalConfig = {
slug: 'nav',
fields: [
{
name: 'items',
type: 'array',
required: true,
maxRows: 8,
fields: [
{
name: 'page',
type: 'relationship',
relationTo: 'pages', // "pages" is the slug of an existing collection
required: true,
}
]
},
]
};
slug: 'nav',
fields: [
{
name: 'items',
type: 'array',
required: true,
maxRows: 8,
fields: [
{
name: 'page',
type: 'relationship',
relationTo: 'pages', // "pages" is the slug of an existing collection
required: true,
},
],
},
],
}
export default Nav;
export default Nav
```
#### Global config example
@@ -64,9 +65,51 @@ You can find an [example Global config](https://github.com/payloadcms/public-dem
You can customize the way that the Admin panel behaves on a Global-by-Global basis by defining the `admin` property on a Global's config.
| Option | Description |
| ---------------------------- | -------------|
| `components` | Swap in your own React components to be used within this Global. [More](/docs/admin/components#globals) |
| Option | Description |
| ------------ | ----------------------------------------------------------------------------------------------------------------------------------------- |
| `group` | Text used as a label for grouping collection and global links together in the navigation. |
| `hidden` | Set to true or a function, called with the current user, returning true to exclude this global from navigation and admin routing. |
| `components` | Swap in your own React components to be used within this Global. [More](/docs/admin/components#globals) |
| `preview` | Function to generate a preview URL within the Admin panel for this global that can point to your app. [More](#preview). |
| `livePreview`| Enable real-time editing for instant visual feedback of your front-end application. [More](/docs/live-preview/overview). |
| `hideAPIURL` | Hides the "API URL" meta field while editing documents within this collection. |
### Preview
Global `admin` options can accept a `preview` function that will be used to generate a link pointing to the frontend of your app to preview data.
If the function is specified, a Preview button will automatically appear in the corresponding global's Edit view. Clicking the Preview button will link to the URL that is generated by the function.
**The preview function accepts two arguments:**
1. The document being edited
1. An `options` object, containing `locale` and `token` properties. The `token` is the currently logged-in user's JWT.
**Example global with preview function:**
```ts
import { GlobalConfig } from 'payload/types'
export const MyGlobal: GlobalConfig = {
slug: 'my-global',
fields: [
{
name: 'slug',
type: 'text',
required: true,
},
],
admin: {
preview: (doc, { locale }) => {
if (doc?.slug) {
return `https://bigbird.com/preview/${doc.slug}?locale=${locale}`
}
return null
},
},
}
```
### Access control
@@ -85,14 +128,14 @@ Globals support all field types that Payload has to offer—including simple fie
You can import global types as follows:
```ts
import { GlobalConfig } from 'payload/types';
import { GlobalConfig } from 'payload/types'
// This is the type used for incoming global configs.
// Only the bare minimum properties are marked as required.
```
```ts
import { SanitizedGlobalConfig } from 'payload/types';
import { SanitizedGlobalConfig } from 'payload/types'
// This is the type used after an incoming global config is fully sanitized.
// Generally, this is only used internally by Payload.

View File

@@ -11,15 +11,20 @@ Not only does Payload support managing localized content, it also has internatio
While Payload's built-in features come translated, you may want to also translate parts of your project's configuration too. This is possible in places like collections and globals labels and groups, field labels, descriptions and input placeholder text. The admin UI will display all the correct translations you provide based on the user's language.
Here is an example of a simple collection supporting both English and Spanish editors:
```ts
const Articles: CollectionConfig = {
import { CollectionConfig } from 'payload/types'
export const Articles: CollectionConfig = {
slug: 'articles',
labels: {
singular: {
en: 'Article', es: 'Artículo',
en: 'Article',
es: 'Artículo',
},
plural: {
en: 'Articles', es: 'Artículos',
en: 'Articles',
es: 'Artículos',
},
},
admin: {
@@ -30,19 +35,21 @@ const Articles: CollectionConfig = {
name: 'title',
type: 'text',
label: {
en: 'Title', es: 'Título',
en: 'Title',
es: 'Título',
},
admin: {
placeholder: { en: 'Enter title', es: 'Introduce el título' }
}
placeholder: { en: 'Enter title', es: 'Introduce el título' },
},
},
{
name: 'type',
type: 'radio',
options: [{
value: 'news',
label: { en: 'News', es: 'Noticias' },
}, // etc...
options: [
{
value: 'news',
label: { en: 'News', es: 'Noticias' },
}, // etc...
],
},
],
@@ -55,8 +62,10 @@ The Payload admin panel reads the language settings of a user's browser and disp
After a user logs in, they can change their language selection in the `/account` view.
<Banner>
<strong>Note:</strong><br/>
If there is a language that Payload does not yet support, we accept code <a href="https://github.com/payloadcms/payload/blob/master/contributing.md">contributions</a>.
<strong>Note:</strong>
<br />
If there is a language that Payload does not yet support, we accept code
[contributions](https://github.com/payloadcms/payload/blob/main/CONTRIBUTING.md).
</Banner>
### Node Express
@@ -83,7 +92,8 @@ export default buildConfig({
debug: false, // default
resources: {
en: {
custom: { // namespace can be anything you want
custom: {
// namespace can be anything you want
key1: 'Translation with {{variable}}', // translation
},
// override existing translation keys
@@ -94,7 +104,7 @@ export default buildConfig({
},
},
//...
});
})
```
See the i18next [configuration options](https://www.i18next.com/overview/configuration-options) to learn more.

View File

@@ -17,31 +17,55 @@ Add the `localization` property to your Payload config to enable localization pr
```ts
import { buildConfig } from 'payload/config'
export default buildConfig({
collections: [
// collections go here
],
localization: {
locales: ['en', 'es', 'de'],
defaultLocale: 'en',
fallback: true,
},
})
```
**Example Payload config set up for localization with full locales objects:**
```ts
import { buildConfig } from 'payload/config'
export default buildConfig({
collections: [
// collections go here
],
localization: {
locales: [
'en',
'es',
'de',
{
label: 'English',
code: 'en',
},
{
label: 'Arabic',
code: 'ar',
// opt-in to setting default text-alignment on Input fields to rtl (right-to-left) when current locale is rtl
rtl: true,
},
],
defaultLocale: 'en',
fallback: true,
},
});
})
```
**Here is a brief explanation of each of the options available within the `localization` property:**
**`locales`**
Array-based list of all locales that you would like to support. These strings do not need to be in any specific format. It's up to you to define how to represent your locales. Common patterns are to use two-letter ISO 639 language codes or four-letter language and country codes (ISO 31661) such as `en-US`, `en-UK`, `es-MX`, etc.
Array-based list of all locales that you would like to support. These can be strings of locale codes or objects with a `label`, a locale `code`, and the `rtl` (right-to-left) property. The locale codes do not need to be in any specific format. It's up to you to define how to represent your locales. Common patterns are to use two-letter ISO 639 language codes or four-letter language and country codes (ISO 31661) such as `en-US`, `en-UK`, `es-MX`, etc.
**`defaultLocale`**
Required string that matches one of the locales from the array provided. By default, if no locale is specified, documents will be returned in this locale.
Required string that matches one of the locale codes from the array provided. By default, if no locale is specified, documents will be returned in this locale.
**`fallback`**
@@ -68,8 +92,21 @@ With the above configuration, the `title` field will now be saved in the databas
All field types with a `name` property support the `localized` property—even the more complex field types like `array`s and `block`s.
<Banner>
<strong>Note:</strong><br/>
Enabling localization for field types that support nested fields will automatically create localized "sets" of all fields contained within the field. For example, if you have a page layout using a blocks field type, you have the choice of either localizing the full layout, by enabling localization on the top-level blocks field, or only certain fields within the layout.
<strong>Note:</strong>
<br />
Enabling localization for field types that support nested fields will automatically create
localized "sets" of all fields contained within the field. For example, if you have a page layout
using a blocks field type, you have the choice of either localizing the full layout, by enabling
localization on the top-level blocks field, or only certain fields within the layout.
</Banner>
<Banner type="warning">
<strong>Important:</strong>
<br />
When converting an existing field to or from `localized: true` the data structure in the document
will change for this field and so existing data for this field will be lost. Before changing the
localization setting on fields with existing data, you may need to consider a field migration
strategy.
</Banner>
### Retrieving localized docs
@@ -115,7 +152,9 @@ query {
```
<Banner>
In GraphQL, specifying the locale at the top level of a query will automatically apply it throughout all nested relationship fields. You can override this behavior by re-specifying locale arguments in nested related document queries.
In GraphQL, specifying the locale at the top level of a query will automatically apply it
throughout all nested relationship fields. You can override this behavior by re-specifying locale
arguments in nested related document queries.
</Banner>
##### Local API
@@ -133,5 +172,9 @@ const posts = await payload.find({
```
<Banner type="alert">
<strong>Tip:</strong><br/>The REST and Local APIs can return all localization data in one request by passing 'all' or '*' as the <strong>locale</strong> parameter. The response will be structured so that field values come back as the full objects keyed for each locale instead of the single, translated value.
<strong>Tip:</strong>
<br />
The REST and Local APIs can return all localization data in one request by passing 'all' or '*' as
the <strong>locale</strong> parameter. The response will be structured so that field values come
back as the full objects keyed for each locale instead of the single, translated value.
</Banner>

View File

@@ -6,83 +6,104 @@ desc: The Payload config is central to everything that Payload does, from adding
keywords: overview, config, configuration, documentation, Content Management System, cms, headless, javascript, node, react, express
---
Payload is a *config-based*, code-first CMS and application framework. The Payload config is central to everything that Payload does. It scaffolds the data that Payload stores as well as maintains custom React components, hook logic, custom validations, and much more. The config itself and all of its dependencies are run through Babel, so you can take full advantage of newer JavaScript features and even directly import React components containing JSX.
Payload is a _config-based_, code-first CMS and application framework. The Payload config is central to everything that Payload does. It scaffolds the data that Payload stores as well as maintains custom React components, hook logic, custom validations, and much more.
**Also, because the Payload source code is fully written in TypeScript, its configs are strongly typed—meaning that even if you aren't using TypeScript to build your project, your IDE (such as VSCode) may still provide helpful information like type-ahead suggestions while you write your config.**
**Also, because the Payload source code is fully written in TypeScript, its configs are strongly typed—meaning that even if you aren't using TypeScript, your IDE (such as VSCode) may still provide helpful information like type-ahead suggestions while you write your config.**
<Banner type="warning">
<strong>Important:</strong><br />This file is included in the Payload admin bundle, so make sure you do not embed any sensitive information.
<strong>Important:</strong>
<br />
This file is included in the Payload admin bundle, so make sure you do not embed any sensitive
information.
</Banner>
## Options
| Option | Description |
| -------------------- | -------------|
| `serverURL` | A string used to define the absolute URL of your app including the protocol, for example `https://example.com`. No paths allowed, only protocol, domain and (optionally) port |
| `collections` | An array of all Collections that Payload will manage. To read more about how to define your collection configs, [click here](/docs/configuration/collections). |
| `cors` | Either a whitelist array of URLS to allow CORS requests from, or a wildcard string (`'*'`) to accept incoming requests from any domain. |
| `globals` | An array of all Globals that Payload will manage. For more on Globals and their configs, [click here](/docs/configuration/globals). |
| `admin` | Base Payload admin configuration. Specify custom components, control metadata, set the Admin user collection, and [more](/docs/admin/overview#admin-options). |
| `localization` | Opt-in and control how Payload handles the translation of your content into multiple locales. [More](/docs/configuration/localization) |
| `graphQL` | Manage GraphQL-specific functionality here. Define your own queries and mutations, manage query complexity limits, and [more](/docs/graphql/overview#graphql-options). |
| `cookiePrefix` | A string that will be prefixed to all cookies that Payload sets. |
| `csrf` | A whitelist array of URLs to allow Payload cookies to be accepted from as a form of CSRF protection. [More](/docs/authentication/overview#csrf-protection) |
| `defaultDepth` | If a user does not specify `depth` while requesting a resource, this depth will be used. [More](/docs/getting-started/concepts#depth) |
| `maxDepth` | The maximum allowed depth to be permitted application-wide. This setting helps prevent against malicious queries. Defaults to `10`. |
| `indexSortableFields`| Automatically index all sortable top-level fields in the database to improve sort performance and add database compatibility for Azure Cosmos and similar. |
| `upload` | Base Payload upload configuration. [More](/docs/upload/overview#payload-wide-upload-options). |
| `routes` | Control the routing structure that Payload binds itself to. Specify `admin`, `api`, `graphQL`, and `graphQLPlayground`. |
| `email` | Base email settings to allow Payload to generate email such as Forgot Password requests and other requirements. [More](/docs/email/overview#configuration) |
| `express` | Express-specific middleware options such as compression and JSON parsing. [More](/docs/configuration/express) |
| `debug` | Enable to expose more detailed error information. |
| `telemetry` | Disable Payload telemetry by passing `false`. [More](/docs/configuration/overview#telemetry) |
| `rateLimit` | Control IP-based rate limiting for all Payload resources. Used to prevent DDoS attacks and [more](/docs/production/preventing-abuse#rate-limiting-requests). |
| `hooks` | Tap into Payload-wide hooks. [More](/docs/hooks/overview) |
| `plugins` | An array of Payload plugins. [More](/docs/plugins/overview) |
| `endpoints` | An array of custom API endpoints added to the Payload router. [More](/docs/rest-api/overview#custom-endpoints) |
| Option | Description |
| --------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `admin` \* | Base Payload admin configuration. Specify bundler*, custom components, control metadata, set the Admin user collection, and [more](/docs/admin/overview#admin-options). Required. |
| `editor` \* | Rich Text Editor which will be used by richText fields. Required. |
| `db` \* | Database Adapter which will be used by Payload. Read more [here](/docs/database/overview). Required. |
| `serverURL` | A string used to define the absolute URL of your app including the protocol, for example `https://example.com`. No paths allowed, only protocol, domain and (optionally) port |
| `collections` | An array of all Collections that Payload will manage. To read more about how to define your collection configs, [click here](/docs/configuration/collections). |
| `globals` | An array of all Globals that Payload will manage. For more on Globals and their configs, [click here](/docs/configuration/globals). |
| `cors` | Either a whitelist array of URLS to allow CORS requests from, or a wildcard string (`'*'`) to accept incoming requests from any domain. |
| `localization` | Opt-in and control how Payload handles the translation of your content into multiple locales. [More](/docs/configuration/localization) |
| `graphQL` | Manage GraphQL-specific functionality here. Define your own queries and mutations, manage query complexity limits, and [more](/docs/graphql/overview#graphql-options). |
| `cookiePrefix` | A string that will be prefixed to all cookies that Payload sets. |
| `csrf` | A whitelist array of URLs to allow Payload cookies to be accepted from as a form of CSRF protection. [More](/docs/authentication/overview#csrf-protection) |
| `defaultDepth` | If a user does not specify `depth` while requesting a resource, this depth will be used. [More](/docs/getting-started/concepts#depth) |
| `maxDepth` | The maximum allowed depth to be permitted application-wide. This setting helps prevent against malicious queries. Defaults to `10`. |
| `indexSortableFields` | Automatically index all sortable top-level fields in the database to improve sort performance and add database compatibility for Azure Cosmos and similar. |
| `upload` | Base Payload upload configuration. [More](/docs/upload/overview#payload-wide-upload-options). |
| `routes` | Control the routing structure that Payload binds itself to. Specify `admin`, `api`, `graphQL`, and `graphQLPlayground`. |
| `email` | Base email settings to allow Payload to generate email such as Forgot Password requests and other requirements. [More](/docs/email/overview#configuration) |
| `express` | Express-specific middleware options such as compression and JSON parsing. [More](/docs/configuration/express) |
| `debug` | Enable to expose more detailed error information. |
| `telemetry` | Disable Payload telemetry by passing `false`. [More](/docs/configuration/overview#telemetry) |
| `rateLimit` | Control IP-based rate limiting for all Payload resources. Used to prevent DDoS attacks and [more](/docs/production/preventing-abuse#rate-limiting-requests). |
| `hooks` | Tap into Payload-wide hooks. [More](/docs/hooks/overview) |
| `plugins` | An array of Payload plugins. [More](/docs/plugins/overview) |
| `endpoints` | An array of custom API endpoints added to the Payload router. [More](/docs/rest-api/overview#custom-endpoints) |
| `custom` | Extension point for adding custom data (e.g. for plugins) |
_\* An asterisk denotes that a property is required._
#### Simple example
```ts
import { buildConfig } from 'payload/config';
import { buildConfig } from 'payload/config'
import { mongooseAdapter } from '@payloadcms/db-mongodb'
import { postgresAdapter } from '@payloadcms/db-postgres' // beta
import { viteBundler } from '@payloadcms/bundler-vite'
import { webpackBundler } from '@payloadcms/bundler-webpack'
import { lexicalEditor } from '@payloadcms/richtext-lexical' // beta
import { slateEditor } from '@payloadcms/richtext-slate'
export default buildConfig({
collections: [
{
slug: 'pages',
fields: [
{
name: 'title',
type: 'text',
required: true,
},
{
name: 'content',
type: 'richText',
required: true,
}
]
}
],
globals: [
{
slug: 'header',
fields: [
{
name: 'nav',
type: 'array',
fields: [
{
name: 'page',
type: 'relationship',
relationTo: 'pages',
},
]
}
]
}
]
});
admin: {
bundler: webpackBundler(), // or viteBundler()
},
db: mongooseAdapter({}) // or postgresAdapter({}),
editor: lexicalEditor({}) // or slateEditor({})
collections: [
{
slug: 'pages',
fields: [
{
name: 'title',
type: 'text',
required: true,
},
{
name: 'content',
type: 'richText',
required: true,
},
],
},
],
globals: [
{
slug: 'header',
fields: [
{
name: 'nav',
type: 'array',
fields: [
{
name: 'page',
type: 'relationship',
relationTo: 'pages',
},
],
},
],
},
],
})
```
#### Full example config
@@ -94,12 +115,15 @@ You can see a full [example config](https://github.com/payloadcms/public-demo/bl
We suggest using the `dotenv` package to handle environment variables alongside of Payload. All that's necessary to do is to require the package as high up in your application as possible (for example, at the top of your `server.js` file), and ensure that it can find an `.env` file that you create.
**Add this line to the top of your server:**
```
require('dotenv').config()
// ...
// the rest of your `server.js` file goes here
```
Note that if you rely on any environment variables in your config itself, you should also call `dotenv()` at the top of your config itself as well. There's no harm in calling it in both your server and your config itself!
**Here is an example project structure w/ `dotenv` and an `.env` file:**
```
@@ -111,75 +135,56 @@ project-name
```
<Banner type="warning">
<strong>Important:</strong><br />
If you use an environment variable to configure any properties that are required for the Admin panel to function (ex. serverURL or any routes), you need to make sure that your Admin panel code can access it. <a href="/docs/admin/webpack#admin-environment-vars">Click here</a> for more info.
<strong>Important:</strong>
<br />
If you use an environment variable to configure any properties that are required for the Admin
panel to function (ex. serverURL or any routes), you need to make sure that your Admin panel code
can access it. [Click here](/docs/admin/webpack#admin-environment-vars) for more info.
</Banner>
### Customizing & overriding the config location
### Customizing & Automating Config Location Detection
By default, the Payload config must be in the root of your current working directory and named either `payload.config.js` or `payload.config.ts` if you're using TypeScript.
Payload is designed to automatically locate your configuration file. By default, it will first look in the root of your current working directory for a file named `payload.config.js` or `payload.config.ts` if you're using TypeScript.
But, you can specify where your Payload config is located as well as what it's named by using the environment variable `PAYLOAD_CONFIG_PATH`. The path you provide via this environment variable can either be absolute or relative to your current working directory.
In development mode, if the configuration file is not found at the root, Payload will attempt to read your `tsconfig.json`, and search in the directory specified in `compilerOptions.rootDir` (typically "src").
In production mode, Payload will first attempt to find the config file in the output directory specified in `compilerOptions.outDir` of your `tsconfig.json`, then fallback to the source directory (`compilerOptions.rootDir`), and finally will check the 'dist' directory.
Please ensure your `tsconfig.json` is properly configured if you want Payload to accurately auto-detect your configuration file location. If `tsconfig.json` does not exist or doesn't specify `rootDir` or `outDir`, Payload will default to the current working directory.
#### Overriding the Config Location
In addition to the above automated detection, you can specify your own location for the Payload config file. This is done by using the environment variable `PAYLOAD_CONFIG_PATH`. The path you provide via this environment variable can either be absolute or relative to your current working directory. This can be useful in situations where your Payload config is not in a standard location, or you wish to switch between multiple configurations.
**Example in package.json:**
```
```json
{
"scripts": {
"dev": "PAYLOAD_CONFIG_PATH=path/to/custom-config.js node server.js",
}
"scripts": {
"dev": "PAYLOAD_CONFIG_PATH=path/to/custom-config.js node server.js"
}
}
```
When `PAYLOAD_CONFIG_PATH` is set, Payload will use this path to load the configuration, bypassing all automated detection.
### Developing within the Config
The Payload config itself, as well as all files that it requires or imports, are run through Babel. TypeScript and all common ES6 features are fully supported. To see the Babel config that is used to parse Payload configs, check out the Payload source code [here](https://github.com/payloadcms/payload/blob/master/src/babel.config.js).
Payload comes with `isomorphic-fetch` installed which means that even in Node, you can use the `fetch` API just as you would within the browser. No need to import `axios` or similar, unless you want to!
#### Payload Config and Babel
The entire Payload config is transpiled automatically by Payload via `babel`.
If for any reason you need to re-use the built-in Payload `babel.config.js`, you can do so by importing it as follows:
```
import { config } from 'payload/babel';
```
<Banner type="warning">
<strong>Note:</strong><br/>
Because the Payload config is transpiled internally, if you want to import it to share or reuse any of its properties within your own Node server's code, you need to make sure that <em>you manually transpile it</em> using <strong>babel-register</strong> or similar. For example, if you try to import your config directly into your server, your Node process will likely crash because the Payload config supports React components, TypeScript, and new ES6+ features.
</Banner>
However, you can share code, like for example your config's `serverURL` property by "hoisting" your shared properties above your config and writing any "shared" code in a module that is compatible with your Node environment.
For example, to share your `serverURL`, you could create a file like the following:
`serverURL.js`:
```js
const serverURL = 'http://localhost:3000';
module.exports = serverURL;
```
Then, you could import this file into both your Payload config and your server, in an effort to avoid importing your full Payload config directly into your server.
### TypeScript
You can import config types as follows:
```ts
import { Config } from 'payload/config';
import { Config } from 'payload/config'
// This is the type used for an incoming Payload config.
// Only the bare minimum properties are marked as required.
```
```ts
import { SanitizedConfig } from 'payload/config';
import { SanitizedConfig } from 'payload/config'
// This is the type used after an incoming Payload config is fully sanitized.
// Generally, this is only used internally by Payload.

View File

@@ -0,0 +1,107 @@
---
title: Migrations
label: Migrations
order: 20
keywords: database, migrations, ddl, sql, mongodb, postgres, documentation, Content Management System, cms, headless, typescript, node, react, express
desc: Payload features first-party database migrations all done in TypeScript.
---
Payload exposes a full suite of migration controls available for your use. Migration commands are accessible via the `npm run payload` command in your project directory.
Ensure you have an npm script called "payload" in your `package.json` file.
```json
{
"scripts": {
"payload": "cross-env PAYLOAD_CONFIG_PATH=src/payload.config.ts payload"
}
}
```
<Banner>
Note that you need to run Payload migrations through the package manager that you are using, because Payload should not be globally installed on your system.
</Banner>
### Migration file contents
Payload stores all created migrations in a folder that you can specify. By default, migrations are stored in `./src/migrations`.
A migration file has two exports - an `up` function, which is called when a migration is executed, and a `down` function that will be called if for some reason the migration fails to complete successfully. The `up` function should contain all changes that you attempt to make within the migration, and the `down` should ideally revert any changes you make.
For an added level of safety, migrations should leverage Payload [transactions](/docs/database/transactions).
Here is an example migration file:
```ts
import { MigrateUpArgs, MigrateDownArgs } from '@payloadcms/your-db-adapter'
export async function up({ payload }: MigrateUpArgs): Promise<void> {
// Perform changes to your database here.
// You have access to `payload` as an argument, and
// everything is done in TypeScript.
};
export async function down({ payload }: MigrateDownArgs): Promise<void> {
// Do whatever you need to revert changes if the `up` function fails
};
```
All database adapters should implement similar migration patterns, but there will be small differences based on the adapter and its specific needs. Below is a list of all migration commands that should be supported by your database adapter.
### Migrate
The `migrate` command will run any migrations that have not yet been run.
```text
npm run payload migrate
```
### Create
Create a new migration file in the migrations directory. You can optionally name the migration that will be created. By default, migrations will be named using a timestamp.
```text
npm run payload migrate:create optional-name-here
```
### Status
The `migrate:status` command will check the status of migrations and output a table of which migrations have been run, and which migrations have not yet run.
`payload migrate:status`
```text
npm run payload migrate:status
```
### Down
Roll back the last batch of migrations.
```text
npm run payload migrate:down
```
### Refresh
Roll back all migrations that have been run, and run them again.
```text
npm run payload migrate:refresh
```
### Reset
Roll back all migrations.
```text
npm run payload migrate:reset
```
### Fresh
Drops all entities from the database and re-runs all migrations from scratch.
```text
npm run payload migrate:fresh
```

46
docs/database/mongodb.mdx Normal file
View File

@@ -0,0 +1,46 @@
---
title: MongoDB
label: MongoDB
order: 40
desc: Payload has supported MongoDB natively since we started. The flexible nature of MongoDB lends itself well to Payload's powerful fields.
keywords: MongoDB, documentation, typescript, Content Management System, cms, headless, javascript, node, react, express
---
To use Payload with MongoDB, install the package `@payloadcms/db-mongodb`. It will come with everything you need to store your Payload data in MongoDB.
Then from there, pass it to your Payload config as follows:
```ts
import { mongooseAdapter } from '@payloadcms/db-mongodb'
export default buildConfig({
// Your config goes here
collections: [
// Collections go here
],
// Configure the Mongoose adapter here
db: mongooseAdapter({
// Mongoose-specific arguments go here.
// URL is required.
url: process.env.DATABASE_URI,
}),
})
```
### Options
| Option | Description |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `autoPluralization` | Tell Mongoose to auto-pluralize any collection names if it encounters any singular words used as collection `slug`s. |
| `connectOptions` | Customize MongoDB connection options. Payload will connect to your MongoDB database using default options which you can override and extend to include all the [options](https://mongoosejs.com/docs/connections.html#options) available to mongoose. |
| `migrationDir` | Customize the directory that migrations are stored. |
### Access to Mongoose models
After Payload is initialized, this adapter exposes all of your Mongoose models and they are available for you to work with directly.
You can access Mongoose models as follows:
- Collection models - `payload.db.collections[myCollectionSlug]`
- Globals model - `payload.db.globals`
- Versions model (both collections and globals) - `payload.db.versions[myEntitySlug]`

View File

@@ -0,0 +1,73 @@
---
title: Database
label: Overview
order: 10
keywords: database, mongodb, postgres, documentation, Content Management System, cms, headless, typescript, node, react, express
desc: With Payload, you bring your own database and own your data. You have full control.
---
Payload interacts with your database via the database adapter that you choose. Right now, Payload officially supports two database adapters:
1. [MongoDB](/docs/database/mongodb) w/ [Mongoose](https://mongoosejs.com/)
1. [Postgres](/docs/database/postgres) w/ [Drizzle](https://drizzle.team/)
We will be adding support for SQLite and MySQL in the near future using Drizzle ORM.
To use a specific database adapter, you need to install it and configure it according to its own specifications. Visit the documentation for your applicable database adapter to learn more.
## Selecting a database
There are several factors to consider when choosing which database technology and hosting option is right for your project and workload. Payload can theoretically support any database, but it's up to you to decide which database to use.
#### When to use MongoDB
If your project has a lot of dynamic fields, and you are comfortable with allowing Payload to enforce data integrity across your documents, MongoDB is a great choice. With it, your Payload documents are stored as _one_ document in your database—no matter if you have localization enabled, how many block or array fields you have, etc. This means that the shape of your data in your database will very closely reflect your field schema, and there is minimal complexity involved in storing or retrieving your data.
You should prefer MongoDB if:
- You prefer simplicity within your database
- You don't want to deal with keeping production / staging databases in sync via [DDL changes](https://en.wikipedia.org/wiki/Data_definition_language)
- Most (or everything) in your project is localized
- You leverage a lot of array fields, block fields, or `hasMany` select fields and similar
#### When to use a relational DB
Many projects might call for more rigid database architecture where the shape of your data is strongly enforced at the database level. For example, if you know the shape of your data and it's relatively "flat", and you don't anticipate it to change often, your workload might suit relational databases like Postgres very well.
You should prefer a relational DB like Postgres if:
- You are comfortable with migration workflows
- You require enforced data consistency at the database level
- You have a lot of relationships between collections and require relationships to be enforced
#### Differences in Payload features
It's important to note that almost everything Payload does is available in all of our officially supported database adapters, including localization, arrays, blocks, etc.
The only thing that is not supported in Postgres yet is the [Point field](/docs/fields/point), but that should be added soon.
It's up to you to choose which database you would like to use.
## Configuration
To configure the database for your Payload application, an adapter can be assigned to `config.db`. This property is required within your Payload config.
Here's an example:
```ts
import { postgresAdapter } from '@payloadcms/db-postgres'
export default buildConfig({
// Your config goes here
collections: [
// Collections go here
],
// Here is where you pass your database adapter
// and the adapter will require options specific to itself
db: postgresAdapter({
pool: {
connectionString: process.env.DATABASE_URI,
}
}),
})
```

Some files were not shown because too many files have changed in this diff Show More