timepicker-ui
4.7.0GitHub
timepicker-ui
Advanced / Event Callbacks

Event Handling

Handle timepicker events using EventEmitter API or callbacks

#

The new EventEmitter API provides a clean, type-safe way to handle events:

index.js
const picker = new TimepickerUI(input);
picker.create();
picker.on('confirm', (data) => {
console.log('Time confirmed:', data.hour, data.minutes);
});
picker.on('cancel', (data) => {
console.log('Cancelled');
});
picker.on('open', () => {
console.log('Picker opened');
});
picker.on('update', (data) => {
console.log('Time updated:', data);
});
picker.on('select:hour', (data) => {
console.log('Hour selected:', data.hour);
});
picker.on('select:minute', (data) => {
console.log('Minute selected:', data.minutes);
});
picker.on('select:period', (data) => {
console.log('Period selected:', data.type);
});
picker.once('confirm', (data) => {
console.log('This runs only once');
});
const handler = (data) => console.log(data);
picker.on('confirm', handler);
picker.off('confirm', handler);

Callback Options

#

You can also use callback options (check console):

const picker = new TimepickerUI(input, {
callbacks: {
onOpen: (data) => {
console.log('Opened:', data);
},
onConfirm: (data) => {
console.log('Confirmed:', data.hour, data.minutes, data.type);
},
onCancel: (data) => {
console.log('Cancelled:', data);
},
onUpdate: (data) => {
console.log('Updated:', data);
},
onSelectHour: (data) => {
console.log('Hour selected:', data.hour);
},
onSelectMinute: (data) => {
console.log('Minute selected:', data.minutes);
},
onSelectPeriod: (data) => {
console.log('Period selected:', data.type);
},
onError: (data) => {
console.error('Error:', data.error);
}
}
});
picker.create();

Range Change Log

#

range:change fires when the user changes the time of a range end. It carries the end that changed and both ends after the change. Open the picker and pick a time to fill the log. setRange() and the other API calls do not emit it. New in 4.7.0.

picker.on('range:change', ({ part, from, to }) => {
console.log('changed:', part, 'from:', from, 'to:', to);
});

Legacy DOM Events (Removed in v4.0.0)

#

DOM events have been removed in v4.0.0. Use EventEmitter API or callback options instead:

index.js
// REMOVED in v4.0.0 - No longer supported
input.addEventListener('timepicker:confirm', (e) => {
console.log(e.detail);
});
// CORRECT - use the EventEmitter API
picker.on('confirm', (data) => {
console.log(data);
});
// CORRECT - or use callback options
const picker = new TimepickerUI(input, {
callbacks: {
onConfirm: (data) => {
console.log(data);
}
}
});

TypeScript Event Types

#

Payload types are exported from timepicker-ui, and on() infers them from the event name:

index.ts
import { TimepickerUI } from 'timepicker-ui';
import type { ConfirmEventData, ErrorEventData } from 'timepicker-ui';
// ConfirmEventData:
// {
// hour?: string;
// minutes?: string;
// seconds?: string; // only with clock.showSeconds
// type?: string; // 'AM' or 'PM' in 12h mode
// autoCommit?: boolean; // true when wheel.commitOnScroll confirmed it
// }
const picker = new TimepickerUI(input);
picker.create();
// data is typed from the event name
picker.on('confirm', (data) => {
console.log(data.hour, data.minutes, data.type);
});
// or name the payload type yourself
const handleError = (data: ErrorEventData) => {
console.error(data.error);
};
picker.on('error', handleError);
const handleConfirm = (data: ConfirmEventData) => {
console.log(data.hour, data.minutes);
};
picker.on('confirm', handleConfirm);
Esc