Table Summary
<sl-table-summary> | SlTableSummary
A simple summary grouped table
<sl-table-summary> <sl-icon id="greenTick" name="check" style="color: green;"></sl-icon> <sl-icon id="redTick" name="check" style="color: red;"></sl-icon> </sl-table-summary> <script> (() => { const data = { Growth: [ { AssetClass: 'Australian equities', value: 860611.01, percent: 28.101 }, { AssetClass: 'Global equities', value: 1458989, percent: 47.7 }, { AssetClass: 'Listed property', value: 271794, percent: 1.7 }, { AssetClass: 'Global listed property', value: 271794, percent: 1.7 }, { AssetClass: 'Direct property', value: 271794, percent: 1.7 }, { AssetClass: 'Other', value: 215450, percent: 4.1 }, ], Defensive: [ { AssetClass: 'Fixed interest', value: 167422.1, percent: 5.5 }, { AssetClass: 'Global fixed interest', value: 51334, percent: 1.7 }, { AssetClass: 'Cash', value: 123130, percent: 4 }, ], Other: [ { AssetClass: 'Other', value: 294818, percent: 9.62 }, ], }; const columns = [ { key: 'AssetClass', sum: false, alignRight: false, format: (value) => value }, { key: 'value', sum: true, alignRight: true, format: (value) => value.toLocaleString('en-AU', { style: 'currency', currency: 'AUD', maximumFractionDigits: 0 }) }, { key: 'percent', sum: true, alignRight: true, format: (value) => value.toFixed(1) + '%', slotId: (d) => d.value % 2 ? 'greenTick' : 'redTick' }, ]; const table = document.querySelector('sl-table-summary'); table.data = data; table.columns = columns; })(); </script>
Examples
Fixed Layout
Use fixed-layout
to make table fixed layout.
<sl-table-summary id="fixed" fixed-layout> <sl-icon id="greenTick" name="check" style="color: green;"></sl-icon> <sl-icon id="redTick" name="check" style="color: red;"></sl-icon> </sl-table-summary> <script> (() => { const data = { Growth: [ { AssetClass: 'Australian equities', value: 860611.01, percent: 28.101 }, { AssetClass: 'Global equities', value: 1458989, percent: 47.7 }, { AssetClass: 'Listed property', value: 271794, percent: 1.7 }, { AssetClass: 'Global listed property', value: 271794, percent: 1.7 }, { AssetClass: 'Direct property', value: 271794, percent: 1.7 }, { AssetClass: 'Other', value: 215450, percent: 4.1 }, ], Defensive: [ { AssetClass: 'Fixed interest', value: 167422.1, percent: 5.5 }, { AssetClass: 'Global fixed interest', value: 51334, percent: 1.7 }, { AssetClass: 'Cash', value: 123130, percent: 4 }, ], Other: [ { AssetClass: 'Other', value: 294818, percent: 9.62 }, ], }; const columns = [ { key: 'AssetClass', sum: false, alignRight: false, format: (value) => value }, { key: 'value', sum: true, alignRight: true, format: (value) => value.toLocaleString('en-AU', { style: 'currency', currency: 'AUD', maximumFractionDigits: 0 }) }, { key: 'percent', sum: true, alignRight: true, format: (value) => value.toFixed(1) + '%', slotId: (d) => d.value % 2 ? 'greenTick' : 'redTick' }, ]; const table = document.querySelector('#fixed'); table.data = data; table.columns = columns; })(); </script>
Show Headers and Net total
Use show-column-headers
, show-net-total
to show headers and net total.
<sl-table-summary id="example3" show-column-headers show-net-total> <sl-icon id="greenTick" name="check" style="color: green;"></sl-icon> <sl-icon id="redTick" name="check" style="color: red;"></sl-icon> </sl-table-summary> <script> (() => { const data = { Growth: [ { AssetClass: 'Australian equities', value: 860611.01, percent: 28.101 }, { AssetClass: 'Global equities', value: 1458989, percent: 47.7 }, { AssetClass: 'Listed property', value: 271794, percent: 1.7 }, { AssetClass: 'Global listed property', value: 271794, percent: 1.7 }, { AssetClass: 'Direct property', value: 271794, percent: 1.7 }, { AssetClass: 'Other', value: 215450, percent: 4.1 }, ], Defensive: [ { AssetClass: 'Fixed interest', value: 167422.1, percent: 5.5 }, { AssetClass: 'Global fixed interest', value: 51334, percent: 1.7 }, { AssetClass: 'Cash', value: 123130, percent: 4 }, ], Other: [ { AssetClass: 'Other', value: 294818, percent: 9.62 }, ], }; const columns = [ { key: 'AssetClass', label: 'Asset Class', sum: false, alignRight: false, format: (value) => value }, { key: 'value', label: 'Value', sum: true, alignRight: true, format: (value) => value.toLocaleString('en-AU', { style: 'currency', currency: 'AUD', maximumFractionDigits: 0 }) }, { key: 'percent', label: 'Percent', sum: true, alignRight: true, format: (value) => value.toFixed(1) + '%', slotId: (d) => d.value % 2 ? 'greenTick' : 'redTick' }, ]; const table = document.querySelector('#example3'); table.data = data; table.columns = columns; })(); </script>
Edit cell
Use --master-cell-font-size
, --master-cell-description-font-size
,
--master-cell-padding
, --master-cell-border-width
to modify cell’s
--font-size
, --description-font-size
, --cell-padding
,
--border-width
respectively.
<sl-table-summary class="base-font" id="example4" show-column-headers show-net-total> <sl-icon id="greenTick" name="check" style="color: green;"></sl-icon> <sl-icon id="redTick" name="check" style="color: red;"></sl-icon> </sl-table-summary> <style> .base-font { --master-cell-font-size: 10px; --master-cell-description-font-size: 8px; --master-cell-padding: 0px; } </style> <script> (() => { const data = { Growth: [ { AssetClass: 'Australian equities', value: 860611.01, percent: 28.101 }, { AssetClass: 'Global equities', value: 1458989, percent: 47.7 }, { AssetClass: 'Listed property', value: 271794, percent: 1.7 }, { AssetClass: 'Global listed property', value: 271794, percent: 1.7 }, { AssetClass: 'Direct property', value: 271794, percent: 1.7 }, { AssetClass: 'Other', value: 215450, percent: 4.1 }, ], Defensive: [ { AssetClass: 'Fixed interest', value: 167422.1, percent: 5.5 }, { AssetClass: 'Global fixed interest', value: 51334, percent: 1.7 }, { AssetClass: 'Cash', value: 123130, percent: 4 }, ], Other: [ { AssetClass: 'Other', value: 294818, percent: 9.62 }, ], }; const columns = [ { key: 'AssetClass', label: 'Asset Class', sum: false, alignRight: false, format: (value) => value }, { key: 'value', label: 'Value', sum: true, alignRight: true, format: (value) => value.toLocaleString('en-AU', { style: 'currency', currency: 'AUD', maximumFractionDigits: 0 }) }, { key: 'percent', label: 'Percent', sum: true, alignRight: true, format: (value) => value.toFixed(1) + '%', slotId: (d) => d.value % 2 ? 'greenTick' : 'redTick' }, ]; const table = document.querySelector('#example4'); table.data = data; table.columns = columns; })(); </script>
[component-metadata:sl-table-summary]
Slots
Name | Description |
---|---|
default
|
The default slot for cell content. |
Learn more about using slots.
Properties
Name | Description | Reflects | Type | Default |
---|---|---|---|---|
showColumnHeaders
show-column-headers
|
Whether to show column headers |
boolean
|
false
|
|
subtleRows
subtle-rows
|
Array of subtle rows |
number[]
|
[]
|
|
emptyStateText
empty-state-text
|
Text to show when there is no data |
string
|
'No data'
|
|
showNetTotal
show-net-total
|
Whether to show net total |
boolean
|
false
|
|
netTotalLabel
net-total-label
|
Net total label |
string
|
'Net Total'
|
|
fixedLayout
fixed-layout
|
Whether to use fixed layout |
boolean
|
false
|
|
groupSelectable
group-selectable
|
Whether to allow group selection |
boolean
|
false
|
|
updateComplete |
A read-only promise that resolves when the component has finished updating. |
Learn more about attributes and properties.
Events
Name | React Event | Description | Event Detail |
---|---|---|---|
select |
|
Emitted when the table cell is clicked. | - |
Learn more about events.
Parts
Name | Description |
---|---|
base |
The component’s base wrapper. |
Learn more about customizing CSS parts.
Dependencies
This component automatically imports the following dependencies.
<sl-empty-state>
<sl-icon>
<sl-master-table-cell>