@gadmin2n/schematics 0.0.65 → 0.0.67

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.
Files changed (72) hide show
  1. package/dist/lib/application/files/gadmin2-game-angle-demo/config/prisma/system.prisma +7 -0
  2. package/dist/lib/application/files/gadmin2-game-angle-demo/server/package.json +3 -3
  3. package/dist/lib/application/files/gadmin2-game-angle-demo/web/package.json +4 -4
  4. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/authProvider.ts +2 -2
  5. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/SqlModal.tsx +419 -0
  6. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/contexts/business/index.tsx +1 -1
  7. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/custom-avatar.tsx +1 -1
  8. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/config/http.ts +28 -0
  9. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/config/routeRegistry.tsx +1 -1
  10. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/http.ts +87 -0
  11. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/index.tsx +6 -1
  12. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/login.ts +22 -77
  13. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/{utilities → helpers}/utils.tsx +1 -1
  14. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/components/action-cell.tsx +1 -1
  15. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/AssignRolesModal.tsx +3 -3
  16. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/PageDetailDrawer.tsx +1 -1
  17. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/PageFormModal.tsx +1 -1
  18. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/hooks/usePageManagement.ts +1 -1
  19. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/index.ts +0 -7
  20. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/list.tsx +110 -8
  21. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/types.ts +1 -0
  22. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/{permission-readme → permissionReadme}/index.tsx +4 -3
  23. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/Components/ResourceDetailDrawer.tsx +1 -1
  24. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/index.ts +0 -7
  25. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/list.tsx +32 -4
  26. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/Components/RoleDetailDrawer.tsx +1 -1
  27. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/Components/modal.tsx +1 -1
  28. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/hooks/useRolePage.ts +1 -1
  29. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/index.ts +1 -8
  30. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/list.tsx +52 -3
  31. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/form-modal.tsx +2 -2
  32. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/show-drawer.tsx +2 -2
  33. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/index.ts +1 -8
  34. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/list.tsx +41 -11
  35. package/dist/lib/application/files/gadmin2-game-angle-demo/web/tsconfig.json +2 -1
  36. package/dist/lib/application/files/gadmin2-game-angle-demo/web/yarn.lock +8321 -0
  37. package/package.json +1 -1
  38. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/utils.ts +0 -76
  39. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/create.tsx +0 -113
  40. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/edit.tsx +0 -122
  41. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/index.tsx +0 -6
  42. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/show.tsx +0 -61
  43. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/pageResource/create.tsx +0 -113
  44. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/pageResource/edit.tsx +0 -122
  45. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/pageResource/index.tsx +0 -6
  46. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/pageResource/list.tsx +0 -243
  47. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/pageResource/show.tsx +0 -61
  48. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/create.tsx +0 -113
  49. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/edit.tsx +0 -122
  50. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/index.tsx +0 -6
  51. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/show.tsx +0 -61
  52. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/create.tsx +0 -113
  53. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/edit.tsx +0 -122
  54. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/index.tsx +0 -6
  55. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/show.tsx +0 -61
  56. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/rolePages/create.tsx +0 -113
  57. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/rolePages/edit.tsx +0 -122
  58. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/rolePages/index.tsx +0 -6
  59. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/rolePages/list.tsx +0 -243
  60. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/rolePages/show.tsx +0 -61
  61. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/roleResource/create.tsx +0 -113
  62. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/roleResource/edit.tsx +0 -122
  63. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/roleResource/index.tsx +0 -6
  64. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/roleResource/list.tsx +0 -243
  65. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/roleResource/show.tsx +0 -61
  66. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/create.tsx +0 -113
  67. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/edit.tsx +0 -122
  68. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/index.tsx +0 -6
  69. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/show.tsx +0 -61
  70. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/utilities/index.ts +0 -2
  71. /package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/{utilities → helpers}/get-name-initials.ts +0 -0
  72. /package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/{utilities → helpers}/get-random-color.ts +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gadmin2n/schematics",
3
- "version": "0.0.65",
3
+ "version": "0.0.67",
4
4
  "description": "Gadmin - modern, fast, powerful node.js web framework (@schematics)",
5
5
  "main": "dist/index.js",
6
6
  "files": [
@@ -1,76 +0,0 @@
1
- import { requestHeaders } from "helpers/login";
2
-
3
- // Re-export Prisma helpers from react-common for backward compatibility
4
- export { convertPrismaDecimal, isPrismaDecimal } from "@gadmin2n/react-common";
5
-
6
- export function getApiUrl() {
7
- return `${window.location.origin.replace("3000", "8000")}/api`;
8
- }
9
-
10
- export function trimString(str = "") {
11
- // 将多种分隔符替换成\n
12
- str = str.replace(/[\s,;]+/g, "\n");
13
- // 去掉开头和结尾的\n
14
- str = str.replace(/^\s+|\s+$/g, "");
15
-
16
- return str;
17
- }
18
-
19
- export async function findMany<T>(
20
- resource: string,
21
- params: Record<string, any>
22
- ) {
23
- const url = `${getApiUrl()}/${resource}/findMany`;
24
- const res = await fetch(url, {
25
- method: "POST",
26
- headers: {
27
- "Content-Type": "application/json",
28
- ...requestHeaders(),
29
- },
30
- // credentials: 'include',
31
- body: JSON.stringify(params),
32
- });
33
- const data = await res.json();
34
- return data.data as T[];
35
- }
36
-
37
- export function getUrlParams(search = window.location.search) {
38
- const hashes = search.slice(search.indexOf("?") + 1).split("&");
39
- return hashes.reduce((acc, hash) => {
40
- const [key, val] = hash.split("=");
41
- if (val) acc[key] = decodeURIComponent(val);
42
- return acc;
43
- }, {} as Record<string, string>);
44
- }
45
-
46
- export interface Option {
47
- value: string | number;
48
- label: string;
49
- children?: Option[];
50
- }
51
- export function transformTaskType(
52
- originalData: Record<string, string>
53
- ): Option[] {
54
- const result = new Map();
55
-
56
- for (const [key, value] of Object.entries(originalData)) {
57
- const parts = key.split("/");
58
- const platform = parts[0];
59
- const attribute = parts[1];
60
-
61
- if (!result.has(platform)) {
62
- result.set(platform, {
63
- value: platform,
64
- label: platform,
65
- children: [],
66
- });
67
- }
68
-
69
- result.get(platform).children.push({
70
- value: attribute,
71
- label: `${attribute}(spider_type:${value})`,
72
- });
73
- }
74
-
75
- return Array.from(result.values());
76
- }
@@ -1,113 +0,0 @@
1
-
2
- import {
3
- FieldDataType,
4
- handleInitialValues,
5
- handleOnFinish,
6
- ModelType,
7
- produceModel,
8
- } from '@gadmin2n/react-common';
9
- import { Create, useFileUploadState, useForm } from "@refinedev/antd";
10
- import { Form } from "antd";
11
- import { IResourceComponentsProps, useApiUrl, useTranslate } from "@refinedev/core";
12
- import React, { useContext, useState } from "react";
13
- import { getFormItem, onFormValuesChange } from "../../helpers";
14
- import { modelsMap, modelsEnum } from "../../generated/models.index";
15
- import {
16
- pageFormConfig as formConfig,
17
- pageFormPrismaSelect as formPrismaSelect,
18
- } from "../../generated/props/page/config";
19
- import {
20
- pageModel,
21
- useRelation,
22
- } from "../../generated/props/page/model";
23
- import { Page } from "../../generated/types/prisma.types";
24
- import { PageForm as transformClass } from "../../generated/props/page/form.validator";
25
- import { BusinessContext } from 'components/contexts/business';
26
-
27
- export const PageCreate: React.FC<IResourceComponentsProps> = () => {
28
- const resourceName = "page";
29
- const t = useTranslate();
30
-
31
-
32
-
33
- const [[fields, model]] = useState(() => {
34
- const model: ModelType = produceModel(
35
- pageModel,
36
- {
37
- // all formItem attrs surport, https://ant.design/components/form#formitem
38
- // description : { component : <MDEditor data-color-mode="light" /> },
39
- // status : { normalize : (value: any) => value ? "1" : "0" },
40
- // cron: {validator: { validator: runCronValidator },},
41
- },
42
- transformClass
43
- );
44
-
45
- const fields: FieldDataType[] = formConfig.fields
46
- .map((fieldName: string) => model[fieldName])
47
- .filter((field: FieldDataType) => field);
48
-
49
- return [fields, model] as const;
50
- });
51
-
52
- const { formProps, saveButtonProps, onFinish, form } =
53
- useForm<Page>({
54
- meta: { select: formPrismaSelect},
55
- });
56
- if (formProps.initialValues || formConfig.initialValues) {
57
- formProps.initialValues = handleInitialValues(
58
- formProps.initialValues || formConfig.initialValues || {},
59
- fields,
60
- );
61
- }
62
-
63
- const apiUrl = useApiUrl();
64
- const { isLoading, onChange } = useFileUploadState();
65
- const relationSelectProps = useRelation(modelsMap);
66
-
67
- return (
68
- <Create
69
- saveButtonProps={{
70
- ...saveButtonProps,
71
- disabled: isLoading,
72
- }}
73
- >
74
- <Form
75
- {...formProps}
76
- validateTrigger="onBlur"
77
- onFinish={(values) => {
78
- onFinish(
79
- handleOnFinish(
80
- {
81
- ...values,
82
-
83
- },
84
- fields
85
- )
86
- );
87
- }}
88
- layout="vertical"
89
- form={form}
90
- onValuesChange={onFormValuesChange(
91
- form,
92
- formConfig.reaction,
93
- )}
94
- >
95
- {fields.map((field) => {
96
- return getFormItem(
97
- field,
98
- resourceName,
99
- t,
100
- form,
101
- formConfig.reaction,
102
- modelsEnum,
103
- model,
104
- apiUrl,
105
- relationSelectProps,
106
- onChange
107
- );
108
- })}
109
- </Form>
110
- </Create>
111
- );
112
- };
113
-
@@ -1,122 +0,0 @@
1
-
2
- import {
3
- FieldDataType,
4
- handleInitialValues,
5
- handleOnFinish,
6
- ModelType,
7
- produceModel,
8
- } from "@gadmin2n/react-common";
9
- import { Edit, ListButton, RefreshButton, useFileUploadState, useForm } from "@refinedev/antd";
10
- import { Form } from "antd";
11
- import { IResourceComponentsProps, useApiUrl, useParsed, useTranslate } from "@refinedev/core";
12
- import { getFormItem, onFormValuesChange } from "../../helpers";
13
- import React, { useContext, useState } from "react";
14
-
15
- import { modelsMap, modelsEnum } from "../../generated/models.index";
16
- import {
17
- pageFormConfig as formConfig,
18
- pageFormPrismaSelect as formPrismaSelect,
19
- } from "../../generated/props/page/config";
20
- import {
21
- pageModel,
22
- useRelation,
23
- } from "../../generated/props/page/model";
24
- import { Page } from "../../generated/types/prisma.types";
25
- import { PageForm as transformClass } from "../../generated/props/page/form.validator";
26
- import { BusinessContext } from 'components/contexts/business';
27
-
28
- export const PageEdit: React.FC<IResourceComponentsProps> = () => {
29
- const resourceName = "page";
30
- const t = useTranslate();
31
-
32
-
33
- const [[fields, model]] = useState(() => {
34
- const model: ModelType = produceModel(
35
- pageModel,
36
- {
37
- // all formItem attrs surport, https://ant.design/components/form#formitem
38
- // description : { component : <MDEditor data-color-mode="light" /> },
39
- // status : { normalize : (value: any) => value ? "1" : "0" },
40
- // cron: {validator: { validator: runCronValidator },},
41
- },
42
- transformClass
43
- );
44
-
45
- const fields: FieldDataType[] = formConfig.fields
46
- .map((fieldName: string) => model[fieldName])
47
- .filter((field: FieldDataType) => field);
48
-
49
- return [fields, model] as const;
50
- });
51
-
52
- const { formProps, saveButtonProps, onFinish, form } =
53
- useForm<Page>({
54
- meta: { select: formPrismaSelect},
55
- });
56
- formProps.initialValues = handleInitialValues(
57
- formProps.initialValues || {},
58
- fields
59
- );
60
-
61
- const apiUrl = useApiUrl();
62
- const { isLoading, onChange } = useFileUploadState();
63
-
64
- const relationSelectProps = useRelation(modelsMap);
65
-
66
- return (
67
- <Edit
68
- saveButtonProps={{
69
- ...saveButtonProps,
70
- disabled: isLoading,
71
- }}
72
- headerButtons={
73
- <>
74
- <ListButton />
75
- <RefreshButton
76
- meta={{ select: formPrismaSelect}}
77
- />
78
- </>
79
- }
80
- >
81
- <Form
82
- {...formProps}
83
- validateTrigger="onBlur"
84
- onFinish={(values) => {
85
- onFinish(
86
- handleOnFinish(
87
- {
88
- ...values,
89
-
90
- id: undefined,
91
- },
92
- fields,
93
- "edit"
94
- )
95
- );
96
- }}
97
- layout="vertical"
98
- form={form}
99
- onValuesChange={onFormValuesChange(
100
- form,
101
- formConfig.reaction,
102
- )}
103
- >
104
- {fields.map((field) => {
105
- return getFormItem(
106
- field,
107
- resourceName,
108
- t,
109
- form,
110
- formConfig.reaction,
111
- modelsEnum,
112
- model,
113
- apiUrl,
114
- relationSelectProps,
115
- onChange
116
- );
117
- })}
118
- </Form>
119
- </Edit>
120
- );
121
- };
122
-
@@ -1,6 +0,0 @@
1
-
2
- export * from "./list";
3
- export * from "./create";
4
- export * from "./edit";
5
- export * from "./show";
6
-
@@ -1,61 +0,0 @@
1
-
2
- import { ModelType, getColumns, produceModel } from "@gadmin2n/react-common";
3
- import { CloneButton, DeleteButton, EditButton, ListButton, RefreshButton, Show } from "@refinedev/antd";
4
- import { IResourceComponentsProps, useShow, useTranslate } from "@refinedev/core";
5
- import React, { useState } from "react";
6
- import { getShowField } from "../../helpers";
7
- import type { Page } from "../../generated/types/prisma.types"; //'.prisma/client/index';
8
- import {
9
- pageShowConfig as showConfig,
10
- pageShowPrismaSelect as showPrismaSelect,
11
- } from "../../generated/props/page/config";
12
- import { pageModel } from "../../generated/props/page/model";
13
- import { modelsMap } from "generated/models.index";
14
-
15
- export const PageShow: React.FC<IResourceComponentsProps> = () => {
16
- const resourceName = "page";
17
- const t = useTranslate();
18
-
19
- const { queryResult } = useShow<Page>({
20
- meta: { select: showPrismaSelect},
21
- });
22
- const { data, isLoading } = queryResult;
23
- const record = data?.data;
24
-
25
- const [[fields, model]] = useState(() => {
26
- const model: ModelType = produceModel(pageModel, {
27
- // status: { render: xxxxx }
28
- });
29
-
30
- // getColumns is a function that returns an array of fields
31
- const fields = getColumns("Page", showConfig.fields, {
32
- ...modelsMap,
33
- Page: { model, meta: modelsMap["Page"].meta },
34
- });
35
-
36
- return [fields, model] as const;
37
- });
38
-
39
- return (
40
- <Show
41
- isLoading={isLoading}
42
- headerButtons={
43
- <>
44
- <ListButton/>
45
- <EditButton recordItemId={record?.id} />
46
- <CloneButton recordItemId={record?.id} />
47
- <DeleteButton recordItemId={record?.id} />
48
- <RefreshButton
49
- recordItemId={record?.id}
50
- meta={{ select: showPrismaSelect}}
51
- />
52
- </>
53
- }
54
- >
55
- {fields.map((field: any) => {
56
- return getShowField(field, resourceName, record, t, model, modelsMap);
57
- })}
58
- </Show>
59
- );
60
- };
61
-
@@ -1,113 +0,0 @@
1
-
2
- import {
3
- FieldDataType,
4
- handleInitialValues,
5
- handleOnFinish,
6
- ModelType,
7
- produceModel,
8
- } from '@gadmin2n/react-common';
9
- import { Create, useFileUploadState, useForm } from "@refinedev/antd";
10
- import { Form } from "antd";
11
- import { IResourceComponentsProps, useApiUrl, useTranslate } from "@refinedev/core";
12
- import React, { useContext, useState } from "react";
13
- import { getFormItem, onFormValuesChange } from "../../helpers";
14
- import { modelsMap, modelsEnum } from "../../generated/models.index";
15
- import {
16
- pageResourceFormConfig as formConfig,
17
- pageResourceFormPrismaSelect as formPrismaSelect,
18
- } from "../../generated/props/pageResource/config";
19
- import {
20
- pageResourceModel,
21
- useRelation,
22
- } from "../../generated/props/pageResource/model";
23
- import { PageResource } from "../../generated/types/prisma.types";
24
- import { PageResourceForm as transformClass } from "../../generated/props/pageResource/form.validator";
25
- import { BusinessContext } from 'components/contexts/business';
26
-
27
- export const PageResourceCreate: React.FC<IResourceComponentsProps> = () => {
28
- const resourceName = "pageResource";
29
- const t = useTranslate();
30
-
31
-
32
-
33
- const [[fields, model]] = useState(() => {
34
- const model: ModelType = produceModel(
35
- pageResourceModel,
36
- {
37
- // all formItem attrs surport, https://ant.design/components/form#formitem
38
- // description : { component : <MDEditor data-color-mode="light" /> },
39
- // status : { normalize : (value: any) => value ? "1" : "0" },
40
- // cron: {validator: { validator: runCronValidator },},
41
- },
42
- transformClass
43
- );
44
-
45
- const fields: FieldDataType[] = formConfig.fields
46
- .map((fieldName: string) => model[fieldName])
47
- .filter((field: FieldDataType) => field);
48
-
49
- return [fields, model] as const;
50
- });
51
-
52
- const { formProps, saveButtonProps, onFinish, form } =
53
- useForm<PageResource>({
54
- meta: { select: formPrismaSelect},
55
- });
56
- if (formProps.initialValues || formConfig.initialValues) {
57
- formProps.initialValues = handleInitialValues(
58
- formProps.initialValues || formConfig.initialValues || {},
59
- fields,
60
- );
61
- }
62
-
63
- const apiUrl = useApiUrl();
64
- const { isLoading, onChange } = useFileUploadState();
65
- const relationSelectProps = useRelation(modelsMap);
66
-
67
- return (
68
- <Create
69
- saveButtonProps={{
70
- ...saveButtonProps,
71
- disabled: isLoading,
72
- }}
73
- >
74
- <Form
75
- {...formProps}
76
- validateTrigger="onBlur"
77
- onFinish={(values) => {
78
- onFinish(
79
- handleOnFinish(
80
- {
81
- ...values,
82
-
83
- },
84
- fields
85
- )
86
- );
87
- }}
88
- layout="vertical"
89
- form={form}
90
- onValuesChange={onFormValuesChange(
91
- form,
92
- formConfig.reaction,
93
- )}
94
- >
95
- {fields.map((field) => {
96
- return getFormItem(
97
- field,
98
- resourceName,
99
- t,
100
- form,
101
- formConfig.reaction,
102
- modelsEnum,
103
- model,
104
- apiUrl,
105
- relationSelectProps,
106
- onChange
107
- );
108
- })}
109
- </Form>
110
- </Create>
111
- );
112
- };
113
-
@@ -1,122 +0,0 @@
1
-
2
- import {
3
- FieldDataType,
4
- handleInitialValues,
5
- handleOnFinish,
6
- ModelType,
7
- produceModel,
8
- } from "@gadmin2n/react-common";
9
- import { Edit, ListButton, RefreshButton, useFileUploadState, useForm } from "@refinedev/antd";
10
- import { Form } from "antd";
11
- import { IResourceComponentsProps, useApiUrl, useParsed, useTranslate } from "@refinedev/core";
12
- import { getFormItem, onFormValuesChange } from "../../helpers";
13
- import React, { useContext, useState } from "react";
14
-
15
- import { modelsMap, modelsEnum } from "../../generated/models.index";
16
- import {
17
- pageResourceFormConfig as formConfig,
18
- pageResourceFormPrismaSelect as formPrismaSelect,
19
- } from "../../generated/props/pageResource/config";
20
- import {
21
- pageResourceModel,
22
- useRelation,
23
- } from "../../generated/props/pageResource/model";
24
- import { PageResource } from "../../generated/types/prisma.types";
25
- import { PageResourceForm as transformClass } from "../../generated/props/pageResource/form.validator";
26
- import { BusinessContext } from 'components/contexts/business';
27
-
28
- export const PageResourceEdit: React.FC<IResourceComponentsProps> = () => {
29
- const resourceName = "pageResource";
30
- const t = useTranslate();
31
-
32
-
33
- const [[fields, model]] = useState(() => {
34
- const model: ModelType = produceModel(
35
- pageResourceModel,
36
- {
37
- // all formItem attrs surport, https://ant.design/components/form#formitem
38
- // description : { component : <MDEditor data-color-mode="light" /> },
39
- // status : { normalize : (value: any) => value ? "1" : "0" },
40
- // cron: {validator: { validator: runCronValidator },},
41
- },
42
- transformClass
43
- );
44
-
45
- const fields: FieldDataType[] = formConfig.fields
46
- .map((fieldName: string) => model[fieldName])
47
- .filter((field: FieldDataType) => field);
48
-
49
- return [fields, model] as const;
50
- });
51
-
52
- const { formProps, saveButtonProps, onFinish, form } =
53
- useForm<PageResource>({
54
- meta: { select: formPrismaSelect},
55
- });
56
- formProps.initialValues = handleInitialValues(
57
- formProps.initialValues || {},
58
- fields
59
- );
60
-
61
- const apiUrl = useApiUrl();
62
- const { isLoading, onChange } = useFileUploadState();
63
-
64
- const relationSelectProps = useRelation(modelsMap);
65
-
66
- return (
67
- <Edit
68
- saveButtonProps={{
69
- ...saveButtonProps,
70
- disabled: isLoading,
71
- }}
72
- headerButtons={
73
- <>
74
- <ListButton />
75
- <RefreshButton
76
- meta={{ select: formPrismaSelect}}
77
- />
78
- </>
79
- }
80
- >
81
- <Form
82
- {...formProps}
83
- validateTrigger="onBlur"
84
- onFinish={(values) => {
85
- onFinish(
86
- handleOnFinish(
87
- {
88
- ...values,
89
-
90
- id: undefined,
91
- },
92
- fields,
93
- "edit"
94
- )
95
- );
96
- }}
97
- layout="vertical"
98
- form={form}
99
- onValuesChange={onFormValuesChange(
100
- form,
101
- formConfig.reaction,
102
- )}
103
- >
104
- {fields.map((field) => {
105
- return getFormItem(
106
- field,
107
- resourceName,
108
- t,
109
- form,
110
- formConfig.reaction,
111
- modelsEnum,
112
- model,
113
- apiUrl,
114
- relationSelectProps,
115
- onChange
116
- );
117
- })}
118
- </Form>
119
- </Edit>
120
- );
121
- };
122
-
@@ -1,6 +0,0 @@
1
- // Stub - this module has been integrated into page management
2
- const EmptyComponent = () => null;
3
- export const PageResourceCreate = EmptyComponent;
4
- export const PageResourceEdit = EmptyComponent;
5
- export const PageResourceList = EmptyComponent;
6
- export const PageResourceShow = EmptyComponent;