framework7
Version:
Full featured mobile HTML framework for building iOS & Android apps
144 lines (139 loc) • 6.17 kB
TypeScript
import { Dom7Array } from 'dom7';
import Framework7, {
CSSSelector,
Framework7EventsClass,
Framework7Plugin,
} from '../app/app-class.js';
export namespace Range {
interface Parameters {
/** Range Slider element. HTMLElement or string with CSS selector of range slider element */
el: HTMLElement | CSSSelector;
/** Range Slider input element or CSS selector of input element. If not specified, will try to look for input type="range" inside of range slider element */
inputEl?: HTMLElement | CSSSelector;
/** Enable dual range slider (default false) */
dual?: boolean;
/** Minimal step between values (default 1) */
step?: number;
/** Enables additional label around range slider knob (default false) */
label?: boolean;
/** Method must return formatted range knob label text. As an argument it receives label value */
formatLabel?: (value: number) => string;
/** Minimum value */
min?: number;
/** Maximum value */
max?: number;
/** Initial value. Number in case of single range, and array of values in case of dual range */
value?: number | number[];
/** When enabled it is also possible to interact with range slider (change value) on range bar click and swipe (default true) */
draggableBar?: boolean;
/** Enables vertical range slider (default false) */
vertical?: boolean;
/** Makes vertical range slider reversed (default false) */
verticalReversed?: boolean;
/** Enables range slider scale (default false) */
scale?: boolean;
/** Number of scale steps (default 5) */
scaleSteps?: number;
/** Number of scale sub steps (each step will be divided by this value) (default 0) */
scaleSubSteps?: number;
/** Method must return formatted scale value. As an argument it receives currect scale step value. This method will be called as for each scale step. */
formatScaleLabel?: (value: number) => string;
/** Limit knob position to the size of range bar. By default enabled from iOS theme */
limitKnobPosition?: boolean;
/** Object with events handlers.. */
on?: {
[ ]?: Events[event];
};
}
interface Range extends Framework7EventsClass<Events> {
/** Link to global app instance */
app: Framework7;
/** Range HTML element */
el: HTMLElement;
/** Dom7 instance with range HTML element */
$el: Dom7Array;
/** Range Slider input HTML element */
inputEl: HTMLElement;
/** Dom7 instance with range slider input HTML element */
$inputEl: Dom7Array;
/** Range slider width (in px) */
rangeWidth: number;
/** Range slider height (in px) */
rangeHeight: number;
/** Boolean property indicating whether it is dual or not */
dual: boolean;
/** Range min value */
min: number;
/** Range max value */
max: number;
/** Range value */
value: number | number[];
/** Boolean property indicating whether scale is enabled or not */
scale: boolean;
/** Number of scale steps */
scaleSteps: number;
/** Number of scale sub steps */
scaleSubSteps: number;
/** Dom7 instance with generated scale HTML element */
$scaleEl: Dom7Array;
/** Array where each element represents HTMLElement of created range knob (2 knobs in case of dual slider) */
knobs: HTMLElement[];
/** Array where each element represent HTMLElement of created range knob label (2 labels in case of dual slider) */
labels: HTMLElement[];
/** Boolean property indicating whether it is vertical or not */
vertical: boolean;
/** Boolean property indicating whether it is vertical and reversed or not */
verticalReversed: boolean;
/** Range parameters */
params: Parameters;
/** Returns range slider value */
getValue(): number | number[];
/** Set new range slider value */
setValue(value: number | number[]): Range;
/** Destroy range slider */
destroy(): void;
}
interface Events {
/** Event will be triggered when range value has been changed. As an argument event handler receives range instance */
change: (range: Range) => void;
/** Event will be triggered on slider knob release after value change. As an argument event handler receives range instance */
changed: (range: Range) => void;
/** Event will be triggered right before Range slider instance will be destroyed */
beforeDestroy: (range: Range) => void;
}
interface DomEvents {
/** Event will be triggered when range value has been changed. As an argument event handler receives range instance */
'range:change': () => void;
/** Event will be triggered on slider knob release after value change. As an argument event handler receives range instance */
'range:changed': () => void;
/** Event will be triggered right before Range slider instance will be destroyed */
'range:beforedestroy': () => void;
}
interface AppMethods {
range: {
/** create Range Slider instance */
create(parameters: Parameters): Range;
/** get Range Slider instance by HTML element */
get(el: HTMLElement | CSSSelector | Range): Range;
/** get Range Slider value */
getValue(el: HTMLElement | CSSSelector | Range): number | number[];
/** set new Range Slider value */
setValue(el: HTMLElement | CSSSelector | Range, value: number | number[]): void;
/** destroy Range Slider instance */
destroy(el: HTMLElement | CSSSelector | Range): void;
};
}
interface AppParams {
range?: Parameters | undefined;
}
interface AppEvents {
/** Event will be triggered when range value has been changed. As an argument event handler receives range instance */
rangeChange: (range: Range) => void;
/** Event will be triggered on slider knob release after value change. As an argument event handler receives range instance */
rangeChanged: (range: Range) => void;
/** Event will be triggered right before Range slider instance will be destroyed */
rangeBeforeDestroy: (range: Range) => void;
}
}
declare const RangeComponent: Framework7Plugin;
export default RangeComponent;