@webbio/strapi-plugin-page-builder 0.2.2 → 0.2.4
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 +98 -98
- package/admin/src/api/collection-type.ts +110 -110
- package/admin/src/api/has-page-relation.ts +34 -34
- package/admin/src/api/page-type.ts +31 -31
- package/admin/src/api/template.ts +27 -27
- package/admin/src/components/Combobox/index.tsx +77 -77
- package/admin/src/components/Combobox/react-select-custom-styles.tsx +120 -111
- package/admin/src/components/Combobox/styles.ts +22 -22
- package/admin/src/components/ConfirmModal/index.tsx +90 -90
- package/admin/src/components/EditView/CollectionTypeSearch/index.tsx +124 -124
- package/admin/src/components/EditView/CollectionTypeSettings/CreatePageButton/index.tsx +104 -101
- package/admin/src/components/EditView/CollectionTypeSettings/CreatePageButton/styles.ts +19 -19
- package/admin/src/components/EditView/CollectionTypeSettings/index.tsx +74 -74
- package/admin/src/components/EditView/Details/index.tsx +47 -47
- package/admin/src/components/EditView/Details/styles.ts +51 -51
- package/admin/src/components/EditView/PageSettings/index.tsx +104 -104
- package/admin/src/components/EditView/Template/TemplateConfirmModal/index.tsx +36 -36
- package/admin/src/components/EditView/Template/TemplateSelect/index.tsx +69 -69
- package/admin/src/components/EditView/Template/TemplateSelect/use-template-modules.ts +38 -38
- package/admin/src/components/EditView/index.tsx +29 -29
- package/admin/src/components/EditView/page-type-select.tsx +32 -32
- package/admin/src/components/EditView/wrapper.tsx +35 -35
- package/admin/src/components/Initializer/index.tsx +24 -24
- package/admin/src/components/PageTypeFilter/index.tsx +17 -17
- package/admin/src/components/PageTypeFilter/page-type-filter.tsx +130 -130
- package/admin/src/components/PluginIcon/index.tsx +12 -12
- package/admin/src/constants.ts +3 -3
- package/admin/src/index.tsx +59 -59
- package/admin/src/middlewares/index.tsx +37 -37
- package/admin/src/pluginId.ts +5 -5
- package/admin/src/translations/en.json +6 -6
- package/admin/src/translations/nl.json +6 -6
- package/admin/src/utils/getRequestUrl.ts +11 -11
- package/admin/src/utils/getTrad.ts +5 -5
- package/admin/src/utils/hooks/useDebounce.ts +17 -17
- package/admin/src/utils/hooks/useGetLocaleFromUrl.ts +9 -9
- package/admin/src/utils/hooks/usePrevious.ts +12 -12
- package/admin/src/utils/sanitizeModules.ts +43 -10
- package/custom.d.ts +5 -5
- package/dist/package.json +9 -9
- package/dist/server/graphql/page-by-slug.js +9 -9
- package/dist/server/graphql/pages-by-uid.js +14 -14
- package/dist/server/services/builder.js +7 -4
- package/dist/server/services/template.js +1 -2
- package/dist/server/utils/graphql.js +18 -18
- package/dist/server/utils/strapi.js +1 -4
- package/dist/tsconfig.server.tsbuildinfo +1 -1
- package/package.json +71 -71
- package/server/bootstrap/collection-type-lifecycles.ts +47 -47
- package/server/bootstrap/permissions.ts +42 -42
- package/server/bootstrap.ts +198 -198
- package/server/config/index.ts +4 -4
- package/server/content-types/index.ts +1 -1
- package/server/controllers/collection-types.ts +27 -27
- package/server/controllers/index.ts +11 -11
- package/server/controllers/page-type.ts +13 -13
- package/server/controllers/page.ts +9 -9
- package/server/controllers/template.ts +16 -16
- package/server/destroy.ts +5 -5
- package/server/graphql/index.ts +9 -9
- package/server/graphql/page-by-slug.ts +98 -98
- package/server/graphql/page-type.ts +67 -67
- package/server/graphql/pages-by-uid.ts +127 -127
- package/server/index.ts +23 -23
- package/server/middlewares/index.ts +1 -1
- package/server/policies/index.ts +1 -1
- package/server/register.ts +15 -15
- package/server/routes/index.ts +58 -58
- package/server/schema/page-end.json +91 -91
- package/server/schema/page-start.json +87 -87
- package/server/schema/page-type-end.json +43 -43
- package/server/schema/page-type-start.json +38 -38
- package/server/schema/template-start.json +35 -35
- package/server/services/builder.ts +137 -134
- package/server/services/collection-types.ts +88 -88
- package/server/services/index.ts +13 -13
- package/server/services/page-type.ts +26 -26
- package/server/services/page.ts +24 -24
- package/server/services/template.ts +13 -14
- package/server/utils/filter-underscore-arguments.ts +12 -12
- package/server/utils/graphql.ts +113 -113
- package/server/utils/paginationValidation.ts +39 -39
- package/server/utils/reload-strapi-on-load.ts +13 -13
- package/server/utils/strapi.ts +45 -49
- package/shared/utils/constants.ts +4 -4
- package/shared/utils/sleep.ts +1 -1
- package/strapi-admin.js +3 -3
- package/strapi-server.js +3 -3
- package/tsconfig.json +20 -20
- package/tsconfig.server.json +25 -25
- package/dist/server/controllers/platform.js +0 -20
- package/dist/server/schema/platform-start.json +0 -31
- package/dist/server/services/platform.js +0 -36
package/package.json
CHANGED
|
@@ -1,71 +1,71 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@webbio/strapi-plugin-page-builder",
|
|
3
|
-
"version": "0.2.
|
|
4
|
-
"description": "This is the description of the plugin.",
|
|
5
|
-
"scripts": {
|
|
6
|
-
"develop": "tsc -p tsconfig.server.json -w",
|
|
7
|
-
"build": "tsc -p tsconfig.server.json",
|
|
8
|
-
"prepublish": "tsc -p tsconfig.server.json",
|
|
9
|
-
"format": "prettier --write .",
|
|
10
|
-
"spu": "yarn upgrade-interactive --latest"
|
|
11
|
-
},
|
|
12
|
-
"strapi": {
|
|
13
|
-
"name": "page-builder",
|
|
14
|
-
"description": "Description of page-builder plugin",
|
|
15
|
-
"displayName": "Page Builder",
|
|
16
|
-
"kind": "plugin"
|
|
17
|
-
},
|
|
18
|
-
"repository": {
|
|
19
|
-
"type": "git",
|
|
20
|
-
"url": "https://github.com/webbio/strapi-plugin-page-builder.git"
|
|
21
|
-
},
|
|
22
|
-
"dependencies": {
|
|
23
|
-
"@strapi/design-system": "^1.
|
|
24
|
-
"@strapi/helper-plugin": "
|
|
25
|
-
"@strapi/icons": "^1.11.0",
|
|
26
|
-
"@strapi/typescript-utils": "
|
|
27
|
-
"@strapi/utils": "
|
|
28
|
-
"react-select": "^5.7.4"
|
|
29
|
-
},
|
|
30
|
-
"devDependencies": {
|
|
31
|
-
"@strapi/typescript-utils": "
|
|
32
|
-
"@types/react": "^18.2.21",
|
|
33
|
-
"@types/react-dom": "^18.2.7",
|
|
34
|
-
"@types/react-router-dom": "^5.3.3",
|
|
35
|
-
"@types/styled-components": "^5.1.26",
|
|
36
|
-
"react": "^18.2.0",
|
|
37
|
-
"react-dom": "^18.2.0",
|
|
38
|
-
"react-router-dom": "^5.3.4",
|
|
39
|
-
"styled-components": "^5.3.6",
|
|
40
|
-
"typescript": "5.1.6"
|
|
41
|
-
},
|
|
42
|
-
"peerDependencies": {
|
|
43
|
-
"@strapi/strapi": "
|
|
44
|
-
"@webbio/strapi-plugin-slug": "^2.0.
|
|
45
|
-
"react": "^17.0.0 || ^18.0.0",
|
|
46
|
-
"react-dom": "^17.0.0 || ^18.0.0",
|
|
47
|
-
"react-router-dom": "^5.3.4",
|
|
48
|
-
"styled-components": "^5.3.6"
|
|
49
|
-
},
|
|
50
|
-
"author": {
|
|
51
|
-
"name": "Webbio B.V.",
|
|
52
|
-
"email": "info@webbio.nl",
|
|
53
|
-
"url": "https://webbio.nl"
|
|
54
|
-
},
|
|
55
|
-
"maintainers": [
|
|
56
|
-
{
|
|
57
|
-
"name": "Webbio B.V.",
|
|
58
|
-
"email": "info@webbio.nl",
|
|
59
|
-
"url": "https://webbio.nl"
|
|
60
|
-
}
|
|
61
|
-
],
|
|
62
|
-
"engines": {
|
|
63
|
-
"node": ">=14.19.1 <=
|
|
64
|
-
"npm": ">=6.0.0"
|
|
65
|
-
},
|
|
66
|
-
"license": "MIT",
|
|
67
|
-
"publishConfig": {
|
|
68
|
-
"access": "public",
|
|
69
|
-
"registry": "https://registry.npmjs.org"
|
|
70
|
-
}
|
|
71
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@webbio/strapi-plugin-page-builder",
|
|
3
|
+
"version": "0.2.4",
|
|
4
|
+
"description": "This is the description of the plugin.",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"develop": "tsc -p tsconfig.server.json -w",
|
|
7
|
+
"build": "tsc -p tsconfig.server.json",
|
|
8
|
+
"prepublish": "tsc -p tsconfig.server.json",
|
|
9
|
+
"format": "prettier --write .",
|
|
10
|
+
"spu": "yarn upgrade-interactive --latest"
|
|
11
|
+
},
|
|
12
|
+
"strapi": {
|
|
13
|
+
"name": "page-builder",
|
|
14
|
+
"description": "Description of page-builder plugin",
|
|
15
|
+
"displayName": "Page Builder",
|
|
16
|
+
"kind": "plugin"
|
|
17
|
+
},
|
|
18
|
+
"repository": {
|
|
19
|
+
"type": "git",
|
|
20
|
+
"url": "https://github.com/webbio/strapi-plugin-page-builder.git"
|
|
21
|
+
},
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"@strapi/design-system": "^1.13.1",
|
|
24
|
+
"@strapi/helper-plugin": "<4.15.0",
|
|
25
|
+
"@strapi/icons": "^1.11.0",
|
|
26
|
+
"@strapi/typescript-utils": "<4.15.0",
|
|
27
|
+
"@strapi/utils": "<4.15.0",
|
|
28
|
+
"react-select": "^5.7.4"
|
|
29
|
+
},
|
|
30
|
+
"devDependencies": {
|
|
31
|
+
"@strapi/typescript-utils": "<4.15.0",
|
|
32
|
+
"@types/react": "^18.2.21",
|
|
33
|
+
"@types/react-dom": "^18.2.7",
|
|
34
|
+
"@types/react-router-dom": "^5.3.3",
|
|
35
|
+
"@types/styled-components": "^5.1.26",
|
|
36
|
+
"react": "^18.2.0",
|
|
37
|
+
"react-dom": "^18.2.0",
|
|
38
|
+
"react-router-dom": "^5.3.4",
|
|
39
|
+
"styled-components": "^5.3.6",
|
|
40
|
+
"typescript": "5.1.6"
|
|
41
|
+
},
|
|
42
|
+
"peerDependencies": {
|
|
43
|
+
"@strapi/strapi": "<4.15.0",
|
|
44
|
+
"@webbio/strapi-plugin-slug": "^2.0.5",
|
|
45
|
+
"react": "^17.0.0 || ^18.0.0",
|
|
46
|
+
"react-dom": "^17.0.0 || ^18.0.0",
|
|
47
|
+
"react-router-dom": "^5.3.4",
|
|
48
|
+
"styled-components": "^5.3.6"
|
|
49
|
+
},
|
|
50
|
+
"author": {
|
|
51
|
+
"name": "Webbio B.V.",
|
|
52
|
+
"email": "info@webbio.nl",
|
|
53
|
+
"url": "https://webbio.nl"
|
|
54
|
+
},
|
|
55
|
+
"maintainers": [
|
|
56
|
+
{
|
|
57
|
+
"name": "Webbio B.V.",
|
|
58
|
+
"email": "info@webbio.nl",
|
|
59
|
+
"url": "https://webbio.nl"
|
|
60
|
+
}
|
|
61
|
+
],
|
|
62
|
+
"engines": {
|
|
63
|
+
"node": ">=14.19.1 <=20.x.x",
|
|
64
|
+
"npm": ">=6.0.0"
|
|
65
|
+
},
|
|
66
|
+
"license": "MIT",
|
|
67
|
+
"publishConfig": {
|
|
68
|
+
"access": "public",
|
|
69
|
+
"registry": "https://registry.npmjs.org"
|
|
70
|
+
}
|
|
71
|
+
}
|
|
@@ -1,47 +1,47 @@
|
|
|
1
|
-
import { Common, Strapi } from '@strapi/strapi';
|
|
2
|
-
|
|
3
|
-
import { ICollectionTypeGL } from '../services/collection-types';
|
|
4
|
-
import { PAGE_UID } from '../../shared/utils/constants';
|
|
5
|
-
|
|
6
|
-
export default async ({ strapi }: { strapi: Strapi }) => {
|
|
7
|
-
const collectionTypesWithPageMorph: ICollectionTypeGL[] = strapi
|
|
8
|
-
.service('plugin::page-builder.collection-types')
|
|
9
|
-
.withPageMorph();
|
|
10
|
-
|
|
11
|
-
const models = collectionTypesWithPageMorph.map((ct) => ct.uid);
|
|
12
|
-
|
|
13
|
-
strapi.db?.lifecycles.subscribe({
|
|
14
|
-
models,
|
|
15
|
-
async beforeUpdate(event) {
|
|
16
|
-
try {
|
|
17
|
-
let { data, where } = event?.params;
|
|
18
|
-
|
|
19
|
-
if (data?.lifecycleState?.exit) {
|
|
20
|
-
return;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
let connectedPageId: number = data.page?.[0];
|
|
24
|
-
|
|
25
|
-
if (!connectedPageId) {
|
|
26
|
-
const originalEntity = await strapi.entityService?.findOne(
|
|
27
|
-
event.model.uid as Common.UID.ContentType,
|
|
28
|
-
data.id || where.id,
|
|
29
|
-
{ populate: { page: true } } as Record<string, any>
|
|
30
|
-
);
|
|
31
|
-
|
|
32
|
-
connectedPageId = originalEntity?.page?.[0]?.id;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
if (connectedPageId && data.updatedAt) {
|
|
36
|
-
await strapi.entityService?.update(PAGE_UID, connectedPageId, {
|
|
37
|
-
data: {
|
|
38
|
-
updatedAt: data.updatedAt
|
|
39
|
-
}
|
|
40
|
-
} as any);
|
|
41
|
-
}
|
|
42
|
-
} catch (error) {
|
|
43
|
-
console.log('[PAGEBUILDER PLUGIN] collection type lifecycle error: ', error);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
});
|
|
47
|
-
};
|
|
1
|
+
import { Common, Strapi } from '@strapi/strapi';
|
|
2
|
+
|
|
3
|
+
import { ICollectionTypeGL } from '../services/collection-types';
|
|
4
|
+
import { PAGE_UID } from '../../shared/utils/constants';
|
|
5
|
+
|
|
6
|
+
export default async ({ strapi }: { strapi: Strapi }) => {
|
|
7
|
+
const collectionTypesWithPageMorph: ICollectionTypeGL[] = strapi
|
|
8
|
+
.service('plugin::page-builder.collection-types')
|
|
9
|
+
.withPageMorph();
|
|
10
|
+
|
|
11
|
+
const models = collectionTypesWithPageMorph.map((ct) => ct.uid);
|
|
12
|
+
|
|
13
|
+
strapi.db?.lifecycles.subscribe({
|
|
14
|
+
models,
|
|
15
|
+
async beforeUpdate(event) {
|
|
16
|
+
try {
|
|
17
|
+
let { data, where } = event?.params;
|
|
18
|
+
|
|
19
|
+
if (data?.lifecycleState?.exit) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
let connectedPageId: number = data.page?.[0];
|
|
24
|
+
|
|
25
|
+
if (!connectedPageId) {
|
|
26
|
+
const originalEntity = await strapi.entityService?.findOne(
|
|
27
|
+
event.model.uid as Common.UID.ContentType,
|
|
28
|
+
data.id || where.id,
|
|
29
|
+
{ populate: { page: true } } as Record<string, any>
|
|
30
|
+
);
|
|
31
|
+
|
|
32
|
+
connectedPageId = originalEntity?.page?.[0]?.id;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
if (connectedPageId && data.updatedAt) {
|
|
36
|
+
await strapi.entityService?.update(PAGE_UID, connectedPageId, {
|
|
37
|
+
data: {
|
|
38
|
+
updatedAt: data.updatedAt
|
|
39
|
+
}
|
|
40
|
+
} as any);
|
|
41
|
+
}
|
|
42
|
+
} catch (error) {
|
|
43
|
+
console.log('[PAGEBUILDER PLUGIN] collection type lifecycle error: ', error);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
};
|
|
@@ -1,42 +1,42 @@
|
|
|
1
|
-
import { Strapi } from '@strapi/strapi';
|
|
2
|
-
import { PAGE_TYPE_UID } from '../../shared/utils/constants';
|
|
3
|
-
|
|
4
|
-
export default async ({ strapi }: { strapi: Strapi }) => {
|
|
5
|
-
try {
|
|
6
|
-
const pageTypes = (await strapi.entityService?.findMany(PAGE_TYPE_UID, {
|
|
7
|
-
limit: -1
|
|
8
|
-
})) as Record<string, any>[];
|
|
9
|
-
|
|
10
|
-
const pagePermissions = pageTypes.map((pageType) => {
|
|
11
|
-
const name = `page-type-is-${pageType.uid}`;
|
|
12
|
-
const displayName = pageType.title;
|
|
13
|
-
|
|
14
|
-
return {
|
|
15
|
-
plugin: 'page-builder',
|
|
16
|
-
name,
|
|
17
|
-
displayName,
|
|
18
|
-
category: 'Page type',
|
|
19
|
-
handler: async () => {
|
|
20
|
-
return {
|
|
21
|
-
$or: [
|
|
22
|
-
{
|
|
23
|
-
'pageType.uid': {
|
|
24
|
-
$eq: pageType.uid
|
|
25
|
-
}
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
uid: {
|
|
29
|
-
$eq: pageType.uid
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
]
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
});
|
|
37
|
-
// @ts-ignore shitty types
|
|
38
|
-
await strapi.admin.services.permission.conditionProvider.registerMany(pagePermissions);
|
|
39
|
-
} catch {
|
|
40
|
-
console.log('Cannot set page permissions');
|
|
41
|
-
}
|
|
42
|
-
};
|
|
1
|
+
import { Strapi } from '@strapi/strapi';
|
|
2
|
+
import { PAGE_TYPE_UID } from '../../shared/utils/constants';
|
|
3
|
+
|
|
4
|
+
export default async ({ strapi }: { strapi: Strapi }) => {
|
|
5
|
+
try {
|
|
6
|
+
const pageTypes = (await strapi.entityService?.findMany(PAGE_TYPE_UID, {
|
|
7
|
+
limit: -1
|
|
8
|
+
})) as Record<string, any>[];
|
|
9
|
+
|
|
10
|
+
const pagePermissions = pageTypes.map((pageType) => {
|
|
11
|
+
const name = `page-type-is-${pageType.uid}`;
|
|
12
|
+
const displayName = pageType.title;
|
|
13
|
+
|
|
14
|
+
return {
|
|
15
|
+
plugin: 'page-builder',
|
|
16
|
+
name,
|
|
17
|
+
displayName,
|
|
18
|
+
category: 'Page type',
|
|
19
|
+
handler: async () => {
|
|
20
|
+
return {
|
|
21
|
+
$or: [
|
|
22
|
+
{
|
|
23
|
+
'pageType.uid': {
|
|
24
|
+
$eq: pageType.uid
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
uid: {
|
|
29
|
+
$eq: pageType.uid
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
]
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
});
|
|
37
|
+
// @ts-ignore shitty types
|
|
38
|
+
await strapi.admin.services.permission.conditionProvider.registerMany(pagePermissions);
|
|
39
|
+
} catch {
|
|
40
|
+
console.log('Cannot set page permissions');
|
|
41
|
+
}
|
|
42
|
+
};
|