@coders-tm/vue-number-format
Version:
Easy formatted numbers, currency and percentage with input/directive mask for Vue.js
287 lines (279 loc) • 7.72 kB
TypeScript
import * as vue from 'vue';
import { DirectiveBinding, VNode } from 'vue';
type Input = number | string;
interface Options$1 {
prefix: string;
suffix: string;
separator: string;
decimal: string;
precision: number;
minimumFractionDigits: number;
prefill: boolean;
reverseFill: boolean;
min?: number;
max?: number;
nullValue: string;
}
interface CustomInputElement extends HTMLInputElement {
options: Options$1;
masked?: Input;
unmasked?: Input;
oldValue?: Input;
cleanup: () => void;
}
declare const _default$2: vue.DefineComponent<{
modelValue: {
type: (StringConstructor | NumberConstructor)[];
required: true;
};
nullValue: {
type: (StringConstructor | NumberConstructor)[];
default: any;
};
masked: BooleanConstructor;
readonly: BooleanConstructor;
disabled: BooleanConstructor;
reverseFill: {
type: BooleanConstructor;
default: any;
};
prefill: {
type: BooleanConstructor;
default: any;
};
precision: {
type: NumberConstructor;
default: () => any;
};
minimumFractionDigits: {
type: NumberConstructor;
default: () => any;
};
decimal: {
type: StringConstructor;
default: () => any;
};
min: {
type: NumberConstructor;
default: () => any;
};
max: {
type: NumberConstructor;
default: () => any;
};
separator: {
type: StringConstructor;
default: () => any;
};
prefix: {
type: StringConstructor;
default: () => any;
};
suffix: {
type: StringConstructor;
default: () => any;
};
inputmode: {
type: StringConstructor;
default: () => any;
};
}, {
config: vue.ComputedRef<{
modelValue: string | number;
masked: boolean;
readonly: boolean;
disabled: boolean;
nullValue: string | number | undefined;
reverseFill: boolean | undefined;
prefill: boolean | undefined;
precision: number | undefined;
minimumFractionDigits: number | undefined;
decimal: string | undefined;
min: number | undefined;
max: number | undefined;
separator: string | undefined;
prefix: string | undefined;
suffix: string | undefined;
inputmode: string | undefined;
"onUpdate:model-value": ((...args: any[]) => any) | undefined;
"onInput:model-value": ((...args: any[]) => any) | undefined;
}>;
maskedValue: vue.Ref<string | number>;
unmaskedValue: vue.Ref<Input | undefined>;
input: (event: Event) => void;
blur: () => void;
change: () => void;
}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, ("update:model-value" | "input:model-value")[], "update:model-value" | "input:model-value", vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
modelValue: {
type: (StringConstructor | NumberConstructor)[];
required: true;
};
nullValue: {
type: (StringConstructor | NumberConstructor)[];
default: any;
};
masked: BooleanConstructor;
readonly: BooleanConstructor;
disabled: BooleanConstructor;
reverseFill: {
type: BooleanConstructor;
default: any;
};
prefill: {
type: BooleanConstructor;
default: any;
};
precision: {
type: NumberConstructor;
default: () => any;
};
minimumFractionDigits: {
type: NumberConstructor;
default: () => any;
};
decimal: {
type: StringConstructor;
default: () => any;
};
min: {
type: NumberConstructor;
default: () => any;
};
max: {
type: NumberConstructor;
default: () => any;
};
separator: {
type: StringConstructor;
default: () => any;
};
prefix: {
type: StringConstructor;
default: () => any;
};
suffix: {
type: StringConstructor;
default: () => any;
};
inputmode: {
type: StringConstructor;
default: () => any;
};
}>> & {
"onUpdate:model-value"?: ((...args: any[]) => any) | undefined;
"onInput:model-value"?: ((...args: any[]) => any) | undefined;
}, {
nullValue: string | number;
masked: boolean;
readonly: boolean;
disabled: boolean;
reverseFill: boolean;
prefill: boolean;
precision: number;
minimumFractionDigits: number;
decimal: string;
min: number;
max: number;
separator: string;
prefix: string;
suffix: string;
inputmode: string;
}>;
declare const _default$1: {
beforeMount: (el: CustomInputElement, { value, modifiers }: DirectiveBinding, vnode: VNode) => void;
mounted: (el: CustomInputElement) => void;
updated: (el: CustomInputElement, { value, oldValue, modifiers }: DirectiveBinding, vnode: VNode) => void;
unmounted: (el: CustomInputElement) => void;
};
interface Options {
prefix?: string;
suffix?: string;
separator?: string;
decimal?: string;
inputmode?: string;
precision?: number;
minimumFractionDigits?: number;
prefill?: boolean;
reverseFill?: boolean;
min?: number;
max?: number;
nullValue?: string;
}
declare const _default: {
prefix: string;
suffix: string;
separator: string;
decimal: string;
inputmode: string;
precision: number;
minimumFractionDigits: null;
prefill: boolean;
reverseFill: boolean;
min: null;
max: null;
nullValue: string;
};
interface Config {
prefix: string;
suffix: string;
separator: string;
decimal: string;
precision: number;
minimumFractionDigits: number;
prefill: boolean;
reverseFill: boolean;
min: number;
max: number;
nullValue: string;
}
/**
* Number format class
* @param {Options} config
*/
declare class NumberFormat {
options: Config;
input: Input;
number: Input;
isClean: boolean;
isCustomDecimal: boolean;
noPreSuffix: boolean;
hasPreOrSuffix: boolean;
prefix: string;
preSufRegExp?: RegExp;
prefixRegExp?: RegExp;
suffixRegExp?: RegExp;
numberRegExp: RegExp;
cleanRegExp: RegExp;
negativeRegExp: RegExp;
constructor(config?: Options);
isNull(): boolean;
clean(clean?: boolean): this;
sign(): "" | "-";
toFixed(): string;
toNumber(str: Input): number;
numberOnly(regExp?: RegExp): string;
inputWithPreOrSuffix(): boolean;
isNegative(): boolean;
isNumber(val?: any): boolean;
numbers(): string;
unformatNumber(): string;
realNumber(): number;
parts(num: Input, separator?: string): Input[];
addSeparator(): string;
/**
* Format the input with default config if there is no constructor config
* @param {Input} input
* @return {String}
*/
format(input: Input): string;
/**
* Unformat the input with default config if there is no constructor config
* @param {Input} input
* @return {String}
*/
unformat(input: Input): string;
}
declare const VueNumberFormat: {
install(app: any, config?: Options): void;
};
export { NumberFormat, _default$2 as component, VueNumberFormat as default, _default$1 as directive, _default as options };