@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
|
@@ -53,7 +53,14 @@ registerElementEvents({
|
|
|
53
53
|
'helix-drilldown': ['helix-select'],
|
|
54
54
|
'helix-drilldown-item': ['helix-select'],
|
|
55
55
|
'helix-file-input': ['change', 'helix-before-change', 'input'],
|
|
56
|
-
'helix-filter-input': [
|
|
56
|
+
'helix-filter-input': [
|
|
57
|
+
'change',
|
|
58
|
+
'helix-before-change',
|
|
59
|
+
'helix-before-close',
|
|
60
|
+
'helix-before-open',
|
|
61
|
+
'input',
|
|
62
|
+
'toggle',
|
|
63
|
+
],
|
|
57
64
|
'helix-heatmap': ['helix-resize'],
|
|
58
65
|
'helix-image': ['error', 'load'],
|
|
59
66
|
'helix-input': ['change', 'helix-before-change', 'input'],
|
|
@@ -102,4 +102,68 @@ opacity: 0.5;
|
|
|
102
102
|
box-shadow: none;
|
|
103
103
|
print-color-adjust: exact;
|
|
104
104
|
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
[part="surface"] {
|
|
108
|
+
background-color: var(--helix-color-surface-overlay);
|
|
109
|
+
border: var(--filter-input-border-width, var(--helix-border-floating)) solid
|
|
110
|
+
var(--filter-input-border-color, var(--helix-color-border));
|
|
111
|
+
border-radius: var(--helix-radii-sm);
|
|
112
|
+
box-shadow: var(--filter-input-shadow, var(--helix-shadow-floating));
|
|
113
|
+
box-sizing: border-box;
|
|
114
|
+
inline-size: var(--filter-input-panel-size, var(--floating-anchor-inline-size, 100%));
|
|
115
|
+
inset: auto;
|
|
116
|
+
margin: var(--helix-space-none);
|
|
117
|
+
|
|
118
|
+
max-block-size: var(--floating-available-block-size, 20rem);
|
|
119
|
+
min-inline-size: max-content;
|
|
120
|
+
overflow-y: auto;
|
|
121
|
+
padding-block: var(--helix-space-2xs);
|
|
122
|
+
padding-inline: var(--helix-space-none);
|
|
123
|
+
position: absolute;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
[part="surface"] {
|
|
127
|
+
--_travel: calc(var(--helix-space-2xs) * -1);
|
|
128
|
+
|
|
129
|
+
opacity: 0;
|
|
130
|
+
scale: 0.96;
|
|
131
|
+
transform: translateY(var(--_travel));
|
|
132
|
+
transition:
|
|
133
|
+
opacity var(--helix-duration-fast) var(--helix-easing-standard),
|
|
134
|
+
scale var(--helix-duration-fast) var(--helix-easing-emphasized),
|
|
135
|
+
transform var(--helix-duration-fast) var(--helix-easing-emphasized),
|
|
136
|
+
display var(--helix-duration-fast) allow-discrete,
|
|
137
|
+
overlay var(--helix-duration-fast) allow-discrete;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
[part="surface"][data-placement^="top"] {
|
|
141
|
+
--_travel: var(--helix-space-2xs);
|
|
142
|
+
|
|
143
|
+
transform-origin: var(--floating-arrow-x, 50%) 100%;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
[part="surface"][data-placement^="bottom"] {
|
|
147
|
+
transform-origin: var(--floating-arrow-x, 50%) 0;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
[part="surface"][data-placed] {
|
|
151
|
+
opacity: 1;
|
|
152
|
+
scale: 1;
|
|
153
|
+
transform: none;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
[part="surface"][hidden],
|
|
157
|
+
[part="surface"]:not(:popover-open) {
|
|
158
|
+
display: none;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
@media (prefers-reduced-motion: reduce) {
|
|
162
|
+
|
|
163
|
+
[part="surface"],
|
|
164
|
+
[part="surface"][data-placed] {
|
|
165
|
+
scale: 1;
|
|
166
|
+
transform: none;
|
|
167
|
+
transition: none;
|
|
168
|
+
}
|
|
105
169
|
}`);
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { HelixHeadlessFilterInput } from '@fusion.dev/helix-headless/filter-input';
|
|
2
2
|
import type { CSSResultGroup } from 'lit';
|
|
3
3
|
import '../../icon/index.js';
|
|
4
|
+
import '../../option/index.js';
|
|
4
5
|
/**
|
|
5
6
|
* @summary A field that narrows something else, beside what is already narrowing it.
|
|
6
7
|
*
|
|
@@ -14,6 +15,13 @@ import '../../icon/index.js';
|
|
|
14
15
|
* them here is to keep their size and not run past the field. A `Tag` slotted
|
|
15
16
|
* into `tags` already looks like one; anything else looks like whatever it is.
|
|
16
17
|
*
|
|
18
|
+
* **The suggestion panel is this element's own box, not a listbox's.** Combobox
|
|
19
|
+
* puts a `helix-listbox` in its panel because the options there are a selection
|
|
20
|
+
* it owns; these are the consumer's suggestions, so the panel is a plain
|
|
21
|
+
* `role="listbox"` region and the options pass their own `helix-select`
|
|
22
|
+
* straight through it. That is why this surface scrolls where Combobox's does
|
|
23
|
+
* not: there is no list inside to do it.
|
|
24
|
+
*
|
|
17
25
|
* Height comes from the region, like every other control: `data-density` on
|
|
18
26
|
* whatever holds it, not a `size` here.
|
|
19
27
|
*
|
|
@@ -24,7 +32,12 @@ import '../../icon/index.js';
|
|
|
24
32
|
* @documentation https://helix.fusion.dev/components/filter-input
|
|
25
33
|
*
|
|
26
34
|
* @cssproperty --filter-input-background-color - Fill behind the field.
|
|
35
|
+
* @cssproperty --filter-input-border-color - Color of the suggestion panel's edge.
|
|
36
|
+
* @cssproperty --filter-input-border-width - Width of that edge. Follows `--helix-border-floating`.
|
|
27
37
|
* @cssproperty --filter-input-control-size - Smallest the text keeps as tokens fill the line, before it wraps to its own.
|
|
38
|
+
* @cssproperty --filter-input-panel-size - Width of the suggestion panel. Follows the field by default.
|
|
39
|
+
* @cssproperty --filter-input-shadow - Lift under the panel. Follows `--helix-shadow-floating`: a
|
|
40
|
+
* floating surface sits over content nobody can predict, so it keeps a lift by default.
|
|
28
41
|
* @cssproperty --filter-input-size - Height of the field with nothing in it, which it grows from.
|
|
29
42
|
*/
|
|
30
43
|
export declare class HelixFilterInput extends HelixHeadlessFilterInput {
|
|
@@ -7,6 +7,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
import { customElement } from '@fusion.dev/helix-core';
|
|
8
8
|
import { HelixHeadlessFilterInput } from '@fusion.dev/helix-headless/filter-input';
|
|
9
9
|
import '../../icon/index.js';
|
|
10
|
+
import '../../option/index.js';
|
|
10
11
|
import { styles as glyphStyles } from '../../icon/glyph.css.js';
|
|
11
12
|
import { styles as fieldStyles } from '../../shared/field/field.css.js';
|
|
12
13
|
import { styles as fieldStackedStyles } from '../../shared/field/field-stacked.css.js';
|
|
@@ -3,6 +3,11 @@ export const styles = createSheet(`[part="tags"] {
|
|
|
3
3
|
display: contents;
|
|
4
4
|
}
|
|
5
5
|
|
|
6
|
+
:where(button)[part="rest"] {
|
|
7
|
+
all: unset;
|
|
8
|
+
box-sizing: border-box;
|
|
9
|
+
}
|
|
10
|
+
|
|
6
11
|
[part="rest"] {
|
|
7
12
|
align-self: center;
|
|
8
13
|
color: var(--helix-color-foreground-subtle);
|
|
@@ -11,4 +16,19 @@ font-family: var(--helix-font-sans);
|
|
|
11
16
|
font-size: var(--helix-text-xs);
|
|
12
17
|
font-weight: var(--helix-weight-medium);
|
|
13
18
|
white-space: nowrap;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
button[part="rest"] {
|
|
22
|
+
border-radius: var(--helix-radii-sm);
|
|
23
|
+
cursor: pointer;
|
|
24
|
+
transition: color var(--helix-duration-fast) var(--helix-easing-standard);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
button[part="rest"]:hover {
|
|
28
|
+
color: var(--helix-color-foreground);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
button[part="rest"]:focus-visible {
|
|
32
|
+
outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);
|
|
33
|
+
outline-offset: var(--helix-size-focus-offset);
|
|
14
34
|
}`);
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fusion.dev/helix",
|
|
3
3
|
"description": "Styled component tier. Extends the headless tier with token-driven presentation.",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.15.0",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Ross Sheppard <ross.sheppard@fusion.dev>",
|
|
7
7
|
"repository": {
|
|
@@ -46,14 +46,14 @@
|
|
|
46
46
|
},
|
|
47
47
|
"bugs": "https://github.com/project-fusion/fusion/issues",
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@fusion.dev/helix-core": "0.
|
|
50
|
-
"@fusion.dev/helix-headless": "0.
|
|
51
|
-
"@fusion.dev/helix-styles": "0.
|
|
49
|
+
"@fusion.dev/helix-core": "0.15.0",
|
|
50
|
+
"@fusion.dev/helix-headless": "0.15.0",
|
|
51
|
+
"@fusion.dev/helix-styles": "0.15.0"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
54
|
"@custom-elements-manifest/analyzer": "^0.11.0",
|
|
55
|
-
"@fusion.dev/helix-cem": "0.
|
|
56
|
-
"@fusion.dev/helix-testing": "0.
|
|
55
|
+
"@fusion.dev/helix-cem": "0.15.0",
|
|
56
|
+
"@fusion.dev/helix-testing": "0.15.0",
|
|
57
57
|
"@fusion.dev/scripts": "0.0.0-dev",
|
|
58
58
|
"@happy-dom/global-registrator": "^20.0.0",
|
|
59
59
|
"@lit-labs/ssr": "^3.3.0",
|
package/types/jsx.d.ts
CHANGED
|
@@ -4068,6 +4068,16 @@ the resolved state for stylesheets, which is what the mirror is for. */
|
|
|
4068
4068
|
"default-open"?: (HelixCombobox["defaultOpen"]) | undefined;
|
|
4069
4069
|
/** Initial open state for uncontrolled use, where nothing declared one. */
|
|
4070
4070
|
defaultOpen?: (HelixCombobox["defaultOpen"]) | undefined;
|
|
4071
|
+
/** What the control says once everything is showing. */
|
|
4072
|
+
"collapse-label"?: (HelixCombobox["collapseLabel"]) | undefined;
|
|
4073
|
+
/** What the control says once everything is showing. */
|
|
4074
|
+
collapseLabel?: (HelixCombobox["collapseLabel"]) | undefined;
|
|
4075
|
+
/** Whether the count is a control that shows the rest. */
|
|
4076
|
+
expandable?: (HelixCombobox["expandable"]) | undefined;
|
|
4077
|
+
/** What the collapsed count is called, since `+3` names nothing. */
|
|
4078
|
+
"expand-label"?: (HelixCombobox["expandLabel"]) | undefined;
|
|
4079
|
+
/** What the collapsed count is called, since `+3` names nothing. */
|
|
4080
|
+
expandLabel?: (HelixCombobox["expandLabel"]) | undefined;
|
|
4071
4081
|
/** How many tokens to show before the rest become a count. */
|
|
4072
4082
|
"max-tags"?: (HelixCombobox["maxTags"]) | undefined;
|
|
4073
4083
|
/** How many tokens to show before the rest become a count. */
|
|
@@ -4222,6 +4232,16 @@ the resolved state for stylesheets, which is what the mirror is for. */
|
|
|
4222
4232
|
"bool:default-open"?: (HelixCombobox["defaultOpen"]) | undefined;
|
|
4223
4233
|
/** Initial open state for uncontrolled use, where nothing declared one. */
|
|
4224
4234
|
"prop:defaultOpen"?: (HelixCombobox["defaultOpen"]) | undefined;
|
|
4235
|
+
/** What the control says once everything is showing. */
|
|
4236
|
+
"attr:collapse-label"?: (HelixCombobox["collapseLabel"]) | undefined;
|
|
4237
|
+
/** What the control says once everything is showing. */
|
|
4238
|
+
"prop:collapseLabel"?: (HelixCombobox["collapseLabel"]) | undefined;
|
|
4239
|
+
/** Whether the count is a control that shows the rest. */
|
|
4240
|
+
"prop:expandable"?: (HelixCombobox["expandable"]) | undefined;
|
|
4241
|
+
/** What the collapsed count is called, since `+3` names nothing. */
|
|
4242
|
+
"attr:expand-label"?: (HelixCombobox["expandLabel"]) | undefined;
|
|
4243
|
+
/** What the collapsed count is called, since `+3` names nothing. */
|
|
4244
|
+
"prop:expandLabel"?: (HelixCombobox["expandLabel"]) | undefined;
|
|
4225
4245
|
/** How many tokens to show before the rest become a count. */
|
|
4226
4246
|
"attr:max-tags"?: (HelixCombobox["maxTags"]) | undefined;
|
|
4227
4247
|
/** How many tokens to show before the rest become a count. */
|
|
@@ -6957,8 +6977,41 @@ export type HelixFilterInputElementEvent<E = Event> = TypedEvent<
|
|
|
6957
6977
|
/** `helix-before-change` event type */
|
|
6958
6978
|
export type HelixFilterInputHelixBeforeChangeElementEvent =
|
|
6959
6979
|
HelixFilterInputElementEvent<HelixBeforeChangeEvent>;
|
|
6980
|
+
/** `helix-before-close` event type */
|
|
6981
|
+
export type HelixFilterInputHelixBeforeCloseElementEvent =
|
|
6982
|
+
HelixFilterInputElementEvent<HelixBeforeCloseEvent>;
|
|
6983
|
+
/** `helix-before-open` event type */
|
|
6984
|
+
export type HelixFilterInputHelixBeforeOpenElementEvent =
|
|
6985
|
+
HelixFilterInputElementEvent<HelixBeforeOpenEvent>;
|
|
6960
6986
|
|
|
6961
6987
|
export type HelixFilterInputProps = {
|
|
6988
|
+
/** Whether the element is open.
|
|
6989
|
+
|
|
6990
|
+
One property, not two, so `dialog.open` answers the question anyone
|
|
6991
|
+
asking it meant. Writing always applies; `<helix-dialog open>` is the
|
|
6992
|
+
same statement in markup.
|
|
6993
|
+
|
|
6994
|
+
**Not reflected, and that is required rather than tidy.** Reflection
|
|
6995
|
+
writes the resolved state back as an attribute, so an element that opened
|
|
6996
|
+
itself would put `open` on its own host: cloned, serialized for
|
|
6997
|
+
hydration, or diffed by a framework, it comes back holding whatever the
|
|
6998
|
+
last reader did rather than what the author wrote. `:state(open)` carries
|
|
6999
|
+
the resolved state for stylesheets, which is what the mirror is for. */
|
|
7000
|
+
open?: (HelixFilterInput["open"]) | undefined;
|
|
7001
|
+
/** Initial open state for uncontrolled use, where nothing declared one. */
|
|
7002
|
+
"default-open"?: (HelixFilterInput["defaultOpen"]) | undefined;
|
|
7003
|
+
/** Initial open state for uncontrolled use, where nothing declared one. */
|
|
7004
|
+
defaultOpen?: (HelixFilterInput["defaultOpen"]) | undefined;
|
|
7005
|
+
/** What the control says once everything is showing. */
|
|
7006
|
+
"collapse-label"?: (HelixFilterInput["collapseLabel"]) | undefined;
|
|
7007
|
+
/** What the control says once everything is showing. */
|
|
7008
|
+
collapseLabel?: (HelixFilterInput["collapseLabel"]) | undefined;
|
|
7009
|
+
/** Whether the count is a control that shows the rest. */
|
|
7010
|
+
expandable?: (HelixFilterInput["expandable"]) | undefined;
|
|
7011
|
+
/** What the collapsed count is called, since `+3` names nothing. */
|
|
7012
|
+
"expand-label"?: (HelixFilterInput["expandLabel"]) | undefined;
|
|
7013
|
+
/** What the collapsed count is called, since `+3` names nothing. */
|
|
7014
|
+
expandLabel?: (HelixFilterInput["expandLabel"]) | undefined;
|
|
6962
7015
|
/** How many tokens to show before the rest become a count. */
|
|
6963
7016
|
"max-tags"?: (HelixFilterInput["maxTags"]) | undefined;
|
|
6964
7017
|
/** How many tokens to show before the rest become a count. */
|
|
@@ -7032,9 +7085,46 @@ Here rather than on each control. */
|
|
|
7032
7085
|
"onhelix-before-change"?: ((
|
|
7033
7086
|
e: HelixFilterInputHelixBeforeChangeElementEvent,
|
|
7034
7087
|
) => void) | undefined;
|
|
7088
|
+
/** Fired before the suggestions go, and cancelable. */
|
|
7089
|
+
"onhelix-before-close"?: ((
|
|
7090
|
+
e: HelixFilterInputHelixBeforeCloseElementEvent,
|
|
7091
|
+
) => void) | undefined;
|
|
7092
|
+
/** Fired before the suggestions show, and cancelable. */
|
|
7093
|
+
"onhelix-before-open"?: ((
|
|
7094
|
+
e: HelixFilterInputHelixBeforeOpenElementEvent,
|
|
7095
|
+
) => void) | undefined;
|
|
7096
|
+
/** Says the panel moved, carrying `newState` and `oldState`. */
|
|
7097
|
+
ontoggle?: ((e: HelixFilterInputElementEvent) => void) | undefined;
|
|
7035
7098
|
};
|
|
7036
7099
|
|
|
7037
7100
|
export type HelixFilterInputSolidJsProps = {
|
|
7101
|
+
/** Whether the element is open.
|
|
7102
|
+
|
|
7103
|
+
One property, not two, so `dialog.open` answers the question anyone
|
|
7104
|
+
asking it meant. Writing always applies; `<helix-dialog open>` is the
|
|
7105
|
+
same statement in markup.
|
|
7106
|
+
|
|
7107
|
+
**Not reflected, and that is required rather than tidy.** Reflection
|
|
7108
|
+
writes the resolved state back as an attribute, so an element that opened
|
|
7109
|
+
itself would put `open` on its own host: cloned, serialized for
|
|
7110
|
+
hydration, or diffed by a framework, it comes back holding whatever the
|
|
7111
|
+
last reader did rather than what the author wrote. `:state(open)` carries
|
|
7112
|
+
the resolved state for stylesheets, which is what the mirror is for. */
|
|
7113
|
+
"prop:open"?: (HelixFilterInput["open"]) | undefined;
|
|
7114
|
+
/** Initial open state for uncontrolled use, where nothing declared one. */
|
|
7115
|
+
"bool:default-open"?: (HelixFilterInput["defaultOpen"]) | undefined;
|
|
7116
|
+
/** Initial open state for uncontrolled use, where nothing declared one. */
|
|
7117
|
+
"prop:defaultOpen"?: (HelixFilterInput["defaultOpen"]) | undefined;
|
|
7118
|
+
/** What the control says once everything is showing. */
|
|
7119
|
+
"attr:collapse-label"?: (HelixFilterInput["collapseLabel"]) | undefined;
|
|
7120
|
+
/** What the control says once everything is showing. */
|
|
7121
|
+
"prop:collapseLabel"?: (HelixFilterInput["collapseLabel"]) | undefined;
|
|
7122
|
+
/** Whether the count is a control that shows the rest. */
|
|
7123
|
+
"prop:expandable"?: (HelixFilterInput["expandable"]) | undefined;
|
|
7124
|
+
/** What the collapsed count is called, since `+3` names nothing. */
|
|
7125
|
+
"attr:expand-label"?: (HelixFilterInput["expandLabel"]) | undefined;
|
|
7126
|
+
/** What the collapsed count is called, since `+3` names nothing. */
|
|
7127
|
+
"prop:expandLabel"?: (HelixFilterInput["expandLabel"]) | undefined;
|
|
7038
7128
|
/** How many tokens to show before the rest become a count. */
|
|
7039
7129
|
"attr:max-tags"?: (HelixFilterInput["maxTags"]) | undefined;
|
|
7040
7130
|
/** How many tokens to show before the rest become a count. */
|
|
@@ -7107,6 +7197,16 @@ Here rather than on each control. */
|
|
|
7107
7197
|
"on:helix-before-change"?: ((
|
|
7108
7198
|
e: HelixFilterInputHelixBeforeChangeElementEvent,
|
|
7109
7199
|
) => void) | undefined;
|
|
7200
|
+
/** Fired before the suggestions go, and cancelable. */
|
|
7201
|
+
"on:helix-before-close"?: ((
|
|
7202
|
+
e: HelixFilterInputHelixBeforeCloseElementEvent,
|
|
7203
|
+
) => void) | undefined;
|
|
7204
|
+
/** Fired before the suggestions show, and cancelable. */
|
|
7205
|
+
"on:helix-before-open"?: ((
|
|
7206
|
+
e: HelixFilterInputHelixBeforeOpenElementEvent,
|
|
7207
|
+
) => void) | undefined;
|
|
7208
|
+
/** Says the panel moved, carrying `newState` and `oldState`. */
|
|
7209
|
+
"on:toggle"?: ((e: HelixFilterInputElementEvent) => void) | undefined;
|
|
7110
7210
|
|
|
7111
7211
|
/** Set the innerHTML of the element */
|
|
7112
7212
|
innerHTML?: (string) | undefined;
|
|
@@ -21424,6 +21524,9 @@ export type CustomElements = {
|
|
|
21424
21524
|
* last reader did rather than what the author wrote. `:state(open)` carries
|
|
21425
21525
|
* the resolved state for stylesheets, which is what the mirror is for.
|
|
21426
21526
|
* - `default-open`/`defaultOpen`: Initial open state for uncontrolled use, where nothing declared one.
|
|
21527
|
+
* - `collapse-label`/`collapseLabel`: What the control says once everything is showing.
|
|
21528
|
+
* - `expandable`: Whether the count is a control that shows the rest.
|
|
21529
|
+
* - `expand-label`/`expandLabel`: What the collapsed count is called, since `+3` names nothing.
|
|
21427
21530
|
* - `max-tags`/`maxTags`: How many tokens to show before the rest become a count.
|
|
21428
21531
|
* - `default-value`/`defaultValue`: The value the markup declared, which is where a reset returns to.
|
|
21429
21532
|
* - `value`: What the control holds now, and what its form submits.
|
|
@@ -21642,7 +21745,7 @@ export type CustomElements = {
|
|
|
21642
21745
|
* - `listbox-loading`: Shown while the options are still on their way.
|
|
21643
21746
|
* - `listbox-search`: The region holding the field that narrows the list.
|
|
21644
21747
|
* - `listbox-search-field`: The field itself.
|
|
21645
|
-
* - `rest`: The count of choices held beyond `max-tags`.
|
|
21748
|
+
* - `rest`: The count of choices held beyond `max-tags`. A `<button>` with `expandable`, a `<span>` without it.
|
|
21646
21749
|
* - `surface`: The floating panel.
|
|
21647
21750
|
* - `tag`: One chosen option.
|
|
21648
21751
|
* - `tag-dismiss`: The remove button, when `dismissible`.
|
|
@@ -23713,6 +23816,13 @@ export type CustomElements = {
|
|
|
23713
23816
|
* them here is to keep their size and not run past the field. A `Tag` slotted
|
|
23714
23817
|
* into `tags` already looks like one; anything else looks like whatever it is.
|
|
23715
23818
|
*
|
|
23819
|
+
* **The suggestion panel is this element's own box, not a listbox's.** Combobox
|
|
23820
|
+
* puts a `helix-listbox` in its panel because the options there are a selection
|
|
23821
|
+
* it owns; these are the consumer's suggestions, so the panel is a plain
|
|
23822
|
+
* `role="listbox"` region and the options pass their own `helix-select`
|
|
23823
|
+
* straight through it. That is why this surface scrolls where Combobox's does
|
|
23824
|
+
* not: there is no list inside to do it.
|
|
23825
|
+
*
|
|
23716
23826
|
* Height comes from the region, like every other control: `data-density` on
|
|
23717
23827
|
* whatever holds it, not a `size` here.
|
|
23718
23828
|
*
|
|
@@ -23720,6 +23830,22 @@ export type CustomElements = {
|
|
|
23720
23830
|
*
|
|
23721
23831
|
* Component attributes and properties that can be applied to the element or by using JavaScript.
|
|
23722
23832
|
*
|
|
23833
|
+
* - `open`: Whether the element is open.
|
|
23834
|
+
*
|
|
23835
|
+
* One property, not two, so `dialog.open` answers the question anyone
|
|
23836
|
+
* asking it meant. Writing always applies; `<helix-dialog open>` is the
|
|
23837
|
+
* same statement in markup.
|
|
23838
|
+
*
|
|
23839
|
+
* **Not reflected, and that is required rather than tidy.** Reflection
|
|
23840
|
+
* writes the resolved state back as an attribute, so an element that opened
|
|
23841
|
+
* itself would put `open` on its own host: cloned, serialized for
|
|
23842
|
+
* hydration, or diffed by a framework, it comes back holding whatever the
|
|
23843
|
+
* last reader did rather than what the author wrote. `:state(open)` carries
|
|
23844
|
+
* the resolved state for stylesheets, which is what the mirror is for.
|
|
23845
|
+
* - `default-open`/`defaultOpen`: Initial open state for uncontrolled use, where nothing declared one.
|
|
23846
|
+
* - `collapse-label`/`collapseLabel`: What the control says once everything is showing.
|
|
23847
|
+
* - `expandable`: Whether the count is a control that shows the rest.
|
|
23848
|
+
* - `expand-label`/`expandLabel`: What the collapsed count is called, since `+3` names nothing.
|
|
23723
23849
|
* - `max-tags`/`maxTags`: How many tokens to show before the rest become a count.
|
|
23724
23850
|
* - `default-value`/`defaultValue`: The value the markup declared, which is where a reset returns to.
|
|
23725
23851
|
* - `value`: What the control holds now, and what its form submits.
|
|
@@ -23766,6 +23892,20 @@ export type CustomElements = {
|
|
|
23766
23892
|
* imperatively later, and nothing is hydrating by then.
|
|
23767
23893
|
*
|
|
23768
23894
|
* Here rather than on each control.
|
|
23895
|
+
* - `selectionDirection`: The caret and the selection, under the platform's own names.
|
|
23896
|
+
*
|
|
23897
|
+
* **Published for the reason `Input` publishes them, and this element needs
|
|
23898
|
+
* them more.** The `<input>` is inside this shadow root, so a consumer has no
|
|
23899
|
+
* way to ask where the caret is: `querySelector` does not cross the boundary.
|
|
23900
|
+
* A grammar that completes what is being typed cannot work without it, because
|
|
23901
|
+
* "what is being typed" is the term the caret is in, and after writing a
|
|
23902
|
+
* completion back the caret has to be put after it or the next parse reads the
|
|
23903
|
+
* wrong term.
|
|
23904
|
+
*
|
|
23905
|
+
* Zero before there is a control, which is where an empty field's caret would
|
|
23906
|
+
* be anyway. (property only) (readonly)
|
|
23907
|
+
* - `selectionEnd`: Where the selection ends, which is the caret when nothing is selected. (property only) (readonly)
|
|
23908
|
+
* - `selectionStart`: Where the selection starts, which is the caret when nothing is selected. (property only) (readonly)
|
|
23769
23909
|
* - `form`: The form this control belongs to, if any. (property only) (readonly)
|
|
23770
23910
|
* - `labels`: Labels associated with this control. (property only) (readonly)
|
|
23771
23911
|
* - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
|
|
@@ -23794,6 +23934,9 @@ export type CustomElements = {
|
|
|
23794
23934
|
* - `input`: Announced once the text has moved.
|
|
23795
23935
|
* - `change`: Relayed from the input once the reader has finished.
|
|
23796
23936
|
* - `helix-before-change`: Fired as the text changes, and cancelable.
|
|
23937
|
+
* - `helix-before-close`: Fired before the suggestions go, and cancelable.
|
|
23938
|
+
* - `helix-before-open`: Fired before the suggestions show, and cancelable.
|
|
23939
|
+
* - `toggle`: Says the panel moved, carrying `newState` and `oldState`.
|
|
23797
23940
|
*
|
|
23798
23941
|
* ## Slots
|
|
23799
23942
|
*
|
|
@@ -23801,12 +23944,21 @@ export type CustomElements = {
|
|
|
23801
23944
|
*
|
|
23802
23945
|
* - `end`: After the text, for a count or a control.
|
|
23803
23946
|
* - `start`: Before the text, for a search icon.
|
|
23947
|
+
* - `suggestions`: What could be typed next, as `Option`s, and `Option.Group`s of them.
|
|
23804
23948
|
* - `tags`: What is already narrowing the results, as `Tag`s.
|
|
23805
23949
|
*
|
|
23806
23950
|
* ## Methods
|
|
23807
23951
|
*
|
|
23808
23952
|
* Methods that can be called to access component functionality.
|
|
23809
23953
|
*
|
|
23954
|
+
* - `requestOpen(next: boolean) => boolean`: Requests an open-state change, and reports whether it was applied.
|
|
23955
|
+
*
|
|
23956
|
+
* Announces before it acts, so `preventDefault()` on the `helix-before-open` or
|
|
23957
|
+
* `helix-before-close` is a refusal and nothing moves. Nobody refusing means the
|
|
23958
|
+
* element opens or closes itself, whether or not a consumer declared
|
|
23959
|
+
* `open`: a declared property is a seed and a correction, and a consumer
|
|
23960
|
+
* who wants the decision for themselves refuses it and assigns their own.
|
|
23961
|
+
* - `toggleOpen() => boolean`: Requests the opposite of the current state.
|
|
23810
23962
|
* - `requestValue(next: string) => boolean`: Requests a new value, and reports whether the request stood.
|
|
23811
23963
|
*
|
|
23812
23964
|
* Announces before it acts, so `preventDefault()` on the `helix-before-change` is
|
|
@@ -23824,6 +23976,7 @@ export type CustomElements = {
|
|
|
23824
23976
|
* Falling back to `defaultValue` rather than to empty, because a restore
|
|
23825
23977
|
* with no state is a form the browser has nothing recorded for, which is
|
|
23826
23978
|
* the same situation as a fresh one.
|
|
23979
|
+
* - `setSelectionRange(start: number, end: number, direction?: 'backward' | 'forward' | 'none') => void`: Moves the caret, or selects a run of the text.
|
|
23827
23980
|
* - `focus(options?: FocusOptions) => void`: Puts the caret in the field, the way a label pointing at one would.
|
|
23828
23981
|
* - `formDisabledCallback(disabled: boolean) => void`: The platform's notice that an ancestor fieldset changed.
|
|
23829
23982
|
*
|
|
@@ -23864,7 +24017,11 @@ export type CustomElements = {
|
|
|
23864
24017
|
* CSS variables available for styling the component.
|
|
23865
24018
|
*
|
|
23866
24019
|
* - `--filter-input-background-color`: Fill behind the field. (default: `undefined`)
|
|
24020
|
+
* - `--filter-input-border-color`: Color of the suggestion panel's edge. (default: `undefined`)
|
|
24021
|
+
* - `--filter-input-border-width`: Width of that edge. Follows `--helix-border-floating`. (default: `undefined`)
|
|
23867
24022
|
* - `--filter-input-control-size`: Smallest the text keeps as tokens fill the line, before it wraps to its own. (default: `undefined`)
|
|
24023
|
+
* - `--filter-input-panel-size`: Width of the suggestion panel. Follows the field by default. (default: `undefined`)
|
|
24024
|
+
* - `--filter-input-shadow`: Lift under the panel. Follows `--helix-shadow-floating`: a floating surface sits over content nobody can predict, so it keeps a lift by default. (default: `undefined`)
|
|
23868
24025
|
* - `--filter-input-size`: Height of the field with nothing in it, which it grows from. (default: `undefined`)
|
|
23869
24026
|
*
|
|
23870
24027
|
* ## CSS Parts
|
|
@@ -23877,7 +24034,8 @@ export type CustomElements = {
|
|
|
23877
24034
|
* - `field`: The box holding everything.
|
|
23878
24035
|
* - `hint`: Help under the field, while nothing is wrong.
|
|
23879
24036
|
* - `label`: The question, over the field.
|
|
23880
|
-
* - `rest`: How many tokens did not fit.
|
|
24037
|
+
* - `rest`: How many tokens did not fit. A `<button>` with `expandable`, a `<span>` without it.
|
|
24038
|
+
* - `surface`: The floating panel the suggestions sit in.
|
|
23881
24039
|
* - `tags`: The row the tokens sit in.
|
|
23882
24040
|
*/
|
|
23883
24041
|
"helix-filter-input": Partial<
|
|
@@ -37377,6 +37535,9 @@ export type CustomElementsSolidJs = {
|
|
|
37377
37535
|
* last reader did rather than what the author wrote. `:state(open)` carries
|
|
37378
37536
|
* the resolved state for stylesheets, which is what the mirror is for.
|
|
37379
37537
|
* - `default-open`/`defaultOpen`: Initial open state for uncontrolled use, where nothing declared one.
|
|
37538
|
+
* - `collapse-label`/`collapseLabel`: What the control says once everything is showing.
|
|
37539
|
+
* - `expandable`: Whether the count is a control that shows the rest.
|
|
37540
|
+
* - `expand-label`/`expandLabel`: What the collapsed count is called, since `+3` names nothing.
|
|
37380
37541
|
* - `max-tags`/`maxTags`: How many tokens to show before the rest become a count.
|
|
37381
37542
|
* - `default-value`/`defaultValue`: The value the markup declared, which is where a reset returns to.
|
|
37382
37543
|
* - `value`: What the control holds now, and what its form submits.
|
|
@@ -37595,7 +37756,7 @@ export type CustomElementsSolidJs = {
|
|
|
37595
37756
|
* - `listbox-loading`: Shown while the options are still on their way.
|
|
37596
37757
|
* - `listbox-search`: The region holding the field that narrows the list.
|
|
37597
37758
|
* - `listbox-search-field`: The field itself.
|
|
37598
|
-
* - `rest`: The count of choices held beyond `max-tags`.
|
|
37759
|
+
* - `rest`: The count of choices held beyond `max-tags`. A `<button>` with `expandable`, a `<span>` without it.
|
|
37599
37760
|
* - `surface`: The floating panel.
|
|
37600
37761
|
* - `tag`: One chosen option.
|
|
37601
37762
|
* - `tag-dismiss`: The remove button, when `dismissible`.
|
|
@@ -39710,6 +39871,13 @@ export type CustomElementsSolidJs = {
|
|
|
39710
39871
|
* them here is to keep their size and not run past the field. A `Tag` slotted
|
|
39711
39872
|
* into `tags` already looks like one; anything else looks like whatever it is.
|
|
39712
39873
|
*
|
|
39874
|
+
* **The suggestion panel is this element's own box, not a listbox's.** Combobox
|
|
39875
|
+
* puts a `helix-listbox` in its panel because the options there are a selection
|
|
39876
|
+
* it owns; these are the consumer's suggestions, so the panel is a plain
|
|
39877
|
+
* `role="listbox"` region and the options pass their own `helix-select`
|
|
39878
|
+
* straight through it. That is why this surface scrolls where Combobox's does
|
|
39879
|
+
* not: there is no list inside to do it.
|
|
39880
|
+
*
|
|
39713
39881
|
* Height comes from the region, like every other control: `data-density` on
|
|
39714
39882
|
* whatever holds it, not a `size` here.
|
|
39715
39883
|
*
|
|
@@ -39717,6 +39885,22 @@ export type CustomElementsSolidJs = {
|
|
|
39717
39885
|
*
|
|
39718
39886
|
* Component attributes and properties that can be applied to the element or by using JavaScript.
|
|
39719
39887
|
*
|
|
39888
|
+
* - `open`: Whether the element is open.
|
|
39889
|
+
*
|
|
39890
|
+
* One property, not two, so `dialog.open` answers the question anyone
|
|
39891
|
+
* asking it meant. Writing always applies; `<helix-dialog open>` is the
|
|
39892
|
+
* same statement in markup.
|
|
39893
|
+
*
|
|
39894
|
+
* **Not reflected, and that is required rather than tidy.** Reflection
|
|
39895
|
+
* writes the resolved state back as an attribute, so an element that opened
|
|
39896
|
+
* itself would put `open` on its own host: cloned, serialized for
|
|
39897
|
+
* hydration, or diffed by a framework, it comes back holding whatever the
|
|
39898
|
+
* last reader did rather than what the author wrote. `:state(open)` carries
|
|
39899
|
+
* the resolved state for stylesheets, which is what the mirror is for.
|
|
39900
|
+
* - `default-open`/`defaultOpen`: Initial open state for uncontrolled use, where nothing declared one.
|
|
39901
|
+
* - `collapse-label`/`collapseLabel`: What the control says once everything is showing.
|
|
39902
|
+
* - `expandable`: Whether the count is a control that shows the rest.
|
|
39903
|
+
* - `expand-label`/`expandLabel`: What the collapsed count is called, since `+3` names nothing.
|
|
39720
39904
|
* - `max-tags`/`maxTags`: How many tokens to show before the rest become a count.
|
|
39721
39905
|
* - `default-value`/`defaultValue`: The value the markup declared, which is where a reset returns to.
|
|
39722
39906
|
* - `value`: What the control holds now, and what its form submits.
|
|
@@ -39763,6 +39947,20 @@ export type CustomElementsSolidJs = {
|
|
|
39763
39947
|
* imperatively later, and nothing is hydrating by then.
|
|
39764
39948
|
*
|
|
39765
39949
|
* Here rather than on each control.
|
|
39950
|
+
* - `selectionDirection`: The caret and the selection, under the platform's own names.
|
|
39951
|
+
*
|
|
39952
|
+
* **Published for the reason `Input` publishes them, and this element needs
|
|
39953
|
+
* them more.** The `<input>` is inside this shadow root, so a consumer has no
|
|
39954
|
+
* way to ask where the caret is: `querySelector` does not cross the boundary.
|
|
39955
|
+
* A grammar that completes what is being typed cannot work without it, because
|
|
39956
|
+
* "what is being typed" is the term the caret is in, and after writing a
|
|
39957
|
+
* completion back the caret has to be put after it or the next parse reads the
|
|
39958
|
+
* wrong term.
|
|
39959
|
+
*
|
|
39960
|
+
* Zero before there is a control, which is where an empty field's caret would
|
|
39961
|
+
* be anyway. (property only) (readonly)
|
|
39962
|
+
* - `selectionEnd`: Where the selection ends, which is the caret when nothing is selected. (property only) (readonly)
|
|
39963
|
+
* - `selectionStart`: Where the selection starts, which is the caret when nothing is selected. (property only) (readonly)
|
|
39766
39964
|
* - `form`: The form this control belongs to, if any. (property only) (readonly)
|
|
39767
39965
|
* - `labels`: Labels associated with this control. (property only) (readonly)
|
|
39768
39966
|
* - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
|
|
@@ -39791,6 +39989,9 @@ export type CustomElementsSolidJs = {
|
|
|
39791
39989
|
* - `input`: Announced once the text has moved.
|
|
39792
39990
|
* - `change`: Relayed from the input once the reader has finished.
|
|
39793
39991
|
* - `helix-before-change`: Fired as the text changes, and cancelable.
|
|
39992
|
+
* - `helix-before-close`: Fired before the suggestions go, and cancelable.
|
|
39993
|
+
* - `helix-before-open`: Fired before the suggestions show, and cancelable.
|
|
39994
|
+
* - `toggle`: Says the panel moved, carrying `newState` and `oldState`.
|
|
39794
39995
|
*
|
|
39795
39996
|
* ## Slots
|
|
39796
39997
|
*
|
|
@@ -39798,12 +39999,21 @@ export type CustomElementsSolidJs = {
|
|
|
39798
39999
|
*
|
|
39799
40000
|
* - `end`: After the text, for a count or a control.
|
|
39800
40001
|
* - `start`: Before the text, for a search icon.
|
|
40002
|
+
* - `suggestions`: What could be typed next, as `Option`s, and `Option.Group`s of them.
|
|
39801
40003
|
* - `tags`: What is already narrowing the results, as `Tag`s.
|
|
39802
40004
|
*
|
|
39803
40005
|
* ## Methods
|
|
39804
40006
|
*
|
|
39805
40007
|
* Methods that can be called to access component functionality.
|
|
39806
40008
|
*
|
|
40009
|
+
* - `requestOpen(next: boolean) => boolean`: Requests an open-state change, and reports whether it was applied.
|
|
40010
|
+
*
|
|
40011
|
+
* Announces before it acts, so `preventDefault()` on the `helix-before-open` or
|
|
40012
|
+
* `helix-before-close` is a refusal and nothing moves. Nobody refusing means the
|
|
40013
|
+
* element opens or closes itself, whether or not a consumer declared
|
|
40014
|
+
* `open`: a declared property is a seed and a correction, and a consumer
|
|
40015
|
+
* who wants the decision for themselves refuses it and assigns their own.
|
|
40016
|
+
* - `toggleOpen() => boolean`: Requests the opposite of the current state.
|
|
39807
40017
|
* - `requestValue(next: string) => boolean`: Requests a new value, and reports whether the request stood.
|
|
39808
40018
|
*
|
|
39809
40019
|
* Announces before it acts, so `preventDefault()` on the `helix-before-change` is
|
|
@@ -39821,6 +40031,7 @@ export type CustomElementsSolidJs = {
|
|
|
39821
40031
|
* Falling back to `defaultValue` rather than to empty, because a restore
|
|
39822
40032
|
* with no state is a form the browser has nothing recorded for, which is
|
|
39823
40033
|
* the same situation as a fresh one.
|
|
40034
|
+
* - `setSelectionRange(start: number, end: number, direction?: 'backward' | 'forward' | 'none') => void`: Moves the caret, or selects a run of the text.
|
|
39824
40035
|
* - `focus(options?: FocusOptions) => void`: Puts the caret in the field, the way a label pointing at one would.
|
|
39825
40036
|
* - `formDisabledCallback(disabled: boolean) => void`: The platform's notice that an ancestor fieldset changed.
|
|
39826
40037
|
*
|
|
@@ -39861,7 +40072,11 @@ export type CustomElementsSolidJs = {
|
|
|
39861
40072
|
* CSS variables available for styling the component.
|
|
39862
40073
|
*
|
|
39863
40074
|
* - `--filter-input-background-color`: Fill behind the field. (default: `undefined`)
|
|
40075
|
+
* - `--filter-input-border-color`: Color of the suggestion panel's edge. (default: `undefined`)
|
|
40076
|
+
* - `--filter-input-border-width`: Width of that edge. Follows `--helix-border-floating`. (default: `undefined`)
|
|
39864
40077
|
* - `--filter-input-control-size`: Smallest the text keeps as tokens fill the line, before it wraps to its own. (default: `undefined`)
|
|
40078
|
+
* - `--filter-input-panel-size`: Width of the suggestion panel. Follows the field by default. (default: `undefined`)
|
|
40079
|
+
* - `--filter-input-shadow`: Lift under the panel. Follows `--helix-shadow-floating`: a floating surface sits over content nobody can predict, so it keeps a lift by default. (default: `undefined`)
|
|
39865
40080
|
* - `--filter-input-size`: Height of the field with nothing in it, which it grows from. (default: `undefined`)
|
|
39866
40081
|
*
|
|
39867
40082
|
* ## CSS Parts
|
|
@@ -39874,7 +40089,8 @@ export type CustomElementsSolidJs = {
|
|
|
39874
40089
|
* - `field`: The box holding everything.
|
|
39875
40090
|
* - `hint`: Help under the field, while nothing is wrong.
|
|
39876
40091
|
* - `label`: The question, over the field.
|
|
39877
|
-
* - `rest`: How many tokens did not fit.
|
|
40092
|
+
* - `rest`: How many tokens did not fit. A `<button>` with `expandable`, a `<span>` without it.
|
|
40093
|
+
* - `surface`: The floating panel the suggestions sit in.
|
|
39878
40094
|
* - `tags`: The row the tokens sit in.
|
|
39879
40095
|
*/
|
|
39880
40096
|
"helix-filter-input": Partial<
|
|
@@ -50657,8 +50873,16 @@ export type CustomCssProperties = {
|
|
|
50657
50873
|
"--file-input-padding"?: (string) | undefined;
|
|
50658
50874
|
/** Fill behind the field. */
|
|
50659
50875
|
"--filter-input-background-color"?: (string) | undefined;
|
|
50876
|
+
/** Color of the suggestion panel's edge. */
|
|
50877
|
+
"--filter-input-border-color"?: (string) | undefined;
|
|
50878
|
+
/** Width of that edge. Follows `--helix-border-floating`. */
|
|
50879
|
+
"--filter-input-border-width"?: (string) | undefined;
|
|
50660
50880
|
/** Smallest the text keeps as tokens fill the line, before it wraps to its own. */
|
|
50661
50881
|
"--filter-input-control-size"?: (string) | undefined;
|
|
50882
|
+
/** Width of the suggestion panel. Follows the field by default. */
|
|
50883
|
+
"--filter-input-panel-size"?: (string) | undefined;
|
|
50884
|
+
/** Lift under the panel. Follows `--helix-shadow-floating`: a floating surface sits over content nobody can predict, so it keeps a lift by default. */
|
|
50885
|
+
"--filter-input-shadow"?: (string) | undefined;
|
|
50662
50886
|
/** Height of the field with nothing in it, which it grows from. */
|
|
50663
50887
|
"--filter-input-size"?: (string) | undefined;
|
|
50664
50888
|
/** An explicit track list, which wins over `min` and `columns`. For a layout of unequal tracks, which neither attribute can say. */
|