@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.
@@ -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;AAYhH;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAoGzE"}
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={getDefaultValues}
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
- : (rel.isFoundation ? `${rel.name}MultiSelect` : `${rel.name}MultiSelector`);
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
- imports.push(`import { ReactNode, useCallback, useMemo${hasAuthor ? ", useEffect" : ""} } from "react";`);
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 ? (0, name_transformer_1.toCamelCase)(rel.alias) : rel.variant ? (0, name_transformer_1.toCamelCase)(rel.variant) : (0, name_transformer_1.toCamelCase)(rel.name);
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@carlonicora/nextjs-jsonapi",
3
- "version": "3.5.10",
3
+ "version": "3.6.0",
4
4
  "description": "Next.js JSON:API client with server/client support and caching",
5
5
  "author": "Carlo Nicora",
6
6
  "license": "GPL-3.0-or-later",
@@ -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
- hasAuthor
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={getDefaultValues}
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
- : (rel.isFoundation ? `${rel.name}MultiSelect` : `${rel.name}MultiSelector`);
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((f) => !f.isContentField && (f.name === "description" || f.type === "textarea"));
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
- imports.push(`import { ReactNode, useCallback, useMemo${hasAuthor ? ", useEffect" : ""} } from "react";`);
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 ? toCamelCase(rel.alias) : rel.variant ? toCamelCase(rel.variant) : toCamelCase(rel.name);
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