Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: SlickGrid editors are not assignable to column field 'editor' #1005

Merged
merged 1 commit into from
Apr 2, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion src/models/editorValidator.interface.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import type { EditorArguments } from './editorArguments.interface';
import type { EditorValidationResult } from './editorValidationResult.interface';
import type { Column } from './column.interface';
import type { GridOption } from './gridOption.interface';

export type EditorValidator = (value: any, args?: EditorArguments) => EditorValidationResult;
export type EditorValidator = <TData = any, C extends Column<TData> = Column<TData>, O extends GridOption<C> = GridOption<C>>(value: any, args?: EditorArguments<TData, C, O>) => EditorValidationResult;
50 changes: 25 additions & 25 deletions src/slick.editors.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { Editor, EditorArguments, EditorValidationResult, ElementPosition } from './models/index';
import type { Column, Editor, EditorArguments, EditorValidationResult, ElementPosition, GridOption, OnCompositeEditorChangeEventArgs } from './models/index';
import { keyCode as keyCode_, Utils as Utils_ } from './slick.core';

// for (iife) load Slick methods from global Slick object, or use imports for (esm)
Expand All @@ -11,12 +11,12 @@ const Utils = IIFE_ONLY ? Slick.Utils : Utils_;
* @namespace Slick
*/

export class TextEditor implements Editor {
export class TextEditor<TData = any, C extends Column<TData> = Column<TData>, O extends GridOption<C> = GridOption<C>> implements Editor {
protected input!: HTMLInputElement;
protected defaultValue?: number | string;
protected navOnLR?: boolean;

constructor(protected readonly args: EditorArguments) {
constructor(protected readonly args: EditorArguments<TData, C, O>) {
this.init();
}

Expand Down Expand Up @@ -49,7 +49,7 @@ export class TextEditor implements Editor {
formValues: this.args.compositeEditorOptions.formValues,
grid: this.args.grid,
editors: this.args.compositeEditorOptions.editors
});
} as unknown as OnCompositeEditorChangeEventArgs);
}

destroy() {
Expand Down Expand Up @@ -104,12 +104,12 @@ export class TextEditor implements Editor {
}
}

export class IntegerEditor implements Editor {
export class IntegerEditor<TData = any, C extends Column<TData> = Column<TData>, O extends GridOption<C> = GridOption<C>> implements Editor {
protected input!: HTMLInputElement;
protected defaultValue?: string | number;
protected navOnLR?: boolean;

constructor(protected readonly args: EditorArguments) {
constructor(protected readonly args: EditorArguments<TData, C, O>) {
this.init();
}

Expand Down Expand Up @@ -142,7 +142,7 @@ export class IntegerEditor implements Editor {
formValues: this.args.compositeEditorOptions.formValues,
grid: this.args.grid,
editors: this.args.compositeEditorOptions.editors
});
} as unknown as OnCompositeEditorChangeEventArgs);
}

destroy() {
Expand Down Expand Up @@ -196,7 +196,7 @@ export class IntegerEditor implements Editor {
}
}

export class FloatEditor implements Editor {
export class FloatEditor<TData = any, C extends Column<TData> = Column<TData>, O extends GridOption<C> = GridOption<C>> implements Editor {
protected input!: HTMLInputElement;
protected defaultValue?: string | number;
protected navOnLR?: boolean;
Expand All @@ -207,7 +207,7 @@ export class FloatEditor implements Editor {
/** Should we allow empty value when using FloatEditor */
static AllowEmptyValue = false;

constructor(protected readonly args: EditorArguments) {
constructor(protected readonly args: EditorArguments<TData, C, O>) {
this.init();
}

Expand Down Expand Up @@ -240,7 +240,7 @@ export class FloatEditor implements Editor {
formValues: this.args.compositeEditorOptions.formValues,
grid: this.args.grid,
editors: this.args.compositeEditorOptions.editors
});
} as unknown as OnCompositeEditorChangeEventArgs);
};

destroy() {
Expand Down Expand Up @@ -327,12 +327,12 @@ export class FloatEditor implements Editor {
}
}

export class FlatpickrEditor implements Editor {
export class FlatpickrEditor<TData = any, C extends Column<TData> = Column<TData>, O extends GridOption<C> = GridOption<C>> implements Editor {
protected input!: HTMLInputElement;
protected defaultValue?: string | number;
protected flatpickrInstance: any;

constructor(protected readonly args: EditorArguments) {
constructor(protected readonly args: EditorArguments<TData, C, O>) {
this.init();
if (typeof flatpickr === 'undefined') {
throw new Error('Flatpickr not loaded but required in SlickGrid.Editors, refer to Flatpickr documentation: https://flatpickr.js.org/getting-started/');
Expand Down Expand Up @@ -367,7 +367,7 @@ export class FlatpickrEditor implements Editor {
formValues: this.args.compositeEditorOptions.formValues,
grid: this.args.grid,
editors: this.args.compositeEditorOptions.editors
});
} as unknown as OnCompositeEditorChangeEventArgs);
}
},
});
Expand Down Expand Up @@ -443,11 +443,11 @@ export class FlatpickrEditor implements Editor {
}
}

export class YesNoSelectEditor implements Editor {
export class YesNoSelectEditor<TData = any, C extends Column<TData> = Column<TData>, O extends GridOption<C> = GridOption<C>> implements Editor {
protected select!: HTMLSelectElement;
protected defaultValue?: string | number;

constructor(protected readonly args: EditorArguments) {
constructor(protected readonly args: EditorArguments<TData, C, O>) {
this.init();
}

Expand Down Expand Up @@ -480,7 +480,7 @@ export class YesNoSelectEditor implements Editor {
formValues: this.args.compositeEditorOptions.formValues,
grid: this.args.grid,
editors: this.args.compositeEditorOptions.editors
});
} as unknown as OnCompositeEditorChangeEventArgs);
}

destroy() {
Expand Down Expand Up @@ -516,11 +516,11 @@ export class YesNoSelectEditor implements Editor {
}
}

export class CheckboxEditor implements Editor {
export class CheckboxEditor<TData = any, C extends Column<TData> = Column<TData>, O extends GridOption<C> = GridOption<C>> implements Editor {
protected input!: HTMLInputElement;
protected defaultValue?: boolean;

constructor(protected readonly args: EditorArguments) {
constructor(protected readonly args: EditorArguments<TData, C, O>) {
this.init();
}

Expand Down Expand Up @@ -550,7 +550,7 @@ export class CheckboxEditor implements Editor {
formValues: this.args.compositeEditorOptions.formValues,
grid: this.args.grid,
editors: this.args.compositeEditorOptions.editors
});
} as unknown as OnCompositeEditorChangeEventArgs);
};

destroy() {
Expand Down Expand Up @@ -591,13 +591,13 @@ export class CheckboxEditor implements Editor {
}
}

export class PercentCompleteEditor implements Editor {
export class PercentCompleteEditor<TData = any, C extends Column<TData> = Column<TData>, O extends GridOption<C> = GridOption<C>> implements Editor {
protected input!: HTMLInputElement;
protected defaultValue?: number;
protected picker!: HTMLDivElement;
protected slider!: HTMLInputElement | null;

constructor(protected readonly args: EditorArguments) {
constructor(protected readonly args: EditorArguments<TData, C, O>) {
this.init();
}

Expand All @@ -623,7 +623,7 @@ export class PercentCompleteEditor implements Editor {
formValues: this.args.compositeEditorOptions.formValues,
grid: this.args.grid,
editors: this.args.compositeEditorOptions.editors
});
} as unknown as OnCompositeEditorChangeEventArgs);
}
}

Expand Down Expand Up @@ -713,13 +713,13 @@ export class PercentCompleteEditor implements Editor {
* The UI is added onto document BODY and .position(), .show() and .hide() are implemented.
* KeyDown events are also handled to provide handling for Tab, Shift-Tab, Esc and Ctrl-Enter.
*/
export class LongTextEditor implements Editor {
export class LongTextEditor<TData = any, C extends Column<TData> = Column<TData>, O extends GridOption<C> = GridOption<C>> implements Editor {
protected input!: HTMLTextAreaElement;
protected wrapper!: HTMLDivElement;
protected defaultValue?: string;
protected selectionStart = 0;

constructor(protected readonly args: EditorArguments) {
constructor(protected readonly args: EditorArguments<TData, C, O>) {
this.init();
}

Expand Down Expand Up @@ -773,7 +773,7 @@ export class LongTextEditor implements Editor {
formValues: this.args.compositeEditorOptions.formValues,
grid: this.args.grid,
editors: this.args.compositeEditorOptions.editors
});
} as unknown as OnCompositeEditorChangeEventArgs);
};

handleKeyDown(e: KeyboardEvent & { target: HTMLInputElement }) {
Expand Down