framework7
Version:
Full featured mobile HTML framework for building iOS & Android apps
121 lines (117 loc) • 5.16 kB
TypeScript
import { Dom7Instance } from 'dom7';
import Framework7, { CSSSelector, Framework7EventsClass, Framework7Plugin } from '../app/app-class';
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
/** 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 */
vertical?: boolean
/** Makes vertical range slider reversed */
verticalReversed?: boolean
/** Limit knob position to the size of range bar */
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 : Dom7Instance
/** Range Slider input HTML element */
inputEl: HTMLElement
/** Dom7 instance with range slider input HTML element */
$inputEl: Dom7Instance
/** 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[]
/** 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;