@carlonicora/nextjs-jsonapi 3.5.10 → 3.6.0
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/dist/scripts/generate-web-module/__tests__/editor.spec.js +42 -0
- package/dist/scripts/generate-web-module/__tests__/editor.spec.js.map +1 -1
- package/dist/scripts/generate-web-module/templates/components/editor.template.d.ts +0 -6
- package/dist/scripts/generate-web-module/templates/components/editor.template.d.ts.map +1 -1
- package/dist/scripts/generate-web-module/templates/components/editor.template.js +83 -6
- package/dist/scripts/generate-web-module/templates/components/editor.template.js.map +1 -1
- package/package.json +1 -1
- package/scripts/generate-web-module/__tests__/editor.spec.ts +50 -0
- package/scripts/generate-web-module/templates/components/editor.template.ts +98 -11
|
@@ -31,5 +31,47 @@ const editor_template_1 = require("../templates/components/editor.template");
|
|
|
31
31
|
(0, vitest_1.expect)(out).not.toContain("setOpen(false)");
|
|
32
32
|
(0, vitest_1.expect)(out).not.toContain("errorToast(");
|
|
33
33
|
});
|
|
34
|
+
(0, vitest_1.describe)("BlockNote dirty state", () => {
|
|
35
|
+
const richText = (name) => ({
|
|
36
|
+
name,
|
|
37
|
+
type: "blocknote",
|
|
38
|
+
tsType: "any",
|
|
39
|
+
zodSchema: "z.any()",
|
|
40
|
+
formComponent: "BlockNoteEditor",
|
|
41
|
+
nullable: true,
|
|
42
|
+
isContentField: true,
|
|
43
|
+
});
|
|
44
|
+
(0, vitest_1.it)("keeps EditorSheet's default dirty tracking when the module has no rich-text field", () => {
|
|
45
|
+
const out = (0, editor_template_1.generateEditorTemplate)((0, fixtures_1.makeFrontendData)());
|
|
46
|
+
(0, vitest_1.expect)(out).toContain("onReset={getDefaultValues}");
|
|
47
|
+
(0, vitest_1.expect)(out).not.toContain("isFormDirty");
|
|
48
|
+
(0, vitest_1.expect)(out).not.toContain("useState");
|
|
49
|
+
});
|
|
50
|
+
(0, vitest_1.it)("ignores empty BlockNote editors in the dirty check and re-seeds emptiness on reset", () => {
|
|
51
|
+
const data = (0, fixtures_1.makeFrontendData)();
|
|
52
|
+
data.fields = [...data.fields, richText("description"), richText("content")];
|
|
53
|
+
const out = (0, editor_template_1.generateEditorTemplate)(data);
|
|
54
|
+
(0, vitest_1.expect)(out).toContain("useState");
|
|
55
|
+
(0, vitest_1.expect)(out).toContain("const [isDescriptionEmpty, setIsDescriptionEmpty] = useState<boolean>(");
|
|
56
|
+
(0, vitest_1.expect)(out).toContain("!widget?.description || (Array.isArray(widget.description) && widget.description.length === 0)");
|
|
57
|
+
(0, vitest_1.expect)(out).toContain("const [isContentEmpty, setIsContentEmpty] = useState<boolean>(");
|
|
58
|
+
(0, vitest_1.expect)(out).toContain("if (dirty.description && isDescriptionEmpty) delete dirty.description;");
|
|
59
|
+
(0, vitest_1.expect)(out).toContain("if (dirty.content && isContentEmpty) delete dirty.content;");
|
|
60
|
+
(0, vitest_1.expect)(out).toContain("}, [dirtyFields, isDescriptionEmpty, isContentEmpty]);");
|
|
61
|
+
(0, vitest_1.expect)(out).toContain("isFormDirty={isFormDirty}");
|
|
62
|
+
(0, vitest_1.expect)(out).toContain("onEmptyChange={setIsDescriptionEmpty}");
|
|
63
|
+
(0, vitest_1.expect)(out).toContain("onEmptyChange={setIsContentEmpty}");
|
|
64
|
+
(0, vitest_1.expect)(out).toContain("onReset={() => {");
|
|
65
|
+
(0, vitest_1.expect)(out).toContain("setIsDescriptionEmpty(!widget?.description ||");
|
|
66
|
+
(0, vitest_1.expect)(out).not.toContain("onReset={getDefaultValues}");
|
|
67
|
+
});
|
|
68
|
+
(0, vitest_1.it)("does not track the AI-owned abstract of a Content-extending module", () => {
|
|
69
|
+
const data = (0, fixtures_1.makeFrontendData)({ extendsContent: true });
|
|
70
|
+
data.fields = [...data.fields, richText("abstract"), richText("content")];
|
|
71
|
+
const out = (0, editor_template_1.generateEditorTemplate)(data);
|
|
72
|
+
(0, vitest_1.expect)(out).not.toContain("isAbstractEmpty");
|
|
73
|
+
(0, vitest_1.expect)(out).toContain("isContentEmpty");
|
|
74
|
+
});
|
|
75
|
+
});
|
|
34
76
|
});
|
|
35
77
|
//# sourceMappingURL=editor.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.spec.js","sourceRoot":"","sources":["../../../../scripts/generate-web-module/__tests__/editor.spec.ts"],"names":[],"mappings":";;AAAA,mCAA8C;AAC9C,yCAA8C;AAC9C,6EAAiF;AAEjF,IAAA,iBAAQ,EAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,IAAA,WAAE,EAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,GAAG,GAAG,IAAA,wCAAsB,EAAC,IAAA,2BAAgB,GAAE,CAAC,CAAC;QACvD,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACrC,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;QACjD,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC;QACvD,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QAC7C,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,GAAG,GAAG,IAAA,wCAAsB,EAAC,IAAA,2BAAgB,GAAE,CAAC,CAAC;QACvD,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;QAC/C,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,+EAA+E,CAAC,CAAC;IACzG,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,GAAG,GAAG,IAAA,wCAAsB,EAAC,IAAA,2BAAgB,GAAE,CAAC,CAAC;QACvD,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;QACrD,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,uCAAuC,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,0EAA0E,EAAE,GAAG,EAAE;QAClF,MAAM,GAAG,GAAG,IAAA,wCAAsB,EAAC,IAAA,2BAAgB,GAAE,CAAC,CAAC;QACvD,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC;QACxD,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,4BAA4B,CAAC,CAAC;QACpD,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;QACjD,qEAAqE;QACrE,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAC5C,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"editor.spec.js","sourceRoot":"","sources":["../../../../scripts/generate-web-module/__tests__/editor.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,11 +4,5 @@
|
|
|
4
4
|
* Generates {Module}Editor.tsx form component using the EditorSheet wrapper.
|
|
5
5
|
*/
|
|
6
6
|
import { FrontendTemplateData } from "../../types/template-data.interface";
|
|
7
|
-
/**
|
|
8
|
-
* Generate the editor component file content
|
|
9
|
-
*
|
|
10
|
-
* @param data - Frontend template data
|
|
11
|
-
* @returns Generated file content
|
|
12
|
-
*/
|
|
13
7
|
export declare function generateEditorTemplate(data: FrontendTemplateData): string;
|
|
14
8
|
//# sourceMappingURL=editor.template.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.template.d.ts","sourceRoot":"","sources":["../../../../../scripts/generate-web-module/templates/components/editor.template.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAuC,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"editor.template.d.ts","sourceRoot":"","sources":["../../../../../scripts/generate-web-module/templates/components/editor.template.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAuC,MAAM,qCAAqC,CAAC;AA0FhH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAuGzE"}
|
|
@@ -15,6 +15,72 @@ const relationship_resolver_1 = require("../../transformers/relationship-resolve
|
|
|
15
15
|
* @param data - Frontend template data
|
|
16
16
|
* @returns Generated file content
|
|
17
17
|
*/
|
|
18
|
+
/**
|
|
19
|
+
* Rich-text (BlockNote) fields rendered by the editor. When the module extends
|
|
20
|
+
* Content, `abstract` is owned by the AI pipeline and is not rendered.
|
|
21
|
+
*/
|
|
22
|
+
function getRichTextFields(data) {
|
|
23
|
+
const { fields, extendsContent } = data;
|
|
24
|
+
const rendered = extendsContent ? fields.filter((f) => !["name", "tldr", "abstract"].includes(f.name)) : fields;
|
|
25
|
+
return rendered.filter((f) => f.isContentField);
|
|
26
|
+
}
|
|
27
|
+
/** `isDescriptionEmpty` / `setIsDescriptionEmpty` names for a rich-text field. */
|
|
28
|
+
function emptyStateNames(field) {
|
|
29
|
+
const pascal = (0, name_transformer_1.toPascalCase)(field.name);
|
|
30
|
+
return { state: `is${pascal}Empty`, setter: `setIs${pascal}Empty` };
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Dirty tracking that ignores empty BlockNote editors.
|
|
34
|
+
*
|
|
35
|
+
* BlockNote fires `onChange` once on mount for an empty editor (it inserts a
|
|
36
|
+
* trailing paragraph), which marks the field dirty and makes EditorSheet show
|
|
37
|
+
* the discard dialog on an untouched form. Emptiness is reported by
|
|
38
|
+
* `FormBlockNote`'s `onEmptyChange`; an empty rich-text field never counts as
|
|
39
|
+
* dirty. Pattern: wyrdli ClueEditor / a360ai OpportunityEditor.
|
|
40
|
+
*/
|
|
41
|
+
function generateDirtyState(data) {
|
|
42
|
+
const richText = getRichTextFields(data);
|
|
43
|
+
if (richText.length === 0)
|
|
44
|
+
return "";
|
|
45
|
+
const camel = data.names.camelCase;
|
|
46
|
+
const seed = (f) => `!${camel}?.${f.name} || (Array.isArray(${camel}.${f.name}) && ${camel}.${f.name}.length === 0)`;
|
|
47
|
+
const states = richText
|
|
48
|
+
.map((f) => {
|
|
49
|
+
const { state, setter } = emptyStateNames(f);
|
|
50
|
+
return ` const [${state}, ${setter}] = useState<boolean>(\n ${seed(f)},\n );`;
|
|
51
|
+
})
|
|
52
|
+
.join("\n");
|
|
53
|
+
const strips = richText
|
|
54
|
+
.map((f) => ` if (dirty.${f.name} && ${emptyStateNames(f).state}) delete dirty.${f.name};`)
|
|
55
|
+
.join("\n");
|
|
56
|
+
const deps = richText.map((f) => emptyStateNames(f).state).join(", ");
|
|
57
|
+
return `
|
|
58
|
+
// BlockNote reports a mount-time change for an empty editor, which would mark the field dirty and
|
|
59
|
+
// trigger the discard dialog on an untouched form. Emptiness comes from \`onEmptyChange\`; an empty
|
|
60
|
+
// rich-text field never counts as dirty.
|
|
61
|
+
${states}
|
|
62
|
+
const { dirtyFields } = form.formState;
|
|
63
|
+
const isFormDirty = useCallback(() => {
|
|
64
|
+
const dirty: Record<string, unknown> = { ...dirtyFields };
|
|
65
|
+
${strips}
|
|
66
|
+
return Object.keys(dirty).length > 0;
|
|
67
|
+
}, [dirtyFields, ${deps}]);
|
|
68
|
+
`;
|
|
69
|
+
}
|
|
70
|
+
/** `onReset` re-seeds the emptiness flags from the entity before returning the defaults. */
|
|
71
|
+
function generateOnReset(data) {
|
|
72
|
+
const richText = getRichTextFields(data);
|
|
73
|
+
if (richText.length === 0)
|
|
74
|
+
return "onReset={getDefaultValues}";
|
|
75
|
+
const camel = data.names.camelCase;
|
|
76
|
+
const resets = richText
|
|
77
|
+
.map((f) => ` ${emptyStateNames(f).setter}(!${camel}?.${f.name} || (Array.isArray(${camel}.${f.name}) && ${camel}.${f.name}.length === 0));`)
|
|
78
|
+
.join("\n");
|
|
79
|
+
return `onReset={() => {
|
|
80
|
+
${resets}
|
|
81
|
+
return getDefaultValues();
|
|
82
|
+
}}`;
|
|
83
|
+
}
|
|
18
84
|
function generateEditorTemplate(data) {
|
|
19
85
|
const { names, relationships } = data;
|
|
20
86
|
const i18nKey = names.pluralCamel.toLowerCase();
|
|
@@ -26,6 +92,9 @@ function generateEditorTemplate(data) {
|
|
|
26
92
|
const defaultsInner = generateDefaultValuesInner(data);
|
|
27
93
|
const onSubmitBody = generateOnSubmitBody(data);
|
|
28
94
|
const formFields = generateFormFields(data);
|
|
95
|
+
const dirtyState = generateDirtyState(data);
|
|
96
|
+
const onReset = generateOnReset(data);
|
|
97
|
+
const hasRichText = getRichTextFields(data).length > 0;
|
|
29
98
|
const hasAuthor = relationships.some((r) => r.variant === field_mapping_types_1.AUTHOR_VARIANT);
|
|
30
99
|
return `"use client";
|
|
31
100
|
|
|
@@ -64,7 +133,7 @@ ${defaultsInner}
|
|
|
64
133
|
resolver: zodResolver(formSchema),
|
|
65
134
|
defaultValues: getDefaultValues(),
|
|
66
135
|
});
|
|
67
|
-
${hasAuthor
|
|
136
|
+
${dirtyState}${hasAuthor
|
|
68
137
|
? `
|
|
69
138
|
useEffect(() => {
|
|
70
139
|
if (currentUser && !form.getValues("author")?.id) {
|
|
@@ -81,13 +150,13 @@ ${hasAuthor
|
|
|
81
150
|
isEdit={!!${camel}}
|
|
82
151
|
module={Modules.${names.pascalCase}}
|
|
83
152
|
propagateChanges={propagateChanges}
|
|
84
|
-
size="md"
|
|
153
|
+
${hasRichText ? " isFormDirty={isFormDirty}\n" : ""} size="md"
|
|
85
154
|
onSubmit={async (values) => {
|
|
86
155
|
${onSubmitBody}
|
|
87
156
|
}}
|
|
88
157
|
onRevalidate={revalidatePaths}
|
|
89
158
|
onNavigate={(url) => router.push(url)}
|
|
90
|
-
onReset
|
|
159
|
+
${onReset}
|
|
91
160
|
onClose={onClose}
|
|
92
161
|
trigger={trigger}
|
|
93
162
|
forceShow={forceShow}
|
|
@@ -135,7 +204,9 @@ function generateImports(data) {
|
|
|
135
204
|
// Foundation components use MultiSelect, generated modules use MultiSelector
|
|
136
205
|
const componentName = rel.single
|
|
137
206
|
? `${rel.name}Selector`
|
|
138
|
-
:
|
|
207
|
+
: rel.isFoundation
|
|
208
|
+
? `${rel.name}MultiSelect`
|
|
209
|
+
: `${rel.name}MultiSelector`;
|
|
139
210
|
if (seenImports.has(componentName))
|
|
140
211
|
return;
|
|
141
212
|
seenImports.add(componentName);
|
|
@@ -197,7 +268,8 @@ function generateImports(data) {
|
|
|
197
268
|
// Other imports
|
|
198
269
|
imports.push(`import { zodResolver } from "@hookform/resolvers/zod";`);
|
|
199
270
|
imports.push(`import { useTranslations } from "next-intl";`);
|
|
200
|
-
|
|
271
|
+
const hasRichText = getRichTextFields(data).length > 0;
|
|
272
|
+
imports.push(`import { ReactNode, useCallback${hasAuthor ? ", useEffect" : ""}, useMemo${hasRichText ? ", useState" : ""} } from "react";`);
|
|
201
273
|
imports.push(`import { useForm } from "react-hook-form";`);
|
|
202
274
|
imports.push(`import { v4 } from "uuid";`);
|
|
203
275
|
imports.push(`import { z } from "zod";`);
|
|
@@ -348,7 +420,11 @@ function generateDefaultValuesInner(data) {
|
|
|
348
420
|
// Relationship defaults
|
|
349
421
|
relationships.forEach((rel) => {
|
|
350
422
|
const fieldId = (0, name_transformer_1.toCamelCase)(rel.alias || rel.variant || rel.name);
|
|
351
|
-
const propertyName = rel.alias
|
|
423
|
+
const propertyName = rel.alias
|
|
424
|
+
? (0, name_transformer_1.toCamelCase)(rel.alias)
|
|
425
|
+
: rel.variant
|
|
426
|
+
? (0, name_transformer_1.toCamelCase)(rel.variant)
|
|
427
|
+
: (0, name_transformer_1.toCamelCase)(rel.name);
|
|
352
428
|
const pluralPropertyName = (0, name_transformer_1.pluralize)((0, name_transformer_1.toCamelCase)(rel.alias || rel.name));
|
|
353
429
|
if (rel.variant === field_mapping_types_1.AUTHOR_VARIANT) {
|
|
354
430
|
defaults.push(` ${fieldId}: ${names.camelCase}?.${propertyName}
|
|
@@ -466,6 +542,7 @@ function generateFormFields(data) {
|
|
|
466
542
|
name={t(\`features.${names.camelCase.toLowerCase()}.fields.${field.name}.label\`)}
|
|
467
543
|
placeholder={t(\`features.${names.camelCase.toLowerCase()}.fields.${field.name}.placeholder\`)}
|
|
468
544
|
type="${names.camelCase}"
|
|
545
|
+
onEmptyChange={${emptyStateNames(field).setter}}
|
|
469
546
|
/>`);
|
|
470
547
|
}
|
|
471
548
|
else if (field.name === "description" || field.type === "textarea") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.template.js","sourceRoot":"","sources":["../../../../../scripts/generate-web-module/templates/components/editor.template.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"editor.template.js","sourceRoot":"","sources":["../../../../../scripts/generate-web-module/templates/components/editor.template.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -33,4 +33,54 @@ describe("editor template — EditorSheet", () => {
|
|
|
33
33
|
expect(out).not.toContain("setOpen(false)");
|
|
34
34
|
expect(out).not.toContain("errorToast(");
|
|
35
35
|
});
|
|
36
|
+
|
|
37
|
+
describe("BlockNote dirty state", () => {
|
|
38
|
+
const richText = (name: string) => ({
|
|
39
|
+
name,
|
|
40
|
+
type: "blocknote",
|
|
41
|
+
tsType: "any",
|
|
42
|
+
zodSchema: "z.any()",
|
|
43
|
+
formComponent: "BlockNoteEditor" as const,
|
|
44
|
+
nullable: true,
|
|
45
|
+
isContentField: true,
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
it("keeps EditorSheet's default dirty tracking when the module has no rich-text field", () => {
|
|
49
|
+
const out = generateEditorTemplate(makeFrontendData());
|
|
50
|
+
expect(out).toContain("onReset={getDefaultValues}");
|
|
51
|
+
expect(out).not.toContain("isFormDirty");
|
|
52
|
+
expect(out).not.toContain("useState");
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
it("ignores empty BlockNote editors in the dirty check and re-seeds emptiness on reset", () => {
|
|
56
|
+
const data = makeFrontendData();
|
|
57
|
+
data.fields = [...data.fields, richText("description"), richText("content")];
|
|
58
|
+
const out = generateEditorTemplate(data);
|
|
59
|
+
|
|
60
|
+
expect(out).toContain("useState");
|
|
61
|
+
expect(out).toContain("const [isDescriptionEmpty, setIsDescriptionEmpty] = useState<boolean>(");
|
|
62
|
+
expect(out).toContain(
|
|
63
|
+
"!widget?.description || (Array.isArray(widget.description) && widget.description.length === 0)",
|
|
64
|
+
);
|
|
65
|
+
expect(out).toContain("const [isContentEmpty, setIsContentEmpty] = useState<boolean>(");
|
|
66
|
+
expect(out).toContain("if (dirty.description && isDescriptionEmpty) delete dirty.description;");
|
|
67
|
+
expect(out).toContain("if (dirty.content && isContentEmpty) delete dirty.content;");
|
|
68
|
+
expect(out).toContain("}, [dirtyFields, isDescriptionEmpty, isContentEmpty]);");
|
|
69
|
+
expect(out).toContain("isFormDirty={isFormDirty}");
|
|
70
|
+
expect(out).toContain("onEmptyChange={setIsDescriptionEmpty}");
|
|
71
|
+
expect(out).toContain("onEmptyChange={setIsContentEmpty}");
|
|
72
|
+
expect(out).toContain("onReset={() => {");
|
|
73
|
+
expect(out).toContain("setIsDescriptionEmpty(!widget?.description ||");
|
|
74
|
+
expect(out).not.toContain("onReset={getDefaultValues}");
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
it("does not track the AI-owned abstract of a Content-extending module", () => {
|
|
78
|
+
const data = makeFrontendData({ extendsContent: true });
|
|
79
|
+
data.fields = [...data.fields, richText("abstract"), richText("content")];
|
|
80
|
+
const out = generateEditorTemplate(data);
|
|
81
|
+
|
|
82
|
+
expect(out).not.toContain("isAbstractEmpty");
|
|
83
|
+
expect(out).toContain("isContentEmpty");
|
|
84
|
+
});
|
|
85
|
+
});
|
|
36
86
|
});
|
|
@@ -22,6 +22,78 @@ import {
|
|
|
22
22
|
* @param data - Frontend template data
|
|
23
23
|
* @returns Generated file content
|
|
24
24
|
*/
|
|
25
|
+
/**
|
|
26
|
+
* Rich-text (BlockNote) fields rendered by the editor. When the module extends
|
|
27
|
+
* Content, `abstract` is owned by the AI pipeline and is not rendered.
|
|
28
|
+
*/
|
|
29
|
+
function getRichTextFields(data: FrontendTemplateData): FrontendField[] {
|
|
30
|
+
const { fields, extendsContent } = data;
|
|
31
|
+
const rendered = extendsContent ? fields.filter((f) => !["name", "tldr", "abstract"].includes(f.name)) : fields;
|
|
32
|
+
return rendered.filter((f) => f.isContentField);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/** `isDescriptionEmpty` / `setIsDescriptionEmpty` names for a rich-text field. */
|
|
36
|
+
function emptyStateNames(field: FrontendField): { state: string; setter: string } {
|
|
37
|
+
const pascal = toPascalCase(field.name);
|
|
38
|
+
return { state: `is${pascal}Empty`, setter: `setIs${pascal}Empty` };
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Dirty tracking that ignores empty BlockNote editors.
|
|
43
|
+
*
|
|
44
|
+
* BlockNote fires `onChange` once on mount for an empty editor (it inserts a
|
|
45
|
+
* trailing paragraph), which marks the field dirty and makes EditorSheet show
|
|
46
|
+
* the discard dialog on an untouched form. Emptiness is reported by
|
|
47
|
+
* `FormBlockNote`'s `onEmptyChange`; an empty rich-text field never counts as
|
|
48
|
+
* dirty. Pattern: wyrdli ClueEditor / a360ai OpportunityEditor.
|
|
49
|
+
*/
|
|
50
|
+
function generateDirtyState(data: FrontendTemplateData): string {
|
|
51
|
+
const richText = getRichTextFields(data);
|
|
52
|
+
if (richText.length === 0) return "";
|
|
53
|
+
const camel = data.names.camelCase;
|
|
54
|
+
const seed = (f: FrontendField) =>
|
|
55
|
+
`!${camel}?.${f.name} || (Array.isArray(${camel}.${f.name}) && ${camel}.${f.name}.length === 0)`;
|
|
56
|
+
const states = richText
|
|
57
|
+
.map((f) => {
|
|
58
|
+
const { state, setter } = emptyStateNames(f);
|
|
59
|
+
return ` const [${state}, ${setter}] = useState<boolean>(\n ${seed(f)},\n );`;
|
|
60
|
+
})
|
|
61
|
+
.join("\n");
|
|
62
|
+
const strips = richText
|
|
63
|
+
.map((f) => ` if (dirty.${f.name} && ${emptyStateNames(f).state}) delete dirty.${f.name};`)
|
|
64
|
+
.join("\n");
|
|
65
|
+
const deps = richText.map((f) => emptyStateNames(f).state).join(", ");
|
|
66
|
+
return `
|
|
67
|
+
// BlockNote reports a mount-time change for an empty editor, which would mark the field dirty and
|
|
68
|
+
// trigger the discard dialog on an untouched form. Emptiness comes from \`onEmptyChange\`; an empty
|
|
69
|
+
// rich-text field never counts as dirty.
|
|
70
|
+
${states}
|
|
71
|
+
const { dirtyFields } = form.formState;
|
|
72
|
+
const isFormDirty = useCallback(() => {
|
|
73
|
+
const dirty: Record<string, unknown> = { ...dirtyFields };
|
|
74
|
+
${strips}
|
|
75
|
+
return Object.keys(dirty).length > 0;
|
|
76
|
+
}, [dirtyFields, ${deps}]);
|
|
77
|
+
`;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/** `onReset` re-seeds the emptiness flags from the entity before returning the defaults. */
|
|
81
|
+
function generateOnReset(data: FrontendTemplateData): string {
|
|
82
|
+
const richText = getRichTextFields(data);
|
|
83
|
+
if (richText.length === 0) return "onReset={getDefaultValues}";
|
|
84
|
+
const camel = data.names.camelCase;
|
|
85
|
+
const resets = richText
|
|
86
|
+
.map(
|
|
87
|
+
(f) =>
|
|
88
|
+
` ${emptyStateNames(f).setter}(!${camel}?.${f.name} || (Array.isArray(${camel}.${f.name}) && ${camel}.${f.name}.length === 0));`,
|
|
89
|
+
)
|
|
90
|
+
.join("\n");
|
|
91
|
+
return `onReset={() => {
|
|
92
|
+
${resets}
|
|
93
|
+
return getDefaultValues();
|
|
94
|
+
}}`;
|
|
95
|
+
}
|
|
96
|
+
|
|
25
97
|
export function generateEditorTemplate(data: FrontendTemplateData): string {
|
|
26
98
|
const { names, relationships } = data;
|
|
27
99
|
const i18nKey = names.pluralCamel.toLowerCase();
|
|
@@ -34,6 +106,9 @@ export function generateEditorTemplate(data: FrontendTemplateData): string {
|
|
|
34
106
|
const defaultsInner = generateDefaultValuesInner(data);
|
|
35
107
|
const onSubmitBody = generateOnSubmitBody(data);
|
|
36
108
|
const formFields = generateFormFields(data);
|
|
109
|
+
const dirtyState = generateDirtyState(data);
|
|
110
|
+
const onReset = generateOnReset(data);
|
|
111
|
+
const hasRichText = getRichTextFields(data).length > 0;
|
|
37
112
|
|
|
38
113
|
const hasAuthor = relationships.some((r) => r.variant === AUTHOR_VARIANT);
|
|
39
114
|
|
|
@@ -74,17 +149,17 @@ ${defaultsInner}
|
|
|
74
149
|
resolver: zodResolver(formSchema),
|
|
75
150
|
defaultValues: getDefaultValues(),
|
|
76
151
|
});
|
|
77
|
-
${
|
|
78
|
-
|
|
79
|
-
|
|
152
|
+
${dirtyState}${
|
|
153
|
+
hasAuthor
|
|
154
|
+
? `
|
|
80
155
|
useEffect(() => {
|
|
81
156
|
if (currentUser && !form.getValues("author")?.id) {
|
|
82
157
|
form.setValue("author", { id: currentUser.id, name: currentUser.name, avatar: currentUser.avatar });
|
|
83
158
|
}
|
|
84
159
|
}, [currentUser]);
|
|
85
160
|
`
|
|
86
|
-
|
|
87
|
-
}
|
|
161
|
+
: ""
|
|
162
|
+
}
|
|
88
163
|
return (
|
|
89
164
|
<EditorSheet
|
|
90
165
|
form={form}
|
|
@@ -93,13 +168,13 @@ ${
|
|
|
93
168
|
isEdit={!!${camel}}
|
|
94
169
|
module={Modules.${names.pascalCase}}
|
|
95
170
|
propagateChanges={propagateChanges}
|
|
96
|
-
size="md"
|
|
171
|
+
${hasRichText ? " isFormDirty={isFormDirty}\n" : ""} size="md"
|
|
97
172
|
onSubmit={async (values) => {
|
|
98
173
|
${onSubmitBody}
|
|
99
174
|
}}
|
|
100
175
|
onRevalidate={revalidatePaths}
|
|
101
176
|
onNavigate={(url) => router.push(url)}
|
|
102
|
-
onReset
|
|
177
|
+
${onReset}
|
|
103
178
|
onClose={onClose}
|
|
104
179
|
trigger={trigger}
|
|
105
180
|
forceShow={forceShow}
|
|
@@ -154,7 +229,9 @@ function generateImports(data: FrontendTemplateData): string {
|
|
|
154
229
|
// Foundation components use MultiSelect, generated modules use MultiSelector
|
|
155
230
|
const componentName = rel.single
|
|
156
231
|
? `${rel.name}Selector`
|
|
157
|
-
:
|
|
232
|
+
: rel.isFoundation
|
|
233
|
+
? `${rel.name}MultiSelect`
|
|
234
|
+
: `${rel.name}MultiSelector`;
|
|
158
235
|
if (seenImports.has(componentName)) return;
|
|
159
236
|
seenImports.add(componentName);
|
|
160
237
|
if (rel.isFoundation) {
|
|
@@ -203,7 +280,9 @@ function generateImports(data: FrontendTemplateData): string {
|
|
|
203
280
|
// Check for description/textarea fields
|
|
204
281
|
// Rich-text (BlockNote) fields render as FormBlockNote even when named
|
|
205
282
|
// "description", so they must not pull in FormTextarea.
|
|
206
|
-
const hasTextareaFields = fields.some(
|
|
283
|
+
const hasTextareaFields = fields.some(
|
|
284
|
+
(f) => !f.isContentField && (f.name === "description" || f.type === "textarea"),
|
|
285
|
+
);
|
|
207
286
|
if (hasTextareaFields) {
|
|
208
287
|
componentImports.push("FormTextarea");
|
|
209
288
|
}
|
|
@@ -228,7 +307,10 @@ function generateImports(data: FrontendTemplateData): string {
|
|
|
228
307
|
// Other imports
|
|
229
308
|
imports.push(`import { zodResolver } from "@hookform/resolvers/zod";`);
|
|
230
309
|
imports.push(`import { useTranslations } from "next-intl";`);
|
|
231
|
-
|
|
310
|
+
const hasRichText = getRichTextFields(data).length > 0;
|
|
311
|
+
imports.push(
|
|
312
|
+
`import { ReactNode, useCallback${hasAuthor ? ", useEffect" : ""}, useMemo${hasRichText ? ", useState" : ""} } from "react";`,
|
|
313
|
+
);
|
|
232
314
|
imports.push(`import { useForm } from "react-hook-form";`);
|
|
233
315
|
imports.push(`import { v4 } from "uuid";`);
|
|
234
316
|
imports.push(`import { z } from "zod";`);
|
|
@@ -385,7 +467,11 @@ function generateDefaultValuesInner(data: FrontendTemplateData): string {
|
|
|
385
467
|
// Relationship defaults
|
|
386
468
|
relationships.forEach((rel) => {
|
|
387
469
|
const fieldId = toCamelCase(rel.alias || rel.variant || rel.name);
|
|
388
|
-
const propertyName = rel.alias
|
|
470
|
+
const propertyName = rel.alias
|
|
471
|
+
? toCamelCase(rel.alias)
|
|
472
|
+
: rel.variant
|
|
473
|
+
? toCamelCase(rel.variant)
|
|
474
|
+
: toCamelCase(rel.name);
|
|
389
475
|
const pluralPropertyName = pluralize(toCamelCase(rel.alias || rel.name));
|
|
390
476
|
|
|
391
477
|
if (rel.variant === AUTHOR_VARIANT) {
|
|
@@ -514,6 +600,7 @@ function generateFormFields(data: FrontendTemplateData): string {
|
|
|
514
600
|
name={t(\`features.${names.camelCase.toLowerCase()}.fields.${field.name}.label\`)}
|
|
515
601
|
placeholder={t(\`features.${names.camelCase.toLowerCase()}.fields.${field.name}.placeholder\`)}
|
|
516
602
|
type="${names.camelCase}"
|
|
603
|
+
onEmptyChange={${emptyStateNames(field).setter}}
|
|
517
604
|
/>`);
|
|
518
605
|
} else if (field.name === "description" || field.type === "textarea") {
|
|
519
606
|
// Use FormTextarea for description and textarea fields
|