payload-nested-docs-page-tree 1.2.4 → 1.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +356 -222
- package/dist/components/PageTreeContext.d.ts +13 -1
- package/dist/components/PageTreeContext.js +11 -1
- package/dist/components/PageTreeContext.js.map +1 -1
- package/dist/components/PageTreeListView.client.d.ts +4 -5
- package/dist/components/PageTreeListView.client.js +668 -128
- package/dist/components/PageTreeListView.client.js.map +1 -1
- package/dist/components/PageTreeListView.module.css +399 -376
- package/dist/components/PageTreeListView.server.js +18 -28
- package/dist/components/PageTreeListView.server.js.map +1 -1
- package/dist/components/PageTreeTitleCell.js +80 -18
- package/dist/components/PageTreeTitleCell.js.map +1 -1
- package/dist/endpoints/createMovePageEndpoint.d.ts +3 -0
- package/dist/endpoints/createMovePageEndpoint.js +186 -125
- package/dist/endpoints/createMovePageEndpoint.js.map +1 -1
- package/dist/endpoints/createReorderPageEndpoint.d.ts +8 -0
- package/dist/endpoints/createReorderPageEndpoint.js +706 -0
- package/dist/endpoints/createReorderPageEndpoint.js.map +1 -0
- package/dist/endpoints/shared.d.ts +40 -0
- package/dist/endpoints/shared.js +93 -0
- package/dist/endpoints/shared.js.map +1 -0
- package/dist/index.js +110 -27
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +47 -2
- package/dist/types.js +22 -3
- package/dist/types.js.map +1 -1
- package/dist/utilities/diagnostics.d.ts +42 -0
- package/dist/utilities/diagnostics.js +83 -0
- package/dist/utilities/diagnostics.js.map +1 -0
- package/dist/utilities/dropTargets.d.ts +2 -2
- package/dist/utilities/dropTargets.js +9 -7
- package/dist/utilities/dropTargets.js.map +1 -1
- package/dist/utilities/moveValidation.js.map +1 -1
- package/dist/utilities/pageTree.js +4 -6
- package/dist/utilities/pageTree.js.map +1 -1
- package/dist/utilities/pageTreeCollision.d.ts +6 -0
- package/dist/utilities/pageTreeCollision.js +39 -4
- package/dist/utilities/pageTreeCollision.js.map +1 -1
- package/dist/utilities/pageTreeConfig.js.map +1 -1
- package/dist/utilities/status.d.ts +1 -1
- package/dist/utilities/status.js +7 -3
- package/dist/utilities/status.js.map +1 -1
- package/package.json +54 -32
package/dist/utilities/status.js
CHANGED
|
@@ -50,11 +50,15 @@ export function getPageTreeBadgeLabel(args) {
|
|
|
50
50
|
return t(getPageTreeDisplayStatusLabelKey(status));
|
|
51
51
|
}
|
|
52
52
|
export function withPageTreeDisplayStatuses(args) {
|
|
53
|
-
const {
|
|
53
|
+
const { currentDocs, draftDocs } = args;
|
|
54
|
+
const currentStatusByID = new Map(currentDocs.map((doc)=>[
|
|
55
|
+
String(doc.id ?? ''),
|
|
56
|
+
doc._status ?? null
|
|
57
|
+
]));
|
|
54
58
|
return draftDocs.map((doc)=>{
|
|
55
59
|
const docID = String(doc.id ?? '');
|
|
56
|
-
const
|
|
57
|
-
const displayStatus = doc._status === 'draft' &&
|
|
60
|
+
const currentStatus = currentStatusByID.get(docID);
|
|
61
|
+
const displayStatus = doc._status === 'draft' && currentStatus === 'published' ? 'changed' : doc._status === 'draft' || doc._status === 'published' ? doc._status : undefined;
|
|
58
62
|
if (doc._displayStatus === displayStatus) {
|
|
59
63
|
return doc;
|
|
60
64
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utilities/status.ts"],"sourcesContent":["import type {\n PageTreeSourceDoc,\n NestedDocsPageTreePluginBadgeMap,\n NestedDocsPageTreePluginBadgeStatus,\n} from '../types.js'\n\nexport type PageTreeDisplayStatus = 'changed' | 'draft' | 'published' | 'unknown'\n\nfunction isBadgeStatus(status: PageTreeDisplayStatus): status is NestedDocsPageTreePluginBadgeStatus {\n return status === 'changed' || status === 'draft' || status === 'published'\n}\n\nexport function getPageTreeDisplayStatus(\n doc: Pick<PageTreeSourceDoc, '_displayStatus' | '_status'>,\n): PageTreeDisplayStatus {\n if (doc._displayStatus === 'changed') {\n return 'changed'\n }\n\n if (doc._displayStatus === 'draft') {\n return 'draft'\n }\n\n if (doc._displayStatus === 'published') {\n return 'published'\n }\n\n if (doc._status === 'draft') {\n return 'draft'\n }\n\n if (doc._status === 'published') {\n return 'published'\n }\n\n return 'unknown'\n}\n\nexport function getPageTreeDisplayStatusLabelKey(status: PageTreeDisplayStatus):\n | 'version:draft'\n | 'version:changed'\n | 'version:published'\n | 'general:noValue' {\n if (status === 'changed') {\n return 'version:changed'\n }\n\n if (status === 'draft') {\n return 'version:draft'\n }\n\n if (status === 'published') {\n return 'version:published'\n }\n\n return 'general:noValue'\n}\n\nexport function getPageTreeBadgeColor(args: {\n badgeColors: NestedDocsPageTreePluginBadgeMap\n status: PageTreeDisplayStatus\n}): string | undefined {\n const { badgeColors, status } = args\n\n if (!isBadgeStatus(status)) {\n return undefined\n }\n\n const badgeColor = badgeColors[status]\n\n return typeof badgeColor === 'string' && badgeColor.trim().length > 0\n ? badgeColor.trim()\n : undefined\n}\n\nexport function getPageTreeBadgeLabel(args: {\n badgeLabels: NestedDocsPageTreePluginBadgeMap\n status: PageTreeDisplayStatus\n t: (key: ReturnType<typeof getPageTreeDisplayStatusLabelKey>) => string\n}): string {\n const { badgeLabels, status, t } = args\n\n if (isBadgeStatus(status)) {\n const badgeLabel = badgeLabels[status]\n\n if (typeof badgeLabel === 'string' && badgeLabel.trim().length > 0) {\n return badgeLabel.trim()\n }\n }\n\n return t(getPageTreeDisplayStatusLabelKey(status))\n}\n\nexport function withPageTreeDisplayStatuses(args: {\n
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/status.ts"],"sourcesContent":["import type {\n PageTreeSourceDoc,\n NestedDocsPageTreePluginBadgeMap,\n NestedDocsPageTreePluginBadgeStatus,\n} from '../types.js'\n\nexport type PageTreeDisplayStatus = 'changed' | 'draft' | 'published' | 'unknown'\n\nfunction isBadgeStatus(status: PageTreeDisplayStatus): status is NestedDocsPageTreePluginBadgeStatus {\n return status === 'changed' || status === 'draft' || status === 'published'\n}\n\nexport function getPageTreeDisplayStatus(\n doc: Pick<PageTreeSourceDoc, '_displayStatus' | '_status'>,\n): PageTreeDisplayStatus {\n if (doc._displayStatus === 'changed') {\n return 'changed'\n }\n\n if (doc._displayStatus === 'draft') {\n return 'draft'\n }\n\n if (doc._displayStatus === 'published') {\n return 'published'\n }\n\n if (doc._status === 'draft') {\n return 'draft'\n }\n\n if (doc._status === 'published') {\n return 'published'\n }\n\n return 'unknown'\n}\n\nexport function getPageTreeDisplayStatusLabelKey(status: PageTreeDisplayStatus):\n | 'version:draft'\n | 'version:changed'\n | 'version:published'\n | 'general:noValue' {\n if (status === 'changed') {\n return 'version:changed'\n }\n\n if (status === 'draft') {\n return 'version:draft'\n }\n\n if (status === 'published') {\n return 'version:published'\n }\n\n return 'general:noValue'\n}\n\nexport function getPageTreeBadgeColor(args: {\n badgeColors: NestedDocsPageTreePluginBadgeMap\n status: PageTreeDisplayStatus\n}): string | undefined {\n const { badgeColors, status } = args\n\n if (!isBadgeStatus(status)) {\n return undefined\n }\n\n const badgeColor = badgeColors[status]\n\n return typeof badgeColor === 'string' && badgeColor.trim().length > 0\n ? badgeColor.trim()\n : undefined\n}\n\nexport function getPageTreeBadgeLabel(args: {\n badgeLabels: NestedDocsPageTreePluginBadgeMap\n status: PageTreeDisplayStatus\n t: (key: ReturnType<typeof getPageTreeDisplayStatusLabelKey>) => string\n}): string {\n const { badgeLabels, status, t } = args\n\n if (isBadgeStatus(status)) {\n const badgeLabel = badgeLabels[status]\n\n if (typeof badgeLabel === 'string' && badgeLabel.trim().length > 0) {\n return badgeLabel.trim()\n }\n }\n\n return t(getPageTreeDisplayStatusLabelKey(status))\n}\n\nexport function withPageTreeDisplayStatuses(args: {\n currentDocs: Pick<PageTreeSourceDoc, '_status' | 'id'>[]\n draftDocs: PageTreeSourceDoc[]\n}): PageTreeSourceDoc[] {\n const { currentDocs, draftDocs } = args\n const currentStatusByID = new Map(\n currentDocs.map((doc) => [String(doc.id ?? ''), doc._status ?? null]),\n )\n\n return draftDocs.map((doc) => {\n const docID = String(doc.id ?? '')\n const currentStatus = currentStatusByID.get(docID)\n const displayStatus =\n doc._status === 'draft' && currentStatus === 'published'\n ? 'changed'\n : doc._status === 'draft' || doc._status === 'published'\n ? doc._status\n : undefined\n\n if (doc._displayStatus === displayStatus) {\n return doc\n }\n\n return {\n ...doc,\n _displayStatus: displayStatus,\n }\n })\n}\n"],"names":["isBadgeStatus","status","getPageTreeDisplayStatus","doc","_displayStatus","_status","getPageTreeDisplayStatusLabelKey","getPageTreeBadgeColor","args","badgeColors","undefined","badgeColor","trim","length","getPageTreeBadgeLabel","badgeLabels","t","badgeLabel","withPageTreeDisplayStatuses","currentDocs","draftDocs","currentStatusByID","Map","map","String","id","docID","currentStatus","get","displayStatus"],"mappings":"AAQA,SAASA,cAAcC,MAA6B;IAClD,OAAOA,WAAW,aAAaA,WAAW,WAAWA,WAAW;AAClE;AAEA,OAAO,SAASC,yBACdC,GAA0D;IAE1D,IAAIA,IAAIC,cAAc,KAAK,WAAW;QACpC,OAAO;IACT;IAEA,IAAID,IAAIC,cAAc,KAAK,SAAS;QAClC,OAAO;IACT;IAEA,IAAID,IAAIC,cAAc,KAAK,aAAa;QACtC,OAAO;IACT;IAEA,IAAID,IAAIE,OAAO,KAAK,SAAS;QAC3B,OAAO;IACT;IAEA,IAAIF,IAAIE,OAAO,KAAK,aAAa;QAC/B,OAAO;IACT;IAEA,OAAO;AACT;AAEA,OAAO,SAASC,iCAAiCL,MAA6B;IAK5E,IAAIA,WAAW,WAAW;QACxB,OAAO;IACT;IAEA,IAAIA,WAAW,SAAS;QACtB,OAAO;IACT;IAEA,IAAIA,WAAW,aAAa;QAC1B,OAAO;IACT;IAEA,OAAO;AACT;AAEA,OAAO,SAASM,sBAAsBC,IAGrC;IACC,MAAM,EAAEC,WAAW,EAAER,MAAM,EAAE,GAAGO;IAEhC,IAAI,CAACR,cAAcC,SAAS;QAC1B,OAAOS;IACT;IAEA,MAAMC,aAAaF,WAAW,CAACR,OAAO;IAEtC,OAAO,OAAOU,eAAe,YAAYA,WAAWC,IAAI,GAAGC,MAAM,GAAG,IAChEF,WAAWC,IAAI,KACfF;AACN;AAEA,OAAO,SAASI,sBAAsBN,IAIrC;IACC,MAAM,EAAEO,WAAW,EAAEd,MAAM,EAAEe,CAAC,EAAE,GAAGR;IAEnC,IAAIR,cAAcC,SAAS;QACzB,MAAMgB,aAAaF,WAAW,CAACd,OAAO;QAEtC,IAAI,OAAOgB,eAAe,YAAYA,WAAWL,IAAI,GAAGC,MAAM,GAAG,GAAG;YAClE,OAAOI,WAAWL,IAAI;QACxB;IACF;IAEA,OAAOI,EAAEV,iCAAiCL;AAC5C;AAEA,OAAO,SAASiB,4BAA4BV,IAG3C;IACC,MAAM,EAAEW,WAAW,EAAEC,SAAS,EAAE,GAAGZ;IACnC,MAAMa,oBAAoB,IAAIC,IAC5BH,YAAYI,GAAG,CAAC,CAACpB,MAAQ;YAACqB,OAAOrB,IAAIsB,EAAE,IAAI;YAAKtB,IAAIE,OAAO,IAAI;SAAK;IAGtE,OAAOe,UAAUG,GAAG,CAAC,CAACpB;QACpB,MAAMuB,QAAQF,OAAOrB,IAAIsB,EAAE,IAAI;QAC/B,MAAME,gBAAgBN,kBAAkBO,GAAG,CAACF;QAC5C,MAAMG,gBACJ1B,IAAIE,OAAO,KAAK,WAAWsB,kBAAkB,cACzC,YACAxB,IAAIE,OAAO,KAAK,WAAWF,IAAIE,OAAO,KAAK,cACzCF,IAAIE,OAAO,GACXK;QAER,IAAIP,IAAIC,cAAc,KAAKyB,eAAe;YACxC,OAAO1B;QACT;QAEA,OAAO;YACL,GAAGA,GAAG;YACNC,gBAAgByB;QAClB;IACF;AACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "payload-nested-docs-page-tree",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.1",
|
|
4
4
|
"description": "Page tree plugin for Payload nested docs collections",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "WLF Studios",
|
|
@@ -45,14 +45,35 @@
|
|
|
45
45
|
"README.md",
|
|
46
46
|
"LICENSE"
|
|
47
47
|
],
|
|
48
|
+
"scripts": {
|
|
49
|
+
"build": "pnpm clean && pnpm build:types && pnpm build:swc && pnpm copyfiles && pnpm build:strip-tests",
|
|
50
|
+
"build:strip-tests": "rimraf \"dist/**/*.spec.*\"",
|
|
51
|
+
"build:swc": "swc ./src -d ./dist --config-file .swcrc --strip-leading-paths",
|
|
52
|
+
"build:types": "tsc --project tsconfig.build.json",
|
|
53
|
+
"clean": "rimraf dist \"*.tsbuildinfo\"",
|
|
54
|
+
"copyfiles": "copyfiles -u 1 \"src/**/*.{html,css,scss,ttf,woff,woff2,eot,svg,jpg,png,json}\" dist/",
|
|
55
|
+
"dev": "next dev dev --webpack",
|
|
56
|
+
"dev:generate-importmap": "pnpm dev:payload generate:importmap",
|
|
57
|
+
"dev:generate-types": "pnpm dev:payload generate:types",
|
|
58
|
+
"dev:payload": "cross-env PAYLOAD_CONFIG_PATH=./dev/payload.config.ts payload",
|
|
59
|
+
"generate:importmap": "pnpm dev:generate-importmap",
|
|
60
|
+
"generate:types": "pnpm dev:generate-types",
|
|
61
|
+
"lint": "eslint",
|
|
62
|
+
"lint:fix": "eslint ./src --fix",
|
|
63
|
+
"prepare": "pnpm clean && pnpm build",
|
|
64
|
+
"prepublishOnly": "pnpm clean && pnpm build",
|
|
65
|
+
"test": "pnpm test:int && pnpm test:e2e",
|
|
66
|
+
"test:e2e": "playwright test",
|
|
67
|
+
"test:int": "vitest"
|
|
68
|
+
},
|
|
48
69
|
"devDependencies": {
|
|
49
70
|
"@eslint/eslintrc": "^3.2.0",
|
|
50
|
-
"@payloadcms/db-mongodb": "3.
|
|
71
|
+
"@payloadcms/db-mongodb": "3.81.0",
|
|
51
72
|
"@payloadcms/eslint-config": "3.9.0",
|
|
52
|
-
"@payloadcms/next": "3.
|
|
53
|
-
"@payloadcms/plugin-nested-docs": "3.
|
|
54
|
-
"@payloadcms/richtext-lexical": "3.
|
|
55
|
-
"@payloadcms/ui": "3.
|
|
73
|
+
"@payloadcms/next": "3.81.0",
|
|
74
|
+
"@payloadcms/plugin-nested-docs": "3.81.0",
|
|
75
|
+
"@payloadcms/richtext-lexical": "3.81.0",
|
|
76
|
+
"@payloadcms/ui": "3.81.0",
|
|
56
77
|
"@playwright/test": "1.58.2",
|
|
57
78
|
"@swc-node/register": "1.10.9",
|
|
58
79
|
"@swc/cli": "0.6.0",
|
|
@@ -67,7 +88,8 @@
|
|
|
67
88
|
"mongodb-memory-server": "10.1.4",
|
|
68
89
|
"next": "16.2.3",
|
|
69
90
|
"open": "^10.1.0",
|
|
70
|
-
"payload": "3.
|
|
91
|
+
"payload": "3.81.0",
|
|
92
|
+
"payload-cloudflare-build-status": "^1.0.0",
|
|
71
93
|
"prettier": "^3.4.2",
|
|
72
94
|
"qs-esm": "8.0.1",
|
|
73
95
|
"react": "19.2.4",
|
|
@@ -80,36 +102,36 @@
|
|
|
80
102
|
"vitest": "4.0.18"
|
|
81
103
|
},
|
|
82
104
|
"peerDependencies": {
|
|
83
|
-
"@payloadcms/plugin-nested-docs": "^3.
|
|
84
|
-
"payload": "^3.
|
|
105
|
+
"@payloadcms/plugin-nested-docs": "^3.81.0 || ^3.82.0",
|
|
106
|
+
"payload": "^3.81.0 || ^3.82.0"
|
|
85
107
|
},
|
|
86
108
|
"engines": {
|
|
87
|
-
"node": "^18.20.2 || >=20.9.0"
|
|
88
|
-
"pnpm": "^9 || ^10"
|
|
109
|
+
"node": "^18.20.2 || >=20.9.0"
|
|
89
110
|
},
|
|
90
111
|
"publishConfig": {
|
|
112
|
+
"main": "./dist/index.js",
|
|
113
|
+
"types": "./dist/index.d.ts",
|
|
114
|
+
"exports": {
|
|
115
|
+
".": {
|
|
116
|
+
"import": "./dist/index.js",
|
|
117
|
+
"types": "./dist/index.d.ts",
|
|
118
|
+
"default": "./dist/index.js"
|
|
119
|
+
},
|
|
120
|
+
"./client": {
|
|
121
|
+
"import": "./dist/exports/client.js",
|
|
122
|
+
"types": "./dist/exports/client.d.ts",
|
|
123
|
+
"default": "./dist/exports/client.js"
|
|
124
|
+
},
|
|
125
|
+
"./rsc": {
|
|
126
|
+
"import": "./dist/exports/rsc.js",
|
|
127
|
+
"types": "./dist/exports/rsc.d.ts",
|
|
128
|
+
"default": "./dist/exports/rsc.js"
|
|
129
|
+
}
|
|
130
|
+
},
|
|
91
131
|
"registry": "https://registry.npmjs.org/"
|
|
92
132
|
},
|
|
93
133
|
"dependencies": {
|
|
94
|
-
"@dnd-kit/core": "^6.3.1"
|
|
95
|
-
|
|
96
|
-
"scripts": {
|
|
97
|
-
"build": "pnpm clean && pnpm build:types && pnpm build:swc && pnpm copyfiles && pnpm build:strip-tests",
|
|
98
|
-
"build:strip-tests": "rimraf \"dist/**/*.spec.*\"",
|
|
99
|
-
"build:swc": "swc ./src -d ./dist --config-file .swcrc --strip-leading-paths",
|
|
100
|
-
"build:types": "tsc --project tsconfig.build.json",
|
|
101
|
-
"clean": "rimraf dist \"*.tsbuildinfo\"",
|
|
102
|
-
"copyfiles": "copyfiles -u 1 \"src/**/*.{html,css,scss,ttf,woff,woff2,eot,svg,jpg,png,json}\" dist/",
|
|
103
|
-
"dev": "next dev dev --webpack",
|
|
104
|
-
"dev:generate-importmap": "pnpm dev:payload generate:importmap",
|
|
105
|
-
"dev:generate-types": "pnpm dev:payload generate:types",
|
|
106
|
-
"dev:payload": "cross-env PAYLOAD_CONFIG_PATH=./dev/payload.config.ts payload",
|
|
107
|
-
"generate:importmap": "pnpm dev:generate-importmap",
|
|
108
|
-
"generate:types": "pnpm dev:generate-types",
|
|
109
|
-
"lint": "eslint",
|
|
110
|
-
"lint:fix": "eslint ./src --fix",
|
|
111
|
-
"test": "pnpm test:int && pnpm test:e2e",
|
|
112
|
-
"test:e2e": "playwright test",
|
|
113
|
-
"test:int": "vitest"
|
|
134
|
+
"@dnd-kit/core": "^6.3.1",
|
|
135
|
+
"@dnd-kit/sortable": "10.0.0"
|
|
114
136
|
}
|
|
115
|
-
}
|
|
137
|
+
}
|