@fusion.dev/helix 0.12.3 → 0.13.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/types/vue.d.ts CHANGED
@@ -39,6 +39,7 @@ import type {
39
39
  HelixDrilldown,
40
40
  HelixEmpty,
41
41
  HelixFileInput,
42
+ HelixFilterInput,
42
43
  HelixFlex,
43
44
  HelixFormatDate,
44
45
  HelixGrid,
@@ -3554,6 +3555,91 @@ export type HelixFileInputVueEvents = {
3554
3555
  "helix-before-change": HelixFileInputHelixBeforeChangeElementEvent;
3555
3556
  };
3556
3557
 
3558
+ /** `HelixFilterInput` component event */
3559
+ export type HelixFilterInputElementEvent<E = Event> = TypedEvent<
3560
+ HelixFilterInput,
3561
+ E
3562
+ >;
3563
+ /** `helix-before-change` event type */
3564
+ export type HelixFilterInputHelixBeforeChangeElementEvent =
3565
+ HelixFilterInputElementEvent<HelixBeforeChangeEvent>;
3566
+
3567
+ export type HelixFilterInputVueProps = {
3568
+ /** How many tokens to show before the rest become a count. */
3569
+ "max-tags"?: (HelixFilterInput["maxTags"]) | undefined;
3570
+ /** How many tokens to show before the rest become a count. */
3571
+ maxTags?: (HelixFilterInput["maxTags"]) | undefined;
3572
+ /** The value the markup declared, which is where a reset returns to. */
3573
+ "default-value"?: (HelixFilterInput["defaultValue"]) | undefined;
3574
+ /** The value the markup declared, which is where a reset returns to. */
3575
+ defaultValue?: (HelixFilterInput["defaultValue"]) | undefined;
3576
+ /** What the control holds now, and what its form submits.
3577
+
3578
+ One property, not two, so `input.value` answers the question anyone
3579
+ asking it meant. Writing always applies; `<helix-input value="x">` is the
3580
+ same statement in markup, and `default-value` is how markup seeds a value
3581
+ a reset should return to. */
3582
+ value?: (HelixFilterInput["value"]) | undefined;
3583
+ /** What is wrong, in the reader's words rather than the browser's. */
3584
+ feedback?: (HelixFilterInput["feedback"]) | undefined;
3585
+ /** Help under the control, shown while there is nothing wrong. */
3586
+ hint?: (HelixFilterInput["hint"]) | undefined;
3587
+ /** The accessible name, and the fallback for the `label` slot. */
3588
+ label?: (HelixFilterInput["label"]) | undefined;
3589
+ /** Whether the form refuses to submit without it. */
3590
+ required?: (HelixFilterInput["required"]) | undefined;
3591
+ /** Whether the field offers a button that empties it.
3592
+
3593
+ The text only. The tokens are the consumer's markup and this element is not
3594
+ entitled to take them out of the document, which is the same reason
3595
+ `hideOverflow` marks the ones over the cap `hidden` rather than removing
3596
+ them. */
3597
+ clearable?: (HelixFilterInput["clearable"]) | undefined;
3598
+ /** What the clear button is called, since an icon has no name of its own. */
3599
+ "clear-label"?: (HelixFilterInput["clearLabel"]) | undefined;
3600
+ /** What the clear button is called, since an icon has no name of its own. */
3601
+ clearLabel?: (HelixFilterInput["clearLabel"]) | undefined;
3602
+ /** Shown while the field is empty.
3603
+
3604
+ Not a label: it goes when typing starts. */
3605
+ placeholder?: (HelixFilterInput["placeholder"]) | undefined;
3606
+ /** Whether the control is non-interactive.
3607
+
3608
+ Reflected, because the styled tier selects on it, and mirrored to
3609
+ `aria-disabled` rather than removing the element from the accessibility
3610
+ tree, so a screen reader can still announce that the control exists.
3611
+
3612
+ The mirror itself is in `willUpdate` below, here rather than in each
3613
+ control, because here is where `disabled` is. */
3614
+ disabled?: (HelixFilterInput["disabled"]) | undefined;
3615
+ /** Name submitted with the form.
3616
+
3617
+ **Reflected, and it is the exception to "reflect only what CSS selects
3618
+ on".** The platform builds a form's entry list from the `name` *content
3619
+ attribute*, not from the property, so a control named through the property
3620
+ submitted under no name at all and was silently dropped. Measured: two
3621
+ inputs in one form, one named by attribute and one by property, and the
3622
+ form carried a single entry.
3623
+
3624
+ Safe for a React consumer, which is what the rule is protecting: React
3625
+ renders a custom element's props as attributes on the server, so the name
3626
+ is already in the markup being hydrated and reflecting it writes what is
3627
+ there. It is only a change to the markup when a consumer assigns it
3628
+ imperatively later, and nothing is hydrating by then.
3629
+
3630
+ Here rather than on each control. */
3631
+ name?: (HelixFilterInput["name"]) | undefined;
3632
+ };
3633
+
3634
+ export type HelixFilterInputVueEvents = {
3635
+ /** Announced once the text has moved. */
3636
+ input: HelixFilterInputElementEvent;
3637
+ /** Relayed from the input once the reader has finished. */
3638
+ change: HelixFilterInputElementEvent;
3639
+ /** Fired as the text changes, and cancelable. */
3640
+ "helix-before-change": HelixFilterInputHelixBeforeChangeElementEvent;
3641
+ };
3642
+
3557
3643
  export type HelixFlexVueProps = {
3558
3644
  /** Alignment across the direction. */
3559
3645
  align?: (HelixFlex["align"]) | undefined;
@@ -9556,6 +9642,12 @@ export type CustomCssProperties = {
9556
9642
  "--file-input-background-color"?: (string) | undefined;
9557
9643
  /** Padding inside the field. */
9558
9644
  "--file-input-padding"?: (string) | undefined;
9645
+ /** Fill behind the field. */
9646
+ "--filter-input-background-color"?: (string) | undefined;
9647
+ /** Smallest the text keeps as tokens fill the line, before it wraps to its own. */
9648
+ "--filter-input-control-size"?: (string) | undefined;
9649
+ /** Height of the field with nothing in it, which it grows from. */
9650
+ "--filter-input-size"?: (string) | undefined;
9559
9651
  /** An explicit track list, which wins over `min` and `columns`. For a layout of unequal tracks, which neither attribute can say. */
9560
9652
  "--grid-columns"?: (string) | undefined;
9561
9653
  /** How tall a cell is. A row of a tall thin cell is what a status page draws. */
@@ -10370,6 +10462,12 @@ export interface WcToolkitVueGlobalComponents {
10370
10462
  HelixFileInputVueProps,
10371
10463
  HelixFileInputVueEvents
10372
10464
  >;
10465
+ /** The frame is the field rather than the input, so the tokens sit inside the same box as the text and the focus ring is drawn once around the whole control. It grows down a line at a time as tokens are added, which is the arrangement Combobox takes when it is holding a selection. **The tokens are the consumer's own elements**, so the only thing said about them here is to keep their size and not run past the field. A 'Tag' slotted into 'tags' already looks like one; anything else looks like whatever it is. Height comes from the region, like every other control: 'data-density' on whatever holds it, not a 'size' here. */
10466
+ "helix-filter-input": DefineCustomElement<
10467
+ HelixFilterInput,
10468
+ HelixFilterInputVueProps,
10469
+ HelixFilterInputVueEvents
10470
+ >;
10373
10471
  /** The host is the flex container itself and the only child is a slot, so the element adds no box of its own: '<helix-flex>' costs exactly the '<div>' it replaces. There is no separate Stack. A stack is this with 'direction="column"', and a second element whose whole definition is one default of the first is a name to learn rather than a capability to gain. Gap takes a space token name rather than a length, so spacing stays on the scale. A layout that can say 'gap="13px"' is one that will. Presentation only, so there is no headless tier: the split exists to keep behavior separate from styling, and this is entirely styling. */
10374
10472
  "helix-flex": DefineCustomElement<
10375
10473
  HelixFlex,