Skip to main content

dialstack-call-logs

The call logs Web Component displays a paginated table of call history.

Usage​

HTML
<dialstack-call-logs></dialstack-call-logs>

<script>
// `dialstack` is your initialized instance (see the full example below)
document.querySelector('dialstack-call-logs').setInstance(dialstack);
</script>

Methods​

Common Methods​

MethodParametersDescription
setInstanceinstance: DialStackInstanceSet SDK instance
setLocalelocale: LocaleSet UI strings
setFormattingoptions: FormattingOptionsSet date/phone formatting
setIconsicons: ComponentIconsSet custom SVG icons
setLayoutVariantvariant: 'compact' | 'comfortable' | 'default'Set layout density
setClassesclasses: CallLogsClassesSet CSS classes
setOnLoaderStartcallback: (event) => voidSet loading callback
setOnLoadErrorcallback: (event) => voidSet error callback

CallLogs-Specific Methods​

MethodParametersDescription
setDateRange{ start?: string; end?: string }Filter by date range
setDisplayOptionsoptions: CallLogDisplayOptionsShow/hide columns
setCustomRowRendererrenderer: (call) => stringCustom row HTML
setOnRowClickcallback: (event) => voidRow click callback
Automatic Pagination

Pagination is handled automatically by the component using cursor-based pagination. You don't need to manage cursors, offsets, or page state manually. The component automatically loads more data as needed. See the Pagination Guide for details.

Configuration Examples​

Date Range Filtering​

JavaScript
const callLogs = document.querySelector('dialstack-call-logs');

callLogs.setDateRange({
start: '2025-01-01',
end: '2025-01-31',
});

Display Options​

JavaScript
callLogs.setDisplayOptions({
showDate: true,
showDirection: true,
showFrom: true,
showTo: true,
showDuration: true,
showStatus: true,
});

Formatting​

JavaScript
callLogs.setFormatting({
defaultCountry: 'US',
dateLocale: 'en-US',
use24HourTime: false,
showTimezone: true,
});

Layout and Styling​

JavaScript
callLogs.setLayoutVariant('comfortable');

callLogs.setClasses({
base: 'my-call-logs',
table: 'my-table',
row: 'my-row',
rowInbound: 'my-row--inbound',
rowOutbound: 'my-row--outbound',
pagination: 'my-pagination',
});

Event Handlers​

onRowClick​

JavaScript
callLogs.setOnRowClick((event) => {
console.log('Call ID:', event.callId);
console.log('Call data:', event.call);

// Navigate to detail view
showCallDetail(event.call);
});

onLoadError​

JavaScript
callLogs.setOnLoadError((event) => {
console.error('Error:', event.error);
console.error('Element:', event.elementTagName);
});

Custom Row Renderer​

Provide a function that returns HTML for each row:

JavaScript
callLogs.setCustomRowRenderer((call) => {
const icon = call.direction === 'inbound' ? '📥' : '📤';
const status = call.status === 'completed' ? '✓' : '✗';

return `
<div class="custom-row">
<span class="icon">${icon}</span>
<span class="number">${call.from_number} → ${call.to_number}</span>
<span class="duration">${call.duration_seconds}s</span>
<span class="status">${status}</span>
</div>
`;
});

Complete Example​

HTML
<!DOCTYPE html>
<html>
<head>
<script src="https://unpkg.com/@dialstack/sdk-js"></script>
<style>
.call-logs-container {
max-width: 1200px;
margin: 0 auto;
padding: 20px;
}
</style>
</head>
<body>
<div class="call-logs-container">
<h1>Call History</h1>
<dialstack-call-logs></dialstack-call-logs>
</div>

<script>
// Initialize
const dialstack = DialStack.initialize({
publishableKey: 'pk_live_YOUR_KEY',
fetchClientSecret: async () => {
const res = await fetch('/api/dialstack/session', { method: 'POST' });
const { client_secret } = await res.json();
return client_secret;
},
appearance: {
theme: 'light',
},
});

// Get element
const callLogs = document.querySelector('dialstack-call-logs');

// Configure
callLogs.setDateRange({
start: new Date(Date.now() - 30 * 24 * 60 * 60 * 1000).toISOString().split('T')[0],
});

callLogs.setDisplayOptions({
showDate: true,
showDirection: true,
showFrom: true,
showTo: true,
showDuration: true,
showStatus: true,
});

callLogs.setFormatting({
defaultCountry: 'US',
use24HourTime: false,
});

callLogs.setLayoutVariant('comfortable');

// Event handlers
callLogs.setOnRowClick((event) => {
alert(`Clicked call: ${event.callId}`);
});

callLogs.setOnLoadError((event) => {
console.error('Load error:', event.error);
});

// Wire the element to the initialized instance
callLogs.setInstance(dialstack);
</script>
</body>
</html>

Next Steps​