or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

angular-integration.mdindex.mdphone-formatting.mdreact-integration.mdvanilla-javascript.md
tile.json

vanilla-javascript.mddocs/

Vanilla JavaScript Usage

Complete API reference for using Cleave.js in vanilla JavaScript applications with detailed configuration options and instance methods.

Capabilities

Constructor

Creates a new Cleave instance for formatting input elements.

/**
 * Construct a new Cleave instance by passing the configuration object
 * @param element - CSS selector string, HTMLElement, or NodeList  
 * @param options - Configuration options object
 */
constructor Cleave(element: string | HTMLElement | NodeList, options: CleaveOptions);

Usage Examples:

import Cleave from 'cleave.js';

// Using CSS selector
const cleave1 = new Cleave('#input-id', { creditCard: true });

// Using HTMLElement
const element = document.getElementById('input-id');
const cleave2 = new Cleave(element, { phone: true, phoneRegionCode: 'US' });

// Using NodeList (uses first element)
const elements = document.querySelectorAll('.cleave-input');
const cleave3 = new Cleave(elements, { numeral: true });

Instance Methods

Value Management

Get and set input values in both formatted and raw forms.

/**
 * Set the raw unformatted value
 * @param value - Raw value to set
 */
setRawValue(value: string): void;

/**
 * Get the raw unformatted value 
 * @returns Raw value without formatting
 */
getRawValue(): string;

/**
 * Get the current formatted display value
 * @returns Formatted value as displayed in input
 */
getFormattedValue(): string;

Usage Examples:

const cleave = new Cleave('#input', { creditCard: true });

// Set raw value (will be automatically formatted)
cleave.setRawValue('4111111111111111');

// Get values
console.log(cleave.getRawValue()); // "4111111111111111"
console.log(cleave.getFormattedValue()); // "4111 1111 1111 1111"

Date and Time Methods

Specialized methods for date and time formatted inputs.

/**
 * Get ISO format date string (date mode only)
 * @returns ISO date string or empty string if not in date mode
 */
getISOFormatDate(): string;

/**
 * Get ISO format time string (time mode only)  
 * @returns ISO time string or empty string if not in time mode
 */
getISOFormatTime(): string;

Usage Examples:

// Date formatting
const dateInput = new Cleave('#date', { 
  date: true, 
  datePattern: ['d', 'm', 'Y'] 
});
dateInput.setRawValue('25/12/2023');
console.log(dateInput.getISOFormatDate()); // "2023-12-25"

// Time formatting  
const timeInput = new Cleave('#time', { 
  time: true, 
  timePattern: ['h', 'm', 's'],
  timeFormat: '24'
});
timeInput.setRawValue('14:30:45');
console.log(timeInput.getISOFormatTime()); // "14:30:45"

Phone Methods

Methods specific to phone number formatting.

/**
 * Change the phone region code after initialization
 * @param regionCode - Two-letter country code
 */
setPhoneRegionCode(regionCode: string): void;

Usage Examples:

// Requires phone addon: <script src="cleave-phone.us.js"></script>
const phoneInput = new Cleave('#phone', { 
  phone: true, 
  phoneRegionCode: 'US' 
});

// Change region dynamically
phoneInput.setPhoneRegionCode('UK');

Lifecycle Methods

Instance lifecycle and cleanup methods.

/**
 * Remove event listeners and cleanup instance
 */
destroy(): void;

/**
 * String representation of the instance
 * @returns "[Cleave Object]"
 */
toString(): string;

Usage Examples:

const cleave = new Cleave('#input', { creditCard: true });

// Clean up when done
cleave.destroy();

// String representation
console.log(cleave.toString()); // "[Cleave Object]"

Configuration Options

Credit Card Formatting

Automatic credit card number formatting with type detection.

interface CreditCardOptions {
  creditCard: boolean; // Enable credit card formatting
  creditCardStrictMode?: boolean; // Enable strict validation (default: false)
  onCreditCardTypeChanged?: (type: CreditCardType) => void; // Type change callback
}

type CreditCardType = 'amex' | 'visa' | 'mastercard' | 'discover' | 'jcb' | 'dankort' | 'instapayment' | 'uatp' | 'mir' | 'unionPay' | 'general';

Usage Examples:

const creditCard = new Cleave('#cc', {
  creditCard: true,
  creditCardStrictMode: true,
  onCreditCardTypeChanged: function (type) {
    console.log('Detected card type:', type);
    // Update UI based on card type
    document.getElementById('card-icon').className = `card-${type}`;
  }
});

Phone Number Formatting

International phone number formatting with country-specific patterns.

interface PhoneOptions {
  phone: boolean; // Enable phone formatting
  phoneRegionCode?: string; // Country code (default: 'AU')
}

Usage Examples:

// US phone formatting (requires cleave-phone.us.js)
const usPhone = new Cleave('#us-phone', {
  phone: true,
  phoneRegionCode: 'US'
});

// UK phone formatting (requires cleave-phone.gb.js)  
const ukPhone = new Cleave('#uk-phone', {
  phone: true,
  phoneRegionCode: 'GB'
});

Date Formatting

Date input formatting with validation and constraints.

interface DateOptions {
  date: boolean; // Enable date formatting
  datePattern?: string[]; // Date pattern tokens (default: ['d', 'm', 'Y'])
  dateMin?: string; // Minimum date constraint (YYYY-MM-DD format)
  dateMax?: string; // Maximum date constraint (YYYY-MM-DD format)
}

Usage Examples:

const dateInput = new Cleave('#date', {
  date: true,
  datePattern: ['m', 'd', 'Y'], // US format: MM/DD/YYYY
  dateMin: '2020-01-01',
  dateMax: '2030-12-31'
});

Time Formatting

Time input formatting with 12/24 hour support.

interface TimeOptions {
  time: boolean; // Enable time formatting
  timePattern?: string[]; // Time pattern tokens (default: ['h', 'm', 's'])
  timeFormat?: '12' | '24'; // Time format (default: '24')
}

Usage Examples:

// 24-hour format
const time24 = new Cleave('#time24', {
  time: true,
  timePattern: ['h', 'm'],
  timeFormat: '24'
});

// 12-hour format with seconds
const time12 = new Cleave('#time12', {
  time: true,
  timePattern: ['h', 'm', 's'],
  timeFormat: '12'
});

Numeral Formatting

Number formatting with decimal, grouping, and prefix options.

interface NumeralOptions {
  numeral: boolean; // Enable numeral formatting
  numeralDecimalMark?: string; // Decimal separator (default: '.')
  numeralIntegerScale?: number; // Max integer digits (default: 0 = unlimited)
  numeralDecimalScale?: number; // Max decimal digits (default: 2)
  numeralThousandsGroupStyle?: 'thousand' | 'lakh' | 'wan' | 'none'; // Grouping style
  numeralPositiveOnly?: boolean; // Only allow positive numbers (default: false)
  stripLeadingZeroes?: boolean; // Remove leading zeros (default: true)
  signBeforePrefix?: boolean; // Place sign before prefix (default: false)
  tailPrefix?: boolean; // Place prefix at end (default: false)
}

Usage Examples:

// Currency formatting
const currency = new Cleave('#currency', {
  numeral: true,
  numeralDecimalScale: 2,
  numeralThousandsGroupStyle: 'thousand',
  prefix: '$',
  numeralPositiveOnly: true
});

// Indian number system (lakh)
const indianNumber = new Cleave('#indian', {
  numeral: true,
  numeralThousandsGroupStyle: 'lakh',
  numeralDecimalMark: '.',
  delimiter: ','
});

General Formatting

Block-based formatting for custom patterns.

interface GeneralOptions {
  blocks?: number[]; // Length of each formatting block
  delimiter?: string; // Single delimiter character
  delimiters?: string[]; // Multiple different delimiters  
  delimiterLazyShow?: boolean; // Show delimiter only when needed
  prefix?: string; // Text prefix
  noImmediatePrefix?: boolean; // Don't show prefix immediately
  rawValueTrimPrefix?: boolean; // Remove prefix from raw value
  copyDelimiter?: boolean; // Include delimiters when copying
}

Usage Examples:

// License plate format: ABC-1234
const licensePlate = new Cleave('#license', {
  blocks: [3, 4],
  delimiter: '-',
  uppercase: true
});

// Multiple delimiters: 12/34-5678
const multiDelimiter = new Cleave('#multi', {
  blocks: [2, 2, 4],
  delimiters: ['/', '-']
});

// Prefix example: +1 234-567-8900
const prefixExample = new Cleave('#prefix', {
  prefix: '+1 ',
  blocks: [3, 3, 4],
  delimiter: '-'
});

// Copy delimiter example: Copy includes delimiters
const copyWithDelimiters = new Cleave('#copy', {
  blocks: [4, 4, 4, 4],
  delimiter: '-',
  copyDelimiter: true // When user copies, includes delimiters in clipboard
});

Text Processing

Text transformation and filtering options.

interface TextProcessingOptions {
  numericOnly?: boolean; // Only allow numeric characters
  uppercase?: boolean; // Convert to uppercase
  lowercase?: boolean; // Convert to lowercase
}

Usage Examples:

// Uppercase alpha-numeric code
const code = new Cleave('#code', {
  blocks: [4, 4],
  delimiter: '-',
  uppercase: true
});

// Numeric only input
const numeric = new Cleave('#numeric', {
  numericOnly: true,
  blocks: [3, 3, 4]
});

Event Handling

Event callback system for responding to input changes.

/**
 * Value change callback fired on input changes
 * @param event - Change event object
 */
interface CleaveChangeEvent {
  target: {
    name: string; // Input element name attribute
    value: string; // Formatted display value
    rawValue: string; // Raw unformatted value
  };
}

interface EventOptions {
  onValueChanged?: (event: CleaveChangeEvent) => void;
}

Usage Examples:

const cleave = new Cleave('#input', {
  creditCard: true,
  onValueChanged: function (event) {
    console.log('Formatted:', event.target.value);
    console.log('Raw:', event.target.rawValue);
    console.log('Input name:', event.target.name);
    
    // Update other UI elements
    document.getElementById('display').textContent = event.target.value;
  }
});

Advanced Options

Advanced configuration options for specialized use cases.

interface AdvancedOptions {
  swapHiddenInput?: boolean; // Create hidden input with raw value
  initValue?: string; // Initial value to format
  document?: Document; // Custom document object (for iframe/worker usage)
}

Usage Examples:

// Hidden input pattern - creates hidden field with raw value
const hiddenInputCleave = new Cleave('#visible-input', {
  creditCard: true,
  swapHiddenInput: true
});
// This creates a hidden input with the raw value alongside the formatted visible input

// Custom document (for iframe usage)
const iframeCleave = new Cleave('#iframe-input', {
  creditCard: true,
  document: iframe.contentDocument
});

// Initial value formatting
const prefilledCleave = new Cleave('#prefilled', {
  creditCard: true,
  initValue: '4111111111111111' // Will be formatted on load
});