framework7
Version:
Full featured mobile HTML framework for building iOS & Android apps
122 lines (117 loc) • 5.3 kB
TypeScript
import { Dom7Array } from 'dom7';
import Framework7, {
CSSSelector,
Framework7EventsClass,
Framework7Plugin,
} from '../app/app-class.js';
export namespace Stepper {
interface Parameters {
/** Stepper element. HTMLElement or string with CSS selector of stepper element */
el: HTMLElement | CSSSelector;
/** Stepper input element or CSS selector of input element. If not specified, will try to look for <input> inside of stepper element */
inputEl?: HTMLElement | CSSSelector;
/** Minimal step between values (default 1) */
step?: number;
/** Minimum value (default 0) */
min?: number;
/** Maximum value (default 100) */
max?: number;
/** Initial value (default 0) */
value?: number;
/** When enabled, incrementing beyond maximum value sets value to minimum value; likewise, decrementing below minimum value sets value to maximum value (default false) */
wraps?: boolean;
/** When enabled it will repeatedly increase/decrease values while you tap and hold plus/minus buttons (default false) */
autorepeat?: boolean;
/** When enabled it will increase autorepeat ratio based on how long you hold the button (default false) */
autorepeatDynamic?: boolean;
/** Stepper value element or CSS selector of this element where Stepper will insert value. If not specified, and there is no inputEl passed will try to look for <div class="stepper-value"> inside of stepper element */
valueEl?: HTMLElement | CSSSelector;
/** Function to format value in required format. It accepts current value and must return new formatted value */
formatValue?: (value: number) => string | number;
/** */
manualInputMode?: boolean;
/** Enables manual input mode. This mode allows to type value from keyboar and check fractional part with defined accurancy. Also, step parameter is ignored when typing in this mode */
decimalPoint?: number;
/** Number of digits after dot, when in manual input mode */
buttonsEndInputMode?: boolean;
/** Object with events handlers.. */
on?: {
[ ]?: Events[event];
};
}
interface Stepper extends Framework7EventsClass<Events> {
/** Link to global app instance */
app: Framework7;
/** Stepper HTML element */
el: HTMLElement;
/** Dom7 instance with stepper HTML element */
$el: Dom7Array;
/** Stepper min value */
min: number;
/** Stepper max value */
max: number;
/** Stepper value */
value: number;
/** Stepper input HTML element */
inputEl: HTMLElement;
/** Dom7 instance with stepper input HTML element */
$inputEl: Dom7Array;
/** Stepper value container HTML element */
valueEl: HTMLElement;
/** Dom7 instance with stepper value container HTML element */
$valueEl: HTMLElement;
/** Stepper parameters */
params: Parameters;
/** Returns stepper value */
getValue(): number;
/** Set new stepper value */
setValue(value: number): Stepper;
/** Increment stepper value, similar to clicking on its "plus" button */
incremenet(): Stepper;
/** Increment stepper value, similar to clicking on its "plus" button */
plus(): Stepper;
/** Decrement stepper value, similar to clicking on its "minus" button */
decrement(): Stepper;
/** Decrement stepper value, similar to clicking on its "minus" button */
minus(): Stepper;
/** Destroy stepper */
destroy(): void;
}
interface Events {
/** Event will be triggered when stepper value has been changed. As an argument event handler receives stepper instance and stepper value */
change: (stepper: Stepper, value: number) => void;
/** Event will be triggered right before Stepper instance will be destroyed. As an argument event handler receives stepper instance */
beforeDestroy: (stepper: Stepper) => void;
}
interface DomEvents {
/** Event will be triggered when Stepper value has been changed*/
'stepper:change': () => void;
/** Event will be triggered right before Stepper instance will be destroyed */
'stepper:beforedestroy': () => void;
}
interface AppMethods {
stepper: {
/** create Stepper instance */
create(parameters: Parameters): Stepper;
/** get Stepper instance by HTML element */
get(el: HTMLElement | CSSSelector | Stepper): Stepper;
/** get Stepper value */
getValue(el: HTMLElement | CSSSelector | Stepper): number | number[];
/** set new Stepper value */
setValue(el: HTMLElement | CSSSelector | Stepper, value: number | number[]): void;
/** destroy Stepper instance */
destroy(el: HTMLElement | CSSSelector | Stepper): void;
};
}
interface AppParams {
stepper?: Parameters | undefined;
}
interface AppEvents {
/** Event will be triggered when stepper value has been changed. As an argument event handler receives stepper instance and stepper value */
stepperChange: (stepper: Stepper, value: number) => void;
/** Event will be triggered right before Stepper instance will be destroyed. As an argument event handler receives stepper instance */
stepperBeforeDestroy: (stepper: Stepper) => void;
}
}
declare const StepperComponent: Framework7Plugin;
export default StepperComponent;