Smart UI Web Components work with current evergreen browsers and Node 18+ for local tooling; pin package versions to match your project policy.
Smart UI is distributed as the smart-webcomponents NPM package. You can also use the full download from the Download page.
npm install smart-webcomponents
<script type="module" src="node_modules/smart-webcomponents/source/modules/smart.pivottable.js"></script>
<link rel="stylesheet" type="text/css" href="node_modules/smart-webcomponents/source/styles/smart.default.css" />
div (you mount programmatically with appendTo):Semantic element (id matches the selector in Smart()):
<smart-pivot-table id="pivottable"></smart-pivot-table>
Host container (id matches appendTo on Smart.PivotTable):
<div id="pivottableContainer"></div>
div:
<script type="module">
import 'node_modules/smart-webcomponents/source/modules/smart.pivottable.js';
const pivottableOptions = {};
// Option A - semantic <smart-pivot-table> with id="pivottable"
Smart('#pivottable', class {
get properties() {
return pivottableOptions;
}
});
// Option B - host div id="pivottableContainer"
// const pivottableInstance = new Smart.PivotTable({
// ...pivottableOptions,
// appendTo: '#pivottableContainer'
// });
// Option C - constructor(selector, options), then append the returned element yourself
// const myPivotTable = new Smart.PivotTable('#pivottable', pivottableOptions);
// document.body.appendChild(myPivotTable);
</script>
Uncomment Option B when you use the host div; use Option A when you use the semantic element. The Runtime cookbook also documents new Smart.PivotTable('#pivottable', pivottableOptions) with appendChild, and document.createElement('smart-pivot-table') with .props or Object.assign (all are valid patterns; do not combine overlapping patterns for the same instance unless you intend multiple components).
Alternative creation patterns and imperative APIs. These are all valid ways to create Smart UI components: semantic markup + Smart(); new Smart.PivotTable({ ...options, appendTo: '#...' }); new Smart.PivotTable('#pivottable', pivottableOptions) plus appendChild on the returned element; and document.createElement('smart-pivot-table') then assigning options via .props or Object.assign on the element.
Constructor with a selector string and options, then append the returned element (for example const myPivotTable = new Smart.PivotTable('#pivottable', pivottableOptions)):
const pivottableOptions = {};
const myPivotTable = new Smart.PivotTable('#pivottable', pivottableOptions);
document.body.appendChild(myPivotTable);
Create with document.createElement('smart-pivot-table'), assign properties (same as any custom element), then append:
const pivottableOptions = {};
const pivottable = document.createElement('smart-pivot-table');
Object.assign(pivottable, pivottableOptions);
document.body.appendChild(pivottable);
Host on a div with appendTo (import the module, then instantiate when the document is ready; the container id must match appendTo):
import "../../source/modules/smart.pivottable.js";
document.readyState === 'complete' ? init() : window.addEventListener('load', init);
function init() {
const pivottableOptions = {};
const pivottable = new Smart.PivotTable({
...pivottableOptions,
appendTo: '#pivottableContainer'
});
}
Append to the DOM:
const container = document.getElementById('pivottable-container');
container.appendChild(pivottable);
Remove from the DOM:
pivottable.remove();
Set a property:
pivottable.disabled = true; pivottable.theme = 'dark';
Get a property value:
const isDisabled = pivottable.disabled; const currentTheme = pivottable.theme;
Invoke a method:
pivottable.refresh(); pivottable.focus();
Add event listener:
pivottable.addEventListener('change', (event) => {
console.log('change triggered:', event.detail.type);
});
Remove event listener:
const handlePivotTableEvent = (event) => {
console.log('change triggered:', event.detail.type);
};
pivottable.addEventListener('change', handlePivotTableEvent);
pivottable.removeEventListener('change', handlePivotTableEvent);
The PivotTable component follows WAI-ARIA best practices:
For custom labeling, set aria-label or aria-labelledby attributes on the component.
Supported stacks: Smart UI targets Angular 17+, React 18+, Vue 3+, Node 18 LTS, and evergreen browsers; pin exact package versions to your org policy.