import BaseFoundation, { DefaultAdapter } from '../base/foundation';
export interface Item {
[x: string]: any;
transform?: (value: any, text: string) => string;
value: any;
text?: string;
disabled?: boolean;
}
export interface ScrollItemAdapter
, S = Record, I = Item> extends DefaultAdapter {
setPrependCount: (prependCount: number) => void;
setAppendCount: (appendCount: number) => void;
setSelectedNode: (el: HTMLElement) => void;
isDisabledIndex: (i: number) => boolean;
notifySelectItem: (data: I) => void;
scrollToCenter: (selectedNode: Element, scrollWrapper?: Element, duration?: number) => void;
}
export default class ItemFoundation
, S = Record, I = Item> extends BaseFoundation, P, S> {
_cachedSelectedNode: HTMLElement;
selectIndex(index: number, listWrapper: HTMLElement): void;
selectNode(node: HTMLElement, listWrapper: HTMLElement): void;
/**
*
* @param {HTMLElement} listWrapper
* @param {HTMLElement} scrollWrapper
* @param {number} ratio
* @returns {boolean}
*/
shouldAppend(listWrapper: HTMLElement, scrollWrapper: HTMLElement, ratio?: number): number | false;
/**
*
* @param {HTMLElement} listWrapper
* @param {HTMLElement} scrollWrapper
* @param {number} ratio
*
* @returns {boolean}
*/
shouldPrepend(listWrapper: HTMLElement, scrollWrapper: HTMLElement, ratio?: number): number;
/**
*
* @param {HTMLElement} listWrapper
* @param {HTMLElement} wrapper
* @param {Function} [callback]
*/
initWheelList(listWrapper: HTMLElement, wrapper: HTMLElement, callback: () => void): void;
/**
*
* @param {HTMLElement} listWrapper
* @param {HTMLElement} wrapper
* @param {HTMLElement} [nearestNode]
*/
adjustInfiniteList(listWrapper: HTMLElement, wrapper: HTMLElement, nearestNode: HTMLElement): void;
/**
*
* @param {HTMLElement} listWrapper
* @param {HTMLElement} selector
*
*/
getNearestNodeInfo(listWrapper: HTMLElement, selector: HTMLElement): {
nearestNode: HTMLElement;
nearestIndex: number;
};
/**
*
* @param {HTMLElement} listWrapper
*
* @param {HTMLElement|null}
*/
getTargetNode(e: any, listWrapper: HTMLElement): {
targetNode: HTMLLIElement;
targetIndex: number;
indexInList: number;
infoInList: any;
};
}