@fusion.dev/helix-headless 0.54.0 → 0.56.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 +53 -53
- package/dist/bar-chart/root/bar-chart-root.d.ts +15 -12
- package/dist/bar-chart/root/bar-chart-root.js +8 -8
- package/dist/data-table/root/data-table-root.d.ts +2 -2
- package/dist/data-table/root/data-table-root.js +1 -1
- package/dist/megamenu/root/megamenu-root.d.ts +16 -9
- package/dist/megamenu/root/megamenu-root.js +7 -7
- package/dist/table/column/table-column.d.ts +32 -24
- package/dist/table/column/table-column.js +4 -4
- package/dist/table/root/table-root.d.ts +1 -1
- package/dist/table/root/table-root.js +1 -1
- package/package.json +5 -5
- package/types/jsx.d.ts +272 -144
- package/types/vue.d.ts +84 -38
package/types/vue.d.ts
CHANGED
|
@@ -536,19 +536,12 @@ is showing a count must not lose the count for being handed one. */
|
|
|
536
536
|
export type HelixHeadlessBadgeVueEvents = {};
|
|
537
537
|
|
|
538
538
|
export type HelixHeadlessBarChartVueProps = {
|
|
539
|
-
/** Whether the categories run down the side rather than along the bottom.
|
|
540
|
-
|
|
541
|
-
Absent is columns. `horizontal` is the one to reach for when the category
|
|
542
|
-
names are words rather than dates: a row of long names either overlaps or
|
|
543
|
-
turns on its side, and neither is as readable as putting them down the left
|
|
544
|
-
where they read normally. */
|
|
545
|
-
direction?: (HelixHeadlessBarChart["direction"]) | undefined;
|
|
546
539
|
/** Which rules are drawn across the plot, if any.
|
|
547
540
|
|
|
548
541
|
Absent draws none. `value` rules the axis the columns are *measured* on,
|
|
549
542
|
`category` rules the axis they are *arranged* on with one through each
|
|
550
543
|
group, and `both` draws both. Which of those is horizontal turns with
|
|
551
|
-
`
|
|
544
|
+
`orientation`, because a rule belongs to an axis and not to a screen edge.
|
|
552
545
|
|
|
553
546
|
**A bare `gridlines` means `value`**, and so does anything unrecognized: an
|
|
554
547
|
unrecognized value that draws nothing is indistinguishable from the
|
|
@@ -584,6 +577,16 @@ A line among columns measures from zero, because the columns do and they
|
|
|
584
577
|
share the axis. So does a line on the second scale, which is that scale's
|
|
585
578
|
own rule rather than this one's. */
|
|
586
579
|
lines?: (HelixHeadlessBarChart["lines"]) | undefined;
|
|
580
|
+
/** Whether the categories run down the side rather than along the bottom.
|
|
581
|
+
|
|
582
|
+
Absent is columns. `horizontal` is the one to reach for when the category
|
|
583
|
+
names are words rather than dates: a row of long names either overlaps or
|
|
584
|
+
turns on its side, and neither is as readable as putting them down the left
|
|
585
|
+
where they read normally.
|
|
586
|
+
|
|
587
|
+
`orientation` and not `orientation`, which `Trend` uses in the same group for
|
|
588
|
+
which way a number moved. */
|
|
589
|
+
orientation?: (HelixHeadlessBarChart["orientation"]) | undefined;
|
|
587
590
|
/** Which series are measured against a scale of their own, by name.
|
|
588
591
|
|
|
589
592
|
Separated and matched the way `lines` is, against the column headings the
|
|
@@ -4694,7 +4697,7 @@ which React reports as a mismatch and answers by rebuilding the subtree. The
|
|
|
4694
4697
|
narrow exception the server specs describe covers a mirror that can only
|
|
4695
4698
|
become true long after hydration, and a viewport measured before the first
|
|
4696
4699
|
paint is the opposite case. See `MixinControllerOpen` on `open`. */
|
|
4697
|
-
"
|
|
4700
|
+
"band-below"?: (HelixHeadlessMegamenu["bandBelow"] | `${number}`) | undefined;
|
|
4698
4701
|
/** The width, in pixels, under which a card becomes a band. Zero never does.
|
|
4699
4702
|
|
|
4700
4703
|
A card is a panel hung off one word, and there is no room to hang anything
|
|
@@ -4718,7 +4721,7 @@ which React reports as a mismatch and answers by rebuilding the subtree. The
|
|
|
4718
4721
|
narrow exception the server specs describe covers a mirror that can only
|
|
4719
4722
|
become true long after hydration, and a viewport measured before the first
|
|
4720
4723
|
paint is the opposite case. See `MixinControllerOpen` on `open`. */
|
|
4721
|
-
|
|
4724
|
+
bandBelow?: (HelixHeadlessMegamenu["bandBelow"]) | undefined;
|
|
4722
4725
|
/** The section's name, which names the default trigger and the panel. */
|
|
4723
4726
|
label?: (HelixHeadlessMegamenu["label"]) | undefined;
|
|
4724
4727
|
/** Whether hovering the trigger opens the panel, or only a press does.
|
|
@@ -4738,16 +4741,23 @@ heavy enough that opening it on the way past is rude. */
|
|
|
4738
4741
|
/** Whether the panel is a card under the trigger or a band across the page.
|
|
4739
4742
|
|
|
4740
4743
|
The resting one is the card, hanging off the trigger and as wide as it
|
|
4741
|
-
needs to be. `
|
|
4744
|
+
needs to be. `band` is the other shape navigations use: a run from edge to
|
|
4742
4745
|
edge under the header, with its contents held to the page's own measure, so
|
|
4743
4746
|
a set of destinations too wide to sit under one word gets the whole width
|
|
4744
4747
|
to lay out in.
|
|
4745
4748
|
|
|
4746
|
-
|
|
4747
|
-
|
|
4748
|
-
|
|
4749
|
-
|
|
4750
|
-
|
|
4749
|
+
**A band and not a width, which is why the word is not `full`.** It changes
|
|
4750
|
+
where the panel goes as well as how wide it is, which is why this tier
|
|
4751
|
+
knows about it at all: a band spans the viewport, so there is nothing to
|
|
4752
|
+
measure it against and nothing to flip or shift to, and the placing pass is
|
|
4753
|
+
told not to run. Everything else the popover gives, the top layer and the
|
|
4754
|
+
dismissal, is exactly what such a band needs. `full` is the registry's word
|
|
4755
|
+
for a width, and `Button` and `Dialog` are the two families answering that
|
|
4756
|
+
question; borrowing it here would put a third meaning on it.
|
|
4757
|
+
|
|
4758
|
+
`variant` and not an axis, for the reason the registry gives: a card under
|
|
4759
|
+
a word and a band under a header are two arrangements this family has, and
|
|
4760
|
+
no other family is being asked the same question. */
|
|
4751
4761
|
variant?: (HelixHeadlessMegamenu["variant"]) | undefined;
|
|
4752
4762
|
/** Whether the element is open.
|
|
4753
4763
|
|
|
@@ -7190,26 +7200,6 @@ export type HelixHeadlessTableColumnHelixBeforeResizeElementEvent =
|
|
|
7190
7200
|
HelixHeadlessTableColumnElementEvent<HelixBeforeResizeEvent>;
|
|
7191
7201
|
|
|
7192
7202
|
export type HelixHeadlessTableColumnVueProps = {
|
|
7193
|
-
/** Which edge the values line up against.
|
|
7194
|
-
|
|
7195
|
-
`end` is what a column of numbers wants, so digits of the same magnitude
|
|
7196
|
-
sit above each other. Left unset the cell inherits the table's own
|
|
7197
|
-
alignment, which is `start` for text in either writing direction.
|
|
7198
|
-
`DataTable` aligns the cells it draws. A `Table`'s cells are markup the
|
|
7199
|
-
consumer wrote, so the table writes nothing onto them: it publishes the
|
|
7200
|
-
edge to each cell under this column as `--table-cell-align`, which
|
|
7201
|
-
`@fusion.dev/helix` reads. The heading is this element's own, and
|
|
7202
|
-
`@fusion.dev/helix` sets it to the same edge in either table. `end` is the
|
|
7203
|
-
inline end, so in a right-to-left table it is the left.
|
|
7204
|
-
|
|
7205
|
-
**Reflected, because the heading is drawn by a stylesheet and has no other
|
|
7206
|
-
way to learn it.** Set as a property, which is how React sets it, an
|
|
7207
|
-
unreflected `align` left no attribute to select on, so the heading stayed at
|
|
7208
|
-
the start over a column of digits set to the end. It is the author's
|
|
7209
|
-
declaration and nothing moves it afterwards, so an attribute cannot come to
|
|
7210
|
-
disagree with the element, which is the reason `open` records a custom
|
|
7211
|
-
state instead. No default, so an unset column writes nothing onto its host. */
|
|
7212
|
-
align?: (HelixHeadlessTableColumn["align"]) | undefined;
|
|
7213
7203
|
/** The key this column reads out of a row.
|
|
7214
7204
|
|
|
7215
7205
|
Dot paths resolve, so `field="owner.name"` reads a nested value: a result
|
|
@@ -7244,6 +7234,62 @@ how React sets it, an unreflected `sortable` left no attribute to match.
|
|
|
7244
7234
|
`false` reflects as no attribute at all, so an unset column writes nothing
|
|
7245
7235
|
onto its host. */
|
|
7246
7236
|
sortable?: (HelixHeadlessTableColumn["sortable"]) | undefined;
|
|
7237
|
+
/** Which edge the values line up against.
|
|
7238
|
+
|
|
7239
|
+
**Text alignment, and the name says so.** `Flex` and `Grid` ask the CSS
|
|
7240
|
+
box-alignment question, where a thing sits in a container, and they are
|
|
7241
|
+
named for the properties they mirror; this is `text-align` down a column of
|
|
7242
|
+
values, and `Dialog` answers the same question under the same name. One
|
|
7243
|
+
word for both questions is how a consumer who learned it on a layout writes
|
|
7244
|
+
it here and gets no error, a value a component does not have leaving the
|
|
7245
|
+
default in place and looking deliberate.
|
|
7246
|
+
|
|
7247
|
+
`end` is what a column of numbers wants, so digits of the same magnitude
|
|
7248
|
+
sit above each other. Left unset the cell inherits the table's own
|
|
7249
|
+
alignment, which is `start` for text in either writing direction.
|
|
7250
|
+
`DataTable` aligns the cells it draws. A `Table`'s cells are markup the
|
|
7251
|
+
consumer wrote, so the table writes nothing onto them: it publishes the
|
|
7252
|
+
edge to each cell under this column as `--table-cell-align`, which
|
|
7253
|
+
`@fusion.dev/helix` reads. The heading is this element's own, and
|
|
7254
|
+
`@fusion.dev/helix` sets it to the same edge in either table. `end` is the
|
|
7255
|
+
inline end, so in a right-to-left table it is the left.
|
|
7256
|
+
|
|
7257
|
+
**Reflected, because the heading is drawn by a stylesheet and has no other
|
|
7258
|
+
way to learn it.** Set as a property, which is how React sets it, an
|
|
7259
|
+
unreflected edge left no attribute to select on, so the heading stayed at
|
|
7260
|
+
the start over a column of digits set to the end. It is the author's
|
|
7261
|
+
declaration and nothing moves it afterwards, so an attribute cannot come to
|
|
7262
|
+
disagree with the element, which is the reason `open` records a custom
|
|
7263
|
+
state instead. No default, so an unset column writes nothing onto its host. */
|
|
7264
|
+
"text-align"?: (HelixHeadlessTableColumn["textAlign"]) | undefined;
|
|
7265
|
+
/** Which edge the values line up against.
|
|
7266
|
+
|
|
7267
|
+
**Text alignment, and the name says so.** `Flex` and `Grid` ask the CSS
|
|
7268
|
+
box-alignment question, where a thing sits in a container, and they are
|
|
7269
|
+
named for the properties they mirror; this is `text-align` down a column of
|
|
7270
|
+
values, and `Dialog` answers the same question under the same name. One
|
|
7271
|
+
word for both questions is how a consumer who learned it on a layout writes
|
|
7272
|
+
it here and gets no error, a value a component does not have leaving the
|
|
7273
|
+
default in place and looking deliberate.
|
|
7274
|
+
|
|
7275
|
+
`end` is what a column of numbers wants, so digits of the same magnitude
|
|
7276
|
+
sit above each other. Left unset the cell inherits the table's own
|
|
7277
|
+
alignment, which is `start` for text in either writing direction.
|
|
7278
|
+
`DataTable` aligns the cells it draws. A `Table`'s cells are markup the
|
|
7279
|
+
consumer wrote, so the table writes nothing onto them: it publishes the
|
|
7280
|
+
edge to each cell under this column as `--table-cell-align`, which
|
|
7281
|
+
`@fusion.dev/helix` reads. The heading is this element's own, and
|
|
7282
|
+
`@fusion.dev/helix` sets it to the same edge in either table. `end` is the
|
|
7283
|
+
inline end, so in a right-to-left table it is the left.
|
|
7284
|
+
|
|
7285
|
+
**Reflected, because the heading is drawn by a stylesheet and has no other
|
|
7286
|
+
way to learn it.** Set as a property, which is how React sets it, an
|
|
7287
|
+
unreflected edge left no attribute to select on, so the heading stayed at
|
|
7288
|
+
the start over a column of digits set to the end. It is the author's
|
|
7289
|
+
declaration and nothing moves it afterwards, so an attribute cannot come to
|
|
7290
|
+
disagree with the element, which is the reason `open` records a custom
|
|
7291
|
+
state instead. No default, so an unset column writes nothing onto its host. */
|
|
7292
|
+
textAlign?: (HelixHeadlessTableColumn["textAlign"]) | undefined;
|
|
7247
7293
|
/** The track this column takes, as CSS.
|
|
7248
7294
|
|
|
7249
7295
|
A single track value, so anything valid in `grid-template-columns` works:
|
|
@@ -9435,7 +9481,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
9435
9481
|
HelixHeadlessCopyButtonVueProps,
|
|
9436
9482
|
HelixHeadlessCopyButtonVueEvents
|
|
9437
9483
|
>;
|
|
9438
|
-
/** **The schema is markup and the data is a property.** Columns are declared as 'TableColumn' children, because a schema is small and something a reader should see in the HTML; rows are handed over as an array, because a table that draws ten thousand elements cannot window them. '''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" align="end" sortable .cell=${bytes}>Size</helix-headless-table-column> </helix-headless-data-table> ''' 'Table' takes rows as markup and is the right component for a table of twelve things a person wrote out. **Sort and filter apply to the whole set, never the page.** Sorting the drawn window is correct on the first screen and wrong on every other one. **The cell values do not server-render.** The headings do, and the row elements do, but reading a cell needs the columns, and the columns are markup children Lit SSR does not hand this element. So a crawler sees a table of the right shape with nothing in it. That is the cost of the first paragraph: use 'Table' where the served HTML has to carry the values. **'selectable' adds a column of checkboxes, keyed on 'row-key'.** A row is selected by its identity rather than its position, so a selection survives a sort, a filter and a page. 'selected' is the chosen keys, comma separated, the shape Listbox uses for a multiple choice, and like 'sort' writing it applies while 'default-selected' is what the markup declared. The box in the heading selects every row in the result, across pages, and shows a dash while only some are chosen. Choosing one of many, rather than several, is opening a row, and that is a link or a button in a cell rather than a selection. **A reader can size and order 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 order lands in 'order' as fields, and the consumer's own markup is never rewritten: the table assigns the headings to its header in that order instead. **'csv()' hands back the result as text**: every row the filter lets through, in the order on screen, in the columns on screen. Saving it is the page's business, the same as any other file. **There is no 'columns' attribute here, and Table has one.** The difference is what a column is in each: here it is the schema, so a table without one has nothing to read a row with, and every column is a place to write a 'width'. A Table holds cells a consumer wrote and can be written with no column at all, so its 'columns' is where such a table is sized from. Written on this element the attribute is inert, which is the trap worth knowing when moving between the two. */
|
|
9484
|
+
/** **The schema is markup and the data is a property.** Columns are declared as 'TableColumn' children, because a schema is small and something a reader should see in the HTML; rows are handed over as an array, because a table that draws ten thousand elements cannot window them. '''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> ''' 'Table' takes rows as markup and is the right component for a table of twelve things a person wrote out. **Sort and filter apply to the whole set, never the page.** Sorting the drawn window is correct on the first screen and wrong on every other one. **The cell values do not server-render.** The headings do, and the row elements do, but reading a cell needs the columns, and the columns are markup children Lit SSR does not hand this element. So a crawler sees a table of the right shape with nothing in it. That is the cost of the first paragraph: use 'Table' where the served HTML has to carry the values. **'selectable' adds a column of checkboxes, keyed on 'row-key'.** A row is selected by its identity rather than its position, so a selection survives a sort, a filter and a page. 'selected' is the chosen keys, comma separated, the shape Listbox uses for a multiple choice, and like 'sort' writing it applies while 'default-selected' is what the markup declared. The box in the heading selects every row in the result, across pages, and shows a dash while only some are chosen. Choosing one of many, rather than several, is opening a row, and that is a link or a button in a cell rather than a selection. **A reader can size and order 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 order lands in 'order' as fields, and the consumer's own markup is never rewritten: the table assigns the headings to its header in that order instead. **'csv()' hands back the result as text**: every row the filter lets through, in the order on screen, in the columns on screen. Saving it is the page's business, the same as any other file. **There is no 'columns' attribute here, and Table has one.** The difference is what a column is in each: here it is the schema, so a table without one has nothing to read a row with, and every column is a place to write a 'width'. A Table holds cells a consumer wrote and can be written with no column at all, so its 'columns' is where such a table is sized from. Written on this element the attribute is inert, which is the trap worth knowing when moving between the two. */
|
|
9439
9485
|
"helix-headless-data-table": DefineCustomElement<
|
|
9440
9486
|
HelixHeadlessDataTable,
|
|
9441
9487
|
HelixHeadlessDataTableVueProps,
|
|
@@ -9861,7 +9907,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
9861
9907
|
HelixHeadlessTableCellVueProps,
|
|
9862
9908
|
HelixHeadlessTableCellVueEvents
|
|
9863
9909
|
>;
|
|
9864
|
-
/** **The column is the source of both its heading and its track.** Add one and the table has another track; remove one and it does not. That is what ties the two together, and a table-level track list on its own does not: a list that is accidentally the headings is invalid CSS a grid ignores in silence, drawing the whole table as one column. 'Table''s 'columns' is dealt out a track at a time against the columns declared under it, so a heading among the widths costs its own column a width and no more, and a list longer or shorter than the columns is trimmed or shared rather than being a second count of them. A column's own 'width' wins over the track in its place. **It is also where every per-column fact goes**, which is the reason 'DataTable' needs no column config object. 'field' names the key the cell reads, 'sortable' says a reader may reorder by it, 'align' says which edge the values line up against, and 'cell' takes a function for anything the field alone cannot express. The schema is markup and the data is a property: a schema is small, declarative, and something a reader should be able to see in the HTML, and data is large and windowed. **The same element serves both tables**, the markup one and the data one. It is identified by a flag rather than by 'instanceof', so a 'TableColumn' works inside either without the two roots sharing anything else. **It generates no box of its own**, the same as a row: the heading is a grid item of the table, so it lines up with the cells under it rather than sitting in a wrapper that has to be kept the same width. **'hidden' takes the column out of the grid**, its heading and its track both, so the columns after it keep their own widths and every row keeps its cells under their headings. 'hidden="until-found"' keeps its track, the heading being left drawn, as every Helix element leaves one with that value. 'DataTable' draws the cells, so it leaves out the ones under a hidden column. A 'Table''s cells are markup the consumer wrote, so hide them with the column, as removing a column means removing its cells: a row with a cell more than the table has tracks wraps into the next. **A heading that does something holds a control that does it.** The host is the column header, and a header is not focusable, so a sortable heading is a '<button>' inside it: the pattern for a sortable table, and the only way a reader on a keyboard reaches the sort at all. A column a reader may resize carries a 'separator' on its end edge, moved by dragging it or with the arrow keys, and a column in a table that lets a reader reorder its columns carries a grip the table moves. */
|
|
9910
|
+
/** **The column is the source of both its heading and its track.** Add one and the table has another track; remove one and it does not. That is what ties the two together, and a table-level track list on its own does not: a list that is accidentally the headings is invalid CSS a grid ignores in silence, drawing the whole table as one column. 'Table''s 'columns' is dealt out a track at a time against the columns declared under it, so a heading among the widths costs its own column a width and no more, and a list longer or shorter than the columns is trimmed or shared rather than being a second count of them. A column's own 'width' wins over the track in its place. **It is also where every per-column fact goes**, which is the reason 'DataTable' needs no column config object. 'field' names the key the cell reads, 'sortable' says a reader may reorder by it, 'text-align' says which edge the values line up against, and 'cell' takes a function for anything the field alone cannot express. The schema is markup and the data is a property: a schema is small, declarative, and something a reader should be able to see in the HTML, and data is large and windowed. **The same element serves both tables**, the markup one and the data one. It is identified by a flag rather than by 'instanceof', so a 'TableColumn' works inside either without the two roots sharing anything else. **It generates no box of its own**, the same as a row: the heading is a grid item of the table, so it lines up with the cells under it rather than sitting in a wrapper that has to be kept the same width. **'hidden' takes the column out of the grid**, its heading and its track both, so the columns after it keep their own widths and every row keeps its cells under their headings. 'hidden="until-found"' keeps its track, the heading being left drawn, as every Helix element leaves one with that value. 'DataTable' draws the cells, so it leaves out the ones under a hidden column. A 'Table''s cells are markup the consumer wrote, so hide them with the column, as removing a column means removing its cells: a row with a cell more than the table has tracks wraps into the next. **A heading that does something holds a control that does it.** The host is the column header, and a header is not focusable, so a sortable heading is a '<button>' inside it: the pattern for a sortable table, and the only way a reader on a keyboard reaches the sort at all. A column a reader may resize carries a 'separator' on its end edge, moved by dragging it or with the arrow keys, and a column in a table that lets a reader reorder its columns carries a grip the table moves. */
|
|
9865
9911
|
"helix-headless-table-column": DefineCustomElement<
|
|
9866
9912
|
HelixHeadlessTableColumn,
|
|
9867
9913
|
HelixHeadlessTableColumnVueProps,
|