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 )