From 48b26b372d0d048dee43e55e653aaf1680181539 Mon Sep 17 00:00:00 2001 From: Maicol Battistini Date: Fri, 7 Jan 2022 16:04:50 +0100 Subject: [PATCH] fix(types): Fix tipi model --- resources/js/Components/Pages/RecordsPage.tsx | 17 ++++++++--------- resources/js/Models/Model.ts | 11 ++++------- 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/resources/js/Components/Pages/RecordsPage.tsx b/resources/js/Components/Pages/RecordsPage.tsx index 7357606e6..d08e254aa 100644 --- a/resources/js/Components/Pages/RecordsPage.tsx +++ b/resources/js/Components/Pages/RecordsPage.tsx @@ -14,7 +14,6 @@ import type { import { IModel, - IndexedModel, Model } from '../../Models'; import type { @@ -36,7 +35,7 @@ export type ColumnT = { id?: string title: string type?: 'checkbox' | 'numeric' - valueModifier?: (instance: IModel, property: string) => any + valueModifier?: (instance: IModel, property: string) => any }; export type SectionT = { id?: string @@ -49,7 +48,7 @@ export type SectionT = { | Record }; export type ColumnsT = Record; -export type RowsT = Collection>; +export type RowsT = Collection; export type SectionsT = Record | SectionT[]; /** @@ -63,7 +62,7 @@ export class RecordsPage extends Page { recordDialogMaxWidth: string | number = 'auto'; model: typeof Model; customSetter: ( - model: IModel, + model: IModel, fields: Collection ) => void; @@ -133,7 +132,7 @@ export class RecordsPage extends Page { } return this.rows - .map((instance: IModel, index: string) => ( + .map((instance: IModel, index: string) => ( ; + const instance = response.getData() as IModel; const dialog = $('mwc-dialog#add-record-dialog'); dialog @@ -334,7 +333,7 @@ export class RecordsPage extends Page { if (isFormValid(form)) { // @ts-ignore // eslint-disable-next-line new-cap - const instance = new this.model() as IModel; + const instance = new this.model() as IModel; if (this.customSetter) { this.customSetter(instance, collect(getFormData(form))); @@ -358,7 +357,7 @@ export class RecordsPage extends Page { if (dialogElement) { (dialogElement as MWCDialog).close(); } - this.rows.put((model as IndexedModel).getId(), model); + this.rows.put((model as Model).getId(), model); m.redraw(); await showSnackbar(__('Record salvato'), 4000); } @@ -369,7 +368,7 @@ export class RecordsPage extends Page { }); } - getModelValue(model: IndexedModel, field: string): any { + getModelValue(model: IModel, field: string): any { const column = this.columns[field]; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment let value: any = model[field]; diff --git a/resources/js/Models/Model.ts b/resources/js/Models/Model.ts index 9003d528b..fad4da109 100644 --- a/resources/js/Models/Model.ts +++ b/resources/js/Models/Model.ts @@ -4,21 +4,18 @@ import { } from 'coloquent'; import {snakeCase} from 'lodash'; -export interface IndexedModel extends Model { - [prop: string]: any; +export interface InstantiableModel { + new (): Model | T; } -export interface InstantiableModel { - new (): T; -} - -export type IModel = InstanceType>; +export type IModel = InstanceType>; /** * The base model for all models. */ export abstract class Model extends BaseModel { jsonApiType: string = ''; + [prop: string]: any; constructor() { super();