@aceshooting/lyra-ui 14.1.1 → 14.3.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 +42 -0
- package/custom-elements.json +1 -1
- package/design-tokens.json +1 -1
- package/dist/cli/migration-contract.json +1 -1
- package/dist/components/charts/chart/chart-legend-visibility.d.ts +8 -0
- package/dist/components/charts/chart/chart.class.d.ts +64 -15
- package/dist/components/charts/chart/chart.class.js +10 -10
- package/dist/components/data/heatmap/heatmap.class.d.ts +44 -6
- package/dist/components/data/heatmap/heatmap.class.js +8 -2
- package/dist/components/data/heatmap/heatmap.styles.js +1 -1
- package/dist/components/data/table/table.class.d.ts +9 -1
- package/dist/components/data/table/table.class.js +4 -3
- package/dist/components/data/table/table.styles.js +1 -1
- package/dist/components/forms/button/button.class.d.ts +8 -2
- package/dist/components/forms/button/button.class.js +6 -2
- package/dist/components/forms/checkbox/checkbox.styles.js +1 -1
- package/dist/components/forms/date-picker/date-input.class.d.ts +7 -8
- package/dist/components/forms/date-picker/date-input.styles.js +1 -1
- package/dist/components/forms/locale-picker/locale-picker.class.d.ts +12 -2
- package/dist/components/forms/locale-picker/locale-picker.class.js +7 -6
- package/dist/components/forms/locale-picker/locale-picker.styles.js +1 -1
- package/dist/components/forms/slider/slider.class.d.ts +21 -5
- package/dist/components/forms/slider/slider.class.js +6 -5
- package/dist/components/forms/slider/slider.styles.js +1 -1
- package/dist/components/media/map/map-loader.d.ts +3 -1
- package/dist/components/media/map/map.class.d.ts +86 -6
- package/dist/components/media/map/map.class.js +1 -1
- package/dist/components/media/map/map.styles.js +1 -1
- package/dist/custom-elements-jsx.d.ts +1 -1
- package/dist/events.d.ts +21 -5
- package/dist/internal/default-strings.generated.d.ts +1 -1
- package/dist/internal/default-strings.generated.js +1 -1
- package/dist/internal/icons.d.ts +2 -0
- package/dist/internal/icons.js +2 -2
- package/dist/internal/localization-types.d.ts +1 -1
- package/dist/internal/localization.js +1 -1
- package/dist/internal/package-metadata.d.ts +1 -1
- package/dist/internal/package-metadata.js +1 -1
- package/dist/lyra.d.ts +1 -1
- package/dist/svelte.d.ts +1 -1
- package/dist/translations/ar.js +1 -1
- package/dist/translations/de.js +1 -1
- package/dist/translations/es.js +1 -1
- package/dist/translations/fa.js +1 -1
- package/dist/translations/fr.js +1 -1
- package/dist/translations/he.js +1 -1
- package/dist/translations/ja.js +1 -1
- package/dist/translations/pt-BR.js +1 -1
- package/dist/translations/ru.js +1 -1
- package/dist/translations/zh-CN.js +1 -1
- package/dist/vue.d.ts +1 -1
- package/llms/components/lr-accordion-item.md +36 -0
- package/llms/components/lr-accordion.md +36 -0
- package/llms/components/lr-bar-chart.md +5 -2
- package/llms/components/lr-bubble-chart.md +5 -2
- package/llms/components/lr-button.md +5 -0
- package/llms/components/lr-chart.md +67 -3
- package/llms/components/lr-checkbox.md +3 -1
- package/llms/components/lr-date-input.md +19 -33
- package/llms/components/lr-date-picker.md +19 -33
- package/llms/components/lr-details.md +36 -0
- package/llms/components/lr-doughnut-chart.md +5 -2
- package/llms/components/lr-heatmap.md +63 -4
- package/llms/components/lr-histogram.md +7 -3
- package/llms/components/lr-line-chart.md +5 -2
- package/llms/components/lr-locale-picker.md +16 -2
- package/llms/components/lr-map.md +131 -4
- package/llms/components/lr-pie-chart.md +5 -2
- package/llms/components/lr-polar-area-chart.md +5 -2
- package/llms/components/lr-radar-chart.md +5 -2
- package/llms/components/lr-scatter-chart.md +5 -2
- package/llms/components/lr-slider.md +20 -4
- package/llms/components/lr-table.md +10 -4
- package/llms-full.txt +439 -56
- package/package.json +3 -3
- package/vscode-css-data.json +1 -1
- package/vscode-html-data.json +1 -1
- package/web-types.json +1 -1
package/llms-full.txt
CHANGED
|
@@ -5373,44 +5373,30 @@ use the same normalization path as direct property writes.
|
|
|
5373
5373
|
`--lr-form-control-required-offset` retune or suppress it here exactly as they do on `lr-input`.
|
|
5374
5374
|
With no label text the part is hidden and no glyph is painted.
|
|
5375
5375
|
|
|
5376
|
-
**Themeable custom properties:** `--lr-date-input-padding-block` (default
|
|
5377
|
-
`--lr-
|
|
5378
|
-
`--lr-
|
|
5379
|
-
`--lr-
|
|
5380
|
-
|
|
5381
|
-
|
|
5382
|
-
|
|
5383
|
-
|
|
5384
|
-
|
|
5385
|
-
|
|
5386
|
-
|
|
5387
|
-
|
|
5388
|
-
|
|
5376
|
+
**Themeable custom properties:** `--lr-date-input-padding-block` (default
|
|
5377
|
+
`--lr-form-control-padding-block`) pads the native text input; `--lr-date-input-padding-inline`
|
|
5378
|
+
(default `--lr-form-control-padding-inline`) pads the row. `--lr-date-input-font-size` defaults to
|
|
5379
|
+
`--lr-form-control-font-size`. The row floor `--lr-date-input-control-min-height` defaults to
|
|
5380
|
+
`--lr-form-control-height`. All four defaults follow the shared size ladder, including
|
|
5381
|
+
`small`/`medium`/`large` aliases and inherited `--lr-theme-form-control-height-*` overrides.
|
|
5382
|
+
Inherited or direct public values win. `pill` changes the private radius default to
|
|
5383
|
+
`--lr-radius-pill`; a public `--lr-date-input-radius` still wins.
|
|
5384
|
+
|
|
5385
|
+
Calendar and clear actions fit inside the selected row height while retaining at least 24×24
|
|
5386
|
+
CSS-pixel targets. At the default root size, rows measure 30/40/48/56px for s/m/l/xl; 2xs and xs
|
|
5387
|
+
grow to 26px to accommodate the 24px action plus the row borders. Custom content or font metrics
|
|
5388
|
+
can grow an unconstrained row. A theme setting the small tier to 36px produces a 36px date row.
|
|
5389
|
+
`--lr-date-input-control-height` remains undeclared by default and pins an exact row height when
|
|
5390
|
+
set. If it forces a row below its target size, the action overflows instead of shrinking.
|
|
5391
|
+
|
|
5392
|
+
The mapped `--show-duration` and `--hide-duration` hooks independently retime the popup's enter
|
|
5393
|
+
and exit transitions; both default to `var(--lr-transition-fast)`. Clear and calendar action
|
|
5394
|
+
state hooks are `--lr-date-input-action-hover-color`, `--lr-date-input-action-hover-bg`, and
|
|
5389
5395
|
`--lr-date-input-action-hover-radius` (defaults: text, transparent, and the input radius), plus
|
|
5390
5396
|
`--lr-date-input-action-active-color`, `--lr-date-input-action-active-bg`, and
|
|
5391
5397
|
`--lr-date-input-action-active-radius` for the pressed state. They inherit from theme ancestors;
|
|
5392
5398
|
direct values on `lr-date-input` win without retuning library-wide tokens.
|
|
5393
5399
|
|
|
5394
|
-
`--lr-date-input-control-height` pins an **exact** `input-wrapper` height (both floors and caps it).
|
|
5395
|
-
It is **undeclared by default**, so the row grows to fit its content — see "exact-height hatches"
|
|
5396
|
-
under `lr-input`. Pinning it _below_ the calendar toggle's 24×24 target is safe: the toggle keeps
|
|
5397
|
-
its own `--lr-icon-button-size` floor and simply overflows a short row rather than shrinking, so
|
|
5398
|
-
WCAG 2.2 SC 2.5.8 is preserved either way.
|
|
5399
|
-
|
|
5400
|
-
**Height parity with `lr-input` is density parity, not pixel parity.** The per-`size` padding and
|
|
5401
|
-
font-size scale is shared with `lr-input`, so the two look equally dense at a given `size` — but a
|
|
5402
|
-
same-`size` pair does **not** end up the same height, and code that assumes it will be
|
|
5403
|
-
disappointed at the small tiers. `[part='input-wrapper']` carries no intrinsic `min-block-size` of
|
|
5404
|
-
its own, while `[part='expand-button']` pins `min-block-size: var(--lr-icon-button-size)` that is
|
|
5405
|
-
deliberately **not** gated by `size` — the calendar toggle must keep a 24×24 touch target at every
|
|
5406
|
-
tier, and `lr-input`'s own password-toggle floors identically. So the row height is pinned
|
|
5407
|
-
transitively by that button: at `size="s"` an `lr-input` floors at `1.875rem`/30px, while an
|
|
5408
|
-
`lr-date-input` cannot go below roughly 40px plus its padding. Every default value of
|
|
5409
|
-
`--lr-date-input-control-min-height` sits below that transitive height, which means the floor is
|
|
5410
|
-
inert until you raise it past the button — a lower value changes nothing. To line the two controls
|
|
5411
|
-
up exactly, either raise `lr-input`'s floor to meet the date input, or lower
|
|
5412
|
-
`--lr-theme-icon-button-size` on a common ancestor (never below 24px).
|
|
5413
|
-
|
|
5414
5400
|
**Optional peer deps:** none.
|
|
5415
5401
|
|
|
5416
5402
|
```html
|
|
@@ -6061,6 +6047,11 @@ box no matter what tier or override is in play.
|
|
|
6061
6047
|
are resolved onto the focused internal control through `ariaDescribedByElements`; external
|
|
6062
6048
|
`aria-labelledby` is not copied across the shadow boundary.
|
|
6063
6049
|
- Host `aria-haspopup` and `aria-expanded` values are forwarded to the internal semantic control.
|
|
6050
|
+
For toggle buttons, host `aria-pressed="true|false|mixed"` reaches the focused native button.
|
|
6051
|
+
Navigation can use `aria-current="page|step|location|date|time|true|false"`. Both states update
|
|
6052
|
+
reactively, including native `ariaPressed`/`ariaCurrent` property assignments, attribute removal
|
|
6053
|
+
and `href` changes. Empty or unsupported tokens are omitted. The native button/link role remains
|
|
6054
|
+
unchanged: use pressed state for button toggles and current state for navigation links.
|
|
6064
6055
|
For host `aria-controls`, targets in the host's own root are resolved through the reflected
|
|
6065
6056
|
element-reference API so a popup relationship survives the component's shadow boundary; browsers
|
|
6066
6057
|
with that API expose the relationship through `ariaControlsElements` and intentionally serialize
|
|
@@ -7682,7 +7673,9 @@ compacts this control with it. Set it to pin the box independently of the tier.
|
|
|
7682
7673
|
the label text: the box plus the gap beside it. It defaults to
|
|
7683
7674
|
`calc(var(--lr-checkbox-box-size) + var(--lr-space-s))`, and the rendered gap is
|
|
7684
7675
|
_derived_ from it, so the advertised value and the real label offset cannot drift. Setting it on
|
|
7685
|
-
the element (or on `lr-checkbox` in your own stylesheet) moves the label.
|
|
7676
|
+
the element (or on `lr-checkbox` in your own stylesheet) moves the label. The visible box
|
|
7677
|
+
aligns with the inline start of its transparent hit target, so a compact box plus gap remains
|
|
7678
|
+
clear of the label in both directions even when the hit target is wider than the box.
|
|
7686
7679
|
|
|
7687
7680
|
It is published so you can align your own per-option hint text under the label without re-deriving
|
|
7688
7681
|
that formula by reading the shadow styles. **But custom properties inherit down, not sideways**, so
|
|
@@ -7981,6 +7974,15 @@ single numeric string entry.
|
|
|
7981
7974
|
- `showValue: boolean = false` (attribute `show-value`) — opt-in numeric readout next to the track;
|
|
7982
7975
|
a range readout joins both values with an en dash. The explicit HTML spelling
|
|
7983
7976
|
`show-value="false"` stays false.
|
|
7977
|
+
- `valueDisplay: SliderValueDisplay = 'numeric'` (attribute `value-display`) — `'numeric' |
|
|
7978
|
+
'formatted'`. Opt into `formatted` to reuse `valueFormatter` (or `tooltipFormatter` when no
|
|
7979
|
+
value formatter is supplied) for the visible readout too. Each range handle is formatted
|
|
7980
|
+
separately; nullish results fall back to localized numbers. Existing ARIA and tooltip behavior
|
|
7981
|
+
is unchanged. The callback owns its unit labels and locale formatting.
|
|
7982
|
+
- `valuePlacement: SliderValuePlacement = 'inline'` (attribute `value-placement`) — `'inline' |
|
|
7983
|
+
'label'`. With `showValue`, `label` places the readout opposite the label in a wrapping row that
|
|
7984
|
+
follows RTL. The readout stays outside the accessible label. These presentation options update
|
|
7985
|
+
on live `lr-input` changes without changing the commit-only `lr-change` contract.
|
|
7984
7986
|
- `value: number = 0`, `defaultValue: number = 0` (attribute `value`), `valueAsNumber: number`, and
|
|
7985
7987
|
`valueAsString: string` are synchronized and finite. Values normalize the low/high domain, snap
|
|
7986
7988
|
to the grid anchored at the low endpoint, then clamp so a non-grid endpoint remains reachable;
|
|
@@ -8033,7 +8035,8 @@ live value bubble per handle, present only with `with-tooltip`), `tooltip-visibl
|
|
|
8033
8035
|
`tooltip` element's part list_ while that handle is focused or dragged — visibility is encoded in
|
|
8034
8036
|
the part name because `::part(tooltip)[data-visible]` is invalid CSS and never matches; write
|
|
8035
8037
|
`::part(tooltip-visible)`). The tooltip also exposes `tooltip__tooltip`, `tooltip__content`, and
|
|
8036
|
-
`tooltip__arrow`. `value` is the opt-in
|
|
8038
|
+
`tooltip__arrow`. `value` is the opt-in readout; `label-row` contains the separate label and value
|
|
8039
|
+
nodes when `showValue` and `valuePlacement="label"` are enabled.
|
|
8037
8040
|
|
|
8038
8041
|
**CSS custom states:** `disabled`, `dragging`, `focused`, `required`, `optional`, `valid`,
|
|
8039
8042
|
`invalid`, `user-valid`, and `user-invalid`. A slider always has a finite numeric value, so
|
|
@@ -8138,8 +8141,14 @@ is present for upstream form-surface parity but adds no missing-value constraint
|
|
|
8138
8141
|
value); ArrowUp/ArrowDown are never swapped, since direction only affects the horizontal inline axis.
|
|
8139
8142
|
- Changing `min`/`max`/`step` after mount automatically re-clamps/re-snaps the current `value` in the
|
|
8140
8143
|
next update — narrowing the domain can silently move the slider's value.
|
|
8141
|
-
- `valueFormatter` is presentation-only: `aria-valuenow`,
|
|
8142
|
-
|
|
8144
|
+
- `valueFormatter` is presentation-only: `aria-valuenow`, geometry, form value, and emitted values
|
|
8145
|
+
stay numeric. The visible readout stays numeric unless `valueDisplay="formatted"` is set.
|
|
8146
|
+
- Numeric value/domain assignments in the same Lit update batch are normalized against the final
|
|
8147
|
+
`min`, `max`, and `step`, regardless of binding order. Await `updateComplete` to read the settled
|
|
8148
|
+
scalar or range endpoints. Immediate imperative readback remains clamped to the current domain;
|
|
8149
|
+
separate update batches intentionally normalize independently. Programmatic normalization emits
|
|
8150
|
+
no user input/change event.
|
|
8151
|
+
With no formatter, `aria-valuetext` remains the
|
|
8143
8152
|
numeric string rendered by earlier versions; a nullish formatter result omits it.
|
|
8144
8153
|
- A pointer drag fires `lr-input` continuously and a single `lr-change` on release; a keyboard step
|
|
8145
8154
|
fires exactly one of each per press, but OS key-repeat while a key is held re-fires `lr-input` on
|
|
@@ -9605,6 +9614,14 @@ readonly LyraLocaleEntry[]`, `LyraLocaleEntry { tag: string; label?: string; cou
|
|
|
9605
9614
|
- `showFlags: boolean = true` — each row's leading `<lr-flag language={tag} variant="compact">`
|
|
9606
9615
|
(or `<lr-flag country={country} variant="compact">` when the entry sets `country`); `false`
|
|
9607
9616
|
omits the flag element entirely (not just visually).
|
|
9617
|
+
- `triggerDisplay: LyraLocaleTriggerDisplay = 'flag-label'` (attribute `trigger-display`) —
|
|
9618
|
+
`'flag' | 'label' | 'flag-label'`. The default keeps the flag, label and chevron. `label`
|
|
9619
|
+
omits only the trigger flag; the menu keeps its flags and endonyms. `flag` centers the flag in
|
|
9620
|
+
a square and hides the visible label and chevron. The `trigger-label` remains available to
|
|
9621
|
+
assistive technology and describes the trigger's current language; its accessible name still
|
|
9622
|
+
follows `label`/the host `aria-label`. The square uses the shared/scoped trigger height with a
|
|
9623
|
+
24px floor. `showFlags=false` retains visible text in every mode. Selection, keyboard navigation,
|
|
9624
|
+
form values and the uncommitted effective-locale preview keep their usual behavior.
|
|
9608
9625
|
- `value: string = ''` — the **committed** selection (form value, drives `lr-change`). While `''`
|
|
9609
9626
|
and untouched, the trigger _displays_ `effectiveLocale` as a preview label, but
|
|
9610
9627
|
`checkValidity()`/`required` are governed by the real `value`, which stays `''` until a real
|
|
@@ -9668,7 +9685,8 @@ priority until cleared.
|
|
|
9668
9685
|
|
|
9669
9686
|
**CSS parts:** `form-control`, `form-control-label`, `trigger`,
|
|
9670
9687
|
`trigger-flag` (the trigger's leading `<lr-flag>` for the current value, present only while
|
|
9671
|
-
`showFlags` is on
|
|
9688
|
+
`showFlags` is on and `triggerDisplay` is not `label`), `trigger-label` (the current language,
|
|
9689
|
+
visually hidden in flag-only mode), `listbox`, `option`, `option-flag` (present only while `showFlags` is on),
|
|
9672
9690
|
`option-label`, `option-tag` (the row's secondary line — the raw BCP-47 tag), `expand-icon`,
|
|
9673
9691
|
`hint`, `error`.
|
|
9674
9692
|
|
|
@@ -9693,6 +9711,11 @@ quiet-brand, and semibold semantic tokens.
|
|
|
9693
9711
|
peer warning duplication; `lr-flag` itself already logs one) when the optional
|
|
9694
9712
|
`@aceshooting/lyra-flags` package isn't installed and `showFlags` is left on.
|
|
9695
9713
|
|
|
9714
|
+
A compact header can set `trigger-display="flag"` and
|
|
9715
|
+
`--lr-locale-picker-trigger-height: 2.25rem` for a 36px square at the usual 16px root size.
|
|
9716
|
+
Import `@aceshooting/lyra-ui/components/media/flag/flag-peer.js` to register the optional flag
|
|
9717
|
+
resolver. Menu labels stay visible; a per-entry `country` override also reaches the compact trigger.
|
|
9718
|
+
|
|
9696
9719
|
```html
|
|
9697
9720
|
<lr-locale-picker label="Language"></lr-locale-picker>
|
|
9698
9721
|
<script type="module">
|
|
@@ -10636,6 +10659,10 @@ cell: (row) => unknown }` —
|
|
|
10636
10659
|
the two consequences of the fixed algorithm worth knowing before opting in
|
|
10637
10660
|
- `sortKey: string = ''` (attribute `sort-key`)
|
|
10638
10661
|
- `sortDir: 'asc'|'desc' = 'asc'` (attribute `sort-dir`)
|
|
10662
|
+
- `sortIndicators: TableSortIndicators = 'active'` (attribute `sort-indicators`) — `'all'` adds a
|
|
10663
|
+
muted bidirectional indicator to each inactive sortable header, reserving the same space as the
|
|
10664
|
+
active chevron. The default retains only the active column's indicator. This presentation does
|
|
10665
|
+
not change keyboard interaction, client/server sorting, or `aria-sort="none"` on inactive columns.
|
|
10639
10666
|
- `sortMode: 'client'|'server' = 'client'` (attribute `sort-mode`, reflected) — mirrors
|
|
10640
10667
|
`paginationMode`'s identical split. `'client'` (the default) orders `rows` in the browser from
|
|
10641
10668
|
`sortKey`/`sortDir` and the active column's `sortValue`; `'server'` renders `rows` exactly as
|
|
@@ -10806,8 +10833,9 @@ slot-replaceable: it reports a configuration problem (`noColumnsHeading`), not "
|
|
|
10806
10833
|
nothing", and one slot covering all three would collapse that distinction. Everything else comes
|
|
10807
10834
|
from `columns`/`rows`.
|
|
10808
10835
|
|
|
10809
|
-
**CSS parts:** `base`, `table`, `caption`, `head`, `header-cell`, `row`, `cell`, `more-button`, `sort-icon`
|
|
10810
|
-
|
|
10836
|
+
**CSS parts:** `base`, `table`, `caption`, `head`, `header-cell`, `row`, `cell`, `more-button`, `sort-icon`
|
|
10837
|
+
(each sort indicator), `sort-icon-active` (the active chevron, rotated per `sortDir`),
|
|
10838
|
+
`sort-icon-inactive` (the muted bidirectional indicator under `sort-indicators="all"`), `reveal-columns-button`
|
|
10811
10839
|
(shown when priority columns are hidden or when a narrow allocation is currently force-visible),
|
|
10812
10840
|
`foot` (the `<tfoot>`, only rendered when at least one
|
|
10813
10841
|
column defines `footer`), `footer-row`, `footer-cell`, `row-total-cell` (each body row's trailing
|
|
@@ -10877,7 +10905,8 @@ or structural-pseudo-class selector and does not affect group, expanded, hover,
|
|
|
10877
10905
|
showing through the sticky header while it scrolls.
|
|
10878
10906
|
Same shape and rationale as `--lr-table-row-selected-bg`: inline `var()` fallbacks, not on `:host`,
|
|
10879
10907
|
because `::part(header-cell)[aria-sort]` is invalid CSS. The `sort-icon` part styles only the
|
|
10880
|
-
|
|
10908
|
+
indicator; these tokens style the header cell itself. Use `::part(sort-icon-inactive)` and
|
|
10909
|
+
`::part(sort-icon-active)` to style the two indicator states without private selectors.
|
|
10881
10910
|
`--lr-table-sticky-offset` (default `0`) is measured and written inline per column by the component
|
|
10882
10911
|
so multiple `sticky` columns stack instead of overlapping; it is a read-out, not a knob you set.
|
|
10883
10912
|
`--lr-table-heat-t` is likewise component-written (each `[data-heat]` cell's position on the ramp).
|
|
@@ -11660,6 +11689,20 @@ weekdayLabelWidth?: number|'auto'; weekdayLabelText?: (jsWeekday:number)=>string
|
|
|
11660
11689
|
- `cellSize: number = 22` (attribute `cell-size` — default `22` in matrix mode, `11` in calendar
|
|
11661
11690
|
mode when left unset; explicitly setting it now governs both modes' per-cell size alike, and it's
|
|
11662
11691
|
ignored in either mode when `fitToWidth` is set)
|
|
11692
|
+
- `cellGapX: number = 1` / `cellGapY: number = 1` (attributes `cell-gap-x` / `cell-gap-y`) —
|
|
11693
|
+
matrix-only trailing horizontal/vertical gaps in CSS pixels, subtracted from the square
|
|
11694
|
+
`cellSize` pitch. Negative values clamp to zero, non-finite values use `1`, and oversized gaps
|
|
11695
|
+
leave at least one painted pixel. Custom geometry with `accessibleCells` grows the minimum pitch
|
|
11696
|
+
and caps gaps to preserve the `--lr-icon-button-size` target floor. Calendar spacing is unchanged.
|
|
11697
|
+
- `cellRadius: number = 0` (attribute `cell-radius`) — matrix-only painted corner radius in CSS
|
|
11698
|
+
pixels, clamped from zero to half the smaller painted side; non-finite values use zero. Custom
|
|
11699
|
+
cell fills, focus/selection/annotation rings, semantic overlays, and PNG canvas output share the
|
|
11700
|
+
same bounds. Custom gaps are excluded from canvas pointer hits; rounded cells retain rectangular
|
|
11701
|
+
interaction bounds. The default one-pixel separator retains its existing hit area.
|
|
11702
|
+
- `colLabelInterval: number = 1` (attribute `col-label-interval`) — paint every Nth matrix column
|
|
11703
|
+
label starting at column zero, including frozen labels and rotated label measurement. Truncated
|
|
11704
|
+
to an integer of at least one; non-finite values use `1`. Every original `data.colLabels` value
|
|
11705
|
+
remains available to tooltips, keyboard announcements, semantic cells, and `cellText`.
|
|
11663
11706
|
- `fitToWidth: boolean = false` (attribute `fit-to-width` — derives `cellSize` from the host's
|
|
11664
11707
|
measured `clientWidth` on every draw/resize instead of the fixed `cell-size`, so the grid actually
|
|
11665
11708
|
fills the available width; now applies to calendar mode as well as matrix mode — see gotchas for
|
|
@@ -11774,6 +11817,44 @@ row?: number; col?: number; date?: string }`, matched the same way as `annotatio
|
|
|
11774
11817
|
announcement when the focused cell is the selection. Purely a controlled property — mirrors
|
|
11775
11818
|
`<lr-lite-chart>`'s `selectedIndices`, this component never mutates it itself. Unset (the default,
|
|
11776
11819
|
`null`) reproduces today's exact output.
|
|
11820
|
+
- `multiple: boolean = false` — opts into controlled multi-cell selection through `selectedCells`.
|
|
11821
|
+
The existing `selectedCell` is ignored while enabled and resumes when disabled. Single-cell
|
|
11822
|
+
behavior is unchanged when omitted.
|
|
11823
|
+
- `selectedCells: readonly HeatmapSelectedCell[] = []` (attribute: false) — clone-owned selection
|
|
11824
|
+
input, inspected up to `MAX_HEATMAP_CELLS` (10,000) entries. Duplicates, non-integer/out-of-grid
|
|
11825
|
+
coordinates and non-interactive cells are ignored. Matrix records use `{ row, col }`; calendar
|
|
11826
|
+
records use `{ date }`, including interactive calendar gaps. The component never assigns this
|
|
11827
|
+
property in response to user input. It draws selected rings and, with `accessibleCells`, exposes
|
|
11828
|
+
per-cell `aria-selected` plus grid `aria-multiselectable="true"`. The localized accessible summary
|
|
11829
|
+
reports the selected count through `heatmapSelectedCount`.
|
|
11830
|
+
|
|
11831
|
+
`lr-selection-change` is a non-cancelable proposal: frozen `HeatmapSelectionChangeDetail {
|
|
11832
|
+
selectedCells: readonly Readonly<HeatmapSelectedCell>[]; source: HeatmapSelectionSource }`, with
|
|
11833
|
+
source `'pointer' | 'keyboard' | 'row' | 'column'`. Assign the event's array back to `selectedCells`
|
|
11834
|
+
to accept it; property assignments are silent. Output is deduplicated in row/column order. Click
|
|
11835
|
+
or Enter/Space toggles one cell and retains `lr-cell-click`. Pointer dragging paints or erases
|
|
11836
|
+
according to the starting cell, previews transient selection, and proposes once on release;
|
|
11837
|
+
pointer cancellation, Escape, disconnect, data/mode changes discard the gesture. A drag does
|
|
11838
|
+
not emit a cell click. Shift+arrows extends/contracts a rectangle from the anchor while retaining
|
|
11839
|
+
unrelated pre-range selection. Directions remain physical under RTL, matching the canvas.
|
|
11840
|
+
|
|
11841
|
+
`toggleRowSelection(row: number): void` and `toggleColumnSelection(col: number): void` propose
|
|
11842
|
+
whole-axis toggles for application-owned controls: remove an entirely selected axis, otherwise
|
|
11843
|
+
add its interactive cells. Shift+Space and Ctrl/Meta+Space invoke those actions for the focused
|
|
11844
|
+
row/column. Calendar rows are weekday rows 0–6 and columns are zero-based weeks. Invalid indices
|
|
11845
|
+
and calls outside `multiple` mode are no-ops. For a narrow day/hour matrix, use `accessibleCells`
|
|
11846
|
+
and `stickyLabels="both"` to retain usable targets within the component's own scrollport.
|
|
11847
|
+
|
|
11848
|
+
```js
|
|
11849
|
+
import '@aceshooting/lyra-ui/components/lr-heatmap.js';
|
|
11850
|
+
const heatmap = document.querySelector('lr-heatmap');
|
|
11851
|
+
heatmap.multiple = true;
|
|
11852
|
+
heatmap.accessibleCells = true;
|
|
11853
|
+
heatmap.addEventListener('lr-selection-change', event => {
|
|
11854
|
+
heatmap.selectedCells = event.detail.selectedCells;
|
|
11855
|
+
// Derive filter state from the accepted row/column coordinates.
|
|
11856
|
+
});
|
|
11857
|
+
```
|
|
11777
11858
|
- `accessibleCells: boolean = false` (attribute `accessible-cells`) — renders `[part="cells"]` with
|
|
11778
11859
|
at most 400 `[part="cell"]` native buttons around the active cell. The semantic grid exposes the
|
|
11779
11860
|
full row/column counts, buttons expose localized `aria-label`s and explicit `aria-selected`, and
|
|
@@ -11865,16 +11946,23 @@ color?: string; label?: string; partOfRamp?: boolean }`: a discrete legend key r
|
|
|
11865
11946
|
|
|
11866
11947
|
**Getters/methods:** `refreshTheme()` — redraws canvas content after an upstream design-token or
|
|
11867
11948
|
color-scheme change; called automatically on theme changes, exposed for a consumer that needs to
|
|
11868
|
-
force a redraw manually. `matrixGeometry: Readonly<
|
|
11869
|
-
number }> | undefined` — the gutter/cell geometry the last matrix-mode draw actually painted with,
|
|
11949
|
+
force a redraw manually. `matrixGeometry: Readonly<LyraHeatmapMatrixGeometryChangeDetail> | undefined` — the gutter/cell geometry the last matrix-mode draw actually painted with,
|
|
11870
11950
|
in CSS pixels; `undefined` in calendar mode. Lets a light-DOM consumer line up with the canvas
|
|
11871
11951
|
without hardcoding the same numbers `row-label-width`/`col-label-height`'s `"auto"` resolution would
|
|
11872
11952
|
otherwise keep private. For the case that motivated it — a frozen header or gutter on a tall or wide
|
|
11873
11953
|
matrix — prefer `stickyLabels`, which freezes the band inside the component and needs no mirror at
|
|
11874
11954
|
all; the getter remains the way to align a *separate* element (a sibling chart, a custom overlay)
|
|
11875
|
-
with the grid.
|
|
11955
|
+
with the grid. `LyraHeatmapMatrixGeometryChangeDetail` contains `padLeft`, `padTop`, and `cellSize`
|
|
11956
|
+
(the square pitch), plus optional `cellWidth`, `cellHeight`, and `cellRadius` for custom matrix
|
|
11957
|
+
presentation. When those optional fields are absent, painted width/height are `cellSize - 1` and
|
|
11958
|
+
radius is zero. The getter and geometry-change event always share one frozen snapshot, including
|
|
11959
|
+
changes to the resolved gaps/radius.
|
|
11960
|
+
|
|
11961
|
+
For a fluid day/hour matrix, keep all 24 hour strings in `data.colLabels` and use
|
|
11962
|
+
`fit-to-width cell-gap-x="1" cell-gap-y="2" cell-radius="2" col-label-interval="3"`.
|
|
11963
|
+
For a single fluid square cell, use `fit-to-width` with equal horizontal and vertical gaps.
|
|
11876
11964
|
|
|
11877
|
-
**Events:** `lr-cell-click` (fired on click, or Enter/Space on the keyboard-focused cell —
|
|
11965
|
+
**Events:** `lr-selection-change` (not cancelable; frozen readonly `HeatmapSelectionChangeDetail { selectedCells, source }` proposal in multiple mode, with `source: 'pointer' | 'keyboard' | 'row' | 'column'`; accept it by assigning `selectedCells`). `lr-cell-click` (fired on click, or Enter/Space on the keyboard-focused cell —
|
|
11878
11966
|
`detail: { row, col, value }` in matrix mode, `detail: { date, value }` in calendar mode),
|
|
11879
11967
|
`lr-matrix-geometry-change` (fired after a matrix-mode draw whose resolved `matrixGeometry` differs
|
|
11880
11968
|
from the previous draw — e.g. after `row-label-width="auto"`/`col-label-height="auto"` resolves
|
|
@@ -14116,6 +14204,11 @@ These named interfaces and helper signatures are available to typed integrations
|
|
|
14116
14204
|
date?: string;
|
|
14117
14205
|
}`
|
|
14118
14206
|
Import: `@aceshooting/lyra-ui/components/data/heatmap/heatmap.class.js`.
|
|
14207
|
+
`HeatmapSelectionChangeDetail {
|
|
14208
|
+
readonly selectedCells: readonly Readonly<HeatmapSelectedCell>[];
|
|
14209
|
+
readonly source: HeatmapSelectionSource;
|
|
14210
|
+
}`
|
|
14211
|
+
Import: `@aceshooting/lyra-ui/components/data/heatmap/heatmap.class.js`.
|
|
14119
14212
|
`hexToRgb(hex: string): [number, number, number, number] | null`
|
|
14120
14213
|
Import: `@aceshooting/lyra-ui/components/data/heatmap/heatmap.class.js`.
|
|
14121
14214
|
`MatrixCellPos {
|
|
@@ -17374,6 +17467,42 @@ findable `hidden="until-found"` closed-state gate.
|
|
|
17374
17467
|
The Details icon wrapper also carries Shoelace's `summary-icon` alias, so either part name styles
|
|
17375
17468
|
the same node. `header-actions` is the wrapper around the `header-actions` slot.
|
|
17376
17469
|
|
|
17470
|
+
For rich independent actions, reserve a useful basis on `header-actions` so the complete action
|
|
17471
|
+
group wraps onto another row before its checkbox label becomes too narrow. The header already
|
|
17472
|
+
wraps; its summary belongs to a private native-details flex item, so setting `flex` on
|
|
17473
|
+
`::part(summary)` does not control that item's allocation. This recipe uses public parts and
|
|
17474
|
+
ordinary light-DOM layout:
|
|
17475
|
+
|
|
17476
|
+
```html
|
|
17477
|
+
<style>
|
|
17478
|
+
lr-details.responsive-actions::part(header-actions) {
|
|
17479
|
+
flex: 1 1 12rem;
|
|
17480
|
+
min-inline-size: min(100%, 12rem);
|
|
17481
|
+
padding: var(--lr-space-xs);
|
|
17482
|
+
box-sizing: border-box;
|
|
17483
|
+
}
|
|
17484
|
+
.details-action-group {
|
|
17485
|
+
display: flex;
|
|
17486
|
+
flex-wrap: wrap;
|
|
17487
|
+
align-items: center;
|
|
17488
|
+
gap: var(--lr-space-s);
|
|
17489
|
+
min-inline-size: 0;
|
|
17490
|
+
}
|
|
17491
|
+
.details-action-group lr-checkbox { flex: 1 1 auto; min-inline-size: 0; }
|
|
17492
|
+
</style>
|
|
17493
|
+
<lr-details class="responsive-actions" summary="Settings">
|
|
17494
|
+
<span slot="header-actions" class="details-action-group">
|
|
17495
|
+
<lr-checkbox size="s">Show distribution details</lr-checkbox>
|
|
17496
|
+
<lr-badge>Live</lr-badge>
|
|
17497
|
+
</span>
|
|
17498
|
+
Distribution settings.
|
|
17499
|
+
</lr-details>
|
|
17500
|
+
```
|
|
17501
|
+
|
|
17502
|
+
Import the granular details, checkbox and badge registration entries. Adjust the `12rem` basis
|
|
17503
|
+
for the actual labels. Logical sizing supports RTL and narrower allocations; the checkbox remains
|
|
17504
|
+
independently focusable and operable when the summary is disabled.
|
|
17505
|
+
|
|
17377
17506
|
**Themeable custom properties:** accordion item exposes `--lr-accordion-item-spacing` (default
|
|
17378
17507
|
`var(--lr-form-control-padding-inline)`), `--lr-accordion-item-show-duration` and
|
|
17379
17508
|
`--lr-accordion-item-hide-duration` (both default `var(--lr-duration-base)`), and
|
|
@@ -23677,7 +23806,8 @@ string; geojson: GeoJSON.FeatureCollection; field: string; stops: [number, strin
|
|
|
23677
23806
|
- `dataLayers: LyraMapGeoJsonDataLayer[] = []` (attribute: false) —
|
|
23678
23807
|
`LyraMapGeoJsonDataLayer { sourceId: string; geojson: GeoJSON.Feature |
|
|
23679
23808
|
GeoJSON.FeatureCollection; tone?: 'accent' | 'success' | 'warning' |
|
|
23680
|
-
'danger' | 'neutral'; color?: string; strokeColor?: string;
|
|
23809
|
+
'danger' | 'neutral'; color?: string; strokeColor?: string; line?: LyraMapLineOptions;
|
|
23810
|
+
point?: LyraMapPointOptions; kind?: LyraMapDataLayerKind;
|
|
23681
23811
|
heatmap?: LyraMapHeatmapOptions; cluster?: LyraMapClusterOptions }`. `sourceId` is trimmed and must be nonempty; the first layer for a
|
|
23682
23812
|
`sourceId` that is successfully admitted wins; blank, malformed, and later duplicate records are
|
|
23683
23813
|
ignored without reserving an identity for a valid later sibling. Each retained entry adds one
|
|
@@ -23762,6 +23892,104 @@ intensity?: LyraMapHeatmapZoomValue; opacity?: number }`, where `LyraMapHeatmapZ
|
|
|
23762
23892
|
peer's default untouched on construction, and dropping a previously-authored value restores 1.
|
|
23763
23893
|
`cluster` is ignored on a heatmap entry: a heatmap already aggregates density, and clustering its
|
|
23764
23894
|
input would feed it one point per cluster instead of the real distribution.
|
|
23895
|
+
`line?: LyraMapLineOptions { field?: string; stops?: readonly (readonly [number, string])[];
|
|
23896
|
+
width?: number; opacity?: number }` configures line/outline paint for an ordinary `dataLayers`
|
|
23897
|
+
entry. `field` names a numeric feature property; two usable `[value, color]` stops produce a
|
|
23898
|
+
continuous linear ramp. Missing, null, and non-numeric feature values use `strokeColor`, then
|
|
23899
|
+
`color`, then `tone`. Stops inspect the first 64 entries, discard non-finite values and invalid
|
|
23900
|
+
CSS colors, sort ascending, and retain the first duplicate threshold. Fewer than two stops or
|
|
23901
|
+
an absent field preserves flat color. Values beyond the endpoints clamp to their endpoint color.
|
|
23902
|
+
CSS variables resolve on the host during reconciliation and retheming. `width` defaults to 2 CSS
|
|
23903
|
+
pixels and clamps to `[0, 200]`; `opacity` defaults to 1 and clamps to `[0, 1]`. Non-finite values
|
|
23904
|
+
restore those defaults, as does dropping a previously-authored option. Point colors and polygon
|
|
23905
|
+
fills are unaffected; cluster and heatmap entries ignore `line`.
|
|
23906
|
+
|
|
23907
|
+
`point?: LyraMapPointOptions` styles individual points on ordinary and clustered auto entries.
|
|
23908
|
+
It is ignored for heatmaps. `field` names a **string** feature property; `colors` maps exact
|
|
23909
|
+
`[category, CSS color]` pairs. Missing, unknown and non-string categories use the existing
|
|
23910
|
+
`strokeColor`/`color`/`tone` fallback. The first 32 pairs are inspected and valid duplicates are
|
|
23911
|
+
first-wins. CSS variables resolve on the host and follow ancestor theme changes. `radius`
|
|
23912
|
+
defaults to 5 CSS pixels and `strokeWidth` to 0; both clamp to `[0, 200]`. `strokeColor` overrides
|
|
23913
|
+
the outline only, with the layer's flat color as fallback. Dropping options restores defaults.
|
|
23914
|
+
|
|
23915
|
+
`radius` also accepts `LyraMapPointRadiusOptions { field, stops, interpolation?, fallback? }`
|
|
23916
|
+
for **numeric** feature-driven sizes. `field` is independent of the category field. The first 32
|
|
23917
|
+
pairs are inspected and finite `[value, radius]` pairs are sorted ascending; duplicate thresholds are first-wins and
|
|
23918
|
+
radii clamp to `[0, 200]`. `interpolation` defaults to `'step'`: below the first threshold use
|
|
23919
|
+
its radius, and each threshold is inclusive. `'linear'` interpolates between adjacent stops and
|
|
23920
|
+
clamps outside the domain. One usable stop is a constant for numeric features. Missing, null,
|
|
23921
|
+
non-numeric and non-finite feature values use `fallback` (default 5, clamped to `[0, 200]`), as
|
|
23922
|
+
do an empty field, unusable stops or a linear domain that cannot retain distinct finite intervals.
|
|
23923
|
+
Invalid interpolation values use step. These options style individual/unclustered points;
|
|
23924
|
+
cluster-count radii remain independent. Switching back to a number or removing the radius
|
|
23925
|
+
scale restores the fixed radius without recreating the source.
|
|
23926
|
+
|
|
23927
|
+
`point.icons` maps exact category values to `LyraMapPointIcon { value: string; path: string;
|
|
23928
|
+
viewBox?: readonly [number, number, number, number]; mode?: LyraMapPointIconMode;
|
|
23929
|
+
strokeWidth?: number; lineCap?: LyraMapPointIconLineCap; lineJoin?: LyraMapPointIconLineJoin }`.
|
|
23930
|
+
`iconField` defaults to `field`. Each icon is **SVG path data**, not SVG markup or a URL. Copy an icon's path data,
|
|
23931
|
+
combine filled subpaths in that string, and supply its `[minX, minY, width, height]` viewBox
|
|
23932
|
+
(default `[0, 0, 24, 24]`). `mode` defaults to `'fill'`; `'stroke'` draws open outline paths,
|
|
23933
|
+
and `'fill-stroke'` paints both. `strokeWidth` uses **viewBox units** (default 2, clamped to
|
|
23934
|
+
`[0, 200]`; zero omits the stroke), so it scales with the icon. `lineCap` accepts `'butt'`,
|
|
23935
|
+
`'round'`, or `'square'`; `lineJoin` accepts `'miter'`, `'round'`, or `'bevel'`. Both default
|
|
23936
|
+
to round; miter joins retain a limit of 10. Invalid modes/caps/joins restore their defaults,
|
|
23937
|
+
and a non-finite stroke width restores 2. Keep padding inside the viewBox for strokes at its
|
|
23938
|
+
edges, which are clipped to the fixed atlas square. These are icon-path options;
|
|
23939
|
+
`point.strokeWidth` and `point.strokeColor` continue to style the surrounding circle only.
|
|
23940
|
+
The first 32 entries are inspected, valid duplicates are first-wins, path data is capped at
|
|
23941
|
+
8192 characters, and viewBox coordinates must be finite within ±10000 with dimensions at least
|
|
23942
|
+
0.001. Invalid paths are ignored; markup, external references and event handlers cannot execute.
|
|
23943
|
+
Rasterization is synchronous and local, with no fetch or HTML/SVG document insertion.
|
|
23944
|
+
`iconColor` supplies both fill and stroke ink, accepts CSS variables and defaults to the tone's contrasting foreground; `iconSize`
|
|
23945
|
+
is the displayed bounding square in CSS pixels (default 16, clamped to `[1, 200]`). The fixed
|
|
23946
|
+
64px raster preserves the viewBox aspect ratio. Unknown categories, invalid icons and partial
|
|
23947
|
+
peers lacking image-atlas methods retain their colored circles. No sprite or glyph URL is needed.
|
|
23948
|
+
|
|
23949
|
+
All categories use the **same GeoJSON source** and cluster across categories. Cluster circles
|
|
23950
|
+
keep the existing count-based styling; only unclustered points get category colors/icons.
|
|
23951
|
+
An optional symbol layer and at most 32 images are allocated per configured source, with no
|
|
23952
|
+
per-feature DOM markers. Data changes reuse the source, retheming updates paint/icon pixels,
|
|
23953
|
+
and style reloads restore the owned resources. Removing the entry or icons releases its images.
|
|
23954
|
+
`lr-map-click` on either a point's circle or icon returns `origin: 'data-layer'`, the public
|
|
23955
|
+
`sourceId`, and the rendered feature. For clustered GeoJSON, use numeric feature IDs and keep
|
|
23956
|
+
string business IDs in feature properties, as MapLibre's cluster tiling uses numeric IDs. Canvas export includes both; supply an accessible textual
|
|
23957
|
+
legend/list for category interpretation and individual keyboard actions.
|
|
23958
|
+
|
|
23959
|
+
```js
|
|
23960
|
+
import '@aceshooting/lyra-ui/components/lr-map.js';
|
|
23961
|
+
map.dataLayers = [{
|
|
23962
|
+
sourceId: 'places', geojson: locations, cluster: {},
|
|
23963
|
+
point: {
|
|
23964
|
+
field: 'category',
|
|
23965
|
+
radius: { field: 'visits', stops: [[0, 10], [10, 12], [50, 14], [100, 16]], fallback: 10 },
|
|
23966
|
+
strokeWidth: 1,
|
|
23967
|
+
colors: [['home', 'var(--lr-color-brand)'], ['work', 'var(--lr-color-success)']],
|
|
23968
|
+
icons: [
|
|
23969
|
+
{ value: 'home', path: 'M2 12L12 2L22 12V22H2Z' },
|
|
23970
|
+
{ value: 'work', path: 'M8 6V3H16V6M3 6H21V21H3ZM3 11H21',
|
|
23971
|
+
mode: 'stroke', strokeWidth: 1.75, lineCap: 'round', lineJoin: 'round' },
|
|
23972
|
+
],
|
|
23973
|
+
iconSize: 14,
|
|
23974
|
+
},
|
|
23975
|
+
}];
|
|
23976
|
+
```
|
|
23977
|
+
|
|
23978
|
+
Share the same stops with `legendGradient` and set its endpoint labels for units. A gradient
|
|
23979
|
+
matching a line ramp remains linear even alongside a logarithmic choropleth. Changing metric,
|
|
23980
|
+
filtered GeoJSON, width or opacity reconciles existing resources; style reloads restore the layer.
|
|
23981
|
+
Lines remain in MapLibre's canvas and can be captured with the map's normal render-event PNG
|
|
23982
|
+
export flow.
|
|
23983
|
+
|
|
23984
|
+
```js
|
|
23985
|
+
mapElement.dataLayers = [{
|
|
23986
|
+
sourceId: 'routes', geojson: routes,
|
|
23987
|
+
line: { field: 'kmh', stops: speedStops, width: 4, opacity: 0.9 }
|
|
23988
|
+
}];
|
|
23989
|
+
mapElement.legendGradient = speedStops;
|
|
23990
|
+
mapElement.legendGradientLoLabel = '0 km/h';
|
|
23991
|
+
mapElement.legendGradientHiLabel = '100 km/h';
|
|
23992
|
+
```
|
|
23765
23993
|
- `maxBounds: LyraMapBounds | null = null` (attribute: false) — box the map may not pan outside,
|
|
23766
23994
|
`[[west, south], [east, north]]`. Prefer it over calling `map.setMaxBounds()` through the `.map`
|
|
23767
23995
|
escape hatch: constraining the camera can wedge maplibre-gl at a sub-1 fractional zoom in a wide
|
|
@@ -23804,7 +24032,9 @@ payload beside the map.
|
|
|
23804
24032
|
|
|
23805
24033
|
**Authoring types:** `LyraMapLegendEntry`, `LyraMapLegendPattern`, `LyraMapLegendProjection`, `LyraMapChoroplethLayer`,
|
|
23806
24034
|
`LyraMapGeoJsonDataLayer`, `LyraMapDataLayerKind`, `LyraMapClusterOptions`, `LyraMapHeatmapOptions`,
|
|
23807
|
-
`LyraMapHeatmapZoomValue`, `
|
|
24035
|
+
`LyraMapHeatmapZoomValue`, `LyraMapLineOptions`, `LyraMapPointOptions`, `LyraMapPointRadiusOptions`,
|
|
24036
|
+
`LyraMapPointRadiusInterpolation`, `LyraMapPointIcon`, `LyraMapPointIconMode`,
|
|
24037
|
+
`LyraMapPointIconLineCap`, `LyraMapPointIconLineJoin`, `LyraMapMarker`, `LyraMapMarkerActivationDetail`,
|
|
23808
24038
|
`LyraMapMarkerActivationSource`, `LyraMapStyleSpecification`, and `LyraMapInstance`.
|
|
23809
24039
|
The former `LegendEntry`, `ChoroplethLayer`, `GeoJsonDataLayer`, and `MapMarker` names are removed
|
|
23810
24040
|
in v9 rather than retained as aliases.
|
|
@@ -23847,7 +24077,18 @@ when `legend` and `legendGradient` are both empty.
|
|
|
23847
24077
|
|
|
23848
24078
|
**CSS parts:** `base`, `container`, `legend`, `legend-swatch`, `legend-gradient`, `legend-lo`,
|
|
23849
24079
|
`legend-hi`, `legend-limit`, `marker`, `popup`,
|
|
23850
|
-
`popup-content`, `popup-close-button`, `attribution`, `attribution-toggle`, `
|
|
24080
|
+
`popup-content`, `popup-close-button`, `attribution`, `attribution-toggle`, `navigation`,
|
|
24081
|
+
`zoom-in`, `zoom-out`, `compass`, `scale`, `error`.
|
|
24082
|
+
The compact attribution summary has a decorative, current-color information glyph and retains
|
|
24083
|
+
MapLibre's accessible name, keyboard/touch disclosure behavior and attribution links. To make
|
|
24084
|
+
only this control compact, scope the shared target-size token to its public wrapper:
|
|
24085
|
+
|
|
24086
|
+
```css
|
|
24087
|
+
lr-map::part(attribution) { --lr-icon-button-size: var(--lr-size-24px); }
|
|
24088
|
+
```
|
|
24089
|
+
|
|
24090
|
+
Keep that target at least 24px in both axes. This leaves navigation controls at their existing size.
|
|
24091
|
+
|
|
23851
24092
|
`legend` is a localized `role="group"` containing a real list associated to the map canvas with
|
|
23852
24093
|
`aria-describedby`; each entry is a `listitem`, decorative swatches are inert/accessibility-hidden,
|
|
23853
24094
|
and the overlay is bounded to the map allocation with scrolling and long-label wrapping.
|
|
@@ -23860,6 +24101,21 @@ peer unavailable, owner-realm WebGL2 unavailable, or initialization failed. A po
|
|
|
23860
24101
|
appended to the document's pre-mounted `[data-lr-live-region="assertive"]` sink rather than making
|
|
23861
24102
|
shadow chrome live; raw caught errors are never exposed.
|
|
23862
24103
|
|
|
24104
|
+
**Standard peer controls:** after `lr-map-load`, narrow `.map` to the installed MapLibre peer
|
|
24105
|
+
and use `addControl(new NavigationControl(), 'bottom-right')` and
|
|
24106
|
+
`addControl(new ScaleControl({ unit: 'metric' }), 'bottom-left')`. No document-level peer CSS or
|
|
24107
|
+
shadow-root modification is needed: navigation buttons, compass glyph, scale bar and control
|
|
24108
|
+
corners are styled with Lyra tokens. The corners follow inline start/end under RTL. The legend
|
|
24109
|
+
reserves vertical room for these controls and attribution, including after resize or removal.
|
|
24110
|
+
Attribution also reserves legend space when it is the only control. Opposing occupied corners
|
|
24111
|
+
share the available width, so expanded attribution wraps without covering a scale or navigation
|
|
24112
|
+
control on the other side; controls stay aligned to their logical edge in both text directions.
|
|
24113
|
+
Navigation exposes `navigation`, `zoom-in`, `zoom-out`, and `compass` parts; the scale exposes `scale`.
|
|
24114
|
+
Button names update through `zoomIn`, `zoomOut`, and `mapResetNorth` locale strings. MapLibre retains
|
|
24115
|
+
keyboard activation, compass rotation, zoom limits, scale units and viewport updates. No controls
|
|
24116
|
+
are created until the application explicitly adds them. This is a supported imperative peer-control
|
|
24117
|
+
integration; there is no declarative controls property.
|
|
24118
|
+
|
|
23863
24119
|
**Themeable custom properties:**
|
|
23864
24120
|
|
|
23865
24121
|
- `--lr-map-height` (default `var(--lr-size-24rem)`) — host block size, shared with the optional
|
|
@@ -26166,6 +26422,10 @@ These named interfaces and helper signatures are available to typed integrations
|
|
|
26166
26422
|
addLayer(layer: unknown): this;
|
|
26167
26423
|
removeLayer(id: string): this;
|
|
26168
26424
|
setPaintProperty(layerId: string, name: string, value: unknown): this;
|
|
26425
|
+
hasImage?(id: string): boolean;
|
|
26426
|
+
addImage?(id: string, image: ImageData, options: { pixelRatio: number }): unknown;
|
|
26427
|
+
updateImage?(id: string, image: ImageData): unknown;
|
|
26428
|
+
removeImage?(id: string): unknown;
|
|
26169
26429
|
queryRenderedFeatures(point: unknown, options?: {
|
|
26170
26430
|
layers?: string[];
|
|
26171
26431
|
}): unknown[];
|
|
@@ -26225,6 +26485,8 @@ These named interfaces and helper signatures are available to typed integrations
|
|
|
26225
26485
|
readonly tone?: 'accent' | 'success' | 'warning' | 'danger' | 'neutral';
|
|
26226
26486
|
readonly color?: string;
|
|
26227
26487
|
readonly strokeColor?: string;
|
|
26488
|
+
readonly line?: LyraMapLineOptions;
|
|
26489
|
+
readonly point?: LyraMapPointOptions;
|
|
26228
26490
|
readonly kind?: LyraMapDataLayerKind;
|
|
26229
26491
|
readonly heatmap?: LyraMapHeatmapOptions;
|
|
26230
26492
|
readonly cluster?: LyraMapClusterOptions;
|
|
@@ -26239,6 +26501,46 @@ These named interfaces and helper signatures are available to typed integrations
|
|
|
26239
26501
|
readonly opacity?: number;
|
|
26240
26502
|
}`
|
|
26241
26503
|
Import: `@aceshooting/lyra-ui/components/media/map/map.class.js`.
|
|
26504
|
+
`LyraMapLineOptions {
|
|
26505
|
+
readonly field?: string;
|
|
26506
|
+
readonly stops?: readonly (readonly [number, string])[];
|
|
26507
|
+
readonly width?: number;
|
|
26508
|
+
readonly opacity?: number;
|
|
26509
|
+
}`
|
|
26510
|
+
Import: `@aceshooting/lyra-ui/components/media/map/map.class.js`.
|
|
26511
|
+
`LyraMapPointIcon {
|
|
26512
|
+
readonly value: string;
|
|
26513
|
+
readonly path: string;
|
|
26514
|
+
readonly viewBox?: readonly [number, number, number, number];
|
|
26515
|
+
readonly mode?: LyraMapPointIconMode;
|
|
26516
|
+
readonly strokeWidth?: number;
|
|
26517
|
+
readonly lineCap?: LyraMapPointIconLineCap;
|
|
26518
|
+
readonly lineJoin?: LyraMapPointIconLineJoin;
|
|
26519
|
+
}`
|
|
26520
|
+
Import: `@aceshooting/lyra-ui/components/media/map/map.class.js`.
|
|
26521
|
+
`LyraMapPointOptions {
|
|
26522
|
+
readonly field?: string;
|
|
26523
|
+
readonly colors?: readonly (readonly [string, string])[];
|
|
26524
|
+
readonly radius?: number | LyraMapPointRadiusOptions;
|
|
26525
|
+
readonly strokeWidth?: number;
|
|
26526
|
+
readonly strokeColor?: string;
|
|
26527
|
+
readonly iconField?: string;
|
|
26528
|
+
readonly icons?: readonly LyraMapPointIcon[];
|
|
26529
|
+
readonly iconColor?: string;
|
|
26530
|
+
readonly iconSize?: number;
|
|
26531
|
+
}`
|
|
26532
|
+
Import: `@aceshooting/lyra-ui/components/media/map/map.class.js`.
|
|
26533
|
+
`LyraMapPointRadiusOptions {
|
|
26534
|
+
readonly field: string;
|
|
26535
|
+
readonly stops: readonly (readonly [number, number])[];
|
|
26536
|
+
readonly interpolation?: LyraMapPointRadiusInterpolation;
|
|
26537
|
+
readonly fallback?: number;
|
|
26538
|
+
}`
|
|
26539
|
+
`LyraMapPointRadiusInterpolation = 'step' | 'linear'`;
|
|
26540
|
+
`LyraMapPointIconMode = 'fill' | 'stroke' | 'fill-stroke'`;
|
|
26541
|
+
`LyraMapPointIconLineCap = 'butt' | 'round' | 'square'`;
|
|
26542
|
+
`LyraMapPointIconLineJoin = 'miter' | 'round' | 'bevel'`.
|
|
26543
|
+
Import: `@aceshooting/lyra-ui/components/media/map/map.class.js`.
|
|
26242
26544
|
`LyraMapInstance {
|
|
26243
26545
|
getCanvas(): HTMLCanvasElement;
|
|
26244
26546
|
getCenter(): {
|
|
@@ -26396,6 +26698,24 @@ an effective raw `config.options.indexAxis` override. Both formatter APIs follow
|
|
|
26396
26698
|
structured points retain their y-value formatting.
|
|
26397
26699
|
|
|
26398
26700
|
**Properties:**
|
|
26701
|
+
- `axes: LyraChartAxes = 'both'` — `'x' | 'y' | 'both' | 'none'`, controlling complete cartesian
|
|
26702
|
+
axes: labels, ticks, borders and grid lines. The `y` setting includes `y2`; invalid values use
|
|
26703
|
+
`both`. Radial charts ignore this setting. Use `grid` when only grid lines should disappear.
|
|
26704
|
+
- `compact: boolean = false` — hides cartesian axes and removes automatic plot padding. Combine
|
|
26705
|
+
with `withoutLegend` and a short `height` (for example `64px`) for an inline histogram or
|
|
26706
|
+
sparkline. Tooltips, accessible data, formatting and keyboard activation remain available.
|
|
26707
|
+
`config` still wins over generated options, so explicit scale visibility or layout padding
|
|
26708
|
+
can override the preset. Leaving compact mode restores `axes`. Radial charts are unaffected.
|
|
26709
|
+
|
|
26710
|
+
For a monthly histogram above `lr-slider`, give both controls the same inline allocation and
|
|
26711
|
+
use `lr-bar-chart compact without-legend height="64px"`. Map range values to bin edges: with
|
|
26712
|
+
twelve months, set the slider's `min=0`, `max=12`, `step=1` and treat its values as the half-open
|
|
26713
|
+
interval `[minValue, maxValue)`. Equal edges select no months. Use `show-value`,
|
|
26714
|
+
`value-display="formatted"` and `value-placement="label"` to display application-formatted month
|
|
26715
|
+
names without a separate readout listener. Commit filtering on `lr-change`; `lr-input` remains
|
|
26716
|
+
available for live previews. Chart categories retain their authored physical order: for an RTL
|
|
26717
|
+
slider that starts at the right edge, reverse both histogram labels and counts. The Monthly
|
|
26718
|
+
Range bar-chart story demonstrates both directions without scale configuration.
|
|
26399
26719
|
- `type: LyraChartType = 'bar'` — `LyraChartType = 'line' | 'bar' | 'scatter' | 'pie' | 'doughnut' |
|
|
26400
26720
|
'radar' | 'polarArea' | 'bubble'` — every named default used by a typed `lr-*-chart` is
|
|
26401
26721
|
already a first-class member, so `<lr-chart type="pie">` needs no subclass or cast to work;
|
|
@@ -26479,6 +26799,28 @@ structured points retain their y-value formatting.
|
|
|
26479
26799
|
would clip. Its pressed state follows `hiddenDatasets` whenever that controlled snapshot is
|
|
26480
26800
|
defined, otherwise the effective dataset's declarative `hidden` value before Chart.js is ready
|
|
26481
26801
|
and across chart type/plugin rebuilds.
|
|
26802
|
+
- `legendMode: LyraChartLegendMode = 'dataset'` (attribute `legend-mode`) — `dataset` preserves
|
|
26803
|
+
dataset toggles. `datum` shows one category toggle per slice in pie, doughnut and polar-area
|
|
26804
|
+
charts; other types retain dataset legends. Category names use source labels with localized
|
|
26805
|
+
numbered fallbacks. Colors and values come from the first dataset. With multiple datasets/rings,
|
|
26806
|
+
a category toggle hides that source index in every ring, matching Chart.js category visibility.
|
|
26807
|
+
- `hiddenDatums: readonly number[] = []` (attribute: false) — clone-owned hidden source category
|
|
26808
|
+
indexes for radial charts. `[]` restores all categories. Invalid, duplicate and out-of-range
|
|
26809
|
+
indexes are ignored when applied or emitted. Programmatic changes are silent; accepted datum
|
|
26810
|
+
legend toggles write the complete next snapshot. Data and type replacements, reconnection and
|
|
26811
|
+
sampling retain source-index meaning. This state is independent of `hiddenDatasets`; hiding a
|
|
26812
|
+
whole dataset continues to hide its ring. Accessible data and CSV export retain hidden values.
|
|
26813
|
+
- `legendDisplay: LyraChartLegendDisplay = 'auto'` (attribute `legend-display`) — `auto` preserves
|
|
26814
|
+
the existing label with optional legend formatting. `label` always shows labels alone, even when
|
|
26815
|
+
`formatter`/`valueFormatter` supplies values for tooltips or axes. `value` appends the formatted
|
|
26816
|
+
numeric value. `percentage` appends a locale-formatted share independently of these callbacks:
|
|
26817
|
+
the denominator is the sum of absolute represented legend values, including hidden entries.
|
|
26818
|
+
Dataset entries use sampled sums; category entries use the first dataset's represented values.
|
|
26819
|
+
Zero totals give 0%. These options affect the DOM legend; tooltip/axis/table formatting is unchanged.
|
|
26820
|
+
Simplified pie/doughnut datasets with magnitudes above `Number.MAX_SAFE_INTEGER` are uniformly
|
|
26821
|
+
rescaled for finite canvas geometry. Lyra tooltips, data labels, legends, events and CSV retain
|
|
26822
|
+
original values; direct Chart.js callbacks see the rescaled peer data. Explicit `config.data`
|
|
26823
|
+
remains the unmodified full-fidelity escape hatch.
|
|
26482
26824
|
- `legendPosition: LyraChartLegendPosition = 'top'` (attribute `legend-position`) — accepts the
|
|
26483
26825
|
Chart.js `left|top|right|bottom|center|chartArea|{ [scaleId]: number }` positions plus logical
|
|
26484
26826
|
`start`/`end`; the additive `auto` chooses right above 480px and bottom below that allocation
|
|
@@ -26540,6 +26882,14 @@ structured points retain their y-value formatting.
|
|
|
26540
26882
|
explicit array replaces that generated member rather than concatenating with it. This effective
|
|
26541
26883
|
model drives canvas rendering, `appendData()`, export, the accessible name/summary, keyboard
|
|
26542
26884
|
navigation and activation events, the DOM legend, and the generated fallback table.
|
|
26885
|
+
For generated **bar** series, an explicit series `width` wins. Otherwise authored bar
|
|
26886
|
+
`borderWidth`/`borderRadius` defaults in `options.datasets.bar`, its nested `elements.bar`,
|
|
26887
|
+
`options.elements.bar`, or root `options` are left for Chart.js to resolve, including scriptable,
|
|
26888
|
+
indexable and `barBorderWidth`/`barBorderRadius` forms. Unset values retain Lyra's `--border-width`
|
|
26889
|
+
and `--border-radius` defaults; removing config restores those defaults. Raw `config.data.datasets`
|
|
26890
|
+
remain authoritative. Dense charts with transparent borders should set
|
|
26891
|
+
`config.options.datasets.bar.borderWidth = 0` (or the public `--border-width: 0` CSS hook):
|
|
26892
|
+
a one-pixel transparent stroke can consume the fill of a bar narrower than two pixels.
|
|
26543
26893
|
As a declarative alternative, place one `<script type="application/json">` in the default slot;
|
|
26544
26894
|
an explicitly assigned `config` property wins over the slotted object. Invalid/non-object JSON is
|
|
26545
26895
|
ignored without evaluating script or exposing prototype-pollution keys to the merge.
|
|
@@ -26654,6 +27004,22 @@ family-wide handling; `lr-point-click` remains as a compatibility event. Also
|
|
|
26654
27004
|
`{ datasetIndex: number, visible: boolean, hiddenDatasets: readonly number[] }`; the latter is the
|
|
26655
27005
|
complete, sorted, valid next snapshot. Call `preventDefault()` on the proposal to veto the toggle;
|
|
26656
27006
|
then no property change or commit event occurs.
|
|
27007
|
+
Category toggles use a separate pair, `lr-before-datum-visibility-change` (cancelable proposal) and
|
|
27008
|
+
`lr-datum-visibility-change` (accepted commit), carrying
|
|
27009
|
+
`{ index: number, visible: boolean, hiddenDatums: readonly number[] }`. Both details and their
|
|
27010
|
+
complete, sorted index snapshots are frozen. `index` is the source category index, including when
|
|
27011
|
+
the displayed data is sampled; it applies across all rings. Programmatic assignments emit neither
|
|
27012
|
+
pair. `preventDefault()` leaves both controlled state and the chart unchanged.
|
|
27013
|
+
|
|
27014
|
+
```html
|
|
27015
|
+
<lr-doughnut-chart
|
|
27016
|
+
legend-mode="datum"
|
|
27017
|
+
legend-display="label"
|
|
27018
|
+
.labels=${['A', 'B', 'C']}
|
|
27019
|
+
.datasets=${[{ label: 'Distribution', data: [5, 3, 2] }]}
|
|
27020
|
+
.hiddenDatums=${[]}
|
|
27021
|
+
></lr-doughnut-chart>
|
|
27022
|
+
```
|
|
26657
27023
|
|
|
26658
27024
|
**Slots:** default — one optional `<script type="application/json">` Chart.js configuration;
|
|
26659
27025
|
`data-table` — an optional consumer-provided complete, paginated, or virtualized accessible table
|
|
@@ -26671,8 +27037,8 @@ another application-owned presentation. Explicit `config.data` is the deliberate
|
|
|
26671
27037
|
Chart.js escape hatch and is not rewritten by the simplified-surface sampler.
|
|
26672
27038
|
|
|
26673
27039
|
**CSS parts:** `base`, `plot` (the fixed-height canvas/overlay region), `canvas`, `legend` (the
|
|
26674
|
-
wrapping DOM legend), `legend-item` (a dataset
|
|
26675
|
-
|
|
27040
|
+
wrapping DOM legend), `legend-item` (a dataset/category visibility button), `legend-item-hidden`
|
|
27041
|
+
(added while the dataset/category is hidden), `legend-swatch`,
|
|
26676
27042
|
`reset-zoom-button`, `description`, `notices` (wrapper for nonfatal feature warnings and
|
|
26677
27043
|
bounded-alternative truncation notices), `data-table`, `data-table-toggle` (the `dataTableToggle` disclosure button), `data-truncation` (the bounded-alternative
|
|
26678
27044
|
notice), `feature-warning` (a nonfatal missing optional-feature warning), `center` (the
|
|
@@ -26809,7 +27175,7 @@ announced. In particular, unavailable data labels do not remove generated table
|
|
|
26809
27175
|
the observer, drawing starts when the peer and canvas are ready. An empty delivered callback
|
|
26810
27176
|
retains the visible fallback. Peer loading and accessible DOM may settle while visibility is
|
|
26811
27177
|
pending. Independently, `updated()` only reaches
|
|
26812
|
-
Chart.js when at least one of `type`, `labels`, `datasets`, `description`, `grid`, `indexAxis`,
|
|
27178
|
+
Chart.js when at least one of `type`, `labels`, `datasets`, `description`, `grid`, `axes`, `compact`, `indexAxis`,
|
|
26813
27179
|
`label`, `hiddenDatasets`, `legendPosition`, `min`, `max`, `plugins`, the internal resolved auto legend
|
|
26814
27180
|
position, `valueFormatter`, `formatter`, `area`, `height`, `xLabel`, `yLabel`, `y2Label`, `beginAtZero`,
|
|
26815
27181
|
`stacked`, any `without*` control, `dataLabels`, `stackTotals`, `config`, the parsed
|
|
@@ -27129,8 +27495,9 @@ Everything else is inherited verbatim from `lr-chart`; each name below has the s
|
|
|
27129
27495
|
and behavior there. **See `llms/components/lr-chart.md` for the details, code example, and gotchas
|
|
27130
27496
|
of every entry in these lists.**
|
|
27131
27497
|
|
|
27132
|
-
**Properties:** `description`, `grid`, `indexAxis` (`index-axis`), `label`, `hiddenDatasets`, `legendPosition`
|
|
27133
|
-
(`legend-position`), `
|
|
27498
|
+
**Properties:** `description`, `grid`, `axes`, `compact`, `indexAxis` (`index-axis`), `label`, `hiddenDatasets`, `legendPosition`
|
|
27499
|
+
(`legend-position`), `hiddenDatums`, `legendMode` (`legend-mode`), `legendDisplay` (`legend-display`),
|
|
27500
|
+
`max`, `min`, `plugins`, `scaleType` (`scale-type`), `annotations`,
|
|
27134
27501
|
`stacked`, `withoutAnimation` (`without-animation`),
|
|
27135
27502
|
`withoutLegend` (`without-legend`), `withoutTooltip` (`without-tooltip`), `xLabel` (`x-label`),
|
|
27136
27503
|
`yLabel` (`y-label`), plus additive `labels`, `datasets`, `valueFormatter`, `formatter`, `area`, `zoom`,
|
|
@@ -27146,6 +27513,8 @@ of every entry in these lists.**
|
|
|
27146
27513
|
index, label, value }`), `lr-before-legend-visibility-change` (cancelable), and
|
|
27147
27514
|
`lr-legend-visibility-change` (commit; both legend events carry `datasetIndex`, `visible`, and the
|
|
27148
27515
|
complete `hiddenDatasets` snapshot).
|
|
27516
|
+
Radial category legends additionally emit `lr-before-datum-visibility-change` (cancelable) and
|
|
27517
|
+
`lr-datum-visibility-change`, carrying `index`, `visible` and the frozen `hiddenDatums` snapshot.
|
|
27149
27518
|
|
|
27150
27519
|
**Slots:** default JSON configuration script, `data-table`, `center`.
|
|
27151
27520
|
|
|
@@ -27214,8 +27583,9 @@ Bins `values` into `bins` equal-width buckets and renders as a bar chart (extend
|
|
|
27214
27583
|
`values`/`bins` (memoized per instance, keyed by reference equality on `values` plus the
|
|
27215
27584
|
normalized `bins`), and `type` always reads back `'bar'` regardless of any assignment. This
|
|
27216
27585
|
specialist owns its controller because a non-bar type would contradict the derived distribution.
|
|
27217
|
-
- All other `LyraChart` properties are inherited and usable: `description`, `grid`, `indexAxis`
|
|
27218
|
-
(`index-axis`), `hiddenDatasets`, `legendPosition` (`legend-position`),
|
|
27586
|
+
- All other `LyraChart` properties are inherited and usable: `description`, `grid`, `axes`, `compact`, `indexAxis`
|
|
27587
|
+
(`index-axis`), `hiddenDatasets`, `hiddenDatums`, `legendPosition` (`legend-position`),
|
|
27588
|
+
`legendMode` (`legend-mode`), `legendDisplay` (`legend-display`), `max`, `min`, `plugins`,
|
|
27219
27589
|
`withoutAnimation` (`without-animation`), `withoutLegend` (`without-legend`), `withoutTooltip`
|
|
27220
27590
|
(`without-tooltip`), `valueFormatter`, `formatter`, `area`, `zoom`, `config`, `height`, `xLabel` (`x-label`),
|
|
27221
27591
|
`yLabel` (`y-label`), `y2Label` (`y2-label`), `beginAtZero` (`begin-at-zero`),
|
|
@@ -27227,9 +27597,12 @@ maxSamples?)` appends finite raw samples and optionally retains only the newest
|
|
|
27227
27597
|
`appendData()` remains a working compatibility adapter (no longer deprecated); prefer
|
|
27228
27598
|
`appendSamples()` for new code.
|
|
27229
27599
|
|
|
27230
|
-
**Events:** `lr-zoom`, `lr-datum-activate`, `lr-point-click`, `lr-before-
|
|
27600
|
+
**Events:** `lr-zoom`, `lr-datum-activate`, `lr-point-click`, `lr-before-datum-visibility-change`
|
|
27601
|
+
(cancelable), `lr-datum-visibility-change`, `lr-before-legend-visibility-change` (cancelable), and
|
|
27231
27602
|
`lr-legend-visibility-change` — inherited; `lr-point-click`'s `index` is the bucket index and
|
|
27232
27603
|
`label` the generated bucket range string (`"lo–hi"`, both bounds at one decimal place).
|
|
27604
|
+
The inherited datum-visibility events apply only to radial controllers; the histogram keeps its
|
|
27605
|
+
bar controller and dataset legend even with `legend-mode="datum"`.
|
|
27233
27606
|
|
|
27234
27607
|
**Slots:** default JSON configuration script, `data-table`, `center`.
|
|
27235
27608
|
|
|
@@ -27546,6 +27919,14 @@ These named interfaces and helper signatures are available to typed integrations
|
|
|
27546
27919
|
readonly visible: boolean;
|
|
27547
27920
|
readonly hiddenDatasets: readonly number[];
|
|
27548
27921
|
}`
|
|
27922
|
+
Import: `@aceshooting/lyra-ui/components/charts/chart/chart.class.js`.
|
|
27923
|
+
`LyraChartDatumVisibilityChangeDetail {
|
|
27924
|
+
readonly index: number;
|
|
27925
|
+
readonly visible: boolean;
|
|
27926
|
+
readonly hiddenDatums: readonly number[];
|
|
27927
|
+
}`
|
|
27928
|
+
`LyraChartLegendMode = 'dataset' | 'datum'`
|
|
27929
|
+
`LyraChartLegendDisplay = 'auto' | 'label' | 'value' | 'percentage'`
|
|
27549
27930
|
|
|
27550
27931
|
- **`components-charts-chart-chart-loader-contracts`** — Supporting data types and helpers for this component family.
|
|
27551
27932
|
Import: `@aceshooting/lyra-ui/components/charts/chart/chart-feature-loader.js`.
|
|
@@ -27682,6 +28063,8 @@ These named interfaces and helper signatures are available to typed integrations
|
|
|
27682
28063
|
};
|
|
27683
28064
|
isDatasetVisible(index: number): boolean;
|
|
27684
28065
|
setDatasetVisibility(index: number, visible: boolean): void;
|
|
28066
|
+
getDataVisibility?(index: number): boolean;
|
|
28067
|
+
toggleDataVisibility?(index: number): void;
|
|
27685
28068
|
}`
|
|
27686
28069
|
Import: `@aceshooting/lyra-ui/components/charts/chart/chart.class.js`.
|
|
27687
28070
|
`LyraChartPlugin {
|