better code: better types
Massimo Melina committed
Jan 7, 2023 at 18:53 UTC
75ab02ff177da5d59834e384911a872b5692f5fc
2 files changed
+13
-13
mui-grid-form/src/Form.ts
+12
-12
@@ -46,7 +46,7 @@ export interface FieldProps<T> {
46
value?: T
47
onChange: (v: T, more: { was?: T, event: any, [rest: string]: any }) => void
48
getApi?: (api: FieldApi) => void
49
- error?: true
49
+ error?: boolean
50
helperText?: ReactNode
51
[rest: string]: any
52
}
@@ -57,8 +57,8 @@ export interface FormProps<Values> extends Partial<BoxProps> {
57
fields: (FieldDescriptor | ReactElement | null | undefined | false)[]
58
defaults?: (f:FieldDescriptor) => any
59
values: Values
60
- set: (v: any, fieldK: string) => void
61
- save: Partial<Parameters<typeof Button>[0]> | (()=>any)
60
+ set: (v: any, fieldK: keyof Values) => void
61
+ save: false | Partial<Parameters<typeof Button>[0]> | (()=>any)
62
stickyBar?: boolean
63
addToBar?: ReactNode[]
64
barSx?: Dict
@@ -107,7 +107,7 @@ export function Form<Values extends Dict>({
107
ev.preventDefault()
108
},
109
onKeyDown(ev) {
110
- if (!saveBtn.disabled && (ev.ctrlKey || ev.metaKey) && ev.key === 'Enter')
110
+ if (saveBtn && !saveBtn.disabled && (ev.ctrlKey || ev.metaKey) && ev.key === 'Enter')
111
pleaseSubmit()
112
}
113
},
@@ -141,7 +141,7 @@ export function Form<Values extends Dict>({
141
if (saveOnEnter && event.key === 'Enter')
142
pleaseSubmit()
143
},
144
- onChange(v) {
144
+ onChange(v: unknown) {
145
try {
146
v = fromField(v)
147
setFieldExceptions(x => ({ ...x, [k]: false }))
@@ -174,12 +174,12 @@ export function Form<Values extends Dict>({
174
})
175
),
176
saveBtn && h(Box, {
177
- display: 'flex',
178
- alignItems: 'center',
179
- sx: Object.assign({},
180
- stickyBar && { width: 'fit-content', zIndex: 2, backgroundColor: 'background.paper', position: 'sticky', bottom: 0, p: 1, m: -1 },
181
- barSx)
182
- },
177
+ display: 'flex',
178
+ alignItems: 'center',
179
+ sx: Object.assign({},
180
+ stickyBar && { width: 'fit-content', zIndex: 2, backgroundColor: 'background.paper', borderRadius: 1, position: 'sticky', bottom: 0, p: 1, m: -1 },
181
+ barSx)
182
+ },
183
h(LoadingButton, {
184
variant: 'contained',
185
startIcon: h(Save),
@@ -226,7 +226,7 @@ export function Form<Values extends Dict>({
226
if (!submitAfterValidation.current) return
227
if (Object.values(errs).some(Boolean))
228
return await onError?.(MSG)
229
- const cb = saveBtn.onClick
229
+ const cb = saveBtn && saveBtn.onClick
230
if (cb) // @ts-ignore
231
await cb()
232
}
mui-grid-form/src/misc-fields.ts
+1
-1
@@ -53,7 +53,7 @@ export function BoolField({ label='', value, onChange, getApi, helperText, error
53
onChange(event.target.checked, { event, was: value })
54
}
55
})
56
- return h(Box, { ml: 1, mt: 1, sx: error && { color: 'error.main', outlineOffset: 6, outline: '1px solid' } },
56
+ return h(Box, { ml: 1, mt: 1, sx: error ? { color: 'error.main', outlineOffset: 6, outline: '1px solid' } : undefined },
57
h(FormControlLabel, { label, control, labelPlacement: 'end' }),
58
helperText && h(FormHelperText, { error }, helperText)
59
)