@evanschleret/formforgeclient 1.2.3 → 2.0.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.
Files changed (84) hide show
  1. package/README.md +10 -0
  2. package/dist/module.cjs +1 -0
  3. package/dist/module.d.cts +1 -0
  4. package/dist/module.d.mts +1 -0
  5. package/dist/module.d.ts +1 -0
  6. package/dist/module.json +1 -1
  7. package/dist/module.mjs +1 -0
  8. package/dist/runtime/api/client.js +4 -2
  9. package/dist/runtime/api/request.d.ts +1 -0
  10. package/dist/runtime/api/schema.js +4 -4
  11. package/dist/runtime/assets/formforge.css +1 -0
  12. package/dist/runtime/composables/index.d.ts +1 -1
  13. package/dist/runtime/composables/useFormForgeBuilder.d.ts +24 -2
  14. package/dist/runtime/composables/useFormForgeBuilder.js +299 -43
  15. package/dist/runtime/composables/useFormForgeClient.js +3 -5
  16. package/dist/runtime/composables/useFormForgeForm.js +15 -5
  17. package/dist/runtime/composables/useFormForgeI18n.d.ts +245 -19
  18. package/dist/runtime/composables/useFormForgeI18n.js +245 -19
  19. package/dist/runtime/composables/useFormForgeSubmit.js +31 -9
  20. package/dist/runtime/index.d.ts +1 -0
  21. package/dist/runtime/renderers/default/FormForgeBuilder.d.vue.ts +21 -2
  22. package/dist/runtime/renderers/default/FormForgeBuilder.vue +689 -738
  23. package/dist/runtime/renderers/default/FormForgeBuilder.vue.d.ts +21 -2
  24. package/dist/runtime/renderers/default/FormForgeBuilderBlockSettingsModal.d.vue.ts +17 -0
  25. package/dist/runtime/renderers/default/FormForgeBuilderBlockSettingsModal.vue +32 -0
  26. package/dist/runtime/renderers/default/FormForgeBuilderBlockSettingsModal.vue.d.ts +17 -0
  27. package/dist/runtime/renderers/default/FormForgeRenderer.d.vue.ts +3 -4
  28. package/dist/runtime/renderers/default/FormForgeRenderer.vue +344 -294
  29. package/dist/runtime/renderers/default/FormForgeRenderer.vue.d.ts +3 -4
  30. package/dist/runtime/renderers/default/FormForgeRendererField.d.vue.ts +22 -0
  31. package/dist/runtime/renderers/default/FormForgeRendererField.vue +237 -0
  32. package/dist/runtime/renderers/default/FormForgeRendererField.vue.d.ts +22 -0
  33. package/dist/runtime/renderers/default/FormForgeRendererPage.d.vue.ts +18 -0
  34. package/dist/runtime/renderers/default/FormForgeRendererPage.vue +31 -0
  35. package/dist/runtime/renderers/default/FormForgeRendererPage.vue.d.ts +18 -0
  36. package/dist/runtime/renderers/default/FormForgeResponse.vue +4 -3
  37. package/dist/runtime/renderers/default/builder/FormForgeBuilderAddressFieldsCard.d.vue.ts +11 -0
  38. package/dist/runtime/renderers/default/builder/FormForgeBuilderAddressFieldsCard.vue +118 -0
  39. package/dist/runtime/renderers/default/builder/FormForgeBuilderAddressFieldsCard.vue.d.ts +11 -0
  40. package/dist/runtime/renderers/default/builder/FormForgeBuilderBlockCard.d.vue.ts +46 -0
  41. package/dist/runtime/renderers/default/builder/FormForgeBuilderBlockCard.vue +205 -0
  42. package/dist/runtime/renderers/default/builder/FormForgeBuilderBlockCard.vue.d.ts +46 -0
  43. package/dist/runtime/renderers/default/builder/FormForgeBuilderChoiceDisplayField.d.vue.ts +11 -0
  44. package/dist/runtime/renderers/default/builder/FormForgeBuilderChoiceDisplayField.vue +37 -0
  45. package/dist/runtime/renderers/default/builder/FormForgeBuilderChoiceDisplayField.vue.d.ts +11 -0
  46. package/dist/runtime/renderers/default/builder/FormForgeBuilderChoiceOptionsField.d.vue.ts +11 -0
  47. package/dist/runtime/renderers/default/builder/FormForgeBuilderChoiceOptionsField.vue +195 -0
  48. package/dist/runtime/renderers/default/builder/FormForgeBuilderChoiceOptionsField.vue.d.ts +11 -0
  49. package/dist/runtime/renderers/default/builder/FormForgeBuilderDescriptionField.d.vue.ts +14 -0
  50. package/dist/runtime/renderers/default/builder/FormForgeBuilderDescriptionField.vue +91 -0
  51. package/dist/runtime/renderers/default/builder/FormForgeBuilderDescriptionField.vue.d.ts +14 -0
  52. package/dist/runtime/renderers/default/builder/FormForgeBuilderLogicPanel.d.vue.ts +13 -0
  53. package/dist/runtime/renderers/default/builder/FormForgeBuilderLogicPanel.vue +387 -0
  54. package/dist/runtime/renderers/default/builder/FormForgeBuilderLogicPanel.vue.d.ts +13 -0
  55. package/dist/runtime/renderers/default/builder/FormForgeBuilderQuestionRow.d.vue.ts +44 -0
  56. package/dist/runtime/renderers/default/builder/FormForgeBuilderQuestionRow.vue +328 -0
  57. package/dist/runtime/renderers/default/builder/FormForgeBuilderQuestionRow.vue.d.ts +44 -0
  58. package/dist/runtime/renderers/default/builder/FormForgeBuilderTemporalModeField.d.vue.ts +11 -0
  59. package/dist/runtime/renderers/default/builder/FormForgeBuilderTemporalModeField.vue +47 -0
  60. package/dist/runtime/renderers/default/builder/FormForgeBuilderTemporalModeField.vue.d.ts +11 -0
  61. package/dist/runtime/renderers/default/builder/FormForgeBuilderValidationRulesSection.d.vue.ts +14 -0
  62. package/dist/runtime/renderers/default/builder/FormForgeBuilderValidationRulesSection.vue +595 -0
  63. package/dist/runtime/renderers/default/builder/FormForgeBuilderValidationRulesSection.vue.d.ts +14 -0
  64. package/dist/runtime/renderers/default/builder/builderFieldHelpers.d.ts +3 -0
  65. package/dist/runtime/renderers/default/builder/builderFieldHelpers.js +4 -0
  66. package/dist/runtime/types/index.d.ts +1 -1
  67. package/dist/runtime/types/management.d.ts +12 -0
  68. package/dist/runtime/types/schema.d.ts +72 -4
  69. package/dist/runtime/utils/defaults.d.ts +7 -0
  70. package/dist/runtime/utils/defaults.js +86 -0
  71. package/dist/runtime/utils/page-logic.d.ts +24 -0
  72. package/dist/runtime/utils/page-logic.js +351 -0
  73. package/dist/runtime/utils/rich-text.d.ts +3 -0
  74. package/dist/runtime/utils/rich-text.js +72 -0
  75. package/dist/runtime/utils/schema.d.ts +1 -1
  76. package/dist/runtime/utils/schema.js +70 -16
  77. package/dist/runtime/utils/temporal.d.ts +10 -0
  78. package/dist/runtime/utils/temporal.js +28 -0
  79. package/dist/runtime/utils/validation.d.ts +5 -0
  80. package/dist/runtime/utils/validation.js +36 -0
  81. package/dist/runtime/validation/zod.d.ts +5 -2
  82. package/dist/runtime/validation/zod.js +563 -54
  83. package/dist/types.d.mts +2 -0
  84. package/package.json +18 -14
package/README.md CHANGED
@@ -60,6 +60,16 @@ const route = useRoute()
60
60
  </template>
61
61
  ```
62
62
 
63
+ ## Playground
64
+
65
+ Run the local playground with:
66
+
67
+ ```bash
68
+ bun run playground
69
+ ```
70
+
71
+ It mounts `FormForgeBuilder` in `standalone` mode with sample data.
72
+
63
73
  ## Scoped routes quick example
64
74
 
65
75
  ```ts
package/dist/module.cjs CHANGED
@@ -39,6 +39,7 @@ const module$1 = kit.defineNuxtModule({
39
39
  datetimeMode: options.datetimeMode,
40
40
  locale: options.locale
41
41
  };
42
+ nuxt.options.css.push(resolver.resolve("./runtime/assets/formforge.css"));
42
43
  kit.addPlugin(resolver.resolve("./runtime/plugin"));
43
44
  kit.addComponent({
44
45
  name: "FormForgeRenderer",
package/dist/module.d.cts CHANGED
@@ -1,5 +1,6 @@
1
1
  import * as _nuxt_schema from '@nuxt/schema';
2
2
  import { FormForgeScopedRouteMap, FormForgeScopeParams, FormForgeUploadMode, FormForgeDatetimeMode } from '../dist/runtime/types/index.js';
3
+ export { FormForgeBuilderExpose } from '../dist/runtime/composables/useFormForgeBuilder.js';
3
4
 
4
5
  interface ModuleOptions {
5
6
  baseURL?: string;
package/dist/module.d.mts CHANGED
@@ -1,5 +1,6 @@
1
1
  import * as _nuxt_schema from '@nuxt/schema';
2
2
  import { FormForgeScopedRouteMap, FormForgeScopeParams, FormForgeUploadMode, FormForgeDatetimeMode } from '../dist/runtime/types/index.js';
3
+ export { FormForgeBuilderExpose } from '../dist/runtime/composables/useFormForgeBuilder.js';
3
4
 
4
5
  interface ModuleOptions {
5
6
  baseURL?: string;
package/dist/module.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import * as _nuxt_schema from '@nuxt/schema';
2
2
  import { FormForgeScopedRouteMap, FormForgeScopeParams, FormForgeUploadMode, FormForgeDatetimeMode } from '../dist/runtime/types/index.js';
3
+ export { FormForgeBuilderExpose } from '../dist/runtime/composables/useFormForgeBuilder.js';
3
4
 
4
5
  interface ModuleOptions {
5
6
  baseURL?: string;
package/dist/module.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "compatibility": {
5
5
  "nuxt": ">=4.0.0"
6
6
  },
7
- "version": "1.2.3",
7
+ "version": "2.0.0",
8
8
  "builder": {
9
9
  "@nuxt/module-builder": "1.0.2",
10
10
  "unbuild": "3.6.1"
package/dist/module.mjs CHANGED
@@ -36,6 +36,7 @@ const module$1 = defineNuxtModule({
36
36
  datetimeMode: options.datetimeMode,
37
37
  locale: options.locale
38
38
  };
39
+ nuxt.options.css.push(resolver.resolve("./runtime/assets/formforge.css"));
39
40
  addPlugin(resolver.resolve("./runtime/plugin"));
40
41
  addComponent({
41
42
  name: "FormForgeRenderer",
@@ -66,12 +66,14 @@ class FormForgeClientImpl {
66
66
  }
67
67
  withRequestScope(options) {
68
68
  const resolvedScope = this.resolveRequestScope(options.scope);
69
- if (resolvedScope === void 0) {
69
+ const resolvedLocale = options.locale ?? this.config.locale;
70
+ if (resolvedScope === void 0 && resolvedLocale === void 0) {
70
71
  return options;
71
72
  }
72
73
  return {
73
74
  ...options,
74
- scope: resolvedScope
75
+ ...resolvedScope === void 0 ? {} : { scope: resolvedScope },
76
+ ...resolvedLocale === void 0 ? {} : { locale: resolvedLocale }
75
77
  };
76
78
  }
77
79
  async getForm(key, options = {}) {
@@ -2,6 +2,7 @@ import type { FormForgeScope } from '../types/index.js';
2
2
  export interface FormForgeRequestOptions {
3
3
  endpoint?: string;
4
4
  scope?: FormForgeScope;
5
+ locale?: string;
5
6
  }
6
7
  export declare function applyFormForgeScope(path: string, scope: FormForgeScope | undefined): string;
7
8
  export declare function resolveEndpointPath(endpoint: string | undefined, fallback: string, params?: Record<string, string | number>, scope?: FormForgeScope | undefined): string;
@@ -8,7 +8,7 @@ export async function fetchFormForgeSchema(http, key, options = {}) {
8
8
  }, options.scope),
9
9
  method: "GET"
10
10
  });
11
- return normalizeFormForgeSchema(response.data);
11
+ return normalizeFormForgeSchema(response.data, options.locale);
12
12
  }
13
13
  export async function fetchFormForgeSchemaVersions(http, key, options = {}) {
14
14
  const response = await http({
@@ -30,7 +30,7 @@ export async function fetchFormForgeSchemaVersion(http, key, version, options =
30
30
  }, options.scope),
31
31
  method: "GET"
32
32
  });
33
- return normalizeFormForgeSchema(response.data);
33
+ return normalizeFormForgeSchema(response.data, options.locale);
34
34
  }
35
35
  export async function resolveFormForgeSchema(http, key, input = {}, version, options = {}) {
36
36
  const fallbackPath = version !== void 0 && version !== "" ? `/forms/${key}/versions/${version}/resolve` : `/forms/${key}/resolve`;
@@ -50,7 +50,7 @@ export async function resolveFormForgeSchema(http, key, input = {}, version, opt
50
50
  const data = pickFormForgeDataEnvelope(response.data);
51
51
  const schemaValue = data.schema;
52
52
  if (isFormForgeJsonObject(schemaValue)) {
53
- return normalizeFormForgeSchema(schemaValue);
53
+ return normalizeFormForgeSchema(schemaValue, options.locale);
54
54
  }
55
- return normalizeFormForgeSchema(data);
55
+ return normalizeFormForgeSchema(data, options.locale);
56
56
  }
@@ -0,0 +1 @@
1
+ @import "#build/ui.css";@source "../renderers/**/*.{vue,ts}"
@@ -27,5 +27,5 @@ export type { UseFormForgeResponsesOptions, UseFormForgeResponsesQuerySync, Form
27
27
  export type { UseFormForgeCategoryOptions, FormForgeCategoryRequestOptions, FormForgeCategoryRefreshOptions, UseFormForgeCategoryOptionsHelperInput } from './useFormForgeCategory.js';
28
28
  export type { UseFormForgeManagementOptions, UseFormForgeManagementMutationInputOptions, FormForgeManagementListResult } from './useFormForgeManagement.js';
29
29
  export type { UseFormForgeWizardOptions } from './useFormForgeWizard.js';
30
- export type { UseFormForgeBuilderOptions, FormForgeBuilderDraft } from './useFormForgeBuilder.js';
30
+ export type { UseFormForgeBuilderOptions, FormForgeBuilderDraft, FormForgeBuilderExpose } from './useFormForgeBuilder.js';
31
31
  //# sourceMappingURL=index.d.ts.map
@@ -1,12 +1,20 @@
1
- import type { FormForgeClient, FormForgeClientConfig, FormForgeCondition, FormForgeConditionAction, FormForgeConditionMatch, FormForgeConditionOperator, FormForgeConditionTargetType, FormForgeDraftSettings, FormForgeFieldType, FormForgeScope, FormForgePageSchema } from '../types/index.js';
1
+ import type { FormForgeClient, FormForgeClientConfig, FormForgeCondition, FormForgeConditionAction, FormForgeConditionMatch, FormForgeConditionOperator, FormForgeConditionTargetType, FormForgeDraftSettings, FormForgeFieldType, FormForgeJsonObject, FormForgeScope, FormForgePageSchema } from '../types/index.js';
2
2
  export interface FormForgeBuilderDraft {
3
3
  uuid: string | null;
4
4
  key: string | null;
5
+ schema_version: number;
5
6
  title: string;
7
+ publish_at?: string | null;
8
+ pause_at?: string | null;
9
+ response_limit?: number | null;
10
+ submission_code_required?: boolean;
11
+ submission_code?: string | null;
12
+ public_url?: string | null;
6
13
  category: string | null;
7
14
  pages: FormForgePageSchema[];
8
15
  conditions: FormForgeCondition[];
9
16
  drafts: FormForgeDraftSettings;
17
+ api: FormForgeJsonObject;
10
18
  }
11
19
  export interface UseFormForgeBuilderOptions {
12
20
  formUuid?: string;
@@ -16,6 +24,8 @@ export interface UseFormForgeBuilderOptions {
16
24
  initial?: Partial<FormForgeBuilderDraft>;
17
25
  autosave?: boolean;
18
26
  autosaveDelay?: number;
27
+ autoPublishOnSave?: boolean;
28
+ locale?: string;
19
29
  client?: FormForgeClient;
20
30
  clientConfig?: FormForgeClientConfig;
21
31
  }
@@ -23,6 +33,12 @@ export interface FormForgeBuilderSaveOptions {
23
33
  idempotencyKey?: string;
24
34
  autoPublish?: boolean;
25
35
  }
36
+ export interface FormForgeBuilderExpose {
37
+ save: () => Promise<void>;
38
+ publish: () => Promise<void>;
39
+ unpublish: () => Promise<void>;
40
+ togglePublishState: () => Promise<void>;
41
+ }
26
42
  export declare const FORM_FORGE_BUILDER_FIELD_TYPES: FormForgeFieldType[];
27
43
  export declare const FORM_FORGE_BUILDER_CONDITION_TARGET_TYPES: FormForgeConditionTargetType[];
28
44
  export declare const FORM_FORGE_BUILDER_CONDITION_ACTIONS: FormForgeConditionAction[];
@@ -39,13 +55,19 @@ export declare function useFormForgeBuilder(options?: UseFormForgeBuilderOptions
39
55
  };
40
56
  autosaveEnabled: any;
41
57
  autosaveDelay: any;
58
+ autoPublishOnSave: any;
42
59
  lastSavedAt: any;
43
60
  publishable: any;
44
- addPage: () => void;
61
+ addPage: (type?: FormForgeFieldType) => FormForgePageSchema;
45
62
  removePage: (pageKey: string) => void;
63
+ movePage: (pageKey: string, direction: -1 | 1) => void;
64
+ duplicatePage: (pageKey: string) => void;
46
65
  mergePageWithPrevious: (pageKey: string) => void;
47
66
  addField: (pageKey: string, type: FormForgeFieldType) => void;
67
+ insertFieldAfter: (pageKey: string, fieldKey: string, type: FormForgeFieldType) => void;
48
68
  duplicateField: (pageKey: string, fieldKey: string) => void;
69
+ moveField: (pageKey: string, fieldKey: string, direction: -1 | 1) => void;
70
+ moveFieldToPage: (pageKey: string, fieldKey: string, targetPageKey: string) => void;
49
71
  removeField: (pageKey: string, fieldKey: string) => void;
50
72
  addCondition: () => void;
51
73
  removeCondition: (conditionKey: string) => void;