@jswf/core
Version:
JavaScript Window Framework
249 lines (248 loc) • 7.52 kB
TypeScript
import { BaseView, WINDOW_PARAMS, WINDOW_EVENT_MAP } from "./BaseView";
import "../scss/ListView.scss";
export interface LISTVIEW_EVENT_ITEM_CLICK {
itemIndex: number;
subItemIndex: number;
event: MouseEvent;
}
export interface LISTVIEW_EVENT_DRAG_START {
itemIndex: number;
subItemIndex: number;
event: DragEvent;
}
export interface ListViewEventMap extends WINDOW_EVENT_MAP {
itemClick: [LISTVIEW_EVENT_ITEM_CLICK];
itemDblClick: [LISTVIEW_EVENT_ITEM_CLICK];
itemDragStart: [LISTVIEW_EVENT_DRAG_START];
}
/**
*ListView用クラス
*
* @export
* @class ListView
* @extends {BaseView}
*/
export declare class ListView extends BaseView<ListViewEventMap> {
private headers;
private resizers;
private itemArea;
private overIndex;
private lastIndex;
private selectIndexes;
private sortIndex;
private sortVector;
private columnWidth;
private columnAutoIndex;
private areaWidth;
/**
*Creates an instance of ListView.
* @param {*} [params] ウインドウ作成パラメータ
* @memberof ListView
*/
constructor(params?: WINDOW_PARAMS);
/**
*カラムのサイズを設定
*
* @param {number} index
* @param {number} size
* @memberof ListView
*/
setColumnWidth(index: number, size: number): void;
/**
*カラムのスタイルを設定
*
* @param {number} col カラム番号
* @param {('left'|'right'|'center')} style スタイル
* @memberof ListView
*/
setColumnStyle(col: number, style: "left" | "right" | "center"): void;
/**
*カラムのスタイルを複数設定
*
* @param {(('left' | 'right' | 'center')[])} styles スタイル
* @memberof ListView
*/
setColumnStyles(styles: ("left" | "right" | "center")[]): void;
/**
*ヘッダを追加
*配列にすると複数追加でき、さらに配列を含めるとサイズが指定できる
* @param {(string|(string|[string,number])[])} labels ラベル | [ラベル,ラベル,・・・] | [[ラベル,幅],[ラベル,幅],・・・]
* @param {number} [size] 幅
* @memberof ListView
*/
addHeader(label: string | (string | [string, number])[], size?: number): void;
/**
*アイテムのソートを行う
*
* @param {number} [index] カラム番号
* @param {boolean} [order] 方向 true:昇順 false:降順
* @memberof ListView
*/
sortItem(index?: number, order?: boolean): void;
/**
*アイテムを選択する
*すでにある選択は解除される
* @param {(number | number[])} index レコード番号
* @memberof ListView
*/
selectItem(index: number | number[]): void;
/**
*アイテムの選択を全て解除する
*
* @memberof ListView
*/
clearSelectItem(): void;
/**
*アイテムの選択を追加する
*
* @param {(number | number[])} index レコード番号
* @memberof ListView
*/
addSelectItem(index: number | number[]): void;
/**
*アイテムの選択を解除する
*
* @param {(number | number[])} index レコード番号
* @memberof ListView
*/
delSelectItem(index: number | number[]): void;
/**
*アイテムの数を返す
*
* @returns {number} アイテム数
* @memberof ListView
*/
getItemCount(): number;
/**
*アイテムが選択されているか返す
*
* @param {number} index レコード番号
* @returns {boolean}
* @memberof ListView
*/
isSelectItem(index: number): boolean;
private static getIndexOfNode;
/**
*アイテムを全て削除する
*
* @memberof ListView
*/
clearItem(): void;
/**
*対象セルのノードを取得
*
* @param {number} row
* @param {number} col
* @returns
* @memberof ListView
*/
getCell(row: number, col: number): HTMLElement & {
value?: unknown;
} | null;
/**
*アイテムに値を設定する
*
* @param {number} index レコード番号
* @param {*} value 値
* @memberof ListView
*/
setItemValue(index: number, value: unknown): void;
/**
*アイテムの値を取得する
*
* @param {number} index レコード番号
* @returns 値
* @memberof ListView
* @returns {string} アイテムに設定されている値
*/
getItemValue(index: number): unknown;
/**
*全てのアイテムの値を取得する
*
* @returns {unknown[]}
* @memberof ListView
*/
getItemValues(): unknown[];
/**
*アイテムのテキスト内容を取得
*
* @param {number} row 行
* @param {number} col 列
* @returns {string} アイテムに設定されているテキスト
* @memberof ListView
*/
getItemText(row: number, col: number): string | null;
/**
*最初に選択されているアイテムを返す
*
* @returns {number} 選択されているアイテム番号(見つからなかったら-1)
* @memberof ListView
*/
getSelectItem(): number;
/**
*選択されている値を全て取得する
*
* @returns {unknown[]} 選択されているアイテムの値
* @memberof ListView
*/
getSelectValues(): unknown[];
/**
*指定行のセルノードを返す
*
* @param {number} row
* @returns
* @memberof ListView
*/
getLineCells(row: number): HTMLElement[];
/**
*アイテムを追加する
*アイテムはテキストかノードが指定できる
*配列を渡した場合は、複数追加となる
* @param {(string|(string|HTMLElement)[])} value テキストもしくはノード
* @returns
* @memberof ListView
*/
addItem(value: string | number | HTMLElement | ((string | number | HTMLElement)[]), itemValue?: unknown): number;
/**
*ソート用のキーを設定する
*
* @param {number} row レコード番号
* @param {number} column カラム番号
* @param {*} value キー
* @returns
* @memberof ListView
*/
setSortKey(row: number, column: number, value: unknown): boolean;
/**
*ソート用のキーをまとめて設定する
*
* @param {number} row レコード番号
* @param {unknown[]} values キー配列
* @memberof ListView
*/
setSortKeys(row: number, values: unknown[]): void;
/**
*アイテムを書き換える
*
* @param {number} row レコード番号
* @param {number} column カラム番号
* @param {(string|HTMLElement)} value テキストもしくはノード
* @returns
* @memberof ListView
*/
setItem(row: number, column: number, value: string | number | HTMLElement): boolean;
/**
*ヘッダに合わせてカラムサイズを調整する
*基本的には直接呼び出さない
* @protected
* @memberof ListView
*/
protected resize(): void;
/**
*
*
* @param {boolean} flag
* @memberof ListView
*/
onLayout(flag: boolean): void;
}