Skip to content
This repository was archived by the owner on Jul 30, 2024. It is now read-only.

Commit cd964ec

Browse files
authored
feat: Support disabled fields (#18)
* feat: Support disabled fields * fix: Lint error
1 parent a0a0bc3 commit cd964ec

File tree

9 files changed

+30
-2
lines changed

9 files changed

+30
-2
lines changed

packages/react-forms/src/lib/error-helper/error-helper.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { PropsWithChildren, ReactNode } from 'react';
1+
import { ReactNode } from 'react';
22
import { Helper } from '@heetch/flamingo-react';
33
import styles from './error-helper.module.scss';
44

packages/react-forms/src/lib/form-field-boolean-renderer/form-field-boolean-renderer.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ export function FormFieldBooleanRenderer({
2929
checked: fieldProps.value,
3030
helper: fieldState?.error ? fieldState.error.message : field.helper,
3131
invalid: !!fieldState?.error,
32+
disabled: field.disabled,
3233
};
3334

3435
return field.format === 'toggle' ? (

packages/react-forms/src/lib/form-field-date-renderer/form-field-date-renderer.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ export function FormFieldDateRenderer({
5151
value: fieldProps.value !== undefined ? fieldProps.value : '',
5252
placeholder: placeholder || '',
5353
invalid: !!fieldState?.error,
54+
disabled: field.disabled,
5455
};
5556

5657
const helper = fieldState?.error ? undefined : field.helper;

packages/react-forms/src/lib/form-field-file-renderer/form-field-file-renderer.stories.tsx

+8
Original file line numberDiff line numberDiff line change
@@ -94,3 +94,11 @@ Validation.args = {
9494
],
9595
},
9696
};
97+
98+
export const Disabled = Template.bind({});
99+
Disabled.args = {
100+
field: {
101+
...base,
102+
disabled: true,
103+
},
104+
};

packages/react-forms/src/lib/form-field-file-renderer/form-field-file-renderer.tsx

+2-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ export function FormFieldFileRenderer({
4848
? (fieldProps.value as File[])
4949
: undefined;
5050

51-
const showAddButton = field.multiple || (files || []).length < 1;
51+
const showAddButton = !field.disabled && (field.multiple || (files || []).length < 1);
5252

5353
const deleteFile = (file: File) => {
5454
const remainingFiles = files?.filter((f) => f !== file) || [];
@@ -97,6 +97,7 @@ export function FormFieldFileRenderer({
9797
accept={field.accepts}
9898
onChange={(e) => addFiles(e.target.files)}
9999
className={classNames.field.file.input}
100+
disabled={field.disabled}
100101
/>
101102
{showAddButton && (
102103
<Button

packages/react-forms/src/lib/form-field-number-renderer/form-field-number-renderer.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ function NumberFieldRenderer({
101101
min,
102102
max,
103103
className: classNames.field.number,
104+
disabled: field.disabled,
104105
};
105106

106107
return <InputField {...props} />;

packages/react-forms/src/lib/form-field-string-renderer/form-field-string-renderer.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ export function FormFieldStringRenderer({
3737
placeholder,
3838
helper: fieldState?.error ? fieldState.error.message : field.helper,
3939
invalid: !!fieldState?.error,
40+
disabled: field.disabled,
4041
};
4142

4243
switch (field.format) {

packages/react-forms/src/lib/form-renderer/form-renderer.stories.tsx

+14
Original file line numberDiff line numberDiff line change
@@ -312,3 +312,17 @@ Autofill.play = async () => {
312312
}
313313
);
314314
};
315+
316+
317+
export const DisabledFields = Template.bind({});
318+
DisabledFields.args = {
319+
fields: fields.map(f => ({...f, disabled: true})) as FormField[],
320+
values: {
321+
name: 'Al Capone',
322+
323+
country: 'fr',
324+
notifications: true,
325+
'notifications-delay': 42,
326+
birthdate: new Date('1899-01-17'),
327+
},
328+
};

packages/react-forms/src/types/fields.ts

+1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ type FormField_<T extends FormFieldType, K extends string> = {
2828
label: string;
2929
placeholder?: string;
3030
helper?: string;
31+
disabled?: boolean;
3132
};
3233

3334
export type FormFieldBoolean<K extends string = string> = FormField_<

0 commit comments

Comments
 (0)