-
Julian Dominguez-Schatz authored
* Correct table usage of `onBlur` * Add basic spreadsheet typing structure * Move to different module * Add account typing * Add release notes * Fix lint * Remove unneeded diff * PR feedback
Julian Dominguez-Schatz authored* Correct table usage of `onBlur` * Add basic spreadsheet typing structure * Move to different module * Add account typing * Add release notes * Fix lint * Remove unneeded diff * PR feedback
index.ts 1.15 KiB
import { type Query } from 'loot-core/src/shared/query';
export type Spreadsheets = {
account: {
// Common fields
'uncategorized-amount': number;
'uncategorized-balance': number;
// Account fields
balance: number;
'accounts-balance': number;
'budgeted-accounts-balance': number;
'offbudget-accounts-balance': number;
balanceCleared: number;
balanceUncleared: number;
};
};
export type SheetNames = keyof Spreadsheets & string;
export type SheetFields<SheetName extends SheetNames> =
keyof Spreadsheets[SheetName] & string;
export type Binding<
// eslint-disable-next-line @typescript-eslint/no-explicit-any
SheetName extends SheetNames = any,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
SheetFieldName extends SheetFields<SheetName> = any,
> =
| SheetFieldName
| {
name: SheetFieldName;
value?: Spreadsheets[SheetName][SheetFieldName];
query?: Query;
};
export const parametrizedField =
<SheetName extends SheetNames>() =>
<SheetFieldName extends SheetFields<SheetName>>(field: SheetFieldName) =>
(id: string): SheetFieldName =>
`${field}-${id}` as SheetFieldName;