free-jqgrid
Version:
grid as jQuery plugin - fork of jqGrid before licensing change
976 lines (974 loc) • 126 kB
TypeScript
/**
* Copyright (c) 2017, Oleg Kiriljuk, oleg.kiriljuk@ok-soft-gmbh.com
* Dual licensed under the MIT and GPL licenses
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl-2.0.html
*/
/// <reference types="jquery" />
/// <reference types="jqueryui" />
declare namespace FreeJqGrid {
interface HDivWithLoading extends HTMLDivElement {
loading?: boolean; // the expando property will be set to true only during pending Ajax request to the server
}
interface GridInfo {
bDiv: HTMLDivElement;
beginReq(this: BodyTable): void;
cDiv: HTMLDivElement;
cols: HTMLCollection | HTMLTableDataCellElement[]; // td[]
curGbox?: JQuery | null;
dragEnd(this: GridInfo): void;
dragMove(this: GridInfo, eventObject: JQueryEventObject): void;
dragStart(this: GridInfo, iCol: number, eventObject: JQueryEventObject, y: number[], $th: JQuery): void;
eDiv: HTMLDivElement;
emptyRows(this: BodyTable, scroll?: boolean, clearLocalData?: boolean): void;
endReq(this: BodyTable): void;
fbDiv?: JQuery;
fbRows?: HTMLCollection | HTMLTableRowElement[]; // tr[]
fhDiv?: JQuery;
footers?: HTMLCollection | HTMLTableDataCellElement[]; // td[]
fsDiv?: JQuery;
hDiv: HDivWithLoading;
headers: { el: HTMLTableHeaderCellElement; width: number; }[];
newWidth?: number;
populate(this: BodyTable, npage?: number): void;
populateVisible(this: BodyTable): void;
prevRowHeight?: number;
resizeColumn(this: GridInfo, iCol: number, skipCallbacks: boolean, skipGridAdjustments): void;
resizing?: false | { idx: number, startX: number, sOL: number, moved: boolean, delta: number };
scrollGrid(): void;
sDiv?: HTMLDivElement;
selectionPreserver(this: BodyTable): boolean;
timer?: any;
topDiv?: HTMLDivElement;
ubDiv?: HTMLDivElement;
uDiv?: HTMLDivElement;
width: number;
}
interface BodyTable extends HTMLTableElement {
p: JqGridOptions;
grid: GridInfo;
ftoolbar?: boolean;
nav?: boolean;
addItemDataToColumnIndex(item: Object, id: string): void;
addJSONData(data: any[], rcnt?: number, more?: boolean, adjust?: number): void;
addXmlData(data: any[], rcnt?: number, more?: boolean, adjust?: number): void;
clearToolbar?(trigger: boolean): void;
constructTr(id: string, hide: boolean, spaceSeparatedCssClasses: string, rd: any, cur: any, selected: boolean): string;
fixScrollOffsetAndhBoxPadding(): void;
formatCol(pos: number, rowInd: number, tv: string, rawObject: any, rowId: string, rdata?: any): string;
formatter(rowId: string, cellval: any, colpos: number, rwdat: any, act?: "add" | "edit", rdata?: any): string;
generateValueFromColumnIndex(cmName: string, separator?: string, delimiter?: string);
modalAlert?(): void;
rebuildRowIndexes(): void;
refreshIndex(): void;
removeItemDataFromColumnIndex(id): void;
setHeadCheckBox(checked: boolean): void;
sortData(index: string, idxcol: number, reload: boolean, sor: string, obj: HTMLTableHeaderCellElement, eventObject?: JQueryEventObject): void;
toogleToolbar?(): void;
triggerToolbar?(): void;
updatepager(rn: boolean, dnd: boolean): void;
}
interface JQueryJqGrid extends JQuery {
[index: number]: BodyTable;
}
interface QueryObject {
ignoreCase(): QueryObject;
useCase(): QueryObject;
trim(): QueryObject;
noTrim(): QueryObject;
execute(): QueryObject;
data(): QueryObject;
select(f?: (v: any) => any): QueryObject;
hasMatch(): QueryObject;
andNot(f: string, v: any, x: any): QueryObject;
orNot(f: string, v: any, x: any): QueryObject;
not(f: string, v: any, x: any): QueryObject;
and(f: string, v: any, x: any): QueryObject;
or(f: string, v: any, x: any): QueryObject;
orBegin(): QueryObject;
orEnd(): QueryObject;
isNot(f: string): QueryObject;
is(f: string): QueryObject;
equals(f: string, v: any, t: any): QueryObject;
notEquals(f: string, v: any, t: any): QueryObject;
isNull(f: string, v: any, t: any): QueryObject;
greater(f: string, v: any, t: any): QueryObject;
less(f: string, v: any, t: any): QueryObject;
greaterOrEquals(f: string, v: any, t: any): QueryObject;
lessOrEquals(f: string, v: any, t: any): QueryObject;
startsWith(f: string, v: any): QueryObject;
endsWith(f: string, v: any): QueryObject;
contains(f: string, v: any): QueryObject;
groupBy(by: string, dir: "a" | "asc" | "ascending" | "d" | "desc" | "descending", type: "text" | "int" | "integer" | "float" | "number" | "currency" | "numeric" | "date" | "datetime" | ((value: string) => string), datefmt: string): any[];
orderBy(by: string, dir: "a" | "asc" | "ascending" | "d" | "desc" | "descending", type: "text" | "int" | "integer" | "float" | "number" | "currency" | "numeric" | "date" | "datetime" | ((value: string) => string), datefmt: string, sfunc?: (a: any, b: any, direction: 1 | -1, aItem: any, bItem: any) => any): any[];
inSet(f: string, v: any, t: any): QueryObject;
custom(ruleOp: string, field: string, data: any): QueryObject;
}
const enum InputNameType {
ColName = 0,
AdditionalProperty = 1,
RowId = 2
}
const enum ComponentName {
GridBoxDiv = 0, // tagName: "div". class: "ui-jqgrid". Id: "gbox_" + gridId
GridOverlayDiv = 1, // tagName: "div". class: "jqgrid-overlay". Id: "lui_" + gridId
LoadingDiv = 2, // tagName: "div". class: "loading". Id: "load_" + gridId
DialogAlertDiv = 3, // tagName: "div". class: "ui-jqdialog". Id: "alertmod_" + gridId
DialogSearchDiv = 4, // tagName: "div". class: "ui-jqdialog". Id: "searchmodfbox_" + gridId
DialogViewDiv = 5, // tagName: "div". class: "ui-jqdialog". Id: "viewmod" + gridId
DialogEditDiv = 6, // tagName: "div". class: "ui-jqdialog". Id: "editmod" + gridId
DialogDeleteDiv = 7, // tagName: "div". class: "ui-jqdialog". Id: "delmod" + gridId
GridViewDiv = 8, // tagName: "div". class: "ui-jqgrid-view". Id: "gview_" + gridId
TitleBarDiv = 9, // tagName: "div". class: "ui-jqgrid-titlebar" and either "ui-jqgrid-caption" or "ui-jqgrid-caption-rtl"
UpperToolbarDiv = 10, // tagName: "div". class: "ui-userdata". Id: "tb_" + gridId
TopPagerDiv = 11, // tagName: "div". class: "ui-jqgrid-toppager". Id: gridId + "_toppager"
HeaderDiv = 12, // tagName: "div". class: "ui-jqgrid-hdiv"
HeaderBoxDiv = 13, // tagName: "div". class: either "ui-jqgrid-hdiv" or "ui-jqgrid-hbox-rtl"
HeaderTable = 14, // tagName: "table". class: "ui-jqgrid-htable"
HeaderColsRow = 15, // tagName: "tr". class: "jqgfirstrow" or the row with column headers
HeaderCols = 16, // tagName: "th". class: either "ui-first-th-rtl" or "ui-first-th-rtl"
HeaderRows = 47, // tagName: "tr". class: "ui-jqgrid-labels"
HeaderTh = 48, // tagName: "th". class: "ui-th-column" and either "ui-th-ltr" or "ui-th-rtl"
HeaderSortableDiv = 49, // tagName: "div". class: "ui-jqgrid-labels"
HeaderResizableSpan = 50, // tagName: "span". class: "ui-jqgrid-resize" and either "ui-jqgrid-resize-ltr" or "ui-jqgrid-resize-rtl"
HeaderSelectAllRowsCheckbox = 45, // tagName: "input" (can be changed to "button" in the future). class: "cbox". Id: "cb_" + gridId
SearchToolbar = 17, // tagName: "tr". class: "ui-search-toolbar". Its direct children are th having class "ui-th-column" and optionally "ui-th-rtl"
BodyDiv = 18, // tagName: "div". class: "ui-jqgrid-bdiv"
BodyScrollFullDiv = 19, // tagName: "div" - It can have height CSS property which simulate the total size of virtual data.
BodyScrollTopDiv = 20, // tagName: "div" - It can have height CSS property which simulate virtual data before the current displayed in btable.
BodyTable = 21, // tagName: "table". class: "ui-jqgrid-btable". Id: gridId
Grid = 21, // tagName: "table". class: "ui-jqgrid-btable". Id: gridId
BodyColsRow = 22, // tagName: "tr". class: "jqgfirstrow"
BodyCols = 23, // tagName: "td"
BodyDataRows = 24, // tagName: "tr". class: "jqgrow" and optionally "ui-row-rtl"
FooterDiv = 25, // tagName: "div". class: "ui-jqgrid-sdiv"
FooterBoxDiv = 26, // tagName: "div". class: either "ui-jqgrid-hdiv" or "ui-jqgrid-hbox-rtl". ??? is it really needed ???
FooterTable = 27, // tagName: "table". class: "ui-jqgrid-ftable"
FooterRows = 28, // tagName: "tr". class: "footrow", optionally additionally "footrow-rtl"
BottomToolbarDiv = 29, // tagName: "div". class: "ui-userdata". Id: "tb_" + gridId
FrozenHeaderDiv = 30, // tagName: "div". class: "frozen-div" and "ui-jqgrid-hdiv"
FrozenHeaderTable = 31, // tagName: "table". class: "ui-jqgrid-htable"
FrozenHeaderColsRow = 32, // tagName: "tr". class: "jqgfirstrow"
FrozenHeaderCols = 33, // tagName: "th". class: either "ui-first-th-rtl" or "ui-first-th-rtl"
FrozenSearchToolbar = 34, // tagName: "tr". class: "ui-search-toolbar". Its direct children are th having class "ui-th-column" and optionally "ui-th-rtl"
FrozenFooterDiv = 35, // tagName: "div". class: "frozen-div" and "ui-jqgrid-sdiv"
FrozenFooterTable = 36, // tagName: "table". class: "ui-jqgrid-ftable"
FrozenFooterDataRows = 37, // tagName: "tr". class: "footrow", optionally additionally "footrow-rtl"
FrozenBobyDiv = 38, // tagName: "div". class: "frozen-div" and "ui-jqgrid-bdiv"
FrozenBobyTable = 39, // tagName: "table". class: "ui-jqgrid-btable". Id: gridId + "_frozen"
FrozenBobyColsRow = 40, // tagName: "tr". class: "jqgfirstrow"
FrozenBobyCols = 41, // tagName: "td"
FrozenBobyDataRows = 42, // tagName: "tr". class: "jqgrow" and optionally "ui-row-rtl"
ColumnResizerDiv = 43, // tagName: "div". class: "ui-jqgrid-resize-mark". Id: "rs_m" + gridId
BottomPagerDiv = 44, // tagName: "div". class: "ui-jqgrid-pager"
SearchOperationMenuUl = 46
}
// The ModalHash represent internal structure used by jqModal - Minimalist Modaling with jQuery (see jqmodal.js)
interface ModalHash {
w: JQuery; // The modal element, represent the outer div of the modal dialog
o: JQuery; // The overlay element. It will be assigned on the first opening of the modal
c: JqModalOptions; // The modal's options object. The options used durin creating the modal. One can use global $.jgrid.jqModal or gris specifif p.jqModal to specify defaults of the options.
t: Element | string | JQuery; // The triggering element
s: number; // numeric part of "id" used for modal dialog. The modal dialog have class "jqmID" + s.
a: boolean; // It's false initially. It will be set to true during opening and will set to false on closing.
}
interface JqModalOptions {
ajax?: string | false; // false
ajaxText?: string; // ""
closeClass?: string; // "jqmClose"
closeoverlay?: boolean; // false
modal?: boolean; // false
onHide?: false | ((h: ModalHash) => void);
onLoad?: false | ((h: ModalHash) => void);
onShow?: false | ((h: ModalHash) => void);
overlay?: number; // 50
overlayClass?: string; // "jqmOverlay"
target?: string | JQuery | false; // false
toTop?: boolean; // false
trigger?: string; // ".jqModal"
}
interface CreateModalOptions {
caption?: string;
closeOnEscape?: boolean;
drag?: boolean;
gbox?: string;
form?: string;
jqModal?: boolean;
height: number | "auto" | "100%" | string;
left?: number;
onClose?: (this: BodyTable, selector: string | Element | JQuery) => boolean;
overlay?: number;
recreateForm?: boolean;
removemodal?: boolean;
resize?: boolean;
resizingRightBottomIcon: string;
toTop?: boolean;
top?: number;
width: number | "auto" | "100%" | string;
zIndex?: number;
}
interface ViewModalOptions extends JqmOptions {
overlay?: number; // 30
modal?: boolean; // false,
overlayClass?: string; // getGuiStyles.call(this, "overlay"), // "ui-widget-overlay"
onShow?: (h: ModalHash) => void; // $.jgrid.showModal
onHide?: (h: ModalHash) => void; // $.jgrid.closeModal
gbox?: string; // ""
jqm?: boolean; // true
jqM?: boolean; // true
}
interface JqmOptions {
hash?: ModalHash[];
open?: (s: number, trigger: Element | string | JQuery) => boolean | void;
close?: (s: number, trigger: Element | string | JQuery) => boolean | void;
params?: JqModalOptions;
}
interface DeleteFormLocaleOptions {
bCancel?: string;
bSubmit?: string;
caption?: string;
msg?: string;
[propName: string]: any;
}
interface EditFormLocaleOptions {
addCaption?: string;
bCancel?: string;
bClose?: string;
bExit?: string;
bNo?: string;
bSubmit?: string;
bYes?: string;
editCaption?: string;
msg: { customarray?: string, customfcheck?: string, date?: string, email?: string, integer?: string, maxValue?: string, minValue?: string, novalue?: string, number?: string, required?: string, url?: string, [propName: string]: any };
saveData?: string;
[propName: string]: any;
}
interface NavLocaleOptions {
addtext?: string;
addtitle?: string;
alertcap?: string;
alerttext?: string;
canceltext?: string;
canceltitle?: string;
deltext?: string;
deltitle?: string;
edittext?: string;
edittitle?: string;
refreshtext?: string;
refreshtitle?: string;
savetext?: string;
savetitle?: string;
searchtext?: string;
searchtitle?: string;
viewtext?: string;
viewtitle?: string;
[propName: string]: any;
}
interface SearchLocaleOptions {
addGroupTitle?: string;
addRuleTitle?: string;
caption?: string;
deleteGroupTitle?: string;
deleteRuleTitle?: string;
Find?: string;
groupOps?: { op: string, text: string }[];
odata?: { oper: string, text: string }[];
operandTitle?: string;
Reset?: string;
resetTitle?: string | ((options: { options: FilterFoolbarOptions, cm: ColumnModel, cmName: string, iCol: number }) => string);
[propName: string]: any;
}
interface ViewLocaleOptions {
bClose?: string;
caption?: string;
[propName: string]: any;
}
interface JqGridLocaleOptions {
emptyrecords?: string;
loadtext?: string;
pgfirst?: string;
pglast?: string;
pgnext?: string;
pgprev?: string;
pgrecs?: string;
pgtext?: string;
recordtext?: string;
savetext?: string;
showhide?: string;
[propName: string]: any;
}
interface FormatterIntegerLocaleOptions {
thousandsSeparator?: string;
defaultValue?: string;
}
interface FormatterNumberLocaleOptions extends FormatterIntegerLocaleOptions {
decimalSeparator?: string;
decimalPlaces?: number;
}
interface FormatterCurrencyLocaleOptions extends FormatterNumberLocaleOptions {
prefix?: string;
suffix?: string;
}
interface FormatterDateLocaleOptions {
dayNames?: string[];
monthNames?: string[];
AmPm?: string[];
S?: (j: number) => string;
srcformat?: string;
newformat?: string;
masks?: {
ShortDate?: string;
LongDate?: string;
FullDateTime?: string;
MonthDay?: string;
ShortTime?: string;
LongTime?: string;
YearMonth?: string;
};
}
interface FormattersLocaleOptions {
integer?: FormatterIntegerLocaleOptions;
number?: FormatterNumberLocaleOptions;
currency?: FormatterCurrencyLocaleOptions;
date?: FormatterDateLocaleOptions;
[propName: string]: any;
}
interface JqGridStaticLocaleOptions {
col?: {
bCancel?: string;
bSubmit?: string;
caption?: string;
[propName: string]: any;
};
defaults?: JqGridLocaleOptions;
del?: DeleteFormLocaleOptions;
edit?: EditFormLocaleOptions;
errors?: {
errcap?: string;
model?: string;
norecords?: string;
nourl?: string;
[propName: string]: any;
};
formatter?: FormattersLocaleOptions;
isRTL?: boolean;
nav?: NavLocaleOptions;
search?: SearchLocaleOptions;
view?: ViewLocaleOptions;
[propName: string]: any;
}
interface EditableCellInfo {
rowid: string;
iCol: number;
iRow: number;
cmName: string;
cm: ColumnModel;
mode: "add" | "edit";
td: HTMLTableDataCellElement;
tr: HTMLTableRowElement;
trFrozen: HTMLTableRowElement;
dataElement: Element;
dataWidth: number;
}
interface IconsInfo {
baseIconSet?: string;
common?: string; // "ui-icon",
pager?: {
common?: string;
ignoreParents?: boolean;
first?: string; // "ui-icon-seek-first",
prev?: string; // "ui-icon-seek-prev",
next?: string; // "ui-icon-seek-next",
last?: string; // "ui-icon-seek-end"
};
sort?: {
common?: string;
ignoreParents?: boolean;
asc?: string; // "ui-icon-triangle-1-n",
desc?: string; // "ui-icon-triangle-1-s"
};
gridMinimize?: {
common?: string;
ignoreParents?: boolean;
visible?: string; // "ui-icon-circle-triangle-n",
hidden?: string; // "ui-icon-circle-triangle-s"
};
nav?: {
common?: string;
ignoreParents?: boolean;
edit?: string; // "ui-icon-pencil",
add?: string; // "ui-icon-plus",
del?: string; // "ui-icon-trash",
search?: string; // "ui-icon-search",
refresh?: string; // "ui-icon-refresh",
view?: string; // "ui-icon-document",
save?: string; // "ui-icon-disk",
cancel?: string; // "ui-icon-cancel",
newbutton?: string; // "ui-icon-newwin"
};
actions?: {
common?: string; // string;
ignoreParents?: boolean;
edit?: string; // "ui-icon-pencil",
del?: string; // "ui-icon-trash",
save?: string; // "ui-icon-disk",
cancel?: string; // "ui-icon-cancel"
};
form?: {
common?: string;
ignoreParents?: boolean;
close?: string; // "ui-icon-closethick",
prev?: string; // "ui-icon-triangle-1-w",
next?: string; // "ui-icon-triangle-1-e",
save?: string; // "ui-icon-disk",
undo?: string; // "ui-icon-close",
del?: string; // "ui-icon-scissors",
cancel?: string; // "ui-icon-cancel",
resizableLtr?: string; // "ui-resizable-se ui-icon ui-icon-gripsmall-diagonal-se"
};
search?: {
common?: string;
ignoreParents?: boolean;
search?: string; // "ui-icon-search",
reset?: string; // "ui-icon-arrowreturnthick-1-w",
query?: string; // "ui-icon-comment"
};
subgrid?: {
common?: string;
ignoreParents?: boolean;
plus?: string; // "ui-icon-plus",
minus?: string; // "ui-icon-minus",
openLtr?: string; // "ui-icon-carat-1-sw",
openRtl?: string; // "ui-icon-carat-1-se"
};
grouping?: {
common?: string; // string;
ignoreParents?: boolean;
plus?: string; // "ui-icon-circlesmall-plus",
minus?: string; // "ui-icon-circlesmall-minus"
};
treeGrid?: {
common?: string;
ignoreParents?: boolean;
minus?: string; // "ui-icon-triangle-1-s",
leaf?: string; // "ui-icon-radio-off",
plusLtr?: string; // "ui-icon-triangle-1-e",
plusRtl?: string; // "ui-icon-triangle-1-w"
};
checkbox ?: {
ignoreParents?: boolean;
checkedClasses?: string; // "fa-check-square-o",
checked?: string; // "fa-check-square-o fa-lg",
unchecked?: string; // "fa-square-o fa-lg"
};
}
interface GuiStyleInfo {
baseGuiStyle?: string;
gBox?: string; // "ui-jqgrid-jquery-ui ui-widget ui-widget-content ui-corner-all", // ui-widget-content??? for the children of gbox
gView?: string; // "",
overlay?: string; // "ui-widget-overlay",
loading?: string; // "ui-state-default ui-state-active",
hDiv?: string; // "ui-state-default ui-corner-top",
hTable?: string; // "",
colHeaders?: string; // "ui-state-default",
states?: {
select?: string; // "ui-state-highlight",
disabled?: string; // "ui-state-disabled ui-jqgrid-disablePointerEvents",
hover?: string; // "ui-state-hover", // can be table-hover on <table> only and style like .table-hover tbody tr:hover td
error?: string; // "ui-state-error",
active?: string; // "ui-state-active",
textOfClickable?: string; // "ui-state-default"
};
dialog?: {
header?: string; // "ui-widget-header ui-dialog-titlebar ui-corner-all ui-helper-clearfix",
window?: string; // "ui-jqgrid-jquery-ui ui-widget ui-widget-content ui-corner-all ui-front",
document?: string; // "",
subdocument?: string; // "",
body?: string; // "",
footer?: string; // "",
content?: string; // "ui-widget-content",
hr?: string; // "ui-widget-content",
closeButton?: string; // "ui-corner-all",
fmButton?: string; // "ui-state-default",
dataField?: string; // "ui-widget-content ui-corner-all",
viewCellLabel?: string; // "ui-widget-content",
viewLabel?: string; // "",
viewCellData?: string; // "ui-widget-content",
viewData?: string; // "",
leftCorner?: string; // "ui-corner-left",
rightCorner?: string; // "ui-corner-right",
defaultCorner?: string; // "ui-corner-all"
};
filterToolbar?: {
dataField?: string; // "ui-widget-content"
};
subgrid?: {
thSubgrid?: string; // "ui-state-default", // used only with subGridModel
rowSubTable?: string; // "ui-widget-content", // used only with subGridModel additionally to ui-subtblcell
row?: string; // "ui-widget-content", // class of the subgrid row, additional to ui-subgrid
tdStart?: string; // "", // it can be with span over rownumber and multiselect columns
tdWithIcon?: string; // "ui-widget-content", // class of cell with +- icon, additional to subgrid-cell
buttonDiv?: string; // "",
button?: string; // "",
tdData?: string; // "ui-widget-content", // class of main td with span over the grid, additional subgrid-data
legacyTable?: string; // ""
};
grid?: string; // "",
gridRow?: string; // "ui-widget-content",
rowNum?: string; // "ui-state-default",
gridFooter?: string; // "",
rowFooter?: string; // "ui-widget-content",
gridTitle?: string; // "ui-widget-header ui-corner-top",
gridError?: string; // "ui-state-error",
gridErrorText?: string; // "",
titleButton?: string; // "ui-corner-all",
toolbarUpper?: string; // "ui-state-default",
toolbarBottom?: string; // "ui-state-default",
actionsDiv?: string; // "ui-widget-content",
actionsButton?: string; // "ui-corner-all",
pager?: {
pager?: string; // "ui-state-default",
pagerButton?: string; // "ui-corner-all",
pagerInput?: string; // "ui-widget-content",
pagerSelect?: string; // "ui-widget-content"
};
navButton?: string; // "ui-corner-all",
searchDialog?: {
operator?: string; // "ui-corner-all",
label?: string; // "ui-corner-all",
elem?: string; // "ui-corner-all",
operationGroup?: string; // "",
addRuleButton?: string; // "ui-corner-all",
deleteRuleButton?: string; // "ui-corner-all",
operationSelect?: string; // "ui-corner-all",
addGroupButton?: string; // "ui-corner-all",
deleteGroupButton?: string; // "ui-corner-all"
};
searchToolbar?: {
menu?: string; // "ui-menu-jqueryui",
operButton?: string; // "ui-corner-all",
clearButton?: string; // "ui-corner-all"
};
top?: string; // "ui-corner-top",
bottom?: string; // "ui-corner-bottom",
resizer?: string; // "ui-widget-header"
}
interface JqGridStaticOptions extends JqGridOptions {
fatalError?: (errorText: string) => void; // default is alert function
}
type BooleanFeedbackValues = false | "stop" | void;
interface JqGridStatic extends JqGridStaticLocaleOptions {
_multiselect?: boolean;
actionsNav?: FormatterActionsOptions;
ajaxOptions?: JQueryAjaxSettings;
cell_width: boolean;
cellattr?: { [key: string]: (this: BodyTable, rowId: string, cellValue: any, rowObject: any, cm: ColumnModel, rdata: any, formattedCellValue: string) => string; };
cmTemplate?: { [key: string]: ColumnModel; };
defaults: JqGridStaticOptions;
del?: FormDeletingOptions;
edit?: FormEditingOptions;
filter?: JqFilterOptions;
getXmlData(this: BodyTable, obj: any, dotSeparatedNamesOrFunc: string | ((obj: any) => any), returnObj?: boolean): string | undefined | JQuery; // JQuery returns only if returnObj is true
guid: number;
guiStyles: {
jQueryUI: GuiStyleInfo;
bootstrap: GuiStyleInfo;
bootstrapPrimary: GuiStyleInfo;
bootstrap4: GuiStyleInfo;
[propName: string]: GuiStyleInfo;
};
icons: {
jQueryUI: IconsInfo;
fontAwesome: IconsInfo;
glyph: IconsInfo;
[propName: string]: IconsInfo;
};
inlineEdit?: InlineEditingOptions;
inlineNavOptions?: InlineNavOptions;
jqModal?: JqModalOptions; // { toTop: true }
locales: { [key: string]: JqGridStaticLocaleOptions; };
msie: boolean;
nav?: NavOptions;
no_legacy_api?: boolean;
productName: "free jqGrid";
rowattr?: ( (this: BodyTable, item: any, rowObject: any, rowid: string) => { [attributeName: string]: string } | null | undefined );
search?: SearchLocaleOptions;
uidPref: string;
version: string; // like "4.13.7" for example
view?: FormViewingOptions;
bindEv(element: Element | JQuery, options: EditOptions | SearchOptions): any;
builderFmButon(this: BodyTable, id: string, text?: string, icon?: string, iconOnLeftOrRight?: "right" | "left" | undefined, conner?: "right" | "left" | undefined): any;
builderSortIcons(this: BodyTable, iCol: number): string;
cellWidth(): boolean;
checkDate(format: string, date: string): boolean;
checkTime(time: string): boolean;
checkValues(this: BodyTable, value: any, iCol: number | string, customobject?: any, name?: string, options?: any): boolean;
clearArray(array: any[]): void;
closeModal(h: ModalHash): void;
convertOnSaveLocally(this: BodyTable, nData: any, cm: any, oData: any, id: string, item: any, iCol: number): any;
createEl(this: BodyTable, elementType: string, options: any, value: string, autoWidth?: boolean, ajaxso?: any): Element;
createModal(this: BodyTable, aIDs: any, content: Element | JQuery, o: CreateModalOptions, insertSelector: string | Element | JQuery, posSelector: string | Element | JQuery, appendsel?: boolean | string | Element | JQuery, css?: any): void;
//detectRowEditing(rowid: string): RowEditingInfo;
detectRowEditing(this: BodyTable, rowid: string): { mode: "inlineEditing" | "cellEditing"; savedRow: any[]; editable: { [cmName: string]: boolean | "hidden" | "disabled" | "readonly" } };
enumEditableCells(this: BodyTable, tr: HTMLTableRowElement, mode: "add" | "edit", callback: (options: EditableCellInfo) => boolean): void;
extend(this: JqGridStatic, methods: any): void;
feedback(this: BodyTable | JQuery, p: any, eventPrefix: string, callbackSuffix: string, callbackName: string): boolean;
fillSelectOptions(element, value: any, separator: string, delimiter: string, isMultiple: boolean, valuesToSelect?: string): boolean;
fixMaxHeightOfDiv(height: number): number;
fixScrollOffsetAndhBoxPadding(this: BodyTable): void;
format(format: string, ...rest: any[]): string;
from(source: any): QueryObject;
fullBoolFeedback(this: BodyTable, callback: (...rest: any[]) => BooleanFeedbackValues, eventName: string, ...rest: any[]): boolean;
getAccessor(obj: any, dotSeparatedNamesOrFunc: string | ((obj: any) => any)): any;
getCell(this: BodyTable, tr: HTMLTableRowElement | JQuery, iCol: number): JQuery;
getCellIndex(cell: Element | JQuery): number;
getDataFieldOfCell(this: BodyTable, tr: HTMLTableRowElement | JQuery, iCol: number): JQuery;
getEditedValue(this: BodyTable, $dataFiled: JQuery, cm: any, valueText: Object, editable: boolean | "hidden" | "readonly"): string;
getGridComponent(componentName: ComponentName, $p: HTMLElement | JQuery): JQuery;
getGridComponentId(this: BodyTable, componentName: ComponentName): string;
getGridComponentIdSelector(this: BodyTable, componentName: ComponentName): string;
getMethod(this: JqGridStatic, methodName: string): Function;
getRelativeRect(this: BodyTable, element: Element | JQuery): JQueryCoordinates;
getRes(basePath: Object, path: string): any;
getXmlData(obj: Node, dotSeparatedNamesOrFunc: string | ((obj: any) => any), returnObj?: boolean): string;
hasAllClasses(element: Element | JQuery, spaceSeparatedCssClasses: string): boolean;
hasOneFromClasses(element: Element | JQuery, spaceSeparatedCssClasses: string): boolean;
hideModal(selector: string | Element | JQuery, options: {jqm?: boolean, gb?: string, removemodal?: boolean}): void;
htmlDecode(value: string): string;
htmlEncode(value: string): string;
info_dialog(this: BodyTable, caption: string, content: string, closeButtonText: string, modalOptions: any): void;
isCellClassHidden(spaceSeparatedCssClasses: string): boolean;
isEmpty(testString: string): boolean;
isHTMLElement(element: Element): boolean;
jqID(idName: string): string;
mergeCssClasses(...spaceSeparatedCssClasses: string[]): boolean;
msiever(): number;
oldDecodePostedData(value: string): string;
oldEncodePostedData(value: string): string;
parseDataToHtml(this: BodyTable, len: number, ids: string[], items: any[], cellsToDisplay: any[], rcnt?: number, adjust?: number, readAllInputData?: boolean): string[];
parseDate(this: BodyTable, format: string, date: string | number | Date, newformat?: string, options?: any): string | Date;
parseDateToNumber(this: BodyTable, format: string, date: string | number | Date): number;
randId(prefix?: string): string;
serializeFeedback(this: BodyTable | JQuery, callback: ((this: BodyTable | JQuery, postData: any) => any), eventName: string, postData: Object | string): any;
showModal(h: ModalHash): void;
stripHtml(htmlString: string): string;
stripPref(prefix: string, id: string): string;
template(format: string): string;
viewModal(this: BodyTable, selector: string | Element | JQuery, options?: ViewModalOptions): void;
[propName: string]: any;
}
interface JqGridFmatter {
isEmpty: (o: any) => boolean;
isNumber: (o: any) => boolean;
isObject: (o: any) => boolean;
isValue: (o: any) => boolean;
NumberFormat: (nData: number, opts: { decimalSeparator: string, decimalPlaces: number, thousandsSeparator: string }) => string;
}
interface FormatterOptions {
rowId: string;
colModel: ColumnModel;
gid: string;
pos: number;
rowData: any;
}
interface FormatterActionsCustomButton {
action: string;
position?: "first" | "last";
onClick: (options: {rowid: string, event: JQueryEventObject, action: string, options: FormatterActionsCustomButton }) => void;
[propName: string]: any; // attribute for the editable element
}
interface FormatterActionButtonMask {
display?: boolean; // whether to include the button in the actions div
hidden?: boolean; // whether to add style="display:none;" to the button
noHovering?: boolean; // whether to add/remove hovering classes on mouseover/mouseout events
}
interface FormatterActionsOptions {
editbutton?: boolean;
delbutton?: boolean;
editformbutton?: boolean;
commonIconClass?: string; // "ui-icon",
editicon?: string; // "ui-icon-pencil",
delicon?: string; // "ui-icon-trash",
saveicon?: string; // "ui-icon-disk",
cancelicon?: string; // "ui-icon-cancel",
savetitle?: string; // edit.bSubmit || "",
canceltitle?: string; // edit.bCancel || ""
isDisplayButtons?: (this: BodyTable, options: FormatterOptions, rwd, act) => { [propName: string]: FormatterActionButtonMask };
custom?: FormatterActionsCustomButton[];
editOptions?: FormEditingOptions;
delOptions?: FormDeletingOptions;
keys?: boolean;
onEdit?: (this: BodyTable, rowid: string, options: EditRowOptions) => void;
onSuccess?: (this: BodyTable, jqXhr: JQueryXHR, rowid: string, options: FreeJqGrid.SaveRowOptions) => boolean | [boolean, any];
url?: string | ((this: BodyTable, rowid: string, editOrAdd: "add" | "edit", postData: any, options: SaveRowOptions) => string);
extraparam?: Object;
afterSave?: (this: BodyTable, rowid: string, jqXhr: JQueryXHR, postData: any, options: SaveRowOptions) => void;
onError?: (this: BodyTable, rowid: string, jqXhr: JQueryXHR, textStatus: string, errorThrown: string) => void;
afterRestore?: (this: BodyTable, rowid: string) => void;
restoreAfterError?: boolean;
mtype?: string | ((this: BodyTable, editOrAdd: "add" | "edit", options: SaveRowOptions, rowid: string, postData: any) => string);
[propName: string]: any; // attribute for the editable element
}
interface JqGridFormatters {
[propName: string]: any;
}
interface EditOptions {
buildSelect?: (this: BodyTable, data: any, jqXhr: JQueryXHR, cm: ColumnModel, iCol: number) => string;
dataEvents?: { type: string, data?: any, fn: (e) => void }[];
dataInit?: (this: BodyTable, element: Element, options: EditOptions) => void;
dataUrl?: string | ((this: BodyTable, rowid: string, value: string, cmName: string, ajaxContext: { elem: Element, options: any, cm: ColumnModel, mode: "cell" | "addForm" | "editForm" | "add" | "edit", rowid: string, iCol: number, ovm: string[] }) => string);
generateValue?: boolean;
value?: string | { [propName: string]: string } | (() => string | { [propName: string]: string });
defaultValue?: string | (() => string) | boolean; // boolean for SearchOptions compatibility
[propName: string]: any; // attribute for the editable element
}
interface SearchOptions extends EditOptions {
attr?: Object;
clearSearch?: boolean;
defaultValue?: boolean;
generateDatalist?: boolean;
searchhidden?: boolean;
sopt?: string[];
[propName: string]: any;
}
interface EditOrSearchRules {
custom?: boolean | ((this: BodyTable, options: { oldValue: string, newValue: string, oldRowData?: any, rowid: string, iCol: number, iRow: number, mode: "cell" | "addForm" | "editForm" | "add" | "edit", cmName: string, cm: ColumnModel, td?: HTMLTableDataCellElement, tr?: HTMLTableRowElement }) => any[]);
custom_func?: (this: BodyTable, value: string, name: string, iCol: number) => any[];
date?: boolean | ((this: BodyTable, options: { oldValue: string, newValue: string, oldRowData?: any, rowid: string, iCol: number, iRow: number, mode: "cell" | "addForm" | "editForm" | "add" | "edit", cmName: string, cm: ColumnModel, td?: HTMLTableDataCellElement, tr?: HTMLTableRowElement }) => boolean);
edithidden?: boolean;
email?: boolean | ((this: BodyTable, options: { oldValue: string, newValue: string, oldRowData?: any, rowid: string, iCol: number, iRow: number, mode: "cell" | "addForm" | "editForm" | "add" | "edit", cmName: string, cm: ColumnModel, td?: HTMLTableDataCellElement, tr?: HTMLTableRowElement }) => boolean);
integer?: boolean | ((this: BodyTable, options: { oldValue: string, newValue: string, oldRowData?: any, rowid: string, iCol: number, iRow: number, mode: "cell" | "addForm" | "editForm" | "add" | "edit", cmName: string, cm: ColumnModel, td?: HTMLTableDataCellElement, tr?: HTMLTableRowElement }) => boolean);
maxValue?: number;
minValue?: number;
number?: boolean | ((this: BodyTable, options: { oldValue: string, newValue: string, oldRowData?: any, rowid: string, iCol: number, iRow: number, mode: "cell" | "addForm" | "editForm" | "add" | "edit", cmName: string, cm: ColumnModel, td?: HTMLTableDataCellElement, tr?: HTMLTableRowElement }) => boolean);
required?: boolean | ((this: BodyTable, options: { oldValue: string, newValue: string, oldRowData?: any, rowid: string, iCol: number, iRow: number, mode: "cell" | "addForm" | "editForm" | "add" | "edit", cmName: string, cm: ColumnModel, td?: HTMLTableDataCellElement, tr?: HTMLTableRowElement }) => boolean);
time?: boolean | ((this: BodyTable, options: { oldValue: string, newValue: string, oldRowData?: any, rowid: string, iCol: number, iRow: number, mode: "cell" | "addForm" | "editForm" | "add" | "edit", cmName: string, cm: ColumnModel, td?: HTMLTableDataCellElement, tr?: HTMLTableRowElement }) => boolean);
url?: boolean | ((this: BodyTable, options: { oldValue: string, newValue: string, oldRowData?: any, rowid: string, iCol: number, iRow: number, mode: "cell" | "addForm" | "editForm" | "add" | "edit", cmName: string, cm: ColumnModel, td?: HTMLTableDataCellElement, tr?: HTMLTableRowElement }) => boolean);
}
interface ColumnModelWithoutLabel {
align?: "left" | "center" | "right";
autoResizable?: boolean; // default value false
autoResizing?: { minColWidth?: number, maxColWidth?: number, compact?: boolean };
cellattr?: "string" | ((this: BodyTable, rowId: string, cellValue: any, rowObject: any, cm: ColumnModel, rdata: any, formattedCellValue: string) => string);
cellBuilder?: (this: BodyTable, cellValue: any, options: FormatterOptions, rowObject: any, action?: "edit" | "add") => string;
classes?: string; // spaceSeparatedCssClasses
convertOnSave?: (this: BodyTable, options: { newValue: any, cm: ColumnModel, oldValue: any, id: string, item: any, iCol: number }) => any;
createColumnIndex?: boolean;
datefmt?: string;
editable?: boolean | "hidden" | "disabled" | "readonly" | ((options: { rowid: string, iCol: number, iRow: number, mode: "cell" | "addForm" | "editForm" | "add" | "edit", cmName: string, cm: ColumnModel, td?: HTMLTableDataCellElement, tr?: HTMLTableRowElement, trFrozen?: HTMLTableRowElement, dataElement?: Element, dataWidth?: number }) => boolean | "hidden" | "disabled" | "readonly"); // default value false
editoptions?: EditOptions;
editrules?: EditOrSearchRules;
edittype?: "text" | "textarea" | "checkbox" | "select" | "password" | "button" | "image" | "file" | "custom";
firstsortorder?: "asc" | "desc"; // default value "asc"
fixed?: boolean; // default value false
formatoptions?: any; // TODO: define formatoptions for different standard formatters
formatter?: "integer" | "number" | "currency" | "date" | "select" | "actions" | "checkbox" | "checkboxFontAwesome4" | "showlink" | "email" | "link" | string | ((this: BodyTable, cellValue: any, options: FormatterOptions, rowObject: any, action?: "edit" | "add") => string);
formoptions?: {
elmprefix?: string;
elmsuffix?: string;
label?: string;
rowabove?: boolean; // false
rowcontent?: string; // ""
rowpos?: number;
colpos?: number;
};
frozen?: boolean; // default value false
jsonmap?: (this: BodyTable, item: any, options: { cmName: string, iItem: number }) => any;
headerTitle?: string;
hidden?: boolean; // default value false
hidedlg?: boolean;
index?: string;
key?: boolean;
labelAlign?: "left" | "center" | "right" | "likeData";
labelClasses?: string;
lso?: "asc" | "desc" | "asc-desc" | "desc-asc" | "" | string;
name: string;
resizable?: boolean;
rotated?: boolean;
saveLocally?: (this: BodyTable, options: { newValue: any, newItem: Object, oldItem: Object, id: string, rowid: string, cm: ColumnModel, cmName: string, iCol: number }) => void;
search?: boolean;
searchoptions?: SearchOptions;
searchrules?: EditOrSearchRules;
sortable?: boolean;
sortfunc?: (a: any, b: any, direction: 1 | -1, aItem: any, bItem: any) => any;
sortIconName?: (this: BodyTable, options: { order: "asc" | "desc", iCol: number, cm: ColumnModel }) => string; // return CSS classes
sorttype?: "integer" | "int" | "number" | "currency" | "float" | "numeric" | "boolean" | "date" | "datetime" | "text" | string | ((this: BodyTable, value: any, item: any) => any);
summaryRound?: number; // exponent used in Math.pow during rounding of summary values during data grouping
summaryRoundType?: "fixed" | "round"; // can be used during calculation of summary values during data grouping
summaryType?: "sum" | "min" | "max" | "count" | "avg"; // can be used in data grouping
summaryFormat?: (this: BodyTable, group: GroupInformation, cellData: string, cellValue: any, cm: ColumnModel, summary: GroupSummaryInformation) => string;
stype?: "select" | "checkbox" | "custom" | "text"; // default value "text"
template?: "actions" | "integer" | "integerStr" | "number" | "numberStr" | "booleanCheckbox" | "booleanCheckboxFa" | string | ColumnModel;
title?: boolean;
unformat?: (this: BodyTable, cellValue: string, options: { rowId: string, colModel: ColumnModel }, dataElement: Element) => string;
viewable?: boolean; // default value true
width?: number; // default value 150
widthOrg?: number; // used internally by jqGrid
xmlmap?: (this: BodyTable, item: any, options: { cmName: string, iItem: number }) => any;
[propName: string]: any; // allow to have any number of other properties
}
interface ColumnModel extends ColumnModelWithoutLabel {
label?: string;
}
interface ReloadGridOptions {
current?: boolean;
fromServer?: boolean;
page?: number;
}
type AddRowDataPosition = "first" | "last" | "before" | "after" | "afterSelected" | "beforeSelected";
type LoadType = "disable" | "enable" | "block";
type FormIcon = [boolean, "left"|"right", string];
type NavKeys = [boolean, number, number]; // [shouldBeUsed, upKeyCode, downKeyCode]: [false,38,40]
interface FormEditingOptions extends EditFormLocaleOptions {
_savedData?: { [propName: string]: any };
addedrow?: AddRowDataPosition;
afterclickPgButtons?: (this: BodyTable, whichButton: "next" | "prev", $form: JQuery, rowid: string) => void;
afterComplete?: (this: BodyTable, jqXhr: JQueryXHR, postdata: Object | string, $form: JQuery, editOrAdd: "edit" | "add") => void;
afterShowForm?: (this: BodyTable, $form: JQuery, editOrAdd: "edit" | "add") => void;
afterSubmit?: (this: BodyTable, jqXhr: JQueryXHR, postdata: Object | string, editOrAdd: "edit" | "add") => void;
ajaxEditOptions?: JQueryAjaxSettings;
beforeCheckValues?: (this: BodyTable, postdata: Object | string, $form: JQuery, editOrAdd: "edit" | "add") => Object | void;
beforeInitData?: (this: BodyTable, $form: JQuery, editOrAdd: "edit" | "add") => BooleanFeedbackValues;
beforeShowForm?: (this: BodyTable, $form: JQuery, editOrAdd: "edit" | "add") => void;
beforeSubmit?: (this: BodyTable, postdata: Object | string, $form: JQuery, editOrAdd: "edit" | "add") => [true] | [true, any] | true | null | undefined | [false, string];
bottominfo?: string;
checkOnSubmit?: boolean;
checkOnUpdate?: boolean;
clearAfterAdd?: boolean;
closeAfterEdit?: boolean;
closeicon?: [boolean, string, string]; // [true,"left","fa fa-undo"]
closeOnEscape?: boolean;
commonIconClass?: string; // "fa"
dataheight?: number | "auto" | "100%" | string; // "auto"
datawidth?: number | "auto" | "100%" | string; // "auto"
drag?: boolean;
editData?: any;
errorTextFormat?: (this: BodyTable, jqXhr: JQueryXHR, editOrAdd: "edit" | "add") => void;
jqModal?: boolean;
height?: number | "auto" | "100%" | string; // "auto"
left?: number;
modal?: boolean;
mtype?: string | ((this: BodyTable, rowid: string, editOrAdd: "edit" | "add", options: FormEditingOptions, postdata: Object | string) => string);
navkeys?: NavKeys; // [false,38,40]
nextIcon?: string; // "fa fa-caret-right"
onclickPgButtons?: (this: BodyTable, whichButton: "next" | "prev", $form: JQuery, rowid: string) => void;
onclickSubmit?: (this: BodyTable, options: FormEditingOptions, postdata: Object | string, editOrAdd: "edit" | "add") => Object | string;
onClose?: (this: BodyTable, selector: string | Element | JQuery) => boolean;
onInitializeForm?: (this: BodyTable, $form: JQuery, editOrAdd: "edit" | "add") => void;
overlayClass?: string; // "ui-widget-overlay"
prevIcon?: string; // "fa fa-caret-left"
processing?: boolean;
reloadAfterSubmit?: boolean;
reloadGridOptions?: ReloadGridOptions;
removemodal?: boolean;
resize?: boolean;
saveicon?: FormIcon; // [true,"left","fa fa-floppy-o"]
savekey?: [boolean, number]; // [false,13]
savetext?: string; // default from $.jgrid.locales[currentLocale].defaults.savetext or $.jgrid.defaults.savetext
saveui?: LoadType; // "enable"
serializeEditData?: (this: BodyTable, postdata: Object) => Object | string;
skipPostTypes?: string[]; // ["image","file"]
top?: number;
topinfo?: string;
useDataProxy?: boolean;
url?: string | ((this: BodyTable, rowid: string, editOrAdd: "edit" | "add", postdata: Object | string, options: FormEditingOptions) => string);
viewPagerButtons?: boolean;
width?: number | "auto" | "100%" | string; // "auto"
[propName: string]: any; // allow to have any number of other properties
}
interface FormDeletingOptions extends DeleteFormLocaleOptions {
afterComplete?: (this: BodyTable, jqXhr: JQueryXHR, postdata: Object | string, $form: JQuery, rowids: string[]) => void;
afterShowForm?: (this: BodyTable, $form: JQuery) => void;
afterSubmit?: (this: BodyTable, jqXhr: JQueryXHR, postdata: Object | string, rowids: string[]) => void;
ajaxDelOptions?: JQueryAjaxSettings;
beforeInitData?: (this: BodyTable, $form: JQuery) => BooleanFeedbackValues;
beforeShowForm?: (this: BodyTable, $form: JQuery) => void;
beforeSubmit?: (this: BodyTable, postdata: Object | string, rowids: string[]) => [true] | [true, any] | undefined | [false, string];
cancelicon?: FormIcon; // [true,"left","fa fa-ban"]
closeOnEscape?: boolean;
commonIconClass?: string; // "fa"
dataheight?: number | "auto" | "100%" | string; // "auto"
datawidth?: number | "auto" | "100%" | string; // "auto"
delData?: any;
delicon?: FormIcon; // [true,"left","fa fa-trash-o"]
deltext?: string; // default from $.jgrid.locales[currentLocale].defaults.deltext or $.jgrid.defaults.deltext or "Deleting..."
delui?: LoadType; // "disable"
drag?: boolean;
errorTextFormat?: (this: BodyTable, jqXhr: JQueryXHR) => string;
height?: number | "auto" | "100%" | string; // "auto"
jqModal?: boolean;
idSeparator?: string; // ","
left?: number;
modal?: boolean;
mtype?: string; // "POST"
onclickSubmit?: (this: BodyTable, options: FormDeletingOptions, postdata: Object | string, rowids: string[]) => Object | string;
onClose?: (this: BodyTable, selector: string | Element | JQuery) => boolean;
overlay?: number;
processing?: boolean; // internal used
reloadAfterSubmit?: boolean;
reloadGridOptions?: ReloadGridOptions;
removemodal?: boolean;
resize?: boolean;
serializeDelData?: (this: BodyTable, postdata: Object | string, rowids: string[]) => Object | string;
top?: number;
toTop?: boolean;
url?: string | ((this: BodyTable, rowid: string, postdata: Object | string, options: FormDeletingOptions, rowids: string[]) => string);
useDataProxy?: boolean;
width?: number | "auto" | "100%" | string; // "auto"
[propName: string]: any; // allow to have any number of other properties
}
interface FormViewingOptions extends ViewLocaleOptions, CreateModalOptions {
beforeShowForm?: (this: BodyTable, $form: JQuery) => void;
beforeInitData?: (this: BodyTable, $form: JQuery) => BooleanFeedbackValues;
closeicon?: FormIcon; // [true, "left", getIcon("form.cancel")]
commonIconClass?: string; // getIcon("form.common")
dataheight?: number | "auto" | "100%" | string; // "auto"
datawidth?: number | "auto" | "100%" | string; // "auto"
labelswidth?: number | string; // "", 350, "30%" and so on
prevIcon?: string; // getIcon("form.prev")
nextIcon?: string; // getIcon("form.next")
navkeys?: NavKeys; // [false, 38, 40]
modal?: boolean; // false
viewPagerButtons?: boolean; // true
}
interface SearchingDialogOptions extends SearchLocaleOptions, CreateModalOptions {
afterChange?: (this: BodyTable, $filter: JQuery, options: SearchingDialogOptions, filterOptions: JqFilterOptions, searchFilterDiv: JqFilterDiv) => void;
afterShowSearch?: (this: BodyTable, $filter: JQuery) => void;
afterRedraw?: (this: BodyTable, options: JqFilterOptions, searchFilterDiv: JqFilterDiv) => void;
beforeShowSearch?: (this: BodyTable, $filter: JQuery) => BooleanFeedbackValues;
closeAfterSearch?: boolean; // default false
closeAfterReset?: boolean; // default false
columns?: ColumnModel[];
commonIconClass?: string;
dataheight?: number | "auto" | "100%" | string; // "auto"
errorcheck?: boolean; // default true,
groupOps?: { op: string, text: string }[];
layer?: null | string; // can be id. be used in createModal as appendsel
loadDefaults?: boolean;
multipleSearch?: boolean; // default false
multipleGroup?: boolean; // default false
sField?: string; // default "searchField"
sValue?: string; // default "searchString"
sOper?: string; // default "searchOper"
sFilter?: string; // default "filters"
searchForAdditionalProperties?: boolean;
searchOnEnter?: boolean; // default false
showOnLoad: boolean; // default false
showQuery?: boolean; // default false,
sopt?: null; // used only if .searchoptions.sopt is undefined
stringResult?: boolean;
onInitializeSearch?: (this: BodyTable, $filter: JQuery) => void;
onSearch?: (this: BodyTable, filters: Filter) => void;
onReset?: (this: BodyTable) => BooleanFeedbackValues;
operands?: {
eq: string; // default "="
ne: string; // default "<>"
lt: string; // default "<"
le: string; // default "<="
gt: string; // default ">"
ge: string; // default ">="
bw: string; // default "LIKE"
bn: string; // default "NOT LIKE"
"in": string; // default "IN"
ni: string; // default "NOT IN"
ew: string; // default