@fusion.dev/helix-headless 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 +676 -44
- package/dist/combobox/root/combobox-root.d.ts +1 -1
- package/dist/combobox/root/combobox-root.js +2 -1
- package/dist/element-events.generated.js +8 -1
- package/dist/filter-input/root/filter-input-root.d.ts +146 -3
- package/dist/filter-input/root/filter-input-root.js +173 -4
- package/package.json +5 -5
- package/types/jsx.d.ts +226 -4
- package/types/vue.d.ts +50 -1
package/custom-elements.json
CHANGED
|
@@ -13878,7 +13878,7 @@
|
|
|
13878
13878
|
"name": "listbox-search-field"
|
|
13879
13879
|
},
|
|
13880
13880
|
{
|
|
13881
|
-
"description": "The count of choices held beyond `max-tags`.",
|
|
13881
|
+
"description": "The count of choices held beyond `max-tags`. A `<button>` with `expandable`, a `<span>` without it.",
|
|
13882
13882
|
"name": "rest"
|
|
13883
13883
|
},
|
|
13884
13884
|
{
|
|
@@ -14432,6 +14432,48 @@
|
|
|
14432
14432
|
"text": "toggleOpen() => boolean"
|
|
14433
14433
|
}
|
|
14434
14434
|
},
|
|
14435
|
+
{
|
|
14436
|
+
"kind": "field",
|
|
14437
|
+
"name": "collapseLabel",
|
|
14438
|
+
"type": {
|
|
14439
|
+
"text": "string"
|
|
14440
|
+
},
|
|
14441
|
+
"default": "'Show fewer'",
|
|
14442
|
+
"description": "What the control says once everything is showing.",
|
|
14443
|
+
"attribute": "collapse-label",
|
|
14444
|
+
"inheritedFrom": {
|
|
14445
|
+
"name": "MixinTokens",
|
|
14446
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
14447
|
+
}
|
|
14448
|
+
},
|
|
14449
|
+
{
|
|
14450
|
+
"kind": "field",
|
|
14451
|
+
"name": "expandable",
|
|
14452
|
+
"type": {
|
|
14453
|
+
"text": "boolean"
|
|
14454
|
+
},
|
|
14455
|
+
"default": "false",
|
|
14456
|
+
"description": "Whether the count is a control that shows the rest.",
|
|
14457
|
+
"attribute": "expandable",
|
|
14458
|
+
"inheritedFrom": {
|
|
14459
|
+
"name": "MixinTokens",
|
|
14460
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
14461
|
+
}
|
|
14462
|
+
},
|
|
14463
|
+
{
|
|
14464
|
+
"kind": "field",
|
|
14465
|
+
"name": "expandLabel",
|
|
14466
|
+
"type": {
|
|
14467
|
+
"text": "string"
|
|
14468
|
+
},
|
|
14469
|
+
"default": "'Show all'",
|
|
14470
|
+
"description": "What the collapsed count is called, since `+3` names nothing.",
|
|
14471
|
+
"attribute": "expand-label",
|
|
14472
|
+
"inheritedFrom": {
|
|
14473
|
+
"name": "MixinTokens",
|
|
14474
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
14475
|
+
}
|
|
14476
|
+
},
|
|
14435
14477
|
{
|
|
14436
14478
|
"kind": "field",
|
|
14437
14479
|
"name": "maxTags",
|
|
@@ -14446,6 +14488,44 @@
|
|
|
14446
14488
|
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
14447
14489
|
}
|
|
14448
14490
|
},
|
|
14491
|
+
{
|
|
14492
|
+
"kind": "field",
|
|
14493
|
+
"name": "expanded",
|
|
14494
|
+
"type": {
|
|
14495
|
+
"text": "boolean"
|
|
14496
|
+
},
|
|
14497
|
+
"privacy": "private",
|
|
14498
|
+
"default": "false",
|
|
14499
|
+
"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.",
|
|
14500
|
+
"inheritedFrom": {
|
|
14501
|
+
"name": "MixinTokens",
|
|
14502
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
14503
|
+
}
|
|
14504
|
+
},
|
|
14505
|
+
{
|
|
14506
|
+
"kind": "field",
|
|
14507
|
+
"name": "shownLimit",
|
|
14508
|
+
"type": {
|
|
14509
|
+
"text": "number"
|
|
14510
|
+
},
|
|
14511
|
+
"privacy": "protected",
|
|
14512
|
+
"readonly": true,
|
|
14513
|
+
"inheritedFrom": {
|
|
14514
|
+
"name": "MixinTokens",
|
|
14515
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
14516
|
+
}
|
|
14517
|
+
},
|
|
14518
|
+
{
|
|
14519
|
+
"kind": "field",
|
|
14520
|
+
"name": "toggleExpanded",
|
|
14521
|
+
"privacy": "private",
|
|
14522
|
+
"readonly": true,
|
|
14523
|
+
"description": "Turns the cap off and on, which is all expanding is.",
|
|
14524
|
+
"inheritedFrom": {
|
|
14525
|
+
"name": "MixinTokens",
|
|
14526
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
14527
|
+
}
|
|
14528
|
+
},
|
|
14449
14529
|
{
|
|
14450
14530
|
"kind": "method",
|
|
14451
14531
|
"name": "renderTokenRow",
|
|
@@ -14474,6 +14554,29 @@
|
|
|
14474
14554
|
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
14475
14555
|
}
|
|
14476
14556
|
},
|
|
14557
|
+
{
|
|
14558
|
+
"kind": "method",
|
|
14559
|
+
"name": "renderRest",
|
|
14560
|
+
"privacy": "private",
|
|
14561
|
+
"return": {
|
|
14562
|
+
"type": {
|
|
14563
|
+
"text": "TemplateResult | typeof nothing"
|
|
14564
|
+
}
|
|
14565
|
+
},
|
|
14566
|
+
"parameters": [
|
|
14567
|
+
{
|
|
14568
|
+
"name": "over",
|
|
14569
|
+
"type": {
|
|
14570
|
+
"text": "number"
|
|
14571
|
+
}
|
|
14572
|
+
}
|
|
14573
|
+
],
|
|
14574
|
+
"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.",
|
|
14575
|
+
"inheritedFrom": {
|
|
14576
|
+
"name": "MixinTokens",
|
|
14577
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
14578
|
+
}
|
|
14579
|
+
},
|
|
14477
14580
|
{
|
|
14478
14581
|
"kind": "method",
|
|
14479
14582
|
"name": "hideOverflow",
|
|
@@ -15385,6 +15488,45 @@
|
|
|
15385
15488
|
"module": "src/mixins/mixin-controller-open/mixin-controller-open.ts"
|
|
15386
15489
|
}
|
|
15387
15490
|
},
|
|
15491
|
+
{
|
|
15492
|
+
"name": "collapse-label",
|
|
15493
|
+
"type": {
|
|
15494
|
+
"text": "string"
|
|
15495
|
+
},
|
|
15496
|
+
"default": "'Show fewer'",
|
|
15497
|
+
"description": "What the control says once everything is showing.",
|
|
15498
|
+
"fieldName": "collapseLabel",
|
|
15499
|
+
"inheritedFrom": {
|
|
15500
|
+
"name": "MixinTokens",
|
|
15501
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
15502
|
+
}
|
|
15503
|
+
},
|
|
15504
|
+
{
|
|
15505
|
+
"name": "expandable",
|
|
15506
|
+
"type": {
|
|
15507
|
+
"text": "boolean"
|
|
15508
|
+
},
|
|
15509
|
+
"default": "false",
|
|
15510
|
+
"description": "Whether the count is a control that shows the rest.",
|
|
15511
|
+
"fieldName": "expandable",
|
|
15512
|
+
"inheritedFrom": {
|
|
15513
|
+
"name": "MixinTokens",
|
|
15514
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
15515
|
+
}
|
|
15516
|
+
},
|
|
15517
|
+
{
|
|
15518
|
+
"name": "expand-label",
|
|
15519
|
+
"type": {
|
|
15520
|
+
"text": "string"
|
|
15521
|
+
},
|
|
15522
|
+
"default": "'Show all'",
|
|
15523
|
+
"description": "What the collapsed count is called, since `+3` names nothing.",
|
|
15524
|
+
"fieldName": "expandLabel",
|
|
15525
|
+
"inheritedFrom": {
|
|
15526
|
+
"name": "MixinTokens",
|
|
15527
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
15528
|
+
}
|
|
15529
|
+
},
|
|
15388
15530
|
{
|
|
15389
15531
|
"name": "max-tags",
|
|
15390
15532
|
"type": {
|
|
@@ -26496,7 +26638,7 @@
|
|
|
26496
26638
|
"declarations": [
|
|
26497
26639
|
{
|
|
26498
26640
|
"kind": "class",
|
|
26499
|
-
"description": "**The tokens are the consumer's own elements, slotted.** What a filter narrows\nby belongs to the consumer's model rather than to this element: a facet with a\nprefix, a saved query, a range. So they are slotted rather than rendered from\na list of strings, and removing one is a request this element makes rather\nthan a change it applies. Combobox is the other way round, and that is the\ndifference between the two: its tokens are a view of a selection it owns,\ndrawn from options it was handed.\n\n**`value` is the text being typed, not the tokens**, which is what makes this\na field a consumer can listen to. Every keystroke announces `input` with the\ntext on the element, so a table narrows as the reader types. The tokens need\nno reporting back, being markup the consumer already holds.\n\nBackspace on an empty field asks the last token to go, through the same\n`helix-dismiss` its own remove control fires, so a consumer who handled the\npointer has already handled the keyboard.",
|
|
26641
|
+
"description": "**The tokens are the consumer's own elements, slotted.** What a filter narrows\nby belongs to the consumer's model rather than to this element: a facet with a\nprefix, a saved query, a range. So they are slotted rather than rendered from\na list of strings, and removing one is a request this element makes rather\nthan a change it applies. Combobox is the other way round, and that is the\ndifference between the two: its tokens are a view of a selection it owns,\ndrawn from options it was handed.\n\n**`value` is the text being typed, not the tokens**, which is what makes this\na field a consumer can listen to. Every keystroke announces `input` with the\ntext on the element, so a table narrows as the reader types. The tokens need\nno reporting back, being markup the consumer already holds.\n\nBackspace on an empty field asks the last token to go, through the same\n`helix-dismiss` its own remove control fires, so a consumer who handled the\npointer has already handled the keyboard.\n\n**It can suggest what to type next, and it never learns the grammar.** Slot\n`helix-option` elements into `suggestions` and the field shows them, moves\nthrough them with the arrows, and lets Enter press one; the option fires its\nown `helix-select` and the consumer decides what choosing meant. Deciding\n*what* to suggest is theirs too: keys before a colon and values after it are\nthe same panel with different contents, which is all a two-level filter is,\nand the parse that tells them apart belongs where the domain does.\n\n**The panel opens when there is something in it and closes when there is\nnot**, rather than on a choice. A reader who picks a key wants its values\nnext, and closing on the choice would shut the panel between two renders. Use\n`selectionStart` and `setSelectionRange` to write a completion back and put\nthe caret after it, or the next parse reads the wrong term.",
|
|
26500
26642
|
"name": "HelixHeadlessFilterInput",
|
|
26501
26643
|
"cssParts": [
|
|
26502
26644
|
{
|
|
@@ -26524,9 +26666,13 @@
|
|
|
26524
26666
|
"name": "label"
|
|
26525
26667
|
},
|
|
26526
26668
|
{
|
|
26527
|
-
"description": "How many tokens did not fit.",
|
|
26669
|
+
"description": "How many tokens did not fit. A `<button>` with `expandable`, a `<span>` without it.",
|
|
26528
26670
|
"name": "rest"
|
|
26529
26671
|
},
|
|
26672
|
+
{
|
|
26673
|
+
"description": "The floating panel the suggestions sit in.",
|
|
26674
|
+
"name": "surface"
|
|
26675
|
+
},
|
|
26530
26676
|
{
|
|
26531
26677
|
"description": "The row the tokens sit in.",
|
|
26532
26678
|
"name": "tags"
|
|
@@ -26541,6 +26687,10 @@
|
|
|
26541
26687
|
"description": "Before the text, for a search icon.",
|
|
26542
26688
|
"name": "start"
|
|
26543
26689
|
},
|
|
26690
|
+
{
|
|
26691
|
+
"description": "What could be typed next, as `Option`s, and `Option.Group`s of them.",
|
|
26692
|
+
"name": "suggestions"
|
|
26693
|
+
},
|
|
26544
26694
|
{
|
|
26545
26695
|
"description": "What is already narrowing the results, as `Tag`s.",
|
|
26546
26696
|
"name": "tags"
|
|
@@ -26609,6 +26759,43 @@
|
|
|
26609
26759
|
"default": "0",
|
|
26610
26760
|
"description": "How many tokens did not fit, which is what the row's count renders."
|
|
26611
26761
|
},
|
|
26762
|
+
{
|
|
26763
|
+
"kind": "field",
|
|
26764
|
+
"name": "activeAt",
|
|
26765
|
+
"type": {
|
|
26766
|
+
"text": "number"
|
|
26767
|
+
},
|
|
26768
|
+
"privacy": "private",
|
|
26769
|
+
"default": "-1",
|
|
26770
|
+
"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."
|
|
26771
|
+
},
|
|
26772
|
+
{
|
|
26773
|
+
"kind": "field",
|
|
26774
|
+
"name": "suggesting",
|
|
26775
|
+
"type": {
|
|
26776
|
+
"text": "boolean"
|
|
26777
|
+
},
|
|
26778
|
+
"privacy": "private",
|
|
26779
|
+
"default": "false",
|
|
26780
|
+
"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."
|
|
26781
|
+
},
|
|
26782
|
+
{
|
|
26783
|
+
"kind": "field",
|
|
26784
|
+
"name": "dismissed",
|
|
26785
|
+
"type": {
|
|
26786
|
+
"text": "boolean"
|
|
26787
|
+
},
|
|
26788
|
+
"privacy": "private",
|
|
26789
|
+
"default": "false",
|
|
26790
|
+
"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."
|
|
26791
|
+
},
|
|
26792
|
+
{
|
|
26793
|
+
"kind": "field",
|
|
26794
|
+
"name": "panel",
|
|
26795
|
+
"privacy": "protected",
|
|
26796
|
+
"readonly": true,
|
|
26797
|
+
"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\"]'), })"
|
|
26798
|
+
},
|
|
26612
26799
|
{
|
|
26613
26800
|
"kind": "field",
|
|
26614
26801
|
"name": "releaseCaret",
|
|
@@ -26658,56 +26845,111 @@
|
|
|
26658
26845
|
},
|
|
26659
26846
|
{
|
|
26660
26847
|
"kind": "field",
|
|
26661
|
-
"name": "
|
|
26848
|
+
"name": "suggestions",
|
|
26849
|
+
"type": {
|
|
26850
|
+
"text": "SuggestionOption[]"
|
|
26851
|
+
},
|
|
26662
26852
|
"privacy": "private",
|
|
26663
|
-
"
|
|
26664
|
-
"
|
|
26853
|
+
"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.",
|
|
26854
|
+
"readonly": true
|
|
26665
26855
|
},
|
|
26666
26856
|
{
|
|
26667
26857
|
"kind": "field",
|
|
26668
|
-
"name": "
|
|
26669
|
-
"
|
|
26670
|
-
|
|
26671
|
-
|
|
26858
|
+
"name": "selectionDirection",
|
|
26859
|
+
"type": {
|
|
26860
|
+
"text": "'backward' | 'forward' | 'none'"
|
|
26861
|
+
},
|
|
26862
|
+
"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.",
|
|
26863
|
+
"readonly": true
|
|
26672
26864
|
},
|
|
26673
26865
|
{
|
|
26674
26866
|
"kind": "field",
|
|
26675
|
-
"name": "
|
|
26867
|
+
"name": "selectionEnd",
|
|
26868
|
+
"type": {
|
|
26869
|
+
"text": "number"
|
|
26870
|
+
},
|
|
26871
|
+
"description": "Where the selection ends, which is the caret when nothing is selected.",
|
|
26872
|
+
"readonly": true
|
|
26873
|
+
},
|
|
26874
|
+
{
|
|
26875
|
+
"kind": "field",
|
|
26876
|
+
"name": "selectionStart",
|
|
26877
|
+
"type": {
|
|
26878
|
+
"text": "number"
|
|
26879
|
+
},
|
|
26880
|
+
"description": "Where the selection starts, which is the caret when nothing is selected.",
|
|
26881
|
+
"readonly": true
|
|
26882
|
+
},
|
|
26883
|
+
{
|
|
26884
|
+
"kind": "method",
|
|
26885
|
+
"name": "setSelectionRange",
|
|
26886
|
+
"return": {
|
|
26887
|
+
"type": {
|
|
26888
|
+
"text": "void"
|
|
26889
|
+
}
|
|
26890
|
+
},
|
|
26891
|
+
"parameters": [
|
|
26892
|
+
{
|
|
26893
|
+
"name": "start",
|
|
26894
|
+
"type": {
|
|
26895
|
+
"text": "number"
|
|
26896
|
+
}
|
|
26897
|
+
},
|
|
26898
|
+
{
|
|
26899
|
+
"name": "end",
|
|
26900
|
+
"type": {
|
|
26901
|
+
"text": "number"
|
|
26902
|
+
}
|
|
26903
|
+
},
|
|
26904
|
+
{
|
|
26905
|
+
"name": "direction",
|
|
26906
|
+
"optional": true,
|
|
26907
|
+
"type": {
|
|
26908
|
+
"text": "'backward' | 'forward' | 'none'"
|
|
26909
|
+
}
|
|
26910
|
+
}
|
|
26911
|
+
],
|
|
26912
|
+
"description": "Moves the caret, or selects a run of the text.",
|
|
26913
|
+
"type": {
|
|
26914
|
+
"text": "setSelectionRange(start: number, end: number, direction?: 'backward' | 'forward' | 'none') => void"
|
|
26915
|
+
}
|
|
26916
|
+
},
|
|
26917
|
+
{
|
|
26918
|
+
"kind": "field",
|
|
26919
|
+
"name": "handleInput",
|
|
26676
26920
|
"privacy": "private",
|
|
26677
26921
|
"readonly": true,
|
|
26678
|
-
"description": "
|
|
26922
|
+
"description": "Every keystroke, cancelable, and put back where it is refused.\n\nStopped for the reason `Input` gives: `input` is composed, so the inner\ncontrol's own would arrive beside the one the mixin announces and a consumer\nwould hear one keystroke twice, once carrying the value from before it."
|
|
26679
26923
|
},
|
|
26680
26924
|
{
|
|
26681
26925
|
"kind": "field",
|
|
26682
|
-
"name": "
|
|
26926
|
+
"name": "handleChange",
|
|
26683
26927
|
"privacy": "private",
|
|
26684
|
-
"readonly": true
|
|
26928
|
+
"readonly": true,
|
|
26929
|
+
"description": "Relayed, because `change` does not cross a shadow boundary on its own."
|
|
26685
26930
|
},
|
|
26686
26931
|
{
|
|
26687
26932
|
"kind": "field",
|
|
26688
|
-
"name": "
|
|
26933
|
+
"name": "handleClear",
|
|
26689
26934
|
"privacy": "private",
|
|
26690
26935
|
"readonly": true,
|
|
26691
|
-
"description": "
|
|
26936
|
+
"description": "Empties the text and gives the caret back.\n\nFocus returns to the input rather than staying on a button that is about to\ndisappear, which would otherwise land on the body."
|
|
26692
26937
|
},
|
|
26693
26938
|
{
|
|
26694
26939
|
"kind": "method",
|
|
26695
|
-
"name": "
|
|
26696
|
-
"privacy": "
|
|
26940
|
+
"name": "settleOpen",
|
|
26941
|
+
"privacy": "private",
|
|
26697
26942
|
"return": {
|
|
26698
26943
|
"type": {
|
|
26699
26944
|
"text": "void"
|
|
26700
26945
|
}
|
|
26701
26946
|
},
|
|
26702
|
-
"description": "
|
|
26703
|
-
"inheritedFrom": {
|
|
26704
|
-
"name": "MixinTokens",
|
|
26705
|
-
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
26706
|
-
}
|
|
26947
|
+
"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."
|
|
26707
26948
|
},
|
|
26708
26949
|
{
|
|
26709
26950
|
"kind": "method",
|
|
26710
|
-
"name": "
|
|
26951
|
+
"name": "move",
|
|
26952
|
+
"privacy": "private",
|
|
26711
26953
|
"return": {
|
|
26712
26954
|
"type": {
|
|
26713
26955
|
"text": "void"
|
|
@@ -26715,33 +26957,308 @@
|
|
|
26715
26957
|
},
|
|
26716
26958
|
"parameters": [
|
|
26717
26959
|
{
|
|
26718
|
-
"name": "
|
|
26719
|
-
"optional": true,
|
|
26960
|
+
"name": "by",
|
|
26720
26961
|
"type": {
|
|
26721
|
-
"text": "
|
|
26962
|
+
"text": "number"
|
|
26722
26963
|
}
|
|
26723
26964
|
}
|
|
26724
26965
|
],
|
|
26725
|
-
"description": "
|
|
26726
|
-
"type": {
|
|
26727
|
-
"text": "focus(options?: FocusOptions) => void"
|
|
26728
|
-
}
|
|
26966
|
+
"description": "Moves the highlight, wrapping, and opens the panel if it was closed."
|
|
26729
26967
|
},
|
|
26730
26968
|
{
|
|
26731
26969
|
"kind": "field",
|
|
26732
|
-
"name": "
|
|
26733
|
-
"
|
|
26734
|
-
|
|
26735
|
-
|
|
26736
|
-
|
|
26737
|
-
"
|
|
26738
|
-
"
|
|
26739
|
-
"
|
|
26740
|
-
|
|
26741
|
-
"
|
|
26742
|
-
|
|
26743
|
-
|
|
26744
|
-
|
|
26970
|
+
"name": "handleKeydown",
|
|
26971
|
+
"privacy": "private",
|
|
26972
|
+
"readonly": true
|
|
26973
|
+
},
|
|
26974
|
+
{
|
|
26975
|
+
"kind": "method",
|
|
26976
|
+
"name": "refreshSuggesting",
|
|
26977
|
+
"privacy": "private",
|
|
26978
|
+
"return": {
|
|
26979
|
+
"type": {
|
|
26980
|
+
"text": "void"
|
|
26981
|
+
}
|
|
26982
|
+
},
|
|
26983
|
+
"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."
|
|
26984
|
+
},
|
|
26985
|
+
{
|
|
26986
|
+
"kind": "field",
|
|
26987
|
+
"name": "handleSuggestions",
|
|
26988
|
+
"privacy": "private",
|
|
26989
|
+
"readonly": true,
|
|
26990
|
+
"description": "The panel again, whenever what is in it changes."
|
|
26991
|
+
},
|
|
26992
|
+
{
|
|
26993
|
+
"kind": "field",
|
|
26994
|
+
"name": "handleFocusIn",
|
|
26995
|
+
"privacy": "private",
|
|
26996
|
+
"readonly": true,
|
|
26997
|
+
"description": "Focus arriving in the field is a reader asking what they can type."
|
|
26998
|
+
},
|
|
26999
|
+
{
|
|
27000
|
+
"kind": "field",
|
|
27001
|
+
"name": "handleFocusOut",
|
|
27002
|
+
"privacy": "private",
|
|
27003
|
+
"readonly": true,
|
|
27004
|
+
"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."
|
|
27005
|
+
},
|
|
27006
|
+
{
|
|
27007
|
+
"kind": "field",
|
|
27008
|
+
"name": "handleTokens",
|
|
27009
|
+
"privacy": "private",
|
|
27010
|
+
"readonly": true,
|
|
27011
|
+
"description": "The row again, whenever what is in it changes."
|
|
27012
|
+
},
|
|
27013
|
+
{
|
|
27014
|
+
"kind": "method",
|
|
27015
|
+
"name": "removeLastToken",
|
|
27016
|
+
"privacy": "protected",
|
|
27017
|
+
"return": {
|
|
27018
|
+
"type": {
|
|
27019
|
+
"text": "void"
|
|
27020
|
+
}
|
|
27021
|
+
},
|
|
27022
|
+
"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.",
|
|
27023
|
+
"inheritedFrom": {
|
|
27024
|
+
"name": "MixinTokens",
|
|
27025
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
27026
|
+
}
|
|
27027
|
+
},
|
|
27028
|
+
{
|
|
27029
|
+
"kind": "method",
|
|
27030
|
+
"name": "markActive",
|
|
27031
|
+
"privacy": "private",
|
|
27032
|
+
"return": {
|
|
27033
|
+
"type": {
|
|
27034
|
+
"text": "void"
|
|
27035
|
+
}
|
|
27036
|
+
},
|
|
27037
|
+
"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."
|
|
27038
|
+
},
|
|
27039
|
+
{
|
|
27040
|
+
"kind": "method",
|
|
27041
|
+
"name": "focus",
|
|
27042
|
+
"return": {
|
|
27043
|
+
"type": {
|
|
27044
|
+
"text": "void"
|
|
27045
|
+
}
|
|
27046
|
+
},
|
|
27047
|
+
"parameters": [
|
|
27048
|
+
{
|
|
27049
|
+
"name": "options",
|
|
27050
|
+
"optional": true,
|
|
27051
|
+
"type": {
|
|
27052
|
+
"text": "FocusOptions"
|
|
27053
|
+
}
|
|
27054
|
+
}
|
|
27055
|
+
],
|
|
27056
|
+
"description": "Puts the caret in the field, the way a label pointing at one would.",
|
|
27057
|
+
"type": {
|
|
27058
|
+
"text": "focus(options?: FocusOptions) => void"
|
|
27059
|
+
}
|
|
27060
|
+
},
|
|
27061
|
+
{
|
|
27062
|
+
"kind": "field",
|
|
27063
|
+
"name": "open",
|
|
27064
|
+
"type": {
|
|
27065
|
+
"text": "boolean"
|
|
27066
|
+
},
|
|
27067
|
+
"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.",
|
|
27068
|
+
"attribute": "open",
|
|
27069
|
+
"inheritedFrom": {
|
|
27070
|
+
"name": "MixinControllerOpen",
|
|
27071
|
+
"module": "src/mixins/mixin-controller-open/mixin-controller-open.ts"
|
|
27072
|
+
}
|
|
27073
|
+
},
|
|
27074
|
+
{
|
|
27075
|
+
"kind": "field",
|
|
27076
|
+
"name": "defaultOpen",
|
|
27077
|
+
"type": {
|
|
27078
|
+
"text": "boolean"
|
|
27079
|
+
},
|
|
27080
|
+
"default": "false",
|
|
27081
|
+
"description": "Initial open state for uncontrolled use, where nothing declared one.",
|
|
27082
|
+
"attribute": "default-open",
|
|
27083
|
+
"inheritedFrom": {
|
|
27084
|
+
"name": "MixinControllerOpen",
|
|
27085
|
+
"module": "src/mixins/mixin-controller-open/mixin-controller-open.ts"
|
|
27086
|
+
}
|
|
27087
|
+
},
|
|
27088
|
+
{
|
|
27089
|
+
"kind": "field",
|
|
27090
|
+
"name": "openState",
|
|
27091
|
+
"type": {
|
|
27092
|
+
"text": "boolean | undefined"
|
|
27093
|
+
},
|
|
27094
|
+
"privacy": "private",
|
|
27095
|
+
"default": "undefined",
|
|
27096
|
+
"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.",
|
|
27097
|
+
"inheritedFrom": {
|
|
27098
|
+
"name": "MixinControllerOpen",
|
|
27099
|
+
"module": "src/mixins/mixin-controller-open/mixin-controller-open.ts"
|
|
27100
|
+
}
|
|
27101
|
+
},
|
|
27102
|
+
{
|
|
27103
|
+
"kind": "method",
|
|
27104
|
+
"name": "requestOpen",
|
|
27105
|
+
"return": {
|
|
27106
|
+
"type": {
|
|
27107
|
+
"text": "boolean"
|
|
27108
|
+
}
|
|
27109
|
+
},
|
|
27110
|
+
"parameters": [
|
|
27111
|
+
{
|
|
27112
|
+
"name": "next",
|
|
27113
|
+
"type": {
|
|
27114
|
+
"text": "boolean"
|
|
27115
|
+
}
|
|
27116
|
+
}
|
|
27117
|
+
],
|
|
27118
|
+
"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.",
|
|
27119
|
+
"inheritedFrom": {
|
|
27120
|
+
"name": "MixinControllerOpen",
|
|
27121
|
+
"module": "src/mixins/mixin-controller-open/mixin-controller-open.ts"
|
|
27122
|
+
},
|
|
27123
|
+
"type": {
|
|
27124
|
+
"text": "requestOpen(next: boolean) => boolean"
|
|
27125
|
+
}
|
|
27126
|
+
},
|
|
27127
|
+
{
|
|
27128
|
+
"kind": "method",
|
|
27129
|
+
"name": "announceToggle",
|
|
27130
|
+
"privacy": "private",
|
|
27131
|
+
"return": {
|
|
27132
|
+
"type": {
|
|
27133
|
+
"text": "void"
|
|
27134
|
+
}
|
|
27135
|
+
},
|
|
27136
|
+
"parameters": [
|
|
27137
|
+
{
|
|
27138
|
+
"name": "open",
|
|
27139
|
+
"type": {
|
|
27140
|
+
"text": "boolean"
|
|
27141
|
+
}
|
|
27142
|
+
}
|
|
27143
|
+
],
|
|
27144
|
+
"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.",
|
|
27145
|
+
"inheritedFrom": {
|
|
27146
|
+
"name": "MixinControllerOpen",
|
|
27147
|
+
"module": "src/mixins/mixin-controller-open/mixin-controller-open.ts"
|
|
27148
|
+
}
|
|
27149
|
+
},
|
|
27150
|
+
{
|
|
27151
|
+
"kind": "method",
|
|
27152
|
+
"name": "toggleOpen",
|
|
27153
|
+
"return": {
|
|
27154
|
+
"type": {
|
|
27155
|
+
"text": "boolean"
|
|
27156
|
+
}
|
|
27157
|
+
},
|
|
27158
|
+
"description": "Requests the opposite of the current state.",
|
|
27159
|
+
"inheritedFrom": {
|
|
27160
|
+
"name": "MixinControllerOpen",
|
|
27161
|
+
"module": "src/mixins/mixin-controller-open/mixin-controller-open.ts"
|
|
27162
|
+
},
|
|
27163
|
+
"type": {
|
|
27164
|
+
"text": "toggleOpen() => boolean"
|
|
27165
|
+
}
|
|
27166
|
+
},
|
|
27167
|
+
{
|
|
27168
|
+
"kind": "field",
|
|
27169
|
+
"name": "collapseLabel",
|
|
27170
|
+
"type": {
|
|
27171
|
+
"text": "string"
|
|
27172
|
+
},
|
|
27173
|
+
"default": "'Show fewer'",
|
|
27174
|
+
"description": "What the control says once everything is showing.",
|
|
27175
|
+
"attribute": "collapse-label",
|
|
27176
|
+
"inheritedFrom": {
|
|
27177
|
+
"name": "MixinTokens",
|
|
27178
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
27179
|
+
}
|
|
27180
|
+
},
|
|
27181
|
+
{
|
|
27182
|
+
"kind": "field",
|
|
27183
|
+
"name": "expandable",
|
|
27184
|
+
"type": {
|
|
27185
|
+
"text": "boolean"
|
|
27186
|
+
},
|
|
27187
|
+
"default": "false",
|
|
27188
|
+
"description": "Whether the count is a control that shows the rest.",
|
|
27189
|
+
"attribute": "expandable",
|
|
27190
|
+
"inheritedFrom": {
|
|
27191
|
+
"name": "MixinTokens",
|
|
27192
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
27193
|
+
}
|
|
27194
|
+
},
|
|
27195
|
+
{
|
|
27196
|
+
"kind": "field",
|
|
27197
|
+
"name": "expandLabel",
|
|
27198
|
+
"type": {
|
|
27199
|
+
"text": "string"
|
|
27200
|
+
},
|
|
27201
|
+
"default": "'Show all'",
|
|
27202
|
+
"description": "What the collapsed count is called, since `+3` names nothing.",
|
|
27203
|
+
"attribute": "expand-label",
|
|
27204
|
+
"inheritedFrom": {
|
|
27205
|
+
"name": "MixinTokens",
|
|
27206
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
27207
|
+
}
|
|
27208
|
+
},
|
|
27209
|
+
{
|
|
27210
|
+
"kind": "field",
|
|
27211
|
+
"name": "maxTags",
|
|
27212
|
+
"type": {
|
|
27213
|
+
"text": "number"
|
|
27214
|
+
},
|
|
27215
|
+
"default": "0",
|
|
27216
|
+
"description": "How many tokens to show before the rest become a count.",
|
|
27217
|
+
"attribute": "max-tags",
|
|
27218
|
+
"inheritedFrom": {
|
|
27219
|
+
"name": "MixinTokens",
|
|
27220
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
27221
|
+
}
|
|
27222
|
+
},
|
|
27223
|
+
{
|
|
27224
|
+
"kind": "field",
|
|
27225
|
+
"name": "expanded",
|
|
27226
|
+
"type": {
|
|
27227
|
+
"text": "boolean"
|
|
27228
|
+
},
|
|
27229
|
+
"privacy": "private",
|
|
27230
|
+
"default": "false",
|
|
27231
|
+
"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.",
|
|
27232
|
+
"inheritedFrom": {
|
|
27233
|
+
"name": "MixinTokens",
|
|
27234
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
27235
|
+
}
|
|
27236
|
+
},
|
|
27237
|
+
{
|
|
27238
|
+
"kind": "field",
|
|
27239
|
+
"name": "shownLimit",
|
|
27240
|
+
"type": {
|
|
27241
|
+
"text": "number"
|
|
27242
|
+
},
|
|
27243
|
+
"privacy": "protected",
|
|
27244
|
+
"readonly": true,
|
|
27245
|
+
"inheritedFrom": {
|
|
27246
|
+
"name": "MixinTokens",
|
|
27247
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
27248
|
+
}
|
|
27249
|
+
},
|
|
27250
|
+
{
|
|
27251
|
+
"kind": "field",
|
|
27252
|
+
"name": "toggleExpanded",
|
|
27253
|
+
"privacy": "private",
|
|
27254
|
+
"readonly": true,
|
|
27255
|
+
"description": "Turns the cap off and on, which is all expanding is.",
|
|
27256
|
+
"inheritedFrom": {
|
|
27257
|
+
"name": "MixinTokens",
|
|
27258
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
27259
|
+
}
|
|
27260
|
+
},
|
|
27261
|
+
{
|
|
26745
27262
|
"kind": "method",
|
|
26746
27263
|
"name": "renderTokenRow",
|
|
26747
27264
|
"privacy": "protected",
|
|
@@ -26769,6 +27286,29 @@
|
|
|
26769
27286
|
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
26770
27287
|
}
|
|
26771
27288
|
},
|
|
27289
|
+
{
|
|
27290
|
+
"kind": "method",
|
|
27291
|
+
"name": "renderRest",
|
|
27292
|
+
"privacy": "private",
|
|
27293
|
+
"return": {
|
|
27294
|
+
"type": {
|
|
27295
|
+
"text": "TemplateResult | typeof nothing"
|
|
27296
|
+
}
|
|
27297
|
+
},
|
|
27298
|
+
"parameters": [
|
|
27299
|
+
{
|
|
27300
|
+
"name": "over",
|
|
27301
|
+
"type": {
|
|
27302
|
+
"text": "number"
|
|
27303
|
+
}
|
|
27304
|
+
}
|
|
27305
|
+
],
|
|
27306
|
+
"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.",
|
|
27307
|
+
"inheritedFrom": {
|
|
27308
|
+
"name": "MixinTokens",
|
|
27309
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
27310
|
+
}
|
|
27311
|
+
},
|
|
26772
27312
|
{
|
|
26773
27313
|
"kind": "method",
|
|
26774
27314
|
"name": "hideOverflow",
|
|
@@ -27487,6 +28027,22 @@
|
|
|
27487
28027
|
"name": "helix-before-change",
|
|
27488
28028
|
"reactProp": "onhelix-before-change"
|
|
27489
28029
|
},
|
|
28030
|
+
{
|
|
28031
|
+
"type": {
|
|
28032
|
+
"text": "HelixBeforeCloseEvent"
|
|
28033
|
+
},
|
|
28034
|
+
"description": "Fired before the suggestions go, and cancelable.",
|
|
28035
|
+
"name": "helix-before-close",
|
|
28036
|
+
"reactProp": "onhelix-before-close"
|
|
28037
|
+
},
|
|
28038
|
+
{
|
|
28039
|
+
"type": {
|
|
28040
|
+
"text": "HelixBeforeOpenEvent"
|
|
28041
|
+
},
|
|
28042
|
+
"description": "Fired before the suggestions show, and cancelable.",
|
|
28043
|
+
"name": "helix-before-open",
|
|
28044
|
+
"reactProp": "onhelix-before-open"
|
|
28045
|
+
},
|
|
27490
28046
|
{
|
|
27491
28047
|
"name": "input",
|
|
27492
28048
|
"type": {
|
|
@@ -27498,6 +28054,14 @@
|
|
|
27498
28054
|
"module": "src/mixins/mixin-controller-value/mixin-controller-value.ts"
|
|
27499
28055
|
},
|
|
27500
28056
|
"reactProp": "oninput"
|
|
28057
|
+
},
|
|
28058
|
+
{
|
|
28059
|
+
"type": {
|
|
28060
|
+
"text": "Event"
|
|
28061
|
+
},
|
|
28062
|
+
"description": "Says the panel moved, carrying `newState` and `oldState`.",
|
|
28063
|
+
"name": "toggle",
|
|
28064
|
+
"reactProp": "ontoggle"
|
|
27501
28065
|
}
|
|
27502
28066
|
],
|
|
27503
28067
|
"attributes": [
|
|
@@ -27528,6 +28092,70 @@
|
|
|
27528
28092
|
"description": "Shown while the field is empty.\n\nNot a label: it goes when typing starts.",
|
|
27529
28093
|
"fieldName": "placeholder"
|
|
27530
28094
|
},
|
|
28095
|
+
{
|
|
28096
|
+
"name": "open",
|
|
28097
|
+
"type": {
|
|
28098
|
+
"text": "boolean"
|
|
28099
|
+
},
|
|
28100
|
+
"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.",
|
|
28101
|
+
"fieldName": "open",
|
|
28102
|
+
"inheritedFrom": {
|
|
28103
|
+
"name": "MixinControllerOpen",
|
|
28104
|
+
"module": "src/mixins/mixin-controller-open/mixin-controller-open.ts"
|
|
28105
|
+
}
|
|
28106
|
+
},
|
|
28107
|
+
{
|
|
28108
|
+
"name": "default-open",
|
|
28109
|
+
"type": {
|
|
28110
|
+
"text": "boolean"
|
|
28111
|
+
},
|
|
28112
|
+
"default": "false",
|
|
28113
|
+
"description": "Initial open state for uncontrolled use, where nothing declared one.",
|
|
28114
|
+
"fieldName": "defaultOpen",
|
|
28115
|
+
"inheritedFrom": {
|
|
28116
|
+
"name": "MixinControllerOpen",
|
|
28117
|
+
"module": "src/mixins/mixin-controller-open/mixin-controller-open.ts"
|
|
28118
|
+
}
|
|
28119
|
+
},
|
|
28120
|
+
{
|
|
28121
|
+
"name": "collapse-label",
|
|
28122
|
+
"type": {
|
|
28123
|
+
"text": "string"
|
|
28124
|
+
},
|
|
28125
|
+
"default": "'Show fewer'",
|
|
28126
|
+
"description": "What the control says once everything is showing.",
|
|
28127
|
+
"fieldName": "collapseLabel",
|
|
28128
|
+
"inheritedFrom": {
|
|
28129
|
+
"name": "MixinTokens",
|
|
28130
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
28131
|
+
}
|
|
28132
|
+
},
|
|
28133
|
+
{
|
|
28134
|
+
"name": "expandable",
|
|
28135
|
+
"type": {
|
|
28136
|
+
"text": "boolean"
|
|
28137
|
+
},
|
|
28138
|
+
"default": "false",
|
|
28139
|
+
"description": "Whether the count is a control that shows the rest.",
|
|
28140
|
+
"fieldName": "expandable",
|
|
28141
|
+
"inheritedFrom": {
|
|
28142
|
+
"name": "MixinTokens",
|
|
28143
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
28144
|
+
}
|
|
28145
|
+
},
|
|
28146
|
+
{
|
|
28147
|
+
"name": "expand-label",
|
|
28148
|
+
"type": {
|
|
28149
|
+
"text": "string"
|
|
28150
|
+
},
|
|
28151
|
+
"default": "'Show all'",
|
|
28152
|
+
"description": "What the collapsed count is called, since `+3` names nothing.",
|
|
28153
|
+
"fieldName": "expandLabel",
|
|
28154
|
+
"inheritedFrom": {
|
|
28155
|
+
"name": "MixinTokens",
|
|
28156
|
+
"module": "src/mixins/mixin-tokens/mixin-tokens.ts"
|
|
28157
|
+
}
|
|
28158
|
+
},
|
|
27531
28159
|
{
|
|
27532
28160
|
"name": "max-tags",
|
|
27533
28161
|
"type": {
|
|
@@ -27646,6 +28274,10 @@
|
|
|
27646
28274
|
}
|
|
27647
28275
|
],
|
|
27648
28276
|
"mixins": [
|
|
28277
|
+
{
|
|
28278
|
+
"name": "MixinControllerOpen",
|
|
28279
|
+
"package": "@fusion.dev/helix-core"
|
|
28280
|
+
},
|
|
27649
28281
|
{
|
|
27650
28282
|
"name": "MixinTokens",
|
|
27651
28283
|
"package": "@fusion.dev/helix-core"
|