@ng-forge/dynamic-form-mcp 0.9.0-next.1 → 0.9.0-next.10

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.
@@ -1309,6 +1309,12 @@ var DOCUMENTATION = [
1309
1309
  url: `${BASE_URL}/validation/custom-validators`
1310
1310
  },
1311
1311
  { id: "validation-reference", title: "Validation Reference", category: "validation", url: `${BASE_URL}/validation/reference` },
1312
+ {
1313
+ id: "validation-hidden-fields",
1314
+ title: "Validation for Hidden Fields",
1315
+ category: "validation",
1316
+ url: `${BASE_URL}/validation/hidden-fields`
1317
+ },
1312
1318
  // Dynamic Behavior
1313
1319
  { id: "conditional-logic", title: "Conditional Logic", category: "dynamic-behavior", url: `${BASE_URL}/dynamic-behavior/overview` },
1314
1320
  { id: "value-derivation", title: "Value Derivation", category: "dynamic-behavior", url: `${BASE_URL}/dynamic-behavior/derivation` },
@@ -1396,7 +1402,7 @@ var DOCUMENTATION = [
1396
1402
  // packages/dynamic-form-mcp/src/registry/wrappers.ts
1397
1403
  var WRAPPER_AUTHORING_CONTRACT = `All wrapper components MUST:
1398
1404
 
1399
- 1. Implement \`FieldWrapperContract\` from \`@ng-forge/dynamic-forms\`.
1405
+ 1. Implement \`FieldWrapper\` from \`@ng-forge/dynamic-forms\`.
1400
1406
  2. Expose \`readonly fieldComponent = viewChild.required('fieldComponent', { read: ViewContainerRef });\`
1401
1407
  \u2014 this is the slot where the inner wrapper (or the field) is rendered
1402
1408
  imperatively by the outlet.
@@ -3976,7 +3982,12 @@ var BaseFieldDefSchema = z14.object({
3976
3982
  * Whether to exclude this field's value from submission output when readonly.
3977
3983
  * Overrides both the global and form-level settings.
3978
3984
  */
3979
- excludeValueIfReadonly: z14.boolean().optional()
3985
+ excludeValueIfReadonly: z14.boolean().optional(),
3986
+ /**
3987
+ * Whether to run validation when this field is hidden.
3988
+ * Inherited from the parent field (and form/global defaults). Defaults to false.
3989
+ */
3990
+ validateWhenHidden: z14.boolean().optional()
3980
3991
  });
3981
3992
 
3982
3993
  // internal/dynamic-forms-zod/src/lib/schemas/field/field-with-validation.schema.ts
@@ -4950,7 +4961,13 @@ var FormOptionsSchema = z38.object({
4950
4961
  * Whether to exclude values of readonly fields from submission output.
4951
4962
  * Overrides the global withValueExclusionDefaults() setting for this form.
4952
4963
  */
4953
- excludeValueIfReadonly: z38.boolean().optional()
4964
+ excludeValueIfReadonly: z38.boolean().optional(),
4965
+ /**
4966
+ * Whether to run validation while a field is hidden.
4967
+ * Acts as the root inherited value for the form. Per-field
4968
+ * validateWhenHidden overrides cascade through the field tree.
4969
+ */
4970
+ validateWhenHidden: z38.boolean().optional()
4954
4971
  });
4955
4972
 
4956
4973
  // internal/dynamic-forms-zod/src/lib/schemas/form/schema-definition.schema.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ng-forge/dynamic-form-mcp",
3
- "version": "0.9.0-next.1",
3
+ "version": "0.9.0-next.10",
4
4
  "description": "MCP server for ng-forge dynamic forms - AI-assisted form schema generation",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -51,11 +51,11 @@
51
51
  "zod": "^3.25.76"
52
52
  },
53
53
  "devDependencies": {
54
- "@ng-forge/dynamic-forms": "^0.9.0-next.1",
55
- "@ng-forge/dynamic-forms-bootstrap": "^0.9.0-next.1",
56
- "@ng-forge/dynamic-forms-ionic": "^0.9.0-next.1",
57
- "@ng-forge/dynamic-forms-material": "^0.9.0-next.1",
58
- "@ng-forge/dynamic-forms-primeng": "^0.9.0-next.1",
54
+ "@ng-forge/dynamic-forms": "^0.9.0-next.10",
55
+ "@ng-forge/dynamic-forms-bootstrap": "^0.9.0-next.10",
56
+ "@ng-forge/dynamic-forms-ionic": "^0.9.0-next.10",
57
+ "@ng-forge/dynamic-forms-material": "^0.9.0-next.10",
58
+ "@ng-forge/dynamic-forms-primeng": "^0.9.0-next.10",
59
59
  "tsx": "^4.19.0"
60
60
  }
61
61
  }
package/src/index.js CHANGED
@@ -1307,6 +1307,12 @@ var DOCUMENTATION = [
1307
1307
  url: `${BASE_URL}/validation/custom-validators`
1308
1308
  },
1309
1309
  { id: "validation-reference", title: "Validation Reference", category: "validation", url: `${BASE_URL}/validation/reference` },
1310
+ {
1311
+ id: "validation-hidden-fields",
1312
+ title: "Validation for Hidden Fields",
1313
+ category: "validation",
1314
+ url: `${BASE_URL}/validation/hidden-fields`
1315
+ },
1310
1316
  // Dynamic Behavior
1311
1317
  { id: "conditional-logic", title: "Conditional Logic", category: "dynamic-behavior", url: `${BASE_URL}/dynamic-behavior/overview` },
1312
1318
  { id: "value-derivation", title: "Value Derivation", category: "dynamic-behavior", url: `${BASE_URL}/dynamic-behavior/derivation` },
@@ -1394,7 +1400,7 @@ var DOCUMENTATION = [
1394
1400
  // packages/dynamic-form-mcp/src/registry/wrappers.ts
1395
1401
  var WRAPPER_AUTHORING_CONTRACT = `All wrapper components MUST:
1396
1402
 
1397
- 1. Implement \`FieldWrapperContract\` from \`@ng-forge/dynamic-forms\`.
1403
+ 1. Implement \`FieldWrapper\` from \`@ng-forge/dynamic-forms\`.
1398
1404
  2. Expose \`readonly fieldComponent = viewChild.required('fieldComponent', { read: ViewContainerRef });\`
1399
1405
  \u2014 this is the slot where the inner wrapper (or the field) is rendered
1400
1406
  imperatively by the outlet.
@@ -3981,7 +3987,12 @@ var BaseFieldDefSchema = z14.object({
3981
3987
  * Whether to exclude this field's value from submission output when readonly.
3982
3988
  * Overrides both the global and form-level settings.
3983
3989
  */
3984
- excludeValueIfReadonly: z14.boolean().optional()
3990
+ excludeValueIfReadonly: z14.boolean().optional(),
3991
+ /**
3992
+ * Whether to run validation when this field is hidden.
3993
+ * Inherited from the parent field (and form/global defaults). Defaults to false.
3994
+ */
3995
+ validateWhenHidden: z14.boolean().optional()
3985
3996
  });
3986
3997
 
3987
3998
  // internal/dynamic-forms-zod/src/lib/schemas/field/field-with-validation.schema.ts
@@ -4955,7 +4966,13 @@ var FormOptionsSchema = z38.object({
4955
4966
  * Whether to exclude values of readonly fields from submission output.
4956
4967
  * Overrides the global withValueExclusionDefaults() setting for this form.
4957
4968
  */
4958
- excludeValueIfReadonly: z38.boolean().optional()
4969
+ excludeValueIfReadonly: z38.boolean().optional(),
4970
+ /**
4971
+ * Whether to run validation while a field is hidden.
4972
+ * Acts as the root inherited value for the form. Per-field
4973
+ * validateWhenHidden overrides cascade through the field tree.
4974
+ */
4975
+ validateWhenHidden: z38.boolean().optional()
4959
4976
  });
4960
4977
 
4961
4978
  // internal/dynamic-forms-zod/src/lib/schemas/form/schema-definition.schema.ts
@@ -1 +1 @@
1
- {"version":3,"file":"documentation.d.ts","sourceRoot":"","sources":["../../../../../packages/dynamic-form-mcp/src/registry/documentation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,eAAO,MAAM,aAAa,EAAE,OAAO,EA0HlC,CAAC"}
1
+ {"version":3,"file":"documentation.d.ts","sourceRoot":"","sources":["../../../../../packages/dynamic-form-mcp/src/registry/documentation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,eAAO,MAAM,aAAa,EAAE,OAAO,EAgIlC,CAAC"}
@@ -21,6 +21,6 @@ import type { WrapperInfo } from './index.js';
21
21
  * Surfaced by `ngforge_lookup topic="wrappers"` and any wrapper-scoped
22
22
  * lookup so consumers can't miss them.
23
23
  */
24
- export declare const WRAPPER_AUTHORING_CONTRACT = "All wrapper components MUST:\n\n1. Implement `FieldWrapperContract` from `@ng-forge/dynamic-forms`.\n2. Expose `readonly fieldComponent = viewChild.required('fieldComponent', { read: ViewContainerRef });`\n \u2014 this is the slot where the inner wrapper (or the field) is rendered\n imperatively by the outlet.\n3. Place the `#fieldComponent` template ref UNCONDITIONALLY. It cannot\n live inside `@if`, `@defer`, `@for`, `@switch`, `<ng-template>`,\n or any structural directive that delays view creation. The outlet reads\n the `ViewContainerRef` immediately after creation \u2014 if the slot isn't\n materialised yet, `viewChild.required` throws `NG0951`\n (REQUIRED_QUERY_NO_VALUE), the wrapper chain is torn down, and the field\n renders bare.\n4. Declare every config key the wrapper consumes as an Angular `input()`.\n Unknown keys are silently dropped \u2014 the outlet probes\n `reflectComponentType(...).inputs` before calling `setInput()`.\n Runtime typos in config will NOT throw; rely on TypeScript (via\n `FieldRegistryWrappers` module augmentation) to catch them.\n5. Optionally accept `fieldInputs: input<WrapperFieldInputs>()` to read\n the wrapped field's mapper outputs and read-only form state.";
24
+ export declare const WRAPPER_AUTHORING_CONTRACT = "All wrapper components MUST:\n\n1. Implement `FieldWrapper` from `@ng-forge/dynamic-forms`.\n2. Expose `readonly fieldComponent = viewChild.required('fieldComponent', { read: ViewContainerRef });`\n \u2014 this is the slot where the inner wrapper (or the field) is rendered\n imperatively by the outlet.\n3. Place the `#fieldComponent` template ref UNCONDITIONALLY. It cannot\n live inside `@if`, `@defer`, `@for`, `@switch`, `<ng-template>`,\n or any structural directive that delays view creation. The outlet reads\n the `ViewContainerRef` immediately after creation \u2014 if the slot isn't\n materialised yet, `viewChild.required` throws `NG0951`\n (REQUIRED_QUERY_NO_VALUE), the wrapper chain is torn down, and the field\n renders bare.\n4. Declare every config key the wrapper consumes as an Angular `input()`.\n Unknown keys are silently dropped \u2014 the outlet probes\n `reflectComponentType(...).inputs` before calling `setInput()`.\n Runtime typos in config will NOT throw; rely on TypeScript (via\n `FieldRegistryWrappers` module augmentation) to catch them.\n5. Optionally accept `fieldInputs: input<WrapperFieldInputs>()` to read\n the wrapped field's mapper outputs and read-only form state.";
25
25
  export declare const WRAPPERS: WrapperInfo[];
26
26
  //# sourceMappingURL=wrappers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wrappers.d.ts","sourceRoot":"","sources":["../../../../../packages/dynamic-form-mcp/src/registry/wrappers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,8tCAmByB,CAAC;AAEjE,eAAO,MAAM,QAAQ,EAAE,WAAW,EAwIjC,CAAC"}
1
+ {"version":3,"file":"wrappers.d.ts","sourceRoot":"","sources":["../../../../../packages/dynamic-form-mcp/src/registry/wrappers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,stCAmByB,CAAC;AAEjE,eAAO,MAAM,QAAQ,EAAE,WAAW,EAwIjC,CAAC"}