@btst/stack 1.5.2 → 1.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/node_modules/.pnpm/@dnd-kit_accessibility@3.1.1_react@19.2.0/node_modules/@dnd-kit/accessibility/dist/accessibility.esm.cjs +68 -0
- package/dist/node_modules/.pnpm/@dnd-kit_accessibility@3.1.1_react@19.2.0/node_modules/@dnd-kit/accessibility/dist/accessibility.esm.mjs +60 -0
- package/dist/node_modules/.pnpm/@dnd-kit_core@6.3.1_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@dnd-kit/core/dist/core.esm.cjs +3937 -0
- package/dist/node_modules/.pnpm/@dnd-kit_core@6.3.1_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@dnd-kit/core/dist/core.esm.mjs +3907 -0
- package/dist/node_modules/.pnpm/@dnd-kit_modifiers@9.0.0_@dnd-kit_core@6.3.1_react-dom@19.2.0_react@19.2.0__react@19.2.0__react@19.2.0/node_modules/@dnd-kit/modifiers/dist/modifiers.esm.cjs +30 -0
- package/dist/node_modules/.pnpm/@dnd-kit_modifiers@9.0.0_@dnd-kit_core@6.3.1_react-dom@19.2.0_react@19.2.0__react@19.2.0__react@19.2.0/node_modules/@dnd-kit/modifiers/dist/modifiers.esm.mjs +28 -0
- package/dist/node_modules/.pnpm/@dnd-kit_sortable@10.0.0_@dnd-kit_core@6.3.1_react-dom@19.2.0_react@19.2.0__react@19.2.0__react@19.2.0/node_modules/@dnd-kit/sortable/dist/sortable.esm.cjs +675 -0
- package/dist/node_modules/.pnpm/@dnd-kit_sortable@10.0.0_@dnd-kit_core@6.3.1_react-dom@19.2.0_react@19.2.0__react@19.2.0__react@19.2.0/node_modules/@dnd-kit/sortable/dist/sortable.esm.mjs +661 -0
- package/dist/node_modules/.pnpm/@dnd-kit_utilities@3.2.2_react@19.2.0/node_modules/@dnd-kit/utilities/dist/utilities.esm.cjs +358 -0
- package/dist/node_modules/.pnpm/@dnd-kit_utilities@3.2.2_react@19.2.0/node_modules/@dnd-kit/utilities/dist/utilities.esm.mjs +332 -0
- package/dist/node_modules/.pnpm/@radix-ui_react-tabs@1.1.13_@types_react-dom@19.2.3_@types_react@19.2.6__@types_react@1_865f042350eb43f3338b0fffb33f6246/node_modules/@radix-ui/react-tabs/dist/index.cjs +211 -0
- package/dist/node_modules/.pnpm/@radix-ui_react-tabs@1.1.13_@types_react-dom@19.2.3_@types_react@19.2.6__@types_react@1_865f042350eb43f3338b0fffb33f6246/node_modules/@radix-ui/react-tabs/dist/index.mjs +188 -0
- package/dist/packages/better-stack/src/plugins/cms/api/plugin.cjs +3 -2
- package/dist/packages/better-stack/src/plugins/cms/api/plugin.mjs +3 -2
- package/dist/packages/better-stack/src/plugins/cms/client/components/forms/content-form.cjs +15 -15
- package/dist/packages/better-stack/src/plugins/cms/client/components/forms/content-form.mjs +16 -16
- package/dist/packages/better-stack/src/plugins/form-builder/api/plugin.cjs +588 -0
- package/dist/packages/better-stack/src/plugins/form-builder/api/plugin.mjs +586 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/components/forms/form-renderer.cjs +131 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/components/forms/form-renderer.mjs +129 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/components/loading/form-builder-skeleton.cjs +32 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/components/loading/form-builder-skeleton.mjs +30 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/components/loading/form-list-skeleton.cjs +21 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/components/loading/form-list-skeleton.mjs +19 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/components/loading/submissions-skeleton.cjs +34 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/components/loading/submissions-skeleton.mjs +32 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/components/pages/404-page.cjs +20 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/components/pages/404-page.mjs +18 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/components/pages/form-builder-page.cjs +19 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/components/pages/form-builder-page.internal.cjs +186 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/components/pages/form-builder-page.internal.mjs +184 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/components/pages/form-builder-page.mjs +17 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/components/pages/form-list-page.cjs +19 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/components/pages/form-list-page.internal.cjs +165 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/components/pages/form-list-page.internal.mjs +163 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/components/pages/form-list-page.mjs +17 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/components/pages/submissions-page.cjs +19 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/components/pages/submissions-page.internal.cjs +177 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/components/pages/submissions-page.internal.mjs +175 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/components/pages/submissions-page.mjs +17 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/components/shared/default-error.cjs +17 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/components/shared/default-error.mjs +15 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/components/shared/empty-state.cjs +16 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/components/shared/empty-state.mjs +14 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/components/shared/page-wrapper.cjs +27 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/components/shared/page-wrapper.mjs +25 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/components/shared/pagination.cjs +39 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/components/shared/pagination.mjs +37 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/hooks/form-builder-hooks.cjs +551 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/hooks/form-builder-hooks.mjs +537 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/localization/form-builder-common.cjs +36 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/localization/form-builder-common.mjs +34 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/localization/form-builder-editor.cjs +19 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/localization/form-builder-editor.mjs +17 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/localization/form-builder-list.cjs +21 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/localization/form-builder-list.mjs +19 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/localization/form-builder-submissions.cjs +19 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/localization/form-builder-submissions.mjs +17 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/localization/form-builder-toasts.cjs +14 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/localization/form-builder-toasts.mjs +12 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/localization/index.cjs +17 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/localization/index.mjs +15 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/plugin.cjs +278 -0
- package/dist/packages/better-stack/src/plugins/form-builder/client/plugin.mjs +276 -0
- package/dist/packages/better-stack/src/plugins/form-builder/db.cjs +99 -0
- package/dist/packages/better-stack/src/plugins/form-builder/db.mjs +97 -0
- package/dist/packages/better-stack/src/plugins/form-builder/schemas.cjs +82 -0
- package/dist/packages/better-stack/src/plugins/form-builder/schemas.mjs +74 -0
- package/dist/packages/better-stack/src/plugins/form-builder/utils.cjs +37 -0
- package/dist/packages/better-stack/src/plugins/form-builder/utils.mjs +29 -0
- package/dist/packages/ui/src/components/auto-form/index.cjs +2 -12
- package/dist/packages/ui/src/components/auto-form/index.mjs +2 -9
- package/dist/packages/ui/src/components/auto-form/stepped-auto-form.cjs +377 -0
- package/dist/packages/ui/src/components/auto-form/stepped-auto-form.mjs +368 -0
- package/dist/packages/ui/src/components/auto-form/utils.cjs +1 -56
- package/dist/packages/ui/src/components/auto-form/utils.mjs +2 -56
- package/dist/packages/ui/src/components/form-builder/canvas.cjs +111 -0
- package/dist/packages/ui/src/components/form-builder/canvas.mjs +109 -0
- package/dist/packages/ui/src/components/form-builder/components/index.cjs +570 -0
- package/dist/packages/ui/src/components/form-builder/components/index.mjs +553 -0
- package/dist/packages/ui/src/components/form-builder/edit-field-dialog.cjs +131 -0
- package/dist/packages/ui/src/components/form-builder/edit-field-dialog.mjs +129 -0
- package/dist/packages/ui/src/components/form-builder/form-preview.cjs +73 -0
- package/dist/packages/ui/src/components/form-builder/form-preview.mjs +71 -0
- package/dist/packages/ui/src/components/form-builder/index.cjs +353 -0
- package/dist/packages/ui/src/components/form-builder/index.mjs +344 -0
- package/dist/packages/ui/src/components/form-builder/nested-field-editor-dialog.cjs +263 -0
- package/dist/packages/ui/src/components/form-builder/nested-field-editor-dialog.mjs +261 -0
- package/dist/packages/ui/src/components/form-builder/palette.cjs +52 -0
- package/dist/packages/ui/src/components/form-builder/palette.mjs +49 -0
- package/dist/packages/ui/src/components/form-builder/schema-utils.cjs +120 -0
- package/dist/packages/ui/src/components/form-builder/schema-utils.mjs +114 -0
- package/dist/packages/ui/src/components/form-builder/sortable-field.cjs +151 -0
- package/dist/packages/ui/src/components/form-builder/sortable-field.mjs +148 -0
- package/dist/packages/ui/src/components/form-builder/step-tabs.cjs +180 -0
- package/dist/packages/ui/src/components/form-builder/step-tabs.mjs +178 -0
- package/dist/packages/ui/src/components/form-builder/types.cjs +7 -0
- package/dist/packages/ui/src/components/form-builder/types.mjs +5 -0
- package/dist/packages/ui/src/components/form-builder/validation-schemas.cjs +67 -0
- package/dist/packages/ui/src/components/form-builder/validation-schemas.mjs +56 -0
- package/dist/packages/ui/src/components/tabs.cjs +70 -0
- package/dist/packages/ui/src/components/tabs.mjs +65 -0
- package/dist/packages/ui/src/lib/schema-converter.cjs +130 -0
- package/dist/packages/ui/src/lib/schema-converter.mjs +124 -0
- package/dist/plugins/blog/api/index.d.cts +1 -1
- package/dist/plugins/blog/api/index.d.mts +1 -1
- package/dist/plugins/blog/api/index.d.ts +1 -1
- package/dist/plugins/blog/client/hooks/index.d.cts +2 -2
- package/dist/plugins/blog/client/hooks/index.d.mts +2 -2
- package/dist/plugins/blog/client/hooks/index.d.ts +2 -2
- package/dist/plugins/blog/client/index.d.cts +1 -1
- package/dist/plugins/blog/client/index.d.mts +1 -1
- package/dist/plugins/blog/client/index.d.ts +1 -1
- package/dist/plugins/blog/query-keys.d.cts +2 -2
- package/dist/plugins/blog/query-keys.d.mts +2 -2
- package/dist/plugins/blog/query-keys.d.ts +2 -2
- package/dist/plugins/cms/client/index.cjs +6 -0
- package/dist/plugins/cms/client/index.d.cts +6 -113
- package/dist/plugins/cms/client/index.d.mts +6 -113
- package/dist/plugins/cms/client/index.d.ts +6 -113
- package/dist/plugins/cms/client/index.mjs +1 -0
- package/dist/plugins/form-builder/api/index.cjs +7 -0
- package/dist/plugins/form-builder/api/index.d.cts +141 -0
- package/dist/plugins/form-builder/api/index.d.mts +141 -0
- package/dist/plugins/form-builder/api/index.d.ts +141 -0
- package/dist/plugins/form-builder/api/index.mjs +1 -0
- package/dist/plugins/form-builder/client/components/index.cjs +29 -0
- package/dist/plugins/form-builder/client/components/index.d.cts +93 -0
- package/dist/plugins/form-builder/client/components/index.d.mts +93 -0
- package/dist/plugins/form-builder/client/components/index.d.ts +93 -0
- package/dist/plugins/form-builder/client/components/index.mjs +18 -0
- package/dist/plugins/form-builder/client/hooks/index.cjs +19 -0
- package/dist/plugins/form-builder/client/hooks/index.d.cts +154 -0
- package/dist/plugins/form-builder/client/hooks/index.d.mts +154 -0
- package/dist/plugins/form-builder/client/hooks/index.d.ts +154 -0
- package/dist/plugins/form-builder/client/hooks/index.mjs +1 -0
- package/dist/plugins/form-builder/client/index.cjs +13 -0
- package/dist/plugins/form-builder/client/index.d.cts +381 -0
- package/dist/plugins/form-builder/client/index.d.mts +381 -0
- package/dist/plugins/form-builder/client/index.d.ts +381 -0
- package/dist/plugins/form-builder/client/index.mjs +2 -0
- package/dist/plugins/form-builder/client.css +3 -0
- package/dist/plugins/form-builder/query-keys.cjs +143 -0
- package/dist/plugins/form-builder/query-keys.d.cts +74 -0
- package/dist/plugins/form-builder/query-keys.d.mts +74 -0
- package/dist/plugins/form-builder/query-keys.d.ts +74 -0
- package/dist/plugins/form-builder/query-keys.mjs +141 -0
- package/dist/plugins/form-builder/style.css +19 -0
- package/dist/shared/stack.AX5nZ6A3.d.cts +86 -0
- package/dist/shared/stack.AX5nZ6A3.d.mts +86 -0
- package/dist/shared/stack.AX5nZ6A3.d.ts +86 -0
- package/dist/shared/stack.BIh2AXaW.d.cts +123 -0
- package/dist/shared/stack.BIh2AXaW.d.mts +123 -0
- package/dist/shared/stack.BIh2AXaW.d.ts +123 -0
- package/dist/shared/stack.DzH_wcvr.d.cts +195 -0
- package/dist/shared/stack.DzH_wcvr.d.mts +195 -0
- package/dist/shared/stack.DzH_wcvr.d.ts +195 -0
- package/package.json +54 -1
- package/src/plugins/cms/api/plugin.ts +9 -4
- package/src/plugins/cms/client/components/forms/content-form.tsx +23 -25
- package/src/plugins/cms/client/index.ts +11 -0
- package/src/plugins/form-builder/api/index.ts +1 -0
- package/src/plugins/form-builder/api/plugin.ts +776 -0
- package/src/plugins/form-builder/client/components/forms/form-renderer.tsx +253 -0
- package/src/plugins/form-builder/client/components/index.tsx +24 -0
- package/src/plugins/form-builder/client/components/loading/form-builder-skeleton.tsx +42 -0
- package/src/plugins/form-builder/client/components/loading/form-list-skeleton.tsx +25 -0
- package/src/plugins/form-builder/client/components/loading/index.tsx +3 -0
- package/src/plugins/form-builder/client/components/loading/submissions-skeleton.tsx +40 -0
- package/src/plugins/form-builder/client/components/pages/404-page.tsx +28 -0
- package/src/plugins/form-builder/client/components/pages/form-builder-page.internal.tsx +253 -0
- package/src/plugins/form-builder/client/components/pages/form-builder-page.tsx +26 -0
- package/src/plugins/form-builder/client/components/pages/form-list-page.internal.tsx +231 -0
- package/src/plugins/form-builder/client/components/pages/form-list-page.tsx +22 -0
- package/src/plugins/form-builder/client/components/pages/submissions-page.internal.tsx +268 -0
- package/src/plugins/form-builder/client/components/pages/submissions-page.tsx +26 -0
- package/src/plugins/form-builder/client/components/shared/default-error.tsx +30 -0
- package/src/plugins/form-builder/client/components/shared/empty-state.tsx +26 -0
- package/src/plugins/form-builder/client/components/shared/page-wrapper.tsx +32 -0
- package/src/plugins/form-builder/client/components/shared/pagination.tsx +52 -0
- package/src/plugins/form-builder/client/hooks/form-builder-hooks.tsx +799 -0
- package/src/plugins/form-builder/client/hooks/index.tsx +1 -0
- package/src/plugins/form-builder/client/index.ts +22 -0
- package/src/plugins/form-builder/client/localization/form-builder-common.ts +36 -0
- package/src/plugins/form-builder/client/localization/form-builder-editor.ts +18 -0
- package/src/plugins/form-builder/client/localization/form-builder-list.ts +17 -0
- package/src/plugins/form-builder/client/localization/form-builder-submissions.ts +17 -0
- package/src/plugins/form-builder/client/localization/form-builder-toasts.ts +10 -0
- package/src/plugins/form-builder/client/localization/index.ts +15 -0
- package/src/plugins/form-builder/client/overrides.ts +146 -0
- package/src/plugins/form-builder/client/plugin.tsx +488 -0
- package/src/plugins/form-builder/client.css +3 -0
- package/src/plugins/form-builder/db.ts +99 -0
- package/src/plugins/form-builder/query-keys.ts +198 -0
- package/src/plugins/form-builder/schemas.ts +122 -0
- package/src/plugins/form-builder/style.css +19 -0
- package/src/plugins/form-builder/types.ts +317 -0
- package/src/plugins/form-builder/utils.ts +63 -0
- package/dist/shared/{stack.DLhzx1-D.d.cts → stack.CcI4sYJP.d.cts} +1 -1
- package/dist/shared/{stack.DLhzx1-D.d.mts → stack.CcI4sYJP.d.mts} +1 -1
- package/dist/shared/{stack.DLhzx1-D.d.ts → stack.CcI4sYJP.d.ts} +1 -1
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const FORM_BUILDER_SUBMISSIONS = {
|
|
4
|
+
FORM_BUILDER_SUBMISSIONS_TITLE: "Submissions",
|
|
5
|
+
FORM_BUILDER_SUBMISSIONS_SUBTITLE: "View form submissions",
|
|
6
|
+
FORM_BUILDER_SUBMISSIONS_EMPTY: "No submissions yet",
|
|
7
|
+
FORM_BUILDER_SUBMISSIONS_EMPTY_DESCRIPTION: "Submissions will appear here when users submit this form.",
|
|
8
|
+
FORM_BUILDER_SUBMISSIONS_COLUMN_ID: "ID",
|
|
9
|
+
FORM_BUILDER_SUBMISSIONS_COLUMN_DATA: "Data",
|
|
10
|
+
FORM_BUILDER_SUBMISSIONS_COLUMN_SUBMITTED_AT: "Submitted",
|
|
11
|
+
FORM_BUILDER_SUBMISSIONS_COLUMN_IP_ADDRESS: "IP Address",
|
|
12
|
+
FORM_BUILDER_SUBMISSIONS_COLUMN_ACTIONS: "Actions",
|
|
13
|
+
FORM_BUILDER_SUBMISSIONS_ACTION_VIEW: "View",
|
|
14
|
+
FORM_BUILDER_SUBMISSIONS_ACTION_DELETE: "Delete",
|
|
15
|
+
FORM_BUILDER_SUBMISSIONS_DELETE_CONFIRM: "Are you sure you want to delete this submission?",
|
|
16
|
+
FORM_BUILDER_SUBMISSIONS_BACK_TO_FORM: "Back to Form"
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
exports.FORM_BUILDER_SUBMISSIONS = FORM_BUILDER_SUBMISSIONS;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
const FORM_BUILDER_SUBMISSIONS = {
|
|
2
|
+
FORM_BUILDER_SUBMISSIONS_TITLE: "Submissions",
|
|
3
|
+
FORM_BUILDER_SUBMISSIONS_SUBTITLE: "View form submissions",
|
|
4
|
+
FORM_BUILDER_SUBMISSIONS_EMPTY: "No submissions yet",
|
|
5
|
+
FORM_BUILDER_SUBMISSIONS_EMPTY_DESCRIPTION: "Submissions will appear here when users submit this form.",
|
|
6
|
+
FORM_BUILDER_SUBMISSIONS_COLUMN_ID: "ID",
|
|
7
|
+
FORM_BUILDER_SUBMISSIONS_COLUMN_DATA: "Data",
|
|
8
|
+
FORM_BUILDER_SUBMISSIONS_COLUMN_SUBMITTED_AT: "Submitted",
|
|
9
|
+
FORM_BUILDER_SUBMISSIONS_COLUMN_IP_ADDRESS: "IP Address",
|
|
10
|
+
FORM_BUILDER_SUBMISSIONS_COLUMN_ACTIONS: "Actions",
|
|
11
|
+
FORM_BUILDER_SUBMISSIONS_ACTION_VIEW: "View",
|
|
12
|
+
FORM_BUILDER_SUBMISSIONS_ACTION_DELETE: "Delete",
|
|
13
|
+
FORM_BUILDER_SUBMISSIONS_DELETE_CONFIRM: "Are you sure you want to delete this submission?",
|
|
14
|
+
FORM_BUILDER_SUBMISSIONS_BACK_TO_FORM: "Back to Form"
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export { FORM_BUILDER_SUBMISSIONS };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const FORM_BUILDER_TOASTS = {
|
|
4
|
+
FORM_BUILDER_TOAST_CREATE_SUCCESS: "Form created successfully",
|
|
5
|
+
FORM_BUILDER_TOAST_UPDATE_SUCCESS: "Form updated successfully",
|
|
6
|
+
FORM_BUILDER_TOAST_DELETE_SUCCESS: "Form deleted successfully",
|
|
7
|
+
FORM_BUILDER_TOAST_SUBMIT_SUCCESS: "Form submitted successfully",
|
|
8
|
+
FORM_BUILDER_TOAST_ERROR: "An error occurred. Please try again.",
|
|
9
|
+
FORM_BUILDER_TOAST_VALIDATION_ERROR: "Please fix the validation errors",
|
|
10
|
+
FORM_BUILDER_TOAST_DUPLICATE_SLUG: "A form with this slug already exists",
|
|
11
|
+
FORM_BUILDER_TOAST_SUBMISSION_DELETED: "Submission deleted successfully"
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
exports.FORM_BUILDER_TOASTS = FORM_BUILDER_TOASTS;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
const FORM_BUILDER_TOASTS = {
|
|
2
|
+
FORM_BUILDER_TOAST_CREATE_SUCCESS: "Form created successfully",
|
|
3
|
+
FORM_BUILDER_TOAST_UPDATE_SUCCESS: "Form updated successfully",
|
|
4
|
+
FORM_BUILDER_TOAST_DELETE_SUCCESS: "Form deleted successfully",
|
|
5
|
+
FORM_BUILDER_TOAST_SUBMIT_SUCCESS: "Form submitted successfully",
|
|
6
|
+
FORM_BUILDER_TOAST_ERROR: "An error occurred. Please try again.",
|
|
7
|
+
FORM_BUILDER_TOAST_VALIDATION_ERROR: "Please fix the validation errors",
|
|
8
|
+
FORM_BUILDER_TOAST_DUPLICATE_SLUG: "A form with this slug already exists",
|
|
9
|
+
FORM_BUILDER_TOAST_SUBMISSION_DELETED: "Submission deleted successfully"
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export { FORM_BUILDER_TOASTS };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const formBuilderCommon = require('./form-builder-common.cjs');
|
|
4
|
+
const formBuilderToasts = require('./form-builder-toasts.cjs');
|
|
5
|
+
const formBuilderList = require('./form-builder-list.cjs');
|
|
6
|
+
const formBuilderEditor = require('./form-builder-editor.cjs');
|
|
7
|
+
const formBuilderSubmissions = require('./form-builder-submissions.cjs');
|
|
8
|
+
|
|
9
|
+
const FORM_BUILDER_LOCALIZATION = {
|
|
10
|
+
...formBuilderCommon.FORM_BUILDER_COMMON,
|
|
11
|
+
...formBuilderToasts.FORM_BUILDER_TOASTS,
|
|
12
|
+
...formBuilderList.FORM_BUILDER_LIST,
|
|
13
|
+
...formBuilderEditor.FORM_BUILDER_EDITOR,
|
|
14
|
+
...formBuilderSubmissions.FORM_BUILDER_SUBMISSIONS
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
exports.FORM_BUILDER_LOCALIZATION = FORM_BUILDER_LOCALIZATION;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { FORM_BUILDER_COMMON } from './form-builder-common.mjs';
|
|
2
|
+
import { FORM_BUILDER_TOASTS } from './form-builder-toasts.mjs';
|
|
3
|
+
import { FORM_BUILDER_LIST } from './form-builder-list.mjs';
|
|
4
|
+
import { FORM_BUILDER_EDITOR } from './form-builder-editor.mjs';
|
|
5
|
+
import { FORM_BUILDER_SUBMISSIONS } from './form-builder-submissions.mjs';
|
|
6
|
+
|
|
7
|
+
const FORM_BUILDER_LOCALIZATION = {
|
|
8
|
+
...FORM_BUILDER_COMMON,
|
|
9
|
+
...FORM_BUILDER_TOASTS,
|
|
10
|
+
...FORM_BUILDER_LIST,
|
|
11
|
+
...FORM_BUILDER_EDITOR,
|
|
12
|
+
...FORM_BUILDER_SUBMISSIONS
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export { FORM_BUILDER_LOCALIZATION };
|
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
const React = require('react');
|
|
5
|
+
const client = require('@btst/stack/plugins/client');
|
|
6
|
+
const yar = require('@btst/yar');
|
|
7
|
+
const plugins_formBuilder_queryKeys = require('../../../../../../plugins/form-builder/query-keys.cjs');
|
|
8
|
+
|
|
9
|
+
const FormListPageComponent = React.lazy(
|
|
10
|
+
() => import('./components/pages/form-list-page.cjs').then((m) => ({
|
|
11
|
+
default: m.FormListPageComponent
|
|
12
|
+
}))
|
|
13
|
+
);
|
|
14
|
+
const FormBuilderPageComponent = React.lazy(
|
|
15
|
+
() => import('./components/pages/form-builder-page.cjs').then((m) => ({
|
|
16
|
+
default: m.FormBuilderPageComponent
|
|
17
|
+
}))
|
|
18
|
+
);
|
|
19
|
+
const SubmissionsPageComponent = React.lazy(
|
|
20
|
+
() => import('./components/pages/submissions-page.cjs').then((m) => ({
|
|
21
|
+
default: m.SubmissionsPageComponent
|
|
22
|
+
}))
|
|
23
|
+
);
|
|
24
|
+
function createFormListLoader(config) {
|
|
25
|
+
return async () => {
|
|
26
|
+
if (typeof window === "undefined") {
|
|
27
|
+
const { queryClient, apiBasePath, apiBaseURL, headers, hooks } = config;
|
|
28
|
+
const context = {
|
|
29
|
+
path: "/forms",
|
|
30
|
+
isSSR: true,
|
|
31
|
+
apiBaseURL,
|
|
32
|
+
apiBasePath,
|
|
33
|
+
headers
|
|
34
|
+
};
|
|
35
|
+
try {
|
|
36
|
+
if (hooks?.beforeLoadFormList) {
|
|
37
|
+
const canLoad = await hooks.beforeLoadFormList(context);
|
|
38
|
+
if (!canLoad) {
|
|
39
|
+
throw new Error("Load prevented by beforeLoadFormList hook");
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
const client$1 = client.createApiClient({
|
|
43
|
+
baseURL: apiBaseURL,
|
|
44
|
+
basePath: apiBasePath
|
|
45
|
+
});
|
|
46
|
+
const queries = plugins_formBuilder_queryKeys.createFormBuilderQueryKeys(client$1, headers);
|
|
47
|
+
const limit = 20;
|
|
48
|
+
const listQuery = queries.forms.list({ limit, offset: 0 });
|
|
49
|
+
await queryClient.prefetchInfiniteQuery({
|
|
50
|
+
queryKey: listQuery.queryKey,
|
|
51
|
+
queryFn: async ({ pageParam = 0 }) => {
|
|
52
|
+
const response = await client$1("/forms", {
|
|
53
|
+
method: "GET",
|
|
54
|
+
query: { limit, offset: pageParam },
|
|
55
|
+
headers
|
|
56
|
+
});
|
|
57
|
+
if (typeof response === "object" && response !== null && "error" in response && response.error) {
|
|
58
|
+
throw new Error(String(response.error));
|
|
59
|
+
}
|
|
60
|
+
return response.data;
|
|
61
|
+
},
|
|
62
|
+
initialPageParam: 0
|
|
63
|
+
});
|
|
64
|
+
if (hooks?.afterLoadFormList) {
|
|
65
|
+
await hooks.afterLoadFormList(context);
|
|
66
|
+
}
|
|
67
|
+
const queryState = queryClient.getQueryState(listQuery.queryKey);
|
|
68
|
+
if (queryState?.error && hooks?.onLoadError) {
|
|
69
|
+
const error = queryState.error instanceof Error ? queryState.error : new Error(String(queryState.error));
|
|
70
|
+
await hooks.onLoadError(error, context);
|
|
71
|
+
}
|
|
72
|
+
} catch (error) {
|
|
73
|
+
if (hooks?.onLoadError) {
|
|
74
|
+
await hooks.onLoadError(error, context);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
function createFormBuilderLoader(id, config) {
|
|
81
|
+
return async () => {
|
|
82
|
+
if (typeof window === "undefined") {
|
|
83
|
+
const { queryClient, apiBasePath, apiBaseURL, headers, hooks } = config;
|
|
84
|
+
const context = {
|
|
85
|
+
path: id ? `/forms/${id}/edit` : "/forms/new",
|
|
86
|
+
params: id ? { id } : {},
|
|
87
|
+
isSSR: true,
|
|
88
|
+
apiBaseURL,
|
|
89
|
+
apiBasePath,
|
|
90
|
+
headers
|
|
91
|
+
};
|
|
92
|
+
try {
|
|
93
|
+
if (hooks?.beforeLoadFormBuilder) {
|
|
94
|
+
const canLoad = await hooks.beforeLoadFormBuilder(id, context);
|
|
95
|
+
if (!canLoad) {
|
|
96
|
+
throw new Error("Load prevented by beforeLoadFormBuilder hook");
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
const client$1 = client.createApiClient({
|
|
100
|
+
baseURL: apiBaseURL,
|
|
101
|
+
basePath: apiBasePath
|
|
102
|
+
});
|
|
103
|
+
const queries = plugins_formBuilder_queryKeys.createFormBuilderQueryKeys(client$1, headers);
|
|
104
|
+
if (id) {
|
|
105
|
+
await queryClient.prefetchQuery(queries.forms.byId(id));
|
|
106
|
+
}
|
|
107
|
+
if (hooks?.afterLoadFormBuilder) {
|
|
108
|
+
await hooks.afterLoadFormBuilder(id, context);
|
|
109
|
+
}
|
|
110
|
+
if (id) {
|
|
111
|
+
const queryState = queryClient.getQueryState(
|
|
112
|
+
queries.forms.byId(id).queryKey
|
|
113
|
+
);
|
|
114
|
+
if (queryState?.error && hooks?.onLoadError) {
|
|
115
|
+
const error = queryState.error instanceof Error ? queryState.error : new Error(String(queryState.error));
|
|
116
|
+
await hooks.onLoadError(error, context);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
} catch (error) {
|
|
120
|
+
if (hooks?.onLoadError) {
|
|
121
|
+
await hooks.onLoadError(error, context);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
function createSubmissionsLoader(formId, config) {
|
|
128
|
+
return async () => {
|
|
129
|
+
if (typeof window === "undefined") {
|
|
130
|
+
const { queryClient, apiBasePath, apiBaseURL, headers, hooks } = config;
|
|
131
|
+
const context = {
|
|
132
|
+
path: `/forms/${formId}/submissions`,
|
|
133
|
+
params: { formId },
|
|
134
|
+
isSSR: true,
|
|
135
|
+
apiBaseURL,
|
|
136
|
+
apiBasePath,
|
|
137
|
+
headers
|
|
138
|
+
};
|
|
139
|
+
try {
|
|
140
|
+
if (hooks?.beforeLoadSubmissions) {
|
|
141
|
+
const canLoad = await hooks.beforeLoadSubmissions(formId, context);
|
|
142
|
+
if (!canLoad) {
|
|
143
|
+
throw new Error("Load prevented by beforeLoadSubmissions hook");
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
const client$1 = client.createApiClient({
|
|
147
|
+
baseURL: apiBaseURL,
|
|
148
|
+
basePath: apiBasePath
|
|
149
|
+
});
|
|
150
|
+
const queries = plugins_formBuilder_queryKeys.createFormBuilderQueryKeys(client$1, headers);
|
|
151
|
+
const limit = 20;
|
|
152
|
+
await queryClient.prefetchQuery(queries.forms.byId(formId));
|
|
153
|
+
const submissionsQuery = queries.formSubmissions.list({
|
|
154
|
+
formId,
|
|
155
|
+
limit,
|
|
156
|
+
offset: 0
|
|
157
|
+
});
|
|
158
|
+
await queryClient.prefetchInfiniteQuery({
|
|
159
|
+
queryKey: submissionsQuery.queryKey,
|
|
160
|
+
queryFn: async ({ pageParam = 0 }) => {
|
|
161
|
+
const response = await client$1(
|
|
162
|
+
"/forms/:formId/submissions",
|
|
163
|
+
{
|
|
164
|
+
method: "GET",
|
|
165
|
+
params: { formId },
|
|
166
|
+
query: { limit, offset: pageParam },
|
|
167
|
+
headers
|
|
168
|
+
}
|
|
169
|
+
);
|
|
170
|
+
if (typeof response === "object" && response !== null && "error" in response && response.error) {
|
|
171
|
+
throw new Error(String(response.error));
|
|
172
|
+
}
|
|
173
|
+
return response.data;
|
|
174
|
+
},
|
|
175
|
+
initialPageParam: 0
|
|
176
|
+
});
|
|
177
|
+
if (hooks?.afterLoadSubmissions) {
|
|
178
|
+
await hooks.afterLoadSubmissions(formId, context);
|
|
179
|
+
}
|
|
180
|
+
const formState = queryClient.getQueryState(
|
|
181
|
+
queries.forms.byId(formId).queryKey
|
|
182
|
+
);
|
|
183
|
+
const submissionsState = queryClient.getQueryState(
|
|
184
|
+
submissionsQuery.queryKey
|
|
185
|
+
);
|
|
186
|
+
const queryError = formState?.error || submissionsState?.error;
|
|
187
|
+
if (queryError && hooks?.onLoadError) {
|
|
188
|
+
const error = queryError instanceof Error ? queryError : new Error(String(queryError));
|
|
189
|
+
await hooks.onLoadError(error, context);
|
|
190
|
+
}
|
|
191
|
+
} catch (error) {
|
|
192
|
+
if (hooks?.onLoadError) {
|
|
193
|
+
await hooks.onLoadError(error, context);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
function createFormListMeta() {
|
|
200
|
+
return () => {
|
|
201
|
+
const title = "Forms";
|
|
202
|
+
return [
|
|
203
|
+
{ title },
|
|
204
|
+
{ name: "title", content: title },
|
|
205
|
+
{ name: "robots", content: "noindex" }
|
|
206
|
+
];
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
function createFormBuilderMeta(id, config) {
|
|
210
|
+
return () => {
|
|
211
|
+
const { queryClient, apiBasePath, apiBaseURL } = config;
|
|
212
|
+
let formName = "";
|
|
213
|
+
if (id) {
|
|
214
|
+
const client$1 = client.createApiClient({
|
|
215
|
+
baseURL: apiBaseURL,
|
|
216
|
+
basePath: apiBasePath
|
|
217
|
+
});
|
|
218
|
+
const queries = plugins_formBuilder_queryKeys.createFormBuilderQueryKeys(client$1);
|
|
219
|
+
const form = queryClient.getQueryData(queries.forms.byId(id).queryKey);
|
|
220
|
+
formName = form?.name || "";
|
|
221
|
+
}
|
|
222
|
+
const title = id ? `Edit ${formName || "Form"}` : "New Form";
|
|
223
|
+
return [
|
|
224
|
+
{ title },
|
|
225
|
+
{ name: "title", content: title },
|
|
226
|
+
{ name: "robots", content: "noindex" }
|
|
227
|
+
];
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
function createSubmissionsMeta(formId, config) {
|
|
231
|
+
return () => {
|
|
232
|
+
const { queryClient, apiBasePath, apiBaseURL } = config;
|
|
233
|
+
const client$1 = client.createApiClient({
|
|
234
|
+
baseURL: apiBaseURL,
|
|
235
|
+
basePath: apiBasePath
|
|
236
|
+
});
|
|
237
|
+
const queries = plugins_formBuilder_queryKeys.createFormBuilderQueryKeys(client$1);
|
|
238
|
+
const form = queryClient.getQueryData(
|
|
239
|
+
queries.forms.byId(formId).queryKey
|
|
240
|
+
);
|
|
241
|
+
const title = form?.name ? `${form.name} Submissions` : "Submissions";
|
|
242
|
+
return [
|
|
243
|
+
{ title },
|
|
244
|
+
{ name: "title", content: title },
|
|
245
|
+
{ name: "robots", content: "noindex" }
|
|
246
|
+
];
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
const formBuilderClientPlugin = (config) => client.defineClientPlugin({
|
|
250
|
+
name: "form-builder",
|
|
251
|
+
routes: () => ({
|
|
252
|
+
formList: yar.createRoute("/forms", () => ({
|
|
253
|
+
PageComponent: () => /* @__PURE__ */ jsxRuntime.jsx(FormListPageComponent, {}),
|
|
254
|
+
loader: createFormListLoader(config),
|
|
255
|
+
meta: createFormListMeta()
|
|
256
|
+
})),
|
|
257
|
+
newForm: yar.createRoute("/forms/new", () => ({
|
|
258
|
+
PageComponent: () => /* @__PURE__ */ jsxRuntime.jsx(FormBuilderPageComponent, {}),
|
|
259
|
+
loader: createFormBuilderLoader(void 0, config),
|
|
260
|
+
meta: createFormBuilderMeta(void 0, config)
|
|
261
|
+
})),
|
|
262
|
+
editForm: yar.createRoute("/forms/:id/edit", ({ params }) => ({
|
|
263
|
+
PageComponent: () => /* @__PURE__ */ jsxRuntime.jsx(FormBuilderPageComponent, { id: params.id }),
|
|
264
|
+
loader: createFormBuilderLoader(params.id, config),
|
|
265
|
+
meta: createFormBuilderMeta(params.id, config)
|
|
266
|
+
})),
|
|
267
|
+
submissions: yar.createRoute("/forms/:id/submissions", ({ params }) => ({
|
|
268
|
+
PageComponent: () => /* @__PURE__ */ jsxRuntime.jsx(SubmissionsPageComponent, { formId: params.id }),
|
|
269
|
+
loader: createSubmissionsLoader(params.id, config),
|
|
270
|
+
meta: createSubmissionsMeta(params.id, config)
|
|
271
|
+
}))
|
|
272
|
+
}),
|
|
273
|
+
sitemap: async () => {
|
|
274
|
+
return [];
|
|
275
|
+
}
|
|
276
|
+
});
|
|
277
|
+
|
|
278
|
+
exports.formBuilderClientPlugin = formBuilderClientPlugin;
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { lazy } from 'react';
|
|
3
|
+
import { defineClientPlugin, createApiClient } from '@btst/stack/plugins/client';
|
|
4
|
+
import { createRoute } from '@btst/yar';
|
|
5
|
+
import { createFormBuilderQueryKeys } from '../../../../../../plugins/form-builder/query-keys.mjs';
|
|
6
|
+
|
|
7
|
+
const FormListPageComponent = lazy(
|
|
8
|
+
() => import('./components/pages/form-list-page.mjs').then((m) => ({
|
|
9
|
+
default: m.FormListPageComponent
|
|
10
|
+
}))
|
|
11
|
+
);
|
|
12
|
+
const FormBuilderPageComponent = lazy(
|
|
13
|
+
() => import('./components/pages/form-builder-page.mjs').then((m) => ({
|
|
14
|
+
default: m.FormBuilderPageComponent
|
|
15
|
+
}))
|
|
16
|
+
);
|
|
17
|
+
const SubmissionsPageComponent = lazy(
|
|
18
|
+
() => import('./components/pages/submissions-page.mjs').then((m) => ({
|
|
19
|
+
default: m.SubmissionsPageComponent
|
|
20
|
+
}))
|
|
21
|
+
);
|
|
22
|
+
function createFormListLoader(config) {
|
|
23
|
+
return async () => {
|
|
24
|
+
if (typeof window === "undefined") {
|
|
25
|
+
const { queryClient, apiBasePath, apiBaseURL, headers, hooks } = config;
|
|
26
|
+
const context = {
|
|
27
|
+
path: "/forms",
|
|
28
|
+
isSSR: true,
|
|
29
|
+
apiBaseURL,
|
|
30
|
+
apiBasePath,
|
|
31
|
+
headers
|
|
32
|
+
};
|
|
33
|
+
try {
|
|
34
|
+
if (hooks?.beforeLoadFormList) {
|
|
35
|
+
const canLoad = await hooks.beforeLoadFormList(context);
|
|
36
|
+
if (!canLoad) {
|
|
37
|
+
throw new Error("Load prevented by beforeLoadFormList hook");
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
const client = createApiClient({
|
|
41
|
+
baseURL: apiBaseURL,
|
|
42
|
+
basePath: apiBasePath
|
|
43
|
+
});
|
|
44
|
+
const queries = createFormBuilderQueryKeys(client, headers);
|
|
45
|
+
const limit = 20;
|
|
46
|
+
const listQuery = queries.forms.list({ limit, offset: 0 });
|
|
47
|
+
await queryClient.prefetchInfiniteQuery({
|
|
48
|
+
queryKey: listQuery.queryKey,
|
|
49
|
+
queryFn: async ({ pageParam = 0 }) => {
|
|
50
|
+
const response = await client("/forms", {
|
|
51
|
+
method: "GET",
|
|
52
|
+
query: { limit, offset: pageParam },
|
|
53
|
+
headers
|
|
54
|
+
});
|
|
55
|
+
if (typeof response === "object" && response !== null && "error" in response && response.error) {
|
|
56
|
+
throw new Error(String(response.error));
|
|
57
|
+
}
|
|
58
|
+
return response.data;
|
|
59
|
+
},
|
|
60
|
+
initialPageParam: 0
|
|
61
|
+
});
|
|
62
|
+
if (hooks?.afterLoadFormList) {
|
|
63
|
+
await hooks.afterLoadFormList(context);
|
|
64
|
+
}
|
|
65
|
+
const queryState = queryClient.getQueryState(listQuery.queryKey);
|
|
66
|
+
if (queryState?.error && hooks?.onLoadError) {
|
|
67
|
+
const error = queryState.error instanceof Error ? queryState.error : new Error(String(queryState.error));
|
|
68
|
+
await hooks.onLoadError(error, context);
|
|
69
|
+
}
|
|
70
|
+
} catch (error) {
|
|
71
|
+
if (hooks?.onLoadError) {
|
|
72
|
+
await hooks.onLoadError(error, context);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
function createFormBuilderLoader(id, config) {
|
|
79
|
+
return async () => {
|
|
80
|
+
if (typeof window === "undefined") {
|
|
81
|
+
const { queryClient, apiBasePath, apiBaseURL, headers, hooks } = config;
|
|
82
|
+
const context = {
|
|
83
|
+
path: id ? `/forms/${id}/edit` : "/forms/new",
|
|
84
|
+
params: id ? { id } : {},
|
|
85
|
+
isSSR: true,
|
|
86
|
+
apiBaseURL,
|
|
87
|
+
apiBasePath,
|
|
88
|
+
headers
|
|
89
|
+
};
|
|
90
|
+
try {
|
|
91
|
+
if (hooks?.beforeLoadFormBuilder) {
|
|
92
|
+
const canLoad = await hooks.beforeLoadFormBuilder(id, context);
|
|
93
|
+
if (!canLoad) {
|
|
94
|
+
throw new Error("Load prevented by beforeLoadFormBuilder hook");
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
const client = createApiClient({
|
|
98
|
+
baseURL: apiBaseURL,
|
|
99
|
+
basePath: apiBasePath
|
|
100
|
+
});
|
|
101
|
+
const queries = createFormBuilderQueryKeys(client, headers);
|
|
102
|
+
if (id) {
|
|
103
|
+
await queryClient.prefetchQuery(queries.forms.byId(id));
|
|
104
|
+
}
|
|
105
|
+
if (hooks?.afterLoadFormBuilder) {
|
|
106
|
+
await hooks.afterLoadFormBuilder(id, context);
|
|
107
|
+
}
|
|
108
|
+
if (id) {
|
|
109
|
+
const queryState = queryClient.getQueryState(
|
|
110
|
+
queries.forms.byId(id).queryKey
|
|
111
|
+
);
|
|
112
|
+
if (queryState?.error && hooks?.onLoadError) {
|
|
113
|
+
const error = queryState.error instanceof Error ? queryState.error : new Error(String(queryState.error));
|
|
114
|
+
await hooks.onLoadError(error, context);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
} catch (error) {
|
|
118
|
+
if (hooks?.onLoadError) {
|
|
119
|
+
await hooks.onLoadError(error, context);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
function createSubmissionsLoader(formId, config) {
|
|
126
|
+
return async () => {
|
|
127
|
+
if (typeof window === "undefined") {
|
|
128
|
+
const { queryClient, apiBasePath, apiBaseURL, headers, hooks } = config;
|
|
129
|
+
const context = {
|
|
130
|
+
path: `/forms/${formId}/submissions`,
|
|
131
|
+
params: { formId },
|
|
132
|
+
isSSR: true,
|
|
133
|
+
apiBaseURL,
|
|
134
|
+
apiBasePath,
|
|
135
|
+
headers
|
|
136
|
+
};
|
|
137
|
+
try {
|
|
138
|
+
if (hooks?.beforeLoadSubmissions) {
|
|
139
|
+
const canLoad = await hooks.beforeLoadSubmissions(formId, context);
|
|
140
|
+
if (!canLoad) {
|
|
141
|
+
throw new Error("Load prevented by beforeLoadSubmissions hook");
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
const client = createApiClient({
|
|
145
|
+
baseURL: apiBaseURL,
|
|
146
|
+
basePath: apiBasePath
|
|
147
|
+
});
|
|
148
|
+
const queries = createFormBuilderQueryKeys(client, headers);
|
|
149
|
+
const limit = 20;
|
|
150
|
+
await queryClient.prefetchQuery(queries.forms.byId(formId));
|
|
151
|
+
const submissionsQuery = queries.formSubmissions.list({
|
|
152
|
+
formId,
|
|
153
|
+
limit,
|
|
154
|
+
offset: 0
|
|
155
|
+
});
|
|
156
|
+
await queryClient.prefetchInfiniteQuery({
|
|
157
|
+
queryKey: submissionsQuery.queryKey,
|
|
158
|
+
queryFn: async ({ pageParam = 0 }) => {
|
|
159
|
+
const response = await client(
|
|
160
|
+
"/forms/:formId/submissions",
|
|
161
|
+
{
|
|
162
|
+
method: "GET",
|
|
163
|
+
params: { formId },
|
|
164
|
+
query: { limit, offset: pageParam },
|
|
165
|
+
headers
|
|
166
|
+
}
|
|
167
|
+
);
|
|
168
|
+
if (typeof response === "object" && response !== null && "error" in response && response.error) {
|
|
169
|
+
throw new Error(String(response.error));
|
|
170
|
+
}
|
|
171
|
+
return response.data;
|
|
172
|
+
},
|
|
173
|
+
initialPageParam: 0
|
|
174
|
+
});
|
|
175
|
+
if (hooks?.afterLoadSubmissions) {
|
|
176
|
+
await hooks.afterLoadSubmissions(formId, context);
|
|
177
|
+
}
|
|
178
|
+
const formState = queryClient.getQueryState(
|
|
179
|
+
queries.forms.byId(formId).queryKey
|
|
180
|
+
);
|
|
181
|
+
const submissionsState = queryClient.getQueryState(
|
|
182
|
+
submissionsQuery.queryKey
|
|
183
|
+
);
|
|
184
|
+
const queryError = formState?.error || submissionsState?.error;
|
|
185
|
+
if (queryError && hooks?.onLoadError) {
|
|
186
|
+
const error = queryError instanceof Error ? queryError : new Error(String(queryError));
|
|
187
|
+
await hooks.onLoadError(error, context);
|
|
188
|
+
}
|
|
189
|
+
} catch (error) {
|
|
190
|
+
if (hooks?.onLoadError) {
|
|
191
|
+
await hooks.onLoadError(error, context);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
function createFormListMeta() {
|
|
198
|
+
return () => {
|
|
199
|
+
const title = "Forms";
|
|
200
|
+
return [
|
|
201
|
+
{ title },
|
|
202
|
+
{ name: "title", content: title },
|
|
203
|
+
{ name: "robots", content: "noindex" }
|
|
204
|
+
];
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
function createFormBuilderMeta(id, config) {
|
|
208
|
+
return () => {
|
|
209
|
+
const { queryClient, apiBasePath, apiBaseURL } = config;
|
|
210
|
+
let formName = "";
|
|
211
|
+
if (id) {
|
|
212
|
+
const client = createApiClient({
|
|
213
|
+
baseURL: apiBaseURL,
|
|
214
|
+
basePath: apiBasePath
|
|
215
|
+
});
|
|
216
|
+
const queries = createFormBuilderQueryKeys(client);
|
|
217
|
+
const form = queryClient.getQueryData(queries.forms.byId(id).queryKey);
|
|
218
|
+
formName = form?.name || "";
|
|
219
|
+
}
|
|
220
|
+
const title = id ? `Edit ${formName || "Form"}` : "New Form";
|
|
221
|
+
return [
|
|
222
|
+
{ title },
|
|
223
|
+
{ name: "title", content: title },
|
|
224
|
+
{ name: "robots", content: "noindex" }
|
|
225
|
+
];
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
function createSubmissionsMeta(formId, config) {
|
|
229
|
+
return () => {
|
|
230
|
+
const { queryClient, apiBasePath, apiBaseURL } = config;
|
|
231
|
+
const client = createApiClient({
|
|
232
|
+
baseURL: apiBaseURL,
|
|
233
|
+
basePath: apiBasePath
|
|
234
|
+
});
|
|
235
|
+
const queries = createFormBuilderQueryKeys(client);
|
|
236
|
+
const form = queryClient.getQueryData(
|
|
237
|
+
queries.forms.byId(formId).queryKey
|
|
238
|
+
);
|
|
239
|
+
const title = form?.name ? `${form.name} Submissions` : "Submissions";
|
|
240
|
+
return [
|
|
241
|
+
{ title },
|
|
242
|
+
{ name: "title", content: title },
|
|
243
|
+
{ name: "robots", content: "noindex" }
|
|
244
|
+
];
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
const formBuilderClientPlugin = (config) => defineClientPlugin({
|
|
248
|
+
name: "form-builder",
|
|
249
|
+
routes: () => ({
|
|
250
|
+
formList: createRoute("/forms", () => ({
|
|
251
|
+
PageComponent: () => /* @__PURE__ */ jsx(FormListPageComponent, {}),
|
|
252
|
+
loader: createFormListLoader(config),
|
|
253
|
+
meta: createFormListMeta()
|
|
254
|
+
})),
|
|
255
|
+
newForm: createRoute("/forms/new", () => ({
|
|
256
|
+
PageComponent: () => /* @__PURE__ */ jsx(FormBuilderPageComponent, {}),
|
|
257
|
+
loader: createFormBuilderLoader(void 0, config),
|
|
258
|
+
meta: createFormBuilderMeta(void 0, config)
|
|
259
|
+
})),
|
|
260
|
+
editForm: createRoute("/forms/:id/edit", ({ params }) => ({
|
|
261
|
+
PageComponent: () => /* @__PURE__ */ jsx(FormBuilderPageComponent, { id: params.id }),
|
|
262
|
+
loader: createFormBuilderLoader(params.id, config),
|
|
263
|
+
meta: createFormBuilderMeta(params.id, config)
|
|
264
|
+
})),
|
|
265
|
+
submissions: createRoute("/forms/:id/submissions", ({ params }) => ({
|
|
266
|
+
PageComponent: () => /* @__PURE__ */ jsx(SubmissionsPageComponent, { formId: params.id }),
|
|
267
|
+
loader: createSubmissionsLoader(params.id, config),
|
|
268
|
+
meta: createSubmissionsMeta(params.id, config)
|
|
269
|
+
}))
|
|
270
|
+
}),
|
|
271
|
+
sitemap: async () => {
|
|
272
|
+
return [];
|
|
273
|
+
}
|
|
274
|
+
});
|
|
275
|
+
|
|
276
|
+
export { formBuilderClientPlugin };
|