Skip to content

XCon Widget Core API Overview

In this document, you can find information about the core API and features of the XCon Widget Framework.

Main API Features

Registry and DOM Management

registry

Widget registry main access point. The central system where all widgets are registered and managed.

domManager

The system that manages DOM scanning and automatic widget initialization processes.

Widget Management Methods

registerWidget(selector, widgetClass, config, initMode)

Registers a new widget to the system.

javascript
XConWidgets.registerWidget('.my-widget', MyWidgetClass, {
  widgetName: 'MyWidget',
  template: '<div>Hello Widget!</div>'
});

activateWidget(widgetClass, context)

Activates a widget class with the specified context.

javascript
const widgetInstance = XConWidgets.activateWidget(MyWidgetClass, {
  container: document.getElementById('widget-container'),
  scope: {},
  width: 300,
  height: 200
});

Registry Query Methods

isRegistered(selector)

Checks whether the specified selector is registered.

javascript
if (XConWidgets.isRegistered('.my-widget')) {
  console.log('Widget is registered');
}

getWidgets()

Returns all registered widget selectors.

javascript
const selectors = XConWidgets.getWidgets();
console.log('Registered widgets:', selectors);

getRegisteredWidgets()

Returns detailed information of all registered widgets.

javascript
const widgets = XConWidgets.getRegisteredWidgets();
widgets.forEach(widget => {
  console.log(`Widget: ${widget.selector}, Class: ${widget.widgetClass.name}`);
});

getWidgetFactory(selector)

Gets the widget factory information for the specified selector.

javascript
const factory = XConWidgets.getWidgetFactory('.my-widget');
if (factory) {
  console.log('Widget configuration:', factory.config);
}

getWidgetConfig(selector)

Gets the configuration information of the specified widget.

javascript
const config = XConWidgets.getWidgetConfig('.my-widget');
console.log('Widget configuration:', config);

getRegisteredCount()

Returns the number of registered widgets.

javascript
const count = XConWidgets.getRegisteredCount();
console.log(`Total ${count} widgets registered`);

DOM Management Methods

initializeAllWidgets()

Initializes all registered widgets in the DOM.

javascript
// Initialize all widgets after page load
XConWidgets.initializeAllWidgets();

rescanDOM()

Rescans the DOM and finds newly added widgets.

javascript
// Rescan after dynamic content is added
XConWidgets.rescanDOM();

getWidgetInstance(element)

Gets the widget instance in the specified DOM element.

javascript
const element = document.querySelector('.my-widget');
const instance = XConWidgets.getWidgetInstance(element);
if (instance) {
  console.log('Widget instance found:', instance);
}

destroyWidget(element)

Destroys the widget in the specified DOM element.

javascript
const element = document.querySelector('.my-widget');
const destroyed = XConWidgets.destroyWidget(element);
if (destroyed) {
  console.log('Widget successfully destroyed');
}

setupAutoScan()

Automatically monitors DOM changes and initializes new widgets.

javascript
// Activate auto-scan feature
XConWidgets.setupAutoScan();

Usage Examples

Simple Widget Registration

javascript
// Register widget class
XConWidgets.registerWidget('.hello-widget', HelloWidget, {
  widgetName: 'HelloWidget',
  template: '<div>Hello {{name}}!</div>'
});

// Scan DOM and initialize widgets
XConWidgets.initializeAllWidgets();

Manual Widget Activation

javascript
// Manually activate widget
const context = {
  container: document.getElementById('my-container'),
  scope: { name: 'World' },
  width: 400,
  height: 300
};

const widget = XConWidgets.activateWidget(HelloWidget, context);

Checking Widget Status

javascript
// List registered widgets
const widgets = XConWidgets.getWidgets();
console.log('Registered widgets:', widgets);

// Check existence of a specific widget
if (XConWidgets.isRegistered('.my-widget')) {
  const config = XConWidgets.getWidgetConfig('.my-widget');
  console.log('Widget configuration:', config);
}

Dynamic Content Management

javascript
// Add new content
document.body.innerHTML += '<div class="new-widget"></div>';

// Rescan DOM
XConWidgets.rescanDOM();

// Activate auto-scan (only needs to be done once)
XConWidgets.setupAutoScan();

Global Access

This API is accessible through window.XConWidgets in the browser environment:

javascript
// Access through global object
console.log('XCon Widget Framework version:', XConWidgets.version);
console.log('Number of registered widgets:', XConWidgets.getRegisteredCount());