@aceshooting/lyra-ui 7.1.0 → 7.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/custom-elements.json +739 -32
- package/dist/components/charts/chart/chart.class.d.ts +9 -3
- package/dist/components/charts/chart/chart.class.d.ts.map +1 -1
- package/dist/components/charts/chart/chart.class.js +31 -3
- package/dist/components/charts/chart/chart.class.js.map +1 -1
- package/dist/components/charts/chart/lite-chart.class.d.ts +24 -1
- package/dist/components/charts/chart/lite-chart.class.d.ts.map +1 -1
- package/dist/components/charts/chart/lite-chart.class.js +53 -3
- package/dist/components/charts/chart/lite-chart.class.js.map +1 -1
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts +10 -2
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts.map +1 -1
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.js +7 -2
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.js.map +1 -1
- package/dist/internal/localization.d.ts +1 -1
- package/dist/internal/localization.d.ts.map +1 -1
- package/dist/internal/localization.js +4 -0
- package/dist/internal/localization.js.map +1 -1
- package/dist/lyra.d.ts +1 -1
- package/dist/lyra.d.ts.map +1 -1
- package/dist/lyra.js.map +1 -1
- package/llms/components/lr-chart.md +8 -5
- package/llms/components/lr-knowledge-graph-explorer.md +5 -0
- package/llms/components/lr-lite-chart.md +12 -0
- package/llms-full.txt +25 -5
- package/package.json +1 -1
- package/vscode-html-data.json +19 -12
- package/web-types.json +22 -13
package/llms-full.txt
CHANGED
|
@@ -10237,10 +10237,10 @@ Chart.js wrapper every other `lr-*-chart` tag subclasses; supports both a simpli
|
|
|
10237
10237
|
legend at `top`, `right`, `bottom`, or `left`; `auto` chooses right above 480px and bottom below
|
|
10238
10238
|
that allocation width
|
|
10239
10239
|
- `valueFormatter?: LyraChartValueFormatter` (attribute: false) — formats numeric (value-axis)
|
|
10240
|
-
tick, tooltip, and
|
|
10241
|
-
`'legend'` context. Never runs against the categorical
|
|
10242
|
-
strings) — Chart.js's category scale passes the tick
|
|
10243
|
-
text
|
|
10240
|
+
tick, tooltip, legend, and generated accessible-table values; the callback receives the value
|
|
10241
|
+
and `'tick'`, `'tooltip'`, `'legend'`, or `'table'` context. Never runs against the categorical
|
|
10242
|
+
x-axis's own labels (line/bar's `labels` strings) — Chart.js's category scale passes the tick
|
|
10243
|
+
index to `ticks.callback`, not the label text
|
|
10244
10244
|
- `area: boolean = false`
|
|
10245
10245
|
- `zoom: boolean = false` — wheel/drag/pinch zoom on the `x` axis only (pan disabled, and the zoom
|
|
10246
10246
|
range is limited to the original data extent); shows the `reset-zoom-button` while zoomed
|
|
@@ -10263,7 +10263,10 @@ Chart.js wrapper every other `lr-*-chart` tag subclasses; supports both a simpli
|
|
|
10263
10263
|
purely visual, canvas-only addition and add no new a11y surface.
|
|
10264
10264
|
- `stackTotals: boolean = false` (attribute `stack-totals`) — with `stacked` (bar/line only), draws
|
|
10265
10265
|
the per-category stack total above each stack, via the same `chartjs-plugin-datalabels` peer.
|
|
10266
|
-
Null/undefined points are skipped; a category whose every value is null shows no total (not
|
|
10266
|
+
Null/undefined points are skipped; a category whose every value is null shows no total (not
|
|
10267
|
+
`0`). The generated accessible table receives the same formatted total column; a dual-axis stack
|
|
10268
|
+
receives separately labelled primary- and secondary-axis total columns. The table totals do not
|
|
10269
|
+
depend on the optional visual-label peer being installed
|
|
10267
10270
|
- `config?: Partial<ChartConfiguration>` (attribute: false) — deep-merged over the generated
|
|
10268
10271
|
config; any nested key wins without clobbering sibling generated keys. This is the raw Chart.js
|
|
10269
10272
|
escape hatch, so a caller-supplied `config.type` is passed through rather than normalized.
|
|
@@ -10417,6 +10420,14 @@ passthrough). Not a subclass of `LyraChart`.
|
|
|
10417
10420
|
- `tickFormat?: (value: number) => string` (attribute: false) — formats a y-axis tick value for
|
|
10418
10421
|
display (e.g. `(v) => \`$${v.toFixed(2)}\`` for currency, or a duration formatter for `"42s"`).
|
|
10419
10422
|
Falls back to the built-in "nice numbers" formatter when unset.
|
|
10423
|
+
- `tableCellFormatter?: LyraLiteChartTableCellFormatter` (attribute: false) — formats each finite
|
|
10424
|
+
numeric cell in the built-in multi-series accessible table. The callback receives `(value,
|
|
10425
|
+
context)`, where `context` is `{ kind: 'value' | 'total'; datasetIndex: number | null; index:
|
|
10426
|
+
number; label: string; seriesLabel: string | null }`; total cells have `datasetIndex` and
|
|
10427
|
+
`seriesLabel` set to `null`. Unset cells retain locale-aware `Intl.NumberFormat` output.
|
|
10428
|
+
- `tableTotals: boolean = false` (attribute `table-totals`) — adds a localized total column to the
|
|
10429
|
+
multi-series accessible table when `type="bar"` and `stacked` are both active. Ignored for
|
|
10430
|
+
grouped bars, line charts, and the single-series `data-list`.
|
|
10420
10431
|
- `layout: 'fit' | 'scroll' = 'fit'` (reflected) — `'fit'` (default) is the original squeeze-the-
|
|
10421
10432
|
whole-plot-to-host-width behavior, unchanged. `'scroll'` gives bars a fixed `barWidth` instead: plot
|
|
10422
10433
|
content width becomes `categoryCount * barWidth` (can exceed the host's measured width), and
|
|
@@ -10503,6 +10514,10 @@ plotted point, matching the roving-tabindex mark order). More than one dataset i
|
|
|
10503
10514
|
`<th scope="col">` per series (plus a leading `chartCategory` corner header), and one
|
|
10504
10515
|
`<th scope="row">` per category label with its per-series values in the body — so a screen-reader
|
|
10505
10516
|
user hears the values grouped by series rather than one flattened N×M sequence.
|
|
10517
|
+
Finite table cells use `tableCellFormatter` when supplied and otherwise use the component's
|
|
10518
|
+
effective locale. A stacked multi-series bar chart with `tableTotals` adds a localized total
|
|
10519
|
+
column; null/non-finite inputs are skipped, while an all-missing category leaves the total cell
|
|
10520
|
+
blank instead of reporting a misleading zero.
|
|
10506
10521
|
|
|
10507
10522
|
**Themeable custom properties:** `--lr-chart-height` (same host-level property as `lr-chart`);
|
|
10508
10523
|
`--lr-chart-grid-color`, `--lr-chart-tick-color`, `--lr-chart-legend-color` — same token
|
|
@@ -17967,6 +17982,11 @@ same self-toggle-then-emit contract `lr-graph-legend` uses, so every feature wor
|
|
|
17967
17982
|
`graphExplorerLabel`
|
|
17968
17983
|
|
|
17969
17984
|
**Events:**
|
|
17985
|
+
- `lr-selection-change` (`detail: { selectedNodeId: string | null }`) — emitted after the explorer
|
|
17986
|
+
changes its own selection through search, graph, keyboard/neighborhood/path activation, or
|
|
17987
|
+
closing/invalidating the details selection. Clearing reports `null`. Direct host assignments to
|
|
17988
|
+
`selectedNodeId` remain silent, and one interaction emits at most once even when a composed
|
|
17989
|
+
child also reports its primitive click event.
|
|
17970
17990
|
- `lr-path-request` (`detail: { sourceId: string; targetId: string }`) — the "Find path" action was
|
|
17971
17991
|
activated with exactly two nodes pinned. This component has no traversal algorithm; the host
|
|
17972
17992
|
computes/fetches the path and assigns it back through `path`.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aceshooting/lyra-ui",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.2.0",
|
|
4
4
|
"description": "Free, independent Lit web components: an open-source alternative to Shoelace and Web Awesome with accessible forms, dashboards, charts, and agent UI.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"web-components",
|
package/vscode-html-data.json
CHANGED
|
@@ -1437,7 +1437,7 @@
|
|
|
1437
1437
|
"name": "stack-totals",
|
|
1438
1438
|
"description": {
|
|
1439
1439
|
"kind": "markdown",
|
|
1440
|
-
"value": "When the chart is `stacked` (bar/line only), draws the per-category stack\ntotal above each stack, via the same optional `chartjs-plugin-datalabels`\npeer as `data-labels`. Null/undefined points are skipped; a category whose\nevery value is null shows no total. Unset (the
|
|
1440
|
+
"value": "When the chart is `stacked` (bar/line only), draws the per-category stack\ntotal above each stack, via the same optional `chartjs-plugin-datalabels`\npeer as `data-labels`. Null/undefined points are skipped; a category whose\nevery value is null shows no total. The generated accessible data table\nreceives the same formatted total column (one per value axis). Unset (the\ndefault) draws and adds nothing.\n\nType: `boolean` \nDefault: `false`"
|
|
1441
1441
|
}
|
|
1442
1442
|
},
|
|
1443
1443
|
{
|
|
@@ -1778,7 +1778,7 @@
|
|
|
1778
1778
|
"name": "stack-totals",
|
|
1779
1779
|
"description": {
|
|
1780
1780
|
"kind": "markdown",
|
|
1781
|
-
"value": "When the chart is `stacked` (bar/line only), draws the per-category stack\ntotal above each stack, via the same optional `chartjs-plugin-datalabels`\npeer as `data-labels`. Null/undefined points are skipped; a category whose\nevery value is null shows no total. Unset (the
|
|
1781
|
+
"value": "When the chart is `stacked` (bar/line only), draws the per-category stack\ntotal above each stack, via the same optional `chartjs-plugin-datalabels`\npeer as `data-labels`. Null/undefined points are skipped; a category whose\nevery value is null shows no total. The generated accessible data table\nreceives the same formatted total column (one per value axis). Unset (the\ndefault) draws and adds nothing.\n\nType: `boolean` \nDefault: `false`"
|
|
1782
1782
|
}
|
|
1783
1783
|
},
|
|
1784
1784
|
{
|
|
@@ -2331,7 +2331,7 @@
|
|
|
2331
2331
|
"name": "stack-totals",
|
|
2332
2332
|
"description": {
|
|
2333
2333
|
"kind": "markdown",
|
|
2334
|
-
"value": "When the chart is `stacked` (bar/line only), draws the per-category stack\ntotal above each stack, via the same optional `chartjs-plugin-datalabels`\npeer as `data-labels`. Null/undefined points are skipped; a category whose\nevery value is null shows no total. Unset (the
|
|
2334
|
+
"value": "When the chart is `stacked` (bar/line only), draws the per-category stack\ntotal above each stack, via the same optional `chartjs-plugin-datalabels`\npeer as `data-labels`. Null/undefined points are skipped; a category whose\nevery value is null shows no total. The generated accessible data table\nreceives the same formatted total column (one per value axis). Unset (the\ndefault) draws and adds nothing.\n\nType: `boolean` \nDefault: `false`"
|
|
2335
2335
|
}
|
|
2336
2336
|
},
|
|
2337
2337
|
{
|
|
@@ -5324,7 +5324,7 @@
|
|
|
5324
5324
|
"name": "stack-totals",
|
|
5325
5325
|
"description": {
|
|
5326
5326
|
"kind": "markdown",
|
|
5327
|
-
"value": "When the chart is `stacked` (bar/line only), draws the per-category stack\ntotal above each stack, via the same optional `chartjs-plugin-datalabels`\npeer as `data-labels`. Null/undefined points are skipped; a category whose\nevery value is null shows no total. Unset (the
|
|
5327
|
+
"value": "When the chart is `stacked` (bar/line only), draws the per-category stack\ntotal above each stack, via the same optional `chartjs-plugin-datalabels`\npeer as `data-labels`. Null/undefined points are skipped; a category whose\nevery value is null shows no total. The generated accessible data table\nreceives the same formatted total column (one per value axis). Unset (the\ndefault) draws and adds nothing.\n\nType: `boolean` \nDefault: `false`"
|
|
5328
5328
|
}
|
|
5329
5329
|
},
|
|
5330
5330
|
{
|
|
@@ -7551,7 +7551,7 @@
|
|
|
7551
7551
|
"name": "stack-totals",
|
|
7552
7552
|
"description": {
|
|
7553
7553
|
"kind": "markdown",
|
|
7554
|
-
"value": "When the chart is `stacked` (bar/line only), draws the per-category stack\ntotal above each stack, via the same optional `chartjs-plugin-datalabels`\npeer as `data-labels`. Null/undefined points are skipped; a category whose\nevery value is null shows no total. Unset (the
|
|
7554
|
+
"value": "When the chart is `stacked` (bar/line only), draws the per-category stack\ntotal above each stack, via the same optional `chartjs-plugin-datalabels`\npeer as `data-labels`. Null/undefined points are skipped; a category whose\nevery value is null shows no total. The generated accessible data table\nreceives the same formatted total column (one per value axis). Unset (the\ndefault) draws and adds nothing.\n\nType: `boolean` \nDefault: `false`"
|
|
7555
7555
|
}
|
|
7556
7556
|
},
|
|
7557
7557
|
{
|
|
@@ -8325,7 +8325,7 @@
|
|
|
8325
8325
|
"name": "lr-knowledge-graph-explorer",
|
|
8326
8326
|
"description": {
|
|
8327
8327
|
"kind": "markdown",
|
|
8328
|
-
"value": "`<lr-knowledge-graph-explorer>` — an orchestration-level surface for exploring a knowledge\ngraph: the `lr-graph` canvas plus entity search, type filters, neighborhood expansion, pinned\nnodes, path finding between pins, node selection, and a details overlay. Composes existing\nprimitives rather than re-implementing graph rendering: `lr-graph` (canvas/pan-zoom/selection),\n`lr-graph-legend` (type filters), `lr-entity-card` (the details popover's default content),\n`lr-neighbor-list` (the selected entity's relationships), `lr-path-strip` (a found path), and\n`lr-popover.showAt()` (the details overlay itself).\n\n**How the details popover finds its viewport position.** `lr-graph.getNodePosition()` and the\n`lr-node-click` event's `{ x, y }` are in the graph's own *local drawing space* (pre pan/zoom),\nnever viewport pixels -- passing them straight to `showAt()` would anchor the popover at the\nwrong place as soon as the graph has panned or zoomed even once. A direct node click resolves\nthe correct viewport rect the way this library's own documented `lr-graph` + `lr-popover.showAt()`\ncomposition does: for `renderer=\"svg\"` (the default), `event.composedPath()` (the native `click`\nthat bubbles out of `lr-graph`'s shadow root) locates the actual clicked `[part=\"node\"]` element,\nwhose `getBoundingClientRect()` is already viewport-relative; for `renderer=\"canvas\"` (no\nper-node DOM element to find), the click event's own `clientX`/`clientY` are used directly, since\ncanvas hit-testing already treats those as viewport coordinates internally. While the popover\nstays open after an `renderer=\"svg\"` click, this component re-reads that same resolved node\nelement's `getBoundingClientRect()` and re-calls `showAt()` every time the composed `lr-graph`\nemits its own `lr-viewport-change` (a frame-coalesced pan/zoom/simulation-tick signal) --\nschedules no `requestAnimationFrame` loop of its own, unlike an idle popover polling the DOM on\nevery frame regardless of whether anything actually moved. Selecting a node any other\nway -- a search result, a neighbor row, a path-strip element, keyboard Enter/Space on a graph\nnode (which never dispatches a native `click`) -- has no click event to read a rect from, so it\ninstead calls the public `lr-graph.focusNode(id)` (which centers that node in the viewport) and\nthen anchors the popover at the graph element's own `getBoundingClientRect()` center once that\nsettles; no continuous tracking applies to that path.\n\n**Controlled vs. self-managed state.** `nodes`/`links`/`nodeTypes`/`communities`/`entityDetails`/\n`path` are purely host-supplied data, rendered as given. `hiddenTypes`/`selectedNodeId`/\n`searchQuery`/`pinnedNodeIds` are this component's own genuinely new contribution: it wires them\ninto `lr-graph`'s existing controlled props (`hiddenTypes`, `selectedNodeIds`, `dimmedNodeIds`,\n`dimmedLinkIds`) itself, toggling its own copy on interaction (the same self-toggle-then-emit\ncontract `lr-graph-legend` already uses) so every feature works with zero host wiring, while\nstill being presettable/observable properties and emitting events (`lr-
|
|
8328
|
+
"value": "`<lr-knowledge-graph-explorer>` — an orchestration-level surface for exploring a knowledge\ngraph: the `lr-graph` canvas plus entity search, type filters, neighborhood expansion, pinned\nnodes, path finding between pins, node selection, and a details overlay. Composes existing\nprimitives rather than re-implementing graph rendering: `lr-graph` (canvas/pan-zoom/selection),\n`lr-graph-legend` (type filters), `lr-entity-card` (the details popover's default content),\n`lr-neighbor-list` (the selected entity's relationships), `lr-path-strip` (a found path), and\n`lr-popover.showAt()` (the details overlay itself).\n\n**How the details popover finds its viewport position.** `lr-graph.getNodePosition()` and the\n`lr-node-click` event's `{ x, y }` are in the graph's own *local drawing space* (pre pan/zoom),\nnever viewport pixels -- passing them straight to `showAt()` would anchor the popover at the\nwrong place as soon as the graph has panned or zoomed even once. A direct node click resolves\nthe correct viewport rect the way this library's own documented `lr-graph` + `lr-popover.showAt()`\ncomposition does: for `renderer=\"svg\"` (the default), `event.composedPath()` (the native `click`\nthat bubbles out of `lr-graph`'s shadow root) locates the actual clicked `[part=\"node\"]` element,\nwhose `getBoundingClientRect()` is already viewport-relative; for `renderer=\"canvas\"` (no\nper-node DOM element to find), the click event's own `clientX`/`clientY` are used directly, since\ncanvas hit-testing already treats those as viewport coordinates internally. While the popover\nstays open after an `renderer=\"svg\"` click, this component re-reads that same resolved node\nelement's `getBoundingClientRect()` and re-calls `showAt()` every time the composed `lr-graph`\nemits its own `lr-viewport-change` (a frame-coalesced pan/zoom/simulation-tick signal) --\nschedules no `requestAnimationFrame` loop of its own, unlike an idle popover polling the DOM on\nevery frame regardless of whether anything actually moved. Selecting a node any other\nway -- a search result, a neighbor row, a path-strip element, keyboard Enter/Space on a graph\nnode (which never dispatches a native `click`) -- has no click event to read a rect from, so it\ninstead calls the public `lr-graph.focusNode(id)` (which centers that node in the viewport) and\nthen anchors the popover at the graph element's own `getBoundingClientRect()` center once that\nsettles; no continuous tracking applies to that path.\n\n**Controlled vs. self-managed state.** `nodes`/`links`/`nodeTypes`/`communities`/`entityDetails`/\n`path` are purely host-supplied data, rendered as given. `hiddenTypes`/`selectedNodeId`/\n`searchQuery`/`pinnedNodeIds` are this component's own genuinely new contribution: it wires them\ninto `lr-graph`'s existing controlled props (`hiddenTypes`, `selectedNodeIds`, `dimmedNodeIds`,\n`dimmedLinkIds`) itself, toggling its own copy on interaction (the same self-toggle-then-emit\ncontract `lr-graph-legend` already uses) so every feature works with zero host wiring, while\nstill being presettable/observable properties and emitting events (`lr-selection-change`,\n`lr-pin-change`, `lr-path-request`, plus every composed primitive's own event bubbling straight through\nunmodified) for a host that wants to persist or react to them.\n\n`highlight` controls what drives that dimming, on top of the always-active search-match\ndimming: `'selection'` (the default) dims by the selected node's immediate neighborhood;\n`'hover'` also dims by whichever node is currently pointer-hovered (falling back to the selected\nnode's neighborhood while nothing is hovered); `'none'` turns this component's own dimming off\nentirely, forwarding empty `dimmedNodeIds`/`dimmedLinkIds` regardless of search/selection state\n-- for a host that wants to drive `lr-graph`'s dimming through a different composition instead.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| `details` | Overrides the details popover's default content (an `lr-entity-card` with a nested `lr-neighbor-list` and a pin toggle). Receives no data -- a consumer overriding this slot reads the selected entity from `selectedNodeId`/`nodes` itself. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `base` | The root `role=\"group\"` wrapper. |\n| `detail-card` | The default-content `lr-entity-card`, only present while `selectedNodeId` resolves to a node. |\n| `detail-popover` | The composed `lr-popover` hosting the details overlay. |\n| `graph` | The composed `lr-graph`. |\n| `legend` | The composed `lr-graph-legend`. |\n| `path` | The composed `lr-path-strip`, only rendered while `path` is non-empty. |\n| `pinned` | The pinned-nodes row, only rendered while `pinnedNodeIds` is non-empty. |\n| `pinned-heading` | The pinned-nodes row's leading label. |\n| `search` | The composed `lr-entity-card` search `lr-input`. |\n| `search-empty` | The \"no matches\" message, shown when `searchQuery` is non-empty but no node matches. |\n| `search-result` | One search-match row (`role=\"listitem\"`, wrapping a `<button>`). |\n| `search-results` | The search-match list, only rendered while `searchQuery` is non-empty. |\n| `toolbar` | The row wrapping the search input and the type-filter legend. |"
|
|
8329
8329
|
},
|
|
8330
8330
|
"attributes": [
|
|
8331
8331
|
{
|
|
@@ -8667,7 +8667,7 @@
|
|
|
8667
8667
|
"name": "stack-totals",
|
|
8668
8668
|
"description": {
|
|
8669
8669
|
"kind": "markdown",
|
|
8670
|
-
"value": "When the chart is `stacked` (bar/line only), draws the per-category stack\ntotal above each stack, via the same optional `chartjs-plugin-datalabels`\npeer as `data-labels`. Null/undefined points are skipped; a category whose\nevery value is null shows no total. Unset (the
|
|
8670
|
+
"value": "When the chart is `stacked` (bar/line only), draws the per-category stack\ntotal above each stack, via the same optional `chartjs-plugin-datalabels`\npeer as `data-labels`. Null/undefined points are skipped; a category whose\nevery value is null shows no total. The generated accessible data table\nreceives the same formatted total column (one per value axis). Unset (the\ndefault) draws and adds nothing.\n\nType: `boolean` \nDefault: `false`"
|
|
8671
8671
|
}
|
|
8672
8672
|
},
|
|
8673
8673
|
{
|
|
@@ -8718,7 +8718,7 @@
|
|
|
8718
8718
|
"name": "lr-lite-chart",
|
|
8719
8719
|
"description": {
|
|
8720
8720
|
"kind": "markdown",
|
|
8721
|
-
"value": "`<lr-lite-chart>` — a dependency-free bar/line chart, plain SVG/DOM\nrendering with zero peer dependencies (unlike `lr-chart`, which wraps\n`chart.js`). For a project whose architecture forbids a charting\ndependency outright, this covers the common bar/line case: grouped or\nstacked bars, multi-series lines, per-point click, and hover tooltips\n(native SVG `<title>`, no positioning JS needed) — not a full `lr-chart`\nreplacement (no zoom/pan, no pie/doughnut/radar/scatter/bubble types, no\nhorizontal/dual-y-axis, no raw-config passthrough).\n\nBecause this renders real DOM (not canvas), it reuses `lr-chart`'s\n`--lr-chart-*` theme tokens directly via CSS `var()` — no\n`getComputedStyle()`-based re-theming step is needed the way `chart.ts`\nneeds one for its canvas.\n\nBy default (`layout=\"fit\"`) the plot always squeezes to the measured host\nwidth. Three independent, opt-in escape hatches for dense/aligned data:\n`layout=\"scroll\"` (+ `barWidth`) gives every bar a fixed pixel width and\nlets the plot overflow the host horizontally (scrollable) instead of\nsqueezing; `maxLabels` decimates which x-axis text labels render (bars\nalways still render) once there are more categories than that; and\n`barX` lets a consumer hand in its own per-category x-coordinate function\n— e.g. to pixel-align this chart's bars with a sibling `lr-heatmap`'s\ncalendar columns — overriding the internal slot math for both bars and\ntheir labels. All three are additive and no-ops when left unset.\n\nSeven further additive, opt-in properties: `pointText` overrides the\nper-bar/per-point `<title>`/`aria-label` tooltip text (mirrors\n`lr-heatmap`'s `cellText` hook), falling back to the built-in raw-value\ntemplate when unset; `roundedBars` draws bars as a rounded-top path\ninstead of a square-cornered rect; `skipZero` omits a bar entirely (not\njust zero-height) for an exactly-`0` value; `padLeft`/`barGapRatio`\noverride the internal `PAD_LEFT`/`BAR_GROUP_GAP` layout constants; `scale`\n(`type=\"bar\"` only) switches the bar-height mapping from the default\nlinear `niceDomain` fraction to a `Math.sqrt(value / domainMax)`\ncompression (mirroring `lr-heatmap`'s matrix-mode `sqrt` scale) so a\nskewed dataset's smaller bars don't get washed out by one dominant value\n— gridlines/tick labels stay on the linear domain regardless, only the bar\nmarks' own height changes, and `type=\"line\"` ignores `scale` entirely; and\n`hideAxis` suppresses `renderGrid()`'s gridlines/tick labels altogether\n(x-axis category labels, rendered separately, are unaffected). An eighth,\n`legendText`, appends a formatter-supplied string after each series' label in the\nbuilt-in legend row (e.g. a value or share) — no-op while `legend` is unset, matching the same\nfallback-to-unchanged convention as every other hook here
|
|
8721
|
+
"value": "`<lr-lite-chart>` — a dependency-free bar/line chart, plain SVG/DOM\nrendering with zero peer dependencies (unlike `lr-chart`, which wraps\n`chart.js`). For a project whose architecture forbids a charting\ndependency outright, this covers the common bar/line case: grouped or\nstacked bars, multi-series lines, per-point click, and hover tooltips\n(native SVG `<title>`, no positioning JS needed) — not a full `lr-chart`\nreplacement (no zoom/pan, no pie/doughnut/radar/scatter/bubble types, no\nhorizontal/dual-y-axis, no raw-config passthrough).\n\nBecause this renders real DOM (not canvas), it reuses `lr-chart`'s\n`--lr-chart-*` theme tokens directly via CSS `var()` — no\n`getComputedStyle()`-based re-theming step is needed the way `chart.ts`\nneeds one for its canvas.\n\nBy default (`layout=\"fit\"`) the plot always squeezes to the measured host\nwidth. Three independent, opt-in escape hatches for dense/aligned data:\n`layout=\"scroll\"` (+ `barWidth`) gives every bar a fixed pixel width and\nlets the plot overflow the host horizontally (scrollable) instead of\nsqueezing; `maxLabels` decimates which x-axis text labels render (bars\nalways still render) once there are more categories than that; and\n`barX` lets a consumer hand in its own per-category x-coordinate function\n— e.g. to pixel-align this chart's bars with a sibling `lr-heatmap`'s\ncalendar columns — overriding the internal slot math for both bars and\ntheir labels. All three are additive and no-ops when left unset.\n\nSeven further additive, opt-in properties: `pointText` overrides the\nper-bar/per-point `<title>`/`aria-label` tooltip text (mirrors\n`lr-heatmap`'s `cellText` hook), falling back to the built-in raw-value\ntemplate when unset; `roundedBars` draws bars as a rounded-top path\ninstead of a square-cornered rect; `skipZero` omits a bar entirely (not\njust zero-height) for an exactly-`0` value; `padLeft`/`barGapRatio`\noverride the internal `PAD_LEFT`/`BAR_GROUP_GAP` layout constants; `scale`\n(`type=\"bar\"` only) switches the bar-height mapping from the default\nlinear `niceDomain` fraction to a `Math.sqrt(value / domainMax)`\ncompression (mirroring `lr-heatmap`'s matrix-mode `sqrt` scale) so a\nskewed dataset's smaller bars don't get washed out by one dominant value\n— gridlines/tick labels stay on the linear domain regardless, only the bar\nmarks' own height changes, and `type=\"line\"` ignores `scale` entirely; and\n`hideAxis` suppresses `renderGrid()`'s gridlines/tick labels altogether\n(x-axis category labels, rendered separately, are unaffected). An eighth,\n`legendText`, appends a formatter-supplied string after each series' label in the\nbuilt-in legend row (e.g. a value or share) — no-op while `legend` is unset, matching the same\nfallback-to-unchanged convention as every other hook here. The built-in multi-series accessible\ntable can independently format its finite numeric cells through `tableCellFormatter`; for a\nstacked bar chart, `tableTotals` adds an opt-in localized total column. Both are no-ops when\nunset.\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `axis-label` | Each axis tick label. |\n| `axis-title` | The x/y axis title text, when set. |\n| `bar` | Each bar rect (type=\"bar\"). Carries `data-selected` and `aria-pressed=\"true\"` when its category index is in `selectedIndex`. |\n| `base` | The host's flex layout wrapper. |\n| `data-list` | A visually hidden list of all plotted data points (single-series only). |\n| `data-table` | A visually hidden category×series data table, rendered instead of `data-list` when there is more than one dataset so a screen-reader user hears series grouping rather than one flattened N×M sequence. |\n| `grid-line` | Each horizontal gridline. |\n| `legend` | The legend row, when `legend` is set. |\n| `legend-item` | Each legend entry. |\n| `legend-swatch` | Each legend entry's color swatch. |\n| `legend-text` | Extra per-item text after the series label, rendered only when `legendText` is set. |\n| `line` | Each series' stroked line path (type=\"line\"). |\n| `live-region` | The current mark announcement for keyboard users. |\n| `point` | Each series' per-point keyboard target (type=\"line\"). Carries `data-selected` and explicit `aria-pressed` state. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-lite-chart-selected-outline-color` (default: `var(--lr-color-brand)`) — Stroke for a bar/point whose category index is in `selectedIndex`."
|
|
8722
8722
|
},
|
|
8723
8723
|
"attributes": [
|
|
8724
8724
|
{
|
|
@@ -8833,6 +8833,13 @@
|
|
|
8833
8833
|
"value": "Stacks each category's bars into one segmented bar. Ignored for `type=\"line\"`.\n\nType: `boolean` \nDefault: `false`"
|
|
8834
8834
|
}
|
|
8835
8835
|
},
|
|
8836
|
+
{
|
|
8837
|
+
"name": "table-totals",
|
|
8838
|
+
"description": {
|
|
8839
|
+
"kind": "markdown",
|
|
8840
|
+
"value": "Adds a localized total column to the built-in multi-series accessible table for a stacked\nbar chart. Ignored for grouped bars and line charts.\n\nType: `boolean` \nDefault: `false`"
|
|
8841
|
+
}
|
|
8842
|
+
},
|
|
8836
8843
|
{
|
|
8837
8844
|
"name": "type",
|
|
8838
8845
|
"description": {
|
|
@@ -10805,7 +10812,7 @@
|
|
|
10805
10812
|
"name": "stack-totals",
|
|
10806
10813
|
"description": {
|
|
10807
10814
|
"kind": "markdown",
|
|
10808
|
-
"value": "When the chart is `stacked` (bar/line only), draws the per-category stack\ntotal above each stack, via the same optional `chartjs-plugin-datalabels`\npeer as `data-labels`. Null/undefined points are skipped; a category whose\nevery value is null shows no total. Unset (the
|
|
10815
|
+
"value": "When the chart is `stacked` (bar/line only), draws the per-category stack\ntotal above each stack, via the same optional `chartjs-plugin-datalabels`\npeer as `data-labels`. Null/undefined points are skipped; a category whose\nevery value is null shows no total. The generated accessible data table\nreceives the same formatted total column (one per value axis). Unset (the\ndefault) draws and adds nothing.\n\nType: `boolean` \nDefault: `false`"
|
|
10809
10816
|
}
|
|
10810
10817
|
},
|
|
10811
10818
|
{
|
|
@@ -10998,7 +11005,7 @@
|
|
|
10998
11005
|
"name": "stack-totals",
|
|
10999
11006
|
"description": {
|
|
11000
11007
|
"kind": "markdown",
|
|
11001
|
-
"value": "When the chart is `stacked` (bar/line only), draws the per-category stack\ntotal above each stack, via the same optional `chartjs-plugin-datalabels`\npeer as `data-labels`. Null/undefined points are skipped; a category whose\nevery value is null shows no total. Unset (the
|
|
11008
|
+
"value": "When the chart is `stacked` (bar/line only), draws the per-category stack\ntotal above each stack, via the same optional `chartjs-plugin-datalabels`\npeer as `data-labels`. Null/undefined points are skipped; a category whose\nevery value is null shows no total. The generated accessible data table\nreceives the same formatted total column (one per value axis). Unset (the\ndefault) draws and adds nothing.\n\nType: `boolean` \nDefault: `false`"
|
|
11002
11009
|
}
|
|
11003
11010
|
},
|
|
11004
11011
|
{
|
|
@@ -11712,7 +11719,7 @@
|
|
|
11712
11719
|
"name": "stack-totals",
|
|
11713
11720
|
"description": {
|
|
11714
11721
|
"kind": "markdown",
|
|
11715
|
-
"value": "When the chart is `stacked` (bar/line only), draws the per-category stack\ntotal above each stack, via the same optional `chartjs-plugin-datalabels`\npeer as `data-labels`. Null/undefined points are skipped; a category whose\nevery value is null shows no total. Unset (the
|
|
11722
|
+
"value": "When the chart is `stacked` (bar/line only), draws the per-category stack\ntotal above each stack, via the same optional `chartjs-plugin-datalabels`\npeer as `data-labels`. Null/undefined points are skipped; a category whose\nevery value is null shows no total. The generated accessible data table\nreceives the same formatted total column (one per value axis). Unset (the\ndefault) draws and adds nothing.\n\nType: `boolean` \nDefault: `false`"
|
|
11716
11723
|
}
|
|
11717
11724
|
},
|
|
11718
11725
|
{
|
|
@@ -12825,7 +12832,7 @@
|
|
|
12825
12832
|
"name": "stack-totals",
|
|
12826
12833
|
"description": {
|
|
12827
12834
|
"kind": "markdown",
|
|
12828
|
-
"value": "When the chart is `stacked` (bar/line only), draws the per-category stack\ntotal above each stack, via the same optional `chartjs-plugin-datalabels`\npeer as `data-labels`. Null/undefined points are skipped; a category whose\nevery value is null shows no total. Unset (the
|
|
12835
|
+
"value": "When the chart is `stacked` (bar/line only), draws the per-category stack\ntotal above each stack, via the same optional `chartjs-plugin-datalabels`\npeer as `data-labels`. Null/undefined points are skipped; a category whose\nevery value is null shows no total. The generated accessible data table\nreceives the same formatted total column (one per value axis). Unset (the\ndefault) draws and adds nothing.\n\nType: `boolean` \nDefault: `false`"
|
|
12829
12836
|
}
|
|
12830
12837
|
},
|
|
12831
12838
|
{
|
package/web-types.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/web-types",
|
|
3
3
|
"name": "@aceshooting/lyra-ui",
|
|
4
|
-
"version": "7.
|
|
4
|
+
"version": "7.2.0",
|
|
5
5
|
"description-markup": "markdown",
|
|
6
6
|
"contributions": {
|
|
7
7
|
"html": {
|
|
@@ -1633,7 +1633,7 @@
|
|
|
1633
1633
|
},
|
|
1634
1634
|
{
|
|
1635
1635
|
"name": "stack-totals",
|
|
1636
|
-
"description": "When the chart is `stacked` (bar/line only), draws the per-category stack\ntotal above each stack, via the same optional `chartjs-plugin-datalabels`\npeer as `data-labels`. Null/undefined points are skipped; a category whose\nevery value is null shows no total. Unset (the
|
|
1636
|
+
"description": "When the chart is `stacked` (bar/line only), draws the per-category stack\ntotal above each stack, via the same optional `chartjs-plugin-datalabels`\npeer as `data-labels`. Null/undefined points are skipped; a category whose\nevery value is null shows no total. The generated accessible data table\nreceives the same formatted total column (one per value axis). Unset (the\ndefault) draws and adds nothing.\n\nType: `boolean` \nDefault: `false`",
|
|
1637
1637
|
"value": {
|
|
1638
1638
|
"type": [
|
|
1639
1639
|
"boolean"
|
|
@@ -2038,7 +2038,7 @@
|
|
|
2038
2038
|
},
|
|
2039
2039
|
{
|
|
2040
2040
|
"name": "stack-totals",
|
|
2041
|
-
"description": "When the chart is `stacked` (bar/line only), draws the per-category stack\ntotal above each stack, via the same optional `chartjs-plugin-datalabels`\npeer as `data-labels`. Null/undefined points are skipped; a category whose\nevery value is null shows no total. Unset (the
|
|
2041
|
+
"description": "When the chart is `stacked` (bar/line only), draws the per-category stack\ntotal above each stack, via the same optional `chartjs-plugin-datalabels`\npeer as `data-labels`. Null/undefined points are skipped; a category whose\nevery value is null shows no total. The generated accessible data table\nreceives the same formatted total column (one per value axis). Unset (the\ndefault) draws and adds nothing.\n\nType: `boolean` \nDefault: `false`",
|
|
2042
2042
|
"value": {
|
|
2043
2043
|
"type": [
|
|
2044
2044
|
"boolean"
|
|
@@ -2638,7 +2638,7 @@
|
|
|
2638
2638
|
},
|
|
2639
2639
|
{
|
|
2640
2640
|
"name": "stack-totals",
|
|
2641
|
-
"description": "When the chart is `stacked` (bar/line only), draws the per-category stack\ntotal above each stack, via the same optional `chartjs-plugin-datalabels`\npeer as `data-labels`. Null/undefined points are skipped; a category whose\nevery value is null shows no total. Unset (the
|
|
2641
|
+
"description": "When the chart is `stacked` (bar/line only), draws the per-category stack\ntotal above each stack, via the same optional `chartjs-plugin-datalabels`\npeer as `data-labels`. Null/undefined points are skipped; a category whose\nevery value is null shows no total. The generated accessible data table\nreceives the same formatted total column (one per value axis). Unset (the\ndefault) draws and adds nothing.\n\nType: `boolean` \nDefault: `false`",
|
|
2642
2642
|
"value": {
|
|
2643
2643
|
"type": [
|
|
2644
2644
|
"boolean"
|
|
@@ -6033,7 +6033,7 @@
|
|
|
6033
6033
|
},
|
|
6034
6034
|
{
|
|
6035
6035
|
"name": "stack-totals",
|
|
6036
|
-
"description": "When the chart is `stacked` (bar/line only), draws the per-category stack\ntotal above each stack, via the same optional `chartjs-plugin-datalabels`\npeer as `data-labels`. Null/undefined points are skipped; a category whose\nevery value is null shows no total. Unset (the
|
|
6036
|
+
"description": "When the chart is `stacked` (bar/line only), draws the per-category stack\ntotal above each stack, via the same optional `chartjs-plugin-datalabels`\npeer as `data-labels`. Null/undefined points are skipped; a category whose\nevery value is null shows no total. The generated accessible data table\nreceives the same formatted total column (one per value axis). Unset (the\ndefault) draws and adds nothing.\n\nType: `boolean` \nDefault: `false`",
|
|
6037
6037
|
"value": {
|
|
6038
6038
|
"type": [
|
|
6039
6039
|
"boolean"
|
|
@@ -8404,7 +8404,7 @@
|
|
|
8404
8404
|
},
|
|
8405
8405
|
{
|
|
8406
8406
|
"name": "stack-totals",
|
|
8407
|
-
"description": "When the chart is `stacked` (bar/line only), draws the per-category stack\ntotal above each stack, via the same optional `chartjs-plugin-datalabels`\npeer as `data-labels`. Null/undefined points are skipped; a category whose\nevery value is null shows no total. Unset (the
|
|
8407
|
+
"description": "When the chart is `stacked` (bar/line only), draws the per-category stack\ntotal above each stack, via the same optional `chartjs-plugin-datalabels`\npeer as `data-labels`. Null/undefined points are skipped; a category whose\nevery value is null shows no total. The generated accessible data table\nreceives the same formatted total column (one per value axis). Unset (the\ndefault) draws and adds nothing.\n\nType: `boolean` \nDefault: `false`",
|
|
8408
8408
|
"value": {
|
|
8409
8409
|
"type": [
|
|
8410
8410
|
"boolean"
|
|
@@ -9232,7 +9232,7 @@
|
|
|
9232
9232
|
},
|
|
9233
9233
|
{
|
|
9234
9234
|
"name": "lr-knowledge-graph-explorer",
|
|
9235
|
-
"description": "`<lr-knowledge-graph-explorer>` — an orchestration-level surface for exploring a knowledge\ngraph: the `lr-graph` canvas plus entity search, type filters, neighborhood expansion, pinned\nnodes, path finding between pins, node selection, and a details overlay. Composes existing\nprimitives rather than re-implementing graph rendering: `lr-graph` (canvas/pan-zoom/selection),\n`lr-graph-legend` (type filters), `lr-entity-card` (the details popover's default content),\n`lr-neighbor-list` (the selected entity's relationships), `lr-path-strip` (a found path), and\n`lr-popover.showAt()` (the details overlay itself).\n\n**How the details popover finds its viewport position.** `lr-graph.getNodePosition()` and the\n`lr-node-click` event's `{ x, y }` are in the graph's own *local drawing space* (pre pan/zoom),\nnever viewport pixels -- passing them straight to `showAt()` would anchor the popover at the\nwrong place as soon as the graph has panned or zoomed even once. A direct node click resolves\nthe correct viewport rect the way this library's own documented `lr-graph` + `lr-popover.showAt()`\ncomposition does: for `renderer=\"svg\"` (the default), `event.composedPath()` (the native `click`\nthat bubbles out of `lr-graph`'s shadow root) locates the actual clicked `[part=\"node\"]` element,\nwhose `getBoundingClientRect()` is already viewport-relative; for `renderer=\"canvas\"` (no\nper-node DOM element to find), the click event's own `clientX`/`clientY` are used directly, since\ncanvas hit-testing already treats those as viewport coordinates internally. While the popover\nstays open after an `renderer=\"svg\"` click, this component re-reads that same resolved node\nelement's `getBoundingClientRect()` and re-calls `showAt()` every time the composed `lr-graph`\nemits its own `lr-viewport-change` (a frame-coalesced pan/zoom/simulation-tick signal) --\nschedules no `requestAnimationFrame` loop of its own, unlike an idle popover polling the DOM on\nevery frame regardless of whether anything actually moved. Selecting a node any other\nway -- a search result, a neighbor row, a path-strip element, keyboard Enter/Space on a graph\nnode (which never dispatches a native `click`) -- has no click event to read a rect from, so it\ninstead calls the public `lr-graph.focusNode(id)` (which centers that node in the viewport) and\nthen anchors the popover at the graph element's own `getBoundingClientRect()` center once that\nsettles; no continuous tracking applies to that path.\n\n**Controlled vs. self-managed state.** `nodes`/`links`/`nodeTypes`/`communities`/`entityDetails`/\n`path` are purely host-supplied data, rendered as given. `hiddenTypes`/`selectedNodeId`/\n`searchQuery`/`pinnedNodeIds` are this component's own genuinely new contribution: it wires them\ninto `lr-graph`'s existing controlled props (`hiddenTypes`, `selectedNodeIds`, `dimmedNodeIds`,\n`dimmedLinkIds`) itself, toggling its own copy on interaction (the same self-toggle-then-emit\ncontract `lr-graph-legend` already uses) so every feature works with zero host wiring, while\nstill being presettable/observable properties and emitting events (`lr-
|
|
9235
|
+
"description": "`<lr-knowledge-graph-explorer>` — an orchestration-level surface for exploring a knowledge\ngraph: the `lr-graph` canvas plus entity search, type filters, neighborhood expansion, pinned\nnodes, path finding between pins, node selection, and a details overlay. Composes existing\nprimitives rather than re-implementing graph rendering: `lr-graph` (canvas/pan-zoom/selection),\n`lr-graph-legend` (type filters), `lr-entity-card` (the details popover's default content),\n`lr-neighbor-list` (the selected entity's relationships), `lr-path-strip` (a found path), and\n`lr-popover.showAt()` (the details overlay itself).\n\n**How the details popover finds its viewport position.** `lr-graph.getNodePosition()` and the\n`lr-node-click` event's `{ x, y }` are in the graph's own *local drawing space* (pre pan/zoom),\nnever viewport pixels -- passing them straight to `showAt()` would anchor the popover at the\nwrong place as soon as the graph has panned or zoomed even once. A direct node click resolves\nthe correct viewport rect the way this library's own documented `lr-graph` + `lr-popover.showAt()`\ncomposition does: for `renderer=\"svg\"` (the default), `event.composedPath()` (the native `click`\nthat bubbles out of `lr-graph`'s shadow root) locates the actual clicked `[part=\"node\"]` element,\nwhose `getBoundingClientRect()` is already viewport-relative; for `renderer=\"canvas\"` (no\nper-node DOM element to find), the click event's own `clientX`/`clientY` are used directly, since\ncanvas hit-testing already treats those as viewport coordinates internally. While the popover\nstays open after an `renderer=\"svg\"` click, this component re-reads that same resolved node\nelement's `getBoundingClientRect()` and re-calls `showAt()` every time the composed `lr-graph`\nemits its own `lr-viewport-change` (a frame-coalesced pan/zoom/simulation-tick signal) --\nschedules no `requestAnimationFrame` loop of its own, unlike an idle popover polling the DOM on\nevery frame regardless of whether anything actually moved. Selecting a node any other\nway -- a search result, a neighbor row, a path-strip element, keyboard Enter/Space on a graph\nnode (which never dispatches a native `click`) -- has no click event to read a rect from, so it\ninstead calls the public `lr-graph.focusNode(id)` (which centers that node in the viewport) and\nthen anchors the popover at the graph element's own `getBoundingClientRect()` center once that\nsettles; no continuous tracking applies to that path.\n\n**Controlled vs. self-managed state.** `nodes`/`links`/`nodeTypes`/`communities`/`entityDetails`/\n`path` are purely host-supplied data, rendered as given. `hiddenTypes`/`selectedNodeId`/\n`searchQuery`/`pinnedNodeIds` are this component's own genuinely new contribution: it wires them\ninto `lr-graph`'s existing controlled props (`hiddenTypes`, `selectedNodeIds`, `dimmedNodeIds`,\n`dimmedLinkIds`) itself, toggling its own copy on interaction (the same self-toggle-then-emit\ncontract `lr-graph-legend` already uses) so every feature works with zero host wiring, while\nstill being presettable/observable properties and emitting events (`lr-selection-change`,\n`lr-pin-change`, `lr-path-request`, plus every composed primitive's own event bubbling straight through\nunmodified) for a host that wants to persist or react to them.\n\n`highlight` controls what drives that dimming, on top of the always-active search-match\ndimming: `'selection'` (the default) dims by the selected node's immediate neighborhood;\n`'hover'` also dims by whichever node is currently pointer-hovered (falling back to the selected\nnode's neighborhood while nothing is hovered); `'none'` turns this component's own dimming off\nentirely, forwarding empty `dimmedNodeIds`/`dimmedLinkIds` regardless of search/selection state\n-- for a host that wants to drive `lr-graph`'s dimming through a different composition instead.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| `details` | Overrides the details popover's default content (an `lr-entity-card` with a nested `lr-neighbor-list` and a pin toggle). Receives no data -- a consumer overriding this slot reads the selected entity from `selectedNodeId`/`nodes` itself. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `base` | The root `role=\"group\"` wrapper. |\n| `detail-card` | The default-content `lr-entity-card`, only present while `selectedNodeId` resolves to a node. |\n| `detail-popover` | The composed `lr-popover` hosting the details overlay. |\n| `graph` | The composed `lr-graph`. |\n| `legend` | The composed `lr-graph-legend`. |\n| `path` | The composed `lr-path-strip`, only rendered while `path` is non-empty. |\n| `pinned` | The pinned-nodes row, only rendered while `pinnedNodeIds` is non-empty. |\n| `pinned-heading` | The pinned-nodes row's leading label. |\n| `search` | The composed `lr-entity-card` search `lr-input`. |\n| `search-empty` | The \"no matches\" message, shown when `searchQuery` is non-empty but no node matches. |\n| `search-result` | One search-match row (`role=\"listitem\"`, wrapping a `<button>`). |\n| `search-results` | The search-match list, only rendered while `searchQuery` is non-empty. |\n| `toolbar` | The row wrapping the search input and the type-filter legend. |",
|
|
9236
9236
|
"attributes": [
|
|
9237
9237
|
{
|
|
9238
9238
|
"name": "height",
|
|
@@ -9635,7 +9635,7 @@
|
|
|
9635
9635
|
},
|
|
9636
9636
|
{
|
|
9637
9637
|
"name": "stack-totals",
|
|
9638
|
-
"description": "When the chart is `stacked` (bar/line only), draws the per-category stack\ntotal above each stack, via the same optional `chartjs-plugin-datalabels`\npeer as `data-labels`. Null/undefined points are skipped; a category whose\nevery value is null shows no total. Unset (the
|
|
9638
|
+
"description": "When the chart is `stacked` (bar/line only), draws the per-category stack\ntotal above each stack, via the same optional `chartjs-plugin-datalabels`\npeer as `data-labels`. Null/undefined points are skipped; a category whose\nevery value is null shows no total. The generated accessible data table\nreceives the same formatted total column (one per value axis). Unset (the\ndefault) draws and adds nothing.\n\nType: `boolean` \nDefault: `false`",
|
|
9639
9639
|
"value": {
|
|
9640
9640
|
"type": [
|
|
9641
9641
|
"boolean"
|
|
@@ -9700,7 +9700,7 @@
|
|
|
9700
9700
|
},
|
|
9701
9701
|
{
|
|
9702
9702
|
"name": "lr-lite-chart",
|
|
9703
|
-
"description": "`<lr-lite-chart>` — a dependency-free bar/line chart, plain SVG/DOM\nrendering with zero peer dependencies (unlike `lr-chart`, which wraps\n`chart.js`). For a project whose architecture forbids a charting\ndependency outright, this covers the common bar/line case: grouped or\nstacked bars, multi-series lines, per-point click, and hover tooltips\n(native SVG `<title>`, no positioning JS needed) — not a full `lr-chart`\nreplacement (no zoom/pan, no pie/doughnut/radar/scatter/bubble types, no\nhorizontal/dual-y-axis, no raw-config passthrough).\n\nBecause this renders real DOM (not canvas), it reuses `lr-chart`'s\n`--lr-chart-*` theme tokens directly via CSS `var()` — no\n`getComputedStyle()`-based re-theming step is needed the way `chart.ts`\nneeds one for its canvas.\n\nBy default (`layout=\"fit\"`) the plot always squeezes to the measured host\nwidth. Three independent, opt-in escape hatches for dense/aligned data:\n`layout=\"scroll\"` (+ `barWidth`) gives every bar a fixed pixel width and\nlets the plot overflow the host horizontally (scrollable) instead of\nsqueezing; `maxLabels` decimates which x-axis text labels render (bars\nalways still render) once there are more categories than that; and\n`barX` lets a consumer hand in its own per-category x-coordinate function\n— e.g. to pixel-align this chart's bars with a sibling `lr-heatmap`'s\ncalendar columns — overriding the internal slot math for both bars and\ntheir labels. All three are additive and no-ops when left unset.\n\nSeven further additive, opt-in properties: `pointText` overrides the\nper-bar/per-point `<title>`/`aria-label` tooltip text (mirrors\n`lr-heatmap`'s `cellText` hook), falling back to the built-in raw-value\ntemplate when unset; `roundedBars` draws bars as a rounded-top path\ninstead of a square-cornered rect; `skipZero` omits a bar entirely (not\njust zero-height) for an exactly-`0` value; `padLeft`/`barGapRatio`\noverride the internal `PAD_LEFT`/`BAR_GROUP_GAP` layout constants; `scale`\n(`type=\"bar\"` only) switches the bar-height mapping from the default\nlinear `niceDomain` fraction to a `Math.sqrt(value / domainMax)`\ncompression (mirroring `lr-heatmap`'s matrix-mode `sqrt` scale) so a\nskewed dataset's smaller bars don't get washed out by one dominant value\n— gridlines/tick labels stay on the linear domain regardless, only the bar\nmarks' own height changes, and `type=\"line\"` ignores `scale` entirely; and\n`hideAxis` suppresses `renderGrid()`'s gridlines/tick labels altogether\n(x-axis category labels, rendered separately, are unaffected). An eighth,\n`legendText`, appends a formatter-supplied string after each series' label in the\nbuilt-in legend row (e.g. a value or share) — no-op while `legend` is unset, matching the same\nfallback-to-unchanged convention as every other hook here
|
|
9703
|
+
"description": "`<lr-lite-chart>` — a dependency-free bar/line chart, plain SVG/DOM\nrendering with zero peer dependencies (unlike `lr-chart`, which wraps\n`chart.js`). For a project whose architecture forbids a charting\ndependency outright, this covers the common bar/line case: grouped or\nstacked bars, multi-series lines, per-point click, and hover tooltips\n(native SVG `<title>`, no positioning JS needed) — not a full `lr-chart`\nreplacement (no zoom/pan, no pie/doughnut/radar/scatter/bubble types, no\nhorizontal/dual-y-axis, no raw-config passthrough).\n\nBecause this renders real DOM (not canvas), it reuses `lr-chart`'s\n`--lr-chart-*` theme tokens directly via CSS `var()` — no\n`getComputedStyle()`-based re-theming step is needed the way `chart.ts`\nneeds one for its canvas.\n\nBy default (`layout=\"fit\"`) the plot always squeezes to the measured host\nwidth. Three independent, opt-in escape hatches for dense/aligned data:\n`layout=\"scroll\"` (+ `barWidth`) gives every bar a fixed pixel width and\nlets the plot overflow the host horizontally (scrollable) instead of\nsqueezing; `maxLabels` decimates which x-axis text labels render (bars\nalways still render) once there are more categories than that; and\n`barX` lets a consumer hand in its own per-category x-coordinate function\n— e.g. to pixel-align this chart's bars with a sibling `lr-heatmap`'s\ncalendar columns — overriding the internal slot math for both bars and\ntheir labels. All three are additive and no-ops when left unset.\n\nSeven further additive, opt-in properties: `pointText` overrides the\nper-bar/per-point `<title>`/`aria-label` tooltip text (mirrors\n`lr-heatmap`'s `cellText` hook), falling back to the built-in raw-value\ntemplate when unset; `roundedBars` draws bars as a rounded-top path\ninstead of a square-cornered rect; `skipZero` omits a bar entirely (not\njust zero-height) for an exactly-`0` value; `padLeft`/`barGapRatio`\noverride the internal `PAD_LEFT`/`BAR_GROUP_GAP` layout constants; `scale`\n(`type=\"bar\"` only) switches the bar-height mapping from the default\nlinear `niceDomain` fraction to a `Math.sqrt(value / domainMax)`\ncompression (mirroring `lr-heatmap`'s matrix-mode `sqrt` scale) so a\nskewed dataset's smaller bars don't get washed out by one dominant value\n— gridlines/tick labels stay on the linear domain regardless, only the bar\nmarks' own height changes, and `type=\"line\"` ignores `scale` entirely; and\n`hideAxis` suppresses `renderGrid()`'s gridlines/tick labels altogether\n(x-axis category labels, rendered separately, are unaffected). An eighth,\n`legendText`, appends a formatter-supplied string after each series' label in the\nbuilt-in legend row (e.g. a value or share) — no-op while `legend` is unset, matching the same\nfallback-to-unchanged convention as every other hook here. The built-in multi-series accessible\ntable can independently format its finite numeric cells through `tableCellFormatter`; for a\nstacked bar chart, `tableTotals` adds an opt-in localized total column. Both are no-ops when\nunset.\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `axis-label` | Each axis tick label. |\n| `axis-title` | The x/y axis title text, when set. |\n| `bar` | Each bar rect (type=\"bar\"). Carries `data-selected` and `aria-pressed=\"true\"` when its category index is in `selectedIndex`. |\n| `base` | The host's flex layout wrapper. |\n| `data-list` | A visually hidden list of all plotted data points (single-series only). |\n| `data-table` | A visually hidden category×series data table, rendered instead of `data-list` when there is more than one dataset so a screen-reader user hears series grouping rather than one flattened N×M sequence. |\n| `grid-line` | Each horizontal gridline. |\n| `legend` | The legend row, when `legend` is set. |\n| `legend-item` | Each legend entry. |\n| `legend-swatch` | Each legend entry's color swatch. |\n| `legend-text` | Extra per-item text after the series label, rendered only when `legendText` is set. |\n| `line` | Each series' stroked line path (type=\"line\"). |\n| `live-region` | The current mark announcement for keyboard users. |\n| `point` | Each series' per-point keyboard target (type=\"line\"). Carries `data-selected` and explicit `aria-pressed` state. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-lite-chart-selected-outline-color` (default: `var(--lr-color-brand)`) — Stroke for a bar/point whose category index is in `selectedIndex`.",
|
|
9704
9704
|
"attributes": [
|
|
9705
9705
|
{
|
|
9706
9706
|
"name": "accessible-label",
|
|
@@ -9821,6 +9821,15 @@
|
|
|
9821
9821
|
]
|
|
9822
9822
|
}
|
|
9823
9823
|
},
|
|
9824
|
+
{
|
|
9825
|
+
"name": "table-totals",
|
|
9826
|
+
"description": "Adds a localized total column to the built-in multi-series accessible table for a stacked\nbar chart. Ignored for grouped bars and line charts.\n\nType: `boolean` \nDefault: `false`",
|
|
9827
|
+
"value": {
|
|
9828
|
+
"type": [
|
|
9829
|
+
"boolean"
|
|
9830
|
+
]
|
|
9831
|
+
}
|
|
9832
|
+
},
|
|
9824
9833
|
{
|
|
9825
9834
|
"name": "type",
|
|
9826
9835
|
"description": "Type: `LyraLiteChartType` \nDefault: `'bar'`",
|
|
@@ -12032,7 +12041,7 @@
|
|
|
12032
12041
|
},
|
|
12033
12042
|
{
|
|
12034
12043
|
"name": "stack-totals",
|
|
12035
|
-
"description": "When the chart is `stacked` (bar/line only), draws the per-category stack\ntotal above each stack, via the same optional `chartjs-plugin-datalabels`\npeer as `data-labels`. Null/undefined points are skipped; a category whose\nevery value is null shows no total. Unset (the
|
|
12044
|
+
"description": "When the chart is `stacked` (bar/line only), draws the per-category stack\ntotal above each stack, via the same optional `chartjs-plugin-datalabels`\npeer as `data-labels`. Null/undefined points are skipped; a category whose\nevery value is null shows no total. The generated accessible data table\nreceives the same formatted total column (one per value axis). Unset (the\ndefault) draws and adds nothing.\n\nType: `boolean` \nDefault: `false`",
|
|
12036
12045
|
"value": {
|
|
12037
12046
|
"type": [
|
|
12038
12047
|
"boolean"
|
|
@@ -12269,7 +12278,7 @@
|
|
|
12269
12278
|
},
|
|
12270
12279
|
{
|
|
12271
12280
|
"name": "stack-totals",
|
|
12272
|
-
"description": "When the chart is `stacked` (bar/line only), draws the per-category stack\ntotal above each stack, via the same optional `chartjs-plugin-datalabels`\npeer as `data-labels`. Null/undefined points are skipped; a category whose\nevery value is null shows no total. Unset (the
|
|
12281
|
+
"description": "When the chart is `stacked` (bar/line only), draws the per-category stack\ntotal above each stack, via the same optional `chartjs-plugin-datalabels`\npeer as `data-labels`. Null/undefined points are skipped; a category whose\nevery value is null shows no total. The generated accessible data table\nreceives the same formatted total column (one per value axis). Unset (the\ndefault) draws and adds nothing.\n\nType: `boolean` \nDefault: `false`",
|
|
12273
12282
|
"value": {
|
|
12274
12283
|
"type": [
|
|
12275
12284
|
"boolean"
|
|
@@ -13089,7 +13098,7 @@
|
|
|
13089
13098
|
},
|
|
13090
13099
|
{
|
|
13091
13100
|
"name": "stack-totals",
|
|
13092
|
-
"description": "When the chart is `stacked` (bar/line only), draws the per-category stack\ntotal above each stack, via the same optional `chartjs-plugin-datalabels`\npeer as `data-labels`. Null/undefined points are skipped; a category whose\nevery value is null shows no total. Unset (the
|
|
13101
|
+
"description": "When the chart is `stacked` (bar/line only), draws the per-category stack\ntotal above each stack, via the same optional `chartjs-plugin-datalabels`\npeer as `data-labels`. Null/undefined points are skipped; a category whose\nevery value is null shows no total. The generated accessible data table\nreceives the same formatted total column (one per value axis). Unset (the\ndefault) draws and adds nothing.\n\nType: `boolean` \nDefault: `false`",
|
|
13093
13102
|
"value": {
|
|
13094
13103
|
"type": [
|
|
13095
13104
|
"boolean"
|
|
@@ -14338,7 +14347,7 @@
|
|
|
14338
14347
|
},
|
|
14339
14348
|
{
|
|
14340
14349
|
"name": "stack-totals",
|
|
14341
|
-
"description": "When the chart is `stacked` (bar/line only), draws the per-category stack\ntotal above each stack, via the same optional `chartjs-plugin-datalabels`\npeer as `data-labels`. Null/undefined points are skipped; a category whose\nevery value is null shows no total. Unset (the
|
|
14350
|
+
"description": "When the chart is `stacked` (bar/line only), draws the per-category stack\ntotal above each stack, via the same optional `chartjs-plugin-datalabels`\npeer as `data-labels`. Null/undefined points are skipped; a category whose\nevery value is null shows no total. The generated accessible data table\nreceives the same formatted total column (one per value axis). Unset (the\ndefault) draws and adds nothing.\n\nType: `boolean` \nDefault: `false`",
|
|
14342
14351
|
"value": {
|
|
14343
14352
|
"type": [
|
|
14344
14353
|
"boolean"
|