@fusion.dev/helix-headless 0.184.0 → 0.186.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/custom-elements.json +3796 -1105
- package/dist/accordion/item/accordion-item.js +1 -1
- package/dist/button-group/root/button-group-root.js +1 -1
- package/dist/canvas/root/canvas-root.js +1 -1
- package/dist/data-table/root/data-table-root.d.ts +25 -6
- package/dist/data-table/root/data-table-root.js +21 -9
- package/dist/dialog/root/dialog-root.js +1 -1
- package/dist/drawer/root/drawer-root.js +1 -1
- package/dist/drilldown/item/drilldown-item.js +1 -1
- package/dist/element-events.generated.js +7 -0
- package/dist/graph/root/graph-root.d.ts +6 -4
- package/dist/graph/root/graph-root.js +3 -3
- package/dist/heatmap/root/heatmap-root.d.ts +15 -15
- package/dist/icon/all/index.js +0 -3
- package/dist/icon/root/icon-root.d.ts +11 -18
- package/dist/icon/root/icon-root.js +4 -16
- package/dist/icon/set.js +2 -16
- package/dist/index.d.ts +2 -1
- package/dist/index.js +2 -1
- package/dist/isometric-heatmap/index.d.ts +1 -0
- package/dist/isometric-heatmap/index.js +1 -0
- package/dist/isometric-heatmap/projection.d.ts +70 -0
- package/dist/isometric-heatmap/projection.js +49 -0
- package/dist/isometric-heatmap/root/isometric-heatmap-root.d.ts +118 -0
- package/dist/isometric-heatmap/root/isometric-heatmap-root.js +127 -0
- package/dist/lightbox/root/lightbox-root.js +1 -1
- package/dist/list/root/list-root.js +1 -1
- package/dist/map/root/map-root.js +1 -1
- package/dist/menu/item/menu-item.js +1 -1
- package/dist/outline/root/outline-root.js +2 -2
- package/dist/popover/root/popover-root.js +1 -1
- package/dist/table/root/table-root.d.ts +4 -6
- package/dist/table/root/table-root.js +3 -29
- package/dist/table/tracks.d.ts +20 -0
- package/dist/table/tracks.js +28 -0
- package/dist/tabs/root/tabs-root.js +4 -5
- package/dist/tabs/tab/tab.js +2 -3
- package/dist/time-picker/root/time-picker-root.js +1 -1
- package/dist/toggle/root/toggle-root.js +1 -1
- package/dist/tour/root/tour-root.js +1 -1
- package/dist/tree/root/tree-root.js +1 -1
- package/dist/video/root/video-root.js +1 -1
- package/lint.json +1 -1
- package/package.json +6 -6
- package/types/jsx.d.ts +1340 -74
- package/types/svelte.d.ts +1 -0
- package/types/vue.d.ts +279 -13
- package/types/words.d.ts +69 -0
package/types/svelte.d.ts
CHANGED
|
@@ -86,6 +86,7 @@ declare module 'svelte/elements' {
|
|
|
86
86
|
'helix-headless-icon': Helix<'helix-headless-icon'>
|
|
87
87
|
'helix-headless-image': Helix<'helix-headless-image'>
|
|
88
88
|
'helix-headless-input': Helix<'helix-headless-input'>
|
|
89
|
+
'helix-headless-isometric-heatmap': Helix<'helix-headless-isometric-heatmap'>
|
|
89
90
|
'helix-headless-kbd': Helix<'helix-headless-kbd'>
|
|
90
91
|
'helix-headless-legend': Helix<'helix-headless-legend'>
|
|
91
92
|
'helix-headless-lightbox-item': Helix<'helix-headless-lightbox-item'>
|
package/types/vue.d.ts
CHANGED
|
@@ -74,6 +74,7 @@ import type {
|
|
|
74
74
|
HelixHeadlessIcon,
|
|
75
75
|
HelixHeadlessImage,
|
|
76
76
|
HelixHeadlessInput,
|
|
77
|
+
HelixHeadlessIsometricHeatmap,
|
|
77
78
|
HelixHeadlessKbd,
|
|
78
79
|
HelixHeadlessLegend,
|
|
79
80
|
HelixHeadlessLightboxItem,
|
|
@@ -4889,6 +4890,16 @@ and the grid becomes a tree grid.
|
|
|
4889
4890
|
Reflected, because the styled tier indents a tree grid's row headers by
|
|
4890
4891
|
it. No default, so a table that sets none writes nothing onto its host. */
|
|
4891
4892
|
childField?: (HelixHeadlessDataTable["childField"]) | undefined;
|
|
4893
|
+
/** The column tracks, as a grid track list such as `2fr 1fr max-content`,
|
|
4894
|
+
dealt out one track to a column in the order the columns are written. A
|
|
4895
|
+
column's own `width` wins in its place, and a column it does not reach
|
|
4896
|
+
takes the track a column with no `width` takes.
|
|
4897
|
+
|
|
4898
|
+
**The one track list a server can send.** A server rendering this element
|
|
4899
|
+
has no columns to read a `width` from, and neither has a stylesheet laying
|
|
4900
|
+
out the rows a page served before the table upgrades, so a table sized here
|
|
4901
|
+
lays those rows out at the widths it draws. */
|
|
4902
|
+
columns?: (HelixHeadlessDataTable["columns"]) | undefined;
|
|
4892
4903
|
/** The keys of the rows open at the start, separated by commas. Used until
|
|
4893
4904
|
`expanded` is set. */
|
|
4894
4905
|
"default-expanded"?: (HelixHeadlessDataTable["defaultExpanded"]) | undefined;
|
|
@@ -8471,10 +8482,12 @@ disagreeing with its own name for every reader who meant the left. */
|
|
|
8471
8482
|
/** The name of the icon in the Helix set.
|
|
8472
8483
|
|
|
8473
8484
|
**A lookup, and the reason both this and `icon` exist.** A name is a string,
|
|
8474
|
-
so it is what markup can carry, and resolving one means an index
|
|
8475
|
-
bundler can shake
|
|
8476
|
-
|
|
8477
|
-
|
|
8485
|
+
so it is what markup can carry, and resolving one means an index of the
|
|
8486
|
+
whole set that no bundler can shake: 15 kB for a consumer who renders one
|
|
8487
|
+
mark. An attribute is the only thing an HTML author can write, and that is
|
|
8488
|
+
worth the index; a consumer who would rather not pay it imports the
|
|
8489
|
+
element from `icon/root` and registers the glyphs it names, or hands over
|
|
8490
|
+
the value instead.
|
|
8478
8491
|
|
|
8479
8492
|
A name written `prefix:name` asks the library registered under that
|
|
8480
8493
|
prefix. */
|
|
@@ -8871,6 +8884,253 @@ export type HelixHeadlessInputVueEvents = {
|
|
|
8871
8884
|
input: HelixHeadlessInputElementEvent;
|
|
8872
8885
|
};
|
|
8873
8886
|
|
|
8887
|
+
/** `HelixHeadlessIsometricHeatmap` component event */
|
|
8888
|
+
export type HelixHeadlessIsometricHeatmapElementEvent<E = Event> = TypedEvent<
|
|
8889
|
+
HelixHeadlessIsometricHeatmap,
|
|
8890
|
+
E
|
|
8891
|
+
>;
|
|
8892
|
+
/** `helix-before-change` event type */
|
|
8893
|
+
export type HelixHeadlessIsometricHeatmapHelixBeforeChangeElementEvent =
|
|
8894
|
+
HelixHeadlessIsometricHeatmapElementEvent<HelixBeforeChangeEvent>;
|
|
8895
|
+
/** `helix-reading-change` event type */
|
|
8896
|
+
export type HelixHeadlessIsometricHeatmapHelixReadingChangeElementEvent =
|
|
8897
|
+
HelixHeadlessIsometricHeatmapElementEvent<HelixReadingChangeEvent>;
|
|
8898
|
+
/** `helix-reading-press` event type */
|
|
8899
|
+
export type HelixHeadlessIsometricHeatmapHelixReadingPressElementEvent =
|
|
8900
|
+
HelixHeadlessIsometricHeatmapElementEvent<HelixReadingPressEvent>;
|
|
8901
|
+
/** `helix-resize` event type */
|
|
8902
|
+
export type HelixHeadlessIsometricHeatmapHelixResizeElementEvent =
|
|
8903
|
+
HelixHeadlessIsometricHeatmapElementEvent<HelixResizeEvent>;
|
|
8904
|
+
|
|
8905
|
+
export type HelixHeadlessIsometricHeatmapVueProps = {
|
|
8906
|
+
/** Draws every prism at no height, so the tones lie on a plane. */
|
|
8907
|
+
flat?: (HelixHeadlessIsometricHeatmap["flat"]) | undefined;
|
|
8908
|
+
/** How tall the highest reading stands, in cells. Every other reading stands
|
|
8909
|
+
at its share of it. */
|
|
8910
|
+
relief?: (HelixHeadlessIsometricHeatmap["relief"]) | undefined;
|
|
8911
|
+
/** The words shown in place of the drawing when the table has no readings,
|
|
8912
|
+
and the fallback of the `empty` slot. */
|
|
8913
|
+
"empty-text"?: (HelixHeadlessIsometricHeatmap["emptyText"]) | undefined;
|
|
8914
|
+
/** The words shown in place of the drawing when the table has no readings,
|
|
8915
|
+
and the fallback of the `empty` slot. */
|
|
8916
|
+
emptyText?: (HelixHeadlessIsometricHeatmap["emptyText"]) | undefined;
|
|
8917
|
+
/** Whether the readings are still on their way. The chart shows
|
|
8918
|
+
`loading-text` in place of an empty drawing until it has readings.
|
|
8919
|
+
|
|
8920
|
+
Reflected, so a stylesheet can treat the chart while it waits. A chart
|
|
8921
|
+
that already has readings keeps drawing them, so a refresh does not
|
|
8922
|
+
blank it. */
|
|
8923
|
+
loading?: (HelixHeadlessIsometricHeatmap["loading"]) | undefined;
|
|
8924
|
+
/** The words shown in place of the drawing while `loading` is set and
|
|
8925
|
+
there are no readings yet, and the fallback of the `loading` slot. */
|
|
8926
|
+
"loading-text"?: (HelixHeadlessIsometricHeatmap["loadingText"]) | undefined;
|
|
8927
|
+
/** The words shown in place of the drawing while `loading` is set and
|
|
8928
|
+
there are no readings yet, and the fallback of the `loading` slot. */
|
|
8929
|
+
loadingText?: (HelixHeadlessIsometricHeatmap["loadingText"]) | undefined;
|
|
8930
|
+
/** The id of the table to read.
|
|
8931
|
+
|
|
8932
|
+
Names a table in the same tree, so a chart inside another component's
|
|
8933
|
+
shadow root reads a table in that root rather than one in the document. A
|
|
8934
|
+
`<table>` or anything built from grid roles, including `helix-table`.
|
|
8935
|
+
|
|
8936
|
+
**In React this arrives as a property and not as an attribute**, the way
|
|
8937
|
+
`Tooltip.for` does, so it does not reflect and nothing styles on it. */
|
|
8938
|
+
for?: (HelixHeadlessIsometricHeatmap["for"]) | undefined;
|
|
8939
|
+
/** The chart's name, which starts the chart's text summary.
|
|
8940
|
+
|
|
8941
|
+
Absent falls back to the table's own caption, which is usually the right
|
|
8942
|
+
words and is already written. */
|
|
8943
|
+
label?: (HelixHeadlessIsometricHeatmap["label"]) | undefined;
|
|
8944
|
+
/** The locale the chart's own numbers are written in: its axis, its
|
|
8945
|
+
percentages and its totals, such as `de` for `1.240` and `32 %`.
|
|
8946
|
+
|
|
8947
|
+
Absent reads the nearest `lang`, then the runtime's own. The table's
|
|
8948
|
+
cells are shown as the table writes them, whatever this says. */
|
|
8949
|
+
locale?: (HelixHeadlessIsometricHeatmap["locale"]) | undefined;
|
|
8950
|
+
/** Where a reading the keys moved to stands among the readings, said after
|
|
8951
|
+
it. `{position}` and `{count}` are replaced with the numbers, written in
|
|
8952
|
+
`locale`.
|
|
8953
|
+
|
|
8954
|
+
Set it to the words of the page's language, such as `{position} von
|
|
8955
|
+
{count}`, or to nothing to say no position. A slice or a series a
|
|
8956
|
+
legend hid is not counted. */
|
|
8957
|
+
"position-label"?: (HelixHeadlessIsometricHeatmap["positionLabel"]) | undefined;
|
|
8958
|
+
/** Where a reading the keys moved to stands among the readings, said after
|
|
8959
|
+
it. `{position}` and `{count}` are replaced with the numbers, written in
|
|
8960
|
+
`locale`.
|
|
8961
|
+
|
|
8962
|
+
Set it to the words of the page's language, such as `{position} von
|
|
8963
|
+
{count}`, or to nothing to say no position. A slice or a series a
|
|
8964
|
+
legend hid is not counted. */
|
|
8965
|
+
positionLabel?: (HelixHeadlessIsometricHeatmap["positionLabel"]) | undefined;
|
|
8966
|
+
/** The name the `overview` gives the busiest reading, `{busiestLabel}` in
|
|
8967
|
+
`overview-label`. */
|
|
8968
|
+
"busiest-label"?: (HelixHeadlessIsometricHeatmap["busiestLabel"]) | undefined;
|
|
8969
|
+
/** The name the `overview` gives the busiest reading, `{busiestLabel}` in
|
|
8970
|
+
`overview-label`. */
|
|
8971
|
+
busiestLabel?: (HelixHeadlessIsometricHeatmap["busiestLabel"]) | undefined;
|
|
8972
|
+
/** Space between cells, in CSS pixels. It is a number for the same reason
|
|
8973
|
+
`min-cell` is. */
|
|
8974
|
+
gap?: (HelixHeadlessIsometricHeatmap["gap"]) | undefined;
|
|
8975
|
+
/** The smallest a cell may get before the strip draws fewer of them, in CSS pixels.
|
|
8976
|
+
|
|
8977
|
+
**Set this only to overrule what the strip actually draws.** The arithmetic
|
|
8978
|
+
needs a width in pixels and the width is a length the stylesheet resolves,
|
|
8979
|
+
so a number written here that disagrees with the sheet is a promise the
|
|
8980
|
+
consumer has to keep by hand, and the one number a summary is told to trust
|
|
8981
|
+
is the one it gets wrong.
|
|
8982
|
+
|
|
8983
|
+
The strip measures itself, so sizing the cells in a sheet is enough on its
|
|
8984
|
+
own and these two are the estimate used until the first measurement lands.
|
|
8985
|
+
Writing the attribute pins the value and stops the measurement being
|
|
8986
|
+
consulted, which is what a container query or a transition on the cell size
|
|
8987
|
+
wants, where what is drawn this frame is not what the arithmetic should
|
|
8988
|
+
plan around.
|
|
8989
|
+
|
|
8990
|
+
Zero turns the dropping off altogether, which is right for a strip in a
|
|
8991
|
+
container that cannot get narrow. */
|
|
8992
|
+
"min-cell"?: (HelixHeadlessIsometricHeatmap["minCell"] | `${number}`) | undefined;
|
|
8993
|
+
/** The smallest a cell may get before the strip draws fewer of them, in CSS pixels.
|
|
8994
|
+
|
|
8995
|
+
**Set this only to overrule what the strip actually draws.** The arithmetic
|
|
8996
|
+
needs a width in pixels and the width is a length the stylesheet resolves,
|
|
8997
|
+
so a number written here that disagrees with the sheet is a promise the
|
|
8998
|
+
consumer has to keep by hand, and the one number a summary is told to trust
|
|
8999
|
+
is the one it gets wrong.
|
|
9000
|
+
|
|
9001
|
+
The strip measures itself, so sizing the cells in a sheet is enough on its
|
|
9002
|
+
own and these two are the estimate used until the first measurement lands.
|
|
9003
|
+
Writing the attribute pins the value and stops the measurement being
|
|
9004
|
+
consulted, which is what a container query or a transition on the cell size
|
|
9005
|
+
wants, where what is drawn this frame is not what the arithmetic should
|
|
9006
|
+
plan around.
|
|
9007
|
+
|
|
9008
|
+
Zero turns the dropping off altogether, which is right for a strip in a
|
|
9009
|
+
container that cannot get narrow. */
|
|
9010
|
+
minCell?: (HelixHeadlessIsometricHeatmap["minCell"]) | undefined;
|
|
9011
|
+
/** The `overview`'s sentence. `{busiestLabel}` and `{totalLabel}` are
|
|
9012
|
+
`busiest-label` and `total-label`, `{busiest}` the busiest reading's name
|
|
9013
|
+
and its reading as the table writes it, and `{total}` the total of the
|
|
9014
|
+
readings drawn, written in the locale. */
|
|
9015
|
+
"overview-label"?: (HelixHeadlessIsometricHeatmap["overviewLabel"]) | undefined;
|
|
9016
|
+
/** The `overview`'s sentence. `{busiestLabel}` and `{totalLabel}` are
|
|
9017
|
+
`busiest-label` and `total-label`, `{busiest}` the busiest reading's name
|
|
9018
|
+
and its reading as the table writes it, and `{total}` the total of the
|
|
9019
|
+
readings drawn, written in the locale. */
|
|
9020
|
+
overviewLabel?: (HelixHeadlessIsometricHeatmap["overviewLabel"]) | undefined;
|
|
9021
|
+
/** How many rows the strip has.
|
|
9022
|
+
|
|
9023
|
+
`1` is a status strip and `7` is a calendar week, which are the two readings
|
|
9024
|
+
this covers. Cells fill down the column and then across, which is what a
|
|
9025
|
+
calendar heatmap does: a week is a column, so the strip reads along the
|
|
9026
|
+
line in weeks, from the right on a right-to-left page, and top to bottom in
|
|
9027
|
+
days. */
|
|
9028
|
+
rows?: (HelixHeadlessIsometricHeatmap["rows"]) | undefined;
|
|
9029
|
+
/** What the readout added for a selected cell, under `selection-mode`. */
|
|
9030
|
+
"selected-label"?: (HelixHeadlessIsometricHeatmap["selectedLabel"]) | undefined;
|
|
9031
|
+
/** What the readout added for a selected cell, under `selection-mode`. */
|
|
9032
|
+
selectedLabel?: (HelixHeadlessIsometricHeatmap["selectedLabel"]) | undefined;
|
|
9033
|
+
/** What the `selection` part says after the selection changes. `{count}` is
|
|
9034
|
+
how many cells are selected, written in the locale, and a language that
|
|
9035
|
+
needs plural forms writes them: `{count, plural, one {# wybrany} few
|
|
9036
|
+
{# wybrane} many {# wybranych} other {# wybranego}}`. */
|
|
9037
|
+
"selection-label"?: (HelixHeadlessIsometricHeatmap["selectionLabel"]) | undefined;
|
|
9038
|
+
/** What the `selection` part says after the selection changes. `{count}` is
|
|
9039
|
+
how many cells are selected, written in the locale, and a language that
|
|
9040
|
+
needs plural forms writes them: `{count, plural, one {# wybrany} few
|
|
9041
|
+
{# wybrane} many {# wybranych} other {# wybranego}}`. */
|
|
9042
|
+
selectionLabel?: (HelixHeadlessIsometricHeatmap["selectionLabel"]) | undefined;
|
|
9043
|
+
/** How many cells a reader can select: `single` or `multiple`.
|
|
9044
|
+
|
|
9045
|
+
Absent selects nothing, and a press or Space does what it did. */
|
|
9046
|
+
"selection-mode"?: (HelixHeadlessIsometricHeatmap["selectionMode"]) | undefined;
|
|
9047
|
+
/** How many cells a reader can select: `single` or `multiple`.
|
|
9048
|
+
|
|
9049
|
+
Absent selects nothing, and a press or Space does what it did. */
|
|
9050
|
+
selectionMode?: (HelixHeadlessIsometricHeatmap["selectionMode"]) | undefined;
|
|
9051
|
+
/** What Shift takes in under `selection-mode="multiple"`: `linear`, every
|
|
9052
|
+
cell between two in the table's order, or `rectangle`, the cells between
|
|
9053
|
+
two corners by row and by column, as a spreadsheet selects a range. */
|
|
9054
|
+
"selection-shape"?: (HelixHeadlessIsometricHeatmap["selectionShape"]) | undefined;
|
|
9055
|
+
/** What Shift takes in under `selection-mode="multiple"`: `linear`, every
|
|
9056
|
+
cell between two in the table's order, or `rectangle`, the cells between
|
|
9057
|
+
two corners by row and by column, as a spreadsheet selects a range. */
|
|
9058
|
+
selectionShape?: (HelixHeadlessIsometricHeatmap["selectionShape"]) | undefined;
|
|
9059
|
+
/** The strip's name where the chart has none: no `aria-label`, `label`, or
|
|
9060
|
+
table caption. */
|
|
9061
|
+
"strip-label"?: (HelixHeadlessIsometricHeatmap["stripLabel"]) | undefined;
|
|
9062
|
+
/** The strip's name where the chart has none: no `aria-label`, `label`, or
|
|
9063
|
+
table caption. */
|
|
9064
|
+
stripLabel?: (HelixHeadlessIsometricHeatmap["stripLabel"]) | undefined;
|
|
9065
|
+
/** Lower bounds for the tone buckets, in the order the tones are given.
|
|
9066
|
+
|
|
9067
|
+
`thresholds="1 3 6 9"` with `tones="1 2 3 4"` puts 1 and 2 in the ramp's
|
|
9068
|
+
first step, 3 to 5 in the second, 6 to 8 in the third, and 9 upward in the
|
|
9069
|
+
fourth. A value below the first bound gets no tone at all: an empty day in a
|
|
9070
|
+
contribution graph is a day with nothing in it, and painting it as the
|
|
9071
|
+
lowest bucket claims a reading that does not exist. */
|
|
9072
|
+
thresholds?: (HelixHeadlessIsometricHeatmap["thresholds"]) | undefined;
|
|
9073
|
+
/** The tone for each bucket, in the same order as `thresholds`.
|
|
9074
|
+
|
|
9075
|
+
A name, resolved as `--heatmap-tone-<name>` by whichever tier answers.
|
|
9076
|
+
**`"1"` through `"5"` are a ramp and everything else is a category**, which
|
|
9077
|
+
is the distinction a heatmap lives or dies on: magnitude has to be one hue
|
|
9078
|
+
getting louder, because a reader compares two cells by weight and cannot
|
|
9079
|
+
compare two hues at all. `tones="surface info accent success primary"` for a
|
|
9080
|
+
commit count is five unrelated hues for five amounts, which is confetti with
|
|
9081
|
+
no order in it. */
|
|
9082
|
+
tones?: (HelixHeadlessIsometricHeatmap["tones"]) | undefined;
|
|
9083
|
+
/** The name the `overview` gives the total of the readings drawn,
|
|
9084
|
+
`{totalLabel}` in `overview-label`. */
|
|
9085
|
+
"total-label"?: (HelixHeadlessIsometricHeatmap["totalLabel"]) | undefined;
|
|
9086
|
+
/** The name the `overview` gives the total of the readings drawn,
|
|
9087
|
+
`{totalLabel}` in `overview-label`. */
|
|
9088
|
+
totalLabel?: (HelixHeadlessIsometricHeatmap["totalLabel"]) | undefined;
|
|
9089
|
+
/** The selected cells, separated by commas: each by the date its row's
|
|
9090
|
+
header carries in a `<time datetime>`, such as `2026-06-11`, or by the
|
|
9091
|
+
header's words where it carries none.
|
|
9092
|
+
|
|
9093
|
+
Set it to start with cells selected. Written by a press or a key under
|
|
9094
|
+
`selection-mode`. */
|
|
9095
|
+
value?: (HelixHeadlessIsometricHeatmap["value"]) | undefined;
|
|
9096
|
+
/** The readings as data, in the shape of a table, where the page has no
|
|
9097
|
+
table to point `for` at. `for` wins where both are set.
|
|
9098
|
+
|
|
9099
|
+
```js
|
|
9100
|
+
chart.data = {
|
|
9101
|
+
caption: 'Sessions by channel',
|
|
9102
|
+
columns: ['Month', 'Direct', 'Referral'],
|
|
9103
|
+
rows: [['Jan', 10, 4], ['Feb', 20, 8]],
|
|
9104
|
+
}
|
|
9105
|
+
```
|
|
9106
|
+
|
|
9107
|
+
The first column holds each row's label and every column after it a
|
|
9108
|
+
series, as in a table. A cell is a number, words, `null` for a blank,
|
|
9109
|
+
or `{ value, text }` for a number shown as words, such as `$128k`. A
|
|
9110
|
+
number is shown in `locale`.
|
|
9111
|
+
|
|
9112
|
+
**A table is still the better source where the page can show one**:
|
|
9113
|
+
it reads with no script and before hydration, and a reader can sort and
|
|
9114
|
+
copy it. Data is drawn on the client only, so a server serves the
|
|
9115
|
+
frame, and the summary, the keys and the readout are then the whole of
|
|
9116
|
+
what a screen reader is given. Set a new object to redraw: the chart
|
|
9117
|
+
does not look inside the one it has. */
|
|
9118
|
+
data?: (HelixHeadlessIsometricHeatmap["data"]) | undefined;
|
|
9119
|
+
};
|
|
9120
|
+
|
|
9121
|
+
export type HelixHeadlessIsometricHeatmapVueEvents = {
|
|
9122
|
+
/** Fired once a press or a key has changed which cells are selected. */
|
|
9123
|
+
change: HelixHeadlessIsometricHeatmapElementEvent;
|
|
9124
|
+
/** Fired before a press or a key changes which cells are selected, with the `value` it would leave. Cancelable. */
|
|
9125
|
+
"helix-before-change": HelixHeadlessIsometricHeatmapHelixBeforeChangeElementEvent;
|
|
9126
|
+
/** The reading shown moved, or was put away: `index` is the row, or `-1` for none, with its `label`, the `series` the keys rest on, and the `pointerType` that moved it. */
|
|
9127
|
+
"helix-reading-change": HelixHeadlessIsometricHeatmapHelixReadingChangeElementEvent;
|
|
9128
|
+
/** A reading was clicked, tapped, or pressed with Enter or Space, with the same detail as `helix-reading-change`. */
|
|
9129
|
+
"helix-reading-press": HelixHeadlessIsometricHeatmapHelixReadingPressElementEvent;
|
|
9130
|
+
/** Fired when the number of cells drawn changes, with the new number. */
|
|
9131
|
+
"helix-resize": HelixHeadlessIsometricHeatmapHelixResizeElementEvent;
|
|
9132
|
+
};
|
|
9133
|
+
|
|
8874
9134
|
/** `HelixHeadlessKbd` component event */
|
|
8875
9135
|
export type HelixHeadlessKbdElementEvent<E = Event> = TypedEvent<
|
|
8876
9136
|
HelixHeadlessKbd,
|
|
@@ -15441,13 +15701,11 @@ and each column may say otherwise.
|
|
|
15441
15701
|
**It is also the only track list a server can send.** The shim has no tree
|
|
15442
15702
|
to walk, so a render there knows of no columns and this attribute is the
|
|
15443
15703
|
whole answer: a table given one lays its grid out in the first paint, and a
|
|
15444
|
-
table sized only by its columns
|
|
15704
|
+
table sized only by its columns takes, until it upgrades, a track for each
|
|
15705
|
+
column at the width a column with no `width` takes (`helix.css`).
|
|
15445
15706
|
|
|
15446
|
-
|
|
15447
|
-
|
|
15448
|
-
and a list here would be a second way to say what that says. This table's
|
|
15449
|
-
cells are markup, and a table written as rows of cells with no column
|
|
15450
|
-
declared in it has nowhere else to be sized from. */
|
|
15707
|
+
Data Table takes the same list, for the same reason: a data table that
|
|
15708
|
+
serves its first page as rows is laid out by it before it upgrades. */
|
|
15451
15709
|
columns?: (HelixHeadlessTable["columns"]) | undefined;
|
|
15452
15710
|
/** The keys of the rows whose rows are shown at the start, separated by
|
|
15453
15711
|
commas. Used until `expanded` is set. */
|
|
@@ -19203,6 +19461,8 @@ export type CustomCssProperties = {
|
|
|
19203
19461
|
"--heatmap-tone-success"?: (string) | undefined;
|
|
19204
19462
|
/** The color of the `warning` tone. */
|
|
19205
19463
|
"--heatmap-tone-warning"?: (string) | undefined;
|
|
19464
|
+
/** How many cells the drawing spans across: its columns and its rows together. The component writes it on the strip, and a stylesheet that caps the cell size reads it. */
|
|
19465
|
+
"--isometric-heatmap-span"?: (string) | undefined;
|
|
19206
19466
|
/** How far the zoomed item is moved across from the middle of the viewport, in pixels, toward the right. Written only while zoomed. */
|
|
19207
19467
|
"--lightbox-pan-x"?: (string) | undefined;
|
|
19208
19468
|
/** How far the zoomed item is moved down from the middle of the viewport, in pixels. Written only while zoomed. */
|
|
@@ -19509,7 +19769,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
19509
19769
|
HelixHeadlessCopyButtonVueProps,
|
|
19510
19770
|
HelixHeadlessCopyButtonVueEvents
|
|
19511
19771
|
>;
|
|
19512
|
-
/** Declare the columns as 'TableColumn' children and pass the rows as an array. The schema stays readable in the HTML, and the rows can be windowed, which ten thousand row elements cannot be. '''html <helix-headless-data-table .rows=${rows} sort="name:asc" page-size="20"> <helix-headless-table-column field="name" sortable>Name</helix-headless-table-column> <helix-headless-table-column field="size" text-align="end" sortable .cell=${bytes}>Size</helix-headless-table-column> </helix-headless-data-table> ''' For a short table written out by hand, use 'Table', which takes rows as markup. Sort and filter apply to the whole set, including the rows on other pages. **Write the first page as rows, so the served HTML carries the values.** The table reads each cell from its column, and a server does not pass the column children to this element, so on its own it serves the headings and no values. Write the first page under the columns as 'TableRow' and 'TableCell' elements, in the table's sort and page size and formatted as its columns draw them. The table shows your rows until 'rows' holds a row, then draws its own in their place and leaves yours in the page, unshown. A development build warns when the two differ. In React, map the first page of the same array in the same server component. 'selectable' adds a column of checkboxes, keyed on 'row-key': - A row is selected by its key, so the selection survives a sort, a filter, and a page change. - 'selected' holds the chosen keys, comma separated, the same shape 'Listbox' uses for a multiple choice. As with 'sort', writing it applies the selection, and 'default-selected' holds what the markup declared. - The checkbox in the heading selects every row in the result, across pages, and shows a dash while only some are chosen. - Shift with a press on a checkbox selects every row between it and the row last chosen. - 'selection-behavior="replace"' makes a press or a move select the row alone, as a file list does. Control or Command with a press adds or takes out one row, and Shift with a press selects every row from the one last chosen. To act on a single row, such as opening it, put a link or a button in a cell. **Keyboard.** The grid is one tab stop, and the arrow keys move between its cells, the headings included. | Key | What it does | |---|---| | Right, Left | Moves one cell along the row. Left moves on, on a right-to-left page. | | Down, Up | Moves one row, the heading row and the 'load-more' row included. | | Home, End | Moves to the first or the last cell of the row. | | Control with Home or End | Moves to the first or the last cell of the grid. | | Page Down, Page Up | Moves by the rows that fit in view. | | Enter, F2 | Moves into the cell's controls. Escape moves back to the cell, and Tab moves between the controls of one cell. | | Enter, Space on a sortable heading | Sorts by the column. | | Enter, Space on the 'load-more' row | Sends 'helix-load-more'. | | Space on a row | Selects the row, in a 'selectable' table. Under 'selection-behavior="replace"', selects it alone, and Control or Command with Space adds or takes out the row. | | Down, Up, Page Down, Page Up under 'selection-behavior="replace"' | Selects the row it moves to alone. Control or Command with the key moves without selecting. | | Shift with Down or Up | Selects the rows it moves across, in a 'selectable' table. | | Shift with Space | Selects every row from the one last chosen, in a 'selectable' table. | | Control or Command with A | Selects every row, in a 'selectable' table. | | Right on a row header in a tree grid | Opens a closed row, and moves one cell along an open one. | | Left on a row header in a tree grid | Closes an open row, and moves to the parent of a closed one. | | A letter or a word | Moves to the next row whose row header starts with what you typed. | 'selected' and 'expanded' hold their keys in the order of the rows, as do 'helix-select', 'helix-selected' and 'helix-expand'. Each row is named by its row header, the column marked 'row-header', or the first column with a 'field' where none is. A screen reader says it as a reader moves between rows. **Rows that hold rows.** 'child-field' names the field that holds a row's child rows, and the grid becomes a tree grid. The row header column draws a mark that a press opens and closes a row by, and 'expanded' holds the keys of the open rows, which 'row-key' names. Right on a closed row's header opens it, Left on an open one closes it, and Left on a child moves to its parent. A sort orders the rows under each parent, and a search shows the rows that lead to each match, open. 'load-more' adds a row after the last one with a button that sends 'helix-load-more'. A 'windowed' table also sends it by itself once a reader scrolls within one screen of the end, once for each number of rows. Add the next rows to 'rows', and set 'loading' while they are on their way. When a fetch fails, set 'error-text', such as "The files did not load", and put a button that tries again in the 'error' slot. The line shows after the rows in place of the empty and loading lines, the live region says it, and the table takes the 'error' state. Clear it once you try again. The controls inside the cells leave the tab order, so Tab moves past the whole grid. A windowed table keeps the row holding focus drawn while the rest scroll away. People can resize and reorder the columns. 'resizable' on a column puts a separator on its edge. 'reorderable' on the table puts a grip on each heading that has a 'field', moved by dragging or with the arrow keys. The new order is written to 'order' as a list of fields. Your markup is not rewritten: the table assigns the headings to its header in that order. **'reorderable-rows' lets people move rows.** A column of grips leads each row, named by 'move-row-label'. Drag a grip to move its row, and the table scrolls near an edge. Or press Space or Enter on a grip, or click it, to pick up its row, move it with Down and Up, Home and End, and press Space or Enter again to drop it. A click on another row drops it there, and Escape puts it back. The table says each step in its 'live' region. A drop sends 'helix-before-reorder', which you can refuse, and then 'helix-reorder' with 'kind' set to 'row', whose 'keys' hold every key of 'rows' in the new order. **You move the rows**: set 'rows' to the new order, and the table draws it. Set 'row-key', so a row is known by its key once it has moved. The grips do nothing while a 'sort' is set, since the sort decides the order, and a tree grid draws none. 'csv()' returns the result as text: every row that passes the filter, in the order and the columns on screen. Saving the file is up to you.
|
|
19772
|
+
/** Declare the columns as 'TableColumn' children and pass the rows as an array. The schema stays readable in the HTML, and the rows can be windowed, which ten thousand row elements cannot be. '''html <helix-headless-data-table .rows=${rows} sort="name:asc" page-size="20"> <helix-headless-table-column field="name" sortable>Name</helix-headless-table-column> <helix-headless-table-column field="size" text-align="end" sortable .cell=${bytes}>Size</helix-headless-table-column> </helix-headless-data-table> ''' For a short table written out by hand, use 'Table', which takes rows as markup. Sort and filter apply to the whole set, including the rows on other pages. **Write the first page as rows, so the served HTML carries the values.** The table reads each cell from its column, and a server does not pass the column children to this element, so on its own it serves the headings and no values. Write the first page under the columns as 'TableRow' and 'TableCell' elements, in the table's sort and page size and formatted as its columns draw them. The table shows your rows until 'rows' holds a row, then draws its own in their place and leaves yours in the page, unshown. A development build warns when the two differ. In React, map the first page of the same array in the same server component. 'selectable' adds a column of checkboxes, keyed on 'row-key': - A row is selected by its key, so the selection survives a sort, a filter, and a page change. - 'selected' holds the chosen keys, comma separated, the same shape 'Listbox' uses for a multiple choice. As with 'sort', writing it applies the selection, and 'default-selected' holds what the markup declared. - The checkbox in the heading selects every row in the result, across pages, and shows a dash while only some are chosen. - Shift with a press on a checkbox selects every row between it and the row last chosen. - 'selection-behavior="replace"' makes a press or a move select the row alone, as a file list does. Control or Command with a press adds or takes out one row, and Shift with a press selects every row from the one last chosen. To act on a single row, such as opening it, put a link or a button in a cell. **Keyboard.** The grid is one tab stop, and the arrow keys move between its cells, the headings included. | Key | What it does | |---|---| | Right, Left | Moves one cell along the row. Left moves on, on a right-to-left page. | | Down, Up | Moves one row, the heading row and the 'load-more' row included. | | Home, End | Moves to the first or the last cell of the row. | | Control with Home or End | Moves to the first or the last cell of the grid. | | Page Down, Page Up | Moves by the rows that fit in view. | | Enter, F2 | Moves into the cell's controls. Escape moves back to the cell, and Tab moves between the controls of one cell. | | Enter, Space on a sortable heading | Sorts by the column. | | Enter, Space on the 'load-more' row | Sends 'helix-load-more'. | | Space on a row | Selects the row, in a 'selectable' table. Under 'selection-behavior="replace"', selects it alone, and Control or Command with Space adds or takes out the row. | | Down, Up, Page Down, Page Up under 'selection-behavior="replace"' | Selects the row it moves to alone. Control or Command with the key moves without selecting. | | Shift with Down or Up | Selects the rows it moves across, in a 'selectable' table. | | Shift with Space | Selects every row from the one last chosen, in a 'selectable' table. | | Control or Command with A | Selects every row, in a 'selectable' table. | | Right on a row header in a tree grid | Opens a closed row, and moves one cell along an open one. | | Left on a row header in a tree grid | Closes an open row, and moves to the parent of a closed one. | | A letter or a word | Moves to the next row whose row header starts with what you typed. | 'selected' and 'expanded' hold their keys in the order of the rows, as do 'helix-select', 'helix-selected' and 'helix-expand'. Each row is named by its row header, the column marked 'row-header', or the first column with a 'field' where none is. A screen reader says it as a reader moves between rows. **Rows that hold rows.** 'child-field' names the field that holds a row's child rows, and the grid becomes a tree grid. The row header column draws a mark that a press opens and closes a row by, and 'expanded' holds the keys of the open rows, which 'row-key' names. Right on a closed row's header opens it, Left on an open one closes it, and Left on a child moves to its parent. A sort orders the rows under each parent, and a search shows the rows that lead to each match, open. 'load-more' adds a row after the last one with a button that sends 'helix-load-more'. A 'windowed' table also sends it by itself once a reader scrolls within one screen of the end, once for each number of rows. Add the next rows to 'rows', and set 'loading' while they are on their way. When a fetch fails, set 'error-text', such as "The files did not load", and put a button that tries again in the 'error' slot. The line shows after the rows in place of the empty and loading lines, the live region says it, and the table takes the 'error' state. Clear it once you try again. The controls inside the cells leave the tab order, so Tab moves past the whole grid. A windowed table keeps the row holding focus drawn while the rest scroll away. People can resize and reorder the columns. 'resizable' on a column puts a separator on its edge. 'reorderable' on the table puts a grip on each heading that has a 'field', moved by dragging or with the arrow keys. The new order is written to 'order' as a list of fields. Your markup is not rewritten: the table assigns the headings to its header in that order. **'reorderable-rows' lets people move rows.** A column of grips leads each row, named by 'move-row-label'. Drag a grip to move its row, and the table scrolls near an edge. Or press Space or Enter on a grip, or click it, to pick up its row, move it with Down and Up, Home and End, and press Space or Enter again to drop it. A click on another row drops it there, and Escape puts it back. The table says each step in its 'live' region. A drop sends 'helix-before-reorder', which you can refuse, and then 'helix-reorder' with 'kind' set to 'row', whose 'keys' hold every key of 'rows' in the new order. **You move the rows**: set 'rows' to the new order, and the table draws it. Set 'row-key', so a row is known by its key once it has moved. The grips do nothing while a 'sort' is set, since the sort decides the order, and a tree grid draws none. 'csv()' returns the result as text: every row that passes the filter, in the order and the columns on screen. Saving the file is up to you. Size a column with its own 'width', or every column at once with 'columns', a track list dealt out one track to a column in the order they are written, as 'Table' deals it. A column's 'width' wins in its place. **A table that serves its first page takes its widths from 'columns'**: a server and a stylesheet can read the table's own attributes and not its columns', so the served rows are laid out at the widths the table draws. **The columns are an import of their own.** A column is the Table family's 'TableColumn', which the data table does not register, so a page that writes one imports the Table entry beside the data table: '''js import '@fusion.dev/helix/data-table' import '@fusion.dev/helix/table' ''' In development, a data table holding a column nobody registered says so once the page has loaded, with the line to add. */
|
|
19513
19773
|
"helix-headless-data-table": DefineCustomElement<
|
|
19514
19774
|
HelixHeadlessDataTable,
|
|
19515
19775
|
HelixHeadlessDataTableVueProps,
|
|
@@ -19623,7 +19883,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
19623
19883
|
HelixHeadlessFormatDateVueProps,
|
|
19624
19884
|
HelixHeadlessFormatDateVueEvents
|
|
19625
19885
|
>;
|
|
19626
|
-
/**
|
|
19886
|
+
/** The frame draws no graph itself. A force layout of thousands of notes is physics and WebGL, which a renderer such as Sigma.js does, and an architecture diagram is drawn by 'isometricDriver' from '@fusion.dev/helix-graph/isometric'. Put the drawing's box in the frame, and 'connectGraph' from '@fusion.dev/helix-graph' draws 'nodes' and 'links' in it and keeps it in step with the frame. What the frame adds is what a drawing of a graph cannot do: a list of every note beside it, which is the graph for a screen reader and a quick way to find a note for anyone. The selected note comes first, then the notes it links to and from, then every other note, and the search field narrows it. Selecting a note in the list or in the drawing is the same selection. Set 'depth' to show the local graph: only the notes within that many links of the selected one. The search field is a combobox over the list. Down and Up move through the notes while the focus stays in the field, and Enter selects one. **Walk the links with Alt and the arrow keys**, in the list or in the search field once its keys are on a note. The note the keys are on is marked in the drawing. | Key | What it does | |---|---| | Alt+Right | Follows a link, to the first note the one the keys are on links to or from. | | Alt+Down, Alt+Up | Moves to the next or the previous note linked to the one the step came from, wrapping. | | Alt+Left | Goes back along the links walked. | Right and Left swap on a right-to-left page. Each step says the note, how it stands to the note it came from, and its place among that note's links, such as "Hiring plan. Linked from Roadmap. 2 of 3". Enter selects the note. Set 'legend' to name the groups over the drawing, each a button that shows or hides its notes. 'hiddenGroups' holds the groups turned off, and the list holds only what the drawing shows. The legend is a toolbar and one tab stop: the arrow keys, Home, End and a group's first letters move between its buttons, and Space or Enter presses one. 'nodes' and 'links' are properties, never markup: a graph of ten thousand notes as ten thousand elements would cost what the renderer exists to save. The list draws only the rows in view. The list scrolls on this tier. It carries 'data-scroller', and 'core' ships '[data-scroller] { overflow: auto }' into every shadow root. You still need to set a block size on the list, or it grows to hold every row. */
|
|
19627
19887
|
"helix-headless-graph": DefineCustomElement<
|
|
19628
19888
|
HelixHeadlessGraph,
|
|
19629
19889
|
HelixHeadlessGraphVueProps,
|
|
@@ -19641,7 +19901,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
19641
19901
|
HelixHeadlessIconButtonVueProps,
|
|
19642
19902
|
HelixHeadlessIconButtonVueEvents
|
|
19643
19903
|
>;
|
|
19644
|
-
/** The icons are Phosphor, drawn on a 256 box at stroke-width 16. Each glyph renders its full inner markup, because most icons are several elements, each with its own stroke and fill. The markup is generated at build time from SVG files in this repository and never comes from user input, so rendering it with 'unsafeSVG' is safe. The '<svg>' carries 'fill="currentColor"'. The generator keeps only the inner markup, and Phosphor sets its fill on the root tag that the generator discards. Without it, the 65 solid glyphs fall back to black and disappear on a dark background. Shapes that set their own 'fill' or 'stroke' are unaffected. **A name is looked up in a registry.** The family's entry registers
|
|
19904
|
+
/** The icons are Phosphor, drawn on a 256 box at stroke-width 16. Each glyph renders its full inner markup, because most icons are several elements, each with its own stroke and fill. The markup is generated at build time from SVG files in this repository and never comes from user input, so rendering it with 'unsafeSVG' is safe. The '<svg>' carries 'fill="currentColor"'. The generator keeps only the inner markup, and Phosphor sets its fill on the root tag that the generator discards. Without it, the 65 solid glyphs fall back to black and disappear on a dark background. Shapes that set their own 'fill' or 'stroke' are unaffected. **A name is looked up in a registry.** The family's entry registers the whole set, so any name in it draws, and 'icon/all' registers the same set. The element's own entry, '@fusion.dev/helix-headless/icon/root', registers none: a page that imports it and calls 'registerIcons' with the glyphs it names ships those and no others. 'registerIconLibrary' resolves names under a prefix of your own, such as 'lucide:camera', at once or later, and the element fires 'load' when a glyph that came later is drawn. A glyph registered after the element rendered is drawn then. **Or point 'src' at an SVG file**, such as 'src="/icons/rocket.svg"', and the element fetches it and draws its shapes in 'currentColor' where the file does not color them. A file is fetched once a page, however many icons name it, and 'load' fires when it is drawn. Scripts, event handlers and 'javascript:' links in the file are taken out before it is drawn. A server fetches nothing, so a served icon with a 'src' is drawn once the script runs. A name with no match, or a 'src' that is no SVG, renders nothing, and the element fires 'error', so a typo in a name can be heard. It waits until the page has loaded and painted first, so a library a later module registers is not taken for a typo. An icon is decorative by default and hidden from assistive technology. Set 'label' only when the icon is the only carrier of meaning, such as in a button with no text. An 'aria-label' on the element works too: the element is then an image with that name. **A decorative icon that is all a control holds is reported.** In a development build, a button or a link whose only content is an icon with no 'label', and which has no name of its own, warns 'missing-name' once, through the runtime channel every Helix warning uses. */
|
|
19645
19905
|
"helix-headless-icon": DefineCustomElement<
|
|
19646
19906
|
HelixHeadlessIcon,
|
|
19647
19907
|
HelixHeadlessIconVueProps,
|
|
@@ -19659,6 +19919,12 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
19659
19919
|
HelixHeadlessInputVueProps,
|
|
19660
19920
|
HelixHeadlessInputVueEvents
|
|
19661
19921
|
>;
|
|
19922
|
+
/** The same strip as 'Heatmap', seen from above at an angle. Each reading is a prism: its top face takes the cell's tone, and its height repeats the value, measured from zero against the highest reading in the table. 'rows="7"' makes a contribution graph, with each week a column running down to the right. **The height says what the tone says.** Read the exact value from the tooltip or the table, and compare readings by tone. A tall reading at the front can hide a short one behind it, so the newest column stands at the front, where nothing covers it. **Everything else is 'Heatmap'.** The table named by 'for', the tones and thresholds, the keys, the tooltip, the overview, 'selection-mode', and the events all work as they do there. The class extends the headless heatmap, and its own entry point carries the drawing, so a page using only 'Heatmap' loads none of it. **'flat' lays every prism down** at no height, which leaves the tones on a plane at the same angle. **'gap' and 'min-cell' set the smallest cell.** The drawing scales as a whole, so a wider box draws larger cells and the gap grows with them. A box too narrow for every column at 'min-cell' draws the newest that fit. **The drawing is SVG and holds still.** It scales with its box through its 'viewBox', needs no WebGL, and has no motion to pause. **Keyboard.** The keys are 'Heatmap''s. Down moves to the next reading in a column, drawn down to the left, and Right to the same reading in the next column, drawn down to the right. | Key | What it does | |---|---| | Tab | Moves focus to the strip and shows the first cell. | | Down, Up | Moves to the next or the previous cell. | | Right, Left | Moves a column on or back, a week with 'rows="7"'. On a right-to-left page, Left moves on. | | Home, End | Moves to the first or the last cell. | | Page Down, Page Up | Moves a month on or back where the rows carry dates, and four columns otherwise. | | Enter, Space | Presses the cell, which sends 'helix-reading-press', and selects it or lets it go under 'selection-mode'. | | Shift with an arrow, Home, End, Page Up or Page Down | Selects every cell from the last one pressed to where the key went, under 'selection-mode="multiple"'. | | Escape | Puts the cell's tooltip away. | */
|
|
19923
|
+
"helix-headless-isometric-heatmap": DefineCustomElement<
|
|
19924
|
+
HelixHeadlessIsometricHeatmap,
|
|
19925
|
+
HelixHeadlessIsometricHeatmapVueProps,
|
|
19926
|
+
HelixHeadlessIsometricHeatmapVueEvents
|
|
19927
|
+
>;
|
|
19662
19928
|
/** Renders a '<kbd>' element. Each element holds one key, except when you use 'keys'. For a sequence or a chord, write one element per key and put the separator between them as text, such as "then" or "plus". 'keys' renders the right glyphs for the platform. Given 'mod', it renders '⌘K' on Apple devices and 'Ctrl+K' everywhere else. A '⌘K' typed into a template is wrong for anyone on Windows. The element binds the shortcut only when 'within' is set. By default it draws the key and listens for nothing. **'for' names the control the shortcut works**, and the key writes its chord onto that control's 'aria-keyshortcuts', in the platform's words ('Meta+K' on an Apple keyboard, 'Control+K' elsewhere), so a screen reader announces the shortcut with the control. A chord the page wrote there itself is left alone, and the key takes back only what it added. A chord is drawn with the platform's modifiers first, in its order, so one 'keys' value is right everywhere: 'mod+shift+p' is '⇧⌘P' on an Apple keyboard and 'Ctrl+Shift+P' elsewhere. Where it is drawn in glyphs, it is read in words, such as 'Shift Command P'. 'caps' draws a chord as a key per key: each is a 'key' part and the '+' between two a 'separator' part, so a sheet can draw a cap for each. 'key-labels' renames any key, on every platform, such as 'key-labels='{"mod":"Command"}''. On an Apple keyboard a word joins the next key with a hyphen, as in 'Command-K'. **'activate' makes the shortcut work the control 'for' names**, with no script: 'activate="focus"' moves focus to it, as '/' does to a search field, and 'activate="click"' presses it. It acts once 'helix-shortcut' has gone out and no listener canceled it, and only where 'within' listens. */
|
|
19663
19929
|
"helix-headless-kbd": DefineCustomElement<
|
|
19664
19930
|
HelixHeadlessKbd,
|
package/types/words.d.ts
CHANGED
|
@@ -1911,6 +1911,75 @@ declare module '@fusion.dev/helix-core' {
|
|
|
1911
1911
|
*/
|
|
1912
1912
|
revealLabel: Message
|
|
1913
1913
|
}
|
|
1914
|
+
'helix-isometric-heatmap': {
|
|
1915
|
+
/**
|
|
1916
|
+
* The name the `overview` gives the busiest reading, `{busiestLabel}` in
|
|
1917
|
+
* `overview-label`.
|
|
1918
|
+
*
|
|
1919
|
+
* English: `Busiest`
|
|
1920
|
+
*/
|
|
1921
|
+
busiestLabel: Message
|
|
1922
|
+
/**
|
|
1923
|
+
* The words shown in place of the drawing when the table has no readings,
|
|
1924
|
+
* and the fallback of the `empty` slot.
|
|
1925
|
+
*
|
|
1926
|
+
* English: `No readings`
|
|
1927
|
+
*/
|
|
1928
|
+
emptyText: Message
|
|
1929
|
+
/**
|
|
1930
|
+
* The words shown in place of the drawing while `loading` is set and
|
|
1931
|
+
* there are no readings yet, and the fallback of the `loading` slot.
|
|
1932
|
+
*
|
|
1933
|
+
* English: `Loading readings`
|
|
1934
|
+
*/
|
|
1935
|
+
loadingText: Message
|
|
1936
|
+
/**
|
|
1937
|
+
* The `overview`'s sentence. `{busiestLabel}` and `{totalLabel}` are
|
|
1938
|
+
* `busiest-label` and `total-label`, `{busiest}` the busiest reading's name
|
|
1939
|
+
* and its reading as the table writes it, and `{total}` the total of the
|
|
1940
|
+
* readings drawn, written in the locale.
|
|
1941
|
+
*
|
|
1942
|
+
* English: `{busiestLabel}: {busiest}; {totalLabel} {total}.`
|
|
1943
|
+
*/
|
|
1944
|
+
overviewLabel: Message
|
|
1945
|
+
/**
|
|
1946
|
+
* Where a reading the keys moved to stands among the readings, said after
|
|
1947
|
+
* it. `{position}` and `{count}` are replaced with the numbers, written in
|
|
1948
|
+
* `locale`.
|
|
1949
|
+
*
|
|
1950
|
+
* English: `{position} of {count}`
|
|
1951
|
+
*/
|
|
1952
|
+
positionLabel: Message
|
|
1953
|
+
/**
|
|
1954
|
+
* What the readout added for a selected cell, under `selection-mode`.
|
|
1955
|
+
*
|
|
1956
|
+
* English: `selected`
|
|
1957
|
+
*/
|
|
1958
|
+
selectedLabel: Message
|
|
1959
|
+
/**
|
|
1960
|
+
* What the `selection` part says after the selection changes. `{count}` is
|
|
1961
|
+
* how many cells are selected, written in the locale, and a language that
|
|
1962
|
+
* needs plural forms writes them: `{count, plural, one {# wybrany} few
|
|
1963
|
+
* {# wybrane} many {# wybranych} other {# wybranego}}`.
|
|
1964
|
+
*
|
|
1965
|
+
* English: `{count, plural, one {# selected} other {# selected}}`
|
|
1966
|
+
*/
|
|
1967
|
+
selectionLabel: Message
|
|
1968
|
+
/**
|
|
1969
|
+
* The strip's name where the chart has none: no `aria-label`, `label`, or
|
|
1970
|
+
* table caption.
|
|
1971
|
+
*
|
|
1972
|
+
* English: `Heatmap`
|
|
1973
|
+
*/
|
|
1974
|
+
stripLabel: Message
|
|
1975
|
+
/**
|
|
1976
|
+
* The name the `overview` gives the total of the readings drawn,
|
|
1977
|
+
* `{totalLabel}` in `overview-label`.
|
|
1978
|
+
*
|
|
1979
|
+
* English: `Total`
|
|
1980
|
+
*/
|
|
1981
|
+
totalLabel: Message
|
|
1982
|
+
}
|
|
1914
1983
|
'helix-lightbox': {
|
|
1915
1984
|
/**
|
|
1916
1985
|
* The close control's accessible name. Translate it with the rest of your
|