Files
virtual-banker/widget/public/widget.js

81 lines
2.6 KiB
JavaScript

/**
* Virtual Banker Widget Loader
*
* Usage:
* <script src="path/to/widget.js"
* data-tenant-id="your-tenant-id"
* data-user-id="user-id"
* data-auth-token="jwt-token"
* data-api-url="https://api.example.com"
* data-avatar-enabled="true"></script>
* <div id="virtual-banker-widget"></div>
*/
(function() {
'use strict';
// Get configuration from script tag
const script = document.currentScript;
const config = {
tenantId: script.getAttribute('data-tenant-id') || 'default',
userId: script.getAttribute('data-user-id') || undefined,
authToken: script.getAttribute('data-auth-token') || undefined,
apiUrl: script.getAttribute('data-api-url') || undefined,
avatarEnabled: script.getAttribute('data-avatar-enabled') !== 'false',
};
// Load React and ReactDOM (should be loaded separately or bundled)
// For now, this is a placeholder - the actual widget will be loaded via the built bundle
console.log('Virtual Banker Widget Loader initialized', config);
// Create container if it doesn't exist
let container = document.getElementById('virtual-banker-widget');
if (!container) {
container = document.createElement('div');
container.id = 'virtual-banker-widget';
document.body.appendChild(container);
}
// Store config for widget initialization
container.dataset.tenantId = config.tenantId;
if (config.userId) container.dataset.userId = config.userId;
if (config.authToken) container.dataset.authToken = config.authToken;
if (config.apiUrl) container.dataset.apiUrl = config.apiUrl;
container.dataset.avatarEnabled = config.avatarEnabled.toString();
// Export API for programmatic control
window.VirtualBankerWidgetAPI = {
open: function() {
const widget = document.getElementById('virtual-banker-widget');
if (widget) {
widget.style.display = 'block';
}
},
close: function() {
const widget = document.getElementById('virtual-banker-widget');
if (widget) {
widget.style.display = 'none';
}
},
minimize: function() {
const widget = document.getElementById('virtual-banker-widget');
if (widget) {
widget.classList.add('minimized');
}
},
setContext: function(context) {
const widget = document.getElementById('virtual-banker-widget');
if (widget) {
widget.dataset.context = JSON.stringify(context);
}
},
setAuthToken: function(token) {
const widget = document.getElementById('virtual-banker-widget');
if (widget) {
widget.dataset.authToken = token;
}
},
};
})();