@functionalcms/svelte-components 5.24.5 → 5.24.7

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.
@@ -128,4 +128,5 @@ export type ButtonConfig = {
128
128
  class?: string;
129
129
  action?: (event: Event) => Promise<void>;
130
130
  };
131
+ export declare function convertResponseToFieldsFromFormData(fields: Array<Field>, formData: FormData): any;
131
132
  export declare function convertResponseToFields(fields: Array<Field>, request: Request): Promise<any>;
@@ -124,8 +124,7 @@ export function createEditorField(id, label, type, value) {
124
124
  typeOfField: type,
125
125
  };
126
126
  }
127
- export async function convertResponseToFields(fields, request) {
128
- const formData = await request.formData();
127
+ export function convertResponseToFieldsFromFormData(fields, formData) {
129
128
  let result = {};
130
129
  for (const field of fields) {
131
130
  const value = formData.get(field.id);
@@ -133,3 +132,7 @@ export async function convertResponseToFields(fields, request) {
133
132
  }
134
133
  return result;
135
134
  }
135
+ export async function convertResponseToFields(fields, request) {
136
+ const formData = await request.formData();
137
+ return convertResponseToFieldsFromFormData(fields, formData);
138
+ }
package/dist/index.d.ts CHANGED
@@ -11,7 +11,7 @@ export { default as Well } from './components/presentation/Well.svelte';
11
11
  export { default as FlexBox } from './components/presentation/FlexBox.svelte';
12
12
  export { default as StyleBox } from './components/presentation/StyleBox.svelte';
13
13
  export { default as ImageCompare } from './components/presentation/ImageCompare.svelte';
14
- export { InputType, type Field, type InputField, type TextareaField, type CollectionField, type SelectField, type FilePickerField, type TimePickerField, type PhoneInputField, type DatePickerField, type DropzoneField, type HiddenField, type ButtonConfig, type MarkdownEditorField, type HtmlEditorField, SubmitResult, createInputField, createTextareaField, createFilePickerField, createCollectionField, createSelectField, createTimePickerField, createPhoneInputField, createHiddenField, createDatePickerField, createEditorField, convertResponseToFields, } from './components/form/form.js';
14
+ export { InputType, type Field, type InputField, type TextareaField, type CollectionField, type SelectField, type FilePickerField, type TimePickerField, type PhoneInputField, type DatePickerField, type DropzoneField, type HiddenField, type ButtonConfig, type MarkdownEditorField, type HtmlEditorField, SubmitResult, createInputField, createTextareaField, createFilePickerField, createCollectionField, createSelectField, createTimePickerField, createPhoneInputField, createHiddenField, createDatePickerField, createEditorField, convertResponseToFields, convertResponseToFieldsFromFormData, } from './components/form/form.js';
15
15
  export { default as AntiBot } from './components/form/AntiBot.svelte';
16
16
  export { default as SmartForm } from './components/form/SmartForm.svelte';
17
17
  export { default as EasyTools } from './components/integrations/EasyTools.svelte';
package/dist/index.js CHANGED
@@ -10,7 +10,7 @@ export { default as Well } from './components/presentation/Well.svelte';
10
10
  export { default as FlexBox } from './components/presentation/FlexBox.svelte';
11
11
  export { default as StyleBox } from './components/presentation/StyleBox.svelte';
12
12
  export { default as ImageCompare } from './components/presentation/ImageCompare.svelte';
13
- export { InputType, SubmitResult, createInputField, createTextareaField, createFilePickerField, createCollectionField, createSelectField, createTimePickerField, createPhoneInputField, createHiddenField, createDatePickerField, createEditorField, convertResponseToFields, } from './components/form/form.js';
13
+ export { InputType, SubmitResult, createInputField, createTextareaField, createFilePickerField, createCollectionField, createSelectField, createTimePickerField, createPhoneInputField, createHiddenField, createDatePickerField, createEditorField, convertResponseToFields, convertResponseToFieldsFromFormData, } from './components/form/form.js';
14
14
  export { default as AntiBot } from './components/form/AntiBot.svelte';
15
15
  export { default as SmartForm } from './components/form/SmartForm.svelte';
16
16
  export { default as EasyTools } from './components/integrations/EasyTools.svelte';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@functionalcms/svelte-components",
3
- "version": "5.24.5",
3
+ "version": "5.24.7",
4
4
  "license": "MIT",
5
5
  "watch": {
6
6
  "build": {
@@ -1,30 +1,45 @@
1
1
  import { DOMAIN } from '$env/static/private';
2
2
  import { getUsersService } from '@functionalcms/svelte-components/index-server.js';
3
- import { convertResponseToFields } from '@functionalcms/svelte-components';
3
+ import { convertResponseToFieldsFromFormData } from '@functionalcms/svelte-components';
4
4
  import { fields } from './fields';
5
5
  import * as m from "$lib/paraglide/messages.js";
6
6
 
7
7
  /** @type {import('./$types').PageServerLoad} */
8
8
  export async function load({ params, locals, url }) {
9
9
  const username = params.email;
10
- return { username, success: false };
10
+ const code = url.searchParams.get("code");
11
+ return { username, code: code, success: false };
12
+ }
13
+
14
+ function convertResponseToFieldsFromFormData(fields: Array<Field>, formData: FormData) {
15
+ let result: any = {};
16
+
17
+ for (const field of fields) {
18
+ const value = formData.get(field.id);
19
+ result[field.id] = value;
20
+ }
21
+
22
+ return result;
11
23
  }
12
24
 
13
25
  export const actions = {
14
26
  setup: async ({ request, locals, params, url }) => {
15
27
  const userService = getUsersService(locals);
16
- const code = url.searchParams.get("code");
17
28
 
18
- const data = await convertResponseToFields(fields, request);
29
+ const formData = await request.formData();
30
+ const code = formData.get("code")
31
+
32
+ const data = convertResponseToFieldsFromFormData(fields(code), formData);
19
33
 
20
34
  if (data.password != data.confirm) {
21
35
  return {
36
+ code: data.code,
22
37
  errors: new Map<string, string>([["confirm", m.auth_password_do_not_match()]])
23
38
  }
24
39
  }
25
40
 
26
- const result = await userService.setup(DOMAIN, params.email);
41
+ const result = await userService.setup(DOMAIN, params.email, data.code, data.password);
27
42
 
28
- return { success: true };
43
+ return { code: data.code,success: true };
29
44
  },
30
45
  };
@@ -1,72 +1,72 @@
1
- <script lang="ts">
2
- import { SmartForm } from '@functionalcms/svelte-components';
3
- import * as m from '$lib/paraglide/messages.js';
4
- import { deserialize } from '$app/forms';
5
- import { fields } from './fields.js';
1
+ <script lang="ts">
2
+ import { SmartForm } from '@functionalcms/svelte-components';
3
+ import * as m from '$lib/paraglide/messages.js';
4
+ import { deserialize } from '$app/forms';
5
+ import { fields } from './fields.js';
6
6
 
7
- interface Props {
8
- data: {
9
- username: string | null;
10
- errors: string;
11
- };
12
- form: any;
13
- }
7
+ interface Props {
8
+ data: {
9
+ username: string | null;
10
+ errors: string;
11
+ };
12
+ form: any;
13
+ }
14
14
 
15
- let { data, form = {} } = $props();
15
+ let { data, form = {} } = $props();
16
16
 
17
- let submitError = $state(false);
17
+ let submitError = $state(false);
18
18
 
19
- let isProcesing = $state(false);
20
- let resultMessage = $state('');
19
+ let isProcesing = $state(false);
20
+ let resultMessage = $state('');
21
21
 
22
- async function resetPassword() {
23
- isProcesing = true;
24
- submitError = false;
22
+ async function resetPassword() {
23
+ isProcesing = true;
24
+ submitError = false;
25
25
 
26
- const response = await fetch('?/setup', {
27
- method: 'POST',
28
- body: ''
29
- });
26
+ const response = await fetch('?/setup', {
27
+ method: 'POST',
28
+ body: ''
29
+ });
30
30
 
31
- const result = deserialize(await response.text());
31
+ const result = deserialize(await response.text());
32
32
 
33
- resultMessage = result.type === 'success' ? m.auth_setup_success() : m.auth_setup_failure();
33
+ resultMessage = result.type === 'success' ? m.auth_setup_success() : m.auth_setup_failure();
34
34
 
35
- isProcesing = false;
36
- }
37
- </script>
35
+ isProcesing = false;
36
+ }
37
+ </script>
38
38
 
39
- <article class="w-full">
40
- <main class="flex flex-col justify-around items-center gap-4 w-full m-auto p-4">
41
- <h1>{m.auth_setup_title()}</h1>
42
- {#if !data.username}
43
- <p>{m.auth_setup_missing_code()}</p>
44
- {:else}
45
- <div>
46
- {@html m.auth_setup_into()}
47
- </div>
48
- <SmartForm
49
- {fields}
50
- errors={form?.errors}
51
- action="?/setup"
52
- buttons={[
53
- {
54
- type: 'submit',
55
- label: m.auth_submit(),
56
- color: 'primary'
57
- }
58
- ]}
59
- />
60
- {#if resultMessage != ''}
61
- <p>{resultMessage}</p>
62
- {/if}
39
+ <article class="w-full">
40
+ <main class="flex flex-col justify-around items-center gap-4 w-full m-auto p-4">
41
+ <h1>{m.auth_setup_title()}</h1>
42
+ {#if !data.username}
43
+ <p>{m.auth_setup_missing_code()}</p>
44
+ {:else}
45
+ <div>
46
+ {@html m.auth_setup_into()}
47
+ </div>
48
+ <SmartForm
49
+ fields={fields(data.code ?? form.code)}
50
+ errors={form?.errors}
51
+ action="?/setup"
52
+ buttons={[
53
+ {
54
+ type: 'submit',
55
+ label: m.auth_submit(),
56
+ color: 'primary'
57
+ }
58
+ ]}
59
+ />
60
+ {#if resultMessage != ''}
61
+ <p>{resultMessage}</p>
62
+ {/if}
63
63
 
64
- {#if submitError}
65
- <p class="text-red-600">{m.auth_setup_error()}</p>
66
- {/if}
67
- {/if}
68
- </main>
69
- </article>
64
+ {#if submitError}
65
+ <p class="text-red-600">{m.auth_setup_error()}</p>
66
+ {/if}
67
+ {/if}
68
+ </main>
69
+ </article>
70
70
 
71
- <style>
72
- </style>
71
+ <style>
72
+ </style>
@@ -1,7 +1,7 @@
1
1
  import { m } from "$lib/paraglide/messages";
2
- import { createInputField, InputType } from "@functionalcms/svelte-components";
2
+ import { createHiddenField, createInputField, InputType } from "@functionalcms/svelte-components";
3
3
 
4
- export const fields = [
4
+ export const fields = (code: string) => [
5
5
  createInputField(
6
6
  "password",
7
7
  m.auth_password(),
@@ -20,4 +20,8 @@ export const fields = [
20
20
  required: true,
21
21
  },
22
22
  ),
23
+ createHiddenField(
24
+ "code",
25
+ code
26
+ )
23
27
  ];