@fusion.dev/helix 0.13.2 → 0.15.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 +806 -69
- package/dist/element-events.generated.js +8 -1
- package/dist/filter-input/root/filter-input-root.css.js +64 -0
- package/dist/filter-input/root/filter-input-root.d.ts +13 -0
- package/dist/filter-input/root/filter-input-root.js +1 -0
- package/dist/shared/tags/tags.css.js +20 -0
- package/package.json +6 -6
- package/types/jsx.d.ts +228 -4
- package/types/vue.d.ts +58 -1
package/custom-elements.json
CHANGED
|
@@ -19033,6 +19033,48 @@
|
|
|
19033
19033
|
"text": "toggleOpen() => boolean"
|
|
19034
19034
|
}
|
|
19035
19035
|
},
|
|
19036
|
+
{
|
|
19037
|
+
"kind": "field",
|
|
19038
|
+
"name": "collapseLabel",
|
|
19039
|
+
"type": {
|
|
19040
|
+
"text": "string"
|
|
19041
|
+
},
|
|
19042
|
+
"default": "'Show fewer'",
|
|
19043
|
+
"description": "What the control says once everything is showing.",
|
|
19044
|
+
"attribute": "collapse-label",
|
|
19045
|
+
"inheritedFrom": {
|
|
19046
|
+
"name": "MixinTokens",
|
|
19047
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
19048
|
+
}
|
|
19049
|
+
},
|
|
19050
|
+
{
|
|
19051
|
+
"kind": "field",
|
|
19052
|
+
"name": "expandable",
|
|
19053
|
+
"type": {
|
|
19054
|
+
"text": "boolean"
|
|
19055
|
+
},
|
|
19056
|
+
"default": "false",
|
|
19057
|
+
"description": "Whether the count is a control that shows the rest.",
|
|
19058
|
+
"attribute": "expandable",
|
|
19059
|
+
"inheritedFrom": {
|
|
19060
|
+
"name": "MixinTokens",
|
|
19061
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
19062
|
+
}
|
|
19063
|
+
},
|
|
19064
|
+
{
|
|
19065
|
+
"kind": "field",
|
|
19066
|
+
"name": "expandLabel",
|
|
19067
|
+
"type": {
|
|
19068
|
+
"text": "string"
|
|
19069
|
+
},
|
|
19070
|
+
"default": "'Show all'",
|
|
19071
|
+
"description": "What the collapsed count is called, since `+3` names nothing.",
|
|
19072
|
+
"attribute": "expand-label",
|
|
19073
|
+
"inheritedFrom": {
|
|
19074
|
+
"name": "MixinTokens",
|
|
19075
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
19076
|
+
}
|
|
19077
|
+
},
|
|
19036
19078
|
{
|
|
19037
19079
|
"kind": "field",
|
|
19038
19080
|
"name": "maxTags",
|
|
@@ -19047,6 +19089,44 @@
|
|
|
19047
19089
|
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
19048
19090
|
}
|
|
19049
19091
|
},
|
|
19092
|
+
{
|
|
19093
|
+
"kind": "field",
|
|
19094
|
+
"name": "expanded",
|
|
19095
|
+
"type": {
|
|
19096
|
+
"text": "boolean"
|
|
19097
|
+
},
|
|
19098
|
+
"privacy": "private",
|
|
19099
|
+
"default": "false",
|
|
19100
|
+
"description": "Whether the reader has asked for all of them.\n\nState and private, the way `Input`'s `revealed` is: it is a reader's\nmomentary choice about what is on their own screen, it must not survive\nanything, and a consumer who wants the field opened is asking for\n`max-tags=\"0\"` rather than for a second way to say it.",
|
|
19101
|
+
"inheritedFrom": {
|
|
19102
|
+
"name": "MixinTokens",
|
|
19103
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
19104
|
+
}
|
|
19105
|
+
},
|
|
19106
|
+
{
|
|
19107
|
+
"kind": "field",
|
|
19108
|
+
"name": "shownLimit",
|
|
19109
|
+
"type": {
|
|
19110
|
+
"text": "number"
|
|
19111
|
+
},
|
|
19112
|
+
"privacy": "protected",
|
|
19113
|
+
"readonly": true,
|
|
19114
|
+
"inheritedFrom": {
|
|
19115
|
+
"name": "MixinTokens",
|
|
19116
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
19117
|
+
}
|
|
19118
|
+
},
|
|
19119
|
+
{
|
|
19120
|
+
"kind": "field",
|
|
19121
|
+
"name": "toggleExpanded",
|
|
19122
|
+
"privacy": "private",
|
|
19123
|
+
"readonly": true,
|
|
19124
|
+
"description": "Turns the cap off and on, which is all expanding is.",
|
|
19125
|
+
"inheritedFrom": {
|
|
19126
|
+
"name": "MixinTokens",
|
|
19127
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
19128
|
+
}
|
|
19129
|
+
},
|
|
19050
19130
|
{
|
|
19051
19131
|
"kind": "method",
|
|
19052
19132
|
"name": "renderTokenRow",
|
|
@@ -19075,6 +19155,29 @@
|
|
|
19075
19155
|
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
19076
19156
|
}
|
|
19077
19157
|
},
|
|
19158
|
+
{
|
|
19159
|
+
"kind": "method",
|
|
19160
|
+
"name": "renderRest",
|
|
19161
|
+
"privacy": "private",
|
|
19162
|
+
"return": {
|
|
19163
|
+
"type": {
|
|
19164
|
+
"text": "TemplateResult | typeof nothing"
|
|
19165
|
+
}
|
|
19166
|
+
},
|
|
19167
|
+
"parameters": [
|
|
19168
|
+
{
|
|
19169
|
+
"name": "over",
|
|
19170
|
+
"type": {
|
|
19171
|
+
"text": "number"
|
|
19172
|
+
}
|
|
19173
|
+
}
|
|
19174
|
+
],
|
|
19175
|
+
"description": "The count, as a control where the host asked for one and a word otherwise.\n\n**`part=\"rest\"` either way**, so a consumer's `::part(rest)` keeps working\nacross the change. The element under it is different, which is the point:\na `<span>` that looks like an affordance and answers nothing is the fault\nthis exists to fix, and the way to fix it is a real button rather than a\nclick handler on text.\n\n**Expanded, it renders on no count.** `shownLimit` is zero while expanded,\nso `over` is zero too, and gating the control on the number would take\naway the only way back.",
|
|
19176
|
+
"inheritedFrom": {
|
|
19177
|
+
"name": "MixinTokens",
|
|
19178
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
19179
|
+
}
|
|
19180
|
+
},
|
|
19078
19181
|
{
|
|
19079
19182
|
"kind": "method",
|
|
19080
19183
|
"name": "hideOverflow",
|
|
@@ -20374,7 +20477,7 @@
|
|
|
20374
20477
|
"slug": "invalid"
|
|
20375
20478
|
},
|
|
20376
20479
|
{
|
|
20377
|
-
"description": "A cap on the tags drawn, with the rest counted.",
|
|
20480
|
+
"description": "A cap on the tags drawn, with the rest counted and openable.",
|
|
20378
20481
|
"slug": "max-tags"
|
|
20379
20482
|
},
|
|
20380
20483
|
{
|
|
@@ -20420,6 +20523,45 @@
|
|
|
20420
20523
|
"module": "src/mixins/mixin-controller-open/mixin-controller-open.ts"
|
|
20421
20524
|
}
|
|
20422
20525
|
},
|
|
20526
|
+
{
|
|
20527
|
+
"name": "collapse-label",
|
|
20528
|
+
"type": {
|
|
20529
|
+
"text": "string"
|
|
20530
|
+
},
|
|
20531
|
+
"default": "'Show fewer'",
|
|
20532
|
+
"description": "What the control says once everything is showing.",
|
|
20533
|
+
"fieldName": "collapseLabel",
|
|
20534
|
+
"inheritedFrom": {
|
|
20535
|
+
"name": "MixinTokens",
|
|
20536
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
20537
|
+
}
|
|
20538
|
+
},
|
|
20539
|
+
{
|
|
20540
|
+
"name": "expandable",
|
|
20541
|
+
"type": {
|
|
20542
|
+
"text": "boolean"
|
|
20543
|
+
},
|
|
20544
|
+
"default": "false",
|
|
20545
|
+
"description": "Whether the count is a control that shows the rest.",
|
|
20546
|
+
"fieldName": "expandable",
|
|
20547
|
+
"inheritedFrom": {
|
|
20548
|
+
"name": "MixinTokens",
|
|
20549
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
20550
|
+
}
|
|
20551
|
+
},
|
|
20552
|
+
{
|
|
20553
|
+
"name": "expand-label",
|
|
20554
|
+
"type": {
|
|
20555
|
+
"text": "string"
|
|
20556
|
+
},
|
|
20557
|
+
"default": "'Show all'",
|
|
20558
|
+
"description": "What the collapsed count is called, since `+3` names nothing.",
|
|
20559
|
+
"fieldName": "expandLabel",
|
|
20560
|
+
"inheritedFrom": {
|
|
20561
|
+
"name": "MixinTokens",
|
|
20562
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
20563
|
+
}
|
|
20564
|
+
},
|
|
20423
20565
|
{
|
|
20424
20566
|
"name": "max-tags",
|
|
20425
20567
|
"type": {
|
|
@@ -20958,7 +21100,7 @@
|
|
|
20958
21100
|
}
|
|
20959
21101
|
},
|
|
20960
21102
|
{
|
|
20961
|
-
"description": "The count of choices held beyond `max-tags`.",
|
|
21103
|
+
"description": "The count of choices held beyond `max-tags`. A `<button>` with `expandable`, a `<span>` without it.",
|
|
20962
21104
|
"name": "rest",
|
|
20963
21105
|
"inheritedFrom": {
|
|
20964
21106
|
"name": "HelixHeadlessCombobox",
|
|
@@ -34414,17 +34556,33 @@
|
|
|
34414
34556
|
"declarations": [
|
|
34415
34557
|
{
|
|
34416
34558
|
"kind": "class",
|
|
34417
|
-
"description": "The frame is the field rather than the input, so the tokens sit inside the\nsame box as the text and the focus ring is drawn once around the whole\ncontrol. It grows down a line at a time as tokens are added, which is the\narrangement Combobox takes when it is holding a selection.\n\n**The tokens are the consumer's own elements**, so the only thing said about\nthem here is to keep their size and not run past the field. A `Tag` slotted\ninto `tags` already looks like one; anything else looks like whatever it is.\n\nHeight comes from the region, like every other control: `data-density` on\nwhatever holds it, not a `size` here.",
|
|
34559
|
+
"description": "The frame is the field rather than the input, so the tokens sit inside the\nsame box as the text and the focus ring is drawn once around the whole\ncontrol. It grows down a line at a time as tokens are added, which is the\narrangement Combobox takes when it is holding a selection.\n\n**The tokens are the consumer's own elements**, so the only thing said about\nthem here is to keep their size and not run past the field. A `Tag` slotted\ninto `tags` already looks like one; anything else looks like whatever it is.\n\n**The suggestion panel is this element's own box, not a listbox's.** Combobox\nputs a `helix-listbox` in its panel because the options there are a selection\nit owns; these are the consumer's suggestions, so the panel is a plain\n`role=\"listbox\"` region and the options pass their own `helix-select`\nstraight through it. That is why this surface scrolls where Combobox's does\nnot: there is no list inside to do it.\n\nHeight comes from the region, like every other control: `data-density` on\nwhatever holds it, not a `size` here.",
|
|
34418
34560
|
"name": "HelixFilterInput",
|
|
34419
34561
|
"cssProperties": [
|
|
34420
34562
|
{
|
|
34421
34563
|
"description": "Fill behind the field.",
|
|
34422
34564
|
"name": "--filter-input-background-color"
|
|
34423
34565
|
},
|
|
34566
|
+
{
|
|
34567
|
+
"description": "Color of the suggestion panel's edge.",
|
|
34568
|
+
"name": "--filter-input-border-color"
|
|
34569
|
+
},
|
|
34570
|
+
{
|
|
34571
|
+
"description": "Width of that edge. Follows `--helix-border-floating`.",
|
|
34572
|
+
"name": "--filter-input-border-width"
|
|
34573
|
+
},
|
|
34424
34574
|
{
|
|
34425
34575
|
"description": "Smallest the text keeps as tokens fill the line, before it wraps to its own.",
|
|
34426
34576
|
"name": "--filter-input-control-size"
|
|
34427
34577
|
},
|
|
34578
|
+
{
|
|
34579
|
+
"description": "Width of the suggestion panel. Follows the field by default.",
|
|
34580
|
+
"name": "--filter-input-panel-size"
|
|
34581
|
+
},
|
|
34582
|
+
{
|
|
34583
|
+
"description": "Lift under the panel. Follows `--helix-shadow-floating`: a floating surface sits over content nobody can predict, so it keeps a lift by default.",
|
|
34584
|
+
"name": "--filter-input-shadow"
|
|
34585
|
+
},
|
|
34428
34586
|
{
|
|
34429
34587
|
"description": "Height of the field with nothing in it, which it grows from.",
|
|
34430
34588
|
"name": "--filter-input-size"
|
|
@@ -34433,106 +34591,119 @@
|
|
|
34433
34591
|
"members": [
|
|
34434
34592
|
{
|
|
34435
34593
|
"kind": "field",
|
|
34436
|
-
"name": "
|
|
34594
|
+
"name": "open",
|
|
34437
34595
|
"type": {
|
|
34438
|
-
"text": "
|
|
34596
|
+
"text": "boolean"
|
|
34439
34597
|
},
|
|
34440
|
-
"
|
|
34441
|
-
"
|
|
34442
|
-
"attribute": "max-tags",
|
|
34598
|
+
"description": "Whether the element is open.\n\nOne property, not two, so `dialog.open` answers the question anyone\nasking it meant. Writing always applies; `<helix-dialog open>` is the\nsame statement in markup.\n\n**Not reflected, and that is required rather than tidy.** Reflection\nwrites the resolved state back as an attribute, so an element that opened\nitself would put `open` on its own host: cloned, serialized for\nhydration, or diffed by a framework, it comes back holding whatever the\nlast reader did rather than what the author wrote. `:state(open)` carries\nthe resolved state for stylesheets, which is what the mirror is for.",
|
|
34599
|
+
"attribute": "open",
|
|
34443
34600
|
"inheritedFrom": {
|
|
34444
|
-
"name": "
|
|
34445
|
-
"module": "src/mixins/mixin-
|
|
34601
|
+
"name": "MixinControllerOpen",
|
|
34602
|
+
"module": "src/mixins/mixin-controller-open/mixin-controller-open.ts"
|
|
34603
|
+
}
|
|
34604
|
+
},
|
|
34605
|
+
{
|
|
34606
|
+
"kind": "field",
|
|
34607
|
+
"name": "defaultOpen",
|
|
34608
|
+
"type": {
|
|
34609
|
+
"text": "boolean"
|
|
34610
|
+
},
|
|
34611
|
+
"default": "false",
|
|
34612
|
+
"description": "Initial open state for uncontrolled use, where nothing declared one.",
|
|
34613
|
+
"attribute": "default-open",
|
|
34614
|
+
"inheritedFrom": {
|
|
34615
|
+
"name": "MixinControllerOpen",
|
|
34616
|
+
"module": "src/mixins/mixin-controller-open/mixin-controller-open.ts"
|
|
34617
|
+
}
|
|
34618
|
+
},
|
|
34619
|
+
{
|
|
34620
|
+
"kind": "field",
|
|
34621
|
+
"name": "openState",
|
|
34622
|
+
"type": {
|
|
34623
|
+
"text": "boolean | undefined"
|
|
34624
|
+
},
|
|
34625
|
+
"privacy": "private",
|
|
34626
|
+
"default": "undefined",
|
|
34627
|
+
"description": "The state, whoever set it, and `undefined` until somebody has.\n\nPrefixed, and it has to be. These mixins compose onto one prototype\nchain, `Select` takes this one and `MixinControllerValue` together, and\nTypeScript's `private` is a compile-time fiction: two mixins with a field\ncalled `state` share one property on the instance, and the second one\nsilently overwrites the first. Measured, as a select whose `value` came\nback holding its `open` boolean.\n\nOne field and not two. Writing always applies, the way a native control\ndoes when a script assigns to it.",
|
|
34628
|
+
"inheritedFrom": {
|
|
34629
|
+
"name": "MixinControllerOpen",
|
|
34630
|
+
"module": "src/mixins/mixin-controller-open/mixin-controller-open.ts"
|
|
34446
34631
|
}
|
|
34447
34632
|
},
|
|
34448
34633
|
{
|
|
34449
34634
|
"kind": "method",
|
|
34450
|
-
"name": "
|
|
34451
|
-
"privacy": "protected",
|
|
34635
|
+
"name": "requestOpen",
|
|
34452
34636
|
"return": {
|
|
34453
34637
|
"type": {
|
|
34454
|
-
"text": "
|
|
34638
|
+
"text": "boolean"
|
|
34455
34639
|
}
|
|
34456
34640
|
},
|
|
34457
34641
|
"parameters": [
|
|
34458
34642
|
{
|
|
34459
|
-
"name": "
|
|
34460
|
-
"type": {
|
|
34461
|
-
"text": "unknown"
|
|
34462
|
-
}
|
|
34463
|
-
},
|
|
34464
|
-
{
|
|
34465
|
-
"name": "over",
|
|
34643
|
+
"name": "next",
|
|
34466
34644
|
"type": {
|
|
34467
|
-
"text": "
|
|
34645
|
+
"text": "boolean"
|
|
34468
34646
|
}
|
|
34469
34647
|
}
|
|
34470
34648
|
],
|
|
34649
|
+
"description": "Requests an open-state change, and reports whether it was applied.\n\nAnnounces before it acts, so `preventDefault()` on the `helix-before-open` or\n`helix-before-close` is a refusal and nothing moves. Nobody refusing means the\nelement opens or closes itself, whether or not a consumer declared\n`open`: a declared property is a seed and a correction, and a consumer\nwho wants the decision for themselves refuses it and assigns their own.",
|
|
34471
34650
|
"inheritedFrom": {
|
|
34472
|
-
"name": "
|
|
34473
|
-
"module": "src/mixins/mixin-
|
|
34651
|
+
"name": "MixinControllerOpen",
|
|
34652
|
+
"module": "src/mixins/mixin-controller-open/mixin-controller-open.ts"
|
|
34653
|
+
},
|
|
34654
|
+
"type": {
|
|
34655
|
+
"text": "requestOpen(next: boolean) => boolean"
|
|
34474
34656
|
}
|
|
34475
34657
|
},
|
|
34476
34658
|
{
|
|
34477
34659
|
"kind": "method",
|
|
34478
|
-
"name": "
|
|
34479
|
-
"privacy": "
|
|
34660
|
+
"name": "announceToggle",
|
|
34661
|
+
"privacy": "private",
|
|
34480
34662
|
"return": {
|
|
34481
34663
|
"type": {
|
|
34482
|
-
"text": "
|
|
34664
|
+
"text": "void"
|
|
34483
34665
|
}
|
|
34484
34666
|
},
|
|
34485
34667
|
"parameters": [
|
|
34486
34668
|
{
|
|
34487
|
-
"name": "
|
|
34669
|
+
"name": "open",
|
|
34488
34670
|
"type": {
|
|
34489
|
-
"text": "
|
|
34671
|
+
"text": "boolean"
|
|
34490
34672
|
}
|
|
34491
34673
|
}
|
|
34492
34674
|
],
|
|
34675
|
+
"description": "Says the state moved, under the platform's own name and in its shape.\n\n**A native `toggle` from inside a shadow root reaches nobody**, because\nit neither bubbles nor composes, so the ten families showing a\n`popover=\"manual\"` panel and the two rendering a real `<dialog>` announce\nnothing to a consumer. The disclosures have no native element to fire\nanything at all: `AccordionItem` and `TreeItem` are `aria-expanded` and\n`hidden` written by hand, which is `<details>`'s job done manually.\n\n**From here rather than from `PopoverController`.** The controller covers\neleven families and the mixin covers sixteen, so announcing from both\nwould announce twice on the ten they share. What `toggle` reports is the\n*state*, and the state is this mixin's; the controller is a way of\nputting a panel on the screen.\n\n**`newState` and `oldState`, because that is the platform's shape**, so a\nconsumer arriving from `<details>` reads the same two words. Not\ncancelable: the before events are the request, and a second cancelable\nevent for one transition is two answers to one question.",
|
|
34493
34676
|
"inheritedFrom": {
|
|
34494
|
-
"name": "
|
|
34495
|
-
"module": "src/mixins/mixin-
|
|
34677
|
+
"name": "MixinControllerOpen",
|
|
34678
|
+
"module": "src/mixins/mixin-controller-open/mixin-controller-open.ts"
|
|
34496
34679
|
}
|
|
34497
34680
|
},
|
|
34498
34681
|
{
|
|
34499
34682
|
"kind": "method",
|
|
34500
|
-
"name": "
|
|
34501
|
-
"privacy": "protected",
|
|
34683
|
+
"name": "toggleOpen",
|
|
34502
34684
|
"return": {
|
|
34503
34685
|
"type": {
|
|
34504
34686
|
"text": "boolean"
|
|
34505
34687
|
}
|
|
34506
34688
|
},
|
|
34507
|
-
"
|
|
34508
|
-
{
|
|
34509
|
-
"name": "event",
|
|
34510
|
-
"type": {
|
|
34511
|
-
"text": "KeyboardEvent"
|
|
34512
|
-
}
|
|
34513
|
-
},
|
|
34514
|
-
{
|
|
34515
|
-
"name": "typed",
|
|
34516
|
-
"type": {
|
|
34517
|
-
"text": "string"
|
|
34518
|
-
}
|
|
34519
|
-
}
|
|
34520
|
-
],
|
|
34689
|
+
"description": "Requests the opposite of the current state.",
|
|
34521
34690
|
"inheritedFrom": {
|
|
34522
|
-
"name": "
|
|
34523
|
-
"module": "src/mixins/mixin-
|
|
34691
|
+
"name": "MixinControllerOpen",
|
|
34692
|
+
"module": "src/mixins/mixin-controller-open/mixin-controller-open.ts"
|
|
34693
|
+
},
|
|
34694
|
+
"type": {
|
|
34695
|
+
"text": "toggleOpen() => boolean"
|
|
34524
34696
|
}
|
|
34525
34697
|
},
|
|
34526
34698
|
{
|
|
34527
|
-
"kind": "
|
|
34528
|
-
"name": "
|
|
34529
|
-
"
|
|
34530
|
-
|
|
34531
|
-
"type": {
|
|
34532
|
-
"text": "void"
|
|
34533
|
-
}
|
|
34699
|
+
"kind": "field",
|
|
34700
|
+
"name": "collapseLabel",
|
|
34701
|
+
"type": {
|
|
34702
|
+
"text": "string"
|
|
34534
34703
|
},
|
|
34535
|
-
"
|
|
34704
|
+
"default": "'Show fewer'",
|
|
34705
|
+
"description": "What the control says once everything is showing.",
|
|
34706
|
+
"attribute": "collapse-label",
|
|
34536
34707
|
"inheritedFrom": {
|
|
34537
34708
|
"name": "MixinTokens",
|
|
34538
34709
|
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
@@ -34540,29 +34711,225 @@
|
|
|
34540
34711
|
},
|
|
34541
34712
|
{
|
|
34542
34713
|
"kind": "field",
|
|
34543
|
-
"name": "
|
|
34714
|
+
"name": "expandable",
|
|
34544
34715
|
"type": {
|
|
34545
|
-
"text": "
|
|
34716
|
+
"text": "boolean"
|
|
34546
34717
|
},
|
|
34547
|
-
"default": "
|
|
34548
|
-
"description": "
|
|
34549
|
-
"attribute": "
|
|
34718
|
+
"default": "false",
|
|
34719
|
+
"description": "Whether the count is a control that shows the rest.",
|
|
34720
|
+
"attribute": "expandable",
|
|
34550
34721
|
"inheritedFrom": {
|
|
34551
|
-
"name": "
|
|
34552
|
-
"module": "src/mixins/mixin-
|
|
34722
|
+
"name": "MixinTokens",
|
|
34723
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
34553
34724
|
}
|
|
34554
34725
|
},
|
|
34555
34726
|
{
|
|
34556
34727
|
"kind": "field",
|
|
34557
|
-
"name": "
|
|
34728
|
+
"name": "expandLabel",
|
|
34558
34729
|
"type": {
|
|
34559
34730
|
"text": "string"
|
|
34560
34731
|
},
|
|
34561
|
-
"
|
|
34562
|
-
"
|
|
34732
|
+
"default": "'Show all'",
|
|
34733
|
+
"description": "What the collapsed count is called, since `+3` names nothing.",
|
|
34734
|
+
"attribute": "expand-label",
|
|
34563
34735
|
"inheritedFrom": {
|
|
34564
|
-
"name": "
|
|
34565
|
-
"module": "src/mixins/mixin-
|
|
34736
|
+
"name": "MixinTokens",
|
|
34737
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
34738
|
+
}
|
|
34739
|
+
},
|
|
34740
|
+
{
|
|
34741
|
+
"kind": "field",
|
|
34742
|
+
"name": "maxTags",
|
|
34743
|
+
"type": {
|
|
34744
|
+
"text": "number"
|
|
34745
|
+
},
|
|
34746
|
+
"default": "0",
|
|
34747
|
+
"description": "How many tokens to show before the rest become a count.",
|
|
34748
|
+
"attribute": "max-tags",
|
|
34749
|
+
"inheritedFrom": {
|
|
34750
|
+
"name": "MixinTokens",
|
|
34751
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
34752
|
+
}
|
|
34753
|
+
},
|
|
34754
|
+
{
|
|
34755
|
+
"kind": "field",
|
|
34756
|
+
"name": "expanded",
|
|
34757
|
+
"type": {
|
|
34758
|
+
"text": "boolean"
|
|
34759
|
+
},
|
|
34760
|
+
"privacy": "private",
|
|
34761
|
+
"default": "false",
|
|
34762
|
+
"description": "Whether the reader has asked for all of them.\n\nState and private, the way `Input`'s `revealed` is: it is a reader's\nmomentary choice about what is on their own screen, it must not survive\nanything, and a consumer who wants the field opened is asking for\n`max-tags=\"0\"` rather than for a second way to say it.",
|
|
34763
|
+
"inheritedFrom": {
|
|
34764
|
+
"name": "MixinTokens",
|
|
34765
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
34766
|
+
}
|
|
34767
|
+
},
|
|
34768
|
+
{
|
|
34769
|
+
"kind": "field",
|
|
34770
|
+
"name": "shownLimit",
|
|
34771
|
+
"type": {
|
|
34772
|
+
"text": "number"
|
|
34773
|
+
},
|
|
34774
|
+
"privacy": "protected",
|
|
34775
|
+
"readonly": true,
|
|
34776
|
+
"inheritedFrom": {
|
|
34777
|
+
"name": "MixinTokens",
|
|
34778
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
34779
|
+
}
|
|
34780
|
+
},
|
|
34781
|
+
{
|
|
34782
|
+
"kind": "field",
|
|
34783
|
+
"name": "toggleExpanded",
|
|
34784
|
+
"privacy": "private",
|
|
34785
|
+
"readonly": true,
|
|
34786
|
+
"description": "Turns the cap off and on, which is all expanding is.",
|
|
34787
|
+
"inheritedFrom": {
|
|
34788
|
+
"name": "MixinTokens",
|
|
34789
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
34790
|
+
}
|
|
34791
|
+
},
|
|
34792
|
+
{
|
|
34793
|
+
"kind": "method",
|
|
34794
|
+
"name": "renderTokenRow",
|
|
34795
|
+
"privacy": "protected",
|
|
34796
|
+
"return": {
|
|
34797
|
+
"type": {
|
|
34798
|
+
"text": "TemplateResult | typeof nothing"
|
|
34799
|
+
}
|
|
34800
|
+
},
|
|
34801
|
+
"parameters": [
|
|
34802
|
+
{
|
|
34803
|
+
"name": "content",
|
|
34804
|
+
"type": {
|
|
34805
|
+
"text": "unknown"
|
|
34806
|
+
}
|
|
34807
|
+
},
|
|
34808
|
+
{
|
|
34809
|
+
"name": "over",
|
|
34810
|
+
"type": {
|
|
34811
|
+
"text": "number"
|
|
34812
|
+
}
|
|
34813
|
+
}
|
|
34814
|
+
],
|
|
34815
|
+
"inheritedFrom": {
|
|
34816
|
+
"name": "MixinTokens",
|
|
34817
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
34818
|
+
}
|
|
34819
|
+
},
|
|
34820
|
+
{
|
|
34821
|
+
"kind": "method",
|
|
34822
|
+
"name": "renderRest",
|
|
34823
|
+
"privacy": "private",
|
|
34824
|
+
"return": {
|
|
34825
|
+
"type": {
|
|
34826
|
+
"text": "TemplateResult | typeof nothing"
|
|
34827
|
+
}
|
|
34828
|
+
},
|
|
34829
|
+
"parameters": [
|
|
34830
|
+
{
|
|
34831
|
+
"name": "over",
|
|
34832
|
+
"type": {
|
|
34833
|
+
"text": "number"
|
|
34834
|
+
}
|
|
34835
|
+
}
|
|
34836
|
+
],
|
|
34837
|
+
"description": "The count, as a control where the host asked for one and a word otherwise.\n\n**`part=\"rest\"` either way**, so a consumer's `::part(rest)` keeps working\nacross the change. The element under it is different, which is the point:\na `<span>` that looks like an affordance and answers nothing is the fault\nthis exists to fix, and the way to fix it is a real button rather than a\nclick handler on text.\n\n**Expanded, it renders on no count.** `shownLimit` is zero while expanded,\nso `over` is zero too, and gating the control on the number would take\naway the only way back.",
|
|
34838
|
+
"inheritedFrom": {
|
|
34839
|
+
"name": "MixinTokens",
|
|
34840
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
34841
|
+
}
|
|
34842
|
+
},
|
|
34843
|
+
{
|
|
34844
|
+
"kind": "method",
|
|
34845
|
+
"name": "hideOverflow",
|
|
34846
|
+
"privacy": "protected",
|
|
34847
|
+
"return": {
|
|
34848
|
+
"type": {
|
|
34849
|
+
"text": "number"
|
|
34850
|
+
}
|
|
34851
|
+
},
|
|
34852
|
+
"parameters": [
|
|
34853
|
+
{
|
|
34854
|
+
"name": "slot",
|
|
34855
|
+
"type": {
|
|
34856
|
+
"text": "HTMLSlotElement | null | undefined"
|
|
34857
|
+
}
|
|
34858
|
+
}
|
|
34859
|
+
],
|
|
34860
|
+
"inheritedFrom": {
|
|
34861
|
+
"name": "MixinTokens",
|
|
34862
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
34863
|
+
}
|
|
34864
|
+
},
|
|
34865
|
+
{
|
|
34866
|
+
"kind": "method",
|
|
34867
|
+
"name": "tokenKeydown",
|
|
34868
|
+
"privacy": "protected",
|
|
34869
|
+
"return": {
|
|
34870
|
+
"type": {
|
|
34871
|
+
"text": "boolean"
|
|
34872
|
+
}
|
|
34873
|
+
},
|
|
34874
|
+
"parameters": [
|
|
34875
|
+
{
|
|
34876
|
+
"name": "event",
|
|
34877
|
+
"type": {
|
|
34878
|
+
"text": "KeyboardEvent"
|
|
34879
|
+
}
|
|
34880
|
+
},
|
|
34881
|
+
{
|
|
34882
|
+
"name": "typed",
|
|
34883
|
+
"type": {
|
|
34884
|
+
"text": "string"
|
|
34885
|
+
}
|
|
34886
|
+
}
|
|
34887
|
+
],
|
|
34888
|
+
"inheritedFrom": {
|
|
34889
|
+
"name": "MixinTokens",
|
|
34890
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
34891
|
+
}
|
|
34892
|
+
},
|
|
34893
|
+
{
|
|
34894
|
+
"kind": "method",
|
|
34895
|
+
"name": "removeLastToken",
|
|
34896
|
+
"privacy": "protected",
|
|
34897
|
+
"return": {
|
|
34898
|
+
"type": {
|
|
34899
|
+
"text": "void"
|
|
34900
|
+
}
|
|
34901
|
+
},
|
|
34902
|
+
"description": "Asks the last token to go, rather than taking it.\n\n`dismiss()` is the tag's own, so this is the code path its remove control\nalready runs on a press: the consumer hears one `helix-dismiss`, cancels it\nor removes the element, and never learns which of the two asked. A slotted\nnode that is not a `Tag` has no such method and is left alone, because\nhiding a consumer's element on Backspace would be this element deciding\nsomething it was never given.",
|
|
34903
|
+
"inheritedFrom": {
|
|
34904
|
+
"name": "MixinTokens",
|
|
34905
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
34906
|
+
}
|
|
34907
|
+
},
|
|
34908
|
+
{
|
|
34909
|
+
"kind": "field",
|
|
34910
|
+
"name": "defaultValue",
|
|
34911
|
+
"type": {
|
|
34912
|
+
"text": "string"
|
|
34913
|
+
},
|
|
34914
|
+
"default": "''",
|
|
34915
|
+
"description": "The value the markup declared, which is where a reset returns to.",
|
|
34916
|
+
"attribute": "default-value",
|
|
34917
|
+
"inheritedFrom": {
|
|
34918
|
+
"name": "MixinControllerValue",
|
|
34919
|
+
"module": "src/mixins/mixin-controller-value/mixin-controller-value.ts"
|
|
34920
|
+
}
|
|
34921
|
+
},
|
|
34922
|
+
{
|
|
34923
|
+
"kind": "field",
|
|
34924
|
+
"name": "value",
|
|
34925
|
+
"type": {
|
|
34926
|
+
"text": "string"
|
|
34927
|
+
},
|
|
34928
|
+
"description": "What the control holds now, and what its form submits.\n\nOne property, not two, so `input.value` answers the question anyone\nasking it meant. Writing always applies; `<helix-input value=\"x\">` is the\nsame statement in markup, and `default-value` is how markup seeds a value\na reset should return to.",
|
|
34929
|
+
"attribute": "value",
|
|
34930
|
+
"inheritedFrom": {
|
|
34931
|
+
"name": "MixinControllerValue",
|
|
34932
|
+
"module": "src/mixins/mixin-controller-value/mixin-controller-value.ts"
|
|
34566
34933
|
}
|
|
34567
34934
|
},
|
|
34568
34935
|
{
|
|
@@ -34967,6 +35334,59 @@
|
|
|
34967
35334
|
"module": "src/filter-input/root/filter-input-root.ts"
|
|
34968
35335
|
}
|
|
34969
35336
|
},
|
|
35337
|
+
{
|
|
35338
|
+
"kind": "field",
|
|
35339
|
+
"name": "activeAt",
|
|
35340
|
+
"type": {
|
|
35341
|
+
"text": "number"
|
|
35342
|
+
},
|
|
35343
|
+
"privacy": "private",
|
|
35344
|
+
"default": "-1",
|
|
35345
|
+
"description": "Which suggestion the keyboard is on, or `-1` for none.\n\nAn index rather than a value, unlike Listbox's: these are the consumer's\nown list and two of them may legitimately carry the same value, a `label`\nand an `assignee` both called `ada`. Position is what a reader is moving\nthrough and it is what stays right when they do.",
|
|
35346
|
+
"inheritedFrom": {
|
|
35347
|
+
"name": "HelixHeadlessFilterInput",
|
|
35348
|
+
"module": "src/filter-input/root/filter-input-root.ts"
|
|
35349
|
+
}
|
|
35350
|
+
},
|
|
35351
|
+
{
|
|
35352
|
+
"kind": "field",
|
|
35353
|
+
"name": "suggesting",
|
|
35354
|
+
"type": {
|
|
35355
|
+
"text": "boolean"
|
|
35356
|
+
},
|
|
35357
|
+
"privacy": "private",
|
|
35358
|
+
"default": "false",
|
|
35359
|
+
"description": "Whether anything is offering itself to be suggested.\n\n**The ARIA follows this rather than being declared once.** A text field\ncarrying `role=\"combobox\"` promises a popup; a filter field that no consumer\never gives options to has none, and saying otherwise sends a screen reader\nlooking for a list that does not exist. So the role, `aria-expanded` and\n`aria-controls` all arrive with the first option and leave with the last.",
|
|
35360
|
+
"inheritedFrom": {
|
|
35361
|
+
"name": "HelixHeadlessFilterInput",
|
|
35362
|
+
"module": "src/filter-input/root/filter-input-root.ts"
|
|
35363
|
+
}
|
|
35364
|
+
},
|
|
35365
|
+
{
|
|
35366
|
+
"kind": "field",
|
|
35367
|
+
"name": "dismissed",
|
|
35368
|
+
"type": {
|
|
35369
|
+
"text": "boolean"
|
|
35370
|
+
},
|
|
35371
|
+
"privacy": "private",
|
|
35372
|
+
"default": "false",
|
|
35373
|
+
"description": "Whether Escape has closed the panel over text that still has suggestions.\n\nWithout it the panel is open whenever there is something to show, so Escape\nwould close it and the next render would put it straight back. Cleared by\nthe next keystroke, because that is the reader saying something new.",
|
|
35374
|
+
"inheritedFrom": {
|
|
35375
|
+
"name": "HelixHeadlessFilterInput",
|
|
35376
|
+
"module": "src/filter-input/root/filter-input-root.ts"
|
|
35377
|
+
}
|
|
35378
|
+
},
|
|
35379
|
+
{
|
|
35380
|
+
"kind": "field",
|
|
35381
|
+
"name": "panel",
|
|
35382
|
+
"privacy": "protected",
|
|
35383
|
+
"readonly": true,
|
|
35384
|
+
"default": "new PopoverController(this, { anchor: () => this.renderRoot?.querySelector<HTMLElement>('[part=\"field\"]'), boundary: (): readonly (Element | null | undefined)[] => [ this.renderRoot?.querySelector<HTMLElement>('[part=\"surface\"]'), this.renderRoot?.querySelector<HTMLElement>('[part=\"field\"]'), ], offset: () => 4, onDismiss: () => this.requestOpen(false), placement: 'bottom-start', surface: () => this.renderRoot?.querySelector<HTMLElement>('[part=\"surface\"]'), })",
|
|
35385
|
+
"inheritedFrom": {
|
|
35386
|
+
"name": "HelixHeadlessFilterInput",
|
|
35387
|
+
"module": "src/filter-input/root/filter-input-root.ts"
|
|
35388
|
+
}
|
|
35389
|
+
},
|
|
34970
35390
|
{
|
|
34971
35391
|
"kind": "field",
|
|
34972
35392
|
"name": "releaseCaret",
|
|
@@ -35034,6 +35454,97 @@
|
|
|
35034
35454
|
"module": "src/filter-input/root/filter-input-root.ts"
|
|
35035
35455
|
}
|
|
35036
35456
|
},
|
|
35457
|
+
{
|
|
35458
|
+
"kind": "field",
|
|
35459
|
+
"name": "suggestions",
|
|
35460
|
+
"type": {
|
|
35461
|
+
"text": "SuggestionOption[]"
|
|
35462
|
+
},
|
|
35463
|
+
"privacy": "private",
|
|
35464
|
+
"description": "The suggestions, in the order a reader moves through them.\n\n**Groups are opened out rather than walked into.** A slot assigns the group\nelement, not the options inside it, so a panel that read only what was\nassigned would offer nothing at all the moment a consumer reached for\n`option-group` to say what a run of values belongs to.\n\nA disabled option keeps its place on screen and is skipped here, which is\nthe difference between a list that explains why something cannot be chosen\nand one that pretends it was never there.",
|
|
35465
|
+
"readonly": true,
|
|
35466
|
+
"inheritedFrom": {
|
|
35467
|
+
"name": "HelixHeadlessFilterInput",
|
|
35468
|
+
"module": "src/filter-input/root/filter-input-root.ts"
|
|
35469
|
+
}
|
|
35470
|
+
},
|
|
35471
|
+
{
|
|
35472
|
+
"kind": "field",
|
|
35473
|
+
"name": "selectionDirection",
|
|
35474
|
+
"type": {
|
|
35475
|
+
"text": "'backward' | 'forward' | 'none'"
|
|
35476
|
+
},
|
|
35477
|
+
"description": "The caret and the selection, under the platform's own names.\n\n**Published for the reason `Input` publishes them, and this element needs\nthem more.** The `<input>` is inside this shadow root, so a consumer has no\nway to ask where the caret is: `querySelector` does not cross the boundary.\nA grammar that completes what is being typed cannot work without it, because\n\"what is being typed\" is the term the caret is in, and after writing a\ncompletion back the caret has to be put after it or the next parse reads the\nwrong term.\n\nZero before there is a control, which is where an empty field's caret would\nbe anyway.",
|
|
35478
|
+
"readonly": true,
|
|
35479
|
+
"inheritedFrom": {
|
|
35480
|
+
"name": "HelixHeadlessFilterInput",
|
|
35481
|
+
"module": "src/filter-input/root/filter-input-root.ts"
|
|
35482
|
+
}
|
|
35483
|
+
},
|
|
35484
|
+
{
|
|
35485
|
+
"kind": "field",
|
|
35486
|
+
"name": "selectionEnd",
|
|
35487
|
+
"type": {
|
|
35488
|
+
"text": "number"
|
|
35489
|
+
},
|
|
35490
|
+
"description": "Where the selection ends, which is the caret when nothing is selected.",
|
|
35491
|
+
"readonly": true,
|
|
35492
|
+
"inheritedFrom": {
|
|
35493
|
+
"name": "HelixHeadlessFilterInput",
|
|
35494
|
+
"module": "src/filter-input/root/filter-input-root.ts"
|
|
35495
|
+
}
|
|
35496
|
+
},
|
|
35497
|
+
{
|
|
35498
|
+
"kind": "field",
|
|
35499
|
+
"name": "selectionStart",
|
|
35500
|
+
"type": {
|
|
35501
|
+
"text": "number"
|
|
35502
|
+
},
|
|
35503
|
+
"description": "Where the selection starts, which is the caret when nothing is selected.",
|
|
35504
|
+
"readonly": true,
|
|
35505
|
+
"inheritedFrom": {
|
|
35506
|
+
"name": "HelixHeadlessFilterInput",
|
|
35507
|
+
"module": "src/filter-input/root/filter-input-root.ts"
|
|
35508
|
+
}
|
|
35509
|
+
},
|
|
35510
|
+
{
|
|
35511
|
+
"kind": "method",
|
|
35512
|
+
"name": "setSelectionRange",
|
|
35513
|
+
"return": {
|
|
35514
|
+
"type": {
|
|
35515
|
+
"text": "void"
|
|
35516
|
+
}
|
|
35517
|
+
},
|
|
35518
|
+
"parameters": [
|
|
35519
|
+
{
|
|
35520
|
+
"name": "start",
|
|
35521
|
+
"type": {
|
|
35522
|
+
"text": "number"
|
|
35523
|
+
}
|
|
35524
|
+
},
|
|
35525
|
+
{
|
|
35526
|
+
"name": "end",
|
|
35527
|
+
"type": {
|
|
35528
|
+
"text": "number"
|
|
35529
|
+
}
|
|
35530
|
+
},
|
|
35531
|
+
{
|
|
35532
|
+
"name": "direction",
|
|
35533
|
+
"optional": true,
|
|
35534
|
+
"type": {
|
|
35535
|
+
"text": "'backward' | 'forward' | 'none'"
|
|
35536
|
+
}
|
|
35537
|
+
}
|
|
35538
|
+
],
|
|
35539
|
+
"description": "Moves the caret, or selects a run of the text.",
|
|
35540
|
+
"type": {
|
|
35541
|
+
"text": "setSelectionRange(start: number, end: number, direction?: 'backward' | 'forward' | 'none') => void"
|
|
35542
|
+
},
|
|
35543
|
+
"inheritedFrom": {
|
|
35544
|
+
"name": "HelixHeadlessFilterInput",
|
|
35545
|
+
"module": "src/filter-input/root/filter-input-root.ts"
|
|
35546
|
+
}
|
|
35547
|
+
},
|
|
35037
35548
|
{
|
|
35038
35549
|
"kind": "field",
|
|
35039
35550
|
"name": "handleInput",
|
|
@@ -35067,6 +35578,44 @@
|
|
|
35067
35578
|
"module": "src/filter-input/root/filter-input-root.ts"
|
|
35068
35579
|
}
|
|
35069
35580
|
},
|
|
35581
|
+
{
|
|
35582
|
+
"kind": "method",
|
|
35583
|
+
"name": "settleOpen",
|
|
35584
|
+
"privacy": "private",
|
|
35585
|
+
"return": {
|
|
35586
|
+
"type": {
|
|
35587
|
+
"text": "void"
|
|
35588
|
+
}
|
|
35589
|
+
},
|
|
35590
|
+
"description": "Opens the panel when there is something in it, and closes it when there is\nnot.\n\n**Derived rather than commanded, which is the whole of how two levels\nwork.** A reader who picks `disposition` wants its values next, and the\nconsumer answers by rendering those values; if picking closed the panel it\nwould shut and reopen between two renders, which a reader sees as a flicker\nand a screen reader hears as a list going away. Nothing here closes on a\nchoice: the panel goes when the consumer stops offering, which is exactly\nwhen a value has been completed and there is nothing left to say.\n\nThrough `requestOpen` for both directions, so `helix-before-open` and\n`helix-before-close` still gate it and a consumer who refuses is obeyed.\n**No guard of its own**, because that method already returns early when the\nanswer has not moved: this runs after every render, and a second guard here\nwould only be a copy of that one going stale.",
|
|
35591
|
+
"inheritedFrom": {
|
|
35592
|
+
"name": "HelixHeadlessFilterInput",
|
|
35593
|
+
"module": "src/filter-input/root/filter-input-root.ts"
|
|
35594
|
+
}
|
|
35595
|
+
},
|
|
35596
|
+
{
|
|
35597
|
+
"kind": "method",
|
|
35598
|
+
"name": "move",
|
|
35599
|
+
"privacy": "private",
|
|
35600
|
+
"return": {
|
|
35601
|
+
"type": {
|
|
35602
|
+
"text": "void"
|
|
35603
|
+
}
|
|
35604
|
+
},
|
|
35605
|
+
"parameters": [
|
|
35606
|
+
{
|
|
35607
|
+
"name": "by",
|
|
35608
|
+
"type": {
|
|
35609
|
+
"text": "number"
|
|
35610
|
+
}
|
|
35611
|
+
}
|
|
35612
|
+
],
|
|
35613
|
+
"description": "Moves the highlight, wrapping, and opens the panel if it was closed.",
|
|
35614
|
+
"inheritedFrom": {
|
|
35615
|
+
"name": "HelixHeadlessFilterInput",
|
|
35616
|
+
"module": "src/filter-input/root/filter-input-root.ts"
|
|
35617
|
+
}
|
|
35618
|
+
},
|
|
35070
35619
|
{
|
|
35071
35620
|
"kind": "field",
|
|
35072
35621
|
"name": "handleKeydown",
|
|
@@ -35077,6 +35626,54 @@
|
|
|
35077
35626
|
"module": "src/filter-input/root/filter-input-root.ts"
|
|
35078
35627
|
}
|
|
35079
35628
|
},
|
|
35629
|
+
{
|
|
35630
|
+
"kind": "method",
|
|
35631
|
+
"name": "refreshSuggesting",
|
|
35632
|
+
"privacy": "private",
|
|
35633
|
+
"return": {
|
|
35634
|
+
"type": {
|
|
35635
|
+
"text": "void"
|
|
35636
|
+
}
|
|
35637
|
+
},
|
|
35638
|
+
"description": "What is on offer, settled before the render that draws it.\n\n**Not left to `slotchange`, for the reason the token row is not.** That\nevent reports the assignment moving and nothing else, and it does not fire\nat all under the harness these are tested in, so a panel that learned only\nfrom it would be a panel that never opened. Reading the slot every update is\nwhat makes the answer true whenever anyone asks.\n\nState only. Opening is an announcement and belongs after the render, which\nis why `settleOpen` is not called from here.",
|
|
35639
|
+
"inheritedFrom": {
|
|
35640
|
+
"name": "HelixHeadlessFilterInput",
|
|
35641
|
+
"module": "src/filter-input/root/filter-input-root.ts"
|
|
35642
|
+
}
|
|
35643
|
+
},
|
|
35644
|
+
{
|
|
35645
|
+
"kind": "field",
|
|
35646
|
+
"name": "handleSuggestions",
|
|
35647
|
+
"privacy": "private",
|
|
35648
|
+
"readonly": true,
|
|
35649
|
+
"description": "The panel again, whenever what is in it changes.",
|
|
35650
|
+
"inheritedFrom": {
|
|
35651
|
+
"name": "HelixHeadlessFilterInput",
|
|
35652
|
+
"module": "src/filter-input/root/filter-input-root.ts"
|
|
35653
|
+
}
|
|
35654
|
+
},
|
|
35655
|
+
{
|
|
35656
|
+
"kind": "field",
|
|
35657
|
+
"name": "handleFocusIn",
|
|
35658
|
+
"privacy": "private",
|
|
35659
|
+
"readonly": true,
|
|
35660
|
+
"description": "Focus arriving in the field is a reader asking what they can type.",
|
|
35661
|
+
"inheritedFrom": {
|
|
35662
|
+
"name": "HelixHeadlessFilterInput",
|
|
35663
|
+
"module": "src/filter-input/root/filter-input-root.ts"
|
|
35664
|
+
}
|
|
35665
|
+
},
|
|
35666
|
+
{
|
|
35667
|
+
"kind": "field",
|
|
35668
|
+
"name": "handleFocusOut",
|
|
35669
|
+
"privacy": "private",
|
|
35670
|
+
"readonly": true,
|
|
35671
|
+
"description": "Focus leaving the element closes it.\n\n`relatedTarget` and not a timer: a press inside the panel moves focus within\nthis element and must not close what is being pressed.",
|
|
35672
|
+
"inheritedFrom": {
|
|
35673
|
+
"name": "HelixHeadlessFilterInput",
|
|
35674
|
+
"module": "src/filter-input/root/filter-input-root.ts"
|
|
35675
|
+
}
|
|
35676
|
+
},
|
|
35080
35677
|
{
|
|
35081
35678
|
"kind": "field",
|
|
35082
35679
|
"name": "handleTokens",
|
|
@@ -35088,6 +35685,21 @@
|
|
|
35088
35685
|
"module": "src/filter-input/root/filter-input-root.ts"
|
|
35089
35686
|
}
|
|
35090
35687
|
},
|
|
35688
|
+
{
|
|
35689
|
+
"kind": "method",
|
|
35690
|
+
"name": "markActive",
|
|
35691
|
+
"privacy": "private",
|
|
35692
|
+
"return": {
|
|
35693
|
+
"type": {
|
|
35694
|
+
"text": "void"
|
|
35695
|
+
}
|
|
35696
|
+
},
|
|
35697
|
+
"description": "Marks the highlighted suggestion, and tells the control which one it is.\n\n**Two halves, and neither does the other's job.** `active` is the option's\nown published flag and is what a stylesheet draws from. The control carries\n`aria-activedescendant`, because focus never leaves the text: a screen\nreader is told what is highlighted by the field the caret is in, not by the\nlist.\n\nThrough `ariaActiveDescendantElement` rather than an id, which is what\n`Listbox` reaches for and for the same two reasons: it crosses a shadow\nboundary, where an `aria-activedescendant` naming an id cannot, and it needs\nno ids invented for the consumer's own elements. Feature-tested, because\nwhere it is missing the assignment is a silent no-op rather than an error,\nand the highlight is still drawn.",
|
|
35698
|
+
"inheritedFrom": {
|
|
35699
|
+
"name": "HelixHeadlessFilterInput",
|
|
35700
|
+
"module": "src/filter-input/root/filter-input-root.ts"
|
|
35701
|
+
}
|
|
35702
|
+
},
|
|
35091
35703
|
{
|
|
35092
35704
|
"kind": "method",
|
|
35093
35705
|
"name": "focus",
|
|
@@ -35445,9 +36057,18 @@
|
|
|
35445
36057
|
"description": "Backspace on an empty field asks the same way the close control does.",
|
|
35446
36058
|
"slug": "dismissing"
|
|
35447
36059
|
},
|
|
36060
|
+
{
|
|
36061
|
+
"description": "A capped row whose count opens it, and closes it again.",
|
|
36062
|
+
"slug": "expandable"
|
|
36063
|
+
},
|
|
35448
36064
|
{
|
|
35449
36065
|
"description": "A cap for a field in a row, where the rest becomes a count.",
|
|
35450
36066
|
"slug": "max-tags"
|
|
36067
|
+
},
|
|
36068
|
+
{
|
|
36069
|
+
"description": "Keys before the colon, values after it, in one panel.",
|
|
36070
|
+
"min": 420,
|
|
36071
|
+
"slug": "suggesting"
|
|
35451
36072
|
}
|
|
35452
36073
|
],
|
|
35453
36074
|
"source": "helix/styled/src/filter-input"
|
|
@@ -35455,6 +36076,70 @@
|
|
|
35455
36076
|
"tagName": "helix-filter-input",
|
|
35456
36077
|
"customElement": true,
|
|
35457
36078
|
"attributes": [
|
|
36079
|
+
{
|
|
36080
|
+
"name": "open",
|
|
36081
|
+
"type": {
|
|
36082
|
+
"text": "boolean"
|
|
36083
|
+
},
|
|
36084
|
+
"description": "Whether the element is open.\n\nOne property, not two, so `dialog.open` answers the question anyone\nasking it meant. Writing always applies; `<helix-dialog open>` is the\nsame statement in markup.\n\n**Not reflected, and that is required rather than tidy.** Reflection\nwrites the resolved state back as an attribute, so an element that opened\nitself would put `open` on its own host: cloned, serialized for\nhydration, or diffed by a framework, it comes back holding whatever the\nlast reader did rather than what the author wrote. `:state(open)` carries\nthe resolved state for stylesheets, which is what the mirror is for.",
|
|
36085
|
+
"fieldName": "open",
|
|
36086
|
+
"inheritedFrom": {
|
|
36087
|
+
"name": "MixinControllerOpen",
|
|
36088
|
+
"module": "src/mixins/mixin-controller-open/mixin-controller-open.ts"
|
|
36089
|
+
}
|
|
36090
|
+
},
|
|
36091
|
+
{
|
|
36092
|
+
"name": "default-open",
|
|
36093
|
+
"type": {
|
|
36094
|
+
"text": "boolean"
|
|
36095
|
+
},
|
|
36096
|
+
"default": "false",
|
|
36097
|
+
"description": "Initial open state for uncontrolled use, where nothing declared one.",
|
|
36098
|
+
"fieldName": "defaultOpen",
|
|
36099
|
+
"inheritedFrom": {
|
|
36100
|
+
"name": "MixinControllerOpen",
|
|
36101
|
+
"module": "src/mixins/mixin-controller-open/mixin-controller-open.ts"
|
|
36102
|
+
}
|
|
36103
|
+
},
|
|
36104
|
+
{
|
|
36105
|
+
"name": "collapse-label",
|
|
36106
|
+
"type": {
|
|
36107
|
+
"text": "string"
|
|
36108
|
+
},
|
|
36109
|
+
"default": "'Show fewer'",
|
|
36110
|
+
"description": "What the control says once everything is showing.",
|
|
36111
|
+
"fieldName": "collapseLabel",
|
|
36112
|
+
"inheritedFrom": {
|
|
36113
|
+
"name": "MixinTokens",
|
|
36114
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
36115
|
+
}
|
|
36116
|
+
},
|
|
36117
|
+
{
|
|
36118
|
+
"name": "expandable",
|
|
36119
|
+
"type": {
|
|
36120
|
+
"text": "boolean"
|
|
36121
|
+
},
|
|
36122
|
+
"default": "false",
|
|
36123
|
+
"description": "Whether the count is a control that shows the rest.",
|
|
36124
|
+
"fieldName": "expandable",
|
|
36125
|
+
"inheritedFrom": {
|
|
36126
|
+
"name": "MixinTokens",
|
|
36127
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
36128
|
+
}
|
|
36129
|
+
},
|
|
36130
|
+
{
|
|
36131
|
+
"name": "expand-label",
|
|
36132
|
+
"type": {
|
|
36133
|
+
"text": "string"
|
|
36134
|
+
},
|
|
36135
|
+
"default": "'Show all'",
|
|
36136
|
+
"description": "What the collapsed count is called, since `+3` names nothing.",
|
|
36137
|
+
"fieldName": "expandLabel",
|
|
36138
|
+
"inheritedFrom": {
|
|
36139
|
+
"name": "MixinTokens",
|
|
36140
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
36141
|
+
}
|
|
36142
|
+
},
|
|
35458
36143
|
{
|
|
35459
36144
|
"name": "max-tags",
|
|
35460
36145
|
"type": {
|
|
@@ -35647,6 +36332,42 @@
|
|
|
35647
36332
|
"name": "HelixHeadlessFilterInput",
|
|
35648
36333
|
"module": "src/filter-input/root/filter-input-root.ts"
|
|
35649
36334
|
}
|
|
36335
|
+
},
|
|
36336
|
+
{
|
|
36337
|
+
"type": {
|
|
36338
|
+
"text": "HelixBeforeCloseEvent"
|
|
36339
|
+
},
|
|
36340
|
+
"description": "Fired before the suggestions go, and cancelable.",
|
|
36341
|
+
"name": "helix-before-close",
|
|
36342
|
+
"reactProp": "onhelix-before-close",
|
|
36343
|
+
"inheritedFrom": {
|
|
36344
|
+
"name": "HelixHeadlessFilterInput",
|
|
36345
|
+
"module": "src/filter-input/root/filter-input-root.ts"
|
|
36346
|
+
}
|
|
36347
|
+
},
|
|
36348
|
+
{
|
|
36349
|
+
"type": {
|
|
36350
|
+
"text": "HelixBeforeOpenEvent"
|
|
36351
|
+
},
|
|
36352
|
+
"description": "Fired before the suggestions show, and cancelable.",
|
|
36353
|
+
"name": "helix-before-open",
|
|
36354
|
+
"reactProp": "onhelix-before-open",
|
|
36355
|
+
"inheritedFrom": {
|
|
36356
|
+
"name": "HelixHeadlessFilterInput",
|
|
36357
|
+
"module": "src/filter-input/root/filter-input-root.ts"
|
|
36358
|
+
}
|
|
36359
|
+
},
|
|
36360
|
+
{
|
|
36361
|
+
"type": {
|
|
36362
|
+
"text": "Event"
|
|
36363
|
+
},
|
|
36364
|
+
"description": "Says the panel moved, carrying `newState` and `oldState`.",
|
|
36365
|
+
"name": "toggle",
|
|
36366
|
+
"reactProp": "ontoggle",
|
|
36367
|
+
"inheritedFrom": {
|
|
36368
|
+
"name": "HelixHeadlessFilterInput",
|
|
36369
|
+
"module": "src/filter-input/root/filter-input-root.ts"
|
|
36370
|
+
}
|
|
35650
36371
|
}
|
|
35651
36372
|
],
|
|
35652
36373
|
"slots": [
|
|
@@ -35666,6 +36387,14 @@
|
|
|
35666
36387
|
"module": "src/filter-input/root/filter-input-root.ts"
|
|
35667
36388
|
}
|
|
35668
36389
|
},
|
|
36390
|
+
{
|
|
36391
|
+
"description": "What could be typed next, as `Option`s, and `Option.Group`s of them.",
|
|
36392
|
+
"name": "suggestions",
|
|
36393
|
+
"inheritedFrom": {
|
|
36394
|
+
"name": "HelixHeadlessFilterInput",
|
|
36395
|
+
"module": "src/filter-input/root/filter-input-root.ts"
|
|
36396
|
+
}
|
|
36397
|
+
},
|
|
35669
36398
|
{
|
|
35670
36399
|
"description": "What is already narrowing the results, as `Tag`s.",
|
|
35671
36400
|
"name": "tags",
|
|
@@ -35725,13 +36454,21 @@
|
|
|
35725
36454
|
}
|
|
35726
36455
|
},
|
|
35727
36456
|
{
|
|
35728
|
-
"description": "How many tokens did not fit.",
|
|
36457
|
+
"description": "How many tokens did not fit. A `<button>` with `expandable`, a `<span>` without it.",
|
|
35729
36458
|
"name": "rest",
|
|
35730
36459
|
"inheritedFrom": {
|
|
35731
36460
|
"name": "HelixHeadlessFilterInput",
|
|
35732
36461
|
"module": "src/filter-input/root/filter-input-root.ts"
|
|
35733
36462
|
}
|
|
35734
36463
|
},
|
|
36464
|
+
{
|
|
36465
|
+
"description": "The floating panel the suggestions sit in.",
|
|
36466
|
+
"name": "surface",
|
|
36467
|
+
"inheritedFrom": {
|
|
36468
|
+
"name": "HelixHeadlessFilterInput",
|
|
36469
|
+
"module": "src/filter-input/root/filter-input-root.ts"
|
|
36470
|
+
}
|
|
36471
|
+
},
|
|
35735
36472
|
{
|
|
35736
36473
|
"description": "The row the tokens sit in.",
|
|
35737
36474
|
"name": "tags",
|